diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..dbf0821 --- /dev/null +++ b/.dockerignore @@ -0,0 +1 @@ +node_modules/* \ No newline at end of file diff --git a/.github/workflows/build-on-push.yml b/.github/workflows/build-on-push.yml new file mode 100644 index 0000000..0454142 --- /dev/null +++ b/.github/workflows/build-on-push.yml @@ -0,0 +1,20 @@ +name: Build and test application on push to remote + +on: + push: + branches: + - main + pull_request: + branches: + - main + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v1 + - uses: actions/setup-node@v1 + with: + node-version: 22 + - run: make build + - run: make test diff --git a/.gitignore b/.gitignore index 6d910a9..caff4f0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ .idea node_modules -build/ \ No newline at end of file +build/ +docker-compose.override.yml diff --git a/Makefile b/Makefile index 6324613..0a280da 100644 --- a/Makefile +++ b/Makefile @@ -1,11 +1,11 @@ SHELL = /bin/bash .PHONY: build -build: docker-compose.override.yml - docker-compose run --rm web npm run build +build: node_modules + npm run build .PHONY: test -test: docker-compose.override.yml +test: docker-compose.override.yml node_modules docker-compose run --rm test npm run test docker-compose.override.yml: @@ -16,4 +16,7 @@ docker-compose.override.yml: @echo " user: `id -u`:`id -g`" >> docker-compose.override.yml dist/js/app.js: -dist/js/app.js: build \ No newline at end of file +dist/js/app.js: build + +node_modules: + npm install diff --git a/TODO b/TODO index 62096e1..3c081be 100644 --- a/TODO +++ b/TODO @@ -9,13 +9,13 @@ - [X] Add `Code` renderer to syntax highlight quines or other code output. - [X] Responsive view - [X] Fix the mime selector as that has some undesirable behaviour when editing at the moment. +- [X] Add Ruby (https://runrb.io/) - [ ] Check a bunch of existing answers and fix what's broken - [ ] Verify `LICENSE`s before adding one here - [ ] Clean up the used `webperl` implementation (to make updating easier) - [ ] Add different versions of Perl (older versions supporting `?..?` in `s///`, literal `$^V`, etc) - [ ] Add PHP (https://github.com/oraoto/pib) -- [ ] Add Ruby (https://runrb.io/) -- [ ] Add Python (https://pyodide.org/) +- [-] Add Python (https://pyodide.org/) - [ ] Add C#? (https://blazor.net/) - [ ] Maybe add bash via jslinux somehow? (https://bellard.org/jslinux/) - [ ] Accessibility (aria-label of all fields etc) diff --git a/coi-serviceworker.js b/coi-serviceworker.js new file mode 100644 index 0000000..96ff44a --- /dev/null +++ b/coi-serviceworker.js @@ -0,0 +1,7 @@ +var i=!1;typeof window>"u"?(self.addEventListener("install",()=>self.skipWaiting()),self.addEventListener("activate",e=>e.waitUntil(self.clients.claim())),self.addEventListener("message",e=>{if(e.data)e.data.type==="deregister"?self.registration.unregister().then(()=>self.clients.matchAll()).then(r=>{r.forEach(t=>t.navigate(t.url))}):e.data.type==="coepCredentialless"&&(i=e.data.value);else return}),self.addEventListener("fetch",function(e){let r=e.request;if(r.cache==="only-if-cached"&&r.mode!=="same-origin")return;let t=i&&r.mode==="no-cors"?new Request(r,{credentials:"omit"}):r;e.respondWith(fetch(t).then(s=>{if(s.status===0)return s;let o=new Headers(s.headers);return o.set("Cross-Origin-Embedder-Policy",i?"credentialless":"require-corp"),i||o.set("Cross-Origin-Resource-Policy","cross-origin"),o.set("Cross-Origin-Opener-Policy","same-origin"),new Response(s.body,{status:s.status,statusText:s.statusText,headers:o})}).catch(s=>console.error(s)))})):(()=>{let e={shouldRegister:()=>!0,shouldDeregister:()=>!1,coepCredentialless:()=>!(window.chrome||window.netscape),doReload:()=>window.location.reload(),quiet:!1,...window.coi},r=navigator;if(r.serviceWorker&&r.serviceWorker.controller&&(r.serviceWorker.controller.postMessage({type:"coepCredentialless",value:e.coepCredentialless()}),e.shouldDeregister()&&r.serviceWorker.controller.postMessage({type:"deregister"})),!(window.crossOriginIsolated!==!1||!e.shouldRegister())){if(!window.isSecureContext){!e.quiet&&console.log("COOP/COEP Service Worker not registered, a secure context is required.");return}r.serviceWorker&&r.serviceWorker.register(window.document.currentScript.src).then(t=>{!e.quiet&&console.log("COOP/COEP Service Worker registered",t.scope),t.addEventListener("updatefound",()=>{!e.quiet&&console.log("Reloading page to make use of updated COOP/COEP Service Worker."),e.doReload()}),t.active&&!r.serviceWorker.controller&&(!e.quiet&&console.log("Reloading page to make use of COOP/COEP Service Worker."),e.doReload())},t=>{!e.quiet&&console.error("COOP/COEP Service Worker failed to register:",t)})}})(); +/*! Bundled license information: + +coi-serviceworker/coi-serviceworker.js: + (*! coi-serviceworker v0.1.7 - Guido Zuidhof and contributors, licensed under MIT *) +*/ +//# sourceMappingURL=coi-serviceworker.js.map diff --git a/coi-serviceworker.js.map b/coi-serviceworker.js.map new file mode 100644 index 0000000..7b901e1 --- /dev/null +++ b/coi-serviceworker.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["node_modules/coi-serviceworker/coi-serviceworker.js"], + "sourcesContent": ["/*! coi-serviceworker v0.1.7 - Guido Zuidhof and contributors, licensed under MIT */\nlet coepCredentialless = false;\nif (typeof window === 'undefined') {\n self.addEventListener(\"install\", () => self.skipWaiting());\n self.addEventListener(\"activate\", (event) => event.waitUntil(self.clients.claim()));\n\n self.addEventListener(\"message\", (ev) => {\n if (!ev.data) {\n return;\n } else if (ev.data.type === \"deregister\") {\n self.registration\n .unregister()\n .then(() => {\n return self.clients.matchAll();\n })\n .then(clients => {\n clients.forEach((client) => client.navigate(client.url));\n });\n } else if (ev.data.type === \"coepCredentialless\") {\n coepCredentialless = ev.data.value;\n }\n });\n\n self.addEventListener(\"fetch\", function (event) {\n const r = event.request;\n if (r.cache === \"only-if-cached\" && r.mode !== \"same-origin\") {\n return;\n }\n\n const request = (coepCredentialless && r.mode === \"no-cors\")\n ? new Request(r, {\n credentials: \"omit\",\n })\n : r;\n event.respondWith(\n fetch(request)\n .then((response) => {\n if (response.status === 0) {\n return response;\n }\n\n const newHeaders = new Headers(response.headers);\n newHeaders.set(\"Cross-Origin-Embedder-Policy\",\n coepCredentialless ? \"credentialless\" : \"require-corp\"\n );\n if (!coepCredentialless) {\n newHeaders.set(\"Cross-Origin-Resource-Policy\", \"cross-origin\");\n }\n newHeaders.set(\"Cross-Origin-Opener-Policy\", \"same-origin\");\n\n return new Response(response.body, {\n status: response.status,\n statusText: response.statusText,\n headers: newHeaders,\n });\n })\n .catch((e) => console.error(e))\n );\n });\n\n} else {\n (() => {\n // You can customize the behavior of this script through a global `coi` variable.\n const coi = {\n shouldRegister: () => true,\n shouldDeregister: () => false,\n coepCredentialless: () => !(window.chrome || window.netscape),\n doReload: () => window.location.reload(),\n quiet: false,\n ...window.coi\n };\n\n const n = navigator;\n\n if (n.serviceWorker && n.serviceWorker.controller) {\n n.serviceWorker.controller.postMessage({\n type: \"coepCredentialless\",\n value: coi.coepCredentialless(),\n });\n\n if (coi.shouldDeregister()) {\n n.serviceWorker.controller.postMessage({ type: \"deregister\" });\n }\n }\n\n // If we're already coi: do nothing. Perhaps it's due to this script doing its job, or COOP/COEP are\n // already set from the origin server. Also if the browser has no notion of crossOriginIsolated, just give up here.\n if (window.crossOriginIsolated !== false || !coi.shouldRegister()) return;\n\n if (!window.isSecureContext) {\n !coi.quiet && console.log(\"COOP/COEP Service Worker not registered, a secure context is required.\");\n return;\n }\n\n // In some environments (e.g. Chrome incognito mode) this won't be available\n if (n.serviceWorker) {\n n.serviceWorker.register(window.document.currentScript.src).then(\n (registration) => {\n !coi.quiet && console.log(\"COOP/COEP Service Worker registered\", registration.scope);\n\n registration.addEventListener(\"updatefound\", () => {\n !coi.quiet && console.log(\"Reloading page to make use of updated COOP/COEP Service Worker.\");\n coi.doReload();\n });\n\n // If the registration is active, but it's not controlling the page\n if (registration.active && !n.serviceWorker.controller) {\n !coi.quiet && console.log(\"Reloading page to make use of COOP/COEP Service Worker.\");\n coi.doReload();\n }\n },\n (err) => {\n !coi.quiet && console.error(\"COOP/COEP Service Worker failed to register:\", err);\n }\n );\n }\n })();\n}\n"], + "mappings": "AACA,IAAIA,EAAqB,GACrB,OAAO,OAAW,KAClB,KAAK,iBAAiB,UAAW,IAAM,KAAK,YAAY,CAAC,EACzD,KAAK,iBAAiB,WAAaC,GAAUA,EAAM,UAAU,KAAK,QAAQ,MAAM,CAAC,CAAC,EAElF,KAAK,iBAAiB,UAAYC,GAAO,CACrC,GAAKA,EAAG,KAEGA,EAAG,KAAK,OAAS,aACxB,KAAK,aACA,WAAW,EACX,KAAK,IACK,KAAK,QAAQ,SAAS,CAChC,EACA,KAAKC,GAAW,CACbA,EAAQ,QAASC,GAAWA,EAAO,SAASA,EAAO,GAAG,CAAC,CAC3D,CAAC,EACEF,EAAG,KAAK,OAAS,uBACxBF,EAAqBE,EAAG,KAAK,WAX7B,OAaR,CAAC,EAED,KAAK,iBAAiB,QAAS,SAAUD,EAAO,CAC5C,IAAM,EAAIA,EAAM,QAChB,GAAI,EAAE,QAAU,kBAAoB,EAAE,OAAS,cAC3C,OAGJ,IAAMI,EAAWL,GAAsB,EAAE,OAAS,UAC5C,IAAI,QAAQ,EAAG,CACb,YAAa,MACjB,CAAC,EACC,EACNC,EAAM,YACF,MAAMI,CAAO,EACR,KAAMC,GAAa,CAChB,GAAIA,EAAS,SAAW,EACpB,OAAOA,EAGX,IAAMC,EAAa,IAAI,QAAQD,EAAS,OAAO,EAC/C,OAAAC,EAAW,IAAI,+BACXP,EAAqB,iBAAmB,cAC5C,EACKA,GACDO,EAAW,IAAI,+BAAgC,cAAc,EAEjEA,EAAW,IAAI,6BAA8B,aAAa,EAEnD,IAAI,SAASD,EAAS,KAAM,CAC/B,OAAQA,EAAS,OACjB,WAAYA,EAAS,WACrB,QAASC,CACb,CAAC,CACL,CAAC,EACA,MAAOC,GAAM,QAAQ,MAAMA,CAAC,CAAC,CACtC,CACJ,CAAC,IAGA,IAAM,CAEH,IAAMC,EAAM,CACR,eAAgB,IAAM,GACtB,iBAAkB,IAAM,GACxB,mBAAoB,IAAM,EAAE,OAAO,QAAU,OAAO,UACpD,SAAU,IAAM,OAAO,SAAS,OAAO,EACvC,MAAO,GACP,GAAG,OAAO,GACd,EAEMC,EAAI,UAeV,GAbIA,EAAE,eAAiBA,EAAE,cAAc,aACnCA,EAAE,cAAc,WAAW,YAAY,CACnC,KAAM,qBACN,MAAOD,EAAI,mBAAmB,CAClC,CAAC,EAEGA,EAAI,iBAAiB,GACrBC,EAAE,cAAc,WAAW,YAAY,CAAE,KAAM,YAAa,CAAC,GAMjE,SAAO,sBAAwB,IAAS,CAACD,EAAI,eAAe,GAEhE,IAAI,CAAC,OAAO,gBAAiB,CACzB,CAACA,EAAI,OAAS,QAAQ,IAAI,wEAAwE,EAClG,MACJ,CAGIC,EAAE,eACFA,EAAE,cAAc,SAAS,OAAO,SAAS,cAAc,GAAG,EAAE,KACvDC,GAAiB,CACd,CAACF,EAAI,OAAS,QAAQ,IAAI,sCAAuCE,EAAa,KAAK,EAEnFA,EAAa,iBAAiB,cAAe,IAAM,CAC/C,CAACF,EAAI,OAAS,QAAQ,IAAI,iEAAiE,EAC3FA,EAAI,SAAS,CACjB,CAAC,EAGGE,EAAa,QAAU,CAACD,EAAE,cAAc,aACxC,CAACD,EAAI,OAAS,QAAQ,IAAI,yDAAyD,EACnFA,EAAI,SAAS,EAErB,EACCG,GAAQ,CACL,CAACH,EAAI,OAAS,QAAQ,MAAM,+CAAgDG,CAAG,CACnF,CACJ,EAER,GAAG", + "names": ["coepCredentialless", "event", "ev", "clients", "client", "request", "response", "newHeaders", "e", "coi", "n", "registration", "err"] +} diff --git a/dist/css/app.css b/dist/css/app.css index e79d564..9e26927 100644 --- a/dist/css/app.css +++ b/dist/css/app.css @@ -1,4 +1,4 @@ -@charset "UTF-8";.CodeMirror{font-family:monospace;height:300px;color:#000;direction:ltr}.CodeMirror-lines{padding:4px 0}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{padding:0 4px}.CodeMirror-scrollbar-filler,.CodeMirror-gutter-filler{background-color:#fff}.CodeMirror-gutters{border-right:1px solid #ddd;background-color:#f7f7f7;white-space:nowrap}.CodeMirror-linenumber{padding:0 3px 0 5px;min-width:20px;text-align:right;color:#999;white-space:nowrap}.CodeMirror-guttermarker{color:#000}.CodeMirror-guttermarker-subtle{color:#999}.CodeMirror-cursor{border-left:1px solid black;border-right:none;width:0}.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.cm-fat-cursor .CodeMirror-cursor{width:auto;border:0!important;background:#7e7}.cm-fat-cursor div.CodeMirror-cursors{z-index:1}.cm-fat-cursor .CodeMirror-line::selection,.cm-fat-cursor .CodeMirror-line>span::selection,.cm-fat-cursor .CodeMirror-line>span>span::selection{background:transparent}.cm-fat-cursor .CodeMirror-line::-moz-selection,.cm-fat-cursor .CodeMirror-line>span::-moz-selection,.cm-fat-cursor .CodeMirror-line>span>span::-moz-selection{background:transparent}.cm-fat-cursor{caret-color:transparent}@-moz-keyframes blink{50%{background-color:transparent}}@-webkit-keyframes blink{50%{background-color:transparent}}@keyframes blink{50%{background-color:transparent}}.cm-tab{display:inline-block;text-decoration:inherit}.CodeMirror-rulers{position:absolute;inset:-50px 0 0;overflow:hidden}.CodeMirror-ruler{border-left:1px solid #ccc;top:0;bottom:0;position:absolute}.cm-s-default .cm-header{color:#00f}.cm-s-default .cm-quote{color:#090}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:700}.cm-em{font-style:italic}.cm-link{text-decoration:underline}.cm-strikethrough{text-decoration:line-through}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:#00f}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-variable-3,.cm-s-default .cm-type{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta,.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-s-default .cm-error,.cm-invalidchar{color:red}.CodeMirror-composing{border-bottom:2px solid}div.CodeMirror span.CodeMirror-matchingbracket{color:#0b0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#a22}.CodeMirror-matchingtag{background:rgba(255,150,0,.3)}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{position:relative;overflow:hidden;background:white}.CodeMirror-scroll{overflow:scroll!important;margin-bottom:-50px;margin-right:-50px;padding-bottom:50px;height:100%;outline:none;position:relative;z-index:0}.CodeMirror-sizer{position:relative;border-right:50px solid transparent}.CodeMirror-vscrollbar,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-gutter-filler{position:absolute;z-index:6;display:none;outline:none}.CodeMirror-vscrollbar{right:0;top:0;overflow-x:hidden;overflow-y:scroll}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-y:hidden;overflow-x:scroll}.CodeMirror-scrollbar-filler{right:0;bottom:0}.CodeMirror-gutter-filler{left:0;bottom:0}.CodeMirror-gutters{position:absolute;left:0;top:0;min-height:100%;z-index:3}.CodeMirror-gutter{white-space:normal;height:100%;display:inline-block;vertical-align:top;margin-bottom:-50px}.CodeMirror-gutter-wrapper{position:absolute;z-index:4;background:none!important;border:none!important}.CodeMirror-gutter-background{position:absolute;top:0;bottom:0;z-index:4}.CodeMirror-gutter-elt{position:absolute;cursor:default;z-index:4}.CodeMirror-gutter-wrapper ::selection{background-color:transparent}.CodeMirror-gutter-wrapper ::-moz-selection{background-color:transparent}.CodeMirror-lines{cursor:text;min-height:1px}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;border-width:0;background:transparent;font-family:inherit;font-size:inherit;margin:0;white-space:pre;word-wrap:normal;line-height:inherit;color:inherit;z-index:2;position:relative;overflow:visible;-webkit-tap-highlight-color:transparent;-webkit-font-variant-ligatures:contextual;font-variant-ligatures:contextual}.CodeMirror-wrap pre.CodeMirror-line,.CodeMirror-wrap pre.CodeMirror-line-like{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{position:absolute;inset:0;z-index:0}.CodeMirror-linewidget{position:relative;z-index:2;padding:.1px}.CodeMirror-rtl pre{direction:rtl}.CodeMirror-code{outline:none}.CodeMirror-scroll,.CodeMirror-sizer,.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber{-moz-box-sizing:content-box;box-sizing:content-box}.CodeMirror-measure{position:absolute;width:100%;height:0;overflow:hidden;visibility:hidden}.CodeMirror-cursor{position:absolute;pointer-events:none}.CodeMirror-measure pre{position:static}div.CodeMirror-cursors{visibility:hidden;position:relative;z-index:3}div.CodeMirror-dragcursors,.CodeMirror-focused div.CodeMirror-cursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror-line::selection,.CodeMirror-line>span::selection,.CodeMirror-line>span>span::selection{background:#d7d4f0}.CodeMirror-line::-moz-selection,.CodeMirror-line>span::-moz-selection,.CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.cm-searching{background-color:#ffa;background-color:#ff06}.cm-force-border{padding-right:.1px}@media print{.CodeMirror div.CodeMirror-cursors{visibility:hidden}}.cm-tab-wrap-hack:after{content:""}span.CodeMirror-selectedtext{background:none}.cm-s-monokai.CodeMirror{background:#272822;color:#f8f8f2}.cm-s-monokai div.CodeMirror-selected{background:#49483E}.cm-s-monokai .CodeMirror-line::selection,.cm-s-monokai .CodeMirror-line>span::selection,.cm-s-monokai .CodeMirror-line>span>span::selection{background:rgba(73,72,62,.99)}.cm-s-monokai .CodeMirror-line::-moz-selection,.cm-s-monokai .CodeMirror-line>span::-moz-selection,.cm-s-monokai .CodeMirror-line>span>span::-moz-selection{background:rgba(73,72,62,.99)}.cm-s-monokai .CodeMirror-gutters{background:#272822;border-right:0px}.cm-s-monokai .CodeMirror-guttermarker{color:#fff}.cm-s-monokai .CodeMirror-guttermarker-subtle,.cm-s-monokai .CodeMirror-linenumber{color:#d0d0d0}.cm-s-monokai .CodeMirror-cursor{border-left:1px solid #f8f8f0}.cm-s-monokai span.cm-comment{color:#75715e}.cm-s-monokai span.cm-atom,.cm-s-monokai span.cm-number{color:#ae81ff}.cm-s-monokai span.cm-comment.cm-attribute{color:#97b757}.cm-s-monokai span.cm-comment.cm-def{color:#bc9262}.cm-s-monokai span.cm-comment.cm-tag{color:#bc6283}.cm-s-monokai span.cm-comment.cm-type{color:#5998a6}.cm-s-monokai span.cm-property,.cm-s-monokai span.cm-attribute{color:#a6e22e}.cm-s-monokai span.cm-keyword{color:#f92672}.cm-s-monokai span.cm-builtin{color:#66d9ef}.cm-s-monokai span.cm-string{color:#e6db74}.cm-s-monokai span.cm-variable{color:#f8f8f2}.cm-s-monokai span.cm-variable-2{color:#9effff}.cm-s-monokai span.cm-variable-3,.cm-s-monokai span.cm-type{color:#66d9ef}.cm-s-monokai span.cm-def{color:#fd971f}.cm-s-monokai span.cm-bracket{color:#f8f8f2}.cm-s-monokai span.cm-tag{color:#f92672}.cm-s-monokai span.cm-header,.cm-s-monokai span.cm-link{color:#ae81ff}.cm-s-monokai span.cm-error{background:#f92672;color:#f8f8f0}.cm-s-monokai .CodeMirror-activeline-background{background:#373831}.cm-s-monokai .CodeMirror-matchingbracket{text-decoration:underline;color:#fff!important}.toast__container{bottom:0;max-width:calc(40vw - 1em);position:fixed;left:1em;z-index:1}@media (max-width: 800px){.toast__container{max-width:calc(100vw - 2em)}}.toast{background:#fff linear-gradient(180deg,transparent,transparent 80%,rgba(0,0,0,.1) 100%);border:1px solid rgba(0,0,0,.1);border-radius:.25em;box-shadow:0 0 #0000004d;clear:both;color:#000c;cursor:pointer;float:left;margin:0 0 1em;min-width:10em;opacity:0;padding:1em 2.5em 1em 1em;position:relative;transform:translateY(100%);transition:all .4s}.toast:before{content:none;float:left;font-size:1.5em;line-height:.8em;margin-left:-.1em;min-width:1.5em;padding-right:.25em;text-align:center}.toast button{background:transparent;border:none;color:inherit;cursor:pointer;max-width:1em;overflow:hidden;padding:0;position:absolute;right:1em;top:1em;white-space:nowrap}.toast button:before{content:"\2716 "}.toast--info{background:#4a90e2 linear-gradient(180deg,transparent,transparent 80%,rgba(0,0,0,.1) 100%);color:#fffc}.toast--info:before{content:"\24d8"}.toast--success{background:#55dd6b linear-gradient(180deg,transparent,transparent 80%,rgba(0,0,0,.1) 100%);color:#606060cc}.toast--success:before{content:"\2713"}.toast--warning{background:#edc25e linear-gradient(180deg,transparent,transparent 80%,rgba(0,0,0,.1) 100%);color:#606060cc}.toast--warning:before{content:"\26a0"}.toast--error{background:#e23645 linear-gradient(180deg,transparent,transparent 80%,rgba(0,0,0,.1) 100%);color:#fffc}.toast--error:before{content:"\26a0"}.toast--show{box-shadow:0 0 .5em #0000004d;opacity:1;transform:translateY(0)}.toast--hide{box-shadow:0 0 1em #0000004d;opacity:0;transform:translate(-100%) translateY(0)}.xterm{position:relative;user-select:none;-ms-user-select:none;-webkit-user-select:none}.xterm.focus,.xterm:focus{outline:none}.xterm .xterm-helpers{position:absolute;top:0;z-index:5}.xterm .xterm-helper-textarea{padding:0;border:0;margin:0;position:absolute;opacity:0;left:-9999em;top:0;width:0;height:0;z-index:-5;white-space:nowrap;overflow:hidden;resize:none}.xterm .composition-view{background:#000;color:#fff;display:none;position:absolute;white-space:nowrap;z-index:1}.xterm .composition-view.active{display:block}.xterm .xterm-viewport{background-color:#000;overflow-y:scroll;cursor:default;position:absolute;inset:0}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{position:absolute;left:0;top:0}.xterm .xterm-scroll-area{visibility:hidden}.xterm-char-measure-element{display:inline-block;visibility:hidden;position:absolute;top:0;left:-9999em;line-height:normal}.xterm{cursor:text}.xterm.enable-mouse-events{cursor:default}.xterm.xterm-cursor-pointer,.xterm .xterm-cursor-pointer{cursor:pointer}.xterm.column-select.focus{cursor:crosshair}.xterm .xterm-accessibility,.xterm .xterm-message{position:absolute;inset:0;z-index:10;color:transparent}.xterm .live-region{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}.xterm-dim{opacity:.5}.xterm-underline{text-decoration:underline}.xterm-strikethrough{text-decoration:line-through}.xterm-screen .xterm-decoration-container .xterm-decoration{z-index:6;position:absolute}body{background:#272822;color:#f8f8f2;font-family:sans-serif;margin:0;padding:0 1em 1em}.github-corner{position:relative;z-index:8}h1 select,h2 select,h3 select{border-radius:.25em;padding:.5em 1em;vertical-align:top}h1 button,h2 button,h3 button{background:var(--accent-color, #fff);border:0;border-right:1px solid rgba(0,0,0,.4);cursor:pointer}h1 button:hover,h2 button:hover,h3 button:hover{background-image:linear-gradient(rgba(0,0,0,.2),rgba(0,0,0,.2))}h1 button:focus,h2 button:focus,h3 button:focus{box-shadow:0 0 .5em var(--accent-color, #fff)}h1 button[name=run],h2 button[name=run],h3 button[name=run]{--accent-color: #a6e22e}h1 button[name=run]:before,h2 button[name=run]:before,h3 button[name=run]:before{content:"\25b6"}h1 button[name=stop],h2 button[name=stop],h3 button[name=stop]{--accent-color: #f92672}h1 button[name=stop]:before,h2 button[name=stop]:before,h3 button[name=stop]:before{content:"\25a0"}h1 button[name=copy],h2 button[name=copy],h3 button[name=copy]{--accent-color: #66d9ef}h1 button[name=copy]:before,h2 button[name=copy]:before,h3 button[name=copy]:before{content:"Copy Link"}h1 button[name=markdown],h2 button[name=markdown],h3 button[name=markdown]{--accent-color: #e6db74}h1 button[name=markdown]:before,h2 button[name=markdown]:before,h3 button[name=markdown]:before{content:"Generate Markdown"}h1 button[name=expand],h1 button[name=collapse],h2 button[name=expand],h2 button[name=collapse],h3 button[name=expand],h3 button[name=collapse]{border-right:0;height:1.7em;width:1.7em}h1 button[name=expand]:before,h2 button[name=expand]:before,h3 button[name=expand]:before{content:"+"}h1 button[name=collapse]:before,h2 button[name=collapse]:before,h3 button[name=collapse]:before{content:"-"}h1 button[disabled],h2 button[disabled],h3 button[disabled]{cursor:default;opacity:.6}h1 button[disabled]:hover,h2 button[disabled]:hover,h3 button[disabled]:hover{background-image:none}h1 button.copied:before,h2 button.copied:before,h3 button.copied:before{content:"Copied!"!important}h1 span button,h2 span button,h3 span button{padding:.5em 1em}h1 span button:first-child,h2 span button:first-child,h3 span button:first-child{border-radius:.25em 0 0 .25em}h1 span button:last-child,h2 span button:last-child,h3 span button:last-child{border-radius:0 .25em .25em 0;border-right:0}h1.code-header input[type=button],h1.code-footer input[type=button],h2.code-header input[type=button],h2.code-footer input[type=button],h3.code-header input[type=button],h3.code-footer input[type=button]{height:1.5em;padding:.5em;width:1.5em}span.bytes,span.encoded{font-size:1rem}span.encoded{margin-left:.25em}span.code-details,span.actions{align-items:center;display:flex;margin:.5em 0}.CodeMirror{border:1px solid rgba(248,248,242,.3);font-family:courier-new,courier,monospace;font-size:15px;height:auto}.CodeMirror pre.CodeMirror-placeholder{opacity:.5}.CodeMirror .CodeMirror-scroll{max-height:50vh}[name=input]+.CodeMirror .CodeMirror-scroll{max-height:25vh}.CodeMirror:focus-within{border-color:#a6e22e}.tty{border:1px solid rgba(248,248,242,.3);padding:4px;resize:vertical}.fullscreen .tty{height:calc(100vh - 16px)}.tty:focus-within{border-color:#a6e22e}.toast__container{left:auto;right:1em;top:1em;z-index:10}.toast__container .toast--hide{transform:translate(100%) translateY(0)}iframe{border:1px solid rgba(248,248,242,.3);height:25em;width:100%}footer{font-size:.8em;margin-top:1em;text-align:center}@media (min-width: 990px){h1,h2,h3{display:flex}h1>*,h2>*,h3>*{margin-left:.5em}h1 button[name=run]:before,h2 button[name=run]:before,h3 button[name=run]:before{content:"Run"}h1 button[name=stop]:before,h2 button[name=stop]:before,h3 button[name=stop]:before{content:"Stop"}h1 button[name=copy]:before,h2 button[name=copy]:before,h3 button[name=copy]:before{content:"Copy Link"}h1 button[name=markdown]:before,h2 button[name=markdown]:before,h3 button[name=markdown]:before{content:"Generate Markdown"}h1{background:#272822;box-shadow:0 0 .5em #272822;margin:0;padding:.5em 0;position:sticky;top:0;z-index:7}span.code-details,span.actions{margin:0 .25em}} +@charset "UTF-8";.CodeMirror{font-family:monospace;height:300px;color:#000;direction:ltr}.CodeMirror-lines{padding:4px 0}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{padding:0 4px}.CodeMirror-scrollbar-filler,.CodeMirror-gutter-filler{background-color:#fff}.CodeMirror-gutters{border-right:1px solid #ddd;background-color:#f7f7f7;white-space:nowrap}.CodeMirror-linenumber{padding:0 3px 0 5px;min-width:20px;text-align:right;color:#999;white-space:nowrap}.CodeMirror-guttermarker{color:#000}.CodeMirror-guttermarker-subtle{color:#999}.CodeMirror-cursor{border-left:1px solid black;border-right:none;width:0}.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.cm-fat-cursor .CodeMirror-cursor{width:auto;border:0!important;background:#7e7}.cm-fat-cursor div.CodeMirror-cursors{z-index:1}.cm-fat-cursor .CodeMirror-line::selection,.cm-fat-cursor .CodeMirror-line>span::selection,.cm-fat-cursor .CodeMirror-line>span>span::selection{background:transparent}.cm-fat-cursor .CodeMirror-line::-moz-selection,.cm-fat-cursor .CodeMirror-line>span::-moz-selection,.cm-fat-cursor .CodeMirror-line>span>span::-moz-selection{background:transparent}.cm-fat-cursor{caret-color:transparent}@-moz-keyframes blink{50%{background-color:transparent}}@-webkit-keyframes blink{50%{background-color:transparent}}@keyframes blink{50%{background-color:transparent}}.cm-tab{display:inline-block;text-decoration:inherit}.CodeMirror-rulers{position:absolute;inset:-50px 0 0;overflow:hidden}.CodeMirror-ruler{border-left:1px solid #ccc;top:0;bottom:0;position:absolute}.cm-s-default .cm-header{color:#00f}.cm-s-default .cm-quote{color:#090}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:700}.cm-em{font-style:italic}.cm-link{text-decoration:underline}.cm-strikethrough{text-decoration:line-through}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:#00f}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-variable-3,.cm-s-default .cm-type{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta,.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-s-default .cm-error,.cm-invalidchar{color:red}.CodeMirror-composing{border-bottom:2px solid}div.CodeMirror span.CodeMirror-matchingbracket{color:#0b0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#a22}.CodeMirror-matchingtag{background:#ff96004d}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{position:relative;overflow:hidden;background:#fff}.CodeMirror-scroll{overflow:scroll!important;margin-bottom:-50px;margin-right:-50px;padding-bottom:50px;height:100%;outline:none;position:relative;z-index:0}.CodeMirror-sizer{position:relative;border-right:50px solid transparent}.CodeMirror-vscrollbar,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-gutter-filler{position:absolute;z-index:6;display:none;outline:none}.CodeMirror-vscrollbar{right:0;top:0;overflow-x:hidden;overflow-y:scroll}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-y:hidden;overflow-x:scroll}.CodeMirror-scrollbar-filler{right:0;bottom:0}.CodeMirror-gutter-filler{left:0;bottom:0}.CodeMirror-gutters{position:absolute;left:0;top:0;min-height:100%;z-index:3}.CodeMirror-gutter{white-space:normal;height:100%;display:inline-block;vertical-align:top;margin-bottom:-50px}.CodeMirror-gutter-wrapper{position:absolute;z-index:4;background:none!important;border:none!important}.CodeMirror-gutter-background{position:absolute;top:0;bottom:0;z-index:4}.CodeMirror-gutter-elt{position:absolute;cursor:default;z-index:4}.CodeMirror-gutter-wrapper ::selection{background-color:transparent}.CodeMirror-gutter-wrapper ::-moz-selection{background-color:transparent}.CodeMirror-lines{cursor:text;min-height:1px}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;border-width:0;background:transparent;font-family:inherit;font-size:inherit;margin:0;white-space:pre;word-wrap:normal;line-height:inherit;color:inherit;z-index:2;position:relative;overflow:visible;-webkit-tap-highlight-color:transparent;-webkit-font-variant-ligatures:contextual;font-variant-ligatures:contextual}.CodeMirror-wrap pre.CodeMirror-line,.CodeMirror-wrap pre.CodeMirror-line-like{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{position:absolute;inset:0;z-index:0}.CodeMirror-linewidget{position:relative;z-index:2;padding:.1px}.CodeMirror-rtl pre{direction:rtl}.CodeMirror-code{outline:none}.CodeMirror-scroll,.CodeMirror-sizer,.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber{-moz-box-sizing:content-box;box-sizing:content-box}.CodeMirror-measure{position:absolute;width:100%;height:0;overflow:hidden;visibility:hidden}.CodeMirror-cursor{position:absolute;pointer-events:none}.CodeMirror-measure pre{position:static}div.CodeMirror-cursors{visibility:hidden;position:relative;z-index:3}div.CodeMirror-dragcursors,.CodeMirror-focused div.CodeMirror-cursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror-line::selection,.CodeMirror-line>span::selection,.CodeMirror-line>span>span::selection{background:#d7d4f0}.CodeMirror-line::-moz-selection,.CodeMirror-line>span::-moz-selection,.CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.cm-searching{background-color:#ffa;background-color:#ff06}.cm-force-border{padding-right:.1px}@media print{.CodeMirror div.CodeMirror-cursors{visibility:hidden}}.cm-tab-wrap-hack:after{content:""}span.CodeMirror-selectedtext{background:none}.cm-s-monokai.CodeMirror{background:#272822;color:#f8f8f2}.cm-s-monokai div.CodeMirror-selected{background:#49483e}.cm-s-monokai .CodeMirror-line::selection,.cm-s-monokai .CodeMirror-line>span::selection,.cm-s-monokai .CodeMirror-line>span>span::selection{background:#49483efc}.cm-s-monokai .CodeMirror-line::-moz-selection,.cm-s-monokai .CodeMirror-line>span::-moz-selection,.cm-s-monokai .CodeMirror-line>span>span::-moz-selection{background:#49483efc}.cm-s-monokai .CodeMirror-gutters{background:#272822;border-right:0px}.cm-s-monokai .CodeMirror-guttermarker{color:#fff}.cm-s-monokai .CodeMirror-guttermarker-subtle,.cm-s-monokai .CodeMirror-linenumber{color:#d0d0d0}.cm-s-monokai .CodeMirror-cursor{border-left:1px solid #f8f8f0}.cm-s-monokai span.cm-comment{color:#75715e}.cm-s-monokai span.cm-atom,.cm-s-monokai span.cm-number{color:#ae81ff}.cm-s-monokai span.cm-comment.cm-attribute{color:#97b757}.cm-s-monokai span.cm-comment.cm-def{color:#bc9262}.cm-s-monokai span.cm-comment.cm-tag{color:#bc6283}.cm-s-monokai span.cm-comment.cm-type{color:#5998a6}.cm-s-monokai span.cm-property,.cm-s-monokai span.cm-attribute{color:#a6e22e}.cm-s-monokai span.cm-keyword{color:#f92672}.cm-s-monokai span.cm-builtin{color:#66d9ef}.cm-s-monokai span.cm-string{color:#e6db74}.cm-s-monokai span.cm-variable{color:#f8f8f2}.cm-s-monokai span.cm-variable-2{color:#9effff}.cm-s-monokai span.cm-variable-3,.cm-s-monokai span.cm-type{color:#66d9ef}.cm-s-monokai span.cm-def{color:#fd971f}.cm-s-monokai span.cm-bracket{color:#f8f8f2}.cm-s-monokai span.cm-tag{color:#f92672}.cm-s-monokai span.cm-header,.cm-s-monokai span.cm-link{color:#ae81ff}.cm-s-monokai span.cm-error{background:#f92672;color:#f8f8f0}.cm-s-monokai .CodeMirror-activeline-background{background:#373831}.cm-s-monokai .CodeMirror-matchingbracket{text-decoration:underline;color:#fff!important}.toast__container{bottom:0;max-width:calc(40vw - 1em);position:fixed;left:1em;z-index:1}@media (max-width: 800px){.toast__container{max-width:calc(100vw - 2em)}}.toast{background:#fff linear-gradient(180deg,transparent,transparent 80%,rgba(0,0,0,.1) 100%);border:1px solid rgba(0,0,0,.1);border-radius:.25em;box-shadow:0 0 #0000004d;clear:both;color:#000c;cursor:pointer;float:left;margin:0 0 1em;min-width:10em;opacity:0;padding:1em 2.5em 1em 1em;position:relative;transform:translateY(100%);transition:all .4s}.toast:before{content:none;float:left;font-size:1.5em;line-height:.8em;margin-left:-.1em;min-width:1.5em;padding-right:.25em;text-align:center}.toast button{background:transparent;border:none;color:inherit;cursor:pointer;max-width:1em;overflow:hidden;padding:0;position:absolute;right:1em;top:1em;white-space:nowrap}.toast button:before{content:"\2716 "}.toast--info{background:#4a90e2 linear-gradient(180deg,transparent,transparent 80%,rgba(0,0,0,.1) 100%);color:#fffc}.toast--info:before{content:"\24d8"}.toast--success{background:#55dd6b linear-gradient(180deg,transparent,transparent 80%,rgba(0,0,0,.1) 100%);color:#606060cc}.toast--success:before{content:"\2713"}.toast--warning{background:#edc25e linear-gradient(180deg,transparent,transparent 80%,rgba(0,0,0,.1) 100%);color:#606060cc}.toast--warning:before{content:"\26a0"}.toast--error{background:#e23645 linear-gradient(180deg,transparent,transparent 80%,rgba(0,0,0,.1) 100%);color:#fffc}.toast--error:before{content:"\26a0"}.toast--show{box-shadow:0 0 .5em #0000004d;opacity:1;transform:translateY(0)}.toast--hide{box-shadow:0 0 1em #0000004d;opacity:0;transform:translate(-100%) translateY(0)}.xterm{cursor:text;position:relative;user-select:none;-ms-user-select:none;-webkit-user-select:none}.xterm.focus,.xterm:focus{outline:none}.xterm .xterm-helpers{position:absolute;top:0;z-index:5}.xterm .xterm-helper-textarea{padding:0;border:0;margin:0;position:absolute;opacity:0;left:-9999em;top:0;width:0;height:0;z-index:-5;white-space:nowrap;overflow:hidden;resize:none}.xterm .composition-view{background:#000;color:#fff;display:none;position:absolute;white-space:nowrap;z-index:1}.xterm .composition-view.active{display:block}.xterm .xterm-viewport{background-color:#000;overflow-y:scroll;cursor:default;position:absolute;inset:0}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{position:absolute;left:0;top:0}.xterm .xterm-scroll-area{visibility:hidden}.xterm-char-measure-element{display:inline-block;visibility:hidden;position:absolute;top:0;left:-9999em;line-height:normal}.xterm.enable-mouse-events{cursor:default}.xterm.xterm-cursor-pointer,.xterm .xterm-cursor-pointer{cursor:pointer}.xterm.column-select.focus{cursor:crosshair}.xterm .xterm-accessibility,.xterm .xterm-message{position:absolute;inset:0;z-index:10;color:transparent}.xterm .live-region{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}.xterm-dim{opacity:.5}.xterm-underline{text-decoration:underline}.xterm-strikethrough{text-decoration:line-through}.xterm-screen .xterm-decoration-container .xterm-decoration{z-index:6;position:absolute}.xterm-decoration-overview-ruler{z-index:7;position:absolute;top:0;right:0;pointer-events:none}.xterm-decoration-top{z-index:2;position:relative}body{background:#272822;color:#f8f8f2;font-family:sans-serif;margin:0;padding:0 1em 1em}.github-corner{position:relative;z-index:8}h1 select,h2 select,h3 select{border-radius:.25em;padding:.5em 1em;vertical-align:top}h1 button,h2 button,h3 button{background:var(--accent-color, #fff);border:0;border-right:1px solid rgba(0,0,0,.4);cursor:pointer}h1 button:hover,h2 button:hover,h3 button:hover{background-image:linear-gradient(#0003,#0003)}h1 button:focus,h2 button:focus,h3 button:focus{box-shadow:0 0 .5em var(--accent-color, #fff)}h1 button[name=run],h2 button[name=run],h3 button[name=run]{--accent-color: #a6e22e}h1 button[name=run]:before,h2 button[name=run]:before,h3 button[name=run]:before{content:"\25b6"}h1 button[name=stop],h2 button[name=stop],h3 button[name=stop]{--accent-color: #f92672}h1 button[name=stop]:before,h2 button[name=stop]:before,h3 button[name=stop]:before{content:"\25a0"}h1 button[name=copy],h2 button[name=copy],h3 button[name=copy]{--accent-color: #66d9ef}h1 button[name=copy]:before,h2 button[name=copy]:before,h3 button[name=copy]:before{content:"Copy Link"}h1 button[name=markdown],h2 button[name=markdown],h3 button[name=markdown]{--accent-color: #e6db74}h1 button[name=markdown]:before,h2 button[name=markdown]:before,h3 button[name=markdown]:before{content:"Generate Markdown"}h1 button[name=expand],h1 button[name=collapse],h2 button[name=expand],h2 button[name=collapse],h3 button[name=expand],h3 button[name=collapse]{border-right:0;height:1.7em;width:1.7em}h1 button[name=expand]:before,h2 button[name=expand]:before,h3 button[name=expand]:before{content:"+"}h1 button[name=collapse]:before,h2 button[name=collapse]:before,h3 button[name=collapse]:before{content:"-"}h1 button[disabled],h2 button[disabled],h3 button[disabled]{cursor:default;opacity:.6}h1 button[disabled]:hover,h2 button[disabled]:hover,h3 button[disabled]:hover{background-image:none}h1 button.copied:before,h2 button.copied:before,h3 button.copied:before{content:"Copied!"!important}h1 span button,h2 span button,h3 span button{padding:.5em 1em}h1 span button:first-child,h2 span button:first-child,h3 span button:first-child{border-radius:.25em 0 0 .25em}h1 span button:last-child,h2 span button:last-child,h3 span button:last-child{border-radius:0 .25em .25em 0;border-right:0}h1.code-header input[type=button],h1.code-footer input[type=button],h2.code-header input[type=button],h2.code-footer input[type=button],h3.code-header input[type=button],h3.code-footer input[type=button]{height:1.5em;padding:.5em;width:1.5em}span.bytes,span.encoded{font-size:1rem}span.encoded{margin-left:.25em}span.code-details,span.actions{align-items:center;display:flex;margin:.5em 0}.CodeMirror{border:1px solid rgba(248,248,242,.3);font-family:courier-new,courier,monospace;font-size:15px;height:auto}.CodeMirror pre.CodeMirror-placeholder{opacity:.5}.CodeMirror .CodeMirror-scroll{max-height:50vh}[name=input]+.CodeMirror .CodeMirror-scroll{max-height:25vh}.CodeMirror:focus-within{border-color:#a6e22e}.tty{border:1px solid rgba(248,248,242,.3);padding:4px;resize:vertical}.fullscreen .tty{height:calc(100vh - 16px)}.tty:focus-within{border-color:#a6e22e}.toast__container{left:auto;right:1em;top:1em;z-index:10}.toast__container .toast--hide{transform:translate(100%) translateY(0)}iframe{border:1px solid rgba(248,248,242,.3);height:25em;width:100%}footer{font-size:.8em;margin-top:1em;text-align:center}@media (min-width: 990px){h1,h2,h3{display:flex}h1>*,h2>*,h3>*{margin-left:.5em}h1 button[name=run]:before,h2 button[name=run]:before,h3 button[name=run]:before{content:"Run"}h1 button[name=stop]:before,h2 button[name=stop]:before,h3 button[name=stop]:before{content:"Stop"}h1 button[name=copy]:before,h2 button[name=copy]:before,h3 button[name=copy]:before{content:"Copy Link"}h1 button[name=markdown]:before,h2 button[name=markdown]:before,h3 button[name=markdown]:before{content:"Generate Markdown"}h1{background:#272822;box-shadow:0 0 .5em #272822;margin:0;padding:.5em 0;position:sticky;top:0;z-index:7}span.code-details,span.actions{margin:0 .25em}} /** * Copyright (c) 2014 The xterm.js authors. All rights reserved. * Copyright (c) 2012-2013, Christopher Jeffrey (MIT License) diff --git a/dist/css/app.css.map b/dist/css/app.css.map index c000437..cb25ad8 100644 --- a/dist/css/app.css.map +++ b/dist/css/app.css.map @@ -1,7 +1,7 @@ { "version": 3, "sources": ["../../node_modules/codemirror/lib/codemirror.css", "../../node_modules/codemirror/theme/monokai.css", "../../node_modules/melba-toast/dist/Melba.css", "../../node_modules/xterm/css/xterm.css", "../../css/app.scss"], - "sourcesContent": [null, null, null, null, null], - "mappings": "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", + "sourcesContent": ["/* BASICS */\n\n.CodeMirror {\n /* Set height, width, borders, and global font properties here */\n font-family: monospace;\n height: 300px;\n color: black;\n direction: ltr;\n}\n\n/* PADDING */\n\n.CodeMirror-lines {\n padding: 4px 0; /* Vertical padding around content */\n}\n.CodeMirror pre.CodeMirror-line,\n.CodeMirror pre.CodeMirror-line-like {\n padding: 0 4px; /* Horizontal padding of content */\n}\n\n.CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler {\n background-color: white; /* The little square between H and V scrollbars */\n}\n\n/* GUTTER */\n\n.CodeMirror-gutters {\n border-right: 1px solid #ddd;\n background-color: #f7f7f7;\n white-space: nowrap;\n}\n.CodeMirror-linenumbers {}\n.CodeMirror-linenumber {\n padding: 0 3px 0 5px;\n min-width: 20px;\n text-align: right;\n color: #999;\n white-space: nowrap;\n}\n\n.CodeMirror-guttermarker { color: black; }\n.CodeMirror-guttermarker-subtle { color: #999; }\n\n/* CURSOR */\n\n.CodeMirror-cursor {\n border-left: 1px solid black;\n border-right: none;\n width: 0;\n}\n/* Shown when moving in bi-directional text */\n.CodeMirror div.CodeMirror-secondarycursor {\n border-left: 1px solid silver;\n}\n.cm-fat-cursor .CodeMirror-cursor {\n width: auto;\n border: 0 !important;\n background: #7e7;\n}\n.cm-fat-cursor div.CodeMirror-cursors {\n z-index: 1;\n}\n.cm-fat-cursor .CodeMirror-line::selection,\n.cm-fat-cursor .CodeMirror-line > span::selection, \n.cm-fat-cursor .CodeMirror-line > span > span::selection { background: transparent; }\n.cm-fat-cursor .CodeMirror-line::-moz-selection,\n.cm-fat-cursor .CodeMirror-line > span::-moz-selection,\n.cm-fat-cursor .CodeMirror-line > span > span::-moz-selection { background: transparent; }\n.cm-fat-cursor { caret-color: transparent; }\n@-moz-keyframes blink {\n 0% {}\n 50% { background-color: transparent; }\n 100% {}\n}\n@-webkit-keyframes blink {\n 0% {}\n 50% { background-color: transparent; }\n 100% {}\n}\n@keyframes blink {\n 0% {}\n 50% { background-color: transparent; }\n 100% {}\n}\n\n/* Can style cursor different in overwrite (non-insert) mode */\n.CodeMirror-overwrite .CodeMirror-cursor {}\n\n.cm-tab { display: inline-block; text-decoration: inherit; }\n\n.CodeMirror-rulers {\n position: absolute;\n left: 0; right: 0; top: -50px; bottom: 0;\n overflow: hidden;\n}\n.CodeMirror-ruler {\n border-left: 1px solid #ccc;\n top: 0; bottom: 0;\n position: absolute;\n}\n\n/* DEFAULT THEME */\n\n.cm-s-default .cm-header {color: blue;}\n.cm-s-default .cm-quote {color: #090;}\n.cm-negative {color: #d44;}\n.cm-positive {color: #292;}\n.cm-header, .cm-strong {font-weight: bold;}\n.cm-em {font-style: italic;}\n.cm-link {text-decoration: underline;}\n.cm-strikethrough {text-decoration: line-through;}\n\n.cm-s-default .cm-keyword {color: #708;}\n.cm-s-default .cm-atom {color: #219;}\n.cm-s-default .cm-number {color: #164;}\n.cm-s-default .cm-def {color: #00f;}\n.cm-s-default .cm-variable,\n.cm-s-default .cm-punctuation,\n.cm-s-default .cm-property,\n.cm-s-default .cm-operator {}\n.cm-s-default .cm-variable-2 {color: #05a;}\n.cm-s-default .cm-variable-3, .cm-s-default .cm-type {color: #085;}\n.cm-s-default .cm-comment {color: #a50;}\n.cm-s-default .cm-string {color: #a11;}\n.cm-s-default .cm-string-2 {color: #f50;}\n.cm-s-default .cm-meta {color: #555;}\n.cm-s-default .cm-qualifier {color: #555;}\n.cm-s-default .cm-builtin {color: #30a;}\n.cm-s-default .cm-bracket {color: #997;}\n.cm-s-default .cm-tag {color: #170;}\n.cm-s-default .cm-attribute {color: #00c;}\n.cm-s-default .cm-hr {color: #999;}\n.cm-s-default .cm-link {color: #00c;}\n\n.cm-s-default .cm-error {color: #f00;}\n.cm-invalidchar {color: #f00;}\n\n.CodeMirror-composing { border-bottom: 2px solid; }\n\n/* Default styles for common addons */\n\ndiv.CodeMirror span.CodeMirror-matchingbracket {color: #0b0;}\ndiv.CodeMirror span.CodeMirror-nonmatchingbracket {color: #a22;}\n.CodeMirror-matchingtag { background: rgba(255, 150, 0, .3); }\n.CodeMirror-activeline-background {background: #e8f2ff;}\n\n/* STOP */\n\n/* The rest of this file contains styles related to the mechanics of\n the editor. You probably shouldn't touch them. */\n\n.CodeMirror {\n position: relative;\n overflow: hidden;\n background: white;\n}\n\n.CodeMirror-scroll {\n overflow: scroll !important; /* Things will break if this is overridden */\n /* 50px is the magic margin used to hide the element's real scrollbars */\n /* See overflow: hidden in .CodeMirror */\n margin-bottom: -50px; margin-right: -50px;\n padding-bottom: 50px;\n height: 100%;\n outline: none; /* Prevent dragging from highlighting the element */\n position: relative;\n z-index: 0;\n}\n.CodeMirror-sizer {\n position: relative;\n border-right: 50px solid transparent;\n}\n\n/* The fake, visible scrollbars. Used to force redraw during scrolling\n before actual scrolling happens, thus preventing shaking and\n flickering artifacts. */\n.CodeMirror-vscrollbar, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler {\n position: absolute;\n z-index: 6;\n display: none;\n outline: none;\n}\n.CodeMirror-vscrollbar {\n right: 0; top: 0;\n overflow-x: hidden;\n overflow-y: scroll;\n}\n.CodeMirror-hscrollbar {\n bottom: 0; left: 0;\n overflow-y: hidden;\n overflow-x: scroll;\n}\n.CodeMirror-scrollbar-filler {\n right: 0; bottom: 0;\n}\n.CodeMirror-gutter-filler {\n left: 0; bottom: 0;\n}\n\n.CodeMirror-gutters {\n position: absolute; left: 0; top: 0;\n min-height: 100%;\n z-index: 3;\n}\n.CodeMirror-gutter {\n white-space: normal;\n height: 100%;\n display: inline-block;\n vertical-align: top;\n margin-bottom: -50px;\n}\n.CodeMirror-gutter-wrapper {\n position: absolute;\n z-index: 4;\n background: none !important;\n border: none !important;\n}\n.CodeMirror-gutter-background {\n position: absolute;\n top: 0; bottom: 0;\n z-index: 4;\n}\n.CodeMirror-gutter-elt {\n position: absolute;\n cursor: default;\n z-index: 4;\n}\n.CodeMirror-gutter-wrapper ::selection { background-color: transparent }\n.CodeMirror-gutter-wrapper ::-moz-selection { background-color: transparent }\n\n.CodeMirror-lines {\n cursor: text;\n min-height: 1px; /* prevents collapsing before first draw */\n}\n.CodeMirror pre.CodeMirror-line,\n.CodeMirror pre.CodeMirror-line-like {\n /* Reset some styles that the rest of the page might have set */\n -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0;\n border-width: 0;\n background: transparent;\n font-family: inherit;\n font-size: inherit;\n margin: 0;\n white-space: pre;\n word-wrap: normal;\n line-height: inherit;\n color: inherit;\n z-index: 2;\n position: relative;\n overflow: visible;\n -webkit-tap-highlight-color: transparent;\n -webkit-font-variant-ligatures: contextual;\n font-variant-ligatures: contextual;\n}\n.CodeMirror-wrap pre.CodeMirror-line,\n.CodeMirror-wrap pre.CodeMirror-line-like {\n word-wrap: break-word;\n white-space: pre-wrap;\n word-break: normal;\n}\n\n.CodeMirror-linebackground {\n position: absolute;\n left: 0; right: 0; top: 0; bottom: 0;\n z-index: 0;\n}\n\n.CodeMirror-linewidget {\n position: relative;\n z-index: 2;\n padding: 0.1px; /* Force widget margins to stay inside of the container */\n}\n\n.CodeMirror-widget {}\n\n.CodeMirror-rtl pre { direction: rtl; }\n\n.CodeMirror-code {\n outline: none;\n}\n\n/* Force content-box sizing for the elements where we expect it */\n.CodeMirror-scroll,\n.CodeMirror-sizer,\n.CodeMirror-gutter,\n.CodeMirror-gutters,\n.CodeMirror-linenumber {\n -moz-box-sizing: content-box;\n box-sizing: content-box;\n}\n\n.CodeMirror-measure {\n position: absolute;\n width: 100%;\n height: 0;\n overflow: hidden;\n visibility: hidden;\n}\n\n.CodeMirror-cursor {\n position: absolute;\n pointer-events: none;\n}\n.CodeMirror-measure pre { position: static; }\n\ndiv.CodeMirror-cursors {\n visibility: hidden;\n position: relative;\n z-index: 3;\n}\ndiv.CodeMirror-dragcursors {\n visibility: visible;\n}\n\n.CodeMirror-focused div.CodeMirror-cursors {\n visibility: visible;\n}\n\n.CodeMirror-selected { background: #d9d9d9; }\n.CodeMirror-focused .CodeMirror-selected { background: #d7d4f0; }\n.CodeMirror-crosshair { cursor: crosshair; }\n.CodeMirror-line::selection, .CodeMirror-line > span::selection, .CodeMirror-line > span > span::selection { background: #d7d4f0; }\n.CodeMirror-line::-moz-selection, .CodeMirror-line > span::-moz-selection, .CodeMirror-line > span > span::-moz-selection { background: #d7d4f0; }\n\n.cm-searching {\n background-color: #ffa;\n background-color: rgba(255, 255, 0, .4);\n}\n\n/* Used to force a border model for a node */\n.cm-force-border { padding-right: .1px; }\n\n@media print {\n /* Hide the cursor when printing */\n .CodeMirror div.CodeMirror-cursors {\n visibility: hidden;\n }\n}\n\n/* See issue #2901 */\n.cm-tab-wrap-hack:after { content: ''; }\n\n/* Help users use markselection to safely style text background */\nspan.CodeMirror-selectedtext { background: none; }\n", "/* Based on Sublime Text's Monokai theme */\n\n.cm-s-monokai.CodeMirror { background: #272822; color: #f8f8f2; }\n.cm-s-monokai div.CodeMirror-selected { background: #49483E; }\n.cm-s-monokai .CodeMirror-line::selection, .cm-s-monokai .CodeMirror-line > span::selection, .cm-s-monokai .CodeMirror-line > span > span::selection { background: rgba(73, 72, 62, .99); }\n.cm-s-monokai .CodeMirror-line::-moz-selection, .cm-s-monokai .CodeMirror-line > span::-moz-selection, .cm-s-monokai .CodeMirror-line > span > span::-moz-selection { background: rgba(73, 72, 62, .99); }\n.cm-s-monokai .CodeMirror-gutters { background: #272822; border-right: 0px; }\n.cm-s-monokai .CodeMirror-guttermarker { color: white; }\n.cm-s-monokai .CodeMirror-guttermarker-subtle { color: #d0d0d0; }\n.cm-s-monokai .CodeMirror-linenumber { color: #d0d0d0; }\n.cm-s-monokai .CodeMirror-cursor { border-left: 1px solid #f8f8f0; }\n\n.cm-s-monokai span.cm-comment { color: #75715e; }\n.cm-s-monokai span.cm-atom { color: #ae81ff; }\n.cm-s-monokai span.cm-number { color: #ae81ff; }\n\n.cm-s-monokai span.cm-comment.cm-attribute { color: #97b757; }\n.cm-s-monokai span.cm-comment.cm-def { color: #bc9262; }\n.cm-s-monokai span.cm-comment.cm-tag { color: #bc6283; }\n.cm-s-monokai span.cm-comment.cm-type { color: #5998a6; }\n\n.cm-s-monokai span.cm-property, .cm-s-monokai span.cm-attribute { color: #a6e22e; }\n.cm-s-monokai span.cm-keyword { color: #f92672; }\n.cm-s-monokai span.cm-builtin { color: #66d9ef; }\n.cm-s-monokai span.cm-string { color: #e6db74; }\n\n.cm-s-monokai span.cm-variable { color: #f8f8f2; }\n.cm-s-monokai span.cm-variable-2 { color: #9effff; }\n.cm-s-monokai span.cm-variable-3, .cm-s-monokai span.cm-type { color: #66d9ef; }\n.cm-s-monokai span.cm-def { color: #fd971f; }\n.cm-s-monokai span.cm-bracket { color: #f8f8f2; }\n.cm-s-monokai span.cm-tag { color: #f92672; }\n.cm-s-monokai span.cm-header { color: #ae81ff; }\n.cm-s-monokai span.cm-link { color: #ae81ff; }\n.cm-s-monokai span.cm-error { background: #f92672; color: #f8f8f0; }\n\n.cm-s-monokai .CodeMirror-activeline-background { background: #373831; }\n.cm-s-monokai .CodeMirror-matchingbracket {\n text-decoration: underline;\n color: white !important;\n}\n", ".toast__container{bottom:0;max-width:calc(40vw - 1em);position:fixed;left:1em;z-index:1}@media(max-width: 800px){.toast__container{max-width:calc(100vw - 2em)}}.toast{background:#fff linear-gradient(180deg, transparent, transparent 80%, rgba(0, 0, 0, 0.1) 100%);border:1px solid rgba(0,0,0,.1);border-radius:.25em;box-shadow:0 0 0 rgba(0,0,0,.3);clear:both;color:rgba(0,0,0,.8);cursor:pointer;float:left;margin:0 0 1em;min-width:10em;opacity:0;padding:1em 2.5em 1em 1em;position:relative;transform:translateY(100%);transition:all .4s}.toast::before{content:none;float:left;font-size:1.5em;line-height:.8em;margin-left:-0.1em;min-width:1.5em;padding-right:.25em;text-align:center}.toast button{background:transparent;border:none;color:inherit;cursor:pointer;max-width:1em;overflow:hidden;padding:0;position:absolute;right:1em;top:1em;white-space:nowrap}.toast button::before{content:\"✖ \"}.toast--info{background:#4a90e2 linear-gradient(180deg, transparent, transparent 80%, rgba(0, 0, 0, 0.1) 100%);color:rgba(255,255,255,.8)}.toast--info::before{content:\"ⓘ\"}.toast--success{background:#55dd6b linear-gradient(180deg, transparent, transparent 80%, rgba(0, 0, 0, 0.1) 100%);color:rgba(96,96,96,.8)}.toast--success::before{content:\"✓\"}.toast--warning{background:#edc25e linear-gradient(180deg, transparent, transparent 80%, rgba(0, 0, 0, 0.1) 100%);color:rgba(96,96,96,.8)}.toast--warning::before{content:\"⚠\"}.toast--error{background:#e23645 linear-gradient(180deg, transparent, transparent 80%, rgba(0, 0, 0, 0.1) 100%);color:rgba(255,255,255,.8)}.toast--error::before{content:\"⚠\"}.toast--show{box-shadow:0 0 .5em rgba(0,0,0,.3);opacity:1;transform:translateY(0)}.toast--hide{box-shadow:0 0 1em rgba(0,0,0,.3);opacity:0;transform:translateX(-100%) translateY(0)}/*# sourceMappingURL=Melba.css.map */\n", "/**\n * Copyright (c) 2014 The xterm.js authors. All rights reserved.\n * Copyright (c) 2012-2013, Christopher Jeffrey (MIT License)\n * https://github.com/chjj/term.js\n * @license MIT\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n *\n * Originally forked from (with the author's permission):\n * Fabrice Bellard's javascript vt100 for jslinux:\n * http://bellard.org/jslinux/\n * Copyright (c) 2011 Fabrice Bellard\n * The original design remains. The terminal itself\n * has been extended to include xterm CSI codes, among\n * other features.\n */\n\n/**\n * Default styles for xterm.js\n */\n\n.xterm {\n cursor: text;\n position: relative;\n user-select: none;\n -ms-user-select: none;\n -webkit-user-select: none;\n}\n\n.xterm.focus,\n.xterm:focus {\n outline: none;\n}\n\n.xterm .xterm-helpers {\n position: absolute;\n top: 0;\n /**\n * The z-index of the helpers must be higher than the canvases in order for\n * IMEs to appear on top.\n */\n z-index: 5;\n}\n\n.xterm .xterm-helper-textarea {\n padding: 0;\n border: 0;\n margin: 0;\n /* Move textarea out of the screen to the far left, so that the cursor is not visible */\n position: absolute;\n opacity: 0;\n left: -9999em;\n top: 0;\n width: 0;\n height: 0;\n z-index: -5;\n /** Prevent wrapping so the IME appears against the textarea at the correct position */\n white-space: nowrap;\n overflow: hidden;\n resize: none;\n}\n\n.xterm .composition-view {\n /* TODO: Composition position got messed up somewhere */\n background: #000;\n color: #FFF;\n display: none;\n position: absolute;\n white-space: nowrap;\n z-index: 1;\n}\n\n.xterm .composition-view.active {\n display: block;\n}\n\n.xterm .xterm-viewport {\n /* On OS X this is required in order for the scroll bar to appear fully opaque */\n background-color: #000;\n overflow-y: scroll;\n cursor: default;\n position: absolute;\n right: 0;\n left: 0;\n top: 0;\n bottom: 0;\n}\n\n.xterm .xterm-screen {\n position: relative;\n}\n\n.xterm .xterm-screen canvas {\n position: absolute;\n left: 0;\n top: 0;\n}\n\n.xterm .xterm-scroll-area {\n visibility: hidden;\n}\n\n.xterm-char-measure-element {\n display: inline-block;\n visibility: hidden;\n position: absolute;\n top: 0;\n left: -9999em;\n line-height: normal;\n}\n\n.xterm.enable-mouse-events {\n /* When mouse events are enabled (eg. tmux), revert to the standard pointer cursor */\n cursor: default;\n}\n\n.xterm.xterm-cursor-pointer,\n.xterm .xterm-cursor-pointer {\n cursor: pointer;\n}\n\n.xterm.column-select.focus {\n /* Column selection mode */\n cursor: crosshair;\n}\n\n.xterm .xterm-accessibility,\n.xterm .xterm-message {\n position: absolute;\n left: 0;\n top: 0;\n bottom: 0;\n right: 0;\n z-index: 10;\n color: transparent;\n}\n\n.xterm .live-region {\n position: absolute;\n left: -9999px;\n width: 1px;\n height: 1px;\n overflow: hidden;\n}\n\n.xterm-dim {\n opacity: 0.5;\n}\n\n.xterm-underline {\n text-decoration: underline;\n}\n\n.xterm-strikethrough {\n text-decoration: line-through;\n}\n\n.xterm-screen .xterm-decoration-container .xterm-decoration {\n\tz-index: 6;\n\tposition: absolute;\n}\n\n.xterm-decoration-overview-ruler {\n z-index: 7;\n position: absolute;\n top: 0;\n right: 0;\n pointer-events: none;\n}\n\n.xterm-decoration-top {\n z-index: 2;\n position: relative;\n}\n", "@use '~codemirror/lib/codemirror.css';\n@use '~codemirror/theme/monokai.css';\n@use '~melba-toast/dist/Melba.css';\n@use '~xterm/css/xterm.css';\n\nbody {\n background: #272822;\n color: #f8f8f2;\n font-family: sans-serif;\n margin: 0;\n padding: 0 1em 1em 1em;\n}\n\n.github-corner {\n position: relative;\n z-index: 8;\n}\n\nh1,\nh2,\nh3 {\n select {\n border-radius: 0.25em;\n padding: 0.5em 1em;\n vertical-align: top;\n }\n\n button {\n background: var(--accent-color, #fff);\n border: 0;\n border-right: 1px solid rgba(0, 0, 0, 0.4);\n cursor: pointer;\n\n &:hover {\n background-image: linear-gradient(rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0.2));\n }\n\n &:focus {\n box-shadow: 0 0 0.5em var(--accent-color, #fff);\n }\n\n &[name='run'] {\n --accent-color: #a6e22e;\n\n &::before {\n content: '▶';\n }\n }\n\n &[name='stop'] {\n --accent-color: #f92672;\n\n &::before {\n content: '■';\n }\n }\n\n &[name='copy'] {\n --accent-color: #66d9ef;\n\n &::before {\n content: 'Copy Link';\n }\n }\n\n &[name='markdown'] {\n --accent-color: #e6db74;\n\n &::before {\n content: 'Generate Markdown';\n }\n }\n\n &[name='expand'],\n &[name='collapse'] {\n border-right: 0;\n height: 1.7em;\n width: 1.7em;\n }\n\n &[name='expand']::before {\n content: '+';\n }\n\n &[name='collapse']::before {\n content: '-';\n }\n\n &[disabled] {\n cursor: default;\n opacity: 0.6;\n\n &:hover {\n background-image: none;\n }\n }\n\n &.copied::before {\n content: 'Copied!' !important; // :(\n }\n }\n\n span button {\n padding: 0.5em 1em;\n\n &:first-child {\n border-radius: 0.25em 0 0 0.25em;\n }\n\n &:last-child {\n border-radius: 0 0.25em 0.25em 0;\n border-right: 0;\n }\n }\n\n &.code-header,\n &.code-footer {\n input[type='button'] {\n height: 1.5em;\n padding: 0.5em;\n width: 1.5em;\n }\n }\n}\n\nspan.bytes,\nspan.encoded {\n font-size: 1rem;\n}\n\nspan.encoded {\n margin-left: 0.25em;\n}\n\nspan.code-details,\nspan.actions {\n align-items: center;\n display: flex;\n margin: 0.5em 0;\n}\n\n.CodeMirror {\n border: 1px solid rgba(248, 248, 242, 0.3);\n font-family: courier-new, courier, monospace;\n font-size: 15px;\n height: auto;\n\n pre.CodeMirror-placeholder {\n opacity: 0.5;\n }\n\n .CodeMirror-scroll {\n max-height: 50vh;\n\n [name='input'] + & {\n max-height: 25vh;\n }\n }\n\n &:focus-within {\n border-color: #a6e22e;\n }\n}\n\n.tty {\n border: 1px solid rgba(248, 248, 242, 0.3);\n padding: 4px;\n resize: vertical;\n\n .fullscreen & {\n height: calc(100vh - 16px);\n }\n\n &:focus-within {\n border-color: #a6e22e;\n }\n}\n\n.toast__container {\n left: auto;\n right: 1em;\n top: 1em;\n z-index: 10;\n\n .toast--hide {\n transform: translateX(100%) translateY(0);\n }\n}\n\niframe {\n border: 1px solid rgba(248, 248, 242, 0.3);\n height: 25em;\n width: 100%;\n}\n\nfooter {\n font-size: 0.8em;\n margin-top: 1em;\n text-align: center;\n}\n\n@media (min-width: 525px) {\n}\n\n@media (min-width: 990px) {\n h1,\n h2,\n h3 {\n display: flex;\n\n > * {\n margin-left: 0.5em;\n }\n\n button {\n &[name='run']::before {\n content: 'Run';\n }\n\n &[name='stop']::before {\n content: 'Stop';\n }\n\n &[name='copy']::before {\n content: 'Copy Link';\n }\n\n &[name='markdown']::before {\n content: 'Generate Markdown';\n }\n }\n }\n\n h1 {\n background: #272822;\n box-shadow: 0 0 0.5em #272822;\n margin: 0;\n padding: 0.5em 0;\n position: sticky;\n top: 0;\n z-index: 7;\n }\n\n span.code-details,\n span.actions {\n margin: 0 0.25em;\n }\n}\n"], + "mappings": "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", "names": [] } diff --git a/dist/js/app.js b/dist/js/app.js index 983c290..690be35 100644 --- a/dist/js/app.js +++ b/dist/js/app.js @@ -1,54 +1,56 @@ -(()=>{var Yu=Object.create;var os=Object.defineProperty,Zu=Object.defineProperties,Vu=Object.getOwnPropertyDescriptor,$u=Object.getOwnPropertyDescriptors,Ju=Object.getOwnPropertyNames,gl=Object.getOwnPropertySymbols,Qu=Object.getPrototypeOf,yl=Object.prototype.hasOwnProperty,ef=Object.prototype.propertyIsEnumerable;var _l=(V,H,E)=>H in V?os(V,H,{enumerable:!0,configurable:!0,writable:!0,value:E}):V[H]=E,nr=(V,H)=>{for(var E in H||(H={}))yl.call(H,E)&&_l(V,E,H[E]);if(gl)for(var E of gl(H))ef.call(H,E)&&_l(V,E,H[E]);return V},Jr=(V,H)=>Zu(V,$u(H));var or=(V,H)=>()=>(H||V((H={exports:{}}).exports,H),H.exports);var tf=(V,H,E,f)=>{if(H&&typeof H=="object"||typeof H=="function")for(let L of Ju(H))!yl.call(V,L)&&L!==E&&os(V,L,{get:()=>H[L],enumerable:!(f=Vu(H,L))||f.enumerable});return V};var Xt=(V,H,E)=>(E=V!=null?Yu(Qu(V)):{},tf(H||!V||!V.__esModule?os(E,"default",{value:V,enumerable:!0}):E,V));var sr=or((us,fs)=>{(function(V,H){typeof us=="object"&&typeof fs<"u"?fs.exports=H():typeof define=="function"&&define.amd?define(H):(V=V||self,V.CodeMirror=H())})(us,function(){"use strict";var V=navigator.userAgent,H=navigator.platform,E=/gecko\/\d/i.test(V),f=/MSIE \d/.test(V),L=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(V),y=/Edge\/(\d+)/.exec(V),m=f||L||y,_=m&&(f?document.documentMode||6:+(y||L)[1]),v=!y&&/WebKit\//.test(V),A=v&&/Qt\/\d+\.\d+/.test(V),w=!y&&/Chrome\//.test(V),c=/Opera\//.test(V),p=/Apple Computer/.test(navigator.vendor),C=/Mac OS X 1\d\D([8-9]|\d\d)\D/.test(V),d=/PhantomJS/.test(V),s=p&&(/Mobile\/\w+/.test(V)||navigator.maxTouchPoints>2),o=/Android/.test(V),l=s||o||/webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(V),a=s||/Mac/.test(H),u=/\bCrOS\b/.test(V),g=/win/i.test(H),b=c&&V.match(/Version\/(\d*\.\d*)/);b&&(b=Number(b[1])),b&&b>=15&&(c=!1,v=!0);var T=a&&(A||c&&(b==null||b<12.11)),R=E||m&&_>=9;function k(e){return new RegExp("(^|\\s)"+e+"(?:$|\\s)\\s*")}var M=function(e,t){var i=e.className,r=k(t).exec(i);if(r){var n=i.slice(r.index+r[0].length);e.className=i.slice(0,r.index)+(n?r[1]+n:"")}};function N(e){for(var t=e.childNodes.length;t>0;--t)e.removeChild(e.firstChild);return e}function D(e,t){return N(e).appendChild(t)}function W(e,t,i,r){var n=document.createElement(e);if(i&&(n.className=i),r&&(n.style.cssText=r),typeof t=="string")n.appendChild(document.createTextNode(t));else if(t)for(var h=0;h=t)return S+(t-h);S+=x-h,S+=i-S%i,h=x+1}}var U=function(){this.id=null,this.f=null,this.time=0,this.handler=be(this.onTimeout,this)};U.prototype.onTimeout=function(e){e.id=0,e.time<=+new Date?e.f():setTimeout(e.handler,e.time-+new Date)},U.prototype.set=function(e,t){this.f=t;var i=+new Date+e;(!this.id||i=t)return r+Math.min(S,t-n);if(n+=h-r,n+=i-n%i,r=h+1,n>=t)return r}}var De=[""];function Fe(e){for(;De.length<=e;)De.push(Ae(De)+" ");return De[e]}function Ae(e){return e[e.length-1]}function _e(e,t){for(var i=[],r=0;r"\x80"&&(e.toUpperCase()!=e.toLowerCase()||lr.test(e))}function wr(e,t){return t?t.source.indexOf("\\w")>-1&&Cr(e)?!0:t.test(e):Cr(e)}function ei(e){for(var t in e)if(e.hasOwnProperty(t)&&e[t])return!1;return!0}var pi=/[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/;function Nr(e){return e.charCodeAt(0)>=768&&pi.test(e)}function ti(e,t,i){for(;(i<0?t>0:ti?-1:1;;){if(t==i)return t;var n=(t+i)/2,h=r<0?Math.ceil(n):Math.floor(n);if(h==t)return e(h)?t:i;e(h)?i=h:t=h+r}}function vi(e,t,i,r){if(!e)return r(t,i,"ltr",0);for(var n=!1,h=0;ht||t==i&&S.to==t)&&(r(Math.max(S.from,t),Math.min(S.to,i),S.level==1?"rtl":"ltr",h),n=!0)}n||r(t,i,"ltr")}var vt=null;function Ne(e,t,i){var r;vt=null;for(var n=0;nt)return n;h.to==t&&(h.from!=h.to&&i=="before"?r=n:vt=n),h.from==t&&(h.from!=h.to&&i!="before"?r=n:vt=n)}return r??vt}var cr=function(){var e="bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN",t="nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111";function i(P){return P<=247?e.charAt(P):1424<=P&&P<=1524?"R":1536<=P&&P<=1785?t.charAt(P-1536):1774<=P&&P<=2220?"r":8192<=P&&P<=8203?"w":P==8204?"b":"L"}var r=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/,n=/[stwN]/,h=/[LRr]/,S=/[Lb1n]/,x=/[1n]/;function O(P,z,Z){this.level=P,this.from=z,this.to=Z}return function(P,z){var Z=z=="ltr"?"L":"R";if(P.length==0||z=="ltr"&&!r.test(P))return!1;for(var Q=P.length,J=[],re=0;re-1&&(r[t]=n.slice(0,h).concat(n.slice(h+1)))}}}function ke(e,t){var i=ur(e,t);if(!!i.length)for(var r=Array.prototype.slice.call(arguments,2),n=0;n0}function At(e){e.prototype.on=function(t,i){we(this,t,i)},e.prototype.off=function(t,i){Qe(this,t,i)}}function Xe(e){e.preventDefault?e.preventDefault():e.returnValue=!1}function hr(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0}function ft(e){return e.defaultPrevented!=null?e.defaultPrevented:e.returnValue==!1}function Qt(e){Xe(e),hr(e)}function Yt(e){return e.target||e.srcElement}function Wr(e){var t=e.which;return t==null&&(e.button&1?t=1:e.button&2?t=3:e.button&4&&(t=2)),a&&e.ctrlKey&&t==1&&(t=3),t}var Lr=function(){if(m&&_<9)return!1;var e=W("div");return"draggable"in e||"dragDrop"in e}(),et;function jr(e){if(et==null){var t=W("span","\u200B");D(e,W("span",[t,document.createTextNode("x")])),e.firstChild.offsetHeight!=0&&(et=t.offsetWidth<=1&&t.offsetHeight>2&&!(m&&_<8))}var i=et?W("span","\u200B"):W("span","\xA0",null,"display: inline-block; width: 1px; margin-right: -1px");return i.setAttribute("cm-text",""),i}var xr;function Mt(e){if(xr!=null)return xr;var t=D(e,document.createTextNode("A\u062EA")),i=F(t,0,1).getBoundingClientRect(),r=F(t,1,2).getBoundingClientRect();return N(e),!i||i.left==i.right?!1:xr=r.right-i.right<3}var kr=` - -b`.split(/\n/).length!=3?function(e){for(var t=0,i=[],r=e.length;t<=r;){var n=e.indexOf(` -`,t);n==-1&&(n=e.length);var h=e.slice(t,e.charAt(n-1)=="\r"?n-1:n),S=h.indexOf("\r");S!=-1?(i.push(h.slice(0,S)),t+=S+1):(i.push(h),t=n+1)}return i}:function(e){return e.split(/\r\n?|\n/)},Ur=window.getSelection?function(e){try{return e.selectionStart!=e.selectionEnd}catch{return!1}}:function(e){var t;try{t=e.ownerDocument.selection.createRange()}catch{}return!t||t.parentElement()!=e?!1:t.compareEndPoints("StartToEnd",t)!=0},zr=function(){var e=W("div");return"oncopy"in e?!0:(e.setAttribute("oncopy","return;"),typeof e.oncopy=="function")}(),Er=null;function Zt(e){if(Er!=null)return Er;var t=D(e,W("span","x")),i=t.getBoundingClientRect(),r=F(t,0,1).getBoundingClientRect();return Er=Math.abs(i.left-r.left)>1}var gt={},ht={};function qr(e,t){arguments.length>2&&(t.dependencies=Array.prototype.slice.call(arguments,2)),gt[e]=t}function jt(e,t){ht[e]=t}function dr(e){if(typeof e=="string"&&ht.hasOwnProperty(e))e=ht[e];else if(e&&typeof e.name=="string"&&ht.hasOwnProperty(e.name)){var t=ht[e.name];typeof t=="string"&&(t={name:t}),e=Tt(t,e),e.name=t.name}else{if(typeof e=="string"&&/^[\w\-]+\/[\w\-]+\+xml$/.test(e))return dr("application/xml");if(typeof e=="string"&&/^[\w\-]+\/[\w\-]+\+json$/.test(e))return dr("application/json")}return typeof e=="string"?{name:e}:e||{name:"null"}}function pr(e,t){t=dr(t);var i=gt[t.name];if(!i)return pr(e,"text/plain");var r=i(e,t);if(bt.hasOwnProperty(t.name)){var n=bt[t.name];for(var h in n)!n.hasOwnProperty(h)||(r.hasOwnProperty(h)&&(r["_"+h]=r[h]),r[h]=n[h])}if(r.name=t.name,t.helperType&&(r.helperType=t.helperType),t.modeProps)for(var S in t.modeProps)r[S]=t.modeProps[S];return r}var bt={};function St(e,t){var i=bt.hasOwnProperty(e)?bt[e]:bt[e]={};ve(t,i)}function dt(e,t){if(t===!0)return t;if(e.copyState)return e.copyState(t);var i={};for(var r in t){var n=t[r];n instanceof Array&&(n=n.concat([])),i[r]=n}return i}function Tr(e,t){for(var i;e.innerMode&&(i=e.innerMode(t),!(!i||i.mode==e));)t=i.state,e=i.mode;return i||{mode:e,state:t}}function Ar(e,t,i){return e.startState?e.startState(t,i):!0}var Ie=function(e,t,i){this.pos=this.start=0,this.string=e,this.tabSize=t||8,this.lastColumnPos=this.lastColumnValue=0,this.lineStart=0,this.lineOracle=i};Ie.prototype.eol=function(){return this.pos>=this.string.length},Ie.prototype.sol=function(){return this.pos==this.lineStart},Ie.prototype.peek=function(){return this.string.charAt(this.pos)||void 0},Ie.prototype.next=function(){if(this.post},Ie.prototype.eatSpace=function(){for(var e=this.pos;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>e},Ie.prototype.skipToEnd=function(){this.pos=this.string.length},Ie.prototype.skipTo=function(e){var t=this.string.indexOf(e,this.pos);if(t>-1)return this.pos=t,!0},Ie.prototype.backUp=function(e){this.pos-=e},Ie.prototype.column=function(){return this.lastColumnPos0?null:(h&&t!==!1&&(this.pos+=h[0].length),h)}},Ie.prototype.current=function(){return this.string.slice(this.start,this.pos)},Ie.prototype.hideFirstChars=function(e,t){this.lineStart+=e;try{return t()}finally{this.lineStart-=e}},Ie.prototype.lookAhead=function(e){var t=this.lineOracle;return t&&t.lookAhead(e)},Ie.prototype.baseToken=function(){var e=this.lineOracle;return e&&e.baseToken(this.pos)};function me(e,t){if(t-=e.first,t<0||t>=e.size)throw new Error("There is no line "+(t+e.first)+" in the document.");for(var i=e;!i.lines;)for(var r=0;;++r){var n=i.children[r],h=n.chunkSize();if(t=e.first&&ti?le(i,me(e,i).text.length):Ze(t,me(e,t.line).text.length)}function Ze(e,t){var i=e.ch;return i==null||i>t?le(e.line,t):i<0?le(e.line,0):e}function _t(e,t){for(var i=[],r=0;rthis.maxLookAhead&&(this.maxLookAhead=e),t},Ut.prototype.baseToken=function(e){if(!this.baseTokens)return null;for(;this.baseTokens[this.baseTokenPos]<=e;)this.baseTokenPos+=2;var t=this.baseTokens[this.baseTokenPos+1];return{type:t&&t.replace(/( |^)overlay .*/,""),size:this.baseTokens[this.baseTokenPos]-e}},Ut.prototype.nextLine=function(){this.line++,this.maxLookAhead>0&&this.maxLookAhead--},Ut.fromSaved=function(e,t,i){return t instanceof Rr?new Ut(e,dt(e.mode,t.state),i,t.lookAhead):new Ut(e,dt(e.mode,t),i)},Ut.prototype.save=function(e){var t=e!==!1?dt(this.doc.mode,this.state):this.state;return this.maxLookAhead>0?new Rr(t,this.maxLookAhead):t};function Bi(e,t,i,r){var n=[e.state.modeGen],h={};cn(e,t.text,e.doc.mode,i,function(P,z){return n.push(P,z)},h,r);for(var S=i.state,x=function(P){i.baseTokens=n;var z=e.state.overlays[P],Z=1,Q=0;i.state=!0,cn(e,t.text,z.mode,i,function(J,re){for(var ae=Z;QJ&&n.splice(Z,1,J,n[Z+1],ue),Z+=2,Q=Math.min(J,ue)}if(!!re)if(z.opaque)n.splice(ae,Z-ae,J,"overlay "+re),Z=ae+2;else for(;aee.options.maxHighlightLength&&dt(e.doc.mode,r.state),h=Bi(e,t,r);n&&(r.state=n),t.stateAfter=r.save(!n),t.styles=h.styles,h.classes?t.styleClasses=h.classes:t.styleClasses&&(t.styleClasses=null),i===e.doc.highlightFrontier&&(e.doc.modeFrontier=Math.max(e.doc.modeFrontier,++e.doc.highlightFrontier))}return t.styles}function Kr(e,t,i){var r=e.doc,n=e.display;if(!r.mode.startState)return new Ut(r,!0,t);var h=yo(e,t,i),S=h>r.first&&me(r,h-1).stateAfter,x=S?Ut.fromSaved(r,S,h):new Ut(r,Ar(r.mode),h);return r.iter(h,t,function(O){gi(e,O.text,x);var P=x.line;O.stateAfter=P==t-1||P%5==0||P>=n.viewFrom&&Pt.start)return h}throw new Error("Mode "+e.name+" failed to advance stream.")}var Hi=function(e,t,i){this.start=e.start,this.end=e.pos,this.string=e.current(),this.type=t||null,this.state=i};function Fi(e,t,i,r){var n=e.doc,h=n.mode,S;t=pe(n,t);var x=me(n,t.line),O=Kr(e,t.line,i),P=new Ie(x.text,e.options.tabSize,O),z;for(r&&(z=[]);(r||P.pose.options.maxHighlightLength?(x=!1,S&&gi(e,t,r,z.pos),z.pos=t.length,Z=null):Z=Ni(_i(i,z,r.state,Q),h),Q){var J=Q[0].name;J&&(Z="m-"+(Z?J+" "+Z:J))}if(!x||P!=Z){for(;OS;--x){if(x<=h.first)return h.first;var O=me(h,x-1),P=O.stateAfter;if(P&&(!i||x+(P instanceof Rr?P.lookAhead:0)<=h.modeFrontier))return x;var z=Ee(O.text,null,e.options.tabSize);(n==null||r>z)&&(n=x-1,r=z)}return n}function In(e,t){if(e.modeFrontier=Math.min(e.modeFrontier,t),!(e.highlightFrontieri;r--){var n=me(e,r).stateAfter;if(n&&(!(n instanceof Rr)||r+n.lookAhead=t:h.to>t);(r||(r=[])).push(new te(S,h.from,O?null:h.to))}}return r}function tr(e,t,i){var r;if(e)for(var n=0;n=t:h.to>t);if(x||h.from==t&&S.type=="bookmark"&&(!i||h.marker.insertLeft)){var O=h.from==null||(S.inclusiveLeft?h.from<=t:h.from0&&x)for(var ye=0;ye0)){var z=[O,1],Z=I(P.from,x.from),Q=I(P.to,x.to);(Z<0||!S.inclusiveLeft&&!Z)&&z.push({from:P.from,to:x.from}),(Q>0||!S.inclusiveRight&&!Q)&&z.push({from:x.to,to:P.to}),n.splice.apply(n,z),O+=z.length-3}}return n}function Vt(e){var t=e.markedSpans;if(!!t){for(var i=0;it)&&(!r||Br(r,h.marker)<0)&&(r=h.marker)}return r}function qt(e,t,i,r,n){var h=me(e,t),S=vr&&h.markedSpans;if(S)for(var x=0;x=0&&Z<=0||z<=0&&Z>=0)&&(z<=0&&(O.marker.inclusiveRight&&n.inclusiveLeft?I(P.to,i)>=0:I(P.to,i)>0)||z>=0&&(O.marker.inclusiveRight&&n.inclusiveLeft?I(P.from,r)<=0:I(P.from,r)<0)))return!0}}}function nt(e){for(var t;t=Lt(e);)e=t.find(-1,!0).line;return e}function Gr(e){for(var t;t=Ue(e);)e=t.find(1,!0).line;return e}function Wi(e){for(var t,i;t=Ue(e);)e=t.find(1,!0).line,(i||(i=[])).push(e);return i}function rr(e,t){var i=me(e,t),r=nt(i);return i==r?t:Re(r)}function Xr(e,t){if(t>e.lastLine())return t;var i=me(e,t),r;if(!xt(e,i))return t;for(;r=Ue(i);)i=r.find(1,!0).line;return Re(i)+1}function xt(e,t){var i=vr&&t.markedSpans;if(i){for(var r=void 0,n=0;nt.maxLineLength&&(t.maxLineLength=n,t.maxLine=r)})}var ni=function(e,t,i){this.text=e,ii(this,t),this.height=i?i(this):1};ni.prototype.lineNo=function(){return Re(this)},At(ni);function lc(e,t,i,r){e.text=t,e.stateAfter&&(e.stateAfter=null),e.styles&&(e.styles=null),e.order!=null&&(e.order=null),Vt(e),ii(e,i);var n=r?r(e):1;n!=e.height&&it(e,n)}function cc(e){e.parent=null,Vt(e)}var uc={},fc={};function Ds(e,t){if(!e||/^\s*$/.test(e))return null;var i=t.addModeClass?fc:uc;return i[e]||(i[e]=e.replace(/\S+/g,"cm-$&"))}function Bs(e,t){var i=B("span",null,null,v?"padding-right: .1px":null),r={pre:B("pre",[i],"CodeMirror-line"),content:i,col:0,pos:0,cm:e,trailingSpace:!1,splitSpaces:e.getOption("lineWrapping")};t.measure={};for(var n=0;n<=(t.rest?t.rest.length:0);n++){var h=n?t.rest[n-1]:t.line,S=void 0;r.pos=0,r.addToken=dc,Mt(e.display.measure)&&(S=ut(h,e.doc.direction))&&(r.addToken=vc(r.addToken,S)),r.map=[];var x=t!=e.display.externalMeasured&&Re(h);gc(h,r,Pi(e,h,x)),h.styleClasses&&(h.styleClasses.bgClass&&(r.bgClass=ne(h.styleClasses.bgClass,r.bgClass||"")),h.styleClasses.textClass&&(r.textClass=ne(h.styleClasses.textClass,r.textClass||""))),r.map.length==0&&r.map.push(0,0,r.content.appendChild(jr(e.display.measure))),n==0?(t.measure.map=r.map,t.measure.cache={}):((t.measure.maps||(t.measure.maps=[])).push(r.map),(t.measure.caches||(t.measure.caches=[])).push({}))}if(v){var O=r.content.lastChild;(/\bcm-tab\b/.test(O.className)||O.querySelector&&O.querySelector(".cm-tab"))&&(r.content.className="cm-tab-wrap-hack")}return ke(e,"renderLine",e,t.line,r.pre),r.pre.className&&(r.textClass=ne(r.pre.className,r.textClass||"")),r}function hc(e){var t=W("span","\u2022","cm-invalidchar");return t.title="\\u"+e.charCodeAt(0).toString(16),t.setAttribute("aria-label",t.title),t}function dc(e,t,i,r,n,h,S){if(!!t){var x=e.splitSpaces?pc(t,e.trailingSpace):t,O=e.cm.state.specialChars,P=!1,z;if(!O.test(t))e.col+=t.length,z=document.createTextNode(x),e.map.push(e.pos,e.pos+t.length,z),m&&_<9&&(P=!0),e.pos+=t.length;else{z=document.createDocumentFragment();for(var Z=0;;){O.lastIndex=Z;var Q=O.exec(t),J=Q?Q.index-Z:t.length-Z;if(J){var re=document.createTextNode(x.slice(Z,Z+J));m&&_<9?z.appendChild(W("span",[re])):z.appendChild(re),e.map.push(e.pos,e.pos+J,re),e.col+=J,e.pos+=J}if(!Q)break;Z+=J+1;var ae=void 0;if(Q[0]==" "){var ue=e.cm.options.tabSize,he=ue-e.col%ue;ae=z.appendChild(W("span",Fe(he),"cm-tab")),ae.setAttribute("role","presentation"),ae.setAttribute("cm-text"," "),e.col+=he}else Q[0]=="\r"||Q[0]==` -`?(ae=z.appendChild(W("span",Q[0]=="\r"?"\u240D":"\u2424","cm-invalidchar")),ae.setAttribute("cm-text",Q[0]),e.col+=1):(ae=e.cm.options.specialCharPlaceholder(Q[0]),ae.setAttribute("cm-text",Q[0]),m&&_<9?z.appendChild(W("span",[ae])):z.appendChild(ae),e.col+=1);e.map.push(e.pos,e.pos+1,ae),e.pos++}}if(e.trailingSpace=x.charCodeAt(t.length-1)==32,i||r||n||P||h||S){var ge=i||"";r&&(ge+=r),n&&(ge+=n);var de=W("span",[z],ge,h);if(S)for(var ye in S)S.hasOwnProperty(ye)&&ye!="style"&&ye!="class"&&de.setAttribute(ye,S[ye]);return e.content.appendChild(de)}e.content.appendChild(z)}}function pc(e,t){if(e.length>1&&!/ /.test(e))return e;for(var i=t,r="",n=0;nP&&Z.from<=P));Q++);if(Z.to>=z)return e(i,r,n,h,S,x,O);e(i,r.slice(0,Z.to-P),n,h,null,x,O),h=null,r=r.slice(Z.to-P),P=Z.to}}}function Ps(e,t,i,r){var n=!r&&i.widgetNode;n&&e.map.push(e.pos,e.pos+t,n),!r&&e.cm.display.input.needsContentAttribute&&(n||(n=e.content.appendChild(document.createElement("span"))),n.setAttribute("cm-marker",i.id)),n&&(e.cm.display.input.setUneditable(n),e.content.appendChild(n)),e.pos+=t,e.trailingSpace=!1}function gc(e,t,i){var r=e.markedSpans,n=e.text,h=0;if(!r){for(var S=1;SO||Me.collapsed&&Le.to==O&&Le.from==O)){if(Le.to!=null&&Le.to!=O&&J>Le.to&&(J=Le.to,ae=""),Me.className&&(re+=" "+Me.className),Me.css&&(Q=(Q?Q+";":"")+Me.css),Me.startStyle&&Le.from==O&&(ue+=" "+Me.startStyle),Me.endStyle&&Le.to==J&&(ye||(ye=[])).push(Me.endStyle,Le.to),Me.title&&((ge||(ge={})).title=Me.title),Me.attributes)for(var He in Me.attributes)(ge||(ge={}))[He]=Me.attributes[He];Me.collapsed&&(!he||Br(he.marker,Me)<0)&&(he=Le)}else Le.from>O&&J>Le.from&&(J=Le.from)}if(ye)for(var lt=0;lt=x)break;for(var Gt=Math.min(x,J);;){if(z){var It=O+z.length;if(!he){var Ve=It>Gt?z.slice(0,Gt-O):z;t.addToken(t,Ve,Z?Z+re:re,ue,O+Ve.length==J?ae:"",Q,ge)}if(It>=Gt){z=z.slice(Gt-O),O=Gt;break}O=It,ue=""}z=n.slice(h,h=i[P++]),Z=Ds(i[P++],t.cm.options)}}}function Is(e,t,i){this.line=t,this.rest=Wi(t),this.size=this.rest?Re(Ae(this.rest))-i+1:1,this.node=this.text=null,this.hidden=xt(e,t)}function Hn(e,t,i){for(var r=[],n,h=t;h2&&h.push((O.bottom+P.top)/2-i.top)}}h.push(i.bottom-i.top)}}function zs(e,t,i){if(e.line==t)return{map:e.measure.map,cache:e.measure.cache};if(e.rest){for(var r=0;ri)return{map:e.measure.maps[n],cache:e.measure.caches[n],before:!0}}}function Ec(e,t){t=nt(t);var i=Re(t),r=e.display.externalMeasured=new Is(e.doc,t,i);r.lineN=i;var n=r.built=Bs(e,r);return r.text=n.pre,D(e.display.lineMeasure,n.pre),r}function qs(e,t,i,r){return Ir(e,Ui(e,t),i,r)}function wo(e,t){if(t>=e.display.viewFrom&&t=i.lineN&&tt)&&(h=O-x,n=h-1,t>=O&&(S="right")),n!=null){if(r=e[P+2],x==O&&i==(r.insertLeft?"left":"right")&&(S=i),i=="left"&&n==0)for(;P&&e[P-2]==e[P-3]&&e[P-1].insertLeft;)r=e[(P-=3)+2],S="left";if(i=="right"&&n==O-x)for(;P=0&&(i=e[n]).left==i.right;n--);return i}function Ac(e,t,i,r){var n=Gs(t.map,i,r),h=n.node,S=n.start,x=n.end,O=n.collapse,P;if(h.nodeType==3){for(var z=0;z<4;z++){for(;S&&Nr(t.line.text.charAt(n.coverStart+S));)--S;for(;n.coverStart+x0&&(O=r="right");var Z;e.options.lineWrapping&&(Z=h.getClientRects()).length>1?P=Z[r=="right"?Z.length-1:0]:P=h.getBoundingClientRect()}if(m&&_<9&&!S&&(!P||!P.left&&!P.right)){var Q=h.parentNode.getClientRects()[0];Q?P={left:Q.left,right:Q.left+qi(e.display),top:Q.top,bottom:Q.bottom}:P=Ks}for(var J=P.top-t.rect.top,re=P.bottom-t.rect.top,ae=(J+re)/2,ue=t.view.measure.heights,he=0;he=r.text.length?(O=r.text.length,P="before"):O<=0&&(O=0,P="after"),!x)return S(P=="before"?O-1:O,P=="before");function z(re,ae,ue){var he=x[ae],ge=he.level==1;return S(ue?re-1:re,ge!=ue)}var Z=Ne(x,O,P),Q=vt,J=z(O,Z,P=="before");return Q!=null&&(J.other=z(O,Q,P!="before")),J}function Js(e,t){var i=0;t=pe(e.doc,t),e.options.lineWrapping||(i=qi(e.display)*t.ch);var r=me(e.doc,t.line),n=$t(r)+Fn(e.display);return{left:i,right:i,top:n,bottom:n+r.height}}function xo(e,t,i,r,n){var h=le(e,t,i);return h.xRel=n,r&&(h.outside=r),h}function ko(e,t,i){var r=e.doc;if(i+=e.display.viewOffset,i<0)return xo(r.first,0,null,-1,-1);var n=Rt(r,i),h=r.first+r.size-1;if(n>h)return xo(r.first+r.size-1,me(r,h).text.length,null,1,1);t<0&&(t=0);for(var S=me(r,n);;){var x=Oc(e,S,n,t,i),O=_r(S,x.ch+(x.xRel>0||x.outside>0?1:0));if(!O)return x;var P=O.find(1);if(P.line==n)return P;S=me(r,n=P.line)}}function Qs(e,t,i,r){r-=Lo(t);var n=t.text.length,h=Nt(function(S){return Ir(e,i,S-1).bottom<=r},n,0);return n=Nt(function(S){return Ir(e,i,S).top>r},h,n),{begin:h,end:n}}function ea(e,t,i,r){i||(i=Ui(e,t));var n=Nn(e,t,Ir(e,i,r),"line").top;return Qs(e,t,i,n)}function Eo(e,t,i,r){return e.bottom<=i?!1:e.top>i?!0:(r?e.left:e.right)>t}function Oc(e,t,i,r,n){n-=$t(t);var h=Ui(e,t),S=Lo(t),x=0,O=t.text.length,P=!0,z=ut(t,e.doc.direction);if(z){var Z=(e.options.lineWrapping?Dc:Rc)(e,t,i,h,z,r,n);P=Z.level!=1,x=P?Z.from:Z.to-1,O=P?Z.to:Z.from-1}var Q=null,J=null,re=Nt(function(xe){var Le=Ir(e,h,xe);return Le.top+=S,Le.bottom+=S,Eo(Le,r,n,!1)?(Le.top<=n&&Le.left<=r&&(Q=xe,J=Le),!0):!1},x,O),ae,ue,he=!1;if(J){var ge=r-J.left=ye.bottom?1:0}return re=ti(t.text,re,1),xo(i,re,ue,he,r-ae)}function Rc(e,t,i,r,n,h,S){var x=Nt(function(Z){var Q=n[Z],J=Q.level!=1;return Eo(mr(e,le(i,J?Q.to:Q.from,J?"before":"after"),"line",t,r),h,S,!0)},0,n.length-1),O=n[x];if(x>0){var P=O.level!=1,z=mr(e,le(i,P?O.from:O.to,P?"after":"before"),"line",t,r);Eo(z,h,S,!0)&&z.top>S&&(O=n[x-1])}return O}function Dc(e,t,i,r,n,h,S){var x=Qs(e,t,r,S),O=x.begin,P=x.end;/\s/.test(t.text.charAt(P-1))&&P--;for(var z=null,Z=null,Q=0;Q=P||J.to<=O)){var re=J.level!=1,ae=Ir(e,r,re?Math.min(P,J.to)-1:Math.max(O,J.from)).right,ue=aeue)&&(z=J,Z=ue)}}return z||(z=n[n.length-1]),z.fromP&&(z={from:z.from,to:P,level:z.level}),z}var Ci;function zi(e){if(e.cachedTextHeight!=null)return e.cachedTextHeight;if(Ci==null){Ci=W("pre",null,"CodeMirror-line-like");for(var t=0;t<49;++t)Ci.appendChild(document.createTextNode("x")),Ci.appendChild(W("br"));Ci.appendChild(document.createTextNode("x"))}D(e.measure,Ci);var i=Ci.offsetHeight/50;return i>3&&(e.cachedTextHeight=i),N(e.measure),i||1}function qi(e){if(e.cachedCharWidth!=null)return e.cachedCharWidth;var t=W("span","xxxxxxxxxx"),i=W("pre",[t],"CodeMirror-line-like");D(e.measure,i);var r=t.getBoundingClientRect(),n=(r.right-r.left)/10;return n>2&&(e.cachedCharWidth=n),n||10}function To(e){for(var t=e.display,i={},r={},n=t.gutters.clientLeft,h=t.gutters.firstChild,S=0;h;h=h.nextSibling,++S){var x=e.display.gutterSpecs[S].className;i[x]=h.offsetLeft+h.clientLeft+n,r[x]=h.clientWidth}return{fixedPos:Ao(t),gutterTotalWidth:t.gutters.offsetWidth,gutterLeft:i,gutterWidth:r,wrapperWidth:t.wrapper.clientWidth}}function Ao(e){return e.scroller.getBoundingClientRect().left-e.sizer.getBoundingClientRect().left}function ta(e){var t=zi(e.display),i=e.options.lineWrapping,r=i&&Math.max(5,e.display.scroller.clientWidth/qi(e.display)-3);return function(n){if(xt(e.doc,n))return 0;var h=0;if(n.widgets)for(var S=0;S0&&(P=me(e.doc,O.line).text).length==O.ch){var z=Ee(P,P.length,e.options.tabSize)-P.length;O=le(O.line,Math.max(0,Math.round((h-Us(e.display).left)/qi(e.display))-z))}return O}function Li(e,t){if(t>=e.display.viewTo||(t-=e.display.viewFrom,t<0))return null;for(var i=e.display.view,r=0;rt)&&(n.updateLineNumbers=t),e.curOp.viewChanged=!0,t>=n.viewTo)vr&&rr(e.doc,t)n.viewFrom?si(e):(n.viewFrom+=r,n.viewTo+=r);else if(t<=n.viewFrom&&i>=n.viewTo)si(e);else if(t<=n.viewFrom){var h=jn(e,i,i+r,1);h?(n.view=n.view.slice(h.index),n.viewFrom=h.lineN,n.viewTo+=r):si(e)}else if(i>=n.viewTo){var S=jn(e,t,t,-1);S?(n.view=n.view.slice(0,S.index),n.viewTo=S.lineN):si(e)}else{var x=jn(e,t,t,-1),O=jn(e,i,i+r,1);x&&O?(n.view=n.view.slice(0,x.index).concat(Hn(e,x.lineN,O.lineN)).concat(n.view.slice(O.index)),n.viewTo+=r):si(e)}var P=n.externalMeasured;P&&(i=n.lineN&&t=r.viewTo)){var h=r.view[Li(e,t)];if(h.node!=null){var S=h.changes||(h.changes=[]);ee(S,i)==-1&&S.push(i)}}}function si(e){e.display.viewFrom=e.display.viewTo=e.doc.first,e.display.view=[],e.display.viewOffset=0}function jn(e,t,i,r){var n=Li(e,t),h,S=e.display.view;if(!vr||i==e.doc.first+e.doc.size)return{index:n,lineN:i};for(var x=e.display.viewFrom,O=0;O0){if(n==S.length-1)return null;h=x+S[n].size-t,n++}else h=x-t;t+=h,i+=h}for(;rr(e.doc,i)!=i;){if(n==(r<0?0:S.length-1))return null;i+=r*S[n-(r<0?1:0)].size,n+=r}return{index:n,lineN:i}}function Bc(e,t,i){var r=e.display,n=r.view;n.length==0||t>=r.viewTo||i<=r.viewFrom?(r.view=Hn(e,t,i),r.viewFrom=t):(r.viewFrom>t?r.view=Hn(e,t,r.viewFrom).concat(r.view):r.viewFromi&&(r.view=r.view.slice(0,Li(e,i)))),r.viewTo=i}function ra(e){for(var t=e.display.view,i=0,r=0;r=e.display.viewTo||O.to().line0?S:e.defaultCharWidth())+"px"}if(r.other){var x=i.appendChild(W("div","\xA0","CodeMirror-cursor CodeMirror-secondarycursor"));x.style.display="",x.style.left=r.other.left+"px",x.style.top=r.other.top+"px",x.style.height=(r.other.bottom-r.other.top)*.85+"px"}}function Un(e,t){return e.top-t.top||e.left-t.left}function Pc(e,t,i){var r=e.display,n=e.doc,h=document.createDocumentFragment(),S=Us(e.display),x=S.left,O=Math.max(r.sizerWidth,Si(e)-r.sizer.offsetLeft)-S.right,P=n.direction=="ltr";function z(de,ye,xe,Le){ye<0&&(ye=0),ye=Math.round(ye),Le=Math.round(Le),h.appendChild(W("div",null,"CodeMirror-selected","position: absolute; left: "+de+`px; - top: `+ye+"px; width: "+(xe??O-de)+`px; - height: `+(Le-ye)+"px"))}function Z(de,ye,xe){var Le=me(n,de),Me=Le.text.length,He,lt;function qe(Ve,Ht){return Wn(e,le(de,Ve),"div",Le,Ht)}function Gt(Ve,Ht,pt){var rt=ea(e,Le,null,Ve),$e=Ht=="ltr"==(pt=="after")?"left":"right",Ge=pt=="after"?rt.begin:rt.end-(/\s/.test(Le.text.charAt(rt.end-1))?2:1);return qe(Ge,$e)[$e]}var It=ut(Le,n.direction);return vi(It,ye||0,xe??Me,function(Ve,Ht,pt,rt){var $e=pt=="ltr",Ge=qe(Ve,$e?"left":"right"),Ft=qe(Ht-1,$e?"right":"left"),nn=ye==null&&Ve==0,hi=xe==null&&Ht==Me,mt=rt==0,Hr=!It||rt==It.length-1;if(Ft.top-Ge.top<=3){var ct=(P?nn:hi)&&mt,is=(P?hi:nn)&&Hr,$r=ct?x:($e?Ge:Ft).left,Ai=is?O:($e?Ft:Ge).right;z($r,Ge.top,Ai-$r,Ge.bottom)}else{var Mi,Et,on,ns;$e?(Mi=P&&nn&&mt?x:Ge.left,Et=P?O:Gt(Ve,pt,"before"),on=P?x:Gt(Ht,pt,"after"),ns=P&&hi&&Hr?O:Ft.right):(Mi=P?Gt(Ve,pt,"before"):x,Et=!P&&nn&&mt?O:Ge.right,on=!P&&hi&&Hr?x:Ft.left,ns=P?Gt(Ht,pt,"after"):O),z(Mi,Ge.top,Et-Mi,Ge.bottom),Ge.bottom0?t.blinker=setInterval(function(){e.hasFocus()||Ki(e),t.cursorDiv.style.visibility=(i=!i)?"":"hidden"},e.options.cursorBlinkRate):e.options.cursorBlinkRate<0&&(t.cursorDiv.style.visibility="hidden")}}function na(e){e.hasFocus()||(e.display.input.focus(),e.state.focused||Bo(e))}function Do(e){e.state.delayingBlurEvent=!0,setTimeout(function(){e.state.delayingBlurEvent&&(e.state.delayingBlurEvent=!1,e.state.focused&&Ki(e))},100)}function Bo(e,t){e.state.delayingBlurEvent&&!e.state.draggingText&&(e.state.delayingBlurEvent=!1),e.options.readOnly!="nocursor"&&(e.state.focused||(ke(e,"focus",e,t),e.state.focused=!0,$(e.display.wrapper,"CodeMirror-focused"),!e.curOp&&e.display.selForContextMenu!=e.doc.sel&&(e.display.input.reset(),v&&setTimeout(function(){return e.display.input.reset(!0)},20)),e.display.input.receivedFocus()),Ro(e))}function Ki(e,t){e.state.delayingBlurEvent||(e.state.focused&&(ke(e,"blur",e,t),e.state.focused=!1,M(e.display.wrapper,"CodeMirror-focused")),clearInterval(e.display.blinker),setTimeout(function(){e.state.focused||(e.display.shift=!1)},150))}function zn(e){for(var t=e.display,i=t.lineDiv.offsetTop,r=Math.max(0,t.scroller.getBoundingClientRect().top),n=t.lineDiv.getBoundingClientRect().top,h=0,S=0;S.005||J<-.005)&&(ne.display.sizerWidth){var ae=Math.ceil(z/qi(e.display));ae>e.display.maxLineLength&&(e.display.maxLineLength=ae,e.display.maxLine=x.line,e.display.maxLineChanged=!0)}}}Math.abs(h)>2&&(t.scroller.scrollTop+=h)}function oa(e){if(e.widgets)for(var t=0;t=S&&(h=Rt(t,$t(me(t,O))-e.wrapper.clientHeight),S=O)}return{from:h,to:Math.max(S,h+1)}}function Ic(e,t){if(!We(e,"scrollCursorIntoView")){var i=e.display,r=i.sizer.getBoundingClientRect(),n=null;if(t.top+r.top<0?n=!0:t.bottom+r.top>(window.innerHeight||document.documentElement.clientHeight)&&(n=!1),n!=null&&!d){var h=W("div","\u200B",null,`position: absolute; - top: `+(t.top-i.viewOffset-Fn(e.display))+`px; - height: `+(t.bottom-t.top+Pr(e)+i.barHeight)+`px; - left: `+t.left+"px; width: "+Math.max(2,t.right-t.left)+"px;");e.display.lineSpace.appendChild(h),h.scrollIntoView(n),e.display.lineSpace.removeChild(h)}}}function Hc(e,t,i,r){r==null&&(r=0);var n;!e.options.lineWrapping&&t==i&&(i=t.sticky=="before"?le(t.line,t.ch+1,"before"):t,t=t.ch?le(t.line,t.sticky=="before"?t.ch-1:t.ch,"after"):t);for(var h=0;h<5;h++){var S=!1,x=mr(e,t),O=!i||i==t?x:mr(e,i);n={left:Math.min(x.left,O.left),top:Math.min(x.top,O.top)-r,right:Math.max(x.left,O.left),bottom:Math.max(x.bottom,O.bottom)+r};var P=Po(e,n),z=e.doc.scrollTop,Z=e.doc.scrollLeft;if(P.scrollTop!=null&&(_n(e,P.scrollTop),Math.abs(e.doc.scrollTop-z)>1&&(S=!0)),P.scrollLeft!=null&&(xi(e,P.scrollLeft),Math.abs(e.doc.scrollLeft-Z)>1&&(S=!0)),!S)break}return n}function Fc(e,t){var i=Po(e,t);i.scrollTop!=null&&_n(e,i.scrollTop),i.scrollLeft!=null&&xi(e,i.scrollLeft)}function Po(e,t){var i=e.display,r=zi(e.display);t.top<0&&(t.top=0);var n=e.curOp&&e.curOp.scrollTop!=null?e.curOp.scrollTop:i.scroller.scrollTop,h=Co(e),S={};t.bottom-t.top>h&&(t.bottom=t.top+h);var x=e.doc.height+So(i),O=t.topx-r;if(t.topn+h){var z=Math.min(t.top,(P?x:t.bottom)-h);z!=n&&(S.scrollTop=z)}var Z=e.options.fixedGutter?0:i.gutters.offsetWidth,Q=e.curOp&&e.curOp.scrollLeft!=null?e.curOp.scrollLeft:i.scroller.scrollLeft-Z,J=Si(e)-i.gutters.offsetWidth,re=t.right-t.left>J;return re&&(t.right=t.left+J),t.left<10?S.scrollLeft=0:t.leftJ+Q-3&&(S.scrollLeft=t.right+(re?0:10)-J),S}function Io(e,t){t!=null&&(Kn(e),e.curOp.scrollTop=(e.curOp.scrollTop==null?e.doc.scrollTop:e.curOp.scrollTop)+t)}function Gi(e){Kn(e);var t=e.getCursor();e.curOp.scrollToPos={from:t,to:t,margin:e.options.cursorScrollMargin}}function gn(e,t,i){(t!=null||i!=null)&&Kn(e),t!=null&&(e.curOp.scrollLeft=t),i!=null&&(e.curOp.scrollTop=i)}function Nc(e,t){Kn(e),e.curOp.scrollToPos=t}function Kn(e){var t=e.curOp.scrollToPos;if(t){e.curOp.scrollToPos=null;var i=Js(e,t.from),r=Js(e,t.to);sa(e,i,r,t.margin)}}function sa(e,t,i,r){var n=Po(e,{left:Math.min(t.left,i.left),top:Math.min(t.top,i.top)-r,right:Math.max(t.right,i.right),bottom:Math.max(t.bottom,i.bottom)+r});gn(e,n.scrollLeft,n.scrollTop)}function _n(e,t){Math.abs(e.doc.scrollTop-t)<2||(E||Fo(e,{top:t}),aa(e,t,!0),E&&Fo(e),bn(e,100))}function aa(e,t,i){t=Math.max(0,Math.min(e.display.scroller.scrollHeight-e.display.scroller.clientHeight,t)),!(e.display.scroller.scrollTop==t&&!i)&&(e.doc.scrollTop=t,e.display.scrollbars.setScrollTop(t),e.display.scroller.scrollTop!=t&&(e.display.scroller.scrollTop=t))}function xi(e,t,i,r){t=Math.max(0,Math.min(t,e.display.scroller.scrollWidth-e.display.scroller.clientWidth)),!((i?t==e.doc.scrollLeft:Math.abs(e.doc.scrollLeft-t)<2)&&!r)&&(e.doc.scrollLeft=t,ha(e),e.display.scroller.scrollLeft!=t&&(e.display.scroller.scrollLeft=t),e.display.scrollbars.setScrollLeft(t))}function yn(e){var t=e.display,i=t.gutters.offsetWidth,r=Math.round(e.doc.height+So(e.display));return{clientHeight:t.scroller.clientHeight,viewHeight:t.wrapper.clientHeight,scrollWidth:t.scroller.scrollWidth,clientWidth:t.scroller.clientWidth,viewWidth:t.wrapper.clientWidth,barLeft:e.options.fixedGutter?i:0,docHeight:r,scrollHeight:r+Pr(e)+t.barHeight,nativeBarWidth:t.nativeBarWidth,gutterWidth:i}}var ki=function(e,t,i){this.cm=i;var r=this.vert=W("div",[W("div",null,null,"min-width: 1px")],"CodeMirror-vscrollbar"),n=this.horiz=W("div",[W("div",null,null,"height: 100%; min-height: 1px")],"CodeMirror-hscrollbar");r.tabIndex=n.tabIndex=-1,e(r),e(n),we(r,"scroll",function(){r.clientHeight&&t(r.scrollTop,"vertical")}),we(n,"scroll",function(){n.clientWidth&&t(n.scrollLeft,"horizontal")}),this.checkedZeroWidth=!1,m&&_<8&&(this.horiz.style.minHeight=this.vert.style.minWidth="18px")};ki.prototype.update=function(e){var t=e.scrollWidth>e.clientWidth+1,i=e.scrollHeight>e.clientHeight+1,r=e.nativeBarWidth;if(i){this.vert.style.display="block",this.vert.style.bottom=t?r+"px":"0";var n=e.viewHeight-(t?r:0);this.vert.firstChild.style.height=Math.max(0,e.scrollHeight-e.clientHeight+n)+"px"}else this.vert.scrollTop=0,this.vert.style.display="",this.vert.firstChild.style.height="0";if(t){this.horiz.style.display="block",this.horiz.style.right=i?r+"px":"0",this.horiz.style.left=e.barLeft+"px";var h=e.viewWidth-e.barLeft-(i?r:0);this.horiz.firstChild.style.width=Math.max(0,e.scrollWidth-e.clientWidth+h)+"px"}else this.horiz.style.display="",this.horiz.firstChild.style.width="0";return!this.checkedZeroWidth&&e.clientHeight>0&&(r==0&&this.zeroWidthHack(),this.checkedZeroWidth=!0),{right:i?r:0,bottom:t?r:0}},ki.prototype.setScrollLeft=function(e){this.horiz.scrollLeft!=e&&(this.horiz.scrollLeft=e),this.disableHoriz&&this.enableZeroWidthBar(this.horiz,this.disableHoriz,"horiz")},ki.prototype.setScrollTop=function(e){this.vert.scrollTop!=e&&(this.vert.scrollTop=e),this.disableVert&&this.enableZeroWidthBar(this.vert,this.disableVert,"vert")},ki.prototype.zeroWidthHack=function(){var e=a&&!C?"12px":"18px";this.horiz.style.height=this.vert.style.width=e,this.horiz.style.pointerEvents=this.vert.style.pointerEvents="none",this.disableHoriz=new U,this.disableVert=new U},ki.prototype.enableZeroWidthBar=function(e,t,i){e.style.pointerEvents="auto";function r(){var n=e.getBoundingClientRect(),h=i=="vert"?document.elementFromPoint(n.right-1,(n.top+n.bottom)/2):document.elementFromPoint((n.right+n.left)/2,n.bottom-1);h!=e?e.style.pointerEvents="none":t.set(1e3,r)}t.set(1e3,r)},ki.prototype.clear=function(){var e=this.horiz.parentNode;e.removeChild(this.horiz),e.removeChild(this.vert)};var mn=function(){};mn.prototype.update=function(){return{bottom:0,right:0}},mn.prototype.setScrollLeft=function(){},mn.prototype.setScrollTop=function(){},mn.prototype.clear=function(){};function Xi(e,t){t||(t=yn(e));var i=e.display.barWidth,r=e.display.barHeight;la(e,t);for(var n=0;n<4&&i!=e.display.barWidth||r!=e.display.barHeight;n++)i!=e.display.barWidth&&e.options.lineWrapping&&zn(e),la(e,yn(e)),i=e.display.barWidth,r=e.display.barHeight}function la(e,t){var i=e.display,r=i.scrollbars.update(t);i.sizer.style.paddingRight=(i.barWidth=r.right)+"px",i.sizer.style.paddingBottom=(i.barHeight=r.bottom)+"px",i.heightForcer.style.borderBottom=r.bottom+"px solid transparent",r.right&&r.bottom?(i.scrollbarFiller.style.display="block",i.scrollbarFiller.style.height=r.bottom+"px",i.scrollbarFiller.style.width=r.right+"px"):i.scrollbarFiller.style.display="",r.bottom&&e.options.coverGutterNextToScrollbar&&e.options.fixedGutter?(i.gutterFiller.style.display="block",i.gutterFiller.style.height=r.bottom+"px",i.gutterFiller.style.width=t.gutterWidth+"px"):i.gutterFiller.style.display=""}var ca={native:ki,null:mn};function ua(e){e.display.scrollbars&&(e.display.scrollbars.clear(),e.display.scrollbars.addClass&&M(e.display.wrapper,e.display.scrollbars.addClass)),e.display.scrollbars=new ca[e.options.scrollbarStyle](function(t){e.display.wrapper.insertBefore(t,e.display.scrollbarFiller),we(t,"mousedown",function(){e.state.focused&&setTimeout(function(){return e.display.input.focus()},0)}),t.setAttribute("cm-not-content","true")},function(t,i){i=="horizontal"?xi(e,t):_n(e,t)},e),e.display.scrollbars.addClass&&$(e.display.wrapper,e.display.scrollbars.addClass)}var Wc=0;function Ei(e){e.curOp={cm:e,viewChanged:!1,startHeight:e.doc.height,forceUpdate:!1,updateInput:0,typing:!1,changeObjs:null,cursorActivityHandlers:null,cursorActivityCalled:0,selectionChanged:!1,updateMaxLine:!1,scrollLeft:null,scrollTop:null,scrollToPos:null,focus:!1,id:++Wc,markArrays:null},_c(e.curOp)}function Ti(e){var t=e.curOp;t&&mc(t,function(i){for(var r=0;r=i.viewTo)||i.maxLineChanged&&t.options.lineWrapping,e.update=e.mustUpdate&&new Gn(t,e.mustUpdate&&{top:e.scrollTop,ensure:e.scrollToPos},e.forceUpdate)}function zc(e){e.updatedDisplay=e.mustUpdate&&Ho(e.cm,e.update)}function qc(e){var t=e.cm,i=t.display;e.updatedDisplay&&zn(t),e.barMeasure=yn(t),i.maxLineChanged&&!t.options.lineWrapping&&(e.adjustWidthTo=qs(t,i.maxLine,i.maxLine.text.length).left+3,t.display.sizerWidth=e.adjustWidthTo,e.barMeasure.scrollWidth=Math.max(i.scroller.clientWidth,i.sizer.offsetLeft+e.adjustWidthTo+Pr(t)+t.display.barWidth),e.maxScrollLeft=Math.max(0,i.sizer.offsetLeft+e.adjustWidthTo-Si(t))),(e.updatedDisplay||e.selectionChanged)&&(e.preparedSelection=i.input.prepareSelection())}function Kc(e){var t=e.cm;e.adjustWidthTo!=null&&(t.display.sizer.style.minWidth=e.adjustWidthTo+"px",e.maxScrollLeft=e.display.viewTo)){var i=+new Date+e.options.workTime,r=Kr(e,t.highlightFrontier),n=[];t.iter(r.line,Math.min(t.first+t.size,e.display.viewTo+500),function(h){if(r.line>=e.display.viewFrom){var S=h.styles,x=h.text.length>e.options.maxHighlightLength?dt(t.mode,r.state):null,O=Bi(e,h,r,!0);x&&(r.state=x),h.styles=O.styles;var P=h.styleClasses,z=O.classes;z?h.styleClasses=z:P&&(h.styleClasses=null);for(var Z=!S||S.length!=h.styles.length||P!=z&&(!P||!z||P.bgClass!=z.bgClass||P.textClass!=z.textClass),Q=0;!Z&&Qi)return bn(e,e.options.workDelay),!0}),t.highlightFrontier=r.line,t.modeFrontier=Math.max(t.modeFrontier,r.line),n.length&&Kt(e,function(){for(var h=0;h=i.viewFrom&&t.visible.to<=i.viewTo&&(i.updateLineNumbers==null||i.updateLineNumbers>=i.viewTo)&&i.renderedView==i.view&&ra(e)==0)return!1;da(e)&&(si(e),t.dims=To(e));var n=r.first+r.size,h=Math.max(t.visible.from-e.options.viewportMargin,r.first),S=Math.min(n,t.visible.to+e.options.viewportMargin);i.viewFromS&&i.viewTo-S<20&&(S=Math.min(n,i.viewTo)),vr&&(h=rr(e.doc,h),S=Xr(e.doc,S));var x=h!=i.viewFrom||S!=i.viewTo||i.lastWrapHeight!=t.wrapperHeight||i.lastWrapWidth!=t.wrapperWidth;Bc(e,h,S),i.viewOffset=$t(me(e.doc,i.viewFrom)),e.display.mover.style.top=i.viewOffset+"px";var O=ra(e);if(!x&&O==0&&!t.force&&i.renderedView==i.view&&(i.updateLineNumbers==null||i.updateLineNumbers>=i.viewTo))return!1;var P=Zc(e);return O>4&&(i.lineDiv.style.display="none"),$c(e,i.updateLineNumbers,t.dims),O>4&&(i.lineDiv.style.display=""),i.renderedView=i.view,Vc(P),N(i.cursorDiv),N(i.selectionDiv),i.gutters.style.height=i.sizer.style.minHeight=0,x&&(i.lastWrapHeight=t.wrapperHeight,i.lastWrapWidth=t.wrapperWidth,bn(e,400)),i.updateLineNumbers=null,!0}function fa(e,t){for(var i=t.viewport,r=!0;;r=!1){if(!r||!e.options.lineWrapping||t.oldDisplayWidth==Si(e)){if(i&&i.top!=null&&(i={top:Math.min(e.doc.height+So(e.display)-Co(e),i.top)}),t.visible=qn(e.display,e.doc,i),t.visible.from>=e.display.viewFrom&&t.visible.to<=e.display.viewTo)break}else r&&(t.visible=qn(e.display,e.doc,i));if(!Ho(e,t))break;zn(e);var n=yn(e);vn(e),Xi(e,n),Wo(e,n),t.force=!1}t.signal(e,"update",e),(e.display.viewFrom!=e.display.reportedViewFrom||e.display.viewTo!=e.display.reportedViewTo)&&(t.signal(e,"viewportChange",e,e.display.viewFrom,e.display.viewTo),e.display.reportedViewFrom=e.display.viewFrom,e.display.reportedViewTo=e.display.viewTo)}function Fo(e,t){var i=new Gn(e,t);if(Ho(e,i)){zn(e),fa(e,i);var r=yn(e);vn(e),Xi(e,r),Wo(e,r),i.finish()}}function $c(e,t,i){var r=e.display,n=e.options.lineNumbers,h=r.lineDiv,S=h.firstChild;function x(re){var ae=re.nextSibling;return v&&a&&e.display.currentWheelTarget==re?re.style.display="none":re.parentNode.removeChild(re),ae}for(var O=r.view,P=r.viewFrom,z=0;z-1&&(J=!1),Hs(e,Z,P,i)),J&&(N(Z.lineNumber),Z.lineNumber.appendChild(document.createTextNode(Or(e.options,P)))),S=Z.node.nextSibling}P+=Z.size}for(;S;)S=x(S)}function No(e){var t=e.gutters.offsetWidth;e.sizer.style.marginLeft=t+"px",ot(e,"gutterChanged",e)}function Wo(e,t){e.display.sizer.style.minHeight=t.docHeight+"px",e.display.heightForcer.style.top=t.docHeight+"px",e.display.gutters.style.height=t.docHeight+e.display.barHeight+Pr(e)+"px"}function ha(e){var t=e.display,i=t.view;if(!(!t.alignWidgets&&(!t.gutters.firstChild||!e.options.fixedGutter))){for(var r=Ao(t)-t.scroller.scrollLeft+e.doc.scrollLeft,n=t.gutters.offsetWidth,h=r+"px",S=0;Sx.clientWidth,P=x.scrollHeight>x.clientHeight;if(!!(r&&O||n&&P)){if(n&&a&&v){e:for(var z=t.target,Z=S.view;z!=x;z=z.parentNode)for(var Q=0;Q=0&&I(e,r.to())<=0)return i}return-1};var Be=function(e,t){this.anchor=e,this.head=t};Be.prototype.from=function(){return Te(this.anchor,this.head)},Be.prototype.to=function(){return ce(this.anchor,this.head)},Be.prototype.empty=function(){return this.head.line==this.anchor.line&&this.head.ch==this.anchor.ch};function br(e,t,i){var r=e&&e.options.selectionsMayTouch,n=t[i];t.sort(function(Q,J){return I(Q.from(),J.from())}),i=ee(t,n);for(var h=1;h0:O>=0){var P=Te(x.from(),S.from()),z=ce(x.to(),S.to()),Z=x.empty()?S.from()==S.head:x.from()==x.head;h<=i&&--i,t.splice(--h,2,new Be(Z?z:P,Z?P:z))}}return new Jt(t,i)}function ai(e,t){return new Jt([new Be(e,t||e)],0)}function li(e){return e.text?le(e.from.line+e.text.length-1,Ae(e.text).length+(e.text.length==1?e.from.ch:0)):e.to}function _a(e,t){if(I(e,t.from)<0)return e;if(I(e,t.to)<=0)return li(t);var i=e.line+t.text.length-(t.to.line-t.from.line)-1,r=e.ch;return e.line==t.to.line&&(r+=li(t).ch-t.to.ch),le(i,r)}function Uo(e,t){for(var i=[],r=0;r1&&e.remove(x.line+1,re-1),e.insert(x.line+1,he)}ot(e,"change",e,t)}function ci(e,t,i){function r(n,h,S){if(n.linked)for(var x=0;x1&&!e.done[e.done.length-2].ranges)return e.done.pop(),Ae(e.done)}function wa(e,t,i,r){var n=e.history;n.undone.length=0;var h=+new Date,S,x;if((n.lastOp==r||n.lastOrigin==t.origin&&t.origin&&(t.origin.charAt(0)=="+"&&n.lastModTime>h-(e.cm?e.cm.options.historyEventDelay:500)||t.origin.charAt(0)=="*"))&&(S=ru(n,n.lastOp==r)))x=Ae(S.changes),I(t.from,t.to)==0&&I(t.from,x.to)==0?x.to=li(t):S.changes.push(Ko(e,t));else{var O=Ae(n.done);for((!O||!O.ranges)&&Zn(e.sel,n.done),S={changes:[Ko(e,t)],generation:n.generation},n.done.push(S);n.done.length>n.undoDepth;)n.done.shift(),n.done[0].ranges||n.done.shift()}n.done.push(i),n.generation=++n.maxGeneration,n.lastModTime=n.lastSelTime=h,n.lastOp=n.lastSelOp=r,n.lastOrigin=n.lastSelOrigin=t.origin,x||ke(e,"historyAdded")}function iu(e,t,i,r){var n=t.charAt(0);return n=="*"||n=="+"&&i.ranges.length==r.ranges.length&&i.somethingSelected()==r.somethingSelected()&&new Date-e.history.lastSelTime<=(e.cm?e.cm.options.historyEventDelay:500)}function nu(e,t,i,r){var n=e.history,h=r&&r.origin;i==n.lastSelOp||h&&n.lastSelOrigin==h&&(n.lastModTime==n.lastSelTime&&n.lastOrigin==h||iu(e,h,Ae(n.done),t))?n.done[n.done.length-1]=t:Zn(t,n.done),n.lastSelTime=+new Date,n.lastSelOrigin=h,n.lastSelOp=i,r&&r.clearRedo!==!1&&Ca(n.undone)}function Zn(e,t){var i=Ae(t);i&&i.ranges&&i.equals(e)||t.push(e)}function La(e,t,i,r){var n=t["spans_"+e.id],h=0;e.iter(Math.max(e.first,i),Math.min(e.first+e.size,r),function(S){S.markedSpans&&((n||(n=t["spans_"+e.id]={}))[h]=S.markedSpans),++h})}function ou(e){if(!e)return null;for(var t,i=0;i-1&&(Ae(x)[Z]=P[Z],delete P[Z])}}return r}function Go(e,t,i,r){if(r){var n=e.anchor;if(i){var h=I(t,n)<0;h!=I(i,n)<0?(n=t,t=i):h!=I(t,i)<0&&(t=i)}return new Be(n,t)}else return new Be(i||t,t)}function Vn(e,t,i,r,n){n==null&&(n=e.cm&&(e.cm.display.shift||e.extend)),yt(e,new Jt([Go(e.sel.primary(),t,i,n)],0),r)}function ka(e,t,i){for(var r=[],n=e.cm&&(e.cm.display.shift||e.extend),h=0;h=t.ch:x.to>t.ch))){if(n&&(ke(O,"beforeCursorEnter"),O.explicitlyCleared))if(h.markedSpans){--S;continue}else break;if(!O.atomic)continue;if(i){var Z=O.find(r<0?1:-1),Q=void 0;if((r<0?z:P)&&(Z=Ra(e,Z,-r,Z&&Z.line==t.line?h:null)),Z&&Z.line==t.line&&(Q=I(Z,i))&&(r<0?Q<0:Q>0))return Zi(e,Z,t,r,n)}var J=O.find(r<0?-1:1);return(r<0?P:z)&&(J=Ra(e,J,r,J.line==t.line?h:null)),J?Zi(e,J,t,r,n):null}}return t}function Jn(e,t,i,r,n){var h=r||1,S=Zi(e,t,i,h,n)||!n&&Zi(e,t,i,h,!0)||Zi(e,t,i,-h,n)||!n&&Zi(e,t,i,-h,!0);return S||(e.cantEdit=!0,le(e.first,0))}function Ra(e,t,i,r){return i<0&&t.ch==0?t.line>e.first?pe(e,le(t.line-1)):null:i>0&&t.ch==(r||me(e,t.line)).text.length?t.line=0;--n)Pa(e,{from:r[n].from,to:r[n].to,text:n?[""]:t.text,origin:t.origin});else Pa(e,t)}}function Pa(e,t){if(!(t.text.length==1&&t.text[0]==""&&I(t.from,t.to)==0)){var i=Uo(e,t);wa(e,t,i,e.cm?e.cm.curOp.id:NaN),wn(e,t,i,zt(e,t));var r=[];ci(e,function(n,h){!h&&ee(r,n.history)==-1&&(Na(n.history,t),r.push(n.history)),wn(n,t,null,zt(n,t))})}}function Qn(e,t,i){var r=e.cm&&e.cm.state.suppressEdits;if(!(r&&!i)){for(var n=e.history,h,S=e.sel,x=t=="undo"?n.done:n.undone,O=t=="undo"?n.undone:n.done,P=0;P=0;--J){var re=Q(J);if(re)return re.v}}}}function Ia(e,t){if(t!=0&&(e.first+=t,e.sel=new Jt(_e(e.sel.ranges,function(n){return new Be(le(n.anchor.line+t,n.anchor.ch),le(n.head.line+t,n.head.ch))}),e.sel.primIndex),e.cm)){Bt(e.cm,e.first,e.first-t,t);for(var i=e.cm.display,r=i.viewFrom;re.lastLine())){if(t.from.lineh&&(t={from:t.from,to:le(h,me(e,h).text.length),text:[t.text[0]],origin:t.origin}),t.removed=Ot(e,t.from,t.to),i||(i=Uo(e,t)),e.cm?lu(e.cm,t,r):qo(e,t,r),$n(e,i,K),e.cantEdit&&Jn(e,le(e.firstLine(),0))&&(e.cantEdit=!1)}}function lu(e,t,i){var r=e.doc,n=e.display,h=t.from,S=t.to,x=!1,O=h.line;e.options.lineWrapping||(O=Re(nt(me(r,h.line))),r.iter(O,S.line+1,function(J){if(J==n.maxLine)return x=!0,!0})),r.sel.contains(t.from,t.to)>-1&&fr(e),qo(r,t,i,ta(e)),e.options.lineWrapping||(r.iter(O,h.line+t.text.length,function(J){var re=ir(J);re>n.maxLineLength&&(n.maxLine=J,n.maxLineLength=re,n.maxLineChanged=!0,x=!1)}),x&&(e.curOp.updateMaxLine=!0)),In(r,h.line),bn(e,400);var P=t.text.length-(S.line-h.line)-1;t.full?Bt(e):h.line==S.line&&t.text.length==1&&!ma(e.doc,t)?oi(e,h.line,"text"):Bt(e,h.line,S.line+1,P);var z=Ke(e,"changes"),Z=Ke(e,"change");if(Z||z){var Q={from:h,to:S,text:t.text,removed:t.removed,origin:t.origin};Z&&ot(e,"change",e,Q),z&&(e.curOp.changeObjs||(e.curOp.changeObjs=[])).push(Q)}e.display.selForContextMenu=null}function $i(e,t,i,r,n){var h;r||(r=i),I(r,i)<0&&(h=[r,i],i=h[0],r=h[1]),typeof t=="string"&&(t=e.splitLines(t)),Vi(e,{from:i,to:r,text:t,origin:n})}function Ha(e,t,i,r){i1||!(this.children[0]instanceof xn))){var x=[];this.collapse(x),this.children=[new xn(x)],this.children[0].parent=this}},collapse:function(e){for(var t=0;t50){for(var S=n.lines.length%25+25,x=S;x10);e.parent.maybeSpill()}},iterN:function(e,t,i){for(var r=0;re.display.maxLineLength&&(e.display.maxLine=P,e.display.maxLineLength=z,e.display.maxLineChanged=!0)}r!=null&&e&&this.collapsed&&Bt(e,r,n+1),this.lines.length=0,this.explicitlyCleared=!0,this.atomic&&this.doc.cantEdit&&(this.doc.cantEdit=!1,e&&Ma(e.doc)),e&&ot(e,"markerCleared",e,this,r,n),t&&Ti(e),this.parent&&this.parent.clear()}},ui.prototype.find=function(e,t){e==null&&this.type=="bookmark"&&(e=1);for(var i,r,n=0;n0||S==0&&h.clearWhenEmpty!==!1)return h;if(h.replacedWith&&(h.collapsed=!0,h.widgetNode=B("span",[h.replacedWith],"CodeMirror-widget"),r.handleMouseEvents||h.widgetNode.setAttribute("cm-ignore-events","true"),r.insertLeft&&(h.widgetNode.insertLeft=!0)),h.collapsed){if(qt(e,t.line,t,i,h)||t.line!=i.line&&qt(e,i.line,t,i,h))throw new Error("Inserting collapsed marker partially overlapping an existing one");se()}h.addToHistory&&wa(e,{from:t,to:i,origin:"markText"},e.sel,NaN);var x=t.line,O=e.cm,P;if(e.iter(x,i.line+1,function(Z){O&&h.collapsed&&!O.options.lineWrapping&&nt(Z)==O.display.maxLine&&(P=!0),h.collapsed&&x!=t.line&&it(Z,0),mi(Z,new te(h,x==t.line?t.ch:null,x==i.line?i.ch:null),e.cm&&e.cm.curOp),++x}),h.collapsed&&e.iter(t.line,i.line+1,function(Z){xt(e,Z)&&it(Z,0)}),h.clearOnEnter&&we(h,"beforeCursorEnter",function(){return h.clear()}),h.readOnly&&(mo(),(e.history.done.length||e.history.undone.length)&&e.clearHistory()),h.collapsed&&(h.id=++ja,h.atomic=!0),O){if(P&&(O.curOp.updateMaxLine=!0),h.collapsed)Bt(O,t.line,i.line+1);else if(h.className||h.startStyle||h.endStyle||h.css||h.attributes||h.title)for(var z=t.line;z<=i.line;z++)oi(O,z,"text");h.atomic&&Ma(O.doc),ot(O,"markerAdded",O,h)}return h}var Tn=function(e,t){this.markers=e,this.primary=t;for(var i=0;i=0;O--)Vi(this,r[O]);x?Ta(this,x):this.cm&&Gi(this.cm)}),undo:at(function(){Qn(this,"undo")}),redo:at(function(){Qn(this,"redo")}),undoSelection:at(function(){Qn(this,"undo",!0)}),redoSelection:at(function(){Qn(this,"redo",!0)}),setExtending:function(e){this.extend=e},getExtending:function(){return this.extend},historySize:function(){for(var e=this.history,t=0,i=0,r=0;r=e.ch)&&t.push(n.marker.parent||n.marker)}return t},findMarks:function(e,t,i){e=pe(this,e),t=pe(this,t);var r=[],n=e.line;return this.iter(e.line,t.line+1,function(h){var S=h.markedSpans;if(S)for(var x=0;x=O.to||O.from==null&&n!=e.line||O.from!=null&&n==t.line&&O.from>=t.ch)&&(!i||i(O.marker))&&r.push(O.marker.parent||O.marker)}++n}),r},getAllMarks:function(){var e=[];return this.iter(function(t){var i=t.markedSpans;if(i)for(var r=0;re)return t=e,!0;e-=h,++i}),pe(this,le(i,t))},indexFromPos:function(e){e=pe(this,e);var t=e.ch;if(e.linet&&(t=e.from),e.to!=null&&e.to-1){t.state.draggingText(e),setTimeout(function(){return t.display.input.focus()},20);return}try{var z=e.dataTransfer.getData("Text");if(z){var Z;if(t.state.draggingText&&!t.state.draggingText.copy&&(Z=t.listSelections()),$n(t.doc,ai(i,i)),Z)for(var Q=0;Q=0;x--)$i(e.doc,"",r[x].from,r[x].to,"+delete");Gi(e)})}function Yo(e,t,i){var r=ti(e.text,t+i,i);return r<0||r>e.text.length?null:r}function Zo(e,t,i){var r=Yo(e,t.ch,i);return r==null?null:new le(t.line,r,i<0?"after":"before")}function Vo(e,t,i,r,n){if(e){t.doc.direction=="rtl"&&(n=-n);var h=ut(i,t.doc.direction);if(h){var S=n<0?Ae(h):h[0],x=n<0==(S.level==1),O=x?"after":"before",P;if(S.level>0||t.doc.direction=="rtl"){var z=Ui(t,i);P=n<0?i.text.length-1:0;var Z=Ir(t,z,P).top;P=Nt(function(Q){return Ir(t,z,Q).top==Z},n<0==(S.level==1)?S.from:S.to-1,P),O=="before"&&(P=Yo(i,P,1))}else P=n<0?S.to:S.from;return new le(r,P,O)}}return new le(r,n<0?i.text.length:0,n<0?"before":"after")}function Cu(e,t,i,r){var n=ut(t,e.doc.direction);if(!n)return Zo(t,i,r);i.ch>=t.text.length?(i.ch=t.text.length,i.sticky="before"):i.ch<=0&&(i.ch=0,i.sticky="after");var h=Ne(n,i.ch,i.sticky),S=n[h];if(e.doc.direction=="ltr"&&S.level%2==0&&(r>0?S.to>i.ch:S.from=S.from&&Q>=z.begin)){var J=Z?"before":"after";return new le(i.line,Q,J)}}var re=function(he,ge,de){for(var ye=function(He,lt){return lt?new le(i.line,x(He,1),"before"):new le(i.line,He,"after")};he>=0&&he0==(xe.level!=1),Me=Le?de.begin:x(de.end,-1);if(xe.from<=Me&&Me0?z.end:x(z.begin,-1);return ue!=null&&!(r>0&&ue==t.text.length)&&(ae=re(r>0?0:n.length-1,r,P(ue)),ae)?ae:null}var On={selectAll:Da,singleSelection:function(e){return e.setSelection(e.getCursor("anchor"),e.getCursor("head"),K)},killLine:function(e){return en(e,function(t){if(t.empty()){var i=me(e.doc,t.head.line).text.length;return t.head.ch==i&&t.head.line0)n=new le(n.line,n.ch+1),e.replaceRange(h.charAt(n.ch-1)+h.charAt(n.ch-2),le(n.line,n.ch-2),n,"+transpose");else if(n.line>e.doc.first){var S=me(e.doc,n.line-1).text;S&&(n=new le(n.line,1),e.replaceRange(h.charAt(0)+e.doc.lineSeparator()+S.charAt(S.length-1),le(n.line-1,S.length-1),n,"+transpose"))}}i.push(new Be(n,n))}e.setSelections(i)})},newlineAndIndent:function(e){return Kt(e,function(){for(var t=e.listSelections(),i=t.length-1;i>=0;i--)e.replaceRange(e.doc.lineSeparator(),t[i].anchor,t[i].head,"+input");t=e.listSelections();for(var r=0;re&&I(t,this.pos)==0&&i==this.button};var Dn,Bn;function Au(e,t){var i=+new Date;return Bn&&Bn.compare(i,e,t)?(Dn=Bn=null,"triple"):Dn&&Dn.compare(i,e,t)?(Bn=new Jo(i,e,t),Dn=null,"double"):(Dn=new Jo(i,e,t),Bn=null,"single")}function il(e){var t=this,i=t.display;if(!(We(t,e)||i.activeTouch&&i.input.supportsTouch())){if(i.input.ensurePolled(),i.shift=e.shiftKey,Yr(i,e)){v||(i.scroller.draggable=!1,setTimeout(function(){return i.scroller.draggable=!0},100));return}if(!Qo(t,e)){var r=wi(t,e),n=Wr(e),h=r?Au(r,n):"single";window.focus(),n==1&&t.state.selectingText&&t.state.selectingText(e),!(r&&Mu(t,n,r,h,e))&&(n==1?r?Ru(t,r,h,e):Yt(e)==i.scroller&&Xe(e):n==2?(r&&Vn(t.doc,r),setTimeout(function(){return i.input.focus()},20)):n==3&&(R?t.display.input.onContextMenu(e):Do(t)))}}}function Mu(e,t,i,r,n){var h="Click";return r=="double"?h="Double"+h:r=="triple"&&(h="Triple"+h),h=(t==1?"Left":t==2?"Middle":"Right")+h,Rn(e,Ya(h,n),n,function(S){if(typeof S=="string"&&(S=On[S]),!S)return!1;var x=!1;try{e.isReadOnly()&&(e.state.suppressEdits=!0),x=S(e,i)!=Y}finally{e.state.suppressEdits=!1}return x})}function Ou(e,t,i){var r=e.getOption("configureMouse"),n=r?r(e,t,i):{};if(n.unit==null){var h=u?i.shiftKey&&i.metaKey:i.altKey;n.unit=h?"rectangle":t=="single"?"char":t=="double"?"word":"line"}return(n.extend==null||e.doc.extend)&&(n.extend=e.doc.extend||i.shiftKey),n.addNew==null&&(n.addNew=a?i.metaKey:i.ctrlKey),n.moveOnDrag==null&&(n.moveOnDrag=!(a?i.altKey:i.ctrlKey)),n}function Ru(e,t,i,r){m?setTimeout(be(na,e),0):e.curOp.focus=G();var n=Ou(e,i,r),h=e.doc.sel,S;e.options.dragDrop&&Lr&&!e.isReadOnly()&&i=="single"&&(S=h.contains(t))>-1&&(I((S=h.ranges[S]).from(),t)<0||t.xRel>0)&&(I(S.to(),t)>0||t.xRel<0)?Du(e,r,t,n):Bu(e,r,t,n)}function Du(e,t,i,r){var n=e.display,h=!1,S=st(e,function(P){v&&(n.scroller.draggable=!1),e.state.draggingText=!1,e.state.delayingBlurEvent&&(e.hasFocus()?e.state.delayingBlurEvent=!1:Do(e)),Qe(n.wrapper.ownerDocument,"mouseup",S),Qe(n.wrapper.ownerDocument,"mousemove",x),Qe(n.scroller,"dragstart",O),Qe(n.scroller,"drop",S),h||(Xe(P),r.addNew||Vn(e.doc,i,null,null,r.extend),v&&!p||m&&_==9?setTimeout(function(){n.wrapper.ownerDocument.body.focus({preventScroll:!0}),n.input.focus()},20):n.input.focus())}),x=function(P){h=h||Math.abs(t.clientX-P.clientX)+Math.abs(t.clientY-P.clientY)>=10},O=function(){return h=!0};v&&(n.scroller.draggable=!0),e.state.draggingText=S,S.copy=!r.moveOnDrag,we(n.wrapper.ownerDocument,"mouseup",S),we(n.wrapper.ownerDocument,"mousemove",x),we(n.scroller,"dragstart",O),we(n.scroller,"drop",S),e.state.delayingBlurEvent=!0,setTimeout(function(){return n.input.focus()},20),n.scroller.dragDrop&&n.scroller.dragDrop()}function nl(e,t,i){if(i=="char")return new Be(t,t);if(i=="word")return e.findWordAt(t);if(i=="line")return new Be(le(t.line,0),pe(e.doc,le(t.line+1,0)));var r=i(e,t);return new Be(r.from,r.to)}function Bu(e,t,i,r){m&&Do(e);var n=e.display,h=e.doc;Xe(t);var S,x,O=h.sel,P=O.ranges;if(r.addNew&&!r.extend?(x=h.sel.contains(i),x>-1?S=P[x]:S=new Be(i,i)):(S=h.sel.primary(),x=h.sel.primIndex),r.unit=="rectangle")r.addNew||(S=new Be(i,i)),i=wi(e,t,!0,!0),x=-1;else{var z=nl(e,i,r.unit);r.extend?S=Go(S,z.anchor,z.head,r.extend):S=z}r.addNew?x==-1?(x=P.length,yt(h,br(e,P.concat([S]),x),{scroll:!1,origin:"*mouse"})):P.length>1&&P[x].empty()&&r.unit=="char"&&!r.extend?(yt(h,br(e,P.slice(0,x).concat(P.slice(x+1)),0),{scroll:!1,origin:"*mouse"}),O=h.sel):Xo(h,x,S,Se):(x=0,yt(h,new Jt([S],0),Se),O=h.sel);var Z=i;function Q(de){if(I(Z,de)!=0)if(Z=de,r.unit=="rectangle"){for(var ye=[],xe=e.options.tabSize,Le=Ee(me(h,i.line).text,i.ch,xe),Me=Ee(me(h,de.line).text,de.ch,xe),He=Math.min(Le,Me),lt=Math.max(Le,Me),qe=Math.min(i.line,de.line),Gt=Math.min(e.lastLine(),Math.max(i.line,de.line));qe<=Gt;qe++){var It=me(h,qe).text,Ve=Ce(It,He,xe);He==lt?ye.push(new Be(le(qe,Ve),le(qe,Ve))):It.length>Ve&&ye.push(new Be(le(qe,Ve),le(qe,Ce(It,lt,xe))))}ye.length||ye.push(new Be(i,i)),yt(h,br(e,O.ranges.slice(0,x).concat(ye),x),{origin:"*mouse",scroll:!1}),e.scrollIntoView(de)}else{var Ht=S,pt=nl(e,de,r.unit),rt=Ht.anchor,$e;I(pt.anchor,rt)>0?($e=pt.head,rt=Te(Ht.from(),pt.anchor)):($e=pt.anchor,rt=ce(Ht.to(),pt.head));var Ge=O.ranges.slice(0);Ge[x]=Pu(e,new Be(pe(h,rt),$e)),yt(h,br(e,Ge,x),Se)}}var J=n.wrapper.getBoundingClientRect(),re=0;function ae(de){var ye=++re,xe=wi(e,de,!0,r.unit=="rectangle");if(!!xe)if(I(xe,Z)!=0){e.curOp.focus=G(),Q(xe);var Le=qn(n,h);(xe.line>=Le.to||xe.lineJ.bottom?20:0;Me&&setTimeout(st(e,function(){re==ye&&(n.scroller.scrollTop+=Me,ae(de))}),50)}}function ue(de){e.state.selectingText=!1,re=1/0,de&&(Xe(de),n.input.focus()),Qe(n.wrapper.ownerDocument,"mousemove",he),Qe(n.wrapper.ownerDocument,"mouseup",ge),h.history.lastSelOrigin=null}var he=st(e,function(de){de.buttons===0||!Wr(de)?ue(de):ae(de)}),ge=st(e,ue);e.state.selectingText=ge,we(n.wrapper.ownerDocument,"mousemove",he),we(n.wrapper.ownerDocument,"mouseup",ge)}function Pu(e,t){var i=t.anchor,r=t.head,n=me(e.doc,i.line);if(I(i,r)==0&&i.sticky==r.sticky)return t;var h=ut(n);if(!h)return t;var S=Ne(h,i.ch,i.sticky),x=h[S];if(x.from!=i.ch&&x.to!=i.ch)return t;var O=S+(x.from==i.ch==(x.level!=1)?0:1);if(O==0||O==h.length)return t;var P;if(r.line!=i.line)P=(r.line-i.line)*(e.doc.direction=="ltr"?1:-1)>0;else{var z=Ne(h,r.ch,r.sticky),Z=z-S||(r.ch-i.ch)*(x.level==1?-1:1);z==O-1||z==O?P=Z<0:P=Z>0}var Q=h[O+(P?-1:0)],J=P==(Q.level==1),re=J?Q.from:Q.to,ae=J?"after":"before";return i.ch==re&&i.sticky==ae?t:new Be(new le(i.line,re,ae),r)}function ol(e,t,i,r){var n,h;if(t.touches)n=t.touches[0].clientX,h=t.touches[0].clientY;else try{n=t.clientX,h=t.clientY}catch{return!1}if(n>=Math.floor(e.display.gutters.getBoundingClientRect().right))return!1;r&&Xe(t);var S=e.display,x=S.lineDiv.getBoundingClientRect();if(h>x.bottom||!Ke(e,i))return ft(t);h-=x.top-S.viewOffset;for(var O=0;O=n){var z=Rt(e.doc,h),Z=e.display.gutterSpecs[O];return ke(e,i,e,z,Z.className,t),ft(t)}}}function Qo(e,t){return ol(e,t,"gutterClick",!0)}function sl(e,t){Yr(e.display,t)||Iu(e,t)||We(e,t,"contextmenu")||R||e.display.input.onContextMenu(t)}function Iu(e,t){return Ke(e,"gutterContextMenu")?ol(e,t,"gutterContextMenu",!1):!1}function al(e){e.display.wrapper.className=e.display.wrapper.className.replace(/\s*cm-s-\S+/g,"")+e.options.theme.replace(/(^|\s)\s*/g," cm-s-"),pn(e)}var tn={toString:function(){return"CodeMirror.Init"}},ll={},io={};function Hu(e){var t=e.optionHandlers;function i(r,n,h,S){e.defaults[r]=n,h&&(t[r]=S?function(x,O,P){P!=tn&&h(x,O,P)}:h)}e.defineOption=i,e.Init=tn,i("value","",function(r,n){return r.setValue(n)},!0),i("mode",null,function(r,n){r.doc.modeOption=n,zo(r)},!0),i("indentUnit",2,zo,!0),i("indentWithTabs",!1),i("smartIndent",!0),i("tabSize",4,function(r){Cn(r),pn(r),Bt(r)},!0),i("lineSeparator",null,function(r,n){if(r.doc.lineSep=n,!!n){var h=[],S=r.doc.first;r.doc.iter(function(O){for(var P=0;;){var z=O.text.indexOf(n,P);if(z==-1)break;P=z+n.length,h.push(le(S,z))}S++});for(var x=h.length-1;x>=0;x--)$i(r.doc,n,h[x],le(h[x].line,h[x].ch+n.length))}}),i("specialChars",/[\u0000-\u001f\u007f-\u009f\u00ad\u061c\u200b\u200e\u200f\u2028\u2029\ufeff\ufff9-\ufffc]/g,function(r,n,h){r.state.specialChars=new RegExp(n.source+(n.test(" ")?"":"| "),"g"),h!=tn&&r.refresh()}),i("specialCharPlaceholder",hc,function(r){return r.refresh()},!0),i("electricChars",!0),i("inputStyle",l?"contenteditable":"textarea",function(){throw new Error("inputStyle can not (yet) be changed in a running editor")},!0),i("spellcheck",!1,function(r,n){return r.getInputField().spellcheck=n},!0),i("autocorrect",!1,function(r,n){return r.getInputField().autocorrect=n},!0),i("autocapitalize",!1,function(r,n){return r.getInputField().autocapitalize=n},!0),i("rtlMoveVisually",!g),i("wholeLineUpdateBefore",!0),i("theme","default",function(r){al(r),Sn(r)},!0),i("keyMap","default",function(r,n,h){var S=to(n),x=h!=tn&&to(h);x&&x.detach&&x.detach(r,S),S.attach&&S.attach(r,x||null)}),i("extraKeys",null),i("configureMouse",null),i("lineWrapping",!1,Nu,!0),i("gutters",[],function(r,n){r.display.gutterSpecs=jo(n,r.options.lineNumbers),Sn(r)},!0),i("fixedGutter",!0,function(r,n){r.display.gutters.style.left=n?Ao(r.display)+"px":"0",r.refresh()},!0),i("coverGutterNextToScrollbar",!1,function(r){return Xi(r)},!0),i("scrollbarStyle","native",function(r){ua(r),Xi(r),r.display.scrollbars.setScrollTop(r.doc.scrollTop),r.display.scrollbars.setScrollLeft(r.doc.scrollLeft)},!0),i("lineNumbers",!1,function(r,n){r.display.gutterSpecs=jo(r.options.gutters,n),Sn(r)},!0),i("firstLineNumber",1,Sn,!0),i("lineNumberFormatter",function(r){return r},Sn,!0),i("showCursorWhenSelecting",!1,vn,!0),i("resetSelectionOnContextMenu",!0),i("lineWiseCopyCut",!0),i("pasteLinesPerSelection",!0),i("selectionsMayTouch",!1),i("readOnly",!1,function(r,n){n=="nocursor"&&(Ki(r),r.display.input.blur()),r.display.input.readOnlyChanged(n)}),i("screenReaderLabel",null,function(r,n){n=n===""?null:n,r.display.input.screenReaderLabelChanged(n)}),i("disableInput",!1,function(r,n){n||r.display.input.reset()},!0),i("dragDrop",!0,Fu),i("allowDropFileTypes",null),i("cursorBlinkRate",530),i("cursorScrollMargin",0),i("cursorHeight",1,vn,!0),i("singleCursorHeightPerLine",!0,vn,!0),i("workTime",100),i("workDelay",100),i("flattenSpans",!0,Cn,!0),i("addModeClass",!1,Cn,!0),i("pollInterval",100),i("undoDepth",200,function(r,n){return r.doc.history.undoDepth=n}),i("historyEventDelay",1250),i("viewportMargin",10,function(r){return r.refresh()},!0),i("maxHighlightLength",1e4,Cn,!0),i("moveInputWithCursor",!0,function(r,n){n||r.display.input.resetPosition()}),i("tabindex",null,function(r,n){return r.display.input.getField().tabIndex=n||""}),i("autofocus",null),i("direction","ltr",function(r,n){return r.doc.setDirection(n)},!0),i("phrases",null)}function Fu(e,t,i){var r=i&&i!=tn;if(!t!=!r){var n=e.display.dragFunctions,h=t?we:Qe;h(e.display.scroller,"dragstart",n.start),h(e.display.scroller,"dragenter",n.enter),h(e.display.scroller,"dragover",n.over),h(e.display.scroller,"dragleave",n.leave),h(e.display.scroller,"drop",n.drop)}}function Nu(e){e.options.lineWrapping?($(e.display.wrapper,"CodeMirror-wrap"),e.display.sizer.style.minWidth="",e.display.sizerWidth=null):(M(e.display.wrapper,"CodeMirror-wrap"),yr(e)),Mo(e),Bt(e),pn(e),setTimeout(function(){return Xi(e)},100)}function ze(e,t){var i=this;if(!(this instanceof ze))return new ze(e,t);this.options=t=t?ve(t):{},ve(ll,t,!1);var r=t.value;typeof r=="string"?r=new Pt(r,t.mode,null,t.lineSeparator,t.direction):t.mode&&(r.modeOption=t.mode),this.doc=r;var n=new ze.inputStyles[t.inputStyle](this),h=this.display=new Jc(e,r,n,t);h.wrapper.CodeMirror=this,al(this),t.lineWrapping&&(this.display.wrapper.className+=" CodeMirror-wrap"),ua(this),this.state={keyMaps:[],overlays:[],modeGen:0,overwrite:!1,delayingBlurEvent:!1,focused:!1,suppressEdits:!1,pasteIncoming:-1,cutIncoming:-1,selectingText:!1,draggingText:!1,highlight:new U,keySeq:null,specialChars:null},t.autofocus&&!l&&h.input.focus(),m&&_<11&&setTimeout(function(){return i.display.input.reset(!0)},20),Wu(this),_u(),Ei(this),this.curOp.forceUpdate=!0,ba(this,r),t.autofocus&&!l||this.hasFocus()?setTimeout(function(){i.hasFocus()&&!i.state.focused&&Bo(i)},20):Ki(this);for(var S in io)io.hasOwnProperty(S)&&io[S](this,t[S],tn);da(this),t.finishInit&&t.finishInit(this);for(var x=0;x20*20}we(t.scroller,"touchstart",function(O){if(!We(e,O)&&!h(O)&&!Qo(e,O)){t.input.ensurePolled(),clearTimeout(i);var P=+new Date;t.activeTouch={start:P,moved:!1,prev:P-r.end<=300?r:null},O.touches.length==1&&(t.activeTouch.left=O.touches[0].pageX,t.activeTouch.top=O.touches[0].pageY)}}),we(t.scroller,"touchmove",function(){t.activeTouch&&(t.activeTouch.moved=!0)}),we(t.scroller,"touchend",function(O){var P=t.activeTouch;if(P&&!Yr(t,O)&&P.left!=null&&!P.moved&&new Date-P.start<300){var z=e.coordsChar(t.activeTouch,"page"),Z;!P.prev||S(P,P.prev)?Z=new Be(z,z):!P.prev.prev||S(P,P.prev.prev)?Z=e.findWordAt(z):Z=new Be(le(z.line,0),pe(e.doc,le(z.line+1,0))),e.setSelection(Z.anchor,Z.head),e.focus(),Xe(O)}n()}),we(t.scroller,"touchcancel",n),we(t.scroller,"scroll",function(){t.scroller.clientHeight&&(_n(e,t.scroller.scrollTop),xi(e,t.scroller.scrollLeft,!0),ke(e,"scroll",e))}),we(t.scroller,"mousewheel",function(O){return ga(e,O)}),we(t.scroller,"DOMMouseScroll",function(O){return ga(e,O)}),we(t.wrapper,"scroll",function(){return t.wrapper.scrollTop=t.wrapper.scrollLeft=0}),t.dragFunctions={enter:function(O){We(e,O)||Qt(O)},over:function(O){We(e,O)||(gu(e,O),Qt(O))},start:function(O){return vu(e,O)},drop:st(e,pu),leave:function(O){We(e,O)||qa(e)}};var x=t.input.getField();we(x,"keyup",function(O){return tl.call(e,O)}),we(x,"keydown",st(e,el)),we(x,"keypress",st(e,rl)),we(x,"focus",function(O){return Bo(e,O)}),we(x,"blur",function(O){return Ki(e,O)})}var es=[];ze.defineInitHook=function(e){return es.push(e)};function Pn(e,t,i,r){var n=e.doc,h;i==null&&(i="add"),i=="smart"&&(n.mode.indent?h=Kr(e,t).state:i="prev");var S=e.options.tabSize,x=me(n,t),O=Ee(x.text,null,S);x.stateAfter&&(x.stateAfter=null);var P=x.text.match(/^\s*/)[0],z;if(!r&&!/\S/.test(x.text))z=0,i="not";else if(i=="smart"&&(z=n.mode.indent(h,x.text.slice(P.length),x.text),z==Y||z>150)){if(!r)return;i="prev"}i=="prev"?t>n.first?z=Ee(me(n,t-1).text,null,S):z=0:i=="add"?z=O+e.options.indentUnit:i=="subtract"?z=O-e.options.indentUnit:typeof i=="number"&&(z=O+i),z=Math.max(0,z);var Z="",Q=0;if(e.options.indentWithTabs)for(var J=Math.floor(z/S);J;--J)Q+=S,Z+=" ";if(QS,O=kr(t),P=null;if(x&&r.ranges.length>1)if(Sr&&Sr.text.join(` -`)==t){if(r.ranges.length%Sr.text.length==0){P=[];for(var z=0;z=0;Q--){var J=r.ranges[Q],re=J.from(),ae=J.to();J.empty()&&(i&&i>0?re=le(re.line,re.ch-i):e.state.overwrite&&!x?ae=le(ae.line,Math.min(me(h,ae.line).text.length,ae.ch+Ae(O).length)):x&&Sr&&Sr.lineWise&&Sr.text.join(` -`)==O.join(` -`)&&(re=ae=le(re.line,0)));var ue={from:re,to:ae,text:P?P[Q%P.length]:O,origin:n||(x?"paste":e.state.cutIncoming>S?"cut":"+input")};Vi(e.doc,ue),ot(e,"inputRead",e,ue)}t&&!x&&ul(e,t),Gi(e),e.curOp.updateInput<2&&(e.curOp.updateInput=Z),e.curOp.typing=!0,e.state.pasteIncoming=e.state.cutIncoming=-1}function cl(e,t){var i=e.clipboardData&&e.clipboardData.getData("Text");if(i)return e.preventDefault(),!t.isReadOnly()&&!t.options.disableInput&&Kt(t,function(){return ts(t,i,0,null,"paste")}),!0}function ul(e,t){if(!(!e.options.electricChars||!e.options.smartIndent))for(var i=e.doc.sel,r=i.ranges.length-1;r>=0;r--){var n=i.ranges[r];if(!(n.head.ch>100||r&&i.ranges[r-1].head.line==n.head.line)){var h=e.getModeAt(n.head),S=!1;if(h.electricChars){for(var x=0;x-1){S=Pn(e,n.head.line,"smart");break}}else h.electricInput&&h.electricInput.test(me(e.doc,n.head.line).text.slice(0,n.head.ch))&&(S=Pn(e,n.head.line,"smart"));S&&ot(e,"electricInput",e,n.head.line)}}}function fl(e){for(var t=[],i=[],r=0;rh&&(Pn(this,x.head.line,r,!0),h=x.head.line,S==this.doc.sel.primIndex&&Gi(this));else{var O=x.from(),P=x.to(),z=Math.max(h,O.line);h=Math.min(this.lastLine(),P.line-(P.ch?0:1))+1;for(var Z=z;Z0&&Xo(this.doc,S,new Be(O,Q[S].to()),K)}}}),getTokenAt:function(r,n){return Fi(this,r,n)},getLineTokens:function(r,n){return Fi(this,le(r),n,!0)},getTokenTypeAt:function(r){r=pe(this.doc,r);var n=Pi(this,me(this.doc,r.line)),h=0,S=(n.length-1)/2,x=r.ch,O;if(x==0)O=n[2];else for(;;){var P=h+S>>1;if((P?n[P*2-1]:0)>=x)S=P;else if(n[P*2+1]O&&(r=O,S=!0),x=me(this.doc,r)}else x=r;return Nn(this,x,{top:0,left:0},n||"page",h||S).top+(S?this.doc.height-$t(x):0)},defaultTextHeight:function(){return zi(this.display)},defaultCharWidth:function(){return qi(this.display)},getViewport:function(){return{from:this.display.viewFrom,to:this.display.viewTo}},addWidget:function(r,n,h,S,x){var O=this.display;r=mr(this,pe(this.doc,r));var P=r.bottom,z=r.left;if(n.style.position="absolute",n.setAttribute("cm-ignore-events","true"),this.display.input.setUneditable(n),O.sizer.appendChild(n),S=="over")P=r.top;else if(S=="above"||S=="near"){var Z=Math.max(O.wrapper.clientHeight,this.doc.height),Q=Math.max(O.sizer.clientWidth,O.lineSpace.clientWidth);(S=="above"||r.bottom+n.offsetHeight>Z)&&r.top>n.offsetHeight?P=r.top-n.offsetHeight:r.bottom+n.offsetHeight<=Z&&(P=r.bottom),z+n.offsetWidth>Q&&(z=Q-n.offsetWidth)}n.style.top=P+"px",n.style.left=n.style.right="",x=="right"?(z=O.sizer.clientWidth-n.offsetWidth,n.style.right="0px"):(x=="left"?z=0:x=="middle"&&(z=(O.sizer.clientWidth-n.offsetWidth)/2),n.style.left=z+"px"),h&&Fc(this,{left:z,top:P,right:z+n.offsetWidth,bottom:P+n.offsetHeight})},triggerOnKeyDown:kt(el),triggerOnKeyPress:kt(rl),triggerOnKeyUp:tl,triggerOnMouseDown:kt(il),execCommand:function(r){if(On.hasOwnProperty(r))return On[r].call(null,this)},triggerElectric:kt(function(r){ul(this,r)}),findPosH:function(r,n,h,S){var x=1;n<0&&(x=-1,n=-n);for(var O=pe(this.doc,r),P=0;P0&&z(h.charAt(S-1));)--S;for(;x.5||this.options.lineWrapping)&&Mo(this),ke(this,"refresh",this)}),swapDoc:kt(function(r){var n=this.doc;return n.cm=null,this.state.selectingText&&this.state.selectingText(),ba(this,r),pn(this),this.display.input.reset(),gn(this,r.scrollLeft,r.scrollTop),this.curOp.forceScroll=!0,ot(this,"swapDoc",this,n),n}),phrase:function(r){var n=this.options.phrases;return n&&Object.prototype.hasOwnProperty.call(n,r)?n[r]:r},getInputField:function(){return this.display.input.getField()},getWrapperElement:function(){return this.display.wrapper},getScrollerElement:function(){return this.display.scroller},getGutterElement:function(){return this.display.gutters}},At(e),e.registerHelper=function(r,n,h){i.hasOwnProperty(r)||(i[r]=e[r]={_global:[]}),i[r][n]=h},e.registerGlobalHelper=function(r,n,h,S){e.registerHelper(r,n,S),i[r]._global.push({pred:h,val:S})}}function rs(e,t,i,r,n){var h=t,S=i,x=me(e,t.line),O=n&&e.direction=="rtl"?-i:i;function P(){var ge=t.line+O;return ge=e.first+e.size?!1:(t=new le(ge,t.ch,t.sticky),x=me(e,ge))}function z(ge){var de;if(r=="codepoint"){var ye=x.text.charCodeAt(t.ch+(i>0?0:-1));if(isNaN(ye))de=null;else{var xe=i>0?ye>=55296&&ye<56320:ye>=56320&&ye<57343;de=new le(t.line,Math.max(0,Math.min(x.text.length,t.ch+i*(xe?2:1))),-i)}}else n?de=Cu(e.cm,x,t,i):de=Zo(x,t,i);if(de==null)if(!ge&&P())t=Vo(n,e.cm,x,t.line,O);else return!1;else t=de;return!0}if(r=="char"||r=="codepoint")z();else if(r=="column")z(!0);else if(r=="word"||r=="group")for(var Z=null,Q=r=="group",J=e.cm&&e.cm.getHelper(t,"wordChars"),re=!0;!(i<0&&!z(!re));re=!1){var ae=x.text.charAt(t.ch)||` -`,ue=wr(ae,J)?"w":Q&&ae==` -`?"n":!Q||/\s/.test(ae)?null:"p";if(Q&&!re&&!ue&&(ue="s"),Z&&Z!=ue){i<0&&(i=1,z(),t.sticky="after");break}if(ue&&(Z=ue),i>0&&!z(!re))break}var he=Jn(e,t,h,S,!0);return X(h,he)&&(he.hitSide=!0),he}function pl(e,t,i,r){var n=e.doc,h=t.left,S;if(r=="page"){var x=Math.min(e.display.wrapper.clientHeight,window.innerHeight||document.documentElement.clientHeight),O=Math.max(x-.5*zi(e.display),3);S=(i>0?t.bottom:t.top)+i*O}else r=="line"&&(S=i>0?t.bottom+3:t.top-3);for(var P;P=ko(e,h,S),!!P.outside;){if(i<0?S<=0:S>=n.height){P.hitSide=!0;break}S+=i*5}return P}var Pe=function(e){this.cm=e,this.lastAnchorNode=this.lastAnchorOffset=this.lastFocusNode=this.lastFocusOffset=null,this.polling=new U,this.composing=null,this.gracePeriod=!1,this.readDOMTimeout=null};Pe.prototype.init=function(e){var t=this,i=this,r=i.cm,n=i.div=e.lineDiv;n.contentEditable=!0,hl(n,r.options.spellcheck,r.options.autocorrect,r.options.autocapitalize);function h(x){for(var O=x.target;O;O=O.parentNode){if(O==n)return!0;if(/\bCodeMirror-(?:line)?widget\b/.test(O.className))break}return!1}we(n,"paste",function(x){!h(x)||We(r,x)||cl(x,r)||_<=11&&setTimeout(st(r,function(){return t.updateFromDOM()}),20)}),we(n,"compositionstart",function(x){t.composing={data:x.data,done:!1}}),we(n,"compositionupdate",function(x){t.composing||(t.composing={data:x.data,done:!1})}),we(n,"compositionend",function(x){t.composing&&(x.data!=t.composing.data&&t.readFromDOMSoon(),t.composing.done=!0)}),we(n,"touchstart",function(){return i.forceCompositionEnd()}),we(n,"input",function(){t.composing||t.readFromDOMSoon()});function S(x){if(!(!h(x)||We(r,x))){if(r.somethingSelected())no({lineWise:!1,text:r.getSelections()}),x.type=="cut"&&r.replaceSelection("",null,"cut");else if(r.options.lineWiseCopyCut){var O=fl(r);no({lineWise:!0,text:O.text}),x.type=="cut"&&r.operation(function(){r.setSelections(O.ranges,0,K),r.replaceSelection("",null,"cut")})}else return;if(x.clipboardData){x.clipboardData.clearData();var P=Sr.text.join(` -`);if(x.clipboardData.setData("Text",P),x.clipboardData.getData("Text")==P){x.preventDefault();return}}var z=dl(),Z=z.firstChild;r.display.lineSpace.insertBefore(z,r.display.lineSpace.firstChild),Z.value=Sr.text.join(` -`);var Q=G();ie(Z),setTimeout(function(){r.display.lineSpace.removeChild(z),Q.focus(),Q==n&&i.showPrimarySelection()},50)}}we(n,"copy",S),we(n,"cut",S)},Pe.prototype.screenReaderLabelChanged=function(e){e?this.div.setAttribute("aria-label",e):this.div.removeAttribute("aria-label")},Pe.prototype.prepareSelection=function(){var e=ia(this.cm,!1);return e.focus=G()==this.div,e},Pe.prototype.showSelection=function(e,t){!e||!this.cm.display.view.length||((e.focus||t)&&this.showPrimarySelection(),this.showMultipleSelections(e))},Pe.prototype.getSelection=function(){return this.cm.display.wrapper.ownerDocument.getSelection()},Pe.prototype.showPrimarySelection=function(){var e=this.getSelection(),t=this.cm,i=t.doc.sel.primary(),r=i.from(),n=i.to();if(t.display.viewTo==t.display.viewFrom||r.line>=t.display.viewTo||n.line=t.display.viewFrom&&vl(t,r)||{node:x[0].measure.map[2],offset:0},P=n.linee.firstLine()&&(r=le(r.line-1,me(e.doc,r.line-1).length)),n.ch==me(e.doc,n.line).text.length&&n.linet.viewTo-1)return!1;var h,S,x;r.line==t.viewFrom||(h=Li(e,r.line))==0?(S=Re(t.view[0].line),x=t.view[0].node):(S=Re(t.view[h].line),x=t.view[h-1].node.nextSibling);var O=Li(e,n.line),P,z;if(O==t.view.length-1?(P=t.viewTo-1,z=t.lineDiv.lastChild):(P=Re(t.view[O+1].line)-1,z=t.view[O+1].node.previousSibling),!x)return!1;for(var Z=e.doc.splitLines(zu(e,x,z,S,P)),Q=Ot(e.doc,le(S,0),le(P,me(e.doc,P).text.length));Z.length>1&&Q.length>1;)if(Ae(Z)==Ae(Q))Z.pop(),Q.pop(),P--;else if(Z[0]==Q[0])Z.shift(),Q.shift(),S++;else break;for(var J=0,re=0,ae=Z[0],ue=Q[0],he=Math.min(ae.length,ue.length);Jr.ch&&ge.charCodeAt(ge.length-re-1)==de.charCodeAt(de.length-re-1);)J--,re++;Z[Z.length-1]=ge.slice(0,ge.length-re).replace(/^\u200b+/,""),Z[0]=Z[0].slice(J).replace(/\u200b+$/,"");var xe=le(S,J),Le=le(P,Q.length?Ae(Q).length-re:0);if(Z.length>1||Z[0]||I(xe,Le))return $i(e.doc,Z,xe,Le,"+input"),!0},Pe.prototype.ensurePolled=function(){this.forceCompositionEnd()},Pe.prototype.reset=function(){this.forceCompositionEnd()},Pe.prototype.forceCompositionEnd=function(){!this.composing||(clearTimeout(this.readDOMTimeout),this.composing=null,this.updateFromDOM(),this.div.blur(),this.div.focus())},Pe.prototype.readFromDOMSoon=function(){var e=this;this.readDOMTimeout==null&&(this.readDOMTimeout=setTimeout(function(){if(e.readDOMTimeout=null,e.composing)if(e.composing.done)e.composing=null;else return;e.updateFromDOM()},80))},Pe.prototype.updateFromDOM=function(){var e=this;(this.cm.isReadOnly()||!this.pollContent())&&Kt(this.cm,function(){return Bt(e.cm)})},Pe.prototype.setUneditable=function(e){e.contentEditable="false"},Pe.prototype.onKeyPress=function(e){e.charCode==0||this.composing||(e.preventDefault(),this.cm.isReadOnly()||st(this.cm,ts)(this.cm,String.fromCharCode(e.charCode==null?e.keyCode:e.charCode),0))},Pe.prototype.readOnlyChanged=function(e){this.div.contentEditable=String(e!="nocursor")},Pe.prototype.onContextMenu=function(){},Pe.prototype.resetPosition=function(){},Pe.prototype.needsContentAttribute=!0;function vl(e,t){var i=wo(e,t.line);if(!i||i.hidden)return null;var r=me(e.doc,t.line),n=zs(i,r,t.line),h=ut(r,e.doc.direction),S="left";if(h){var x=Ne(h,t.ch);S=x%2?"right":"left"}var O=Gs(n.map,t.ch,S);return O.offset=O.collapse=="right"?O.end:O.start,O}function Uu(e){for(var t=e;t;t=t.parentNode)if(/CodeMirror-gutter-wrapper/.test(t.className))return!0;return!1}function rn(e,t){return t&&(e.bad=!0),e}function zu(e,t,i,r,n){var h="",S=!1,x=e.doc.lineSeparator(),O=!1;function P(J){return function(re){return re.id==J}}function z(){S&&(h+=x,O&&(h+=x),S=O=!1)}function Z(J){J&&(z(),h+=J)}function Q(J){if(J.nodeType==1){var re=J.getAttribute("cm-text");if(re){Z(re);return}var ae=J.getAttribute("cm-marker"),ue;if(ae){var he=e.findMarks(le(r,0),le(n+1,0),P(+ae));he.length&&(ue=he[0].find(0))&&Z(Ot(e.doc,ue.from,ue.to).join(x));return}if(J.getAttribute("contenteditable")=="false")return;var ge=/^(pre|div|p|li|table|br)$/i.test(J.nodeName);if(!/^br$/i.test(J.nodeName)&&J.textContent.length==0)return;ge&&z();for(var de=0;de=9&&t.hasSelection&&(t.hasSelection=null),i.poll()}),we(n,"paste",function(S){We(r,S)||cl(S,r)||(r.state.pasteIncoming=+new Date,i.fastPoll())});function h(S){if(!We(r,S)){if(r.somethingSelected())no({lineWise:!1,text:r.getSelections()});else if(r.options.lineWiseCopyCut){var x=fl(r);no({lineWise:!0,text:x.text}),S.type=="cut"?r.setSelections(x.ranges,null,K):(i.prevInput="",n.value=x.text.join(` -`),ie(n))}else return;S.type=="cut"&&(r.state.cutIncoming=+new Date)}}we(n,"cut",h),we(n,"copy",h),we(e.scroller,"paste",function(S){if(!(Yr(e,S)||We(r,S))){if(!n.dispatchEvent){r.state.pasteIncoming=+new Date,i.focus();return}var x=new Event("paste");x.clipboardData=S.clipboardData,n.dispatchEvent(x)}}),we(e.lineSpace,"selectstart",function(S){Yr(e,S)||Xe(S)}),we(n,"compositionstart",function(){var S=r.getCursor("from");i.composing&&i.composing.range.clear(),i.composing={start:S,range:r.markText(S,r.getCursor("to"),{className:"CodeMirror-composing"})}}),we(n,"compositionend",function(){i.composing&&(i.poll(),i.composing.range.clear(),i.composing=null)})},Ye.prototype.createField=function(e){this.wrapper=dl(),this.textarea=this.wrapper.firstChild},Ye.prototype.screenReaderLabelChanged=function(e){e?this.textarea.setAttribute("aria-label",e):this.textarea.removeAttribute("aria-label")},Ye.prototype.prepareSelection=function(){var e=this.cm,t=e.display,i=e.doc,r=ia(e);if(e.options.moveInputWithCursor){var n=mr(e,i.sel.primary().head,"div"),h=t.wrapper.getBoundingClientRect(),S=t.lineDiv.getBoundingClientRect();r.teTop=Math.max(0,Math.min(t.wrapper.clientHeight-10,n.top+S.top-h.top)),r.teLeft=Math.max(0,Math.min(t.wrapper.clientWidth-10,n.left+S.left-h.left))}return r},Ye.prototype.showSelection=function(e){var t=this.cm,i=t.display;D(i.cursorDiv,e.cursors),D(i.selectionDiv,e.selection),e.teTop!=null&&(this.wrapper.style.top=e.teTop+"px",this.wrapper.style.left=e.teLeft+"px")},Ye.prototype.reset=function(e){if(!(this.contextMenuPending||this.composing)){var t=this.cm;if(t.somethingSelected()){this.prevInput="";var i=t.getSelection();this.textarea.value=i,t.state.focused&&ie(this.textarea),m&&_>=9&&(this.hasSelection=i)}else e||(this.prevInput=this.textarea.value="",m&&_>=9&&(this.hasSelection=null))}},Ye.prototype.getField=function(){return this.textarea},Ye.prototype.supportsTouch=function(){return!1},Ye.prototype.focus=function(){if(this.cm.options.readOnly!="nocursor"&&(!l||G()!=this.textarea))try{this.textarea.focus()}catch{}},Ye.prototype.blur=function(){this.textarea.blur()},Ye.prototype.resetPosition=function(){this.wrapper.style.top=this.wrapper.style.left=0},Ye.prototype.receivedFocus=function(){this.slowPoll()},Ye.prototype.slowPoll=function(){var e=this;this.pollingFast||this.polling.set(this.cm.options.pollInterval,function(){e.poll(),e.cm.state.focused&&e.slowPoll()})},Ye.prototype.fastPoll=function(){var e=!1,t=this;t.pollingFast=!0;function i(){var r=t.poll();!r&&!e?(e=!0,t.polling.set(60,i)):(t.pollingFast=!1,t.slowPoll())}t.polling.set(20,i)},Ye.prototype.poll=function(){var e=this,t=this.cm,i=this.textarea,r=this.prevInput;if(this.contextMenuPending||!t.state.focused||Ur(i)&&!r&&!this.composing||t.isReadOnly()||t.options.disableInput||t.state.keySeq)return!1;var n=i.value;if(n==r&&!t.somethingSelected())return!1;if(m&&_>=9&&this.hasSelection===n||a&&/[\uf700-\uf7ff]/.test(n))return t.display.input.reset(),!1;if(t.doc.sel==t.display.selForContextMenu){var h=n.charCodeAt(0);if(h==8203&&!r&&(r="\u200B"),h==8666)return this.reset(),this.cm.execCommand("undo")}for(var S=0,x=Math.min(r.length,n.length);S1e3||n.indexOf(` -`)>-1?i.value=e.prevInput="":e.prevInput=n,e.composing&&(e.composing.range.clear(),e.composing.range=t.markText(e.composing.start,t.getCursor("to"),{className:"CodeMirror-composing"}))}),!0},Ye.prototype.ensurePolled=function(){this.pollingFast&&this.poll()&&(this.pollingFast=!1)},Ye.prototype.onKeyPress=function(){m&&_>=9&&(this.hasSelection=null),this.fastPoll()},Ye.prototype.onContextMenu=function(e){var t=this,i=t.cm,r=i.display,n=t.textarea;t.contextMenuPending&&t.contextMenuPending();var h=wi(i,e),S=r.scroller.scrollTop;if(!h||c)return;var x=i.options.resetSelectionOnContextMenu;x&&i.doc.sel.contains(h)==-1&&st(i,yt)(i.doc,ai(h),K);var O=n.style.cssText,P=t.wrapper.style.cssText,z=t.wrapper.offsetParent.getBoundingClientRect();t.wrapper.style.cssText="position: static",n.style.cssText=`position: absolute; width: 30px; height: 30px; - top: `+(e.clientY-z.top-5)+"px; left: "+(e.clientX-z.left-5)+`px; - z-index: 1000; background: `+(m?"rgba(255, 255, 255, .05)":"transparent")+`; - outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);`;var Z;v&&(Z=window.scrollY),r.input.focus(),v&&window.scrollTo(null,Z),r.input.reset(),i.somethingSelected()||(n.value=t.prevInput=" "),t.contextMenuPending=J,r.selForContextMenu=i.doc.sel,clearTimeout(r.detectingSelectAll);function Q(){if(n.selectionStart!=null){var ae=i.somethingSelected(),ue="\u200B"+(ae?n.value:"");n.value="\u21DA",n.value=ue,t.prevInput=ae?"":"\u200B",n.selectionStart=1,n.selectionEnd=ue.length,r.selForContextMenu=i.doc.sel}}function J(){if(t.contextMenuPending==J&&(t.contextMenuPending=!1,t.wrapper.style.cssText=P,n.style.cssText=O,m&&_<9&&r.scrollbars.setScrollTop(r.scroller.scrollTop=S),n.selectionStart!=null)){(!m||m&&_<9)&&Q();var ae=0,ue=function(){r.selForContextMenu==i.doc.sel&&n.selectionStart==0&&n.selectionEnd>0&&t.prevInput=="\u200B"?st(i,Da)(i):ae++<10?r.detectingSelectAll=setTimeout(ue,500):(r.selForContextMenu=null,r.input.reset())};r.detectingSelectAll=setTimeout(ue,200)}}if(m&&_>=9&&Q(),R){Qt(e);var re=function(){Qe(window,"mouseup",re),setTimeout(J,20)};we(window,"mouseup",re)}else setTimeout(J,50)},Ye.prototype.readOnlyChanged=function(e){e||this.reset(),this.textarea.disabled=e=="nocursor",this.textarea.readOnly=!!e},Ye.prototype.setUneditable=function(){},Ye.prototype.needsContentAttribute=!1;function Ku(e,t){if(t=t?ve(t):{},t.value=e.value,!t.tabindex&&e.tabIndex&&(t.tabindex=e.tabIndex),!t.placeholder&&e.placeholder&&(t.placeholder=e.placeholder),t.autofocus==null){var i=G();t.autofocus=i==e||e.getAttribute("autofocus")!=null&&i==document.body}function r(){e.value=x.getValue()}var n;if(e.form&&(we(e.form,"submit",r),!t.leaveSubmitMethodAlone)){var h=e.form;n=h.submit;try{var S=h.submit=function(){r(),h.submit=n,h.submit(),h.submit=S}}catch{}}t.finishInit=function(O){O.save=r,O.getTextArea=function(){return e},O.toTextArea=function(){O.toTextArea=isNaN,r(),e.parentNode.removeChild(O.getWrapperElement()),e.style.display="",e.form&&(Qe(e.form,"submit",r),!t.leaveSubmitMethodAlone&&typeof e.form.submit=="function"&&(e.form.submit=n))}},e.style.display="none";var x=ze(function(O){return e.parentNode.insertBefore(O,e.nextSibling)},t);return x}function Gu(e){e.off=Qe,e.on=we,e.wheelEventPixels=Qc,e.Doc=Pt,e.splitLines=kr,e.countColumn=Ee,e.findColumn=Ce,e.isWordChar=Cr,e.Pass=Y,e.signal=ke,e.Line=ni,e.changeEnd=li,e.scrollbarModel=ca,e.Pos=le,e.cmpPos=I,e.modes=gt,e.mimeModes=ht,e.resolveMode=dr,e.getMode=pr,e.modeExtensions=bt,e.extendMode=St,e.copyState=dt,e.startState=Ar,e.innerMode=Tr,e.commands=On,e.keyMap=Vr,e.keyName=Za,e.isModifierKey=Xa,e.lookupKey=Qi,e.normalizeKeyMap=Su,e.StringStream=Ie,e.SharedTextMarker=Tn,e.TextMarker=ui,e.LineWidget=En,e.e_preventDefault=Xe,e.e_stopPropagation=hr,e.e_stop=Qt,e.addClass=$,e.contains=j,e.rmClass=M,e.keyNames=fi}Hu(ze),ju(ze);var Xu="iter insert remove copy getEditor constructor".split(" ");for(var so in Pt.prototype)Pt.prototype.hasOwnProperty(so)&&ee(Xu,so)<0&&(ze.prototype[so]=function(e){return function(){return e.apply(this.doc,arguments)}}(Pt.prototype[so]));return At(Pt),ze.inputStyles={textarea:Ye,contenteditable:Pe},ze.defineMode=function(e){!ze.defaults.mode&&e!="null"&&(ze.defaults.mode=e),qr.apply(this,arguments)},ze.defineMIME=jt,ze.defineMode("null",function(){return{token:function(e){return e.skipToEnd()}}}),ze.defineMIME("text/plain","null"),ze.defineExtension=function(e,t){ze.prototype[e]=t},ze.defineDocExtension=function(e,t){Pt.prototype[e]=t},ze.fromTextArea=Ku,Gu(ze),ze.version="5.65.2",ze})});var hs=or((Cl,wl)=>{(function(V){typeof Cl=="object"&&typeof wl=="object"?V(sr()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],V):V(CodeMirror)})(function(V){"use strict";V.defineMode("javascript",function(H,E){var f=H.indentUnit,L=E.statementIndent,y=E.jsonld,m=E.json||y,_=E.trackScope!==!1,v=E.typescript,A=E.wordCharacters||/[\w$\xa1-\uffff]/,w=function(){function I(Ze){return{type:Ze,style:"keyword"}}var X=I("keyword a"),oe=I("keyword b"),ce=I("keyword c"),Te=I("keyword d"),Oe=I("operator"),pe={type:"atom",style:"atom"};return{if:I("if"),while:X,with:X,else:oe,do:oe,try:oe,finally:oe,return:Te,break:Te,continue:Te,new:I("new"),delete:ce,void:ce,throw:ce,debugger:I("debugger"),var:I("var"),const:I("var"),let:I("var"),function:I("function"),catch:I("catch"),for:I("for"),switch:I("switch"),case:I("case"),default:I("default"),in:Oe,typeof:Oe,instanceof:Oe,true:pe,false:pe,null:pe,undefined:pe,NaN:pe,Infinity:pe,this:I("this"),class:I("class"),super:I("atom"),yield:ce,export:I("export"),import:I("import"),extends:ce,await:ce}}(),c=/[+\-*&%=<>!?|~^@]/,p=/^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/;function C(I){for(var X=!1,oe,ce=!1;(oe=I.next())!=null;){if(!X){if(oe=="/"&&!ce)return;oe=="["?ce=!0:ce&&oe=="]"&&(ce=!1)}X=!X&&oe=="\\"}}var d,s;function o(I,X,oe){return d=I,s=oe,X}function l(I,X){var oe=I.next();if(oe=='"'||oe=="'")return X.tokenize=a(oe),X.tokenize(I,X);if(oe=="."&&I.match(/^\d[\d_]*(?:[eE][+\-]?[\d_]+)?/))return o("number","number");if(oe=="."&&I.match(".."))return o("spread","meta");if(/[\[\]{}\(\),;\:\.]/.test(oe))return o(oe);if(oe=="="&&I.eat(">"))return o("=>","operator");if(oe=="0"&&I.match(/^(?:x[\dA-Fa-f_]+|o[0-7_]+|b[01_]+)n?/))return o("number","number");if(/\d/.test(oe))return I.match(/^[\d_]*(?:n|(?:\.[\d_]*)?(?:[eE][+\-]?[\d_]+)?)?/),o("number","number");if(oe=="/")return I.eat("*")?(X.tokenize=u,u(I,X)):I.eat("/")?(I.skipToEnd(),o("comment","comment")):le(I,X,1)?(C(I),I.match(/^\b(([gimyus])(?![gimyus]*\2))+\b/),o("regexp","string-2")):(I.eat("="),o("operator","operator",I.current()));if(oe=="`")return X.tokenize=g,g(I,X);if(oe=="#"&&I.peek()=="!")return I.skipToEnd(),o("meta","meta");if(oe=="#"&&I.eatWhile(A))return o("variable","property");if(oe=="<"&&I.match("!--")||oe=="-"&&I.match("->")&&!/\S/.test(I.string.slice(0,I.start)))return I.skipToEnd(),o("comment","comment");if(c.test(oe))return(oe!=">"||!X.lexical||X.lexical.type!=">")&&(I.eat("=")?(oe=="!"||oe=="=")&&I.eat("="):/[<>*+\-|&?]/.test(oe)&&(I.eat(oe),oe==">"&&I.eat(oe))),oe=="?"&&I.eat(".")?o("."):o("operator","operator",I.current());if(A.test(oe)){I.eatWhile(A);var ce=I.current();if(X.lastType!="."){if(w.propertyIsEnumerable(ce)){var Te=w[ce];return o(Te.type,Te.style,ce)}if(ce=="async"&&I.match(/^(\s|\/\*([^*]|\*(?!\/))*?\*\/)*[\[\(\w]/,!1))return o("async","keyword",ce)}return o("variable","variable",ce)}}function a(I){return function(X,oe){var ce=!1,Te;if(y&&X.peek()=="@"&&X.match(p))return oe.tokenize=l,o("jsonld-keyword","meta");for(;(Te=X.next())!=null&&!(Te==I&&!ce);)ce=!ce&&Te=="\\";return ce||(oe.tokenize=l),o("string","string")}}function u(I,X){for(var oe=!1,ce;ce=I.next();){if(ce=="/"&&oe){X.tokenize=l;break}oe=ce=="*"}return o("comment","comment")}function g(I,X){for(var oe=!1,ce;(ce=I.next())!=null;){if(!oe&&(ce=="`"||ce=="$"&&I.eat("{"))){X.tokenize=l;break}oe=!oe&&ce=="\\"}return o("quasi","string-2",I.current())}var b="([{}])";function T(I,X){X.fatArrowAt&&(X.fatArrowAt=null);var oe=I.string.indexOf("=>",I.start);if(!(oe<0)){if(v){var ce=/:\s*(?:\w+(?:<[^>]*>|\[\])?|\{[^}]*\})\s*$/.exec(I.string.slice(I.start,oe));ce&&(oe=ce.index)}for(var Te=0,Oe=!1,pe=oe-1;pe>=0;--pe){var Ze=I.string.charAt(pe),_t=b.indexOf(Ze);if(_t>=0&&_t<3){if(!Te){++pe;break}if(--Te==0){Ze=="("&&(Oe=!0);break}}else if(_t>=3&&_t<6)++Te;else if(A.test(Ze))Oe=!0;else if(/["'\/`]/.test(Ze))for(;;--pe){if(pe==0)return;var Rr=I.string.charAt(pe-1);if(Rr==Ze&&I.string.charAt(pe-2)!="\\"){pe--;break}}else if(Oe&&!Te){++pe;break}}Oe&&!Te&&(X.fatArrowAt=pe)}}var R={atom:!0,number:!0,variable:!0,string:!0,regexp:!0,this:!0,import:!0,"jsonld-keyword":!0};function k(I,X,oe,ce,Te,Oe){this.indented=I,this.column=X,this.type=oe,this.prev=Te,this.info=Oe,ce!=null&&(this.align=ce)}function M(I,X){if(!_)return!1;for(var oe=I.localVars;oe;oe=oe.next)if(oe.name==X)return!0;for(var ce=I.context;ce;ce=ce.prev)for(var oe=ce.vars;oe;oe=oe.next)if(oe.name==X)return!0}function N(I,X,oe,ce,Te){var Oe=I.cc;for(D.state=I,D.stream=Te,D.marked=null,D.cc=Oe,D.style=X,I.lexical.hasOwnProperty("align")||(I.lexical.align=!0);;){var pe=Oe.length?Oe.pop():m?fe:K;if(pe(oe,ce)){for(;Oe.length&&Oe[Oe.length-1].lex;)Oe.pop()();return D.marked?D.marked:oe=="variable"&&M(I,ce)?"variable-2":X}}}var D={state:null,column:null,marked:null,cc:null};function W(){for(var I=arguments.length-1;I>=0;I--)D.cc.push(arguments[I])}function B(){return W.apply(null,arguments),!0}function F(I,X){for(var oe=X;oe;oe=oe.next)if(oe.name==I)return!0;return!1}function j(I){var X=D.state;if(D.marked="def",!!_){if(X.context){if(X.lexical.info=="var"&&X.context&&X.context.block){var oe=G(I,X.context);if(oe!=null){X.context=oe;return}}else if(!F(I,X.localVars)){X.localVars=new ie(I,X.localVars);return}}E.globalVars&&!F(I,X.globalVars)&&(X.globalVars=new ie(I,X.globalVars))}}function G(I,X){if(X)if(X.block){var oe=G(I,X.prev);return oe?oe==X.prev?X:new ne(oe,X.vars,!0):null}else return F(I,X.vars)?X:new ne(X.prev,new ie(I,X.vars),!1);else return null}function $(I){return I=="public"||I=="private"||I=="protected"||I=="abstract"||I=="readonly"}function ne(I,X,oe){this.prev=I,this.vars=X,this.block=oe}function ie(I,X){this.name=I,this.next=X}var be=new ie("this",new ie("arguments",null));function ve(){D.state.context=new ne(D.state.context,D.state.localVars,!1),D.state.localVars=be}function Ee(){D.state.context=new ne(D.state.context,D.state.localVars,!0),D.state.localVars=null}ve.lex=Ee.lex=!0;function U(){D.state.localVars=D.state.context.vars,D.state.context=D.state.context.prev}U.lex=!0;function ee(I,X){var oe=function(){var ce=D.state,Te=ce.indented;if(ce.lexical.type=="stat")Te=ce.lexical.indented;else for(var Oe=ce.lexical;Oe&&Oe.type==")"&&Oe.align;Oe=Oe.prev)Te=Oe.indented;ce.lexical=new k(Te,D.stream.column(),I,null,ce.lexical,X)};return oe.lex=!0,oe}function q(){var I=D.state;I.lexical.prev&&(I.lexical.type==")"&&(I.indented=I.lexical.indented),I.lexical=I.lexical.prev)}q.lex=!0;function Y(I){function X(oe){return oe==I?B():I==";"||oe=="}"||oe==")"||oe=="]"?W():B(X)}return X}function K(I,X){return I=="var"?B(ee("vardef",X),Lr,Y(";"),q):I=="keyword a"?B(ee("form"),De,K,q):I=="keyword b"?B(ee("form"),K,q):I=="keyword d"?D.stream.match(/^\s*$/,!1)?B():B(ee("stat"),Ae,Y(";"),q):I=="debugger"?B(Y(";")):I=="{"?B(ee("}"),Ee,ut,q,U):I==";"?B():I=="if"?(D.state.lexical.info=="else"&&D.state.cc[D.state.cc.length-1]==q&&D.state.cc.pop()(),B(ee("form"),De,K,q,Ur)):I=="function"?B(gt):I=="for"?B(ee("form"),Ee,zr,K,U,q):I=="class"||v&&X=="interface"?(D.marked="keyword",B(ee("form",I=="class"?I:X),pr,q)):I=="variable"?v&&X=="declare"?(D.marked="keyword",B(K)):v&&(X=="module"||X=="enum"||X=="type")&&D.stream.match(/^\s*\w/,!1)?(D.marked="keyword",X=="enum"?B(Rt):X=="type"?B(qr,Y("operator"),ke,Y(";")):B(ee("form"),et,Y("{"),ee("}"),ut,q,q)):v&&X=="namespace"?(D.marked="keyword",B(ee("form"),fe,K,q)):v&&X=="abstract"?(D.marked="keyword",B(K)):B(ee("stat"),Nr):I=="switch"?B(ee("form"),De,Y("{"),ee("}","switch"),Ee,ut,q,q,U):I=="case"?B(fe,Y(":")):I=="default"?B(Y(":")):I=="catch"?B(ee("form"),ve,Se,K,q,U):I=="export"?B(ee("stat"),Tr,q):I=="import"?B(ee("stat"),Ie,q):I=="async"?B(K):X=="@"?B(fe,K):W(ee("stat"),fe,Y(";"),q)}function Se(I){if(I=="(")return B(jt,Y(")"))}function fe(I,X){return Fe(I,X,!1)}function Ce(I,X){return Fe(I,X,!0)}function De(I){return I!="("?W():B(ee(")"),Ae,Y(")"),q)}function Fe(I,X,oe){if(D.state.fatArrowAt==D.stream.start){var ce=oe?Cr:lr;if(I=="(")return B(ve,ee(")"),Ne(jt,")"),q,Y("=>"),ce,U);if(I=="variable")return W(ve,et,Y("=>"),ce,U)}var Te=oe?je:_e;return R.hasOwnProperty(I)?B(Te):I=="function"?B(gt,Te):I=="class"||v&&X=="interface"?(D.marked="keyword",B(ee("form"),dr,q)):I=="keyword c"||I=="async"?B(oe?Ce:fe):I=="("?B(ee(")"),Ae,Y(")"),q,Te):I=="operator"||I=="spread"?B(oe?Ce:fe):I=="["?B(ee("]"),Re,q,Te):I=="{"?cr(Nt,"}",null,Te):I=="quasi"?W(Je,Te):I=="new"?B(wr(oe)):B()}function Ae(I){return I.match(/[;\}\)\],]/)?W():W(fe)}function _e(I,X){return I==","?B(Ae):je(I,X,!1)}function je(I,X,oe){var ce=oe==!1?_e:je,Te=oe==!1?fe:Ce;if(I=="=>")return B(ve,oe?Cr:lr,U);if(I=="operator")return/\+\+|--/.test(X)||v&&X=="!"?B(ce):v&&X=="<"&&D.stream.match(/^([^<>]|<[^<>]*>)*>\s*\(/,!1)?B(ee(">"),Ne(ke,">"),q,ce):X=="?"?B(fe,Y(":"),Te):B(Te);if(I=="quasi")return W(Je,ce);if(I!=";"){if(I=="(")return cr(Ce,")","call",ce);if(I==".")return B(ti,ce);if(I=="[")return B(ee("]"),Ae,Y("]"),q,ce);if(v&&X=="as")return D.marked="keyword",B(ke,ce);if(I=="regexp")return D.state.lastType=D.marked="operator",D.stream.backUp(D.stream.pos-D.stream.start-1),B(Te)}}function Je(I,X){return I!="quasi"?W():X.slice(X.length-2)!="${"?B(Je):B(Ae,Tt)}function Tt(I){if(I=="}")return D.marked="string-2",D.state.tokenize=g,B(Je)}function lr(I){return T(D.stream,D.state),W(I=="{"?K:fe)}function Cr(I){return T(D.stream,D.state),W(I=="{"?K:Ce)}function wr(I){return function(X){return X=="."?B(I?pi:ei):X=="variable"&&v?B(Qt,I?je:_e):W(I?Ce:fe)}}function ei(I,X){if(X=="target")return D.marked="keyword",B(_e)}function pi(I,X){if(X=="target")return D.marked="keyword",B(je)}function Nr(I){return I==":"?B(q,K):W(_e,Y(";"),q)}function ti(I){if(I=="variable")return D.marked="property",B()}function Nt(I,X){if(I=="async")return D.marked="property",B(Nt);if(I=="variable"||D.style=="keyword"){if(D.marked="property",X=="get"||X=="set")return B(vi);var oe;return v&&D.state.fatArrowAt==D.stream.start&&(oe=D.stream.match(/^\s*:\s*/,!1))&&(D.state.fatArrowAt=D.stream.pos+oe[0].length),B(vt)}else{if(I=="number"||I=="string")return D.marked=y?"property":D.style+" property",B(vt);if(I=="jsonld-keyword")return B(vt);if(v&&$(X))return D.marked="keyword",B(Nt);if(I=="[")return B(fe,Wt,Y("]"),vt);if(I=="spread")return B(Ce,vt);if(X=="*")return D.marked="keyword",B(Nt);if(I==":")return W(vt)}}function vi(I){return I!="variable"?W(vt):(D.marked="property",B(gt))}function vt(I){if(I==":")return B(Ce);if(I=="(")return W(gt)}function Ne(I,X,oe){function ce(Te,Oe){if(oe?oe.indexOf(Te)>-1:Te==","){var pe=D.state.lexical;return pe.info=="call"&&(pe.pos=(pe.pos||0)+1),B(function(Ze,_t){return Ze==X||_t==X?W():W(I)},ce)}return Te==X||Oe==X?B():oe&&oe.indexOf(";")>-1?W(I):B(Y(X))}return function(Te,Oe){return Te==X||Oe==X?B():W(I,ce)}}function cr(I,X,oe){for(var ce=3;ce"),ke);if(I=="quasi")return W(At,ft)}function We(I){if(I=="=>")return B(ke)}function fr(I){return I.match(/[\}\)\]]/)?B():I==","||I==";"?B(fr):W(Ke,fr)}function Ke(I,X){if(I=="variable"||D.style=="keyword")return D.marked="property",B(Ke);if(X=="?"||I=="number"||I=="string")return B(Ke);if(I==":")return B(ke);if(I=="[")return B(Y("variable"),we,Y("]"),Ke);if(I=="(")return W(ht,Ke);if(!I.match(/[;\}\)\],]/))return B()}function At(I,X){return I!="quasi"?W():X.slice(X.length-2)!="${"?B(At):B(ke,Xe)}function Xe(I){if(I=="}")return D.marked="string-2",D.state.tokenize=g,B(At)}function hr(I,X){return I=="variable"&&D.stream.match(/^\s*[?:]/,!1)||X=="?"?B(hr):I==":"?B(ke):I=="spread"?B(hr):W(ke)}function ft(I,X){if(X=="<")return B(ee(">"),Ne(ke,">"),q,ft);if(X=="|"||I=="."||X=="&")return B(ke);if(I=="[")return B(ke,Y("]"),ft);if(X=="extends"||X=="implements")return D.marked="keyword",B(ke);if(X=="?")return B(ke,Y(":"),ke)}function Qt(I,X){if(X=="<")return B(ee(">"),Ne(ke,">"),q,ft)}function Yt(){return W(ke,Wr)}function Wr(I,X){if(X=="=")return B(ke)}function Lr(I,X){return X=="enum"?(D.marked="keyword",B(Rt)):W(et,Wt,Mt,kr)}function et(I,X){if(v&&$(X))return D.marked="keyword",B(et);if(I=="variable")return j(X),B();if(I=="spread")return B(et);if(I=="[")return cr(xr,"]");if(I=="{")return cr(jr,"}")}function jr(I,X){return I=="variable"&&!D.stream.match(/^\s*:/,!1)?(j(X),B(Mt)):(I=="variable"&&(D.marked="property"),I=="spread"?B(et):I=="}"?W():I=="["?B(fe,Y("]"),Y(":"),jr):B(Y(":"),et,Mt))}function xr(){return W(et,Mt)}function Mt(I,X){if(X=="=")return B(Ce)}function kr(I){if(I==",")return B(Lr)}function Ur(I,X){if(I=="keyword b"&&X=="else")return B(ee("form","else"),K,q)}function zr(I,X){if(X=="await")return B(zr);if(I=="(")return B(ee(")"),Er,q)}function Er(I){return I=="var"?B(Lr,Zt):I=="variable"?B(Zt):W(Zt)}function Zt(I,X){return I==")"?B():I==";"?B(Zt):X=="in"||X=="of"?(D.marked="keyword",B(fe,Zt)):W(fe,Zt)}function gt(I,X){if(X=="*")return D.marked="keyword",B(gt);if(I=="variable")return j(X),B(gt);if(I=="(")return B(ve,ee(")"),Ne(jt,")"),q,ur,K,U);if(v&&X=="<")return B(ee(">"),Ne(Yt,">"),q,gt)}function ht(I,X){if(X=="*")return D.marked="keyword",B(ht);if(I=="variable")return j(X),B(ht);if(I=="(")return B(ve,ee(")"),Ne(jt,")"),q,ur,U);if(v&&X=="<")return B(ee(">"),Ne(Yt,">"),q,ht)}function qr(I,X){if(I=="keyword"||I=="variable")return D.marked="type",B(qr);if(X=="<")return B(ee(">"),Ne(Yt,">"),q)}function jt(I,X){return X=="@"&&B(fe,jt),I=="spread"?B(jt):v&&$(X)?(D.marked="keyword",B(jt)):v&&I=="this"?B(Wt,Mt):W(et,Wt,Mt)}function dr(I,X){return I=="variable"?pr(I,X):bt(I,X)}function pr(I,X){if(I=="variable")return j(X),B(bt)}function bt(I,X){if(X=="<")return B(ee(">"),Ne(Yt,">"),q,bt);if(X=="extends"||X=="implements"||v&&I==",")return X=="implements"&&(D.marked="keyword"),B(v?ke:fe,bt);if(I=="{")return B(ee("}"),St,q)}function St(I,X){if(I=="async"||I=="variable"&&(X=="static"||X=="get"||X=="set"||v&&$(X))&&D.stream.match(/^\s+[\w$\xa1-\uffff]/,!1))return D.marked="keyword",B(St);if(I=="variable"||D.style=="keyword")return D.marked="property",B(dt,St);if(I=="number"||I=="string")return B(dt,St);if(I=="[")return B(fe,Wt,Y("]"),dt,St);if(X=="*")return D.marked="keyword",B(St);if(v&&I=="(")return W(ht,St);if(I==";"||I==",")return B(St);if(I=="}")return B();if(X=="@")return B(fe,St)}function dt(I,X){if(X=="!"||X=="?")return B(dt);if(I==":")return B(ke,Mt);if(X=="=")return B(Ce);var oe=D.state.lexical.prev,ce=oe&&oe.info=="interface";return W(ce?ht:gt)}function Tr(I,X){return X=="*"?(D.marked="keyword",B(it,Y(";"))):X=="default"?(D.marked="keyword",B(fe,Y(";"))):I=="{"?B(Ne(Ar,"}"),it,Y(";")):W(K)}function Ar(I,X){if(X=="as")return D.marked="keyword",B(Y("variable"));if(I=="variable")return W(Ce,Ar)}function Ie(I){return I=="string"?B():I=="("?W(fe):I=="."?W(_e):W(me,Ot,it)}function me(I,X){return I=="{"?cr(me,"}"):(I=="variable"&&j(X),X=="*"&&(D.marked="keyword"),B(Mr))}function Ot(I){if(I==",")return B(me,Ot)}function Mr(I,X){if(X=="as")return D.marked="keyword",B(me)}function it(I,X){if(X=="from")return D.marked="keyword",B(fe)}function Re(I){return I=="]"?B():W(Ne(Ce,"]"))}function Rt(){return W(ee("form"),et,Y("{"),ee("}"),Ne(er,"}"),q,q)}function er(){return W(et,Mt)}function Or(I,X){return I.lastType=="operator"||I.lastType==","||c.test(X.charAt(0))||/[,.]/.test(X.charAt(0))}function le(I,X,oe){return X.tokenize==l&&/^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\[{}\(,;:]|=>)$/.test(X.lastType)||X.lastType=="quasi"&&/\{\s*$/.test(I.string.slice(0,I.pos-(oe||0)))}return{startState:function(I){var X={tokenize:l,lastType:"sof",cc:[],lexical:new k((I||0)-f,0,"block",!1),localVars:E.localVars,context:E.localVars&&new ne(null,null,!1),indented:I||0};return E.globalVars&&typeof E.globalVars=="object"&&(X.globalVars=E.globalVars),X},token:function(I,X){if(I.sol()&&(X.lexical.hasOwnProperty("align")||(X.lexical.align=!1),X.indented=I.indentation(),T(I,X)),X.tokenize!=u&&I.eatSpace())return null;var oe=X.tokenize(I,X);return d=="comment"?oe:(X.lastType=d=="operator"&&(s=="++"||s=="--")?"incdec":d,N(X,oe,d,s,I))},indent:function(I,X){if(I.tokenize==u||I.tokenize==g)return V.Pass;if(I.tokenize!=l)return 0;var oe=X&&X.charAt(0),ce=I.lexical,Te;if(!/^\s*else\b/.test(X))for(var Oe=I.cc.length-1;Oe>=0;--Oe){var pe=I.cc[Oe];if(pe==q)ce=ce.prev;else if(pe!=Ur&&pe!=U)break}for(;(ce.type=="stat"||ce.type=="form")&&(oe=="}"||(Te=I.cc[I.cc.length-1])&&(Te==_e||Te==je)&&!/^[,\.=+\-*:?[\(]/.test(X));)ce=ce.prev;L&&ce.type==")"&&ce.prev.type=="stat"&&(ce=ce.prev);var Ze=ce.type,_t=oe==Ze;return Ze=="vardef"?ce.indented+(I.lastType=="operator"||I.lastType==","?ce.info.length+1:0):Ze=="form"&&oe=="{"?ce.indented:Ze=="form"?ce.indented+f:Ze=="stat"?ce.indented+(Or(I,X)?L||f:0):ce.info=="switch"&&!_t&&E.doubleIndentSwitch!=!1?ce.indented+(/^(?:case|default)\b/.test(X)?f:2*f):ce.align?ce.column+(_t?0:1):ce.indented+(_t?0:f)},electricInput:/^\s*(?:case .*?:|default:|\{|\})$/,blockCommentStart:m?null:"/*",blockCommentEnd:m?null:"*/",blockCommentContinue:m?null:" * ",lineComment:m?null:"//",fold:"brace",closeBrackets:"()[]{}''\"\"``",helperType:m?"json":"javascript",jsonldMode:y,jsonMode:m,expressionAllowed:le,skipExpression:function(I){N(I,"atom","atom","true",new V.StringStream("",2,null))}}}),V.registerHelper("wordChars","javascript",/[\w$]/),V.defineMIME("text/javascript","javascript"),V.defineMIME("text/ecmascript","javascript"),V.defineMIME("application/javascript","javascript"),V.defineMIME("application/x-javascript","javascript"),V.defineMIME("application/ecmascript","javascript"),V.defineMIME("application/json",{name:"javascript",json:!0}),V.defineMIME("application/x-json",{name:"javascript",json:!0}),V.defineMIME("application/manifest+json",{name:"javascript",json:!0}),V.defineMIME("application/ld+json",{name:"javascript",jsonld:!0}),V.defineMIME("text/typescript",{name:"javascript",typescript:!0}),V.defineMIME("application/typescript",{name:"javascript",typescript:!0})})});var ps=or((xl,kl)=>{(function(V){typeof xl=="object"&&typeof kl=="object"?V(sr()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],V):V(CodeMirror)})(function(V){"use strict";V.defineMode("perl",function(){var y={"->":4,"++":4,"--":4,"**":4,"=~":4,"!~":4,"*":4,"/":4,"%":4,x:4,"+":4,"-":4,".":4,"<<":4,">>":4,"<":4,">":4,"<=":4,">=":4,lt:4,gt:4,le:4,ge:4,"==":4,"!=":4,"<=>":4,eq:4,ne:4,cmp:4,"~~":4,"&":4,"|":4,"^":4,"&&":4,"||":4,"//":4,"..":4,"...":4,"?":4,":":4,"=":4,"+=":4,"-=":4,"*=":4,",":4,"=>":4,"::":4,not:4,and:4,or:4,xor:4,BEGIN:[5,1],END:[5,1],PRINT:[5,1],PRINTF:[5,1],GETC:[5,1],READ:[5,1],READLINE:[5,1],DESTROY:[5,1],TIE:[5,1],TIEHANDLE:[5,1],UNTIE:[5,1],STDIN:5,STDIN_TOP:5,STDOUT:5,STDOUT_TOP:5,STDERR:5,STDERR_TOP:5,$ARG:5,$_:5,"@ARG":5,"@_":5,$LIST_SEPARATOR:5,'$"':5,$PROCESS_ID:5,$PID:5,$$:5,$REAL_GROUP_ID:5,$GID:5,"$(":5,$EFFECTIVE_GROUP_ID:5,$EGID:5,"$)":5,$PROGRAM_NAME:5,$0:5,$SUBSCRIPT_SEPARATOR:5,$SUBSEP:5,"$;":5,$REAL_USER_ID:5,$UID:5,"$<":5,$EFFECTIVE_USER_ID:5,$EUID:5,"$>":5,$a:5,$b:5,$COMPILING:5,"$^C":5,$DEBUGGING:5,"$^D":5,"${^ENCODING}":5,$ENV:5,"%ENV":5,$SYSTEM_FD_MAX:5,"$^F":5,"@F":5,"${^GLOBAL_PHASE}":5,"$^H":5,"%^H":5,"@INC":5,"%INC":5,$INPLACE_EDIT:5,"$^I":5,"$^M":5,$OSNAME:5,"$^O":5,"${^OPEN}":5,$PERLDB:5,"$^P":5,$SIG:5,"%SIG":5,$BASETIME:5,"$^T":5,"${^TAINT}":5,"${^UNICODE}":5,"${^UTF8CACHE}":5,"${^UTF8LOCALE}":5,$PERL_VERSION:5,"$^V":5,"${^WIN32_SLOPPY_STAT}":5,$EXECUTABLE_NAME:5,"$^X":5,$1:5,$MATCH:5,"$&":5,"${^MATCH}":5,$PREMATCH:5,"$`":5,"${^PREMATCH}":5,$POSTMATCH:5,"$'":5,"${^POSTMATCH}":5,$LAST_PAREN_MATCH:5,"$+":5,$LAST_SUBMATCH_RESULT:5,"$^N":5,"@LAST_MATCH_END":5,"@+":5,"%LAST_PAREN_MATCH":5,"%+":5,"@LAST_MATCH_START":5,"@-":5,"%LAST_MATCH_START":5,"%-":5,$LAST_REGEXP_CODE_RESULT:5,"$^R":5,"${^RE_DEBUG_FLAGS}":5,"${^RE_TRIE_MAXBUF}":5,$ARGV:5,"@ARGV":5,ARGV:5,ARGVOUT:5,$OUTPUT_FIELD_SEPARATOR:5,$OFS:5,"$,":5,$INPUT_LINE_NUMBER:5,$NR:5,"$.":5,$INPUT_RECORD_SEPARATOR:5,$RS:5,"$/":5,$OUTPUT_RECORD_SEPARATOR:5,$ORS:5,"$\\":5,$OUTPUT_AUTOFLUSH:5,"$|":5,$ACCUMULATOR:5,"$^A":5,$FORMAT_FORMFEED:5,"$^L":5,$FORMAT_PAGE_NUMBER:5,"$%":5,$FORMAT_LINES_LEFT:5,"$-":5,$FORMAT_LINE_BREAK_CHARACTERS:5,"$:":5,$FORMAT_LINES_PER_PAGE:5,"$=":5,$FORMAT_TOP_NAME:5,"$^":5,$FORMAT_NAME:5,"$~":5,"${^CHILD_ERROR_NATIVE}":5,$EXTENDED_OS_ERROR:5,"$^E":5,$EXCEPTIONS_BEING_CAUGHT:5,"$^S":5,$WARNING:5,"$^W":5,"${^WARNING_BITS}":5,$OS_ERROR:5,$ERRNO:5,"$!":5,"%OS_ERROR":5,"%ERRNO":5,"%!":5,$CHILD_ERROR:5,"$?":5,$EVAL_ERROR:5,"$@":5,$OFMT:5,"$#":5,"$*":5,$ARRAY_BASE:5,"$[":5,$OLD_PERL_VERSION:5,"$]":5,if:[1,1],elsif:[1,1],else:[1,1],while:[1,1],unless:[1,1],for:[1,1],foreach:[1,1],abs:1,accept:1,alarm:1,atan2:1,bind:1,binmode:1,bless:1,bootstrap:1,break:1,caller:1,chdir:1,chmod:1,chomp:1,chop:1,chown:1,chr:1,chroot:1,close:1,closedir:1,connect:1,continue:[1,1],cos:1,crypt:1,dbmclose:1,dbmopen:1,default:1,defined:1,delete:1,die:1,do:1,dump:1,each:1,endgrent:1,endhostent:1,endnetent:1,endprotoent:1,endpwent:1,endservent:1,eof:1,eval:1,exec:1,exists:1,exit:1,exp:1,fcntl:1,fileno:1,flock:1,fork:1,format:1,formline:1,getc:1,getgrent:1,getgrgid:1,getgrnam:1,gethostbyaddr:1,gethostbyname:1,gethostent:1,getlogin:1,getnetbyaddr:1,getnetbyname:1,getnetent:1,getpeername:1,getpgrp:1,getppid:1,getpriority:1,getprotobyname:1,getprotobynumber:1,getprotoent:1,getpwent:1,getpwnam:1,getpwuid:1,getservbyname:1,getservbyport:1,getservent:1,getsockname:1,getsockopt:1,given:1,glob:1,gmtime:1,goto:1,grep:1,hex:1,import:1,index:1,int:1,ioctl:1,join:1,keys:1,kill:1,last:1,lc:1,lcfirst:1,length:1,link:1,listen:1,local:2,localtime:1,lock:1,log:1,lstat:1,m:null,map:1,mkdir:1,msgctl:1,msgget:1,msgrcv:1,msgsnd:1,my:2,new:1,next:1,no:1,oct:1,open:1,opendir:1,ord:1,our:2,pack:1,package:1,pipe:1,pop:1,pos:1,print:1,printf:1,prototype:1,push:1,q:null,qq:null,qr:null,quotemeta:null,qw:null,qx:null,rand:1,read:1,readdir:1,readline:1,readlink:1,readpipe:1,recv:1,redo:1,ref:1,rename:1,require:1,reset:1,return:1,reverse:1,rewinddir:1,rindex:1,rmdir:1,s:null,say:1,scalar:1,seek:1,seekdir:1,select:1,semctl:1,semget:1,semop:1,send:1,setgrent:1,sethostent:1,setnetent:1,setpgrp:1,setpriority:1,setprotoent:1,setpwent:1,setservent:1,setsockopt:1,shift:1,shmctl:1,shmget:1,shmread:1,shmwrite:1,shutdown:1,sin:1,sleep:1,socket:1,socketpair:1,sort:1,splice:1,split:1,sprintf:1,sqrt:1,srand:1,stat:1,state:1,study:1,sub:1,substr:1,symlink:1,syscall:1,sysopen:1,sysread:1,sysseek:1,system:1,syswrite:1,tell:1,telldir:1,tie:1,tied:1,time:1,times:1,tr:null,truncate:1,uc:1,ucfirst:1,umask:1,undef:1,unlink:1,unpack:1,unshift:1,untie:1,use:1,utime:1,values:1,vec:1,wait:1,waitpid:1,wantarray:1,warn:1,when:1,write:1,y:null},m="string-2",_=/[goseximacplud]/;function v(c,p,C,d,s){return p.chain=null,p.style=null,p.tail=null,p.tokenize=function(o,l){for(var a=!1,u,g=0;u=o.next();){if(u===C[g]&&!a)return C[++g]!==void 0?(l.chain=C[g],l.style=d,l.tail=s):s&&o.eatWhile(s),l.tokenize=w,d;a=!a&&u=="\\"}return d},p.tokenize(c,p)}function A(c,p,C){return p.tokenize=function(d,s){return d.string==C&&(s.tokenize=w),d.skipToEnd(),"string"},p.tokenize(c,p)}function w(c,p){if(c.eatSpace())return null;if(p.chain)return v(c,p,p.chain,p.style,p.tail);if(c.match(/^(\-?((\d[\d_]*)?\.\d+(e[+-]?\d+)?|\d+\.\d*)|0x[\da-fA-F_]+|0b[01_]+|\d[\d_]*(e[+-]?\d+)?)/))return"number";if(c.match(/^<<(?=[_a-zA-Z])/))return c.eatWhile(/\w/),A(c,p,c.current().substr(2));if(c.sol()&&c.match(/^\=item(?!\w)/))return A(c,p,"=cut");var C=c.next();if(C=='"'||C=="'"){if(E(c,3)=="<<"+C){var d=c.pos;c.eatWhile(/\w/);var s=c.current().substr(1);if(s&&c.eat(C))return A(c,p,s);c.pos=d}return v(c,p,[C],"string")}if(C=="q"){var o=H(c,-2);if(!(o&&/\w/.test(o))){if(o=H(c,0),o=="x"){if(o=H(c,1),o=="(")return L(c,2),v(c,p,[")"],m,_);if(o=="[")return L(c,2),v(c,p,["]"],m,_);if(o=="{")return L(c,2),v(c,p,["}"],m,_);if(o=="<")return L(c,2),v(c,p,[">"],m,_);if(/[\^'"!~\/]/.test(o))return L(c,1),v(c,p,[c.eat(o)],m,_)}else if(o=="q"){if(o=H(c,1),o=="(")return L(c,2),v(c,p,[")"],"string");if(o=="[")return L(c,2),v(c,p,["]"],"string");if(o=="{")return L(c,2),v(c,p,["}"],"string");if(o=="<")return L(c,2),v(c,p,[">"],"string");if(/[\^'"!~\/]/.test(o))return L(c,1),v(c,p,[c.eat(o)],"string")}else if(o=="w"){if(o=H(c,1),o=="(")return L(c,2),v(c,p,[")"],"bracket");if(o=="[")return L(c,2),v(c,p,["]"],"bracket");if(o=="{")return L(c,2),v(c,p,["}"],"bracket");if(o=="<")return L(c,2),v(c,p,[">"],"bracket");if(/[\^'"!~\/]/.test(o))return L(c,1),v(c,p,[c.eat(o)],"bracket")}else if(o=="r"){if(o=H(c,1),o=="(")return L(c,2),v(c,p,[")"],m,_);if(o=="[")return L(c,2),v(c,p,["]"],m,_);if(o=="{")return L(c,2),v(c,p,["}"],m,_);if(o=="<")return L(c,2),v(c,p,[">"],m,_);if(/[\^'"!~\/]/.test(o))return L(c,1),v(c,p,[c.eat(o)],m,_)}else if(/[\^'"!~\/(\[{<]/.test(o)){if(o=="(")return L(c,1),v(c,p,[")"],"string");if(o=="[")return L(c,1),v(c,p,["]"],"string");if(o=="{")return L(c,1),v(c,p,["}"],"string");if(o=="<")return L(c,1),v(c,p,[">"],"string");if(/[\^'"!~\/]/.test(o))return v(c,p,[c.eat(o)],"string")}}}if(C=="m"){var o=H(c,-2);if(!(o&&/\w/.test(o))&&(o=c.eat(/[(\[{<\^'"!~\/]/),o)){if(/[\^'"!~\/]/.test(o))return v(c,p,[o],m,_);if(o=="(")return v(c,p,[")"],m,_);if(o=="[")return v(c,p,["]"],m,_);if(o=="{")return v(c,p,["}"],m,_);if(o=="<")return v(c,p,[">"],m,_)}}if(C=="s"){var o=/[\/>\]})\w]/.test(H(c,-2));if(!o&&(o=c.eat(/[(\[{<\^'"!~\/]/),o))return o=="["?v(c,p,["]","]"],m,_):o=="{"?v(c,p,["}","}"],m,_):o=="<"?v(c,p,[">",">"],m,_):o=="("?v(c,p,[")",")"],m,_):v(c,p,[o,o],m,_)}if(C=="y"){var o=/[\/>\]})\w]/.test(H(c,-2));if(!o&&(o=c.eat(/[(\[{<\^'"!~\/]/),o))return o=="["?v(c,p,["]","]"],m,_):o=="{"?v(c,p,["}","}"],m,_):o=="<"?v(c,p,[">",">"],m,_):o=="("?v(c,p,[")",")"],m,_):v(c,p,[o,o],m,_)}if(C=="t"){var o=/[\/>\]})\w]/.test(H(c,-2));if(!o&&(o=c.eat("r"),o&&(o=c.eat(/[(\[{<\^'"!~\/]/),o)))return o=="["?v(c,p,["]","]"],m,_):o=="{"?v(c,p,["}","}"],m,_):o=="<"?v(c,p,[">",">"],m,_):o=="("?v(c,p,[")",")"],m,_):v(c,p,[o,o],m,_)}if(C=="`")return v(c,p,[C],"variable-2");if(C=="/")return/~\s*$/.test(E(c))?v(c,p,[C],m,_):"operator";if(C=="$"){var d=c.pos;if(c.eatWhile(/\d/)||c.eat("{")&&c.eatWhile(/\d/)&&c.eat("}"))return"variable-2";c.pos=d}if(/[$@%]/.test(C)){var d=c.pos;if(c.eat("^")&&c.eat(/[A-Z]/)||!/[@$%&]/.test(H(c,-2))&&c.eat(/[=|\\\-#?@;:&`~\^!\[\]*'"$+.,\/<>()]/)){var o=c.current();if(y[o])return"variable-2"}c.pos=d}if(/[$@%&]/.test(C)&&(c.eatWhile(/[\w$]/)||c.eat("{")&&c.eatWhile(/[\w$]/)&&c.eat("}"))){var o=c.current();return y[o]?"variable-2":"variable"}if(C=="#"&&H(c,-2)!="$")return c.skipToEnd(),"comment";if(/[:+\-\^*$&%@=<>!?|\/~\.]/.test(C)){var d=c.pos;if(c.eatWhile(/[:+\-\^*$&%@=<>!?|\/~\.]/),y[c.current()])return"operator";c.pos=d}if(C=="_"&&c.pos==1){if(f(c,6)=="_END__")return v(c,p,["\0"],"comment");if(f(c,7)=="_DATA__")return v(c,p,["\0"],"variable-2");if(f(c,7)=="_C__")return v(c,p,["\0"],"string")}if(/\w/.test(C)){var d=c.pos;if(H(c,-2)=="{"&&(H(c,0)=="}"||c.eatWhile(/\w/)&&H(c,0)=="}"))return"string";c.pos=d}if(/[A-Z]/.test(C)){var l=H(c,-2),d=c.pos;if(c.eatWhile(/[A-Z_]/),/[\da-z]/.test(H(c,0)))c.pos=d;else{var o=y[c.current()];return o?(o[1]&&(o=o[0]),l!=":"?o==1?"keyword":o==2?"def":o==3?"atom":o==4?"operator":o==5?"variable-2":"meta":"meta"):"meta"}}if(/[a-zA-Z_]/.test(C)){var l=H(c,-2);c.eatWhile(/\w/);var o=y[c.current()];return o?(o[1]&&(o=o[0]),l!=":"?o==1?"keyword":o==2?"def":o==3?"atom":o==4?"operator":o==5?"variable-2":"meta":"meta"):"meta"}return null}return{startState:function(){return{tokenize:w,chain:null,style:null,tail:null}},token:function(c,p){return(p.tokenize||w)(c,p)},lineComment:"#"}}),V.registerHelper("wordChars","perl",/[\w$]/),V.defineMIME("text/x-perl","perl");function H(y,m){return y.string.charAt(y.pos+(m||0))}function E(y,m){if(m){var _=y.pos-m;return y.string.substr(_>=0?_:0,m)}else return y.string.substr(0,y.pos-1)}function f(y,m){var _=y.string.length,v=_-y.pos+1;return y.string.substr(y.pos,m&&m<_?m:v)}function L(y,m){var _=y.pos+m,v;_<=0?y.pos=0:_>=(v=y.string.length-1)?y.pos=v:y.pos=_}})});var Ol=or(Qr=>{"use strict";var co=Qr&&Qr.__assign||function(){return co=Object.assign||function(V){for(var H,E=1,f=arguments.length;E0&&E.hide()}),this.element.classList.remove(this.toastShowClass),this.element.classList.add(this.toastHideClass),this.trigger("hide"),this.animation){var f=function(){return E.remove()},L=function(){m||(E.element.addEventListener("transitionend",function(){return f()}),m=!0)},y=function(){E.show(),E.element.removeEventListener("transitionstart",function(){return L()}),E.element.removeEventListener("transitionend",function(){return f()}),E.element.removeEventListener("mouseover",function(){return y()}),E.element.addEventListener("mouseout",function(){return E.hide()})},m=!1;this.element.addEventListener("mouseover",function(){return y()}),this.element.addEventListener("transitionstart",function(){return L()});return}this.remove()}},V.prototype.remove=function(){this.element.parentNode===this.container&&(this.container.removeChild(this.element),this.trigger("remove"))},V.prototype.buildClose=function(H){var E=this,f=document.createElement("button");return f.setAttribute("title",H),f.appendChild(document.createTextNode(H)),f.addEventListener("click",function(){return E.hide()}),f},V.prototype.getContainer=function(H){var E=H.containerClass,f=H.containerElement,L=H.root,y=L.querySelector("".concat(f,".").concat(E));if(y)return y;var m=document.createElement(f);return m.classList.add(E),L.appendChild(m),m},V.prototype.on=function(H,E){this.events[H]||(this.events[H]=[]),this.events[H].push(E)},V.prototype.off=function(H,E){if(E===void 0&&(E=null),!E){this.events[H]=[];return}var f=this.events[H].indexOf(E);f===-1&&this.events[H].splice(f,1)},V.prototype.trigger=function(H){for(var E=this,f=[],L=1;L{(function(V,H){if(typeof go=="object"&&typeof Ts=="object")Ts.exports=H();else if(typeof define=="function"&&define.amd)define([],H);else{var E=H();for(var f in E)(typeof go=="object"?go:V)[f]=E[f]}})(self,function(){return(()=>{"use strict";var V={4567:function(E,f,L){var y,m=this&&this.__extends||(y=function(s,o){return y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(l,a){l.__proto__=a}||function(l,a){for(var u in a)Object.prototype.hasOwnProperty.call(a,u)&&(l[u]=a[u])},y(s,o)},function(s,o){if(typeof o!="function"&&o!==null)throw new TypeError("Class extends value "+String(o)+" is not a constructor or null");function l(){this.constructor=s}y(s,o),s.prototype=o===null?Object.create(o):(l.prototype=o.prototype,new l)});Object.defineProperty(f,"__esModule",{value:!0}),f.AccessibilityManager=void 0;var _=L(9042),v=L(6114),A=L(9924),w=L(3656),c=L(844),p=L(5596),C=L(9631),d=function(s){function o(l,a){var u=s.call(this)||this;u._terminal=l,u._renderService=a,u._liveRegionLineCount=0,u._charsToConsume=[],u._charsToAnnounce="",u._accessibilityTreeRoot=document.createElement("div"),u._accessibilityTreeRoot.classList.add("xterm-accessibility"),u._accessibilityTreeRoot.tabIndex=0,u._rowContainer=document.createElement("div"),u._rowContainer.setAttribute("role","list"),u._rowContainer.classList.add("xterm-accessibility-tree"),u._rowElements=[];for(var g=0;gl;)this._rowContainer.removeChild(this._rowElements.pop());this._rowElements[this._rowElements.length-1].addEventListener("focus",this._bottomBoundaryFocusListener),this._refreshRowsDimensions()},o.prototype._createAccessibilityTreeNode=function(){var l=document.createElement("div");return l.setAttribute("role","listitem"),l.tabIndex=-1,this._refreshRowDimensions(l),l},o.prototype._onTab=function(l){for(var a=0;a0?this._charsToConsume.shift()!==l&&(this._charsToAnnounce+=l):this._charsToAnnounce+=l,l===` -`&&(this._liveRegionLineCount++,this._liveRegionLineCount===21&&(this._liveRegion.textContent+=_.tooMuchOutput)),v.isMac&&this._liveRegion.textContent&&this._liveRegion.textContent.length>0&&!this._liveRegion.parentNode&&setTimeout(function(){a._accessibilityTreeRoot.appendChild(a._liveRegion)},0))},o.prototype._clearLiveRegion=function(){this._liveRegion.textContent="",this._liveRegionLineCount=0,v.isMac&&(0,C.removeElementFromParent)(this._liveRegion)},o.prototype._onKey=function(l){this._clearLiveRegion(),this._charsToConsume.push(l)},o.prototype._refreshRows=function(l,a){this._renderRowsDebouncer.refresh(l,a,this._terminal.rows)},o.prototype._renderRows=function(l,a){for(var u=this._terminal.buffer,g=u.lines.length.toString(),b=l;b<=a;b++){var T=u.translateBufferLineToString(u.ydisp+b,!0),R=(u.ydisp+b+1).toString(),k=this._rowElements[b];k&&(T.length===0?k.innerText="\xA0":k.textContent=T,k.setAttribute("aria-posinset",R),k.setAttribute("aria-setsize",g))}this._announceCharacters()},o.prototype._refreshRowsDimensions=function(){if(this._renderService.dimensions.actualCellHeight){this._rowElements.length!==this._terminal.rows&&this._onResize(this._terminal.rows);for(var l=0;l{function L(v){return v.replace(/\r?\n/g,"\r")}function y(v,A){return A?"\x1B[200~"+v+"\x1B[201~":v}function m(v,A,w){v=y(v=L(v),w.decPrivateModes.bracketedPasteMode),w.triggerDataEvent(v,!0),A.value=""}function _(v,A,w){var c=w.getBoundingClientRect(),p=v.clientX-c.left-10,C=v.clientY-c.top-10;A.style.width="20px",A.style.height="20px",A.style.left=p+"px",A.style.top=C+"px",A.style.zIndex="1000",A.focus()}Object.defineProperty(f,"__esModule",{value:!0}),f.rightClickHandler=f.moveTextAreaUnderMouseCursor=f.paste=f.handlePasteEvent=f.copyHandler=f.bracketTextForPaste=f.prepareTextForTerminal=void 0,f.prepareTextForTerminal=L,f.bracketTextForPaste=y,f.copyHandler=function(v,A){v.clipboardData&&v.clipboardData.setData("text/plain",A.selectionText),v.preventDefault()},f.handlePasteEvent=function(v,A,w){v.stopPropagation(),v.clipboardData&&m(v.clipboardData.getData("text/plain"),A,w)},f.paste=m,f.moveTextAreaUnderMouseCursor=_,f.rightClickHandler=function(v,A,w,c,p){_(v,A,w),p&&c.rightClickSelect(v),A.value=c.selectionText,A.select()}},4774:(E,f)=>{var L,y,m,_;function v(w){var c=w.toString(16);return c.length<2?"0"+c:c}function A(w,c){return w>>0}}(L=f.channels||(f.channels={})),(y=f.color||(f.color={})).blend=function(w,c){var p=(255&c.rgba)/255;if(p===1)return{css:c.css,rgba:c.rgba};var C=c.rgba>>24&255,d=c.rgba>>16&255,s=c.rgba>>8&255,o=w.rgba>>24&255,l=w.rgba>>16&255,a=w.rgba>>8&255,u=o+Math.round((C-o)*p),g=l+Math.round((d-l)*p),b=a+Math.round((s-a)*p);return{css:L.toCss(u,g,b),rgba:L.toRgba(u,g,b)}},y.isOpaque=function(w){return(255&w.rgba)==255},y.ensureContrastRatio=function(w,c,p){var C=_.ensureContrastRatio(w.rgba,c.rgba,p);if(C)return _.toColor(C>>24&255,C>>16&255,C>>8&255)},y.opaque=function(w){var c=(255|w.rgba)>>>0,p=_.toChannels(c),C=p[0],d=p[1],s=p[2];return{css:L.toCss(C,d,s),rgba:c}},y.opacity=function(w,c){var p=Math.round(255*c),C=_.toChannels(w.rgba),d=C[0],s=C[1],o=C[2];return{css:L.toCss(d,s,o,p),rgba:L.toRgba(d,s,o,p)}},y.toColorRGB=function(w){return[w.rgba>>24&255,w.rgba>>16&255,w.rgba>>8&255]},(f.css||(f.css={})).toColor=function(w){switch(w.length){case 7:return{css:w,rgba:(parseInt(w.slice(1),16)<<8|255)>>>0};case 9:return{css:w,rgba:parseInt(w.slice(1),16)>>>0}}throw new Error("css.toColor: Unsupported css format")},function(w){function c(p,C,d){var s=p/255,o=C/255,l=d/255;return .2126*(s<=.03928?s/12.92:Math.pow((s+.055)/1.055,2.4))+.7152*(o<=.03928?o/12.92:Math.pow((o+.055)/1.055,2.4))+.0722*(l<=.03928?l/12.92:Math.pow((l+.055)/1.055,2.4))}w.relativeLuminance=function(p){return c(p>>16&255,p>>8&255,255&p)},w.relativeLuminance2=c}(m=f.rgb||(f.rgb={})),function(w){function c(C,d,s){for(var o=C>>24&255,l=C>>16&255,a=C>>8&255,u=d>>24&255,g=d>>16&255,b=d>>8&255,T=A(m.relativeLuminance2(u,b,g),m.relativeLuminance2(o,l,a));T0||g>0||b>0);)u-=Math.max(0,Math.ceil(.1*u)),g-=Math.max(0,Math.ceil(.1*g)),b-=Math.max(0,Math.ceil(.1*b)),T=A(m.relativeLuminance2(u,b,g),m.relativeLuminance2(o,l,a));return(u<<24|g<<16|b<<8|255)>>>0}function p(C,d,s){for(var o=C>>24&255,l=C>>16&255,a=C>>8&255,u=d>>24&255,g=d>>16&255,b=d>>8&255,T=A(m.relativeLuminance2(u,b,g),m.relativeLuminance2(o,l,a));T>>0}w.ensureContrastRatio=function(C,d,s){var o=m.relativeLuminance(C>>8),l=m.relativeLuminance(d>>8);if(A(o,l)>24&255,C>>16&255,C>>8&255,255&C]},w.toColor=function(C,d,s){return{css:L.toCss(C,d,s),rgba:L.toRgba(C,d,s)}}}(_=f.rgba||(f.rgba={})),f.toPaddedHex=v,f.contrastRatio=A},7239:(E,f)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.ColorContrastCache=void 0;var L=function(){function y(){this._color={},this._rgba={}}return y.prototype.clear=function(){this._color={},this._rgba={}},y.prototype.setCss=function(m,_,v){this._rgba[m]||(this._rgba[m]={}),this._rgba[m][_]=v},y.prototype.getCss=function(m,_){return this._rgba[m]?this._rgba[m][_]:void 0},y.prototype.setColor=function(m,_,v){this._color[m]||(this._color[m]={}),this._color[m][_]=v},y.prototype.getColor=function(m,_){return this._color[m]?this._color[m][_]:void 0},y}();f.ColorContrastCache=L},5680:function(E,f,L){var y=this&&this.__spreadArray||function(d,s,o){if(o||arguments.length===2)for(var l,a=0,u=s.length;a{Object.defineProperty(f,"__esModule",{value:!0}),f.removeElementFromParent=void 0,f.removeElementFromParent=function(){for(var L,y=[],m=0;m{Object.defineProperty(f,"__esModule",{value:!0}),f.addDisposableDomListener=void 0,f.addDisposableDomListener=function(L,y,m,_){L.addEventListener(y,m,_);var v=!1;return{dispose:function(){v||(v=!0,L.removeEventListener(y,m,_))}}}},3551:function(E,f,L){var y=this&&this.__decorate||function(c,p,C,d){var s,o=arguments.length,l=o<3?p:d===null?d=Object.getOwnPropertyDescriptor(p,C):d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")l=Reflect.decorate(c,p,C,d);else for(var a=c.length-1;a>=0;a--)(s=c[a])&&(l=(o<3?s(l):o>3?s(p,C,l):s(p,C))||l);return o>3&&l&&Object.defineProperty(p,C,l),l},m=this&&this.__param||function(c,p){return function(C,d){p(C,d,c)}};Object.defineProperty(f,"__esModule",{value:!0}),f.MouseZone=f.Linkifier=void 0;var _=L(8460),v=L(2585),A=function(){function c(p,C,d){this._bufferService=p,this._logService=C,this._unicodeService=d,this._linkMatchers=[],this._nextLinkMatcherId=0,this._onShowLinkUnderline=new _.EventEmitter,this._onHideLinkUnderline=new _.EventEmitter,this._onLinkTooltip=new _.EventEmitter,this._rowsToLinkify={start:void 0,end:void 0}}return Object.defineProperty(c.prototype,"onShowLinkUnderline",{get:function(){return this._onShowLinkUnderline.event},enumerable:!1,configurable:!0}),Object.defineProperty(c.prototype,"onHideLinkUnderline",{get:function(){return this._onHideLinkUnderline.event},enumerable:!1,configurable:!0}),Object.defineProperty(c.prototype,"onLinkTooltip",{get:function(){return this._onLinkTooltip.event},enumerable:!1,configurable:!0}),c.prototype.attachToDom=function(p,C){this._element=p,this._mouseZoneManager=C},c.prototype.linkifyRows=function(p,C){var d=this;this._mouseZoneManager&&(this._rowsToLinkify.start===void 0||this._rowsToLinkify.end===void 0?(this._rowsToLinkify.start=p,this._rowsToLinkify.end=C):(this._rowsToLinkify.start=Math.min(this._rowsToLinkify.start,p),this._rowsToLinkify.end=Math.max(this._rowsToLinkify.end,C)),this._mouseZoneManager.clearAll(p,C),this._rowsTimeoutId&&clearTimeout(this._rowsTimeoutId),this._rowsTimeoutId=setTimeout(function(){return d._linkifyRows()},c._timeBeforeLatency))},c.prototype._linkifyRows=function(){this._rowsTimeoutId=void 0;var p=this._bufferService.buffer;if(this._rowsToLinkify.start!==void 0&&this._rowsToLinkify.end!==void 0){var C=p.ydisp+this._rowsToLinkify.start;if(!(C>=p.lines.length)){for(var d=p.ydisp+Math.min(this._rowsToLinkify.end,this._bufferService.rows)+1,s=Math.ceil(2e3/this._bufferService.cols),o=this._bufferService.buffer.iterator(!1,C,d,s,s);o.hasNext();)for(var l=o.next(),a=0;a=0;C--)if(p.priority<=this._linkMatchers[C].priority)return void this._linkMatchers.splice(C+1,0,p);this._linkMatchers.splice(0,0,p)}else this._linkMatchers.push(p)},c.prototype.deregisterLinkMatcher=function(p){for(var C=0;C>9&511:void 0;d.validationCallback?d.validationCallback(b,function(N){o._rowsTimeoutId||N&&o._addLink(T[1],T[0]-o._bufferService.buffer.ydisp,b,d,M)}):g._addLink(T[1],T[0]-g._bufferService.buffer.ydisp,b,d,M)},g=this;(s=l.exec(C))!==null&&u()!=="break";);},c.prototype._addLink=function(p,C,d,s,o){var l=this;if(this._mouseZoneManager&&this._element){var a=this._unicodeService.getStringCellWidth(d),u=p%this._bufferService.cols,g=C+Math.floor(p/this._bufferService.cols),b=(u+a)%this._bufferService.cols,T=g+Math.floor((u+a)/this._bufferService.cols);b===0&&(b=this._bufferService.cols,T--),this._mouseZoneManager.add(new w(u+1,g+1,b+1,T+1,function(R){if(s.handler)return s.handler(R,d);var k=window.open();k?(k.opener=null,k.location.href=d):console.warn("Opening link blocked as opener could not be cleared")},function(){l._onShowLinkUnderline.fire(l._createLinkHoverEvent(u,g,b,T,o)),l._element.classList.add("xterm-cursor-pointer")},function(R){l._onLinkTooltip.fire(l._createLinkHoverEvent(u,g,b,T,o)),s.hoverTooltipCallback&&s.hoverTooltipCallback(R,d,{start:{x:u,y:g},end:{x:b,y:T}})},function(){l._onHideLinkUnderline.fire(l._createLinkHoverEvent(u,g,b,T,o)),l._element.classList.remove("xterm-cursor-pointer"),s.hoverLeaveCallback&&s.hoverLeaveCallback()},function(R){return!s.willLinkActivate||s.willLinkActivate(R,d)}))}},c.prototype._createLinkHoverEvent=function(p,C,d,s,o){return{x1:p,y1:C,x2:d,y2:s,cols:this._bufferService.cols,fg:o}},c._timeBeforeLatency=200,c=y([m(0,v.IBufferService),m(1,v.ILogService),m(2,v.IUnicodeService)],c)}();f.Linkifier=A;var w=function(c,p,C,d,s,o,l,a,u){this.x1=c,this.y1=p,this.x2=C,this.y2=d,this.clickCallback=s,this.hoverCallback=o,this.tooltipCallback=l,this.leaveCallback=a,this.willLinkActivate=u};f.MouseZone=w},6465:function(E,f,L){var y,m=this&&this.__extends||(y=function(d,s){return y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(o,l){o.__proto__=l}||function(o,l){for(var a in l)Object.prototype.hasOwnProperty.call(l,a)&&(o[a]=l[a])},y(d,s)},function(d,s){if(typeof s!="function"&&s!==null)throw new TypeError("Class extends value "+String(s)+" is not a constructor or null");function o(){this.constructor=d}y(d,s),d.prototype=s===null?Object.create(s):(o.prototype=s.prototype,new o)}),_=this&&this.__decorate||function(d,s,o,l){var a,u=arguments.length,g=u<3?s:l===null?l=Object.getOwnPropertyDescriptor(s,o):l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")g=Reflect.decorate(d,s,o,l);else for(var b=d.length-1;b>=0;b--)(a=d[b])&&(g=(u<3?a(g):u>3?a(s,o,g):a(s,o))||g);return u>3&&g&&Object.defineProperty(s,o,g),g},v=this&&this.__param||function(d,s){return function(o,l){s(o,l,d)}};Object.defineProperty(f,"__esModule",{value:!0}),f.Linkifier2=void 0;var A=L(2585),w=L(8460),c=L(844),p=L(3656),C=function(d){function s(o){var l=d.call(this)||this;return l._bufferService=o,l._linkProviders=[],l._linkCacheDisposables=[],l._isMouseOut=!0,l._activeLine=-1,l._onShowLinkUnderline=l.register(new w.EventEmitter),l._onHideLinkUnderline=l.register(new w.EventEmitter),l.register((0,c.getDisposeArrayDisposable)(l._linkCacheDisposables)),l}return m(s,d),Object.defineProperty(s.prototype,"currentLink",{get:function(){return this._currentLink},enumerable:!1,configurable:!0}),Object.defineProperty(s.prototype,"onShowLinkUnderline",{get:function(){return this._onShowLinkUnderline.event},enumerable:!1,configurable:!0}),Object.defineProperty(s.prototype,"onHideLinkUnderline",{get:function(){return this._onHideLinkUnderline.event},enumerable:!1,configurable:!0}),s.prototype.registerLinkProvider=function(o){var l=this;return this._linkProviders.push(o),{dispose:function(){var a=l._linkProviders.indexOf(o);a!==-1&&l._linkProviders.splice(a,1)}}},s.prototype.attachToDom=function(o,l,a){var u=this;this._element=o,this._mouseService=l,this._renderService=a,this.register((0,p.addDisposableDomListener)(this._element,"mouseleave",function(){u._isMouseOut=!0,u._clearCurrentLink()})),this.register((0,p.addDisposableDomListener)(this._element,"mousemove",this._onMouseMove.bind(this))),this.register((0,p.addDisposableDomListener)(this._element,"click",this._onClick.bind(this)))},s.prototype._onMouseMove=function(o){if(this._lastMouseEvent=o,this._element&&this._mouseService){var l=this._positionFromMouseEvent(o,this._element,this._mouseService);if(l){this._isMouseOut=!1;for(var a=o.composedPath(),u=0;uo?this._bufferService.cols:T.link.range.end.x,M=R;M<=k;M++){if(a.has(M)){g.splice(b--,1);break}a.add(M)}}},s.prototype._checkLinkProviderResult=function(o,l,a){var u,g=this;if(!this._activeProviderReplies)return a;for(var b=this._activeProviderReplies.get(o),T=!1,R=0;R=o&&this._currentLink.link.range.end.y<=l)&&(this._linkLeave(this._element,this._currentLink.link,this._lastMouseEvent),this._currentLink=void 0,(0,c.disposeArray)(this._linkCacheDisposables))},s.prototype._handleNewLink=function(o){var l=this;if(this._element&&this._lastMouseEvent&&this._mouseService){var a=this._positionFromMouseEvent(this._lastMouseEvent,this._element,this._mouseService);a&&this._linkAtPosition(o.link,a)&&(this._currentLink=o,this._currentLink.state={decorations:{underline:o.link.decorations===void 0||o.link.decorations.underline,pointerCursor:o.link.decorations===void 0||o.link.decorations.pointerCursor},isHovered:!0},this._linkHover(this._element,o.link,this._lastMouseEvent),o.link.decorations={},Object.defineProperties(o.link.decorations,{pointerCursor:{get:function(){var u,g;return(g=(u=l._currentLink)===null||u===void 0?void 0:u.state)===null||g===void 0?void 0:g.decorations.pointerCursor},set:function(u){var g,b;((g=l._currentLink)===null||g===void 0?void 0:g.state)&&l._currentLink.state.decorations.pointerCursor!==u&&(l._currentLink.state.decorations.pointerCursor=u,l._currentLink.state.isHovered&&((b=l._element)===null||b===void 0||b.classList.toggle("xterm-cursor-pointer",u)))}},underline:{get:function(){var u,g;return(g=(u=l._currentLink)===null||u===void 0?void 0:u.state)===null||g===void 0?void 0:g.decorations.underline},set:function(u){var g,b,T;((g=l._currentLink)===null||g===void 0?void 0:g.state)&&((T=(b=l._currentLink)===null||b===void 0?void 0:b.state)===null||T===void 0?void 0:T.decorations.underline)!==u&&(l._currentLink.state.decorations.underline=u,l._currentLink.state.isHovered&&l._fireUnderlineEvent(o.link,u))}}}),this._renderService&&this._linkCacheDisposables.push(this._renderService.onRenderedBufferChange(function(u){var g=u.start===0?0:u.start+1+l._bufferService.buffer.ydisp;l._clearCurrentLink(g,u.end+1+l._bufferService.buffer.ydisp)})))}},s.prototype._linkHover=function(o,l,a){var u;!((u=this._currentLink)===null||u===void 0)&&u.state&&(this._currentLink.state.isHovered=!0,this._currentLink.state.decorations.underline&&this._fireUnderlineEvent(l,!0),this._currentLink.state.decorations.pointerCursor&&o.classList.add("xterm-cursor-pointer")),l.hover&&l.hover(a,l.text)},s.prototype._fireUnderlineEvent=function(o,l){var a=o.range,u=this._bufferService.buffer.ydisp,g=this._createLinkUnderlineEvent(a.start.x-1,a.start.y-u-1,a.end.x,a.end.y-u-1,void 0);(l?this._onShowLinkUnderline:this._onHideLinkUnderline).fire(g)},s.prototype._linkLeave=function(o,l,a){var u;!((u=this._currentLink)===null||u===void 0)&&u.state&&(this._currentLink.state.isHovered=!1,this._currentLink.state.decorations.underline&&this._fireUnderlineEvent(l,!1),this._currentLink.state.decorations.pointerCursor&&o.classList.remove("xterm-cursor-pointer")),l.leave&&l.leave(a,l.text)},s.prototype._linkAtPosition=function(o,l){var a=o.range.start.y===o.range.end.y,u=o.range.start.yl.y;return(a&&o.range.start.x<=l.x&&o.range.end.x>=l.x||u&&o.range.end.x>=l.x||g&&o.range.start.x<=l.x||u&&g)&&o.range.start.y<=l.y&&o.range.end.y>=l.y},s.prototype._positionFromMouseEvent=function(o,l,a){var u=a.getCoords(o,l,this._bufferService.cols,this._bufferService.rows);if(u)return{x:u[0],y:u[1]+this._bufferService.buffer.ydisp}},s.prototype._createLinkUnderlineEvent=function(o,l,a,u,g){return{x1:o,y1:l,x2:a,y2:u,cols:this._bufferService.cols,fg:g}},_([v(0,A.IBufferService)],s)}(c.Disposable);f.Linkifier2=C},9042:(E,f)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.tooMuchOutput=f.promptLabel=void 0,f.promptLabel="Terminal input",f.tooMuchOutput="Too much output to announce, navigate to rows manually to read"},6954:function(E,f,L){var y,m=this&&this.__extends||(y=function(d,s){return y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(o,l){o.__proto__=l}||function(o,l){for(var a in l)Object.prototype.hasOwnProperty.call(l,a)&&(o[a]=l[a])},y(d,s)},function(d,s){if(typeof s!="function"&&s!==null)throw new TypeError("Class extends value "+String(s)+" is not a constructor or null");function o(){this.constructor=d}y(d,s),d.prototype=s===null?Object.create(s):(o.prototype=s.prototype,new o)}),_=this&&this.__decorate||function(d,s,o,l){var a,u=arguments.length,g=u<3?s:l===null?l=Object.getOwnPropertyDescriptor(s,o):l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")g=Reflect.decorate(d,s,o,l);else for(var b=d.length-1;b>=0;b--)(a=d[b])&&(g=(u<3?a(g):u>3?a(s,o,g):a(s,o))||g);return u>3&&g&&Object.defineProperty(s,o,g),g},v=this&&this.__param||function(d,s){return function(o,l){s(o,l,d)}};Object.defineProperty(f,"__esModule",{value:!0}),f.MouseZoneManager=void 0;var A=L(844),w=L(3656),c=L(4725),p=L(2585),C=function(d){function s(o,l,a,u,g,b){var T=d.call(this)||this;return T._element=o,T._screenElement=l,T._bufferService=a,T._mouseService=u,T._selectionService=g,T._optionsService=b,T._zones=[],T._areZonesActive=!1,T._lastHoverCoords=[void 0,void 0],T._initialSelectionLength=0,T.register((0,w.addDisposableDomListener)(T._element,"mousedown",function(R){return T._onMouseDown(R)})),T._mouseMoveListener=function(R){return T._onMouseMove(R)},T._mouseLeaveListener=function(R){return T._onMouseLeave(R)},T._clickListener=function(R){return T._onClick(R)},T}return m(s,d),s.prototype.dispose=function(){d.prototype.dispose.call(this),this._deactivate()},s.prototype.add=function(o){this._zones.push(o),this._zones.length===1&&this._activate()},s.prototype.clearAll=function(o,l){if(this._zones.length!==0){o&&l||(o=0,l=this._bufferService.rows-1);for(var a=0;ao&&u.y1<=l+1||u.y2>o&&u.y2<=l+1||u.y1l+1)&&(this._currentZone&&this._currentZone===u&&(this._currentZone.leaveCallback(),this._currentZone=void 0),this._zones.splice(a--,1))}this._zones.length===0&&this._deactivate()}},s.prototype._activate=function(){this._areZonesActive||(this._areZonesActive=!0,this._element.addEventListener("mousemove",this._mouseMoveListener),this._element.addEventListener("mouseleave",this._mouseLeaveListener),this._element.addEventListener("click",this._clickListener))},s.prototype._deactivate=function(){this._areZonesActive&&(this._areZonesActive=!1,this._element.removeEventListener("mousemove",this._mouseMoveListener),this._element.removeEventListener("mouseleave",this._mouseLeaveListener),this._element.removeEventListener("click",this._clickListener))},s.prototype._onMouseMove=function(o){this._lastHoverCoords[0]===o.pageX&&this._lastHoverCoords[1]===o.pageY||(this._onHover(o),this._lastHoverCoords=[o.pageX,o.pageY])},s.prototype._onHover=function(o){var l=this,a=this._findZoneEventAt(o);a!==this._currentZone&&(this._currentZone&&(this._currentZone.leaveCallback(),this._currentZone=void 0,this._tooltipTimeout&&clearTimeout(this._tooltipTimeout)),a&&(this._currentZone=a,a.hoverCallback&&a.hoverCallback(o),this._tooltipTimeout=window.setTimeout(function(){return l._onTooltip(o)},this._optionsService.rawOptions.linkTooltipHoverDuration)))},s.prototype._onTooltip=function(o){this._tooltipTimeout=void 0;var l=this._findZoneEventAt(o);l?.tooltipCallback(o)},s.prototype._onMouseDown=function(o){if(this._initialSelectionLength=this._getSelectionLength(),this._areZonesActive){var l=this._findZoneEventAt(o);l?.willLinkActivate(o)&&(o.preventDefault(),o.stopImmediatePropagation())}},s.prototype._onMouseLeave=function(o){this._currentZone&&(this._currentZone.leaveCallback(),this._currentZone=void 0,this._tooltipTimeout&&clearTimeout(this._tooltipTimeout))},s.prototype._onClick=function(o){var l=this._findZoneEventAt(o),a=this._getSelectionLength();l&&a===this._initialSelectionLength&&(l.clickCallback(o),o.preventDefault(),o.stopImmediatePropagation())},s.prototype._getSelectionLength=function(){var o=this._selectionService.selectionText;return o?o.length:0},s.prototype._findZoneEventAt=function(o){var l=this._mouseService.getCoords(o,this._screenElement,this._bufferService.cols,this._bufferService.rows);if(l)for(var a=l[0],u=l[1],g=0;g=b.x1&&a=b.x1||u===b.y2&&ab.y1&&u{Object.defineProperty(f,"__esModule",{value:!0}),f.RenderDebouncer=void 0;var L=function(){function y(m){this._renderCallback=m}return y.prototype.dispose=function(){this._animationFrame&&(window.cancelAnimationFrame(this._animationFrame),this._animationFrame=void 0)},y.prototype.refresh=function(m,_,v){var A=this;this._rowCount=v,m=m!==void 0?m:0,_=_!==void 0?_:this._rowCount-1,this._rowStart=this._rowStart!==void 0?Math.min(this._rowStart,m):m,this._rowEnd=this._rowEnd!==void 0?Math.max(this._rowEnd,_):_,this._animationFrame||(this._animationFrame=window.requestAnimationFrame(function(){return A._innerRefresh()}))},y.prototype._innerRefresh=function(){if(this._rowStart!==void 0&&this._rowEnd!==void 0&&this._rowCount!==void 0){var m=Math.max(this._rowStart,0),_=Math.min(this._rowEnd,this._rowCount-1);this._rowStart=void 0,this._rowEnd=void 0,this._animationFrame=void 0,this._renderCallback(m,_)}},y}();f.RenderDebouncer=L},5596:function(E,f,L){var y,m=this&&this.__extends||(y=function(v,A){return y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(w,c){w.__proto__=c}||function(w,c){for(var p in c)Object.prototype.hasOwnProperty.call(c,p)&&(w[p]=c[p])},y(v,A)},function(v,A){if(typeof A!="function"&&A!==null)throw new TypeError("Class extends value "+String(A)+" is not a constructor or null");function w(){this.constructor=v}y(v,A),v.prototype=A===null?Object.create(A):(w.prototype=A.prototype,new w)});Object.defineProperty(f,"__esModule",{value:!0}),f.ScreenDprMonitor=void 0;var _=function(v){function A(){var w=v!==null&&v.apply(this,arguments)||this;return w._currentDevicePixelRatio=window.devicePixelRatio,w}return m(A,v),A.prototype.setListener=function(w){var c=this;this._listener&&this.clearListener(),this._listener=w,this._outerListener=function(){c._listener&&(c._listener(window.devicePixelRatio,c._currentDevicePixelRatio),c._updateDpr())},this._updateDpr()},A.prototype.dispose=function(){v.prototype.dispose.call(this),this.clearListener()},A.prototype._updateDpr=function(){var w;this._outerListener&&((w=this._resolutionMediaMatchList)===null||w===void 0||w.removeListener(this._outerListener),this._currentDevicePixelRatio=window.devicePixelRatio,this._resolutionMediaMatchList=window.matchMedia("screen and (resolution: "+window.devicePixelRatio+"dppx)"),this._resolutionMediaMatchList.addListener(this._outerListener))},A.prototype.clearListener=function(){this._resolutionMediaMatchList&&this._listener&&this._outerListener&&(this._resolutionMediaMatchList.removeListener(this._outerListener),this._resolutionMediaMatchList=void 0,this._listener=void 0,this._outerListener=void 0)},A}(L(844).Disposable);f.ScreenDprMonitor=_},3236:function(E,f,L){var y,m=this&&this.__extends||(y=function(U,ee){return y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(q,Y){q.__proto__=Y}||function(q,Y){for(var K in Y)Object.prototype.hasOwnProperty.call(Y,K)&&(q[K]=Y[K])},y(U,ee)},function(U,ee){if(typeof ee!="function"&&ee!==null)throw new TypeError("Class extends value "+String(ee)+" is not a constructor or null");function q(){this.constructor=U}y(U,ee),U.prototype=ee===null?Object.create(ee):(q.prototype=ee.prototype,new q)});Object.defineProperty(f,"__esModule",{value:!0}),f.Terminal=void 0;var _=L(2950),v=L(1680),A=L(3614),w=L(2584),c=L(5435),p=L(3525),C=L(3551),d=L(9312),s=L(6114),o=L(3656),l=L(9042),a=L(357),u=L(6954),g=L(4567),b=L(1296),T=L(7399),R=L(8460),k=L(8437),M=L(5680),N=L(3230),D=L(4725),W=L(428),B=L(8934),F=L(6465),j=L(5114),G=L(8969),$=L(4774),ne=L(4269),ie=L(5941),be=L(7641),ve=typeof window<"u"?window.document:null,Ee=function(U){function ee(q){q===void 0&&(q={});var Y=U.call(this,q)||this;return Y.browser=s,Y._keyDownHandled=!1,Y._keyPressHandled=!1,Y._unprocessedDeadKey=!1,Y._onCursorMove=new R.EventEmitter,Y._onKey=new R.EventEmitter,Y._onRender=new R.EventEmitter,Y._onSelectionChange=new R.EventEmitter,Y._onTitleChange=new R.EventEmitter,Y._onBell=new R.EventEmitter,Y._onFocus=new R.EventEmitter,Y._onBlur=new R.EventEmitter,Y._onA11yCharEmitter=new R.EventEmitter,Y._onA11yTabEmitter=new R.EventEmitter,Y._setup(),Y.linkifier=Y._instantiationService.createInstance(C.Linkifier),Y.linkifier2=Y.register(Y._instantiationService.createInstance(F.Linkifier2)),Y.decorationService=Y.register(Y._instantiationService.createInstance(be.DecorationService)),Y.register(Y._inputHandler.onRequestBell(function(){return Y.bell()})),Y.register(Y._inputHandler.onRequestRefreshRows(function(K,Se){return Y.refresh(K,Se)})),Y.register(Y._inputHandler.onRequestSendFocus(function(){return Y._reportFocus()})),Y.register(Y._inputHandler.onRequestReset(function(){return Y.reset()})),Y.register(Y._inputHandler.onRequestWindowsOptionsReport(function(K){return Y._reportWindowsOptions(K)})),Y.register(Y._inputHandler.onColor(function(K){return Y._handleColorEvent(K)})),Y.register((0,R.forwardEvent)(Y._inputHandler.onCursorMove,Y._onCursorMove)),Y.register((0,R.forwardEvent)(Y._inputHandler.onTitleChange,Y._onTitleChange)),Y.register((0,R.forwardEvent)(Y._inputHandler.onA11yChar,Y._onA11yCharEmitter)),Y.register((0,R.forwardEvent)(Y._inputHandler.onA11yTab,Y._onA11yTabEmitter)),Y.register(Y._bufferService.onResize(function(K){return Y._afterResize(K.cols,K.rows)})),Y}return m(ee,U),Object.defineProperty(ee.prototype,"onCursorMove",{get:function(){return this._onCursorMove.event},enumerable:!1,configurable:!0}),Object.defineProperty(ee.prototype,"onKey",{get:function(){return this._onKey.event},enumerable:!1,configurable:!0}),Object.defineProperty(ee.prototype,"onRender",{get:function(){return this._onRender.event},enumerable:!1,configurable:!0}),Object.defineProperty(ee.prototype,"onSelectionChange",{get:function(){return this._onSelectionChange.event},enumerable:!1,configurable:!0}),Object.defineProperty(ee.prototype,"onTitleChange",{get:function(){return this._onTitleChange.event},enumerable:!1,configurable:!0}),Object.defineProperty(ee.prototype,"onBell",{get:function(){return this._onBell.event},enumerable:!1,configurable:!0}),Object.defineProperty(ee.prototype,"onFocus",{get:function(){return this._onFocus.event},enumerable:!1,configurable:!0}),Object.defineProperty(ee.prototype,"onBlur",{get:function(){return this._onBlur.event},enumerable:!1,configurable:!0}),Object.defineProperty(ee.prototype,"onA11yChar",{get:function(){return this._onA11yCharEmitter.event},enumerable:!1,configurable:!0}),Object.defineProperty(ee.prototype,"onA11yTab",{get:function(){return this._onA11yTabEmitter.event},enumerable:!1,configurable:!0}),ee.prototype._handleColorEvent=function(q){var Y,K;if(this._colorManager){for(var Se=0,fe=q;Se4)&&Y.coreMouseService.triggerMouseEvent({col:Tt.x-33,row:Tt.y-33,button:je,action:Je,ctrl:_e.ctrlKey,alt:_e.altKey,shift:_e.shiftKey})}var fe={mouseup:null,wheel:null,mousedrag:null,mousemove:null},Ce=function(_e){return Se(_e),_e.buttons||(q._document.removeEventListener("mouseup",fe.mouseup),fe.mousedrag&&q._document.removeEventListener("mousemove",fe.mousedrag)),q.cancel(_e)},De=function(_e){return Se(_e),q.cancel(_e,!0)},Fe=function(_e){_e.buttons&&Se(_e)},Ae=function(_e){_e.buttons||Se(_e)};this.register(this.coreMouseService.onProtocolChange(function(_e){_e?(q.optionsService.rawOptions.logLevel==="debug"&&q._logService.debug("Binding to mouse events:",q.coreMouseService.explainEvents(_e)),q.element.classList.add("enable-mouse-events"),q._selectionService.disable()):(q._logService.debug("Unbinding from mouse events."),q.element.classList.remove("enable-mouse-events"),q._selectionService.enable()),8&_e?fe.mousemove||(K.addEventListener("mousemove",Ae),fe.mousemove=Ae):(K.removeEventListener("mousemove",fe.mousemove),fe.mousemove=null),16&_e?fe.wheel||(K.addEventListener("wheel",De,{passive:!1}),fe.wheel=De):(K.removeEventListener("wheel",fe.wheel),fe.wheel=null),2&_e?fe.mouseup||(fe.mouseup=Ce):(q._document.removeEventListener("mouseup",fe.mouseup),fe.mouseup=null),4&_e?fe.mousedrag||(fe.mousedrag=Fe):(q._document.removeEventListener("mousemove",fe.mousedrag),fe.mousedrag=null)})),this.coreMouseService.activeProtocol=this.coreMouseService.activeProtocol,this.register((0,o.addDisposableDomListener)(K,"mousedown",function(_e){if(_e.preventDefault(),q.focus(),q.coreMouseService.areMouseEventsActive&&!q._selectionService.shouldForceSelection(_e))return Se(_e),fe.mouseup&&q._document.addEventListener("mouseup",fe.mouseup),fe.mousedrag&&q._document.addEventListener("mousemove",fe.mousedrag),q.cancel(_e)})),this.register((0,o.addDisposableDomListener)(K,"wheel",function(_e){if(!fe.wheel){if(!q.buffer.hasScrollback){var je=q.viewport.getLinesScrolled(_e);if(je===0)return;for(var Je=w.C0.ESC+(q.coreService.decPrivateModes.applicationCursorKeys?"O":"[")+(_e.deltaY<0?"A":"B"),Tt="",lr=0;lr47)},ee.prototype._keyUp=function(q){this._customKeyEventHandler&&this._customKeyEventHandler(q)===!1||(function(Y){return Y.keyCode===16||Y.keyCode===17||Y.keyCode===18}(q)||this.focus(),this.updateCursorStyle(q),this._keyPressHandled=!1)},ee.prototype._keyPress=function(q){var Y;if(this._keyPressHandled=!1,this._keyDownHandled||this._customKeyEventHandler&&this._customKeyEventHandler(q)===!1)return!1;if(this.cancel(q),q.charCode)Y=q.charCode;else if(q.which===null||q.which===void 0)Y=q.keyCode;else{if(q.which===0||q.charCode===0)return!1;Y=q.which}return!(!Y||(q.altKey||q.ctrlKey||q.metaKey)&&!this._isThirdLevelShift(this.browser,q)||(Y=String.fromCharCode(Y),this._onKey.fire({key:Y,domEvent:q}),this._showCursor(),this.coreService.triggerDataEvent(Y,!0),this._keyPressHandled=!0,this._unprocessedDeadKey=!1,0))},ee.prototype._inputEvent=function(q){if(q.data&&q.inputType==="insertText"&&!q.composed&&!this.optionsService.rawOptions.screenReaderMode){if(this._keyPressHandled)return!1;this._unprocessedDeadKey=!1;var Y=q.data;return this.coreService.triggerDataEvent(Y,!0),this.cancel(q),!0}return!1},ee.prototype.bell=function(){var q;this._soundBell()&&((q=this._soundService)===null||q===void 0||q.playBellSound()),this._onBell.fire()},ee.prototype.resize=function(q,Y){q!==this.cols||Y!==this.rows?U.prototype.resize.call(this,q,Y):this._charSizeService&&!this._charSizeService.hasValidSize&&this._charSizeService.measure()},ee.prototype._afterResize=function(q,Y){var K,Se;(K=this._charSizeService)===null||K===void 0||K.measure(),(Se=this.viewport)===null||Se===void 0||Se.syncScrollArea(!0)},ee.prototype.clear=function(){if(this.buffer.ybase!==0||this.buffer.y!==0){this.buffer.clearMarkers(),this.buffer.lines.set(0,this.buffer.lines.get(this.buffer.ybase+this.buffer.y)),this.buffer.lines.length=1,this.buffer.ydisp=0,this.buffer.ybase=0,this.buffer.y=0;for(var q=1;q{Object.defineProperty(f,"__esModule",{value:!0}),f.TimeBasedDebouncer=void 0;var L=function(){function y(m,_){_===void 0&&(_=1e3),this._renderCallback=m,this._debounceThresholdMS=_,this._lastRefreshMs=0,this._additionalRefreshRequested=!1}return y.prototype.dispose=function(){this._refreshTimeoutID&&clearTimeout(this._refreshTimeoutID)},y.prototype.refresh=function(m,_,v){var A=this;this._rowCount=v,m=m!==void 0?m:0,_=_!==void 0?_:this._rowCount-1,this._rowStart=this._rowStart!==void 0?Math.min(this._rowStart,m):m,this._rowEnd=this._rowEnd!==void 0?Math.max(this._rowEnd,_):_;var w=Date.now();if(w-this._lastRefreshMs>=this._debounceThresholdMS)this._lastRefreshMs=w,this._innerRefresh();else if(!this._additionalRefreshRequested){var c=w-this._lastRefreshMs,p=this._debounceThresholdMS-c;this._additionalRefreshRequested=!0,this._refreshTimeoutID=window.setTimeout(function(){A._lastRefreshMs=Date.now(),A._innerRefresh(),A._additionalRefreshRequested=!1,A._refreshTimeoutID=void 0},p)}},y.prototype._innerRefresh=function(){if(this._rowStart!==void 0&&this._rowEnd!==void 0&&this._rowCount!==void 0){var m=Math.max(this._rowStart,0),_=Math.min(this._rowEnd,this._rowCount-1);this._rowStart=void 0,this._rowEnd=void 0,this._renderCallback(m,_)}},y}();f.TimeBasedDebouncer=L},1680:function(E,f,L){var y,m=this&&this.__extends||(y=function(d,s){return y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(o,l){o.__proto__=l}||function(o,l){for(var a in l)Object.prototype.hasOwnProperty.call(l,a)&&(o[a]=l[a])},y(d,s)},function(d,s){if(typeof s!="function"&&s!==null)throw new TypeError("Class extends value "+String(s)+" is not a constructor or null");function o(){this.constructor=d}y(d,s),d.prototype=s===null?Object.create(s):(o.prototype=s.prototype,new o)}),_=this&&this.__decorate||function(d,s,o,l){var a,u=arguments.length,g=u<3?s:l===null?l=Object.getOwnPropertyDescriptor(s,o):l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")g=Reflect.decorate(d,s,o,l);else for(var b=d.length-1;b>=0;b--)(a=d[b])&&(g=(u<3?a(g):u>3?a(s,o,g):a(s,o))||g);return u>3&&g&&Object.defineProperty(s,o,g),g},v=this&&this.__param||function(d,s){return function(o,l){s(o,l,d)}};Object.defineProperty(f,"__esModule",{value:!0}),f.Viewport=void 0;var A=L(844),w=L(3656),c=L(4725),p=L(2585),C=function(d){function s(o,l,a,u,g,b,T,R){var k=d.call(this)||this;return k._scrollLines=o,k._viewportElement=l,k._scrollArea=a,k._element=u,k._bufferService=g,k._optionsService=b,k._charSizeService=T,k._renderService=R,k.scrollBarWidth=0,k._currentRowHeight=0,k._currentScaledCellHeight=0,k._lastRecordedBufferLength=0,k._lastRecordedViewportHeight=0,k._lastRecordedBufferHeight=0,k._lastTouchY=0,k._lastScrollTop=0,k._lastHadScrollBar=!1,k._wheelPartialScroll=0,k._refreshAnimationFrame=null,k._ignoreNextScrollEvent=!1,k.scrollBarWidth=k._viewportElement.offsetWidth-k._scrollArea.offsetWidth||15,k._lastHadScrollBar=!0,k.register((0,w.addDisposableDomListener)(k._viewportElement,"scroll",k._onScroll.bind(k))),k._activeBuffer=k._bufferService.buffer,k.register(k._bufferService.buffers.onBufferActivate(function(M){return k._activeBuffer=M.activeBuffer})),k._renderDimensions=k._renderService.dimensions,k.register(k._renderService.onDimensionsChange(function(M){return k._renderDimensions=M})),setTimeout(function(){return k.syncScrollArea()},0),k}return m(s,d),s.prototype.onThemeChange=function(o){this._viewportElement.style.backgroundColor=o.background.css},s.prototype._refresh=function(o){var l=this;if(o)return this._innerRefresh(),void(this._refreshAnimationFrame!==null&&cancelAnimationFrame(this._refreshAnimationFrame));this._refreshAnimationFrame===null&&(this._refreshAnimationFrame=requestAnimationFrame(function(){return l._innerRefresh()}))},s.prototype._innerRefresh=function(){if(this._charSizeService.height>0){this._currentRowHeight=this._renderService.dimensions.scaledCellHeight/window.devicePixelRatio,this._currentScaledCellHeight=this._renderService.dimensions.scaledCellHeight,this._lastRecordedViewportHeight=this._viewportElement.offsetHeight;var o=Math.round(this._currentRowHeight*this._lastRecordedBufferLength)+(this._lastRecordedViewportHeight-this._renderService.dimensions.canvasHeight);this._lastRecordedBufferHeight!==o&&(this._lastRecordedBufferHeight=o,this._scrollArea.style.height=this._lastRecordedBufferHeight+"px")}var l=this._bufferService.buffer.ydisp*this._currentRowHeight;this._viewportElement.scrollTop!==l&&(this._ignoreNextScrollEvent=!0,this._viewportElement.scrollTop=l),this._optionsService.rawOptions.scrollback===0?this.scrollBarWidth=0:this.scrollBarWidth=this._viewportElement.offsetWidth-this._scrollArea.offsetWidth||15,this._lastHadScrollBar=this.scrollBarWidth>0;var a=window.getComputedStyle(this._element),u=parseInt(a.paddingLeft)+parseInt(a.paddingRight);this._viewportElement.style.width=(this._renderService.dimensions.actualCellWidth*this._bufferService.cols+this.scrollBarWidth+(this._lastHadScrollBar?u:0)).toString()+"px",this._refreshAnimationFrame=null},s.prototype.syncScrollArea=function(o){if(o===void 0&&(o=!1),this._lastRecordedBufferLength!==this._bufferService.buffer.lines.length)return this._lastRecordedBufferLength=this._bufferService.buffer.lines.length,void this._refresh(o);this._lastRecordedViewportHeight===this._renderService.dimensions.canvasHeight&&this._lastScrollTop===this._activeBuffer.ydisp*this._currentRowHeight&&this._renderDimensions.scaledCellHeight===this._currentScaledCellHeight?this._lastHadScrollBar!==this._optionsService.rawOptions.scrollback>0&&this._refresh(o):this._refresh(o)},s.prototype._onScroll=function(o){if(this._lastScrollTop=this._viewportElement.scrollTop,this._viewportElement.offsetParent){if(this._ignoreNextScrollEvent)return this._ignoreNextScrollEvent=!1,void this._scrollLines(0);var l=Math.round(this._lastScrollTop/this._currentRowHeight)-this._bufferService.buffer.ydisp;this._scrollLines(l)}},s.prototype._bubbleScroll=function(o,l){var a=this._viewportElement.scrollTop+this._lastRecordedViewportHeight;return!(l<0&&this._viewportElement.scrollTop!==0||l>0&&a0?1:-1),this._wheelPartialScroll%=1):o.deltaMode===WheelEvent.DOM_DELTA_PAGE&&(l*=this._bufferService.rows),l},s.prototype._applyScrollModifier=function(o,l){var a=this._optionsService.rawOptions.fastScrollModifier;return a==="alt"&&l.altKey||a==="ctrl"&&l.ctrlKey||a==="shift"&&l.shiftKey?o*this._optionsService.rawOptions.fastScrollSensitivity*this._optionsService.rawOptions.scrollSensitivity:o*this._optionsService.rawOptions.scrollSensitivity},s.prototype.onTouchStart=function(o){this._lastTouchY=o.touches[0].pageY},s.prototype.onTouchMove=function(o){var l=this._lastTouchY-o.touches[0].pageY;return this._lastTouchY=o.touches[0].pageY,l!==0&&(this._viewportElement.scrollTop+=l,this._bubbleScroll(o,l))},_([v(4,p.IBufferService),v(5,p.IOptionsService),v(6,c.ICharSizeService),v(7,c.IRenderService)],s)}(A.Disposable);f.Viewport=C},2950:function(E,f,L){var y=this&&this.__decorate||function(w,c,p,C){var d,s=arguments.length,o=s<3?c:C===null?C=Object.getOwnPropertyDescriptor(c,p):C;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(w,c,p,C);else for(var l=w.length-1;l>=0;l--)(d=w[l])&&(o=(s<3?d(o):s>3?d(c,p,o):d(c,p))||o);return s>3&&o&&Object.defineProperty(c,p,o),o},m=this&&this.__param||function(w,c){return function(p,C){c(p,C,w)}};Object.defineProperty(f,"__esModule",{value:!0}),f.CompositionHelper=void 0;var _=L(4725),v=L(2585),A=function(){function w(c,p,C,d,s,o){this._textarea=c,this._compositionView=p,this._bufferService=C,this._optionsService=d,this._coreService=s,this._renderService=o,this._isComposing=!1,this._isSendingComposition=!1,this._compositionPosition={start:0,end:0},this._dataAlreadySent=""}return Object.defineProperty(w.prototype,"isComposing",{get:function(){return this._isComposing},enumerable:!1,configurable:!0}),w.prototype.compositionstart=function(){this._isComposing=!0,this._compositionPosition.start=this._textarea.value.length,this._compositionView.textContent="",this._dataAlreadySent="",this._compositionView.classList.add("active")},w.prototype.compositionupdate=function(c){var p=this;this._compositionView.textContent=c.data,this.updateCompositionElements(),setTimeout(function(){p._compositionPosition.end=p._textarea.value.length},0)},w.prototype.compositionend=function(){this._finalizeComposition(!0)},w.prototype.keydown=function(c){if(this._isComposing||this._isSendingComposition){if(c.keyCode===229||c.keyCode===16||c.keyCode===17||c.keyCode===18)return!1;this._finalizeComposition(!1)}return c.keyCode!==229||(this._handleAnyTextareaChanges(),!1)},w.prototype._finalizeComposition=function(c){var p=this;if(this._compositionView.classList.remove("active"),this._isComposing=!1,c){var C={start:this._compositionPosition.start,end:this._compositionPosition.end};this._isSendingComposition=!0,setTimeout(function(){if(p._isSendingComposition){p._isSendingComposition=!1;var s;C.start+=p._dataAlreadySent.length,(s=p._isComposing?p._textarea.value.substring(C.start,C.end):p._textarea.value.substring(C.start)).length>0&&p._coreService.triggerDataEvent(s,!0)}},0)}else{this._isSendingComposition=!1;var d=this._textarea.value.substring(this._compositionPosition.start,this._compositionPosition.end);this._coreService.triggerDataEvent(d,!0)}},w.prototype._handleAnyTextareaChanges=function(){var c=this,p=this._textarea.value;setTimeout(function(){if(!c._isComposing){var C=c._textarea.value.replace(p,"");C.length>0&&(c._dataAlreadySent=C,c._coreService.triggerDataEvent(C,!0))}},0)},w.prototype.updateCompositionElements=function(c){var p=this;if(this._isComposing){if(this._bufferService.buffer.isCursorInViewport){var C=Math.min(this._bufferService.buffer.x,this._bufferService.cols-1),d=this._renderService.dimensions.actualCellHeight,s=this._bufferService.buffer.y*this._renderService.dimensions.actualCellHeight,o=C*this._renderService.dimensions.actualCellWidth;this._compositionView.style.left=o+"px",this._compositionView.style.top=s+"px",this._compositionView.style.height=d+"px",this._compositionView.style.lineHeight=d+"px",this._compositionView.style.fontFamily=this._optionsService.rawOptions.fontFamily,this._compositionView.style.fontSize=this._optionsService.rawOptions.fontSize+"px";var l=this._compositionView.getBoundingClientRect();this._textarea.style.left=o+"px",this._textarea.style.top=s+"px",this._textarea.style.width=Math.max(l.width,1)+"px",this._textarea.style.height=Math.max(l.height,1)+"px",this._textarea.style.lineHeight=l.height+"px"}c||setTimeout(function(){return p.updateCompositionElements(!0)},0)}},y([m(2,v.IBufferService),m(3,v.IOptionsService),m(4,v.ICoreService),m(5,_.IRenderService)],w)}();f.CompositionHelper=A},9806:(E,f)=>{function L(y,m){var _=m.getBoundingClientRect();return[y.clientX-_.left,y.clientY-_.top]}Object.defineProperty(f,"__esModule",{value:!0}),f.getRawByteCoords=f.getCoords=f.getCoordsRelativeToElement=void 0,f.getCoordsRelativeToElement=L,f.getCoords=function(y,m,_,v,A,w,c,p){if(A){var C=L(y,m);if(C)return C[0]=Math.ceil((C[0]+(p?w/2:0))/w),C[1]=Math.ceil(C[1]/c),C[0]=Math.min(Math.max(C[0],1),_+(p?1:0)),C[1]=Math.min(Math.max(C[1],1),v),C}},f.getRawByteCoords=function(y){if(y)return{x:y[0]+32,y:y[1]+32}}},9504:(E,f,L)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.moveToCellSequence=void 0;var y=L(2584);function m(p,C,d,s){var o=p-_(d,p),l=C-_(d,C),a=Math.abs(o-l)-function(u,g,b){for(var T=0,R=u-_(b,u),k=g-_(b,g),M=0;M=0&&CC?"A":"B"}function A(p,C,d,s,o,l){for(var a=p,u=C,g="";a!==d||u!==s;)a+=o?1:-1,o&&a>l.cols-1?(g+=l.buffer.translateBufferLineToString(u,!1,p,a),a=0,p=0,u++):!o&&a<0&&(g+=l.buffer.translateBufferLineToString(u,!1,0,p+1),p=a=l.cols-1,u--);return g+l.buffer.translateBufferLineToString(u,!1,p,a)}function w(p,C){var d=C?"O":"[";return y.C0.ESC+d+p}function c(p,C){p=Math.floor(p);for(var d="",s=0;s0?R-_(k,R):b;var D=R,W=function(B,F,j,G,$,ne){var ie;return ie=m(j,G,$,ne).length>0?G-_($,G):F,B=j&&iep?"D":"C",c(Math.abs(l-p),w(o,s));o=a>C?"D":"C";var u=Math.abs(a-C);return c(function(g,b){return b.cols-g}(a>C?p:l,d)+(u-1)*d.cols+1+((a>C?l:p)-1),w(o,s))}},4389:function(E,f,L){var y=this&&this.__assign||function(){return y=Object.assign||function(d){for(var s,o=1,l=arguments.length;o{Object.defineProperty(f,"__esModule",{value:!0}),f.BaseRenderLayer=void 0;var y=L(643),m=L(8803),_=L(1420),v=L(3734),A=L(1752),w=L(4774),c=L(9631),p=L(8978),C=function(){function d(s,o,l,a,u,g,b,T){this._container=s,this._alpha=a,this._colors=u,this._rendererId=g,this._bufferService=b,this._optionsService=T,this._scaledCharWidth=0,this._scaledCharHeight=0,this._scaledCellWidth=0,this._scaledCellHeight=0,this._scaledCharLeft=0,this._scaledCharTop=0,this._currentGlyphIdentifier={chars:"",code:0,bg:0,fg:0,bold:!1,dim:!1,italic:!1},this._canvas=document.createElement("canvas"),this._canvas.classList.add("xterm-"+o+"-layer"),this._canvas.style.zIndex=l.toString(),this._initCanvas(),this._container.appendChild(this._canvas)}return d.prototype.dispose=function(){var s;(0,c.removeElementFromParent)(this._canvas),(s=this._charAtlas)===null||s===void 0||s.dispose()},d.prototype._initCanvas=function(){this._ctx=(0,A.throwIfFalsy)(this._canvas.getContext("2d",{alpha:this._alpha})),this._alpha||this._clearAll()},d.prototype.onOptionsChanged=function(){},d.prototype.onBlur=function(){},d.prototype.onFocus=function(){},d.prototype.onCursorMove=function(){},d.prototype.onGridChanged=function(s,o){},d.prototype.onSelectionChanged=function(s,o,l){l===void 0&&(l=!1)},d.prototype.setColors=function(s){this._refreshCharAtlas(s)},d.prototype._setTransparency=function(s){if(s!==this._alpha){var o=this._canvas;this._alpha=s,this._canvas=this._canvas.cloneNode(),this._initCanvas(),this._container.replaceChild(this._canvas,o),this._refreshCharAtlas(this._colors),this.onGridChanged(0,this._bufferService.rows-1)}},d.prototype._refreshCharAtlas=function(s){this._scaledCharWidth<=0&&this._scaledCharHeight<=0||(this._charAtlas=(0,_.acquireCharAtlas)(this._optionsService.rawOptions,this._rendererId,s,this._scaledCharWidth,this._scaledCharHeight),this._charAtlas.warmUp())},d.prototype.resize=function(s){this._scaledCellWidth=s.scaledCellWidth,this._scaledCellHeight=s.scaledCellHeight,this._scaledCharWidth=s.scaledCharWidth,this._scaledCharHeight=s.scaledCharHeight,this._scaledCharLeft=s.scaledCharLeft,this._scaledCharTop=s.scaledCharTop,this._canvas.width=s.scaledCanvasWidth,this._canvas.height=s.scaledCanvasHeight,this._canvas.style.width=s.canvasWidth+"px",this._canvas.style.height=s.canvasHeight+"px",this._alpha||this._clearAll(),this._refreshCharAtlas(this._colors)},d.prototype.clearTextureAtlas=function(){var s;(s=this._charAtlas)===null||s===void 0||s.clear()},d.prototype._fillCells=function(s,o,l,a){this._ctx.fillRect(s*this._scaledCellWidth,o*this._scaledCellHeight,l*this._scaledCellWidth,a*this._scaledCellHeight)},d.prototype._fillMiddleLineAtCells=function(s,o,l){l===void 0&&(l=1);var a=Math.ceil(.5*this._scaledCellHeight);this._ctx.fillRect(s*this._scaledCellWidth,(o+1)*this._scaledCellHeight-a-window.devicePixelRatio,l*this._scaledCellWidth,window.devicePixelRatio)},d.prototype._fillBottomLineAtCells=function(s,o,l){l===void 0&&(l=1),this._ctx.fillRect(s*this._scaledCellWidth,(o+1)*this._scaledCellHeight-window.devicePixelRatio-1,l*this._scaledCellWidth,window.devicePixelRatio)},d.prototype._fillLeftLineAtCell=function(s,o,l){this._ctx.fillRect(s*this._scaledCellWidth,o*this._scaledCellHeight,window.devicePixelRatio*l,this._scaledCellHeight)},d.prototype._strokeRectAtCell=function(s,o,l,a){this._ctx.lineWidth=window.devicePixelRatio,this._ctx.strokeRect(s*this._scaledCellWidth+window.devicePixelRatio/2,o*this._scaledCellHeight+window.devicePixelRatio/2,l*this._scaledCellWidth-window.devicePixelRatio,a*this._scaledCellHeight-window.devicePixelRatio)},d.prototype._clearAll=function(){this._alpha?this._ctx.clearRect(0,0,this._canvas.width,this._canvas.height):(this._ctx.fillStyle=this._colors.background.css,this._ctx.fillRect(0,0,this._canvas.width,this._canvas.height))},d.prototype._clearCells=function(s,o,l,a){this._alpha?this._ctx.clearRect(s*this._scaledCellWidth,o*this._scaledCellHeight,l*this._scaledCellWidth,a*this._scaledCellHeight):(this._ctx.fillStyle=this._colors.background.css,this._ctx.fillRect(s*this._scaledCellWidth,o*this._scaledCellHeight,l*this._scaledCellWidth,a*this._scaledCellHeight))},d.prototype._fillCharTrueColor=function(s,o,l){this._ctx.font=this._getFont(!1,!1),this._ctx.textBaseline=m.TEXT_BASELINE,this._clipRow(l);var a=!1;this._optionsService.rawOptions.customGlyphs!==!1&&(a=(0,p.tryDrawCustomChar)(this._ctx,s.getChars(),o*this._scaledCellWidth,l*this._scaledCellHeight,this._scaledCellWidth,this._scaledCellHeight)),a||this._ctx.fillText(s.getChars(),o*this._scaledCellWidth+this._scaledCharLeft,l*this._scaledCellHeight+this._scaledCharTop+this._scaledCharHeight)},d.prototype._drawChars=function(s,o,l){var a,u,g,b=this._getContrastColor(s);b||s.isFgRGB()||s.isBgRGB()?this._drawUncachedChars(s,o,l,b):(s.isInverse()?(u=s.isBgDefault()?m.INVERTED_DEFAULT_COLOR:s.getBgColor(),g=s.isFgDefault()?m.INVERTED_DEFAULT_COLOR:s.getFgColor()):(g=s.isBgDefault()?y.DEFAULT_COLOR:s.getBgColor(),u=s.isFgDefault()?y.DEFAULT_COLOR:s.getFgColor()),u+=this._optionsService.rawOptions.drawBoldTextInBrightColors&&s.isBold()&&u<8?8:0,this._currentGlyphIdentifier.chars=s.getChars()||y.WHITESPACE_CELL_CHAR,this._currentGlyphIdentifier.code=s.getCode()||y.WHITESPACE_CELL_CODE,this._currentGlyphIdentifier.bg=g,this._currentGlyphIdentifier.fg=u,this._currentGlyphIdentifier.bold=!!s.isBold(),this._currentGlyphIdentifier.dim=!!s.isDim(),this._currentGlyphIdentifier.italic=!!s.isItalic(),!((a=this._charAtlas)===null||a===void 0)&&a.draw(this._ctx,this._currentGlyphIdentifier,o*this._scaledCellWidth+this._scaledCharLeft,l*this._scaledCellHeight+this._scaledCharTop)||this._drawUncachedChars(s,o,l))},d.prototype._drawUncachedChars=function(s,o,l,a){if(this._ctx.save(),this._ctx.font=this._getFont(!!s.isBold(),!!s.isItalic()),this._ctx.textBaseline=m.TEXT_BASELINE,s.isInverse())if(a)this._ctx.fillStyle=a.css;else if(s.isBgDefault())this._ctx.fillStyle=w.color.opaque(this._colors.background).css;else if(s.isBgRGB())this._ctx.fillStyle="rgb("+v.AttributeData.toColorRGB(s.getBgColor()).join(",")+")";else{var u=s.getBgColor();this._optionsService.rawOptions.drawBoldTextInBrightColors&&s.isBold()&&u<8&&(u+=8),this._ctx.fillStyle=this._colors.ansi[u].css}else if(a)this._ctx.fillStyle=a.css;else if(s.isFgDefault())this._ctx.fillStyle=this._colors.foreground.css;else if(s.isFgRGB())this._ctx.fillStyle="rgb("+v.AttributeData.toColorRGB(s.getFgColor()).join(",")+")";else{var g=s.getFgColor();this._optionsService.rawOptions.drawBoldTextInBrightColors&&s.isBold()&&g<8&&(g+=8),this._ctx.fillStyle=this._colors.ansi[g].css}this._clipRow(l),s.isDim()&&(this._ctx.globalAlpha=m.DIM_OPACITY);var b=!1;this._optionsService.rawOptions.customGlyphs!==!1&&(b=(0,p.tryDrawCustomChar)(this._ctx,s.getChars(),o*this._scaledCellWidth,l*this._scaledCellHeight,this._scaledCellWidth,this._scaledCellHeight)),b||this._ctx.fillText(s.getChars(),o*this._scaledCellWidth+this._scaledCharLeft,l*this._scaledCellHeight+this._scaledCharTop+this._scaledCharHeight),this._ctx.restore()},d.prototype._clipRow=function(s){this._ctx.beginPath(),this._ctx.rect(0,s*this._scaledCellHeight,this._bufferService.cols*this._scaledCellWidth,this._scaledCellHeight),this._ctx.clip()},d.prototype._getFont=function(s,o){return(o?"italic":"")+" "+(s?this._optionsService.rawOptions.fontWeightBold:this._optionsService.rawOptions.fontWeight)+" "+this._optionsService.rawOptions.fontSize*window.devicePixelRatio+"px "+this._optionsService.rawOptions.fontFamily},d.prototype._getContrastColor=function(s){if(this._optionsService.rawOptions.minimumContrastRatio!==1){var o=this._colors.contrastCache.getColor(s.bg,s.fg);if(o!==void 0)return o||void 0;var l=s.getFgColor(),a=s.getFgColorMode(),u=s.getBgColor(),g=s.getBgColorMode(),b=!!s.isInverse(),T=!!s.isInverse();if(b){var R=l;l=u,u=R;var k=a;a=g,g=k}var M=this._resolveBackgroundRgba(g,u,b),N=this._resolveForegroundRgba(a,l,b,T),D=w.rgba.ensureContrastRatio(M,N,this._optionsService.rawOptions.minimumContrastRatio);if(D){var W={css:w.channels.toCss(D>>24&255,D>>16&255,D>>8&255),rgba:D};return this._colors.contrastCache.setColor(s.bg,s.fg,W),W}this._colors.contrastCache.setColor(s.bg,s.fg,null)}},d.prototype._resolveBackgroundRgba=function(s,o,l){switch(s){case 16777216:case 33554432:return this._colors.ansi[o].rgba;case 50331648:return o<<8;default:return l?this._colors.foreground.rgba:this._colors.background.rgba}},d.prototype._resolveForegroundRgba=function(s,o,l,a){switch(s){case 16777216:case 33554432:return this._optionsService.rawOptions.drawBoldTextInBrightColors&&a&&o<8&&(o+=8),this._colors.ansi[o].rgba;case 50331648:return o<<8;default:return l?this._colors.background.rgba:this._colors.foreground.rgba}},d}();f.BaseRenderLayer=C},2512:function(E,f,L){var y,m=this&&this.__extends||(y=function(o,l){return y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(a,u){a.__proto__=u}||function(a,u){for(var g in u)Object.prototype.hasOwnProperty.call(u,g)&&(a[g]=u[g])},y(o,l)},function(o,l){if(typeof l!="function"&&l!==null)throw new TypeError("Class extends value "+String(l)+" is not a constructor or null");function a(){this.constructor=o}y(o,l),o.prototype=l===null?Object.create(l):(a.prototype=l.prototype,new a)}),_=this&&this.__decorate||function(o,l,a,u){var g,b=arguments.length,T=b<3?l:u===null?u=Object.getOwnPropertyDescriptor(l,a):u;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")T=Reflect.decorate(o,l,a,u);else for(var R=o.length-1;R>=0;R--)(g=o[R])&&(T=(b<3?g(T):b>3?g(l,a,T):g(l,a))||T);return b>3&&T&&Object.defineProperty(l,a,T),T},v=this&&this.__param||function(o,l){return function(a,u){l(a,u,o)}};Object.defineProperty(f,"__esModule",{value:!0}),f.CursorRenderLayer=void 0;var A=L(1546),w=L(511),c=L(2585),p=L(4725),C=600,d=function(o){function l(a,u,g,b,T,R,k,M,N){var D=o.call(this,a,"cursor",u,!0,g,b,R,k)||this;return D._onRequestRedraw=T,D._coreService=M,D._coreBrowserService=N,D._cell=new w.CellData,D._state={x:0,y:0,isFocused:!1,style:"",width:0},D._cursorRenderers={bar:D._renderBarCursor.bind(D),block:D._renderBlockCursor.bind(D),underline:D._renderUnderlineCursor.bind(D)},D}return m(l,o),l.prototype.dispose=function(){this._cursorBlinkStateManager&&(this._cursorBlinkStateManager.dispose(),this._cursorBlinkStateManager=void 0),o.prototype.dispose.call(this)},l.prototype.resize=function(a){o.prototype.resize.call(this,a),this._state={x:0,y:0,isFocused:!1,style:"",width:0}},l.prototype.reset=function(){var a;this._clearCursor(),(a=this._cursorBlinkStateManager)===null||a===void 0||a.restartBlinkAnimation(),this.onOptionsChanged()},l.prototype.onBlur=function(){var a;(a=this._cursorBlinkStateManager)===null||a===void 0||a.pause(),this._onRequestRedraw.fire({start:this._bufferService.buffer.y,end:this._bufferService.buffer.y})},l.prototype.onFocus=function(){var a;(a=this._cursorBlinkStateManager)===null||a===void 0||a.resume(),this._onRequestRedraw.fire({start:this._bufferService.buffer.y,end:this._bufferService.buffer.y})},l.prototype.onOptionsChanged=function(){var a,u=this;this._optionsService.rawOptions.cursorBlink?this._cursorBlinkStateManager||(this._cursorBlinkStateManager=new s(this._coreBrowserService.isFocused,function(){u._render(!0)})):((a=this._cursorBlinkStateManager)===null||a===void 0||a.dispose(),this._cursorBlinkStateManager=void 0),this._onRequestRedraw.fire({start:this._bufferService.buffer.y,end:this._bufferService.buffer.y})},l.prototype.onCursorMove=function(){var a;(a=this._cursorBlinkStateManager)===null||a===void 0||a.restartBlinkAnimation()},l.prototype.onGridChanged=function(a,u){!this._cursorBlinkStateManager||this._cursorBlinkStateManager.isPaused?this._render(!1):this._cursorBlinkStateManager.restartBlinkAnimation()},l.prototype._render=function(a){if(this._coreService.isCursorInitialized&&!this._coreService.isCursorHidden){var u=this._bufferService.buffer.ybase+this._bufferService.buffer.y,g=u-this._bufferService.buffer.ydisp;if(g<0||g>=this._bufferService.rows)this._clearCursor();else{var b=Math.min(this._bufferService.buffer.x,this._bufferService.cols-1);if(this._bufferService.buffer.lines.get(u).loadCell(b,this._cell),this._cell.content!==void 0){if(!this._coreBrowserService.isFocused){this._clearCursor(),this._ctx.save(),this._ctx.fillStyle=this._colors.cursor.css;var T=this._optionsService.rawOptions.cursorStyle;return T&&T!=="block"?this._cursorRenderers[T](b,g,this._cell):this._renderBlurCursor(b,g,this._cell),this._ctx.restore(),this._state.x=b,this._state.y=g,this._state.isFocused=!1,this._state.style=T,void(this._state.width=this._cell.getWidth())}if(!this._cursorBlinkStateManager||this._cursorBlinkStateManager.isCursorVisible){if(this._state){if(this._state.x===b&&this._state.y===g&&this._state.isFocused===this._coreBrowserService.isFocused&&this._state.style===this._optionsService.rawOptions.cursorStyle&&this._state.width===this._cell.getWidth())return;this._clearCursor()}this._ctx.save(),this._cursorRenderers[this._optionsService.rawOptions.cursorStyle||"block"](b,g,this._cell),this._ctx.restore(),this._state.x=b,this._state.y=g,this._state.isFocused=!1,this._state.style=this._optionsService.rawOptions.cursorStyle,this._state.width=this._cell.getWidth()}else this._clearCursor()}}}else this._clearCursor()},l.prototype._clearCursor=function(){this._state&&(window.devicePixelRatio<1?this._clearAll():this._clearCells(this._state.x,this._state.y,this._state.width,1),this._state={x:0,y:0,isFocused:!1,style:"",width:0})},l.prototype._renderBarCursor=function(a,u,g){this._ctx.save(),this._ctx.fillStyle=this._colors.cursor.css,this._fillLeftLineAtCell(a,u,this._optionsService.rawOptions.cursorWidth),this._ctx.restore()},l.prototype._renderBlockCursor=function(a,u,g){this._ctx.save(),this._ctx.fillStyle=this._colors.cursor.css,this._fillCells(a,u,g.getWidth(),1),this._ctx.fillStyle=this._colors.cursorAccent.css,this._fillCharTrueColor(g,a,u),this._ctx.restore()},l.prototype._renderUnderlineCursor=function(a,u,g){this._ctx.save(),this._ctx.fillStyle=this._colors.cursor.css,this._fillBottomLineAtCells(a,u),this._ctx.restore()},l.prototype._renderBlurCursor=function(a,u,g){this._ctx.save(),this._ctx.strokeStyle=this._colors.cursor.css,this._strokeRectAtCell(a,u,g.getWidth(),1),this._ctx.restore()},_([v(5,c.IBufferService),v(6,c.IOptionsService),v(7,c.ICoreService),v(8,p.ICoreBrowserService)],l)}(A.BaseRenderLayer);f.CursorRenderLayer=d;var s=function(){function o(l,a){this._renderCallback=a,this.isCursorVisible=!0,l&&this._restartInterval()}return Object.defineProperty(o.prototype,"isPaused",{get:function(){return!(this._blinkStartTimeout||this._blinkInterval)},enumerable:!1,configurable:!0}),o.prototype.dispose=function(){this._blinkInterval&&(window.clearInterval(this._blinkInterval),this._blinkInterval=void 0),this._blinkStartTimeout&&(window.clearTimeout(this._blinkStartTimeout),this._blinkStartTimeout=void 0),this._animationFrame&&(window.cancelAnimationFrame(this._animationFrame),this._animationFrame=void 0)},o.prototype.restartBlinkAnimation=function(){var l=this;this.isPaused||(this._animationTimeRestarted=Date.now(),this.isCursorVisible=!0,this._animationFrame||(this._animationFrame=window.requestAnimationFrame(function(){l._renderCallback(),l._animationFrame=void 0})))},o.prototype._restartInterval=function(l){var a=this;l===void 0&&(l=C),this._blinkInterval&&(window.clearInterval(this._blinkInterval),this._blinkInterval=void 0),this._blinkStartTimeout=window.setTimeout(function(){if(a._animationTimeRestarted){var u=C-(Date.now()-a._animationTimeRestarted);if(a._animationTimeRestarted=void 0,u>0)return void a._restartInterval(u)}a.isCursorVisible=!1,a._animationFrame=window.requestAnimationFrame(function(){a._renderCallback(),a._animationFrame=void 0}),a._blinkInterval=window.setInterval(function(){if(a._animationTimeRestarted){var g=C-(Date.now()-a._animationTimeRestarted);return a._animationTimeRestarted=void 0,void a._restartInterval(g)}a.isCursorVisible=!a.isCursorVisible,a._animationFrame=window.requestAnimationFrame(function(){a._renderCallback(),a._animationFrame=void 0})},C)},l)},o.prototype.pause=function(){this.isCursorVisible=!0,this._blinkInterval&&(window.clearInterval(this._blinkInterval),this._blinkInterval=void 0),this._blinkStartTimeout&&(window.clearTimeout(this._blinkStartTimeout),this._blinkStartTimeout=void 0),this._animationFrame&&(window.cancelAnimationFrame(this._animationFrame),this._animationFrame=void 0)},o.prototype.resume=function(){this.pause(),this._animationTimeRestarted=void 0,this._restartInterval(),this.restartBlinkAnimation()},o}()},8978:(E,f,L)=>{var y,m,_,v,A,w,c,p,C,d,s,o,l,a,u,g,b,T,R,k,M,N,D,W,B,F,j,G,$,ne,ie,be,ve,Ee,U,ee,q,Y,K,Se,fe,Ce,De,Fe,Ae,_e,je,Je,Tt,lr,Cr,wr,ei,pi,Nr,ti,Nt,vi,vt,Ne,cr,ut,Wt,we,ur,Qe,ke,We,fr,Ke,At,Xe,hr,ft,Qt,Yt,Wr,Lr,et,jr,xr,Mt,kr,Ur,zr,Er,Zt,gt,ht,qr,jt,dr,pr,bt,St,dt,Tr,Ar,Ie,me,Ot,Mr,it,Re,Rt,er,Or,le,I,X,oe,ce,Te,Oe,pe,Ze,_t,Rr,Ut,Bi,Pi,Kr,gi,Ii,_i,Hi,Fi,Ni;Object.defineProperty(f,"__esModule",{value:!0}),f.tryDrawCustomChar=f.boxDrawingDefinitions=f.blockElementDefinitions=void 0;var cn=L(1752);f.blockElementDefinitions={"\u2580":[{x:0,y:0,w:8,h:4}],"\u2581":[{x:0,y:7,w:8,h:1}],"\u2582":[{x:0,y:6,w:8,h:2}],"\u2583":[{x:0,y:5,w:8,h:3}],"\u2584":[{x:0,y:4,w:8,h:4}],"\u2585":[{x:0,y:3,w:8,h:5}],"\u2586":[{x:0,y:2,w:8,h:6}],"\u2587":[{x:0,y:1,w:8,h:7}],"\u2588":[{x:0,y:0,w:8,h:8}],"\u2589":[{x:0,y:0,w:7,h:8}],"\u258A":[{x:0,y:0,w:6,h:8}],"\u258B":[{x:0,y:0,w:5,h:8}],"\u258C":[{x:0,y:0,w:4,h:8}],"\u258D":[{x:0,y:0,w:3,h:8}],"\u258E":[{x:0,y:0,w:2,h:8}],"\u258F":[{x:0,y:0,w:1,h:8}],"\u2590":[{x:4,y:0,w:4,h:8}],"\u2594":[{x:0,y:0,w:9,h:1}],"\u2595":[{x:7,y:0,w:1,h:8}],"\u2596":[{x:0,y:4,w:4,h:4}],"\u2597":[{x:4,y:4,w:4,h:4}],"\u2598":[{x:0,y:0,w:4,h:4}],"\u2599":[{x:0,y:0,w:4,h:8},{x:0,y:4,w:8,h:4}],"\u259A":[{x:0,y:0,w:4,h:4},{x:4,y:4,w:4,h:4}],"\u259B":[{x:0,y:0,w:4,h:8},{x:0,y:0,w:4,h:8}],"\u259C":[{x:0,y:0,w:8,h:4},{x:4,y:0,w:4,h:8}],"\u259D":[{x:4,y:0,w:4,h:4}],"\u259E":[{x:4,y:0,w:4,h:4},{x:0,y:4,w:4,h:4}],"\u259F":[{x:4,y:0,w:4,h:8},{x:0,y:4,w:8,h:4}],"\u{1FB70}":[{x:1,y:0,w:1,h:8}],"\u{1FB71}":[{x:2,y:0,w:1,h:8}],"\u{1FB72}":[{x:3,y:0,w:1,h:8}],"\u{1FB73}":[{x:4,y:0,w:1,h:8}],"\u{1FB74}":[{x:5,y:0,w:1,h:8}],"\u{1FB75}":[{x:6,y:0,w:1,h:8}],"\u{1FB76}":[{x:0,y:1,w:8,h:1}],"\u{1FB77}":[{x:0,y:2,w:8,h:1}],"\u{1FB78}":[{x:0,y:3,w:8,h:1}],"\u{1FB79}":[{x:0,y:4,w:8,h:1}],"\u{1FB7A}":[{x:0,y:5,w:8,h:1}],"\u{1FB7B}":[{x:0,y:6,w:8,h:1}],"\u{1FB7C}":[{x:0,y:0,w:1,h:8},{x:0,y:7,w:8,h:1}],"\u{1FB7D}":[{x:0,y:0,w:1,h:8},{x:0,y:0,w:8,h:1}],"\u{1FB7E}":[{x:7,y:0,w:1,h:8},{x:0,y:0,w:8,h:1}],"\u{1FB7F}":[{x:7,y:0,w:1,h:8},{x:0,y:7,w:8,h:1}],"\u{1FB80}":[{x:0,y:0,w:8,h:1},{x:0,y:7,w:8,h:1}],"\u{1FB81}":[{x:0,y:0,w:8,h:1},{x:0,y:2,w:8,h:1},{x:0,y:4,w:8,h:1},{x:0,y:7,w:8,h:1}],"\u{1FB82}":[{x:0,y:0,w:8,h:2}],"\u{1FB83}":[{x:0,y:0,w:8,h:3}],"\u{1FB84}":[{x:0,y:0,w:8,h:5}],"\u{1FB85}":[{x:0,y:0,w:8,h:6}],"\u{1FB86}":[{x:0,y:0,w:8,h:7}],"\u{1FB87}":[{x:6,y:0,w:2,h:8}],"\u{1FB88}":[{x:5,y:0,w:3,h:8}],"\u{1FB89}":[{x:3,y:0,w:5,h:8}],"\u{1FB8A}":[{x:2,y:0,w:6,h:8}],"\u{1FB8B}":[{x:1,y:0,w:7,h:8}],"\u{1FB95}":[{x:0,y:0,w:2,h:2},{x:4,y:0,w:2,h:2},{x:2,y:2,w:2,h:2},{x:6,y:2,w:2,h:2},{x:0,y:4,w:2,h:2},{x:4,y:4,w:2,h:2},{x:2,y:6,w:2,h:2},{x:6,y:6,w:2,h:2}],"\u{1FB96}":[{x:2,y:0,w:2,h:2},{x:6,y:0,w:2,h:2},{x:0,y:2,w:2,h:2},{x:4,y:2,w:2,h:2},{x:2,y:4,w:2,h:2},{x:6,y:4,w:2,h:2},{x:0,y:6,w:2,h:2},{x:4,y:6,w:2,h:2}],"\u{1FB97}":[{x:0,y:2,w:8,h:2},{x:0,y:6,w:8,h:2}]};var yo={"\u2591":[[1,0,0,0],[0,0,0,0],[0,0,1,0],[0,0,0,0]],"\u2592":[[1,0],[0,0],[0,1],[0,0]],"\u2593":[[0,1],[1,1],[1,0],[1,1]]};f.boxDrawingDefinitions={"\u2500":(y={},y[1]="M0,.5 L1,.5",y),"\u2501":(m={},m[3]="M0,.5 L1,.5",m),"\u2502":(_={},_[1]="M.5,0 L.5,1",_),"\u2503":(v={},v[3]="M.5,0 L.5,1",v),"\u250C":(A={},A[1]="M0.5,1 L.5,.5 L1,.5",A),"\u250F":(w={},w[3]="M0.5,1 L.5,.5 L1,.5",w),"\u2510":(c={},c[1]="M0,.5 L.5,.5 L.5,1",c),"\u2513":(p={},p[3]="M0,.5 L.5,.5 L.5,1",p),"\u2514":(C={},C[1]="M.5,0 L.5,.5 L1,.5",C),"\u2517":(d={},d[3]="M.5,0 L.5,.5 L1,.5",d),"\u2518":(s={},s[1]="M.5,0 L.5,.5 L0,.5",s),"\u251B":(o={},o[3]="M.5,0 L.5,.5 L0,.5",o),"\u251C":(l={},l[1]="M.5,0 L.5,1 M.5,.5 L1,.5",l),"\u2523":(a={},a[3]="M.5,0 L.5,1 M.5,.5 L1,.5",a),"\u2524":(u={},u[1]="M.5,0 L.5,1 M.5,.5 L0,.5",u),"\u252B":(g={},g[3]="M.5,0 L.5,1 M.5,.5 L0,.5",g),"\u252C":(b={},b[1]="M0,.5 L1,.5 M.5,.5 L.5,1",b),"\u2533":(T={},T[3]="M0,.5 L1,.5 M.5,.5 L.5,1",T),"\u2534":(R={},R[1]="M0,.5 L1,.5 M.5,.5 L.5,0",R),"\u253B":(k={},k[3]="M0,.5 L1,.5 M.5,.5 L.5,0",k),"\u253C":(M={},M[1]="M0,.5 L1,.5 M.5,0 L.5,1",M),"\u254B":(N={},N[3]="M0,.5 L1,.5 M.5,0 L.5,1",N),"\u2574":(D={},D[1]="M.5,.5 L0,.5",D),"\u2578":(W={},W[3]="M.5,.5 L0,.5",W),"\u2575":(B={},B[1]="M.5,.5 L.5,0",B),"\u2579":(F={},F[3]="M.5,.5 L.5,0",F),"\u2576":(j={},j[1]="M.5,.5 L1,.5",j),"\u257A":(G={},G[3]="M.5,.5 L1,.5",G),"\u2577":($={},$[1]="M.5,.5 L.5,1",$),"\u257B":(ne={},ne[3]="M.5,.5 L.5,1",ne),"\u2550":(ie={},ie[1]=function(se,te){return"M0,"+(.5-te)+" L1,"+(.5-te)+" M0,"+(.5+te)+" L1,"+(.5+te)},ie),"\u2551":(be={},be[1]=function(se,te){return"M"+(.5-se)+",0 L"+(.5-se)+",1 M"+(.5+se)+",0 L"+(.5+se)+",1"},be),"\u2552":(ve={},ve[1]=function(se,te){return"M.5,1 L.5,"+(.5-te)+" L1,"+(.5-te)+" M.5,"+(.5+te)+" L1,"+(.5+te)},ve),"\u2553":(Ee={},Ee[1]=function(se,te){return"M"+(.5-se)+",1 L"+(.5-se)+",.5 L1,.5 M"+(.5+se)+",.5 L"+(.5+se)+",1"},Ee),"\u2554":(U={},U[1]=function(se,te){return"M1,"+(.5-te)+" L"+(.5-se)+","+(.5-te)+" L"+(.5-se)+",1 M1,"+(.5+te)+" L"+(.5+se)+","+(.5+te)+" L"+(.5+se)+",1"},U),"\u2555":(ee={},ee[1]=function(se,te){return"M0,"+(.5-te)+" L.5,"+(.5-te)+" L.5,1 M0,"+(.5+te)+" L.5,"+(.5+te)},ee),"\u2556":(q={},q[1]=function(se,te){return"M"+(.5+se)+",1 L"+(.5+se)+",.5 L0,.5 M"+(.5-se)+",.5 L"+(.5-se)+",1"},q),"\u2557":(Y={},Y[1]=function(se,te){return"M0,"+(.5+te)+" L"+(.5-se)+","+(.5+te)+" L"+(.5-se)+",1 M0,"+(.5-te)+" L"+(.5+se)+","+(.5-te)+" L"+(.5+se)+",1"},Y),"\u2558":(K={},K[1]=function(se,te){return"M.5,0 L.5,"+(.5+te)+" L1,"+(.5+te)+" M.5,"+(.5-te)+" L1,"+(.5-te)},K),"\u2559":(Se={},Se[1]=function(se,te){return"M1,.5 L"+(.5-se)+",.5 L"+(.5-se)+",0 M"+(.5+se)+",.5 L"+(.5+se)+",0"},Se),"\u255A":(fe={},fe[1]=function(se,te){return"M1,"+(.5-te)+" L"+(.5+se)+","+(.5-te)+" L"+(.5+se)+",0 M1,"+(.5+te)+" L"+(.5-se)+","+(.5+te)+" L"+(.5-se)+",0"},fe),"\u255B":(Ce={},Ce[1]=function(se,te){return"M0,"+(.5+te)+" L.5,"+(.5+te)+" L.5,0 M0,"+(.5-te)+" L.5,"+(.5-te)},Ce),"\u255C":(De={},De[1]=function(se,te){return"M0,.5 L"+(.5+se)+",.5 L"+(.5+se)+",0 M"+(.5-se)+",.5 L"+(.5-se)+",0"},De),"\u255D":(Fe={},Fe[1]=function(se,te){return"M0,"+(.5-te)+" L"+(.5-se)+","+(.5-te)+" L"+(.5-se)+",0 M0,"+(.5+te)+" L"+(.5+se)+","+(.5+te)+" L"+(.5+se)+",0"},Fe),"\u255E":(Ae={},Ae[1]=function(se,te){return"M.5,0 L.5,1 M.5,"+(.5-te)+" L1,"+(.5-te)+" M.5,"+(.5+te)+" L1,"+(.5+te)},Ae),"\u255F":(_e={},_e[1]=function(se,te){return"M"+(.5-se)+",0 L"+(.5-se)+",1 M"+(.5+se)+",0 L"+(.5+se)+",1 M"+(.5+se)+",.5 L1,.5"},_e),"\u2560":(je={},je[1]=function(se,te){return"M"+(.5-se)+",0 L"+(.5-se)+",1 M1,"+(.5+te)+" L"+(.5+se)+","+(.5+te)+" L"+(.5+se)+",1 M1,"+(.5-te)+" L"+(.5+se)+","+(.5-te)+" L"+(.5+se)+",0"},je),"\u2561":(Je={},Je[1]=function(se,te){return"M.5,0 L.5,1 M0,"+(.5-te)+" L.5,"+(.5-te)+" M0,"+(.5+te)+" L.5,"+(.5+te)},Je),"\u2562":(Tt={},Tt[1]=function(se,te){return"M0,.5 L"+(.5-se)+",.5 M"+(.5-se)+",0 L"+(.5-se)+",1 M"+(.5+se)+",0 L"+(.5+se)+",1"},Tt),"\u2563":(lr={},lr[1]=function(se,te){return"M"+(.5+se)+",0 L"+(.5+se)+",1 M0,"+(.5+te)+" L"+(.5-se)+","+(.5+te)+" L"+(.5-se)+",1 M0,"+(.5-te)+" L"+(.5-se)+","+(.5-te)+" L"+(.5-se)+",0"},lr),"\u2564":(Cr={},Cr[1]=function(se,te){return"M0,"+(.5-te)+" L1,"+(.5-te)+" M0,"+(.5+te)+" L1,"+(.5+te)+" M.5,"+(.5+te)+" L.5,1"},Cr),"\u2565":(wr={},wr[1]=function(se,te){return"M0,.5 L1,.5 M"+(.5-se)+",.5 L"+(.5-se)+",1 M"+(.5+se)+",.5 L"+(.5+se)+",1"},wr),"\u2566":(ei={},ei[1]=function(se,te){return"M0,"+(.5-te)+" L1,"+(.5-te)+" M0,"+(.5+te)+" L"+(.5-se)+","+(.5+te)+" L"+(.5-se)+",1 M1,"+(.5+te)+" L"+(.5+se)+","+(.5+te)+" L"+(.5+se)+",1"},ei),"\u2567":(pi={},pi[1]=function(se,te){return"M.5,0 L.5,"+(.5-te)+" M0,"+(.5-te)+" L1,"+(.5-te)+" M0,"+(.5+te)+" L1,"+(.5+te)},pi),"\u2568":(Nr={},Nr[1]=function(se,te){return"M0,.5 L1,.5 M"+(.5-se)+",.5 L"+(.5-se)+",0 M"+(.5+se)+",.5 L"+(.5+se)+",0"},Nr),"\u2569":(ti={},ti[1]=function(se,te){return"M0,"+(.5+te)+" L1,"+(.5+te)+" M0,"+(.5-te)+" L"+(.5-se)+","+(.5-te)+" L"+(.5-se)+",0 M1,"+(.5-te)+" L"+(.5+se)+","+(.5-te)+" L"+(.5+se)+",0"},ti),"\u256A":(Nt={},Nt[1]=function(se,te){return"M.5,0 L.5,1 M0,"+(.5-te)+" L1,"+(.5-te)+" M0,"+(.5+te)+" L1,"+(.5+te)},Nt),"\u256B":(vi={},vi[1]=function(se,te){return"M0,.5 L1,.5 M"+(.5-se)+",0 L"+(.5-se)+",1 M"+(.5+se)+",0 L"+(.5+se)+",1"},vi),"\u256C":(vt={},vt[1]=function(se,te){return"M0,"+(.5+te)+" L"+(.5-se)+","+(.5+te)+" L"+(.5-se)+",1 M1,"+(.5+te)+" L"+(.5+se)+","+(.5+te)+" L"+(.5+se)+",1 M0,"+(.5-te)+" L"+(.5-se)+","+(.5-te)+" L"+(.5-se)+",0 M1,"+(.5-te)+" L"+(.5+se)+","+(.5-te)+" L"+(.5+se)+",0"},vt),"\u2571":(Ne={},Ne[1]="M1,0 L0,1",Ne),"\u2572":(cr={},cr[1]="M0,0 L1,1",cr),"\u2573":(ut={},ut[1]="M1,0 L0,1 M0,0 L1,1",ut),"\u257C":(Wt={},Wt[1]="M.5,.5 L0,.5",Wt[3]="M.5,.5 L1,.5",Wt),"\u257D":(we={},we[1]="M.5,.5 L.5,0",we[3]="M.5,.5 L.5,1",we),"\u257E":(ur={},ur[1]="M.5,.5 L1,.5",ur[3]="M.5,.5 L0,.5",ur),"\u257F":(Qe={},Qe[1]="M.5,.5 L.5,1",Qe[3]="M.5,.5 L.5,0",Qe),"\u250D":(ke={},ke[1]="M.5,.5 L.5,1",ke[3]="M.5,.5 L1,.5",ke),"\u250E":(We={},We[1]="M.5,.5 L1,.5",We[3]="M.5,.5 L.5,1",We),"\u2511":(fr={},fr[1]="M.5,.5 L.5,1",fr[3]="M.5,.5 L0,.5",fr),"\u2512":(Ke={},Ke[1]="M.5,.5 L0,.5",Ke[3]="M.5,.5 L.5,1",Ke),"\u2515":(At={},At[1]="M.5,.5 L.5,0",At[3]="M.5,.5 L1,.5",At),"\u2516":(Xe={},Xe[1]="M.5,.5 L1,.5",Xe[3]="M.5,.5 L.5,0",Xe),"\u2519":(hr={},hr[1]="M.5,.5 L.5,0",hr[3]="M.5,.5 L0,.5",hr),"\u251A":(ft={},ft[1]="M.5,.5 L0,.5",ft[3]="M.5,.5 L.5,0",ft),"\u251D":(Qt={},Qt[1]="M.5,0 L.5,1",Qt[3]="M.5,.5 L1,.5",Qt),"\u251E":(Yt={},Yt[1]="M0.5,1 L.5,.5 L1,.5",Yt[3]="M.5,.5 L.5,0",Yt),"\u251F":(Wr={},Wr[1]="M.5,0 L.5,.5 L1,.5",Wr[3]="M.5,.5 L.5,1",Wr),"\u2520":(Lr={},Lr[1]="M.5,.5 L1,.5",Lr[3]="M.5,0 L.5,1",Lr),"\u2521":(et={},et[1]="M.5,.5 L.5,1",et[3]="M.5,0 L.5,.5 L1,.5",et),"\u2522":(jr={},jr[1]="M.5,.5 L.5,0",jr[3]="M0.5,1 L.5,.5 L1,.5",jr),"\u2525":(xr={},xr[1]="M.5,0 L.5,1",xr[3]="M.5,.5 L0,.5",xr),"\u2526":(Mt={},Mt[1]="M0,.5 L.5,.5 L.5,1",Mt[3]="M.5,.5 L.5,0",Mt),"\u2527":(kr={},kr[1]="M.5,0 L.5,.5 L0,.5",kr[3]="M.5,.5 L.5,1",kr),"\u2528":(Ur={},Ur[1]="M.5,.5 L0,.5",Ur[3]="M.5,0 L.5,1",Ur),"\u2529":(zr={},zr[1]="M.5,.5 L.5,1",zr[3]="M.5,0 L.5,.5 L0,.5",zr),"\u252A":(Er={},Er[1]="M.5,.5 L.5,0",Er[3]="M0,.5 L.5,.5 L.5,1",Er),"\u252D":(Zt={},Zt[1]="M0.5,1 L.5,.5 L1,.5",Zt[3]="M.5,.5 L0,.5",Zt),"\u252E":(gt={},gt[1]="M0,.5 L.5,.5 L.5,1",gt[3]="M.5,.5 L1,.5",gt),"\u252F":(ht={},ht[1]="M.5,.5 L.5,1",ht[3]="M0,.5 L1,.5",ht),"\u2530":(qr={},qr[1]="M0,.5 L1,.5",qr[3]="M.5,.5 L.5,1",qr),"\u2531":(jt={},jt[1]="M.5,.5 L1,.5",jt[3]="M0,.5 L.5,.5 L.5,1",jt),"\u2532":(dr={},dr[1]="M.5,.5 L0,.5",dr[3]="M0.5,1 L.5,.5 L1,.5",dr),"\u2535":(pr={},pr[1]="M.5,0 L.5,.5 L1,.5",pr[3]="M.5,.5 L0,.5",pr),"\u2536":(bt={},bt[1]="M.5,0 L.5,.5 L0,.5",bt[3]="M.5,.5 L1,.5",bt),"\u2537":(St={},St[1]="M.5,.5 L.5,0",St[3]="M0,.5 L1,.5",St),"\u2538":(dt={},dt[1]="M0,.5 L1,.5",dt[3]="M.5,.5 L.5,0",dt),"\u2539":(Tr={},Tr[1]="M.5,.5 L1,.5",Tr[3]="M.5,0 L.5,.5 L0,.5",Tr),"\u253A":(Ar={},Ar[1]="M.5,.5 L0,.5",Ar[3]="M.5,0 L.5,.5 L1,.5",Ar),"\u253D":(Ie={},Ie[1]="M.5,0 L.5,1 M.5,.5 L1,.5",Ie[3]="M.5,.5 L0,.5",Ie),"\u253E":(me={},me[1]="M.5,0 L.5,1 M.5,.5 L0,.5",me[3]="M.5,.5 L1,.5",me),"\u253F":(Ot={},Ot[1]="M.5,0 L.5,1",Ot[3]="M0,.5 L1,.5",Ot),"\u2540":(Mr={},Mr[1]="M0,.5 L1,.5 M.5,.5 L.5,1",Mr[3]="M.5,.5 L.5,0",Mr),"\u2541":(it={},it[1]="M.5,.5 L.5,0 M0,.5 L1,.5",it[3]="M.5,.5 L.5,1",it),"\u2542":(Re={},Re[1]="M0,.5 L1,.5",Re[3]="M.5,0 L.5,1",Re),"\u2543":(Rt={},Rt[1]="M0.5,1 L.5,.5 L1,.5",Rt[3]="M.5,0 L.5,.5 L0,.5",Rt),"\u2544":(er={},er[1]="M0,.5 L.5,.5 L.5,1",er[3]="M.5,0 L.5,.5 L1,.5",er),"\u2545":(Or={},Or[1]="M.5,0 L.5,.5 L1,.5",Or[3]="M0,.5 L.5,.5 L.5,1",Or),"\u2546":(le={},le[1]="M.5,0 L.5,.5 L0,.5",le[3]="M0.5,1 L.5,.5 L1,.5",le),"\u2547":(I={},I[1]="M.5,.5 L.5,1",I[3]="M.5,.5 L.5,0 M0,.5 L1,.5",I),"\u2548":(X={},X[1]="M.5,.5 L.5,0",X[3]="M0,.5 L1,.5 M.5,.5 L.5,1",X),"\u2549":(oe={},oe[1]="M.5,.5 L1,.5",oe[3]="M.5,0 L.5,1 M.5,.5 L0,.5",oe),"\u254A":(ce={},ce[1]="M.5,.5 L0,.5",ce[3]="M.5,0 L.5,1 M.5,.5 L1,.5",ce),"\u254C":(Te={},Te[1]="M.1,.5 L.4,.5 M.6,.5 L.9,.5",Te),"\u254D":(Oe={},Oe[3]="M.1,.5 L.4,.5 M.6,.5 L.9,.5",Oe),"\u2504":(pe={},pe[1]="M.0667,.5 L.2667,.5 M.4,.5 L.6,.5 M.7333,.5 L.9333,.5",pe),"\u2505":(Ze={},Ze[3]="M.0667,.5 L.2667,.5 M.4,.5 L.6,.5 M.7333,.5 L.9333,.5",Ze),"\u2508":(_t={},_t[1]="M.05,.5 L.2,.5 M.3,.5 L.45,.5 M.55,.5 L.7,.5 M.8,.5 L.95,.5",_t),"\u2509":(Rr={},Rr[3]="M.05,.5 L.2,.5 M.3,.5 L.45,.5 M.55,.5 L.7,.5 M.8,.5 L.95,.5",Rr),"\u254E":(Ut={},Ut[1]="M.5,.1 L.5,.4 M.5,.6 L.5,.9",Ut),"\u254F":(Bi={},Bi[3]="M.5,.1 L.5,.4 M.5,.6 L.5,.9",Bi),"\u2506":(Pi={},Pi[1]="M.5,.0667 L.5,.2667 M.5,.4 L.5,.6 M.5,.7333 L.5,.9333",Pi),"\u2507":(Kr={},Kr[3]="M.5,.0667 L.5,.2667 M.5,.4 L.5,.6 M.5,.7333 L.5,.9333",Kr),"\u250A":(gi={},gi[1]="M.5,.05 L.5,.2 M.5,.3 L.5,.45 L.5,.55 M.5,.7 L.5,.95",gi),"\u250B":(Ii={},Ii[3]="M.5,.05 L.5,.2 M.5,.3 L.5,.45 L.5,.55 M.5,.7 L.5,.95",Ii),"\u256D":(_i={},_i[1]="C.5,1,.5,.5,1,.5",_i),"\u256E":(Hi={},Hi[1]="C.5,1,.5,.5,0,.5",Hi),"\u256F":(Fi={},Fi[1]="C.5,0,.5,.5,0,.5",Fi),"\u2570":(Ni={},Ni[1]="C.5,0,.5,.5,1,.5",Ni)},f.tryDrawCustomChar=function(se,te,Ct,yi,mi,tt){var tr=f.blockElementDefinitions[te];if(tr)return function(wt,Vt,ii,Dr,gr,Br){for(var Dt=0;Dt7&&parseInt(Ue.substr(7,2),16)||1;else{if(!Ue.startsWith("rgba"))throw new Error('Unexpected fillStyle color format "'+Ue+'" when drawing pattern glyph');Xr=(Dt=Ue.substring(5,Ue.length-1).split(",").map(function(ni){return parseFloat(ni)}))[0],xt=Dt[1],bi=Dt[2],$t=Dt[3]}for(var ir=0;ir{Object.defineProperty(f,"__esModule",{value:!0}),f.GridCache=void 0;var L=function(){function y(){this.cache=[]}return y.prototype.resize=function(m,_){for(var v=0;v=0;b--)(a=d[b])&&(g=(u<3?a(g):u>3?a(s,o,g):a(s,o))||g);return u>3&&g&&Object.defineProperty(s,o,g),g},v=this&&this.__param||function(d,s){return function(o,l){s(o,l,d)}};Object.defineProperty(f,"__esModule",{value:!0}),f.LinkRenderLayer=void 0;var A=L(1546),w=L(8803),c=L(2040),p=L(2585),C=function(d){function s(o,l,a,u,g,b,T,R){var k=d.call(this,o,"link",l,!0,a,u,T,R)||this;return g.onShowLinkUnderline(function(M){return k._onShowLinkUnderline(M)}),g.onHideLinkUnderline(function(M){return k._onHideLinkUnderline(M)}),b.onShowLinkUnderline(function(M){return k._onShowLinkUnderline(M)}),b.onHideLinkUnderline(function(M){return k._onHideLinkUnderline(M)}),k}return m(s,d),s.prototype.resize=function(o){d.prototype.resize.call(this,o),this._state=void 0},s.prototype.reset=function(){this._clearCurrentLink()},s.prototype._clearCurrentLink=function(){if(this._state){this._clearCells(this._state.x1,this._state.y1,this._state.cols-this._state.x1,1);var o=this._state.y2-this._state.y1-1;o>0&&this._clearCells(0,this._state.y1+1,this._state.cols,o),this._clearCells(0,this._state.y2,this._state.x2,1),this._state=void 0}},s.prototype._onShowLinkUnderline=function(o){if(o.fg===w.INVERTED_DEFAULT_COLOR?this._ctx.fillStyle=this._colors.background.css:o.fg&&(0,c.is256Color)(o.fg)?this._ctx.fillStyle=this._colors.ansi[o.fg].css:this._ctx.fillStyle=this._colors.foreground.css,o.y1===o.y2)this._fillBottomLineAtCells(o.x1,o.y1,o.x2-o.x1);else{this._fillBottomLineAtCells(o.x1,o.y1,o.cols-o.x1);for(var l=o.y1+1;l=0;D--)(k=g[D])&&(N=(M<3?k(N):M>3?k(b,T,N):k(b,T))||N);return M>3&&N&&Object.defineProperty(b,T,N),N},v=this&&this.__param||function(g,b){return function(T,R){b(T,R,g)}};Object.defineProperty(f,"__esModule",{value:!0}),f.Renderer=void 0;var A=L(9596),w=L(4149),c=L(2512),p=L(5098),C=L(844),d=L(4725),s=L(2585),o=L(1420),l=L(8460),a=1,u=function(g){function b(T,R,k,M,N,D,W,B){var F=g.call(this)||this;F._colors=T,F._screenElement=R,F._bufferService=D,F._charSizeService=W,F._optionsService=B,F._id=a++,F._onRequestRedraw=new l.EventEmitter;var j=F._optionsService.rawOptions.allowTransparency;return F._renderLayers=[N.createInstance(A.TextRenderLayer,F._screenElement,0,F._colors,j,F._id),N.createInstance(w.SelectionRenderLayer,F._screenElement,1,F._colors,F._id),N.createInstance(p.LinkRenderLayer,F._screenElement,2,F._colors,F._id,k,M),N.createInstance(c.CursorRenderLayer,F._screenElement,3,F._colors,F._id,F._onRequestRedraw)],F.dimensions={scaledCharWidth:0,scaledCharHeight:0,scaledCellWidth:0,scaledCellHeight:0,scaledCharLeft:0,scaledCharTop:0,scaledCanvasWidth:0,scaledCanvasHeight:0,canvasWidth:0,canvasHeight:0,actualCellWidth:0,actualCellHeight:0},F._devicePixelRatio=window.devicePixelRatio,F._updateDimensions(),F.onOptionsChanged(),F}return m(b,g),Object.defineProperty(b.prototype,"onRequestRedraw",{get:function(){return this._onRequestRedraw.event},enumerable:!1,configurable:!0}),b.prototype.dispose=function(){for(var T=0,R=this._renderLayers;T{Object.defineProperty(f,"__esModule",{value:!0}),f.throwIfFalsy=void 0,f.throwIfFalsy=function(L){if(!L)throw new Error("value must not be falsy");return L}},4149:function(E,f,L){var y,m=this&&this.__extends||(y=function(p,C){return y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(d,s){d.__proto__=s}||function(d,s){for(var o in s)Object.prototype.hasOwnProperty.call(s,o)&&(d[o]=s[o])},y(p,C)},function(p,C){if(typeof C!="function"&&C!==null)throw new TypeError("Class extends value "+String(C)+" is not a constructor or null");function d(){this.constructor=p}y(p,C),p.prototype=C===null?Object.create(C):(d.prototype=C.prototype,new d)}),_=this&&this.__decorate||function(p,C,d,s){var o,l=arguments.length,a=l<3?C:s===null?s=Object.getOwnPropertyDescriptor(C,d):s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")a=Reflect.decorate(p,C,d,s);else for(var u=p.length-1;u>=0;u--)(o=p[u])&&(a=(l<3?o(a):l>3?o(C,d,a):o(C,d))||a);return l>3&&a&&Object.defineProperty(C,d,a),a},v=this&&this.__param||function(p,C){return function(d,s){C(d,s,p)}};Object.defineProperty(f,"__esModule",{value:!0}),f.SelectionRenderLayer=void 0;var A=L(1546),w=L(2585),c=function(p){function C(d,s,o,l,a,u){var g=p.call(this,d,"selection",s,!0,o,l,a,u)||this;return g._clearState(),g}return m(C,p),C.prototype._clearState=function(){this._state={start:void 0,end:void 0,columnSelectMode:void 0,ydisp:void 0}},C.prototype.resize=function(d){p.prototype.resize.call(this,d),this._clearState()},C.prototype.reset=function(){this._state.start&&this._state.end&&(this._clearState(),this._clearAll())},C.prototype.onSelectionChanged=function(d,s,o){if(this._didStateChange(d,s,o,this._bufferService.buffer.ydisp))if(this._clearAll(),d&&s){var l=d[1]-this._bufferService.buffer.ydisp,a=s[1]-this._bufferService.buffer.ydisp,u=Math.max(l,0),g=Math.min(a,this._bufferService.rows-1);if(u>=this._bufferService.rows||g<0)this._state.ydisp=this._bufferService.buffer.ydisp;else{if(this._ctx.fillStyle=this._colors.selectionTransparent.css,o){var b=d[0],T=s[0]-b,R=g-u+1;this._fillCells(b,u,T,R)}else{b=l===u?d[0]:0;var k=u===a?s[0]:this._bufferService.cols;this._fillCells(b,u,k-b,1);var M=Math.max(g-u-1,0);if(this._fillCells(0,u+1,this._bufferService.cols,M),u!==g){var N=a===g?s[0]:this._bufferService.cols;this._fillCells(0,g,N,1)}}this._state.start=[d[0],d[1]],this._state.end=[s[0],s[1]],this._state.columnSelectMode=o,this._state.ydisp=this._bufferService.buffer.ydisp}}else this._clearState()},C.prototype._didStateChange=function(d,s,o,l){return!this._areCoordinatesEqual(d,this._state.start)||!this._areCoordinatesEqual(s,this._state.end)||o!==this._state.columnSelectMode||l!==this._state.ydisp},C.prototype._areCoordinatesEqual=function(d,s){return!(!d||!s)&&d[0]===s[0]&&d[1]===s[1]},_([v(4,w.IBufferService),v(5,w.IOptionsService)],C)}(A.BaseRenderLayer);f.SelectionRenderLayer=c},9596:function(E,f,L){var y,m=this&&this.__extends||(y=function(a,u){return y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(g,b){g.__proto__=b}||function(g,b){for(var T in b)Object.prototype.hasOwnProperty.call(b,T)&&(g[T]=b[T])},y(a,u)},function(a,u){if(typeof u!="function"&&u!==null)throw new TypeError("Class extends value "+String(u)+" is not a constructor or null");function g(){this.constructor=a}y(a,u),a.prototype=u===null?Object.create(u):(g.prototype=u.prototype,new g)}),_=this&&this.__decorate||function(a,u,g,b){var T,R=arguments.length,k=R<3?u:b===null?b=Object.getOwnPropertyDescriptor(u,g):b;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")k=Reflect.decorate(a,u,g,b);else for(var M=a.length-1;M>=0;M--)(T=a[M])&&(k=(R<3?T(k):R>3?T(u,g,k):T(u,g))||k);return R>3&&k&&Object.defineProperty(u,g,k),k},v=this&&this.__param||function(a,u){return function(g,b){u(g,b,a)}};Object.defineProperty(f,"__esModule",{value:!0}),f.TextRenderLayer=void 0;var A=L(3700),w=L(1546),c=L(3734),p=L(643),C=L(511),d=L(2585),s=L(4725),o=L(4269),l=function(a){function u(g,b,T,R,k,M,N,D){var W=a.call(this,g,"text",b,R,T,k,M,N)||this;return W._characterJoinerService=D,W._characterWidth=0,W._characterFont="",W._characterOverlapCache={},W._workCell=new C.CellData,W._state=new A.GridCache,W}return m(u,a),u.prototype.resize=function(g){a.prototype.resize.call(this,g);var b=this._getFont(!1,!1);this._characterWidth===g.scaledCharWidth&&this._characterFont===b||(this._characterWidth=g.scaledCharWidth,this._characterFont=b,this._characterOverlapCache={}),this._state.clear(),this._state.resize(this._bufferService.cols,this._bufferService.rows)},u.prototype.reset=function(){this._state.clear(),this._clearAll()},u.prototype._forEachCell=function(g,b,T){for(var R=g;R<=b;R++)for(var k=R+this._bufferService.buffer.ydisp,M=this._bufferService.buffer.lines.get(k),N=this._characterJoinerService.getJoinedCharacters(k),D=0;D0&&D===N[0][0]){B=!0;var j=N.shift();W=new o.JoinedCellData(this._workCell,M.translateToString(!0,j[0],j[1]),j[1]-j[0]),F=j[1]-1}!B&&this._isOverlapping(W)&&Fthis._characterWidth;return this._ctx.restore(),this._characterOverlapCache[b]=T,T},_([v(5,d.IBufferService),v(6,d.IOptionsService),v(7,s.ICharacterJoinerService)],u)}(w.BaseRenderLayer);f.TextRenderLayer=l},9616:(E,f)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.BaseCharAtlas=void 0;var L=function(){function y(){this._didWarmUp=!1}return y.prototype.dispose=function(){},y.prototype.warmUp=function(){this._didWarmUp||(this._doWarmUp(),this._didWarmUp=!0)},y.prototype._doWarmUp=function(){},y.prototype.clear=function(){},y.prototype.beginFrame=function(){},y}();f.BaseCharAtlas=L},1420:(E,f,L)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.removeTerminalFromCache=f.acquireCharAtlas=void 0;var y=L(2040),m=L(1906),_=[];f.acquireCharAtlas=function(v,A,w,c,p){for(var C=(0,y.generateConfig)(c,p,v,w),d=0;d<_.length;d++){var s=(o=_[d]).ownedBy.indexOf(A);if(s>=0){if((0,y.configEquals)(o.config,C))return o.atlas;o.ownedBy.length===1?(o.atlas.dispose(),_.splice(d,1)):o.ownedBy.splice(s,1);break}}for(d=0;d<_.length;d++){var o=_[d];if((0,y.configEquals)(o.config,C))return o.ownedBy.push(A),o.atlas}var l={atlas:new m.DynamicCharAtlas(document,C),config:C,ownedBy:[A]};return _.push(l),l.atlas},f.removeTerminalFromCache=function(v){for(var A=0;A<_.length;A++){var w=_[A].ownedBy.indexOf(v);if(w!==-1){_[A].ownedBy.length===1?(_[A].atlas.dispose(),_.splice(A,1)):_[A].ownedBy.splice(w,1);break}}}},2040:function(E,f,L){var y=this&&this.__spreadArray||function(_,v,A){if(A||arguments.length===2)for(var w,c=0,p=v.length;c{Object.defineProperty(f,"__esModule",{value:!0}),f.CHAR_ATLAS_CELL_SPACING=f.TEXT_BASELINE=f.DIM_OPACITY=f.INVERTED_DEFAULT_COLOR=void 0;var y=L(6114);f.INVERTED_DEFAULT_COLOR=257,f.DIM_OPACITY=.5,f.TEXT_BASELINE=y.isFirefox||y.isLegacyEdge?"bottom":"ideographic",f.CHAR_ATLAS_CELL_SPACING=1},1906:function(E,f,L){var y,m=this&&this.__extends||(y=function(b,T){return y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(R,k){R.__proto__=k}||function(R,k){for(var M in k)Object.prototype.hasOwnProperty.call(k,M)&&(R[M]=k[M])},y(b,T)},function(b,T){if(typeof T!="function"&&T!==null)throw new TypeError("Class extends value "+String(T)+" is not a constructor or null");function R(){this.constructor=b}y(b,T),b.prototype=T===null?Object.create(T):(R.prototype=T.prototype,new R)});Object.defineProperty(f,"__esModule",{value:!0}),f.NoneCharAtlas=f.DynamicCharAtlas=f.getGlyphCacheKey=void 0;var _=L(8803),v=L(9616),A=L(5680),w=L(7001),c=L(6114),p=L(1752),C=L(4774),d=1024,s=1024,o={css:"rgba(0, 0, 0, 0)",rgba:0};function l(b){return b.code<<21|b.bg<<12|b.fg<<3|(b.bold?0:4)+(b.dim?0:2)+(b.italic?0:1)}f.getGlyphCacheKey=l;var a=function(b){function T(R,k){var M=b.call(this)||this;M._config=k,M._drawToCacheCount=0,M._glyphsWaitingOnBitmap=[],M._bitmapCommitTimeout=null,M._bitmap=null,M._cacheCanvas=R.createElement("canvas"),M._cacheCanvas.width=d,M._cacheCanvas.height=s,M._cacheCtx=(0,p.throwIfFalsy)(M._cacheCanvas.getContext("2d",{alpha:!0}));var N=R.createElement("canvas");N.width=M._config.scaledCharWidth,N.height=M._config.scaledCharHeight,M._tmpCtx=(0,p.throwIfFalsy)(N.getContext("2d",{alpha:M._config.allowTransparency})),M._width=Math.floor(d/M._config.scaledCharWidth),M._height=Math.floor(s/M._config.scaledCharHeight);var D=M._width*M._height;return M._cacheMap=new w.LRUMap(D),M._cacheMap.prealloc(D),M}return m(T,b),T.prototype.dispose=function(){this._bitmapCommitTimeout!==null&&(window.clearTimeout(this._bitmapCommitTimeout),this._bitmapCommitTimeout=null)},T.prototype.beginFrame=function(){this._drawToCacheCount=0},T.prototype.clear=function(){if(this._cacheMap.size>0){var R=this._width*this._height;this._cacheMap=new w.LRUMap(R),this._cacheMap.prealloc(R)}this._cacheCtx.clearRect(0,0,d,s),this._tmpCtx.clearRect(0,0,this._config.scaledCharWidth,this._config.scaledCharHeight)},T.prototype.draw=function(R,k,M,N){if(k.code===32)return!0;if(!this._canCache(k))return!1;var D=l(k),W=this._cacheMap.get(D);if(W!=null)return this._drawFromCache(R,W,M,N),!0;if(this._drawToCacheCount<100){var B;B=this._cacheMap.size>>24,M=T.rgba>>>16&255,N=T.rgba>>>8&255,D=0;D{Object.defineProperty(f,"__esModule",{value:!0}),f.LRUMap=void 0;var L=function(){function y(m){this.capacity=m,this._map={},this._head=null,this._tail=null,this._nodePool=[],this.size=0}return y.prototype._unlinkNode=function(m){var _=m.prev,v=m.next;m===this._head&&(this._head=v),m===this._tail&&(this._tail=_),_!==null&&(_.next=v),v!==null&&(v.prev=_)},y.prototype._appendNode=function(m){var _=this._tail;_!==null&&(_.next=m),m.prev=_,m.next=null,this._tail=m,this._head===null&&(this._head=m)},y.prototype.prealloc=function(m){for(var _=this._nodePool,v=0;v=this.capacity)v=this._head,this._unlinkNode(v),delete this._map[v.key],v.key=m,v.value=_,this._map[m]=v;else{var A=this._nodePool;A.length>0?((v=A.pop()).key=m,v.value=_):v={prev:null,next:null,key:m,value:_},this._map[m]=v,this.size++}this._appendNode(v)},y}();f.LRUMap=L},1296:function(E,f,L){var y,m=this&&this.__extends||(y=function(R,k){return y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(M,N){M.__proto__=N}||function(M,N){for(var D in N)Object.prototype.hasOwnProperty.call(N,D)&&(M[D]=N[D])},y(R,k)},function(R,k){if(typeof k!="function"&&k!==null)throw new TypeError("Class extends value "+String(k)+" is not a constructor or null");function M(){this.constructor=R}y(R,k),R.prototype=k===null?Object.create(k):(M.prototype=k.prototype,new M)}),_=this&&this.__decorate||function(R,k,M,N){var D,W=arguments.length,B=W<3?k:N===null?N=Object.getOwnPropertyDescriptor(k,M):N;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")B=Reflect.decorate(R,k,M,N);else for(var F=R.length-1;F>=0;F--)(D=R[F])&&(B=(W<3?D(B):W>3?D(k,M,B):D(k,M))||B);return W>3&&B&&Object.defineProperty(k,M,B),B},v=this&&this.__param||function(R,k){return function(M,N){k(M,N,R)}};Object.defineProperty(f,"__esModule",{value:!0}),f.DomRenderer=void 0;var A=L(3787),w=L(8803),c=L(844),p=L(4725),C=L(2585),d=L(8460),s=L(4774),o=L(9631),l="xterm-dom-renderer-owner-",a="xterm-fg-",u="xterm-bg-",g="xterm-focus",b=1,T=function(R){function k(M,N,D,W,B,F,j,G,$,ne){var ie=R.call(this)||this;return ie._colors=M,ie._element=N,ie._screenElement=D,ie._viewportElement=W,ie._linkifier=B,ie._linkifier2=F,ie._charSizeService=G,ie._optionsService=$,ie._bufferService=ne,ie._terminalClass=b++,ie._rowElements=[],ie._rowContainer=document.createElement("div"),ie._rowContainer.classList.add("xterm-rows"),ie._rowContainer.style.lineHeight="normal",ie._rowContainer.setAttribute("aria-hidden","true"),ie._refreshRowElements(ie._bufferService.cols,ie._bufferService.rows),ie._selectionContainer=document.createElement("div"),ie._selectionContainer.classList.add("xterm-selection"),ie._selectionContainer.setAttribute("aria-hidden","true"),ie.dimensions={scaledCharWidth:0,scaledCharHeight:0,scaledCellWidth:0,scaledCellHeight:0,scaledCharLeft:0,scaledCharTop:0,scaledCanvasWidth:0,scaledCanvasHeight:0,canvasWidth:0,canvasHeight:0,actualCellWidth:0,actualCellHeight:0},ie._updateDimensions(),ie._injectCss(),ie._rowFactory=j.createInstance(A.DomRendererRowFactory,document,ie._colors),ie._element.classList.add(l+ie._terminalClass),ie._screenElement.appendChild(ie._rowContainer),ie._screenElement.appendChild(ie._selectionContainer),ie._linkifier.onShowLinkUnderline(function(be){return ie._onLinkHover(be)}),ie._linkifier.onHideLinkUnderline(function(be){return ie._onLinkLeave(be)}),ie._linkifier2.onShowLinkUnderline(function(be){return ie._onLinkHover(be)}),ie._linkifier2.onHideLinkUnderline(function(be){return ie._onLinkLeave(be)}),ie}return m(k,R),Object.defineProperty(k.prototype,"onRequestRedraw",{get:function(){return new d.EventEmitter().event},enumerable:!1,configurable:!0}),k.prototype.dispose=function(){this._element.classList.remove(l+this._terminalClass),(0,o.removeElementFromParent)(this._rowContainer,this._selectionContainer,this._themeStyleElement,this._dimensionsStyleElement),R.prototype.dispose.call(this)},k.prototype._updateDimensions=function(){this.dimensions.scaledCharWidth=this._charSizeService.width*window.devicePixelRatio,this.dimensions.scaledCharHeight=Math.ceil(this._charSizeService.height*window.devicePixelRatio),this.dimensions.scaledCellWidth=this.dimensions.scaledCharWidth+Math.round(this._optionsService.rawOptions.letterSpacing),this.dimensions.scaledCellHeight=Math.floor(this.dimensions.scaledCharHeight*this._optionsService.rawOptions.lineHeight),this.dimensions.scaledCharLeft=0,this.dimensions.scaledCharTop=0,this.dimensions.scaledCanvasWidth=this.dimensions.scaledCellWidth*this._bufferService.cols,this.dimensions.scaledCanvasHeight=this.dimensions.scaledCellHeight*this._bufferService.rows,this.dimensions.canvasWidth=Math.round(this.dimensions.scaledCanvasWidth/window.devicePixelRatio),this.dimensions.canvasHeight=Math.round(this.dimensions.scaledCanvasHeight/window.devicePixelRatio),this.dimensions.actualCellWidth=this.dimensions.canvasWidth/this._bufferService.cols,this.dimensions.actualCellHeight=this.dimensions.canvasHeight/this._bufferService.rows;for(var M=0,N=this._rowElements;MN;)this._rowContainer.removeChild(this._rowElements.pop())},k.prototype.onResize=function(M,N){this._refreshRowElements(M,N),this._updateDimensions()},k.prototype.onCharSizeChanged=function(){this._updateDimensions()},k.prototype.onBlur=function(){this._rowContainer.classList.remove(g)},k.prototype.onFocus=function(){this._rowContainer.classList.add(g)},k.prototype.onSelectionChanged=function(M,N,D){for(;this._selectionContainer.children.length;)this._selectionContainer.removeChild(this._selectionContainer.children[0]);if(M&&N){var W=M[1]-this._bufferService.buffer.ydisp,B=N[1]-this._bufferService.buffer.ydisp,F=Math.max(W,0),j=Math.min(B,this._bufferService.rows-1);if(!(F>=this._bufferService.rows||j<0)){var G=document.createDocumentFragment();if(D)G.appendChild(this._createSelectionElement(F,M[0],N[0],j-F+1));else{var $=W===F?M[0]:0,ne=F===B?N[0]:this._bufferService.cols;G.appendChild(this._createSelectionElement(F,$,ne));var ie=j-F-1;if(G.appendChild(this._createSelectionElement(F+1,0,this._bufferService.cols,ie)),F!==j){var be=B===j?N[0]:this._bufferService.cols;G.appendChild(this._createSelectionElement(j,0,be))}}this._selectionContainer.appendChild(G)}}},k.prototype._createSelectionElement=function(M,N,D,W){W===void 0&&(W=1);var B=document.createElement("div");return B.style.height=W*this.dimensions.actualCellHeight+"px",B.style.top=M*this.dimensions.actualCellHeight+"px",B.style.left=N*this.dimensions.actualCellWidth+"px",B.style.width=this.dimensions.actualCellWidth*(D-N)+"px",B},k.prototype.onCursorMove=function(){},k.prototype.onOptionsChanged=function(){this._updateDimensions(),this._injectCss()},k.prototype.clear=function(){for(var M=0,N=this._rowElements;M=B&&(M=0,D++)}},_([v(6,C.IInstantiationService),v(7,p.ICharSizeService),v(8,C.IOptionsService),v(9,C.IBufferService)],k)}(c.Disposable);f.DomRenderer=T},3787:function(E,f,L){var y=this&&this.__decorate||function(o,l,a,u){var g,b=arguments.length,T=b<3?l:u===null?u=Object.getOwnPropertyDescriptor(l,a):u;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")T=Reflect.decorate(o,l,a,u);else for(var R=o.length-1;R>=0;R--)(g=o[R])&&(T=(b<3?g(T):b>3?g(l,a,T):g(l,a))||T);return b>3&&T&&Object.defineProperty(l,a,T),T},m=this&&this.__param||function(o,l){return function(a,u){l(a,u,o)}};Object.defineProperty(f,"__esModule",{value:!0}),f.DomRendererRowFactory=f.CURSOR_STYLE_UNDERLINE_CLASS=f.CURSOR_STYLE_BAR_CLASS=f.CURSOR_STYLE_BLOCK_CLASS=f.CURSOR_BLINK_CLASS=f.CURSOR_CLASS=f.STRIKETHROUGH_CLASS=f.UNDERLINE_CLASS=f.ITALIC_CLASS=f.DIM_CLASS=f.BOLD_CLASS=void 0;var _=L(8803),v=L(643),A=L(511),w=L(2585),c=L(4774),p=L(4725),C=L(4269);f.BOLD_CLASS="xterm-bold",f.DIM_CLASS="xterm-dim",f.ITALIC_CLASS="xterm-italic",f.UNDERLINE_CLASS="xterm-underline",f.STRIKETHROUGH_CLASS="xterm-strikethrough",f.CURSOR_CLASS="xterm-cursor",f.CURSOR_BLINK_CLASS="xterm-cursor-blink",f.CURSOR_STYLE_BLOCK_CLASS="xterm-cursor-block",f.CURSOR_STYLE_BAR_CLASS="xterm-cursor-bar",f.CURSOR_STYLE_UNDERLINE_CLASS="xterm-cursor-underline";var d=function(){function o(l,a,u,g,b){this._document=l,this._colors=a,this._characterJoinerService=u,this._optionsService=g,this._coreService=b,this._workCell=new A.CellData}return o.prototype.setColors=function(l){this._colors=l},o.prototype.createRow=function(l,a,u,g,b,T,R,k){for(var M=this._document.createDocumentFragment(),N=this._characterJoinerService.getJoinedCharacters(a),D=0,W=Math.min(l.length,k)-1;W>=0;W--)if(l.loadCell(W,this._workCell).getCode()!==v.NULL_CELL_CODE||u&&W===b){D=W+1;break}for(W=0;W0&&W===N[0][0]){F=!0;var $=N.shift();G=new C.JoinedCellData(this._workCell,l.translateToString(!0,$[0],$[1]),$[1]-$[0]),j=$[1]-1,B=G.getWidth()}var ne=this._document.createElement("span");if(B>1&&(ne.style.width=R*B+"px"),F&&(ne.style.display="inline",b>=W&&b<=j&&(b=W)),!this._coreService.isCursorHidden&&u&&W===b)switch(ne.classList.add(f.CURSOR_CLASS),T&&ne.classList.add(f.CURSOR_BLINK_CLASS),g){case"bar":ne.classList.add(f.CURSOR_STYLE_BAR_CLASS);break;case"underline":ne.classList.add(f.CURSOR_STYLE_UNDERLINE_CLASS);break;default:ne.classList.add(f.CURSOR_STYLE_BLOCK_CLASS)}G.isBold()&&ne.classList.add(f.BOLD_CLASS),G.isItalic()&&ne.classList.add(f.ITALIC_CLASS),G.isDim()&&ne.classList.add(f.DIM_CLASS),G.isUnderline()&&ne.classList.add(f.UNDERLINE_CLASS),G.isInvisible()?ne.textContent=v.WHITESPACE_CELL_CHAR:ne.textContent=G.getChars()||v.WHITESPACE_CELL_CHAR,G.isStrikethrough()&&ne.classList.add(f.STRIKETHROUGH_CLASS);var ie=G.getFgColor(),be=G.getFgColorMode(),ve=G.getBgColor(),Ee=G.getBgColorMode(),U=!!G.isInverse();if(U){var ee=ie;ie=ve,ve=ee;var q=be;be=Ee,Ee=q}switch(be){case 16777216:case 33554432:G.isBold()&&ie<8&&this._optionsService.rawOptions.drawBoldTextInBrightColors&&(ie+=8),this._applyMinimumContrast(ne,this._colors.background,this._colors.ansi[ie])||ne.classList.add("xterm-fg-"+ie);break;case 50331648:var Y=c.rgba.toColor(ie>>16&255,ie>>8&255,255&ie);this._applyMinimumContrast(ne,this._colors.background,Y)||this._addStyle(ne,"color:#"+s(ie.toString(16),"0",6));break;default:this._applyMinimumContrast(ne,this._colors.background,this._colors.foreground)||U&&ne.classList.add("xterm-fg-"+_.INVERTED_DEFAULT_COLOR)}switch(Ee){case 16777216:case 33554432:ne.classList.add("xterm-bg-"+ve);break;case 50331648:this._addStyle(ne,"background-color:#"+s(ve.toString(16),"0",6));break;default:U&&ne.classList.add("xterm-bg-"+_.INVERTED_DEFAULT_COLOR)}M.appendChild(ne),W=j}}return M},o.prototype._applyMinimumContrast=function(l,a,u){if(this._optionsService.rawOptions.minimumContrastRatio===1)return!1;var g=this._colors.contrastCache.getColor(this._workCell.bg,this._workCell.fg);return g===void 0&&(g=c.color.ensureContrastRatio(a,u,this._optionsService.rawOptions.minimumContrastRatio),this._colors.contrastCache.setColor(this._workCell.bg,this._workCell.fg,g??null)),!!g&&(this._addStyle(l,"color:"+g.css),!0)},o.prototype._addStyle=function(l,a){l.setAttribute("style",""+(l.getAttribute("style")||"")+a+";")},y([m(2,p.ICharacterJoinerService),m(3,w.IOptionsService),m(4,w.ICoreService)],o)}();function s(o,l,a){for(;o.length{Object.defineProperty(f,"__esModule",{value:!0}),f.SelectionModel=void 0;var L=function(){function y(m){this._bufferService=m,this.isSelectAllActive=!1,this.selectionStartLength=0}return y.prototype.clearSelection=function(){this.selectionStart=void 0,this.selectionEnd=void 0,this.isSelectAllActive=!1,this.selectionStartLength=0},Object.defineProperty(y.prototype,"finalSelectionStart",{get:function(){return this.isSelectAllActive?[0,0]:this.selectionEnd&&this.selectionStart&&this.areSelectionValuesReversed()?this.selectionEnd:this.selectionStart},enumerable:!1,configurable:!0}),Object.defineProperty(y.prototype,"finalSelectionEnd",{get:function(){if(this.isSelectAllActive)return[this._bufferService.cols,this._bufferService.buffer.ybase+this._bufferService.rows-1];if(this.selectionStart){if(!this.selectionEnd||this.areSelectionValuesReversed()){var m=this.selectionStart[0]+this.selectionStartLength;return m>this._bufferService.cols?m%this._bufferService.cols==0?[this._bufferService.cols,this.selectionStart[1]+Math.floor(m/this._bufferService.cols)-1]:[m%this._bufferService.cols,this.selectionStart[1]+Math.floor(m/this._bufferService.cols)]:[m,this.selectionStart[1]]}return this.selectionStartLength&&this.selectionEnd[1]===this.selectionStart[1]?[Math.max(this.selectionStart[0]+this.selectionStartLength,this.selectionEnd[0]),this.selectionEnd[1]]:this.selectionEnd}},enumerable:!1,configurable:!0}),y.prototype.areSelectionValuesReversed=function(){var m=this.selectionStart,_=this.selectionEnd;return!(!m||!_)&&(m[1]>_[1]||m[1]===_[1]&&m[0]>_[0])},y.prototype.onTrim=function(m){return this.selectionStart&&(this.selectionStart[1]-=m),this.selectionEnd&&(this.selectionEnd[1]-=m),this.selectionEnd&&this.selectionEnd[1]<0?(this.clearSelection(),!0):(this.selectionStart&&this.selectionStart[1]<0&&(this.selectionStart[1]=0),!1)},y}();f.SelectionModel=L},428:function(E,f,L){var y=this&&this.__decorate||function(c,p,C,d){var s,o=arguments.length,l=o<3?p:d===null?d=Object.getOwnPropertyDescriptor(p,C):d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")l=Reflect.decorate(c,p,C,d);else for(var a=c.length-1;a>=0;a--)(s=c[a])&&(l=(o<3?s(l):o>3?s(p,C,l):s(p,C))||l);return o>3&&l&&Object.defineProperty(p,C,l),l},m=this&&this.__param||function(c,p){return function(C,d){p(C,d,c)}};Object.defineProperty(f,"__esModule",{value:!0}),f.CharSizeService=void 0;var _=L(2585),v=L(8460),A=function(){function c(p,C,d){this._optionsService=d,this.width=0,this.height=0,this._onCharSizeChange=new v.EventEmitter,this._measureStrategy=new w(p,C,this._optionsService)}return Object.defineProperty(c.prototype,"hasValidSize",{get:function(){return this.width>0&&this.height>0},enumerable:!1,configurable:!0}),Object.defineProperty(c.prototype,"onCharSizeChange",{get:function(){return this._onCharSizeChange.event},enumerable:!1,configurable:!0}),c.prototype.measure=function(){var p=this._measureStrategy.measure();p.width===this.width&&p.height===this.height||(this.width=p.width,this.height=p.height,this._onCharSizeChange.fire())},y([m(2,_.IOptionsService)],c)}();f.CharSizeService=A;var w=function(){function c(p,C,d){this._document=p,this._parentElement=C,this._optionsService=d,this._result={width:0,height:0},this._measureElement=this._document.createElement("span"),this._measureElement.classList.add("xterm-char-measure-element"),this._measureElement.textContent="W",this._measureElement.setAttribute("aria-hidden","true"),this._parentElement.appendChild(this._measureElement)}return c.prototype.measure=function(){this._measureElement.style.fontFamily=this._optionsService.rawOptions.fontFamily,this._measureElement.style.fontSize=this._optionsService.rawOptions.fontSize+"px";var p=this._measureElement.getBoundingClientRect();return p.width!==0&&p.height!==0&&(this._result.width=p.width,this._result.height=Math.ceil(p.height)),this._result},c}()},4269:function(E,f,L){var y,m=this&&this.__extends||(y=function(s,o){return y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(l,a){l.__proto__=a}||function(l,a){for(var u in a)Object.prototype.hasOwnProperty.call(a,u)&&(l[u]=a[u])},y(s,o)},function(s,o){if(typeof o!="function"&&o!==null)throw new TypeError("Class extends value "+String(o)+" is not a constructor or null");function l(){this.constructor=s}y(s,o),s.prototype=o===null?Object.create(o):(l.prototype=o.prototype,new l)}),_=this&&this.__decorate||function(s,o,l,a){var u,g=arguments.length,b=g<3?o:a===null?a=Object.getOwnPropertyDescriptor(o,l):a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")b=Reflect.decorate(s,o,l,a);else for(var T=s.length-1;T>=0;T--)(u=s[T])&&(b=(g<3?u(b):g>3?u(o,l,b):u(o,l))||b);return g>3&&b&&Object.defineProperty(o,l,b),b},v=this&&this.__param||function(s,o){return function(l,a){o(l,a,s)}};Object.defineProperty(f,"__esModule",{value:!0}),f.CharacterJoinerService=f.JoinedCellData=void 0;var A=L(3734),w=L(643),c=L(511),p=L(2585),C=function(s){function o(l,a,u){var g=s.call(this)||this;return g.content=0,g.combinedData="",g.fg=l.fg,g.bg=l.bg,g.combinedData=a,g._width=u,g}return m(o,s),o.prototype.isCombined=function(){return 2097152},o.prototype.getWidth=function(){return this._width},o.prototype.getChars=function(){return this.combinedData},o.prototype.getCode=function(){return 2097151},o.prototype.setFromCharData=function(l){throw new Error("not implemented")},o.prototype.getAsCharData=function(){return[this.fg,this.getChars(),this.getWidth(),this.getCode()]},o}(A.AttributeData);f.JoinedCellData=C;var d=function(){function s(o){this._bufferService=o,this._characterJoiners=[],this._nextCharacterJoinerId=0,this._workCell=new c.CellData}return s.prototype.register=function(o){var l={id:this._nextCharacterJoinerId++,handler:o};return this._characterJoiners.push(l),l.id},s.prototype.deregister=function(o){for(var l=0;l1)for(var N=this._getJoinedRanges(u,T,b,l,g),D=0;D1)for(N=this._getJoinedRanges(u,T,b,l,g),D=0;D{Object.defineProperty(f,"__esModule",{value:!0}),f.CoreBrowserService=void 0;var L=function(){function y(m){this._textarea=m}return Object.defineProperty(y.prototype,"isFocused",{get:function(){return(this._textarea.getRootNode?this._textarea.getRootNode():document).activeElement===this._textarea&&document.hasFocus()},enumerable:!1,configurable:!0}),y}();f.CoreBrowserService=L},7641:function(E,f,L){var y,m=this&&this.__extends||(y=function(d,s){return y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(o,l){o.__proto__=l}||function(o,l){for(var a in l)Object.prototype.hasOwnProperty.call(l,a)&&(o[a]=l[a])},y(d,s)},function(d,s){if(typeof s!="function"&&s!==null)throw new TypeError("Class extends value "+String(s)+" is not a constructor or null");function o(){this.constructor=d}y(d,s),d.prototype=s===null?Object.create(s):(o.prototype=s.prototype,new o)}),_=this&&this.__decorate||function(d,s,o,l){var a,u=arguments.length,g=u<3?s:l===null?l=Object.getOwnPropertyDescriptor(s,o):l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")g=Reflect.decorate(d,s,o,l);else for(var b=d.length-1;b>=0;b--)(a=d[b])&&(g=(u<3?a(g):u>3?a(s,o,g):a(s,o))||g);return u>3&&g&&Object.defineProperty(s,o,g),g},v=this&&this.__param||function(d,s){return function(o,l){s(o,l,d)}};Object.defineProperty(f,"__esModule",{value:!0}),f.Decoration=f.DecorationService=void 0;var A=L(8460),w=L(844),c=L(2585),p=function(d){function s(o){var l=d.call(this)||this;return l._instantiationService=o,l._decorations=[],l}return m(s,d),s.prototype.attachToDom=function(o,l){var a=this;this._renderService=l,this._screenElement=o,this._container=document.createElement("div"),this._container.classList.add("xterm-decoration-container"),o.appendChild(this._container),this.register(this._renderService.onRenderedBufferChange(function(){return a.refresh()})),this.register(this._renderService.onDimensionsChange(function(){return a.refresh(!0)}))},s.prototype.registerDecoration=function(o){var l=this;if(!o.marker.isDisposed&&this._container){var a=this._instantiationService.createInstance(C,o,this._container);return this._decorations.push(a),a.onDispose(function(){return l._decorations.splice(l._decorations.indexOf(a),1)}),this._queueRefresh(),a}},s.prototype._queueRefresh=function(){var o=this;this._animationFrame===void 0&&(this._animationFrame=window.requestAnimationFrame(function(){o.refresh(),o._animationFrame=void 0}))},s.prototype.refresh=function(o){if(this._renderService)for(var l=0,a=this._decorations;lthis._bufferService.cols&&(this._element.style.display="none"),this.anchor==="right"?this._element.style.right=this.x?this.x*o.dimensions.actualCellWidth+"px":"":this._element.style.left=this.x?this.x*o.dimensions.actualCellWidth+"px":""},s.prototype._refreshStyle=function(o){if(this._element){var l=this.marker.line-this._bufferService.buffers.active.ydisp;l<0||l>this._bufferService.rows?this._element.style.display="none":(this._element.style.top=l*o.dimensions.actualCellHeight+"px",this._element.style.display=this._bufferService.buffer===this._bufferService.buffers.alt?"none":"block")}},s.prototype.dispose=function(){this.isDisposed||(this._element&&this._container.contains(this._element)&&this._container.removeChild(this._element),this.isDisposed=!0,this._onDispose.fire())},_([v(2,c.IBufferService)],s)}(w.Disposable);f.Decoration=C},8934:function(E,f,L){var y=this&&this.__decorate||function(w,c,p,C){var d,s=arguments.length,o=s<3?c:C===null?C=Object.getOwnPropertyDescriptor(c,p):C;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(w,c,p,C);else for(var l=w.length-1;l>=0;l--)(d=w[l])&&(o=(s<3?d(o):s>3?d(c,p,o):d(c,p))||o);return s>3&&o&&Object.defineProperty(c,p,o),o},m=this&&this.__param||function(w,c){return function(p,C){c(p,C,w)}};Object.defineProperty(f,"__esModule",{value:!0}),f.MouseService=void 0;var _=L(4725),v=L(9806),A=function(){function w(c,p){this._renderService=c,this._charSizeService=p}return w.prototype.getCoords=function(c,p,C,d,s){return(0,v.getCoords)(c,p,C,d,this._charSizeService.hasValidSize,this._renderService.dimensions.actualCellWidth,this._renderService.dimensions.actualCellHeight,s)},w.prototype.getRawByteCoords=function(c,p,C,d){var s=this.getCoords(c,p,C,d);return(0,v.getRawByteCoords)(s)},y([m(0,_.IRenderService),m(1,_.ICharSizeService)],w)}();f.MouseService=A},3230:function(E,f,L){var y,m=this&&this.__extends||(y=function(l,a){return y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(u,g){u.__proto__=g}||function(u,g){for(var b in g)Object.prototype.hasOwnProperty.call(g,b)&&(u[b]=g[b])},y(l,a)},function(l,a){if(typeof a!="function"&&a!==null)throw new TypeError("Class extends value "+String(a)+" is not a constructor or null");function u(){this.constructor=l}y(l,a),l.prototype=a===null?Object.create(a):(u.prototype=a.prototype,new u)}),_=this&&this.__decorate||function(l,a,u,g){var b,T=arguments.length,R=T<3?a:g===null?g=Object.getOwnPropertyDescriptor(a,u):g;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")R=Reflect.decorate(l,a,u,g);else for(var k=l.length-1;k>=0;k--)(b=l[k])&&(R=(T<3?b(R):T>3?b(a,u,R):b(a,u))||R);return T>3&&R&&Object.defineProperty(a,u,R),R},v=this&&this.__param||function(l,a){return function(u,g){a(u,g,l)}};Object.defineProperty(f,"__esModule",{value:!0}),f.RenderService=void 0;var A=L(6193),w=L(8460),c=L(844),p=L(5596),C=L(3656),d=L(2585),s=L(4725),o=function(l){function a(u,g,b,T,R,k){var M=l.call(this)||this;if(M._renderer=u,M._rowCount=g,M._charSizeService=R,M._isPaused=!1,M._needsFullRefresh=!1,M._isNextRenderRedrawOnly=!0,M._needsSelectionRefresh=!1,M._canvasWidth=0,M._canvasHeight=0,M._selectionState={start:void 0,end:void 0,columnSelectMode:!1},M._onDimensionsChange=new w.EventEmitter,M._onRender=new w.EventEmitter,M._onRefreshRequest=new w.EventEmitter,M.register({dispose:function(){return M._renderer.dispose()}}),M._renderDebouncer=new A.RenderDebouncer(function(D,W){return M._renderRows(D,W)}),M.register(M._renderDebouncer),M._screenDprMonitor=new p.ScreenDprMonitor,M._screenDprMonitor.setListener(function(){return M.onDevicePixelRatioChange()}),M.register(M._screenDprMonitor),M.register(k.onResize(function(){return M._fullRefresh()})),M.register(k.buffers.onBufferActivate(function(){var D;return(D=M._renderer)===null||D===void 0?void 0:D.clear()})),M.register(T.onOptionChange(function(){return M._renderer.onOptionsChanged()})),M.register(M._charSizeService.onCharSizeChange(function(){return M.onCharSizeChanged()})),M._renderer.onRequestRedraw(function(D){return M.refreshRows(D.start,D.end,!0)}),M.register((0,C.addDisposableDomListener)(window,"resize",function(){return M.onDevicePixelRatioChange()})),"IntersectionObserver"in window){var N=new IntersectionObserver(function(D){return M._onIntersectionChange(D[D.length-1])},{threshold:0});N.observe(b),M.register({dispose:function(){return N.disconnect()}})}return M}return m(a,l),Object.defineProperty(a.prototype,"onDimensionsChange",{get:function(){return this._onDimensionsChange.event},enumerable:!1,configurable:!0}),Object.defineProperty(a.prototype,"onRenderedBufferChange",{get:function(){return this._onRender.event},enumerable:!1,configurable:!0}),Object.defineProperty(a.prototype,"onRefreshRequest",{get:function(){return this._onRefreshRequest.event},enumerable:!1,configurable:!0}),Object.defineProperty(a.prototype,"dimensions",{get:function(){return this._renderer.dimensions},enumerable:!1,configurable:!0}),a.prototype._onIntersectionChange=function(u){this._isPaused=u.isIntersecting===void 0?u.intersectionRatio===0:!u.isIntersecting,this._isPaused||this._charSizeService.hasValidSize||this._charSizeService.measure(),!this._isPaused&&this._needsFullRefresh&&(this.refreshRows(0,this._rowCount-1),this._needsFullRefresh=!1)},a.prototype.refreshRows=function(u,g,b){b===void 0&&(b=!1),this._isPaused?this._needsFullRefresh=!0:(b||(this._isNextRenderRedrawOnly=!1),this._renderDebouncer.refresh(u,g,this._rowCount))},a.prototype._renderRows=function(u,g){this._renderer.renderRows(u,g),this._needsSelectionRefresh&&(this._renderer.onSelectionChanged(this._selectionState.start,this._selectionState.end,this._selectionState.columnSelectMode),this._needsSelectionRefresh=!1),this._isNextRenderRedrawOnly||this._onRender.fire({start:u,end:g}),this._isNextRenderRedrawOnly=!0},a.prototype.resize=function(u,g){this._rowCount=g,this._fireOnCanvasResize()},a.prototype.changeOptions=function(){this._renderer.onOptionsChanged(),this.refreshRows(0,this._rowCount-1),this._fireOnCanvasResize()},a.prototype._fireOnCanvasResize=function(){this._renderer.dimensions.canvasWidth===this._canvasWidth&&this._renderer.dimensions.canvasHeight===this._canvasHeight||this._onDimensionsChange.fire(this._renderer.dimensions)},a.prototype.dispose=function(){l.prototype.dispose.call(this)},a.prototype.setRenderer=function(u){var g=this;this._renderer.dispose(),this._renderer=u,this._renderer.onRequestRedraw(function(b){return g.refreshRows(b.start,b.end,!0)}),this._needsSelectionRefresh=!0,this._fullRefresh()},a.prototype._fullRefresh=function(){this._isPaused?this._needsFullRefresh=!0:this.refreshRows(0,this._rowCount-1)},a.prototype.clearTextureAtlas=function(){var u,g;(g=(u=this._renderer)===null||u===void 0?void 0:u.clearTextureAtlas)===null||g===void 0||g.call(u),this._fullRefresh()},a.prototype.setColors=function(u){this._renderer.setColors(u),this._fullRefresh()},a.prototype.onDevicePixelRatioChange=function(){this._charSizeService.measure(),this._renderer.onDevicePixelRatioChange(),this.refreshRows(0,this._rowCount-1)},a.prototype.onResize=function(u,g){this._renderer.onResize(u,g),this._fullRefresh()},a.prototype.onCharSizeChanged=function(){this._renderer.onCharSizeChanged()},a.prototype.onBlur=function(){this._renderer.onBlur()},a.prototype.onFocus=function(){this._renderer.onFocus()},a.prototype.onSelectionChanged=function(u,g,b){this._selectionState.start=u,this._selectionState.end=g,this._selectionState.columnSelectMode=b,this._renderer.onSelectionChanged(u,g,b)},a.prototype.onCursorMove=function(){this._renderer.onCursorMove()},a.prototype.clear=function(){this._renderer.clear()},_([v(3,d.IOptionsService),v(4,s.ICharSizeService),v(5,d.IBufferService)],a)}(c.Disposable);f.RenderService=o},9312:function(E,f,L){var y,m=this&&this.__extends||(y=function(T,R){return y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(k,M){k.__proto__=M}||function(k,M){for(var N in M)Object.prototype.hasOwnProperty.call(M,N)&&(k[N]=M[N])},y(T,R)},function(T,R){if(typeof R!="function"&&R!==null)throw new TypeError("Class extends value "+String(R)+" is not a constructor or null");function k(){this.constructor=T}y(T,R),T.prototype=R===null?Object.create(R):(k.prototype=R.prototype,new k)}),_=this&&this.__decorate||function(T,R,k,M){var N,D=arguments.length,W=D<3?R:M===null?M=Object.getOwnPropertyDescriptor(R,k):M;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")W=Reflect.decorate(T,R,k,M);else for(var B=T.length-1;B>=0;B--)(N=T[B])&&(W=(D<3?N(W):D>3?N(R,k,W):N(R,k))||W);return D>3&&W&&Object.defineProperty(R,k,W),W},v=this&&this.__param||function(T,R){return function(k,M){R(k,M,T)}};Object.defineProperty(f,"__esModule",{value:!0}),f.SelectionService=void 0;var A=L(6114),w=L(456),c=L(511),p=L(8460),C=L(4725),d=L(2585),s=L(9806),o=L(9504),l=L(844),a=L(4841),u=String.fromCharCode(160),g=new RegExp(u,"g"),b=function(T){function R(k,M,N,D,W,B,F,j){var G=T.call(this)||this;return G._element=k,G._screenElement=M,G._linkifier=N,G._bufferService=D,G._coreService=W,G._mouseService=B,G._optionsService=F,G._renderService=j,G._dragScrollAmount=0,G._enabled=!0,G._workCell=new c.CellData,G._mouseDownTimeStamp=0,G._oldHasSelection=!1,G._oldSelectionStart=void 0,G._oldSelectionEnd=void 0,G._onLinuxMouseSelection=G.register(new p.EventEmitter),G._onRedrawRequest=G.register(new p.EventEmitter),G._onSelectionChange=G.register(new p.EventEmitter),G._onRequestScrollLines=G.register(new p.EventEmitter),G._mouseMoveListener=function($){return G._onMouseMove($)},G._mouseUpListener=function($){return G._onMouseUp($)},G._coreService.onUserInput(function(){G.hasSelection&&G.clearSelection()}),G._trimListener=G._bufferService.buffer.lines.onTrim(function($){return G._onTrim($)}),G.register(G._bufferService.buffers.onBufferActivate(function($){return G._onBufferActivate($)})),G.enable(),G._model=new w.SelectionModel(G._bufferService),G._activeSelectionMode=0,G}return m(R,T),Object.defineProperty(R.prototype,"onLinuxMouseSelection",{get:function(){return this._onLinuxMouseSelection.event},enumerable:!1,configurable:!0}),Object.defineProperty(R.prototype,"onRequestRedraw",{get:function(){return this._onRedrawRequest.event},enumerable:!1,configurable:!0}),Object.defineProperty(R.prototype,"onSelectionChange",{get:function(){return this._onSelectionChange.event},enumerable:!1,configurable:!0}),Object.defineProperty(R.prototype,"onRequestScrollLines",{get:function(){return this._onRequestScrollLines.event},enumerable:!1,configurable:!0}),R.prototype.dispose=function(){this._removeMouseDownListeners()},R.prototype.reset=function(){this.clearSelection()},R.prototype.disable=function(){this.clearSelection(),this._enabled=!1},R.prototype.enable=function(){this._enabled=!0},Object.defineProperty(R.prototype,"selectionStart",{get:function(){return this._model.finalSelectionStart},enumerable:!1,configurable:!0}),Object.defineProperty(R.prototype,"selectionEnd",{get:function(){return this._model.finalSelectionEnd},enumerable:!1,configurable:!0}),Object.defineProperty(R.prototype,"hasSelection",{get:function(){var k=this._model.finalSelectionStart,M=this._model.finalSelectionEnd;return!(!k||!M||k[0]===M[0]&&k[1]===M[1])},enumerable:!1,configurable:!0}),Object.defineProperty(R.prototype,"selectionText",{get:function(){var k=this._model.finalSelectionStart,M=this._model.finalSelectionEnd;if(!k||!M)return"";var N=this._bufferService.buffer,D=[];if(this._activeSelectionMode===3){if(k[0]===M[0])return"";for(var W=k[1];W<=M[1];W++){var B=N.translateBufferLineToString(W,!0,k[0],M[0]);D.push(B)}}else{var F=k[1]===M[1]?M[0]:void 0;for(D.push(N.translateBufferLineToString(k[1],!0,k[0],F)),W=k[1]+1;W<=M[1]-1;W++){var j=N.lines.get(W);B=N.translateBufferLineToString(W,!0),j?.isWrapped?D[D.length-1]+=B:D.push(B)}k[1]!==M[1]&&(j=N.lines.get(M[1]),B=N.translateBufferLineToString(M[1],!0,0,M[0]),j&&j.isWrapped?D[D.length-1]+=B:D.push(B))}return D.map(function(G){return G.replace(g," ")}).join(A.isWindows?`\r +var Ef=Object.create;var Pl=Object.defineProperty;var Tf=Object.getOwnPropertyDescriptor;var Af=Object.getOwnPropertyNames;var Mf=Object.getPrototypeOf,Rf=Object.prototype.hasOwnProperty;var Nt=(U,B)=>()=>(B||U((B={exports:{}}).exports,B),B.exports);var Of=(U,B,R,f)=>{if(B&&typeof B=="object"||typeof B=="function")for(let k of Af(B))!Rf.call(U,k)&&k!==R&&Pl(U,k,{get:()=>B[k],enumerable:!(f=Tf(B,k))||f.enumerable});return U};var kt=(U,B,R)=>(R=U!=null?Ef(Mf(U)):{},Of(B||!U||!U.__esModule?Pl(R,"default",{value:U,enumerable:!0}):R,U));var Wl=Nt((Jf,_s)=>{"use strict";var Pf=Object.prototype.hasOwnProperty,Vt="~";function jn(){}Object.create&&(jn.prototype=Object.create(null),new jn().__proto__||(Vt=!1));function If(U,B,R){this.fn=U,this.context=B,this.once=R||!1}function Fl(U,B,R,f,k){if(typeof R!="function")throw new TypeError("The listener must be a function");var m=new If(R,f||U,k),y=Vt?Vt+B:B;return U._events[y]?U._events[y].fn?U._events[y]=[U._events[y],m]:U._events[y].push(m):(U._events[y]=m,U._eventsCount++),U}function go(U,B){--U._eventsCount===0?U._events=new jn:delete U._events[B]}function jt(){this._events=new jn,this._eventsCount=0}jt.prototype.eventNames=function(){var B=[],R,f;if(this._eventsCount===0)return B;for(f in R=this._events)Pf.call(R,f)&&B.push(Vt?f.slice(1):f);return Object.getOwnPropertySymbols?B.concat(Object.getOwnPropertySymbols(R)):B};jt.prototype.listeners=function(B){var R=Vt?Vt+B:B,f=this._events[R];if(!f)return[];if(f.fn)return[f.fn];for(var k=0,m=f.length,y=new Array(m);k{(function(U,B){typeof ws=="object"&&typeof Ls<"u"?Ls.exports=B():typeof define=="function"&&define.amd?define(B):(U=U||self,U.CodeMirror=B())})(ws,function(){"use strict";var U=navigator.userAgent,B=navigator.platform,R=/gecko\/\d/i.test(U),f=/MSIE \d/.test(U),k=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(U),m=/Edge\/(\d+)/.exec(U),y=f||k||m,_=y&&(f?document.documentMode||6:+(m||k)[1]),g=!m&&/WebKit\//.test(U),x=g&&/Qt\/\d+\.\d+/.test(U),C=!m&&/Chrome\/(\d+)/.exec(U),u=C&&+C[1],p=/Opera\//.test(U),w=/Apple Computer/.test(navigator.vendor),b=/Mac OS X 1\d\D([8-9]|\d\d)\D/.test(U),c=/PhantomJS/.test(U),o=w&&(/Mobile\/\w+/.test(U)||navigator.maxTouchPoints>2),l=/Android/.test(U),n=o||l||/webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(U),a=o||/Mac/.test(B),h=/\bCrOS\b/.test(U),d=/win/i.test(B),S=p&&U.match(/Version\/(\d*\.\d*)/);S&&(S=Number(S[1])),S&&S>=15&&(p=!1,g=!0);var T=a&&(x||p&&(S==null||S<12.11)),E=R||y&&_>=9;function M(e){return new RegExp("(^|\\s)"+e+"(?:$|\\s)\\s*")}var D=function(e,t){var i=e.className,r=M(t).exec(i);if(r){var s=i.slice(r.index+r[0].length);e.className=i.slice(0,r.index)+(s?r[1]+s:"")}};function W(e){for(var t=e.childNodes.length;t>0;--t)e.removeChild(e.firstChild);return e}function I(e,t){return W(e).appendChild(t)}function A(e,t,i,r){var s=document.createElement(e);if(i&&(s.className=i),r&&(s.style.cssText=r),typeof t=="string")s.appendChild(document.createTextNode(t));else if(t)for(var v=0;v=t)return L+(t-v);L+=O-v,L+=i-L%i,v=O+1}}var Ie=function(){this.id=null,this.f=null,this.time=0,this.handler=de(this.onTimeout,this)};Ie.prototype.onTimeout=function(e){e.id=0,e.time<=+new Date?e.f():setTimeout(e.handler,e.time-+new Date)},Ie.prototype.set=function(e,t){this.f=t;var i=+new Date+e;(!this.id||i=t)return r+Math.min(L,t-s);if(s+=v-r,s+=i-s%i,r=v+1,s>=t)return r}}var De=[""];function je(e){for(;De.length<=e;)De.push(Re(De)+" ");return De[e]}function Re(e){return e[e.length-1]}function Ze(e,t){for(var i=[],r=0;r"\x80"&&(e.toUpperCase()!=e.toLowerCase()||Jt.test(e))}function lr(e,t){return t?t.source.indexOf("\\w")>-1&&br(e)?!0:t.test(e):br(e)}function ai(e){for(var t in e)if(e.hasOwnProperty(t)&&e[t])return!1;return!0}var cr=/[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/;function Xe(e){return e.charCodeAt(0)>=768&&cr.test(e)}function Sr(e,t,i){for(;(i<0?t>0:ti?-1:1;;){if(t==i)return t;var s=(t+i)/2,v=r<0?Math.ceil(s):Math.floor(s);if(v==t)return e(v)?t:i;e(v)?i=v:t=v+r}}function ur(e,t,i,r){if(!e)return r(t,i,"ltr",0);for(var s=!1,v=0;vt||t==i&&L.to==t)&&(r(Math.max(L.from,t),Math.min(L.to,i),L.level==1?"rtl":"ltr",v),s=!0)}s||r(t,i,"ltr")}var Cr=null;function fr(e,t,i){var r;Cr=null;for(var s=0;st)return s;v.to==t&&(v.from!=v.to&&i=="before"?r=s:Cr=s),v.from==t&&(v.from!=v.to&&i!="before"?r=s:Cr=s)}return r??Cr}var li=function(){var e="bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN",t="nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111";function i(N){return N<=247?e.charAt(N):1424<=N&&N<=1524?"R":1536<=N&&N<=1785?t.charAt(N-1536):1774<=N&&N<=2220?"r":8192<=N&&N<=8203?"w":N==8204?"b":"L"}var r=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/,s=/[stwN]/,v=/[LRr]/,L=/[Lb1n]/,O=/[1n]/;function P(N,K,X){this.level=N,this.from=K,this.to=X}return function(N,K){var X=K=="ltr"?"L":"R";if(N.length==0||K=="ltr"&&!r.test(N))return!1;for(var Q=N.length,J=[],oe=0;oe-1&&(r[t]=s.slice(0,v).concat(s.slice(v+1)))}}}function ze(e,t){var i=er(e,t);if(i.length)for(var r=Array.prototype.slice.call(arguments,2),s=0;s0}function Ot(e){e.prototype.on=function(t,i){Te(this,t,i)},e.prototype.off=function(t,i){et(this,t,i)}}function tt(e){e.preventDefault?e.preventDefault():e.returnValue=!1}function Tr(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0}function lt(e){return e.defaultPrevented!=null?e.defaultPrevented:e.returnValue==!1}function hr(e){tt(e),Tr(e)}function Wr(e){return e.target||e.srcElement}function Dt(e){var t=e.which;return t==null&&(e.button&1?t=1:e.button&2?t=3:e.button&4&&(t=2)),a&&e.ctrlKey&&t==1&&(t=3),t}var ci=function(){if(y&&_<9)return!1;var e=A("div");return"draggable"in e||"dragDrop"in e}(),Ar;function $r(e){if(Ar==null){var t=A("span","\u200B");I(e,A("span",[t,document.createTextNode("x")])),e.firstChild.offsetHeight!=0&&(Ar=t.offsetWidth<=1&&t.offsetHeight>2&&!(y&&_<8))}var i=Ar?A("span","\u200B"):A("span","\xA0",null,"display: inline-block; width: 1px; margin-right: -1px");return i.setAttribute("cm-text",""),i}var Nr;function dr(e){if(Nr!=null)return Nr;var t=I(e,document.createTextNode("A\u062EA")),i=F(t,0,1).getBoundingClientRect(),r=F(t,1,2).getBoundingClientRect();return W(e),!i||i.left==i.right?!1:Nr=r.right-i.right<3}var Tt=` + +b`.split(/\n/).length!=3?function(e){for(var t=0,i=[],r=e.length;t<=r;){var s=e.indexOf(` +`,t);s==-1&&(s=e.length);var v=e.slice(t,e.charAt(s-1)=="\r"?s-1:s),L=v.indexOf("\r");L!=-1?(i.push(v.slice(0,L)),t+=L+1):(i.push(v),t=s+1)}return i}:function(e){return e.split(/\r\n?|\n/)},pr=window.getSelection?function(e){try{return e.selectionStart!=e.selectionEnd}catch{return!1}}:function(e){var t;try{t=e.ownerDocument.selection.createRange()}catch{}return!t||t.parentElement()!=e?!1:t.compareEndPoints("StartToEnd",t)!=0},Jr=function(){var e=A("div");return"oncopy"in e?!0:(e.setAttribute("oncopy","return;"),typeof e.oncopy=="function")}(),Bt=null;function ui(e){if(Bt!=null)return Bt;var t=I(e,A("span","x")),i=t.getBoundingClientRect(),r=F(t,0,1).getBoundingClientRect();return Bt=Math.abs(i.left-r.left)>1}var Mr={},Pt={};function It(e,t){arguments.length>2&&(t.dependencies=Array.prototype.slice.call(arguments,2)),Mr[e]=t}function wr(e,t){Pt[e]=t}function Rr(e){if(typeof e=="string"&&Pt.hasOwnProperty(e))e=Pt[e];else if(e&&typeof e.name=="string"&&Pt.hasOwnProperty(e.name)){var t=Pt[e.name];typeof t=="string"&&(t={name:t}),e=dt(t,e),e.name=t.name}else{if(typeof e=="string"&&/^[\w\-]+\/[\w\-]+\+xml$/.test(e))return Rr("application/xml");if(typeof e=="string"&&/^[\w\-]+\/[\w\-]+\+json$/.test(e))return Rr("application/json")}return typeof e=="string"?{name:e}:e||{name:"null"}}function Or(e,t){t=Rr(t);var i=Mr[t.name];if(!i)return Or(e,"text/plain");var r=i(e,t);if(vr.hasOwnProperty(t.name)){var s=vr[t.name];for(var v in s)s.hasOwnProperty(v)&&(r.hasOwnProperty(v)&&(r["_"+v]=r[v]),r[v]=s[v])}if(r.name=t.name,t.helperType&&(r.helperType=t.helperType),t.modeProps)for(var L in t.modeProps)r[L]=t.modeProps[L];return r}var vr={};function Dr(e,t){var i=vr.hasOwnProperty(e)?vr[e]:vr[e]={};ke(t,i)}function zt(e,t){if(t===!0)return t;if(e.copyState)return e.copyState(t);var i={};for(var r in t){var s=t[r];s instanceof Array&&(s=s.concat([])),i[r]=s}return i}function jr(e,t){for(var i;e.innerMode&&(i=e.innerMode(t),!(!i||i.mode==e));)t=i.state,e=i.mode;return i||{mode:e,state:t}}function Br(e,t,i){return e.startState?e.startState(t,i):!0}var qe=function(e,t,i){this.pos=this.start=0,this.string=e,this.tabSize=t||8,this.lastColumnPos=this.lastColumnValue=0,this.lineStart=0,this.lineOracle=i};qe.prototype.eol=function(){return this.pos>=this.string.length},qe.prototype.sol=function(){return this.pos==this.lineStart},qe.prototype.peek=function(){return this.string.charAt(this.pos)||void 0},qe.prototype.next=function(){if(this.post},qe.prototype.eatSpace=function(){for(var e=this.pos;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>e},qe.prototype.skipToEnd=function(){this.pos=this.string.length},qe.prototype.skipTo=function(e){var t=this.string.indexOf(e,this.pos);if(t>-1)return this.pos=t,!0},qe.prototype.backUp=function(e){this.pos-=e},qe.prototype.column=function(){return this.lastColumnPos0?null:(v&&t!==!1&&(this.pos+=v[0].length),v)}},qe.prototype.current=function(){return this.string.slice(this.start,this.pos)},qe.prototype.hideFirstChars=function(e,t){this.lineStart+=e;try{return t()}finally{this.lineStart-=e}},qe.prototype.lookAhead=function(e){var t=this.lineOracle;return t&&t.lookAhead(e)},qe.prototype.baseToken=function(){var e=this.lineOracle;return e&&e.baseToken(this.pos)};function Le(e,t){if(t-=e.first,t<0||t>=e.size)throw new Error("There is no line "+(t+e.first)+" in the document.");for(var i=e;!i.lines;)for(var r=0;;++r){var s=i.children[r],v=s.chunkSize();if(t=e.first&&ti?ie(i,Le(e,i).text.length):fn(t,Le(e,t.line).text.length)}function fn(e,t){var i=e.ch;return i==null||i>t?ie(e.line,t):i<0?ie(e.line,0):e}function Ni(e,t){for(var i=[],r=0;rthis.maxLookAhead&&(this.maxLookAhead=e),t},rr.prototype.baseToken=function(e){if(!this.baseTokens)return null;for(;this.baseTokens[this.baseTokenPos]<=e;)this.baseTokenPos+=2;var t=this.baseTokens[this.baseTokenPos+1];return{type:t&&t.replace(/( |^)overlay .*/,""),size:this.baseTokens[this.baseTokenPos]-e}},rr.prototype.nextLine=function(){this.line++,this.maxLookAhead>0&&this.maxLookAhead--},rr.fromSaved=function(e,t,i){return t instanceof fi?new rr(e,zt(e.mode,t.state),i,t.lookAhead):new rr(e,zt(e.mode,t),i)},rr.prototype.save=function(e){var t=e!==!1?zt(this.doc.mode,this.state):this.state;return this.maxLookAhead>0?new fi(t,this.maxLookAhead):t};function ji(e,t,i,r){var s=[e.state.modeGen],v={};vn(e,t.text,e.doc.mode,i,function(N,K){return s.push(N,K)},v,r);for(var L=i.state,O=function(N){i.baseTokens=s;var K=e.state.overlays[N],X=1,Q=0;i.state=!0,vn(e,t.text,K.mode,i,function(J,oe){for(var ue=X;QJ&&s.splice(X,1,J,s[X+1],pe),X+=2,Q=Math.min(J,pe)}if(oe)if(K.opaque)s.splice(ue,X-ue,J,"overlay "+oe),X=ue+2;else for(;uee.options.maxHighlightLength&&zt(e.doc.mode,r.state),v=ji(e,t,r);s&&(r.state=s),t.stateAfter=r.save(!s),t.styles=v.styles,v.classes?t.styleClasses=v.classes:t.styleClasses&&(t.styleClasses=null),i===e.doc.highlightFrontier&&(e.doc.modeFrontier=Math.max(e.doc.modeFrontier,++e.doc.highlightFrontier))}return t.styles}function Qr(e,t,i){var r=e.doc,s=e.display;if(!r.mode.startState)return new rr(r,!0,t);var v=Un(e,t,i),L=v>r.first&&Le(r,v-1).stateAfter,O=L?rr.fromSaved(r,L,v):new rr(r,Br(r.mode),v);return r.iter(v,t,function(P){Ci(e,P.text,O);var N=O.line;P.stateAfter=N==t-1||N%5==0||N>=s.viewFrom&&Nt.start)return v}throw new Error("Mode "+e.name+" failed to advance stream.")}var dn=function(e,t,i){this.start=e.start,this.end=e.pos,this.string=e.current(),this.type=t||null,this.state=i};function zn(e,t,i,r){var s=e.doc,v=s.mode,L;t=Oe(s,t);var O=Le(s,t.line),P=Qr(e,t.line,i),N=new qe(O.text,e.options.tabSize,P),K;for(r&&(K=[]);(r||N.pose.options.maxHighlightLength?(O=!1,L&&Ci(e,t,r,K.pos),K.pos=t.length,X=null):X=pn(wi(i,K,r.state,Q),v),Q){var J=Q[0].name;J&&(X="m-"+(X?J+" "+X:J))}if(!O||N!=X){for(;PL;--O){if(O<=v.first)return v.first;var P=Le(v,O-1),N=P.stateAfter;if(N&&(!i||O+(N instanceof fi?N.lookAhead:0)<=v.modeFrontier))return O;var K=$(P.text,null,e.options.tabSize);(s==null||r>K)&&(s=O-1,r=K)}return s}function qn(e,t){if(e.modeFrontier=Math.min(e.modeFrontier,t),!(e.highlightFrontieri;r--){var s=Le(e,r).stateAfter;if(s&&(!(s instanceof fi)||r+s.lookAhead=t:v.to>t);(r||(r=[])).push(new Ut(L,v.from,P?null:v.to))}}return r}function Li(e,t,i){var r;if(e)for(var s=0;s=t:v.to>t);if(O||v.from==t&&L.type=="bookmark"&&(!i||v.marker.insertLeft)){var P=v.from==null||(L.inclusiveLeft?v.from<=t:v.from0&&O)for(var Ce=0;Ce0)){var K=[P,1],X=be(N.from,O.from),Q=be(N.to,O.to);(X<0||!L.inclusiveLeft&&!X)&&K.push({from:N.from,to:O.from}),(Q>0||!L.inclusiveRight&&!Q)&&K.push({from:O.to,to:N.to}),s.splice.apply(s,K),P+=K.length-3}}return s}function qr(e){var t=e.markedSpans;if(t){for(var i=0;it)&&(!r||ct(r,v.marker)<0)&&(r=v.marker)}return r}function _r(e,t,i,r,s){var v=Le(e,t),L=re&&v.markedSpans;if(L)for(var O=0;O=0&&X<=0||K<=0&&X>=0)&&(K<=0&&(P.marker.inclusiveRight&&s.inclusiveLeft?be(N.to,i)>=0:be(N.to,i)>0)||K>=0&&(P.marker.inclusiveRight&&s.inclusiveLeft?be(N.from,r)<=0:be(N.from,r)<0)))return!0}}}function yt(e){for(var t;t=_t(e);)e=t.find(-1,!0).line;return e}function yr(e){for(var t;t=ut(e);)e=t.find(1,!0).line;return e}function hi(e){for(var t,i;t=ut(e);)e=t.find(1,!0).line,(i||(i=[])).push(e);return i}function xr(e,t){var i=Le(e,t),r=yt(i);return i==r?t:j(r)}function kr(e,t){if(t>e.lastLine())return t;var i=Le(e,t),r;if(!qt(e,i))return t;for(;r=ut(i);)i=r.find(1,!0).line;return j(i)+1}function qt(e,t){var i=re&&t.markedSpans;if(i){for(var r=void 0,s=0;st.maxLineLength&&(t.maxLineLength=s,t.maxLine=r)})}var Ui=function(e,t,i){this.text=e,Pr(this,t),this.height=i?i(this):1};Ui.prototype.lineNo=function(){return j(this)},Ot(Ui);function Nc(e,t,i,r){e.text=t,e.stateAfter&&(e.stateAfter=null),e.styles&&(e.styles=null),e.order!=null&&(e.order=null),qr(e),Pr(e,i);var s=r?r(e):1;s!=e.height&&Lt(e,s)}function jc(e){e.parent=null,qr(e)}var zc={},Uc={};function Qs(e,t){if(!e||/^\s*$/.test(e))return null;var i=t.addModeClass?Uc:zc;return i[e]||(i[e]=e.replace(/\S+/g,"cm-$&"))}function ea(e,t){var i=H("span",null,null,g?"padding-right: .1px":null),r={pre:H("pre",[i],"CodeMirror-line"),content:i,col:0,pos:0,cm:e,trailingSpace:!1,splitSpaces:e.getOption("lineWrapping")};t.measure={};for(var s=0;s<=(t.rest?t.rest.length:0);s++){var v=s?t.rest[s-1]:t.line,L=void 0;r.pos=0,r.addToken=Kc,dr(e.display.measure)&&(L=Be(v,e.doc.direction))&&(r.addToken=Zc(r.addToken,L)),r.map=[];var O=t!=e.display.externalMeasured&&j(v);Xc(v,r,zi(e,v,O)),v.styleClasses&&(v.styleClasses.bgClass&&(r.bgClass=ce(v.styleClasses.bgClass,r.bgClass||"")),v.styleClasses.textClass&&(r.textClass=ce(v.styleClasses.textClass,r.textClass||""))),r.map.length==0&&r.map.push(0,0,r.content.appendChild($r(e.display.measure))),s==0?(t.measure.map=r.map,t.measure.cache={}):((t.measure.maps||(t.measure.maps=[])).push(r.map),(t.measure.caches||(t.measure.caches=[])).push({}))}if(g){var P=r.content.lastChild;(/\bcm-tab\b/.test(P.className)||P.querySelector&&P.querySelector(".cm-tab"))&&(r.content.className="cm-tab-wrap-hack")}return ze(e,"renderLine",e,t.line,r.pre),r.pre.className&&(r.textClass=ce(r.pre.className,r.textClass||"")),r}function qc(e){var t=A("span","\u2022","cm-invalidchar");return t.title="\\u"+e.charCodeAt(0).toString(16),t.setAttribute("aria-label",t.title),t}function Kc(e,t,i,r,s,v,L){if(t){var O=e.splitSpaces?Gc(t,e.trailingSpace):t,P=e.cm.state.specialChars,N=!1,K;if(!P.test(t))e.col+=t.length,K=document.createTextNode(O),e.map.push(e.pos,e.pos+t.length,K),y&&_<9&&(N=!0),e.pos+=t.length;else{K=document.createDocumentFragment();for(var X=0;;){P.lastIndex=X;var Q=P.exec(t),J=Q?Q.index-X:t.length-X;if(J){var oe=document.createTextNode(O.slice(X,X+J));y&&_<9?K.appendChild(A("span",[oe])):K.appendChild(oe),e.map.push(e.pos,e.pos+J,oe),e.col+=J,e.pos+=J}if(!Q)break;X+=J+1;var ue=void 0;if(Q[0]==" "){var pe=e.cm.options.tabSize,ye=pe-e.col%pe;ue=K.appendChild(A("span",je(ye),"cm-tab")),ue.setAttribute("role","presentation"),ue.setAttribute("cm-text"," "),e.col+=ye}else Q[0]=="\r"||Q[0]==` +`?(ue=K.appendChild(A("span",Q[0]=="\r"?"\u240D":"\u2424","cm-invalidchar")),ue.setAttribute("cm-text",Q[0]),e.col+=1):(ue=e.cm.options.specialCharPlaceholder(Q[0]),ue.setAttribute("cm-text",Q[0]),y&&_<9?K.appendChild(A("span",[ue])):K.appendChild(ue),e.col+=1);e.map.push(e.pos,e.pos+1,ue),e.pos++}}if(e.trailingSpace=O.charCodeAt(t.length-1)==32,i||r||s||N||v||L){var Se=i||"";r&&(Se+=r),s&&(Se+=s);var me=A("span",[K],Se,v);if(L)for(var Ce in L)L.hasOwnProperty(Ce)&&Ce!="style"&&Ce!="class"&&me.setAttribute(Ce,L[Ce]);return e.content.appendChild(me)}e.content.appendChild(K)}}function Gc(e,t){if(e.length>1&&!/ /.test(e))return e;for(var i=t,r="",s=0;sN&&X.from<=N));Q++);if(X.to>=K)return e(i,r,s,v,L,O,P);e(i,r.slice(0,X.to-N),s,v,null,O,P),v=null,r=r.slice(X.to-N),N=X.to}}}function ta(e,t,i,r){var s=!r&&i.widgetNode;s&&e.map.push(e.pos,e.pos+t,s),!r&&e.cm.display.input.needsContentAttribute&&(s||(s=e.content.appendChild(document.createElement("span"))),s.setAttribute("cm-marker",i.id)),s&&(e.cm.display.input.setUneditable(s),e.content.appendChild(s)),e.pos+=t,e.trailingSpace=!1}function Xc(e,t,i){var r=e.markedSpans,s=e.text,v=0;if(!r){for(var L=1;LP||Pe.collapsed&&Ae.to==P&&Ae.from==P)){if(Ae.to!=null&&Ae.to!=P&&J>Ae.to&&(J=Ae.to,ue=""),Pe.className&&(oe+=" "+Pe.className),Pe.css&&(Q=(Q?Q+";":"")+Pe.css),Pe.startStyle&&Ae.from==P&&(pe+=" "+Pe.startStyle),Pe.endStyle&&Ae.to==J&&(Ce||(Ce=[])).push(Pe.endStyle,Ae.to),Pe.title&&((Se||(Se={})).title=Pe.title),Pe.attributes)for(var Ke in Pe.attributes)(Se||(Se={}))[Ke]=Pe.attributes[Ke];Pe.collapsed&&(!ye||ct(ye.marker,Pe)<0)&&(ye=Ae)}else Ae.from>P&&J>Ae.from&&(J=Ae.from)}if(Ce)for(var Ct=0;Ct=O)break;for(var ar=Math.min(O,J);;){if(K){var Zt=P+K.length;if(!ye){var st=Zt>ar?K.slice(0,ar-P):K;t.addToken(t,st,X?X+oe:oe,pe,P+st.length==J?ue:"",Q,Se)}if(Zt>=ar){K=K.slice(ar-P),P=ar;break}P=Zt,pe=""}K=s.slice(v,v=i[N++]),X=Qs(i[N++],t.cm.options)}}}function ra(e,t,i){this.line=t,this.rest=hi(t),this.size=this.rest?j(Re(this.rest))-i+1:1,this.node=this.text=null,this.hidden=qt(e,t)}function Kn(e,t,i){for(var r=[],s,v=t;v2&&v.push((P.bottom+N.top)/2-i.top)}}v.push(i.bottom-i.top)}}function ca(e,t,i){if(e.line==t)return{map:e.measure.map,cache:e.measure.cache};if(e.rest){for(var r=0;ri)return{map:e.measure.maps[s],cache:e.measure.caches[s],before:!0}}}function ou(e,t){t=yt(t);var i=j(t),r=e.display.externalMeasured=new ra(e.doc,t,i);r.lineN=i;var s=r.built=ea(e,r);return r.text=s.pre,I(e.display.lineMeasure,s.pre),r}function ua(e,t,i,r){return Zr(e,Ki(e,t),i,r)}function Oo(e,t){if(t>=e.display.viewFrom&&t=i.lineN&&tt)&&(v=P-O,s=v-1,t>=P&&(L="right")),s!=null){if(r=e[N+2],O==P&&i==(r.insertLeft?"left":"right")&&(L=i),i=="left"&&s==0)for(;N&&e[N-2]==e[N-3]&&e[N-1].insertLeft;)r=e[(N-=3)+2],L="left";if(i=="right"&&s==P-O)for(;N=0&&(i=e[s]).left==i.right;s--);return i}function au(e,t,i,r){var s=ha(t.map,i,r),v=s.node,L=s.start,O=s.end,P=s.collapse,N;if(v.nodeType==3){for(var K=0;K<4;K++){for(;L&&Xe(t.line.text.charAt(s.coverStart+L));)--L;for(;s.coverStart+O0&&(P=r="right");var X;e.options.lineWrapping&&(X=v.getClientRects()).length>1?N=X[r=="right"?X.length-1:0]:N=v.getBoundingClientRect()}if(y&&_<9&&!L&&(!N||!N.left&&!N.right)){var Q=v.parentNode.getClientRects()[0];Q?N={left:Q.left,right:Q.left+Zi(e.display),top:Q.top,bottom:Q.bottom}:N=fa}for(var J=N.top-t.rect.top,oe=N.bottom-t.rect.top,ue=(J+oe)/2,pe=t.view.measure.heights,ye=0;ye=r.text.length?(P=r.text.length,N="before"):P<=0&&(P=0,N="after"),!O)return L(N=="before"?P-1:P,N=="before");function K(oe,ue,pe){var ye=O[ue],Se=ye.level==1;return L(pe?oe-1:oe,Se!=pe)}var X=fr(O,P,N),Q=Cr,J=K(P,X,N=="before");return Q!=null&&(J.other=K(P,Q,N!="before")),J}function ya(e,t){var i=0;t=Oe(e.doc,t),e.options.lineWrapping||(i=Zi(e.display)*t.ch);var r=Le(e.doc,t.line),s=ft(r)+Gn(e.display);return{left:i,right:i,top:s,bottom:s+r.height}}function Bo(e,t,i,r,s){var v=ie(e,t,i);return v.xRel=s,r&&(v.outside=r),v}function Po(e,t,i){var r=e.doc;if(i+=e.display.viewOffset,i<0)return Bo(r.first,0,null,-1,-1);var s=Z(r,i),v=r.first+r.size-1;if(s>v)return Bo(r.first+r.size-1,Le(r,v).text.length,null,1,1);t<0&&(t=0);for(var L=Le(r,s);;){var O=cu(e,L,s,t,i),P=nr(L,O.ch+(O.xRel>0||O.outside>0?1:0));if(!P)return O;var N=P.find(1);if(N.line==s)return N;L=Le(r,s=N.line)}}function ma(e,t,i,r){r-=Do(t);var s=t.text.length,v=Qt(function(L){return Zr(e,i,L-1).bottom<=r},s,0);return s=Qt(function(L){return Zr(e,i,L).top>r},v,s),{begin:v,end:s}}function ba(e,t,i,r){i||(i=Ki(e,t));var s=Zn(e,t,Zr(e,i,r),"line").top;return ma(e,t,i,s)}function Io(e,t,i,r){return e.bottom<=i?!1:e.top>i?!0:(r?e.left:e.right)>t}function cu(e,t,i,r,s){s-=ft(t);var v=Ki(e,t),L=Do(t),O=0,P=t.text.length,N=!0,K=Be(t,e.doc.direction);if(K){var X=(e.options.lineWrapping?fu:uu)(e,t,i,v,K,r,s);N=X.level!=1,O=N?X.from:X.to-1,P=N?X.to:X.from-1}var Q=null,J=null,oe=Qt(function(Me){var Ae=Zr(e,v,Me);return Ae.top+=L,Ae.bottom+=L,Io(Ae,r,s,!1)?(Ae.top<=s&&Ae.left<=r&&(Q=Me,J=Ae),!0):!1},O,P),ue,pe,ye=!1;if(J){var Se=r-J.left=Ce.bottom?1:0}return oe=Sr(t.text,oe,1),Bo(i,oe,pe,ye,r-ue)}function uu(e,t,i,r,s,v,L){var O=Qt(function(X){var Q=s[X],J=Q.level!=1;return Io(Ir(e,ie(i,J?Q.to:Q.from,J?"before":"after"),"line",t,r),v,L,!0)},0,s.length-1),P=s[O];if(O>0){var N=P.level!=1,K=Ir(e,ie(i,N?P.from:P.to,N?"after":"before"),"line",t,r);Io(K,v,L,!0)&&K.top>L&&(P=s[O-1])}return P}function fu(e,t,i,r,s,v,L){var O=ma(e,t,r,L),P=O.begin,N=O.end;/\s/.test(t.text.charAt(N-1))&&N--;for(var K=null,X=null,Q=0;Q=N||J.to<=P)){var oe=J.level!=1,ue=Zr(e,r,oe?Math.min(N,J.to)-1:Math.max(P,J.from)).right,pe=uepe)&&(K=J,X=pe)}}return K||(K=s[s.length-1]),K.fromN&&(K={from:K.from,to:N,level:K.level}),K}var Ei;function Gi(e){if(e.cachedTextHeight!=null)return e.cachedTextHeight;if(Ei==null){Ei=A("pre",null,"CodeMirror-line-like");for(var t=0;t<49;++t)Ei.appendChild(document.createTextNode("x")),Ei.appendChild(A("br"));Ei.appendChild(document.createTextNode("x"))}I(e.measure,Ei);var i=Ei.offsetHeight/50;return i>3&&(e.cachedTextHeight=i),W(e.measure),i||1}function Zi(e){if(e.cachedCharWidth!=null)return e.cachedCharWidth;var t=A("span","xxxxxxxxxx"),i=A("pre",[t],"CodeMirror-line-like");I(e.measure,i);var r=t.getBoundingClientRect(),s=(r.right-r.left)/10;return s>2&&(e.cachedCharWidth=s),s||10}function Ho(e){for(var t=e.display,i={},r={},s=t.gutters.clientLeft,v=t.gutters.firstChild,L=0;v;v=v.nextSibling,++L){var O=e.display.gutterSpecs[L].className;i[O]=v.offsetLeft+v.clientLeft+s,r[O]=v.clientWidth}return{fixedPos:Fo(t),gutterTotalWidth:t.gutters.offsetWidth,gutterLeft:i,gutterWidth:r,wrapperWidth:t.wrapper.clientWidth}}function Fo(e){return e.scroller.getBoundingClientRect().left-e.sizer.getBoundingClientRect().left}function Sa(e){var t=Gi(e.display),i=e.options.lineWrapping,r=i&&Math.max(5,e.display.scroller.clientWidth/Zi(e.display)-3);return function(s){if(qt(e.doc,s))return 0;var v=0;if(s.widgets)for(var L=0;L0&&(N=Le(e.doc,P.line).text).length==P.ch){var K=$(N,N.length,e.options.tabSize)-N.length;P=ie(P.line,Math.max(0,Math.round((v-la(e.display).left)/Zi(e.display))-K))}return P}function Ai(e,t){if(t>=e.display.viewTo||(t-=e.display.viewFrom,t<0))return null;for(var i=e.display.view,r=0;rt)&&(s.updateLineNumbers=t),e.curOp.viewChanged=!0,t>=s.viewTo)re&&xr(e.doc,t)s.viewFrom?pi(e):(s.viewFrom+=r,s.viewTo+=r);else if(t<=s.viewFrom&&i>=s.viewTo)pi(e);else if(t<=s.viewFrom){var v=Yn(e,i,i+r,1);v?(s.view=s.view.slice(v.index),s.viewFrom=v.lineN,s.viewTo+=r):pi(e)}else if(i>=s.viewTo){var L=Yn(e,t,t,-1);L?(s.view=s.view.slice(0,L.index),s.viewTo=L.lineN):pi(e)}else{var O=Yn(e,t,t,-1),P=Yn(e,i,i+r,1);O&&P?(s.view=s.view.slice(0,O.index).concat(Kn(e,O.lineN,P.lineN)).concat(s.view.slice(P.index)),s.viewTo+=r):pi(e)}var N=s.externalMeasured;N&&(i=s.lineN&&t=r.viewTo)){var v=r.view[Ai(e,t)];if(v.node!=null){var L=v.changes||(v.changes=[]);ge(L,i)==-1&&L.push(i)}}}function pi(e){e.display.viewFrom=e.display.viewTo=e.doc.first,e.display.view=[],e.display.viewOffset=0}function Yn(e,t,i,r){var s=Ai(e,t),v,L=e.display.view;if(!re||i==e.doc.first+e.doc.size)return{index:s,lineN:i};for(var O=e.display.viewFrom,P=0;P0){if(s==L.length-1)return null;v=O+L[s].size-t,s++}else v=O-t;t+=v,i+=v}for(;xr(e.doc,i)!=i;){if(s==(r<0?0:L.length-1))return null;i+=r*L[s-(r<0?1:0)].size,s+=r}return{index:s,lineN:i}}function hu(e,t,i){var r=e.display,s=r.view;s.length==0||t>=r.viewTo||i<=r.viewFrom?(r.view=Kn(e,t,i),r.viewFrom=t):(r.viewFrom>t?r.view=Kn(e,t,r.viewFrom).concat(r.view):r.viewFromi&&(r.view=r.view.slice(0,Ai(e,i)))),r.viewTo=i}function Ca(e){for(var t=e.display.view,i=0,r=0;r=e.display.viewTo||P.to().line0?L:e.defaultCharWidth())+"px"}if(r.other){var O=i.appendChild(A("div","\xA0","CodeMirror-cursor CodeMirror-secondarycursor"));O.style.display="",O.style.left=r.other.left+"px",O.style.top=r.other.top+"px",O.style.height=(r.other.bottom-r.other.top)*.85+"px"}}function Vn(e,t){return e.top-t.top||e.left-t.left}function du(e,t,i){var r=e.display,s=e.doc,v=document.createDocumentFragment(),L=la(e.display),O=L.left,P=Math.max(r.sizerWidth,ki(e)-r.sizer.offsetLeft)-L.right,N=s.direction=="ltr";function K(me,Ce,Me,Ae){Ce<0&&(Ce=0),Ce=Math.round(Ce),Ae=Math.round(Ae),v.appendChild(A("div",null,"CodeMirror-selected","position: absolute; left: "+me+`px; + top: `+Ce+"px; width: "+(Me??P-me)+`px; + height: `+(Ae-Ce)+"px"))}function X(me,Ce,Me){var Ae=Le(s,me),Pe=Ae.text.length,Ke,Ct;function Ve(st,Xt){return Xn(e,ie(me,st),"div",Ae,Xt)}function ar(st,Xt,xt){var ht=ba(e,Ae,null,st),at=Xt=="ltr"==(xt=="after")?"left":"right",Qe=xt=="after"?ht.begin:ht.end-(/\s/.test(Ae.text.charAt(ht.end-1))?2:1);return Ve(Qe,at)[at]}var Zt=Be(Ae,s.direction);return ur(Zt,Ce||0,Me??Pe,function(st,Xt,xt,ht){var at=xt=="ltr",Qe=Ve(st,at?"left":"right"),Yt=Ve(Xt-1,at?"right":"left"),an=Ce==null&&st==0,bi=Me==null&&Xt==Pe,Rt=ht==0,Xr=!Zt||ht==Zt.length-1;if(Yt.top-Qe.top<=3){var wt=(N?an:bi)&&Rt,ds=(N?bi:an)&&Xr,ni=wt?O:(at?Qe:Yt).left,Bi=ds?P:(at?Yt:Qe).right;K(ni,Qe.top,Bi-ni,Qe.bottom)}else{var Pi,Wt,ln,ps;at?(Pi=N&&an&&Rt?O:Qe.left,Wt=N?P:ar(st,xt,"before"),ln=N?O:ar(Xt,xt,"after"),ps=N&&bi&&Xr?P:Yt.right):(Pi=N?ar(st,xt,"before"):O,Wt=!N&&an&&Rt?P:Qe.right,ln=!N&&bi&&Xr?O:Yt.left,ps=N?ar(Xt,xt,"after"):P),K(Pi,Qe.top,Wt-Pi,Qe.bottom),Qe.bottom0?t.blinker=setInterval(function(){e.hasFocus()||Xi(e),t.cursorDiv.style.visibility=(i=!i)?"":"hidden"},e.options.cursorBlinkRate):e.options.cursorBlinkRate<0&&(t.cursorDiv.style.visibility="hidden")}}function La(e){e.hasFocus()||(e.display.input.focus(),e.state.focused||Uo(e))}function zo(e){e.state.delayingBlurEvent=!0,setTimeout(function(){e.state.delayingBlurEvent&&(e.state.delayingBlurEvent=!1,e.state.focused&&Xi(e))},100)}function Uo(e,t){e.state.delayingBlurEvent&&!e.state.draggingText&&(e.state.delayingBlurEvent=!1),e.options.readOnly!="nocursor"&&(e.state.focused||(ze(e,"focus",e,t),e.state.focused=!0,te(e.display.wrapper,"CodeMirror-focused"),!e.curOp&&e.display.selForContextMenu!=e.doc.sel&&(e.display.input.reset(),g&&setTimeout(function(){return e.display.input.reset(!0)},20)),e.display.input.receivedFocus()),jo(e))}function Xi(e,t){e.state.delayingBlurEvent||(e.state.focused&&(ze(e,"blur",e,t),e.state.focused=!1,D(e.display.wrapper,"CodeMirror-focused")),clearInterval(e.display.blinker),setTimeout(function(){e.state.focused||(e.display.shift=!1)},150))}function $n(e){for(var t=e.display,i=t.lineDiv.offsetTop,r=Math.max(0,t.scroller.getBoundingClientRect().top),s=t.lineDiv.getBoundingClientRect().top,v=0,L=0;L.005||J<-.005)&&(se.display.sizerWidth){var ue=Math.ceil(K/Zi(e.display));ue>e.display.maxLineLength&&(e.display.maxLineLength=ue,e.display.maxLine=O.line,e.display.maxLineChanged=!0)}}}Math.abs(v)>2&&(t.scroller.scrollTop+=v)}function xa(e){if(e.widgets)for(var t=0;t=L&&(v=Z(t,ft(Le(t,P))-e.wrapper.clientHeight),L=P)}return{from:v,to:Math.max(L,v+1)}}function pu(e,t){if(!Ue(e,"scrollCursorIntoView")){var i=e.display,r=i.sizer.getBoundingClientRect(),s=null,v=i.wrapper.ownerDocument;if(t.top+r.top<0?s=!0:t.bottom+r.top>(v.defaultView.innerHeight||v.documentElement.clientHeight)&&(s=!1),s!=null&&!c){var L=A("div","\u200B",null,`position: absolute; + top: `+(t.top-i.viewOffset-Gn(e.display))+`px; + height: `+(t.bottom-t.top+Gr(e)+i.barHeight)+`px; + left: `+t.left+"px; width: "+Math.max(2,t.right-t.left)+"px;");e.display.lineSpace.appendChild(L),L.scrollIntoView(s),e.display.lineSpace.removeChild(L)}}}function vu(e,t,i,r){r==null&&(r=0);var s;!e.options.lineWrapping&&t==i&&(i=t.sticky=="before"?ie(t.line,t.ch+1,"before"):t,t=t.ch?ie(t.line,t.sticky=="before"?t.ch-1:t.ch,"after"):t);for(var v=0;v<5;v++){var L=!1,O=Ir(e,t),P=!i||i==t?O:Ir(e,i);s={left:Math.min(O.left,P.left),top:Math.min(O.top,P.top)-r,right:Math.max(O.left,P.left),bottom:Math.max(O.bottom,P.bottom)+r};var N=qo(e,s),K=e.doc.scrollTop,X=e.doc.scrollLeft;if(N.scrollTop!=null&&(Cn(e,N.scrollTop),Math.abs(e.doc.scrollTop-K)>1&&(L=!0)),N.scrollLeft!=null&&(Mi(e,N.scrollLeft),Math.abs(e.doc.scrollLeft-X)>1&&(L=!0)),!L)break}return s}function gu(e,t){var i=qo(e,t);i.scrollTop!=null&&Cn(e,i.scrollTop),i.scrollLeft!=null&&Mi(e,i.scrollLeft)}function qo(e,t){var i=e.display,r=Gi(e.display);t.top<0&&(t.top=0);var s=e.curOp&&e.curOp.scrollTop!=null?e.curOp.scrollTop:i.scroller.scrollTop,v=Ro(e),L={};t.bottom-t.top>v&&(t.bottom=t.top+v);var O=e.doc.height+Mo(i),P=t.topO-r;if(t.tops+v){var K=Math.min(t.top,(N?O:t.bottom)-v);K!=s&&(L.scrollTop=K)}var X=e.options.fixedGutter?0:i.gutters.offsetWidth,Q=e.curOp&&e.curOp.scrollLeft!=null?e.curOp.scrollLeft:i.scroller.scrollLeft-X,J=ki(e)-i.gutters.offsetWidth,oe=t.right-t.left>J;return oe&&(t.right=t.left+J),t.left<10?L.scrollLeft=0:t.leftJ+Q-3&&(L.scrollLeft=t.right+(oe?0:10)-J),L}function Ko(e,t){t!=null&&(Qn(e),e.curOp.scrollTop=(e.curOp.scrollTop==null?e.doc.scrollTop:e.curOp.scrollTop)+t)}function Yi(e){Qn(e);var t=e.getCursor();e.curOp.scrollToPos={from:t,to:t,margin:e.options.cursorScrollMargin}}function Sn(e,t,i){(t!=null||i!=null)&&Qn(e),t!=null&&(e.curOp.scrollLeft=t),i!=null&&(e.curOp.scrollTop=i)}function _u(e,t){Qn(e),e.curOp.scrollToPos=t}function Qn(e){var t=e.curOp.scrollToPos;if(t){e.curOp.scrollToPos=null;var i=ya(e,t.from),r=ya(e,t.to);ka(e,i,r,t.margin)}}function ka(e,t,i,r){var s=qo(e,{left:Math.min(t.left,i.left),top:Math.min(t.top,i.top)-r,right:Math.max(t.right,i.right),bottom:Math.max(t.bottom,i.bottom)+r});Sn(e,s.scrollLeft,s.scrollTop)}function Cn(e,t){Math.abs(e.doc.scrollTop-t)<2||(R||Zo(e,{top:t}),Ea(e,t,!0),R&&Zo(e),xn(e,100))}function Ea(e,t,i){t=Math.max(0,Math.min(e.display.scroller.scrollHeight-e.display.scroller.clientHeight,t)),!(e.display.scroller.scrollTop==t&&!i)&&(e.doc.scrollTop=t,e.display.scrollbars.setScrollTop(t),e.display.scroller.scrollTop!=t&&(e.display.scroller.scrollTop=t))}function Mi(e,t,i,r){t=Math.max(0,Math.min(t,e.display.scroller.scrollWidth-e.display.scroller.clientWidth)),!((i?t==e.doc.scrollLeft:Math.abs(e.doc.scrollLeft-t)<2)&&!r)&&(e.doc.scrollLeft=t,Oa(e),e.display.scroller.scrollLeft!=t&&(e.display.scroller.scrollLeft=t),e.display.scrollbars.setScrollLeft(t))}function wn(e){var t=e.display,i=t.gutters.offsetWidth,r=Math.round(e.doc.height+Mo(e.display));return{clientHeight:t.scroller.clientHeight,viewHeight:t.wrapper.clientHeight,scrollWidth:t.scroller.scrollWidth,clientWidth:t.scroller.clientWidth,viewWidth:t.wrapper.clientWidth,barLeft:e.options.fixedGutter?i:0,docHeight:r,scrollHeight:r+Gr(e)+t.barHeight,nativeBarWidth:t.nativeBarWidth,gutterWidth:i}}var Ri=function(e,t,i){this.cm=i;var r=this.vert=A("div",[A("div",null,null,"min-width: 1px")],"CodeMirror-vscrollbar"),s=this.horiz=A("div",[A("div",null,null,"height: 100%; min-height: 1px")],"CodeMirror-hscrollbar");r.tabIndex=s.tabIndex=-1,e(r),e(s),Te(r,"scroll",function(){r.clientHeight&&t(r.scrollTop,"vertical")}),Te(s,"scroll",function(){s.clientWidth&&t(s.scrollLeft,"horizontal")}),this.checkedZeroWidth=!1,y&&_<8&&(this.horiz.style.minHeight=this.vert.style.minWidth="18px")};Ri.prototype.update=function(e){var t=e.scrollWidth>e.clientWidth+1,i=e.scrollHeight>e.clientHeight+1,r=e.nativeBarWidth;if(i){this.vert.style.display="block",this.vert.style.bottom=t?r+"px":"0";var s=e.viewHeight-(t?r:0);this.vert.firstChild.style.height=Math.max(0,e.scrollHeight-e.clientHeight+s)+"px"}else this.vert.scrollTop=0,this.vert.style.display="",this.vert.firstChild.style.height="0";if(t){this.horiz.style.display="block",this.horiz.style.right=i?r+"px":"0",this.horiz.style.left=e.barLeft+"px";var v=e.viewWidth-e.barLeft-(i?r:0);this.horiz.firstChild.style.width=Math.max(0,e.scrollWidth-e.clientWidth+v)+"px"}else this.horiz.style.display="",this.horiz.firstChild.style.width="0";return!this.checkedZeroWidth&&e.clientHeight>0&&(r==0&&this.zeroWidthHack(),this.checkedZeroWidth=!0),{right:i?r:0,bottom:t?r:0}},Ri.prototype.setScrollLeft=function(e){this.horiz.scrollLeft!=e&&(this.horiz.scrollLeft=e),this.disableHoriz&&this.enableZeroWidthBar(this.horiz,this.disableHoriz,"horiz")},Ri.prototype.setScrollTop=function(e){this.vert.scrollTop!=e&&(this.vert.scrollTop=e),this.disableVert&&this.enableZeroWidthBar(this.vert,this.disableVert,"vert")},Ri.prototype.zeroWidthHack=function(){var e=a&&!b?"12px":"18px";this.horiz.style.height=this.vert.style.width=e,this.horiz.style.visibility=this.vert.style.visibility="hidden",this.disableHoriz=new Ie,this.disableVert=new Ie},Ri.prototype.enableZeroWidthBar=function(e,t,i){e.style.visibility="";function r(){var s=e.getBoundingClientRect(),v=i=="vert"?document.elementFromPoint(s.right-1,(s.top+s.bottom)/2):document.elementFromPoint((s.right+s.left)/2,s.bottom-1);v!=e?e.style.visibility="hidden":t.set(1e3,r)}t.set(1e3,r)},Ri.prototype.clear=function(){var e=this.horiz.parentNode;e.removeChild(this.horiz),e.removeChild(this.vert)};var Ln=function(){};Ln.prototype.update=function(){return{bottom:0,right:0}},Ln.prototype.setScrollLeft=function(){},Ln.prototype.setScrollTop=function(){},Ln.prototype.clear=function(){};function Vi(e,t){t||(t=wn(e));var i=e.display.barWidth,r=e.display.barHeight;Ta(e,t);for(var s=0;s<4&&i!=e.display.barWidth||r!=e.display.barHeight;s++)i!=e.display.barWidth&&e.options.lineWrapping&&$n(e),Ta(e,wn(e)),i=e.display.barWidth,r=e.display.barHeight}function Ta(e,t){var i=e.display,r=i.scrollbars.update(t);i.sizer.style.paddingRight=(i.barWidth=r.right)+"px",i.sizer.style.paddingBottom=(i.barHeight=r.bottom)+"px",i.heightForcer.style.borderBottom=r.bottom+"px solid transparent",r.right&&r.bottom?(i.scrollbarFiller.style.display="block",i.scrollbarFiller.style.height=r.bottom+"px",i.scrollbarFiller.style.width=r.right+"px"):i.scrollbarFiller.style.display="",r.bottom&&e.options.coverGutterNextToScrollbar&&e.options.fixedGutter?(i.gutterFiller.style.display="block",i.gutterFiller.style.height=r.bottom+"px",i.gutterFiller.style.width=t.gutterWidth+"px"):i.gutterFiller.style.display=""}var Aa={native:Ri,null:Ln};function Ma(e){e.display.scrollbars&&(e.display.scrollbars.clear(),e.display.scrollbars.addClass&&D(e.display.wrapper,e.display.scrollbars.addClass)),e.display.scrollbars=new Aa[e.options.scrollbarStyle](function(t){e.display.wrapper.insertBefore(t,e.display.scrollbarFiller),Te(t,"mousedown",function(){e.state.focused&&setTimeout(function(){return e.display.input.focus()},0)}),t.setAttribute("cm-not-content","true")},function(t,i){i=="horizontal"?Mi(e,t):Cn(e,t)},e),e.display.scrollbars.addClass&&te(e.display.wrapper,e.display.scrollbars.addClass)}var yu=0;function Oi(e){e.curOp={cm:e,viewChanged:!1,startHeight:e.doc.height,forceUpdate:!1,updateInput:0,typing:!1,changeObjs:null,cursorActivityHandlers:null,cursorActivityCalled:0,selectionChanged:!1,updateMaxLine:!1,scrollLeft:null,scrollTop:null,scrollToPos:null,focus:!1,id:++yu,markArrays:null},Yc(e.curOp)}function Di(e){var t=e.curOp;t&&$c(t,function(i){for(var r=0;r=i.viewTo)||i.maxLineChanged&&t.options.lineWrapping,e.update=e.mustUpdate&&new eo(t,e.mustUpdate&&{top:e.scrollTop,ensure:e.scrollToPos},e.forceUpdate)}function Su(e){e.updatedDisplay=e.mustUpdate&&Go(e.cm,e.update)}function Cu(e){var t=e.cm,i=t.display;e.updatedDisplay&&$n(t),e.barMeasure=wn(t),i.maxLineChanged&&!t.options.lineWrapping&&(e.adjustWidthTo=ua(t,i.maxLine,i.maxLine.text.length).left+3,t.display.sizerWidth=e.adjustWidthTo,e.barMeasure.scrollWidth=Math.max(i.scroller.clientWidth,i.sizer.offsetLeft+e.adjustWidthTo+Gr(t)+t.display.barWidth),e.maxScrollLeft=Math.max(0,i.sizer.offsetLeft+e.adjustWidthTo-ki(t))),(e.updatedDisplay||e.selectionChanged)&&(e.preparedSelection=i.input.prepareSelection())}function wu(e){var t=e.cm;e.adjustWidthTo!=null&&(t.display.sizer.style.minWidth=e.adjustWidthTo+"px",e.maxScrollLeft=e.display.viewTo)){var i=+new Date+e.options.workTime,r=Qr(e,t.highlightFrontier),s=[];t.iter(r.line,Math.min(t.first+t.size,e.display.viewTo+500),function(v){if(r.line>=e.display.viewFrom){var L=v.styles,O=v.text.length>e.options.maxHighlightLength?zt(t.mode,r.state):null,P=ji(e,v,r,!0);O&&(r.state=O),v.styles=P.styles;var N=v.styleClasses,K=P.classes;K?v.styleClasses=K:N&&(v.styleClasses=null);for(var X=!L||L.length!=v.styles.length||N!=K&&(!N||!K||N.bgClass!=K.bgClass||N.textClass!=K.textClass),Q=0;!X&&Qi)return xn(e,e.options.workDelay),!0}),t.highlightFrontier=r.line,t.modeFrontier=Math.max(t.modeFrontier,r.line),s.length&&sr(e,function(){for(var v=0;v=i.viewFrom&&t.visible.to<=i.viewTo&&(i.updateLineNumbers==null||i.updateLineNumbers>=i.viewTo)&&i.renderedView==i.view&&Ca(e)==0)return!1;Da(e)&&(pi(e),t.dims=Ho(e));var s=r.first+r.size,v=Math.max(t.visible.from-e.options.viewportMargin,r.first),L=Math.min(s,t.visible.to+e.options.viewportMargin);i.viewFromL&&i.viewTo-L<20&&(L=Math.min(s,i.viewTo)),re&&(v=xr(e.doc,v),L=kr(e.doc,L));var O=v!=i.viewFrom||L!=i.viewTo||i.lastWrapHeight!=t.wrapperHeight||i.lastWrapWidth!=t.wrapperWidth;hu(e,v,L),i.viewOffset=ft(Le(e.doc,i.viewFrom)),e.display.mover.style.top=i.viewOffset+"px";var P=Ca(e);if(!O&&P==0&&!t.force&&i.renderedView==i.view&&(i.updateLineNumbers==null||i.updateLineNumbers>=i.viewTo))return!1;var N=Eu(e);return P>4&&(i.lineDiv.style.display="none"),Au(e,i.updateLineNumbers,t.dims),P>4&&(i.lineDiv.style.display=""),i.renderedView=i.view,Tu(N),W(i.cursorDiv),W(i.selectionDiv),i.gutters.style.height=i.sizer.style.minHeight=0,O&&(i.lastWrapHeight=t.wrapperHeight,i.lastWrapWidth=t.wrapperWidth,xn(e,400)),i.updateLineNumbers=null,!0}function Ra(e,t){for(var i=t.viewport,r=!0;;r=!1){if(!r||!e.options.lineWrapping||t.oldDisplayWidth==ki(e)){if(i&&i.top!=null&&(i={top:Math.min(e.doc.height+Mo(e.display)-Ro(e),i.top)}),t.visible=Jn(e.display,e.doc,i),t.visible.from>=e.display.viewFrom&&t.visible.to<=e.display.viewTo)break}else r&&(t.visible=Jn(e.display,e.doc,i));if(!Go(e,t))break;$n(e);var s=wn(e);bn(e),Vi(e,s),Yo(e,s),t.force=!1}t.signal(e,"update",e),(e.display.viewFrom!=e.display.reportedViewFrom||e.display.viewTo!=e.display.reportedViewTo)&&(t.signal(e,"viewportChange",e,e.display.viewFrom,e.display.viewTo),e.display.reportedViewFrom=e.display.viewFrom,e.display.reportedViewTo=e.display.viewTo)}function Zo(e,t){var i=new eo(e,t);if(Go(e,i)){$n(e),Ra(e,i);var r=wn(e);bn(e),Vi(e,r),Yo(e,r),i.finish()}}function Au(e,t,i){var r=e.display,s=e.options.lineNumbers,v=r.lineDiv,L=v.firstChild;function O(oe){var ue=oe.nextSibling;return g&&a&&e.display.currentWheelTarget==oe?oe.style.display="none":oe.parentNode.removeChild(oe),ue}for(var P=r.view,N=r.viewFrom,K=0;K-1&&(J=!1),ia(e,X,N,i)),J&&(W(X.lineNumber),X.lineNumber.appendChild(document.createTextNode(he(e.options,N)))),L=X.node.nextSibling}N+=X.size}for(;L;)L=O(L)}function Xo(e){var t=e.gutters.offsetWidth;e.sizer.style.marginLeft=t+"px",mt(e,"gutterChanged",e)}function Yo(e,t){e.display.sizer.style.minHeight=t.docHeight+"px",e.display.heightForcer.style.top=t.docHeight+"px",e.display.gutters.style.height=t.docHeight+e.display.barHeight+Gr(e)+"px"}function Oa(e){var t=e.display,i=t.view;if(!(!t.alignWidgets&&(!t.gutters.firstChild||!e.options.fixedGutter))){for(var r=Fo(t)-t.scroller.scrollLeft+e.doc.scrollLeft,s=t.gutters.offsetWidth,v=r+"px",L=0;L=105&&(s.wrapper.style.clipPath="inset(0px)"),s.wrapper.setAttribute("translate","no"),y&&_<8&&(s.gutters.style.zIndex=-1,s.scroller.style.paddingRight=0),!g&&!(R&&n)&&(s.scroller.draggable=!0),e&&(e.appendChild?e.appendChild(s.wrapper):e(s.wrapper)),s.viewFrom=s.viewTo=t.first,s.reportedViewFrom=s.reportedViewTo=t.first,s.view=[],s.renderedView=null,s.externalMeasured=null,s.viewOffset=0,s.lastWrapHeight=s.lastWrapWidth=0,s.updateLineNumbers=null,s.nativeBarWidth=s.barHeight=s.barWidth=0,s.scrollbarsClipped=!1,s.lineNumWidth=s.lineNumInnerWidth=s.lineNumChars=null,s.alignWidgets=!1,s.cachedCharWidth=s.cachedTextHeight=s.cachedPaddingH=null,s.maxLine=null,s.maxLineLength=0,s.maxLineChanged=!1,s.wheelDX=s.wheelDY=s.wheelStartX=s.wheelStartY=null,s.shift=!1,s.selForContextMenu=null,s.activeTouch=null,s.gutterSpecs=Vo(r.gutters,r.lineNumbers),Ba(s),i.init(s)}var to=0,ri=null;y?ri=-.53:R?ri=15:C?ri=-.7:w&&(ri=-1/3);function Pa(e){var t=e.wheelDeltaX,i=e.wheelDeltaY;return t==null&&e.detail&&e.axis==e.HORIZONTAL_AXIS&&(t=e.detail),i==null&&e.detail&&e.axis==e.VERTICAL_AXIS?i=e.detail:i==null&&(i=e.wheelDelta),{x:t,y:i}}function Ru(e){var t=Pa(e);return t.x*=ri,t.y*=ri,t}function Ia(e,t){C&&u==102&&(e.display.chromeScrollHack==null?e.display.sizer.style.pointerEvents="none":clearTimeout(e.display.chromeScrollHack),e.display.chromeScrollHack=setTimeout(function(){e.display.chromeScrollHack=null,e.display.sizer.style.pointerEvents=""},100));var i=Pa(t),r=i.x,s=i.y,v=ri;t.deltaMode===0&&(r=t.deltaX,s=t.deltaY,v=1);var L=e.display,O=L.scroller,P=O.scrollWidth>O.clientWidth,N=O.scrollHeight>O.clientHeight;if(r&&P||s&&N){if(s&&a&&g){e:for(var K=t.target,X=L.view;K!=O;K=K.parentNode)for(var Q=0;Q=0&&be(e,r.to())<=0)return i}return-1};var Fe=function(e,t){this.anchor=e,this.head=t};Fe.prototype.from=function(){return Ur(this.anchor,this.head)},Fe.prototype.to=function(){return vt(this.anchor,this.head)},Fe.prototype.empty=function(){return this.head.line==this.anchor.line&&this.head.ch==this.anchor.ch};function Hr(e,t,i){var r=e&&e.options.selectionsMayTouch,s=t[i];t.sort(function(Q,J){return be(Q.from(),J.from())}),i=ge(t,s);for(var v=1;v0:P>=0){var N=Ur(O.from(),L.from()),K=vt(O.to(),L.to()),X=O.empty()?L.from()==L.head:O.from()==O.head;v<=i&&--i,t.splice(--v,2,new Fe(X?K:N,X?N:K))}}return new mr(t,i)}function vi(e,t){return new mr([new Fe(e,t||e)],0)}function gi(e){return e.text?ie(e.from.line+e.text.length-1,Re(e.text).length+(e.text.length==1?e.from.ch:0)):e.to}function Ha(e,t){if(be(e,t.from)<0)return e;if(be(e,t.to)<=0)return gi(t);var i=e.line+t.text.length-(t.to.line-t.from.line)-1,r=e.ch;return e.line==t.to.line&&(r+=gi(t).ch-t.to.ch),ie(i,r)}function $o(e,t){for(var i=[],r=0;r1&&e.remove(O.line+1,oe-1),e.insert(O.line+1,ye)}mt(e,"change",e,t)}function _i(e,t,i){function r(s,v,L){if(s.linked)for(var O=0;O1&&!e.done[e.done.length-2].ranges)return e.done.pop(),Re(e.done)}function Ua(e,t,i,r){var s=e.history;s.undone.length=0;var v=+new Date,L,O;if((s.lastOp==r||s.lastOrigin==t.origin&&t.origin&&(t.origin.charAt(0)=="+"&&s.lastModTime>v-(e.cm?e.cm.options.historyEventDelay:500)||t.origin.charAt(0)=="*"))&&(L=Bu(s,s.lastOp==r)))O=Re(L.changes),be(t.from,t.to)==0&&be(t.from,O.to)==0?O.to=gi(t):L.changes.push(es(e,t));else{var P=Re(s.done);for((!P||!P.ranges)&&io(e.sel,s.done),L={changes:[es(e,t)],generation:s.generation},s.done.push(L);s.done.length>s.undoDepth;)s.done.shift(),s.done[0].ranges||s.done.shift()}s.done.push(i),s.generation=++s.maxGeneration,s.lastModTime=s.lastSelTime=v,s.lastOp=s.lastSelOp=r,s.lastOrigin=s.lastSelOrigin=t.origin,O||ze(e,"historyAdded")}function Pu(e,t,i,r){var s=t.charAt(0);return s=="*"||s=="+"&&i.ranges.length==r.ranges.length&&i.somethingSelected()==r.somethingSelected()&&new Date-e.history.lastSelTime<=(e.cm?e.cm.options.historyEventDelay:500)}function Iu(e,t,i,r){var s=e.history,v=r&&r.origin;i==s.lastSelOp||v&&s.lastSelOrigin==v&&(s.lastModTime==s.lastSelTime&&s.lastOrigin==v||Pu(e,v,Re(s.done),t))?s.done[s.done.length-1]=t:io(t,s.done),s.lastSelTime=+new Date,s.lastSelOrigin=v,s.lastSelOp=i,r&&r.clearRedo!==!1&&za(s.undone)}function io(e,t){var i=Re(t);i&&i.ranges&&i.equals(e)||t.push(e)}function qa(e,t,i,r){var s=t["spans_"+e.id],v=0;e.iter(Math.max(e.first,i),Math.min(e.first+e.size,r),function(L){L.markedSpans&&((s||(s=t["spans_"+e.id]={}))[v]=L.markedSpans),++v})}function Hu(e){if(!e)return null;for(var t,i=0;i-1&&(Re(O)[X]=N[X],delete N[X])}}return r}function ts(e,t,i,r){if(r){var s=e.anchor;if(i){var v=be(t,s)<0;v!=be(i,s)<0?(s=t,t=i):v!=be(t,i)<0&&(t=i)}return new Fe(s,t)}else return new Fe(i||t,t)}function no(e,t,i,r,s){s==null&&(s=e.cm&&(e.cm.display.shift||e.extend)),Mt(e,new mr([ts(e.sel.primary(),t,i,s)],0),r)}function Ga(e,t,i){for(var r=[],s=e.cm&&(e.cm.display.shift||e.extend),v=0;v=t.ch:O.to>t.ch))){if(s&&(ze(P,"beforeCursorEnter"),P.explicitlyCleared))if(v.markedSpans){--L;continue}else break;if(!P.atomic)continue;if(i){var X=P.find(r<0?1:-1),Q=void 0;if((r<0?K:N)&&(X=Ja(e,X,-r,X&&X.line==t.line?v:null)),X&&X.line==t.line&&(Q=be(X,i))&&(r<0?Q<0:Q>0))return Ji(e,X,t,r,s)}var J=P.find(r<0?-1:1);return(r<0?N:K)&&(J=Ja(e,J,r,J.line==t.line?v:null)),J?Ji(e,J,t,r,s):null}}return t}function so(e,t,i,r,s){var v=r||1,L=Ji(e,t,i,v,s)||!s&&Ji(e,t,i,v,!0)||Ji(e,t,i,-v,s)||!s&&Ji(e,t,i,-v,!0);return L||(e.cantEdit=!0,ie(e.first,0))}function Ja(e,t,i,r){return i<0&&t.ch==0?t.line>e.first?Oe(e,ie(t.line-1)):null:i>0&&t.ch==(r||Le(e,t.line)).text.length?t.line=0;--s)tl(e,{from:r[s].from,to:r[s].to,text:s?[""]:t.text,origin:t.origin});else tl(e,t)}}function tl(e,t){if(!(t.text.length==1&&t.text[0]==""&&be(t.from,t.to)==0)){var i=$o(e,t);Ua(e,t,i,e.cm?e.cm.curOp.id:NaN),Tn(e,t,i,Ge(e,t));var r=[];_i(e,function(s,v){!v&&ge(r,s.history)==-1&&(ol(s.history,t),r.push(s.history)),Tn(s,t,null,Ge(s,t))})}}function ao(e,t,i){var r=e.cm&&e.cm.state.suppressEdits;if(!(r&&!i)){for(var s=e.history,v,L=e.sel,O=t=="undo"?s.done:s.undone,P=t=="undo"?s.undone:s.done,N=0;N=0;--J){var oe=Q(J);if(oe)return oe.v}}}}function rl(e,t){if(t!=0&&(e.first+=t,e.sel=new mr(Ze(e.sel.ranges,function(s){return new Fe(ie(s.anchor.line+t,s.anchor.ch),ie(s.head.line+t,s.head.ch))}),e.sel.primIndex),e.cm)){Kt(e.cm,e.first,e.first-t,t);for(var i=e.cm.display,r=i.viewFrom;re.lastLine())){if(t.from.linev&&(t={from:t.from,to:ie(v,Le(e,v).text.length),text:[t.text[0]],origin:t.origin}),t.removed=tr(e,t.from,t.to),i||(i=$o(e,t)),e.cm?Nu(e.cm,t,r):Qo(e,t,r),oo(e,i,Y),e.cantEdit&&so(e,ie(e.firstLine(),0))&&(e.cantEdit=!1)}}function Nu(e,t,i){var r=e.doc,s=e.display,v=t.from,L=t.to,O=!1,P=v.line;e.options.lineWrapping||(P=j(yt(Le(r,v.line))),r.iter(P,L.line+1,function(J){if(J==s.maxLine)return O=!0,!0})),r.sel.contains(t.from,t.to)>-1&&Et(e),Qo(r,t,i,Sa(e)),e.options.lineWrapping||(r.iter(P,v.line+t.text.length,function(J){var oe=Kr(J);oe>s.maxLineLength&&(s.maxLine=J,s.maxLineLength=oe,s.maxLineChanged=!0,O=!1)}),O&&(e.curOp.updateMaxLine=!0)),qn(r,v.line),xn(e,400);var N=t.text.length-(L.line-v.line)-1;t.full?Kt(e):v.line==L.line&&t.text.length==1&&!Wa(e.doc,t)?di(e,v.line,"text"):Kt(e,v.line,L.line+1,N);var K=pt(e,"changes"),X=pt(e,"change");if(X||K){var Q={from:v,to:L,text:t.text,removed:t.removed,origin:t.origin};X&&mt(e,"change",e,Q),K&&(e.curOp.changeObjs||(e.curOp.changeObjs=[])).push(Q)}e.display.selForContextMenu=null}function en(e,t,i,r,s){var v;r||(r=i),be(r,i)<0&&(v=[r,i],i=v[0],r=v[1]),typeof t=="string"&&(t=e.splitLines(t)),Qi(e,{from:i,to:r,text:t,origin:s})}function il(e,t,i,r){i1||!(this.children[0]instanceof Mn))){var O=[];this.collapse(O),this.children=[new Mn(O)],this.children[0].parent=this}},collapse:function(e){for(var t=0;t50){for(var L=s.lines.length%25+25,O=L;O10);e.parent.maybeSpill()}},iterN:function(e,t,i){for(var r=0;re.display.maxLineLength&&(e.display.maxLine=N,e.display.maxLineLength=K,e.display.maxLineChanged=!0)}r!=null&&e&&this.collapsed&&Kt(e,r,s+1),this.lines.length=0,this.explicitlyCleared=!0,this.atomic&&this.doc.cantEdit&&(this.doc.cantEdit=!1,e&&Va(e.doc)),e&&mt(e,"markerCleared",e,this,r,s),t&&Di(e),this.parent&&this.parent.clear()}},yi.prototype.find=function(e,t){e==null&&this.type=="bookmark"&&(e=1);for(var i,r,s=0;s0||L==0&&v.clearWhenEmpty!==!1)return v;if(v.replacedWith&&(v.collapsed=!0,v.widgetNode=H("span",[v.replacedWith],"CodeMirror-widget"),r.handleMouseEvents||v.widgetNode.setAttribute("cm-ignore-events","true"),r.insertLeft&&(v.widgetNode.insertLeft=!0)),v.collapsed){if(_r(e,t.line,t,i,v)||t.line!=i.line&&_r(e,i.line,t,i,v))throw new Error("Inserting collapsed marker partially overlapping an existing one");Ht()}v.addToHistory&&Ua(e,{from:t,to:i,origin:"markText"},e.sel,NaN);var O=t.line,P=e.cm,N;if(e.iter(O,i.line+1,function(X){P&&v.collapsed&&!P.options.lineWrapping&&yt(X)==P.display.maxLine&&(N=!0),v.collapsed&&O!=t.line&&Lt(X,0),ir(X,new Ut(v,O==t.line?t.ch:null,O==i.line?i.ch:null),e.cm&&e.cm.curOp),++O}),v.collapsed&&e.iter(t.line,i.line+1,function(X){qt(e,X)&&Lt(X,0)}),v.clearOnEnter&&Te(v,"beforeCursorEnter",function(){return v.clear()}),v.readOnly&&(nt(),(e.history.done.length||e.history.undone.length)&&e.clearHistory()),v.collapsed&&(v.id=++al,v.atomic=!0),P){if(N&&(P.curOp.updateMaxLine=!0),v.collapsed)Kt(P,t.line,i.line+1);else if(v.className||v.startStyle||v.endStyle||v.css||v.attributes||v.title)for(var K=t.line;K<=i.line;K++)di(P,K,"text");v.atomic&&Va(P.doc),mt(P,"markerAdded",P,v)}return v}var Dn=function(e,t){this.markers=e,this.primary=t;for(var i=0;i=0;P--)Qi(this,r[P]);O?Xa(this,O):this.cm&&Yi(this.cm)}),undo:St(function(){ao(this,"undo")}),redo:St(function(){ao(this,"redo")}),undoSelection:St(function(){ao(this,"undo",!0)}),redoSelection:St(function(){ao(this,"redo",!0)}),setExtending:function(e){this.extend=e},getExtending:function(){return this.extend},historySize:function(){for(var e=this.history,t=0,i=0,r=0;r=e.ch)&&t.push(s.marker.parent||s.marker)}return t},findMarks:function(e,t,i){e=Oe(this,e),t=Oe(this,t);var r=[],s=e.line;return this.iter(e.line,t.line+1,function(v){var L=v.markedSpans;if(L)for(var O=0;O=P.to||P.from==null&&s!=e.line||P.from!=null&&s==t.line&&P.from>=t.ch)&&(!i||i(P.marker))&&r.push(P.marker.parent||P.marker)}++s}),r},getAllMarks:function(){var e=[];return this.iter(function(t){var i=t.markedSpans;if(i)for(var r=0;re)return t=e,!0;e-=v,++i}),Oe(this,ie(i,t))},indexFromPos:function(e){e=Oe(this,e);var t=e.ch;if(e.linet&&(t=e.from),e.to!=null&&e.to-1){t.state.draggingText(e),setTimeout(function(){return t.display.input.focus()},20);return}try{var K=e.dataTransfer.getData("Text");if(K){var X;if(t.state.draggingText&&!t.state.draggingText.copy&&(X=t.listSelections()),oo(t.doc,vi(i,i)),X)for(var Q=0;Q=0;O--)en(e.doc,"",r[O].from,r[O].to,"+delete");Yi(e)})}function is(e,t,i){var r=Sr(e.text,t+i,i);return r<0||r>e.text.length?null:r}function ns(e,t,i){var r=is(e,t.ch,i);return r==null?null:new ie(t.line,r,i<0?"after":"before")}function os(e,t,i,r,s){if(e){t.doc.direction=="rtl"&&(s=-s);var v=Be(i,t.doc.direction);if(v){var L=s<0?Re(v):v[0],O=s<0==(L.level==1),P=O?"after":"before",N;if(L.level>0||t.doc.direction=="rtl"){var K=Ki(t,i);N=s<0?i.text.length-1:0;var X=Zr(t,K,N).top;N=Qt(function(Q){return Zr(t,K,Q).top==X},s<0==(L.level==1)?L.from:L.to-1,N),P=="before"&&(N=is(i,N,1))}else N=s<0?L.to:L.from;return new ie(r,N,P)}}return new ie(r,s<0?i.text.length:0,s<0?"before":"after")}function ef(e,t,i,r){var s=Be(t,e.doc.direction);if(!s)return ns(t,i,r);i.ch>=t.text.length?(i.ch=t.text.length,i.sticky="before"):i.ch<=0&&(i.ch=0,i.sticky="after");var v=fr(s,i.ch,i.sticky),L=s[v];if(e.doc.direction=="ltr"&&L.level%2==0&&(r>0?L.to>i.ch:L.from=L.from&&Q>=K.begin)){var J=X?"before":"after";return new ie(i.line,Q,J)}}var oe=function(ye,Se,me){for(var Ce=function(Ke,Ct){return Ct?new ie(i.line,O(Ke,1),"before"):new ie(i.line,Ke,"after")};ye>=0&&ye0==(Me.level!=1),Pe=Ae?me.begin:O(me.end,-1);if(Me.from<=Pe&&Pe0?K.end:O(K.begin,-1);return pe!=null&&!(r>0&&pe==t.text.length)&&(ue=oe(r>0?0:s.length-1,r,N(pe)),ue)?ue:null}var In={selectAll:Qa,singleSelection:function(e){return e.setSelection(e.getCursor("anchor"),e.getCursor("head"),Y)},killLine:function(e){return nn(e,function(t){if(t.empty()){var i=Le(e.doc,t.head.line).text.length;return t.head.ch==i&&t.head.line0)s=new ie(s.line,s.ch+1),e.replaceRange(v.charAt(s.ch-1)+v.charAt(s.ch-2),ie(s.line,s.ch-2),s,"+transpose");else if(s.line>e.doc.first){var L=Le(e.doc,s.line-1).text;L&&(s=new ie(s.line,1),e.replaceRange(v.charAt(0)+e.doc.lineSeparator()+L.charAt(L.length-1),ie(s.line-1,L.length-1),s,"+transpose"))}}i.push(new Fe(s,s))}e.setSelections(i)})},newlineAndIndent:function(e){return sr(e,function(){for(var t=e.listSelections(),i=t.length-1;i>=0;i--)e.replaceRange(e.doc.lineSeparator(),t[i].anchor,t[i].head,"+input");t=e.listSelections();for(var r=0;re&&be(t,this.pos)==0&&i==this.button};var Fn,Wn;function lf(e,t){var i=+new Date;return Wn&&Wn.compare(i,e,t)?(Fn=Wn=null,"triple"):Fn&&Fn.compare(i,e,t)?(Wn=new as(i,e,t),Fn=null,"double"):(Fn=new as(i,e,t),Wn=null,"single")}function wl(e){var t=this,i=t.display;if(!(Ue(t,e)||i.activeTouch&&i.input.supportsTouch())){if(i.input.ensurePolled(),i.shift=e.shiftKey,ti(i,e)){g||(i.scroller.draggable=!1,setTimeout(function(){return i.scroller.draggable=!0},100));return}if(!ls(t,e)){var r=Ti(t,e),s=Dt(e),v=r?lf(r,s):"single";ve(t).focus(),s==1&&t.state.selectingText&&t.state.selectingText(e),!(r&&cf(t,s,r,v,e))&&(s==1?r?ff(t,r,v,e):Wr(e)==i.scroller&&tt(e):s==2?(r&&no(t.doc,r),setTimeout(function(){return i.input.focus()},20)):s==3&&(E?t.display.input.onContextMenu(e):zo(t)))}}}function cf(e,t,i,r,s){var v="Click";return r=="double"?v="Double"+v:r=="triple"&&(v="Triple"+v),v=(t==1?"Left":t==2?"Middle":"Right")+v,Hn(e,pl(v,s),s,function(L){if(typeof L=="string"&&(L=In[L]),!L)return!1;var O=!1;try{e.isReadOnly()&&(e.state.suppressEdits=!0),O=L(e,i)!=V}finally{e.state.suppressEdits=!1}return O})}function uf(e,t,i){var r=e.getOption("configureMouse"),s=r?r(e,t,i):{};if(s.unit==null){var v=h?i.shiftKey&&i.metaKey:i.altKey;s.unit=v?"rectangle":t=="single"?"char":t=="double"?"word":"line"}return(s.extend==null||e.doc.extend)&&(s.extend=e.doc.extend||i.shiftKey),s.addNew==null&&(s.addNew=a?i.metaKey:i.ctrlKey),s.moveOnDrag==null&&(s.moveOnDrag=!(a?i.altKey:i.ctrlKey)),s}function ff(e,t,i,r){y?setTimeout(de(La,e),0):e.curOp.focus=G(_e(e));var s=uf(e,i,r),v=e.doc.sel,L;e.options.dragDrop&&ci&&!e.isReadOnly()&&i=="single"&&(L=v.contains(t))>-1&&(be((L=v.ranges[L]).from(),t)<0||t.xRel>0)&&(be(L.to(),t)>0||t.xRel<0)?hf(e,r,t,s):df(e,r,t,s)}function hf(e,t,i,r){var s=e.display,v=!1,L=bt(e,function(N){g&&(s.scroller.draggable=!1),e.state.draggingText=!1,e.state.delayingBlurEvent&&(e.hasFocus()?e.state.delayingBlurEvent=!1:zo(e)),et(s.wrapper.ownerDocument,"mouseup",L),et(s.wrapper.ownerDocument,"mousemove",O),et(s.scroller,"dragstart",P),et(s.scroller,"drop",L),v||(tt(N),r.addNew||no(e.doc,i,null,null,r.extend),g&&!w||y&&_==9?setTimeout(function(){s.wrapper.ownerDocument.body.focus({preventScroll:!0}),s.input.focus()},20):s.input.focus())}),O=function(N){v=v||Math.abs(t.clientX-N.clientX)+Math.abs(t.clientY-N.clientY)>=10},P=function(){return v=!0};g&&(s.scroller.draggable=!0),e.state.draggingText=L,L.copy=!r.moveOnDrag,Te(s.wrapper.ownerDocument,"mouseup",L),Te(s.wrapper.ownerDocument,"mousemove",O),Te(s.scroller,"dragstart",P),Te(s.scroller,"drop",L),e.state.delayingBlurEvent=!0,setTimeout(function(){return s.input.focus()},20),s.scroller.dragDrop&&s.scroller.dragDrop()}function Ll(e,t,i){if(i=="char")return new Fe(t,t);if(i=="word")return e.findWordAt(t);if(i=="line")return new Fe(ie(t.line,0),Oe(e.doc,ie(t.line+1,0)));var r=i(e,t);return new Fe(r.from,r.to)}function df(e,t,i,r){y&&zo(e);var s=e.display,v=e.doc;tt(t);var L,O,P=v.sel,N=P.ranges;if(r.addNew&&!r.extend?(O=v.sel.contains(i),O>-1?L=N[O]:L=new Fe(i,i)):(L=v.sel.primary(),O=v.sel.primIndex),r.unit=="rectangle")r.addNew||(L=new Fe(i,i)),i=Ti(e,t,!0,!0),O=-1;else{var K=Ll(e,i,r.unit);r.extend?L=ts(L,K.anchor,K.head,r.extend):L=K}r.addNew?O==-1?(O=N.length,Mt(v,Hr(e,N.concat([L]),O),{scroll:!1,origin:"*mouse"})):N.length>1&&N[O].empty()&&r.unit=="char"&&!r.extend?(Mt(v,Hr(e,N.slice(0,O).concat(N.slice(O+1)),0),{scroll:!1,origin:"*mouse"}),P=v.sel):rs(v,O,L,se):(O=0,Mt(v,new mr([L],0),se),P=v.sel);var X=i;function Q(me){if(be(X,me)!=0)if(X=me,r.unit=="rectangle"){for(var Ce=[],Me=e.options.tabSize,Ae=$(Le(v,i.line).text,i.ch,Me),Pe=$(Le(v,me.line).text,me.ch,Me),Ke=Math.min(Ae,Pe),Ct=Math.max(Ae,Pe),Ve=Math.min(i.line,me.line),ar=Math.min(e.lastLine(),Math.max(i.line,me.line));Ve<=ar;Ve++){var Zt=Le(v,Ve).text,st=Ee(Zt,Ke,Me);Ke==Ct?Ce.push(new Fe(ie(Ve,st),ie(Ve,st))):Zt.length>st&&Ce.push(new Fe(ie(Ve,st),ie(Ve,Ee(Zt,Ct,Me))))}Ce.length||Ce.push(new Fe(i,i)),Mt(v,Hr(e,P.ranges.slice(0,O).concat(Ce),O),{origin:"*mouse",scroll:!1}),e.scrollIntoView(me)}else{var Xt=L,xt=Ll(e,me,r.unit),ht=Xt.anchor,at;be(xt.anchor,ht)>0?(at=xt.head,ht=Ur(Xt.from(),xt.anchor)):(at=xt.anchor,ht=vt(Xt.to(),xt.head));var Qe=P.ranges.slice(0);Qe[O]=pf(e,new Fe(Oe(v,ht),at)),Mt(v,Hr(e,Qe,O),se)}}var J=s.wrapper.getBoundingClientRect(),oe=0;function ue(me){var Ce=++oe,Me=Ti(e,me,!0,r.unit=="rectangle");if(Me)if(be(Me,X)!=0){e.curOp.focus=G(_e(e)),Q(Me);var Ae=Jn(s,v);(Me.line>=Ae.to||Me.lineJ.bottom?20:0;Pe&&setTimeout(bt(e,function(){oe==Ce&&(s.scroller.scrollTop+=Pe,ue(me))}),50)}}function pe(me){e.state.selectingText=!1,oe=1/0,me&&(tt(me),s.input.focus()),et(s.wrapper.ownerDocument,"mousemove",ye),et(s.wrapper.ownerDocument,"mouseup",Se),v.history.lastSelOrigin=null}var ye=bt(e,function(me){me.buttons===0||!Dt(me)?pe(me):ue(me)}),Se=bt(e,pe);e.state.selectingText=Se,Te(s.wrapper.ownerDocument,"mousemove",ye),Te(s.wrapper.ownerDocument,"mouseup",Se)}function pf(e,t){var i=t.anchor,r=t.head,s=Le(e.doc,i.line);if(be(i,r)==0&&i.sticky==r.sticky)return t;var v=Be(s);if(!v)return t;var L=fr(v,i.ch,i.sticky),O=v[L];if(O.from!=i.ch&&O.to!=i.ch)return t;var P=L+(O.from==i.ch==(O.level!=1)?0:1);if(P==0||P==v.length)return t;var N;if(r.line!=i.line)N=(r.line-i.line)*(e.doc.direction=="ltr"?1:-1)>0;else{var K=fr(v,r.ch,r.sticky),X=K-L||(r.ch-i.ch)*(O.level==1?-1:1);K==P-1||K==P?N=X<0:N=X>0}var Q=v[P+(N?-1:0)],J=N==(Q.level==1),oe=J?Q.from:Q.to,ue=J?"after":"before";return i.ch==oe&&i.sticky==ue?t:new Fe(new ie(i.line,oe,ue),r)}function xl(e,t,i,r){var s,v;if(t.touches)s=t.touches[0].clientX,v=t.touches[0].clientY;else try{s=t.clientX,v=t.clientY}catch{return!1}if(s>=Math.floor(e.display.gutters.getBoundingClientRect().right))return!1;r&&tt(t);var L=e.display,O=L.lineDiv.getBoundingClientRect();if(v>O.bottom||!pt(e,i))return lt(t);v-=O.top-L.viewOffset;for(var P=0;P=s){var K=Z(e.doc,v),X=e.display.gutterSpecs[P];return ze(e,i,e,K,X.className,t),lt(t)}}}function ls(e,t){return xl(e,t,"gutterClick",!0)}function kl(e,t){ti(e.display,t)||vf(e,t)||Ue(e,t,"contextmenu")||E||e.display.input.onContextMenu(t)}function vf(e,t){return pt(e,"gutterContextMenu")?xl(e,t,"gutterContextMenu",!1):!1}function El(e){e.display.wrapper.className=e.display.wrapper.className.replace(/\s*cm-s-\S+/g,"")+e.options.theme.replace(/(^|\s)\s*/g," cm-s-"),mn(e)}var on={toString:function(){return"CodeMirror.Init"}},Tl={},fo={};function gf(e){var t=e.optionHandlers;function i(r,s,v,L){e.defaults[r]=s,v&&(t[r]=L?function(O,P,N){N!=on&&v(O,P,N)}:v)}e.defineOption=i,e.Init=on,i("value","",function(r,s){return r.setValue(s)},!0),i("mode",null,function(r,s){r.doc.modeOption=s,Jo(r)},!0),i("indentUnit",2,Jo,!0),i("indentWithTabs",!1),i("smartIndent",!0),i("tabSize",4,function(r){En(r),mn(r),Kt(r)},!0),i("lineSeparator",null,function(r,s){if(r.doc.lineSep=s,!!s){var v=[],L=r.doc.first;r.doc.iter(function(P){for(var N=0;;){var K=P.text.indexOf(s,N);if(K==-1)break;N=K+s.length,v.push(ie(L,K))}L++});for(var O=v.length-1;O>=0;O--)en(r.doc,s,v[O],ie(v[O].line,v[O].ch+s.length))}}),i("specialChars",/[\u0000-\u001f\u007f-\u009f\u00ad\u061c\u200b\u200e\u200f\u2028\u2029\u202d\u202e\u2066\u2067\u2069\ufeff\ufff9-\ufffc]/g,function(r,s,v){r.state.specialChars=new RegExp(s.source+(s.test(" ")?"":"| "),"g"),v!=on&&r.refresh()}),i("specialCharPlaceholder",qc,function(r){return r.refresh()},!0),i("electricChars",!0),i("inputStyle",n?"contenteditable":"textarea",function(){throw new Error("inputStyle can not (yet) be changed in a running editor")},!0),i("spellcheck",!1,function(r,s){return r.getInputField().spellcheck=s},!0),i("autocorrect",!1,function(r,s){return r.getInputField().autocorrect=s},!0),i("autocapitalize",!1,function(r,s){return r.getInputField().autocapitalize=s},!0),i("rtlMoveVisually",!d),i("wholeLineUpdateBefore",!0),i("theme","default",function(r){El(r),kn(r)},!0),i("keyMap","default",function(r,s,v){var L=co(s),O=v!=on&&co(v);O&&O.detach&&O.detach(r,L),L.attach&&L.attach(r,O||null)}),i("extraKeys",null),i("configureMouse",null),i("lineWrapping",!1,yf,!0),i("gutters",[],function(r,s){r.display.gutterSpecs=Vo(s,r.options.lineNumbers),kn(r)},!0),i("fixedGutter",!0,function(r,s){r.display.gutters.style.left=s?Fo(r.display)+"px":"0",r.refresh()},!0),i("coverGutterNextToScrollbar",!1,function(r){return Vi(r)},!0),i("scrollbarStyle","native",function(r){Ma(r),Vi(r),r.display.scrollbars.setScrollTop(r.doc.scrollTop),r.display.scrollbars.setScrollLeft(r.doc.scrollLeft)},!0),i("lineNumbers",!1,function(r,s){r.display.gutterSpecs=Vo(r.options.gutters,s),kn(r)},!0),i("firstLineNumber",1,kn,!0),i("lineNumberFormatter",function(r){return r},kn,!0),i("showCursorWhenSelecting",!1,bn,!0),i("resetSelectionOnContextMenu",!0),i("lineWiseCopyCut",!0),i("pasteLinesPerSelection",!0),i("selectionsMayTouch",!1),i("readOnly",!1,function(r,s){s=="nocursor"&&(Xi(r),r.display.input.blur()),r.display.input.readOnlyChanged(s)}),i("screenReaderLabel",null,function(r,s){s=s===""?null:s,r.display.input.screenReaderLabelChanged(s)}),i("disableInput",!1,function(r,s){s||r.display.input.reset()},!0),i("dragDrop",!0,_f),i("allowDropFileTypes",null),i("cursorBlinkRate",530),i("cursorScrollMargin",0),i("cursorHeight",1,bn,!0),i("singleCursorHeightPerLine",!0,bn,!0),i("workTime",100),i("workDelay",100),i("flattenSpans",!0,En,!0),i("addModeClass",!1,En,!0),i("pollInterval",100),i("undoDepth",200,function(r,s){return r.doc.history.undoDepth=s}),i("historyEventDelay",1250),i("viewportMargin",10,function(r){return r.refresh()},!0),i("maxHighlightLength",1e4,En,!0),i("moveInputWithCursor",!0,function(r,s){s||r.display.input.resetPosition()}),i("tabindex",null,function(r,s){return r.display.input.getField().tabIndex=s||""}),i("autofocus",null),i("direction","ltr",function(r,s){return r.doc.setDirection(s)},!0),i("phrases",null)}function _f(e,t,i){var r=i&&i!=on;if(!t!=!r){var s=e.display.dragFunctions,v=t?Te:et;v(e.display.scroller,"dragstart",s.start),v(e.display.scroller,"dragenter",s.enter),v(e.display.scroller,"dragover",s.over),v(e.display.scroller,"dragleave",s.leave),v(e.display.scroller,"drop",s.drop)}}function yf(e){e.options.lineWrapping?(te(e.display.wrapper,"CodeMirror-wrap"),e.display.sizer.style.minWidth="",e.display.sizerWidth=null):(D(e.display.wrapper,"CodeMirror-wrap"),xi(e)),Wo(e),Kt(e),mn(e),setTimeout(function(){return Vi(e)},100)}function Ye(e,t){var i=this;if(!(this instanceof Ye))return new Ye(e,t);this.options=t=t?ke(t):{},ke(Tl,t,!1);var r=t.value;typeof r=="string"?r=new Gt(r,t.mode,null,t.lineSeparator,t.direction):t.mode&&(r.modeOption=t.mode),this.doc=r;var s=new Ye.inputStyles[t.inputStyle](this),v=this.display=new Mu(e,r,s,t);v.wrapper.CodeMirror=this,El(this),t.lineWrapping&&(this.display.wrapper.className+=" CodeMirror-wrap"),Ma(this),this.state={keyMaps:[],overlays:[],modeGen:0,overwrite:!1,delayingBlurEvent:!1,focused:!1,suppressEdits:!1,pasteIncoming:-1,cutIncoming:-1,selectingText:!1,draggingText:!1,highlight:new Ie,keySeq:null,specialChars:null},t.autofocus&&!n&&v.input.focus(),y&&_<11&&setTimeout(function(){return i.display.input.reset(!0)},20),mf(this),Yu(),Oi(this),this.curOp.forceUpdate=!0,Na(this,r),t.autofocus&&!n||this.hasFocus()?setTimeout(function(){i.hasFocus()&&!i.state.focused&&Uo(i)},20):Xi(this);for(var L in fo)fo.hasOwnProperty(L)&&fo[L](this,t[L],on);Da(this),t.finishInit&&t.finishInit(this);for(var O=0;O20*20}Te(t.scroller,"touchstart",function(P){if(!Ue(e,P)&&!v(P)&&!ls(e,P)){t.input.ensurePolled(),clearTimeout(i);var N=+new Date;t.activeTouch={start:N,moved:!1,prev:N-r.end<=300?r:null},P.touches.length==1&&(t.activeTouch.left=P.touches[0].pageX,t.activeTouch.top=P.touches[0].pageY)}}),Te(t.scroller,"touchmove",function(){t.activeTouch&&(t.activeTouch.moved=!0)}),Te(t.scroller,"touchend",function(P){var N=t.activeTouch;if(N&&!ti(t,P)&&N.left!=null&&!N.moved&&new Date-N.start<300){var K=e.coordsChar(t.activeTouch,"page"),X;!N.prev||L(N,N.prev)?X=new Fe(K,K):!N.prev.prev||L(N,N.prev.prev)?X=e.findWordAt(K):X=new Fe(ie(K.line,0),Oe(e.doc,ie(K.line+1,0))),e.setSelection(X.anchor,X.head),e.focus(),tt(P)}s()}),Te(t.scroller,"touchcancel",s),Te(t.scroller,"scroll",function(){t.scroller.clientHeight&&(Cn(e,t.scroller.scrollTop),Mi(e,t.scroller.scrollLeft,!0),ze(e,"scroll",e))}),Te(t.scroller,"mousewheel",function(P){return Ia(e,P)}),Te(t.scroller,"DOMMouseScroll",function(P){return Ia(e,P)}),Te(t.wrapper,"scroll",function(){return t.wrapper.scrollTop=t.wrapper.scrollLeft=0}),t.dragFunctions={enter:function(P){Ue(e,P)||hr(P)},over:function(P){Ue(e,P)||(Xu(e,P),hr(P))},start:function(P){return Zu(e,P)},drop:bt(e,Gu),leave:function(P){Ue(e,P)||ul(e)}};var O=t.input.getField();Te(O,"keyup",function(P){return Sl.call(e,P)}),Te(O,"keydown",bt(e,bl)),Te(O,"keypress",bt(e,Cl)),Te(O,"focus",function(P){return Uo(e,P)}),Te(O,"blur",function(P){return Xi(e,P)})}var cs=[];Ye.defineInitHook=function(e){return cs.push(e)};function Nn(e,t,i,r){var s=e.doc,v;i==null&&(i="add"),i=="smart"&&(s.mode.indent?v=Qr(e,t).state:i="prev");var L=e.options.tabSize,O=Le(s,t),P=$(O.text,null,L);O.stateAfter&&(O.stateAfter=null);var N=O.text.match(/^\s*/)[0],K;if(!r&&!/\S/.test(O.text))K=0,i="not";else if(i=="smart"&&(K=s.mode.indent(v,O.text.slice(N.length),O.text),K==V||K>150)){if(!r)return;i="prev"}i=="prev"?t>s.first?K=$(Le(s,t-1).text,null,L):K=0:i=="add"?K=P+e.options.indentUnit:i=="subtract"?K=P-e.options.indentUnit:typeof i=="number"&&(K=P+i),K=Math.max(0,K);var X="",Q=0;if(e.options.indentWithTabs)for(var J=Math.floor(K/L);J;--J)Q+=L,X+=" ";if(QL,P=Tt(t),N=null;if(O&&r.ranges.length>1)if(Fr&&Fr.text.join(` +`)==t){if(r.ranges.length%Fr.text.length==0){N=[];for(var K=0;K=0;Q--){var J=r.ranges[Q],oe=J.from(),ue=J.to();J.empty()&&(i&&i>0?oe=ie(oe.line,oe.ch-i):e.state.overwrite&&!O?ue=ie(ue.line,Math.min(Le(v,ue.line).text.length,ue.ch+Re(P).length)):O&&Fr&&Fr.lineWise&&Fr.text.join(` +`)==P.join(` +`)&&(oe=ue=ie(oe.line,0)));var pe={from:oe,to:ue,text:N?N[Q%N.length]:P,origin:s||(O?"paste":e.state.cutIncoming>L?"cut":"+input")};Qi(e.doc,pe),mt(e,"inputRead",e,pe)}t&&!O&&Ml(e,t),Yi(e),e.curOp.updateInput<2&&(e.curOp.updateInput=X),e.curOp.typing=!0,e.state.pasteIncoming=e.state.cutIncoming=-1}function Al(e,t){var i=e.clipboardData&&e.clipboardData.getData("Text");if(i)return e.preventDefault(),!t.isReadOnly()&&!t.options.disableInput&&t.hasFocus()&&sr(t,function(){return us(t,i,0,null,"paste")}),!0}function Ml(e,t){if(!(!e.options.electricChars||!e.options.smartIndent))for(var i=e.doc.sel,r=i.ranges.length-1;r>=0;r--){var s=i.ranges[r];if(!(s.head.ch>100||r&&i.ranges[r-1].head.line==s.head.line)){var v=e.getModeAt(s.head),L=!1;if(v.electricChars){for(var O=0;O-1){L=Nn(e,s.head.line,"smart");break}}else v.electricInput&&v.electricInput.test(Le(e.doc,s.head.line).text.slice(0,s.head.ch))&&(L=Nn(e,s.head.line,"smart"));L&&mt(e,"electricInput",e,s.head.line)}}}function Rl(e){for(var t=[],i=[],r=0;rv&&(Nn(this,O.head.line,r,!0),v=O.head.line,L==this.doc.sel.primIndex&&Yi(this));else{var P=O.from(),N=O.to(),K=Math.max(v,P.line);v=Math.min(this.lastLine(),N.line-(N.ch?0:1))+1;for(var X=K;X0&&rs(this.doc,L,new Fe(P,Q[L].to()),Y)}}}),getTokenAt:function(r,s){return zn(this,r,s)},getLineTokens:function(r,s){return zn(this,ie(r),s,!0)},getTokenTypeAt:function(r){r=Oe(this.doc,r);var s=zi(this,Le(this.doc,r.line)),v=0,L=(s.length-1)/2,O=r.ch,P;if(O==0)P=s[2];else for(;;){var N=v+L>>1;if((N?s[N*2-1]:0)>=O)L=N;else if(s[N*2+1]P&&(r=P,L=!0),O=Le(this.doc,r)}else O=r;return Zn(this,O,{top:0,left:0},s||"page",v||L).top+(L?this.doc.height-ft(O):0)},defaultTextHeight:function(){return Gi(this.display)},defaultCharWidth:function(){return Zi(this.display)},getViewport:function(){return{from:this.display.viewFrom,to:this.display.viewTo}},addWidget:function(r,s,v,L,O){var P=this.display;r=Ir(this,Oe(this.doc,r));var N=r.bottom,K=r.left;if(s.style.position="absolute",s.setAttribute("cm-ignore-events","true"),this.display.input.setUneditable(s),P.sizer.appendChild(s),L=="over")N=r.top;else if(L=="above"||L=="near"){var X=Math.max(P.wrapper.clientHeight,this.doc.height),Q=Math.max(P.sizer.clientWidth,P.lineSpace.clientWidth);(L=="above"||r.bottom+s.offsetHeight>X)&&r.top>s.offsetHeight?N=r.top-s.offsetHeight:r.bottom+s.offsetHeight<=X&&(N=r.bottom),K+s.offsetWidth>Q&&(K=Q-s.offsetWidth)}s.style.top=N+"px",s.style.left=s.style.right="",O=="right"?(K=P.sizer.clientWidth-s.offsetWidth,s.style.right="0px"):(O=="left"?K=0:O=="middle"&&(K=(P.sizer.clientWidth-s.offsetWidth)/2),s.style.left=K+"px"),v&&gu(this,{left:K,top:N,right:K+s.offsetWidth,bottom:N+s.offsetHeight})},triggerOnKeyDown:Ft(bl),triggerOnKeyPress:Ft(Cl),triggerOnKeyUp:Sl,triggerOnMouseDown:Ft(wl),execCommand:function(r){if(In.hasOwnProperty(r))return In[r].call(null,this)},triggerElectric:Ft(function(r){Ml(this,r)}),findPosH:function(r,s,v,L){var O=1;s<0&&(O=-1,s=-s);for(var P=Oe(this.doc,r),N=0;N0&&K(v.charAt(L-1));)--L;for(;O.5||this.options.lineWrapping)&&Wo(this),ze(this,"refresh",this)}),swapDoc:Ft(function(r){var s=this.doc;return s.cm=null,this.state.selectingText&&this.state.selectingText(),Na(this,r),mn(this),this.display.input.reset(),Sn(this,r.scrollLeft,r.scrollTop),this.curOp.forceScroll=!0,mt(this,"swapDoc",this,s),s}),phrase:function(r){var s=this.options.phrases;return s&&Object.prototype.hasOwnProperty.call(s,r)?s[r]:r},getInputField:function(){return this.display.input.getField()},getWrapperElement:function(){return this.display.wrapper},getScrollerElement:function(){return this.display.scroller},getGutterElement:function(){return this.display.gutters}},Ot(e),e.registerHelper=function(r,s,v){i.hasOwnProperty(r)||(i[r]=e[r]={_global:[]}),i[r][s]=v},e.registerGlobalHelper=function(r,s,v,L){e.registerHelper(r,s,L),i[r]._global.push({pred:v,val:L})}}function hs(e,t,i,r,s){var v=t,L=i,O=Le(e,t.line),P=s&&e.direction=="rtl"?-i:i;function N(){var Se=t.line+P;return Se=e.first+e.size?!1:(t=new ie(Se,t.ch,t.sticky),O=Le(e,Se))}function K(Se){var me;if(r=="codepoint"){var Ce=O.text.charCodeAt(t.ch+(i>0?0:-1));if(isNaN(Ce))me=null;else{var Me=i>0?Ce>=55296&&Ce<56320:Ce>=56320&&Ce<57343;me=new ie(t.line,Math.max(0,Math.min(O.text.length,t.ch+i*(Me?2:1))),-i)}}else s?me=ef(e.cm,O,t,i):me=ns(O,t,i);if(me==null)if(!Se&&N())t=os(s,e.cm,O,t.line,P);else return!1;else t=me;return!0}if(r=="char"||r=="codepoint")K();else if(r=="column")K(!0);else if(r=="word"||r=="group")for(var X=null,Q=r=="group",J=e.cm&&e.cm.getHelper(t,"wordChars"),oe=!0;!(i<0&&!K(!oe));oe=!1){var ue=O.text.charAt(t.ch)||` +`,pe=lr(ue,J)?"w":Q&&ue==` +`?"n":!Q||/\s/.test(ue)?null:"p";if(Q&&!oe&&!pe&&(pe="s"),X&&X!=pe){i<0&&(i=1,K(),t.sticky="after");break}if(pe&&(X=pe),i>0&&!K(!oe))break}var ye=so(e,t,v,L,!0);return He(v,ye)&&(ye.hitSide=!0),ye}function Dl(e,t,i,r){var s=e.doc,v=t.left,L;if(r=="page"){var O=Math.min(e.display.wrapper.clientHeight,ve(e).innerHeight||s(e).documentElement.clientHeight),P=Math.max(O-.5*Gi(e.display),3);L=(i>0?t.bottom:t.top)+i*P}else r=="line"&&(L=i>0?t.bottom+3:t.top-3);for(var N;N=Po(e,v,L),!!N.outside;){if(i<0?L<=0:L>=s.height){N.hitSide=!0;break}L+=i*5}return N}var Ne=function(e){this.cm=e,this.lastAnchorNode=this.lastAnchorOffset=this.lastFocusNode=this.lastFocusOffset=null,this.polling=new Ie,this.composing=null,this.gracePeriod=!1,this.readDOMTimeout=null};Ne.prototype.init=function(e){var t=this,i=this,r=i.cm,s=i.div=e.lineDiv;s.contentEditable=!0,fs(s,r.options.spellcheck,r.options.autocorrect,r.options.autocapitalize);function v(O){for(var P=O.target;P;P=P.parentNode){if(P==s)return!0;if(/\bCodeMirror-(?:line)?widget\b/.test(P.className))break}return!1}Te(s,"paste",function(O){!v(O)||Ue(r,O)||Al(O,r)||_<=11&&setTimeout(bt(r,function(){return t.updateFromDOM()}),20)}),Te(s,"compositionstart",function(O){t.composing={data:O.data,done:!1}}),Te(s,"compositionupdate",function(O){t.composing||(t.composing={data:O.data,done:!1})}),Te(s,"compositionend",function(O){t.composing&&(O.data!=t.composing.data&&t.readFromDOMSoon(),t.composing.done=!0)}),Te(s,"touchstart",function(){return i.forceCompositionEnd()}),Te(s,"input",function(){t.composing||t.readFromDOMSoon()});function L(O){if(!(!v(O)||Ue(r,O))){if(r.somethingSelected())ho({lineWise:!1,text:r.getSelections()}),O.type=="cut"&&r.replaceSelection("",null,"cut");else if(r.options.lineWiseCopyCut){var P=Rl(r);ho({lineWise:!0,text:P.text}),O.type=="cut"&&r.operation(function(){r.setSelections(P.ranges,0,Y),r.replaceSelection("",null,"cut")})}else return;if(O.clipboardData){O.clipboardData.clearData();var N=Fr.text.join(` +`);if(O.clipboardData.setData("Text",N),O.clipboardData.getData("Text")==N){O.preventDefault();return}}var K=Ol(),X=K.firstChild;fs(X),r.display.lineSpace.insertBefore(K,r.display.lineSpace.firstChild),X.value=Fr.text.join(` +`);var Q=G(q(s));ee(X),setTimeout(function(){r.display.lineSpace.removeChild(K),Q.focus(),Q==s&&i.showPrimarySelection()},50)}}Te(s,"copy",L),Te(s,"cut",L)},Ne.prototype.screenReaderLabelChanged=function(e){e?this.div.setAttribute("aria-label",e):this.div.removeAttribute("aria-label")},Ne.prototype.prepareSelection=function(){var e=wa(this.cm,!1);return e.focus=G(q(this.div))==this.div,e},Ne.prototype.showSelection=function(e,t){!e||!this.cm.display.view.length||((e.focus||t)&&this.showPrimarySelection(),this.showMultipleSelections(e))},Ne.prototype.getSelection=function(){return this.cm.display.wrapper.ownerDocument.getSelection()},Ne.prototype.showPrimarySelection=function(){var e=this.getSelection(),t=this.cm,i=t.doc.sel.primary(),r=i.from(),s=i.to();if(t.display.viewTo==t.display.viewFrom||r.line>=t.display.viewTo||s.line=t.display.viewFrom&&Bl(t,r)||{node:O[0].measure.map[2],offset:0},N=s.linee.firstLine()&&(r=ie(r.line-1,Le(e.doc,r.line-1).length)),s.ch==Le(e.doc,s.line).text.length&&s.linet.viewTo-1)return!1;var v,L,O;r.line==t.viewFrom||(v=Ai(e,r.line))==0?(L=j(t.view[0].line),O=t.view[0].node):(L=j(t.view[v].line),O=t.view[v-1].node.nextSibling);var P=Ai(e,s.line),N,K;if(P==t.view.length-1?(N=t.viewTo-1,K=t.lineDiv.lastChild):(N=j(t.view[P+1].line)-1,K=t.view[P+1].node.previousSibling),!O)return!1;for(var X=e.doc.splitLines(Cf(e,O,K,L,N)),Q=tr(e.doc,ie(L,0),ie(N,Le(e.doc,N).text.length));X.length>1&&Q.length>1;)if(Re(X)==Re(Q))X.pop(),Q.pop(),N--;else if(X[0]==Q[0])X.shift(),Q.shift(),L++;else break;for(var J=0,oe=0,ue=X[0],pe=Q[0],ye=Math.min(ue.length,pe.length);Jr.ch&&Se.charCodeAt(Se.length-oe-1)==me.charCodeAt(me.length-oe-1);)J--,oe++;X[X.length-1]=Se.slice(0,Se.length-oe).replace(/^\u200b+/,""),X[0]=X[0].slice(J).replace(/\u200b+$/,"");var Me=ie(L,J),Ae=ie(N,Q.length?Re(Q).length-oe:0);if(X.length>1||X[0]||be(Me,Ae))return en(e.doc,X,Me,Ae,"+input"),!0},Ne.prototype.ensurePolled=function(){this.forceCompositionEnd()},Ne.prototype.reset=function(){this.forceCompositionEnd()},Ne.prototype.forceCompositionEnd=function(){this.composing&&(clearTimeout(this.readDOMTimeout),this.composing=null,this.updateFromDOM(),this.div.blur(),this.div.focus())},Ne.prototype.readFromDOMSoon=function(){var e=this;this.readDOMTimeout==null&&(this.readDOMTimeout=setTimeout(function(){if(e.readDOMTimeout=null,e.composing)if(e.composing.done)e.composing=null;else return;e.updateFromDOM()},80))},Ne.prototype.updateFromDOM=function(){var e=this;(this.cm.isReadOnly()||!this.pollContent())&&sr(this.cm,function(){return Kt(e.cm)})},Ne.prototype.setUneditable=function(e){e.contentEditable="false"},Ne.prototype.onKeyPress=function(e){e.charCode==0||this.composing||(e.preventDefault(),this.cm.isReadOnly()||bt(this.cm,us)(this.cm,String.fromCharCode(e.charCode==null?e.keyCode:e.charCode),0))},Ne.prototype.readOnlyChanged=function(e){this.div.contentEditable=String(e!="nocursor")},Ne.prototype.onContextMenu=function(){},Ne.prototype.resetPosition=function(){},Ne.prototype.needsContentAttribute=!0;function Bl(e,t){var i=Oo(e,t.line);if(!i||i.hidden)return null;var r=Le(e.doc,t.line),s=ca(i,r,t.line),v=Be(r,e.doc.direction),L="left";if(v){var O=fr(v,t.ch);L=O%2?"right":"left"}var P=ha(s.map,t.ch,L);return P.offset=P.collapse=="right"?P.end:P.start,P}function Sf(e){for(var t=e;t;t=t.parentNode)if(/CodeMirror-gutter-wrapper/.test(t.className))return!0;return!1}function sn(e,t){return t&&(e.bad=!0),e}function Cf(e,t,i,r,s){var v="",L=!1,O=e.doc.lineSeparator(),P=!1;function N(J){return function(oe){return oe.id==J}}function K(){L&&(v+=O,P&&(v+=O),L=P=!1)}function X(J){J&&(K(),v+=J)}function Q(J){if(J.nodeType==1){var oe=J.getAttribute("cm-text");if(oe){X(oe);return}var ue=J.getAttribute("cm-marker"),pe;if(ue){var ye=e.findMarks(ie(r,0),ie(s+1,0),N(+ue));ye.length&&(pe=ye[0].find(0))&&X(tr(e.doc,pe.from,pe.to).join(O));return}if(J.getAttribute("contenteditable")=="false")return;var Se=/^(pre|div|p|li|table|br)$/i.test(J.nodeName);if(!/^br$/i.test(J.nodeName)&&J.textContent.length==0)return;Se&&K();for(var me=0;me=9&&t.hasSelection&&(t.hasSelection=null),i.poll()}),Te(s,"paste",function(L){Ue(r,L)||Al(L,r)||(r.state.pasteIncoming=+new Date,i.fastPoll())});function v(L){if(!Ue(r,L)){if(r.somethingSelected())ho({lineWise:!1,text:r.getSelections()});else if(r.options.lineWiseCopyCut){var O=Rl(r);ho({lineWise:!0,text:O.text}),L.type=="cut"?r.setSelections(O.ranges,null,Y):(i.prevInput="",s.value=O.text.join(` +`),ee(s))}else return;L.type=="cut"&&(r.state.cutIncoming=+new Date)}}Te(s,"cut",v),Te(s,"copy",v),Te(e.scroller,"paste",function(L){if(!(ti(e,L)||Ue(r,L))){if(!s.dispatchEvent){r.state.pasteIncoming=+new Date,i.focus();return}var O=new Event("paste");O.clipboardData=L.clipboardData,s.dispatchEvent(O)}}),Te(e.lineSpace,"selectstart",function(L){ti(e,L)||tt(L)}),Te(s,"compositionstart",function(){var L=r.getCursor("from");i.composing&&i.composing.range.clear(),i.composing={start:L,range:r.markText(L,r.getCursor("to"),{className:"CodeMirror-composing"})}}),Te(s,"compositionend",function(){i.composing&&(i.poll(),i.composing.range.clear(),i.composing=null)})},it.prototype.createField=function(e){this.wrapper=Ol(),this.textarea=this.wrapper.firstChild;var t=this.cm.options;fs(this.textarea,t.spellcheck,t.autocorrect,t.autocapitalize)},it.prototype.screenReaderLabelChanged=function(e){e?this.textarea.setAttribute("aria-label",e):this.textarea.removeAttribute("aria-label")},it.prototype.prepareSelection=function(){var e=this.cm,t=e.display,i=e.doc,r=wa(e);if(e.options.moveInputWithCursor){var s=Ir(e,i.sel.primary().head,"div"),v=t.wrapper.getBoundingClientRect(),L=t.lineDiv.getBoundingClientRect();r.teTop=Math.max(0,Math.min(t.wrapper.clientHeight-10,s.top+L.top-v.top)),r.teLeft=Math.max(0,Math.min(t.wrapper.clientWidth-10,s.left+L.left-v.left))}return r},it.prototype.showSelection=function(e){var t=this.cm,i=t.display;I(i.cursorDiv,e.cursors),I(i.selectionDiv,e.selection),e.teTop!=null&&(this.wrapper.style.top=e.teTop+"px",this.wrapper.style.left=e.teLeft+"px")},it.prototype.reset=function(e){if(!(this.contextMenuPending||this.composing&&e)){var t=this.cm;if(this.resetting=!0,t.somethingSelected()){this.prevInput="";var i=t.getSelection();this.textarea.value=i,t.state.focused&&ee(this.textarea),y&&_>=9&&(this.hasSelection=i)}else e||(this.prevInput=this.textarea.value="",y&&_>=9&&(this.hasSelection=null));this.resetting=!1}},it.prototype.getField=function(){return this.textarea},it.prototype.supportsTouch=function(){return!1},it.prototype.focus=function(){if(this.cm.options.readOnly!="nocursor"&&(!n||G(q(this.textarea))!=this.textarea))try{this.textarea.focus()}catch{}},it.prototype.blur=function(){this.textarea.blur()},it.prototype.resetPosition=function(){this.wrapper.style.top=this.wrapper.style.left=0},it.prototype.receivedFocus=function(){this.slowPoll()},it.prototype.slowPoll=function(){var e=this;this.pollingFast||this.polling.set(this.cm.options.pollInterval,function(){e.poll(),e.cm.state.focused&&e.slowPoll()})},it.prototype.fastPoll=function(){var e=!1,t=this;t.pollingFast=!0;function i(){var r=t.poll();!r&&!e?(e=!0,t.polling.set(60,i)):(t.pollingFast=!1,t.slowPoll())}t.polling.set(20,i)},it.prototype.poll=function(){var e=this,t=this.cm,i=this.textarea,r=this.prevInput;if(this.contextMenuPending||this.resetting||!t.state.focused||pr(i)&&!r&&!this.composing||t.isReadOnly()||t.options.disableInput||t.state.keySeq)return!1;var s=i.value;if(s==r&&!t.somethingSelected())return!1;if(y&&_>=9&&this.hasSelection===s||a&&/[\uf700-\uf7ff]/.test(s))return t.display.input.reset(),!1;if(t.doc.sel==t.display.selForContextMenu){var v=s.charCodeAt(0);if(v==8203&&!r&&(r="\u200B"),v==8666)return this.reset(),this.cm.execCommand("undo")}for(var L=0,O=Math.min(r.length,s.length);L1e3||s.indexOf(` +`)>-1?i.value=e.prevInput="":e.prevInput=s,e.composing&&(e.composing.range.clear(),e.composing.range=t.markText(e.composing.start,t.getCursor("to"),{className:"CodeMirror-composing"}))}),!0},it.prototype.ensurePolled=function(){this.pollingFast&&this.poll()&&(this.pollingFast=!1)},it.prototype.onKeyPress=function(){y&&_>=9&&(this.hasSelection=null),this.fastPoll()},it.prototype.onContextMenu=function(e){var t=this,i=t.cm,r=i.display,s=t.textarea;t.contextMenuPending&&t.contextMenuPending();var v=Ti(i,e),L=r.scroller.scrollTop;if(!v||p)return;var O=i.options.resetSelectionOnContextMenu;O&&i.doc.sel.contains(v)==-1&&bt(i,Mt)(i.doc,vi(v),Y);var P=s.style.cssText,N=t.wrapper.style.cssText,K=t.wrapper.offsetParent.getBoundingClientRect();t.wrapper.style.cssText="position: static",s.style.cssText=`position: absolute; width: 30px; height: 30px; + top: `+(e.clientY-K.top-5)+"px; left: "+(e.clientX-K.left-5)+`px; + z-index: 1000; background: `+(y?"rgba(255, 255, 255, .05)":"transparent")+`; + outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);`;var X;g&&(X=s.ownerDocument.defaultView.scrollY),r.input.focus(),g&&s.ownerDocument.defaultView.scrollTo(null,X),r.input.reset(),i.somethingSelected()||(s.value=t.prevInput=" "),t.contextMenuPending=J,r.selForContextMenu=i.doc.sel,clearTimeout(r.detectingSelectAll);function Q(){if(s.selectionStart!=null){var ue=i.somethingSelected(),pe="\u200B"+(ue?s.value:"");s.value="\u21DA",s.value=pe,t.prevInput=ue?"":"\u200B",s.selectionStart=1,s.selectionEnd=pe.length,r.selForContextMenu=i.doc.sel}}function J(){if(t.contextMenuPending==J&&(t.contextMenuPending=!1,t.wrapper.style.cssText=N,s.style.cssText=P,y&&_<9&&r.scrollbars.setScrollTop(r.scroller.scrollTop=L),s.selectionStart!=null)){(!y||y&&_<9)&&Q();var ue=0,pe=function(){r.selForContextMenu==i.doc.sel&&s.selectionStart==0&&s.selectionEnd>0&&t.prevInput=="\u200B"?bt(i,Qa)(i):ue++<10?r.detectingSelectAll=setTimeout(pe,500):(r.selForContextMenu=null,r.input.reset())};r.detectingSelectAll=setTimeout(pe,200)}}if(y&&_>=9&&Q(),E){hr(e);var oe=function(){et(window,"mouseup",oe),setTimeout(J,20)};Te(window,"mouseup",oe)}else setTimeout(J,50)},it.prototype.readOnlyChanged=function(e){e||this.reset(),this.textarea.disabled=e=="nocursor",this.textarea.readOnly=!!e},it.prototype.setUneditable=function(){},it.prototype.needsContentAttribute=!1;function Lf(e,t){if(t=t?ke(t):{},t.value=e.value,!t.tabindex&&e.tabIndex&&(t.tabindex=e.tabIndex),!t.placeholder&&e.placeholder&&(t.placeholder=e.placeholder),t.autofocus==null){var i=G(q(e));t.autofocus=i==e||e.getAttribute("autofocus")!=null&&i==document.body}function r(){e.value=O.getValue()}var s;if(e.form&&(Te(e.form,"submit",r),!t.leaveSubmitMethodAlone)){var v=e.form;s=v.submit;try{var L=v.submit=function(){r(),v.submit=s,v.submit(),v.submit=L}}catch{}}t.finishInit=function(P){P.save=r,P.getTextArea=function(){return e},P.toTextArea=function(){P.toTextArea=isNaN,r(),e.parentNode.removeChild(P.getWrapperElement()),e.style.display="",e.form&&(et(e.form,"submit",r),!t.leaveSubmitMethodAlone&&typeof e.form.submit=="function"&&(e.form.submit=s))}},e.style.display="none";var O=Ye(function(P){return e.parentNode.insertBefore(P,e.nextSibling)},t);return O}function xf(e){e.off=et,e.on=Te,e.wheelEventPixels=Ru,e.Doc=Gt,e.splitLines=Tt,e.countColumn=$,e.findColumn=Ee,e.isWordChar=br,e.Pass=V,e.signal=ze,e.Line=Ui,e.changeEnd=gi,e.scrollbarModel=Aa,e.Pos=ie,e.cmpPos=be,e.modes=Mr,e.mimeModes=Pt,e.resolveMode=Rr,e.getMode=Or,e.modeExtensions=vr,e.extendMode=Dr,e.copyState=zt,e.startState=Br,e.innerMode=jr,e.commands=In,e.keyMap=ii,e.keyName=vl,e.isModifierKey=dl,e.lookupKey=rn,e.normalizeKeyMap=Qu,e.StringStream=qe,e.SharedTextMarker=Dn,e.TextMarker=yi,e.LineWidget=On,e.e_preventDefault=tt,e.e_stopPropagation=Tr,e.e_stop=hr,e.addClass=te,e.contains=z,e.rmClass=D,e.keyNames=mi}gf(Ye),bf(Ye);var kf="iter insert remove copy getEditor constructor".split(" ");for(var vo in Gt.prototype)Gt.prototype.hasOwnProperty(vo)&&ge(kf,vo)<0&&(Ye.prototype[vo]=function(e){return function(){return e.apply(this.doc,arguments)}}(Gt.prototype[vo]));return Ot(Gt),Ye.inputStyles={textarea:it,contenteditable:Ne},Ye.defineMode=function(e){!Ye.defaults.mode&&e!="null"&&(Ye.defaults.mode=e),It.apply(this,arguments)},Ye.defineMIME=wr,Ye.defineMode("null",function(){return{token:function(e){return e.skipToEnd()}}}),Ye.defineMIME("text/plain","null"),Ye.defineExtension=function(e,t){Ye.prototype[e]=t},Ye.defineDocExtension=function(e,t){Gt.prototype[e]=t},Ye.fromTextArea=Lf,xf(Ye),Ye.version="5.65.16",Ye})});var Ul=Nt((jl,zl)=>{(function(U){typeof jl=="object"&&typeof zl=="object"?U($t()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],U):U(CodeMirror)})(function(U){"use strict";U.defineMode("shell",function(){var B={};function R(p,w){for(var b=0;b1&&p.eat("$");var b=p.next();return/['"({]/.test(b)?(w.tokens[0]=_(b,b=="("?"quote":b=="{"?"def":"string"),u(p,w)):(/\d/.test(b)||p.eatWhile(/\w/),w.tokens.shift(),"def")};function C(p){return function(w,b){return w.sol()&&w.string==p&&b.tokens.shift(),w.skipToEnd(),"string-2"}}function u(p,w){return(w.tokens[0]||y)(p,w)}return{startState:function(){return{tokens:[]}},token:function(p,w){return u(p,w)},closeBrackets:"()[]{}''\"\"``",lineComment:"#",fold:"brace"}}),U.defineMIME("text/x-sh","shell"),U.defineMIME("application/x-sh","shell")})});var Es=Nt((Gl,Zl)=>{(function(U){typeof Gl=="object"&&typeof Zl=="object"?U($t()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],U):U(CodeMirror)})(function(U){"use strict";U.defineMode("javascript",function(B,R){var f=B.indentUnit,k=R.statementIndent,m=R.jsonld,y=R.json||m,_=R.trackScope!==!1,g=R.typescript,x=R.wordCharacters||/[\w$\xa1-\uffff]/,C=function(){function j(Je){return{type:Je,style:"keyword"}}var Z=j("keyword a"),ae=j("keyword b"),he=j("keyword c"),ie=j("keyword d"),be=j("operator"),He={type:"atom",style:"atom"};return{if:j("if"),while:Z,with:Z,else:ae,do:ae,try:ae,finally:ae,return:ie,break:ie,continue:ie,new:j("new"),delete:he,void:he,throw:he,debugger:j("debugger"),var:j("var"),const:j("var"),let:j("var"),function:j("function"),catch:j("catch"),for:j("for"),switch:j("switch"),case:j("case"),default:j("default"),in:be,typeof:be,instanceof:be,true:He,false:He,null:He,undefined:He,NaN:He,Infinity:He,this:j("this"),class:j("class"),super:j("atom"),yield:he,export:j("export"),import:j("import"),extends:he,await:he}}(),u=/[+\-*&%=<>!?|~^@]/,p=/^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/;function w(j){for(var Z=!1,ae,he=!1;(ae=j.next())!=null;){if(!Z){if(ae=="/"&&!he)return;ae=="["?he=!0:he&&ae=="]"&&(he=!1)}Z=!Z&&ae=="\\"}}var b,c;function o(j,Z,ae){return b=j,c=ae,Z}function l(j,Z){var ae=j.next();if(ae=='"'||ae=="'")return Z.tokenize=n(ae),Z.tokenize(j,Z);if(ae=="."&&j.match(/^\d[\d_]*(?:[eE][+\-]?[\d_]+)?/))return o("number","number");if(ae=="."&&j.match(".."))return o("spread","meta");if(/[\[\]{}\(\),;\:\.]/.test(ae))return o(ae);if(ae=="="&&j.eat(">"))return o("=>","operator");if(ae=="0"&&j.match(/^(?:x[\dA-Fa-f_]+|o[0-7_]+|b[01_]+)n?/))return o("number","number");if(/\d/.test(ae))return j.match(/^[\d_]*(?:n|(?:\.[\d_]*)?(?:[eE][+\-]?[\d_]+)?)?/),o("number","number");if(ae=="/")return j.eat("*")?(Z.tokenize=a,a(j,Z)):j.eat("/")?(j.skipToEnd(),o("comment","comment")):Lt(j,Z,1)?(w(j),j.match(/^\b(([gimyus])(?![gimyus]*\2))+\b/),o("regexp","string-2")):(j.eat("="),o("operator","operator",j.current()));if(ae=="`")return Z.tokenize=h,h(j,Z);if(ae=="#"&&j.peek()=="!")return j.skipToEnd(),o("meta","meta");if(ae=="#"&&j.eatWhile(x))return o("variable","property");if(ae=="<"&&j.match("!--")||ae=="-"&&j.match("->")&&!/\S/.test(j.string.slice(0,j.start)))return j.skipToEnd(),o("comment","comment");if(u.test(ae))return(ae!=">"||!Z.lexical||Z.lexical.type!=">")&&(j.eat("=")?(ae=="!"||ae=="=")&&j.eat("="):/[<>*+\-|&?]/.test(ae)&&(j.eat(ae),ae==">"&&j.eat(ae))),ae=="?"&&j.eat(".")?o("."):o("operator","operator",j.current());if(x.test(ae)){j.eatWhile(x);var he=j.current();if(Z.lastType!="."){if(C.propertyIsEnumerable(he)){var ie=C[he];return o(ie.type,ie.style,he)}if(he=="async"&&j.match(/^(\s|\/\*([^*]|\*(?!\/))*?\*\/)*[\[\(\w]/,!1))return o("async","keyword",he)}return o("variable","variable",he)}}function n(j){return function(Z,ae){var he=!1,ie;if(m&&Z.peek()=="@"&&Z.match(p))return ae.tokenize=l,o("jsonld-keyword","meta");for(;(ie=Z.next())!=null&&!(ie==j&&!he);)he=!he&&ie=="\\";return he||(ae.tokenize=l),o("string","string")}}function a(j,Z){for(var ae=!1,he;he=j.next();){if(he=="/"&&ae){Z.tokenize=l;break}ae=he=="*"}return o("comment","comment")}function h(j,Z){for(var ae=!1,he;(he=j.next())!=null;){if(!ae&&(he=="`"||he=="$"&&j.eat("{"))){Z.tokenize=l;break}ae=!ae&&he=="\\"}return o("quasi","string-2",j.current())}var d="([{}])";function S(j,Z){Z.fatArrowAt&&(Z.fatArrowAt=null);var ae=j.string.indexOf("=>",j.start);if(!(ae<0)){if(g){var he=/:\s*(?:\w+(?:<[^>]*>|\[\])?|\{[^}]*\})\s*$/.exec(j.string.slice(j.start,ae));he&&(ae=he.index)}for(var ie=0,be=!1,He=ae-1;He>=0;--He){var Je=j.string.charAt(He),vt=d.indexOf(Je);if(vt>=0&&vt<3){if(!ie){++He;break}if(--ie==0){Je=="("&&(be=!0);break}}else if(vt>=3&&vt<6)++ie;else if(x.test(Je))be=!0;else if(/["'\/`]/.test(Je))for(;;--He){if(He==0)return;var Ur=j.string.charAt(He-1);if(Ur==Je&&j.string.charAt(He-2)!="\\"){He--;break}}else if(be&&!ie){++He;break}}be&&!ie&&(Z.fatArrowAt=He)}}var T={atom:!0,number:!0,variable:!0,string:!0,regexp:!0,this:!0,import:!0,"jsonld-keyword":!0};function E(j,Z,ae,he,ie,be){this.indented=j,this.column=Z,this.type=ae,this.prev=ie,this.info=be,he!=null&&(this.align=he)}function M(j,Z){if(!_)return!1;for(var ae=j.localVars;ae;ae=ae.next)if(ae.name==Z)return!0;for(var he=j.context;he;he=he.prev)for(var ae=he.vars;ae;ae=ae.next)if(ae.name==Z)return!0}function D(j,Z,ae,he,ie){var be=j.cc;for(W.state=j,W.stream=ie,W.marked=null,W.cc=be,W.style=Z,j.lexical.hasOwnProperty("align")||(j.lexical.align=!0);;){var He=be.length?be.pop():y?ge:$;if(He(ae,he)){for(;be.length&&be[be.length-1].lex;)be.pop()();return W.marked?W.marked:ae=="variable"&&M(j,he)?"variable-2":Z}}}var W={state:null,column:null,marked:null,cc:null};function I(){for(var j=arguments.length-1;j>=0;j--)W.cc.push(arguments[j])}function A(){return I.apply(null,arguments),!0}function H(j,Z){for(var ae=Z;ae;ae=ae.next)if(ae.name==j)return!0;return!1}function F(j){var Z=W.state;if(W.marked="def",!!_){if(Z.context){if(Z.lexical.info=="var"&&Z.context&&Z.context.block){var ae=z(j,Z.context);if(ae!=null){Z.context=ae;return}}else if(!H(j,Z.localVars)){Z.localVars=new ce(j,Z.localVars);return}}R.globalVars&&!H(j,Z.globalVars)&&(Z.globalVars=new ce(j,Z.globalVars))}}function z(j,Z){if(Z)if(Z.block){var ae=z(j,Z.prev);return ae?ae==Z.prev?Z:new te(ae,Z.vars,!0):null}else return H(j,Z.vars)?Z:new te(Z.prev,new ce(j,Z.vars),!1);else return null}function G(j){return j=="public"||j=="private"||j=="protected"||j=="abstract"||j=="readonly"}function te(j,Z,ae){this.prev=j,this.vars=Z,this.block=ae}function ce(j,Z){this.name=j,this.next=Z}var ee=new ce("this",new ce("arguments",null));function fe(){W.state.context=new te(W.state.context,W.state.localVars,!1),W.state.localVars=ee}function _e(){W.state.context=new te(W.state.context,W.state.localVars,!0),W.state.localVars=null}fe.lex=_e.lex=!0;function q(){W.state.localVars=W.state.context.vars,W.state.context=W.state.context.prev}q.lex=!0;function ve(j,Z){var ae=function(){var he=W.state,ie=he.indented;if(he.lexical.type=="stat")ie=he.lexical.indented;else for(var be=he.lexical;be&&be.type==")"&&be.align;be=be.prev)ie=be.indented;he.lexical=new E(ie,W.stream.column(),j,null,he.lexical,Z)};return ae.lex=!0,ae}function de(){var j=W.state;j.lexical.prev&&(j.lexical.type==")"&&(j.indented=j.lexical.indented),j.lexical=j.lexical.prev)}de.lex=!0;function ke(j){function Z(ae){return ae==j?A():j==";"||ae=="}"||ae==")"||ae=="]"?I():A(Z)}return Z}function $(j,Z){return j=="var"?A(ve("vardef",Z),Tr,ke(";"),de):j=="keyword a"?A(ve("form"),V,$,de):j=="keyword b"?A(ve("form"),$,de):j=="keyword d"?W.stream.match(/^\s*$/,!1)?A():A(ve("stat"),se,ke(";"),de):j=="debugger"?A(ke(";")):j=="{"?A(ve("}"),_e,Qt,de,q):j==";"?A():j=="if"?(W.state.lexical.info=="else"&&W.state.cc[W.state.cc.length-1]==de&&W.state.cc.pop()(),A(ve("form"),V,$,de,Ar)):j=="function"?A(Tt):j=="for"?A(ve("form"),_e,$r,$,q,de):j=="class"||g&&Z=="interface"?(W.marked="keyword",A(ve("form",j=="class"?j:Z),Mr,de)):j=="variable"?g&&Z=="declare"?(W.marked="keyword",A($)):g&&(Z=="module"||Z=="enum"||Z=="type")&&W.stream.match(/^\s*\w/,!1)?(W.marked="keyword",Z=="enum"?A(Le):Z=="type"?A(Jr,ke("operator"),Be,ke(";")):A(ve("form"),lt,ke("{"),ve("}"),Qt,de,de)):g&&Z=="namespace"?(W.marked="keyword",A(ve("form"),ge,$,de)):g&&Z=="abstract"?(W.marked="keyword",A($)):A(ve("stat"),Jt):j=="switch"?A(ve("form"),V,ke("{"),ve("}","switch"),_e,Qt,de,de,q):j=="case"?A(ge,ke(":")):j=="default"?A(ke(":")):j=="catch"?A(ve("form"),fe,Ie,$,de,q):j=="export"?A(ve("stat"),Rr,de):j=="import"?A(ve("stat"),vr,de):j=="async"?A($):Z=="@"?A(ge,$):I(ve("stat"),ge,ke(";"),de)}function Ie(j){if(j=="(")return A(Bt,ke(")"))}function ge(j,Z){return Y(j,Z,!1)}function le(j,Z){return Y(j,Z,!0)}function V(j){return j!="("?I():A(ve(")"),se,ke(")"),de)}function Y(j,Z,ae){if(W.state.fatArrowAt==W.stream.start){var he=ae?Ze:Re;if(j=="(")return A(fe,ve(")"),Xe(Bt,")"),de,ke("=>"),he,q);if(j=="variable")return I(fe,lt,ke("=>"),he,q)}var ie=ae?Ee:xe;return T.hasOwnProperty(j)?A(ie):j=="function"?A(Tt,ie):j=="class"||g&&Z=="interface"?(W.marked="keyword",A(ve("form"),ui,de)):j=="keyword c"||j=="async"?A(ae?le:ge):j=="("?A(ve(")"),se,ke(")"),de,ie):j=="operator"||j=="spread"?A(ae?le:ge):j=="["?A(ve("]"),qe,de,ie):j=="{"?Sr(lr,"}",null,ie):j=="quasi"?I(De,ie):j=="new"?A(we(ae)):A()}function se(j){return j.match(/[;\}\)\],]/)?I():I(ge)}function xe(j,Z){return j==","?A(se):Ee(j,Z,!1)}function Ee(j,Z,ae){var he=ae==!1?xe:Ee,ie=ae==!1?ge:le;if(j=="=>")return A(fe,ae?Ze:Re,q);if(j=="operator")return/\+\+|--/.test(Z)||g&&Z=="!"?A(he):g&&Z=="<"&&W.stream.match(/^([^<>]|<[^<>]*>)*>\s*\(/,!1)?A(ve(">"),Xe(Be,">"),de,he):Z=="?"?A(ge,ke(":"),ie):A(ie);if(j=="quasi")return I(De,he);if(j!=";"){if(j=="(")return Sr(le,")","call",he);if(j==".")return A(br,he);if(j=="[")return A(ve("]"),se,ke("]"),de,he);if(g&&Z=="as")return W.marked="keyword",A(Be,he);if(j=="regexp")return W.state.lastType=W.marked="operator",W.stream.backUp(W.stream.pos-W.stream.start-1),A(ie)}}function De(j,Z){return j!="quasi"?I():Z.slice(Z.length-2)!="${"?A(De):A(se,je)}function je(j){if(j=="}")return W.marked="string-2",W.state.tokenize=h,A(De)}function Re(j){return S(W.stream,W.state),I(j=="{"?$:ge)}function Ze(j){return S(W.stream,W.state),I(j=="{"?$:le)}function we(j){return function(Z){return Z=="."?A(j?dt:$e):Z=="variable"&&g?A(pt,j?Ee:xe):I(j?le:ge)}}function $e(j,Z){if(Z=="target")return W.marked="keyword",A(xe)}function dt(j,Z){if(Z=="target")return W.marked="keyword",A(Ee)}function Jt(j){return j==":"?A(de,$):I(xe,ke(";"),de)}function br(j){if(j=="variable")return W.marked="property",A()}function lr(j,Z){if(j=="async")return W.marked="property",A(lr);if(j=="variable"||W.style=="keyword"){if(W.marked="property",Z=="get"||Z=="set")return A(ai);var ae;return g&&W.state.fatArrowAt==W.stream.start&&(ae=W.stream.match(/^\s*:\s*/,!1))&&(W.state.fatArrowAt=W.stream.pos+ae[0].length),A(cr)}else{if(j=="number"||j=="string")return W.marked=m?"property":W.style+" property",A(cr);if(j=="jsonld-keyword")return A(cr);if(g&&G(Z))return W.marked="keyword",A(lr);if(j=="[")return A(ge,ur,ke("]"),cr);if(j=="spread")return A(le,cr);if(Z=="*")return W.marked="keyword",A(lr);if(j==":")return I(cr)}}function ai(j){return j!="variable"?I(cr):(W.marked="property",A(Tt))}function cr(j){if(j==":")return A(le);if(j=="(")return I(Tt)}function Xe(j,Z,ae){function he(ie,be){if(ae?ae.indexOf(ie)>-1:ie==","){var He=W.state.lexical;return He.info=="call"&&(He.pos=(He.pos||0)+1),A(function(Je,vt){return Je==Z||vt==Z?I():I(j)},he)}return ie==Z||be==Z?A():ae&&ae.indexOf(";")>-1?I(j):A(ke(Z))}return function(ie,be){return ie==Z||be==Z?A():I(j,he)}}function Sr(j,Z,ae){for(var he=3;he"),Be);if(j=="quasi")return I(et,Et)}function Vr(j){if(j=="=>")return A(Be)}function Te(j){return j.match(/[\}\)\]]/)?A():j==","||j==";"?A(Te):I(er,Te)}function er(j,Z){if(j=="variable"||W.style=="keyword")return W.marked="property",A(er);if(Z=="?"||j=="number"||j=="string")return A(er);if(j==":")return A(Be);if(j=="[")return A(ke("variable"),Cr,ke("]"),er);if(j=="(")return I(pr,er);if(!j.match(/[;\}\)\],]/))return A()}function et(j,Z){return j!="quasi"?I():Z.slice(Z.length-2)!="${"?A(et):A(Be,ze)}function ze(j){if(j=="}")return W.marked="string-2",W.state.tokenize=h,A(et)}function Ue(j,Z){return j=="variable"&&W.stream.match(/^\s*[?:]/,!1)||Z=="?"?A(Ue):j==":"?A(Be):j=="spread"?A(Ue):I(Be)}function Et(j,Z){if(Z=="<")return A(ve(">"),Xe(Be,">"),de,Et);if(Z=="|"||j=="."||Z=="&")return A(Be);if(j=="[")return A(Be,ke("]"),Et);if(Z=="extends"||Z=="implements")return W.marked="keyword",A(Be);if(Z=="?")return A(Be,ke(":"),Be)}function pt(j,Z){if(Z=="<")return A(ve(">"),Xe(Be,">"),de,Et)}function Ot(){return I(Be,tt)}function tt(j,Z){if(Z=="=")return A(Be)}function Tr(j,Z){return Z=="enum"?(W.marked="keyword",A(Le)):I(lt,ur,Dt,ci)}function lt(j,Z){if(g&&G(Z))return W.marked="keyword",A(lt);if(j=="variable")return F(Z),A();if(j=="spread")return A(lt);if(j=="[")return Sr(Wr,"]");if(j=="{")return Sr(hr,"}")}function hr(j,Z){return j=="variable"&&!W.stream.match(/^\s*:/,!1)?(F(Z),A(Dt)):(j=="variable"&&(W.marked="property"),j=="spread"?A(lt):j=="}"?I():j=="["?A(ge,ke("]"),ke(":"),hr):A(ke(":"),lt,Dt))}function Wr(){return I(lt,Dt)}function Dt(j,Z){if(Z=="=")return A(le)}function ci(j){if(j==",")return A(Tr)}function Ar(j,Z){if(j=="keyword b"&&Z=="else")return A(ve("form","else"),$,de)}function $r(j,Z){if(Z=="await")return A($r);if(j=="(")return A(ve(")"),Nr,de)}function Nr(j){return j=="var"?A(Tr,dr):j=="variable"?A(dr):I(dr)}function dr(j,Z){return j==")"?A():j==";"?A(dr):Z=="in"||Z=="of"?(W.marked="keyword",A(ge,dr)):I(ge,dr)}function Tt(j,Z){if(Z=="*")return W.marked="keyword",A(Tt);if(j=="variable")return F(Z),A(Tt);if(j=="(")return A(fe,ve(")"),Xe(Bt,")"),de,fr,$,q);if(g&&Z=="<")return A(ve(">"),Xe(Ot,">"),de,Tt)}function pr(j,Z){if(Z=="*")return W.marked="keyword",A(pr);if(j=="variable")return F(Z),A(pr);if(j=="(")return A(fe,ve(")"),Xe(Bt,")"),de,fr,q);if(g&&Z=="<")return A(ve(">"),Xe(Ot,">"),de,pr)}function Jr(j,Z){if(j=="keyword"||j=="variable")return W.marked="type",A(Jr);if(Z=="<")return A(ve(">"),Xe(Ot,">"),de)}function Bt(j,Z){return Z=="@"&&A(ge,Bt),j=="spread"?A(Bt):g&&G(Z)?(W.marked="keyword",A(Bt)):g&&j=="this"?A(ur,Dt):I(lt,ur,Dt)}function ui(j,Z){return j=="variable"?Mr(j,Z):Pt(j,Z)}function Mr(j,Z){if(j=="variable")return F(Z),A(Pt)}function Pt(j,Z){if(Z=="<")return A(ve(">"),Xe(Ot,">"),de,Pt);if(Z=="extends"||Z=="implements"||g&&j==",")return Z=="implements"&&(W.marked="keyword"),A(g?Be:ge,Pt);if(j=="{")return A(ve("}"),It,de)}function It(j,Z){if(j=="async"||j=="variable"&&(Z=="static"||Z=="get"||Z=="set"||g&&G(Z))&&W.stream.match(/^\s+#?[\w$\xa1-\uffff]/,!1))return W.marked="keyword",A(It);if(j=="variable"||W.style=="keyword")return W.marked="property",A(wr,It);if(j=="number"||j=="string")return A(wr,It);if(j=="[")return A(ge,ur,ke("]"),wr,It);if(Z=="*")return W.marked="keyword",A(It);if(g&&j=="(")return I(pr,It);if(j==";"||j==",")return A(It);if(j=="}")return A();if(Z=="@")return A(ge,It)}function wr(j,Z){if(Z=="!"||Z=="?")return A(wr);if(j==":")return A(Be,Dt);if(Z=="=")return A(le);var ae=W.state.lexical.prev,he=ae&&ae.info=="interface";return I(he?pr:Tt)}function Rr(j,Z){return Z=="*"?(W.marked="keyword",A(Br,ke(";"))):Z=="default"?(W.marked="keyword",A(ge,ke(";"))):j=="{"?A(Xe(Or,"}"),Br,ke(";")):I($)}function Or(j,Z){if(Z=="as")return W.marked="keyword",A(ke("variable"));if(j=="variable")return I(le,Or)}function vr(j){return j=="string"?A():j=="("?I(ge):j=="."?I(xe):I(Dr,zt,Br)}function Dr(j,Z){return j=="{"?Sr(Dr,"}"):(j=="variable"&&F(Z),Z=="*"&&(W.marked="keyword"),A(jr))}function zt(j){if(j==",")return A(Dr,zt)}function jr(j,Z){if(Z=="as")return W.marked="keyword",A(Dr)}function Br(j,Z){if(Z=="from")return W.marked="keyword",A(ge)}function qe(j){return j=="]"?A():I(Xe(le,"]"))}function Le(){return I(ve("form"),lt,ke("{"),ve("}"),Xe(tr,"}"),de,de)}function tr(){return I(lt,Dt)}function zr(j,Z){return j.lastType=="operator"||j.lastType==","||u.test(Z.charAt(0))||/[,.]/.test(Z.charAt(0))}function Lt(j,Z,ae){return Z.tokenize==l&&/^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\[{}\(,;:]|=>)$/.test(Z.lastType)||Z.lastType=="quasi"&&/\{\s*$/.test(j.string.slice(0,j.pos-(ae||0)))}return{startState:function(j){var Z={tokenize:l,lastType:"sof",cc:[],lexical:new E((j||0)-f,0,"block",!1),localVars:R.localVars,context:R.localVars&&new te(null,null,!1),indented:j||0};return R.globalVars&&typeof R.globalVars=="object"&&(Z.globalVars=R.globalVars),Z},token:function(j,Z){if(j.sol()&&(Z.lexical.hasOwnProperty("align")||(Z.lexical.align=!1),Z.indented=j.indentation(),S(j,Z)),Z.tokenize!=a&&j.eatSpace())return null;var ae=Z.tokenize(j,Z);return b=="comment"?ae:(Z.lastType=b=="operator"&&(c=="++"||c=="--")?"incdec":b,D(Z,ae,b,c,j))},indent:function(j,Z){if(j.tokenize==a||j.tokenize==h)return U.Pass;if(j.tokenize!=l)return 0;var ae=Z&&Z.charAt(0),he=j.lexical,ie;if(!/^\s*else\b/.test(Z))for(var be=j.cc.length-1;be>=0;--be){var He=j.cc[be];if(He==de)he=he.prev;else if(He!=Ar&&He!=q)break}for(;(he.type=="stat"||he.type=="form")&&(ae=="}"||(ie=j.cc[j.cc.length-1])&&(ie==xe||ie==Ee)&&!/^[,\.=+\-*:?[\(]/.test(Z));)he=he.prev;k&&he.type==")"&&he.prev.type=="stat"&&(he=he.prev);var Je=he.type,vt=ae==Je;return Je=="vardef"?he.indented+(j.lastType=="operator"||j.lastType==","?he.info.length+1:0):Je=="form"&&ae=="{"?he.indented:Je=="form"?he.indented+f:Je=="stat"?he.indented+(zr(j,Z)?k||f:0):he.info=="switch"&&!vt&&R.doubleIndentSwitch!=!1?he.indented+(/^(?:case|default)\b/.test(Z)?f:2*f):he.align?he.column+(vt?0:1):he.indented+(vt?0:f)},electricInput:/^\s*(?:case .*?:|default:|\{|\})$/,blockCommentStart:y?null:"/*",blockCommentEnd:y?null:"*/",blockCommentContinue:y?null:" * ",lineComment:y?null:"//",fold:"brace",closeBrackets:"()[]{}''\"\"``",helperType:y?"json":"javascript",jsonldMode:m,jsonMode:y,expressionAllowed:Lt,skipExpression:function(j){D(j,"atom","atom","true",new U.StringStream("",2,null))}}}),U.registerHelper("wordChars","javascript",/[\w$]/),U.defineMIME("text/javascript","javascript"),U.defineMIME("text/ecmascript","javascript"),U.defineMIME("application/javascript","javascript"),U.defineMIME("application/x-javascript","javascript"),U.defineMIME("application/ecmascript","javascript"),U.defineMIME("application/json",{name:"javascript",json:!0}),U.defineMIME("application/x-json",{name:"javascript",json:!0}),U.defineMIME("application/manifest+json",{name:"javascript",json:!0}),U.defineMIME("application/ld+json",{name:"javascript",jsonld:!0}),U.defineMIME("text/typescript",{name:"javascript",typescript:!0}),U.defineMIME("application/typescript",{name:"javascript",typescript:!0})})});var $l=Nt((Yl,Vl)=>{(function(U){typeof Yl=="object"&&typeof Vl=="object"?U($t()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],U):U(CodeMirror)})(function(U){"use strict";function B(g){for(var x={},C=0,u=g.length;C]/)?(n.eat(/[\<\>]/),"atom"):n.eat(/[\+\-\*\/\&\|\:\!]/)?"atom":n.eat(/[a-zA-Z$@_\xa1-\uffff]/)?(n.eatWhile(/[\w$\xa1-\uffff]/),n.eat(/[\?\!\=]/),"atom"):"operator";if(h=="@"&&n.match(/^@?[a-zA-Z_\xa1-\uffff]/))return n.eat("@"),n.eatWhile(/[\w\xa1-\uffff]/),"variable-2";if(h=="$")return n.eat(/[a-zA-Z_]/)?n.eatWhile(/[\w]/):n.eat(/\d/)?n.eat(/\d/):n.next(),"variable-3";if(/[a-zA-Z_\xa1-\uffff]/.test(h))return n.eatWhile(/[\w\xa1-\uffff]/),n.eat(/[\?\!]/),n.eat(":")?"atom":"ident";if(h=="|"&&(a.varList||a.lastTok=="{"||a.lastTok=="do"))return x="|",null;if(/[\(\)\[\]{}\\;]/.test(h))return x=h,null;if(h=="-"&&n.eat(">"))return"arrow";if(/[=+\-\/*:\.^%<>~|]/.test(h)){var M=n.eatWhile(/[=+\-\/*:\.^%<>~|]/);return h=="."&&!M&&(x="."),"operator"}else return null}}}function p(n){for(var a=n.pos,h=0,d,S=!1,T=!1;(d=n.next())!=null;)if(T)T=!1;else{if("[{(".indexOf(d)>-1)h++;else if("]})".indexOf(d)>-1){if(h--,h<0)break}else if(d=="/"&&h==0){S=!0;break}T=d=="\\"}return n.backUp(n.pos-a),S}function w(n){return n||(n=1),function(a,h){if(a.peek()=="}"){if(n==1)return h.tokenize.pop(),h.tokenize[h.tokenize.length-1](a,h);h.tokenize[h.tokenize.length-1]=w(n-1)}else a.peek()=="{"&&(h.tokenize[h.tokenize.length-1]=w(n+1));return u(a,h)}}function b(){var n=!1;return function(a,h){return n?(h.tokenize.pop(),h.tokenize[h.tokenize.length-1](a,h)):(n=!0,u(a,h))}}function c(n,a,h,d){return function(S,T){var E=!1,M;for(T.context.type==="read-quoted-paused"&&(T.context=T.context.prev,S.eat("}"));(M=S.next())!=null;){if(M==n&&(d||!E)){T.tokenize.pop();break}if(h&&M=="#"&&!E){if(S.eat("{")){n=="}"&&(T.context={prev:T.context,type:"read-quoted-paused"}),T.tokenize.push(w());break}else if(/[@\$]/.test(S.peek())){T.tokenize.push(b());break}}E=!E&&M=="\\"}return a}}function o(n,a){return function(h,d){return a&&h.eatSpace(),h.match(n)?d.tokenize.pop():h.skipToEnd(),"string"}}function l(n,a){return n.sol()&&n.match("=end")&&n.eol()&&a.tokenize.pop(),n.skipToEnd(),"comment"}return{startState:function(){return{tokenize:[u],indented:0,context:{type:"top",indented:-g.indentUnit},continuedLine:!1,lastTok:null,varList:!1}},token:function(n,a){x=null,n.sol()&&(a.indented=n.indentation());var h=a.tokenize[a.tokenize.length-1](n,a),d,S=x;if(h=="ident"){var T=n.current();h=a.lastTok=="."?"property":f.propertyIsEnumerable(n.current())?"keyword":/^[A-Z]/.test(T)?"tag":a.lastTok=="def"||a.lastTok=="class"||a.varList?"def":"variable",h=="keyword"&&(S=T,k.propertyIsEnumerable(T)?d="indent":m.propertyIsEnumerable(T)?d="dedent":((T=="if"||T=="unless")&&n.column()==n.indentation()||T=="do"&&a.context.indented{(function(U){typeof Ql=="object"&&typeof ec=="object"?U($t()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],U):U(CodeMirror)})(function(U){"use strict";U.defineMode("perl",function(){var m={"->":4,"++":4,"--":4,"**":4,"=~":4,"!~":4,"*":4,"/":4,"%":4,x:4,"+":4,"-":4,".":4,"<<":4,">>":4,"<":4,">":4,"<=":4,">=":4,lt:4,gt:4,le:4,ge:4,"==":4,"!=":4,"<=>":4,eq:4,ne:4,cmp:4,"~~":4,"&":4,"|":4,"^":4,"&&":4,"||":4,"//":4,"..":4,"...":4,"?":4,":":4,"=":4,"+=":4,"-=":4,"*=":4,",":4,"=>":4,"::":4,not:4,and:4,or:4,xor:4,BEGIN:[5,1],END:[5,1],PRINT:[5,1],PRINTF:[5,1],GETC:[5,1],READ:[5,1],READLINE:[5,1],DESTROY:[5,1],TIE:[5,1],TIEHANDLE:[5,1],UNTIE:[5,1],STDIN:5,STDIN_TOP:5,STDOUT:5,STDOUT_TOP:5,STDERR:5,STDERR_TOP:5,$ARG:5,$_:5,"@ARG":5,"@_":5,$LIST_SEPARATOR:5,'$"':5,$PROCESS_ID:5,$PID:5,$$:5,$REAL_GROUP_ID:5,$GID:5,"$(":5,$EFFECTIVE_GROUP_ID:5,$EGID:5,"$)":5,$PROGRAM_NAME:5,$0:5,$SUBSCRIPT_SEPARATOR:5,$SUBSEP:5,"$;":5,$REAL_USER_ID:5,$UID:5,"$<":5,$EFFECTIVE_USER_ID:5,$EUID:5,"$>":5,$a:5,$b:5,$COMPILING:5,"$^C":5,$DEBUGGING:5,"$^D":5,"${^ENCODING}":5,$ENV:5,"%ENV":5,$SYSTEM_FD_MAX:5,"$^F":5,"@F":5,"${^GLOBAL_PHASE}":5,"$^H":5,"%^H":5,"@INC":5,"%INC":5,$INPLACE_EDIT:5,"$^I":5,"$^M":5,$OSNAME:5,"$^O":5,"${^OPEN}":5,$PERLDB:5,"$^P":5,$SIG:5,"%SIG":5,$BASETIME:5,"$^T":5,"${^TAINT}":5,"${^UNICODE}":5,"${^UTF8CACHE}":5,"${^UTF8LOCALE}":5,$PERL_VERSION:5,"$^V":5,"${^WIN32_SLOPPY_STAT}":5,$EXECUTABLE_NAME:5,"$^X":5,$1:5,$MATCH:5,"$&":5,"${^MATCH}":5,$PREMATCH:5,"$`":5,"${^PREMATCH}":5,$POSTMATCH:5,"$'":5,"${^POSTMATCH}":5,$LAST_PAREN_MATCH:5,"$+":5,$LAST_SUBMATCH_RESULT:5,"$^N":5,"@LAST_MATCH_END":5,"@+":5,"%LAST_PAREN_MATCH":5,"%+":5,"@LAST_MATCH_START":5,"@-":5,"%LAST_MATCH_START":5,"%-":5,$LAST_REGEXP_CODE_RESULT:5,"$^R":5,"${^RE_DEBUG_FLAGS}":5,"${^RE_TRIE_MAXBUF}":5,$ARGV:5,"@ARGV":5,ARGV:5,ARGVOUT:5,$OUTPUT_FIELD_SEPARATOR:5,$OFS:5,"$,":5,$INPUT_LINE_NUMBER:5,$NR:5,"$.":5,$INPUT_RECORD_SEPARATOR:5,$RS:5,"$/":5,$OUTPUT_RECORD_SEPARATOR:5,$ORS:5,"$\\":5,$OUTPUT_AUTOFLUSH:5,"$|":5,$ACCUMULATOR:5,"$^A":5,$FORMAT_FORMFEED:5,"$^L":5,$FORMAT_PAGE_NUMBER:5,"$%":5,$FORMAT_LINES_LEFT:5,"$-":5,$FORMAT_LINE_BREAK_CHARACTERS:5,"$:":5,$FORMAT_LINES_PER_PAGE:5,"$=":5,$FORMAT_TOP_NAME:5,"$^":5,$FORMAT_NAME:5,"$~":5,"${^CHILD_ERROR_NATIVE}":5,$EXTENDED_OS_ERROR:5,"$^E":5,$EXCEPTIONS_BEING_CAUGHT:5,"$^S":5,$WARNING:5,"$^W":5,"${^WARNING_BITS}":5,$OS_ERROR:5,$ERRNO:5,"$!":5,"%OS_ERROR":5,"%ERRNO":5,"%!":5,$CHILD_ERROR:5,"$?":5,$EVAL_ERROR:5,"$@":5,$OFMT:5,"$#":5,"$*":5,$ARRAY_BASE:5,"$[":5,$OLD_PERL_VERSION:5,"$]":5,if:[1,1],elsif:[1,1],else:[1,1],while:[1,1],unless:[1,1],for:[1,1],foreach:[1,1],abs:1,accept:1,alarm:1,atan2:1,bind:1,binmode:1,bless:1,bootstrap:1,break:1,caller:1,chdir:1,chmod:1,chomp:1,chop:1,chown:1,chr:1,chroot:1,close:1,closedir:1,connect:1,continue:[1,1],cos:1,crypt:1,dbmclose:1,dbmopen:1,default:1,defined:1,delete:1,die:1,do:1,dump:1,each:1,endgrent:1,endhostent:1,endnetent:1,endprotoent:1,endpwent:1,endservent:1,eof:1,eval:1,exec:1,exists:1,exit:1,exp:1,fcntl:1,fileno:1,flock:1,fork:1,format:1,formline:1,getc:1,getgrent:1,getgrgid:1,getgrnam:1,gethostbyaddr:1,gethostbyname:1,gethostent:1,getlogin:1,getnetbyaddr:1,getnetbyname:1,getnetent:1,getpeername:1,getpgrp:1,getppid:1,getpriority:1,getprotobyname:1,getprotobynumber:1,getprotoent:1,getpwent:1,getpwnam:1,getpwuid:1,getservbyname:1,getservbyport:1,getservent:1,getsockname:1,getsockopt:1,given:1,glob:1,gmtime:1,goto:1,grep:1,hex:1,import:1,index:1,int:1,ioctl:1,join:1,keys:1,kill:1,last:1,lc:1,lcfirst:1,length:1,link:1,listen:1,local:2,localtime:1,lock:1,log:1,lstat:1,m:null,map:1,mkdir:1,msgctl:1,msgget:1,msgrcv:1,msgsnd:1,my:2,new:1,next:1,no:1,oct:1,open:1,opendir:1,ord:1,our:2,pack:1,package:1,pipe:1,pop:1,pos:1,print:1,printf:1,prototype:1,push:1,q:null,qq:null,qr:null,quotemeta:null,qw:null,qx:null,rand:1,read:1,readdir:1,readline:1,readlink:1,readpipe:1,recv:1,redo:1,ref:1,rename:1,require:1,reset:1,return:1,reverse:1,rewinddir:1,rindex:1,rmdir:1,s:null,say:1,scalar:1,seek:1,seekdir:1,select:1,semctl:1,semget:1,semop:1,send:1,setgrent:1,sethostent:1,setnetent:1,setpgrp:1,setpriority:1,setprotoent:1,setpwent:1,setservent:1,setsockopt:1,shift:1,shmctl:1,shmget:1,shmread:1,shmwrite:1,shutdown:1,sin:1,sleep:1,socket:1,socketpair:1,sort:1,splice:1,split:1,sprintf:1,sqrt:1,srand:1,stat:1,state:1,study:1,sub:1,substr:1,symlink:1,syscall:1,sysopen:1,sysread:1,sysseek:1,system:1,syswrite:1,tell:1,telldir:1,tie:1,tied:1,time:1,times:1,tr:null,truncate:1,uc:1,ucfirst:1,umask:1,undef:1,unlink:1,unpack:1,unshift:1,untie:1,use:1,utime:1,values:1,vec:1,wait:1,waitpid:1,wantarray:1,warn:1,when:1,write:1,y:null},y="string-2",_=/[goseximacplud]/;function g(u,p,w,b,c){return p.chain=null,p.style=null,p.tail=null,p.tokenize=function(o,l){for(var n=!1,a,h=0;a=o.next();){if(a===w[h]&&!n)return w[++h]!==void 0?(l.chain=w[h],l.style=b,l.tail=c):c&&o.eatWhile(c),l.tokenize=C,b;n=!n&&a=="\\"}return b},p.tokenize(u,p)}function x(u,p,w){return p.tokenize=function(b,c){return b.string==w&&(c.tokenize=C),b.skipToEnd(),"string"},p.tokenize(u,p)}function C(u,p){if(u.eatSpace())return null;if(p.chain)return g(u,p,p.chain,p.style,p.tail);if(u.match(/^(\-?((\d[\d_]*)?\.\d+(e[+-]?\d+)?|\d+\.\d*)|0x[\da-fA-F_]+|0b[01_]+|\d[\d_]*(e[+-]?\d+)?)/))return"number";if(u.match(/^<<(?=[_a-zA-Z])/))return u.eatWhile(/\w/),x(u,p,u.current().substr(2));if(u.sol()&&u.match(/^\=item(?!\w)/))return x(u,p,"=cut");var w=u.next();if(w=='"'||w=="'"){if(R(u,3)=="<<"+w){var b=u.pos;u.eatWhile(/\w/);var c=u.current().substr(1);if(c&&u.eat(w))return x(u,p,c);u.pos=b}return g(u,p,[w],"string")}if(w=="q"){var o=B(u,-2);if(!(o&&/\w/.test(o))){if(o=B(u,0),o=="x"){if(o=B(u,1),o=="(")return k(u,2),g(u,p,[")"],y,_);if(o=="[")return k(u,2),g(u,p,["]"],y,_);if(o=="{")return k(u,2),g(u,p,["}"],y,_);if(o=="<")return k(u,2),g(u,p,[">"],y,_);if(/[\^'"!~\/]/.test(o))return k(u,1),g(u,p,[u.eat(o)],y,_)}else if(o=="q"){if(o=B(u,1),o=="(")return k(u,2),g(u,p,[")"],"string");if(o=="[")return k(u,2),g(u,p,["]"],"string");if(o=="{")return k(u,2),g(u,p,["}"],"string");if(o=="<")return k(u,2),g(u,p,[">"],"string");if(/[\^'"!~\/]/.test(o))return k(u,1),g(u,p,[u.eat(o)],"string")}else if(o=="w"){if(o=B(u,1),o=="(")return k(u,2),g(u,p,[")"],"bracket");if(o=="[")return k(u,2),g(u,p,["]"],"bracket");if(o=="{")return k(u,2),g(u,p,["}"],"bracket");if(o=="<")return k(u,2),g(u,p,[">"],"bracket");if(/[\^'"!~\/]/.test(o))return k(u,1),g(u,p,[u.eat(o)],"bracket")}else if(o=="r"){if(o=B(u,1),o=="(")return k(u,2),g(u,p,[")"],y,_);if(o=="[")return k(u,2),g(u,p,["]"],y,_);if(o=="{")return k(u,2),g(u,p,["}"],y,_);if(o=="<")return k(u,2),g(u,p,[">"],y,_);if(/[\^'"!~\/]/.test(o))return k(u,1),g(u,p,[u.eat(o)],y,_)}else if(/[\^'"!~\/(\[{<]/.test(o)){if(o=="(")return k(u,1),g(u,p,[")"],"string");if(o=="[")return k(u,1),g(u,p,["]"],"string");if(o=="{")return k(u,1),g(u,p,["}"],"string");if(o=="<")return k(u,1),g(u,p,[">"],"string");if(/[\^'"!~\/]/.test(o))return g(u,p,[u.eat(o)],"string")}}}if(w=="m"){var o=B(u,-2);if(!(o&&/\w/.test(o))&&(o=u.eat(/[(\[{<\^'"!~\/]/),o)){if(/[\^'"!~\/]/.test(o))return g(u,p,[o],y,_);if(o=="(")return g(u,p,[")"],y,_);if(o=="[")return g(u,p,["]"],y,_);if(o=="{")return g(u,p,["}"],y,_);if(o=="<")return g(u,p,[">"],y,_)}}if(w=="s"){var o=/[\/>\]})\w]/.test(B(u,-2));if(!o&&(o=u.eat(/[(\[{<\^'"!~\/]/),o))return o=="["?g(u,p,["]","]"],y,_):o=="{"?g(u,p,["}","}"],y,_):o=="<"?g(u,p,[">",">"],y,_):o=="("?g(u,p,[")",")"],y,_):g(u,p,[o,o],y,_)}if(w=="y"){var o=/[\/>\]})\w]/.test(B(u,-2));if(!o&&(o=u.eat(/[(\[{<\^'"!~\/]/),o))return o=="["?g(u,p,["]","]"],y,_):o=="{"?g(u,p,["}","}"],y,_):o=="<"?g(u,p,[">",">"],y,_):o=="("?g(u,p,[")",")"],y,_):g(u,p,[o,o],y,_)}if(w=="t"){var o=/[\/>\]})\w]/.test(B(u,-2));if(!o&&(o=u.eat("r"),o&&(o=u.eat(/[(\[{<\^'"!~\/]/),o)))return o=="["?g(u,p,["]","]"],y,_):o=="{"?g(u,p,["}","}"],y,_):o=="<"?g(u,p,[">",">"],y,_):o=="("?g(u,p,[")",")"],y,_):g(u,p,[o,o],y,_)}if(w=="`")return g(u,p,[w],"variable-2");if(w=="/")return/~\s*$/.test(R(u))?g(u,p,[w],y,_):"operator";if(w=="$"){var b=u.pos;if(u.eatWhile(/\d/)||u.eat("{")&&u.eatWhile(/\d/)&&u.eat("}"))return"variable-2";u.pos=b}if(/[$@%]/.test(w)){var b=u.pos;if(u.eat("^")&&u.eat(/[A-Z]/)||!/[@$%&]/.test(B(u,-2))&&u.eat(/[=|\\\-#?@;:&`~\^!\[\]*'"$+.,\/<>()]/)){var o=u.current();if(m[o])return"variable-2"}u.pos=b}if(/[$@%&]/.test(w)&&(u.eatWhile(/[\w$]/)||u.eat("{")&&u.eatWhile(/[\w$]/)&&u.eat("}"))){var o=u.current();return m[o]?"variable-2":"variable"}if(w=="#"&&B(u,-2)!="$")return u.skipToEnd(),"comment";if(/[:+\-\^*$&%@=<>!?|\/~\.]/.test(w)){var b=u.pos;if(u.eatWhile(/[:+\-\^*$&%@=<>!?|\/~\.]/),m[u.current()])return"operator";u.pos=b}if(w=="_"&&u.pos==1){if(f(u,6)=="_END__")return g(u,p,["\0"],"comment");if(f(u,7)=="_DATA__")return g(u,p,["\0"],"variable-2");if(f(u,7)=="_C__")return g(u,p,["\0"],"string")}if(/\w/.test(w)){var b=u.pos;if(B(u,-2)=="{"&&(B(u,0)=="}"||u.eatWhile(/\w/)&&B(u,0)=="}"))return"string";u.pos=b}if(/[A-Z]/.test(w)){var l=B(u,-2),b=u.pos;if(u.eatWhile(/[A-Z_]/),/[\da-z]/.test(B(u,0)))u.pos=b;else{var o=m[u.current()];return o?(o[1]&&(o=o[0]),l!=":"?o==1?"keyword":o==2?"def":o==3?"atom":o==4?"operator":o==5?"variable-2":"meta":"meta"):"meta"}}if(/[a-zA-Z_]/.test(w)){var l=B(u,-2);u.eatWhile(/\w/);var o=m[u.current()];return o?(o[1]&&(o=o[0]),l!=":"?o==1?"keyword":o==2?"def":o==3?"atom":o==4?"operator":o==5?"variable-2":"meta":"meta"):"meta"}return null}return{startState:function(){return{tokenize:C,chain:null,style:null,tail:null}},token:function(u,p){return(p.tokenize||C)(u,p)},lineComment:"#"}}),U.registerHelper("wordChars","perl",/[\w$]/),U.defineMIME("text/x-perl","perl");function B(m,y){return m.string.charAt(m.pos+(y||0))}function R(m,y){if(y){var _=m.pos-y;return m.string.substr(_>=0?_:0,y)}else return m.string.substr(0,m.pos-1)}function f(m,y){var _=m.string.length,g=_-m.pos+1;return m.string.substr(m.pos,y&&y<_?y:g)}function k(m,y){var _=m.pos+y,g;_<=0?m.pos=0:_>=(g=m.string.length-1)?m.pos=g:m.pos=_}})});var oc=Nt(oi=>{"use strict";var So=oi&&oi.__assign||function(){return So=Object.assign||function(U){for(var B,R=1,f=arguments.length;R0&&R.hide()}),this.element.classList.remove(this.toastShowClass),this.element.classList.add(this.toastHideClass),this.trigger("hide"),this.animation){var f=function(){return R.remove()},k=function(){y||(R.element.addEventListener("transitionend",function(){return f()}),y=!0)},m=function(){R.show(),R.element.removeEventListener("transitionstart",function(){return k()}),R.element.removeEventListener("transitionend",function(){return f()}),R.element.removeEventListener("mouseover",function(){return m()}),R.element.addEventListener("mouseout",function(){return R.hide()})},y=!1;this.element.addEventListener("mouseover",function(){return m()}),this.element.addEventListener("transitionstart",function(){return k()});return}this.remove()}},U.prototype.remove=function(){this.element.parentNode===this.container&&(this.container.removeChild(this.element),this.trigger("remove"))},U.prototype.buildClose=function(B){var R=this,f=document.createElement("button");return f.setAttribute("title",B),f.appendChild(document.createTextNode(B)),f.addEventListener("click",function(){return R.hide()}),f},U.prototype.getContainer=function(B){var R=B.containerClass,f=B.containerElement,k=B.root,m=k.querySelector("".concat(f,".").concat(R));if(m)return m;var y=document.createElement(f);return y.classList.add(R),k.appendChild(y),y},U.prototype.on=function(B,R){this.events[B]||(this.events[B]=[]),this.events[B].push(R)},U.prototype.off=function(B,R){if(R===void 0&&(R=null),!R){this.events[B]=[];return}var f=this.events[B].indexOf(R);f===-1&&this.events[B].splice(f,1)},U.prototype.trigger=function(B){for(var R=this,f=[],k=1;k{(function(U,B){if(typeof Eo=="object"&&typeof Gs=="object")Gs.exports=B();else if(typeof define=="function"&&define.amd)define([],B);else{var R=B();for(var f in R)(typeof Eo=="object"?Eo:U)[f]=R[f]}})(self,function(){return(()=>{"use strict";var U={4567:function(R,f,k){var m,y=this&&this.__extends||(m=function(c,o){return m=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(l,n){l.__proto__=n}||function(l,n){for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(l[a]=n[a])},m(c,o)},function(c,o){if(typeof o!="function"&&o!==null)throw new TypeError("Class extends value "+String(o)+" is not a constructor or null");function l(){this.constructor=c}m(c,o),c.prototype=o===null?Object.create(o):(l.prototype=o.prototype,new l)});Object.defineProperty(f,"__esModule",{value:!0}),f.AccessibilityManager=void 0;var _=k(9042),g=k(6114),x=k(9924),C=k(3656),u=k(844),p=k(5596),w=k(9631),b=function(c){function o(l,n){var a=c.call(this)||this;a._terminal=l,a._renderService=n,a._liveRegionLineCount=0,a._charsToConsume=[],a._charsToAnnounce="",a._accessibilityTreeRoot=document.createElement("div"),a._accessibilityTreeRoot.classList.add("xterm-accessibility"),a._accessibilityTreeRoot.tabIndex=0,a._rowContainer=document.createElement("div"),a._rowContainer.setAttribute("role","list"),a._rowContainer.classList.add("xterm-accessibility-tree"),a._rowElements=[];for(var h=0;hl;)this._rowContainer.removeChild(this._rowElements.pop());this._rowElements[this._rowElements.length-1].addEventListener("focus",this._bottomBoundaryFocusListener),this._refreshRowsDimensions()},o.prototype._createAccessibilityTreeNode=function(){var l=document.createElement("div");return l.setAttribute("role","listitem"),l.tabIndex=-1,this._refreshRowDimensions(l),l},o.prototype._onTab=function(l){for(var n=0;n0?this._charsToConsume.shift()!==l&&(this._charsToAnnounce+=l):this._charsToAnnounce+=l,l===` +`&&(this._liveRegionLineCount++,this._liveRegionLineCount===21&&(this._liveRegion.textContent+=_.tooMuchOutput)),g.isMac&&this._liveRegion.textContent&&this._liveRegion.textContent.length>0&&!this._liveRegion.parentNode&&setTimeout(function(){n._accessibilityTreeRoot.appendChild(n._liveRegion)},0))},o.prototype._clearLiveRegion=function(){this._liveRegion.textContent="",this._liveRegionLineCount=0,g.isMac&&(0,w.removeElementFromParent)(this._liveRegion)},o.prototype._onKey=function(l){this._clearLiveRegion(),this._charsToConsume.push(l)},o.prototype._refreshRows=function(l,n){this._renderRowsDebouncer.refresh(l,n,this._terminal.rows)},o.prototype._renderRows=function(l,n){for(var a=this._terminal.buffer,h=a.lines.length.toString(),d=l;d<=n;d++){var S=a.translateBufferLineToString(a.ydisp+d,!0),T=(a.ydisp+d+1).toString(),E=this._rowElements[d];E&&(S.length===0?E.innerText="\xA0":E.textContent=S,E.setAttribute("aria-posinset",T),E.setAttribute("aria-setsize",h))}this._announceCharacters()},o.prototype._refreshRowsDimensions=function(){if(this._renderService.dimensions.actualCellHeight){this._rowElements.length!==this._terminal.rows&&this._onResize(this._terminal.rows);for(var l=0;l{function k(g){return g.replace(/\r?\n/g,"\r")}function m(g,x){return x?"\x1B[200~"+g+"\x1B[201~":g}function y(g,x,C){g=m(g=k(g),C.decPrivateModes.bracketedPasteMode),C.triggerDataEvent(g,!0),x.value=""}function _(g,x,C){var u=C.getBoundingClientRect(),p=g.clientX-u.left-10,w=g.clientY-u.top-10;x.style.width="20px",x.style.height="20px",x.style.left=p+"px",x.style.top=w+"px",x.style.zIndex="1000",x.focus()}Object.defineProperty(f,"__esModule",{value:!0}),f.rightClickHandler=f.moveTextAreaUnderMouseCursor=f.paste=f.handlePasteEvent=f.copyHandler=f.bracketTextForPaste=f.prepareTextForTerminal=void 0,f.prepareTextForTerminal=k,f.bracketTextForPaste=m,f.copyHandler=function(g,x){g.clipboardData&&g.clipboardData.setData("text/plain",x.selectionText),g.preventDefault()},f.handlePasteEvent=function(g,x,C){g.stopPropagation(),g.clipboardData&&y(g.clipboardData.getData("text/plain"),x,C)},f.paste=y,f.moveTextAreaUnderMouseCursor=_,f.rightClickHandler=function(g,x,C,u,p){_(g,x,C),p&&u.rightClickSelect(g),x.value=u.selectionText,x.select()}},7239:(R,f)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.ColorContrastCache=void 0;var k=function(){function m(){this._color={},this._rgba={}}return m.prototype.clear=function(){this._color={},this._rgba={}},m.prototype.setCss=function(y,_,g){this._rgba[y]||(this._rgba[y]={}),this._rgba[y][_]=g},m.prototype.getCss=function(y,_){return this._rgba[y]?this._rgba[y][_]:void 0},m.prototype.setColor=function(y,_,g){this._color[y]||(this._color[y]={}),this._color[y][_]=g},m.prototype.getColor=function(y,_){return this._color[y]?this._color[y][_]:void 0},m}();f.ColorContrastCache=k},5680:function(R,f,k){var m=this&&this.__read||function(b,c){var o=typeof Symbol=="function"&&b[Symbol.iterator];if(!o)return b;var l,n,a=o.call(b),h=[];try{for(;(c===void 0||c-- >0)&&!(l=a.next()).done;)h.push(l.value)}catch(d){n={error:d}}finally{try{l&&!l.done&&(o=a.return)&&o.call(a)}finally{if(n)throw n.error}}return h};Object.defineProperty(f,"__esModule",{value:!0}),f.ColorManager=f.DEFAULT_ANSI_COLORS=void 0;var y=k(8055),_=k(7239),g=y.css.toColor("#ffffff"),x=y.css.toColor("#000000"),C=y.css.toColor("#ffffff"),u=y.css.toColor("#000000"),p={css:"rgba(255, 255, 255, 0.3)",rgba:4294967117};f.DEFAULT_ANSI_COLORS=Object.freeze(function(){for(var b=[y.css.toColor("#2e3436"),y.css.toColor("#cc0000"),y.css.toColor("#4e9a06"),y.css.toColor("#c4a000"),y.css.toColor("#3465a4"),y.css.toColor("#75507b"),y.css.toColor("#06989a"),y.css.toColor("#d3d7cf"),y.css.toColor("#555753"),y.css.toColor("#ef2929"),y.css.toColor("#8ae234"),y.css.toColor("#fce94f"),y.css.toColor("#729fcf"),y.css.toColor("#ad7fa8"),y.css.toColor("#34e2e2"),y.css.toColor("#eeeeec")],c=[0,95,135,175,215,255],o=0;o<216;o++){var l=c[o/36%6|0],n=c[o/6%6|0],a=c[o%6];b.push({css:y.channels.toCss(l,n,a),rgba:y.channels.toRgba(l,n,a)})}for(o=0;o<24;o++){var h=8+10*o;b.push({css:y.channels.toCss(h,h,h),rgba:y.channels.toRgba(h,h,h)})}return b}());var w=function(){function b(c,o){this.allowTransparency=o;var l=c.createElement("canvas");l.width=1,l.height=1;var n=l.getContext("2d");if(!n)throw new Error("Could not get rendering context");this._ctx=n,this._ctx.globalCompositeOperation="copy",this._litmusColor=this._ctx.createLinearGradient(0,0,1,1),this._contrastCache=new _.ColorContrastCache,this.colors={foreground:g,background:x,cursor:C,cursorAccent:u,selectionTransparent:p,selectionOpaque:y.color.blend(x,p),selectionForeground:void 0,ansi:f.DEFAULT_ANSI_COLORS.slice(),contrastCache:this._contrastCache},this._updateRestoreColors()}return b.prototype.onOptionsChange=function(c){c==="minimumContrastRatio"&&this._contrastCache.clear()},b.prototype.setTheme=function(c){c===void 0&&(c={}),this.colors.foreground=this._parseColor(c.foreground,g),this.colors.background=this._parseColor(c.background,x),this.colors.cursor=this._parseColor(c.cursor,C,!0),this.colors.cursorAccent=this._parseColor(c.cursorAccent,u,!0),this.colors.selectionTransparent=this._parseColor(c.selection,p,!0),this.colors.selectionOpaque=y.color.blend(this.colors.background,this.colors.selectionTransparent);var o={css:"",rgba:0};this.colors.selectionForeground=c.selectionForeground?this._parseColor(c.selectionForeground,o):void 0,this.colors.selectionForeground===o&&(this.colors.selectionForeground=void 0),y.color.isOpaque(this.colors.selectionTransparent)&&(this.colors.selectionTransparent=y.color.opacity(this.colors.selectionTransparent,.3)),this.colors.ansi[0]=this._parseColor(c.black,f.DEFAULT_ANSI_COLORS[0]),this.colors.ansi[1]=this._parseColor(c.red,f.DEFAULT_ANSI_COLORS[1]),this.colors.ansi[2]=this._parseColor(c.green,f.DEFAULT_ANSI_COLORS[2]),this.colors.ansi[3]=this._parseColor(c.yellow,f.DEFAULT_ANSI_COLORS[3]),this.colors.ansi[4]=this._parseColor(c.blue,f.DEFAULT_ANSI_COLORS[4]),this.colors.ansi[5]=this._parseColor(c.magenta,f.DEFAULT_ANSI_COLORS[5]),this.colors.ansi[6]=this._parseColor(c.cyan,f.DEFAULT_ANSI_COLORS[6]),this.colors.ansi[7]=this._parseColor(c.white,f.DEFAULT_ANSI_COLORS[7]),this.colors.ansi[8]=this._parseColor(c.brightBlack,f.DEFAULT_ANSI_COLORS[8]),this.colors.ansi[9]=this._parseColor(c.brightRed,f.DEFAULT_ANSI_COLORS[9]),this.colors.ansi[10]=this._parseColor(c.brightGreen,f.DEFAULT_ANSI_COLORS[10]),this.colors.ansi[11]=this._parseColor(c.brightYellow,f.DEFAULT_ANSI_COLORS[11]),this.colors.ansi[12]=this._parseColor(c.brightBlue,f.DEFAULT_ANSI_COLORS[12]),this.colors.ansi[13]=this._parseColor(c.brightMagenta,f.DEFAULT_ANSI_COLORS[13]),this.colors.ansi[14]=this._parseColor(c.brightCyan,f.DEFAULT_ANSI_COLORS[14]),this.colors.ansi[15]=this._parseColor(c.brightWhite,f.DEFAULT_ANSI_COLORS[15]),this._contrastCache.clear(),this._updateRestoreColors()},b.prototype.restoreColor=function(c){if(c!==void 0)switch(c){case 256:this.colors.foreground=this._restoreColors.foreground;break;case 257:this.colors.background=this._restoreColors.background;break;case 258:this.colors.cursor=this._restoreColors.cursor;break;default:this.colors.ansi[c]=this._restoreColors.ansi[c]}else for(var o=0;o=m.length&&(m=void 0),{value:m&&m[g++],done:!m}}};throw new TypeError(y?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(f,"__esModule",{value:!0}),f.removeElementFromParent=void 0,f.removeElementFromParent=function(){for(var m,y,_,g=[],x=0;x{Object.defineProperty(f,"__esModule",{value:!0}),f.addDisposableDomListener=void 0,f.addDisposableDomListener=function(k,m,y,_){k.addEventListener(m,y,_);var g=!1;return{dispose:function(){g||(g=!0,k.removeEventListener(m,y,_))}}}},3551:function(R,f,k){var m=this&&this.__decorate||function(u,p,w,b){var c,o=arguments.length,l=o<3?p:b===null?b=Object.getOwnPropertyDescriptor(p,w):b;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")l=Reflect.decorate(u,p,w,b);else for(var n=u.length-1;n>=0;n--)(c=u[n])&&(l=(o<3?c(l):o>3?c(p,w,l):c(p,w))||l);return o>3&&l&&Object.defineProperty(p,w,l),l},y=this&&this.__param||function(u,p){return function(w,b){p(w,b,u)}};Object.defineProperty(f,"__esModule",{value:!0}),f.MouseZone=f.Linkifier=void 0;var _=k(8460),g=k(2585),x=function(){function u(p,w,b){this._bufferService=p,this._logService=w,this._unicodeService=b,this._linkMatchers=[],this._nextLinkMatcherId=0,this._onShowLinkUnderline=new _.EventEmitter,this._onHideLinkUnderline=new _.EventEmitter,this._onLinkTooltip=new _.EventEmitter,this._rowsToLinkify={start:void 0,end:void 0}}return Object.defineProperty(u.prototype,"onShowLinkUnderline",{get:function(){return this._onShowLinkUnderline.event},enumerable:!1,configurable:!0}),Object.defineProperty(u.prototype,"onHideLinkUnderline",{get:function(){return this._onHideLinkUnderline.event},enumerable:!1,configurable:!0}),Object.defineProperty(u.prototype,"onLinkTooltip",{get:function(){return this._onLinkTooltip.event},enumerable:!1,configurable:!0}),u.prototype.attachToDom=function(p,w){this._element=p,this._mouseZoneManager=w},u.prototype.linkifyRows=function(p,w){var b=this;this._mouseZoneManager&&(this._rowsToLinkify.start===void 0||this._rowsToLinkify.end===void 0?(this._rowsToLinkify.start=p,this._rowsToLinkify.end=w):(this._rowsToLinkify.start=Math.min(this._rowsToLinkify.start,p),this._rowsToLinkify.end=Math.max(this._rowsToLinkify.end,w)),this._mouseZoneManager.clearAll(p,w),this._rowsTimeoutId&&clearTimeout(this._rowsTimeoutId),this._rowsTimeoutId=setTimeout(function(){return b._linkifyRows()},u._timeBeforeLatency))},u.prototype._linkifyRows=function(){this._rowsTimeoutId=void 0;var p=this._bufferService.buffer;if(this._rowsToLinkify.start!==void 0&&this._rowsToLinkify.end!==void 0){var w=p.ydisp+this._rowsToLinkify.start;if(!(w>=p.lines.length)){for(var b=p.ydisp+Math.min(this._rowsToLinkify.end,this._bufferService.rows)+1,c=Math.ceil(2e3/this._bufferService.cols),o=this._bufferService.buffer.iterator(!1,w,b,c,c);o.hasNext();)for(var l=o.next(),n=0;n=0;w--)if(p.priority<=this._linkMatchers[w].priority)return void this._linkMatchers.splice(w+1,0,p);this._linkMatchers.splice(0,0,p)}else this._linkMatchers.push(p)},u.prototype.deregisterLinkMatcher=function(p){for(var w=0;w>9&511:void 0;b.validationCallback?b.validationCallback(d,function(D){o._rowsTimeoutId||D&&o._addLink(S[1],S[0]-o._bufferService.buffer.ydisp,d,b,M)}):h._addLink(S[1],S[0]-h._bufferService.buffer.ydisp,d,b,M)},h=this;(c=l.exec(w))!==null&&a()!=="break";);},u.prototype._addLink=function(p,w,b,c,o){var l=this;if(this._mouseZoneManager&&this._element){var n=this._unicodeService.getStringCellWidth(b),a=p%this._bufferService.cols,h=w+Math.floor(p/this._bufferService.cols),d=(a+n)%this._bufferService.cols,S=h+Math.floor((a+n)/this._bufferService.cols);d===0&&(d=this._bufferService.cols,S--),this._mouseZoneManager.add(new C(a+1,h+1,d+1,S+1,function(T){if(c.handler)return c.handler(T,b);var E=window.open();E?(E.opener=null,E.location.href=b):console.warn("Opening link blocked as opener could not be cleared")},function(){l._onShowLinkUnderline.fire(l._createLinkHoverEvent(a,h,d,S,o)),l._element.classList.add("xterm-cursor-pointer")},function(T){l._onLinkTooltip.fire(l._createLinkHoverEvent(a,h,d,S,o)),c.hoverTooltipCallback&&c.hoverTooltipCallback(T,b,{start:{x:a,y:h},end:{x:d,y:S}})},function(){l._onHideLinkUnderline.fire(l._createLinkHoverEvent(a,h,d,S,o)),l._element.classList.remove("xterm-cursor-pointer"),c.hoverLeaveCallback&&c.hoverLeaveCallback()},function(T){return!c.willLinkActivate||c.willLinkActivate(T,b)}))}},u.prototype._createLinkHoverEvent=function(p,w,b,c,o){return{x1:p,y1:w,x2:b,y2:c,cols:this._bufferService.cols,fg:o}},u._timeBeforeLatency=200,u=m([y(0,g.IBufferService),y(1,g.ILogService),y(2,g.IUnicodeService)],u)}();f.Linkifier=x;var C=function(u,p,w,b,c,o,l,n,a){this.x1=u,this.y1=p,this.x2=w,this.y2=b,this.clickCallback=c,this.hoverCallback=o,this.tooltipCallback=l,this.leaveCallback=n,this.willLinkActivate=a};f.MouseZone=C},6465:function(R,f,k){var m,y=this&&this.__extends||(m=function(o,l){return m=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,a){n.__proto__=a}||function(n,a){for(var h in a)Object.prototype.hasOwnProperty.call(a,h)&&(n[h]=a[h])},m(o,l)},function(o,l){if(typeof l!="function"&&l!==null)throw new TypeError("Class extends value "+String(l)+" is not a constructor or null");function n(){this.constructor=o}m(o,l),o.prototype=l===null?Object.create(l):(n.prototype=l.prototype,new n)}),_=this&&this.__decorate||function(o,l,n,a){var h,d=arguments.length,S=d<3?l:a===null?a=Object.getOwnPropertyDescriptor(l,n):a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")S=Reflect.decorate(o,l,n,a);else for(var T=o.length-1;T>=0;T--)(h=o[T])&&(S=(d<3?h(S):d>3?h(l,n,S):h(l,n))||S);return d>3&&S&&Object.defineProperty(l,n,S),S},g=this&&this.__param||function(o,l){return function(n,a){l(n,a,o)}},x=this&&this.__values||function(o){var l=typeof Symbol=="function"&&Symbol.iterator,n=l&&o[l],a=0;if(n)return n.call(o);if(o&&typeof o.length=="number")return{next:function(){return o&&a>=o.length&&(o=void 0),{value:o&&o[a++],done:!o}}};throw new TypeError(l?"Object is not iterable.":"Symbol.iterator is not defined.")},C=this&&this.__read||function(o,l){var n=typeof Symbol=="function"&&o[Symbol.iterator];if(!n)return o;var a,h,d=n.call(o),S=[];try{for(;(l===void 0||l-- >0)&&!(a=d.next()).done;)S.push(a.value)}catch(T){h={error:T}}finally{try{a&&!a.done&&(n=d.return)&&n.call(d)}finally{if(h)throw h.error}}return S};Object.defineProperty(f,"__esModule",{value:!0}),f.Linkifier2=void 0;var u=k(2585),p=k(8460),w=k(844),b=k(3656),c=function(o){function l(n){var a=o.call(this)||this;return a._bufferService=n,a._linkProviders=[],a._linkCacheDisposables=[],a._isMouseOut=!0,a._activeLine=-1,a._onShowLinkUnderline=a.register(new p.EventEmitter),a._onHideLinkUnderline=a.register(new p.EventEmitter),a.register((0,w.getDisposeArrayDisposable)(a._linkCacheDisposables)),a}return y(l,o),Object.defineProperty(l.prototype,"currentLink",{get:function(){return this._currentLink},enumerable:!1,configurable:!0}),Object.defineProperty(l.prototype,"onShowLinkUnderline",{get:function(){return this._onShowLinkUnderline.event},enumerable:!1,configurable:!0}),Object.defineProperty(l.prototype,"onHideLinkUnderline",{get:function(){return this._onHideLinkUnderline.event},enumerable:!1,configurable:!0}),l.prototype.registerLinkProvider=function(n){var a=this;return this._linkProviders.push(n),{dispose:function(){var h=a._linkProviders.indexOf(n);h!==-1&&a._linkProviders.splice(h,1)}}},l.prototype.attachToDom=function(n,a,h){var d=this;this._element=n,this._mouseService=a,this._renderService=h,this.register((0,b.addDisposableDomListener)(this._element,"mouseleave",function(){d._isMouseOut=!0,d._clearCurrentLink()})),this.register((0,b.addDisposableDomListener)(this._element,"mousemove",this._onMouseMove.bind(this))),this.register((0,b.addDisposableDomListener)(this._element,"mousedown",this._handleMouseDown.bind(this))),this.register((0,b.addDisposableDomListener)(this._element,"mouseup",this._handleMouseUp.bind(this)))},l.prototype._onMouseMove=function(n){if(this._lastMouseEvent=n,this._element&&this._mouseService){var a=this._positionFromMouseEvent(n,this._element,this._mouseService);if(a){this._isMouseOut=!1;for(var h=n.composedPath(),d=0;dn?this._bufferService.cols:E.link.range.end.x,W=M;W<=D;W++){if(h.has(W)){S.splice(T--,1);break}h.add(W)}}},l.prototype._checkLinkProviderResult=function(n,a,h){var d,S=this;if(!this._activeProviderReplies)return h;for(var T=this._activeProviderReplies.get(n),E=!1,M=0;M=n&&this._currentLink.link.range.end.y<=a)&&(this._linkLeave(this._element,this._currentLink.link,this._lastMouseEvent),this._currentLink=void 0,(0,w.disposeArray)(this._linkCacheDisposables))},l.prototype._handleNewLink=function(n){var a=this;if(this._element&&this._lastMouseEvent&&this._mouseService){var h=this._positionFromMouseEvent(this._lastMouseEvent,this._element,this._mouseService);h&&this._linkAtPosition(n.link,h)&&(this._currentLink=n,this._currentLink.state={decorations:{underline:n.link.decorations===void 0||n.link.decorations.underline,pointerCursor:n.link.decorations===void 0||n.link.decorations.pointerCursor},isHovered:!0},this._linkHover(this._element,n.link,this._lastMouseEvent),n.link.decorations={},Object.defineProperties(n.link.decorations,{pointerCursor:{get:function(){var d,S;return(S=(d=a._currentLink)===null||d===void 0?void 0:d.state)===null||S===void 0?void 0:S.decorations.pointerCursor},set:function(d){var S,T;!((S=a._currentLink)===null||S===void 0)&&S.state&&a._currentLink.state.decorations.pointerCursor!==d&&(a._currentLink.state.decorations.pointerCursor=d,a._currentLink.state.isHovered&&((T=a._element)===null||T===void 0||T.classList.toggle("xterm-cursor-pointer",d)))}},underline:{get:function(){var d,S;return(S=(d=a._currentLink)===null||d===void 0?void 0:d.state)===null||S===void 0?void 0:S.decorations.underline},set:function(d){var S,T,E;!((S=a._currentLink)===null||S===void 0)&&S.state&&((E=(T=a._currentLink)===null||T===void 0?void 0:T.state)===null||E===void 0?void 0:E.decorations.underline)!==d&&(a._currentLink.state.decorations.underline=d,a._currentLink.state.isHovered&&a._fireUnderlineEvent(n.link,d))}}}),this._renderService&&this._linkCacheDisposables.push(this._renderService.onRenderedViewportChange(function(d){var S=d.start===0?0:d.start+1+a._bufferService.buffer.ydisp;a._clearCurrentLink(S,d.end+1+a._bufferService.buffer.ydisp)})))}},l.prototype._linkHover=function(n,a,h){var d;!((d=this._currentLink)===null||d===void 0)&&d.state&&(this._currentLink.state.isHovered=!0,this._currentLink.state.decorations.underline&&this._fireUnderlineEvent(a,!0),this._currentLink.state.decorations.pointerCursor&&n.classList.add("xterm-cursor-pointer")),a.hover&&a.hover(h,a.text)},l.prototype._fireUnderlineEvent=function(n,a){var h=n.range,d=this._bufferService.buffer.ydisp,S=this._createLinkUnderlineEvent(h.start.x-1,h.start.y-d-1,h.end.x,h.end.y-d-1,void 0);(a?this._onShowLinkUnderline:this._onHideLinkUnderline).fire(S)},l.prototype._linkLeave=function(n,a,h){var d;!((d=this._currentLink)===null||d===void 0)&&d.state&&(this._currentLink.state.isHovered=!1,this._currentLink.state.decorations.underline&&this._fireUnderlineEvent(a,!1),this._currentLink.state.decorations.pointerCursor&&n.classList.remove("xterm-cursor-pointer")),a.leave&&a.leave(h,a.text)},l.prototype._linkAtPosition=function(n,a){var h=n.range.start.y===n.range.end.y,d=n.range.start.ya.y;return(h&&n.range.start.x<=a.x&&n.range.end.x>=a.x||d&&n.range.end.x>=a.x||S&&n.range.start.x<=a.x||d&&S)&&n.range.start.y<=a.y&&n.range.end.y>=a.y},l.prototype._positionFromMouseEvent=function(n,a,h){var d=h.getCoords(n,a,this._bufferService.cols,this._bufferService.rows);if(d)return{x:d[0],y:d[1]+this._bufferService.buffer.ydisp}},l.prototype._createLinkUnderlineEvent=function(n,a,h,d,S){return{x1:n,y1:a,x2:h,y2:d,cols:this._bufferService.cols,fg:S}},_([g(0,u.IBufferService)],l)}(w.Disposable);f.Linkifier2=c},9042:(R,f)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.tooMuchOutput=f.promptLabel=void 0,f.promptLabel="Terminal input",f.tooMuchOutput="Too much output to announce, navigate to rows manually to read"},6954:function(R,f,k){var m,y=this&&this.__extends||(m=function(b,c){return m=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(o,l){o.__proto__=l}||function(o,l){for(var n in l)Object.prototype.hasOwnProperty.call(l,n)&&(o[n]=l[n])},m(b,c)},function(b,c){if(typeof c!="function"&&c!==null)throw new TypeError("Class extends value "+String(c)+" is not a constructor or null");function o(){this.constructor=b}m(b,c),b.prototype=c===null?Object.create(c):(o.prototype=c.prototype,new o)}),_=this&&this.__decorate||function(b,c,o,l){var n,a=arguments.length,h=a<3?c:l===null?l=Object.getOwnPropertyDescriptor(c,o):l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")h=Reflect.decorate(b,c,o,l);else for(var d=b.length-1;d>=0;d--)(n=b[d])&&(h=(a<3?n(h):a>3?n(c,o,h):n(c,o))||h);return a>3&&h&&Object.defineProperty(c,o,h),h},g=this&&this.__param||function(b,c){return function(o,l){c(o,l,b)}};Object.defineProperty(f,"__esModule",{value:!0}),f.MouseZoneManager=void 0;var x=k(844),C=k(3656),u=k(4725),p=k(2585),w=function(b){function c(o,l,n,a,h,d){var S=b.call(this)||this;return S._element=o,S._screenElement=l,S._bufferService=n,S._mouseService=a,S._selectionService=h,S._optionsService=d,S._zones=[],S._areZonesActive=!1,S._lastHoverCoords=[void 0,void 0],S._initialSelectionLength=0,S.register((0,C.addDisposableDomListener)(S._element,"mousedown",function(T){return S._onMouseDown(T)})),S._mouseMoveListener=function(T){return S._onMouseMove(T)},S._mouseLeaveListener=function(T){return S._onMouseLeave(T)},S._clickListener=function(T){return S._onClick(T)},S}return y(c,b),c.prototype.dispose=function(){b.prototype.dispose.call(this),this._deactivate()},c.prototype.add=function(o){this._zones.push(o),this._zones.length===1&&this._activate()},c.prototype.clearAll=function(o,l){if(this._zones.length!==0){o&&l||(o=0,l=this._bufferService.rows-1);for(var n=0;no&&a.y1<=l+1||a.y2>o&&a.y2<=l+1||a.y1l+1)&&(this._currentZone&&this._currentZone===a&&(this._currentZone.leaveCallback(),this._currentZone=void 0),this._zones.splice(n--,1))}this._zones.length===0&&this._deactivate()}},c.prototype._activate=function(){this._areZonesActive||(this._areZonesActive=!0,this._element.addEventListener("mousemove",this._mouseMoveListener),this._element.addEventListener("mouseleave",this._mouseLeaveListener),this._element.addEventListener("click",this._clickListener))},c.prototype._deactivate=function(){this._areZonesActive&&(this._areZonesActive=!1,this._element.removeEventListener("mousemove",this._mouseMoveListener),this._element.removeEventListener("mouseleave",this._mouseLeaveListener),this._element.removeEventListener("click",this._clickListener))},c.prototype._onMouseMove=function(o){this._lastHoverCoords[0]===o.pageX&&this._lastHoverCoords[1]===o.pageY||(this._onHover(o),this._lastHoverCoords=[o.pageX,o.pageY])},c.prototype._onHover=function(o){var l=this,n=this._findZoneEventAt(o);n!==this._currentZone&&(this._currentZone&&(this._currentZone.leaveCallback(),this._currentZone=void 0,this._tooltipTimeout&&clearTimeout(this._tooltipTimeout)),n&&(this._currentZone=n,n.hoverCallback&&n.hoverCallback(o),this._tooltipTimeout=window.setTimeout(function(){return l._onTooltip(o)},this._optionsService.rawOptions.linkTooltipHoverDuration)))},c.prototype._onTooltip=function(o){this._tooltipTimeout=void 0;var l=this._findZoneEventAt(o);l?.tooltipCallback(o)},c.prototype._onMouseDown=function(o){if(this._initialSelectionLength=this._getSelectionLength(),this._areZonesActive){var l=this._findZoneEventAt(o);l?.willLinkActivate(o)&&(o.preventDefault(),o.stopImmediatePropagation())}},c.prototype._onMouseLeave=function(o){this._currentZone&&(this._currentZone.leaveCallback(),this._currentZone=void 0,this._tooltipTimeout&&clearTimeout(this._tooltipTimeout))},c.prototype._onClick=function(o){var l=this._findZoneEventAt(o),n=this._getSelectionLength();l&&n===this._initialSelectionLength&&(l.clickCallback(o),o.preventDefault(),o.stopImmediatePropagation())},c.prototype._getSelectionLength=function(){var o=this._selectionService.selectionText;return o?o.length:0},c.prototype._findZoneEventAt=function(o){var l=this._mouseService.getCoords(o,this._screenElement,this._bufferService.cols,this._bufferService.rows);if(l)for(var n=l[0],a=l[1],h=0;h=d.x1&&n=d.x1||a===d.y2&&nd.y1&&a=y.length&&(y=void 0),{value:y&&y[x++],done:!y}}};throw new TypeError(_?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(f,"__esModule",{value:!0}),f.RenderDebouncer=void 0;var m=function(){function y(_){this._renderCallback=_,this._refreshCallbacks=[]}return y.prototype.dispose=function(){this._animationFrame&&(window.cancelAnimationFrame(this._animationFrame),this._animationFrame=void 0)},y.prototype.addRefreshCallback=function(_){var g=this;return this._refreshCallbacks.push(_),this._animationFrame||(this._animationFrame=window.requestAnimationFrame(function(){return g._innerRefresh()})),this._animationFrame},y.prototype.refresh=function(_,g,x){var C=this;this._rowCount=x,_=_!==void 0?_:0,g=g!==void 0?g:this._rowCount-1,this._rowStart=this._rowStart!==void 0?Math.min(this._rowStart,_):_,this._rowEnd=this._rowEnd!==void 0?Math.max(this._rowEnd,g):g,this._animationFrame||(this._animationFrame=window.requestAnimationFrame(function(){return C._innerRefresh()}))},y.prototype._innerRefresh=function(){if(this._animationFrame=void 0,this._rowStart!==void 0&&this._rowEnd!==void 0&&this._rowCount!==void 0){var _=Math.max(this._rowStart,0),g=Math.min(this._rowEnd,this._rowCount-1);this._rowStart=void 0,this._rowEnd=void 0,this._renderCallback(_,g),this._runRefreshCallbacks()}else this._runRefreshCallbacks()},y.prototype._runRefreshCallbacks=function(){var _,g;try{for(var x=k(this._refreshCallbacks),C=x.next();!C.done;C=x.next())(0,C.value)(0)}catch(u){_={error:u}}finally{try{C&&!C.done&&(g=x.return)&&g.call(x)}finally{if(_)throw _.error}}this._refreshCallbacks=[]},y}();f.RenderDebouncer=m},5596:function(R,f,k){var m,y=this&&this.__extends||(m=function(g,x){return m=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(C,u){C.__proto__=u}||function(C,u){for(var p in u)Object.prototype.hasOwnProperty.call(u,p)&&(C[p]=u[p])},m(g,x)},function(g,x){if(typeof x!="function"&&x!==null)throw new TypeError("Class extends value "+String(x)+" is not a constructor or null");function C(){this.constructor=g}m(g,x),g.prototype=x===null?Object.create(x):(C.prototype=x.prototype,new C)});Object.defineProperty(f,"__esModule",{value:!0}),f.ScreenDprMonitor=void 0;var _=function(g){function x(){var C=g!==null&&g.apply(this,arguments)||this;return C._currentDevicePixelRatio=window.devicePixelRatio,C}return y(x,g),x.prototype.setListener=function(C){var u=this;this._listener&&this.clearListener(),this._listener=C,this._outerListener=function(){u._listener&&(u._listener(window.devicePixelRatio,u._currentDevicePixelRatio),u._updateDpr())},this._updateDpr()},x.prototype.dispose=function(){g.prototype.dispose.call(this),this.clearListener()},x.prototype._updateDpr=function(){var C;this._outerListener&&((C=this._resolutionMediaMatchList)===null||C===void 0||C.removeListener(this._outerListener),this._currentDevicePixelRatio=window.devicePixelRatio,this._resolutionMediaMatchList=window.matchMedia("screen and (resolution: "+window.devicePixelRatio+"dppx)"),this._resolutionMediaMatchList.addListener(this._outerListener))},x.prototype.clearListener=function(){this._resolutionMediaMatchList&&this._listener&&this._outerListener&&(this._resolutionMediaMatchList.removeListener(this._outerListener),this._resolutionMediaMatchList=void 0,this._listener=void 0,this._outerListener=void 0)},x}(k(844).Disposable);f.ScreenDprMonitor=_},3236:function(R,f,k){var m,y=this&&this.__extends||(m=function(ge,le){return m=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(V,Y){V.__proto__=Y}||function(V,Y){for(var se in Y)Object.prototype.hasOwnProperty.call(Y,se)&&(V[se]=Y[se])},m(ge,le)},function(ge,le){if(typeof le!="function"&&le!==null)throw new TypeError("Class extends value "+String(le)+" is not a constructor or null");function V(){this.constructor=ge}m(ge,le),ge.prototype=le===null?Object.create(le):(V.prototype=le.prototype,new V)}),_=this&&this.__values||function(ge){var le=typeof Symbol=="function"&&Symbol.iterator,V=le&&ge[le],Y=0;if(V)return V.call(ge);if(ge&&typeof ge.length=="number")return{next:function(){return ge&&Y>=ge.length&&(ge=void 0),{value:ge&&ge[Y++],done:!ge}}};throw new TypeError(le?"Object is not iterable.":"Symbol.iterator is not defined.")},g=this&&this.__read||function(ge,le){var V=typeof Symbol=="function"&&ge[Symbol.iterator];if(!V)return ge;var Y,se,xe=V.call(ge),Ee=[];try{for(;(le===void 0||le-- >0)&&!(Y=xe.next()).done;)Ee.push(Y.value)}catch(De){se={error:De}}finally{try{Y&&!Y.done&&(V=xe.return)&&V.call(xe)}finally{if(se)throw se.error}}return Ee},x=this&&this.__spreadArray||function(ge,le,V){if(V||arguments.length===2)for(var Y,se=0,xe=le.length;se4)&&Y.coreMouseService.triggerMouseEvent({col:Jt.x-33,row:Jt.y-33,button:$e,action:dt,ctrl:we.ctrlKey,alt:we.altKey,shift:we.shiftKey})}var Ee={mouseup:null,wheel:null,mousedrag:null,mousemove:null},De=function(we){return xe(we),we.buttons||(V._document.removeEventListener("mouseup",Ee.mouseup),Ee.mousedrag&&V._document.removeEventListener("mousemove",Ee.mousedrag)),V.cancel(we)},je=function(we){return xe(we),V.cancel(we,!0)},Re=function(we){we.buttons&&xe(we)},Ze=function(we){we.buttons||xe(we)};this.register(this.coreMouseService.onProtocolChange(function(we){we?(V.optionsService.rawOptions.logLevel==="debug"&&V._logService.debug("Binding to mouse events:",V.coreMouseService.explainEvents(we)),V.element.classList.add("enable-mouse-events"),V._selectionService.disable()):(V._logService.debug("Unbinding from mouse events."),V.element.classList.remove("enable-mouse-events"),V._selectionService.enable()),8&we?Ee.mousemove||(se.addEventListener("mousemove",Ze),Ee.mousemove=Ze):(se.removeEventListener("mousemove",Ee.mousemove),Ee.mousemove=null),16&we?Ee.wheel||(se.addEventListener("wheel",je,{passive:!1}),Ee.wheel=je):(se.removeEventListener("wheel",Ee.wheel),Ee.wheel=null),2&we?Ee.mouseup||(Ee.mouseup=De):(V._document.removeEventListener("mouseup",Ee.mouseup),Ee.mouseup=null),4&we?Ee.mousedrag||(Ee.mousedrag=Re):(V._document.removeEventListener("mousemove",Ee.mousedrag),Ee.mousedrag=null)})),this.coreMouseService.activeProtocol=this.coreMouseService.activeProtocol,this.register((0,a.addDisposableDomListener)(se,"mousedown",function(we){if(we.preventDefault(),V.focus(),V.coreMouseService.areMouseEventsActive&&!V._selectionService.shouldForceSelection(we))return xe(we),Ee.mouseup&&V._document.addEventListener("mouseup",Ee.mouseup),Ee.mousedrag&&V._document.addEventListener("mousemove",Ee.mousedrag),V.cancel(we)})),this.register((0,a.addDisposableDomListener)(se,"wheel",function(we){if(!Ee.wheel){if(!V.buffer.hasScrollback){var $e=V.viewport.getLinesScrolled(we);if($e===0)return;for(var dt=w.C0.ESC+(V.coreService.decPrivateModes.applicationCursorKeys?"O":"[")+(we.deltaY<0?"A":"B"),Jt="",br=0;br=65&&V.key.charCodeAt(0)<=90)||(this._unprocessedDeadKey?(this._unprocessedDeadKey=!1,!0):(se.key!==w.C0.ETX&&se.key!==w.C0.CR||(this.textarea.value=""),this._onKey.fire({key:se.key,domEvent:V}),this._showCursor(),this.coreService.triggerDataEvent(se.key,!0),this.optionsService.rawOptions.screenReaderMode?void(this._keyDownHandled=!0):this.cancel(V,!0))))},le.prototype._isThirdLevelShift=function(V,Y){var se=V.isMac&&!this.options.macOptionIsMeta&&Y.altKey&&!Y.ctrlKey&&!Y.metaKey||V.isWindows&&Y.altKey&&Y.ctrlKey&&!Y.metaKey||V.isWindows&&Y.getModifierState("AltGraph");return Y.type==="keypress"?se:se&&(!Y.keyCode||Y.keyCode>47)},le.prototype._keyUp=function(V){this._keyDownSeen=!1,this._customKeyEventHandler&&this._customKeyEventHandler(V)===!1||(function(Y){return Y.keyCode===16||Y.keyCode===17||Y.keyCode===18}(V)||this.focus(),this.updateCursorStyle(V),this._keyPressHandled=!1)},le.prototype._keyPress=function(V){var Y;if(this._keyPressHandled=!1,this._keyDownHandled||this._customKeyEventHandler&&this._customKeyEventHandler(V)===!1)return!1;if(this.cancel(V),V.charCode)Y=V.charCode;else if(V.which===null||V.which===void 0)Y=V.keyCode;else{if(V.which===0||V.charCode===0)return!1;Y=V.which}return!(!Y||(V.altKey||V.ctrlKey||V.metaKey)&&!this._isThirdLevelShift(this.browser,V)||(Y=String.fromCharCode(Y),this._onKey.fire({key:Y,domEvent:V}),this._showCursor(),this.coreService.triggerDataEvent(Y,!0),this._keyPressHandled=!0,this._unprocessedDeadKey=!1,0))},le.prototype._inputEvent=function(V){if(V.data&&V.inputType==="insertText"&&(!V.composed||!this._keyDownSeen)&&!this.optionsService.rawOptions.screenReaderMode){if(this._keyPressHandled)return!1;this._unprocessedDeadKey=!1;var Y=V.data;return this.coreService.triggerDataEvent(Y,!0),this.cancel(V),!0}return!1},le.prototype.bell=function(){var V;this._soundBell()&&((V=this._soundService)===null||V===void 0||V.playBellSound()),this._onBell.fire()},le.prototype.resize=function(V,Y){V!==this.cols||Y!==this.rows?ge.prototype.resize.call(this,V,Y):this._charSizeService&&!this._charSizeService.hasValidSize&&this._charSizeService.measure()},le.prototype._afterResize=function(V,Y){var se,xe;(se=this._charSizeService)===null||se===void 0||se.measure(),(xe=this.viewport)===null||xe===void 0||xe.syncScrollArea(!0)},le.prototype.clear=function(){if(this.buffer.ybase!==0||this.buffer.y!==0){this.buffer.clearAllMarkers(),this.buffer.lines.set(0,this.buffer.lines.get(this.buffer.ybase+this.buffer.y)),this.buffer.lines.length=1,this.buffer.ydisp=0,this.buffer.ybase=0,this.buffer.y=0;for(var V=1;V{Object.defineProperty(f,"__esModule",{value:!0}),f.TimeBasedDebouncer=void 0;var k=function(){function m(y,_){_===void 0&&(_=1e3),this._renderCallback=y,this._debounceThresholdMS=_,this._lastRefreshMs=0,this._additionalRefreshRequested=!1}return m.prototype.dispose=function(){this._refreshTimeoutID&&clearTimeout(this._refreshTimeoutID)},m.prototype.refresh=function(y,_,g){var x=this;this._rowCount=g,y=y!==void 0?y:0,_=_!==void 0?_:this._rowCount-1,this._rowStart=this._rowStart!==void 0?Math.min(this._rowStart,y):y,this._rowEnd=this._rowEnd!==void 0?Math.max(this._rowEnd,_):_;var C=Date.now();if(C-this._lastRefreshMs>=this._debounceThresholdMS)this._lastRefreshMs=C,this._innerRefresh();else if(!this._additionalRefreshRequested){var u=C-this._lastRefreshMs,p=this._debounceThresholdMS-u;this._additionalRefreshRequested=!0,this._refreshTimeoutID=window.setTimeout(function(){x._lastRefreshMs=Date.now(),x._innerRefresh(),x._additionalRefreshRequested=!1,x._refreshTimeoutID=void 0},p)}},m.prototype._innerRefresh=function(){if(this._rowStart!==void 0&&this._rowEnd!==void 0&&this._rowCount!==void 0){var y=Math.max(this._rowStart,0),_=Math.min(this._rowEnd,this._rowCount-1);this._rowStart=void 0,this._rowEnd=void 0,this._renderCallback(y,_)}},m}();f.TimeBasedDebouncer=k},1680:function(R,f,k){var m,y=this&&this.__extends||(m=function(b,c){return m=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(o,l){o.__proto__=l}||function(o,l){for(var n in l)Object.prototype.hasOwnProperty.call(l,n)&&(o[n]=l[n])},m(b,c)},function(b,c){if(typeof c!="function"&&c!==null)throw new TypeError("Class extends value "+String(c)+" is not a constructor or null");function o(){this.constructor=b}m(b,c),b.prototype=c===null?Object.create(c):(o.prototype=c.prototype,new o)}),_=this&&this.__decorate||function(b,c,o,l){var n,a=arguments.length,h=a<3?c:l===null?l=Object.getOwnPropertyDescriptor(c,o):l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")h=Reflect.decorate(b,c,o,l);else for(var d=b.length-1;d>=0;d--)(n=b[d])&&(h=(a<3?n(h):a>3?n(c,o,h):n(c,o))||h);return a>3&&h&&Object.defineProperty(c,o,h),h},g=this&&this.__param||function(b,c){return function(o,l){c(o,l,b)}};Object.defineProperty(f,"__esModule",{value:!0}),f.Viewport=void 0;var x=k(844),C=k(3656),u=k(4725),p=k(2585),w=function(b){function c(o,l,n,a,h,d,S,T){var E=b.call(this)||this;return E._scrollLines=o,E._viewportElement=l,E._scrollArea=n,E._element=a,E._bufferService=h,E._optionsService=d,E._charSizeService=S,E._renderService=T,E.scrollBarWidth=0,E._currentRowHeight=0,E._currentScaledCellHeight=0,E._lastRecordedBufferLength=0,E._lastRecordedViewportHeight=0,E._lastRecordedBufferHeight=0,E._lastTouchY=0,E._lastScrollTop=0,E._wheelPartialScroll=0,E._refreshAnimationFrame=null,E._ignoreNextScrollEvent=!1,E.scrollBarWidth=E._viewportElement.offsetWidth-E._scrollArea.offsetWidth||15,E.register((0,C.addDisposableDomListener)(E._viewportElement,"scroll",E._onScroll.bind(E))),E._activeBuffer=E._bufferService.buffer,E.register(E._bufferService.buffers.onBufferActivate(function(M){return E._activeBuffer=M.activeBuffer})),E._renderDimensions=E._renderService.dimensions,E.register(E._renderService.onDimensionsChange(function(M){return E._renderDimensions=M})),setTimeout(function(){return E.syncScrollArea()},0),E}return y(c,b),c.prototype.onThemeChange=function(o){this._viewportElement.style.backgroundColor=o.background.css},c.prototype._refresh=function(o){var l=this;if(o)return this._innerRefresh(),void(this._refreshAnimationFrame!==null&&cancelAnimationFrame(this._refreshAnimationFrame));this._refreshAnimationFrame===null&&(this._refreshAnimationFrame=requestAnimationFrame(function(){return l._innerRefresh()}))},c.prototype._innerRefresh=function(){if(this._charSizeService.height>0){this._currentRowHeight=this._renderService.dimensions.scaledCellHeight/window.devicePixelRatio,this._currentScaledCellHeight=this._renderService.dimensions.scaledCellHeight,this._lastRecordedViewportHeight=this._viewportElement.offsetHeight;var o=Math.round(this._currentRowHeight*this._lastRecordedBufferLength)+(this._lastRecordedViewportHeight-this._renderService.dimensions.canvasHeight);this._lastRecordedBufferHeight!==o&&(this._lastRecordedBufferHeight=o,this._scrollArea.style.height=this._lastRecordedBufferHeight+"px")}var l=this._bufferService.buffer.ydisp*this._currentRowHeight;this._viewportElement.scrollTop!==l&&(this._ignoreNextScrollEvent=!0,this._viewportElement.scrollTop=l),this._refreshAnimationFrame=null},c.prototype.syncScrollArea=function(o){if(o===void 0&&(o=!1),this._lastRecordedBufferLength!==this._bufferService.buffer.lines.length)return this._lastRecordedBufferLength=this._bufferService.buffer.lines.length,void this._refresh(o);this._lastRecordedViewportHeight===this._renderService.dimensions.canvasHeight&&this._lastScrollTop===this._activeBuffer.ydisp*this._currentRowHeight&&this._renderDimensions.scaledCellHeight===this._currentScaledCellHeight||this._refresh(o)},c.prototype._onScroll=function(o){if(this._lastScrollTop=this._viewportElement.scrollTop,this._viewportElement.offsetParent){if(this._ignoreNextScrollEvent)return this._ignoreNextScrollEvent=!1,void this._scrollLines(0);var l=Math.round(this._lastScrollTop/this._currentRowHeight)-this._bufferService.buffer.ydisp;this._scrollLines(l)}},c.prototype._bubbleScroll=function(o,l){var n=this._viewportElement.scrollTop+this._lastRecordedViewportHeight;return!(l<0&&this._viewportElement.scrollTop!==0||l>0&&n0?1:-1),this._wheelPartialScroll%=1):o.deltaMode===WheelEvent.DOM_DELTA_PAGE&&(l*=this._bufferService.rows),l},c.prototype._applyScrollModifier=function(o,l){var n=this._optionsService.rawOptions.fastScrollModifier;return n==="alt"&&l.altKey||n==="ctrl"&&l.ctrlKey||n==="shift"&&l.shiftKey?o*this._optionsService.rawOptions.fastScrollSensitivity*this._optionsService.rawOptions.scrollSensitivity:o*this._optionsService.rawOptions.scrollSensitivity},c.prototype.onTouchStart=function(o){this._lastTouchY=o.touches[0].pageY},c.prototype.onTouchMove=function(o){var l=this._lastTouchY-o.touches[0].pageY;return this._lastTouchY=o.touches[0].pageY,l!==0&&(this._viewportElement.scrollTop+=l,this._bubbleScroll(o,l))},_([g(4,p.IBufferService),g(5,p.IOptionsService),g(6,u.ICharSizeService),g(7,u.IRenderService)],c)}(x.Disposable);f.Viewport=w},3107:function(R,f,k){var m,y=this&&this.__extends||(m=function(c,o){return m=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(l,n){l.__proto__=n}||function(l,n){for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(l[a]=n[a])},m(c,o)},function(c,o){if(typeof o!="function"&&o!==null)throw new TypeError("Class extends value "+String(o)+" is not a constructor or null");function l(){this.constructor=c}m(c,o),c.prototype=o===null?Object.create(o):(l.prototype=o.prototype,new l)}),_=this&&this.__decorate||function(c,o,l,n){var a,h=arguments.length,d=h<3?o:n===null?n=Object.getOwnPropertyDescriptor(o,l):n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")d=Reflect.decorate(c,o,l,n);else for(var S=c.length-1;S>=0;S--)(a=c[S])&&(d=(h<3?a(d):h>3?a(o,l,d):a(o,l))||d);return h>3&&d&&Object.defineProperty(o,l,d),d},g=this&&this.__param||function(c,o){return function(l,n){o(l,n,c)}},x=this&&this.__values||function(c){var o=typeof Symbol=="function"&&Symbol.iterator,l=o&&c[o],n=0;if(l)return l.call(c);if(c&&typeof c.length=="number")return{next:function(){return c&&n>=c.length&&(c=void 0),{value:c&&c[n++],done:!c}}};throw new TypeError(o?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(f,"__esModule",{value:!0}),f.BufferDecorationRenderer=void 0;var C=k(3656),u=k(4725),p=k(844),w=k(2585),b=function(c){function o(l,n,a,h){var d=c.call(this)||this;return d._screenElement=l,d._bufferService=n,d._decorationService=a,d._renderService=h,d._decorationElements=new Map,d._altBufferIsActive=!1,d._dimensionsChanged=!1,d._container=document.createElement("div"),d._container.classList.add("xterm-decoration-container"),d._screenElement.appendChild(d._container),d.register(d._renderService.onRenderedViewportChange(function(){return d._queueRefresh()})),d.register(d._renderService.onDimensionsChange(function(){d._dimensionsChanged=!0,d._queueRefresh()})),d.register((0,C.addDisposableDomListener)(window,"resize",function(){return d._queueRefresh()})),d.register(d._bufferService.buffers.onBufferActivate(function(){d._altBufferIsActive=d._bufferService.buffer===d._bufferService.buffers.alt})),d.register(d._decorationService.onDecorationRegistered(function(){return d._queueRefresh()})),d.register(d._decorationService.onDecorationRemoved(function(S){return d._removeDecoration(S)})),d}return y(o,c),o.prototype.dispose=function(){this._container.remove(),this._decorationElements.clear(),c.prototype.dispose.call(this)},o.prototype._queueRefresh=function(){var l=this;this._animationFrame===void 0&&(this._animationFrame=this._renderService.addRefreshCallback(function(){l.refreshDecorations(),l._animationFrame=void 0}))},o.prototype.refreshDecorations=function(){var l,n;try{for(var a=x(this._decorationService.decorations),h=a.next();!h.done;h=a.next()){var d=h.value;this._renderDecoration(d)}}catch(S){l={error:S}}finally{try{h&&!h.done&&(n=a.return)&&n.call(a)}finally{if(l)throw l.error}}this._dimensionsChanged=!1},o.prototype._renderDecoration=function(l){this._refreshStyle(l),this._dimensionsChanged&&this._refreshXPosition(l)},o.prototype._createElement=function(l){var n,a=document.createElement("div");a.classList.add("xterm-decoration"),a.style.width=Math.round((l.options.width||1)*this._renderService.dimensions.actualCellWidth)+"px",a.style.height=(l.options.height||1)*this._renderService.dimensions.actualCellHeight+"px",a.style.top=(l.marker.line-this._bufferService.buffers.active.ydisp)*this._renderService.dimensions.actualCellHeight+"px",a.style.lineHeight=this._renderService.dimensions.actualCellHeight+"px";var h=(n=l.options.x)!==null&&n!==void 0?n:0;return h&&h>this._bufferService.cols&&(a.style.display="none"),this._refreshXPosition(l,a),a},o.prototype._refreshStyle=function(l){var n=this,a=l.marker.line-this._bufferService.buffers.active.ydisp;if(a<0||a>=this._bufferService.rows)l.element&&(l.element.style.display="none",l.onRenderEmitter.fire(l.element));else{var h=this._decorationElements.get(l);h||(l.onDispose(function(){return n._removeDecoration(l)}),h=this._createElement(l),l.element=h,this._decorationElements.set(l,h),this._container.appendChild(h)),h.style.top=a*this._renderService.dimensions.actualCellHeight+"px",h.style.display=this._altBufferIsActive?"none":"block",l.onRenderEmitter.fire(h)}},o.prototype._refreshXPosition=function(l,n){var a;if(n===void 0&&(n=l.element),n){var h=(a=l.options.x)!==null&&a!==void 0?a:0;(l.options.anchor||"left")==="right"?n.style.right=h?h*this._renderService.dimensions.actualCellWidth+"px":"":n.style.left=h?h*this._renderService.dimensions.actualCellWidth+"px":""}},o.prototype._removeDecoration=function(l){var n;(n=this._decorationElements.get(l))===null||n===void 0||n.remove(),this._decorationElements.delete(l)},_([g(1,w.IBufferService),g(2,w.IDecorationService),g(3,u.IRenderService)],o)}(p.Disposable);f.BufferDecorationRenderer=b},5871:function(R,f){var k=this&&this.__values||function(y){var _=typeof Symbol=="function"&&Symbol.iterator,g=_&&y[_],x=0;if(g)return g.call(y);if(y&&typeof y.length=="number")return{next:function(){return y&&x>=y.length&&(y=void 0),{value:y&&y[x++],done:!y}}};throw new TypeError(_?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(f,"__esModule",{value:!0}),f.ColorZoneStore=void 0;var m=function(){function y(){this._zones=[],this._zonePool=[],this._zonePoolIndex=0,this._linePadding={full:0,left:0,center:0,right:0}}return Object.defineProperty(y.prototype,"zones",{get:function(){return this._zonePool.length=Math.min(this._zonePool.length,this._zones.length),this._zones},enumerable:!1,configurable:!0}),y.prototype.clear=function(){this._zones.length=0,this._zonePoolIndex=0},y.prototype.addDecoration=function(_){var g,x;if(_.options.overviewRulerOptions){try{for(var C=k(this._zones),u=C.next();!u.done;u=C.next()){var p=u.value;if(p.color===_.options.overviewRulerOptions.color&&p.position===_.options.overviewRulerOptions.position){if(this._lineIntersectsZone(p,_.marker.line))return;if(this._lineAdjacentToZone(p,_.marker.line,_.options.overviewRulerOptions.position))return void this._addLineToZone(p,_.marker.line)}}}catch(w){g={error:w}}finally{try{u&&!u.done&&(x=C.return)&&x.call(C)}finally{if(g)throw g.error}}if(this._zonePoolIndex=_.startBufferLine&&g<=_.endBufferLine},y.prototype._lineAdjacentToZone=function(_,g,x){return g>=_.startBufferLine-this._linePadding[x||"full"]&&g<=_.endBufferLine+this._linePadding[x||"full"]},y.prototype._addLineToZone=function(_,g){_.startBufferLine=Math.min(_.startBufferLine,g),_.endBufferLine=Math.max(_.endBufferLine,g)},y}();f.ColorZoneStore=m},5744:function(R,f,k){var m,y=this&&this.__extends||(m=function(a,h){return m=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(d,S){d.__proto__=S}||function(d,S){for(var T in S)Object.prototype.hasOwnProperty.call(S,T)&&(d[T]=S[T])},m(a,h)},function(a,h){if(typeof h!="function"&&h!==null)throw new TypeError("Class extends value "+String(h)+" is not a constructor or null");function d(){this.constructor=a}m(a,h),a.prototype=h===null?Object.create(h):(d.prototype=h.prototype,new d)}),_=this&&this.__decorate||function(a,h,d,S){var T,E=arguments.length,M=E<3?h:S===null?S=Object.getOwnPropertyDescriptor(h,d):S;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")M=Reflect.decorate(a,h,d,S);else for(var D=a.length-1;D>=0;D--)(T=a[D])&&(M=(E<3?T(M):E>3?T(h,d,M):T(h,d))||M);return E>3&&M&&Object.defineProperty(h,d,M),M},g=this&&this.__param||function(a,h){return function(d,S){h(d,S,a)}},x=this&&this.__values||function(a){var h=typeof Symbol=="function"&&Symbol.iterator,d=h&&a[h],S=0;if(d)return d.call(a);if(a&&typeof a.length=="number")return{next:function(){return a&&S>=a.length&&(a=void 0),{value:a&&a[S++],done:!a}}};throw new TypeError(h?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(f,"__esModule",{value:!0}),f.OverviewRulerRenderer=void 0;var C=k(5871),u=k(3656),p=k(4725),w=k(844),b=k(2585),c={full:0,left:0,center:0,right:0},o={full:0,left:0,center:0,right:0},l={full:0,left:0,center:0,right:0},n=function(a){function h(d,S,T,E,M,D){var W,I=a.call(this)||this;I._viewportElement=d,I._screenElement=S,I._bufferService=T,I._decorationService=E,I._renderService=M,I._optionsService=D,I._colorZoneStore=new C.ColorZoneStore,I._shouldUpdateDimensions=!0,I._shouldUpdateAnchor=!0,I._lastKnownBufferLength=0,I._canvas=document.createElement("canvas"),I._canvas.classList.add("xterm-decoration-overview-ruler"),I._refreshCanvasDimensions(),(W=I._viewportElement.parentElement)===null||W===void 0||W.insertBefore(I._canvas,I._viewportElement);var A=I._canvas.getContext("2d");if(!A)throw new Error("Ctx cannot be null");return I._ctx=A,I._registerDecorationListeners(),I._registerBufferChangeListeners(),I._registerDimensionChangeListeners(),I}return y(h,a),Object.defineProperty(h.prototype,"_width",{get:function(){return this._optionsService.options.overviewRulerWidth||0},enumerable:!1,configurable:!0}),h.prototype._registerDecorationListeners=function(){var d=this;this.register(this._decorationService.onDecorationRegistered(function(){return d._queueRefresh(void 0,!0)})),this.register(this._decorationService.onDecorationRemoved(function(){return d._queueRefresh(void 0,!0)}))},h.prototype._registerBufferChangeListeners=function(){var d=this;this.register(this._renderService.onRenderedViewportChange(function(){return d._queueRefresh()})),this.register(this._bufferService.buffers.onBufferActivate(function(){d._canvas.style.display=d._bufferService.buffer===d._bufferService.buffers.alt?"none":"block"})),this.register(this._bufferService.onScroll(function(){d._lastKnownBufferLength!==d._bufferService.buffers.normal.lines.length&&(d._refreshDrawHeightConstants(),d._refreshColorZonePadding())}))},h.prototype._registerDimensionChangeListeners=function(){var d=this;this.register(this._renderService.onRender(function(){d._containerHeight&&d._containerHeight===d._screenElement.clientHeight||(d._queueRefresh(!0),d._containerHeight=d._screenElement.clientHeight)})),this.register(this._optionsService.onOptionChange(function(S){S==="overviewRulerWidth"&&d._queueRefresh(!0)})),this.register((0,u.addDisposableDomListener)(window,"resize",function(){d._queueRefresh(!0)})),this._queueRefresh(!0)},h.prototype.dispose=function(){var d;(d=this._canvas)===null||d===void 0||d.remove(),a.prototype.dispose.call(this)},h.prototype._refreshDrawConstants=function(){var d=Math.floor(this._canvas.width/3),S=Math.ceil(this._canvas.width/3);o.full=this._canvas.width,o.left=d,o.center=S,o.right=d,this._refreshDrawHeightConstants(),l.full=0,l.left=0,l.center=o.left,l.right=o.left+o.center},h.prototype._refreshDrawHeightConstants=function(){c.full=Math.round(2*window.devicePixelRatio);var d=this._canvas.height/this._bufferService.buffer.lines.length,S=Math.round(Math.max(Math.min(d,12),6)*window.devicePixelRatio);c.left=S,c.center=S,c.right=S},h.prototype._refreshColorZonePadding=function(){this._colorZoneStore.setPadding({full:Math.floor(this._bufferService.buffers.active.lines.length/(this._canvas.height-1)*c.full),left:Math.floor(this._bufferService.buffers.active.lines.length/(this._canvas.height-1)*c.left),center:Math.floor(this._bufferService.buffers.active.lines.length/(this._canvas.height-1)*c.center),right:Math.floor(this._bufferService.buffers.active.lines.length/(this._canvas.height-1)*c.right)}),this._lastKnownBufferLength=this._bufferService.buffers.normal.lines.length},h.prototype._refreshCanvasDimensions=function(){this._canvas.style.width=this._width+"px",this._canvas.width=Math.round(this._width*window.devicePixelRatio),this._canvas.style.height=this._screenElement.clientHeight+"px",this._canvas.height=Math.round(this._screenElement.clientHeight*window.devicePixelRatio),this._refreshDrawConstants(),this._refreshColorZonePadding()},h.prototype._refreshDecorations=function(){var d,S,T,E,M,D;this._shouldUpdateDimensions&&this._refreshCanvasDimensions(),this._ctx.clearRect(0,0,this._canvas.width,this._canvas.height),this._colorZoneStore.clear();try{for(var W=x(this._decorationService.decorations),I=W.next();!I.done;I=W.next()){var A=I.value;this._colorZoneStore.addDecoration(A)}}catch(ee){d={error:ee}}finally{try{I&&!I.done&&(S=W.return)&&S.call(W)}finally{if(d)throw d.error}}this._ctx.lineWidth=1;var H=this._colorZoneStore.zones;try{for(var F=x(H),z=F.next();!z.done;z=F.next())(ce=z.value).position!=="full"&&this._renderColorZone(ce)}catch(ee){T={error:ee}}finally{try{z&&!z.done&&(E=F.return)&&E.call(F)}finally{if(T)throw T.error}}try{for(var G=x(H),te=G.next();!te.done;te=G.next()){var ce;(ce=te.value).position==="full"&&this._renderColorZone(ce)}}catch(ee){M={error:ee}}finally{try{te&&!te.done&&(D=G.return)&&D.call(G)}finally{if(M)throw M.error}}this._shouldUpdateDimensions=!1,this._shouldUpdateAnchor=!1},h.prototype._renderColorZone=function(d){this._ctx.fillStyle=d.color,this._ctx.fillRect(l[d.position||"full"],Math.round((this._canvas.height-1)*(d.startBufferLine/this._bufferService.buffers.active.lines.length)-c[d.position||"full"]/2),o[d.position||"full"],Math.round((this._canvas.height-1)*((d.endBufferLine-d.startBufferLine)/this._bufferService.buffers.active.lines.length)+c[d.position||"full"]))},h.prototype._queueRefresh=function(d,S){var T=this;this._shouldUpdateDimensions=d||this._shouldUpdateDimensions,this._shouldUpdateAnchor=S||this._shouldUpdateAnchor,this._animationFrame===void 0&&(this._animationFrame=window.requestAnimationFrame(function(){T._refreshDecorations(),T._animationFrame=void 0}))},_([g(2,b.IBufferService),g(3,b.IDecorationService),g(4,p.IRenderService),g(5,b.IOptionsService)],h)}(w.Disposable);f.OverviewRulerRenderer=n},2950:function(R,f,k){var m=this&&this.__decorate||function(C,u,p,w){var b,c=arguments.length,o=c<3?u:w===null?w=Object.getOwnPropertyDescriptor(u,p):w;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(C,u,p,w);else for(var l=C.length-1;l>=0;l--)(b=C[l])&&(o=(c<3?b(o):c>3?b(u,p,o):b(u,p))||o);return c>3&&o&&Object.defineProperty(u,p,o),o},y=this&&this.__param||function(C,u){return function(p,w){u(p,w,C)}};Object.defineProperty(f,"__esModule",{value:!0}),f.CompositionHelper=void 0;var _=k(4725),g=k(2585),x=function(){function C(u,p,w,b,c,o){this._textarea=u,this._compositionView=p,this._bufferService=w,this._optionsService=b,this._coreService=c,this._renderService=o,this._isComposing=!1,this._isSendingComposition=!1,this._compositionPosition={start:0,end:0},this._dataAlreadySent=""}return Object.defineProperty(C.prototype,"isComposing",{get:function(){return this._isComposing},enumerable:!1,configurable:!0}),C.prototype.compositionstart=function(){this._isComposing=!0,this._compositionPosition.start=this._textarea.value.length,this._compositionView.textContent="",this._dataAlreadySent="",this._compositionView.classList.add("active")},C.prototype.compositionupdate=function(u){var p=this;this._compositionView.textContent=u.data,this.updateCompositionElements(),setTimeout(function(){p._compositionPosition.end=p._textarea.value.length},0)},C.prototype.compositionend=function(){this._finalizeComposition(!0)},C.prototype.keydown=function(u){if(this._isComposing||this._isSendingComposition){if(u.keyCode===229||u.keyCode===16||u.keyCode===17||u.keyCode===18)return!1;this._finalizeComposition(!1)}return u.keyCode!==229||(this._handleAnyTextareaChanges(),!1)},C.prototype._finalizeComposition=function(u){var p=this;if(this._compositionView.classList.remove("active"),this._isComposing=!1,u){var w={start:this._compositionPosition.start,end:this._compositionPosition.end};this._isSendingComposition=!0,setTimeout(function(){if(p._isSendingComposition){p._isSendingComposition=!1;var c;w.start+=p._dataAlreadySent.length,(c=p._isComposing?p._textarea.value.substring(w.start,w.end):p._textarea.value.substring(w.start)).length>0&&p._coreService.triggerDataEvent(c,!0)}},0)}else{this._isSendingComposition=!1;var b=this._textarea.value.substring(this._compositionPosition.start,this._compositionPosition.end);this._coreService.triggerDataEvent(b,!0)}},C.prototype._handleAnyTextareaChanges=function(){var u=this,p=this._textarea.value;setTimeout(function(){if(!u._isComposing){var w=u._textarea.value.replace(p,"");w.length>0&&(u._dataAlreadySent=w,u._coreService.triggerDataEvent(w,!0))}},0)},C.prototype.updateCompositionElements=function(u){var p=this;if(this._isComposing){if(this._bufferService.buffer.isCursorInViewport){var w=Math.min(this._bufferService.buffer.x,this._bufferService.cols-1),b=this._renderService.dimensions.actualCellHeight,c=this._bufferService.buffer.y*this._renderService.dimensions.actualCellHeight,o=w*this._renderService.dimensions.actualCellWidth;this._compositionView.style.left=o+"px",this._compositionView.style.top=c+"px",this._compositionView.style.height=b+"px",this._compositionView.style.lineHeight=b+"px",this._compositionView.style.fontFamily=this._optionsService.rawOptions.fontFamily,this._compositionView.style.fontSize=this._optionsService.rawOptions.fontSize+"px";var l=this._compositionView.getBoundingClientRect();this._textarea.style.left=o+"px",this._textarea.style.top=c+"px",this._textarea.style.width=Math.max(l.width,1)+"px",this._textarea.style.height=Math.max(l.height,1)+"px",this._textarea.style.lineHeight=l.height+"px"}u||setTimeout(function(){return p.updateCompositionElements(!0)},0)}},m([y(2,g.IBufferService),y(3,g.IOptionsService),y(4,g.ICoreService),y(5,_.IRenderService)],C)}();f.CompositionHelper=x},9806:(R,f)=>{function k(m,y,_){var g=_.getBoundingClientRect(),x=m.getComputedStyle(_),C=parseInt(x.getPropertyValue("padding-left")),u=parseInt(x.getPropertyValue("padding-top"));return[y.clientX-g.left-C,y.clientY-g.top-u]}Object.defineProperty(f,"__esModule",{value:!0}),f.getRawByteCoords=f.getCoords=f.getCoordsRelativeToElement=void 0,f.getCoordsRelativeToElement=k,f.getCoords=function(m,y,_,g,x,C,u,p,w){if(C){var b=k(m,y,_);if(b)return b[0]=Math.ceil((b[0]+(w?u/2:0))/u),b[1]=Math.ceil(b[1]/p),b[0]=Math.min(Math.max(b[0],1),g+(w?1:0)),b[1]=Math.min(Math.max(b[1],1),x),b}},f.getRawByteCoords=function(m){if(m)return{x:m[0]+32,y:m[1]+32}}},9504:(R,f,k)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.moveToCellSequence=void 0;var m=k(2584);function y(p,w,b,c){var o=p-_(b,p),l=w-_(b,w),n=Math.abs(o-l)-function(a,h,d){for(var S=0,T=a-_(d,a),E=h-_(d,h),M=0;M=0&&ww?"A":"B"}function x(p,w,b,c,o,l){for(var n=p,a=w,h="";n!==b||a!==c;)n+=o?1:-1,o&&n>l.cols-1?(h+=l.buffer.translateBufferLineToString(a,!1,p,n),n=0,p=0,a++):!o&&n<0&&(h+=l.buffer.translateBufferLineToString(a,!1,0,p+1),p=n=l.cols-1,a--);return h+l.buffer.translateBufferLineToString(a,!1,p,n)}function C(p,w){var b=w?"O":"[";return m.C0.ESC+b+p}function u(p,w){p=Math.floor(p);for(var b="",c=0;c0?T-_(E,T):d;var W=T,I=function(A,H,F,z,G,te){var ce;return ce=y(F,z,G,te).length>0?z-_(G,z):H,A=F&&cep?"D":"C",u(Math.abs(l-p),C(o,c));o=n>w?"D":"C";var a=Math.abs(n-w);return u(function(h,d){return d.cols-h}(n>w?p:l,b)+(a-1)*b.cols+1+((n>w?l:p)-1),C(o,c))}},4389:function(R,f,k){var m=this&&this.__assign||function(){return m=Object.assign||function(c){for(var o,l=1,n=arguments.length;l=c.length&&(c=void 0),{value:c&&c[n++],done:!c}}};throw new TypeError(o?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(f,"__esModule",{value:!0}),f.Terminal=void 0;var _=k(3236),g=k(9042),x=k(7975),C=k(7090),u=k(5741),p=k(8285),w=["cols","rows"],b=function(){function c(o){var l=this;this._core=new _.Terminal(o),this._addonManager=new u.AddonManager,this._publicOptions=m({},this._core.options);var n=function(S){return l._core.options[S]},a=function(S,T){l._checkReadonlyOptions(S),l._core.options[S]=T};for(var h in this._core.options){var d={get:n.bind(this,h),set:a.bind(this,h)};Object.defineProperty(this._publicOptions,h,d)}}return c.prototype._checkReadonlyOptions=function(o){if(w.includes(o))throw new Error('Option "'+o+'" can only be set in the constructor')},c.prototype._checkProposedApi=function(){if(!this._core.optionsService.rawOptions.allowProposedApi)throw new Error("You must set the allowProposedApi option to true to use proposed API")},Object.defineProperty(c.prototype,"onBell",{get:function(){return this._core.onBell},enumerable:!1,configurable:!0}),Object.defineProperty(c.prototype,"onBinary",{get:function(){return this._core.onBinary},enumerable:!1,configurable:!0}),Object.defineProperty(c.prototype,"onCursorMove",{get:function(){return this._core.onCursorMove},enumerable:!1,configurable:!0}),Object.defineProperty(c.prototype,"onData",{get:function(){return this._core.onData},enumerable:!1,configurable:!0}),Object.defineProperty(c.prototype,"onKey",{get:function(){return this._core.onKey},enumerable:!1,configurable:!0}),Object.defineProperty(c.prototype,"onLineFeed",{get:function(){return this._core.onLineFeed},enumerable:!1,configurable:!0}),Object.defineProperty(c.prototype,"onRender",{get:function(){return this._core.onRender},enumerable:!1,configurable:!0}),Object.defineProperty(c.prototype,"onResize",{get:function(){return this._core.onResize},enumerable:!1,configurable:!0}),Object.defineProperty(c.prototype,"onScroll",{get:function(){return this._core.onScroll},enumerable:!1,configurable:!0}),Object.defineProperty(c.prototype,"onSelectionChange",{get:function(){return this._core.onSelectionChange},enumerable:!1,configurable:!0}),Object.defineProperty(c.prototype,"onTitleChange",{get:function(){return this._core.onTitleChange},enumerable:!1,configurable:!0}),Object.defineProperty(c.prototype,"onWriteParsed",{get:function(){return this._core.onWriteParsed},enumerable:!1,configurable:!0}),Object.defineProperty(c.prototype,"element",{get:function(){return this._core.element},enumerable:!1,configurable:!0}),Object.defineProperty(c.prototype,"parser",{get:function(){return this._checkProposedApi(),this._parser||(this._parser=new x.ParserApi(this._core)),this._parser},enumerable:!1,configurable:!0}),Object.defineProperty(c.prototype,"unicode",{get:function(){return this._checkProposedApi(),new C.UnicodeApi(this._core)},enumerable:!1,configurable:!0}),Object.defineProperty(c.prototype,"textarea",{get:function(){return this._core.textarea},enumerable:!1,configurable:!0}),Object.defineProperty(c.prototype,"rows",{get:function(){return this._core.rows},enumerable:!1,configurable:!0}),Object.defineProperty(c.prototype,"cols",{get:function(){return this._core.cols},enumerable:!1,configurable:!0}),Object.defineProperty(c.prototype,"buffer",{get:function(){return this._checkProposedApi(),this._buffer||(this._buffer=new p.BufferNamespaceApi(this._core)),this._buffer},enumerable:!1,configurable:!0}),Object.defineProperty(c.prototype,"markers",{get:function(){return this._checkProposedApi(),this._core.markers},enumerable:!1,configurable:!0}),Object.defineProperty(c.prototype,"modes",{get:function(){var o=this._core.coreService.decPrivateModes,l="none";switch(this._core.coreMouseService.activeProtocol){case"X10":l="x10";break;case"VT200":l="vt200";break;case"DRAG":l="drag";break;case"ANY":l="any"}return{applicationCursorKeysMode:o.applicationCursorKeys,applicationKeypadMode:o.applicationKeypad,bracketedPasteMode:o.bracketedPasteMode,insertMode:this._core.coreService.modes.insertMode,mouseTrackingMode:l,originMode:o.origin,reverseWraparoundMode:o.reverseWraparound,sendFocusMode:o.sendFocus,wraparoundMode:o.wraparound}},enumerable:!1,configurable:!0}),Object.defineProperty(c.prototype,"options",{get:function(){return this._publicOptions},set:function(o){for(var l in o)this._publicOptions[l]=o[l]},enumerable:!1,configurable:!0}),c.prototype.blur=function(){this._core.blur()},c.prototype.focus=function(){this._core.focus()},c.prototype.resize=function(o,l){this._verifyIntegers(o,l),this._core.resize(o,l)},c.prototype.open=function(o){this._core.open(o)},c.prototype.attachCustomKeyEventHandler=function(o){this._core.attachCustomKeyEventHandler(o)},c.prototype.registerLinkMatcher=function(o,l,n){return this._checkProposedApi(),this._core.registerLinkMatcher(o,l,n)},c.prototype.deregisterLinkMatcher=function(o){this._checkProposedApi(),this._core.deregisterLinkMatcher(o)},c.prototype.registerLinkProvider=function(o){return this._checkProposedApi(),this._core.registerLinkProvider(o)},c.prototype.registerCharacterJoiner=function(o){return this._checkProposedApi(),this._core.registerCharacterJoiner(o)},c.prototype.deregisterCharacterJoiner=function(o){this._checkProposedApi(),this._core.deregisterCharacterJoiner(o)},c.prototype.registerMarker=function(o){return o===void 0&&(o=0),this._checkProposedApi(),this._verifyIntegers(o),this._core.addMarker(o)},c.prototype.registerDecoration=function(o){var l,n,a;return this._checkProposedApi(),this._verifyPositiveIntegers((l=o.x)!==null&&l!==void 0?l:0,(n=o.width)!==null&&n!==void 0?n:0,(a=o.height)!==null&&a!==void 0?a:0),this._core.registerDecoration(o)},c.prototype.addMarker=function(o){return this.registerMarker(o)},c.prototype.hasSelection=function(){return this._core.hasSelection()},c.prototype.select=function(o,l,n){this._verifyIntegers(o,l,n),this._core.select(o,l,n)},c.prototype.getSelection=function(){return this._core.getSelection()},c.prototype.getSelectionPosition=function(){return this._core.getSelectionPosition()},c.prototype.clearSelection=function(){this._core.clearSelection()},c.prototype.selectAll=function(){this._core.selectAll()},c.prototype.selectLines=function(o,l){this._verifyIntegers(o,l),this._core.selectLines(o,l)},c.prototype.dispose=function(){this._addonManager.dispose(),this._core.dispose()},c.prototype.scrollLines=function(o){this._verifyIntegers(o),this._core.scrollLines(o)},c.prototype.scrollPages=function(o){this._verifyIntegers(o),this._core.scrollPages(o)},c.prototype.scrollToTop=function(){this._core.scrollToTop()},c.prototype.scrollToBottom=function(){this._core.scrollToBottom()},c.prototype.scrollToLine=function(o){this._verifyIntegers(o),this._core.scrollToLine(o)},c.prototype.clear=function(){this._core.clear()},c.prototype.write=function(o,l){this._core.write(o,l)},c.prototype.writeUtf8=function(o,l){this._core.write(o,l)},c.prototype.writeln=function(o,l){this._core.write(o),this._core.write(`\r +`,l)},c.prototype.paste=function(o){this._core.paste(o)},c.prototype.getOption=function(o){return this._core.optionsService.getOption(o)},c.prototype.setOption=function(o,l){this._checkReadonlyOptions(o),this._core.optionsService.setOption(o,l)},c.prototype.refresh=function(o,l){this._verifyIntegers(o,l),this._core.refresh(o,l)},c.prototype.reset=function(){this._core.reset()},c.prototype.clearTextureAtlas=function(){this._core.clearTextureAtlas()},c.prototype.loadAddon=function(o){return this._addonManager.loadAddon(this,o)},Object.defineProperty(c,"strings",{get:function(){return g},enumerable:!1,configurable:!0}),c.prototype._verifyIntegers=function(){for(var o,l,n=[],a=0;a=c.length&&(c=void 0),{value:c&&c[n++],done:!c}}};throw new TypeError(o?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(f,"__esModule",{value:!0}),f.BaseRenderLayer=void 0;var y=k(643),_=k(8803),g=k(1420),x=k(3734),C=k(1752),u=k(8055),p=k(9631),w=k(8978),b=function(){function c(o,l,n,a,h,d,S,T,E){this._container=o,this._alpha=a,this._colors=h,this._rendererId=d,this._bufferService=S,this._optionsService=T,this._decorationService=E,this._scaledCharWidth=0,this._scaledCharHeight=0,this._scaledCellWidth=0,this._scaledCellHeight=0,this._scaledCharLeft=0,this._scaledCharTop=0,this._columnSelectMode=!1,this._currentGlyphIdentifier={chars:"",code:0,bg:0,fg:0,bold:!1,dim:!1,italic:!1},this._canvas=document.createElement("canvas"),this._canvas.classList.add("xterm-"+l+"-layer"),this._canvas.style.zIndex=n.toString(),this._initCanvas(),this._container.appendChild(this._canvas)}return c.prototype.dispose=function(){var o;(0,p.removeElementFromParent)(this._canvas),(o=this._charAtlas)===null||o===void 0||o.dispose()},c.prototype._initCanvas=function(){this._ctx=(0,C.throwIfFalsy)(this._canvas.getContext("2d",{alpha:this._alpha})),this._alpha||this._clearAll()},c.prototype.onOptionsChanged=function(){},c.prototype.onBlur=function(){},c.prototype.onFocus=function(){},c.prototype.onCursorMove=function(){},c.prototype.onGridChanged=function(o,l){},c.prototype.onSelectionChanged=function(o,l,n){n===void 0&&(n=!1),this._selectionStart=o,this._selectionEnd=l,this._columnSelectMode=n},c.prototype.setColors=function(o){this._refreshCharAtlas(o)},c.prototype._setTransparency=function(o){if(o!==this._alpha){var l=this._canvas;this._alpha=o,this._canvas=this._canvas.cloneNode(),this._initCanvas(),this._container.replaceChild(this._canvas,l),this._refreshCharAtlas(this._colors),this.onGridChanged(0,this._bufferService.rows-1)}},c.prototype._refreshCharAtlas=function(o){this._scaledCharWidth<=0&&this._scaledCharHeight<=0||(this._charAtlas=(0,g.acquireCharAtlas)(this._optionsService.rawOptions,this._rendererId,o,this._scaledCharWidth,this._scaledCharHeight),this._charAtlas.warmUp())},c.prototype.resize=function(o){this._scaledCellWidth=o.scaledCellWidth,this._scaledCellHeight=o.scaledCellHeight,this._scaledCharWidth=o.scaledCharWidth,this._scaledCharHeight=o.scaledCharHeight,this._scaledCharLeft=o.scaledCharLeft,this._scaledCharTop=o.scaledCharTop,this._canvas.width=o.scaledCanvasWidth,this._canvas.height=o.scaledCanvasHeight,this._canvas.style.width=o.canvasWidth+"px",this._canvas.style.height=o.canvasHeight+"px",this._alpha||this._clearAll(),this._refreshCharAtlas(this._colors)},c.prototype.clearTextureAtlas=function(){var o;(o=this._charAtlas)===null||o===void 0||o.clear()},c.prototype._fillCells=function(o,l,n,a){this._ctx.fillRect(o*this._scaledCellWidth,l*this._scaledCellHeight,n*this._scaledCellWidth,a*this._scaledCellHeight)},c.prototype._fillMiddleLineAtCells=function(o,l,n){n===void 0&&(n=1);var a=Math.ceil(.5*this._scaledCellHeight);this._ctx.fillRect(o*this._scaledCellWidth,(l+1)*this._scaledCellHeight-a-window.devicePixelRatio,n*this._scaledCellWidth,window.devicePixelRatio)},c.prototype._fillBottomLineAtCells=function(o,l,n){n===void 0&&(n=1),this._ctx.fillRect(o*this._scaledCellWidth,(l+1)*this._scaledCellHeight-window.devicePixelRatio-1,n*this._scaledCellWidth,window.devicePixelRatio)},c.prototype._fillLeftLineAtCell=function(o,l,n){this._ctx.fillRect(o*this._scaledCellWidth,l*this._scaledCellHeight,window.devicePixelRatio*n,this._scaledCellHeight)},c.prototype._strokeRectAtCell=function(o,l,n,a){this._ctx.lineWidth=window.devicePixelRatio,this._ctx.strokeRect(o*this._scaledCellWidth+window.devicePixelRatio/2,l*this._scaledCellHeight+window.devicePixelRatio/2,n*this._scaledCellWidth-window.devicePixelRatio,a*this._scaledCellHeight-window.devicePixelRatio)},c.prototype._clearAll=function(){this._alpha?this._ctx.clearRect(0,0,this._canvas.width,this._canvas.height):(this._ctx.fillStyle=this._colors.background.css,this._ctx.fillRect(0,0,this._canvas.width,this._canvas.height))},c.prototype._clearCells=function(o,l,n,a){this._alpha?this._ctx.clearRect(o*this._scaledCellWidth,l*this._scaledCellHeight,n*this._scaledCellWidth,a*this._scaledCellHeight):(this._ctx.fillStyle=this._colors.background.css,this._ctx.fillRect(o*this._scaledCellWidth,l*this._scaledCellHeight,n*this._scaledCellWidth,a*this._scaledCellHeight))},c.prototype._fillCharTrueColor=function(o,l,n){this._ctx.font=this._getFont(!1,!1),this._ctx.textBaseline=_.TEXT_BASELINE,this._clipRow(n);var a=!1;this._optionsService.rawOptions.customGlyphs!==!1&&(a=(0,w.tryDrawCustomChar)(this._ctx,o.getChars(),l*this._scaledCellWidth,n*this._scaledCellHeight,this._scaledCellWidth,this._scaledCellHeight)),a||this._ctx.fillText(o.getChars(),l*this._scaledCellWidth+this._scaledCharLeft,n*this._scaledCellHeight+this._scaledCharTop+this._scaledCharHeight)},c.prototype._drawChars=function(o,l,n){var a,h,d,S=this._getContrastColor(o,l,n);if(S||o.isFgRGB()||o.isBgRGB())this._drawUncachedChars(o,l,n,S);else{var T,E;o.isInverse()?(T=o.isBgDefault()?_.INVERTED_DEFAULT_COLOR:o.getBgColor(),E=o.isFgDefault()?_.INVERTED_DEFAULT_COLOR:o.getFgColor()):(E=o.isBgDefault()?y.DEFAULT_COLOR:o.getBgColor(),T=o.isFgDefault()?y.DEFAULT_COLOR:o.getFgColor()),T+=this._optionsService.rawOptions.drawBoldTextInBrightColors&&o.isBold()&&T<8?8:0,this._currentGlyphIdentifier.chars=o.getChars()||y.WHITESPACE_CELL_CHAR,this._currentGlyphIdentifier.code=o.getCode()||y.WHITESPACE_CELL_CODE,this._currentGlyphIdentifier.bg=E,this._currentGlyphIdentifier.fg=T,this._currentGlyphIdentifier.bold=!!o.isBold(),this._currentGlyphIdentifier.dim=!!o.isDim(),this._currentGlyphIdentifier.italic=!!o.isItalic();var M=!1;try{for(var D=m(this._decorationService.getDecorationsAtCell(l,n)),W=D.next();!W.done;W=D.next()){var I=W.value;if(I.backgroundColorRGB||I.foregroundColorRGB){M=!0;break}}}catch(A){a={error:A}}finally{try{W&&!W.done&&(h=D.return)&&h.call(D)}finally{if(a)throw a.error}}!M&&(!((d=this._charAtlas)===null||d===void 0)&&d.draw(this._ctx,this._currentGlyphIdentifier,l*this._scaledCellWidth+this._scaledCharLeft,n*this._scaledCellHeight+this._scaledCharTop))||this._drawUncachedChars(o,l,n)}},c.prototype._drawUncachedChars=function(o,l,n,a){if(this._ctx.save(),this._ctx.font=this._getFont(!!o.isBold(),!!o.isItalic()),this._ctx.textBaseline=_.TEXT_BASELINE,o.isInverse())if(a)this._ctx.fillStyle=a.css;else if(o.isBgDefault())this._ctx.fillStyle=u.color.opaque(this._colors.background).css;else if(o.isBgRGB())this._ctx.fillStyle="rgb("+x.AttributeData.toColorRGB(o.getBgColor()).join(",")+")";else{var h=o.getBgColor();this._optionsService.rawOptions.drawBoldTextInBrightColors&&o.isBold()&&h<8&&(h+=8),this._ctx.fillStyle=this._colors.ansi[h].css}else if(a)this._ctx.fillStyle=a.css;else if(o.isFgDefault())this._ctx.fillStyle=this._colors.foreground.css;else if(o.isFgRGB())this._ctx.fillStyle="rgb("+x.AttributeData.toColorRGB(o.getFgColor()).join(",")+")";else{var d=o.getFgColor();this._optionsService.rawOptions.drawBoldTextInBrightColors&&o.isBold()&&d<8&&(d+=8),this._ctx.fillStyle=this._colors.ansi[d].css}this._clipRow(n),o.isDim()&&(this._ctx.globalAlpha=_.DIM_OPACITY);var S=!1;this._optionsService.rawOptions.customGlyphs!==!1&&(S=(0,w.tryDrawCustomChar)(this._ctx,o.getChars(),l*this._scaledCellWidth,n*this._scaledCellHeight,this._scaledCellWidth,this._scaledCellHeight)),S||this._ctx.fillText(o.getChars(),l*this._scaledCellWidth+this._scaledCharLeft,n*this._scaledCellHeight+this._scaledCharTop+this._scaledCharHeight),this._ctx.restore()},c.prototype._clipRow=function(o){this._ctx.beginPath(),this._ctx.rect(0,o*this._scaledCellHeight,this._bufferService.cols*this._scaledCellWidth,this._scaledCellHeight),this._ctx.clip()},c.prototype._getFont=function(o,l){return(l?"italic":"")+" "+(o?this._optionsService.rawOptions.fontWeightBold:this._optionsService.rawOptions.fontWeight)+" "+this._optionsService.rawOptions.fontSize*window.devicePixelRatio+"px "+this._optionsService.rawOptions.fontFamily},c.prototype._getContrastColor=function(o,l,n){var a,h,d,S,T=!1;try{for(var E=m(this._decorationService.getDecorationsAtCell(l,n)),M=E.next();!M.done;M=E.next()){var D=M.value;D.options.layer!=="top"&&T||(D.backgroundColorRGB&&(d=D.backgroundColorRGB.rgba),D.foregroundColorRGB&&(S=D.foregroundColorRGB.rgba),T=D.options.layer==="top")}}catch(ve){a={error:ve}}finally{try{M&&!M.done&&(h=E.return)&&h.call(E)}finally{if(a)throw a.error}}if(T||this._colors.selectionForeground&&this._isCellInSelection(l,n)&&(S=this._colors.selectionForeground.rgba),d||S||this._optionsService.rawOptions.minimumContrastRatio!==1&&!(0,C.excludeFromContrastRatioDemands)(o.getCode())){if(!d&&!S){var W=this._colors.contrastCache.getColor(o.bg,o.fg);if(W!==void 0)return W||void 0}var I=o.getFgColor(),A=o.getFgColorMode(),H=o.getBgColor(),F=o.getBgColorMode(),z=!!o.isInverse(),G=!!o.isInverse();if(z){var te=I;I=H,H=te;var ce=A;A=F,F=ce}var ee=this._resolveBackgroundRgba(d!==void 0?50331648:F,d??H,z),fe=this._resolveForegroundRgba(A,I,z,G),_e=u.rgba.ensureContrastRatio(d??ee,S??fe,this._optionsService.rawOptions.minimumContrastRatio);if(!_e){if(!S)return void this._colors.contrastCache.setColor(o.bg,o.fg,null);_e=S}var q={css:u.channels.toCss(_e>>24&255,_e>>16&255,_e>>8&255),rgba:_e};return d||S||this._colors.contrastCache.setColor(o.bg,o.fg,q),q}},c.prototype._resolveBackgroundRgba=function(o,l,n){switch(o){case 16777216:case 33554432:return this._colors.ansi[l].rgba;case 50331648:return l<<8;default:return n?this._colors.foreground.rgba:this._colors.background.rgba}},c.prototype._resolveForegroundRgba=function(o,l,n,a){switch(o){case 16777216:case 33554432:return this._optionsService.rawOptions.drawBoldTextInBrightColors&&a&&l<8&&(l+=8),this._colors.ansi[l].rgba;case 50331648:return l<<8;default:return n?this._colors.background.rgba:this._colors.foreground.rgba}},c.prototype._isCellInSelection=function(o,l){var n=this._selectionStart,a=this._selectionEnd;return!(!n||!a)&&(this._columnSelectMode?o>=n[0]&&l>=n[1]&&on[1]&&l=n[0]&&o=n[0])},c}();f.BaseRenderLayer=b},2512:function(R,f,k){var m,y=this&&this.__extends||(m=function(o,l){return m=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,a){n.__proto__=a}||function(n,a){for(var h in a)Object.prototype.hasOwnProperty.call(a,h)&&(n[h]=a[h])},m(o,l)},function(o,l){if(typeof l!="function"&&l!==null)throw new TypeError("Class extends value "+String(l)+" is not a constructor or null");function n(){this.constructor=o}m(o,l),o.prototype=l===null?Object.create(l):(n.prototype=l.prototype,new n)}),_=this&&this.__decorate||function(o,l,n,a){var h,d=arguments.length,S=d<3?l:a===null?a=Object.getOwnPropertyDescriptor(l,n):a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")S=Reflect.decorate(o,l,n,a);else for(var T=o.length-1;T>=0;T--)(h=o[T])&&(S=(d<3?h(S):d>3?h(l,n,S):h(l,n))||S);return d>3&&S&&Object.defineProperty(l,n,S),S},g=this&&this.__param||function(o,l){return function(n,a){l(n,a,o)}};Object.defineProperty(f,"__esModule",{value:!0}),f.CursorRenderLayer=void 0;var x=k(1546),C=k(511),u=k(2585),p=k(4725),w=600,b=function(o){function l(n,a,h,d,S,T,E,M,D,W){var I=o.call(this,n,"cursor",a,!0,h,d,T,E,W)||this;return I._onRequestRedraw=S,I._coreService=M,I._coreBrowserService=D,I._cell=new C.CellData,I._state={x:0,y:0,isFocused:!1,style:"",width:0},I._cursorRenderers={bar:I._renderBarCursor.bind(I),block:I._renderBlockCursor.bind(I),underline:I._renderUnderlineCursor.bind(I)},I}return y(l,o),l.prototype.dispose=function(){this._cursorBlinkStateManager&&(this._cursorBlinkStateManager.dispose(),this._cursorBlinkStateManager=void 0),o.prototype.dispose.call(this)},l.prototype.resize=function(n){o.prototype.resize.call(this,n),this._state={x:0,y:0,isFocused:!1,style:"",width:0}},l.prototype.reset=function(){var n;this._clearCursor(),(n=this._cursorBlinkStateManager)===null||n===void 0||n.restartBlinkAnimation(),this.onOptionsChanged()},l.prototype.onBlur=function(){var n;(n=this._cursorBlinkStateManager)===null||n===void 0||n.pause(),this._onRequestRedraw.fire({start:this._bufferService.buffer.y,end:this._bufferService.buffer.y})},l.prototype.onFocus=function(){var n;(n=this._cursorBlinkStateManager)===null||n===void 0||n.resume(),this._onRequestRedraw.fire({start:this._bufferService.buffer.y,end:this._bufferService.buffer.y})},l.prototype.onOptionsChanged=function(){var n,a=this;this._optionsService.rawOptions.cursorBlink?this._cursorBlinkStateManager||(this._cursorBlinkStateManager=new c(this._coreBrowserService.isFocused,function(){a._render(!0)})):((n=this._cursorBlinkStateManager)===null||n===void 0||n.dispose(),this._cursorBlinkStateManager=void 0),this._onRequestRedraw.fire({start:this._bufferService.buffer.y,end:this._bufferService.buffer.y})},l.prototype.onCursorMove=function(){var n;(n=this._cursorBlinkStateManager)===null||n===void 0||n.restartBlinkAnimation()},l.prototype.onGridChanged=function(n,a){!this._cursorBlinkStateManager||this._cursorBlinkStateManager.isPaused?this._render(!1):this._cursorBlinkStateManager.restartBlinkAnimation()},l.prototype._render=function(n){if(this._coreService.isCursorInitialized&&!this._coreService.isCursorHidden){var a=this._bufferService.buffer.ybase+this._bufferService.buffer.y,h=a-this._bufferService.buffer.ydisp;if(h<0||h>=this._bufferService.rows)this._clearCursor();else{var d=Math.min(this._bufferService.buffer.x,this._bufferService.cols-1);if(this._bufferService.buffer.lines.get(a).loadCell(d,this._cell),this._cell.content!==void 0){if(!this._coreBrowserService.isFocused){this._clearCursor(),this._ctx.save(),this._ctx.fillStyle=this._colors.cursor.css;var S=this._optionsService.rawOptions.cursorStyle;return S&&S!=="block"?this._cursorRenderers[S](d,h,this._cell):this._renderBlurCursor(d,h,this._cell),this._ctx.restore(),this._state.x=d,this._state.y=h,this._state.isFocused=!1,this._state.style=S,void(this._state.width=this._cell.getWidth())}if(!this._cursorBlinkStateManager||this._cursorBlinkStateManager.isCursorVisible){if(this._state){if(this._state.x===d&&this._state.y===h&&this._state.isFocused===this._coreBrowserService.isFocused&&this._state.style===this._optionsService.rawOptions.cursorStyle&&this._state.width===this._cell.getWidth())return;this._clearCursor()}this._ctx.save(),this._cursorRenderers[this._optionsService.rawOptions.cursorStyle||"block"](d,h,this._cell),this._ctx.restore(),this._state.x=d,this._state.y=h,this._state.isFocused=!1,this._state.style=this._optionsService.rawOptions.cursorStyle,this._state.width=this._cell.getWidth()}else this._clearCursor()}}}else this._clearCursor()},l.prototype._clearCursor=function(){this._state&&(window.devicePixelRatio<1?this._clearAll():this._clearCells(this._state.x,this._state.y,this._state.width,1),this._state={x:0,y:0,isFocused:!1,style:"",width:0})},l.prototype._renderBarCursor=function(n,a,h){this._ctx.save(),this._ctx.fillStyle=this._colors.cursor.css,this._fillLeftLineAtCell(n,a,this._optionsService.rawOptions.cursorWidth),this._ctx.restore()},l.prototype._renderBlockCursor=function(n,a,h){this._ctx.save(),this._ctx.fillStyle=this._colors.cursor.css,this._fillCells(n,a,h.getWidth(),1),this._ctx.fillStyle=this._colors.cursorAccent.css,this._fillCharTrueColor(h,n,a),this._ctx.restore()},l.prototype._renderUnderlineCursor=function(n,a,h){this._ctx.save(),this._ctx.fillStyle=this._colors.cursor.css,this._fillBottomLineAtCells(n,a),this._ctx.restore()},l.prototype._renderBlurCursor=function(n,a,h){this._ctx.save(),this._ctx.strokeStyle=this._colors.cursor.css,this._strokeRectAtCell(n,a,h.getWidth(),1),this._ctx.restore()},_([g(5,u.IBufferService),g(6,u.IOptionsService),g(7,u.ICoreService),g(8,p.ICoreBrowserService),g(9,u.IDecorationService)],l)}(x.BaseRenderLayer);f.CursorRenderLayer=b;var c=function(){function o(l,n){this._renderCallback=n,this.isCursorVisible=!0,l&&this._restartInterval()}return Object.defineProperty(o.prototype,"isPaused",{get:function(){return!(this._blinkStartTimeout||this._blinkInterval)},enumerable:!1,configurable:!0}),o.prototype.dispose=function(){this._blinkInterval&&(window.clearInterval(this._blinkInterval),this._blinkInterval=void 0),this._blinkStartTimeout&&(window.clearTimeout(this._blinkStartTimeout),this._blinkStartTimeout=void 0),this._animationFrame&&(window.cancelAnimationFrame(this._animationFrame),this._animationFrame=void 0)},o.prototype.restartBlinkAnimation=function(){var l=this;this.isPaused||(this._animationTimeRestarted=Date.now(),this.isCursorVisible=!0,this._animationFrame||(this._animationFrame=window.requestAnimationFrame(function(){l._renderCallback(),l._animationFrame=void 0})))},o.prototype._restartInterval=function(l){var n=this;l===void 0&&(l=w),this._blinkInterval&&(window.clearInterval(this._blinkInterval),this._blinkInterval=void 0),this._blinkStartTimeout=window.setTimeout(function(){if(n._animationTimeRestarted){var a=w-(Date.now()-n._animationTimeRestarted);if(n._animationTimeRestarted=void 0,a>0)return void n._restartInterval(a)}n.isCursorVisible=!1,n._animationFrame=window.requestAnimationFrame(function(){n._renderCallback(),n._animationFrame=void 0}),n._blinkInterval=window.setInterval(function(){if(n._animationTimeRestarted){var h=w-(Date.now()-n._animationTimeRestarted);return n._animationTimeRestarted=void 0,void n._restartInterval(h)}n.isCursorVisible=!n.isCursorVisible,n._animationFrame=window.requestAnimationFrame(function(){n._renderCallback(),n._animationFrame=void 0})},w)},l)},o.prototype.pause=function(){this.isCursorVisible=!0,this._blinkInterval&&(window.clearInterval(this._blinkInterval),this._blinkInterval=void 0),this._blinkStartTimeout&&(window.clearTimeout(this._blinkStartTimeout),this._blinkStartTimeout=void 0),this._animationFrame&&(window.cancelAnimationFrame(this._animationFrame),this._animationFrame=void 0)},o.prototype.resume=function(){this.pause(),this._animationTimeRestarted=void 0,this._restartInterval(),this.restartBlinkAnimation()},o}()},8978:function(R,f,k){var m,y,_,g,x,C,u,p,w,b,c,o,l,n,a,h,d,S,T,E,M,D,W,I,A,H,F,z,G,te,ce,ee,fe,_e,q,ve,de,ke,$,Ie,ge,le,V,Y,se,xe,Ee,De,je,Re,Ze,we,$e,dt,Jt,br,lr,ai,cr,Xe,Sr,Qt,ur,Cr,fr,li,Be,Vr,Te,er,et,ze,Ue,Et,pt,Ot,tt,Tr,lt,hr,Wr,Dt,ci,Ar,$r,Nr,dr,Tt,pr,Jr,Bt,ui,Mr,Pt,It,wr,Rr,Or,vr,Dr,zt,jr,Br,qe,Le,tr,zr,Lt,j,Z,ae,he,ie,be,He,Je,vt,Ur,Wi,Oe,fn,Ni,fi,rr,ji,zi,Qr,Ci,hn=this&&this.__read||function(ne,re){var nt=typeof Symbol=="function"&&ne[Symbol.iterator];if(!nt)return ne;var Ht,Ut,gt=nt.call(ne),rt=[];try{for(;(re===void 0||re-- >0)&&!(Ht=gt.next()).done;)rt.push(Ht.value)}catch(ir){Ut={error:ir}}finally{try{Ht&&!Ht.done&&(nt=gt.return)&&nt.call(gt)}finally{if(Ut)throw Ut.error}}return rt},wi=this&&this.__values||function(ne){var re=typeof Symbol=="function"&&Symbol.iterator,nt=re&&ne[re],Ht=0;if(nt)return nt.call(ne);if(ne&&typeof ne.length=="number")return{next:function(){return ne&&Ht>=ne.length&&(ne=void 0),{value:ne&&ne[Ht++],done:!ne}}};throw new TypeError(re?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(f,"__esModule",{value:!0}),f.tryDrawCustomChar=f.powerlineDefinitions=f.boxDrawingDefinitions=f.blockElementDefinitions=void 0;var dn=k(1752);f.blockElementDefinitions={"\u2580":[{x:0,y:0,w:8,h:4}],"\u2581":[{x:0,y:7,w:8,h:1}],"\u2582":[{x:0,y:6,w:8,h:2}],"\u2583":[{x:0,y:5,w:8,h:3}],"\u2584":[{x:0,y:4,w:8,h:4}],"\u2585":[{x:0,y:3,w:8,h:5}],"\u2586":[{x:0,y:2,w:8,h:6}],"\u2587":[{x:0,y:1,w:8,h:7}],"\u2588":[{x:0,y:0,w:8,h:8}],"\u2589":[{x:0,y:0,w:7,h:8}],"\u258A":[{x:0,y:0,w:6,h:8}],"\u258B":[{x:0,y:0,w:5,h:8}],"\u258C":[{x:0,y:0,w:4,h:8}],"\u258D":[{x:0,y:0,w:3,h:8}],"\u258E":[{x:0,y:0,w:2,h:8}],"\u258F":[{x:0,y:0,w:1,h:8}],"\u2590":[{x:4,y:0,w:4,h:8}],"\u2594":[{x:0,y:0,w:9,h:1}],"\u2595":[{x:7,y:0,w:1,h:8}],"\u2596":[{x:0,y:4,w:4,h:4}],"\u2597":[{x:4,y:4,w:4,h:4}],"\u2598":[{x:0,y:0,w:4,h:4}],"\u2599":[{x:0,y:0,w:4,h:8},{x:0,y:4,w:8,h:4}],"\u259A":[{x:0,y:0,w:4,h:4},{x:4,y:4,w:4,h:4}],"\u259B":[{x:0,y:0,w:4,h:8},{x:0,y:0,w:4,h:8}],"\u259C":[{x:0,y:0,w:8,h:4},{x:4,y:0,w:4,h:8}],"\u259D":[{x:4,y:0,w:4,h:4}],"\u259E":[{x:4,y:0,w:4,h:4},{x:0,y:4,w:4,h:4}],"\u259F":[{x:4,y:0,w:4,h:8},{x:0,y:4,w:8,h:4}],"\u{1FB70}":[{x:1,y:0,w:1,h:8}],"\u{1FB71}":[{x:2,y:0,w:1,h:8}],"\u{1FB72}":[{x:3,y:0,w:1,h:8}],"\u{1FB73}":[{x:4,y:0,w:1,h:8}],"\u{1FB74}":[{x:5,y:0,w:1,h:8}],"\u{1FB75}":[{x:6,y:0,w:1,h:8}],"\u{1FB76}":[{x:0,y:1,w:8,h:1}],"\u{1FB77}":[{x:0,y:2,w:8,h:1}],"\u{1FB78}":[{x:0,y:3,w:8,h:1}],"\u{1FB79}":[{x:0,y:4,w:8,h:1}],"\u{1FB7A}":[{x:0,y:5,w:8,h:1}],"\u{1FB7B}":[{x:0,y:6,w:8,h:1}],"\u{1FB7C}":[{x:0,y:0,w:1,h:8},{x:0,y:7,w:8,h:1}],"\u{1FB7D}":[{x:0,y:0,w:1,h:8},{x:0,y:0,w:8,h:1}],"\u{1FB7E}":[{x:7,y:0,w:1,h:8},{x:0,y:0,w:8,h:1}],"\u{1FB7F}":[{x:7,y:0,w:1,h:8},{x:0,y:7,w:8,h:1}],"\u{1FB80}":[{x:0,y:0,w:8,h:1},{x:0,y:7,w:8,h:1}],"\u{1FB81}":[{x:0,y:0,w:8,h:1},{x:0,y:2,w:8,h:1},{x:0,y:4,w:8,h:1},{x:0,y:7,w:8,h:1}],"\u{1FB82}":[{x:0,y:0,w:8,h:2}],"\u{1FB83}":[{x:0,y:0,w:8,h:3}],"\u{1FB84}":[{x:0,y:0,w:8,h:5}],"\u{1FB85}":[{x:0,y:0,w:8,h:6}],"\u{1FB86}":[{x:0,y:0,w:8,h:7}],"\u{1FB87}":[{x:6,y:0,w:2,h:8}],"\u{1FB88}":[{x:5,y:0,w:3,h:8}],"\u{1FB89}":[{x:3,y:0,w:5,h:8}],"\u{1FB8A}":[{x:2,y:0,w:6,h:8}],"\u{1FB8B}":[{x:1,y:0,w:7,h:8}],"\u{1FB95}":[{x:0,y:0,w:2,h:2},{x:4,y:0,w:2,h:2},{x:2,y:2,w:2,h:2},{x:6,y:2,w:2,h:2},{x:0,y:4,w:2,h:2},{x:4,y:4,w:2,h:2},{x:2,y:6,w:2,h:2},{x:6,y:6,w:2,h:2}],"\u{1FB96}":[{x:2,y:0,w:2,h:2},{x:6,y:0,w:2,h:2},{x:0,y:2,w:2,h:2},{x:4,y:2,w:2,h:2},{x:2,y:4,w:2,h:2},{x:6,y:4,w:2,h:2},{x:0,y:6,w:2,h:2},{x:4,y:6,w:2,h:2}],"\u{1FB97}":[{x:0,y:2,w:8,h:2},{x:0,y:6,w:8,h:2}]};var zn={"\u2591":[[1,0,0,0],[0,0,0,0],[0,0,1,0],[0,0,0,0]],"\u2592":[[1,0],[0,0],[0,1],[0,0]],"\u2593":[[0,1],[1,1],[1,0],[1,1]]};f.boxDrawingDefinitions={"\u2500":(m={},m[1]="M0,.5 L1,.5",m),"\u2501":(y={},y[3]="M0,.5 L1,.5",y),"\u2502":(_={},_[1]="M.5,0 L.5,1",_),"\u2503":(g={},g[3]="M.5,0 L.5,1",g),"\u250C":(x={},x[1]="M0.5,1 L.5,.5 L1,.5",x),"\u250F":(C={},C[3]="M0.5,1 L.5,.5 L1,.5",C),"\u2510":(u={},u[1]="M0,.5 L.5,.5 L.5,1",u),"\u2513":(p={},p[3]="M0,.5 L.5,.5 L.5,1",p),"\u2514":(w={},w[1]="M.5,0 L.5,.5 L1,.5",w),"\u2517":(b={},b[3]="M.5,0 L.5,.5 L1,.5",b),"\u2518":(c={},c[1]="M.5,0 L.5,.5 L0,.5",c),"\u251B":(o={},o[3]="M.5,0 L.5,.5 L0,.5",o),"\u251C":(l={},l[1]="M.5,0 L.5,1 M.5,.5 L1,.5",l),"\u2523":(n={},n[3]="M.5,0 L.5,1 M.5,.5 L1,.5",n),"\u2524":(a={},a[1]="M.5,0 L.5,1 M.5,.5 L0,.5",a),"\u252B":(h={},h[3]="M.5,0 L.5,1 M.5,.5 L0,.5",h),"\u252C":(d={},d[1]="M0,.5 L1,.5 M.5,.5 L.5,1",d),"\u2533":(S={},S[3]="M0,.5 L1,.5 M.5,.5 L.5,1",S),"\u2534":(T={},T[1]="M0,.5 L1,.5 M.5,.5 L.5,0",T),"\u253B":(E={},E[3]="M0,.5 L1,.5 M.5,.5 L.5,0",E),"\u253C":(M={},M[1]="M0,.5 L1,.5 M.5,0 L.5,1",M),"\u254B":(D={},D[3]="M0,.5 L1,.5 M.5,0 L.5,1",D),"\u2574":(W={},W[1]="M.5,.5 L0,.5",W),"\u2578":(I={},I[3]="M.5,.5 L0,.5",I),"\u2575":(A={},A[1]="M.5,.5 L.5,0",A),"\u2579":(H={},H[3]="M.5,.5 L.5,0",H),"\u2576":(F={},F[1]="M.5,.5 L1,.5",F),"\u257A":(z={},z[3]="M.5,.5 L1,.5",z),"\u2577":(G={},G[1]="M.5,.5 L.5,1",G),"\u257B":(te={},te[3]="M.5,.5 L.5,1",te),"\u2550":(ce={},ce[1]=function(ne,re){return"M0,"+(.5-re)+" L1,"+(.5-re)+" M0,"+(.5+re)+" L1,"+(.5+re)},ce),"\u2551":(ee={},ee[1]=function(ne,re){return"M"+(.5-ne)+",0 L"+(.5-ne)+",1 M"+(.5+ne)+",0 L"+(.5+ne)+",1"},ee),"\u2552":(fe={},fe[1]=function(ne,re){return"M.5,1 L.5,"+(.5-re)+" L1,"+(.5-re)+" M.5,"+(.5+re)+" L1,"+(.5+re)},fe),"\u2553":(_e={},_e[1]=function(ne,re){return"M"+(.5-ne)+",1 L"+(.5-ne)+",.5 L1,.5 M"+(.5+ne)+",.5 L"+(.5+ne)+",1"},_e),"\u2554":(q={},q[1]=function(ne,re){return"M1,"+(.5-re)+" L"+(.5-ne)+","+(.5-re)+" L"+(.5-ne)+",1 M1,"+(.5+re)+" L"+(.5+ne)+","+(.5+re)+" L"+(.5+ne)+",1"},q),"\u2555":(ve={},ve[1]=function(ne,re){return"M0,"+(.5-re)+" L.5,"+(.5-re)+" L.5,1 M0,"+(.5+re)+" L.5,"+(.5+re)},ve),"\u2556":(de={},de[1]=function(ne,re){return"M"+(.5+ne)+",1 L"+(.5+ne)+",.5 L0,.5 M"+(.5-ne)+",.5 L"+(.5-ne)+",1"},de),"\u2557":(ke={},ke[1]=function(ne,re){return"M0,"+(.5+re)+" L"+(.5-ne)+","+(.5+re)+" L"+(.5-ne)+",1 M0,"+(.5-re)+" L"+(.5+ne)+","+(.5-re)+" L"+(.5+ne)+",1"},ke),"\u2558":($={},$[1]=function(ne,re){return"M.5,0 L.5,"+(.5+re)+" L1,"+(.5+re)+" M.5,"+(.5-re)+" L1,"+(.5-re)},$),"\u2559":(Ie={},Ie[1]=function(ne,re){return"M1,.5 L"+(.5-ne)+",.5 L"+(.5-ne)+",0 M"+(.5+ne)+",.5 L"+(.5+ne)+",0"},Ie),"\u255A":(ge={},ge[1]=function(ne,re){return"M1,"+(.5-re)+" L"+(.5+ne)+","+(.5-re)+" L"+(.5+ne)+",0 M1,"+(.5+re)+" L"+(.5-ne)+","+(.5+re)+" L"+(.5-ne)+",0"},ge),"\u255B":(le={},le[1]=function(ne,re){return"M0,"+(.5+re)+" L.5,"+(.5+re)+" L.5,0 M0,"+(.5-re)+" L.5,"+(.5-re)},le),"\u255C":(V={},V[1]=function(ne,re){return"M0,.5 L"+(.5+ne)+",.5 L"+(.5+ne)+",0 M"+(.5-ne)+",.5 L"+(.5-ne)+",0"},V),"\u255D":(Y={},Y[1]=function(ne,re){return"M0,"+(.5-re)+" L"+(.5-ne)+","+(.5-re)+" L"+(.5-ne)+",0 M0,"+(.5+re)+" L"+(.5+ne)+","+(.5+re)+" L"+(.5+ne)+",0"},Y),"\u255E":(se={},se[1]=function(ne,re){return"M.5,0 L.5,1 M.5,"+(.5-re)+" L1,"+(.5-re)+" M.5,"+(.5+re)+" L1,"+(.5+re)},se),"\u255F":(xe={},xe[1]=function(ne,re){return"M"+(.5-ne)+",0 L"+(.5-ne)+",1 M"+(.5+ne)+",0 L"+(.5+ne)+",1 M"+(.5+ne)+",.5 L1,.5"},xe),"\u2560":(Ee={},Ee[1]=function(ne,re){return"M"+(.5-ne)+",0 L"+(.5-ne)+",1 M1,"+(.5+re)+" L"+(.5+ne)+","+(.5+re)+" L"+(.5+ne)+",1 M1,"+(.5-re)+" L"+(.5+ne)+","+(.5-re)+" L"+(.5+ne)+",0"},Ee),"\u2561":(De={},De[1]=function(ne,re){return"M.5,0 L.5,1 M0,"+(.5-re)+" L.5,"+(.5-re)+" M0,"+(.5+re)+" L.5,"+(.5+re)},De),"\u2562":(je={},je[1]=function(ne,re){return"M0,.5 L"+(.5-ne)+",.5 M"+(.5-ne)+",0 L"+(.5-ne)+",1 M"+(.5+ne)+",0 L"+(.5+ne)+",1"},je),"\u2563":(Re={},Re[1]=function(ne,re){return"M"+(.5+ne)+",0 L"+(.5+ne)+",1 M0,"+(.5+re)+" L"+(.5-ne)+","+(.5+re)+" L"+(.5-ne)+",1 M0,"+(.5-re)+" L"+(.5-ne)+","+(.5-re)+" L"+(.5-ne)+",0"},Re),"\u2564":(Ze={},Ze[1]=function(ne,re){return"M0,"+(.5-re)+" L1,"+(.5-re)+" M0,"+(.5+re)+" L1,"+(.5+re)+" M.5,"+(.5+re)+" L.5,1"},Ze),"\u2565":(we={},we[1]=function(ne,re){return"M0,.5 L1,.5 M"+(.5-ne)+",.5 L"+(.5-ne)+",1 M"+(.5+ne)+",.5 L"+(.5+ne)+",1"},we),"\u2566":($e={},$e[1]=function(ne,re){return"M0,"+(.5-re)+" L1,"+(.5-re)+" M0,"+(.5+re)+" L"+(.5-ne)+","+(.5+re)+" L"+(.5-ne)+",1 M1,"+(.5+re)+" L"+(.5+ne)+","+(.5+re)+" L"+(.5+ne)+",1"},$e),"\u2567":(dt={},dt[1]=function(ne,re){return"M.5,0 L.5,"+(.5-re)+" M0,"+(.5-re)+" L1,"+(.5-re)+" M0,"+(.5+re)+" L1,"+(.5+re)},dt),"\u2568":(Jt={},Jt[1]=function(ne,re){return"M0,.5 L1,.5 M"+(.5-ne)+",.5 L"+(.5-ne)+",0 M"+(.5+ne)+",.5 L"+(.5+ne)+",0"},Jt),"\u2569":(br={},br[1]=function(ne,re){return"M0,"+(.5+re)+" L1,"+(.5+re)+" M0,"+(.5-re)+" L"+(.5-ne)+","+(.5-re)+" L"+(.5-ne)+",0 M1,"+(.5-re)+" L"+(.5+ne)+","+(.5-re)+" L"+(.5+ne)+",0"},br),"\u256A":(lr={},lr[1]=function(ne,re){return"M.5,0 L.5,1 M0,"+(.5-re)+" L1,"+(.5-re)+" M0,"+(.5+re)+" L1,"+(.5+re)},lr),"\u256B":(ai={},ai[1]=function(ne,re){return"M0,.5 L1,.5 M"+(.5-ne)+",0 L"+(.5-ne)+",1 M"+(.5+ne)+",0 L"+(.5+ne)+",1"},ai),"\u256C":(cr={},cr[1]=function(ne,re){return"M0,"+(.5+re)+" L"+(.5-ne)+","+(.5+re)+" L"+(.5-ne)+",1 M1,"+(.5+re)+" L"+(.5+ne)+","+(.5+re)+" L"+(.5+ne)+",1 M0,"+(.5-re)+" L"+(.5-ne)+","+(.5-re)+" L"+(.5-ne)+",0 M1,"+(.5-re)+" L"+(.5+ne)+","+(.5-re)+" L"+(.5+ne)+",0"},cr),"\u2571":(Xe={},Xe[1]="M1,0 L0,1",Xe),"\u2572":(Sr={},Sr[1]="M0,0 L1,1",Sr),"\u2573":(Qt={},Qt[1]="M1,0 L0,1 M0,0 L1,1",Qt),"\u257C":(ur={},ur[1]="M.5,.5 L0,.5",ur[3]="M.5,.5 L1,.5",ur),"\u257D":(Cr={},Cr[1]="M.5,.5 L.5,0",Cr[3]="M.5,.5 L.5,1",Cr),"\u257E":(fr={},fr[1]="M.5,.5 L1,.5",fr[3]="M.5,.5 L0,.5",fr),"\u257F":(li={},li[1]="M.5,.5 L.5,1",li[3]="M.5,.5 L.5,0",li),"\u250D":(Be={},Be[1]="M.5,.5 L.5,1",Be[3]="M.5,.5 L1,.5",Be),"\u250E":(Vr={},Vr[1]="M.5,.5 L1,.5",Vr[3]="M.5,.5 L.5,1",Vr),"\u2511":(Te={},Te[1]="M.5,.5 L.5,1",Te[3]="M.5,.5 L0,.5",Te),"\u2512":(er={},er[1]="M.5,.5 L0,.5",er[3]="M.5,.5 L.5,1",er),"\u2515":(et={},et[1]="M.5,.5 L.5,0",et[3]="M.5,.5 L1,.5",et),"\u2516":(ze={},ze[1]="M.5,.5 L1,.5",ze[3]="M.5,.5 L.5,0",ze),"\u2519":(Ue={},Ue[1]="M.5,.5 L.5,0",Ue[3]="M.5,.5 L0,.5",Ue),"\u251A":(Et={},Et[1]="M.5,.5 L0,.5",Et[3]="M.5,.5 L.5,0",Et),"\u251D":(pt={},pt[1]="M.5,0 L.5,1",pt[3]="M.5,.5 L1,.5",pt),"\u251E":(Ot={},Ot[1]="M0.5,1 L.5,.5 L1,.5",Ot[3]="M.5,.5 L.5,0",Ot),"\u251F":(tt={},tt[1]="M.5,0 L.5,.5 L1,.5",tt[3]="M.5,.5 L.5,1",tt),"\u2520":(Tr={},Tr[1]="M.5,.5 L1,.5",Tr[3]="M.5,0 L.5,1",Tr),"\u2521":(lt={},lt[1]="M.5,.5 L.5,1",lt[3]="M.5,0 L.5,.5 L1,.5",lt),"\u2522":(hr={},hr[1]="M.5,.5 L.5,0",hr[3]="M0.5,1 L.5,.5 L1,.5",hr),"\u2525":(Wr={},Wr[1]="M.5,0 L.5,1",Wr[3]="M.5,.5 L0,.5",Wr),"\u2526":(Dt={},Dt[1]="M0,.5 L.5,.5 L.5,1",Dt[3]="M.5,.5 L.5,0",Dt),"\u2527":(ci={},ci[1]="M.5,0 L.5,.5 L0,.5",ci[3]="M.5,.5 L.5,1",ci),"\u2528":(Ar={},Ar[1]="M.5,.5 L0,.5",Ar[3]="M.5,0 L.5,1",Ar),"\u2529":($r={},$r[1]="M.5,.5 L.5,1",$r[3]="M.5,0 L.5,.5 L0,.5",$r),"\u252A":(Nr={},Nr[1]="M.5,.5 L.5,0",Nr[3]="M0,.5 L.5,.5 L.5,1",Nr),"\u252D":(dr={},dr[1]="M0.5,1 L.5,.5 L1,.5",dr[3]="M.5,.5 L0,.5",dr),"\u252E":(Tt={},Tt[1]="M0,.5 L.5,.5 L.5,1",Tt[3]="M.5,.5 L1,.5",Tt),"\u252F":(pr={},pr[1]="M.5,.5 L.5,1",pr[3]="M0,.5 L1,.5",pr),"\u2530":(Jr={},Jr[1]="M0,.5 L1,.5",Jr[3]="M.5,.5 L.5,1",Jr),"\u2531":(Bt={},Bt[1]="M.5,.5 L1,.5",Bt[3]="M0,.5 L.5,.5 L.5,1",Bt),"\u2532":(ui={},ui[1]="M.5,.5 L0,.5",ui[3]="M0.5,1 L.5,.5 L1,.5",ui),"\u2535":(Mr={},Mr[1]="M.5,0 L.5,.5 L1,.5",Mr[3]="M.5,.5 L0,.5",Mr),"\u2536":(Pt={},Pt[1]="M.5,0 L.5,.5 L0,.5",Pt[3]="M.5,.5 L1,.5",Pt),"\u2537":(It={},It[1]="M.5,.5 L.5,0",It[3]="M0,.5 L1,.5",It),"\u2538":(wr={},wr[1]="M0,.5 L1,.5",wr[3]="M.5,.5 L.5,0",wr),"\u2539":(Rr={},Rr[1]="M.5,.5 L1,.5",Rr[3]="M.5,0 L.5,.5 L0,.5",Rr),"\u253A":(Or={},Or[1]="M.5,.5 L0,.5",Or[3]="M.5,0 L.5,.5 L1,.5",Or),"\u253D":(vr={},vr[1]="M.5,0 L.5,1 M.5,.5 L1,.5",vr[3]="M.5,.5 L0,.5",vr),"\u253E":(Dr={},Dr[1]="M.5,0 L.5,1 M.5,.5 L0,.5",Dr[3]="M.5,.5 L1,.5",Dr),"\u253F":(zt={},zt[1]="M.5,0 L.5,1",zt[3]="M0,.5 L1,.5",zt),"\u2540":(jr={},jr[1]="M0,.5 L1,.5 M.5,.5 L.5,1",jr[3]="M.5,.5 L.5,0",jr),"\u2541":(Br={},Br[1]="M.5,.5 L.5,0 M0,.5 L1,.5",Br[3]="M.5,.5 L.5,1",Br),"\u2542":(qe={},qe[1]="M0,.5 L1,.5",qe[3]="M.5,0 L.5,1",qe),"\u2543":(Le={},Le[1]="M0.5,1 L.5,.5 L1,.5",Le[3]="M.5,0 L.5,.5 L0,.5",Le),"\u2544":(tr={},tr[1]="M0,.5 L.5,.5 L.5,1",tr[3]="M.5,0 L.5,.5 L1,.5",tr),"\u2545":(zr={},zr[1]="M.5,0 L.5,.5 L1,.5",zr[3]="M0,.5 L.5,.5 L.5,1",zr),"\u2546":(Lt={},Lt[1]="M.5,0 L.5,.5 L0,.5",Lt[3]="M0.5,1 L.5,.5 L1,.5",Lt),"\u2547":(j={},j[1]="M.5,.5 L.5,1",j[3]="M.5,.5 L.5,0 M0,.5 L1,.5",j),"\u2548":(Z={},Z[1]="M.5,.5 L.5,0",Z[3]="M0,.5 L1,.5 M.5,.5 L.5,1",Z),"\u2549":(ae={},ae[1]="M.5,.5 L1,.5",ae[3]="M.5,0 L.5,1 M.5,.5 L0,.5",ae),"\u254A":(he={},he[1]="M.5,.5 L0,.5",he[3]="M.5,0 L.5,1 M.5,.5 L1,.5",he),"\u254C":(ie={},ie[1]="M.1,.5 L.4,.5 M.6,.5 L.9,.5",ie),"\u254D":(be={},be[3]="M.1,.5 L.4,.5 M.6,.5 L.9,.5",be),"\u2504":(He={},He[1]="M.0667,.5 L.2667,.5 M.4,.5 L.6,.5 M.7333,.5 L.9333,.5",He),"\u2505":(Je={},Je[3]="M.0667,.5 L.2667,.5 M.4,.5 L.6,.5 M.7333,.5 L.9333,.5",Je),"\u2508":(vt={},vt[1]="M.05,.5 L.2,.5 M.3,.5 L.45,.5 M.55,.5 L.7,.5 M.8,.5 L.95,.5",vt),"\u2509":(Ur={},Ur[3]="M.05,.5 L.2,.5 M.3,.5 L.45,.5 M.55,.5 L.7,.5 M.8,.5 L.95,.5",Ur),"\u254E":(Wi={},Wi[1]="M.5,.1 L.5,.4 M.5,.6 L.5,.9",Wi),"\u254F":(Oe={},Oe[3]="M.5,.1 L.5,.4 M.5,.6 L.5,.9",Oe),"\u2506":(fn={},fn[1]="M.5,.0667 L.5,.2667 M.5,.4 L.5,.6 M.5,.7333 L.5,.9333",fn),"\u2507":(Ni={},Ni[3]="M.5,.0667 L.5,.2667 M.5,.4 L.5,.6 M.5,.7333 L.5,.9333",Ni),"\u250A":(fi={},fi[1]="M.5,.05 L.5,.2 M.5,.3 L.5,.45 L.5,.55 M.5,.7 L.5,.95",fi),"\u250B":(rr={},rr[3]="M.5,.05 L.5,.2 M.5,.3 L.5,.45 L.5,.55 M.5,.7 L.5,.95",rr),"\u256D":(ji={},ji[1]="C.5,1,.5,.5,1,.5",ji),"\u256E":(zi={},zi[1]="C.5,1,.5,.5,0,.5",zi),"\u256F":(Qr={},Qr[1]="C.5,0,.5,.5,0,.5",Qr),"\u2570":(Ci={},Ci[1]="C.5,0,.5,.5,1,.5",Ci)},f.powerlineDefinitions={"\uE0B0":{d:"M0,0 L1,.5 L0,1",type:0},"\uE0B1":{d:"M0,0 L1,.5 L0,1",type:1,horizontalPadding:.5},"\uE0B2":{d:"M1,0 L0,.5 L1,1",type:0},"\uE0B3":{d:"M1,0 L0,.5 L1,1",type:1,horizontalPadding:.5}},f.tryDrawCustomChar=function(ne,re,nt,Ht,Ut,gt){var rt=f.blockElementDefinitions[re];if(rt)return function(Ge,At,ei,qr,Pr,gr){for(var ot=0;ot7&&parseInt(We.slice(7,9),16)||1;else{if(!We.startsWith("rgba"))throw new Error('Unexpected fillStyle color format "'+We+'" when drawing pattern glyph');hi=(ot=hn(We.substring(5,We.length-1).split(",").map(function(Kr){return parseFloat(Kr)}),4))[0],xr=ot[1],kr=ot[2],qt=ot[3]}for(var or=0;or{Object.defineProperty(f,"__esModule",{value:!0}),f.GridCache=void 0;var k=function(){function m(){this.cache=[]}return m.prototype.resize=function(y,_){for(var g=0;g=0;d--)(n=b[d])&&(h=(a<3?n(h):a>3?n(c,o,h):n(c,o))||h);return a>3&&h&&Object.defineProperty(c,o,h),h},g=this&&this.__param||function(b,c){return function(o,l){c(o,l,b)}};Object.defineProperty(f,"__esModule",{value:!0}),f.LinkRenderLayer=void 0;var x=k(1546),C=k(8803),u=k(2040),p=k(2585),w=function(b){function c(o,l,n,a,h,d,S,T,E){var M=b.call(this,o,"link",l,!0,n,a,S,T,E)||this;return h.onShowLinkUnderline(function(D){return M._onShowLinkUnderline(D)}),h.onHideLinkUnderline(function(D){return M._onHideLinkUnderline(D)}),d.onShowLinkUnderline(function(D){return M._onShowLinkUnderline(D)}),d.onHideLinkUnderline(function(D){return M._onHideLinkUnderline(D)}),M}return y(c,b),c.prototype.resize=function(o){b.prototype.resize.call(this,o),this._state=void 0},c.prototype.reset=function(){this._clearCurrentLink()},c.prototype._clearCurrentLink=function(){if(this._state){this._clearCells(this._state.x1,this._state.y1,this._state.cols-this._state.x1,1);var o=this._state.y2-this._state.y1-1;o>0&&this._clearCells(0,this._state.y1+1,this._state.cols,o),this._clearCells(0,this._state.y2,this._state.x2,1),this._state=void 0}},c.prototype._onShowLinkUnderline=function(o){if(o.fg===C.INVERTED_DEFAULT_COLOR?this._ctx.fillStyle=this._colors.background.css:o.fg&&(0,u.is256Color)(o.fg)?this._ctx.fillStyle=this._colors.ansi[o.fg].css:this._ctx.fillStyle=this._colors.foreground.css,o.y1===o.y2)this._fillBottomLineAtCells(o.x1,o.y1,o.x2-o.x1);else{this._fillBottomLineAtCells(o.x1,o.y1,o.cols-o.x1);for(var l=o.y1+1;l=0;I--)(M=d[I])&&(W=(D<3?M(W):D>3?M(S,T,W):M(S,T))||W);return D>3&&W&&Object.defineProperty(S,T,W),W},g=this&&this.__param||function(d,S){return function(T,E){S(T,E,d)}},x=this&&this.__values||function(d){var S=typeof Symbol=="function"&&Symbol.iterator,T=S&&d[S],E=0;if(T)return T.call(d);if(d&&typeof d.length=="number")return{next:function(){return d&&E>=d.length&&(d=void 0),{value:d&&d[E++],done:!d}}};throw new TypeError(S?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(f,"__esModule",{value:!0}),f.Renderer=void 0;var C=k(9596),u=k(4149),p=k(2512),w=k(5098),b=k(844),c=k(4725),o=k(2585),l=k(1420),n=k(8460),a=1,h=function(d){function S(T,E,M,D,W,I,A,H){var F=d.call(this)||this;F._colors=T,F._screenElement=E,F._bufferService=I,F._charSizeService=A,F._optionsService=H,F._id=a++,F._onRequestRedraw=new n.EventEmitter;var z=F._optionsService.rawOptions.allowTransparency;return F._renderLayers=[W.createInstance(C.TextRenderLayer,F._screenElement,0,F._colors,z,F._id),W.createInstance(u.SelectionRenderLayer,F._screenElement,1,F._colors,F._id),W.createInstance(w.LinkRenderLayer,F._screenElement,2,F._colors,F._id,M,D),W.createInstance(p.CursorRenderLayer,F._screenElement,3,F._colors,F._id,F._onRequestRedraw)],F.dimensions={scaledCharWidth:0,scaledCharHeight:0,scaledCellWidth:0,scaledCellHeight:0,scaledCharLeft:0,scaledCharTop:0,scaledCanvasWidth:0,scaledCanvasHeight:0,canvasWidth:0,canvasHeight:0,actualCellWidth:0,actualCellHeight:0},F._devicePixelRatio=window.devicePixelRatio,F._updateDimensions(),F.onOptionsChanged(),F}return y(S,d),Object.defineProperty(S.prototype,"onRequestRedraw",{get:function(){return this._onRequestRedraw.event},enumerable:!1,configurable:!0}),S.prototype.dispose=function(){var T,E;try{for(var M=x(this._renderLayers),D=M.next();!D.done;D=M.next())D.value.dispose()}catch(W){T={error:W}}finally{try{D&&!D.done&&(E=M.return)&&E.call(M)}finally{if(T)throw T.error}}d.prototype.dispose.call(this),(0,l.removeTerminalFromCache)(this._id)},S.prototype.onDevicePixelRatioChange=function(){this._devicePixelRatio!==window.devicePixelRatio&&(this._devicePixelRatio=window.devicePixelRatio,this.onResize(this._bufferService.cols,this._bufferService.rows))},S.prototype.setColors=function(T){var E,M;this._colors=T;try{for(var D=x(this._renderLayers),W=D.next();!W.done;W=D.next()){var I=W.value;I.setColors(this._colors),I.reset()}}catch(A){E={error:A}}finally{try{W&&!W.done&&(M=D.return)&&M.call(D)}finally{if(E)throw E.error}}},S.prototype.onResize=function(T,E){var M,D;this._updateDimensions();try{for(var W=x(this._renderLayers),I=W.next();!I.done;I=W.next())I.value.resize(this.dimensions)}catch(A){M={error:A}}finally{try{I&&!I.done&&(D=W.return)&&D.call(W)}finally{if(M)throw M.error}}this._screenElement.style.width=this.dimensions.canvasWidth+"px",this._screenElement.style.height=this.dimensions.canvasHeight+"px"},S.prototype.onCharSizeChanged=function(){this.onResize(this._bufferService.cols,this._bufferService.rows)},S.prototype.onBlur=function(){this._runOperation(function(T){return T.onBlur()})},S.prototype.onFocus=function(){this._runOperation(function(T){return T.onFocus()})},S.prototype.onSelectionChanged=function(T,E,M){M===void 0&&(M=!1),this._runOperation(function(D){return D.onSelectionChanged(T,E,M)}),this._colors.selectionForeground&&this._onRequestRedraw.fire({start:0,end:this._bufferService.rows-1})},S.prototype.onCursorMove=function(){this._runOperation(function(T){return T.onCursorMove()})},S.prototype.onOptionsChanged=function(){this._runOperation(function(T){return T.onOptionsChanged()})},S.prototype.clear=function(){this._runOperation(function(T){return T.reset()})},S.prototype._runOperation=function(T){var E,M;try{for(var D=x(this._renderLayers),W=D.next();!W.done;W=D.next())T(W.value)}catch(I){E={error:I}}finally{try{W&&!W.done&&(M=D.return)&&M.call(D)}finally{if(E)throw E.error}}},S.prototype.renderRows=function(T,E){var M,D;try{for(var W=x(this._renderLayers),I=W.next();!I.done;I=W.next())I.value.onGridChanged(T,E)}catch(A){M={error:A}}finally{try{I&&!I.done&&(D=W.return)&&D.call(W)}finally{if(M)throw M.error}}},S.prototype.clearTextureAtlas=function(){var T,E;try{for(var M=x(this._renderLayers),D=M.next();!D.done;D=M.next())D.value.clearTextureAtlas()}catch(W){T={error:W}}finally{try{D&&!D.done&&(E=M.return)&&E.call(M)}finally{if(T)throw T.error}}},S.prototype._updateDimensions=function(){this._charSizeService.hasValidSize&&(this.dimensions.scaledCharWidth=Math.floor(this._charSizeService.width*window.devicePixelRatio),this.dimensions.scaledCharHeight=Math.ceil(this._charSizeService.height*window.devicePixelRatio),this.dimensions.scaledCellHeight=Math.floor(this.dimensions.scaledCharHeight*this._optionsService.rawOptions.lineHeight),this.dimensions.scaledCharTop=this._optionsService.rawOptions.lineHeight===1?0:Math.round((this.dimensions.scaledCellHeight-this.dimensions.scaledCharHeight)/2),this.dimensions.scaledCellWidth=this.dimensions.scaledCharWidth+Math.round(this._optionsService.rawOptions.letterSpacing),this.dimensions.scaledCharLeft=Math.floor(this._optionsService.rawOptions.letterSpacing/2),this.dimensions.scaledCanvasHeight=this._bufferService.rows*this.dimensions.scaledCellHeight,this.dimensions.scaledCanvasWidth=this._bufferService.cols*this.dimensions.scaledCellWidth,this.dimensions.canvasHeight=Math.round(this.dimensions.scaledCanvasHeight/window.devicePixelRatio),this.dimensions.canvasWidth=Math.round(this.dimensions.scaledCanvasWidth/window.devicePixelRatio),this.dimensions.actualCellHeight=this.dimensions.canvasHeight/this._bufferService.rows,this.dimensions.actualCellWidth=this.dimensions.canvasWidth/this._bufferService.cols)},_([g(4,o.IInstantiationService),g(5,o.IBufferService),g(6,c.ICharSizeService),g(7,o.IOptionsService)],S)}(b.Disposable);f.Renderer=h},1752:(R,f)=>{function k(m){return 57508<=m&&m<=57558}Object.defineProperty(f,"__esModule",{value:!0}),f.excludeFromContrastRatioDemands=f.isPowerlineGlyph=f.throwIfFalsy=void 0,f.throwIfFalsy=function(m){if(!m)throw new Error("value must not be falsy");return m},f.isPowerlineGlyph=k,f.excludeFromContrastRatioDemands=function(m){return k(m)||function(y){return 9472<=y&&y<=9631}(m)}},4149:function(R,f,k){var m,y=this&&this.__extends||(m=function(p,w){return m=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(b,c){b.__proto__=c}||function(b,c){for(var o in c)Object.prototype.hasOwnProperty.call(c,o)&&(b[o]=c[o])},m(p,w)},function(p,w){if(typeof w!="function"&&w!==null)throw new TypeError("Class extends value "+String(w)+" is not a constructor or null");function b(){this.constructor=p}m(p,w),p.prototype=w===null?Object.create(w):(b.prototype=w.prototype,new b)}),_=this&&this.__decorate||function(p,w,b,c){var o,l=arguments.length,n=l<3?w:c===null?c=Object.getOwnPropertyDescriptor(w,b):c;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")n=Reflect.decorate(p,w,b,c);else for(var a=p.length-1;a>=0;a--)(o=p[a])&&(n=(l<3?o(n):l>3?o(w,b,n):o(w,b))||n);return l>3&&n&&Object.defineProperty(w,b,n),n},g=this&&this.__param||function(p,w){return function(b,c){w(b,c,p)}};Object.defineProperty(f,"__esModule",{value:!0}),f.SelectionRenderLayer=void 0;var x=k(1546),C=k(2585),u=function(p){function w(b,c,o,l,n,a,h){var d=p.call(this,b,"selection",c,!0,o,l,n,a,h)||this;return d._clearState(),d}return y(w,p),w.prototype._clearState=function(){this._state={start:void 0,end:void 0,columnSelectMode:void 0,ydisp:void 0}},w.prototype.resize=function(b){p.prototype.resize.call(this,b),this._clearState()},w.prototype.reset=function(){this._state.start&&this._state.end&&(this._clearState(),this._clearAll())},w.prototype.onSelectionChanged=function(b,c,o){if(p.prototype.onSelectionChanged.call(this,b,c,o),this._didStateChange(b,c,o,this._bufferService.buffer.ydisp))if(this._clearAll(),b&&c){var l=b[1]-this._bufferService.buffer.ydisp,n=c[1]-this._bufferService.buffer.ydisp,a=Math.max(l,0),h=Math.min(n,this._bufferService.rows-1);if(a>=this._bufferService.rows||h<0)this._state.ydisp=this._bufferService.buffer.ydisp;else{if(this._ctx.fillStyle=this._colors.selectionTransparent.css,o){var d=b[0],S=c[0]-d,T=h-a+1;this._fillCells(d,a,S,T)}else{d=l===a?b[0]:0;var E=a===n?c[0]:this._bufferService.cols;this._fillCells(d,a,E-d,1);var M=Math.max(h-a-1,0);if(this._fillCells(0,a+1,this._bufferService.cols,M),a!==h){var D=n===h?c[0]:this._bufferService.cols;this._fillCells(0,h,D,1)}}this._state.start=[b[0],b[1]],this._state.end=[c[0],c[1]],this._state.columnSelectMode=o,this._state.ydisp=this._bufferService.buffer.ydisp}}else this._clearState()},w.prototype._didStateChange=function(b,c,o,l){return!this._areCoordinatesEqual(b,this._state.start)||!this._areCoordinatesEqual(c,this._state.end)||o!==this._state.columnSelectMode||l!==this._state.ydisp},w.prototype._areCoordinatesEqual=function(b,c){return!(!b||!c)&&b[0]===c[0]&&b[1]===c[1]},_([g(4,C.IBufferService),g(5,C.IOptionsService),g(6,C.IDecorationService)],w)}(x.BaseRenderLayer);f.SelectionRenderLayer=u},9596:function(R,f,k){var m,y=this&&this.__extends||(m=function(a,h){return m=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(d,S){d.__proto__=S}||function(d,S){for(var T in S)Object.prototype.hasOwnProperty.call(S,T)&&(d[T]=S[T])},m(a,h)},function(a,h){if(typeof h!="function"&&h!==null)throw new TypeError("Class extends value "+String(h)+" is not a constructor or null");function d(){this.constructor=a}m(a,h),a.prototype=h===null?Object.create(h):(d.prototype=h.prototype,new d)}),_=this&&this.__decorate||function(a,h,d,S){var T,E=arguments.length,M=E<3?h:S===null?S=Object.getOwnPropertyDescriptor(h,d):S;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")M=Reflect.decorate(a,h,d,S);else for(var D=a.length-1;D>=0;D--)(T=a[D])&&(M=(E<3?T(M):E>3?T(h,d,M):T(h,d))||M);return E>3&&M&&Object.defineProperty(h,d,M),M},g=this&&this.__param||function(a,h){return function(d,S){h(d,S,a)}},x=this&&this.__values||function(a){var h=typeof Symbol=="function"&&Symbol.iterator,d=h&&a[h],S=0;if(d)return d.call(a);if(a&&typeof a.length=="number")return{next:function(){return a&&S>=a.length&&(a=void 0),{value:a&&a[S++],done:!a}}};throw new TypeError(h?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(f,"__esModule",{value:!0}),f.TextRenderLayer=void 0;var C=k(3700),u=k(1546),p=k(3734),w=k(643),b=k(511),c=k(2585),o=k(4725),l=k(4269),n=function(a){function h(d,S,T,E,M,D,W,I,A){var H=a.call(this,d,"text",S,E,T,M,D,W,A)||this;return H._characterJoinerService=I,H._characterWidth=0,H._characterFont="",H._characterOverlapCache={},H._workCell=new b.CellData,H._state=new C.GridCache,H}return y(h,a),h.prototype.resize=function(d){a.prototype.resize.call(this,d);var S=this._getFont(!1,!1);this._characterWidth===d.scaledCharWidth&&this._characterFont===S||(this._characterWidth=d.scaledCharWidth,this._characterFont=S,this._characterOverlapCache={}),this._state.clear(),this._state.resize(this._bufferService.cols,this._bufferService.rows)},h.prototype.reset=function(){this._state.clear(),this._clearAll()},h.prototype._forEachCell=function(d,S,T){for(var E=d;E<=S;E++)for(var M=E+this._bufferService.buffer.ydisp,D=this._bufferService.buffer.lines.get(M),W=this._characterJoinerService.getJoinedCharacters(M),I=0;I0&&I===W[0][0]){H=!0;var z=W.shift();A=new l.JoinedCellData(this._workCell,D.translateToString(!0,z[0],z[1]),z[1]-z[0]),F=z[1]-1}!H&&this._isOverlapping(A)&&Fthis._characterWidth;return this._ctx.restore(),this._characterOverlapCache[S]=T,T},_([g(5,c.IBufferService),g(6,c.IOptionsService),g(7,o.ICharacterJoinerService),g(8,c.IDecorationService)],h)}(u.BaseRenderLayer);f.TextRenderLayer=n},9616:(R,f)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.BaseCharAtlas=void 0;var k=function(){function m(){this._didWarmUp=!1}return m.prototype.dispose=function(){},m.prototype.warmUp=function(){this._didWarmUp||(this._doWarmUp(),this._didWarmUp=!0)},m.prototype._doWarmUp=function(){},m.prototype.clear=function(){},m.prototype.beginFrame=function(){},m}();f.BaseCharAtlas=k},1420:(R,f,k)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.removeTerminalFromCache=f.acquireCharAtlas=void 0;var m=k(2040),y=k(1906),_=[];f.acquireCharAtlas=function(g,x,C,u,p){for(var w=(0,m.generateConfig)(u,p,g,C),b=0;b<_.length;b++){var c=(o=_[b]).ownedBy.indexOf(x);if(c>=0){if((0,m.configEquals)(o.config,w))return o.atlas;o.ownedBy.length===1?(o.atlas.dispose(),_.splice(b,1)):o.ownedBy.splice(c,1);break}}for(b=0;b<_.length;b++){var o=_[b];if((0,m.configEquals)(o.config,w))return o.ownedBy.push(x),o.atlas}var l={atlas:new y.DynamicCharAtlas(document,w),config:w,ownedBy:[x]};return _.push(l),l.atlas},f.removeTerminalFromCache=function(g){for(var x=0;x<_.length;x++){var C=_[x].ownedBy.indexOf(g);if(C!==-1){_[x].ownedBy.length===1?(_[x].atlas.dispose(),_.splice(x,1)):_[x].ownedBy.splice(C,1);break}}}},2040:(R,f,k)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.is256Color=f.configEquals=f.generateConfig=void 0;var m=k(643);f.generateConfig=function(y,_,g,x){var C={foreground:x.foreground,background:x.background,cursor:void 0,cursorAccent:void 0,selection:void 0,ansi:x.ansi.slice()};return{devicePixelRatio:window.devicePixelRatio,scaledCharWidth:y,scaledCharHeight:_,fontFamily:g.fontFamily,fontSize:g.fontSize,fontWeight:g.fontWeight,fontWeightBold:g.fontWeightBold,allowTransparency:g.allowTransparency,colors:C}},f.configEquals=function(y,_){for(var g=0;g{Object.defineProperty(f,"__esModule",{value:!0}),f.CHAR_ATLAS_CELL_SPACING=f.TEXT_BASELINE=f.DIM_OPACITY=f.INVERTED_DEFAULT_COLOR=void 0;var m=k(6114);f.INVERTED_DEFAULT_COLOR=257,f.DIM_OPACITY=.5,f.TEXT_BASELINE=m.isFirefox||m.isLegacyEdge?"bottom":"ideographic",f.CHAR_ATLAS_CELL_SPACING=1},1906:function(R,f,k){var m,y=this&&this.__extends||(m=function(d,S){return m=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(T,E){T.__proto__=E}||function(T,E){for(var M in E)Object.prototype.hasOwnProperty.call(E,M)&&(T[M]=E[M])},m(d,S)},function(d,S){if(typeof S!="function"&&S!==null)throw new TypeError("Class extends value "+String(S)+" is not a constructor or null");function T(){this.constructor=d}m(d,S),d.prototype=S===null?Object.create(S):(T.prototype=S.prototype,new T)});Object.defineProperty(f,"__esModule",{value:!0}),f.NoneCharAtlas=f.DynamicCharAtlas=f.getGlyphCacheKey=void 0;var _=k(8803),g=k(9616),x=k(5680),C=k(7001),u=k(6114),p=k(1752),w=k(8055),b=1024,c=1024,o={css:"rgba(0, 0, 0, 0)",rgba:0};function l(d){return d.code<<21|d.bg<<12|d.fg<<3|(d.bold?0:4)+(d.dim?0:2)+(d.italic?0:1)}f.getGlyphCacheKey=l;var n=function(d){function S(T,E){var M=d.call(this)||this;M._config=E,M._drawToCacheCount=0,M._glyphsWaitingOnBitmap=[],M._bitmapCommitTimeout=null,M._bitmap=null,M._cacheCanvas=T.createElement("canvas"),M._cacheCanvas.width=b,M._cacheCanvas.height=c,M._cacheCtx=(0,p.throwIfFalsy)(M._cacheCanvas.getContext("2d",{alpha:!0}));var D=T.createElement("canvas");D.width=M._config.scaledCharWidth,D.height=M._config.scaledCharHeight,M._tmpCtx=(0,p.throwIfFalsy)(D.getContext("2d",{alpha:M._config.allowTransparency})),M._width=Math.floor(b/M._config.scaledCharWidth),M._height=Math.floor(c/M._config.scaledCharHeight);var W=M._width*M._height;return M._cacheMap=new C.LRUMap(W),M._cacheMap.prealloc(W),M}return y(S,d),S.prototype.dispose=function(){this._bitmapCommitTimeout!==null&&(window.clearTimeout(this._bitmapCommitTimeout),this._bitmapCommitTimeout=null)},S.prototype.beginFrame=function(){this._drawToCacheCount=0},S.prototype.clear=function(){if(this._cacheMap.size>0){var T=this._width*this._height;this._cacheMap=new C.LRUMap(T),this._cacheMap.prealloc(T)}this._cacheCtx.clearRect(0,0,b,c),this._tmpCtx.clearRect(0,0,this._config.scaledCharWidth,this._config.scaledCharHeight)},S.prototype.draw=function(T,E,M,D){if(E.code===32)return!0;if(!this._canCache(E))return!1;var W=l(E),I=this._cacheMap.get(W);if(I!=null)return this._drawFromCache(T,I,M,D),!0;if(this._drawToCacheCount<100){var A;A=this._cacheMap.size>>24,M=S.rgba>>>16&255,D=S.rgba>>>8&255,W=0;W{Object.defineProperty(f,"__esModule",{value:!0}),f.LRUMap=void 0;var k=function(){function m(y){this.capacity=y,this._map={},this._head=null,this._tail=null,this._nodePool=[],this.size=0}return m.prototype._unlinkNode=function(y){var _=y.prev,g=y.next;y===this._head&&(this._head=g),y===this._tail&&(this._tail=_),_!==null&&(_.next=g),g!==null&&(g.prev=_)},m.prototype._appendNode=function(y){var _=this._tail;_!==null&&(_.next=y),y.prev=_,y.next=null,this._tail=y,this._head===null&&(this._head=y)},m.prototype.prealloc=function(y){for(var _=this._nodePool,g=0;g=this.capacity)g=this._head,this._unlinkNode(g),delete this._map[g.key],g.key=y,g.value=_,this._map[y]=g;else{var x=this._nodePool;x.length>0?((g=x.pop()).key=y,g.value=_):g={prev:null,next:null,key:y,value:_},this._map[y]=g,this.size++}this._appendNode(g)},m}();f.LRUMap=k},1296:function(R,f,k){var m,y=this&&this.__extends||(m=function(E,M){return m=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(D,W){D.__proto__=W}||function(D,W){for(var I in W)Object.prototype.hasOwnProperty.call(W,I)&&(D[I]=W[I])},m(E,M)},function(E,M){if(typeof M!="function"&&M!==null)throw new TypeError("Class extends value "+String(M)+" is not a constructor or null");function D(){this.constructor=E}m(E,M),E.prototype=M===null?Object.create(M):(D.prototype=M.prototype,new D)}),_=this&&this.__decorate||function(E,M,D,W){var I,A=arguments.length,H=A<3?M:W===null?W=Object.getOwnPropertyDescriptor(M,D):W;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")H=Reflect.decorate(E,M,D,W);else for(var F=E.length-1;F>=0;F--)(I=E[F])&&(H=(A<3?I(H):A>3?I(M,D,H):I(M,D))||H);return A>3&&H&&Object.defineProperty(M,D,H),H},g=this&&this.__param||function(E,M){return function(D,W){M(D,W,E)}},x=this&&this.__values||function(E){var M=typeof Symbol=="function"&&Symbol.iterator,D=M&&E[M],W=0;if(D)return D.call(E);if(E&&typeof E.length=="number")return{next:function(){return E&&W>=E.length&&(E=void 0),{value:E&&E[W++],done:!E}}};throw new TypeError(M?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(f,"__esModule",{value:!0}),f.DomRenderer=void 0;var C=k(3787),u=k(8803),p=k(844),w=k(4725),b=k(2585),c=k(8460),o=k(8055),l=k(9631),n="xterm-dom-renderer-owner-",a="xterm-fg-",h="xterm-bg-",d="xterm-focus",S=1,T=function(E){function M(D,W,I,A,H,F,z,G,te,ce){var ee=E.call(this)||this;return ee._colors=D,ee._element=W,ee._screenElement=I,ee._viewportElement=A,ee._linkifier=H,ee._linkifier2=F,ee._charSizeService=G,ee._optionsService=te,ee._bufferService=ce,ee._terminalClass=S++,ee._rowElements=[],ee._rowContainer=document.createElement("div"),ee._rowContainer.classList.add("xterm-rows"),ee._rowContainer.style.lineHeight="normal",ee._rowContainer.setAttribute("aria-hidden","true"),ee._refreshRowElements(ee._bufferService.cols,ee._bufferService.rows),ee._selectionContainer=document.createElement("div"),ee._selectionContainer.classList.add("xterm-selection"),ee._selectionContainer.setAttribute("aria-hidden","true"),ee.dimensions={scaledCharWidth:0,scaledCharHeight:0,scaledCellWidth:0,scaledCellHeight:0,scaledCharLeft:0,scaledCharTop:0,scaledCanvasWidth:0,scaledCanvasHeight:0,canvasWidth:0,canvasHeight:0,actualCellWidth:0,actualCellHeight:0},ee._updateDimensions(),ee._injectCss(),ee._rowFactory=z.createInstance(C.DomRendererRowFactory,document,ee._colors),ee._element.classList.add(n+ee._terminalClass),ee._screenElement.appendChild(ee._rowContainer),ee._screenElement.appendChild(ee._selectionContainer),ee.register(ee._linkifier.onShowLinkUnderline(function(fe){return ee._onLinkHover(fe)})),ee.register(ee._linkifier.onHideLinkUnderline(function(fe){return ee._onLinkLeave(fe)})),ee.register(ee._linkifier2.onShowLinkUnderline(function(fe){return ee._onLinkHover(fe)})),ee.register(ee._linkifier2.onHideLinkUnderline(function(fe){return ee._onLinkLeave(fe)})),ee}return y(M,E),Object.defineProperty(M.prototype,"onRequestRedraw",{get:function(){return new c.EventEmitter().event},enumerable:!1,configurable:!0}),M.prototype.dispose=function(){this._element.classList.remove(n+this._terminalClass),(0,l.removeElementFromParent)(this._rowContainer,this._selectionContainer,this._themeStyleElement,this._dimensionsStyleElement),E.prototype.dispose.call(this)},M.prototype._updateDimensions=function(){var D,W;this.dimensions.scaledCharWidth=this._charSizeService.width*window.devicePixelRatio,this.dimensions.scaledCharHeight=Math.ceil(this._charSizeService.height*window.devicePixelRatio),this.dimensions.scaledCellWidth=this.dimensions.scaledCharWidth+Math.round(this._optionsService.rawOptions.letterSpacing),this.dimensions.scaledCellHeight=Math.floor(this.dimensions.scaledCharHeight*this._optionsService.rawOptions.lineHeight),this.dimensions.scaledCharLeft=0,this.dimensions.scaledCharTop=0,this.dimensions.scaledCanvasWidth=this.dimensions.scaledCellWidth*this._bufferService.cols,this.dimensions.scaledCanvasHeight=this.dimensions.scaledCellHeight*this._bufferService.rows,this.dimensions.canvasWidth=Math.round(this.dimensions.scaledCanvasWidth/window.devicePixelRatio),this.dimensions.canvasHeight=Math.round(this.dimensions.scaledCanvasHeight/window.devicePixelRatio),this.dimensions.actualCellWidth=this.dimensions.canvasWidth/this._bufferService.cols,this.dimensions.actualCellHeight=this.dimensions.canvasHeight/this._bufferService.rows;try{for(var I=x(this._rowElements),A=I.next();!A.done;A=I.next()){var H=A.value;H.style.width=this.dimensions.canvasWidth+"px",H.style.height=this.dimensions.actualCellHeight+"px",H.style.lineHeight=this.dimensions.actualCellHeight+"px",H.style.overflow="hidden"}}catch(z){D={error:z}}finally{try{A&&!A.done&&(W=I.return)&&W.call(I)}finally{if(D)throw D.error}}this._dimensionsStyleElement||(this._dimensionsStyleElement=document.createElement("style"),this._screenElement.appendChild(this._dimensionsStyleElement));var F=this._terminalSelector+" .xterm-rows span { display: inline-block; height: 100%; vertical-align: top; width: "+this.dimensions.actualCellWidth+"px}";this._dimensionsStyleElement.textContent=F,this._selectionContainer.style.height=this._viewportElement.style.height,this._screenElement.style.width=this.dimensions.canvasWidth+"px",this._screenElement.style.height=this.dimensions.canvasHeight+"px"},M.prototype.setColors=function(D){this._colors=D,this._injectCss()},M.prototype._injectCss=function(){var D=this;this._themeStyleElement||(this._themeStyleElement=document.createElement("style"),this._screenElement.appendChild(this._themeStyleElement));var W=this._terminalSelector+" .xterm-rows { color: "+this._colors.foreground.css+"; font-family: "+this._optionsService.rawOptions.fontFamily+"; font-size: "+this._optionsService.rawOptions.fontSize+"px;}";W+=this._terminalSelector+" span:not(."+C.BOLD_CLASS+") { font-weight: "+this._optionsService.rawOptions.fontWeight+";}"+this._terminalSelector+" span."+C.BOLD_CLASS+" { font-weight: "+this._optionsService.rawOptions.fontWeightBold+";}"+this._terminalSelector+" span."+C.ITALIC_CLASS+" { font-style: italic;}",W+="@keyframes blink_box_shadow_"+this._terminalClass+" { 50% { box-shadow: none; }}",W+="@keyframes blink_block_"+this._terminalClass+" { 0% { background-color: "+this._colors.cursor.css+"; color: "+this._colors.cursorAccent.css+"; } 50% { background-color: "+this._colors.cursorAccent.css+"; color: "+this._colors.cursor.css+"; }}",W+=this._terminalSelector+" .xterm-rows:not(.xterm-focus) ."+C.CURSOR_CLASS+"."+C.CURSOR_STYLE_BLOCK_CLASS+" { outline: 1px solid "+this._colors.cursor.css+"; outline-offset: -1px;}"+this._terminalSelector+" .xterm-rows.xterm-focus ."+C.CURSOR_CLASS+"."+C.CURSOR_BLINK_CLASS+":not(."+C.CURSOR_STYLE_BLOCK_CLASS+") { animation: blink_box_shadow_"+this._terminalClass+" 1s step-end infinite;}"+this._terminalSelector+" .xterm-rows.xterm-focus ."+C.CURSOR_CLASS+"."+C.CURSOR_BLINK_CLASS+"."+C.CURSOR_STYLE_BLOCK_CLASS+" { animation: blink_block_"+this._terminalClass+" 1s step-end infinite;}"+this._terminalSelector+" .xterm-rows.xterm-focus ."+C.CURSOR_CLASS+"."+C.CURSOR_STYLE_BLOCK_CLASS+" { background-color: "+this._colors.cursor.css+"; color: "+this._colors.cursorAccent.css+";}"+this._terminalSelector+" .xterm-rows ."+C.CURSOR_CLASS+"."+C.CURSOR_STYLE_BAR_CLASS+" { box-shadow: "+this._optionsService.rawOptions.cursorWidth+"px 0 0 "+this._colors.cursor.css+" inset;}"+this._terminalSelector+" .xterm-rows ."+C.CURSOR_CLASS+"."+C.CURSOR_STYLE_UNDERLINE_CLASS+" { box-shadow: 0 -1px 0 "+this._colors.cursor.css+" inset;}",W+=this._terminalSelector+" .xterm-selection { position: absolute; top: 0; left: 0; z-index: 1; pointer-events: none;}"+this._terminalSelector+" .xterm-selection div { position: absolute; background-color: "+this._colors.selectionOpaque.css+";}",this._colors.ansi.forEach(function(I,A){W+=D._terminalSelector+" ."+a+A+" { color: "+I.css+"; }"+D._terminalSelector+" ."+h+A+" { background-color: "+I.css+"; }"}),W+=this._terminalSelector+" ."+a+u.INVERTED_DEFAULT_COLOR+" { color: "+o.color.opaque(this._colors.background).css+"; }"+this._terminalSelector+" ."+h+u.INVERTED_DEFAULT_COLOR+" { background-color: "+this._colors.foreground.css+"; }",this._themeStyleElement.textContent=W},M.prototype.onDevicePixelRatioChange=function(){this._updateDimensions()},M.prototype._refreshRowElements=function(D,W){for(var I=this._rowElements.length;I<=W;I++){var A=document.createElement("div");this._rowContainer.appendChild(A),this._rowElements.push(A)}for(;this._rowElements.length>W;)this._rowContainer.removeChild(this._rowElements.pop())},M.prototype.onResize=function(D,W){this._refreshRowElements(D,W),this._updateDimensions()},M.prototype.onCharSizeChanged=function(){this._updateDimensions()},M.prototype.onBlur=function(){this._rowContainer.classList.remove(d)},M.prototype.onFocus=function(){this._rowContainer.classList.add(d)},M.prototype.onSelectionChanged=function(D,W,I){for(;this._selectionContainer.children.length;)this._selectionContainer.removeChild(this._selectionContainer.children[0]);if(this._rowFactory.onSelectionChanged(D,W,I),this.renderRows(0,this._bufferService.rows-1),D&&W){var A=D[1]-this._bufferService.buffer.ydisp,H=W[1]-this._bufferService.buffer.ydisp,F=Math.max(A,0),z=Math.min(H,this._bufferService.rows-1);if(!(F>=this._bufferService.rows||z<0)){var G=document.createDocumentFragment();if(I){var te=D[0]>W[0];G.appendChild(this._createSelectionElement(F,te?W[0]:D[0],te?D[0]:W[0],z-F+1))}else{var ce=A===F?D[0]:0,ee=F===H?W[0]:this._bufferService.cols;G.appendChild(this._createSelectionElement(F,ce,ee));var fe=z-F-1;if(G.appendChild(this._createSelectionElement(F+1,0,this._bufferService.cols,fe)),F!==z){var _e=H===z?W[0]:this._bufferService.cols;G.appendChild(this._createSelectionElement(z,0,_e))}}this._selectionContainer.appendChild(G)}}},M.prototype._createSelectionElement=function(D,W,I,A){A===void 0&&(A=1);var H=document.createElement("div");return H.style.height=A*this.dimensions.actualCellHeight+"px",H.style.top=D*this.dimensions.actualCellHeight+"px",H.style.left=W*this.dimensions.actualCellWidth+"px",H.style.width=this.dimensions.actualCellWidth*(I-W)+"px",H},M.prototype.onCursorMove=function(){},M.prototype.onOptionsChanged=function(){this._updateDimensions(),this._injectCss()},M.prototype.clear=function(){var D,W;try{for(var I=x(this._rowElements),A=I.next();!A.done;A=I.next())A.value.innerText=""}catch(H){D={error:H}}finally{try{A&&!A.done&&(W=I.return)&&W.call(I)}finally{if(D)throw D.error}}},M.prototype.renderRows=function(D,W){for(var I=this._bufferService.buffer.ybase+this._bufferService.buffer.y,A=Math.min(this._bufferService.buffer.x,this._bufferService.cols-1),H=this._optionsService.rawOptions.cursorBlink,F=D;F<=W;F++){var z=this._rowElements[F];z.innerText="";var G=F+this._bufferService.buffer.ydisp,te=this._bufferService.buffer.lines.get(G),ce=this._optionsService.rawOptions.cursorStyle;z.appendChild(this._rowFactory.createRow(te,G,G===I,ce,A,H,this.dimensions.actualCellWidth,this._bufferService.cols))}},Object.defineProperty(M.prototype,"_terminalSelector",{get:function(){return"."+n+this._terminalClass},enumerable:!1,configurable:!0}),M.prototype._onLinkHover=function(D){this._setCellUnderline(D.x1,D.x2,D.y1,D.y2,D.cols,!0)},M.prototype._onLinkLeave=function(D){this._setCellUnderline(D.x1,D.x2,D.y1,D.y2,D.cols,!1)},M.prototype._setCellUnderline=function(D,W,I,A,H,F){for(;D!==W||I!==A;){var z=this._rowElements[I];if(!z)return;var G=z.children[D];G&&(G.style.textDecoration=F?"underline":"none"),++D>=H&&(D=0,I++)}},_([g(6,b.IInstantiationService),g(7,w.ICharSizeService),g(8,b.IOptionsService),g(9,b.IBufferService)],M)}(p.Disposable);f.DomRenderer=T},3787:function(R,f,k){var m=this&&this.__decorate||function(n,a,h,d){var S,T=arguments.length,E=T<3?a:d===null?d=Object.getOwnPropertyDescriptor(a,h):d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")E=Reflect.decorate(n,a,h,d);else for(var M=n.length-1;M>=0;M--)(S=n[M])&&(E=(T<3?S(E):T>3?S(a,h,E):S(a,h))||E);return T>3&&E&&Object.defineProperty(a,h,E),E},y=this&&this.__param||function(n,a){return function(h,d){a(h,d,n)}},_=this&&this.__values||function(n){var a=typeof Symbol=="function"&&Symbol.iterator,h=a&&n[a],d=0;if(h)return h.call(n);if(n&&typeof n.length=="number")return{next:function(){return n&&d>=n.length&&(n=void 0),{value:n&&n[d++],done:!n}}};throw new TypeError(a?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(f,"__esModule",{value:!0}),f.DomRendererRowFactory=f.CURSOR_STYLE_UNDERLINE_CLASS=f.CURSOR_STYLE_BAR_CLASS=f.CURSOR_STYLE_BLOCK_CLASS=f.CURSOR_BLINK_CLASS=f.CURSOR_CLASS=f.STRIKETHROUGH_CLASS=f.UNDERLINE_CLASS=f.ITALIC_CLASS=f.DIM_CLASS=f.BOLD_CLASS=void 0;var g=k(8803),x=k(643),C=k(511),u=k(2585),p=k(8055),w=k(4725),b=k(4269),c=k(1752);f.BOLD_CLASS="xterm-bold",f.DIM_CLASS="xterm-dim",f.ITALIC_CLASS="xterm-italic",f.UNDERLINE_CLASS="xterm-underline",f.STRIKETHROUGH_CLASS="xterm-strikethrough",f.CURSOR_CLASS="xterm-cursor",f.CURSOR_BLINK_CLASS="xterm-cursor-blink",f.CURSOR_STYLE_BLOCK_CLASS="xterm-cursor-block",f.CURSOR_STYLE_BAR_CLASS="xterm-cursor-bar",f.CURSOR_STYLE_UNDERLINE_CLASS="xterm-cursor-underline";var o=function(){function n(a,h,d,S,T,E){this._document=a,this._colors=h,this._characterJoinerService=d,this._optionsService=S,this._coreService=T,this._decorationService=E,this._workCell=new C.CellData,this._columnSelectMode=!1}return n.prototype.setColors=function(a){this._colors=a},n.prototype.onSelectionChanged=function(a,h,d){this._selectionStart=a,this._selectionEnd=h,this._columnSelectMode=d},n.prototype.createRow=function(a,h,d,S,T,E,M,D){for(var W,I,A=this._document.createDocumentFragment(),H=this._characterJoinerService.getJoinedCharacters(h),F=0,z=Math.min(a.length,D)-1;z>=0;z--)if(a.loadCell(z,this._workCell).getCode()!==x.NULL_CELL_CODE||d&&z===T){F=z+1;break}for(z=0;z0&&z===H[0][0]){te=!0;var fe=H.shift();ee=new b.JoinedCellData(this._workCell,a.translateToString(!0,fe[0],fe[1]),fe[1]-fe[0]),ce=fe[1]-1,G=ee.getWidth()}var _e=this._document.createElement("span");if(G>1&&(_e.style.width=M*G+"px"),te&&(_e.style.display="inline",T>=z&&T<=ce&&(T=z)),!this._coreService.isCursorHidden&&d&&z===T)switch(_e.classList.add(f.CURSOR_CLASS),E&&_e.classList.add(f.CURSOR_BLINK_CLASS),S){case"bar":_e.classList.add(f.CURSOR_STYLE_BAR_CLASS);break;case"underline":_e.classList.add(f.CURSOR_STYLE_UNDERLINE_CLASS);break;default:_e.classList.add(f.CURSOR_STYLE_BLOCK_CLASS)}ee.isBold()&&_e.classList.add(f.BOLD_CLASS),ee.isItalic()&&_e.classList.add(f.ITALIC_CLASS),ee.isDim()&&_e.classList.add(f.DIM_CLASS),ee.isUnderline()&&_e.classList.add(f.UNDERLINE_CLASS),ee.isInvisible()?_e.textContent=x.WHITESPACE_CELL_CHAR:_e.textContent=ee.getChars()||x.WHITESPACE_CELL_CHAR,ee.isStrikethrough()&&_e.classList.add(f.STRIKETHROUGH_CLASS);var q=ee.getFgColor(),ve=ee.getFgColorMode(),de=ee.getBgColor(),ke=ee.getBgColorMode(),$=!!ee.isInverse();if($){var Ie=q;q=de,de=Ie;var ge=ve;ve=ke,ke=ge}var le=void 0,V=void 0,Y=!1;try{for(var se=(W=void 0,_(this._decorationService.getDecorationsAtCell(z,h))),xe=se.next();!xe.done;xe=se.next()){var Ee=xe.value;Ee.options.layer!=="top"&&Y||(Ee.backgroundColorRGB&&(ke=50331648,de=Ee.backgroundColorRGB.rgba>>8&16777215,le=Ee.backgroundColorRGB),Ee.foregroundColorRGB&&(ve=50331648,q=Ee.foregroundColorRGB.rgba>>8&16777215,V=Ee.foregroundColorRGB),Y=Ee.options.layer==="top")}}catch(Ze){W={error:Ze}}finally{try{xe&&!xe.done&&(I=se.return)&&I.call(se)}finally{if(W)throw W.error}}var De=this._isCellInSelection(z,h);Y||this._colors.selectionForeground&&De&&(ve=50331648,q=this._colors.selectionForeground.rgba>>8&16777215,V=this._colors.selectionForeground),De&&(le=this._colors.selectionOpaque,Y=!0),Y&&_e.classList.add("xterm-decoration-top");var je=void 0;switch(ke){case 16777216:case 33554432:je=this._colors.ansi[de],_e.classList.add("xterm-bg-"+de);break;case 50331648:je=p.rgba.toColor(de>>16,de>>8&255,255&de),this._addStyle(_e,"background-color:#"+l((de>>>0).toString(16),"0",6));break;default:$?(je=this._colors.foreground,_e.classList.add("xterm-bg-"+g.INVERTED_DEFAULT_COLOR)):je=this._colors.background}switch(ve){case 16777216:case 33554432:ee.isBold()&&q<8&&this._optionsService.rawOptions.drawBoldTextInBrightColors&&(q+=8),this._applyMinimumContrast(_e,je,this._colors.ansi[q],ee,le,void 0)||_e.classList.add("xterm-fg-"+q);break;case 50331648:var Re=p.rgba.toColor(q>>16&255,q>>8&255,255&q);this._applyMinimumContrast(_e,je,Re,ee,le,V)||this._addStyle(_e,"color:#"+l(q.toString(16),"0",6));break;default:this._applyMinimumContrast(_e,je,this._colors.foreground,ee,le,void 0)||$&&_e.classList.add("xterm-fg-"+g.INVERTED_DEFAULT_COLOR)}A.appendChild(_e),z=ce}}return A},n.prototype._applyMinimumContrast=function(a,h,d,S,T,E){if(this._optionsService.rawOptions.minimumContrastRatio===1||(0,c.excludeFromContrastRatioDemands)(S.getCode()))return!1;var M=void 0;return T||E||(M=this._colors.contrastCache.getColor(h.rgba,d.rgba)),M===void 0&&(M=p.color.ensureContrastRatio(T||h,E||d,this._optionsService.rawOptions.minimumContrastRatio),this._colors.contrastCache.setColor((T||h).rgba,(E||d).rgba,M??null)),!!M&&(this._addStyle(a,"color:"+M.css),!0)},n.prototype._addStyle=function(a,h){a.setAttribute("style",""+(a.getAttribute("style")||"")+h+";")},n.prototype._isCellInSelection=function(a,h){var d=this._selectionStart,S=this._selectionEnd;return!(!d||!S)&&(this._columnSelectMode?d[0]<=S[0]?a>=d[0]&&h>=d[1]&&a=d[1]&&a>=S[0]&&h<=S[1]:h>d[1]&&h=d[0]&&a=d[0])},m([y(2,w.ICharacterJoinerService),y(3,u.IOptionsService),y(4,u.ICoreService),y(5,u.IDecorationService)],n)}();function l(n,a,h){for(;n.length{Object.defineProperty(f,"__esModule",{value:!0}),f.SelectionModel=void 0;var k=function(){function m(y){this._bufferService=y,this.isSelectAllActive=!1,this.selectionStartLength=0}return m.prototype.clearSelection=function(){this.selectionStart=void 0,this.selectionEnd=void 0,this.isSelectAllActive=!1,this.selectionStartLength=0},Object.defineProperty(m.prototype,"finalSelectionStart",{get:function(){return this.isSelectAllActive?[0,0]:this.selectionEnd&&this.selectionStart&&this.areSelectionValuesReversed()?this.selectionEnd:this.selectionStart},enumerable:!1,configurable:!0}),Object.defineProperty(m.prototype,"finalSelectionEnd",{get:function(){return this.isSelectAllActive?[this._bufferService.cols,this._bufferService.buffer.ybase+this._bufferService.rows-1]:this.selectionStart?!this.selectionEnd||this.areSelectionValuesReversed()?(y=this.selectionStart[0]+this.selectionStartLength)>this._bufferService.cols?y%this._bufferService.cols==0?[this._bufferService.cols,this.selectionStart[1]+Math.floor(y/this._bufferService.cols)-1]:[y%this._bufferService.cols,this.selectionStart[1]+Math.floor(y/this._bufferService.cols)]:[y,this.selectionStart[1]]:this.selectionStartLength&&this.selectionEnd[1]===this.selectionStart[1]?(y=this.selectionStart[0]+this.selectionStartLength)>this._bufferService.cols?[y%this._bufferService.cols,this.selectionStart[1]+Math.floor(y/this._bufferService.cols)]:[Math.max(y,this.selectionEnd[0]),this.selectionEnd[1]]:this.selectionEnd:void 0;var y},enumerable:!1,configurable:!0}),m.prototype.areSelectionValuesReversed=function(){var y=this.selectionStart,_=this.selectionEnd;return!(!y||!_)&&(y[1]>_[1]||y[1]===_[1]&&y[0]>_[0])},m.prototype.onTrim=function(y){return this.selectionStart&&(this.selectionStart[1]-=y),this.selectionEnd&&(this.selectionEnd[1]-=y),this.selectionEnd&&this.selectionEnd[1]<0?(this.clearSelection(),!0):(this.selectionStart&&this.selectionStart[1]<0&&(this.selectionStart[1]=0),!1)},m}();f.SelectionModel=k},428:function(R,f,k){var m=this&&this.__decorate||function(u,p,w,b){var c,o=arguments.length,l=o<3?p:b===null?b=Object.getOwnPropertyDescriptor(p,w):b;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")l=Reflect.decorate(u,p,w,b);else for(var n=u.length-1;n>=0;n--)(c=u[n])&&(l=(o<3?c(l):o>3?c(p,w,l):c(p,w))||l);return o>3&&l&&Object.defineProperty(p,w,l),l},y=this&&this.__param||function(u,p){return function(w,b){p(w,b,u)}};Object.defineProperty(f,"__esModule",{value:!0}),f.CharSizeService=void 0;var _=k(2585),g=k(8460),x=function(){function u(p,w,b){this._optionsService=b,this.width=0,this.height=0,this._onCharSizeChange=new g.EventEmitter,this._measureStrategy=new C(p,w,this._optionsService)}return Object.defineProperty(u.prototype,"hasValidSize",{get:function(){return this.width>0&&this.height>0},enumerable:!1,configurable:!0}),Object.defineProperty(u.prototype,"onCharSizeChange",{get:function(){return this._onCharSizeChange.event},enumerable:!1,configurable:!0}),u.prototype.measure=function(){var p=this._measureStrategy.measure();p.width===this.width&&p.height===this.height||(this.width=p.width,this.height=p.height,this._onCharSizeChange.fire())},m([y(2,_.IOptionsService)],u)}();f.CharSizeService=x;var C=function(){function u(p,w,b){this._document=p,this._parentElement=w,this._optionsService=b,this._result={width:0,height:0},this._measureElement=this._document.createElement("span"),this._measureElement.classList.add("xterm-char-measure-element"),this._measureElement.textContent="W",this._measureElement.setAttribute("aria-hidden","true"),this._parentElement.appendChild(this._measureElement)}return u.prototype.measure=function(){this._measureElement.style.fontFamily=this._optionsService.rawOptions.fontFamily,this._measureElement.style.fontSize=this._optionsService.rawOptions.fontSize+"px";var p=this._measureElement.getBoundingClientRect();return p.width!==0&&p.height!==0&&(this._result.width=p.width,this._result.height=Math.ceil(p.height)),this._result},u}()},4269:function(R,f,k){var m,y=this&&this.__extends||(m=function(c,o){return m=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(l,n){l.__proto__=n}||function(l,n){for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(l[a]=n[a])},m(c,o)},function(c,o){if(typeof o!="function"&&o!==null)throw new TypeError("Class extends value "+String(o)+" is not a constructor or null");function l(){this.constructor=c}m(c,o),c.prototype=o===null?Object.create(o):(l.prototype=o.prototype,new l)}),_=this&&this.__decorate||function(c,o,l,n){var a,h=arguments.length,d=h<3?o:n===null?n=Object.getOwnPropertyDescriptor(o,l):n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")d=Reflect.decorate(c,o,l,n);else for(var S=c.length-1;S>=0;S--)(a=c[S])&&(d=(h<3?a(d):h>3?a(o,l,d):a(o,l))||d);return h>3&&d&&Object.defineProperty(o,l,d),d},g=this&&this.__param||function(c,o){return function(l,n){o(l,n,c)}};Object.defineProperty(f,"__esModule",{value:!0}),f.CharacterJoinerService=f.JoinedCellData=void 0;var x=k(3734),C=k(643),u=k(511),p=k(2585),w=function(c){function o(l,n,a){var h=c.call(this)||this;return h.content=0,h.combinedData="",h.fg=l.fg,h.bg=l.bg,h.combinedData=n,h._width=a,h}return y(o,c),o.prototype.isCombined=function(){return 2097152},o.prototype.getWidth=function(){return this._width},o.prototype.getChars=function(){return this.combinedData},o.prototype.getCode=function(){return 2097151},o.prototype.setFromCharData=function(l){throw new Error("not implemented")},o.prototype.getAsCharData=function(){return[this.fg,this.getChars(),this.getWidth(),this.getCode()]},o}(x.AttributeData);f.JoinedCellData=w;var b=function(){function c(o){this._bufferService=o,this._characterJoiners=[],this._nextCharacterJoinerId=0,this._workCell=new u.CellData}return c.prototype.register=function(o){var l={id:this._nextCharacterJoinerId++,handler:o};return this._characterJoiners.push(l),l.id},c.prototype.deregister=function(o){for(var l=0;l1)for(var D=this._getJoinedRanges(a,S,d,l,h),W=0;W1)for(D=this._getJoinedRanges(a,S,d,l,h),W=0;W{Object.defineProperty(f,"__esModule",{value:!0}),f.CoreBrowserService=void 0;var k=function(){function m(y){this._textarea=y}return Object.defineProperty(m.prototype,"isFocused",{get:function(){return(this._textarea.getRootNode?this._textarea.getRootNode():document).activeElement===this._textarea&&document.hasFocus()},enumerable:!1,configurable:!0}),m}();f.CoreBrowserService=k},8934:function(R,f,k){var m=this&&this.__decorate||function(C,u,p,w){var b,c=arguments.length,o=c<3?u:w===null?w=Object.getOwnPropertyDescriptor(u,p):w;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(C,u,p,w);else for(var l=C.length-1;l>=0;l--)(b=C[l])&&(o=(c<3?b(o):c>3?b(u,p,o):b(u,p))||o);return c>3&&o&&Object.defineProperty(u,p,o),o},y=this&&this.__param||function(C,u){return function(p,w){u(p,w,C)}};Object.defineProperty(f,"__esModule",{value:!0}),f.MouseService=void 0;var _=k(4725),g=k(9806),x=function(){function C(u,p){this._renderService=u,this._charSizeService=p}return C.prototype.getCoords=function(u,p,w,b,c){return(0,g.getCoords)(window,u,p,w,b,this._charSizeService.hasValidSize,this._renderService.dimensions.actualCellWidth,this._renderService.dimensions.actualCellHeight,c)},C.prototype.getRawByteCoords=function(u,p,w,b){var c=this.getCoords(u,p,w,b);return(0,g.getRawByteCoords)(c)},m([y(0,_.IRenderService),y(1,_.ICharSizeService)],C)}();f.MouseService=x},3230:function(R,f,k){var m,y=this&&this.__extends||(m=function(l,n){return m=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(a,h){a.__proto__=h}||function(a,h){for(var d in h)Object.prototype.hasOwnProperty.call(h,d)&&(a[d]=h[d])},m(l,n)},function(l,n){if(typeof n!="function"&&n!==null)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function a(){this.constructor=l}m(l,n),l.prototype=n===null?Object.create(n):(a.prototype=n.prototype,new a)}),_=this&&this.__decorate||function(l,n,a,h){var d,S=arguments.length,T=S<3?n:h===null?h=Object.getOwnPropertyDescriptor(n,a):h;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")T=Reflect.decorate(l,n,a,h);else for(var E=l.length-1;E>=0;E--)(d=l[E])&&(T=(S<3?d(T):S>3?d(n,a,T):d(n,a))||T);return S>3&&T&&Object.defineProperty(n,a,T),T},g=this&&this.__param||function(l,n){return function(a,h){n(a,h,l)}};Object.defineProperty(f,"__esModule",{value:!0}),f.RenderService=void 0;var x=k(6193),C=k(8460),u=k(844),p=k(5596),w=k(3656),b=k(2585),c=k(4725),o=function(l){function n(a,h,d,S,T,E,M){var D=l.call(this)||this;if(D._renderer=a,D._rowCount=h,D._charSizeService=T,D._isPaused=!1,D._needsFullRefresh=!1,D._isNextRenderRedrawOnly=!0,D._needsSelectionRefresh=!1,D._canvasWidth=0,D._canvasHeight=0,D._selectionState={start:void 0,end:void 0,columnSelectMode:!1},D._onDimensionsChange=new C.EventEmitter,D._onRenderedViewportChange=new C.EventEmitter,D._onRender=new C.EventEmitter,D._onRefreshRequest=new C.EventEmitter,D.register({dispose:function(){return D._renderer.dispose()}}),D._renderDebouncer=new x.RenderDebouncer(function(I,A){return D._renderRows(I,A)}),D.register(D._renderDebouncer),D._screenDprMonitor=new p.ScreenDprMonitor,D._screenDprMonitor.setListener(function(){return D.onDevicePixelRatioChange()}),D.register(D._screenDprMonitor),D.register(M.onResize(function(){return D._fullRefresh()})),D.register(M.buffers.onBufferActivate(function(){var I;return(I=D._renderer)===null||I===void 0?void 0:I.clear()})),D.register(S.onOptionChange(function(){return D._handleOptionsChanged()})),D.register(D._charSizeService.onCharSizeChange(function(){return D.onCharSizeChanged()})),D.register(E.onDecorationRegistered(function(){return D._fullRefresh()})),D.register(E.onDecorationRemoved(function(){return D._fullRefresh()})),D._renderer.onRequestRedraw(function(I){return D.refreshRows(I.start,I.end,!0)}),D.register((0,w.addDisposableDomListener)(window,"resize",function(){return D.onDevicePixelRatioChange()})),"IntersectionObserver"in window){var W=new IntersectionObserver(function(I){return D._onIntersectionChange(I[I.length-1])},{threshold:0});W.observe(d),D.register({dispose:function(){return W.disconnect()}})}return D}return y(n,l),Object.defineProperty(n.prototype,"onDimensionsChange",{get:function(){return this._onDimensionsChange.event},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"onRenderedViewportChange",{get:function(){return this._onRenderedViewportChange.event},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"onRender",{get:function(){return this._onRender.event},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"onRefreshRequest",{get:function(){return this._onRefreshRequest.event},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"dimensions",{get:function(){return this._renderer.dimensions},enumerable:!1,configurable:!0}),n.prototype._onIntersectionChange=function(a){this._isPaused=a.isIntersecting===void 0?a.intersectionRatio===0:!a.isIntersecting,this._isPaused||this._charSizeService.hasValidSize||this._charSizeService.measure(),!this._isPaused&&this._needsFullRefresh&&(this.refreshRows(0,this._rowCount-1),this._needsFullRefresh=!1)},n.prototype.refreshRows=function(a,h,d){d===void 0&&(d=!1),this._isPaused?this._needsFullRefresh=!0:(d||(this._isNextRenderRedrawOnly=!1),this._renderDebouncer.refresh(a,h,this._rowCount))},n.prototype._renderRows=function(a,h){this._renderer.renderRows(a,h),this._needsSelectionRefresh&&(this._renderer.onSelectionChanged(this._selectionState.start,this._selectionState.end,this._selectionState.columnSelectMode),this._needsSelectionRefresh=!1),this._isNextRenderRedrawOnly||this._onRenderedViewportChange.fire({start:a,end:h}),this._onRender.fire({start:a,end:h}),this._isNextRenderRedrawOnly=!0},n.prototype.resize=function(a,h){this._rowCount=h,this._fireOnCanvasResize()},n.prototype._handleOptionsChanged=function(){this._renderer.onOptionsChanged(),this.refreshRows(0,this._rowCount-1),this._fireOnCanvasResize()},n.prototype._fireOnCanvasResize=function(){this._renderer.dimensions.canvasWidth===this._canvasWidth&&this._renderer.dimensions.canvasHeight===this._canvasHeight||this._onDimensionsChange.fire(this._renderer.dimensions)},n.prototype.dispose=function(){l.prototype.dispose.call(this)},n.prototype.setRenderer=function(a){var h=this;this._renderer.dispose(),this._renderer=a,this._renderer.onRequestRedraw(function(d){return h.refreshRows(d.start,d.end,!0)}),this._needsSelectionRefresh=!0,this._fullRefresh()},n.prototype.addRefreshCallback=function(a){return this._renderDebouncer.addRefreshCallback(a)},n.prototype._fullRefresh=function(){this._isPaused?this._needsFullRefresh=!0:this.refreshRows(0,this._rowCount-1)},n.prototype.clearTextureAtlas=function(){var a,h;(h=(a=this._renderer)===null||a===void 0?void 0:a.clearTextureAtlas)===null||h===void 0||h.call(a),this._fullRefresh()},n.prototype.setColors=function(a){this._renderer.setColors(a),this._fullRefresh()},n.prototype.onDevicePixelRatioChange=function(){this._charSizeService.measure(),this._renderer.onDevicePixelRatioChange(),this.refreshRows(0,this._rowCount-1)},n.prototype.onResize=function(a,h){this._renderer.onResize(a,h),this._fullRefresh()},n.prototype.onCharSizeChanged=function(){this._renderer.onCharSizeChanged()},n.prototype.onBlur=function(){this._renderer.onBlur()},n.prototype.onFocus=function(){this._renderer.onFocus()},n.prototype.onSelectionChanged=function(a,h,d){this._selectionState.start=a,this._selectionState.end=h,this._selectionState.columnSelectMode=d,this._renderer.onSelectionChanged(a,h,d)},n.prototype.onCursorMove=function(){this._renderer.onCursorMove()},n.prototype.clear=function(){this._renderer.clear()},_([g(3,b.IOptionsService),g(4,c.ICharSizeService),g(5,b.IDecorationService),g(6,b.IBufferService)],n)}(u.Disposable);f.RenderService=o},9312:function(R,f,k){var m,y=this&&this.__extends||(m=function(S,T){return m=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(E,M){E.__proto__=M}||function(E,M){for(var D in M)Object.prototype.hasOwnProperty.call(M,D)&&(E[D]=M[D])},m(S,T)},function(S,T){if(typeof T!="function"&&T!==null)throw new TypeError("Class extends value "+String(T)+" is not a constructor or null");function E(){this.constructor=S}m(S,T),S.prototype=T===null?Object.create(T):(E.prototype=T.prototype,new E)}),_=this&&this.__decorate||function(S,T,E,M){var D,W=arguments.length,I=W<3?T:M===null?M=Object.getOwnPropertyDescriptor(T,E):M;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")I=Reflect.decorate(S,T,E,M);else for(var A=S.length-1;A>=0;A--)(D=S[A])&&(I=(W<3?D(I):W>3?D(T,E,I):D(T,E))||I);return W>3&&I&&Object.defineProperty(T,E,I),I},g=this&&this.__param||function(S,T){return function(E,M){T(E,M,S)}};Object.defineProperty(f,"__esModule",{value:!0}),f.SelectionService=void 0;var x=k(6114),C=k(456),u=k(511),p=k(8460),w=k(4725),b=k(2585),c=k(9806),o=k(9504),l=k(844),n=k(4841),a="\xA0",h=new RegExp(a,"g"),d=function(S){function T(E,M,D,W,I,A,H,F){var z=S.call(this)||this;return z._element=E,z._screenElement=M,z._linkifier=D,z._bufferService=W,z._coreService=I,z._mouseService=A,z._optionsService=H,z._renderService=F,z._dragScrollAmount=0,z._enabled=!0,z._workCell=new u.CellData,z._mouseDownTimeStamp=0,z._oldHasSelection=!1,z._oldSelectionStart=void 0,z._oldSelectionEnd=void 0,z._onLinuxMouseSelection=z.register(new p.EventEmitter),z._onRedrawRequest=z.register(new p.EventEmitter),z._onSelectionChange=z.register(new p.EventEmitter),z._onRequestScrollLines=z.register(new p.EventEmitter),z._mouseMoveListener=function(G){return z._onMouseMove(G)},z._mouseUpListener=function(G){return z._onMouseUp(G)},z._coreService.onUserInput(function(){z.hasSelection&&z.clearSelection()}),z._trimListener=z._bufferService.buffer.lines.onTrim(function(G){return z._onTrim(G)}),z.register(z._bufferService.buffers.onBufferActivate(function(G){return z._onBufferActivate(G)})),z.enable(),z._model=new C.SelectionModel(z._bufferService),z._activeSelectionMode=0,z}return y(T,S),Object.defineProperty(T.prototype,"onLinuxMouseSelection",{get:function(){return this._onLinuxMouseSelection.event},enumerable:!1,configurable:!0}),Object.defineProperty(T.prototype,"onRequestRedraw",{get:function(){return this._onRedrawRequest.event},enumerable:!1,configurable:!0}),Object.defineProperty(T.prototype,"onSelectionChange",{get:function(){return this._onSelectionChange.event},enumerable:!1,configurable:!0}),Object.defineProperty(T.prototype,"onRequestScrollLines",{get:function(){return this._onRequestScrollLines.event},enumerable:!1,configurable:!0}),T.prototype.dispose=function(){this._removeMouseDownListeners()},T.prototype.reset=function(){this.clearSelection()},T.prototype.disable=function(){this.clearSelection(),this._enabled=!1},T.prototype.enable=function(){this._enabled=!0},Object.defineProperty(T.prototype,"selectionStart",{get:function(){return this._model.finalSelectionStart},enumerable:!1,configurable:!0}),Object.defineProperty(T.prototype,"selectionEnd",{get:function(){return this._model.finalSelectionEnd},enumerable:!1,configurable:!0}),Object.defineProperty(T.prototype,"hasSelection",{get:function(){var E=this._model.finalSelectionStart,M=this._model.finalSelectionEnd;return!(!E||!M||E[0]===M[0]&&E[1]===M[1])},enumerable:!1,configurable:!0}),Object.defineProperty(T.prototype,"selectionText",{get:function(){var E=this._model.finalSelectionStart,M=this._model.finalSelectionEnd;if(!E||!M)return"";var D=this._bufferService.buffer,W=[];if(this._activeSelectionMode===3){if(E[0]===M[0])return"";for(var I=E[0]M[1]&&k[1]=M[0]&&k[0]=M[0]},R.prototype._selectWordAtCursor=function(k,M){var N,D,W=(D=(N=this._linkifier.currentLink)===null||N===void 0?void 0:N.link)===null||D===void 0?void 0:D.range;if(W)return this._model.selectionStart=[W.start.x-1,W.start.y-1],this._model.selectionStartLength=(0,a.getRangeLength)(W,this._bufferService.cols),this._model.selectionEnd=void 0,!0;var B=this._getMouseBufferCoords(k);return!!B&&(this._selectWordAt(B,M),this._model.selectionEnd=void 0,!0)},R.prototype.selectAll=function(){this._model.isSelectAllActive=!0,this.refresh(),this._onSelectionChange.fire()},R.prototype.selectLines=function(k,M){this._model.clearSelection(),k=Math.max(k,0),M=Math.min(M,this._bufferService.buffer.lines.length-1),this._model.selectionStart=[0,k],this._model.selectionEnd=[this._bufferService.cols,M],this.refresh(),this._onSelectionChange.fire()},R.prototype._onTrim=function(k){this._model.onTrim(k)&&this.refresh()},R.prototype._getMouseBufferCoords=function(k){var M=this._mouseService.getCoords(k,this._screenElement,this._bufferService.cols,this._bufferService.rows,!0);if(M)return M[0]--,M[1]--,M[1]+=this._bufferService.buffer.ydisp,M},R.prototype._getMouseEventScrollAmount=function(k){var M=(0,s.getCoordsRelativeToElement)(k,this._screenElement)[1],N=this._renderService.dimensions.canvasHeight;return M>=0&&M<=N?0:(M>N&&(M-=N),M=Math.min(Math.max(M,-50),50),(M/=50)/Math.abs(M)+Math.round(14*M))},R.prototype.shouldForceSelection=function(k){return A.isMac?k.altKey&&this._optionsService.rawOptions.macOptionClickForcesSelection:k.shiftKey},R.prototype.onMouseDown=function(k){if(this._mouseDownTimeStamp=k.timeStamp,(k.button!==2||!this.hasSelection)&&k.button===0){if(!this._enabled){if(!this.shouldForceSelection(k))return;k.stopPropagation()}k.preventDefault(),this._dragScrollAmount=0,this._enabled&&k.shiftKey?this._onIncrementalClick(k):k.detail===1?this._onSingleClick(k):k.detail===2?this._onDoubleClick(k):k.detail===3&&this._onTripleClick(k),this._addMouseDownListeners(),this.refresh(!0)}},R.prototype._addMouseDownListeners=function(){var k=this;this._screenElement.ownerDocument&&(this._screenElement.ownerDocument.addEventListener("mousemove",this._mouseMoveListener),this._screenElement.ownerDocument.addEventListener("mouseup",this._mouseUpListener)),this._dragScrollIntervalTimer=window.setInterval(function(){return k._dragScroll()},50)},R.prototype._removeMouseDownListeners=function(){this._screenElement.ownerDocument&&(this._screenElement.ownerDocument.removeEventListener("mousemove",this._mouseMoveListener),this._screenElement.ownerDocument.removeEventListener("mouseup",this._mouseUpListener)),clearInterval(this._dragScrollIntervalTimer),this._dragScrollIntervalTimer=void 0},R.prototype._onIncrementalClick=function(k){this._model.selectionStart&&(this._model.selectionEnd=this._getMouseBufferCoords(k))},R.prototype._onSingleClick=function(k){if(this._model.selectionStartLength=0,this._model.isSelectAllActive=!1,this._activeSelectionMode=this.shouldColumnSelect(k)?3:0,this._model.selectionStart=this._getMouseBufferCoords(k),this._model.selectionStart){this._model.selectionEnd=void 0;var M=this._bufferService.buffer.lines.get(this._model.selectionStart[1]);M&&M.length!==this._model.selectionStart[0]&&M.hasWidth(this._model.selectionStart[0])===0&&this._model.selectionStart[0]++}},R.prototype._onDoubleClick=function(k){this._selectWordAtCursor(k,!0)&&(this._activeSelectionMode=1)},R.prototype._onTripleClick=function(k){var M=this._getMouseBufferCoords(k);M&&(this._activeSelectionMode=2,this._selectLineAt(M[1]))},R.prototype.shouldColumnSelect=function(k){return k.altKey&&!(A.isMac&&this._optionsService.rawOptions.macOptionClickForcesSelection)},R.prototype._onMouseMove=function(k){if(k.stopImmediatePropagation(),this._model.selectionStart){var M=this._model.selectionEnd?[this._model.selectionEnd[0],this._model.selectionEnd[1]]:null;if(this._model.selectionEnd=this._getMouseBufferCoords(k),this._model.selectionEnd){this._activeSelectionMode===2?this._model.selectionEnd[1]0?this._model.selectionEnd[0]=this._bufferService.cols:this._dragScrollAmount<0&&(this._model.selectionEnd[0]=0));var N=this._bufferService.buffer;if(this._model.selectionEnd[1]0?(this._activeSelectionMode!==3&&(this._model.selectionEnd[0]=this._bufferService.cols),this._model.selectionEnd[1]=Math.min(k.ydisp+this._bufferService.rows,k.lines.length-1)):(this._activeSelectionMode!==3&&(this._model.selectionEnd[0]=0),this._model.selectionEnd[1]=k.ydisp),this.refresh()}},R.prototype._onMouseUp=function(k){var M=k.timeStamp-this._mouseDownTimeStamp;if(this._removeMouseDownListeners(),this.selectionText.length<=1&&M<500&&k.altKey&&this._optionsService.getOption("altClickMovesCursor")){if(this._bufferService.buffer.ybase===this._bufferService.buffer.ydisp){var N=this._mouseService.getCoords(k,this._element,this._bufferService.cols,this._bufferService.rows,!1);if(N&&N[0]!==void 0&&N[1]!==void 0){var D=(0,o.moveToCellSequence)(N[0]-1,N[1]-1,this._bufferService,this._coreService.decPrivateModes.applicationCursorKeys);this._coreService.triggerDataEvent(D,!0)}}}else this._fireEventIfSelectionChanged()},R.prototype._fireEventIfSelectionChanged=function(){var k=this._model.finalSelectionStart,M=this._model.finalSelectionEnd,N=!(!k||!M||k[0]===M[0]&&k[1]===M[1]);N?k&&M&&(this._oldSelectionStart&&this._oldSelectionEnd&&k[0]===this._oldSelectionStart[0]&&k[1]===this._oldSelectionStart[1]&&M[0]===this._oldSelectionEnd[0]&&M[1]===this._oldSelectionEnd[1]||this._fireOnSelectionChange(k,M,N)):this._oldHasSelection&&this._fireOnSelectionChange(k,M,N)},R.prototype._fireOnSelectionChange=function(k,M,N){this._oldSelectionStart=k,this._oldSelectionEnd=M,this._oldHasSelection=N,this._onSelectionChange.fire()},R.prototype._onBufferActivate=function(k){var M=this;this.clearSelection(),this._trimListener.dispose(),this._trimListener=k.activeBuffer.lines.onTrim(function(N){return M._onTrim(N)})},R.prototype._convertViewportColToCharacterIndex=function(k,M){for(var N=M[0],D=0;M[0]>=D;D++){var W=k.loadCell(D,this._workCell).getChars().length;this._workCell.getWidth()===0?N--:W>1&&M[0]!==D&&(N+=W-1)}return N},R.prototype.setSelection=function(k,M,N){this._model.clearSelection(),this._removeMouseDownListeners(),this._model.selectionStart=[k,M],this._model.selectionStartLength=N,this.refresh()},R.prototype.rightClickSelect=function(k){this._isClickInSelection(k)||(this._selectWordAtCursor(k,!1)&&this.refresh(!0),this._fireEventIfSelectionChanged())},R.prototype._getWordAt=function(k,M,N,D){if(N===void 0&&(N=!0),D===void 0&&(D=!0),!(k[0]>=this._bufferService.cols)){var W=this._bufferService.buffer,B=W.lines.get(k[1]);if(B){var F=W.translateBufferLineToString(k[1],!1),j=this._convertViewportColToCharacterIndex(B,k),G=j,$=k[0]-j,ne=0,ie=0,be=0,ve=0;if(F.charAt(j)===" "){for(;j>0&&F.charAt(j-1)===" ";)j--;for(;G1&&(ve+=ee-1,G+=ee-1);Ee>0&&j>0&&!this._isCharWordSeparator(B.loadCell(Ee-1,this._workCell));){B.loadCell(Ee-1,this._workCell);var q=this._workCell.getChars().length;this._workCell.getWidth()===0?(ne++,Ee--):q>1&&(be+=q-1,j-=q-1),j--,Ee--}for(;U1&&(ve+=Y-1,G+=Y-1),G++,U++}}G++;var K=j+$-ne+be,Se=Math.min(this._bufferService.cols,G-j+ne+ie-be-ve);if(M||F.slice(j,G).trim()!==""){if(N&&K===0&&B.getCodePoint(0)!==32){var fe=W.lines.get(k[1]-1);if(fe&&B.isWrapped&&fe.getCodePoint(this._bufferService.cols-1)!==32){var Ce=this._getWordAt([this._bufferService.cols-1,k[1]-1],!1,!0,!1);if(Ce){var De=this._bufferService.cols-Ce.start;K-=De,Se+=De}}}if(D&&K+Se===this._bufferService.cols&&B.getCodePoint(this._bufferService.cols-1)!==32){var Fe=W.lines.get(k[1]+1);if(Fe?.isWrapped&&Fe.getCodePoint(0)!==32){var Ae=this._getWordAt([0,k[1]+1],!1,!1,!0);Ae&&(Se+=Ae.length)}}return{start:K,length:Se}}}}},R.prototype._selectWordAt=function(k,M){var N=this._getWordAt(k,M);if(N){for(;N.start<0;)N.start+=this._bufferService.cols,k[1]--;this._model.selectionStart=[N.start,k[1]],this._model.selectionStartLength=N.length}},R.prototype._selectToWordAt=function(k){var M=this._getWordAt(k,!0);if(M){for(var N=k[1];M.start<0;)M.start+=this._bufferService.cols,N--;if(!this._model.areSelectionValuesReversed())for(;M.start+M.length>this._bufferService.cols;)M.length-=this._bufferService.cols,N++;this._model.selectionEnd=[this._model.areSelectionValuesReversed()?M.start:M.start+M.length,N]}},R.prototype._isCharWordSeparator=function(k){return k.getWidth()!==0&&this._optionsService.rawOptions.wordSeparator.indexOf(k.getChars())>=0},R.prototype._selectLineAt=function(k){var M=this._bufferService.buffer.getWrappedRangeForLine(k);this._model.selectionStart=[0,M.first],this._model.selectionEnd=[this._bufferService.cols,M.last],this._model.selectionStartLength=0},_([v(3,d.IBufferService),v(4,d.ICoreService),v(5,C.IMouseService),v(6,d.IOptionsService),v(7,C.IRenderService)],R)}(l.Disposable);f.SelectionService=b},4725:(E,f,L)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.IDecorationService=f.ICharacterJoinerService=f.ISoundService=f.ISelectionService=f.IRenderService=f.IMouseService=f.ICoreBrowserService=f.ICharSizeService=void 0;var y=L(8343);f.ICharSizeService=(0,y.createDecorator)("CharSizeService"),f.ICoreBrowserService=(0,y.createDecorator)("CoreBrowserService"),f.IMouseService=(0,y.createDecorator)("MouseService"),f.IRenderService=(0,y.createDecorator)("RenderService"),f.ISelectionService=(0,y.createDecorator)("SelectionService"),f.ISoundService=(0,y.createDecorator)("SoundService"),f.ICharacterJoinerService=(0,y.createDecorator)("CharacterJoinerService"),f.IDecorationService=(0,y.createDecorator)("DecorationService")},357:function(E,f,L){var y=this&&this.__decorate||function(A,w,c,p){var C,d=arguments.length,s=d<3?w:p===null?p=Object.getOwnPropertyDescriptor(w,c):p;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(A,w,c,p);else for(var o=A.length-1;o>=0;o--)(C=A[o])&&(s=(d<3?C(s):d>3?C(w,c,s):C(w,c))||s);return d>3&&s&&Object.defineProperty(w,c,s),s},m=this&&this.__param||function(A,w){return function(c,p){w(c,p,A)}};Object.defineProperty(f,"__esModule",{value:!0}),f.SoundService=void 0;var _=L(2585),v=function(){function A(w){this._optionsService=w}return Object.defineProperty(A,"audioContext",{get:function(){if(!A._audioContext){var w=window.AudioContext||window.webkitAudioContext;if(!w)return console.warn("Web Audio API is not supported by this browser. Consider upgrading to the latest version"),null;A._audioContext=new w}return A._audioContext},enumerable:!1,configurable:!0}),A.prototype.playBellSound=function(){var w=A.audioContext;if(w){var c=w.createBufferSource();w.decodeAudioData(this._base64ToArrayBuffer(this._removeMimeType(this._optionsService.rawOptions.bellSound)),function(p){c.buffer=p,c.connect(w.destination),c.start(0)})}},A.prototype._base64ToArrayBuffer=function(w){for(var c=window.atob(w),p=c.length,C=new Uint8Array(p),d=0;d{Object.defineProperty(f,"__esModule",{value:!0}),f.CircularList=void 0;var y=L(8460),m=function(){function _(v){this._maxLength=v,this.onDeleteEmitter=new y.EventEmitter,this.onInsertEmitter=new y.EventEmitter,this.onTrimEmitter=new y.EventEmitter,this._array=new Array(this._maxLength),this._startIndex=0,this._length=0}return Object.defineProperty(_.prototype,"onDelete",{get:function(){return this.onDeleteEmitter.event},enumerable:!1,configurable:!0}),Object.defineProperty(_.prototype,"onInsert",{get:function(){return this.onInsertEmitter.event},enumerable:!1,configurable:!0}),Object.defineProperty(_.prototype,"onTrim",{get:function(){return this.onTrimEmitter.event},enumerable:!1,configurable:!0}),Object.defineProperty(_.prototype,"maxLength",{get:function(){return this._maxLength},set:function(v){if(this._maxLength!==v){for(var A=new Array(v),w=0;wthis._length)for(var A=this._length;A=v;p--)this._array[this._getCyclicIndex(p+w.length)]=this._array[this._getCyclicIndex(p)];for(p=0;pthis._maxLength){var C=this._length+w.length-this._maxLength;this._startIndex+=C,this._length=this._maxLength,this.onTrimEmitter.fire(C)}else this._length+=w.length},_.prototype.trimStart=function(v){v>this._length&&(v=this._length),this._startIndex+=v,this._length-=v,this.onTrimEmitter.fire(v)},_.prototype.shiftElements=function(v,A,w){if(!(A<=0)){if(v<0||v>=this._length)throw new Error("start argument out of range");if(v+w<0)throw new Error("Cannot shift elements in list beyond index 0");if(w>0){for(var c=A-1;c>=0;c--)this.set(v+c+w,this.get(v+c));var p=v+A+w-this._length;if(p>0)for(this._length+=p;this._length>this._maxLength;)this._length--,this._startIndex++,this.onTrimEmitter.fire(1)}else for(c=0;c{Object.defineProperty(f,"__esModule",{value:!0}),f.clone=void 0,f.clone=function L(y,m){if(m===void 0&&(m=5),typeof y!="object")return y;var _=Array.isArray(y)?[]:{};for(var v in y)_[v]=m<=1?y[v]:y[v]&&L(y[v],m-1);return _}},8969:function(E,f,L){var y,m=this&&this.__extends||(y=function(k,M){return y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(N,D){N.__proto__=D}||function(N,D){for(var W in D)Object.prototype.hasOwnProperty.call(D,W)&&(N[W]=D[W])},y(k,M)},function(k,M){if(typeof M!="function"&&M!==null)throw new TypeError("Class extends value "+String(M)+" is not a constructor or null");function N(){this.constructor=k}y(k,M),k.prototype=M===null?Object.create(M):(N.prototype=M.prototype,new N)});Object.defineProperty(f,"__esModule",{value:!0}),f.CoreTerminal=void 0;var _=L(844),v=L(2585),A=L(4348),w=L(7866),c=L(744),p=L(7302),C=L(6975),d=L(8460),s=L(1753),o=L(3730),l=L(1480),a=L(7994),u=L(9282),g=L(5435),b=L(5981),T=!1,R=function(k){function M(N){var D=k.call(this)||this;return D._onBinary=new d.EventEmitter,D._onData=new d.EventEmitter,D._onLineFeed=new d.EventEmitter,D._onResize=new d.EventEmitter,D._onScroll=new d.EventEmitter,D._instantiationService=new A.InstantiationService,D.optionsService=new p.OptionsService(N),D._instantiationService.setService(v.IOptionsService,D.optionsService),D._bufferService=D.register(D._instantiationService.createInstance(c.BufferService)),D._instantiationService.setService(v.IBufferService,D._bufferService),D._logService=D._instantiationService.createInstance(w.LogService),D._instantiationService.setService(v.ILogService,D._logService),D.coreService=D.register(D._instantiationService.createInstance(C.CoreService,function(){return D.scrollToBottom()})),D._instantiationService.setService(v.ICoreService,D.coreService),D.coreMouseService=D._instantiationService.createInstance(s.CoreMouseService),D._instantiationService.setService(v.ICoreMouseService,D.coreMouseService),D._dirtyRowService=D._instantiationService.createInstance(o.DirtyRowService),D._instantiationService.setService(v.IDirtyRowService,D._dirtyRowService),D.unicodeService=D._instantiationService.createInstance(l.UnicodeService),D._instantiationService.setService(v.IUnicodeService,D.unicodeService),D._charsetService=D._instantiationService.createInstance(a.CharsetService),D._instantiationService.setService(v.ICharsetService,D._charsetService),D._inputHandler=new g.InputHandler(D._bufferService,D._charsetService,D.coreService,D._dirtyRowService,D._logService,D.optionsService,D.coreMouseService,D.unicodeService),D.register((0,d.forwardEvent)(D._inputHandler.onLineFeed,D._onLineFeed)),D.register(D._inputHandler),D.register((0,d.forwardEvent)(D._bufferService.onResize,D._onResize)),D.register((0,d.forwardEvent)(D.coreService.onData,D._onData)),D.register((0,d.forwardEvent)(D.coreService.onBinary,D._onBinary)),D.register(D.optionsService.onOptionChange(function(W){return D._updateOptions(W)})),D.register(D._bufferService.onScroll(function(W){D._onScroll.fire({position:D._bufferService.buffer.ydisp,source:0}),D._dirtyRowService.markRangeDirty(D._bufferService.buffer.scrollTop,D._bufferService.buffer.scrollBottom)})),D.register(D._inputHandler.onScroll(function(W){D._onScroll.fire({position:D._bufferService.buffer.ydisp,source:0}),D._dirtyRowService.markRangeDirty(D._bufferService.buffer.scrollTop,D._bufferService.buffer.scrollBottom)})),D._writeBuffer=new b.WriteBuffer(function(W,B){return D._inputHandler.parse(W,B)}),D}return m(M,k),Object.defineProperty(M.prototype,"onBinary",{get:function(){return this._onBinary.event},enumerable:!1,configurable:!0}),Object.defineProperty(M.prototype,"onData",{get:function(){return this._onData.event},enumerable:!1,configurable:!0}),Object.defineProperty(M.prototype,"onLineFeed",{get:function(){return this._onLineFeed.event},enumerable:!1,configurable:!0}),Object.defineProperty(M.prototype,"onResize",{get:function(){return this._onResize.event},enumerable:!1,configurable:!0}),Object.defineProperty(M.prototype,"onScroll",{get:function(){var N=this;return this._onScrollApi||(this._onScrollApi=new d.EventEmitter,this.register(this._onScroll.event(function(D){var W;(W=N._onScrollApi)===null||W===void 0||W.fire(D.position)}))),this._onScrollApi.event},enumerable:!1,configurable:!0}),Object.defineProperty(M.prototype,"cols",{get:function(){return this._bufferService.cols},enumerable:!1,configurable:!0}),Object.defineProperty(M.prototype,"rows",{get:function(){return this._bufferService.rows},enumerable:!1,configurable:!0}),Object.defineProperty(M.prototype,"buffers",{get:function(){return this._bufferService.buffers},enumerable:!1,configurable:!0}),Object.defineProperty(M.prototype,"options",{get:function(){return this.optionsService.options},set:function(N){for(var D in N)this.optionsService.options[D]=N[D]},enumerable:!1,configurable:!0}),M.prototype.dispose=function(){var N;this._isDisposed||(k.prototype.dispose.call(this),(N=this._windowsMode)===null||N===void 0||N.dispose(),this._windowsMode=void 0)},M.prototype.write=function(N,D){this._writeBuffer.write(N,D)},M.prototype.writeSync=function(N,D){this._logService.logLevel<=v.LogLevelEnum.WARN&&!T&&(this._logService.warn("writeSync is unreliable and will be removed soon."),T=!0),this._writeBuffer.writeSync(N,D)},M.prototype.resize=function(N,D){isNaN(N)||isNaN(D)||(N=Math.max(N,c.MINIMUM_COLS),D=Math.max(D,c.MINIMUM_ROWS),this._bufferService.resize(N,D))},M.prototype.scroll=function(N,D){D===void 0&&(D=!1),this._bufferService.scroll(N,D)},M.prototype.scrollLines=function(N,D,W){this._bufferService.scrollLines(N,D,W)},M.prototype.scrollPages=function(N){this._bufferService.scrollPages(N)},M.prototype.scrollToTop=function(){this._bufferService.scrollToTop()},M.prototype.scrollToBottom=function(){this._bufferService.scrollToBottom()},M.prototype.scrollToLine=function(N){this._bufferService.scrollToLine(N)},M.prototype.registerEscHandler=function(N,D){return this._inputHandler.registerEscHandler(N,D)},M.prototype.registerDcsHandler=function(N,D){return this._inputHandler.registerDcsHandler(N,D)},M.prototype.registerCsiHandler=function(N,D){return this._inputHandler.registerCsiHandler(N,D)},M.prototype.registerOscHandler=function(N,D){return this._inputHandler.registerOscHandler(N,D)},M.prototype._setup=function(){this.optionsService.rawOptions.windowsMode&&this._enableWindowsMode()},M.prototype.reset=function(){this._inputHandler.reset(),this._bufferService.reset(),this._charsetService.reset(),this.coreService.reset(),this.coreMouseService.reset()},M.prototype._updateOptions=function(N){var D;switch(N){case"scrollback":this.buffers.resize(this.cols,this.rows);break;case"windowsMode":this.optionsService.rawOptions.windowsMode?this._enableWindowsMode():((D=this._windowsMode)===null||D===void 0||D.dispose(),this._windowsMode=void 0)}},M.prototype._enableWindowsMode=function(){var N=this;if(!this._windowsMode){var D=[];D.push(this.onLineFeed(u.updateWindowsModeWrappedState.bind(null,this._bufferService))),D.push(this.registerCsiHandler({final:"H"},function(){return(0,u.updateWindowsModeWrappedState)(N._bufferService),!1})),this._windowsMode={dispose:function(){for(var W=0,B=D;W{Object.defineProperty(f,"__esModule",{value:!0}),f.forwardEvent=f.EventEmitter=void 0;var L=function(){function y(){this._listeners=[],this._disposed=!1}return Object.defineProperty(y.prototype,"event",{get:function(){var m=this;return this._event||(this._event=function(_){return m._listeners.push(_),{dispose:function(){if(!m._disposed){for(var v=0;v24)return B.setWinLines||!1;switch(W){case 1:return!!B.restoreWin;case 2:return!!B.minimizeWin;case 3:return!!B.setWinPosition;case 4:return!!B.setWinSizePixels;case 5:return!!B.raiseWin;case 6:return!!B.lowerWin;case 7:return!!B.refreshWin;case 8:return!!B.setWinSizeChars;case 9:return!!B.maximizeWin;case 10:return!!B.fullscreenWin;case 11:return!!B.getWinState;case 13:return!!B.getWinPosition;case 14:return!!B.getWinSizePixels;case 15:return!!B.getScreenSizePixels;case 16:return!!B.getCellSizePixels;case 18:return!!B.getWinSizeChars;case 19:return!!B.getScreenSizeChars;case 20:return!!B.getIconTitle;case 21:return!!B.getWinTitle;case 22:return!!B.pushTitle;case 23:return!!B.popTitle;case 24:return!!B.setWinLines}return!1}(function(W){W[W.GET_WIN_SIZE_PIXELS=0]="GET_WIN_SIZE_PIXELS",W[W.GET_CELL_SIZE_PIXELS=1]="GET_CELL_SIZE_PIXELS"})(_=f.WindowsOptionsReportType||(f.WindowsOptionsReportType={}));var N=function(){function W(B,F,j,G){this._bufferService=B,this._coreService=F,this._logService=j,this._optionsService=G,this._data=new Uint32Array(0)}return W.prototype.hook=function(B){this._data=new Uint32Array(0)},W.prototype.put=function(B,F,j){this._data=(0,p.concat)(this._data,B.subarray(F,j))},W.prototype.unhook=function(B){if(!B)return this._data=new Uint32Array(0),!0;var F=(0,C.utf32ToString)(this._data);switch(this._data=new Uint32Array(0),F){case'"q':this._coreService.triggerDataEvent(v.C0.ESC+'P1$r0"q'+v.C0.ESC+"\\");break;case'"p':this._coreService.triggerDataEvent(v.C0.ESC+'P1$r61;1"p'+v.C0.ESC+"\\");break;case"r":var j=this._bufferService.buffer.scrollTop+1+";"+(this._bufferService.buffer.scrollBottom+1)+"r";this._coreService.triggerDataEvent(v.C0.ESC+"P1$r"+j+v.C0.ESC+"\\");break;case"m":this._coreService.triggerDataEvent(v.C0.ESC+"P1$r0m"+v.C0.ESC+"\\");break;case" q":var G={block:2,underline:4,bar:6}[this._optionsService.rawOptions.cursorStyle];G-=this._optionsService.rawOptions.cursorBlink?1:0,this._coreService.triggerDataEvent(v.C0.ESC+"P1$r"+G+" q"+v.C0.ESC+"\\");break;default:this._logService.debug("Unknown DCS $q %s",F),this._coreService.triggerDataEvent(v.C0.ESC+"P0$r"+v.C0.ESC+"\\")}return!0},W}(),D=function(W){function B(F,j,G,$,ne,ie,be,ve,Ee){Ee===void 0&&(Ee=new w.EscapeSequenceParser);var U=W.call(this)||this;U._bufferService=F,U._charsetService=j,U._coreService=G,U._dirtyRowService=$,U._logService=ne,U._optionsService=ie,U._coreMouseService=be,U._unicodeService=ve,U._parser=Ee,U._parseBuffer=new Uint32Array(4096),U._stringDecoder=new C.StringToUtf32,U._utf8Decoder=new C.Utf8ToUtf32,U._workCell=new l.CellData,U._windowTitle="",U._iconName="",U._windowTitleStack=[],U._iconNameStack=[],U._curAttrData=d.DEFAULT_ATTR_DATA.clone(),U._eraseAttrDataInternal=d.DEFAULT_ATTR_DATA.clone(),U._onRequestBell=new s.EventEmitter,U._onRequestRefreshRows=new s.EventEmitter,U._onRequestReset=new s.EventEmitter,U._onRequestSendFocus=new s.EventEmitter,U._onRequestSyncScrollBar=new s.EventEmitter,U._onRequestWindowsOptionsReport=new s.EventEmitter,U._onA11yChar=new s.EventEmitter,U._onA11yTab=new s.EventEmitter,U._onCursorMove=new s.EventEmitter,U._onLineFeed=new s.EventEmitter,U._onScroll=new s.EventEmitter,U._onTitleChange=new s.EventEmitter,U._onColor=new s.EventEmitter,U._parseStack={paused:!1,cursorStartX:0,cursorStartY:0,decodedLength:0,position:0},U._specialColors=[256,257,258],U.register(U._parser),U._activeBuffer=U._bufferService.buffer,U.register(U._bufferService.buffers.onBufferActivate(function(K){return U._activeBuffer=K.activeBuffer})),U._parser.setCsiHandlerFallback(function(K,Se){U._logService.debug("Unknown CSI code: ",{identifier:U._parser.identToString(K),params:Se.toArray()})}),U._parser.setEscHandlerFallback(function(K){U._logService.debug("Unknown ESC code: ",{identifier:U._parser.identToString(K)})}),U._parser.setExecuteHandlerFallback(function(K){U._logService.debug("Unknown EXECUTE code: ",{code:K})}),U._parser.setOscHandlerFallback(function(K,Se,fe){U._logService.debug("Unknown OSC code: ",{identifier:K,action:Se,data:fe})}),U._parser.setDcsHandlerFallback(function(K,Se,fe){Se==="HOOK"&&(fe=fe.toArray()),U._logService.debug("Unknown DCS code: ",{identifier:U._parser.identToString(K),action:Se,payload:fe})}),U._parser.setPrintHandler(function(K,Se,fe){return U.print(K,Se,fe)}),U._parser.registerCsiHandler({final:"@"},function(K){return U.insertChars(K)}),U._parser.registerCsiHandler({intermediates:" ",final:"@"},function(K){return U.scrollLeft(K)}),U._parser.registerCsiHandler({final:"A"},function(K){return U.cursorUp(K)}),U._parser.registerCsiHandler({intermediates:" ",final:"A"},function(K){return U.scrollRight(K)}),U._parser.registerCsiHandler({final:"B"},function(K){return U.cursorDown(K)}),U._parser.registerCsiHandler({final:"C"},function(K){return U.cursorForward(K)}),U._parser.registerCsiHandler({final:"D"},function(K){return U.cursorBackward(K)}),U._parser.registerCsiHandler({final:"E"},function(K){return U.cursorNextLine(K)}),U._parser.registerCsiHandler({final:"F"},function(K){return U.cursorPrecedingLine(K)}),U._parser.registerCsiHandler({final:"G"},function(K){return U.cursorCharAbsolute(K)}),U._parser.registerCsiHandler({final:"H"},function(K){return U.cursorPosition(K)}),U._parser.registerCsiHandler({final:"I"},function(K){return U.cursorForwardTab(K)}),U._parser.registerCsiHandler({final:"J"},function(K){return U.eraseInDisplay(K)}),U._parser.registerCsiHandler({prefix:"?",final:"J"},function(K){return U.eraseInDisplay(K)}),U._parser.registerCsiHandler({final:"K"},function(K){return U.eraseInLine(K)}),U._parser.registerCsiHandler({prefix:"?",final:"K"},function(K){return U.eraseInLine(K)}),U._parser.registerCsiHandler({final:"L"},function(K){return U.insertLines(K)}),U._parser.registerCsiHandler({final:"M"},function(K){return U.deleteLines(K)}),U._parser.registerCsiHandler({final:"P"},function(K){return U.deleteChars(K)}),U._parser.registerCsiHandler({final:"S"},function(K){return U.scrollUp(K)}),U._parser.registerCsiHandler({final:"T"},function(K){return U.scrollDown(K)}),U._parser.registerCsiHandler({final:"X"},function(K){return U.eraseChars(K)}),U._parser.registerCsiHandler({final:"Z"},function(K){return U.cursorBackwardTab(K)}),U._parser.registerCsiHandler({final:"`"},function(K){return U.charPosAbsolute(K)}),U._parser.registerCsiHandler({final:"a"},function(K){return U.hPositionRelative(K)}),U._parser.registerCsiHandler({final:"b"},function(K){return U.repeatPrecedingCharacter(K)}),U._parser.registerCsiHandler({final:"c"},function(K){return U.sendDeviceAttributesPrimary(K)}),U._parser.registerCsiHandler({prefix:">",final:"c"},function(K){return U.sendDeviceAttributesSecondary(K)}),U._parser.registerCsiHandler({final:"d"},function(K){return U.linePosAbsolute(K)}),U._parser.registerCsiHandler({final:"e"},function(K){return U.vPositionRelative(K)}),U._parser.registerCsiHandler({final:"f"},function(K){return U.hVPosition(K)}),U._parser.registerCsiHandler({final:"g"},function(K){return U.tabClear(K)}),U._parser.registerCsiHandler({final:"h"},function(K){return U.setMode(K)}),U._parser.registerCsiHandler({prefix:"?",final:"h"},function(K){return U.setModePrivate(K)}),U._parser.registerCsiHandler({final:"l"},function(K){return U.resetMode(K)}),U._parser.registerCsiHandler({prefix:"?",final:"l"},function(K){return U.resetModePrivate(K)}),U._parser.registerCsiHandler({final:"m"},function(K){return U.charAttributes(K)}),U._parser.registerCsiHandler({final:"n"},function(K){return U.deviceStatus(K)}),U._parser.registerCsiHandler({prefix:"?",final:"n"},function(K){return U.deviceStatusPrivate(K)}),U._parser.registerCsiHandler({intermediates:"!",final:"p"},function(K){return U.softReset(K)}),U._parser.registerCsiHandler({intermediates:" ",final:"q"},function(K){return U.setCursorStyle(K)}),U._parser.registerCsiHandler({final:"r"},function(K){return U.setScrollRegion(K)}),U._parser.registerCsiHandler({final:"s"},function(K){return U.saveCursor(K)}),U._parser.registerCsiHandler({final:"t"},function(K){return U.windowOptions(K)}),U._parser.registerCsiHandler({final:"u"},function(K){return U.restoreCursor(K)}),U._parser.registerCsiHandler({intermediates:"'",final:"}"},function(K){return U.insertColumns(K)}),U._parser.registerCsiHandler({intermediates:"'",final:"~"},function(K){return U.deleteColumns(K)}),U._parser.setExecuteHandler(v.C0.BEL,function(){return U.bell()}),U._parser.setExecuteHandler(v.C0.LF,function(){return U.lineFeed()}),U._parser.setExecuteHandler(v.C0.VT,function(){return U.lineFeed()}),U._parser.setExecuteHandler(v.C0.FF,function(){return U.lineFeed()}),U._parser.setExecuteHandler(v.C0.CR,function(){return U.carriageReturn()}),U._parser.setExecuteHandler(v.C0.BS,function(){return U.backspace()}),U._parser.setExecuteHandler(v.C0.HT,function(){return U.tab()}),U._parser.setExecuteHandler(v.C0.SO,function(){return U.shiftOut()}),U._parser.setExecuteHandler(v.C0.SI,function(){return U.shiftIn()}),U._parser.setExecuteHandler(v.C1.IND,function(){return U.index()}),U._parser.setExecuteHandler(v.C1.NEL,function(){return U.nextLine()}),U._parser.setExecuteHandler(v.C1.HTS,function(){return U.tabSet()}),U._parser.registerOscHandler(0,new g.OscHandler(function(K){return U.setTitle(K),U.setIconName(K),!0})),U._parser.registerOscHandler(1,new g.OscHandler(function(K){return U.setIconName(K)})),U._parser.registerOscHandler(2,new g.OscHandler(function(K){return U.setTitle(K)})),U._parser.registerOscHandler(4,new g.OscHandler(function(K){return U.setOrReportIndexedColor(K)})),U._parser.registerOscHandler(10,new g.OscHandler(function(K){return U.setOrReportFgColor(K)})),U._parser.registerOscHandler(11,new g.OscHandler(function(K){return U.setOrReportBgColor(K)})),U._parser.registerOscHandler(12,new g.OscHandler(function(K){return U.setOrReportCursorColor(K)})),U._parser.registerOscHandler(104,new g.OscHandler(function(K){return U.restoreIndexedColor(K)})),U._parser.registerOscHandler(110,new g.OscHandler(function(K){return U.restoreFgColor(K)})),U._parser.registerOscHandler(111,new g.OscHandler(function(K){return U.restoreBgColor(K)})),U._parser.registerOscHandler(112,new g.OscHandler(function(K){return U.restoreCursorColor(K)})),U._parser.registerEscHandler({final:"7"},function(){return U.saveCursor()}),U._parser.registerEscHandler({final:"8"},function(){return U.restoreCursor()}),U._parser.registerEscHandler({final:"D"},function(){return U.index()}),U._parser.registerEscHandler({final:"E"},function(){return U.nextLine()}),U._parser.registerEscHandler({final:"H"},function(){return U.tabSet()}),U._parser.registerEscHandler({final:"M"},function(){return U.reverseIndex()}),U._parser.registerEscHandler({final:"="},function(){return U.keypadApplicationMode()}),U._parser.registerEscHandler({final:">"},function(){return U.keypadNumericMode()}),U._parser.registerEscHandler({final:"c"},function(){return U.fullReset()}),U._parser.registerEscHandler({final:"n"},function(){return U.setgLevel(2)}),U._parser.registerEscHandler({final:"o"},function(){return U.setgLevel(3)}),U._parser.registerEscHandler({final:"|"},function(){return U.setgLevel(3)}),U._parser.registerEscHandler({final:"}"},function(){return U.setgLevel(2)}),U._parser.registerEscHandler({final:"~"},function(){return U.setgLevel(1)}),U._parser.registerEscHandler({intermediates:"%",final:"@"},function(){return U.selectDefaultCharset()}),U._parser.registerEscHandler({intermediates:"%",final:"G"},function(){return U.selectDefaultCharset()});var ee=function(K){q._parser.registerEscHandler({intermediates:"(",final:K},function(){return U.selectCharset("("+K)}),q._parser.registerEscHandler({intermediates:")",final:K},function(){return U.selectCharset(")"+K)}),q._parser.registerEscHandler({intermediates:"*",final:K},function(){return U.selectCharset("*"+K)}),q._parser.registerEscHandler({intermediates:"+",final:K},function(){return U.selectCharset("+"+K)}),q._parser.registerEscHandler({intermediates:"-",final:K},function(){return U.selectCharset("-"+K)}),q._parser.registerEscHandler({intermediates:".",final:K},function(){return U.selectCharset("."+K)}),q._parser.registerEscHandler({intermediates:"/",final:K},function(){return U.selectCharset("/"+K)})},q=this;for(var Y in A.CHARSETS)ee(Y);return U._parser.registerEscHandler({intermediates:"#",final:"8"},function(){return U.screenAlignmentPattern()}),U._parser.setErrorHandler(function(K){return U._logService.error("Parsing error: ",K),K}),U._parser.registerDcsHandler({intermediates:"$",final:"q"},new N(U._bufferService,U._coreService,U._logService,U._optionsService)),U}return m(B,W),Object.defineProperty(B.prototype,"onRequestBell",{get:function(){return this._onRequestBell.event},enumerable:!1,configurable:!0}),Object.defineProperty(B.prototype,"onRequestRefreshRows",{get:function(){return this._onRequestRefreshRows.event},enumerable:!1,configurable:!0}),Object.defineProperty(B.prototype,"onRequestReset",{get:function(){return this._onRequestReset.event},enumerable:!1,configurable:!0}),Object.defineProperty(B.prototype,"onRequestSendFocus",{get:function(){return this._onRequestSendFocus.event},enumerable:!1,configurable:!0}),Object.defineProperty(B.prototype,"onRequestSyncScrollBar",{get:function(){return this._onRequestSyncScrollBar.event},enumerable:!1,configurable:!0}),Object.defineProperty(B.prototype,"onRequestWindowsOptionsReport",{get:function(){return this._onRequestWindowsOptionsReport.event},enumerable:!1,configurable:!0}),Object.defineProperty(B.prototype,"onA11yChar",{get:function(){return this._onA11yChar.event},enumerable:!1,configurable:!0}),Object.defineProperty(B.prototype,"onA11yTab",{get:function(){return this._onA11yTab.event},enumerable:!1,configurable:!0}),Object.defineProperty(B.prototype,"onCursorMove",{get:function(){return this._onCursorMove.event},enumerable:!1,configurable:!0}),Object.defineProperty(B.prototype,"onLineFeed",{get:function(){return this._onLineFeed.event},enumerable:!1,configurable:!0}),Object.defineProperty(B.prototype,"onScroll",{get:function(){return this._onScroll.event},enumerable:!1,configurable:!0}),Object.defineProperty(B.prototype,"onTitleChange",{get:function(){return this._onTitleChange.event},enumerable:!1,configurable:!0}),Object.defineProperty(B.prototype,"onColor",{get:function(){return this._onColor.event},enumerable:!1,configurable:!0}),B.prototype.dispose=function(){W.prototype.dispose.call(this)},B.prototype._preserveStack=function(F,j,G,$){this._parseStack.paused=!0,this._parseStack.cursorStartX=F,this._parseStack.cursorStartY=j,this._parseStack.decodedLength=G,this._parseStack.position=$},B.prototype._logSlowResolvingAsync=function(F){this._logService.logLevel<=u.LogLevelEnum.WARN&&Promise.race([F,new Promise(function(j,G){return setTimeout(function(){return G("#SLOW_TIMEOUT")},5e3)})]).catch(function(j){if(j!=="#SLOW_TIMEOUT")throw j;console.warn("async parser handler taking longer than 5000 ms")})},B.prototype.parse=function(F,j){var G,$=this._activeBuffer.x,ne=this._activeBuffer.y,ie=0,be=this._parseStack.paused;if(be){if(G=this._parser.parse(this._parseBuffer,this._parseStack.decodedLength,j))return this._logSlowResolvingAsync(G),G;$=this._parseStack.cursorStartX,ne=this._parseStack.cursorStartY,this._parseStack.paused=!1,F.length>k&&(ie=this._parseStack.position+k)}if(this._logService.logLevel<=u.LogLevelEnum.DEBUG&&this._logService.debug("parsing data"+(typeof F=="string"?' "'+F+'"':' "'+Array.prototype.map.call(F,function(ee){return String.fromCharCode(ee)}).join("")+'"'),typeof F=="string"?F.split("").map(function(ee){return ee.charCodeAt(0)}):F),this._parseBuffer.lengthk)for(var ve=ie;ve0&&q.getWidth(this._activeBuffer.x-1)===2&&q.setCellFromCodePoint(this._activeBuffer.x-1,0,1,ee.fg,ee.bg,ee.extended);for(var Y=j;Y=ve){if(Ee){for(;this._activeBuffer.x=this._bufferService.rows&&(this._activeBuffer.y=this._bufferService.rows-1),this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).isWrapped=!0),q=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y)}else if(this._activeBuffer.x=ve-1,ne===2)continue}if(U&&(q.insertCells(this._activeBuffer.x,ne,this._activeBuffer.getNullCell(ee),ee),q.getWidth(ve-1)===2&&q.setCellFromCodePoint(ve-1,o.NULL_CELL_CODE,o.NULL_CELL_WIDTH,ee.fg,ee.bg,ee.extended)),q.setCellFromCodePoint(this._activeBuffer.x++,$,ne,ee.fg,ee.bg,ee.extended),ne>0)for(;--ne;)q.setCellFromCodePoint(this._activeBuffer.x++,0,0,ee.fg,ee.bg,ee.extended)}else q.getWidth(this._activeBuffer.x-1)?q.addCodepointToCell(this._activeBuffer.x-1,$):q.addCodepointToCell(this._activeBuffer.x-2,$)}G-j>0&&(q.loadCell(this._activeBuffer.x-1,this._workCell),this._workCell.getWidth()===2||this._workCell.getCode()>65535?this._parser.precedingCodepoint=0:this._workCell.isCombined()?this._parser.precedingCodepoint=this._workCell.getChars().charCodeAt(0):this._parser.precedingCodepoint=this._workCell.content),this._activeBuffer.x0&&q.getWidth(this._activeBuffer.x)===0&&!q.hasContent(this._activeBuffer.x)&&q.setCellFromCodePoint(this._activeBuffer.x,0,1,ee.fg,ee.bg,ee.extended),this._dirtyRowService.markDirty(this._activeBuffer.y)},B.prototype.registerCsiHandler=function(F,j){var G=this;return F.final!=="t"||F.prefix||F.intermediates?this._parser.registerCsiHandler(F,j):this._parser.registerCsiHandler(F,function($){return!M($.params[0],G._optionsService.rawOptions.windowOptions)||j($)})},B.prototype.registerDcsHandler=function(F,j){return this._parser.registerDcsHandler(F,new b.DcsHandler(j))},B.prototype.registerEscHandler=function(F,j){return this._parser.registerEscHandler(F,j)},B.prototype.registerOscHandler=function(F,j){return this._parser.registerOscHandler(F,new g.OscHandler(j))},B.prototype.bell=function(){return this._onRequestBell.fire(),!0},B.prototype.lineFeed=function(){return this._dirtyRowService.markDirty(this._activeBuffer.y),this._optionsService.rawOptions.convertEol&&(this._activeBuffer.x=0),this._activeBuffer.y++,this._activeBuffer.y===this._activeBuffer.scrollBottom+1?(this._activeBuffer.y--,this._bufferService.scroll(this._eraseAttrData())):this._activeBuffer.y>=this._bufferService.rows&&(this._activeBuffer.y=this._bufferService.rows-1),this._activeBuffer.x>=this._bufferService.cols&&this._activeBuffer.x--,this._dirtyRowService.markDirty(this._activeBuffer.y),this._onLineFeed.fire(),!0},B.prototype.carriageReturn=function(){return this._activeBuffer.x=0,!0},B.prototype.backspace=function(){var F;if(!this._coreService.decPrivateModes.reverseWraparound)return this._restrictCursor(),this._activeBuffer.x>0&&this._activeBuffer.x--,!0;if(this._restrictCursor(this._bufferService.cols),this._activeBuffer.x>0)this._activeBuffer.x--;else if(this._activeBuffer.x===0&&this._activeBuffer.y>this._activeBuffer.scrollTop&&this._activeBuffer.y<=this._activeBuffer.scrollBottom&&((F=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y))===null||F===void 0?void 0:F.isWrapped)){this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).isWrapped=!1,this._activeBuffer.y--,this._activeBuffer.x=this._bufferService.cols-1;var j=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);j.hasWidth(this._activeBuffer.x)&&!j.hasContent(this._activeBuffer.x)&&this._activeBuffer.x--}return this._restrictCursor(),!0},B.prototype.tab=function(){if(this._activeBuffer.x>=this._bufferService.cols)return!0;var F=this._activeBuffer.x;return this._activeBuffer.x=this._activeBuffer.nextStop(),this._optionsService.rawOptions.screenReaderMode&&this._onA11yTab.fire(this._activeBuffer.x-F),!0},B.prototype.shiftOut=function(){return this._charsetService.setgLevel(1),!0},B.prototype.shiftIn=function(){return this._charsetService.setgLevel(0),!0},B.prototype._restrictCursor=function(F){F===void 0&&(F=this._bufferService.cols-1),this._activeBuffer.x=Math.min(F,Math.max(0,this._activeBuffer.x)),this._activeBuffer.y=this._coreService.decPrivateModes.origin?Math.min(this._activeBuffer.scrollBottom,Math.max(this._activeBuffer.scrollTop,this._activeBuffer.y)):Math.min(this._bufferService.rows-1,Math.max(0,this._activeBuffer.y)),this._dirtyRowService.markDirty(this._activeBuffer.y)},B.prototype._setCursor=function(F,j){this._dirtyRowService.markDirty(this._activeBuffer.y),this._coreService.decPrivateModes.origin?(this._activeBuffer.x=F,this._activeBuffer.y=this._activeBuffer.scrollTop+j):(this._activeBuffer.x=F,this._activeBuffer.y=j),this._restrictCursor(),this._dirtyRowService.markDirty(this._activeBuffer.y)},B.prototype._moveCursor=function(F,j){this._restrictCursor(),this._setCursor(this._activeBuffer.x+F,this._activeBuffer.y+j)},B.prototype.cursorUp=function(F){var j=this._activeBuffer.y-this._activeBuffer.scrollTop;return j>=0?this._moveCursor(0,-Math.min(j,F.params[0]||1)):this._moveCursor(0,-(F.params[0]||1)),!0},B.prototype.cursorDown=function(F){var j=this._activeBuffer.scrollBottom-this._activeBuffer.y;return j>=0?this._moveCursor(0,Math.min(j,F.params[0]||1)):this._moveCursor(0,F.params[0]||1),!0},B.prototype.cursorForward=function(F){return this._moveCursor(F.params[0]||1,0),!0},B.prototype.cursorBackward=function(F){return this._moveCursor(-(F.params[0]||1),0),!0},B.prototype.cursorNextLine=function(F){return this.cursorDown(F),this._activeBuffer.x=0,!0},B.prototype.cursorPrecedingLine=function(F){return this.cursorUp(F),this._activeBuffer.x=0,!0},B.prototype.cursorCharAbsolute=function(F){return this._setCursor((F.params[0]||1)-1,this._activeBuffer.y),!0},B.prototype.cursorPosition=function(F){return this._setCursor(F.length>=2?(F.params[1]||1)-1:0,(F.params[0]||1)-1),!0},B.prototype.charPosAbsolute=function(F){return this._setCursor((F.params[0]||1)-1,this._activeBuffer.y),!0},B.prototype.hPositionRelative=function(F){return this._moveCursor(F.params[0]||1,0),!0},B.prototype.linePosAbsolute=function(F){return this._setCursor(this._activeBuffer.x,(F.params[0]||1)-1),!0},B.prototype.vPositionRelative=function(F){return this._moveCursor(0,F.params[0]||1),!0},B.prototype.hVPosition=function(F){return this.cursorPosition(F),!0},B.prototype.tabClear=function(F){var j=F.params[0];return j===0?delete this._activeBuffer.tabs[this._activeBuffer.x]:j===3&&(this._activeBuffer.tabs={}),!0},B.prototype.cursorForwardTab=function(F){if(this._activeBuffer.x>=this._bufferService.cols)return!0;for(var j=F.params[0]||1;j--;)this._activeBuffer.x=this._activeBuffer.nextStop();return!0},B.prototype.cursorBackwardTab=function(F){if(this._activeBuffer.x>=this._bufferService.cols)return!0;for(var j=F.params[0]||1;j--;)this._activeBuffer.x=this._activeBuffer.prevStop();return!0},B.prototype._eraseInBufferLine=function(F,j,G,$){$===void 0&&($=!1);var ne=this._activeBuffer.lines.get(this._activeBuffer.ybase+F);ne.replaceCells(j,G,this._activeBuffer.getNullCell(this._eraseAttrData()),this._eraseAttrData()),$&&(ne.isWrapped=!1)},B.prototype._resetBufferLine=function(F){var j=this._activeBuffer.lines.get(this._activeBuffer.ybase+F);j.fill(this._activeBuffer.getNullCell(this._eraseAttrData())),this._bufferService.buffer.clearMarkers(this._activeBuffer.ybase+F),j.isWrapped=!1},B.prototype.eraseInDisplay=function(F){var j;switch(this._restrictCursor(this._bufferService.cols),F.params[0]){case 0:for(j=this._activeBuffer.y,this._dirtyRowService.markDirty(j),this._eraseInBufferLine(j++,this._activeBuffer.x,this._bufferService.cols,this._activeBuffer.x===0);j=this._bufferService.cols&&(this._activeBuffer.lines.get(j+1).isWrapped=!1);j--;)this._resetBufferLine(j);this._dirtyRowService.markDirty(0);break;case 2:for(j=this._bufferService.rows,this._dirtyRowService.markDirty(j-1);j--;)this._resetBufferLine(j);this._dirtyRowService.markDirty(0);break;case 3:var G=this._activeBuffer.lines.length-this._bufferService.rows;G>0&&(this._activeBuffer.lines.trimStart(G),this._activeBuffer.ybase=Math.max(this._activeBuffer.ybase-G,0),this._activeBuffer.ydisp=Math.max(this._activeBuffer.ydisp-G,0),this._onScroll.fire(0))}return!0},B.prototype.eraseInLine=function(F){switch(this._restrictCursor(this._bufferService.cols),F.params[0]){case 0:this._eraseInBufferLine(this._activeBuffer.y,this._activeBuffer.x,this._bufferService.cols,this._activeBuffer.x===0);break;case 1:this._eraseInBufferLine(this._activeBuffer.y,0,this._activeBuffer.x+1,!1);break;case 2:this._eraseInBufferLine(this._activeBuffer.y,0,this._bufferService.cols,!0)}return this._dirtyRowService.markDirty(this._activeBuffer.y),!0},B.prototype.insertLines=function(F){this._restrictCursor();var j=F.params[0]||1;if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.ythis._activeBuffer.scrollBottom||this._activeBuffer.ythis._activeBuffer.scrollBottom||this._activeBuffer.ythis._activeBuffer.scrollBottom||this._activeBuffer.ythis._activeBuffer.scrollBottom||this._activeBuffer.ythis._activeBuffer.scrollBottom||this._activeBuffer.y0||(this._is("xterm")||this._is("rxvt-unicode")||this._is("screen")?this._coreService.triggerDataEvent(v.C0.ESC+"[?1;2c"):this._is("linux")&&this._coreService.triggerDataEvent(v.C0.ESC+"[?6c")),!0},B.prototype.sendDeviceAttributesSecondary=function(F){return F.params[0]>0||(this._is("xterm")?this._coreService.triggerDataEvent(v.C0.ESC+"[>0;276;0c"):this._is("rxvt-unicode")?this._coreService.triggerDataEvent(v.C0.ESC+"[>85;95;0c"):this._is("linux")?this._coreService.triggerDataEvent(F.params[0]+"c"):this._is("screen")&&this._coreService.triggerDataEvent(v.C0.ESC+"[>83;40003;0c")),!0},B.prototype._is=function(F){return(this._optionsService.rawOptions.termName+"").indexOf(F)===0},B.prototype.setMode=function(F){for(var j=0;j=2||$[1]===2&&ie+ne>=5)break;$[1]&&(ne=1)}while(++ie+j5)&&(F=1),j.extended.underlineStyle=F,j.fg|=268435456,F===0&&(j.fg&=-268435457),j.updateExtended()},B.prototype.charAttributes=function(F){if(F.length===1&&F.params[0]===0)return this._curAttrData.fg=d.DEFAULT_ATTR_DATA.fg,this._curAttrData.bg=d.DEFAULT_ATTR_DATA.bg,!0;for(var j,G=F.length,$=this._curAttrData,ne=0;ne=30&&j<=37?($.fg&=-50331904,$.fg|=16777216|j-30):j>=40&&j<=47?($.bg&=-50331904,$.bg|=16777216|j-40):j>=90&&j<=97?($.fg&=-50331904,$.fg|=16777224|j-90):j>=100&&j<=107?($.bg&=-50331904,$.bg|=16777224|j-100):j===0?($.fg=d.DEFAULT_ATTR_DATA.fg,$.bg=d.DEFAULT_ATTR_DATA.bg):j===1?$.fg|=134217728:j===3?$.bg|=67108864:j===4?($.fg|=268435456,this._processUnderline(F.hasSubParams(ne)?F.getSubParams(ne)[0]:1,$)):j===5?$.fg|=536870912:j===7?$.fg|=67108864:j===8?$.fg|=1073741824:j===9?$.fg|=2147483648:j===2?$.bg|=134217728:j===21?this._processUnderline(2,$):j===22?($.fg&=-134217729,$.bg&=-134217729):j===23?$.bg&=-67108865:j===24?$.fg&=-268435457:j===25?$.fg&=-536870913:j===27?$.fg&=-67108865:j===28?$.fg&=-1073741825:j===29?$.fg&=2147483647:j===39?($.fg&=-67108864,$.fg|=16777215&d.DEFAULT_ATTR_DATA.fg):j===49?($.bg&=-67108864,$.bg|=16777215&d.DEFAULT_ATTR_DATA.bg):j===38||j===48||j===58?ne+=this._extractColor(F,ne,$):j===59?($.extended=$.extended.clone(),$.extended.underlineColor=-1,$.updateExtended()):j===100?($.fg&=-67108864,$.fg|=16777215&d.DEFAULT_ATTR_DATA.fg,$.bg&=-67108864,$.bg|=16777215&d.DEFAULT_ATTR_DATA.bg):this._logService.debug("Unknown SGR attribute: %d.",j);return!0},B.prototype.deviceStatus=function(F){switch(F.params[0]){case 5:this._coreService.triggerDataEvent(v.C0.ESC+"[0n");break;case 6:var j=this._activeBuffer.y+1,G=this._activeBuffer.x+1;this._coreService.triggerDataEvent(v.C0.ESC+"["+j+";"+G+"R")}return!0},B.prototype.deviceStatusPrivate=function(F){if(F.params[0]===6){var j=this._activeBuffer.y+1,G=this._activeBuffer.x+1;this._coreService.triggerDataEvent(v.C0.ESC+"[?"+j+";"+G+"R")}return!0},B.prototype.softReset=function(F){return this._coreService.isCursorHidden=!1,this._onRequestSyncScrollBar.fire(),this._activeBuffer.scrollTop=0,this._activeBuffer.scrollBottom=this._bufferService.rows-1,this._curAttrData=d.DEFAULT_ATTR_DATA.clone(),this._coreService.reset(),this._charsetService.reset(),this._activeBuffer.savedX=0,this._activeBuffer.savedY=this._activeBuffer.ybase,this._activeBuffer.savedCurAttrData.fg=this._curAttrData.fg,this._activeBuffer.savedCurAttrData.bg=this._curAttrData.bg,this._activeBuffer.savedCharset=this._charsetService.charset,this._coreService.decPrivateModes.origin=!1,!0},B.prototype.setCursorStyle=function(F){var j=F.params[0]||1;switch(j){case 1:case 2:this._optionsService.options.cursorStyle="block";break;case 3:case 4:this._optionsService.options.cursorStyle="underline";break;case 5:case 6:this._optionsService.options.cursorStyle="bar"}var G=j%2==1;return this._optionsService.options.cursorBlink=G,!0},B.prototype.setScrollRegion=function(F){var j,G=F.params[0]||1;return(F.length<2||(j=F.params[1])>this._bufferService.rows||j===0)&&(j=this._bufferService.rows),j>G&&(this._activeBuffer.scrollTop=G-1,this._activeBuffer.scrollBottom=j-1,this._setCursor(0,0)),!0},B.prototype.windowOptions=function(F){if(!M(F.params[0],this._optionsService.rawOptions.windowOptions))return!0;var j=F.length>1?F.params[1]:0;switch(F.params[0]){case 14:j!==2&&this._onRequestWindowsOptionsReport.fire(_.GET_WIN_SIZE_PIXELS);break;case 16:this._onRequestWindowsOptionsReport.fire(_.GET_CELL_SIZE_PIXELS);break;case 18:this._bufferService&&this._coreService.triggerDataEvent(v.C0.ESC+"[8;"+this._bufferService.rows+";"+this._bufferService.cols+"t");break;case 22:j!==0&&j!==2||(this._windowTitleStack.push(this._windowTitle),this._windowTitleStack.length>10&&this._windowTitleStack.shift()),j!==0&&j!==1||(this._iconNameStack.push(this._iconName),this._iconNameStack.length>10&&this._iconNameStack.shift());break;case 23:j!==0&&j!==2||this._windowTitleStack.length&&this.setTitle(this._windowTitleStack.pop()),j!==0&&j!==1||this._iconNameStack.length&&this.setIconName(this._iconNameStack.pop())}return!0},B.prototype.saveCursor=function(F){return this._activeBuffer.savedX=this._activeBuffer.x,this._activeBuffer.savedY=this._activeBuffer.ybase+this._activeBuffer.y,this._activeBuffer.savedCurAttrData.fg=this._curAttrData.fg,this._activeBuffer.savedCurAttrData.bg=this._curAttrData.bg,this._activeBuffer.savedCharset=this._charsetService.charset,!0},B.prototype.restoreCursor=function(F){return this._activeBuffer.x=this._activeBuffer.savedX||0,this._activeBuffer.y=Math.max(this._activeBuffer.savedY-this._activeBuffer.ybase,0),this._curAttrData.fg=this._activeBuffer.savedCurAttrData.fg,this._curAttrData.bg=this._activeBuffer.savedCurAttrData.bg,this._charsetService.charset=this._savedCharset,this._activeBuffer.savedCharset&&(this._charsetService.charset=this._activeBuffer.savedCharset),this._restrictCursor(),!0},B.prototype.setTitle=function(F){return this._windowTitle=F,this._onTitleChange.fire(F),!0},B.prototype.setIconName=function(F){return this._iconName=F,!0},B.prototype.setOrReportIndexedColor=function(F){for(var j=[],G=F.split(";");G.length>1;){var $=G.shift(),ne=G.shift();if(/^\d+$/.exec($)){var ie=parseInt($);if(0<=ie&&ie<256)if(ne==="?")j.push({type:0,index:ie});else{var be=(0,T.parseColor)(ne);be&&j.push({type:1,index:ie,color:be})}}}return j.length&&this._onColor.fire(j),!0},B.prototype._setOrReportSpecialColor=function(F,j){for(var G=F.split(";"),$=0;$=this._specialColors.length);++$,++j)if(G[$]==="?")this._onColor.fire([{type:0,index:this._specialColors[j]}]);else{var ne=(0,T.parseColor)(G[$]);ne&&this._onColor.fire([{type:1,index:this._specialColors[j],color:ne}])}return!0},B.prototype.setOrReportFgColor=function(F){return this._setOrReportSpecialColor(F,0)},B.prototype.setOrReportBgColor=function(F){return this._setOrReportSpecialColor(F,1)},B.prototype.setOrReportCursorColor=function(F){return this._setOrReportSpecialColor(F,2)},B.prototype.restoreIndexedColor=function(F){if(!F)return this._onColor.fire([{type:2}]),!0;for(var j=[],G=F.split(";"),$=0;$=this._bufferService.rows&&(this._activeBuffer.y=this._bufferService.rows-1),this._restrictCursor(),!0},B.prototype.tabSet=function(){return this._activeBuffer.tabs[this._activeBuffer.x]=!0,!0},B.prototype.reverseIndex=function(){if(this._restrictCursor(),this._activeBuffer.y===this._activeBuffer.scrollTop){var F=this._activeBuffer.scrollBottom-this._activeBuffer.scrollTop;this._activeBuffer.lines.shiftElements(this._activeBuffer.ybase+this._activeBuffer.y,F,1),this._activeBuffer.lines.set(this._activeBuffer.ybase+this._activeBuffer.y,this._activeBuffer.getBlankLine(this._eraseAttrData())),this._dirtyRowService.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom)}else this._activeBuffer.y--,this._restrictCursor();return!0},B.prototype.fullReset=function(){return this._parser.reset(),this._onRequestReset.fire(),!0},B.prototype.reset=function(){this._curAttrData=d.DEFAULT_ATTR_DATA.clone(),this._eraseAttrDataInternal=d.DEFAULT_ATTR_DATA.clone()},B.prototype._eraseAttrData=function(){return this._eraseAttrDataInternal.bg&=-67108864,this._eraseAttrDataInternal.bg|=67108863&this._curAttrData.bg,this._eraseAttrDataInternal},B.prototype.setgLevel=function(F){return this._charsetService.setgLevel(F),!0},B.prototype.screenAlignmentPattern=function(){var F=new l.CellData;F.content=1<<22|"E".charCodeAt(0),F.fg=this._curAttrData.fg,F.bg=this._curAttrData.bg,this._setCursor(0,0);for(var j=0;j{Object.defineProperty(f,"__esModule",{value:!0}),f.getDisposeArrayDisposable=f.disposeArray=f.Disposable=void 0;var L=function(){function m(){this._disposables=[],this._isDisposed=!1}return m.prototype.dispose=function(){this._isDisposed=!0;for(var _=0,v=this._disposables;_{Object.defineProperty(f,"__esModule",{value:!0}),f.isLinux=f.isWindows=f.isIphone=f.isIpad=f.isMac=f.isSafari=f.isLegacyEdge=f.isFirefox=void 0;var L=typeof navigator>"u",y=L?"node":navigator.userAgent,m=L?"node":navigator.platform;f.isFirefox=y.includes("Firefox"),f.isLegacyEdge=y.includes("Edge"),f.isSafari=/^((?!chrome|android).)*safari/i.test(y),f.isMac=["Macintosh","MacIntel","MacPPC","Mac68K"].includes(m),f.isIpad=m==="iPad",f.isIphone=m==="iPhone",f.isWindows=["Windows","Win16","Win32","WinCE"].includes(m),f.isLinux=m.indexOf("Linux")>=0},8273:(E,f)=>{function L(y,m,_,v){if(_===void 0&&(_=0),v===void 0&&(v=y.length),_>=y.length)return y;_=(y.length+_)%y.length,v=v>=y.length?y.length:(y.length+v)%y.length;for(var A=_;A{Object.defineProperty(f,"__esModule",{value:!0}),f.updateWindowsModeWrappedState=void 0;var y=L(643);f.updateWindowsModeWrappedState=function(m){var _=m.buffer.lines.get(m.buffer.ybase+m.buffer.y-1),v=_?.get(m.cols-1),A=m.buffer.lines.get(m.buffer.ybase+m.buffer.y);A&&v&&(A.isWrapped=v[y.CHAR_DATA_CODE_INDEX]!==y.NULL_CELL_CODE&&v[y.CHAR_DATA_CODE_INDEX]!==y.WHITESPACE_CELL_CODE)}},3734:(E,f)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.ExtendedAttrs=f.AttributeData=void 0;var L=function(){function m(){this.fg=0,this.bg=0,this.extended=new y}return m.toColorRGB=function(_){return[_>>>16&255,_>>>8&255,255&_]},m.fromColorRGB=function(_){return(255&_[0])<<16|(255&_[1])<<8|255&_[2]},m.prototype.clone=function(){var _=new m;return _.fg=this.fg,_.bg=this.bg,_.extended=this.extended.clone(),_},m.prototype.isInverse=function(){return 67108864&this.fg},m.prototype.isBold=function(){return 134217728&this.fg},m.prototype.isUnderline=function(){return 268435456&this.fg},m.prototype.isBlink=function(){return 536870912&this.fg},m.prototype.isInvisible=function(){return 1073741824&this.fg},m.prototype.isItalic=function(){return 67108864&this.bg},m.prototype.isDim=function(){return 134217728&this.bg},m.prototype.isStrikethrough=function(){return 2147483648&this.fg},m.prototype.getFgColorMode=function(){return 50331648&this.fg},m.prototype.getBgColorMode=function(){return 50331648&this.bg},m.prototype.isFgRGB=function(){return(50331648&this.fg)==50331648},m.prototype.isBgRGB=function(){return(50331648&this.bg)==50331648},m.prototype.isFgPalette=function(){return(50331648&this.fg)==16777216||(50331648&this.fg)==33554432},m.prototype.isBgPalette=function(){return(50331648&this.bg)==16777216||(50331648&this.bg)==33554432},m.prototype.isFgDefault=function(){return(50331648&this.fg)==0},m.prototype.isBgDefault=function(){return(50331648&this.bg)==0},m.prototype.isAttributeDefault=function(){return this.fg===0&&this.bg===0},m.prototype.getFgColor=function(){switch(50331648&this.fg){case 16777216:case 33554432:return 255&this.fg;case 50331648:return 16777215&this.fg;default:return-1}},m.prototype.getBgColor=function(){switch(50331648&this.bg){case 16777216:case 33554432:return 255&this.bg;case 50331648:return 16777215&this.bg;default:return-1}},m.prototype.hasExtendedAttrs=function(){return 268435456&this.bg},m.prototype.updateExtended=function(){this.extended.isEmpty()?this.bg&=-268435457:this.bg|=268435456},m.prototype.getUnderlineColor=function(){if(268435456&this.bg&&~this.extended.underlineColor)switch(50331648&this.extended.underlineColor){case 16777216:case 33554432:return 255&this.extended.underlineColor;case 50331648:return 16777215&this.extended.underlineColor;default:return this.getFgColor()}return this.getFgColor()},m.prototype.getUnderlineColorMode=function(){return 268435456&this.bg&&~this.extended.underlineColor?50331648&this.extended.underlineColor:this.getFgColorMode()},m.prototype.isUnderlineColorRGB=function(){return 268435456&this.bg&&~this.extended.underlineColor?(50331648&this.extended.underlineColor)==50331648:this.isFgRGB()},m.prototype.isUnderlineColorPalette=function(){return 268435456&this.bg&&~this.extended.underlineColor?(50331648&this.extended.underlineColor)==16777216||(50331648&this.extended.underlineColor)==33554432:this.isFgPalette()},m.prototype.isUnderlineColorDefault=function(){return 268435456&this.bg&&~this.extended.underlineColor?(50331648&this.extended.underlineColor)==0:this.isFgDefault()},m.prototype.getUnderlineStyle=function(){return 268435456&this.fg?268435456&this.bg?this.extended.underlineStyle:1:0},m}();f.AttributeData=L;var y=function(){function m(_,v){_===void 0&&(_=0),v===void 0&&(v=-1),this.underlineStyle=_,this.underlineColor=v}return m.prototype.clone=function(){return new m(this.underlineStyle,this.underlineColor)},m.prototype.isEmpty=function(){return this.underlineStyle===0},m}();f.ExtendedAttrs=y},9092:(E,f,L)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.BufferStringIterator=f.Buffer=f.MAX_BUFFER_SIZE=void 0;var y=L(6349),m=L(8437),_=L(511),v=L(643),A=L(4634),w=L(4863),c=L(7116),p=L(3734);f.MAX_BUFFER_SIZE=4294967295;var C=function(){function s(o,l,a){this._hasScrollback=o,this._optionsService=l,this._bufferService=a,this.ydisp=0,this.ybase=0,this.y=0,this.x=0,this.savedY=0,this.savedX=0,this.savedCurAttrData=m.DEFAULT_ATTR_DATA.clone(),this.savedCharset=c.DEFAULT_CHARSET,this.markers=[],this._nullCell=_.CellData.fromCharData([0,v.NULL_CELL_CHAR,v.NULL_CELL_WIDTH,v.NULL_CELL_CODE]),this._whitespaceCell=_.CellData.fromCharData([0,v.WHITESPACE_CELL_CHAR,v.WHITESPACE_CELL_WIDTH,v.WHITESPACE_CELL_CODE]),this._isClearing=!1,this._cols=this._bufferService.cols,this._rows=this._bufferService.rows,this.lines=new y.CircularList(this._getCorrectBufferLength(this._rows)),this.scrollTop=0,this.scrollBottom=this._rows-1,this.setupTabStops()}return s.prototype.getNullCell=function(o){return o?(this._nullCell.fg=o.fg,this._nullCell.bg=o.bg,this._nullCell.extended=o.extended):(this._nullCell.fg=0,this._nullCell.bg=0,this._nullCell.extended=new p.ExtendedAttrs),this._nullCell},s.prototype.getWhitespaceCell=function(o){return o?(this._whitespaceCell.fg=o.fg,this._whitespaceCell.bg=o.bg,this._whitespaceCell.extended=o.extended):(this._whitespaceCell.fg=0,this._whitespaceCell.bg=0,this._whitespaceCell.extended=new p.ExtendedAttrs),this._whitespaceCell},s.prototype.getBlankLine=function(o,l){return new m.BufferLine(this._bufferService.cols,this.getNullCell(o),l)},Object.defineProperty(s.prototype,"hasScrollback",{get:function(){return this._hasScrollback&&this.lines.maxLength>this._rows},enumerable:!1,configurable:!0}),Object.defineProperty(s.prototype,"isCursorInViewport",{get:function(){var o=this.ybase+this.y-this.ydisp;return o>=0&&of.MAX_BUFFER_SIZE?f.MAX_BUFFER_SIZE:l},s.prototype.fillViewportRows=function(o){if(this.lines.length===0){o===void 0&&(o=m.DEFAULT_ATTR_DATA);for(var l=this._rows;l--;)this.lines.push(this.getBlankLine(o))}},s.prototype.clear=function(){this.ydisp=0,this.ybase=0,this.y=0,this.x=0,this.lines=new y.CircularList(this._getCorrectBufferLength(this._rows)),this.scrollTop=0,this.scrollBottom=this._rows-1,this.setupTabStops()},s.prototype.resize=function(o,l){var a=this.getNullCell(m.DEFAULT_ATTR_DATA),u=this._getCorrectBufferLength(l);if(u>this.lines.maxLength&&(this.lines.maxLength=u),this.lines.length>0){if(this._cols0&&this.lines.length<=this.ybase+this.y+b+1?(this.ybase--,b++,this.ydisp>0&&this.ydisp--):this.lines.push(new m.BufferLine(o,a)));else for(T=this._rows;T>l;T--)this.lines.length>l+this.ybase&&(this.lines.length>this.ybase+this.y+1?this.lines.pop():(this.ybase++,this.ydisp++));if(u0&&(this.lines.trimStart(R),this.ybase=Math.max(this.ybase-R,0),this.ydisp=Math.max(this.ydisp-R,0),this.savedY=Math.max(this.savedY-R,0)),this.lines.maxLength=u}this.x=Math.min(this.x,o-1),this.y=Math.min(this.y,l-1),b&&(this.y+=b),this.savedX=Math.min(this.savedX,o-1),this.scrollTop=0}if(this.scrollBottom=l-1,this._isReflowEnabled&&(this._reflow(o,l),this._cols>o))for(g=0;gthis._cols?this._reflowLarger(o,l):this._reflowSmaller(o,l))},s.prototype._reflowLarger=function(o,l){var a=(0,A.reflowLargerGetLinesToRemove)(this.lines,this._cols,o,this.ybase+this.y,this.getNullCell(m.DEFAULT_ATTR_DATA));if(a.length>0){var u=(0,A.reflowLargerCreateNewLayout)(this.lines,a);(0,A.reflowLargerApplyNewLayout)(this.lines,u.layout),this._reflowLargerAdjustViewport(o,l,u.countRemoved)}},s.prototype._reflowLargerAdjustViewport=function(o,l,a){for(var u=this.getNullCell(m.DEFAULT_ATTR_DATA),g=a;g-- >0;)this.ybase===0?(this.y>0&&this.y--,this.lines.length=0;b--){var T=this.lines.get(b);if(!(!T||!T.isWrapped&&T.getTrimmedLength()<=o)){for(var R=[T];T.isWrapped&&b>0;)T=this.lines.get(--b),R.unshift(T);var k=this.ybase+this.y;if(!(k>=b&&k0&&(u.push({start:b+R.length+g,newLines:B}),g+=B.length),R.push.apply(R,B);var G=D.length-1,$=D[G];$===0&&($=D[--G]);for(var ne=R.length-W-1,ie=N;ne>=0;){var be=Math.min(ie,$);if(R[G]===void 0)break;if(R[G].copyCellsFrom(R[ne],ie-be,$-be,be,!0),($-=be)==0&&($=D[--G]),(ie-=be)==0){ne--;var ve=Math.max(ne,0);ie=(0,A.getWrappedLineTrimmedLength)(R,ve,this._cols)}}for(F=0;F0;)this.ybase===0?this.y0){var U=[],ee=[];for(F=0;F=0;F--)if(Se&&Se.start>Y+fe){for(var Ce=Se.newLines.length-1;Ce>=0;Ce--)this.lines.set(F--,Se.newLines[Ce]);F++,U.push({index:Y+1,amount:Se.newLines.length}),fe+=Se.newLines.length,Se=u[++K]}else this.lines.set(F,ee[Y--]);var De=0;for(F=U.length-1;F>=0;F--)U[F].index+=De,this.lines.onInsertEmitter.fire(U[F]),De+=U[F].amount;var Fe=Math.max(0,q+g-this.lines.maxLength);Fe>0&&this.lines.onTrimEmitter.fire(Fe)}},s.prototype.stringIndexToBufferIndex=function(o,l,a){for(a===void 0&&(a=!1);l;){var u=this.lines.get(o);if(!u)return[-1,-1];for(var g=a?u.getTrimmedLength():u.length,b=0;b0&&this.lines.get(l).isWrapped;)l--;for(;a+10;);return o>=this._cols?this._cols-1:o<0?0:o},s.prototype.nextStop=function(o){for(o==null&&(o=this.x);!this.tabs[++o]&&o=this._cols?this._cols-1:o<0?0:o},s.prototype.clearMarkers=function(o){if(this._isClearing=!0,o!==void 0)for(var l=0;l=u.index&&(a.line+=u.amount)})),a.register(this.lines.onDelete(function(u){a.line>=u.index&&a.lineu.index&&(a.line-=u.amount)})),a.register(a.onDispose(function(){return l._removeMarker(a)})),a},s.prototype._removeMarker=function(o){this._isClearing||this.markers.splice(this.markers.indexOf(o),1)},s.prototype.iterator=function(o,l,a,u,g){return new d(this,o,l,a,u,g)},s}();f.Buffer=C;var d=function(){function s(o,l,a,u,g,b){a===void 0&&(a=0),u===void 0&&(u=o.lines.length),g===void 0&&(g=0),b===void 0&&(b=0),this._buffer=o,this._trimRight=l,this._startIndex=a,this._endIndex=u,this._startOverscan=g,this._endOverscan=b,this._startIndex<0&&(this._startIndex=0),this._endIndex>this._buffer.lines.length&&(this._endIndex=this._buffer.lines.length),this._current=this._startIndex}return s.prototype.hasNext=function(){return this._currentthis._endIndex+this._endOverscan&&(o.last=this._endIndex+this._endOverscan),o.first=Math.max(o.first,0),o.last=Math.min(o.last,this._buffer.lines.length);for(var l="",a=o.first;a<=o.last;++a)l+=this._buffer.translateBufferLineToString(a,this._trimRight);return this._current=o.last+1,{range:o,content:l}},s}();f.BufferStringIterator=d},8437:(E,f,L)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.BufferLine=f.DEFAULT_ATTR_DATA=void 0;var y=L(482),m=L(643),_=L(511),v=L(3734);f.DEFAULT_ATTR_DATA=Object.freeze(new v.AttributeData);var A=function(){function w(c,p,C){C===void 0&&(C=!1),this.isWrapped=C,this._combined={},this._extendedAttrs={},this._data=new Uint32Array(3*c);for(var d=p||_.CellData.fromCharData([0,m.NULL_CELL_CHAR,m.NULL_CELL_WIDTH,m.NULL_CELL_CODE]),s=0;s>22,2097152&p?this._combined[c].charCodeAt(this._combined[c].length-1):C]},w.prototype.set=function(c,p){this._data[3*c+1]=p[m.CHAR_DATA_ATTR_INDEX],p[m.CHAR_DATA_CHAR_INDEX].length>1?(this._combined[c]=p[1],this._data[3*c+0]=2097152|c|p[m.CHAR_DATA_WIDTH_INDEX]<<22):this._data[3*c+0]=p[m.CHAR_DATA_CHAR_INDEX].charCodeAt(0)|p[m.CHAR_DATA_WIDTH_INDEX]<<22},w.prototype.getWidth=function(c){return this._data[3*c+0]>>22},w.prototype.hasWidth=function(c){return 12582912&this._data[3*c+0]},w.prototype.getFg=function(c){return this._data[3*c+1]},w.prototype.getBg=function(c){return this._data[3*c+2]},w.prototype.hasContent=function(c){return 4194303&this._data[3*c+0]},w.prototype.getCodePoint=function(c){var p=this._data[3*c+0];return 2097152&p?this._combined[c].charCodeAt(this._combined[c].length-1):2097151&p},w.prototype.isCombined=function(c){return 2097152&this._data[3*c+0]},w.prototype.getString=function(c){var p=this._data[3*c+0];return 2097152&p?this._combined[c]:2097151&p?(0,y.stringFromCodePoint)(2097151&p):""},w.prototype.loadCell=function(c,p){var C=3*c;return p.content=this._data[C+0],p.fg=this._data[C+1],p.bg=this._data[C+2],2097152&p.content&&(p.combinedData=this._combined[c]),268435456&p.bg&&(p.extended=this._extendedAttrs[c]),p},w.prototype.setCell=function(c,p){2097152&p.content&&(this._combined[c]=p.combinedData),268435456&p.bg&&(this._extendedAttrs[c]=p.extended),this._data[3*c+0]=p.content,this._data[3*c+1]=p.fg,this._data[3*c+2]=p.bg},w.prototype.setCellFromCodePoint=function(c,p,C,d,s,o){268435456&s&&(this._extendedAttrs[c]=o),this._data[3*c+0]=p|C<<22,this._data[3*c+1]=d,this._data[3*c+2]=s},w.prototype.addCodepointToCell=function(c,p){var C=this._data[3*c+0];2097152&C?this._combined[c]+=(0,y.stringFromCodePoint)(p):(2097151&C?(this._combined[c]=(0,y.stringFromCodePoint)(2097151&C)+(0,y.stringFromCodePoint)(p),C&=-2097152,C|=2097152):C=p|1<<22,this._data[3*c+0]=C)},w.prototype.insertCells=function(c,p,C,d){if((c%=this.length)&&this.getWidth(c-1)===2&&this.setCellFromCodePoint(c-1,0,1,d?.fg||0,d?.bg||0,d?.extended||new v.ExtendedAttrs),p=0;--o)this.setCell(c+p+o,this.loadCell(c+o,s));for(o=0;othis.length){var C=new Uint32Array(3*c);this.length&&(3*c=c&&delete this._combined[o]}}else this._data=new Uint32Array(0),this._combined={};this.length=c}},w.prototype.fill=function(c){this._combined={},this._extendedAttrs={};for(var p=0;p=0;--c)if(4194303&this._data[3*c+0])return c+(this._data[3*c+0]>>22);return 0},w.prototype.copyCellsFrom=function(c,p,C,d,s){var o=c._data;if(s)for(var l=d-1;l>=0;l--)for(var a=0;a<3;a++)this._data[3*(C+l)+a]=o[3*(p+l)+a];else for(l=0;l=p&&(this._combined[g-p+C]=c._combined[g])}},w.prototype.translateToString=function(c,p,C){c===void 0&&(c=!1),p===void 0&&(p=0),C===void 0&&(C=this.length),c&&(C=Math.min(C,this.getTrimmedLength()));for(var d="";p>22||1}return d},w}();f.BufferLine=A},4841:(E,f)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.getRangeLength=void 0,f.getRangeLength=function(L,y){if(L.start.y>L.end.y)throw new Error("Buffer range end ("+L.end.x+", "+L.end.y+") cannot be before start ("+L.start.x+", "+L.start.y+")");return y*(L.end.y-L.start.y)+(L.end.x-L.start.x+1)}},4634:(E,f)=>{function L(y,m,_){if(m===y.length-1)return y[m].getTrimmedLength();var v=!y[m].hasContent(_-1)&&y[m].getWidth(_-1)===1,A=y[m+1].getWidth(0)===2;return v&&A?_-1:_}Object.defineProperty(f,"__esModule",{value:!0}),f.getWrappedLineTrimmedLength=f.reflowSmallerGetNewLineLengths=f.reflowLargerApplyNewLayout=f.reflowLargerCreateNewLayout=f.reflowLargerGetLinesToRemove=void 0,f.reflowLargerGetLinesToRemove=function(y,m,_,v,A){for(var w=[],c=0;c=c&&v0&&(k>s||d[k].getTrimmedLength()===0);k--)R++;R>0&&(w.push(c+d.length-R),w.push(R)),c+=d.length-1}}}return w},f.reflowLargerCreateNewLayout=function(y,m){for(var _=[],v=0,A=m[v],w=0,c=0;cC&&(w-=C,c++);var d=y[c].getWidth(w-1)===2;d&&w--;var s=d?_-1:_;v.push(s),p+=s}return v},f.getWrappedLineTrimmedLength=L},5295:function(E,f,L){var y,m=this&&this.__extends||(y=function(w,c){return y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(p,C){p.__proto__=C}||function(p,C){for(var d in C)Object.prototype.hasOwnProperty.call(C,d)&&(p[d]=C[d])},y(w,c)},function(w,c){if(typeof c!="function"&&c!==null)throw new TypeError("Class extends value "+String(c)+" is not a constructor or null");function p(){this.constructor=w}y(w,c),w.prototype=c===null?Object.create(c):(p.prototype=c.prototype,new p)});Object.defineProperty(f,"__esModule",{value:!0}),f.BufferSet=void 0;var _=L(9092),v=L(8460),A=function(w){function c(p,C){var d=w.call(this)||this;return d._optionsService=p,d._bufferService=C,d._onBufferActivate=d.register(new v.EventEmitter),d.reset(),d}return m(c,w),Object.defineProperty(c.prototype,"onBufferActivate",{get:function(){return this._onBufferActivate.event},enumerable:!1,configurable:!0}),c.prototype.reset=function(){this._normal=new _.Buffer(!0,this._optionsService,this._bufferService),this._normal.fillViewportRows(),this._alt=new _.Buffer(!1,this._optionsService,this._bufferService),this._activeBuffer=this._normal,this._onBufferActivate.fire({activeBuffer:this._normal,inactiveBuffer:this._alt}),this.setupTabStops()},Object.defineProperty(c.prototype,"alt",{get:function(){return this._alt},enumerable:!1,configurable:!0}),Object.defineProperty(c.prototype,"active",{get:function(){return this._activeBuffer},enumerable:!1,configurable:!0}),Object.defineProperty(c.prototype,"normal",{get:function(){return this._normal},enumerable:!1,configurable:!0}),c.prototype.activateNormalBuffer=function(){this._activeBuffer!==this._normal&&(this._normal.x=this._alt.x,this._normal.y=this._alt.y,this._alt.clear(),this._activeBuffer=this._normal,this._onBufferActivate.fire({activeBuffer:this._normal,inactiveBuffer:this._alt}))},c.prototype.activateAltBuffer=function(p){this._activeBuffer!==this._alt&&(this._alt.fillViewportRows(p),this._alt.x=this._normal.x,this._alt.y=this._normal.y,this._activeBuffer=this._alt,this._onBufferActivate.fire({activeBuffer:this._alt,inactiveBuffer:this._normal}))},c.prototype.resize=function(p,C){this._normal.resize(p,C),this._alt.resize(p,C)},c.prototype.setupTabStops=function(p){this._normal.setupTabStops(p),this._alt.setupTabStops(p)},c}(L(844).Disposable);f.BufferSet=A},511:function(E,f,L){var y,m=this&&this.__extends||(y=function(c,p){return y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(C,d){C.__proto__=d}||function(C,d){for(var s in d)Object.prototype.hasOwnProperty.call(d,s)&&(C[s]=d[s])},y(c,p)},function(c,p){if(typeof p!="function"&&p!==null)throw new TypeError("Class extends value "+String(p)+" is not a constructor or null");function C(){this.constructor=c}y(c,p),c.prototype=p===null?Object.create(p):(C.prototype=p.prototype,new C)});Object.defineProperty(f,"__esModule",{value:!0}),f.CellData=void 0;var _=L(482),v=L(643),A=L(3734),w=function(c){function p(){var C=c!==null&&c.apply(this,arguments)||this;return C.content=0,C.fg=0,C.bg=0,C.extended=new A.ExtendedAttrs,C.combinedData="",C}return m(p,c),p.fromCharData=function(C){var d=new p;return d.setFromCharData(C),d},p.prototype.isCombined=function(){return 2097152&this.content},p.prototype.getWidth=function(){return this.content>>22},p.prototype.getChars=function(){return 2097152&this.content?this.combinedData:2097151&this.content?(0,_.stringFromCodePoint)(2097151&this.content):""},p.prototype.getCode=function(){return this.isCombined()?this.combinedData.charCodeAt(this.combinedData.length-1):2097151&this.content},p.prototype.setFromCharData=function(C){this.fg=C[v.CHAR_DATA_ATTR_INDEX],this.bg=0;var d=!1;if(C[v.CHAR_DATA_CHAR_INDEX].length>2)d=!0;else if(C[v.CHAR_DATA_CHAR_INDEX].length===2){var s=C[v.CHAR_DATA_CHAR_INDEX].charCodeAt(0);if(55296<=s&&s<=56319){var o=C[v.CHAR_DATA_CHAR_INDEX].charCodeAt(1);56320<=o&&o<=57343?this.content=1024*(s-55296)+o-56320+65536|C[v.CHAR_DATA_WIDTH_INDEX]<<22:d=!0}else d=!0}else this.content=C[v.CHAR_DATA_CHAR_INDEX].charCodeAt(0)|C[v.CHAR_DATA_WIDTH_INDEX]<<22;d&&(this.combinedData=C[v.CHAR_DATA_CHAR_INDEX],this.content=2097152|C[v.CHAR_DATA_WIDTH_INDEX]<<22)},p.prototype.getAsCharData=function(){return[this.fg,this.getChars(),this.getWidth(),this.getCode()]},p}(A.AttributeData);f.CellData=w},643:(E,f)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.WHITESPACE_CELL_CODE=f.WHITESPACE_CELL_WIDTH=f.WHITESPACE_CELL_CHAR=f.NULL_CELL_CODE=f.NULL_CELL_WIDTH=f.NULL_CELL_CHAR=f.CHAR_DATA_CODE_INDEX=f.CHAR_DATA_WIDTH_INDEX=f.CHAR_DATA_CHAR_INDEX=f.CHAR_DATA_ATTR_INDEX=f.DEFAULT_ATTR=f.DEFAULT_COLOR=void 0,f.DEFAULT_COLOR=256,f.DEFAULT_ATTR=256|f.DEFAULT_COLOR<<9,f.CHAR_DATA_ATTR_INDEX=0,f.CHAR_DATA_CHAR_INDEX=1,f.CHAR_DATA_WIDTH_INDEX=2,f.CHAR_DATA_CODE_INDEX=3,f.NULL_CELL_CHAR="",f.NULL_CELL_WIDTH=1,f.NULL_CELL_CODE=0,f.WHITESPACE_CELL_CHAR=" ",f.WHITESPACE_CELL_WIDTH=1,f.WHITESPACE_CELL_CODE=32},4863:function(E,f,L){var y,m=this&&this.__extends||(y=function(A,w){return y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(c,p){c.__proto__=p}||function(c,p){for(var C in p)Object.prototype.hasOwnProperty.call(p,C)&&(c[C]=p[C])},y(A,w)},function(A,w){if(typeof w!="function"&&w!==null)throw new TypeError("Class extends value "+String(w)+" is not a constructor or null");function c(){this.constructor=A}y(A,w),A.prototype=w===null?Object.create(w):(c.prototype=w.prototype,new c)});Object.defineProperty(f,"__esModule",{value:!0}),f.Marker=void 0;var _=L(8460),v=function(A){function w(c){var p=A.call(this)||this;return p.line=c,p._id=w._nextId++,p.isDisposed=!1,p._onDispose=new _.EventEmitter,p}return m(w,A),Object.defineProperty(w.prototype,"id",{get:function(){return this._id},enumerable:!1,configurable:!0}),Object.defineProperty(w.prototype,"onDispose",{get:function(){return this._onDispose.event},enumerable:!1,configurable:!0}),w.prototype.dispose=function(){this.isDisposed||(this.isDisposed=!0,this.line=-1,this._onDispose.fire(),A.prototype.dispose.call(this))},w._nextId=1,w}(L(844).Disposable);f.Marker=v},7116:(E,f)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.DEFAULT_CHARSET=f.CHARSETS=void 0,f.CHARSETS={},f.DEFAULT_CHARSET=f.CHARSETS.B,f.CHARSETS[0]={"`":"\u25C6",a:"\u2592",b:"\u2409",c:"\u240C",d:"\u240D",e:"\u240A",f:"\xB0",g:"\xB1",h:"\u2424",i:"\u240B",j:"\u2518",k:"\u2510",l:"\u250C",m:"\u2514",n:"\u253C",o:"\u23BA",p:"\u23BB",q:"\u2500",r:"\u23BC",s:"\u23BD",t:"\u251C",u:"\u2524",v:"\u2534",w:"\u252C",x:"\u2502",y:"\u2264",z:"\u2265","{":"\u03C0","|":"\u2260","}":"\xA3","~":"\xB7"},f.CHARSETS.A={"#":"\xA3"},f.CHARSETS.B=void 0,f.CHARSETS[4]={"#":"\xA3","@":"\xBE","[":"ij","\\":"\xBD","]":"|","{":"\xA8","|":"f","}":"\xBC","~":"\xB4"},f.CHARSETS.C=f.CHARSETS[5]={"[":"\xC4","\\":"\xD6","]":"\xC5","^":"\xDC","`":"\xE9","{":"\xE4","|":"\xF6","}":"\xE5","~":"\xFC"},f.CHARSETS.R={"#":"\xA3","@":"\xE0","[":"\xB0","\\":"\xE7","]":"\xA7","{":"\xE9","|":"\xF9","}":"\xE8","~":"\xA8"},f.CHARSETS.Q={"@":"\xE0","[":"\xE2","\\":"\xE7","]":"\xEA","^":"\xEE","`":"\xF4","{":"\xE9","|":"\xF9","}":"\xE8","~":"\xFB"},f.CHARSETS.K={"@":"\xA7","[":"\xC4","\\":"\xD6","]":"\xDC","{":"\xE4","|":"\xF6","}":"\xFC","~":"\xDF"},f.CHARSETS.Y={"#":"\xA3","@":"\xA7","[":"\xB0","\\":"\xE7","]":"\xE9","`":"\xF9","{":"\xE0","|":"\xF2","}":"\xE8","~":"\xEC"},f.CHARSETS.E=f.CHARSETS[6]={"@":"\xC4","[":"\xC6","\\":"\xD8","]":"\xC5","^":"\xDC","`":"\xE4","{":"\xE6","|":"\xF8","}":"\xE5","~":"\xFC"},f.CHARSETS.Z={"#":"\xA3","@":"\xA7","[":"\xA1","\\":"\xD1","]":"\xBF","{":"\xB0","|":"\xF1","}":"\xE7"},f.CHARSETS.H=f.CHARSETS[7]={"@":"\xC9","[":"\xC4","\\":"\xD6","]":"\xC5","^":"\xDC","`":"\xE9","{":"\xE4","|":"\xF6","}":"\xE5","~":"\xFC"},f.CHARSETS["="]={"#":"\xF9","@":"\xE0","[":"\xE9","\\":"\xE7","]":"\xEA","^":"\xEE",_:"\xE8","`":"\xF4","{":"\xE4","|":"\xF6","}":"\xFC","~":"\xFB"}},2584:(E,f)=>{var L,y;Object.defineProperty(f,"__esModule",{value:!0}),f.C1=f.C0=void 0,(y=f.C0||(f.C0={})).NUL="\0",y.SOH="",y.STX="",y.ETX="",y.EOT="",y.ENQ="",y.ACK="",y.BEL="\x07",y.BS="\b",y.HT=" ",y.LF=` -`,y.VT="\v",y.FF="\f",y.CR="\r",y.SO="",y.SI="",y.DLE="",y.DC1="",y.DC2="",y.DC3="",y.DC4="",y.NAK="",y.SYN="",y.ETB="",y.CAN="",y.EM="",y.SUB="",y.ESC="\x1B",y.FS="",y.GS="",y.RS="",y.US="",y.SP=" ",y.DEL="\x7F",(L=f.C1||(f.C1={})).PAD="\x80",L.HOP="\x81",L.BPH="\x82",L.NBH="\x83",L.IND="\x84",L.NEL="\x85",L.SSA="\x86",L.ESA="\x87",L.HTS="\x88",L.HTJ="\x89",L.VTS="\x8A",L.PLD="\x8B",L.PLU="\x8C",L.RI="\x8D",L.SS2="\x8E",L.SS3="\x8F",L.DCS="\x90",L.PU1="\x91",L.PU2="\x92",L.STS="\x93",L.CCH="\x94",L.MW="\x95",L.SPA="\x96",L.EPA="\x97",L.SOS="\x98",L.SGCI="\x99",L.SCI="\x9A",L.CSI="\x9B",L.ST="\x9C",L.OSC="\x9D",L.PM="\x9E",L.APC="\x9F"},7399:(E,f,L)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.evaluateKeyboardEvent=void 0;var y=L(2584),m={48:["0",")"],49:["1","!"],50:["2","@"],51:["3","#"],52:["4","$"],53:["5","%"],54:["6","^"],55:["7","&"],56:["8","*"],57:["9","("],186:[";",":"],187:["=","+"],188:[",","<"],189:["-","_"],190:[".",">"],191:["/","?"],192:["`","~"],219:["[","{"],220:["\\","|"],221:["]","}"],222:["'",'"']};f.evaluateKeyboardEvent=function(_,v,A,w){var c={type:0,cancel:!1,key:void 0},p=(_.shiftKey?1:0)|(_.altKey?2:0)|(_.ctrlKey?4:0)|(_.metaKey?8:0);switch(_.keyCode){case 0:_.key==="UIKeyInputUpArrow"?c.key=v?y.C0.ESC+"OA":y.C0.ESC+"[A":_.key==="UIKeyInputLeftArrow"?c.key=v?y.C0.ESC+"OD":y.C0.ESC+"[D":_.key==="UIKeyInputRightArrow"?c.key=v?y.C0.ESC+"OC":y.C0.ESC+"[C":_.key==="UIKeyInputDownArrow"&&(c.key=v?y.C0.ESC+"OB":y.C0.ESC+"[B");break;case 8:if(_.shiftKey){c.key=y.C0.BS;break}if(_.altKey){c.key=y.C0.ESC+y.C0.DEL;break}c.key=y.C0.DEL;break;case 9:if(_.shiftKey){c.key=y.C0.ESC+"[Z";break}c.key=y.C0.HT,c.cancel=!0;break;case 13:c.key=_.altKey?y.C0.ESC+y.C0.CR:y.C0.CR,c.cancel=!0;break;case 27:c.key=y.C0.ESC,_.altKey&&(c.key=y.C0.ESC+y.C0.ESC),c.cancel=!0;break;case 37:if(_.metaKey)break;p?(c.key=y.C0.ESC+"[1;"+(p+1)+"D",c.key===y.C0.ESC+"[1;3D"&&(c.key=y.C0.ESC+(A?"b":"[1;5D"))):c.key=v?y.C0.ESC+"OD":y.C0.ESC+"[D";break;case 39:if(_.metaKey)break;p?(c.key=y.C0.ESC+"[1;"+(p+1)+"C",c.key===y.C0.ESC+"[1;3C"&&(c.key=y.C0.ESC+(A?"f":"[1;5C"))):c.key=v?y.C0.ESC+"OC":y.C0.ESC+"[C";break;case 38:if(_.metaKey)break;p?(c.key=y.C0.ESC+"[1;"+(p+1)+"A",A||c.key!==y.C0.ESC+"[1;3A"||(c.key=y.C0.ESC+"[1;5A")):c.key=v?y.C0.ESC+"OA":y.C0.ESC+"[A";break;case 40:if(_.metaKey)break;p?(c.key=y.C0.ESC+"[1;"+(p+1)+"B",A||c.key!==y.C0.ESC+"[1;3B"||(c.key=y.C0.ESC+"[1;5B")):c.key=v?y.C0.ESC+"OB":y.C0.ESC+"[B";break;case 45:_.shiftKey||_.ctrlKey||(c.key=y.C0.ESC+"[2~");break;case 46:c.key=p?y.C0.ESC+"[3;"+(p+1)+"~":y.C0.ESC+"[3~";break;case 36:c.key=p?y.C0.ESC+"[1;"+(p+1)+"H":v?y.C0.ESC+"OH":y.C0.ESC+"[H";break;case 35:c.key=p?y.C0.ESC+"[1;"+(p+1)+"F":v?y.C0.ESC+"OF":y.C0.ESC+"[F";break;case 33:_.shiftKey?c.type=2:c.key=y.C0.ESC+"[5~";break;case 34:_.shiftKey?c.type=3:c.key=y.C0.ESC+"[6~";break;case 112:c.key=p?y.C0.ESC+"[1;"+(p+1)+"P":y.C0.ESC+"OP";break;case 113:c.key=p?y.C0.ESC+"[1;"+(p+1)+"Q":y.C0.ESC+"OQ";break;case 114:c.key=p?y.C0.ESC+"[1;"+(p+1)+"R":y.C0.ESC+"OR";break;case 115:c.key=p?y.C0.ESC+"[1;"+(p+1)+"S":y.C0.ESC+"OS";break;case 116:c.key=p?y.C0.ESC+"[15;"+(p+1)+"~":y.C0.ESC+"[15~";break;case 117:c.key=p?y.C0.ESC+"[17;"+(p+1)+"~":y.C0.ESC+"[17~";break;case 118:c.key=p?y.C0.ESC+"[18;"+(p+1)+"~":y.C0.ESC+"[18~";break;case 119:c.key=p?y.C0.ESC+"[19;"+(p+1)+"~":y.C0.ESC+"[19~";break;case 120:c.key=p?y.C0.ESC+"[20;"+(p+1)+"~":y.C0.ESC+"[20~";break;case 121:c.key=p?y.C0.ESC+"[21;"+(p+1)+"~":y.C0.ESC+"[21~";break;case 122:c.key=p?y.C0.ESC+"[23;"+(p+1)+"~":y.C0.ESC+"[23~";break;case 123:c.key=p?y.C0.ESC+"[24;"+(p+1)+"~":y.C0.ESC+"[24~";break;default:if(!_.ctrlKey||_.shiftKey||_.altKey||_.metaKey)if(A&&!w||!_.altKey||_.metaKey)!A||_.altKey||_.ctrlKey||_.shiftKey||!_.metaKey?_.key&&!_.ctrlKey&&!_.altKey&&!_.metaKey&&_.keyCode>=48&&_.key.length===1?c.key=_.key:_.key&&_.ctrlKey&&_.key==="_"&&(c.key=y.C0.US):_.keyCode===65&&(c.type=1);else{var C=m[_.keyCode],d=C?.[_.shiftKey?1:0];if(d)c.key=y.C0.ESC+d;else if(_.keyCode>=65&&_.keyCode<=90){var s=_.ctrlKey?_.keyCode-64:_.keyCode+32;c.key=y.C0.ESC+String.fromCharCode(s)}}else _.keyCode>=65&&_.keyCode<=90?c.key=String.fromCharCode(_.keyCode-64):_.keyCode===32?c.key=y.C0.NUL:_.keyCode>=51&&_.keyCode<=55?c.key=String.fromCharCode(_.keyCode-51+27):_.keyCode===56?c.key=y.C0.DEL:_.keyCode===219?c.key=y.C0.ESC:_.keyCode===220?c.key=y.C0.FS:_.keyCode===221&&(c.key=y.C0.GS)}return c}},482:(E,f)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.Utf8ToUtf32=f.StringToUtf32=f.utf32ToString=f.stringFromCodePoint=void 0,f.stringFromCodePoint=function(m){return m>65535?(m-=65536,String.fromCharCode(55296+(m>>10))+String.fromCharCode(m%1024+56320)):String.fromCharCode(m)},f.utf32ToString=function(m,_,v){_===void 0&&(_=0),v===void 0&&(v=m.length);for(var A="",w=_;w65535?(c-=65536,A+=String.fromCharCode(55296+(c>>10))+String.fromCharCode(c%1024+56320)):A+=String.fromCharCode(c)}return A};var L=function(){function m(){this._interim=0}return m.prototype.clear=function(){this._interim=0},m.prototype.decode=function(_,v){var A=_.length;if(!A)return 0;var w=0,c=0;this._interim&&(56320<=(d=_.charCodeAt(c++))&&d<=57343?v[w++]=1024*(this._interim-55296)+d-56320+65536:(v[w++]=this._interim,v[w++]=d),this._interim=0);for(var p=c;p=A)return this._interim=C,w;var d;56320<=(d=_.charCodeAt(p))&&d<=57343?v[w++]=1024*(C-55296)+d-56320+65536:(v[w++]=C,v[w++]=d)}else C!==65279&&(v[w++]=C)}return w},m}();f.StringToUtf32=L;var y=function(){function m(){this.interim=new Uint8Array(3)}return m.prototype.clear=function(){this.interim.fill(0)},m.prototype.decode=function(_,v){var A=_.length;if(!A)return 0;var w,c,p,C,d=0,s=0,o=0;if(this.interim[0]){var l=!1,a=this.interim[0];a&=(224&a)==192?31:(240&a)==224?15:7;for(var u=0,g=void 0;(g=63&this.interim[++u])&&u<4;)a<<=6,a|=g;for(var b=(224&this.interim[0])==192?2:(240&this.interim[0])==224?3:4,T=b-u;o=A)return 0;if((192&(g=_[o++]))!=128){o--,l=!0;break}this.interim[u++]=g,a<<=6,a|=63&g}l||(b===2?a<128?o--:v[d++]=a:b===3?a<2048||a>=55296&&a<=57343||a===65279||(v[d++]=a):a<65536||a>1114111||(v[d++]=a)),this.interim.fill(0)}for(var R=A-4,k=o;k=A)return this.interim[0]=w,d;if((192&(c=_[k++]))!=128){k--;continue}if((s=(31&w)<<6|63&c)<128){k--;continue}v[d++]=s}else if((240&w)==224){if(k>=A)return this.interim[0]=w,d;if((192&(c=_[k++]))!=128){k--;continue}if(k>=A)return this.interim[0]=w,this.interim[1]=c,d;if((192&(p=_[k++]))!=128){k--;continue}if((s=(15&w)<<12|(63&c)<<6|63&p)<2048||s>=55296&&s<=57343||s===65279)continue;v[d++]=s}else if((248&w)==240){if(k>=A)return this.interim[0]=w,d;if((192&(c=_[k++]))!=128){k--;continue}if(k>=A)return this.interim[0]=w,this.interim[1]=c,d;if((192&(p=_[k++]))!=128){k--;continue}if(k>=A)return this.interim[0]=w,this.interim[1]=c,this.interim[2]=p,d;if((192&(C=_[k++]))!=128){k--;continue}if((s=(7&w)<<18|(63&c)<<12|(63&p)<<6|63&C)<65536||s>1114111)continue;v[d++]=s}}return d},m}();f.Utf8ToUtf32=y},225:(E,f,L)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.UnicodeV6=void 0;var y,m=L(8273),_=[[768,879],[1155,1158],[1160,1161],[1425,1469],[1471,1471],[1473,1474],[1476,1477],[1479,1479],[1536,1539],[1552,1557],[1611,1630],[1648,1648],[1750,1764],[1767,1768],[1770,1773],[1807,1807],[1809,1809],[1840,1866],[1958,1968],[2027,2035],[2305,2306],[2364,2364],[2369,2376],[2381,2381],[2385,2388],[2402,2403],[2433,2433],[2492,2492],[2497,2500],[2509,2509],[2530,2531],[2561,2562],[2620,2620],[2625,2626],[2631,2632],[2635,2637],[2672,2673],[2689,2690],[2748,2748],[2753,2757],[2759,2760],[2765,2765],[2786,2787],[2817,2817],[2876,2876],[2879,2879],[2881,2883],[2893,2893],[2902,2902],[2946,2946],[3008,3008],[3021,3021],[3134,3136],[3142,3144],[3146,3149],[3157,3158],[3260,3260],[3263,3263],[3270,3270],[3276,3277],[3298,3299],[3393,3395],[3405,3405],[3530,3530],[3538,3540],[3542,3542],[3633,3633],[3636,3642],[3655,3662],[3761,3761],[3764,3769],[3771,3772],[3784,3789],[3864,3865],[3893,3893],[3895,3895],[3897,3897],[3953,3966],[3968,3972],[3974,3975],[3984,3991],[3993,4028],[4038,4038],[4141,4144],[4146,4146],[4150,4151],[4153,4153],[4184,4185],[4448,4607],[4959,4959],[5906,5908],[5938,5940],[5970,5971],[6002,6003],[6068,6069],[6071,6077],[6086,6086],[6089,6099],[6109,6109],[6155,6157],[6313,6313],[6432,6434],[6439,6440],[6450,6450],[6457,6459],[6679,6680],[6912,6915],[6964,6964],[6966,6970],[6972,6972],[6978,6978],[7019,7027],[7616,7626],[7678,7679],[8203,8207],[8234,8238],[8288,8291],[8298,8303],[8400,8431],[12330,12335],[12441,12442],[43014,43014],[43019,43019],[43045,43046],[64286,64286],[65024,65039],[65056,65059],[65279,65279],[65529,65531]],v=[[68097,68099],[68101,68102],[68108,68111],[68152,68154],[68159,68159],[119143,119145],[119155,119170],[119173,119179],[119210,119213],[119362,119364],[917505,917505],[917536,917631],[917760,917999]],A=function(){function w(){if(this.version="6",!y){y=new Uint8Array(65536),(0,m.fill)(y,1),y[0]=0,(0,m.fill)(y,0,1,32),(0,m.fill)(y,0,127,160),(0,m.fill)(y,2,4352,4448),y[9001]=2,y[9002]=2,(0,m.fill)(y,2,11904,42192),y[12351]=1,(0,m.fill)(y,2,44032,55204),(0,m.fill)(y,2,63744,64256),(0,m.fill)(y,2,65040,65050),(0,m.fill)(y,2,65072,65136),(0,m.fill)(y,2,65280,65377),(0,m.fill)(y,2,65504,65511);for(var c=0;c<_.length;++c)(0,m.fill)(y,0,_[c][0],_[c][1]+1)}}return w.prototype.wcwidth=function(c){return c<32?0:c<127?1:c<65536?y[c]:function(p,C){var d,s=0,o=C.length-1;if(pC[o][1])return!1;for(;o>=s;)if(p>C[d=s+o>>1][1])s=d+1;else{if(!(p=131072&&c<=196605||c>=196608&&c<=262141?2:1},w}();f.UnicodeV6=A},5981:(E,f)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.WriteBuffer=void 0;var L=typeof queueMicrotask>"u"?function(m){Promise.resolve().then(m)}:queueMicrotask,y=function(){function m(_){this._action=_,this._writeBuffer=[],this._callbacks=[],this._pendingData=0,this._bufferOffset=0,this._isSyncWriting=!1,this._syncCalls=0}return m.prototype.writeSync=function(_,v){if(v!==void 0&&this._syncCalls>v)this._syncCalls=0;else if(this._pendingData+=_.length,this._writeBuffer.push(_),this._callbacks.push(void 0),this._syncCalls++,!this._isSyncWriting){var A;for(this._isSyncWriting=!0;A=this._writeBuffer.shift();){this._action(A);var w=this._callbacks.shift();w&&w()}this._pendingData=0,this._bufferOffset=2147483647,this._isSyncWriting=!1,this._syncCalls=0}},m.prototype.write=function(_,v){var A=this;if(this._pendingData>5e7)throw new Error("write data discarded, use flow control to avoid losing data");this._writeBuffer.length||(this._bufferOffset=0,setTimeout(function(){return A._innerWrite()})),this._pendingData+=_.length,this._writeBuffer.push(_),this._callbacks.push(v)},m.prototype._innerWrite=function(_,v){var A=this;_===void 0&&(_=0),v===void 0&&(v=!0);for(var w=_||Date.now();this._writeBuffer.length>this._bufferOffset;){var c=this._writeBuffer[this._bufferOffset],p=this._action(c,v);if(p)return void p.catch(function(d){return L(function(){throw d}),Promise.resolve(!1)}).then(function(d){return Date.now()-w>=12?setTimeout(function(){return A._innerWrite(0,d)}):A._innerWrite(w,d)});var C=this._callbacks[this._bufferOffset];if(C&&C(),this._bufferOffset++,this._pendingData-=c.length,Date.now()-w>=12)break}this._writeBuffer.length>this._bufferOffset?(this._bufferOffset>50&&(this._writeBuffer=this._writeBuffer.slice(this._bufferOffset),this._callbacks=this._callbacks.slice(this._bufferOffset),this._bufferOffset=0),setTimeout(function(){return A._innerWrite()})):(this._writeBuffer.length=0,this._callbacks.length=0,this._pendingData=0,this._bufferOffset=0)},m}();f.WriteBuffer=y},5941:(E,f)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.toRgbString=f.parseColor=void 0;var L=/^([\da-f]{1})\/([\da-f]{1})\/([\da-f]{1})$|^([\da-f]{2})\/([\da-f]{2})\/([\da-f]{2})$|^([\da-f]{3})\/([\da-f]{3})\/([\da-f]{3})$|^([\da-f]{4})\/([\da-f]{4})\/([\da-f]{4})$/,y=/^[\da-f]+$/;function m(_,v){var A=_.toString(16),w=A.length<2?"0"+A:A;switch(v){case 4:return A[0];case 8:return w;case 12:return(w+w).slice(0,3);default:return w+w}}f.parseColor=function(_){if(_){var v=_.toLowerCase();if(v.indexOf("rgb:")===0){v=v.slice(4);var A=L.exec(v);if(A){var w=A[1]?15:A[4]?255:A[7]?4095:65535;return[Math.round(parseInt(A[1]||A[4]||A[7]||A[10],16)/w*255),Math.round(parseInt(A[2]||A[5]||A[8]||A[11],16)/w*255),Math.round(parseInt(A[3]||A[6]||A[9]||A[12],16)/w*255)]}}else if(v.indexOf("#")===0&&(v=v.slice(1),y.exec(v)&&[3,6,9,12].includes(v.length))){for(var c=v.length/3,p=[0,0,0],C=0;C<3;++C){var d=parseInt(v.slice(c*C,c*C+c),16);p[C]=c===1?d<<4:c===2?d:c===3?d>>4:d>>8}return p}}},f.toRgbString=function(_,v){v===void 0&&(v=16);var A=_[0],w=_[1],c=_[2];return"rgb:"+m(A,v)+"/"+m(w,v)+"/"+m(c,v)}},5770:(E,f)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.PAYLOAD_LIMIT=void 0,f.PAYLOAD_LIMIT=1e7},6351:(E,f,L)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.DcsHandler=f.DcsParser=void 0;var y=L(482),m=L(8742),_=L(5770),v=[],A=function(){function p(){this._handlers=Object.create(null),this._active=v,this._ident=0,this._handlerFb=function(){},this._stack={paused:!1,loopPosition:0,fallThrough:!1}}return p.prototype.dispose=function(){this._handlers=Object.create(null),this._handlerFb=function(){},this._active=v},p.prototype.registerHandler=function(C,d){this._handlers[C]===void 0&&(this._handlers[C]=[]);var s=this._handlers[C];return s.push(d),{dispose:function(){var o=s.indexOf(d);o!==-1&&s.splice(o,1)}}},p.prototype.clearHandler=function(C){this._handlers[C]&&delete this._handlers[C]},p.prototype.setHandlerFallback=function(C){this._handlerFb=C},p.prototype.reset=function(){if(this._active.length)for(var C=this._stack.paused?this._stack.loopPosition-1:this._active.length-1;C>=0;--C)this._active[C].unhook(!1);this._stack.paused=!1,this._active=v,this._ident=0},p.prototype.hook=function(C,d){if(this.reset(),this._ident=C,this._active=this._handlers[C]||v,this._active.length)for(var s=this._active.length-1;s>=0;s--)this._active[s].hook(d);else this._handlerFb(this._ident,"HOOK",d)},p.prototype.put=function(C,d,s){if(this._active.length)for(var o=this._active.length-1;o>=0;o--)this._active[o].put(C,d,s);else this._handlerFb(this._ident,"PUT",(0,y.utf32ToString)(C,d,s))},p.prototype.unhook=function(C,d){if(d===void 0&&(d=!0),this._active.length){var s=!1,o=this._active.length-1,l=!1;if(this._stack.paused&&(o=this._stack.loopPosition-1,s=d,l=this._stack.fallThrough,this._stack.paused=!1),!l&&s===!1){for(;o>=0&&(s=this._active[o].unhook(C))!==!0;o--)if(s instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=o,this._stack.fallThrough=!1,s;o--}for(;o>=0;o--)if((s=this._active[o].unhook(!1))instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=o,this._stack.fallThrough=!0,s}else this._handlerFb(this._ident,"UNHOOK",C);this._active=v,this._ident=0},p}();f.DcsParser=A;var w=new m.Params;w.addParam(0);var c=function(){function p(C){this._handler=C,this._data="",this._params=w,this._hitLimit=!1}return p.prototype.hook=function(C){this._params=C.length>1||C.params[0]?C.clone():w,this._data="",this._hitLimit=!1},p.prototype.put=function(C,d,s){this._hitLimit||(this._data+=(0,y.utf32ToString)(C,d,s),this._data.length>_.PAYLOAD_LIMIT&&(this._data="",this._hitLimit=!0))},p.prototype.unhook=function(C){var d=this,s=!1;if(this._hitLimit)s=!1;else if(C&&(s=this._handler(this._data,this._params))instanceof Promise)return s.then(function(o){return d._params=w,d._data="",d._hitLimit=!1,o});return this._params=w,this._data="",this._hitLimit=!1,s},p}();f.DcsHandler=c},2015:function(E,f,L){var y,m=this&&this.__extends||(y=function(s,o){return y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(l,a){l.__proto__=a}||function(l,a){for(var u in a)Object.prototype.hasOwnProperty.call(a,u)&&(l[u]=a[u])},y(s,o)},function(s,o){if(typeof o!="function"&&o!==null)throw new TypeError("Class extends value "+String(o)+" is not a constructor or null");function l(){this.constructor=s}y(s,o),s.prototype=o===null?Object.create(o):(l.prototype=o.prototype,new l)});Object.defineProperty(f,"__esModule",{value:!0}),f.EscapeSequenceParser=f.VT500_TRANSITION_TABLE=f.TransitionTable=void 0;var _=L(844),v=L(8273),A=L(8742),w=L(6242),c=L(6351),p=function(){function s(o){this.table=new Uint8Array(o)}return s.prototype.setDefault=function(o,l){(0,v.fill)(this.table,o<<4|l)},s.prototype.add=function(o,l,a,u){this.table[l<<8|o]=a<<4|u},s.prototype.addMany=function(o,l,a,u){for(var g=0;g1)throw new Error("only one byte as prefix supported");if((u=l.prefix.charCodeAt(0))&&60>u||u>63)throw new Error("prefix must be in range 0x3c .. 0x3f")}if(l.intermediates){if(l.intermediates.length>2)throw new Error("only two bytes as intermediates are supported");for(var g=0;gb||b>47)throw new Error("intermediate must be in range 0x20 .. 0x2f");u<<=8,u|=b}}if(l.final.length!==1)throw new Error("final must be a single byte");var T=l.final.charCodeAt(0);if(a[0]>T||T>a[1])throw new Error("final must be in range "+a[0]+" .. "+a[1]);return(u<<=8)|T},o.prototype.identToString=function(l){for(var a=[];l;)a.push(String.fromCharCode(255&l)),l>>=8;return a.reverse().join("")},o.prototype.dispose=function(){this._csiHandlers=Object.create(null),this._executeHandlers=Object.create(null),this._escHandlers=Object.create(null),this._oscParser.dispose(),this._dcsParser.dispose()},o.prototype.setPrintHandler=function(l){this._printHandler=l},o.prototype.clearPrintHandler=function(){this._printHandler=this._printHandlerFb},o.prototype.registerEscHandler=function(l,a){var u=this._identifier(l,[48,126]);this._escHandlers[u]===void 0&&(this._escHandlers[u]=[]);var g=this._escHandlers[u];return g.push(a),{dispose:function(){var b=g.indexOf(a);b!==-1&&g.splice(b,1)}}},o.prototype.clearEscHandler=function(l){this._escHandlers[this._identifier(l,[48,126])]&&delete this._escHandlers[this._identifier(l,[48,126])]},o.prototype.setEscHandlerFallback=function(l){this._escHandlerFb=l},o.prototype.setExecuteHandler=function(l,a){this._executeHandlers[l.charCodeAt(0)]=a},o.prototype.clearExecuteHandler=function(l){this._executeHandlers[l.charCodeAt(0)]&&delete this._executeHandlers[l.charCodeAt(0)]},o.prototype.setExecuteHandlerFallback=function(l){this._executeHandlerFb=l},o.prototype.registerCsiHandler=function(l,a){var u=this._identifier(l);this._csiHandlers[u]===void 0&&(this._csiHandlers[u]=[]);var g=this._csiHandlers[u];return g.push(a),{dispose:function(){var b=g.indexOf(a);b!==-1&&g.splice(b,1)}}},o.prototype.clearCsiHandler=function(l){this._csiHandlers[this._identifier(l)]&&delete this._csiHandlers[this._identifier(l)]},o.prototype.setCsiHandlerFallback=function(l){this._csiHandlerFb=l},o.prototype.registerDcsHandler=function(l,a){return this._dcsParser.registerHandler(this._identifier(l),a)},o.prototype.clearDcsHandler=function(l){this._dcsParser.clearHandler(this._identifier(l))},o.prototype.setDcsHandlerFallback=function(l){this._dcsParser.setHandlerFallback(l)},o.prototype.registerOscHandler=function(l,a){return this._oscParser.registerHandler(l,a)},o.prototype.clearOscHandler=function(l){this._oscParser.clearHandler(l)},o.prototype.setOscHandlerFallback=function(l){this._oscParser.setHandlerFallback(l)},o.prototype.setErrorHandler=function(l){this._errorHandler=l},o.prototype.clearErrorHandler=function(){this._errorHandler=this._errorHandlerFb},o.prototype.reset=function(){this.currentState=this.initialState,this._oscParser.reset(),this._dcsParser.reset(),this._params.reset(),this._params.addParam(0),this._collect=0,this.precedingCodepoint=0,this._parseStack.state!==0&&(this._parseStack.state=2,this._parseStack.handlers=[])},o.prototype._preserveStack=function(l,a,u,g,b){this._parseStack.state=l,this._parseStack.handlers=a,this._parseStack.handlerPos=u,this._parseStack.transition=g,this._parseStack.chunkPos=b},o.prototype.parse=function(l,a,u){var g,b=0,T=0,R=0;if(this._parseStack.state)if(this._parseStack.state===2)this._parseStack.state=0,R=this._parseStack.chunkPos+1;else{if(u===void 0||this._parseStack.state===1)throw this._parseStack.state=1,new Error("improper continuation due to previous async handler, giving up parsing");var k=this._parseStack.handlers,M=this._parseStack.handlerPos-1;switch(this._parseStack.state){case 3:if(u===!1&&M>-1){for(;M>=0&&(g=k[M](this._params))!==!0;M--)if(g instanceof Promise)return this._parseStack.handlerPos=M,g}this._parseStack.handlers=[];break;case 4:if(u===!1&&M>-1){for(;M>=0&&(g=k[M]())!==!0;M--)if(g instanceof Promise)return this._parseStack.handlerPos=M,g}this._parseStack.handlers=[];break;case 6:if(b=l[this._parseStack.chunkPos],g=this._dcsParser.unhook(b!==24&&b!==26,u))return g;b===27&&(this._parseStack.transition|=1),this._params.reset(),this._params.addParam(0),this._collect=0;break;case 5:if(b=l[this._parseStack.chunkPos],g=this._oscParser.end(b!==24&&b!==26,u))return g;b===27&&(this._parseStack.transition|=1),this._params.reset(),this._params.addParam(0),this._collect=0}this._parseStack.state=0,R=this._parseStack.chunkPos+1,this.precedingCodepoint=0,this.currentState=15&this._parseStack.transition}for(var N=R;N>4){case 2:for(var D=N+1;;++D){if(D>=a||(b=l[D])<32||b>126&&b=a||(b=l[D])<32||b>126&&b=a||(b=l[D])<32||b>126&&b=a||(b=l[D])<32||b>126&&b=0&&(g=k[W](this._params))!==!0;W--)if(g instanceof Promise)return this._preserveStack(3,k,W,T,N),g;W<0&&this._csiHandlerFb(this._collect<<8|b,this._params),this.precedingCodepoint=0;break;case 8:do switch(b){case 59:this._params.addParam(0);break;case 58:this._params.addSubParam(-1);break;default:this._params.addDigit(b-48)}while(++N47&&b<60);N--;break;case 9:this._collect<<=8,this._collect|=b;break;case 10:for(var B=this._escHandlers[this._collect<<8|b],F=B?B.length-1:-1;F>=0&&(g=B[F]())!==!0;F--)if(g instanceof Promise)return this._preserveStack(4,B,F,T,N),g;F<0&&this._escHandlerFb(this._collect<<8|b),this.precedingCodepoint=0;break;case 11:this._params.reset(),this._params.addParam(0),this._collect=0;break;case 12:this._dcsParser.hook(this._collect<<8|b,this._params);break;case 13:for(var j=N+1;;++j)if(j>=a||(b=l[j])===24||b===26||b===27||b>127&&b=a||(b=l[G])<32||b>127&&b{Object.defineProperty(f,"__esModule",{value:!0}),f.OscHandler=f.OscParser=void 0;var y=L(5770),m=L(482),_=[],v=function(){function w(){this._state=0,this._active=_,this._id=-1,this._handlers=Object.create(null),this._handlerFb=function(){},this._stack={paused:!1,loopPosition:0,fallThrough:!1}}return w.prototype.registerHandler=function(c,p){this._handlers[c]===void 0&&(this._handlers[c]=[]);var C=this._handlers[c];return C.push(p),{dispose:function(){var d=C.indexOf(p);d!==-1&&C.splice(d,1)}}},w.prototype.clearHandler=function(c){this._handlers[c]&&delete this._handlers[c]},w.prototype.setHandlerFallback=function(c){this._handlerFb=c},w.prototype.dispose=function(){this._handlers=Object.create(null),this._handlerFb=function(){},this._active=_},w.prototype.reset=function(){if(this._state===2)for(var c=this._stack.paused?this._stack.loopPosition-1:this._active.length-1;c>=0;--c)this._active[c].end(!1);this._stack.paused=!1,this._active=_,this._id=-1,this._state=0},w.prototype._start=function(){if(this._active=this._handlers[this._id]||_,this._active.length)for(var c=this._active.length-1;c>=0;c--)this._active[c].start();else this._handlerFb(this._id,"START")},w.prototype._put=function(c,p,C){if(this._active.length)for(var d=this._active.length-1;d>=0;d--)this._active[d].put(c,p,C);else this._handlerFb(this._id,"PUT",(0,m.utf32ToString)(c,p,C))},w.prototype.start=function(){this.reset(),this._state=1},w.prototype.put=function(c,p,C){if(this._state!==3){if(this._state===1)for(;p0&&this._put(c,p,C)}},w.prototype.end=function(c,p){if(p===void 0&&(p=!0),this._state!==0){if(this._state!==3)if(this._state===1&&this._start(),this._active.length){var C=!1,d=this._active.length-1,s=!1;if(this._stack.paused&&(d=this._stack.loopPosition-1,C=p,s=this._stack.fallThrough,this._stack.paused=!1),!s&&C===!1){for(;d>=0&&(C=this._active[d].end(c))!==!0;d--)if(C instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=d,this._stack.fallThrough=!1,C;d--}for(;d>=0;d--)if((C=this._active[d].end(!1))instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=d,this._stack.fallThrough=!0,C}else this._handlerFb(this._id,"END",c);this._active=_,this._id=-1,this._state=0}},w}();f.OscParser=v;var A=function(){function w(c){this._handler=c,this._data="",this._hitLimit=!1}return w.prototype.start=function(){this._data="",this._hitLimit=!1},w.prototype.put=function(c,p,C){this._hitLimit||(this._data+=(0,m.utf32ToString)(c,p,C),this._data.length>y.PAYLOAD_LIMIT&&(this._data="",this._hitLimit=!0))},w.prototype.end=function(c){var p=this,C=!1;if(this._hitLimit)C=!1;else if(c&&(C=this._handler(this._data))instanceof Promise)return C.then(function(d){return p._data="",p._hitLimit=!1,d});return this._data="",this._hitLimit=!1,C},w}();f.OscHandler=A},8742:(E,f)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.Params=void 0;var L=2147483647,y=function(){function m(_,v){if(_===void 0&&(_=32),v===void 0&&(v=32),this.maxLength=_,this.maxSubParamsLength=v,v>256)throw new Error("maxSubParamsLength must not be greater than 256");this.params=new Int32Array(_),this.length=0,this._subParams=new Int32Array(v),this._subParamsLength=0,this._subParamsIdx=new Uint16Array(_),this._rejectDigits=!1,this._rejectSubDigits=!1,this._digitIsSub=!1}return m.fromArray=function(_){var v=new m;if(!_.length)return v;for(var A=Array.isArray(_[0])?1:0;A<_.length;++A){var w=_[A];if(Array.isArray(w))for(var c=0;c>8,w=255&this._subParamsIdx[v];w-A>0&&_.push(Array.prototype.slice.call(this._subParams,A,w))}return _},m.prototype.reset=function(){this.length=0,this._subParamsLength=0,this._rejectDigits=!1,this._rejectSubDigits=!1,this._digitIsSub=!1},m.prototype.addParam=function(_){if(this._digitIsSub=!1,this.length>=this.maxLength)this._rejectDigits=!0;else{if(_<-1)throw new Error("values lesser than -1 are not allowed");this._subParamsIdx[this.length]=this._subParamsLength<<8|this._subParamsLength,this.params[this.length++]=_>L?L:_}},m.prototype.addSubParam=function(_){if(this._digitIsSub=!0,this.length)if(this._rejectDigits||this._subParamsLength>=this.maxSubParamsLength)this._rejectSubDigits=!0;else{if(_<-1)throw new Error("values lesser than -1 are not allowed");this._subParams[this._subParamsLength++]=_>L?L:_,this._subParamsIdx[this.length-1]++}},m.prototype.hasSubParams=function(_){return(255&this._subParamsIdx[_])-(this._subParamsIdx[_]>>8)>0},m.prototype.getSubParams=function(_){var v=this._subParamsIdx[_]>>8,A=255&this._subParamsIdx[_];return A-v>0?this._subParams.subarray(v,A):null},m.prototype.getSubParamsAll=function(){for(var _={},v=0;v>8,w=255&this._subParamsIdx[v];w-A>0&&(_[v]=this._subParams.slice(A,w))}return _},m.prototype.addDigit=function(_){var v;if(!(this._rejectDigits||!(v=this._digitIsSub?this._subParamsLength:this.length)||this._digitIsSub&&this._rejectSubDigits)){var A=this._digitIsSub?this._subParams:this.params,w=A[v-1];A[v-1]=~w?Math.min(10*w+_,L):_}},m}();f.Params=y},5741:(E,f)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.AddonManager=void 0;var L=function(){function y(){this._addons=[]}return y.prototype.dispose=function(){for(var m=this._addons.length-1;m>=0;m--)this._addons[m].instance.dispose()},y.prototype.loadAddon=function(m,_){var v=this,A={instance:_,dispose:_.dispose,isDisposed:!1};this._addons.push(A),_.dispose=function(){return v._wrappedAddonDispose(A)},_.activate(m)},y.prototype._wrappedAddonDispose=function(m){if(!m.isDisposed){for(var _=-1,v=0;v{Object.defineProperty(f,"__esModule",{value:!0}),f.BufferApiView=void 0;var y=L(3785),m=L(511),_=function(){function v(A,w){this._buffer=A,this.type=w}return v.prototype.init=function(A){return this._buffer=A,this},Object.defineProperty(v.prototype,"cursorY",{get:function(){return this._buffer.y},enumerable:!1,configurable:!0}),Object.defineProperty(v.prototype,"cursorX",{get:function(){return this._buffer.x},enumerable:!1,configurable:!0}),Object.defineProperty(v.prototype,"viewportY",{get:function(){return this._buffer.ydisp},enumerable:!1,configurable:!0}),Object.defineProperty(v.prototype,"baseY",{get:function(){return this._buffer.ybase},enumerable:!1,configurable:!0}),Object.defineProperty(v.prototype,"length",{get:function(){return this._buffer.lines.length},enumerable:!1,configurable:!0}),v.prototype.getLine=function(A){var w=this._buffer.lines.get(A);if(w)return new y.BufferLineApiView(w)},v.prototype.getNullCell=function(){return new m.CellData},v}();f.BufferApiView=_},3785:(E,f,L)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.BufferLineApiView=void 0;var y=L(511),m=function(){function _(v){this._line=v}return Object.defineProperty(_.prototype,"isWrapped",{get:function(){return this._line.isWrapped},enumerable:!1,configurable:!0}),Object.defineProperty(_.prototype,"length",{get:function(){return this._line.length},enumerable:!1,configurable:!0}),_.prototype.getCell=function(v,A){if(!(v<0||v>=this._line.length))return A?(this._line.loadCell(v,A),A):this._line.loadCell(v,new y.CellData)},_.prototype.translateToString=function(v,A,w){return this._line.translateToString(v,A,w)},_}();f.BufferLineApiView=m},8285:(E,f,L)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.BufferNamespaceApi=void 0;var y=L(8771),m=L(8460),_=function(){function v(A){var w=this;this._core=A,this._onBufferChange=new m.EventEmitter,this._normal=new y.BufferApiView(this._core.buffers.normal,"normal"),this._alternate=new y.BufferApiView(this._core.buffers.alt,"alternate"),this._core.buffers.onBufferActivate(function(){return w._onBufferChange.fire(w.active)})}return Object.defineProperty(v.prototype,"onBufferChange",{get:function(){return this._onBufferChange.event},enumerable:!1,configurable:!0}),Object.defineProperty(v.prototype,"active",{get:function(){if(this._core.buffers.active===this._core.buffers.normal)return this.normal;if(this._core.buffers.active===this._core.buffers.alt)return this.alternate;throw new Error("Active buffer is neither normal nor alternate")},enumerable:!1,configurable:!0}),Object.defineProperty(v.prototype,"normal",{get:function(){return this._normal.init(this._core.buffers.normal)},enumerable:!1,configurable:!0}),Object.defineProperty(v.prototype,"alternate",{get:function(){return this._alternate.init(this._core.buffers.alt)},enumerable:!1,configurable:!0}),v}();f.BufferNamespaceApi=_},7975:(E,f)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.ParserApi=void 0;var L=function(){function y(m){this._core=m}return y.prototype.registerCsiHandler=function(m,_){return this._core.registerCsiHandler(m,function(v){return _(v.toArray())})},y.prototype.addCsiHandler=function(m,_){return this.registerCsiHandler(m,_)},y.prototype.registerDcsHandler=function(m,_){return this._core.registerDcsHandler(m,function(v,A){return _(v,A.toArray())})},y.prototype.addDcsHandler=function(m,_){return this.registerDcsHandler(m,_)},y.prototype.registerEscHandler=function(m,_){return this._core.registerEscHandler(m,_)},y.prototype.addEscHandler=function(m,_){return this.registerEscHandler(m,_)},y.prototype.registerOscHandler=function(m,_){return this._core.registerOscHandler(m,_)},y.prototype.addOscHandler=function(m,_){return this.registerOscHandler(m,_)},y}();f.ParserApi=L},7090:(E,f)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.UnicodeApi=void 0;var L=function(){function y(m){this._core=m}return y.prototype.register=function(m){this._core.unicodeService.register(m)},Object.defineProperty(y.prototype,"versions",{get:function(){return this._core.unicodeService.versions},enumerable:!1,configurable:!0}),Object.defineProperty(y.prototype,"activeVersion",{get:function(){return this._core.unicodeService.activeVersion},set:function(m){this._core.unicodeService.activeVersion=m},enumerable:!1,configurable:!0}),y}();f.UnicodeApi=L},744:function(E,f,L){var y,m=this&&this.__extends||(y=function(d,s){return y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(o,l){o.__proto__=l}||function(o,l){for(var a in l)Object.prototype.hasOwnProperty.call(l,a)&&(o[a]=l[a])},y(d,s)},function(d,s){if(typeof s!="function"&&s!==null)throw new TypeError("Class extends value "+String(s)+" is not a constructor or null");function o(){this.constructor=d}y(d,s),d.prototype=s===null?Object.create(s):(o.prototype=s.prototype,new o)}),_=this&&this.__decorate||function(d,s,o,l){var a,u=arguments.length,g=u<3?s:l===null?l=Object.getOwnPropertyDescriptor(s,o):l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")g=Reflect.decorate(d,s,o,l);else for(var b=d.length-1;b>=0;b--)(a=d[b])&&(g=(u<3?a(g):u>3?a(s,o,g):a(s,o))||g);return u>3&&g&&Object.defineProperty(s,o,g),g},v=this&&this.__param||function(d,s){return function(o,l){s(o,l,d)}};Object.defineProperty(f,"__esModule",{value:!0}),f.BufferService=f.MINIMUM_ROWS=f.MINIMUM_COLS=void 0;var A=L(2585),w=L(5295),c=L(8460),p=L(844);f.MINIMUM_COLS=2,f.MINIMUM_ROWS=1;var C=function(d){function s(o){var l=d.call(this)||this;return l._optionsService=o,l.isUserScrolling=!1,l._onResize=new c.EventEmitter,l._onScroll=new c.EventEmitter,l.cols=Math.max(o.rawOptions.cols||0,f.MINIMUM_COLS),l.rows=Math.max(o.rawOptions.rows||0,f.MINIMUM_ROWS),l.buffers=new w.BufferSet(o,l),l}return m(s,d),Object.defineProperty(s.prototype,"onResize",{get:function(){return this._onResize.event},enumerable:!1,configurable:!0}),Object.defineProperty(s.prototype,"onScroll",{get:function(){return this._onScroll.event},enumerable:!1,configurable:!0}),Object.defineProperty(s.prototype,"buffer",{get:function(){return this.buffers.active},enumerable:!1,configurable:!0}),s.prototype.dispose=function(){d.prototype.dispose.call(this),this.buffers.dispose()},s.prototype.resize=function(o,l){this.cols=o,this.rows=l,this.buffers.resize(o,l),this.buffers.setupTabStops(this.cols),this._onResize.fire({cols:o,rows:l})},s.prototype.reset=function(){this.buffers.reset(),this.isUserScrolling=!1},s.prototype.scroll=function(o,l){l===void 0&&(l=!1);var a,u=this.buffer;(a=this._cachedBlankLine)&&a.length===this.cols&&a.getFg(0)===o.fg&&a.getBg(0)===o.bg||(a=u.getBlankLine(o,l),this._cachedBlankLine=a),a.isWrapped=l;var g=u.ybase+u.scrollTop,b=u.ybase+u.scrollBottom;if(u.scrollTop===0){var T=u.lines.isFull;b===u.lines.length-1?T?u.lines.recycle().copyFrom(a):u.lines.push(a.clone()):u.lines.splice(b+1,0,a.clone()),T?this.isUserScrolling&&(u.ydisp=Math.max(u.ydisp-1,0)):(u.ybase++,this.isUserScrolling||u.ydisp++)}else{var R=b-g+1;u.lines.shiftElements(g+1,R-1,-1),u.lines.set(b,a.clone())}this.isUserScrolling||(u.ydisp=u.ybase),this._onScroll.fire(u.ydisp)},s.prototype.scrollLines=function(o,l,a){var u=this.buffer;if(o<0){if(u.ydisp===0)return;this.isUserScrolling=!0}else o+u.ydisp>=u.ybase&&(this.isUserScrolling=!1);var g=u.ydisp;u.ydisp=Math.max(Math.min(u.ydisp+o,u.ybase),0),g!==u.ydisp&&(l||this._onScroll.fire(u.ydisp))},s.prototype.scrollPages=function(o){this.scrollLines(o*(this.rows-1))},s.prototype.scrollToTop=function(){this.scrollLines(-this.buffer.ydisp)},s.prototype.scrollToBottom=function(){this.scrollLines(this.buffer.ybase-this.buffer.ydisp)},s.prototype.scrollToLine=function(o){var l=o-this.buffer.ydisp;l!==0&&this.scrollLines(l)},_([v(0,A.IOptionsService)],s)}(p.Disposable);f.BufferService=C},7994:(E,f)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.CharsetService=void 0;var L=function(){function y(){this.glevel=0,this._charsets=[]}return y.prototype.reset=function(){this.charset=void 0,this._charsets=[],this.glevel=0},y.prototype.setgLevel=function(m){this.glevel=m,this.charset=this._charsets[m]},y.prototype.setgCharset=function(m,_){this._charsets[m]=_,this.glevel===m&&(this.charset=_)},y}();f.CharsetService=L},1753:function(E,f,L){var y=this&&this.__decorate||function(d,s,o,l){var a,u=arguments.length,g=u<3?s:l===null?l=Object.getOwnPropertyDescriptor(s,o):l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")g=Reflect.decorate(d,s,o,l);else for(var b=d.length-1;b>=0;b--)(a=d[b])&&(g=(u<3?a(g):u>3?a(s,o,g):a(s,o))||g);return u>3&&g&&Object.defineProperty(s,o,g),g},m=this&&this.__param||function(d,s){return function(o,l){s(o,l,d)}};Object.defineProperty(f,"__esModule",{value:!0}),f.CoreMouseService=void 0;var _=L(2585),v=L(8460),A={NONE:{events:0,restrict:function(){return!1}},X10:{events:1,restrict:function(d){return d.button!==4&&d.action===1&&(d.ctrl=!1,d.alt=!1,d.shift=!1,!0)}},VT200:{events:19,restrict:function(d){return d.action!==32}},DRAG:{events:23,restrict:function(d){return d.action!==32||d.button!==3}},ANY:{events:31,restrict:function(d){return!0}}};function w(d,s){var o=(d.ctrl?16:0)|(d.shift?4:0)|(d.alt?8:0);return d.button===4?(o|=64,o|=d.action):(o|=3&d.button,4&d.button&&(o|=64),8&d.button&&(o|=128),d.action===32?o|=32:d.action!==0||s||(o|=3)),o}var c=String.fromCharCode,p={DEFAULT:function(d){var s=[w(d,!1)+32,d.col+32,d.row+32];return s[0]>255||s[1]>255||s[2]>255?"":"\x1B[M"+c(s[0])+c(s[1])+c(s[2])},SGR:function(d){var s=d.action===0&&d.button!==4?"m":"M";return"\x1B[<"+w(d,!0)+";"+d.col+";"+d.row+s}},C=function(){function d(s,o){this._bufferService=s,this._coreService=o,this._protocols={},this._encodings={},this._activeProtocol="",this._activeEncoding="",this._onProtocolChange=new v.EventEmitter,this._lastEvent=null;for(var l=0,a=Object.keys(A);l=this._bufferService.cols||s.row<0||s.row>=this._bufferService.rows||s.button===4&&s.action===32||s.button===3&&s.action!==32||s.button!==4&&(s.action===2||s.action===3)||(s.col++,s.row++,s.action===32&&this._lastEvent&&this._compareEvents(this._lastEvent,s))||!this._protocols[this._activeProtocol].restrict(s))return!1;var o=this._encodings[this._activeEncoding](s);return o&&(this._activeEncoding==="DEFAULT"?this._coreService.triggerBinaryEvent(o):this._coreService.triggerDataEvent(o,!0)),this._lastEvent=s,!0},d.prototype.explainEvents=function(s){return{down:!!(1&s),up:!!(2&s),drag:!!(4&s),move:!!(8&s),wheel:!!(16&s)}},d.prototype._compareEvents=function(s,o){return s.col===o.col&&s.row===o.row&&s.button===o.button&&s.action===o.action&&s.ctrl===o.ctrl&&s.alt===o.alt&&s.shift===o.shift},y([m(0,_.IBufferService),m(1,_.ICoreService)],d)}();f.CoreMouseService=C},6975:function(E,f,L){var y,m=this&&this.__extends||(y=function(o,l){return y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(a,u){a.__proto__=u}||function(a,u){for(var g in u)Object.prototype.hasOwnProperty.call(u,g)&&(a[g]=u[g])},y(o,l)},function(o,l){if(typeof l!="function"&&l!==null)throw new TypeError("Class extends value "+String(l)+" is not a constructor or null");function a(){this.constructor=o}y(o,l),o.prototype=l===null?Object.create(l):(a.prototype=l.prototype,new a)}),_=this&&this.__decorate||function(o,l,a,u){var g,b=arguments.length,T=b<3?l:u===null?u=Object.getOwnPropertyDescriptor(l,a):u;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")T=Reflect.decorate(o,l,a,u);else for(var R=o.length-1;R>=0;R--)(g=o[R])&&(T=(b<3?g(T):b>3?g(l,a,T):g(l,a))||T);return b>3&&T&&Object.defineProperty(l,a,T),T},v=this&&this.__param||function(o,l){return function(a,u){l(a,u,o)}};Object.defineProperty(f,"__esModule",{value:!0}),f.CoreService=void 0;var A=L(2585),w=L(8460),c=L(1439),p=L(844),C=Object.freeze({insertMode:!1}),d=Object.freeze({applicationCursorKeys:!1,applicationKeypad:!1,bracketedPasteMode:!1,origin:!1,reverseWraparound:!1,sendFocus:!1,wraparound:!0}),s=function(o){function l(a,u,g,b){var T=o.call(this)||this;return T._bufferService=u,T._logService=g,T._optionsService=b,T.isCursorInitialized=!1,T.isCursorHidden=!1,T._onData=T.register(new w.EventEmitter),T._onUserInput=T.register(new w.EventEmitter),T._onBinary=T.register(new w.EventEmitter),T._scrollToBottom=a,T.register({dispose:function(){return T._scrollToBottom=void 0}}),T.modes=(0,c.clone)(C),T.decPrivateModes=(0,c.clone)(d),T}return m(l,o),Object.defineProperty(l.prototype,"onData",{get:function(){return this._onData.event},enumerable:!1,configurable:!0}),Object.defineProperty(l.prototype,"onUserInput",{get:function(){return this._onUserInput.event},enumerable:!1,configurable:!0}),Object.defineProperty(l.prototype,"onBinary",{get:function(){return this._onBinary.event},enumerable:!1,configurable:!0}),l.prototype.reset=function(){this.modes=(0,c.clone)(C),this.decPrivateModes=(0,c.clone)(d)},l.prototype.triggerDataEvent=function(a,u){if(u===void 0&&(u=!1),!this._optionsService.rawOptions.disableStdin){var g=this._bufferService.buffer;g.ybase!==g.ydisp&&this._scrollToBottom(),u&&this._onUserInput.fire(),this._logService.debug('sending data "'+a+'"',function(){return a.split("").map(function(b){return b.charCodeAt(0)})}),this._onData.fire(a)}},l.prototype.triggerBinaryEvent=function(a){this._optionsService.rawOptions.disableStdin||(this._logService.debug('sending binary "'+a+'"',function(){return a.split("").map(function(u){return u.charCodeAt(0)})}),this._onBinary.fire(a))},_([v(1,A.IBufferService),v(2,A.ILogService),v(3,A.IOptionsService)],l)}(p.Disposable);f.CoreService=s},3730:function(E,f,L){var y=this&&this.__decorate||function(A,w,c,p){var C,d=arguments.length,s=d<3?w:p===null?p=Object.getOwnPropertyDescriptor(w,c):p;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(A,w,c,p);else for(var o=A.length-1;o>=0;o--)(C=A[o])&&(s=(d<3?C(s):d>3?C(w,c,s):C(w,c))||s);return d>3&&s&&Object.defineProperty(w,c,s),s},m=this&&this.__param||function(A,w){return function(c,p){w(c,p,A)}};Object.defineProperty(f,"__esModule",{value:!0}),f.DirtyRowService=void 0;var _=L(2585),v=function(){function A(w){this._bufferService=w,this.clearRange()}return Object.defineProperty(A.prototype,"start",{get:function(){return this._start},enumerable:!1,configurable:!0}),Object.defineProperty(A.prototype,"end",{get:function(){return this._end},enumerable:!1,configurable:!0}),A.prototype.clearRange=function(){this._start=this._bufferService.buffer.y,this._end=this._bufferService.buffer.y},A.prototype.markDirty=function(w){wthis._end&&(this._end=w)},A.prototype.markRangeDirty=function(w,c){if(w>c){var p=w;w=c,c=p}wthis._end&&(this._end=c)},A.prototype.markAllDirty=function(){this.markRangeDirty(0,this._bufferService.rows-1)},y([m(0,_.IBufferService)],A)}();f.DirtyRowService=v},4348:function(E,f,L){var y=this&&this.__spreadArray||function(w,c,p){if(p||arguments.length===2)for(var C,d=0,s=c.length;d0?d[0].index:p.length;if(p.length!==g)throw new Error("[createInstance] First service dependency of "+c.name+" at position "+(g+1)+" conflicts with "+p.length+" static arguments");return new(c.bind.apply(c,y([void 0],y(y([],p,!0),s,!0),!1)))},w}();f.InstantiationService=A},7866:function(E,f,L){var y=this&&this.__decorate||function(c,p,C,d){var s,o=arguments.length,l=o<3?p:d===null?d=Object.getOwnPropertyDescriptor(p,C):d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")l=Reflect.decorate(c,p,C,d);else for(var a=c.length-1;a>=0;a--)(s=c[a])&&(l=(o<3?s(l):o>3?s(p,C,l):s(p,C))||l);return o>3&&l&&Object.defineProperty(p,C,l),l},m=this&&this.__param||function(c,p){return function(C,d){p(C,d,c)}},_=this&&this.__spreadArray||function(c,p,C){if(C||arguments.length===2)for(var d,s=0,o=p.length;s{function L(y,m,_){m.di$target===m?m.di$dependencies.push({id:y,index:_}):(m.di$dependencies=[{id:y,index:_}],m.di$target=m)}Object.defineProperty(f,"__esModule",{value:!0}),f.createDecorator=f.getServiceDependencies=f.serviceRegistry=void 0,f.serviceRegistry=new Map,f.getServiceDependencies=function(y){return y.di$dependencies||[]},f.createDecorator=function(y){if(f.serviceRegistry.has(y))return f.serviceRegistry.get(y);var m=function(_,v,A){if(arguments.length!==3)throw new Error("@IServiceName-decorator can only be used to decorate a parameter");L(m,_,A)};return m.toString=function(){return y},f.serviceRegistry.set(y,m),m}},2585:(E,f,L)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.IUnicodeService=f.IOptionsService=f.ILogService=f.LogLevelEnum=f.IInstantiationService=f.IDirtyRowService=f.ICharsetService=f.ICoreService=f.ICoreMouseService=f.IBufferService=void 0;var y,m=L(8343);f.IBufferService=(0,m.createDecorator)("BufferService"),f.ICoreMouseService=(0,m.createDecorator)("CoreMouseService"),f.ICoreService=(0,m.createDecorator)("CoreService"),f.ICharsetService=(0,m.createDecorator)("CharsetService"),f.IDirtyRowService=(0,m.createDecorator)("DirtyRowService"),f.IInstantiationService=(0,m.createDecorator)("InstantiationService"),(y=f.LogLevelEnum||(f.LogLevelEnum={}))[y.DEBUG=0]="DEBUG",y[y.INFO=1]="INFO",y[y.WARN=2]="WARN",y[y.ERROR=3]="ERROR",y[y.OFF=4]="OFF",f.ILogService=(0,m.createDecorator)("LogService"),f.IOptionsService=(0,m.createDecorator)("OptionsService"),f.IUnicodeService=(0,m.createDecorator)("UnicodeService")},1480:(E,f,L)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.UnicodeService=void 0;var y=L(8460),m=L(225),_=function(){function v(){this._providers=Object.create(null),this._active="",this._onChange=new y.EventEmitter;var A=new m.UnicodeV6;this.register(A),this._active=A.version,this._activeProvider=A}return Object.defineProperty(v.prototype,"onChange",{get:function(){return this._onChange.event},enumerable:!1,configurable:!0}),Object.defineProperty(v.prototype,"versions",{get:function(){return Object.keys(this._providers)},enumerable:!1,configurable:!0}),Object.defineProperty(v.prototype,"activeVersion",{get:function(){return this._active},set:function(A){if(!this._providers[A])throw new Error('unknown Unicode version "'+A+'"');this._active=A,this._activeProvider=this._providers[A],this._onChange.fire(A)},enumerable:!1,configurable:!0}),v.prototype.register=function(A){this._providers[A.version]=A},v.prototype.wcwidth=function(A){return this._activeProvider.wcwidth(A)},v.prototype.getStringCellWidth=function(A){for(var w=0,c=A.length,p=0;p=c)return w+this.wcwidth(C);var d=A.charCodeAt(p);56320<=d&&d<=57343?C=1024*(C-55296)+d-56320+65536:w+=this.wcwidth(d)}w+=this.wcwidth(C)}return w},v}();f.UnicodeService=_}},H={};return function E(f){var L=H[f];if(L!==void 0)return L.exports;var y=H[f]={exports:{}};return V[f].call(y.exports,y,y.exports,E),y.exports}(4389)})()})});var jl=or((Nl,Wl)=>{(function(V){typeof Nl=="object"&&typeof Wl=="object"?V(sr()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],V):V(CodeMirror)})(function(V){"use strict";var H={},E=/[^\s\u00a0]/,f=V.Pos,L=V.cmpPos;function y(v){var A=v.search(E);return A==-1?0:A}V.commands.toggleComment=function(v){v.toggleComment()},V.defineExtension("toggleComment",function(v){v||(v=H);for(var A=this,w=1/0,c=this.listSelections(),p=null,C=c.length-1;C>=0;C--){var d=c[C].from(),s=c[C].to();d.line>=w||(s.line>=w&&(s=f(w,0)),w=d.line,p==null?A.uncomment(d,s,v)?p="un":(A.lineComment(d,s,v),p="line"):p=="un"?A.uncomment(d,s,v):A.lineComment(d,s,v))}});function m(v,A,w){return/\bstring\b/.test(v.getTokenTypeAt(f(A.line,0)))&&!/^[\'\"\`]/.test(w)}function _(v,A){var w=v.getMode();return w.useInnerComments===!1||!w.innerMode?w:v.getModeAt(A)}V.defineExtension("lineComment",function(v,A,w){w||(w=H);var c=this,p=_(c,v),C=c.getLine(v.line);if(!(C==null||m(c,v,C))){var d=w.lineComment||p.lineComment;if(!d){(w.blockCommentStart||p.blockCommentStart)&&(w.fullLines=!0,c.blockComment(v,A,w));return}var s=Math.min(A.ch!=0||A.line==v.line?A.line+1:A.line,c.lastLine()+1),o=w.padding==null?" ":w.padding,l=w.commentBlankLines||v.line==A.line;c.operation(function(){if(w.indent){for(var a=null,u=v.line;ub.length)&&(a=b)}for(var u=v.line;us||c.operation(function(){if(w.fullLines!=!1){var l=E.test(c.getLine(s));c.replaceRange(o+d,f(s)),c.replaceRange(C+o,f(v.line,0));var a=w.blockCommentLead||p.blockCommentLead;if(a!=null)for(var u=v.line+1;u<=s;++u)(u!=s||l)&&c.replaceRange(a+o,f(u,0))}else{var g=L(c.getCursor("to"),A)==0,b=!c.somethingSelected();c.replaceRange(d,A),g&&c.setSelection(b?A:c.getCursor("from"),A),c.replaceRange(C,v)}})}}),V.defineExtension("uncomment",function(v,A,w){w||(w=H);var c=this,p=_(c,v),C=Math.min(A.ch!=0||A.line==v.line?A.line:A.line-1,c.lastLine()),d=Math.min(v.line,C),s=w.lineComment||p.lineComment,o=[],l=w.padding==null?" ":w.padding,a;e:{if(!s)break e;for(var u=d;u<=C;++u){var g=c.getLine(u),b=g.indexOf(s);if(b>-1&&!/comment/.test(c.getTokenTypeAt(f(u,b+1)))&&(b=-1),b==-1&&E.test(g)||b>-1&&E.test(g.slice(0,b)))break e;o.push(g)}if(c.operation(function(){for(var ne=d;ne<=C;++ne){var ie=o[ne-d],be=ie.indexOf(s),ve=be+s.length;be<0||(ie.slice(ve,ve+l.length)==l&&(ve+=l.length),a=!0,c.replaceRange("",f(ne,be),f(ne,ve)))}}),a)return!0}var T=w.blockCommentStart||p.blockCommentStart,R=w.blockCommentEnd||p.blockCommentEnd;if(!T||!R)return!1;var k=w.blockCommentLead||p.blockCommentLead,M=c.getLine(d),N=M.indexOf(T);if(N==-1)return!1;var D=C==d?M:c.getLine(C),W=D.indexOf(R,C==d?N+T.length:0),B=f(d,N+1),F=f(C,W+1);if(W==-1||!/comment/.test(c.getTokenTypeAt(B))||!/comment/.test(c.getTokenTypeAt(F))||c.getRange(B,F,` -`).indexOf(R)>-1)return!1;var j=M.lastIndexOf(T,v.ch),G=j==-1?-1:M.slice(0,v.ch).indexOf(R,j+T.length);if(j!=-1&&G!=-1&&G+R.length!=v.ch)return!1;G=D.indexOf(R,A.ch);var $=D.slice(A.ch).lastIndexOf(T,G-A.ch);return j=G==-1||$==-1?-1:A.ch+$,G!=-1&&j!=-1&&j!=A.ch?!1:(c.operation(function(){c.replaceRange("",f(C,W-(l&&D.slice(W-l.length,W)==l?l.length:0)),f(C,W+R.length));var ne=N+T.length;if(l&&M.slice(ne,ne+l.length)==l&&(ne+=l.length),c.replaceRange("",f(d,N),f(d,ne)),k)for(var ie=d+1;ie<=C;++ie){var be=c.getLine(ie),ve=be.indexOf(k);if(!(ve==-1||E.test(be.slice(0,ve)))){var Ee=ve+k.length;l&&be.slice(Ee,Ee+l.length)==l&&(Ee+=l.length),c.replaceRange("",f(ie,ve),f(ie,Ee))}}}),!0)})})});var ql=or((Ul,zl)=>{(function(V){typeof Ul=="object"&&typeof zl=="object"?V(sr()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],V):V(CodeMirror)})(function(V){var H=/\S/g,E=String.prototype.repeat||function(m){return Array(m+1).join(this)};function f(m){if(m.getOption("disableInput"))return V.Pass;for(var _=m.listSelections(),v,A=[],w=0;w<_.length;w++){var c=_[w].head;if(!/\bcomment\b/.test(m.getTokenTypeAt(c)))return V.Pass;var p=m.getModeAt(c);if(!v)v=p;else if(v!=p)return V.Pass;var C=null,d,s,o=v.blockCommentStart,l=v.lineComment;if(o&&v.blockCommentContinue){d=m.getLine(c.line);var a=d.lastIndexOf(v.blockCommentEnd,c.ch-v.blockCommentEnd.length);if(!(a!=-1&&a==c.ch-v.blockCommentEnd.length||l&&(s=d.lastIndexOf(l,c.ch-1))>-1&&/\bcomment\b/.test(m.getTokenTypeAt({line:c.line,ch:s+1}))))if(c.ch>=o.length&&(s=d.lastIndexOf(o,c.ch-o.length))>-1&&s>a)if(L(0,d)>=s)C=d.slice(0,s);else{var u=m.options.tabSize,g;s=V.countColumn(d,s,u),C=m.options.indentWithTabs?E.call(" ",g=Math.floor(s/u))+E.call(" ",s-u*g):E.call(" ",s)}else(s=d.indexOf(v.blockCommentContinue))>-1&&s<=c.ch&&s<=L(0,d)&&(C=d.slice(0,s));C!=null&&(C+=v.blockCommentContinue)}if(C==null&&l&&y(m)){if(d==null&&(d=m.getLine(c.line)),s=d.indexOf(l),!c.ch&&!s)C="";else if(s>-1&&L(0,d)>=s){if(C=L(c.ch,d)>-1,!C){var b=m.getLine(c.line+1)||"",T=b.indexOf(l);C=T>-1&&L(0,b)>=T||null}C&&(C=d.slice(0,s)+l+d.slice(s+l.length).match(/^\s*/)[0])}}if(C==null)return V.Pass;A[w]=` -`+C}m.operation(function(){for(var R=_.length-1;R>=0;R--)m.replaceRange(A[R],_[R].from(),_[R].to(),"+insert")})}function L(m,_){H.lastIndex=m;var v=H.exec(_);return v?v.index:-1}function y(m){var _=m.getOption("continueComments");return _&&typeof _=="object"?_.continueLineComment!==!1:!0}V.defineOption("continueComments",null,function(m,_,v){if(v&&v!=V.Init&&m.removeKeyMap("continueComment"),_){var A="Enter";typeof _=="string"?A=_:typeof _=="object"&&_.key&&(A=_.key);var w={name:"continueComment"};w[A]=f,m.addKeyMap(w)}})})});var Xl=or((Kl,Gl)=>{(function(V){typeof Kl=="object"&&typeof Gl=="object"?V(sr()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],V):V(CodeMirror)})(function(V){V.defineOption("placeholder","",function(_,v,A){var w=A&&A!=V.Init;if(v&&!w)_.on("blur",L),_.on("change",y),_.on("swapDoc",y),V.on(_.getInputField(),"compositionupdate",_.state.placeholderCompose=function(){f(_)}),y(_);else if(!v&&w){_.off("blur",L),_.off("change",y),_.off("swapDoc",y),V.off(_.getInputField(),"compositionupdate",_.state.placeholderCompose),H(_);var c=_.getWrapperElement();c.className=c.className.replace(" CodeMirror-empty","")}v&&!_.hasFocus()&&L(_)});function H(_){_.state.placeholder&&(_.state.placeholder.parentNode.removeChild(_.state.placeholder),_.state.placeholder=null)}function E(_){H(_);var v=_.state.placeholder=document.createElement("pre");v.style.cssText="height: 0; overflow: visible",v.style.direction=_.getOption("direction"),v.className="CodeMirror-placeholder CodeMirror-line-like";var A=_.getOption("placeholder");typeof A=="string"&&(A=document.createTextNode(A)),v.appendChild(A),_.display.lineSpace.insertBefore(v,_.display.lineSpace.firstChild)}function f(_){setTimeout(function(){var v=!1;if(_.lineCount()==1){var A=_.getInputField();v=A.nodeName=="TEXTAREA"?!_.getLine(0).length:!/[^\u200b]/.test(A.querySelector(".CodeMirror-line").textContent)}v?E(_):H(_)},20)}function L(_){m(_)&&E(_)}function y(_){var v=_.getWrapperElement(),A=m(_);v.className=v.className.replace(" CodeMirror-empty","")+(A?" CodeMirror-empty":""),A?E(_):H(_)}function m(_){return _.lineCount()===1&&_.getLine(0)===""}})});var Vl=or((Yl,Zl)=>{(function(V){typeof Yl=="object"&&typeof Zl=="object"?V(sr()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],V):V(CodeMirror)})(function(V){var H={pairs:`()[]{}''""`,closeBefore:`)]}'":;>`,triples:"",explode:"[]{}"},E=V.Pos;V.defineOption("autoCloseBrackets",!1,function(s,o,l){l&&l!=V.Init&&(s.removeKeyMap(L),s.state.closeBrackets=null),o&&(y(f(o,"pairs")),s.state.closeBrackets=o,s.addKeyMap(L))});function f(s,o){return o=="pairs"&&typeof s=="string"?s:typeof s=="object"&&s[o]!=null?s[o]:H[o]}var L={Backspace:v,Enter:A};function y(s){for(var o=0;o=0;u--){var b=a[u].head;s.replaceRange("",E(b.line,b.ch-1),E(b.line,b.ch+1),"+delete")}}function A(s){var o=_(s),l=o&&f(o,"explode");if(!l||s.getOption("disableInput"))return V.Pass;for(var a=s.listSelections(),u=0;u0?{line:b.head.line,ch:b.head.ch+o}:{line:b.head.line-1};l.push({anchor:T,head:T})}s.setSelections(l,u)}function c(s){var o=V.cmpPos(s.anchor,s.head)>0;return{anchor:new E(s.anchor.line,s.anchor.ch+(o?-1:1)),head:new E(s.head.line,s.head.ch+(o?1:-1))}}function p(s,o){var l=_(s);if(!l||s.getOption("disableInput"))return V.Pass;var a=f(l,"pairs"),u=a.indexOf(o);if(u==-1)return V.Pass;for(var g=f(l,"closeBefore"),b=f(l,"triples"),T=a.charAt(u+1)==o,R=s.listSelections(),k=u%2==0,M,N=0;N=0&&s.getRange(W,E(W.line,W.ch+3))==o+o+o?B="skipThree":B="skip";else if(T&&W.ch>1&&b.indexOf(o)>=0&&s.getRange(E(W.line,W.ch-2),W)==o+o){if(W.ch>2&&/\bstring/.test(s.getTokenTypeAt(E(W.line,W.ch-2))))return V.Pass;B="addFour"}else if(T){var j=W.ch==0?" ":s.getRange(E(W.line,W.ch-1),W);if(!V.isWordChar(F)&&j!=o&&!V.isWordChar(j))B="both";else return V.Pass}else if(k&&(F.length===0||/\s/.test(F)||g.indexOf(F)>-1))B="both";else return V.Pass;if(!M)M=B;else if(M!=B)return V.Pass}var G=u%2?a.charAt(u-1):o,$=u%2?o:a.charAt(u+1);s.operation(function(){if(M=="skip")w(s,1);else if(M=="skipThree")w(s,3);else if(M=="surround"){for(var ne=s.getSelections(),ie=0;ie{(function(V){typeof $l=="object"&&typeof Jl=="object"?V(sr()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],V):V(CodeMirror)})(function(V){var H=/MSIE \d/.test(navigator.userAgent)&&(document.documentMode==null||document.documentMode<8),E=V.Pos,f={"(":")>",")":"(<","[":"]>","]":"[<","{":"}>","}":"{<","<":">>",">":"<<"};function L(w){return w&&w.bracketRegex||/[(){}[\]]/}function y(w,c,p){var C=w.getLineHandle(c.line),d=c.ch-1,s=p&&p.afterCursor;s==null&&(s=/(^| )cm-fat-cursor($| )/.test(w.getWrapperElement().className));var o=L(p),l=!s&&d>=0&&o.test(C.text.charAt(d))&&f[C.text.charAt(d)]||o.test(C.text.charAt(d+1))&&f[C.text.charAt(++d)];if(!l)return null;var a=l.charAt(1)==">"?1:-1;if(p&&p.strict&&a>0!=(d==c.ch))return null;var u=w.getTokenTypeAt(E(c.line,d+1)),g=m(w,E(c.line,d+(a>0?1:0)),a,u,p);return g==null?null:{from:E(c.line,d),to:g&&g.pos,match:g&&g.ch==l.charAt(0),forward:a>0}}function m(w,c,p,C,d){for(var s=d&&d.maxScanLineLength||1e4,o=d&&d.maxScanLines||1e3,l=[],a=L(d),u=p>0?Math.min(c.line+o,w.lastLine()+1):Math.max(w.firstLine()-1,c.line-o),g=c.line;g!=u;g+=p){var b=w.getLine(g);if(!!b){var T=p>0?0:b.length-1,R=p>0?b.length:-1;if(!(b.length>s))for(g==c.line&&(T=c.ch-(p<0?1:0));T!=R;T+=p){var k=b.charAt(T);if(a.test(k)&&(C===void 0||(w.getTokenTypeAt(E(g,T+1))||"")==(C||""))){var M=f[k];if(M&&M.charAt(1)==">"==p>0)l.push(k);else if(l.length)l.pop();else return{pos:E(g,T),ch:k}}}}}return g-p==(p>0?w.lastLine():w.firstLine())?!1:null}function _(w,c,p){for(var C=w.state.matchBrackets.maxHighlightLineLength||1e3,d=p&&p.highlightNonMatching,s=[],o=w.listSelections(),l=0;l{(function(V){typeof Ql=="object"&&typeof ec=="object"?V(sr()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],V):V(CodeMirror)})(function(V){"use strict";var H=V.Pos;function E(o){var l=o.flags;return l??(o.ignoreCase?"i":"")+(o.global?"g":"")+(o.multiline?"m":"")}function f(o,l){for(var a=E(o),u=a,g=0;gT);R++){var k=o.getLine(b++);u=u==null?k:u+` -`+k}g=g*2,l.lastIndex=a.ch;var M=l.exec(u);if(M){var N=u.slice(0,M.index).split(` -`),D=M[0].split(` -`),W=a.line+N.length-1,B=N[N.length-1].length;return{from:H(W,B),to:H(W+D.length-1,D.length==1?B+D[0].length:D[D.length-1].length),match:M}}}}function _(o,l,a){for(var u,g=0;g<=o.length;){l.lastIndex=g;var b=l.exec(o);if(!b)break;var T=b.index+b[0].length;if(T>o.length-a)break;(!u||T>u.index+u[0].length)&&(u=b),g=b.index+1}return u}function v(o,l,a){l=f(l,"g");for(var u=a.line,g=a.ch,b=o.firstLine();u>=b;u--,g=-1){var T=o.getLine(u),R=_(T,l,g<0?0:T.length-g);if(R)return{from:H(u,R.index),to:H(u,R.index+R[0].length),match:R}}}function A(o,l,a){if(!L(l))return v(o,l,a);l=f(l,"gm");for(var u,g=1,b=o.getLine(a.line).length-a.ch,T=a.line,R=o.firstLine();T>=R;){for(var k=0;k=R;k++){var M=o.getLine(T--);u=u==null?M:M+` -`+u}g*=2;var N=_(u,l,b);if(N){var D=u.slice(0,N.index).split(` -`),W=N[0].split(` -`),B=T+D.length,F=D[D.length-1].length;return{from:H(B,F),to:H(B+W.length-1,W.length==1?F+W[0].length:W[W.length-1].length),match:N}}}}var w,c;String.prototype.normalize?(w=function(o){return o.normalize("NFD").toLowerCase()},c=function(o){return o.normalize("NFD")}):(w=function(o){return o.toLowerCase()},c=function(o){return o});function p(o,l,a,u){if(o.length==l.length)return a;for(var g=0,b=a+Math.max(0,o.length-l.length);;){if(g==b)return g;var T=g+b>>1,R=u(o.slice(0,T)).length;if(R==a)return T;R>a?b=T:g=T+1}}function C(o,l,a,u){if(!l.length)return null;var g=u?w:c,b=g(l).split(/\r|\n\r?/);e:for(var T=a.line,R=a.ch,k=o.lastLine()+1-b.length;T<=k;T++,R=0){var M=o.getLine(T).slice(R),N=g(M);if(b.length==1){var D=N.indexOf(b[0]);if(D==-1)continue e;var a=p(M,N,D,g)+R;return{from:H(T,p(M,N,D,g)+R),to:H(T,p(M,N,D+b[0].length,g)+R)}}else{var W=N.length-b[0].length;if(N.slice(W)!=b[0])continue e;for(var B=1;B=k;T--,R=-1){var M=o.getLine(T);R>-1&&(M=M.slice(0,R));var N=g(M);if(b.length==1){var D=N.lastIndexOf(b[0]);if(D==-1)continue e;return{from:H(T,p(M,N,D,g)),to:H(T,p(M,N,D+b[0].length,g))}}else{var W=b[b.length-1];if(N.slice(0,W.length)!=W)continue e;for(var B=1,a=T-b.length+1;B(this.doc.getLine(l.line)||"").length&&(l.ch=0,l.line++)),V.cmpPos(l,this.doc.clipPos(l))!=0))return this.atOccurrence=!1;var a=this.matches(o,l);if(this.afterEmptyMatch=a&&V.cmpPos(a.from,a.to)==0,a)return this.pos=a,this.atOccurrence=!0,this.pos.match||!0;var u=H(o?this.doc.firstLine():this.doc.lastLine()+1,0);return this.pos={from:u,to:u},this.atOccurrence=!1},from:function(){if(this.atOccurrence)return this.pos.from},to:function(){if(this.atOccurrence)return this.pos.to},replace:function(o,l){if(!!this.atOccurrence){var a=V.splitLines(o);this.doc.replaceRange(a,this.pos.from,this.pos.to,l),this.pos.to=H(this.pos.from.line+a.length-1,a[a.length-1].length+(a.length==1?this.pos.from.ch:0))}}},V.defineExtension("getSearchCursor",function(o,l,a){return new s(this.doc,o,l,a)}),V.defineDocExtension("getSearchCursor",function(o,l,a){return new s(this,o,l,a)}),V.defineExtension("selectMatches",function(o,l){for(var a=[],u=this.getSearchCursor(o,this.getCursor("from"),l);u.findNext()&&!(V.cmpPos(u.to(),this.getCursor("to"))>0);)a.push({anchor:u.from(),head:u.to()});a.length&&this.setSelections(a,0)})})});var nc=or((rc,ic)=>{(function(V){typeof rc=="object"&&typeof ic=="object"?V(sr(),tc(),Os()):typeof define=="function"&&define.amd?define(["../lib/codemirror","../addon/search/searchcursor","../addon/edit/matchbrackets"],V):V(CodeMirror)})(function(V){"use strict";var H=V.commands,E=V.Pos;function f(a,u,g){if(g<0&&u.ch==0)return a.clipPos(E(u.line-1));var b=a.getLine(u.line);if(g>0&&u.ch>=b.length)return a.clipPos(E(u.line+1,0));for(var T="start",R,k=u.ch,M=k,N=g<0?0:b.length,D=0;M!=N;M+=g,D++){var W=b.charAt(g<0?M-1:M),B=W!="_"&&V.isWordChar(W)?"w":"o";if(B=="w"&&W.toUpperCase()==W&&(B="W"),T=="start")B!="o"?(T="in",R=B):k=M+g;else if(T=="in"&&R!=B){if(R=="w"&&B=="W"&&g<0&&M--,R=="W"&&B=="w"&&g>0)if(M==k+1){R="w";continue}else M--;break}}return E(u.line,M)}function L(a,u){a.extendSelectionsBy(function(g){return a.display.shift||a.doc.extend||g.empty()?f(a.doc,g.head,u):u<0?g.from():g.to()})}H.goSubwordLeft=function(a){L(a,-1)},H.goSubwordRight=function(a){L(a,1)},H.scrollLineUp=function(a){var u=a.getScrollInfo();if(!a.somethingSelected()){var g=a.lineAtHeight(u.top+u.clientHeight,"local");a.getCursor().line>=g&&a.execCommand("goLineUp")}a.scrollTo(null,u.top-a.defaultTextHeight())},H.scrollLineDown=function(a){var u=a.getScrollInfo();if(!a.somethingSelected()){var g=a.lineAtHeight(u.top,"local")+1;a.getCursor().line<=g&&a.execCommand("goLineDown")}a.scrollTo(null,u.top+a.defaultTextHeight())},H.splitSelectionByLine=function(a){for(var u=a.listSelections(),g=[],b=0;bT.line&&k==R.line&&R.ch==0||g.push({anchor:k==T.line?T:E(k,0),head:k==R.line?R:E(k)});a.setSelections(g,0)},H.singleSelectionTop=function(a){var u=a.listSelections()[0];a.setSelection(u.anchor,u.head,{scroll:!1})},H.selectLine=function(a){for(var u=a.listSelections(),g=[],b=0;bb?g.push(M,N):g.length&&(g[g.length-1]=N),b=N}a.operation(function(){for(var D=0;Da.lastLine()?a.replaceRange(` -`+F,E(a.lastLine()),null,"+swapLine"):a.replaceRange(F+` -`,E(B,0),null,"+swapLine")}a.setSelections(T),a.scrollIntoView()})},H.swapLineDown=function(a){if(a.isReadOnly())return V.Pass;for(var u=a.listSelections(),g=[],b=a.lastLine()+1,T=u.length-1;T>=0;T--){var R=u[T],k=R.to().line+1,M=R.from().line;R.to().ch==0&&!R.empty()&&k--,k=0;N-=2){var D=g[N],W=g[N+1],B=a.getLine(D);D==a.lastLine()?a.replaceRange("",E(D-1),E(D),"+swapLine"):a.replaceRange("",E(D,0),E(D+1,0),"+swapLine"),a.replaceRange(B+` -`,E(W,0),null,"+swapLine")}a.scrollIntoView()})},H.toggleCommentIndented=function(a){a.toggleComment({indent:!0})},H.joinLines=function(a){for(var u=a.listSelections(),g=[],b=0;b=0;R--){var k=g[b[R]];if(!(M&&V.cmpPos(k.head,M)>0)){var N=m(a,k.head);M=N.from,a.replaceRange(u(N.word),N.from,N.to)}}})}H.smartBackspace=function(a){if(a.somethingSelected())return V.Pass;a.operation(function(){for(var u=a.listSelections(),g=a.getOption("indentUnit"),b=u.length-1;b>=0;b--){var T=u[b].head,R=a.getRange({line:T.line,ch:0},T),k=V.countColumn(R,null,a.getOption("tabSize")),M=a.findPosH(T,-1,"char",!1);if(R&&!/\S/.test(R)&&k%g==0){var N=new E(T.line,V.findColumn(R,k-g,g));N.ch!=T.ch&&(M=N)}a.replaceRange("",M,T,"+delete")}})},H.delLineRight=function(a){a.operation(function(){for(var u=a.listSelections(),g=u.length-1;g>=0;g--)a.replaceRange("",u[g].anchor,E(u[g].to().line),"+delete");a.scrollIntoView()})},H.upcaseAtCursor=function(a){C(a,function(u){return u.toUpperCase()})},H.downcaseAtCursor=function(a){C(a,function(u){return u.toLowerCase()})},H.setSublimeMark=function(a){a.state.sublimeMark&&a.state.sublimeMark.clear(),a.state.sublimeMark=a.setBookmark(a.getCursor())},H.selectToSublimeMark=function(a){var u=a.state.sublimeMark&&a.state.sublimeMark.find();u&&a.setSelection(a.getCursor(),u)},H.deleteToSublimeMark=function(a){var u=a.state.sublimeMark&&a.state.sublimeMark.find();if(u){var g=a.getCursor(),b=u;if(V.cmpPos(g,b)>0){var T=b;b=g,g=T}a.state.sublimeKilled=a.getRange(g,b),a.replaceRange("",g,b)}},H.swapWithSublimeMark=function(a){var u=a.state.sublimeMark&&a.state.sublimeMark.find();u&&(a.state.sublimeMark.clear(),a.state.sublimeMark=a.setBookmark(a.getCursor()),a.setCursor(u))},H.sublimeYank=function(a){a.state.sublimeKilled!=null&&a.replaceSelection(a.state.sublimeKilled,null,"paste")},H.showInCenter=function(a){var u=a.cursorCoords(null,"local");a.scrollTo(null,(u.top+u.bottom)/2-a.getScrollInfo().clientHeight/2)};function d(a){var u=a.getCursor("from"),g=a.getCursor("to");if(V.cmpPos(u,g)==0){var b=m(a,u);if(!b.word)return;u=b.from,g=b.to}return{from:u,to:g,query:a.getRange(u,g),word:b}}function s(a,u){var g=d(a);if(!!g){var b=g.query,T=a.getSearchCursor(b,u?g.to:g.from);(u?T.findNext():T.findPrevious())?a.setSelection(T.from(),T.to()):(T=a.getSearchCursor(b,u?E(a.firstLine(),0):a.clipPos(E(a.lastLine()))),(u?T.findNext():T.findPrevious())?a.setSelection(T.from(),T.to()):g.word&&a.setSelection(g.from,g.to))}}H.findUnder=function(a){s(a,!0)},H.findUnderPrevious=function(a){s(a,!1)},H.findAllUnder=function(a){var u=d(a);if(!!u){for(var g=a.getSearchCursor(u.query),b=[],T=-1;g.findNext();)b.push({anchor:g.from(),head:g.to()}),g.from().line<=u.from.line&&g.from().ch<=u.from.ch&&T++;a.setSelections(b,T)}};var o=V.keyMap;o.macSublime={"Cmd-Left":"goLineStartSmart","Shift-Tab":"indentLess","Shift-Ctrl-K":"deleteLine","Alt-Q":"wrapLines","Ctrl-Left":"goSubwordLeft","Ctrl-Right":"goSubwordRight","Ctrl-Alt-Up":"scrollLineUp","Ctrl-Alt-Down":"scrollLineDown","Cmd-L":"selectLine","Shift-Cmd-L":"splitSelectionByLine",Esc:"singleSelectionTop","Cmd-Enter":"insertLineAfter","Shift-Cmd-Enter":"insertLineBefore","Cmd-D":"selectNextOccurrence","Shift-Cmd-Space":"selectScope","Shift-Cmd-M":"selectBetweenBrackets","Cmd-M":"goToBracket","Cmd-Ctrl-Up":"swapLineUp","Cmd-Ctrl-Down":"swapLineDown","Cmd-/":"toggleCommentIndented","Cmd-J":"joinLines","Shift-Cmd-D":"duplicateLine",F5:"sortLines","Shift-F5":"reverseSortLines","Cmd-F5":"sortLinesInsensitive","Shift-Cmd-F5":"reverseSortLinesInsensitive",F2:"nextBookmark","Shift-F2":"prevBookmark","Cmd-F2":"toggleBookmark","Shift-Cmd-F2":"clearBookmarks","Alt-F2":"selectBookmarks",Backspace:"smartBackspace","Cmd-K Cmd-D":"skipAndSelectNextOccurrence","Cmd-K Cmd-K":"delLineRight","Cmd-K Cmd-U":"upcaseAtCursor","Cmd-K Cmd-L":"downcaseAtCursor","Cmd-K Cmd-Space":"setSublimeMark","Cmd-K Cmd-A":"selectToSublimeMark","Cmd-K Cmd-W":"deleteToSublimeMark","Cmd-K Cmd-X":"swapWithSublimeMark","Cmd-K Cmd-Y":"sublimeYank","Cmd-K Cmd-C":"showInCenter","Cmd-K Cmd-G":"clearBookmarks","Cmd-K Cmd-Backspace":"delLineLeft","Cmd-K Cmd-1":"foldAll","Cmd-K Cmd-0":"unfoldAll","Cmd-K Cmd-J":"unfoldAll","Ctrl-Shift-Up":"addCursorToPrevLine","Ctrl-Shift-Down":"addCursorToNextLine","Cmd-F3":"findUnder","Shift-Cmd-F3":"findUnderPrevious","Alt-F3":"findAllUnder","Shift-Cmd-[":"fold","Shift-Cmd-]":"unfold","Cmd-I":"findIncremental","Shift-Cmd-I":"findIncrementalReverse","Cmd-H":"replace",F3:"findNext","Shift-F3":"findPrev",fallthrough:"macDefault"},V.normalizeKeyMap(o.macSublime),o.pcSublime={"Shift-Tab":"indentLess","Shift-Ctrl-K":"deleteLine","Alt-Q":"wrapLines","Ctrl-T":"transposeChars","Alt-Left":"goSubwordLeft","Alt-Right":"goSubwordRight","Ctrl-Up":"scrollLineUp","Ctrl-Down":"scrollLineDown","Ctrl-L":"selectLine","Shift-Ctrl-L":"splitSelectionByLine",Esc:"singleSelectionTop","Ctrl-Enter":"insertLineAfter","Shift-Ctrl-Enter":"insertLineBefore","Ctrl-D":"selectNextOccurrence","Shift-Ctrl-Space":"selectScope","Shift-Ctrl-M":"selectBetweenBrackets","Ctrl-M":"goToBracket","Shift-Ctrl-Up":"swapLineUp","Shift-Ctrl-Down":"swapLineDown","Ctrl-/":"toggleCommentIndented","Ctrl-J":"joinLines","Shift-Ctrl-D":"duplicateLine",F9:"sortLines","Shift-F9":"reverseSortLines","Ctrl-F9":"sortLinesInsensitive","Shift-Ctrl-F9":"reverseSortLinesInsensitive",F2:"nextBookmark","Shift-F2":"prevBookmark","Ctrl-F2":"toggleBookmark","Shift-Ctrl-F2":"clearBookmarks","Alt-F2":"selectBookmarks",Backspace:"smartBackspace","Ctrl-K Ctrl-D":"skipAndSelectNextOccurrence","Ctrl-K Ctrl-K":"delLineRight","Ctrl-K Ctrl-U":"upcaseAtCursor","Ctrl-K Ctrl-L":"downcaseAtCursor","Ctrl-K Ctrl-Space":"setSublimeMark","Ctrl-K Ctrl-A":"selectToSublimeMark","Ctrl-K Ctrl-W":"deleteToSublimeMark","Ctrl-K Ctrl-X":"swapWithSublimeMark","Ctrl-K Ctrl-Y":"sublimeYank","Ctrl-K Ctrl-C":"showInCenter","Ctrl-K Ctrl-G":"clearBookmarks","Ctrl-K Ctrl-Backspace":"delLineLeft","Ctrl-K Ctrl-1":"foldAll","Ctrl-K Ctrl-0":"unfoldAll","Ctrl-K Ctrl-J":"unfoldAll","Ctrl-Alt-Up":"addCursorToPrevLine","Ctrl-Alt-Down":"addCursorToNextLine","Ctrl-F3":"findUnder","Shift-Ctrl-F3":"findUnderPrevious","Alt-F3":"findAllUnder","Shift-Ctrl-[":"fold","Shift-Ctrl-]":"unfold","Ctrl-I":"findIncremental","Shift-Ctrl-I":"findIncrementalReverse","Ctrl-H":"replace",F3:"findNext","Shift-F3":"findPrev",fallthrough:"pcDefault"},V.normalizeKeyMap(o.pcSublime);var l=o.default==o.macDefault;o.sublime=l?o.macSublime:o.pcSublime})});var rf=V=>V.reduce((H,E)=>H+String.fromCharCode(E),""),ao=rf;var nf=V=>V.split("").map(H=>H.charCodeAt(0)),ml=nf;var ss=class{name(){return"default"}codePointsToString(H){return ao(H)}stringToCodePoints(H){return ml(H)}matches(H){return this.matchesAsString(this.codePointsToString(H))}matchesAsString(H){return!0}decode(H){return this.decodeAsString(this.codePointsToString(H))}decodeAsString(H){return this.stringToCodePoints(H)}},di=ss;var as=class extends di{name(){return"base64"}matchesAsString(H){if(H.length<4)return!1;try{return atob(H),!0}catch(E){return!1}}decodeAsString(H){return Array.from(atob(H)).map(E=>E.charCodeAt(0))}},bl=as;var ls=class extends di{name(){return"hexdump"}matchesAsString(H){return/^([0-9a-f]{7}(( ([0-9a-f]{4})){1,8}) *\n)+[0-9a-f]{7}\n?$/.test(H)}decodeAsString(H){return H.trim().replace(/\n[0-9a-f]{7}\n?$/,"").replace(/(?<=^|\n)[0-9a-f]{7}(( ([0-9a-f]{4})){1,8}) */g,"$1").replace(/\s+/g,"").replace(/(..)(..)/g,"$2$1").replace(/00$/,"").match(/../g).map(E=>parseInt(E,16))}},Sl=ls;var sn=class{constructor(H,E,f,L=null,y=null,m=H){this.id=H;this.name=E;this.runner=f;this.url=L;this.args=y;this.highlighterRef=m}getId(){return this.id}getName(){return this.name}getURL(){return this.url}getArgs(){return this.args}getHighlighterRef(){return this.highlighterRef}run(H,E,f){return this.runner(H,f,E)}};var cs=class{constructor(){this.data={}}register(...H){H.forEach(E=>{this.data[E.getId()]=E})}get(H){return this.data[H]}all(){return Object.keys(this.data)}run(H,E,f,L){return this.data[H].run(E,f,L)}},lo=V=>(H,E,f)=>{let L=new Worker(V);return L.postMessage({type:"run",code:H,args:f,input:E}),L},Fr=new cs;var wf=Xt(hs()),ds=class extends sn{constructor(){super("javascript-browser","JavaScript (Browser)",lo("dist/js/langs/javascript-browser/worker.js"),"https://www.ecma-international.org/publications-and-standards/standards/ecma-262/",null,"javascript")}},Ll=ds;var Ef=Xt(ps()),vs=class extends sn{constructor(){super("webperl-5.28.1","Perl 5.28.1 (webperl)",lo("dist/js/langs/webperl-5.28.1/worker.js"),"https://www.perl.org/",["-M5.10.0","-F","-l","-p"],"perl")}},El=vs;var oc=Xt(sr()),sc=Xt(Ol());var gs=class{constructor(...H){this.buffer="";this.registered=[];this.register(...H)}activate(H){this.registered.reduce((E,f)=>f.matches(H)&&!E?(f.isActive()||(f.activate(H),f.reset(),f.write(this.buffer)),!0):(f.deactivate(),f.reset(),E),!1),this.resize()}register(...H){this.registered.push(...H)}reset(){this.buffer="",this.registered.forEach(H=>H.reset())}resize(){this.registered.forEach(H=>{H.isActive()&&H.resize()})}write(H){typeof H=="number"&&(H=String.fromCharCode(H)),this.buffer+=H,this.registered.filter(E=>E.isActive()).forEach(E=>E.write(H))}};var _s=(...V)=>new gs(...V);var Dl=Xt(sr());var ys=class{constructor(){this.active=!1;this.inputs=null}activate(H){this.container.removeAttribute("hidden"),this.active=!0,this.inputs=H,this.resize()}createElement(H="div"){return this.container=document.createElement(H),this.container.setAttribute("hidden",""),this.container}deactivate(){this.container.setAttribute("hidden",""),this.active=!1}isActive(){return this.active}read(){return this.readAsString(null).split("").map(H=>H.charCodeAt(0))}resize(){}},Rl=ys;var sf=(V,H=".")=>V.replace(/[^\x09\x0a\x20-\x7e]/g,H),uo=sf;var ms=class extends Rl{constructor(E,f={}){super();let L=this.createElement("div"),y=document.createElement("textarea");E.append(L),L.append(y),this.editor=(0,Dl.fromTextArea)(y,Jr(nr({mode:null,theme:"monokai",viewportMargin:1/0},f),{extraKeys:nr({"Ctrl-D":"duplicateLine","Ctrl-/":"toggleComment","Shift-Tab":!1,Tab:!1},Object.keys(f.extraKeys||{}).length?f.extraKeys:{})})),this.editor.on("change",()=>{this.inputs!==null&&this.inputs.setBuffer(this.editor.getValue().split("").map(m=>m.charCodeAt(0)))})}matches(E){return/^[\t\n -~]*$/.test(E)}on(E,f){this.editor.on(E,(...L)=>f(...L))}readAsString(E="."){let f=unescape(encodeURIComponent(this.editor.getValue()));return E===null?f:uo(f,E)}reset(){this.editor.setValue("")}setOption(E,f){this.editor.setOption(E,f)}setType(E){this.editor.getOption("mode")!==E&&this.editor.setOption("mode",E)}write(E){Array.isArray(E)&&(E=E.map(f=>String.fromCharCode(f)).join("")),this.editor.setValue(E)}},Oi=ms;var bs=class{constructor(){this.active=!1;this.mimeType="text/plain"}activate(H){this.container.removeAttribute("hidden"),this.active=!0,this.mimeType=H,this.resize()}createElement(H="div",E=!0){let f=document.createElement(H);return E&&f.setAttribute("hidden",""),f}deactivate(){this.container.setAttribute("hidden",""),this.active=!1}isActive(){return this.active}matches(H){return!0}resize(){}},an=bs;var zf=Xt(hs()),qf=Xt(ps()),Ss=class extends an{constructor(E,f={}){super();let L=document.createElement("textarea");this.container=this.createElement("div"),this.container.append(L),E.append(this.container),this.editor=fo.createEditor(L,Jr(nr({},f),{readOnly:!0})),E.append(this.container)}activate(E){super.activate(E),this.editor.setOption("mode",E)}deactivate(){super.deactivate()}matches(E){return["application/ecmascript","application/javascript","application/json","application/x-perl","text/ecmascript","text/javascript","text/json","text/x-perl"].includes(E)}reset(){this.editor.setValue("")}write(E){typeof E=="number"&&(E=String.fromCharCode(E)),this.editor.setValue(this.editor.getValue()+E)}},Bl=Ss;var Cs=class extends an{constructor(E){super();this.buffer="";this.mimeType="text/html";this.container=this.createElement("iframe"),E.append(this.container),this.update()}activate(E){super.activate(E),this.update()}matches(E){return["text/html"].includes(E)}reset(){this.buffer="",this.update()}write(E){typeof E=="number"&&(E=String.fromCharCode(E)),this.buffer+=E,this.update()}update(){let E=this.createElement("iframe",this.container.hasAttribute("hidden"));E.src=`data:${this.mimeType};base64,${btoa(this.buffer)}`,this.container.replaceWith(E),this.container=E}},ho=Cs;var ws=class{constructor(H,E,f,L,y){this.languageSelector=H;this.stdin=E;this.stdout=f;this.stderr=L;this.args=y}static getRaw(H){return H.getValue()}getArgs(){return this.args.getValue()}setArgs(H){this.args.setValue(H)}argsRefresh(){this.args.refresh()}getStdin(){return this.stdin.getValue()}setStdin(H){this.stdin.setValue(H)}},Pl=ws;var Ls=class extends ho{constructor(){super(...arguments);this.imageBuffer="";this.imageMimeType="image/png"}activate(E){super.activate("text/html"),this.imageMimeType=E}css(){return` +`)},enumerable:!1,configurable:!0}),T.prototype.clearSelection=function(){this._model.clearSelection(),this._removeMouseDownListeners(),this.refresh(),this._onSelectionChange.fire()},T.prototype.refresh=function(E){var M=this;this._refreshAnimationFrame||(this._refreshAnimationFrame=window.requestAnimationFrame(function(){return M._refresh()})),x.isLinux&&E&&this.selectionText.length&&this._onLinuxMouseSelection.fire(this.selectionText)},T.prototype._refresh=function(){this._refreshAnimationFrame=void 0,this._onRedrawRequest.fire({start:this._model.finalSelectionStart,end:this._model.finalSelectionEnd,columnSelectMode:this._activeSelectionMode===3})},T.prototype._isClickInSelection=function(E){var M=this._getMouseBufferCoords(E),D=this._model.finalSelectionStart,W=this._model.finalSelectionEnd;return!!(D&&W&&M)&&this._areCoordsInSelection(M,D,W)},T.prototype.isCellInSelection=function(E,M){var D=this._model.finalSelectionStart,W=this._model.finalSelectionEnd;return!(!D||!W)&&this._areCoordsInSelection([E,M],D,W)},T.prototype._areCoordsInSelection=function(E,M,D){return E[1]>M[1]&&E[1]=M[0]&&E[0]=M[0]},T.prototype._selectWordAtCursor=function(E,M){var D,W,I=(W=(D=this._linkifier.currentLink)===null||D===void 0?void 0:D.link)===null||W===void 0?void 0:W.range;if(I)return this._model.selectionStart=[I.start.x-1,I.start.y-1],this._model.selectionStartLength=(0,n.getRangeLength)(I,this._bufferService.cols),this._model.selectionEnd=void 0,!0;var A=this._getMouseBufferCoords(E);return!!A&&(this._selectWordAt(A,M),this._model.selectionEnd=void 0,!0)},T.prototype.selectAll=function(){this._model.isSelectAllActive=!0,this.refresh(),this._onSelectionChange.fire()},T.prototype.selectLines=function(E,M){this._model.clearSelection(),E=Math.max(E,0),M=Math.min(M,this._bufferService.buffer.lines.length-1),this._model.selectionStart=[0,E],this._model.selectionEnd=[this._bufferService.cols,M],this.refresh(),this._onSelectionChange.fire()},T.prototype._onTrim=function(E){this._model.onTrim(E)&&this.refresh()},T.prototype._getMouseBufferCoords=function(E){var M=this._mouseService.getCoords(E,this._screenElement,this._bufferService.cols,this._bufferService.rows,!0);if(M)return M[0]--,M[1]--,M[1]+=this._bufferService.buffer.ydisp,M},T.prototype._getMouseEventScrollAmount=function(E){var M=(0,c.getCoordsRelativeToElement)(window,E,this._screenElement)[1],D=this._renderService.dimensions.canvasHeight;return M>=0&&M<=D?0:(M>D&&(M-=D),M=Math.min(Math.max(M,-50),50),(M/=50)/Math.abs(M)+Math.round(14*M))},T.prototype.shouldForceSelection=function(E){return x.isMac?E.altKey&&this._optionsService.rawOptions.macOptionClickForcesSelection:E.shiftKey},T.prototype.onMouseDown=function(E){if(this._mouseDownTimeStamp=E.timeStamp,(E.button!==2||!this.hasSelection)&&E.button===0){if(!this._enabled){if(!this.shouldForceSelection(E))return;E.stopPropagation()}E.preventDefault(),this._dragScrollAmount=0,this._enabled&&E.shiftKey?this._onIncrementalClick(E):E.detail===1?this._onSingleClick(E):E.detail===2?this._onDoubleClick(E):E.detail===3&&this._onTripleClick(E),this._addMouseDownListeners(),this.refresh(!0)}},T.prototype._addMouseDownListeners=function(){var E=this;this._screenElement.ownerDocument&&(this._screenElement.ownerDocument.addEventListener("mousemove",this._mouseMoveListener),this._screenElement.ownerDocument.addEventListener("mouseup",this._mouseUpListener)),this._dragScrollIntervalTimer=window.setInterval(function(){return E._dragScroll()},50)},T.prototype._removeMouseDownListeners=function(){this._screenElement.ownerDocument&&(this._screenElement.ownerDocument.removeEventListener("mousemove",this._mouseMoveListener),this._screenElement.ownerDocument.removeEventListener("mouseup",this._mouseUpListener)),clearInterval(this._dragScrollIntervalTimer),this._dragScrollIntervalTimer=void 0},T.prototype._onIncrementalClick=function(E){this._model.selectionStart&&(this._model.selectionEnd=this._getMouseBufferCoords(E))},T.prototype._onSingleClick=function(E){if(this._model.selectionStartLength=0,this._model.isSelectAllActive=!1,this._activeSelectionMode=this.shouldColumnSelect(E)?3:0,this._model.selectionStart=this._getMouseBufferCoords(E),this._model.selectionStart){this._model.selectionEnd=void 0;var M=this._bufferService.buffer.lines.get(this._model.selectionStart[1]);M&&M.length!==this._model.selectionStart[0]&&M.hasWidth(this._model.selectionStart[0])===0&&this._model.selectionStart[0]++}},T.prototype._onDoubleClick=function(E){this._selectWordAtCursor(E,!0)&&(this._activeSelectionMode=1)},T.prototype._onTripleClick=function(E){var M=this._getMouseBufferCoords(E);M&&(this._activeSelectionMode=2,this._selectLineAt(M[1]))},T.prototype.shouldColumnSelect=function(E){return E.altKey&&!(x.isMac&&this._optionsService.rawOptions.macOptionClickForcesSelection)},T.prototype._onMouseMove=function(E){if(E.stopImmediatePropagation(),this._model.selectionStart){var M=this._model.selectionEnd?[this._model.selectionEnd[0],this._model.selectionEnd[1]]:null;if(this._model.selectionEnd=this._getMouseBufferCoords(E),this._model.selectionEnd){this._activeSelectionMode===2?this._model.selectionEnd[1]0?this._model.selectionEnd[0]=this._bufferService.cols:this._dragScrollAmount<0&&(this._model.selectionEnd[0]=0));var D=this._bufferService.buffer;if(this._model.selectionEnd[1]0?(this._activeSelectionMode!==3&&(this._model.selectionEnd[0]=this._bufferService.cols),this._model.selectionEnd[1]=Math.min(E.ydisp+this._bufferService.rows,E.lines.length-1)):(this._activeSelectionMode!==3&&(this._model.selectionEnd[0]=0),this._model.selectionEnd[1]=E.ydisp),this.refresh()}},T.prototype._onMouseUp=function(E){var M=E.timeStamp-this._mouseDownTimeStamp;if(this._removeMouseDownListeners(),this.selectionText.length<=1&&M<500&&E.altKey&&this._optionsService.getOption("altClickMovesCursor")){if(this._bufferService.buffer.ybase===this._bufferService.buffer.ydisp){var D=this._mouseService.getCoords(E,this._element,this._bufferService.cols,this._bufferService.rows,!1);if(D&&D[0]!==void 0&&D[1]!==void 0){var W=(0,o.moveToCellSequence)(D[0]-1,D[1]-1,this._bufferService,this._coreService.decPrivateModes.applicationCursorKeys);this._coreService.triggerDataEvent(W,!0)}}}else this._fireEventIfSelectionChanged()},T.prototype._fireEventIfSelectionChanged=function(){var E=this._model.finalSelectionStart,M=this._model.finalSelectionEnd,D=!(!E||!M||E[0]===M[0]&&E[1]===M[1]);D?E&&M&&(this._oldSelectionStart&&this._oldSelectionEnd&&E[0]===this._oldSelectionStart[0]&&E[1]===this._oldSelectionStart[1]&&M[0]===this._oldSelectionEnd[0]&&M[1]===this._oldSelectionEnd[1]||this._fireOnSelectionChange(E,M,D)):this._oldHasSelection&&this._fireOnSelectionChange(E,M,D)},T.prototype._fireOnSelectionChange=function(E,M,D){this._oldSelectionStart=E,this._oldSelectionEnd=M,this._oldHasSelection=D,this._onSelectionChange.fire()},T.prototype._onBufferActivate=function(E){var M=this;this.clearSelection(),this._trimListener.dispose(),this._trimListener=E.activeBuffer.lines.onTrim(function(D){return M._onTrim(D)})},T.prototype._convertViewportColToCharacterIndex=function(E,M){for(var D=M[0],W=0;M[0]>=W;W++){var I=E.loadCell(W,this._workCell).getChars().length;this._workCell.getWidth()===0?D--:I>1&&M[0]!==W&&(D+=I-1)}return D},T.prototype.setSelection=function(E,M,D){this._model.clearSelection(),this._removeMouseDownListeners(),this._model.selectionStart=[E,M],this._model.selectionStartLength=D,this.refresh(),this._fireEventIfSelectionChanged()},T.prototype.rightClickSelect=function(E){this._isClickInSelection(E)||(this._selectWordAtCursor(E,!1)&&this.refresh(!0),this._fireEventIfSelectionChanged())},T.prototype._getWordAt=function(E,M,D,W){if(D===void 0&&(D=!0),W===void 0&&(W=!0),!(E[0]>=this._bufferService.cols)){var I=this._bufferService.buffer,A=I.lines.get(E[1]);if(A){var H=I.translateBufferLineToString(E[1],!1),F=this._convertViewportColToCharacterIndex(A,E),z=F,G=E[0]-F,te=0,ce=0,ee=0,fe=0;if(H.charAt(F)===" "){for(;F>0&&H.charAt(F-1)===" ";)F--;for(;z1&&(fe+=ve-1,z+=ve-1);_e>0&&F>0&&!this._isCharWordSeparator(A.loadCell(_e-1,this._workCell));){A.loadCell(_e-1,this._workCell);var de=this._workCell.getChars().length;this._workCell.getWidth()===0?(te++,_e--):de>1&&(ee+=de-1,F-=de-1),F--,_e--}for(;q1&&(fe+=ke-1,z+=ke-1),z++,q++}}z++;var $=F+G-te+ee,Ie=Math.min(this._bufferService.cols,z-F+te+ce-ee-fe);if(M||H.slice(F,z).trim()!==""){if(D&&$===0&&A.getCodePoint(0)!==32){var ge=I.lines.get(E[1]-1);if(ge&&A.isWrapped&&ge.getCodePoint(this._bufferService.cols-1)!==32){var le=this._getWordAt([this._bufferService.cols-1,E[1]-1],!1,!0,!1);if(le){var V=this._bufferService.cols-le.start;$-=V,Ie+=V}}}if(W&&$+Ie===this._bufferService.cols&&A.getCodePoint(this._bufferService.cols-1)!==32){var Y=I.lines.get(E[1]+1);if(Y?.isWrapped&&Y.getCodePoint(0)!==32){var se=this._getWordAt([0,E[1]+1],!1,!1,!0);se&&(Ie+=se.length)}}return{start:$,length:Ie}}}}},T.prototype._selectWordAt=function(E,M){var D=this._getWordAt(E,M);if(D){for(;D.start<0;)D.start+=this._bufferService.cols,E[1]--;this._model.selectionStart=[D.start,E[1]],this._model.selectionStartLength=D.length}},T.prototype._selectToWordAt=function(E){var M=this._getWordAt(E,!0);if(M){for(var D=E[1];M.start<0;)M.start+=this._bufferService.cols,D--;if(!this._model.areSelectionValuesReversed())for(;M.start+M.length>this._bufferService.cols;)M.length-=this._bufferService.cols,D++;this._model.selectionEnd=[this._model.areSelectionValuesReversed()?M.start:M.start+M.length,D]}},T.prototype._isCharWordSeparator=function(E){return E.getWidth()!==0&&this._optionsService.rawOptions.wordSeparator.indexOf(E.getChars())>=0},T.prototype._selectLineAt=function(E){var M=this._bufferService.buffer.getWrappedRangeForLine(E),D={start:{x:0,y:M.first},end:{x:this._bufferService.cols-1,y:M.last}};this._model.selectionStart=[0,M.first],this._model.selectionEnd=void 0,this._model.selectionStartLength=(0,n.getRangeLength)(D,this._bufferService.cols)},_([g(3,b.IBufferService),g(4,b.ICoreService),g(5,w.IMouseService),g(6,b.IOptionsService),g(7,w.IRenderService)],T)}(l.Disposable);f.SelectionService=d},4725:(R,f,k)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.ICharacterJoinerService=f.ISoundService=f.ISelectionService=f.IRenderService=f.IMouseService=f.ICoreBrowserService=f.ICharSizeService=void 0;var m=k(8343);f.ICharSizeService=(0,m.createDecorator)("CharSizeService"),f.ICoreBrowserService=(0,m.createDecorator)("CoreBrowserService"),f.IMouseService=(0,m.createDecorator)("MouseService"),f.IRenderService=(0,m.createDecorator)("RenderService"),f.ISelectionService=(0,m.createDecorator)("SelectionService"),f.ISoundService=(0,m.createDecorator)("SoundService"),f.ICharacterJoinerService=(0,m.createDecorator)("CharacterJoinerService")},357:function(R,f,k){var m=this&&this.__decorate||function(x,C,u,p){var w,b=arguments.length,c=b<3?C:p===null?p=Object.getOwnPropertyDescriptor(C,u):p;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")c=Reflect.decorate(x,C,u,p);else for(var o=x.length-1;o>=0;o--)(w=x[o])&&(c=(b<3?w(c):b>3?w(C,u,c):w(C,u))||c);return b>3&&c&&Object.defineProperty(C,u,c),c},y=this&&this.__param||function(x,C){return function(u,p){C(u,p,x)}};Object.defineProperty(f,"__esModule",{value:!0}),f.SoundService=void 0;var _=k(2585),g=function(){function x(C){this._optionsService=C}return Object.defineProperty(x,"audioContext",{get:function(){if(!x._audioContext){var C=window.AudioContext||window.webkitAudioContext;if(!C)return console.warn("Web Audio API is not supported by this browser. Consider upgrading to the latest version"),null;x._audioContext=new C}return x._audioContext},enumerable:!1,configurable:!0}),x.prototype.playBellSound=function(){var C=x.audioContext;if(C){var u=C.createBufferSource();C.decodeAudioData(this._base64ToArrayBuffer(this._removeMimeType(this._optionsService.rawOptions.bellSound)),function(p){u.buffer=p,u.connect(C.destination),u.start(0)})}},x.prototype._base64ToArrayBuffer=function(C){for(var u=window.atob(C),p=u.length,w=new Uint8Array(p),b=0;b{Object.defineProperty(f,"__esModule",{value:!0}),f.CircularList=void 0;var m=k(8460),y=function(){function _(g){this._maxLength=g,this.onDeleteEmitter=new m.EventEmitter,this.onInsertEmitter=new m.EventEmitter,this.onTrimEmitter=new m.EventEmitter,this._array=new Array(this._maxLength),this._startIndex=0,this._length=0}return Object.defineProperty(_.prototype,"onDelete",{get:function(){return this.onDeleteEmitter.event},enumerable:!1,configurable:!0}),Object.defineProperty(_.prototype,"onInsert",{get:function(){return this.onInsertEmitter.event},enumerable:!1,configurable:!0}),Object.defineProperty(_.prototype,"onTrim",{get:function(){return this.onTrimEmitter.event},enumerable:!1,configurable:!0}),Object.defineProperty(_.prototype,"maxLength",{get:function(){return this._maxLength},set:function(g){if(this._maxLength!==g){for(var x=new Array(g),C=0;Cthis._length)for(var x=this._length;x=g;p--)this._array[this._getCyclicIndex(p+C.length)]=this._array[this._getCyclicIndex(p)];for(p=0;pthis._maxLength){var w=this._length+C.length-this._maxLength;this._startIndex+=w,this._length=this._maxLength,this.onTrimEmitter.fire(w)}else this._length+=C.length},_.prototype.trimStart=function(g){g>this._length&&(g=this._length),this._startIndex+=g,this._length-=g,this.onTrimEmitter.fire(g)},_.prototype.shiftElements=function(g,x,C){if(!(x<=0)){if(g<0||g>=this._length)throw new Error("start argument out of range");if(g+C<0)throw new Error("Cannot shift elements in list beyond index 0");if(C>0){for(var u=x-1;u>=0;u--)this.set(g+u+C,this.get(g+u));var p=g+x+C-this._length;if(p>0)for(this._length+=p;this._length>this._maxLength;)this._length--,this._startIndex++,this.onTrimEmitter.fire(1)}else for(u=0;u{Object.defineProperty(f,"__esModule",{value:!0}),f.clone=void 0,f.clone=function k(m,y){if(y===void 0&&(y=5),typeof m!="object")return m;var _=Array.isArray(m)?[]:{};for(var g in m)_[g]=y<=1?m[g]:m[g]&&k(m[g],y-1);return _}},8055:function(R,f){var k,m,y,_,g=this&&this.__read||function(u,p){var w=typeof Symbol=="function"&&u[Symbol.iterator];if(!w)return u;var b,c,o=w.call(u),l=[];try{for(;(p===void 0||p-- >0)&&!(b=o.next()).done;)l.push(b.value)}catch(n){c={error:n}}finally{try{b&&!b.done&&(w=o.return)&&w.call(o)}finally{if(c)throw c.error}}return l};function x(u){var p=u.toString(16);return p.length<2?"0"+p:p}function C(u,p){return u>>0}}(k=f.channels||(f.channels={})),(m=f.color||(f.color={})).blend=function(u,p){var w=(255&p.rgba)/255;if(w===1)return{css:p.css,rgba:p.rgba};var b=p.rgba>>24&255,c=p.rgba>>16&255,o=p.rgba>>8&255,l=u.rgba>>24&255,n=u.rgba>>16&255,a=u.rgba>>8&255,h=l+Math.round((b-l)*w),d=n+Math.round((c-n)*w),S=a+Math.round((o-a)*w);return{css:k.toCss(h,d,S),rgba:k.toRgba(h,d,S)}},m.isOpaque=function(u){return(255&u.rgba)==255},m.ensureContrastRatio=function(u,p,w){var b=_.ensureContrastRatio(u.rgba,p.rgba,w);if(b)return _.toColor(b>>24&255,b>>16&255,b>>8&255)},m.opaque=function(u){var p=(255|u.rgba)>>>0,w=g(_.toChannels(p),3),b=w[0],c=w[1],o=w[2];return{css:k.toCss(b,c,o),rgba:p}},m.opacity=function(u,p){var w=Math.round(255*p),b=g(_.toChannels(u.rgba),3),c=b[0],o=b[1],l=b[2];return{css:k.toCss(c,o,l,w),rgba:k.toRgba(c,o,l,w)}},m.toColorRGB=function(u){return[u.rgba>>24&255,u.rgba>>16&255,u.rgba>>8&255]},(f.css||(f.css={})).toColor=function(u){if(u.match(/#[0-9a-f]{3,8}/i))switch(u.length){case 4:var p=parseInt(u.slice(1,2).repeat(2),16),w=parseInt(u.slice(2,3).repeat(2),16),b=parseInt(u.slice(3,4).repeat(2),16);return _.toColor(p,w,b);case 5:p=parseInt(u.slice(1,2).repeat(2),16),w=parseInt(u.slice(2,3).repeat(2),16),b=parseInt(u.slice(3,4).repeat(2),16);var c=parseInt(u.slice(4,5).repeat(2),16);return _.toColor(p,w,b,c);case 7:return{css:u,rgba:(parseInt(u.slice(1),16)<<8|255)>>>0};case 9:return{css:u,rgba:parseInt(u.slice(1),16)>>>0}}var o=u.match(/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(,\s*(0|1|\d?\.(\d+))\s*)?\)/);if(o)return p=parseInt(o[1]),w=parseInt(o[2]),b=parseInt(o[3]),c=Math.round(255*(o[5]===void 0?1:parseFloat(o[5]))),_.toColor(p,w,b,c);throw new Error("css.toColor: Unsupported css format")},function(u){function p(w,b,c){var o=w/255,l=b/255,n=c/255;return .2126*(o<=.03928?o/12.92:Math.pow((o+.055)/1.055,2.4))+.7152*(l<=.03928?l/12.92:Math.pow((l+.055)/1.055,2.4))+.0722*(n<=.03928?n/12.92:Math.pow((n+.055)/1.055,2.4))}u.relativeLuminance=function(w){return p(w>>16&255,w>>8&255,255&w)},u.relativeLuminance2=p}(y=f.rgb||(f.rgb={})),function(u){function p(b,c,o){for(var l=b>>24&255,n=b>>16&255,a=b>>8&255,h=c>>24&255,d=c>>16&255,S=c>>8&255,T=C(y.relativeLuminance2(h,d,S),y.relativeLuminance2(l,n,a));T0||d>0||S>0);)h-=Math.max(0,Math.ceil(.1*h)),d-=Math.max(0,Math.ceil(.1*d)),S-=Math.max(0,Math.ceil(.1*S)),T=C(y.relativeLuminance2(h,d,S),y.relativeLuminance2(l,n,a));return(h<<24|d<<16|S<<8|255)>>>0}function w(b,c,o){for(var l=b>>24&255,n=b>>16&255,a=b>>8&255,h=c>>24&255,d=c>>16&255,S=c>>8&255,T=C(y.relativeLuminance2(h,d,S),y.relativeLuminance2(l,n,a));T>>0}u.ensureContrastRatio=function(b,c,o){var l=y.relativeLuminance(b>>8),n=y.relativeLuminance(c>>8);if(C(l,n)>8));if(hC(l,y.relativeLuminance(d>>8))?a:d}return a}var S=w(b,c,o),T=C(l,y.relativeLuminance(S>>8));return TC(l,y.relativeLuminance(d>>8))?S:d):S}},u.reduceLuminance=p,u.increaseLuminance=w,u.toChannels=function(b){return[b>>24&255,b>>16&255,b>>8&255,255&b]},u.toColor=function(b,c,o,l){return{css:k.toCss(b,c,o,l),rgba:k.toRgba(b,c,o,l)}}}(_=f.rgba||(f.rgba={})),f.toPaddedHex=x,f.contrastRatio=C},8969:function(R,f,k){var m,y=this&&this.__extends||(m=function(M,D){return m=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(W,I){W.__proto__=I}||function(W,I){for(var A in I)Object.prototype.hasOwnProperty.call(I,A)&&(W[A]=I[A])},m(M,D)},function(M,D){if(typeof D!="function"&&D!==null)throw new TypeError("Class extends value "+String(D)+" is not a constructor or null");function W(){this.constructor=M}m(M,D),M.prototype=D===null?Object.create(D):(W.prototype=D.prototype,new W)}),_=this&&this.__values||function(M){var D=typeof Symbol=="function"&&Symbol.iterator,W=D&&M[D],I=0;if(W)return W.call(M);if(M&&typeof M.length=="number")return{next:function(){return M&&I>=M.length&&(M=void 0),{value:M&&M[I++],done:!M}}};throw new TypeError(D?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(f,"__esModule",{value:!0}),f.CoreTerminal=void 0;var g=k(844),x=k(2585),C=k(4348),u=k(7866),p=k(744),w=k(7302),b=k(6975),c=k(8460),o=k(1753),l=k(3730),n=k(1480),a=k(7994),h=k(9282),d=k(5435),S=k(5981),T=!1,E=function(M){function D(W){var I=M.call(this)||this;return I._onBinary=new c.EventEmitter,I._onData=new c.EventEmitter,I._onLineFeed=new c.EventEmitter,I._onResize=new c.EventEmitter,I._onScroll=new c.EventEmitter,I._onWriteParsed=new c.EventEmitter,I._instantiationService=new C.InstantiationService,I.optionsService=new w.OptionsService(W),I._instantiationService.setService(x.IOptionsService,I.optionsService),I._bufferService=I.register(I._instantiationService.createInstance(p.BufferService)),I._instantiationService.setService(x.IBufferService,I._bufferService),I._logService=I._instantiationService.createInstance(u.LogService),I._instantiationService.setService(x.ILogService,I._logService),I.coreService=I.register(I._instantiationService.createInstance(b.CoreService,function(){return I.scrollToBottom()})),I._instantiationService.setService(x.ICoreService,I.coreService),I.coreMouseService=I._instantiationService.createInstance(o.CoreMouseService),I._instantiationService.setService(x.ICoreMouseService,I.coreMouseService),I._dirtyRowService=I._instantiationService.createInstance(l.DirtyRowService),I._instantiationService.setService(x.IDirtyRowService,I._dirtyRowService),I.unicodeService=I._instantiationService.createInstance(n.UnicodeService),I._instantiationService.setService(x.IUnicodeService,I.unicodeService),I._charsetService=I._instantiationService.createInstance(a.CharsetService),I._instantiationService.setService(x.ICharsetService,I._charsetService),I._inputHandler=new d.InputHandler(I._bufferService,I._charsetService,I.coreService,I._dirtyRowService,I._logService,I.optionsService,I.coreMouseService,I.unicodeService),I.register((0,c.forwardEvent)(I._inputHandler.onLineFeed,I._onLineFeed)),I.register(I._inputHandler),I.register((0,c.forwardEvent)(I._bufferService.onResize,I._onResize)),I.register((0,c.forwardEvent)(I.coreService.onData,I._onData)),I.register((0,c.forwardEvent)(I.coreService.onBinary,I._onBinary)),I.register(I.optionsService.onOptionChange(function(A){return I._updateOptions(A)})),I.register(I._bufferService.onScroll(function(A){I._onScroll.fire({position:I._bufferService.buffer.ydisp,source:0}),I._dirtyRowService.markRangeDirty(I._bufferService.buffer.scrollTop,I._bufferService.buffer.scrollBottom)})),I.register(I._inputHandler.onScroll(function(A){I._onScroll.fire({position:I._bufferService.buffer.ydisp,source:0}),I._dirtyRowService.markRangeDirty(I._bufferService.buffer.scrollTop,I._bufferService.buffer.scrollBottom)})),I._writeBuffer=new S.WriteBuffer(function(A,H){return I._inputHandler.parse(A,H)}),I.register((0,c.forwardEvent)(I._writeBuffer.onWriteParsed,I._onWriteParsed)),I}return y(D,M),Object.defineProperty(D.prototype,"onBinary",{get:function(){return this._onBinary.event},enumerable:!1,configurable:!0}),Object.defineProperty(D.prototype,"onData",{get:function(){return this._onData.event},enumerable:!1,configurable:!0}),Object.defineProperty(D.prototype,"onLineFeed",{get:function(){return this._onLineFeed.event},enumerable:!1,configurable:!0}),Object.defineProperty(D.prototype,"onResize",{get:function(){return this._onResize.event},enumerable:!1,configurable:!0}),Object.defineProperty(D.prototype,"onWriteParsed",{get:function(){return this._onWriteParsed.event},enumerable:!1,configurable:!0}),Object.defineProperty(D.prototype,"onScroll",{get:function(){var W=this;return this._onScrollApi||(this._onScrollApi=new c.EventEmitter,this.register(this._onScroll.event(function(I){var A;(A=W._onScrollApi)===null||A===void 0||A.fire(I.position)}))),this._onScrollApi.event},enumerable:!1,configurable:!0}),Object.defineProperty(D.prototype,"cols",{get:function(){return this._bufferService.cols},enumerable:!1,configurable:!0}),Object.defineProperty(D.prototype,"rows",{get:function(){return this._bufferService.rows},enumerable:!1,configurable:!0}),Object.defineProperty(D.prototype,"buffers",{get:function(){return this._bufferService.buffers},enumerable:!1,configurable:!0}),Object.defineProperty(D.prototype,"options",{get:function(){return this.optionsService.options},set:function(W){for(var I in W)this.optionsService.options[I]=W[I]},enumerable:!1,configurable:!0}),D.prototype.dispose=function(){var W;this._isDisposed||(M.prototype.dispose.call(this),(W=this._windowsMode)===null||W===void 0||W.dispose(),this._windowsMode=void 0)},D.prototype.write=function(W,I){this._writeBuffer.write(W,I)},D.prototype.writeSync=function(W,I){this._logService.logLevel<=x.LogLevelEnum.WARN&&!T&&(this._logService.warn("writeSync is unreliable and will be removed soon."),T=!0),this._writeBuffer.writeSync(W,I)},D.prototype.resize=function(W,I){isNaN(W)||isNaN(I)||(W=Math.max(W,p.MINIMUM_COLS),I=Math.max(I,p.MINIMUM_ROWS),this._bufferService.resize(W,I))},D.prototype.scroll=function(W,I){I===void 0&&(I=!1),this._bufferService.scroll(W,I)},D.prototype.scrollLines=function(W,I,A){this._bufferService.scrollLines(W,I,A)},D.prototype.scrollPages=function(W){this._bufferService.scrollPages(W)},D.prototype.scrollToTop=function(){this._bufferService.scrollToTop()},D.prototype.scrollToBottom=function(){this._bufferService.scrollToBottom()},D.prototype.scrollToLine=function(W){this._bufferService.scrollToLine(W)},D.prototype.registerEscHandler=function(W,I){return this._inputHandler.registerEscHandler(W,I)},D.prototype.registerDcsHandler=function(W,I){return this._inputHandler.registerDcsHandler(W,I)},D.prototype.registerCsiHandler=function(W,I){return this._inputHandler.registerCsiHandler(W,I)},D.prototype.registerOscHandler=function(W,I){return this._inputHandler.registerOscHandler(W,I)},D.prototype._setup=function(){this.optionsService.rawOptions.windowsMode&&this._enableWindowsMode()},D.prototype.reset=function(){this._inputHandler.reset(),this._bufferService.reset(),this._charsetService.reset(),this.coreService.reset(),this.coreMouseService.reset()},D.prototype._updateOptions=function(W){var I;switch(W){case"scrollback":this.buffers.resize(this.cols,this.rows);break;case"windowsMode":this.optionsService.rawOptions.windowsMode?this._enableWindowsMode():((I=this._windowsMode)===null||I===void 0||I.dispose(),this._windowsMode=void 0)}},D.prototype._enableWindowsMode=function(){var W=this;if(!this._windowsMode){var I=[];I.push(this.onLineFeed(h.updateWindowsModeWrappedState.bind(null,this._bufferService))),I.push(this.registerCsiHandler({final:"H"},function(){return(0,h.updateWindowsModeWrappedState)(W._bufferService),!1})),this._windowsMode={dispose:function(){var A,H;try{for(var F=_(I),z=F.next();!z.done;z=F.next())z.value.dispose()}catch(G){A={error:G}}finally{try{z&&!z.done&&(H=F.return)&&H.call(F)}finally{if(A)throw A.error}}}}}},D}(g.Disposable);f.CoreTerminal=E},8460:(R,f)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.forwardEvent=f.EventEmitter=void 0;var k=function(){function m(){this._listeners=[],this._disposed=!1}return Object.defineProperty(m.prototype,"event",{get:function(){var y=this;return this._event||(this._event=function(_){return y._listeners.push(_),{dispose:function(){if(!y._disposed){for(var g=0;g24)return A.setWinLines||!1;switch(I){case 1:return!!A.restoreWin;case 2:return!!A.minimizeWin;case 3:return!!A.setWinPosition;case 4:return!!A.setWinSizePixels;case 5:return!!A.raiseWin;case 6:return!!A.lowerWin;case 7:return!!A.refreshWin;case 8:return!!A.setWinSizeChars;case 9:return!!A.maximizeWin;case 10:return!!A.fullscreenWin;case 11:return!!A.getWinState;case 13:return!!A.getWinPosition;case 14:return!!A.getWinSizePixels;case 15:return!!A.getScreenSizePixels;case 16:return!!A.getCellSizePixels;case 18:return!!A.getWinSizeChars;case 19:return!!A.getScreenSizeChars;case 20:return!!A.getIconTitle;case 21:return!!A.getWinTitle;case 22:return!!A.pushTitle;case 23:return!!A.popTitle;case 24:return!!A.setWinLines}return!1}(function(I){I[I.GET_WIN_SIZE_PIXELS=0]="GET_WIN_SIZE_PIXELS",I[I.GET_CELL_SIZE_PIXELS=1]="GET_CELL_SIZE_PIXELS"})(_=f.WindowsOptionsReportType||(f.WindowsOptionsReportType={}));var D=function(){function I(A,H,F,z){this._bufferService=A,this._coreService=H,this._logService=F,this._optionsService=z,this._data=new Uint32Array(0)}return I.prototype.hook=function(A){this._data=new Uint32Array(0)},I.prototype.put=function(A,H,F){this._data=(0,p.concat)(this._data,A.subarray(H,F))},I.prototype.unhook=function(A){if(!A)return this._data=new Uint32Array(0),!0;var H=(0,w.utf32ToString)(this._data);switch(this._data=new Uint32Array(0),H){case'"q':this._coreService.triggerDataEvent(g.C0.ESC+'P1$r0"q'+g.C0.ESC+"\\");break;case'"p':this._coreService.triggerDataEvent(g.C0.ESC+'P1$r61;1"p'+g.C0.ESC+"\\");break;case"r":var F=this._bufferService.buffer.scrollTop+1+";"+(this._bufferService.buffer.scrollBottom+1)+"r";this._coreService.triggerDataEvent(g.C0.ESC+"P1$r"+F+g.C0.ESC+"\\");break;case"m":this._coreService.triggerDataEvent(g.C0.ESC+"P1$r0m"+g.C0.ESC+"\\");break;case" q":var z={block:2,underline:4,bar:6}[this._optionsService.rawOptions.cursorStyle];z-=this._optionsService.rawOptions.cursorBlink?1:0,this._coreService.triggerDataEvent(g.C0.ESC+"P1$r"+z+" q"+g.C0.ESC+"\\");break;default:this._logService.debug("Unknown DCS $q %s",H),this._coreService.triggerDataEvent(g.C0.ESC+"P0$r"+g.C0.ESC+"\\")}return!0},I}(),W=function(I){function A(H,F,z,G,te,ce,ee,fe,_e){_e===void 0&&(_e=new C.EscapeSequenceParser);var q=I.call(this)||this;q._bufferService=H,q._charsetService=F,q._coreService=z,q._dirtyRowService=G,q._logService=te,q._optionsService=ce,q._coreMouseService=ee,q._unicodeService=fe,q._parser=_e,q._parseBuffer=new Uint32Array(4096),q._stringDecoder=new w.StringToUtf32,q._utf8Decoder=new w.Utf8ToUtf32,q._workCell=new l.CellData,q._windowTitle="",q._iconName="",q._windowTitleStack=[],q._iconNameStack=[],q._curAttrData=b.DEFAULT_ATTR_DATA.clone(),q._eraseAttrDataInternal=b.DEFAULT_ATTR_DATA.clone(),q._onRequestBell=new c.EventEmitter,q._onRequestRefreshRows=new c.EventEmitter,q._onRequestReset=new c.EventEmitter,q._onRequestSendFocus=new c.EventEmitter,q._onRequestSyncScrollBar=new c.EventEmitter,q._onRequestWindowsOptionsReport=new c.EventEmitter,q._onA11yChar=new c.EventEmitter,q._onA11yTab=new c.EventEmitter,q._onCursorMove=new c.EventEmitter,q._onLineFeed=new c.EventEmitter,q._onScroll=new c.EventEmitter,q._onTitleChange=new c.EventEmitter,q._onColor=new c.EventEmitter,q._parseStack={paused:!1,cursorStartX:0,cursorStartY:0,decodedLength:0,position:0},q._specialColors=[256,257,258],q.register(q._parser),q._activeBuffer=q._bufferService.buffer,q.register(q._bufferService.buffers.onBufferActivate(function($){return q._activeBuffer=$.activeBuffer})),q._parser.setCsiHandlerFallback(function($,Ie){q._logService.debug("Unknown CSI code: ",{identifier:q._parser.identToString($),params:Ie.toArray()})}),q._parser.setEscHandlerFallback(function($){q._logService.debug("Unknown ESC code: ",{identifier:q._parser.identToString($)})}),q._parser.setExecuteHandlerFallback(function($){q._logService.debug("Unknown EXECUTE code: ",{code:$})}),q._parser.setOscHandlerFallback(function($,Ie,ge){q._logService.debug("Unknown OSC code: ",{identifier:$,action:Ie,data:ge})}),q._parser.setDcsHandlerFallback(function($,Ie,ge){Ie==="HOOK"&&(ge=ge.toArray()),q._logService.debug("Unknown DCS code: ",{identifier:q._parser.identToString($),action:Ie,payload:ge})}),q._parser.setPrintHandler(function($,Ie,ge){return q.print($,Ie,ge)}),q._parser.registerCsiHandler({final:"@"},function($){return q.insertChars($)}),q._parser.registerCsiHandler({intermediates:" ",final:"@"},function($){return q.scrollLeft($)}),q._parser.registerCsiHandler({final:"A"},function($){return q.cursorUp($)}),q._parser.registerCsiHandler({intermediates:" ",final:"A"},function($){return q.scrollRight($)}),q._parser.registerCsiHandler({final:"B"},function($){return q.cursorDown($)}),q._parser.registerCsiHandler({final:"C"},function($){return q.cursorForward($)}),q._parser.registerCsiHandler({final:"D"},function($){return q.cursorBackward($)}),q._parser.registerCsiHandler({final:"E"},function($){return q.cursorNextLine($)}),q._parser.registerCsiHandler({final:"F"},function($){return q.cursorPrecedingLine($)}),q._parser.registerCsiHandler({final:"G"},function($){return q.cursorCharAbsolute($)}),q._parser.registerCsiHandler({final:"H"},function($){return q.cursorPosition($)}),q._parser.registerCsiHandler({final:"I"},function($){return q.cursorForwardTab($)}),q._parser.registerCsiHandler({final:"J"},function($){return q.eraseInDisplay($)}),q._parser.registerCsiHandler({prefix:"?",final:"J"},function($){return q.eraseInDisplay($)}),q._parser.registerCsiHandler({final:"K"},function($){return q.eraseInLine($)}),q._parser.registerCsiHandler({prefix:"?",final:"K"},function($){return q.eraseInLine($)}),q._parser.registerCsiHandler({final:"L"},function($){return q.insertLines($)}),q._parser.registerCsiHandler({final:"M"},function($){return q.deleteLines($)}),q._parser.registerCsiHandler({final:"P"},function($){return q.deleteChars($)}),q._parser.registerCsiHandler({final:"S"},function($){return q.scrollUp($)}),q._parser.registerCsiHandler({final:"T"},function($){return q.scrollDown($)}),q._parser.registerCsiHandler({final:"X"},function($){return q.eraseChars($)}),q._parser.registerCsiHandler({final:"Z"},function($){return q.cursorBackwardTab($)}),q._parser.registerCsiHandler({final:"`"},function($){return q.charPosAbsolute($)}),q._parser.registerCsiHandler({final:"a"},function($){return q.hPositionRelative($)}),q._parser.registerCsiHandler({final:"b"},function($){return q.repeatPrecedingCharacter($)}),q._parser.registerCsiHandler({final:"c"},function($){return q.sendDeviceAttributesPrimary($)}),q._parser.registerCsiHandler({prefix:">",final:"c"},function($){return q.sendDeviceAttributesSecondary($)}),q._parser.registerCsiHandler({final:"d"},function($){return q.linePosAbsolute($)}),q._parser.registerCsiHandler({final:"e"},function($){return q.vPositionRelative($)}),q._parser.registerCsiHandler({final:"f"},function($){return q.hVPosition($)}),q._parser.registerCsiHandler({final:"g"},function($){return q.tabClear($)}),q._parser.registerCsiHandler({final:"h"},function($){return q.setMode($)}),q._parser.registerCsiHandler({prefix:"?",final:"h"},function($){return q.setModePrivate($)}),q._parser.registerCsiHandler({final:"l"},function($){return q.resetMode($)}),q._parser.registerCsiHandler({prefix:"?",final:"l"},function($){return q.resetModePrivate($)}),q._parser.registerCsiHandler({final:"m"},function($){return q.charAttributes($)}),q._parser.registerCsiHandler({final:"n"},function($){return q.deviceStatus($)}),q._parser.registerCsiHandler({prefix:"?",final:"n"},function($){return q.deviceStatusPrivate($)}),q._parser.registerCsiHandler({intermediates:"!",final:"p"},function($){return q.softReset($)}),q._parser.registerCsiHandler({intermediates:" ",final:"q"},function($){return q.setCursorStyle($)}),q._parser.registerCsiHandler({final:"r"},function($){return q.setScrollRegion($)}),q._parser.registerCsiHandler({final:"s"},function($){return q.saveCursor($)}),q._parser.registerCsiHandler({final:"t"},function($){return q.windowOptions($)}),q._parser.registerCsiHandler({final:"u"},function($){return q.restoreCursor($)}),q._parser.registerCsiHandler({intermediates:"'",final:"}"},function($){return q.insertColumns($)}),q._parser.registerCsiHandler({intermediates:"'",final:"~"},function($){return q.deleteColumns($)}),q._parser.setExecuteHandler(g.C0.BEL,function(){return q.bell()}),q._parser.setExecuteHandler(g.C0.LF,function(){return q.lineFeed()}),q._parser.setExecuteHandler(g.C0.VT,function(){return q.lineFeed()}),q._parser.setExecuteHandler(g.C0.FF,function(){return q.lineFeed()}),q._parser.setExecuteHandler(g.C0.CR,function(){return q.carriageReturn()}),q._parser.setExecuteHandler(g.C0.BS,function(){return q.backspace()}),q._parser.setExecuteHandler(g.C0.HT,function(){return q.tab()}),q._parser.setExecuteHandler(g.C0.SO,function(){return q.shiftOut()}),q._parser.setExecuteHandler(g.C0.SI,function(){return q.shiftIn()}),q._parser.setExecuteHandler(g.C1.IND,function(){return q.index()}),q._parser.setExecuteHandler(g.C1.NEL,function(){return q.nextLine()}),q._parser.setExecuteHandler(g.C1.HTS,function(){return q.tabSet()}),q._parser.registerOscHandler(0,new h.OscHandler(function($){return q.setTitle($),q.setIconName($),!0})),q._parser.registerOscHandler(1,new h.OscHandler(function($){return q.setIconName($)})),q._parser.registerOscHandler(2,new h.OscHandler(function($){return q.setTitle($)})),q._parser.registerOscHandler(4,new h.OscHandler(function($){return q.setOrReportIndexedColor($)})),q._parser.registerOscHandler(10,new h.OscHandler(function($){return q.setOrReportFgColor($)})),q._parser.registerOscHandler(11,new h.OscHandler(function($){return q.setOrReportBgColor($)})),q._parser.registerOscHandler(12,new h.OscHandler(function($){return q.setOrReportCursorColor($)})),q._parser.registerOscHandler(104,new h.OscHandler(function($){return q.restoreIndexedColor($)})),q._parser.registerOscHandler(110,new h.OscHandler(function($){return q.restoreFgColor($)})),q._parser.registerOscHandler(111,new h.OscHandler(function($){return q.restoreBgColor($)})),q._parser.registerOscHandler(112,new h.OscHandler(function($){return q.restoreCursorColor($)})),q._parser.registerEscHandler({final:"7"},function(){return q.saveCursor()}),q._parser.registerEscHandler({final:"8"},function(){return q.restoreCursor()}),q._parser.registerEscHandler({final:"D"},function(){return q.index()}),q._parser.registerEscHandler({final:"E"},function(){return q.nextLine()}),q._parser.registerEscHandler({final:"H"},function(){return q.tabSet()}),q._parser.registerEscHandler({final:"M"},function(){return q.reverseIndex()}),q._parser.registerEscHandler({final:"="},function(){return q.keypadApplicationMode()}),q._parser.registerEscHandler({final:">"},function(){return q.keypadNumericMode()}),q._parser.registerEscHandler({final:"c"},function(){return q.fullReset()}),q._parser.registerEscHandler({final:"n"},function(){return q.setgLevel(2)}),q._parser.registerEscHandler({final:"o"},function(){return q.setgLevel(3)}),q._parser.registerEscHandler({final:"|"},function(){return q.setgLevel(3)}),q._parser.registerEscHandler({final:"}"},function(){return q.setgLevel(2)}),q._parser.registerEscHandler({final:"~"},function(){return q.setgLevel(1)}),q._parser.registerEscHandler({intermediates:"%",final:"@"},function(){return q.selectDefaultCharset()}),q._parser.registerEscHandler({intermediates:"%",final:"G"},function(){return q.selectDefaultCharset()});var ve=function($){de._parser.registerEscHandler({intermediates:"(",final:$},function(){return q.selectCharset("("+$)}),de._parser.registerEscHandler({intermediates:")",final:$},function(){return q.selectCharset(")"+$)}),de._parser.registerEscHandler({intermediates:"*",final:$},function(){return q.selectCharset("*"+$)}),de._parser.registerEscHandler({intermediates:"+",final:$},function(){return q.selectCharset("+"+$)}),de._parser.registerEscHandler({intermediates:"-",final:$},function(){return q.selectCharset("-"+$)}),de._parser.registerEscHandler({intermediates:".",final:$},function(){return q.selectCharset("."+$)}),de._parser.registerEscHandler({intermediates:"/",final:$},function(){return q.selectCharset("/"+$)})},de=this;for(var ke in x.CHARSETS)ve(ke);return q._parser.registerEscHandler({intermediates:"#",final:"8"},function(){return q.screenAlignmentPattern()}),q._parser.setErrorHandler(function($){return q._logService.error("Parsing error: ",$),$}),q._parser.registerDcsHandler({intermediates:"$",final:"q"},new D(q._bufferService,q._coreService,q._logService,q._optionsService)),q}return y(A,I),Object.defineProperty(A.prototype,"onRequestBell",{get:function(){return this._onRequestBell.event},enumerable:!1,configurable:!0}),Object.defineProperty(A.prototype,"onRequestRefreshRows",{get:function(){return this._onRequestRefreshRows.event},enumerable:!1,configurable:!0}),Object.defineProperty(A.prototype,"onRequestReset",{get:function(){return this._onRequestReset.event},enumerable:!1,configurable:!0}),Object.defineProperty(A.prototype,"onRequestSendFocus",{get:function(){return this._onRequestSendFocus.event},enumerable:!1,configurable:!0}),Object.defineProperty(A.prototype,"onRequestSyncScrollBar",{get:function(){return this._onRequestSyncScrollBar.event},enumerable:!1,configurable:!0}),Object.defineProperty(A.prototype,"onRequestWindowsOptionsReport",{get:function(){return this._onRequestWindowsOptionsReport.event},enumerable:!1,configurable:!0}),Object.defineProperty(A.prototype,"onA11yChar",{get:function(){return this._onA11yChar.event},enumerable:!1,configurable:!0}),Object.defineProperty(A.prototype,"onA11yTab",{get:function(){return this._onA11yTab.event},enumerable:!1,configurable:!0}),Object.defineProperty(A.prototype,"onCursorMove",{get:function(){return this._onCursorMove.event},enumerable:!1,configurable:!0}),Object.defineProperty(A.prototype,"onLineFeed",{get:function(){return this._onLineFeed.event},enumerable:!1,configurable:!0}),Object.defineProperty(A.prototype,"onScroll",{get:function(){return this._onScroll.event},enumerable:!1,configurable:!0}),Object.defineProperty(A.prototype,"onTitleChange",{get:function(){return this._onTitleChange.event},enumerable:!1,configurable:!0}),Object.defineProperty(A.prototype,"onColor",{get:function(){return this._onColor.event},enumerable:!1,configurable:!0}),A.prototype.dispose=function(){I.prototype.dispose.call(this)},A.prototype._preserveStack=function(H,F,z,G){this._parseStack.paused=!0,this._parseStack.cursorStartX=H,this._parseStack.cursorStartY=F,this._parseStack.decodedLength=z,this._parseStack.position=G},A.prototype._logSlowResolvingAsync=function(H){this._logService.logLevel<=a.LogLevelEnum.WARN&&Promise.race([H,new Promise(function(F,z){return setTimeout(function(){return z("#SLOW_TIMEOUT")},5e3)})]).catch(function(F){if(F!=="#SLOW_TIMEOUT")throw F;console.warn("async parser handler taking longer than 5000 ms")})},A.prototype.parse=function(H,F){var z,G=this._activeBuffer.x,te=this._activeBuffer.y,ce=0,ee=this._parseStack.paused;if(ee){if(z=this._parser.parse(this._parseBuffer,this._parseStack.decodedLength,F))return this._logSlowResolvingAsync(z),z;G=this._parseStack.cursorStartX,te=this._parseStack.cursorStartY,this._parseStack.paused=!1,H.length>E&&(ce=this._parseStack.position+E)}if(this._logService.logLevel<=a.LogLevelEnum.DEBUG&&this._logService.debug("parsing data"+(typeof H=="string"?' "'+H+'"':' "'+Array.prototype.map.call(H,function(ve){return String.fromCharCode(ve)}).join("")+'"'),typeof H=="string"?H.split("").map(function(ve){return ve.charCodeAt(0)}):H),this._parseBuffer.lengthE)for(var fe=ce;fe0&&de.getWidth(this._activeBuffer.x-1)===2&&de.setCellFromCodePoint(this._activeBuffer.x-1,0,1,ve.fg,ve.bg,ve.extended);for(var ke=F;ke=fe){if(_e){for(;this._activeBuffer.x=this._bufferService.rows&&(this._activeBuffer.y=this._bufferService.rows-1),this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).isWrapped=!0),de=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y)}else if(this._activeBuffer.x=fe-1,te===2)continue}if(q&&(de.insertCells(this._activeBuffer.x,te,this._activeBuffer.getNullCell(ve),ve),de.getWidth(fe-1)===2&&de.setCellFromCodePoint(fe-1,o.NULL_CELL_CODE,o.NULL_CELL_WIDTH,ve.fg,ve.bg,ve.extended)),de.setCellFromCodePoint(this._activeBuffer.x++,G,te,ve.fg,ve.bg,ve.extended),te>0)for(;--te;)de.setCellFromCodePoint(this._activeBuffer.x++,0,0,ve.fg,ve.bg,ve.extended)}else de.getWidth(this._activeBuffer.x-1)?de.addCodepointToCell(this._activeBuffer.x-1,G):de.addCodepointToCell(this._activeBuffer.x-2,G)}z-F>0&&(de.loadCell(this._activeBuffer.x-1,this._workCell),this._workCell.getWidth()===2||this._workCell.getCode()>65535?this._parser.precedingCodepoint=0:this._workCell.isCombined()?this._parser.precedingCodepoint=this._workCell.getChars().charCodeAt(0):this._parser.precedingCodepoint=this._workCell.content),this._activeBuffer.x0&&de.getWidth(this._activeBuffer.x)===0&&!de.hasContent(this._activeBuffer.x)&&de.setCellFromCodePoint(this._activeBuffer.x,0,1,ve.fg,ve.bg,ve.extended),this._dirtyRowService.markDirty(this._activeBuffer.y)},A.prototype.registerCsiHandler=function(H,F){var z=this;return H.final!=="t"||H.prefix||H.intermediates?this._parser.registerCsiHandler(H,F):this._parser.registerCsiHandler(H,function(G){return!M(G.params[0],z._optionsService.rawOptions.windowOptions)||F(G)})},A.prototype.registerDcsHandler=function(H,F){return this._parser.registerDcsHandler(H,new d.DcsHandler(F))},A.prototype.registerEscHandler=function(H,F){return this._parser.registerEscHandler(H,F)},A.prototype.registerOscHandler=function(H,F){return this._parser.registerOscHandler(H,new h.OscHandler(F))},A.prototype.bell=function(){return this._onRequestBell.fire(),!0},A.prototype.lineFeed=function(){return this._dirtyRowService.markDirty(this._activeBuffer.y),this._optionsService.rawOptions.convertEol&&(this._activeBuffer.x=0),this._activeBuffer.y++,this._activeBuffer.y===this._activeBuffer.scrollBottom+1?(this._activeBuffer.y--,this._bufferService.scroll(this._eraseAttrData())):this._activeBuffer.y>=this._bufferService.rows&&(this._activeBuffer.y=this._bufferService.rows-1),this._activeBuffer.x>=this._bufferService.cols&&this._activeBuffer.x--,this._dirtyRowService.markDirty(this._activeBuffer.y),this._onLineFeed.fire(),!0},A.prototype.carriageReturn=function(){return this._activeBuffer.x=0,!0},A.prototype.backspace=function(){var H;if(!this._coreService.decPrivateModes.reverseWraparound)return this._restrictCursor(),this._activeBuffer.x>0&&this._activeBuffer.x--,!0;if(this._restrictCursor(this._bufferService.cols),this._activeBuffer.x>0)this._activeBuffer.x--;else if(this._activeBuffer.x===0&&this._activeBuffer.y>this._activeBuffer.scrollTop&&this._activeBuffer.y<=this._activeBuffer.scrollBottom&&(!((H=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y))===null||H===void 0)&&H.isWrapped)){this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).isWrapped=!1,this._activeBuffer.y--,this._activeBuffer.x=this._bufferService.cols-1;var F=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);F.hasWidth(this._activeBuffer.x)&&!F.hasContent(this._activeBuffer.x)&&this._activeBuffer.x--}return this._restrictCursor(),!0},A.prototype.tab=function(){if(this._activeBuffer.x>=this._bufferService.cols)return!0;var H=this._activeBuffer.x;return this._activeBuffer.x=this._activeBuffer.nextStop(),this._optionsService.rawOptions.screenReaderMode&&this._onA11yTab.fire(this._activeBuffer.x-H),!0},A.prototype.shiftOut=function(){return this._charsetService.setgLevel(1),!0},A.prototype.shiftIn=function(){return this._charsetService.setgLevel(0),!0},A.prototype._restrictCursor=function(H){H===void 0&&(H=this._bufferService.cols-1),this._activeBuffer.x=Math.min(H,Math.max(0,this._activeBuffer.x)),this._activeBuffer.y=this._coreService.decPrivateModes.origin?Math.min(this._activeBuffer.scrollBottom,Math.max(this._activeBuffer.scrollTop,this._activeBuffer.y)):Math.min(this._bufferService.rows-1,Math.max(0,this._activeBuffer.y)),this._dirtyRowService.markDirty(this._activeBuffer.y)},A.prototype._setCursor=function(H,F){this._dirtyRowService.markDirty(this._activeBuffer.y),this._coreService.decPrivateModes.origin?(this._activeBuffer.x=H,this._activeBuffer.y=this._activeBuffer.scrollTop+F):(this._activeBuffer.x=H,this._activeBuffer.y=F),this._restrictCursor(),this._dirtyRowService.markDirty(this._activeBuffer.y)},A.prototype._moveCursor=function(H,F){this._restrictCursor(),this._setCursor(this._activeBuffer.x+H,this._activeBuffer.y+F)},A.prototype.cursorUp=function(H){var F=this._activeBuffer.y-this._activeBuffer.scrollTop;return F>=0?this._moveCursor(0,-Math.min(F,H.params[0]||1)):this._moveCursor(0,-(H.params[0]||1)),!0},A.prototype.cursorDown=function(H){var F=this._activeBuffer.scrollBottom-this._activeBuffer.y;return F>=0?this._moveCursor(0,Math.min(F,H.params[0]||1)):this._moveCursor(0,H.params[0]||1),!0},A.prototype.cursorForward=function(H){return this._moveCursor(H.params[0]||1,0),!0},A.prototype.cursorBackward=function(H){return this._moveCursor(-(H.params[0]||1),0),!0},A.prototype.cursorNextLine=function(H){return this.cursorDown(H),this._activeBuffer.x=0,!0},A.prototype.cursorPrecedingLine=function(H){return this.cursorUp(H),this._activeBuffer.x=0,!0},A.prototype.cursorCharAbsolute=function(H){return this._setCursor((H.params[0]||1)-1,this._activeBuffer.y),!0},A.prototype.cursorPosition=function(H){return this._setCursor(H.length>=2?(H.params[1]||1)-1:0,(H.params[0]||1)-1),!0},A.prototype.charPosAbsolute=function(H){return this._setCursor((H.params[0]||1)-1,this._activeBuffer.y),!0},A.prototype.hPositionRelative=function(H){return this._moveCursor(H.params[0]||1,0),!0},A.prototype.linePosAbsolute=function(H){return this._setCursor(this._activeBuffer.x,(H.params[0]||1)-1),!0},A.prototype.vPositionRelative=function(H){return this._moveCursor(0,H.params[0]||1),!0},A.prototype.hVPosition=function(H){return this.cursorPosition(H),!0},A.prototype.tabClear=function(H){var F=H.params[0];return F===0?delete this._activeBuffer.tabs[this._activeBuffer.x]:F===3&&(this._activeBuffer.tabs={}),!0},A.prototype.cursorForwardTab=function(H){if(this._activeBuffer.x>=this._bufferService.cols)return!0;for(var F=H.params[0]||1;F--;)this._activeBuffer.x=this._activeBuffer.nextStop();return!0},A.prototype.cursorBackwardTab=function(H){if(this._activeBuffer.x>=this._bufferService.cols)return!0;for(var F=H.params[0]||1;F--;)this._activeBuffer.x=this._activeBuffer.prevStop();return!0},A.prototype._eraseInBufferLine=function(H,F,z,G){G===void 0&&(G=!1);var te=this._activeBuffer.lines.get(this._activeBuffer.ybase+H);te.replaceCells(F,z,this._activeBuffer.getNullCell(this._eraseAttrData()),this._eraseAttrData()),G&&(te.isWrapped=!1)},A.prototype._resetBufferLine=function(H){var F=this._activeBuffer.lines.get(this._activeBuffer.ybase+H);F.fill(this._activeBuffer.getNullCell(this._eraseAttrData())),this._bufferService.buffer.clearMarkers(this._activeBuffer.ybase+H),F.isWrapped=!1},A.prototype.eraseInDisplay=function(H){var F;switch(this._restrictCursor(this._bufferService.cols),H.params[0]){case 0:for(F=this._activeBuffer.y,this._dirtyRowService.markDirty(F),this._eraseInBufferLine(F++,this._activeBuffer.x,this._bufferService.cols,this._activeBuffer.x===0);F=this._bufferService.cols&&(this._activeBuffer.lines.get(F+1).isWrapped=!1);F--;)this._resetBufferLine(F);this._dirtyRowService.markDirty(0);break;case 2:for(F=this._bufferService.rows,this._dirtyRowService.markDirty(F-1);F--;)this._resetBufferLine(F);this._dirtyRowService.markDirty(0);break;case 3:var z=this._activeBuffer.lines.length-this._bufferService.rows;z>0&&(this._activeBuffer.lines.trimStart(z),this._activeBuffer.ybase=Math.max(this._activeBuffer.ybase-z,0),this._activeBuffer.ydisp=Math.max(this._activeBuffer.ydisp-z,0),this._onScroll.fire(0))}return!0},A.prototype.eraseInLine=function(H){switch(this._restrictCursor(this._bufferService.cols),H.params[0]){case 0:this._eraseInBufferLine(this._activeBuffer.y,this._activeBuffer.x,this._bufferService.cols,this._activeBuffer.x===0);break;case 1:this._eraseInBufferLine(this._activeBuffer.y,0,this._activeBuffer.x+1,!1);break;case 2:this._eraseInBufferLine(this._activeBuffer.y,0,this._bufferService.cols,!0)}return this._dirtyRowService.markDirty(this._activeBuffer.y),!0},A.prototype.insertLines=function(H){this._restrictCursor();var F=H.params[0]||1;if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.ythis._activeBuffer.scrollBottom||this._activeBuffer.ythis._activeBuffer.scrollBottom||this._activeBuffer.ythis._activeBuffer.scrollBottom||this._activeBuffer.ythis._activeBuffer.scrollBottom||this._activeBuffer.ythis._activeBuffer.scrollBottom||this._activeBuffer.y0||(this._is("xterm")||this._is("rxvt-unicode")||this._is("screen")?this._coreService.triggerDataEvent(g.C0.ESC+"[?1;2c"):this._is("linux")&&this._coreService.triggerDataEvent(g.C0.ESC+"[?6c")),!0},A.prototype.sendDeviceAttributesSecondary=function(H){return H.params[0]>0||(this._is("xterm")?this._coreService.triggerDataEvent(g.C0.ESC+"[>0;276;0c"):this._is("rxvt-unicode")?this._coreService.triggerDataEvent(g.C0.ESC+"[>85;95;0c"):this._is("linux")?this._coreService.triggerDataEvent(H.params[0]+"c"):this._is("screen")&&this._coreService.triggerDataEvent(g.C0.ESC+"[>83;40003;0c")),!0},A.prototype._is=function(H){return(this._optionsService.rawOptions.termName+"").indexOf(H)===0},A.prototype.setMode=function(H){for(var F=0;F=2||G[1]===2&&ce+te>=5)break;G[1]&&(te=1)}while(++ce+F5)&&(H=1),F.extended.underlineStyle=H,F.fg|=268435456,H===0&&(F.fg&=-268435457),F.updateExtended()},A.prototype.charAttributes=function(H){if(H.length===1&&H.params[0]===0)return this._curAttrData.fg=b.DEFAULT_ATTR_DATA.fg,this._curAttrData.bg=b.DEFAULT_ATTR_DATA.bg,!0;for(var F,z=H.length,G=this._curAttrData,te=0;te=30&&F<=37?(G.fg&=-50331904,G.fg|=16777216|F-30):F>=40&&F<=47?(G.bg&=-50331904,G.bg|=16777216|F-40):F>=90&&F<=97?(G.fg&=-50331904,G.fg|=16777224|F-90):F>=100&&F<=107?(G.bg&=-50331904,G.bg|=16777224|F-100):F===0?(G.fg=b.DEFAULT_ATTR_DATA.fg,G.bg=b.DEFAULT_ATTR_DATA.bg):F===1?G.fg|=134217728:F===3?G.bg|=67108864:F===4?(G.fg|=268435456,this._processUnderline(H.hasSubParams(te)?H.getSubParams(te)[0]:1,G)):F===5?G.fg|=536870912:F===7?G.fg|=67108864:F===8?G.fg|=1073741824:F===9?G.fg|=2147483648:F===2?G.bg|=134217728:F===21?this._processUnderline(2,G):F===22?(G.fg&=-134217729,G.bg&=-134217729):F===23?G.bg&=-67108865:F===24?G.fg&=-268435457:F===25?G.fg&=-536870913:F===27?G.fg&=-67108865:F===28?G.fg&=-1073741825:F===29?G.fg&=2147483647:F===39?(G.fg&=-67108864,G.fg|=16777215&b.DEFAULT_ATTR_DATA.fg):F===49?(G.bg&=-67108864,G.bg|=16777215&b.DEFAULT_ATTR_DATA.bg):F===38||F===48||F===58?te+=this._extractColor(H,te,G):F===59?(G.extended=G.extended.clone(),G.extended.underlineColor=-1,G.updateExtended()):F===100?(G.fg&=-67108864,G.fg|=16777215&b.DEFAULT_ATTR_DATA.fg,G.bg&=-67108864,G.bg|=16777215&b.DEFAULT_ATTR_DATA.bg):this._logService.debug("Unknown SGR attribute: %d.",F);return!0},A.prototype.deviceStatus=function(H){switch(H.params[0]){case 5:this._coreService.triggerDataEvent(g.C0.ESC+"[0n");break;case 6:var F=this._activeBuffer.y+1,z=this._activeBuffer.x+1;this._coreService.triggerDataEvent(g.C0.ESC+"["+F+";"+z+"R")}return!0},A.prototype.deviceStatusPrivate=function(H){if(H.params[0]===6){var F=this._activeBuffer.y+1,z=this._activeBuffer.x+1;this._coreService.triggerDataEvent(g.C0.ESC+"[?"+F+";"+z+"R")}return!0},A.prototype.softReset=function(H){return this._coreService.isCursorHidden=!1,this._onRequestSyncScrollBar.fire(),this._activeBuffer.scrollTop=0,this._activeBuffer.scrollBottom=this._bufferService.rows-1,this._curAttrData=b.DEFAULT_ATTR_DATA.clone(),this._coreService.reset(),this._charsetService.reset(),this._activeBuffer.savedX=0,this._activeBuffer.savedY=this._activeBuffer.ybase,this._activeBuffer.savedCurAttrData.fg=this._curAttrData.fg,this._activeBuffer.savedCurAttrData.bg=this._curAttrData.bg,this._activeBuffer.savedCharset=this._charsetService.charset,this._coreService.decPrivateModes.origin=!1,!0},A.prototype.setCursorStyle=function(H){var F=H.params[0]||1;switch(F){case 1:case 2:this._optionsService.options.cursorStyle="block";break;case 3:case 4:this._optionsService.options.cursorStyle="underline";break;case 5:case 6:this._optionsService.options.cursorStyle="bar"}var z=F%2==1;return this._optionsService.options.cursorBlink=z,!0},A.prototype.setScrollRegion=function(H){var F,z=H.params[0]||1;return(H.length<2||(F=H.params[1])>this._bufferService.rows||F===0)&&(F=this._bufferService.rows),F>z&&(this._activeBuffer.scrollTop=z-1,this._activeBuffer.scrollBottom=F-1,this._setCursor(0,0)),!0},A.prototype.windowOptions=function(H){if(!M(H.params[0],this._optionsService.rawOptions.windowOptions))return!0;var F=H.length>1?H.params[1]:0;switch(H.params[0]){case 14:F!==2&&this._onRequestWindowsOptionsReport.fire(_.GET_WIN_SIZE_PIXELS);break;case 16:this._onRequestWindowsOptionsReport.fire(_.GET_CELL_SIZE_PIXELS);break;case 18:this._bufferService&&this._coreService.triggerDataEvent(g.C0.ESC+"[8;"+this._bufferService.rows+";"+this._bufferService.cols+"t");break;case 22:F!==0&&F!==2||(this._windowTitleStack.push(this._windowTitle),this._windowTitleStack.length>10&&this._windowTitleStack.shift()),F!==0&&F!==1||(this._iconNameStack.push(this._iconName),this._iconNameStack.length>10&&this._iconNameStack.shift());break;case 23:F!==0&&F!==2||this._windowTitleStack.length&&this.setTitle(this._windowTitleStack.pop()),F!==0&&F!==1||this._iconNameStack.length&&this.setIconName(this._iconNameStack.pop())}return!0},A.prototype.saveCursor=function(H){return this._activeBuffer.savedX=this._activeBuffer.x,this._activeBuffer.savedY=this._activeBuffer.ybase+this._activeBuffer.y,this._activeBuffer.savedCurAttrData.fg=this._curAttrData.fg,this._activeBuffer.savedCurAttrData.bg=this._curAttrData.bg,this._activeBuffer.savedCharset=this._charsetService.charset,!0},A.prototype.restoreCursor=function(H){return this._activeBuffer.x=this._activeBuffer.savedX||0,this._activeBuffer.y=Math.max(this._activeBuffer.savedY-this._activeBuffer.ybase,0),this._curAttrData.fg=this._activeBuffer.savedCurAttrData.fg,this._curAttrData.bg=this._activeBuffer.savedCurAttrData.bg,this._charsetService.charset=this._savedCharset,this._activeBuffer.savedCharset&&(this._charsetService.charset=this._activeBuffer.savedCharset),this._restrictCursor(),!0},A.prototype.setTitle=function(H){return this._windowTitle=H,this._onTitleChange.fire(H),!0},A.prototype.setIconName=function(H){return this._iconName=H,!0},A.prototype.setOrReportIndexedColor=function(H){for(var F=[],z=H.split(";");z.length>1;){var G=z.shift(),te=z.shift();if(/^\d+$/.exec(G)){var ce=parseInt(G);if(0<=ce&&ce<256)if(te==="?")F.push({type:0,index:ce});else{var ee=(0,S.parseColor)(te);ee&&F.push({type:1,index:ce,color:ee})}}}return F.length&&this._onColor.fire(F),!0},A.prototype._setOrReportSpecialColor=function(H,F){for(var z=H.split(";"),G=0;G=this._specialColors.length);++G,++F)if(z[G]==="?")this._onColor.fire([{type:0,index:this._specialColors[F]}]);else{var te=(0,S.parseColor)(z[G]);te&&this._onColor.fire([{type:1,index:this._specialColors[F],color:te}])}return!0},A.prototype.setOrReportFgColor=function(H){return this._setOrReportSpecialColor(H,0)},A.prototype.setOrReportBgColor=function(H){return this._setOrReportSpecialColor(H,1)},A.prototype.setOrReportCursorColor=function(H){return this._setOrReportSpecialColor(H,2)},A.prototype.restoreIndexedColor=function(H){if(!H)return this._onColor.fire([{type:2}]),!0;for(var F=[],z=H.split(";"),G=0;G=this._bufferService.rows&&(this._activeBuffer.y=this._bufferService.rows-1),this._restrictCursor(),!0},A.prototype.tabSet=function(){return this._activeBuffer.tabs[this._activeBuffer.x]=!0,!0},A.prototype.reverseIndex=function(){if(this._restrictCursor(),this._activeBuffer.y===this._activeBuffer.scrollTop){var H=this._activeBuffer.scrollBottom-this._activeBuffer.scrollTop;this._activeBuffer.lines.shiftElements(this._activeBuffer.ybase+this._activeBuffer.y,H,1),this._activeBuffer.lines.set(this._activeBuffer.ybase+this._activeBuffer.y,this._activeBuffer.getBlankLine(this._eraseAttrData())),this._dirtyRowService.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom)}else this._activeBuffer.y--,this._restrictCursor();return!0},A.prototype.fullReset=function(){return this._parser.reset(),this._onRequestReset.fire(),!0},A.prototype.reset=function(){this._curAttrData=b.DEFAULT_ATTR_DATA.clone(),this._eraseAttrDataInternal=b.DEFAULT_ATTR_DATA.clone()},A.prototype._eraseAttrData=function(){return this._eraseAttrDataInternal.bg&=-67108864,this._eraseAttrDataInternal.bg|=67108863&this._curAttrData.bg,this._eraseAttrDataInternal},A.prototype.setgLevel=function(H){return this._charsetService.setgLevel(H),!0},A.prototype.screenAlignmentPattern=function(){var H=new l.CellData;H.content=1<<22|69,H.fg=this._curAttrData.fg,H.bg=this._curAttrData.bg,this._setCursor(0,0);for(var F=0;F=_.length&&(_=void 0),{value:_&&_[C++],done:!_}}};throw new TypeError(g?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(f,"__esModule",{value:!0}),f.getDisposeArrayDisposable=f.disposeArray=f.Disposable=void 0;var m=function(){function _(){this._disposables=[],this._isDisposed=!1}return _.prototype.dispose=function(){var g,x;this._isDisposed=!0;try{for(var C=k(this._disposables),u=C.next();!u.done;u=C.next())u.value.dispose()}catch(p){g={error:p}}finally{try{u&&!u.done&&(x=C.return)&&x.call(C)}finally{if(g)throw g.error}}this._disposables.length=0},_.prototype.register=function(g){return this._disposables.push(g),g},_.prototype.unregister=function(g){var x=this._disposables.indexOf(g);x!==-1&&this._disposables.splice(x,1)},_}();function y(_){var g,x;try{for(var C=k(_),u=C.next();!u.done;u=C.next())u.value.dispose()}catch(p){g={error:p}}finally{try{u&&!u.done&&(x=C.return)&&x.call(C)}finally{if(g)throw g.error}}_.length=0}f.Disposable=m,f.disposeArray=y,f.getDisposeArrayDisposable=function(_){return{dispose:function(){return y(_)}}}},6114:(R,f)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.isLinux=f.isWindows=f.isIphone=f.isIpad=f.isMac=f.isSafari=f.isLegacyEdge=f.isFirefox=void 0;var k=typeof navigator>"u",m=k?"node":navigator.userAgent,y=k?"node":navigator.platform;f.isFirefox=m.includes("Firefox"),f.isLegacyEdge=m.includes("Edge"),f.isSafari=/^((?!chrome|android).)*safari/i.test(m),f.isMac=["Macintosh","MacIntel","MacPPC","Mac68K"].includes(y),f.isIpad=y==="iPad",f.isIphone=y==="iPhone",f.isWindows=["Windows","Win16","Win32","WinCE"].includes(y),f.isLinux=y.indexOf("Linux")>=0},6106:function(R,f){var k=this&&this.__generator||function(y,_){var g,x,C,u,p={label:0,sent:function(){if(1&C[0])throw C[1];return C[1]},trys:[],ops:[]};return u={next:w(0),throw:w(1),return:w(2)},typeof Symbol=="function"&&(u[Symbol.iterator]=function(){return this}),u;function w(b){return function(c){return function(o){if(g)throw new TypeError("Generator is already executing.");for(;p;)try{if(g=1,x&&(C=2&o[0]?x.return:o[0]?x.throw||((C=x.return)&&C.call(x),0):x.next)&&!(C=C.call(x,o[1])).done)return C;switch(x=0,C&&(o=[2&o[0],C.value]),o[0]){case 0:case 1:C=o;break;case 4:return p.label++,{value:o[1],done:!1};case 5:p.label++,x=o[1],o=[0];continue;case 7:o=p.ops.pop(),p.trys.pop();continue;default:if(!((C=(C=p.trys).length>0&&C[C.length-1])||o[0]!==6&&o[0]!==2)){p=0;continue}if(o[0]===3&&(!C||o[1]>C[0]&&o[1]=this._array.length)return[2];if(this._getKey(this._array[g])!==_)return[2];x.label=1;case 1:return[4,this._array[g]];case 2:x.sent(),x.label=3;case 3:if(++g_)return this._search(_,g,C-1);if(this._getKey(this._array[C])<_)return this._search(_,C+1,x);for(;C>0&&this._getKey(this._array[C-1])===_;)C--;return C},y}();f.SortedList=m},8273:(R,f)=>{function k(m,y,_,g){if(_===void 0&&(_=0),g===void 0&&(g=m.length),_>=m.length)return m;_=(m.length+_)%m.length,g=g>=m.length?m.length:(m.length+g)%m.length;for(var x=_;x{Object.defineProperty(f,"__esModule",{value:!0}),f.updateWindowsModeWrappedState=void 0;var m=k(643);f.updateWindowsModeWrappedState=function(y){var _=y.buffer.lines.get(y.buffer.ybase+y.buffer.y-1),g=_?.get(y.cols-1),x=y.buffer.lines.get(y.buffer.ybase+y.buffer.y);x&&g&&(x.isWrapped=g[m.CHAR_DATA_CODE_INDEX]!==m.NULL_CELL_CODE&&g[m.CHAR_DATA_CODE_INDEX]!==m.WHITESPACE_CELL_CODE)}},3734:(R,f)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.ExtendedAttrs=f.AttributeData=void 0;var k=function(){function y(){this.fg=0,this.bg=0,this.extended=new m}return y.toColorRGB=function(_){return[_>>>16&255,_>>>8&255,255&_]},y.fromColorRGB=function(_){return(255&_[0])<<16|(255&_[1])<<8|255&_[2]},y.prototype.clone=function(){var _=new y;return _.fg=this.fg,_.bg=this.bg,_.extended=this.extended.clone(),_},y.prototype.isInverse=function(){return 67108864&this.fg},y.prototype.isBold=function(){return 134217728&this.fg},y.prototype.isUnderline=function(){return 268435456&this.fg},y.prototype.isBlink=function(){return 536870912&this.fg},y.prototype.isInvisible=function(){return 1073741824&this.fg},y.prototype.isItalic=function(){return 67108864&this.bg},y.prototype.isDim=function(){return 134217728&this.bg},y.prototype.isStrikethrough=function(){return 2147483648&this.fg},y.prototype.getFgColorMode=function(){return 50331648&this.fg},y.prototype.getBgColorMode=function(){return 50331648&this.bg},y.prototype.isFgRGB=function(){return(50331648&this.fg)==50331648},y.prototype.isBgRGB=function(){return(50331648&this.bg)==50331648},y.prototype.isFgPalette=function(){return(50331648&this.fg)==16777216||(50331648&this.fg)==33554432},y.prototype.isBgPalette=function(){return(50331648&this.bg)==16777216||(50331648&this.bg)==33554432},y.prototype.isFgDefault=function(){return(50331648&this.fg)==0},y.prototype.isBgDefault=function(){return(50331648&this.bg)==0},y.prototype.isAttributeDefault=function(){return this.fg===0&&this.bg===0},y.prototype.getFgColor=function(){switch(50331648&this.fg){case 16777216:case 33554432:return 255&this.fg;case 50331648:return 16777215&this.fg;default:return-1}},y.prototype.getBgColor=function(){switch(50331648&this.bg){case 16777216:case 33554432:return 255&this.bg;case 50331648:return 16777215&this.bg;default:return-1}},y.prototype.hasExtendedAttrs=function(){return 268435456&this.bg},y.prototype.updateExtended=function(){this.extended.isEmpty()?this.bg&=-268435457:this.bg|=268435456},y.prototype.getUnderlineColor=function(){if(268435456&this.bg&&~this.extended.underlineColor)switch(50331648&this.extended.underlineColor){case 16777216:case 33554432:return 255&this.extended.underlineColor;case 50331648:return 16777215&this.extended.underlineColor;default:return this.getFgColor()}return this.getFgColor()},y.prototype.getUnderlineColorMode=function(){return 268435456&this.bg&&~this.extended.underlineColor?50331648&this.extended.underlineColor:this.getFgColorMode()},y.prototype.isUnderlineColorRGB=function(){return 268435456&this.bg&&~this.extended.underlineColor?(50331648&this.extended.underlineColor)==50331648:this.isFgRGB()},y.prototype.isUnderlineColorPalette=function(){return 268435456&this.bg&&~this.extended.underlineColor?(50331648&this.extended.underlineColor)==16777216||(50331648&this.extended.underlineColor)==33554432:this.isFgPalette()},y.prototype.isUnderlineColorDefault=function(){return 268435456&this.bg&&~this.extended.underlineColor?(50331648&this.extended.underlineColor)==0:this.isFgDefault()},y.prototype.getUnderlineStyle=function(){return 268435456&this.fg?268435456&this.bg?this.extended.underlineStyle:1:0},y}();f.AttributeData=k;var m=function(){function y(_,g){_===void 0&&(_=0),g===void 0&&(g=-1),this.underlineStyle=_,this.underlineColor=g}return y.prototype.clone=function(){return new y(this.underlineStyle,this.underlineColor)},y.prototype.isEmpty=function(){return this.underlineStyle===0},y}();f.ExtendedAttrs=m},9092:function(R,f,k){var m=this&&this.__read||function(l,n){var a=typeof Symbol=="function"&&l[Symbol.iterator];if(!a)return l;var h,d,S=a.call(l),T=[];try{for(;(n===void 0||n-- >0)&&!(h=S.next()).done;)T.push(h.value)}catch(E){d={error:E}}finally{try{h&&!h.done&&(a=S.return)&&a.call(S)}finally{if(d)throw d.error}}return T},y=this&&this.__spreadArray||function(l,n,a){if(a||arguments.length===2)for(var h,d=0,S=n.length;dthis._rows},enumerable:!1,configurable:!0}),Object.defineProperty(l.prototype,"isCursorInViewport",{get:function(){var n=this.ybase+this.y-this.ydisp;return n>=0&&nf.MAX_BUFFER_SIZE?f.MAX_BUFFER_SIZE:a},l.prototype.fillViewportRows=function(n){if(this.lines.length===0){n===void 0&&(n=g.DEFAULT_ATTR_DATA);for(var a=this._rows;a--;)this.lines.push(this.getBlankLine(n))}},l.prototype.clear=function(){this.ydisp=0,this.ybase=0,this.y=0,this.x=0,this.lines=new _.CircularList(this._getCorrectBufferLength(this._rows)),this.scrollTop=0,this.scrollBottom=this._rows-1,this.setupTabStops()},l.prototype.resize=function(n,a){var h=this.getNullCell(g.DEFAULT_ATTR_DATA),d=this._getCorrectBufferLength(a);if(d>this.lines.maxLength&&(this.lines.maxLength=d),this.lines.length>0){if(this._cols0&&this.lines.length<=this.ybase+this.y+T+1?(this.ybase--,T++,this.ydisp>0&&this.ydisp--):this.lines.push(new g.BufferLine(n,h)));else for(E=this._rows;E>a;E--)this.lines.length>a+this.ybase&&(this.lines.length>this.ybase+this.y+1?this.lines.pop():(this.ybase++,this.ydisp++));if(d0&&(this.lines.trimStart(M),this.ybase=Math.max(this.ybase-M,0),this.ydisp=Math.max(this.ydisp-M,0),this.savedY=Math.max(this.savedY-M,0)),this.lines.maxLength=d}this.x=Math.min(this.x,n-1),this.y=Math.min(this.y,a-1),T&&(this.y+=T),this.savedX=Math.min(this.savedX,n-1),this.scrollTop=0}if(this.scrollBottom=a-1,this._isReflowEnabled&&(this._reflow(n,a),this._cols>n))for(S=0;Sthis._cols?this._reflowLarger(n,a):this._reflowSmaller(n,a))},l.prototype._reflowLarger=function(n,a){var h=(0,u.reflowLargerGetLinesToRemove)(this.lines,this._cols,n,this.ybase+this.y,this.getNullCell(g.DEFAULT_ATTR_DATA));if(h.length>0){var d=(0,u.reflowLargerCreateNewLayout)(this.lines,h);(0,u.reflowLargerApplyNewLayout)(this.lines,d.layout),this._reflowLargerAdjustViewport(n,a,d.countRemoved)}},l.prototype._reflowLargerAdjustViewport=function(n,a,h){for(var d=this.getNullCell(g.DEFAULT_ATTR_DATA),S=h;S-- >0;)this.ybase===0?(this.y>0&&this.y--,this.lines.length=0;T--){var E=this.lines.get(T);if(!(!E||!E.isWrapped&&E.getTrimmedLength()<=n)){for(var M=[E];E.isWrapped&&T>0;)E=this.lines.get(--T),M.unshift(E);var D=this.ybase+this.y;if(!(D>=T&&D0&&(d.push({start:T+M.length+S,newLines:F}),S+=F.length),M.push.apply(M,y([],m(F),!1));var te=A.length-1,ce=A[te];ce===0&&(ce=A[--te]);for(var ee=M.length-H-1,fe=I;ee>=0;){var _e=Math.min(fe,ce);if(M[te]===void 0)break;if(M[te].copyCellsFrom(M[ee],fe-_e,ce-_e,_e,!0),(ce-=_e)==0&&(ce=A[--te]),(fe-=_e)==0){ee--;var q=Math.max(ee,0);fe=(0,u.getWrappedLineTrimmedLength)(M,q,this._cols)}}for(z=0;z0;)this.ybase===0?this.y0){var de=[],ke=[];for(z=0;z=0;z--)if(le&&le.start>Ie+V){for(var Y=le.newLines.length-1;Y>=0;Y--)this.lines.set(z--,le.newLines[Y]);z++,de.push({index:Ie+1,amount:le.newLines.length}),V+=le.newLines.length,le=d[++ge]}else this.lines.set(z,ke[Ie--]);var se=0;for(z=de.length-1;z>=0;z--)de[z].index+=se,this.lines.onInsertEmitter.fire(de[z]),se+=de[z].amount;var xe=Math.max(0,$+S-this.lines.maxLength);xe>0&&this.lines.onTrimEmitter.fire(xe)}},l.prototype.stringIndexToBufferIndex=function(n,a,h){for(h===void 0&&(h=!1);a;){var d=this.lines.get(n);if(!d)return[-1,-1];for(var S=h?d.getTrimmedLength():d.length,T=0;T0&&this.lines.get(a).isWrapped;)a--;for(;h+10;);return n>=this._cols?this._cols-1:n<0?0:n},l.prototype.nextStop=function(n){for(n==null&&(n=this.x);!this.tabs[++n]&&n=this._cols?this._cols-1:n<0?0:n},l.prototype.clearMarkers=function(n){this._isClearing=!0;for(var a=0;a=d.index&&(h.line+=d.amount)})),h.register(this.lines.onDelete(function(d){h.line>=d.index&&h.lined.index&&(h.line-=d.amount)})),h.register(h.onDispose(function(){return a._removeMarker(h)})),h},l.prototype._removeMarker=function(n){this._isClearing||this.markers.splice(this.markers.indexOf(n),1)},l.prototype.iterator=function(n,a,h,d,S){return new o(this,n,a,h,d,S)},l}();f.Buffer=c;var o=function(){function l(n,a,h,d,S,T){h===void 0&&(h=0),d===void 0&&(d=n.lines.length),S===void 0&&(S=0),T===void 0&&(T=0),this._buffer=n,this._trimRight=a,this._startIndex=h,this._endIndex=d,this._startOverscan=S,this._endOverscan=T,this._startIndex<0&&(this._startIndex=0),this._endIndex>this._buffer.lines.length&&(this._endIndex=this._buffer.lines.length),this._current=this._startIndex}return l.prototype.hasNext=function(){return this._currentthis._endIndex+this._endOverscan&&(n.last=this._endIndex+this._endOverscan),n.first=Math.max(n.first,0),n.last=Math.min(n.last,this._buffer.lines.length);for(var a="",h=n.first;h<=n.last;++h)a+=this._buffer.translateBufferLineToString(h,this._trimRight);return this._current=n.last+1,{range:n,content:a}},l}();f.BufferStringIterator=o},8437:(R,f,k)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.BufferLine=f.DEFAULT_ATTR_DATA=void 0;var m=k(482),y=k(643),_=k(511),g=k(3734);f.DEFAULT_ATTR_DATA=Object.freeze(new g.AttributeData);var x=function(){function C(u,p,w){w===void 0&&(w=!1),this.isWrapped=w,this._combined={},this._extendedAttrs={},this._data=new Uint32Array(3*u);for(var b=p||_.CellData.fromCharData([0,y.NULL_CELL_CHAR,y.NULL_CELL_WIDTH,y.NULL_CELL_CODE]),c=0;c>22,2097152&p?this._combined[u].charCodeAt(this._combined[u].length-1):w]},C.prototype.set=function(u,p){this._data[3*u+1]=p[y.CHAR_DATA_ATTR_INDEX],p[y.CHAR_DATA_CHAR_INDEX].length>1?(this._combined[u]=p[1],this._data[3*u+0]=2097152|u|p[y.CHAR_DATA_WIDTH_INDEX]<<22):this._data[3*u+0]=p[y.CHAR_DATA_CHAR_INDEX].charCodeAt(0)|p[y.CHAR_DATA_WIDTH_INDEX]<<22},C.prototype.getWidth=function(u){return this._data[3*u+0]>>22},C.prototype.hasWidth=function(u){return 12582912&this._data[3*u+0]},C.prototype.getFg=function(u){return this._data[3*u+1]},C.prototype.getBg=function(u){return this._data[3*u+2]},C.prototype.hasContent=function(u){return 4194303&this._data[3*u+0]},C.prototype.getCodePoint=function(u){var p=this._data[3*u+0];return 2097152&p?this._combined[u].charCodeAt(this._combined[u].length-1):2097151&p},C.prototype.isCombined=function(u){return 2097152&this._data[3*u+0]},C.prototype.getString=function(u){var p=this._data[3*u+0];return 2097152&p?this._combined[u]:2097151&p?(0,m.stringFromCodePoint)(2097151&p):""},C.prototype.loadCell=function(u,p){var w=3*u;return p.content=this._data[w+0],p.fg=this._data[w+1],p.bg=this._data[w+2],2097152&p.content&&(p.combinedData=this._combined[u]),268435456&p.bg&&(p.extended=this._extendedAttrs[u]),p},C.prototype.setCell=function(u,p){2097152&p.content&&(this._combined[u]=p.combinedData),268435456&p.bg&&(this._extendedAttrs[u]=p.extended),this._data[3*u+0]=p.content,this._data[3*u+1]=p.fg,this._data[3*u+2]=p.bg},C.prototype.setCellFromCodePoint=function(u,p,w,b,c,o){268435456&c&&(this._extendedAttrs[u]=o),this._data[3*u+0]=p|w<<22,this._data[3*u+1]=b,this._data[3*u+2]=c},C.prototype.addCodepointToCell=function(u,p){var w=this._data[3*u+0];2097152&w?this._combined[u]+=(0,m.stringFromCodePoint)(p):(2097151&w?(this._combined[u]=(0,m.stringFromCodePoint)(2097151&w)+(0,m.stringFromCodePoint)(p),w&=-2097152,w|=2097152):w=p|1<<22,this._data[3*u+0]=w)},C.prototype.insertCells=function(u,p,w,b){if((u%=this.length)&&this.getWidth(u-1)===2&&this.setCellFromCodePoint(u-1,0,1,b?.fg||0,b?.bg||0,b?.extended||new g.ExtendedAttrs),p=0;--o)this.setCell(u+p+o,this.loadCell(u+o,c));for(o=0;othis.length){var w=new Uint32Array(3*u);this.length&&(3*u=u&&delete this._combined[o]}}else this._data=new Uint32Array(0),this._combined={};this.length=u}},C.prototype.fill=function(u){this._combined={},this._extendedAttrs={};for(var p=0;p=0;--u)if(4194303&this._data[3*u+0])return u+(this._data[3*u+0]>>22);return 0},C.prototype.copyCellsFrom=function(u,p,w,b,c){var o=u._data;if(c)for(var l=b-1;l>=0;l--)for(var n=0;n<3;n++)this._data[3*(w+l)+n]=o[3*(p+l)+n];else for(l=0;l=p&&(this._combined[h-p+w]=u._combined[h])}},C.prototype.translateToString=function(u,p,w){u===void 0&&(u=!1),p===void 0&&(p=0),w===void 0&&(w=this.length),u&&(w=Math.min(w,this.getTrimmedLength()));for(var b="";p>22||1}return b},C}();f.BufferLine=x},4841:(R,f)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.getRangeLength=void 0,f.getRangeLength=function(k,m){if(k.start.y>k.end.y)throw new Error("Buffer range end ("+k.end.x+", "+k.end.y+") cannot be before start ("+k.start.x+", "+k.start.y+")");return m*(k.end.y-k.start.y)+(k.end.x-k.start.x+1)}},4634:(R,f)=>{function k(m,y,_){if(y===m.length-1)return m[y].getTrimmedLength();var g=!m[y].hasContent(_-1)&&m[y].getWidth(_-1)===1,x=m[y+1].getWidth(0)===2;return g&&x?_-1:_}Object.defineProperty(f,"__esModule",{value:!0}),f.getWrappedLineTrimmedLength=f.reflowSmallerGetNewLineLengths=f.reflowLargerApplyNewLayout=f.reflowLargerCreateNewLayout=f.reflowLargerGetLinesToRemove=void 0,f.reflowLargerGetLinesToRemove=function(m,y,_,g,x){for(var C=[],u=0;u=u&&g0&&(E>c||b[E].getTrimmedLength()===0);E--)T++;T>0&&(C.push(u+b.length-T),C.push(T)),u+=b.length-1}}}return C},f.reflowLargerCreateNewLayout=function(m,y){for(var _=[],g=0,x=y[g],C=0,u=0;uw&&(C-=w,u++);var b=m[u].getWidth(C-1)===2;b&&C--;var c=b?_-1:_;g.push(c),p+=c}return g},f.getWrappedLineTrimmedLength=k},5295:function(R,f,k){var m,y=this&&this.__extends||(m=function(C,u){return m=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(p,w){p.__proto__=w}||function(p,w){for(var b in w)Object.prototype.hasOwnProperty.call(w,b)&&(p[b]=w[b])},m(C,u)},function(C,u){if(typeof u!="function"&&u!==null)throw new TypeError("Class extends value "+String(u)+" is not a constructor or null");function p(){this.constructor=C}m(C,u),C.prototype=u===null?Object.create(u):(p.prototype=u.prototype,new p)});Object.defineProperty(f,"__esModule",{value:!0}),f.BufferSet=void 0;var _=k(9092),g=k(8460),x=function(C){function u(p,w){var b=C.call(this)||this;return b._optionsService=p,b._bufferService=w,b._onBufferActivate=b.register(new g.EventEmitter),b.reset(),b}return y(u,C),Object.defineProperty(u.prototype,"onBufferActivate",{get:function(){return this._onBufferActivate.event},enumerable:!1,configurable:!0}),u.prototype.reset=function(){this._normal=new _.Buffer(!0,this._optionsService,this._bufferService),this._normal.fillViewportRows(),this._alt=new _.Buffer(!1,this._optionsService,this._bufferService),this._activeBuffer=this._normal,this._onBufferActivate.fire({activeBuffer:this._normal,inactiveBuffer:this._alt}),this.setupTabStops()},Object.defineProperty(u.prototype,"alt",{get:function(){return this._alt},enumerable:!1,configurable:!0}),Object.defineProperty(u.prototype,"active",{get:function(){return this._activeBuffer},enumerable:!1,configurable:!0}),Object.defineProperty(u.prototype,"normal",{get:function(){return this._normal},enumerable:!1,configurable:!0}),u.prototype.activateNormalBuffer=function(){this._activeBuffer!==this._normal&&(this._normal.x=this._alt.x,this._normal.y=this._alt.y,this._alt.clear(),this._activeBuffer=this._normal,this._onBufferActivate.fire({activeBuffer:this._normal,inactiveBuffer:this._alt}))},u.prototype.activateAltBuffer=function(p){this._activeBuffer!==this._alt&&(this._alt.fillViewportRows(p),this._alt.x=this._normal.x,this._alt.y=this._normal.y,this._activeBuffer=this._alt,this._onBufferActivate.fire({activeBuffer:this._alt,inactiveBuffer:this._normal}))},u.prototype.resize=function(p,w){this._normal.resize(p,w),this._alt.resize(p,w)},u.prototype.setupTabStops=function(p){this._normal.setupTabStops(p),this._alt.setupTabStops(p)},u}(k(844).Disposable);f.BufferSet=x},511:function(R,f,k){var m,y=this&&this.__extends||(m=function(u,p){return m=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(w,b){w.__proto__=b}||function(w,b){for(var c in b)Object.prototype.hasOwnProperty.call(b,c)&&(w[c]=b[c])},m(u,p)},function(u,p){if(typeof p!="function"&&p!==null)throw new TypeError("Class extends value "+String(p)+" is not a constructor or null");function w(){this.constructor=u}m(u,p),u.prototype=p===null?Object.create(p):(w.prototype=p.prototype,new w)});Object.defineProperty(f,"__esModule",{value:!0}),f.CellData=void 0;var _=k(482),g=k(643),x=k(3734),C=function(u){function p(){var w=u!==null&&u.apply(this,arguments)||this;return w.content=0,w.fg=0,w.bg=0,w.extended=new x.ExtendedAttrs,w.combinedData="",w}return y(p,u),p.fromCharData=function(w){var b=new p;return b.setFromCharData(w),b},p.prototype.isCombined=function(){return 2097152&this.content},p.prototype.getWidth=function(){return this.content>>22},p.prototype.getChars=function(){return 2097152&this.content?this.combinedData:2097151&this.content?(0,_.stringFromCodePoint)(2097151&this.content):""},p.prototype.getCode=function(){return this.isCombined()?this.combinedData.charCodeAt(this.combinedData.length-1):2097151&this.content},p.prototype.setFromCharData=function(w){this.fg=w[g.CHAR_DATA_ATTR_INDEX],this.bg=0;var b=!1;if(w[g.CHAR_DATA_CHAR_INDEX].length>2)b=!0;else if(w[g.CHAR_DATA_CHAR_INDEX].length===2){var c=w[g.CHAR_DATA_CHAR_INDEX].charCodeAt(0);if(55296<=c&&c<=56319){var o=w[g.CHAR_DATA_CHAR_INDEX].charCodeAt(1);56320<=o&&o<=57343?this.content=1024*(c-55296)+o-56320+65536|w[g.CHAR_DATA_WIDTH_INDEX]<<22:b=!0}else b=!0}else this.content=w[g.CHAR_DATA_CHAR_INDEX].charCodeAt(0)|w[g.CHAR_DATA_WIDTH_INDEX]<<22;b&&(this.combinedData=w[g.CHAR_DATA_CHAR_INDEX],this.content=2097152|w[g.CHAR_DATA_WIDTH_INDEX]<<22)},p.prototype.getAsCharData=function(){return[this.fg,this.getChars(),this.getWidth(),this.getCode()]},p}(x.AttributeData);f.CellData=C},643:(R,f)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.WHITESPACE_CELL_CODE=f.WHITESPACE_CELL_WIDTH=f.WHITESPACE_CELL_CHAR=f.NULL_CELL_CODE=f.NULL_CELL_WIDTH=f.NULL_CELL_CHAR=f.CHAR_DATA_CODE_INDEX=f.CHAR_DATA_WIDTH_INDEX=f.CHAR_DATA_CHAR_INDEX=f.CHAR_DATA_ATTR_INDEX=f.DEFAULT_ATTR=f.DEFAULT_COLOR=void 0,f.DEFAULT_COLOR=256,f.DEFAULT_ATTR=256|f.DEFAULT_COLOR<<9,f.CHAR_DATA_ATTR_INDEX=0,f.CHAR_DATA_CHAR_INDEX=1,f.CHAR_DATA_WIDTH_INDEX=2,f.CHAR_DATA_CODE_INDEX=3,f.NULL_CELL_CHAR="",f.NULL_CELL_WIDTH=1,f.NULL_CELL_CODE=0,f.WHITESPACE_CELL_CHAR=" ",f.WHITESPACE_CELL_WIDTH=1,f.WHITESPACE_CELL_CODE=32},4863:function(R,f,k){var m,y=this&&this.__extends||(m=function(x,C){return m=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(u,p){u.__proto__=p}||function(u,p){for(var w in p)Object.prototype.hasOwnProperty.call(p,w)&&(u[w]=p[w])},m(x,C)},function(x,C){if(typeof C!="function"&&C!==null)throw new TypeError("Class extends value "+String(C)+" is not a constructor or null");function u(){this.constructor=x}m(x,C),x.prototype=C===null?Object.create(C):(u.prototype=C.prototype,new u)});Object.defineProperty(f,"__esModule",{value:!0}),f.Marker=void 0;var _=k(8460),g=function(x){function C(u){var p=x.call(this)||this;return p.line=u,p._id=C._nextId++,p.isDisposed=!1,p._onDispose=new _.EventEmitter,p}return y(C,x),Object.defineProperty(C.prototype,"id",{get:function(){return this._id},enumerable:!1,configurable:!0}),Object.defineProperty(C.prototype,"onDispose",{get:function(){return this._onDispose.event},enumerable:!1,configurable:!0}),C.prototype.dispose=function(){this.isDisposed||(this.isDisposed=!0,this.line=-1,this._onDispose.fire(),x.prototype.dispose.call(this))},C._nextId=1,C}(k(844).Disposable);f.Marker=g},7116:(R,f)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.DEFAULT_CHARSET=f.CHARSETS=void 0,f.CHARSETS={},f.DEFAULT_CHARSET=f.CHARSETS.B,f.CHARSETS[0]={"`":"\u25C6",a:"\u2592",b:"\u2409",c:"\u240C",d:"\u240D",e:"\u240A",f:"\xB0",g:"\xB1",h:"\u2424",i:"\u240B",j:"\u2518",k:"\u2510",l:"\u250C",m:"\u2514",n:"\u253C",o:"\u23BA",p:"\u23BB",q:"\u2500",r:"\u23BC",s:"\u23BD",t:"\u251C",u:"\u2524",v:"\u2534",w:"\u252C",x:"\u2502",y:"\u2264",z:"\u2265","{":"\u03C0","|":"\u2260","}":"\xA3","~":"\xB7"},f.CHARSETS.A={"#":"\xA3"},f.CHARSETS.B=void 0,f.CHARSETS[4]={"#":"\xA3","@":"\xBE","[":"ij","\\":"\xBD","]":"|","{":"\xA8","|":"f","}":"\xBC","~":"\xB4"},f.CHARSETS.C=f.CHARSETS[5]={"[":"\xC4","\\":"\xD6","]":"\xC5","^":"\xDC","`":"\xE9","{":"\xE4","|":"\xF6","}":"\xE5","~":"\xFC"},f.CHARSETS.R={"#":"\xA3","@":"\xE0","[":"\xB0","\\":"\xE7","]":"\xA7","{":"\xE9","|":"\xF9","}":"\xE8","~":"\xA8"},f.CHARSETS.Q={"@":"\xE0","[":"\xE2","\\":"\xE7","]":"\xEA","^":"\xEE","`":"\xF4","{":"\xE9","|":"\xF9","}":"\xE8","~":"\xFB"},f.CHARSETS.K={"@":"\xA7","[":"\xC4","\\":"\xD6","]":"\xDC","{":"\xE4","|":"\xF6","}":"\xFC","~":"\xDF"},f.CHARSETS.Y={"#":"\xA3","@":"\xA7","[":"\xB0","\\":"\xE7","]":"\xE9","`":"\xF9","{":"\xE0","|":"\xF2","}":"\xE8","~":"\xEC"},f.CHARSETS.E=f.CHARSETS[6]={"@":"\xC4","[":"\xC6","\\":"\xD8","]":"\xC5","^":"\xDC","`":"\xE4","{":"\xE6","|":"\xF8","}":"\xE5","~":"\xFC"},f.CHARSETS.Z={"#":"\xA3","@":"\xA7","[":"\xA1","\\":"\xD1","]":"\xBF","{":"\xB0","|":"\xF1","}":"\xE7"},f.CHARSETS.H=f.CHARSETS[7]={"@":"\xC9","[":"\xC4","\\":"\xD6","]":"\xC5","^":"\xDC","`":"\xE9","{":"\xE4","|":"\xF6","}":"\xE5","~":"\xFC"},f.CHARSETS["="]={"#":"\xF9","@":"\xE0","[":"\xE9","\\":"\xE7","]":"\xEA","^":"\xEE",_:"\xE8","`":"\xF4","{":"\xE4","|":"\xF6","}":"\xFC","~":"\xFB"}},2584:(R,f)=>{var k,m;Object.defineProperty(f,"__esModule",{value:!0}),f.C1_ESCAPED=f.C1=f.C0=void 0,function(y){y.NUL="\0",y.SOH="",y.STX="",y.ETX="",y.EOT="",y.ENQ="",y.ACK="",y.BEL="\x07",y.BS="\b",y.HT=" ",y.LF=` +`,y.VT="\v",y.FF="\f",y.CR="\r",y.SO="",y.SI="",y.DLE="",y.DC1="",y.DC2="",y.DC3="",y.DC4="",y.NAK="",y.SYN="",y.ETB="",y.CAN="",y.EM="",y.SUB="",y.ESC="\x1B",y.FS="",y.GS="",y.RS="",y.US="",y.SP=" ",y.DEL="\x7F"}(k=f.C0||(f.C0={})),(m=f.C1||(f.C1={})).PAD="\x80",m.HOP="\x81",m.BPH="\x82",m.NBH="\x83",m.IND="\x84",m.NEL="\x85",m.SSA="\x86",m.ESA="\x87",m.HTS="\x88",m.HTJ="\x89",m.VTS="\x8A",m.PLD="\x8B",m.PLU="\x8C",m.RI="\x8D",m.SS2="\x8E",m.SS3="\x8F",m.DCS="\x90",m.PU1="\x91",m.PU2="\x92",m.STS="\x93",m.CCH="\x94",m.MW="\x95",m.SPA="\x96",m.EPA="\x97",m.SOS="\x98",m.SGCI="\x99",m.SCI="\x9A",m.CSI="\x9B",m.ST="\x9C",m.OSC="\x9D",m.PM="\x9E",m.APC="\x9F",(f.C1_ESCAPED||(f.C1_ESCAPED={})).ST=k.ESC+"\\"},7399:(R,f,k)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.evaluateKeyboardEvent=void 0;var m=k(2584),y={48:["0",")"],49:["1","!"],50:["2","@"],51:["3","#"],52:["4","$"],53:["5","%"],54:["6","^"],55:["7","&"],56:["8","*"],57:["9","("],186:[";",":"],187:["=","+"],188:[",","<"],189:["-","_"],190:[".",">"],191:["/","?"],192:["`","~"],219:["[","{"],220:["\\","|"],221:["]","}"],222:["'",'"']};f.evaluateKeyboardEvent=function(_,g,x,C){var u={type:0,cancel:!1,key:void 0},p=(_.shiftKey?1:0)|(_.altKey?2:0)|(_.ctrlKey?4:0)|(_.metaKey?8:0);switch(_.keyCode){case 0:_.key==="UIKeyInputUpArrow"?u.key=g?m.C0.ESC+"OA":m.C0.ESC+"[A":_.key==="UIKeyInputLeftArrow"?u.key=g?m.C0.ESC+"OD":m.C0.ESC+"[D":_.key==="UIKeyInputRightArrow"?u.key=g?m.C0.ESC+"OC":m.C0.ESC+"[C":_.key==="UIKeyInputDownArrow"&&(u.key=g?m.C0.ESC+"OB":m.C0.ESC+"[B");break;case 8:if(_.shiftKey){u.key=m.C0.BS;break}if(_.altKey){u.key=m.C0.ESC+m.C0.DEL;break}u.key=m.C0.DEL;break;case 9:if(_.shiftKey){u.key=m.C0.ESC+"[Z";break}u.key=m.C0.HT,u.cancel=!0;break;case 13:u.key=_.altKey?m.C0.ESC+m.C0.CR:m.C0.CR,u.cancel=!0;break;case 27:u.key=m.C0.ESC,_.altKey&&(u.key=m.C0.ESC+m.C0.ESC),u.cancel=!0;break;case 37:if(_.metaKey)break;p?(u.key=m.C0.ESC+"[1;"+(p+1)+"D",u.key===m.C0.ESC+"[1;3D"&&(u.key=m.C0.ESC+(x?"b":"[1;5D"))):u.key=g?m.C0.ESC+"OD":m.C0.ESC+"[D";break;case 39:if(_.metaKey)break;p?(u.key=m.C0.ESC+"[1;"+(p+1)+"C",u.key===m.C0.ESC+"[1;3C"&&(u.key=m.C0.ESC+(x?"f":"[1;5C"))):u.key=g?m.C0.ESC+"OC":m.C0.ESC+"[C";break;case 38:if(_.metaKey)break;p?(u.key=m.C0.ESC+"[1;"+(p+1)+"A",x||u.key!==m.C0.ESC+"[1;3A"||(u.key=m.C0.ESC+"[1;5A")):u.key=g?m.C0.ESC+"OA":m.C0.ESC+"[A";break;case 40:if(_.metaKey)break;p?(u.key=m.C0.ESC+"[1;"+(p+1)+"B",x||u.key!==m.C0.ESC+"[1;3B"||(u.key=m.C0.ESC+"[1;5B")):u.key=g?m.C0.ESC+"OB":m.C0.ESC+"[B";break;case 45:_.shiftKey||_.ctrlKey||(u.key=m.C0.ESC+"[2~");break;case 46:u.key=p?m.C0.ESC+"[3;"+(p+1)+"~":m.C0.ESC+"[3~";break;case 36:u.key=p?m.C0.ESC+"[1;"+(p+1)+"H":g?m.C0.ESC+"OH":m.C0.ESC+"[H";break;case 35:u.key=p?m.C0.ESC+"[1;"+(p+1)+"F":g?m.C0.ESC+"OF":m.C0.ESC+"[F";break;case 33:_.shiftKey?u.type=2:_.ctrlKey?u.key=m.C0.ESC+"[5;"+(p+1)+"~":u.key=m.C0.ESC+"[5~";break;case 34:_.shiftKey?u.type=3:_.ctrlKey?u.key=m.C0.ESC+"[6;"+(p+1)+"~":u.key=m.C0.ESC+"[6~";break;case 112:u.key=p?m.C0.ESC+"[1;"+(p+1)+"P":m.C0.ESC+"OP";break;case 113:u.key=p?m.C0.ESC+"[1;"+(p+1)+"Q":m.C0.ESC+"OQ";break;case 114:u.key=p?m.C0.ESC+"[1;"+(p+1)+"R":m.C0.ESC+"OR";break;case 115:u.key=p?m.C0.ESC+"[1;"+(p+1)+"S":m.C0.ESC+"OS";break;case 116:u.key=p?m.C0.ESC+"[15;"+(p+1)+"~":m.C0.ESC+"[15~";break;case 117:u.key=p?m.C0.ESC+"[17;"+(p+1)+"~":m.C0.ESC+"[17~";break;case 118:u.key=p?m.C0.ESC+"[18;"+(p+1)+"~":m.C0.ESC+"[18~";break;case 119:u.key=p?m.C0.ESC+"[19;"+(p+1)+"~":m.C0.ESC+"[19~";break;case 120:u.key=p?m.C0.ESC+"[20;"+(p+1)+"~":m.C0.ESC+"[20~";break;case 121:u.key=p?m.C0.ESC+"[21;"+(p+1)+"~":m.C0.ESC+"[21~";break;case 122:u.key=p?m.C0.ESC+"[23;"+(p+1)+"~":m.C0.ESC+"[23~";break;case 123:u.key=p?m.C0.ESC+"[24;"+(p+1)+"~":m.C0.ESC+"[24~";break;default:if(!_.ctrlKey||_.shiftKey||_.altKey||_.metaKey)if(x&&!C||!_.altKey||_.metaKey)!x||_.altKey||_.ctrlKey||_.shiftKey||!_.metaKey?_.key&&!_.ctrlKey&&!_.altKey&&!_.metaKey&&_.keyCode>=48&&_.key.length===1?u.key=_.key:_.key&&_.ctrlKey&&(_.key==="_"&&(u.key=m.C0.US),_.key==="@"&&(u.key=m.C0.NUL)):_.keyCode===65&&(u.type=1);else{var w=y[_.keyCode],b=w?.[_.shiftKey?1:0];if(b)u.key=m.C0.ESC+b;else if(_.keyCode>=65&&_.keyCode<=90){var c=_.ctrlKey?_.keyCode-64:_.keyCode+32,o=String.fromCharCode(c);_.shiftKey&&(o=o.toUpperCase()),u.key=m.C0.ESC+o}else _.key==="Dead"&&_.code.startsWith("Key")&&(o=_.code.slice(3,4),_.shiftKey||(o=o.toLowerCase()),u.key=m.C0.ESC+o,u.cancel=!0)}else _.keyCode>=65&&_.keyCode<=90?u.key=String.fromCharCode(_.keyCode-64):_.keyCode===32?u.key=m.C0.NUL:_.keyCode>=51&&_.keyCode<=55?u.key=String.fromCharCode(_.keyCode-51+27):_.keyCode===56?u.key=m.C0.DEL:_.keyCode===219?u.key=m.C0.ESC:_.keyCode===220?u.key=m.C0.FS:_.keyCode===221&&(u.key=m.C0.GS)}return u}},482:(R,f)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.Utf8ToUtf32=f.StringToUtf32=f.utf32ToString=f.stringFromCodePoint=void 0,f.stringFromCodePoint=function(y){return y>65535?(y-=65536,String.fromCharCode(55296+(y>>10))+String.fromCharCode(y%1024+56320)):String.fromCharCode(y)},f.utf32ToString=function(y,_,g){_===void 0&&(_=0),g===void 0&&(g=y.length);for(var x="",C=_;C65535?(u-=65536,x+=String.fromCharCode(55296+(u>>10))+String.fromCharCode(u%1024+56320)):x+=String.fromCharCode(u)}return x};var k=function(){function y(){this._interim=0}return y.prototype.clear=function(){this._interim=0},y.prototype.decode=function(_,g){var x=_.length;if(!x)return 0;var C=0,u=0;this._interim&&(56320<=(b=_.charCodeAt(u++))&&b<=57343?g[C++]=1024*(this._interim-55296)+b-56320+65536:(g[C++]=this._interim,g[C++]=b),this._interim=0);for(var p=u;p=x)return this._interim=w,C;var b;56320<=(b=_.charCodeAt(p))&&b<=57343?g[C++]=1024*(w-55296)+b-56320+65536:(g[C++]=w,g[C++]=b)}else w!==65279&&(g[C++]=w)}return C},y}();f.StringToUtf32=k;var m=function(){function y(){this.interim=new Uint8Array(3)}return y.prototype.clear=function(){this.interim.fill(0)},y.prototype.decode=function(_,g){var x=_.length;if(!x)return 0;var C,u,p,w,b=0,c=0,o=0;if(this.interim[0]){var l=!1,n=this.interim[0];n&=(224&n)==192?31:(240&n)==224?15:7;for(var a=0,h=void 0;(h=63&this.interim[++a])&&a<4;)n<<=6,n|=h;for(var d=(224&this.interim[0])==192?2:(240&this.interim[0])==224?3:4,S=d-a;o=x)return 0;if((192&(h=_[o++]))!=128){o--,l=!0;break}this.interim[a++]=h,n<<=6,n|=63&h}l||(d===2?n<128?o--:g[b++]=n:d===3?n<2048||n>=55296&&n<=57343||n===65279||(g[b++]=n):n<65536||n>1114111||(g[b++]=n)),this.interim.fill(0)}for(var T=x-4,E=o;E=x)return this.interim[0]=C,b;if((192&(u=_[E++]))!=128){E--;continue}if((c=(31&C)<<6|63&u)<128){E--;continue}g[b++]=c}else if((240&C)==224){if(E>=x)return this.interim[0]=C,b;if((192&(u=_[E++]))!=128){E--;continue}if(E>=x)return this.interim[0]=C,this.interim[1]=u,b;if((192&(p=_[E++]))!=128){E--;continue}if((c=(15&C)<<12|(63&u)<<6|63&p)<2048||c>=55296&&c<=57343||c===65279)continue;g[b++]=c}else if((248&C)==240){if(E>=x)return this.interim[0]=C,b;if((192&(u=_[E++]))!=128){E--;continue}if(E>=x)return this.interim[0]=C,this.interim[1]=u,b;if((192&(p=_[E++]))!=128){E--;continue}if(E>=x)return this.interim[0]=C,this.interim[1]=u,this.interim[2]=p,b;if((192&(w=_[E++]))!=128){E--;continue}if((c=(7&C)<<18|(63&u)<<12|(63&p)<<6|63&w)<65536||c>1114111)continue;g[b++]=c}}return b},y}();f.Utf8ToUtf32=m},225:(R,f,k)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.UnicodeV6=void 0;var m,y=k(8273),_=[[768,879],[1155,1158],[1160,1161],[1425,1469],[1471,1471],[1473,1474],[1476,1477],[1479,1479],[1536,1539],[1552,1557],[1611,1630],[1648,1648],[1750,1764],[1767,1768],[1770,1773],[1807,1807],[1809,1809],[1840,1866],[1958,1968],[2027,2035],[2305,2306],[2364,2364],[2369,2376],[2381,2381],[2385,2388],[2402,2403],[2433,2433],[2492,2492],[2497,2500],[2509,2509],[2530,2531],[2561,2562],[2620,2620],[2625,2626],[2631,2632],[2635,2637],[2672,2673],[2689,2690],[2748,2748],[2753,2757],[2759,2760],[2765,2765],[2786,2787],[2817,2817],[2876,2876],[2879,2879],[2881,2883],[2893,2893],[2902,2902],[2946,2946],[3008,3008],[3021,3021],[3134,3136],[3142,3144],[3146,3149],[3157,3158],[3260,3260],[3263,3263],[3270,3270],[3276,3277],[3298,3299],[3393,3395],[3405,3405],[3530,3530],[3538,3540],[3542,3542],[3633,3633],[3636,3642],[3655,3662],[3761,3761],[3764,3769],[3771,3772],[3784,3789],[3864,3865],[3893,3893],[3895,3895],[3897,3897],[3953,3966],[3968,3972],[3974,3975],[3984,3991],[3993,4028],[4038,4038],[4141,4144],[4146,4146],[4150,4151],[4153,4153],[4184,4185],[4448,4607],[4959,4959],[5906,5908],[5938,5940],[5970,5971],[6002,6003],[6068,6069],[6071,6077],[6086,6086],[6089,6099],[6109,6109],[6155,6157],[6313,6313],[6432,6434],[6439,6440],[6450,6450],[6457,6459],[6679,6680],[6912,6915],[6964,6964],[6966,6970],[6972,6972],[6978,6978],[7019,7027],[7616,7626],[7678,7679],[8203,8207],[8234,8238],[8288,8291],[8298,8303],[8400,8431],[12330,12335],[12441,12442],[43014,43014],[43019,43019],[43045,43046],[64286,64286],[65024,65039],[65056,65059],[65279,65279],[65529,65531]],g=[[68097,68099],[68101,68102],[68108,68111],[68152,68154],[68159,68159],[119143,119145],[119155,119170],[119173,119179],[119210,119213],[119362,119364],[917505,917505],[917536,917631],[917760,917999]],x=function(){function C(){if(this.version="6",!m){m=new Uint8Array(65536),(0,y.fill)(m,1),m[0]=0,(0,y.fill)(m,0,1,32),(0,y.fill)(m,0,127,160),(0,y.fill)(m,2,4352,4448),m[9001]=2,m[9002]=2,(0,y.fill)(m,2,11904,42192),m[12351]=1,(0,y.fill)(m,2,44032,55204),(0,y.fill)(m,2,63744,64256),(0,y.fill)(m,2,65040,65050),(0,y.fill)(m,2,65072,65136),(0,y.fill)(m,2,65280,65377),(0,y.fill)(m,2,65504,65511);for(var u=0;u<_.length;++u)(0,y.fill)(m,0,_[u][0],_[u][1]+1)}}return C.prototype.wcwidth=function(u){return u<32?0:u<127?1:u<65536?m[u]:function(p,w){var b,c=0,o=w.length-1;if(pw[o][1])return!1;for(;o>=c;)if(p>w[b=c+o>>1][1])c=b+1;else{if(!(p=131072&&u<=196605||u>=196608&&u<=262141?2:1},C}();f.UnicodeV6=x},5981:(R,f,k)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.WriteBuffer=void 0;var m=k(8460),y=typeof queueMicrotask>"u"?function(g){Promise.resolve().then(g)}:queueMicrotask,_=function(){function g(x){this._action=x,this._writeBuffer=[],this._callbacks=[],this._pendingData=0,this._bufferOffset=0,this._isSyncWriting=!1,this._syncCalls=0,this._onWriteParsed=new m.EventEmitter}return Object.defineProperty(g.prototype,"onWriteParsed",{get:function(){return this._onWriteParsed.event},enumerable:!1,configurable:!0}),g.prototype.writeSync=function(x,C){if(C!==void 0&&this._syncCalls>C)this._syncCalls=0;else if(this._pendingData+=x.length,this._writeBuffer.push(x),this._callbacks.push(void 0),this._syncCalls++,!this._isSyncWriting){var u;for(this._isSyncWriting=!0;u=this._writeBuffer.shift();){this._action(u);var p=this._callbacks.shift();p&&p()}this._pendingData=0,this._bufferOffset=2147483647,this._isSyncWriting=!1,this._syncCalls=0}},g.prototype.write=function(x,C){var u=this;if(this._pendingData>5e7)throw new Error("write data discarded, use flow control to avoid losing data");this._writeBuffer.length||(this._bufferOffset=0,setTimeout(function(){return u._innerWrite()})),this._pendingData+=x.length,this._writeBuffer.push(x),this._callbacks.push(C)},g.prototype._innerWrite=function(x,C){var u=this;x===void 0&&(x=0),C===void 0&&(C=!0);for(var p=x||Date.now();this._writeBuffer.length>this._bufferOffset;){var w=this._writeBuffer[this._bufferOffset],b=this._action(w,C);if(b)return void b.catch(function(o){return y(function(){throw o}),Promise.resolve(!1)}).then(function(o){return Date.now()-p>=12?setTimeout(function(){return u._innerWrite(0,o)}):u._innerWrite(p,o)});var c=this._callbacks[this._bufferOffset];if(c&&c(),this._bufferOffset++,this._pendingData-=w.length,Date.now()-p>=12)break}this._writeBuffer.length>this._bufferOffset?(this._bufferOffset>50&&(this._writeBuffer=this._writeBuffer.slice(this._bufferOffset),this._callbacks=this._callbacks.slice(this._bufferOffset),this._bufferOffset=0),setTimeout(function(){return u._innerWrite()})):(this._writeBuffer.length=0,this._callbacks.length=0,this._pendingData=0,this._bufferOffset=0),this._onWriteParsed.fire()},g}();f.WriteBuffer=_},5941:function(R,f){var k=this&&this.__read||function(g,x){var C=typeof Symbol=="function"&&g[Symbol.iterator];if(!C)return g;var u,p,w=C.call(g),b=[];try{for(;(x===void 0||x-- >0)&&!(u=w.next()).done;)b.push(u.value)}catch(c){p={error:c}}finally{try{u&&!u.done&&(C=w.return)&&C.call(w)}finally{if(p)throw p.error}}return b};Object.defineProperty(f,"__esModule",{value:!0}),f.toRgbString=f.parseColor=void 0;var m=/^([\da-f])\/([\da-f])\/([\da-f])$|^([\da-f]{2})\/([\da-f]{2})\/([\da-f]{2})$|^([\da-f]{3})\/([\da-f]{3})\/([\da-f]{3})$|^([\da-f]{4})\/([\da-f]{4})\/([\da-f]{4})$/,y=/^[\da-f]+$/;function _(g,x){var C=g.toString(16),u=C.length<2?"0"+C:C;switch(x){case 4:return C[0];case 8:return u;case 12:return(u+u).slice(0,3);default:return u+u}}f.parseColor=function(g){if(g){var x=g.toLowerCase();if(x.indexOf("rgb:")===0){x=x.slice(4);var C=m.exec(x);if(C){var u=C[1]?15:C[4]?255:C[7]?4095:65535;return[Math.round(parseInt(C[1]||C[4]||C[7]||C[10],16)/u*255),Math.round(parseInt(C[2]||C[5]||C[8]||C[11],16)/u*255),Math.round(parseInt(C[3]||C[6]||C[9]||C[12],16)/u*255)]}}else if(x.indexOf("#")===0&&(x=x.slice(1),y.exec(x)&&[3,6,9,12].includes(x.length))){for(var p=x.length/3,w=[0,0,0],b=0;b<3;++b){var c=parseInt(x.slice(p*b,p*b+p),16);w[b]=p===1?c<<4:p===2?c:p===3?c>>4:c>>8}return w}}},f.toRgbString=function(g,x){x===void 0&&(x=16);var C=k(g,3),u=C[0],p=C[1],w=C[2];return"rgb:"+_(u,x)+"/"+_(p,x)+"/"+_(w,x)}},5770:(R,f)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.PAYLOAD_LIMIT=void 0,f.PAYLOAD_LIMIT=1e7},6351:(R,f,k)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.DcsHandler=f.DcsParser=void 0;var m=k(482),y=k(8742),_=k(5770),g=[],x=function(){function p(){this._handlers=Object.create(null),this._active=g,this._ident=0,this._handlerFb=function(){},this._stack={paused:!1,loopPosition:0,fallThrough:!1}}return p.prototype.dispose=function(){this._handlers=Object.create(null),this._handlerFb=function(){},this._active=g},p.prototype.registerHandler=function(w,b){this._handlers[w]===void 0&&(this._handlers[w]=[]);var c=this._handlers[w];return c.push(b),{dispose:function(){var o=c.indexOf(b);o!==-1&&c.splice(o,1)}}},p.prototype.clearHandler=function(w){this._handlers[w]&&delete this._handlers[w]},p.prototype.setHandlerFallback=function(w){this._handlerFb=w},p.prototype.reset=function(){if(this._active.length)for(var w=this._stack.paused?this._stack.loopPosition-1:this._active.length-1;w>=0;--w)this._active[w].unhook(!1);this._stack.paused=!1,this._active=g,this._ident=0},p.prototype.hook=function(w,b){if(this.reset(),this._ident=w,this._active=this._handlers[w]||g,this._active.length)for(var c=this._active.length-1;c>=0;c--)this._active[c].hook(b);else this._handlerFb(this._ident,"HOOK",b)},p.prototype.put=function(w,b,c){if(this._active.length)for(var o=this._active.length-1;o>=0;o--)this._active[o].put(w,b,c);else this._handlerFb(this._ident,"PUT",(0,m.utf32ToString)(w,b,c))},p.prototype.unhook=function(w,b){if(b===void 0&&(b=!0),this._active.length){var c=!1,o=this._active.length-1,l=!1;if(this._stack.paused&&(o=this._stack.loopPosition-1,c=b,l=this._stack.fallThrough,this._stack.paused=!1),!l&&c===!1){for(;o>=0&&(c=this._active[o].unhook(w))!==!0;o--)if(c instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=o,this._stack.fallThrough=!1,c;o--}for(;o>=0;o--)if((c=this._active[o].unhook(!1))instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=o,this._stack.fallThrough=!0,c}else this._handlerFb(this._ident,"UNHOOK",w);this._active=g,this._ident=0},p}();f.DcsParser=x;var C=new y.Params;C.addParam(0);var u=function(){function p(w){this._handler=w,this._data="",this._params=C,this._hitLimit=!1}return p.prototype.hook=function(w){this._params=w.length>1||w.params[0]?w.clone():C,this._data="",this._hitLimit=!1},p.prototype.put=function(w,b,c){this._hitLimit||(this._data+=(0,m.utf32ToString)(w,b,c),this._data.length>_.PAYLOAD_LIMIT&&(this._data="",this._hitLimit=!0))},p.prototype.unhook=function(w){var b=this,c=!1;if(this._hitLimit)c=!1;else if(w&&(c=this._handler(this._data,this._params))instanceof Promise)return c.then(function(o){return b._params=C,b._data="",b._hitLimit=!1,o});return this._params=C,this._data="",this._hitLimit=!1,c},p}();f.DcsHandler=u},2015:function(R,f,k){var m,y=this&&this.__extends||(m=function(c,o){return m=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(l,n){l.__proto__=n}||function(l,n){for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(l[a]=n[a])},m(c,o)},function(c,o){if(typeof o!="function"&&o!==null)throw new TypeError("Class extends value "+String(o)+" is not a constructor or null");function l(){this.constructor=c}m(c,o),c.prototype=o===null?Object.create(o):(l.prototype=o.prototype,new l)});Object.defineProperty(f,"__esModule",{value:!0}),f.EscapeSequenceParser=f.VT500_TRANSITION_TABLE=f.TransitionTable=void 0;var _=k(844),g=k(8273),x=k(8742),C=k(6242),u=k(6351),p=function(){function c(o){this.table=new Uint8Array(o)}return c.prototype.setDefault=function(o,l){(0,g.fill)(this.table,o<<4|l)},c.prototype.add=function(o,l,n,a){this.table[l<<8|o]=n<<4|a},c.prototype.addMany=function(o,l,n,a){for(var h=0;h1)throw new Error("only one byte as prefix supported");if((a=l.prefix.charCodeAt(0))&&60>a||a>63)throw new Error("prefix must be in range 0x3c .. 0x3f")}if(l.intermediates){if(l.intermediates.length>2)throw new Error("only two bytes as intermediates are supported");for(var h=0;hd||d>47)throw new Error("intermediate must be in range 0x20 .. 0x2f");a<<=8,a|=d}}if(l.final.length!==1)throw new Error("final must be a single byte");var S=l.final.charCodeAt(0);if(n[0]>S||S>n[1])throw new Error("final must be in range "+n[0]+" .. "+n[1]);return(a<<=8)|S},o.prototype.identToString=function(l){for(var n=[];l;)n.push(String.fromCharCode(255&l)),l>>=8;return n.reverse().join("")},o.prototype.dispose=function(){this._csiHandlers=Object.create(null),this._executeHandlers=Object.create(null),this._escHandlers=Object.create(null),this._oscParser.dispose(),this._dcsParser.dispose()},o.prototype.setPrintHandler=function(l){this._printHandler=l},o.prototype.clearPrintHandler=function(){this._printHandler=this._printHandlerFb},o.prototype.registerEscHandler=function(l,n){var a=this._identifier(l,[48,126]);this._escHandlers[a]===void 0&&(this._escHandlers[a]=[]);var h=this._escHandlers[a];return h.push(n),{dispose:function(){var d=h.indexOf(n);d!==-1&&h.splice(d,1)}}},o.prototype.clearEscHandler=function(l){this._escHandlers[this._identifier(l,[48,126])]&&delete this._escHandlers[this._identifier(l,[48,126])]},o.prototype.setEscHandlerFallback=function(l){this._escHandlerFb=l},o.prototype.setExecuteHandler=function(l,n){this._executeHandlers[l.charCodeAt(0)]=n},o.prototype.clearExecuteHandler=function(l){this._executeHandlers[l.charCodeAt(0)]&&delete this._executeHandlers[l.charCodeAt(0)]},o.prototype.setExecuteHandlerFallback=function(l){this._executeHandlerFb=l},o.prototype.registerCsiHandler=function(l,n){var a=this._identifier(l);this._csiHandlers[a]===void 0&&(this._csiHandlers[a]=[]);var h=this._csiHandlers[a];return h.push(n),{dispose:function(){var d=h.indexOf(n);d!==-1&&h.splice(d,1)}}},o.prototype.clearCsiHandler=function(l){this._csiHandlers[this._identifier(l)]&&delete this._csiHandlers[this._identifier(l)]},o.prototype.setCsiHandlerFallback=function(l){this._csiHandlerFb=l},o.prototype.registerDcsHandler=function(l,n){return this._dcsParser.registerHandler(this._identifier(l),n)},o.prototype.clearDcsHandler=function(l){this._dcsParser.clearHandler(this._identifier(l))},o.prototype.setDcsHandlerFallback=function(l){this._dcsParser.setHandlerFallback(l)},o.prototype.registerOscHandler=function(l,n){return this._oscParser.registerHandler(l,n)},o.prototype.clearOscHandler=function(l){this._oscParser.clearHandler(l)},o.prototype.setOscHandlerFallback=function(l){this._oscParser.setHandlerFallback(l)},o.prototype.setErrorHandler=function(l){this._errorHandler=l},o.prototype.clearErrorHandler=function(){this._errorHandler=this._errorHandlerFb},o.prototype.reset=function(){this.currentState=this.initialState,this._oscParser.reset(),this._dcsParser.reset(),this._params.reset(),this._params.addParam(0),this._collect=0,this.precedingCodepoint=0,this._parseStack.state!==0&&(this._parseStack.state=2,this._parseStack.handlers=[])},o.prototype._preserveStack=function(l,n,a,h,d){this._parseStack.state=l,this._parseStack.handlers=n,this._parseStack.handlerPos=a,this._parseStack.transition=h,this._parseStack.chunkPos=d},o.prototype.parse=function(l,n,a){var h,d=0,S=0,T=0;if(this._parseStack.state)if(this._parseStack.state===2)this._parseStack.state=0,T=this._parseStack.chunkPos+1;else{if(a===void 0||this._parseStack.state===1)throw this._parseStack.state=1,new Error("improper continuation due to previous async handler, giving up parsing");var E=this._parseStack.handlers,M=this._parseStack.handlerPos-1;switch(this._parseStack.state){case 3:if(a===!1&&M>-1){for(;M>=0&&(h=E[M](this._params))!==!0;M--)if(h instanceof Promise)return this._parseStack.handlerPos=M,h}this._parseStack.handlers=[];break;case 4:if(a===!1&&M>-1){for(;M>=0&&(h=E[M]())!==!0;M--)if(h instanceof Promise)return this._parseStack.handlerPos=M,h}this._parseStack.handlers=[];break;case 6:if(d=l[this._parseStack.chunkPos],h=this._dcsParser.unhook(d!==24&&d!==26,a))return h;d===27&&(this._parseStack.transition|=1),this._params.reset(),this._params.addParam(0),this._collect=0;break;case 5:if(d=l[this._parseStack.chunkPos],h=this._oscParser.end(d!==24&&d!==26,a))return h;d===27&&(this._parseStack.transition|=1),this._params.reset(),this._params.addParam(0),this._collect=0}this._parseStack.state=0,T=this._parseStack.chunkPos+1,this.precedingCodepoint=0,this.currentState=15&this._parseStack.transition}for(var D=T;D>4){case 2:for(var W=D+1;;++W){if(W>=n||(d=l[W])<32||d>126&&d=n||(d=l[W])<32||d>126&&d=n||(d=l[W])<32||d>126&&d=n||(d=l[W])<32||d>126&&d=0&&(h=E[I](this._params))!==!0;I--)if(h instanceof Promise)return this._preserveStack(3,E,I,S,D),h;I<0&&this._csiHandlerFb(this._collect<<8|d,this._params),this.precedingCodepoint=0;break;case 8:do switch(d){case 59:this._params.addParam(0);break;case 58:this._params.addSubParam(-1);break;default:this._params.addDigit(d-48)}while(++D47&&d<60);D--;break;case 9:this._collect<<=8,this._collect|=d;break;case 10:for(var A=this._escHandlers[this._collect<<8|d],H=A?A.length-1:-1;H>=0&&(h=A[H]())!==!0;H--)if(h instanceof Promise)return this._preserveStack(4,A,H,S,D),h;H<0&&this._escHandlerFb(this._collect<<8|d),this.precedingCodepoint=0;break;case 11:this._params.reset(),this._params.addParam(0),this._collect=0;break;case 12:this._dcsParser.hook(this._collect<<8|d,this._params);break;case 13:for(var F=D+1;;++F)if(F>=n||(d=l[F])===24||d===26||d===27||d>127&&d=n||(d=l[z])<32||d>127&&d{Object.defineProperty(f,"__esModule",{value:!0}),f.OscHandler=f.OscParser=void 0;var m=k(5770),y=k(482),_=[],g=function(){function C(){this._state=0,this._active=_,this._id=-1,this._handlers=Object.create(null),this._handlerFb=function(){},this._stack={paused:!1,loopPosition:0,fallThrough:!1}}return C.prototype.registerHandler=function(u,p){this._handlers[u]===void 0&&(this._handlers[u]=[]);var w=this._handlers[u];return w.push(p),{dispose:function(){var b=w.indexOf(p);b!==-1&&w.splice(b,1)}}},C.prototype.clearHandler=function(u){this._handlers[u]&&delete this._handlers[u]},C.prototype.setHandlerFallback=function(u){this._handlerFb=u},C.prototype.dispose=function(){this._handlers=Object.create(null),this._handlerFb=function(){},this._active=_},C.prototype.reset=function(){if(this._state===2)for(var u=this._stack.paused?this._stack.loopPosition-1:this._active.length-1;u>=0;--u)this._active[u].end(!1);this._stack.paused=!1,this._active=_,this._id=-1,this._state=0},C.prototype._start=function(){if(this._active=this._handlers[this._id]||_,this._active.length)for(var u=this._active.length-1;u>=0;u--)this._active[u].start();else this._handlerFb(this._id,"START")},C.prototype._put=function(u,p,w){if(this._active.length)for(var b=this._active.length-1;b>=0;b--)this._active[b].put(u,p,w);else this._handlerFb(this._id,"PUT",(0,y.utf32ToString)(u,p,w))},C.prototype.start=function(){this.reset(),this._state=1},C.prototype.put=function(u,p,w){if(this._state!==3){if(this._state===1)for(;p0&&this._put(u,p,w)}},C.prototype.end=function(u,p){if(p===void 0&&(p=!0),this._state!==0){if(this._state!==3)if(this._state===1&&this._start(),this._active.length){var w=!1,b=this._active.length-1,c=!1;if(this._stack.paused&&(b=this._stack.loopPosition-1,w=p,c=this._stack.fallThrough,this._stack.paused=!1),!c&&w===!1){for(;b>=0&&(w=this._active[b].end(u))!==!0;b--)if(w instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=b,this._stack.fallThrough=!1,w;b--}for(;b>=0;b--)if((w=this._active[b].end(!1))instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=b,this._stack.fallThrough=!0,w}else this._handlerFb(this._id,"END",u);this._active=_,this._id=-1,this._state=0}},C}();f.OscParser=g;var x=function(){function C(u){this._handler=u,this._data="",this._hitLimit=!1}return C.prototype.start=function(){this._data="",this._hitLimit=!1},C.prototype.put=function(u,p,w){this._hitLimit||(this._data+=(0,y.utf32ToString)(u,p,w),this._data.length>m.PAYLOAD_LIMIT&&(this._data="",this._hitLimit=!0))},C.prototype.end=function(u){var p=this,w=!1;if(this._hitLimit)w=!1;else if(u&&(w=this._handler(this._data))instanceof Promise)return w.then(function(b){return p._data="",p._hitLimit=!1,b});return this._data="",this._hitLimit=!1,w},C}();f.OscHandler=x},8742:(R,f)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.Params=void 0;var k=2147483647,m=function(){function y(_,g){if(_===void 0&&(_=32),g===void 0&&(g=32),this.maxLength=_,this.maxSubParamsLength=g,g>256)throw new Error("maxSubParamsLength must not be greater than 256");this.params=new Int32Array(_),this.length=0,this._subParams=new Int32Array(g),this._subParamsLength=0,this._subParamsIdx=new Uint16Array(_),this._rejectDigits=!1,this._rejectSubDigits=!1,this._digitIsSub=!1}return y.fromArray=function(_){var g=new y;if(!_.length)return g;for(var x=Array.isArray(_[0])?1:0;x<_.length;++x){var C=_[x];if(Array.isArray(C))for(var u=0;u>8,C=255&this._subParamsIdx[g];C-x>0&&_.push(Array.prototype.slice.call(this._subParams,x,C))}return _},y.prototype.reset=function(){this.length=0,this._subParamsLength=0,this._rejectDigits=!1,this._rejectSubDigits=!1,this._digitIsSub=!1},y.prototype.addParam=function(_){if(this._digitIsSub=!1,this.length>=this.maxLength)this._rejectDigits=!0;else{if(_<-1)throw new Error("values lesser than -1 are not allowed");this._subParamsIdx[this.length]=this._subParamsLength<<8|this._subParamsLength,this.params[this.length++]=_>k?k:_}},y.prototype.addSubParam=function(_){if(this._digitIsSub=!0,this.length)if(this._rejectDigits||this._subParamsLength>=this.maxSubParamsLength)this._rejectSubDigits=!0;else{if(_<-1)throw new Error("values lesser than -1 are not allowed");this._subParams[this._subParamsLength++]=_>k?k:_,this._subParamsIdx[this.length-1]++}},y.prototype.hasSubParams=function(_){return(255&this._subParamsIdx[_])-(this._subParamsIdx[_]>>8)>0},y.prototype.getSubParams=function(_){var g=this._subParamsIdx[_]>>8,x=255&this._subParamsIdx[_];return x-g>0?this._subParams.subarray(g,x):null},y.prototype.getSubParamsAll=function(){for(var _={},g=0;g>8,C=255&this._subParamsIdx[g];C-x>0&&(_[g]=this._subParams.slice(x,C))}return _},y.prototype.addDigit=function(_){var g;if(!(this._rejectDigits||!(g=this._digitIsSub?this._subParamsLength:this.length)||this._digitIsSub&&this._rejectSubDigits)){var x=this._digitIsSub?this._subParams:this.params,C=x[g-1];x[g-1]=~C?Math.min(10*C+_,k):_}},y}();f.Params=m},5741:(R,f)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.AddonManager=void 0;var k=function(){function m(){this._addons=[]}return m.prototype.dispose=function(){for(var y=this._addons.length-1;y>=0;y--)this._addons[y].instance.dispose()},m.prototype.loadAddon=function(y,_){var g=this,x={instance:_,dispose:_.dispose,isDisposed:!1};this._addons.push(x),_.dispose=function(){return g._wrappedAddonDispose(x)},_.activate(y)},m.prototype._wrappedAddonDispose=function(y){if(!y.isDisposed){for(var _=-1,g=0;g{Object.defineProperty(f,"__esModule",{value:!0}),f.BufferApiView=void 0;var m=k(3785),y=k(511),_=function(){function g(x,C){this._buffer=x,this.type=C}return g.prototype.init=function(x){return this._buffer=x,this},Object.defineProperty(g.prototype,"cursorY",{get:function(){return this._buffer.y},enumerable:!1,configurable:!0}),Object.defineProperty(g.prototype,"cursorX",{get:function(){return this._buffer.x},enumerable:!1,configurable:!0}),Object.defineProperty(g.prototype,"viewportY",{get:function(){return this._buffer.ydisp},enumerable:!1,configurable:!0}),Object.defineProperty(g.prototype,"baseY",{get:function(){return this._buffer.ybase},enumerable:!1,configurable:!0}),Object.defineProperty(g.prototype,"length",{get:function(){return this._buffer.lines.length},enumerable:!1,configurable:!0}),g.prototype.getLine=function(x){var C=this._buffer.lines.get(x);if(C)return new m.BufferLineApiView(C)},g.prototype.getNullCell=function(){return new y.CellData},g}();f.BufferApiView=_},3785:(R,f,k)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.BufferLineApiView=void 0;var m=k(511),y=function(){function _(g){this._line=g}return Object.defineProperty(_.prototype,"isWrapped",{get:function(){return this._line.isWrapped},enumerable:!1,configurable:!0}),Object.defineProperty(_.prototype,"length",{get:function(){return this._line.length},enumerable:!1,configurable:!0}),_.prototype.getCell=function(g,x){if(!(g<0||g>=this._line.length))return x?(this._line.loadCell(g,x),x):this._line.loadCell(g,new m.CellData)},_.prototype.translateToString=function(g,x,C){return this._line.translateToString(g,x,C)},_}();f.BufferLineApiView=y},8285:(R,f,k)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.BufferNamespaceApi=void 0;var m=k(8771),y=k(8460),_=function(){function g(x){var C=this;this._core=x,this._onBufferChange=new y.EventEmitter,this._normal=new m.BufferApiView(this._core.buffers.normal,"normal"),this._alternate=new m.BufferApiView(this._core.buffers.alt,"alternate"),this._core.buffers.onBufferActivate(function(){return C._onBufferChange.fire(C.active)})}return Object.defineProperty(g.prototype,"onBufferChange",{get:function(){return this._onBufferChange.event},enumerable:!1,configurable:!0}),Object.defineProperty(g.prototype,"active",{get:function(){if(this._core.buffers.active===this._core.buffers.normal)return this.normal;if(this._core.buffers.active===this._core.buffers.alt)return this.alternate;throw new Error("Active buffer is neither normal nor alternate")},enumerable:!1,configurable:!0}),Object.defineProperty(g.prototype,"normal",{get:function(){return this._normal.init(this._core.buffers.normal)},enumerable:!1,configurable:!0}),Object.defineProperty(g.prototype,"alternate",{get:function(){return this._alternate.init(this._core.buffers.alt)},enumerable:!1,configurable:!0}),g}();f.BufferNamespaceApi=_},7975:(R,f)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.ParserApi=void 0;var k=function(){function m(y){this._core=y}return m.prototype.registerCsiHandler=function(y,_){return this._core.registerCsiHandler(y,function(g){return _(g.toArray())})},m.prototype.addCsiHandler=function(y,_){return this.registerCsiHandler(y,_)},m.prototype.registerDcsHandler=function(y,_){return this._core.registerDcsHandler(y,function(g,x){return _(g,x.toArray())})},m.prototype.addDcsHandler=function(y,_){return this.registerDcsHandler(y,_)},m.prototype.registerEscHandler=function(y,_){return this._core.registerEscHandler(y,_)},m.prototype.addEscHandler=function(y,_){return this.registerEscHandler(y,_)},m.prototype.registerOscHandler=function(y,_){return this._core.registerOscHandler(y,_)},m.prototype.addOscHandler=function(y,_){return this.registerOscHandler(y,_)},m}();f.ParserApi=k},7090:(R,f)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.UnicodeApi=void 0;var k=function(){function m(y){this._core=y}return m.prototype.register=function(y){this._core.unicodeService.register(y)},Object.defineProperty(m.prototype,"versions",{get:function(){return this._core.unicodeService.versions},enumerable:!1,configurable:!0}),Object.defineProperty(m.prototype,"activeVersion",{get:function(){return this._core.unicodeService.activeVersion},set:function(y){this._core.unicodeService.activeVersion=y},enumerable:!1,configurable:!0}),m}();f.UnicodeApi=k},744:function(R,f,k){var m,y=this&&this.__extends||(m=function(b,c){return m=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(o,l){o.__proto__=l}||function(o,l){for(var n in l)Object.prototype.hasOwnProperty.call(l,n)&&(o[n]=l[n])},m(b,c)},function(b,c){if(typeof c!="function"&&c!==null)throw new TypeError("Class extends value "+String(c)+" is not a constructor or null");function o(){this.constructor=b}m(b,c),b.prototype=c===null?Object.create(c):(o.prototype=c.prototype,new o)}),_=this&&this.__decorate||function(b,c,o,l){var n,a=arguments.length,h=a<3?c:l===null?l=Object.getOwnPropertyDescriptor(c,o):l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")h=Reflect.decorate(b,c,o,l);else for(var d=b.length-1;d>=0;d--)(n=b[d])&&(h=(a<3?n(h):a>3?n(c,o,h):n(c,o))||h);return a>3&&h&&Object.defineProperty(c,o,h),h},g=this&&this.__param||function(b,c){return function(o,l){c(o,l,b)}};Object.defineProperty(f,"__esModule",{value:!0}),f.BufferService=f.MINIMUM_ROWS=f.MINIMUM_COLS=void 0;var x=k(2585),C=k(5295),u=k(8460),p=k(844);f.MINIMUM_COLS=2,f.MINIMUM_ROWS=1;var w=function(b){function c(o){var l=b.call(this)||this;return l._optionsService=o,l.isUserScrolling=!1,l._onResize=new u.EventEmitter,l._onScroll=new u.EventEmitter,l.cols=Math.max(o.rawOptions.cols||0,f.MINIMUM_COLS),l.rows=Math.max(o.rawOptions.rows||0,f.MINIMUM_ROWS),l.buffers=new C.BufferSet(o,l),l}return y(c,b),Object.defineProperty(c.prototype,"onResize",{get:function(){return this._onResize.event},enumerable:!1,configurable:!0}),Object.defineProperty(c.prototype,"onScroll",{get:function(){return this._onScroll.event},enumerable:!1,configurable:!0}),Object.defineProperty(c.prototype,"buffer",{get:function(){return this.buffers.active},enumerable:!1,configurable:!0}),c.prototype.dispose=function(){b.prototype.dispose.call(this),this.buffers.dispose()},c.prototype.resize=function(o,l){this.cols=o,this.rows=l,this.buffers.resize(o,l),this.buffers.setupTabStops(this.cols),this._onResize.fire({cols:o,rows:l})},c.prototype.reset=function(){this.buffers.reset(),this.isUserScrolling=!1},c.prototype.scroll=function(o,l){l===void 0&&(l=!1);var n,a=this.buffer;(n=this._cachedBlankLine)&&n.length===this.cols&&n.getFg(0)===o.fg&&n.getBg(0)===o.bg||(n=a.getBlankLine(o,l),this._cachedBlankLine=n),n.isWrapped=l;var h=a.ybase+a.scrollTop,d=a.ybase+a.scrollBottom;if(a.scrollTop===0){var S=a.lines.isFull;d===a.lines.length-1?S?a.lines.recycle().copyFrom(n):a.lines.push(n.clone()):a.lines.splice(d+1,0,n.clone()),S?this.isUserScrolling&&(a.ydisp=Math.max(a.ydisp-1,0)):(a.ybase++,this.isUserScrolling||a.ydisp++)}else{var T=d-h+1;a.lines.shiftElements(h+1,T-1,-1),a.lines.set(d,n.clone())}this.isUserScrolling||(a.ydisp=a.ybase),this._onScroll.fire(a.ydisp)},c.prototype.scrollLines=function(o,l,n){var a=this.buffer;if(o<0){if(a.ydisp===0)return;this.isUserScrolling=!0}else o+a.ydisp>=a.ybase&&(this.isUserScrolling=!1);var h=a.ydisp;a.ydisp=Math.max(Math.min(a.ydisp+o,a.ybase),0),h!==a.ydisp&&(l||this._onScroll.fire(a.ydisp))},c.prototype.scrollPages=function(o){this.scrollLines(o*(this.rows-1))},c.prototype.scrollToTop=function(){this.scrollLines(-this.buffer.ydisp)},c.prototype.scrollToBottom=function(){this.scrollLines(this.buffer.ybase-this.buffer.ydisp)},c.prototype.scrollToLine=function(o){var l=o-this.buffer.ydisp;l!==0&&this.scrollLines(l)},_([g(0,x.IOptionsService)],c)}(p.Disposable);f.BufferService=w},7994:(R,f)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.CharsetService=void 0;var k=function(){function m(){this.glevel=0,this._charsets=[]}return m.prototype.reset=function(){this.charset=void 0,this._charsets=[],this.glevel=0},m.prototype.setgLevel=function(y){this.glevel=y,this.charset=this._charsets[y]},m.prototype.setgCharset=function(y,_){this._charsets[y]=_,this.glevel===y&&(this.charset=_)},m}();f.CharsetService=k},1753:function(R,f,k){var m=this&&this.__decorate||function(c,o,l,n){var a,h=arguments.length,d=h<3?o:n===null?n=Object.getOwnPropertyDescriptor(o,l):n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")d=Reflect.decorate(c,o,l,n);else for(var S=c.length-1;S>=0;S--)(a=c[S])&&(d=(h<3?a(d):h>3?a(o,l,d):a(o,l))||d);return h>3&&d&&Object.defineProperty(o,l,d),d},y=this&&this.__param||function(c,o){return function(l,n){o(l,n,c)}},_=this&&this.__values||function(c){var o=typeof Symbol=="function"&&Symbol.iterator,l=o&&c[o],n=0;if(l)return l.call(c);if(c&&typeof c.length=="number")return{next:function(){return c&&n>=c.length&&(c=void 0),{value:c&&c[n++],done:!c}}};throw new TypeError(o?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(f,"__esModule",{value:!0}),f.CoreMouseService=void 0;var g=k(2585),x=k(8460),C={NONE:{events:0,restrict:function(){return!1}},X10:{events:1,restrict:function(c){return c.button!==4&&c.action===1&&(c.ctrl=!1,c.alt=!1,c.shift=!1,!0)}},VT200:{events:19,restrict:function(c){return c.action!==32}},DRAG:{events:23,restrict:function(c){return c.action!==32||c.button!==3}},ANY:{events:31,restrict:function(c){return!0}}};function u(c,o){var l=(c.ctrl?16:0)|(c.shift?4:0)|(c.alt?8:0);return c.button===4?(l|=64,l|=c.action):(l|=3&c.button,4&c.button&&(l|=64),8&c.button&&(l|=128),c.action===32?l|=32:c.action!==0||o||(l|=3)),l}var p=String.fromCharCode,w={DEFAULT:function(c){var o=[u(c,!1)+32,c.col+32,c.row+32];return o[0]>255||o[1]>255||o[2]>255?"":"\x1B[M"+p(o[0])+p(o[1])+p(o[2])},SGR:function(c){var o=c.action===0&&c.button!==4?"m":"M";return"\x1B[<"+u(c,!0)+";"+c.col+";"+c.row+o}},b=function(){function c(o,l){var n,a,h,d;this._bufferService=o,this._coreService=l,this._protocols={},this._encodings={},this._activeProtocol="",this._activeEncoding="",this._onProtocolChange=new x.EventEmitter,this._lastEvent=null;try{for(var S=_(Object.keys(C)),T=S.next();!T.done;T=S.next()){var E=T.value;this.addProtocol(E,C[E])}}catch(I){n={error:I}}finally{try{T&&!T.done&&(a=S.return)&&a.call(S)}finally{if(n)throw n.error}}try{for(var M=_(Object.keys(w)),D=M.next();!D.done;D=M.next()){var W=D.value;this.addEncoding(W,w[W])}}catch(I){h={error:I}}finally{try{D&&!D.done&&(d=M.return)&&d.call(M)}finally{if(h)throw h.error}}this.reset()}return c.prototype.addProtocol=function(o,l){this._protocols[o]=l},c.prototype.addEncoding=function(o,l){this._encodings[o]=l},Object.defineProperty(c.prototype,"activeProtocol",{get:function(){return this._activeProtocol},set:function(o){if(!this._protocols[o])throw new Error('unknown protocol "'+o+'"');this._activeProtocol=o,this._onProtocolChange.fire(this._protocols[o].events)},enumerable:!1,configurable:!0}),Object.defineProperty(c.prototype,"areMouseEventsActive",{get:function(){return this._protocols[this._activeProtocol].events!==0},enumerable:!1,configurable:!0}),Object.defineProperty(c.prototype,"activeEncoding",{get:function(){return this._activeEncoding},set:function(o){if(!this._encodings[o])throw new Error('unknown encoding "'+o+'"');this._activeEncoding=o},enumerable:!1,configurable:!0}),c.prototype.reset=function(){this.activeProtocol="NONE",this.activeEncoding="DEFAULT",this._lastEvent=null},Object.defineProperty(c.prototype,"onProtocolChange",{get:function(){return this._onProtocolChange.event},enumerable:!1,configurable:!0}),c.prototype.triggerMouseEvent=function(o){if(o.col<0||o.col>=this._bufferService.cols||o.row<0||o.row>=this._bufferService.rows||o.button===4&&o.action===32||o.button===3&&o.action!==32||o.button!==4&&(o.action===2||o.action===3)||(o.col++,o.row++,o.action===32&&this._lastEvent&&this._compareEvents(this._lastEvent,o))||!this._protocols[this._activeProtocol].restrict(o))return!1;var l=this._encodings[this._activeEncoding](o);return l&&(this._activeEncoding==="DEFAULT"?this._coreService.triggerBinaryEvent(l):this._coreService.triggerDataEvent(l,!0)),this._lastEvent=o,!0},c.prototype.explainEvents=function(o){return{down:!!(1&o),up:!!(2&o),drag:!!(4&o),move:!!(8&o),wheel:!!(16&o)}},c.prototype._compareEvents=function(o,l){return o.col===l.col&&o.row===l.row&&o.button===l.button&&o.action===l.action&&o.ctrl===l.ctrl&&o.alt===l.alt&&o.shift===l.shift},m([y(0,g.IBufferService),y(1,g.ICoreService)],c)}();f.CoreMouseService=b},6975:function(R,f,k){var m,y=this&&this.__extends||(m=function(o,l){return m=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,a){n.__proto__=a}||function(n,a){for(var h in a)Object.prototype.hasOwnProperty.call(a,h)&&(n[h]=a[h])},m(o,l)},function(o,l){if(typeof l!="function"&&l!==null)throw new TypeError("Class extends value "+String(l)+" is not a constructor or null");function n(){this.constructor=o}m(o,l),o.prototype=l===null?Object.create(l):(n.prototype=l.prototype,new n)}),_=this&&this.__decorate||function(o,l,n,a){var h,d=arguments.length,S=d<3?l:a===null?a=Object.getOwnPropertyDescriptor(l,n):a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")S=Reflect.decorate(o,l,n,a);else for(var T=o.length-1;T>=0;T--)(h=o[T])&&(S=(d<3?h(S):d>3?h(l,n,S):h(l,n))||S);return d>3&&S&&Object.defineProperty(l,n,S),S},g=this&&this.__param||function(o,l){return function(n,a){l(n,a,o)}};Object.defineProperty(f,"__esModule",{value:!0}),f.CoreService=void 0;var x=k(2585),C=k(8460),u=k(1439),p=k(844),w=Object.freeze({insertMode:!1}),b=Object.freeze({applicationCursorKeys:!1,applicationKeypad:!1,bracketedPasteMode:!1,origin:!1,reverseWraparound:!1,sendFocus:!1,wraparound:!0}),c=function(o){function l(n,a,h,d){var S=o.call(this)||this;return S._bufferService=a,S._logService=h,S._optionsService=d,S.isCursorInitialized=!1,S.isCursorHidden=!1,S._onData=S.register(new C.EventEmitter),S._onUserInput=S.register(new C.EventEmitter),S._onBinary=S.register(new C.EventEmitter),S._scrollToBottom=n,S.register({dispose:function(){return S._scrollToBottom=void 0}}),S.modes=(0,u.clone)(w),S.decPrivateModes=(0,u.clone)(b),S}return y(l,o),Object.defineProperty(l.prototype,"onData",{get:function(){return this._onData.event},enumerable:!1,configurable:!0}),Object.defineProperty(l.prototype,"onUserInput",{get:function(){return this._onUserInput.event},enumerable:!1,configurable:!0}),Object.defineProperty(l.prototype,"onBinary",{get:function(){return this._onBinary.event},enumerable:!1,configurable:!0}),l.prototype.reset=function(){this.modes=(0,u.clone)(w),this.decPrivateModes=(0,u.clone)(b)},l.prototype.triggerDataEvent=function(n,a){if(a===void 0&&(a=!1),!this._optionsService.rawOptions.disableStdin){var h=this._bufferService.buffer;h.ybase!==h.ydisp&&this._scrollToBottom(),a&&this._onUserInput.fire(),this._logService.debug('sending data "'+n+'"',function(){return n.split("").map(function(d){return d.charCodeAt(0)})}),this._onData.fire(n)}},l.prototype.triggerBinaryEvent=function(n){this._optionsService.rawOptions.disableStdin||(this._logService.debug('sending binary "'+n+'"',function(){return n.split("").map(function(a){return a.charCodeAt(0)})}),this._onBinary.fire(n))},_([g(1,x.IBufferService),g(2,x.ILogService),g(3,x.IOptionsService)],l)}(p.Disposable);f.CoreService=c},9074:function(R,f,k){var m,y=this&&this.__extends||(m=function(c,o){return m=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(l,n){l.__proto__=n}||function(l,n){for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(l[a]=n[a])},m(c,o)},function(c,o){if(typeof o!="function"&&o!==null)throw new TypeError("Class extends value "+String(o)+" is not a constructor or null");function l(){this.constructor=c}m(c,o),c.prototype=o===null?Object.create(o):(l.prototype=o.prototype,new l)}),_=this&&this.__generator||function(c,o){var l,n,a,h,d={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]};return h={next:S(0),throw:S(1),return:S(2)},typeof Symbol=="function"&&(h[Symbol.iterator]=function(){return this}),h;function S(T){return function(E){return function(M){if(l)throw new TypeError("Generator is already executing.");for(;d;)try{if(l=1,n&&(a=2&M[0]?n.return:M[0]?n.throw||((a=n.return)&&a.call(n),0):n.next)&&!(a=a.call(n,M[1])).done)return a;switch(n=0,a&&(M=[2&M[0],a.value]),M[0]){case 0:case 1:a=M;break;case 4:return d.label++,{value:M[1],done:!1};case 5:d.label++,n=M[1],M=[0];continue;case 7:M=d.ops.pop(),d.trys.pop();continue;default:if(!((a=(a=d.trys).length>0&&a[a.length-1])||M[0]!==6&&M[0]!==2)){d=0;continue}if(M[0]===3&&(!a||M[1]>a[0]&&M[1]=c.length&&(c=void 0),{value:c&&c[n++],done:!c}}};throw new TypeError(o?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(f,"__esModule",{value:!0}),f.DecorationService=void 0;var x=k(8055),C=k(8460),u=k(844),p=k(6106),w=function(c){function o(){var l=c.call(this)||this;return l._decorations=new p.SortedList(function(n){return n.marker.line}),l._onDecorationRegistered=l.register(new C.EventEmitter),l._onDecorationRemoved=l.register(new C.EventEmitter),l}return y(o,c),Object.defineProperty(o.prototype,"onDecorationRegistered",{get:function(){return this._onDecorationRegistered.event},enumerable:!1,configurable:!0}),Object.defineProperty(o.prototype,"onDecorationRemoved",{get:function(){return this._onDecorationRemoved.event},enumerable:!1,configurable:!0}),Object.defineProperty(o.prototype,"decorations",{get:function(){return this._decorations.values()},enumerable:!1,configurable:!0}),o.prototype.registerDecoration=function(l){var n=this;if(!l.marker.isDisposed){var a=new b(l);if(a){var h=a.marker.onDispose(function(){return a.dispose()});a.onDispose(function(){a&&(n._decorations.delete(a)&&n._onDecorationRemoved.fire(a),h.dispose())}),this._decorations.insert(a),this._onDecorationRegistered.fire(a)}return a}},o.prototype.reset=function(){var l,n;try{for(var a=g(this._decorations.values()),h=a.next();!h.done;h=a.next())h.value.dispose()}catch(d){l={error:d}}finally{try{h&&!h.done&&(n=a.return)&&n.call(a)}finally{if(l)throw l.error}}this._decorations.clear()},o.prototype.getDecorationsAtLine=function(l){return _(this,function(n){return[2,this._decorations.getKeyIterator(l)]})},o.prototype.getDecorationsAtCell=function(l,n,a){var h,d,S,T,E,M,D,W,I,A,H;return _(this,function(F){switch(F.label){case 0:h=0,d=0,F.label=1;case 1:F.trys.push([1,6,7,8]),S=g(this._decorations.getKeyIterator(n)),T=S.next(),F.label=2;case 2:return T.done?[3,5]:(E=T.value,h=(I=E.options.x)!==null&&I!==void 0?I:0,d=h+((A=E.options.width)!==null&&A!==void 0?A:1),!(l>=h&&l=0;o--)(w=x[o])&&(c=(b<3?w(c):b>3?w(C,u,c):w(C,u))||c);return b>3&&c&&Object.defineProperty(C,u,c),c},y=this&&this.__param||function(x,C){return function(u,p){C(u,p,x)}};Object.defineProperty(f,"__esModule",{value:!0}),f.DirtyRowService=void 0;var _=k(2585),g=function(){function x(C){this._bufferService=C,this.clearRange()}return Object.defineProperty(x.prototype,"start",{get:function(){return this._start},enumerable:!1,configurable:!0}),Object.defineProperty(x.prototype,"end",{get:function(){return this._end},enumerable:!1,configurable:!0}),x.prototype.clearRange=function(){this._start=this._bufferService.buffer.y,this._end=this._bufferService.buffer.y},x.prototype.markDirty=function(C){Cthis._end&&(this._end=C)},x.prototype.markRangeDirty=function(C,u){if(C>u){var p=C;C=u,u=p}Cthis._end&&(this._end=u)},x.prototype.markAllDirty=function(){this.markRangeDirty(0,this._bufferService.rows-1)},m([y(0,_.IBufferService)],x)}();f.DirtyRowService=g},4348:function(R,f,k){var m=this&&this.__values||function(p){var w=typeof Symbol=="function"&&Symbol.iterator,b=w&&p[w],c=0;if(b)return b.call(p);if(p&&typeof p.length=="number")return{next:function(){return p&&c>=p.length&&(p=void 0),{value:p&&p[c++],done:!p}}};throw new TypeError(w?"Object is not iterable.":"Symbol.iterator is not defined.")},y=this&&this.__read||function(p,w){var b=typeof Symbol=="function"&&p[Symbol.iterator];if(!b)return p;var c,o,l=b.call(p),n=[];try{for(;(w===void 0||w-- >0)&&!(c=l.next()).done;)n.push(c.value)}catch(a){o={error:a}}finally{try{c&&!c.done&&(b=l.return)&&b.call(l)}finally{if(o)throw o.error}}return n},_=this&&this.__spreadArray||function(p,w,b){if(b||arguments.length===2)for(var c,o=0,l=w.length;o0?n[0].index:o.length;if(o.length!==E)throw new Error("[createInstance] First service dependency of "+w.name+" at position "+(E+1)+" conflicts with "+o.length+" static arguments");return new(w.bind.apply(w,_([void 0],y(_(_([],y(o),!1),y(a),!1)),!1)))},p}();f.InstantiationService=u},7866:function(R,f,k){var m=this&&this.__decorate||function(p,w,b,c){var o,l=arguments.length,n=l<3?w:c===null?c=Object.getOwnPropertyDescriptor(w,b):c;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")n=Reflect.decorate(p,w,b,c);else for(var a=p.length-1;a>=0;a--)(o=p[a])&&(n=(l<3?o(n):l>3?o(w,b,n):o(w,b))||n);return l>3&&n&&Object.defineProperty(w,b,n),n},y=this&&this.__param||function(p,w){return function(b,c){w(b,c,p)}},_=this&&this.__read||function(p,w){var b=typeof Symbol=="function"&&p[Symbol.iterator];if(!b)return p;var c,o,l=b.call(p),n=[];try{for(;(w===void 0||w-- >0)&&!(c=l.next()).done;)n.push(c.value)}catch(a){o={error:a}}finally{try{c&&!c.done&&(b=l.return)&&b.call(l)}finally{if(o)throw o.error}}return n},g=this&&this.__spreadArray||function(p,w,b){if(b||arguments.length===2)for(var c,o=0,l=w.length;o{function k(m,y,_){y.di$target===y?y.di$dependencies.push({id:m,index:_}):(y.di$dependencies=[{id:m,index:_}],y.di$target=y)}Object.defineProperty(f,"__esModule",{value:!0}),f.createDecorator=f.getServiceDependencies=f.serviceRegistry=void 0,f.serviceRegistry=new Map,f.getServiceDependencies=function(m){return m.di$dependencies||[]},f.createDecorator=function(m){if(f.serviceRegistry.has(m))return f.serviceRegistry.get(m);var y=function(_,g,x){if(arguments.length!==3)throw new Error("@IServiceName-decorator can only be used to decorate a parameter");k(y,_,x)};return y.toString=function(){return m},f.serviceRegistry.set(m,y),y}},2585:(R,f,k)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.IDecorationService=f.IUnicodeService=f.IOptionsService=f.ILogService=f.LogLevelEnum=f.IInstantiationService=f.IDirtyRowService=f.ICharsetService=f.ICoreService=f.ICoreMouseService=f.IBufferService=void 0;var m,y=k(8343);f.IBufferService=(0,y.createDecorator)("BufferService"),f.ICoreMouseService=(0,y.createDecorator)("CoreMouseService"),f.ICoreService=(0,y.createDecorator)("CoreService"),f.ICharsetService=(0,y.createDecorator)("CharsetService"),f.IDirtyRowService=(0,y.createDecorator)("DirtyRowService"),f.IInstantiationService=(0,y.createDecorator)("InstantiationService"),(m=f.LogLevelEnum||(f.LogLevelEnum={}))[m.DEBUG=0]="DEBUG",m[m.INFO=1]="INFO",m[m.WARN=2]="WARN",m[m.ERROR=3]="ERROR",m[m.OFF=4]="OFF",f.ILogService=(0,y.createDecorator)("LogService"),f.IOptionsService=(0,y.createDecorator)("OptionsService"),f.IUnicodeService=(0,y.createDecorator)("UnicodeService"),f.IDecorationService=(0,y.createDecorator)("DecorationService")},1480:(R,f,k)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.UnicodeService=void 0;var m=k(8460),y=k(225),_=function(){function g(){this._providers=Object.create(null),this._active="",this._onChange=new m.EventEmitter;var x=new y.UnicodeV6;this.register(x),this._active=x.version,this._activeProvider=x}return Object.defineProperty(g.prototype,"onChange",{get:function(){return this._onChange.event},enumerable:!1,configurable:!0}),Object.defineProperty(g.prototype,"versions",{get:function(){return Object.keys(this._providers)},enumerable:!1,configurable:!0}),Object.defineProperty(g.prototype,"activeVersion",{get:function(){return this._active},set:function(x){if(!this._providers[x])throw new Error('unknown Unicode version "'+x+'"');this._active=x,this._activeProvider=this._providers[x],this._onChange.fire(x)},enumerable:!1,configurable:!0}),g.prototype.register=function(x){this._providers[x.version]=x},g.prototype.wcwidth=function(x){return this._activeProvider.wcwidth(x)},g.prototype.getStringCellWidth=function(x){for(var C=0,u=x.length,p=0;p=u)return C+this.wcwidth(w);var b=x.charCodeAt(p);56320<=b&&b<=57343?w=1024*(w-55296)+b-56320+65536:C+=this.wcwidth(b)}C+=this.wcwidth(w)}return C},g}();f.UnicodeService=_}},B={};return function R(f){var k=B[f];if(k!==void 0)return k.exports;var m=B[f]={exports:{}};return U[f].call(m.exports,m,m.exports,R),m.exports}(4389)})()})});var vc=Nt((dc,pc)=>{(function(U){typeof dc=="object"&&typeof pc=="object"?U($t()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],U):U(CodeMirror)})(function(U){"use strict";var B={},R=/[^\s\u00a0]/,f=U.Pos,k=U.cmpPos;function m(g){var x=g.search(R);return x==-1?0:x}U.commands.toggleComment=function(g){g.toggleComment()},U.defineExtension("toggleComment",function(g){g||(g=B);for(var x=this,C=1/0,u=this.listSelections(),p=null,w=u.length-1;w>=0;w--){var b=u[w].from(),c=u[w].to();b.line>=C||(c.line>=C&&(c=f(C,0)),C=b.line,p==null?x.uncomment(b,c,g)?p="un":(x.lineComment(b,c,g),p="line"):p=="un"?x.uncomment(b,c,g):x.lineComment(b,c,g))}});function y(g,x,C){return/\bstring\b/.test(g.getTokenTypeAt(f(x.line,0)))&&!/^[\'\"\`]/.test(C)}function _(g,x){var C=g.getMode();return C.useInnerComments===!1||!C.innerMode?C:g.getModeAt(x)}U.defineExtension("lineComment",function(g,x,C){C||(C=B);var u=this,p=_(u,g),w=u.getLine(g.line);if(!(w==null||y(u,g,w))){var b=C.lineComment||p.lineComment;if(!b){(C.blockCommentStart||p.blockCommentStart)&&(C.fullLines=!0,u.blockComment(g,x,C));return}var c=Math.min(x.ch!=0||x.line==g.line?x.line+1:x.line,u.lastLine()+1),o=C.padding==null?" ":C.padding,l=C.commentBlankLines||g.line==x.line;u.operation(function(){if(C.indent){for(var n=null,a=g.line;ad.length)&&(n=d)}for(var a=g.line;ac||u.operation(function(){if(C.fullLines!=!1){var l=R.test(u.getLine(c));u.replaceRange(o+b,f(c)),u.replaceRange(w+o,f(g.line,0));var n=C.blockCommentLead||p.blockCommentLead;if(n!=null)for(var a=g.line+1;a<=c;++a)(a!=c||l)&&u.replaceRange(n+o,f(a,0))}else{var h=k(u.getCursor("to"),x)==0,d=!u.somethingSelected();u.replaceRange(b,x),h&&u.setSelection(d?x:u.getCursor("from"),x),u.replaceRange(w,g)}})}}),U.defineExtension("uncomment",function(g,x,C){C||(C=B);var u=this,p=_(u,g),w=Math.min(x.ch!=0||x.line==g.line?x.line:x.line-1,u.lastLine()),b=Math.min(g.line,w),c=C.lineComment||p.lineComment,o=[],l=C.padding==null?" ":C.padding,n;e:{if(!c)break e;for(var a=b;a<=w;++a){var h=u.getLine(a),d=h.indexOf(c);if(d>-1&&!/comment/.test(u.getTokenTypeAt(f(a,d+1)))&&(d=-1),d==-1&&R.test(h)||d>-1&&R.test(h.slice(0,d)))break e;o.push(h)}if(u.operation(function(){for(var te=b;te<=w;++te){var ce=o[te-b],ee=ce.indexOf(c),fe=ee+c.length;ee<0||(ce.slice(fe,fe+l.length)==l&&(fe+=l.length),n=!0,u.replaceRange("",f(te,ee),f(te,fe)))}}),n)return!0}var S=C.blockCommentStart||p.blockCommentStart,T=C.blockCommentEnd||p.blockCommentEnd;if(!S||!T)return!1;var E=C.blockCommentLead||p.blockCommentLead,M=u.getLine(b),D=M.indexOf(S);if(D==-1)return!1;var W=w==b?M:u.getLine(w),I=W.indexOf(T,w==b?D+S.length:0),A=f(b,D+1),H=f(w,I+1);if(I==-1||!/comment/.test(u.getTokenTypeAt(A))||!/comment/.test(u.getTokenTypeAt(H))||u.getRange(A,H,` +`).indexOf(T)>-1)return!1;var F=M.lastIndexOf(S,g.ch),z=F==-1?-1:M.slice(0,g.ch).indexOf(T,F+S.length);if(F!=-1&&z!=-1&&z+T.length!=g.ch)return!1;z=W.indexOf(T,x.ch);var G=W.slice(x.ch).lastIndexOf(S,z-x.ch);return F=z==-1||G==-1?-1:x.ch+G,z!=-1&&F!=-1&&F!=x.ch?!1:(u.operation(function(){u.replaceRange("",f(w,I-(l&&W.slice(I-l.length,I)==l?l.length:0)),f(w,I+T.length));var te=D+S.length;if(l&&M.slice(te,te+l.length)==l&&(te+=l.length),u.replaceRange("",f(b,D),f(b,te)),E)for(var ce=b+1;ce<=w;++ce){var ee=u.getLine(ce),fe=ee.indexOf(E);if(!(fe==-1||R.test(ee.slice(0,fe)))){var _e=fe+E.length;l&&ee.slice(_e,_e+l.length)==l&&(_e+=l.length),u.replaceRange("",f(ce,fe),f(ce,_e))}}}),!0)})})});var yc=Nt((gc,_c)=>{(function(U){typeof gc=="object"&&typeof _c=="object"?U($t()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],U):U(CodeMirror)})(function(U){var B=/\S/g,R=String.prototype.repeat||function(y){return Array(y+1).join(this)};function f(y){if(y.getOption("disableInput"))return U.Pass;for(var _=y.listSelections(),g,x=[],C=0;C<_.length;C++){var u=_[C].head;if(!/\bcomment\b/.test(y.getTokenTypeAt(u)))return U.Pass;var p=y.getModeAt(u);if(!g)g=p;else if(g!=p)return U.Pass;var w=null,b,c,o=g.blockCommentStart,l=g.lineComment;if(o&&g.blockCommentContinue){b=y.getLine(u.line);var n=b.lastIndexOf(g.blockCommentEnd,u.ch-g.blockCommentEnd.length);if(!(n!=-1&&n==u.ch-g.blockCommentEnd.length||l&&(c=b.lastIndexOf(l,u.ch-1))>-1&&/\bcomment\b/.test(y.getTokenTypeAt({line:u.line,ch:c+1}))))if(u.ch>=o.length&&(c=b.lastIndexOf(o,u.ch-o.length))>-1&&c>n)if(k(0,b)>=c)w=b.slice(0,c);else{var a=y.options.tabSize,h;c=U.countColumn(b,c,a),w=y.options.indentWithTabs?R.call(" ",h=Math.floor(c/a))+R.call(" ",c-a*h):R.call(" ",c)}else(c=b.indexOf(g.blockCommentContinue))>-1&&c<=u.ch&&c<=k(0,b)&&(w=b.slice(0,c));w!=null&&(w+=g.blockCommentContinue)}if(w==null&&l&&m(y)){if(b==null&&(b=y.getLine(u.line)),c=b.indexOf(l),!u.ch&&!c)w="";else if(c>-1&&k(0,b)>=c){if(w=k(u.ch,b)>-1,!w){var d=y.getLine(u.line+1)||"",S=d.indexOf(l);w=S>-1&&k(0,d)>=S||null}w&&(w=b.slice(0,c)+l+b.slice(c+l.length).match(/^\s*/)[0])}}if(w==null)return U.Pass;x[C]=` +`+w}y.operation(function(){for(var T=_.length-1;T>=0;T--)y.replaceRange(x[T],_[T].from(),_[T].to(),"+insert")})}function k(y,_){B.lastIndex=y;var g=B.exec(_);return g?g.index:-1}function m(y){var _=y.getOption("continueComments");return _&&typeof _=="object"?_.continueLineComment!==!1:!0}U.defineOption("continueComments",null,function(y,_,g){if(g&&g!=U.Init&&y.removeKeyMap("continueComment"),_){var x="Enter";typeof _=="string"?x=_:typeof _=="object"&&_.key&&(x=_.key);var C={name:"continueComment"};C[x]=f,y.addKeyMap(C)}})})});var Sc=Nt((mc,bc)=>{(function(U){typeof mc=="object"&&typeof bc=="object"?U($t()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],U):U(CodeMirror)})(function(U){U.defineOption("placeholder","",function(_,g,x){var C=x&&x!=U.Init;if(g&&!C)_.on("blur",k),_.on("change",m),_.on("swapDoc",m),U.on(_.getInputField(),"compositionupdate",_.state.placeholderCompose=function(){f(_)}),m(_);else if(!g&&C){_.off("blur",k),_.off("change",m),_.off("swapDoc",m),U.off(_.getInputField(),"compositionupdate",_.state.placeholderCompose),B(_);var u=_.getWrapperElement();u.className=u.className.replace(" CodeMirror-empty","")}g&&!_.hasFocus()&&k(_)});function B(_){_.state.placeholder&&(_.state.placeholder.parentNode.removeChild(_.state.placeholder),_.state.placeholder=null)}function R(_){B(_);var g=_.state.placeholder=document.createElement("pre");g.style.cssText="height: 0; overflow: visible",g.style.direction=_.getOption("direction"),g.className="CodeMirror-placeholder CodeMirror-line-like";var x=_.getOption("placeholder");typeof x=="string"&&(x=document.createTextNode(x)),g.appendChild(x),_.display.lineSpace.insertBefore(g,_.display.lineSpace.firstChild)}function f(_){setTimeout(function(){var g=!1;if(_.lineCount()==1){var x=_.getInputField();g=x.nodeName=="TEXTAREA"?!_.getLine(0).length:!/[^\u200b]/.test(x.querySelector(".CodeMirror-line").textContent)}g?R(_):B(_)},20)}function k(_){y(_)&&R(_)}function m(_){var g=_.getWrapperElement(),x=y(_);g.className=g.className.replace(" CodeMirror-empty","")+(x?" CodeMirror-empty":""),x?R(_):B(_)}function y(_){return _.lineCount()===1&&_.getLine(0)===""}})});var Lc=Nt((Cc,wc)=>{(function(U){typeof Cc=="object"&&typeof wc=="object"?U($t()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],U):U(CodeMirror)})(function(U){var B={pairs:`()[]{}''""`,closeBefore:`)]}'":;>`,triples:"",explode:"[]{}"},R=U.Pos;U.defineOption("autoCloseBrackets",!1,function(c,o,l){l&&l!=U.Init&&(c.removeKeyMap(k),c.state.closeBrackets=null),o&&(m(f(o,"pairs")),c.state.closeBrackets=o,c.addKeyMap(k))});function f(c,o){return o=="pairs"&&typeof c=="string"?c:typeof c=="object"&&c[o]!=null?c[o]:B[o]}var k={Backspace:g,Enter:x};function m(c){for(var o=0;o=0;a--){var d=n[a].head;c.replaceRange("",R(d.line,d.ch-1),R(d.line,d.ch+1),"+delete")}}function x(c){var o=_(c),l=o&&f(o,"explode");if(!l||c.getOption("disableInput"))return U.Pass;for(var n=c.listSelections(),a=0;a0?{line:d.head.line,ch:d.head.ch+o}:{line:d.head.line-1};l.push({anchor:S,head:S})}c.setSelections(l,a)}function u(c){var o=U.cmpPos(c.anchor,c.head)>0;return{anchor:new R(c.anchor.line,c.anchor.ch+(o?-1:1)),head:new R(c.head.line,c.head.ch+(o?1:-1))}}function p(c,o){var l=_(c);if(!l||c.getOption("disableInput"))return U.Pass;var n=f(l,"pairs"),a=n.indexOf(o);if(a==-1)return U.Pass;for(var h=f(l,"closeBefore"),d=f(l,"triples"),S=n.charAt(a+1)==o,T=c.listSelections(),E=a%2==0,M,D=0;D=0&&c.getRange(I,R(I.line,I.ch+3))==o+o+o?A="skipThree":A="skip";else if(S&&I.ch>1&&d.indexOf(o)>=0&&c.getRange(R(I.line,I.ch-2),I)==o+o){if(I.ch>2&&/\bstring/.test(c.getTokenTypeAt(R(I.line,I.ch-2))))return U.Pass;A="addFour"}else if(S){var F=I.ch==0?" ":c.getRange(R(I.line,I.ch-1),I);if(!U.isWordChar(H)&&F!=o&&!U.isWordChar(F))A="both";else return U.Pass}else if(E&&(H.length===0||/\s/.test(H)||h.indexOf(H)>-1))A="both";else return U.Pass;if(!M)M=A;else if(M!=A)return U.Pass}var z=a%2?n.charAt(a-1):o,G=a%2?o:n.charAt(a+1);c.operation(function(){if(M=="skip")C(c,1);else if(M=="skipThree")C(c,3);else if(M=="surround"){for(var te=c.getSelections(),ce=0;ce{(function(U){typeof xc=="object"&&typeof kc=="object"?U($t()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],U):U(CodeMirror)})(function(U){var B=/MSIE \d/.test(navigator.userAgent)&&(document.documentMode==null||document.documentMode<8),R=U.Pos,f={"(":")>",")":"(<","[":"]>","]":"[<","{":"}>","}":"{<","<":">>",">":"<<"};function k(C){return C&&C.bracketRegex||/[(){}[\]]/}function m(C,u,p){var w=C.getLineHandle(u.line),b=u.ch-1,c=p&&p.afterCursor;c==null&&(c=/(^| )cm-fat-cursor($| )/.test(C.getWrapperElement().className));var o=k(p),l=!c&&b>=0&&o.test(w.text.charAt(b))&&f[w.text.charAt(b)]||o.test(w.text.charAt(b+1))&&f[w.text.charAt(++b)];if(!l)return null;var n=l.charAt(1)==">"?1:-1;if(p&&p.strict&&n>0!=(b==u.ch))return null;var a=C.getTokenTypeAt(R(u.line,b+1)),h=y(C,R(u.line,b+(n>0?1:0)),n,a,p);return h==null?null:{from:R(u.line,b),to:h&&h.pos,match:h&&h.ch==l.charAt(0),forward:n>0}}function y(C,u,p,w,b){for(var c=b&&b.maxScanLineLength||1e4,o=b&&b.maxScanLines||1e3,l=[],n=k(b),a=p>0?Math.min(u.line+o,C.lastLine()+1):Math.max(C.firstLine()-1,u.line-o),h=u.line;h!=a;h+=p){var d=C.getLine(h);if(d){var S=p>0?0:d.length-1,T=p>0?d.length:-1;if(!(d.length>c))for(h==u.line&&(S=u.ch-(p<0?1:0));S!=T;S+=p){var E=d.charAt(S);if(n.test(E)&&(w===void 0||(C.getTokenTypeAt(R(h,S+1))||"")==(w||""))){var M=f[E];if(M&&M.charAt(1)==">"==p>0)l.push(E);else if(l.length)l.pop();else return{pos:R(h,S),ch:E}}}}}return h-p==(p>0?C.lastLine():C.firstLine())?!1:null}function _(C,u,p){for(var w=C.state.matchBrackets.maxHighlightLineLength||1e3,b=p&&p.highlightNonMatching,c=[],o=C.listSelections(),l=0;l{(function(U){typeof Ec=="object"&&typeof Tc=="object"?U($t()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],U):U(CodeMirror)})(function(U){"use strict";var B=U.Pos;function R(o){var l=o.flags;return l??(o.ignoreCase?"i":"")+(o.global?"g":"")+(o.multiline?"m":"")}function f(o,l){for(var n=R(o),a=n,h=0;hS);T++){var E=o.getLine(d++);a=a==null?E:a+` +`+E}h=h*2,l.lastIndex=n.ch;var M=l.exec(a);if(M){var D=a.slice(0,M.index).split(` +`),W=M[0].split(` +`),I=n.line+D.length-1,A=D[D.length-1].length;return{from:B(I,A),to:B(I+W.length-1,W.length==1?A+W[0].length:W[W.length-1].length),match:M}}}}function _(o,l,n){for(var a,h=0;h<=o.length;){l.lastIndex=h;var d=l.exec(o);if(!d)break;var S=d.index+d[0].length;if(S>o.length-n)break;(!a||S>a.index+a[0].length)&&(a=d),h=d.index+1}return a}function g(o,l,n){l=f(l,"g");for(var a=n.line,h=n.ch,d=o.firstLine();a>=d;a--,h=-1){var S=o.getLine(a),T=_(S,l,h<0?0:S.length-h);if(T)return{from:B(a,T.index),to:B(a,T.index+T[0].length),match:T}}}function x(o,l,n){if(!k(l))return g(o,l,n);l=f(l,"gm");for(var a,h=1,d=o.getLine(n.line).length-n.ch,S=n.line,T=o.firstLine();S>=T;){for(var E=0;E=T;E++){var M=o.getLine(S--);a=a==null?M:M+` +`+a}h*=2;var D=_(a,l,d);if(D){var W=a.slice(0,D.index).split(` +`),I=D[0].split(` +`),A=S+W.length,H=W[W.length-1].length;return{from:B(A,H),to:B(A+I.length-1,I.length==1?H+I[0].length:I[I.length-1].length),match:D}}}}var C,u;String.prototype.normalize?(C=function(o){return o.normalize("NFD").toLowerCase()},u=function(o){return o.normalize("NFD")}):(C=function(o){return o.toLowerCase()},u=function(o){return o});function p(o,l,n,a){if(o.length==l.length)return n;for(var h=0,d=n+Math.max(0,o.length-l.length);;){if(h==d)return h;var S=h+d>>1,T=a(o.slice(0,S)).length;if(T==n)return S;T>n?d=S:h=S+1}}function w(o,l,n,a){if(!l.length)return null;var h=a?C:u,d=h(l).split(/\r|\n\r?/);e:for(var S=n.line,T=n.ch,E=o.lastLine()+1-d.length;S<=E;S++,T=0){var M=o.getLine(S).slice(T),D=h(M);if(d.length==1){var W=D.indexOf(d[0]);if(W==-1)continue e;var n=p(M,D,W,h)+T;return{from:B(S,p(M,D,W,h)+T),to:B(S,p(M,D,W+d[0].length,h)+T)}}else{var I=D.length-d[0].length;if(D.slice(I)!=d[0])continue e;for(var A=1;A=E;S--,T=-1){var M=o.getLine(S);T>-1&&(M=M.slice(0,T));var D=h(M);if(d.length==1){var W=D.lastIndexOf(d[0]);if(W==-1)continue e;return{from:B(S,p(M,D,W,h)),to:B(S,p(M,D,W+d[0].length,h))}}else{var I=d[d.length-1];if(D.slice(0,I.length)!=I)continue e;for(var A=1,n=S-d.length+1;A(this.doc.getLine(l.line)||"").length&&(l.ch=0,l.line++)),U.cmpPos(l,this.doc.clipPos(l))!=0))return this.atOccurrence=!1;var n=this.matches(o,l);if(this.afterEmptyMatch=n&&U.cmpPos(n.from,n.to)==0,n)return this.pos=n,this.atOccurrence=!0,this.pos.match||!0;var a=B(o?this.doc.firstLine():this.doc.lastLine()+1,0);return this.pos={from:a,to:a},this.atOccurrence=!1},from:function(){if(this.atOccurrence)return this.pos.from},to:function(){if(this.atOccurrence)return this.pos.to},replace:function(o,l){if(this.atOccurrence){var n=U.splitLines(o);this.doc.replaceRange(n,this.pos.from,this.pos.to,l),this.pos.to=B(this.pos.from.line+n.length-1,n[n.length-1].length+(n.length==1?this.pos.from.ch:0))}}},U.defineExtension("getSearchCursor",function(o,l,n){return new c(this.doc,o,l,n)}),U.defineDocExtension("getSearchCursor",function(o,l,n){return new c(this,o,l,n)}),U.defineExtension("selectMatches",function(o,l){for(var n=[],a=this.getSearchCursor(o,this.getCursor("from"),l);a.findNext()&&!(U.cmpPos(a.to(),this.getCursor("to"))>0);)n.push({anchor:a.from(),head:a.to()});n.length&&this.setSelections(n,0)})})});var Oc=Nt((Mc,Rc)=>{(function(U){typeof Mc=="object"&&typeof Rc=="object"?U($t(),Ac(),Ys()):typeof define=="function"&&define.amd?define(["../lib/codemirror","../addon/search/searchcursor","../addon/edit/matchbrackets"],U):U(CodeMirror)})(function(U){"use strict";var B=U.commands,R=U.Pos;function f(n,a,h){if(h<0&&a.ch==0)return n.clipPos(R(a.line-1));var d=n.getLine(a.line);if(h>0&&a.ch>=d.length)return n.clipPos(R(a.line+1,0));for(var S="start",T,E=a.ch,M=E,D=h<0?0:d.length,W=0;M!=D;M+=h,W++){var I=d.charAt(h<0?M-1:M),A=I!="_"&&U.isWordChar(I)?"w":"o";if(A=="w"&&I.toUpperCase()==I&&(A="W"),S=="start")A!="o"?(S="in",T=A):E=M+h;else if(S=="in"&&T!=A){if(T=="w"&&A=="W"&&h<0&&M--,T=="W"&&A=="w"&&h>0)if(M==E+1){T="w";continue}else M--;break}}return R(a.line,M)}function k(n,a){n.extendSelectionsBy(function(h){return n.display.shift||n.doc.extend||h.empty()?f(n.doc,h.head,a):a<0?h.from():h.to()})}B.goSubwordLeft=function(n){k(n,-1)},B.goSubwordRight=function(n){k(n,1)},B.scrollLineUp=function(n){var a=n.getScrollInfo();if(!n.somethingSelected()){var h=n.lineAtHeight(a.top+a.clientHeight,"local");n.getCursor().line>=h&&n.execCommand("goLineUp")}n.scrollTo(null,a.top-n.defaultTextHeight())},B.scrollLineDown=function(n){var a=n.getScrollInfo();if(!n.somethingSelected()){var h=n.lineAtHeight(a.top,"local")+1;n.getCursor().line<=h&&n.execCommand("goLineDown")}n.scrollTo(null,a.top+n.defaultTextHeight())},B.splitSelectionByLine=function(n){for(var a=n.listSelections(),h=[],d=0;dS.line&&E==T.line&&T.ch==0||h.push({anchor:E==S.line?S:R(E,0),head:E==T.line?T:R(E)});n.setSelections(h,0)},B.singleSelectionTop=function(n){var a=n.listSelections()[0];n.setSelection(a.anchor,a.head,{scroll:!1})},B.selectLine=function(n){for(var a=n.listSelections(),h=[],d=0;dd?h.push(M,D):h.length&&(h[h.length-1]=D),d=D}n.operation(function(){for(var W=0;Wn.lastLine()?n.replaceRange(` +`+H,R(n.lastLine()),null,"+swapLine"):n.replaceRange(H+` +`,R(A,0),null,"+swapLine")}n.setSelections(S),n.scrollIntoView()})},B.swapLineDown=function(n){if(n.isReadOnly())return U.Pass;for(var a=n.listSelections(),h=[],d=n.lastLine()+1,S=a.length-1;S>=0;S--){var T=a[S],E=T.to().line+1,M=T.from().line;T.to().ch==0&&!T.empty()&&E--,E=0;D-=2){var W=h[D],I=h[D+1],A=n.getLine(W);W==n.lastLine()?n.replaceRange("",R(W-1),R(W),"+swapLine"):n.replaceRange("",R(W,0),R(W+1,0),"+swapLine"),n.replaceRange(A+` +`,R(I,0),null,"+swapLine")}n.scrollIntoView()})},B.toggleCommentIndented=function(n){n.toggleComment({indent:!0})},B.joinLines=function(n){for(var a=n.listSelections(),h=[],d=0;d=0;T--){var E=h[d[T]];if(!(M&&U.cmpPos(E.head,M)>0)){var D=y(n,E.head);M=D.from,n.replaceRange(a(D.word),D.from,D.to)}}})}B.smartBackspace=function(n){if(n.somethingSelected())return U.Pass;n.operation(function(){for(var a=n.listSelections(),h=n.getOption("indentUnit"),d=a.length-1;d>=0;d--){var S=a[d].head,T=n.getRange({line:S.line,ch:0},S),E=U.countColumn(T,null,n.getOption("tabSize")),M=n.findPosH(S,-1,"char",!1);if(T&&!/\S/.test(T)&&E%h==0){var D=new R(S.line,U.findColumn(T,E-h,h));D.ch!=S.ch&&(M=D)}n.replaceRange("",M,S,"+delete")}})},B.delLineRight=function(n){n.operation(function(){for(var a=n.listSelections(),h=a.length-1;h>=0;h--)n.replaceRange("",a[h].anchor,R(a[h].to().line),"+delete");n.scrollIntoView()})},B.upcaseAtCursor=function(n){w(n,function(a){return a.toUpperCase()})},B.downcaseAtCursor=function(n){w(n,function(a){return a.toLowerCase()})},B.setSublimeMark=function(n){n.state.sublimeMark&&n.state.sublimeMark.clear(),n.state.sublimeMark=n.setBookmark(n.getCursor())},B.selectToSublimeMark=function(n){var a=n.state.sublimeMark&&n.state.sublimeMark.find();a&&n.setSelection(n.getCursor(),a)},B.deleteToSublimeMark=function(n){var a=n.state.sublimeMark&&n.state.sublimeMark.find();if(a){var h=n.getCursor(),d=a;if(U.cmpPos(h,d)>0){var S=d;d=h,h=S}n.state.sublimeKilled=n.getRange(h,d),n.replaceRange("",h,d)}},B.swapWithSublimeMark=function(n){var a=n.state.sublimeMark&&n.state.sublimeMark.find();a&&(n.state.sublimeMark.clear(),n.state.sublimeMark=n.setBookmark(n.getCursor()),n.setCursor(a))},B.sublimeYank=function(n){n.state.sublimeKilled!=null&&n.replaceSelection(n.state.sublimeKilled,null,"paste")},B.showInCenter=function(n){var a=n.cursorCoords(null,"local");n.scrollTo(null,(a.top+a.bottom)/2-n.getScrollInfo().clientHeight/2)};function b(n){var a=n.getCursor("from"),h=n.getCursor("to");if(U.cmpPos(a,h)==0){var d=y(n,a);if(!d.word)return;a=d.from,h=d.to}return{from:a,to:h,query:n.getRange(a,h),word:d}}function c(n,a){var h=b(n);if(h){var d=h.query,S=n.getSearchCursor(d,a?h.to:h.from);(a?S.findNext():S.findPrevious())?n.setSelection(S.from(),S.to()):(S=n.getSearchCursor(d,a?R(n.firstLine(),0):n.clipPos(R(n.lastLine()))),(a?S.findNext():S.findPrevious())?n.setSelection(S.from(),S.to()):h.word&&n.setSelection(h.from,h.to))}}B.findUnder=function(n){c(n,!0)},B.findUnderPrevious=function(n){c(n,!1)},B.findAllUnder=function(n){var a=b(n);if(a){for(var h=n.getSearchCursor(a.query),d=[],S=-1;h.findNext();)d.push({anchor:h.from(),head:h.to()}),h.from().line<=a.from.line&&h.from().ch<=a.from.ch&&S++;n.setSelections(d,S)}};var o=U.keyMap;o.macSublime={"Cmd-Left":"goLineStartSmart","Shift-Tab":"indentLess","Shift-Ctrl-K":"deleteLine","Alt-Q":"wrapLines","Ctrl-Left":"goSubwordLeft","Ctrl-Right":"goSubwordRight","Ctrl-Alt-Up":"scrollLineUp","Ctrl-Alt-Down":"scrollLineDown","Cmd-L":"selectLine","Shift-Cmd-L":"splitSelectionByLine",Esc:"singleSelectionTop","Cmd-Enter":"insertLineAfter","Shift-Cmd-Enter":"insertLineBefore","Cmd-D":"selectNextOccurrence","Shift-Cmd-Space":"selectScope","Shift-Cmd-M":"selectBetweenBrackets","Cmd-M":"goToBracket","Cmd-Ctrl-Up":"swapLineUp","Cmd-Ctrl-Down":"swapLineDown","Cmd-/":"toggleCommentIndented","Cmd-J":"joinLines","Shift-Cmd-D":"duplicateLine",F5:"sortLines","Shift-F5":"reverseSortLines","Cmd-F5":"sortLinesInsensitive","Shift-Cmd-F5":"reverseSortLinesInsensitive",F2:"nextBookmark","Shift-F2":"prevBookmark","Cmd-F2":"toggleBookmark","Shift-Cmd-F2":"clearBookmarks","Alt-F2":"selectBookmarks",Backspace:"smartBackspace","Cmd-K Cmd-D":"skipAndSelectNextOccurrence","Cmd-K Cmd-K":"delLineRight","Cmd-K Cmd-U":"upcaseAtCursor","Cmd-K Cmd-L":"downcaseAtCursor","Cmd-K Cmd-Space":"setSublimeMark","Cmd-K Cmd-A":"selectToSublimeMark","Cmd-K Cmd-W":"deleteToSublimeMark","Cmd-K Cmd-X":"swapWithSublimeMark","Cmd-K Cmd-Y":"sublimeYank","Cmd-K Cmd-C":"showInCenter","Cmd-K Cmd-G":"clearBookmarks","Cmd-K Cmd-Backspace":"delLineLeft","Cmd-K Cmd-1":"foldAll","Cmd-K Cmd-0":"unfoldAll","Cmd-K Cmd-J":"unfoldAll","Ctrl-Shift-Up":"addCursorToPrevLine","Ctrl-Shift-Down":"addCursorToNextLine","Cmd-F3":"findUnder","Shift-Cmd-F3":"findUnderPrevious","Alt-F3":"findAllUnder","Shift-Cmd-[":"fold","Shift-Cmd-]":"unfold","Cmd-I":"findIncremental","Shift-Cmd-I":"findIncrementalReverse","Cmd-H":"replace",F3:"findNext","Shift-F3":"findPrev",fallthrough:"macDefault"},U.normalizeKeyMap(o.macSublime),o.pcSublime={"Shift-Tab":"indentLess","Shift-Ctrl-K":"deleteLine","Alt-Q":"wrapLines","Ctrl-T":"transposeChars","Alt-Left":"goSubwordLeft","Alt-Right":"goSubwordRight","Ctrl-Up":"scrollLineUp","Ctrl-Down":"scrollLineDown","Ctrl-L":"selectLine","Shift-Ctrl-L":"splitSelectionByLine",Esc:"singleSelectionTop","Ctrl-Enter":"insertLineAfter","Shift-Ctrl-Enter":"insertLineBefore","Ctrl-D":"selectNextOccurrence","Shift-Ctrl-Space":"selectScope","Shift-Ctrl-M":"selectBetweenBrackets","Ctrl-M":"goToBracket","Shift-Ctrl-Up":"swapLineUp","Shift-Ctrl-Down":"swapLineDown","Ctrl-/":"toggleCommentIndented","Ctrl-J":"joinLines","Shift-Ctrl-D":"duplicateLine",F9:"sortLines","Shift-F9":"reverseSortLines","Ctrl-F9":"sortLinesInsensitive","Shift-Ctrl-F9":"reverseSortLinesInsensitive",F2:"nextBookmark","Shift-F2":"prevBookmark","Ctrl-F2":"toggleBookmark","Shift-Ctrl-F2":"clearBookmarks","Alt-F2":"selectBookmarks",Backspace:"smartBackspace","Ctrl-K Ctrl-D":"skipAndSelectNextOccurrence","Ctrl-K Ctrl-K":"delLineRight","Ctrl-K Ctrl-U":"upcaseAtCursor","Ctrl-K Ctrl-L":"downcaseAtCursor","Ctrl-K Ctrl-Space":"setSublimeMark","Ctrl-K Ctrl-A":"selectToSublimeMark","Ctrl-K Ctrl-W":"deleteToSublimeMark","Ctrl-K Ctrl-X":"swapWithSublimeMark","Ctrl-K Ctrl-Y":"sublimeYank","Ctrl-K Ctrl-C":"showInCenter","Ctrl-K Ctrl-G":"clearBookmarks","Ctrl-K Ctrl-Backspace":"delLineLeft","Ctrl-K Ctrl-1":"foldAll","Ctrl-K Ctrl-0":"unfoldAll","Ctrl-K Ctrl-J":"unfoldAll","Ctrl-Alt-Up":"addCursorToPrevLine","Ctrl-Alt-Down":"addCursorToNextLine","Ctrl-F3":"findUnder","Shift-Ctrl-F3":"findUnderPrevious","Alt-F3":"findAllUnder","Shift-Ctrl-[":"fold","Shift-Ctrl-]":"unfold","Ctrl-I":"findIncremental","Shift-Ctrl-I":"findIncrementalReverse","Ctrl-H":"replace",F3:"findNext","Shift-F3":"findPrev",fallthrough:"pcDefault"},U.normalizeKeyMap(o.pcSublime);var l=o.default==o.macDefault;o.sublime=l?o.macSublime:o.pcSublime})});var Fc=Nt((Ic,Hc)=>{(function(U){typeof Ic=="object"&&typeof Hc=="object"?U($t()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],U):U(CodeMirror)})(function(U){"use strict";function B(_){return new RegExp("^(("+_.join(")|(")+"))\\b")}var R=B(["and","or","not","is"]),f=["as","assert","break","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","lambda","pass","raise","return","try","while","with","yield","in","False","True"],k=["abs","all","any","bin","bool","bytearray","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip","__import__","NotImplemented","Ellipsis","__debug__"];U.registerHelper("hintWords","python",f.concat(k).concat(["exec","print"]));function m(_){return _.scopes[_.scopes.length-1]}U.defineMode("python",function(_,g){for(var x="error",C=g.delimiters||g.singleDelimiters||/^[\(\)\[\]\{\}@,:`=;\.\\]/,u=[g.singleOperators,g.doubleOperators,g.doubleDelimiters,g.tripleDelimiters,g.operators||/^([-+*/%\/&|^]=?|[<>=]+|\/\/=?|\*\*=?|!=|[~!@]|\.\.\.)/],p=0;pG?M(F):te0&&W(H,F)&&(ce+=" "+x),ce}}return S(H,F)}function S(H,F,z){if(H.eatSpace())return null;if(!z&&H.match(/^#.*/))return"comment";if(H.match(/^[0-9\.]/,!1)){var G=!1;if(H.match(/^[\d_]*\.\d+(e[\+\-]?\d+)?/i)&&(G=!0),H.match(/^[\d_]+\.\d*/)&&(G=!0),H.match(/^\.\d+/)&&(G=!0),G)return H.eat(/J/i),"number";var te=!1;if(H.match(/^0x[0-9a-f_]+/i)&&(te=!0),H.match(/^0b[01_]+/i)&&(te=!0),H.match(/^0o[0-7_]+/i)&&(te=!0),H.match(/^[1-9][\d_]*(e[\+\-]?[\d_]+)?/)&&(H.eat(/J/i),te=!0),H.match(/^0(?![\dx])/i)&&(te=!0),te)return H.eat(/L/i),"number"}if(H.match(n)){var ce=H.current().toLowerCase().indexOf("f")!==-1;return ce?(F.tokenize=T(H.current(),F.tokenize),F.tokenize(H,F)):(F.tokenize=E(H.current(),F.tokenize),F.tokenize(H,F))}for(var ee=0;ee=0;)H=H.substr(1);var z=H.length==1,G="string";function te(ee){return function(fe,_e){var q=S(fe,_e,!0);return q=="punctuation"&&(fe.current()=="{"?_e.tokenize=te(ee+1):fe.current()=="}"&&(ee>1?_e.tokenize=te(ee-1):_e.tokenize=ce)),q}}function ce(ee,fe){for(;!ee.eol();)if(ee.eatWhile(/[^'"\{\}\\]/),ee.eat("\\")){if(ee.next(),z&&ee.eol())return G}else{if(ee.match(H))return fe.tokenize=F,G;if(ee.match("{{"))return G;if(ee.match("{",!1))return fe.tokenize=te(0),ee.current()?G:fe.tokenize(ee,fe);if(ee.match("}}"))return G;if(ee.match("}"))return x;ee.eat(/['"]/)}if(z){if(g.singleLineStringErrors)return x;fe.tokenize=F}return G}return ce.isString=!0,ce}function E(H,F){for(;"rubf".indexOf(H.charAt(0).toLowerCase())>=0;)H=H.substr(1);var z=H.length==1,G="string";function te(ce,ee){for(;!ce.eol();)if(ce.eatWhile(/[^'"\\]/),ce.eat("\\")){if(ce.next(),z&&ce.eol())return G}else{if(ce.match(H))return ee.tokenize=F,G;ce.eat(/['"]/)}if(z){if(g.singleLineStringErrors)return x;ee.tokenize=F}return G}return te.isString=!0,te}function M(H){for(;m(H).type!="py";)H.scopes.pop();H.scopes.push({offset:m(H).offset+_.indentUnit,type:"py",align:null})}function D(H,F,z){var G=H.match(/^[\s\[\{\(]*(?:#|$)/,!1)?null:H.column()+1;F.scopes.push({offset:F.indent+w,type:z,align:G})}function W(H,F){for(var z=H.indentation();F.scopes.length>1&&m(F).offset>z;){if(m(F).type!="py")return!0;F.scopes.pop()}return m(F).offset!=z}function I(H,F){H.sol()&&(F.beginningOfLine=!0,F.dedent=!1);var z=F.tokenize(H,F),G=H.current();if(F.beginningOfLine&&G=="@")return H.match(l,!1)?"meta":o?"operator":x;if(/\S/.test(G)&&(F.beginningOfLine=!1),(z=="variable"||z=="builtin")&&F.lastToken=="meta"&&(z="meta"),(G=="pass"||G=="return")&&(F.dedent=!0),G=="lambda"&&(F.lambda=!0),G==":"&&!F.lambda&&m(F).type=="py"&&H.match(/^\s*(?:#|$)/,!1)&&M(F),G.length==1&&!/string|comment/.test(z)){var te="[({".indexOf(G);if(te!=-1&&D(H,F,"])}".slice(te,te+1)),te="])}".indexOf(G),te!=-1)if(m(F).type==G)F.indent=F.scopes.pop().offset-w;else return x}return F.dedent&&H.eol()&&m(F).type=="py"&&F.scopes.length>1&&F.scopes.pop(),z}var A={startState:function(H){return{tokenize:d,scopes:[{offset:H||0,type:"py",align:null}],indent:H||0,lastToken:null,lambda:!1,dedent:0}},token:function(H,F){var z=F.errorToken;z&&(F.errorToken=!1);var G=I(H,F);return G&&G!="comment"&&(F.lastToken=G=="keyword"||G=="punctuation"?H.current():G),G=="punctuation"&&(G=null),H.eol()&&F.lambda&&(F.lambda=!1),z?G+" "+x:G},indent:function(H,F){if(H.tokenize!=d)return H.tokenize.isString?U.Pass:0;var z=m(H),G=z.type==F.charAt(0)||z.type=="py"&&!H.dedent&&/^(else:|elif |except |finally:)/.test(F);return z.align!=null?z.align-(G?1:0):z.offset-(G?w:0)},electricInput:/^\s*([\}\]\)]|else:|elif |except |finally:)$/,closeBrackets:{triples:`'"`},lineComment:"#",fold:"indent"};return A}),U.defineMIME("text/x-python","python");var y=function(_){return _.split(" ")};U.defineMIME("text/x-cython",{name:"python",extra_keywords:y("by cdef cimport cpdef ctypedef enum except extern gil include nogil property public readonly struct union DEF IF ELIF ELSE")})})});var Df=U=>U.reduce((B,R)=>B+String.fromCharCode(R),""),cn=Df;var Bf=U=>U.split("").map(B=>B.charCodeAt(0)),Il=Bf;var vs=class{name(){return"default"}codePointsToString(B){return cn(B)}stringToCodePoints(B){return Il(B)}matches(B){return this.matchesAsString(this.codePointsToString(B))}matchesAsString(B){return!0}decode(B){return this.decodeAsString(this.codePointsToString(B))}decodeAsString(B){return this.stringToCodePoints(B)}},Si=vs;var gs=class extends Si{name(){return"base64"}matchesAsString(B){if(B.length<8||/[^A-Za-z0-9+/=]/.test(B))return!1;try{return atob(B),!0}catch{return!1}}decodeAsString(B){return Array.from(atob(B)).map(R=>R.charCodeAt(0))}},Hl=gs;var Er=class{constructor(B,R,f,k=null,m=null,y=B){this.id=B;this.name=R;this.runner=f;this.url=k;this.args=m;this.highlighterRef=y}getId(){return this.id}getName(){return this.name}getURL(){return this.url}getArgs(){return this.args}getHighlighterRef(){return this.highlighterRef}run(B,R,f){return this.runner(B,R,f)}};var ys=kt(Wl(),1);var ms=class extends ys.default{constructor(){super(),this.on("message",B=>{if(B.type==="run")return this.init(B.code,B.input,B.args);if(B.type==="output")return this.emit("output",{output:B.output,error:B.error});if(B.type==="done")return this.emit("done",{exitCode:B.exitCode}),this.terminate();console.warn("Unhandled message",B)})}},_o=ms;var bs=class extends _o{constructor(B){super(),this.worker=new Worker(B),this.worker.addEventListener("error",R=>this.emit("error",R)),this.worker.addEventListener("message",({data:R})=>this.emit("message",R))}async init(B,R,f){this.postMessage({type:"run",code:B,args:f,input:R})}postMessage(B,R){return this.worker.postMessage(B,R)}terminate(){return this.worker.terminate()}},Nl=bs;import{init as Hf,Wasmer as Ff}from"https://unpkg.com/@wasmer/sdk@latest?module";var Ss=class extends _o{constructor(R,f="script",k){super();this.packageName=R;this.filename=f;this.spawnOptions=k}#e;#t;async init(R,f,k){await Hf();let m=window.setTimeout(()=>this.emit("toast",{message:"Downloading package from wasmer.io. This might take some time...",type:"info"}),1e3);this.#e=await Ff.fromRegistry(this.packageName),this.filename&&(k.includes("$filename")||(k+=(k.length>0?` +`:"")+"$filename"),k=k.replace("$filename",`/app/${this.filename}`));let y={args:k.split(` +`).map(C=>C!=="$code"?C:cn(R)),stdin:f,...this.spawnOptions,mount:{...this.spawnOptions?.mount,"/app":{...this.spawnOptions?.mount&&"/app"in this.spawnOptions?.mount?this.spawnOptions?.mount["/app"]:{},...this.filename?{[this.filename]:new Uint8Array(R)}:{}}}};window.clearTimeout(m),this.#t=await this.#e.entrypoint.run(y);let{code:_,stderr:g,stdout:x}=await this.#t.wait();x.split("").forEach(C=>this.emit("output",{output:C})),g.split("").forEach(C=>this.emit("output",{error:C})),this.emit("done",{code:_})}terminate(){}},yo=Ss;var Cs=class{constructor(){this.data={}}register(...B){B.forEach(R=>{this.data[R.getId()]=R})}get(B){return this.data[B]}all(){return Object.keys(this.data)}async run(B,R,f,k){return await this.data[B].run(R,k,f)}},mo=U=>async(B,R,f)=>{let k=new Nl(U);return k.init(B,R,f),k},bo=(U,B="script",R)=>async(f,k,m)=>{let y=new yo(U,B,R);return y.init(f,k,m),y},Yr=new Cs;var gh=kt(Ul()),xs=class extends Er{constructor(){super("bash-wasmer","Bash (wasmer)",bo("sharrattj/bash","script.sh"),"https://www.gnu.org/software/bash/",[],"shell")}},ql=xs;var ks=class extends Si{name(){return"hexdump"}matchesAsString(B){return/^([0-9a-f]{7}(( ([0-9a-f]{4})){1,8}) *\n)+[0-9a-f]{7}\n?$/.test(B)}decodeAsString(B){return B.trim().replace(/\n[0-9a-f]{7}\n?$/,"").replace(/(?<=^|\n)[0-9a-f]{7}(( ([0-9a-f]{4})){1,8}) */g,"$1").replace(/\s+/g,"").replace(/(..)(..)/g,"$2$1").replace(/00$/,"").match(/../g).map(R=>parseInt(R,16))}},Kl=ks;var Ch=kt(Es()),Ts=class extends Er{constructor(){super("javascript-browser","JavaScript (Browser)",mo("dist/js/langs/javascript-browser/worker.js"),"https://www.ecma-international.org/publications-and-standards/standards/ecma-262/",null,"javascript")}},Xl=Ts;var kh=kt($l()),As=class extends Er{constructor(){super("ruby-wasmer","Ruby (wasmer)",bo("katei/ruby","script.rb"),"https://www.ruby-lang.org/",[],"ruby")}},Jl=As;var Mh=kt(Ms()),Rs=class extends Er{constructor(){super("webperl-5.28.1","Perl 5.28.1 (webperl)",mo("dist/js/langs/webperl-5.28.1/worker.js"),"https://www.perl.org/",["-M5.10.0","-F","-l","-p"],"perl")}},tc=Rs;var Dc=kt($t()),Bc=kt(oc());var Os=class{constructor(...B){this.buffer="";this.prepend="";this.registered=[];this.register(...B)}activate(B){this.registered.reduce((R,f)=>f.matches(B)&&!R?(f.isActive()||(f.activate(B),f.reset(),f.write(this.prepend+this.buffer)),!0):(f.deactivate(),f.reset(),R),!1),this.resize()}refresh(){this.registered.forEach(B=>{this.registered.filter(R=>R.isActive()).forEach(R=>{R.reset(),R.write(this.prepend+this.buffer)})})}register(...B){this.registered.push(...B)}reset(){this.buffer="",this.registered.forEach(B=>{B.reset(),this.prepend&&B.write(this.prepend)})}resize(){this.registered.forEach(B=>{B.isActive()&&B.resize()})}setPrepend(B){this.prepend=B,this.refresh()}write(B){typeof B=="number"&&(B=String.fromCharCode(B)),this.buffer+=B,this.registered.filter(R=>R.isActive()).forEach(R=>R.write(B))}};var Ds=(...U)=>new Os(...U);var ac=kt($t());var Bs=class{constructor(){this.active=!1;this.inputs=null}activate(B){this.container.removeAttribute("hidden"),this.active=!0,this.inputs=B,this.resize()}createElement(B="div"){return this.container=document.createElement(B),this.container.setAttribute("hidden",""),this.container}deactivate(){this.container.setAttribute("hidden",""),this.active=!1}isActive(){return this.active}read(){return this.readAsString(null).split("").map(B=>B.charCodeAt(0))}resize(){}},sc=Bs;var Nf=(U,B=".")=>U.replace(/[^\x09\x0a\x20-\x7e]/g,B),Co=Nf;var Ps=class extends sc{constructor(B,R={}){super();let f=this.createElement("div"),k=document.createElement("textarea");B.append(f),f.append(k),this.editor=(0,ac.fromTextArea)(k,{mode:null,theme:"monokai",viewportMargin:1/0,...R,extraKeys:{"Ctrl-D":"duplicateLine","Ctrl-/":"toggleComment","Shift-Tab":!1,Tab:!1,...Object.keys(R.extraKeys||{}).length?R.extraKeys:{}}}),this.editor.on("change",()=>{this.inputs!==null&&this.inputs.setBuffer(this.editor.getValue().split("").map(m=>m.charCodeAt(0)))})}matches(B){return/^[\t\n -~]*$/.test(B)}on(B,R){this.editor.on(B,(...f)=>R(...f))}readAsString(B="."){let R=unescape(encodeURIComponent(this.editor.getValue()));return B===null?R:Co(R,B)}reset(){this.editor.setValue("")}setOption(B,R){this.editor.setOption(B,R)}setType(B){this.editor.getOption("mode")!==B&&(this.editor.setOption("mode",B),this.editor.setValue(this.editor.getValue()))}write(B){Array.isArray(B)&&(B=B.map(R=>String.fromCharCode(R)).join("")),this.editor.setValue(B)}},Ii=Ps;var Is=class{constructor(){this.active=!1;this.mimeType="text/plain"}activate(B){this.container.removeAttribute("hidden"),this.active=!0,this.mimeType=B,this.resize()}createElement(B="div",R=!0){let f=document.createElement(B);return R&&f.setAttribute("hidden",""),f}deactivate(){this.container.setAttribute("hidden",""),this.active=!1}isActive(){return this.active}matches(B){return!0}resize(){}},un=Is;var Gh=kt(Es()),Zh=kt(Ms()),Hs=class extends un{constructor(B,R={}){super();let f=document.createElement("textarea");this.container=this.createElement("div"),this.container.append(f),B.append(this.container),this.editor=wo.createEditor(f,{...R,readOnly:!0}),B.append(this.container)}activate(B){super.activate(B),this.editor.setOption("mode",B)}deactivate(){super.deactivate()}matches(B){return["application/ecmascript","application/javascript","application/json","application/x-perl","text/ecmascript","text/javascript","text/json","text/x-perl"].includes(B)}reset(){this.editor.setValue("")}write(B){typeof B=="number"&&(B=String.fromCharCode(B)),this.editor.setValue(this.editor.getValue()+B)}},lc=Hs;var Fs=class extends un{constructor(R){super();this.buffer="";this.mimeType="text/html";this.container=this.createElement("iframe"),R.append(this.container),this.update()}activate(R){super.activate(R),this.update()}matches(R){return["text/html"].includes(R)}reset(){this.buffer="",this.update()}write(R){typeof R=="number"&&(R=String.fromCharCode(R)),this.buffer+=R,this.update()}update(){let R=this.createElement("iframe",this.container.hasAttribute("hidden"));R.src=`data:${this.mimeType};base64,${btoa(this.buffer)}`,this.container.replaceWith(R),this.container=R}},Lo=Fs;var Ws=class{constructor(){this.registered=[]}register(...B){this.registered.push(...B)}decode(B){return this.decoder(B).decode(B)}decodeAsString(B){return this.decoderAsString(B).decodeAsString(B)}decoder(B){let[R]=this.registered.filter(f=>f.matches(B));return R}decoderAsString(B){let[R]=this.registered.filter(f=>f.matchesAsString(B));return R}};var si=new Ws;var Ns=class{constructor(B,R){this.stdin=B;this.args=R}getArgs(){return this.args.getValue()}setArgs(B){this.args.setValue(B)}argsRefresh(){this.args.refresh()}getStdin(){return si.decodeAsString(this.stdin.getValue()).reduce((B,R)=>B+String.fromCharCode(R),"")}setStdin(B){this.stdin.setValue(B)}},cc=Ns;var js=class{constructor(){this.options={}}get(B,R=null){return this.options[B]??R}set(B,R){this.options[B]=R}},Hi=new js;var zs=class extends Lo{constructor(){super(...arguments);this.imageBuffer="";this.imageMimeType="image/png";this.zoomLevel=1}activate(R){this.zoomLevel=Hi.get("zoomLevel",1),super.activate("text/html"),this.imageMimeType=R}css(){return` html, body { margin: 0; padding: 0; } body > img { - --z: 1; + --z: ${this.zoomLevel}; image-rendering: pixelated; transform: scale(var(--z)); transform-origin: 0 0; @@ -98,9 +100,14 @@ body > img { .controls.left button.toggle:after { content: '\\27f6'; } + +.controls .zoom-level { + font-family: sans-serif; + text-align: center; +} `.replace(/\s*,\s*/g,",").replace(/\s*>\s*/g,">").replace(/\s*;\s*}\s*/g,"}").replace(/\s*{\s*/g,"{").replace(/\s*:\s*/g,":").replace(/\s*;\s*/g,";")}data(){return` - +
@@ -108,27 +115,78 @@ body > img {
+
${this.zoomLevel*100}%
\n`;\n }\n\n // TODO: this whole renderer should be a separate package with the contents parsed into a minified file\n private js(): string {\n // return `\n // const image = document.querySelector('img'),\n // controls = document.querySelector('.controls');\n //\n // document.addEventListener('click', (event) => {\n // const target = event.target,\n // currentZoom = getComputedStyle(image).getPropertyValue('--z');\n //\n // if (target.matches('.zoom-in,.zoom-in *')) {\n // image.style.setProperty('--z', currentZoom * 2);\n // }\n //\n // if (target.matches('.zoom-out,.zoom-out *')) {\n // image.style.setProperty('--z', currentZoom / 2);\n // }\n //\n // if (target.matches('.toggle,.toggle *')) {\n // controls.classList.toggle('left');\n // }\n //\n // if (target.matches('button.checked')) {\n // image.classList.toggle('checked');\n // }\n // });\n // `;\n return `var e=document.querySelector(\"img\"),t=document.querySelector(\".controls\");document.addEventListener(\"click\",(function(o){var c=o.target,l=getComputedStyle(e).getPropertyValue(\"--z\");c.matches(\".zoom-in,.zoom-in *\")&&e.style.setProperty(\"--z\",2*l),c.matches(\".zoom-out,.zoom-out *\")&&e.style.setProperty(\"--z\",l/2),c.matches(\".toggle,.toggle *\")&&t.classList.toggle(\"left\"),c.matches(\"button.checked\")&&e.classList.toggle(\"checked\")}))`;\n }\n\n public matches(mimeType: string): boolean {\n // Using data from: https://en.wikipedia.org/wiki/Comparison_of_web_browsers#Image_format_support\n // and: https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types\n return [\n 'image/apng',\n 'image/avif',\n 'image/bmp',\n 'image/gif',\n 'image/jpeg',\n 'image/png',\n 'image/svg+xml',\n 'image/vnd.microsoft.icon',\n 'image/webp',\n ].includes(mimeType);\n }\n\n public reset(): void {\n super.reset();\n\n this.imageBuffer = '';\n }\n\n public write(char: number): void;\n public write(data: string): void;\n public write(char: number | string): void {\n if (typeof char === 'number') {\n char = String.fromCharCode(char);\n }\n\n this.imageBuffer += char;\n this.buffer = '';\n\n super.write(this.data());\n }\n}\n\nexport default Image;\n", "export interface Input {\n activate(device: Inputs): void;\n deactivate(): void;\n isActive(): boolean;\n matches(data: string): boolean;\n on(eventName: string, handler: (...args: any[]) => void): void;\n read(): number[];\n readAsString(replaceBinaryBytes: string | null): string;\n reset(): void;\n resize(): void;\n setType(type: string | null): void;\n write(data: string | number[]): void;\n}\n\nexport type InputConstructor = new (\n parent: HTMLElement,\n ...args: any[]\n) => Input;\n\nexport class Inputs {\n private buffer: number[] = [];\n private registered: Input[] = [];\n private type: string;\n\n public constructor(...inputs: Input[]) {\n this.register(...inputs);\n }\n\n private active(): Input {\n const [input] = this.registered.filter((input) => input.isActive());\n\n return input;\n }\n\n public activate(toActivate: InputConstructor | Input): void {\n this.registered.reduce((value, input): boolean => {\n // Activate the required input\n if (\n !value &&\n ((typeof toActivate === 'function' && input instanceof toActivate) ||\n input === toActivate)\n ) {\n if (!input.isActive()) {\n input.activate(this);\n input.reset();\n input.write(this.buffer);\n }\n\n return true;\n }\n\n input.deactivate();\n input.reset();\n\n return value;\n }, false);\n\n this.resize();\n }\n\n public on(eventName: string, handler: (event: Event) => void): void {\n this.registered.forEach((input) => input.on(eventName, handler));\n }\n\n public read(): number[] {\n return this.active().read();\n }\n\n public readAsString(replaceBinaryBytes: string | null = '.'): string {\n return this.active().readAsString(replaceBinaryBytes);\n }\n\n public register(...inputs: Input[]): void {\n this.registered.push(...inputs);\n }\n\n public reset(): void {\n this.buffer.splice(0);\n this.registered.forEach((input) => input.reset());\n }\n\n public resize(): void {\n this.registered.forEach((input) => {\n if (input.isActive()) {\n input.resize();\n }\n });\n }\n\n public setBuffer(buffer: number[]): void {\n this.buffer.push(...buffer);\n }\n\n public setType(type: string | null): void {\n this.type = type;\n\n this.registered.forEach((input) => input.setType(type));\n }\n\n public write(char: number | number[] | string): void {\n const writeBuffer = [];\n\n if (typeof char === 'number') {\n writeBuffer.push(char);\n }\n\n if (Array.isArray(char)) {\n char.forEach((char) => writeBuffer.push(char));\n }\n\n if (typeof char === 'string') {\n char.split('').forEach((char) => writeBuffer.push(char.charCodeAt(0)));\n }\n\n this.registered.filter((input) => {\n if (input.isActive()) {\n input.write(writeBuffer);\n }\n });\n\n writeBuffer.forEach((char) => this.buffer.push(char));\n }\n}\n\nexport default Inputs;\n", "export class InvalidFormat extends TypeError {}\n\nexport default InvalidFormat;\n", "import Image from './Image';\nimport InvalidFormat from './Error/InvalidFormat';\nimport { Renderer } from '../Renderers';\n\nexport type PBMHeader =\n | [string, number, number, number] // P1: type, width, height, offset\n | [string, number, number, number, number]; // P3: type, width, height, maxValue, offset\n\n/**\n * @see https://en.wikipedia.org/wiki/Netpbm\n */\nexport class PBMImage extends Image implements Renderer {\n ppmBuffer: string = '';\n superTimeout: number | null = null;\n\n public activate(mimeType: string) {\n super.activate('image/png');\n }\n\n public matches(mimeType: string): boolean {\n return [\n 'image/x-portable-bitmap',\n 'image/x-portable-graymap',\n 'image/x-portable-pixmap',\n 'image/x-portable-anymap',\n ].includes(mimeType);\n }\n\n public reset() {\n super.reset();\n\n this.ppmBuffer = '';\n }\n\n public write(char: string | number): void {\n if (typeof char === 'number') {\n char = String.fromCharCode(char);\n }\n\n this.ppmBuffer += char;\n\n if (this.ppmBuffer.length < 10) {\n return;\n }\n\n // Wait for data to stop streaming\n if (this.superTimeout) {\n clearTimeout(this.superTimeout);\n }\n\n this.superTimeout = setTimeout(() => {\n try {\n super.reset();\n\n super.write(this.convertToPNG());\n } catch (e) {\n console.error(e);\n }\n }, 50);\n }\n\n private convertToPNG(): string {\n if (!/^P[1-7]/.test(this.ppmBuffer)) {\n throw new InvalidFormat();\n }\n\n const header = this.extractPBMHeader();\n\n if (!header) {\n throw new InvalidFormat();\n }\n\n const [format] = header;\n\n if (!format) {\n throw new InvalidFormat();\n }\n\n if (format === 'P1') {\n const [, width, height, offset] = header;\n\n return this.parseP1(width, height, offset);\n }\n\n if (format === 'P2') {\n const [, width, height, maxValue, offset] = header;\n\n return this.parseP2(width, height, maxValue, offset);\n }\n\n if (format === 'P3') {\n const [, width, height, maxValue, offset] = header;\n\n return this.parseP3(width, height, maxValue, offset);\n }\n\n if (format === 'P4') {\n const [, width, height, offset] = header;\n\n return this.parseP4(width, height, offset);\n }\n\n if (format === 'P5') {\n const [, width, height, maxValue, offset] = header;\n\n return this.parseP2(width, height, maxValue, offset, true);\n }\n\n if (format === 'P6') {\n const [, width, height, maxValue, offset] = header;\n\n return this.parseP3(width, height, maxValue, offset, true);\n }\n\n throw new InvalidFormat('Currently unsupported.');\n }\n\n private createCanvas(\n width: number,\n height: number\n ): [HTMLCanvasElement, CanvasRenderingContext2D, ImageData] {\n const canvas = document.createElement('canvas'),\n context = canvas.getContext('2d'),\n imageData = new ImageData(width, height);\n\n canvas.width = width;\n canvas.height = height;\n\n return [canvas, context, imageData];\n }\n\n private canvasToRawPNG(canvas: HTMLCanvasElement): string {\n // Convert back to raw data from a data: URI\n return atob(\n canvas.toDataURL('image/png').replace(/^data:image\\/png;base64,/, '')\n );\n }\n\n private parseP1(width: number, height: number, offset: number): string {\n const [canvas, context, imageData] = this.createCanvas(width, height),\n data = this.asciiDataGenerator(offset, false);\n\n for (let index = 0; index < width * height * 4; ) {\n const value = data.next().value === 1 ? 0 : 255;\n\n imageData.data[index++] = value;\n imageData.data[index++] = value;\n imageData.data[index++] = value;\n imageData.data[index++] = 255;\n }\n\n context.putImageData(imageData, 0, 0, 0, 0, width, height);\n\n return this.canvasToRawPNG(canvas);\n }\n\n private parseP2(\n width: number,\n height: number,\n maxValue: number,\n offset: number,\n binary: boolean = false\n ): string {\n const [canvas, context, imageData] = this.createCanvas(width, height),\n data = binary\n ? this.binaryDataGenerator(offset)\n : this.asciiDataGenerator(offset);\n\n for (let index = 0; index < width * height * 4; ) {\n const value = Math.floor((data.next().value / maxValue) * 255);\n\n imageData.data[index++] = value;\n imageData.data[index++] = value;\n imageData.data[index++] = value;\n imageData.data[index++] = 255;\n }\n\n context.putImageData(imageData, 0, 0, 0, 0, width, height);\n\n return this.canvasToRawPNG(canvas);\n }\n\n private parseP3(\n width: number,\n height: number,\n maxValue: number,\n offset: number,\n binary: boolean = false\n ): string {\n const [canvas, context, imageData] = this.createCanvas(width, height),\n data = binary\n ? this.binaryDataGenerator(offset)\n : this.asciiDataGenerator(offset);\n\n for (let index = 0; index < width * height * 4; ) {\n imageData.data[index++] = Math.floor(\n ((data.next().value || 0) / maxValue) * 255\n );\n imageData.data[index++] = Math.floor(\n ((data.next().value || 0) / maxValue) * 255\n );\n imageData.data[index++] = Math.floor(\n ((data.next().value || 0) / maxValue) * 255\n );\n imageData.data[index++] = 255;\n }\n\n context.putImageData(imageData, 0, 0, 0, 0, width, height);\n\n return this.canvasToRawPNG(canvas);\n }\n\n private parseP4(width: number, height: number, offset: number): string {\n const [canvas, context, imageData] = this.createCanvas(width, height),\n data = this.binaryBitDataGenerator(offset);\n\n for (let index = 0; index < width * height * 4; ) {\n const value = data.next().value === 1 ? 0 : 255;\n\n imageData.data[index++] = value;\n imageData.data[index++] = value;\n imageData.data[index++] = value;\n imageData.data[index++] = 255;\n }\n\n context.putImageData(imageData, 0, 0, 0, 0, width, height);\n\n return this.canvasToRawPNG(canvas);\n }\n\n private extractPBMHeader(): PBMHeader | null {\n const type = this.ppmBuffer.slice(0, 2),\n withoutMaxValue =\n /^(P[14])\\s+(?:#[^\\n]*\\s*)*(\\d+)\\s+(?:#[^\\n]*\\s*)*(\\d+)\\s*(?:#[^\\n]*\\s*)*/,\n withMaxValue =\n /^(P[2356])\\s+(?:#[^\\n]*\\s*)*(\\d+)\\s+(?:#[^\\n]*\\s*)*(\\d+)\\s+(?:#[^\\n]*\\s*)*(\\d+)\\s*(?:#[^\\n]*\\s*)*/;\n\n if (type === 'P1' || type === 'P4') {\n const match = this.ppmBuffer.match(withoutMaxValue);\n\n if (!match) {\n throw new InvalidFormat();\n }\n\n return [\n match[1], // format\n parseInt(match[2], 10), // width\n parseInt(match[3], 10), // height\n match[0].length, // offset\n ];\n }\n\n if (type === 'P2' || type === 'P3' || type === 'P5' || type === 'P6') {\n const match = this.ppmBuffer.match(withMaxValue);\n\n if (!match) {\n throw new InvalidFormat();\n }\n\n return [\n match[1], // format\n parseInt(match[2], 10), // width\n parseInt(match[3], 10), // height\n parseInt(match[4], 10), // max value\n match[0].length, // offset\n ];\n }\n }\n\n private *asciiDataGenerator(\n offset: number,\n separator: boolean = true\n ): Generator {\n let block = '';\n\n for (\n let currentPosition = offset, comment = false;\n currentPosition < this.ppmBuffer.length;\n currentPosition++\n ) {\n const currentChar = this.ppmBuffer[currentPosition];\n\n if (/#/.test(currentChar)) {\n if (block) {\n yield parseInt(block, 10);\n\n block = '';\n }\n\n comment = true;\n }\n\n if (/\\n/.test(currentChar) && comment) {\n comment = false;\n }\n\n if (comment) {\n continue;\n }\n\n if (/\\s/.test(currentChar) && block.length > 0) {\n yield parseInt(block, 10);\n\n block = '';\n }\n\n if (/\\d/.test(currentChar)) {\n block += currentChar;\n }\n\n if (separator === false && block) {\n yield parseInt(block, 10);\n\n block = '';\n }\n }\n\n yield parseInt(block, 10);\n }\n\n private *binaryDataGenerator(offset: number): Generator {\n let block = '';\n\n for (\n let currentPosition = offset;\n currentPosition < this.ppmBuffer.length;\n currentPosition++\n ) {\n const currentChar = this.ppmBuffer[currentPosition];\n\n yield currentChar.charCodeAt(0);\n }\n\n yield parseInt(block, 10);\n }\n\n private *binaryBitDataGenerator(offset: number): Generator {\n let block = '';\n\n for (\n let currentPosition = offset;\n currentPosition < this.ppmBuffer.length;\n currentPosition++\n ) {\n const currentChar = this.ppmBuffer[currentPosition],\n bitMask = ('0000000' + currentChar.charCodeAt(0).toString(2)).slice(-8);\n\n for (let rowPosition = 0; rowPosition < 8; rowPosition++) {\n yield parseInt(bitMask[rowPosition], 10);\n }\n }\n\n yield parseInt(block, 10);\n }\n}\n\nexport default PBMImage;\n", "import { ITerminalOptions, Terminal } from 'xterm';\nimport Abstract from './Abstract';\nimport { FitAddon } from 'xterm-addon-fit/src/FitAddon';\nimport { Renderer } from '../Renderers';\n\nexport class TTY extends Abstract implements Renderer {\n private buffer: string = '';\n private escapeInput: string = '';\n private fit: FitAddon;\n private maxX: number = 0;\n private maxY: number = 0;\n private options: ITerminalOptions;\n private terminal: Terminal;\n private x: number = 0;\n private y: number = 0;\n\n constructor(parent: HTMLElement, options: ITerminalOptions = {}) {\n super();\n\n this.container = this.createElement('div');\n this.container.classList.add('tty');\n\n parent.append(this.container);\n\n this.fit = new FitAddon();\n\n this.terminal = TTY.createTerminal(options);\n this.terminal.loadAddon(this.fit);\n this.terminal.open(this.container);\n\n this.options = options;\n }\n\n private static cleanText(text: string): string {\n // patch for xterm.js - this allows VT and FF but patches \\n, vs. convertEol option\n return text.replace(/(? parseInt(value || '1', 10))\n : [parseInt(value, 10), 1];\n break;\n }\n\n if (x >= cols) {\n x = cols;\n }\n\n maxX = Math.max(x, maxX);\n maxY = Math.max(y, maxY);\n\n return [x, y, maxX, maxY];\n }\n\n switch (input) {\n case '\\n':\n y++;\n x = 0;\n break;\n\n case '\\f':\n case '\\r':\n case '\\v':\n y++;\n break;\n\n case '\\t':\n x += x % 8 || 8;\n break;\n\n // backspace\n case '\\x08':\n x--;\n break;\n\n default:\n x++;\n }\n\n if (x >= cols) {\n y++;\n x = 0;\n }\n\n maxX = Math.max(x, maxX);\n maxY = Math.max(y, maxY);\n\n return [x, y, maxX, maxY];\n }\n\n private reprocessBufferForSize(): number[] {\n let maxX = 0,\n maxY = 0,\n x = 0,\n y = 0,\n escapeInput = '';\n\n const results = this.buffer.match(/\\x1b\\[(.*?)([\\x40-\\x7e])|(.)/g);\n\n if (!results) {\n return [1, 1];\n }\n\n results.forEach((input) => {\n [input, escapeInput] = this.processInputForEscape(input, escapeInput);\n\n if (input) {\n [x, y, maxX, maxY] = this.processInputForSize(x, y, maxX, maxY, input);\n }\n });\n\n return [maxX + 1, maxY + 1];\n }\n\n public reset(): void {\n this.buffer = '';\n this.escapeInput = '';\n this.maxX = 0;\n this.maxY = 0;\n this.x = 0;\n this.y = 0;\n\n this.terminal.reset();\n }\n\n public resize(): void {\n if (\n this.container.hasAttribute('hidden') ||\n (this.options.cols && this.options.rows)\n ) {\n return;\n }\n\n const [, visibleLines] = this.reprocessBufferForSize(),\n dimensions = this.fit.proposeDimensions();\n\n this.terminal.resize(\n this.options.cols ?? dimensions?.cols ?? this.terminal.cols,\n this.options.rows ?? visibleLines\n );\n }\n\n public write(char: number): void;\n public write(data: string): void;\n public write(char: number | string): void {\n if (typeof char === 'number') {\n char = String.fromCharCode(char);\n }\n\n this.buffer += char;\n\n this.handleInputForSize(char);\n\n const rows = this.maxY + 1;\n\n if (rows !== this.terminal.rows) {\n this.terminal.resize(this.terminal.cols, rows);\n }\n\n this.terminal.write(TTY.cleanText(char));\n }\n}\n\nexport default TTY;\n", "/**\n * Copyright (c) 2017 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { Terminal, ITerminalAddon } from 'xterm';\n\ninterface ITerminalDimensions {\n /**\n * The number of rows in the terminal.\n */\n rows: number;\n\n /**\n * The number of columns in the terminal.\n */\n cols: number;\n}\n\nconst MINIMUM_COLS = 2;\nconst MINIMUM_ROWS = 1;\n\nexport class FitAddon implements ITerminalAddon {\n private _terminal: Terminal | undefined;\n\n constructor() {}\n\n public activate(terminal: Terminal): void {\n this._terminal = terminal;\n }\n\n public dispose(): void {}\n\n public fit(): void {\n const dims = this.proposeDimensions();\n if (!dims || !this._terminal) {\n return;\n }\n\n // TODO: Remove reliance on private API\n const core = (this._terminal as any)._core;\n\n // Force a full render\n if (this._terminal.rows !== dims.rows || this._terminal.cols !== dims.cols) {\n core._renderService.clear();\n this._terminal.resize(dims.cols, dims.rows);\n }\n }\n\n public proposeDimensions(): ITerminalDimensions | undefined {\n if (!this._terminal) {\n return undefined;\n }\n\n if (!this._terminal.element || !this._terminal.element.parentElement) {\n return undefined;\n }\n\n // TODO: Remove reliance on private API\n const core = (this._terminal as any)._core;\n\n if (core._renderService.dimensions.actualCellWidth === 0 || core._renderService.dimensions.actualCellHeight === 0) {\n return undefined;\n }\n\n const parentElementStyle = window.getComputedStyle(this._terminal.element.parentElement);\n const parentElementHeight = parseInt(parentElementStyle.getPropertyValue('height'));\n const parentElementWidth = Math.max(0, parseInt(parentElementStyle.getPropertyValue('width')));\n const elementStyle = window.getComputedStyle(this._terminal.element);\n const elementPadding = {\n top: parseInt(elementStyle.getPropertyValue('padding-top')),\n bottom: parseInt(elementStyle.getPropertyValue('padding-bottom')),\n right: parseInt(elementStyle.getPropertyValue('padding-right')),\n left: parseInt(elementStyle.getPropertyValue('padding-left'))\n };\n const elementPaddingVer = elementPadding.top + elementPadding.bottom;\n const elementPaddingHor = elementPadding.right + elementPadding.left;\n const availableHeight = parentElementHeight - elementPaddingVer;\n const availableWidth = parentElementWidth - elementPaddingHor - core.viewport.scrollBarWidth;\n const geometry = {\n cols: Math.max(MINIMUM_COLS, Math.floor(availableWidth / core._renderService.dimensions.actualCellWidth)),\n rows: Math.max(MINIMUM_ROWS, Math.floor(availableHeight / core._renderService.dimensions.actualCellHeight))\n };\n return geometry;\n }\n}\n", "export interface Decoder {\n name(): string;\n matches(code: number[]): boolean;\n matchesAsString(code: string): boolean;\n decode(code: number[]): number[];\n decodeAsString(code: string): number[];\n}\n\nexport class Decoders {\n private registered: Decoder[] = [];\n\n public register(...decoders: Decoder[]): void {\n this.registered.push(...decoders);\n }\n\n public decode(code: number[]): number[] {\n return this.decoder(code).decode(code);\n }\n\n public decodeAsString(code: string): number[] {\n return this.decoderAsString(code).decodeAsString(code);\n }\n\n public decoder(code: number[]): Decoder {\n const [decoder] = this.registered.filter((decoder): boolean =>\n decoder.matches(code)\n );\n\n return decoder;\n }\n\n public decoderAsString(code: string): Decoder {\n const [decoder] = this.registered.filter((decoder): boolean =>\n decoder.matchesAsString(code)\n );\n\n return decoder;\n }\n}\n\nexport default Decoders;\n\nexport const decoders = new Decoders();\n", "import { Decoder } from '../Decoders';\nimport Default from './Default';\n\nexport class Xxd extends Default implements Decoder {\n public name(): string {\n return 'xxd';\n }\n\n public matchesAsString(code: string): boolean {\n return /^([\\da-f]{7,8}: (((.{2}){1,2} ){1,8}) .+(\\n|$))+$/.test(code);\n }\n\n public decodeAsString(code: string): number[] {\n return code\n .trim()\n .replace(/(?<=^|\\n)[\\da-f]{7,8}: (((.{2}){1,2} ){1,8}).+/g, '$1')\n .replace(/\\s+/g, '')\n .match(/../g)\n .map((c: string): number => parseInt(c, 16));\n }\n}\nexport default Xxd;\n", "import Base64 from './Decoders/Base64';\nimport Default from './Decoders/Default';\nimport Hexdump from './Decoders/Hexdump';\nimport JavaScript from './langs/javascript-browser/JavaScript';\nimport Perl from './langs/webperl-5.28.1/Perl';\nimport UI from './UI';\nimport Xxd from './Decoders/Xxd';\nimport { decoders } from './Decoders';\nimport { langs } from './Langs';\n\ndecoders.register(new Xxd(), new Hexdump(), new Base64(), new Default());\nlangs.register(new JavaScript(), new Perl());\n\nconst ui = new UI();\n"], - "mappings": "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AA,EAC7B,SAAK,CAAC,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAA,CAAA,EAC7B,SAAK,CAAC,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAA,CAAA,EAC7B,SAAK,CAAC,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAA,CAAA,EAC7B,SAAK,CAAC,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAA,CAAA,EAC7B,SAAK,CAAC,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAA,CAAA,EAG7B,SAAK,CAAC,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAA,CAAA,EAC7B,SAAK,CAAC,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAA,CAAA,EAG7B,SAAK,CAAC,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAA,CAAA,EAC7B,SAAK,CAAC,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAA,CAAA,EAC7B,SAAK,CAAC,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAA,CAAA,EAC7B,SAAK,CAAC,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAA,EAAK,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAA,CAAA,EACzD,SAAK,CAAC,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAA,EAAK,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAA,CAAA,EACzD,SAAK,CAAC,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAA,EAAK,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAA,CAAA,EACzD,SAAK,CAAC,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAA,EAAK,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAA,CAAA,EACzD,SAAK,CAAC,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAA,CAAA,EAC7B,S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AS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,MAAQ,KAAA,EAC7C,CAAC,MAAQ,KAAA,EAAS,CAAC,MAAQ,KAAA,EAAS,CAAC,MAAQ,KAAA,EAC7C,CAAC,MAAQ,KAAA,EAAS,CAAC,MAAQ,KAAA,EAA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", - "names": [] + "sources": ["../../node_modules/eventemitter3/index.js", "../../node_modules/codemirror/lib/codemirror.js", "../../node_modules/codemirror/mode/shell/shell.js", "../../node_modules/codemirror/mode/javascript/javascript.js", "../../node_modules/codemirror/mode/ruby/ruby.js", "../../node_modules/codemirror/mode/perl/perl.js", "../../node_modules/melba-toast/dist/Melba.js", "../../node_modules/xterm/lib/webpack:/xterm/webpack/universalModuleDefinition", "../../node_modules/xterm/lib/webpack:/xterm/src/browser/AccessibilityManager.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/browser/Clipboard.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/browser/ColorContrastCache.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/browser/ColorManager.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/browser/Dom.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/browser/Lifecycle.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/browser/Linkifier.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/browser/Linkifier2.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/browser/LocalizableStrings.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/browser/MouseZoneManager.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/browser/RenderDebouncer.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/browser/ScreenDprMonitor.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/browser/Terminal.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/browser/TimeBasedDebouncer.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/browser/Viewport.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/browser/decorations/BufferDecorationRenderer.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/browser/decorations/ColorZoneStore.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/browser/decorations/OverviewRulerRenderer.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/browser/input/CompositionHelper.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/browser/input/Mouse.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/browser/input/MoveToCell.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/browser/public/Terminal.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/browser/renderer/BaseRenderLayer.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/browser/renderer/CursorRenderLayer.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/browser/renderer/CustomGlyphs.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/browser/renderer/GridCache.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/browser/renderer/LinkRenderLayer.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/browser/renderer/Renderer.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/browser/renderer/RendererUtils.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/browser/renderer/SelectionRenderLayer.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/browser/renderer/TextRenderLayer.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/browser/renderer/atlas/BaseCharAtlas.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/browser/renderer/atlas/CharAtlasCache.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/browser/renderer/atlas/CharAtlasUtils.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/browser/renderer/atlas/Constants.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/browser/renderer/atlas/DynamicCharAtlas.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/browser/renderer/atlas/LRUMap.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/browser/renderer/dom/DomRenderer.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/browser/renderer/dom/DomRendererRowFactory.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/browser/selection/SelectionModel.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/browser/services/CharSizeService.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/browser/services/CharacterJoinerService.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/browser/services/CoreBrowserService.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/browser/services/MouseService.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/browser/services/RenderService.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/browser/services/SelectionService.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/browser/services/Services.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/browser/services/SoundService.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/common/CircularList.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/common/Clone.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/common/Color.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/common/CoreTerminal.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/common/EventEmitter.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/common/InputHandler.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/common/Lifecycle.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/common/Platform.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/common/SortedList.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/common/TypedArrayUtils.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/common/WindowsMode.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/common/buffer/AttributeData.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/common/buffer/Buffer.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/common/buffer/BufferLine.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/common/buffer/BufferRange.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/common/buffer/BufferReflow.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/common/buffer/BufferSet.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/common/buffer/CellData.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/common/buffer/Constants.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/common/buffer/Marker.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/common/data/Charsets.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/common/data/EscapeSequences.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/common/input/Keyboard.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/common/input/TextDecoder.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/common/input/UnicodeV6.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/common/input/WriteBuffer.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/common/input/XParseColor.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/common/parser/Constants.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/common/parser/DcsParser.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/common/parser/EscapeSequenceParser.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/common/parser/OscParser.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/common/parser/Params.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/common/public/AddonManager.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/common/public/BufferApiView.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/common/public/BufferLineApiView.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/common/public/BufferNamespaceApi.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/common/public/ParserApi.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/common/public/UnicodeApi.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/common/services/BufferService.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/common/services/CharsetService.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/common/services/CoreMouseService.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/common/services/CoreService.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/common/services/DecorationService.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/common/services/DirtyRowService.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/common/services/InstantiationService.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/common/services/LogService.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/common/services/OptionsService.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/common/services/ServiceRegistry.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/common/services/Services.ts", "../../node_modules/xterm/lib/webpack:/xterm/src/common/services/UnicodeService.ts", "../../node_modules/xterm/lib/webpack:/xterm/webpack/bootstrap", "../../node_modules/xterm/lib/webpack:/xterm/webpack/startup", "../../node_modules/codemirror/addon/comment/comment.js", "../../node_modules/codemirror/addon/comment/continuecomment.js", "../../node_modules/codemirror/addon/display/placeholder.js", "../../node_modules/codemirror/addon/edit/closebrackets.js", "../../node_modules/codemirror/addon/edit/matchbrackets.js", "../../node_modules/codemirror/addon/search/searchcursor.js", "../../node_modules/codemirror/keymap/sublime.js", "../../node_modules/codemirror/mode/python/python.js", "../../js/codePointsToString.ts", "../../js/stringToCodePoints.ts", "../../js/Decoders/Default.ts", "../../js/Decoders/Base64.ts", "../../js/Lang.ts", "../../node_modules/eventemitter3/index.mjs", "../../js/Runner.ts", "../../js/Runners/Worker.ts", "../../js/Runners/Wasmer.ts", "../../js/Langs.ts", "../../js/langs/bash-wasmer/Bash.ts", "../../js/Decoders/Hexdump.ts", "../../js/langs/javascript-browser/JavaScript.ts", "../../js/langs/ruby-wasmer/Ruby.ts", "../../js/langs/webperl-5.28.1/Perl.ts", "../../js/UI.ts", "../../js/Renderers.ts", "../../js/Inputs/Code.ts", "../../js/Inputs/Abstract.ts", "../../js/replaceBinaryBytes.ts", "../../js/Renderers/Abstract.ts", "../../js/Renderers/Code.ts", "../../js/Renderers/IFrame.ts", "../../js/Decoders.ts", "../../js/IO.ts", "../../js/Options.ts", "../../js/Renderers/Image.ts", "../../js/Inputs.ts", "../../js/Renderers/Error/InvalidFormat.ts", "../../js/Renderers/PBMImage.ts", "../../js/Renderers/TTY.ts", "../../node_modules/xterm-addon-fit/src/FitAddon.ts", "../../js/Decoders/Xxd.ts", "../../js/langs/jq-wasmer/jq.ts", "../../js/app.ts"], + "sourcesContent": ["'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n", "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n// This is CodeMirror (https://codemirror.net/5), a code editor\n// implemented in JavaScript on top of the browser's DOM.\n//\n// You can find some technical background for some of the code below\n// at http://marijnhaverbeke.nl/blog/#cm-internals .\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.CodeMirror = factory());\n}(this, (function () { 'use strict';\n\n // Kludges for bugs and behavior differences that can't be feature\n // detected are enabled based on userAgent etc sniffing.\n var userAgent = navigator.userAgent;\n var platform = navigator.platform;\n\n var gecko = /gecko\\/\\d/i.test(userAgent);\n var ie_upto10 = /MSIE \\d/.test(userAgent);\n var ie_11up = /Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(userAgent);\n var edge = /Edge\\/(\\d+)/.exec(userAgent);\n var ie = ie_upto10 || ie_11up || edge;\n var ie_version = ie && (ie_upto10 ? document.documentMode || 6 : +(edge || ie_11up)[1]);\n var webkit = !edge && /WebKit\\//.test(userAgent);\n var qtwebkit = webkit && /Qt\\/\\d+\\.\\d+/.test(userAgent);\n var chrome = !edge && /Chrome\\/(\\d+)/.exec(userAgent);\n var chrome_version = chrome && +chrome[1];\n var presto = /Opera\\//.test(userAgent);\n var safari = /Apple Computer/.test(navigator.vendor);\n var mac_geMountainLion = /Mac OS X 1\\d\\D([8-9]|\\d\\d)\\D/.test(userAgent);\n var phantom = /PhantomJS/.test(userAgent);\n\n var ios = safari && (/Mobile\\/\\w+/.test(userAgent) || navigator.maxTouchPoints > 2);\n var android = /Android/.test(userAgent);\n // This is woefully incomplete. Suggestions for alternative methods welcome.\n var mobile = ios || android || /webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(userAgent);\n var mac = ios || /Mac/.test(platform);\n var chromeOS = /\\bCrOS\\b/.test(userAgent);\n var windows = /win/i.test(platform);\n\n var presto_version = presto && userAgent.match(/Version\\/(\\d*\\.\\d*)/);\n if (presto_version) { presto_version = Number(presto_version[1]); }\n if (presto_version && presto_version >= 15) { presto = false; webkit = true; }\n // Some browsers use the wrong event properties to signal cmd/ctrl on OS X\n var flipCtrlCmd = mac && (qtwebkit || presto && (presto_version == null || presto_version < 12.11));\n var captureRightClick = gecko || (ie && ie_version >= 9);\n\n function classTest(cls) { return new RegExp(\"(^|\\\\s)\" + cls + \"(?:$|\\\\s)\\\\s*\") }\n\n var rmClass = function(node, cls) {\n var current = node.className;\n var match = classTest(cls).exec(current);\n if (match) {\n var after = current.slice(match.index + match[0].length);\n node.className = current.slice(0, match.index) + (after ? match[1] + after : \"\");\n }\n };\n\n function removeChildren(e) {\n for (var count = e.childNodes.length; count > 0; --count)\n { e.removeChild(e.firstChild); }\n return e\n }\n\n function removeChildrenAndAdd(parent, e) {\n return removeChildren(parent).appendChild(e)\n }\n\n function elt(tag, content, className, style) {\n var e = document.createElement(tag);\n if (className) { e.className = className; }\n if (style) { e.style.cssText = style; }\n if (typeof content == \"string\") { e.appendChild(document.createTextNode(content)); }\n else if (content) { for (var i = 0; i < content.length; ++i) { e.appendChild(content[i]); } }\n return e\n }\n // wrapper for elt, which removes the elt from the accessibility tree\n function eltP(tag, content, className, style) {\n var e = elt(tag, content, className, style);\n e.setAttribute(\"role\", \"presentation\");\n return e\n }\n\n var range;\n if (document.createRange) { range = function(node, start, end, endNode) {\n var r = document.createRange();\n r.setEnd(endNode || node, end);\n r.setStart(node, start);\n return r\n }; }\n else { range = function(node, start, end) {\n var r = document.body.createTextRange();\n try { r.moveToElementText(node.parentNode); }\n catch(e) { return r }\n r.collapse(true);\n r.moveEnd(\"character\", end);\n r.moveStart(\"character\", start);\n return r\n }; }\n\n function contains(parent, child) {\n if (child.nodeType == 3) // Android browser always returns false when child is a textnode\n { child = child.parentNode; }\n if (parent.contains)\n { return parent.contains(child) }\n do {\n if (child.nodeType == 11) { child = child.host; }\n if (child == parent) { return true }\n } while (child = child.parentNode)\n }\n\n function activeElt(rootNode) {\n // IE and Edge may throw an \"Unspecified Error\" when accessing document.activeElement.\n // IE < 10 will throw when accessed while the page is loading or in an iframe.\n // IE > 9 and Edge will throw when accessed in an iframe if document.body is unavailable.\n var doc = rootNode.ownerDocument || rootNode;\n var activeElement;\n try {\n activeElement = rootNode.activeElement;\n } catch(e) {\n activeElement = doc.body || null;\n }\n while (activeElement && activeElement.shadowRoot && activeElement.shadowRoot.activeElement)\n { activeElement = activeElement.shadowRoot.activeElement; }\n return activeElement\n }\n\n function addClass(node, cls) {\n var current = node.className;\n if (!classTest(cls).test(current)) { node.className += (current ? \" \" : \"\") + cls; }\n }\n function joinClasses(a, b) {\n var as = a.split(\" \");\n for (var i = 0; i < as.length; i++)\n { if (as[i] && !classTest(as[i]).test(b)) { b += \" \" + as[i]; } }\n return b\n }\n\n var selectInput = function(node) { node.select(); };\n if (ios) // Mobile Safari apparently has a bug where select() is broken.\n { selectInput = function(node) { node.selectionStart = 0; node.selectionEnd = node.value.length; }; }\n else if (ie) // Suppress mysterious IE10 errors\n { selectInput = function(node) { try { node.select(); } catch(_e) {} }; }\n\n function doc(cm) { return cm.display.wrapper.ownerDocument }\n\n function root(cm) {\n return rootNode(cm.display.wrapper)\n }\n\n function rootNode(element) {\n // Detect modern browsers (2017+).\n return element.getRootNode ? element.getRootNode() : element.ownerDocument\n }\n\n function win(cm) { return doc(cm).defaultView }\n\n function bind(f) {\n var args = Array.prototype.slice.call(arguments, 1);\n return function(){return f.apply(null, args)}\n }\n\n function copyObj(obj, target, overwrite) {\n if (!target) { target = {}; }\n for (var prop in obj)\n { if (obj.hasOwnProperty(prop) && (overwrite !== false || !target.hasOwnProperty(prop)))\n { target[prop] = obj[prop]; } }\n return target\n }\n\n // Counts the column offset in a string, taking tabs into account.\n // Used mostly to find indentation.\n function countColumn(string, end, tabSize, startIndex, startValue) {\n if (end == null) {\n end = string.search(/[^\\s\\u00a0]/);\n if (end == -1) { end = string.length; }\n }\n for (var i = startIndex || 0, n = startValue || 0;;) {\n var nextTab = string.indexOf(\"\\t\", i);\n if (nextTab < 0 || nextTab >= end)\n { return n + (end - i) }\n n += nextTab - i;\n n += tabSize - (n % tabSize);\n i = nextTab + 1;\n }\n }\n\n var Delayed = function() {\n this.id = null;\n this.f = null;\n this.time = 0;\n this.handler = bind(this.onTimeout, this);\n };\n Delayed.prototype.onTimeout = function (self) {\n self.id = 0;\n if (self.time <= +new Date) {\n self.f();\n } else {\n setTimeout(self.handler, self.time - +new Date);\n }\n };\n Delayed.prototype.set = function (ms, f) {\n this.f = f;\n var time = +new Date + ms;\n if (!this.id || time < this.time) {\n clearTimeout(this.id);\n this.id = setTimeout(this.handler, ms);\n this.time = time;\n }\n };\n\n function indexOf(array, elt) {\n for (var i = 0; i < array.length; ++i)\n { if (array[i] == elt) { return i } }\n return -1\n }\n\n // Number of pixels added to scroller and sizer to hide scrollbar\n var scrollerGap = 50;\n\n // Returned or thrown by various protocols to signal 'I'm not\n // handling this'.\n var Pass = {toString: function(){return \"CodeMirror.Pass\"}};\n\n // Reused option objects for setSelection & friends\n var sel_dontScroll = {scroll: false}, sel_mouse = {origin: \"*mouse\"}, sel_move = {origin: \"+move\"};\n\n // The inverse of countColumn -- find the offset that corresponds to\n // a particular column.\n function findColumn(string, goal, tabSize) {\n for (var pos = 0, col = 0;;) {\n var nextTab = string.indexOf(\"\\t\", pos);\n if (nextTab == -1) { nextTab = string.length; }\n var skipped = nextTab - pos;\n if (nextTab == string.length || col + skipped >= goal)\n { return pos + Math.min(skipped, goal - col) }\n col += nextTab - pos;\n col += tabSize - (col % tabSize);\n pos = nextTab + 1;\n if (col >= goal) { return pos }\n }\n }\n\n var spaceStrs = [\"\"];\n function spaceStr(n) {\n while (spaceStrs.length <= n)\n { spaceStrs.push(lst(spaceStrs) + \" \"); }\n return spaceStrs[n]\n }\n\n function lst(arr) { return arr[arr.length-1] }\n\n function map(array, f) {\n var out = [];\n for (var i = 0; i < array.length; i++) { out[i] = f(array[i], i); }\n return out\n }\n\n function insertSorted(array, value, score) {\n var pos = 0, priority = score(value);\n while (pos < array.length && score(array[pos]) <= priority) { pos++; }\n array.splice(pos, 0, value);\n }\n\n function nothing() {}\n\n function createObj(base, props) {\n var inst;\n if (Object.create) {\n inst = Object.create(base);\n } else {\n nothing.prototype = base;\n inst = new nothing();\n }\n if (props) { copyObj(props, inst); }\n return inst\n }\n\n var nonASCIISingleCaseWordChar = /[\\u00df\\u0587\\u0590-\\u05f4\\u0600-\\u06ff\\u3040-\\u309f\\u30a0-\\u30ff\\u3400-\\u4db5\\u4e00-\\u9fcc\\uac00-\\ud7af]/;\n function isWordCharBasic(ch) {\n return /\\w/.test(ch) || ch > \"\\x80\" &&\n (ch.toUpperCase() != ch.toLowerCase() || nonASCIISingleCaseWordChar.test(ch))\n }\n function isWordChar(ch, helper) {\n if (!helper) { return isWordCharBasic(ch) }\n if (helper.source.indexOf(\"\\\\w\") > -1 && isWordCharBasic(ch)) { return true }\n return helper.test(ch)\n }\n\n function isEmpty(obj) {\n for (var n in obj) { if (obj.hasOwnProperty(n) && obj[n]) { return false } }\n return true\n }\n\n // Extending unicode characters. A series of a non-extending char +\n // any number of extending chars is treated as a single unit as far\n // as editing and measuring is concerned. This is not fully correct,\n // since some scripts/fonts/browsers also treat other configurations\n // of code points as a group.\n var extendingChars = /[\\u0300-\\u036f\\u0483-\\u0489\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u065e\\u0670\\u06d6-\\u06dc\\u06de-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07eb-\\u07f3\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0900-\\u0902\\u093c\\u0941-\\u0948\\u094d\\u0951-\\u0955\\u0962\\u0963\\u0981\\u09bc\\u09be\\u09c1-\\u09c4\\u09cd\\u09d7\\u09e2\\u09e3\\u0a01\\u0a02\\u0a3c\\u0a41\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a70\\u0a71\\u0a75\\u0a81\\u0a82\\u0abc\\u0ac1-\\u0ac5\\u0ac7\\u0ac8\\u0acd\\u0ae2\\u0ae3\\u0b01\\u0b3c\\u0b3e\\u0b3f\\u0b41-\\u0b44\\u0b4d\\u0b56\\u0b57\\u0b62\\u0b63\\u0b82\\u0bbe\\u0bc0\\u0bcd\\u0bd7\\u0c3e-\\u0c40\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0cbc\\u0cbf\\u0cc2\\u0cc6\\u0ccc\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0d3e\\u0d41-\\u0d44\\u0d4d\\u0d57\\u0d62\\u0d63\\u0dca\\u0dcf\\u0dd2-\\u0dd4\\u0dd6\\u0ddf\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0eb1\\u0eb4-\\u0eb9\\u0ebb\\u0ebc\\u0ec8-\\u0ecd\\u0f18\\u0f19\\u0f35\\u0f37\\u0f39\\u0f71-\\u0f7e\\u0f80-\\u0f84\\u0f86\\u0f87\\u0f90-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102d-\\u1030\\u1032-\\u1037\\u1039\\u103a\\u103d\\u103e\\u1058\\u1059\\u105e-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108d\\u109d\\u135f\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b7-\\u17bd\\u17c6\\u17c9-\\u17d3\\u17dd\\u180b-\\u180d\\u18a9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193b\\u1a17\\u1a18\\u1a56\\u1a58-\\u1a5e\\u1a60\\u1a62\\u1a65-\\u1a6c\\u1a73-\\u1a7c\\u1a7f\\u1b00-\\u1b03\\u1b34\\u1b36-\\u1b3a\\u1b3c\\u1b42\\u1b6b-\\u1b73\\u1b80\\u1b81\\u1ba2-\\u1ba5\\u1ba8\\u1ba9\\u1c2c-\\u1c33\\u1c36\\u1c37\\u1cd0-\\u1cd2\\u1cd4-\\u1ce0\\u1ce2-\\u1ce8\\u1ced\\u1dc0-\\u1de6\\u1dfd-\\u1dff\\u200c\\u200d\\u20d0-\\u20f0\\u2cef-\\u2cf1\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\ua66f-\\ua672\\ua67c\\ua67d\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua825\\ua826\\ua8c4\\ua8e0-\\ua8f1\\ua926-\\ua92d\\ua947-\\ua951\\ua980-\\ua982\\ua9b3\\ua9b6-\\ua9b9\\ua9bc\\uaa29-\\uaa2e\\uaa31\\uaa32\\uaa35\\uaa36\\uaa43\\uaa4c\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uabe5\\uabe8\\uabed\\udc00-\\udfff\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe26\\uff9e\\uff9f]/;\n function isExtendingChar(ch) { return ch.charCodeAt(0) >= 768 && extendingChars.test(ch) }\n\n // Returns a number from the range [`0`; `str.length`] unless `pos` is outside that range.\n function skipExtendingChars(str, pos, dir) {\n while ((dir < 0 ? pos > 0 : pos < str.length) && isExtendingChar(str.charAt(pos))) { pos += dir; }\n return pos\n }\n\n // Returns the value from the range [`from`; `to`] that satisfies\n // `pred` and is closest to `from`. Assumes that at least `to`\n // satisfies `pred`. Supports `from` being greater than `to`.\n function findFirst(pred, from, to) {\n // At any point we are certain `to` satisfies `pred`, don't know\n // whether `from` does.\n var dir = from > to ? -1 : 1;\n for (;;) {\n if (from == to) { return from }\n var midF = (from + to) / 2, mid = dir < 0 ? Math.ceil(midF) : Math.floor(midF);\n if (mid == from) { return pred(mid) ? from : to }\n if (pred(mid)) { to = mid; }\n else { from = mid + dir; }\n }\n }\n\n // BIDI HELPERS\n\n function iterateBidiSections(order, from, to, f) {\n if (!order) { return f(from, to, \"ltr\", 0) }\n var found = false;\n for (var i = 0; i < order.length; ++i) {\n var part = order[i];\n if (part.from < to && part.to > from || from == to && part.to == from) {\n f(Math.max(part.from, from), Math.min(part.to, to), part.level == 1 ? \"rtl\" : \"ltr\", i);\n found = true;\n }\n }\n if (!found) { f(from, to, \"ltr\"); }\n }\n\n var bidiOther = null;\n function getBidiPartAt(order, ch, sticky) {\n var found;\n bidiOther = null;\n for (var i = 0; i < order.length; ++i) {\n var cur = order[i];\n if (cur.from < ch && cur.to > ch) { return i }\n if (cur.to == ch) {\n if (cur.from != cur.to && sticky == \"before\") { found = i; }\n else { bidiOther = i; }\n }\n if (cur.from == ch) {\n if (cur.from != cur.to && sticky != \"before\") { found = i; }\n else { bidiOther = i; }\n }\n }\n return found != null ? found : bidiOther\n }\n\n // Bidirectional ordering algorithm\n // See http://unicode.org/reports/tr9/tr9-13.html for the algorithm\n // that this (partially) implements.\n\n // One-char codes used for character types:\n // L (L): Left-to-Right\n // R (R): Right-to-Left\n // r (AL): Right-to-Left Arabic\n // 1 (EN): European Number\n // + (ES): European Number Separator\n // % (ET): European Number Terminator\n // n (AN): Arabic Number\n // , (CS): Common Number Separator\n // m (NSM): Non-Spacing Mark\n // b (BN): Boundary Neutral\n // s (B): Paragraph Separator\n // t (S): Segment Separator\n // w (WS): Whitespace\n // N (ON): Other Neutrals\n\n // Returns null if characters are ordered as they appear\n // (left-to-right), or an array of sections ({from, to, level}\n // objects) in the order in which they occur visually.\n var bidiOrdering = (function() {\n // Character types for codepoints 0 to 0xff\n var lowTypes = \"bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN\";\n // Character types for codepoints 0x600 to 0x6f9\n var arabicTypes = \"nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111\";\n function charType(code) {\n if (code <= 0xf7) { return lowTypes.charAt(code) }\n else if (0x590 <= code && code <= 0x5f4) { return \"R\" }\n else if (0x600 <= code && code <= 0x6f9) { return arabicTypes.charAt(code - 0x600) }\n else if (0x6ee <= code && code <= 0x8ac) { return \"r\" }\n else if (0x2000 <= code && code <= 0x200b) { return \"w\" }\n else if (code == 0x200c) { return \"b\" }\n else { return \"L\" }\n }\n\n var bidiRE = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac]/;\n var isNeutral = /[stwN]/, isStrong = /[LRr]/, countsAsLeft = /[Lb1n]/, countsAsNum = /[1n]/;\n\n function BidiSpan(level, from, to) {\n this.level = level;\n this.from = from; this.to = to;\n }\n\n return function(str, direction) {\n var outerType = direction == \"ltr\" ? \"L\" : \"R\";\n\n if (str.length == 0 || direction == \"ltr\" && !bidiRE.test(str)) { return false }\n var len = str.length, types = [];\n for (var i = 0; i < len; ++i)\n { types.push(charType(str.charCodeAt(i))); }\n\n // W1. Examine each non-spacing mark (NSM) in the level run, and\n // change the type of the NSM to the type of the previous\n // character. If the NSM is at the start of the level run, it will\n // get the type of sor.\n for (var i$1 = 0, prev = outerType; i$1 < len; ++i$1) {\n var type = types[i$1];\n if (type == \"m\") { types[i$1] = prev; }\n else { prev = type; }\n }\n\n // W2. Search backwards from each instance of a European number\n // until the first strong type (R, L, AL, or sor) is found. If an\n // AL is found, change the type of the European number to Arabic\n // number.\n // W3. Change all ALs to R.\n for (var i$2 = 0, cur = outerType; i$2 < len; ++i$2) {\n var type$1 = types[i$2];\n if (type$1 == \"1\" && cur == \"r\") { types[i$2] = \"n\"; }\n else if (isStrong.test(type$1)) { cur = type$1; if (type$1 == \"r\") { types[i$2] = \"R\"; } }\n }\n\n // W4. A single European separator between two European numbers\n // changes to a European number. A single common separator between\n // two numbers of the same type changes to that type.\n for (var i$3 = 1, prev$1 = types[0]; i$3 < len - 1; ++i$3) {\n var type$2 = types[i$3];\n if (type$2 == \"+\" && prev$1 == \"1\" && types[i$3+1] == \"1\") { types[i$3] = \"1\"; }\n else if (type$2 == \",\" && prev$1 == types[i$3+1] &&\n (prev$1 == \"1\" || prev$1 == \"n\")) { types[i$3] = prev$1; }\n prev$1 = type$2;\n }\n\n // W5. A sequence of European terminators adjacent to European\n // numbers changes to all European numbers.\n // W6. Otherwise, separators and terminators change to Other\n // Neutral.\n for (var i$4 = 0; i$4 < len; ++i$4) {\n var type$3 = types[i$4];\n if (type$3 == \",\") { types[i$4] = \"N\"; }\n else if (type$3 == \"%\") {\n var end = (void 0);\n for (end = i$4 + 1; end < len && types[end] == \"%\"; ++end) {}\n var replace = (i$4 && types[i$4-1] == \"!\") || (end < len && types[end] == \"1\") ? \"1\" : \"N\";\n for (var j = i$4; j < end; ++j) { types[j] = replace; }\n i$4 = end - 1;\n }\n }\n\n // W7. Search backwards from each instance of a European number\n // until the first strong type (R, L, or sor) is found. If an L is\n // found, then change the type of the European number to L.\n for (var i$5 = 0, cur$1 = outerType; i$5 < len; ++i$5) {\n var type$4 = types[i$5];\n if (cur$1 == \"L\" && type$4 == \"1\") { types[i$5] = \"L\"; }\n else if (isStrong.test(type$4)) { cur$1 = type$4; }\n }\n\n // N1. A sequence of neutrals takes the direction of the\n // surrounding strong text if the text on both sides has the same\n // direction. European and Arabic numbers act as if they were R in\n // terms of their influence on neutrals. Start-of-level-run (sor)\n // and end-of-level-run (eor) are used at level run boundaries.\n // N2. Any remaining neutrals take the embedding direction.\n for (var i$6 = 0; i$6 < len; ++i$6) {\n if (isNeutral.test(types[i$6])) {\n var end$1 = (void 0);\n for (end$1 = i$6 + 1; end$1 < len && isNeutral.test(types[end$1]); ++end$1) {}\n var before = (i$6 ? types[i$6-1] : outerType) == \"L\";\n var after = (end$1 < len ? types[end$1] : outerType) == \"L\";\n var replace$1 = before == after ? (before ? \"L\" : \"R\") : outerType;\n for (var j$1 = i$6; j$1 < end$1; ++j$1) { types[j$1] = replace$1; }\n i$6 = end$1 - 1;\n }\n }\n\n // Here we depart from the documented algorithm, in order to avoid\n // building up an actual levels array. Since there are only three\n // levels (0, 1, 2) in an implementation that doesn't take\n // explicit embedding into account, we can build up the order on\n // the fly, without following the level-based algorithm.\n var order = [], m;\n for (var i$7 = 0; i$7 < len;) {\n if (countsAsLeft.test(types[i$7])) {\n var start = i$7;\n for (++i$7; i$7 < len && countsAsLeft.test(types[i$7]); ++i$7) {}\n order.push(new BidiSpan(0, start, i$7));\n } else {\n var pos = i$7, at = order.length, isRTL = direction == \"rtl\" ? 1 : 0;\n for (++i$7; i$7 < len && types[i$7] != \"L\"; ++i$7) {}\n for (var j$2 = pos; j$2 < i$7;) {\n if (countsAsNum.test(types[j$2])) {\n if (pos < j$2) { order.splice(at, 0, new BidiSpan(1, pos, j$2)); at += isRTL; }\n var nstart = j$2;\n for (++j$2; j$2 < i$7 && countsAsNum.test(types[j$2]); ++j$2) {}\n order.splice(at, 0, new BidiSpan(2, nstart, j$2));\n at += isRTL;\n pos = j$2;\n } else { ++j$2; }\n }\n if (pos < i$7) { order.splice(at, 0, new BidiSpan(1, pos, i$7)); }\n }\n }\n if (direction == \"ltr\") {\n if (order[0].level == 1 && (m = str.match(/^\\s+/))) {\n order[0].from = m[0].length;\n order.unshift(new BidiSpan(0, 0, m[0].length));\n }\n if (lst(order).level == 1 && (m = str.match(/\\s+$/))) {\n lst(order).to -= m[0].length;\n order.push(new BidiSpan(0, len - m[0].length, len));\n }\n }\n\n return direction == \"rtl\" ? order.reverse() : order\n }\n })();\n\n // Get the bidi ordering for the given line (and cache it). Returns\n // false for lines that are fully left-to-right, and an array of\n // BidiSpan objects otherwise.\n function getOrder(line, direction) {\n var order = line.order;\n if (order == null) { order = line.order = bidiOrdering(line.text, direction); }\n return order\n }\n\n // EVENT HANDLING\n\n // Lightweight event framework. on/off also work on DOM nodes,\n // registering native DOM handlers.\n\n var noHandlers = [];\n\n var on = function(emitter, type, f) {\n if (emitter.addEventListener) {\n emitter.addEventListener(type, f, false);\n } else if (emitter.attachEvent) {\n emitter.attachEvent(\"on\" + type, f);\n } else {\n var map = emitter._handlers || (emitter._handlers = {});\n map[type] = (map[type] || noHandlers).concat(f);\n }\n };\n\n function getHandlers(emitter, type) {\n return emitter._handlers && emitter._handlers[type] || noHandlers\n }\n\n function off(emitter, type, f) {\n if (emitter.removeEventListener) {\n emitter.removeEventListener(type, f, false);\n } else if (emitter.detachEvent) {\n emitter.detachEvent(\"on\" + type, f);\n } else {\n var map = emitter._handlers, arr = map && map[type];\n if (arr) {\n var index = indexOf(arr, f);\n if (index > -1)\n { map[type] = arr.slice(0, index).concat(arr.slice(index + 1)); }\n }\n }\n }\n\n function signal(emitter, type /*, values...*/) {\n var handlers = getHandlers(emitter, type);\n if (!handlers.length) { return }\n var args = Array.prototype.slice.call(arguments, 2);\n for (var i = 0; i < handlers.length; ++i) { handlers[i].apply(null, args); }\n }\n\n // The DOM events that CodeMirror handles can be overridden by\n // registering a (non-DOM) handler on the editor for the event name,\n // and preventDefault-ing the event in that handler.\n function signalDOMEvent(cm, e, override) {\n if (typeof e == \"string\")\n { e = {type: e, preventDefault: function() { this.defaultPrevented = true; }}; }\n signal(cm, override || e.type, cm, e);\n return e_defaultPrevented(e) || e.codemirrorIgnore\n }\n\n function signalCursorActivity(cm) {\n var arr = cm._handlers && cm._handlers.cursorActivity;\n if (!arr) { return }\n var set = cm.curOp.cursorActivityHandlers || (cm.curOp.cursorActivityHandlers = []);\n for (var i = 0; i < arr.length; ++i) { if (indexOf(set, arr[i]) == -1)\n { set.push(arr[i]); } }\n }\n\n function hasHandler(emitter, type) {\n return getHandlers(emitter, type).length > 0\n }\n\n // Add on and off methods to a constructor's prototype, to make\n // registering events on such objects more convenient.\n function eventMixin(ctor) {\n ctor.prototype.on = function(type, f) {on(this, type, f);};\n ctor.prototype.off = function(type, f) {off(this, type, f);};\n }\n\n // Due to the fact that we still support jurassic IE versions, some\n // compatibility wrappers are needed.\n\n function e_preventDefault(e) {\n if (e.preventDefault) { e.preventDefault(); }\n else { e.returnValue = false; }\n }\n function e_stopPropagation(e) {\n if (e.stopPropagation) { e.stopPropagation(); }\n else { e.cancelBubble = true; }\n }\n function e_defaultPrevented(e) {\n return e.defaultPrevented != null ? e.defaultPrevented : e.returnValue == false\n }\n function e_stop(e) {e_preventDefault(e); e_stopPropagation(e);}\n\n function e_target(e) {return e.target || e.srcElement}\n function e_button(e) {\n var b = e.which;\n if (b == null) {\n if (e.button & 1) { b = 1; }\n else if (e.button & 2) { b = 3; }\n else if (e.button & 4) { b = 2; }\n }\n if (mac && e.ctrlKey && b == 1) { b = 3; }\n return b\n }\n\n // Detect drag-and-drop\n var dragAndDrop = function() {\n // There is *some* kind of drag-and-drop support in IE6-8, but I\n // couldn't get it to work yet.\n if (ie && ie_version < 9) { return false }\n var div = elt('div');\n return \"draggable\" in div || \"dragDrop\" in div\n }();\n\n var zwspSupported;\n function zeroWidthElement(measure) {\n if (zwspSupported == null) {\n var test = elt(\"span\", \"\\u200b\");\n removeChildrenAndAdd(measure, elt(\"span\", [test, document.createTextNode(\"x\")]));\n if (measure.firstChild.offsetHeight != 0)\n { zwspSupported = test.offsetWidth <= 1 && test.offsetHeight > 2 && !(ie && ie_version < 8); }\n }\n var node = zwspSupported ? elt(\"span\", \"\\u200b\") :\n elt(\"span\", \"\\u00a0\", null, \"display: inline-block; width: 1px; margin-right: -1px\");\n node.setAttribute(\"cm-text\", \"\");\n return node\n }\n\n // Feature-detect IE's crummy client rect reporting for bidi text\n var badBidiRects;\n function hasBadBidiRects(measure) {\n if (badBidiRects != null) { return badBidiRects }\n var txt = removeChildrenAndAdd(measure, document.createTextNode(\"A\\u062eA\"));\n var r0 = range(txt, 0, 1).getBoundingClientRect();\n var r1 = range(txt, 1, 2).getBoundingClientRect();\n removeChildren(measure);\n if (!r0 || r0.left == r0.right) { return false } // Safari returns null in some cases (#2780)\n return badBidiRects = (r1.right - r0.right < 3)\n }\n\n // See if \"\".split is the broken IE version, if so, provide an\n // alternative way to split lines.\n var splitLinesAuto = \"\\n\\nb\".split(/\\n/).length != 3 ? function (string) {\n var pos = 0, result = [], l = string.length;\n while (pos <= l) {\n var nl = string.indexOf(\"\\n\", pos);\n if (nl == -1) { nl = string.length; }\n var line = string.slice(pos, string.charAt(nl - 1) == \"\\r\" ? nl - 1 : nl);\n var rt = line.indexOf(\"\\r\");\n if (rt != -1) {\n result.push(line.slice(0, rt));\n pos += rt + 1;\n } else {\n result.push(line);\n pos = nl + 1;\n }\n }\n return result\n } : function (string) { return string.split(/\\r\\n?|\\n/); };\n\n var hasSelection = window.getSelection ? function (te) {\n try { return te.selectionStart != te.selectionEnd }\n catch(e) { return false }\n } : function (te) {\n var range;\n try {range = te.ownerDocument.selection.createRange();}\n catch(e) {}\n if (!range || range.parentElement() != te) { return false }\n return range.compareEndPoints(\"StartToEnd\", range) != 0\n };\n\n var hasCopyEvent = (function () {\n var e = elt(\"div\");\n if (\"oncopy\" in e) { return true }\n e.setAttribute(\"oncopy\", \"return;\");\n return typeof e.oncopy == \"function\"\n })();\n\n var badZoomedRects = null;\n function hasBadZoomedRects(measure) {\n if (badZoomedRects != null) { return badZoomedRects }\n var node = removeChildrenAndAdd(measure, elt(\"span\", \"x\"));\n var normal = node.getBoundingClientRect();\n var fromRange = range(node, 0, 1).getBoundingClientRect();\n return badZoomedRects = Math.abs(normal.left - fromRange.left) > 1\n }\n\n // Known modes, by name and by MIME\n var modes = {}, mimeModes = {};\n\n // Extra arguments are stored as the mode's dependencies, which is\n // used by (legacy) mechanisms like loadmode.js to automatically\n // load a mode. (Preferred mechanism is the require/define calls.)\n function defineMode(name, mode) {\n if (arguments.length > 2)\n { mode.dependencies = Array.prototype.slice.call(arguments, 2); }\n modes[name] = mode;\n }\n\n function defineMIME(mime, spec) {\n mimeModes[mime] = spec;\n }\n\n // Given a MIME type, a {name, ...options} config object, or a name\n // string, return a mode config object.\n function resolveMode(spec) {\n if (typeof spec == \"string\" && mimeModes.hasOwnProperty(spec)) {\n spec = mimeModes[spec];\n } else if (spec && typeof spec.name == \"string\" && mimeModes.hasOwnProperty(spec.name)) {\n var found = mimeModes[spec.name];\n if (typeof found == \"string\") { found = {name: found}; }\n spec = createObj(found, spec);\n spec.name = found.name;\n } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+xml$/.test(spec)) {\n return resolveMode(\"application/xml\")\n } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+json$/.test(spec)) {\n return resolveMode(\"application/json\")\n }\n if (typeof spec == \"string\") { return {name: spec} }\n else { return spec || {name: \"null\"} }\n }\n\n // Given a mode spec (anything that resolveMode accepts), find and\n // initialize an actual mode object.\n function getMode(options, spec) {\n spec = resolveMode(spec);\n var mfactory = modes[spec.name];\n if (!mfactory) { return getMode(options, \"text/plain\") }\n var modeObj = mfactory(options, spec);\n if (modeExtensions.hasOwnProperty(spec.name)) {\n var exts = modeExtensions[spec.name];\n for (var prop in exts) {\n if (!exts.hasOwnProperty(prop)) { continue }\n if (modeObj.hasOwnProperty(prop)) { modeObj[\"_\" + prop] = modeObj[prop]; }\n modeObj[prop] = exts[prop];\n }\n }\n modeObj.name = spec.name;\n if (spec.helperType) { modeObj.helperType = spec.helperType; }\n if (spec.modeProps) { for (var prop$1 in spec.modeProps)\n { modeObj[prop$1] = spec.modeProps[prop$1]; } }\n\n return modeObj\n }\n\n // This can be used to attach properties to mode objects from\n // outside the actual mode definition.\n var modeExtensions = {};\n function extendMode(mode, properties) {\n var exts = modeExtensions.hasOwnProperty(mode) ? modeExtensions[mode] : (modeExtensions[mode] = {});\n copyObj(properties, exts);\n }\n\n function copyState(mode, state) {\n if (state === true) { return state }\n if (mode.copyState) { return mode.copyState(state) }\n var nstate = {};\n for (var n in state) {\n var val = state[n];\n if (val instanceof Array) { val = val.concat([]); }\n nstate[n] = val;\n }\n return nstate\n }\n\n // Given a mode and a state (for that mode), find the inner mode and\n // state at the position that the state refers to.\n function innerMode(mode, state) {\n var info;\n while (mode.innerMode) {\n info = mode.innerMode(state);\n if (!info || info.mode == mode) { break }\n state = info.state;\n mode = info.mode;\n }\n return info || {mode: mode, state: state}\n }\n\n function startState(mode, a1, a2) {\n return mode.startState ? mode.startState(a1, a2) : true\n }\n\n // STRING STREAM\n\n // Fed to the mode parsers, provides helper functions to make\n // parsers more succinct.\n\n var StringStream = function(string, tabSize, lineOracle) {\n this.pos = this.start = 0;\n this.string = string;\n this.tabSize = tabSize || 8;\n this.lastColumnPos = this.lastColumnValue = 0;\n this.lineStart = 0;\n this.lineOracle = lineOracle;\n };\n\n StringStream.prototype.eol = function () {return this.pos >= this.string.length};\n StringStream.prototype.sol = function () {return this.pos == this.lineStart};\n StringStream.prototype.peek = function () {return this.string.charAt(this.pos) || undefined};\n StringStream.prototype.next = function () {\n if (this.pos < this.string.length)\n { return this.string.charAt(this.pos++) }\n };\n StringStream.prototype.eat = function (match) {\n var ch = this.string.charAt(this.pos);\n var ok;\n if (typeof match == \"string\") { ok = ch == match; }\n else { ok = ch && (match.test ? match.test(ch) : match(ch)); }\n if (ok) {++this.pos; return ch}\n };\n StringStream.prototype.eatWhile = function (match) {\n var start = this.pos;\n while (this.eat(match)){}\n return this.pos > start\n };\n StringStream.prototype.eatSpace = function () {\n var start = this.pos;\n while (/[\\s\\u00a0]/.test(this.string.charAt(this.pos))) { ++this.pos; }\n return this.pos > start\n };\n StringStream.prototype.skipToEnd = function () {this.pos = this.string.length;};\n StringStream.prototype.skipTo = function (ch) {\n var found = this.string.indexOf(ch, this.pos);\n if (found > -1) {this.pos = found; return true}\n };\n StringStream.prototype.backUp = function (n) {this.pos -= n;};\n StringStream.prototype.column = function () {\n if (this.lastColumnPos < this.start) {\n this.lastColumnValue = countColumn(this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue);\n this.lastColumnPos = this.start;\n }\n return this.lastColumnValue - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0)\n };\n StringStream.prototype.indentation = function () {\n return countColumn(this.string, null, this.tabSize) -\n (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0)\n };\n StringStream.prototype.match = function (pattern, consume, caseInsensitive) {\n if (typeof pattern == \"string\") {\n var cased = function (str) { return caseInsensitive ? str.toLowerCase() : str; };\n var substr = this.string.substr(this.pos, pattern.length);\n if (cased(substr) == cased(pattern)) {\n if (consume !== false) { this.pos += pattern.length; }\n return true\n }\n } else {\n var match = this.string.slice(this.pos).match(pattern);\n if (match && match.index > 0) { return null }\n if (match && consume !== false) { this.pos += match[0].length; }\n return match\n }\n };\n StringStream.prototype.current = function (){return this.string.slice(this.start, this.pos)};\n StringStream.prototype.hideFirstChars = function (n, inner) {\n this.lineStart += n;\n try { return inner() }\n finally { this.lineStart -= n; }\n };\n StringStream.prototype.lookAhead = function (n) {\n var oracle = this.lineOracle;\n return oracle && oracle.lookAhead(n)\n };\n StringStream.prototype.baseToken = function () {\n var oracle = this.lineOracle;\n return oracle && oracle.baseToken(this.pos)\n };\n\n // Find the line object corresponding to the given line number.\n function getLine(doc, n) {\n n -= doc.first;\n if (n < 0 || n >= doc.size) { throw new Error(\"There is no line \" + (n + doc.first) + \" in the document.\") }\n var chunk = doc;\n while (!chunk.lines) {\n for (var i = 0;; ++i) {\n var child = chunk.children[i], sz = child.chunkSize();\n if (n < sz) { chunk = child; break }\n n -= sz;\n }\n }\n return chunk.lines[n]\n }\n\n // Get the part of a document between two positions, as an array of\n // strings.\n function getBetween(doc, start, end) {\n var out = [], n = start.line;\n doc.iter(start.line, end.line + 1, function (line) {\n var text = line.text;\n if (n == end.line) { text = text.slice(0, end.ch); }\n if (n == start.line) { text = text.slice(start.ch); }\n out.push(text);\n ++n;\n });\n return out\n }\n // Get the lines between from and to, as array of strings.\n function getLines(doc, from, to) {\n var out = [];\n doc.iter(from, to, function (line) { out.push(line.text); }); // iter aborts when callback returns truthy value\n return out\n }\n\n // Update the height of a line, propagating the height change\n // upwards to parent nodes.\n function updateLineHeight(line, height) {\n var diff = height - line.height;\n if (diff) { for (var n = line; n; n = n.parent) { n.height += diff; } }\n }\n\n // Given a line object, find its line number by walking up through\n // its parent links.\n function lineNo(line) {\n if (line.parent == null) { return null }\n var cur = line.parent, no = indexOf(cur.lines, line);\n for (var chunk = cur.parent; chunk; cur = chunk, chunk = chunk.parent) {\n for (var i = 0;; ++i) {\n if (chunk.children[i] == cur) { break }\n no += chunk.children[i].chunkSize();\n }\n }\n return no + cur.first\n }\n\n // Find the line at the given vertical position, using the height\n // information in the document tree.\n function lineAtHeight(chunk, h) {\n var n = chunk.first;\n outer: do {\n for (var i$1 = 0; i$1 < chunk.children.length; ++i$1) {\n var child = chunk.children[i$1], ch = child.height;\n if (h < ch) { chunk = child; continue outer }\n h -= ch;\n n += child.chunkSize();\n }\n return n\n } while (!chunk.lines)\n var i = 0;\n for (; i < chunk.lines.length; ++i) {\n var line = chunk.lines[i], lh = line.height;\n if (h < lh) { break }\n h -= lh;\n }\n return n + i\n }\n\n function isLine(doc, l) {return l >= doc.first && l < doc.first + doc.size}\n\n function lineNumberFor(options, i) {\n return String(options.lineNumberFormatter(i + options.firstLineNumber))\n }\n\n // A Pos instance represents a position within the text.\n function Pos(line, ch, sticky) {\n if ( sticky === void 0 ) sticky = null;\n\n if (!(this instanceof Pos)) { return new Pos(line, ch, sticky) }\n this.line = line;\n this.ch = ch;\n this.sticky = sticky;\n }\n\n // Compare two positions, return 0 if they are the same, a negative\n // number when a is less, and a positive number otherwise.\n function cmp(a, b) { return a.line - b.line || a.ch - b.ch }\n\n function equalCursorPos(a, b) { return a.sticky == b.sticky && cmp(a, b) == 0 }\n\n function copyPos(x) {return Pos(x.line, x.ch)}\n function maxPos(a, b) { return cmp(a, b) < 0 ? b : a }\n function minPos(a, b) { return cmp(a, b) < 0 ? a : b }\n\n // Most of the external API clips given positions to make sure they\n // actually exist within the document.\n function clipLine(doc, n) {return Math.max(doc.first, Math.min(n, doc.first + doc.size - 1))}\n function clipPos(doc, pos) {\n if (pos.line < doc.first) { return Pos(doc.first, 0) }\n var last = doc.first + doc.size - 1;\n if (pos.line > last) { return Pos(last, getLine(doc, last).text.length) }\n return clipToLen(pos, getLine(doc, pos.line).text.length)\n }\n function clipToLen(pos, linelen) {\n var ch = pos.ch;\n if (ch == null || ch > linelen) { return Pos(pos.line, linelen) }\n else if (ch < 0) { return Pos(pos.line, 0) }\n else { return pos }\n }\n function clipPosArray(doc, array) {\n var out = [];\n for (var i = 0; i < array.length; i++) { out[i] = clipPos(doc, array[i]); }\n return out\n }\n\n var SavedContext = function(state, lookAhead) {\n this.state = state;\n this.lookAhead = lookAhead;\n };\n\n var Context = function(doc, state, line, lookAhead) {\n this.state = state;\n this.doc = doc;\n this.line = line;\n this.maxLookAhead = lookAhead || 0;\n this.baseTokens = null;\n this.baseTokenPos = 1;\n };\n\n Context.prototype.lookAhead = function (n) {\n var line = this.doc.getLine(this.line + n);\n if (line != null && n > this.maxLookAhead) { this.maxLookAhead = n; }\n return line\n };\n\n Context.prototype.baseToken = function (n) {\n if (!this.baseTokens) { return null }\n while (this.baseTokens[this.baseTokenPos] <= n)\n { this.baseTokenPos += 2; }\n var type = this.baseTokens[this.baseTokenPos + 1];\n return {type: type && type.replace(/( |^)overlay .*/, \"\"),\n size: this.baseTokens[this.baseTokenPos] - n}\n };\n\n Context.prototype.nextLine = function () {\n this.line++;\n if (this.maxLookAhead > 0) { this.maxLookAhead--; }\n };\n\n Context.fromSaved = function (doc, saved, line) {\n if (saved instanceof SavedContext)\n { return new Context(doc, copyState(doc.mode, saved.state), line, saved.lookAhead) }\n else\n { return new Context(doc, copyState(doc.mode, saved), line) }\n };\n\n Context.prototype.save = function (copy) {\n var state = copy !== false ? copyState(this.doc.mode, this.state) : this.state;\n return this.maxLookAhead > 0 ? new SavedContext(state, this.maxLookAhead) : state\n };\n\n\n // Compute a style array (an array starting with a mode generation\n // -- for invalidation -- followed by pairs of end positions and\n // style strings), which is used to highlight the tokens on the\n // line.\n function highlightLine(cm, line, context, forceToEnd) {\n // A styles array always starts with a number identifying the\n // mode/overlays that it is based on (for easy invalidation).\n var st = [cm.state.modeGen], lineClasses = {};\n // Compute the base array of styles\n runMode(cm, line.text, cm.doc.mode, context, function (end, style) { return st.push(end, style); },\n lineClasses, forceToEnd);\n var state = context.state;\n\n // Run overlays, adjust style array.\n var loop = function ( o ) {\n context.baseTokens = st;\n var overlay = cm.state.overlays[o], i = 1, at = 0;\n context.state = true;\n runMode(cm, line.text, overlay.mode, context, function (end, style) {\n var start = i;\n // Ensure there's a token end at the current position, and that i points at it\n while (at < end) {\n var i_end = st[i];\n if (i_end > end)\n { st.splice(i, 1, end, st[i+1], i_end); }\n i += 2;\n at = Math.min(end, i_end);\n }\n if (!style) { return }\n if (overlay.opaque) {\n st.splice(start, i - start, end, \"overlay \" + style);\n i = start + 2;\n } else {\n for (; start < i; start += 2) {\n var cur = st[start+1];\n st[start+1] = (cur ? cur + \" \" : \"\") + \"overlay \" + style;\n }\n }\n }, lineClasses);\n context.state = state;\n context.baseTokens = null;\n context.baseTokenPos = 1;\n };\n\n for (var o = 0; o < cm.state.overlays.length; ++o) loop( o );\n\n return {styles: st, classes: lineClasses.bgClass || lineClasses.textClass ? lineClasses : null}\n }\n\n function getLineStyles(cm, line, updateFrontier) {\n if (!line.styles || line.styles[0] != cm.state.modeGen) {\n var context = getContextBefore(cm, lineNo(line));\n var resetState = line.text.length > cm.options.maxHighlightLength && copyState(cm.doc.mode, context.state);\n var result = highlightLine(cm, line, context);\n if (resetState) { context.state = resetState; }\n line.stateAfter = context.save(!resetState);\n line.styles = result.styles;\n if (result.classes) { line.styleClasses = result.classes; }\n else if (line.styleClasses) { line.styleClasses = null; }\n if (updateFrontier === cm.doc.highlightFrontier)\n { cm.doc.modeFrontier = Math.max(cm.doc.modeFrontier, ++cm.doc.highlightFrontier); }\n }\n return line.styles\n }\n\n function getContextBefore(cm, n, precise) {\n var doc = cm.doc, display = cm.display;\n if (!doc.mode.startState) { return new Context(doc, true, n) }\n var start = findStartLine(cm, n, precise);\n var saved = start > doc.first && getLine(doc, start - 1).stateAfter;\n var context = saved ? Context.fromSaved(doc, saved, start) : new Context(doc, startState(doc.mode), start);\n\n doc.iter(start, n, function (line) {\n processLine(cm, line.text, context);\n var pos = context.line;\n line.stateAfter = pos == n - 1 || pos % 5 == 0 || pos >= display.viewFrom && pos < display.viewTo ? context.save() : null;\n context.nextLine();\n });\n if (precise) { doc.modeFrontier = context.line; }\n return context\n }\n\n // Lightweight form of highlight -- proceed over this line and\n // update state, but don't save a style array. Used for lines that\n // aren't currently visible.\n function processLine(cm, text, context, startAt) {\n var mode = cm.doc.mode;\n var stream = new StringStream(text, cm.options.tabSize, context);\n stream.start = stream.pos = startAt || 0;\n if (text == \"\") { callBlankLine(mode, context.state); }\n while (!stream.eol()) {\n readToken(mode, stream, context.state);\n stream.start = stream.pos;\n }\n }\n\n function callBlankLine(mode, state) {\n if (mode.blankLine) { return mode.blankLine(state) }\n if (!mode.innerMode) { return }\n var inner = innerMode(mode, state);\n if (inner.mode.blankLine) { return inner.mode.blankLine(inner.state) }\n }\n\n function readToken(mode, stream, state, inner) {\n for (var i = 0; i < 10; i++) {\n if (inner) { inner[0] = innerMode(mode, state).mode; }\n var style = mode.token(stream, state);\n if (stream.pos > stream.start) { return style }\n }\n throw new Error(\"Mode \" + mode.name + \" failed to advance stream.\")\n }\n\n var Token = function(stream, type, state) {\n this.start = stream.start; this.end = stream.pos;\n this.string = stream.current();\n this.type = type || null;\n this.state = state;\n };\n\n // Utility for getTokenAt and getLineTokens\n function takeToken(cm, pos, precise, asArray) {\n var doc = cm.doc, mode = doc.mode, style;\n pos = clipPos(doc, pos);\n var line = getLine(doc, pos.line), context = getContextBefore(cm, pos.line, precise);\n var stream = new StringStream(line.text, cm.options.tabSize, context), tokens;\n if (asArray) { tokens = []; }\n while ((asArray || stream.pos < pos.ch) && !stream.eol()) {\n stream.start = stream.pos;\n style = readToken(mode, stream, context.state);\n if (asArray) { tokens.push(new Token(stream, style, copyState(doc.mode, context.state))); }\n }\n return asArray ? tokens : new Token(stream, style, context.state)\n }\n\n function extractLineClasses(type, output) {\n if (type) { for (;;) {\n var lineClass = type.match(/(?:^|\\s+)line-(background-)?(\\S+)/);\n if (!lineClass) { break }\n type = type.slice(0, lineClass.index) + type.slice(lineClass.index + lineClass[0].length);\n var prop = lineClass[1] ? \"bgClass\" : \"textClass\";\n if (output[prop] == null)\n { output[prop] = lineClass[2]; }\n else if (!(new RegExp(\"(?:^|\\\\s)\" + lineClass[2] + \"(?:$|\\\\s)\")).test(output[prop]))\n { output[prop] += \" \" + lineClass[2]; }\n } }\n return type\n }\n\n // Run the given mode's parser over a line, calling f for each token.\n function runMode(cm, text, mode, context, f, lineClasses, forceToEnd) {\n var flattenSpans = mode.flattenSpans;\n if (flattenSpans == null) { flattenSpans = cm.options.flattenSpans; }\n var curStart = 0, curStyle = null;\n var stream = new StringStream(text, cm.options.tabSize, context), style;\n var inner = cm.options.addModeClass && [null];\n if (text == \"\") { extractLineClasses(callBlankLine(mode, context.state), lineClasses); }\n while (!stream.eol()) {\n if (stream.pos > cm.options.maxHighlightLength) {\n flattenSpans = false;\n if (forceToEnd) { processLine(cm, text, context, stream.pos); }\n stream.pos = text.length;\n style = null;\n } else {\n style = extractLineClasses(readToken(mode, stream, context.state, inner), lineClasses);\n }\n if (inner) {\n var mName = inner[0].name;\n if (mName) { style = \"m-\" + (style ? mName + \" \" + style : mName); }\n }\n if (!flattenSpans || curStyle != style) {\n while (curStart < stream.start) {\n curStart = Math.min(stream.start, curStart + 5000);\n f(curStart, curStyle);\n }\n curStyle = style;\n }\n stream.start = stream.pos;\n }\n while (curStart < stream.pos) {\n // Webkit seems to refuse to render text nodes longer than 57444\n // characters, and returns inaccurate measurements in nodes\n // starting around 5000 chars.\n var pos = Math.min(stream.pos, curStart + 5000);\n f(pos, curStyle);\n curStart = pos;\n }\n }\n\n // Finds the line to start with when starting a parse. Tries to\n // find a line with a stateAfter, so that it can start with a\n // valid state. If that fails, it returns the line with the\n // smallest indentation, which tends to need the least context to\n // parse correctly.\n function findStartLine(cm, n, precise) {\n var minindent, minline, doc = cm.doc;\n var lim = precise ? -1 : n - (cm.doc.mode.innerMode ? 1000 : 100);\n for (var search = n; search > lim; --search) {\n if (search <= doc.first) { return doc.first }\n var line = getLine(doc, search - 1), after = line.stateAfter;\n if (after && (!precise || search + (after instanceof SavedContext ? after.lookAhead : 0) <= doc.modeFrontier))\n { return search }\n var indented = countColumn(line.text, null, cm.options.tabSize);\n if (minline == null || minindent > indented) {\n minline = search - 1;\n minindent = indented;\n }\n }\n return minline\n }\n\n function retreatFrontier(doc, n) {\n doc.modeFrontier = Math.min(doc.modeFrontier, n);\n if (doc.highlightFrontier < n - 10) { return }\n var start = doc.first;\n for (var line = n - 1; line > start; line--) {\n var saved = getLine(doc, line).stateAfter;\n // change is on 3\n // state on line 1 looked ahead 2 -- so saw 3\n // test 1 + 2 < 3 should cover this\n if (saved && (!(saved instanceof SavedContext) || line + saved.lookAhead < n)) {\n start = line + 1;\n break\n }\n }\n doc.highlightFrontier = Math.min(doc.highlightFrontier, start);\n }\n\n // Optimize some code when these features are not used.\n var sawReadOnlySpans = false, sawCollapsedSpans = false;\n\n function seeReadOnlySpans() {\n sawReadOnlySpans = true;\n }\n\n function seeCollapsedSpans() {\n sawCollapsedSpans = true;\n }\n\n // TEXTMARKER SPANS\n\n function MarkedSpan(marker, from, to) {\n this.marker = marker;\n this.from = from; this.to = to;\n }\n\n // Search an array of spans for a span matching the given marker.\n function getMarkedSpanFor(spans, marker) {\n if (spans) { for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n if (span.marker == marker) { return span }\n } }\n }\n\n // Remove a span from an array, returning undefined if no spans are\n // left (we don't store arrays for lines without spans).\n function removeMarkedSpan(spans, span) {\n var r;\n for (var i = 0; i < spans.length; ++i)\n { if (spans[i] != span) { (r || (r = [])).push(spans[i]); } }\n return r\n }\n\n // Add a span to a line.\n function addMarkedSpan(line, span, op) {\n var inThisOp = op && window.WeakSet && (op.markedSpans || (op.markedSpans = new WeakSet));\n if (inThisOp && line.markedSpans && inThisOp.has(line.markedSpans)) {\n line.markedSpans.push(span);\n } else {\n line.markedSpans = line.markedSpans ? line.markedSpans.concat([span]) : [span];\n if (inThisOp) { inThisOp.add(line.markedSpans); }\n }\n span.marker.attachLine(line);\n }\n\n // Used for the algorithm that adjusts markers for a change in the\n // document. These functions cut an array of spans at a given\n // character position, returning an array of remaining chunks (or\n // undefined if nothing remains).\n function markedSpansBefore(old, startCh, isInsert) {\n var nw;\n if (old) { for (var i = 0; i < old.length; ++i) {\n var span = old[i], marker = span.marker;\n var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= startCh : span.from < startCh);\n if (startsBefore || span.from == startCh && marker.type == \"bookmark\" && (!isInsert || !span.marker.insertLeft)) {\n var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= startCh : span.to > startCh)\n ;(nw || (nw = [])).push(new MarkedSpan(marker, span.from, endsAfter ? null : span.to));\n }\n } }\n return nw\n }\n function markedSpansAfter(old, endCh, isInsert) {\n var nw;\n if (old) { for (var i = 0; i < old.length; ++i) {\n var span = old[i], marker = span.marker;\n var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= endCh : span.to > endCh);\n if (endsAfter || span.from == endCh && marker.type == \"bookmark\" && (!isInsert || span.marker.insertLeft)) {\n var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= endCh : span.from < endCh)\n ;(nw || (nw = [])).push(new MarkedSpan(marker, startsBefore ? null : span.from - endCh,\n span.to == null ? null : span.to - endCh));\n }\n } }\n return nw\n }\n\n // Given a change object, compute the new set of marker spans that\n // cover the line in which the change took place. Removes spans\n // entirely within the change, reconnects spans belonging to the\n // same marker that appear on both sides of the change, and cuts off\n // spans partially within the change. Returns an array of span\n // arrays with one element for each line in (after) the change.\n function stretchSpansOverChange(doc, change) {\n if (change.full) { return null }\n var oldFirst = isLine(doc, change.from.line) && getLine(doc, change.from.line).markedSpans;\n var oldLast = isLine(doc, change.to.line) && getLine(doc, change.to.line).markedSpans;\n if (!oldFirst && !oldLast) { return null }\n\n var startCh = change.from.ch, endCh = change.to.ch, isInsert = cmp(change.from, change.to) == 0;\n // Get the spans that 'stick out' on both sides\n var first = markedSpansBefore(oldFirst, startCh, isInsert);\n var last = markedSpansAfter(oldLast, endCh, isInsert);\n\n // Next, merge those two ends\n var sameLine = change.text.length == 1, offset = lst(change.text).length + (sameLine ? startCh : 0);\n if (first) {\n // Fix up .to properties of first\n for (var i = 0; i < first.length; ++i) {\n var span = first[i];\n if (span.to == null) {\n var found = getMarkedSpanFor(last, span.marker);\n if (!found) { span.to = startCh; }\n else if (sameLine) { span.to = found.to == null ? null : found.to + offset; }\n }\n }\n }\n if (last) {\n // Fix up .from in last (or move them into first in case of sameLine)\n for (var i$1 = 0; i$1 < last.length; ++i$1) {\n var span$1 = last[i$1];\n if (span$1.to != null) { span$1.to += offset; }\n if (span$1.from == null) {\n var found$1 = getMarkedSpanFor(first, span$1.marker);\n if (!found$1) {\n span$1.from = offset;\n if (sameLine) { (first || (first = [])).push(span$1); }\n }\n } else {\n span$1.from += offset;\n if (sameLine) { (first || (first = [])).push(span$1); }\n }\n }\n }\n // Make sure we didn't create any zero-length spans\n if (first) { first = clearEmptySpans(first); }\n if (last && last != first) { last = clearEmptySpans(last); }\n\n var newMarkers = [first];\n if (!sameLine) {\n // Fill gap with whole-line-spans\n var gap = change.text.length - 2, gapMarkers;\n if (gap > 0 && first)\n { for (var i$2 = 0; i$2 < first.length; ++i$2)\n { if (first[i$2].to == null)\n { (gapMarkers || (gapMarkers = [])).push(new MarkedSpan(first[i$2].marker, null, null)); } } }\n for (var i$3 = 0; i$3 < gap; ++i$3)\n { newMarkers.push(gapMarkers); }\n newMarkers.push(last);\n }\n return newMarkers\n }\n\n // Remove spans that are empty and don't have a clearWhenEmpty\n // option of false.\n function clearEmptySpans(spans) {\n for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n if (span.from != null && span.from == span.to && span.marker.clearWhenEmpty !== false)\n { spans.splice(i--, 1); }\n }\n if (!spans.length) { return null }\n return spans\n }\n\n // Used to 'clip' out readOnly ranges when making a change.\n function removeReadOnlyRanges(doc, from, to) {\n var markers = null;\n doc.iter(from.line, to.line + 1, function (line) {\n if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) {\n var mark = line.markedSpans[i].marker;\n if (mark.readOnly && (!markers || indexOf(markers, mark) == -1))\n { (markers || (markers = [])).push(mark); }\n } }\n });\n if (!markers) { return null }\n var parts = [{from: from, to: to}];\n for (var i = 0; i < markers.length; ++i) {\n var mk = markers[i], m = mk.find(0);\n for (var j = 0; j < parts.length; ++j) {\n var p = parts[j];\n if (cmp(p.to, m.from) < 0 || cmp(p.from, m.to) > 0) { continue }\n var newParts = [j, 1], dfrom = cmp(p.from, m.from), dto = cmp(p.to, m.to);\n if (dfrom < 0 || !mk.inclusiveLeft && !dfrom)\n { newParts.push({from: p.from, to: m.from}); }\n if (dto > 0 || !mk.inclusiveRight && !dto)\n { newParts.push({from: m.to, to: p.to}); }\n parts.splice.apply(parts, newParts);\n j += newParts.length - 3;\n }\n }\n return parts\n }\n\n // Connect or disconnect spans from a line.\n function detachMarkedSpans(line) {\n var spans = line.markedSpans;\n if (!spans) { return }\n for (var i = 0; i < spans.length; ++i)\n { spans[i].marker.detachLine(line); }\n line.markedSpans = null;\n }\n function attachMarkedSpans(line, spans) {\n if (!spans) { return }\n for (var i = 0; i < spans.length; ++i)\n { spans[i].marker.attachLine(line); }\n line.markedSpans = spans;\n }\n\n // Helpers used when computing which overlapping collapsed span\n // counts as the larger one.\n function extraLeft(marker) { return marker.inclusiveLeft ? -1 : 0 }\n function extraRight(marker) { return marker.inclusiveRight ? 1 : 0 }\n\n // Returns a number indicating which of two overlapping collapsed\n // spans is larger (and thus includes the other). Falls back to\n // comparing ids when the spans cover exactly the same range.\n function compareCollapsedMarkers(a, b) {\n var lenDiff = a.lines.length - b.lines.length;\n if (lenDiff != 0) { return lenDiff }\n var aPos = a.find(), bPos = b.find();\n var fromCmp = cmp(aPos.from, bPos.from) || extraLeft(a) - extraLeft(b);\n if (fromCmp) { return -fromCmp }\n var toCmp = cmp(aPos.to, bPos.to) || extraRight(a) - extraRight(b);\n if (toCmp) { return toCmp }\n return b.id - a.id\n }\n\n // Find out whether a line ends or starts in a collapsed span. If\n // so, return the marker for that span.\n function collapsedSpanAtSide(line, start) {\n var sps = sawCollapsedSpans && line.markedSpans, found;\n if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) {\n sp = sps[i];\n if (sp.marker.collapsed && (start ? sp.from : sp.to) == null &&\n (!found || compareCollapsedMarkers(found, sp.marker) < 0))\n { found = sp.marker; }\n } }\n return found\n }\n function collapsedSpanAtStart(line) { return collapsedSpanAtSide(line, true) }\n function collapsedSpanAtEnd(line) { return collapsedSpanAtSide(line, false) }\n\n function collapsedSpanAround(line, ch) {\n var sps = sawCollapsedSpans && line.markedSpans, found;\n if (sps) { for (var i = 0; i < sps.length; ++i) {\n var sp = sps[i];\n if (sp.marker.collapsed && (sp.from == null || sp.from < ch) && (sp.to == null || sp.to > ch) &&\n (!found || compareCollapsedMarkers(found, sp.marker) < 0)) { found = sp.marker; }\n } }\n return found\n }\n\n // Test whether there exists a collapsed span that partially\n // overlaps (covers the start or end, but not both) of a new span.\n // Such overlap is not allowed.\n function conflictingCollapsedRange(doc, lineNo, from, to, marker) {\n var line = getLine(doc, lineNo);\n var sps = sawCollapsedSpans && line.markedSpans;\n if (sps) { for (var i = 0; i < sps.length; ++i) {\n var sp = sps[i];\n if (!sp.marker.collapsed) { continue }\n var found = sp.marker.find(0);\n var fromCmp = cmp(found.from, from) || extraLeft(sp.marker) - extraLeft(marker);\n var toCmp = cmp(found.to, to) || extraRight(sp.marker) - extraRight(marker);\n if (fromCmp >= 0 && toCmp <= 0 || fromCmp <= 0 && toCmp >= 0) { continue }\n if (fromCmp <= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.to, from) >= 0 : cmp(found.to, from) > 0) ||\n fromCmp >= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.from, to) <= 0 : cmp(found.from, to) < 0))\n { return true }\n } }\n }\n\n // A visual line is a line as drawn on the screen. Folding, for\n // example, can cause multiple logical lines to appear on the same\n // visual line. This finds the start of the visual line that the\n // given line is part of (usually that is the line itself).\n function visualLine(line) {\n var merged;\n while (merged = collapsedSpanAtStart(line))\n { line = merged.find(-1, true).line; }\n return line\n }\n\n function visualLineEnd(line) {\n var merged;\n while (merged = collapsedSpanAtEnd(line))\n { line = merged.find(1, true).line; }\n return line\n }\n\n // Returns an array of logical lines that continue the visual line\n // started by the argument, or undefined if there are no such lines.\n function visualLineContinued(line) {\n var merged, lines;\n while (merged = collapsedSpanAtEnd(line)) {\n line = merged.find(1, true).line\n ;(lines || (lines = [])).push(line);\n }\n return lines\n }\n\n // Get the line number of the start of the visual line that the\n // given line number is part of.\n function visualLineNo(doc, lineN) {\n var line = getLine(doc, lineN), vis = visualLine(line);\n if (line == vis) { return lineN }\n return lineNo(vis)\n }\n\n // Get the line number of the start of the next visual line after\n // the given line.\n function visualLineEndNo(doc, lineN) {\n if (lineN > doc.lastLine()) { return lineN }\n var line = getLine(doc, lineN), merged;\n if (!lineIsHidden(doc, line)) { return lineN }\n while (merged = collapsedSpanAtEnd(line))\n { line = merged.find(1, true).line; }\n return lineNo(line) + 1\n }\n\n // Compute whether a line is hidden. Lines count as hidden when they\n // are part of a visual line that starts with another line, or when\n // they are entirely covered by collapsed, non-widget span.\n function lineIsHidden(doc, line) {\n var sps = sawCollapsedSpans && line.markedSpans;\n if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) {\n sp = sps[i];\n if (!sp.marker.collapsed) { continue }\n if (sp.from == null) { return true }\n if (sp.marker.widgetNode) { continue }\n if (sp.from == 0 && sp.marker.inclusiveLeft && lineIsHiddenInner(doc, line, sp))\n { return true }\n } }\n }\n function lineIsHiddenInner(doc, line, span) {\n if (span.to == null) {\n var end = span.marker.find(1, true);\n return lineIsHiddenInner(doc, end.line, getMarkedSpanFor(end.line.markedSpans, span.marker))\n }\n if (span.marker.inclusiveRight && span.to == line.text.length)\n { return true }\n for (var sp = (void 0), i = 0; i < line.markedSpans.length; ++i) {\n sp = line.markedSpans[i];\n if (sp.marker.collapsed && !sp.marker.widgetNode && sp.from == span.to &&\n (sp.to == null || sp.to != span.from) &&\n (sp.marker.inclusiveLeft || span.marker.inclusiveRight) &&\n lineIsHiddenInner(doc, line, sp)) { return true }\n }\n }\n\n // Find the height above the given line.\n function heightAtLine(lineObj) {\n lineObj = visualLine(lineObj);\n\n var h = 0, chunk = lineObj.parent;\n for (var i = 0; i < chunk.lines.length; ++i) {\n var line = chunk.lines[i];\n if (line == lineObj) { break }\n else { h += line.height; }\n }\n for (var p = chunk.parent; p; chunk = p, p = chunk.parent) {\n for (var i$1 = 0; i$1 < p.children.length; ++i$1) {\n var cur = p.children[i$1];\n if (cur == chunk) { break }\n else { h += cur.height; }\n }\n }\n return h\n }\n\n // Compute the character length of a line, taking into account\n // collapsed ranges (see markText) that might hide parts, and join\n // other lines onto it.\n function lineLength(line) {\n if (line.height == 0) { return 0 }\n var len = line.text.length, merged, cur = line;\n while (merged = collapsedSpanAtStart(cur)) {\n var found = merged.find(0, true);\n cur = found.from.line;\n len += found.from.ch - found.to.ch;\n }\n cur = line;\n while (merged = collapsedSpanAtEnd(cur)) {\n var found$1 = merged.find(0, true);\n len -= cur.text.length - found$1.from.ch;\n cur = found$1.to.line;\n len += cur.text.length - found$1.to.ch;\n }\n return len\n }\n\n // Find the longest line in the document.\n function findMaxLine(cm) {\n var d = cm.display, doc = cm.doc;\n d.maxLine = getLine(doc, doc.first);\n d.maxLineLength = lineLength(d.maxLine);\n d.maxLineChanged = true;\n doc.iter(function (line) {\n var len = lineLength(line);\n if (len > d.maxLineLength) {\n d.maxLineLength = len;\n d.maxLine = line;\n }\n });\n }\n\n // LINE DATA STRUCTURE\n\n // Line objects. These hold state related to a line, including\n // highlighting info (the styles array).\n var Line = function(text, markedSpans, estimateHeight) {\n this.text = text;\n attachMarkedSpans(this, markedSpans);\n this.height = estimateHeight ? estimateHeight(this) : 1;\n };\n\n Line.prototype.lineNo = function () { return lineNo(this) };\n eventMixin(Line);\n\n // Change the content (text, markers) of a line. Automatically\n // invalidates cached information and tries to re-estimate the\n // line's height.\n function updateLine(line, text, markedSpans, estimateHeight) {\n line.text = text;\n if (line.stateAfter) { line.stateAfter = null; }\n if (line.styles) { line.styles = null; }\n if (line.order != null) { line.order = null; }\n detachMarkedSpans(line);\n attachMarkedSpans(line, markedSpans);\n var estHeight = estimateHeight ? estimateHeight(line) : 1;\n if (estHeight != line.height) { updateLineHeight(line, estHeight); }\n }\n\n // Detach a line from the document tree and its markers.\n function cleanUpLine(line) {\n line.parent = null;\n detachMarkedSpans(line);\n }\n\n // Convert a style as returned by a mode (either null, or a string\n // containing one or more styles) to a CSS style. This is cached,\n // and also looks for line-wide styles.\n var styleToClassCache = {}, styleToClassCacheWithMode = {};\n function interpretTokenStyle(style, options) {\n if (!style || /^\\s*$/.test(style)) { return null }\n var cache = options.addModeClass ? styleToClassCacheWithMode : styleToClassCache;\n return cache[style] ||\n (cache[style] = style.replace(/\\S+/g, \"cm-$&\"))\n }\n\n // Render the DOM representation of the text of a line. Also builds\n // up a 'line map', which points at the DOM nodes that represent\n // specific stretches of text, and is used by the measuring code.\n // The returned object contains the DOM node, this map, and\n // information about line-wide styles that were set by the mode.\n function buildLineContent(cm, lineView) {\n // The padding-right forces the element to have a 'border', which\n // is needed on Webkit to be able to get line-level bounding\n // rectangles for it (in measureChar).\n var content = eltP(\"span\", null, null, webkit ? \"padding-right: .1px\" : null);\n var builder = {pre: eltP(\"pre\", [content], \"CodeMirror-line\"), content: content,\n col: 0, pos: 0, cm: cm,\n trailingSpace: false,\n splitSpaces: cm.getOption(\"lineWrapping\")};\n lineView.measure = {};\n\n // Iterate over the logical lines that make up this visual line.\n for (var i = 0; i <= (lineView.rest ? lineView.rest.length : 0); i++) {\n var line = i ? lineView.rest[i - 1] : lineView.line, order = (void 0);\n builder.pos = 0;\n builder.addToken = buildToken;\n // Optionally wire in some hacks into the token-rendering\n // algorithm, to deal with browser quirks.\n if (hasBadBidiRects(cm.display.measure) && (order = getOrder(line, cm.doc.direction)))\n { builder.addToken = buildTokenBadBidi(builder.addToken, order); }\n builder.map = [];\n var allowFrontierUpdate = lineView != cm.display.externalMeasured && lineNo(line);\n insertLineContent(line, builder, getLineStyles(cm, line, allowFrontierUpdate));\n if (line.styleClasses) {\n if (line.styleClasses.bgClass)\n { builder.bgClass = joinClasses(line.styleClasses.bgClass, builder.bgClass || \"\"); }\n if (line.styleClasses.textClass)\n { builder.textClass = joinClasses(line.styleClasses.textClass, builder.textClass || \"\"); }\n }\n\n // Ensure at least a single node is present, for measuring.\n if (builder.map.length == 0)\n { builder.map.push(0, 0, builder.content.appendChild(zeroWidthElement(cm.display.measure))); }\n\n // Store the map and a cache object for the current logical line\n if (i == 0) {\n lineView.measure.map = builder.map;\n lineView.measure.cache = {};\n } else {\n (lineView.measure.maps || (lineView.measure.maps = [])).push(builder.map)\n ;(lineView.measure.caches || (lineView.measure.caches = [])).push({});\n }\n }\n\n // See issue #2901\n if (webkit) {\n var last = builder.content.lastChild;\n if (/\\bcm-tab\\b/.test(last.className) || (last.querySelector && last.querySelector(\".cm-tab\")))\n { builder.content.className = \"cm-tab-wrap-hack\"; }\n }\n\n signal(cm, \"renderLine\", cm, lineView.line, builder.pre);\n if (builder.pre.className)\n { builder.textClass = joinClasses(builder.pre.className, builder.textClass || \"\"); }\n\n return builder\n }\n\n function defaultSpecialCharPlaceholder(ch) {\n var token = elt(\"span\", \"\\u2022\", \"cm-invalidchar\");\n token.title = \"\\\\u\" + ch.charCodeAt(0).toString(16);\n token.setAttribute(\"aria-label\", token.title);\n return token\n }\n\n // Build up the DOM representation for a single token, and add it to\n // the line map. Takes care to render special characters separately.\n function buildToken(builder, text, style, startStyle, endStyle, css, attributes) {\n if (!text) { return }\n var displayText = builder.splitSpaces ? splitSpaces(text, builder.trailingSpace) : text;\n var special = builder.cm.state.specialChars, mustWrap = false;\n var content;\n if (!special.test(text)) {\n builder.col += text.length;\n content = document.createTextNode(displayText);\n builder.map.push(builder.pos, builder.pos + text.length, content);\n if (ie && ie_version < 9) { mustWrap = true; }\n builder.pos += text.length;\n } else {\n content = document.createDocumentFragment();\n var pos = 0;\n while (true) {\n special.lastIndex = pos;\n var m = special.exec(text);\n var skipped = m ? m.index - pos : text.length - pos;\n if (skipped) {\n var txt = document.createTextNode(displayText.slice(pos, pos + skipped));\n if (ie && ie_version < 9) { content.appendChild(elt(\"span\", [txt])); }\n else { content.appendChild(txt); }\n builder.map.push(builder.pos, builder.pos + skipped, txt);\n builder.col += skipped;\n builder.pos += skipped;\n }\n if (!m) { break }\n pos += skipped + 1;\n var txt$1 = (void 0);\n if (m[0] == \"\\t\") {\n var tabSize = builder.cm.options.tabSize, tabWidth = tabSize - builder.col % tabSize;\n txt$1 = content.appendChild(elt(\"span\", spaceStr(tabWidth), \"cm-tab\"));\n txt$1.setAttribute(\"role\", \"presentation\");\n txt$1.setAttribute(\"cm-text\", \"\\t\");\n builder.col += tabWidth;\n } else if (m[0] == \"\\r\" || m[0] == \"\\n\") {\n txt$1 = content.appendChild(elt(\"span\", m[0] == \"\\r\" ? \"\\u240d\" : \"\\u2424\", \"cm-invalidchar\"));\n txt$1.setAttribute(\"cm-text\", m[0]);\n builder.col += 1;\n } else {\n txt$1 = builder.cm.options.specialCharPlaceholder(m[0]);\n txt$1.setAttribute(\"cm-text\", m[0]);\n if (ie && ie_version < 9) { content.appendChild(elt(\"span\", [txt$1])); }\n else { content.appendChild(txt$1); }\n builder.col += 1;\n }\n builder.map.push(builder.pos, builder.pos + 1, txt$1);\n builder.pos++;\n }\n }\n builder.trailingSpace = displayText.charCodeAt(text.length - 1) == 32;\n if (style || startStyle || endStyle || mustWrap || css || attributes) {\n var fullStyle = style || \"\";\n if (startStyle) { fullStyle += startStyle; }\n if (endStyle) { fullStyle += endStyle; }\n var token = elt(\"span\", [content], fullStyle, css);\n if (attributes) {\n for (var attr in attributes) { if (attributes.hasOwnProperty(attr) && attr != \"style\" && attr != \"class\")\n { token.setAttribute(attr, attributes[attr]); } }\n }\n return builder.content.appendChild(token)\n }\n builder.content.appendChild(content);\n }\n\n // Change some spaces to NBSP to prevent the browser from collapsing\n // trailing spaces at the end of a line when rendering text (issue #1362).\n function splitSpaces(text, trailingBefore) {\n if (text.length > 1 && !/ /.test(text)) { return text }\n var spaceBefore = trailingBefore, result = \"\";\n for (var i = 0; i < text.length; i++) {\n var ch = text.charAt(i);\n if (ch == \" \" && spaceBefore && (i == text.length - 1 || text.charCodeAt(i + 1) == 32))\n { ch = \"\\u00a0\"; }\n result += ch;\n spaceBefore = ch == \" \";\n }\n return result\n }\n\n // Work around nonsense dimensions being reported for stretches of\n // right-to-left text.\n function buildTokenBadBidi(inner, order) {\n return function (builder, text, style, startStyle, endStyle, css, attributes) {\n style = style ? style + \" cm-force-border\" : \"cm-force-border\";\n var start = builder.pos, end = start + text.length;\n for (;;) {\n // Find the part that overlaps with the start of this text\n var part = (void 0);\n for (var i = 0; i < order.length; i++) {\n part = order[i];\n if (part.to > start && part.from <= start) { break }\n }\n if (part.to >= end) { return inner(builder, text, style, startStyle, endStyle, css, attributes) }\n inner(builder, text.slice(0, part.to - start), style, startStyle, null, css, attributes);\n startStyle = null;\n text = text.slice(part.to - start);\n start = part.to;\n }\n }\n }\n\n function buildCollapsedSpan(builder, size, marker, ignoreWidget) {\n var widget = !ignoreWidget && marker.widgetNode;\n if (widget) { builder.map.push(builder.pos, builder.pos + size, widget); }\n if (!ignoreWidget && builder.cm.display.input.needsContentAttribute) {\n if (!widget)\n { widget = builder.content.appendChild(document.createElement(\"span\")); }\n widget.setAttribute(\"cm-marker\", marker.id);\n }\n if (widget) {\n builder.cm.display.input.setUneditable(widget);\n builder.content.appendChild(widget);\n }\n builder.pos += size;\n builder.trailingSpace = false;\n }\n\n // Outputs a number of spans to make up a line, taking highlighting\n // and marked text into account.\n function insertLineContent(line, builder, styles) {\n var spans = line.markedSpans, allText = line.text, at = 0;\n if (!spans) {\n for (var i$1 = 1; i$1 < styles.length; i$1+=2)\n { builder.addToken(builder, allText.slice(at, at = styles[i$1]), interpretTokenStyle(styles[i$1+1], builder.cm.options)); }\n return\n }\n\n var len = allText.length, pos = 0, i = 1, text = \"\", style, css;\n var nextChange = 0, spanStyle, spanEndStyle, spanStartStyle, collapsed, attributes;\n for (;;) {\n if (nextChange == pos) { // Update current marker set\n spanStyle = spanEndStyle = spanStartStyle = css = \"\";\n attributes = null;\n collapsed = null; nextChange = Infinity;\n var foundBookmarks = [], endStyles = (void 0);\n for (var j = 0; j < spans.length; ++j) {\n var sp = spans[j], m = sp.marker;\n if (m.type == \"bookmark\" && sp.from == pos && m.widgetNode) {\n foundBookmarks.push(m);\n } else if (sp.from <= pos && (sp.to == null || sp.to > pos || m.collapsed && sp.to == pos && sp.from == pos)) {\n if (sp.to != null && sp.to != pos && nextChange > sp.to) {\n nextChange = sp.to;\n spanEndStyle = \"\";\n }\n if (m.className) { spanStyle += \" \" + m.className; }\n if (m.css) { css = (css ? css + \";\" : \"\") + m.css; }\n if (m.startStyle && sp.from == pos) { spanStartStyle += \" \" + m.startStyle; }\n if (m.endStyle && sp.to == nextChange) { (endStyles || (endStyles = [])).push(m.endStyle, sp.to); }\n // support for the old title property\n // https://github.com/codemirror/CodeMirror/pull/5673\n if (m.title) { (attributes || (attributes = {})).title = m.title; }\n if (m.attributes) {\n for (var attr in m.attributes)\n { (attributes || (attributes = {}))[attr] = m.attributes[attr]; }\n }\n if (m.collapsed && (!collapsed || compareCollapsedMarkers(collapsed.marker, m) < 0))\n { collapsed = sp; }\n } else if (sp.from > pos && nextChange > sp.from) {\n nextChange = sp.from;\n }\n }\n if (endStyles) { for (var j$1 = 0; j$1 < endStyles.length; j$1 += 2)\n { if (endStyles[j$1 + 1] == nextChange) { spanEndStyle += \" \" + endStyles[j$1]; } } }\n\n if (!collapsed || collapsed.from == pos) { for (var j$2 = 0; j$2 < foundBookmarks.length; ++j$2)\n { buildCollapsedSpan(builder, 0, foundBookmarks[j$2]); } }\n if (collapsed && (collapsed.from || 0) == pos) {\n buildCollapsedSpan(builder, (collapsed.to == null ? len + 1 : collapsed.to) - pos,\n collapsed.marker, collapsed.from == null);\n if (collapsed.to == null) { return }\n if (collapsed.to == pos) { collapsed = false; }\n }\n }\n if (pos >= len) { break }\n\n var upto = Math.min(len, nextChange);\n while (true) {\n if (text) {\n var end = pos + text.length;\n if (!collapsed) {\n var tokenText = end > upto ? text.slice(0, upto - pos) : text;\n builder.addToken(builder, tokenText, style ? style + spanStyle : spanStyle,\n spanStartStyle, pos + tokenText.length == nextChange ? spanEndStyle : \"\", css, attributes);\n }\n if (end >= upto) {text = text.slice(upto - pos); pos = upto; break}\n pos = end;\n spanStartStyle = \"\";\n }\n text = allText.slice(at, at = styles[i++]);\n style = interpretTokenStyle(styles[i++], builder.cm.options);\n }\n }\n }\n\n\n // These objects are used to represent the visible (currently drawn)\n // part of the document. A LineView may correspond to multiple\n // logical lines, if those are connected by collapsed ranges.\n function LineView(doc, line, lineN) {\n // The starting line\n this.line = line;\n // Continuing lines, if any\n this.rest = visualLineContinued(line);\n // Number of logical lines in this visual line\n this.size = this.rest ? lineNo(lst(this.rest)) - lineN + 1 : 1;\n this.node = this.text = null;\n this.hidden = lineIsHidden(doc, line);\n }\n\n // Create a range of LineView objects for the given lines.\n function buildViewArray(cm, from, to) {\n var array = [], nextPos;\n for (var pos = from; pos < to; pos = nextPos) {\n var view = new LineView(cm.doc, getLine(cm.doc, pos), pos);\n nextPos = pos + view.size;\n array.push(view);\n }\n return array\n }\n\n var operationGroup = null;\n\n function pushOperation(op) {\n if (operationGroup) {\n operationGroup.ops.push(op);\n } else {\n op.ownsGroup = operationGroup = {\n ops: [op],\n delayedCallbacks: []\n };\n }\n }\n\n function fireCallbacksForOps(group) {\n // Calls delayed callbacks and cursorActivity handlers until no\n // new ones appear\n var callbacks = group.delayedCallbacks, i = 0;\n do {\n for (; i < callbacks.length; i++)\n { callbacks[i].call(null); }\n for (var j = 0; j < group.ops.length; j++) {\n var op = group.ops[j];\n if (op.cursorActivityHandlers)\n { while (op.cursorActivityCalled < op.cursorActivityHandlers.length)\n { op.cursorActivityHandlers[op.cursorActivityCalled++].call(null, op.cm); } }\n }\n } while (i < callbacks.length)\n }\n\n function finishOperation(op, endCb) {\n var group = op.ownsGroup;\n if (!group) { return }\n\n try { fireCallbacksForOps(group); }\n finally {\n operationGroup = null;\n endCb(group);\n }\n }\n\n var orphanDelayedCallbacks = null;\n\n // Often, we want to signal events at a point where we are in the\n // middle of some work, but don't want the handler to start calling\n // other methods on the editor, which might be in an inconsistent\n // state or simply not expect any other events to happen.\n // signalLater looks whether there are any handlers, and schedules\n // them to be executed when the last operation ends, or, if no\n // operation is active, when a timeout fires.\n function signalLater(emitter, type /*, values...*/) {\n var arr = getHandlers(emitter, type);\n if (!arr.length) { return }\n var args = Array.prototype.slice.call(arguments, 2), list;\n if (operationGroup) {\n list = operationGroup.delayedCallbacks;\n } else if (orphanDelayedCallbacks) {\n list = orphanDelayedCallbacks;\n } else {\n list = orphanDelayedCallbacks = [];\n setTimeout(fireOrphanDelayed, 0);\n }\n var loop = function ( i ) {\n list.push(function () { return arr[i].apply(null, args); });\n };\n\n for (var i = 0; i < arr.length; ++i)\n loop( i );\n }\n\n function fireOrphanDelayed() {\n var delayed = orphanDelayedCallbacks;\n orphanDelayedCallbacks = null;\n for (var i = 0; i < delayed.length; ++i) { delayed[i](); }\n }\n\n // When an aspect of a line changes, a string is added to\n // lineView.changes. This updates the relevant part of the line's\n // DOM structure.\n function updateLineForChanges(cm, lineView, lineN, dims) {\n for (var j = 0; j < lineView.changes.length; j++) {\n var type = lineView.changes[j];\n if (type == \"text\") { updateLineText(cm, lineView); }\n else if (type == \"gutter\") { updateLineGutter(cm, lineView, lineN, dims); }\n else if (type == \"class\") { updateLineClasses(cm, lineView); }\n else if (type == \"widget\") { updateLineWidgets(cm, lineView, dims); }\n }\n lineView.changes = null;\n }\n\n // Lines with gutter elements, widgets or a background class need to\n // be wrapped, and have the extra elements added to the wrapper div\n function ensureLineWrapped(lineView) {\n if (lineView.node == lineView.text) {\n lineView.node = elt(\"div\", null, null, \"position: relative\");\n if (lineView.text.parentNode)\n { lineView.text.parentNode.replaceChild(lineView.node, lineView.text); }\n lineView.node.appendChild(lineView.text);\n if (ie && ie_version < 8) { lineView.node.style.zIndex = 2; }\n }\n return lineView.node\n }\n\n function updateLineBackground(cm, lineView) {\n var cls = lineView.bgClass ? lineView.bgClass + \" \" + (lineView.line.bgClass || \"\") : lineView.line.bgClass;\n if (cls) { cls += \" CodeMirror-linebackground\"; }\n if (lineView.background) {\n if (cls) { lineView.background.className = cls; }\n else { lineView.background.parentNode.removeChild(lineView.background); lineView.background = null; }\n } else if (cls) {\n var wrap = ensureLineWrapped(lineView);\n lineView.background = wrap.insertBefore(elt(\"div\", null, cls), wrap.firstChild);\n cm.display.input.setUneditable(lineView.background);\n }\n }\n\n // Wrapper around buildLineContent which will reuse the structure\n // in display.externalMeasured when possible.\n function getLineContent(cm, lineView) {\n var ext = cm.display.externalMeasured;\n if (ext && ext.line == lineView.line) {\n cm.display.externalMeasured = null;\n lineView.measure = ext.measure;\n return ext.built\n }\n return buildLineContent(cm, lineView)\n }\n\n // Redraw the line's text. Interacts with the background and text\n // classes because the mode may output tokens that influence these\n // classes.\n function updateLineText(cm, lineView) {\n var cls = lineView.text.className;\n var built = getLineContent(cm, lineView);\n if (lineView.text == lineView.node) { lineView.node = built.pre; }\n lineView.text.parentNode.replaceChild(built.pre, lineView.text);\n lineView.text = built.pre;\n if (built.bgClass != lineView.bgClass || built.textClass != lineView.textClass) {\n lineView.bgClass = built.bgClass;\n lineView.textClass = built.textClass;\n updateLineClasses(cm, lineView);\n } else if (cls) {\n lineView.text.className = cls;\n }\n }\n\n function updateLineClasses(cm, lineView) {\n updateLineBackground(cm, lineView);\n if (lineView.line.wrapClass)\n { ensureLineWrapped(lineView).className = lineView.line.wrapClass; }\n else if (lineView.node != lineView.text)\n { lineView.node.className = \"\"; }\n var textClass = lineView.textClass ? lineView.textClass + \" \" + (lineView.line.textClass || \"\") : lineView.line.textClass;\n lineView.text.className = textClass || \"\";\n }\n\n function updateLineGutter(cm, lineView, lineN, dims) {\n if (lineView.gutter) {\n lineView.node.removeChild(lineView.gutter);\n lineView.gutter = null;\n }\n if (lineView.gutterBackground) {\n lineView.node.removeChild(lineView.gutterBackground);\n lineView.gutterBackground = null;\n }\n if (lineView.line.gutterClass) {\n var wrap = ensureLineWrapped(lineView);\n lineView.gutterBackground = elt(\"div\", null, \"CodeMirror-gutter-background \" + lineView.line.gutterClass,\n (\"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px; width: \" + (dims.gutterTotalWidth) + \"px\"));\n cm.display.input.setUneditable(lineView.gutterBackground);\n wrap.insertBefore(lineView.gutterBackground, lineView.text);\n }\n var markers = lineView.line.gutterMarkers;\n if (cm.options.lineNumbers || markers) {\n var wrap$1 = ensureLineWrapped(lineView);\n var gutterWrap = lineView.gutter = elt(\"div\", null, \"CodeMirror-gutter-wrapper\", (\"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px\"));\n gutterWrap.setAttribute(\"aria-hidden\", \"true\");\n cm.display.input.setUneditable(gutterWrap);\n wrap$1.insertBefore(gutterWrap, lineView.text);\n if (lineView.line.gutterClass)\n { gutterWrap.className += \" \" + lineView.line.gutterClass; }\n if (cm.options.lineNumbers && (!markers || !markers[\"CodeMirror-linenumbers\"]))\n { lineView.lineNumber = gutterWrap.appendChild(\n elt(\"div\", lineNumberFor(cm.options, lineN),\n \"CodeMirror-linenumber CodeMirror-gutter-elt\",\n (\"left: \" + (dims.gutterLeft[\"CodeMirror-linenumbers\"]) + \"px; width: \" + (cm.display.lineNumInnerWidth) + \"px\"))); }\n if (markers) { for (var k = 0; k < cm.display.gutterSpecs.length; ++k) {\n var id = cm.display.gutterSpecs[k].className, found = markers.hasOwnProperty(id) && markers[id];\n if (found)\n { gutterWrap.appendChild(elt(\"div\", [found], \"CodeMirror-gutter-elt\",\n (\"left: \" + (dims.gutterLeft[id]) + \"px; width: \" + (dims.gutterWidth[id]) + \"px\"))); }\n } }\n }\n }\n\n function updateLineWidgets(cm, lineView, dims) {\n if (lineView.alignable) { lineView.alignable = null; }\n var isWidget = classTest(\"CodeMirror-linewidget\");\n for (var node = lineView.node.firstChild, next = (void 0); node; node = next) {\n next = node.nextSibling;\n if (isWidget.test(node.className)) { lineView.node.removeChild(node); }\n }\n insertLineWidgets(cm, lineView, dims);\n }\n\n // Build a line's DOM representation from scratch\n function buildLineElement(cm, lineView, lineN, dims) {\n var built = getLineContent(cm, lineView);\n lineView.text = lineView.node = built.pre;\n if (built.bgClass) { lineView.bgClass = built.bgClass; }\n if (built.textClass) { lineView.textClass = built.textClass; }\n\n updateLineClasses(cm, lineView);\n updateLineGutter(cm, lineView, lineN, dims);\n insertLineWidgets(cm, lineView, dims);\n return lineView.node\n }\n\n // A lineView may contain multiple logical lines (when merged by\n // collapsed spans). The widgets for all of them need to be drawn.\n function insertLineWidgets(cm, lineView, dims) {\n insertLineWidgetsFor(cm, lineView.line, lineView, dims, true);\n if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++)\n { insertLineWidgetsFor(cm, lineView.rest[i], lineView, dims, false); } }\n }\n\n function insertLineWidgetsFor(cm, line, lineView, dims, allowAbove) {\n if (!line.widgets) { return }\n var wrap = ensureLineWrapped(lineView);\n for (var i = 0, ws = line.widgets; i < ws.length; ++i) {\n var widget = ws[i], node = elt(\"div\", [widget.node], \"CodeMirror-linewidget\" + (widget.className ? \" \" + widget.className : \"\"));\n if (!widget.handleMouseEvents) { node.setAttribute(\"cm-ignore-events\", \"true\"); }\n positionLineWidget(widget, node, lineView, dims);\n cm.display.input.setUneditable(node);\n if (allowAbove && widget.above)\n { wrap.insertBefore(node, lineView.gutter || lineView.text); }\n else\n { wrap.appendChild(node); }\n signalLater(widget, \"redraw\");\n }\n }\n\n function positionLineWidget(widget, node, lineView, dims) {\n if (widget.noHScroll) {\n (lineView.alignable || (lineView.alignable = [])).push(node);\n var width = dims.wrapperWidth;\n node.style.left = dims.fixedPos + \"px\";\n if (!widget.coverGutter) {\n width -= dims.gutterTotalWidth;\n node.style.paddingLeft = dims.gutterTotalWidth + \"px\";\n }\n node.style.width = width + \"px\";\n }\n if (widget.coverGutter) {\n node.style.zIndex = 5;\n node.style.position = \"relative\";\n if (!widget.noHScroll) { node.style.marginLeft = -dims.gutterTotalWidth + \"px\"; }\n }\n }\n\n function widgetHeight(widget) {\n if (widget.height != null) { return widget.height }\n var cm = widget.doc.cm;\n if (!cm) { return 0 }\n if (!contains(document.body, widget.node)) {\n var parentStyle = \"position: relative;\";\n if (widget.coverGutter)\n { parentStyle += \"margin-left: -\" + cm.display.gutters.offsetWidth + \"px;\"; }\n if (widget.noHScroll)\n { parentStyle += \"width: \" + cm.display.wrapper.clientWidth + \"px;\"; }\n removeChildrenAndAdd(cm.display.measure, elt(\"div\", [widget.node], null, parentStyle));\n }\n return widget.height = widget.node.parentNode.offsetHeight\n }\n\n // Return true when the given mouse event happened in a widget\n function eventInWidget(display, e) {\n for (var n = e_target(e); n != display.wrapper; n = n.parentNode) {\n if (!n || (n.nodeType == 1 && n.getAttribute(\"cm-ignore-events\") == \"true\") ||\n (n.parentNode == display.sizer && n != display.mover))\n { return true }\n }\n }\n\n // POSITION MEASUREMENT\n\n function paddingTop(display) {return display.lineSpace.offsetTop}\n function paddingVert(display) {return display.mover.offsetHeight - display.lineSpace.offsetHeight}\n function paddingH(display) {\n if (display.cachedPaddingH) { return display.cachedPaddingH }\n var e = removeChildrenAndAdd(display.measure, elt(\"pre\", \"x\", \"CodeMirror-line-like\"));\n var style = window.getComputedStyle ? window.getComputedStyle(e) : e.currentStyle;\n var data = {left: parseInt(style.paddingLeft), right: parseInt(style.paddingRight)};\n if (!isNaN(data.left) && !isNaN(data.right)) { display.cachedPaddingH = data; }\n return data\n }\n\n function scrollGap(cm) { return scrollerGap - cm.display.nativeBarWidth }\n function displayWidth(cm) {\n return cm.display.scroller.clientWidth - scrollGap(cm) - cm.display.barWidth\n }\n function displayHeight(cm) {\n return cm.display.scroller.clientHeight - scrollGap(cm) - cm.display.barHeight\n }\n\n // Ensure the lineView.wrapping.heights array is populated. This is\n // an array of bottom offsets for the lines that make up a drawn\n // line. When lineWrapping is on, there might be more than one\n // height.\n function ensureLineHeights(cm, lineView, rect) {\n var wrapping = cm.options.lineWrapping;\n var curWidth = wrapping && displayWidth(cm);\n if (!lineView.measure.heights || wrapping && lineView.measure.width != curWidth) {\n var heights = lineView.measure.heights = [];\n if (wrapping) {\n lineView.measure.width = curWidth;\n var rects = lineView.text.firstChild.getClientRects();\n for (var i = 0; i < rects.length - 1; i++) {\n var cur = rects[i], next = rects[i + 1];\n if (Math.abs(cur.bottom - next.bottom) > 2)\n { heights.push((cur.bottom + next.top) / 2 - rect.top); }\n }\n }\n heights.push(rect.bottom - rect.top);\n }\n }\n\n // Find a line map (mapping character offsets to text nodes) and a\n // measurement cache for the given line number. (A line view might\n // contain multiple lines when collapsed ranges are present.)\n function mapFromLineView(lineView, line, lineN) {\n if (lineView.line == line)\n { return {map: lineView.measure.map, cache: lineView.measure.cache} }\n if (lineView.rest) {\n for (var i = 0; i < lineView.rest.length; i++)\n { if (lineView.rest[i] == line)\n { return {map: lineView.measure.maps[i], cache: lineView.measure.caches[i]} } }\n for (var i$1 = 0; i$1 < lineView.rest.length; i$1++)\n { if (lineNo(lineView.rest[i$1]) > lineN)\n { return {map: lineView.measure.maps[i$1], cache: lineView.measure.caches[i$1], before: true} } }\n }\n }\n\n // Render a line into the hidden node display.externalMeasured. Used\n // when measurement is needed for a line that's not in the viewport.\n function updateExternalMeasurement(cm, line) {\n line = visualLine(line);\n var lineN = lineNo(line);\n var view = cm.display.externalMeasured = new LineView(cm.doc, line, lineN);\n view.lineN = lineN;\n var built = view.built = buildLineContent(cm, view);\n view.text = built.pre;\n removeChildrenAndAdd(cm.display.lineMeasure, built.pre);\n return view\n }\n\n // Get a {top, bottom, left, right} box (in line-local coordinates)\n // for a given character.\n function measureChar(cm, line, ch, bias) {\n return measureCharPrepared(cm, prepareMeasureForLine(cm, line), ch, bias)\n }\n\n // Find a line view that corresponds to the given line number.\n function findViewForLine(cm, lineN) {\n if (lineN >= cm.display.viewFrom && lineN < cm.display.viewTo)\n { return cm.display.view[findViewIndex(cm, lineN)] }\n var ext = cm.display.externalMeasured;\n if (ext && lineN >= ext.lineN && lineN < ext.lineN + ext.size)\n { return ext }\n }\n\n // Measurement can be split in two steps, the set-up work that\n // applies to the whole line, and the measurement of the actual\n // character. Functions like coordsChar, that need to do a lot of\n // measurements in a row, can thus ensure that the set-up work is\n // only done once.\n function prepareMeasureForLine(cm, line) {\n var lineN = lineNo(line);\n var view = findViewForLine(cm, lineN);\n if (view && !view.text) {\n view = null;\n } else if (view && view.changes) {\n updateLineForChanges(cm, view, lineN, getDimensions(cm));\n cm.curOp.forceUpdate = true;\n }\n if (!view)\n { view = updateExternalMeasurement(cm, line); }\n\n var info = mapFromLineView(view, line, lineN);\n return {\n line: line, view: view, rect: null,\n map: info.map, cache: info.cache, before: info.before,\n hasHeights: false\n }\n }\n\n // Given a prepared measurement object, measures the position of an\n // actual character (or fetches it from the cache).\n function measureCharPrepared(cm, prepared, ch, bias, varHeight) {\n if (prepared.before) { ch = -1; }\n var key = ch + (bias || \"\"), found;\n if (prepared.cache.hasOwnProperty(key)) {\n found = prepared.cache[key];\n } else {\n if (!prepared.rect)\n { prepared.rect = prepared.view.text.getBoundingClientRect(); }\n if (!prepared.hasHeights) {\n ensureLineHeights(cm, prepared.view, prepared.rect);\n prepared.hasHeights = true;\n }\n found = measureCharInner(cm, prepared, ch, bias);\n if (!found.bogus) { prepared.cache[key] = found; }\n }\n return {left: found.left, right: found.right,\n top: varHeight ? found.rtop : found.top,\n bottom: varHeight ? found.rbottom : found.bottom}\n }\n\n var nullRect = {left: 0, right: 0, top: 0, bottom: 0};\n\n function nodeAndOffsetInLineMap(map, ch, bias) {\n var node, start, end, collapse, mStart, mEnd;\n // First, search the line map for the text node corresponding to,\n // or closest to, the target character.\n for (var i = 0; i < map.length; i += 3) {\n mStart = map[i];\n mEnd = map[i + 1];\n if (ch < mStart) {\n start = 0; end = 1;\n collapse = \"left\";\n } else if (ch < mEnd) {\n start = ch - mStart;\n end = start + 1;\n } else if (i == map.length - 3 || ch == mEnd && map[i + 3] > ch) {\n end = mEnd - mStart;\n start = end - 1;\n if (ch >= mEnd) { collapse = \"right\"; }\n }\n if (start != null) {\n node = map[i + 2];\n if (mStart == mEnd && bias == (node.insertLeft ? \"left\" : \"right\"))\n { collapse = bias; }\n if (bias == \"left\" && start == 0)\n { while (i && map[i - 2] == map[i - 3] && map[i - 1].insertLeft) {\n node = map[(i -= 3) + 2];\n collapse = \"left\";\n } }\n if (bias == \"right\" && start == mEnd - mStart)\n { while (i < map.length - 3 && map[i + 3] == map[i + 4] && !map[i + 5].insertLeft) {\n node = map[(i += 3) + 2];\n collapse = \"right\";\n } }\n break\n }\n }\n return {node: node, start: start, end: end, collapse: collapse, coverStart: mStart, coverEnd: mEnd}\n }\n\n function getUsefulRect(rects, bias) {\n var rect = nullRect;\n if (bias == \"left\") { for (var i = 0; i < rects.length; i++) {\n if ((rect = rects[i]).left != rect.right) { break }\n } } else { for (var i$1 = rects.length - 1; i$1 >= 0; i$1--) {\n if ((rect = rects[i$1]).left != rect.right) { break }\n } }\n return rect\n }\n\n function measureCharInner(cm, prepared, ch, bias) {\n var place = nodeAndOffsetInLineMap(prepared.map, ch, bias);\n var node = place.node, start = place.start, end = place.end, collapse = place.collapse;\n\n var rect;\n if (node.nodeType == 3) { // If it is a text node, use a range to retrieve the coordinates.\n for (var i$1 = 0; i$1 < 4; i$1++) { // Retry a maximum of 4 times when nonsense rectangles are returned\n while (start && isExtendingChar(prepared.line.text.charAt(place.coverStart + start))) { --start; }\n while (place.coverStart + end < place.coverEnd && isExtendingChar(prepared.line.text.charAt(place.coverStart + end))) { ++end; }\n if (ie && ie_version < 9 && start == 0 && end == place.coverEnd - place.coverStart)\n { rect = node.parentNode.getBoundingClientRect(); }\n else\n { rect = getUsefulRect(range(node, start, end).getClientRects(), bias); }\n if (rect.left || rect.right || start == 0) { break }\n end = start;\n start = start - 1;\n collapse = \"right\";\n }\n if (ie && ie_version < 11) { rect = maybeUpdateRectForZooming(cm.display.measure, rect); }\n } else { // If it is a widget, simply get the box for the whole widget.\n if (start > 0) { collapse = bias = \"right\"; }\n var rects;\n if (cm.options.lineWrapping && (rects = node.getClientRects()).length > 1)\n { rect = rects[bias == \"right\" ? rects.length - 1 : 0]; }\n else\n { rect = node.getBoundingClientRect(); }\n }\n if (ie && ie_version < 9 && !start && (!rect || !rect.left && !rect.right)) {\n var rSpan = node.parentNode.getClientRects()[0];\n if (rSpan)\n { rect = {left: rSpan.left, right: rSpan.left + charWidth(cm.display), top: rSpan.top, bottom: rSpan.bottom}; }\n else\n { rect = nullRect; }\n }\n\n var rtop = rect.top - prepared.rect.top, rbot = rect.bottom - prepared.rect.top;\n var mid = (rtop + rbot) / 2;\n var heights = prepared.view.measure.heights;\n var i = 0;\n for (; i < heights.length - 1; i++)\n { if (mid < heights[i]) { break } }\n var top = i ? heights[i - 1] : 0, bot = heights[i];\n var result = {left: (collapse == \"right\" ? rect.right : rect.left) - prepared.rect.left,\n right: (collapse == \"left\" ? rect.left : rect.right) - prepared.rect.left,\n top: top, bottom: bot};\n if (!rect.left && !rect.right) { result.bogus = true; }\n if (!cm.options.singleCursorHeightPerLine) { result.rtop = rtop; result.rbottom = rbot; }\n\n return result\n }\n\n // Work around problem with bounding client rects on ranges being\n // returned incorrectly when zoomed on IE10 and below.\n function maybeUpdateRectForZooming(measure, rect) {\n if (!window.screen || screen.logicalXDPI == null ||\n screen.logicalXDPI == screen.deviceXDPI || !hasBadZoomedRects(measure))\n { return rect }\n var scaleX = screen.logicalXDPI / screen.deviceXDPI;\n var scaleY = screen.logicalYDPI / screen.deviceYDPI;\n return {left: rect.left * scaleX, right: rect.right * scaleX,\n top: rect.top * scaleY, bottom: rect.bottom * scaleY}\n }\n\n function clearLineMeasurementCacheFor(lineView) {\n if (lineView.measure) {\n lineView.measure.cache = {};\n lineView.measure.heights = null;\n if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++)\n { lineView.measure.caches[i] = {}; } }\n }\n }\n\n function clearLineMeasurementCache(cm) {\n cm.display.externalMeasure = null;\n removeChildren(cm.display.lineMeasure);\n for (var i = 0; i < cm.display.view.length; i++)\n { clearLineMeasurementCacheFor(cm.display.view[i]); }\n }\n\n function clearCaches(cm) {\n clearLineMeasurementCache(cm);\n cm.display.cachedCharWidth = cm.display.cachedTextHeight = cm.display.cachedPaddingH = null;\n if (!cm.options.lineWrapping) { cm.display.maxLineChanged = true; }\n cm.display.lineNumChars = null;\n }\n\n function pageScrollX(doc) {\n // Work around https://bugs.chromium.org/p/chromium/issues/detail?id=489206\n // which causes page_Offset and bounding client rects to use\n // different reference viewports and invalidate our calculations.\n if (chrome && android) { return -(doc.body.getBoundingClientRect().left - parseInt(getComputedStyle(doc.body).marginLeft)) }\n return doc.defaultView.pageXOffset || (doc.documentElement || doc.body).scrollLeft\n }\n function pageScrollY(doc) {\n if (chrome && android) { return -(doc.body.getBoundingClientRect().top - parseInt(getComputedStyle(doc.body).marginTop)) }\n return doc.defaultView.pageYOffset || (doc.documentElement || doc.body).scrollTop\n }\n\n function widgetTopHeight(lineObj) {\n var ref = visualLine(lineObj);\n var widgets = ref.widgets;\n var height = 0;\n if (widgets) { for (var i = 0; i < widgets.length; ++i) { if (widgets[i].above)\n { height += widgetHeight(widgets[i]); } } }\n return height\n }\n\n // Converts a {top, bottom, left, right} box from line-local\n // coordinates into another coordinate system. Context may be one of\n // \"line\", \"div\" (display.lineDiv), \"local\"./null (editor), \"window\",\n // or \"page\".\n function intoCoordSystem(cm, lineObj, rect, context, includeWidgets) {\n if (!includeWidgets) {\n var height = widgetTopHeight(lineObj);\n rect.top += height; rect.bottom += height;\n }\n if (context == \"line\") { return rect }\n if (!context) { context = \"local\"; }\n var yOff = heightAtLine(lineObj);\n if (context == \"local\") { yOff += paddingTop(cm.display); }\n else { yOff -= cm.display.viewOffset; }\n if (context == \"page\" || context == \"window\") {\n var lOff = cm.display.lineSpace.getBoundingClientRect();\n yOff += lOff.top + (context == \"window\" ? 0 : pageScrollY(doc(cm)));\n var xOff = lOff.left + (context == \"window\" ? 0 : pageScrollX(doc(cm)));\n rect.left += xOff; rect.right += xOff;\n }\n rect.top += yOff; rect.bottom += yOff;\n return rect\n }\n\n // Coverts a box from \"div\" coords to another coordinate system.\n // Context may be \"window\", \"page\", \"div\", or \"local\"./null.\n function fromCoordSystem(cm, coords, context) {\n if (context == \"div\") { return coords }\n var left = coords.left, top = coords.top;\n // First move into \"page\" coordinate system\n if (context == \"page\") {\n left -= pageScrollX(doc(cm));\n top -= pageScrollY(doc(cm));\n } else if (context == \"local\" || !context) {\n var localBox = cm.display.sizer.getBoundingClientRect();\n left += localBox.left;\n top += localBox.top;\n }\n\n var lineSpaceBox = cm.display.lineSpace.getBoundingClientRect();\n return {left: left - lineSpaceBox.left, top: top - lineSpaceBox.top}\n }\n\n function charCoords(cm, pos, context, lineObj, bias) {\n if (!lineObj) { lineObj = getLine(cm.doc, pos.line); }\n return intoCoordSystem(cm, lineObj, measureChar(cm, lineObj, pos.ch, bias), context)\n }\n\n // Returns a box for a given cursor position, which may have an\n // 'other' property containing the position of the secondary cursor\n // on a bidi boundary.\n // A cursor Pos(line, char, \"before\") is on the same visual line as `char - 1`\n // and after `char - 1` in writing order of `char - 1`\n // A cursor Pos(line, char, \"after\") is on the same visual line as `char`\n // and before `char` in writing order of `char`\n // Examples (upper-case letters are RTL, lower-case are LTR):\n // Pos(0, 1, ...)\n // before after\n // ab a|b a|b\n // aB a|B aB|\n // Ab |Ab A|b\n // AB B|A B|A\n // Every position after the last character on a line is considered to stick\n // to the last character on the line.\n function cursorCoords(cm, pos, context, lineObj, preparedMeasure, varHeight) {\n lineObj = lineObj || getLine(cm.doc, pos.line);\n if (!preparedMeasure) { preparedMeasure = prepareMeasureForLine(cm, lineObj); }\n function get(ch, right) {\n var m = measureCharPrepared(cm, preparedMeasure, ch, right ? \"right\" : \"left\", varHeight);\n if (right) { m.left = m.right; } else { m.right = m.left; }\n return intoCoordSystem(cm, lineObj, m, context)\n }\n var order = getOrder(lineObj, cm.doc.direction), ch = pos.ch, sticky = pos.sticky;\n if (ch >= lineObj.text.length) {\n ch = lineObj.text.length;\n sticky = \"before\";\n } else if (ch <= 0) {\n ch = 0;\n sticky = \"after\";\n }\n if (!order) { return get(sticky == \"before\" ? ch - 1 : ch, sticky == \"before\") }\n\n function getBidi(ch, partPos, invert) {\n var part = order[partPos], right = part.level == 1;\n return get(invert ? ch - 1 : ch, right != invert)\n }\n var partPos = getBidiPartAt(order, ch, sticky);\n var other = bidiOther;\n var val = getBidi(ch, partPos, sticky == \"before\");\n if (other != null) { val.other = getBidi(ch, other, sticky != \"before\"); }\n return val\n }\n\n // Used to cheaply estimate the coordinates for a position. Used for\n // intermediate scroll updates.\n function estimateCoords(cm, pos) {\n var left = 0;\n pos = clipPos(cm.doc, pos);\n if (!cm.options.lineWrapping) { left = charWidth(cm.display) * pos.ch; }\n var lineObj = getLine(cm.doc, pos.line);\n var top = heightAtLine(lineObj) + paddingTop(cm.display);\n return {left: left, right: left, top: top, bottom: top + lineObj.height}\n }\n\n // Positions returned by coordsChar contain some extra information.\n // xRel is the relative x position of the input coordinates compared\n // to the found position (so xRel > 0 means the coordinates are to\n // the right of the character position, for example). When outside\n // is true, that means the coordinates lie outside the line's\n // vertical range.\n function PosWithInfo(line, ch, sticky, outside, xRel) {\n var pos = Pos(line, ch, sticky);\n pos.xRel = xRel;\n if (outside) { pos.outside = outside; }\n return pos\n }\n\n // Compute the character position closest to the given coordinates.\n // Input must be lineSpace-local (\"div\" coordinate system).\n function coordsChar(cm, x, y) {\n var doc = cm.doc;\n y += cm.display.viewOffset;\n if (y < 0) { return PosWithInfo(doc.first, 0, null, -1, -1) }\n var lineN = lineAtHeight(doc, y), last = doc.first + doc.size - 1;\n if (lineN > last)\n { return PosWithInfo(doc.first + doc.size - 1, getLine(doc, last).text.length, null, 1, 1) }\n if (x < 0) { x = 0; }\n\n var lineObj = getLine(doc, lineN);\n for (;;) {\n var found = coordsCharInner(cm, lineObj, lineN, x, y);\n var collapsed = collapsedSpanAround(lineObj, found.ch + (found.xRel > 0 || found.outside > 0 ? 1 : 0));\n if (!collapsed) { return found }\n var rangeEnd = collapsed.find(1);\n if (rangeEnd.line == lineN) { return rangeEnd }\n lineObj = getLine(doc, lineN = rangeEnd.line);\n }\n }\n\n function wrappedLineExtent(cm, lineObj, preparedMeasure, y) {\n y -= widgetTopHeight(lineObj);\n var end = lineObj.text.length;\n var begin = findFirst(function (ch) { return measureCharPrepared(cm, preparedMeasure, ch - 1).bottom <= y; }, end, 0);\n end = findFirst(function (ch) { return measureCharPrepared(cm, preparedMeasure, ch).top > y; }, begin, end);\n return {begin: begin, end: end}\n }\n\n function wrappedLineExtentChar(cm, lineObj, preparedMeasure, target) {\n if (!preparedMeasure) { preparedMeasure = prepareMeasureForLine(cm, lineObj); }\n var targetTop = intoCoordSystem(cm, lineObj, measureCharPrepared(cm, preparedMeasure, target), \"line\").top;\n return wrappedLineExtent(cm, lineObj, preparedMeasure, targetTop)\n }\n\n // Returns true if the given side of a box is after the given\n // coordinates, in top-to-bottom, left-to-right order.\n function boxIsAfter(box, x, y, left) {\n return box.bottom <= y ? false : box.top > y ? true : (left ? box.left : box.right) > x\n }\n\n function coordsCharInner(cm, lineObj, lineNo, x, y) {\n // Move y into line-local coordinate space\n y -= heightAtLine(lineObj);\n var preparedMeasure = prepareMeasureForLine(cm, lineObj);\n // When directly calling `measureCharPrepared`, we have to adjust\n // for the widgets at this line.\n var widgetHeight = widgetTopHeight(lineObj);\n var begin = 0, end = lineObj.text.length, ltr = true;\n\n var order = getOrder(lineObj, cm.doc.direction);\n // If the line isn't plain left-to-right text, first figure out\n // which bidi section the coordinates fall into.\n if (order) {\n var part = (cm.options.lineWrapping ? coordsBidiPartWrapped : coordsBidiPart)\n (cm, lineObj, lineNo, preparedMeasure, order, x, y);\n ltr = part.level != 1;\n // The awkward -1 offsets are needed because findFirst (called\n // on these below) will treat its first bound as inclusive,\n // second as exclusive, but we want to actually address the\n // characters in the part's range\n begin = ltr ? part.from : part.to - 1;\n end = ltr ? part.to : part.from - 1;\n }\n\n // A binary search to find the first character whose bounding box\n // starts after the coordinates. If we run across any whose box wrap\n // the coordinates, store that.\n var chAround = null, boxAround = null;\n var ch = findFirst(function (ch) {\n var box = measureCharPrepared(cm, preparedMeasure, ch);\n box.top += widgetHeight; box.bottom += widgetHeight;\n if (!boxIsAfter(box, x, y, false)) { return false }\n if (box.top <= y && box.left <= x) {\n chAround = ch;\n boxAround = box;\n }\n return true\n }, begin, end);\n\n var baseX, sticky, outside = false;\n // If a box around the coordinates was found, use that\n if (boxAround) {\n // Distinguish coordinates nearer to the left or right side of the box\n var atLeft = x - boxAround.left < boxAround.right - x, atStart = atLeft == ltr;\n ch = chAround + (atStart ? 0 : 1);\n sticky = atStart ? \"after\" : \"before\";\n baseX = atLeft ? boxAround.left : boxAround.right;\n } else {\n // (Adjust for extended bound, if necessary.)\n if (!ltr && (ch == end || ch == begin)) { ch++; }\n // To determine which side to associate with, get the box to the\n // left of the character and compare it's vertical position to the\n // coordinates\n sticky = ch == 0 ? \"after\" : ch == lineObj.text.length ? \"before\" :\n (measureCharPrepared(cm, preparedMeasure, ch - (ltr ? 1 : 0)).bottom + widgetHeight <= y) == ltr ?\n \"after\" : \"before\";\n // Now get accurate coordinates for this place, in order to get a\n // base X position\n var coords = cursorCoords(cm, Pos(lineNo, ch, sticky), \"line\", lineObj, preparedMeasure);\n baseX = coords.left;\n outside = y < coords.top ? -1 : y >= coords.bottom ? 1 : 0;\n }\n\n ch = skipExtendingChars(lineObj.text, ch, 1);\n return PosWithInfo(lineNo, ch, sticky, outside, x - baseX)\n }\n\n function coordsBidiPart(cm, lineObj, lineNo, preparedMeasure, order, x, y) {\n // Bidi parts are sorted left-to-right, and in a non-line-wrapping\n // situation, we can take this ordering to correspond to the visual\n // ordering. This finds the first part whose end is after the given\n // coordinates.\n var index = findFirst(function (i) {\n var part = order[i], ltr = part.level != 1;\n return boxIsAfter(cursorCoords(cm, Pos(lineNo, ltr ? part.to : part.from, ltr ? \"before\" : \"after\"),\n \"line\", lineObj, preparedMeasure), x, y, true)\n }, 0, order.length - 1);\n var part = order[index];\n // If this isn't the first part, the part's start is also after\n // the coordinates, and the coordinates aren't on the same line as\n // that start, move one part back.\n if (index > 0) {\n var ltr = part.level != 1;\n var start = cursorCoords(cm, Pos(lineNo, ltr ? part.from : part.to, ltr ? \"after\" : \"before\"),\n \"line\", lineObj, preparedMeasure);\n if (boxIsAfter(start, x, y, true) && start.top > y)\n { part = order[index - 1]; }\n }\n return part\n }\n\n function coordsBidiPartWrapped(cm, lineObj, _lineNo, preparedMeasure, order, x, y) {\n // In a wrapped line, rtl text on wrapping boundaries can do things\n // that don't correspond to the ordering in our `order` array at\n // all, so a binary search doesn't work, and we want to return a\n // part that only spans one line so that the binary search in\n // coordsCharInner is safe. As such, we first find the extent of the\n // wrapped line, and then do a flat search in which we discard any\n // spans that aren't on the line.\n var ref = wrappedLineExtent(cm, lineObj, preparedMeasure, y);\n var begin = ref.begin;\n var end = ref.end;\n if (/\\s/.test(lineObj.text.charAt(end - 1))) { end--; }\n var part = null, closestDist = null;\n for (var i = 0; i < order.length; i++) {\n var p = order[i];\n if (p.from >= end || p.to <= begin) { continue }\n var ltr = p.level != 1;\n var endX = measureCharPrepared(cm, preparedMeasure, ltr ? Math.min(end, p.to) - 1 : Math.max(begin, p.from)).right;\n // Weigh against spans ending before this, so that they are only\n // picked if nothing ends after\n var dist = endX < x ? x - endX + 1e9 : endX - x;\n if (!part || closestDist > dist) {\n part = p;\n closestDist = dist;\n }\n }\n if (!part) { part = order[order.length - 1]; }\n // Clip the part to the wrapped line.\n if (part.from < begin) { part = {from: begin, to: part.to, level: part.level}; }\n if (part.to > end) { part = {from: part.from, to: end, level: part.level}; }\n return part\n }\n\n var measureText;\n // Compute the default text height.\n function textHeight(display) {\n if (display.cachedTextHeight != null) { return display.cachedTextHeight }\n if (measureText == null) {\n measureText = elt(\"pre\", null, \"CodeMirror-line-like\");\n // Measure a bunch of lines, for browsers that compute\n // fractional heights.\n for (var i = 0; i < 49; ++i) {\n measureText.appendChild(document.createTextNode(\"x\"));\n measureText.appendChild(elt(\"br\"));\n }\n measureText.appendChild(document.createTextNode(\"x\"));\n }\n removeChildrenAndAdd(display.measure, measureText);\n var height = measureText.offsetHeight / 50;\n if (height > 3) { display.cachedTextHeight = height; }\n removeChildren(display.measure);\n return height || 1\n }\n\n // Compute the default character width.\n function charWidth(display) {\n if (display.cachedCharWidth != null) { return display.cachedCharWidth }\n var anchor = elt(\"span\", \"xxxxxxxxxx\");\n var pre = elt(\"pre\", [anchor], \"CodeMirror-line-like\");\n removeChildrenAndAdd(display.measure, pre);\n var rect = anchor.getBoundingClientRect(), width = (rect.right - rect.left) / 10;\n if (width > 2) { display.cachedCharWidth = width; }\n return width || 10\n }\n\n // Do a bulk-read of the DOM positions and sizes needed to draw the\n // view, so that we don't interleave reading and writing to the DOM.\n function getDimensions(cm) {\n var d = cm.display, left = {}, width = {};\n var gutterLeft = d.gutters.clientLeft;\n for (var n = d.gutters.firstChild, i = 0; n; n = n.nextSibling, ++i) {\n var id = cm.display.gutterSpecs[i].className;\n left[id] = n.offsetLeft + n.clientLeft + gutterLeft;\n width[id] = n.clientWidth;\n }\n return {fixedPos: compensateForHScroll(d),\n gutterTotalWidth: d.gutters.offsetWidth,\n gutterLeft: left,\n gutterWidth: width,\n wrapperWidth: d.wrapper.clientWidth}\n }\n\n // Computes display.scroller.scrollLeft + display.gutters.offsetWidth,\n // but using getBoundingClientRect to get a sub-pixel-accurate\n // result.\n function compensateForHScroll(display) {\n return display.scroller.getBoundingClientRect().left - display.sizer.getBoundingClientRect().left\n }\n\n // Returns a function that estimates the height of a line, to use as\n // first approximation until the line becomes visible (and is thus\n // properly measurable).\n function estimateHeight(cm) {\n var th = textHeight(cm.display), wrapping = cm.options.lineWrapping;\n var perLine = wrapping && Math.max(5, cm.display.scroller.clientWidth / charWidth(cm.display) - 3);\n return function (line) {\n if (lineIsHidden(cm.doc, line)) { return 0 }\n\n var widgetsHeight = 0;\n if (line.widgets) { for (var i = 0; i < line.widgets.length; i++) {\n if (line.widgets[i].height) { widgetsHeight += line.widgets[i].height; }\n } }\n\n if (wrapping)\n { return widgetsHeight + (Math.ceil(line.text.length / perLine) || 1) * th }\n else\n { return widgetsHeight + th }\n }\n }\n\n function estimateLineHeights(cm) {\n var doc = cm.doc, est = estimateHeight(cm);\n doc.iter(function (line) {\n var estHeight = est(line);\n if (estHeight != line.height) { updateLineHeight(line, estHeight); }\n });\n }\n\n // Given a mouse event, find the corresponding position. If liberal\n // is false, it checks whether a gutter or scrollbar was clicked,\n // and returns null if it was. forRect is used by rectangular\n // selections, and tries to estimate a character position even for\n // coordinates beyond the right of the text.\n function posFromMouse(cm, e, liberal, forRect) {\n var display = cm.display;\n if (!liberal && e_target(e).getAttribute(\"cm-not-content\") == \"true\") { return null }\n\n var x, y, space = display.lineSpace.getBoundingClientRect();\n // Fails unpredictably on IE[67] when mouse is dragged around quickly.\n try { x = e.clientX - space.left; y = e.clientY - space.top; }\n catch (e$1) { return null }\n var coords = coordsChar(cm, x, y), line;\n if (forRect && coords.xRel > 0 && (line = getLine(cm.doc, coords.line).text).length == coords.ch) {\n var colDiff = countColumn(line, line.length, cm.options.tabSize) - line.length;\n coords = Pos(coords.line, Math.max(0, Math.round((x - paddingH(cm.display).left) / charWidth(cm.display)) - colDiff));\n }\n return coords\n }\n\n // Find the view element corresponding to a given line. Return null\n // when the line isn't visible.\n function findViewIndex(cm, n) {\n if (n >= cm.display.viewTo) { return null }\n n -= cm.display.viewFrom;\n if (n < 0) { return null }\n var view = cm.display.view;\n for (var i = 0; i < view.length; i++) {\n n -= view[i].size;\n if (n < 0) { return i }\n }\n }\n\n // Updates the display.view data structure for a given change to the\n // document. From and to are in pre-change coordinates. Lendiff is\n // the amount of lines added or subtracted by the change. This is\n // used for changes that span multiple lines, or change the way\n // lines are divided into visual lines. regLineChange (below)\n // registers single-line changes.\n function regChange(cm, from, to, lendiff) {\n if (from == null) { from = cm.doc.first; }\n if (to == null) { to = cm.doc.first + cm.doc.size; }\n if (!lendiff) { lendiff = 0; }\n\n var display = cm.display;\n if (lendiff && to < display.viewTo &&\n (display.updateLineNumbers == null || display.updateLineNumbers > from))\n { display.updateLineNumbers = from; }\n\n cm.curOp.viewChanged = true;\n\n if (from >= display.viewTo) { // Change after\n if (sawCollapsedSpans && visualLineNo(cm.doc, from) < display.viewTo)\n { resetView(cm); }\n } else if (to <= display.viewFrom) { // Change before\n if (sawCollapsedSpans && visualLineEndNo(cm.doc, to + lendiff) > display.viewFrom) {\n resetView(cm);\n } else {\n display.viewFrom += lendiff;\n display.viewTo += lendiff;\n }\n } else if (from <= display.viewFrom && to >= display.viewTo) { // Full overlap\n resetView(cm);\n } else if (from <= display.viewFrom) { // Top overlap\n var cut = viewCuttingPoint(cm, to, to + lendiff, 1);\n if (cut) {\n display.view = display.view.slice(cut.index);\n display.viewFrom = cut.lineN;\n display.viewTo += lendiff;\n } else {\n resetView(cm);\n }\n } else if (to >= display.viewTo) { // Bottom overlap\n var cut$1 = viewCuttingPoint(cm, from, from, -1);\n if (cut$1) {\n display.view = display.view.slice(0, cut$1.index);\n display.viewTo = cut$1.lineN;\n } else {\n resetView(cm);\n }\n } else { // Gap in the middle\n var cutTop = viewCuttingPoint(cm, from, from, -1);\n var cutBot = viewCuttingPoint(cm, to, to + lendiff, 1);\n if (cutTop && cutBot) {\n display.view = display.view.slice(0, cutTop.index)\n .concat(buildViewArray(cm, cutTop.lineN, cutBot.lineN))\n .concat(display.view.slice(cutBot.index));\n display.viewTo += lendiff;\n } else {\n resetView(cm);\n }\n }\n\n var ext = display.externalMeasured;\n if (ext) {\n if (to < ext.lineN)\n { ext.lineN += lendiff; }\n else if (from < ext.lineN + ext.size)\n { display.externalMeasured = null; }\n }\n }\n\n // Register a change to a single line. Type must be one of \"text\",\n // \"gutter\", \"class\", \"widget\"\n function regLineChange(cm, line, type) {\n cm.curOp.viewChanged = true;\n var display = cm.display, ext = cm.display.externalMeasured;\n if (ext && line >= ext.lineN && line < ext.lineN + ext.size)\n { display.externalMeasured = null; }\n\n if (line < display.viewFrom || line >= display.viewTo) { return }\n var lineView = display.view[findViewIndex(cm, line)];\n if (lineView.node == null) { return }\n var arr = lineView.changes || (lineView.changes = []);\n if (indexOf(arr, type) == -1) { arr.push(type); }\n }\n\n // Clear the view.\n function resetView(cm) {\n cm.display.viewFrom = cm.display.viewTo = cm.doc.first;\n cm.display.view = [];\n cm.display.viewOffset = 0;\n }\n\n function viewCuttingPoint(cm, oldN, newN, dir) {\n var index = findViewIndex(cm, oldN), diff, view = cm.display.view;\n if (!sawCollapsedSpans || newN == cm.doc.first + cm.doc.size)\n { return {index: index, lineN: newN} }\n var n = cm.display.viewFrom;\n for (var i = 0; i < index; i++)\n { n += view[i].size; }\n if (n != oldN) {\n if (dir > 0) {\n if (index == view.length - 1) { return null }\n diff = (n + view[index].size) - oldN;\n index++;\n } else {\n diff = n - oldN;\n }\n oldN += diff; newN += diff;\n }\n while (visualLineNo(cm.doc, newN) != newN) {\n if (index == (dir < 0 ? 0 : view.length - 1)) { return null }\n newN += dir * view[index - (dir < 0 ? 1 : 0)].size;\n index += dir;\n }\n return {index: index, lineN: newN}\n }\n\n // Force the view to cover a given range, adding empty view element\n // or clipping off existing ones as needed.\n function adjustView(cm, from, to) {\n var display = cm.display, view = display.view;\n if (view.length == 0 || from >= display.viewTo || to <= display.viewFrom) {\n display.view = buildViewArray(cm, from, to);\n display.viewFrom = from;\n } else {\n if (display.viewFrom > from)\n { display.view = buildViewArray(cm, from, display.viewFrom).concat(display.view); }\n else if (display.viewFrom < from)\n { display.view = display.view.slice(findViewIndex(cm, from)); }\n display.viewFrom = from;\n if (display.viewTo < to)\n { display.view = display.view.concat(buildViewArray(cm, display.viewTo, to)); }\n else if (display.viewTo > to)\n { display.view = display.view.slice(0, findViewIndex(cm, to)); }\n }\n display.viewTo = to;\n }\n\n // Count the number of lines in the view whose DOM representation is\n // out of date (or nonexistent).\n function countDirtyView(cm) {\n var view = cm.display.view, dirty = 0;\n for (var i = 0; i < view.length; i++) {\n var lineView = view[i];\n if (!lineView.hidden && (!lineView.node || lineView.changes)) { ++dirty; }\n }\n return dirty\n }\n\n function updateSelection(cm) {\n cm.display.input.showSelection(cm.display.input.prepareSelection());\n }\n\n function prepareSelection(cm, primary) {\n if ( primary === void 0 ) primary = true;\n\n var doc = cm.doc, result = {};\n var curFragment = result.cursors = document.createDocumentFragment();\n var selFragment = result.selection = document.createDocumentFragment();\n\n var customCursor = cm.options.$customCursor;\n if (customCursor) { primary = true; }\n for (var i = 0; i < doc.sel.ranges.length; i++) {\n if (!primary && i == doc.sel.primIndex) { continue }\n var range = doc.sel.ranges[i];\n if (range.from().line >= cm.display.viewTo || range.to().line < cm.display.viewFrom) { continue }\n var collapsed = range.empty();\n if (customCursor) {\n var head = customCursor(cm, range);\n if (head) { drawSelectionCursor(cm, head, curFragment); }\n } else if (collapsed || cm.options.showCursorWhenSelecting) {\n drawSelectionCursor(cm, range.head, curFragment);\n }\n if (!collapsed)\n { drawSelectionRange(cm, range, selFragment); }\n }\n return result\n }\n\n // Draws a cursor for the given range\n function drawSelectionCursor(cm, head, output) {\n var pos = cursorCoords(cm, head, \"div\", null, null, !cm.options.singleCursorHeightPerLine);\n\n var cursor = output.appendChild(elt(\"div\", \"\\u00a0\", \"CodeMirror-cursor\"));\n cursor.style.left = pos.left + \"px\";\n cursor.style.top = pos.top + \"px\";\n cursor.style.height = Math.max(0, pos.bottom - pos.top) * cm.options.cursorHeight + \"px\";\n\n if (/\\bcm-fat-cursor\\b/.test(cm.getWrapperElement().className)) {\n var charPos = charCoords(cm, head, \"div\", null, null);\n var width = charPos.right - charPos.left;\n cursor.style.width = (width > 0 ? width : cm.defaultCharWidth()) + \"px\";\n }\n\n if (pos.other) {\n // Secondary cursor, shown when on a 'jump' in bi-directional text\n var otherCursor = output.appendChild(elt(\"div\", \"\\u00a0\", \"CodeMirror-cursor CodeMirror-secondarycursor\"));\n otherCursor.style.display = \"\";\n otherCursor.style.left = pos.other.left + \"px\";\n otherCursor.style.top = pos.other.top + \"px\";\n otherCursor.style.height = (pos.other.bottom - pos.other.top) * .85 + \"px\";\n }\n }\n\n function cmpCoords(a, b) { return a.top - b.top || a.left - b.left }\n\n // Draws the given range as a highlighted selection\n function drawSelectionRange(cm, range, output) {\n var display = cm.display, doc = cm.doc;\n var fragment = document.createDocumentFragment();\n var padding = paddingH(cm.display), leftSide = padding.left;\n var rightSide = Math.max(display.sizerWidth, displayWidth(cm) - display.sizer.offsetLeft) - padding.right;\n var docLTR = doc.direction == \"ltr\";\n\n function add(left, top, width, bottom) {\n if (top < 0) { top = 0; }\n top = Math.round(top);\n bottom = Math.round(bottom);\n fragment.appendChild(elt(\"div\", null, \"CodeMirror-selected\", (\"position: absolute; left: \" + left + \"px;\\n top: \" + top + \"px; width: \" + (width == null ? rightSide - left : width) + \"px;\\n height: \" + (bottom - top) + \"px\")));\n }\n\n function drawForLine(line, fromArg, toArg) {\n var lineObj = getLine(doc, line);\n var lineLen = lineObj.text.length;\n var start, end;\n function coords(ch, bias) {\n return charCoords(cm, Pos(line, ch), \"div\", lineObj, bias)\n }\n\n function wrapX(pos, dir, side) {\n var extent = wrappedLineExtentChar(cm, lineObj, null, pos);\n var prop = (dir == \"ltr\") == (side == \"after\") ? \"left\" : \"right\";\n var ch = side == \"after\" ? extent.begin : extent.end - (/\\s/.test(lineObj.text.charAt(extent.end - 1)) ? 2 : 1);\n return coords(ch, prop)[prop]\n }\n\n var order = getOrder(lineObj, doc.direction);\n iterateBidiSections(order, fromArg || 0, toArg == null ? lineLen : toArg, function (from, to, dir, i) {\n var ltr = dir == \"ltr\";\n var fromPos = coords(from, ltr ? \"left\" : \"right\");\n var toPos = coords(to - 1, ltr ? \"right\" : \"left\");\n\n var openStart = fromArg == null && from == 0, openEnd = toArg == null && to == lineLen;\n var first = i == 0, last = !order || i == order.length - 1;\n if (toPos.top - fromPos.top <= 3) { // Single line\n var openLeft = (docLTR ? openStart : openEnd) && first;\n var openRight = (docLTR ? openEnd : openStart) && last;\n var left = openLeft ? leftSide : (ltr ? fromPos : toPos).left;\n var right = openRight ? rightSide : (ltr ? toPos : fromPos).right;\n add(left, fromPos.top, right - left, fromPos.bottom);\n } else { // Multiple lines\n var topLeft, topRight, botLeft, botRight;\n if (ltr) {\n topLeft = docLTR && openStart && first ? leftSide : fromPos.left;\n topRight = docLTR ? rightSide : wrapX(from, dir, \"before\");\n botLeft = docLTR ? leftSide : wrapX(to, dir, \"after\");\n botRight = docLTR && openEnd && last ? rightSide : toPos.right;\n } else {\n topLeft = !docLTR ? leftSide : wrapX(from, dir, \"before\");\n topRight = !docLTR && openStart && first ? rightSide : fromPos.right;\n botLeft = !docLTR && openEnd && last ? leftSide : toPos.left;\n botRight = !docLTR ? rightSide : wrapX(to, dir, \"after\");\n }\n add(topLeft, fromPos.top, topRight - topLeft, fromPos.bottom);\n if (fromPos.bottom < toPos.top) { add(leftSide, fromPos.bottom, null, toPos.top); }\n add(botLeft, toPos.top, botRight - botLeft, toPos.bottom);\n }\n\n if (!start || cmpCoords(fromPos, start) < 0) { start = fromPos; }\n if (cmpCoords(toPos, start) < 0) { start = toPos; }\n if (!end || cmpCoords(fromPos, end) < 0) { end = fromPos; }\n if (cmpCoords(toPos, end) < 0) { end = toPos; }\n });\n return {start: start, end: end}\n }\n\n var sFrom = range.from(), sTo = range.to();\n if (sFrom.line == sTo.line) {\n drawForLine(sFrom.line, sFrom.ch, sTo.ch);\n } else {\n var fromLine = getLine(doc, sFrom.line), toLine = getLine(doc, sTo.line);\n var singleVLine = visualLine(fromLine) == visualLine(toLine);\n var leftEnd = drawForLine(sFrom.line, sFrom.ch, singleVLine ? fromLine.text.length + 1 : null).end;\n var rightStart = drawForLine(sTo.line, singleVLine ? 0 : null, sTo.ch).start;\n if (singleVLine) {\n if (leftEnd.top < rightStart.top - 2) {\n add(leftEnd.right, leftEnd.top, null, leftEnd.bottom);\n add(leftSide, rightStart.top, rightStart.left, rightStart.bottom);\n } else {\n add(leftEnd.right, leftEnd.top, rightStart.left - leftEnd.right, leftEnd.bottom);\n }\n }\n if (leftEnd.bottom < rightStart.top)\n { add(leftSide, leftEnd.bottom, null, rightStart.top); }\n }\n\n output.appendChild(fragment);\n }\n\n // Cursor-blinking\n function restartBlink(cm) {\n if (!cm.state.focused) { return }\n var display = cm.display;\n clearInterval(display.blinker);\n var on = true;\n display.cursorDiv.style.visibility = \"\";\n if (cm.options.cursorBlinkRate > 0)\n { display.blinker = setInterval(function () {\n if (!cm.hasFocus()) { onBlur(cm); }\n display.cursorDiv.style.visibility = (on = !on) ? \"\" : \"hidden\";\n }, cm.options.cursorBlinkRate); }\n else if (cm.options.cursorBlinkRate < 0)\n { display.cursorDiv.style.visibility = \"hidden\"; }\n }\n\n function ensureFocus(cm) {\n if (!cm.hasFocus()) {\n cm.display.input.focus();\n if (!cm.state.focused) { onFocus(cm); }\n }\n }\n\n function delayBlurEvent(cm) {\n cm.state.delayingBlurEvent = true;\n setTimeout(function () { if (cm.state.delayingBlurEvent) {\n cm.state.delayingBlurEvent = false;\n if (cm.state.focused) { onBlur(cm); }\n } }, 100);\n }\n\n function onFocus(cm, e) {\n if (cm.state.delayingBlurEvent && !cm.state.draggingText) { cm.state.delayingBlurEvent = false; }\n\n if (cm.options.readOnly == \"nocursor\") { return }\n if (!cm.state.focused) {\n signal(cm, \"focus\", cm, e);\n cm.state.focused = true;\n addClass(cm.display.wrapper, \"CodeMirror-focused\");\n // This test prevents this from firing when a context\n // menu is closed (since the input reset would kill the\n // select-all detection hack)\n if (!cm.curOp && cm.display.selForContextMenu != cm.doc.sel) {\n cm.display.input.reset();\n if (webkit) { setTimeout(function () { return cm.display.input.reset(true); }, 20); } // Issue #1730\n }\n cm.display.input.receivedFocus();\n }\n restartBlink(cm);\n }\n function onBlur(cm, e) {\n if (cm.state.delayingBlurEvent) { return }\n\n if (cm.state.focused) {\n signal(cm, \"blur\", cm, e);\n cm.state.focused = false;\n rmClass(cm.display.wrapper, \"CodeMirror-focused\");\n }\n clearInterval(cm.display.blinker);\n setTimeout(function () { if (!cm.state.focused) { cm.display.shift = false; } }, 150);\n }\n\n // Read the actual heights of the rendered lines, and update their\n // stored heights to match.\n function updateHeightsInViewport(cm) {\n var display = cm.display;\n var prevBottom = display.lineDiv.offsetTop;\n var viewTop = Math.max(0, display.scroller.getBoundingClientRect().top);\n var oldHeight = display.lineDiv.getBoundingClientRect().top;\n var mustScroll = 0;\n for (var i = 0; i < display.view.length; i++) {\n var cur = display.view[i], wrapping = cm.options.lineWrapping;\n var height = (void 0), width = 0;\n if (cur.hidden) { continue }\n oldHeight += cur.line.height;\n if (ie && ie_version < 8) {\n var bot = cur.node.offsetTop + cur.node.offsetHeight;\n height = bot - prevBottom;\n prevBottom = bot;\n } else {\n var box = cur.node.getBoundingClientRect();\n height = box.bottom - box.top;\n // Check that lines don't extend past the right of the current\n // editor width\n if (!wrapping && cur.text.firstChild)\n { width = cur.text.firstChild.getBoundingClientRect().right - box.left - 1; }\n }\n var diff = cur.line.height - height;\n if (diff > .005 || diff < -.005) {\n if (oldHeight < viewTop) { mustScroll -= diff; }\n updateLineHeight(cur.line, height);\n updateWidgetHeight(cur.line);\n if (cur.rest) { for (var j = 0; j < cur.rest.length; j++)\n { updateWidgetHeight(cur.rest[j]); } }\n }\n if (width > cm.display.sizerWidth) {\n var chWidth = Math.ceil(width / charWidth(cm.display));\n if (chWidth > cm.display.maxLineLength) {\n cm.display.maxLineLength = chWidth;\n cm.display.maxLine = cur.line;\n cm.display.maxLineChanged = true;\n }\n }\n }\n if (Math.abs(mustScroll) > 2) { display.scroller.scrollTop += mustScroll; }\n }\n\n // Read and store the height of line widgets associated with the\n // given line.\n function updateWidgetHeight(line) {\n if (line.widgets) { for (var i = 0; i < line.widgets.length; ++i) {\n var w = line.widgets[i], parent = w.node.parentNode;\n if (parent) { w.height = parent.offsetHeight; }\n } }\n }\n\n // Compute the lines that are visible in a given viewport (defaults\n // the the current scroll position). viewport may contain top,\n // height, and ensure (see op.scrollToPos) properties.\n function visibleLines(display, doc, viewport) {\n var top = viewport && viewport.top != null ? Math.max(0, viewport.top) : display.scroller.scrollTop;\n top = Math.floor(top - paddingTop(display));\n var bottom = viewport && viewport.bottom != null ? viewport.bottom : top + display.wrapper.clientHeight;\n\n var from = lineAtHeight(doc, top), to = lineAtHeight(doc, bottom);\n // Ensure is a {from: {line, ch}, to: {line, ch}} object, and\n // forces those lines into the viewport (if possible).\n if (viewport && viewport.ensure) {\n var ensureFrom = viewport.ensure.from.line, ensureTo = viewport.ensure.to.line;\n if (ensureFrom < from) {\n from = ensureFrom;\n to = lineAtHeight(doc, heightAtLine(getLine(doc, ensureFrom)) + display.wrapper.clientHeight);\n } else if (Math.min(ensureTo, doc.lastLine()) >= to) {\n from = lineAtHeight(doc, heightAtLine(getLine(doc, ensureTo)) - display.wrapper.clientHeight);\n to = ensureTo;\n }\n }\n return {from: from, to: Math.max(to, from + 1)}\n }\n\n // SCROLLING THINGS INTO VIEW\n\n // If an editor sits on the top or bottom of the window, partially\n // scrolled out of view, this ensures that the cursor is visible.\n function maybeScrollWindow(cm, rect) {\n if (signalDOMEvent(cm, \"scrollCursorIntoView\")) { return }\n\n var display = cm.display, box = display.sizer.getBoundingClientRect(), doScroll = null;\n var doc = display.wrapper.ownerDocument;\n if (rect.top + box.top < 0) { doScroll = true; }\n else if (rect.bottom + box.top > (doc.defaultView.innerHeight || doc.documentElement.clientHeight)) { doScroll = false; }\n if (doScroll != null && !phantom) {\n var scrollNode = elt(\"div\", \"\\u200b\", null, (\"position: absolute;\\n top: \" + (rect.top - display.viewOffset - paddingTop(cm.display)) + \"px;\\n height: \" + (rect.bottom - rect.top + scrollGap(cm) + display.barHeight) + \"px;\\n left: \" + (rect.left) + \"px; width: \" + (Math.max(2, rect.right - rect.left)) + \"px;\"));\n cm.display.lineSpace.appendChild(scrollNode);\n scrollNode.scrollIntoView(doScroll);\n cm.display.lineSpace.removeChild(scrollNode);\n }\n }\n\n // Scroll a given position into view (immediately), verifying that\n // it actually became visible (as line heights are accurately\n // measured, the position of something may 'drift' during drawing).\n function scrollPosIntoView(cm, pos, end, margin) {\n if (margin == null) { margin = 0; }\n var rect;\n if (!cm.options.lineWrapping && pos == end) {\n // Set pos and end to the cursor positions around the character pos sticks to\n // If pos.sticky == \"before\", that is around pos.ch - 1, otherwise around pos.ch\n // If pos == Pos(_, 0, \"before\"), pos and end are unchanged\n end = pos.sticky == \"before\" ? Pos(pos.line, pos.ch + 1, \"before\") : pos;\n pos = pos.ch ? Pos(pos.line, pos.sticky == \"before\" ? pos.ch - 1 : pos.ch, \"after\") : pos;\n }\n for (var limit = 0; limit < 5; limit++) {\n var changed = false;\n var coords = cursorCoords(cm, pos);\n var endCoords = !end || end == pos ? coords : cursorCoords(cm, end);\n rect = {left: Math.min(coords.left, endCoords.left),\n top: Math.min(coords.top, endCoords.top) - margin,\n right: Math.max(coords.left, endCoords.left),\n bottom: Math.max(coords.bottom, endCoords.bottom) + margin};\n var scrollPos = calculateScrollPos(cm, rect);\n var startTop = cm.doc.scrollTop, startLeft = cm.doc.scrollLeft;\n if (scrollPos.scrollTop != null) {\n updateScrollTop(cm, scrollPos.scrollTop);\n if (Math.abs(cm.doc.scrollTop - startTop) > 1) { changed = true; }\n }\n if (scrollPos.scrollLeft != null) {\n setScrollLeft(cm, scrollPos.scrollLeft);\n if (Math.abs(cm.doc.scrollLeft - startLeft) > 1) { changed = true; }\n }\n if (!changed) { break }\n }\n return rect\n }\n\n // Scroll a given set of coordinates into view (immediately).\n function scrollIntoView(cm, rect) {\n var scrollPos = calculateScrollPos(cm, rect);\n if (scrollPos.scrollTop != null) { updateScrollTop(cm, scrollPos.scrollTop); }\n if (scrollPos.scrollLeft != null) { setScrollLeft(cm, scrollPos.scrollLeft); }\n }\n\n // Calculate a new scroll position needed to scroll the given\n // rectangle into view. Returns an object with scrollTop and\n // scrollLeft properties. When these are undefined, the\n // vertical/horizontal position does not need to be adjusted.\n function calculateScrollPos(cm, rect) {\n var display = cm.display, snapMargin = textHeight(cm.display);\n if (rect.top < 0) { rect.top = 0; }\n var screentop = cm.curOp && cm.curOp.scrollTop != null ? cm.curOp.scrollTop : display.scroller.scrollTop;\n var screen = displayHeight(cm), result = {};\n if (rect.bottom - rect.top > screen) { rect.bottom = rect.top + screen; }\n var docBottom = cm.doc.height + paddingVert(display);\n var atTop = rect.top < snapMargin, atBottom = rect.bottom > docBottom - snapMargin;\n if (rect.top < screentop) {\n result.scrollTop = atTop ? 0 : rect.top;\n } else if (rect.bottom > screentop + screen) {\n var newTop = Math.min(rect.top, (atBottom ? docBottom : rect.bottom) - screen);\n if (newTop != screentop) { result.scrollTop = newTop; }\n }\n\n var gutterSpace = cm.options.fixedGutter ? 0 : display.gutters.offsetWidth;\n var screenleft = cm.curOp && cm.curOp.scrollLeft != null ? cm.curOp.scrollLeft : display.scroller.scrollLeft - gutterSpace;\n var screenw = displayWidth(cm) - display.gutters.offsetWidth;\n var tooWide = rect.right - rect.left > screenw;\n if (tooWide) { rect.right = rect.left + screenw; }\n if (rect.left < 10)\n { result.scrollLeft = 0; }\n else if (rect.left < screenleft)\n { result.scrollLeft = Math.max(0, rect.left + gutterSpace - (tooWide ? 0 : 10)); }\n else if (rect.right > screenw + screenleft - 3)\n { result.scrollLeft = rect.right + (tooWide ? 0 : 10) - screenw; }\n return result\n }\n\n // Store a relative adjustment to the scroll position in the current\n // operation (to be applied when the operation finishes).\n function addToScrollTop(cm, top) {\n if (top == null) { return }\n resolveScrollToPos(cm);\n cm.curOp.scrollTop = (cm.curOp.scrollTop == null ? cm.doc.scrollTop : cm.curOp.scrollTop) + top;\n }\n\n // Make sure that at the end of the operation the current cursor is\n // shown.\n function ensureCursorVisible(cm) {\n resolveScrollToPos(cm);\n var cur = cm.getCursor();\n cm.curOp.scrollToPos = {from: cur, to: cur, margin: cm.options.cursorScrollMargin};\n }\n\n function scrollToCoords(cm, x, y) {\n if (x != null || y != null) { resolveScrollToPos(cm); }\n if (x != null) { cm.curOp.scrollLeft = x; }\n if (y != null) { cm.curOp.scrollTop = y; }\n }\n\n function scrollToRange(cm, range) {\n resolveScrollToPos(cm);\n cm.curOp.scrollToPos = range;\n }\n\n // When an operation has its scrollToPos property set, and another\n // scroll action is applied before the end of the operation, this\n // 'simulates' scrolling that position into view in a cheap way, so\n // that the effect of intermediate scroll commands is not ignored.\n function resolveScrollToPos(cm) {\n var range = cm.curOp.scrollToPos;\n if (range) {\n cm.curOp.scrollToPos = null;\n var from = estimateCoords(cm, range.from), to = estimateCoords(cm, range.to);\n scrollToCoordsRange(cm, from, to, range.margin);\n }\n }\n\n function scrollToCoordsRange(cm, from, to, margin) {\n var sPos = calculateScrollPos(cm, {\n left: Math.min(from.left, to.left),\n top: Math.min(from.top, to.top) - margin,\n right: Math.max(from.right, to.right),\n bottom: Math.max(from.bottom, to.bottom) + margin\n });\n scrollToCoords(cm, sPos.scrollLeft, sPos.scrollTop);\n }\n\n // Sync the scrollable area and scrollbars, ensure the viewport\n // covers the visible area.\n function updateScrollTop(cm, val) {\n if (Math.abs(cm.doc.scrollTop - val) < 2) { return }\n if (!gecko) { updateDisplaySimple(cm, {top: val}); }\n setScrollTop(cm, val, true);\n if (gecko) { updateDisplaySimple(cm); }\n startWorker(cm, 100);\n }\n\n function setScrollTop(cm, val, forceScroll) {\n val = Math.max(0, Math.min(cm.display.scroller.scrollHeight - cm.display.scroller.clientHeight, val));\n if (cm.display.scroller.scrollTop == val && !forceScroll) { return }\n cm.doc.scrollTop = val;\n cm.display.scrollbars.setScrollTop(val);\n if (cm.display.scroller.scrollTop != val) { cm.display.scroller.scrollTop = val; }\n }\n\n // Sync scroller and scrollbar, ensure the gutter elements are\n // aligned.\n function setScrollLeft(cm, val, isScroller, forceScroll) {\n val = Math.max(0, Math.min(val, cm.display.scroller.scrollWidth - cm.display.scroller.clientWidth));\n if ((isScroller ? val == cm.doc.scrollLeft : Math.abs(cm.doc.scrollLeft - val) < 2) && !forceScroll) { return }\n cm.doc.scrollLeft = val;\n alignHorizontally(cm);\n if (cm.display.scroller.scrollLeft != val) { cm.display.scroller.scrollLeft = val; }\n cm.display.scrollbars.setScrollLeft(val);\n }\n\n // SCROLLBARS\n\n // Prepare DOM reads needed to update the scrollbars. Done in one\n // shot to minimize update/measure roundtrips.\n function measureForScrollbars(cm) {\n var d = cm.display, gutterW = d.gutters.offsetWidth;\n var docH = Math.round(cm.doc.height + paddingVert(cm.display));\n return {\n clientHeight: d.scroller.clientHeight,\n viewHeight: d.wrapper.clientHeight,\n scrollWidth: d.scroller.scrollWidth, clientWidth: d.scroller.clientWidth,\n viewWidth: d.wrapper.clientWidth,\n barLeft: cm.options.fixedGutter ? gutterW : 0,\n docHeight: docH,\n scrollHeight: docH + scrollGap(cm) + d.barHeight,\n nativeBarWidth: d.nativeBarWidth,\n gutterWidth: gutterW\n }\n }\n\n var NativeScrollbars = function(place, scroll, cm) {\n this.cm = cm;\n var vert = this.vert = elt(\"div\", [elt(\"div\", null, null, \"min-width: 1px\")], \"CodeMirror-vscrollbar\");\n var horiz = this.horiz = elt(\"div\", [elt(\"div\", null, null, \"height: 100%; min-height: 1px\")], \"CodeMirror-hscrollbar\");\n vert.tabIndex = horiz.tabIndex = -1;\n place(vert); place(horiz);\n\n on(vert, \"scroll\", function () {\n if (vert.clientHeight) { scroll(vert.scrollTop, \"vertical\"); }\n });\n on(horiz, \"scroll\", function () {\n if (horiz.clientWidth) { scroll(horiz.scrollLeft, \"horizontal\"); }\n });\n\n this.checkedZeroWidth = false;\n // Need to set a minimum width to see the scrollbar on IE7 (but must not set it on IE8).\n if (ie && ie_version < 8) { this.horiz.style.minHeight = this.vert.style.minWidth = \"18px\"; }\n };\n\n NativeScrollbars.prototype.update = function (measure) {\n var needsH = measure.scrollWidth > measure.clientWidth + 1;\n var needsV = measure.scrollHeight > measure.clientHeight + 1;\n var sWidth = measure.nativeBarWidth;\n\n if (needsV) {\n this.vert.style.display = \"block\";\n this.vert.style.bottom = needsH ? sWidth + \"px\" : \"0\";\n var totalHeight = measure.viewHeight - (needsH ? sWidth : 0);\n // A bug in IE8 can cause this value to be negative, so guard it.\n this.vert.firstChild.style.height =\n Math.max(0, measure.scrollHeight - measure.clientHeight + totalHeight) + \"px\";\n } else {\n this.vert.scrollTop = 0;\n this.vert.style.display = \"\";\n this.vert.firstChild.style.height = \"0\";\n }\n\n if (needsH) {\n this.horiz.style.display = \"block\";\n this.horiz.style.right = needsV ? sWidth + \"px\" : \"0\";\n this.horiz.style.left = measure.barLeft + \"px\";\n var totalWidth = measure.viewWidth - measure.barLeft - (needsV ? sWidth : 0);\n this.horiz.firstChild.style.width =\n Math.max(0, measure.scrollWidth - measure.clientWidth + totalWidth) + \"px\";\n } else {\n this.horiz.style.display = \"\";\n this.horiz.firstChild.style.width = \"0\";\n }\n\n if (!this.checkedZeroWidth && measure.clientHeight > 0) {\n if (sWidth == 0) { this.zeroWidthHack(); }\n this.checkedZeroWidth = true;\n }\n\n return {right: needsV ? sWidth : 0, bottom: needsH ? sWidth : 0}\n };\n\n NativeScrollbars.prototype.setScrollLeft = function (pos) {\n if (this.horiz.scrollLeft != pos) { this.horiz.scrollLeft = pos; }\n if (this.disableHoriz) { this.enableZeroWidthBar(this.horiz, this.disableHoriz, \"horiz\"); }\n };\n\n NativeScrollbars.prototype.setScrollTop = function (pos) {\n if (this.vert.scrollTop != pos) { this.vert.scrollTop = pos; }\n if (this.disableVert) { this.enableZeroWidthBar(this.vert, this.disableVert, \"vert\"); }\n };\n\n NativeScrollbars.prototype.zeroWidthHack = function () {\n var w = mac && !mac_geMountainLion ? \"12px\" : \"18px\";\n this.horiz.style.height = this.vert.style.width = w;\n this.horiz.style.visibility = this.vert.style.visibility = \"hidden\";\n this.disableHoriz = new Delayed;\n this.disableVert = new Delayed;\n };\n\n NativeScrollbars.prototype.enableZeroWidthBar = function (bar, delay, type) {\n bar.style.visibility = \"\";\n function maybeDisable() {\n // To find out whether the scrollbar is still visible, we\n // check whether the element under the pixel in the bottom\n // right corner of the scrollbar box is the scrollbar box\n // itself (when the bar is still visible) or its filler child\n // (when the bar is hidden). If it is still visible, we keep\n // it enabled, if it's hidden, we disable pointer events.\n var box = bar.getBoundingClientRect();\n var elt = type == \"vert\" ? document.elementFromPoint(box.right - 1, (box.top + box.bottom) / 2)\n : document.elementFromPoint((box.right + box.left) / 2, box.bottom - 1);\n if (elt != bar) { bar.style.visibility = \"hidden\"; }\n else { delay.set(1000, maybeDisable); }\n }\n delay.set(1000, maybeDisable);\n };\n\n NativeScrollbars.prototype.clear = function () {\n var parent = this.horiz.parentNode;\n parent.removeChild(this.horiz);\n parent.removeChild(this.vert);\n };\n\n var NullScrollbars = function () {};\n\n NullScrollbars.prototype.update = function () { return {bottom: 0, right: 0} };\n NullScrollbars.prototype.setScrollLeft = function () {};\n NullScrollbars.prototype.setScrollTop = function () {};\n NullScrollbars.prototype.clear = function () {};\n\n function updateScrollbars(cm, measure) {\n if (!measure) { measure = measureForScrollbars(cm); }\n var startWidth = cm.display.barWidth, startHeight = cm.display.barHeight;\n updateScrollbarsInner(cm, measure);\n for (var i = 0; i < 4 && startWidth != cm.display.barWidth || startHeight != cm.display.barHeight; i++) {\n if (startWidth != cm.display.barWidth && cm.options.lineWrapping)\n { updateHeightsInViewport(cm); }\n updateScrollbarsInner(cm, measureForScrollbars(cm));\n startWidth = cm.display.barWidth; startHeight = cm.display.barHeight;\n }\n }\n\n // Re-synchronize the fake scrollbars with the actual size of the\n // content.\n function updateScrollbarsInner(cm, measure) {\n var d = cm.display;\n var sizes = d.scrollbars.update(measure);\n\n d.sizer.style.paddingRight = (d.barWidth = sizes.right) + \"px\";\n d.sizer.style.paddingBottom = (d.barHeight = sizes.bottom) + \"px\";\n d.heightForcer.style.borderBottom = sizes.bottom + \"px solid transparent\";\n\n if (sizes.right && sizes.bottom) {\n d.scrollbarFiller.style.display = \"block\";\n d.scrollbarFiller.style.height = sizes.bottom + \"px\";\n d.scrollbarFiller.style.width = sizes.right + \"px\";\n } else { d.scrollbarFiller.style.display = \"\"; }\n if (sizes.bottom && cm.options.coverGutterNextToScrollbar && cm.options.fixedGutter) {\n d.gutterFiller.style.display = \"block\";\n d.gutterFiller.style.height = sizes.bottom + \"px\";\n d.gutterFiller.style.width = measure.gutterWidth + \"px\";\n } else { d.gutterFiller.style.display = \"\"; }\n }\n\n var scrollbarModel = {\"native\": NativeScrollbars, \"null\": NullScrollbars};\n\n function initScrollbars(cm) {\n if (cm.display.scrollbars) {\n cm.display.scrollbars.clear();\n if (cm.display.scrollbars.addClass)\n { rmClass(cm.display.wrapper, cm.display.scrollbars.addClass); }\n }\n\n cm.display.scrollbars = new scrollbarModel[cm.options.scrollbarStyle](function (node) {\n cm.display.wrapper.insertBefore(node, cm.display.scrollbarFiller);\n // Prevent clicks in the scrollbars from killing focus\n on(node, \"mousedown\", function () {\n if (cm.state.focused) { setTimeout(function () { return cm.display.input.focus(); }, 0); }\n });\n node.setAttribute(\"cm-not-content\", \"true\");\n }, function (pos, axis) {\n if (axis == \"horizontal\") { setScrollLeft(cm, pos); }\n else { updateScrollTop(cm, pos); }\n }, cm);\n if (cm.display.scrollbars.addClass)\n { addClass(cm.display.wrapper, cm.display.scrollbars.addClass); }\n }\n\n // Operations are used to wrap a series of changes to the editor\n // state in such a way that each change won't have to update the\n // cursor and display (which would be awkward, slow, and\n // error-prone). Instead, display updates are batched and then all\n // combined and executed at once.\n\n var nextOpId = 0;\n // Start a new operation.\n function startOperation(cm) {\n cm.curOp = {\n cm: cm,\n viewChanged: false, // Flag that indicates that lines might need to be redrawn\n startHeight: cm.doc.height, // Used to detect need to update scrollbar\n forceUpdate: false, // Used to force a redraw\n updateInput: 0, // Whether to reset the input textarea\n typing: false, // Whether this reset should be careful to leave existing text (for compositing)\n changeObjs: null, // Accumulated changes, for firing change events\n cursorActivityHandlers: null, // Set of handlers to fire cursorActivity on\n cursorActivityCalled: 0, // Tracks which cursorActivity handlers have been called already\n selectionChanged: false, // Whether the selection needs to be redrawn\n updateMaxLine: false, // Set when the widest line needs to be determined anew\n scrollLeft: null, scrollTop: null, // Intermediate scroll position, not pushed to DOM yet\n scrollToPos: null, // Used to scroll to a specific position\n focus: false,\n id: ++nextOpId, // Unique ID\n markArrays: null // Used by addMarkedSpan\n };\n pushOperation(cm.curOp);\n }\n\n // Finish an operation, updating the display and signalling delayed events\n function endOperation(cm) {\n var op = cm.curOp;\n if (op) { finishOperation(op, function (group) {\n for (var i = 0; i < group.ops.length; i++)\n { group.ops[i].cm.curOp = null; }\n endOperations(group);\n }); }\n }\n\n // The DOM updates done when an operation finishes are batched so\n // that the minimum number of relayouts are required.\n function endOperations(group) {\n var ops = group.ops;\n for (var i = 0; i < ops.length; i++) // Read DOM\n { endOperation_R1(ops[i]); }\n for (var i$1 = 0; i$1 < ops.length; i$1++) // Write DOM (maybe)\n { endOperation_W1(ops[i$1]); }\n for (var i$2 = 0; i$2 < ops.length; i$2++) // Read DOM\n { endOperation_R2(ops[i$2]); }\n for (var i$3 = 0; i$3 < ops.length; i$3++) // Write DOM (maybe)\n { endOperation_W2(ops[i$3]); }\n for (var i$4 = 0; i$4 < ops.length; i$4++) // Read DOM\n { endOperation_finish(ops[i$4]); }\n }\n\n function endOperation_R1(op) {\n var cm = op.cm, display = cm.display;\n maybeClipScrollbars(cm);\n if (op.updateMaxLine) { findMaxLine(cm); }\n\n op.mustUpdate = op.viewChanged || op.forceUpdate || op.scrollTop != null ||\n op.scrollToPos && (op.scrollToPos.from.line < display.viewFrom ||\n op.scrollToPos.to.line >= display.viewTo) ||\n display.maxLineChanged && cm.options.lineWrapping;\n op.update = op.mustUpdate &&\n new DisplayUpdate(cm, op.mustUpdate && {top: op.scrollTop, ensure: op.scrollToPos}, op.forceUpdate);\n }\n\n function endOperation_W1(op) {\n op.updatedDisplay = op.mustUpdate && updateDisplayIfNeeded(op.cm, op.update);\n }\n\n function endOperation_R2(op) {\n var cm = op.cm, display = cm.display;\n if (op.updatedDisplay) { updateHeightsInViewport(cm); }\n\n op.barMeasure = measureForScrollbars(cm);\n\n // If the max line changed since it was last measured, measure it,\n // and ensure the document's width matches it.\n // updateDisplay_W2 will use these properties to do the actual resizing\n if (display.maxLineChanged && !cm.options.lineWrapping) {\n op.adjustWidthTo = measureChar(cm, display.maxLine, display.maxLine.text.length).left + 3;\n cm.display.sizerWidth = op.adjustWidthTo;\n op.barMeasure.scrollWidth =\n Math.max(display.scroller.clientWidth, display.sizer.offsetLeft + op.adjustWidthTo + scrollGap(cm) + cm.display.barWidth);\n op.maxScrollLeft = Math.max(0, display.sizer.offsetLeft + op.adjustWidthTo - displayWidth(cm));\n }\n\n if (op.updatedDisplay || op.selectionChanged)\n { op.preparedSelection = display.input.prepareSelection(); }\n }\n\n function endOperation_W2(op) {\n var cm = op.cm;\n\n if (op.adjustWidthTo != null) {\n cm.display.sizer.style.minWidth = op.adjustWidthTo + \"px\";\n if (op.maxScrollLeft < cm.doc.scrollLeft)\n { setScrollLeft(cm, Math.min(cm.display.scroller.scrollLeft, op.maxScrollLeft), true); }\n cm.display.maxLineChanged = false;\n }\n\n var takeFocus = op.focus && op.focus == activeElt(root(cm));\n if (op.preparedSelection)\n { cm.display.input.showSelection(op.preparedSelection, takeFocus); }\n if (op.updatedDisplay || op.startHeight != cm.doc.height)\n { updateScrollbars(cm, op.barMeasure); }\n if (op.updatedDisplay)\n { setDocumentHeight(cm, op.barMeasure); }\n\n if (op.selectionChanged) { restartBlink(cm); }\n\n if (cm.state.focused && op.updateInput)\n { cm.display.input.reset(op.typing); }\n if (takeFocus) { ensureFocus(op.cm); }\n }\n\n function endOperation_finish(op) {\n var cm = op.cm, display = cm.display, doc = cm.doc;\n\n if (op.updatedDisplay) { postUpdateDisplay(cm, op.update); }\n\n // Abort mouse wheel delta measurement, when scrolling explicitly\n if (display.wheelStartX != null && (op.scrollTop != null || op.scrollLeft != null || op.scrollToPos))\n { display.wheelStartX = display.wheelStartY = null; }\n\n // Propagate the scroll position to the actual DOM scroller\n if (op.scrollTop != null) { setScrollTop(cm, op.scrollTop, op.forceScroll); }\n\n if (op.scrollLeft != null) { setScrollLeft(cm, op.scrollLeft, true, true); }\n // If we need to scroll a specific position into view, do so.\n if (op.scrollToPos) {\n var rect = scrollPosIntoView(cm, clipPos(doc, op.scrollToPos.from),\n clipPos(doc, op.scrollToPos.to), op.scrollToPos.margin);\n maybeScrollWindow(cm, rect);\n }\n\n // Fire events for markers that are hidden/unidden by editing or\n // undoing\n var hidden = op.maybeHiddenMarkers, unhidden = op.maybeUnhiddenMarkers;\n if (hidden) { for (var i = 0; i < hidden.length; ++i)\n { if (!hidden[i].lines.length) { signal(hidden[i], \"hide\"); } } }\n if (unhidden) { for (var i$1 = 0; i$1 < unhidden.length; ++i$1)\n { if (unhidden[i$1].lines.length) { signal(unhidden[i$1], \"unhide\"); } } }\n\n if (display.wrapper.offsetHeight)\n { doc.scrollTop = cm.display.scroller.scrollTop; }\n\n // Fire change events, and delayed event handlers\n if (op.changeObjs)\n { signal(cm, \"changes\", cm, op.changeObjs); }\n if (op.update)\n { op.update.finish(); }\n }\n\n // Run the given function in an operation\n function runInOp(cm, f) {\n if (cm.curOp) { return f() }\n startOperation(cm);\n try { return f() }\n finally { endOperation(cm); }\n }\n // Wraps a function in an operation. Returns the wrapped function.\n function operation(cm, f) {\n return function() {\n if (cm.curOp) { return f.apply(cm, arguments) }\n startOperation(cm);\n try { return f.apply(cm, arguments) }\n finally { endOperation(cm); }\n }\n }\n // Used to add methods to editor and doc instances, wrapping them in\n // operations.\n function methodOp(f) {\n return function() {\n if (this.curOp) { return f.apply(this, arguments) }\n startOperation(this);\n try { return f.apply(this, arguments) }\n finally { endOperation(this); }\n }\n }\n function docMethodOp(f) {\n return function() {\n var cm = this.cm;\n if (!cm || cm.curOp) { return f.apply(this, arguments) }\n startOperation(cm);\n try { return f.apply(this, arguments) }\n finally { endOperation(cm); }\n }\n }\n\n // HIGHLIGHT WORKER\n\n function startWorker(cm, time) {\n if (cm.doc.highlightFrontier < cm.display.viewTo)\n { cm.state.highlight.set(time, bind(highlightWorker, cm)); }\n }\n\n function highlightWorker(cm) {\n var doc = cm.doc;\n if (doc.highlightFrontier >= cm.display.viewTo) { return }\n var end = +new Date + cm.options.workTime;\n var context = getContextBefore(cm, doc.highlightFrontier);\n var changedLines = [];\n\n doc.iter(context.line, Math.min(doc.first + doc.size, cm.display.viewTo + 500), function (line) {\n if (context.line >= cm.display.viewFrom) { // Visible\n var oldStyles = line.styles;\n var resetState = line.text.length > cm.options.maxHighlightLength ? copyState(doc.mode, context.state) : null;\n var highlighted = highlightLine(cm, line, context, true);\n if (resetState) { context.state = resetState; }\n line.styles = highlighted.styles;\n var oldCls = line.styleClasses, newCls = highlighted.classes;\n if (newCls) { line.styleClasses = newCls; }\n else if (oldCls) { line.styleClasses = null; }\n var ischange = !oldStyles || oldStyles.length != line.styles.length ||\n oldCls != newCls && (!oldCls || !newCls || oldCls.bgClass != newCls.bgClass || oldCls.textClass != newCls.textClass);\n for (var i = 0; !ischange && i < oldStyles.length; ++i) { ischange = oldStyles[i] != line.styles[i]; }\n if (ischange) { changedLines.push(context.line); }\n line.stateAfter = context.save();\n context.nextLine();\n } else {\n if (line.text.length <= cm.options.maxHighlightLength)\n { processLine(cm, line.text, context); }\n line.stateAfter = context.line % 5 == 0 ? context.save() : null;\n context.nextLine();\n }\n if (+new Date > end) {\n startWorker(cm, cm.options.workDelay);\n return true\n }\n });\n doc.highlightFrontier = context.line;\n doc.modeFrontier = Math.max(doc.modeFrontier, context.line);\n if (changedLines.length) { runInOp(cm, function () {\n for (var i = 0; i < changedLines.length; i++)\n { regLineChange(cm, changedLines[i], \"text\"); }\n }); }\n }\n\n // DISPLAY DRAWING\n\n var DisplayUpdate = function(cm, viewport, force) {\n var display = cm.display;\n\n this.viewport = viewport;\n // Store some values that we'll need later (but don't want to force a relayout for)\n this.visible = visibleLines(display, cm.doc, viewport);\n this.editorIsHidden = !display.wrapper.offsetWidth;\n this.wrapperHeight = display.wrapper.clientHeight;\n this.wrapperWidth = display.wrapper.clientWidth;\n this.oldDisplayWidth = displayWidth(cm);\n this.force = force;\n this.dims = getDimensions(cm);\n this.events = [];\n };\n\n DisplayUpdate.prototype.signal = function (emitter, type) {\n if (hasHandler(emitter, type))\n { this.events.push(arguments); }\n };\n DisplayUpdate.prototype.finish = function () {\n for (var i = 0; i < this.events.length; i++)\n { signal.apply(null, this.events[i]); }\n };\n\n function maybeClipScrollbars(cm) {\n var display = cm.display;\n if (!display.scrollbarsClipped && display.scroller.offsetWidth) {\n display.nativeBarWidth = display.scroller.offsetWidth - display.scroller.clientWidth;\n display.heightForcer.style.height = scrollGap(cm) + \"px\";\n display.sizer.style.marginBottom = -display.nativeBarWidth + \"px\";\n display.sizer.style.borderRightWidth = scrollGap(cm) + \"px\";\n display.scrollbarsClipped = true;\n }\n }\n\n function selectionSnapshot(cm) {\n if (cm.hasFocus()) { return null }\n var active = activeElt(root(cm));\n if (!active || !contains(cm.display.lineDiv, active)) { return null }\n var result = {activeElt: active};\n if (window.getSelection) {\n var sel = win(cm).getSelection();\n if (sel.anchorNode && sel.extend && contains(cm.display.lineDiv, sel.anchorNode)) {\n result.anchorNode = sel.anchorNode;\n result.anchorOffset = sel.anchorOffset;\n result.focusNode = sel.focusNode;\n result.focusOffset = sel.focusOffset;\n }\n }\n return result\n }\n\n function restoreSelection(snapshot) {\n if (!snapshot || !snapshot.activeElt || snapshot.activeElt == activeElt(rootNode(snapshot.activeElt))) { return }\n snapshot.activeElt.focus();\n if (!/^(INPUT|TEXTAREA)$/.test(snapshot.activeElt.nodeName) &&\n snapshot.anchorNode && contains(document.body, snapshot.anchorNode) && contains(document.body, snapshot.focusNode)) {\n var doc = snapshot.activeElt.ownerDocument;\n var sel = doc.defaultView.getSelection(), range = doc.createRange();\n range.setEnd(snapshot.anchorNode, snapshot.anchorOffset);\n range.collapse(false);\n sel.removeAllRanges();\n sel.addRange(range);\n sel.extend(snapshot.focusNode, snapshot.focusOffset);\n }\n }\n\n // Does the actual updating of the line display. Bails out\n // (returning false) when there is nothing to be done and forced is\n // false.\n function updateDisplayIfNeeded(cm, update) {\n var display = cm.display, doc = cm.doc;\n\n if (update.editorIsHidden) {\n resetView(cm);\n return false\n }\n\n // Bail out if the visible area is already rendered and nothing changed.\n if (!update.force &&\n update.visible.from >= display.viewFrom && update.visible.to <= display.viewTo &&\n (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo) &&\n display.renderedView == display.view && countDirtyView(cm) == 0)\n { return false }\n\n if (maybeUpdateLineNumberWidth(cm)) {\n resetView(cm);\n update.dims = getDimensions(cm);\n }\n\n // Compute a suitable new viewport (from & to)\n var end = doc.first + doc.size;\n var from = Math.max(update.visible.from - cm.options.viewportMargin, doc.first);\n var to = Math.min(end, update.visible.to + cm.options.viewportMargin);\n if (display.viewFrom < from && from - display.viewFrom < 20) { from = Math.max(doc.first, display.viewFrom); }\n if (display.viewTo > to && display.viewTo - to < 20) { to = Math.min(end, display.viewTo); }\n if (sawCollapsedSpans) {\n from = visualLineNo(cm.doc, from);\n to = visualLineEndNo(cm.doc, to);\n }\n\n var different = from != display.viewFrom || to != display.viewTo ||\n display.lastWrapHeight != update.wrapperHeight || display.lastWrapWidth != update.wrapperWidth;\n adjustView(cm, from, to);\n\n display.viewOffset = heightAtLine(getLine(cm.doc, display.viewFrom));\n // Position the mover div to align with the current scroll position\n cm.display.mover.style.top = display.viewOffset + \"px\";\n\n var toUpdate = countDirtyView(cm);\n if (!different && toUpdate == 0 && !update.force && display.renderedView == display.view &&\n (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo))\n { return false }\n\n // For big changes, we hide the enclosing element during the\n // update, since that speeds up the operations on most browsers.\n var selSnapshot = selectionSnapshot(cm);\n if (toUpdate > 4) { display.lineDiv.style.display = \"none\"; }\n patchDisplay(cm, display.updateLineNumbers, update.dims);\n if (toUpdate > 4) { display.lineDiv.style.display = \"\"; }\n display.renderedView = display.view;\n // There might have been a widget with a focused element that got\n // hidden or updated, if so re-focus it.\n restoreSelection(selSnapshot);\n\n // Prevent selection and cursors from interfering with the scroll\n // width and height.\n removeChildren(display.cursorDiv);\n removeChildren(display.selectionDiv);\n display.gutters.style.height = display.sizer.style.minHeight = 0;\n\n if (different) {\n display.lastWrapHeight = update.wrapperHeight;\n display.lastWrapWidth = update.wrapperWidth;\n startWorker(cm, 400);\n }\n\n display.updateLineNumbers = null;\n\n return true\n }\n\n function postUpdateDisplay(cm, update) {\n var viewport = update.viewport;\n\n for (var first = true;; first = false) {\n if (!first || !cm.options.lineWrapping || update.oldDisplayWidth == displayWidth(cm)) {\n // Clip forced viewport to actual scrollable area.\n if (viewport && viewport.top != null)\n { viewport = {top: Math.min(cm.doc.height + paddingVert(cm.display) - displayHeight(cm), viewport.top)}; }\n // Updated line heights might result in the drawn area not\n // actually covering the viewport. Keep looping until it does.\n update.visible = visibleLines(cm.display, cm.doc, viewport);\n if (update.visible.from >= cm.display.viewFrom && update.visible.to <= cm.display.viewTo)\n { break }\n } else if (first) {\n update.visible = visibleLines(cm.display, cm.doc, viewport);\n }\n if (!updateDisplayIfNeeded(cm, update)) { break }\n updateHeightsInViewport(cm);\n var barMeasure = measureForScrollbars(cm);\n updateSelection(cm);\n updateScrollbars(cm, barMeasure);\n setDocumentHeight(cm, barMeasure);\n update.force = false;\n }\n\n update.signal(cm, \"update\", cm);\n if (cm.display.viewFrom != cm.display.reportedViewFrom || cm.display.viewTo != cm.display.reportedViewTo) {\n update.signal(cm, \"viewportChange\", cm, cm.display.viewFrom, cm.display.viewTo);\n cm.display.reportedViewFrom = cm.display.viewFrom; cm.display.reportedViewTo = cm.display.viewTo;\n }\n }\n\n function updateDisplaySimple(cm, viewport) {\n var update = new DisplayUpdate(cm, viewport);\n if (updateDisplayIfNeeded(cm, update)) {\n updateHeightsInViewport(cm);\n postUpdateDisplay(cm, update);\n var barMeasure = measureForScrollbars(cm);\n updateSelection(cm);\n updateScrollbars(cm, barMeasure);\n setDocumentHeight(cm, barMeasure);\n update.finish();\n }\n }\n\n // Sync the actual display DOM structure with display.view, removing\n // nodes for lines that are no longer in view, and creating the ones\n // that are not there yet, and updating the ones that are out of\n // date.\n function patchDisplay(cm, updateNumbersFrom, dims) {\n var display = cm.display, lineNumbers = cm.options.lineNumbers;\n var container = display.lineDiv, cur = container.firstChild;\n\n function rm(node) {\n var next = node.nextSibling;\n // Works around a throw-scroll bug in OS X Webkit\n if (webkit && mac && cm.display.currentWheelTarget == node)\n { node.style.display = \"none\"; }\n else\n { node.parentNode.removeChild(node); }\n return next\n }\n\n var view = display.view, lineN = display.viewFrom;\n // Loop over the elements in the view, syncing cur (the DOM nodes\n // in display.lineDiv) with the view as we go.\n for (var i = 0; i < view.length; i++) {\n var lineView = view[i];\n if (lineView.hidden) ; else if (!lineView.node || lineView.node.parentNode != container) { // Not drawn yet\n var node = buildLineElement(cm, lineView, lineN, dims);\n container.insertBefore(node, cur);\n } else { // Already drawn\n while (cur != lineView.node) { cur = rm(cur); }\n var updateNumber = lineNumbers && updateNumbersFrom != null &&\n updateNumbersFrom <= lineN && lineView.lineNumber;\n if (lineView.changes) {\n if (indexOf(lineView.changes, \"gutter\") > -1) { updateNumber = false; }\n updateLineForChanges(cm, lineView, lineN, dims);\n }\n if (updateNumber) {\n removeChildren(lineView.lineNumber);\n lineView.lineNumber.appendChild(document.createTextNode(lineNumberFor(cm.options, lineN)));\n }\n cur = lineView.node.nextSibling;\n }\n lineN += lineView.size;\n }\n while (cur) { cur = rm(cur); }\n }\n\n function updateGutterSpace(display) {\n var width = display.gutters.offsetWidth;\n display.sizer.style.marginLeft = width + \"px\";\n // Send an event to consumers responding to changes in gutter width.\n signalLater(display, \"gutterChanged\", display);\n }\n\n function setDocumentHeight(cm, measure) {\n cm.display.sizer.style.minHeight = measure.docHeight + \"px\";\n cm.display.heightForcer.style.top = measure.docHeight + \"px\";\n cm.display.gutters.style.height = (measure.docHeight + cm.display.barHeight + scrollGap(cm)) + \"px\";\n }\n\n // Re-align line numbers and gutter marks to compensate for\n // horizontal scrolling.\n function alignHorizontally(cm) {\n var display = cm.display, view = display.view;\n if (!display.alignWidgets && (!display.gutters.firstChild || !cm.options.fixedGutter)) { return }\n var comp = compensateForHScroll(display) - display.scroller.scrollLeft + cm.doc.scrollLeft;\n var gutterW = display.gutters.offsetWidth, left = comp + \"px\";\n for (var i = 0; i < view.length; i++) { if (!view[i].hidden) {\n if (cm.options.fixedGutter) {\n if (view[i].gutter)\n { view[i].gutter.style.left = left; }\n if (view[i].gutterBackground)\n { view[i].gutterBackground.style.left = left; }\n }\n var align = view[i].alignable;\n if (align) { for (var j = 0; j < align.length; j++)\n { align[j].style.left = left; } }\n } }\n if (cm.options.fixedGutter)\n { display.gutters.style.left = (comp + gutterW) + \"px\"; }\n }\n\n // Used to ensure that the line number gutter is still the right\n // size for the current document size. Returns true when an update\n // is needed.\n function maybeUpdateLineNumberWidth(cm) {\n if (!cm.options.lineNumbers) { return false }\n var doc = cm.doc, last = lineNumberFor(cm.options, doc.first + doc.size - 1), display = cm.display;\n if (last.length != display.lineNumChars) {\n var test = display.measure.appendChild(elt(\"div\", [elt(\"div\", last)],\n \"CodeMirror-linenumber CodeMirror-gutter-elt\"));\n var innerW = test.firstChild.offsetWidth, padding = test.offsetWidth - innerW;\n display.lineGutter.style.width = \"\";\n display.lineNumInnerWidth = Math.max(innerW, display.lineGutter.offsetWidth - padding) + 1;\n display.lineNumWidth = display.lineNumInnerWidth + padding;\n display.lineNumChars = display.lineNumInnerWidth ? last.length : -1;\n display.lineGutter.style.width = display.lineNumWidth + \"px\";\n updateGutterSpace(cm.display);\n return true\n }\n return false\n }\n\n function getGutters(gutters, lineNumbers) {\n var result = [], sawLineNumbers = false;\n for (var i = 0; i < gutters.length; i++) {\n var name = gutters[i], style = null;\n if (typeof name != \"string\") { style = name.style; name = name.className; }\n if (name == \"CodeMirror-linenumbers\") {\n if (!lineNumbers) { continue }\n else { sawLineNumbers = true; }\n }\n result.push({className: name, style: style});\n }\n if (lineNumbers && !sawLineNumbers) { result.push({className: \"CodeMirror-linenumbers\", style: null}); }\n return result\n }\n\n // Rebuild the gutter elements, ensure the margin to the left of the\n // code matches their width.\n function renderGutters(display) {\n var gutters = display.gutters, specs = display.gutterSpecs;\n removeChildren(gutters);\n display.lineGutter = null;\n for (var i = 0; i < specs.length; ++i) {\n var ref = specs[i];\n var className = ref.className;\n var style = ref.style;\n var gElt = gutters.appendChild(elt(\"div\", null, \"CodeMirror-gutter \" + className));\n if (style) { gElt.style.cssText = style; }\n if (className == \"CodeMirror-linenumbers\") {\n display.lineGutter = gElt;\n gElt.style.width = (display.lineNumWidth || 1) + \"px\";\n }\n }\n gutters.style.display = specs.length ? \"\" : \"none\";\n updateGutterSpace(display);\n }\n\n function updateGutters(cm) {\n renderGutters(cm.display);\n regChange(cm);\n alignHorizontally(cm);\n }\n\n // The display handles the DOM integration, both for input reading\n // and content drawing. It holds references to DOM nodes and\n // display-related state.\n\n function Display(place, doc, input, options) {\n var d = this;\n this.input = input;\n\n // Covers bottom-right square when both scrollbars are present.\n d.scrollbarFiller = elt(\"div\", null, \"CodeMirror-scrollbar-filler\");\n d.scrollbarFiller.setAttribute(\"cm-not-content\", \"true\");\n // Covers bottom of gutter when coverGutterNextToScrollbar is on\n // and h scrollbar is present.\n d.gutterFiller = elt(\"div\", null, \"CodeMirror-gutter-filler\");\n d.gutterFiller.setAttribute(\"cm-not-content\", \"true\");\n // Will contain the actual code, positioned to cover the viewport.\n d.lineDiv = eltP(\"div\", null, \"CodeMirror-code\");\n // Elements are added to these to represent selection and cursors.\n d.selectionDiv = elt(\"div\", null, null, \"position: relative; z-index: 1\");\n d.cursorDiv = elt(\"div\", null, \"CodeMirror-cursors\");\n // A visibility: hidden element used to find the size of things.\n d.measure = elt(\"div\", null, \"CodeMirror-measure\");\n // When lines outside of the viewport are measured, they are drawn in this.\n d.lineMeasure = elt(\"div\", null, \"CodeMirror-measure\");\n // Wraps everything that needs to exist inside the vertically-padded coordinate system\n d.lineSpace = eltP(\"div\", [d.measure, d.lineMeasure, d.selectionDiv, d.cursorDiv, d.lineDiv],\n null, \"position: relative; outline: none\");\n var lines = eltP(\"div\", [d.lineSpace], \"CodeMirror-lines\");\n // Moved around its parent to cover visible view.\n d.mover = elt(\"div\", [lines], null, \"position: relative\");\n // Set to the height of the document, allowing scrolling.\n d.sizer = elt(\"div\", [d.mover], \"CodeMirror-sizer\");\n d.sizerWidth = null;\n // Behavior of elts with overflow: auto and padding is\n // inconsistent across browsers. This is used to ensure the\n // scrollable area is big enough.\n d.heightForcer = elt(\"div\", null, null, \"position: absolute; height: \" + scrollerGap + \"px; width: 1px;\");\n // Will contain the gutters, if any.\n d.gutters = elt(\"div\", null, \"CodeMirror-gutters\");\n d.lineGutter = null;\n // Actual scrollable element.\n d.scroller = elt(\"div\", [d.sizer, d.heightForcer, d.gutters], \"CodeMirror-scroll\");\n d.scroller.setAttribute(\"tabIndex\", \"-1\");\n // The element in which the editor lives.\n d.wrapper = elt(\"div\", [d.scrollbarFiller, d.gutterFiller, d.scroller], \"CodeMirror\");\n // See #6982. FIXME remove when this has been fixed for a while in Chrome\n if (chrome && chrome_version >= 105) { d.wrapper.style.clipPath = \"inset(0px)\"; }\n\n // This attribute is respected by automatic translation systems such as Google Translate,\n // and may also be respected by tools used by human translators.\n d.wrapper.setAttribute('translate', 'no');\n\n // Work around IE7 z-index bug (not perfect, hence IE7 not really being supported)\n if (ie && ie_version < 8) { d.gutters.style.zIndex = -1; d.scroller.style.paddingRight = 0; }\n if (!webkit && !(gecko && mobile)) { d.scroller.draggable = true; }\n\n if (place) {\n if (place.appendChild) { place.appendChild(d.wrapper); }\n else { place(d.wrapper); }\n }\n\n // Current rendered range (may be bigger than the view window).\n d.viewFrom = d.viewTo = doc.first;\n d.reportedViewFrom = d.reportedViewTo = doc.first;\n // Information about the rendered lines.\n d.view = [];\n d.renderedView = null;\n // Holds info about a single rendered line when it was rendered\n // for measurement, while not in view.\n d.externalMeasured = null;\n // Empty space (in pixels) above the view\n d.viewOffset = 0;\n d.lastWrapHeight = d.lastWrapWidth = 0;\n d.updateLineNumbers = null;\n\n d.nativeBarWidth = d.barHeight = d.barWidth = 0;\n d.scrollbarsClipped = false;\n\n // Used to only resize the line number gutter when necessary (when\n // the amount of lines crosses a boundary that makes its width change)\n d.lineNumWidth = d.lineNumInnerWidth = d.lineNumChars = null;\n // Set to true when a non-horizontal-scrolling line widget is\n // added. As an optimization, line widget aligning is skipped when\n // this is false.\n d.alignWidgets = false;\n\n d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n\n // Tracks the maximum line length so that the horizontal scrollbar\n // can be kept static when scrolling.\n d.maxLine = null;\n d.maxLineLength = 0;\n d.maxLineChanged = false;\n\n // Used for measuring wheel scrolling granularity\n d.wheelDX = d.wheelDY = d.wheelStartX = d.wheelStartY = null;\n\n // True when shift is held down.\n d.shift = false;\n\n // Used to track whether anything happened since the context menu\n // was opened.\n d.selForContextMenu = null;\n\n d.activeTouch = null;\n\n d.gutterSpecs = getGutters(options.gutters, options.lineNumbers);\n renderGutters(d);\n\n input.init(d);\n }\n\n // Since the delta values reported on mouse wheel events are\n // unstandardized between browsers and even browser versions, and\n // generally horribly unpredictable, this code starts by measuring\n // the scroll effect that the first few mouse wheel events have,\n // and, from that, detects the way it can convert deltas to pixel\n // offsets afterwards.\n //\n // The reason we want to know the amount a wheel event will scroll\n // is that it gives us a chance to update the display before the\n // actual scrolling happens, reducing flickering.\n\n var wheelSamples = 0, wheelPixelsPerUnit = null;\n // Fill in a browser-detected starting value on browsers where we\n // know one. These don't have to be accurate -- the result of them\n // being wrong would just be a slight flicker on the first wheel\n // scroll (if it is large enough).\n if (ie) { wheelPixelsPerUnit = -.53; }\n else if (gecko) { wheelPixelsPerUnit = 15; }\n else if (chrome) { wheelPixelsPerUnit = -.7; }\n else if (safari) { wheelPixelsPerUnit = -1/3; }\n\n function wheelEventDelta(e) {\n var dx = e.wheelDeltaX, dy = e.wheelDeltaY;\n if (dx == null && e.detail && e.axis == e.HORIZONTAL_AXIS) { dx = e.detail; }\n if (dy == null && e.detail && e.axis == e.VERTICAL_AXIS) { dy = e.detail; }\n else if (dy == null) { dy = e.wheelDelta; }\n return {x: dx, y: dy}\n }\n function wheelEventPixels(e) {\n var delta = wheelEventDelta(e);\n delta.x *= wheelPixelsPerUnit;\n delta.y *= wheelPixelsPerUnit;\n return delta\n }\n\n function onScrollWheel(cm, e) {\n // On Chrome 102, viewport updates somehow stop wheel-based\n // scrolling. Turning off pointer events during the scroll seems\n // to avoid the issue.\n if (chrome && chrome_version == 102) {\n if (cm.display.chromeScrollHack == null) { cm.display.sizer.style.pointerEvents = \"none\"; }\n else { clearTimeout(cm.display.chromeScrollHack); }\n cm.display.chromeScrollHack = setTimeout(function () {\n cm.display.chromeScrollHack = null;\n cm.display.sizer.style.pointerEvents = \"\";\n }, 100);\n }\n var delta = wheelEventDelta(e), dx = delta.x, dy = delta.y;\n var pixelsPerUnit = wheelPixelsPerUnit;\n if (e.deltaMode === 0) {\n dx = e.deltaX;\n dy = e.deltaY;\n pixelsPerUnit = 1;\n }\n\n var display = cm.display, scroll = display.scroller;\n // Quit if there's nothing to scroll here\n var canScrollX = scroll.scrollWidth > scroll.clientWidth;\n var canScrollY = scroll.scrollHeight > scroll.clientHeight;\n if (!(dx && canScrollX || dy && canScrollY)) { return }\n\n // Webkit browsers on OS X abort momentum scrolls when the target\n // of the scroll event is removed from the scrollable element.\n // This hack (see related code in patchDisplay) makes sure the\n // element is kept around.\n if (dy && mac && webkit) {\n outer: for (var cur = e.target, view = display.view; cur != scroll; cur = cur.parentNode) {\n for (var i = 0; i < view.length; i++) {\n if (view[i].node == cur) {\n cm.display.currentWheelTarget = cur;\n break outer\n }\n }\n }\n }\n\n // On some browsers, horizontal scrolling will cause redraws to\n // happen before the gutter has been realigned, causing it to\n // wriggle around in a most unseemly way. When we have an\n // estimated pixels/delta value, we just handle horizontal\n // scrolling entirely here. It'll be slightly off from native, but\n // better than glitching out.\n if (dx && !gecko && !presto && pixelsPerUnit != null) {\n if (dy && canScrollY)\n { updateScrollTop(cm, Math.max(0, scroll.scrollTop + dy * pixelsPerUnit)); }\n setScrollLeft(cm, Math.max(0, scroll.scrollLeft + dx * pixelsPerUnit));\n // Only prevent default scrolling if vertical scrolling is\n // actually possible. Otherwise, it causes vertical scroll\n // jitter on OSX trackpads when deltaX is small and deltaY\n // is large (issue #3579)\n if (!dy || (dy && canScrollY))\n { e_preventDefault(e); }\n display.wheelStartX = null; // Abort measurement, if in progress\n return\n }\n\n // 'Project' the visible viewport to cover the area that is being\n // scrolled into view (if we know enough to estimate it).\n if (dy && pixelsPerUnit != null) {\n var pixels = dy * pixelsPerUnit;\n var top = cm.doc.scrollTop, bot = top + display.wrapper.clientHeight;\n if (pixels < 0) { top = Math.max(0, top + pixels - 50); }\n else { bot = Math.min(cm.doc.height, bot + pixels + 50); }\n updateDisplaySimple(cm, {top: top, bottom: bot});\n }\n\n if (wheelSamples < 20 && e.deltaMode !== 0) {\n if (display.wheelStartX == null) {\n display.wheelStartX = scroll.scrollLeft; display.wheelStartY = scroll.scrollTop;\n display.wheelDX = dx; display.wheelDY = dy;\n setTimeout(function () {\n if (display.wheelStartX == null) { return }\n var movedX = scroll.scrollLeft - display.wheelStartX;\n var movedY = scroll.scrollTop - display.wheelStartY;\n var sample = (movedY && display.wheelDY && movedY / display.wheelDY) ||\n (movedX && display.wheelDX && movedX / display.wheelDX);\n display.wheelStartX = display.wheelStartY = null;\n if (!sample) { return }\n wheelPixelsPerUnit = (wheelPixelsPerUnit * wheelSamples + sample) / (wheelSamples + 1);\n ++wheelSamples;\n }, 200);\n } else {\n display.wheelDX += dx; display.wheelDY += dy;\n }\n }\n }\n\n // Selection objects are immutable. A new one is created every time\n // the selection changes. A selection is one or more non-overlapping\n // (and non-touching) ranges, sorted, and an integer that indicates\n // which one is the primary selection (the one that's scrolled into\n // view, that getCursor returns, etc).\n var Selection = function(ranges, primIndex) {\n this.ranges = ranges;\n this.primIndex = primIndex;\n };\n\n Selection.prototype.primary = function () { return this.ranges[this.primIndex] };\n\n Selection.prototype.equals = function (other) {\n if (other == this) { return true }\n if (other.primIndex != this.primIndex || other.ranges.length != this.ranges.length) { return false }\n for (var i = 0; i < this.ranges.length; i++) {\n var here = this.ranges[i], there = other.ranges[i];\n if (!equalCursorPos(here.anchor, there.anchor) || !equalCursorPos(here.head, there.head)) { return false }\n }\n return true\n };\n\n Selection.prototype.deepCopy = function () {\n var out = [];\n for (var i = 0; i < this.ranges.length; i++)\n { out[i] = new Range(copyPos(this.ranges[i].anchor), copyPos(this.ranges[i].head)); }\n return new Selection(out, this.primIndex)\n };\n\n Selection.prototype.somethingSelected = function () {\n for (var i = 0; i < this.ranges.length; i++)\n { if (!this.ranges[i].empty()) { return true } }\n return false\n };\n\n Selection.prototype.contains = function (pos, end) {\n if (!end) { end = pos; }\n for (var i = 0; i < this.ranges.length; i++) {\n var range = this.ranges[i];\n if (cmp(end, range.from()) >= 0 && cmp(pos, range.to()) <= 0)\n { return i }\n }\n return -1\n };\n\n var Range = function(anchor, head) {\n this.anchor = anchor; this.head = head;\n };\n\n Range.prototype.from = function () { return minPos(this.anchor, this.head) };\n Range.prototype.to = function () { return maxPos(this.anchor, this.head) };\n Range.prototype.empty = function () { return this.head.line == this.anchor.line && this.head.ch == this.anchor.ch };\n\n // Take an unsorted, potentially overlapping set of ranges, and\n // build a selection out of it. 'Consumes' ranges array (modifying\n // it).\n function normalizeSelection(cm, ranges, primIndex) {\n var mayTouch = cm && cm.options.selectionsMayTouch;\n var prim = ranges[primIndex];\n ranges.sort(function (a, b) { return cmp(a.from(), b.from()); });\n primIndex = indexOf(ranges, prim);\n for (var i = 1; i < ranges.length; i++) {\n var cur = ranges[i], prev = ranges[i - 1];\n var diff = cmp(prev.to(), cur.from());\n if (mayTouch && !cur.empty() ? diff > 0 : diff >= 0) {\n var from = minPos(prev.from(), cur.from()), to = maxPos(prev.to(), cur.to());\n var inv = prev.empty() ? cur.from() == cur.head : prev.from() == prev.head;\n if (i <= primIndex) { --primIndex; }\n ranges.splice(--i, 2, new Range(inv ? to : from, inv ? from : to));\n }\n }\n return new Selection(ranges, primIndex)\n }\n\n function simpleSelection(anchor, head) {\n return new Selection([new Range(anchor, head || anchor)], 0)\n }\n\n // Compute the position of the end of a change (its 'to' property\n // refers to the pre-change end).\n function changeEnd(change) {\n if (!change.text) { return change.to }\n return Pos(change.from.line + change.text.length - 1,\n lst(change.text).length + (change.text.length == 1 ? change.from.ch : 0))\n }\n\n // Adjust a position to refer to the post-change position of the\n // same text, or the end of the change if the change covers it.\n function adjustForChange(pos, change) {\n if (cmp(pos, change.from) < 0) { return pos }\n if (cmp(pos, change.to) <= 0) { return changeEnd(change) }\n\n var line = pos.line + change.text.length - (change.to.line - change.from.line) - 1, ch = pos.ch;\n if (pos.line == change.to.line) { ch += changeEnd(change).ch - change.to.ch; }\n return Pos(line, ch)\n }\n\n function computeSelAfterChange(doc, change) {\n var out = [];\n for (var i = 0; i < doc.sel.ranges.length; i++) {\n var range = doc.sel.ranges[i];\n out.push(new Range(adjustForChange(range.anchor, change),\n adjustForChange(range.head, change)));\n }\n return normalizeSelection(doc.cm, out, doc.sel.primIndex)\n }\n\n function offsetPos(pos, old, nw) {\n if (pos.line == old.line)\n { return Pos(nw.line, pos.ch - old.ch + nw.ch) }\n else\n { return Pos(nw.line + (pos.line - old.line), pos.ch) }\n }\n\n // Used by replaceSelections to allow moving the selection to the\n // start or around the replaced test. Hint may be \"start\" or \"around\".\n function computeReplacedSel(doc, changes, hint) {\n var out = [];\n var oldPrev = Pos(doc.first, 0), newPrev = oldPrev;\n for (var i = 0; i < changes.length; i++) {\n var change = changes[i];\n var from = offsetPos(change.from, oldPrev, newPrev);\n var to = offsetPos(changeEnd(change), oldPrev, newPrev);\n oldPrev = change.to;\n newPrev = to;\n if (hint == \"around\") {\n var range = doc.sel.ranges[i], inv = cmp(range.head, range.anchor) < 0;\n out[i] = new Range(inv ? to : from, inv ? from : to);\n } else {\n out[i] = new Range(from, from);\n }\n }\n return new Selection(out, doc.sel.primIndex)\n }\n\n // Used to get the editor into a consistent state again when options change.\n\n function loadMode(cm) {\n cm.doc.mode = getMode(cm.options, cm.doc.modeOption);\n resetModeState(cm);\n }\n\n function resetModeState(cm) {\n cm.doc.iter(function (line) {\n if (line.stateAfter) { line.stateAfter = null; }\n if (line.styles) { line.styles = null; }\n });\n cm.doc.modeFrontier = cm.doc.highlightFrontier = cm.doc.first;\n startWorker(cm, 100);\n cm.state.modeGen++;\n if (cm.curOp) { regChange(cm); }\n }\n\n // DOCUMENT DATA STRUCTURE\n\n // By default, updates that start and end at the beginning of a line\n // are treated specially, in order to make the association of line\n // widgets and marker elements with the text behave more intuitive.\n function isWholeLineUpdate(doc, change) {\n return change.from.ch == 0 && change.to.ch == 0 && lst(change.text) == \"\" &&\n (!doc.cm || doc.cm.options.wholeLineUpdateBefore)\n }\n\n // Perform a change on the document data structure.\n function updateDoc(doc, change, markedSpans, estimateHeight) {\n function spansFor(n) {return markedSpans ? markedSpans[n] : null}\n function update(line, text, spans) {\n updateLine(line, text, spans, estimateHeight);\n signalLater(line, \"change\", line, change);\n }\n function linesFor(start, end) {\n var result = [];\n for (var i = start; i < end; ++i)\n { result.push(new Line(text[i], spansFor(i), estimateHeight)); }\n return result\n }\n\n var from = change.from, to = change.to, text = change.text;\n var firstLine = getLine(doc, from.line), lastLine = getLine(doc, to.line);\n var lastText = lst(text), lastSpans = spansFor(text.length - 1), nlines = to.line - from.line;\n\n // Adjust the line structure\n if (change.full) {\n doc.insert(0, linesFor(0, text.length));\n doc.remove(text.length, doc.size - text.length);\n } else if (isWholeLineUpdate(doc, change)) {\n // This is a whole-line replace. Treated specially to make\n // sure line objects move the way they are supposed to.\n var added = linesFor(0, text.length - 1);\n update(lastLine, lastLine.text, lastSpans);\n if (nlines) { doc.remove(from.line, nlines); }\n if (added.length) { doc.insert(from.line, added); }\n } else if (firstLine == lastLine) {\n if (text.length == 1) {\n update(firstLine, firstLine.text.slice(0, from.ch) + lastText + firstLine.text.slice(to.ch), lastSpans);\n } else {\n var added$1 = linesFor(1, text.length - 1);\n added$1.push(new Line(lastText + firstLine.text.slice(to.ch), lastSpans, estimateHeight));\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n doc.insert(from.line + 1, added$1);\n }\n } else if (text.length == 1) {\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0] + lastLine.text.slice(to.ch), spansFor(0));\n doc.remove(from.line + 1, nlines);\n } else {\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n update(lastLine, lastText + lastLine.text.slice(to.ch), lastSpans);\n var added$2 = linesFor(1, text.length - 1);\n if (nlines > 1) { doc.remove(from.line + 1, nlines - 1); }\n doc.insert(from.line + 1, added$2);\n }\n\n signalLater(doc, \"change\", doc, change);\n }\n\n // Call f for all linked documents.\n function linkedDocs(doc, f, sharedHistOnly) {\n function propagate(doc, skip, sharedHist) {\n if (doc.linked) { for (var i = 0; i < doc.linked.length; ++i) {\n var rel = doc.linked[i];\n if (rel.doc == skip) { continue }\n var shared = sharedHist && rel.sharedHist;\n if (sharedHistOnly && !shared) { continue }\n f(rel.doc, shared);\n propagate(rel.doc, doc, shared);\n } }\n }\n propagate(doc, null, true);\n }\n\n // Attach a document to an editor.\n function attachDoc(cm, doc) {\n if (doc.cm) { throw new Error(\"This document is already in use.\") }\n cm.doc = doc;\n doc.cm = cm;\n estimateLineHeights(cm);\n loadMode(cm);\n setDirectionClass(cm);\n cm.options.direction = doc.direction;\n if (!cm.options.lineWrapping) { findMaxLine(cm); }\n cm.options.mode = doc.modeOption;\n regChange(cm);\n }\n\n function setDirectionClass(cm) {\n (cm.doc.direction == \"rtl\" ? addClass : rmClass)(cm.display.lineDiv, \"CodeMirror-rtl\");\n }\n\n function directionChanged(cm) {\n runInOp(cm, function () {\n setDirectionClass(cm);\n regChange(cm);\n });\n }\n\n function History(prev) {\n // Arrays of change events and selections. Doing something adds an\n // event to done and clears undo. Undoing moves events from done\n // to undone, redoing moves them in the other direction.\n this.done = []; this.undone = [];\n this.undoDepth = prev ? prev.undoDepth : Infinity;\n // Used to track when changes can be merged into a single undo\n // event\n this.lastModTime = this.lastSelTime = 0;\n this.lastOp = this.lastSelOp = null;\n this.lastOrigin = this.lastSelOrigin = null;\n // Used by the isClean() method\n this.generation = this.maxGeneration = prev ? prev.maxGeneration : 1;\n }\n\n // Create a history change event from an updateDoc-style change\n // object.\n function historyChangeFromChange(doc, change) {\n var histChange = {from: copyPos(change.from), to: changeEnd(change), text: getBetween(doc, change.from, change.to)};\n attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1);\n linkedDocs(doc, function (doc) { return attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1); }, true);\n return histChange\n }\n\n // Pop all selection events off the end of a history array. Stop at\n // a change event.\n function clearSelectionEvents(array) {\n while (array.length) {\n var last = lst(array);\n if (last.ranges) { array.pop(); }\n else { break }\n }\n }\n\n // Find the top change event in the history. Pop off selection\n // events that are in the way.\n function lastChangeEvent(hist, force) {\n if (force) {\n clearSelectionEvents(hist.done);\n return lst(hist.done)\n } else if (hist.done.length && !lst(hist.done).ranges) {\n return lst(hist.done)\n } else if (hist.done.length > 1 && !hist.done[hist.done.length - 2].ranges) {\n hist.done.pop();\n return lst(hist.done)\n }\n }\n\n // Register a change in the history. Merges changes that are within\n // a single operation, or are close together with an origin that\n // allows merging (starting with \"+\") into a single event.\n function addChangeToHistory(doc, change, selAfter, opId) {\n var hist = doc.history;\n hist.undone.length = 0;\n var time = +new Date, cur;\n var last;\n\n if ((hist.lastOp == opId ||\n hist.lastOrigin == change.origin && change.origin &&\n ((change.origin.charAt(0) == \"+\" && hist.lastModTime > time - (doc.cm ? doc.cm.options.historyEventDelay : 500)) ||\n change.origin.charAt(0) == \"*\")) &&\n (cur = lastChangeEvent(hist, hist.lastOp == opId))) {\n // Merge this change into the last event\n last = lst(cur.changes);\n if (cmp(change.from, change.to) == 0 && cmp(change.from, last.to) == 0) {\n // Optimized case for simple insertion -- don't want to add\n // new changesets for every character typed\n last.to = changeEnd(change);\n } else {\n // Add new sub-event\n cur.changes.push(historyChangeFromChange(doc, change));\n }\n } else {\n // Can not be merged, start a new event.\n var before = lst(hist.done);\n if (!before || !before.ranges)\n { pushSelectionToHistory(doc.sel, hist.done); }\n cur = {changes: [historyChangeFromChange(doc, change)],\n generation: hist.generation};\n hist.done.push(cur);\n while (hist.done.length > hist.undoDepth) {\n hist.done.shift();\n if (!hist.done[0].ranges) { hist.done.shift(); }\n }\n }\n hist.done.push(selAfter);\n hist.generation = ++hist.maxGeneration;\n hist.lastModTime = hist.lastSelTime = time;\n hist.lastOp = hist.lastSelOp = opId;\n hist.lastOrigin = hist.lastSelOrigin = change.origin;\n\n if (!last) { signal(doc, \"historyAdded\"); }\n }\n\n function selectionEventCanBeMerged(doc, origin, prev, sel) {\n var ch = origin.charAt(0);\n return ch == \"*\" ||\n ch == \"+\" &&\n prev.ranges.length == sel.ranges.length &&\n prev.somethingSelected() == sel.somethingSelected() &&\n new Date - doc.history.lastSelTime <= (doc.cm ? doc.cm.options.historyEventDelay : 500)\n }\n\n // Called whenever the selection changes, sets the new selection as\n // the pending selection in the history, and pushes the old pending\n // selection into the 'done' array when it was significantly\n // different (in number of selected ranges, emptiness, or time).\n function addSelectionToHistory(doc, sel, opId, options) {\n var hist = doc.history, origin = options && options.origin;\n\n // A new event is started when the previous origin does not match\n // the current, or the origins don't allow matching. Origins\n // starting with * are always merged, those starting with + are\n // merged when similar and close together in time.\n if (opId == hist.lastSelOp ||\n (origin && hist.lastSelOrigin == origin &&\n (hist.lastModTime == hist.lastSelTime && hist.lastOrigin == origin ||\n selectionEventCanBeMerged(doc, origin, lst(hist.done), sel))))\n { hist.done[hist.done.length - 1] = sel; }\n else\n { pushSelectionToHistory(sel, hist.done); }\n\n hist.lastSelTime = +new Date;\n hist.lastSelOrigin = origin;\n hist.lastSelOp = opId;\n if (options && options.clearRedo !== false)\n { clearSelectionEvents(hist.undone); }\n }\n\n function pushSelectionToHistory(sel, dest) {\n var top = lst(dest);\n if (!(top && top.ranges && top.equals(sel)))\n { dest.push(sel); }\n }\n\n // Used to store marked span information in the history.\n function attachLocalSpans(doc, change, from, to) {\n var existing = change[\"spans_\" + doc.id], n = 0;\n doc.iter(Math.max(doc.first, from), Math.min(doc.first + doc.size, to), function (line) {\n if (line.markedSpans)\n { (existing || (existing = change[\"spans_\" + doc.id] = {}))[n] = line.markedSpans; }\n ++n;\n });\n }\n\n // When un/re-doing restores text containing marked spans, those\n // that have been explicitly cleared should not be restored.\n function removeClearedSpans(spans) {\n if (!spans) { return null }\n var out;\n for (var i = 0; i < spans.length; ++i) {\n if (spans[i].marker.explicitlyCleared) { if (!out) { out = spans.slice(0, i); } }\n else if (out) { out.push(spans[i]); }\n }\n return !out ? spans : out.length ? out : null\n }\n\n // Retrieve and filter the old marked spans stored in a change event.\n function getOldSpans(doc, change) {\n var found = change[\"spans_\" + doc.id];\n if (!found) { return null }\n var nw = [];\n for (var i = 0; i < change.text.length; ++i)\n { nw.push(removeClearedSpans(found[i])); }\n return nw\n }\n\n // Used for un/re-doing changes from the history. Combines the\n // result of computing the existing spans with the set of spans that\n // existed in the history (so that deleting around a span and then\n // undoing brings back the span).\n function mergeOldSpans(doc, change) {\n var old = getOldSpans(doc, change);\n var stretched = stretchSpansOverChange(doc, change);\n if (!old) { return stretched }\n if (!stretched) { return old }\n\n for (var i = 0; i < old.length; ++i) {\n var oldCur = old[i], stretchCur = stretched[i];\n if (oldCur && stretchCur) {\n spans: for (var j = 0; j < stretchCur.length; ++j) {\n var span = stretchCur[j];\n for (var k = 0; k < oldCur.length; ++k)\n { if (oldCur[k].marker == span.marker) { continue spans } }\n oldCur.push(span);\n }\n } else if (stretchCur) {\n old[i] = stretchCur;\n }\n }\n return old\n }\n\n // Used both to provide a JSON-safe object in .getHistory, and, when\n // detaching a document, to split the history in two\n function copyHistoryArray(events, newGroup, instantiateSel) {\n var copy = [];\n for (var i = 0; i < events.length; ++i) {\n var event = events[i];\n if (event.ranges) {\n copy.push(instantiateSel ? Selection.prototype.deepCopy.call(event) : event);\n continue\n }\n var changes = event.changes, newChanges = [];\n copy.push({changes: newChanges});\n for (var j = 0; j < changes.length; ++j) {\n var change = changes[j], m = (void 0);\n newChanges.push({from: change.from, to: change.to, text: change.text});\n if (newGroup) { for (var prop in change) { if (m = prop.match(/^spans_(\\d+)$/)) {\n if (indexOf(newGroup, Number(m[1])) > -1) {\n lst(newChanges)[prop] = change[prop];\n delete change[prop];\n }\n } } }\n }\n }\n return copy\n }\n\n // The 'scroll' parameter given to many of these indicated whether\n // the new cursor position should be scrolled into view after\n // modifying the selection.\n\n // If shift is held or the extend flag is set, extends a range to\n // include a given position (and optionally a second position).\n // Otherwise, simply returns the range between the given positions.\n // Used for cursor motion and such.\n function extendRange(range, head, other, extend) {\n if (extend) {\n var anchor = range.anchor;\n if (other) {\n var posBefore = cmp(head, anchor) < 0;\n if (posBefore != (cmp(other, anchor) < 0)) {\n anchor = head;\n head = other;\n } else if (posBefore != (cmp(head, other) < 0)) {\n head = other;\n }\n }\n return new Range(anchor, head)\n } else {\n return new Range(other || head, head)\n }\n }\n\n // Extend the primary selection range, discard the rest.\n function extendSelection(doc, head, other, options, extend) {\n if (extend == null) { extend = doc.cm && (doc.cm.display.shift || doc.extend); }\n setSelection(doc, new Selection([extendRange(doc.sel.primary(), head, other, extend)], 0), options);\n }\n\n // Extend all selections (pos is an array of selections with length\n // equal the number of selections)\n function extendSelections(doc, heads, options) {\n var out = [];\n var extend = doc.cm && (doc.cm.display.shift || doc.extend);\n for (var i = 0; i < doc.sel.ranges.length; i++)\n { out[i] = extendRange(doc.sel.ranges[i], heads[i], null, extend); }\n var newSel = normalizeSelection(doc.cm, out, doc.sel.primIndex);\n setSelection(doc, newSel, options);\n }\n\n // Updates a single range in the selection.\n function replaceOneSelection(doc, i, range, options) {\n var ranges = doc.sel.ranges.slice(0);\n ranges[i] = range;\n setSelection(doc, normalizeSelection(doc.cm, ranges, doc.sel.primIndex), options);\n }\n\n // Reset the selection to a single range.\n function setSimpleSelection(doc, anchor, head, options) {\n setSelection(doc, simpleSelection(anchor, head), options);\n }\n\n // Give beforeSelectionChange handlers a change to influence a\n // selection update.\n function filterSelectionChange(doc, sel, options) {\n var obj = {\n ranges: sel.ranges,\n update: function(ranges) {\n this.ranges = [];\n for (var i = 0; i < ranges.length; i++)\n { this.ranges[i] = new Range(clipPos(doc, ranges[i].anchor),\n clipPos(doc, ranges[i].head)); }\n },\n origin: options && options.origin\n };\n signal(doc, \"beforeSelectionChange\", doc, obj);\n if (doc.cm) { signal(doc.cm, \"beforeSelectionChange\", doc.cm, obj); }\n if (obj.ranges != sel.ranges) { return normalizeSelection(doc.cm, obj.ranges, obj.ranges.length - 1) }\n else { return sel }\n }\n\n function setSelectionReplaceHistory(doc, sel, options) {\n var done = doc.history.done, last = lst(done);\n if (last && last.ranges) {\n done[done.length - 1] = sel;\n setSelectionNoUndo(doc, sel, options);\n } else {\n setSelection(doc, sel, options);\n }\n }\n\n // Set a new selection.\n function setSelection(doc, sel, options) {\n setSelectionNoUndo(doc, sel, options);\n addSelectionToHistory(doc, doc.sel, doc.cm ? doc.cm.curOp.id : NaN, options);\n }\n\n function setSelectionNoUndo(doc, sel, options) {\n if (hasHandler(doc, \"beforeSelectionChange\") || doc.cm && hasHandler(doc.cm, \"beforeSelectionChange\"))\n { sel = filterSelectionChange(doc, sel, options); }\n\n var bias = options && options.bias ||\n (cmp(sel.primary().head, doc.sel.primary().head) < 0 ? -1 : 1);\n setSelectionInner(doc, skipAtomicInSelection(doc, sel, bias, true));\n\n if (!(options && options.scroll === false) && doc.cm && doc.cm.getOption(\"readOnly\") != \"nocursor\")\n { ensureCursorVisible(doc.cm); }\n }\n\n function setSelectionInner(doc, sel) {\n if (sel.equals(doc.sel)) { return }\n\n doc.sel = sel;\n\n if (doc.cm) {\n doc.cm.curOp.updateInput = 1;\n doc.cm.curOp.selectionChanged = true;\n signalCursorActivity(doc.cm);\n }\n signalLater(doc, \"cursorActivity\", doc);\n }\n\n // Verify that the selection does not partially select any atomic\n // marked ranges.\n function reCheckSelection(doc) {\n setSelectionInner(doc, skipAtomicInSelection(doc, doc.sel, null, false));\n }\n\n // Return a selection that does not partially select any atomic\n // ranges.\n function skipAtomicInSelection(doc, sel, bias, mayClear) {\n var out;\n for (var i = 0; i < sel.ranges.length; i++) {\n var range = sel.ranges[i];\n var old = sel.ranges.length == doc.sel.ranges.length && doc.sel.ranges[i];\n var newAnchor = skipAtomic(doc, range.anchor, old && old.anchor, bias, mayClear);\n var newHead = range.head == range.anchor ? newAnchor : skipAtomic(doc, range.head, old && old.head, bias, mayClear);\n if (out || newAnchor != range.anchor || newHead != range.head) {\n if (!out) { out = sel.ranges.slice(0, i); }\n out[i] = new Range(newAnchor, newHead);\n }\n }\n return out ? normalizeSelection(doc.cm, out, sel.primIndex) : sel\n }\n\n function skipAtomicInner(doc, pos, oldPos, dir, mayClear) {\n var line = getLine(doc, pos.line);\n if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) {\n var sp = line.markedSpans[i], m = sp.marker;\n\n // Determine if we should prevent the cursor being placed to the left/right of an atomic marker\n // Historically this was determined using the inclusiveLeft/Right option, but the new way to control it\n // is with selectLeft/Right\n var preventCursorLeft = (\"selectLeft\" in m) ? !m.selectLeft : m.inclusiveLeft;\n var preventCursorRight = (\"selectRight\" in m) ? !m.selectRight : m.inclusiveRight;\n\n if ((sp.from == null || (preventCursorLeft ? sp.from <= pos.ch : sp.from < pos.ch)) &&\n (sp.to == null || (preventCursorRight ? sp.to >= pos.ch : sp.to > pos.ch))) {\n if (mayClear) {\n signal(m, \"beforeCursorEnter\");\n if (m.explicitlyCleared) {\n if (!line.markedSpans) { break }\n else {--i; continue}\n }\n }\n if (!m.atomic) { continue }\n\n if (oldPos) {\n var near = m.find(dir < 0 ? 1 : -1), diff = (void 0);\n if (dir < 0 ? preventCursorRight : preventCursorLeft)\n { near = movePos(doc, near, -dir, near && near.line == pos.line ? line : null); }\n if (near && near.line == pos.line && (diff = cmp(near, oldPos)) && (dir < 0 ? diff < 0 : diff > 0))\n { return skipAtomicInner(doc, near, pos, dir, mayClear) }\n }\n\n var far = m.find(dir < 0 ? -1 : 1);\n if (dir < 0 ? preventCursorLeft : preventCursorRight)\n { far = movePos(doc, far, dir, far.line == pos.line ? line : null); }\n return far ? skipAtomicInner(doc, far, pos, dir, mayClear) : null\n }\n } }\n return pos\n }\n\n // Ensure a given position is not inside an atomic range.\n function skipAtomic(doc, pos, oldPos, bias, mayClear) {\n var dir = bias || 1;\n var found = skipAtomicInner(doc, pos, oldPos, dir, mayClear) ||\n (!mayClear && skipAtomicInner(doc, pos, oldPos, dir, true)) ||\n skipAtomicInner(doc, pos, oldPos, -dir, mayClear) ||\n (!mayClear && skipAtomicInner(doc, pos, oldPos, -dir, true));\n if (!found) {\n doc.cantEdit = true;\n return Pos(doc.first, 0)\n }\n return found\n }\n\n function movePos(doc, pos, dir, line) {\n if (dir < 0 && pos.ch == 0) {\n if (pos.line > doc.first) { return clipPos(doc, Pos(pos.line - 1)) }\n else { return null }\n } else if (dir > 0 && pos.ch == (line || getLine(doc, pos.line)).text.length) {\n if (pos.line < doc.first + doc.size - 1) { return Pos(pos.line + 1, 0) }\n else { return null }\n } else {\n return new Pos(pos.line, pos.ch + dir)\n }\n }\n\n function selectAll(cm) {\n cm.setSelection(Pos(cm.firstLine(), 0), Pos(cm.lastLine()), sel_dontScroll);\n }\n\n // UPDATING\n\n // Allow \"beforeChange\" event handlers to influence a change\n function filterChange(doc, change, update) {\n var obj = {\n canceled: false,\n from: change.from,\n to: change.to,\n text: change.text,\n origin: change.origin,\n cancel: function () { return obj.canceled = true; }\n };\n if (update) { obj.update = function (from, to, text, origin) {\n if (from) { obj.from = clipPos(doc, from); }\n if (to) { obj.to = clipPos(doc, to); }\n if (text) { obj.text = text; }\n if (origin !== undefined) { obj.origin = origin; }\n }; }\n signal(doc, \"beforeChange\", doc, obj);\n if (doc.cm) { signal(doc.cm, \"beforeChange\", doc.cm, obj); }\n\n if (obj.canceled) {\n if (doc.cm) { doc.cm.curOp.updateInput = 2; }\n return null\n }\n return {from: obj.from, to: obj.to, text: obj.text, origin: obj.origin}\n }\n\n // Apply a change to a document, and add it to the document's\n // history, and propagating it to all linked documents.\n function makeChange(doc, change, ignoreReadOnly) {\n if (doc.cm) {\n if (!doc.cm.curOp) { return operation(doc.cm, makeChange)(doc, change, ignoreReadOnly) }\n if (doc.cm.state.suppressEdits) { return }\n }\n\n if (hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\")) {\n change = filterChange(doc, change, true);\n if (!change) { return }\n }\n\n // Possibly split or suppress the update based on the presence\n // of read-only spans in its range.\n var split = sawReadOnlySpans && !ignoreReadOnly && removeReadOnlyRanges(doc, change.from, change.to);\n if (split) {\n for (var i = split.length - 1; i >= 0; --i)\n { makeChangeInner(doc, {from: split[i].from, to: split[i].to, text: i ? [\"\"] : change.text, origin: change.origin}); }\n } else {\n makeChangeInner(doc, change);\n }\n }\n\n function makeChangeInner(doc, change) {\n if (change.text.length == 1 && change.text[0] == \"\" && cmp(change.from, change.to) == 0) { return }\n var selAfter = computeSelAfterChange(doc, change);\n addChangeToHistory(doc, change, selAfter, doc.cm ? doc.cm.curOp.id : NaN);\n\n makeChangeSingleDoc(doc, change, selAfter, stretchSpansOverChange(doc, change));\n var rebased = [];\n\n linkedDocs(doc, function (doc, sharedHist) {\n if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n rebaseHist(doc.history, change);\n rebased.push(doc.history);\n }\n makeChangeSingleDoc(doc, change, null, stretchSpansOverChange(doc, change));\n });\n }\n\n // Revert a change stored in a document's history.\n function makeChangeFromHistory(doc, type, allowSelectionOnly) {\n var suppress = doc.cm && doc.cm.state.suppressEdits;\n if (suppress && !allowSelectionOnly) { return }\n\n var hist = doc.history, event, selAfter = doc.sel;\n var source = type == \"undo\" ? hist.done : hist.undone, dest = type == \"undo\" ? hist.undone : hist.done;\n\n // Verify that there is a useable event (so that ctrl-z won't\n // needlessly clear selection events)\n var i = 0;\n for (; i < source.length; i++) {\n event = source[i];\n if (allowSelectionOnly ? event.ranges && !event.equals(doc.sel) : !event.ranges)\n { break }\n }\n if (i == source.length) { return }\n hist.lastOrigin = hist.lastSelOrigin = null;\n\n for (;;) {\n event = source.pop();\n if (event.ranges) {\n pushSelectionToHistory(event, dest);\n if (allowSelectionOnly && !event.equals(doc.sel)) {\n setSelection(doc, event, {clearRedo: false});\n return\n }\n selAfter = event;\n } else if (suppress) {\n source.push(event);\n return\n } else { break }\n }\n\n // Build up a reverse change object to add to the opposite history\n // stack (redo when undoing, and vice versa).\n var antiChanges = [];\n pushSelectionToHistory(selAfter, dest);\n dest.push({changes: antiChanges, generation: hist.generation});\n hist.generation = event.generation || ++hist.maxGeneration;\n\n var filter = hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\");\n\n var loop = function ( i ) {\n var change = event.changes[i];\n change.origin = type;\n if (filter && !filterChange(doc, change, false)) {\n source.length = 0;\n return {}\n }\n\n antiChanges.push(historyChangeFromChange(doc, change));\n\n var after = i ? computeSelAfterChange(doc, change) : lst(source);\n makeChangeSingleDoc(doc, change, after, mergeOldSpans(doc, change));\n if (!i && doc.cm) { doc.cm.scrollIntoView({from: change.from, to: changeEnd(change)}); }\n var rebased = [];\n\n // Propagate to the linked documents\n linkedDocs(doc, function (doc, sharedHist) {\n if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n rebaseHist(doc.history, change);\n rebased.push(doc.history);\n }\n makeChangeSingleDoc(doc, change, null, mergeOldSpans(doc, change));\n });\n };\n\n for (var i$1 = event.changes.length - 1; i$1 >= 0; --i$1) {\n var returned = loop( i$1 );\n\n if ( returned ) return returned.v;\n }\n }\n\n // Sub-views need their line numbers shifted when text is added\n // above or below them in the parent document.\n function shiftDoc(doc, distance) {\n if (distance == 0) { return }\n doc.first += distance;\n doc.sel = new Selection(map(doc.sel.ranges, function (range) { return new Range(\n Pos(range.anchor.line + distance, range.anchor.ch),\n Pos(range.head.line + distance, range.head.ch)\n ); }), doc.sel.primIndex);\n if (doc.cm) {\n regChange(doc.cm, doc.first, doc.first - distance, distance);\n for (var d = doc.cm.display, l = d.viewFrom; l < d.viewTo; l++)\n { regLineChange(doc.cm, l, \"gutter\"); }\n }\n }\n\n // More lower-level change function, handling only a single document\n // (not linked ones).\n function makeChangeSingleDoc(doc, change, selAfter, spans) {\n if (doc.cm && !doc.cm.curOp)\n { return operation(doc.cm, makeChangeSingleDoc)(doc, change, selAfter, spans) }\n\n if (change.to.line < doc.first) {\n shiftDoc(doc, change.text.length - 1 - (change.to.line - change.from.line));\n return\n }\n if (change.from.line > doc.lastLine()) { return }\n\n // Clip the change to the size of this doc\n if (change.from.line < doc.first) {\n var shift = change.text.length - 1 - (doc.first - change.from.line);\n shiftDoc(doc, shift);\n change = {from: Pos(doc.first, 0), to: Pos(change.to.line + shift, change.to.ch),\n text: [lst(change.text)], origin: change.origin};\n }\n var last = doc.lastLine();\n if (change.to.line > last) {\n change = {from: change.from, to: Pos(last, getLine(doc, last).text.length),\n text: [change.text[0]], origin: change.origin};\n }\n\n change.removed = getBetween(doc, change.from, change.to);\n\n if (!selAfter) { selAfter = computeSelAfterChange(doc, change); }\n if (doc.cm) { makeChangeSingleDocInEditor(doc.cm, change, spans); }\n else { updateDoc(doc, change, spans); }\n setSelectionNoUndo(doc, selAfter, sel_dontScroll);\n\n if (doc.cantEdit && skipAtomic(doc, Pos(doc.firstLine(), 0)))\n { doc.cantEdit = false; }\n }\n\n // Handle the interaction of a change to a document with the editor\n // that this document is part of.\n function makeChangeSingleDocInEditor(cm, change, spans) {\n var doc = cm.doc, display = cm.display, from = change.from, to = change.to;\n\n var recomputeMaxLength = false, checkWidthStart = from.line;\n if (!cm.options.lineWrapping) {\n checkWidthStart = lineNo(visualLine(getLine(doc, from.line)));\n doc.iter(checkWidthStart, to.line + 1, function (line) {\n if (line == display.maxLine) {\n recomputeMaxLength = true;\n return true\n }\n });\n }\n\n if (doc.sel.contains(change.from, change.to) > -1)\n { signalCursorActivity(cm); }\n\n updateDoc(doc, change, spans, estimateHeight(cm));\n\n if (!cm.options.lineWrapping) {\n doc.iter(checkWidthStart, from.line + change.text.length, function (line) {\n var len = lineLength(line);\n if (len > display.maxLineLength) {\n display.maxLine = line;\n display.maxLineLength = len;\n display.maxLineChanged = true;\n recomputeMaxLength = false;\n }\n });\n if (recomputeMaxLength) { cm.curOp.updateMaxLine = true; }\n }\n\n retreatFrontier(doc, from.line);\n startWorker(cm, 400);\n\n var lendiff = change.text.length - (to.line - from.line) - 1;\n // Remember that these lines changed, for updating the display\n if (change.full)\n { regChange(cm); }\n else if (from.line == to.line && change.text.length == 1 && !isWholeLineUpdate(cm.doc, change))\n { regLineChange(cm, from.line, \"text\"); }\n else\n { regChange(cm, from.line, to.line + 1, lendiff); }\n\n var changesHandler = hasHandler(cm, \"changes\"), changeHandler = hasHandler(cm, \"change\");\n if (changeHandler || changesHandler) {\n var obj = {\n from: from, to: to,\n text: change.text,\n removed: change.removed,\n origin: change.origin\n };\n if (changeHandler) { signalLater(cm, \"change\", cm, obj); }\n if (changesHandler) { (cm.curOp.changeObjs || (cm.curOp.changeObjs = [])).push(obj); }\n }\n cm.display.selForContextMenu = null;\n }\n\n function replaceRange(doc, code, from, to, origin) {\n var assign;\n\n if (!to) { to = from; }\n if (cmp(to, from) < 0) { (assign = [to, from], from = assign[0], to = assign[1]); }\n if (typeof code == \"string\") { code = doc.splitLines(code); }\n makeChange(doc, {from: from, to: to, text: code, origin: origin});\n }\n\n // Rebasing/resetting history to deal with externally-sourced changes\n\n function rebaseHistSelSingle(pos, from, to, diff) {\n if (to < pos.line) {\n pos.line += diff;\n } else if (from < pos.line) {\n pos.line = from;\n pos.ch = 0;\n }\n }\n\n // Tries to rebase an array of history events given a change in the\n // document. If the change touches the same lines as the event, the\n // event, and everything 'behind' it, is discarded. If the change is\n // before the event, the event's positions are updated. Uses a\n // copy-on-write scheme for the positions, to avoid having to\n // reallocate them all on every rebase, but also avoid problems with\n // shared position objects being unsafely updated.\n function rebaseHistArray(array, from, to, diff) {\n for (var i = 0; i < array.length; ++i) {\n var sub = array[i], ok = true;\n if (sub.ranges) {\n if (!sub.copied) { sub = array[i] = sub.deepCopy(); sub.copied = true; }\n for (var j = 0; j < sub.ranges.length; j++) {\n rebaseHistSelSingle(sub.ranges[j].anchor, from, to, diff);\n rebaseHistSelSingle(sub.ranges[j].head, from, to, diff);\n }\n continue\n }\n for (var j$1 = 0; j$1 < sub.changes.length; ++j$1) {\n var cur = sub.changes[j$1];\n if (to < cur.from.line) {\n cur.from = Pos(cur.from.line + diff, cur.from.ch);\n cur.to = Pos(cur.to.line + diff, cur.to.ch);\n } else if (from <= cur.to.line) {\n ok = false;\n break\n }\n }\n if (!ok) {\n array.splice(0, i + 1);\n i = 0;\n }\n }\n }\n\n function rebaseHist(hist, change) {\n var from = change.from.line, to = change.to.line, diff = change.text.length - (to - from) - 1;\n rebaseHistArray(hist.done, from, to, diff);\n rebaseHistArray(hist.undone, from, to, diff);\n }\n\n // Utility for applying a change to a line by handle or number,\n // returning the number and optionally registering the line as\n // changed.\n function changeLine(doc, handle, changeType, op) {\n var no = handle, line = handle;\n if (typeof handle == \"number\") { line = getLine(doc, clipLine(doc, handle)); }\n else { no = lineNo(handle); }\n if (no == null) { return null }\n if (op(line, no) && doc.cm) { regLineChange(doc.cm, no, changeType); }\n return line\n }\n\n // The document is represented as a BTree consisting of leaves, with\n // chunk of lines in them, and branches, with up to ten leaves or\n // other branch nodes below them. The top node is always a branch\n // node, and is the document object itself (meaning it has\n // additional methods and properties).\n //\n // All nodes have parent links. The tree is used both to go from\n // line numbers to line objects, and to go from objects to numbers.\n // It also indexes by height, and is used to convert between height\n // and line object, and to find the total height of the document.\n //\n // See also http://marijnhaverbeke.nl/blog/codemirror-line-tree.html\n\n function LeafChunk(lines) {\n this.lines = lines;\n this.parent = null;\n var height = 0;\n for (var i = 0; i < lines.length; ++i) {\n lines[i].parent = this;\n height += lines[i].height;\n }\n this.height = height;\n }\n\n LeafChunk.prototype = {\n chunkSize: function() { return this.lines.length },\n\n // Remove the n lines at offset 'at'.\n removeInner: function(at, n) {\n for (var i = at, e = at + n; i < e; ++i) {\n var line = this.lines[i];\n this.height -= line.height;\n cleanUpLine(line);\n signalLater(line, \"delete\");\n }\n this.lines.splice(at, n);\n },\n\n // Helper used to collapse a small branch into a single leaf.\n collapse: function(lines) {\n lines.push.apply(lines, this.lines);\n },\n\n // Insert the given array of lines at offset 'at', count them as\n // having the given height.\n insertInner: function(at, lines, height) {\n this.height += height;\n this.lines = this.lines.slice(0, at).concat(lines).concat(this.lines.slice(at));\n for (var i = 0; i < lines.length; ++i) { lines[i].parent = this; }\n },\n\n // Used to iterate over a part of the tree.\n iterN: function(at, n, op) {\n for (var e = at + n; at < e; ++at)\n { if (op(this.lines[at])) { return true } }\n }\n };\n\n function BranchChunk(children) {\n this.children = children;\n var size = 0, height = 0;\n for (var i = 0; i < children.length; ++i) {\n var ch = children[i];\n size += ch.chunkSize(); height += ch.height;\n ch.parent = this;\n }\n this.size = size;\n this.height = height;\n this.parent = null;\n }\n\n BranchChunk.prototype = {\n chunkSize: function() { return this.size },\n\n removeInner: function(at, n) {\n this.size -= n;\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.children[i], sz = child.chunkSize();\n if (at < sz) {\n var rm = Math.min(n, sz - at), oldHeight = child.height;\n child.removeInner(at, rm);\n this.height -= oldHeight - child.height;\n if (sz == rm) { this.children.splice(i--, 1); child.parent = null; }\n if ((n -= rm) == 0) { break }\n at = 0;\n } else { at -= sz; }\n }\n // If the result is smaller than 25 lines, ensure that it is a\n // single leaf node.\n if (this.size - n < 25 &&\n (this.children.length > 1 || !(this.children[0] instanceof LeafChunk))) {\n var lines = [];\n this.collapse(lines);\n this.children = [new LeafChunk(lines)];\n this.children[0].parent = this;\n }\n },\n\n collapse: function(lines) {\n for (var i = 0; i < this.children.length; ++i) { this.children[i].collapse(lines); }\n },\n\n insertInner: function(at, lines, height) {\n this.size += lines.length;\n this.height += height;\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.children[i], sz = child.chunkSize();\n if (at <= sz) {\n child.insertInner(at, lines, height);\n if (child.lines && child.lines.length > 50) {\n // To avoid memory thrashing when child.lines is huge (e.g. first view of a large file), it's never spliced.\n // Instead, small slices are taken. They're taken in order because sequential memory accesses are fastest.\n var remaining = child.lines.length % 25 + 25;\n for (var pos = remaining; pos < child.lines.length;) {\n var leaf = new LeafChunk(child.lines.slice(pos, pos += 25));\n child.height -= leaf.height;\n this.children.splice(++i, 0, leaf);\n leaf.parent = this;\n }\n child.lines = child.lines.slice(0, remaining);\n this.maybeSpill();\n }\n break\n }\n at -= sz;\n }\n },\n\n // When a node has grown, check whether it should be split.\n maybeSpill: function() {\n if (this.children.length <= 10) { return }\n var me = this;\n do {\n var spilled = me.children.splice(me.children.length - 5, 5);\n var sibling = new BranchChunk(spilled);\n if (!me.parent) { // Become the parent node\n var copy = new BranchChunk(me.children);\n copy.parent = me;\n me.children = [copy, sibling];\n me = copy;\n } else {\n me.size -= sibling.size;\n me.height -= sibling.height;\n var myIndex = indexOf(me.parent.children, me);\n me.parent.children.splice(myIndex + 1, 0, sibling);\n }\n sibling.parent = me.parent;\n } while (me.children.length > 10)\n me.parent.maybeSpill();\n },\n\n iterN: function(at, n, op) {\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.children[i], sz = child.chunkSize();\n if (at < sz) {\n var used = Math.min(n, sz - at);\n if (child.iterN(at, used, op)) { return true }\n if ((n -= used) == 0) { break }\n at = 0;\n } else { at -= sz; }\n }\n }\n };\n\n // Line widgets are block elements displayed above or below a line.\n\n var LineWidget = function(doc, node, options) {\n if (options) { for (var opt in options) { if (options.hasOwnProperty(opt))\n { this[opt] = options[opt]; } } }\n this.doc = doc;\n this.node = node;\n };\n\n LineWidget.prototype.clear = function () {\n var cm = this.doc.cm, ws = this.line.widgets, line = this.line, no = lineNo(line);\n if (no == null || !ws) { return }\n for (var i = 0; i < ws.length; ++i) { if (ws[i] == this) { ws.splice(i--, 1); } }\n if (!ws.length) { line.widgets = null; }\n var height = widgetHeight(this);\n updateLineHeight(line, Math.max(0, line.height - height));\n if (cm) {\n runInOp(cm, function () {\n adjustScrollWhenAboveVisible(cm, line, -height);\n regLineChange(cm, no, \"widget\");\n });\n signalLater(cm, \"lineWidgetCleared\", cm, this, no);\n }\n };\n\n LineWidget.prototype.changed = function () {\n var this$1 = this;\n\n var oldH = this.height, cm = this.doc.cm, line = this.line;\n this.height = null;\n var diff = widgetHeight(this) - oldH;\n if (!diff) { return }\n if (!lineIsHidden(this.doc, line)) { updateLineHeight(line, line.height + diff); }\n if (cm) {\n runInOp(cm, function () {\n cm.curOp.forceUpdate = true;\n adjustScrollWhenAboveVisible(cm, line, diff);\n signalLater(cm, \"lineWidgetChanged\", cm, this$1, lineNo(line));\n });\n }\n };\n eventMixin(LineWidget);\n\n function adjustScrollWhenAboveVisible(cm, line, diff) {\n if (heightAtLine(line) < ((cm.curOp && cm.curOp.scrollTop) || cm.doc.scrollTop))\n { addToScrollTop(cm, diff); }\n }\n\n function addLineWidget(doc, handle, node, options) {\n var widget = new LineWidget(doc, node, options);\n var cm = doc.cm;\n if (cm && widget.noHScroll) { cm.display.alignWidgets = true; }\n changeLine(doc, handle, \"widget\", function (line) {\n var widgets = line.widgets || (line.widgets = []);\n if (widget.insertAt == null) { widgets.push(widget); }\n else { widgets.splice(Math.min(widgets.length, Math.max(0, widget.insertAt)), 0, widget); }\n widget.line = line;\n if (cm && !lineIsHidden(doc, line)) {\n var aboveVisible = heightAtLine(line) < doc.scrollTop;\n updateLineHeight(line, line.height + widgetHeight(widget));\n if (aboveVisible) { addToScrollTop(cm, widget.height); }\n cm.curOp.forceUpdate = true;\n }\n return true\n });\n if (cm) { signalLater(cm, \"lineWidgetAdded\", cm, widget, typeof handle == \"number\" ? handle : lineNo(handle)); }\n return widget\n }\n\n // TEXTMARKERS\n\n // Created with markText and setBookmark methods. A TextMarker is a\n // handle that can be used to clear or find a marked position in the\n // document. Line objects hold arrays (markedSpans) containing\n // {from, to, marker} object pointing to such marker objects, and\n // indicating that such a marker is present on that line. Multiple\n // lines may point to the same marker when it spans across lines.\n // The spans will have null for their from/to properties when the\n // marker continues beyond the start/end of the line. Markers have\n // links back to the lines they currently touch.\n\n // Collapsed markers have unique ids, in order to be able to order\n // them, which is needed for uniquely determining an outer marker\n // when they overlap (they may nest, but not partially overlap).\n var nextMarkerId = 0;\n\n var TextMarker = function(doc, type) {\n this.lines = [];\n this.type = type;\n this.doc = doc;\n this.id = ++nextMarkerId;\n };\n\n // Clear the marker.\n TextMarker.prototype.clear = function () {\n if (this.explicitlyCleared) { return }\n var cm = this.doc.cm, withOp = cm && !cm.curOp;\n if (withOp) { startOperation(cm); }\n if (hasHandler(this, \"clear\")) {\n var found = this.find();\n if (found) { signalLater(this, \"clear\", found.from, found.to); }\n }\n var min = null, max = null;\n for (var i = 0; i < this.lines.length; ++i) {\n var line = this.lines[i];\n var span = getMarkedSpanFor(line.markedSpans, this);\n if (cm && !this.collapsed) { regLineChange(cm, lineNo(line), \"text\"); }\n else if (cm) {\n if (span.to != null) { max = lineNo(line); }\n if (span.from != null) { min = lineNo(line); }\n }\n line.markedSpans = removeMarkedSpan(line.markedSpans, span);\n if (span.from == null && this.collapsed && !lineIsHidden(this.doc, line) && cm)\n { updateLineHeight(line, textHeight(cm.display)); }\n }\n if (cm && this.collapsed && !cm.options.lineWrapping) { for (var i$1 = 0; i$1 < this.lines.length; ++i$1) {\n var visual = visualLine(this.lines[i$1]), len = lineLength(visual);\n if (len > cm.display.maxLineLength) {\n cm.display.maxLine = visual;\n cm.display.maxLineLength = len;\n cm.display.maxLineChanged = true;\n }\n } }\n\n if (min != null && cm && this.collapsed) { regChange(cm, min, max + 1); }\n this.lines.length = 0;\n this.explicitlyCleared = true;\n if (this.atomic && this.doc.cantEdit) {\n this.doc.cantEdit = false;\n if (cm) { reCheckSelection(cm.doc); }\n }\n if (cm) { signalLater(cm, \"markerCleared\", cm, this, min, max); }\n if (withOp) { endOperation(cm); }\n if (this.parent) { this.parent.clear(); }\n };\n\n // Find the position of the marker in the document. Returns a {from,\n // to} object by default. Side can be passed to get a specific side\n // -- 0 (both), -1 (left), or 1 (right). When lineObj is true, the\n // Pos objects returned contain a line object, rather than a line\n // number (used to prevent looking up the same line twice).\n TextMarker.prototype.find = function (side, lineObj) {\n if (side == null && this.type == \"bookmark\") { side = 1; }\n var from, to;\n for (var i = 0; i < this.lines.length; ++i) {\n var line = this.lines[i];\n var span = getMarkedSpanFor(line.markedSpans, this);\n if (span.from != null) {\n from = Pos(lineObj ? line : lineNo(line), span.from);\n if (side == -1) { return from }\n }\n if (span.to != null) {\n to = Pos(lineObj ? line : lineNo(line), span.to);\n if (side == 1) { return to }\n }\n }\n return from && {from: from, to: to}\n };\n\n // Signals that the marker's widget changed, and surrounding layout\n // should be recomputed.\n TextMarker.prototype.changed = function () {\n var this$1 = this;\n\n var pos = this.find(-1, true), widget = this, cm = this.doc.cm;\n if (!pos || !cm) { return }\n runInOp(cm, function () {\n var line = pos.line, lineN = lineNo(pos.line);\n var view = findViewForLine(cm, lineN);\n if (view) {\n clearLineMeasurementCacheFor(view);\n cm.curOp.selectionChanged = cm.curOp.forceUpdate = true;\n }\n cm.curOp.updateMaxLine = true;\n if (!lineIsHidden(widget.doc, line) && widget.height != null) {\n var oldHeight = widget.height;\n widget.height = null;\n var dHeight = widgetHeight(widget) - oldHeight;\n if (dHeight)\n { updateLineHeight(line, line.height + dHeight); }\n }\n signalLater(cm, \"markerChanged\", cm, this$1);\n });\n };\n\n TextMarker.prototype.attachLine = function (line) {\n if (!this.lines.length && this.doc.cm) {\n var op = this.doc.cm.curOp;\n if (!op.maybeHiddenMarkers || indexOf(op.maybeHiddenMarkers, this) == -1)\n { (op.maybeUnhiddenMarkers || (op.maybeUnhiddenMarkers = [])).push(this); }\n }\n this.lines.push(line);\n };\n\n TextMarker.prototype.detachLine = function (line) {\n this.lines.splice(indexOf(this.lines, line), 1);\n if (!this.lines.length && this.doc.cm) {\n var op = this.doc.cm.curOp\n ;(op.maybeHiddenMarkers || (op.maybeHiddenMarkers = [])).push(this);\n }\n };\n eventMixin(TextMarker);\n\n // Create a marker, wire it up to the right lines, and\n function markText(doc, from, to, options, type) {\n // Shared markers (across linked documents) are handled separately\n // (markTextShared will call out to this again, once per\n // document).\n if (options && options.shared) { return markTextShared(doc, from, to, options, type) }\n // Ensure we are in an operation.\n if (doc.cm && !doc.cm.curOp) { return operation(doc.cm, markText)(doc, from, to, options, type) }\n\n var marker = new TextMarker(doc, type), diff = cmp(from, to);\n if (options) { copyObj(options, marker, false); }\n // Don't connect empty markers unless clearWhenEmpty is false\n if (diff > 0 || diff == 0 && marker.clearWhenEmpty !== false)\n { return marker }\n if (marker.replacedWith) {\n // Showing up as a widget implies collapsed (widget replaces text)\n marker.collapsed = true;\n marker.widgetNode = eltP(\"span\", [marker.replacedWith], \"CodeMirror-widget\");\n if (!options.handleMouseEvents) { marker.widgetNode.setAttribute(\"cm-ignore-events\", \"true\"); }\n if (options.insertLeft) { marker.widgetNode.insertLeft = true; }\n }\n if (marker.collapsed) {\n if (conflictingCollapsedRange(doc, from.line, from, to, marker) ||\n from.line != to.line && conflictingCollapsedRange(doc, to.line, from, to, marker))\n { throw new Error(\"Inserting collapsed marker partially overlapping an existing one\") }\n seeCollapsedSpans();\n }\n\n if (marker.addToHistory)\n { addChangeToHistory(doc, {from: from, to: to, origin: \"markText\"}, doc.sel, NaN); }\n\n var curLine = from.line, cm = doc.cm, updateMaxLine;\n doc.iter(curLine, to.line + 1, function (line) {\n if (cm && marker.collapsed && !cm.options.lineWrapping && visualLine(line) == cm.display.maxLine)\n { updateMaxLine = true; }\n if (marker.collapsed && curLine != from.line) { updateLineHeight(line, 0); }\n addMarkedSpan(line, new MarkedSpan(marker,\n curLine == from.line ? from.ch : null,\n curLine == to.line ? to.ch : null), doc.cm && doc.cm.curOp);\n ++curLine;\n });\n // lineIsHidden depends on the presence of the spans, so needs a second pass\n if (marker.collapsed) { doc.iter(from.line, to.line + 1, function (line) {\n if (lineIsHidden(doc, line)) { updateLineHeight(line, 0); }\n }); }\n\n if (marker.clearOnEnter) { on(marker, \"beforeCursorEnter\", function () { return marker.clear(); }); }\n\n if (marker.readOnly) {\n seeReadOnlySpans();\n if (doc.history.done.length || doc.history.undone.length)\n { doc.clearHistory(); }\n }\n if (marker.collapsed) {\n marker.id = ++nextMarkerId;\n marker.atomic = true;\n }\n if (cm) {\n // Sync editor state\n if (updateMaxLine) { cm.curOp.updateMaxLine = true; }\n if (marker.collapsed)\n { regChange(cm, from.line, to.line + 1); }\n else if (marker.className || marker.startStyle || marker.endStyle || marker.css ||\n marker.attributes || marker.title)\n { for (var i = from.line; i <= to.line; i++) { regLineChange(cm, i, \"text\"); } }\n if (marker.atomic) { reCheckSelection(cm.doc); }\n signalLater(cm, \"markerAdded\", cm, marker);\n }\n return marker\n }\n\n // SHARED TEXTMARKERS\n\n // A shared marker spans multiple linked documents. It is\n // implemented as a meta-marker-object controlling multiple normal\n // markers.\n var SharedTextMarker = function(markers, primary) {\n this.markers = markers;\n this.primary = primary;\n for (var i = 0; i < markers.length; ++i)\n { markers[i].parent = this; }\n };\n\n SharedTextMarker.prototype.clear = function () {\n if (this.explicitlyCleared) { return }\n this.explicitlyCleared = true;\n for (var i = 0; i < this.markers.length; ++i)\n { this.markers[i].clear(); }\n signalLater(this, \"clear\");\n };\n\n SharedTextMarker.prototype.find = function (side, lineObj) {\n return this.primary.find(side, lineObj)\n };\n eventMixin(SharedTextMarker);\n\n function markTextShared(doc, from, to, options, type) {\n options = copyObj(options);\n options.shared = false;\n var markers = [markText(doc, from, to, options, type)], primary = markers[0];\n var widget = options.widgetNode;\n linkedDocs(doc, function (doc) {\n if (widget) { options.widgetNode = widget.cloneNode(true); }\n markers.push(markText(doc, clipPos(doc, from), clipPos(doc, to), options, type));\n for (var i = 0; i < doc.linked.length; ++i)\n { if (doc.linked[i].isParent) { return } }\n primary = lst(markers);\n });\n return new SharedTextMarker(markers, primary)\n }\n\n function findSharedMarkers(doc) {\n return doc.findMarks(Pos(doc.first, 0), doc.clipPos(Pos(doc.lastLine())), function (m) { return m.parent; })\n }\n\n function copySharedMarkers(doc, markers) {\n for (var i = 0; i < markers.length; i++) {\n var marker = markers[i], pos = marker.find();\n var mFrom = doc.clipPos(pos.from), mTo = doc.clipPos(pos.to);\n if (cmp(mFrom, mTo)) {\n var subMark = markText(doc, mFrom, mTo, marker.primary, marker.primary.type);\n marker.markers.push(subMark);\n subMark.parent = marker;\n }\n }\n }\n\n function detachSharedMarkers(markers) {\n var loop = function ( i ) {\n var marker = markers[i], linked = [marker.primary.doc];\n linkedDocs(marker.primary.doc, function (d) { return linked.push(d); });\n for (var j = 0; j < marker.markers.length; j++) {\n var subMarker = marker.markers[j];\n if (indexOf(linked, subMarker.doc) == -1) {\n subMarker.parent = null;\n marker.markers.splice(j--, 1);\n }\n }\n };\n\n for (var i = 0; i < markers.length; i++) loop( i );\n }\n\n var nextDocId = 0;\n var Doc = function(text, mode, firstLine, lineSep, direction) {\n if (!(this instanceof Doc)) { return new Doc(text, mode, firstLine, lineSep, direction) }\n if (firstLine == null) { firstLine = 0; }\n\n BranchChunk.call(this, [new LeafChunk([new Line(\"\", null)])]);\n this.first = firstLine;\n this.scrollTop = this.scrollLeft = 0;\n this.cantEdit = false;\n this.cleanGeneration = 1;\n this.modeFrontier = this.highlightFrontier = firstLine;\n var start = Pos(firstLine, 0);\n this.sel = simpleSelection(start);\n this.history = new History(null);\n this.id = ++nextDocId;\n this.modeOption = mode;\n this.lineSep = lineSep;\n this.direction = (direction == \"rtl\") ? \"rtl\" : \"ltr\";\n this.extend = false;\n\n if (typeof text == \"string\") { text = this.splitLines(text); }\n updateDoc(this, {from: start, to: start, text: text});\n setSelection(this, simpleSelection(start), sel_dontScroll);\n };\n\n Doc.prototype = createObj(BranchChunk.prototype, {\n constructor: Doc,\n // Iterate over the document. Supports two forms -- with only one\n // argument, it calls that for each line in the document. With\n // three, it iterates over the range given by the first two (with\n // the second being non-inclusive).\n iter: function(from, to, op) {\n if (op) { this.iterN(from - this.first, to - from, op); }\n else { this.iterN(this.first, this.first + this.size, from); }\n },\n\n // Non-public interface for adding and removing lines.\n insert: function(at, lines) {\n var height = 0;\n for (var i = 0; i < lines.length; ++i) { height += lines[i].height; }\n this.insertInner(at - this.first, lines, height);\n },\n remove: function(at, n) { this.removeInner(at - this.first, n); },\n\n // From here, the methods are part of the public interface. Most\n // are also available from CodeMirror (editor) instances.\n\n getValue: function(lineSep) {\n var lines = getLines(this, this.first, this.first + this.size);\n if (lineSep === false) { return lines }\n return lines.join(lineSep || this.lineSeparator())\n },\n setValue: docMethodOp(function(code) {\n var top = Pos(this.first, 0), last = this.first + this.size - 1;\n makeChange(this, {from: top, to: Pos(last, getLine(this, last).text.length),\n text: this.splitLines(code), origin: \"setValue\", full: true}, true);\n if (this.cm) { scrollToCoords(this.cm, 0, 0); }\n setSelection(this, simpleSelection(top), sel_dontScroll);\n }),\n replaceRange: function(code, from, to, origin) {\n from = clipPos(this, from);\n to = to ? clipPos(this, to) : from;\n replaceRange(this, code, from, to, origin);\n },\n getRange: function(from, to, lineSep) {\n var lines = getBetween(this, clipPos(this, from), clipPos(this, to));\n if (lineSep === false) { return lines }\n if (lineSep === '') { return lines.join('') }\n return lines.join(lineSep || this.lineSeparator())\n },\n\n getLine: function(line) {var l = this.getLineHandle(line); return l && l.text},\n\n getLineHandle: function(line) {if (isLine(this, line)) { return getLine(this, line) }},\n getLineNumber: function(line) {return lineNo(line)},\n\n getLineHandleVisualStart: function(line) {\n if (typeof line == \"number\") { line = getLine(this, line); }\n return visualLine(line)\n },\n\n lineCount: function() {return this.size},\n firstLine: function() {return this.first},\n lastLine: function() {return this.first + this.size - 1},\n\n clipPos: function(pos) {return clipPos(this, pos)},\n\n getCursor: function(start) {\n var range = this.sel.primary(), pos;\n if (start == null || start == \"head\") { pos = range.head; }\n else if (start == \"anchor\") { pos = range.anchor; }\n else if (start == \"end\" || start == \"to\" || start === false) { pos = range.to(); }\n else { pos = range.from(); }\n return pos\n },\n listSelections: function() { return this.sel.ranges },\n somethingSelected: function() {return this.sel.somethingSelected()},\n\n setCursor: docMethodOp(function(line, ch, options) {\n setSimpleSelection(this, clipPos(this, typeof line == \"number\" ? Pos(line, ch || 0) : line), null, options);\n }),\n setSelection: docMethodOp(function(anchor, head, options) {\n setSimpleSelection(this, clipPos(this, anchor), clipPos(this, head || anchor), options);\n }),\n extendSelection: docMethodOp(function(head, other, options) {\n extendSelection(this, clipPos(this, head), other && clipPos(this, other), options);\n }),\n extendSelections: docMethodOp(function(heads, options) {\n extendSelections(this, clipPosArray(this, heads), options);\n }),\n extendSelectionsBy: docMethodOp(function(f, options) {\n var heads = map(this.sel.ranges, f);\n extendSelections(this, clipPosArray(this, heads), options);\n }),\n setSelections: docMethodOp(function(ranges, primary, options) {\n if (!ranges.length) { return }\n var out = [];\n for (var i = 0; i < ranges.length; i++)\n { out[i] = new Range(clipPos(this, ranges[i].anchor),\n clipPos(this, ranges[i].head || ranges[i].anchor)); }\n if (primary == null) { primary = Math.min(ranges.length - 1, this.sel.primIndex); }\n setSelection(this, normalizeSelection(this.cm, out, primary), options);\n }),\n addSelection: docMethodOp(function(anchor, head, options) {\n var ranges = this.sel.ranges.slice(0);\n ranges.push(new Range(clipPos(this, anchor), clipPos(this, head || anchor)));\n setSelection(this, normalizeSelection(this.cm, ranges, ranges.length - 1), options);\n }),\n\n getSelection: function(lineSep) {\n var ranges = this.sel.ranges, lines;\n for (var i = 0; i < ranges.length; i++) {\n var sel = getBetween(this, ranges[i].from(), ranges[i].to());\n lines = lines ? lines.concat(sel) : sel;\n }\n if (lineSep === false) { return lines }\n else { return lines.join(lineSep || this.lineSeparator()) }\n },\n getSelections: function(lineSep) {\n var parts = [], ranges = this.sel.ranges;\n for (var i = 0; i < ranges.length; i++) {\n var sel = getBetween(this, ranges[i].from(), ranges[i].to());\n if (lineSep !== false) { sel = sel.join(lineSep || this.lineSeparator()); }\n parts[i] = sel;\n }\n return parts\n },\n replaceSelection: function(code, collapse, origin) {\n var dup = [];\n for (var i = 0; i < this.sel.ranges.length; i++)\n { dup[i] = code; }\n this.replaceSelections(dup, collapse, origin || \"+input\");\n },\n replaceSelections: docMethodOp(function(code, collapse, origin) {\n var changes = [], sel = this.sel;\n for (var i = 0; i < sel.ranges.length; i++) {\n var range = sel.ranges[i];\n changes[i] = {from: range.from(), to: range.to(), text: this.splitLines(code[i]), origin: origin};\n }\n var newSel = collapse && collapse != \"end\" && computeReplacedSel(this, changes, collapse);\n for (var i$1 = changes.length - 1; i$1 >= 0; i$1--)\n { makeChange(this, changes[i$1]); }\n if (newSel) { setSelectionReplaceHistory(this, newSel); }\n else if (this.cm) { ensureCursorVisible(this.cm); }\n }),\n undo: docMethodOp(function() {makeChangeFromHistory(this, \"undo\");}),\n redo: docMethodOp(function() {makeChangeFromHistory(this, \"redo\");}),\n undoSelection: docMethodOp(function() {makeChangeFromHistory(this, \"undo\", true);}),\n redoSelection: docMethodOp(function() {makeChangeFromHistory(this, \"redo\", true);}),\n\n setExtending: function(val) {this.extend = val;},\n getExtending: function() {return this.extend},\n\n historySize: function() {\n var hist = this.history, done = 0, undone = 0;\n for (var i = 0; i < hist.done.length; i++) { if (!hist.done[i].ranges) { ++done; } }\n for (var i$1 = 0; i$1 < hist.undone.length; i$1++) { if (!hist.undone[i$1].ranges) { ++undone; } }\n return {undo: done, redo: undone}\n },\n clearHistory: function() {\n var this$1 = this;\n\n this.history = new History(this.history);\n linkedDocs(this, function (doc) { return doc.history = this$1.history; }, true);\n },\n\n markClean: function() {\n this.cleanGeneration = this.changeGeneration(true);\n },\n changeGeneration: function(forceSplit) {\n if (forceSplit)\n { this.history.lastOp = this.history.lastSelOp = this.history.lastOrigin = null; }\n return this.history.generation\n },\n isClean: function (gen) {\n return this.history.generation == (gen || this.cleanGeneration)\n },\n\n getHistory: function() {\n return {done: copyHistoryArray(this.history.done),\n undone: copyHistoryArray(this.history.undone)}\n },\n setHistory: function(histData) {\n var hist = this.history = new History(this.history);\n hist.done = copyHistoryArray(histData.done.slice(0), null, true);\n hist.undone = copyHistoryArray(histData.undone.slice(0), null, true);\n },\n\n setGutterMarker: docMethodOp(function(line, gutterID, value) {\n return changeLine(this, line, \"gutter\", function (line) {\n var markers = line.gutterMarkers || (line.gutterMarkers = {});\n markers[gutterID] = value;\n if (!value && isEmpty(markers)) { line.gutterMarkers = null; }\n return true\n })\n }),\n\n clearGutter: docMethodOp(function(gutterID) {\n var this$1 = this;\n\n this.iter(function (line) {\n if (line.gutterMarkers && line.gutterMarkers[gutterID]) {\n changeLine(this$1, line, \"gutter\", function () {\n line.gutterMarkers[gutterID] = null;\n if (isEmpty(line.gutterMarkers)) { line.gutterMarkers = null; }\n return true\n });\n }\n });\n }),\n\n lineInfo: function(line) {\n var n;\n if (typeof line == \"number\") {\n if (!isLine(this, line)) { return null }\n n = line;\n line = getLine(this, line);\n if (!line) { return null }\n } else {\n n = lineNo(line);\n if (n == null) { return null }\n }\n return {line: n, handle: line, text: line.text, gutterMarkers: line.gutterMarkers,\n textClass: line.textClass, bgClass: line.bgClass, wrapClass: line.wrapClass,\n widgets: line.widgets}\n },\n\n addLineClass: docMethodOp(function(handle, where, cls) {\n return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function (line) {\n var prop = where == \"text\" ? \"textClass\"\n : where == \"background\" ? \"bgClass\"\n : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n if (!line[prop]) { line[prop] = cls; }\n else if (classTest(cls).test(line[prop])) { return false }\n else { line[prop] += \" \" + cls; }\n return true\n })\n }),\n removeLineClass: docMethodOp(function(handle, where, cls) {\n return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function (line) {\n var prop = where == \"text\" ? \"textClass\"\n : where == \"background\" ? \"bgClass\"\n : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n var cur = line[prop];\n if (!cur) { return false }\n else if (cls == null) { line[prop] = null; }\n else {\n var found = cur.match(classTest(cls));\n if (!found) { return false }\n var end = found.index + found[0].length;\n line[prop] = cur.slice(0, found.index) + (!found.index || end == cur.length ? \"\" : \" \") + cur.slice(end) || null;\n }\n return true\n })\n }),\n\n addLineWidget: docMethodOp(function(handle, node, options) {\n return addLineWidget(this, handle, node, options)\n }),\n removeLineWidget: function(widget) { widget.clear(); },\n\n markText: function(from, to, options) {\n return markText(this, clipPos(this, from), clipPos(this, to), options, options && options.type || \"range\")\n },\n setBookmark: function(pos, options) {\n var realOpts = {replacedWith: options && (options.nodeType == null ? options.widget : options),\n insertLeft: options && options.insertLeft,\n clearWhenEmpty: false, shared: options && options.shared,\n handleMouseEvents: options && options.handleMouseEvents};\n pos = clipPos(this, pos);\n return markText(this, pos, pos, realOpts, \"bookmark\")\n },\n findMarksAt: function(pos) {\n pos = clipPos(this, pos);\n var markers = [], spans = getLine(this, pos.line).markedSpans;\n if (spans) { for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n if ((span.from == null || span.from <= pos.ch) &&\n (span.to == null || span.to >= pos.ch))\n { markers.push(span.marker.parent || span.marker); }\n } }\n return markers\n },\n findMarks: function(from, to, filter) {\n from = clipPos(this, from); to = clipPos(this, to);\n var found = [], lineNo = from.line;\n this.iter(from.line, to.line + 1, function (line) {\n var spans = line.markedSpans;\n if (spans) { for (var i = 0; i < spans.length; i++) {\n var span = spans[i];\n if (!(span.to != null && lineNo == from.line && from.ch >= span.to ||\n span.from == null && lineNo != from.line ||\n span.from != null && lineNo == to.line && span.from >= to.ch) &&\n (!filter || filter(span.marker)))\n { found.push(span.marker.parent || span.marker); }\n } }\n ++lineNo;\n });\n return found\n },\n getAllMarks: function() {\n var markers = [];\n this.iter(function (line) {\n var sps = line.markedSpans;\n if (sps) { for (var i = 0; i < sps.length; ++i)\n { if (sps[i].from != null) { markers.push(sps[i].marker); } } }\n });\n return markers\n },\n\n posFromIndex: function(off) {\n var ch, lineNo = this.first, sepSize = this.lineSeparator().length;\n this.iter(function (line) {\n var sz = line.text.length + sepSize;\n if (sz > off) { ch = off; return true }\n off -= sz;\n ++lineNo;\n });\n return clipPos(this, Pos(lineNo, ch))\n },\n indexFromPos: function (coords) {\n coords = clipPos(this, coords);\n var index = coords.ch;\n if (coords.line < this.first || coords.ch < 0) { return 0 }\n var sepSize = this.lineSeparator().length;\n this.iter(this.first, coords.line, function (line) { // iter aborts when callback returns a truthy value\n index += line.text.length + sepSize;\n });\n return index\n },\n\n copy: function(copyHistory) {\n var doc = new Doc(getLines(this, this.first, this.first + this.size),\n this.modeOption, this.first, this.lineSep, this.direction);\n doc.scrollTop = this.scrollTop; doc.scrollLeft = this.scrollLeft;\n doc.sel = this.sel;\n doc.extend = false;\n if (copyHistory) {\n doc.history.undoDepth = this.history.undoDepth;\n doc.setHistory(this.getHistory());\n }\n return doc\n },\n\n linkedDoc: function(options) {\n if (!options) { options = {}; }\n var from = this.first, to = this.first + this.size;\n if (options.from != null && options.from > from) { from = options.from; }\n if (options.to != null && options.to < to) { to = options.to; }\n var copy = new Doc(getLines(this, from, to), options.mode || this.modeOption, from, this.lineSep, this.direction);\n if (options.sharedHist) { copy.history = this.history\n ; }(this.linked || (this.linked = [])).push({doc: copy, sharedHist: options.sharedHist});\n copy.linked = [{doc: this, isParent: true, sharedHist: options.sharedHist}];\n copySharedMarkers(copy, findSharedMarkers(this));\n return copy\n },\n unlinkDoc: function(other) {\n if (other instanceof CodeMirror) { other = other.doc; }\n if (this.linked) { for (var i = 0; i < this.linked.length; ++i) {\n var link = this.linked[i];\n if (link.doc != other) { continue }\n this.linked.splice(i, 1);\n other.unlinkDoc(this);\n detachSharedMarkers(findSharedMarkers(this));\n break\n } }\n // If the histories were shared, split them again\n if (other.history == this.history) {\n var splitIds = [other.id];\n linkedDocs(other, function (doc) { return splitIds.push(doc.id); }, true);\n other.history = new History(null);\n other.history.done = copyHistoryArray(this.history.done, splitIds);\n other.history.undone = copyHistoryArray(this.history.undone, splitIds);\n }\n },\n iterLinkedDocs: function(f) {linkedDocs(this, f);},\n\n getMode: function() {return this.mode},\n getEditor: function() {return this.cm},\n\n splitLines: function(str) {\n if (this.lineSep) { return str.split(this.lineSep) }\n return splitLinesAuto(str)\n },\n lineSeparator: function() { return this.lineSep || \"\\n\" },\n\n setDirection: docMethodOp(function (dir) {\n if (dir != \"rtl\") { dir = \"ltr\"; }\n if (dir == this.direction) { return }\n this.direction = dir;\n this.iter(function (line) { return line.order = null; });\n if (this.cm) { directionChanged(this.cm); }\n })\n });\n\n // Public alias.\n Doc.prototype.eachLine = Doc.prototype.iter;\n\n // Kludge to work around strange IE behavior where it'll sometimes\n // re-fire a series of drag-related events right after the drop (#1551)\n var lastDrop = 0;\n\n function onDrop(e) {\n var cm = this;\n clearDragCursor(cm);\n if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e))\n { return }\n e_preventDefault(e);\n if (ie) { lastDrop = +new Date; }\n var pos = posFromMouse(cm, e, true), files = e.dataTransfer.files;\n if (!pos || cm.isReadOnly()) { return }\n // Might be a file drop, in which case we simply extract the text\n // and insert it.\n if (files && files.length && window.FileReader && window.File) {\n var n = files.length, text = Array(n), read = 0;\n var markAsReadAndPasteIfAllFilesAreRead = function () {\n if (++read == n) {\n operation(cm, function () {\n pos = clipPos(cm.doc, pos);\n var change = {from: pos, to: pos,\n text: cm.doc.splitLines(\n text.filter(function (t) { return t != null; }).join(cm.doc.lineSeparator())),\n origin: \"paste\"};\n makeChange(cm.doc, change);\n setSelectionReplaceHistory(cm.doc, simpleSelection(clipPos(cm.doc, pos), clipPos(cm.doc, changeEnd(change))));\n })();\n }\n };\n var readTextFromFile = function (file, i) {\n if (cm.options.allowDropFileTypes &&\n indexOf(cm.options.allowDropFileTypes, file.type) == -1) {\n markAsReadAndPasteIfAllFilesAreRead();\n return\n }\n var reader = new FileReader;\n reader.onerror = function () { return markAsReadAndPasteIfAllFilesAreRead(); };\n reader.onload = function () {\n var content = reader.result;\n if (/[\\x00-\\x08\\x0e-\\x1f]{2}/.test(content)) {\n markAsReadAndPasteIfAllFilesAreRead();\n return\n }\n text[i] = content;\n markAsReadAndPasteIfAllFilesAreRead();\n };\n reader.readAsText(file);\n };\n for (var i = 0; i < files.length; i++) { readTextFromFile(files[i], i); }\n } else { // Normal drop\n // Don't do a replace if the drop happened inside of the selected text.\n if (cm.state.draggingText && cm.doc.sel.contains(pos) > -1) {\n cm.state.draggingText(e);\n // Ensure the editor is re-focused\n setTimeout(function () { return cm.display.input.focus(); }, 20);\n return\n }\n try {\n var text$1 = e.dataTransfer.getData(\"Text\");\n if (text$1) {\n var selected;\n if (cm.state.draggingText && !cm.state.draggingText.copy)\n { selected = cm.listSelections(); }\n setSelectionNoUndo(cm.doc, simpleSelection(pos, pos));\n if (selected) { for (var i$1 = 0; i$1 < selected.length; ++i$1)\n { replaceRange(cm.doc, \"\", selected[i$1].anchor, selected[i$1].head, \"drag\"); } }\n cm.replaceSelection(text$1, \"around\", \"paste\");\n cm.display.input.focus();\n }\n }\n catch(e$1){}\n }\n }\n\n function onDragStart(cm, e) {\n if (ie && (!cm.state.draggingText || +new Date - lastDrop < 100)) { e_stop(e); return }\n if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) { return }\n\n e.dataTransfer.setData(\"Text\", cm.getSelection());\n e.dataTransfer.effectAllowed = \"copyMove\";\n\n // Use dummy image instead of default browsers image.\n // Recent Safari (~6.0.2) have a tendency to segfault when this happens, so we don't do it there.\n if (e.dataTransfer.setDragImage && !safari) {\n var img = elt(\"img\", null, null, \"position: fixed; left: 0; top: 0;\");\n img.src = \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\";\n if (presto) {\n img.width = img.height = 1;\n cm.display.wrapper.appendChild(img);\n // Force a relayout, or Opera won't use our image for some obscure reason\n img._top = img.offsetTop;\n }\n e.dataTransfer.setDragImage(img, 0, 0);\n if (presto) { img.parentNode.removeChild(img); }\n }\n }\n\n function onDragOver(cm, e) {\n var pos = posFromMouse(cm, e);\n if (!pos) { return }\n var frag = document.createDocumentFragment();\n drawSelectionCursor(cm, pos, frag);\n if (!cm.display.dragCursor) {\n cm.display.dragCursor = elt(\"div\", null, \"CodeMirror-cursors CodeMirror-dragcursors\");\n cm.display.lineSpace.insertBefore(cm.display.dragCursor, cm.display.cursorDiv);\n }\n removeChildrenAndAdd(cm.display.dragCursor, frag);\n }\n\n function clearDragCursor(cm) {\n if (cm.display.dragCursor) {\n cm.display.lineSpace.removeChild(cm.display.dragCursor);\n cm.display.dragCursor = null;\n }\n }\n\n // These must be handled carefully, because naively registering a\n // handler for each editor will cause the editors to never be\n // garbage collected.\n\n function forEachCodeMirror(f) {\n if (!document.getElementsByClassName) { return }\n var byClass = document.getElementsByClassName(\"CodeMirror\"), editors = [];\n for (var i = 0; i < byClass.length; i++) {\n var cm = byClass[i].CodeMirror;\n if (cm) { editors.push(cm); }\n }\n if (editors.length) { editors[0].operation(function () {\n for (var i = 0; i < editors.length; i++) { f(editors[i]); }\n }); }\n }\n\n var globalsRegistered = false;\n function ensureGlobalHandlers() {\n if (globalsRegistered) { return }\n registerGlobalHandlers();\n globalsRegistered = true;\n }\n function registerGlobalHandlers() {\n // When the window resizes, we need to refresh active editors.\n var resizeTimer;\n on(window, \"resize\", function () {\n if (resizeTimer == null) { resizeTimer = setTimeout(function () {\n resizeTimer = null;\n forEachCodeMirror(onResize);\n }, 100); }\n });\n // When the window loses focus, we want to show the editor as blurred\n on(window, \"blur\", function () { return forEachCodeMirror(onBlur); });\n }\n // Called when the window resizes\n function onResize(cm) {\n var d = cm.display;\n // Might be a text scaling operation, clear size caches.\n d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n d.scrollbarsClipped = false;\n cm.setSize();\n }\n\n var keyNames = {\n 3: \"Pause\", 8: \"Backspace\", 9: \"Tab\", 13: \"Enter\", 16: \"Shift\", 17: \"Ctrl\", 18: \"Alt\",\n 19: \"Pause\", 20: \"CapsLock\", 27: \"Esc\", 32: \"Space\", 33: \"PageUp\", 34: \"PageDown\", 35: \"End\",\n 36: \"Home\", 37: \"Left\", 38: \"Up\", 39: \"Right\", 40: \"Down\", 44: \"PrintScrn\", 45: \"Insert\",\n 46: \"Delete\", 59: \";\", 61: \"=\", 91: \"Mod\", 92: \"Mod\", 93: \"Mod\",\n 106: \"*\", 107: \"=\", 109: \"-\", 110: \".\", 111: \"/\", 145: \"ScrollLock\",\n 173: \"-\", 186: \";\", 187: \"=\", 188: \",\", 189: \"-\", 190: \".\", 191: \"/\", 192: \"`\", 219: \"[\", 220: \"\\\\\",\n 221: \"]\", 222: \"'\", 224: \"Mod\", 63232: \"Up\", 63233: \"Down\", 63234: \"Left\", 63235: \"Right\", 63272: \"Delete\",\n 63273: \"Home\", 63275: \"End\", 63276: \"PageUp\", 63277: \"PageDown\", 63302: \"Insert\"\n };\n\n // Number keys\n for (var i = 0; i < 10; i++) { keyNames[i + 48] = keyNames[i + 96] = String(i); }\n // Alphabetic keys\n for (var i$1 = 65; i$1 <= 90; i$1++) { keyNames[i$1] = String.fromCharCode(i$1); }\n // Function keys\n for (var i$2 = 1; i$2 <= 12; i$2++) { keyNames[i$2 + 111] = keyNames[i$2 + 63235] = \"F\" + i$2; }\n\n var keyMap = {};\n\n keyMap.basic = {\n \"Left\": \"goCharLeft\", \"Right\": \"goCharRight\", \"Up\": \"goLineUp\", \"Down\": \"goLineDown\",\n \"End\": \"goLineEnd\", \"Home\": \"goLineStartSmart\", \"PageUp\": \"goPageUp\", \"PageDown\": \"goPageDown\",\n \"Delete\": \"delCharAfter\", \"Backspace\": \"delCharBefore\", \"Shift-Backspace\": \"delCharBefore\",\n \"Tab\": \"defaultTab\", \"Shift-Tab\": \"indentAuto\",\n \"Enter\": \"newlineAndIndent\", \"Insert\": \"toggleOverwrite\",\n \"Esc\": \"singleSelection\"\n };\n // Note that the save and find-related commands aren't defined by\n // default. User code or addons can define them. Unknown commands\n // are simply ignored.\n keyMap.pcDefault = {\n \"Ctrl-A\": \"selectAll\", \"Ctrl-D\": \"deleteLine\", \"Ctrl-Z\": \"undo\", \"Shift-Ctrl-Z\": \"redo\", \"Ctrl-Y\": \"redo\",\n \"Ctrl-Home\": \"goDocStart\", \"Ctrl-End\": \"goDocEnd\", \"Ctrl-Up\": \"goLineUp\", \"Ctrl-Down\": \"goLineDown\",\n \"Ctrl-Left\": \"goGroupLeft\", \"Ctrl-Right\": \"goGroupRight\", \"Alt-Left\": \"goLineStart\", \"Alt-Right\": \"goLineEnd\",\n \"Ctrl-Backspace\": \"delGroupBefore\", \"Ctrl-Delete\": \"delGroupAfter\", \"Ctrl-S\": \"save\", \"Ctrl-F\": \"find\",\n \"Ctrl-G\": \"findNext\", \"Shift-Ctrl-G\": \"findPrev\", \"Shift-Ctrl-F\": \"replace\", \"Shift-Ctrl-R\": \"replaceAll\",\n \"Ctrl-[\": \"indentLess\", \"Ctrl-]\": \"indentMore\",\n \"Ctrl-U\": \"undoSelection\", \"Shift-Ctrl-U\": \"redoSelection\", \"Alt-U\": \"redoSelection\",\n \"fallthrough\": \"basic\"\n };\n // Very basic readline/emacs-style bindings, which are standard on Mac.\n keyMap.emacsy = {\n \"Ctrl-F\": \"goCharRight\", \"Ctrl-B\": \"goCharLeft\", \"Ctrl-P\": \"goLineUp\", \"Ctrl-N\": \"goLineDown\",\n \"Ctrl-A\": \"goLineStart\", \"Ctrl-E\": \"goLineEnd\", \"Ctrl-V\": \"goPageDown\", \"Shift-Ctrl-V\": \"goPageUp\",\n \"Ctrl-D\": \"delCharAfter\", \"Ctrl-H\": \"delCharBefore\", \"Alt-Backspace\": \"delWordBefore\", \"Ctrl-K\": \"killLine\",\n \"Ctrl-T\": \"transposeChars\", \"Ctrl-O\": \"openLine\"\n };\n keyMap.macDefault = {\n \"Cmd-A\": \"selectAll\", \"Cmd-D\": \"deleteLine\", \"Cmd-Z\": \"undo\", \"Shift-Cmd-Z\": \"redo\", \"Cmd-Y\": \"redo\",\n \"Cmd-Home\": \"goDocStart\", \"Cmd-Up\": \"goDocStart\", \"Cmd-End\": \"goDocEnd\", \"Cmd-Down\": \"goDocEnd\", \"Alt-Left\": \"goGroupLeft\",\n \"Alt-Right\": \"goGroupRight\", \"Cmd-Left\": \"goLineLeft\", \"Cmd-Right\": \"goLineRight\", \"Alt-Backspace\": \"delGroupBefore\",\n \"Ctrl-Alt-Backspace\": \"delGroupAfter\", \"Alt-Delete\": \"delGroupAfter\", \"Cmd-S\": \"save\", \"Cmd-F\": \"find\",\n \"Cmd-G\": \"findNext\", \"Shift-Cmd-G\": \"findPrev\", \"Cmd-Alt-F\": \"replace\", \"Shift-Cmd-Alt-F\": \"replaceAll\",\n \"Cmd-[\": \"indentLess\", \"Cmd-]\": \"indentMore\", \"Cmd-Backspace\": \"delWrappedLineLeft\", \"Cmd-Delete\": \"delWrappedLineRight\",\n \"Cmd-U\": \"undoSelection\", \"Shift-Cmd-U\": \"redoSelection\", \"Ctrl-Up\": \"goDocStart\", \"Ctrl-Down\": \"goDocEnd\",\n \"fallthrough\": [\"basic\", \"emacsy\"]\n };\n keyMap[\"default\"] = mac ? keyMap.macDefault : keyMap.pcDefault;\n\n // KEYMAP DISPATCH\n\n function normalizeKeyName(name) {\n var parts = name.split(/-(?!$)/);\n name = parts[parts.length - 1];\n var alt, ctrl, shift, cmd;\n for (var i = 0; i < parts.length - 1; i++) {\n var mod = parts[i];\n if (/^(cmd|meta|m)$/i.test(mod)) { cmd = true; }\n else if (/^a(lt)?$/i.test(mod)) { alt = true; }\n else if (/^(c|ctrl|control)$/i.test(mod)) { ctrl = true; }\n else if (/^s(hift)?$/i.test(mod)) { shift = true; }\n else { throw new Error(\"Unrecognized modifier name: \" + mod) }\n }\n if (alt) { name = \"Alt-\" + name; }\n if (ctrl) { name = \"Ctrl-\" + name; }\n if (cmd) { name = \"Cmd-\" + name; }\n if (shift) { name = \"Shift-\" + name; }\n return name\n }\n\n // This is a kludge to keep keymaps mostly working as raw objects\n // (backwards compatibility) while at the same time support features\n // like normalization and multi-stroke key bindings. It compiles a\n // new normalized keymap, and then updates the old object to reflect\n // this.\n function normalizeKeyMap(keymap) {\n var copy = {};\n for (var keyname in keymap) { if (keymap.hasOwnProperty(keyname)) {\n var value = keymap[keyname];\n if (/^(name|fallthrough|(de|at)tach)$/.test(keyname)) { continue }\n if (value == \"...\") { delete keymap[keyname]; continue }\n\n var keys = map(keyname.split(\" \"), normalizeKeyName);\n for (var i = 0; i < keys.length; i++) {\n var val = (void 0), name = (void 0);\n if (i == keys.length - 1) {\n name = keys.join(\" \");\n val = value;\n } else {\n name = keys.slice(0, i + 1).join(\" \");\n val = \"...\";\n }\n var prev = copy[name];\n if (!prev) { copy[name] = val; }\n else if (prev != val) { throw new Error(\"Inconsistent bindings for \" + name) }\n }\n delete keymap[keyname];\n } }\n for (var prop in copy) { keymap[prop] = copy[prop]; }\n return keymap\n }\n\n function lookupKey(key, map, handle, context) {\n map = getKeyMap(map);\n var found = map.call ? map.call(key, context) : map[key];\n if (found === false) { return \"nothing\" }\n if (found === \"...\") { return \"multi\" }\n if (found != null && handle(found)) { return \"handled\" }\n\n if (map.fallthrough) {\n if (Object.prototype.toString.call(map.fallthrough) != \"[object Array]\")\n { return lookupKey(key, map.fallthrough, handle, context) }\n for (var i = 0; i < map.fallthrough.length; i++) {\n var result = lookupKey(key, map.fallthrough[i], handle, context);\n if (result) { return result }\n }\n }\n }\n\n // Modifier key presses don't count as 'real' key presses for the\n // purpose of keymap fallthrough.\n function isModifierKey(value) {\n var name = typeof value == \"string\" ? value : keyNames[value.keyCode];\n return name == \"Ctrl\" || name == \"Alt\" || name == \"Shift\" || name == \"Mod\"\n }\n\n function addModifierNames(name, event, noShift) {\n var base = name;\n if (event.altKey && base != \"Alt\") { name = \"Alt-\" + name; }\n if ((flipCtrlCmd ? event.metaKey : event.ctrlKey) && base != \"Ctrl\") { name = \"Ctrl-\" + name; }\n if ((flipCtrlCmd ? event.ctrlKey : event.metaKey) && base != \"Mod\") { name = \"Cmd-\" + name; }\n if (!noShift && event.shiftKey && base != \"Shift\") { name = \"Shift-\" + name; }\n return name\n }\n\n // Look up the name of a key as indicated by an event object.\n function keyName(event, noShift) {\n if (presto && event.keyCode == 34 && event[\"char\"]) { return false }\n var name = keyNames[event.keyCode];\n if (name == null || event.altGraphKey) { return false }\n // Ctrl-ScrollLock has keyCode 3, same as Ctrl-Pause,\n // so we'll use event.code when available (Chrome 48+, FF 38+, Safari 10.1+)\n if (event.keyCode == 3 && event.code) { name = event.code; }\n return addModifierNames(name, event, noShift)\n }\n\n function getKeyMap(val) {\n return typeof val == \"string\" ? keyMap[val] : val\n }\n\n // Helper for deleting text near the selection(s), used to implement\n // backspace, delete, and similar functionality.\n function deleteNearSelection(cm, compute) {\n var ranges = cm.doc.sel.ranges, kill = [];\n // Build up a set of ranges to kill first, merging overlapping\n // ranges.\n for (var i = 0; i < ranges.length; i++) {\n var toKill = compute(ranges[i]);\n while (kill.length && cmp(toKill.from, lst(kill).to) <= 0) {\n var replaced = kill.pop();\n if (cmp(replaced.from, toKill.from) < 0) {\n toKill.from = replaced.from;\n break\n }\n }\n kill.push(toKill);\n }\n // Next, remove those actual ranges.\n runInOp(cm, function () {\n for (var i = kill.length - 1; i >= 0; i--)\n { replaceRange(cm.doc, \"\", kill[i].from, kill[i].to, \"+delete\"); }\n ensureCursorVisible(cm);\n });\n }\n\n function moveCharLogically(line, ch, dir) {\n var target = skipExtendingChars(line.text, ch + dir, dir);\n return target < 0 || target > line.text.length ? null : target\n }\n\n function moveLogically(line, start, dir) {\n var ch = moveCharLogically(line, start.ch, dir);\n return ch == null ? null : new Pos(start.line, ch, dir < 0 ? \"after\" : \"before\")\n }\n\n function endOfLine(visually, cm, lineObj, lineNo, dir) {\n if (visually) {\n if (cm.doc.direction == \"rtl\") { dir = -dir; }\n var order = getOrder(lineObj, cm.doc.direction);\n if (order) {\n var part = dir < 0 ? lst(order) : order[0];\n var moveInStorageOrder = (dir < 0) == (part.level == 1);\n var sticky = moveInStorageOrder ? \"after\" : \"before\";\n var ch;\n // With a wrapped rtl chunk (possibly spanning multiple bidi parts),\n // it could be that the last bidi part is not on the last visual line,\n // since visual lines contain content order-consecutive chunks.\n // Thus, in rtl, we are looking for the first (content-order) character\n // in the rtl chunk that is on the last line (that is, the same line\n // as the last (content-order) character).\n if (part.level > 0 || cm.doc.direction == \"rtl\") {\n var prep = prepareMeasureForLine(cm, lineObj);\n ch = dir < 0 ? lineObj.text.length - 1 : 0;\n var targetTop = measureCharPrepared(cm, prep, ch).top;\n ch = findFirst(function (ch) { return measureCharPrepared(cm, prep, ch).top == targetTop; }, (dir < 0) == (part.level == 1) ? part.from : part.to - 1, ch);\n if (sticky == \"before\") { ch = moveCharLogically(lineObj, ch, 1); }\n } else { ch = dir < 0 ? part.to : part.from; }\n return new Pos(lineNo, ch, sticky)\n }\n }\n return new Pos(lineNo, dir < 0 ? lineObj.text.length : 0, dir < 0 ? \"before\" : \"after\")\n }\n\n function moveVisually(cm, line, start, dir) {\n var bidi = getOrder(line, cm.doc.direction);\n if (!bidi) { return moveLogically(line, start, dir) }\n if (start.ch >= line.text.length) {\n start.ch = line.text.length;\n start.sticky = \"before\";\n } else if (start.ch <= 0) {\n start.ch = 0;\n start.sticky = \"after\";\n }\n var partPos = getBidiPartAt(bidi, start.ch, start.sticky), part = bidi[partPos];\n if (cm.doc.direction == \"ltr\" && part.level % 2 == 0 && (dir > 0 ? part.to > start.ch : part.from < start.ch)) {\n // Case 1: We move within an ltr part in an ltr editor. Even with wrapped lines,\n // nothing interesting happens.\n return moveLogically(line, start, dir)\n }\n\n var mv = function (pos, dir) { return moveCharLogically(line, pos instanceof Pos ? pos.ch : pos, dir); };\n var prep;\n var getWrappedLineExtent = function (ch) {\n if (!cm.options.lineWrapping) { return {begin: 0, end: line.text.length} }\n prep = prep || prepareMeasureForLine(cm, line);\n return wrappedLineExtentChar(cm, line, prep, ch)\n };\n var wrappedLineExtent = getWrappedLineExtent(start.sticky == \"before\" ? mv(start, -1) : start.ch);\n\n if (cm.doc.direction == \"rtl\" || part.level == 1) {\n var moveInStorageOrder = (part.level == 1) == (dir < 0);\n var ch = mv(start, moveInStorageOrder ? 1 : -1);\n if (ch != null && (!moveInStorageOrder ? ch >= part.from && ch >= wrappedLineExtent.begin : ch <= part.to && ch <= wrappedLineExtent.end)) {\n // Case 2: We move within an rtl part or in an rtl editor on the same visual line\n var sticky = moveInStorageOrder ? \"before\" : \"after\";\n return new Pos(start.line, ch, sticky)\n }\n }\n\n // Case 3: Could not move within this bidi part in this visual line, so leave\n // the current bidi part\n\n var searchInVisualLine = function (partPos, dir, wrappedLineExtent) {\n var getRes = function (ch, moveInStorageOrder) { return moveInStorageOrder\n ? new Pos(start.line, mv(ch, 1), \"before\")\n : new Pos(start.line, ch, \"after\"); };\n\n for (; partPos >= 0 && partPos < bidi.length; partPos += dir) {\n var part = bidi[partPos];\n var moveInStorageOrder = (dir > 0) == (part.level != 1);\n var ch = moveInStorageOrder ? wrappedLineExtent.begin : mv(wrappedLineExtent.end, -1);\n if (part.from <= ch && ch < part.to) { return getRes(ch, moveInStorageOrder) }\n ch = moveInStorageOrder ? part.from : mv(part.to, -1);\n if (wrappedLineExtent.begin <= ch && ch < wrappedLineExtent.end) { return getRes(ch, moveInStorageOrder) }\n }\n };\n\n // Case 3a: Look for other bidi parts on the same visual line\n var res = searchInVisualLine(partPos + dir, dir, wrappedLineExtent);\n if (res) { return res }\n\n // Case 3b: Look for other bidi parts on the next visual line\n var nextCh = dir > 0 ? wrappedLineExtent.end : mv(wrappedLineExtent.begin, -1);\n if (nextCh != null && !(dir > 0 && nextCh == line.text.length)) {\n res = searchInVisualLine(dir > 0 ? 0 : bidi.length - 1, dir, getWrappedLineExtent(nextCh));\n if (res) { return res }\n }\n\n // Case 4: Nowhere to move\n return null\n }\n\n // Commands are parameter-less actions that can be performed on an\n // editor, mostly used for keybindings.\n var commands = {\n selectAll: selectAll,\n singleSelection: function (cm) { return cm.setSelection(cm.getCursor(\"anchor\"), cm.getCursor(\"head\"), sel_dontScroll); },\n killLine: function (cm) { return deleteNearSelection(cm, function (range) {\n if (range.empty()) {\n var len = getLine(cm.doc, range.head.line).text.length;\n if (range.head.ch == len && range.head.line < cm.lastLine())\n { return {from: range.head, to: Pos(range.head.line + 1, 0)} }\n else\n { return {from: range.head, to: Pos(range.head.line, len)} }\n } else {\n return {from: range.from(), to: range.to()}\n }\n }); },\n deleteLine: function (cm) { return deleteNearSelection(cm, function (range) { return ({\n from: Pos(range.from().line, 0),\n to: clipPos(cm.doc, Pos(range.to().line + 1, 0))\n }); }); },\n delLineLeft: function (cm) { return deleteNearSelection(cm, function (range) { return ({\n from: Pos(range.from().line, 0), to: range.from()\n }); }); },\n delWrappedLineLeft: function (cm) { return deleteNearSelection(cm, function (range) {\n var top = cm.charCoords(range.head, \"div\").top + 5;\n var leftPos = cm.coordsChar({left: 0, top: top}, \"div\");\n return {from: leftPos, to: range.from()}\n }); },\n delWrappedLineRight: function (cm) { return deleteNearSelection(cm, function (range) {\n var top = cm.charCoords(range.head, \"div\").top + 5;\n var rightPos = cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, \"div\");\n return {from: range.from(), to: rightPos }\n }); },\n undo: function (cm) { return cm.undo(); },\n redo: function (cm) { return cm.redo(); },\n undoSelection: function (cm) { return cm.undoSelection(); },\n redoSelection: function (cm) { return cm.redoSelection(); },\n goDocStart: function (cm) { return cm.extendSelection(Pos(cm.firstLine(), 0)); },\n goDocEnd: function (cm) { return cm.extendSelection(Pos(cm.lastLine())); },\n goLineStart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStart(cm, range.head.line); },\n {origin: \"+move\", bias: 1}\n ); },\n goLineStartSmart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStartSmart(cm, range.head); },\n {origin: \"+move\", bias: 1}\n ); },\n goLineEnd: function (cm) { return cm.extendSelectionsBy(function (range) { return lineEnd(cm, range.head.line); },\n {origin: \"+move\", bias: -1}\n ); },\n goLineRight: function (cm) { return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n return cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, \"div\")\n }, sel_move); },\n goLineLeft: function (cm) { return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n return cm.coordsChar({left: 0, top: top}, \"div\")\n }, sel_move); },\n goLineLeftSmart: function (cm) { return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n var pos = cm.coordsChar({left: 0, top: top}, \"div\");\n if (pos.ch < cm.getLine(pos.line).search(/\\S/)) { return lineStartSmart(cm, range.head) }\n return pos\n }, sel_move); },\n goLineUp: function (cm) { return cm.moveV(-1, \"line\"); },\n goLineDown: function (cm) { return cm.moveV(1, \"line\"); },\n goPageUp: function (cm) { return cm.moveV(-1, \"page\"); },\n goPageDown: function (cm) { return cm.moveV(1, \"page\"); },\n goCharLeft: function (cm) { return cm.moveH(-1, \"char\"); },\n goCharRight: function (cm) { return cm.moveH(1, \"char\"); },\n goColumnLeft: function (cm) { return cm.moveH(-1, \"column\"); },\n goColumnRight: function (cm) { return cm.moveH(1, \"column\"); },\n goWordLeft: function (cm) { return cm.moveH(-1, \"word\"); },\n goGroupRight: function (cm) { return cm.moveH(1, \"group\"); },\n goGroupLeft: function (cm) { return cm.moveH(-1, \"group\"); },\n goWordRight: function (cm) { return cm.moveH(1, \"word\"); },\n delCharBefore: function (cm) { return cm.deleteH(-1, \"codepoint\"); },\n delCharAfter: function (cm) { return cm.deleteH(1, \"char\"); },\n delWordBefore: function (cm) { return cm.deleteH(-1, \"word\"); },\n delWordAfter: function (cm) { return cm.deleteH(1, \"word\"); },\n delGroupBefore: function (cm) { return cm.deleteH(-1, \"group\"); },\n delGroupAfter: function (cm) { return cm.deleteH(1, \"group\"); },\n indentAuto: function (cm) { return cm.indentSelection(\"smart\"); },\n indentMore: function (cm) { return cm.indentSelection(\"add\"); },\n indentLess: function (cm) { return cm.indentSelection(\"subtract\"); },\n insertTab: function (cm) { return cm.replaceSelection(\"\\t\"); },\n insertSoftTab: function (cm) {\n var spaces = [], ranges = cm.listSelections(), tabSize = cm.options.tabSize;\n for (var i = 0; i < ranges.length; i++) {\n var pos = ranges[i].from();\n var col = countColumn(cm.getLine(pos.line), pos.ch, tabSize);\n spaces.push(spaceStr(tabSize - col % tabSize));\n }\n cm.replaceSelections(spaces);\n },\n defaultTab: function (cm) {\n if (cm.somethingSelected()) { cm.indentSelection(\"add\"); }\n else { cm.execCommand(\"insertTab\"); }\n },\n // Swap the two chars left and right of each selection's head.\n // Move cursor behind the two swapped characters afterwards.\n //\n // Doesn't consider line feeds a character.\n // Doesn't scan more than one line above to find a character.\n // Doesn't do anything on an empty line.\n // Doesn't do anything with non-empty selections.\n transposeChars: function (cm) { return runInOp(cm, function () {\n var ranges = cm.listSelections(), newSel = [];\n for (var i = 0; i < ranges.length; i++) {\n if (!ranges[i].empty()) { continue }\n var cur = ranges[i].head, line = getLine(cm.doc, cur.line).text;\n if (line) {\n if (cur.ch == line.length) { cur = new Pos(cur.line, cur.ch - 1); }\n if (cur.ch > 0) {\n cur = new Pos(cur.line, cur.ch + 1);\n cm.replaceRange(line.charAt(cur.ch - 1) + line.charAt(cur.ch - 2),\n Pos(cur.line, cur.ch - 2), cur, \"+transpose\");\n } else if (cur.line > cm.doc.first) {\n var prev = getLine(cm.doc, cur.line - 1).text;\n if (prev) {\n cur = new Pos(cur.line, 1);\n cm.replaceRange(line.charAt(0) + cm.doc.lineSeparator() +\n prev.charAt(prev.length - 1),\n Pos(cur.line - 1, prev.length - 1), cur, \"+transpose\");\n }\n }\n }\n newSel.push(new Range(cur, cur));\n }\n cm.setSelections(newSel);\n }); },\n newlineAndIndent: function (cm) { return runInOp(cm, function () {\n var sels = cm.listSelections();\n for (var i = sels.length - 1; i >= 0; i--)\n { cm.replaceRange(cm.doc.lineSeparator(), sels[i].anchor, sels[i].head, \"+input\"); }\n sels = cm.listSelections();\n for (var i$1 = 0; i$1 < sels.length; i$1++)\n { cm.indentLine(sels[i$1].from().line, null, true); }\n ensureCursorVisible(cm);\n }); },\n openLine: function (cm) { return cm.replaceSelection(\"\\n\", \"start\"); },\n toggleOverwrite: function (cm) { return cm.toggleOverwrite(); }\n };\n\n\n function lineStart(cm, lineN) {\n var line = getLine(cm.doc, lineN);\n var visual = visualLine(line);\n if (visual != line) { lineN = lineNo(visual); }\n return endOfLine(true, cm, visual, lineN, 1)\n }\n function lineEnd(cm, lineN) {\n var line = getLine(cm.doc, lineN);\n var visual = visualLineEnd(line);\n if (visual != line) { lineN = lineNo(visual); }\n return endOfLine(true, cm, line, lineN, -1)\n }\n function lineStartSmart(cm, pos) {\n var start = lineStart(cm, pos.line);\n var line = getLine(cm.doc, start.line);\n var order = getOrder(line, cm.doc.direction);\n if (!order || order[0].level == 0) {\n var firstNonWS = Math.max(start.ch, line.text.search(/\\S/));\n var inWS = pos.line == start.line && pos.ch <= firstNonWS && pos.ch;\n return Pos(start.line, inWS ? 0 : firstNonWS, start.sticky)\n }\n return start\n }\n\n // Run a handler that was bound to a key.\n function doHandleBinding(cm, bound, dropShift) {\n if (typeof bound == \"string\") {\n bound = commands[bound];\n if (!bound) { return false }\n }\n // Ensure previous input has been read, so that the handler sees a\n // consistent view of the document\n cm.display.input.ensurePolled();\n var prevShift = cm.display.shift, done = false;\n try {\n if (cm.isReadOnly()) { cm.state.suppressEdits = true; }\n if (dropShift) { cm.display.shift = false; }\n done = bound(cm) != Pass;\n } finally {\n cm.display.shift = prevShift;\n cm.state.suppressEdits = false;\n }\n return done\n }\n\n function lookupKeyForEditor(cm, name, handle) {\n for (var i = 0; i < cm.state.keyMaps.length; i++) {\n var result = lookupKey(name, cm.state.keyMaps[i], handle, cm);\n if (result) { return result }\n }\n return (cm.options.extraKeys && lookupKey(name, cm.options.extraKeys, handle, cm))\n || lookupKey(name, cm.options.keyMap, handle, cm)\n }\n\n // Note that, despite the name, this function is also used to check\n // for bound mouse clicks.\n\n var stopSeq = new Delayed;\n\n function dispatchKey(cm, name, e, handle) {\n var seq = cm.state.keySeq;\n if (seq) {\n if (isModifierKey(name)) { return \"handled\" }\n if (/\\'$/.test(name))\n { cm.state.keySeq = null; }\n else\n { stopSeq.set(50, function () {\n if (cm.state.keySeq == seq) {\n cm.state.keySeq = null;\n cm.display.input.reset();\n }\n }); }\n if (dispatchKeyInner(cm, seq + \" \" + name, e, handle)) { return true }\n }\n return dispatchKeyInner(cm, name, e, handle)\n }\n\n function dispatchKeyInner(cm, name, e, handle) {\n var result = lookupKeyForEditor(cm, name, handle);\n\n if (result == \"multi\")\n { cm.state.keySeq = name; }\n if (result == \"handled\")\n { signalLater(cm, \"keyHandled\", cm, name, e); }\n\n if (result == \"handled\" || result == \"multi\") {\n e_preventDefault(e);\n restartBlink(cm);\n }\n\n return !!result\n }\n\n // Handle a key from the keydown event.\n function handleKeyBinding(cm, e) {\n var name = keyName(e, true);\n if (!name) { return false }\n\n if (e.shiftKey && !cm.state.keySeq) {\n // First try to resolve full name (including 'Shift-'). Failing\n // that, see if there is a cursor-motion command (starting with\n // 'go') bound to the keyname without 'Shift-'.\n return dispatchKey(cm, \"Shift-\" + name, e, function (b) { return doHandleBinding(cm, b, true); })\n || dispatchKey(cm, name, e, function (b) {\n if (typeof b == \"string\" ? /^go[A-Z]/.test(b) : b.motion)\n { return doHandleBinding(cm, b) }\n })\n } else {\n return dispatchKey(cm, name, e, function (b) { return doHandleBinding(cm, b); })\n }\n }\n\n // Handle a key from the keypress event\n function handleCharBinding(cm, e, ch) {\n return dispatchKey(cm, \"'\" + ch + \"'\", e, function (b) { return doHandleBinding(cm, b, true); })\n }\n\n var lastStoppedKey = null;\n function onKeyDown(e) {\n var cm = this;\n if (e.target && e.target != cm.display.input.getField()) { return }\n cm.curOp.focus = activeElt(root(cm));\n if (signalDOMEvent(cm, e)) { return }\n // IE does strange things with escape.\n if (ie && ie_version < 11 && e.keyCode == 27) { e.returnValue = false; }\n var code = e.keyCode;\n cm.display.shift = code == 16 || e.shiftKey;\n var handled = handleKeyBinding(cm, e);\n if (presto) {\n lastStoppedKey = handled ? code : null;\n // Opera has no cut event... we try to at least catch the key combo\n if (!handled && code == 88 && !hasCopyEvent && (mac ? e.metaKey : e.ctrlKey))\n { cm.replaceSelection(\"\", null, \"cut\"); }\n }\n if (gecko && !mac && !handled && code == 46 && e.shiftKey && !e.ctrlKey && document.execCommand)\n { document.execCommand(\"cut\"); }\n\n // Turn mouse into crosshair when Alt is held on Mac.\n if (code == 18 && !/\\bCodeMirror-crosshair\\b/.test(cm.display.lineDiv.className))\n { showCrossHair(cm); }\n }\n\n function showCrossHair(cm) {\n var lineDiv = cm.display.lineDiv;\n addClass(lineDiv, \"CodeMirror-crosshair\");\n\n function up(e) {\n if (e.keyCode == 18 || !e.altKey) {\n rmClass(lineDiv, \"CodeMirror-crosshair\");\n off(document, \"keyup\", up);\n off(document, \"mouseover\", up);\n }\n }\n on(document, \"keyup\", up);\n on(document, \"mouseover\", up);\n }\n\n function onKeyUp(e) {\n if (e.keyCode == 16) { this.doc.sel.shift = false; }\n signalDOMEvent(this, e);\n }\n\n function onKeyPress(e) {\n var cm = this;\n if (e.target && e.target != cm.display.input.getField()) { return }\n if (eventInWidget(cm.display, e) || signalDOMEvent(cm, e) || e.ctrlKey && !e.altKey || mac && e.metaKey) { return }\n var keyCode = e.keyCode, charCode = e.charCode;\n if (presto && keyCode == lastStoppedKey) {lastStoppedKey = null; e_preventDefault(e); return}\n if ((presto && (!e.which || e.which < 10)) && handleKeyBinding(cm, e)) { return }\n var ch = String.fromCharCode(charCode == null ? keyCode : charCode);\n // Some browsers fire keypress events for backspace\n if (ch == \"\\x08\") { return }\n if (handleCharBinding(cm, e, ch)) { return }\n cm.display.input.onKeyPress(e);\n }\n\n var DOUBLECLICK_DELAY = 400;\n\n var PastClick = function(time, pos, button) {\n this.time = time;\n this.pos = pos;\n this.button = button;\n };\n\n PastClick.prototype.compare = function (time, pos, button) {\n return this.time + DOUBLECLICK_DELAY > time &&\n cmp(pos, this.pos) == 0 && button == this.button\n };\n\n var lastClick, lastDoubleClick;\n function clickRepeat(pos, button) {\n var now = +new Date;\n if (lastDoubleClick && lastDoubleClick.compare(now, pos, button)) {\n lastClick = lastDoubleClick = null;\n return \"triple\"\n } else if (lastClick && lastClick.compare(now, pos, button)) {\n lastDoubleClick = new PastClick(now, pos, button);\n lastClick = null;\n return \"double\"\n } else {\n lastClick = new PastClick(now, pos, button);\n lastDoubleClick = null;\n return \"single\"\n }\n }\n\n // A mouse down can be a single click, double click, triple click,\n // start of selection drag, start of text drag, new cursor\n // (ctrl-click), rectangle drag (alt-drag), or xwin\n // middle-click-paste. Or it might be a click on something we should\n // not interfere with, such as a scrollbar or widget.\n function onMouseDown(e) {\n var cm = this, display = cm.display;\n if (signalDOMEvent(cm, e) || display.activeTouch && display.input.supportsTouch()) { return }\n display.input.ensurePolled();\n display.shift = e.shiftKey;\n\n if (eventInWidget(display, e)) {\n if (!webkit) {\n // Briefly turn off draggability, to allow widgets to do\n // normal dragging things.\n display.scroller.draggable = false;\n setTimeout(function () { return display.scroller.draggable = true; }, 100);\n }\n return\n }\n if (clickInGutter(cm, e)) { return }\n var pos = posFromMouse(cm, e), button = e_button(e), repeat = pos ? clickRepeat(pos, button) : \"single\";\n win(cm).focus();\n\n // #3261: make sure, that we're not starting a second selection\n if (button == 1 && cm.state.selectingText)\n { cm.state.selectingText(e); }\n\n if (pos && handleMappedButton(cm, button, pos, repeat, e)) { return }\n\n if (button == 1) {\n if (pos) { leftButtonDown(cm, pos, repeat, e); }\n else if (e_target(e) == display.scroller) { e_preventDefault(e); }\n } else if (button == 2) {\n if (pos) { extendSelection(cm.doc, pos); }\n setTimeout(function () { return display.input.focus(); }, 20);\n } else if (button == 3) {\n if (captureRightClick) { cm.display.input.onContextMenu(e); }\n else { delayBlurEvent(cm); }\n }\n }\n\n function handleMappedButton(cm, button, pos, repeat, event) {\n var name = \"Click\";\n if (repeat == \"double\") { name = \"Double\" + name; }\n else if (repeat == \"triple\") { name = \"Triple\" + name; }\n name = (button == 1 ? \"Left\" : button == 2 ? \"Middle\" : \"Right\") + name;\n\n return dispatchKey(cm, addModifierNames(name, event), event, function (bound) {\n if (typeof bound == \"string\") { bound = commands[bound]; }\n if (!bound) { return false }\n var done = false;\n try {\n if (cm.isReadOnly()) { cm.state.suppressEdits = true; }\n done = bound(cm, pos) != Pass;\n } finally {\n cm.state.suppressEdits = false;\n }\n return done\n })\n }\n\n function configureMouse(cm, repeat, event) {\n var option = cm.getOption(\"configureMouse\");\n var value = option ? option(cm, repeat, event) : {};\n if (value.unit == null) {\n var rect = chromeOS ? event.shiftKey && event.metaKey : event.altKey;\n value.unit = rect ? \"rectangle\" : repeat == \"single\" ? \"char\" : repeat == \"double\" ? \"word\" : \"line\";\n }\n if (value.extend == null || cm.doc.extend) { value.extend = cm.doc.extend || event.shiftKey; }\n if (value.addNew == null) { value.addNew = mac ? event.metaKey : event.ctrlKey; }\n if (value.moveOnDrag == null) { value.moveOnDrag = !(mac ? event.altKey : event.ctrlKey); }\n return value\n }\n\n function leftButtonDown(cm, pos, repeat, event) {\n if (ie) { setTimeout(bind(ensureFocus, cm), 0); }\n else { cm.curOp.focus = activeElt(root(cm)); }\n\n var behavior = configureMouse(cm, repeat, event);\n\n var sel = cm.doc.sel, contained;\n if (cm.options.dragDrop && dragAndDrop && !cm.isReadOnly() &&\n repeat == \"single\" && (contained = sel.contains(pos)) > -1 &&\n (cmp((contained = sel.ranges[contained]).from(), pos) < 0 || pos.xRel > 0) &&\n (cmp(contained.to(), pos) > 0 || pos.xRel < 0))\n { leftButtonStartDrag(cm, event, pos, behavior); }\n else\n { leftButtonSelect(cm, event, pos, behavior); }\n }\n\n // Start a text drag. When it ends, see if any dragging actually\n // happen, and treat as a click if it didn't.\n function leftButtonStartDrag(cm, event, pos, behavior) {\n var display = cm.display, moved = false;\n var dragEnd = operation(cm, function (e) {\n if (webkit) { display.scroller.draggable = false; }\n cm.state.draggingText = false;\n if (cm.state.delayingBlurEvent) {\n if (cm.hasFocus()) { cm.state.delayingBlurEvent = false; }\n else { delayBlurEvent(cm); }\n }\n off(display.wrapper.ownerDocument, \"mouseup\", dragEnd);\n off(display.wrapper.ownerDocument, \"mousemove\", mouseMove);\n off(display.scroller, \"dragstart\", dragStart);\n off(display.scroller, \"drop\", dragEnd);\n if (!moved) {\n e_preventDefault(e);\n if (!behavior.addNew)\n { extendSelection(cm.doc, pos, null, null, behavior.extend); }\n // Work around unexplainable focus problem in IE9 (#2127) and Chrome (#3081)\n if ((webkit && !safari) || ie && ie_version == 9)\n { setTimeout(function () {display.wrapper.ownerDocument.body.focus({preventScroll: true}); display.input.focus();}, 20); }\n else\n { display.input.focus(); }\n }\n });\n var mouseMove = function(e2) {\n moved = moved || Math.abs(event.clientX - e2.clientX) + Math.abs(event.clientY - e2.clientY) >= 10;\n };\n var dragStart = function () { return moved = true; };\n // Let the drag handler handle this.\n if (webkit) { display.scroller.draggable = true; }\n cm.state.draggingText = dragEnd;\n dragEnd.copy = !behavior.moveOnDrag;\n on(display.wrapper.ownerDocument, \"mouseup\", dragEnd);\n on(display.wrapper.ownerDocument, \"mousemove\", mouseMove);\n on(display.scroller, \"dragstart\", dragStart);\n on(display.scroller, \"drop\", dragEnd);\n\n cm.state.delayingBlurEvent = true;\n setTimeout(function () { return display.input.focus(); }, 20);\n // IE's approach to draggable\n if (display.scroller.dragDrop) { display.scroller.dragDrop(); }\n }\n\n function rangeForUnit(cm, pos, unit) {\n if (unit == \"char\") { return new Range(pos, pos) }\n if (unit == \"word\") { return cm.findWordAt(pos) }\n if (unit == \"line\") { return new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))) }\n var result = unit(cm, pos);\n return new Range(result.from, result.to)\n }\n\n // Normal selection, as opposed to text dragging.\n function leftButtonSelect(cm, event, start, behavior) {\n if (ie) { delayBlurEvent(cm); }\n var display = cm.display, doc = cm.doc;\n e_preventDefault(event);\n\n var ourRange, ourIndex, startSel = doc.sel, ranges = startSel.ranges;\n if (behavior.addNew && !behavior.extend) {\n ourIndex = doc.sel.contains(start);\n if (ourIndex > -1)\n { ourRange = ranges[ourIndex]; }\n else\n { ourRange = new Range(start, start); }\n } else {\n ourRange = doc.sel.primary();\n ourIndex = doc.sel.primIndex;\n }\n\n if (behavior.unit == \"rectangle\") {\n if (!behavior.addNew) { ourRange = new Range(start, start); }\n start = posFromMouse(cm, event, true, true);\n ourIndex = -1;\n } else {\n var range = rangeForUnit(cm, start, behavior.unit);\n if (behavior.extend)\n { ourRange = extendRange(ourRange, range.anchor, range.head, behavior.extend); }\n else\n { ourRange = range; }\n }\n\n if (!behavior.addNew) {\n ourIndex = 0;\n setSelection(doc, new Selection([ourRange], 0), sel_mouse);\n startSel = doc.sel;\n } else if (ourIndex == -1) {\n ourIndex = ranges.length;\n setSelection(doc, normalizeSelection(cm, ranges.concat([ourRange]), ourIndex),\n {scroll: false, origin: \"*mouse\"});\n } else if (ranges.length > 1 && ranges[ourIndex].empty() && behavior.unit == \"char\" && !behavior.extend) {\n setSelection(doc, normalizeSelection(cm, ranges.slice(0, ourIndex).concat(ranges.slice(ourIndex + 1)), 0),\n {scroll: false, origin: \"*mouse\"});\n startSel = doc.sel;\n } else {\n replaceOneSelection(doc, ourIndex, ourRange, sel_mouse);\n }\n\n var lastPos = start;\n function extendTo(pos) {\n if (cmp(lastPos, pos) == 0) { return }\n lastPos = pos;\n\n if (behavior.unit == \"rectangle\") {\n var ranges = [], tabSize = cm.options.tabSize;\n var startCol = countColumn(getLine(doc, start.line).text, start.ch, tabSize);\n var posCol = countColumn(getLine(doc, pos.line).text, pos.ch, tabSize);\n var left = Math.min(startCol, posCol), right = Math.max(startCol, posCol);\n for (var line = Math.min(start.line, pos.line), end = Math.min(cm.lastLine(), Math.max(start.line, pos.line));\n line <= end; line++) {\n var text = getLine(doc, line).text, leftPos = findColumn(text, left, tabSize);\n if (left == right)\n { ranges.push(new Range(Pos(line, leftPos), Pos(line, leftPos))); }\n else if (text.length > leftPos)\n { ranges.push(new Range(Pos(line, leftPos), Pos(line, findColumn(text, right, tabSize)))); }\n }\n if (!ranges.length) { ranges.push(new Range(start, start)); }\n setSelection(doc, normalizeSelection(cm, startSel.ranges.slice(0, ourIndex).concat(ranges), ourIndex),\n {origin: \"*mouse\", scroll: false});\n cm.scrollIntoView(pos);\n } else {\n var oldRange = ourRange;\n var range = rangeForUnit(cm, pos, behavior.unit);\n var anchor = oldRange.anchor, head;\n if (cmp(range.anchor, anchor) > 0) {\n head = range.head;\n anchor = minPos(oldRange.from(), range.anchor);\n } else {\n head = range.anchor;\n anchor = maxPos(oldRange.to(), range.head);\n }\n var ranges$1 = startSel.ranges.slice(0);\n ranges$1[ourIndex] = bidiSimplify(cm, new Range(clipPos(doc, anchor), head));\n setSelection(doc, normalizeSelection(cm, ranges$1, ourIndex), sel_mouse);\n }\n }\n\n var editorSize = display.wrapper.getBoundingClientRect();\n // Used to ensure timeout re-tries don't fire when another extend\n // happened in the meantime (clearTimeout isn't reliable -- at\n // least on Chrome, the timeouts still happen even when cleared,\n // if the clear happens after their scheduled firing time).\n var counter = 0;\n\n function extend(e) {\n var curCount = ++counter;\n var cur = posFromMouse(cm, e, true, behavior.unit == \"rectangle\");\n if (!cur) { return }\n if (cmp(cur, lastPos) != 0) {\n cm.curOp.focus = activeElt(root(cm));\n extendTo(cur);\n var visible = visibleLines(display, doc);\n if (cur.line >= visible.to || cur.line < visible.from)\n { setTimeout(operation(cm, function () {if (counter == curCount) { extend(e); }}), 150); }\n } else {\n var outside = e.clientY < editorSize.top ? -20 : e.clientY > editorSize.bottom ? 20 : 0;\n if (outside) { setTimeout(operation(cm, function () {\n if (counter != curCount) { return }\n display.scroller.scrollTop += outside;\n extend(e);\n }), 50); }\n }\n }\n\n function done(e) {\n cm.state.selectingText = false;\n counter = Infinity;\n // If e is null or undefined we interpret this as someone trying\n // to explicitly cancel the selection rather than the user\n // letting go of the mouse button.\n if (e) {\n e_preventDefault(e);\n display.input.focus();\n }\n off(display.wrapper.ownerDocument, \"mousemove\", move);\n off(display.wrapper.ownerDocument, \"mouseup\", up);\n doc.history.lastSelOrigin = null;\n }\n\n var move = operation(cm, function (e) {\n if (e.buttons === 0 || !e_button(e)) { done(e); }\n else { extend(e); }\n });\n var up = operation(cm, done);\n cm.state.selectingText = up;\n on(display.wrapper.ownerDocument, \"mousemove\", move);\n on(display.wrapper.ownerDocument, \"mouseup\", up);\n }\n\n // Used when mouse-selecting to adjust the anchor to the proper side\n // of a bidi jump depending on the visual position of the head.\n function bidiSimplify(cm, range) {\n var anchor = range.anchor;\n var head = range.head;\n var anchorLine = getLine(cm.doc, anchor.line);\n if (cmp(anchor, head) == 0 && anchor.sticky == head.sticky) { return range }\n var order = getOrder(anchorLine);\n if (!order) { return range }\n var index = getBidiPartAt(order, anchor.ch, anchor.sticky), part = order[index];\n if (part.from != anchor.ch && part.to != anchor.ch) { return range }\n var boundary = index + ((part.from == anchor.ch) == (part.level != 1) ? 0 : 1);\n if (boundary == 0 || boundary == order.length) { return range }\n\n // Compute the relative visual position of the head compared to the\n // anchor (<0 is to the left, >0 to the right)\n var leftSide;\n if (head.line != anchor.line) {\n leftSide = (head.line - anchor.line) * (cm.doc.direction == \"ltr\" ? 1 : -1) > 0;\n } else {\n var headIndex = getBidiPartAt(order, head.ch, head.sticky);\n var dir = headIndex - index || (head.ch - anchor.ch) * (part.level == 1 ? -1 : 1);\n if (headIndex == boundary - 1 || headIndex == boundary)\n { leftSide = dir < 0; }\n else\n { leftSide = dir > 0; }\n }\n\n var usePart = order[boundary + (leftSide ? -1 : 0)];\n var from = leftSide == (usePart.level == 1);\n var ch = from ? usePart.from : usePart.to, sticky = from ? \"after\" : \"before\";\n return anchor.ch == ch && anchor.sticky == sticky ? range : new Range(new Pos(anchor.line, ch, sticky), head)\n }\n\n\n // Determines whether an event happened in the gutter, and fires the\n // handlers for the corresponding event.\n function gutterEvent(cm, e, type, prevent) {\n var mX, mY;\n if (e.touches) {\n mX = e.touches[0].clientX;\n mY = e.touches[0].clientY;\n } else {\n try { mX = e.clientX; mY = e.clientY; }\n catch(e$1) { return false }\n }\n if (mX >= Math.floor(cm.display.gutters.getBoundingClientRect().right)) { return false }\n if (prevent) { e_preventDefault(e); }\n\n var display = cm.display;\n var lineBox = display.lineDiv.getBoundingClientRect();\n\n if (mY > lineBox.bottom || !hasHandler(cm, type)) { return e_defaultPrevented(e) }\n mY -= lineBox.top - display.viewOffset;\n\n for (var i = 0; i < cm.display.gutterSpecs.length; ++i) {\n var g = display.gutters.childNodes[i];\n if (g && g.getBoundingClientRect().right >= mX) {\n var line = lineAtHeight(cm.doc, mY);\n var gutter = cm.display.gutterSpecs[i];\n signal(cm, type, cm, line, gutter.className, e);\n return e_defaultPrevented(e)\n }\n }\n }\n\n function clickInGutter(cm, e) {\n return gutterEvent(cm, e, \"gutterClick\", true)\n }\n\n // CONTEXT MENU HANDLING\n\n // To make the context menu work, we need to briefly unhide the\n // textarea (making it as unobtrusive as possible) to let the\n // right-click take effect on it.\n function onContextMenu(cm, e) {\n if (eventInWidget(cm.display, e) || contextMenuInGutter(cm, e)) { return }\n if (signalDOMEvent(cm, e, \"contextmenu\")) { return }\n if (!captureRightClick) { cm.display.input.onContextMenu(e); }\n }\n\n function contextMenuInGutter(cm, e) {\n if (!hasHandler(cm, \"gutterContextMenu\")) { return false }\n return gutterEvent(cm, e, \"gutterContextMenu\", false)\n }\n\n function themeChanged(cm) {\n cm.display.wrapper.className = cm.display.wrapper.className.replace(/\\s*cm-s-\\S+/g, \"\") +\n cm.options.theme.replace(/(^|\\s)\\s*/g, \" cm-s-\");\n clearCaches(cm);\n }\n\n var Init = {toString: function(){return \"CodeMirror.Init\"}};\n\n var defaults = {};\n var optionHandlers = {};\n\n function defineOptions(CodeMirror) {\n var optionHandlers = CodeMirror.optionHandlers;\n\n function option(name, deflt, handle, notOnInit) {\n CodeMirror.defaults[name] = deflt;\n if (handle) { optionHandlers[name] =\n notOnInit ? function (cm, val, old) {if (old != Init) { handle(cm, val, old); }} : handle; }\n }\n\n CodeMirror.defineOption = option;\n\n // Passed to option handlers when there is no old value.\n CodeMirror.Init = Init;\n\n // These two are, on init, called from the constructor because they\n // have to be initialized before the editor can start at all.\n option(\"value\", \"\", function (cm, val) { return cm.setValue(val); }, true);\n option(\"mode\", null, function (cm, val) {\n cm.doc.modeOption = val;\n loadMode(cm);\n }, true);\n\n option(\"indentUnit\", 2, loadMode, true);\n option(\"indentWithTabs\", false);\n option(\"smartIndent\", true);\n option(\"tabSize\", 4, function (cm) {\n resetModeState(cm);\n clearCaches(cm);\n regChange(cm);\n }, true);\n\n option(\"lineSeparator\", null, function (cm, val) {\n cm.doc.lineSep = val;\n if (!val) { return }\n var newBreaks = [], lineNo = cm.doc.first;\n cm.doc.iter(function (line) {\n for (var pos = 0;;) {\n var found = line.text.indexOf(val, pos);\n if (found == -1) { break }\n pos = found + val.length;\n newBreaks.push(Pos(lineNo, found));\n }\n lineNo++;\n });\n for (var i = newBreaks.length - 1; i >= 0; i--)\n { replaceRange(cm.doc, val, newBreaks[i], Pos(newBreaks[i].line, newBreaks[i].ch + val.length)); }\n });\n option(\"specialChars\", /[\\u0000-\\u001f\\u007f-\\u009f\\u00ad\\u061c\\u200b\\u200e\\u200f\\u2028\\u2029\\u202d\\u202e\\u2066\\u2067\\u2069\\ufeff\\ufff9-\\ufffc]/g, function (cm, val, old) {\n cm.state.specialChars = new RegExp(val.source + (val.test(\"\\t\") ? \"\" : \"|\\t\"), \"g\");\n if (old != Init) { cm.refresh(); }\n });\n option(\"specialCharPlaceholder\", defaultSpecialCharPlaceholder, function (cm) { return cm.refresh(); }, true);\n option(\"electricChars\", true);\n option(\"inputStyle\", mobile ? \"contenteditable\" : \"textarea\", function () {\n throw new Error(\"inputStyle can not (yet) be changed in a running editor\") // FIXME\n }, true);\n option(\"spellcheck\", false, function (cm, val) { return cm.getInputField().spellcheck = val; }, true);\n option(\"autocorrect\", false, function (cm, val) { return cm.getInputField().autocorrect = val; }, true);\n option(\"autocapitalize\", false, function (cm, val) { return cm.getInputField().autocapitalize = val; }, true);\n option(\"rtlMoveVisually\", !windows);\n option(\"wholeLineUpdateBefore\", true);\n\n option(\"theme\", \"default\", function (cm) {\n themeChanged(cm);\n updateGutters(cm);\n }, true);\n option(\"keyMap\", \"default\", function (cm, val, old) {\n var next = getKeyMap(val);\n var prev = old != Init && getKeyMap(old);\n if (prev && prev.detach) { prev.detach(cm, next); }\n if (next.attach) { next.attach(cm, prev || null); }\n });\n option(\"extraKeys\", null);\n option(\"configureMouse\", null);\n\n option(\"lineWrapping\", false, wrappingChanged, true);\n option(\"gutters\", [], function (cm, val) {\n cm.display.gutterSpecs = getGutters(val, cm.options.lineNumbers);\n updateGutters(cm);\n }, true);\n option(\"fixedGutter\", true, function (cm, val) {\n cm.display.gutters.style.left = val ? compensateForHScroll(cm.display) + \"px\" : \"0\";\n cm.refresh();\n }, true);\n option(\"coverGutterNextToScrollbar\", false, function (cm) { return updateScrollbars(cm); }, true);\n option(\"scrollbarStyle\", \"native\", function (cm) {\n initScrollbars(cm);\n updateScrollbars(cm);\n cm.display.scrollbars.setScrollTop(cm.doc.scrollTop);\n cm.display.scrollbars.setScrollLeft(cm.doc.scrollLeft);\n }, true);\n option(\"lineNumbers\", false, function (cm, val) {\n cm.display.gutterSpecs = getGutters(cm.options.gutters, val);\n updateGutters(cm);\n }, true);\n option(\"firstLineNumber\", 1, updateGutters, true);\n option(\"lineNumberFormatter\", function (integer) { return integer; }, updateGutters, true);\n option(\"showCursorWhenSelecting\", false, updateSelection, true);\n\n option(\"resetSelectionOnContextMenu\", true);\n option(\"lineWiseCopyCut\", true);\n option(\"pasteLinesPerSelection\", true);\n option(\"selectionsMayTouch\", false);\n\n option(\"readOnly\", false, function (cm, val) {\n if (val == \"nocursor\") {\n onBlur(cm);\n cm.display.input.blur();\n }\n cm.display.input.readOnlyChanged(val);\n });\n\n option(\"screenReaderLabel\", null, function (cm, val) {\n val = (val === '') ? null : val;\n cm.display.input.screenReaderLabelChanged(val);\n });\n\n option(\"disableInput\", false, function (cm, val) {if (!val) { cm.display.input.reset(); }}, true);\n option(\"dragDrop\", true, dragDropChanged);\n option(\"allowDropFileTypes\", null);\n\n option(\"cursorBlinkRate\", 530);\n option(\"cursorScrollMargin\", 0);\n option(\"cursorHeight\", 1, updateSelection, true);\n option(\"singleCursorHeightPerLine\", true, updateSelection, true);\n option(\"workTime\", 100);\n option(\"workDelay\", 100);\n option(\"flattenSpans\", true, resetModeState, true);\n option(\"addModeClass\", false, resetModeState, true);\n option(\"pollInterval\", 100);\n option(\"undoDepth\", 200, function (cm, val) { return cm.doc.history.undoDepth = val; });\n option(\"historyEventDelay\", 1250);\n option(\"viewportMargin\", 10, function (cm) { return cm.refresh(); }, true);\n option(\"maxHighlightLength\", 10000, resetModeState, true);\n option(\"moveInputWithCursor\", true, function (cm, val) {\n if (!val) { cm.display.input.resetPosition(); }\n });\n\n option(\"tabindex\", null, function (cm, val) { return cm.display.input.getField().tabIndex = val || \"\"; });\n option(\"autofocus\", null);\n option(\"direction\", \"ltr\", function (cm, val) { return cm.doc.setDirection(val); }, true);\n option(\"phrases\", null);\n }\n\n function dragDropChanged(cm, value, old) {\n var wasOn = old && old != Init;\n if (!value != !wasOn) {\n var funcs = cm.display.dragFunctions;\n var toggle = value ? on : off;\n toggle(cm.display.scroller, \"dragstart\", funcs.start);\n toggle(cm.display.scroller, \"dragenter\", funcs.enter);\n toggle(cm.display.scroller, \"dragover\", funcs.over);\n toggle(cm.display.scroller, \"dragleave\", funcs.leave);\n toggle(cm.display.scroller, \"drop\", funcs.drop);\n }\n }\n\n function wrappingChanged(cm) {\n if (cm.options.lineWrapping) {\n addClass(cm.display.wrapper, \"CodeMirror-wrap\");\n cm.display.sizer.style.minWidth = \"\";\n cm.display.sizerWidth = null;\n } else {\n rmClass(cm.display.wrapper, \"CodeMirror-wrap\");\n findMaxLine(cm);\n }\n estimateLineHeights(cm);\n regChange(cm);\n clearCaches(cm);\n setTimeout(function () { return updateScrollbars(cm); }, 100);\n }\n\n // A CodeMirror instance represents an editor. This is the object\n // that user code is usually dealing with.\n\n function CodeMirror(place, options) {\n var this$1 = this;\n\n if (!(this instanceof CodeMirror)) { return new CodeMirror(place, options) }\n\n this.options = options = options ? copyObj(options) : {};\n // Determine effective options based on given values and defaults.\n copyObj(defaults, options, false);\n\n var doc = options.value;\n if (typeof doc == \"string\") { doc = new Doc(doc, options.mode, null, options.lineSeparator, options.direction); }\n else if (options.mode) { doc.modeOption = options.mode; }\n this.doc = doc;\n\n var input = new CodeMirror.inputStyles[options.inputStyle](this);\n var display = this.display = new Display(place, doc, input, options);\n display.wrapper.CodeMirror = this;\n themeChanged(this);\n if (options.lineWrapping)\n { this.display.wrapper.className += \" CodeMirror-wrap\"; }\n initScrollbars(this);\n\n this.state = {\n keyMaps: [], // stores maps added by addKeyMap\n overlays: [], // highlighting overlays, as added by addOverlay\n modeGen: 0, // bumped when mode/overlay changes, used to invalidate highlighting info\n overwrite: false,\n delayingBlurEvent: false,\n focused: false,\n suppressEdits: false, // used to disable editing during key handlers when in readOnly mode\n pasteIncoming: -1, cutIncoming: -1, // help recognize paste/cut edits in input.poll\n selectingText: false,\n draggingText: false,\n highlight: new Delayed(), // stores highlight worker timeout\n keySeq: null, // Unfinished key sequence\n specialChars: null\n };\n\n if (options.autofocus && !mobile) { display.input.focus(); }\n\n // Override magic textarea content restore that IE sometimes does\n // on our hidden textarea on reload\n if (ie && ie_version < 11) { setTimeout(function () { return this$1.display.input.reset(true); }, 20); }\n\n registerEventHandlers(this);\n ensureGlobalHandlers();\n\n startOperation(this);\n this.curOp.forceUpdate = true;\n attachDoc(this, doc);\n\n if ((options.autofocus && !mobile) || this.hasFocus())\n { setTimeout(function () {\n if (this$1.hasFocus() && !this$1.state.focused) { onFocus(this$1); }\n }, 20); }\n else\n { onBlur(this); }\n\n for (var opt in optionHandlers) { if (optionHandlers.hasOwnProperty(opt))\n { optionHandlers[opt](this, options[opt], Init); } }\n maybeUpdateLineNumberWidth(this);\n if (options.finishInit) { options.finishInit(this); }\n for (var i = 0; i < initHooks.length; ++i) { initHooks[i](this); }\n endOperation(this);\n // Suppress optimizelegibility in Webkit, since it breaks text\n // measuring on line wrapping boundaries.\n if (webkit && options.lineWrapping &&\n getComputedStyle(display.lineDiv).textRendering == \"optimizelegibility\")\n { display.lineDiv.style.textRendering = \"auto\"; }\n }\n\n // The default configuration options.\n CodeMirror.defaults = defaults;\n // Functions to run when options are changed.\n CodeMirror.optionHandlers = optionHandlers;\n\n // Attach the necessary event handlers when initializing the editor\n function registerEventHandlers(cm) {\n var d = cm.display;\n on(d.scroller, \"mousedown\", operation(cm, onMouseDown));\n // Older IE's will not fire a second mousedown for a double click\n if (ie && ie_version < 11)\n { on(d.scroller, \"dblclick\", operation(cm, function (e) {\n if (signalDOMEvent(cm, e)) { return }\n var pos = posFromMouse(cm, e);\n if (!pos || clickInGutter(cm, e) || eventInWidget(cm.display, e)) { return }\n e_preventDefault(e);\n var word = cm.findWordAt(pos);\n extendSelection(cm.doc, word.anchor, word.head);\n })); }\n else\n { on(d.scroller, \"dblclick\", function (e) { return signalDOMEvent(cm, e) || e_preventDefault(e); }); }\n // Some browsers fire contextmenu *after* opening the menu, at\n // which point we can't mess with it anymore. Context menu is\n // handled in onMouseDown for these browsers.\n on(d.scroller, \"contextmenu\", function (e) { return onContextMenu(cm, e); });\n on(d.input.getField(), \"contextmenu\", function (e) {\n if (!d.scroller.contains(e.target)) { onContextMenu(cm, e); }\n });\n\n // Used to suppress mouse event handling when a touch happens\n var touchFinished, prevTouch = {end: 0};\n function finishTouch() {\n if (d.activeTouch) {\n touchFinished = setTimeout(function () { return d.activeTouch = null; }, 1000);\n prevTouch = d.activeTouch;\n prevTouch.end = +new Date;\n }\n }\n function isMouseLikeTouchEvent(e) {\n if (e.touches.length != 1) { return false }\n var touch = e.touches[0];\n return touch.radiusX <= 1 && touch.radiusY <= 1\n }\n function farAway(touch, other) {\n if (other.left == null) { return true }\n var dx = other.left - touch.left, dy = other.top - touch.top;\n return dx * dx + dy * dy > 20 * 20\n }\n on(d.scroller, \"touchstart\", function (e) {\n if (!signalDOMEvent(cm, e) && !isMouseLikeTouchEvent(e) && !clickInGutter(cm, e)) {\n d.input.ensurePolled();\n clearTimeout(touchFinished);\n var now = +new Date;\n d.activeTouch = {start: now, moved: false,\n prev: now - prevTouch.end <= 300 ? prevTouch : null};\n if (e.touches.length == 1) {\n d.activeTouch.left = e.touches[0].pageX;\n d.activeTouch.top = e.touches[0].pageY;\n }\n }\n });\n on(d.scroller, \"touchmove\", function () {\n if (d.activeTouch) { d.activeTouch.moved = true; }\n });\n on(d.scroller, \"touchend\", function (e) {\n var touch = d.activeTouch;\n if (touch && !eventInWidget(d, e) && touch.left != null &&\n !touch.moved && new Date - touch.start < 300) {\n var pos = cm.coordsChar(d.activeTouch, \"page\"), range;\n if (!touch.prev || farAway(touch, touch.prev)) // Single tap\n { range = new Range(pos, pos); }\n else if (!touch.prev.prev || farAway(touch, touch.prev.prev)) // Double tap\n { range = cm.findWordAt(pos); }\n else // Triple tap\n { range = new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))); }\n cm.setSelection(range.anchor, range.head);\n cm.focus();\n e_preventDefault(e);\n }\n finishTouch();\n });\n on(d.scroller, \"touchcancel\", finishTouch);\n\n // Sync scrolling between fake scrollbars and real scrollable\n // area, ensure viewport is updated when scrolling.\n on(d.scroller, \"scroll\", function () {\n if (d.scroller.clientHeight) {\n updateScrollTop(cm, d.scroller.scrollTop);\n setScrollLeft(cm, d.scroller.scrollLeft, true);\n signal(cm, \"scroll\", cm);\n }\n });\n\n // Listen to wheel events in order to try and update the viewport on time.\n on(d.scroller, \"mousewheel\", function (e) { return onScrollWheel(cm, e); });\n on(d.scroller, \"DOMMouseScroll\", function (e) { return onScrollWheel(cm, e); });\n\n // Prevent wrapper from ever scrolling\n on(d.wrapper, \"scroll\", function () { return d.wrapper.scrollTop = d.wrapper.scrollLeft = 0; });\n\n d.dragFunctions = {\n enter: function (e) {if (!signalDOMEvent(cm, e)) { e_stop(e); }},\n over: function (e) {if (!signalDOMEvent(cm, e)) { onDragOver(cm, e); e_stop(e); }},\n start: function (e) { return onDragStart(cm, e); },\n drop: operation(cm, onDrop),\n leave: function (e) {if (!signalDOMEvent(cm, e)) { clearDragCursor(cm); }}\n };\n\n var inp = d.input.getField();\n on(inp, \"keyup\", function (e) { return onKeyUp.call(cm, e); });\n on(inp, \"keydown\", operation(cm, onKeyDown));\n on(inp, \"keypress\", operation(cm, onKeyPress));\n on(inp, \"focus\", function (e) { return onFocus(cm, e); });\n on(inp, \"blur\", function (e) { return onBlur(cm, e); });\n }\n\n var initHooks = [];\n CodeMirror.defineInitHook = function (f) { return initHooks.push(f); };\n\n // Indent the given line. The how parameter can be \"smart\",\n // \"add\"/null, \"subtract\", or \"prev\". When aggressive is false\n // (typically set to true for forced single-line indents), empty\n // lines are not indented, and places where the mode returns Pass\n // are left alone.\n function indentLine(cm, n, how, aggressive) {\n var doc = cm.doc, state;\n if (how == null) { how = \"add\"; }\n if (how == \"smart\") {\n // Fall back to \"prev\" when the mode doesn't have an indentation\n // method.\n if (!doc.mode.indent) { how = \"prev\"; }\n else { state = getContextBefore(cm, n).state; }\n }\n\n var tabSize = cm.options.tabSize;\n var line = getLine(doc, n), curSpace = countColumn(line.text, null, tabSize);\n if (line.stateAfter) { line.stateAfter = null; }\n var curSpaceString = line.text.match(/^\\s*/)[0], indentation;\n if (!aggressive && !/\\S/.test(line.text)) {\n indentation = 0;\n how = \"not\";\n } else if (how == \"smart\") {\n indentation = doc.mode.indent(state, line.text.slice(curSpaceString.length), line.text);\n if (indentation == Pass || indentation > 150) {\n if (!aggressive) { return }\n how = \"prev\";\n }\n }\n if (how == \"prev\") {\n if (n > doc.first) { indentation = countColumn(getLine(doc, n-1).text, null, tabSize); }\n else { indentation = 0; }\n } else if (how == \"add\") {\n indentation = curSpace + cm.options.indentUnit;\n } else if (how == \"subtract\") {\n indentation = curSpace - cm.options.indentUnit;\n } else if (typeof how == \"number\") {\n indentation = curSpace + how;\n }\n indentation = Math.max(0, indentation);\n\n var indentString = \"\", pos = 0;\n if (cm.options.indentWithTabs)\n { for (var i = Math.floor(indentation / tabSize); i; --i) {pos += tabSize; indentString += \"\\t\";} }\n if (pos < indentation) { indentString += spaceStr(indentation - pos); }\n\n if (indentString != curSpaceString) {\n replaceRange(doc, indentString, Pos(n, 0), Pos(n, curSpaceString.length), \"+input\");\n line.stateAfter = null;\n return true\n } else {\n // Ensure that, if the cursor was in the whitespace at the start\n // of the line, it is moved to the end of that space.\n for (var i$1 = 0; i$1 < doc.sel.ranges.length; i$1++) {\n var range = doc.sel.ranges[i$1];\n if (range.head.line == n && range.head.ch < curSpaceString.length) {\n var pos$1 = Pos(n, curSpaceString.length);\n replaceOneSelection(doc, i$1, new Range(pos$1, pos$1));\n break\n }\n }\n }\n }\n\n // This will be set to a {lineWise: bool, text: [string]} object, so\n // that, when pasting, we know what kind of selections the copied\n // text was made out of.\n var lastCopied = null;\n\n function setLastCopied(newLastCopied) {\n lastCopied = newLastCopied;\n }\n\n function applyTextInput(cm, inserted, deleted, sel, origin) {\n var doc = cm.doc;\n cm.display.shift = false;\n if (!sel) { sel = doc.sel; }\n\n var recent = +new Date - 200;\n var paste = origin == \"paste\" || cm.state.pasteIncoming > recent;\n var textLines = splitLinesAuto(inserted), multiPaste = null;\n // When pasting N lines into N selections, insert one line per selection\n if (paste && sel.ranges.length > 1) {\n if (lastCopied && lastCopied.text.join(\"\\n\") == inserted) {\n if (sel.ranges.length % lastCopied.text.length == 0) {\n multiPaste = [];\n for (var i = 0; i < lastCopied.text.length; i++)\n { multiPaste.push(doc.splitLines(lastCopied.text[i])); }\n }\n } else if (textLines.length == sel.ranges.length && cm.options.pasteLinesPerSelection) {\n multiPaste = map(textLines, function (l) { return [l]; });\n }\n }\n\n var updateInput = cm.curOp.updateInput;\n // Normal behavior is to insert the new text into every selection\n for (var i$1 = sel.ranges.length - 1; i$1 >= 0; i$1--) {\n var range = sel.ranges[i$1];\n var from = range.from(), to = range.to();\n if (range.empty()) {\n if (deleted && deleted > 0) // Handle deletion\n { from = Pos(from.line, from.ch - deleted); }\n else if (cm.state.overwrite && !paste) // Handle overwrite\n { to = Pos(to.line, Math.min(getLine(doc, to.line).text.length, to.ch + lst(textLines).length)); }\n else if (paste && lastCopied && lastCopied.lineWise && lastCopied.text.join(\"\\n\") == textLines.join(\"\\n\"))\n { from = to = Pos(from.line, 0); }\n }\n var changeEvent = {from: from, to: to, text: multiPaste ? multiPaste[i$1 % multiPaste.length] : textLines,\n origin: origin || (paste ? \"paste\" : cm.state.cutIncoming > recent ? \"cut\" : \"+input\")};\n makeChange(cm.doc, changeEvent);\n signalLater(cm, \"inputRead\", cm, changeEvent);\n }\n if (inserted && !paste)\n { triggerElectric(cm, inserted); }\n\n ensureCursorVisible(cm);\n if (cm.curOp.updateInput < 2) { cm.curOp.updateInput = updateInput; }\n cm.curOp.typing = true;\n cm.state.pasteIncoming = cm.state.cutIncoming = -1;\n }\n\n function handlePaste(e, cm) {\n var pasted = e.clipboardData && e.clipboardData.getData(\"Text\");\n if (pasted) {\n e.preventDefault();\n if (!cm.isReadOnly() && !cm.options.disableInput && cm.hasFocus())\n { runInOp(cm, function () { return applyTextInput(cm, pasted, 0, null, \"paste\"); }); }\n return true\n }\n }\n\n function triggerElectric(cm, inserted) {\n // When an 'electric' character is inserted, immediately trigger a reindent\n if (!cm.options.electricChars || !cm.options.smartIndent) { return }\n var sel = cm.doc.sel;\n\n for (var i = sel.ranges.length - 1; i >= 0; i--) {\n var range = sel.ranges[i];\n if (range.head.ch > 100 || (i && sel.ranges[i - 1].head.line == range.head.line)) { continue }\n var mode = cm.getModeAt(range.head);\n var indented = false;\n if (mode.electricChars) {\n for (var j = 0; j < mode.electricChars.length; j++)\n { if (inserted.indexOf(mode.electricChars.charAt(j)) > -1) {\n indented = indentLine(cm, range.head.line, \"smart\");\n break\n } }\n } else if (mode.electricInput) {\n if (mode.electricInput.test(getLine(cm.doc, range.head.line).text.slice(0, range.head.ch)))\n { indented = indentLine(cm, range.head.line, \"smart\"); }\n }\n if (indented) { signalLater(cm, \"electricInput\", cm, range.head.line); }\n }\n }\n\n function copyableRanges(cm) {\n var text = [], ranges = [];\n for (var i = 0; i < cm.doc.sel.ranges.length; i++) {\n var line = cm.doc.sel.ranges[i].head.line;\n var lineRange = {anchor: Pos(line, 0), head: Pos(line + 1, 0)};\n ranges.push(lineRange);\n text.push(cm.getRange(lineRange.anchor, lineRange.head));\n }\n return {text: text, ranges: ranges}\n }\n\n function disableBrowserMagic(field, spellcheck, autocorrect, autocapitalize) {\n field.setAttribute(\"autocorrect\", autocorrect ? \"on\" : \"off\");\n field.setAttribute(\"autocapitalize\", autocapitalize ? \"on\" : \"off\");\n field.setAttribute(\"spellcheck\", !!spellcheck);\n }\n\n function hiddenTextarea() {\n var te = elt(\"textarea\", null, null, \"position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; min-height: 1em; outline: none\");\n var div = elt(\"div\", [te], null, \"overflow: hidden; position: relative; width: 3px; height: 0px;\");\n // The textarea is kept positioned near the cursor to prevent the\n // fact that it'll be scrolled into view on input from scrolling\n // our fake cursor out of view. On webkit, when wrap=off, paste is\n // very slow. So make the area wide instead.\n if (webkit) { te.style.width = \"1000px\"; }\n else { te.setAttribute(\"wrap\", \"off\"); }\n // If border: 0; -- iOS fails to open keyboard (issue #1287)\n if (ios) { te.style.border = \"1px solid black\"; }\n return div\n }\n\n // The publicly visible API. Note that methodOp(f) means\n // 'wrap f in an operation, performed on its `this` parameter'.\n\n // This is not the complete set of editor methods. Most of the\n // methods defined on the Doc type are also injected into\n // CodeMirror.prototype, for backwards compatibility and\n // convenience.\n\n function addEditorMethods(CodeMirror) {\n var optionHandlers = CodeMirror.optionHandlers;\n\n var helpers = CodeMirror.helpers = {};\n\n CodeMirror.prototype = {\n constructor: CodeMirror,\n focus: function(){win(this).focus(); this.display.input.focus();},\n\n setOption: function(option, value) {\n var options = this.options, old = options[option];\n if (options[option] == value && option != \"mode\") { return }\n options[option] = value;\n if (optionHandlers.hasOwnProperty(option))\n { operation(this, optionHandlers[option])(this, value, old); }\n signal(this, \"optionChange\", this, option);\n },\n\n getOption: function(option) {return this.options[option]},\n getDoc: function() {return this.doc},\n\n addKeyMap: function(map, bottom) {\n this.state.keyMaps[bottom ? \"push\" : \"unshift\"](getKeyMap(map));\n },\n removeKeyMap: function(map) {\n var maps = this.state.keyMaps;\n for (var i = 0; i < maps.length; ++i)\n { if (maps[i] == map || maps[i].name == map) {\n maps.splice(i, 1);\n return true\n } }\n },\n\n addOverlay: methodOp(function(spec, options) {\n var mode = spec.token ? spec : CodeMirror.getMode(this.options, spec);\n if (mode.startState) { throw new Error(\"Overlays may not be stateful.\") }\n insertSorted(this.state.overlays,\n {mode: mode, modeSpec: spec, opaque: options && options.opaque,\n priority: (options && options.priority) || 0},\n function (overlay) { return overlay.priority; });\n this.state.modeGen++;\n regChange(this);\n }),\n removeOverlay: methodOp(function(spec) {\n var overlays = this.state.overlays;\n for (var i = 0; i < overlays.length; ++i) {\n var cur = overlays[i].modeSpec;\n if (cur == spec || typeof spec == \"string\" && cur.name == spec) {\n overlays.splice(i, 1);\n this.state.modeGen++;\n regChange(this);\n return\n }\n }\n }),\n\n indentLine: methodOp(function(n, dir, aggressive) {\n if (typeof dir != \"string\" && typeof dir != \"number\") {\n if (dir == null) { dir = this.options.smartIndent ? \"smart\" : \"prev\"; }\n else { dir = dir ? \"add\" : \"subtract\"; }\n }\n if (isLine(this.doc, n)) { indentLine(this, n, dir, aggressive); }\n }),\n indentSelection: methodOp(function(how) {\n var ranges = this.doc.sel.ranges, end = -1;\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n if (!range.empty()) {\n var from = range.from(), to = range.to();\n var start = Math.max(end, from.line);\n end = Math.min(this.lastLine(), to.line - (to.ch ? 0 : 1)) + 1;\n for (var j = start; j < end; ++j)\n { indentLine(this, j, how); }\n var newRanges = this.doc.sel.ranges;\n if (from.ch == 0 && ranges.length == newRanges.length && newRanges[i].from().ch > 0)\n { replaceOneSelection(this.doc, i, new Range(from, newRanges[i].to()), sel_dontScroll); }\n } else if (range.head.line > end) {\n indentLine(this, range.head.line, how, true);\n end = range.head.line;\n if (i == this.doc.sel.primIndex) { ensureCursorVisible(this); }\n }\n }\n }),\n\n // Fetch the parser token for a given character. Useful for hacks\n // that want to inspect the mode state (say, for completion).\n getTokenAt: function(pos, precise) {\n return takeToken(this, pos, precise)\n },\n\n getLineTokens: function(line, precise) {\n return takeToken(this, Pos(line), precise, true)\n },\n\n getTokenTypeAt: function(pos) {\n pos = clipPos(this.doc, pos);\n var styles = getLineStyles(this, getLine(this.doc, pos.line));\n var before = 0, after = (styles.length - 1) / 2, ch = pos.ch;\n var type;\n if (ch == 0) { type = styles[2]; }\n else { for (;;) {\n var mid = (before + after) >> 1;\n if ((mid ? styles[mid * 2 - 1] : 0) >= ch) { after = mid; }\n else if (styles[mid * 2 + 1] < ch) { before = mid + 1; }\n else { type = styles[mid * 2 + 2]; break }\n } }\n var cut = type ? type.indexOf(\"overlay \") : -1;\n return cut < 0 ? type : cut == 0 ? null : type.slice(0, cut - 1)\n },\n\n getModeAt: function(pos) {\n var mode = this.doc.mode;\n if (!mode.innerMode) { return mode }\n return CodeMirror.innerMode(mode, this.getTokenAt(pos).state).mode\n },\n\n getHelper: function(pos, type) {\n return this.getHelpers(pos, type)[0]\n },\n\n getHelpers: function(pos, type) {\n var found = [];\n if (!helpers.hasOwnProperty(type)) { return found }\n var help = helpers[type], mode = this.getModeAt(pos);\n if (typeof mode[type] == \"string\") {\n if (help[mode[type]]) { found.push(help[mode[type]]); }\n } else if (mode[type]) {\n for (var i = 0; i < mode[type].length; i++) {\n var val = help[mode[type][i]];\n if (val) { found.push(val); }\n }\n } else if (mode.helperType && help[mode.helperType]) {\n found.push(help[mode.helperType]);\n } else if (help[mode.name]) {\n found.push(help[mode.name]);\n }\n for (var i$1 = 0; i$1 < help._global.length; i$1++) {\n var cur = help._global[i$1];\n if (cur.pred(mode, this) && indexOf(found, cur.val) == -1)\n { found.push(cur.val); }\n }\n return found\n },\n\n getStateAfter: function(line, precise) {\n var doc = this.doc;\n line = clipLine(doc, line == null ? doc.first + doc.size - 1: line);\n return getContextBefore(this, line + 1, precise).state\n },\n\n cursorCoords: function(start, mode) {\n var pos, range = this.doc.sel.primary();\n if (start == null) { pos = range.head; }\n else if (typeof start == \"object\") { pos = clipPos(this.doc, start); }\n else { pos = start ? range.from() : range.to(); }\n return cursorCoords(this, pos, mode || \"page\")\n },\n\n charCoords: function(pos, mode) {\n return charCoords(this, clipPos(this.doc, pos), mode || \"page\")\n },\n\n coordsChar: function(coords, mode) {\n coords = fromCoordSystem(this, coords, mode || \"page\");\n return coordsChar(this, coords.left, coords.top)\n },\n\n lineAtHeight: function(height, mode) {\n height = fromCoordSystem(this, {top: height, left: 0}, mode || \"page\").top;\n return lineAtHeight(this.doc, height + this.display.viewOffset)\n },\n heightAtLine: function(line, mode, includeWidgets) {\n var end = false, lineObj;\n if (typeof line == \"number\") {\n var last = this.doc.first + this.doc.size - 1;\n if (line < this.doc.first) { line = this.doc.first; }\n else if (line > last) { line = last; end = true; }\n lineObj = getLine(this.doc, line);\n } else {\n lineObj = line;\n }\n return intoCoordSystem(this, lineObj, {top: 0, left: 0}, mode || \"page\", includeWidgets || end).top +\n (end ? this.doc.height - heightAtLine(lineObj) : 0)\n },\n\n defaultTextHeight: function() { return textHeight(this.display) },\n defaultCharWidth: function() { return charWidth(this.display) },\n\n getViewport: function() { return {from: this.display.viewFrom, to: this.display.viewTo}},\n\n addWidget: function(pos, node, scroll, vert, horiz) {\n var display = this.display;\n pos = cursorCoords(this, clipPos(this.doc, pos));\n var top = pos.bottom, left = pos.left;\n node.style.position = \"absolute\";\n node.setAttribute(\"cm-ignore-events\", \"true\");\n this.display.input.setUneditable(node);\n display.sizer.appendChild(node);\n if (vert == \"over\") {\n top = pos.top;\n } else if (vert == \"above\" || vert == \"near\") {\n var vspace = Math.max(display.wrapper.clientHeight, this.doc.height),\n hspace = Math.max(display.sizer.clientWidth, display.lineSpace.clientWidth);\n // Default to positioning above (if specified and possible); otherwise default to positioning below\n if ((vert == 'above' || pos.bottom + node.offsetHeight > vspace) && pos.top > node.offsetHeight)\n { top = pos.top - node.offsetHeight; }\n else if (pos.bottom + node.offsetHeight <= vspace)\n { top = pos.bottom; }\n if (left + node.offsetWidth > hspace)\n { left = hspace - node.offsetWidth; }\n }\n node.style.top = top + \"px\";\n node.style.left = node.style.right = \"\";\n if (horiz == \"right\") {\n left = display.sizer.clientWidth - node.offsetWidth;\n node.style.right = \"0px\";\n } else {\n if (horiz == \"left\") { left = 0; }\n else if (horiz == \"middle\") { left = (display.sizer.clientWidth - node.offsetWidth) / 2; }\n node.style.left = left + \"px\";\n }\n if (scroll)\n { scrollIntoView(this, {left: left, top: top, right: left + node.offsetWidth, bottom: top + node.offsetHeight}); }\n },\n\n triggerOnKeyDown: methodOp(onKeyDown),\n triggerOnKeyPress: methodOp(onKeyPress),\n triggerOnKeyUp: onKeyUp,\n triggerOnMouseDown: methodOp(onMouseDown),\n\n execCommand: function(cmd) {\n if (commands.hasOwnProperty(cmd))\n { return commands[cmd].call(null, this) }\n },\n\n triggerElectric: methodOp(function(text) { triggerElectric(this, text); }),\n\n findPosH: function(from, amount, unit, visually) {\n var dir = 1;\n if (amount < 0) { dir = -1; amount = -amount; }\n var cur = clipPos(this.doc, from);\n for (var i = 0; i < amount; ++i) {\n cur = findPosH(this.doc, cur, dir, unit, visually);\n if (cur.hitSide) { break }\n }\n return cur\n },\n\n moveH: methodOp(function(dir, unit) {\n var this$1 = this;\n\n this.extendSelectionsBy(function (range) {\n if (this$1.display.shift || this$1.doc.extend || range.empty())\n { return findPosH(this$1.doc, range.head, dir, unit, this$1.options.rtlMoveVisually) }\n else\n { return dir < 0 ? range.from() : range.to() }\n }, sel_move);\n }),\n\n deleteH: methodOp(function(dir, unit) {\n var sel = this.doc.sel, doc = this.doc;\n if (sel.somethingSelected())\n { doc.replaceSelection(\"\", null, \"+delete\"); }\n else\n { deleteNearSelection(this, function (range) {\n var other = findPosH(doc, range.head, dir, unit, false);\n return dir < 0 ? {from: other, to: range.head} : {from: range.head, to: other}\n }); }\n }),\n\n findPosV: function(from, amount, unit, goalColumn) {\n var dir = 1, x = goalColumn;\n if (amount < 0) { dir = -1; amount = -amount; }\n var cur = clipPos(this.doc, from);\n for (var i = 0; i < amount; ++i) {\n var coords = cursorCoords(this, cur, \"div\");\n if (x == null) { x = coords.left; }\n else { coords.left = x; }\n cur = findPosV(this, coords, dir, unit);\n if (cur.hitSide) { break }\n }\n return cur\n },\n\n moveV: methodOp(function(dir, unit) {\n var this$1 = this;\n\n var doc = this.doc, goals = [];\n var collapse = !this.display.shift && !doc.extend && doc.sel.somethingSelected();\n doc.extendSelectionsBy(function (range) {\n if (collapse)\n { return dir < 0 ? range.from() : range.to() }\n var headPos = cursorCoords(this$1, range.head, \"div\");\n if (range.goalColumn != null) { headPos.left = range.goalColumn; }\n goals.push(headPos.left);\n var pos = findPosV(this$1, headPos, dir, unit);\n if (unit == \"page\" && range == doc.sel.primary())\n { addToScrollTop(this$1, charCoords(this$1, pos, \"div\").top - headPos.top); }\n return pos\n }, sel_move);\n if (goals.length) { for (var i = 0; i < doc.sel.ranges.length; i++)\n { doc.sel.ranges[i].goalColumn = goals[i]; } }\n }),\n\n // Find the word at the given position (as returned by coordsChar).\n findWordAt: function(pos) {\n var doc = this.doc, line = getLine(doc, pos.line).text;\n var start = pos.ch, end = pos.ch;\n if (line) {\n var helper = this.getHelper(pos, \"wordChars\");\n if ((pos.sticky == \"before\" || end == line.length) && start) { --start; } else { ++end; }\n var startChar = line.charAt(start);\n var check = isWordChar(startChar, helper)\n ? function (ch) { return isWordChar(ch, helper); }\n : /\\s/.test(startChar) ? function (ch) { return /\\s/.test(ch); }\n : function (ch) { return (!/\\s/.test(ch) && !isWordChar(ch)); };\n while (start > 0 && check(line.charAt(start - 1))) { --start; }\n while (end < line.length && check(line.charAt(end))) { ++end; }\n }\n return new Range(Pos(pos.line, start), Pos(pos.line, end))\n },\n\n toggleOverwrite: function(value) {\n if (value != null && value == this.state.overwrite) { return }\n if (this.state.overwrite = !this.state.overwrite)\n { addClass(this.display.cursorDiv, \"CodeMirror-overwrite\"); }\n else\n { rmClass(this.display.cursorDiv, \"CodeMirror-overwrite\"); }\n\n signal(this, \"overwriteToggle\", this, this.state.overwrite);\n },\n hasFocus: function() { return this.display.input.getField() == activeElt(root(this)) },\n isReadOnly: function() { return !!(this.options.readOnly || this.doc.cantEdit) },\n\n scrollTo: methodOp(function (x, y) { scrollToCoords(this, x, y); }),\n getScrollInfo: function() {\n var scroller = this.display.scroller;\n return {left: scroller.scrollLeft, top: scroller.scrollTop,\n height: scroller.scrollHeight - scrollGap(this) - this.display.barHeight,\n width: scroller.scrollWidth - scrollGap(this) - this.display.barWidth,\n clientHeight: displayHeight(this), clientWidth: displayWidth(this)}\n },\n\n scrollIntoView: methodOp(function(range, margin) {\n if (range == null) {\n range = {from: this.doc.sel.primary().head, to: null};\n if (margin == null) { margin = this.options.cursorScrollMargin; }\n } else if (typeof range == \"number\") {\n range = {from: Pos(range, 0), to: null};\n } else if (range.from == null) {\n range = {from: range, to: null};\n }\n if (!range.to) { range.to = range.from; }\n range.margin = margin || 0;\n\n if (range.from.line != null) {\n scrollToRange(this, range);\n } else {\n scrollToCoordsRange(this, range.from, range.to, range.margin);\n }\n }),\n\n setSize: methodOp(function(width, height) {\n var this$1 = this;\n\n var interpret = function (val) { return typeof val == \"number\" || /^\\d+$/.test(String(val)) ? val + \"px\" : val; };\n if (width != null) { this.display.wrapper.style.width = interpret(width); }\n if (height != null) { this.display.wrapper.style.height = interpret(height); }\n if (this.options.lineWrapping) { clearLineMeasurementCache(this); }\n var lineNo = this.display.viewFrom;\n this.doc.iter(lineNo, this.display.viewTo, function (line) {\n if (line.widgets) { for (var i = 0; i < line.widgets.length; i++)\n { if (line.widgets[i].noHScroll) { regLineChange(this$1, lineNo, \"widget\"); break } } }\n ++lineNo;\n });\n this.curOp.forceUpdate = true;\n signal(this, \"refresh\", this);\n }),\n\n operation: function(f){return runInOp(this, f)},\n startOperation: function(){return startOperation(this)},\n endOperation: function(){return endOperation(this)},\n\n refresh: methodOp(function() {\n var oldHeight = this.display.cachedTextHeight;\n regChange(this);\n this.curOp.forceUpdate = true;\n clearCaches(this);\n scrollToCoords(this, this.doc.scrollLeft, this.doc.scrollTop);\n updateGutterSpace(this.display);\n if (oldHeight == null || Math.abs(oldHeight - textHeight(this.display)) > .5 || this.options.lineWrapping)\n { estimateLineHeights(this); }\n signal(this, \"refresh\", this);\n }),\n\n swapDoc: methodOp(function(doc) {\n var old = this.doc;\n old.cm = null;\n // Cancel the current text selection if any (#5821)\n if (this.state.selectingText) { this.state.selectingText(); }\n attachDoc(this, doc);\n clearCaches(this);\n this.display.input.reset();\n scrollToCoords(this, doc.scrollLeft, doc.scrollTop);\n this.curOp.forceScroll = true;\n signalLater(this, \"swapDoc\", this, old);\n return old\n }),\n\n phrase: function(phraseText) {\n var phrases = this.options.phrases;\n return phrases && Object.prototype.hasOwnProperty.call(phrases, phraseText) ? phrases[phraseText] : phraseText\n },\n\n getInputField: function(){return this.display.input.getField()},\n getWrapperElement: function(){return this.display.wrapper},\n getScrollerElement: function(){return this.display.scroller},\n getGutterElement: function(){return this.display.gutters}\n };\n eventMixin(CodeMirror);\n\n CodeMirror.registerHelper = function(type, name, value) {\n if (!helpers.hasOwnProperty(type)) { helpers[type] = CodeMirror[type] = {_global: []}; }\n helpers[type][name] = value;\n };\n CodeMirror.registerGlobalHelper = function(type, name, predicate, value) {\n CodeMirror.registerHelper(type, name, value);\n helpers[type]._global.push({pred: predicate, val: value});\n };\n }\n\n // Used for horizontal relative motion. Dir is -1 or 1 (left or\n // right), unit can be \"codepoint\", \"char\", \"column\" (like char, but\n // doesn't cross line boundaries), \"word\" (across next word), or\n // \"group\" (to the start of next group of word or\n // non-word-non-whitespace chars). The visually param controls\n // whether, in right-to-left text, direction 1 means to move towards\n // the next index in the string, or towards the character to the right\n // of the current position. The resulting position will have a\n // hitSide=true property if it reached the end of the document.\n function findPosH(doc, pos, dir, unit, visually) {\n var oldPos = pos;\n var origDir = dir;\n var lineObj = getLine(doc, pos.line);\n var lineDir = visually && doc.direction == \"rtl\" ? -dir : dir;\n function findNextLine() {\n var l = pos.line + lineDir;\n if (l < doc.first || l >= doc.first + doc.size) { return false }\n pos = new Pos(l, pos.ch, pos.sticky);\n return lineObj = getLine(doc, l)\n }\n function moveOnce(boundToLine) {\n var next;\n if (unit == \"codepoint\") {\n var ch = lineObj.text.charCodeAt(pos.ch + (dir > 0 ? 0 : -1));\n if (isNaN(ch)) {\n next = null;\n } else {\n var astral = dir > 0 ? ch >= 0xD800 && ch < 0xDC00 : ch >= 0xDC00 && ch < 0xDFFF;\n next = new Pos(pos.line, Math.max(0, Math.min(lineObj.text.length, pos.ch + dir * (astral ? 2 : 1))), -dir);\n }\n } else if (visually) {\n next = moveVisually(doc.cm, lineObj, pos, dir);\n } else {\n next = moveLogically(lineObj, pos, dir);\n }\n if (next == null) {\n if (!boundToLine && findNextLine())\n { pos = endOfLine(visually, doc.cm, lineObj, pos.line, lineDir); }\n else\n { return false }\n } else {\n pos = next;\n }\n return true\n }\n\n if (unit == \"char\" || unit == \"codepoint\") {\n moveOnce();\n } else if (unit == \"column\") {\n moveOnce(true);\n } else if (unit == \"word\" || unit == \"group\") {\n var sawType = null, group = unit == \"group\";\n var helper = doc.cm && doc.cm.getHelper(pos, \"wordChars\");\n for (var first = true;; first = false) {\n if (dir < 0 && !moveOnce(!first)) { break }\n var cur = lineObj.text.charAt(pos.ch) || \"\\n\";\n var type = isWordChar(cur, helper) ? \"w\"\n : group && cur == \"\\n\" ? \"n\"\n : !group || /\\s/.test(cur) ? null\n : \"p\";\n if (group && !first && !type) { type = \"s\"; }\n if (sawType && sawType != type) {\n if (dir < 0) {dir = 1; moveOnce(); pos.sticky = \"after\";}\n break\n }\n\n if (type) { sawType = type; }\n if (dir > 0 && !moveOnce(!first)) { break }\n }\n }\n var result = skipAtomic(doc, pos, oldPos, origDir, true);\n if (equalCursorPos(oldPos, result)) { result.hitSide = true; }\n return result\n }\n\n // For relative vertical movement. Dir may be -1 or 1. Unit can be\n // \"page\" or \"line\". The resulting position will have a hitSide=true\n // property if it reached the end of the document.\n function findPosV(cm, pos, dir, unit) {\n var doc = cm.doc, x = pos.left, y;\n if (unit == \"page\") {\n var pageSize = Math.min(cm.display.wrapper.clientHeight, win(cm).innerHeight || doc(cm).documentElement.clientHeight);\n var moveAmount = Math.max(pageSize - .5 * textHeight(cm.display), 3);\n y = (dir > 0 ? pos.bottom : pos.top) + dir * moveAmount;\n\n } else if (unit == \"line\") {\n y = dir > 0 ? pos.bottom + 3 : pos.top - 3;\n }\n var target;\n for (;;) {\n target = coordsChar(cm, x, y);\n if (!target.outside) { break }\n if (dir < 0 ? y <= 0 : y >= doc.height) { target.hitSide = true; break }\n y += dir * 5;\n }\n return target\n }\n\n // CONTENTEDITABLE INPUT STYLE\n\n var ContentEditableInput = function(cm) {\n this.cm = cm;\n this.lastAnchorNode = this.lastAnchorOffset = this.lastFocusNode = this.lastFocusOffset = null;\n this.polling = new Delayed();\n this.composing = null;\n this.gracePeriod = false;\n this.readDOMTimeout = null;\n };\n\n ContentEditableInput.prototype.init = function (display) {\n var this$1 = this;\n\n var input = this, cm = input.cm;\n var div = input.div = display.lineDiv;\n div.contentEditable = true;\n disableBrowserMagic(div, cm.options.spellcheck, cm.options.autocorrect, cm.options.autocapitalize);\n\n function belongsToInput(e) {\n for (var t = e.target; t; t = t.parentNode) {\n if (t == div) { return true }\n if (/\\bCodeMirror-(?:line)?widget\\b/.test(t.className)) { break }\n }\n return false\n }\n\n on(div, \"paste\", function (e) {\n if (!belongsToInput(e) || signalDOMEvent(cm, e) || handlePaste(e, cm)) { return }\n // IE doesn't fire input events, so we schedule a read for the pasted content in this way\n if (ie_version <= 11) { setTimeout(operation(cm, function () { return this$1.updateFromDOM(); }), 20); }\n });\n\n on(div, \"compositionstart\", function (e) {\n this$1.composing = {data: e.data, done: false};\n });\n on(div, \"compositionupdate\", function (e) {\n if (!this$1.composing) { this$1.composing = {data: e.data, done: false}; }\n });\n on(div, \"compositionend\", function (e) {\n if (this$1.composing) {\n if (e.data != this$1.composing.data) { this$1.readFromDOMSoon(); }\n this$1.composing.done = true;\n }\n });\n\n on(div, \"touchstart\", function () { return input.forceCompositionEnd(); });\n\n on(div, \"input\", function () {\n if (!this$1.composing) { this$1.readFromDOMSoon(); }\n });\n\n function onCopyCut(e) {\n if (!belongsToInput(e) || signalDOMEvent(cm, e)) { return }\n if (cm.somethingSelected()) {\n setLastCopied({lineWise: false, text: cm.getSelections()});\n if (e.type == \"cut\") { cm.replaceSelection(\"\", null, \"cut\"); }\n } else if (!cm.options.lineWiseCopyCut) {\n return\n } else {\n var ranges = copyableRanges(cm);\n setLastCopied({lineWise: true, text: ranges.text});\n if (e.type == \"cut\") {\n cm.operation(function () {\n cm.setSelections(ranges.ranges, 0, sel_dontScroll);\n cm.replaceSelection(\"\", null, \"cut\");\n });\n }\n }\n if (e.clipboardData) {\n e.clipboardData.clearData();\n var content = lastCopied.text.join(\"\\n\");\n // iOS exposes the clipboard API, but seems to discard content inserted into it\n e.clipboardData.setData(\"Text\", content);\n if (e.clipboardData.getData(\"Text\") == content) {\n e.preventDefault();\n return\n }\n }\n // Old-fashioned briefly-focus-a-textarea hack\n var kludge = hiddenTextarea(), te = kludge.firstChild;\n disableBrowserMagic(te);\n cm.display.lineSpace.insertBefore(kludge, cm.display.lineSpace.firstChild);\n te.value = lastCopied.text.join(\"\\n\");\n var hadFocus = activeElt(rootNode(div));\n selectInput(te);\n setTimeout(function () {\n cm.display.lineSpace.removeChild(kludge);\n hadFocus.focus();\n if (hadFocus == div) { input.showPrimarySelection(); }\n }, 50);\n }\n on(div, \"copy\", onCopyCut);\n on(div, \"cut\", onCopyCut);\n };\n\n ContentEditableInput.prototype.screenReaderLabelChanged = function (label) {\n // Label for screenreaders, accessibility\n if(label) {\n this.div.setAttribute('aria-label', label);\n } else {\n this.div.removeAttribute('aria-label');\n }\n };\n\n ContentEditableInput.prototype.prepareSelection = function () {\n var result = prepareSelection(this.cm, false);\n result.focus = activeElt(rootNode(this.div)) == this.div;\n return result\n };\n\n ContentEditableInput.prototype.showSelection = function (info, takeFocus) {\n if (!info || !this.cm.display.view.length) { return }\n if (info.focus || takeFocus) { this.showPrimarySelection(); }\n this.showMultipleSelections(info);\n };\n\n ContentEditableInput.prototype.getSelection = function () {\n return this.cm.display.wrapper.ownerDocument.getSelection()\n };\n\n ContentEditableInput.prototype.showPrimarySelection = function () {\n var sel = this.getSelection(), cm = this.cm, prim = cm.doc.sel.primary();\n var from = prim.from(), to = prim.to();\n\n if (cm.display.viewTo == cm.display.viewFrom || from.line >= cm.display.viewTo || to.line < cm.display.viewFrom) {\n sel.removeAllRanges();\n return\n }\n\n var curAnchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n var curFocus = domToPos(cm, sel.focusNode, sel.focusOffset);\n if (curAnchor && !curAnchor.bad && curFocus && !curFocus.bad &&\n cmp(minPos(curAnchor, curFocus), from) == 0 &&\n cmp(maxPos(curAnchor, curFocus), to) == 0)\n { return }\n\n var view = cm.display.view;\n var start = (from.line >= cm.display.viewFrom && posToDOM(cm, from)) ||\n {node: view[0].measure.map[2], offset: 0};\n var end = to.line < cm.display.viewTo && posToDOM(cm, to);\n if (!end) {\n var measure = view[view.length - 1].measure;\n var map = measure.maps ? measure.maps[measure.maps.length - 1] : measure.map;\n end = {node: map[map.length - 1], offset: map[map.length - 2] - map[map.length - 3]};\n }\n\n if (!start || !end) {\n sel.removeAllRanges();\n return\n }\n\n var old = sel.rangeCount && sel.getRangeAt(0), rng;\n try { rng = range(start.node, start.offset, end.offset, end.node); }\n catch(e) {} // Our model of the DOM might be outdated, in which case the range we try to set can be impossible\n if (rng) {\n if (!gecko && cm.state.focused) {\n sel.collapse(start.node, start.offset);\n if (!rng.collapsed) {\n sel.removeAllRanges();\n sel.addRange(rng);\n }\n } else {\n sel.removeAllRanges();\n sel.addRange(rng);\n }\n if (old && sel.anchorNode == null) { sel.addRange(old); }\n else if (gecko) { this.startGracePeriod(); }\n }\n this.rememberSelection();\n };\n\n ContentEditableInput.prototype.startGracePeriod = function () {\n var this$1 = this;\n\n clearTimeout(this.gracePeriod);\n this.gracePeriod = setTimeout(function () {\n this$1.gracePeriod = false;\n if (this$1.selectionChanged())\n { this$1.cm.operation(function () { return this$1.cm.curOp.selectionChanged = true; }); }\n }, 20);\n };\n\n ContentEditableInput.prototype.showMultipleSelections = function (info) {\n removeChildrenAndAdd(this.cm.display.cursorDiv, info.cursors);\n removeChildrenAndAdd(this.cm.display.selectionDiv, info.selection);\n };\n\n ContentEditableInput.prototype.rememberSelection = function () {\n var sel = this.getSelection();\n this.lastAnchorNode = sel.anchorNode; this.lastAnchorOffset = sel.anchorOffset;\n this.lastFocusNode = sel.focusNode; this.lastFocusOffset = sel.focusOffset;\n };\n\n ContentEditableInput.prototype.selectionInEditor = function () {\n var sel = this.getSelection();\n if (!sel.rangeCount) { return false }\n var node = sel.getRangeAt(0).commonAncestorContainer;\n return contains(this.div, node)\n };\n\n ContentEditableInput.prototype.focus = function () {\n if (this.cm.options.readOnly != \"nocursor\") {\n if (!this.selectionInEditor() || activeElt(rootNode(this.div)) != this.div)\n { this.showSelection(this.prepareSelection(), true); }\n this.div.focus();\n }\n };\n ContentEditableInput.prototype.blur = function () { this.div.blur(); };\n ContentEditableInput.prototype.getField = function () { return this.div };\n\n ContentEditableInput.prototype.supportsTouch = function () { return true };\n\n ContentEditableInput.prototype.receivedFocus = function () {\n var this$1 = this;\n\n var input = this;\n if (this.selectionInEditor())\n { setTimeout(function () { return this$1.pollSelection(); }, 20); }\n else\n { runInOp(this.cm, function () { return input.cm.curOp.selectionChanged = true; }); }\n\n function poll() {\n if (input.cm.state.focused) {\n input.pollSelection();\n input.polling.set(input.cm.options.pollInterval, poll);\n }\n }\n this.polling.set(this.cm.options.pollInterval, poll);\n };\n\n ContentEditableInput.prototype.selectionChanged = function () {\n var sel = this.getSelection();\n return sel.anchorNode != this.lastAnchorNode || sel.anchorOffset != this.lastAnchorOffset ||\n sel.focusNode != this.lastFocusNode || sel.focusOffset != this.lastFocusOffset\n };\n\n ContentEditableInput.prototype.pollSelection = function () {\n if (this.readDOMTimeout != null || this.gracePeriod || !this.selectionChanged()) { return }\n var sel = this.getSelection(), cm = this.cm;\n // On Android Chrome (version 56, at least), backspacing into an\n // uneditable block element will put the cursor in that element,\n // and then, because it's not editable, hide the virtual keyboard.\n // Because Android doesn't allow us to actually detect backspace\n // presses in a sane way, this code checks for when that happens\n // and simulates a backspace press in this case.\n if (android && chrome && this.cm.display.gutterSpecs.length && isInGutter(sel.anchorNode)) {\n this.cm.triggerOnKeyDown({type: \"keydown\", keyCode: 8, preventDefault: Math.abs});\n this.blur();\n this.focus();\n return\n }\n if (this.composing) { return }\n this.rememberSelection();\n var anchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n var head = domToPos(cm, sel.focusNode, sel.focusOffset);\n if (anchor && head) { runInOp(cm, function () {\n setSelection(cm.doc, simpleSelection(anchor, head), sel_dontScroll);\n if (anchor.bad || head.bad) { cm.curOp.selectionChanged = true; }\n }); }\n };\n\n ContentEditableInput.prototype.pollContent = function () {\n if (this.readDOMTimeout != null) {\n clearTimeout(this.readDOMTimeout);\n this.readDOMTimeout = null;\n }\n\n var cm = this.cm, display = cm.display, sel = cm.doc.sel.primary();\n var from = sel.from(), to = sel.to();\n if (from.ch == 0 && from.line > cm.firstLine())\n { from = Pos(from.line - 1, getLine(cm.doc, from.line - 1).length); }\n if (to.ch == getLine(cm.doc, to.line).text.length && to.line < cm.lastLine())\n { to = Pos(to.line + 1, 0); }\n if (from.line < display.viewFrom || to.line > display.viewTo - 1) { return false }\n\n var fromIndex, fromLine, fromNode;\n if (from.line == display.viewFrom || (fromIndex = findViewIndex(cm, from.line)) == 0) {\n fromLine = lineNo(display.view[0].line);\n fromNode = display.view[0].node;\n } else {\n fromLine = lineNo(display.view[fromIndex].line);\n fromNode = display.view[fromIndex - 1].node.nextSibling;\n }\n var toIndex = findViewIndex(cm, to.line);\n var toLine, toNode;\n if (toIndex == display.view.length - 1) {\n toLine = display.viewTo - 1;\n toNode = display.lineDiv.lastChild;\n } else {\n toLine = lineNo(display.view[toIndex + 1].line) - 1;\n toNode = display.view[toIndex + 1].node.previousSibling;\n }\n\n if (!fromNode) { return false }\n var newText = cm.doc.splitLines(domTextBetween(cm, fromNode, toNode, fromLine, toLine));\n var oldText = getBetween(cm.doc, Pos(fromLine, 0), Pos(toLine, getLine(cm.doc, toLine).text.length));\n while (newText.length > 1 && oldText.length > 1) {\n if (lst(newText) == lst(oldText)) { newText.pop(); oldText.pop(); toLine--; }\n else if (newText[0] == oldText[0]) { newText.shift(); oldText.shift(); fromLine++; }\n else { break }\n }\n\n var cutFront = 0, cutEnd = 0;\n var newTop = newText[0], oldTop = oldText[0], maxCutFront = Math.min(newTop.length, oldTop.length);\n while (cutFront < maxCutFront && newTop.charCodeAt(cutFront) == oldTop.charCodeAt(cutFront))\n { ++cutFront; }\n var newBot = lst(newText), oldBot = lst(oldText);\n var maxCutEnd = Math.min(newBot.length - (newText.length == 1 ? cutFront : 0),\n oldBot.length - (oldText.length == 1 ? cutFront : 0));\n while (cutEnd < maxCutEnd &&\n newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1))\n { ++cutEnd; }\n // Try to move start of change to start of selection if ambiguous\n if (newText.length == 1 && oldText.length == 1 && fromLine == from.line) {\n while (cutFront && cutFront > from.ch &&\n newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1)) {\n cutFront--;\n cutEnd++;\n }\n }\n\n newText[newText.length - 1] = newBot.slice(0, newBot.length - cutEnd).replace(/^\\u200b+/, \"\");\n newText[0] = newText[0].slice(cutFront).replace(/\\u200b+$/, \"\");\n\n var chFrom = Pos(fromLine, cutFront);\n var chTo = Pos(toLine, oldText.length ? lst(oldText).length - cutEnd : 0);\n if (newText.length > 1 || newText[0] || cmp(chFrom, chTo)) {\n replaceRange(cm.doc, newText, chFrom, chTo, \"+input\");\n return true\n }\n };\n\n ContentEditableInput.prototype.ensurePolled = function () {\n this.forceCompositionEnd();\n };\n ContentEditableInput.prototype.reset = function () {\n this.forceCompositionEnd();\n };\n ContentEditableInput.prototype.forceCompositionEnd = function () {\n if (!this.composing) { return }\n clearTimeout(this.readDOMTimeout);\n this.composing = null;\n this.updateFromDOM();\n this.div.blur();\n this.div.focus();\n };\n ContentEditableInput.prototype.readFromDOMSoon = function () {\n var this$1 = this;\n\n if (this.readDOMTimeout != null) { return }\n this.readDOMTimeout = setTimeout(function () {\n this$1.readDOMTimeout = null;\n if (this$1.composing) {\n if (this$1.composing.done) { this$1.composing = null; }\n else { return }\n }\n this$1.updateFromDOM();\n }, 80);\n };\n\n ContentEditableInput.prototype.updateFromDOM = function () {\n var this$1 = this;\n\n if (this.cm.isReadOnly() || !this.pollContent())\n { runInOp(this.cm, function () { return regChange(this$1.cm); }); }\n };\n\n ContentEditableInput.prototype.setUneditable = function (node) {\n node.contentEditable = \"false\";\n };\n\n ContentEditableInput.prototype.onKeyPress = function (e) {\n if (e.charCode == 0 || this.composing) { return }\n e.preventDefault();\n if (!this.cm.isReadOnly())\n { operation(this.cm, applyTextInput)(this.cm, String.fromCharCode(e.charCode == null ? e.keyCode : e.charCode), 0); }\n };\n\n ContentEditableInput.prototype.readOnlyChanged = function (val) {\n this.div.contentEditable = String(val != \"nocursor\");\n };\n\n ContentEditableInput.prototype.onContextMenu = function () {};\n ContentEditableInput.prototype.resetPosition = function () {};\n\n ContentEditableInput.prototype.needsContentAttribute = true;\n\n function posToDOM(cm, pos) {\n var view = findViewForLine(cm, pos.line);\n if (!view || view.hidden) { return null }\n var line = getLine(cm.doc, pos.line);\n var info = mapFromLineView(view, line, pos.line);\n\n var order = getOrder(line, cm.doc.direction), side = \"left\";\n if (order) {\n var partPos = getBidiPartAt(order, pos.ch);\n side = partPos % 2 ? \"right\" : \"left\";\n }\n var result = nodeAndOffsetInLineMap(info.map, pos.ch, side);\n result.offset = result.collapse == \"right\" ? result.end : result.start;\n return result\n }\n\n function isInGutter(node) {\n for (var scan = node; scan; scan = scan.parentNode)\n { if (/CodeMirror-gutter-wrapper/.test(scan.className)) { return true } }\n return false\n }\n\n function badPos(pos, bad) { if (bad) { pos.bad = true; } return pos }\n\n function domTextBetween(cm, from, to, fromLine, toLine) {\n var text = \"\", closing = false, lineSep = cm.doc.lineSeparator(), extraLinebreak = false;\n function recognizeMarker(id) { return function (marker) { return marker.id == id; } }\n function close() {\n if (closing) {\n text += lineSep;\n if (extraLinebreak) { text += lineSep; }\n closing = extraLinebreak = false;\n }\n }\n function addText(str) {\n if (str) {\n close();\n text += str;\n }\n }\n function walk(node) {\n if (node.nodeType == 1) {\n var cmText = node.getAttribute(\"cm-text\");\n if (cmText) {\n addText(cmText);\n return\n }\n var markerID = node.getAttribute(\"cm-marker\"), range;\n if (markerID) {\n var found = cm.findMarks(Pos(fromLine, 0), Pos(toLine + 1, 0), recognizeMarker(+markerID));\n if (found.length && (range = found[0].find(0)))\n { addText(getBetween(cm.doc, range.from, range.to).join(lineSep)); }\n return\n }\n if (node.getAttribute(\"contenteditable\") == \"false\") { return }\n var isBlock = /^(pre|div|p|li|table|br)$/i.test(node.nodeName);\n if (!/^br$/i.test(node.nodeName) && node.textContent.length == 0) { return }\n\n if (isBlock) { close(); }\n for (var i = 0; i < node.childNodes.length; i++)\n { walk(node.childNodes[i]); }\n\n if (/^(pre|p)$/i.test(node.nodeName)) { extraLinebreak = true; }\n if (isBlock) { closing = true; }\n } else if (node.nodeType == 3) {\n addText(node.nodeValue.replace(/\\u200b/g, \"\").replace(/\\u00a0/g, \" \"));\n }\n }\n for (;;) {\n walk(from);\n if (from == to) { break }\n from = from.nextSibling;\n extraLinebreak = false;\n }\n return text\n }\n\n function domToPos(cm, node, offset) {\n var lineNode;\n if (node == cm.display.lineDiv) {\n lineNode = cm.display.lineDiv.childNodes[offset];\n if (!lineNode) { return badPos(cm.clipPos(Pos(cm.display.viewTo - 1)), true) }\n node = null; offset = 0;\n } else {\n for (lineNode = node;; lineNode = lineNode.parentNode) {\n if (!lineNode || lineNode == cm.display.lineDiv) { return null }\n if (lineNode.parentNode && lineNode.parentNode == cm.display.lineDiv) { break }\n }\n }\n for (var i = 0; i < cm.display.view.length; i++) {\n var lineView = cm.display.view[i];\n if (lineView.node == lineNode)\n { return locateNodeInLineView(lineView, node, offset) }\n }\n }\n\n function locateNodeInLineView(lineView, node, offset) {\n var wrapper = lineView.text.firstChild, bad = false;\n if (!node || !contains(wrapper, node)) { return badPos(Pos(lineNo(lineView.line), 0), true) }\n if (node == wrapper) {\n bad = true;\n node = wrapper.childNodes[offset];\n offset = 0;\n if (!node) {\n var line = lineView.rest ? lst(lineView.rest) : lineView.line;\n return badPos(Pos(lineNo(line), line.text.length), bad)\n }\n }\n\n var textNode = node.nodeType == 3 ? node : null, topNode = node;\n if (!textNode && node.childNodes.length == 1 && node.firstChild.nodeType == 3) {\n textNode = node.firstChild;\n if (offset) { offset = textNode.nodeValue.length; }\n }\n while (topNode.parentNode != wrapper) { topNode = topNode.parentNode; }\n var measure = lineView.measure, maps = measure.maps;\n\n function find(textNode, topNode, offset) {\n for (var i = -1; i < (maps ? maps.length : 0); i++) {\n var map = i < 0 ? measure.map : maps[i];\n for (var j = 0; j < map.length; j += 3) {\n var curNode = map[j + 2];\n if (curNode == textNode || curNode == topNode) {\n var line = lineNo(i < 0 ? lineView.line : lineView.rest[i]);\n var ch = map[j] + offset;\n if (offset < 0 || curNode != textNode) { ch = map[j + (offset ? 1 : 0)]; }\n return Pos(line, ch)\n }\n }\n }\n }\n var found = find(textNode, topNode, offset);\n if (found) { return badPos(found, bad) }\n\n // FIXME this is all really shaky. might handle the few cases it needs to handle, but likely to cause problems\n for (var after = topNode.nextSibling, dist = textNode ? textNode.nodeValue.length - offset : 0; after; after = after.nextSibling) {\n found = find(after, after.firstChild, 0);\n if (found)\n { return badPos(Pos(found.line, found.ch - dist), bad) }\n else\n { dist += after.textContent.length; }\n }\n for (var before = topNode.previousSibling, dist$1 = offset; before; before = before.previousSibling) {\n found = find(before, before.firstChild, -1);\n if (found)\n { return badPos(Pos(found.line, found.ch + dist$1), bad) }\n else\n { dist$1 += before.textContent.length; }\n }\n }\n\n // TEXTAREA INPUT STYLE\n\n var TextareaInput = function(cm) {\n this.cm = cm;\n // See input.poll and input.reset\n this.prevInput = \"\";\n\n // Flag that indicates whether we expect input to appear real soon\n // now (after some event like 'keypress' or 'input') and are\n // polling intensively.\n this.pollingFast = false;\n // Self-resetting timeout for the poller\n this.polling = new Delayed();\n // Used to work around IE issue with selection being forgotten when focus moves away from textarea\n this.hasSelection = false;\n this.composing = null;\n this.resetting = false;\n };\n\n TextareaInput.prototype.init = function (display) {\n var this$1 = this;\n\n var input = this, cm = this.cm;\n this.createField(display);\n var te = this.textarea;\n\n display.wrapper.insertBefore(this.wrapper, display.wrapper.firstChild);\n\n // Needed to hide big blue blinking cursor on Mobile Safari (doesn't seem to work in iOS 8 anymore)\n if (ios) { te.style.width = \"0px\"; }\n\n on(te, \"input\", function () {\n if (ie && ie_version >= 9 && this$1.hasSelection) { this$1.hasSelection = null; }\n input.poll();\n });\n\n on(te, \"paste\", function (e) {\n if (signalDOMEvent(cm, e) || handlePaste(e, cm)) { return }\n\n cm.state.pasteIncoming = +new Date;\n input.fastPoll();\n });\n\n function prepareCopyCut(e) {\n if (signalDOMEvent(cm, e)) { return }\n if (cm.somethingSelected()) {\n setLastCopied({lineWise: false, text: cm.getSelections()});\n } else if (!cm.options.lineWiseCopyCut) {\n return\n } else {\n var ranges = copyableRanges(cm);\n setLastCopied({lineWise: true, text: ranges.text});\n if (e.type == \"cut\") {\n cm.setSelections(ranges.ranges, null, sel_dontScroll);\n } else {\n input.prevInput = \"\";\n te.value = ranges.text.join(\"\\n\");\n selectInput(te);\n }\n }\n if (e.type == \"cut\") { cm.state.cutIncoming = +new Date; }\n }\n on(te, \"cut\", prepareCopyCut);\n on(te, \"copy\", prepareCopyCut);\n\n on(display.scroller, \"paste\", function (e) {\n if (eventInWidget(display, e) || signalDOMEvent(cm, e)) { return }\n if (!te.dispatchEvent) {\n cm.state.pasteIncoming = +new Date;\n input.focus();\n return\n }\n\n // Pass the `paste` event to the textarea so it's handled by its event listener.\n var event = new Event(\"paste\");\n event.clipboardData = e.clipboardData;\n te.dispatchEvent(event);\n });\n\n // Prevent normal selection in the editor (we handle our own)\n on(display.lineSpace, \"selectstart\", function (e) {\n if (!eventInWidget(display, e)) { e_preventDefault(e); }\n });\n\n on(te, \"compositionstart\", function () {\n var start = cm.getCursor(\"from\");\n if (input.composing) { input.composing.range.clear(); }\n input.composing = {\n start: start,\n range: cm.markText(start, cm.getCursor(\"to\"), {className: \"CodeMirror-composing\"})\n };\n });\n on(te, \"compositionend\", function () {\n if (input.composing) {\n input.poll();\n input.composing.range.clear();\n input.composing = null;\n }\n });\n };\n\n TextareaInput.prototype.createField = function (_display) {\n // Wraps and hides input textarea\n this.wrapper = hiddenTextarea();\n // The semihidden textarea that is focused when the editor is\n // focused, and receives input.\n this.textarea = this.wrapper.firstChild;\n var opts = this.cm.options;\n disableBrowserMagic(this.textarea, opts.spellcheck, opts.autocorrect, opts.autocapitalize);\n };\n\n TextareaInput.prototype.screenReaderLabelChanged = function (label) {\n // Label for screenreaders, accessibility\n if(label) {\n this.textarea.setAttribute('aria-label', label);\n } else {\n this.textarea.removeAttribute('aria-label');\n }\n };\n\n TextareaInput.prototype.prepareSelection = function () {\n // Redraw the selection and/or cursor\n var cm = this.cm, display = cm.display, doc = cm.doc;\n var result = prepareSelection(cm);\n\n // Move the hidden textarea near the cursor to prevent scrolling artifacts\n if (cm.options.moveInputWithCursor) {\n var headPos = cursorCoords(cm, doc.sel.primary().head, \"div\");\n var wrapOff = display.wrapper.getBoundingClientRect(), lineOff = display.lineDiv.getBoundingClientRect();\n result.teTop = Math.max(0, Math.min(display.wrapper.clientHeight - 10,\n headPos.top + lineOff.top - wrapOff.top));\n result.teLeft = Math.max(0, Math.min(display.wrapper.clientWidth - 10,\n headPos.left + lineOff.left - wrapOff.left));\n }\n\n return result\n };\n\n TextareaInput.prototype.showSelection = function (drawn) {\n var cm = this.cm, display = cm.display;\n removeChildrenAndAdd(display.cursorDiv, drawn.cursors);\n removeChildrenAndAdd(display.selectionDiv, drawn.selection);\n if (drawn.teTop != null) {\n this.wrapper.style.top = drawn.teTop + \"px\";\n this.wrapper.style.left = drawn.teLeft + \"px\";\n }\n };\n\n // Reset the input to correspond to the selection (or to be empty,\n // when not typing and nothing is selected)\n TextareaInput.prototype.reset = function (typing) {\n if (this.contextMenuPending || this.composing && typing) { return }\n var cm = this.cm;\n this.resetting = true;\n if (cm.somethingSelected()) {\n this.prevInput = \"\";\n var content = cm.getSelection();\n this.textarea.value = content;\n if (cm.state.focused) { selectInput(this.textarea); }\n if (ie && ie_version >= 9) { this.hasSelection = content; }\n } else if (!typing) {\n this.prevInput = this.textarea.value = \"\";\n if (ie && ie_version >= 9) { this.hasSelection = null; }\n }\n this.resetting = false;\n };\n\n TextareaInput.prototype.getField = function () { return this.textarea };\n\n TextareaInput.prototype.supportsTouch = function () { return false };\n\n TextareaInput.prototype.focus = function () {\n if (this.cm.options.readOnly != \"nocursor\" && (!mobile || activeElt(rootNode(this.textarea)) != this.textarea)) {\n try { this.textarea.focus(); }\n catch (e) {} // IE8 will throw if the textarea is display: none or not in DOM\n }\n };\n\n TextareaInput.prototype.blur = function () { this.textarea.blur(); };\n\n TextareaInput.prototype.resetPosition = function () {\n this.wrapper.style.top = this.wrapper.style.left = 0;\n };\n\n TextareaInput.prototype.receivedFocus = function () { this.slowPoll(); };\n\n // Poll for input changes, using the normal rate of polling. This\n // runs as long as the editor is focused.\n TextareaInput.prototype.slowPoll = function () {\n var this$1 = this;\n\n if (this.pollingFast) { return }\n this.polling.set(this.cm.options.pollInterval, function () {\n this$1.poll();\n if (this$1.cm.state.focused) { this$1.slowPoll(); }\n });\n };\n\n // When an event has just come in that is likely to add or change\n // something in the input textarea, we poll faster, to ensure that\n // the change appears on the screen quickly.\n TextareaInput.prototype.fastPoll = function () {\n var missed = false, input = this;\n input.pollingFast = true;\n function p() {\n var changed = input.poll();\n if (!changed && !missed) {missed = true; input.polling.set(60, p);}\n else {input.pollingFast = false; input.slowPoll();}\n }\n input.polling.set(20, p);\n };\n\n // Read input from the textarea, and update the document to match.\n // When something is selected, it is present in the textarea, and\n // selected (unless it is huge, in which case a placeholder is\n // used). When nothing is selected, the cursor sits after previously\n // seen text (can be empty), which is stored in prevInput (we must\n // not reset the textarea when typing, because that breaks IME).\n TextareaInput.prototype.poll = function () {\n var this$1 = this;\n\n var cm = this.cm, input = this.textarea, prevInput = this.prevInput;\n // Since this is called a *lot*, try to bail out as cheaply as\n // possible when it is clear that nothing happened. hasSelection\n // will be the case when there is a lot of text in the textarea,\n // in which case reading its value would be expensive.\n if (this.contextMenuPending || this.resetting || !cm.state.focused ||\n (hasSelection(input) && !prevInput && !this.composing) ||\n cm.isReadOnly() || cm.options.disableInput || cm.state.keySeq)\n { return false }\n\n var text = input.value;\n // If nothing changed, bail.\n if (text == prevInput && !cm.somethingSelected()) { return false }\n // Work around nonsensical selection resetting in IE9/10, and\n // inexplicable appearance of private area unicode characters on\n // some key combos in Mac (#2689).\n if (ie && ie_version >= 9 && this.hasSelection === text ||\n mac && /[\\uf700-\\uf7ff]/.test(text)) {\n cm.display.input.reset();\n return false\n }\n\n if (cm.doc.sel == cm.display.selForContextMenu) {\n var first = text.charCodeAt(0);\n if (first == 0x200b && !prevInput) { prevInput = \"\\u200b\"; }\n if (first == 0x21da) { this.reset(); return this.cm.execCommand(\"undo\") }\n }\n // Find the part of the input that is actually new\n var same = 0, l = Math.min(prevInput.length, text.length);\n while (same < l && prevInput.charCodeAt(same) == text.charCodeAt(same)) { ++same; }\n\n runInOp(cm, function () {\n applyTextInput(cm, text.slice(same), prevInput.length - same,\n null, this$1.composing ? \"*compose\" : null);\n\n // Don't leave long text in the textarea, since it makes further polling slow\n if (text.length > 1000 || text.indexOf(\"\\n\") > -1) { input.value = this$1.prevInput = \"\"; }\n else { this$1.prevInput = text; }\n\n if (this$1.composing) {\n this$1.composing.range.clear();\n this$1.composing.range = cm.markText(this$1.composing.start, cm.getCursor(\"to\"),\n {className: \"CodeMirror-composing\"});\n }\n });\n return true\n };\n\n TextareaInput.prototype.ensurePolled = function () {\n if (this.pollingFast && this.poll()) { this.pollingFast = false; }\n };\n\n TextareaInput.prototype.onKeyPress = function () {\n if (ie && ie_version >= 9) { this.hasSelection = null; }\n this.fastPoll();\n };\n\n TextareaInput.prototype.onContextMenu = function (e) {\n var input = this, cm = input.cm, display = cm.display, te = input.textarea;\n if (input.contextMenuPending) { input.contextMenuPending(); }\n var pos = posFromMouse(cm, e), scrollPos = display.scroller.scrollTop;\n if (!pos || presto) { return } // Opera is difficult.\n\n // Reset the current text selection only if the click is done outside of the selection\n // and 'resetSelectionOnContextMenu' option is true.\n var reset = cm.options.resetSelectionOnContextMenu;\n if (reset && cm.doc.sel.contains(pos) == -1)\n { operation(cm, setSelection)(cm.doc, simpleSelection(pos), sel_dontScroll); }\n\n var oldCSS = te.style.cssText, oldWrapperCSS = input.wrapper.style.cssText;\n var wrapperBox = input.wrapper.offsetParent.getBoundingClientRect();\n input.wrapper.style.cssText = \"position: static\";\n te.style.cssText = \"position: absolute; width: 30px; height: 30px;\\n top: \" + (e.clientY - wrapperBox.top - 5) + \"px; left: \" + (e.clientX - wrapperBox.left - 5) + \"px;\\n z-index: 1000; background: \" + (ie ? \"rgba(255, 255, 255, .05)\" : \"transparent\") + \";\\n outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);\";\n var oldScrollY;\n if (webkit) { oldScrollY = te.ownerDocument.defaultView.scrollY; } // Work around Chrome issue (#2712)\n display.input.focus();\n if (webkit) { te.ownerDocument.defaultView.scrollTo(null, oldScrollY); }\n display.input.reset();\n // Adds \"Select all\" to context menu in FF\n if (!cm.somethingSelected()) { te.value = input.prevInput = \" \"; }\n input.contextMenuPending = rehide;\n display.selForContextMenu = cm.doc.sel;\n clearTimeout(display.detectingSelectAll);\n\n // Select-all will be greyed out if there's nothing to select, so\n // this adds a zero-width space so that we can later check whether\n // it got selected.\n function prepareSelectAllHack() {\n if (te.selectionStart != null) {\n var selected = cm.somethingSelected();\n var extval = \"\\u200b\" + (selected ? te.value : \"\");\n te.value = \"\\u21da\"; // Used to catch context-menu undo\n te.value = extval;\n input.prevInput = selected ? \"\" : \"\\u200b\";\n te.selectionStart = 1; te.selectionEnd = extval.length;\n // Re-set this, in case some other handler touched the\n // selection in the meantime.\n display.selForContextMenu = cm.doc.sel;\n }\n }\n function rehide() {\n if (input.contextMenuPending != rehide) { return }\n input.contextMenuPending = false;\n input.wrapper.style.cssText = oldWrapperCSS;\n te.style.cssText = oldCSS;\n if (ie && ie_version < 9) { display.scrollbars.setScrollTop(display.scroller.scrollTop = scrollPos); }\n\n // Try to detect the user choosing select-all\n if (te.selectionStart != null) {\n if (!ie || (ie && ie_version < 9)) { prepareSelectAllHack(); }\n var i = 0, poll = function () {\n if (display.selForContextMenu == cm.doc.sel && te.selectionStart == 0 &&\n te.selectionEnd > 0 && input.prevInput == \"\\u200b\") {\n operation(cm, selectAll)(cm);\n } else if (i++ < 10) {\n display.detectingSelectAll = setTimeout(poll, 500);\n } else {\n display.selForContextMenu = null;\n display.input.reset();\n }\n };\n display.detectingSelectAll = setTimeout(poll, 200);\n }\n }\n\n if (ie && ie_version >= 9) { prepareSelectAllHack(); }\n if (captureRightClick) {\n e_stop(e);\n var mouseup = function () {\n off(window, \"mouseup\", mouseup);\n setTimeout(rehide, 20);\n };\n on(window, \"mouseup\", mouseup);\n } else {\n setTimeout(rehide, 50);\n }\n };\n\n TextareaInput.prototype.readOnlyChanged = function (val) {\n if (!val) { this.reset(); }\n this.textarea.disabled = val == \"nocursor\";\n this.textarea.readOnly = !!val;\n };\n\n TextareaInput.prototype.setUneditable = function () {};\n\n TextareaInput.prototype.needsContentAttribute = false;\n\n function fromTextArea(textarea, options) {\n options = options ? copyObj(options) : {};\n options.value = textarea.value;\n if (!options.tabindex && textarea.tabIndex)\n { options.tabindex = textarea.tabIndex; }\n if (!options.placeholder && textarea.placeholder)\n { options.placeholder = textarea.placeholder; }\n // Set autofocus to true if this textarea is focused, or if it has\n // autofocus and no other element is focused.\n if (options.autofocus == null) {\n var hasFocus = activeElt(rootNode(textarea));\n options.autofocus = hasFocus == textarea ||\n textarea.getAttribute(\"autofocus\") != null && hasFocus == document.body;\n }\n\n function save() {textarea.value = cm.getValue();}\n\n var realSubmit;\n if (textarea.form) {\n on(textarea.form, \"submit\", save);\n // Deplorable hack to make the submit method do the right thing.\n if (!options.leaveSubmitMethodAlone) {\n var form = textarea.form;\n realSubmit = form.submit;\n try {\n var wrappedSubmit = form.submit = function () {\n save();\n form.submit = realSubmit;\n form.submit();\n form.submit = wrappedSubmit;\n };\n } catch(e) {}\n }\n }\n\n options.finishInit = function (cm) {\n cm.save = save;\n cm.getTextArea = function () { return textarea; };\n cm.toTextArea = function () {\n cm.toTextArea = isNaN; // Prevent this from being ran twice\n save();\n textarea.parentNode.removeChild(cm.getWrapperElement());\n textarea.style.display = \"\";\n if (textarea.form) {\n off(textarea.form, \"submit\", save);\n if (!options.leaveSubmitMethodAlone && typeof textarea.form.submit == \"function\")\n { textarea.form.submit = realSubmit; }\n }\n };\n };\n\n textarea.style.display = \"none\";\n var cm = CodeMirror(function (node) { return textarea.parentNode.insertBefore(node, textarea.nextSibling); },\n options);\n return cm\n }\n\n function addLegacyProps(CodeMirror) {\n CodeMirror.off = off;\n CodeMirror.on = on;\n CodeMirror.wheelEventPixels = wheelEventPixels;\n CodeMirror.Doc = Doc;\n CodeMirror.splitLines = splitLinesAuto;\n CodeMirror.countColumn = countColumn;\n CodeMirror.findColumn = findColumn;\n CodeMirror.isWordChar = isWordCharBasic;\n CodeMirror.Pass = Pass;\n CodeMirror.signal = signal;\n CodeMirror.Line = Line;\n CodeMirror.changeEnd = changeEnd;\n CodeMirror.scrollbarModel = scrollbarModel;\n CodeMirror.Pos = Pos;\n CodeMirror.cmpPos = cmp;\n CodeMirror.modes = modes;\n CodeMirror.mimeModes = mimeModes;\n CodeMirror.resolveMode = resolveMode;\n CodeMirror.getMode = getMode;\n CodeMirror.modeExtensions = modeExtensions;\n CodeMirror.extendMode = extendMode;\n CodeMirror.copyState = copyState;\n CodeMirror.startState = startState;\n CodeMirror.innerMode = innerMode;\n CodeMirror.commands = commands;\n CodeMirror.keyMap = keyMap;\n CodeMirror.keyName = keyName;\n CodeMirror.isModifierKey = isModifierKey;\n CodeMirror.lookupKey = lookupKey;\n CodeMirror.normalizeKeyMap = normalizeKeyMap;\n CodeMirror.StringStream = StringStream;\n CodeMirror.SharedTextMarker = SharedTextMarker;\n CodeMirror.TextMarker = TextMarker;\n CodeMirror.LineWidget = LineWidget;\n CodeMirror.e_preventDefault = e_preventDefault;\n CodeMirror.e_stopPropagation = e_stopPropagation;\n CodeMirror.e_stop = e_stop;\n CodeMirror.addClass = addClass;\n CodeMirror.contains = contains;\n CodeMirror.rmClass = rmClass;\n CodeMirror.keyNames = keyNames;\n }\n\n // EDITOR CONSTRUCTOR\n\n defineOptions(CodeMirror);\n\n addEditorMethods(CodeMirror);\n\n // Set up methods on CodeMirror's prototype to redirect to the editor's document.\n var dontDelegate = \"iter insert remove copy getEditor constructor\".split(\" \");\n for (var prop in Doc.prototype) { if (Doc.prototype.hasOwnProperty(prop) && indexOf(dontDelegate, prop) < 0)\n { CodeMirror.prototype[prop] = (function(method) {\n return function() {return method.apply(this.doc, arguments)}\n })(Doc.prototype[prop]); } }\n\n eventMixin(Doc);\n CodeMirror.inputStyles = {\"textarea\": TextareaInput, \"contenteditable\": ContentEditableInput};\n\n // Extra arguments are stored as the mode's dependencies, which is\n // used by (legacy) mechanisms like loadmode.js to automatically\n // load a mode. (Preferred mechanism is the require/define calls.)\n CodeMirror.defineMode = function(name/*, mode, \u2026*/) {\n if (!CodeMirror.defaults.mode && name != \"null\") { CodeMirror.defaults.mode = name; }\n defineMode.apply(this, arguments);\n };\n\n CodeMirror.defineMIME = defineMIME;\n\n // Minimal default mode.\n CodeMirror.defineMode(\"null\", function () { return ({token: function (stream) { return stream.skipToEnd(); }}); });\n CodeMirror.defineMIME(\"text/plain\", \"null\");\n\n // EXTENSIONS\n\n CodeMirror.defineExtension = function (name, func) {\n CodeMirror.prototype[name] = func;\n };\n CodeMirror.defineDocExtension = function (name, func) {\n Doc.prototype[name] = func;\n };\n\n CodeMirror.fromTextArea = fromTextArea;\n\n addLegacyProps(CodeMirror);\n\n CodeMirror.version = \"5.65.16\";\n\n return CodeMirror;\n\n})));\n", "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode('shell', function() {\n\n var words = {};\n function define(style, dict) {\n for(var i = 0; i < dict.length; i++) {\n words[dict[i]] = style;\n }\n };\n\n var commonAtoms = [\"true\", \"false\"];\n var commonKeywords = [\"if\", \"then\", \"do\", \"else\", \"elif\", \"while\", \"until\", \"for\", \"in\", \"esac\", \"fi\",\n \"fin\", \"fil\", \"done\", \"exit\", \"set\", \"unset\", \"export\", \"function\"];\n var commonCommands = [\"ab\", \"awk\", \"bash\", \"beep\", \"cat\", \"cc\", \"cd\", \"chown\", \"chmod\", \"chroot\", \"clear\",\n \"cp\", \"curl\", \"cut\", \"diff\", \"echo\", \"find\", \"gawk\", \"gcc\", \"get\", \"git\", \"grep\", \"hg\", \"kill\", \"killall\",\n \"ln\", \"ls\", \"make\", \"mkdir\", \"openssl\", \"mv\", \"nc\", \"nl\", \"node\", \"npm\", \"ping\", \"ps\", \"restart\", \"rm\",\n \"rmdir\", \"sed\", \"service\", \"sh\", \"shopt\", \"shred\", \"source\", \"sort\", \"sleep\", \"ssh\", \"start\", \"stop\",\n \"su\", \"sudo\", \"svn\", \"tee\", \"telnet\", \"top\", \"touch\", \"vi\", \"vim\", \"wall\", \"wc\", \"wget\", \"who\", \"write\",\n \"yes\", \"zsh\"];\n\n CodeMirror.registerHelper(\"hintWords\", \"shell\", commonAtoms.concat(commonKeywords, commonCommands));\n\n define('atom', commonAtoms);\n define('keyword', commonKeywords);\n define('builtin', commonCommands);\n\n function tokenBase(stream, state) {\n if (stream.eatSpace()) return null;\n\n var sol = stream.sol();\n var ch = stream.next();\n\n if (ch === '\\\\') {\n stream.next();\n return null;\n }\n if (ch === '\\'' || ch === '\"' || ch === '`') {\n state.tokens.unshift(tokenString(ch, ch === \"`\" ? \"quote\" : \"string\"));\n return tokenize(stream, state);\n }\n if (ch === '#') {\n if (sol && stream.eat('!')) {\n stream.skipToEnd();\n return 'meta'; // 'comment'?\n }\n stream.skipToEnd();\n return 'comment';\n }\n if (ch === '$') {\n state.tokens.unshift(tokenDollar);\n return tokenize(stream, state);\n }\n if (ch === '+' || ch === '=') {\n return 'operator';\n }\n if (ch === '-') {\n stream.eat('-');\n stream.eatWhile(/\\w/);\n return 'attribute';\n }\n if (ch == \"<\") {\n if (stream.match(\"<<\")) return \"operator\"\n var heredoc = stream.match(/^<-?\\s*['\"]?([^'\"]*)['\"]?/)\n if (heredoc) {\n state.tokens.unshift(tokenHeredoc(heredoc[1]))\n return 'string-2'\n }\n }\n if (/\\d/.test(ch)) {\n stream.eatWhile(/\\d/);\n if(stream.eol() || !/\\w/.test(stream.peek())) {\n return 'number';\n }\n }\n stream.eatWhile(/[\\w-]/);\n var cur = stream.current();\n if (stream.peek() === '=' && /\\w+/.test(cur)) return 'def';\n return words.hasOwnProperty(cur) ? words[cur] : null;\n }\n\n function tokenString(quote, style) {\n var close = quote == \"(\" ? \")\" : quote == \"{\" ? \"}\" : quote\n return function(stream, state) {\n var next, escaped = false;\n while ((next = stream.next()) != null) {\n if (next === close && !escaped) {\n state.tokens.shift();\n break;\n } else if (next === '$' && !escaped && quote !== \"'\" && stream.peek() != close) {\n escaped = true;\n stream.backUp(1);\n state.tokens.unshift(tokenDollar);\n break;\n } else if (!escaped && quote !== close && next === quote) {\n state.tokens.unshift(tokenString(quote, style))\n return tokenize(stream, state)\n } else if (!escaped && /['\"]/.test(next) && !/['\"]/.test(quote)) {\n state.tokens.unshift(tokenStringStart(next, \"string\"));\n stream.backUp(1);\n break;\n }\n escaped = !escaped && next === '\\\\';\n }\n return style;\n };\n };\n\n function tokenStringStart(quote, style) {\n return function(stream, state) {\n state.tokens[0] = tokenString(quote, style)\n stream.next()\n return tokenize(stream, state)\n }\n }\n\n var tokenDollar = function(stream, state) {\n if (state.tokens.length > 1) stream.eat('$');\n var ch = stream.next()\n if (/['\"({]/.test(ch)) {\n state.tokens[0] = tokenString(ch, ch == \"(\" ? \"quote\" : ch == \"{\" ? \"def\" : \"string\");\n return tokenize(stream, state);\n }\n if (!/\\d/.test(ch)) stream.eatWhile(/\\w/);\n state.tokens.shift();\n return 'def';\n };\n\n function tokenHeredoc(delim) {\n return function(stream, state) {\n if (stream.sol() && stream.string == delim) state.tokens.shift()\n stream.skipToEnd()\n return \"string-2\"\n }\n }\n\n function tokenize(stream, state) {\n return (state.tokens[0] || tokenBase) (stream, state);\n };\n\n return {\n startState: function() {return {tokens:[]};},\n token: function(stream, state) {\n return tokenize(stream, state);\n },\n closeBrackets: \"()[]{}''\\\"\\\"``\",\n lineComment: '#',\n fold: \"brace\"\n };\n});\n\nCodeMirror.defineMIME('text/x-sh', 'shell');\n// Apache uses a slightly different Media Type for Shell scripts\n// http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types\nCodeMirror.defineMIME('application/x-sh', 'shell');\n\n});\n", "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"javascript\", function(config, parserConfig) {\n var indentUnit = config.indentUnit;\n var statementIndent = parserConfig.statementIndent;\n var jsonldMode = parserConfig.jsonld;\n var jsonMode = parserConfig.json || jsonldMode;\n var trackScope = parserConfig.trackScope !== false\n var isTS = parserConfig.typescript;\n var wordRE = parserConfig.wordCharacters || /[\\w$\\xa1-\\uffff]/;\n\n // Tokenizer\n\n var keywords = function(){\n function kw(type) {return {type: type, style: \"keyword\"};}\n var A = kw(\"keyword a\"), B = kw(\"keyword b\"), C = kw(\"keyword c\"), D = kw(\"keyword d\");\n var operator = kw(\"operator\"), atom = {type: \"atom\", style: \"atom\"};\n\n return {\n \"if\": kw(\"if\"), \"while\": A, \"with\": A, \"else\": B, \"do\": B, \"try\": B, \"finally\": B,\n \"return\": D, \"break\": D, \"continue\": D, \"new\": kw(\"new\"), \"delete\": C, \"void\": C, \"throw\": C,\n \"debugger\": kw(\"debugger\"), \"var\": kw(\"var\"), \"const\": kw(\"var\"), \"let\": kw(\"var\"),\n \"function\": kw(\"function\"), \"catch\": kw(\"catch\"),\n \"for\": kw(\"for\"), \"switch\": kw(\"switch\"), \"case\": kw(\"case\"), \"default\": kw(\"default\"),\n \"in\": operator, \"typeof\": operator, \"instanceof\": operator,\n \"true\": atom, \"false\": atom, \"null\": atom, \"undefined\": atom, \"NaN\": atom, \"Infinity\": atom,\n \"this\": kw(\"this\"), \"class\": kw(\"class\"), \"super\": kw(\"atom\"),\n \"yield\": C, \"export\": kw(\"export\"), \"import\": kw(\"import\"), \"extends\": C,\n \"await\": C\n };\n }();\n\n var isOperatorChar = /[+\\-*&%=<>!?|~^@]/;\n var isJsonldKeyword = /^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)\"/;\n\n function readRegexp(stream) {\n var escaped = false, next, inSet = false;\n while ((next = stream.next()) != null) {\n if (!escaped) {\n if (next == \"/\" && !inSet) return;\n if (next == \"[\") inSet = true;\n else if (inSet && next == \"]\") inSet = false;\n }\n escaped = !escaped && next == \"\\\\\";\n }\n }\n\n // Used as scratch variables to communicate multiple values without\n // consing up tons of objects.\n var type, content;\n function ret(tp, style, cont) {\n type = tp; content = cont;\n return style;\n }\n function tokenBase(stream, state) {\n var ch = stream.next();\n if (ch == '\"' || ch == \"'\") {\n state.tokenize = tokenString(ch);\n return state.tokenize(stream, state);\n } else if (ch == \".\" && stream.match(/^\\d[\\d_]*(?:[eE][+\\-]?[\\d_]+)?/)) {\n return ret(\"number\", \"number\");\n } else if (ch == \".\" && stream.match(\"..\")) {\n return ret(\"spread\", \"meta\");\n } else if (/[\\[\\]{}\\(\\),;\\:\\.]/.test(ch)) {\n return ret(ch);\n } else if (ch == \"=\" && stream.eat(\">\")) {\n return ret(\"=>\", \"operator\");\n } else if (ch == \"0\" && stream.match(/^(?:x[\\dA-Fa-f_]+|o[0-7_]+|b[01_]+)n?/)) {\n return ret(\"number\", \"number\");\n } else if (/\\d/.test(ch)) {\n stream.match(/^[\\d_]*(?:n|(?:\\.[\\d_]*)?(?:[eE][+\\-]?[\\d_]+)?)?/);\n return ret(\"number\", \"number\");\n } else if (ch == \"/\") {\n if (stream.eat(\"*\")) {\n state.tokenize = tokenComment;\n return tokenComment(stream, state);\n } else if (stream.eat(\"/\")) {\n stream.skipToEnd();\n return ret(\"comment\", \"comment\");\n } else if (expressionAllowed(stream, state, 1)) {\n readRegexp(stream);\n stream.match(/^\\b(([gimyus])(?![gimyus]*\\2))+\\b/);\n return ret(\"regexp\", \"string-2\");\n } else {\n stream.eat(\"=\");\n return ret(\"operator\", \"operator\", stream.current());\n }\n } else if (ch == \"`\") {\n state.tokenize = tokenQuasi;\n return tokenQuasi(stream, state);\n } else if (ch == \"#\" && stream.peek() == \"!\") {\n stream.skipToEnd();\n return ret(\"meta\", \"meta\");\n } else if (ch == \"#\" && stream.eatWhile(wordRE)) {\n return ret(\"variable\", \"property\")\n } else if (ch == \"<\" && stream.match(\"!--\") ||\n (ch == \"-\" && stream.match(\"->\") && !/\\S/.test(stream.string.slice(0, stream.start)))) {\n stream.skipToEnd()\n return ret(\"comment\", \"comment\")\n } else if (isOperatorChar.test(ch)) {\n if (ch != \">\" || !state.lexical || state.lexical.type != \">\") {\n if (stream.eat(\"=\")) {\n if (ch == \"!\" || ch == \"=\") stream.eat(\"=\")\n } else if (/[<>*+\\-|&?]/.test(ch)) {\n stream.eat(ch)\n if (ch == \">\") stream.eat(ch)\n }\n }\n if (ch == \"?\" && stream.eat(\".\")) return ret(\".\")\n return ret(\"operator\", \"operator\", stream.current());\n } else if (wordRE.test(ch)) {\n stream.eatWhile(wordRE);\n var word = stream.current()\n if (state.lastType != \".\") {\n if (keywords.propertyIsEnumerable(word)) {\n var kw = keywords[word]\n return ret(kw.type, kw.style, word)\n }\n if (word == \"async\" && stream.match(/^(\\s|\\/\\*([^*]|\\*(?!\\/))*?\\*\\/)*[\\[\\(\\w]/, false))\n return ret(\"async\", \"keyword\", word)\n }\n return ret(\"variable\", \"variable\", word)\n }\n }\n\n function tokenString(quote) {\n return function(stream, state) {\n var escaped = false, next;\n if (jsonldMode && stream.peek() == \"@\" && stream.match(isJsonldKeyword)){\n state.tokenize = tokenBase;\n return ret(\"jsonld-keyword\", \"meta\");\n }\n while ((next = stream.next()) != null) {\n if (next == quote && !escaped) break;\n escaped = !escaped && next == \"\\\\\";\n }\n if (!escaped) state.tokenize = tokenBase;\n return ret(\"string\", \"string\");\n };\n }\n\n function tokenComment(stream, state) {\n var maybeEnd = false, ch;\n while (ch = stream.next()) {\n if (ch == \"/\" && maybeEnd) {\n state.tokenize = tokenBase;\n break;\n }\n maybeEnd = (ch == \"*\");\n }\n return ret(\"comment\", \"comment\");\n }\n\n function tokenQuasi(stream, state) {\n var escaped = false, next;\n while ((next = stream.next()) != null) {\n if (!escaped && (next == \"`\" || next == \"$\" && stream.eat(\"{\"))) {\n state.tokenize = tokenBase;\n break;\n }\n escaped = !escaped && next == \"\\\\\";\n }\n return ret(\"quasi\", \"string-2\", stream.current());\n }\n\n var brackets = \"([{}])\";\n // This is a crude lookahead trick to try and notice that we're\n // parsing the argument patterns for a fat-arrow function before we\n // actually hit the arrow token. It only works if the arrow is on\n // the same line as the arguments and there's no strange noise\n // (comments) in between. Fallback is to only notice when we hit the\n // arrow, and not declare the arguments as locals for the arrow\n // body.\n function findFatArrow(stream, state) {\n if (state.fatArrowAt) state.fatArrowAt = null;\n var arrow = stream.string.indexOf(\"=>\", stream.start);\n if (arrow < 0) return;\n\n if (isTS) { // Try to skip TypeScript return type declarations after the arguments\n var m = /:\\s*(?:\\w+(?:<[^>]*>|\\[\\])?|\\{[^}]*\\})\\s*$/.exec(stream.string.slice(stream.start, arrow))\n if (m) arrow = m.index\n }\n\n var depth = 0, sawSomething = false;\n for (var pos = arrow - 1; pos >= 0; --pos) {\n var ch = stream.string.charAt(pos);\n var bracket = brackets.indexOf(ch);\n if (bracket >= 0 && bracket < 3) {\n if (!depth) { ++pos; break; }\n if (--depth == 0) { if (ch == \"(\") sawSomething = true; break; }\n } else if (bracket >= 3 && bracket < 6) {\n ++depth;\n } else if (wordRE.test(ch)) {\n sawSomething = true;\n } else if (/[\"'\\/`]/.test(ch)) {\n for (;; --pos) {\n if (pos == 0) return\n var next = stream.string.charAt(pos - 1)\n if (next == ch && stream.string.charAt(pos - 2) != \"\\\\\") { pos--; break }\n }\n } else if (sawSomething && !depth) {\n ++pos;\n break;\n }\n }\n if (sawSomething && !depth) state.fatArrowAt = pos;\n }\n\n // Parser\n\n var atomicTypes = {\"atom\": true, \"number\": true, \"variable\": true, \"string\": true,\n \"regexp\": true, \"this\": true, \"import\": true, \"jsonld-keyword\": true};\n\n function JSLexical(indented, column, type, align, prev, info) {\n this.indented = indented;\n this.column = column;\n this.type = type;\n this.prev = prev;\n this.info = info;\n if (align != null) this.align = align;\n }\n\n function inScope(state, varname) {\n if (!trackScope) return false\n for (var v = state.localVars; v; v = v.next)\n if (v.name == varname) return true;\n for (var cx = state.context; cx; cx = cx.prev) {\n for (var v = cx.vars; v; v = v.next)\n if (v.name == varname) return true;\n }\n }\n\n function parseJS(state, style, type, content, stream) {\n var cc = state.cc;\n // Communicate our context to the combinators.\n // (Less wasteful than consing up a hundred closures on every call.)\n cx.state = state; cx.stream = stream; cx.marked = null, cx.cc = cc; cx.style = style;\n\n if (!state.lexical.hasOwnProperty(\"align\"))\n state.lexical.align = true;\n\n while(true) {\n var combinator = cc.length ? cc.pop() : jsonMode ? expression : statement;\n if (combinator(type, content)) {\n while(cc.length && cc[cc.length - 1].lex)\n cc.pop()();\n if (cx.marked) return cx.marked;\n if (type == \"variable\" && inScope(state, content)) return \"variable-2\";\n return style;\n }\n }\n }\n\n // Combinator utils\n\n var cx = {state: null, column: null, marked: null, cc: null};\n function pass() {\n for (var i = arguments.length - 1; i >= 0; i--) cx.cc.push(arguments[i]);\n }\n function cont() {\n pass.apply(null, arguments);\n return true;\n }\n function inList(name, list) {\n for (var v = list; v; v = v.next) if (v.name == name) return true\n return false;\n }\n function register(varname) {\n var state = cx.state;\n cx.marked = \"def\";\n if (!trackScope) return\n if (state.context) {\n if (state.lexical.info == \"var\" && state.context && state.context.block) {\n // FIXME function decls are also not block scoped\n var newContext = registerVarScoped(varname, state.context)\n if (newContext != null) {\n state.context = newContext\n return\n }\n } else if (!inList(varname, state.localVars)) {\n state.localVars = new Var(varname, state.localVars)\n return\n }\n }\n // Fall through means this is global\n if (parserConfig.globalVars && !inList(varname, state.globalVars))\n state.globalVars = new Var(varname, state.globalVars)\n }\n function registerVarScoped(varname, context) {\n if (!context) {\n return null\n } else if (context.block) {\n var inner = registerVarScoped(varname, context.prev)\n if (!inner) return null\n if (inner == context.prev) return context\n return new Context(inner, context.vars, true)\n } else if (inList(varname, context.vars)) {\n return context\n } else {\n return new Context(context.prev, new Var(varname, context.vars), false)\n }\n }\n\n function isModifier(name) {\n return name == \"public\" || name == \"private\" || name == \"protected\" || name == \"abstract\" || name == \"readonly\"\n }\n\n // Combinators\n\n function Context(prev, vars, block) { this.prev = prev; this.vars = vars; this.block = block }\n function Var(name, next) { this.name = name; this.next = next }\n\n var defaultVars = new Var(\"this\", new Var(\"arguments\", null))\n function pushcontext() {\n cx.state.context = new Context(cx.state.context, cx.state.localVars, false)\n cx.state.localVars = defaultVars\n }\n function pushblockcontext() {\n cx.state.context = new Context(cx.state.context, cx.state.localVars, true)\n cx.state.localVars = null\n }\n pushcontext.lex = pushblockcontext.lex = true\n function popcontext() {\n cx.state.localVars = cx.state.context.vars\n cx.state.context = cx.state.context.prev\n }\n popcontext.lex = true\n function pushlex(type, info) {\n var result = function() {\n var state = cx.state, indent = state.indented;\n if (state.lexical.type == \"stat\") indent = state.lexical.indented;\n else for (var outer = state.lexical; outer && outer.type == \")\" && outer.align; outer = outer.prev)\n indent = outer.indented;\n state.lexical = new JSLexical(indent, cx.stream.column(), type, null, state.lexical, info);\n };\n result.lex = true;\n return result;\n }\n function poplex() {\n var state = cx.state;\n if (state.lexical.prev) {\n if (state.lexical.type == \")\")\n state.indented = state.lexical.indented;\n state.lexical = state.lexical.prev;\n }\n }\n poplex.lex = true;\n\n function expect(wanted) {\n function exp(type) {\n if (type == wanted) return cont();\n else if (wanted == \";\" || type == \"}\" || type == \")\" || type == \"]\") return pass();\n else return cont(exp);\n };\n return exp;\n }\n\n function statement(type, value) {\n if (type == \"var\") return cont(pushlex(\"vardef\", value), vardef, expect(\";\"), poplex);\n if (type == \"keyword a\") return cont(pushlex(\"form\"), parenExpr, statement, poplex);\n if (type == \"keyword b\") return cont(pushlex(\"form\"), statement, poplex);\n if (type == \"keyword d\") return cx.stream.match(/^\\s*$/, false) ? cont() : cont(pushlex(\"stat\"), maybeexpression, expect(\";\"), poplex);\n if (type == \"debugger\") return cont(expect(\";\"));\n if (type == \"{\") return cont(pushlex(\"}\"), pushblockcontext, block, poplex, popcontext);\n if (type == \";\") return cont();\n if (type == \"if\") {\n if (cx.state.lexical.info == \"else\" && cx.state.cc[cx.state.cc.length - 1] == poplex)\n cx.state.cc.pop()();\n return cont(pushlex(\"form\"), parenExpr, statement, poplex, maybeelse);\n }\n if (type == \"function\") return cont(functiondef);\n if (type == \"for\") return cont(pushlex(\"form\"), pushblockcontext, forspec, statement, popcontext, poplex);\n if (type == \"class\" || (isTS && value == \"interface\")) {\n cx.marked = \"keyword\"\n return cont(pushlex(\"form\", type == \"class\" ? type : value), className, poplex)\n }\n if (type == \"variable\") {\n if (isTS && value == \"declare\") {\n cx.marked = \"keyword\"\n return cont(statement)\n } else if (isTS && (value == \"module\" || value == \"enum\" || value == \"type\") && cx.stream.match(/^\\s*\\w/, false)) {\n cx.marked = \"keyword\"\n if (value == \"enum\") return cont(enumdef);\n else if (value == \"type\") return cont(typename, expect(\"operator\"), typeexpr, expect(\";\"));\n else return cont(pushlex(\"form\"), pattern, expect(\"{\"), pushlex(\"}\"), block, poplex, poplex)\n } else if (isTS && value == \"namespace\") {\n cx.marked = \"keyword\"\n return cont(pushlex(\"form\"), expression, statement, poplex)\n } else if (isTS && value == \"abstract\") {\n cx.marked = \"keyword\"\n return cont(statement)\n } else {\n return cont(pushlex(\"stat\"), maybelabel);\n }\n }\n if (type == \"switch\") return cont(pushlex(\"form\"), parenExpr, expect(\"{\"), pushlex(\"}\", \"switch\"), pushblockcontext,\n block, poplex, poplex, popcontext);\n if (type == \"case\") return cont(expression, expect(\":\"));\n if (type == \"default\") return cont(expect(\":\"));\n if (type == \"catch\") return cont(pushlex(\"form\"), pushcontext, maybeCatchBinding, statement, poplex, popcontext);\n if (type == \"export\") return cont(pushlex(\"stat\"), afterExport, poplex);\n if (type == \"import\") return cont(pushlex(\"stat\"), afterImport, poplex);\n if (type == \"async\") return cont(statement)\n if (value == \"@\") return cont(expression, statement)\n return pass(pushlex(\"stat\"), expression, expect(\";\"), poplex);\n }\n function maybeCatchBinding(type) {\n if (type == \"(\") return cont(funarg, expect(\")\"))\n }\n function expression(type, value) {\n return expressionInner(type, value, false);\n }\n function expressionNoComma(type, value) {\n return expressionInner(type, value, true);\n }\n function parenExpr(type) {\n if (type != \"(\") return pass()\n return cont(pushlex(\")\"), maybeexpression, expect(\")\"), poplex)\n }\n function expressionInner(type, value, noComma) {\n if (cx.state.fatArrowAt == cx.stream.start) {\n var body = noComma ? arrowBodyNoComma : arrowBody;\n if (type == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(funarg, \")\"), poplex, expect(\"=>\"), body, popcontext);\n else if (type == \"variable\") return pass(pushcontext, pattern, expect(\"=>\"), body, popcontext);\n }\n\n var maybeop = noComma ? maybeoperatorNoComma : maybeoperatorComma;\n if (atomicTypes.hasOwnProperty(type)) return cont(maybeop);\n if (type == \"function\") return cont(functiondef, maybeop);\n if (type == \"class\" || (isTS && value == \"interface\")) { cx.marked = \"keyword\"; return cont(pushlex(\"form\"), classExpression, poplex); }\n if (type == \"keyword c\" || type == \"async\") return cont(noComma ? expressionNoComma : expression);\n if (type == \"(\") return cont(pushlex(\")\"), maybeexpression, expect(\")\"), poplex, maybeop);\n if (type == \"operator\" || type == \"spread\") return cont(noComma ? expressionNoComma : expression);\n if (type == \"[\") return cont(pushlex(\"]\"), arrayLiteral, poplex, maybeop);\n if (type == \"{\") return contCommasep(objprop, \"}\", null, maybeop);\n if (type == \"quasi\") return pass(quasi, maybeop);\n if (type == \"new\") return cont(maybeTarget(noComma));\n return cont();\n }\n function maybeexpression(type) {\n if (type.match(/[;\\}\\)\\],]/)) return pass();\n return pass(expression);\n }\n\n function maybeoperatorComma(type, value) {\n if (type == \",\") return cont(maybeexpression);\n return maybeoperatorNoComma(type, value, false);\n }\n function maybeoperatorNoComma(type, value, noComma) {\n var me = noComma == false ? maybeoperatorComma : maybeoperatorNoComma;\n var expr = noComma == false ? expression : expressionNoComma;\n if (type == \"=>\") return cont(pushcontext, noComma ? arrowBodyNoComma : arrowBody, popcontext);\n if (type == \"operator\") {\n if (/\\+\\+|--/.test(value) || isTS && value == \"!\") return cont(me);\n if (isTS && value == \"<\" && cx.stream.match(/^([^<>]|<[^<>]*>)*>\\s*\\(/, false))\n return cont(pushlex(\">\"), commasep(typeexpr, \">\"), poplex, me);\n if (value == \"?\") return cont(expression, expect(\":\"), expr);\n return cont(expr);\n }\n if (type == \"quasi\") { return pass(quasi, me); }\n if (type == \";\") return;\n if (type == \"(\") return contCommasep(expressionNoComma, \")\", \"call\", me);\n if (type == \".\") return cont(property, me);\n if (type == \"[\") return cont(pushlex(\"]\"), maybeexpression, expect(\"]\"), poplex, me);\n if (isTS && value == \"as\") { cx.marked = \"keyword\"; return cont(typeexpr, me) }\n if (type == \"regexp\") {\n cx.state.lastType = cx.marked = \"operator\"\n cx.stream.backUp(cx.stream.pos - cx.stream.start - 1)\n return cont(expr)\n }\n }\n function quasi(type, value) {\n if (type != \"quasi\") return pass();\n if (value.slice(value.length - 2) != \"${\") return cont(quasi);\n return cont(maybeexpression, continueQuasi);\n }\n function continueQuasi(type) {\n if (type == \"}\") {\n cx.marked = \"string-2\";\n cx.state.tokenize = tokenQuasi;\n return cont(quasi);\n }\n }\n function arrowBody(type) {\n findFatArrow(cx.stream, cx.state);\n return pass(type == \"{\" ? statement : expression);\n }\n function arrowBodyNoComma(type) {\n findFatArrow(cx.stream, cx.state);\n return pass(type == \"{\" ? statement : expressionNoComma);\n }\n function maybeTarget(noComma) {\n return function(type) {\n if (type == \".\") return cont(noComma ? targetNoComma : target);\n else if (type == \"variable\" && isTS) return cont(maybeTypeArgs, noComma ? maybeoperatorNoComma : maybeoperatorComma)\n else return pass(noComma ? expressionNoComma : expression);\n };\n }\n function target(_, value) {\n if (value == \"target\") { cx.marked = \"keyword\"; return cont(maybeoperatorComma); }\n }\n function targetNoComma(_, value) {\n if (value == \"target\") { cx.marked = \"keyword\"; return cont(maybeoperatorNoComma); }\n }\n function maybelabel(type) {\n if (type == \":\") return cont(poplex, statement);\n return pass(maybeoperatorComma, expect(\";\"), poplex);\n }\n function property(type) {\n if (type == \"variable\") {cx.marked = \"property\"; return cont();}\n }\n function objprop(type, value) {\n if (type == \"async\") {\n cx.marked = \"property\";\n return cont(objprop);\n } else if (type == \"variable\" || cx.style == \"keyword\") {\n cx.marked = \"property\";\n if (value == \"get\" || value == \"set\") return cont(getterSetter);\n var m // Work around fat-arrow-detection complication for detecting typescript typed arrow params\n if (isTS && cx.state.fatArrowAt == cx.stream.start && (m = cx.stream.match(/^\\s*:\\s*/, false)))\n cx.state.fatArrowAt = cx.stream.pos + m[0].length\n return cont(afterprop);\n } else if (type == \"number\" || type == \"string\") {\n cx.marked = jsonldMode ? \"property\" : (cx.style + \" property\");\n return cont(afterprop);\n } else if (type == \"jsonld-keyword\") {\n return cont(afterprop);\n } else if (isTS && isModifier(value)) {\n cx.marked = \"keyword\"\n return cont(objprop)\n } else if (type == \"[\") {\n return cont(expression, maybetype, expect(\"]\"), afterprop);\n } else if (type == \"spread\") {\n return cont(expressionNoComma, afterprop);\n } else if (value == \"*\") {\n cx.marked = \"keyword\";\n return cont(objprop);\n } else if (type == \":\") {\n return pass(afterprop)\n }\n }\n function getterSetter(type) {\n if (type != \"variable\") return pass(afterprop);\n cx.marked = \"property\";\n return cont(functiondef);\n }\n function afterprop(type) {\n if (type == \":\") return cont(expressionNoComma);\n if (type == \"(\") return pass(functiondef);\n }\n function commasep(what, end, sep) {\n function proceed(type, value) {\n if (sep ? sep.indexOf(type) > -1 : type == \",\") {\n var lex = cx.state.lexical;\n if (lex.info == \"call\") lex.pos = (lex.pos || 0) + 1;\n return cont(function(type, value) {\n if (type == end || value == end) return pass()\n return pass(what)\n }, proceed);\n }\n if (type == end || value == end) return cont();\n if (sep && sep.indexOf(\";\") > -1) return pass(what)\n return cont(expect(end));\n }\n return function(type, value) {\n if (type == end || value == end) return cont();\n return pass(what, proceed);\n };\n }\n function contCommasep(what, end, info) {\n for (var i = 3; i < arguments.length; i++)\n cx.cc.push(arguments[i]);\n return cont(pushlex(end, info), commasep(what, end), poplex);\n }\n function block(type) {\n if (type == \"}\") return cont();\n return pass(statement, block);\n }\n function maybetype(type, value) {\n if (isTS) {\n if (type == \":\") return cont(typeexpr);\n if (value == \"?\") return cont(maybetype);\n }\n }\n function maybetypeOrIn(type, value) {\n if (isTS && (type == \":\" || value == \"in\")) return cont(typeexpr)\n }\n function mayberettype(type) {\n if (isTS && type == \":\") {\n if (cx.stream.match(/^\\s*\\w+\\s+is\\b/, false)) return cont(expression, isKW, typeexpr)\n else return cont(typeexpr)\n }\n }\n function isKW(_, value) {\n if (value == \"is\") {\n cx.marked = \"keyword\"\n return cont()\n }\n }\n function typeexpr(type, value) {\n if (value == \"keyof\" || value == \"typeof\" || value == \"infer\" || value == \"readonly\") {\n cx.marked = \"keyword\"\n return cont(value == \"typeof\" ? expressionNoComma : typeexpr)\n }\n if (type == \"variable\" || value == \"void\") {\n cx.marked = \"type\"\n return cont(afterType)\n }\n if (value == \"|\" || value == \"&\") return cont(typeexpr)\n if (type == \"string\" || type == \"number\" || type == \"atom\") return cont(afterType);\n if (type == \"[\") return cont(pushlex(\"]\"), commasep(typeexpr, \"]\", \",\"), poplex, afterType)\n if (type == \"{\") return cont(pushlex(\"}\"), typeprops, poplex, afterType)\n if (type == \"(\") return cont(commasep(typearg, \")\"), maybeReturnType, afterType)\n if (type == \"<\") return cont(commasep(typeexpr, \">\"), typeexpr)\n if (type == \"quasi\") { return pass(quasiType, afterType); }\n }\n function maybeReturnType(type) {\n if (type == \"=>\") return cont(typeexpr)\n }\n function typeprops(type) {\n if (type.match(/[\\}\\)\\]]/)) return cont()\n if (type == \",\" || type == \";\") return cont(typeprops)\n return pass(typeprop, typeprops)\n }\n function typeprop(type, value) {\n if (type == \"variable\" || cx.style == \"keyword\") {\n cx.marked = \"property\"\n return cont(typeprop)\n } else if (value == \"?\" || type == \"number\" || type == \"string\") {\n return cont(typeprop)\n } else if (type == \":\") {\n return cont(typeexpr)\n } else if (type == \"[\") {\n return cont(expect(\"variable\"), maybetypeOrIn, expect(\"]\"), typeprop)\n } else if (type == \"(\") {\n return pass(functiondecl, typeprop)\n } else if (!type.match(/[;\\}\\)\\],]/)) {\n return cont()\n }\n }\n function quasiType(type, value) {\n if (type != \"quasi\") return pass();\n if (value.slice(value.length - 2) != \"${\") return cont(quasiType);\n return cont(typeexpr, continueQuasiType);\n }\n function continueQuasiType(type) {\n if (type == \"}\") {\n cx.marked = \"string-2\";\n cx.state.tokenize = tokenQuasi;\n return cont(quasiType);\n }\n }\n function typearg(type, value) {\n if (type == \"variable\" && cx.stream.match(/^\\s*[?:]/, false) || value == \"?\") return cont(typearg)\n if (type == \":\") return cont(typeexpr)\n if (type == \"spread\") return cont(typearg)\n return pass(typeexpr)\n }\n function afterType(type, value) {\n if (value == \"<\") return cont(pushlex(\">\"), commasep(typeexpr, \">\"), poplex, afterType)\n if (value == \"|\" || type == \".\" || value == \"&\") return cont(typeexpr)\n if (type == \"[\") return cont(typeexpr, expect(\"]\"), afterType)\n if (value == \"extends\" || value == \"implements\") { cx.marked = \"keyword\"; return cont(typeexpr) }\n if (value == \"?\") return cont(typeexpr, expect(\":\"), typeexpr)\n }\n function maybeTypeArgs(_, value) {\n if (value == \"<\") return cont(pushlex(\">\"), commasep(typeexpr, \">\"), poplex, afterType)\n }\n function typeparam() {\n return pass(typeexpr, maybeTypeDefault)\n }\n function maybeTypeDefault(_, value) {\n if (value == \"=\") return cont(typeexpr)\n }\n function vardef(_, value) {\n if (value == \"enum\") {cx.marked = \"keyword\"; return cont(enumdef)}\n return pass(pattern, maybetype, maybeAssign, vardefCont);\n }\n function pattern(type, value) {\n if (isTS && isModifier(value)) { cx.marked = \"keyword\"; return cont(pattern) }\n if (type == \"variable\") { register(value); return cont(); }\n if (type == \"spread\") return cont(pattern);\n if (type == \"[\") return contCommasep(eltpattern, \"]\");\n if (type == \"{\") return contCommasep(proppattern, \"}\");\n }\n function proppattern(type, value) {\n if (type == \"variable\" && !cx.stream.match(/^\\s*:/, false)) {\n register(value);\n return cont(maybeAssign);\n }\n if (type == \"variable\") cx.marked = \"property\";\n if (type == \"spread\") return cont(pattern);\n if (type == \"}\") return pass();\n if (type == \"[\") return cont(expression, expect(']'), expect(':'), proppattern);\n return cont(expect(\":\"), pattern, maybeAssign);\n }\n function eltpattern() {\n return pass(pattern, maybeAssign)\n }\n function maybeAssign(_type, value) {\n if (value == \"=\") return cont(expressionNoComma);\n }\n function vardefCont(type) {\n if (type == \",\") return cont(vardef);\n }\n function maybeelse(type, value) {\n if (type == \"keyword b\" && value == \"else\") return cont(pushlex(\"form\", \"else\"), statement, poplex);\n }\n function forspec(type, value) {\n if (value == \"await\") return cont(forspec);\n if (type == \"(\") return cont(pushlex(\")\"), forspec1, poplex);\n }\n function forspec1(type) {\n if (type == \"var\") return cont(vardef, forspec2);\n if (type == \"variable\") return cont(forspec2);\n return pass(forspec2)\n }\n function forspec2(type, value) {\n if (type == \")\") return cont()\n if (type == \";\") return cont(forspec2)\n if (value == \"in\" || value == \"of\") { cx.marked = \"keyword\"; return cont(expression, forspec2) }\n return pass(expression, forspec2)\n }\n function functiondef(type, value) {\n if (value == \"*\") {cx.marked = \"keyword\"; return cont(functiondef);}\n if (type == \"variable\") {register(value); return cont(functiondef);}\n if (type == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(funarg, \")\"), poplex, mayberettype, statement, popcontext);\n if (isTS && value == \"<\") return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex, functiondef)\n }\n function functiondecl(type, value) {\n if (value == \"*\") {cx.marked = \"keyword\"; return cont(functiondecl);}\n if (type == \"variable\") {register(value); return cont(functiondecl);}\n if (type == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(funarg, \")\"), poplex, mayberettype, popcontext);\n if (isTS && value == \"<\") return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex, functiondecl)\n }\n function typename(type, value) {\n if (type == \"keyword\" || type == \"variable\") {\n cx.marked = \"type\"\n return cont(typename)\n } else if (value == \"<\") {\n return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex)\n }\n }\n function funarg(type, value) {\n if (value == \"@\") cont(expression, funarg)\n if (type == \"spread\") return cont(funarg);\n if (isTS && isModifier(value)) { cx.marked = \"keyword\"; return cont(funarg); }\n if (isTS && type == \"this\") return cont(maybetype, maybeAssign)\n return pass(pattern, maybetype, maybeAssign);\n }\n function classExpression(type, value) {\n // Class expressions may have an optional name.\n if (type == \"variable\") return className(type, value);\n return classNameAfter(type, value);\n }\n function className(type, value) {\n if (type == \"variable\") {register(value); return cont(classNameAfter);}\n }\n function classNameAfter(type, value) {\n if (value == \"<\") return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex, classNameAfter)\n if (value == \"extends\" || value == \"implements\" || (isTS && type == \",\")) {\n if (value == \"implements\") cx.marked = \"keyword\";\n return cont(isTS ? typeexpr : expression, classNameAfter);\n }\n if (type == \"{\") return cont(pushlex(\"}\"), classBody, poplex);\n }\n function classBody(type, value) {\n if (type == \"async\" ||\n (type == \"variable\" &&\n (value == \"static\" || value == \"get\" || value == \"set\" || (isTS && isModifier(value))) &&\n cx.stream.match(/^\\s+#?[\\w$\\xa1-\\uffff]/, false))) {\n cx.marked = \"keyword\";\n return cont(classBody);\n }\n if (type == \"variable\" || cx.style == \"keyword\") {\n cx.marked = \"property\";\n return cont(classfield, classBody);\n }\n if (type == \"number\" || type == \"string\") return cont(classfield, classBody);\n if (type == \"[\")\n return cont(expression, maybetype, expect(\"]\"), classfield, classBody)\n if (value == \"*\") {\n cx.marked = \"keyword\";\n return cont(classBody);\n }\n if (isTS && type == \"(\") return pass(functiondecl, classBody)\n if (type == \";\" || type == \",\") return cont(classBody);\n if (type == \"}\") return cont();\n if (value == \"@\") return cont(expression, classBody)\n }\n function classfield(type, value) {\n if (value == \"!\") return cont(classfield)\n if (value == \"?\") return cont(classfield)\n if (type == \":\") return cont(typeexpr, maybeAssign)\n if (value == \"=\") return cont(expressionNoComma)\n var context = cx.state.lexical.prev, isInterface = context && context.info == \"interface\"\n return pass(isInterface ? functiondecl : functiondef)\n }\n function afterExport(type, value) {\n if (value == \"*\") { cx.marked = \"keyword\"; return cont(maybeFrom, expect(\";\")); }\n if (value == \"default\") { cx.marked = \"keyword\"; return cont(expression, expect(\";\")); }\n if (type == \"{\") return cont(commasep(exportField, \"}\"), maybeFrom, expect(\";\"));\n return pass(statement);\n }\n function exportField(type, value) {\n if (value == \"as\") { cx.marked = \"keyword\"; return cont(expect(\"variable\")); }\n if (type == \"variable\") return pass(expressionNoComma, exportField);\n }\n function afterImport(type) {\n if (type == \"string\") return cont();\n if (type == \"(\") return pass(expression);\n if (type == \".\") return pass(maybeoperatorComma);\n return pass(importSpec, maybeMoreImports, maybeFrom);\n }\n function importSpec(type, value) {\n if (type == \"{\") return contCommasep(importSpec, \"}\");\n if (type == \"variable\") register(value);\n if (value == \"*\") cx.marked = \"keyword\";\n return cont(maybeAs);\n }\n function maybeMoreImports(type) {\n if (type == \",\") return cont(importSpec, maybeMoreImports)\n }\n function maybeAs(_type, value) {\n if (value == \"as\") { cx.marked = \"keyword\"; return cont(importSpec); }\n }\n function maybeFrom(_type, value) {\n if (value == \"from\") { cx.marked = \"keyword\"; return cont(expression); }\n }\n function arrayLiteral(type) {\n if (type == \"]\") return cont();\n return pass(commasep(expressionNoComma, \"]\"));\n }\n function enumdef() {\n return pass(pushlex(\"form\"), pattern, expect(\"{\"), pushlex(\"}\"), commasep(enummember, \"}\"), poplex, poplex)\n }\n function enummember() {\n return pass(pattern, maybeAssign);\n }\n\n function isContinuedStatement(state, textAfter) {\n return state.lastType == \"operator\" || state.lastType == \",\" ||\n isOperatorChar.test(textAfter.charAt(0)) ||\n /[,.]/.test(textAfter.charAt(0));\n }\n\n function expressionAllowed(stream, state, backUp) {\n return state.tokenize == tokenBase &&\n /^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\\[{}\\(,;:]|=>)$/.test(state.lastType) ||\n (state.lastType == \"quasi\" && /\\{\\s*$/.test(stream.string.slice(0, stream.pos - (backUp || 0))))\n }\n\n // Interface\n\n return {\n startState: function(basecolumn) {\n var state = {\n tokenize: tokenBase,\n lastType: \"sof\",\n cc: [],\n lexical: new JSLexical((basecolumn || 0) - indentUnit, 0, \"block\", false),\n localVars: parserConfig.localVars,\n context: parserConfig.localVars && new Context(null, null, false),\n indented: basecolumn || 0\n };\n if (parserConfig.globalVars && typeof parserConfig.globalVars == \"object\")\n state.globalVars = parserConfig.globalVars;\n return state;\n },\n\n token: function(stream, state) {\n if (stream.sol()) {\n if (!state.lexical.hasOwnProperty(\"align\"))\n state.lexical.align = false;\n state.indented = stream.indentation();\n findFatArrow(stream, state);\n }\n if (state.tokenize != tokenComment && stream.eatSpace()) return null;\n var style = state.tokenize(stream, state);\n if (type == \"comment\") return style;\n state.lastType = type == \"operator\" && (content == \"++\" || content == \"--\") ? \"incdec\" : type;\n return parseJS(state, style, type, content, stream);\n },\n\n indent: function(state, textAfter) {\n if (state.tokenize == tokenComment || state.tokenize == tokenQuasi) return CodeMirror.Pass;\n if (state.tokenize != tokenBase) return 0;\n var firstChar = textAfter && textAfter.charAt(0), lexical = state.lexical, top\n // Kludge to prevent 'maybelse' from blocking lexical scope pops\n if (!/^\\s*else\\b/.test(textAfter)) for (var i = state.cc.length - 1; i >= 0; --i) {\n var c = state.cc[i];\n if (c == poplex) lexical = lexical.prev;\n else if (c != maybeelse && c != popcontext) break;\n }\n while ((lexical.type == \"stat\" || lexical.type == \"form\") &&\n (firstChar == \"}\" || ((top = state.cc[state.cc.length - 1]) &&\n (top == maybeoperatorComma || top == maybeoperatorNoComma) &&\n !/^[,\\.=+\\-*:?[\\(]/.test(textAfter))))\n lexical = lexical.prev;\n if (statementIndent && lexical.type == \")\" && lexical.prev.type == \"stat\")\n lexical = lexical.prev;\n var type = lexical.type, closing = firstChar == type;\n\n if (type == \"vardef\") return lexical.indented + (state.lastType == \"operator\" || state.lastType == \",\" ? lexical.info.length + 1 : 0);\n else if (type == \"form\" && firstChar == \"{\") return lexical.indented;\n else if (type == \"form\") return lexical.indented + indentUnit;\n else if (type == \"stat\")\n return lexical.indented + (isContinuedStatement(state, textAfter) ? statementIndent || indentUnit : 0);\n else if (lexical.info == \"switch\" && !closing && parserConfig.doubleIndentSwitch != false)\n return lexical.indented + (/^(?:case|default)\\b/.test(textAfter) ? indentUnit : 2 * indentUnit);\n else if (lexical.align) return lexical.column + (closing ? 0 : 1);\n else return lexical.indented + (closing ? 0 : indentUnit);\n },\n\n electricInput: /^\\s*(?:case .*?:|default:|\\{|\\})$/,\n blockCommentStart: jsonMode ? null : \"/*\",\n blockCommentEnd: jsonMode ? null : \"*/\",\n blockCommentContinue: jsonMode ? null : \" * \",\n lineComment: jsonMode ? null : \"//\",\n fold: \"brace\",\n closeBrackets: \"()[]{}''\\\"\\\"``\",\n\n helperType: jsonMode ? \"json\" : \"javascript\",\n jsonldMode: jsonldMode,\n jsonMode: jsonMode,\n\n expressionAllowed: expressionAllowed,\n\n skipExpression: function(state) {\n parseJS(state, \"atom\", \"atom\", \"true\", new CodeMirror.StringStream(\"\", 2, null))\n }\n };\n});\n\nCodeMirror.registerHelper(\"wordChars\", \"javascript\", /[\\w$]/);\n\nCodeMirror.defineMIME(\"text/javascript\", \"javascript\");\nCodeMirror.defineMIME(\"text/ecmascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/javascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/x-javascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/ecmascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/json\", { name: \"javascript\", json: true });\nCodeMirror.defineMIME(\"application/x-json\", { name: \"javascript\", json: true });\nCodeMirror.defineMIME(\"application/manifest+json\", { name: \"javascript\", json: true })\nCodeMirror.defineMIME(\"application/ld+json\", { name: \"javascript\", jsonld: true });\nCodeMirror.defineMIME(\"text/typescript\", { name: \"javascript\", typescript: true });\nCodeMirror.defineMIME(\"application/typescript\", { name: \"javascript\", typescript: true });\n\n});\n", "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nfunction wordObj(words) {\n var o = {};\n for (var i = 0, e = words.length; i < e; ++i) o[words[i]] = true;\n return o;\n}\n\nvar keywordList = [\n \"alias\", \"and\", \"BEGIN\", \"begin\", \"break\", \"case\", \"class\", \"def\", \"defined?\", \"do\", \"else\",\n \"elsif\", \"END\", \"end\", \"ensure\", \"false\", \"for\", \"if\", \"in\", \"module\", \"next\", \"not\", \"or\",\n \"redo\", \"rescue\", \"retry\", \"return\", \"self\", \"super\", \"then\", \"true\", \"undef\", \"unless\",\n \"until\", \"when\", \"while\", \"yield\", \"nil\", \"raise\", \"throw\", \"catch\", \"fail\", \"loop\", \"callcc\",\n \"caller\", \"lambda\", \"proc\", \"public\", \"protected\", \"private\", \"require\", \"load\",\n \"require_relative\", \"extend\", \"autoload\", \"__END__\", \"__FILE__\", \"__LINE__\", \"__dir__\"\n], keywords = wordObj(keywordList);\n\nvar indentWords = wordObj([\"def\", \"class\", \"case\", \"for\", \"while\", \"until\", \"module\",\n \"catch\", \"loop\", \"proc\", \"begin\"]);\nvar dedentWords = wordObj([\"end\", \"until\"]);\nvar opening = {\"[\": \"]\", \"{\": \"}\", \"(\": \")\"};\nvar closing = {\"]\": \"[\", \"}\": \"{\", \")\": \"(\"};\n\nCodeMirror.defineMode(\"ruby\", function(config) {\n var curPunc;\n\n function chain(newtok, stream, state) {\n state.tokenize.push(newtok);\n return newtok(stream, state);\n }\n\n function tokenBase(stream, state) {\n if (stream.sol() && stream.match(\"=begin\") && stream.eol()) {\n state.tokenize.push(readBlockComment);\n return \"comment\";\n }\n if (stream.eatSpace()) return null;\n var ch = stream.next(), m;\n if (ch == \"`\" || ch == \"'\" || ch == '\"') {\n return chain(readQuoted(ch, \"string\", ch == '\"' || ch == \"`\"), stream, state);\n } else if (ch == \"/\") {\n if (regexpAhead(stream))\n return chain(readQuoted(ch, \"string-2\", true), stream, state);\n else\n return \"operator\";\n } else if (ch == \"%\") {\n var style = \"string\", embed = true;\n if (stream.eat(\"s\")) style = \"atom\";\n else if (stream.eat(/[WQ]/)) style = \"string\";\n else if (stream.eat(/[r]/)) style = \"string-2\";\n else if (stream.eat(/[wxq]/)) { style = \"string\"; embed = false; }\n var delim = stream.eat(/[^\\w\\s=]/);\n if (!delim) return \"operator\";\n if (opening.propertyIsEnumerable(delim)) delim = opening[delim];\n return chain(readQuoted(delim, style, embed, true), stream, state);\n } else if (ch == \"#\") {\n stream.skipToEnd();\n return \"comment\";\n } else if (ch == \"<\" && (m = stream.match(/^<([-~])[\\`\\\"\\']?([a-zA-Z_?]\\w*)[\\`\\\"\\']?(?:;|$)/))) {\n return chain(readHereDoc(m[2], m[1]), stream, state);\n } else if (ch == \"0\") {\n if (stream.eat(\"x\")) stream.eatWhile(/[\\da-fA-F]/);\n else if (stream.eat(\"b\")) stream.eatWhile(/[01]/);\n else stream.eatWhile(/[0-7]/);\n return \"number\";\n } else if (/\\d/.test(ch)) {\n stream.match(/^[\\d_]*(?:\\.[\\d_]+)?(?:[eE][+\\-]?[\\d_]+)?/);\n return \"number\";\n } else if (ch == \"?\") {\n while (stream.match(/^\\\\[CM]-/)) {}\n if (stream.eat(\"\\\\\")) stream.eatWhile(/\\w/);\n else stream.next();\n return \"string\";\n } else if (ch == \":\") {\n if (stream.eat(\"'\")) return chain(readQuoted(\"'\", \"atom\", false), stream, state);\n if (stream.eat('\"')) return chain(readQuoted('\"', \"atom\", true), stream, state);\n\n // :> :>> :< :<< are valid symbols\n if (stream.eat(/[\\<\\>]/)) {\n stream.eat(/[\\<\\>]/);\n return \"atom\";\n }\n\n // :+ :- :/ :* :| :& :! are valid symbols\n if (stream.eat(/[\\+\\-\\*\\/\\&\\|\\:\\!]/)) {\n return \"atom\";\n }\n\n // Symbols can't start by a digit\n if (stream.eat(/[a-zA-Z$@_\\xa1-\\uffff]/)) {\n stream.eatWhile(/[\\w$\\xa1-\\uffff]/);\n // Only one ? ! = is allowed and only as the last character\n stream.eat(/[\\?\\!\\=]/);\n return \"atom\";\n }\n return \"operator\";\n } else if (ch == \"@\" && stream.match(/^@?[a-zA-Z_\\xa1-\\uffff]/)) {\n stream.eat(\"@\");\n stream.eatWhile(/[\\w\\xa1-\\uffff]/);\n return \"variable-2\";\n } else if (ch == \"$\") {\n if (stream.eat(/[a-zA-Z_]/)) {\n stream.eatWhile(/[\\w]/);\n } else if (stream.eat(/\\d/)) {\n stream.eat(/\\d/);\n } else {\n stream.next(); // Must be a special global like $: or $!\n }\n return \"variable-3\";\n } else if (/[a-zA-Z_\\xa1-\\uffff]/.test(ch)) {\n stream.eatWhile(/[\\w\\xa1-\\uffff]/);\n stream.eat(/[\\?\\!]/);\n if (stream.eat(\":\")) return \"atom\";\n return \"ident\";\n } else if (ch == \"|\" && (state.varList || state.lastTok == \"{\" || state.lastTok == \"do\")) {\n curPunc = \"|\";\n return null;\n } else if (/[\\(\\)\\[\\]{}\\\\;]/.test(ch)) {\n curPunc = ch;\n return null;\n } else if (ch == \"-\" && stream.eat(\">\")) {\n return \"arrow\";\n } else if (/[=+\\-\\/*:\\.^%<>~|]/.test(ch)) {\n var more = stream.eatWhile(/[=+\\-\\/*:\\.^%<>~|]/);\n if (ch == \".\" && !more) curPunc = \".\";\n return \"operator\";\n } else {\n return null;\n }\n }\n\n function regexpAhead(stream) {\n var start = stream.pos, depth = 0, next, found = false, escaped = false\n while ((next = stream.next()) != null) {\n if (!escaped) {\n if (\"[{(\".indexOf(next) > -1) {\n depth++\n } else if (\"]})\".indexOf(next) > -1) {\n depth--\n if (depth < 0) break\n } else if (next == \"/\" && depth == 0) {\n found = true\n break\n }\n escaped = next == \"\\\\\"\n } else {\n escaped = false\n }\n }\n stream.backUp(stream.pos - start)\n return found\n }\n\n function tokenBaseUntilBrace(depth) {\n if (!depth) depth = 1;\n return function(stream, state) {\n if (stream.peek() == \"}\") {\n if (depth == 1) {\n state.tokenize.pop();\n return state.tokenize[state.tokenize.length-1](stream, state);\n } else {\n state.tokenize[state.tokenize.length - 1] = tokenBaseUntilBrace(depth - 1);\n }\n } else if (stream.peek() == \"{\") {\n state.tokenize[state.tokenize.length - 1] = tokenBaseUntilBrace(depth + 1);\n }\n return tokenBase(stream, state);\n };\n }\n function tokenBaseOnce() {\n var alreadyCalled = false;\n return function(stream, state) {\n if (alreadyCalled) {\n state.tokenize.pop();\n return state.tokenize[state.tokenize.length-1](stream, state);\n }\n alreadyCalled = true;\n return tokenBase(stream, state);\n };\n }\n function readQuoted(quote, style, embed, unescaped) {\n return function(stream, state) {\n var escaped = false, ch;\n\n if (state.context.type === 'read-quoted-paused') {\n state.context = state.context.prev;\n stream.eat(\"}\");\n }\n\n while ((ch = stream.next()) != null) {\n if (ch == quote && (unescaped || !escaped)) {\n state.tokenize.pop();\n break;\n }\n if (embed && ch == \"#\" && !escaped) {\n if (stream.eat(\"{\")) {\n if (quote == \"}\") {\n state.context = {prev: state.context, type: 'read-quoted-paused'};\n }\n state.tokenize.push(tokenBaseUntilBrace());\n break;\n } else if (/[@\\$]/.test(stream.peek())) {\n state.tokenize.push(tokenBaseOnce());\n break;\n }\n }\n escaped = !escaped && ch == \"\\\\\";\n }\n return style;\n };\n }\n function readHereDoc(phrase, mayIndent) {\n return function(stream, state) {\n if (mayIndent) stream.eatSpace()\n if (stream.match(phrase)) state.tokenize.pop();\n else stream.skipToEnd();\n return \"string\";\n };\n }\n function readBlockComment(stream, state) {\n if (stream.sol() && stream.match(\"=end\") && stream.eol())\n state.tokenize.pop();\n stream.skipToEnd();\n return \"comment\";\n }\n\n return {\n startState: function() {\n return {tokenize: [tokenBase],\n indented: 0,\n context: {type: \"top\", indented: -config.indentUnit},\n continuedLine: false,\n lastTok: null,\n varList: false};\n },\n\n token: function(stream, state) {\n curPunc = null;\n if (stream.sol()) state.indented = stream.indentation();\n var style = state.tokenize[state.tokenize.length-1](stream, state), kwtype;\n var thisTok = curPunc;\n if (style == \"ident\") {\n var word = stream.current();\n style = state.lastTok == \".\" ? \"property\"\n : keywords.propertyIsEnumerable(stream.current()) ? \"keyword\"\n : /^[A-Z]/.test(word) ? \"tag\"\n : (state.lastTok == \"def\" || state.lastTok == \"class\" || state.varList) ? \"def\"\n : \"variable\";\n if (style == \"keyword\") {\n thisTok = word;\n if (indentWords.propertyIsEnumerable(word)) kwtype = \"indent\";\n else if (dedentWords.propertyIsEnumerable(word)) kwtype = \"dedent\";\n else if ((word == \"if\" || word == \"unless\") && stream.column() == stream.indentation())\n kwtype = \"indent\";\n else if (word == \"do\" && state.context.indented < state.indented)\n kwtype = \"indent\";\n }\n }\n if (curPunc || (style && style != \"comment\")) state.lastTok = thisTok;\n if (curPunc == \"|\") state.varList = !state.varList;\n\n if (kwtype == \"indent\" || /[\\(\\[\\{]/.test(curPunc))\n state.context = {prev: state.context, type: curPunc || style, indented: state.indented};\n else if ((kwtype == \"dedent\" || /[\\)\\]\\}]/.test(curPunc)) && state.context.prev)\n state.context = state.context.prev;\n\n if (stream.eol())\n state.continuedLine = (curPunc == \"\\\\\" || style == \"operator\");\n return style;\n },\n\n indent: function(state, textAfter) {\n if (state.tokenize[state.tokenize.length-1] != tokenBase) return CodeMirror.Pass;\n var firstChar = textAfter && textAfter.charAt(0);\n var ct = state.context;\n var closed = ct.type == closing[firstChar] ||\n ct.type == \"keyword\" && /^(?:end|until|else|elsif|when|rescue)\\b/.test(textAfter);\n return ct.indented + (closed ? 0 : config.indentUnit) +\n (state.continuedLine ? config.indentUnit : 0);\n },\n\n electricInput: /^\\s*(?:end|rescue|elsif|else|\\})$/,\n lineComment: \"#\",\n fold: \"indent\"\n };\n});\n\nCodeMirror.defineMIME(\"text/x-ruby\", \"ruby\");\n\nCodeMirror.registerHelper(\"hintWords\", \"ruby\", keywordList);\n\n});\n", "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n// CodeMirror2 mode/perl/perl.js (text/x-perl) beta 0.10 (2011-11-08)\n// This is a part of CodeMirror from https://github.com/sabaca/CodeMirror_mode_perl (mail@sabaca.com)\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"perl\",function(){\n // http://perldoc.perl.org\n var PERL={ // null - magic touch\n // 1 - keyword\n // 2 - def\n // 3 - atom\n // 4 - operator\n // 5 - variable-2 (predefined)\n // [x,y] - x=1,2,3; y=must be defined if x{...}\n // PERL operators\n '->' : 4,\n '++' : 4,\n '--' : 4,\n '**' : 4,\n // ! ~ \\ and unary + and -\n '=~' : 4,\n '!~' : 4,\n '*' : 4,\n '/' : 4,\n '%' : 4,\n 'x' : 4,\n '+' : 4,\n '-' : 4,\n '.' : 4,\n '<<' : 4,\n '>>' : 4,\n // named unary operators\n '<' : 4,\n '>' : 4,\n '<=' : 4,\n '>=' : 4,\n 'lt' : 4,\n 'gt' : 4,\n 'le' : 4,\n 'ge' : 4,\n '==' : 4,\n '!=' : 4,\n '<=>' : 4,\n 'eq' : 4,\n 'ne' : 4,\n 'cmp' : 4,\n '~~' : 4,\n '&' : 4,\n '|' : 4,\n '^' : 4,\n '&&' : 4,\n '||' : 4,\n '//' : 4,\n '..' : 4,\n '...' : 4,\n '?' : 4,\n ':' : 4,\n '=' : 4,\n '+=' : 4,\n '-=' : 4,\n '*=' : 4, // etc. ???\n ',' : 4,\n '=>' : 4,\n '::' : 4,\n // list operators (rightward)\n 'not' : 4,\n 'and' : 4,\n 'or' : 4,\n 'xor' : 4,\n // PERL predefined variables (I know, what this is a paranoid idea, but may be needed for people, who learn PERL, and for me as well, ...and may be for you?;)\n 'BEGIN' : [5,1],\n 'END' : [5,1],\n 'PRINT' : [5,1],\n 'PRINTF' : [5,1],\n 'GETC' : [5,1],\n 'READ' : [5,1],\n 'READLINE' : [5,1],\n 'DESTROY' : [5,1],\n 'TIE' : [5,1],\n 'TIEHANDLE' : [5,1],\n 'UNTIE' : [5,1],\n 'STDIN' : 5,\n 'STDIN_TOP' : 5,\n 'STDOUT' : 5,\n 'STDOUT_TOP' : 5,\n 'STDERR' : 5,\n 'STDERR_TOP' : 5,\n '$ARG' : 5,\n '$_' : 5,\n '@ARG' : 5,\n '@_' : 5,\n '$LIST_SEPARATOR' : 5,\n '$\"' : 5,\n '$PROCESS_ID' : 5,\n '$PID' : 5,\n '$$' : 5,\n '$REAL_GROUP_ID' : 5,\n '$GID' : 5,\n '$(' : 5,\n '$EFFECTIVE_GROUP_ID' : 5,\n '$EGID' : 5,\n '$)' : 5,\n '$PROGRAM_NAME' : 5,\n '$0' : 5,\n '$SUBSCRIPT_SEPARATOR' : 5,\n '$SUBSEP' : 5,\n '$;' : 5,\n '$REAL_USER_ID' : 5,\n '$UID' : 5,\n '$<' : 5,\n '$EFFECTIVE_USER_ID' : 5,\n '$EUID' : 5,\n '$>' : 5,\n '$a' : 5,\n '$b' : 5,\n '$COMPILING' : 5,\n '$^C' : 5,\n '$DEBUGGING' : 5,\n '$^D' : 5,\n '${^ENCODING}' : 5,\n '$ENV' : 5,\n '%ENV' : 5,\n '$SYSTEM_FD_MAX' : 5,\n '$^F' : 5,\n '@F' : 5,\n '${^GLOBAL_PHASE}' : 5,\n '$^H' : 5,\n '%^H' : 5,\n '@INC' : 5,\n '%INC' : 5,\n '$INPLACE_EDIT' : 5,\n '$^I' : 5,\n '$^M' : 5,\n '$OSNAME' : 5,\n '$^O' : 5,\n '${^OPEN}' : 5,\n '$PERLDB' : 5,\n '$^P' : 5,\n '$SIG' : 5,\n '%SIG' : 5,\n '$BASETIME' : 5,\n '$^T' : 5,\n '${^TAINT}' : 5,\n '${^UNICODE}' : 5,\n '${^UTF8CACHE}' : 5,\n '${^UTF8LOCALE}' : 5,\n '$PERL_VERSION' : 5,\n '$^V' : 5,\n '${^WIN32_SLOPPY_STAT}' : 5,\n '$EXECUTABLE_NAME' : 5,\n '$^X' : 5,\n '$1' : 5, // - regexp $1, $2...\n '$MATCH' : 5,\n '$&' : 5,\n '${^MATCH}' : 5,\n '$PREMATCH' : 5,\n '$`' : 5,\n '${^PREMATCH}' : 5,\n '$POSTMATCH' : 5,\n \"$'\" : 5,\n '${^POSTMATCH}' : 5,\n '$LAST_PAREN_MATCH' : 5,\n '$+' : 5,\n '$LAST_SUBMATCH_RESULT' : 5,\n '$^N' : 5,\n '@LAST_MATCH_END' : 5,\n '@+' : 5,\n '%LAST_PAREN_MATCH' : 5,\n '%+' : 5,\n '@LAST_MATCH_START' : 5,\n '@-' : 5,\n '%LAST_MATCH_START' : 5,\n '%-' : 5,\n '$LAST_REGEXP_CODE_RESULT' : 5,\n '$^R' : 5,\n '${^RE_DEBUG_FLAGS}' : 5,\n '${^RE_TRIE_MAXBUF}' : 5,\n '$ARGV' : 5,\n '@ARGV' : 5,\n 'ARGV' : 5,\n 'ARGVOUT' : 5,\n '$OUTPUT_FIELD_SEPARATOR' : 5,\n '$OFS' : 5,\n '$,' : 5,\n '$INPUT_LINE_NUMBER' : 5,\n '$NR' : 5,\n '$.' : 5,\n '$INPUT_RECORD_SEPARATOR' : 5,\n '$RS' : 5,\n '$/' : 5,\n '$OUTPUT_RECORD_SEPARATOR' : 5,\n '$ORS' : 5,\n '$\\\\' : 5,\n '$OUTPUT_AUTOFLUSH' : 5,\n '$|' : 5,\n '$ACCUMULATOR' : 5,\n '$^A' : 5,\n '$FORMAT_FORMFEED' : 5,\n '$^L' : 5,\n '$FORMAT_PAGE_NUMBER' : 5,\n '$%' : 5,\n '$FORMAT_LINES_LEFT' : 5,\n '$-' : 5,\n '$FORMAT_LINE_BREAK_CHARACTERS' : 5,\n '$:' : 5,\n '$FORMAT_LINES_PER_PAGE' : 5,\n '$=' : 5,\n '$FORMAT_TOP_NAME' : 5,\n '$^' : 5,\n '$FORMAT_NAME' : 5,\n '$~' : 5,\n '${^CHILD_ERROR_NATIVE}' : 5,\n '$EXTENDED_OS_ERROR' : 5,\n '$^E' : 5,\n '$EXCEPTIONS_BEING_CAUGHT' : 5,\n '$^S' : 5,\n '$WARNING' : 5,\n '$^W' : 5,\n '${^WARNING_BITS}' : 5,\n '$OS_ERROR' : 5,\n '$ERRNO' : 5,\n '$!' : 5,\n '%OS_ERROR' : 5,\n '%ERRNO' : 5,\n '%!' : 5,\n '$CHILD_ERROR' : 5,\n '$?' : 5,\n '$EVAL_ERROR' : 5,\n '$@' : 5,\n '$OFMT' : 5,\n '$#' : 5,\n '$*' : 5,\n '$ARRAY_BASE' : 5,\n '$[' : 5,\n '$OLD_PERL_VERSION' : 5,\n '$]' : 5,\n // PERL blocks\n 'if' :[1,1],\n elsif :[1,1],\n 'else' :[1,1],\n 'while' :[1,1],\n unless :[1,1],\n 'for' :[1,1],\n foreach :[1,1],\n // PERL functions\n 'abs' :1, // - absolute value function\n accept :1, // - accept an incoming socket connect\n alarm :1, // - schedule a SIGALRM\n 'atan2' :1, // - arctangent of Y/X in the range -PI to PI\n bind :1, // - binds an address to a socket\n binmode :1, // - prepare binary files for I/O\n bless :1, // - create an object\n bootstrap :1, //\n 'break' :1, // - break out of a \"given\" block\n caller :1, // - get context of the current subroutine call\n chdir :1, // - change your current working directory\n chmod :1, // - changes the permissions on a list of files\n chomp :1, // - remove a trailing record separator from a string\n chop :1, // - remove the last character from a string\n chown :1, // - change the ownership on a list of files\n chr :1, // - get character this number represents\n chroot :1, // - make directory new root for path lookups\n close :1, // - close file (or pipe or socket) handle\n closedir :1, // - close directory handle\n connect :1, // - connect to a remote socket\n 'continue' :[1,1], // - optional trailing block in a while or foreach\n 'cos' :1, // - cosine function\n crypt :1, // - one-way passwd-style encryption\n dbmclose :1, // - breaks binding on a tied dbm file\n dbmopen :1, // - create binding on a tied dbm file\n 'default' :1, //\n defined :1, // - test whether a value, variable, or function is defined\n 'delete' :1, // - deletes a value from a hash\n die :1, // - raise an exception or bail out\n 'do' :1, // - turn a BLOCK into a TERM\n dump :1, // - create an immediate core dump\n each :1, // - retrieve the next key/value pair from a hash\n endgrent :1, // - be done using group file\n endhostent :1, // - be done using hosts file\n endnetent :1, // - be done using networks file\n endprotoent :1, // - be done using protocols file\n endpwent :1, // - be done using passwd file\n endservent :1, // - be done using services file\n eof :1, // - test a filehandle for its end\n 'eval' :1, // - catch exceptions or compile and run code\n 'exec' :1, // - abandon this program to run another\n exists :1, // - test whether a hash key is present\n exit :1, // - terminate this program\n 'exp' :1, // - raise I to a power\n fcntl :1, // - file control system call\n fileno :1, // - return file descriptor from filehandle\n flock :1, // - lock an entire file with an advisory lock\n fork :1, // - create a new process just like this one\n format :1, // - declare a picture format with use by the write() function\n formline :1, // - internal function used for formats\n getc :1, // - get the next character from the filehandle\n getgrent :1, // - get next group record\n getgrgid :1, // - get group record given group user ID\n getgrnam :1, // - get group record given group name\n gethostbyaddr :1, // - get host record given its address\n gethostbyname :1, // - get host record given name\n gethostent :1, // - get next hosts record\n getlogin :1, // - return who logged in at this tty\n getnetbyaddr :1, // - get network record given its address\n getnetbyname :1, // - get networks record given name\n getnetent :1, // - get next networks record\n getpeername :1, // - find the other end of a socket connection\n getpgrp :1, // - get process group\n getppid :1, // - get parent process ID\n getpriority :1, // - get current nice value\n getprotobyname :1, // - get protocol record given name\n getprotobynumber :1, // - get protocol record numeric protocol\n getprotoent :1, // - get next protocols record\n getpwent :1, // - get next passwd record\n getpwnam :1, // - get passwd record given user login name\n getpwuid :1, // - get passwd record given user ID\n getservbyname :1, // - get services record given its name\n getservbyport :1, // - get services record given numeric port\n getservent :1, // - get next services record\n getsockname :1, // - retrieve the sockaddr for a given socket\n getsockopt :1, // - get socket options on a given socket\n given :1, //\n glob :1, // - expand filenames using wildcards\n gmtime :1, // - convert UNIX time into record or string using Greenwich time\n 'goto' :1, // - create spaghetti code\n grep :1, // - locate elements in a list test true against a given criterion\n hex :1, // - convert a string to a hexadecimal number\n 'import' :1, // - patch a module's namespace into your own\n index :1, // - find a substring within a string\n 'int' :1, // - get the integer portion of a number\n ioctl :1, // - system-dependent device control system call\n 'join' :1, // - join a list into a string using a separator\n keys :1, // - retrieve list of indices from a hash\n kill :1, // - send a signal to a process or process group\n last :1, // - exit a block prematurely\n lc :1, // - return lower-case version of a string\n lcfirst :1, // - return a string with just the next letter in lower case\n length :1, // - return the number of bytes in a string\n 'link' :1, // - create a hard link in the filesystem\n listen :1, // - register your socket as a server\n local : 2, // - create a temporary value for a global variable (dynamic scoping)\n localtime :1, // - convert UNIX time into record or string using local time\n lock :1, // - get a thread lock on a variable, subroutine, or method\n 'log' :1, // - retrieve the natural logarithm for a number\n lstat :1, // - stat a symbolic link\n m :null, // - match a string with a regular expression pattern\n map :1, // - apply a change to a list to get back a new list with the changes\n mkdir :1, // - create a directory\n msgctl :1, // - SysV IPC message control operations\n msgget :1, // - get SysV IPC message queue\n msgrcv :1, // - receive a SysV IPC message from a message queue\n msgsnd :1, // - send a SysV IPC message to a message queue\n my : 2, // - declare and assign a local variable (lexical scoping)\n 'new' :1, //\n next :1, // - iterate a block prematurely\n no :1, // - unimport some module symbols or semantics at compile time\n oct :1, // - convert a string to an octal number\n open :1, // - open a file, pipe, or descriptor\n opendir :1, // - open a directory\n ord :1, // - find a character's numeric representation\n our : 2, // - declare and assign a package variable (lexical scoping)\n pack :1, // - convert a list into a binary representation\n 'package' :1, // - declare a separate global namespace\n pipe :1, // - open a pair of connected filehandles\n pop :1, // - remove the last element from an array and return it\n pos :1, // - find or set the offset for the last/next m//g search\n print :1, // - output a list to a filehandle\n printf :1, // - output a formatted list to a filehandle\n prototype :1, // - get the prototype (if any) of a subroutine\n push :1, // - append one or more elements to an array\n q :null, // - singly quote a string\n qq :null, // - doubly quote a string\n qr :null, // - Compile pattern\n quotemeta :null, // - quote regular expression magic characters\n qw :null, // - quote a list of words\n qx :null, // - backquote quote a string\n rand :1, // - retrieve the next pseudorandom number\n read :1, // - fixed-length buffered input from a filehandle\n readdir :1, // - get a directory from a directory handle\n readline :1, // - fetch a record from a file\n readlink :1, // - determine where a symbolic link is pointing\n readpipe :1, // - execute a system command and collect standard output\n recv :1, // - receive a message over a Socket\n redo :1, // - start this loop iteration over again\n ref :1, // - find out the type of thing being referenced\n rename :1, // - change a filename\n require :1, // - load in external functions from a library at runtime\n reset :1, // - clear all variables of a given name\n 'return' :1, // - get out of a function early\n reverse :1, // - flip a string or a list\n rewinddir :1, // - reset directory handle\n rindex :1, // - right-to-left substring search\n rmdir :1, // - remove a directory\n s :null, // - replace a pattern with a string\n say :1, // - print with newline\n scalar :1, // - force a scalar context\n seek :1, // - reposition file pointer for random-access I/O\n seekdir :1, // - reposition directory pointer\n select :1, // - reset default output or do I/O multiplexing\n semctl :1, // - SysV semaphore control operations\n semget :1, // - get set of SysV semaphores\n semop :1, // - SysV semaphore operations\n send :1, // - send a message over a socket\n setgrent :1, // - prepare group file for use\n sethostent :1, // - prepare hosts file for use\n setnetent :1, // - prepare networks file for use\n setpgrp :1, // - set the process group of a process\n setpriority :1, // - set a process's nice value\n setprotoent :1, // - prepare protocols file for use\n setpwent :1, // - prepare passwd file for use\n setservent :1, // - prepare services file for use\n setsockopt :1, // - set some socket options\n shift :1, // - remove the first element of an array, and return it\n shmctl :1, // - SysV shared memory operations\n shmget :1, // - get SysV shared memory segment identifier\n shmread :1, // - read SysV shared memory\n shmwrite :1, // - write SysV shared memory\n shutdown :1, // - close down just half of a socket connection\n 'sin' :1, // - return the sine of a number\n sleep :1, // - block for some number of seconds\n socket :1, // - create a socket\n socketpair :1, // - create a pair of sockets\n 'sort' :1, // - sort a list of values\n splice :1, // - add or remove elements anywhere in an array\n 'split' :1, // - split up a string using a regexp delimiter\n sprintf :1, // - formatted print into a string\n 'sqrt' :1, // - square root function\n srand :1, // - seed the random number generator\n stat :1, // - get a file's status information\n state :1, // - declare and assign a state variable (persistent lexical scoping)\n study :1, // - optimize input data for repeated searches\n 'sub' :1, // - declare a subroutine, possibly anonymously\n 'substr' :1, // - get or alter a portion of a string\n symlink :1, // - create a symbolic link to a file\n syscall :1, // - execute an arbitrary system call\n sysopen :1, // - open a file, pipe, or descriptor\n sysread :1, // - fixed-length unbuffered input from a filehandle\n sysseek :1, // - position I/O pointer on handle used with sysread and syswrite\n system :1, // - run a separate program\n syswrite :1, // - fixed-length unbuffered output to a filehandle\n tell :1, // - get current seekpointer on a filehandle\n telldir :1, // - get current seekpointer on a directory handle\n tie :1, // - bind a variable to an object class\n tied :1, // - get a reference to the object underlying a tied variable\n time :1, // - return number of seconds since 1970\n times :1, // - return elapsed time for self and child processes\n tr :null, // - transliterate a string\n truncate :1, // - shorten a file\n uc :1, // - return upper-case version of a string\n ucfirst :1, // - return a string with just the next letter in upper case\n umask :1, // - set file creation mode mask\n undef :1, // - remove a variable or function definition\n unlink :1, // - remove one link to a file\n unpack :1, // - convert binary structure into normal perl variables\n unshift :1, // - prepend more elements to the beginning of a list\n untie :1, // - break a tie binding to a variable\n use :1, // - load in a module at compile time\n utime :1, // - set a file's last access and modify times\n values :1, // - return a list of the values in a hash\n vec :1, // - test or set particular bits in a string\n wait :1, // - wait for any child process to die\n waitpid :1, // - wait for a particular child process to die\n wantarray :1, // - get void vs scalar vs list context of current subroutine call\n warn :1, // - print debugging info\n when :1, //\n write :1, // - print a picture record\n y :null}; // - transliterate a string\n\n var RXstyle=\"string-2\";\n var RXmodifiers=/[goseximacplud]/; // NOTE: \"m\", \"s\", \"y\" and \"tr\" need to correct real modifiers for each regexp type\n\n function tokenChain(stream,state,chain,style,tail){ // NOTE: chain.length > 2 is not working now (it's for s[...][...]geos;)\n state.chain=null; // 12 3tail\n state.style=null;\n state.tail=null;\n state.tokenize=function(stream,state){\n var e=false,c,i=0;\n while(c=stream.next()){\n if(c===chain[i]&&!e){\n if(chain[++i]!==undefined){\n state.chain=chain[i];\n state.style=style;\n state.tail=tail;}\n else if(tail)\n stream.eatWhile(tail);\n state.tokenize=tokenPerl;\n return style;}\n e=!e&&c==\"\\\\\";}\n return style;};\n return state.tokenize(stream,state);}\n\n function tokenSOMETHING(stream,state,string){\n state.tokenize=function(stream,state){\n if(stream.string==string)\n state.tokenize=tokenPerl;\n stream.skipToEnd();\n return \"string\";};\n return state.tokenize(stream,state);}\n\n function tokenPerl(stream,state){\n if(stream.eatSpace())\n return null;\n if(state.chain)\n return tokenChain(stream,state,state.chain,state.style,state.tail);\n if(stream.match(/^(\\-?((\\d[\\d_]*)?\\.\\d+(e[+-]?\\d+)?|\\d+\\.\\d*)|0x[\\da-fA-F_]+|0b[01_]+|\\d[\\d_]*(e[+-]?\\d+)?)/))\n return 'number';\n if(stream.match(/^<<(?=[_a-zA-Z])/)){ // NOTE: <\"],RXstyle,RXmodifiers);}\n if(/[\\^'\"!~\\/]/.test(c)){\n eatSuffix(stream, 1);\n return tokenChain(stream,state,[stream.eat(c)],RXstyle,RXmodifiers);}}\n else if(c==\"q\"){\n c=look(stream, 1);\n if(c==\"(\"){\n eatSuffix(stream, 2);\n return tokenChain(stream,state,[\")\"],\"string\");}\n if(c==\"[\"){\n eatSuffix(stream, 2);\n return tokenChain(stream,state,[\"]\"],\"string\");}\n if(c==\"{\"){\n eatSuffix(stream, 2);\n return tokenChain(stream,state,[\"}\"],\"string\");}\n if(c==\"<\"){\n eatSuffix(stream, 2);\n return tokenChain(stream,state,[\">\"],\"string\");}\n if(/[\\^'\"!~\\/]/.test(c)){\n eatSuffix(stream, 1);\n return tokenChain(stream,state,[stream.eat(c)],\"string\");}}\n else if(c==\"w\"){\n c=look(stream, 1);\n if(c==\"(\"){\n eatSuffix(stream, 2);\n return tokenChain(stream,state,[\")\"],\"bracket\");}\n if(c==\"[\"){\n eatSuffix(stream, 2);\n return tokenChain(stream,state,[\"]\"],\"bracket\");}\n if(c==\"{\"){\n eatSuffix(stream, 2);\n return tokenChain(stream,state,[\"}\"],\"bracket\");}\n if(c==\"<\"){\n eatSuffix(stream, 2);\n return tokenChain(stream,state,[\">\"],\"bracket\");}\n if(/[\\^'\"!~\\/]/.test(c)){\n eatSuffix(stream, 1);\n return tokenChain(stream,state,[stream.eat(c)],\"bracket\");}}\n else if(c==\"r\"){\n c=look(stream, 1);\n if(c==\"(\"){\n eatSuffix(stream, 2);\n return tokenChain(stream,state,[\")\"],RXstyle,RXmodifiers);}\n if(c==\"[\"){\n eatSuffix(stream, 2);\n return tokenChain(stream,state,[\"]\"],RXstyle,RXmodifiers);}\n if(c==\"{\"){\n eatSuffix(stream, 2);\n return tokenChain(stream,state,[\"}\"],RXstyle,RXmodifiers);}\n if(c==\"<\"){\n eatSuffix(stream, 2);\n return tokenChain(stream,state,[\">\"],RXstyle,RXmodifiers);}\n if(/[\\^'\"!~\\/]/.test(c)){\n eatSuffix(stream, 1);\n return tokenChain(stream,state,[stream.eat(c)],RXstyle,RXmodifiers);}}\n else if(/[\\^'\"!~\\/(\\[{<]/.test(c)){\n if(c==\"(\"){\n eatSuffix(stream, 1);\n return tokenChain(stream,state,[\")\"],\"string\");}\n if(c==\"[\"){\n eatSuffix(stream, 1);\n return tokenChain(stream,state,[\"]\"],\"string\");}\n if(c==\"{\"){\n eatSuffix(stream, 1);\n return tokenChain(stream,state,[\"}\"],\"string\");}\n if(c==\"<\"){\n eatSuffix(stream, 1);\n return tokenChain(stream,state,[\">\"],\"string\");}\n if(/[\\^'\"!~\\/]/.test(c)){\n return tokenChain(stream,state,[stream.eat(c)],\"string\");}}}}\n if(ch==\"m\"){\n var c=look(stream, -2);\n if(!(c&&/\\w/.test(c))){\n c=stream.eat(/[(\\[{<\\^'\"!~\\/]/);\n if(c){\n if(/[\\^'\"!~\\/]/.test(c)){\n return tokenChain(stream,state,[c],RXstyle,RXmodifiers);}\n if(c==\"(\"){\n return tokenChain(stream,state,[\")\"],RXstyle,RXmodifiers);}\n if(c==\"[\"){\n return tokenChain(stream,state,[\"]\"],RXstyle,RXmodifiers);}\n if(c==\"{\"){\n return tokenChain(stream,state,[\"}\"],RXstyle,RXmodifiers);}\n if(c==\"<\"){\n return tokenChain(stream,state,[\">\"],RXstyle,RXmodifiers);}}}}\n if(ch==\"s\"){\n var c=/[\\/>\\]})\\w]/.test(look(stream, -2));\n if(!c){\n c=stream.eat(/[(\\[{<\\^'\"!~\\/]/);\n if(c){\n if(c==\"[\")\n return tokenChain(stream,state,[\"]\",\"]\"],RXstyle,RXmodifiers);\n if(c==\"{\")\n return tokenChain(stream,state,[\"}\",\"}\"],RXstyle,RXmodifiers);\n if(c==\"<\")\n return tokenChain(stream,state,[\">\",\">\"],RXstyle,RXmodifiers);\n if(c==\"(\")\n return tokenChain(stream,state,[\")\",\")\"],RXstyle,RXmodifiers);\n return tokenChain(stream,state,[c,c],RXstyle,RXmodifiers);}}}\n if(ch==\"y\"){\n var c=/[\\/>\\]})\\w]/.test(look(stream, -2));\n if(!c){\n c=stream.eat(/[(\\[{<\\^'\"!~\\/]/);\n if(c){\n if(c==\"[\")\n return tokenChain(stream,state,[\"]\",\"]\"],RXstyle,RXmodifiers);\n if(c==\"{\")\n return tokenChain(stream,state,[\"}\",\"}\"],RXstyle,RXmodifiers);\n if(c==\"<\")\n return tokenChain(stream,state,[\">\",\">\"],RXstyle,RXmodifiers);\n if(c==\"(\")\n return tokenChain(stream,state,[\")\",\")\"],RXstyle,RXmodifiers);\n return tokenChain(stream,state,[c,c],RXstyle,RXmodifiers);}}}\n if(ch==\"t\"){\n var c=/[\\/>\\]})\\w]/.test(look(stream, -2));\n if(!c){\n c=stream.eat(\"r\");if(c){\n c=stream.eat(/[(\\[{<\\^'\"!~\\/]/);\n if(c){\n if(c==\"[\")\n return tokenChain(stream,state,[\"]\",\"]\"],RXstyle,RXmodifiers);\n if(c==\"{\")\n return tokenChain(stream,state,[\"}\",\"}\"],RXstyle,RXmodifiers);\n if(c==\"<\")\n return tokenChain(stream,state,[\">\",\">\"],RXstyle,RXmodifiers);\n if(c==\"(\")\n return tokenChain(stream,state,[\")\",\")\"],RXstyle,RXmodifiers);\n return tokenChain(stream,state,[c,c],RXstyle,RXmodifiers);}}}}\n if(ch==\"`\"){\n return tokenChain(stream,state,[ch],\"variable-2\");}\n if(ch==\"/\"){\n if(!/~\\s*$/.test(prefix(stream)))\n return \"operator\";\n else\n return tokenChain(stream,state,[ch],RXstyle,RXmodifiers);}\n if(ch==\"$\"){\n var p=stream.pos;\n if(stream.eatWhile(/\\d/)||stream.eat(\"{\")&&stream.eatWhile(/\\d/)&&stream.eat(\"}\"))\n return \"variable-2\";\n else\n stream.pos=p;}\n if(/[$@%]/.test(ch)){\n var p=stream.pos;\n if(stream.eat(\"^\")&&stream.eat(/[A-Z]/)||!/[@$%&]/.test(look(stream, -2))&&stream.eat(/[=|\\\\\\-#?@;:&`~\\^!\\[\\]*'\"$+.,\\/<>()]/)){\n var c=stream.current();\n if(PERL[c])\n return \"variable-2\";}\n stream.pos=p;}\n if(/[$@%&]/.test(ch)){\n if(stream.eatWhile(/[\\w$]/)||stream.eat(\"{\")&&stream.eatWhile(/[\\w$]/)&&stream.eat(\"}\")){\n var c=stream.current();\n if(PERL[c])\n return \"variable-2\";\n else\n return \"variable\";}}\n if(ch==\"#\"){\n if(look(stream, -2)!=\"$\"){\n stream.skipToEnd();\n return \"comment\";}}\n if(/[:+\\-\\^*$&%@=<>!?|\\/~\\.]/.test(ch)){\n var p=stream.pos;\n stream.eatWhile(/[:+\\-\\^*$&%@=<>!?|\\/~\\.]/);\n if(PERL[stream.current()])\n return \"operator\";\n else\n stream.pos=p;}\n if(ch==\"_\"){\n if(stream.pos==1){\n if(suffix(stream, 6)==\"_END__\"){\n return tokenChain(stream,state,['\\0'],\"comment\");}\n else if(suffix(stream, 7)==\"_DATA__\"){\n return tokenChain(stream,state,['\\0'],\"variable-2\");}\n else if(suffix(stream, 7)==\"_C__\"){\n return tokenChain(stream,state,['\\0'],\"string\");}}}\n if(/\\w/.test(ch)){\n var p=stream.pos;\n if(look(stream, -2)==\"{\"&&(look(stream, 0)==\"}\"||stream.eatWhile(/\\w/)&&look(stream, 0)==\"}\"))\n return \"string\";\n else\n stream.pos=p;}\n if(/[A-Z]/.test(ch)){\n var l=look(stream, -2);\n var p=stream.pos;\n stream.eatWhile(/[A-Z_]/);\n if(/[\\da-z]/.test(look(stream, 0))){\n stream.pos=p;}\n else{\n var c=PERL[stream.current()];\n if(!c)\n return \"meta\";\n if(c[1])\n c=c[0];\n if(l!=\":\"){\n if(c==1)\n return \"keyword\";\n else if(c==2)\n return \"def\";\n else if(c==3)\n return \"atom\";\n else if(c==4)\n return \"operator\";\n else if(c==5)\n return \"variable-2\";\n else\n return \"meta\";}\n else\n return \"meta\";}}\n if(/[a-zA-Z_]/.test(ch)){\n var l=look(stream, -2);\n stream.eatWhile(/\\w/);\n var c=PERL[stream.current()];\n if(!c)\n return \"meta\";\n if(c[1])\n c=c[0];\n if(l!=\":\"){\n if(c==1)\n return \"keyword\";\n else if(c==2)\n return \"def\";\n else if(c==3)\n return \"atom\";\n else if(c==4)\n return \"operator\";\n else if(c==5)\n return \"variable-2\";\n else\n return \"meta\";}\n else\n return \"meta\";}\n return null;}\n\n return {\n startState: function() {\n return {\n tokenize: tokenPerl,\n chain: null,\n style: null,\n tail: null\n };\n },\n token: function(stream, state) {\n return (state.tokenize || tokenPerl)(stream, state);\n },\n lineComment: '#'\n };\n});\n\nCodeMirror.registerHelper(\"wordChars\", \"perl\", /[\\w$]/);\n\nCodeMirror.defineMIME(\"text/x-perl\", \"perl\");\n\n// it's like \"peek\", but need for look-ahead or look-behind if index < 0\nfunction look(stream, c){\n return stream.string.charAt(stream.pos+(c||0));\n}\n\n// return a part of prefix of current stream from current position\nfunction prefix(stream, c){\n if(c){\n var x=stream.pos-c;\n return stream.string.substr((x>=0?x:0),c);}\n else{\n return stream.string.substr(0,stream.pos-1);\n }\n}\n\n// return a part of suffix of current stream from current position\nfunction suffix(stream, c){\n var y=stream.string.length;\n var x=y-stream.pos+1;\n return stream.string.substr(stream.pos,(c&&c=(y=stream.string.length-1))\n stream.pos=y;\n else\n stream.pos=x;\n}\n\n});\n", "\"use strict\";var __assign=this&&this.__assign||function(){__assign=Object.assign||function(t){for(var s,i=1,n=arguments.length;i0){_this.hide()}}))}this.element.classList.remove(this.toastShowClass);this.element.classList.add(this.toastHideClass);this.trigger(\"hide\");if(this.animation){var transitionEndHandler_1=function(){return _this.remove()},transitionStartHandler_1=function(){if(bound_1){return}_this.element.addEventListener(\"transitionend\",(function(){return transitionEndHandler_1()}));bound_1=true},mouseOverHandler_1=function(){_this.show();_this.element.removeEventListener(\"transitionstart\",(function(){return transitionStartHandler_1()}));_this.element.removeEventListener(\"transitionend\",(function(){return transitionEndHandler_1()}));_this.element.removeEventListener(\"mouseover\",(function(){return mouseOverHandler_1()}));_this.element.addEventListener(\"mouseout\",(function(){return _this.hide()}))};var bound_1=false;this.element.addEventListener(\"mouseover\",(function(){return mouseOverHandler_1()}));this.element.addEventListener(\"transitionstart\",(function(){return transitionStartHandler_1()}));return}this.remove()};Melba.prototype.remove=function(){if(this.element.parentNode===this.container){this.container.removeChild(this.element);this.trigger(\"remove\")}};Melba.prototype.buildClose=function(closeLabel){var _this=this;var closeButton=document.createElement(\"button\");closeButton.setAttribute(\"title\",closeLabel);closeButton.appendChild(document.createTextNode(closeLabel));closeButton.addEventListener(\"click\",(function(){return _this.hide()}));return closeButton};Melba.prototype.getContainer=function(_a){var containerClass=_a.containerClass,containerElement=_a.containerElement,root=_a.root;var existingContainer=root.querySelector(\"\".concat(containerElement,\".\").concat(containerClass));if(existingContainer){return existingContainer}var container=document.createElement(containerElement);container.classList.add(containerClass);root.appendChild(container);return container};Melba.prototype.on=function(event,callable){if(!this.events[event]){this.events[event]=[]}this.events[event].push(callable)};Melba.prototype.off=function(event,callable){if(callable===void 0){callable=null}if(!callable){this.events[event]=[];return}var hasEvent=this.events[event].indexOf(callable);if(hasEvent===-1){this.events[event].splice(hasEvent,1)}};Melba.prototype.trigger=function(event){var _this=this;var args=[];for(var _i=1;_i void;\n private _bottomBoundaryFocusListener: (e: FocusEvent) => void;\n\n /**\n * This queue has a character pushed to it for keys that are pressed, if the\n * next character added to the terminal is equal to the key char then it is\n * not announced (added to live region) because it has already been announced\n * by the textarea event (which cannot be canceled). There are some race\n * condition cases if there is typing while data is streaming, but this covers\n * the main case of typing into the prompt and inputting the answer to a\n * question (Y/N, etc.).\n */\n private _charsToConsume: string[] = [];\n\n private _charsToAnnounce: string = '';\n\n constructor(\n private readonly _terminal: ITerminal,\n private readonly _renderService: IRenderService\n ) {\n super();\n this._accessibilityTreeRoot = document.createElement('div');\n this._accessibilityTreeRoot.classList.add('xterm-accessibility');\n this._accessibilityTreeRoot.tabIndex = 0;\n\n this._rowContainer = document.createElement('div');\n this._rowContainer.setAttribute('role', 'list');\n this._rowContainer.classList.add('xterm-accessibility-tree');\n this._rowElements = [];\n for (let i = 0; i < this._terminal.rows; i++) {\n this._rowElements[i] = this._createAccessibilityTreeNode();\n this._rowContainer.appendChild(this._rowElements[i]);\n }\n\n this._topBoundaryFocusListener = e => this._onBoundaryFocus(e, BoundaryPosition.TOP);\n this._bottomBoundaryFocusListener = e => this._onBoundaryFocus(e, BoundaryPosition.BOTTOM);\n this._rowElements[0].addEventListener('focus', this._topBoundaryFocusListener);\n this._rowElements[this._rowElements.length - 1].addEventListener('focus', this._bottomBoundaryFocusListener);\n\n this._refreshRowsDimensions();\n this._accessibilityTreeRoot.appendChild(this._rowContainer);\n\n this._renderRowsDebouncer = new TimeBasedDebouncer(this._renderRows.bind(this));\n this._refreshRows();\n\n this._liveRegion = document.createElement('div');\n this._liveRegion.classList.add('live-region');\n this._liveRegion.setAttribute('aria-live', 'assertive');\n this._accessibilityTreeRoot.appendChild(this._liveRegion);\n\n if (!this._terminal.element) {\n throw new Error('Cannot enable accessibility before Terminal.open');\n }\n this._terminal.element.insertAdjacentElement('afterbegin', this._accessibilityTreeRoot);\n\n this.register(this._renderRowsDebouncer);\n this.register(this._terminal.onResize(e => this._onResize(e.rows)));\n this.register(this._terminal.onRender(e => this._refreshRows(e.start, e.end)));\n this.register(this._terminal.onScroll(() => this._refreshRows()));\n // Line feed is an issue as the prompt won't be read out after a command is run\n this.register(this._terminal.onA11yChar(char => this._onChar(char)));\n this.register(this._terminal.onLineFeed(() => this._onChar('\\n')));\n this.register(this._terminal.onA11yTab(spaceCount => this._onTab(spaceCount)));\n this.register(this._terminal.onKey(e => this._onKey(e.key)));\n this.register(this._terminal.onBlur(() => this._clearLiveRegion()));\n this.register(this._renderService.onDimensionsChange(() => this._refreshRowsDimensions()));\n\n this._screenDprMonitor = new ScreenDprMonitor();\n this.register(this._screenDprMonitor);\n this._screenDprMonitor.setListener(() => this._refreshRowsDimensions());\n // This shouldn't be needed on modern browsers but is present in case the\n // media query that drives the ScreenDprMonitor isn't supported\n this.register(addDisposableDomListener(window, 'resize', () => this._refreshRowsDimensions()));\n }\n\n public dispose(): void {\n super.dispose();\n removeElementFromParent(this._accessibilityTreeRoot);\n this._rowElements.length = 0;\n }\n\n private _onBoundaryFocus(e: FocusEvent, position: BoundaryPosition): void {\n const boundaryElement = e.target as HTMLElement;\n const beforeBoundaryElement = this._rowElements[position === BoundaryPosition.TOP ? 1 : this._rowElements.length - 2];\n\n // Don't scroll if the buffer top has reached the end in that direction\n const posInSet = boundaryElement.getAttribute('aria-posinset');\n const lastRowPos = position === BoundaryPosition.TOP ? '1' : `${this._terminal.buffer.lines.length}`;\n if (posInSet === lastRowPos) {\n return;\n }\n\n // Don't scroll when the last focused item was not the second row (focus is going the other\n // direction)\n if (e.relatedTarget !== beforeBoundaryElement) {\n return;\n }\n\n // Remove old boundary element from array\n let topBoundaryElement: HTMLElement;\n let bottomBoundaryElement: HTMLElement;\n if (position === BoundaryPosition.TOP) {\n topBoundaryElement = boundaryElement;\n bottomBoundaryElement = this._rowElements.pop()!;\n this._rowContainer.removeChild(bottomBoundaryElement);\n } else {\n topBoundaryElement = this._rowElements.shift()!;\n bottomBoundaryElement = boundaryElement;\n this._rowContainer.removeChild(topBoundaryElement);\n }\n\n // Remove listeners from old boundary elements\n topBoundaryElement.removeEventListener('focus', this._topBoundaryFocusListener);\n bottomBoundaryElement.removeEventListener('focus', this._bottomBoundaryFocusListener);\n\n // Add new element to array/DOM\n if (position === BoundaryPosition.TOP) {\n const newElement = this._createAccessibilityTreeNode();\n this._rowElements.unshift(newElement);\n this._rowContainer.insertAdjacentElement('afterbegin', newElement);\n } else {\n const newElement = this._createAccessibilityTreeNode();\n this._rowElements.push(newElement);\n this._rowContainer.appendChild(newElement);\n }\n\n // Add listeners to new boundary elements\n this._rowElements[0].addEventListener('focus', this._topBoundaryFocusListener);\n this._rowElements[this._rowElements.length - 1].addEventListener('focus', this._bottomBoundaryFocusListener);\n\n // Scroll up\n this._terminal.scrollLines(position === BoundaryPosition.TOP ? -1 : 1);\n\n // Focus new boundary before element\n this._rowElements[position === BoundaryPosition.TOP ? 1 : this._rowElements.length - 2].focus();\n\n // Prevent the standard behavior\n e.preventDefault();\n e.stopImmediatePropagation();\n }\n\n private _onResize(rows: number): void {\n // Remove bottom boundary listener\n this._rowElements[this._rowElements.length - 1].removeEventListener('focus', this._bottomBoundaryFocusListener);\n\n // Grow rows as required\n for (let i = this._rowContainer.children.length; i < this._terminal.rows; i++) {\n this._rowElements[i] = this._createAccessibilityTreeNode();\n this._rowContainer.appendChild(this._rowElements[i]);\n }\n // Shrink rows as required\n while (this._rowElements.length > rows) {\n this._rowContainer.removeChild(this._rowElements.pop()!);\n }\n\n // Add bottom boundary listener\n this._rowElements[this._rowElements.length - 1].addEventListener('focus', this._bottomBoundaryFocusListener);\n\n this._refreshRowsDimensions();\n }\n\n private _createAccessibilityTreeNode(): HTMLElement {\n const element = document.createElement('div');\n element.setAttribute('role', 'listitem');\n element.tabIndex = -1;\n this._refreshRowDimensions(element);\n return element;\n }\n\n private _onTab(spaceCount: number): void {\n for (let i = 0; i < spaceCount; i++) {\n this._onChar(' ');\n }\n }\n\n private _onChar(char: string): void {\n if (this._liveRegionLineCount < MAX_ROWS_TO_READ + 1) {\n if (this._charsToConsume.length > 0) {\n // Have the screen reader ignore the char if it was just input\n const shiftedChar = this._charsToConsume.shift();\n if (shiftedChar !== char) {\n this._charsToAnnounce += char;\n }\n } else {\n this._charsToAnnounce += char;\n }\n\n if (char === '\\n') {\n this._liveRegionLineCount++;\n if (this._liveRegionLineCount === MAX_ROWS_TO_READ + 1) {\n this._liveRegion.textContent += Strings.tooMuchOutput;\n }\n }\n\n // Only detach/attach on mac as otherwise messages can go unaccounced\n if (isMac) {\n if (this._liveRegion.textContent && this._liveRegion.textContent.length > 0 && !this._liveRegion.parentNode) {\n setTimeout(() => {\n this._accessibilityTreeRoot.appendChild(this._liveRegion);\n }, 0);\n }\n }\n }\n }\n\n private _clearLiveRegion(): void {\n this._liveRegion.textContent = '';\n this._liveRegionLineCount = 0;\n\n // Only detach/attach on mac as otherwise messages can go unaccounced\n if (isMac) {\n removeElementFromParent(this._liveRegion);\n }\n }\n\n private _onKey(keyChar: string): void {\n this._clearLiveRegion();\n this._charsToConsume.push(keyChar);\n }\n\n private _refreshRows(start?: number, end?: number): void {\n this._renderRowsDebouncer.refresh(start, end, this._terminal.rows);\n }\n\n private _renderRows(start: number, end: number): void {\n const buffer: IBuffer = this._terminal.buffer;\n const setSize = buffer.lines.length.toString();\n for (let i = start; i <= end; i++) {\n const lineData = buffer.translateBufferLineToString(buffer.ydisp + i, true);\n const posInSet = (buffer.ydisp + i + 1).toString();\n const element = this._rowElements[i];\n if (element) {\n if (lineData.length === 0) {\n element.innerText = '\\u00a0';\n } else {\n element.textContent = lineData;\n }\n element.setAttribute('aria-posinset', posInSet);\n element.setAttribute('aria-setsize', setSize);\n }\n }\n this._announceCharacters();\n }\n\n private _refreshRowsDimensions(): void {\n if (!this._renderService.dimensions.actualCellHeight) {\n return;\n }\n if (this._rowElements.length !== this._terminal.rows) {\n this._onResize(this._terminal.rows);\n }\n for (let i = 0; i < this._terminal.rows; i++) {\n this._refreshRowDimensions(this._rowElements[i]);\n }\n }\n\n private _refreshRowDimensions(element: HTMLElement): void {\n element.style.height = `${this._renderService.dimensions.actualCellHeight}px`;\n }\n\n private _announceCharacters(): void {\n if (this._charsToAnnounce.length === 0) {\n return;\n }\n this._liveRegion.textContent += this._charsToAnnounce;\n this._charsToAnnounce = '';\n }\n}\n", "/**\n * Copyright (c) 2016 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { ISelectionService } from 'browser/services/Services';\nimport { ICoreService } from 'common/services/Services';\n\n/**\n * Prepares text to be pasted into the terminal by normalizing the line endings\n * @param text The pasted text that needs processing before inserting into the terminal\n */\nexport function prepareTextForTerminal(text: string): string {\n return text.replace(/\\r?\\n/g, '\\r');\n}\n\n/**\n * Bracket text for paste, if necessary, as per https://cirw.in/blog/bracketed-paste\n * @param text The pasted text to bracket\n */\nexport function bracketTextForPaste(text: string, bracketedPasteMode: boolean): string {\n if (bracketedPasteMode) {\n return '\\x1b[200~' + text + '\\x1b[201~';\n }\n return text;\n}\n\n/**\n * Binds copy functionality to the given terminal.\n * @param ev The original copy event to be handled\n */\nexport function copyHandler(ev: ClipboardEvent, selectionService: ISelectionService): void {\n if (ev.clipboardData) {\n ev.clipboardData.setData('text/plain', selectionService.selectionText);\n }\n // Prevent or the original text will be copied.\n ev.preventDefault();\n}\n\n/**\n * Redirect the clipboard's data to the terminal's input handler.\n * @param ev The original paste event to be handled\n * @param term The terminal on which to apply the handled paste event\n */\nexport function handlePasteEvent(ev: ClipboardEvent, textarea: HTMLTextAreaElement, coreService: ICoreService): void {\n ev.stopPropagation();\n if (ev.clipboardData) {\n const text = ev.clipboardData.getData('text/plain');\n paste(text, textarea, coreService);\n }\n}\n\nexport function paste(text: string, textarea: HTMLTextAreaElement, coreService: ICoreService): void {\n text = prepareTextForTerminal(text);\n text = bracketTextForPaste(text, coreService.decPrivateModes.bracketedPasteMode);\n coreService.triggerDataEvent(text, true);\n textarea.value = '';\n}\n\n/**\n * Moves the textarea under the mouse cursor and focuses it.\n * @param ev The original right click event to be handled.\n * @param textarea The terminal's textarea.\n */\nexport function moveTextAreaUnderMouseCursor(ev: MouseEvent, textarea: HTMLTextAreaElement, screenElement: HTMLElement): void {\n\n // Calculate textarea position relative to the screen element\n const pos = screenElement.getBoundingClientRect();\n const left = ev.clientX - pos.left - 10;\n const top = ev.clientY - pos.top - 10;\n\n // Bring textarea at the cursor position\n textarea.style.width = '20px';\n textarea.style.height = '20px';\n textarea.style.left = `${left}px`;\n textarea.style.top = `${top}px`;\n textarea.style.zIndex = '1000';\n\n textarea.focus();\n}\n\n/**\n * Bind to right-click event and allow right-click copy and paste.\n * @param ev The original right click event to be handled.\n * @param textarea The terminal's textarea.\n * @param selectionService The terminal's selection manager.\n * @param shouldSelectWord If true and there is no selection the current word will be selected\n */\nexport function rightClickHandler(ev: MouseEvent, textarea: HTMLTextAreaElement, screenElement: HTMLElement, selectionService: ISelectionService, shouldSelectWord: boolean): void {\n moveTextAreaUnderMouseCursor(ev, textarea, screenElement);\n\n if (shouldSelectWord) {\n selectionService.rightClickSelect(ev);\n }\n\n // Get textarea ready to copy from the context menu\n textarea.value = selectionService.selectionText;\n textarea.select();\n}\n", "/**\n * Copyright (c) 2017 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IColorContrastCache } from 'browser/Types';\nimport { IColor } from 'common/Types';\n\nexport class ColorContrastCache implements IColorContrastCache {\n private _color: { [bg: number]: { [fg: number]: IColor | null | undefined } | undefined } = {};\n private _rgba: { [bg: number]: { [fg: number]: string | null | undefined } | undefined } = {};\n\n public clear(): void {\n this._color = {};\n this._rgba = {};\n }\n\n public setCss(bg: number, fg: number, value: string | null): void {\n if (!this._rgba[bg]) {\n this._rgba[bg] = {};\n }\n this._rgba[bg]![fg] = value;\n }\n\n public getCss(bg: number, fg: number): string | null | undefined {\n return this._rgba[bg] ? this._rgba[bg]![fg] : undefined;\n }\n\n public setColor(bg: number, fg: number, value: IColor | null): void {\n if (!this._color[bg]) {\n this._color[bg] = {};\n }\n this._color[bg]![fg] = value;\n }\n\n public getColor(bg: number, fg: number): IColor | null | undefined {\n return this._color[bg] ? this._color[bg]![fg] : undefined;\n }\n}\n", "/**\n * Copyright (c) 2017 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IColorManager, IColorSet, IColorContrastCache } from 'browser/Types';\nimport { ITheme } from 'common/services/Services';\nimport { channels, color, css } from 'common/Color';\nimport { ColorContrastCache } from 'browser/ColorContrastCache';\nimport { ColorIndex, IColor } from 'common/Types';\n\n\ninterface IRestoreColorSet {\n foreground: IColor;\n background: IColor;\n cursor: IColor;\n ansi: IColor[];\n}\n\n\nconst DEFAULT_FOREGROUND = css.toColor('#ffffff');\nconst DEFAULT_BACKGROUND = css.toColor('#000000');\nconst DEFAULT_CURSOR = css.toColor('#ffffff');\nconst DEFAULT_CURSOR_ACCENT = css.toColor('#000000');\nconst DEFAULT_SELECTION = {\n css: 'rgba(255, 255, 255, 0.3)',\n rgba: 0xFFFFFF4D\n};\n\n// An IIFE to generate DEFAULT_ANSI_COLORS.\nexport const DEFAULT_ANSI_COLORS = Object.freeze((() => {\n const colors = [\n // dark:\n css.toColor('#2e3436'),\n css.toColor('#cc0000'),\n css.toColor('#4e9a06'),\n css.toColor('#c4a000'),\n css.toColor('#3465a4'),\n css.toColor('#75507b'),\n css.toColor('#06989a'),\n css.toColor('#d3d7cf'),\n // bright:\n css.toColor('#555753'),\n css.toColor('#ef2929'),\n css.toColor('#8ae234'),\n css.toColor('#fce94f'),\n css.toColor('#729fcf'),\n css.toColor('#ad7fa8'),\n css.toColor('#34e2e2'),\n css.toColor('#eeeeec')\n ];\n\n // Fill in the remaining 240 ANSI colors.\n // Generate colors (16-231)\n const v = [0x00, 0x5f, 0x87, 0xaf, 0xd7, 0xff];\n for (let i = 0; i < 216; i++) {\n const r = v[(i / 36) % 6 | 0];\n const g = v[(i / 6) % 6 | 0];\n const b = v[i % 6];\n colors.push({\n css: channels.toCss(r, g, b),\n rgba: channels.toRgba(r, g, b)\n });\n }\n\n // Generate greys (232-255)\n for (let i = 0; i < 24; i++) {\n const c = 8 + i * 10;\n colors.push({\n css: channels.toCss(c, c, c),\n rgba: channels.toRgba(c, c, c)\n });\n }\n\n return colors;\n})());\n\n/**\n * Manages the source of truth for a terminal's colors.\n */\nexport class ColorManager implements IColorManager {\n public colors: IColorSet;\n private _ctx: CanvasRenderingContext2D;\n private _litmusColor: CanvasGradient;\n private _contrastCache: IColorContrastCache;\n private _restoreColors!: IRestoreColorSet;\n\n constructor(document: Document, public allowTransparency: boolean) {\n const canvas = document.createElement('canvas');\n canvas.width = 1;\n canvas.height = 1;\n const ctx = canvas.getContext('2d');\n if (!ctx) {\n throw new Error('Could not get rendering context');\n }\n this._ctx = ctx;\n this._ctx.globalCompositeOperation = 'copy';\n this._litmusColor = this._ctx.createLinearGradient(0, 0, 1, 1);\n this._contrastCache = new ColorContrastCache();\n this.colors = {\n foreground: DEFAULT_FOREGROUND,\n background: DEFAULT_BACKGROUND,\n cursor: DEFAULT_CURSOR,\n cursorAccent: DEFAULT_CURSOR_ACCENT,\n selectionTransparent: DEFAULT_SELECTION,\n selectionOpaque: color.blend(DEFAULT_BACKGROUND, DEFAULT_SELECTION),\n selectionForeground: undefined,\n ansi: DEFAULT_ANSI_COLORS.slice(),\n contrastCache: this._contrastCache\n };\n this._updateRestoreColors();\n }\n\n public onOptionsChange(key: string): void {\n if (key === 'minimumContrastRatio') {\n this._contrastCache.clear();\n }\n }\n\n /**\n * Sets the terminal's theme.\n * @param theme The theme to use. If a partial theme is provided then default\n * colors will be used where colors are not defined.\n */\n public setTheme(theme: ITheme = {}): void {\n this.colors.foreground = this._parseColor(theme.foreground, DEFAULT_FOREGROUND);\n this.colors.background = this._parseColor(theme.background, DEFAULT_BACKGROUND);\n this.colors.cursor = this._parseColor(theme.cursor, DEFAULT_CURSOR, true);\n this.colors.cursorAccent = this._parseColor(theme.cursorAccent, DEFAULT_CURSOR_ACCENT, true);\n this.colors.selectionTransparent = this._parseColor(theme.selection, DEFAULT_SELECTION, true);\n this.colors.selectionOpaque = color.blend(this.colors.background, this.colors.selectionTransparent);\n const nullColor: IColor = {\n css: '',\n rgba: 0\n };\n this.colors.selectionForeground = theme.selectionForeground ? this._parseColor(theme.selectionForeground, nullColor) : undefined;\n if (this.colors.selectionForeground === nullColor) {\n this.colors.selectionForeground = undefined;\n }\n\n /**\n * If selection color is opaque, blend it with background with 0.3 opacity\n * Issue #2737\n */\n if (color.isOpaque(this.colors.selectionTransparent)) {\n const opacity = 0.3;\n this.colors.selectionTransparent = color.opacity(this.colors.selectionTransparent, opacity);\n }\n this.colors.ansi[0] = this._parseColor(theme.black, DEFAULT_ANSI_COLORS[0]);\n this.colors.ansi[1] = this._parseColor(theme.red, DEFAULT_ANSI_COLORS[1]);\n this.colors.ansi[2] = this._parseColor(theme.green, DEFAULT_ANSI_COLORS[2]);\n this.colors.ansi[3] = this._parseColor(theme.yellow, DEFAULT_ANSI_COLORS[3]);\n this.colors.ansi[4] = this._parseColor(theme.blue, DEFAULT_ANSI_COLORS[4]);\n this.colors.ansi[5] = this._parseColor(theme.magenta, DEFAULT_ANSI_COLORS[5]);\n this.colors.ansi[6] = this._parseColor(theme.cyan, DEFAULT_ANSI_COLORS[6]);\n this.colors.ansi[7] = this._parseColor(theme.white, DEFAULT_ANSI_COLORS[7]);\n this.colors.ansi[8] = this._parseColor(theme.brightBlack, DEFAULT_ANSI_COLORS[8]);\n this.colors.ansi[9] = this._parseColor(theme.brightRed, DEFAULT_ANSI_COLORS[9]);\n this.colors.ansi[10] = this._parseColor(theme.brightGreen, DEFAULT_ANSI_COLORS[10]);\n this.colors.ansi[11] = this._parseColor(theme.brightYellow, DEFAULT_ANSI_COLORS[11]);\n this.colors.ansi[12] = this._parseColor(theme.brightBlue, DEFAULT_ANSI_COLORS[12]);\n this.colors.ansi[13] = this._parseColor(theme.brightMagenta, DEFAULT_ANSI_COLORS[13]);\n this.colors.ansi[14] = this._parseColor(theme.brightCyan, DEFAULT_ANSI_COLORS[14]);\n this.colors.ansi[15] = this._parseColor(theme.brightWhite, DEFAULT_ANSI_COLORS[15]);\n // Clear our the cache\n this._contrastCache.clear();\n this._updateRestoreColors();\n }\n\n public restoreColor(slot?: ColorIndex): void {\n // unset slot restores all ansi colors\n if (slot === undefined) {\n for (let i = 0; i < this._restoreColors.ansi.length; ++i) {\n this.colors.ansi[i] = this._restoreColors.ansi[i];\n }\n return;\n }\n switch (slot) {\n case ColorIndex.FOREGROUND:\n this.colors.foreground = this._restoreColors.foreground;\n break;\n case ColorIndex.BACKGROUND:\n this.colors.background = this._restoreColors.background;\n break;\n case ColorIndex.CURSOR:\n this.colors.cursor = this._restoreColors.cursor;\n break;\n default:\n this.colors.ansi[slot] = this._restoreColors.ansi[slot];\n }\n }\n\n private _updateRestoreColors(): void {\n this._restoreColors = {\n foreground: this.colors.foreground,\n background: this.colors.background,\n cursor: this.colors.cursor,\n ansi: this.colors.ansi.slice()\n };\n }\n\n private _parseColor(\n css: string | undefined,\n fallback: IColor,\n allowTransparency: boolean = this.allowTransparency\n ): IColor {\n if (css === undefined) {\n return fallback;\n }\n\n // If parsing the value results in failure, then it must be ignored, and the attribute must\n // retain its previous value.\n // -- https://html.spec.whatwg.org/multipage/canvas.html#fill-and-stroke-styles\n this._ctx.fillStyle = this._litmusColor;\n this._ctx.fillStyle = css;\n if (typeof this._ctx.fillStyle !== 'string') {\n console.warn(`Color: ${css} is invalid using fallback ${fallback.css}`);\n return fallback;\n }\n\n this._ctx.fillRect(0, 0, 1, 1);\n const data = this._ctx.getImageData(0, 0, 1, 1).data;\n\n // Check if the printed color was transparent\n if (data[3] !== 0xFF) {\n if (!allowTransparency) {\n // Ideally we'd just ignore the alpha channel, but...\n //\n // Browsers may not give back exactly the same RGB values we put in, because most/all\n // convert the color to a pre-multiplied representation. getImageData converts that back to\n // a un-premultipled representation, but the precision loss may make the RGB channels unuable\n // on their own.\n //\n // E.g. In Chrome #12345610 turns into #10305010, and in the extreme case, 0xFFFFFF00 turns\n // into 0x00000000.\n //\n // \"Note: Due to the lossy nature of converting to and from premultiplied alpha color values,\n // pixels that have just been set using putImageData() might be returned to an equivalent\n // getImageData() as different values.\"\n // -- https://html.spec.whatwg.org/multipage/canvas.html#pixel-manipulation\n //\n // So let's just use the fallback color in this case instead.\n console.warn(\n `Color: ${css} is using transparency, but allowTransparency is false. ` +\n `Using fallback ${fallback.css}.`\n );\n return fallback;\n }\n\n // https://html.spec.whatwg.org/multipage/canvas.html#serialisation-of-a-color\n // the color value has alpha less than 1.0, and the string is the color value in the CSS rgba()\n const [r, g, b, a] = this._ctx.fillStyle.substring(5, this._ctx.fillStyle.length - 1).split(',').map(component => Number(component));\n const alpha = Math.round(a * 255);\n const rgba: number = channels.toRgba(r, g, b, alpha);\n return {\n rgba,\n css\n };\n }\n\n return {\n // https://html.spec.whatwg.org/multipage/canvas.html#serialisation-of-a-color\n // if it has alpha equal to 1.0, then the string is a lowercase six-digit hex value, prefixed with a \"#\" character\n css: this._ctx.fillStyle,\n rgba: channels.toRgba(data[0], data[1], data[2], data[3])\n };\n }\n}\n", "/**\n * Copyright (c) 2020 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nexport function removeElementFromParent(...elements: (HTMLElement | undefined)[]): void {\n for (const e of elements) {\n e?.parentElement?.removeChild(e);\n }\n}\n", "/**\n * Copyright (c) 2018 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IDisposable } from 'common/Types';\n\n/**\n * Adds a disposable listener to a node in the DOM, returning the disposable.\n * @param type The event type.\n * @param handler The handler for the listener.\n */\nexport function addDisposableDomListener(\n node: Element | Window | Document,\n type: string,\n handler: (e: any) => void,\n options?: boolean | AddEventListenerOptions\n): IDisposable {\n node.addEventListener(type, handler, options);\n let disposed = false;\n return {\n dispose: () => {\n if (disposed) {\n return;\n }\n disposed = true;\n node.removeEventListener(type, handler, options);\n }\n };\n}\n", "/**\n * Copyright (c) 2017 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { ILinkifierEvent, ILinkMatcher, LinkMatcherHandler, ILinkMatcherOptions, ILinkifier, IMouseZoneManager, IMouseZone, IRegisteredLinkMatcher } from 'browser/Types';\nimport { IBufferStringIteratorResult } from 'common/buffer/Types';\nimport { EventEmitter, IEvent } from 'common/EventEmitter';\nimport { ILogService, IBufferService, IOptionsService, IUnicodeService } from 'common/services/Services';\n\n/**\n * Limit of the unwrapping line expansion (overscan) at the top and bottom\n * of the actual viewport in ASCII characters.\n * A limit of 2000 should match most sane urls.\n */\nconst OVERSCAN_CHAR_LIMIT = 2000;\n\n/**\n * The Linkifier applies links to rows shortly after they have been refreshed.\n */\nexport class Linkifier implements ILinkifier {\n /**\n * The time to wait after a row is changed before it is linkified. This prevents\n * the costly operation of searching every row multiple times, potentially a\n * huge amount of times.\n */\n protected static _timeBeforeLatency = 200;\n\n protected _linkMatchers: IRegisteredLinkMatcher[] = [];\n\n private _mouseZoneManager: IMouseZoneManager | undefined;\n private _element: HTMLElement | undefined;\n\n private _rowsTimeoutId: number | undefined;\n private _nextLinkMatcherId = 0;\n private _rowsToLinkify: { start: number | undefined, end: number | undefined };\n\n private _onShowLinkUnderline = new EventEmitter();\n public get onShowLinkUnderline(): IEvent { return this._onShowLinkUnderline.event; }\n private _onHideLinkUnderline = new EventEmitter();\n public get onHideLinkUnderline(): IEvent { return this._onHideLinkUnderline.event; }\n private _onLinkTooltip = new EventEmitter();\n public get onLinkTooltip(): IEvent { return this._onLinkTooltip.event; }\n\n constructor(\n @IBufferService protected readonly _bufferService: IBufferService,\n @ILogService private readonly _logService: ILogService,\n @IUnicodeService private readonly _unicodeService: IUnicodeService\n ) {\n this._rowsToLinkify = {\n start: undefined,\n end: undefined\n };\n }\n\n /**\n * Attaches the linkifier to the DOM, enabling linkification.\n * @param mouseZoneManager The mouse zone manager to register link zones with.\n */\n public attachToDom(element: HTMLElement, mouseZoneManager: IMouseZoneManager): void {\n this._element = element;\n this._mouseZoneManager = mouseZoneManager;\n }\n\n /**\n * Queue linkification on a set of rows.\n * @param start The row to linkify from (inclusive).\n * @param end The row to linkify to (inclusive).\n */\n public linkifyRows(start: number, end: number): void {\n // Don't attempt linkify if not yet attached to DOM\n if (!this._mouseZoneManager) {\n return;\n }\n\n // Increase range to linkify\n if (this._rowsToLinkify.start === undefined || this._rowsToLinkify.end === undefined) {\n this._rowsToLinkify.start = start;\n this._rowsToLinkify.end = end;\n } else {\n this._rowsToLinkify.start = Math.min(this._rowsToLinkify.start, start);\n this._rowsToLinkify.end = Math.max(this._rowsToLinkify.end, end);\n }\n\n // Clear out any existing links on this row range\n this._mouseZoneManager.clearAll(start, end);\n\n // Restart timer\n if (this._rowsTimeoutId) {\n clearTimeout(this._rowsTimeoutId);\n }\n\n // Cannot use window.setTimeout since tests need to run in node\n this._rowsTimeoutId = setTimeout(() => this._linkifyRows(), Linkifier._timeBeforeLatency) as any as number;\n }\n\n /**\n * Linkifies the rows requested.\n */\n private _linkifyRows(): void {\n this._rowsTimeoutId = undefined;\n const buffer = this._bufferService.buffer;\n\n if (this._rowsToLinkify.start === undefined || this._rowsToLinkify.end === undefined) {\n this._logService.debug('_rowToLinkify was unset before _linkifyRows was called');\n return;\n }\n\n // Ensure the start row exists\n const absoluteRowIndexStart = buffer.ydisp + this._rowsToLinkify.start;\n if (absoluteRowIndexStart >= buffer.lines.length) {\n return;\n }\n\n // Invalidate bad end row values (if a resize happened)\n const absoluteRowIndexEnd = buffer.ydisp + Math.min(this._rowsToLinkify.end, this._bufferService.rows) + 1;\n\n // Iterate over the range of unwrapped content strings within start..end\n // (excluding).\n // _doLinkifyRow gets full unwrapped lines with the start row as buffer offset\n // for every matcher.\n // The unwrapping is needed to also match content that got wrapped across\n // several buffer lines. To avoid a worst case scenario where the whole buffer\n // contains just a single unwrapped string we limit this line expansion beyond\n // the viewport to +OVERSCAN_CHAR_LIMIT chars (overscan) at top and bottom.\n // This comes with the tradeoff that matches longer than OVERSCAN_CHAR_LIMIT\n // chars will not match anymore at the viewport borders.\n const overscanLineLimit = Math.ceil(OVERSCAN_CHAR_LIMIT / this._bufferService.cols);\n const iterator = this._bufferService.buffer.iterator(\n false, absoluteRowIndexStart, absoluteRowIndexEnd, overscanLineLimit, overscanLineLimit);\n while (iterator.hasNext()) {\n const lineData: IBufferStringIteratorResult = iterator.next();\n for (let i = 0; i < this._linkMatchers.length; i++) {\n this._doLinkifyRow(lineData.range.first, lineData.content, this._linkMatchers[i]);\n }\n }\n\n this._rowsToLinkify.start = undefined;\n this._rowsToLinkify.end = undefined;\n }\n\n /**\n * Registers a link matcher, allowing custom link patterns to be matched and\n * handled.\n * @param regex The regular expression to search for. Specifically, this\n * searches the textContent of the rows. You will want to use \\s to match a\n * space ' ' character for example.\n * @param handler The callback when the link is called.\n * @param options Options for the link matcher.\n * @return The ID of the new matcher, this can be used to deregister.\n */\n public registerLinkMatcher(regex: RegExp, handler: LinkMatcherHandler, options: ILinkMatcherOptions = {}): number {\n if (!handler) {\n throw new Error('handler must be defined');\n }\n const matcher: IRegisteredLinkMatcher = {\n id: this._nextLinkMatcherId++,\n regex,\n handler,\n matchIndex: options.matchIndex,\n validationCallback: options.validationCallback,\n hoverTooltipCallback: options.tooltipCallback,\n hoverLeaveCallback: options.leaveCallback,\n willLinkActivate: options.willLinkActivate,\n priority: options.priority || 0\n };\n this._addLinkMatcherToList(matcher);\n return matcher.id;\n }\n\n /**\n * Inserts a link matcher to the list in the correct position based on the\n * priority of each link matcher. New link matchers of equal priority are\n * considered after older link matchers.\n * @param matcher The link matcher to be added.\n */\n private _addLinkMatcherToList(matcher: IRegisteredLinkMatcher): void {\n if (this._linkMatchers.length === 0) {\n this._linkMatchers.push(matcher);\n return;\n }\n\n for (let i = this._linkMatchers.length - 1; i >= 0; i--) {\n if (matcher.priority <= this._linkMatchers[i].priority) {\n this._linkMatchers.splice(i + 1, 0, matcher);\n return;\n }\n }\n\n this._linkMatchers.splice(0, 0, matcher);\n }\n\n /**\n * Deregisters a link matcher if it has been registered.\n * @param matcherId The link matcher's ID (returned after register)\n * @return Whether a link matcher was found and deregistered.\n */\n public deregisterLinkMatcher(matcherId: number): boolean {\n for (let i = 0; i < this._linkMatchers.length; i++) {\n if (this._linkMatchers[i].id === matcherId) {\n this._linkMatchers.splice(i, 1);\n return true;\n }\n }\n return false;\n }\n\n /**\n * Linkifies a row given a specific handler.\n * @param rowIndex The row index to linkify (absolute index).\n * @param text string content of the unwrapped row.\n * @param matcher The link matcher for this line.\n */\n private _doLinkifyRow(rowIndex: number, text: string, matcher: ILinkMatcher): void {\n // clone regex to do a global search on text\n const rex = new RegExp(matcher.regex.source, (matcher.regex.flags || '') + 'g');\n let match;\n let stringIndex = -1;\n while ((match = rex.exec(text)) !== null) {\n const uri = match[typeof matcher.matchIndex !== 'number' ? 0 : matcher.matchIndex];\n if (!uri) {\n // something matched but does not comply with the given matchIndex\n // since this is most likely a bug the regex itself we simply do nothing here\n this._logService.debug('match found without corresponding matchIndex', match, matcher);\n break;\n }\n\n // Get index, match.index is for the outer match which includes negated chars\n // therefore we cannot use match.index directly, instead we search the position\n // of the match group in text again\n // also correct regex and string search offsets for the next loop run\n stringIndex = text.indexOf(uri, stringIndex + 1);\n rex.lastIndex = stringIndex + uri.length;\n if (stringIndex < 0) {\n // invalid stringIndex (should not have happened)\n break;\n }\n\n // get the buffer index as [absolute row, col] for the match\n const bufferIndex = this._bufferService.buffer.stringIndexToBufferIndex(rowIndex, stringIndex);\n if (bufferIndex[0] < 0) {\n // invalid bufferIndex (should not have happened)\n break;\n }\n\n const line = this._bufferService.buffer.lines.get(bufferIndex[0]);\n if (!line) {\n break;\n }\n\n const attr = line.getFg(bufferIndex[1]);\n const fg = attr ? (attr >> 9) & 0x1ff : undefined;\n\n if (matcher.validationCallback) {\n matcher.validationCallback(uri, isValid => {\n // Discard link if the line has already changed\n if (this._rowsTimeoutId) {\n return;\n }\n if (isValid) {\n this._addLink(bufferIndex[1], bufferIndex[0] - this._bufferService.buffer.ydisp, uri, matcher, fg);\n }\n });\n } else {\n this._addLink(bufferIndex[1], bufferIndex[0] - this._bufferService.buffer.ydisp, uri, matcher, fg);\n }\n }\n }\n\n /**\n * Registers a link to the mouse zone manager.\n * @param x The column the link starts.\n * @param y The row the link is on.\n * @param uri The URI of the link.\n * @param matcher The link matcher for the link.\n * @param fg The link color for hover event.\n */\n private _addLink(x: number, y: number, uri: string, matcher: ILinkMatcher, fg: number | undefined): void {\n if (!this._mouseZoneManager || !this._element) {\n return;\n }\n // FIXME: get cell length from buffer to avoid mismatch after Unicode version change\n const width = this._unicodeService.getStringCellWidth(uri);\n const x1 = x % this._bufferService.cols;\n const y1 = y + Math.floor(x / this._bufferService.cols);\n let x2 = (x1 + width) % this._bufferService.cols;\n let y2 = y1 + Math.floor((x1 + width) / this._bufferService.cols);\n if (x2 === 0) {\n x2 = this._bufferService.cols;\n y2--;\n }\n\n this._mouseZoneManager.add(new MouseZone(\n x1 + 1,\n y1 + 1,\n x2 + 1,\n y2 + 1,\n e => {\n if (matcher.handler) {\n return matcher.handler(e, uri);\n }\n const newWindow = window.open();\n if (newWindow) {\n newWindow.opener = null;\n newWindow.location.href = uri;\n } else {\n console.warn('Opening link blocked as opener could not be cleared');\n }\n },\n () => {\n this._onShowLinkUnderline.fire(this._createLinkHoverEvent(x1, y1, x2, y2, fg));\n this._element!.classList.add('xterm-cursor-pointer');\n },\n e => {\n this._onLinkTooltip.fire(this._createLinkHoverEvent(x1, y1, x2, y2, fg));\n if (matcher.hoverTooltipCallback) {\n // Note that IViewportRange use 1-based coordinates to align with escape sequences such\n // as CUP which use 1,1 as the default for row/col\n matcher.hoverTooltipCallback(e, uri, { start: { x: x1, y: y1 }, end: { x: x2, y: y2 } });\n }\n },\n () => {\n this._onHideLinkUnderline.fire(this._createLinkHoverEvent(x1, y1, x2, y2, fg));\n this._element!.classList.remove('xterm-cursor-pointer');\n if (matcher.hoverLeaveCallback) {\n matcher.hoverLeaveCallback();\n }\n },\n e => {\n if (matcher.willLinkActivate) {\n return matcher.willLinkActivate(e, uri);\n }\n return true;\n }\n ));\n }\n\n private _createLinkHoverEvent(x1: number, y1: number, x2: number, y2: number, fg: number | undefined): ILinkifierEvent {\n return { x1, y1, x2, y2, cols: this._bufferService.cols, fg };\n }\n}\n\nexport class MouseZone implements IMouseZone {\n constructor(\n public x1: number,\n public y1: number,\n public x2: number,\n public y2: number,\n public clickCallback: (e: MouseEvent) => any,\n public hoverCallback: (e: MouseEvent) => any,\n public tooltipCallback: (e: MouseEvent) => any,\n public leaveCallback: () => void,\n public willLinkActivate: (e: MouseEvent) => boolean\n ) {\n }\n}\n", "/**\n * Copyright (c) 2019 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { ILinkifier2, ILinkProvider, IBufferCellPosition, ILink, ILinkifierEvent, ILinkDecorations, ILinkWithState } from 'browser/Types';\nimport { IDisposable } from 'common/Types';\nimport { IMouseService, IRenderService } from './services/Services';\nimport { IBufferService } from 'common/services/Services';\nimport { EventEmitter, IEvent } from 'common/EventEmitter';\nimport { Disposable, getDisposeArrayDisposable, disposeArray } from 'common/Lifecycle';\nimport { addDisposableDomListener } from 'browser/Lifecycle';\n\nexport class Linkifier2 extends Disposable implements ILinkifier2 {\n private _element: HTMLElement | undefined;\n private _mouseService: IMouseService | undefined;\n private _renderService: IRenderService | undefined;\n private _linkProviders: ILinkProvider[] = [];\n public get currentLink(): ILinkWithState | undefined { return this._currentLink; }\n protected _currentLink: ILinkWithState | undefined;\n private _mouseDownLink: ILinkWithState | undefined;\n private _lastMouseEvent: MouseEvent | undefined;\n private _linkCacheDisposables: IDisposable[] = [];\n private _lastBufferCell: IBufferCellPosition | undefined;\n private _isMouseOut: boolean = true;\n private _activeProviderReplies: Map | undefined;\n private _activeLine: number = -1;\n\n private _onShowLinkUnderline = this.register(new EventEmitter());\n public get onShowLinkUnderline(): IEvent { return this._onShowLinkUnderline.event; }\n private _onHideLinkUnderline = this.register(new EventEmitter());\n public get onHideLinkUnderline(): IEvent { return this._onHideLinkUnderline.event; }\n\n constructor(\n @IBufferService private readonly _bufferService: IBufferService\n ) {\n super();\n this.register(getDisposeArrayDisposable(this._linkCacheDisposables));\n }\n\n public registerLinkProvider(linkProvider: ILinkProvider): IDisposable {\n this._linkProviders.push(linkProvider);\n return {\n dispose: () => {\n // Remove the link provider from the list\n const providerIndex = this._linkProviders.indexOf(linkProvider);\n\n if (providerIndex !== -1) {\n this._linkProviders.splice(providerIndex, 1);\n }\n }\n };\n }\n\n public attachToDom(element: HTMLElement, mouseService: IMouseService, renderService: IRenderService): void {\n this._element = element;\n this._mouseService = mouseService;\n this._renderService = renderService;\n\n this.register(addDisposableDomListener(this._element, 'mouseleave', () => {\n this._isMouseOut = true;\n this._clearCurrentLink();\n }));\n this.register(addDisposableDomListener(this._element, 'mousemove', this._onMouseMove.bind(this)));\n this.register(addDisposableDomListener(this._element, 'mousedown', this._handleMouseDown.bind(this)));\n this.register(addDisposableDomListener(this._element, 'mouseup', this._handleMouseUp.bind(this)));\n }\n\n private _onMouseMove(event: MouseEvent): void {\n this._lastMouseEvent = event;\n\n if (!this._element || !this._mouseService) {\n return;\n }\n\n const position = this._positionFromMouseEvent(event, this._element, this._mouseService);\n if (!position) {\n return;\n }\n this._isMouseOut = false;\n\n // Ignore the event if it's an embedder created hover widget\n const composedPath = event.composedPath() as HTMLElement[];\n for (let i = 0; i < composedPath.length; i++) {\n const target = composedPath[i];\n // Hit Terminal.element, break and continue\n if (target.classList.contains('xterm')) {\n break;\n }\n // It's a hover, don't respect hover event\n if (target.classList.contains('xterm-hover')) {\n return;\n }\n }\n\n if (!this._lastBufferCell || (position.x !== this._lastBufferCell.x || position.y !== this._lastBufferCell.y)) {\n this._onHover(position);\n this._lastBufferCell = position;\n }\n }\n\n private _onHover(position: IBufferCellPosition): void {\n // TODO: This currently does not cache link provider results across wrapped lines, activeLine should be something like `activeRange: {startY, endY}`\n // Check if we need to clear the link\n if (this._activeLine !== position.y) {\n this._clearCurrentLink();\n this._askForLink(position, false);\n return;\n }\n\n // Check the if the link is in the mouse position\n const isCurrentLinkInPosition = this._currentLink && this._linkAtPosition(this._currentLink.link, position);\n if (!isCurrentLinkInPosition) {\n this._clearCurrentLink();\n this._askForLink(position, true);\n }\n }\n\n private _askForLink(position: IBufferCellPosition, useLineCache: boolean): void {\n if (!this._activeProviderReplies || !useLineCache) {\n this._activeProviderReplies?.forEach(reply => {\n reply?.forEach(linkWithState => {\n if (linkWithState.link.dispose) {\n linkWithState.link.dispose();\n }\n });\n });\n this._activeProviderReplies = new Map();\n this._activeLine = position.y;\n }\n let linkProvided = false;\n\n // There is no link cached, so ask for one\n for (const [i, linkProvider] of this._linkProviders.entries()) {\n if (useLineCache) {\n const existingReply = this._activeProviderReplies?.get(i);\n // If there isn't a reply, the provider hasn't responded yet.\n\n // TODO: If there isn't a reply yet it means that the provider is still resolving. Ensuring\n // provideLinks isn't triggered again saves ILink.hover firing twice though. This probably\n // needs promises to get fixed\n if (existingReply) {\n linkProvided = this._checkLinkProviderResult(i, position, linkProvided);\n }\n } else {\n linkProvider.provideLinks(position.y, (links: ILink[] | undefined) => {\n if (this._isMouseOut) {\n return;\n }\n const linksWithState: ILinkWithState[] | undefined = links?.map(link => ({ link }));\n this._activeProviderReplies?.set(i, linksWithState);\n linkProvided = this._checkLinkProviderResult(i, position, linkProvided);\n\n // If all providers have responded, remove lower priority links that intersect ranges of\n // higher priority links\n if (this._activeProviderReplies?.size === this._linkProviders.length) {\n this._removeIntersectingLinks(position.y, this._activeProviderReplies);\n }\n });\n }\n }\n }\n\n private _removeIntersectingLinks(y: number, replies: Map): void {\n const occupiedCells = new Set();\n for (let i = 0; i < replies.size; i++) {\n const providerReply = replies.get(i);\n if (!providerReply) {\n continue;\n }\n for (let i = 0; i < providerReply.length; i++) {\n const linkWithState = providerReply[i];\n const startX = linkWithState.link.range.start.y < y ? 0 : linkWithState.link.range.start.x;\n const endX = linkWithState.link.range.end.y > y ? this._bufferService.cols : linkWithState.link.range.end.x;\n for (let x = startX; x <= endX; x++) {\n if (occupiedCells.has(x)) {\n providerReply.splice(i--, 1);\n break;\n }\n occupiedCells.add(x);\n }\n }\n }\n }\n\n private _checkLinkProviderResult(index: number, position: IBufferCellPosition, linkProvided: boolean): boolean {\n if (!this._activeProviderReplies) {\n return linkProvided;\n }\n\n const links = this._activeProviderReplies.get(index);\n\n // Check if every provider before this one has come back undefined\n let hasLinkBefore = false;\n for (let j = 0; j < index; j++) {\n if (!this._activeProviderReplies.has(j) || this._activeProviderReplies.get(j)) {\n hasLinkBefore = true;\n }\n }\n\n // If all providers with higher priority came back undefined, then this provider's link for\n // the position should be used\n if (!hasLinkBefore && links) {\n const linkAtPosition = links.find(link => this._linkAtPosition(link.link, position));\n if (linkAtPosition) {\n linkProvided = true;\n this._handleNewLink(linkAtPosition);\n }\n }\n\n // Check if all the providers have responded\n if (this._activeProviderReplies.size === this._linkProviders.length && !linkProvided) {\n // Respect the order of the link providers\n for (let j = 0; j < this._activeProviderReplies.size; j++) {\n const currentLink = this._activeProviderReplies.get(j)?.find(link => this._linkAtPosition(link.link, position));\n if (currentLink) {\n linkProvided = true;\n this._handleNewLink(currentLink);\n break;\n }\n }\n }\n\n return linkProvided;\n }\n\n private _handleMouseDown(): void {\n this._mouseDownLink = this._currentLink;\n }\n\n private _handleMouseUp(event: MouseEvent): void {\n if (!this._element || !this._mouseService || !this._currentLink) {\n return;\n }\n\n const position = this._positionFromMouseEvent(event, this._element, this._mouseService);\n if (!position) {\n return;\n }\n\n if (this._mouseDownLink === this._currentLink && this._linkAtPosition(this._currentLink.link, position)) {\n this._currentLink.link.activate(event, this._currentLink.link.text);\n }\n }\n\n private _clearCurrentLink(startRow?: number, endRow?: number): void {\n if (!this._element || !this._currentLink || !this._lastMouseEvent) {\n return;\n }\n\n // If we have a start and end row, check that the link is within it\n if (!startRow || !endRow || (this._currentLink.link.range.start.y >= startRow && this._currentLink.link.range.end.y <= endRow)) {\n this._linkLeave(this._element, this._currentLink.link, this._lastMouseEvent);\n this._currentLink = undefined;\n disposeArray(this._linkCacheDisposables);\n }\n }\n\n private _handleNewLink(linkWithState: ILinkWithState): void {\n if (!this._element || !this._lastMouseEvent || !this._mouseService) {\n return;\n }\n\n const position = this._positionFromMouseEvent(this._lastMouseEvent, this._element, this._mouseService);\n\n if (!position) {\n return;\n }\n\n // Trigger hover if the we have a link at the position\n if (this._linkAtPosition(linkWithState.link, position)) {\n this._currentLink = linkWithState;\n this._currentLink.state = {\n decorations: {\n underline: linkWithState.link.decorations === undefined ? true : linkWithState.link.decorations.underline,\n pointerCursor: linkWithState.link.decorations === undefined ? true : linkWithState.link.decorations.pointerCursor\n },\n isHovered: true\n };\n this._linkHover(this._element, linkWithState.link, this._lastMouseEvent);\n\n // Add listener for tracking decorations changes\n linkWithState.link.decorations = {} as ILinkDecorations;\n Object.defineProperties(linkWithState.link.decorations, {\n pointerCursor: {\n get: () => this._currentLink?.state?.decorations.pointerCursor,\n set: v => {\n if (this._currentLink?.state && this._currentLink.state.decorations.pointerCursor !== v) {\n this._currentLink.state.decorations.pointerCursor = v;\n if (this._currentLink.state.isHovered) {\n this._element?.classList.toggle('xterm-cursor-pointer', v);\n }\n }\n }\n },\n underline: {\n get: () => this._currentLink?.state?.decorations.underline,\n set: v => {\n if (this._currentLink?.state && this._currentLink?.state?.decorations.underline !== v) {\n this._currentLink.state.decorations.underline = v;\n if (this._currentLink.state.isHovered) {\n this._fireUnderlineEvent(linkWithState.link, v);\n }\n }\n }\n }\n });\n\n // Add listener for rerendering\n if (this._renderService) {\n this._linkCacheDisposables.push(this._renderService.onRenderedViewportChange(e => {\n // When start is 0 a scroll most likely occurred, make sure links above the fold also get\n // cleared.\n const start = e.start === 0 ? 0 : e.start + 1 + this._bufferService.buffer.ydisp;\n this._clearCurrentLink(start, e.end + 1 + this._bufferService.buffer.ydisp);\n }));\n }\n }\n }\n\n protected _linkHover(element: HTMLElement, link: ILink, event: MouseEvent): void {\n if (this._currentLink?.state) {\n this._currentLink.state.isHovered = true;\n if (this._currentLink.state.decorations.underline) {\n this._fireUnderlineEvent(link, true);\n }\n if (this._currentLink.state.decorations.pointerCursor) {\n element.classList.add('xterm-cursor-pointer');\n }\n }\n\n if (link.hover) {\n link.hover(event, link.text);\n }\n }\n\n private _fireUnderlineEvent(link: ILink, showEvent: boolean): void {\n const range = link.range;\n const scrollOffset = this._bufferService.buffer.ydisp;\n const event = this._createLinkUnderlineEvent(range.start.x - 1, range.start.y - scrollOffset - 1, range.end.x, range.end.y - scrollOffset - 1, undefined);\n const emitter = showEvent ? this._onShowLinkUnderline : this._onHideLinkUnderline;\n emitter.fire(event);\n }\n\n protected _linkLeave(element: HTMLElement, link: ILink, event: MouseEvent): void {\n if (this._currentLink?.state) {\n this._currentLink.state.isHovered = false;\n if (this._currentLink.state.decorations.underline) {\n this._fireUnderlineEvent(link, false);\n }\n if (this._currentLink.state.decorations.pointerCursor) {\n element.classList.remove('xterm-cursor-pointer');\n }\n }\n\n if (link.leave) {\n link.leave(event, link.text);\n }\n }\n\n /**\n * Check if the buffer position is within the link\n * @param link\n * @param position\n */\n private _linkAtPosition(link: ILink, position: IBufferCellPosition): boolean {\n const sameLine = link.range.start.y === link.range.end.y;\n const wrappedFromLeft = link.range.start.y < position.y;\n const wrappedToRight = link.range.end.y > position.y;\n\n // If the start and end have the same y, then the position must be between start and end x\n // If not, then handle each case seperately, depending on which way it wraps\n return ((sameLine && link.range.start.x <= position.x && link.range.end.x >= position.x) ||\n (wrappedFromLeft && link.range.end.x >= position.x) ||\n (wrappedToRight && link.range.start.x <= position.x) ||\n (wrappedFromLeft && wrappedToRight)) &&\n link.range.start.y <= position.y &&\n link.range.end.y >= position.y;\n }\n\n /**\n * Get the buffer position from a mouse event\n * @param event\n */\n private _positionFromMouseEvent(event: MouseEvent, element: HTMLElement, mouseService: IMouseService): IBufferCellPosition | undefined {\n const coords = mouseService.getCoords(event, element, this._bufferService.cols, this._bufferService.rows);\n if (!coords) {\n return;\n }\n\n return { x: coords[0], y: coords[1] + this._bufferService.buffer.ydisp };\n }\n\n private _createLinkUnderlineEvent(x1: number, y1: number, x2: number, y2: number, fg: number | undefined): ILinkifierEvent {\n return { x1, y1, x2, y2, cols: this._bufferService.cols, fg };\n }\n}\n", "/**\n * Copyright (c) 2018 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\n// eslint-disable-next-line prefer-const\nexport let promptLabel = 'Terminal input';\n\n// eslint-disable-next-line prefer-const\nexport let tooMuchOutput = 'Too much output to announce, navigate to rows manually to read';\n", "/**\n * Copyright (c) 2017 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { Disposable } from 'common/Lifecycle';\nimport { addDisposableDomListener } from 'browser/Lifecycle';\nimport { IMouseService, ISelectionService } from 'browser/services/Services';\nimport { IMouseZoneManager, IMouseZone } from 'browser/Types';\nimport { IBufferService, IOptionsService } from 'common/services/Services';\n\n/**\n * The MouseZoneManager allows components to register zones within the terminal\n * that trigger hover and click callbacks.\n *\n * This class was intentionally made not so robust initially as the only case it\n * needed to support was single-line links which never overlap. Improvements can\n * be made in the future.\n */\nexport class MouseZoneManager extends Disposable implements IMouseZoneManager {\n private _zones: IMouseZone[] = [];\n\n private _areZonesActive: boolean = false;\n private _mouseMoveListener: (e: MouseEvent) => any;\n private _mouseLeaveListener: (e: MouseEvent) => any;\n private _clickListener: (e: MouseEvent) => any;\n\n private _tooltipTimeout: number | undefined;\n private _currentZone: IMouseZone | undefined;\n private _lastHoverCoords: [number | undefined, number | undefined] = [undefined, undefined];\n private _initialSelectionLength: number = 0;\n\n constructor(\n private readonly _element: HTMLElement,\n private readonly _screenElement: HTMLElement,\n @IBufferService private readonly _bufferService: IBufferService,\n @IMouseService private readonly _mouseService: IMouseService,\n @ISelectionService private readonly _selectionService: ISelectionService,\n @IOptionsService private readonly _optionsService: IOptionsService\n ) {\n super();\n\n this.register(addDisposableDomListener(this._element, 'mousedown', e => this._onMouseDown(e)));\n\n // These events are expensive, only listen to it when mouse zones are active\n this._mouseMoveListener = e => this._onMouseMove(e);\n this._mouseLeaveListener = e => this._onMouseLeave(e);\n this._clickListener = e => this._onClick(e);\n }\n\n public dispose(): void {\n super.dispose();\n this._deactivate();\n }\n\n public add(zone: IMouseZone): void {\n this._zones.push(zone);\n if (this._zones.length === 1) {\n this._activate();\n }\n }\n\n public clearAll(start?: number, end?: number): void {\n // Exit if there's nothing to clear\n if (this._zones.length === 0) {\n return;\n }\n\n // Clear all if start/end weren't set\n if (!start || !end) {\n start = 0;\n end = this._bufferService.rows - 1;\n }\n\n // Iterate through zones and clear them out if they're within the range\n for (let i = 0; i < this._zones.length; i++) {\n const zone = this._zones[i];\n if ((zone.y1 > start && zone.y1 <= end + 1) ||\n (zone.y2 > start && zone.y2 <= end + 1) ||\n (zone.y1 < start && zone.y2 > end + 1)) {\n if (this._currentZone && this._currentZone === zone) {\n this._currentZone.leaveCallback();\n this._currentZone = undefined;\n }\n this._zones.splice(i--, 1);\n }\n }\n\n // Deactivate the mouse zone manager if all the zones have been removed\n if (this._zones.length === 0) {\n this._deactivate();\n }\n }\n\n private _activate(): void {\n if (!this._areZonesActive) {\n this._areZonesActive = true;\n this._element.addEventListener('mousemove', this._mouseMoveListener);\n this._element.addEventListener('mouseleave', this._mouseLeaveListener);\n this._element.addEventListener('click', this._clickListener);\n }\n }\n\n private _deactivate(): void {\n if (this._areZonesActive) {\n this._areZonesActive = false;\n this._element.removeEventListener('mousemove', this._mouseMoveListener);\n this._element.removeEventListener('mouseleave', this._mouseLeaveListener);\n this._element.removeEventListener('click', this._clickListener);\n }\n }\n\n private _onMouseMove(e: MouseEvent): void {\n // TODO: Ideally this would only clear the hover state when the mouse moves\n // outside of the mouse zone\n if (this._lastHoverCoords[0] !== e.pageX || this._lastHoverCoords[1] !== e.pageY) {\n this._onHover(e);\n // Record the current coordinates\n this._lastHoverCoords = [e.pageX, e.pageY];\n }\n }\n\n private _onHover(e: MouseEvent): void {\n const zone = this._findZoneEventAt(e);\n\n // Do nothing if the zone is the same\n if (zone === this._currentZone) {\n return;\n }\n\n // Fire the hover end callback and cancel any existing timer if a new zone\n // is being hovered\n if (this._currentZone) {\n this._currentZone.leaveCallback();\n this._currentZone = undefined;\n if (this._tooltipTimeout) {\n clearTimeout(this._tooltipTimeout);\n }\n }\n\n // Exit if there is not zone\n if (!zone) {\n return;\n }\n this._currentZone = zone;\n\n // Trigger the hover callback\n if (zone.hoverCallback) {\n zone.hoverCallback(e);\n }\n\n // Restart the tooltip timeout\n this._tooltipTimeout = window.setTimeout(() => this._onTooltip(e), this._optionsService.rawOptions.linkTooltipHoverDuration);\n }\n\n private _onTooltip(e: MouseEvent): void {\n this._tooltipTimeout = undefined;\n const zone = this._findZoneEventAt(e);\n zone?.tooltipCallback(e);\n }\n\n private _onMouseDown(e: MouseEvent): void {\n // Store current terminal selection length, to check if we're performing\n // a selection operation\n this._initialSelectionLength = this._getSelectionLength();\n\n // Ignore the event if there are no zones active\n if (!this._areZonesActive) {\n return;\n }\n\n // Find the active zone, prevent event propagation if found to prevent other\n // components from handling the mouse event.\n const zone = this._findZoneEventAt(e);\n if (zone?.willLinkActivate(e)) {\n e.preventDefault();\n e.stopImmediatePropagation();\n }\n }\n\n private _onMouseLeave(e: MouseEvent): void {\n // Fire the hover end callback and cancel any existing timer if the mouse\n // leaves the terminal element\n if (this._currentZone) {\n this._currentZone.leaveCallback();\n this._currentZone = undefined;\n if (this._tooltipTimeout) {\n clearTimeout(this._tooltipTimeout);\n }\n }\n }\n\n private _onClick(e: MouseEvent): void {\n // Find the active zone and click it if found and no selection was\n // being performed\n const zone = this._findZoneEventAt(e);\n const currentSelectionLength = this._getSelectionLength();\n\n if (zone && currentSelectionLength === this._initialSelectionLength) {\n zone.clickCallback(e);\n e.preventDefault();\n e.stopImmediatePropagation();\n }\n }\n\n private _getSelectionLength(): number {\n const selectionText = this._selectionService.selectionText;\n return selectionText ? selectionText.length : 0;\n }\n\n private _findZoneEventAt(e: MouseEvent): IMouseZone | undefined {\n const coords = this._mouseService.getCoords(e, this._screenElement, this._bufferService.cols, this._bufferService.rows);\n if (!coords) {\n return undefined;\n }\n const x = coords[0];\n const y = coords[1];\n for (let i = 0; i < this._zones.length; i++) {\n const zone = this._zones[i];\n if (zone.y1 === zone.y2) {\n // Single line link\n if (y === zone.y1 && x >= zone.x1 && x < zone.x2) {\n return zone;\n }\n } else {\n // Multi-line link\n if ((y === zone.y1 && x >= zone.x1) ||\n (y === zone.y2 && x < zone.x2) ||\n (y > zone.y1 && y < zone.y2)) {\n return zone;\n }\n }\n }\n return undefined;\n }\n}\n", "/**\n * Copyright (c) 2018 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IRenderDebouncerWithCallback } from 'browser/Types';\n\n/**\n * Debounces calls to render terminal rows using animation frames.\n */\nexport class RenderDebouncer implements IRenderDebouncerWithCallback {\n private _rowStart: number | undefined;\n private _rowEnd: number | undefined;\n private _rowCount: number | undefined;\n private _animationFrame: number | undefined;\n private _refreshCallbacks: FrameRequestCallback[] = [];\n\n constructor(\n private _renderCallback: (start: number, end: number) => void\n ) {\n }\n\n public dispose(): void {\n if (this._animationFrame) {\n window.cancelAnimationFrame(this._animationFrame);\n this._animationFrame = undefined;\n }\n }\n\n public addRefreshCallback(callback: FrameRequestCallback): number {\n this._refreshCallbacks.push(callback);\n if (!this._animationFrame) {\n this._animationFrame = window.requestAnimationFrame(() => this._innerRefresh());\n }\n return this._animationFrame;\n }\n\n public refresh(rowStart: number | undefined, rowEnd: number | undefined, rowCount: number): void {\n this._rowCount = rowCount;\n // Get the min/max row start/end for the arg values\n rowStart = rowStart !== undefined ? rowStart : 0;\n rowEnd = rowEnd !== undefined ? rowEnd : this._rowCount - 1;\n // Set the properties to the updated values\n this._rowStart = this._rowStart !== undefined ? Math.min(this._rowStart, rowStart) : rowStart;\n this._rowEnd = this._rowEnd !== undefined ? Math.max(this._rowEnd, rowEnd) : rowEnd;\n\n if (this._animationFrame) {\n return;\n }\n\n this._animationFrame = window.requestAnimationFrame(() => this._innerRefresh());\n }\n\n private _innerRefresh(): void {\n this._animationFrame = undefined;\n\n // Make sure values are set\n if (this._rowStart === undefined || this._rowEnd === undefined || this._rowCount === undefined) {\n this._runRefreshCallbacks();\n return;\n }\n\n // Clamp values\n const start = Math.max(this._rowStart, 0);\n const end = Math.min(this._rowEnd, this._rowCount - 1);\n\n // Reset debouncer (this happens before render callback as the render could trigger it again)\n this._rowStart = undefined;\n this._rowEnd = undefined;\n\n // Run render callback\n this._renderCallback(start, end);\n this._runRefreshCallbacks();\n }\n\n private _runRefreshCallbacks(): void {\n for (const callback of this._refreshCallbacks) {\n callback(0);\n }\n this._refreshCallbacks = [];\n }\n}\n", "/**\n * Copyright (c) 2017 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { Disposable } from 'common/Lifecycle';\n\nexport type ScreenDprListener = (newDevicePixelRatio?: number, oldDevicePixelRatio?: number) => void;\n\n/**\n * The screen device pixel ratio monitor allows listening for when the\n * window.devicePixelRatio value changes. This is done not with polling but with\n * the use of window.matchMedia to watch media queries. When the event fires,\n * the listener will be reattached using a different media query to ensure that\n * any further changes will register.\n *\n * The listener should fire on both window zoom changes and switching to a\n * monitor with a different DPI.\n */\nexport class ScreenDprMonitor extends Disposable {\n private _currentDevicePixelRatio: number = window.devicePixelRatio;\n private _outerListener: ((this: MediaQueryList, ev: MediaQueryListEvent) => any) | undefined;\n private _listener: ScreenDprListener | undefined;\n private _resolutionMediaMatchList: MediaQueryList | undefined;\n\n public setListener(listener: ScreenDprListener): void {\n if (this._listener) {\n this.clearListener();\n }\n this._listener = listener;\n this._outerListener = () => {\n if (!this._listener) {\n return;\n }\n this._listener(window.devicePixelRatio, this._currentDevicePixelRatio);\n this._updateDpr();\n };\n this._updateDpr();\n }\n\n public dispose(): void {\n super.dispose();\n this.clearListener();\n }\n\n private _updateDpr(): void {\n if (!this._outerListener) {\n return;\n }\n\n // Clear listeners for old DPR\n this._resolutionMediaMatchList?.removeListener(this._outerListener);\n\n // Add listeners for new DPR\n this._currentDevicePixelRatio = window.devicePixelRatio;\n this._resolutionMediaMatchList = window.matchMedia(`screen and (resolution: ${window.devicePixelRatio}dppx)`);\n this._resolutionMediaMatchList.addListener(this._outerListener);\n }\n\n public clearListener(): void {\n if (!this._resolutionMediaMatchList || !this._listener || !this._outerListener) {\n return;\n }\n this._resolutionMediaMatchList.removeListener(this._outerListener);\n this._resolutionMediaMatchList = undefined;\n this._listener = undefined;\n this._outerListener = undefined;\n }\n}\n", "/**\n * Copyright (c) 2014 The xterm.js authors. All rights reserved.\n * Copyright (c) 2012-2013, Christopher Jeffrey (MIT License)\n * @license MIT\n *\n * Originally forked from (with the author's permission):\n * Fabrice Bellard's javascript vt100 for jslinux:\n * http://bellard.org/jslinux/\n * Copyright (c) 2011 Fabrice Bellard\n * The original design remains. The terminal itself\n * has been extended to include xterm CSI codes, among\n * other features.\n *\n * Terminal Emulation References:\n * http://vt100.net/\n * http://invisible-island.net/xterm/ctlseqs/ctlseqs.txt\n * http://invisible-island.net/xterm/ctlseqs/ctlseqs.html\n * http://invisible-island.net/vttest/\n * http://www.inwap.com/pdp10/ansicode.txt\n * http://linux.die.net/man/4/console_codes\n * http://linux.die.net/man/7/urxvt\n */\n\nimport { ICompositionHelper, ITerminal, IBrowser, CustomKeyEventHandler, ILinkifier, IMouseZoneManager, LinkMatcherHandler, ILinkMatcherOptions, IViewport, ILinkifier2, CharacterJoinerHandler } from 'browser/Types';\nimport { IRenderer } from 'browser/renderer/Types';\nimport { CompositionHelper } from 'browser/input/CompositionHelper';\nimport { Viewport } from 'browser/Viewport';\nimport { rightClickHandler, moveTextAreaUnderMouseCursor, handlePasteEvent, copyHandler, paste } from 'browser/Clipboard';\nimport { C0, C1_ESCAPED } from 'common/data/EscapeSequences';\nimport { WindowsOptionsReportType } from '../common/InputHandler';\nimport { Renderer } from 'browser/renderer/Renderer';\nimport { Linkifier } from 'browser/Linkifier';\nimport { SelectionService } from 'browser/services/SelectionService';\nimport * as Browser from 'common/Platform';\nimport { addDisposableDomListener } from 'browser/Lifecycle';\nimport * as Strings from 'browser/LocalizableStrings';\nimport { SoundService } from 'browser/services/SoundService';\nimport { MouseZoneManager } from 'browser/MouseZoneManager';\nimport { AccessibilityManager } from './AccessibilityManager';\nimport { ITheme, IMarker, IDisposable, ISelectionPosition, ILinkProvider, IDecorationOptions, IDecoration } from 'xterm';\nimport { DomRenderer } from 'browser/renderer/dom/DomRenderer';\nimport { KeyboardResultType, CoreMouseEventType, CoreMouseButton, CoreMouseAction, ITerminalOptions, ScrollSource, IColorEvent, ColorIndex, ColorRequestType } from 'common/Types';\nimport { evaluateKeyboardEvent } from 'common/input/Keyboard';\nimport { EventEmitter, IEvent, forwardEvent } from 'common/EventEmitter';\nimport { DEFAULT_ATTR_DATA } from 'common/buffer/BufferLine';\nimport { ColorManager } from 'browser/ColorManager';\nimport { RenderService } from 'browser/services/RenderService';\nimport { ICharSizeService, IRenderService, IMouseService, ISelectionService, ISoundService, ICoreBrowserService, ICharacterJoinerService } from 'browser/services/Services';\nimport { CharSizeService } from 'browser/services/CharSizeService';\nimport { IBuffer } from 'common/buffer/Types';\nimport { MouseService } from 'browser/services/MouseService';\nimport { Linkifier2 } from 'browser/Linkifier2';\nimport { CoreBrowserService } from 'browser/services/CoreBrowserService';\nimport { CoreTerminal } from 'common/CoreTerminal';\nimport { color, rgba } from 'common/Color';\nimport { CharacterJoinerService } from 'browser/services/CharacterJoinerService';\nimport { toRgbString } from 'common/input/XParseColor';\nimport { BufferDecorationRenderer } from 'browser/decorations/BufferDecorationRenderer';\nimport { OverviewRulerRenderer } from 'browser/decorations/OverviewRulerRenderer';\nimport { DecorationService } from 'common/services/DecorationService';\nimport { IDecorationService } from 'common/services/Services';\n\n// Let it work inside Node.js for automated testing purposes.\nconst document: Document = (typeof window !== 'undefined') ? window.document : null as any;\n\nexport class Terminal extends CoreTerminal implements ITerminal {\n public textarea: HTMLTextAreaElement | undefined;\n public element: HTMLElement | undefined;\n public screenElement: HTMLElement | undefined;\n\n private _document: Document | undefined;\n private _viewportScrollArea: HTMLElement | undefined;\n private _viewportElement: HTMLElement | undefined;\n private _helperContainer: HTMLElement | undefined;\n private _compositionView: HTMLElement | undefined;\n\n private _overviewRulerRenderer: OverviewRulerRenderer | undefined;\n\n // private _visualBellTimer: number;\n\n public browser: IBrowser = Browser as any;\n\n private _customKeyEventHandler: CustomKeyEventHandler | undefined;\n\n // browser services\n private _decorationService: DecorationService;\n private _charSizeService: ICharSizeService | undefined;\n private _mouseService: IMouseService | undefined;\n private _renderService: IRenderService | undefined;\n private _characterJoinerService: ICharacterJoinerService | undefined;\n private _selectionService: ISelectionService | undefined;\n private _soundService: ISoundService | undefined;\n\n /**\n * Records whether the keydown event has already been handled and triggered a data event, if so\n * the keypress event should not trigger a data event but should still print to the textarea so\n * screen readers will announce it.\n */\n private _keyDownHandled: boolean = false;\n\n /**\n * Records whether a keydown event has occured since the last keyup event, i.e. whether a key\n * is currently \"pressed\".\n */\n private _keyDownSeen: boolean = false;\n\n /**\n * Records whether the keypress event has already been handled and triggered a data event, if so\n * the input event should not trigger a data event but should still print to the textarea so\n * screen readers will announce it.\n */\n private _keyPressHandled: boolean = false;\n\n /**\n * Records whether there has been a keydown event for a dead key without a corresponding keydown\n * event for the composed/alternative character. If we cancel the keydown event for the dead key,\n * no events will be emitted for the final character.\n */\n private _unprocessedDeadKey: boolean = false;\n\n public linkifier: ILinkifier;\n public linkifier2: ILinkifier2;\n public viewport: IViewport | undefined;\n private _compositionHelper: ICompositionHelper | undefined;\n private _mouseZoneManager: IMouseZoneManager | undefined;\n private _accessibilityManager: AccessibilityManager | undefined;\n private _colorManager: ColorManager | undefined;\n private _theme: ITheme | undefined;\n\n private _onCursorMove = new EventEmitter();\n public get onCursorMove(): IEvent { return this._onCursorMove.event; }\n private _onKey = new EventEmitter<{ key: string, domEvent: KeyboardEvent }>();\n public get onKey(): IEvent<{ key: string, domEvent: KeyboardEvent }> { return this._onKey.event; }\n private _onRender = new EventEmitter<{ start: number, end: number }>();\n public get onRender(): IEvent<{ start: number, end: number }> { return this._onRender.event; }\n private _onSelectionChange = new EventEmitter();\n public get onSelectionChange(): IEvent { return this._onSelectionChange.event; }\n private _onTitleChange = new EventEmitter();\n public get onTitleChange(): IEvent { return this._onTitleChange.event; }\n private _onBell = new EventEmitter();\n public get onBell(): IEvent { return this._onBell.event; }\n\n private _onFocus = new EventEmitter();\n public get onFocus(): IEvent { return this._onFocus.event; }\n private _onBlur = new EventEmitter();\n public get onBlur(): IEvent { return this._onBlur.event; }\n private _onA11yCharEmitter = new EventEmitter();\n public get onA11yChar(): IEvent { return this._onA11yCharEmitter.event; }\n private _onA11yTabEmitter = new EventEmitter();\n public get onA11yTab(): IEvent { return this._onA11yTabEmitter.event; }\n\n /**\n * Creates a new `Terminal` object.\n *\n * @param options An object containing a set of options, the available options are:\n * - `cursorBlink` (boolean): Whether the terminal cursor blinks\n * - `cols` (number): The number of columns of the terminal (horizontal size)\n * - `rows` (number): The number of rows of the terminal (vertical size)\n *\n * @public\n * @class Xterm Xterm\n * @alias module:xterm/src/xterm\n */\n constructor(\n options: Partial = {}\n ) {\n super(options);\n\n this._setup();\n\n this.linkifier = this._instantiationService.createInstance(Linkifier);\n this.linkifier2 = this.register(this._instantiationService.createInstance(Linkifier2));\n this._decorationService = this._instantiationService.createInstance(DecorationService);\n this._instantiationService.setService(IDecorationService, this._decorationService);\n\n // Setup InputHandler listeners\n this.register(this._inputHandler.onRequestBell(() => this.bell()));\n this.register(this._inputHandler.onRequestRefreshRows((start, end) => this.refresh(start, end)));\n this.register(this._inputHandler.onRequestSendFocus(() => this._reportFocus()));\n this.register(this._inputHandler.onRequestReset(() => this.reset()));\n this.register(this._inputHandler.onRequestWindowsOptionsReport(type => this._reportWindowsOptions(type)));\n this.register(this._inputHandler.onColor((event) => this._handleColorEvent(event)));\n this.register(forwardEvent(this._inputHandler.onCursorMove, this._onCursorMove));\n this.register(forwardEvent(this._inputHandler.onTitleChange, this._onTitleChange));\n this.register(forwardEvent(this._inputHandler.onA11yChar, this._onA11yCharEmitter));\n this.register(forwardEvent(this._inputHandler.onA11yTab, this._onA11yTabEmitter));\n\n // Setup listeners\n this.register(this._bufferService.onResize(e => this._afterResize(e.cols, e.rows)));\n }\n\n /**\n * Handle color event from inputhandler for OSC 4|104 | 10|110 | 11|111 | 12|112.\n * An event from OSC 4|104 may contain multiple set or report requests, and multiple\n * or none restore requests (resetting all),\n * while an event from OSC 10|110 | 11|111 | 12|112 always contains a single request.\n */\n private _handleColorEvent(event: IColorEvent): void {\n if (!this._colorManager) return;\n for (const req of event) {\n let acc: 'foreground' | 'background' | 'cursor' | 'ansi' | undefined = undefined;\n let ident = '';\n switch (req.index) {\n case ColorIndex.FOREGROUND: // OSC 10 | 110\n acc = 'foreground';\n ident = '10';\n break;\n case ColorIndex.BACKGROUND: // OSC 11 | 111\n acc = 'background';\n ident = '11';\n break;\n case ColorIndex.CURSOR: // OSC 12 | 112\n acc = 'cursor';\n ident = '12';\n break;\n default: // OSC 4 | 104\n // we can skip the [0..255] range check here (already done in inputhandler)\n acc = 'ansi';\n ident = '4;' + req.index;\n }\n if (acc) {\n switch (req.type) {\n case ColorRequestType.REPORT:\n const channels = color.toColorRGB(acc === 'ansi'\n ? this._colorManager.colors.ansi[req.index]\n : this._colorManager.colors[acc]);\n this.coreService.triggerDataEvent(`${C0.ESC}]${ident};${toRgbString(channels)}${C1_ESCAPED.ST}`);\n break;\n case ColorRequestType.SET:\n if (acc === 'ansi') this._colorManager.colors.ansi[req.index] = rgba.toColor(...req.color);\n else this._colorManager.colors[acc] = rgba.toColor(...req.color);\n break;\n case ColorRequestType.RESTORE:\n this._colorManager.restoreColor(req.index);\n break;\n }\n }\n }\n this._renderService?.setColors(this._colorManager.colors);\n this.viewport?.onThemeChange(this._colorManager.colors);\n }\n\n public dispose(): void {\n if (this._isDisposed) {\n return;\n }\n super.dispose();\n this._renderService?.dispose();\n this._customKeyEventHandler = undefined;\n this.write = () => { };\n this.element?.parentNode?.removeChild(this.element);\n }\n\n protected _setup(): void {\n super._setup();\n\n this._customKeyEventHandler = undefined;\n }\n\n /**\n * Convenience property to active buffer.\n */\n public get buffer(): IBuffer {\n return this.buffers.active;\n }\n\n /**\n * Focus the terminal. Delegates focus handling to the terminal's DOM element.\n */\n public focus(): void {\n if (this.textarea) {\n this.textarea.focus({ preventScroll: true });\n }\n }\n\n protected _updateOptions(key: string): void {\n super._updateOptions(key);\n\n // TODO: These listeners should be owned by individual components\n switch (key) {\n case 'fontFamily':\n case 'fontSize':\n // When the font changes the size of the cells may change which requires a renderer clear\n this._renderService?.clear();\n this._charSizeService?.measure();\n break;\n case 'cursorBlink':\n case 'cursorStyle':\n // The DOM renderer needs a row refresh to update the cursor styles\n this.refresh(this.buffer.y, this.buffer.y);\n break;\n case 'customGlyphs':\n case 'drawBoldTextInBrightColors':\n case 'letterSpacing':\n case 'lineHeight':\n case 'fontWeight':\n case 'fontWeightBold':\n case 'minimumContrastRatio':\n // When the font changes the size of the cells may change which requires a renderer clear\n if (this._renderService) {\n this._renderService.clear();\n this._renderService.onResize(this.cols, this.rows);\n this.refresh(0, this.rows - 1);\n }\n break;\n case 'rendererType':\n if (this._renderService) {\n this._renderService.setRenderer(this._createRenderer());\n this._renderService.onResize(this.cols, this.rows);\n }\n break;\n case 'scrollback':\n this.viewport?.syncScrollArea();\n break;\n case 'screenReaderMode':\n if (this.optionsService.rawOptions.screenReaderMode) {\n if (!this._accessibilityManager && this._renderService) {\n this._accessibilityManager = new AccessibilityManager(this, this._renderService);\n }\n } else {\n this._accessibilityManager?.dispose();\n this._accessibilityManager = undefined;\n }\n break;\n case 'tabStopWidth': this.buffers.setupTabStops(); break;\n case 'theme':\n this._setTheme(this.optionsService.rawOptions.theme);\n break;\n }\n }\n\n /**\n * Binds the desired focus behavior on a given terminal object.\n */\n private _onTextAreaFocus(ev: KeyboardEvent): void {\n if (this.coreService.decPrivateModes.sendFocus) {\n this.coreService.triggerDataEvent(C0.ESC + '[I');\n }\n this.updateCursorStyle(ev);\n this.element!.classList.add('focus');\n this._showCursor();\n this._onFocus.fire();\n }\n\n /**\n * Blur the terminal, calling the blur function on the terminal's underlying\n * textarea.\n */\n public blur(): void {\n return this.textarea?.blur();\n }\n\n /**\n * Binds the desired blur behavior on a given terminal object.\n */\n private _onTextAreaBlur(): void {\n // Text can safely be removed on blur. Doing it earlier could interfere with\n // screen readers reading it out.\n this.textarea!.value = '';\n this.refresh(this.buffer.y, this.buffer.y);\n if (this.coreService.decPrivateModes.sendFocus) {\n this.coreService.triggerDataEvent(C0.ESC + '[O');\n }\n this.element!.classList.remove('focus');\n this._onBlur.fire();\n }\n\n private _syncTextArea(): void {\n if (!this.textarea || !this.buffer.isCursorInViewport || this._compositionHelper!.isComposing || !this._renderService) {\n return;\n }\n const cursorY = this.buffer.ybase + this.buffer.y;\n const bufferLine = this.buffer.lines.get(cursorY);\n if (!bufferLine) {\n return;\n }\n const cursorX = Math.min(this.buffer.x, this.cols - 1);\n const cellHeight = this._renderService.dimensions.actualCellHeight;\n const width = bufferLine.getWidth(cursorX);\n const cellWidth = this._renderService.dimensions.actualCellWidth * width;\n const cursorTop = this.buffer.y * this._renderService.dimensions.actualCellHeight;\n const cursorLeft = cursorX * this._renderService.dimensions.actualCellWidth;\n\n // Sync the textarea to the exact position of the composition view so the IME knows where the\n // text is.\n this.textarea.style.left = cursorLeft + 'px';\n this.textarea.style.top = cursorTop + 'px';\n this.textarea.style.width = cellWidth + 'px';\n this.textarea.style.height = cellHeight + 'px';\n this.textarea.style.lineHeight = cellHeight + 'px';\n this.textarea.style.zIndex = '-5';\n }\n\n /**\n * Initialize default behavior\n */\n private _initGlobal(): void {\n this._bindKeys();\n\n // Bind clipboard functionality\n this.register(addDisposableDomListener(this.element!, 'copy', (event: ClipboardEvent) => {\n // If mouse events are active it means the selection manager is disabled and\n // copy should be handled by the host program.\n if (!this.hasSelection()) {\n return;\n }\n copyHandler(event, this._selectionService!);\n }));\n const pasteHandlerWrapper = (event: ClipboardEvent): void => handlePasteEvent(event, this.textarea!, this.coreService);\n this.register(addDisposableDomListener(this.textarea!, 'paste', pasteHandlerWrapper));\n this.register(addDisposableDomListener(this.element!, 'paste', pasteHandlerWrapper));\n\n // Handle right click context menus\n if (Browser.isFirefox) {\n // Firefox doesn't appear to fire the contextmenu event on right click\n this.register(addDisposableDomListener(this.element!, 'mousedown', (event: MouseEvent) => {\n if (event.button === 2) {\n rightClickHandler(event, this.textarea!, this.screenElement!, this._selectionService!, this.options.rightClickSelectsWord);\n }\n }));\n } else {\n this.register(addDisposableDomListener(this.element!, 'contextmenu', (event: MouseEvent) => {\n rightClickHandler(event, this.textarea!, this.screenElement!, this._selectionService!, this.options.rightClickSelectsWord);\n }));\n }\n\n // Move the textarea under the cursor when middle clicking on Linux to ensure\n // middle click to paste selection works. This only appears to work in Chrome\n // at the time is writing.\n if (Browser.isLinux) {\n // Use auxclick event over mousedown the latter doesn't seem to work. Note\n // that the regular click event doesn't fire for the middle mouse button.\n this.register(addDisposableDomListener(this.element!, 'auxclick', (event: MouseEvent) => {\n if (event.button === 1) {\n moveTextAreaUnderMouseCursor(event, this.textarea!, this.screenElement!);\n }\n }));\n }\n }\n\n /**\n * Apply key handling to the terminal\n */\n private _bindKeys(): void {\n this.register(addDisposableDomListener(this.textarea!, 'keyup', (ev: KeyboardEvent) => this._keyUp(ev), true));\n this.register(addDisposableDomListener(this.textarea!, 'keydown', (ev: KeyboardEvent) => this._keyDown(ev), true));\n this.register(addDisposableDomListener(this.textarea!, 'keypress', (ev: KeyboardEvent) => this._keyPress(ev), true));\n this.register(addDisposableDomListener(this.textarea!, 'compositionstart', () => this._compositionHelper!.compositionstart()));\n this.register(addDisposableDomListener(this.textarea!, 'compositionupdate', (e: CompositionEvent) => this._compositionHelper!.compositionupdate(e)));\n this.register(addDisposableDomListener(this.textarea!, 'compositionend', () => this._compositionHelper!.compositionend()));\n this.register(addDisposableDomListener(this.textarea!, 'input', (ev: InputEvent) => this._inputEvent(ev), true));\n this.register(this.onRender(() => this._compositionHelper!.updateCompositionElements()));\n this.register(this.onRender(e => this._queueLinkification(e.start, e.end)));\n }\n\n /**\n * Opens the terminal within an element.\n *\n * @param parent The element to create the terminal within.\n */\n public open(parent: HTMLElement): void {\n if (!parent) {\n throw new Error('Terminal requires a parent element.');\n }\n\n if (!parent.isConnected) {\n this._logService.debug('Terminal.open was called on an element that was not attached to the DOM');\n }\n\n this._document = parent.ownerDocument!;\n\n // Create main element container\n this.element = this._document.createElement('div');\n this.element.dir = 'ltr'; // xterm.css assumes LTR\n this.element.classList.add('terminal');\n this.element.classList.add('xterm');\n this.element.setAttribute('tabindex', '0');\n parent.appendChild(this.element);\n\n // Performance: Use a document fragment to build the terminal\n // viewport and helper elements detached from the DOM\n const fragment = document.createDocumentFragment();\n this._viewportElement = document.createElement('div');\n this._viewportElement.classList.add('xterm-viewport');\n fragment.appendChild(this._viewportElement);\n\n this._viewportScrollArea = document.createElement('div');\n this._viewportScrollArea.classList.add('xterm-scroll-area');\n this._viewportElement.appendChild(this._viewportScrollArea);\n\n this.screenElement = document.createElement('div');\n this.screenElement.classList.add('xterm-screen');\n // Create the container that will hold helpers like the textarea for\n // capturing DOM Events. Then produce the helpers.\n this._helperContainer = document.createElement('div');\n this._helperContainer.classList.add('xterm-helpers');\n this.screenElement.appendChild(this._helperContainer);\n fragment.appendChild(this.screenElement);\n\n this.textarea = document.createElement('textarea');\n this.textarea.classList.add('xterm-helper-textarea');\n this.textarea.setAttribute('aria-label', Strings.promptLabel);\n this.textarea.setAttribute('aria-multiline', 'false');\n this.textarea.setAttribute('autocorrect', 'off');\n this.textarea.setAttribute('autocapitalize', 'off');\n this.textarea.setAttribute('spellcheck', 'false');\n this.textarea.tabIndex = 0;\n this.register(addDisposableDomListener(this.textarea, 'focus', (ev: KeyboardEvent) => this._onTextAreaFocus(ev)));\n this.register(addDisposableDomListener(this.textarea, 'blur', () => this._onTextAreaBlur()));\n this._helperContainer.appendChild(this.textarea);\n\n const coreBrowserService = this._instantiationService.createInstance(CoreBrowserService, this.textarea);\n this._instantiationService.setService(ICoreBrowserService, coreBrowserService);\n\n this._charSizeService = this._instantiationService.createInstance(CharSizeService, this._document, this._helperContainer);\n this._instantiationService.setService(ICharSizeService, this._charSizeService);\n\n this._theme = this.options.theme || this._theme;\n this._colorManager = new ColorManager(document, this.options.allowTransparency);\n this.register(this.optionsService.onOptionChange(e => this._colorManager!.onOptionsChange(e)));\n this._colorManager.setTheme(this._theme);\n\n this._characterJoinerService = this._instantiationService.createInstance(CharacterJoinerService);\n this._instantiationService.setService(ICharacterJoinerService, this._characterJoinerService);\n\n const renderer = this._createRenderer();\n this._renderService = this.register(this._instantiationService.createInstance(RenderService, renderer, this.rows, this.screenElement));\n this._instantiationService.setService(IRenderService, this._renderService);\n this.register(this._renderService.onRenderedViewportChange(e => this._onRender.fire(e)));\n this.onResize(e => this._renderService!.resize(e.cols, e.rows));\n\n this._compositionView = document.createElement('div');\n this._compositionView.classList.add('composition-view');\n this._compositionHelper = this._instantiationService.createInstance(CompositionHelper, this.textarea, this._compositionView);\n this._helperContainer.appendChild(this._compositionView);\n\n // Performance: Add viewport and helper elements from the fragment\n this.element.appendChild(fragment);\n\n this._soundService = this._instantiationService.createInstance(SoundService);\n this._instantiationService.setService(ISoundService, this._soundService);\n this._mouseService = this._instantiationService.createInstance(MouseService);\n this._instantiationService.setService(IMouseService, this._mouseService);\n\n this.viewport = this._instantiationService.createInstance(Viewport,\n (amount: number) => this.scrollLines(amount, true, ScrollSource.VIEWPORT),\n this._viewportElement,\n this._viewportScrollArea,\n this.element\n );\n this.viewport.onThemeChange(this._colorManager.colors);\n this.register(this._inputHandler.onRequestSyncScrollBar(() => this.viewport!.syncScrollArea()));\n this.register(this.viewport);\n\n this.register(this.onCursorMove(() => {\n this._renderService!.onCursorMove();\n this._syncTextArea();\n }));\n this.register(this.onResize(() => this._renderService!.onResize(this.cols, this.rows)));\n this.register(this.onBlur(() => this._renderService!.onBlur()));\n this.register(this.onFocus(() => this._renderService!.onFocus()));\n this.register(this._renderService.onDimensionsChange(() => this.viewport!.syncScrollArea()));\n\n this._selectionService = this.register(this._instantiationService.createInstance(SelectionService,\n this.element,\n this.screenElement,\n this.linkifier2\n ));\n this._instantiationService.setService(ISelectionService, this._selectionService);\n this.register(this._selectionService.onRequestScrollLines(e => this.scrollLines(e.amount, e.suppressScrollEvent)));\n this.register(this._selectionService.onSelectionChange(() => this._onSelectionChange.fire()));\n this.register(this._selectionService.onRequestRedraw(e => this._renderService!.onSelectionChanged(e.start, e.end, e.columnSelectMode)));\n this.register(this._selectionService.onLinuxMouseSelection(text => {\n // If there's a new selection, put it into the textarea, focus and select it\n // in order to register it as a selection on the OS. This event is fired\n // only on Linux to enable middle click to paste selection.\n this.textarea!.value = text;\n this.textarea!.focus();\n this.textarea!.select();\n }));\n this.register(this._onScroll.event(ev => {\n this.viewport!.syncScrollArea();\n this._selectionService!.refresh();\n }));\n this.register(addDisposableDomListener(this._viewportElement, 'scroll', () => this._selectionService!.refresh()));\n\n this._mouseZoneManager = this._instantiationService.createInstance(MouseZoneManager, this.element, this.screenElement);\n this.register(this._mouseZoneManager);\n this.register(this.onScroll(() => this._mouseZoneManager!.clearAll()));\n this.linkifier.attachToDom(this.element, this._mouseZoneManager);\n this.linkifier2.attachToDom(this.screenElement, this._mouseService, this._renderService);\n this.register(this._instantiationService.createInstance(BufferDecorationRenderer, this.screenElement));\n // This event listener must be registered aftre MouseZoneManager is created\n this.register(addDisposableDomListener(this.element, 'mousedown', (e: MouseEvent) => this._selectionService!.onMouseDown(e)));\n\n // apply mouse event classes set by escape codes before terminal was attached\n if (this.coreMouseService.areMouseEventsActive) {\n this._selectionService.disable();\n this.element.classList.add('enable-mouse-events');\n } else {\n this._selectionService.enable();\n }\n\n if (this.options.screenReaderMode) {\n // Note that this must be done *after* the renderer is created in order to\n // ensure the correct order of the dprchange event\n this._accessibilityManager = new AccessibilityManager(this, this._renderService);\n }\n\n if (this.options.overviewRulerWidth) {\n this._overviewRulerRenderer = this._instantiationService.createInstance(OverviewRulerRenderer, this._viewportElement, this.screenElement);\n }\n this.optionsService.onOptionChange(() => {\n if (!this._overviewRulerRenderer && this.options.overviewRulerWidth && this._viewportElement && this.screenElement) {\n this._overviewRulerRenderer = this._instantiationService.createInstance(OverviewRulerRenderer, this._viewportElement, this.screenElement);\n }\n });\n // Measure the character size\n this._charSizeService.measure();\n\n // Setup loop that draws to screen\n this.refresh(0, this.rows - 1);\n\n // Initialize global actions that need to be taken on the document.\n this._initGlobal();\n\n // Listen for mouse events and translate\n // them into terminal mouse protocols.\n this.bindMouse();\n }\n\n private _createRenderer(): IRenderer {\n switch (this.options.rendererType) {\n case 'canvas': return this._instantiationService.createInstance(Renderer, this._colorManager!.colors, this.screenElement!, this.linkifier, this.linkifier2);\n case 'dom': return this._instantiationService.createInstance(DomRenderer, this._colorManager!.colors, this.element!, this.screenElement!, this._viewportElement!, this.linkifier, this.linkifier2);\n default: throw new Error(`Unrecognized rendererType \"${this.options.rendererType}\"`);\n }\n }\n\n /**\n * Sets the theme on the renderer. The renderer must have been initialized.\n * @param theme The theme to set.\n */\n private _setTheme(theme: ITheme): void {\n this._theme = theme;\n this._colorManager?.setTheme(theme);\n this._renderService?.setColors(this._colorManager!.colors);\n this.viewport?.onThemeChange(this._colorManager!.colors);\n }\n\n /**\n * Bind certain mouse events to the terminal.\n * By default only 3 button + wheel up/down is ativated. For higher buttons\n * no mouse report will be created. Typically the standard actions will be active.\n *\n * There are several reasons not to enable support for higher buttons/wheel:\n * - Button 4 and 5 are typically used for history back and forward navigation,\n * there is no straight forward way to supress/intercept those standard actions.\n * - Support for higher buttons does not work in some platform/browser combinations.\n * - Left/right wheel was not tested.\n * - Emulators vary in mouse button support, typically only 3 buttons and\n * wheel up/down work reliable.\n *\n * TODO: Move mouse event code into its own file.\n */\n public bindMouse(): void {\n const self = this;\n const el = this.element!;\n\n // send event to CoreMouseService\n function sendEvent(ev: MouseEvent | WheelEvent): boolean {\n // get mouse coordinates\n const pos = self._mouseService!.getRawByteCoords(ev, self.screenElement!, self.cols, self.rows);\n if (!pos) {\n return false;\n }\n\n let but: CoreMouseButton;\n let action: CoreMouseAction | undefined;\n switch ((ev as any).overrideType || ev.type) {\n case 'mousemove':\n action = CoreMouseAction.MOVE;\n if (ev.buttons === undefined) {\n // buttons is not supported on macOS, try to get a value from button instead\n but = CoreMouseButton.NONE;\n if (ev.button !== undefined) {\n but = ev.button < 3 ? ev.button : CoreMouseButton.NONE;\n }\n } else {\n // according to MDN buttons only reports up to button 5 (AUX2)\n but = ev.buttons & 1 ? CoreMouseButton.LEFT :\n ev.buttons & 4 ? CoreMouseButton.MIDDLE :\n ev.buttons & 2 ? CoreMouseButton.RIGHT :\n CoreMouseButton.NONE; // fallback to NONE\n }\n break;\n case 'mouseup':\n action = CoreMouseAction.UP;\n but = ev.button < 3 ? ev.button : CoreMouseButton.NONE;\n break;\n case 'mousedown':\n action = CoreMouseAction.DOWN;\n but = ev.button < 3 ? ev.button : CoreMouseButton.NONE;\n break;\n case 'wheel':\n const amount = self.viewport!.getLinesScrolled(ev as WheelEvent);\n\n if (amount === 0) {\n return false;\n }\n\n action = (ev as WheelEvent).deltaY < 0 ? CoreMouseAction.UP : CoreMouseAction.DOWN;\n but = CoreMouseButton.WHEEL;\n break;\n default:\n // dont handle other event types by accident\n return false;\n }\n\n // exit if we cannot determine valid button/action values\n // do nothing for higher buttons than wheel\n if (action === undefined || but === undefined || but > CoreMouseButton.WHEEL) {\n return false;\n }\n\n return self.coreMouseService.triggerMouseEvent({\n col: pos.x - 33, // FIXME: why -33 here?\n row: pos.y - 33,\n button: but,\n action,\n ctrl: ev.ctrlKey,\n alt: ev.altKey,\n shift: ev.shiftKey\n });\n }\n\n /**\n * Event listener state handling.\n * We listen to the onProtocolChange event of CoreMouseService and put\n * requested listeners in `requestedEvents`. With this the listeners\n * have all bits to do the event listener juggling.\n * Note: 'mousedown' currently is \"always on\" and not managed\n * by onProtocolChange.\n */\n const requestedEvents: { [key: string]: ((ev: Event) => void) | null } = {\n mouseup: null,\n wheel: null,\n mousedrag: null,\n mousemove: null\n };\n const eventListeners: { [key: string]: (ev: any) => void | boolean } = {\n mouseup: (ev: MouseEvent) => {\n sendEvent(ev);\n if (!ev.buttons) {\n // if no other button is held remove global handlers\n this._document!.removeEventListener('mouseup', requestedEvents.mouseup!);\n if (requestedEvents.mousedrag) {\n this._document!.removeEventListener('mousemove', requestedEvents.mousedrag);\n }\n }\n return this.cancel(ev);\n },\n wheel: (ev: WheelEvent) => {\n sendEvent(ev);\n return this.cancel(ev, true);\n },\n mousedrag: (ev: MouseEvent) => {\n // deal only with move while a button is held\n if (ev.buttons) {\n sendEvent(ev);\n }\n },\n mousemove: (ev: MouseEvent) => {\n // deal only with move without any button\n if (!ev.buttons) {\n sendEvent(ev);\n }\n }\n };\n this.register(this.coreMouseService.onProtocolChange(events => {\n // apply global changes on events\n if (events) {\n if (this.optionsService.rawOptions.logLevel === 'debug') {\n this._logService.debug('Binding to mouse events:', this.coreMouseService.explainEvents(events));\n }\n this.element!.classList.add('enable-mouse-events');\n this._selectionService!.disable();\n } else {\n this._logService.debug('Unbinding from mouse events.');\n this.element!.classList.remove('enable-mouse-events');\n this._selectionService!.enable();\n }\n\n // add/remove handlers from requestedEvents\n\n if (!(events & CoreMouseEventType.MOVE)) {\n el.removeEventListener('mousemove', requestedEvents.mousemove!);\n requestedEvents.mousemove = null;\n } else if (!requestedEvents.mousemove) {\n el.addEventListener('mousemove', eventListeners.mousemove);\n requestedEvents.mousemove = eventListeners.mousemove;\n }\n\n if (!(events & CoreMouseEventType.WHEEL)) {\n el.removeEventListener('wheel', requestedEvents.wheel!);\n requestedEvents.wheel = null;\n } else if (!requestedEvents.wheel) {\n el.addEventListener('wheel', eventListeners.wheel, { passive: false });\n requestedEvents.wheel = eventListeners.wheel;\n }\n\n if (!(events & CoreMouseEventType.UP)) {\n this._document!.removeEventListener('mouseup', requestedEvents.mouseup!);\n requestedEvents.mouseup = null;\n } else if (!requestedEvents.mouseup) {\n requestedEvents.mouseup = eventListeners.mouseup;\n }\n\n if (!(events & CoreMouseEventType.DRAG)) {\n this._document!.removeEventListener('mousemove', requestedEvents.mousedrag!);\n requestedEvents.mousedrag = null;\n } else if (!requestedEvents.mousedrag) {\n requestedEvents.mousedrag = eventListeners.mousedrag;\n }\n }));\n // force initial onProtocolChange so we dont miss early mouse requests\n this.coreMouseService.activeProtocol = this.coreMouseService.activeProtocol;\n\n /**\n * \"Always on\" event listeners.\n */\n this.register(addDisposableDomListener(el, 'mousedown', (ev: MouseEvent) => {\n ev.preventDefault();\n this.focus();\n\n // Don't send the mouse button to the pty if mouse events are disabled or\n // if the selection manager is having selection forced (ie. a modifier is\n // held).\n if (!this.coreMouseService.areMouseEventsActive || this._selectionService!.shouldForceSelection(ev)) {\n return;\n }\n\n sendEvent(ev);\n\n // Register additional global handlers which should keep reporting outside\n // of the terminal element.\n // Note: Other emulators also do this for 'mousedown' while a button\n // is held, we currently limit 'mousedown' to the terminal only.\n if (requestedEvents.mouseup) {\n this._document!.addEventListener('mouseup', requestedEvents.mouseup);\n }\n if (requestedEvents.mousedrag) {\n this._document!.addEventListener('mousemove', requestedEvents.mousedrag);\n }\n\n return this.cancel(ev);\n }));\n\n this.register(addDisposableDomListener(el, 'wheel', (ev: WheelEvent) => {\n // do nothing, if app side handles wheel itself\n if (requestedEvents.wheel) return;\n\n if (!this.buffer.hasScrollback) {\n // Convert wheel events into up/down events when the buffer does not have scrollback, this\n // enables scrolling in apps hosted in the alt buffer such as vim or tmux.\n const amount = this.viewport!.getLinesScrolled(ev);\n\n // Do nothing if there's no vertical scroll\n if (amount === 0) {\n return;\n }\n\n // Construct and send sequences\n const sequence = C0.ESC + (this.coreService.decPrivateModes.applicationCursorKeys ? 'O' : '[') + (ev.deltaY < 0 ? 'A' : 'B');\n let data = '';\n for (let i = 0; i < Math.abs(amount); i++) {\n data += sequence;\n }\n this.coreService.triggerDataEvent(data, true);\n return this.cancel(ev, true);\n }\n\n // normal viewport scrolling\n // conditionally stop event, if the viewport still had rows to scroll within\n if (this.viewport!.onWheel(ev)) {\n return this.cancel(ev);\n }\n }, { passive: false }));\n\n this.register(addDisposableDomListener(el, 'touchstart', (ev: TouchEvent) => {\n if (this.coreMouseService.areMouseEventsActive) return;\n this.viewport!.onTouchStart(ev);\n return this.cancel(ev);\n }, { passive: true }));\n\n this.register(addDisposableDomListener(el, 'touchmove', (ev: TouchEvent) => {\n if (this.coreMouseService.areMouseEventsActive) return;\n if (!this.viewport!.onTouchMove(ev)) {\n return this.cancel(ev);\n }\n }, { passive: false }));\n }\n\n\n /**\n * Tells the renderer to refresh terminal content between two rows (inclusive) at the next\n * opportunity.\n * @param start The row to start from (between 0 and this.rows - 1).\n * @param end The row to end at (between start and this.rows - 1).\n */\n public refresh(start: number, end: number): void {\n this._renderService?.refreshRows(start, end);\n }\n\n /**\n * Queues linkification for the specified rows.\n * @param start The row to start from (between 0 and this.rows - 1).\n * @param end The row to end at (between start and this.rows - 1).\n */\n private _queueLinkification(start: number, end: number): void {\n this.linkifier?.linkifyRows(start, end);\n }\n\n /**\n * Change the cursor style for different selection modes\n */\n public updateCursorStyle(ev: KeyboardEvent): void {\n if (this._selectionService?.shouldColumnSelect(ev)) {\n this.element!.classList.add('column-select');\n } else {\n this.element!.classList.remove('column-select');\n }\n }\n\n /**\n * Display the cursor element\n */\n private _showCursor(): void {\n if (!this.coreService.isCursorInitialized) {\n this.coreService.isCursorInitialized = true;\n this.refresh(this.buffer.y, this.buffer.y);\n }\n }\n\n public scrollLines(disp: number, suppressScrollEvent?: boolean, source = ScrollSource.TERMINAL): void {\n super.scrollLines(disp, suppressScrollEvent, source);\n this.refresh(0, this.rows - 1);\n }\n\n public paste(data: string): void {\n paste(data, this.textarea!, this.coreService);\n }\n\n /**\n * Attaches a custom key event handler which is run before keys are processed,\n * giving consumers of xterm.js ultimate control as to what keys should be\n * processed by the terminal and what keys should not.\n * @param customKeyEventHandler The custom KeyboardEvent handler to attach.\n * This is a function that takes a KeyboardEvent, allowing consumers to stop\n * propagation and/or prevent the default action. The function returns whether\n * the event should be processed by xterm.js.\n */\n public attachCustomKeyEventHandler(customKeyEventHandler: CustomKeyEventHandler): void {\n this._customKeyEventHandler = customKeyEventHandler;\n }\n\n /**\n * Registers a link matcher, allowing custom link patterns to be matched and\n * handled.\n * @param regex The regular expression to search for, specifically\n * this searches the textContent of the rows. You will want to use \\s to match\n * a space ' ' character for example.\n * @param handler The callback when the link is called.\n * @param options Options for the link matcher.\n * @return The ID of the new matcher, this can be used to deregister.\n */\n public registerLinkMatcher(regex: RegExp, handler: LinkMatcherHandler, options?: ILinkMatcherOptions): number {\n const matcherId = this.linkifier.registerLinkMatcher(regex, handler, options);\n this.refresh(0, this.rows - 1);\n return matcherId;\n }\n\n /**\n * Deregisters a link matcher if it has been registered.\n * @param matcherId The link matcher's ID (returned after register)\n */\n public deregisterLinkMatcher(matcherId: number): void {\n if (this.linkifier.deregisterLinkMatcher(matcherId)) {\n this.refresh(0, this.rows - 1);\n }\n }\n\n public registerLinkProvider(linkProvider: ILinkProvider): IDisposable {\n return this.linkifier2.registerLinkProvider(linkProvider);\n }\n\n public registerCharacterJoiner(handler: CharacterJoinerHandler): number {\n if (!this._characterJoinerService) {\n throw new Error('Terminal must be opened first');\n }\n const joinerId = this._characterJoinerService.register(handler);\n this.refresh(0, this.rows - 1);\n return joinerId;\n }\n\n public deregisterCharacterJoiner(joinerId: number): void {\n if (!this._characterJoinerService) {\n throw new Error('Terminal must be opened first');\n }\n if (this._characterJoinerService.deregister(joinerId)) {\n this.refresh(0, this.rows - 1);\n }\n }\n\n public get markers(): IMarker[] {\n return this.buffer.markers;\n }\n\n public addMarker(cursorYOffset: number): IMarker | undefined {\n // Disallow markers on the alt buffer\n if (this.buffer !== this.buffers.normal) {\n return;\n }\n\n return this.buffer.addMarker(this.buffer.ybase + this.buffer.y + cursorYOffset);\n }\n\n public registerDecoration(decorationOptions: IDecorationOptions): IDecoration | undefined {\n return this._decorationService.registerDecoration(decorationOptions);\n }\n\n /**\n * Gets whether the terminal has an active selection.\n */\n public hasSelection(): boolean {\n return this._selectionService ? this._selectionService.hasSelection : false;\n }\n\n /**\n * Selects text within the terminal.\n * @param column The column the selection starts at..\n * @param row The row the selection starts at.\n * @param length The length of the selection.\n */\n public select(column: number, row: number, length: number): void {\n this._selectionService!.setSelection(column, row, length);\n }\n\n /**\n * Gets the terminal's current selection, this is useful for implementing copy\n * behavior outside of xterm.js.\n */\n public getSelection(): string {\n return this._selectionService ? this._selectionService.selectionText : '';\n }\n\n public getSelectionPosition(): ISelectionPosition | undefined {\n if (!this._selectionService || !this._selectionService.hasSelection) {\n return undefined;\n }\n\n return {\n startColumn: this._selectionService.selectionStart![0],\n startRow: this._selectionService.selectionStart![1],\n endColumn: this._selectionService.selectionEnd![0],\n endRow: this._selectionService.selectionEnd![1]\n };\n }\n\n /**\n * Clears the current terminal selection.\n */\n public clearSelection(): void {\n this._selectionService?.clearSelection();\n }\n\n /**\n * Selects all text within the terminal.\n */\n public selectAll(): void {\n this._selectionService?.selectAll();\n }\n\n public selectLines(start: number, end: number): void {\n this._selectionService?.selectLines(start, end);\n }\n\n /**\n * Handle a keydown event\n * Key Resources:\n * - https://developer.mozilla.org/en-US/docs/DOM/KeyboardEvent\n * @param ev The keydown event to be handled.\n */\n protected _keyDown(event: KeyboardEvent): boolean | undefined {\n this._keyDownHandled = false;\n this._keyDownSeen = true;\n\n if (this._customKeyEventHandler && this._customKeyEventHandler(event) === false) {\n return false;\n }\n\n // Ignore composing with Alt key on Mac when macOptionIsMeta is enabled\n const shouldIgnoreComposition = this.browser.isMac && this.options.macOptionIsMeta && event.altKey;\n\n if (!shouldIgnoreComposition && !this._compositionHelper!.keydown(event)) {\n if (this.buffer.ybase !== this.buffer.ydisp) {\n this._bufferService.scrollToBottom();\n }\n return false;\n }\n\n if (!shouldIgnoreComposition && (event.key === 'Dead' || event.key === 'AltGraph')) {\n this._unprocessedDeadKey = true;\n }\n\n const result = evaluateKeyboardEvent(event, this.coreService.decPrivateModes.applicationCursorKeys, this.browser.isMac, this.options.macOptionIsMeta);\n\n this.updateCursorStyle(event);\n\n if (result.type === KeyboardResultType.PAGE_DOWN || result.type === KeyboardResultType.PAGE_UP) {\n const scrollCount = this.rows - 1;\n this.scrollLines(result.type === KeyboardResultType.PAGE_UP ? -scrollCount : scrollCount);\n return this.cancel(event, true);\n }\n\n if (result.type === KeyboardResultType.SELECT_ALL) {\n this.selectAll();\n }\n\n if (this._isThirdLevelShift(this.browser, event)) {\n return true;\n }\n\n if (result.cancel) {\n // The event is canceled at the end already, is this necessary?\n this.cancel(event, true);\n }\n\n if (!result.key) {\n return true;\n }\n\n // HACK: Process A-Z in the keypress event to fix an issue with macOS IMEs where lower case\n // letters cannot be input while caps lock is on.\n if (event.key && !event.ctrlKey && !event.altKey && !event.metaKey && event.key.length === 1) {\n if (event.key.charCodeAt(0) >= 65 && event.key.charCodeAt(0) <= 90) {\n return true;\n }\n }\n\n if (this._unprocessedDeadKey) {\n this._unprocessedDeadKey = false;\n return true;\n }\n\n // If ctrl+c or enter is being sent, clear out the textarea. This is done so that screen readers\n // will announce deleted characters. This will not work 100% of the time but it should cover\n // most scenarios.\n if (result.key === C0.ETX || result.key === C0.CR) {\n this.textarea!.value = '';\n }\n\n this._onKey.fire({ key: result.key, domEvent: event });\n this._showCursor();\n this.coreService.triggerDataEvent(result.key, true);\n\n // Cancel events when not in screen reader mode so events don't get bubbled up and handled by\n // other listeners. When screen reader mode is enabled, this could cause issues if the event\n // is handled at a higher level, this is a compromise in order to echo keys to the screen\n // reader.\n if (!this.optionsService.rawOptions.screenReaderMode) {\n return this.cancel(event, true);\n }\n\n this._keyDownHandled = true;\n }\n\n private _isThirdLevelShift(browser: IBrowser, ev: KeyboardEvent): boolean {\n const thirdLevelKey =\n (browser.isMac && !this.options.macOptionIsMeta && ev.altKey && !ev.ctrlKey && !ev.metaKey) ||\n (browser.isWindows && ev.altKey && ev.ctrlKey && !ev.metaKey) ||\n (browser.isWindows && ev.getModifierState('AltGraph'));\n\n if (ev.type === 'keypress') {\n return thirdLevelKey;\n }\n\n // Don't invoke for arrows, pageDown, home, backspace, etc. (on non-keypress events)\n return thirdLevelKey && (!ev.keyCode || ev.keyCode > 47);\n }\n\n protected _keyUp(ev: KeyboardEvent): void {\n this._keyDownSeen = false;\n\n if (this._customKeyEventHandler && this._customKeyEventHandler(ev) === false) {\n return;\n }\n\n if (!wasModifierKeyOnlyEvent(ev)) {\n this.focus();\n }\n\n this.updateCursorStyle(ev);\n this._keyPressHandled = false;\n }\n\n /**\n * Handle a keypress event.\n * Key Resources:\n * - https://developer.mozilla.org/en-US/docs/DOM/KeyboardEvent\n * @param ev The keypress event to be handled.\n */\n protected _keyPress(ev: KeyboardEvent): boolean {\n let key;\n\n this._keyPressHandled = false;\n\n if (this._keyDownHandled) {\n return false;\n }\n\n if (this._customKeyEventHandler && this._customKeyEventHandler(ev) === false) {\n return false;\n }\n\n this.cancel(ev);\n\n if (ev.charCode) {\n key = ev.charCode;\n } else if (ev.which === null || ev.which === undefined) {\n key = ev.keyCode;\n } else if (ev.which !== 0 && ev.charCode !== 0) {\n key = ev.which;\n } else {\n return false;\n }\n\n if (!key || (\n (ev.altKey || ev.ctrlKey || ev.metaKey) && !this._isThirdLevelShift(this.browser, ev)\n )) {\n return false;\n }\n\n key = String.fromCharCode(key);\n\n this._onKey.fire({ key, domEvent: ev });\n this._showCursor();\n this.coreService.triggerDataEvent(key, true);\n\n this._keyPressHandled = true;\n\n // The key was handled so clear the dead key state, otherwise certain keystrokes like arrow\n // keys could be ignored\n this._unprocessedDeadKey = false;\n\n return true;\n }\n\n /**\n * Handle an input event.\n * Key Resources:\n * - https://developer.mozilla.org/en-US/docs/Web/API/InputEvent\n * @param ev The input event to be handled.\n */\n protected _inputEvent(ev: InputEvent): boolean {\n // Only support emoji IMEs when screen reader mode is disabled as the event must bubble up to\n // support reading out character input which can doubling up input characters\n // Based on these event traces: https://github.com/xtermjs/xterm.js/issues/3679\n if (ev.data && ev.inputType === 'insertText' && (!ev.composed || !this._keyDownSeen) && !this.optionsService.rawOptions.screenReaderMode) {\n if (this._keyPressHandled) {\n return false;\n }\n\n // The key was handled so clear the dead key state, otherwise certain keystrokes like arrow\n // keys could be ignored\n this._unprocessedDeadKey = false;\n\n const text = ev.data;\n this.coreService.triggerDataEvent(text, true);\n\n this.cancel(ev);\n return true;\n }\n\n return false;\n }\n\n /**\n * Ring the bell.\n * Note: We could do sweet things with webaudio here\n */\n public bell(): void {\n if (this._soundBell()) {\n this._soundService?.playBellSound();\n }\n\n this._onBell.fire();\n\n // if (this._visualBell()) {\n // this.element.classList.add('visual-bell-active');\n // clearTimeout(this._visualBellTimer);\n // this._visualBellTimer = window.setTimeout(() => {\n // this.element.classList.remove('visual-bell-active');\n // }, 200);\n // }\n }\n\n /**\n * Resizes the terminal.\n *\n * @param x The number of columns to resize to.\n * @param y The number of rows to resize to.\n */\n public resize(x: number, y: number): void {\n if (x === this.cols && y === this.rows) {\n // Check if we still need to measure the char size (fixes #785).\n if (this._charSizeService && !this._charSizeService.hasValidSize) {\n this._charSizeService.measure();\n }\n return;\n }\n\n super.resize(x, y);\n }\n\n private _afterResize(x: number, y: number): void {\n this._charSizeService?.measure();\n\n // Sync the scroll area to make sure scroll events don't fire and scroll the viewport to an\n // invalid location\n this.viewport?.syncScrollArea(true);\n }\n\n /**\n * Clear the entire buffer, making the prompt line the new first line.\n */\n public clear(): void {\n if (this.buffer.ybase === 0 && this.buffer.y === 0) {\n // Don't clear if it's already clear\n return;\n }\n this.buffer.clearAllMarkers();\n this.buffer.lines.set(0, this.buffer.lines.get(this.buffer.ybase + this.buffer.y)!);\n this.buffer.lines.length = 1;\n this.buffer.ydisp = 0;\n this.buffer.ybase = 0;\n this.buffer.y = 0;\n for (let i = 1; i < this.rows; i++) {\n this.buffer.lines.push(this.buffer.getBlankLine(DEFAULT_ATTR_DATA));\n }\n this.refresh(0, this.rows - 1);\n this._onScroll.fire({ position: this.buffer.ydisp, source: ScrollSource.TERMINAL });\n }\n\n /**\n * Reset terminal.\n * Note: Calling this directly from JS is synchronous but does not clear\n * input buffers and does not reset the parser, thus the terminal will\n * continue to apply pending input data.\n * If you need in band reset (synchronous with input data) consider\n * using DECSTR (soft reset, CSI ! p) or RIS instead (hard reset, ESC c).\n */\n public reset(): void {\n /**\n * Since _setup handles a full terminal creation, we have to carry forward\n * a few things that should not reset.\n */\n this.options.rows = this.rows;\n this.options.cols = this.cols;\n const customKeyEventHandler = this._customKeyEventHandler;\n\n this._setup();\n super.reset();\n this._selectionService?.reset();\n this._decorationService.reset();\n\n // reattach\n this._customKeyEventHandler = customKeyEventHandler;\n\n // do a full screen refresh\n this.refresh(0, this.rows - 1);\n this.viewport?.syncScrollArea();\n }\n\n public clearTextureAtlas(): void {\n this._renderService?.clearTextureAtlas();\n }\n\n private _reportFocus(): void {\n if (this.element?.classList.contains('focus')) {\n this.coreService.triggerDataEvent(C0.ESC + '[I');\n } else {\n this.coreService.triggerDataEvent(C0.ESC + '[O');\n }\n }\n\n private _reportWindowsOptions(type: WindowsOptionsReportType): void {\n if (!this._renderService) {\n return;\n }\n\n switch (type) {\n case WindowsOptionsReportType.GET_WIN_SIZE_PIXELS:\n const canvasWidth = this._renderService.dimensions.scaledCanvasWidth.toFixed(0);\n const canvasHeight = this._renderService.dimensions.scaledCanvasHeight.toFixed(0);\n this.coreService.triggerDataEvent(`${C0.ESC}[4;${canvasHeight};${canvasWidth}t`);\n break;\n case WindowsOptionsReportType.GET_CELL_SIZE_PIXELS:\n const cellWidth = this._renderService.dimensions.scaledCellWidth.toFixed(0);\n const cellHeight = this._renderService.dimensions.scaledCellHeight.toFixed(0);\n this.coreService.triggerDataEvent(`${C0.ESC}[6;${cellHeight};${cellWidth}t`);\n break;\n }\n }\n\n // TODO: Remove cancel function and cancelEvents option\n public cancel(ev: Event, force?: boolean): boolean | undefined {\n if (!this.options.cancelEvents && !force) {\n return;\n }\n ev.preventDefault();\n ev.stopPropagation();\n return false;\n }\n\n private _visualBell(): boolean {\n return false;\n // return this.options.bellStyle === 'visual' ||\n // this.options.bellStyle === 'both';\n }\n\n private _soundBell(): boolean {\n return this.options.bellStyle === 'sound';\n // return this.options.bellStyle === 'sound' ||\n // this.options.bellStyle === 'both';\n }\n}\n\n/**\n * Helpers\n */\n\nfunction wasModifierKeyOnlyEvent(ev: KeyboardEvent): boolean {\n return ev.keyCode === 16 || // Shift\n ev.keyCode === 17 || // Ctrl\n ev.keyCode === 18; // Alt\n}\n", "/**\n * Copyright (c) 2018 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nconst RENDER_DEBOUNCE_THRESHOLD_MS = 1000; // 1 Second\n\nimport { IRenderDebouncer } from 'browser/Types';\n\n/**\n * Debounces calls to update screen readers to update at most once configurable interval of time.\n */\nexport class TimeBasedDebouncer implements IRenderDebouncer {\n private _rowStart: number | undefined;\n private _rowEnd: number | undefined;\n private _rowCount: number | undefined;\n\n // The last moment that the Terminal was refreshed at\n private _lastRefreshMs = 0;\n // Whether a trailing refresh should be triggered due to a refresh request that was throttled\n private _additionalRefreshRequested = false;\n\n private _refreshTimeoutID: number | undefined;\n\n constructor(\n private _renderCallback: (start: number, end: number) => void,\n private readonly _debounceThresholdMS = RENDER_DEBOUNCE_THRESHOLD_MS\n ) {\n }\n\n public dispose(): void {\n if (this._refreshTimeoutID) {\n clearTimeout(this._refreshTimeoutID);\n }\n }\n\n public refresh(rowStart: number | undefined, rowEnd: number | undefined, rowCount: number): void {\n this._rowCount = rowCount;\n // Get the min/max row start/end for the arg values\n rowStart = rowStart !== undefined ? rowStart : 0;\n rowEnd = rowEnd !== undefined ? rowEnd : this._rowCount - 1;\n // Set the properties to the updated values\n this._rowStart = this._rowStart !== undefined ? Math.min(this._rowStart, rowStart) : rowStart;\n this._rowEnd = this._rowEnd !== undefined ? Math.max(this._rowEnd, rowEnd) : rowEnd;\n\n // Only refresh if the time since last refresh is above a threshold, otherwise wait for\n // enough time to pass before refreshing again.\n const refreshRequestTime: number = Date.now();\n if (refreshRequestTime - this._lastRefreshMs >= this._debounceThresholdMS) {\n // Enough time has lapsed since the last refresh; refresh immediately\n this._lastRefreshMs = refreshRequestTime;\n this._innerRefresh();\n } else if (!this._additionalRefreshRequested) {\n // This is the first additional request throttled; set up trailing refresh\n const elapsed = refreshRequestTime - this._lastRefreshMs;\n const waitPeriodBeforeTrailingRefresh = this._debounceThresholdMS - elapsed;\n this._additionalRefreshRequested = true;\n\n this._refreshTimeoutID = window.setTimeout(() => {\n this._lastRefreshMs = Date.now();\n this._innerRefresh();\n this._additionalRefreshRequested = false;\n this._refreshTimeoutID = undefined; // No longer need to clear the timeout\n }, waitPeriodBeforeTrailingRefresh);\n }\n }\n\n private _innerRefresh(): void {\n // Make sure values are set\n if (this._rowStart === undefined || this._rowEnd === undefined || this._rowCount === undefined) {\n return;\n }\n\n // Clamp values\n const start = Math.max(this._rowStart, 0);\n const end = Math.min(this._rowEnd, this._rowCount - 1);\n\n // Reset debouncer (this happens before render callback as the render could trigger it again)\n this._rowStart = undefined;\n this._rowEnd = undefined;\n\n // Run render callback\n this._renderCallback(start, end);\n }\n}\n\n", "/**\n * Copyright (c) 2016 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { Disposable } from 'common/Lifecycle';\nimport { addDisposableDomListener } from 'browser/Lifecycle';\nimport { IColorSet, IViewport } from 'browser/Types';\nimport { ICharSizeService, IRenderService } from 'browser/services/Services';\nimport { IBufferService, IOptionsService } from 'common/services/Services';\nimport { IBuffer } from 'common/buffer/Types';\nimport { IRenderDimensions } from 'browser/renderer/Types';\n\nconst FALLBACK_SCROLL_BAR_WIDTH = 15;\n\n/**\n * Represents the viewport of a terminal, the visible area within the larger buffer of output.\n * Logic for the virtual scroll bar is included in this object.\n */\nexport class Viewport extends Disposable implements IViewport {\n public scrollBarWidth: number = 0;\n private _currentRowHeight: number = 0;\n private _currentScaledCellHeight: number = 0;\n private _lastRecordedBufferLength: number = 0;\n private _lastRecordedViewportHeight: number = 0;\n private _lastRecordedBufferHeight: number = 0;\n private _lastTouchY: number = 0;\n private _lastScrollTop: number = 0;\n private _activeBuffer: IBuffer;\n private _renderDimensions: IRenderDimensions;\n\n // Stores a partial line amount when scrolling, this is used to keep track of how much of a line\n // is scrolled so we can \"scroll\" over partial lines and feel natural on touchpads. This is a\n // quick fix and could have a more robust solution in place that reset the value when needed.\n private _wheelPartialScroll: number = 0;\n\n private _refreshAnimationFrame: number | null = null;\n private _ignoreNextScrollEvent: boolean = false;\n\n constructor(\n private readonly _scrollLines: (amount: number) => void,\n private readonly _viewportElement: HTMLElement,\n private readonly _scrollArea: HTMLElement,\n private readonly _element: HTMLElement,\n @IBufferService private readonly _bufferService: IBufferService,\n @IOptionsService private readonly _optionsService: IOptionsService,\n @ICharSizeService private readonly _charSizeService: ICharSizeService,\n @IRenderService private readonly _renderService: IRenderService\n ) {\n super();\n\n // Measure the width of the scrollbar. If it is 0 we can assume it's an OSX overlay scrollbar.\n // Unfortunately the overlay scrollbar would be hidden underneath the screen element in that case,\n // therefore we account for a standard amount to make it visible\n this.scrollBarWidth = (this._viewportElement.offsetWidth - this._scrollArea.offsetWidth) || FALLBACK_SCROLL_BAR_WIDTH;\n this.register(addDisposableDomListener(this._viewportElement, 'scroll', this._onScroll.bind(this)));\n\n // Track properties used in performance critical code manually to avoid using slow getters\n this._activeBuffer = this._bufferService.buffer;\n this.register(this._bufferService.buffers.onBufferActivate(e => this._activeBuffer = e.activeBuffer));\n this._renderDimensions = this._renderService.dimensions;\n this.register(this._renderService.onDimensionsChange(e => this._renderDimensions = e));\n\n // Perform this async to ensure the ICharSizeService is ready.\n setTimeout(() => this.syncScrollArea(), 0);\n }\n\n public onThemeChange(colors: IColorSet): void {\n this._viewportElement.style.backgroundColor = colors.background.css;\n }\n\n /**\n * Refreshes row height, setting line-height, viewport height and scroll area height if\n * necessary.\n */\n private _refresh(immediate: boolean): void {\n if (immediate) {\n this._innerRefresh();\n if (this._refreshAnimationFrame !== null) {\n cancelAnimationFrame(this._refreshAnimationFrame);\n }\n return;\n }\n if (this._refreshAnimationFrame === null) {\n this._refreshAnimationFrame = requestAnimationFrame(() => this._innerRefresh());\n }\n }\n\n private _innerRefresh(): void {\n if (this._charSizeService.height > 0) {\n this._currentRowHeight = this._renderService.dimensions.scaledCellHeight / window.devicePixelRatio;\n this._currentScaledCellHeight = this._renderService.dimensions.scaledCellHeight;\n this._lastRecordedViewportHeight = this._viewportElement.offsetHeight;\n const newBufferHeight = Math.round(this._currentRowHeight * this._lastRecordedBufferLength) + (this._lastRecordedViewportHeight - this._renderService.dimensions.canvasHeight);\n if (this._lastRecordedBufferHeight !== newBufferHeight) {\n this._lastRecordedBufferHeight = newBufferHeight;\n this._scrollArea.style.height = this._lastRecordedBufferHeight + 'px';\n }\n }\n\n // Sync scrollTop\n const scrollTop = this._bufferService.buffer.ydisp * this._currentRowHeight;\n if (this._viewportElement.scrollTop !== scrollTop) {\n // Ignore the next scroll event which will be triggered by setting the scrollTop as we do not\n // want this event to scroll the terminal\n this._ignoreNextScrollEvent = true;\n this._viewportElement.scrollTop = scrollTop;\n }\n\n this._refreshAnimationFrame = null;\n }\n\n /**\n * Updates dimensions and synchronizes the scroll area if necessary.\n */\n public syncScrollArea(immediate: boolean = false): void {\n // If buffer height changed\n if (this._lastRecordedBufferLength !== this._bufferService.buffer.lines.length) {\n this._lastRecordedBufferLength = this._bufferService.buffer.lines.length;\n this._refresh(immediate);\n return;\n }\n\n // If viewport height changed\n if (this._lastRecordedViewportHeight !== this._renderService.dimensions.canvasHeight) {\n this._refresh(immediate);\n return;\n }\n\n // If the buffer position doesn't match last scroll top\n if (this._lastScrollTop !== this._activeBuffer.ydisp * this._currentRowHeight) {\n this._refresh(immediate);\n return;\n }\n\n // If row height changed\n if (this._renderDimensions.scaledCellHeight !== this._currentScaledCellHeight) {\n this._refresh(immediate);\n return;\n }\n }\n\n /**\n * Handles scroll events on the viewport, calculating the new viewport and requesting the\n * terminal to scroll to it.\n * @param ev The scroll event.\n */\n private _onScroll(ev: Event): void {\n // Record current scroll top position\n this._lastScrollTop = this._viewportElement.scrollTop;\n\n // Don't attempt to scroll if the element is not visible, otherwise scrollTop will be corrupt\n // which causes the terminal to scroll the buffer to the top\n if (!this._viewportElement.offsetParent) {\n return;\n }\n\n // Ignore the event if it was flagged to ignore (when the source of the event is from Viewport)\n if (this._ignoreNextScrollEvent) {\n this._ignoreNextScrollEvent = false;\n // Still trigger the scroll so lines get refreshed\n this._scrollLines(0);\n return;\n }\n\n const newRow = Math.round(this._lastScrollTop / this._currentRowHeight);\n const diff = newRow - this._bufferService.buffer.ydisp;\n this._scrollLines(diff);\n }\n\n /**\n * Handles bubbling of scroll event in case the viewport has reached top or bottom\n * @param ev The scroll event.\n * @param amount The amount scrolled\n */\n private _bubbleScroll(ev: Event, amount: number): boolean {\n const scrollPosFromTop = this._viewportElement.scrollTop + this._lastRecordedViewportHeight;\n if ((amount < 0 && this._viewportElement.scrollTop !== 0) ||\n (amount > 0 && scrollPosFromTop < this._lastRecordedBufferHeight)) {\n if (ev.cancelable) {\n ev.preventDefault();\n }\n return false;\n }\n return true;\n }\n\n /**\n * Handles mouse wheel events by adjusting the viewport's scrollTop and delegating the actual\n * scrolling to `onScroll`, this event needs to be attached manually by the consumer of\n * `Viewport`.\n * @param ev The mouse wheel event.\n */\n public onWheel(ev: WheelEvent): boolean {\n const amount = this._getPixelsScrolled(ev);\n if (amount === 0) {\n return false;\n }\n this._viewportElement.scrollTop += amount;\n return this._bubbleScroll(ev, amount);\n }\n\n private _getPixelsScrolled(ev: WheelEvent): number {\n // Do nothing if it's not a vertical scroll event\n if (ev.deltaY === 0 || ev.shiftKey) {\n return 0;\n }\n\n // Fallback to WheelEvent.DOM_DELTA_PIXEL\n let amount = this._applyScrollModifier(ev.deltaY, ev);\n if (ev.deltaMode === WheelEvent.DOM_DELTA_LINE) {\n amount *= this._currentRowHeight;\n } else if (ev.deltaMode === WheelEvent.DOM_DELTA_PAGE) {\n amount *= this._currentRowHeight * this._bufferService.rows;\n }\n return amount;\n }\n\n /**\n * Gets the number of pixels scrolled by the mouse event taking into account what type of delta\n * is being used.\n * @param ev The mouse wheel event.\n */\n public getLinesScrolled(ev: WheelEvent): number {\n // Do nothing if it's not a vertical scroll event\n if (ev.deltaY === 0 || ev.shiftKey) {\n return 0;\n }\n\n // Fallback to WheelEvent.DOM_DELTA_LINE\n let amount = this._applyScrollModifier(ev.deltaY, ev);\n if (ev.deltaMode === WheelEvent.DOM_DELTA_PIXEL) {\n amount /= this._currentRowHeight + 0.0; // Prevent integer division\n this._wheelPartialScroll += amount;\n amount = Math.floor(Math.abs(this._wheelPartialScroll)) * (this._wheelPartialScroll > 0 ? 1 : -1);\n this._wheelPartialScroll %= 1;\n } else if (ev.deltaMode === WheelEvent.DOM_DELTA_PAGE) {\n amount *= this._bufferService.rows;\n }\n return amount;\n }\n\n private _applyScrollModifier(amount: number, ev: WheelEvent): number {\n const modifier = this._optionsService.rawOptions.fastScrollModifier;\n // Multiply the scroll speed when the modifier is down\n if ((modifier === 'alt' && ev.altKey) ||\n (modifier === 'ctrl' && ev.ctrlKey) ||\n (modifier === 'shift' && ev.shiftKey)) {\n return amount * this._optionsService.rawOptions.fastScrollSensitivity * this._optionsService.rawOptions.scrollSensitivity;\n }\n\n return amount * this._optionsService.rawOptions.scrollSensitivity;\n }\n\n /**\n * Handles the touchstart event, recording the touch occurred.\n * @param ev The touch event.\n */\n public onTouchStart(ev: TouchEvent): void {\n this._lastTouchY = ev.touches[0].pageY;\n }\n\n /**\n * Handles the touchmove event, scrolling the viewport if the position shifted.\n * @param ev The touch event.\n */\n public onTouchMove(ev: TouchEvent): boolean {\n const deltaY = this._lastTouchY - ev.touches[0].pageY;\n this._lastTouchY = ev.touches[0].pageY;\n if (deltaY === 0) {\n return false;\n }\n this._viewportElement.scrollTop += deltaY;\n return this._bubbleScroll(ev, deltaY);\n }\n}\n", "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { addDisposableDomListener } from 'browser/Lifecycle';\nimport { IRenderService } from 'browser/services/Services';\nimport { Disposable } from 'common/Lifecycle';\nimport { IBufferService, IDecorationService, IInternalDecoration } from 'common/services/Services';\n\nexport class BufferDecorationRenderer extends Disposable {\n private readonly _container: HTMLElement;\n private readonly _decorationElements: Map = new Map();\n\n private _animationFrame: number | undefined;\n private _altBufferIsActive: boolean = false;\n private _dimensionsChanged: boolean = false;\n\n constructor(\n private readonly _screenElement: HTMLElement,\n @IBufferService private readonly _bufferService: IBufferService,\n @IDecorationService private readonly _decorationService: IDecorationService,\n @IRenderService private readonly _renderService: IRenderService\n ) {\n super();\n\n this._container = document.createElement('div');\n this._container.classList.add('xterm-decoration-container');\n this._screenElement.appendChild(this._container);\n\n this.register(this._renderService.onRenderedViewportChange(() => this._queueRefresh()));\n this.register(this._renderService.onDimensionsChange(() => {\n this._dimensionsChanged = true;\n this._queueRefresh();\n }));\n this.register(addDisposableDomListener(window, 'resize', () => this._queueRefresh()));\n this.register(this._bufferService.buffers.onBufferActivate(() => {\n this._altBufferIsActive = this._bufferService.buffer === this._bufferService.buffers.alt;\n }));\n this.register(this._decorationService.onDecorationRegistered(() => this._queueRefresh()));\n this.register(this._decorationService.onDecorationRemoved(decoration => this._removeDecoration(decoration)));\n }\n\n public override dispose(): void {\n this._container.remove();\n this._decorationElements.clear();\n super.dispose();\n }\n\n private _queueRefresh(): void {\n if (this._animationFrame !== undefined) {\n return;\n }\n this._animationFrame = this._renderService.addRefreshCallback(() => {\n this.refreshDecorations();\n this._animationFrame = undefined;\n });\n }\n\n public refreshDecorations(): void {\n for (const decoration of this._decorationService.decorations) {\n this._renderDecoration(decoration);\n }\n this._dimensionsChanged = false;\n }\n\n private _renderDecoration(decoration: IInternalDecoration): void {\n this._refreshStyle(decoration);\n if (this._dimensionsChanged) {\n this._refreshXPosition(decoration);\n }\n }\n\n private _createElement(decoration: IInternalDecoration): HTMLElement {\n const element = document.createElement('div');\n element.classList.add('xterm-decoration');\n element.style.width = `${Math.round((decoration.options.width || 1) * this._renderService.dimensions.actualCellWidth)}px`;\n element.style.height = `${(decoration.options.height || 1) * this._renderService.dimensions.actualCellHeight}px`;\n element.style.top = `${(decoration.marker.line - this._bufferService.buffers.active.ydisp) * this._renderService.dimensions.actualCellHeight}px`;\n element.style.lineHeight = `${this._renderService.dimensions.actualCellHeight}px`;\n\n const x = decoration.options.x ?? 0;\n if (x && x > this._bufferService.cols) {\n // exceeded the container width, so hide\n element.style.display = 'none';\n }\n this._refreshXPosition(decoration, element);\n\n return element;\n }\n\n private _refreshStyle(decoration: IInternalDecoration): void {\n const line = decoration.marker.line - this._bufferService.buffers.active.ydisp;\n if (line < 0 || line >= this._bufferService.rows) {\n // outside of viewport\n if (decoration.element) {\n decoration.element.style.display = 'none';\n decoration.onRenderEmitter.fire(decoration.element);\n }\n } else {\n let element = this._decorationElements.get(decoration);\n if (!element) {\n decoration.onDispose(() => this._removeDecoration(decoration));\n element = this._createElement(decoration);\n decoration.element = element;\n this._decorationElements.set(decoration, element);\n this._container.appendChild(element);\n }\n element.style.top = `${line * this._renderService.dimensions.actualCellHeight}px`;\n element.style.display = this._altBufferIsActive ? 'none' : 'block';\n decoration.onRenderEmitter.fire(element);\n }\n }\n\n private _refreshXPosition(decoration: IInternalDecoration, element: HTMLElement | undefined = decoration.element): void {\n if (!element) {\n return;\n }\n const x = decoration.options.x ?? 0;\n if ((decoration.options.anchor || 'left') === 'right') {\n element.style.right = x ? `${x * this._renderService.dimensions.actualCellWidth}px` : '';\n } else {\n element.style.left = x ? `${x * this._renderService.dimensions.actualCellWidth}px` : '';\n }\n }\n\n private _removeDecoration(decoration: IInternalDecoration): void {\n this._decorationElements.get(decoration)?.remove();\n this._decorationElements.delete(decoration);\n }\n}\n", "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { IInternalDecoration } from 'common/services/Services';\n\nexport interface IColorZoneStore {\n readonly zones: IColorZone[];\n clear(): void;\n addDecoration(decoration: IInternalDecoration): void;\n /**\n * Sets the amount of padding in lines that will be added between zones, if new lines intersect\n * the padding they will be merged into the same zone.\n */\n setPadding(padding: { [position: string]: number }): void;\n}\n\nexport interface IColorZone {\n /** Color in a format supported by canvas' fillStyle. */\n color: string;\n position: 'full' | 'left' | 'center' | 'right' | undefined;\n startBufferLine: number;\n endBufferLine: number;\n}\n\ninterface IMinimalDecorationForColorZone {\n marker: Pick;\n options: Pick;\n}\n\nexport class ColorZoneStore implements IColorZoneStore {\n private _zones: IColorZone[] = [];\n\n // The zone pool is used to keep zone objects from being freed between clearing the color zone\n // store and fetching the zones. This helps reduce GC pressure since the color zones are\n // accumulated on potentially every scroll event.\n private _zonePool: IColorZone[] = [];\n private _zonePoolIndex = 0;\n\n private _linePadding: { [position: string]: number } = {\n full: 0,\n left: 0,\n center: 0,\n right: 0\n };\n\n public get zones(): IColorZone[] {\n // Trim the zone pool to free unused memory\n this._zonePool.length = Math.min(this._zonePool.length, this._zones.length);\n return this._zones;\n }\n\n public clear(): void {\n this._zones.length = 0;\n this._zonePoolIndex = 0;\n }\n\n public addDecoration(decoration: IMinimalDecorationForColorZone): void {\n if (!decoration.options.overviewRulerOptions) {\n return;\n }\n for (const z of this._zones) {\n if (z.color === decoration.options.overviewRulerOptions.color &&\n z.position === decoration.options.overviewRulerOptions.position) {\n if (this._lineIntersectsZone(z, decoration.marker.line)) {\n return;\n }\n if (this._lineAdjacentToZone(z, decoration.marker.line, decoration.options.overviewRulerOptions.position)) {\n this._addLineToZone(z, decoration.marker.line);\n return;\n }\n }\n }\n // Create using zone pool if possible\n if (this._zonePoolIndex < this._zonePool.length) {\n this._zonePool[this._zonePoolIndex].color = decoration.options.overviewRulerOptions.color;\n this._zonePool[this._zonePoolIndex].position = decoration.options.overviewRulerOptions.position;\n this._zonePool[this._zonePoolIndex].startBufferLine = decoration.marker.line;\n this._zonePool[this._zonePoolIndex].endBufferLine = decoration.marker.line;\n this._zones.push(this._zonePool[this._zonePoolIndex++]);\n return;\n }\n // Create\n this._zones.push({\n color: decoration.options.overviewRulerOptions.color,\n position: decoration.options.overviewRulerOptions.position,\n startBufferLine: decoration.marker.line,\n endBufferLine: decoration.marker.line\n });\n this._zonePool.push(this._zones[this._zones.length - 1]);\n this._zonePoolIndex++;\n }\n\n public setPadding(padding: { [position: string]: number }): void {\n this._linePadding = padding;\n }\n\n private _lineIntersectsZone(zone: IColorZone, line: number): boolean {\n return (\n line >= zone.startBufferLine &&\n line <= zone.endBufferLine\n );\n }\n\n private _lineAdjacentToZone(zone: IColorZone, line: number, position: IColorZone['position']): boolean {\n return (\n (line >= zone.startBufferLine - this._linePadding[position || 'full']) &&\n (line <= zone.endBufferLine + this._linePadding[position || 'full'])\n );\n }\n\n private _addLineToZone(zone: IColorZone, line: number): void {\n zone.startBufferLine = Math.min(zone.startBufferLine, line);\n zone.endBufferLine = Math.max(zone.endBufferLine, line);\n }\n}\n", "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { ColorZoneStore, IColorZone, IColorZoneStore } from 'browser/decorations/ColorZoneStore';\nimport { addDisposableDomListener } from 'browser/Lifecycle';\nimport { IRenderService } from 'browser/services/Services';\nimport { Disposable } from 'common/Lifecycle';\nimport { IBufferService, IDecorationService, IInternalDecoration, IOptionsService } from 'common/services/Services';\n\n// Helper objects to avoid excessive calculation and garbage collection during rendering. These are\n// static values for each render and can be accessed using the decoration position as the key.\nconst drawHeight = {\n full: 0,\n left: 0,\n center: 0,\n right: 0\n};\nconst drawWidth = {\n full: 0,\n left: 0,\n center: 0,\n right: 0\n};\nconst drawX = {\n full: 0,\n left: 0,\n center: 0,\n right: 0\n};\n\nexport class OverviewRulerRenderer extends Disposable {\n private readonly _canvas: HTMLCanvasElement;\n private readonly _ctx: CanvasRenderingContext2D;\n private readonly _colorZoneStore: IColorZoneStore = new ColorZoneStore();\n private get _width(): number {\n return this._optionsService.options.overviewRulerWidth || 0;\n }\n private _animationFrame: number | undefined;\n\n private _shouldUpdateDimensions: boolean | undefined = true;\n private _shouldUpdateAnchor: boolean | undefined = true;\n private _lastKnownBufferLength: number = 0;\n\n private _containerHeight: number | undefined;\n\n constructor(\n private readonly _viewportElement: HTMLElement,\n private readonly _screenElement: HTMLElement,\n @IBufferService private readonly _bufferService: IBufferService,\n @IDecorationService private readonly _decorationService: IDecorationService,\n @IRenderService private readonly _renderService: IRenderService,\n @IOptionsService private readonly _optionsService: IOptionsService\n ) {\n super();\n this._canvas = document.createElement('canvas');\n this._canvas.classList.add('xterm-decoration-overview-ruler');\n this._refreshCanvasDimensions();\n this._viewportElement.parentElement?.insertBefore(this._canvas, this._viewportElement);\n const ctx = this._canvas.getContext('2d');\n if (!ctx) {\n throw new Error('Ctx cannot be null');\n } else {\n this._ctx = ctx;\n }\n this._registerDecorationListeners();\n this._registerBufferChangeListeners();\n this._registerDimensionChangeListeners();\n }\n\n /**\n * On decoration add or remove, redraw\n */\n private _registerDecorationListeners(): void {\n this.register(this._decorationService.onDecorationRegistered(() => this._queueRefresh(undefined, true)));\n this.register(this._decorationService.onDecorationRemoved(() => this._queueRefresh(undefined, true)));\n }\n\n /**\n * On buffer change, redraw\n * and hide the canvas if the alt buffer is active\n */\n private _registerBufferChangeListeners(): void {\n this.register(this._renderService.onRenderedViewportChange(() => this._queueRefresh()));\n this.register(this._bufferService.buffers.onBufferActivate(() => {\n this._canvas!.style.display = this._bufferService.buffer === this._bufferService.buffers.alt ? 'none' : 'block';\n }));\n this.register(this._bufferService.onScroll(() => {\n if (this._lastKnownBufferLength !== this._bufferService.buffers.normal.lines.length) {\n this._refreshDrawHeightConstants();\n this._refreshColorZonePadding();\n }\n }));\n }\n /**\n * On dimension change, update canvas dimensions\n * and then redraw\n */\n private _registerDimensionChangeListeners(): void {\n // container height changed\n this.register(this._renderService.onRender((): void => {\n if (!this._containerHeight || this._containerHeight !== this._screenElement.clientHeight) {\n this._queueRefresh(true);\n this._containerHeight = this._screenElement.clientHeight;\n }\n }));\n // overview ruler width changed\n this.register(this._optionsService.onOptionChange(o => {\n if (o === 'overviewRulerWidth') {\n this._queueRefresh(true);\n }\n }));\n // device pixel ratio changed\n this.register(addDisposableDomListener(window, 'resize', () => {\n this._queueRefresh(true);\n }));\n // set the canvas dimensions\n this._queueRefresh(true);\n }\n\n public override dispose(): void {\n this._canvas?.remove();\n super.dispose();\n }\n\n private _refreshDrawConstants(): void {\n // width\n const outerWidth = Math.floor(this._canvas.width / 3);\n const innerWidth = Math.ceil(this._canvas.width / 3);\n drawWidth.full = this._canvas.width;\n drawWidth.left = outerWidth;\n drawWidth.center = innerWidth;\n drawWidth.right = outerWidth;\n // height\n this._refreshDrawHeightConstants();\n // x\n drawX.full = 0;\n drawX.left = 0;\n drawX.center = drawWidth.left;\n drawX.right = drawWidth.left + drawWidth.center;\n }\n\n private _refreshDrawHeightConstants(): void {\n drawHeight.full = Math.round(2 * window.devicePixelRatio);\n // Calculate actual pixels per line\n const pixelsPerLine = this._canvas.height / this._bufferService.buffer.lines.length;\n // Clamp actual pixels within a range\n const nonFullHeight = Math.round(Math.max(Math.min(pixelsPerLine, 12), 6) * window.devicePixelRatio);\n drawHeight.left = nonFullHeight;\n drawHeight.center = nonFullHeight;\n drawHeight.right = nonFullHeight;\n }\n\n private _refreshColorZonePadding(): void {\n this._colorZoneStore.setPadding({\n full: Math.floor(this._bufferService.buffers.active.lines.length / (this._canvas.height - 1) * drawHeight.full),\n left: Math.floor(this._bufferService.buffers.active.lines.length / (this._canvas.height - 1) * drawHeight.left),\n center: Math.floor(this._bufferService.buffers.active.lines.length / (this._canvas.height - 1) * drawHeight.center),\n right: Math.floor(this._bufferService.buffers.active.lines.length / (this._canvas.height - 1) * drawHeight.right)\n });\n this._lastKnownBufferLength = this._bufferService.buffers.normal.lines.length;\n }\n\n private _refreshCanvasDimensions(): void {\n this._canvas.style.width = `${this._width}px`;\n this._canvas.width = Math.round(this._width * window.devicePixelRatio);\n this._canvas.style.height = `${this._screenElement.clientHeight}px`;\n this._canvas.height = Math.round(this._screenElement.clientHeight * window.devicePixelRatio);\n this._refreshDrawConstants();\n this._refreshColorZonePadding();\n }\n\n private _refreshDecorations(): void {\n if (this._shouldUpdateDimensions) {\n this._refreshCanvasDimensions();\n }\n this._ctx.clearRect(0, 0, this._canvas.width, this._canvas.height);\n this._colorZoneStore.clear();\n for (const decoration of this._decorationService.decorations) {\n this._colorZoneStore.addDecoration(decoration);\n }\n this._ctx.lineWidth = 1;\n const zones = this._colorZoneStore.zones;\n for (const zone of zones) {\n if (zone.position !== 'full') {\n this._renderColorZone(zone);\n }\n }\n for (const zone of zones) {\n if (zone.position === 'full') {\n this._renderColorZone(zone);\n }\n }\n this._shouldUpdateDimensions = false;\n this._shouldUpdateAnchor = false;\n }\n\n private _renderColorZone(zone: IColorZone): void {\n // TODO: Is _decorationElements needed?\n\n this._ctx.fillStyle = zone.color;\n this._ctx.fillRect(\n /* x */ drawX[zone.position || 'full'],\n /* y */ Math.round(\n (this._canvas.height - 1) * // -1 to ensure at least 2px are allowed for decoration on last line\n (zone.startBufferLine / this._bufferService.buffers.active.lines.length) - drawHeight[zone.position || 'full'] / 2\n ),\n /* w */ drawWidth[zone.position || 'full'],\n /* h */ Math.round(\n (this._canvas.height - 1) * // -1 to ensure at least 2px are allowed for decoration on last line\n ((zone.endBufferLine - zone.startBufferLine) / this._bufferService.buffers.active.lines.length) + drawHeight[zone.position || 'full']\n )\n );\n }\n\n private _queueRefresh(updateCanvasDimensions?: boolean, updateAnchor?: boolean): void {\n this._shouldUpdateDimensions = updateCanvasDimensions || this._shouldUpdateDimensions;\n this._shouldUpdateAnchor = updateAnchor || this._shouldUpdateAnchor;\n if (this._animationFrame !== undefined) {\n return;\n }\n this._animationFrame = window.requestAnimationFrame(() => {\n this._refreshDecorations();\n this._animationFrame = undefined;\n });\n }\n}\n", "/**\n * Copyright (c) 2016 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IRenderService } from 'browser/services/Services';\nimport { IBufferService, ICoreService, IOptionsService } from 'common/services/Services';\n\ninterface IPosition {\n start: number;\n end: number;\n}\n\n/**\n * Encapsulates the logic for handling compositionstart, compositionupdate and compositionend\n * events, displaying the in-progress composition to the UI and forwarding the final composition\n * to the handler.\n */\nexport class CompositionHelper {\n /**\n * Whether input composition is currently happening, eg. via a mobile keyboard, speech input or\n * IME. This variable determines whether the compositionText should be displayed on the UI.\n */\n private _isComposing: boolean;\n public get isComposing(): boolean { return this._isComposing; }\n\n /**\n * The position within the input textarea's value of the current composition.\n */\n private _compositionPosition: IPosition;\n\n /**\n * Whether a composition is in the process of being sent, setting this to false will cancel any\n * in-progress composition.\n */\n private _isSendingComposition: boolean;\n\n /**\n * Data already sent due to keydown event.\n */\n private _dataAlreadySent: string;\n\n constructor(\n private readonly _textarea: HTMLTextAreaElement,\n private readonly _compositionView: HTMLElement,\n @IBufferService private readonly _bufferService: IBufferService,\n @IOptionsService private readonly _optionsService: IOptionsService,\n @ICoreService private readonly _coreService: ICoreService,\n @IRenderService private readonly _renderService: IRenderService\n ) {\n this._isComposing = false;\n this._isSendingComposition = false;\n this._compositionPosition = { start: 0, end: 0 };\n this._dataAlreadySent = '';\n }\n\n /**\n * Handles the compositionstart event, activating the composition view.\n */\n public compositionstart(): void {\n this._isComposing = true;\n this._compositionPosition.start = this._textarea.value.length;\n this._compositionView.textContent = '';\n this._dataAlreadySent = '';\n this._compositionView.classList.add('active');\n }\n\n /**\n * Handles the compositionupdate event, updating the composition view.\n * @param ev The event.\n */\n public compositionupdate(ev: Pick): void {\n this._compositionView.textContent = ev.data;\n this.updateCompositionElements();\n setTimeout(() => {\n this._compositionPosition.end = this._textarea.value.length;\n }, 0);\n }\n\n /**\n * Handles the compositionend event, hiding the composition view and sending the composition to\n * the handler.\n */\n public compositionend(): void {\n this._finalizeComposition(true);\n }\n\n /**\n * Handles the keydown event, routing any necessary events to the CompositionHelper functions.\n * @param ev The keydown event.\n * @return Whether the Terminal should continue processing the keydown event.\n */\n public keydown(ev: KeyboardEvent): boolean {\n if (this._isComposing || this._isSendingComposition) {\n if (ev.keyCode === 229) {\n // Continue composing if the keyCode is the \"composition character\"\n return false;\n }\n if (ev.keyCode === 16 || ev.keyCode === 17 || ev.keyCode === 18) {\n // Continue composing if the keyCode is a modifier key\n return false;\n }\n // Finish composition immediately. This is mainly here for the case where enter is\n // pressed and the handler needs to be triggered before the command is executed.\n this._finalizeComposition(false);\n }\n\n if (ev.keyCode === 229) {\n // If the \"composition character\" is used but gets to this point it means a non-composition\n // character (eg. numbers and punctuation) was pressed when the IME was active.\n this._handleAnyTextareaChanges();\n return false;\n }\n\n return true;\n }\n\n /**\n * Finalizes the composition, resuming regular input actions. This is called when a composition\n * is ending.\n * @param waitForPropagation Whether to wait for events to propagate before sending\n * the input. This should be false if a non-composition keystroke is entered before the\n * compositionend event is triggered, such as enter, so that the composition is sent before\n * the command is executed.\n */\n private _finalizeComposition(waitForPropagation: boolean): void {\n this._compositionView.classList.remove('active');\n this._isComposing = false;\n\n if (!waitForPropagation) {\n // Cancel any delayed composition send requests and send the input immediately.\n this._isSendingComposition = false;\n const input = this._textarea.value.substring(this._compositionPosition.start, this._compositionPosition.end);\n this._coreService.triggerDataEvent(input, true);\n } else {\n // Make a deep copy of the composition position here as a new compositionstart event may\n // fire before the setTimeout executes.\n const currentCompositionPosition = {\n start: this._compositionPosition.start,\n end: this._compositionPosition.end\n };\n\n // Since composition* events happen before the changes take place in the textarea on most\n // browsers, use a setTimeout with 0ms time to allow the native compositionend event to\n // complete. This ensures the correct character is retrieved.\n // This solution was used because:\n // - The compositionend event's data property is unreliable, at least on Chromium\n // - The last compositionupdate event's data property does not always accurately describe\n // the character, a counter example being Korean where an ending consonsant can move to\n // the following character if the following input is a vowel.\n this._isSendingComposition = true;\n setTimeout(() => {\n // Ensure that the input has not already been sent\n if (this._isSendingComposition) {\n this._isSendingComposition = false;\n let input;\n // Add length of data already sent due to keydown event,\n // otherwise input characters can be duplicated. (Issue #3191)\n currentCompositionPosition.start += this._dataAlreadySent.length;\n if (this._isComposing) {\n // Use the end position to get the string if a new composition has started.\n input = this._textarea.value.substring(currentCompositionPosition.start, currentCompositionPosition.end);\n } else {\n // Don't use the end position here in order to pick up any characters after the\n // composition has finished, for example when typing a non-composition character\n // (eg. 2) after a composition character.\n input = this._textarea.value.substring(currentCompositionPosition.start);\n }\n if (input.length > 0) {\n this._coreService.triggerDataEvent(input, true);\n }\n }\n }, 0);\n }\n }\n\n /**\n * Apply any changes made to the textarea after the current event chain is allowed to complete.\n * This should be called when not currently composing but a keydown event with the \"composition\n * character\" (229) is triggered, in order to allow non-composition text to be entered when an\n * IME is active.\n */\n private _handleAnyTextareaChanges(): void {\n const oldValue = this._textarea.value;\n setTimeout(() => {\n // Ignore if a composition has started since the timeout\n if (!this._isComposing) {\n const newValue = this._textarea.value;\n const diff = newValue.replace(oldValue, '');\n if (diff.length > 0) {\n this._dataAlreadySent = diff;\n this._coreService.triggerDataEvent(diff, true);\n }\n }\n }, 0);\n }\n\n /**\n * Positions the composition view on top of the cursor and the textarea just below it (so the\n * IME helper dialog is positioned correctly).\n * @param dontRecurse Whether to use setTimeout to recursively trigger another update, this is\n * necessary as the IME events across browsers are not consistently triggered.\n */\n public updateCompositionElements(dontRecurse?: boolean): void {\n if (!this._isComposing) {\n return;\n }\n\n if (this._bufferService.buffer.isCursorInViewport) {\n const cursorX = Math.min(this._bufferService.buffer.x, this._bufferService.cols - 1);\n\n const cellHeight = this._renderService.dimensions.actualCellHeight;\n const cursorTop = this._bufferService.buffer.y * this._renderService.dimensions.actualCellHeight;\n const cursorLeft = cursorX * this._renderService.dimensions.actualCellWidth;\n\n this._compositionView.style.left = cursorLeft + 'px';\n this._compositionView.style.top = cursorTop + 'px';\n this._compositionView.style.height = cellHeight + 'px';\n this._compositionView.style.lineHeight = cellHeight + 'px';\n this._compositionView.style.fontFamily = this._optionsService.rawOptions.fontFamily;\n this._compositionView.style.fontSize = this._optionsService.rawOptions.fontSize + 'px';\n // Sync the textarea to the exact position of the composition view so the IME knows where the\n // text is.\n const compositionViewBounds = this._compositionView.getBoundingClientRect();\n this._textarea.style.left = cursorLeft + 'px';\n this._textarea.style.top = cursorTop + 'px';\n // Ensure the text area is at least 1x1, otherwise certain IMEs may break\n this._textarea.style.width = Math.max(compositionViewBounds.width, 1) + 'px';\n this._textarea.style.height = Math.max(compositionViewBounds.height, 1) + 'px';\n this._textarea.style.lineHeight = compositionViewBounds.height + 'px';\n }\n\n if (!dontRecurse) {\n setTimeout(() => this.updateCompositionElements(true), 0);\n }\n }\n}\n", "/**\n * Copyright (c) 2017 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nexport function getCoordsRelativeToElement(window: Pick, event: {clientX: number, clientY: number}, element: HTMLElement): [number, number] {\n const rect = element.getBoundingClientRect();\n const elementStyle = window.getComputedStyle(element);\n const leftPadding = parseInt(elementStyle.getPropertyValue('padding-left'));\n const topPadding = parseInt(elementStyle.getPropertyValue('padding-top'));\n return [\n event.clientX - rect.left - leftPadding,\n event.clientY - rect.top - topPadding\n ];\n}\n\n/**\n * Gets coordinates within the terminal for a particular mouse event. The result\n * is returned as an array in the form [x, y] instead of an object as it's a\n * little faster and this function is used in some low level code.\n * @param event The mouse event.\n * @param element The terminal's container element.\n * @param colCount The number of columns in the terminal.\n * @param rowCount The number of rows n the terminal.\n * @param isSelection Whether the request is for the selection or not. This will\n * apply an offset to the x value such that the left half of the cell will\n * select that cell and the right half will select the next cell.\n */\nexport function getCoords(window: Pick, event: {clientX: number, clientY: number}, element: HTMLElement, colCount: number, rowCount: number, hasValidCharSize: boolean, actualCellWidth: number, actualCellHeight: number, isSelection?: boolean): [number, number] | undefined {\n // Coordinates cannot be measured if there are no valid\n if (!hasValidCharSize) {\n return undefined;\n }\n\n const coords = getCoordsRelativeToElement(window, event, element);\n if (!coords) {\n return undefined;\n }\n\n coords[0] = Math.ceil((coords[0] + (isSelection ? actualCellWidth / 2 : 0)) / actualCellWidth);\n coords[1] = Math.ceil(coords[1] / actualCellHeight);\n\n // Ensure coordinates are within the terminal viewport. Note that selections\n // need an addition point of precision to cover the end point (as characters\n // cover half of one char and half of the next).\n coords[0] = Math.min(Math.max(coords[0], 1), colCount + (isSelection ? 1 : 0));\n coords[1] = Math.min(Math.max(coords[1], 1), rowCount);\n\n return coords;\n}\n\n/**\n * Gets coordinates within the terminal for a particular mouse event, wrapping\n * them to the bounds of the terminal and adding 32 to both the x and y values\n * as expected by xterm.\n */\nexport function getRawByteCoords(coords: [number, number] | undefined): { x: number, y: number } | undefined {\n if (!coords) {\n return undefined;\n }\n\n // xterm sends raw bytes and starts at 32 (SP) for each.\n return { x: coords[0] + 32, y: coords[1] + 32 };\n}\n", "/**\n * Copyright (c) 2018 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { C0 } from 'common/data/EscapeSequences';\nimport { IBufferService } from 'common/services/Services';\n\nconst enum Direction {\n UP = 'A',\n DOWN = 'B',\n RIGHT = 'C',\n LEFT = 'D'\n}\n\n/**\n * Concatenates all the arrow sequences together.\n * Resets the starting row to an unwrapped row, moves to the requested row,\n * then moves to requested col.\n */\nexport function moveToCellSequence(targetX: number, targetY: number, bufferService: IBufferService, applicationCursor: boolean): string {\n const startX = bufferService.buffer.x;\n const startY = bufferService.buffer.y;\n\n // The alt buffer should try to navigate between rows\n if (!bufferService.buffer.hasScrollback) {\n return resetStartingRow(startX, startY, targetX, targetY, bufferService, applicationCursor) +\n moveToRequestedRow(startY, targetY, bufferService, applicationCursor) +\n moveToRequestedCol(startX, startY, targetX, targetY, bufferService, applicationCursor);\n }\n\n // Only move horizontally for the normal buffer\n let direction;\n if (startY === targetY) {\n direction = startX > targetX ? Direction.LEFT : Direction.RIGHT;\n return repeat(Math.abs(startX - targetX), sequence(direction, applicationCursor));\n }\n direction = startY > targetY ? Direction.LEFT : Direction.RIGHT;\n const rowDifference = Math.abs(startY - targetY);\n const cellsToMove = colsFromRowEnd(startY > targetY ? targetX : startX, bufferService) +\n (rowDifference - 1) * bufferService.cols + 1 /* wrap around 1 row */ +\n colsFromRowBeginning(startY > targetY ? startX : targetX, bufferService);\n return repeat(cellsToMove, sequence(direction, applicationCursor));\n}\n\n/**\n * Find the number of cols from a row beginning to a col.\n */\nfunction colsFromRowBeginning(currX: number, bufferService: IBufferService): number {\n return currX - 1;\n}\n\n/**\n * Find the number of cols from a col to row end.\n */\nfunction colsFromRowEnd(currX: number, bufferService: IBufferService): number {\n return bufferService.cols - currX;\n}\n\n/**\n * If the initial position of the cursor is on a row that is wrapped, move the\n * cursor up to the first row that is not wrapped to have accurate vertical\n * positioning.\n */\nfunction resetStartingRow(startX: number, startY: number, targetX: number, targetY: number, bufferService: IBufferService, applicationCursor: boolean): string {\n if (moveToRequestedRow(startY, targetY, bufferService, applicationCursor).length === 0) {\n return '';\n }\n return repeat(bufferLine(\n startX, startY, startX,\n startY - wrappedRowsForRow(bufferService, startY), false, bufferService\n ).length, sequence(Direction.LEFT, applicationCursor));\n}\n\n/**\n * Using the reset starting and ending row, move to the requested row,\n * ignoring wrapped rows\n */\nfunction moveToRequestedRow(startY: number, targetY: number, bufferService: IBufferService, applicationCursor: boolean): string {\n const startRow = startY - wrappedRowsForRow(bufferService, startY);\n const endRow = targetY - wrappedRowsForRow(bufferService, targetY);\n\n const rowsToMove = Math.abs(startRow - endRow) - wrappedRowsCount(startY, targetY, bufferService);\n\n return repeat(rowsToMove, sequence(verticalDirection(startY, targetY), applicationCursor));\n}\n\n/**\n * Move to the requested col on the ending row\n */\nfunction moveToRequestedCol(startX: number, startY: number, targetX: number, targetY: number, bufferService: IBufferService, applicationCursor: boolean): string {\n let startRow;\n if (moveToRequestedRow(startY, targetY, bufferService, applicationCursor).length > 0) {\n startRow = targetY - wrappedRowsForRow(bufferService, targetY);\n } else {\n startRow = startY;\n }\n\n const endRow = targetY;\n const direction = horizontalDirection(startX, startY, targetX, targetY, bufferService, applicationCursor);\n\n return repeat(bufferLine(\n startX, startRow, targetX, endRow,\n direction === Direction.RIGHT, bufferService\n ).length, sequence(direction, applicationCursor));\n}\n\n/**\n * Utility functions\n */\n\n/**\n * Calculates the number of wrapped rows between the unwrapped starting and\n * ending rows. These rows need to ignored since the cursor skips over them.\n */\nfunction wrappedRowsCount(startY: number, targetY: number, bufferService: IBufferService): number {\n let wrappedRows = 0;\n const startRow = startY - wrappedRowsForRow(bufferService, startY);\n const endRow = targetY - wrappedRowsForRow(bufferService, targetY);\n\n for (let i = 0; i < Math.abs(startRow - endRow); i++) {\n const direction = verticalDirection(startY, targetY) === Direction.UP ? -1 : 1;\n const line = bufferService.buffer.lines.get(startRow + (direction * i));\n if (line?.isWrapped) {\n wrappedRows++;\n }\n }\n\n return wrappedRows;\n}\n\n/**\n * Calculates the number of wrapped rows that make up a given row.\n * @param currentRow The row to determine how many wrapped rows make it up\n */\nfunction wrappedRowsForRow(bufferService: IBufferService, currentRow: number): number {\n let rowCount = 0;\n let line = bufferService.buffer.lines.get(currentRow);\n let lineWraps = line?.isWrapped;\n\n while (lineWraps && currentRow >= 0 && currentRow < bufferService.rows) {\n rowCount++;\n line = bufferService.buffer.lines.get(--currentRow);\n lineWraps = line?.isWrapped;\n }\n\n return rowCount;\n}\n\n/**\n * Direction determiners\n */\n\n/**\n * Determines if the right or left arrow is needed\n */\nfunction horizontalDirection(startX: number, startY: number, targetX: number, targetY: number, bufferService: IBufferService, applicationCursor: boolean): Direction {\n let startRow;\n if (moveToRequestedRow(targetX, targetY, bufferService, applicationCursor).length > 0) {\n startRow = targetY - wrappedRowsForRow(bufferService, targetY);\n } else {\n startRow = startY;\n }\n\n if ((startX < targetX &&\n startRow <= targetY) || // down/right or same y/right\n (startX >= targetX &&\n startRow < targetY)) { // down/left or same y/left\n return Direction.RIGHT;\n }\n return Direction.LEFT;\n}\n\n/**\n * Determines if the up or down arrow is needed\n */\nfunction verticalDirection(startY: number, targetY: number): Direction {\n return startY > targetY ? Direction.UP : Direction.DOWN;\n}\n\n/**\n * Constructs the string of chars in the buffer from a starting row and col\n * to an ending row and col\n * @param startCol The starting column position\n * @param startRow The starting row position\n * @param endCol The ending column position\n * @param endRow The ending row position\n * @param forward Direction to move\n */\nfunction bufferLine(\n startCol: number,\n startRow: number,\n endCol: number,\n endRow: number,\n forward: boolean,\n bufferService: IBufferService\n): string {\n let currentCol = startCol;\n let currentRow = startRow;\n let bufferStr = '';\n\n while (currentCol !== endCol || currentRow !== endRow) {\n currentCol += forward ? 1 : -1;\n\n if (forward && currentCol > bufferService.cols - 1) {\n bufferStr += bufferService.buffer.translateBufferLineToString(\n currentRow, false, startCol, currentCol\n );\n currentCol = 0;\n startCol = 0;\n currentRow++;\n } else if (!forward && currentCol < 0) {\n bufferStr += bufferService.buffer.translateBufferLineToString(\n currentRow, false, 0, startCol + 1\n );\n currentCol = bufferService.cols - 1;\n startCol = currentCol;\n currentRow--;\n }\n }\n\n return bufferStr + bufferService.buffer.translateBufferLineToString(\n currentRow, false, startCol, currentCol\n );\n}\n\n/**\n * Constructs the escape sequence for clicking an arrow\n * @param direction The direction to move\n */\nfunction sequence(direction: Direction, applicationCursor: boolean): string {\n const mod = applicationCursor ? 'O' : '[';\n return C0.ESC + mod + direction;\n}\n\n/**\n * Returns a string repeated a given number of times\n * Polyfill from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/repeat\n * @param count The number of times to repeat the string\n * @param string The string that is to be repeated\n */\nfunction repeat(count: number, str: string): string {\n count = Math.floor(count);\n let rpt = '';\n for (let i = 0; i < count; i++) {\n rpt += str;\n }\n return rpt;\n}\n", "/**\n * Copyright (c) 2018 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { Terminal as ITerminalApi, IMarker, IDisposable, ILinkMatcherOptions, ITheme, ILocalizableStrings, ITerminalAddon, ISelectionPosition, IBufferNamespace as IBufferNamespaceApi, IParser, ILinkProvider, IUnicodeHandling, FontWeight, IModes, IDecorationOptions, IDecoration } from 'xterm';\nimport { ITerminal } from 'browser/Types';\nimport { Terminal as TerminalCore } from 'browser/Terminal';\nimport * as Strings from 'browser/LocalizableStrings';\nimport { IEvent } from 'common/EventEmitter';\nimport { ParserApi } from 'common/public/ParserApi';\nimport { UnicodeApi } from 'common/public/UnicodeApi';\nimport { AddonManager } from 'common/public/AddonManager';\nimport { BufferNamespaceApi } from 'common/public/BufferNamespaceApi';\nimport { ITerminalOptions } from 'common/Types';\n\n/**\n * The set of options that only have an effect when set in the Terminal constructor.\n */\nconst CONSTRUCTOR_ONLY_OPTIONS = ['cols', 'rows'];\n\nexport class Terminal implements ITerminalApi {\n private _core: ITerminal;\n private _addonManager: AddonManager;\n private _parser: IParser | undefined;\n private _buffer: BufferNamespaceApi | undefined;\n private _publicOptions: ITerminalOptions;\n\n constructor(options?: ITerminalOptions) {\n this._core = new TerminalCore(options);\n this._addonManager = new AddonManager();\n\n this._publicOptions = { ... this._core.options };\n const getter = (propName: string): any => {\n return this._core.options[propName];\n };\n const setter = (propName: string, value: any): void => {\n this._checkReadonlyOptions(propName);\n this._core.options[propName] = value;\n };\n\n for (const propName in this._core.options) {\n const desc = {\n get: getter.bind(this, propName),\n set: setter.bind(this, propName)\n };\n Object.defineProperty(this._publicOptions, propName, desc);\n }\n }\n\n private _checkReadonlyOptions(propName: string): void {\n // Throw an error if any constructor only option is modified\n // from terminal.options\n // Modifications from anywhere else are allowed\n if (CONSTRUCTOR_ONLY_OPTIONS.includes(propName)) {\n throw new Error(`Option \"${propName}\" can only be set in the constructor`);\n }\n }\n\n private _checkProposedApi(): void {\n if (!this._core.optionsService.rawOptions.allowProposedApi) {\n throw new Error('You must set the allowProposedApi option to true to use proposed API');\n }\n }\n\n public get onBell(): IEvent { return this._core.onBell; }\n public get onBinary(): IEvent { return this._core.onBinary; }\n public get onCursorMove(): IEvent { return this._core.onCursorMove; }\n public get onData(): IEvent { return this._core.onData; }\n public get onKey(): IEvent<{ key: string, domEvent: KeyboardEvent }> { return this._core.onKey; }\n public get onLineFeed(): IEvent { return this._core.onLineFeed; }\n public get onRender(): IEvent<{ start: number, end: number }> { return this._core.onRender; }\n public get onResize(): IEvent<{ cols: number, rows: number }> { return this._core.onResize; }\n public get onScroll(): IEvent { return this._core.onScroll; }\n public get onSelectionChange(): IEvent { return this._core.onSelectionChange; }\n public get onTitleChange(): IEvent { return this._core.onTitleChange; }\n public get onWriteParsed(): IEvent { return this._core.onWriteParsed; }\n\n public get element(): HTMLElement | undefined { return this._core.element; }\n public get parser(): IParser {\n this._checkProposedApi();\n if (!this._parser) {\n this._parser = new ParserApi(this._core);\n }\n return this._parser;\n }\n public get unicode(): IUnicodeHandling {\n this._checkProposedApi();\n return new UnicodeApi(this._core);\n }\n public get textarea(): HTMLTextAreaElement | undefined { return this._core.textarea; }\n public get rows(): number { return this._core.rows; }\n public get cols(): number { return this._core.cols; }\n public get buffer(): IBufferNamespaceApi {\n this._checkProposedApi();\n if (!this._buffer) {\n this._buffer = new BufferNamespaceApi(this._core);\n }\n return this._buffer;\n }\n public get markers(): ReadonlyArray {\n this._checkProposedApi();\n return this._core.markers;\n }\n public get modes(): IModes {\n const m = this._core.coreService.decPrivateModes;\n let mouseTrackingMode: 'none' | 'x10' | 'vt200' | 'drag' | 'any' = 'none';\n switch (this._core.coreMouseService.activeProtocol) {\n case 'X10': mouseTrackingMode = 'x10'; break;\n case 'VT200': mouseTrackingMode = 'vt200'; break;\n case 'DRAG': mouseTrackingMode = 'drag'; break;\n case 'ANY': mouseTrackingMode = 'any'; break;\n }\n return {\n applicationCursorKeysMode: m.applicationCursorKeys,\n applicationKeypadMode: m.applicationKeypad,\n bracketedPasteMode: m.bracketedPasteMode,\n insertMode: this._core.coreService.modes.insertMode,\n mouseTrackingMode: mouseTrackingMode,\n originMode: m.origin,\n reverseWraparoundMode: m.reverseWraparound,\n sendFocusMode: m.sendFocus,\n wraparoundMode: m.wraparound\n };\n }\n public get options(): ITerminalOptions {\n return this._publicOptions;\n }\n public set options(options: ITerminalOptions) {\n for (const propName in options) {\n this._publicOptions[propName] = options[propName];\n }\n }\n public blur(): void {\n this._core.blur();\n }\n public focus(): void {\n this._core.focus();\n }\n public resize(columns: number, rows: number): void {\n this._verifyIntegers(columns, rows);\n this._core.resize(columns, rows);\n }\n public open(parent: HTMLElement): void {\n this._core.open(parent);\n }\n public attachCustomKeyEventHandler(customKeyEventHandler: (event: KeyboardEvent) => boolean): void {\n this._core.attachCustomKeyEventHandler(customKeyEventHandler);\n }\n public registerLinkMatcher(regex: RegExp, handler: (event: MouseEvent, uri: string) => void, options?: ILinkMatcherOptions): number {\n this._checkProposedApi();\n return this._core.registerLinkMatcher(regex, handler, options);\n }\n public deregisterLinkMatcher(matcherId: number): void {\n this._checkProposedApi();\n this._core.deregisterLinkMatcher(matcherId);\n }\n public registerLinkProvider(linkProvider: ILinkProvider): IDisposable {\n this._checkProposedApi();\n return this._core.registerLinkProvider(linkProvider);\n }\n public registerCharacterJoiner(handler: (text: string) => [number, number][]): number {\n this._checkProposedApi();\n return this._core.registerCharacterJoiner(handler);\n }\n public deregisterCharacterJoiner(joinerId: number): void {\n this._checkProposedApi();\n this._core.deregisterCharacterJoiner(joinerId);\n }\n public registerMarker(cursorYOffset: number = 0): IMarker | undefined {\n this._checkProposedApi();\n this._verifyIntegers(cursorYOffset);\n return this._core.addMarker(cursorYOffset);\n }\n public registerDecoration(decorationOptions: IDecorationOptions): IDecoration | undefined {\n this._checkProposedApi();\n this._verifyPositiveIntegers(decorationOptions.x ?? 0, decorationOptions.width ?? 0, decorationOptions.height ?? 0);\n return this._core.registerDecoration(decorationOptions);\n }\n public addMarker(cursorYOffset: number): IMarker | undefined {\n return this.registerMarker(cursorYOffset);\n }\n public hasSelection(): boolean {\n return this._core.hasSelection();\n }\n public select(column: number, row: number, length: number): void {\n this._verifyIntegers(column, row, length);\n this._core.select(column, row, length);\n }\n public getSelection(): string {\n return this._core.getSelection();\n }\n public getSelectionPosition(): ISelectionPosition | undefined {\n return this._core.getSelectionPosition();\n }\n public clearSelection(): void {\n this._core.clearSelection();\n }\n public selectAll(): void {\n this._core.selectAll();\n }\n public selectLines(start: number, end: number): void {\n this._verifyIntegers(start, end);\n this._core.selectLines(start, end);\n }\n public dispose(): void {\n this._addonManager.dispose();\n this._core.dispose();\n }\n public scrollLines(amount: number): void {\n this._verifyIntegers(amount);\n this._core.scrollLines(amount);\n }\n public scrollPages(pageCount: number): void {\n this._verifyIntegers(pageCount);\n this._core.scrollPages(pageCount);\n }\n public scrollToTop(): void {\n this._core.scrollToTop();\n }\n public scrollToBottom(): void {\n this._core.scrollToBottom();\n }\n public scrollToLine(line: number): void {\n this._verifyIntegers(line);\n this._core.scrollToLine(line);\n }\n public clear(): void {\n this._core.clear();\n }\n public write(data: string | Uint8Array, callback?: () => void): void {\n this._core.write(data, callback);\n }\n public writeUtf8(data: Uint8Array, callback?: () => void): void {\n this._core.write(data, callback);\n }\n public writeln(data: string | Uint8Array, callback?: () => void): void {\n this._core.write(data);\n this._core.write('\\r\\n', callback);\n }\n public paste(data: string): void {\n this._core.paste(data);\n }\n public getOption(key: 'bellSound' | 'bellStyle' | 'cursorStyle' | 'fontFamily' | 'logLevel' | 'rendererType' | 'termName' | 'wordSeparator'): string;\n public getOption(key: 'allowTransparency' | 'altClickMovesCursor' | 'cancelEvents' | 'convertEol' | 'cursorBlink' | 'disableStdin' | 'macOptionIsMeta' | 'rightClickSelectsWord' | 'popOnBell' | 'visualBell'): boolean;\n public getOption(key: 'cols' | 'fontSize' | 'letterSpacing' | 'lineHeight' | 'rows' | 'tabStopWidth' | 'scrollback'): number;\n public getOption(key: 'fontWeight' | 'fontWeightBold'): FontWeight;\n public getOption(key: string): any;\n public getOption(key: any): any {\n return this._core.optionsService.getOption(key);\n }\n public setOption(key: 'bellSound' | 'fontFamily' | 'termName' | 'wordSeparator', value: string): void;\n public setOption(key: 'fontWeight' | 'fontWeightBold', value: 'normal' | 'bold' | '100' | '200' | '300' | '400' | '500' | '600' | '700' | '800' | '900' | number): void;\n public setOption(key: 'logLevel', value: 'debug' | 'info' | 'warn' | 'error' | 'off'): void;\n public setOption(key: 'bellStyle', value: 'none' | 'visual' | 'sound' | 'both'): void;\n public setOption(key: 'cursorStyle', value: 'block' | 'underline' | 'bar'): void;\n public setOption(key: 'allowTransparency' | 'altClickMovesCursor' | 'cancelEvents' | 'convertEol' | 'cursorBlink' | 'disableStdin' | 'macOptionIsMeta' | 'rightClickSelectsWord' | 'popOnBell' | 'visualBell', value: boolean): void;\n public setOption(key: 'fontSize' | 'letterSpacing' | 'lineHeight' | 'tabStopWidth' | 'scrollback', value: number): void;\n public setOption(key: 'theme', value: ITheme): void;\n public setOption(key: 'cols' | 'rows', value: number): void;\n public setOption(key: string, value: any): void;\n public setOption(key: any, value: any): void {\n this._checkReadonlyOptions(key);\n this._core.optionsService.setOption(key, value);\n }\n public refresh(start: number, end: number): void {\n this._verifyIntegers(start, end);\n this._core.refresh(start, end);\n }\n public reset(): void {\n this._core.reset();\n }\n public clearTextureAtlas(): void {\n this._core.clearTextureAtlas();\n }\n public loadAddon(addon: ITerminalAddon): void {\n return this._addonManager.loadAddon(this, addon);\n }\n public static get strings(): ILocalizableStrings {\n return Strings;\n }\n\n private _verifyIntegers(...values: number[]): void {\n for (const value of values) {\n if (value === Infinity || isNaN(value) || value % 1 !== 0) {\n throw new Error('This API only accepts integers');\n }\n }\n }\n\n private _verifyPositiveIntegers(...values: number[]): void {\n for (const value of values) {\n if (value && (value === Infinity || isNaN(value) || value % 1 !== 0 || value < 0)) {\n throw new Error('This API only accepts positive integers');\n }\n }\n }\n}\n", "/**\n * Copyright (c) 2017 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IRenderDimensions, IRenderLayer } from 'browser/renderer/Types';\nimport { ICellData, IColor } from 'common/Types';\nimport { DEFAULT_COLOR, WHITESPACE_CELL_CHAR, WHITESPACE_CELL_CODE, Attributes } from 'common/buffer/Constants';\nimport { IGlyphIdentifier } from 'browser/renderer/atlas/Types';\nimport { DIM_OPACITY, INVERTED_DEFAULT_COLOR, TEXT_BASELINE } from 'browser/renderer/atlas/Constants';\nimport { BaseCharAtlas } from 'browser/renderer/atlas/BaseCharAtlas';\nimport { acquireCharAtlas } from 'browser/renderer/atlas/CharAtlasCache';\nimport { AttributeData } from 'common/buffer/AttributeData';\nimport { IColorSet } from 'browser/Types';\nimport { CellData } from 'common/buffer/CellData';\nimport { IBufferService, IDecorationService, IOptionsService } from 'common/services/Services';\nimport { excludeFromContrastRatioDemands, throwIfFalsy } from 'browser/renderer/RendererUtils';\nimport { channels, color, rgba } from 'common/Color';\nimport { removeElementFromParent } from 'browser/Dom';\nimport { tryDrawCustomChar } from 'browser/renderer/CustomGlyphs';\n\nexport abstract class BaseRenderLayer implements IRenderLayer {\n private _canvas: HTMLCanvasElement;\n protected _ctx!: CanvasRenderingContext2D;\n private _scaledCharWidth: number = 0;\n private _scaledCharHeight: number = 0;\n private _scaledCellWidth: number = 0;\n private _scaledCellHeight: number = 0;\n private _scaledCharLeft: number = 0;\n private _scaledCharTop: number = 0;\n\n private _selectionStart: [number, number] | undefined;\n private _selectionEnd: [number, number] | undefined;\n private _columnSelectMode: boolean = false;\n\n protected _charAtlas: BaseCharAtlas | undefined;\n\n /**\n * An object that's reused when drawing glyphs in order to reduce GC.\n */\n private _currentGlyphIdentifier: IGlyphIdentifier = {\n chars: '',\n code: 0,\n bg: 0,\n fg: 0,\n bold: false,\n dim: false,\n italic: false\n };\n\n constructor(\n private _container: HTMLElement,\n id: string,\n zIndex: number,\n private _alpha: boolean,\n protected _colors: IColorSet,\n private _rendererId: number,\n protected readonly _bufferService: IBufferService,\n protected readonly _optionsService: IOptionsService,\n protected readonly _decorationService: IDecorationService\n ) {\n this._canvas = document.createElement('canvas');\n this._canvas.classList.add(`xterm-${id}-layer`);\n this._canvas.style.zIndex = zIndex.toString();\n this._initCanvas();\n this._container.appendChild(this._canvas);\n }\n\n public dispose(): void {\n removeElementFromParent(this._canvas);\n this._charAtlas?.dispose();\n }\n\n private _initCanvas(): void {\n this._ctx = throwIfFalsy(this._canvas.getContext('2d', { alpha: this._alpha }));\n // Draw the background if this is an opaque layer\n if (!this._alpha) {\n this._clearAll();\n }\n }\n\n public onOptionsChanged(): void {}\n public onBlur(): void {}\n public onFocus(): void {}\n public onCursorMove(): void {}\n public onGridChanged(startRow: number, endRow: number): void {}\n\n public onSelectionChanged(start: [number, number] | undefined, end: [number, number] | undefined, columnSelectMode: boolean = false): void {\n this._selectionStart = start;\n this._selectionEnd = end;\n this._columnSelectMode = columnSelectMode;\n }\n\n public setColors(colorSet: IColorSet): void {\n this._refreshCharAtlas(colorSet);\n }\n\n protected _setTransparency(alpha: boolean): void {\n // Do nothing when alpha doesn't change\n if (alpha === this._alpha) {\n return;\n }\n\n // Create new canvas and replace old one\n const oldCanvas = this._canvas;\n this._alpha = alpha;\n // Cloning preserves properties\n this._canvas = this._canvas.cloneNode() as HTMLCanvasElement;\n this._initCanvas();\n this._container.replaceChild(this._canvas, oldCanvas);\n\n // Regenerate char atlas and force a full redraw\n this._refreshCharAtlas(this._colors);\n this.onGridChanged(0, this._bufferService.rows - 1);\n }\n\n /**\n * Refreshes the char atlas, aquiring a new one if necessary.\n * @param colorSet The color set to use for the char atlas.\n */\n private _refreshCharAtlas(colorSet: IColorSet): void {\n if (this._scaledCharWidth <= 0 && this._scaledCharHeight <= 0) {\n return;\n }\n this._charAtlas = acquireCharAtlas(this._optionsService.rawOptions, this._rendererId, colorSet, this._scaledCharWidth, this._scaledCharHeight);\n this._charAtlas.warmUp();\n }\n\n public resize(dim: IRenderDimensions): void {\n this._scaledCellWidth = dim.scaledCellWidth;\n this._scaledCellHeight = dim.scaledCellHeight;\n this._scaledCharWidth = dim.scaledCharWidth;\n this._scaledCharHeight = dim.scaledCharHeight;\n this._scaledCharLeft = dim.scaledCharLeft;\n this._scaledCharTop = dim.scaledCharTop;\n this._canvas.width = dim.scaledCanvasWidth;\n this._canvas.height = dim.scaledCanvasHeight;\n this._canvas.style.width = `${dim.canvasWidth}px`;\n this._canvas.style.height = `${dim.canvasHeight}px`;\n\n // Draw the background if this is an opaque layer\n if (!this._alpha) {\n this._clearAll();\n }\n\n this._refreshCharAtlas(this._colors);\n }\n\n public abstract reset(): void;\n\n public clearTextureAtlas(): void {\n this._charAtlas?.clear();\n }\n\n /**\n * Fills 1+ cells completely. This uses the existing fillStyle on the context.\n * @param x The column to start at.\n * @param y The row to start at\n * @param width The number of columns to fill.\n * @param height The number of rows to fill.\n */\n protected _fillCells(x: number, y: number, width: number, height: number): void {\n this._ctx.fillRect(\n x * this._scaledCellWidth,\n y * this._scaledCellHeight,\n width * this._scaledCellWidth,\n height * this._scaledCellHeight);\n }\n\n /**\n * Fills a 1px line (2px on HDPI) at the middle of the cell. This uses the\n * existing fillStyle on the context.\n * @param x The column to fill.\n * @param y The row to fill.\n */\n protected _fillMiddleLineAtCells(x: number, y: number, width: number = 1): void {\n const cellOffset = Math.ceil(this._scaledCellHeight * 0.5);\n this._ctx.fillRect(\n x * this._scaledCellWidth,\n (y + 1) * this._scaledCellHeight - cellOffset - window.devicePixelRatio,\n width * this._scaledCellWidth,\n window.devicePixelRatio);\n }\n\n /**\n * Fills a 1px line (2px on HDPI) at the bottom of the cell. This uses the\n * existing fillStyle on the context.\n * @param x The column to fill.\n * @param y The row to fill.\n */\n protected _fillBottomLineAtCells(x: number, y: number, width: number = 1): void {\n this._ctx.fillRect(\n x * this._scaledCellWidth,\n (y + 1) * this._scaledCellHeight - window.devicePixelRatio - 1 /* Ensure it's drawn within the cell */,\n width * this._scaledCellWidth,\n window.devicePixelRatio);\n }\n\n /**\n * Fills a 1px line (2px on HDPI) at the left of the cell. This uses the\n * existing fillStyle on the context.\n * @param x The column to fill.\n * @param y The row to fill.\n */\n protected _fillLeftLineAtCell(x: number, y: number, width: number): void {\n this._ctx.fillRect(\n x * this._scaledCellWidth,\n y * this._scaledCellHeight,\n window.devicePixelRatio * width,\n this._scaledCellHeight);\n }\n\n /**\n * Strokes a 1px rectangle (2px on HDPI) around a cell. This uses the existing\n * strokeStyle on the context.\n * @param x The column to fill.\n * @param y The row to fill.\n */\n protected _strokeRectAtCell(x: number, y: number, width: number, height: number): void {\n this._ctx.lineWidth = window.devicePixelRatio;\n this._ctx.strokeRect(\n x * this._scaledCellWidth + window.devicePixelRatio / 2,\n y * this._scaledCellHeight + (window.devicePixelRatio / 2),\n width * this._scaledCellWidth - window.devicePixelRatio,\n (height * this._scaledCellHeight) - window.devicePixelRatio);\n }\n\n /**\n * Clears the entire canvas.\n */\n protected _clearAll(): void {\n if (this._alpha) {\n this._ctx.clearRect(0, 0, this._canvas.width, this._canvas.height);\n } else {\n this._ctx.fillStyle = this._colors.background.css;\n this._ctx.fillRect(0, 0, this._canvas.width, this._canvas.height);\n }\n }\n\n /**\n * Clears 1+ cells completely.\n * @param x The column to start at.\n * @param y The row to start at.\n * @param width The number of columns to clear.\n * @param height The number of rows to clear.\n */\n protected _clearCells(x: number, y: number, width: number, height: number): void {\n if (this._alpha) {\n this._ctx.clearRect(\n x * this._scaledCellWidth,\n y * this._scaledCellHeight,\n width * this._scaledCellWidth,\n height * this._scaledCellHeight);\n } else {\n this._ctx.fillStyle = this._colors.background.css;\n this._ctx.fillRect(\n x * this._scaledCellWidth,\n y * this._scaledCellHeight,\n width * this._scaledCellWidth,\n height * this._scaledCellHeight);\n }\n }\n\n /**\n * Draws a truecolor character at the cell. The character will be clipped to\n * ensure that it fits with the cell, including the cell to the right if it's\n * a wide character. This uses the existing fillStyle on the context.\n * @param cell The cell data for the character to draw.\n * @param x The column to draw at.\n * @param y The row to draw at.\n * @param color The color of the character.\n */\n protected _fillCharTrueColor(cell: CellData, x: number, y: number): void {\n this._ctx.font = this._getFont(false, false);\n this._ctx.textBaseline = TEXT_BASELINE;\n this._clipRow(y);\n\n // Draw custom characters if applicable\n let drawSuccess = false;\n if (this._optionsService.rawOptions.customGlyphs !== false) {\n drawSuccess = tryDrawCustomChar(this._ctx, cell.getChars(), x * this._scaledCellWidth, y * this._scaledCellHeight, this._scaledCellWidth, this._scaledCellHeight);\n }\n\n // Draw the character\n if (!drawSuccess) {\n this._ctx.fillText(\n cell.getChars(),\n x * this._scaledCellWidth + this._scaledCharLeft,\n y * this._scaledCellHeight + this._scaledCharTop + this._scaledCharHeight);\n }\n }\n\n /**\n * Draws one or more characters at a cell. If possible this will draw using\n * the character atlas to reduce draw time.\n * @param chars The character or characters.\n * @param code The character code.\n * @param width The width of the characters.\n * @param x The column to draw at.\n * @param y The row to draw at.\n * @param fg The foreground color, in the format stored within the attributes.\n * @param bg The background color, in the format stored within the attributes.\n * This is used to validate whether a cached image can be used.\n * @param bold Whether the text is bold.\n */\n protected _drawChars(cell: ICellData, x: number, y: number): void {\n const contrastColor = this._getContrastColor(cell, x, y);\n\n // skip cache right away if we draw in RGB\n // Note: to avoid bad runtime JoinedCellData will be skipped\n // in the cache handler itself (atlasDidDraw == false) and\n // fall through to uncached later down below\n if (contrastColor || cell.isFgRGB() || cell.isBgRGB()) {\n this._drawUncachedChars(cell, x, y, contrastColor);\n return;\n }\n\n let fg;\n let bg;\n if (cell.isInverse()) {\n fg = (cell.isBgDefault()) ? INVERTED_DEFAULT_COLOR : cell.getBgColor();\n bg = (cell.isFgDefault()) ? INVERTED_DEFAULT_COLOR : cell.getFgColor();\n } else {\n bg = (cell.isBgDefault()) ? DEFAULT_COLOR : cell.getBgColor();\n fg = (cell.isFgDefault()) ? DEFAULT_COLOR : cell.getFgColor();\n }\n\n const drawInBrightColor = this._optionsService.rawOptions.drawBoldTextInBrightColors && cell.isBold() && fg < 8;\n\n fg += drawInBrightColor ? 8 : 0;\n this._currentGlyphIdentifier.chars = cell.getChars() || WHITESPACE_CELL_CHAR;\n this._currentGlyphIdentifier.code = cell.getCode() || WHITESPACE_CELL_CODE;\n this._currentGlyphIdentifier.bg = bg;\n this._currentGlyphIdentifier.fg = fg;\n this._currentGlyphIdentifier.bold = !!cell.isBold();\n this._currentGlyphIdentifier.dim = !!cell.isDim();\n this._currentGlyphIdentifier.italic = !!cell.isItalic();\n\n // Don't try cache the glyph if it uses any decoration foreground/background override.\n let hasOverrides = false;\n for (const d of this._decorationService.getDecorationsAtCell(x, y)) {\n if (d.backgroundColorRGB || d.foregroundColorRGB) {\n hasOverrides = true;\n break;\n }\n }\n\n const atlasDidDraw = hasOverrides ? false : this._charAtlas?.draw(this._ctx, this._currentGlyphIdentifier, x * this._scaledCellWidth + this._scaledCharLeft, y * this._scaledCellHeight + this._scaledCharTop);\n\n if (!atlasDidDraw) {\n this._drawUncachedChars(cell, x, y);\n }\n }\n\n /**\n * Draws one or more characters at one or more cells. The character(s) will be\n * clipped to ensure that they fit with the cell(s), including the cell to the\n * right if the last character is a wide character.\n * @param chars The character.\n * @param width The width of the character.\n * @param fg The foreground color, in the format stored within the attributes.\n * @param x The column to draw at.\n * @param y The row to draw at.\n */\n private _drawUncachedChars(cell: ICellData, x: number, y: number, fgOverride?: IColor): void {\n this._ctx.save();\n this._ctx.font = this._getFont(!!cell.isBold(), !!cell.isItalic());\n this._ctx.textBaseline = TEXT_BASELINE;\n\n if (cell.isInverse()) {\n if (fgOverride) {\n this._ctx.fillStyle = fgOverride.css;\n } else if (cell.isBgDefault()) {\n this._ctx.fillStyle = color.opaque(this._colors.background).css;\n } else if (cell.isBgRGB()) {\n this._ctx.fillStyle = `rgb(${AttributeData.toColorRGB(cell.getBgColor()).join(',')})`;\n } else {\n let bg = cell.getBgColor();\n if (this._optionsService.rawOptions.drawBoldTextInBrightColors && cell.isBold() && bg < 8) {\n bg += 8;\n }\n this._ctx.fillStyle = this._colors.ansi[bg].css;\n }\n } else {\n if (fgOverride) {\n this._ctx.fillStyle = fgOverride.css;\n } else if (cell.isFgDefault()) {\n this._ctx.fillStyle = this._colors.foreground.css;\n } else if (cell.isFgRGB()) {\n this._ctx.fillStyle = `rgb(${AttributeData.toColorRGB(cell.getFgColor()).join(',')})`;\n } else {\n let fg = cell.getFgColor();\n if (this._optionsService.rawOptions.drawBoldTextInBrightColors && cell.isBold() && fg < 8) {\n fg += 8;\n }\n this._ctx.fillStyle = this._colors.ansi[fg].css;\n }\n }\n\n this._clipRow(y);\n\n // Apply alpha to dim the character\n if (cell.isDim()) {\n this._ctx.globalAlpha = DIM_OPACITY;\n }\n\n // Draw custom characters if applicable\n let drawSuccess = false;\n if (this._optionsService.rawOptions.customGlyphs !== false) {\n drawSuccess = tryDrawCustomChar(this._ctx, cell.getChars(), x * this._scaledCellWidth, y * this._scaledCellHeight, this._scaledCellWidth, this._scaledCellHeight);\n }\n\n // Draw the character\n if (!drawSuccess) {\n this._ctx.fillText(\n cell.getChars(),\n x * this._scaledCellWidth + this._scaledCharLeft,\n y * this._scaledCellHeight + this._scaledCharTop + this._scaledCharHeight);\n }\n\n this._ctx.restore();\n }\n\n\n /**\n * Clips a row to ensure no pixels will be drawn outside the cells in the row.\n * @param y The row to clip.\n */\n private _clipRow(y: number): void {\n this._ctx.beginPath();\n this._ctx.rect(\n 0,\n y * this._scaledCellHeight,\n this._bufferService.cols * this._scaledCellWidth,\n this._scaledCellHeight);\n this._ctx.clip();\n }\n\n /**\n * Gets the current font.\n * @param isBold If we should use the bold fontWeight.\n */\n protected _getFont(isBold: boolean, isItalic: boolean): string {\n const fontWeight = isBold ? this._optionsService.rawOptions.fontWeightBold : this._optionsService.rawOptions.fontWeight;\n const fontStyle = isItalic ? 'italic' : '';\n\n return `${fontStyle} ${fontWeight} ${this._optionsService.rawOptions.fontSize * window.devicePixelRatio}px ${this._optionsService.rawOptions.fontFamily}`;\n }\n\n private _getContrastColor(cell: CellData, x: number, y: number): IColor | undefined {\n // Get any decoration foreground/background overrides, this must be fetched before the early\n // exist but applied after inverse\n let bgOverride: number | undefined;\n let fgOverride: number | undefined;\n let isTop = false;\n for (const d of this._decorationService.getDecorationsAtCell(x, y)) {\n if (d.options.layer !== 'top' && isTop) {\n continue;\n }\n if (d.backgroundColorRGB) {\n bgOverride = d.backgroundColorRGB.rgba;\n }\n if (d.foregroundColorRGB) {\n fgOverride = d.foregroundColorRGB.rgba;\n }\n isTop = d.options.layer === 'top';\n }\n\n // Apply selection foreground if applicable\n if (!isTop) {\n if (this._colors.selectionForeground && this._isCellInSelection(x, y)) {\n fgOverride = this._colors.selectionForeground.rgba;\n }\n }\n\n if (!bgOverride && !fgOverride && (this._optionsService.rawOptions.minimumContrastRatio === 1 || excludeFromContrastRatioDemands(cell.getCode()))) {\n return undefined;\n }\n\n if (!bgOverride && !fgOverride) {\n // Try get from cache\n const adjustedColor = this._colors.contrastCache.getColor(cell.bg, cell.fg);\n if (adjustedColor !== undefined) {\n return adjustedColor || undefined;\n }\n }\n\n let fgColor = cell.getFgColor();\n let fgColorMode = cell.getFgColorMode();\n let bgColor = cell.getBgColor();\n let bgColorMode = cell.getBgColorMode();\n const isInverse = !!cell.isInverse();\n const isBold = !!cell.isInverse();\n if (isInverse) {\n const temp = fgColor;\n fgColor = bgColor;\n bgColor = temp;\n const temp2 = fgColorMode;\n fgColorMode = bgColorMode;\n bgColorMode = temp2;\n }\n\n const bgRgba = this._resolveBackgroundRgba(bgOverride !== undefined ? Attributes.CM_RGB : bgColorMode, bgOverride ?? bgColor, isInverse);\n const fgRgba = this._resolveForegroundRgba(fgColorMode, fgColor, isInverse, isBold);\n let result = rgba.ensureContrastRatio(bgOverride ?? bgRgba, fgOverride ?? fgRgba, this._optionsService.rawOptions.minimumContrastRatio);\n\n if (!result) {\n if (!fgOverride) {\n this._colors.contrastCache.setColor(cell.bg, cell.fg, null);\n return undefined;\n }\n // If it was an override and there was no contrast change, set as the result\n result = fgOverride;\n }\n\n const color: IColor = {\n css: channels.toCss(\n (result >> 24) & 0xFF,\n (result >> 16) & 0xFF,\n (result >> 8) & 0xFF\n ),\n rgba: result\n };\n if (!bgOverride && !fgOverride) {\n this._colors.contrastCache.setColor(cell.bg, cell.fg, color);\n }\n\n return color;\n }\n\n private _resolveBackgroundRgba(bgColorMode: number, bgColor: number, inverse: boolean): number {\n switch (bgColorMode) {\n case Attributes.CM_P16:\n case Attributes.CM_P256:\n return this._colors.ansi[bgColor].rgba;\n case Attributes.CM_RGB:\n return bgColor << 8;\n case Attributes.CM_DEFAULT:\n default:\n if (inverse) {\n return this._colors.foreground.rgba;\n }\n return this._colors.background.rgba;\n }\n }\n\n private _resolveForegroundRgba(fgColorMode: number, fgColor: number, inverse: boolean, bold: boolean): number {\n switch (fgColorMode) {\n case Attributes.CM_P16:\n case Attributes.CM_P256:\n if (this._optionsService.rawOptions.drawBoldTextInBrightColors && bold && fgColor < 8) {\n fgColor += 8;\n }\n return this._colors.ansi[fgColor].rgba;\n case Attributes.CM_RGB:\n return fgColor << 8;\n case Attributes.CM_DEFAULT:\n default:\n if (inverse) {\n return this._colors.background.rgba;\n }\n return this._colors.foreground.rgba;\n }\n }\n\n private _isCellInSelection(x: number, y: number): boolean {\n const start = this._selectionStart;\n const end = this._selectionEnd;\n if (!start || !end) {\n return false;\n }\n if (this._columnSelectMode) {\n return x >= start[0] && y >= start[1] &&\n x < end[0] && y < end[1];\n }\n return (y > start[1] && y < end[1]) ||\n (start[1] === end[1] && y === start[1] && x >= start[0] && x < end[0]) ||\n (start[1] < end[1] && y === end[1] && x < end[0]) ||\n (start[1] < end[1] && y === start[1] && x >= start[0]);\n }\n}\n\n", "/**\n * Copyright (c) 2017 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IRenderDimensions, IRequestRedrawEvent } from 'browser/renderer/Types';\nimport { BaseRenderLayer } from 'browser/renderer/BaseRenderLayer';\nimport { ICellData } from 'common/Types';\nimport { CellData } from 'common/buffer/CellData';\nimport { IColorSet } from 'browser/Types';\nimport { IBufferService, IOptionsService, ICoreService, IDecorationService } from 'common/services/Services';\nimport { IEventEmitter } from 'common/EventEmitter';\nimport { ICoreBrowserService } from 'browser/services/Services';\n\ninterface ICursorState {\n x: number;\n y: number;\n isFocused: boolean;\n style: string;\n width: number;\n}\n\n/**\n * The time between cursor blinks.\n */\nconst BLINK_INTERVAL = 600;\n\nexport class CursorRenderLayer extends BaseRenderLayer {\n private _state: ICursorState;\n private _cursorRenderers: {[key: string]: (x: number, y: number, cell: ICellData) => void};\n private _cursorBlinkStateManager: CursorBlinkStateManager | undefined;\n private _cell: ICellData = new CellData();\n\n constructor(\n container: HTMLElement,\n zIndex: number,\n colors: IColorSet,\n rendererId: number,\n private _onRequestRedraw: IEventEmitter,\n @IBufferService bufferService: IBufferService,\n @IOptionsService optionsService: IOptionsService,\n @ICoreService private readonly _coreService: ICoreService,\n @ICoreBrowserService private readonly _coreBrowserService: ICoreBrowserService,\n @IDecorationService decorationService: IDecorationService\n ) {\n super(container, 'cursor', zIndex, true, colors, rendererId, bufferService, optionsService, decorationService);\n this._state = {\n x: 0,\n y: 0,\n isFocused: false,\n style: '',\n width: 0\n };\n this._cursorRenderers = {\n 'bar': this._renderBarCursor.bind(this),\n 'block': this._renderBlockCursor.bind(this),\n 'underline': this._renderUnderlineCursor.bind(this)\n };\n }\n\n public dispose(): void {\n if (this._cursorBlinkStateManager) {\n this._cursorBlinkStateManager.dispose();\n this._cursorBlinkStateManager = undefined;\n }\n super.dispose();\n }\n\n public resize(dim: IRenderDimensions): void {\n super.resize(dim);\n // Resizing the canvas discards the contents of the canvas so clear state\n this._state = {\n x: 0,\n y: 0,\n isFocused: false,\n style: '',\n width: 0\n };\n }\n\n public reset(): void {\n this._clearCursor();\n this._cursorBlinkStateManager?.restartBlinkAnimation();\n this.onOptionsChanged();\n }\n\n public onBlur(): void {\n this._cursorBlinkStateManager?.pause();\n this._onRequestRedraw.fire({ start: this._bufferService.buffer.y, end: this._bufferService.buffer.y });\n }\n\n public onFocus(): void {\n this._cursorBlinkStateManager?.resume();\n this._onRequestRedraw.fire({ start: this._bufferService.buffer.y, end: this._bufferService.buffer.y });\n }\n\n public onOptionsChanged(): void {\n if (this._optionsService.rawOptions.cursorBlink) {\n if (!this._cursorBlinkStateManager) {\n this._cursorBlinkStateManager = new CursorBlinkStateManager(this._coreBrowserService.isFocused, () => {\n this._render(true);\n });\n }\n } else {\n this._cursorBlinkStateManager?.dispose();\n this._cursorBlinkStateManager = undefined;\n }\n // Request a refresh from the terminal as management of rendering is being\n // moved back to the terminal\n this._onRequestRedraw.fire({ start: this._bufferService.buffer.y, end: this._bufferService.buffer.y });\n }\n\n public onCursorMove(): void {\n this._cursorBlinkStateManager?.restartBlinkAnimation();\n }\n\n public onGridChanged(startRow: number, endRow: number): void {\n if (!this._cursorBlinkStateManager || this._cursorBlinkStateManager.isPaused) {\n this._render(false);\n } else {\n this._cursorBlinkStateManager.restartBlinkAnimation();\n }\n }\n\n private _render(triggeredByAnimationFrame: boolean): void {\n // Don't draw the cursor if it's hidden\n if (!this._coreService.isCursorInitialized || this._coreService.isCursorHidden) {\n this._clearCursor();\n return;\n }\n\n const cursorY = this._bufferService.buffer.ybase + this._bufferService.buffer.y;\n const viewportRelativeCursorY = cursorY - this._bufferService.buffer.ydisp;\n\n // Don't draw the cursor if it's off-screen\n if (viewportRelativeCursorY < 0 || viewportRelativeCursorY >= this._bufferService.rows) {\n this._clearCursor();\n return;\n }\n\n // in case cursor.x == cols adjust visual cursor to cols - 1\n const cursorX = Math.min(this._bufferService.buffer.x, this._bufferService.cols - 1);\n this._bufferService.buffer.lines.get(cursorY)!.loadCell(cursorX, this._cell);\n if (this._cell.content === undefined) {\n return;\n }\n\n if (!this._coreBrowserService.isFocused) {\n this._clearCursor();\n this._ctx.save();\n this._ctx.fillStyle = this._colors.cursor.css;\n const cursorStyle = this._optionsService.rawOptions.cursorStyle;\n if (cursorStyle && cursorStyle !== 'block') {\n this._cursorRenderers[cursorStyle](cursorX, viewportRelativeCursorY, this._cell);\n } else {\n this._renderBlurCursor(cursorX, viewportRelativeCursorY, this._cell);\n }\n this._ctx.restore();\n this._state.x = cursorX;\n this._state.y = viewportRelativeCursorY;\n this._state.isFocused = false;\n this._state.style = cursorStyle;\n this._state.width = this._cell.getWidth();\n return;\n }\n\n // Don't draw the cursor if it's blinking\n if (this._cursorBlinkStateManager && !this._cursorBlinkStateManager.isCursorVisible) {\n this._clearCursor();\n return;\n }\n\n if (this._state) {\n // The cursor is already in the correct spot, don't redraw\n if (this._state.x === cursorX &&\n this._state.y === viewportRelativeCursorY &&\n this._state.isFocused === this._coreBrowserService.isFocused &&\n this._state.style === this._optionsService.rawOptions.cursorStyle &&\n this._state.width === this._cell.getWidth()) {\n return;\n }\n this._clearCursor();\n }\n\n this._ctx.save();\n this._cursorRenderers[this._optionsService.rawOptions.cursorStyle || 'block'](cursorX, viewportRelativeCursorY, this._cell);\n this._ctx.restore();\n\n this._state.x = cursorX;\n this._state.y = viewportRelativeCursorY;\n this._state.isFocused = false;\n this._state.style = this._optionsService.rawOptions.cursorStyle;\n this._state.width = this._cell.getWidth();\n }\n\n private _clearCursor(): void {\n if (this._state) {\n // Avoid potential rounding errors when device pixel ratio is less than 1\n if (window.devicePixelRatio < 1) {\n this._clearAll();\n } else {\n this._clearCells(this._state.x, this._state.y, this._state.width, 1);\n }\n this._state = {\n x: 0,\n y: 0,\n isFocused: false,\n style: '',\n width: 0\n };\n }\n }\n\n private _renderBarCursor(x: number, y: number, cell: ICellData): void {\n this._ctx.save();\n this._ctx.fillStyle = this._colors.cursor.css;\n this._fillLeftLineAtCell(x, y, this._optionsService.rawOptions.cursorWidth);\n this._ctx.restore();\n }\n\n private _renderBlockCursor(x: number, y: number, cell: ICellData): void {\n this._ctx.save();\n this._ctx.fillStyle = this._colors.cursor.css;\n this._fillCells(x, y, cell.getWidth(), 1);\n this._ctx.fillStyle = this._colors.cursorAccent.css;\n this._fillCharTrueColor(cell, x, y);\n this._ctx.restore();\n }\n\n private _renderUnderlineCursor(x: number, y: number, cell: ICellData): void {\n this._ctx.save();\n this._ctx.fillStyle = this._colors.cursor.css;\n this._fillBottomLineAtCells(x, y);\n this._ctx.restore();\n }\n\n private _renderBlurCursor(x: number, y: number, cell: ICellData): void {\n this._ctx.save();\n this._ctx.strokeStyle = this._colors.cursor.css;\n this._strokeRectAtCell(x, y, cell.getWidth(), 1);\n this._ctx.restore();\n }\n}\n\nclass CursorBlinkStateManager {\n public isCursorVisible: boolean;\n\n private _animationFrame: number | undefined;\n private _blinkStartTimeout: number | undefined;\n private _blinkInterval: number | undefined;\n\n /**\n * The time at which the animation frame was restarted, this is used on the\n * next render to restart the timers so they don't need to restart the timers\n * multiple times over a short period.\n */\n private _animationTimeRestarted: number | undefined;\n\n constructor(\n isFocused: boolean,\n private _renderCallback: () => void\n ) {\n this.isCursorVisible = true;\n if (isFocused) {\n this._restartInterval();\n }\n }\n\n public get isPaused(): boolean { return !(this._blinkStartTimeout || this._blinkInterval); }\n\n public dispose(): void {\n if (this._blinkInterval) {\n window.clearInterval(this._blinkInterval);\n this._blinkInterval = undefined;\n }\n if (this._blinkStartTimeout) {\n window.clearTimeout(this._blinkStartTimeout);\n this._blinkStartTimeout = undefined;\n }\n if (this._animationFrame) {\n window.cancelAnimationFrame(this._animationFrame);\n this._animationFrame = undefined;\n }\n }\n\n public restartBlinkAnimation(): void {\n if (this.isPaused) {\n return;\n }\n // Save a timestamp so that the restart can be done on the next interval\n this._animationTimeRestarted = Date.now();\n // Force a cursor render to ensure it's visible and in the correct position\n this.isCursorVisible = true;\n if (!this._animationFrame) {\n this._animationFrame = window.requestAnimationFrame(() => {\n this._renderCallback();\n this._animationFrame = undefined;\n });\n }\n }\n\n private _restartInterval(timeToStart: number = BLINK_INTERVAL): void {\n // Clear any existing interval\n if (this._blinkInterval) {\n window.clearInterval(this._blinkInterval);\n this._blinkInterval = undefined;\n }\n\n // Setup the initial timeout which will hide the cursor, this is done before\n // the regular interval is setup in order to support restarting the blink\n // animation in a lightweight way (without thrashing clearInterval and\n // setInterval).\n this._blinkStartTimeout = window.setTimeout(() => {\n // Check if another animation restart was requested while this was being\n // started\n if (this._animationTimeRestarted) {\n const time = BLINK_INTERVAL - (Date.now() - this._animationTimeRestarted);\n this._animationTimeRestarted = undefined;\n if (time > 0) {\n this._restartInterval(time);\n return;\n }\n }\n\n // Hide the cursor\n this.isCursorVisible = false;\n this._animationFrame = window.requestAnimationFrame(() => {\n this._renderCallback();\n this._animationFrame = undefined;\n });\n\n // Setup the blink interval\n this._blinkInterval = window.setInterval(() => {\n // Adjust the animation time if it was restarted\n if (this._animationTimeRestarted) {\n // calc time diff\n // Make restart interval do a setTimeout initially?\n const time = BLINK_INTERVAL - (Date.now() - this._animationTimeRestarted);\n this._animationTimeRestarted = undefined;\n this._restartInterval(time);\n return;\n }\n\n // Invert visibility and render\n this.isCursorVisible = !this.isCursorVisible;\n this._animationFrame = window.requestAnimationFrame(() => {\n this._renderCallback();\n this._animationFrame = undefined;\n });\n }, BLINK_INTERVAL);\n }, timeToStart);\n }\n\n public pause(): void {\n this.isCursorVisible = true;\n if (this._blinkInterval) {\n window.clearInterval(this._blinkInterval);\n this._blinkInterval = undefined;\n }\n if (this._blinkStartTimeout) {\n window.clearTimeout(this._blinkStartTimeout);\n this._blinkStartTimeout = undefined;\n }\n if (this._animationFrame) {\n window.cancelAnimationFrame(this._animationFrame);\n this._animationFrame = undefined;\n }\n }\n\n public resume(): void {\n // Clear out any existing timers just in case\n this.pause();\n\n this._animationTimeRestarted = undefined;\n this._restartInterval();\n this.restartBlinkAnimation();\n }\n}\n", "/**\n * Copyright (c) 2021 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { throwIfFalsy } from 'browser/renderer/RendererUtils';\n\ninterface IBlockVector {\n x: number;\n y: number;\n w: number;\n h: number;\n}\n\nexport const blockElementDefinitions: { [index: string]: IBlockVector[] | undefined } = {\n // Block elements (0x2580-0x2590)\n '▀': [{ x: 0, y: 0, w: 8, h: 4 }], // UPPER HALF BLOCK\n '▁': [{ x: 0, y: 7, w: 8, h: 1 }], // LOWER ONE EIGHTH BLOCK\n '▂': [{ x: 0, y: 6, w: 8, h: 2 }], // LOWER ONE QUARTER BLOCK\n '▃': [{ x: 0, y: 5, w: 8, h: 3 }], // LOWER THREE EIGHTHS BLOCK\n '▄': [{ x: 0, y: 4, w: 8, h: 4 }], // LOWER HALF BLOCK\n '▅': [{ x: 0, y: 3, w: 8, h: 5 }], // LOWER FIVE EIGHTHS BLOCK\n '▆': [{ x: 0, y: 2, w: 8, h: 6 }], // LOWER THREE QUARTERS BLOCK\n '▇': [{ x: 0, y: 1, w: 8, h: 7 }], // LOWER SEVEN EIGHTHS BLOCK\n '█': [{ x: 0, y: 0, w: 8, h: 8 }], // FULL BLOCK\n '▉': [{ x: 0, y: 0, w: 7, h: 8 }], // LEFT SEVEN EIGHTHS BLOCK\n '▊': [{ x: 0, y: 0, w: 6, h: 8 }], // LEFT THREE QUARTERS BLOCK\n '▋': [{ x: 0, y: 0, w: 5, h: 8 }], // LEFT FIVE EIGHTHS BLOCK\n '▌': [{ x: 0, y: 0, w: 4, h: 8 }], // LEFT HALF BLOCK\n '▍': [{ x: 0, y: 0, w: 3, h: 8 }], // LEFT THREE EIGHTHS BLOCK\n '▎': [{ x: 0, y: 0, w: 2, h: 8 }], // LEFT ONE QUARTER BLOCK\n '▏': [{ x: 0, y: 0, w: 1, h: 8 }], // LEFT ONE EIGHTH BLOCK\n '▐': [{ x: 4, y: 0, w: 4, h: 8 }], // RIGHT HALF BLOCK\n\n // Block elements (0x2594-0x2595)\n '▔': [{ x: 0, y: 0, w: 9, h: 1 }], // UPPER ONE EIGHTH BLOCK\n '▕': [{ x: 7, y: 0, w: 1, h: 8 }], // RIGHT ONE EIGHTH BLOCK\n\n // Terminal graphic characters (0x2596-0x259F)\n '▖': [{ x: 0, y: 4, w: 4, h: 4 }], // QUADRANT LOWER LEFT\n '▗': [{ x: 4, y: 4, w: 4, h: 4 }], // QUADRANT LOWER RIGHT\n '▘': [{ x: 0, y: 0, w: 4, h: 4 }], // QUADRANT UPPER LEFT\n '▙': [{ x: 0, y: 0, w: 4, h: 8 }, { x: 0, y: 4, w: 8, h: 4 }], // QUADRANT UPPER LEFT AND LOWER LEFT AND LOWER RIGHT\n '▚': [{ x: 0, y: 0, w: 4, h: 4 }, { x: 4, y: 4, w: 4, h: 4 }], // QUADRANT UPPER LEFT AND LOWER RIGHT\n '▛': [{ x: 0, y: 0, w: 4, h: 8 }, { x: 0, y: 0, w: 4, h: 8 }], // QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER LEFT\n '▜': [{ x: 0, y: 0, w: 8, h: 4 }, { x: 4, y: 0, w: 4, h: 8 }], // QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER RIGHT\n '▝': [{ x: 4, y: 0, w: 4, h: 4 }], // QUADRANT UPPER RIGHT\n '▞': [{ x: 4, y: 0, w: 4, h: 4 }, { x: 0, y: 4, w: 4, h: 4 }], // QUADRANT UPPER RIGHT AND LOWER LEFT\n '▟': [{ x: 4, y: 0, w: 4, h: 8 }, { x: 0, y: 4, w: 8, h: 4 }], // QUADRANT UPPER RIGHT AND LOWER LEFT AND LOWER RIGHT\n\n // VERTICAL ONE EIGHTH BLOCK-2 through VERTICAL ONE EIGHTH BLOCK-7\n '\\u{1FB70}': [{ x: 1, y: 0, w: 1, h: 8 }],\n '\\u{1FB71}': [{ x: 2, y: 0, w: 1, h: 8 }],\n '\\u{1FB72}': [{ x: 3, y: 0, w: 1, h: 8 }],\n '\\u{1FB73}': [{ x: 4, y: 0, w: 1, h: 8 }],\n '\\u{1FB74}': [{ x: 5, y: 0, w: 1, h: 8 }],\n '\\u{1FB75}': [{ x: 6, y: 0, w: 1, h: 8 }],\n\n // HORIZONTAL ONE EIGHTH BLOCK-2 through HORIZONTAL ONE EIGHTH BLOCK-7\n '\\u{1FB76}': [{ x: 0, y: 1, w: 8, h: 1 }],\n '\\u{1FB77}': [{ x: 0, y: 2, w: 8, h: 1 }],\n '\\u{1FB78}': [{ x: 0, y: 3, w: 8, h: 1 }],\n '\\u{1FB79}': [{ x: 0, y: 4, w: 8, h: 1 }],\n '\\u{1FB7A}': [{ x: 0, y: 5, w: 8, h: 1 }],\n '\\u{1FB7B}': [{ x: 0, y: 6, w: 8, h: 1 }],\n\n // LEFT AND LOWER ONE EIGHTH BLOCK\n '\\u{1FB7C}': [{ x: 0, y: 0, w: 1, h: 8 }, { x: 0, y: 7, w: 8, h: 1 }],\n // LEFT AND UPPER ONE EIGHTH BLOCK\n '\\u{1FB7D}': [{ x: 0, y: 0, w: 1, h: 8 }, { x: 0, y: 0, w: 8, h: 1 }],\n // RIGHT AND UPPER ONE EIGHTH BLOCK\n '\\u{1FB7E}': [{ x: 7, y: 0, w: 1, h: 8 }, { x: 0, y: 0, w: 8, h: 1 }],\n // RIGHT AND LOWER ONE EIGHTH BLOCK\n '\\u{1FB7F}': [{ x: 7, y: 0, w: 1, h: 8 }, { x: 0, y: 7, w: 8, h: 1 }],\n // UPPER AND LOWER ONE EIGHTH BLOCK\n '\\u{1FB80}': [{ x: 0, y: 0, w: 8, h: 1 }, { x: 0, y: 7, w: 8, h: 1 }],\n // HORIZONTAL ONE EIGHTH BLOCK-1358\n '\\u{1FB81}': [{ x: 0, y: 0, w: 8, h: 1 }, { x: 0, y: 2, w: 8, h: 1 }, { x: 0, y: 4, w: 8, h: 1 }, { x: 0, y: 7, w: 8, h: 1 }],\n\n // UPPER ONE QUARTER BLOCK\n '\\u{1FB82}': [{ x: 0, y: 0, w: 8, h: 2 }],\n // UPPER THREE EIGHTHS BLOCK\n '\\u{1FB83}': [{ x: 0, y: 0, w: 8, h: 3 }],\n // UPPER FIVE EIGHTHS BLOCK\n '\\u{1FB84}': [{ x: 0, y: 0, w: 8, h: 5 }],\n // UPPER THREE QUARTERS BLOCK\n '\\u{1FB85}': [{ x: 0, y: 0, w: 8, h: 6 }],\n // UPPER SEVEN EIGHTHS BLOCK\n '\\u{1FB86}': [{ x: 0, y: 0, w: 8, h: 7 }],\n\n // RIGHT ONE QUARTER BLOCK\n '\\u{1FB87}': [{ x: 6, y: 0, w: 2, h: 8 }],\n // RIGHT THREE EIGHTHS B0OCK\n '\\u{1FB88}': [{ x: 5, y: 0, w: 3, h: 8 }],\n // RIGHT FIVE EIGHTHS BL0CK\n '\\u{1FB89}': [{ x: 3, y: 0, w: 5, h: 8 }],\n // RIGHT THREE QUARTERS 0LOCK\n '\\u{1FB8A}': [{ x: 2, y: 0, w: 6, h: 8 }],\n // RIGHT SEVEN EIGHTHS B0OCK\n '\\u{1FB8B}': [{ x: 1, y: 0, w: 7, h: 8 }],\n\n // CHECKER BOARD FILL\n '\\u{1FB95}': [\n { x: 0, y: 0, w: 2, h: 2 }, { x: 4, y: 0, w: 2, h: 2 },\n { x: 2, y: 2, w: 2, h: 2 }, { x: 6, y: 2, w: 2, h: 2 },\n { x: 0, y: 4, w: 2, h: 2 }, { x: 4, y: 4, w: 2, h: 2 },\n { x: 2, y: 6, w: 2, h: 2 }, { x: 6, y: 6, w: 2, h: 2 }\n ],\n // INVERSE CHECKER BOARD FILL\n '\\u{1FB96}': [\n { x: 2, y: 0, w: 2, h: 2 }, { x: 6, y: 0, w: 2, h: 2 },\n { x: 0, y: 2, w: 2, h: 2 }, { x: 4, y: 2, w: 2, h: 2 },\n { x: 2, y: 4, w: 2, h: 2 }, { x: 6, y: 4, w: 2, h: 2 },\n { x: 0, y: 6, w: 2, h: 2 }, { x: 4, y: 6, w: 2, h: 2 }\n ],\n // HEAVY HORIZONTAL FILL (upper middle and lower one quarter block)\n '\\u{1FB97}': [{ x: 0, y: 2, w: 8, h: 2 }, { x: 0, y: 6, w: 8, h: 2 }]\n};\n\ntype PatternDefinition = number[][];\n\n/**\n * Defines the repeating pattern used by special characters, the pattern is made up of a 2d array of\n * pixel values to be filled (1) or not filled (0).\n */\nconst patternCharacterDefinitions: { [key: string]: PatternDefinition | undefined } = {\n // Shade characters (0x2591-0x2593)\n '░': [ // LIGHT SHADE (25%)\n [1, 0, 0, 0],\n [0, 0, 0, 0],\n [0, 0, 1, 0],\n [0, 0, 0, 0]\n ],\n '▒': [ // MEDIUM SHADE (50%)\n [1, 0],\n [0, 0],\n [0, 1],\n [0, 0]\n ],\n '▓': [ // DARK SHADE (75%)\n [0, 1],\n [1, 1],\n [1, 0],\n [1, 1]\n ]\n};\n\nconst enum Shapes {\n /** │ */ TOP_TO_BOTTOM = 'M.5,0 L.5,1',\n /** ─ */ LEFT_TO_RIGHT = 'M0,.5 L1,.5',\n\n /** └ */ TOP_TO_RIGHT = 'M.5,0 L.5,.5 L1,.5',\n /** ┘ */ TOP_TO_LEFT = 'M.5,0 L.5,.5 L0,.5',\n /** ┐ */ LEFT_TO_BOTTOM = 'M0,.5 L.5,.5 L.5,1',\n /** ┌ */ RIGHT_TO_BOTTOM = 'M0.5,1 L.5,.5 L1,.5',\n\n /** ╵ */ MIDDLE_TO_TOP = 'M.5,.5 L.5,0',\n /** ╴ */ MIDDLE_TO_LEFT = 'M.5,.5 L0,.5',\n /** ╶ */ MIDDLE_TO_RIGHT = 'M.5,.5 L1,.5',\n /** ╷ */ MIDDLE_TO_BOTTOM = 'M.5,.5 L.5,1',\n\n /** ┴ */ T_TOP = 'M0,.5 L1,.5 M.5,.5 L.5,0',\n /** ┤ */ T_LEFT = 'M.5,0 L.5,1 M.5,.5 L0,.5',\n /** ├ */ T_RIGHT = 'M.5,0 L.5,1 M.5,.5 L1,.5',\n /** ┬ */ T_BOTTOM = 'M0,.5 L1,.5 M.5,.5 L.5,1',\n\n /** ┼ */ CROSS = 'M0,.5 L1,.5 M.5,0 L.5,1',\n\n /** ╌ */ TWO_DASHES_HORIZONTAL = 'M.1,.5 L.4,.5 M.6,.5 L.9,.5', // .2 empty, .3 filled\n /** ┄ */ THREE_DASHES_HORIZONTAL = 'M.0667,.5 L.2667,.5 M.4,.5 L.6,.5 M.7333,.5 L.9333,.5', // .1333 empty, .2 filled\n /** ┉ */ FOUR_DASHES_HORIZONTAL = 'M.05,.5 L.2,.5 M.3,.5 L.45,.5 M.55,.5 L.7,.5 M.8,.5 L.95,.5', // .1 empty, .15 filled\n /** ╎ */ TWO_DASHES_VERTICAL = 'M.5,.1 L.5,.4 M.5,.6 L.5,.9',\n /** ┆ */ THREE_DASHES_VERTICAL = 'M.5,.0667 L.5,.2667 M.5,.4 L.5,.6 M.5,.7333 L.5,.9333',\n /** ┊ */ FOUR_DASHES_VERTICAL = 'M.5,.05 L.5,.2 M.5,.3 L.5,.45 L.5,.55 M.5,.7 L.5,.95',\n}\n\nconst enum Style {\n NORMAL = 1,\n BOLD = 3\n}\n\n/**\n * This contains the definitions of all box drawing characters in the format of SVG paths (ie. the\n * svg d attribute).\n */\nexport const boxDrawingDefinitions: { [character: string]: { [fontWeight: number]: string | ((xp: number, yp: number) => string) } | undefined } = {\n // Uniform normal and bold\n '─': { [Style.NORMAL]: Shapes.LEFT_TO_RIGHT },\n '━': { [Style.BOLD]: Shapes.LEFT_TO_RIGHT },\n '│': { [Style.NORMAL]: Shapes.TOP_TO_BOTTOM },\n '┃': { [Style.BOLD]: Shapes.TOP_TO_BOTTOM },\n '┌': { [Style.NORMAL]: Shapes.RIGHT_TO_BOTTOM },\n '┏': { [Style.BOLD]: Shapes.RIGHT_TO_BOTTOM },\n '┐': { [Style.NORMAL]: Shapes.LEFT_TO_BOTTOM },\n '┓': { [Style.BOLD]: Shapes.LEFT_TO_BOTTOM },\n '└': { [Style.NORMAL]: Shapes.TOP_TO_RIGHT },\n '┗': { [Style.BOLD]: Shapes.TOP_TO_RIGHT },\n '┘': { [Style.NORMAL]: Shapes.TOP_TO_LEFT },\n '┛': { [Style.BOLD]: Shapes.TOP_TO_LEFT },\n '├': { [Style.NORMAL]: Shapes.T_RIGHT },\n '┣': { [Style.BOLD]: Shapes.T_RIGHT },\n '┤': { [Style.NORMAL]: Shapes.T_LEFT },\n '┫': { [Style.BOLD]: Shapes.T_LEFT },\n '┬': { [Style.NORMAL]: Shapes.T_BOTTOM },\n '┳': { [Style.BOLD]: Shapes.T_BOTTOM },\n '┴': { [Style.NORMAL]: Shapes.T_TOP },\n '┻': { [Style.BOLD]: Shapes.T_TOP },\n '┼': { [Style.NORMAL]: Shapes.CROSS },\n '╋': { [Style.BOLD]: Shapes.CROSS },\n '╴': { [Style.NORMAL]: Shapes.MIDDLE_TO_LEFT },\n '╸': { [Style.BOLD]: Shapes.MIDDLE_TO_LEFT },\n '╵': { [Style.NORMAL]: Shapes.MIDDLE_TO_TOP },\n '╹': { [Style.BOLD]: Shapes.MIDDLE_TO_TOP },\n '╶': { [Style.NORMAL]: Shapes.MIDDLE_TO_RIGHT },\n '╺': { [Style.BOLD]: Shapes.MIDDLE_TO_RIGHT },\n '╷': { [Style.NORMAL]: Shapes.MIDDLE_TO_BOTTOM },\n '╻': { [Style.BOLD]: Shapes.MIDDLE_TO_BOTTOM },\n\n // Double border\n '═': { [Style.NORMAL]: (xp, yp) => `M0,${.5 - yp} L1,${.5 - yp} M0,${.5 + yp} L1,${.5 + yp}` },\n '║': { [Style.NORMAL]: (xp, yp) => `M${.5 - xp},0 L${.5 - xp},1 M${.5 + xp},0 L${.5 + xp},1` },\n '╒': { [Style.NORMAL]: (xp, yp) => `M.5,1 L.5,${.5 - yp} L1,${.5 - yp} M.5,${.5 + yp} L1,${.5 + yp}` },\n '╓': { [Style.NORMAL]: (xp, yp) => `M${.5 - xp},1 L${.5 - xp},.5 L1,.5 M${.5 + xp},.5 L${.5 + xp},1` },\n '╔': { [Style.NORMAL]: (xp, yp) => `M1,${.5 - yp} L${.5 - xp},${.5 - yp} L${.5 - xp},1 M1,${.5 + yp} L${.5 + xp},${.5 + yp} L${.5 + xp},1` },\n '╕': { [Style.NORMAL]: (xp, yp) => `M0,${.5 - yp} L.5,${.5 - yp} L.5,1 M0,${.5 + yp} L.5,${.5 + yp}` },\n '╖': { [Style.NORMAL]: (xp, yp) => `M${.5 + xp},1 L${.5 + xp},.5 L0,.5 M${.5 - xp},.5 L${.5 - xp},1` },\n '╗': { [Style.NORMAL]: (xp, yp) => `M0,${.5 + yp} L${.5 - xp},${.5 + yp} L${.5 - xp},1 M0,${.5 - yp} L${.5 + xp},${.5 - yp} L${.5 + xp},1` },\n '╘': { [Style.NORMAL]: (xp, yp) => `M.5,0 L.5,${.5 + yp} L1,${.5 + yp} M.5,${.5 - yp} L1,${.5 - yp}` },\n '╙': { [Style.NORMAL]: (xp, yp) => `M1,.5 L${.5 - xp},.5 L${.5 - xp},0 M${.5 + xp},.5 L${.5 + xp},0` },\n '╚': { [Style.NORMAL]: (xp, yp) => `M1,${.5 - yp} L${.5 + xp},${.5 - yp} L${.5 + xp},0 M1,${.5 + yp} L${.5 - xp},${.5 + yp} L${.5 - xp},0` },\n '╛': { [Style.NORMAL]: (xp, yp) => `M0,${.5 + yp} L.5,${.5 + yp} L.5,0 M0,${.5 - yp} L.5,${.5 - yp}` },\n '╜': { [Style.NORMAL]: (xp, yp) => `M0,.5 L${.5 + xp},.5 L${.5 + xp},0 M${.5 - xp},.5 L${.5 - xp},0` },\n '╝': { [Style.NORMAL]: (xp, yp) => `M0,${.5 - yp} L${.5 - xp},${.5 - yp} L${.5 - xp},0 M0,${.5 + yp} L${.5 + xp},${.5 + yp} L${.5 + xp},0` },\n '╞': { [Style.NORMAL]: (xp, yp) => `${Shapes.TOP_TO_BOTTOM} M.5,${.5 - yp} L1,${.5 - yp} M.5,${.5 + yp} L1,${.5 + yp}` },\n '╟': { [Style.NORMAL]: (xp, yp) => `M${.5 - xp},0 L${.5 - xp},1 M${.5 + xp},0 L${.5 + xp},1 M${.5 + xp},.5 L1,.5` },\n '╠': { [Style.NORMAL]: (xp, yp) => `M${.5 - xp},0 L${.5 - xp},1 M1,${.5 + yp} L${.5 + xp},${.5 + yp} L${.5 + xp},1 M1,${.5 - yp} L${.5 + xp},${.5 - yp} L${.5 + xp},0` },\n '╡': { [Style.NORMAL]: (xp, yp) => `${Shapes.TOP_TO_BOTTOM} M0,${.5 - yp} L.5,${.5 - yp} M0,${.5 + yp} L.5,${.5 + yp}` },\n '╢': { [Style.NORMAL]: (xp, yp) => `M0,.5 L${.5 - xp},.5 M${.5 - xp},0 L${.5 - xp},1 M${.5 + xp},0 L${.5 + xp},1` },\n '╣': { [Style.NORMAL]: (xp, yp) => `M${.5 + xp},0 L${.5 + xp},1 M0,${.5 + yp} L${.5 - xp},${.5 + yp} L${.5 - xp},1 M0,${.5 - yp} L${.5 - xp},${.5 - yp} L${.5 - xp},0` },\n '╤': { [Style.NORMAL]: (xp, yp) => `M0,${.5 - yp} L1,${.5 - yp} M0,${.5 + yp} L1,${.5 + yp} M.5,${.5 + yp} L.5,1` },\n '╥': { [Style.NORMAL]: (xp, yp) => `${Shapes.LEFT_TO_RIGHT} M${.5 - xp},.5 L${.5 - xp},1 M${.5 + xp},.5 L${.5 + xp},1` },\n '╦': { [Style.NORMAL]: (xp, yp) => `M0,${.5 - yp} L1,${.5 - yp} M0,${.5 + yp} L${.5 - xp},${.5 + yp} L${.5 - xp},1 M1,${.5 + yp} L${.5 + xp},${.5 + yp} L${.5 + xp},1` },\n '╧': { [Style.NORMAL]: (xp, yp) => `M.5,0 L.5,${.5 - yp} M0,${.5 - yp} L1,${.5 - yp} M0,${.5 + yp} L1,${.5 + yp}` },\n '╨': { [Style.NORMAL]: (xp, yp) => `${Shapes.LEFT_TO_RIGHT} M${.5 - xp},.5 L${.5 - xp},0 M${.5 + xp},.5 L${.5 + xp},0` },\n '╩': { [Style.NORMAL]: (xp, yp) => `M0,${.5 + yp} L1,${.5 + yp} M0,${.5 - yp} L${.5 - xp},${.5 - yp} L${.5 - xp},0 M1,${.5 - yp} L${.5 + xp},${.5 - yp} L${.5 + xp},0` },\n '╪': { [Style.NORMAL]: (xp, yp) => `${Shapes.TOP_TO_BOTTOM} M0,${.5 - yp} L1,${.5 - yp} M0,${.5 + yp} L1,${.5 + yp}` },\n '╫': { [Style.NORMAL]: (xp, yp) => `${Shapes.LEFT_TO_RIGHT} M${.5 - xp},0 L${.5 - xp},1 M${.5 + xp},0 L${.5 + xp},1` },\n '╬': { [Style.NORMAL]: (xp, yp) => `M0,${.5 + yp} L${.5 - xp},${.5 + yp} L${.5 - xp},1 M1,${.5 + yp} L${.5 + xp},${.5 + yp} L${.5 + xp},1 M0,${.5 - yp} L${.5 - xp},${.5 - yp} L${.5 - xp},0 M1,${.5 - yp} L${.5 + xp},${.5 - yp} L${.5 + xp},0` },\n\n // Diagonal\n '╱': { [Style.NORMAL]: 'M1,0 L0,1' },\n '╲': { [Style.NORMAL]: 'M0,0 L1,1' },\n '╳': { [Style.NORMAL]: 'M1,0 L0,1 M0,0 L1,1' },\n\n // Mixed weight\n '╼': { [Style.NORMAL]: Shapes.MIDDLE_TO_LEFT, [Style.BOLD]: Shapes.MIDDLE_TO_RIGHT },\n '╽': { [Style.NORMAL]: Shapes.MIDDLE_TO_TOP, [Style.BOLD]: Shapes.MIDDLE_TO_BOTTOM },\n '╾': { [Style.NORMAL]: Shapes.MIDDLE_TO_RIGHT, [Style.BOLD]: Shapes.MIDDLE_TO_LEFT },\n '╿': { [Style.NORMAL]: Shapes.MIDDLE_TO_BOTTOM, [Style.BOLD]: Shapes.MIDDLE_TO_TOP },\n '┍': { [Style.NORMAL]: Shapes.MIDDLE_TO_BOTTOM, [Style.BOLD]: Shapes.MIDDLE_TO_RIGHT },\n '┎': { [Style.NORMAL]: Shapes.MIDDLE_TO_RIGHT, [Style.BOLD]: Shapes.MIDDLE_TO_BOTTOM },\n '┑': { [Style.NORMAL]: Shapes.MIDDLE_TO_BOTTOM, [Style.BOLD]: Shapes.MIDDLE_TO_LEFT },\n '┒': { [Style.NORMAL]: Shapes.MIDDLE_TO_LEFT, [Style.BOLD]: Shapes.MIDDLE_TO_BOTTOM },\n '┕': { [Style.NORMAL]: Shapes.MIDDLE_TO_TOP, [Style.BOLD]: Shapes.MIDDLE_TO_RIGHT },\n '┖': { [Style.NORMAL]: Shapes.MIDDLE_TO_RIGHT, [Style.BOLD]: Shapes.MIDDLE_TO_TOP },\n '┙': { [Style.NORMAL]: Shapes.MIDDLE_TO_TOP, [Style.BOLD]: Shapes.MIDDLE_TO_LEFT },\n '┚': { [Style.NORMAL]: Shapes.MIDDLE_TO_LEFT, [Style.BOLD]: Shapes.MIDDLE_TO_TOP },\n '┝': { [Style.NORMAL]: Shapes.TOP_TO_BOTTOM, [Style.BOLD]: Shapes.MIDDLE_TO_RIGHT },\n '┞': { [Style.NORMAL]: Shapes.RIGHT_TO_BOTTOM, [Style.BOLD]: Shapes.MIDDLE_TO_TOP },\n '┟': { [Style.NORMAL]: Shapes.TOP_TO_RIGHT, [Style.BOLD]: Shapes.MIDDLE_TO_BOTTOM },\n '┠': { [Style.NORMAL]: Shapes.MIDDLE_TO_RIGHT, [Style.BOLD]: Shapes.TOP_TO_BOTTOM },\n '┡': { [Style.NORMAL]: Shapes.MIDDLE_TO_BOTTOM, [Style.BOLD]: Shapes.TOP_TO_RIGHT },\n '┢': { [Style.NORMAL]: Shapes.MIDDLE_TO_TOP, [Style.BOLD]: Shapes.RIGHT_TO_BOTTOM },\n '┥': { [Style.NORMAL]: Shapes.TOP_TO_BOTTOM, [Style.BOLD]: Shapes.MIDDLE_TO_LEFT },\n '┦': { [Style.NORMAL]: Shapes.LEFT_TO_BOTTOM, [Style.BOLD]: Shapes.MIDDLE_TO_TOP },\n '┧': { [Style.NORMAL]: Shapes.TOP_TO_LEFT, [Style.BOLD]: Shapes.MIDDLE_TO_BOTTOM },\n '┨': { [Style.NORMAL]: Shapes.MIDDLE_TO_LEFT, [Style.BOLD]: Shapes.TOP_TO_BOTTOM },\n '┩': { [Style.NORMAL]: Shapes.MIDDLE_TO_BOTTOM, [Style.BOLD]: Shapes.TOP_TO_LEFT },\n '┪': { [Style.NORMAL]: Shapes.MIDDLE_TO_TOP, [Style.BOLD]: Shapes.LEFT_TO_BOTTOM },\n '┭': { [Style.NORMAL]: Shapes.RIGHT_TO_BOTTOM, [Style.BOLD]: Shapes.MIDDLE_TO_LEFT },\n '┮': { [Style.NORMAL]: Shapes.LEFT_TO_BOTTOM, [Style.BOLD]: Shapes.MIDDLE_TO_RIGHT },\n '┯': { [Style.NORMAL]: Shapes.MIDDLE_TO_BOTTOM, [Style.BOLD]: Shapes.LEFT_TO_RIGHT },\n '┰': { [Style.NORMAL]: Shapes.LEFT_TO_RIGHT, [Style.BOLD]: Shapes.MIDDLE_TO_BOTTOM },\n '┱': { [Style.NORMAL]: Shapes.MIDDLE_TO_RIGHT, [Style.BOLD]: Shapes.LEFT_TO_BOTTOM },\n '┲': { [Style.NORMAL]: Shapes.MIDDLE_TO_LEFT, [Style.BOLD]: Shapes.RIGHT_TO_BOTTOM },\n '┵': { [Style.NORMAL]: Shapes.TOP_TO_RIGHT, [Style.BOLD]: Shapes.MIDDLE_TO_LEFT },\n '┶': { [Style.NORMAL]: Shapes.TOP_TO_LEFT, [Style.BOLD]: Shapes.MIDDLE_TO_RIGHT },\n '┷': { [Style.NORMAL]: Shapes.MIDDLE_TO_TOP, [Style.BOLD]: Shapes.LEFT_TO_RIGHT },\n '┸': { [Style.NORMAL]: Shapes.LEFT_TO_RIGHT, [Style.BOLD]: Shapes.MIDDLE_TO_TOP },\n '┹': { [Style.NORMAL]: Shapes.MIDDLE_TO_RIGHT, [Style.BOLD]: Shapes.TOP_TO_LEFT },\n '┺': { [Style.NORMAL]: Shapes.MIDDLE_TO_LEFT, [Style.BOLD]: Shapes.TOP_TO_RIGHT },\n '┽': { [Style.NORMAL]: `${Shapes.TOP_TO_BOTTOM} ${Shapes.MIDDLE_TO_RIGHT}`, [Style.BOLD]: Shapes.MIDDLE_TO_LEFT },\n '┾': { [Style.NORMAL]: `${Shapes.TOP_TO_BOTTOM} ${Shapes.MIDDLE_TO_LEFT}`, [Style.BOLD]: Shapes.MIDDLE_TO_RIGHT },\n '┿': { [Style.NORMAL]: Shapes.TOP_TO_BOTTOM, [Style.BOLD]: Shapes.LEFT_TO_RIGHT },\n '╀': { [Style.NORMAL]: `${Shapes.LEFT_TO_RIGHT} ${Shapes.MIDDLE_TO_BOTTOM}`, [Style.BOLD]: Shapes.MIDDLE_TO_TOP },\n '╁': { [Style.NORMAL]: `${Shapes.MIDDLE_TO_TOP} ${Shapes.LEFT_TO_RIGHT}`, [Style.BOLD]: Shapes.MIDDLE_TO_BOTTOM },\n '╂': { [Style.NORMAL]: Shapes.LEFT_TO_RIGHT, [Style.BOLD]: Shapes.TOP_TO_BOTTOM },\n '╃': { [Style.NORMAL]: Shapes.RIGHT_TO_BOTTOM, [Style.BOLD]: Shapes.TOP_TO_LEFT },\n '╄': { [Style.NORMAL]: Shapes.LEFT_TO_BOTTOM, [Style.BOLD]: Shapes.TOP_TO_RIGHT },\n '╅': { [Style.NORMAL]: Shapes.TOP_TO_RIGHT, [Style.BOLD]: Shapes.LEFT_TO_BOTTOM },\n '╆': { [Style.NORMAL]: Shapes.TOP_TO_LEFT, [Style.BOLD]: Shapes.RIGHT_TO_BOTTOM },\n '╇': { [Style.NORMAL]: Shapes.MIDDLE_TO_BOTTOM, [Style.BOLD]: `${Shapes.MIDDLE_TO_TOP} ${Shapes.LEFT_TO_RIGHT}` },\n '╈': { [Style.NORMAL]: Shapes.MIDDLE_TO_TOP, [Style.BOLD]: `${Shapes.LEFT_TO_RIGHT} ${Shapes.MIDDLE_TO_BOTTOM}` },\n '╉': { [Style.NORMAL]: Shapes.MIDDLE_TO_RIGHT, [Style.BOLD]: `${Shapes.TOP_TO_BOTTOM} ${Shapes.MIDDLE_TO_LEFT}` },\n '╊': { [Style.NORMAL]: Shapes.MIDDLE_TO_LEFT, [Style.BOLD]: `${Shapes.TOP_TO_BOTTOM} ${Shapes.MIDDLE_TO_RIGHT}` },\n\n // Dashed\n '╌': { [Style.NORMAL]: Shapes.TWO_DASHES_HORIZONTAL },\n '╍': { [Style.BOLD]: Shapes.TWO_DASHES_HORIZONTAL },\n '┄': { [Style.NORMAL]: Shapes.THREE_DASHES_HORIZONTAL },\n '┅': { [Style.BOLD]: Shapes.THREE_DASHES_HORIZONTAL },\n '┈': { [Style.NORMAL]: Shapes.FOUR_DASHES_HORIZONTAL },\n '┉': { [Style.BOLD]: Shapes.FOUR_DASHES_HORIZONTAL },\n '╎': { [Style.NORMAL]: Shapes.TWO_DASHES_VERTICAL },\n '╏': { [Style.BOLD]: Shapes.TWO_DASHES_VERTICAL },\n '┆': { [Style.NORMAL]: Shapes.THREE_DASHES_VERTICAL },\n '┇': { [Style.BOLD]: Shapes.THREE_DASHES_VERTICAL },\n '┊': { [Style.NORMAL]: Shapes.FOUR_DASHES_VERTICAL },\n '┋': { [Style.BOLD]: Shapes.FOUR_DASHES_VERTICAL },\n\n // Curved\n '╭': { [Style.NORMAL]: 'C.5,1,.5,.5,1,.5' },\n '╮': { [Style.NORMAL]: 'C.5,1,.5,.5,0,.5' },\n '╯': { [Style.NORMAL]: 'C.5,0,.5,.5,0,.5' },\n '╰': { [Style.NORMAL]: 'C.5,0,.5,.5,1,.5' }\n};\n\ninterface IVectorShape {\n d: string;\n type: VectorType;\n /** Padding to apply to the vector's x axis in CSS pixels. */\n horizontalPadding?: number;\n}\n\nconst enum VectorType {\n FILL,\n STROKE\n}\n\n/**\n * This contains the definitions of the primarily used box drawing characters as vector shapes. The\n * reason these characters are defined specially is to avoid common problems if a user's font has\n * not been patched with powerline characters and also to get pixel perfect rendering as rendering\n * issues can occur around AA/SPAA.\n *\n * Original symbols defined in https://github.com/powerline/fontpatcher\n */\nexport const powerlineDefinitions: { [index: string]: IVectorShape } = {\n // Right triangle solid\n '\\u{E0B0}': { d: 'M0,0 L1,.5 L0,1', type: VectorType.FILL },\n // Right triangle line\n '\\u{E0B1}': { d: 'M0,0 L1,.5 L0,1', type: VectorType.STROKE, horizontalPadding: 0.5 },\n // Left triangle solid\n '\\u{E0B2}': { d: 'M1,0 L0,.5 L1,1', type: VectorType.FILL },\n // Left triangle line\n '\\u{E0B3}': { d: 'M1,0 L0,.5 L1,1', type: VectorType.STROKE, horizontalPadding: 0.5 }\n};\n\n/**\n * Try drawing a custom block element or box drawing character, returning whether it was\n * successfully drawn.\n */\nexport function tryDrawCustomChar(\n ctx: CanvasRenderingContext2D,\n c: string,\n xOffset: number,\n yOffset: number,\n scaledCellWidth: number,\n scaledCellHeight: number\n): boolean {\n const blockElementDefinition = blockElementDefinitions[c];\n if (blockElementDefinition) {\n drawBlockElementChar(ctx, blockElementDefinition, xOffset, yOffset, scaledCellWidth, scaledCellHeight);\n return true;\n }\n\n const patternDefinition = patternCharacterDefinitions[c];\n if (patternDefinition) {\n drawPatternChar(ctx, patternDefinition, xOffset, yOffset, scaledCellWidth, scaledCellHeight);\n return true;\n }\n\n const boxDrawingDefinition = boxDrawingDefinitions[c];\n if (boxDrawingDefinition) {\n drawBoxDrawingChar(ctx, boxDrawingDefinition, xOffset, yOffset, scaledCellWidth, scaledCellHeight);\n return true;\n }\n\n const powerlineDefinition = powerlineDefinitions[c];\n if (powerlineDefinition) {\n drawPowerlineChar(ctx, powerlineDefinition, xOffset, yOffset, scaledCellWidth, scaledCellHeight);\n return true;\n }\n\n return false;\n}\n\nfunction drawBlockElementChar(\n ctx: CanvasRenderingContext2D,\n charDefinition: IBlockVector[],\n xOffset: number,\n yOffset: number,\n scaledCellWidth: number,\n scaledCellHeight: number\n): void {\n for (let i = 0; i < charDefinition.length; i++) {\n const box = charDefinition[i];\n const xEighth = scaledCellWidth / 8;\n const yEighth = scaledCellHeight / 8;\n ctx.fillRect(\n xOffset + box.x * xEighth,\n yOffset + box.y * yEighth,\n box.w * xEighth,\n box.h * yEighth\n );\n }\n}\n\nconst cachedPatterns: Map> = new Map();\n\nfunction drawPatternChar(\n ctx: CanvasRenderingContext2D,\n charDefinition: number[][],\n xOffset: number,\n yOffset: number,\n scaledCellWidth: number,\n scaledCellHeight: number\n): void {\n let patternSet = cachedPatterns.get(charDefinition);\n if (!patternSet) {\n patternSet = new Map();\n cachedPatterns.set(charDefinition, patternSet);\n }\n const fillStyle = ctx.fillStyle;\n if (typeof fillStyle !== 'string') {\n throw new Error(`Unexpected fillStyle type \"${fillStyle}\"`);\n }\n let pattern = patternSet.get(fillStyle);\n if (!pattern) {\n const width = charDefinition[0].length;\n const height = charDefinition.length;\n const tmpCanvas = document.createElement('canvas');\n tmpCanvas.width = width;\n tmpCanvas.height = height;\n const tmpCtx = throwIfFalsy(tmpCanvas.getContext('2d'));\n const imageData = new ImageData(width, height);\n\n // Extract rgba from fillStyle\n let r: number;\n let g: number;\n let b: number;\n let a: number;\n if (fillStyle.startsWith('#')) {\n r = parseInt(fillStyle.slice(1, 3), 16);\n g = parseInt(fillStyle.slice(3, 5), 16);\n b = parseInt(fillStyle.slice(5, 7), 16);\n a = fillStyle.length > 7 && parseInt(fillStyle.slice(7, 9), 16) || 1;\n } else if (fillStyle.startsWith('rgba')) {\n ([r, g, b, a] = fillStyle.substring(5, fillStyle.length - 1).split(',').map(e => parseFloat(e)));\n } else {\n throw new Error(`Unexpected fillStyle color format \"${fillStyle}\" when drawing pattern glyph`);\n }\n\n for (let y = 0; y < height; y++) {\n for (let x = 0; x < width; x++) {\n imageData.data[(y * width + x) * 4 ] = r;\n imageData.data[(y * width + x) * 4 + 1] = g;\n imageData.data[(y * width + x) * 4 + 2] = b;\n imageData.data[(y * width + x) * 4 + 3] = charDefinition[y][x] * (a * 255);\n }\n }\n tmpCtx.putImageData(imageData, 0, 0);\n pattern = throwIfFalsy(ctx.createPattern(tmpCanvas, null));\n patternSet.set(fillStyle, pattern);\n }\n ctx.fillStyle = pattern;\n ctx.fillRect(xOffset, yOffset, scaledCellWidth, scaledCellHeight);\n}\n\n/**\n * Draws the following box drawing characters by mapping a subset of SVG d attribute instructions to\n * canvas draw calls.\n *\n * Box styles: ┎┰┒┍┯┑╓╥╖╒╤╕ ┏┳┓┌┲┓┌┬┐┏┱┐\n * ┌─┬─┐ ┏━┳━┓ ╔═╦═╗ ┠╂┨┝┿┥╟╫╢╞╪╡ ┡╇┩├╊┫┢╈┪┣╉┤\n * │ │ │ ┃ ┃ ┃ ║ ║ ║ ┖┸┚┕┷┙╙╨╜╘╧╛ └┴┘└┺┛┗┻┛┗┹┘\n * ├─┼─┤ ┣━╋━┫ ╠═╬═╣ ┏┱┐┌┲┓┌┬┐┌┬┐ ┏┳┓┌┮┓┌┬┐┏┭┐\n * │ │ │ ┃ ┃ ┃ ║ ║ ║ ┡╃┤├╄┩├╆┪┢╅┤ ┞╀┦├┾┫┟╁┧┣┽┤\n * └─┴─┘ ┗━┻━┛ ╚═╩═╝ └┴┘└┴┘└┺┛┗┹┘ └┴┘└┶┛┗┻┛┗┵┘\n *\n * Other:\n * ╭─╮ ╲ ╱ ╷╻╎╏┆┇┊┋ ╺╾╴ ╌╌╌ ┄┄┄ ┈┈┈\n * │ │ ╳ ╽╿╎╏┆┇┊┋ ╶╼╸ ╍╍╍ ┅┅┅ ┉┉┉\n * ╰─╯ ╱ ╲ ╹╵╎╏┆┇┊┋\n *\n * All box drawing characters:\n * ─ ━ │ ┃ ┄ ┅ ┆ ┇ ┈ ┉ ┊ ┋ ┌ ┍ ┎ ┏\n * ┐ ┑ ┒ ┓ └ ┕ ┖ ┗ ┘ ┙ ┚ ┛ ├ ┝ ┞ ┟\n * ┠ ┡ ┢ ┣ ┤ ┥ ┦ ┧ ┨ ┩ ┪ ┫ ┬ ┭ ┮ ┯\n * ┰ ┱ ┲ ┳ ┴ ┵ ┶ ┷ ┸ ┹ ┺ ┻ ┼ ┽ ┾ ┿\n * ╀ ╁ ╂ ╃ ╄ ╅ ╆ ╇ ╈ ╉ ╊ ╋ ╌ ╍ ╎ ╏\n * ═ ║ ╒ ╓ ╔ ╕ ╖ ╗ ╘ ╙ ╚ ╛ ╜ ╝ ╞ ╟\n * ╠ ╡ ╢ ╣ ╤ ╥ ╦ ╧ ╨ ╩ ╪ ╫ ╬ ╭ ╮ ╯\n * ╰ ╱ ╲ ╳ ╴ ╵ ╶ ╷ ╸ ╹ ╺ ╻ ╼ ╽ ╾ ╿\n *\n * ---\n *\n * Box drawing alignment tests: █\n * ▉\n * ╔══╦══╗ ┌──┬──┐ ╭──┬──╮ ╭──┬──╮ ┏━━┳━━┓ ┎┒┏┑ ╷ ╻ ┏┯┓ ┌┰┐ ▊ ╱╲╱╲╳╳╳\n * ║┌─╨─┐║ │╔═╧═╗│ │╒═╪═╕│ │╓─╁─╖│ ┃┌─╂─┐┃ ┗╃╄┙ ╶┼╴╺╋╸┠┼┨ ┝╋┥ ▋ ╲╱╲╱╳╳╳\n * ║│╲ ╱│║ │║ ║│ ││ │ ││ │║ ┃ ║│ ┃│ ╿ │┃ ┍╅╆┓ ╵ ╹ ┗┷┛ └┸┘ ▌ ╱╲╱╲╳╳╳\n * ╠╡ ╳ ╞╣ ├╢ ╟┤ ├┼─┼─┼┤ ├╫─╂─╫┤ ┣┿╾┼╼┿┫ ┕┛┖┚ ┌┄┄┐ ╎ ┏┅┅┓ ┋ ▍ ╲╱╲╱╳╳╳\n * ║│╱ ╲│║ │║ ║│ ││ │ ││ │║ ┃ ║│ ┃│ ╽ │┃ ░░▒▒▓▓██ ┊ ┆ ╎ ╏ ┇ ┋ ▎\n * ║└─╥─┘║ │╚═╤═╝│ │╘═╪═╛│ │╙─╀─╜│ ┃└─╂─┘┃ ░░▒▒▓▓██ ┊ ┆ ╎ ╏ ┇ ┋ ▏\n * ╚══╩══╝ └──┴──┘ ╰──┴──╯ ╰──┴──╯ ┗━━┻━━┛ └╌╌┘ ╎ ┗╍╍┛ ┋ ▁▂▃▄▅▆▇█\n *\n * Source: https://www.w3.org/2001/06/utf-8-test/UTF-8-demo.html\n */\nfunction drawBoxDrawingChar(\n ctx: CanvasRenderingContext2D,\n charDefinition: { [fontWeight: number]: string | ((xp: number, yp: number) => string) },\n xOffset: number,\n yOffset: number,\n scaledCellWidth: number,\n scaledCellHeight: number\n): void {\n ctx.strokeStyle = ctx.fillStyle;\n for (const [fontWeight, instructions] of Object.entries(charDefinition)) {\n ctx.beginPath();\n ctx.lineWidth = window.devicePixelRatio * Number.parseInt(fontWeight);\n let actualInstructions: string;\n if (typeof instructions === 'function') {\n const xp = .15;\n const yp = .15 / scaledCellHeight * scaledCellWidth;\n actualInstructions = instructions(xp, yp);\n } else {\n actualInstructions = instructions;\n }\n for (const instruction of actualInstructions.split(' ')) {\n const type = instruction[0];\n const f = svgToCanvasInstructionMap[type];\n if (!f) {\n console.error(`Could not find drawing instructions for \"${type}\"`);\n continue;\n }\n const args: string[] = instruction.substring(1).split(',');\n if (!args[0] || !args[1]) {\n continue;\n }\n f(ctx, translateArgs(args, scaledCellWidth, scaledCellHeight, xOffset, yOffset));\n }\n ctx.stroke();\n ctx.closePath();\n }\n}\n\nfunction drawPowerlineChar(\n ctx: CanvasRenderingContext2D,\n charDefinition: IVectorShape,\n xOffset: number,\n yOffset: number,\n scaledCellWidth: number,\n scaledCellHeight: number\n): void {\n ctx.beginPath();\n ctx.lineWidth = window.devicePixelRatio;\n for (const instruction of charDefinition.d.split(' ')) {\n const type = instruction[0];\n const f = svgToCanvasInstructionMap[type];\n if (!f) {\n console.error(`Could not find drawing instructions for \"${type}\"`);\n continue;\n }\n const args: string[] = instruction.substring(1).split(',');\n if (!args[0] || !args[1]) {\n continue;\n }\n f(ctx, translateArgs(args, scaledCellWidth, scaledCellHeight, xOffset, yOffset, charDefinition.horizontalPadding));\n }\n if (charDefinition.type === VectorType.STROKE) {\n ctx.strokeStyle = ctx.fillStyle;\n ctx.stroke();\n } else {\n ctx.fill();\n }\n ctx.closePath();\n}\n\nfunction clamp(value: number, max: number, min: number = 0): number {\n return Math.max(Math.min(value, max), min);\n}\n\nconst svgToCanvasInstructionMap: { [index: string]: any } = {\n 'C': (ctx: CanvasRenderingContext2D, args: number[]) => ctx.bezierCurveTo(args[0], args[1], args[2], args[3], args[4], args[5]),\n 'L': (ctx: CanvasRenderingContext2D, args: number[]) => ctx.lineTo(args[0], args[1]),\n 'M': (ctx: CanvasRenderingContext2D, args: number[]) => ctx.moveTo(args[0], args[1])\n};\n\nfunction translateArgs(args: string[], cellWidth: number, cellHeight: number, xOffset: number, yOffset: number, horizontalPadding: number = 0): number[] {\n const result = args.map(e => parseFloat(e) || parseInt(e));\n\n if (result.length < 2) {\n throw new Error('Too few arguments for instruction');\n }\n\n for (let x = 0; x < result.length; x += 2) {\n // Translate from 0-1 to 0-cellWidth\n result[x] *= cellWidth - (horizontalPadding * 2 * window.devicePixelRatio);\n // Ensure coordinate doesn't escape cell bounds and round to the nearest 0.5 to ensure a crisp\n // line at 100% devicePixelRatio\n if (result[x] !== 0) {\n result[x] = clamp(Math.round(result[x] + 0.5) - 0.5, cellWidth, 0);\n }\n // Apply the cell's offset (ie. x*cellWidth)\n result[x] += xOffset + (horizontalPadding * window.devicePixelRatio);\n }\n\n for (let y = 1; y < result.length; y += 2) {\n // Translate from 0-1 to 0-cellHeight\n result[y] *= cellHeight;\n // Ensure coordinate doesn't escape cell bounds and round to the nearest 0.5 to ensure a crisp\n // line at 100% devicePixelRatio\n if (result[y] !== 0) {\n result[y] = clamp(Math.round(result[y] + 0.5) - 0.5, cellHeight, 0);\n }\n // Apply the cell's offset (ie. x*cellHeight)\n result[y] += yOffset;\n }\n\n return result;\n}\n", "/**\n * Copyright (c) 2017 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nexport class GridCache {\n public cache: (T | undefined)[][];\n\n public constructor() {\n this.cache = [];\n }\n\n public resize(width: number, height: number): void {\n for (let x = 0; x < width; x++) {\n if (this.cache.length <= x) {\n this.cache.push([]);\n }\n for (let y = this.cache[x].length; y < height; y++) {\n this.cache[x].push(undefined);\n }\n this.cache[x].length = height;\n }\n this.cache.length = width;\n }\n\n public clear(): void {\n for (let x = 0; x < this.cache.length; x++) {\n for (let y = 0; y < this.cache[x].length; y++) {\n this.cache[x][y] = undefined;\n }\n }\n }\n}\n", "/**\n * Copyright (c) 2017 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IRenderDimensions } from 'browser/renderer/Types';\nimport { BaseRenderLayer } from './BaseRenderLayer';\nimport { INVERTED_DEFAULT_COLOR } from 'browser/renderer/atlas/Constants';\nimport { is256Color } from 'browser/renderer/atlas/CharAtlasUtils';\nimport { IColorSet, ILinkifierEvent, ILinkifier, ILinkifier2 } from 'browser/Types';\nimport { IBufferService, IDecorationService, IOptionsService } from 'common/services/Services';\n\nexport class LinkRenderLayer extends BaseRenderLayer {\n private _state: ILinkifierEvent | undefined;\n\n constructor(\n container: HTMLElement,\n zIndex: number,\n colors: IColorSet,\n rendererId: number,\n linkifier: ILinkifier,\n linkifier2: ILinkifier2,\n @IBufferService bufferService: IBufferService,\n @IOptionsService optionsService: IOptionsService,\n @IDecorationService decorationService: IDecorationService\n ) {\n super(container, 'link', zIndex, true, colors, rendererId, bufferService, optionsService, decorationService);\n linkifier.onShowLinkUnderline(e => this._onShowLinkUnderline(e));\n linkifier.onHideLinkUnderline(e => this._onHideLinkUnderline(e));\n\n linkifier2.onShowLinkUnderline(e => this._onShowLinkUnderline(e));\n linkifier2.onHideLinkUnderline(e => this._onHideLinkUnderline(e));\n }\n\n public resize(dim: IRenderDimensions): void {\n super.resize(dim);\n // Resizing the canvas discards the contents of the canvas so clear state\n this._state = undefined;\n }\n\n public reset(): void {\n this._clearCurrentLink();\n }\n\n private _clearCurrentLink(): void {\n if (this._state) {\n this._clearCells(this._state.x1, this._state.y1, this._state.cols - this._state.x1, 1);\n const middleRowCount = this._state.y2 - this._state.y1 - 1;\n if (middleRowCount > 0) {\n this._clearCells(0, this._state.y1 + 1, this._state.cols, middleRowCount);\n }\n this._clearCells(0, this._state.y2, this._state.x2, 1);\n this._state = undefined;\n }\n }\n\n private _onShowLinkUnderline(e: ILinkifierEvent): void {\n if (e.fg === INVERTED_DEFAULT_COLOR) {\n this._ctx.fillStyle = this._colors.background.css;\n } else if (e.fg && is256Color(e.fg)) {\n // 256 color support\n this._ctx.fillStyle = this._colors.ansi[e.fg].css;\n } else {\n this._ctx.fillStyle = this._colors.foreground.css;\n }\n\n if (e.y1 === e.y2) {\n // Single line link\n this._fillBottomLineAtCells(e.x1, e.y1, e.x2 - e.x1);\n } else {\n // Multi-line link\n this._fillBottomLineAtCells(e.x1, e.y1, e.cols - e.x1);\n for (let y = e.y1 + 1; y < e.y2; y++) {\n this._fillBottomLineAtCells(0, y, e.cols);\n }\n this._fillBottomLineAtCells(0, e.y2, e.x2);\n }\n this._state = e;\n }\n\n private _onHideLinkUnderline(e: ILinkifierEvent): void {\n this._clearCurrentLink();\n }\n}\n", "/**\n * Copyright (c) 2017 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { TextRenderLayer } from 'browser/renderer/TextRenderLayer';\nimport { SelectionRenderLayer } from 'browser/renderer/SelectionRenderLayer';\nimport { CursorRenderLayer } from 'browser/renderer/CursorRenderLayer';\nimport { IRenderLayer, IRenderer, IRenderDimensions, IRequestRedrawEvent } from 'browser/renderer/Types';\nimport { LinkRenderLayer } from 'browser/renderer/LinkRenderLayer';\nimport { Disposable } from 'common/Lifecycle';\nimport { IColorSet, ILinkifier, ILinkifier2 } from 'browser/Types';\nimport { ICharSizeService } from 'browser/services/Services';\nimport { IBufferService, IOptionsService, IInstantiationService } from 'common/services/Services';\nimport { removeTerminalFromCache } from 'browser/renderer/atlas/CharAtlasCache';\nimport { EventEmitter, IEvent } from 'common/EventEmitter';\n\nlet nextRendererId = 1;\n\nexport class Renderer extends Disposable implements IRenderer {\n private _id = nextRendererId++;\n\n private _renderLayers: IRenderLayer[];\n private _devicePixelRatio: number;\n\n public dimensions: IRenderDimensions;\n\n private _onRequestRedraw = new EventEmitter();\n public get onRequestRedraw(): IEvent { return this._onRequestRedraw.event; }\n\n constructor(\n private _colors: IColorSet,\n private readonly _screenElement: HTMLElement,\n linkifier: ILinkifier,\n linkifier2: ILinkifier2,\n @IInstantiationService instantiationService: IInstantiationService,\n @IBufferService private readonly _bufferService: IBufferService,\n @ICharSizeService private readonly _charSizeService: ICharSizeService,\n @IOptionsService private readonly _optionsService: IOptionsService\n ) {\n super();\n const allowTransparency = this._optionsService.rawOptions.allowTransparency;\n this._renderLayers = [\n instantiationService.createInstance(TextRenderLayer, this._screenElement, 0, this._colors, allowTransparency, this._id),\n instantiationService.createInstance(SelectionRenderLayer, this._screenElement, 1, this._colors, this._id),\n instantiationService.createInstance(LinkRenderLayer, this._screenElement, 2, this._colors, this._id, linkifier, linkifier2),\n instantiationService.createInstance(CursorRenderLayer, this._screenElement, 3, this._colors, this._id, this._onRequestRedraw)\n ];\n this.dimensions = {\n scaledCharWidth: 0,\n scaledCharHeight: 0,\n scaledCellWidth: 0,\n scaledCellHeight: 0,\n scaledCharLeft: 0,\n scaledCharTop: 0,\n scaledCanvasWidth: 0,\n scaledCanvasHeight: 0,\n canvasWidth: 0,\n canvasHeight: 0,\n actualCellWidth: 0,\n actualCellHeight: 0\n };\n this._devicePixelRatio = window.devicePixelRatio;\n this._updateDimensions();\n this.onOptionsChanged();\n }\n\n public dispose(): void {\n for (const l of this._renderLayers) {\n l.dispose();\n }\n super.dispose();\n removeTerminalFromCache(this._id);\n }\n\n public onDevicePixelRatioChange(): void {\n // If the device pixel ratio changed, the char atlas needs to be regenerated\n // and the terminal needs to refreshed\n if (this._devicePixelRatio !== window.devicePixelRatio) {\n this._devicePixelRatio = window.devicePixelRatio;\n this.onResize(this._bufferService.cols, this._bufferService.rows);\n }\n }\n\n public setColors(colors: IColorSet): void {\n this._colors = colors;\n // Clear layers and force a full render\n for (const l of this._renderLayers) {\n l.setColors(this._colors);\n l.reset();\n }\n }\n\n public onResize(cols: number, rows: number): void {\n // Update character and canvas dimensions\n this._updateDimensions();\n\n // Resize all render layers\n for (const l of this._renderLayers) {\n l.resize(this.dimensions);\n }\n\n // Resize the screen\n this._screenElement.style.width = `${this.dimensions.canvasWidth}px`;\n this._screenElement.style.height = `${this.dimensions.canvasHeight}px`;\n }\n\n public onCharSizeChanged(): void {\n this.onResize(this._bufferService.cols, this._bufferService.rows);\n }\n\n public onBlur(): void {\n this._runOperation(l => l.onBlur());\n }\n\n public onFocus(): void {\n this._runOperation(l => l.onFocus());\n }\n\n public onSelectionChanged(start: [number, number] | undefined, end: [number, number] | undefined, columnSelectMode: boolean = false): void {\n this._runOperation(l => l.onSelectionChanged(start, end, columnSelectMode));\n // Selection foreground requires a full re-render\n if (this._colors.selectionForeground) {\n this._onRequestRedraw.fire({ start: 0, end: this._bufferService.rows - 1 });\n }\n }\n\n public onCursorMove(): void {\n this._runOperation(l => l.onCursorMove());\n }\n\n public onOptionsChanged(): void {\n this._runOperation(l => l.onOptionsChanged());\n }\n\n public clear(): void {\n this._runOperation(l => l.reset());\n }\n\n private _runOperation(operation: (layer: IRenderLayer) => void): void {\n for (const l of this._renderLayers) {\n operation(l);\n }\n }\n\n /**\n * Performs the refresh loop callback, calling refresh only if a refresh is\n * necessary before queueing up the next one.\n */\n public renderRows(start: number, end: number): void {\n for (const l of this._renderLayers) {\n l.onGridChanged(start, end);\n }\n }\n\n public clearTextureAtlas(): void {\n for (const layer of this._renderLayers) {\n layer.clearTextureAtlas();\n }\n }\n\n /**\n * Recalculates the character and canvas dimensions.\n */\n private _updateDimensions(): void {\n if (!this._charSizeService.hasValidSize) {\n return;\n }\n\n // Calculate the scaled character width. Width is floored as it must be\n // drawn to an integer grid in order for the CharAtlas \"stamps\" to not be\n // blurry. When text is drawn to the grid not using the CharAtlas, it is\n // clipped to ensure there is no overlap with the next cell.\n this.dimensions.scaledCharWidth = Math.floor(this._charSizeService.width * window.devicePixelRatio);\n\n // Calculate the scaled character height. Height is ceiled in case\n // devicePixelRatio is a floating point number in order to ensure there is\n // enough space to draw the character to the cell.\n this.dimensions.scaledCharHeight = Math.ceil(this._charSizeService.height * window.devicePixelRatio);\n\n // Calculate the scaled cell height, if lineHeight is not 1 then the value\n // will be floored because since lineHeight can never be lower then 1, there\n // is a guarentee that the scaled line height will always be larger than\n // scaled char height.\n this.dimensions.scaledCellHeight = Math.floor(this.dimensions.scaledCharHeight * this._optionsService.rawOptions.lineHeight);\n\n // Calculate the y coordinate within a cell that text should draw from in\n // order to draw in the center of a cell.\n this.dimensions.scaledCharTop = this._optionsService.rawOptions.lineHeight === 1 ? 0 : Math.round((this.dimensions.scaledCellHeight - this.dimensions.scaledCharHeight) / 2);\n\n // Calculate the scaled cell width, taking the letterSpacing into account.\n this.dimensions.scaledCellWidth = this.dimensions.scaledCharWidth + Math.round(this._optionsService.rawOptions.letterSpacing);\n\n // Calculate the x coordinate with a cell that text should draw from in\n // order to draw in the center of a cell.\n this.dimensions.scaledCharLeft = Math.floor(this._optionsService.rawOptions.letterSpacing / 2);\n\n // Recalculate the canvas dimensions; scaled* define the actual number of\n // pixel in the canvas\n this.dimensions.scaledCanvasHeight = this._bufferService.rows * this.dimensions.scaledCellHeight;\n this.dimensions.scaledCanvasWidth = this._bufferService.cols * this.dimensions.scaledCellWidth;\n\n // The the size of the canvas on the page. It's very important that this\n // rounds to nearest integer and not ceils as browsers often set\n // window.devicePixelRatio as something like 1.100000023841858, when it's\n // actually 1.1. Ceiling causes blurriness as the backing canvas image is 1\n // pixel too large for the canvas element size.\n this.dimensions.canvasHeight = Math.round(this.dimensions.scaledCanvasHeight / window.devicePixelRatio);\n this.dimensions.canvasWidth = Math.round(this.dimensions.scaledCanvasWidth / window.devicePixelRatio);\n\n // Get the _actual_ dimensions of an individual cell. This needs to be\n // derived from the canvasWidth/Height calculated above which takes into\n // account window.devicePixelRatio. ICharSizeService.width/height by itself\n // is insufficient when the page is not at 100% zoom level as it's measured\n // in CSS pixels, but the actual char size on the canvas can differ.\n this.dimensions.actualCellHeight = this.dimensions.canvasHeight / this._bufferService.rows;\n this.dimensions.actualCellWidth = this.dimensions.canvasWidth / this._bufferService.cols;\n }\n}\n", "/**\n * Copyright (c) 2019 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nexport function throwIfFalsy(value: T | undefined | null): T {\n if (!value) {\n throw new Error('value must not be falsy');\n }\n return value;\n}\n\nexport function isPowerlineGlyph(codepoint: number): boolean {\n // Only return true for Powerline symbols which require\n // different padding and should be excluded from minimum contrast\n // ratio standards\n return 0xE0A4 <= codepoint && codepoint <= 0xE0D6;\n}\n\nfunction isBoxOrBlockGlyph(codepoint: number): boolean {\n return (0x2500 <= codepoint && codepoint <= 0x259F);\n}\n\nexport function excludeFromContrastRatioDemands(codepoint: number): boolean {\n return isPowerlineGlyph(codepoint) || isBoxOrBlockGlyph(codepoint);\n}\n", "/**\n * Copyright (c) 2017 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IRenderDimensions } from 'browser/renderer/Types';\nimport { BaseRenderLayer } from 'browser/renderer/BaseRenderLayer';\nimport { IColorSet } from 'browser/Types';\nimport { IBufferService, IDecorationService, IOptionsService } from 'common/services/Services';\n\ninterface ISelectionState {\n start?: [number, number];\n end?: [number, number];\n columnSelectMode?: boolean;\n ydisp?: number;\n}\n\nexport class SelectionRenderLayer extends BaseRenderLayer {\n private _state!: ISelectionState;\n\n constructor(\n container: HTMLElement,\n zIndex: number,\n colors: IColorSet,\n rendererId: number,\n @IBufferService bufferService: IBufferService,\n @IOptionsService optionsService: IOptionsService,\n @IDecorationService decorationService: IDecorationService\n ) {\n super(container, 'selection', zIndex, true, colors, rendererId, bufferService, optionsService, decorationService);\n this._clearState();\n }\n\n private _clearState(): void {\n this._state = {\n start: undefined,\n end: undefined,\n columnSelectMode: undefined,\n ydisp: undefined\n };\n }\n\n public resize(dim: IRenderDimensions): void {\n super.resize(dim);\n // Resizing the canvas discards the contents of the canvas so clear state\n this._clearState();\n }\n\n public reset(): void {\n if (this._state.start && this._state.end) {\n this._clearState();\n this._clearAll();\n }\n }\n\n public onSelectionChanged(start: [number, number] | undefined, end: [number, number] | undefined, columnSelectMode: boolean): void {\n super.onSelectionChanged(start, end, columnSelectMode);\n\n // Selection has not changed\n if (!this._didStateChange(start, end, columnSelectMode, this._bufferService.buffer.ydisp)) {\n return;\n }\n\n // Remove all selections\n this._clearAll();\n\n // Selection does not exist\n if (!start || !end) {\n this._clearState();\n return;\n }\n\n // Translate from buffer position to viewport position\n const viewportStartRow = start[1] - this._bufferService.buffer.ydisp;\n const viewportEndRow = end[1] - this._bufferService.buffer.ydisp;\n const viewportCappedStartRow = Math.max(viewportStartRow, 0);\n const viewportCappedEndRow = Math.min(viewportEndRow, this._bufferService.rows - 1);\n\n // No need to draw the selection\n if (viewportCappedStartRow >= this._bufferService.rows || viewportCappedEndRow < 0) {\n this._state.ydisp = this._bufferService.buffer.ydisp;\n return;\n }\n\n this._ctx.fillStyle = this._colors.selectionTransparent.css;\n\n if (columnSelectMode) {\n const startCol = start[0];\n const width = end[0] - startCol;\n const height = viewportCappedEndRow - viewportCappedStartRow + 1;\n this._fillCells(startCol, viewportCappedStartRow, width, height);\n } else {\n // Draw first row\n const startCol = viewportStartRow === viewportCappedStartRow ? start[0] : 0;\n const startRowEndCol = viewportCappedStartRow === viewportEndRow ? end[0] : this._bufferService.cols;\n this._fillCells(startCol, viewportCappedStartRow, startRowEndCol - startCol, 1);\n\n // Draw middle rows\n const middleRowsCount = Math.max(viewportCappedEndRow - viewportCappedStartRow - 1, 0);\n this._fillCells(0, viewportCappedStartRow + 1, this._bufferService.cols, middleRowsCount);\n\n // Draw final row\n if (viewportCappedStartRow !== viewportCappedEndRow) {\n // Only draw viewportEndRow if it's not the same as viewportStartRow\n const endCol = viewportEndRow === viewportCappedEndRow ? end[0] : this._bufferService.cols;\n this._fillCells(0, viewportCappedEndRow, endCol, 1);\n }\n }\n\n // Save state for next render\n this._state.start = [start[0], start[1]];\n this._state.end = [end[0], end[1]];\n this._state.columnSelectMode = columnSelectMode;\n this._state.ydisp = this._bufferService.buffer.ydisp;\n }\n\n private _didStateChange(start: [number, number] | undefined, end: [number, number] | undefined, columnSelectMode: boolean, ydisp: number): boolean {\n return !this._areCoordinatesEqual(start, this._state.start) ||\n !this._areCoordinatesEqual(end, this._state.end) ||\n columnSelectMode !== this._state.columnSelectMode ||\n ydisp !== this._state.ydisp;\n }\n\n private _areCoordinatesEqual(coord1: [number, number] | undefined, coord2: [number, number] | undefined): boolean {\n if (!coord1 || !coord2) {\n return false;\n }\n\n return coord1[0] === coord2[0] && coord1[1] === coord2[1];\n }\n}\n", "/**\n * Copyright (c) 2017 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IRenderDimensions } from 'browser/renderer/Types';\nimport { CharData, ICellData } from 'common/Types';\nimport { GridCache } from 'browser/renderer/GridCache';\nimport { BaseRenderLayer } from 'browser/renderer/BaseRenderLayer';\nimport { AttributeData } from 'common/buffer/AttributeData';\nimport { NULL_CELL_CODE, Content } from 'common/buffer/Constants';\nimport { IColorSet } from 'browser/Types';\nimport { CellData } from 'common/buffer/CellData';\nimport { IOptionsService, IBufferService, IDecorationService } from 'common/services/Services';\nimport { ICharacterJoinerService } from 'browser/services/Services';\nimport { JoinedCellData } from 'browser/services/CharacterJoinerService';\n\n/**\n * This CharData looks like a null character, which will forc a clear and render\n * when the character changes (a regular space ' ' character may not as it's\n * drawn state is a cleared cell).\n */\n// const OVERLAP_OWNED_CHAR_DATA: CharData = [null, '', 0, -1];\n\nexport class TextRenderLayer extends BaseRenderLayer {\n private _state: GridCache;\n private _characterWidth: number = 0;\n private _characterFont: string = '';\n private _characterOverlapCache: { [key: string]: boolean } = {};\n private _workCell = new CellData();\n\n constructor(\n container: HTMLElement,\n zIndex: number,\n colors: IColorSet,\n alpha: boolean,\n rendererId: number,\n @IBufferService bufferService: IBufferService,\n @IOptionsService optionsService: IOptionsService,\n @ICharacterJoinerService private readonly _characterJoinerService: ICharacterJoinerService,\n @IDecorationService decorationService: IDecorationService\n ) {\n super(container, 'text', zIndex, alpha, colors, rendererId, bufferService, optionsService, decorationService);\n this._state = new GridCache();\n }\n\n public resize(dim: IRenderDimensions): void {\n super.resize(dim);\n\n // Clear the character width cache if the font or width has changed\n const terminalFont = this._getFont(false, false);\n if (this._characterWidth !== dim.scaledCharWidth || this._characterFont !== terminalFont) {\n this._characterWidth = dim.scaledCharWidth;\n this._characterFont = terminalFont;\n this._characterOverlapCache = {};\n }\n // Resizing the canvas discards the contents of the canvas so clear state\n this._state.clear();\n this._state.resize(this._bufferService.cols, this._bufferService.rows);\n }\n\n public reset(): void {\n this._state.clear();\n this._clearAll();\n }\n\n private _forEachCell(\n firstRow: number,\n lastRow: number,\n callback: (\n cell: ICellData,\n x: number,\n y: number\n ) => void\n ): void {\n for (let y = firstRow; y <= lastRow; y++) {\n const row = y + this._bufferService.buffer.ydisp;\n const line = this._bufferService.buffer.lines.get(row);\n const joinedRanges = this._characterJoinerService.getJoinedCharacters(row);\n for (let x = 0; x < this._bufferService.cols; x++) {\n line!.loadCell(x, this._workCell);\n let cell = this._workCell;\n\n // If true, indicates that the current character(s) to draw were joined.\n let isJoined = false;\n let lastCharX = x;\n\n // The character to the left is a wide character, drawing is owned by\n // the char at x-1\n if (cell.getWidth() === 0) {\n continue;\n }\n\n // Process any joined character ranges as needed. Because of how the\n // ranges are produced, we know that they are valid for the characters\n // and attributes of our input.\n if (joinedRanges.length > 0 && x === joinedRanges[0][0]) {\n isJoined = true;\n const range = joinedRanges.shift()!;\n\n // We already know the exact start and end column of the joined range,\n // so we get the string and width representing it directly\n cell = new JoinedCellData(\n this._workCell,\n line!.translateToString(true, range[0], range[1]),\n range[1] - range[0]\n );\n\n // Skip over the cells occupied by this range in the loop\n lastCharX = range[1] - 1;\n }\n\n // If the character is an overlapping char and the character to the\n // right is a space, take ownership of the cell to the right. We skip\n // this check for joined characters because their rendering likely won't\n // yield the same result as rendering the last character individually.\n if (!isJoined && this._isOverlapping(cell)) {\n // If the character is overlapping, we want to force a re-render on every\n // frame. This is specifically to work around the case where two\n // overlaping chars `a` and `b` are adjacent, the cursor is moved to b and a\n // space is added. Without this, the first half of `b` would never\n // get removed, and `a` would not re-render because it thinks it's\n // already in the correct state.\n // this._state.cache[x][y] = OVERLAP_OWNED_CHAR_DATA;\n if (lastCharX < line!.length - 1 && line!.getCodePoint(lastCharX + 1) === NULL_CELL_CODE) {\n // patch width to 2\n cell.content &= ~Content.WIDTH_MASK;\n cell.content |= 2 << Content.WIDTH_SHIFT;\n // this._clearChar(x + 1, y);\n // The overlapping char's char data will force a clear and render when the\n // overlapping char is no longer to the left of the character and also when\n // the space changes to another character.\n // this._state.cache[x + 1][y] = OVERLAP_OWNED_CHAR_DATA;\n }\n }\n\n callback(\n cell,\n x,\n y\n );\n\n x = lastCharX;\n }\n }\n }\n\n /**\n * Draws the background for a specified range of columns. Tries to batch adjacent cells of the\n * same color together to reduce draw calls.\n */\n private _drawBackground(firstRow: number, lastRow: number): void {\n const ctx = this._ctx;\n const cols = this._bufferService.cols;\n let startX: number = 0;\n let startY: number = 0;\n let prevFillStyle: string | null = null;\n\n ctx.save();\n\n this._forEachCell(firstRow, lastRow, (cell, x, y) => {\n // libvte and xterm both draw the background (but not foreground) of invisible characters,\n // so we should too.\n let nextFillStyle = null; // null represents default background color\n\n if (cell.isInverse()) {\n if (cell.isFgDefault()) {\n nextFillStyle = this._colors.foreground.css;\n } else if (cell.isFgRGB()) {\n nextFillStyle = `rgb(${AttributeData.toColorRGB(cell.getFgColor()).join(',')})`;\n } else {\n nextFillStyle = this._colors.ansi[cell.getFgColor()].css;\n }\n } else if (cell.isBgRGB()) {\n nextFillStyle = `rgb(${AttributeData.toColorRGB(cell.getBgColor()).join(',')})`;\n } else if (cell.isBgPalette()) {\n nextFillStyle = this._colors.ansi[cell.getBgColor()].css;\n }\n\n // Get any decoration foreground/background overrides, this must be fetched before the early\n // exist but applied after inverse\n let isTop = false;\n for (const d of this._decorationService.getDecorationsAtCell(x, this._bufferService.buffer.ydisp + y)) {\n if (d.options.layer !== 'top' && isTop) {\n continue;\n }\n if (d.backgroundColorRGB) {\n nextFillStyle = d.backgroundColorRGB.css;\n }\n isTop = d.options.layer === 'top';\n }\n\n if (prevFillStyle === null) {\n // This is either the first iteration, or the default background was set. Either way, we\n // don't need to draw anything.\n startX = x;\n startY = y;\n }\n\n if (y !== startY) {\n // our row changed, draw the previous row\n ctx.fillStyle = prevFillStyle || '';\n this._fillCells(startX, startY, cols - startX, 1);\n startX = x;\n startY = y;\n } else if (prevFillStyle !== nextFillStyle) {\n // our color changed, draw the previous characters in this row\n ctx.fillStyle = prevFillStyle || '';\n this._fillCells(startX, startY, x - startX, 1);\n startX = x;\n startY = y;\n }\n\n prevFillStyle = nextFillStyle;\n });\n\n // flush the last color we encountered\n if (prevFillStyle !== null) {\n ctx.fillStyle = prevFillStyle;\n this._fillCells(startX, startY, cols - startX, 1);\n }\n\n ctx.restore();\n }\n\n private _drawForeground(firstRow: number, lastRow: number): void {\n this._forEachCell(firstRow, lastRow, (cell, x, y) => {\n if (cell.isInvisible()) {\n return;\n }\n this._drawChars(cell, x, y);\n if (cell.isUnderline() || cell.isStrikethrough()) {\n this._ctx.save();\n\n if (cell.isInverse()) {\n if (cell.isBgDefault()) {\n this._ctx.fillStyle = this._colors.background.css;\n } else if (cell.isBgRGB()) {\n this._ctx.fillStyle = `rgb(${AttributeData.toColorRGB(cell.getBgColor()).join(',')})`;\n } else {\n let bg = cell.getBgColor();\n if (this._optionsService.rawOptions.drawBoldTextInBrightColors && cell.isBold() && bg < 8) {\n bg += 8;\n }\n this._ctx.fillStyle = this._colors.ansi[bg].css;\n }\n } else {\n if (cell.isFgDefault()) {\n this._ctx.fillStyle = this._colors.foreground.css;\n } else if (cell.isFgRGB()) {\n this._ctx.fillStyle = `rgb(${AttributeData.toColorRGB(cell.getFgColor()).join(',')})`;\n } else {\n let fg = cell.getFgColor();\n if (this._optionsService.rawOptions.drawBoldTextInBrightColors && cell.isBold() && fg < 8) {\n fg += 8;\n }\n this._ctx.fillStyle = this._colors.ansi[fg].css;\n }\n }\n\n if (cell.isStrikethrough()) {\n this._fillMiddleLineAtCells(x, y, cell.getWidth());\n }\n if (cell.isUnderline()) {\n this._fillBottomLineAtCells(x, y, cell.getWidth());\n }\n this._ctx.restore();\n }\n });\n }\n\n public onGridChanged(firstRow: number, lastRow: number): void {\n // Resize has not been called yet\n if (this._state.cache.length === 0) {\n return;\n }\n\n if (this._charAtlas) {\n this._charAtlas.beginFrame();\n }\n\n this._clearCells(0, firstRow, this._bufferService.cols, lastRow - firstRow + 1);\n this._drawBackground(firstRow, lastRow);\n this._drawForeground(firstRow, lastRow);\n }\n\n public onOptionsChanged(): void {\n this._setTransparency(this._optionsService.rawOptions.allowTransparency);\n }\n\n /**\n * Whether a character is overlapping to the next cell.\n */\n private _isOverlapping(cell: ICellData): boolean {\n // Only single cell characters can be overlapping, rendering issues can\n // occur without this check\n if (cell.getWidth() !== 1) {\n return false;\n }\n\n // We assume that any ascii character will not overlap\n if (cell.getCode() < 256) {\n return false;\n }\n\n const chars = cell.getChars();\n\n // Deliver from cache if available\n if (this._characterOverlapCache.hasOwnProperty(chars)) {\n return this._characterOverlapCache[chars];\n }\n\n // Setup the font\n this._ctx.save();\n this._ctx.font = this._characterFont;\n\n // Measure the width of the character, but Math.floor it\n // because that is what the renderer does when it calculates\n // the character dimensions we are comparing against\n const overlaps = Math.floor(this._ctx.measureText(chars).width) > this._characterWidth;\n\n // Restore the original context\n this._ctx.restore();\n\n // Cache and return\n this._characterOverlapCache[chars] = overlaps;\n return overlaps;\n }\n\n /**\n * Clear the charcater at the cell specified.\n * @param x The column of the char.\n * @param y The row of the char.\n */\n // private _clearChar(x: number, y: number): void {\n // let colsToClear = 1;\n // // Clear the adjacent character if it was wide\n // const state = this._state.cache[x][y];\n // if (state && state[CHAR_DATA_WIDTH_INDEX] === 2) {\n // colsToClear = 2;\n // }\n // this.clearCells(x, y, colsToClear, 1);\n // }\n}\n", "/**\n * Copyright (c) 2017 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IGlyphIdentifier } from 'browser/renderer/atlas/Types';\nimport { IDisposable } from 'common/Types';\n\nexport abstract class BaseCharAtlas implements IDisposable {\n private _didWarmUp: boolean = false;\n\n public dispose(): void { }\n\n /**\n * Perform any work needed to warm the cache before it can be used. May be called multiple times.\n * Implement _doWarmUp instead if you only want to get called once.\n */\n public warmUp(): void {\n if (!this._didWarmUp) {\n this._doWarmUp();\n this._didWarmUp = true;\n }\n }\n\n /**\n * Perform any work needed to warm the cache before it can be used. Used by the default\n * implementation of warmUp(), and will only be called once.\n */\n private _doWarmUp(): void { }\n\n public clear(): void { }\n\n /**\n * Called when we start drawing a new frame.\n *\n * TODO: We rely on this getting called by TextRenderLayer. This should really be called by\n * Renderer instead, but we need to make Renderer the source-of-truth for the char atlas, instead\n * of BaseRenderLayer.\n */\n public beginFrame(): void { }\n\n /**\n * May be called before warmUp finishes, however it is okay for the implementation to\n * do nothing and return false in that case.\n *\n * @param ctx Where to draw the character onto.\n * @param glyph Information about what to draw\n * @param x The position on the context to start drawing at\n * @param y The position on the context to start drawing at\n * @returns The success state. True if we drew the character.\n */\n public abstract draw(\n ctx: CanvasRenderingContext2D,\n glyph: IGlyphIdentifier,\n x: number,\n y: number\n ): boolean;\n}\n", "/**\n * Copyright (c) 2017 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { generateConfig, configEquals } from 'browser/renderer/atlas/CharAtlasUtils';\nimport { BaseCharAtlas } from 'browser/renderer/atlas/BaseCharAtlas';\nimport { DynamicCharAtlas } from 'browser/renderer/atlas/DynamicCharAtlas';\nimport { ICharAtlasConfig } from 'browser/renderer/atlas/Types';\nimport { IColorSet } from 'browser/Types';\nimport { ITerminalOptions } from 'common/services/Services';\n\ninterface ICharAtlasCacheEntry {\n atlas: BaseCharAtlas;\n config: ICharAtlasConfig;\n // N.B. This implementation potentially holds onto copies of the terminal forever, so\n // this may cause memory leaks.\n ownedBy: number[];\n}\n\nconst charAtlasCache: ICharAtlasCacheEntry[] = [];\n\n/**\n * Acquires a char atlas, either generating a new one or returning an existing\n * one that is in use by another terminal.\n */\nexport function acquireCharAtlas(\n options: ITerminalOptions,\n rendererId: number,\n colors: IColorSet,\n scaledCharWidth: number,\n scaledCharHeight: number\n): BaseCharAtlas {\n const newConfig = generateConfig(scaledCharWidth, scaledCharHeight, options, colors);\n\n // Check to see if the renderer already owns this config\n for (let i = 0; i < charAtlasCache.length; i++) {\n const entry = charAtlasCache[i];\n const ownedByIndex = entry.ownedBy.indexOf(rendererId);\n if (ownedByIndex >= 0) {\n if (configEquals(entry.config, newConfig)) {\n return entry.atlas;\n }\n // The configs differ, release the renderer from the entry\n if (entry.ownedBy.length === 1) {\n entry.atlas.dispose();\n charAtlasCache.splice(i, 1);\n } else {\n entry.ownedBy.splice(ownedByIndex, 1);\n }\n break;\n }\n }\n\n // Try match a char atlas from the cache\n for (let i = 0; i < charAtlasCache.length; i++) {\n const entry = charAtlasCache[i];\n if (configEquals(entry.config, newConfig)) {\n // Add the renderer to the cache entry and return\n entry.ownedBy.push(rendererId);\n return entry.atlas;\n }\n }\n\n const newEntry: ICharAtlasCacheEntry = {\n atlas: new DynamicCharAtlas(\n document,\n newConfig\n ),\n config: newConfig,\n ownedBy: [rendererId]\n };\n charAtlasCache.push(newEntry);\n return newEntry.atlas;\n}\n\n/**\n * Removes a terminal reference from the cache, allowing its memory to be freed.\n */\nexport function removeTerminalFromCache(rendererId: number): void {\n for (let i = 0; i < charAtlasCache.length; i++) {\n const index = charAtlasCache[i].ownedBy.indexOf(rendererId);\n if (index !== -1) {\n if (charAtlasCache[i].ownedBy.length === 1) {\n // Remove the cache entry if it's the only renderer\n charAtlasCache[i].atlas.dispose();\n charAtlasCache.splice(i, 1);\n } else {\n // Remove the reference from the cache entry\n charAtlasCache[i].ownedBy.splice(index, 1);\n }\n break;\n }\n }\n}\n", "/**\n * Copyright (c) 2017 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { ICharAtlasConfig } from 'browser/renderer/atlas/Types';\nimport { DEFAULT_COLOR } from 'common/buffer/Constants';\nimport { IColorSet, IPartialColorSet } from 'browser/Types';\nimport { ITerminalOptions } from 'common/services/Services';\n\nexport function generateConfig(scaledCharWidth: number, scaledCharHeight: number, options: ITerminalOptions, colors: IColorSet): ICharAtlasConfig {\n // null out some fields that don't matter\n const clonedColors: IPartialColorSet = {\n foreground: colors.foreground,\n background: colors.background,\n cursor: undefined,\n cursorAccent: undefined,\n selection: undefined,\n ansi: colors.ansi.slice()\n };\n return {\n devicePixelRatio: window.devicePixelRatio,\n scaledCharWidth,\n scaledCharHeight,\n fontFamily: options.fontFamily,\n fontSize: options.fontSize,\n fontWeight: options.fontWeight,\n fontWeightBold: options.fontWeightBold,\n allowTransparency: options.allowTransparency,\n colors: clonedColors\n };\n}\n\nexport function configEquals(a: ICharAtlasConfig, b: ICharAtlasConfig): boolean {\n for (let i = 0; i < a.colors.ansi.length; i++) {\n if (a.colors.ansi[i].rgba !== b.colors.ansi[i].rgba) {\n return false;\n }\n }\n return a.devicePixelRatio === b.devicePixelRatio &&\n a.fontFamily === b.fontFamily &&\n a.fontSize === b.fontSize &&\n a.fontWeight === b.fontWeight &&\n a.fontWeightBold === b.fontWeightBold &&\n a.allowTransparency === b.allowTransparency &&\n a.scaledCharWidth === b.scaledCharWidth &&\n a.scaledCharHeight === b.scaledCharHeight &&\n a.colors.foreground === b.colors.foreground &&\n a.colors.background === b.colors.background;\n}\n\nexport function is256Color(colorCode: number): boolean {\n return colorCode < DEFAULT_COLOR;\n}\n", "/**\n * Copyright (c) 2017 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { isFirefox, isLegacyEdge } from 'common/Platform';\n\nexport const INVERTED_DEFAULT_COLOR = 257;\nexport const DIM_OPACITY = 0.5;\n// The text baseline is set conditionally by browser. Using 'ideographic' for Firefox or Legacy Edge would\n// result in truncated text (Issue 3353). Using 'bottom' for Chrome would result in slightly\n// unaligned Powerline fonts (PR 3356#issuecomment-850928179).\nexport const TEXT_BASELINE: CanvasTextBaseline = isFirefox || isLegacyEdge ? 'bottom' : 'ideographic';\n\nexport const CHAR_ATLAS_CELL_SPACING = 1;\n", "/**\n * Copyright (c) 2017 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { DIM_OPACITY, INVERTED_DEFAULT_COLOR, TEXT_BASELINE } from 'browser/renderer/atlas/Constants';\nimport { IGlyphIdentifier, ICharAtlasConfig } from 'browser/renderer/atlas/Types';\nimport { BaseCharAtlas } from 'browser/renderer/atlas/BaseCharAtlas';\nimport { DEFAULT_ANSI_COLORS } from 'browser/ColorManager';\nimport { LRUMap } from 'browser/renderer/atlas/LRUMap';\nimport { isFirefox, isSafari } from 'common/Platform';\nimport { IColor } from 'common/Types';\nimport { throwIfFalsy } from 'browser/renderer/RendererUtils';\nimport { color } from 'common/Color';\n\n// In practice we're probably never going to exhaust a texture this large. For debugging purposes,\n// however, it can be useful to set this to a really tiny value, to verify that LRU eviction works.\nconst TEXTURE_WIDTH = 1024;\nconst TEXTURE_HEIGHT = 1024;\n\nconst TRANSPARENT_COLOR = {\n css: 'rgba(0, 0, 0, 0)',\n rgba: 0\n};\n\n// Drawing to the cache is expensive: If we have to draw more than this number of glyphs to the\n// cache in a single frame, give up on trying to cache anything else, and try to finish the current\n// frame ASAP.\n//\n// This helps to limit the amount of damage a program can do when it would otherwise thrash the\n// cache.\nconst FRAME_CACHE_DRAW_LIMIT = 100;\n\n/**\n * The number of milliseconds to wait before generating the ImageBitmap, this is to debounce/batch\n * the operation as window.createImageBitmap is asynchronous.\n */\nconst GLYPH_BITMAP_COMMIT_DELAY = 100;\n\ninterface IGlyphCacheValue {\n index: number;\n isEmpty: boolean;\n inBitmap: boolean;\n}\n\nexport function getGlyphCacheKey(glyph: IGlyphIdentifier): number {\n // Note that this only returns a valid key when code < 256\n // Layout:\n // 0b00000000000000000000000000000001: italic (1)\n // 0b00000000000000000000000000000010: dim (1)\n // 0b00000000000000000000000000000100: bold (1)\n // 0b00000000000000000000111111111000: fg (9)\n // 0b00000000000111111111000000000000: bg (9)\n // 0b00011111111000000000000000000000: code (8)\n // 0b11100000000000000000000000000000: unused (3)\n return glyph.code << 21 | glyph.bg << 12 | glyph.fg << 3 | (glyph.bold ? 0 : 4) + (glyph.dim ? 0 : 2) + (glyph.italic ? 0 : 1);\n}\n\nexport class DynamicCharAtlas extends BaseCharAtlas {\n // An ordered map that we're using to keep track of where each glyph is in the atlas texture.\n // It's ordered so that we can determine when to remove the old entries.\n private _cacheMap: LRUMap;\n\n // The texture that the atlas is drawn to\n private _cacheCanvas: HTMLCanvasElement;\n private _cacheCtx: CanvasRenderingContext2D;\n\n // A temporary context that glyphs are drawn to before being transfered to the atlas.\n private _tmpCtx: CanvasRenderingContext2D;\n\n // The number of characters stored in the atlas by width/height\n private _width: number;\n private _height: number;\n\n private _drawToCacheCount: number = 0;\n\n // An array of glyph keys that are waiting on the bitmap to be generated.\n private _glyphsWaitingOnBitmap: IGlyphCacheValue[] = [];\n\n // The timeout that is used to batch bitmap generation so it's not requested for every new glyph.\n private _bitmapCommitTimeout: number | null = null;\n\n // The bitmap to draw from, this is much faster on other browsers than others.\n private _bitmap: ImageBitmap | null = null;\n\n constructor(document: Document, private _config: ICharAtlasConfig) {\n super();\n this._cacheCanvas = document.createElement('canvas');\n this._cacheCanvas.width = TEXTURE_WIDTH;\n this._cacheCanvas.height = TEXTURE_HEIGHT;\n // The canvas needs alpha because we use clearColor to convert the background color to alpha.\n // It might also contain some characters with transparent backgrounds if allowTransparency is\n // set.\n this._cacheCtx = throwIfFalsy(this._cacheCanvas.getContext('2d', { alpha: true }));\n\n const tmpCanvas = document.createElement('canvas');\n tmpCanvas.width = this._config.scaledCharWidth;\n tmpCanvas.height = this._config.scaledCharHeight;\n this._tmpCtx = throwIfFalsy(tmpCanvas.getContext('2d', { alpha: this._config.allowTransparency }));\n\n this._width = Math.floor(TEXTURE_WIDTH / this._config.scaledCharWidth);\n this._height = Math.floor(TEXTURE_HEIGHT / this._config.scaledCharHeight);\n const capacity = this._width * this._height;\n this._cacheMap = new LRUMap(capacity);\n this._cacheMap.prealloc(capacity);\n\n // This is useful for debugging\n // document.body.appendChild(this._cacheCanvas);\n }\n\n public dispose(): void {\n if (this._bitmapCommitTimeout !== null) {\n window.clearTimeout(this._bitmapCommitTimeout);\n this._bitmapCommitTimeout = null;\n }\n }\n\n public beginFrame(): void {\n this._drawToCacheCount = 0;\n }\n\n public clear(): void {\n if (this._cacheMap.size > 0) {\n const capacity = this._width * this._height;\n this._cacheMap = new LRUMap(capacity);\n this._cacheMap.prealloc(capacity);\n }\n this._cacheCtx.clearRect(0, 0, TEXTURE_WIDTH, TEXTURE_HEIGHT);\n this._tmpCtx.clearRect(0, 0, this._config.scaledCharWidth, this._config.scaledCharHeight);\n }\n\n public draw(\n ctx: CanvasRenderingContext2D,\n glyph: IGlyphIdentifier,\n x: number,\n y: number\n ): boolean {\n // Space is always an empty cell, special case this as it's so common\n if (glyph.code === 32) {\n return true;\n }\n\n // Exit early for uncachable glyphs\n if (!this._canCache(glyph)) {\n return false;\n }\n\n const glyphKey = getGlyphCacheKey(glyph);\n const cacheValue = this._cacheMap.get(glyphKey);\n if (cacheValue !== null && cacheValue !== undefined) {\n this._drawFromCache(ctx, cacheValue, x, y);\n return true;\n }\n if (this._drawToCacheCount < FRAME_CACHE_DRAW_LIMIT) {\n let index;\n if (this._cacheMap.size < this._cacheMap.capacity) {\n index = this._cacheMap.size;\n } else {\n // we're out of space, so our call to set will delete this item\n index = this._cacheMap.peek()!.index;\n }\n const cacheValue = this._drawToCache(glyph, index);\n this._cacheMap.set(glyphKey, cacheValue);\n this._drawFromCache(ctx, cacheValue, x, y);\n return true;\n }\n return false;\n }\n\n private _canCache(glyph: IGlyphIdentifier): boolean {\n // Only cache ascii and extended characters for now, to be safe. In the future, we could do\n // something more complicated to determine the expected width of a character.\n //\n // If we switch the renderer over to webgl at some point, we may be able to use blending modes\n // to draw overlapping glyphs from the atlas:\n // https://github.com/servo/webrender/issues/464#issuecomment-255632875\n // https://webglfundamentals.org/webgl/lessons/webgl-text-texture.html\n return glyph.code < 256;\n }\n\n private _toCoordinateX(index: number): number {\n return (index % this._width) * this._config.scaledCharWidth;\n }\n\n private _toCoordinateY(index: number): number {\n return Math.floor(index / this._width) * this._config.scaledCharHeight;\n }\n\n private _drawFromCache(\n ctx: CanvasRenderingContext2D,\n cacheValue: IGlyphCacheValue,\n x: number,\n y: number\n ): void {\n // We don't actually need to do anything if this is whitespace.\n if (cacheValue.isEmpty) {\n return;\n }\n const cacheX = this._toCoordinateX(cacheValue.index);\n const cacheY = this._toCoordinateY(cacheValue.index);\n ctx.drawImage(\n cacheValue.inBitmap ? this._bitmap! : this._cacheCanvas,\n cacheX,\n cacheY,\n this._config.scaledCharWidth,\n this._config.scaledCharHeight,\n x,\n y,\n this._config.scaledCharWidth,\n this._config.scaledCharHeight\n );\n }\n\n private _getColorFromAnsiIndex(idx: number): IColor {\n if (idx < this._config.colors.ansi.length) {\n return this._config.colors.ansi[idx];\n }\n return DEFAULT_ANSI_COLORS[idx];\n }\n\n private _getBackgroundColor(glyph: IGlyphIdentifier): IColor {\n if (this._config.allowTransparency) {\n // The background color might have some transparency, so we need to render it as fully\n // transparent in the atlas. Otherwise we'd end up drawing the transparent background twice\n // around the anti-aliased edges of the glyph, and it would look too dark.\n return TRANSPARENT_COLOR;\n }\n if (glyph.bg === INVERTED_DEFAULT_COLOR) {\n return this._config.colors.foreground;\n }\n if (glyph.bg < 256) {\n return this._getColorFromAnsiIndex(glyph.bg);\n }\n return this._config.colors.background;\n }\n\n private _getForegroundColor(glyph: IGlyphIdentifier): IColor {\n if (glyph.fg === INVERTED_DEFAULT_COLOR) {\n return color.opaque(this._config.colors.background);\n }\n if (glyph.fg < 256) {\n // 256 color support\n return this._getColorFromAnsiIndex(glyph.fg);\n }\n return this._config.colors.foreground;\n }\n\n // TODO: We do this (or something similar) in multiple places. We should split this off\n // into a shared function.\n private _drawToCache(glyph: IGlyphIdentifier, index: number): IGlyphCacheValue {\n this._drawToCacheCount++;\n\n this._tmpCtx.save();\n\n // draw the background\n const backgroundColor = this._getBackgroundColor(glyph);\n // Use a 'copy' composite operation to clear any existing glyph out of _tmpCtxWithAlpha, regardless of\n // transparency in backgroundColor\n this._tmpCtx.globalCompositeOperation = 'copy';\n this._tmpCtx.fillStyle = backgroundColor.css;\n this._tmpCtx.fillRect(0, 0, this._config.scaledCharWidth, this._config.scaledCharHeight);\n this._tmpCtx.globalCompositeOperation = 'source-over';\n\n // draw the foreground/glyph\n const fontWeight = glyph.bold ? this._config.fontWeightBold : this._config.fontWeight;\n const fontStyle = glyph.italic ? 'italic' : '';\n this._tmpCtx.font =\n `${fontStyle} ${fontWeight} ${this._config.fontSize * this._config.devicePixelRatio}px ${this._config.fontFamily}`;\n this._tmpCtx.textBaseline = TEXT_BASELINE;\n\n this._tmpCtx.fillStyle = this._getForegroundColor(glyph).css;\n\n // Apply alpha to dim the character\n if (glyph.dim) {\n this._tmpCtx.globalAlpha = DIM_OPACITY;\n }\n // Draw the character\n this._tmpCtx.fillText(glyph.chars, 0, this._config.scaledCharHeight);\n\n // clear the background from the character to avoid issues with drawing over the previous\n // character if it extends past it's bounds\n let imageData = this._tmpCtx.getImageData(\n 0, 0, this._config.scaledCharWidth, this._config.scaledCharHeight\n );\n let isEmpty = false;\n if (!this._config.allowTransparency) {\n isEmpty = clearColor(imageData, backgroundColor);\n }\n\n // If this charcater is underscore and empty, shift it up until it is visible, try for a maximum\n // of 5 pixels.\n if (isEmpty && glyph.chars === '_' && !this._config.allowTransparency) {\n for (let offset = 1; offset <= 5; offset++) {\n // Draw the character\n this._tmpCtx.fillText(glyph.chars, 0, this._config.scaledCharHeight - offset);\n\n // clear the background from the character to avoid issues with drawing over the previous\n // character if it extends past it's bounds\n imageData = this._tmpCtx.getImageData(\n 0, 0, this._config.scaledCharWidth, this._config.scaledCharHeight\n );\n isEmpty = clearColor(imageData, backgroundColor);\n if (!isEmpty) {\n break;\n }\n }\n }\n\n this._tmpCtx.restore();\n\n // copy the data from imageData to _cacheCanvas\n const x = this._toCoordinateX(index);\n const y = this._toCoordinateY(index);\n // putImageData doesn't do any blending, so it will overwrite any existing cache entry for us\n this._cacheCtx.putImageData(imageData, x, y);\n\n // Add the glyph and queue it to the bitmap (if the browser supports it)\n const cacheValue = {\n index,\n isEmpty,\n inBitmap: false\n };\n this._addGlyphToBitmap(cacheValue);\n\n return cacheValue;\n }\n\n private _addGlyphToBitmap(cacheValue: IGlyphCacheValue): void {\n // Support is patchy for createImageBitmap at the moment, pass a canvas back\n // if support is lacking as drawImage works there too. Firefox is also\n // included here as ImageBitmap appears both buggy and has horrible\n // performance (tested on v55).\n if (!('createImageBitmap' in window) || isFirefox || isSafari) {\n return;\n }\n\n // Add the glyph to the queue\n this._glyphsWaitingOnBitmap.push(cacheValue);\n\n // Check if bitmap generation timeout already exists\n if (this._bitmapCommitTimeout !== null) {\n return;\n }\n\n this._bitmapCommitTimeout = window.setTimeout(() => this._generateBitmap(), GLYPH_BITMAP_COMMIT_DELAY);\n }\n\n private _generateBitmap(): void {\n const glyphsMovingToBitmap = this._glyphsWaitingOnBitmap;\n this._glyphsWaitingOnBitmap = [];\n window.createImageBitmap(this._cacheCanvas).then(bitmap => {\n // Set bitmap\n this._bitmap = bitmap;\n\n // Mark all new glyphs as in bitmap, excluding glyphs that came in after\n // the bitmap was requested\n for (let i = 0; i < glyphsMovingToBitmap.length; i++) {\n const value = glyphsMovingToBitmap[i];\n // It doesn't matter if the value was already evicted, it will be\n // released from memory after this block if so.\n value.inBitmap = true;\n }\n });\n this._bitmapCommitTimeout = null;\n }\n}\n\n// This is used for debugging the renderer, just swap out `new DynamicCharAtlas` with\n// `new NoneCharAtlas`.\nexport class NoneCharAtlas extends BaseCharAtlas {\n constructor(document: Document, config: ICharAtlasConfig) {\n super();\n }\n\n public draw(\n ctx: CanvasRenderingContext2D,\n glyph: IGlyphIdentifier,\n x: number,\n y: number\n ): boolean {\n return false;\n }\n}\n\n/**\n * Makes a partiicular rgb color in an ImageData completely transparent.\n * @returns True if the result is \"empty\", meaning all pixels are fully transparent.\n */\nfunction clearColor(imageData: ImageData, color: IColor): boolean {\n let isEmpty = true;\n const r = color.rgba >>> 24;\n const g = color.rgba >>> 16 & 0xFF;\n const b = color.rgba >>> 8 & 0xFF;\n for (let offset = 0; offset < imageData.data.length; offset += 4) {\n if (imageData.data[offset] === r &&\n imageData.data[offset + 1] === g &&\n imageData.data[offset + 2] === b) {\n imageData.data[offset + 3] = 0;\n } else {\n isEmpty = false;\n }\n }\n return isEmpty;\n}\n", "/**\n * Copyright (c) 2017 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\ninterface ILinkedListNode {\n prev: ILinkedListNode | null;\n next: ILinkedListNode | null;\n key: number | null;\n value: T | null;\n}\n\nexport class LRUMap {\n private _map: { [key: number]: ILinkedListNode } = {};\n private _head: ILinkedListNode | null = null;\n private _tail: ILinkedListNode | null = null;\n private _nodePool: ILinkedListNode[] = [];\n public size: number = 0;\n\n constructor(public capacity: number) { }\n\n private _unlinkNode(node: ILinkedListNode): void {\n const prev = node.prev;\n const next = node.next;\n if (node === this._head) {\n this._head = next;\n }\n if (node === this._tail) {\n this._tail = prev;\n }\n if (prev !== null) {\n prev.next = next;\n }\n if (next !== null) {\n next.prev = prev;\n }\n }\n\n private _appendNode(node: ILinkedListNode): void {\n const tail = this._tail;\n if (tail !== null) {\n tail.next = node;\n }\n node.prev = tail;\n node.next = null;\n this._tail = node;\n if (this._head === null) {\n this._head = node;\n }\n }\n\n /**\n * Preallocate a bunch of linked-list nodes. Allocating these nodes ahead of time means that\n * they're more likely to live next to each other in memory, which seems to improve performance.\n *\n * Each empty object only consumes about 60 bytes of memory, so this is pretty cheap, even for\n * large maps.\n */\n public prealloc(count: number): void {\n const nodePool = this._nodePool;\n for (let i = 0; i < count; i++) {\n nodePool.push({\n prev: null,\n next: null,\n key: null,\n value: null\n });\n }\n }\n\n public get(key: number): T | null {\n // This is unsafe: We're assuming our keyspace doesn't overlap with Object.prototype. However,\n // it's faster than calling hasOwnProperty, and in our case, it would never overlap.\n const node = this._map[key];\n if (node !== undefined) {\n this._unlinkNode(node);\n this._appendNode(node);\n return node.value;\n }\n return null;\n }\n\n /**\n * Gets a value from a key without marking it as the most recently used item.\n */\n public peekValue(key: number): T | null {\n const node = this._map[key];\n if (node !== undefined) {\n return node.value;\n }\n return null;\n }\n\n public peek(): T | null {\n const head = this._head;\n return head === null ? null : head.value;\n }\n\n public set(key: number, value: T): void {\n // This is unsafe: See note above.\n let node = this._map[key];\n if (node !== undefined) {\n // already exists, we just need to mutate it and move it to the end of the list\n node = this._map[key];\n this._unlinkNode(node);\n node.value = value;\n } else if (this.size >= this.capacity) {\n // we're out of space: recycle the head node, move it to the tail\n node = this._head!;\n this._unlinkNode(node);\n delete this._map[node.key!];\n node.key = key;\n node.value = value;\n this._map[key] = node;\n } else {\n // make a new element\n const nodePool = this._nodePool;\n if (nodePool.length > 0) {\n // use a preallocated node if we can\n node = nodePool.pop()!;\n node.key = key;\n node.value = value;\n } else {\n node = {\n prev: null,\n next: null,\n key,\n value\n };\n }\n this._map[key] = node;\n this.size++;\n }\n this._appendNode(node);\n }\n}\n", "/**\n * Copyright (c) 2018 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IRenderer, IRenderDimensions, IRequestRedrawEvent } from 'browser/renderer/Types';\nimport { BOLD_CLASS, ITALIC_CLASS, CURSOR_CLASS, CURSOR_STYLE_BLOCK_CLASS, CURSOR_BLINK_CLASS, CURSOR_STYLE_BAR_CLASS, CURSOR_STYLE_UNDERLINE_CLASS, DomRendererRowFactory } from 'browser/renderer/dom/DomRendererRowFactory';\nimport { INVERTED_DEFAULT_COLOR } from 'browser/renderer/atlas/Constants';\nimport { Disposable } from 'common/Lifecycle';\nimport { IColorSet, ILinkifierEvent, ILinkifier, ILinkifier2 } from 'browser/Types';\nimport { ICharSizeService } from 'browser/services/Services';\nimport { IOptionsService, IBufferService, IInstantiationService, IDecorationService } from 'common/services/Services';\nimport { EventEmitter, IEvent } from 'common/EventEmitter';\nimport { color } from 'common/Color';\nimport { removeElementFromParent } from 'browser/Dom';\n\nconst TERMINAL_CLASS_PREFIX = 'xterm-dom-renderer-owner-';\nconst ROW_CONTAINER_CLASS = 'xterm-rows';\nconst FG_CLASS_PREFIX = 'xterm-fg-';\nconst BG_CLASS_PREFIX = 'xterm-bg-';\nconst FOCUS_CLASS = 'xterm-focus';\nconst SELECTION_CLASS = 'xterm-selection';\n\nlet nextTerminalId = 1;\n\n/**\n * A fallback renderer for when canvas is slow. This is not meant to be\n * particularly fast or feature complete, more just stable and usable for when\n * canvas is not an option.\n */\nexport class DomRenderer extends Disposable implements IRenderer {\n private _rowFactory: DomRendererRowFactory;\n private _terminalClass: number = nextTerminalId++;\n\n private _themeStyleElement!: HTMLStyleElement;\n private _dimensionsStyleElement!: HTMLStyleElement;\n private _rowContainer: HTMLElement;\n private _rowElements: HTMLElement[] = [];\n private _selectionContainer: HTMLElement;\n\n public dimensions: IRenderDimensions;\n\n public get onRequestRedraw(): IEvent { return new EventEmitter().event; }\n\n constructor(\n private _colors: IColorSet,\n private readonly _element: HTMLElement,\n private readonly _screenElement: HTMLElement,\n private readonly _viewportElement: HTMLElement,\n private readonly _linkifier: ILinkifier,\n private readonly _linkifier2: ILinkifier2,\n @IInstantiationService instantiationService: IInstantiationService,\n @ICharSizeService private readonly _charSizeService: ICharSizeService,\n @IOptionsService private readonly _optionsService: IOptionsService,\n @IBufferService private readonly _bufferService: IBufferService\n ) {\n super();\n this._rowContainer = document.createElement('div');\n this._rowContainer.classList.add(ROW_CONTAINER_CLASS);\n this._rowContainer.style.lineHeight = 'normal';\n this._rowContainer.setAttribute('aria-hidden', 'true');\n this._refreshRowElements(this._bufferService.cols, this._bufferService.rows);\n this._selectionContainer = document.createElement('div');\n this._selectionContainer.classList.add(SELECTION_CLASS);\n this._selectionContainer.setAttribute('aria-hidden', 'true');\n\n this.dimensions = {\n scaledCharWidth: 0,\n scaledCharHeight: 0,\n scaledCellWidth: 0,\n scaledCellHeight: 0,\n scaledCharLeft: 0,\n scaledCharTop: 0,\n scaledCanvasWidth: 0,\n scaledCanvasHeight: 0,\n canvasWidth: 0,\n canvasHeight: 0,\n actualCellWidth: 0,\n actualCellHeight: 0\n };\n this._updateDimensions();\n this._injectCss();\n\n this._rowFactory = instantiationService.createInstance(DomRendererRowFactory, document, this._colors);\n\n this._element.classList.add(TERMINAL_CLASS_PREFIX + this._terminalClass);\n this._screenElement.appendChild(this._rowContainer);\n this._screenElement.appendChild(this._selectionContainer);\n\n this.register(this._linkifier.onShowLinkUnderline(e => this._onLinkHover(e)));\n this.register(this._linkifier.onHideLinkUnderline(e => this._onLinkLeave(e)));\n\n this.register(this._linkifier2.onShowLinkUnderline(e => this._onLinkHover(e)));\n this.register(this._linkifier2.onHideLinkUnderline(e => this._onLinkLeave(e)));\n }\n\n public dispose(): void {\n this._element.classList.remove(TERMINAL_CLASS_PREFIX + this._terminalClass);\n\n // Outside influences such as React unmounts may manipulate the DOM before our disposal.\n // https://github.com/xtermjs/xterm.js/issues/2960\n removeElementFromParent(this._rowContainer, this._selectionContainer, this._themeStyleElement, this._dimensionsStyleElement);\n\n super.dispose();\n }\n\n private _updateDimensions(): void {\n this.dimensions.scaledCharWidth = this._charSizeService.width * window.devicePixelRatio;\n this.dimensions.scaledCharHeight = Math.ceil(this._charSizeService.height * window.devicePixelRatio);\n this.dimensions.scaledCellWidth = this.dimensions.scaledCharWidth + Math.round(this._optionsService.rawOptions.letterSpacing);\n this.dimensions.scaledCellHeight = Math.floor(this.dimensions.scaledCharHeight * this._optionsService.rawOptions.lineHeight);\n this.dimensions.scaledCharLeft = 0;\n this.dimensions.scaledCharTop = 0;\n this.dimensions.scaledCanvasWidth = this.dimensions.scaledCellWidth * this._bufferService.cols;\n this.dimensions.scaledCanvasHeight = this.dimensions.scaledCellHeight * this._bufferService.rows;\n this.dimensions.canvasWidth = Math.round(this.dimensions.scaledCanvasWidth / window.devicePixelRatio);\n this.dimensions.canvasHeight = Math.round(this.dimensions.scaledCanvasHeight / window.devicePixelRatio);\n this.dimensions.actualCellWidth = this.dimensions.canvasWidth / this._bufferService.cols;\n this.dimensions.actualCellHeight = this.dimensions.canvasHeight / this._bufferService.rows;\n\n for (const element of this._rowElements) {\n element.style.width = `${this.dimensions.canvasWidth}px`;\n element.style.height = `${this.dimensions.actualCellHeight}px`;\n element.style.lineHeight = `${this.dimensions.actualCellHeight}px`;\n // Make sure rows don't overflow onto following row\n element.style.overflow = 'hidden';\n }\n\n if (!this._dimensionsStyleElement) {\n this._dimensionsStyleElement = document.createElement('style');\n this._screenElement.appendChild(this._dimensionsStyleElement);\n }\n\n const styles =\n `${this._terminalSelector} .${ROW_CONTAINER_CLASS} span {` +\n ` display: inline-block;` +\n ` height: 100%;` +\n ` vertical-align: top;` +\n ` width: ${this.dimensions.actualCellWidth}px` +\n `}`;\n\n this._dimensionsStyleElement.textContent = styles;\n\n this._selectionContainer.style.height = this._viewportElement.style.height;\n this._screenElement.style.width = `${this.dimensions.canvasWidth}px`;\n this._screenElement.style.height = `${this.dimensions.canvasHeight}px`;\n }\n\n public setColors(colors: IColorSet): void {\n this._colors = colors;\n this._injectCss();\n }\n\n private _injectCss(): void {\n if (!this._themeStyleElement) {\n this._themeStyleElement = document.createElement('style');\n this._screenElement.appendChild(this._themeStyleElement);\n }\n\n // Base CSS\n let styles =\n `${this._terminalSelector} .${ROW_CONTAINER_CLASS} {` +\n ` color: ${this._colors.foreground.css};` +\n ` font-family: ${this._optionsService.rawOptions.fontFamily};` +\n ` font-size: ${this._optionsService.rawOptions.fontSize}px;` +\n `}`;\n // Text styles\n styles +=\n `${this._terminalSelector} span:not(.${BOLD_CLASS}) {` +\n ` font-weight: ${this._optionsService.rawOptions.fontWeight};` +\n `}` +\n `${this._terminalSelector} span.${BOLD_CLASS} {` +\n ` font-weight: ${this._optionsService.rawOptions.fontWeightBold};` +\n `}` +\n `${this._terminalSelector} span.${ITALIC_CLASS} {` +\n ` font-style: italic;` +\n `}`;\n // Blink animation\n styles +=\n `@keyframes blink_box_shadow` + `_` + this._terminalClass + ` {` +\n ` 50% {` +\n ` box-shadow: none;` +\n ` }` +\n `}`;\n styles +=\n `@keyframes blink_block` + `_` + this._terminalClass + ` {` +\n ` 0% {` +\n ` background-color: ${this._colors.cursor.css};` +\n ` color: ${this._colors.cursorAccent.css};` +\n ` }` +\n ` 50% {` +\n ` background-color: ${this._colors.cursorAccent.css};` +\n ` color: ${this._colors.cursor.css};` +\n ` }` +\n `}`;\n // Cursor\n styles +=\n `${this._terminalSelector} .${ROW_CONTAINER_CLASS}:not(.${FOCUS_CLASS}) .${CURSOR_CLASS}.${CURSOR_STYLE_BLOCK_CLASS} {` +\n ` outline: 1px solid ${this._colors.cursor.css};` +\n ` outline-offset: -1px;` +\n `}` +\n `${this._terminalSelector} .${ROW_CONTAINER_CLASS}.${FOCUS_CLASS} .${CURSOR_CLASS}.${CURSOR_BLINK_CLASS}:not(.${CURSOR_STYLE_BLOCK_CLASS}) {` +\n ` animation: blink_box_shadow` + `_` + this._terminalClass + ` 1s step-end infinite;` +\n `}` +\n `${this._terminalSelector} .${ROW_CONTAINER_CLASS}.${FOCUS_CLASS} .${CURSOR_CLASS}.${CURSOR_BLINK_CLASS}.${CURSOR_STYLE_BLOCK_CLASS} {` +\n ` animation: blink_block` + `_` + this._terminalClass + ` 1s step-end infinite;` +\n `}` +\n `${this._terminalSelector} .${ROW_CONTAINER_CLASS}.${FOCUS_CLASS} .${CURSOR_CLASS}.${CURSOR_STYLE_BLOCK_CLASS} {` +\n ` background-color: ${this._colors.cursor.css};` +\n ` color: ${this._colors.cursorAccent.css};` +\n `}` +\n `${this._terminalSelector} .${ROW_CONTAINER_CLASS} .${CURSOR_CLASS}.${CURSOR_STYLE_BAR_CLASS} {` +\n ` box-shadow: ${this._optionsService.rawOptions.cursorWidth}px 0 0 ${this._colors.cursor.css} inset;` +\n `}` +\n `${this._terminalSelector} .${ROW_CONTAINER_CLASS} .${CURSOR_CLASS}.${CURSOR_STYLE_UNDERLINE_CLASS} {` +\n ` box-shadow: 0 -1px 0 ${this._colors.cursor.css} inset;` +\n `}`;\n // Selection\n styles +=\n `${this._terminalSelector} .${SELECTION_CLASS} {` +\n ` position: absolute;` +\n ` top: 0;` +\n ` left: 0;` +\n ` z-index: 1;` +\n ` pointer-events: none;` +\n `}` +\n `${this._terminalSelector} .${SELECTION_CLASS} div {` +\n ` position: absolute;` +\n ` background-color: ${this._colors.selectionOpaque.css};` +\n `}`;\n // Colors\n this._colors.ansi.forEach((c, i) => {\n styles +=\n `${this._terminalSelector} .${FG_CLASS_PREFIX}${i} { color: ${c.css}; }` +\n `${this._terminalSelector} .${BG_CLASS_PREFIX}${i} { background-color: ${c.css}; }`;\n });\n styles +=\n `${this._terminalSelector} .${FG_CLASS_PREFIX}${INVERTED_DEFAULT_COLOR} { color: ${color.opaque(this._colors.background).css}; }` +\n `${this._terminalSelector} .${BG_CLASS_PREFIX}${INVERTED_DEFAULT_COLOR} { background-color: ${this._colors.foreground.css}; }`;\n\n this._themeStyleElement.textContent = styles;\n }\n\n public onDevicePixelRatioChange(): void {\n this._updateDimensions();\n }\n\n private _refreshRowElements(cols: number, rows: number): void {\n // Add missing elements\n for (let i = this._rowElements.length; i <= rows; i++) {\n const row = document.createElement('div');\n this._rowContainer.appendChild(row);\n this._rowElements.push(row);\n }\n // Remove excess elements\n while (this._rowElements.length > rows) {\n this._rowContainer.removeChild(this._rowElements.pop()!);\n }\n }\n\n public onResize(cols: number, rows: number): void {\n this._refreshRowElements(cols, rows);\n this._updateDimensions();\n }\n\n public onCharSizeChanged(): void {\n this._updateDimensions();\n }\n\n public onBlur(): void {\n this._rowContainer.classList.remove(FOCUS_CLASS);\n }\n\n public onFocus(): void {\n this._rowContainer.classList.add(FOCUS_CLASS);\n }\n\n public onSelectionChanged(start: [number, number] | undefined, end: [number, number] | undefined, columnSelectMode: boolean): void {\n // Remove all selections\n while (this._selectionContainer.children.length) {\n this._selectionContainer.removeChild(this._selectionContainer.children[0]);\n }\n\n this._rowFactory.onSelectionChanged(start, end, columnSelectMode);\n this.renderRows(0, this._bufferService.rows - 1);\n\n // Selection does not exist\n if (!start || !end) {\n return;\n }\n\n // Translate from buffer position to viewport position\n const viewportStartRow = start[1] - this._bufferService.buffer.ydisp;\n const viewportEndRow = end[1] - this._bufferService.buffer.ydisp;\n const viewportCappedStartRow = Math.max(viewportStartRow, 0);\n const viewportCappedEndRow = Math.min(viewportEndRow, this._bufferService.rows - 1);\n\n // No need to draw the selection\n if (viewportCappedStartRow >= this._bufferService.rows || viewportCappedEndRow < 0) {\n return;\n }\n\n // Create the selections\n const documentFragment = document.createDocumentFragment();\n\n if (columnSelectMode) {\n const isXFlipped = start[0] > end[0];\n documentFragment.appendChild(\n this._createSelectionElement(viewportCappedStartRow, isXFlipped ? end[0] : start[0], isXFlipped ? start[0] : end[0], viewportCappedEndRow - viewportCappedStartRow + 1)\n );\n } else {\n // Draw first row\n const startCol = viewportStartRow === viewportCappedStartRow ? start[0] : 0;\n const endCol = viewportCappedStartRow === viewportEndRow ? end[0] : this._bufferService.cols;\n documentFragment.appendChild(this._createSelectionElement(viewportCappedStartRow, startCol, endCol));\n // Draw middle rows\n const middleRowsCount = viewportCappedEndRow - viewportCappedStartRow - 1;\n documentFragment.appendChild(this._createSelectionElement(viewportCappedStartRow + 1, 0, this._bufferService.cols, middleRowsCount));\n // Draw final row\n if (viewportCappedStartRow !== viewportCappedEndRow) {\n // Only draw viewportEndRow if it's not the same as viewporttartRow\n const endCol = viewportEndRow === viewportCappedEndRow ? end[0] : this._bufferService.cols;\n documentFragment.appendChild(this._createSelectionElement(viewportCappedEndRow, 0, endCol));\n }\n }\n this._selectionContainer.appendChild(documentFragment);\n }\n\n /**\n * Creates a selection element at the specified position.\n * @param row The row of the selection.\n * @param colStart The start column.\n * @param colEnd The end columns.\n */\n private _createSelectionElement(row: number, colStart: number, colEnd: number, rowCount: number = 1): HTMLElement {\n const element = document.createElement('div');\n element.style.height = `${rowCount * this.dimensions.actualCellHeight}px`;\n element.style.top = `${row * this.dimensions.actualCellHeight}px`;\n element.style.left = `${colStart * this.dimensions.actualCellWidth}px`;\n element.style.width = `${this.dimensions.actualCellWidth * (colEnd - colStart)}px`;\n return element;\n }\n\n public onCursorMove(): void {\n // No-op, the cursor is drawn when rows are drawn\n }\n\n public onOptionsChanged(): void {\n // Force a refresh\n this._updateDimensions();\n this._injectCss();\n }\n\n public clear(): void {\n for (const e of this._rowElements) {\n e.innerText = '';\n }\n }\n\n public renderRows(start: number, end: number): void {\n const cursorAbsoluteY = this._bufferService.buffer.ybase + this._bufferService.buffer.y;\n const cursorX = Math.min(this._bufferService.buffer.x, this._bufferService.cols - 1);\n const cursorBlink = this._optionsService.rawOptions.cursorBlink;\n\n for (let y = start; y <= end; y++) {\n const rowElement = this._rowElements[y];\n rowElement.innerText = '';\n const row = y + this._bufferService.buffer.ydisp;\n const lineData = this._bufferService.buffer.lines.get(row);\n const cursorStyle = this._optionsService.rawOptions.cursorStyle;\n rowElement.appendChild(this._rowFactory.createRow(lineData!, row, row === cursorAbsoluteY, cursorStyle, cursorX, cursorBlink, this.dimensions.actualCellWidth, this._bufferService.cols));\n }\n }\n\n private get _terminalSelector(): string {\n return `.${TERMINAL_CLASS_PREFIX}${this._terminalClass}`;\n }\n\n private _onLinkHover(e: ILinkifierEvent): void {\n this._setCellUnderline(e.x1, e.x2, e.y1, e.y2, e.cols, true);\n }\n\n private _onLinkLeave(e: ILinkifierEvent): void {\n this._setCellUnderline(e.x1, e.x2, e.y1, e.y2, e.cols, false);\n }\n\n private _setCellUnderline(x: number, x2: number, y: number, y2: number, cols: number, enabled: boolean): void {\n while (x !== x2 || y !== y2) {\n const row = this._rowElements[y];\n if (!row) {\n return;\n }\n const span = row.children[x] as HTMLElement;\n if (span) {\n span.style.textDecoration = enabled ? 'underline' : 'none';\n }\n if (++x >= cols) {\n x = 0;\n y++;\n }\n }\n }\n}\n", "/**\n * Copyright (c) 2018 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IBufferLine, ICellData, IColor } from 'common/Types';\nimport { INVERTED_DEFAULT_COLOR } from 'browser/renderer/atlas/Constants';\nimport { NULL_CELL_CODE, WHITESPACE_CELL_CHAR, Attributes } from 'common/buffer/Constants';\nimport { CellData } from 'common/buffer/CellData';\nimport { IBufferService, ICoreService, IDecorationService, IOptionsService } from 'common/services/Services';\nimport { color, rgba } from 'common/Color';\nimport { IColorSet } from 'browser/Types';\nimport { ICharacterJoinerService, ISelectionService } from 'browser/services/Services';\nimport { JoinedCellData } from 'browser/services/CharacterJoinerService';\nimport { excludeFromContrastRatioDemands } from 'browser/renderer/RendererUtils';\n\nexport const BOLD_CLASS = 'xterm-bold';\nexport const DIM_CLASS = 'xterm-dim';\nexport const ITALIC_CLASS = 'xterm-italic';\nexport const UNDERLINE_CLASS = 'xterm-underline';\nexport const STRIKETHROUGH_CLASS = 'xterm-strikethrough';\nexport const CURSOR_CLASS = 'xterm-cursor';\nexport const CURSOR_BLINK_CLASS = 'xterm-cursor-blink';\nexport const CURSOR_STYLE_BLOCK_CLASS = 'xterm-cursor-block';\nexport const CURSOR_STYLE_BAR_CLASS = 'xterm-cursor-bar';\nexport const CURSOR_STYLE_UNDERLINE_CLASS = 'xterm-cursor-underline';\n\nexport class DomRendererRowFactory {\n private _workCell: CellData = new CellData();\n\n private _selectionStart: [number, number] | undefined;\n private _selectionEnd: [number, number] | undefined;\n private _columnSelectMode: boolean = false;\n\n constructor(\n private readonly _document: Document,\n private _colors: IColorSet,\n @ICharacterJoinerService private readonly _characterJoinerService: ICharacterJoinerService,\n @IOptionsService private readonly _optionsService: IOptionsService,\n @ICoreService private readonly _coreService: ICoreService,\n @IDecorationService private readonly _decorationService: IDecorationService\n ) {\n }\n\n public setColors(colors: IColorSet): void {\n this._colors = colors;\n }\n\n public onSelectionChanged(start: [number, number] | undefined, end: [number, number] | undefined, columnSelectMode: boolean): void {\n this._selectionStart = start;\n this._selectionEnd = end;\n this._columnSelectMode = columnSelectMode;\n }\n\n public createRow(lineData: IBufferLine, row: number, isCursorRow: boolean, cursorStyle: string | undefined, cursorX: number, cursorBlink: boolean, cellWidth: number, cols: number): DocumentFragment {\n const fragment = this._document.createDocumentFragment();\n\n const joinedRanges = this._characterJoinerService.getJoinedCharacters(row);\n // Find the line length first, this prevents the need to output a bunch of\n // empty cells at the end. This cannot easily be integrated into the main\n // loop below because of the colCount feature (which can be removed after we\n // properly support reflow and disallow data to go beyond the right-side of\n // the viewport).\n let lineLength = 0;\n for (let x = Math.min(lineData.length, cols) - 1; x >= 0; x--) {\n if (lineData.loadCell(x, this._workCell).getCode() !== NULL_CELL_CODE || (isCursorRow && x === cursorX)) {\n lineLength = x + 1;\n break;\n }\n }\n\n for (let x = 0; x < lineLength; x++) {\n lineData.loadCell(x, this._workCell);\n let width = this._workCell.getWidth();\n\n // The character to the left is a wide character, drawing is owned by the char at x-1\n if (width === 0) {\n continue;\n }\n\n // If true, indicates that the current character(s) to draw were joined.\n let isJoined = false;\n let lastCharX = x;\n\n // Process any joined character ranges as needed. Because of how the\n // ranges are produced, we know that they are valid for the characters\n // and attributes of our input.\n let cell = this._workCell;\n if (joinedRanges.length > 0 && x === joinedRanges[0][0]) {\n isJoined = true;\n const range = joinedRanges.shift()!;\n\n // We already know the exact start and end column of the joined range,\n // so we get the string and width representing it directly\n cell = new JoinedCellData(\n this._workCell,\n lineData.translateToString(true, range[0], range[1]),\n range[1] - range[0]\n );\n\n // Skip over the cells occupied by this range in the loop\n lastCharX = range[1] - 1;\n\n // Recalculate width\n width = cell.getWidth();\n }\n\n const charElement = this._document.createElement('span');\n if (width > 1) {\n charElement.style.width = `${cellWidth * width}px`;\n }\n\n if (isJoined) {\n // Ligatures in the DOM renderer must use display inline, as they may not show with\n // inline-block if they are outside the bounds of the element\n charElement.style.display = 'inline';\n\n // The DOM renderer colors the background of the cursor but for ligatures all cells are\n // joined. The workaround here is to show a cursor around the whole ligature so it shows up,\n // the cursor looks the same when on any character of the ligature though\n if (cursorX >= x && cursorX <= lastCharX) {\n cursorX = x;\n }\n }\n\n if (!this._coreService.isCursorHidden && isCursorRow && x === cursorX) {\n charElement.classList.add(CURSOR_CLASS);\n\n if (cursorBlink) {\n charElement.classList.add(CURSOR_BLINK_CLASS);\n }\n\n switch (cursorStyle) {\n case 'bar':\n charElement.classList.add(CURSOR_STYLE_BAR_CLASS);\n break;\n case 'underline':\n charElement.classList.add(CURSOR_STYLE_UNDERLINE_CLASS);\n break;\n default:\n charElement.classList.add(CURSOR_STYLE_BLOCK_CLASS);\n break;\n }\n }\n\n if (cell.isBold()) {\n charElement.classList.add(BOLD_CLASS);\n }\n\n if (cell.isItalic()) {\n charElement.classList.add(ITALIC_CLASS);\n }\n\n if (cell.isDim()) {\n charElement.classList.add(DIM_CLASS);\n }\n\n if (cell.isUnderline()) {\n charElement.classList.add(UNDERLINE_CLASS);\n }\n\n if (cell.isInvisible()) {\n charElement.textContent = WHITESPACE_CELL_CHAR;\n } else {\n charElement.textContent = cell.getChars() || WHITESPACE_CELL_CHAR;\n }\n\n if (cell.isStrikethrough()) {\n charElement.classList.add(STRIKETHROUGH_CLASS);\n }\n\n let fg = cell.getFgColor();\n let fgColorMode = cell.getFgColorMode();\n let bg = cell.getBgColor();\n let bgColorMode = cell.getBgColorMode();\n const isInverse = !!cell.isInverse();\n if (isInverse) {\n const temp = fg;\n fg = bg;\n bg = temp;\n const temp2 = fgColorMode;\n fgColorMode = bgColorMode;\n bgColorMode = temp2;\n }\n\n // Apply any decoration foreground/background overrides, this must happen after inverse has\n // been applied\n let bgOverride: IColor | undefined;\n let fgOverride: IColor | undefined;\n let isTop = false;\n for (const d of this._decorationService.getDecorationsAtCell(x, row)) {\n if (d.options.layer !== 'top' && isTop) {\n continue;\n }\n if (d.backgroundColorRGB) {\n bgColorMode = Attributes.CM_RGB;\n bg = d.backgroundColorRGB.rgba >> 8 & 0xFFFFFF;\n bgOverride = d.backgroundColorRGB;\n }\n if (d.foregroundColorRGB) {\n fgColorMode = Attributes.CM_RGB;\n fg = d.foregroundColorRGB.rgba >> 8 & 0xFFFFFF;\n fgOverride = d.foregroundColorRGB;\n }\n isTop = d.options.layer === 'top';\n }\n\n // Apply selection foreground if applicable\n const isInSelection = this._isCellInSelection(x, row);\n if (!isTop) {\n if (this._colors.selectionForeground && isInSelection) {\n fgColorMode = Attributes.CM_RGB;\n fg = this._colors.selectionForeground.rgba >> 8 & 0xFFFFFF;\n fgOverride = this._colors.selectionForeground;\n }\n }\n\n // If in the selection, force the element to be above the selection to improve contrast and\n // support opaque selections\n if (isInSelection) {\n bgOverride = this._colors.selectionOpaque;\n isTop = true;\n }\n\n // If it's a top decoration, render above the selection\n if (isTop) {\n charElement.classList.add(`xterm-decoration-top`);\n }\n\n // Background\n let resolvedBg: IColor;\n switch (bgColorMode) {\n case Attributes.CM_P16:\n case Attributes.CM_P256:\n resolvedBg = this._colors.ansi[bg];\n charElement.classList.add(`xterm-bg-${bg}`);\n break;\n case Attributes.CM_RGB:\n resolvedBg = rgba.toColor(bg >> 16, bg >> 8 & 0xFF, bg & 0xFF);\n this._addStyle(charElement, `background-color:#${padStart((bg >>> 0).toString(16), '0', 6)}`);\n break;\n case Attributes.CM_DEFAULT:\n default:\n if (isInverse) {\n resolvedBg = this._colors.foreground;\n charElement.classList.add(`xterm-bg-${INVERTED_DEFAULT_COLOR}`);\n } else {\n resolvedBg = this._colors.background;\n }\n }\n\n // Foreground\n switch (fgColorMode) {\n case Attributes.CM_P16:\n case Attributes.CM_P256:\n if (cell.isBold() && fg < 8 && this._optionsService.rawOptions.drawBoldTextInBrightColors) {\n fg += 8;\n }\n if (!this._applyMinimumContrast(charElement, resolvedBg, this._colors.ansi[fg], cell, bgOverride, undefined)) {\n charElement.classList.add(`xterm-fg-${fg}`);\n }\n break;\n case Attributes.CM_RGB:\n const color = rgba.toColor(\n (fg >> 16) & 0xFF,\n (fg >> 8) & 0xFF,\n (fg ) & 0xFF\n );\n if (!this._applyMinimumContrast(charElement, resolvedBg, color, cell, bgOverride, fgOverride)) {\n this._addStyle(charElement, `color:#${padStart(fg.toString(16), '0', 6)}`);\n }\n break;\n case Attributes.CM_DEFAULT:\n default:\n if (!this._applyMinimumContrast(charElement, resolvedBg, this._colors.foreground, cell, bgOverride, undefined)) {\n if (isInverse) {\n charElement.classList.add(`xterm-fg-${INVERTED_DEFAULT_COLOR}`);\n }\n }\n }\n\n fragment.appendChild(charElement);\n\n x = lastCharX;\n }\n return fragment;\n }\n\n private _applyMinimumContrast(element: HTMLElement, bg: IColor, fg: IColor, cell: ICellData, bgOverride: IColor | undefined, fgOverride: IColor | undefined): boolean {\n if (this._optionsService.rawOptions.minimumContrastRatio === 1 || excludeFromContrastRatioDemands(cell.getCode())) {\n return false;\n }\n\n // Try get from cache first, only use the cache when there are no decoration overrides\n let adjustedColor: IColor | undefined | null = undefined;\n if (!bgOverride && !fgOverride) {\n adjustedColor = this._colors.contrastCache.getColor(bg.rgba, fg.rgba);\n }\n\n // Calculate and store in cache\n if (adjustedColor === undefined) {\n adjustedColor = color.ensureContrastRatio(bgOverride || bg, fgOverride || fg, this._optionsService.rawOptions.minimumContrastRatio);\n this._colors.contrastCache.setColor((bgOverride || bg).rgba, (fgOverride || fg).rgba, adjustedColor ?? null);\n }\n\n if (adjustedColor) {\n this._addStyle(element, `color:${adjustedColor.css}`);\n return true;\n }\n\n return false;\n }\n\n private _addStyle(element: HTMLElement, style: string): void {\n element.setAttribute('style', `${element.getAttribute('style') || ''}${style};`);\n }\n\n private _isCellInSelection(x: number, y: number): boolean {\n const start = this._selectionStart;\n const end = this._selectionEnd;\n if (!start || !end) {\n return false;\n }\n if (this._columnSelectMode) {\n if (start[0] <= end[0]) {\n return x >= start[0] && y >= start[1] &&\n x < end[0] && y <= end[1];\n }\n return x < start[0] && y >= start[1] &&\n x >= end[0] && y <= end[1];\n }\n return (y > start[1] && y < end[1]) ||\n (start[1] === end[1] && y === start[1] && x >= start[0] && x < end[0]) ||\n (start[1] < end[1] && y === end[1] && x < end[0]) ||\n (start[1] < end[1] && y === start[1] && x >= start[0]);\n }\n}\n\nfunction padStart(text: string, padChar: string, length: number): string {\n while (text.length < length) {\n text = padChar + text;\n }\n return text;\n}\n", "/**\n * Copyright (c) 2017 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IBufferService } from 'common/services/Services';\n\n/**\n * Represents a selection within the buffer. This model only cares about column\n * and row coordinates, not wide characters.\n */\nexport class SelectionModel {\n /**\n * Whether select all is currently active.\n */\n public isSelectAllActive: boolean = false;\n\n /**\n * The minimal length of the selection from the start position. When double\n * clicking on a word, the word will be selected which makes the selection\n * start at the start of the word and makes this variable the length.\n */\n public selectionStartLength: number = 0;\n\n /**\n * The [x, y] position the selection starts at.\n */\n public selectionStart: [number, number] | undefined;\n\n /**\n * The [x, y] position the selection ends at.\n */\n public selectionEnd: [number, number] | undefined;\n\n constructor(\n private _bufferService: IBufferService\n ) {\n }\n\n /**\n * Clears the current selection.\n */\n public clearSelection(): void {\n this.selectionStart = undefined;\n this.selectionEnd = undefined;\n this.isSelectAllActive = false;\n this.selectionStartLength = 0;\n }\n\n /**\n * The final selection start, taking into consideration select all.\n */\n public get finalSelectionStart(): [number, number] | undefined {\n if (this.isSelectAllActive) {\n return [0, 0];\n }\n\n if (!this.selectionEnd || !this.selectionStart) {\n return this.selectionStart;\n }\n\n return this.areSelectionValuesReversed() ? this.selectionEnd : this.selectionStart;\n }\n\n /**\n * The final selection end, taking into consideration select all, double click\n * word selection and triple click line selection.\n */\n public get finalSelectionEnd(): [number, number] | undefined {\n if (this.isSelectAllActive) {\n return [this._bufferService.cols, this._bufferService.buffer.ybase + this._bufferService.rows - 1];\n }\n\n if (!this.selectionStart) {\n return undefined;\n }\n\n // Use the selection start + length if the end doesn't exist or they're reversed\n if (!this.selectionEnd || this.areSelectionValuesReversed()) {\n const startPlusLength = this.selectionStart[0] + this.selectionStartLength;\n if (startPlusLength > this._bufferService.cols) {\n // Ensure the trailing EOL isn't included when the selection ends on the right edge\n if (startPlusLength % this._bufferService.cols === 0) {\n return [this._bufferService.cols, this.selectionStart[1] + Math.floor(startPlusLength / this._bufferService.cols) - 1];\n }\n return [startPlusLength % this._bufferService.cols, this.selectionStart[1] + Math.floor(startPlusLength / this._bufferService.cols)];\n }\n return [startPlusLength, this.selectionStart[1]];\n }\n\n // Ensure the the word/line is selected after a double/triple click\n if (this.selectionStartLength) {\n // Select the larger of the two when start and end are on the same line\n if (this.selectionEnd[1] === this.selectionStart[1]) {\n // Keep the whole wrapped word/line selected if the content wraps multiple lines\n const startPlusLength = this.selectionStart[0] + this.selectionStartLength;\n if (startPlusLength > this._bufferService.cols) {\n return [startPlusLength % this._bufferService.cols, this.selectionStart[1] + Math.floor(startPlusLength / this._bufferService.cols)];\n }\n return [Math.max(startPlusLength, this.selectionEnd[0]), this.selectionEnd[1]];\n }\n }\n return this.selectionEnd;\n }\n\n /**\n * Returns whether the selection start and end are reversed.\n */\n public areSelectionValuesReversed(): boolean {\n const start = this.selectionStart;\n const end = this.selectionEnd;\n if (!start || !end) {\n return false;\n }\n return start[1] > end[1] || (start[1] === end[1] && start[0] > end[0]);\n }\n\n /**\n * Handle the buffer being trimmed, adjust the selection position.\n * @param amount The amount the buffer is being trimmed.\n * @return Whether a refresh is necessary.\n */\n public onTrim(amount: number): boolean {\n // Adjust the selection position based on the trimmed amount.\n if (this.selectionStart) {\n this.selectionStart[1] -= amount;\n }\n if (this.selectionEnd) {\n this.selectionEnd[1] -= amount;\n }\n\n // The selection has moved off the buffer, clear it.\n if (this.selectionEnd && this.selectionEnd[1] < 0) {\n this.clearSelection();\n return true;\n }\n\n // If the selection start is trimmed, ensure the start column is 0.\n if (this.selectionStart && this.selectionStart[1] < 0) {\n this.selectionStart[1] = 0;\n }\n return false;\n }\n}\n", "/**\n * Copyright (c) 2016 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IOptionsService } from 'common/services/Services';\nimport { IEvent, EventEmitter } from 'common/EventEmitter';\nimport { ICharSizeService } from 'browser/services/Services';\n\nexport class CharSizeService implements ICharSizeService {\n public serviceBrand: undefined;\n\n public width: number = 0;\n public height: number = 0;\n private _measureStrategy: IMeasureStrategy;\n\n public get hasValidSize(): boolean { return this.width > 0 && this.height > 0; }\n\n private _onCharSizeChange = new EventEmitter();\n public get onCharSizeChange(): IEvent { return this._onCharSizeChange.event; }\n\n constructor(\n document: Document,\n parentElement: HTMLElement,\n @IOptionsService private readonly _optionsService: IOptionsService\n ) {\n this._measureStrategy = new DomMeasureStrategy(document, parentElement, this._optionsService);\n }\n\n public measure(): void {\n const result = this._measureStrategy.measure();\n if (result.width !== this.width || result.height !== this.height) {\n this.width = result.width;\n this.height = result.height;\n this._onCharSizeChange.fire();\n }\n }\n}\n\ninterface IMeasureStrategy {\n measure(): IReadonlyMeasureResult;\n}\n\ninterface IReadonlyMeasureResult {\n readonly width: number;\n readonly height: number;\n}\n\ninterface IMeasureResult {\n width: number;\n height: number;\n}\n\n// TODO: For supporting browsers we should also provide a CanvasCharDimensionsProvider that uses ctx.measureText\nclass DomMeasureStrategy implements IMeasureStrategy {\n private _result: IMeasureResult = { width: 0, height: 0 };\n private _measureElement: HTMLElement;\n\n constructor(\n private _document: Document,\n private _parentElement: HTMLElement,\n private _optionsService: IOptionsService\n ) {\n this._measureElement = this._document.createElement('span');\n this._measureElement.classList.add('xterm-char-measure-element');\n this._measureElement.textContent = 'W';\n this._measureElement.setAttribute('aria-hidden', 'true');\n this._parentElement.appendChild(this._measureElement);\n }\n\n public measure(): IReadonlyMeasureResult {\n this._measureElement.style.fontFamily = this._optionsService.rawOptions.fontFamily;\n this._measureElement.style.fontSize = `${this._optionsService.rawOptions.fontSize}px`;\n\n // Note that this triggers a synchronous layout\n const geometry = this._measureElement.getBoundingClientRect();\n\n // If values are 0 then the element is likely currently display:none, in which case we should\n // retain the previous value.\n if (geometry.width !== 0 && geometry.height !== 0) {\n this._result.width = geometry.width;\n this._result.height = Math.ceil(geometry.height);\n }\n\n return this._result;\n }\n}\n", "/**\n * Copyright (c) 2018 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IBufferLine, ICellData, CharData } from 'common/Types';\nimport { ICharacterJoiner } from 'browser/Types';\nimport { AttributeData } from 'common/buffer/AttributeData';\nimport { WHITESPACE_CELL_CHAR, Content } from 'common/buffer/Constants';\nimport { CellData } from 'common/buffer/CellData';\nimport { IBufferService } from 'common/services/Services';\nimport { ICharacterJoinerService } from 'browser/services/Services';\n\nexport class JoinedCellData extends AttributeData implements ICellData {\n private _width: number;\n // .content carries no meaning for joined CellData, simply nullify it\n // thus we have to overload all other .content accessors\n public content: number = 0;\n public fg: number;\n public bg: number;\n public combinedData: string = '';\n\n constructor(firstCell: ICellData, chars: string, width: number) {\n super();\n this.fg = firstCell.fg;\n this.bg = firstCell.bg;\n this.combinedData = chars;\n this._width = width;\n }\n\n public isCombined(): number {\n // always mark joined cell data as combined\n return Content.IS_COMBINED_MASK;\n }\n\n public getWidth(): number {\n return this._width;\n }\n\n public getChars(): string {\n return this.combinedData;\n }\n\n public getCode(): number {\n // code always gets the highest possible fake codepoint (read as -1)\n // this is needed as code is used by caches as identifier\n return 0x1FFFFF;\n }\n\n public setFromCharData(value: CharData): void {\n throw new Error('not implemented');\n }\n\n public getAsCharData(): CharData {\n return [this.fg, this.getChars(), this.getWidth(), this.getCode()];\n }\n}\n\nexport class CharacterJoinerService implements ICharacterJoinerService {\n public serviceBrand: undefined;\n\n private _characterJoiners: ICharacterJoiner[] = [];\n private _nextCharacterJoinerId: number = 0;\n private _workCell: CellData = new CellData();\n\n constructor(\n @IBufferService private _bufferService: IBufferService\n ) { }\n\n public register(handler: (text: string) => [number, number][]): number {\n const joiner: ICharacterJoiner = {\n id: this._nextCharacterJoinerId++,\n handler\n };\n\n this._characterJoiners.push(joiner);\n return joiner.id;\n }\n\n public deregister(joinerId: number): boolean {\n for (let i = 0; i < this._characterJoiners.length; i++) {\n if (this._characterJoiners[i].id === joinerId) {\n this._characterJoiners.splice(i, 1);\n return true;\n }\n }\n\n return false;\n }\n\n public getJoinedCharacters(row: number): [number, number][] {\n if (this._characterJoiners.length === 0) {\n return [];\n }\n\n const line = this._bufferService.buffer.lines.get(row);\n if (!line || line.length === 0) {\n return [];\n }\n\n const ranges: [number, number][] = [];\n const lineStr = line.translateToString(true);\n\n // Because some cells can be represented by multiple javascript characters,\n // we track the cell and the string indexes separately. This allows us to\n // translate the string ranges we get from the joiners back into cell ranges\n // for use when rendering\n let rangeStartColumn = 0;\n let currentStringIndex = 0;\n let rangeStartStringIndex = 0;\n let rangeAttrFG = line.getFg(0);\n let rangeAttrBG = line.getBg(0);\n\n for (let x = 0; x < line.getTrimmedLength(); x++) {\n line.loadCell(x, this._workCell);\n\n if (this._workCell.getWidth() === 0) {\n // If this character is of width 0, skip it.\n continue;\n }\n\n // End of range\n if (this._workCell.fg !== rangeAttrFG || this._workCell.bg !== rangeAttrBG) {\n // If we ended up with a sequence of more than one character,\n // look for ranges to join.\n if (x - rangeStartColumn > 1) {\n const joinedRanges = this._getJoinedRanges(\n lineStr,\n rangeStartStringIndex,\n currentStringIndex,\n line,\n rangeStartColumn\n );\n for (let i = 0; i < joinedRanges.length; i++) {\n ranges.push(joinedRanges[i]);\n }\n }\n\n // Reset our markers for a new range.\n rangeStartColumn = x;\n rangeStartStringIndex = currentStringIndex;\n rangeAttrFG = this._workCell.fg;\n rangeAttrBG = this._workCell.bg;\n }\n\n currentStringIndex += this._workCell.getChars().length || WHITESPACE_CELL_CHAR.length;\n }\n\n // Process any trailing ranges.\n if (this._bufferService.cols - rangeStartColumn > 1) {\n const joinedRanges = this._getJoinedRanges(\n lineStr,\n rangeStartStringIndex,\n currentStringIndex,\n line,\n rangeStartColumn\n );\n for (let i = 0; i < joinedRanges.length; i++) {\n ranges.push(joinedRanges[i]);\n }\n }\n\n return ranges;\n }\n\n /**\n * Given a segment of a line of text, find all ranges of text that should be\n * joined in a single rendering unit. Ranges are internally converted to\n * column ranges, rather than string ranges.\n * @param line String representation of the full line of text\n * @param startIndex Start position of the range to search in the string (inclusive)\n * @param endIndex End position of the range to search in the string (exclusive)\n */\n private _getJoinedRanges(line: string, startIndex: number, endIndex: number, lineData: IBufferLine, startCol: number): [number, number][] {\n const text = line.substring(startIndex, endIndex);\n // At this point we already know that there is at least one joiner so\n // we can just pull its value and assign it directly rather than\n // merging it into an empty array, which incurs unnecessary writes.\n let allJoinedRanges: [number, number][] = [];\n try {\n allJoinedRanges = this._characterJoiners[0].handler(text);\n } catch (error) {\n console.error(error);\n }\n for (let i = 1; i < this._characterJoiners.length; i++) {\n // We merge any overlapping ranges across the different joiners\n try {\n const joinerRanges = this._characterJoiners[i].handler(text);\n for (let j = 0; j < joinerRanges.length; j++) {\n CharacterJoinerService._mergeRanges(allJoinedRanges, joinerRanges[j]);\n }\n } catch (error) {\n console.error(error);\n }\n }\n this._stringRangesToCellRanges(allJoinedRanges, lineData, startCol);\n return allJoinedRanges;\n }\n\n /**\n * Modifies the provided ranges in-place to adjust for variations between\n * string length and cell width so that the range represents a cell range,\n * rather than the string range the joiner provides.\n * @param ranges String ranges containing start (inclusive) and end (exclusive) index\n * @param line Cell data for the relevant line in the terminal\n * @param startCol Offset within the line to start from\n */\n private _stringRangesToCellRanges(ranges: [number, number][], line: IBufferLine, startCol: number): void {\n let currentRangeIndex = 0;\n let currentRangeStarted = false;\n let currentStringIndex = 0;\n let currentRange = ranges[currentRangeIndex];\n\n // If we got through all of the ranges, stop searching\n if (!currentRange) {\n return;\n }\n\n for (let x = startCol; x < this._bufferService.cols; x++) {\n const width = line.getWidth(x);\n const length = line.getString(x).length || WHITESPACE_CELL_CHAR.length;\n\n // We skip zero-width characters when creating the string to join the text\n // so we do the same here\n if (width === 0) {\n continue;\n }\n\n // Adjust the start of the range\n if (!currentRangeStarted && currentRange[0] <= currentStringIndex) {\n currentRange[0] = x;\n currentRangeStarted = true;\n }\n\n // Adjust the end of the range\n if (currentRange[1] <= currentStringIndex) {\n currentRange[1] = x;\n\n // We're finished with this range, so we move to the next one\n currentRange = ranges[++currentRangeIndex];\n\n // If there are no more ranges left, stop searching\n if (!currentRange) {\n break;\n }\n\n // Ranges can be on adjacent characters. Because the end index of the\n // ranges are exclusive, this means that the index for the start of a\n // range can be the same as the end index of the previous range. To\n // account for the start of the next range, we check here just in case.\n if (currentRange[0] <= currentStringIndex) {\n currentRange[0] = x;\n currentRangeStarted = true;\n } else {\n currentRangeStarted = false;\n }\n }\n\n // Adjust the string index based on the character length to line up with\n // the column adjustment\n currentStringIndex += length;\n }\n\n // If there is still a range left at the end, it must extend all the way to\n // the end of the line.\n if (currentRange) {\n currentRange[1] = this._bufferService.cols;\n }\n }\n\n /**\n * Merges the range defined by the provided start and end into the list of\n * existing ranges. The merge is done in place on the existing range for\n * performance and is also returned.\n * @param ranges Existing range list\n * @param newRange Tuple of two numbers representing the new range to merge in.\n * @returns The ranges input with the new range merged in place\n */\n private static _mergeRanges(ranges: [number, number][], newRange: [number, number]): [number, number][] {\n let inRange = false;\n for (let i = 0; i < ranges.length; i++) {\n const range = ranges[i];\n if (!inRange) {\n if (newRange[1] <= range[0]) {\n // Case 1: New range is before the search range\n ranges.splice(i, 0, newRange);\n return ranges;\n }\n\n if (newRange[1] <= range[1]) {\n // Case 2: New range is either wholly contained within the\n // search range or overlaps with the front of it\n range[0] = Math.min(newRange[0], range[0]);\n return ranges;\n }\n\n if (newRange[0] < range[1]) {\n // Case 3: New range either wholly contains the search range\n // or overlaps with the end of it\n range[0] = Math.min(newRange[0], range[0]);\n inRange = true;\n }\n\n // Case 4: New range starts after the search range\n continue;\n } else {\n if (newRange[1] <= range[0]) {\n // Case 5: New range extends from previous range but doesn't\n // reach the current one\n ranges[i - 1][1] = newRange[1];\n return ranges;\n }\n\n if (newRange[1] <= range[1]) {\n // Case 6: New range extends from prvious range into the\n // current range\n ranges[i - 1][1] = Math.max(newRange[1], range[1]);\n ranges.splice(i, 1);\n return ranges;\n }\n\n // Case 7: New range extends from previous range past the\n // end of the current range\n ranges.splice(i, 1);\n i--;\n }\n }\n\n if (inRange) {\n // Case 8: New range extends past the last existing range\n ranges[ranges.length - 1][1] = newRange[1];\n } else {\n // Case 9: New range starts after the last existing range\n ranges.push(newRange);\n }\n\n return ranges;\n }\n}\n", "/**\n * Copyright (c) 2019 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { ICoreBrowserService } from './Services';\n\nexport class CoreBrowserService implements ICoreBrowserService {\n public serviceBrand: undefined;\n\n constructor(\n private _textarea: HTMLTextAreaElement\n ) {\n }\n\n public get isFocused(): boolean {\n const docOrShadowRoot = this._textarea.getRootNode ? this._textarea.getRootNode() as Document | ShadowRoot : document;\n return docOrShadowRoot.activeElement === this._textarea && document.hasFocus();\n }\n}\n", "/**\n * Copyright (c) 2017 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { ICharSizeService, IRenderService, IMouseService } from './Services';\nimport { getCoords, getRawByteCoords } from 'browser/input/Mouse';\n\nexport class MouseService implements IMouseService {\n public serviceBrand: undefined;\n\n constructor(\n @IRenderService private readonly _renderService: IRenderService,\n @ICharSizeService private readonly _charSizeService: ICharSizeService\n ) {\n }\n\n public getCoords(event: {clientX: number, clientY: number}, element: HTMLElement, colCount: number, rowCount: number, isSelection?: boolean): [number, number] | undefined {\n return getCoords(\n window,\n event,\n element,\n colCount,\n rowCount,\n this._charSizeService.hasValidSize,\n this._renderService.dimensions.actualCellWidth,\n this._renderService.dimensions.actualCellHeight,\n isSelection\n );\n }\n\n public getRawByteCoords(event: MouseEvent, element: HTMLElement, colCount: number, rowCount: number): { x: number, y: number } | undefined {\n const coords = this.getCoords(event, element, colCount, rowCount);\n return getRawByteCoords(coords);\n }\n}\n", "/**\n * Copyright (c) 2019 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IRenderer, IRenderDimensions } from 'browser/renderer/Types';\nimport { RenderDebouncer } from 'browser/RenderDebouncer';\nimport { EventEmitter, IEvent } from 'common/EventEmitter';\nimport { Disposable } from 'common/Lifecycle';\nimport { ScreenDprMonitor } from 'browser/ScreenDprMonitor';\nimport { addDisposableDomListener } from 'browser/Lifecycle';\nimport { IColorSet, IRenderDebouncer, IRenderDebouncerWithCallback } from 'browser/Types';\nimport { IOptionsService, IBufferService, IDecorationService } from 'common/services/Services';\nimport { ICharSizeService, IRenderService } from 'browser/services/Services';\n\ninterface ISelectionState {\n start: [number, number] | undefined;\n end: [number, number] | undefined;\n columnSelectMode: boolean;\n}\n\nexport class RenderService extends Disposable implements IRenderService {\n public serviceBrand: undefined;\n\n private _renderDebouncer: IRenderDebouncerWithCallback;\n private _screenDprMonitor: ScreenDprMonitor;\n\n private _isPaused: boolean = false;\n private _needsFullRefresh: boolean = false;\n private _isNextRenderRedrawOnly: boolean = true;\n private _needsSelectionRefresh: boolean = false;\n private _canvasWidth: number = 0;\n private _canvasHeight: number = 0;\n private _selectionState: ISelectionState = {\n start: undefined,\n end: undefined,\n columnSelectMode: false\n };\n\n private _onDimensionsChange = new EventEmitter();\n public get onDimensionsChange(): IEvent { return this._onDimensionsChange.event; }\n private _onRenderedViewportChange = new EventEmitter<{ start: number, end: number }>();\n public get onRenderedViewportChange(): IEvent<{ start: number, end: number }> { return this._onRenderedViewportChange.event; }\n private _onRender = new EventEmitter<{ start: number, end: number }>();\n public get onRender(): IEvent<{ start: number, end: number }> { return this._onRender.event; }\n private _onRefreshRequest = new EventEmitter<{ start: number, end: number }>();\n public get onRefreshRequest(): IEvent<{ start: number, end: number }> { return this._onRefreshRequest.event; }\n\n public get dimensions(): IRenderDimensions { return this._renderer.dimensions; }\n\n constructor(\n private _renderer: IRenderer,\n private _rowCount: number,\n screenElement: HTMLElement,\n @IOptionsService optionsService: IOptionsService,\n @ICharSizeService private readonly _charSizeService: ICharSizeService,\n @IDecorationService decorationService: IDecorationService,\n @IBufferService bufferService: IBufferService\n ) {\n super();\n\n this.register({ dispose: () => this._renderer.dispose() });\n\n this._renderDebouncer = new RenderDebouncer((start, end) => this._renderRows(start, end));\n this.register(this._renderDebouncer);\n\n this._screenDprMonitor = new ScreenDprMonitor();\n this._screenDprMonitor.setListener(() => this.onDevicePixelRatioChange());\n this.register(this._screenDprMonitor);\n\n this.register(bufferService.onResize(() => this._fullRefresh()));\n this.register(bufferService.buffers.onBufferActivate(() => this._renderer?.clear()));\n this.register(optionsService.onOptionChange(() => this._handleOptionsChanged()));\n this.register(this._charSizeService.onCharSizeChange(() => this.onCharSizeChanged()));\n\n // Do a full refresh whenever any decoration is added or removed. This may not actually result\n // in changes but since decorations should be used sparingly or added/removed all in the same\n // frame this should have minimal performance impact.\n this.register(decorationService.onDecorationRegistered(() => this._fullRefresh()));\n this.register(decorationService.onDecorationRemoved(() => this._fullRefresh()));\n\n // No need to register this as renderer is explicitly disposed in RenderService.dispose\n this._renderer.onRequestRedraw(e => this.refreshRows(e.start, e.end, true));\n\n // dprchange should handle this case, we need this as well for browsers that don't support the\n // matchMedia query.\n this.register(addDisposableDomListener(window, 'resize', () => this.onDevicePixelRatioChange()));\n\n // Detect whether IntersectionObserver is detected and enable renderer pause\n // and resume based on terminal visibility if so\n if ('IntersectionObserver' in window) {\n const observer = new IntersectionObserver(e => this._onIntersectionChange(e[e.length - 1]), { threshold: 0 });\n observer.observe(screenElement);\n this.register({ dispose: () => observer.disconnect() });\n }\n }\n\n private _onIntersectionChange(entry: IntersectionObserverEntry): void {\n this._isPaused = entry.isIntersecting === undefined ? (entry.intersectionRatio === 0) : !entry.isIntersecting;\n\n // Terminal was hidden on open\n if (!this._isPaused && !this._charSizeService.hasValidSize) {\n this._charSizeService.measure();\n }\n\n if (!this._isPaused && this._needsFullRefresh) {\n this.refreshRows(0, this._rowCount - 1);\n this._needsFullRefresh = false;\n }\n }\n\n public refreshRows(start: number, end: number, isRedrawOnly: boolean = false): void {\n if (this._isPaused) {\n this._needsFullRefresh = true;\n return;\n }\n if (!isRedrawOnly) {\n this._isNextRenderRedrawOnly = false;\n }\n this._renderDebouncer.refresh(start, end, this._rowCount);\n }\n\n private _renderRows(start: number, end: number): void {\n this._renderer.renderRows(start, end);\n\n // Update selection if needed\n if (this._needsSelectionRefresh) {\n this._renderer.onSelectionChanged(this._selectionState.start, this._selectionState.end, this._selectionState.columnSelectMode);\n this._needsSelectionRefresh = false;\n }\n\n // Fire render event only if it was not a redraw\n if (!this._isNextRenderRedrawOnly) {\n this._onRenderedViewportChange.fire({ start, end });\n }\n this._onRender.fire({ start, end });\n this._isNextRenderRedrawOnly = true;\n }\n\n public resize(cols: number, rows: number): void {\n this._rowCount = rows;\n this._fireOnCanvasResize();\n }\n\n private _handleOptionsChanged(): void {\n this._renderer.onOptionsChanged();\n this.refreshRows(0, this._rowCount - 1);\n this._fireOnCanvasResize();\n }\n\n private _fireOnCanvasResize(): void {\n // Don't fire the event if the dimensions haven't changed\n if (this._renderer.dimensions.canvasWidth === this._canvasWidth && this._renderer.dimensions.canvasHeight === this._canvasHeight) {\n return;\n }\n this._onDimensionsChange.fire(this._renderer.dimensions);\n }\n\n public dispose(): void {\n super.dispose();\n }\n\n public setRenderer(renderer: IRenderer): void {\n // TODO: RenderService should be the only one to dispose the renderer\n this._renderer.dispose();\n this._renderer = renderer;\n this._renderer.onRequestRedraw(e => this.refreshRows(e.start, e.end, true));\n\n // Force a refresh\n this._needsSelectionRefresh = true;\n this._fullRefresh();\n }\n\n public addRefreshCallback(callback: FrameRequestCallback): number {\n return this._renderDebouncer.addRefreshCallback(callback);\n }\n\n private _fullRefresh(): void {\n if (this._isPaused) {\n this._needsFullRefresh = true;\n } else {\n this.refreshRows(0, this._rowCount - 1);\n }\n }\n\n public clearTextureAtlas(): void {\n this._renderer?.clearTextureAtlas?.();\n this._fullRefresh();\n }\n\n public setColors(colors: IColorSet): void {\n this._renderer.setColors(colors);\n this._fullRefresh();\n }\n\n public onDevicePixelRatioChange(): void {\n // Force char size measurement as DomMeasureStrategy(getBoundingClientRect) is not stable\n // when devicePixelRatio changes\n this._charSizeService.measure();\n\n this._renderer.onDevicePixelRatioChange();\n this.refreshRows(0, this._rowCount - 1);\n }\n\n public onResize(cols: number, rows: number): void {\n this._renderer.onResize(cols, rows);\n this._fullRefresh();\n }\n\n // TODO: Is this useful when we have onResize?\n public onCharSizeChanged(): void {\n this._renderer.onCharSizeChanged();\n }\n\n public onBlur(): void {\n this._renderer.onBlur();\n }\n\n public onFocus(): void {\n this._renderer.onFocus();\n }\n\n public onSelectionChanged(start: [number, number] | undefined, end: [number, number] | undefined, columnSelectMode: boolean): void {\n this._selectionState.start = start;\n this._selectionState.end = end;\n this._selectionState.columnSelectMode = columnSelectMode;\n this._renderer.onSelectionChanged(start, end, columnSelectMode);\n }\n\n public onCursorMove(): void {\n this._renderer.onCursorMove();\n }\n\n public clear(): void {\n this._renderer.clear();\n }\n}\n", "/**\n * Copyright (c) 2017 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { ISelectionRedrawRequestEvent, ISelectionRequestScrollLinesEvent } from 'browser/selection/Types';\nimport { IBuffer } from 'common/buffer/Types';\nimport { IBufferLine, IDisposable } from 'common/Types';\nimport * as Browser from 'common/Platform';\nimport { SelectionModel } from 'browser/selection/SelectionModel';\nimport { CellData } from 'common/buffer/CellData';\nimport { EventEmitter, IEvent } from 'common/EventEmitter';\nimport { IMouseService, ISelectionService, IRenderService } from 'browser/services/Services';\nimport { IBufferRange, ILinkifier2 } from 'browser/Types';\nimport { IBufferService, IOptionsService, ICoreService } from 'common/services/Services';\nimport { getCoordsRelativeToElement } from 'browser/input/Mouse';\nimport { moveToCellSequence } from 'browser/input/MoveToCell';\nimport { Disposable } from 'common/Lifecycle';\nimport { getRangeLength } from 'common/buffer/BufferRange';\n\n/**\n * The number of pixels the mouse needs to be above or below the viewport in\n * order to scroll at the maximum speed.\n */\nconst DRAG_SCROLL_MAX_THRESHOLD = 50;\n\n/**\n * The maximum scrolling speed\n */\nconst DRAG_SCROLL_MAX_SPEED = 15;\n\n/**\n * The number of milliseconds between drag scroll updates.\n */\nconst DRAG_SCROLL_INTERVAL = 50;\n\n/**\n * The maximum amount of time that can have elapsed for an alt click to move the\n * cursor.\n */\nconst ALT_CLICK_MOVE_CURSOR_TIME = 500;\n\nconst NON_BREAKING_SPACE_CHAR = String.fromCharCode(160);\nconst ALL_NON_BREAKING_SPACE_REGEX = new RegExp(NON_BREAKING_SPACE_CHAR, 'g');\n\n/**\n * Represents a position of a word on a line.\n */\ninterface IWordPosition {\n start: number;\n length: number;\n}\n\n/**\n * A selection mode, this drives how the selection behaves on mouse move.\n */\nexport const enum SelectionMode {\n NORMAL,\n WORD,\n LINE,\n COLUMN\n}\n\n/**\n * A class that manages the selection of the terminal. With help from\n * SelectionModel, SelectionService handles with all logic associated with\n * dealing with the selection, including handling mouse interaction, wide\n * characters and fetching the actual text within the selection. Rendering is\n * not handled by the SelectionService but the onRedrawRequest event is fired\n * when the selection is ready to be redrawn (on an animation frame).\n */\nexport class SelectionService extends Disposable implements ISelectionService {\n public serviceBrand: undefined;\n\n protected _model: SelectionModel;\n\n /**\n * The amount to scroll every drag scroll update (depends on how far the mouse\n * drag is above or below the terminal).\n */\n private _dragScrollAmount: number = 0;\n\n /**\n * The current selection mode.\n */\n protected _activeSelectionMode: SelectionMode;\n\n /**\n * A setInterval timer that is active while the mouse is down whose callback\n * scrolls the viewport when necessary.\n */\n private _dragScrollIntervalTimer: number | undefined;\n\n /**\n * The animation frame ID used for refreshing the selection.\n */\n private _refreshAnimationFrame: number | undefined;\n\n /**\n * Whether selection is enabled.\n */\n private _enabled = true;\n\n private _mouseMoveListener: EventListener;\n private _mouseUpListener: EventListener;\n private _trimListener: IDisposable;\n private _workCell: CellData = new CellData();\n\n private _mouseDownTimeStamp: number = 0;\n private _oldHasSelection: boolean = false;\n private _oldSelectionStart: [number, number] | undefined = undefined;\n private _oldSelectionEnd: [number, number] | undefined = undefined;\n\n private _onLinuxMouseSelection = this.register(new EventEmitter());\n public get onLinuxMouseSelection(): IEvent { return this._onLinuxMouseSelection.event; }\n private _onRedrawRequest = this.register(new EventEmitter());\n public get onRequestRedraw(): IEvent { return this._onRedrawRequest.event; }\n private _onSelectionChange = this.register(new EventEmitter());\n public get onSelectionChange(): IEvent { return this._onSelectionChange.event; }\n private _onRequestScrollLines = this.register(new EventEmitter());\n public get onRequestScrollLines(): IEvent { return this._onRequestScrollLines.event; }\n\n constructor(\n private readonly _element: HTMLElement,\n private readonly _screenElement: HTMLElement,\n private readonly _linkifier: ILinkifier2,\n @IBufferService private readonly _bufferService: IBufferService,\n @ICoreService private readonly _coreService: ICoreService,\n @IMouseService private readonly _mouseService: IMouseService,\n @IOptionsService private readonly _optionsService: IOptionsService,\n @IRenderService private readonly _renderService: IRenderService\n ) {\n super();\n\n // Init listeners\n this._mouseMoveListener = event => this._onMouseMove(event as MouseEvent);\n this._mouseUpListener = event => this._onMouseUp(event as MouseEvent);\n this._coreService.onUserInput(() => {\n if (this.hasSelection) {\n this.clearSelection();\n }\n });\n this._trimListener = this._bufferService.buffer.lines.onTrim(amount => this._onTrim(amount));\n this.register(this._bufferService.buffers.onBufferActivate(e => this._onBufferActivate(e)));\n\n this.enable();\n\n this._model = new SelectionModel(this._bufferService);\n this._activeSelectionMode = SelectionMode.NORMAL;\n }\n\n public dispose(): void {\n this._removeMouseDownListeners();\n }\n\n public reset(): void {\n this.clearSelection();\n }\n\n /**\n * Disables the selection manager. This is useful for when terminal mouse\n * are enabled.\n */\n public disable(): void {\n this.clearSelection();\n this._enabled = false;\n }\n\n /**\n * Enable the selection manager.\n */\n public enable(): void {\n this._enabled = true;\n }\n\n public get selectionStart(): [number, number] | undefined { return this._model.finalSelectionStart; }\n public get selectionEnd(): [number, number] | undefined { return this._model.finalSelectionEnd; }\n\n /**\n * Gets whether there is an active text selection.\n */\n public get hasSelection(): boolean {\n const start = this._model.finalSelectionStart;\n const end = this._model.finalSelectionEnd;\n if (!start || !end) {\n return false;\n }\n return start[0] !== end[0] || start[1] !== end[1];\n }\n\n /**\n * Gets the text currently selected.\n */\n public get selectionText(): string {\n const start = this._model.finalSelectionStart;\n const end = this._model.finalSelectionEnd;\n if (!start || !end) {\n return '';\n }\n\n const buffer = this._bufferService.buffer;\n const result: string[] = [];\n\n if (this._activeSelectionMode === SelectionMode.COLUMN) {\n // Ignore zero width selections\n if (start[0] === end[0]) {\n return '';\n }\n\n // For column selection it's not enough to rely on final selection's swapping of reversed\n // values, it also needs the x coordinates to swap independently of the y coordinate is needed\n const startCol = start[0] < end[0] ? start[0] : end[0];\n const endCol = start[0] < end[0] ? end[0] : start[0];\n for (let i = start[1]; i <= end[1]; i++) {\n const lineText = buffer.translateBufferLineToString(i, true, startCol, endCol);\n result.push(lineText);\n }\n } else {\n // Get first row\n const startRowEndCol = start[1] === end[1] ? end[0] : undefined;\n result.push(buffer.translateBufferLineToString(start[1], true, start[0], startRowEndCol));\n\n // Get middle rows\n for (let i = start[1] + 1; i <= end[1] - 1; i++) {\n const bufferLine = buffer.lines.get(i);\n const lineText = buffer.translateBufferLineToString(i, true);\n if (bufferLine?.isWrapped) {\n result[result.length - 1] += lineText;\n } else {\n result.push(lineText);\n }\n }\n\n // Get final row\n if (start[1] !== end[1]) {\n const bufferLine = buffer.lines.get(end[1]);\n const lineText = buffer.translateBufferLineToString(end[1], true, 0, end[0]);\n if (bufferLine && bufferLine!.isWrapped) {\n result[result.length - 1] += lineText;\n } else {\n result.push(lineText);\n }\n }\n }\n\n // Format string by replacing non-breaking space chars with regular spaces\n // and joining the array into a multi-line string.\n const formattedResult = result.map(line => {\n return line.replace(ALL_NON_BREAKING_SPACE_REGEX, ' ');\n }).join(Browser.isWindows ? '\\r\\n' : '\\n');\n\n return formattedResult;\n }\n\n /**\n * Clears the current terminal selection.\n */\n public clearSelection(): void {\n this._model.clearSelection();\n this._removeMouseDownListeners();\n this.refresh();\n this._onSelectionChange.fire();\n }\n\n /**\n * Queues a refresh, redrawing the selection on the next opportunity.\n * @param isLinuxMouseSelection Whether the selection should be registered as a new\n * selection on Linux.\n */\n public refresh(isLinuxMouseSelection?: boolean): void {\n // Queue the refresh for the renderer\n if (!this._refreshAnimationFrame) {\n this._refreshAnimationFrame = window.requestAnimationFrame(() => this._refresh());\n }\n\n // If the platform is Linux and the refresh call comes from a mouse event,\n // we need to update the selection for middle click to paste selection.\n if (Browser.isLinux && isLinuxMouseSelection) {\n const selectionText = this.selectionText;\n if (selectionText.length) {\n this._onLinuxMouseSelection.fire(this.selectionText);\n }\n }\n }\n\n /**\n * Fires the refresh event, causing consumers to pick it up and redraw the\n * selection state.\n */\n private _refresh(): void {\n this._refreshAnimationFrame = undefined;\n this._onRedrawRequest.fire({\n start: this._model.finalSelectionStart,\n end: this._model.finalSelectionEnd,\n columnSelectMode: this._activeSelectionMode === SelectionMode.COLUMN\n });\n }\n\n /**\n * Checks if the current click was inside the current selection\n * @param event The mouse event\n */\n private _isClickInSelection(event: MouseEvent): boolean {\n const coords = this._getMouseBufferCoords(event);\n const start = this._model.finalSelectionStart;\n const end = this._model.finalSelectionEnd;\n\n if (!start || !end || !coords) {\n return false;\n }\n\n return this._areCoordsInSelection(coords, start, end);\n }\n\n public isCellInSelection(x: number, y: number): boolean {\n const start = this._model.finalSelectionStart;\n const end = this._model.finalSelectionEnd;\n if (!start || !end) {\n return false;\n }\n return this._areCoordsInSelection([x, y], start, end);\n }\n\n protected _areCoordsInSelection(coords: [number, number], start: [number, number], end: [number, number]): boolean {\n return (coords[1] > start[1] && coords[1] < end[1]) ||\n (start[1] === end[1] && coords[1] === start[1] && coords[0] >= start[0] && coords[0] < end[0]) ||\n (start[1] < end[1] && coords[1] === end[1] && coords[0] < end[0]) ||\n (start[1] < end[1] && coords[1] === start[1] && coords[0] >= start[0]);\n }\n\n /**\n * Selects word at the current mouse event coordinates.\n * @param event The mouse event.\n */\n private _selectWordAtCursor(event: MouseEvent, allowWhitespaceOnlySelection: boolean): boolean {\n // Check if there is a link under the cursor first and select that if so\n const range = this._linkifier.currentLink?.link?.range;\n if (range) {\n this._model.selectionStart = [range.start.x - 1, range.start.y - 1];\n this._model.selectionStartLength = getRangeLength(range, this._bufferService.cols);\n this._model.selectionEnd = undefined;\n return true;\n }\n\n const coords = this._getMouseBufferCoords(event);\n if (coords) {\n this._selectWordAt(coords, allowWhitespaceOnlySelection);\n this._model.selectionEnd = undefined;\n return true;\n }\n return false;\n }\n\n /**\n * Selects all text within the terminal.\n */\n public selectAll(): void {\n this._model.isSelectAllActive = true;\n this.refresh();\n this._onSelectionChange.fire();\n }\n\n public selectLines(start: number, end: number): void {\n this._model.clearSelection();\n start = Math.max(start, 0);\n end = Math.min(end, this._bufferService.buffer.lines.length - 1);\n this._model.selectionStart = [0, start];\n this._model.selectionEnd = [this._bufferService.cols, end];\n this.refresh();\n this._onSelectionChange.fire();\n }\n\n /**\n * Handle the buffer being trimmed, adjust the selection position.\n * @param amount The amount the buffer is being trimmed.\n */\n private _onTrim(amount: number): void {\n const needsRefresh = this._model.onTrim(amount);\n if (needsRefresh) {\n this.refresh();\n }\n }\n\n /**\n * Gets the 0-based [x, y] buffer coordinates of the current mouse event.\n * @param event The mouse event.\n */\n private _getMouseBufferCoords(event: MouseEvent): [number, number] | undefined {\n const coords = this._mouseService.getCoords(event, this._screenElement, this._bufferService.cols, this._bufferService.rows, true);\n if (!coords) {\n return undefined;\n }\n\n // Convert to 0-based\n coords[0]--;\n coords[1]--;\n\n // Convert viewport coords to buffer coords\n coords[1] += this._bufferService.buffer.ydisp;\n return coords;\n }\n\n /**\n * Gets the amount the viewport should be scrolled based on how far out of the\n * terminal the mouse is.\n * @param event The mouse event.\n */\n private _getMouseEventScrollAmount(event: MouseEvent): number {\n let offset = getCoordsRelativeToElement(window, event, this._screenElement)[1];\n const terminalHeight = this._renderService.dimensions.canvasHeight;\n if (offset >= 0 && offset <= terminalHeight) {\n return 0;\n }\n if (offset > terminalHeight) {\n offset -= terminalHeight;\n }\n\n offset = Math.min(Math.max(offset, -DRAG_SCROLL_MAX_THRESHOLD), DRAG_SCROLL_MAX_THRESHOLD);\n offset /= DRAG_SCROLL_MAX_THRESHOLD;\n return (offset / Math.abs(offset)) + Math.round(offset * (DRAG_SCROLL_MAX_SPEED - 1));\n }\n\n /**\n * Returns whether the selection manager should force selection, regardless of\n * whether the terminal is in mouse events mode.\n * @param event The mouse event.\n */\n public shouldForceSelection(event: MouseEvent): boolean {\n if (Browser.isMac) {\n return event.altKey && this._optionsService.rawOptions.macOptionClickForcesSelection;\n }\n\n return event.shiftKey;\n }\n\n /**\n * Handles te mousedown event, setting up for a new selection.\n * @param event The mousedown event.\n */\n public onMouseDown(event: MouseEvent): void {\n this._mouseDownTimeStamp = event.timeStamp;\n // If we have selection, we want the context menu on right click even if the\n // terminal is in mouse mode.\n if (event.button === 2 && this.hasSelection) {\n return;\n }\n\n // Only action the primary button\n if (event.button !== 0) {\n return;\n }\n\n // Allow selection when using a specific modifier key, even when disabled\n if (!this._enabled) {\n if (!this.shouldForceSelection(event)) {\n return;\n }\n\n // Don't send the mouse down event to the current process, we want to select\n event.stopPropagation();\n }\n\n // Tell the browser not to start a regular selection\n event.preventDefault();\n\n // Reset drag scroll state\n this._dragScrollAmount = 0;\n\n if (this._enabled && event.shiftKey) {\n this._onIncrementalClick(event);\n } else {\n if (event.detail === 1) {\n this._onSingleClick(event);\n } else if (event.detail === 2) {\n this._onDoubleClick(event);\n } else if (event.detail === 3) {\n this._onTripleClick(event);\n }\n }\n\n this._addMouseDownListeners();\n this.refresh(true);\n }\n\n /**\n * Adds listeners when mousedown is triggered.\n */\n private _addMouseDownListeners(): void {\n // Listen on the document so that dragging outside of viewport works\n if (this._screenElement.ownerDocument) {\n this._screenElement.ownerDocument.addEventListener('mousemove', this._mouseMoveListener);\n this._screenElement.ownerDocument.addEventListener('mouseup', this._mouseUpListener);\n }\n this._dragScrollIntervalTimer = window.setInterval(() => this._dragScroll(), DRAG_SCROLL_INTERVAL);\n }\n\n /**\n * Removes the listeners that are registered when mousedown is triggered.\n */\n private _removeMouseDownListeners(): void {\n if (this._screenElement.ownerDocument) {\n this._screenElement.ownerDocument.removeEventListener('mousemove', this._mouseMoveListener);\n this._screenElement.ownerDocument.removeEventListener('mouseup', this._mouseUpListener);\n }\n clearInterval(this._dragScrollIntervalTimer);\n this._dragScrollIntervalTimer = undefined;\n }\n\n /**\n * Performs an incremental click, setting the selection end position to the mouse\n * position.\n * @param event The mouse event.\n */\n private _onIncrementalClick(event: MouseEvent): void {\n if (this._model.selectionStart) {\n this._model.selectionEnd = this._getMouseBufferCoords(event);\n }\n }\n\n /**\n * Performs a single click, resetting relevant state and setting the selection\n * start position.\n * @param event The mouse event.\n */\n private _onSingleClick(event: MouseEvent): void {\n this._model.selectionStartLength = 0;\n this._model.isSelectAllActive = false;\n this._activeSelectionMode = this.shouldColumnSelect(event) ? SelectionMode.COLUMN : SelectionMode.NORMAL;\n\n // Initialize the new selection\n this._model.selectionStart = this._getMouseBufferCoords(event);\n if (!this._model.selectionStart) {\n return;\n }\n this._model.selectionEnd = undefined;\n\n // Ensure the line exists\n const line = this._bufferService.buffer.lines.get(this._model.selectionStart[1]);\n if (!line) {\n return;\n }\n\n // Return early if the click event is not in the buffer (eg. in scroll bar)\n if (line.length === this._model.selectionStart[0]) {\n return;\n }\n\n // If the mouse is over the second half of a wide character, adjust the\n // selection to cover the whole character\n if (line.hasWidth(this._model.selectionStart[0]) === 0) {\n this._model.selectionStart[0]++;\n }\n }\n\n /**\n * Performs a double click, selecting the current word.\n * @param event The mouse event.\n */\n private _onDoubleClick(event: MouseEvent): void {\n if (this._selectWordAtCursor(event, true)) {\n this._activeSelectionMode = SelectionMode.WORD;\n }\n }\n\n /**\n * Performs a triple click, selecting the current line and activating line\n * select mode.\n * @param event The mouse event.\n */\n private _onTripleClick(event: MouseEvent): void {\n const coords = this._getMouseBufferCoords(event);\n if (coords) {\n this._activeSelectionMode = SelectionMode.LINE;\n this._selectLineAt(coords[1]);\n }\n }\n\n /**\n * Returns whether the selection manager should operate in column select mode\n * @param event the mouse or keyboard event\n */\n public shouldColumnSelect(event: KeyboardEvent | MouseEvent): boolean {\n return event.altKey && !(Browser.isMac && this._optionsService.rawOptions.macOptionClickForcesSelection);\n }\n\n /**\n * Handles the mousemove event when the mouse button is down, recording the\n * end of the selection and refreshing the selection.\n * @param event The mousemove event.\n */\n private _onMouseMove(event: MouseEvent): void {\n // If the mousemove listener is active it means that a selection is\n // currently being made, we should stop propagation to prevent mouse events\n // to be sent to the pty.\n event.stopImmediatePropagation();\n\n // Do nothing if there is no selection start, this can happen if the first\n // click in the terminal is an incremental click\n if (!this._model.selectionStart) {\n return;\n }\n\n // Record the previous position so we know whether to redraw the selection\n // at the end.\n const previousSelectionEnd = this._model.selectionEnd ? [this._model.selectionEnd[0], this._model.selectionEnd[1]] : null;\n\n // Set the initial selection end based on the mouse coordinates\n this._model.selectionEnd = this._getMouseBufferCoords(event);\n if (!this._model.selectionEnd) {\n this.refresh(true);\n return;\n }\n\n // Select the entire line if line select mode is active.\n if (this._activeSelectionMode === SelectionMode.LINE) {\n if (this._model.selectionEnd[1] < this._model.selectionStart[1]) {\n this._model.selectionEnd[0] = 0;\n } else {\n this._model.selectionEnd[0] = this._bufferService.cols;\n }\n } else if (this._activeSelectionMode === SelectionMode.WORD) {\n this._selectToWordAt(this._model.selectionEnd);\n }\n\n // Determine the amount of scrolling that will happen.\n this._dragScrollAmount = this._getMouseEventScrollAmount(event);\n\n // If the cursor was above or below the viewport, make sure it's at the\n // start or end of the viewport respectively. This should only happen when\n // NOT in column select mode.\n if (this._activeSelectionMode !== SelectionMode.COLUMN) {\n if (this._dragScrollAmount > 0) {\n this._model.selectionEnd[0] = this._bufferService.cols;\n } else if (this._dragScrollAmount < 0) {\n this._model.selectionEnd[0] = 0;\n }\n }\n\n // If the character is a wide character include the cell to the right in the\n // selection. Note that selections at the very end of the line will never\n // have a character.\n const buffer = this._bufferService.buffer;\n if (this._model.selectionEnd[1] < buffer.lines.length) {\n const line = buffer.lines.get(this._model.selectionEnd[1]);\n if (line && line.hasWidth(this._model.selectionEnd[0]) === 0) {\n this._model.selectionEnd[0]++;\n }\n }\n\n // Only draw here if the selection changes.\n if (!previousSelectionEnd ||\n previousSelectionEnd[0] !== this._model.selectionEnd[0] ||\n previousSelectionEnd[1] !== this._model.selectionEnd[1]) {\n this.refresh(true);\n }\n }\n\n /**\n * The callback that occurs every DRAG_SCROLL_INTERVAL ms that does the\n * scrolling of the viewport.\n */\n private _dragScroll(): void {\n if (!this._model.selectionEnd || !this._model.selectionStart) {\n return;\n }\n if (this._dragScrollAmount) {\n this._onRequestScrollLines.fire({ amount: this._dragScrollAmount, suppressScrollEvent: false });\n // Re-evaluate selection\n // If the cursor was above or below the viewport, make sure it's at the\n // start or end of the viewport respectively. This should only happen when\n // NOT in column select mode.\n const buffer = this._bufferService.buffer;\n if (this._dragScrollAmount > 0) {\n if (this._activeSelectionMode !== SelectionMode.COLUMN) {\n this._model.selectionEnd[0] = this._bufferService.cols;\n }\n this._model.selectionEnd[1] = Math.min(buffer.ydisp + this._bufferService.rows, buffer.lines.length - 1);\n } else {\n if (this._activeSelectionMode !== SelectionMode.COLUMN) {\n this._model.selectionEnd[0] = 0;\n }\n this._model.selectionEnd[1] = buffer.ydisp;\n }\n this.refresh();\n }\n }\n\n /**\n * Handles the mouseup event, removing the mousedown listeners.\n * @param event The mouseup event.\n */\n private _onMouseUp(event: MouseEvent): void {\n const timeElapsed = event.timeStamp - this._mouseDownTimeStamp;\n\n this._removeMouseDownListeners();\n\n if (this.selectionText.length <= 1 && timeElapsed < ALT_CLICK_MOVE_CURSOR_TIME && event.altKey && this._optionsService.getOption('altClickMovesCursor')) {\n if (this._bufferService.buffer.ybase === this._bufferService.buffer.ydisp) {\n const coordinates = this._mouseService.getCoords(\n event,\n this._element,\n this._bufferService.cols,\n this._bufferService.rows,\n false\n );\n if (coordinates && coordinates[0] !== undefined && coordinates[1] !== undefined) {\n const sequence = moveToCellSequence(coordinates[0] - 1, coordinates[1] - 1, this._bufferService, this._coreService.decPrivateModes.applicationCursorKeys);\n this._coreService.triggerDataEvent(sequence, true);\n }\n }\n } else {\n this._fireEventIfSelectionChanged();\n }\n }\n\n private _fireEventIfSelectionChanged(): void {\n const start = this._model.finalSelectionStart;\n const end = this._model.finalSelectionEnd;\n const hasSelection = !!start && !!end && (start[0] !== end[0] || start[1] !== end[1]);\n\n if (!hasSelection) {\n if (this._oldHasSelection) {\n this._fireOnSelectionChange(start, end, hasSelection);\n }\n return;\n }\n\n // Sanity check, these should not be undefined as there is a selection\n if (!start || !end) {\n return;\n }\n\n if (!this._oldSelectionStart || !this._oldSelectionEnd || (\n start[0] !== this._oldSelectionStart[0] || start[1] !== this._oldSelectionStart[1] ||\n end[0] !== this._oldSelectionEnd[0] || end[1] !== this._oldSelectionEnd[1])) {\n\n this._fireOnSelectionChange(start, end, hasSelection);\n }\n }\n\n private _fireOnSelectionChange(start: [number, number] | undefined, end: [number, number] | undefined, hasSelection: boolean): void {\n this._oldSelectionStart = start;\n this._oldSelectionEnd = end;\n this._oldHasSelection = hasSelection;\n this._onSelectionChange.fire();\n }\n\n private _onBufferActivate(e: {activeBuffer: IBuffer, inactiveBuffer: IBuffer}): void {\n this.clearSelection();\n // Only adjust the selection on trim, shiftElements is rarely used (only in\n // reverseIndex) and delete in a splice is only ever used when the same\n // number of elements was just added. Given this is could actually be\n // beneficial to leave the selection as is for these cases.\n this._trimListener.dispose();\n this._trimListener = e.activeBuffer.lines.onTrim(amount => this._onTrim(amount));\n }\n\n /**\n * Converts a viewport column to the character index on the buffer line, the\n * latter takes into account wide characters.\n * @param coords The coordinates to find the 2 index for.\n */\n private _convertViewportColToCharacterIndex(bufferLine: IBufferLine, coords: [number, number]): number {\n let charIndex = coords[0];\n for (let i = 0; coords[0] >= i; i++) {\n const length = bufferLine.loadCell(i, this._workCell).getChars().length;\n if (this._workCell.getWidth() === 0) {\n // Wide characters aren't included in the line string so decrement the\n // index so the index is back on the wide character.\n charIndex--;\n } else if (length > 1 && coords[0] !== i) {\n // Emojis take up multiple characters, so adjust accordingly. For these\n // we don't want ot include the character at the column as we're\n // returning the start index in the string, not the end index.\n charIndex += length - 1;\n }\n }\n return charIndex;\n }\n\n public setSelection(col: number, row: number, length: number): void {\n this._model.clearSelection();\n this._removeMouseDownListeners();\n this._model.selectionStart = [col, row];\n this._model.selectionStartLength = length;\n this.refresh();\n this._fireEventIfSelectionChanged();\n }\n\n public rightClickSelect(ev: MouseEvent): void {\n if (!this._isClickInSelection(ev)) {\n if (this._selectWordAtCursor(ev, false)) {\n this.refresh(true);\n }\n this._fireEventIfSelectionChanged();\n }\n }\n\n /**\n * Gets positional information for the word at the coordinated specified.\n * @param coords The coordinates to get the word at.\n */\n private _getWordAt(coords: [number, number], allowWhitespaceOnlySelection: boolean, followWrappedLinesAbove: boolean = true, followWrappedLinesBelow: boolean = true): IWordPosition | undefined {\n // Ensure coords are within viewport (eg. not within scroll bar)\n if (coords[0] >= this._bufferService.cols) {\n return undefined;\n }\n\n const buffer = this._bufferService.buffer;\n const bufferLine = buffer.lines.get(coords[1]);\n if (!bufferLine) {\n return undefined;\n }\n\n const line = buffer.translateBufferLineToString(coords[1], false);\n\n // Get actual index, taking into consideration wide characters\n let startIndex = this._convertViewportColToCharacterIndex(bufferLine, coords);\n let endIndex = startIndex;\n\n // Record offset to be used later\n const charOffset = coords[0] - startIndex;\n let leftWideCharCount = 0;\n let rightWideCharCount = 0;\n let leftLongCharOffset = 0;\n let rightLongCharOffset = 0;\n\n if (line.charAt(startIndex) === ' ') {\n // Expand until non-whitespace is hit\n while (startIndex > 0 && line.charAt(startIndex - 1) === ' ') {\n startIndex--;\n }\n while (endIndex < line.length && line.charAt(endIndex + 1) === ' ') {\n endIndex++;\n }\n } else {\n // Expand until whitespace is hit. This algorithm works by scanning left\n // and right from the starting position, keeping both the index format\n // (line) and the column format (bufferLine) in sync. When a wide\n // character is hit, it is recorded and the column index is adjusted.\n let startCol = coords[0];\n let endCol = coords[0];\n\n // Consider the initial position, skip it and increment the wide char\n // variable\n if (bufferLine.getWidth(startCol) === 0) {\n leftWideCharCount++;\n startCol--;\n }\n if (bufferLine.getWidth(endCol) === 2) {\n rightWideCharCount++;\n endCol++;\n }\n\n // Adjust the end index for characters whose length are > 1 (emojis)\n const length = bufferLine.getString(endCol).length;\n if (length > 1) {\n rightLongCharOffset += length - 1;\n endIndex += length - 1;\n }\n\n // Expand the string in both directions until a space is hit\n while (startCol > 0 && startIndex > 0 && !this._isCharWordSeparator(bufferLine.loadCell(startCol - 1, this._workCell))) {\n bufferLine.loadCell(startCol - 1, this._workCell);\n const length = this._workCell.getChars().length;\n if (this._workCell.getWidth() === 0) {\n // If the next character is a wide char, record it and skip the column\n leftWideCharCount++;\n startCol--;\n } else if (length > 1) {\n // If the next character's string is longer than 1 char (eg. emoji),\n // adjust the index\n leftLongCharOffset += length - 1;\n startIndex -= length - 1;\n }\n startIndex--;\n startCol--;\n }\n while (endCol < bufferLine.length && endIndex + 1 < line.length && !this._isCharWordSeparator(bufferLine.loadCell(endCol + 1, this._workCell))) {\n bufferLine.loadCell(endCol + 1, this._workCell);\n const length = this._workCell.getChars().length;\n if (this._workCell.getWidth() === 2) {\n // If the next character is a wide char, record it and skip the column\n rightWideCharCount++;\n endCol++;\n } else if (length > 1) {\n // If the next character's string is longer than 1 char (eg. emoji),\n // adjust the index\n rightLongCharOffset += length - 1;\n endIndex += length - 1;\n }\n endIndex++;\n endCol++;\n }\n }\n\n // Incremenet the end index so it is at the start of the next character\n endIndex++;\n\n // Calculate the start _column_, converting the the string indexes back to\n // column coordinates.\n let start =\n startIndex // The index of the selection's start char in the line string\n + charOffset // The difference between the initial char's column and index\n - leftWideCharCount // The number of wide chars left of the initial char\n + leftLongCharOffset; // The number of additional chars left of the initial char added by columns with strings longer than 1 (emojis)\n\n // Calculate the length in _columns_, converting the the string indexes back\n // to column coordinates.\n let length = Math.min(this._bufferService.cols, // Disallow lengths larger than the terminal cols\n endIndex // The index of the selection's end char in the line string\n - startIndex // The index of the selection's start char in the line string\n + leftWideCharCount // The number of wide chars left of the initial char\n + rightWideCharCount // The number of wide chars right of the initial char (inclusive)\n - leftLongCharOffset // The number of additional chars left of the initial char added by columns with strings longer than 1 (emojis)\n - rightLongCharOffset); // The number of additional chars right of the initial char (inclusive) added by columns with strings longer than 1 (emojis)\n\n if (!allowWhitespaceOnlySelection && line.slice(startIndex, endIndex).trim() === '') {\n return undefined;\n }\n\n // Recurse upwards if the line is wrapped and the word wraps to the above line\n if (followWrappedLinesAbove) {\n if (start === 0 && bufferLine.getCodePoint(0) !== 32 /* ' ' */) {\n const previousBufferLine = buffer.lines.get(coords[1] - 1);\n if (previousBufferLine && bufferLine.isWrapped && previousBufferLine.getCodePoint(this._bufferService.cols - 1) !== 32 /* ' ' */) {\n const previousLineWordPosition = this._getWordAt([this._bufferService.cols - 1, coords[1] - 1], false, true, false);\n if (previousLineWordPosition) {\n const offset = this._bufferService.cols - previousLineWordPosition.start;\n start -= offset;\n length += offset;\n }\n }\n }\n }\n\n // Recurse downwards if the line is wrapped and the word wraps to the next line\n if (followWrappedLinesBelow) {\n if (start + length === this._bufferService.cols && bufferLine.getCodePoint(this._bufferService.cols - 1) !== 32 /* ' ' */) {\n const nextBufferLine = buffer.lines.get(coords[1] + 1);\n if (nextBufferLine?.isWrapped && nextBufferLine.getCodePoint(0) !== 32 /* ' ' */) {\n const nextLineWordPosition = this._getWordAt([0, coords[1] + 1], false, false, true);\n if (nextLineWordPosition) {\n length += nextLineWordPosition.length;\n }\n }\n }\n }\n\n return { start, length };\n }\n\n /**\n * Selects the word at the coordinates specified.\n * @param coords The coordinates to get the word at.\n * @param allowWhitespaceOnlySelection If whitespace should be selected\n */\n protected _selectWordAt(coords: [number, number], allowWhitespaceOnlySelection: boolean): void {\n const wordPosition = this._getWordAt(coords, allowWhitespaceOnlySelection);\n if (wordPosition) {\n // Adjust negative start value\n while (wordPosition.start < 0) {\n wordPosition.start += this._bufferService.cols;\n coords[1]--;\n }\n this._model.selectionStart = [wordPosition.start, coords[1]];\n this._model.selectionStartLength = wordPosition.length;\n }\n }\n\n /**\n * Sets the selection end to the word at the coordinated specified.\n * @param coords The coordinates to get the word at.\n */\n private _selectToWordAt(coords: [number, number]): void {\n const wordPosition = this._getWordAt(coords, true);\n if (wordPosition) {\n let endRow = coords[1];\n\n // Adjust negative start value\n while (wordPosition.start < 0) {\n wordPosition.start += this._bufferService.cols;\n endRow--;\n }\n\n // Adjust wrapped length value, this only needs to happen when values are reversed as in that\n // case we're interested in the start of the word, not the end\n if (!this._model.areSelectionValuesReversed()) {\n while (wordPosition.start + wordPosition.length > this._bufferService.cols) {\n wordPosition.length -= this._bufferService.cols;\n endRow++;\n }\n }\n\n this._model.selectionEnd = [this._model.areSelectionValuesReversed() ? wordPosition.start : wordPosition.start + wordPosition.length, endRow];\n }\n }\n\n /**\n * Gets whether the character is considered a word separator by the select\n * word logic.\n * @param char The character to check.\n */\n private _isCharWordSeparator(cell: CellData): boolean {\n // Zero width characters are never separators as they are always to the\n // right of wide characters\n if (cell.getWidth() === 0) {\n return false;\n }\n return this._optionsService.rawOptions.wordSeparator.indexOf(cell.getChars()) >= 0;\n }\n\n /**\n * Selects the line specified.\n * @param line The line index.\n */\n protected _selectLineAt(line: number): void {\n const wrappedRange = this._bufferService.buffer.getWrappedRangeForLine(line);\n const range: IBufferRange = {\n start: { x: 0, y: wrappedRange.first },\n end: { x: this._bufferService.cols - 1, y: wrappedRange.last }\n };\n this._model.selectionStart = [0, wrappedRange.first];\n this._model.selectionEnd = undefined;\n this._model.selectionStartLength = getRangeLength(range, this._bufferService.cols);\n }\n}\n", "/**\n * Copyright (c) 2019 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IEvent } from 'common/EventEmitter';\nimport { IRenderDimensions, IRenderer } from 'browser/renderer/Types';\nimport { IColorSet, IRenderDebouncer } from 'browser/Types';\nimport { ISelectionRedrawRequestEvent as ISelectionRequestRedrawEvent, ISelectionRequestScrollLinesEvent } from 'browser/selection/Types';\nimport { createDecorator } from 'common/services/ServiceRegistry';\nimport { IDisposable } from 'common/Types';\nimport { IDecorationOptions, IDecoration } from 'xterm';\nimport { IBufferService } from 'common/services/Services';\n\nexport const ICharSizeService = createDecorator('CharSizeService');\nexport interface ICharSizeService {\n serviceBrand: undefined;\n\n readonly width: number;\n readonly height: number;\n readonly hasValidSize: boolean;\n\n readonly onCharSizeChange: IEvent;\n\n measure(): void;\n}\n\nexport const ICoreBrowserService = createDecorator('CoreBrowserService');\nexport interface ICoreBrowserService {\n serviceBrand: undefined;\n\n readonly isFocused: boolean;\n}\n\nexport const IMouseService = createDecorator('MouseService');\nexport interface IMouseService {\n serviceBrand: undefined;\n\n getCoords(event: {clientX: number, clientY: number}, element: HTMLElement, colCount: number, rowCount: number, isSelection?: boolean): [number, number] | undefined;\n getRawByteCoords(event: MouseEvent, element: HTMLElement, colCount: number, rowCount: number): { x: number, y: number } | undefined;\n}\n\nexport const IRenderService = createDecorator('RenderService');\nexport interface IRenderService extends IDisposable {\n serviceBrand: undefined;\n\n onDimensionsChange: IEvent;\n /**\n * Fires when buffer changes are rendered. This does not fire when only cursor\n * or selections are rendered.\n */\n onRenderedViewportChange: IEvent<{ start: number, end: number }>;\n /**\n * Fires on render\n */\n onRender: IEvent<{ start: number, end: number }>;\n onRefreshRequest: IEvent<{ start: number, end: number }>;\n\n dimensions: IRenderDimensions;\n\n addRefreshCallback(callback: FrameRequestCallback): number;\n\n refreshRows(start: number, end: number): void;\n clearTextureAtlas(): void;\n resize(cols: number, rows: number): void;\n setRenderer(renderer: IRenderer): void;\n setColors(colors: IColorSet): void;\n onDevicePixelRatioChange(): void;\n onResize(cols: number, rows: number): void;\n // TODO: Is this useful when we have onResize?\n onCharSizeChanged(): void;\n onBlur(): void;\n onFocus(): void;\n onSelectionChanged(start: [number, number] | undefined, end: [number, number] | undefined, columnSelectMode: boolean): void;\n onCursorMove(): void;\n clear(): void;\n}\n\nexport const ISelectionService = createDecorator('SelectionService');\nexport interface ISelectionService {\n serviceBrand: undefined;\n\n readonly selectionText: string;\n readonly hasSelection: boolean;\n readonly selectionStart: [number, number] | undefined;\n readonly selectionEnd: [number, number] | undefined;\n\n readonly onLinuxMouseSelection: IEvent;\n readonly onRequestRedraw: IEvent;\n readonly onRequestScrollLines: IEvent;\n readonly onSelectionChange: IEvent;\n\n disable(): void;\n enable(): void;\n reset(): void;\n setSelection(row: number, col: number, length: number): void;\n selectAll(): void;\n selectLines(start: number, end: number): void;\n clearSelection(): void;\n rightClickSelect(event: MouseEvent): void;\n shouldColumnSelect(event: KeyboardEvent | MouseEvent): boolean;\n shouldForceSelection(event: MouseEvent): boolean;\n refresh(isLinuxMouseSelection?: boolean): void;\n onMouseDown(event: MouseEvent): void;\n isCellInSelection(x: number, y: number): boolean;\n}\n\nexport const ISoundService = createDecorator('SoundService');\nexport interface ISoundService {\n serviceBrand: undefined;\n\n playBellSound(): void;\n}\n\n\nexport const ICharacterJoinerService = createDecorator('CharacterJoinerService');\nexport interface ICharacterJoinerService {\n serviceBrand: undefined;\n\n register(handler: (text: string) => [number, number][]): number;\n deregister(joinerId: number): boolean;\n getJoinedCharacters(row: number): [number, number][];\n}\n", "/**\n * Copyright (c) 2018 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IOptionsService } from 'common/services/Services';\nimport { ISoundService } from 'browser/services/Services';\n\nexport class SoundService implements ISoundService {\n public serviceBrand: undefined;\n\n private static _audioContext: AudioContext;\n\n public static get audioContext(): AudioContext | null {\n if (!SoundService._audioContext) {\n const audioContextCtor: typeof AudioContext = (window as any).AudioContext || (window as any).webkitAudioContext;\n if (!audioContextCtor) {\n console.warn('Web Audio API is not supported by this browser. Consider upgrading to the latest version');\n return null;\n }\n SoundService._audioContext = new audioContextCtor();\n }\n return SoundService._audioContext;\n }\n\n constructor(\n @IOptionsService private _optionsService: IOptionsService\n ) {\n }\n\n public playBellSound(): void {\n const ctx = SoundService.audioContext;\n if (!ctx) {\n return;\n }\n const bellAudioSource = ctx.createBufferSource();\n ctx.decodeAudioData(this._base64ToArrayBuffer(this._removeMimeType(this._optionsService.rawOptions.bellSound)), (buffer) => {\n bellAudioSource.buffer = buffer;\n bellAudioSource.connect(ctx.destination);\n bellAudioSource.start(0);\n });\n }\n\n private _base64ToArrayBuffer(base64: string): ArrayBuffer {\n const binaryString = window.atob(base64);\n const len = binaryString.length;\n const bytes = new Uint8Array(len);\n\n for (let i = 0; i < len; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n\n return bytes.buffer;\n }\n\n private _removeMimeType(dataURI: string): string {\n // Split the input to get the mime-type and the data itself\n const splitUri = dataURI.split(',');\n\n // Return only the data\n return splitUri[1];\n }\n}\n", "/**\n * Copyright (c) 2016 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { ICircularList } from 'common/Types';\nimport { EventEmitter, IEvent } from 'common/EventEmitter';\n\nexport interface IInsertEvent {\n index: number;\n amount: number;\n}\n\nexport interface IDeleteEvent {\n index: number;\n amount: number;\n}\n\n/**\n * Represents a circular list; a list with a maximum size that wraps around when push is called,\n * overriding values at the start of the list.\n */\nexport class CircularList implements ICircularList {\n protected _array: (T | undefined)[];\n private _startIndex: number;\n private _length: number;\n\n public onDeleteEmitter = new EventEmitter();\n public get onDelete(): IEvent { return this.onDeleteEmitter.event; }\n public onInsertEmitter = new EventEmitter();\n public get onInsert(): IEvent { return this.onInsertEmitter.event; }\n public onTrimEmitter = new EventEmitter();\n public get onTrim(): IEvent { return this.onTrimEmitter.event; }\n\n constructor(\n private _maxLength: number\n ) {\n this._array = new Array(this._maxLength);\n this._startIndex = 0;\n this._length = 0;\n }\n\n public get maxLength(): number {\n return this._maxLength;\n }\n\n public set maxLength(newMaxLength: number) {\n // There was no change in maxLength, return early.\n if (this._maxLength === newMaxLength) {\n return;\n }\n\n // Reconstruct array, starting at index 0. Only transfer values from the\n // indexes 0 to length.\n const newArray = new Array(newMaxLength);\n for (let i = 0; i < Math.min(newMaxLength, this.length); i++) {\n newArray[i] = this._array[this._getCyclicIndex(i)];\n }\n this._array = newArray;\n this._maxLength = newMaxLength;\n this._startIndex = 0;\n }\n\n public get length(): number {\n return this._length;\n }\n\n public set length(newLength: number) {\n if (newLength > this._length) {\n for (let i = this._length; i < newLength; i++) {\n this._array[i] = undefined;\n }\n }\n this._length = newLength;\n }\n\n /**\n * Gets the value at an index.\n *\n * Note that for performance reasons there is no bounds checking here, the index reference is\n * circular so this should always return a value and never throw.\n * @param index The index of the value to get.\n * @return The value corresponding to the index.\n */\n public get(index: number): T | undefined {\n return this._array[this._getCyclicIndex(index)];\n }\n\n /**\n * Sets the value at an index.\n *\n * Note that for performance reasons there is no bounds checking here, the index reference is\n * circular so this should always return a value and never throw.\n * @param index The index to set.\n * @param value The value to set.\n */\n public set(index: number, value: T | undefined): void {\n this._array[this._getCyclicIndex(index)] = value;\n }\n\n /**\n * Pushes a new value onto the list, wrapping around to the start of the array, overriding index 0\n * if the maximum length is reached.\n * @param value The value to push onto the list.\n */\n public push(value: T): void {\n this._array[this._getCyclicIndex(this._length)] = value;\n if (this._length === this._maxLength) {\n this._startIndex = ++this._startIndex % this._maxLength;\n this.onTrimEmitter.fire(1);\n } else {\n this._length++;\n }\n }\n\n /**\n * Advance ringbuffer index and return current element for recycling.\n * Note: The buffer must be full for this method to work.\n * @throws When the buffer is not full.\n */\n public recycle(): T {\n if (this._length !== this._maxLength) {\n throw new Error('Can only recycle when the buffer is full');\n }\n this._startIndex = ++this._startIndex % this._maxLength;\n this.onTrimEmitter.fire(1);\n return this._array[this._getCyclicIndex(this._length - 1)]!;\n }\n\n /**\n * Ringbuffer is at max length.\n */\n public get isFull(): boolean {\n return this._length === this._maxLength;\n }\n\n /**\n * Removes and returns the last value on the list.\n * @return The popped value.\n */\n public pop(): T | undefined {\n return this._array[this._getCyclicIndex(this._length-- - 1)];\n }\n\n /**\n * Deletes and/or inserts items at a particular index (in that order). Unlike\n * Array.prototype.splice, this operation does not return the deleted items as a new array in\n * order to save creating a new array. Note that this operation may shift all values in the list\n * in the worst case.\n * @param start The index to delete and/or insert.\n * @param deleteCount The number of elements to delete.\n * @param items The items to insert.\n */\n public splice(start: number, deleteCount: number, ...items: T[]): void {\n // Delete items\n if (deleteCount) {\n for (let i = start; i < this._length - deleteCount; i++) {\n this._array[this._getCyclicIndex(i)] = this._array[this._getCyclicIndex(i + deleteCount)];\n }\n this._length -= deleteCount;\n this.onDeleteEmitter.fire({ index: start, amount: deleteCount });\n }\n\n // Add items\n for (let i = this._length - 1; i >= start; i--) {\n this._array[this._getCyclicIndex(i + items.length)] = this._array[this._getCyclicIndex(i)];\n }\n for (let i = 0; i < items.length; i++) {\n this._array[this._getCyclicIndex(start + i)] = items[i];\n }\n if (items.length) {\n this.onInsertEmitter.fire({ index: start, amount: items.length });\n }\n\n // Adjust length as needed\n if (this._length + items.length > this._maxLength) {\n const countToTrim = (this._length + items.length) - this._maxLength;\n this._startIndex += countToTrim;\n this._length = this._maxLength;\n this.onTrimEmitter.fire(countToTrim);\n } else {\n this._length += items.length;\n }\n }\n\n /**\n * Trims a number of items from the start of the list.\n * @param count The number of items to remove.\n */\n public trimStart(count: number): void {\n if (count > this._length) {\n count = this._length;\n }\n this._startIndex += count;\n this._length -= count;\n this.onTrimEmitter.fire(count);\n }\n\n public shiftElements(start: number, count: number, offset: number): void {\n if (count <= 0) {\n return;\n }\n if (start < 0 || start >= this._length) {\n throw new Error('start argument out of range');\n }\n if (start + offset < 0) {\n throw new Error('Cannot shift elements in list beyond index 0');\n }\n\n if (offset > 0) {\n for (let i = count - 1; i >= 0; i--) {\n this.set(start + i + offset, this.get(start + i));\n }\n const expandListBy = (start + count + offset) - this._length;\n if (expandListBy > 0) {\n this._length += expandListBy;\n while (this._length > this._maxLength) {\n this._length--;\n this._startIndex++;\n this.onTrimEmitter.fire(1);\n }\n }\n } else {\n for (let i = 0; i < count; i++) {\n this.set(start + i + offset, this.get(start + i));\n }\n }\n }\n\n /**\n * Gets the cyclic index for the specified regular index. The cyclic index can then be used on the\n * backing array to get the element associated with the regular index.\n * @param index The regular index.\n * @returns The cyclic index.\n */\n private _getCyclicIndex(index: number): number {\n return (this._startIndex + index) % this._maxLength;\n }\n}\n", "/**\n * Copyright (c) 2016 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\n/*\n * A simple utility for cloning values\n */\nexport function clone(val: T, depth: number = 5): T {\n if (typeof val !== 'object') {\n return val;\n }\n\n // If we're cloning an array, use an array as the base, otherwise use an object\n const clonedObject: any = Array.isArray(val) ? [] : {};\n\n for (const key in val) {\n // Recursively clone eack item unless we're at the maximum depth\n clonedObject[key] = depth <= 1 ? val[key] : (val[key] && clone(val[key], depth - 1));\n }\n\n return clonedObject as T;\n}\n", "/**\n * Copyright (c) 2019 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IColor, IColorRGB } from 'common/Types';\n\n/**\n * Helper functions where the source type is \"channels\" (individual color channels as numbers).\n */\nexport namespace channels {\n export function toCss(r: number, g: number, b: number, a?: number): string {\n if (a !== undefined) {\n return `#${toPaddedHex(r)}${toPaddedHex(g)}${toPaddedHex(b)}${toPaddedHex(a)}`;\n }\n return `#${toPaddedHex(r)}${toPaddedHex(g)}${toPaddedHex(b)}`;\n }\n\n export function toRgba(r: number, g: number, b: number, a: number = 0xFF): number {\n // Note: The aggregated number is RGBA32 (BE), thus needs to be converted to ABGR32\n // on LE systems, before it can be used for direct 32-bit buffer writes.\n // >>> 0 forces an unsigned int\n return (r << 24 | g << 16 | b << 8 | a) >>> 0;\n }\n}\n\n/**\n * Helper functions where the source type is `IColor`.\n */\nexport namespace color {\n export function blend(bg: IColor, fg: IColor): IColor {\n const a = (fg.rgba & 0xFF) / 255;\n if (a === 1) {\n return {\n css: fg.css,\n rgba: fg.rgba\n };\n }\n const fgR = (fg.rgba >> 24) & 0xFF;\n const fgG = (fg.rgba >> 16) & 0xFF;\n const fgB = (fg.rgba >> 8) & 0xFF;\n const bgR = (bg.rgba >> 24) & 0xFF;\n const bgG = (bg.rgba >> 16) & 0xFF;\n const bgB = (bg.rgba >> 8) & 0xFF;\n const r = bgR + Math.round((fgR - bgR) * a);\n const g = bgG + Math.round((fgG - bgG) * a);\n const b = bgB + Math.round((fgB - bgB) * a);\n const css = channels.toCss(r, g, b);\n const rgba = channels.toRgba(r, g, b);\n return { css, rgba };\n }\n\n export function isOpaque(color: IColor): boolean {\n return (color.rgba & 0xFF) === 0xFF;\n }\n\n export function ensureContrastRatio(bg: IColor, fg: IColor, ratio: number): IColor | undefined {\n const result = rgba.ensureContrastRatio(bg.rgba, fg.rgba, ratio);\n if (!result) {\n return undefined;\n }\n return rgba.toColor(\n (result >> 24 & 0xFF),\n (result >> 16 & 0xFF),\n (result >> 8 & 0xFF)\n );\n }\n\n export function opaque(color: IColor): IColor {\n const rgbaColor = (color.rgba | 0xFF) >>> 0;\n const [r, g, b] = rgba.toChannels(rgbaColor);\n return {\n css: channels.toCss(r, g, b),\n rgba: rgbaColor\n };\n }\n\n export function opacity(color: IColor, opacity: number): IColor {\n const a = Math.round(opacity * 0xFF);\n const [r, g, b] = rgba.toChannels(color.rgba);\n return {\n css: channels.toCss(r, g, b, a),\n rgba: channels.toRgba(r, g, b, a)\n };\n }\n\n export function toColorRGB(color: IColor): IColorRGB {\n return [(color.rgba >> 24) & 0xFF, (color.rgba >> 16) & 0xFF, (color.rgba >> 8) & 0xFF];\n }\n}\n\n/**\n * Helper functions where the source type is \"css\" (string: '#rgb', '#rgba', '#rrggbb', '#rrggbbaa').\n */\nexport namespace css {\n export function toColor(css: string): IColor {\n if (css.match(/#[0-9a-f]{3,8}/i)) {\n switch (css.length) {\n case 4: { // #rgb\n const r = parseInt(css.slice(1, 2).repeat(2), 16);\n const g = parseInt(css.slice(2, 3).repeat(2), 16);\n const b = parseInt(css.slice(3, 4).repeat(2), 16);\n return rgba.toColor(r, g, b);\n }\n case 5: { // #rgba\n const r = parseInt(css.slice(1, 2).repeat(2), 16);\n const g = parseInt(css.slice(2, 3).repeat(2), 16);\n const b = parseInt(css.slice(3, 4).repeat(2), 16);\n const a = parseInt(css.slice(4, 5).repeat(2), 16);\n return rgba.toColor(r, g, b, a);\n }\n case 7: // #rrggbb\n return {\n css,\n rgba: (parseInt(css.slice(1), 16) << 8 | 0xFF) >>> 0\n };\n case 9: // #rrggbbaa\n return {\n css,\n rgba: parseInt(css.slice(1), 16) >>> 0\n };\n }\n }\n const rgbaMatch = css.match(/rgba?\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*(,\\s*(0|1|\\d?\\.(\\d+))\\s*)?\\)/);\n if (rgbaMatch) { // rgb() or rgba()\n const r = parseInt(rgbaMatch[1]);\n const g = parseInt(rgbaMatch[2]);\n const b = parseInt(rgbaMatch[3]);\n const a = Math.round((rgbaMatch[5] === undefined ? 1 : parseFloat(rgbaMatch[5])) * 0xFF);\n return rgba.toColor(r, g, b, a);\n }\n throw new Error('css.toColor: Unsupported css format');\n }\n}\n\n/**\n * Helper functions where the source type is \"rgb\" (number: 0xrrggbb).\n */\nexport namespace rgb {\n /**\n * Gets the relative luminance of an RGB color, this is useful in determining the contrast ratio\n * between two colors.\n * @param rgb The color to use.\n * @see https://www.w3.org/TR/WCAG20/#relativeluminancedef\n */\n export function relativeLuminance(rgb: number): number {\n return relativeLuminance2(\n (rgb >> 16) & 0xFF,\n (rgb >> 8 ) & 0xFF,\n (rgb ) & 0xFF);\n }\n\n /**\n * Gets the relative luminance of an RGB color, this is useful in determining the contrast ratio\n * between two colors.\n * @param r The red channel (0x00 to 0xFF).\n * @param g The green channel (0x00 to 0xFF).\n * @param b The blue channel (0x00 to 0xFF).\n * @see https://www.w3.org/TR/WCAG20/#relativeluminancedef\n */\n export function relativeLuminance2(r: number, g: number, b: number): number {\n const rs = r / 255;\n const gs = g / 255;\n const bs = b / 255;\n const rr = rs <= 0.03928 ? rs / 12.92 : Math.pow((rs + 0.055) / 1.055, 2.4);\n const rg = gs <= 0.03928 ? gs / 12.92 : Math.pow((gs + 0.055) / 1.055, 2.4);\n const rb = bs <= 0.03928 ? bs / 12.92 : Math.pow((bs + 0.055) / 1.055, 2.4);\n return rr * 0.2126 + rg * 0.7152 + rb * 0.0722;\n }\n}\n\n/**\n * Helper functions where the source type is \"rgba\" (number: 0xrrggbbaa).\n */\nexport namespace rgba {\n /**\n * Given a foreground color and a background color, either increase or reduce the luminance of the\n * foreground color until the specified contrast ratio is met. If pure white or black is hit\n * without the contrast ratio being met, go the other direction using the background color as the\n * foreground color and take either the first or second result depending on which has the higher\n * contrast ratio.\n *\n * `undefined` will be returned if the contrast ratio is already met.\n *\n * @param bgRgba The background color in rgba format.\n * @param fgRgba The foreground color in rgba format.\n * @param ratio The contrast ratio to achieve.\n */\n export function ensureContrastRatio(bgRgba: number, fgRgba: number, ratio: number): number | undefined {\n const bgL = rgb.relativeLuminance(bgRgba >> 8);\n const fgL = rgb.relativeLuminance(fgRgba >> 8);\n const cr = contrastRatio(bgL, fgL);\n if (cr < ratio) {\n if (fgL < bgL) {\n const resultA = reduceLuminance(bgRgba, fgRgba, ratio);\n const resultARatio = contrastRatio(bgL, rgb.relativeLuminance(resultA >> 8));\n if (resultARatio < ratio) {\n const resultB = increaseLuminance(bgRgba, bgRgba, ratio);\n const resultBRatio = contrastRatio(bgL, rgb.relativeLuminance(resultB >> 8));\n return resultARatio > resultBRatio ? resultA : resultB;\n }\n return resultA;\n }\n const resultA = increaseLuminance(bgRgba, fgRgba, ratio);\n const resultARatio = contrastRatio(bgL, rgb.relativeLuminance(resultA >> 8));\n if (resultARatio < ratio) {\n const resultB = reduceLuminance(bgRgba, bgRgba, ratio);\n const resultBRatio = contrastRatio(bgL, rgb.relativeLuminance(resultB >> 8));\n return resultARatio > resultBRatio ? resultA : resultB;\n }\n return resultA;\n }\n return undefined;\n }\n\n export function reduceLuminance(bgRgba: number, fgRgba: number, ratio: number): number {\n // This is a naive but fast approach to reducing luminance as converting to\n // HSL and back is expensive\n const bgR = (bgRgba >> 24) & 0xFF;\n const bgG = (bgRgba >> 16) & 0xFF;\n const bgB = (bgRgba >> 8) & 0xFF;\n let fgR = (fgRgba >> 24) & 0xFF;\n let fgG = (fgRgba >> 16) & 0xFF;\n let fgB = (fgRgba >> 8) & 0xFF;\n let cr = contrastRatio(rgb.relativeLuminance2(fgR, fgG, fgB), rgb.relativeLuminance2(bgR, bgG, bgB));\n while (cr < ratio && (fgR > 0 || fgG > 0 || fgB > 0)) {\n // Reduce by 10% until the ratio is hit\n fgR -= Math.max(0, Math.ceil(fgR * 0.1));\n fgG -= Math.max(0, Math.ceil(fgG * 0.1));\n fgB -= Math.max(0, Math.ceil(fgB * 0.1));\n cr = contrastRatio(rgb.relativeLuminance2(fgR, fgG, fgB), rgb.relativeLuminance2(bgR, bgG, bgB));\n }\n return (fgR << 24 | fgG << 16 | fgB << 8 | 0xFF) >>> 0;\n }\n\n export function increaseLuminance(bgRgba: number, fgRgba: number, ratio: number): number {\n // This is a naive but fast approach to increasing luminance as converting to\n // HSL and back is expensive\n const bgR = (bgRgba >> 24) & 0xFF;\n const bgG = (bgRgba >> 16) & 0xFF;\n const bgB = (bgRgba >> 8) & 0xFF;\n let fgR = (fgRgba >> 24) & 0xFF;\n let fgG = (fgRgba >> 16) & 0xFF;\n let fgB = (fgRgba >> 8) & 0xFF;\n let cr = contrastRatio(rgb.relativeLuminance2(fgR, fgG, fgB), rgb.relativeLuminance2(bgR, bgG, bgB));\n while (cr < ratio && (fgR < 0xFF || fgG < 0xFF || fgB < 0xFF)) {\n // Increase by 10% until the ratio is hit\n fgR = Math.min(0xFF, fgR + Math.ceil((255 - fgR) * 0.1));\n fgG = Math.min(0xFF, fgG + Math.ceil((255 - fgG) * 0.1));\n fgB = Math.min(0xFF, fgB + Math.ceil((255 - fgB) * 0.1));\n cr = contrastRatio(rgb.relativeLuminance2(fgR, fgG, fgB), rgb.relativeLuminance2(bgR, bgG, bgB));\n }\n return (fgR << 24 | fgG << 16 | fgB << 8 | 0xFF) >>> 0;\n }\n\n // FIXME: Move this to channels NS?\n export function toChannels(value: number): [number, number, number, number] {\n return [(value >> 24) & 0xFF, (value >> 16) & 0xFF, (value >> 8) & 0xFF, value & 0xFF];\n }\n\n export function toColor(r: number, g: number, b: number, a?: number): IColor {\n return {\n css: channels.toCss(r, g, b, a),\n rgba: channels.toRgba(r, g, b, a)\n };\n }\n}\n\nexport function toPaddedHex(c: number): string {\n const s = c.toString(16);\n return s.length < 2 ? '0' + s : s;\n}\n\n/**\n * Gets the contrast ratio between two relative luminance values.\n * @param l1 The first relative luminance.\n * @param l2 The first relative luminance.\n * @see https://www.w3.org/TR/WCAG20/#contrast-ratiodef\n */\nexport function contrastRatio(l1: number, l2: number): number {\n if (l1 < l2) {\n return (l2 + 0.05) / (l1 + 0.05);\n }\n return (l1 + 0.05) / (l2 + 0.05);\n}\n", "/**\n * Copyright (c) 2014-2020 The xterm.js authors. All rights reserved.\n * Copyright (c) 2012-2013, Christopher Jeffrey (MIT License)\n * @license MIT\n *\n * Originally forked from (with the author's permission):\n * Fabrice Bellard's javascript vt100 for jslinux:\n * http://bellard.org/jslinux/\n * Copyright (c) 2011 Fabrice Bellard\n * The original design remains. The terminal itself\n * has been extended to include xterm CSI codes, among\n * other features.\n *\n * Terminal Emulation References:\n * http://vt100.net/\n * http://invisible-island.net/xterm/ctlseqs/ctlseqs.txt\n * http://invisible-island.net/xterm/ctlseqs/ctlseqs.html\n * http://invisible-island.net/vttest/\n * http://www.inwap.com/pdp10/ansicode.txt\n * http://linux.die.net/man/4/console_codes\n * http://linux.die.net/man/7/urxvt\n */\n\nimport { Disposable } from 'common/Lifecycle';\nimport { IInstantiationService, IOptionsService, IBufferService, ILogService, ICharsetService, ICoreService, ICoreMouseService, IUnicodeService, IDirtyRowService, LogLevelEnum, ITerminalOptions } from 'common/services/Services';\nimport { InstantiationService } from 'common/services/InstantiationService';\nimport { LogService } from 'common/services/LogService';\nimport { BufferService, MINIMUM_COLS, MINIMUM_ROWS } from 'common/services/BufferService';\nimport { OptionsService } from 'common/services/OptionsService';\nimport { IDisposable, IBufferLine, IAttributeData, ICoreTerminal, IKeyboardEvent, IScrollEvent, ScrollSource, ITerminalOptions as IPublicTerminalOptions } from 'common/Types';\nimport { CoreService } from 'common/services/CoreService';\nimport { EventEmitter, IEvent, forwardEvent } from 'common/EventEmitter';\nimport { CoreMouseService } from 'common/services/CoreMouseService';\nimport { DirtyRowService } from 'common/services/DirtyRowService';\nimport { UnicodeService } from 'common/services/UnicodeService';\nimport { CharsetService } from 'common/services/CharsetService';\nimport { updateWindowsModeWrappedState } from 'common/WindowsMode';\nimport { IFunctionIdentifier, IParams } from 'common/parser/Types';\nimport { IBufferSet } from 'common/buffer/Types';\nimport { InputHandler } from 'common/InputHandler';\nimport { WriteBuffer } from 'common/input/WriteBuffer';\n\n// Only trigger this warning a single time per session\nlet hasWriteSyncWarnHappened = false;\n\nexport abstract class CoreTerminal extends Disposable implements ICoreTerminal {\n protected readonly _instantiationService: IInstantiationService;\n protected readonly _bufferService: IBufferService;\n protected readonly _logService: ILogService;\n protected readonly _charsetService: ICharsetService;\n protected readonly _dirtyRowService: IDirtyRowService;\n\n public readonly coreMouseService: ICoreMouseService;\n public readonly coreService: ICoreService;\n public readonly unicodeService: IUnicodeService;\n public readonly optionsService: IOptionsService;\n\n protected _inputHandler: InputHandler;\n private _writeBuffer: WriteBuffer;\n private _windowsMode: IDisposable | undefined;\n\n private _onBinary = new EventEmitter();\n public get onBinary(): IEvent { return this._onBinary.event; }\n private _onData = new EventEmitter();\n public get onData(): IEvent { return this._onData.event; }\n protected _onLineFeed = new EventEmitter();\n public get onLineFeed(): IEvent { return this._onLineFeed.event; }\n private _onResize = new EventEmitter<{ cols: number, rows: number }>();\n public get onResize(): IEvent<{ cols: number, rows: number }> { return this._onResize.event; }\n protected _onScroll = new EventEmitter();\n public get onWriteParsed(): IEvent { return this._onWriteParsed.event; }\n protected _onWriteParsed = new EventEmitter();\n /**\n * Internally we track the source of the scroll but this is meaningless outside the library so\n * it's filtered out.\n */\n protected _onScrollApi?: EventEmitter;\n public get onScroll(): IEvent {\n if (!this._onScrollApi) {\n this._onScrollApi = new EventEmitter();\n this.register(this._onScroll.event(ev => {\n this._onScrollApi?.fire(ev.position);\n }));\n }\n return this._onScrollApi.event;\n }\n\n public get cols(): number { return this._bufferService.cols; }\n public get rows(): number { return this._bufferService.rows; }\n public get buffers(): IBufferSet { return this._bufferService.buffers; }\n public get options(): ITerminalOptions { return this.optionsService.options; }\n public set options(options: ITerminalOptions) {\n for (const key in options) {\n this.optionsService.options[key] = options[key];\n }\n }\n\n constructor(\n options: Partial\n ) {\n super();\n\n // Setup and initialize services\n this._instantiationService = new InstantiationService();\n this.optionsService = new OptionsService(options);\n this._instantiationService.setService(IOptionsService, this.optionsService);\n this._bufferService = this.register(this._instantiationService.createInstance(BufferService));\n this._instantiationService.setService(IBufferService, this._bufferService);\n this._logService = this._instantiationService.createInstance(LogService);\n this._instantiationService.setService(ILogService, this._logService);\n this.coreService = this.register(this._instantiationService.createInstance(CoreService, () => this.scrollToBottom()));\n this._instantiationService.setService(ICoreService, this.coreService);\n this.coreMouseService = this._instantiationService.createInstance(CoreMouseService);\n this._instantiationService.setService(ICoreMouseService, this.coreMouseService);\n this._dirtyRowService = this._instantiationService.createInstance(DirtyRowService);\n this._instantiationService.setService(IDirtyRowService, this._dirtyRowService);\n this.unicodeService = this._instantiationService.createInstance(UnicodeService);\n this._instantiationService.setService(IUnicodeService, this.unicodeService);\n this._charsetService = this._instantiationService.createInstance(CharsetService);\n this._instantiationService.setService(ICharsetService, this._charsetService);\n\n // Register input handler and handle/forward events\n this._inputHandler = new InputHandler(this._bufferService, this._charsetService, this.coreService, this._dirtyRowService, this._logService, this.optionsService, this.coreMouseService, this.unicodeService);\n this.register(forwardEvent(this._inputHandler.onLineFeed, this._onLineFeed));\n this.register(this._inputHandler);\n\n // Setup listeners\n this.register(forwardEvent(this._bufferService.onResize, this._onResize));\n this.register(forwardEvent(this.coreService.onData, this._onData));\n this.register(forwardEvent(this.coreService.onBinary, this._onBinary));\n this.register(this.optionsService.onOptionChange(key => this._updateOptions(key)));\n this.register(this._bufferService.onScroll(event => {\n this._onScroll.fire({ position: this._bufferService.buffer.ydisp, source: ScrollSource.TERMINAL });\n this._dirtyRowService.markRangeDirty(this._bufferService.buffer.scrollTop, this._bufferService.buffer.scrollBottom);\n }));\n this.register(this._inputHandler.onScroll(event => {\n this._onScroll.fire({ position: this._bufferService.buffer.ydisp, source: ScrollSource.TERMINAL });\n this._dirtyRowService.markRangeDirty(this._bufferService.buffer.scrollTop, this._bufferService.buffer.scrollBottom);\n }));\n\n // Setup WriteBuffer\n this._writeBuffer = new WriteBuffer((data, promiseResult) => this._inputHandler.parse(data, promiseResult));\n this.register(forwardEvent(this._writeBuffer.onWriteParsed, this._onWriteParsed));\n }\n\n public dispose(): void {\n if (this._isDisposed) {\n return;\n }\n super.dispose();\n this._windowsMode?.dispose();\n this._windowsMode = undefined;\n }\n\n public write(data: string | Uint8Array, callback?: () => void): void {\n this._writeBuffer.write(data, callback);\n }\n\n /**\n * Write data to terminal synchonously.\n *\n * This method is unreliable with async parser handlers, thus should not\n * be used anymore. If you need blocking semantics on data input consider\n * `write` with a callback instead.\n *\n * @deprecated Unreliable, will be removed soon.\n */\n public writeSync(data: string | Uint8Array, maxSubsequentCalls?: number): void {\n if (this._logService.logLevel <= LogLevelEnum.WARN && !hasWriteSyncWarnHappened) {\n this._logService.warn('writeSync is unreliable and will be removed soon.');\n hasWriteSyncWarnHappened = true;\n }\n this._writeBuffer.writeSync(data, maxSubsequentCalls);\n }\n\n public resize(x: number, y: number): void {\n if (isNaN(x) || isNaN(y)) {\n return;\n }\n\n x = Math.max(x, MINIMUM_COLS);\n y = Math.max(y, MINIMUM_ROWS);\n\n this._bufferService.resize(x, y);\n }\n\n /**\n * Scroll the terminal down 1 row, creating a blank line.\n * @param isWrapped Whether the new line is wrapped from the previous line.\n */\n public scroll(eraseAttr: IAttributeData, isWrapped: boolean = false): void {\n this._bufferService.scroll(eraseAttr, isWrapped);\n }\n\n /**\n * Scroll the display of the terminal\n * @param disp The number of lines to scroll down (negative scroll up).\n * @param suppressScrollEvent Don't emit the scroll event as scrollLines. This is used\n * to avoid unwanted events being handled by the viewport when the event was triggered from the\n * viewport originally.\n */\n public scrollLines(disp: number, suppressScrollEvent?: boolean, source?: ScrollSource): void {\n this._bufferService.scrollLines(disp, suppressScrollEvent, source);\n }\n\n /**\n * Scroll the display of the terminal by a number of pages.\n * @param pageCount The number of pages to scroll (negative scrolls up).\n */\n public scrollPages(pageCount: number): void {\n this._bufferService.scrollPages(pageCount);\n }\n\n /**\n * Scrolls the display of the terminal to the top.\n */\n public scrollToTop(): void {\n this._bufferService.scrollToTop();\n }\n\n /**\n * Scrolls the display of the terminal to the bottom.\n */\n public scrollToBottom(): void {\n this._bufferService.scrollToBottom();\n }\n\n public scrollToLine(line: number): void {\n this._bufferService.scrollToLine(line);\n }\n\n /** Add handler for ESC escape sequence. See xterm.d.ts for details. */\n public registerEscHandler(id: IFunctionIdentifier, callback: () => boolean | Promise): IDisposable {\n return this._inputHandler.registerEscHandler(id, callback);\n }\n\n /** Add handler for DCS escape sequence. See xterm.d.ts for details. */\n public registerDcsHandler(id: IFunctionIdentifier, callback: (data: string, param: IParams) => boolean | Promise): IDisposable {\n return this._inputHandler.registerDcsHandler(id, callback);\n }\n\n /** Add handler for CSI escape sequence. See xterm.d.ts for details. */\n public registerCsiHandler(id: IFunctionIdentifier, callback: (params: IParams) => boolean | Promise): IDisposable {\n return this._inputHandler.registerCsiHandler(id, callback);\n }\n\n /** Add handler for OSC escape sequence. See xterm.d.ts for details. */\n public registerOscHandler(ident: number, callback: (data: string) => boolean | Promise): IDisposable {\n return this._inputHandler.registerOscHandler(ident, callback);\n }\n\n protected _setup(): void {\n if (this.optionsService.rawOptions.windowsMode) {\n this._enableWindowsMode();\n }\n }\n\n public reset(): void {\n this._inputHandler.reset();\n this._bufferService.reset();\n this._charsetService.reset();\n this.coreService.reset();\n this.coreMouseService.reset();\n }\n\n protected _updateOptions(key: string): void {\n // TODO: These listeners should be owned by individual components\n switch (key) {\n case 'scrollback':\n this.buffers.resize(this.cols, this.rows);\n break;\n case 'windowsMode':\n if (this.optionsService.rawOptions.windowsMode) {\n this._enableWindowsMode();\n } else {\n this._windowsMode?.dispose();\n this._windowsMode = undefined;\n }\n break;\n }\n }\n\n protected _enableWindowsMode(): void {\n if (!this._windowsMode) {\n const disposables: IDisposable[] = [];\n disposables.push(this.onLineFeed(updateWindowsModeWrappedState.bind(null, this._bufferService)));\n disposables.push(this.registerCsiHandler({ final: 'H' }, () => {\n updateWindowsModeWrappedState(this._bufferService);\n return false;\n }));\n this._windowsMode = {\n dispose: () => {\n for (const d of disposables) {\n d.dispose();\n }\n }\n };\n }\n }\n}\n", "/**\n * Copyright (c) 2019 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IDisposable } from 'common/Types';\n\ninterface IListener {\n (arg1: T, arg2: U): void;\n}\n\nexport interface IEvent {\n (listener: (arg1: T, arg2: U) => any): IDisposable;\n}\n\nexport interface IEventEmitter {\n event: IEvent;\n fire(arg1: T, arg2: U): void;\n dispose(): void;\n}\n\nexport class EventEmitter implements IEventEmitter {\n private _listeners: IListener[] = [];\n private _event?: IEvent;\n private _disposed: boolean = false;\n\n public get event(): IEvent {\n if (!this._event) {\n this._event = (listener: (arg1: T, arg2: U) => any) => {\n this._listeners.push(listener);\n const disposable = {\n dispose: () => {\n if (!this._disposed) {\n for (let i = 0; i < this._listeners.length; i++) {\n if (this._listeners[i] === listener) {\n this._listeners.splice(i, 1);\n return;\n }\n }\n }\n }\n };\n return disposable;\n };\n }\n return this._event;\n }\n\n public fire(arg1: T, arg2: U): void {\n const queue: IListener[] = [];\n for (let i = 0; i < this._listeners.length; i++) {\n queue.push(this._listeners[i]);\n }\n for (let i = 0; i < queue.length; i++) {\n queue[i].call(undefined, arg1, arg2);\n }\n }\n\n public dispose(): void {\n if (this._listeners) {\n this._listeners.length = 0;\n }\n this._disposed = true;\n }\n}\n\nexport function forwardEvent(from: IEvent, to: IEventEmitter): IDisposable {\n return from(e => to.fire(e));\n}\n", "/**\n * Copyright (c) 2014 The xterm.js authors. All rights reserved.\n * Copyright (c) 2012-2013, Christopher Jeffrey (MIT License)\n * @license MIT\n */\n\nimport { IInputHandler, IAttributeData, IDisposable, IWindowOptions, IColorEvent, IParseStack, ColorIndex, ColorRequestType } from 'common/Types';\nimport { C0, C1 } from 'common/data/EscapeSequences';\nimport { CHARSETS, DEFAULT_CHARSET } from 'common/data/Charsets';\nimport { EscapeSequenceParser } from 'common/parser/EscapeSequenceParser';\nimport { Disposable } from 'common/Lifecycle';\nimport { concat } from 'common/TypedArrayUtils';\nimport { StringToUtf32, stringFromCodePoint, utf32ToString, Utf8ToUtf32 } from 'common/input/TextDecoder';\nimport { DEFAULT_ATTR_DATA } from 'common/buffer/BufferLine';\nimport { EventEmitter, IEvent } from 'common/EventEmitter';\nimport { IParsingState, IDcsHandler, IEscapeSequenceParser, IParams, IFunctionIdentifier } from 'common/parser/Types';\nimport { NULL_CELL_CODE, NULL_CELL_WIDTH, Attributes, FgFlags, BgFlags, Content, UnderlineStyle } from 'common/buffer/Constants';\nimport { CellData } from 'common/buffer/CellData';\nimport { AttributeData } from 'common/buffer/AttributeData';\nimport { ICoreService, IBufferService, IOptionsService, ILogService, IDirtyRowService, ICoreMouseService, ICharsetService, IUnicodeService, LogLevelEnum } from 'common/services/Services';\nimport { OscHandler } from 'common/parser/OscParser';\nimport { DcsHandler } from 'common/parser/DcsParser';\nimport { IBuffer } from 'common/buffer/Types';\nimport { parseColor } from 'common/input/XParseColor';\n\n/**\n * Map collect to glevel. Used in `selectCharset`.\n */\nconst GLEVEL: { [key: string]: number } = { '(': 0, ')': 1, '*': 2, '+': 3, '-': 1, '.': 2 };\n\n/**\n * VT commands done by the parser - FIXME: move this to the parser?\n */\n// @vt: #Y ESC CSI \"Control Sequence Introducer\" \"ESC [\" \"Start of a CSI sequence.\"\n// @vt: #Y ESC OSC \"Operating System Command\" \"ESC ]\" \"Start of an OSC sequence.\"\n// @vt: #Y ESC DCS \"Device Control String\" \"ESC P\" \"Start of a DCS sequence.\"\n// @vt: #Y ESC ST \"String Terminator\" \"ESC \\\" \"Terminator used for string type sequences.\"\n// @vt: #Y ESC PM \"Privacy Message\" \"ESC ^\" \"Start of a privacy message.\"\n// @vt: #Y ESC APC \"Application Program Command\" \"ESC _\" \"Start of an APC sequence.\"\n// @vt: #Y C1 CSI \"Control Sequence Introducer\" \"\\x9B\" \"Start of a CSI sequence.\"\n// @vt: #Y C1 OSC \"Operating System Command\" \"\\x9D\" \"Start of an OSC sequence.\"\n// @vt: #Y C1 DCS \"Device Control String\" \"\\x90\" \"Start of a DCS sequence.\"\n// @vt: #Y C1 ST \"String Terminator\" \"\\x9C\" \"Terminator used for string type sequences.\"\n// @vt: #Y C1 PM \"Privacy Message\" \"\\x9E\" \"Start of a privacy message.\"\n// @vt: #Y C1 APC \"Application Program Command\" \"\\x9F\" \"Start of an APC sequence.\"\n// @vt: #Y C0 NUL \"Null\" \"\\0, \\x00\" \"NUL is ignored.\"\n// @vt: #Y C0 ESC \"Escape\" \"\\e, \\x1B\" \"Start of a sequence. Cancels any other sequence.\"\n\n/**\n * Document common VT features here that are currently unsupported\n */\n// @vt: #N DCS SIXEL \"SIXEL Graphics\" \"DCS Ps ; Ps ; Ps ; q \tPt ST\" \"Draw SIXEL image starting at cursor position.\"\n// @vt: #N OSC 1 \"Set Icon Name\" \"OSC 1 ; Pt BEL\" \"Set icon name.\"\n\n/**\n * Max length of the UTF32 input buffer. Real memory consumption is 4 times higher.\n */\nconst MAX_PARSEBUFFER_LENGTH = 131072;\n\n/**\n * Limit length of title and icon name stacks.\n */\nconst STACK_LIMIT = 10;\n\n// map params to window option\nfunction paramToWindowOption(n: number, opts: IWindowOptions): boolean {\n if (n > 24) {\n return opts.setWinLines || false;\n }\n switch (n) {\n case 1: return !!opts.restoreWin;\n case 2: return !!opts.minimizeWin;\n case 3: return !!opts.setWinPosition;\n case 4: return !!opts.setWinSizePixels;\n case 5: return !!opts.raiseWin;\n case 6: return !!opts.lowerWin;\n case 7: return !!opts.refreshWin;\n case 8: return !!opts.setWinSizeChars;\n case 9: return !!opts.maximizeWin;\n case 10: return !!opts.fullscreenWin;\n case 11: return !!opts.getWinState;\n case 13: return !!opts.getWinPosition;\n case 14: return !!opts.getWinSizePixels;\n case 15: return !!opts.getScreenSizePixels;\n case 16: return !!opts.getCellSizePixels;\n case 18: return !!opts.getWinSizeChars;\n case 19: return !!opts.getScreenSizeChars;\n case 20: return !!opts.getIconTitle;\n case 21: return !!opts.getWinTitle;\n case 22: return !!opts.pushTitle;\n case 23: return !!opts.popTitle;\n case 24: return !!opts.setWinLines;\n }\n return false;\n}\n\nexport enum WindowsOptionsReportType {\n GET_WIN_SIZE_PIXELS = 0,\n GET_CELL_SIZE_PIXELS = 1\n}\n\n// create a warning log if an async handler takes longer than the limit (in ms)\nconst SLOW_ASYNC_LIMIT = 5000;\n\n/**\n * DCS subparser implementations\n */\n\n/**\n * DCS $ q Pt ST\n * DECRQSS (https://vt100.net/docs/vt510-rm/DECRQSS.html)\n * Request Status String (DECRQSS), VT420 and up.\n * Response: DECRPSS (https://vt100.net/docs/vt510-rm/DECRPSS.html)\n *\n * @vt: #P[See limited support below.] DCS DECRQSS \"Request Selection or Setting\" \"DCS $ q Pt ST\" \"Request several terminal settings.\"\n * Response is in the form `ESC P 1 $ r Pt ST` for valid requests, where `Pt` contains the corresponding CSI string,\n * `ESC P 0 ST` for invalid requests.\n *\n * Supported requests and responses:\n *\n * | Type | Request | Response (`Pt`) |\n * | -------------------------------- | ----------------- | ----------------------------------------------------- |\n * | Graphic Rendition (SGR) | `DCS $ q m ST` | always reporting `0m` (currently broken) |\n * | Top and Bottom Margins (DECSTBM) | `DCS $ q r ST` | `Ps ; Ps r` |\n * | Cursor Style (DECSCUSR) | `DCS $ q SP q ST` | `Ps SP q` |\n * | Protection Attribute (DECSCA) | `DCS $ q \" q ST` | always reporting `0 \" q` (DECSCA is unsupported) |\n * | Conformance Level (DECSCL) | `DCS $ q \" p ST` | always reporting `61 ; 1 \" p` (DECSCL is unsupported) |\n *\n *\n * TODO:\n * - fix SGR report\n * - either implement DECSCA or remove the report\n * - either check which conformance is better suited or remove the report completely\n * --> we are currently a mixture of all up to VT400 but dont follow anyone strictly\n */\nclass DECRQSS implements IDcsHandler {\n private _data: Uint32Array = new Uint32Array(0);\n\n constructor(\n private _bufferService: IBufferService,\n private _coreService: ICoreService,\n private _logService: ILogService,\n private _optionsService: IOptionsService\n ) { }\n\n public hook(params: IParams): void {\n this._data = new Uint32Array(0);\n }\n\n public put(data: Uint32Array, start: number, end: number): void {\n this._data = concat(this._data, data.subarray(start, end));\n }\n\n public unhook(success: boolean): boolean {\n if (!success) {\n this._data = new Uint32Array(0);\n return true;\n }\n const data = utf32ToString(this._data);\n this._data = new Uint32Array(0);\n switch (data) {\n // valid: DCS 1 $ r Pt ST (xterm)\n case '\"q': // DECSCA\n this._coreService.triggerDataEvent(`${C0.ESC}P1$r0\"q${C0.ESC}\\\\`);\n break;\n case '\"p': // DECSCL\n this._coreService.triggerDataEvent(`${C0.ESC}P1$r61;1\"p${C0.ESC}\\\\`);\n break;\n case 'r': // DECSTBM\n const pt = '' + (this._bufferService.buffer.scrollTop + 1) +\n ';' + (this._bufferService.buffer.scrollBottom + 1) + 'r';\n this._coreService.triggerDataEvent(`${C0.ESC}P1$r${pt}${C0.ESC}\\\\`);\n break;\n case 'm': // SGR\n // TODO: report real settings instead of 0m\n this._coreService.triggerDataEvent(`${C0.ESC}P1$r0m${C0.ESC}\\\\`);\n break;\n case ' q': // DECSCUSR\n const STYLES: { [key: string]: number } = { 'block': 2, 'underline': 4, 'bar': 6 };\n let style = STYLES[this._optionsService.rawOptions.cursorStyle];\n style -= this._optionsService.rawOptions.cursorBlink ? 1 : 0;\n this._coreService.triggerDataEvent(`${C0.ESC}P1$r${style} q${C0.ESC}\\\\`);\n break;\n default:\n // invalid: DCS 0 $ r Pt ST (xterm)\n this._logService.debug('Unknown DCS $q %s', data);\n this._coreService.triggerDataEvent(`${C0.ESC}P0$r${C0.ESC}\\\\`);\n }\n return true;\n }\n}\n\n/**\n * DCS Ps; Ps| Pt ST\n * DECUDK (https://vt100.net/docs/vt510-rm/DECUDK.html)\n * not supported\n *\n * @vt: #N DCS DECUDK \"User Defined Keys\" \"DCS Ps ; Ps | Pt ST\" \"Definitions for user-defined keys.\"\n */\n\n/**\n * DCS + q Pt ST (xterm)\n * Request Terminfo String\n * not implemented\n *\n * @vt: #N DCS XTGETTCAP \"Request Terminfo String\" \"DCS + q Pt ST\" \"Request Terminfo String.\"\n */\n\n/**\n * DCS + p Pt ST (xterm)\n * Set Terminfo Data\n * not supported\n *\n * @vt: #N DCS XTSETTCAP \"Set Terminfo Data\" \"DCS + p Pt ST\" \"Set Terminfo Data.\"\n */\n\n\n\n/**\n * The terminal's standard implementation of IInputHandler, this handles all\n * input from the Parser.\n *\n * Refer to http://invisible-island.net/xterm/ctlseqs/ctlseqs.html to understand\n * each function's header comment.\n */\nexport class InputHandler extends Disposable implements IInputHandler {\n private _parseBuffer: Uint32Array = new Uint32Array(4096);\n private _stringDecoder: StringToUtf32 = new StringToUtf32();\n private _utf8Decoder: Utf8ToUtf32 = new Utf8ToUtf32();\n private _workCell: CellData = new CellData();\n private _windowTitle = '';\n private _iconName = '';\n protected _windowTitleStack: string[] = [];\n protected _iconNameStack: string[] = [];\n\n private _curAttrData: IAttributeData = DEFAULT_ATTR_DATA.clone();\n private _eraseAttrDataInternal: IAttributeData = DEFAULT_ATTR_DATA.clone();\n\n private _activeBuffer: IBuffer;\n\n private _onRequestBell = new EventEmitter();\n public get onRequestBell(): IEvent { return this._onRequestBell.event; }\n private _onRequestRefreshRows = new EventEmitter();\n public get onRequestRefreshRows(): IEvent { return this._onRequestRefreshRows.event; }\n private _onRequestReset = new EventEmitter();\n public get onRequestReset(): IEvent { return this._onRequestReset.event; }\n private _onRequestSendFocus = new EventEmitter();\n public get onRequestSendFocus(): IEvent { return this._onRequestSendFocus.event; }\n private _onRequestSyncScrollBar = new EventEmitter();\n public get onRequestSyncScrollBar(): IEvent { return this._onRequestSyncScrollBar.event; }\n private _onRequestWindowsOptionsReport = new EventEmitter();\n public get onRequestWindowsOptionsReport(): IEvent { return this._onRequestWindowsOptionsReport.event; }\n\n private _onA11yChar = new EventEmitter();\n public get onA11yChar(): IEvent { return this._onA11yChar.event; }\n private _onA11yTab = new EventEmitter();\n public get onA11yTab(): IEvent { return this._onA11yTab.event; }\n private _onCursorMove = new EventEmitter();\n public get onCursorMove(): IEvent { return this._onCursorMove.event; }\n private _onLineFeed = new EventEmitter();\n public get onLineFeed(): IEvent { return this._onLineFeed.event; }\n private _onScroll = new EventEmitter();\n public get onScroll(): IEvent { return this._onScroll.event; }\n private _onTitleChange = new EventEmitter();\n public get onTitleChange(): IEvent { return this._onTitleChange.event; }\n private _onColor = new EventEmitter();\n public get onColor(): IEvent { return this._onColor.event; }\n\n private _parseStack: IParseStack = {\n paused: false,\n cursorStartX: 0,\n cursorStartY: 0,\n decodedLength: 0,\n position: 0\n };\n\n constructor(\n private readonly _bufferService: IBufferService,\n private readonly _charsetService: ICharsetService,\n private readonly _coreService: ICoreService,\n private readonly _dirtyRowService: IDirtyRowService,\n private readonly _logService: ILogService,\n private readonly _optionsService: IOptionsService,\n private readonly _coreMouseService: ICoreMouseService,\n private readonly _unicodeService: IUnicodeService,\n private readonly _parser: IEscapeSequenceParser = new EscapeSequenceParser()\n ) {\n super();\n this.register(this._parser);\n\n // Track properties used in performance critical code manually to avoid using slow getters\n this._activeBuffer = this._bufferService.buffer;\n this.register(this._bufferService.buffers.onBufferActivate(e => this._activeBuffer = e.activeBuffer));\n\n /**\n * custom fallback handlers\n */\n this._parser.setCsiHandlerFallback((ident, params) => {\n this._logService.debug('Unknown CSI code: ', { identifier: this._parser.identToString(ident), params: params.toArray() });\n });\n this._parser.setEscHandlerFallback(ident => {\n this._logService.debug('Unknown ESC code: ', { identifier: this._parser.identToString(ident) });\n });\n this._parser.setExecuteHandlerFallback(code => {\n this._logService.debug('Unknown EXECUTE code: ', { code });\n });\n this._parser.setOscHandlerFallback((identifier, action, data) => {\n this._logService.debug('Unknown OSC code: ', { identifier, action, data });\n });\n this._parser.setDcsHandlerFallback((ident, action, payload) => {\n if (action === 'HOOK') {\n payload = payload.toArray();\n }\n this._logService.debug('Unknown DCS code: ', { identifier: this._parser.identToString(ident), action, payload });\n });\n\n /**\n * print handler\n */\n this._parser.setPrintHandler((data, start, end) => this.print(data, start, end));\n\n /**\n * CSI handler\n */\n this._parser.registerCsiHandler({ final: '@' }, params => this.insertChars(params));\n this._parser.registerCsiHandler({ intermediates: ' ', final: '@' }, params => this.scrollLeft(params));\n this._parser.registerCsiHandler({ final: 'A' }, params => this.cursorUp(params));\n this._parser.registerCsiHandler({ intermediates: ' ', final: 'A' }, params => this.scrollRight(params));\n this._parser.registerCsiHandler({ final: 'B' }, params => this.cursorDown(params));\n this._parser.registerCsiHandler({ final: 'C' }, params => this.cursorForward(params));\n this._parser.registerCsiHandler({ final: 'D' }, params => this.cursorBackward(params));\n this._parser.registerCsiHandler({ final: 'E' }, params => this.cursorNextLine(params));\n this._parser.registerCsiHandler({ final: 'F' }, params => this.cursorPrecedingLine(params));\n this._parser.registerCsiHandler({ final: 'G' }, params => this.cursorCharAbsolute(params));\n this._parser.registerCsiHandler({ final: 'H' }, params => this.cursorPosition(params));\n this._parser.registerCsiHandler({ final: 'I' }, params => this.cursorForwardTab(params));\n this._parser.registerCsiHandler({ final: 'J' }, params => this.eraseInDisplay(params));\n this._parser.registerCsiHandler({ prefix: '?', final: 'J' }, params => this.eraseInDisplay(params));\n this._parser.registerCsiHandler({ final: 'K' }, params => this.eraseInLine(params));\n this._parser.registerCsiHandler({ prefix: '?', final: 'K' }, params => this.eraseInLine(params));\n this._parser.registerCsiHandler({ final: 'L' }, params => this.insertLines(params));\n this._parser.registerCsiHandler({ final: 'M' }, params => this.deleteLines(params));\n this._parser.registerCsiHandler({ final: 'P' }, params => this.deleteChars(params));\n this._parser.registerCsiHandler({ final: 'S' }, params => this.scrollUp(params));\n this._parser.registerCsiHandler({ final: 'T' }, params => this.scrollDown(params));\n this._parser.registerCsiHandler({ final: 'X' }, params => this.eraseChars(params));\n this._parser.registerCsiHandler({ final: 'Z' }, params => this.cursorBackwardTab(params));\n this._parser.registerCsiHandler({ final: '`' }, params => this.charPosAbsolute(params));\n this._parser.registerCsiHandler({ final: 'a' }, params => this.hPositionRelative(params));\n this._parser.registerCsiHandler({ final: 'b' }, params => this.repeatPrecedingCharacter(params));\n this._parser.registerCsiHandler({ final: 'c' }, params => this.sendDeviceAttributesPrimary(params));\n this._parser.registerCsiHandler({ prefix: '>', final: 'c' }, params => this.sendDeviceAttributesSecondary(params));\n this._parser.registerCsiHandler({ final: 'd' }, params => this.linePosAbsolute(params));\n this._parser.registerCsiHandler({ final: 'e' }, params => this.vPositionRelative(params));\n this._parser.registerCsiHandler({ final: 'f' }, params => this.hVPosition(params));\n this._parser.registerCsiHandler({ final: 'g' }, params => this.tabClear(params));\n this._parser.registerCsiHandler({ final: 'h' }, params => this.setMode(params));\n this._parser.registerCsiHandler({ prefix: '?', final: 'h' }, params => this.setModePrivate(params));\n this._parser.registerCsiHandler({ final: 'l' }, params => this.resetMode(params));\n this._parser.registerCsiHandler({ prefix: '?', final: 'l' }, params => this.resetModePrivate(params));\n this._parser.registerCsiHandler({ final: 'm' }, params => this.charAttributes(params));\n this._parser.registerCsiHandler({ final: 'n' }, params => this.deviceStatus(params));\n this._parser.registerCsiHandler({ prefix: '?', final: 'n' }, params => this.deviceStatusPrivate(params));\n this._parser.registerCsiHandler({ intermediates: '!', final: 'p' }, params => this.softReset(params));\n this._parser.registerCsiHandler({ intermediates: ' ', final: 'q' }, params => this.setCursorStyle(params));\n this._parser.registerCsiHandler({ final: 'r' }, params => this.setScrollRegion(params));\n this._parser.registerCsiHandler({ final: 's' }, params => this.saveCursor(params));\n this._parser.registerCsiHandler({ final: 't' }, params => this.windowOptions(params));\n this._parser.registerCsiHandler({ final: 'u' }, params => this.restoreCursor(params));\n this._parser.registerCsiHandler({ intermediates: '\\'', final: '}' }, params => this.insertColumns(params));\n this._parser.registerCsiHandler({ intermediates: '\\'', final: '~' }, params => this.deleteColumns(params));\n\n /**\n * execute handler\n */\n this._parser.setExecuteHandler(C0.BEL, () => this.bell());\n this._parser.setExecuteHandler(C0.LF, () => this.lineFeed());\n this._parser.setExecuteHandler(C0.VT, () => this.lineFeed());\n this._parser.setExecuteHandler(C0.FF, () => this.lineFeed());\n this._parser.setExecuteHandler(C0.CR, () => this.carriageReturn());\n this._parser.setExecuteHandler(C0.BS, () => this.backspace());\n this._parser.setExecuteHandler(C0.HT, () => this.tab());\n this._parser.setExecuteHandler(C0.SO, () => this.shiftOut());\n this._parser.setExecuteHandler(C0.SI, () => this.shiftIn());\n // FIXME: What do to with missing? Old code just added those to print.\n\n this._parser.setExecuteHandler(C1.IND, () => this.index());\n this._parser.setExecuteHandler(C1.NEL, () => this.nextLine());\n this._parser.setExecuteHandler(C1.HTS, () => this.tabSet());\n\n /**\n * OSC handler\n */\n // 0 - icon name + title\n this._parser.registerOscHandler(0, new OscHandler(data => { this.setTitle(data); this.setIconName(data); return true; }));\n // 1 - icon name\n this._parser.registerOscHandler(1, new OscHandler(data => this.setIconName(data)));\n // 2 - title\n this._parser.registerOscHandler(2, new OscHandler(data => this.setTitle(data)));\n // 3 - set property X in the form \"prop=value\"\n // 4 - Change Color Number\n this._parser.registerOscHandler(4, new OscHandler(data => this.setOrReportIndexedColor(data)));\n // 5 - Change Special Color Number\n // 6 - Enable/disable Special Color Number c\n // 7 - current directory? (not in xterm spec, see https://gitlab.com/gnachman/iterm2/issues/3939)\n // 10 - Change VT100 text foreground color to Pt.\n this._parser.registerOscHandler(10, new OscHandler(data => this.setOrReportFgColor(data)));\n // 11 - Change VT100 text background color to Pt.\n this._parser.registerOscHandler(11, new OscHandler(data => this.setOrReportBgColor(data)));\n // 12 - Change text cursor color to Pt.\n this._parser.registerOscHandler(12, new OscHandler(data => this.setOrReportCursorColor(data)));\n // 13 - Change mouse foreground color to Pt.\n // 14 - Change mouse background color to Pt.\n // 15 - Change Tektronix foreground color to Pt.\n // 16 - Change Tektronix background color to Pt.\n // 17 - Change highlight background color to Pt.\n // 18 - Change Tektronix cursor color to Pt.\n // 19 - Change highlight foreground color to Pt.\n // 46 - Change Log File to Pt.\n // 50 - Set Font to Pt.\n // 51 - reserved for Emacs shell.\n // 52 - Manipulate Selection Data.\n // 104 ; c - Reset Color Number c.\n this._parser.registerOscHandler(104, new OscHandler(data => this.restoreIndexedColor(data)));\n // 105 ; c - Reset Special Color Number c.\n // 106 ; c; f - Enable/disable Special Color Number c.\n // 110 - Reset VT100 text foreground color.\n this._parser.registerOscHandler(110, new OscHandler(data => this.restoreFgColor(data)));\n // 111 - Reset VT100 text background color.\n this._parser.registerOscHandler(111, new OscHandler(data => this.restoreBgColor(data)));\n // 112 - Reset text cursor color.\n this._parser.registerOscHandler(112, new OscHandler(data => this.restoreCursorColor(data)));\n // 113 - Reset mouse foreground color.\n // 114 - Reset mouse background color.\n // 115 - Reset Tektronix foreground color.\n // 116 - Reset Tektronix background color.\n // 117 - Reset highlight color.\n // 118 - Reset Tektronix cursor color.\n // 119 - Reset highlight foreground color.\n\n /**\n * ESC handlers\n */\n this._parser.registerEscHandler({ final: '7' }, () => this.saveCursor());\n this._parser.registerEscHandler({ final: '8' }, () => this.restoreCursor());\n this._parser.registerEscHandler({ final: 'D' }, () => this.index());\n this._parser.registerEscHandler({ final: 'E' }, () => this.nextLine());\n this._parser.registerEscHandler({ final: 'H' }, () => this.tabSet());\n this._parser.registerEscHandler({ final: 'M' }, () => this.reverseIndex());\n this._parser.registerEscHandler({ final: '=' }, () => this.keypadApplicationMode());\n this._parser.registerEscHandler({ final: '>' }, () => this.keypadNumericMode());\n this._parser.registerEscHandler({ final: 'c' }, () => this.fullReset());\n this._parser.registerEscHandler({ final: 'n' }, () => this.setgLevel(2));\n this._parser.registerEscHandler({ final: 'o' }, () => this.setgLevel(3));\n this._parser.registerEscHandler({ final: '|' }, () => this.setgLevel(3));\n this._parser.registerEscHandler({ final: '}' }, () => this.setgLevel(2));\n this._parser.registerEscHandler({ final: '~' }, () => this.setgLevel(1));\n this._parser.registerEscHandler({ intermediates: '%', final: '@' }, () => this.selectDefaultCharset());\n this._parser.registerEscHandler({ intermediates: '%', final: 'G' }, () => this.selectDefaultCharset());\n for (const flag in CHARSETS) {\n this._parser.registerEscHandler({ intermediates: '(', final: flag }, () => this.selectCharset('(' + flag));\n this._parser.registerEscHandler({ intermediates: ')', final: flag }, () => this.selectCharset(')' + flag));\n this._parser.registerEscHandler({ intermediates: '*', final: flag }, () => this.selectCharset('*' + flag));\n this._parser.registerEscHandler({ intermediates: '+', final: flag }, () => this.selectCharset('+' + flag));\n this._parser.registerEscHandler({ intermediates: '-', final: flag }, () => this.selectCharset('-' + flag));\n this._parser.registerEscHandler({ intermediates: '.', final: flag }, () => this.selectCharset('.' + flag));\n this._parser.registerEscHandler({ intermediates: '/', final: flag }, () => this.selectCharset('/' + flag)); // TODO: supported?\n }\n this._parser.registerEscHandler({ intermediates: '#', final: '8' }, () => this.screenAlignmentPattern());\n\n /**\n * error handler\n */\n this._parser.setErrorHandler((state: IParsingState) => {\n this._logService.error('Parsing error: ', state);\n return state;\n });\n\n /**\n * DCS handler\n */\n this._parser.registerDcsHandler({ intermediates: '$', final: 'q' }, new DECRQSS(this._bufferService, this._coreService, this._logService, this._optionsService));\n }\n\n public dispose(): void {\n super.dispose();\n }\n\n /**\n * Async parse support.\n */\n private _preserveStack(cursorStartX: number, cursorStartY: number, decodedLength: number, position: number): void {\n this._parseStack.paused = true;\n this._parseStack.cursorStartX = cursorStartX;\n this._parseStack.cursorStartY = cursorStartY;\n this._parseStack.decodedLength = decodedLength;\n this._parseStack.position = position;\n }\n\n private _logSlowResolvingAsync(p: Promise): void {\n // log a limited warning about an async handler taking too long\n if (this._logService.logLevel <= LogLevelEnum.WARN) {\n Promise.race([p, new Promise((res, rej) => setTimeout(() => rej('#SLOW_TIMEOUT'), SLOW_ASYNC_LIMIT))])\n .catch(err => {\n if (err !== '#SLOW_TIMEOUT') {\n throw err;\n }\n console.warn(`async parser handler taking longer than ${SLOW_ASYNC_LIMIT} ms`);\n });\n }\n }\n\n /**\n * Parse call with async handler support.\n *\n * Whether the stack state got preserved for the next call, is indicated by the return value:\n * - undefined (void):\n * all handlers were sync, no stack save, continue normally with next chunk\n * - Promise\\:\n * execution stopped at async handler, stack saved, continue with\n * same chunk and the promise resolve value as `promiseResult` until the method returns `undefined`\n *\n * Note: This method should only be called by `Terminal.write` to ensure correct execution order and\n * proper continuation of async parser handlers.\n */\n public parse(data: string | Uint8Array, promiseResult?: boolean): void | Promise {\n let result: void | Promise;\n let cursorStartX = this._activeBuffer.x;\n let cursorStartY = this._activeBuffer.y;\n let start = 0;\n const wasPaused = this._parseStack.paused;\n\n if (wasPaused) {\n // assumption: _parseBuffer never mutates between async calls\n if (result = this._parser.parse(this._parseBuffer, this._parseStack.decodedLength, promiseResult)) {\n this._logSlowResolvingAsync(result);\n return result;\n }\n cursorStartX = this._parseStack.cursorStartX;\n cursorStartY = this._parseStack.cursorStartY;\n this._parseStack.paused = false;\n if (data.length > MAX_PARSEBUFFER_LENGTH) {\n start = this._parseStack.position + MAX_PARSEBUFFER_LENGTH;\n }\n }\n\n // Log debug data, the log level gate is to prevent extra work in this hot path\n if (this._logService.logLevel <= LogLevelEnum.DEBUG) {\n this._logService.debug(`parsing data${typeof data === 'string' ? ` \"${data}\"` : ` \"${Array.prototype.map.call(data, e => String.fromCharCode(e)).join('')}\"`}`, typeof data === 'string'\n ? data.split('').map(e => e.charCodeAt(0))\n : data\n );\n }\n\n // resize input buffer if needed\n if (this._parseBuffer.length < data.length) {\n if (this._parseBuffer.length < MAX_PARSEBUFFER_LENGTH) {\n this._parseBuffer = new Uint32Array(Math.min(data.length, MAX_PARSEBUFFER_LENGTH));\n }\n }\n\n // Clear the dirty row service so we know which lines changed as a result of parsing\n // Important: do not clear between async calls, otherwise we lost pending update information.\n if (!wasPaused) {\n this._dirtyRowService.clearRange();\n }\n\n // process big data in smaller chunks\n if (data.length > MAX_PARSEBUFFER_LENGTH) {\n for (let i = start; i < data.length; i += MAX_PARSEBUFFER_LENGTH) {\n const end = i + MAX_PARSEBUFFER_LENGTH < data.length ? i + MAX_PARSEBUFFER_LENGTH : data.length;\n const len = (typeof data === 'string')\n ? this._stringDecoder.decode(data.substring(i, end), this._parseBuffer)\n : this._utf8Decoder.decode(data.subarray(i, end), this._parseBuffer);\n if (result = this._parser.parse(this._parseBuffer, len)) {\n this._preserveStack(cursorStartX, cursorStartY, len, i);\n this._logSlowResolvingAsync(result);\n return result;\n }\n }\n } else {\n if (!wasPaused) {\n const len = (typeof data === 'string')\n ? this._stringDecoder.decode(data, this._parseBuffer)\n : this._utf8Decoder.decode(data, this._parseBuffer);\n if (result = this._parser.parse(this._parseBuffer, len)) {\n this._preserveStack(cursorStartX, cursorStartY, len, 0);\n this._logSlowResolvingAsync(result);\n return result;\n }\n }\n }\n\n if (this._activeBuffer.x !== cursorStartX || this._activeBuffer.y !== cursorStartY) {\n this._onCursorMove.fire();\n }\n\n // Refresh any dirty rows accumulated as part of parsing\n this._onRequestRefreshRows.fire(this._dirtyRowService.start, this._dirtyRowService.end);\n }\n\n public print(data: Uint32Array, start: number, end: number): void {\n let code: number;\n let chWidth: number;\n const charset = this._charsetService.charset;\n const screenReaderMode = this._optionsService.rawOptions.screenReaderMode;\n const cols = this._bufferService.cols;\n const wraparoundMode = this._coreService.decPrivateModes.wraparound;\n const insertMode = this._coreService.modes.insertMode;\n const curAttr = this._curAttrData;\n let bufferRow = this._activeBuffer.lines.get(this._activeBuffer.ybase + this._activeBuffer.y)!;\n\n this._dirtyRowService.markDirty(this._activeBuffer.y);\n\n // handle wide chars: reset start_cell-1 if we would overwrite the second cell of a wide char\n if (this._activeBuffer.x && end - start > 0 && bufferRow.getWidth(this._activeBuffer.x - 1) === 2) {\n bufferRow.setCellFromCodePoint(this._activeBuffer.x - 1, 0, 1, curAttr.fg, curAttr.bg, curAttr.extended);\n }\n\n for (let pos = start; pos < end; ++pos) {\n code = data[pos];\n\n // calculate print space\n // expensive call, therefore we save width in line buffer\n chWidth = this._unicodeService.wcwidth(code);\n\n // get charset replacement character\n // charset is only defined for ASCII, therefore we only\n // search for an replacement char if code < 127\n if (code < 127 && charset) {\n const ch = charset[String.fromCharCode(code)];\n if (ch) {\n code = ch.charCodeAt(0);\n }\n }\n\n if (screenReaderMode) {\n this._onA11yChar.fire(stringFromCodePoint(code));\n }\n\n // insert combining char at last cursor position\n // this._activeBuffer.x should never be 0 for a combining char\n // since they always follow a cell consuming char\n // therefore we can test for this._activeBuffer.x to avoid overflow left\n if (!chWidth && this._activeBuffer.x) {\n if (!bufferRow.getWidth(this._activeBuffer.x - 1)) {\n // found empty cell after fullwidth, need to go 2 cells back\n // it is save to step 2 cells back here\n // since an empty cell is only set by fullwidth chars\n bufferRow.addCodepointToCell(this._activeBuffer.x - 2, code);\n } else {\n bufferRow.addCodepointToCell(this._activeBuffer.x - 1, code);\n }\n continue;\n }\n\n // goto next line if ch would overflow\n // NOTE: To avoid costly width checks here,\n // the terminal does not allow a cols < 2.\n if (this._activeBuffer.x + chWidth - 1 >= cols) {\n // autowrap - DECAWM\n // automatically wraps to the beginning of the next line\n if (wraparoundMode) {\n // clear left over cells to the right\n while (this._activeBuffer.x < cols) {\n bufferRow.setCellFromCodePoint(this._activeBuffer.x++, 0, 1, curAttr.fg, curAttr.bg, curAttr.extended);\n }\n this._activeBuffer.x = 0;\n this._activeBuffer.y++;\n if (this._activeBuffer.y === this._activeBuffer.scrollBottom + 1) {\n this._activeBuffer.y--;\n this._bufferService.scroll(this._eraseAttrData(), true);\n } else {\n if (this._activeBuffer.y >= this._bufferService.rows) {\n this._activeBuffer.y = this._bufferService.rows - 1;\n }\n // The line already exists (eg. the initial viewport), mark it as a\n // wrapped line\n this._activeBuffer.lines.get(this._activeBuffer.ybase + this._activeBuffer.y)!.isWrapped = true;\n }\n // row changed, get it again\n bufferRow = this._activeBuffer.lines.get(this._activeBuffer.ybase + this._activeBuffer.y)!;\n } else {\n this._activeBuffer.x = cols - 1;\n if (chWidth === 2) {\n // FIXME: check for xterm behavior\n // What to do here? We got a wide char that does not fit into last cell\n continue;\n }\n }\n }\n\n // insert mode: move characters to right\n if (insertMode) {\n // right shift cells according to the width\n bufferRow.insertCells(this._activeBuffer.x, chWidth, this._activeBuffer.getNullCell(curAttr), curAttr);\n // test last cell - since the last cell has only room for\n // a halfwidth char any fullwidth shifted there is lost\n // and will be set to empty cell\n if (bufferRow.getWidth(cols - 1) === 2) {\n bufferRow.setCellFromCodePoint(cols - 1, NULL_CELL_CODE, NULL_CELL_WIDTH, curAttr.fg, curAttr.bg, curAttr.extended);\n }\n }\n\n // write current char to buffer and advance cursor\n bufferRow.setCellFromCodePoint(this._activeBuffer.x++, code, chWidth, curAttr.fg, curAttr.bg, curAttr.extended);\n\n // fullwidth char - also set next cell to placeholder stub and advance cursor\n // for graphemes bigger than fullwidth we can simply loop to zero\n // we already made sure above, that this._activeBuffer.x + chWidth will not overflow right\n if (chWidth > 0) {\n while (--chWidth) {\n // other than a regular empty cell a cell following a wide char has no width\n bufferRow.setCellFromCodePoint(this._activeBuffer.x++, 0, 0, curAttr.fg, curAttr.bg, curAttr.extended);\n }\n }\n }\n // store last char in Parser.precedingCodepoint for REP to work correctly\n // This needs to check whether:\n // - fullwidth + surrogates: reset\n // - combining: only base char gets carried on (bug in xterm?)\n if (end - start > 0) {\n bufferRow.loadCell(this._activeBuffer.x - 1, this._workCell);\n if (this._workCell.getWidth() === 2 || this._workCell.getCode() > 0xFFFF) {\n this._parser.precedingCodepoint = 0;\n } else if (this._workCell.isCombined()) {\n this._parser.precedingCodepoint = this._workCell.getChars().charCodeAt(0);\n } else {\n this._parser.precedingCodepoint = this._workCell.content;\n }\n }\n\n // handle wide chars: reset cell to the right if it is second cell of a wide char\n if (this._activeBuffer.x < cols && end - start > 0 && bufferRow.getWidth(this._activeBuffer.x) === 0 && !bufferRow.hasContent(this._activeBuffer.x)) {\n bufferRow.setCellFromCodePoint(this._activeBuffer.x, 0, 1, curAttr.fg, curAttr.bg, curAttr.extended);\n }\n\n this._dirtyRowService.markDirty(this._activeBuffer.y);\n }\n\n /**\n * Forward registerCsiHandler from parser.\n */\n public registerCsiHandler(id: IFunctionIdentifier, callback: (params: IParams) => boolean | Promise): IDisposable {\n if (id.final === 't' && !id.prefix && !id.intermediates) {\n // security: always check whether window option is allowed\n return this._parser.registerCsiHandler(id, params => {\n if (!paramToWindowOption(params.params[0], this._optionsService.rawOptions.windowOptions)) {\n return true;\n }\n return callback(params);\n });\n }\n return this._parser.registerCsiHandler(id, callback);\n }\n\n /**\n * Forward registerDcsHandler from parser.\n */\n public registerDcsHandler(id: IFunctionIdentifier, callback: (data: string, param: IParams) => boolean | Promise): IDisposable {\n return this._parser.registerDcsHandler(id, new DcsHandler(callback));\n }\n\n /**\n * Forward registerEscHandler from parser.\n */\n public registerEscHandler(id: IFunctionIdentifier, callback: () => boolean | Promise): IDisposable {\n return this._parser.registerEscHandler(id, callback);\n }\n\n /**\n * Forward registerOscHandler from parser.\n */\n public registerOscHandler(ident: number, callback: (data: string) => boolean | Promise): IDisposable {\n return this._parser.registerOscHandler(ident, new OscHandler(callback));\n }\n\n /**\n * BEL\n * Bell (Ctrl-G).\n *\n * @vt: #Y C0 BEL \"Bell\" \"\\a, \\x07\" \"Ring the bell.\"\n * The behavior of the bell is further customizable with `ITerminalOptions.bellStyle`\n * and `ITerminalOptions.bellSound`.\n */\n public bell(): boolean {\n this._onRequestBell.fire();\n return true;\n }\n\n /**\n * LF\n * Line Feed or New Line (NL). (LF is Ctrl-J).\n *\n * @vt: #Y C0 LF \"Line Feed\" \"\\n, \\x0A\" \"Move the cursor one row down, scrolling if needed.\"\n * Scrolling is restricted to scroll margins and will only happen on the bottom line.\n *\n * @vt: #Y C0 VT \"Vertical Tabulation\" \"\\v, \\x0B\" \"Treated as LF.\"\n * @vt: #Y C0 FF \"Form Feed\" \"\\f, \\x0C\" \"Treated as LF.\"\n */\n public lineFeed(): boolean {\n this._dirtyRowService.markDirty(this._activeBuffer.y);\n if (this._optionsService.rawOptions.convertEol) {\n this._activeBuffer.x = 0;\n }\n this._activeBuffer.y++;\n if (this._activeBuffer.y === this._activeBuffer.scrollBottom + 1) {\n this._activeBuffer.y--;\n this._bufferService.scroll(this._eraseAttrData());\n } else if (this._activeBuffer.y >= this._bufferService.rows) {\n this._activeBuffer.y = this._bufferService.rows - 1;\n }\n // If the end of the line is hit, prevent this action from wrapping around to the next line.\n if (this._activeBuffer.x >= this._bufferService.cols) {\n this._activeBuffer.x--;\n }\n this._dirtyRowService.markDirty(this._activeBuffer.y);\n\n this._onLineFeed.fire();\n return true;\n }\n\n /**\n * CR\n * Carriage Return (Ctrl-M).\n *\n * @vt: #Y C0 CR \"Carriage Return\" \"\\r, \\x0D\" \"Move the cursor to the beginning of the row.\"\n */\n public carriageReturn(): boolean {\n this._activeBuffer.x = 0;\n return true;\n }\n\n /**\n * BS\n * Backspace (Ctrl-H).\n *\n * @vt: #Y C0 BS \"Backspace\" \"\\b, \\x08\" \"Move the cursor one position to the left.\"\n * By default it is not possible to move the cursor past the leftmost position.\n * If `reverse wrap-around` (`CSI ? 45 h`) is set, a previous soft line wrap (DECAWM)\n * can be undone with BS within the scroll margins. In that case the cursor will wrap back\n * to the end of the previous row. Note that it is not possible to peek back into the scrollbuffer\n * with the cursor, thus at the home position (top-leftmost cell) this has no effect.\n */\n public backspace(): boolean {\n // reverse wrap-around is disabled\n if (!this._coreService.decPrivateModes.reverseWraparound) {\n this._restrictCursor();\n if (this._activeBuffer.x > 0) {\n this._activeBuffer.x--;\n }\n return true;\n }\n\n // reverse wrap-around is enabled\n // other than for normal operation mode, reverse wrap-around allows the cursor\n // to be at x=cols to be able to address the last cell of a row by BS\n this._restrictCursor(this._bufferService.cols);\n\n if (this._activeBuffer.x > 0) {\n this._activeBuffer.x--;\n } else {\n /**\n * reverse wrap-around handling:\n * Our implementation deviates from xterm on purpose. Details:\n * - only previous soft NLs can be reversed (isWrapped=true)\n * - only works within scrollborders (top/bottom, left/right not yet supported)\n * - cannot peek into scrollbuffer\n * - any cursor movement sequence keeps working as expected\n */\n if (this._activeBuffer.x === 0\n && this._activeBuffer.y > this._activeBuffer.scrollTop\n && this._activeBuffer.y <= this._activeBuffer.scrollBottom\n && this._activeBuffer.lines.get(this._activeBuffer.ybase + this._activeBuffer.y)?.isWrapped) {\n this._activeBuffer.lines.get(this._activeBuffer.ybase + this._activeBuffer.y)!.isWrapped = false;\n this._activeBuffer.y--;\n this._activeBuffer.x = this._bufferService.cols - 1;\n // find last taken cell - last cell can have 3 different states:\n // - hasContent(true) + hasWidth(1): narrow char - we are done\n // - hasWidth(0): second part of wide char - we are done\n // - hasContent(false) + hasWidth(1): empty cell due to early wrapping wide char, go one cell further back\n const line = this._activeBuffer.lines.get(this._activeBuffer.ybase + this._activeBuffer.y)!;\n if (line.hasWidth(this._activeBuffer.x) && !line.hasContent(this._activeBuffer.x)) {\n this._activeBuffer.x--;\n // We do this only once, since width=1 + hasContent=false currently happens only once before\n // early wrapping of a wide char.\n // This needs to be fixed once we support graphemes taking more than 2 cells.\n }\n }\n }\n this._restrictCursor();\n return true;\n }\n\n /**\n * TAB\n * Horizontal Tab (HT) (Ctrl-I).\n *\n * @vt: #Y C0 HT \"Horizontal Tabulation\" \"\\t, \\x09\" \"Move the cursor to the next character tab stop.\"\n */\n public tab(): boolean {\n if (this._activeBuffer.x >= this._bufferService.cols) {\n return true;\n }\n const originalX = this._activeBuffer.x;\n this._activeBuffer.x = this._activeBuffer.nextStop();\n if (this._optionsService.rawOptions.screenReaderMode) {\n this._onA11yTab.fire(this._activeBuffer.x - originalX);\n }\n return true;\n }\n\n /**\n * SO\n * Shift Out (Ctrl-N) -> Switch to Alternate Character Set. This invokes the\n * G1 character set.\n *\n * @vt: #P[Only limited ISO-2022 charset support.] C0 SO \"Shift Out\" \"\\x0E\" \"Switch to an alternative character set.\"\n */\n public shiftOut(): boolean {\n this._charsetService.setgLevel(1);\n return true;\n }\n\n /**\n * SI\n * Shift In (Ctrl-O) -> Switch to Standard Character Set. This invokes the G0\n * character set (the default).\n *\n * @vt: #Y C0 SI \"Shift In\" \"\\x0F\" \"Return to regular character set after Shift Out.\"\n */\n public shiftIn(): boolean {\n this._charsetService.setgLevel(0);\n return true;\n }\n\n /**\n * Restrict cursor to viewport size / scroll margin (origin mode).\n */\n private _restrictCursor(maxCol: number = this._bufferService.cols - 1): void {\n this._activeBuffer.x = Math.min(maxCol, Math.max(0, this._activeBuffer.x));\n this._activeBuffer.y = this._coreService.decPrivateModes.origin\n ? Math.min(this._activeBuffer.scrollBottom, Math.max(this._activeBuffer.scrollTop, this._activeBuffer.y))\n : Math.min(this._bufferService.rows - 1, Math.max(0, this._activeBuffer.y));\n this._dirtyRowService.markDirty(this._activeBuffer.y);\n }\n\n /**\n * Set absolute cursor position.\n */\n private _setCursor(x: number, y: number): void {\n this._dirtyRowService.markDirty(this._activeBuffer.y);\n if (this._coreService.decPrivateModes.origin) {\n this._activeBuffer.x = x;\n this._activeBuffer.y = this._activeBuffer.scrollTop + y;\n } else {\n this._activeBuffer.x = x;\n this._activeBuffer.y = y;\n }\n this._restrictCursor();\n this._dirtyRowService.markDirty(this._activeBuffer.y);\n }\n\n /**\n * Set relative cursor position.\n */\n private _moveCursor(x: number, y: number): void {\n // for relative changes we have to make sure we are within 0 .. cols/rows - 1\n // before calculating the new position\n this._restrictCursor();\n this._setCursor(this._activeBuffer.x + x, this._activeBuffer.y + y);\n }\n\n /**\n * CSI Ps A\n * Cursor Up Ps Times (default = 1) (CUU).\n *\n * @vt: #Y CSI CUU \"Cursor Up\" \"CSI Ps A\" \"Move cursor `Ps` times up (default=1).\"\n * If the cursor would pass the top scroll margin, it will stop there.\n */\n public cursorUp(params: IParams): boolean {\n // stop at scrollTop\n const diffToTop = this._activeBuffer.y - this._activeBuffer.scrollTop;\n if (diffToTop >= 0) {\n this._moveCursor(0, -Math.min(diffToTop, params.params[0] || 1));\n } else {\n this._moveCursor(0, -(params.params[0] || 1));\n }\n return true;\n }\n\n /**\n * CSI Ps B\n * Cursor Down Ps Times (default = 1) (CUD).\n *\n * @vt: #Y CSI CUD \"Cursor Down\" \"CSI Ps B\" \"Move cursor `Ps` times down (default=1).\"\n * If the cursor would pass the bottom scroll margin, it will stop there.\n */\n public cursorDown(params: IParams): boolean {\n // stop at scrollBottom\n const diffToBottom = this._activeBuffer.scrollBottom - this._activeBuffer.y;\n if (diffToBottom >= 0) {\n this._moveCursor(0, Math.min(diffToBottom, params.params[0] || 1));\n } else {\n this._moveCursor(0, params.params[0] || 1);\n }\n return true;\n }\n\n /**\n * CSI Ps C\n * Cursor Forward Ps Times (default = 1) (CUF).\n *\n * @vt: #Y CSI CUF \"Cursor Forward\" \"CSI Ps C\" \"Move cursor `Ps` times forward (default=1).\"\n */\n public cursorForward(params: IParams): boolean {\n this._moveCursor(params.params[0] || 1, 0);\n return true;\n }\n\n /**\n * CSI Ps D\n * Cursor Backward Ps Times (default = 1) (CUB).\n *\n * @vt: #Y CSI CUB \"Cursor Backward\" \"CSI Ps D\" \"Move cursor `Ps` times backward (default=1).\"\n */\n public cursorBackward(params: IParams): boolean {\n this._moveCursor(-(params.params[0] || 1), 0);\n return true;\n }\n\n /**\n * CSI Ps E\n * Cursor Next Line Ps Times (default = 1) (CNL).\n * Other than cursorDown (CUD) also set the cursor to first column.\n *\n * @vt: #Y CSI CNL \"Cursor Next Line\" \"CSI Ps E\" \"Move cursor `Ps` times down (default=1) and to the first column.\"\n * Same as CUD, additionally places the cursor at the first column.\n */\n public cursorNextLine(params: IParams): boolean {\n this.cursorDown(params);\n this._activeBuffer.x = 0;\n return true;\n }\n\n /**\n * CSI Ps F\n * Cursor Previous Line Ps Times (default = 1) (CPL).\n * Other than cursorUp (CUU) also set the cursor to first column.\n *\n * @vt: #Y CSI CPL \"Cursor Backward\" \"CSI Ps F\" \"Move cursor `Ps` times up (default=1) and to the first column.\"\n * Same as CUU, additionally places the cursor at the first column.\n */\n public cursorPrecedingLine(params: IParams): boolean {\n this.cursorUp(params);\n this._activeBuffer.x = 0;\n return true;\n }\n\n /**\n * CSI Ps G\n * Cursor Character Absolute [column] (default = [row,1]) (CHA).\n *\n * @vt: #Y CSI CHA \"Cursor Horizontal Absolute\" \"CSI Ps G\" \"Move cursor to `Ps`-th column of the active row (default=1).\"\n */\n public cursorCharAbsolute(params: IParams): boolean {\n this._setCursor((params.params[0] || 1) - 1, this._activeBuffer.y);\n return true;\n }\n\n /**\n * CSI Ps ; Ps H\n * Cursor Position [row;column] (default = [1,1]) (CUP).\n *\n * @vt: #Y CSI CUP \"Cursor Position\" \"CSI Ps ; Ps H\" \"Set cursor to position [`Ps`, `Ps`] (default = [1, 1]).\"\n * If ORIGIN mode is set, places the cursor to the absolute position within the scroll margins.\n * If ORIGIN mode is not set, places the cursor to the absolute position within the viewport.\n * Note that the coordinates are 1-based, thus the top left position starts at `1 ; 1`.\n */\n public cursorPosition(params: IParams): boolean {\n this._setCursor(\n // col\n (params.length >= 2) ? (params.params[1] || 1) - 1 : 0,\n // row\n (params.params[0] || 1) - 1\n );\n return true;\n }\n\n /**\n * CSI Pm ` Character Position Absolute\n * [column] (default = [row,1]) (HPA).\n * Currently same functionality as CHA.\n *\n * @vt: #Y CSI HPA \"Horizontal Position Absolute\" \"CSI Ps ` \" \"Same as CHA.\"\n */\n public charPosAbsolute(params: IParams): boolean {\n this._setCursor((params.params[0] || 1) - 1, this._activeBuffer.y);\n return true;\n }\n\n /**\n * CSI Pm a Character Position Relative\n * [columns] (default = [row,col+1]) (HPR)\n *\n * @vt: #Y CSI HPR \"Horizontal Position Relative\" \"CSI Ps a\" \"Same as CUF.\"\n */\n public hPositionRelative(params: IParams): boolean {\n this._moveCursor(params.params[0] || 1, 0);\n return true;\n }\n\n /**\n * CSI Pm d Vertical Position Absolute (VPA)\n * [row] (default = [1,column])\n *\n * @vt: #Y CSI VPA \"Vertical Position Absolute\" \"CSI Ps d\" \"Move cursor to `Ps`-th row (default=1).\"\n */\n public linePosAbsolute(params: IParams): boolean {\n this._setCursor(this._activeBuffer.x, (params.params[0] || 1) - 1);\n return true;\n }\n\n /**\n * CSI Pm e Vertical Position Relative (VPR)\n * [rows] (default = [row+1,column])\n * reuse CSI Ps B ?\n *\n * @vt: #Y CSI VPR \"Vertical Position Relative\" \"CSI Ps e\" \"Move cursor `Ps` times down (default=1).\"\n */\n public vPositionRelative(params: IParams): boolean {\n this._moveCursor(0, params.params[0] || 1);\n return true;\n }\n\n /**\n * CSI Ps ; Ps f\n * Horizontal and Vertical Position [row;column] (default =\n * [1,1]) (HVP).\n * Same as CUP.\n *\n * @vt: #Y CSI HVP \"Horizontal and Vertical Position\" \"CSI Ps ; Ps f\" \"Same as CUP.\"\n */\n public hVPosition(params: IParams): boolean {\n this.cursorPosition(params);\n return true;\n }\n\n /**\n * CSI Ps g Tab Clear (TBC).\n * Ps = 0 -> Clear Current Column (default).\n * Ps = 3 -> Clear All.\n * Potentially:\n * Ps = 2 -> Clear Stops on Line.\n * http://vt100.net/annarbor/aaa-ug/section6.html\n *\n * @vt: #Y CSI TBC \"Tab Clear\" \"CSI Ps g\" \"Clear tab stops at current position (0) or all (3) (default=0).\"\n * Clearing tabstops off the active row (Ps = 2, VT100) is currently not supported.\n */\n public tabClear(params: IParams): boolean {\n const param = params.params[0];\n if (param === 0) {\n delete this._activeBuffer.tabs[this._activeBuffer.x];\n } else if (param === 3) {\n this._activeBuffer.tabs = {};\n }\n return true;\n }\n\n /**\n * CSI Ps I\n * Cursor Forward Tabulation Ps tab stops (default = 1) (CHT).\n *\n * @vt: #Y CSI CHT \"Cursor Horizontal Tabulation\" \"CSI Ps I\" \"Move cursor `Ps` times tabs forward (default=1).\"\n */\n public cursorForwardTab(params: IParams): boolean {\n if (this._activeBuffer.x >= this._bufferService.cols) {\n return true;\n }\n let param = params.params[0] || 1;\n while (param--) {\n this._activeBuffer.x = this._activeBuffer.nextStop();\n }\n return true;\n }\n\n /**\n * CSI Ps Z Cursor Backward Tabulation Ps tab stops (default = 1) (CBT).\n *\n * @vt: #Y CSI CBT \"Cursor Backward Tabulation\" \"CSI Ps Z\" \"Move cursor `Ps` tabs backward (default=1).\"\n */\n public cursorBackwardTab(params: IParams): boolean {\n if (this._activeBuffer.x >= this._bufferService.cols) {\n return true;\n }\n let param = params.params[0] || 1;\n\n while (param--) {\n this._activeBuffer.x = this._activeBuffer.prevStop();\n }\n return true;\n }\n\n\n /**\n * Helper method to erase cells in a terminal row.\n * The cell gets replaced with the eraseChar of the terminal.\n * @param y row index\n * @param start first cell index to be erased\n * @param end end - 1 is last erased cell\n * @param cleanWrap clear the isWrapped flag\n */\n private _eraseInBufferLine(y: number, start: number, end: number, clearWrap: boolean = false): void {\n const line = this._activeBuffer.lines.get(this._activeBuffer.ybase + y)!;\n line.replaceCells(\n start,\n end,\n this._activeBuffer.getNullCell(this._eraseAttrData()),\n this._eraseAttrData()\n );\n if (clearWrap) {\n line.isWrapped = false;\n }\n }\n\n /**\n * Helper method to reset cells in a terminal row.\n * The cell gets replaced with the eraseChar of the terminal and the isWrapped property is set to false.\n * @param y row index\n */\n private _resetBufferLine(y: number): void {\n const line = this._activeBuffer.lines.get(this._activeBuffer.ybase + y)!;\n line.fill(this._activeBuffer.getNullCell(this._eraseAttrData()));\n this._bufferService.buffer.clearMarkers(this._activeBuffer.ybase + y);\n line.isWrapped = false;\n }\n\n /**\n * CSI Ps J Erase in Display (ED).\n * Ps = 0 -> Erase Below (default).\n * Ps = 1 -> Erase Above.\n * Ps = 2 -> Erase All.\n * Ps = 3 -> Erase Saved Lines (xterm).\n * CSI ? Ps J\n * Erase in Display (DECSED).\n * Ps = 0 -> Selective Erase Below (default).\n * Ps = 1 -> Selective Erase Above.\n * Ps = 2 -> Selective Erase All.\n *\n * @vt: #Y CSI ED \"Erase In Display\" \"CSI Ps J\" \"Erase various parts of the viewport.\"\n * Supported param values:\n *\n * | Ps | Effect |\n * | -- | ------------------------------------------------------------ |\n * | 0 | Erase from the cursor through the end of the viewport. |\n * | 1 | Erase from the beginning of the viewport through the cursor. |\n * | 2 | Erase complete viewport. |\n * | 3 | Erase scrollback. |\n *\n * @vt: #P[Protection attributes are not supported.] CSI DECSED \"Selective Erase In Display\" \"CSI ? Ps J\" \"Currently the same as ED.\"\n */\n public eraseInDisplay(params: IParams): boolean {\n this._restrictCursor(this._bufferService.cols);\n let j;\n switch (params.params[0]) {\n case 0:\n j = this._activeBuffer.y;\n this._dirtyRowService.markDirty(j);\n this._eraseInBufferLine(j++, this._activeBuffer.x, this._bufferService.cols, this._activeBuffer.x === 0);\n for (; j < this._bufferService.rows; j++) {\n this._resetBufferLine(j);\n }\n this._dirtyRowService.markDirty(j);\n break;\n case 1:\n j = this._activeBuffer.y;\n this._dirtyRowService.markDirty(j);\n // Deleted front part of line and everything before. This line will no longer be wrapped.\n this._eraseInBufferLine(j, 0, this._activeBuffer.x + 1, true);\n if (this._activeBuffer.x + 1 >= this._bufferService.cols) {\n // Deleted entire previous line. This next line can no longer be wrapped.\n this._activeBuffer.lines.get(j + 1)!.isWrapped = false;\n }\n while (j--) {\n this._resetBufferLine(j);\n }\n this._dirtyRowService.markDirty(0);\n break;\n case 2:\n j = this._bufferService.rows;\n this._dirtyRowService.markDirty(j - 1);\n while (j--) {\n this._resetBufferLine(j);\n }\n this._dirtyRowService.markDirty(0);\n break;\n case 3:\n // Clear scrollback (everything not in viewport)\n const scrollBackSize = this._activeBuffer.lines.length - this._bufferService.rows;\n if (scrollBackSize > 0) {\n this._activeBuffer.lines.trimStart(scrollBackSize);\n this._activeBuffer.ybase = Math.max(this._activeBuffer.ybase - scrollBackSize, 0);\n this._activeBuffer.ydisp = Math.max(this._activeBuffer.ydisp - scrollBackSize, 0);\n // Force a scroll event to refresh viewport\n this._onScroll.fire(0);\n }\n break;\n }\n return true;\n }\n\n /**\n * CSI Ps K Erase in Line (EL).\n * Ps = 0 -> Erase to Right (default).\n * Ps = 1 -> Erase to Left.\n * Ps = 2 -> Erase All.\n * CSI ? Ps K\n * Erase in Line (DECSEL).\n * Ps = 0 -> Selective Erase to Right (default).\n * Ps = 1 -> Selective Erase to Left.\n * Ps = 2 -> Selective Erase All.\n *\n * @vt: #Y CSI EL \"Erase In Line\" \"CSI Ps K\" \"Erase various parts of the active row.\"\n * Supported param values:\n *\n * | Ps | Effect |\n * | -- | -------------------------------------------------------- |\n * | 0 | Erase from the cursor through the end of the row. |\n * | 1 | Erase from the beginning of the line through the cursor. |\n * | 2 | Erase complete line. |\n *\n * @vt: #P[Protection attributes are not supported.] CSI DECSEL \"Selective Erase In Line\" \"CSI ? Ps K\" \"Currently the same as EL.\"\n */\n public eraseInLine(params: IParams): boolean {\n this._restrictCursor(this._bufferService.cols);\n switch (params.params[0]) {\n case 0:\n this._eraseInBufferLine(this._activeBuffer.y, this._activeBuffer.x, this._bufferService.cols, this._activeBuffer.x === 0);\n break;\n case 1:\n this._eraseInBufferLine(this._activeBuffer.y, 0, this._activeBuffer.x + 1, false);\n break;\n case 2:\n this._eraseInBufferLine(this._activeBuffer.y, 0, this._bufferService.cols, true);\n break;\n }\n this._dirtyRowService.markDirty(this._activeBuffer.y);\n return true;\n }\n\n /**\n * CSI Ps L\n * Insert Ps Line(s) (default = 1) (IL).\n *\n * @vt: #Y CSI IL \"Insert Line\" \"CSI Ps L\" \"Insert `Ps` blank lines at active row (default=1).\"\n * For every inserted line at the scroll top one line at the scroll bottom gets removed.\n * The cursor is set to the first column.\n * IL has no effect if the cursor is outside the scroll margins.\n */\n public insertLines(params: IParams): boolean {\n this._restrictCursor();\n let param = params.params[0] || 1;\n\n if (this._activeBuffer.y > this._activeBuffer.scrollBottom || this._activeBuffer.y < this._activeBuffer.scrollTop) {\n return true;\n }\n\n const row: number = this._activeBuffer.ybase + this._activeBuffer.y;\n\n const scrollBottomRowsOffset = this._bufferService.rows - 1 - this._activeBuffer.scrollBottom;\n const scrollBottomAbsolute = this._bufferService.rows - 1 + this._activeBuffer.ybase - scrollBottomRowsOffset + 1;\n while (param--) {\n // test: echo -e '\\e[44m\\e[1L\\e[0m'\n // blankLine(true) - xterm/linux behavior\n this._activeBuffer.lines.splice(scrollBottomAbsolute - 1, 1);\n this._activeBuffer.lines.splice(row, 0, this._activeBuffer.getBlankLine(this._eraseAttrData()));\n }\n\n this._dirtyRowService.markRangeDirty(this._activeBuffer.y, this._activeBuffer.scrollBottom);\n this._activeBuffer.x = 0; // see https://vt100.net/docs/vt220-rm/chapter4.html - vt220 only?\n return true;\n }\n\n /**\n * CSI Ps M\n * Delete Ps Line(s) (default = 1) (DL).\n *\n * @vt: #Y CSI DL \"Delete Line\" \"CSI Ps M\" \"Delete `Ps` lines at active row (default=1).\"\n * For every deleted line at the scroll top one blank line at the scroll bottom gets appended.\n * The cursor is set to the first column.\n * DL has no effect if the cursor is outside the scroll margins.\n */\n public deleteLines(params: IParams): boolean {\n this._restrictCursor();\n let param = params.params[0] || 1;\n\n if (this._activeBuffer.y > this._activeBuffer.scrollBottom || this._activeBuffer.y < this._activeBuffer.scrollTop) {\n return true;\n }\n\n const row: number = this._activeBuffer.ybase + this._activeBuffer.y;\n\n let j: number;\n j = this._bufferService.rows - 1 - this._activeBuffer.scrollBottom;\n j = this._bufferService.rows - 1 + this._activeBuffer.ybase - j;\n while (param--) {\n // test: echo -e '\\e[44m\\e[1M\\e[0m'\n // blankLine(true) - xterm/linux behavior\n this._activeBuffer.lines.splice(row, 1);\n this._activeBuffer.lines.splice(j, 0, this._activeBuffer.getBlankLine(this._eraseAttrData()));\n }\n\n this._dirtyRowService.markRangeDirty(this._activeBuffer.y, this._activeBuffer.scrollBottom);\n this._activeBuffer.x = 0; // see https://vt100.net/docs/vt220-rm/chapter4.html - vt220 only?\n return true;\n }\n\n /**\n * CSI Ps @\n * Insert Ps (Blank) Character(s) (default = 1) (ICH).\n *\n * @vt: #Y CSI ICH \"Insert Characters\" \"CSI Ps @\" \"Insert `Ps` (blank) characters (default = 1).\"\n * The ICH sequence inserts `Ps` blank characters. The cursor remains at the beginning of the blank characters.\n * Text between the cursor and right margin moves to the right. Characters moved past the right margin are lost.\n *\n *\n * FIXME: check against xterm - should not work outside of scroll margins (see VT520 manual)\n */\n public insertChars(params: IParams): boolean {\n this._restrictCursor();\n const line = this._activeBuffer.lines.get(this._activeBuffer.ybase + this._activeBuffer.y);\n if (line) {\n line.insertCells(\n this._activeBuffer.x,\n params.params[0] || 1,\n this._activeBuffer.getNullCell(this._eraseAttrData()),\n this._eraseAttrData()\n );\n this._dirtyRowService.markDirty(this._activeBuffer.y);\n }\n return true;\n }\n\n /**\n * CSI Ps P\n * Delete Ps Character(s) (default = 1) (DCH).\n *\n * @vt: #Y CSI DCH \"Delete Character\" \"CSI Ps P\" \"Delete `Ps` characters (default=1).\"\n * As characters are deleted, the remaining characters between the cursor and right margin move to the left.\n * Character attributes move with the characters. The terminal adds blank characters at the right margin.\n *\n *\n * FIXME: check against xterm - should not work outside of scroll margins (see VT520 manual)\n */\n public deleteChars(params: IParams): boolean {\n this._restrictCursor();\n const line = this._activeBuffer.lines.get(this._activeBuffer.ybase + this._activeBuffer.y);\n if (line) {\n line.deleteCells(\n this._activeBuffer.x,\n params.params[0] || 1,\n this._activeBuffer.getNullCell(this._eraseAttrData()),\n this._eraseAttrData()\n );\n this._dirtyRowService.markDirty(this._activeBuffer.y);\n }\n return true;\n }\n\n /**\n * CSI Ps S Scroll up Ps lines (default = 1) (SU).\n *\n * @vt: #Y CSI SU \"Scroll Up\" \"CSI Ps S\" \"Scroll `Ps` lines up (default=1).\"\n *\n *\n * FIXME: scrolled out lines at top = 1 should add to scrollback (xterm)\n */\n public scrollUp(params: IParams): boolean {\n let param = params.params[0] || 1;\n\n while (param--) {\n this._activeBuffer.lines.splice(this._activeBuffer.ybase + this._activeBuffer.scrollTop, 1);\n this._activeBuffer.lines.splice(this._activeBuffer.ybase + this._activeBuffer.scrollBottom, 0, this._activeBuffer.getBlankLine(this._eraseAttrData()));\n }\n this._dirtyRowService.markRangeDirty(this._activeBuffer.scrollTop, this._activeBuffer.scrollBottom);\n return true;\n }\n\n /**\n * CSI Ps T Scroll down Ps lines (default = 1) (SD).\n *\n * @vt: #Y CSI SD \"Scroll Down\" \"CSI Ps T\" \"Scroll `Ps` lines down (default=1).\"\n */\n public scrollDown(params: IParams): boolean {\n let param = params.params[0] || 1;\n\n while (param--) {\n this._activeBuffer.lines.splice(this._activeBuffer.ybase + this._activeBuffer.scrollBottom, 1);\n this._activeBuffer.lines.splice(this._activeBuffer.ybase + this._activeBuffer.scrollTop, 0, this._activeBuffer.getBlankLine(DEFAULT_ATTR_DATA));\n }\n this._dirtyRowService.markRangeDirty(this._activeBuffer.scrollTop, this._activeBuffer.scrollBottom);\n return true;\n }\n\n /**\n * CSI Ps SP @ Scroll left Ps columns (default = 1) (SL) ECMA-48\n *\n * Notation: (Pn)\n * Representation: CSI Pn 02/00 04/00\n * Parameter default value: Pn = 1\n * SL causes the data in the presentation component to be moved by n character positions\n * if the line orientation is horizontal, or by n line positions if the line orientation\n * is vertical, such that the data appear to move to the left; where n equals the value of Pn.\n * The active presentation position is not affected by this control function.\n *\n * Supported:\n * - always left shift (no line orientation setting respected)\n *\n * @vt: #Y CSI SL \"Scroll Left\" \"CSI Ps SP @\" \"Scroll viewport `Ps` times to the left.\"\n * SL moves the content of all lines within the scroll margins `Ps` times to the left.\n * SL has no effect outside of the scroll margins.\n */\n public scrollLeft(params: IParams): boolean {\n if (this._activeBuffer.y > this._activeBuffer.scrollBottom || this._activeBuffer.y < this._activeBuffer.scrollTop) {\n return true;\n }\n const param = params.params[0] || 1;\n for (let y = this._activeBuffer.scrollTop; y <= this._activeBuffer.scrollBottom; ++y) {\n const line = this._activeBuffer.lines.get(this._activeBuffer.ybase + y)!;\n line.deleteCells(0, param, this._activeBuffer.getNullCell(this._eraseAttrData()), this._eraseAttrData());\n line.isWrapped = false;\n }\n this._dirtyRowService.markRangeDirty(this._activeBuffer.scrollTop, this._activeBuffer.scrollBottom);\n return true;\n }\n\n /**\n * CSI Ps SP A Scroll right Ps columns (default = 1) (SR) ECMA-48\n *\n * Notation: (Pn)\n * Representation: CSI Pn 02/00 04/01\n * Parameter default value: Pn = 1\n * SR causes the data in the presentation component to be moved by n character positions\n * if the line orientation is horizontal, or by n line positions if the line orientation\n * is vertical, such that the data appear to move to the right; where n equals the value of Pn.\n * The active presentation position is not affected by this control function.\n *\n * Supported:\n * - always right shift (no line orientation setting respected)\n *\n * @vt: #Y CSI SR \"Scroll Right\" \"CSI Ps SP A\" \"Scroll viewport `Ps` times to the right.\"\n * SL moves the content of all lines within the scroll margins `Ps` times to the right.\n * Content at the right margin is lost.\n * SL has no effect outside of the scroll margins.\n */\n public scrollRight(params: IParams): boolean {\n if (this._activeBuffer.y > this._activeBuffer.scrollBottom || this._activeBuffer.y < this._activeBuffer.scrollTop) {\n return true;\n }\n const param = params.params[0] || 1;\n for (let y = this._activeBuffer.scrollTop; y <= this._activeBuffer.scrollBottom; ++y) {\n const line = this._activeBuffer.lines.get(this._activeBuffer.ybase + y)!;\n line.insertCells(0, param, this._activeBuffer.getNullCell(this._eraseAttrData()), this._eraseAttrData());\n line.isWrapped = false;\n }\n this._dirtyRowService.markRangeDirty(this._activeBuffer.scrollTop, this._activeBuffer.scrollBottom);\n return true;\n }\n\n /**\n * CSI Pm ' }\n * Insert Ps Column(s) (default = 1) (DECIC), VT420 and up.\n *\n * @vt: #Y CSI DECIC \"Insert Columns\" \"CSI Ps ' }\" \"Insert `Ps` columns at cursor position.\"\n * DECIC inserts `Ps` times blank columns at the cursor position for all lines with the scroll margins,\n * moving content to the right. Content at the right margin is lost.\n * DECIC has no effect outside the scrolling margins.\n */\n public insertColumns(params: IParams): boolean {\n if (this._activeBuffer.y > this._activeBuffer.scrollBottom || this._activeBuffer.y < this._activeBuffer.scrollTop) {\n return true;\n }\n const param = params.params[0] || 1;\n for (let y = this._activeBuffer.scrollTop; y <= this._activeBuffer.scrollBottom; ++y) {\n const line = this._activeBuffer.lines.get(this._activeBuffer.ybase + y)!;\n line.insertCells(this._activeBuffer.x, param, this._activeBuffer.getNullCell(this._eraseAttrData()), this._eraseAttrData());\n line.isWrapped = false;\n }\n this._dirtyRowService.markRangeDirty(this._activeBuffer.scrollTop, this._activeBuffer.scrollBottom);\n return true;\n }\n\n /**\n * CSI Pm ' ~\n * Delete Ps Column(s) (default = 1) (DECDC), VT420 and up.\n *\n * @vt: #Y CSI DECDC \"Delete Columns\" \"CSI Ps ' ~\" \"Delete `Ps` columns at cursor position.\"\n * DECDC deletes `Ps` times columns at the cursor position for all lines with the scroll margins,\n * moving content to the left. Blank columns are added at the right margin.\n * DECDC has no effect outside the scrolling margins.\n */\n public deleteColumns(params: IParams): boolean {\n if (this._activeBuffer.y > this._activeBuffer.scrollBottom || this._activeBuffer.y < this._activeBuffer.scrollTop) {\n return true;\n }\n const param = params.params[0] || 1;\n for (let y = this._activeBuffer.scrollTop; y <= this._activeBuffer.scrollBottom; ++y) {\n const line = this._activeBuffer.lines.get(this._activeBuffer.ybase + y)!;\n line.deleteCells(this._activeBuffer.x, param, this._activeBuffer.getNullCell(this._eraseAttrData()), this._eraseAttrData());\n line.isWrapped = false;\n }\n this._dirtyRowService.markRangeDirty(this._activeBuffer.scrollTop, this._activeBuffer.scrollBottom);\n return true;\n }\n\n /**\n * CSI Ps X\n * Erase Ps Character(s) (default = 1) (ECH).\n *\n * @vt: #Y CSI ECH \"Erase Character\" \"CSI Ps X\" \"Erase `Ps` characters from current cursor position to the right (default=1).\"\n * ED erases `Ps` characters from current cursor position to the right.\n * ED works inside or outside the scrolling margins.\n */\n public eraseChars(params: IParams): boolean {\n this._restrictCursor();\n const line = this._activeBuffer.lines.get(this._activeBuffer.ybase + this._activeBuffer.y);\n if (line) {\n line.replaceCells(\n this._activeBuffer.x,\n this._activeBuffer.x + (params.params[0] || 1),\n this._activeBuffer.getNullCell(this._eraseAttrData()),\n this._eraseAttrData()\n );\n this._dirtyRowService.markDirty(this._activeBuffer.y);\n }\n return true;\n }\n\n /**\n * CSI Ps b Repeat the preceding graphic character Ps times (REP).\n * From ECMA 48 (@see http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-048.pdf)\n * Notation: (Pn)\n * Representation: CSI Pn 06/02\n * Parameter default value: Pn = 1\n * REP is used to indicate that the preceding character in the data stream,\n * if it is a graphic character (represented by one or more bit combinations) including SPACE,\n * is to be repeated n times, where n equals the value of Pn.\n * If the character preceding REP is a control function or part of a control function,\n * the effect of REP is not defined by this Standard.\n *\n * Since we propagate the terminal as xterm-256color we have to follow xterm's behavior:\n * - fullwidth + surrogate chars are ignored\n * - for combining chars only the base char gets repeated\n * - text attrs are applied normally\n * - wrap around is respected\n * - any valid sequence resets the carried forward char\n *\n * Note: To get reset on a valid sequence working correctly without much runtime penalty,\n * the preceding codepoint is stored on the parser in `this.print` and reset during `parser.parse`.\n *\n * @vt: #Y CSI REP \"Repeat Preceding Character\" \"CSI Ps b\" \"Repeat preceding character `Ps` times (default=1).\"\n * REP repeats the previous character `Ps` times advancing the cursor, also wrapping if DECAWM is set.\n * REP has no effect if the sequence does not follow a printable ASCII character\n * (NOOP for any other sequence in between or NON ASCII characters).\n */\n public repeatPrecedingCharacter(params: IParams): boolean {\n if (!this._parser.precedingCodepoint) {\n return true;\n }\n // call print to insert the chars and handle correct wrapping\n const length = params.params[0] || 1;\n const data = new Uint32Array(length);\n for (let i = 0; i < length; ++i) {\n data[i] = this._parser.precedingCodepoint;\n }\n this.print(data, 0, data.length);\n return true;\n }\n\n /**\n * CSI Ps c Send Device Attributes (Primary DA).\n * Ps = 0 or omitted -> request attributes from terminal. The\n * response depends on the decTerminalID resource setting.\n * -> CSI ? 1 ; 2 c (``VT100 with Advanced Video Option'')\n * -> CSI ? 1 ; 0 c (``VT101 with No Options'')\n * -> CSI ? 6 c (``VT102'')\n * -> CSI ? 6 0 ; 1 ; 2 ; 6 ; 8 ; 9 ; 1 5 ; c (``VT220'')\n * The VT100-style response parameters do not mean anything by\n * themselves. VT220 parameters do, telling the host what fea-\n * tures the terminal supports:\n * Ps = 1 -> 132-columns.\n * Ps = 2 -> Printer.\n * Ps = 6 -> Selective erase.\n * Ps = 8 -> User-defined keys.\n * Ps = 9 -> National replacement character sets.\n * Ps = 1 5 -> Technical characters.\n * Ps = 2 2 -> ANSI color, e.g., VT525.\n * Ps = 2 9 -> ANSI text locator (i.e., DEC Locator mode).\n *\n * @vt: #Y CSI DA1 \"Primary Device Attributes\" \"CSI c\" \"Send primary device attributes.\"\n *\n *\n * TODO: fix and cleanup response\n */\n public sendDeviceAttributesPrimary(params: IParams): boolean {\n if (params.params[0] > 0) {\n return true;\n }\n if (this._is('xterm') || this._is('rxvt-unicode') || this._is('screen')) {\n this._coreService.triggerDataEvent(C0.ESC + '[?1;2c');\n } else if (this._is('linux')) {\n this._coreService.triggerDataEvent(C0.ESC + '[?6c');\n }\n return true;\n }\n\n /**\n * CSI > Ps c\n * Send Device Attributes (Secondary DA).\n * Ps = 0 or omitted -> request the terminal's identification\n * code. The response depends on the decTerminalID resource set-\n * ting. It should apply only to VT220 and up, but xterm extends\n * this to VT100.\n * -> CSI > Pp ; Pv ; Pc c\n * where Pp denotes the terminal type\n * Pp = 0 -> ``VT100''.\n * Pp = 1 -> ``VT220''.\n * and Pv is the firmware version (for xterm, this was originally\n * the XFree86 patch number, starting with 95). In a DEC termi-\n * nal, Pc indicates the ROM cartridge registration number and is\n * always zero.\n * More information:\n * xterm/charproc.c - line 2012, for more information.\n * vim responds with ^[[?0c or ^[[?1c after the terminal's response (?)\n *\n * @vt: #Y CSI DA2 \"Secondary Device Attributes\" \"CSI > c\" \"Send primary device attributes.\"\n *\n *\n * TODO: fix and cleanup response\n */\n public sendDeviceAttributesSecondary(params: IParams): boolean {\n if (params.params[0] > 0) {\n return true;\n }\n // xterm and urxvt\n // seem to spit this\n // out around ~370 times (?).\n if (this._is('xterm')) {\n this._coreService.triggerDataEvent(C0.ESC + '[>0;276;0c');\n } else if (this._is('rxvt-unicode')) {\n this._coreService.triggerDataEvent(C0.ESC + '[>85;95;0c');\n } else if (this._is('linux')) {\n // not supported by linux console.\n // linux console echoes parameters.\n this._coreService.triggerDataEvent(params.params[0] + 'c');\n } else if (this._is('screen')) {\n this._coreService.triggerDataEvent(C0.ESC + '[>83;40003;0c');\n }\n return true;\n }\n\n /**\n * Evaluate if the current terminal is the given argument.\n * @param term The terminal name to evaluate\n */\n private _is(term: string): boolean {\n return (this._optionsService.rawOptions.termName + '').indexOf(term) === 0;\n }\n\n /**\n * CSI Pm h Set Mode (SM).\n * Ps = 2 -> Keyboard Action Mode (AM).\n * Ps = 4 -> Insert Mode (IRM).\n * Ps = 1 2 -> Send/receive (SRM).\n * Ps = 2 0 -> Automatic Newline (LNM).\n *\n * @vt: #P[Only IRM is supported.] CSI SM \"Set Mode\" \"CSI Pm h\" \"Set various terminal modes.\"\n * Supported param values by SM:\n *\n * | Param | Action | Support |\n * | ----- | -------------------------------------- | ------- |\n * | 2 | Keyboard Action Mode (KAM). Always on. | #N |\n * | 4 | Insert Mode (IRM). | #Y |\n * | 12 | Send/receive (SRM). Always off. | #N |\n * | 20 | Automatic Newline (LNM). Always off. | #N |\n */\n public setMode(params: IParams): boolean {\n for (let i = 0; i < params.length; i++) {\n switch (params.params[i]) {\n case 4:\n this._coreService.modes.insertMode = true;\n break;\n case 20:\n // this._t.convertEol = true;\n break;\n }\n }\n return true;\n }\n\n /**\n * CSI ? Pm h\n * DEC Private Mode Set (DECSET).\n * Ps = 1 -> Application Cursor Keys (DECCKM).\n * Ps = 2 -> Designate USASCII for character sets G0-G3\n * (DECANM), and set VT100 mode.\n * Ps = 3 -> 132 Column Mode (DECCOLM).\n * Ps = 4 -> Smooth (Slow) Scroll (DECSCLM).\n * Ps = 5 -> Reverse Video (DECSCNM).\n * Ps = 6 -> Origin Mode (DECOM).\n * Ps = 7 -> Wraparound Mode (DECAWM).\n * Ps = 8 -> Auto-repeat Keys (DECARM).\n * Ps = 9 -> Send Mouse X & Y on button press. See the sec-\n * tion Mouse Tracking.\n * Ps = 1 0 -> Show toolbar (rxvt).\n * Ps = 1 2 -> Start Blinking Cursor (att610).\n * Ps = 1 8 -> Print form feed (DECPFF).\n * Ps = 1 9 -> Set print extent to full screen (DECPEX).\n * Ps = 2 5 -> Show Cursor (DECTCEM).\n * Ps = 3 0 -> Show scrollbar (rxvt).\n * Ps = 3 5 -> Enable font-shifting functions (rxvt).\n * Ps = 3 8 -> Enter Tektronix Mode (DECTEK).\n * Ps = 4 0 -> Allow 80 -> 132 Mode.\n * Ps = 4 1 -> more(1) fix (see curses resource).\n * Ps = 4 2 -> Enable Nation Replacement Character sets (DECN-\n * RCM).\n * Ps = 4 4 -> Turn On Margin Bell.\n * Ps = 4 5 -> Reverse-wraparound Mode.\n * Ps = 4 6 -> Start Logging. This is normally disabled by a\n * compile-time option.\n * Ps = 4 7 -> Use Alternate Screen Buffer. (This may be dis-\n * abled by the titeInhibit resource).\n * Ps = 6 6 -> Application keypad (DECNKM).\n * Ps = 6 7 -> Backarrow key sends backspace (DECBKM).\n * Ps = 1 0 0 0 -> Send Mouse X & Y on button press and\n * release. See the section Mouse Tracking.\n * Ps = 1 0 0 1 -> Use Hilite Mouse Tracking.\n * Ps = 1 0 0 2 -> Use Cell Motion Mouse Tracking.\n * Ps = 1 0 0 3 -> Use All Motion Mouse Tracking.\n * Ps = 1 0 0 4 -> Send FocusIn/FocusOut events.\n * Ps = 1 0 0 5 -> Enable Extended Mouse Mode.\n * Ps = 1 0 1 0 -> Scroll to bottom on tty output (rxvt).\n * Ps = 1 0 1 1 -> Scroll to bottom on key press (rxvt).\n * Ps = 1 0 3 4 -> Interpret \"meta\" key, sets eighth bit.\n * (enables the eightBitInput resource).\n * Ps = 1 0 3 5 -> Enable special modifiers for Alt and Num-\n * Lock keys. (This enables the numLock resource).\n * Ps = 1 0 3 6 -> Send ESC when Meta modifies a key. (This\n * enables the metaSendsEscape resource).\n * Ps = 1 0 3 7 -> Send DEL from the editing-keypad Delete\n * key.\n * Ps = 1 0 3 9 -> Send ESC when Alt modifies a key. (This\n * enables the altSendsEscape resource).\n * Ps = 1 0 4 0 -> Keep selection even if not highlighted.\n * (This enables the keepSelection resource).\n * Ps = 1 0 4 1 -> Use the CLIPBOARD selection. (This enables\n * the selectToClipboard resource).\n * Ps = 1 0 4 2 -> Enable Urgency window manager hint when\n * Control-G is received. (This enables the bellIsUrgent\n * resource).\n * Ps = 1 0 4 3 -> Enable raising of the window when Control-G\n * is received. (enables the popOnBell resource).\n * Ps = 1 0 4 7 -> Use Alternate Screen Buffer. (This may be\n * disabled by the titeInhibit resource).\n * Ps = 1 0 4 8 -> Save cursor as in DECSC. (This may be dis-\n * abled by the titeInhibit resource).\n * Ps = 1 0 4 9 -> Save cursor as in DECSC and use Alternate\n * Screen Buffer, clearing it first. (This may be disabled by\n * the titeInhibit resource). This combines the effects of the 1\n * 0 4 7 and 1 0 4 8 modes. Use this with terminfo-based\n * applications rather than the 4 7 mode.\n * Ps = 1 0 5 0 -> Set terminfo/termcap function-key mode.\n * Ps = 1 0 5 1 -> Set Sun function-key mode.\n * Ps = 1 0 5 2 -> Set HP function-key mode.\n * Ps = 1 0 5 3 -> Set SCO function-key mode.\n * Ps = 1 0 6 0 -> Set legacy keyboard emulation (X11R6).\n * Ps = 1 0 6 1 -> Set VT220 keyboard emulation.\n * Ps = 2 0 0 4 -> Set bracketed paste mode.\n * Modes:\n * http: *vt100.net/docs/vt220-rm/chapter4.html\n *\n * @vt: #P[See below for supported modes.] CSI DECSET \"DEC Private Set Mode\" \"CSI ? Pm h\" \"Set various terminal attributes.\"\n * Supported param values by DECSET:\n *\n * | param | Action | Support |\n * | ----- | ------------------------------------------------------- | --------|\n * | 1 | Application Cursor Keys (DECCKM). | #Y |\n * | 2 | Designate US-ASCII for character sets G0-G3 (DECANM). | #Y |\n * | 3 | 132 Column Mode (DECCOLM). | #Y |\n * | 6 | Origin Mode (DECOM). | #Y |\n * | 7 | Auto-wrap Mode (DECAWM). | #Y |\n * | 8 | Auto-repeat Keys (DECARM). Always on. | #N |\n * | 9 | X10 xterm mouse protocol. | #Y |\n * | 12 | Start Blinking Cursor. | #Y |\n * | 25 | Show Cursor (DECTCEM). | #Y |\n * | 45 | Reverse wrap-around. | #Y |\n * | 47 | Use Alternate Screen Buffer. | #Y |\n * | 66 | Application keypad (DECNKM). | #Y |\n * | 1000 | X11 xterm mouse protocol. | #Y |\n * | 1002 | Use Cell Motion Mouse Tracking. | #Y |\n * | 1003 | Use All Motion Mouse Tracking. | #Y |\n * | 1004 | Send FocusIn/FocusOut events | #Y |\n * | 1005 | Enable UTF-8 Mouse Mode. | #N |\n * | 1006 | Enable SGR Mouse Mode. | #Y |\n * | 1015 | Enable urxvt Mouse Mode. | #N |\n * | 1047 | Use Alternate Screen Buffer. | #Y |\n * | 1048 | Save cursor as in DECSC. | #Y |\n * | 1049 | Save cursor and switch to alternate buffer clearing it. | #P[Does not clear the alternate buffer.] |\n * | 2004 | Set bracketed paste mode. | #Y |\n *\n *\n * FIXME: implement DECSCNM, 1049 should clear altbuffer\n */\n public setModePrivate(params: IParams): boolean {\n for (let i = 0; i < params.length; i++) {\n switch (params.params[i]) {\n case 1:\n this._coreService.decPrivateModes.applicationCursorKeys = true;\n break;\n case 2:\n this._charsetService.setgCharset(0, DEFAULT_CHARSET);\n this._charsetService.setgCharset(1, DEFAULT_CHARSET);\n this._charsetService.setgCharset(2, DEFAULT_CHARSET);\n this._charsetService.setgCharset(3, DEFAULT_CHARSET);\n // set VT100 mode here\n break;\n case 3:\n /**\n * DECCOLM - 132 column mode.\n * This is only active if 'SetWinLines' (24) is enabled\n * through `options.windowsOptions`.\n */\n if (this._optionsService.rawOptions.windowOptions.setWinLines) {\n this._bufferService.resize(132, this._bufferService.rows);\n this._onRequestReset.fire();\n }\n break;\n case 6:\n this._coreService.decPrivateModes.origin = true;\n this._setCursor(0, 0);\n break;\n case 7:\n this._coreService.decPrivateModes.wraparound = true;\n break;\n case 12:\n // this.cursorBlink = true;\n break;\n case 45:\n this._coreService.decPrivateModes.reverseWraparound = true;\n break;\n case 66:\n this._logService.debug('Serial port requested application keypad.');\n this._coreService.decPrivateModes.applicationKeypad = true;\n this._onRequestSyncScrollBar.fire();\n break;\n case 9: // X10 Mouse\n // no release, no motion, no wheel, no modifiers.\n this._coreMouseService.activeProtocol = 'X10';\n break;\n case 1000: // vt200 mouse\n // no motion.\n this._coreMouseService.activeProtocol = 'VT200';\n break;\n case 1002: // button event mouse\n this._coreMouseService.activeProtocol = 'DRAG';\n break;\n case 1003: // any event mouse\n // any event - sends motion events,\n // even if there is no button held down.\n this._coreMouseService.activeProtocol = 'ANY';\n break;\n case 1004: // send focusin/focusout events\n // focusin: ^[[I\n // focusout: ^[[O\n this._coreService.decPrivateModes.sendFocus = true;\n this._onRequestSendFocus.fire();\n break;\n case 1005: // utf8 ext mode mouse - removed in #2507\n this._logService.debug('DECSET 1005 not supported (see #2507)');\n break;\n case 1006: // sgr ext mode mouse\n this._coreMouseService.activeEncoding = 'SGR';\n break;\n case 1015: // urxvt ext mode mouse - removed in #2507\n this._logService.debug('DECSET 1015 not supported (see #2507)');\n break;\n case 25: // show cursor\n this._coreService.isCursorHidden = false;\n break;\n case 1048: // alt screen cursor\n this.saveCursor();\n break;\n case 1049: // alt screen buffer cursor\n this.saveCursor();\n // FALL-THROUGH\n case 47: // alt screen buffer\n case 1047: // alt screen buffer\n this._bufferService.buffers.activateAltBuffer(this._eraseAttrData());\n this._coreService.isCursorInitialized = true;\n this._onRequestRefreshRows.fire(0, this._bufferService.rows - 1);\n this._onRequestSyncScrollBar.fire();\n break;\n case 2004: // bracketed paste mode (https://cirw.in/blog/bracketed-paste)\n this._coreService.decPrivateModes.bracketedPasteMode = true;\n break;\n }\n }\n return true;\n }\n\n\n /**\n * CSI Pm l Reset Mode (RM).\n * Ps = 2 -> Keyboard Action Mode (AM).\n * Ps = 4 -> Replace Mode (IRM).\n * Ps = 1 2 -> Send/receive (SRM).\n * Ps = 2 0 -> Normal Linefeed (LNM).\n *\n * @vt: #P[Only IRM is supported.] CSI RM \"Reset Mode\" \"CSI Pm l\" \"Set various terminal attributes.\"\n * Supported param values by RM:\n *\n * | Param | Action | Support |\n * | ----- | -------------------------------------- | ------- |\n * | 2 | Keyboard Action Mode (KAM). Always on. | #N |\n * | 4 | Replace Mode (IRM). (default) | #Y |\n * | 12 | Send/receive (SRM). Always off. | #N |\n * | 20 | Normal Linefeed (LNM). Always off. | #N |\n *\n *\n * FIXME: why is LNM commented out?\n */\n public resetMode(params: IParams): boolean {\n for (let i = 0; i < params.length; i++) {\n switch (params.params[i]) {\n case 4:\n this._coreService.modes.insertMode = false;\n break;\n case 20:\n // this._t.convertEol = false;\n break;\n }\n }\n return true;\n }\n\n /**\n * CSI ? Pm l\n * DEC Private Mode Reset (DECRST).\n * Ps = 1 -> Normal Cursor Keys (DECCKM).\n * Ps = 2 -> Designate VT52 mode (DECANM).\n * Ps = 3 -> 80 Column Mode (DECCOLM).\n * Ps = 4 -> Jump (Fast) Scroll (DECSCLM).\n * Ps = 5 -> Normal Video (DECSCNM).\n * Ps = 6 -> Normal Cursor Mode (DECOM).\n * Ps = 7 -> No Wraparound Mode (DECAWM).\n * Ps = 8 -> No Auto-repeat Keys (DECARM).\n * Ps = 9 -> Don't send Mouse X & Y on button press.\n * Ps = 1 0 -> Hide toolbar (rxvt).\n * Ps = 1 2 -> Stop Blinking Cursor (att610).\n * Ps = 1 8 -> Don't print form feed (DECPFF).\n * Ps = 1 9 -> Limit print to scrolling region (DECPEX).\n * Ps = 2 5 -> Hide Cursor (DECTCEM).\n * Ps = 3 0 -> Don't show scrollbar (rxvt).\n * Ps = 3 5 -> Disable font-shifting functions (rxvt).\n * Ps = 4 0 -> Disallow 80 -> 132 Mode.\n * Ps = 4 1 -> No more(1) fix (see curses resource).\n * Ps = 4 2 -> Disable Nation Replacement Character sets (DEC-\n * NRCM).\n * Ps = 4 4 -> Turn Off Margin Bell.\n * Ps = 4 5 -> No Reverse-wraparound Mode.\n * Ps = 4 6 -> Stop Logging. (This is normally disabled by a\n * compile-time option).\n * Ps = 4 7 -> Use Normal Screen Buffer.\n * Ps = 6 6 -> Numeric keypad (DECNKM).\n * Ps = 6 7 -> Backarrow key sends delete (DECBKM).\n * Ps = 1 0 0 0 -> Don't send Mouse X & Y on button press and\n * release. See the section Mouse Tracking.\n * Ps = 1 0 0 1 -> Don't use Hilite Mouse Tracking.\n * Ps = 1 0 0 2 -> Don't use Cell Motion Mouse Tracking.\n * Ps = 1 0 0 3 -> Don't use All Motion Mouse Tracking.\n * Ps = 1 0 0 4 -> Don't send FocusIn/FocusOut events.\n * Ps = 1 0 0 5 -> Disable Extended Mouse Mode.\n * Ps = 1 0 1 0 -> Don't scroll to bottom on tty output\n * (rxvt).\n * Ps = 1 0 1 1 -> Don't scroll to bottom on key press (rxvt).\n * Ps = 1 0 3 4 -> Don't interpret \"meta\" key. (This disables\n * the eightBitInput resource).\n * Ps = 1 0 3 5 -> Disable special modifiers for Alt and Num-\n * Lock keys. (This disables the numLock resource).\n * Ps = 1 0 3 6 -> Don't send ESC when Meta modifies a key.\n * (This disables the metaSendsEscape resource).\n * Ps = 1 0 3 7 -> Send VT220 Remove from the editing-keypad\n * Delete key.\n * Ps = 1 0 3 9 -> Don't send ESC when Alt modifies a key.\n * (This disables the altSendsEscape resource).\n * Ps = 1 0 4 0 -> Do not keep selection when not highlighted.\n * (This disables the keepSelection resource).\n * Ps = 1 0 4 1 -> Use the PRIMARY selection. (This disables\n * the selectToClipboard resource).\n * Ps = 1 0 4 2 -> Disable Urgency window manager hint when\n * Control-G is received. (This disables the bellIsUrgent\n * resource).\n * Ps = 1 0 4 3 -> Disable raising of the window when Control-\n * G is received. (This disables the popOnBell resource).\n * Ps = 1 0 4 7 -> Use Normal Screen Buffer, clearing screen\n * first if in the Alternate Screen. (This may be disabled by\n * the titeInhibit resource).\n * Ps = 1 0 4 8 -> Restore cursor as in DECRC. (This may be\n * disabled by the titeInhibit resource).\n * Ps = 1 0 4 9 -> Use Normal Screen Buffer and restore cursor\n * as in DECRC. (This may be disabled by the titeInhibit\n * resource). This combines the effects of the 1 0 4 7 and 1 0\n * 4 8 modes. Use this with terminfo-based applications rather\n * than the 4 7 mode.\n * Ps = 1 0 5 0 -> Reset terminfo/termcap function-key mode.\n * Ps = 1 0 5 1 -> Reset Sun function-key mode.\n * Ps = 1 0 5 2 -> Reset HP function-key mode.\n * Ps = 1 0 5 3 -> Reset SCO function-key mode.\n * Ps = 1 0 6 0 -> Reset legacy keyboard emulation (X11R6).\n * Ps = 1 0 6 1 -> Reset keyboard emulation to Sun/PC style.\n * Ps = 2 0 0 4 -> Reset bracketed paste mode.\n *\n * @vt: #P[See below for supported modes.] CSI DECRST \"DEC Private Reset Mode\" \"CSI ? Pm l\" \"Reset various terminal attributes.\"\n * Supported param values by DECRST:\n *\n * | param | Action | Support |\n * | ----- | ------------------------------------------------------- | ------- |\n * | 1 | Normal Cursor Keys (DECCKM). | #Y |\n * | 2 | Designate VT52 mode (DECANM). | #N |\n * | 3 | 80 Column Mode (DECCOLM). | #B[Switches to old column width instead of 80.] |\n * | 6 | Normal Cursor Mode (DECOM). | #Y |\n * | 7 | No Wraparound Mode (DECAWM). | #Y |\n * | 8 | No Auto-repeat Keys (DECARM). | #N |\n * | 9 | Don't send Mouse X & Y on button press. | #Y |\n * | 12 | Stop Blinking Cursor. | #Y |\n * | 25 | Hide Cursor (DECTCEM). | #Y |\n * | 45 | No reverse wrap-around. | #Y |\n * | 47 | Use Normal Screen Buffer. | #Y |\n * | 66 | Numeric keypad (DECNKM). | #Y |\n * | 1000 | Don't send Mouse reports. | #Y |\n * | 1002 | Don't use Cell Motion Mouse Tracking. | #Y |\n * | 1003 | Don't use All Motion Mouse Tracking. | #Y |\n * | 1004 | Don't send FocusIn/FocusOut events. | #Y |\n * | 1005 | Disable UTF-8 Mouse Mode. | #N |\n * | 1006 | Disable SGR Mouse Mode. | #Y |\n * | 1015 | Disable urxvt Mouse Mode. | #N |\n * | 1047 | Use Normal Screen Buffer (clearing screen if in alt). | #Y |\n * | 1048 | Restore cursor as in DECRC. | #Y |\n * | 1049 | Use Normal Screen Buffer and restore cursor. | #Y |\n * | 2004 | Reset bracketed paste mode. | #Y |\n *\n *\n * FIXME: DECCOLM is currently broken (already fixed in window options PR)\n */\n public resetModePrivate(params: IParams): boolean {\n for (let i = 0; i < params.length; i++) {\n switch (params.params[i]) {\n case 1:\n this._coreService.decPrivateModes.applicationCursorKeys = false;\n break;\n case 3:\n /**\n * DECCOLM - 80 column mode.\n * This is only active if 'SetWinLines' (24) is enabled\n * through `options.windowsOptions`.\n */\n if (this._optionsService.rawOptions.windowOptions.setWinLines) {\n this._bufferService.resize(80, this._bufferService.rows);\n this._onRequestReset.fire();\n }\n break;\n case 6:\n this._coreService.decPrivateModes.origin = false;\n this._setCursor(0, 0);\n break;\n case 7:\n this._coreService.decPrivateModes.wraparound = false;\n break;\n case 12:\n // this.cursorBlink = false;\n break;\n case 45:\n this._coreService.decPrivateModes.reverseWraparound = false;\n break;\n case 66:\n this._logService.debug('Switching back to normal keypad.');\n this._coreService.decPrivateModes.applicationKeypad = false;\n this._onRequestSyncScrollBar.fire();\n break;\n case 9: // X10 Mouse\n case 1000: // vt200 mouse\n case 1002: // button event mouse\n case 1003: // any event mouse\n this._coreMouseService.activeProtocol = 'NONE';\n break;\n case 1004: // send focusin/focusout events\n this._coreService.decPrivateModes.sendFocus = false;\n break;\n case 1005: // utf8 ext mode mouse - removed in #2507\n this._logService.debug('DECRST 1005 not supported (see #2507)');\n break;\n case 1006: // sgr ext mode mouse\n this._coreMouseService.activeEncoding = 'DEFAULT';\n break;\n case 1015: // urxvt ext mode mouse - removed in #2507\n this._logService.debug('DECRST 1015 not supported (see #2507)');\n break;\n case 25: // hide cursor\n this._coreService.isCursorHidden = true;\n break;\n case 1048: // alt screen cursor\n this.restoreCursor();\n break;\n case 1049: // alt screen buffer cursor\n // FALL-THROUGH\n case 47: // normal screen buffer\n case 1047: // normal screen buffer - clearing it first\n // Ensure the selection manager has the correct buffer\n this._bufferService.buffers.activateNormalBuffer();\n if (params.params[i] === 1049) {\n this.restoreCursor();\n }\n this._coreService.isCursorInitialized = true;\n this._onRequestRefreshRows.fire(0, this._bufferService.rows - 1);\n this._onRequestSyncScrollBar.fire();\n break;\n case 2004: // bracketed paste mode (https://cirw.in/blog/bracketed-paste)\n this._coreService.decPrivateModes.bracketedPasteMode = false;\n break;\n }\n }\n return true;\n }\n\n /**\n * Helper to write color information packed with color mode.\n */\n private _updateAttrColor(color: number, mode: number, c1: number, c2: number, c3: number): number {\n if (mode === 2) {\n color |= Attributes.CM_RGB;\n color &= ~Attributes.RGB_MASK;\n color |= AttributeData.fromColorRGB([c1, c2, c3]);\n } else if (mode === 5) {\n color &= ~(Attributes.CM_MASK | Attributes.PCOLOR_MASK);\n color |= Attributes.CM_P256 | (c1 & 0xff);\n }\n return color;\n }\n\n /**\n * Helper to extract and apply color params/subparams.\n * Returns advance for params index.\n */\n private _extractColor(params: IParams, pos: number, attr: IAttributeData): number {\n // normalize params\n // meaning: [target, CM, ign, val, val, val]\n // RGB : [ 38/48, 2, ign, r, g, b]\n // P256 : [ 38/48, 5, ign, v, ign, ign]\n const accu = [0, 0, -1, 0, 0, 0];\n\n // alignment placeholder for non color space sequences\n let cSpace = 0;\n\n // return advance we took in params\n let advance = 0;\n\n do {\n accu[advance + cSpace] = params.params[pos + advance];\n if (params.hasSubParams(pos + advance)) {\n const subparams = params.getSubParams(pos + advance)!;\n let i = 0;\n do {\n if (accu[1] === 5) {\n cSpace = 1;\n }\n accu[advance + i + 1 + cSpace] = subparams[i];\n } while (++i < subparams.length && i + advance + 1 + cSpace < accu.length);\n break;\n }\n // exit early if can decide color mode with semicolons\n if ((accu[1] === 5 && advance + cSpace >= 2)\n || (accu[1] === 2 && advance + cSpace >= 5)) {\n break;\n }\n // offset colorSpace slot for semicolon mode\n if (accu[1]) {\n cSpace = 1;\n }\n } while (++advance + pos < params.length && advance + cSpace < accu.length);\n\n // set default values to 0\n for (let i = 2; i < accu.length; ++i) {\n if (accu[i] === -1) {\n accu[i] = 0;\n }\n }\n\n // apply colors\n switch (accu[0]) {\n case 38:\n attr.fg = this._updateAttrColor(attr.fg, accu[1], accu[3], accu[4], accu[5]);\n break;\n case 48:\n attr.bg = this._updateAttrColor(attr.bg, accu[1], accu[3], accu[4], accu[5]);\n break;\n case 58:\n attr.extended = attr.extended.clone();\n attr.extended.underlineColor = this._updateAttrColor(attr.extended.underlineColor, accu[1], accu[3], accu[4], accu[5]);\n }\n\n return advance;\n }\n\n /**\n * SGR 4 subparams:\n * 4:0 - equal to SGR 24 (turn off all underline)\n * 4:1 - equal to SGR 4 (single underline)\n * 4:2 - equal to SGR 21 (double underline)\n * 4:3 - curly underline\n * 4:4 - dotted underline\n * 4:5 - dashed underline\n */\n private _processUnderline(style: number, attr: IAttributeData): void {\n // treat extended attrs as immutable, thus always clone from old one\n // this is needed since the buffer only holds references to it\n attr.extended = attr.extended.clone();\n\n // default to 1 == single underline\n if (!~style || style > 5) {\n style = 1;\n }\n attr.extended.underlineStyle = style;\n attr.fg |= FgFlags.UNDERLINE;\n\n // 0 deactivates underline\n if (style === 0) {\n attr.fg &= ~FgFlags.UNDERLINE;\n }\n\n // update HAS_EXTENDED in BG\n attr.updateExtended();\n }\n\n /**\n * CSI Pm m Character Attributes (SGR).\n *\n * @vt: #P[See below for supported attributes.] CSI SGR \"Select Graphic Rendition\" \"CSI Pm m\" \"Set/Reset various text attributes.\"\n * SGR selects one or more character attributes at the same time. Multiple params (up to 32)\n * are applied in order from left to right. The changed attributes are applied to all new\n * characters received. If you move characters in the viewport by scrolling or any other means,\n * then the attributes move with the characters.\n *\n * Supported param values by SGR:\n *\n * | Param | Meaning | Support |\n * | --------- | -------------------------------------------------------- | ------- |\n * | 0 | Normal (default). Resets any other preceding SGR. | #Y |\n * | 1 | Bold. (also see `options.drawBoldTextInBrightColors`) | #Y |\n * | 2 | Faint, decreased intensity. | #Y |\n * | 3 | Italic. | #Y |\n * | 4 | Underlined (see below for style support). | #Y |\n * | 5 | Slowly blinking. | #N |\n * | 6 | Rapidly blinking. | #N |\n * | 7 | Inverse. Flips foreground and background color. | #Y |\n * | 8 | Invisible (hidden). | #Y |\n * | 9 | Crossed-out characters (strikethrough). | #Y |\n * | 21 | Doubly underlined. | #P[Currently outputs a single underline.] |\n * | 22 | Normal (neither bold nor faint). | #Y |\n * | 23 | No italic. | #Y |\n * | 24 | Not underlined. | #Y |\n * | 25 | Steady (not blinking). | #Y |\n * | 27 | Positive (not inverse). | #Y |\n * | 28 | Visible (not hidden). | #Y |\n * | 29 | Not Crossed-out (strikethrough). | #Y |\n * | 30 | Foreground color: Black. | #Y |\n * | 31 | Foreground color: Red. | #Y |\n * | 32 | Foreground color: Green. | #Y |\n * | 33 | Foreground color: Yellow. | #Y |\n * | 34 | Foreground color: Blue. | #Y |\n * | 35 | Foreground color: Magenta. | #Y |\n * | 36 | Foreground color: Cyan. | #Y |\n * | 37 | Foreground color: White. | #Y |\n * | 38 | Foreground color: Extended color. | #P[Support for RGB and indexed colors, see below.] |\n * | 39 | Foreground color: Default (original). | #Y |\n * | 40 | Background color: Black. | #Y |\n * | 41 | Background color: Red. | #Y |\n * | 42 | Background color: Green. | #Y |\n * | 43 | Background color: Yellow. | #Y |\n * | 44 | Background color: Blue. | #Y |\n * | 45 | Background color: Magenta. | #Y |\n * | 46 | Background color: Cyan. | #Y |\n * | 47 | Background color: White. | #Y |\n * | 48 | Background color: Extended color. | #P[Support for RGB and indexed colors, see below.] |\n * | 49 | Background color: Default (original). | #Y |\n * | 90 - 97 | Bright foreground color (analogous to 30 - 37). | #Y |\n * | 100 - 107 | Bright background color (analogous to 40 - 47). | #Y |\n *\n * Underline supports subparams to denote the style in the form `4 : x`:\n *\n * | x | Meaning | Support |\n * | ------ | ------------------------------------------------------------- | ------- |\n * | 0 | No underline. Same as `SGR 24 m`. | #Y |\n * | 1 | Single underline. Same as `SGR 4 m`. | #Y |\n * | 2 | Double underline. | #P[Currently outputs a single underline.] |\n * | 3 | Curly underline. | #P[Currently outputs a single underline.] |\n * | 4 | Dotted underline. | #P[Currently outputs a single underline.] |\n * | 5 | Dashed underline. | #P[Currently outputs a single underline.] |\n * | other | Single underline. Same as `SGR 4 m`. | #Y |\n *\n * Extended colors are supported for foreground (Ps=38) and background (Ps=48) as follows:\n *\n * | Ps + 1 | Meaning | Support |\n * | ------ | ------------------------------------------------------------- | ------- |\n * | 0 | Implementation defined. | #N |\n * | 1 | Transparent. | #N |\n * | 2 | RGB color as `Ps ; 2 ; R ; G ; B` or `Ps : 2 : : R : G : B`. | #Y |\n * | 3 | CMY color. | #N |\n * | 4 | CMYK color. | #N |\n * | 5 | Indexed (256 colors) as `Ps ; 5 ; INDEX` or `Ps : 5 : INDEX`. | #Y |\n *\n *\n * FIXME: blinking is implemented in attrs, but not working in renderers?\n * FIXME: remove dead branch for p=100\n */\n public charAttributes(params: IParams): boolean {\n // Optimize a single SGR0.\n if (params.length === 1 && params.params[0] === 0) {\n this._curAttrData.fg = DEFAULT_ATTR_DATA.fg;\n this._curAttrData.bg = DEFAULT_ATTR_DATA.bg;\n return true;\n }\n\n const l = params.length;\n let p;\n const attr = this._curAttrData;\n\n for (let i = 0; i < l; i++) {\n p = params.params[i];\n if (p >= 30 && p <= 37) {\n // fg color 8\n attr.fg &= ~(Attributes.CM_MASK | Attributes.PCOLOR_MASK);\n attr.fg |= Attributes.CM_P16 | (p - 30);\n } else if (p >= 40 && p <= 47) {\n // bg color 8\n attr.bg &= ~(Attributes.CM_MASK | Attributes.PCOLOR_MASK);\n attr.bg |= Attributes.CM_P16 | (p - 40);\n } else if (p >= 90 && p <= 97) {\n // fg color 16\n attr.fg &= ~(Attributes.CM_MASK | Attributes.PCOLOR_MASK);\n attr.fg |= Attributes.CM_P16 | (p - 90) | 8;\n } else if (p >= 100 && p <= 107) {\n // bg color 16\n attr.bg &= ~(Attributes.CM_MASK | Attributes.PCOLOR_MASK);\n attr.bg |= Attributes.CM_P16 | (p - 100) | 8;\n } else if (p === 0) {\n // default\n attr.fg = DEFAULT_ATTR_DATA.fg;\n attr.bg = DEFAULT_ATTR_DATA.bg;\n } else if (p === 1) {\n // bold text\n attr.fg |= FgFlags.BOLD;\n } else if (p === 3) {\n // italic text\n attr.bg |= BgFlags.ITALIC;\n } else if (p === 4) {\n // underlined text\n attr.fg |= FgFlags.UNDERLINE;\n this._processUnderline(params.hasSubParams(i) ? params.getSubParams(i)![0] : UnderlineStyle.SINGLE, attr);\n } else if (p === 5) {\n // blink\n attr.fg |= FgFlags.BLINK;\n } else if (p === 7) {\n // inverse and positive\n // test with: echo -e '\\e[31m\\e[42mhello\\e[7mworld\\e[27mhi\\e[m'\n attr.fg |= FgFlags.INVERSE;\n } else if (p === 8) {\n // invisible\n attr.fg |= FgFlags.INVISIBLE;\n } else if (p === 9) {\n // strikethrough\n attr.fg |= FgFlags.STRIKETHROUGH;\n } else if (p === 2) {\n // dimmed text\n attr.bg |= BgFlags.DIM;\n } else if (p === 21) {\n // double underline\n this._processUnderline(UnderlineStyle.DOUBLE, attr);\n } else if (p === 22) {\n // not bold nor faint\n attr.fg &= ~FgFlags.BOLD;\n attr.bg &= ~BgFlags.DIM;\n } else if (p === 23) {\n // not italic\n attr.bg &= ~BgFlags.ITALIC;\n } else if (p === 24) {\n // not underlined\n attr.fg &= ~FgFlags.UNDERLINE;\n } else if (p === 25) {\n // not blink\n attr.fg &= ~FgFlags.BLINK;\n } else if (p === 27) {\n // not inverse\n attr.fg &= ~FgFlags.INVERSE;\n } else if (p === 28) {\n // not invisible\n attr.fg &= ~FgFlags.INVISIBLE;\n } else if (p === 29) {\n // not strikethrough\n attr.fg &= ~FgFlags.STRIKETHROUGH;\n } else if (p === 39) {\n // reset fg\n attr.fg &= ~(Attributes.CM_MASK | Attributes.RGB_MASK);\n attr.fg |= DEFAULT_ATTR_DATA.fg & (Attributes.PCOLOR_MASK | Attributes.RGB_MASK);\n } else if (p === 49) {\n // reset bg\n attr.bg &= ~(Attributes.CM_MASK | Attributes.RGB_MASK);\n attr.bg |= DEFAULT_ATTR_DATA.bg & (Attributes.PCOLOR_MASK | Attributes.RGB_MASK);\n } else if (p === 38 || p === 48 || p === 58) {\n // fg color 256 and RGB\n i += this._extractColor(params, i, attr);\n } else if (p === 59) {\n attr.extended = attr.extended.clone();\n attr.extended.underlineColor = -1;\n attr.updateExtended();\n } else if (p === 100) { // FIXME: dead branch, p=100 already handled above!\n // reset fg/bg\n attr.fg &= ~(Attributes.CM_MASK | Attributes.RGB_MASK);\n attr.fg |= DEFAULT_ATTR_DATA.fg & (Attributes.PCOLOR_MASK | Attributes.RGB_MASK);\n attr.bg &= ~(Attributes.CM_MASK | Attributes.RGB_MASK);\n attr.bg |= DEFAULT_ATTR_DATA.bg & (Attributes.PCOLOR_MASK | Attributes.RGB_MASK);\n } else {\n this._logService.debug('Unknown SGR attribute: %d.', p);\n }\n }\n return true;\n }\n\n /**\n * CSI Ps n Device Status Report (DSR).\n * Ps = 5 -> Status Report. Result (``OK'') is\n * CSI 0 n\n * Ps = 6 -> Report Cursor Position (CPR) [row;column].\n * Result is\n * CSI r ; c R\n * CSI ? Ps n\n * Device Status Report (DSR, DEC-specific).\n * Ps = 6 -> Report Cursor Position (CPR) [row;column] as CSI\n * ? r ; c R (assumes page is zero).\n * Ps = 1 5 -> Report Printer status as CSI ? 1 0 n (ready).\n * or CSI ? 1 1 n (not ready).\n * Ps = 2 5 -> Report UDK status as CSI ? 2 0 n (unlocked)\n * or CSI ? 2 1 n (locked).\n * Ps = 2 6 -> Report Keyboard status as\n * CSI ? 2 7 ; 1 ; 0 ; 0 n (North American).\n * The last two parameters apply to VT400 & up, and denote key-\n * board ready and LK01 respectively.\n * Ps = 5 3 -> Report Locator status as\n * CSI ? 5 3 n Locator available, if compiled-in, or\n * CSI ? 5 0 n No Locator, if not.\n *\n * @vt: #Y CSI DSR \"Device Status Report\" \"CSI Ps n\" \"Request cursor position (CPR) with `Ps` = 6.\"\n */\n public deviceStatus(params: IParams): boolean {\n switch (params.params[0]) {\n case 5:\n // status report\n this._coreService.triggerDataEvent(`${C0.ESC}[0n`);\n break;\n case 6:\n // cursor position\n const y = this._activeBuffer.y + 1;\n const x = this._activeBuffer.x + 1;\n this._coreService.triggerDataEvent(`${C0.ESC}[${y};${x}R`);\n break;\n }\n return true;\n }\n\n // @vt: #P[Only CPR is supported.] CSI DECDSR \"DEC Device Status Report\" \"CSI ? Ps n\" \"Only CPR is supported (same as DSR).\"\n public deviceStatusPrivate(params: IParams): boolean {\n // modern xterm doesnt seem to\n // respond to any of these except ?6, 6, and 5\n switch (params.params[0]) {\n case 6:\n // cursor position\n const y = this._activeBuffer.y + 1;\n const x = this._activeBuffer.x + 1;\n this._coreService.triggerDataEvent(`${C0.ESC}[?${y};${x}R`);\n break;\n case 15:\n // no printer\n // this.handler(C0.ESC + '[?11n');\n break;\n case 25:\n // dont support user defined keys\n // this.handler(C0.ESC + '[?21n');\n break;\n case 26:\n // north american keyboard\n // this.handler(C0.ESC + '[?27;1;0;0n');\n break;\n case 53:\n // no dec locator/mouse\n // this.handler(C0.ESC + '[?50n');\n break;\n }\n return true;\n }\n\n /**\n * CSI ! p Soft terminal reset (DECSTR).\n * http://vt100.net/docs/vt220-rm/table4-10.html\n *\n * @vt: #Y CSI DECSTR \"Soft Terminal Reset\" \"CSI ! p\" \"Reset several terminal attributes to initial state.\"\n * There are two terminal reset sequences - RIS and DECSTR. While RIS performs almost a full terminal bootstrap,\n * DECSTR only resets certain attributes. For most needs DECSTR should be sufficient.\n *\n * The following terminal attributes are reset to default values:\n * - IRM is reset (dafault = false)\n * - scroll margins are reset (default = viewport size)\n * - erase attributes are reset to default\n * - charsets are reset\n * - DECSC data is reset to initial values\n * - DECOM is reset to absolute mode\n *\n *\n * FIXME: there are several more attributes missing (see VT520 manual)\n */\n public softReset(params: IParams): boolean {\n this._coreService.isCursorHidden = false;\n this._onRequestSyncScrollBar.fire();\n this._activeBuffer.scrollTop = 0;\n this._activeBuffer.scrollBottom = this._bufferService.rows - 1;\n this._curAttrData = DEFAULT_ATTR_DATA.clone();\n this._coreService.reset();\n this._charsetService.reset();\n\n // reset DECSC data\n this._activeBuffer.savedX = 0;\n this._activeBuffer.savedY = this._activeBuffer.ybase;\n this._activeBuffer.savedCurAttrData.fg = this._curAttrData.fg;\n this._activeBuffer.savedCurAttrData.bg = this._curAttrData.bg;\n this._activeBuffer.savedCharset = this._charsetService.charset;\n\n // reset DECOM\n this._coreService.decPrivateModes.origin = false;\n return true;\n }\n\n /**\n * CSI Ps SP q Set cursor style (DECSCUSR, VT520).\n * Ps = 0 -> blinking block.\n * Ps = 1 -> blinking block (default).\n * Ps = 2 -> steady block.\n * Ps = 3 -> blinking underline.\n * Ps = 4 -> steady underline.\n * Ps = 5 -> blinking bar (xterm).\n * Ps = 6 -> steady bar (xterm).\n *\n * @vt: #Y CSI DECSCUSR \"Set Cursor Style\" \"CSI Ps SP q\" \"Set cursor style.\"\n * Supported cursor styles:\n * - empty, 0 or 1: steady block\n * - 2: blink block\n * - 3: steady underline\n * - 4: blink underline\n * - 5: steady bar\n * - 6: blink bar\n */\n public setCursorStyle(params: IParams): boolean {\n const param = params.params[0] || 1;\n switch (param) {\n case 1:\n case 2:\n this._optionsService.options.cursorStyle = 'block';\n break;\n case 3:\n case 4:\n this._optionsService.options.cursorStyle = 'underline';\n break;\n case 5:\n case 6:\n this._optionsService.options.cursorStyle = 'bar';\n break;\n }\n const isBlinking = param % 2 === 1;\n this._optionsService.options.cursorBlink = isBlinking;\n return true;\n }\n\n /**\n * CSI Ps ; Ps r\n * Set Scrolling Region [top;bottom] (default = full size of win-\n * dow) (DECSTBM).\n *\n * @vt: #Y CSI DECSTBM \"Set Top and Bottom Margin\" \"CSI Ps ; Ps r\" \"Set top and bottom margins of the viewport [top;bottom] (default = viewport size).\"\n */\n public setScrollRegion(params: IParams): boolean {\n const top = params.params[0] || 1;\n let bottom: number;\n\n if (params.length < 2 || (bottom = params.params[1]) > this._bufferService.rows || bottom === 0) {\n bottom = this._bufferService.rows;\n }\n\n if (bottom > top) {\n this._activeBuffer.scrollTop = top - 1;\n this._activeBuffer.scrollBottom = bottom - 1;\n this._setCursor(0, 0);\n }\n return true;\n }\n\n /**\n * CSI Ps ; Ps ; Ps t - Various window manipulations and reports (xterm)\n *\n * Note: Only those listed below are supported. All others are left to integrators and\n * need special treatment based on the embedding environment.\n *\n * Ps = 1 4 supported\n * Report xterm text area size in pixels.\n * Result is CSI 4 ; height ; width t\n * Ps = 14 ; 2 not implemented\n * Ps = 16 supported\n * Report xterm character cell size in pixels.\n * Result is CSI 6 ; height ; width t\n * Ps = 18 supported\n * Report the size of the text area in characters.\n * Result is CSI 8 ; height ; width t\n * Ps = 20 supported\n * Report xterm window's icon label.\n * Result is OSC L label ST\n * Ps = 21 supported\n * Report xterm window's title.\n * Result is OSC l label ST\n * Ps = 22 ; 0 -> Save xterm icon and window title on stack. supported\n * Ps = 22 ; 1 -> Save xterm icon title on stack. supported\n * Ps = 22 ; 2 -> Save xterm window title on stack. supported\n * Ps = 23 ; 0 -> Restore xterm icon and window title from stack. supported\n * Ps = 23 ; 1 -> Restore xterm icon title from stack. supported\n * Ps = 23 ; 2 -> Restore xterm window title from stack. supported\n * Ps >= 24 not implemented\n */\n public windowOptions(params: IParams): boolean {\n if (!paramToWindowOption(params.params[0], this._optionsService.rawOptions.windowOptions)) {\n return true;\n }\n const second = (params.length > 1) ? params.params[1] : 0;\n switch (params.params[0]) {\n case 14: // GetWinSizePixels, returns CSI 4 ; height ; width t\n if (second !== 2) {\n this._onRequestWindowsOptionsReport.fire(WindowsOptionsReportType.GET_WIN_SIZE_PIXELS);\n }\n break;\n case 16: // GetCellSizePixels, returns CSI 6 ; height ; width t\n this._onRequestWindowsOptionsReport.fire(WindowsOptionsReportType.GET_CELL_SIZE_PIXELS);\n break;\n case 18: // GetWinSizeChars, returns CSI 8 ; height ; width t\n if (this._bufferService) {\n this._coreService.triggerDataEvent(`${C0.ESC}[8;${this._bufferService.rows};${this._bufferService.cols}t`);\n }\n break;\n case 22: // PushTitle\n if (second === 0 || second === 2) {\n this._windowTitleStack.push(this._windowTitle);\n if (this._windowTitleStack.length > STACK_LIMIT) {\n this._windowTitleStack.shift();\n }\n }\n if (second === 0 || second === 1) {\n this._iconNameStack.push(this._iconName);\n if (this._iconNameStack.length > STACK_LIMIT) {\n this._iconNameStack.shift();\n }\n }\n break;\n case 23: // PopTitle\n if (second === 0 || second === 2) {\n if (this._windowTitleStack.length) {\n this.setTitle(this._windowTitleStack.pop()!);\n }\n }\n if (second === 0 || second === 1) {\n if (this._iconNameStack.length) {\n this.setIconName(this._iconNameStack.pop()!);\n }\n }\n break;\n }\n return true;\n }\n\n\n /**\n * CSI s\n * ESC 7\n * Save cursor (ANSI.SYS).\n *\n * @vt: #P[TODO...] CSI SCOSC \"Save Cursor\" \"CSI s\" \"Save cursor position, charmap and text attributes.\"\n * @vt: #Y ESC SC \"Save Cursor\" \"ESC 7\" \"Save cursor position, charmap and text attributes.\"\n */\n public saveCursor(params?: IParams): boolean {\n this._activeBuffer.savedX = this._activeBuffer.x;\n this._activeBuffer.savedY = this._activeBuffer.ybase + this._activeBuffer.y;\n this._activeBuffer.savedCurAttrData.fg = this._curAttrData.fg;\n this._activeBuffer.savedCurAttrData.bg = this._curAttrData.bg;\n this._activeBuffer.savedCharset = this._charsetService.charset;\n return true;\n }\n\n\n /**\n * CSI u\n * ESC 8\n * Restore cursor (ANSI.SYS).\n *\n * @vt: #P[TODO...] CSI SCORC \"Restore Cursor\" \"CSI u\" \"Restore cursor position, charmap and text attributes.\"\n * @vt: #Y ESC RC \"Restore Cursor\" \"ESC 8\" \"Restore cursor position, charmap and text attributes.\"\n */\n public restoreCursor(params?: IParams): boolean {\n this._activeBuffer.x = this._activeBuffer.savedX || 0;\n this._activeBuffer.y = Math.max(this._activeBuffer.savedY - this._activeBuffer.ybase, 0);\n this._curAttrData.fg = this._activeBuffer.savedCurAttrData.fg;\n this._curAttrData.bg = this._activeBuffer.savedCurAttrData.bg;\n this._charsetService.charset = (this as any)._savedCharset;\n if (this._activeBuffer.savedCharset) {\n this._charsetService.charset = this._activeBuffer.savedCharset;\n }\n this._restrictCursor();\n return true;\n }\n\n\n /**\n * OSC 2; ST (set window title)\n * Proxy to set window title.\n *\n * @vt: #P[Icon name is not exposed.] OSC 0 \"Set Windows Title and Icon Name\" \"OSC 0 ; Pt BEL\" \"Set window title and icon name.\"\n * Icon name is not supported. For Window Title see below.\n *\n * @vt: #Y OSC 2 \"Set Windows Title\" \"OSC 2 ; Pt BEL\" \"Set window title.\"\n * xterm.js does not manipulate the title directly, instead exposes changes via the event `Terminal.onTitleChange`.\n */\n public setTitle(data: string): boolean {\n this._windowTitle = data;\n this._onTitleChange.fire(data);\n return true;\n }\n\n /**\n * OSC 1; ST\n * Note: Icon name is not exposed.\n */\n public setIconName(data: string): boolean {\n this._iconName = data;\n return true;\n }\n\n /**\n * OSC 4; ; ST (set ANSI color to )\n *\n * @vt: #Y OSC 4 \"Set ANSI color\" \"OSC 4 ; c ; spec BEL\" \"Change color number `c` to the color specified by `spec`.\"\n * `c` is the color index between 0 and 255. The color format of `spec` is derived from `XParseColor` (see OSC 10 for supported formats).\n * There may be multipe `c ; spec` pairs present in the same instruction.\n * If `spec` contains `?` the terminal returns a sequence with the currently set color.\n */\n public setOrReportIndexedColor(data: string): boolean {\n const event: IColorEvent = [];\n const slots = data.split(';');\n while (slots.length > 1) {\n const idx = slots.shift() as string;\n const spec = slots.shift() as string;\n if (/^\\d+$/.exec(idx)) {\n const index = parseInt(idx);\n if (0 <= index && index < 256) {\n if (spec === '?') {\n event.push({ type: ColorRequestType.REPORT, index });\n } else {\n const color = parseColor(spec);\n if (color) {\n event.push({ type: ColorRequestType.SET, index, color });\n }\n }\n }\n }\n }\n if (event.length) {\n this._onColor.fire(event);\n }\n return true;\n }\n\n // special colors - OSC 10 | 11 | 12\n private _specialColors = [ColorIndex.FOREGROUND, ColorIndex.BACKGROUND, ColorIndex.CURSOR];\n\n /**\n * Apply colors requests for special colors in OSC 10 | 11 | 12.\n * Since these commands are stacking from multiple parameters,\n * we handle them in a loop with an entry offset to `_specialColors`.\n */\n private _setOrReportSpecialColor(data: string, offset: number): boolean {\n const slots = data.split(';');\n for (let i = 0; i < slots.length; ++i, ++offset) {\n if (offset >= this._specialColors.length) break;\n if (slots[i] === '?') {\n this._onColor.fire([{ type: ColorRequestType.REPORT, index: this._specialColors[offset] }]);\n } else {\n const color = parseColor(slots[i]);\n if (color) {\n this._onColor.fire([{ type: ColorRequestType.SET, index: this._specialColors[offset], color }]);\n }\n }\n }\n return true;\n }\n\n /**\n * OSC 10 ; | ST - set or query default foreground color\n *\n * @vt: #Y OSC 10 \"Set or query default foreground color\" \"OSC 10 ; Pt BEL\" \"Set or query default foreground color.\"\n * To set the color, the following color specification formats are supported:\n * - `rgb://` for `, , ` in `h | hh | hhh | hhhh`, where\n * `h` is a single hexadecimal digit (case insignificant). The different widths scale\n * from 4 bit (`h`) to 16 bit (`hhhh`) and get converted to 8 bit (`hh`).\n * - `#RGB` - 4 bits per channel, expanded to `#R0G0B0`\n * - `#RRGGBB` - 8 bits per channel\n * - `#RRRGGGBBB` - 12 bits per channel, truncated to `#RRGGBB`\n * - `#RRRRGGGGBBBB` - 16 bits per channel, truncated to `#RRGGBB`\n *\n * **Note:** X11 named colors are currently unsupported.\n *\n * If `Pt` contains `?` instead of a color specification, the terminal\n * returns a sequence with the current default foreground color\n * (use that sequence to restore the color after changes).\n *\n * **Note:** Other than xterm, xterm.js does not support OSC 12 - 19.\n * Therefore stacking multiple `Pt` separated by `;` only works for the first two entries.\n */\n public setOrReportFgColor(data: string): boolean {\n return this._setOrReportSpecialColor(data, 0);\n }\n\n /**\n * OSC 11 ; | ST - set or query default background color\n *\n * @vt: #Y OSC 11 \"Set or query default background color\" \"OSC 11 ; Pt BEL\" \"Same as OSC 10, but for default background.\"\n */\n public setOrReportBgColor(data: string): boolean {\n return this._setOrReportSpecialColor(data, 1);\n }\n\n /**\n * OSC 12 ; | ST - set or query default cursor color\n *\n * @vt: #Y OSC 12 \"Set or query default cursor color\" \"OSC 12 ; Pt BEL\" \"Same as OSC 10, but for default cursor color.\"\n */\n public setOrReportCursorColor(data: string): boolean {\n return this._setOrReportSpecialColor(data, 2);\n }\n\n /**\n * OSC 104 ; ST - restore ANSI color \n *\n * @vt: #Y OSC 104 \"Reset ANSI color\" \"OSC 104 ; c BEL\" \"Reset color number `c` to themed color.\"\n * `c` is the color index between 0 and 255. This function restores the default color for `c` as\n * specified by the loaded theme. Any number of `c` parameters may be given.\n * If no parameters are given, the entire indexed color table will be reset.\n */\n public restoreIndexedColor(data: string): boolean {\n if (!data) {\n this._onColor.fire([{ type: ColorRequestType.RESTORE }]);\n return true;\n }\n const event: IColorEvent = [];\n const slots = data.split(';');\n for (let i = 0; i < slots.length; ++i) {\n if (/^\\d+$/.exec(slots[i])) {\n const index = parseInt(slots[i]);\n if (0 <= index && index < 256) {\n event.push({ type: ColorRequestType.RESTORE, index });\n }\n }\n }\n if (event.length) {\n this._onColor.fire(event);\n }\n return true;\n }\n\n /**\n * OSC 110 ST - restore default foreground color\n *\n * @vt: #Y OSC 110 \"Restore default foreground color\" \"OSC 110 BEL\" \"Restore default foreground to themed color.\"\n */\n public restoreFgColor(data: string): boolean {\n this._onColor.fire([{ type: ColorRequestType.RESTORE, index: ColorIndex.FOREGROUND }]);\n return true;\n }\n\n /**\n * OSC 111 ST - restore default background color\n *\n * @vt: #Y OSC 111 \"Restore default background color\" \"OSC 111 BEL\" \"Restore default background to themed color.\"\n */\n public restoreBgColor(data: string): boolean {\n this._onColor.fire([{ type: ColorRequestType.RESTORE, index: ColorIndex.BACKGROUND }]);\n return true;\n }\n\n /**\n * OSC 112 ST - restore default cursor color\n *\n * @vt: #Y OSC 112 \"Restore default cursor color\" \"OSC 112 BEL\" \"Restore default cursor to themed color.\"\n */\n public restoreCursorColor(data: string): boolean {\n this._onColor.fire([{ type: ColorRequestType.RESTORE, index: ColorIndex.CURSOR }]);\n return true;\n }\n\n /**\n * ESC E\n * C1.NEL\n * DEC mnemonic: NEL (https://vt100.net/docs/vt510-rm/NEL)\n * Moves cursor to first position on next line.\n *\n * @vt: #Y C1 NEL \"Next Line\" \"\\x85\" \"Move the cursor to the beginning of the next row.\"\n * @vt: #Y ESC NEL \"Next Line\" \"ESC E\" \"Move the cursor to the beginning of the next row.\"\n */\n public nextLine(): boolean {\n this._activeBuffer.x = 0;\n this.index();\n return true;\n }\n\n /**\n * ESC =\n * DEC mnemonic: DECKPAM (https://vt100.net/docs/vt510-rm/DECKPAM.html)\n * Enables the numeric keypad to send application sequences to the host.\n */\n public keypadApplicationMode(): boolean {\n this._logService.debug('Serial port requested application keypad.');\n this._coreService.decPrivateModes.applicationKeypad = true;\n this._onRequestSyncScrollBar.fire();\n return true;\n }\n\n /**\n * ESC >\n * DEC mnemonic: DECKPNM (https://vt100.net/docs/vt510-rm/DECKPNM.html)\n * Enables the keypad to send numeric characters to the host.\n */\n public keypadNumericMode(): boolean {\n this._logService.debug('Switching back to normal keypad.');\n this._coreService.decPrivateModes.applicationKeypad = false;\n this._onRequestSyncScrollBar.fire();\n return true;\n }\n\n /**\n * ESC % @\n * ESC % G\n * Select default character set. UTF-8 is not supported (string are unicode anyways)\n * therefore ESC % G does the same.\n */\n public selectDefaultCharset(): boolean {\n this._charsetService.setgLevel(0);\n this._charsetService.setgCharset(0, DEFAULT_CHARSET); // US (default)\n return true;\n }\n\n /**\n * ESC ( C\n * Designate G0 Character Set, VT100, ISO 2022.\n * ESC ) C\n * Designate G1 Character Set (ISO 2022, VT100).\n * ESC * C\n * Designate G2 Character Set (ISO 2022, VT220).\n * ESC + C\n * Designate G3 Character Set (ISO 2022, VT220).\n * ESC - C\n * Designate G1 Character Set (VT300).\n * ESC . C\n * Designate G2 Character Set (VT300).\n * ESC / C\n * Designate G3 Character Set (VT300). C = A -> ISO Latin-1 Supplemental. - Supported?\n */\n public selectCharset(collectAndFlag: string): boolean {\n if (collectAndFlag.length !== 2) {\n this.selectDefaultCharset();\n return true;\n }\n if (collectAndFlag[0] === '/') {\n return true; // TODO: Is this supported?\n }\n this._charsetService.setgCharset(GLEVEL[collectAndFlag[0]], CHARSETS[collectAndFlag[1]] || DEFAULT_CHARSET);\n return true;\n }\n\n /**\n * ESC D\n * C1.IND\n * DEC mnemonic: IND (https://vt100.net/docs/vt510-rm/IND.html)\n * Moves the cursor down one line in the same column.\n *\n * @vt: #Y C1 IND \"Index\" \"\\x84\" \"Move the cursor one line down scrolling if needed.\"\n * @vt: #Y ESC IND \"Index\" \"ESC D\" \"Move the cursor one line down scrolling if needed.\"\n */\n public index(): boolean {\n this._restrictCursor();\n this._activeBuffer.y++;\n if (this._activeBuffer.y === this._activeBuffer.scrollBottom + 1) {\n this._activeBuffer.y--;\n this._bufferService.scroll(this._eraseAttrData());\n } else if (this._activeBuffer.y >= this._bufferService.rows) {\n this._activeBuffer.y = this._bufferService.rows - 1;\n }\n this._restrictCursor();\n return true;\n }\n\n /**\n * ESC H\n * C1.HTS\n * DEC mnemonic: HTS (https://vt100.net/docs/vt510-rm/HTS.html)\n * Sets a horizontal tab stop at the column position indicated by\n * the value of the active column when the terminal receives an HTS.\n *\n * @vt: #Y C1 HTS \"Horizontal Tabulation Set\" \"\\x88\" \"Places a tab stop at the current cursor position.\"\n * @vt: #Y ESC HTS \"Horizontal Tabulation Set\" \"ESC H\" \"Places a tab stop at the current cursor position.\"\n */\n public tabSet(): boolean {\n this._activeBuffer.tabs[this._activeBuffer.x] = true;\n return true;\n }\n\n /**\n * ESC M\n * C1.RI\n * DEC mnemonic: HTS\n * Moves the cursor up one line in the same column. If the cursor is at the top margin,\n * the page scrolls down.\n *\n * @vt: #Y ESC IR \"Reverse Index\" \"ESC M\" \"Move the cursor one line up scrolling if needed.\"\n */\n public reverseIndex(): boolean {\n this._restrictCursor();\n if (this._activeBuffer.y === this._activeBuffer.scrollTop) {\n // possibly move the code below to term.reverseScroll();\n // test: echo -ne '\\e[1;1H\\e[44m\\eM\\e[0m'\n // blankLine(true) is xterm/linux behavior\n const scrollRegionHeight = this._activeBuffer.scrollBottom - this._activeBuffer.scrollTop;\n this._activeBuffer.lines.shiftElements(this._activeBuffer.ybase + this._activeBuffer.y, scrollRegionHeight, 1);\n this._activeBuffer.lines.set(this._activeBuffer.ybase + this._activeBuffer.y, this._activeBuffer.getBlankLine(this._eraseAttrData()));\n this._dirtyRowService.markRangeDirty(this._activeBuffer.scrollTop, this._activeBuffer.scrollBottom);\n } else {\n this._activeBuffer.y--;\n this._restrictCursor(); // quickfix to not run out of bounds\n }\n return true;\n }\n\n /**\n * ESC c\n * DEC mnemonic: RIS (https://vt100.net/docs/vt510-rm/RIS.html)\n * Reset to initial state.\n */\n public fullReset(): boolean {\n this._parser.reset();\n this._onRequestReset.fire();\n return true;\n }\n\n public reset(): void {\n this._curAttrData = DEFAULT_ATTR_DATA.clone();\n this._eraseAttrDataInternal = DEFAULT_ATTR_DATA.clone();\n }\n\n /**\n * back_color_erase feature for xterm.\n */\n private _eraseAttrData(): IAttributeData {\n this._eraseAttrDataInternal.bg &= ~(Attributes.CM_MASK | 0xFFFFFF);\n this._eraseAttrDataInternal.bg |= this._curAttrData.bg & ~0xFC000000;\n return this._eraseAttrDataInternal;\n }\n\n /**\n * ESC n\n * ESC o\n * ESC |\n * ESC }\n * ESC ~\n * DEC mnemonic: LS (https://vt100.net/docs/vt510-rm/LS.html)\n * When you use a locking shift, the character set remains in GL or GR until\n * you use another locking shift. (partly supported)\n */\n public setgLevel(level: number): boolean {\n this._charsetService.setgLevel(level);\n return true;\n }\n\n /**\n * ESC # 8\n * DEC mnemonic: DECALN (https://vt100.net/docs/vt510-rm/DECALN.html)\n * This control function fills the complete screen area with\n * a test pattern (E) used for adjusting screen alignment.\n *\n * @vt: #Y ESC DECALN \"Screen Alignment Pattern\" \"ESC # 8\" \"Fill viewport with a test pattern (E).\"\n */\n public screenAlignmentPattern(): boolean {\n // prepare cell data\n const cell = new CellData();\n cell.content = 1 << Content.WIDTH_SHIFT | 'E'.charCodeAt(0);\n cell.fg = this._curAttrData.fg;\n cell.bg = this._curAttrData.bg;\n\n\n this._setCursor(0, 0);\n for (let yOffset = 0; yOffset < this._bufferService.rows; ++yOffset) {\n const row = this._activeBuffer.ybase + this._activeBuffer.y + yOffset;\n const line = this._activeBuffer.lines.get(row);\n if (line) {\n line.fill(cell);\n line.isWrapped = false;\n }\n }\n this._dirtyRowService.markAllDirty();\n this._setCursor(0, 0);\n return true;\n }\n}\n", "/**\n * Copyright (c) 2018 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IDisposable } from 'common/Types';\n\n/**\n * A base class that can be extended to provide convenience methods for managing the lifecycle of an\n * object and its components.\n */\nexport abstract class Disposable implements IDisposable {\n protected _disposables: IDisposable[] = [];\n protected _isDisposed: boolean = false;\n\n constructor() {\n }\n\n /**\n * Disposes the object, triggering the `dispose` method on all registered IDisposables.\n */\n public dispose(): void {\n this._isDisposed = true;\n for (const d of this._disposables) {\n d.dispose();\n }\n this._disposables.length = 0;\n }\n\n /**\n * Registers a disposable object.\n * @param d The disposable to register.\n * @returns The disposable.\n */\n public register(d: T): T {\n this._disposables.push(d);\n return d;\n }\n\n /**\n * Unregisters a disposable object if it has been registered, if not do\n * nothing.\n * @param d The disposable to unregister.\n */\n public unregister(d: T): void {\n const index = this._disposables.indexOf(d);\n if (index !== -1) {\n this._disposables.splice(index, 1);\n }\n }\n}\n\n/**\n * Dispose of all disposables in an array and set its length to 0.\n */\nexport function disposeArray(disposables: IDisposable[]): void {\n for (const d of disposables) {\n d.dispose();\n }\n disposables.length = 0;\n}\n\n/**\n * Creates a disposable that will dispose of an array of disposables when disposed.\n */\nexport function getDisposeArrayDisposable(array: IDisposable[]): IDisposable {\n return { dispose: () => disposeArray(array) };\n}\n", "/**\n * Copyright (c) 2016 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\ninterface INavigator {\n userAgent: string;\n language: string;\n platform: string;\n}\n\n// We're declaring a navigator global here as we expect it in all runtimes (node and browser), but\n// we want this module to live in common.\ndeclare const navigator: INavigator;\n\nconst isNode = (typeof navigator === 'undefined') ? true : false;\nconst userAgent = (isNode) ? 'node' : navigator.userAgent;\nconst platform = (isNode) ? 'node' : navigator.platform;\n\nexport const isFirefox = userAgent.includes('Firefox');\nexport const isLegacyEdge = userAgent.includes('Edge');\nexport const isSafari = /^((?!chrome|android).)*safari/i.test(userAgent);\n\n// Find the users platform. We use this to interpret the meta key\n// and ISO third level shifts.\n// http://stackoverflow.com/q/19877924/577598\nexport const isMac = ['Macintosh', 'MacIntel', 'MacPPC', 'Mac68K'].includes(platform);\nexport const isIpad = platform === 'iPad';\nexport const isIphone = platform === 'iPhone';\nexport const isWindows = ['Windows', 'Win16', 'Win32', 'WinCE'].includes(platform);\nexport const isLinux = platform.indexOf('Linux') >= 0;\n", "/**\n * Copyright (c) 2022 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\n/**\n * A generic list that is maintained in sorted order and allows values with duplicate keys. This\n * list is based on binary search and as such locating a key will take O(log n) amortized, this\n * includes the by key iterator.\n */\nexport class SortedList {\n private readonly _array: T[] = [];\n\n constructor(\n private readonly _getKey: (value: T) => number\n ) {\n }\n\n public clear(): void {\n this._array.length = 0;\n }\n\n public insert(value: T): void {\n if (this._array.length === 0) {\n this._array.push(value);\n return;\n }\n const i = this._search(this._getKey(value), 0, this._array.length - 1);\n this._array.splice(i, 0, value);\n }\n\n public delete(value: T): boolean {\n if (this._array.length === 0) {\n return false;\n }\n const key = this._getKey(value);\n let i = this._search(key, 0, this._array.length - 1);\n if (this._getKey(this._array[i]) !== key) {\n return false;\n }\n do {\n if (this._array[i] === value) {\n this._array.splice(i, 1);\n return true;\n }\n } while (++i < this._array.length && this._getKey(this._array[i]) === key);\n return false;\n }\n\n public *getKeyIterator(key: number): IterableIterator {\n if (this._array.length === 0) {\n return;\n }\n let i = this._search(key, 0, this._array.length - 1);\n if (i < 0 || i >= this._array.length) {\n return;\n }\n if (this._getKey(this._array[i]) !== key) {\n return;\n }\n do {\n yield this._array[i];\n } while (++i < this._array.length && this._getKey(this._array[i]) === key);\n }\n\n public values(): IterableIterator {\n return this._array.values();\n }\n\n private _search(key: number, min: number, max: number): number {\n if (max < min) {\n return min;\n }\n let mid = Math.floor((min + max) / 2);\n if (this._getKey(this._array[mid]) > key) {\n return this._search(key, min, mid - 1);\n }\n if (this._getKey(this._array[mid]) < key) {\n return this._search(key, mid + 1, max);\n }\n // Value found! Since keys can be duplicates, move the result index back to the lowest index\n // that matches the key.\n while (mid > 0 && this._getKey(this._array[mid - 1]) === key) {\n mid--;\n }\n return mid;\n }\n}\n", "/**\n * Copyright (c) 2018 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nexport type TypedArray = Uint8Array | Uint16Array | Uint32Array | Uint8ClampedArray | Int8Array | Int16Array | Int32Array | Float32Array | Float64Array;\n\n\n/**\n * polyfill for TypedArray.fill\n * This is needed to support .fill in all safari versions and IE 11.\n */\nexport function fill(array: T, value: number, start?: number, end?: number): T {\n // all modern engines that support .fill\n if (array.fill) {\n return array.fill(value, start, end) as T;\n }\n return fillFallback(array, value, start, end);\n}\n\nexport function fillFallback(array: T, value: number, start: number = 0, end: number = array.length): T {\n // safari and IE 11\n // since IE 11 does not support Array.prototype.fill either\n // we cannot use the suggested polyfill from MDN\n // instead we simply fall back to looping\n if (start >= array.length) {\n return array;\n }\n start = (array.length + start) % array.length;\n if (end >= array.length) {\n end = array.length;\n } else {\n end = (array.length + end) % array.length;\n }\n for (let i = start; i < end; ++i) {\n array[i] = value;\n }\n return array;\n}\n\n/**\n * Concat two typed arrays `a` and `b`.\n * Returns a new typed array.\n */\nexport function concat(a: T, b: T): T {\n const result = new (a.constructor as any)(a.length + b.length);\n result.set(a);\n result.set(b, a.length);\n return result;\n}\n", "/**\n * Copyright (c) 2019 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { CHAR_DATA_CODE_INDEX, NULL_CELL_CODE, WHITESPACE_CELL_CODE } from 'common/buffer/Constants';\nimport { IBufferService } from 'common/services/Services';\n\nexport function updateWindowsModeWrappedState(bufferService: IBufferService): void {\n // Winpty does not support wraparound mode which means that lines will never\n // be marked as wrapped. This causes issues for things like copying a line\n // retaining the wrapped new line characters or if consumers are listening\n // in on the data stream.\n //\n // The workaround for this is to listen to every incoming line feed and mark\n // the line as wrapped if the last character in the previous line is not a\n // space. This is certainly not without its problems, but generally on\n // Windows when text reaches the end of the terminal it's likely going to be\n // wrapped.\n const line = bufferService.buffer.lines.get(bufferService.buffer.ybase + bufferService.buffer.y - 1);\n const lastChar = line?.get(bufferService.cols - 1);\n\n const nextLine = bufferService.buffer.lines.get(bufferService.buffer.ybase + bufferService.buffer.y);\n if (nextLine && lastChar) {\n nextLine.isWrapped = (lastChar[CHAR_DATA_CODE_INDEX] !== NULL_CELL_CODE && lastChar[CHAR_DATA_CODE_INDEX] !== WHITESPACE_CELL_CODE);\n }\n}\n", "/**\n * Copyright (c) 2018 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IAttributeData, IColorRGB, IExtendedAttrs } from 'common/Types';\nimport { Attributes, FgFlags, BgFlags, UnderlineStyle } from 'common/buffer/Constants';\n\nexport class AttributeData implements IAttributeData {\n public static toColorRGB(value: number): IColorRGB {\n return [\n value >>> Attributes.RED_SHIFT & 255,\n value >>> Attributes.GREEN_SHIFT & 255,\n value & 255\n ];\n }\n\n public static fromColorRGB(value: IColorRGB): number {\n return (value[0] & 255) << Attributes.RED_SHIFT | (value[1] & 255) << Attributes.GREEN_SHIFT | value[2] & 255;\n }\n\n public clone(): IAttributeData {\n const newObj = new AttributeData();\n newObj.fg = this.fg;\n newObj.bg = this.bg;\n newObj.extended = this.extended.clone();\n return newObj;\n }\n\n // data\n public fg = 0;\n public bg = 0;\n public extended = new ExtendedAttrs();\n\n // flags\n public isInverse(): number { return this.fg & FgFlags.INVERSE; }\n public isBold(): number { return this.fg & FgFlags.BOLD; }\n public isUnderline(): number { return this.fg & FgFlags.UNDERLINE; }\n public isBlink(): number { return this.fg & FgFlags.BLINK; }\n public isInvisible(): number { return this.fg & FgFlags.INVISIBLE; }\n public isItalic(): number { return this.bg & BgFlags.ITALIC; }\n public isDim(): number { return this.bg & BgFlags.DIM; }\n public isStrikethrough(): number { return this.fg & FgFlags.STRIKETHROUGH; }\n\n // color modes\n public getFgColorMode(): number { return this.fg & Attributes.CM_MASK; }\n public getBgColorMode(): number { return this.bg & Attributes.CM_MASK; }\n public isFgRGB(): boolean { return (this.fg & Attributes.CM_MASK) === Attributes.CM_RGB; }\n public isBgRGB(): boolean { return (this.bg & Attributes.CM_MASK) === Attributes.CM_RGB; }\n public isFgPalette(): boolean { return (this.fg & Attributes.CM_MASK) === Attributes.CM_P16 || (this.fg & Attributes.CM_MASK) === Attributes.CM_P256; }\n public isBgPalette(): boolean { return (this.bg & Attributes.CM_MASK) === Attributes.CM_P16 || (this.bg & Attributes.CM_MASK) === Attributes.CM_P256; }\n public isFgDefault(): boolean { return (this.fg & Attributes.CM_MASK) === 0; }\n public isBgDefault(): boolean { return (this.bg & Attributes.CM_MASK) === 0; }\n public isAttributeDefault(): boolean { return this.fg === 0 && this.bg === 0; }\n\n // colors\n public getFgColor(): number {\n switch (this.fg & Attributes.CM_MASK) {\n case Attributes.CM_P16:\n case Attributes.CM_P256: return this.fg & Attributes.PCOLOR_MASK;\n case Attributes.CM_RGB: return this.fg & Attributes.RGB_MASK;\n default: return -1; // CM_DEFAULT defaults to -1\n }\n }\n public getBgColor(): number {\n switch (this.bg & Attributes.CM_MASK) {\n case Attributes.CM_P16:\n case Attributes.CM_P256: return this.bg & Attributes.PCOLOR_MASK;\n case Attributes.CM_RGB: return this.bg & Attributes.RGB_MASK;\n default: return -1; // CM_DEFAULT defaults to -1\n }\n }\n\n // extended attrs\n public hasExtendedAttrs(): number {\n return this.bg & BgFlags.HAS_EXTENDED;\n }\n public updateExtended(): void {\n if (this.extended.isEmpty()) {\n this.bg &= ~BgFlags.HAS_EXTENDED;\n } else {\n this.bg |= BgFlags.HAS_EXTENDED;\n }\n }\n public getUnderlineColor(): number {\n if ((this.bg & BgFlags.HAS_EXTENDED) && ~this.extended.underlineColor) {\n switch (this.extended.underlineColor & Attributes.CM_MASK) {\n case Attributes.CM_P16:\n case Attributes.CM_P256: return this.extended.underlineColor & Attributes.PCOLOR_MASK;\n case Attributes.CM_RGB: return this.extended.underlineColor & Attributes.RGB_MASK;\n default: return this.getFgColor();\n }\n }\n return this.getFgColor();\n }\n public getUnderlineColorMode(): number {\n return (this.bg & BgFlags.HAS_EXTENDED) && ~this.extended.underlineColor\n ? this.extended.underlineColor & Attributes.CM_MASK\n : this.getFgColorMode();\n }\n public isUnderlineColorRGB(): boolean {\n return (this.bg & BgFlags.HAS_EXTENDED) && ~this.extended.underlineColor\n ? (this.extended.underlineColor & Attributes.CM_MASK) === Attributes.CM_RGB\n : this.isFgRGB();\n }\n public isUnderlineColorPalette(): boolean {\n return (this.bg & BgFlags.HAS_EXTENDED) && ~this.extended.underlineColor\n ? (this.extended.underlineColor & Attributes.CM_MASK) === Attributes.CM_P16\n || (this.extended.underlineColor & Attributes.CM_MASK) === Attributes.CM_P256\n : this.isFgPalette();\n }\n public isUnderlineColorDefault(): boolean {\n return (this.bg & BgFlags.HAS_EXTENDED) && ~this.extended.underlineColor\n ? (this.extended.underlineColor & Attributes.CM_MASK) === 0\n : this.isFgDefault();\n }\n public getUnderlineStyle(): UnderlineStyle {\n return this.fg & FgFlags.UNDERLINE\n ? (this.bg & BgFlags.HAS_EXTENDED ? this.extended.underlineStyle : UnderlineStyle.SINGLE)\n : UnderlineStyle.NONE;\n }\n}\n\n\n/**\n * Extended attributes for a cell.\n * Holds information about different underline styles and color.\n */\nexport class ExtendedAttrs implements IExtendedAttrs {\n constructor(\n // underline style, NONE is empty\n public underlineStyle: UnderlineStyle = UnderlineStyle.NONE,\n // underline color, -1 is empty (same as FG)\n public underlineColor: number = -1\n ) {}\n\n public clone(): IExtendedAttrs {\n return new ExtendedAttrs(this.underlineStyle, this.underlineColor);\n }\n\n /**\n * Convenient method to indicate whether the object holds no additional information,\n * that needs to be persistant in the buffer.\n */\n public isEmpty(): boolean {\n return this.underlineStyle === UnderlineStyle.NONE;\n }\n}\n", "/**\n * Copyright (c) 2017 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { CircularList, IInsertEvent } from 'common/CircularList';\nimport { IBuffer, BufferIndex, IBufferStringIterator, IBufferStringIteratorResult } from 'common/buffer/Types';\nimport { IBufferLine, ICellData, IAttributeData, ICharset } from 'common/Types';\nimport { BufferLine, DEFAULT_ATTR_DATA } from 'common/buffer/BufferLine';\nimport { CellData } from 'common/buffer/CellData';\nimport { NULL_CELL_CHAR, NULL_CELL_WIDTH, NULL_CELL_CODE, WHITESPACE_CELL_CHAR, WHITESPACE_CELL_WIDTH, WHITESPACE_CELL_CODE, CHAR_DATA_WIDTH_INDEX, CHAR_DATA_CHAR_INDEX } from 'common/buffer/Constants';\nimport { reflowLargerApplyNewLayout, reflowLargerCreateNewLayout, reflowLargerGetLinesToRemove, reflowSmallerGetNewLineLengths, getWrappedLineTrimmedLength } from 'common/buffer/BufferReflow';\nimport { Marker } from 'common/buffer/Marker';\nimport { IOptionsService, IBufferService } from 'common/services/Services';\nimport { DEFAULT_CHARSET } from 'common/data/Charsets';\nimport { ExtendedAttrs } from 'common/buffer/AttributeData';\n\nexport const MAX_BUFFER_SIZE = 4294967295; // 2^32 - 1\n\n/**\n * This class represents a terminal buffer (an internal state of the terminal), where the\n * following information is stored (in high-level):\n * - text content of this particular buffer\n * - cursor position\n * - scroll position\n */\nexport class Buffer implements IBuffer {\n public lines: CircularList;\n public ydisp: number = 0;\n public ybase: number = 0;\n public y: number = 0;\n public x: number = 0;\n public scrollBottom: number;\n public scrollTop: number;\n // TODO: Type me\n public tabs: any;\n public savedY: number = 0;\n public savedX: number = 0;\n public savedCurAttrData = DEFAULT_ATTR_DATA.clone();\n public savedCharset: ICharset | undefined = DEFAULT_CHARSET;\n public markers: Marker[] = [];\n private _nullCell: ICellData = CellData.fromCharData([0, NULL_CELL_CHAR, NULL_CELL_WIDTH, NULL_CELL_CODE]);\n private _whitespaceCell: ICellData = CellData.fromCharData([0, WHITESPACE_CELL_CHAR, WHITESPACE_CELL_WIDTH, WHITESPACE_CELL_CODE]);\n private _cols: number;\n private _rows: number;\n private _isClearing: boolean = false;\n\n constructor(\n private _hasScrollback: boolean,\n private _optionsService: IOptionsService,\n private _bufferService: IBufferService\n ) {\n this._cols = this._bufferService.cols;\n this._rows = this._bufferService.rows;\n this.lines = new CircularList(this._getCorrectBufferLength(this._rows));\n this.scrollTop = 0;\n this.scrollBottom = this._rows - 1;\n this.setupTabStops();\n }\n\n public getNullCell(attr?: IAttributeData): ICellData {\n if (attr) {\n this._nullCell.fg = attr.fg;\n this._nullCell.bg = attr.bg;\n this._nullCell.extended = attr.extended;\n } else {\n this._nullCell.fg = 0;\n this._nullCell.bg = 0;\n this._nullCell.extended = new ExtendedAttrs();\n }\n return this._nullCell;\n }\n\n public getWhitespaceCell(attr?: IAttributeData): ICellData {\n if (attr) {\n this._whitespaceCell.fg = attr.fg;\n this._whitespaceCell.bg = attr.bg;\n this._whitespaceCell.extended = attr.extended;\n } else {\n this._whitespaceCell.fg = 0;\n this._whitespaceCell.bg = 0;\n this._whitespaceCell.extended = new ExtendedAttrs();\n }\n return this._whitespaceCell;\n }\n\n public getBlankLine(attr: IAttributeData, isWrapped?: boolean): IBufferLine {\n return new BufferLine(this._bufferService.cols, this.getNullCell(attr), isWrapped);\n }\n\n public get hasScrollback(): boolean {\n return this._hasScrollback && this.lines.maxLength > this._rows;\n }\n\n public get isCursorInViewport(): boolean {\n const absoluteY = this.ybase + this.y;\n const relativeY = absoluteY - this.ydisp;\n return (relativeY >= 0 && relativeY < this._rows);\n }\n\n /**\n * Gets the correct buffer length based on the rows provided, the terminal's\n * scrollback and whether this buffer is flagged to have scrollback or not.\n * @param rows The terminal rows to use in the calculation.\n */\n private _getCorrectBufferLength(rows: number): number {\n if (!this._hasScrollback) {\n return rows;\n }\n\n const correctBufferLength = rows + this._optionsService.rawOptions.scrollback;\n\n return correctBufferLength > MAX_BUFFER_SIZE ? MAX_BUFFER_SIZE : correctBufferLength;\n }\n\n /**\n * Fills the buffer's viewport with blank lines.\n */\n public fillViewportRows(fillAttr?: IAttributeData): void {\n if (this.lines.length === 0) {\n if (fillAttr === undefined) {\n fillAttr = DEFAULT_ATTR_DATA;\n }\n let i = this._rows;\n while (i--) {\n this.lines.push(this.getBlankLine(fillAttr));\n }\n }\n }\n\n /**\n * Clears the buffer to it's initial state, discarding all previous data.\n */\n public clear(): void {\n this.ydisp = 0;\n this.ybase = 0;\n this.y = 0;\n this.x = 0;\n this.lines = new CircularList(this._getCorrectBufferLength(this._rows));\n this.scrollTop = 0;\n this.scrollBottom = this._rows - 1;\n this.setupTabStops();\n }\n\n /**\n * Resizes the buffer, adjusting its data accordingly.\n * @param newCols The new number of columns.\n * @param newRows The new number of rows.\n */\n public resize(newCols: number, newRows: number): void {\n // store reference to null cell with default attrs\n const nullCell = this.getNullCell(DEFAULT_ATTR_DATA);\n\n // Increase max length if needed before adjustments to allow space to fill\n // as required.\n const newMaxLength = this._getCorrectBufferLength(newRows);\n if (newMaxLength > this.lines.maxLength) {\n this.lines.maxLength = newMaxLength;\n }\n\n // The following adjustments should only happen if the buffer has been\n // initialized/filled.\n if (this.lines.length > 0) {\n // Deal with columns increasing (reducing needs to happen after reflow)\n if (this._cols < newCols) {\n for (let i = 0; i < this.lines.length; i++) {\n this.lines.get(i)!.resize(newCols, nullCell);\n }\n }\n\n // Resize rows in both directions as needed\n let addToY = 0;\n if (this._rows < newRows) {\n for (let y = this._rows; y < newRows; y++) {\n if (this.lines.length < newRows + this.ybase) {\n if (this._optionsService.rawOptions.windowsMode) {\n // Just add the new missing rows on Windows as conpty reprints the screen with it's\n // view of the world. Once a line enters scrollback for conpty it remains there\n this.lines.push(new BufferLine(newCols, nullCell));\n } else {\n if (this.ybase > 0 && this.lines.length <= this.ybase + this.y + addToY + 1) {\n // There is room above the buffer and there are no empty elements below the line,\n // scroll up\n this.ybase--;\n addToY++;\n if (this.ydisp > 0) {\n // Viewport is at the top of the buffer, must increase downwards\n this.ydisp--;\n }\n } else {\n // Add a blank line if there is no buffer left at the top to scroll to, or if there\n // are blank lines after the cursor\n this.lines.push(new BufferLine(newCols, nullCell));\n }\n }\n }\n }\n } else { // (this._rows >= newRows)\n for (let y = this._rows; y > newRows; y--) {\n if (this.lines.length > newRows + this.ybase) {\n if (this.lines.length > this.ybase + this.y + 1) {\n // The line is a blank line below the cursor, remove it\n this.lines.pop();\n } else {\n // The line is the cursor, scroll down\n this.ybase++;\n this.ydisp++;\n }\n }\n }\n }\n\n // Reduce max length if needed after adjustments, this is done after as it\n // would otherwise cut data from the bottom of the buffer.\n if (newMaxLength < this.lines.maxLength) {\n // Trim from the top of the buffer and adjust ybase and ydisp.\n const amountToTrim = this.lines.length - newMaxLength;\n if (amountToTrim > 0) {\n this.lines.trimStart(amountToTrim);\n this.ybase = Math.max(this.ybase - amountToTrim, 0);\n this.ydisp = Math.max(this.ydisp - amountToTrim, 0);\n this.savedY = Math.max(this.savedY - amountToTrim, 0);\n }\n this.lines.maxLength = newMaxLength;\n }\n\n // Make sure that the cursor stays on screen\n this.x = Math.min(this.x, newCols - 1);\n this.y = Math.min(this.y, newRows - 1);\n if (addToY) {\n this.y += addToY;\n }\n this.savedX = Math.min(this.savedX, newCols - 1);\n\n this.scrollTop = 0;\n }\n\n this.scrollBottom = newRows - 1;\n\n if (this._isReflowEnabled) {\n this._reflow(newCols, newRows);\n\n // Trim the end of the line off if cols shrunk\n if (this._cols > newCols) {\n for (let i = 0; i < this.lines.length; i++) {\n this.lines.get(i)!.resize(newCols, nullCell);\n }\n }\n }\n\n this._cols = newCols;\n this._rows = newRows;\n }\n\n private get _isReflowEnabled(): boolean {\n return this._hasScrollback && !this._optionsService.rawOptions.windowsMode;\n }\n\n private _reflow(newCols: number, newRows: number): void {\n if (this._cols === newCols) {\n return;\n }\n\n // Iterate through rows, ignore the last one as it cannot be wrapped\n if (newCols > this._cols) {\n this._reflowLarger(newCols, newRows);\n } else {\n this._reflowSmaller(newCols, newRows);\n }\n }\n\n private _reflowLarger(newCols: number, newRows: number): void {\n const toRemove: number[] = reflowLargerGetLinesToRemove(this.lines, this._cols, newCols, this.ybase + this.y, this.getNullCell(DEFAULT_ATTR_DATA));\n if (toRemove.length > 0) {\n const newLayoutResult = reflowLargerCreateNewLayout(this.lines, toRemove);\n reflowLargerApplyNewLayout(this.lines, newLayoutResult.layout);\n this._reflowLargerAdjustViewport(newCols, newRows, newLayoutResult.countRemoved);\n }\n }\n\n private _reflowLargerAdjustViewport(newCols: number, newRows: number, countRemoved: number): void {\n const nullCell = this.getNullCell(DEFAULT_ATTR_DATA);\n // Adjust viewport based on number of items removed\n let viewportAdjustments = countRemoved;\n while (viewportAdjustments-- > 0) {\n if (this.ybase === 0) {\n if (this.y > 0) {\n this.y--;\n }\n if (this.lines.length < newRows) {\n // Add an extra row at the bottom of the viewport\n this.lines.push(new BufferLine(newCols, nullCell));\n }\n } else {\n if (this.ydisp === this.ybase) {\n this.ydisp--;\n }\n this.ybase--;\n }\n }\n this.savedY = Math.max(this.savedY - countRemoved, 0);\n }\n\n private _reflowSmaller(newCols: number, newRows: number): void {\n const nullCell = this.getNullCell(DEFAULT_ATTR_DATA);\n // Gather all BufferLines that need to be inserted into the Buffer here so that they can be\n // batched up and only committed once\n const toInsert = [];\n let countToInsert = 0;\n // Go backwards as many lines may be trimmed and this will avoid considering them\n for (let y = this.lines.length - 1; y >= 0; y--) {\n // Check whether this line is a problem\n let nextLine = this.lines.get(y) as BufferLine;\n if (!nextLine || !nextLine.isWrapped && nextLine.getTrimmedLength() <= newCols) {\n continue;\n }\n\n // Gather wrapped lines and adjust y to be the starting line\n const wrappedLines: BufferLine[] = [nextLine];\n while (nextLine.isWrapped && y > 0) {\n nextLine = this.lines.get(--y) as BufferLine;\n wrappedLines.unshift(nextLine);\n }\n\n // If these lines contain the cursor don't touch them, the program will handle fixing up\n // wrapped lines with the cursor\n const absoluteY = this.ybase + this.y;\n if (absoluteY >= y && absoluteY < y + wrappedLines.length) {\n continue;\n }\n\n const lastLineLength = wrappedLines[wrappedLines.length - 1].getTrimmedLength();\n const destLineLengths = reflowSmallerGetNewLineLengths(wrappedLines, this._cols, newCols);\n const linesToAdd = destLineLengths.length - wrappedLines.length;\n let trimmedLines: number;\n if (this.ybase === 0 && this.y !== this.lines.length - 1) {\n // If the top section of the buffer is not yet filled\n trimmedLines = Math.max(0, this.y - this.lines.maxLength + linesToAdd);\n } else {\n trimmedLines = Math.max(0, this.lines.length - this.lines.maxLength + linesToAdd);\n }\n\n // Add the new lines\n const newLines: BufferLine[] = [];\n for (let i = 0; i < linesToAdd; i++) {\n const newLine = this.getBlankLine(DEFAULT_ATTR_DATA, true) as BufferLine;\n newLines.push(newLine);\n }\n if (newLines.length > 0) {\n toInsert.push({\n // countToInsert here gets the actual index, taking into account other inserted items.\n // using this we can iterate through the list forwards\n start: y + wrappedLines.length + countToInsert,\n newLines\n });\n countToInsert += newLines.length;\n }\n wrappedLines.push(...newLines);\n\n // Copy buffer data to new locations, this needs to happen backwards to do in-place\n let destLineIndex = destLineLengths.length - 1; // Math.floor(cellsNeeded / newCols);\n let destCol = destLineLengths[destLineIndex]; // cellsNeeded % newCols;\n if (destCol === 0) {\n destLineIndex--;\n destCol = destLineLengths[destLineIndex];\n }\n let srcLineIndex = wrappedLines.length - linesToAdd - 1;\n let srcCol = lastLineLength;\n while (srcLineIndex >= 0) {\n const cellsToCopy = Math.min(srcCol, destCol);\n if (wrappedLines[destLineIndex] === undefined) {\n // Sanity check that the line exists, this has been known to fail for an unknown reason\n // which would stop the reflow from happening if an exception would throw.\n break;\n }\n wrappedLines[destLineIndex].copyCellsFrom(wrappedLines[srcLineIndex], srcCol - cellsToCopy, destCol - cellsToCopy, cellsToCopy, true);\n destCol -= cellsToCopy;\n if (destCol === 0) {\n destLineIndex--;\n destCol = destLineLengths[destLineIndex];\n }\n srcCol -= cellsToCopy;\n if (srcCol === 0) {\n srcLineIndex--;\n const wrappedLinesIndex = Math.max(srcLineIndex, 0);\n srcCol = getWrappedLineTrimmedLength(wrappedLines, wrappedLinesIndex, this._cols);\n }\n }\n\n // Null out the end of the line ends if a wide character wrapped to the following line\n for (let i = 0; i < wrappedLines.length; i++) {\n if (destLineLengths[i] < newCols) {\n wrappedLines[i].setCell(destLineLengths[i], nullCell);\n }\n }\n\n // Adjust viewport as needed\n let viewportAdjustments = linesToAdd - trimmedLines;\n while (viewportAdjustments-- > 0) {\n if (this.ybase === 0) {\n if (this.y < newRows - 1) {\n this.y++;\n this.lines.pop();\n } else {\n this.ybase++;\n this.ydisp++;\n }\n } else {\n // Ensure ybase does not exceed its maximum value\n if (this.ybase < Math.min(this.lines.maxLength, this.lines.length + countToInsert) - newRows) {\n if (this.ybase === this.ydisp) {\n this.ydisp++;\n }\n this.ybase++;\n }\n }\n }\n this.savedY = Math.min(this.savedY + linesToAdd, this.ybase + newRows - 1);\n }\n\n // Rearrange lines in the buffer if there are any insertions, this is done at the end rather\n // than earlier so that it's a single O(n) pass through the buffer, instead of O(n^2) from many\n // costly calls to CircularList.splice.\n if (toInsert.length > 0) {\n // Record buffer insert events and then play them back backwards so that the indexes are\n // correct\n const insertEvents: IInsertEvent[] = [];\n\n // Record original lines so they don't get overridden when we rearrange the list\n const originalLines: BufferLine[] = [];\n for (let i = 0; i < this.lines.length; i++) {\n originalLines.push(this.lines.get(i) as BufferLine);\n }\n const originalLinesLength = this.lines.length;\n\n let originalLineIndex = originalLinesLength - 1;\n let nextToInsertIndex = 0;\n let nextToInsert = toInsert[nextToInsertIndex];\n this.lines.length = Math.min(this.lines.maxLength, this.lines.length + countToInsert);\n let countInsertedSoFar = 0;\n for (let i = Math.min(this.lines.maxLength - 1, originalLinesLength + countToInsert - 1); i >= 0; i--) {\n if (nextToInsert && nextToInsert.start > originalLineIndex + countInsertedSoFar) {\n // Insert extra lines here, adjusting i as needed\n for (let nextI = nextToInsert.newLines.length - 1; nextI >= 0; nextI--) {\n this.lines.set(i--, nextToInsert.newLines[nextI]);\n }\n i++;\n\n // Create insert events for later\n insertEvents.push({\n index: originalLineIndex + 1,\n amount: nextToInsert.newLines.length\n });\n\n countInsertedSoFar += nextToInsert.newLines.length;\n nextToInsert = toInsert[++nextToInsertIndex];\n } else {\n this.lines.set(i, originalLines[originalLineIndex--]);\n }\n }\n\n // Update markers\n let insertCountEmitted = 0;\n for (let i = insertEvents.length - 1; i >= 0; i--) {\n insertEvents[i].index += insertCountEmitted;\n this.lines.onInsertEmitter.fire(insertEvents[i]);\n insertCountEmitted += insertEvents[i].amount;\n }\n const amountToTrim = Math.max(0, originalLinesLength + countToInsert - this.lines.maxLength);\n if (amountToTrim > 0) {\n this.lines.onTrimEmitter.fire(amountToTrim);\n }\n }\n }\n\n // private _reflowSmallerGetLinesNeeded()\n\n /**\n * Translates a string index back to a BufferIndex.\n * To get the correct buffer position the string must start at `startCol` 0\n * (default in translateBufferLineToString).\n * The method also works on wrapped line strings given rows were not trimmed.\n * The method operates on the CharData string length, there are no\n * additional content or boundary checks. Therefore the string and the buffer\n * should not be altered in between.\n * TODO: respect trim flag after fixing #1685\n * @param lineIndex line index the string was retrieved from\n * @param stringIndex index within the string\n * @param startCol column offset the string was retrieved from\n */\n public stringIndexToBufferIndex(lineIndex: number, stringIndex: number, trimRight: boolean = false): BufferIndex {\n while (stringIndex) {\n const line = this.lines.get(lineIndex);\n if (!line) {\n return [-1, -1];\n }\n const length = (trimRight) ? line.getTrimmedLength() : line.length;\n for (let i = 0; i < length; ++i) {\n if (line.get(i)[CHAR_DATA_WIDTH_INDEX]) {\n // empty cells report a string length of 0, but get replaced\n // with a whitespace in translateToString, thus replace with 1\n stringIndex -= line.get(i)[CHAR_DATA_CHAR_INDEX].length || 1;\n }\n if (stringIndex < 0) {\n return [lineIndex, i];\n }\n }\n lineIndex++;\n }\n return [lineIndex, 0];\n }\n\n /**\n * Translates a buffer line to a string, with optional start and end columns.\n * Wide characters will count as two columns in the resulting string. This\n * function is useful for getting the actual text underneath the raw selection\n * position.\n * @param line The line being translated.\n * @param trimRight Whether to trim whitespace to the right.\n * @param startCol The column to start at.\n * @param endCol The column to end at.\n */\n public translateBufferLineToString(lineIndex: number, trimRight: boolean, startCol: number = 0, endCol?: number): string {\n const line = this.lines.get(lineIndex);\n if (!line) {\n return '';\n }\n return line.translateToString(trimRight, startCol, endCol);\n }\n\n public getWrappedRangeForLine(y: number): { first: number, last: number } {\n let first = y;\n let last = y;\n // Scan upwards for wrapped lines\n while (first > 0 && this.lines.get(first)!.isWrapped) {\n first--;\n }\n // Scan downwards for wrapped lines\n while (last + 1 < this.lines.length && this.lines.get(last + 1)!.isWrapped) {\n last++;\n }\n return { first, last };\n }\n\n /**\n * Setup the tab stops.\n * @param i The index to start setting up tab stops from.\n */\n public setupTabStops(i?: number): void {\n if (i !== null && i !== undefined) {\n if (!this.tabs[i]) {\n i = this.prevStop(i);\n }\n } else {\n this.tabs = {};\n i = 0;\n }\n\n for (; i < this._cols; i += this._optionsService.rawOptions.tabStopWidth) {\n this.tabs[i] = true;\n }\n }\n\n /**\n * Move the cursor to the previous tab stop from the given position (default is current).\n * @param x The position to move the cursor to the previous tab stop.\n */\n public prevStop(x?: number): number {\n if (x === null || x === undefined) {\n x = this.x;\n }\n while (!this.tabs[--x] && x > 0);\n return x >= this._cols ? this._cols - 1 : x < 0 ? 0 : x;\n }\n\n /**\n * Move the cursor one tab stop forward from the given position (default is current).\n * @param x The position to move the cursor one tab stop forward.\n */\n public nextStop(x?: number): number {\n if (x === null || x === undefined) {\n x = this.x;\n }\n while (!this.tabs[++x] && x < this._cols);\n return x >= this._cols ? this._cols - 1 : x < 0 ? 0 : x;\n }\n\n /**\n * Clears markers on single line.\n * @param y The line to clear.\n */\n public clearMarkers(y: number): void {\n this._isClearing = true;\n for (let i = 0; i < this.markers.length; i++) {\n if (this.markers[i].line === y) {\n this.markers[i].dispose();\n this.markers.splice(i--, 1);\n }\n }\n this._isClearing = false;\n }\n\n /**\n * Clears markers on all lines\n */\n public clearAllMarkers(): void {\n this._isClearing = true;\n for (let i = 0; i < this.markers.length; i++) {\n this.markers[i].dispose();\n this.markers.splice(i--, 1);\n }\n this._isClearing = false;\n }\n\n public addMarker(y: number): Marker {\n const marker = new Marker(y);\n this.markers.push(marker);\n marker.register(this.lines.onTrim(amount => {\n marker.line -= amount;\n // The marker should be disposed when the line is trimmed from the buffer\n if (marker.line < 0) {\n marker.dispose();\n }\n }));\n marker.register(this.lines.onInsert(event => {\n if (marker.line >= event.index) {\n marker.line += event.amount;\n }\n }));\n marker.register(this.lines.onDelete(event => {\n // Delete the marker if it's within the range\n if (marker.line >= event.index && marker.line < event.index + event.amount) {\n marker.dispose();\n }\n\n // Shift the marker if it's after the deleted range\n if (marker.line > event.index) {\n marker.line -= event.amount;\n }\n }));\n marker.register(marker.onDispose(() => this._removeMarker(marker)));\n return marker;\n }\n\n private _removeMarker(marker: Marker): void {\n if (!this._isClearing) {\n this.markers.splice(this.markers.indexOf(marker), 1);\n }\n }\n\n public iterator(trimRight: boolean, startIndex?: number, endIndex?: number, startOverscan?: number, endOverscan?: number): IBufferStringIterator {\n return new BufferStringIterator(this, trimRight, startIndex, endIndex, startOverscan, endOverscan);\n }\n}\n\n/**\n * Iterator to get unwrapped content strings from the buffer.\n * The iterator returns at least the string data between the borders\n * `startIndex` and `endIndex` (exclusive) and will expand the lines\n * by `startOverscan` to the top and by `endOverscan` to the bottom,\n * if no new line was found in between.\n * It will never read/return string data beyond `startIndex - startOverscan`\n * or `endIndex + endOverscan`. Therefore the first and last line might be truncated.\n * It is possible to always get the full string for the first and last line as well\n * by setting the overscan values to the actual buffer length. This not recommended\n * since it might return the whole buffer within a single string in a worst case scenario.\n */\nexport class BufferStringIterator implements IBufferStringIterator {\n private _current: number;\n\n constructor(\n private _buffer: IBuffer,\n private _trimRight: boolean,\n private _startIndex: number = 0,\n private _endIndex: number = _buffer.lines.length,\n private _startOverscan: number = 0,\n private _endOverscan: number = 0\n ) {\n if (this._startIndex < 0) {\n this._startIndex = 0;\n }\n if (this._endIndex > this._buffer.lines.length) {\n this._endIndex = this._buffer.lines.length;\n }\n this._current = this._startIndex;\n }\n\n public hasNext(): boolean {\n return this._current < this._endIndex;\n }\n\n public next(): IBufferStringIteratorResult {\n const range = this._buffer.getWrappedRangeForLine(this._current);\n // limit search window to overscan value at both borders\n if (range.first < this._startIndex - this._startOverscan) {\n range.first = this._startIndex - this._startOverscan;\n }\n if (range.last > this._endIndex + this._endOverscan) {\n range.last = this._endIndex + this._endOverscan;\n }\n // limit to current buffer length\n range.first = Math.max(range.first, 0);\n range.last = Math.min(range.last, this._buffer.lines.length);\n let content = '';\n for (let i = range.first; i <= range.last; ++i) {\n content += this._buffer.translateBufferLineToString(i, this._trimRight);\n }\n this._current = range.last + 1;\n return { range, content };\n }\n}\n", "/**\n * Copyright (c) 2018 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { CharData, IBufferLine, ICellData, IAttributeData, IExtendedAttrs } from 'common/Types';\nimport { stringFromCodePoint } from 'common/input/TextDecoder';\nimport { CHAR_DATA_CHAR_INDEX, CHAR_DATA_WIDTH_INDEX, CHAR_DATA_ATTR_INDEX, NULL_CELL_CHAR, NULL_CELL_WIDTH, NULL_CELL_CODE, WHITESPACE_CELL_CHAR, Content, BgFlags } from 'common/buffer/Constants';\nimport { CellData } from 'common/buffer/CellData';\nimport { AttributeData, ExtendedAttrs } from 'common/buffer/AttributeData';\n\n/**\n * buffer memory layout:\n *\n * | uint32_t | uint32_t | uint32_t |\n * | `content` | `FG` | `BG` |\n * | wcwidth(2) comb(1) codepoint(21) | flags(8) R(8) G(8) B(8) | flags(8) R(8) G(8) B(8) |\n */\n\n\n/** typed array slots taken by one cell */\nconst CELL_SIZE = 3;\n\n/**\n * Cell member indices.\n *\n * Direct access:\n * `content = data[column * CELL_SIZE + Cell.CONTENT];`\n * `fg = data[column * CELL_SIZE + Cell.FG];`\n * `bg = data[column * CELL_SIZE + Cell.BG];`\n */\nconst enum Cell {\n CONTENT = 0,\n FG = 1, // currently simply holds all known attrs\n BG = 2 // currently unused\n}\n\nexport const DEFAULT_ATTR_DATA = Object.freeze(new AttributeData());\n\n/**\n * Typed array based bufferline implementation.\n *\n * There are 2 ways to insert data into the cell buffer:\n * - `setCellFromCodepoint` + `addCodepointToCell`\n * Use these for data that is already UTF32.\n * Used during normal input in `InputHandler` for faster buffer access.\n * - `setCell`\n * This method takes a CellData object and stores the data in the buffer.\n * Use `CellData.fromCharData` to create the CellData object (e.g. from JS string).\n *\n * To retrieve data from the buffer use either one of the primitive methods\n * (if only one particular value is needed) or `loadCell`. For `loadCell` in a loop\n * memory allocs / GC pressure can be greatly reduced by reusing the CellData object.\n */\nexport class BufferLine implements IBufferLine {\n protected _data: Uint32Array;\n protected _combined: {[index: number]: string} = {};\n protected _extendedAttrs: {[index: number]: ExtendedAttrs} = {};\n public length: number;\n\n constructor(cols: number, fillCellData?: ICellData, public isWrapped: boolean = false) {\n this._data = new Uint32Array(cols * CELL_SIZE);\n const cell = fillCellData || CellData.fromCharData([0, NULL_CELL_CHAR, NULL_CELL_WIDTH, NULL_CELL_CODE]);\n for (let i = 0; i < cols; ++i) {\n this.setCell(i, cell);\n }\n this.length = cols;\n }\n\n /**\n * Get cell data CharData.\n * @deprecated\n */\n public get(index: number): CharData {\n const content = this._data[index * CELL_SIZE + Cell.CONTENT];\n const cp = content & Content.CODEPOINT_MASK;\n return [\n this._data[index * CELL_SIZE + Cell.FG],\n (content & Content.IS_COMBINED_MASK)\n ? this._combined[index]\n : (cp) ? stringFromCodePoint(cp) : '',\n content >> Content.WIDTH_SHIFT,\n (content & Content.IS_COMBINED_MASK)\n ? this._combined[index].charCodeAt(this._combined[index].length - 1)\n : cp\n ];\n }\n\n /**\n * Set cell data from CharData.\n * @deprecated\n */\n public set(index: number, value: CharData): void {\n this._data[index * CELL_SIZE + Cell.FG] = value[CHAR_DATA_ATTR_INDEX];\n if (value[CHAR_DATA_CHAR_INDEX].length > 1) {\n this._combined[index] = value[1];\n this._data[index * CELL_SIZE + Cell.CONTENT] = index | Content.IS_COMBINED_MASK | (value[CHAR_DATA_WIDTH_INDEX] << Content.WIDTH_SHIFT);\n } else {\n this._data[index * CELL_SIZE + Cell.CONTENT] = value[CHAR_DATA_CHAR_INDEX].charCodeAt(0) | (value[CHAR_DATA_WIDTH_INDEX] << Content.WIDTH_SHIFT);\n }\n }\n\n /**\n * primitive getters\n * use these when only one value is needed, otherwise use `loadCell`\n */\n public getWidth(index: number): number {\n return this._data[index * CELL_SIZE + Cell.CONTENT] >> Content.WIDTH_SHIFT;\n }\n\n /** Test whether content has width. */\n public hasWidth(index: number): number {\n return this._data[index * CELL_SIZE + Cell.CONTENT] & Content.WIDTH_MASK;\n }\n\n /** Get FG cell component. */\n public getFg(index: number): number {\n return this._data[index * CELL_SIZE + Cell.FG];\n }\n\n /** Get BG cell component. */\n public getBg(index: number): number {\n return this._data[index * CELL_SIZE + Cell.BG];\n }\n\n /**\n * Test whether contains any chars.\n * Basically an empty has no content, but other cells might differ in FG/BG\n * from real empty cells.\n * */\n public hasContent(index: number): number {\n return this._data[index * CELL_SIZE + Cell.CONTENT] & Content.HAS_CONTENT_MASK;\n }\n\n /**\n * Get codepoint of the cell.\n * To be in line with `code` in CharData this either returns\n * a single UTF32 codepoint or the last codepoint of a combined string.\n */\n public getCodePoint(index: number): number {\n const content = this._data[index * CELL_SIZE + Cell.CONTENT];\n if (content & Content.IS_COMBINED_MASK) {\n return this._combined[index].charCodeAt(this._combined[index].length - 1);\n }\n return content & Content.CODEPOINT_MASK;\n }\n\n /** Test whether the cell contains a combined string. */\n public isCombined(index: number): number {\n return this._data[index * CELL_SIZE + Cell.CONTENT] & Content.IS_COMBINED_MASK;\n }\n\n /** Returns the string content of the cell. */\n public getString(index: number): string {\n const content = this._data[index * CELL_SIZE + Cell.CONTENT];\n if (content & Content.IS_COMBINED_MASK) {\n return this._combined[index];\n }\n if (content & Content.CODEPOINT_MASK) {\n return stringFromCodePoint(content & Content.CODEPOINT_MASK);\n }\n // return empty string for empty cells\n return '';\n }\n\n /**\n * Load data at `index` into `cell`. This is used to access cells in a way that's more friendly\n * to GC as it significantly reduced the amount of new objects/references needed.\n */\n public loadCell(index: number, cell: ICellData): ICellData {\n const startIndex = index * CELL_SIZE;\n cell.content = this._data[startIndex + Cell.CONTENT];\n cell.fg = this._data[startIndex + Cell.FG];\n cell.bg = this._data[startIndex + Cell.BG];\n if (cell.content & Content.IS_COMBINED_MASK) {\n cell.combinedData = this._combined[index];\n }\n if (cell.bg & BgFlags.HAS_EXTENDED) {\n cell.extended = this._extendedAttrs[index];\n }\n return cell;\n }\n\n /**\n * Set data at `index` to `cell`.\n */\n public setCell(index: number, cell: ICellData): void {\n if (cell.content & Content.IS_COMBINED_MASK) {\n this._combined[index] = cell.combinedData;\n }\n if (cell.bg & BgFlags.HAS_EXTENDED) {\n this._extendedAttrs[index] = cell.extended;\n }\n this._data[index * CELL_SIZE + Cell.CONTENT] = cell.content;\n this._data[index * CELL_SIZE + Cell.FG] = cell.fg;\n this._data[index * CELL_SIZE + Cell.BG] = cell.bg;\n }\n\n /**\n * Set cell data from input handler.\n * Since the input handler see the incoming chars as UTF32 codepoints,\n * it gets an optimized access method.\n */\n public setCellFromCodePoint(index: number, codePoint: number, width: number, fg: number, bg: number, eAttrs: IExtendedAttrs): void {\n if (bg & BgFlags.HAS_EXTENDED) {\n this._extendedAttrs[index] = eAttrs;\n }\n this._data[index * CELL_SIZE + Cell.CONTENT] = codePoint | (width << Content.WIDTH_SHIFT);\n this._data[index * CELL_SIZE + Cell.FG] = fg;\n this._data[index * CELL_SIZE + Cell.BG] = bg;\n }\n\n /**\n * Add a codepoint to a cell from input handler.\n * During input stage combining chars with a width of 0 follow and stack\n * onto a leading char. Since we already set the attrs\n * by the previous `setDataFromCodePoint` call, we can omit it here.\n */\n public addCodepointToCell(index: number, codePoint: number): void {\n let content = this._data[index * CELL_SIZE + Cell.CONTENT];\n if (content & Content.IS_COMBINED_MASK) {\n // we already have a combined string, simply add\n this._combined[index] += stringFromCodePoint(codePoint);\n } else {\n if (content & Content.CODEPOINT_MASK) {\n // normal case for combining chars:\n // - move current leading char + new one into combined string\n // - set combined flag\n this._combined[index] = stringFromCodePoint(content & Content.CODEPOINT_MASK) + stringFromCodePoint(codePoint);\n content &= ~Content.CODEPOINT_MASK; // set codepoint in buffer to 0\n content |= Content.IS_COMBINED_MASK;\n } else {\n // should not happen - we actually have no data in the cell yet\n // simply set the data in the cell buffer with a width of 1\n content = codePoint | (1 << Content.WIDTH_SHIFT);\n }\n this._data[index * CELL_SIZE + Cell.CONTENT] = content;\n }\n }\n\n public insertCells(pos: number, n: number, fillCellData: ICellData, eraseAttr?: IAttributeData): void {\n pos %= this.length;\n\n // handle fullwidth at pos: reset cell one to the left if pos is second cell of a wide char\n if (pos && this.getWidth(pos - 1) === 2) {\n this.setCellFromCodePoint(pos - 1, 0, 1, eraseAttr?.fg || 0, eraseAttr?.bg || 0, eraseAttr?.extended || new ExtendedAttrs());\n }\n\n if (n < this.length - pos) {\n const cell = new CellData();\n for (let i = this.length - pos - n - 1; i >= 0; --i) {\n this.setCell(pos + n + i, this.loadCell(pos + i, cell));\n }\n for (let i = 0; i < n; ++i) {\n this.setCell(pos + i, fillCellData);\n }\n } else {\n for (let i = pos; i < this.length; ++i) {\n this.setCell(i, fillCellData);\n }\n }\n\n // handle fullwidth at line end: reset last cell if it is first cell of a wide char\n if (this.getWidth(this.length - 1) === 2) {\n this.setCellFromCodePoint(this.length - 1, 0, 1, eraseAttr?.fg || 0, eraseAttr?.bg || 0, eraseAttr?.extended || new ExtendedAttrs());\n }\n }\n\n public deleteCells(pos: number, n: number, fillCellData: ICellData, eraseAttr?: IAttributeData): void {\n pos %= this.length;\n if (n < this.length - pos) {\n const cell = new CellData();\n for (let i = 0; i < this.length - pos - n; ++i) {\n this.setCell(pos + i, this.loadCell(pos + n + i, cell));\n }\n for (let i = this.length - n; i < this.length; ++i) {\n this.setCell(i, fillCellData);\n }\n } else {\n for (let i = pos; i < this.length; ++i) {\n this.setCell(i, fillCellData);\n }\n }\n\n // handle fullwidth at pos:\n // - reset pos-1 if wide char\n // - reset pos if width==0 (previous second cell of a wide char)\n if (pos && this.getWidth(pos - 1) === 2) {\n this.setCellFromCodePoint(pos - 1, 0, 1, eraseAttr?.fg || 0, eraseAttr?.bg || 0, eraseAttr?.extended || new ExtendedAttrs());\n }\n if (this.getWidth(pos) === 0 && !this.hasContent(pos)) {\n this.setCellFromCodePoint(pos, 0, 1, eraseAttr?.fg || 0, eraseAttr?.bg || 0, eraseAttr?.extended || new ExtendedAttrs());\n }\n }\n\n public replaceCells(start: number, end: number, fillCellData: ICellData, eraseAttr?: IAttributeData): void {\n // handle fullwidth at start: reset cell one to the left if start is second cell of a wide char\n if (start && this.getWidth(start - 1) === 2) {\n this.setCellFromCodePoint(start - 1, 0, 1, eraseAttr?.fg || 0, eraseAttr?.bg || 0, eraseAttr?.extended || new ExtendedAttrs());\n }\n // handle fullwidth at last cell + 1: reset to empty cell if it is second part of a wide char\n if (end < this.length && this.getWidth(end - 1) === 2) {\n this.setCellFromCodePoint(end, 0, 1, eraseAttr?.fg || 0, eraseAttr?.bg || 0, eraseAttr?.extended || new ExtendedAttrs());\n }\n\n while (start < end && start < this.length) {\n this.setCell(start++, fillCellData);\n }\n }\n\n public resize(cols: number, fillCellData: ICellData): void {\n if (cols === this.length) {\n return;\n }\n if (cols > this.length) {\n const data = new Uint32Array(cols * CELL_SIZE);\n if (this.length) {\n if (cols * CELL_SIZE < this._data.length) {\n data.set(this._data.subarray(0, cols * CELL_SIZE));\n } else {\n data.set(this._data);\n }\n }\n this._data = data;\n for (let i = this.length; i < cols; ++i) {\n this.setCell(i, fillCellData);\n }\n } else {\n if (cols) {\n const data = new Uint32Array(cols * CELL_SIZE);\n data.set(this._data.subarray(0, cols * CELL_SIZE));\n this._data = data;\n // Remove any cut off combined data, FIXME: repeat this for extended attrs\n const keys = Object.keys(this._combined);\n for (let i = 0; i < keys.length; i++) {\n const key = parseInt(keys[i], 10);\n if (key >= cols) {\n delete this._combined[key];\n }\n }\n } else {\n this._data = new Uint32Array(0);\n this._combined = {};\n }\n }\n this.length = cols;\n }\n\n /** fill a line with fillCharData */\n public fill(fillCellData: ICellData): void {\n this._combined = {};\n this._extendedAttrs = {};\n for (let i = 0; i < this.length; ++i) {\n this.setCell(i, fillCellData);\n }\n }\n\n /** alter to a full copy of line */\n public copyFrom(line: BufferLine): void {\n if (this.length !== line.length) {\n this._data = new Uint32Array(line._data);\n } else {\n // use high speed copy if lengths are equal\n this._data.set(line._data);\n }\n this.length = line.length;\n this._combined = {};\n for (const el in line._combined) {\n this._combined[el] = line._combined[el];\n }\n this._extendedAttrs = {};\n for (const el in line._extendedAttrs) {\n this._extendedAttrs[el] = line._extendedAttrs[el];\n }\n this.isWrapped = line.isWrapped;\n }\n\n /** create a new clone */\n public clone(): IBufferLine {\n const newLine = new BufferLine(0);\n newLine._data = new Uint32Array(this._data);\n newLine.length = this.length;\n for (const el in this._combined) {\n newLine._combined[el] = this._combined[el];\n }\n for (const el in this._extendedAttrs) {\n newLine._extendedAttrs[el] = this._extendedAttrs[el];\n }\n newLine.isWrapped = this.isWrapped;\n return newLine;\n }\n\n public getTrimmedLength(): number {\n for (let i = this.length - 1; i >= 0; --i) {\n if ((this._data[i * CELL_SIZE + Cell.CONTENT] & Content.HAS_CONTENT_MASK)) {\n return i + (this._data[i * CELL_SIZE + Cell.CONTENT] >> Content.WIDTH_SHIFT);\n }\n }\n return 0;\n }\n\n public copyCellsFrom(src: BufferLine, srcCol: number, destCol: number, length: number, applyInReverse: boolean): void {\n const srcData = src._data;\n if (applyInReverse) {\n for (let cell = length - 1; cell >= 0; cell--) {\n for (let i = 0; i < CELL_SIZE; i++) {\n this._data[(destCol + cell) * CELL_SIZE + i] = srcData[(srcCol + cell) * CELL_SIZE + i];\n }\n }\n } else {\n for (let cell = 0; cell < length; cell++) {\n for (let i = 0; i < CELL_SIZE; i++) {\n this._data[(destCol + cell) * CELL_SIZE + i] = srcData[(srcCol + cell) * CELL_SIZE + i];\n }\n }\n }\n\n // Move any combined data over as needed, FIXME: repeat for extended attrs\n const srcCombinedKeys = Object.keys(src._combined);\n for (let i = 0; i < srcCombinedKeys.length; i++) {\n const key = parseInt(srcCombinedKeys[i], 10);\n if (key >= srcCol) {\n this._combined[key - srcCol + destCol] = src._combined[key];\n }\n }\n }\n\n public translateToString(trimRight: boolean = false, startCol: number = 0, endCol: number = this.length): string {\n if (trimRight) {\n endCol = Math.min(endCol, this.getTrimmedLength());\n }\n let result = '';\n while (startCol < endCol) {\n const content = this._data[startCol * CELL_SIZE + Cell.CONTENT];\n const cp = content & Content.CODEPOINT_MASK;\n result += (content & Content.IS_COMBINED_MASK) ? this._combined[startCol] : (cp) ? stringFromCodePoint(cp) : WHITESPACE_CELL_CHAR;\n startCol += (content >> Content.WIDTH_SHIFT) || 1; // always advance by 1\n }\n return result;\n }\n}\n", "/**\n * Copyright (c) 2021 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IBufferRange } from 'xterm';\n\nexport function getRangeLength(range: IBufferRange, bufferCols: number): number {\n if (range.start.y > range.end.y) {\n throw new Error(`Buffer range end (${range.end.x}, ${range.end.y}) cannot be before start (${range.start.x}, ${range.start.y})`);\n }\n return bufferCols * (range.end.y - range.start.y) + (range.end.x - range.start.x + 1);\n}\n", "/**\n * Copyright (c) 2019 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { BufferLine } from 'common/buffer/BufferLine';\nimport { CircularList } from 'common/CircularList';\nimport { IBufferLine, ICellData } from 'common/Types';\n\nexport interface INewLayoutResult {\n layout: number[];\n countRemoved: number;\n}\n\n/**\n * Evaluates and returns indexes to be removed after a reflow larger occurs. Lines will be removed\n * when a wrapped line unwraps.\n * @param lines The buffer lines.\n * @param newCols The columns after resize.\n */\nexport function reflowLargerGetLinesToRemove(lines: CircularList, oldCols: number, newCols: number, bufferAbsoluteY: number, nullCell: ICellData): number[] {\n // Gather all BufferLines that need to be removed from the Buffer here so that they can be\n // batched up and only committed once\n const toRemove: number[] = [];\n\n for (let y = 0; y < lines.length - 1; y++) {\n // Check if this row is wrapped\n let i = y;\n let nextLine = lines.get(++i) as BufferLine;\n if (!nextLine.isWrapped) {\n continue;\n }\n\n // Check how many lines it's wrapped for\n const wrappedLines: BufferLine[] = [lines.get(y) as BufferLine];\n while (i < lines.length && nextLine.isWrapped) {\n wrappedLines.push(nextLine);\n nextLine = lines.get(++i) as BufferLine;\n }\n\n // If these lines contain the cursor don't touch them, the program will handle fixing up wrapped\n // lines with the cursor\n if (bufferAbsoluteY >= y && bufferAbsoluteY < i) {\n y += wrappedLines.length - 1;\n continue;\n }\n\n // Copy buffer data to new locations\n let destLineIndex = 0;\n let destCol = getWrappedLineTrimmedLength(wrappedLines, destLineIndex, oldCols);\n let srcLineIndex = 1;\n let srcCol = 0;\n while (srcLineIndex < wrappedLines.length) {\n const srcTrimmedTineLength = getWrappedLineTrimmedLength(wrappedLines, srcLineIndex, oldCols);\n const srcRemainingCells = srcTrimmedTineLength - srcCol;\n const destRemainingCells = newCols - destCol;\n const cellsToCopy = Math.min(srcRemainingCells, destRemainingCells);\n\n wrappedLines[destLineIndex].copyCellsFrom(wrappedLines[srcLineIndex], srcCol, destCol, cellsToCopy, false);\n\n destCol += cellsToCopy;\n if (destCol === newCols) {\n destLineIndex++;\n destCol = 0;\n }\n srcCol += cellsToCopy;\n if (srcCol === srcTrimmedTineLength) {\n srcLineIndex++;\n srcCol = 0;\n }\n\n // Make sure the last cell isn't wide, if it is copy it to the current dest\n if (destCol === 0 && destLineIndex !== 0) {\n if (wrappedLines[destLineIndex - 1].getWidth(newCols - 1) === 2) {\n wrappedLines[destLineIndex].copyCellsFrom(wrappedLines[destLineIndex - 1], newCols - 1, destCol++, 1, false);\n // Null out the end of the last row\n wrappedLines[destLineIndex - 1].setCell(newCols - 1, nullCell);\n }\n }\n }\n\n // Clear out remaining cells or fragments could remain;\n wrappedLines[destLineIndex].replaceCells(destCol, newCols, nullCell);\n\n // Work backwards and remove any rows at the end that only contain null cells\n let countToRemove = 0;\n for (let i = wrappedLines.length - 1; i > 0; i--) {\n if (i > destLineIndex || wrappedLines[i].getTrimmedLength() === 0) {\n countToRemove++;\n } else {\n break;\n }\n }\n\n if (countToRemove > 0) {\n toRemove.push(y + wrappedLines.length - countToRemove); // index\n toRemove.push(countToRemove);\n }\n\n y += wrappedLines.length - 1;\n }\n return toRemove;\n}\n\n/**\n * Creates and return the new layout for lines given an array of indexes to be removed.\n * @param lines The buffer lines.\n * @param toRemove The indexes to remove.\n */\nexport function reflowLargerCreateNewLayout(lines: CircularList, toRemove: number[]): INewLayoutResult {\n const layout: number[] = [];\n // First iterate through the list and get the actual indexes to use for rows\n let nextToRemoveIndex = 0;\n let nextToRemoveStart = toRemove[nextToRemoveIndex];\n let countRemovedSoFar = 0;\n for (let i = 0; i < lines.length; i++) {\n if (nextToRemoveStart === i) {\n const countToRemove = toRemove[++nextToRemoveIndex];\n\n // Tell markers that there was a deletion\n lines.onDeleteEmitter.fire({\n index: i - countRemovedSoFar,\n amount: countToRemove\n });\n\n i += countToRemove - 1;\n countRemovedSoFar += countToRemove;\n nextToRemoveStart = toRemove[++nextToRemoveIndex];\n } else {\n layout.push(i);\n }\n }\n return {\n layout,\n countRemoved: countRemovedSoFar\n };\n}\n\n/**\n * Applies a new layout to the buffer. This essentially does the same as many splice calls but it's\n * done all at once in a single iteration through the list since splice is very expensive.\n * @param lines The buffer lines.\n * @param newLayout The new layout to apply.\n */\nexport function reflowLargerApplyNewLayout(lines: CircularList, newLayout: number[]): void {\n // Record original lines so they don't get overridden when we rearrange the list\n const newLayoutLines: BufferLine[] = [];\n for (let i = 0; i < newLayout.length; i++) {\n newLayoutLines.push(lines.get(newLayout[i]) as BufferLine);\n }\n\n // Rearrange the list\n for (let i = 0; i < newLayoutLines.length; i++) {\n lines.set(i, newLayoutLines[i]);\n }\n lines.length = newLayout.length;\n}\n\n/**\n * Gets the new line lengths for a given wrapped line. The purpose of this function it to pre-\n * compute the wrapping points since wide characters may need to be wrapped onto the following line.\n * This function will return an array of numbers of where each line wraps to, the resulting array\n * will only contain the values `newCols` (when the line does not end with a wide character) and\n * `newCols - 1` (when the line does end with a wide character), except for the last value which\n * will contain the remaining items to fill the line.\n *\n * Calling this with a `newCols` value of `1` will lock up.\n *\n * @param wrappedLines The wrapped lines to evaluate.\n * @param oldCols The columns before resize.\n * @param newCols The columns after resize.\n */\nexport function reflowSmallerGetNewLineLengths(wrappedLines: BufferLine[], oldCols: number, newCols: number): number[] {\n const newLineLengths: number[] = [];\n const cellsNeeded = wrappedLines.map((l, i) => getWrappedLineTrimmedLength(wrappedLines, i, oldCols)).reduce((p, c) => p + c);\n\n // Use srcCol and srcLine to find the new wrapping point, use that to get the cellsAvailable and\n // linesNeeded\n let srcCol = 0;\n let srcLine = 0;\n let cellsAvailable = 0;\n while (cellsAvailable < cellsNeeded) {\n if (cellsNeeded - cellsAvailable < newCols) {\n // Add the final line and exit the loop\n newLineLengths.push(cellsNeeded - cellsAvailable);\n break;\n }\n srcCol += newCols;\n const oldTrimmedLength = getWrappedLineTrimmedLength(wrappedLines, srcLine, oldCols);\n if (srcCol > oldTrimmedLength) {\n srcCol -= oldTrimmedLength;\n srcLine++;\n }\n const endsWithWide = wrappedLines[srcLine].getWidth(srcCol - 1) === 2;\n if (endsWithWide) {\n srcCol--;\n }\n const lineLength = endsWithWide ? newCols - 1 : newCols;\n newLineLengths.push(lineLength);\n cellsAvailable += lineLength;\n }\n\n return newLineLengths;\n}\n\nexport function getWrappedLineTrimmedLength(lines: BufferLine[], i: number, cols: number): number {\n // If this is the last row in the wrapped line, get the actual trimmed length\n if (i === lines.length - 1) {\n return lines[i].getTrimmedLength();\n }\n // Detect whether the following line starts with a wide character and the end of the current line\n // is null, if so then we can be pretty sure the null character should be excluded from the line\n // length]\n const endsInNull = !(lines[i].hasContent(cols - 1)) && lines[i].getWidth(cols - 1) === 1;\n const followingLineStartsWithWide = lines[i + 1].getWidth(0) === 2;\n if (endsInNull && followingLineStartsWithWide) {\n return cols - 1;\n }\n return cols;\n}\n", "/**\n * Copyright (c) 2017 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IBuffer, IBufferSet } from 'common/buffer/Types';\nimport { IAttributeData } from 'common/Types';\nimport { Buffer } from 'common/buffer/Buffer';\nimport { EventEmitter, IEvent } from 'common/EventEmitter';\nimport { IOptionsService, IBufferService } from 'common/services/Services';\nimport { Disposable } from 'common/Lifecycle';\n\n/**\n * The BufferSet represents the set of two buffers used by xterm terminals (normal and alt) and\n * provides also utilities for working with them.\n */\nexport class BufferSet extends Disposable implements IBufferSet {\n private _normal!: Buffer;\n private _alt!: Buffer;\n private _activeBuffer!: Buffer;\n\n private _onBufferActivate = this.register(new EventEmitter<{activeBuffer: IBuffer, inactiveBuffer: IBuffer}>());\n public get onBufferActivate(): IEvent<{activeBuffer: IBuffer, inactiveBuffer: IBuffer}> { return this._onBufferActivate.event; }\n\n /**\n * Create a new BufferSet for the given terminal.\n * @param _terminal - The terminal the BufferSet will belong to\n */\n constructor(\n private readonly _optionsService: IOptionsService,\n private readonly _bufferService: IBufferService\n ) {\n super();\n this.reset();\n }\n\n public reset(): void {\n this._normal = new Buffer(true, this._optionsService, this._bufferService);\n this._normal.fillViewportRows();\n\n // The alt buffer should never have scrollback.\n // See http://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-The-Alternate-Screen-Buffer\n this._alt = new Buffer(false, this._optionsService, this._bufferService);\n this._activeBuffer = this._normal;\n this._onBufferActivate.fire({\n activeBuffer: this._normal,\n inactiveBuffer: this._alt\n });\n\n this.setupTabStops();\n }\n\n /**\n * Returns the alt Buffer of the BufferSet\n */\n public get alt(): Buffer {\n return this._alt;\n }\n\n /**\n * Returns the normal Buffer of the BufferSet\n */\n public get active(): Buffer {\n return this._activeBuffer;\n }\n\n /**\n * Returns the currently active Buffer of the BufferSet\n */\n public get normal(): Buffer {\n return this._normal;\n }\n\n /**\n * Sets the normal Buffer of the BufferSet as its currently active Buffer\n */\n public activateNormalBuffer(): void {\n if (this._activeBuffer === this._normal) {\n return;\n }\n this._normal.x = this._alt.x;\n this._normal.y = this._alt.y;\n // The alt buffer should always be cleared when we switch to the normal\n // buffer. This frees up memory since the alt buffer should always be new\n // when activated.\n this._alt.clear();\n this._activeBuffer = this._normal;\n this._onBufferActivate.fire({\n activeBuffer: this._normal,\n inactiveBuffer: this._alt\n });\n }\n\n /**\n * Sets the alt Buffer of the BufferSet as its currently active Buffer\n */\n public activateAltBuffer(fillAttr?: IAttributeData): void {\n if (this._activeBuffer === this._alt) {\n return;\n }\n // Since the alt buffer is always cleared when the normal buffer is\n // activated, we want to fill it when switching to it.\n this._alt.fillViewportRows(fillAttr);\n this._alt.x = this._normal.x;\n this._alt.y = this._normal.y;\n this._activeBuffer = this._alt;\n this._onBufferActivate.fire({\n activeBuffer: this._alt,\n inactiveBuffer: this._normal\n });\n }\n\n /**\n * Resizes both normal and alt buffers, adjusting their data accordingly.\n * @param newCols The new number of columns.\n * @param newRows The new number of rows.\n */\n public resize(newCols: number, newRows: number): void {\n this._normal.resize(newCols, newRows);\n this._alt.resize(newCols, newRows);\n }\n\n /**\n * Setup the tab stops.\n * @param i The index to start setting up tab stops from.\n */\n public setupTabStops(i?: number): void {\n this._normal.setupTabStops(i);\n this._alt.setupTabStops(i);\n }\n}\n", "/**\n * Copyright (c) 2018 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { CharData, ICellData, IExtendedAttrs } from 'common/Types';\nimport { stringFromCodePoint } from 'common/input/TextDecoder';\nimport { CHAR_DATA_CHAR_INDEX, CHAR_DATA_WIDTH_INDEX, CHAR_DATA_ATTR_INDEX, Content } from 'common/buffer/Constants';\nimport { AttributeData, ExtendedAttrs } from 'common/buffer/AttributeData';\n\n/**\n * CellData - represents a single Cell in the terminal buffer.\n */\nexport class CellData extends AttributeData implements ICellData {\n /** Helper to create CellData from CharData. */\n public static fromCharData(value: CharData): CellData {\n const obj = new CellData();\n obj.setFromCharData(value);\n return obj;\n }\n /** Primitives from terminal buffer. */\n public content = 0;\n public fg = 0;\n public bg = 0;\n public extended: IExtendedAttrs = new ExtendedAttrs();\n public combinedData = '';\n /** Whether cell contains a combined string. */\n public isCombined(): number {\n return this.content & Content.IS_COMBINED_MASK;\n }\n /** Width of the cell. */\n public getWidth(): number {\n return this.content >> Content.WIDTH_SHIFT;\n }\n /** JS string of the content. */\n public getChars(): string {\n if (this.content & Content.IS_COMBINED_MASK) {\n return this.combinedData;\n }\n if (this.content & Content.CODEPOINT_MASK) {\n return stringFromCodePoint(this.content & Content.CODEPOINT_MASK);\n }\n return '';\n }\n /**\n * Codepoint of cell\n * Note this returns the UTF32 codepoint of single chars,\n * if content is a combined string it returns the codepoint\n * of the last char in string to be in line with code in CharData.\n * */\n public getCode(): number {\n return (this.isCombined())\n ? this.combinedData.charCodeAt(this.combinedData.length - 1)\n : this.content & Content.CODEPOINT_MASK;\n }\n /** Set data from CharData */\n public setFromCharData(value: CharData): void {\n this.fg = value[CHAR_DATA_ATTR_INDEX];\n this.bg = 0;\n let combined = false;\n // surrogates and combined strings need special treatment\n if (value[CHAR_DATA_CHAR_INDEX].length > 2) {\n combined = true;\n }\n else if (value[CHAR_DATA_CHAR_INDEX].length === 2) {\n const code = value[CHAR_DATA_CHAR_INDEX].charCodeAt(0);\n // if the 2-char string is a surrogate create single codepoint\n // everything else is combined\n if (0xD800 <= code && code <= 0xDBFF) {\n const second = value[CHAR_DATA_CHAR_INDEX].charCodeAt(1);\n if (0xDC00 <= second && second <= 0xDFFF) {\n this.content = ((code - 0xD800) * 0x400 + second - 0xDC00 + 0x10000) | (value[CHAR_DATA_WIDTH_INDEX] << Content.WIDTH_SHIFT);\n }\n else {\n combined = true;\n }\n }\n else {\n combined = true;\n }\n }\n else {\n this.content = value[CHAR_DATA_CHAR_INDEX].charCodeAt(0) | (value[CHAR_DATA_WIDTH_INDEX] << Content.WIDTH_SHIFT);\n }\n if (combined) {\n this.combinedData = value[CHAR_DATA_CHAR_INDEX];\n this.content = Content.IS_COMBINED_MASK | (value[CHAR_DATA_WIDTH_INDEX] << Content.WIDTH_SHIFT);\n }\n }\n /** Get data as CharData. */\n public getAsCharData(): CharData {\n return [this.fg, this.getChars(), this.getWidth(), this.getCode()];\n }\n}\n", "/**\n * Copyright (c) 2019 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nexport const DEFAULT_COLOR = 256;\nexport const DEFAULT_ATTR = (0 << 18) | (DEFAULT_COLOR << 9) | (256 << 0);\n\nexport const CHAR_DATA_ATTR_INDEX = 0;\nexport const CHAR_DATA_CHAR_INDEX = 1;\nexport const CHAR_DATA_WIDTH_INDEX = 2;\nexport const CHAR_DATA_CODE_INDEX = 3;\n\n/**\n * Null cell - a real empty cell (containing nothing).\n * Note that code should always be 0 for a null cell as\n * several test condition of the buffer line rely on this.\n */\nexport const NULL_CELL_CHAR = '';\nexport const NULL_CELL_WIDTH = 1;\nexport const NULL_CELL_CODE = 0;\n\n/**\n * Whitespace cell.\n * This is meant as a replacement for empty cells when needed\n * during rendering lines to preserve correct aligment.\n */\nexport const WHITESPACE_CELL_CHAR = ' ';\nexport const WHITESPACE_CELL_WIDTH = 1;\nexport const WHITESPACE_CELL_CODE = 32;\n\n/**\n * Bitmasks for accessing data in `content`.\n */\nexport const enum Content {\n /**\n * bit 1..21 codepoint, max allowed in UTF32 is 0x10FFFF (21 bits taken)\n * read: `codepoint = content & Content.codepointMask;`\n * write: `content |= codepoint & Content.codepointMask;`\n * shortcut if precondition `codepoint <= 0x10FFFF` is met:\n * `content |= codepoint;`\n */\n CODEPOINT_MASK = 0x1FFFFF,\n\n /**\n * bit 22 flag indication whether a cell contains combined content\n * read: `isCombined = content & Content.isCombined;`\n * set: `content |= Content.isCombined;`\n * clear: `content &= ~Content.isCombined;`\n */\n IS_COMBINED_MASK = 0x200000, // 1 << 21\n\n /**\n * bit 1..22 mask to check whether a cell contains any string data\n * we need to check for codepoint and isCombined bits to see\n * whether a cell contains anything\n * read: `isEmpty = !(content & Content.hasContent)`\n */\n HAS_CONTENT_MASK = 0x3FFFFF,\n\n /**\n * bit 23..24 wcwidth value of cell, takes 2 bits (ranges from 0..2)\n * read: `width = (content & Content.widthMask) >> Content.widthShift;`\n * `hasWidth = content & Content.widthMask;`\n * as long as wcwidth is highest value in `content`:\n * `width = content >> Content.widthShift;`\n * write: `content |= (width << Content.widthShift) & Content.widthMask;`\n * shortcut if precondition `0 <= width <= 3` is met:\n * `content |= width << Content.widthShift;`\n */\n WIDTH_MASK = 0xC00000, // 3 << 22\n WIDTH_SHIFT = 22\n}\n\nexport const enum Attributes {\n /**\n * bit 1..8 blue in RGB, color in P256 and P16\n */\n BLUE_MASK = 0xFF,\n BLUE_SHIFT = 0,\n PCOLOR_MASK = 0xFF,\n PCOLOR_SHIFT = 0,\n\n /**\n * bit 9..16 green in RGB\n */\n GREEN_MASK = 0xFF00,\n GREEN_SHIFT = 8,\n\n /**\n * bit 17..24 red in RGB\n */\n RED_MASK = 0xFF0000,\n RED_SHIFT = 16,\n\n /**\n * bit 25..26 color mode: DEFAULT (0) | P16 (1) | P256 (2) | RGB (3)\n */\n CM_MASK = 0x3000000,\n CM_DEFAULT = 0,\n CM_P16 = 0x1000000,\n CM_P256 = 0x2000000,\n CM_RGB = 0x3000000,\n\n /**\n * bit 1..24 RGB room\n */\n RGB_MASK = 0xFFFFFF\n}\n\nexport const enum FgFlags {\n /**\n * bit 27..32\n */\n INVERSE = 0x4000000,\n BOLD = 0x8000000,\n UNDERLINE = 0x10000000,\n BLINK = 0x20000000,\n INVISIBLE = 0x40000000,\n STRIKETHROUGH = 0x80000000,\n}\n\nexport const enum BgFlags {\n /**\n * bit 27..32 (upper 3 unused)\n */\n ITALIC = 0x4000000,\n DIM = 0x8000000,\n HAS_EXTENDED = 0x10000000\n}\n\nexport const enum UnderlineStyle {\n NONE = 0,\n SINGLE = 1,\n DOUBLE = 2,\n CURLY = 3,\n DOTTED = 4,\n DASHED = 5\n}\n", "/**\n * Copyright (c) 2018 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { EventEmitter, IEvent } from 'common/EventEmitter';\nimport { Disposable } from 'common/Lifecycle';\nimport { IMarker } from 'common/Types';\n\nexport class Marker extends Disposable implements IMarker {\n private static _nextId = 1;\n\n private _id: number = Marker._nextId++;\n public isDisposed: boolean = false;\n\n public get id(): number { return this._id; }\n\n private _onDispose = new EventEmitter();\n public get onDispose(): IEvent { return this._onDispose.event; }\n\n constructor(\n public line: number\n ) {\n super();\n }\n\n public dispose(): void {\n if (this.isDisposed) {\n return;\n }\n this.isDisposed = true;\n this.line = -1;\n // Emit before super.dispose such that dispose listeners get a change to react\n this._onDispose.fire();\n super.dispose();\n }\n}\n", "/**\n * Copyright (c) 2016 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { ICharset } from 'common/Types';\n\n/**\n * The character sets supported by the terminal. These enable several languages\n * to be represented within the terminal with only 8-bit encoding. See ISO 2022\n * for a discussion on character sets. Only VT100 character sets are supported.\n */\nexport const CHARSETS: { [key: string]: ICharset | undefined } = {};\n\n/**\n * The default character set, US.\n */\nexport const DEFAULT_CHARSET: ICharset | undefined = CHARSETS['B'];\n\n/**\n * DEC Special Character and Line Drawing Set.\n * Reference: http://vt100.net/docs/vt102-ug/table5-13.html\n * A lot of curses apps use this if they see TERM=xterm.\n * testing: echo -e '\\e(0a\\e(B'\n * The xterm output sometimes seems to conflict with the\n * reference above. xterm seems in line with the reference\n * when running vttest however.\n * The table below now uses xterm's output from vttest.\n */\nCHARSETS['0'] = {\n '`': '\\u25c6', // '◆'\n 'a': '\\u2592', // '▒'\n 'b': '\\u2409', // '␉' (HT)\n 'c': '\\u240c', // '␌' (FF)\n 'd': '\\u240d', // '␍' (CR)\n 'e': '\\u240a', // '␊' (LF)\n 'f': '\\u00b0', // '°'\n 'g': '\\u00b1', // '±'\n 'h': '\\u2424', // '␤' (NL)\n 'i': '\\u240b', // '␋' (VT)\n 'j': '\\u2518', // '┘'\n 'k': '\\u2510', // '┐'\n 'l': '\\u250c', // '┌'\n 'm': '\\u2514', // '└'\n 'n': '\\u253c', // '┼'\n 'o': '\\u23ba', // '⎺'\n 'p': '\\u23bb', // '⎻'\n 'q': '\\u2500', // '─'\n 'r': '\\u23bc', // '⎼'\n 's': '\\u23bd', // '⎽'\n 't': '\\u251c', // '├'\n 'u': '\\u2524', // '┤'\n 'v': '\\u2534', // '┴'\n 'w': '\\u252c', // '┬'\n 'x': '\\u2502', // '│'\n 'y': '\\u2264', // '≤'\n 'z': '\\u2265', // '≥'\n '{': '\\u03c0', // 'π'\n '|': '\\u2260', // '≠'\n '}': '\\u00a3', // '£'\n '~': '\\u00b7' // '·'\n};\n\n/**\n * British character set\n * ESC (A\n * Reference: http://vt100.net/docs/vt220-rm/table2-5.html\n */\nCHARSETS['A'] = {\n '#': '£'\n};\n\n/**\n * United States character set\n * ESC (B\n */\nCHARSETS['B'] = undefined;\n\n/**\n * Dutch character set\n * ESC (4\n * Reference: http://vt100.net/docs/vt220-rm/table2-6.html\n */\nCHARSETS['4'] = {\n '#': '£',\n '@': '¾',\n '[': 'ij',\n '\\\\': '½',\n ']': '|',\n '{': '¨',\n '|': 'f',\n '}': '¼',\n '~': '´'\n};\n\n/**\n * Finnish character set\n * ESC (C or ESC (5\n * Reference: http://vt100.net/docs/vt220-rm/table2-7.html\n */\nCHARSETS['C'] =\nCHARSETS['5'] = {\n '[': 'Ä',\n '\\\\': 'Ö',\n ']': 'Å',\n '^': 'Ü',\n '`': 'é',\n '{': 'ä',\n '|': 'ö',\n '}': 'å',\n '~': 'ü'\n};\n\n/**\n * French character set\n * ESC (R\n * Reference: http://vt100.net/docs/vt220-rm/table2-8.html\n */\nCHARSETS['R'] = {\n '#': '£',\n '@': 'à',\n '[': '°',\n '\\\\': 'ç',\n ']': '§',\n '{': 'é',\n '|': 'ù',\n '}': 'è',\n '~': '¨'\n};\n\n/**\n * French Canadian character set\n * ESC (Q\n * Reference: http://vt100.net/docs/vt220-rm/table2-9.html\n */\nCHARSETS['Q'] = {\n '@': 'à',\n '[': 'â',\n '\\\\': 'ç',\n ']': 'ê',\n '^': 'î',\n '`': 'ô',\n '{': 'é',\n '|': 'ù',\n '}': 'è',\n '~': 'û'\n};\n\n/**\n * German character set\n * ESC (K\n * Reference: http://vt100.net/docs/vt220-rm/table2-10.html\n */\nCHARSETS['K'] = {\n '@': '§',\n '[': 'Ä',\n '\\\\': 'Ö',\n ']': 'Ü',\n '{': 'ä',\n '|': 'ö',\n '}': 'ü',\n '~': 'ß'\n};\n\n/**\n * Italian character set\n * ESC (Y\n * Reference: http://vt100.net/docs/vt220-rm/table2-11.html\n */\nCHARSETS['Y'] = {\n '#': '£',\n '@': '§',\n '[': '°',\n '\\\\': 'ç',\n ']': 'é',\n '`': 'ù',\n '{': 'à',\n '|': 'ò',\n '}': 'è',\n '~': 'ì'\n};\n\n/**\n * Norwegian/Danish character set\n * ESC (E or ESC (6\n * Reference: http://vt100.net/docs/vt220-rm/table2-12.html\n */\nCHARSETS['E'] =\nCHARSETS['6'] = {\n '@': 'Ä',\n '[': 'Æ',\n '\\\\': 'Ø',\n ']': 'Å',\n '^': 'Ü',\n '`': 'ä',\n '{': 'æ',\n '|': 'ø',\n '}': 'å',\n '~': 'ü'\n};\n\n/**\n * Spanish character set\n * ESC (Z\n * Reference: http://vt100.net/docs/vt220-rm/table2-13.html\n */\nCHARSETS['Z'] = {\n '#': '£',\n '@': '§',\n '[': '¡',\n '\\\\': 'Ñ',\n ']': '¿',\n '{': '°',\n '|': 'ñ',\n '}': 'ç'\n};\n\n/**\n * Swedish character set\n * ESC (H or ESC (7\n * Reference: http://vt100.net/docs/vt220-rm/table2-14.html\n */\nCHARSETS['H'] =\nCHARSETS['7'] = {\n '@': 'É',\n '[': 'Ä',\n '\\\\': 'Ö',\n ']': 'Å',\n '^': 'Ü',\n '`': 'é',\n '{': 'ä',\n '|': 'ö',\n '}': 'å',\n '~': 'ü'\n};\n\n/**\n * Swiss character set\n * ESC (=\n * Reference: http://vt100.net/docs/vt220-rm/table2-15.html\n */\nCHARSETS['='] = {\n '#': 'ù',\n '@': 'à',\n '[': 'é',\n '\\\\': 'ç',\n ']': 'ê',\n '^': 'î',\n // eslint-disable-next-line @typescript-eslint/naming-convention\n '_': 'è',\n '`': 'ô',\n '{': 'ä',\n '|': 'ö',\n '}': 'ü',\n '~': 'û'\n};\n", "/**\n * Copyright (c) 2017 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\n/**\n * C0 control codes\n * See = https://en.wikipedia.org/wiki/C0_and_C1_control_codes\n */\nexport namespace C0 {\n /** Null (Caret = ^@, C = \\0) */\n export const NUL = '\\x00';\n /** Start of Heading (Caret = ^A) */\n export const SOH = '\\x01';\n /** Start of Text (Caret = ^B) */\n export const STX = '\\x02';\n /** End of Text (Caret = ^C) */\n export const ETX = '\\x03';\n /** End of Transmission (Caret = ^D) */\n export const EOT = '\\x04';\n /** Enquiry (Caret = ^E) */\n export const ENQ = '\\x05';\n /** Acknowledge (Caret = ^F) */\n export const ACK = '\\x06';\n /** Bell (Caret = ^G, C = \\a) */\n export const BEL = '\\x07';\n /** Backspace (Caret = ^H, C = \\b) */\n export const BS = '\\x08';\n /** Character Tabulation, Horizontal Tabulation (Caret = ^I, C = \\t) */\n export const HT = '\\x09';\n /** Line Feed (Caret = ^J, C = \\n) */\n export const LF = '\\x0a';\n /** Line Tabulation, Vertical Tabulation (Caret = ^K, C = \\v) */\n export const VT = '\\x0b';\n /** Form Feed (Caret = ^L, C = \\f) */\n export const FF = '\\x0c';\n /** Carriage Return (Caret = ^M, C = \\r) */\n export const CR = '\\x0d';\n /** Shift Out (Caret = ^N) */\n export const SO = '\\x0e';\n /** Shift In (Caret = ^O) */\n export const SI = '\\x0f';\n /** Data Link Escape (Caret = ^P) */\n export const DLE = '\\x10';\n /** Device Control One (XON) (Caret = ^Q) */\n export const DC1 = '\\x11';\n /** Device Control Two (Caret = ^R) */\n export const DC2 = '\\x12';\n /** Device Control Three (XOFF) (Caret = ^S) */\n export const DC3 = '\\x13';\n /** Device Control Four (Caret = ^T) */\n export const DC4 = '\\x14';\n /** Negative Acknowledge (Caret = ^U) */\n export const NAK = '\\x15';\n /** Synchronous Idle (Caret = ^V) */\n export const SYN = '\\x16';\n /** End of Transmission Block (Caret = ^W) */\n export const ETB = '\\x17';\n /** Cancel (Caret = ^X) */\n export const CAN = '\\x18';\n /** End of Medium (Caret = ^Y) */\n export const EM = '\\x19';\n /** Substitute (Caret = ^Z) */\n export const SUB = '\\x1a';\n /** Escape (Caret = ^[, C = \\e) */\n export const ESC = '\\x1b';\n /** File Separator (Caret = ^\\) */\n export const FS = '\\x1c';\n /** Group Separator (Caret = ^]) */\n export const GS = '\\x1d';\n /** Record Separator (Caret = ^^) */\n export const RS = '\\x1e';\n /** Unit Separator (Caret = ^_) */\n export const US = '\\x1f';\n /** Space */\n export const SP = '\\x20';\n /** Delete (Caret = ^?) */\n export const DEL = '\\x7f';\n}\n\n/**\n * C1 control codes\n * See = https://en.wikipedia.org/wiki/C0_and_C1_control_codes\n */\nexport namespace C1 {\n /** padding character */\n export const PAD = '\\x80';\n /** High Octet Preset */\n export const HOP = '\\x81';\n /** Break Permitted Here */\n export const BPH = '\\x82';\n /** No Break Here */\n export const NBH = '\\x83';\n /** Index */\n export const IND = '\\x84';\n /** Next Line */\n export const NEL = '\\x85';\n /** Start of Selected Area */\n export const SSA = '\\x86';\n /** End of Selected Area */\n export const ESA = '\\x87';\n /** Horizontal Tabulation Set */\n export const HTS = '\\x88';\n /** Horizontal Tabulation With Justification */\n export const HTJ = '\\x89';\n /** Vertical Tabulation Set */\n export const VTS = '\\x8a';\n /** Partial Line Down */\n export const PLD = '\\x8b';\n /** Partial Line Up */\n export const PLU = '\\x8c';\n /** Reverse Index */\n export const RI = '\\x8d';\n /** Single-Shift 2 */\n export const SS2 = '\\x8e';\n /** Single-Shift 3 */\n export const SS3 = '\\x8f';\n /** Device Control String */\n export const DCS = '\\x90';\n /** Private Use 1 */\n export const PU1 = '\\x91';\n /** Private Use 2 */\n export const PU2 = '\\x92';\n /** Set Transmit State */\n export const STS = '\\x93';\n /** Destructive backspace, intended to eliminate ambiguity about meaning of BS. */\n export const CCH = '\\x94';\n /** Message Waiting */\n export const MW = '\\x95';\n /** Start of Protected Area */\n export const SPA = '\\x96';\n /** End of Protected Area */\n export const EPA = '\\x97';\n /** Start of String */\n export const SOS = '\\x98';\n /** Single Graphic Character Introducer */\n export const SGCI = '\\x99';\n /** Single Character Introducer */\n export const SCI = '\\x9a';\n /** Control Sequence Introducer */\n export const CSI = '\\x9b';\n /** String Terminator */\n export const ST = '\\x9c';\n /** Operating System Command */\n export const OSC = '\\x9d';\n /** Privacy Message */\n export const PM = '\\x9e';\n /** Application Program Command */\n export const APC = '\\x9f';\n}\nexport namespace C1_ESCAPED {\n export const ST = `${C0.ESC}\\\\`;\n}\n", "/**\n * Copyright (c) 2014 The xterm.js authors. All rights reserved.\n * Copyright (c) 2012-2013, Christopher Jeffrey (MIT License)\n * @license MIT\n */\n\nimport { IKeyboardEvent, IKeyboardResult, KeyboardResultType } from 'common/Types';\nimport { C0 } from 'common/data/EscapeSequences';\n\n// reg + shift key mappings for digits and special chars\nconst KEYCODE_KEY_MAPPINGS: { [key: number]: [string, string]} = {\n // digits 0-9\n 48: ['0', ')'],\n 49: ['1', '!'],\n 50: ['2', '@'],\n 51: ['3', '#'],\n 52: ['4', '$'],\n 53: ['5', '%'],\n 54: ['6', '^'],\n 55: ['7', '&'],\n 56: ['8', '*'],\n 57: ['9', '('],\n\n // special chars\n 186: [';', ':'],\n 187: ['=', '+'],\n 188: [',', '<'],\n 189: ['-', '_'],\n 190: ['.', '>'],\n 191: ['/', '?'],\n 192: ['`', '~'],\n 219: ['[', '{'],\n 220: ['\\\\', '|'],\n 221: [']', '}'],\n 222: ['\\'', '\"']\n};\n\nexport function evaluateKeyboardEvent(\n ev: IKeyboardEvent,\n applicationCursorMode: boolean,\n isMac: boolean,\n macOptionIsMeta: boolean\n): IKeyboardResult {\n const result: IKeyboardResult = {\n type: KeyboardResultType.SEND_KEY,\n // Whether to cancel event propagation (NOTE: this may not be needed since the event is\n // canceled at the end of keyDown\n cancel: false,\n // The new key even to emit\n key: undefined\n };\n const modifiers = (ev.shiftKey ? 1 : 0) | (ev.altKey ? 2 : 0) | (ev.ctrlKey ? 4 : 0) | (ev.metaKey ? 8 : 0);\n switch (ev.keyCode) {\n case 0:\n if (ev.key === 'UIKeyInputUpArrow') {\n if (applicationCursorMode) {\n result.key = C0.ESC + 'OA';\n } else {\n result.key = C0.ESC + '[A';\n }\n }\n else if (ev.key === 'UIKeyInputLeftArrow') {\n if (applicationCursorMode) {\n result.key = C0.ESC + 'OD';\n } else {\n result.key = C0.ESC + '[D';\n }\n }\n else if (ev.key === 'UIKeyInputRightArrow') {\n if (applicationCursorMode) {\n result.key = C0.ESC + 'OC';\n } else {\n result.key = C0.ESC + '[C';\n }\n }\n else if (ev.key === 'UIKeyInputDownArrow') {\n if (applicationCursorMode) {\n result.key = C0.ESC + 'OB';\n } else {\n result.key = C0.ESC + '[B';\n }\n }\n break;\n case 8:\n // backspace\n if (ev.shiftKey) {\n result.key = C0.BS; // ^H\n break;\n } else if (ev.altKey) {\n result.key = C0.ESC + C0.DEL; // \\e ^?\n break;\n }\n result.key = C0.DEL; // ^?\n break;\n case 9:\n // tab\n if (ev.shiftKey) {\n result.key = C0.ESC + '[Z';\n break;\n }\n result.key = C0.HT;\n result.cancel = true;\n break;\n case 13:\n // return/enter\n result.key = ev.altKey ? C0.ESC + C0.CR : C0.CR;\n result.cancel = true;\n break;\n case 27:\n // escape\n result.key = C0.ESC;\n if (ev.altKey) {\n result.key = C0.ESC + C0.ESC;\n }\n result.cancel = true;\n break;\n case 37:\n // left-arrow\n if (ev.metaKey) {\n break;\n }\n if (modifiers) {\n result.key = C0.ESC + '[1;' + (modifiers + 1) + 'D';\n // HACK: Make Alt + left-arrow behave like Ctrl + left-arrow: move one word backwards\n // http://unix.stackexchange.com/a/108106\n // macOS uses different escape sequences than linux\n if (result.key === C0.ESC + '[1;3D') {\n result.key = C0.ESC + (isMac ? 'b' : '[1;5D');\n }\n } else if (applicationCursorMode) {\n result.key = C0.ESC + 'OD';\n } else {\n result.key = C0.ESC + '[D';\n }\n break;\n case 39:\n // right-arrow\n if (ev.metaKey) {\n break;\n }\n if (modifiers) {\n result.key = C0.ESC + '[1;' + (modifiers + 1) + 'C';\n // HACK: Make Alt + right-arrow behave like Ctrl + right-arrow: move one word forward\n // http://unix.stackexchange.com/a/108106\n // macOS uses different escape sequences than linux\n if (result.key === C0.ESC + '[1;3C') {\n result.key = C0.ESC + (isMac ? 'f' : '[1;5C');\n }\n } else if (applicationCursorMode) {\n result.key = C0.ESC + 'OC';\n } else {\n result.key = C0.ESC + '[C';\n }\n break;\n case 38:\n // up-arrow\n if (ev.metaKey) {\n break;\n }\n if (modifiers) {\n result.key = C0.ESC + '[1;' + (modifiers + 1) + 'A';\n // HACK: Make Alt + up-arrow behave like Ctrl + up-arrow\n // http://unix.stackexchange.com/a/108106\n // macOS uses different escape sequences than linux\n if (!isMac && result.key === C0.ESC + '[1;3A') {\n result.key = C0.ESC + '[1;5A';\n }\n } else if (applicationCursorMode) {\n result.key = C0.ESC + 'OA';\n } else {\n result.key = C0.ESC + '[A';\n }\n break;\n case 40:\n // down-arrow\n if (ev.metaKey) {\n break;\n }\n if (modifiers) {\n result.key = C0.ESC + '[1;' + (modifiers + 1) + 'B';\n // HACK: Make Alt + down-arrow behave like Ctrl + down-arrow\n // http://unix.stackexchange.com/a/108106\n // macOS uses different escape sequences than linux\n if (!isMac && result.key === C0.ESC + '[1;3B') {\n result.key = C0.ESC + '[1;5B';\n }\n } else if (applicationCursorMode) {\n result.key = C0.ESC + 'OB';\n } else {\n result.key = C0.ESC + '[B';\n }\n break;\n case 45:\n // insert\n if (!ev.shiftKey && !ev.ctrlKey) {\n // or + are used to\n // copy-paste on some systems.\n result.key = C0.ESC + '[2~';\n }\n break;\n case 46:\n // delete\n if (modifiers) {\n result.key = C0.ESC + '[3;' + (modifiers + 1) + '~';\n } else {\n result.key = C0.ESC + '[3~';\n }\n break;\n case 36:\n // home\n if (modifiers) {\n result.key = C0.ESC + '[1;' + (modifiers + 1) + 'H';\n } else if (applicationCursorMode) {\n result.key = C0.ESC + 'OH';\n } else {\n result.key = C0.ESC + '[H';\n }\n break;\n case 35:\n // end\n if (modifiers) {\n result.key = C0.ESC + '[1;' + (modifiers + 1) + 'F';\n } else if (applicationCursorMode) {\n result.key = C0.ESC + 'OF';\n } else {\n result.key = C0.ESC + '[F';\n }\n break;\n case 33:\n // page up\n if (ev.shiftKey) {\n result.type = KeyboardResultType.PAGE_UP;\n } else if (ev.ctrlKey) {\n result.key = C0.ESC + '[5;' + (modifiers + 1) + '~';\n } else {\n result.key = C0.ESC + '[5~';\n }\n break;\n case 34:\n // page down\n if (ev.shiftKey) {\n result.type = KeyboardResultType.PAGE_DOWN;\n } else if (ev.ctrlKey) {\n result.key = C0.ESC + '[6;' + (modifiers + 1) + '~';\n } else {\n result.key = C0.ESC + '[6~';\n }\n break;\n case 112:\n // F1-F12\n if (modifiers) {\n result.key = C0.ESC + '[1;' + (modifiers + 1) + 'P';\n } else {\n result.key = C0.ESC + 'OP';\n }\n break;\n case 113:\n if (modifiers) {\n result.key = C0.ESC + '[1;' + (modifiers + 1) + 'Q';\n } else {\n result.key = C0.ESC + 'OQ';\n }\n break;\n case 114:\n if (modifiers) {\n result.key = C0.ESC + '[1;' + (modifiers + 1) + 'R';\n } else {\n result.key = C0.ESC + 'OR';\n }\n break;\n case 115:\n if (modifiers) {\n result.key = C0.ESC + '[1;' + (modifiers + 1) + 'S';\n } else {\n result.key = C0.ESC + 'OS';\n }\n break;\n case 116:\n if (modifiers) {\n result.key = C0.ESC + '[15;' + (modifiers + 1) + '~';\n } else {\n result.key = C0.ESC + '[15~';\n }\n break;\n case 117:\n if (modifiers) {\n result.key = C0.ESC + '[17;' + (modifiers + 1) + '~';\n } else {\n result.key = C0.ESC + '[17~';\n }\n break;\n case 118:\n if (modifiers) {\n result.key = C0.ESC + '[18;' + (modifiers + 1) + '~';\n } else {\n result.key = C0.ESC + '[18~';\n }\n break;\n case 119:\n if (modifiers) {\n result.key = C0.ESC + '[19;' + (modifiers + 1) + '~';\n } else {\n result.key = C0.ESC + '[19~';\n }\n break;\n case 120:\n if (modifiers) {\n result.key = C0.ESC + '[20;' + (modifiers + 1) + '~';\n } else {\n result.key = C0.ESC + '[20~';\n }\n break;\n case 121:\n if (modifiers) {\n result.key = C0.ESC + '[21;' + (modifiers + 1) + '~';\n } else {\n result.key = C0.ESC + '[21~';\n }\n break;\n case 122:\n if (modifiers) {\n result.key = C0.ESC + '[23;' + (modifiers + 1) + '~';\n } else {\n result.key = C0.ESC + '[23~';\n }\n break;\n case 123:\n if (modifiers) {\n result.key = C0.ESC + '[24;' + (modifiers + 1) + '~';\n } else {\n result.key = C0.ESC + '[24~';\n }\n break;\n default:\n // a-z and space\n if (ev.ctrlKey && !ev.shiftKey && !ev.altKey && !ev.metaKey) {\n if (ev.keyCode >= 65 && ev.keyCode <= 90) {\n result.key = String.fromCharCode(ev.keyCode - 64);\n } else if (ev.keyCode === 32) {\n result.key = C0.NUL;\n } else if (ev.keyCode >= 51 && ev.keyCode <= 55) {\n // escape, file sep, group sep, record sep, unit sep\n result.key = String.fromCharCode(ev.keyCode - 51 + 27);\n } else if (ev.keyCode === 56) {\n result.key = C0.DEL;\n } else if (ev.keyCode === 219) {\n result.key = C0.ESC;\n } else if (ev.keyCode === 220) {\n result.key = C0.FS;\n } else if (ev.keyCode === 221) {\n result.key = C0.GS;\n }\n } else if ((!isMac || macOptionIsMeta) && ev.altKey && !ev.metaKey) {\n // On macOS this is a third level shift when !macOptionIsMeta. Use instead.\n const keyMapping = KEYCODE_KEY_MAPPINGS[ev.keyCode];\n const key = keyMapping?.[!ev.shiftKey ? 0 : 1];\n if (key) {\n result.key = C0.ESC + key;\n } else if (ev.keyCode >= 65 && ev.keyCode <= 90) {\n const keyCode = ev.ctrlKey ? ev.keyCode - 64 : ev.keyCode + 32;\n let keyString = String.fromCharCode(keyCode);\n if (ev.shiftKey) {\n keyString = keyString.toUpperCase();\n }\n result.key = C0.ESC + keyString;\n } else if (ev.key === 'Dead' && ev.code.startsWith('Key')) {\n // Reference: https://github.com/xtermjs/xterm.js/issues/3725\n // Alt will produce a \"dead key\" (initate composition) with some\n // of the letters in US layout (e.g. N/E/U).\n // It's safe to match against Key* since no other `code` values begin with \"Key\".\n // https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/code/code_values#code_values_on_mac\n let keyString = ev.code.slice(3, 4);\n if (!ev.shiftKey) {\n keyString = keyString.toLowerCase();\n }\n result.key = C0.ESC + keyString;\n result.cancel = true;\n }\n } else if (isMac && !ev.altKey && !ev.ctrlKey && !ev.shiftKey && ev.metaKey) {\n if (ev.keyCode === 65) { // cmd + a\n result.type = KeyboardResultType.SELECT_ALL;\n }\n } else if (ev.key && !ev.ctrlKey && !ev.altKey && !ev.metaKey && ev.keyCode >= 48 && ev.key.length === 1) {\n // Include only keys that that result in a _single_ character; don't include num lock, volume up, etc.\n result.key = ev.key;\n } else if (ev.key && ev.ctrlKey) {\n if (ev.key === '_') { // ^_\n result.key = C0.US;\n }\n if (ev.key === '@') { // ^ + shift + 2 = ^ + @\n result.key = C0.NUL;\n }\n }\n break;\n }\n\n return result;\n}\n", "/**\n * Copyright (c) 2019 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\n/**\n * Polyfill - Convert UTF32 codepoint into JS string.\n * Note: The built-in String.fromCodePoint happens to be much slower\n * due to additional sanity checks. We can avoid them since\n * we always operate on legal UTF32 (granted by the input decoders)\n * and use this faster version instead.\n */\nexport function stringFromCodePoint(codePoint: number): string {\n if (codePoint > 0xFFFF) {\n codePoint -= 0x10000;\n return String.fromCharCode((codePoint >> 10) + 0xD800) + String.fromCharCode((codePoint % 0x400) + 0xDC00);\n }\n return String.fromCharCode(codePoint);\n}\n\n/**\n * Convert UTF32 char codes into JS string.\n * Basically the same as `stringFromCodePoint` but for multiple codepoints\n * in a loop (which is a lot faster).\n */\nexport function utf32ToString(data: Uint32Array, start: number = 0, end: number = data.length): string {\n let result = '';\n for (let i = start; i < end; ++i) {\n let codepoint = data[i];\n if (codepoint > 0xFFFF) {\n // JS strings are encoded as UTF16, thus a non BMP codepoint gets converted into a surrogate pair\n // conversion rules:\n // - subtract 0x10000 from code point, leaving a 20 bit number\n // - add high 10 bits to 0xD800 --> first surrogate\n // - add low 10 bits to 0xDC00 --> second surrogate\n codepoint -= 0x10000;\n result += String.fromCharCode((codepoint >> 10) + 0xD800) + String.fromCharCode((codepoint % 0x400) + 0xDC00);\n } else {\n result += String.fromCharCode(codepoint);\n }\n }\n return result;\n}\n\n/**\n * StringToUtf32 - decodes UTF16 sequences into UTF32 codepoints.\n * To keep the decoder in line with JS strings it handles single surrogates as UCS2.\n */\nexport class StringToUtf32 {\n private _interim: number = 0;\n\n /**\n * Clears interim and resets decoder to clean state.\n */\n public clear(): void {\n this._interim = 0;\n }\n\n /**\n * Decode JS string to UTF32 codepoints.\n * The methods assumes stream input and will store partly transmitted\n * surrogate pairs and decode them with the next data chunk.\n * Note: The method does no bound checks for target, therefore make sure\n * the provided input data does not exceed the size of `target`.\n * Returns the number of written codepoints in `target`.\n */\n public decode(input: string, target: Uint32Array): number {\n const length = input.length;\n\n if (!length) {\n return 0;\n }\n\n let size = 0;\n let startPos = 0;\n\n // handle leftover surrogate high\n if (this._interim) {\n const second = input.charCodeAt(startPos++);\n if (0xDC00 <= second && second <= 0xDFFF) {\n target[size++] = (this._interim - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n } else {\n // illegal codepoint (USC2 handling)\n target[size++] = this._interim;\n target[size++] = second;\n }\n this._interim = 0;\n }\n\n for (let i = startPos; i < length; ++i) {\n const code = input.charCodeAt(i);\n // surrogate pair first\n if (0xD800 <= code && code <= 0xDBFF) {\n if (++i >= length) {\n this._interim = code;\n return size;\n }\n const second = input.charCodeAt(i);\n if (0xDC00 <= second && second <= 0xDFFF) {\n target[size++] = (code - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n } else {\n // illegal codepoint (USC2 handling)\n target[size++] = code;\n target[size++] = second;\n }\n continue;\n }\n if (code === 0xFEFF) {\n // BOM\n continue;\n }\n target[size++] = code;\n }\n return size;\n }\n}\n\n/**\n * Utf8Decoder - decodes UTF8 byte sequences into UTF32 codepoints.\n */\nexport class Utf8ToUtf32 {\n public interim: Uint8Array = new Uint8Array(3);\n\n /**\n * Clears interim bytes and resets decoder to clean state.\n */\n public clear(): void {\n this.interim.fill(0);\n }\n\n /**\n * Decodes UTF8 byte sequences in `input` to UTF32 codepoints in `target`.\n * The methods assumes stream input and will store partly transmitted bytes\n * and decode them with the next data chunk.\n * Note: The method does no bound checks for target, therefore make sure\n * the provided data chunk does not exceed the size of `target`.\n * Returns the number of written codepoints in `target`.\n */\n public decode(input: Uint8Array, target: Uint32Array): number {\n const length = input.length;\n\n if (!length) {\n return 0;\n }\n\n let size = 0;\n let byte1: number;\n let byte2: number;\n let byte3: number;\n let byte4: number;\n let codepoint = 0;\n let startPos = 0;\n\n // handle leftover bytes\n if (this.interim[0]) {\n let discardInterim = false;\n let cp = this.interim[0];\n cp &= ((((cp & 0xE0) === 0xC0)) ? 0x1F : (((cp & 0xF0) === 0xE0)) ? 0x0F : 0x07);\n let pos = 0;\n let tmp: number;\n while ((tmp = this.interim[++pos] & 0x3F) && pos < 4) {\n cp <<= 6;\n cp |= tmp;\n }\n // missing bytes - read ahead from input\n const type = (((this.interim[0] & 0xE0) === 0xC0)) ? 2 : (((this.interim[0] & 0xF0) === 0xE0)) ? 3 : 4;\n const missing = type - pos;\n while (startPos < missing) {\n if (startPos >= length) {\n return 0;\n }\n tmp = input[startPos++];\n if ((tmp & 0xC0) !== 0x80) {\n // wrong continuation, discard interim bytes completely\n startPos--;\n discardInterim = true;\n break;\n } else {\n // need to save so we can continue short inputs in next call\n this.interim[pos++] = tmp;\n cp <<= 6;\n cp |= tmp & 0x3F;\n }\n }\n if (!discardInterim) {\n // final test is type dependent\n if (type === 2) {\n if (cp < 0x80) {\n // wrong starter byte\n startPos--;\n } else {\n target[size++] = cp;\n }\n } else if (type === 3) {\n if (cp < 0x0800 || (cp >= 0xD800 && cp <= 0xDFFF) || cp === 0xFEFF) {\n // illegal codepoint or BOM\n } else {\n target[size++] = cp;\n }\n } else {\n if (cp < 0x010000 || cp > 0x10FFFF) {\n // illegal codepoint\n } else {\n target[size++] = cp;\n }\n }\n }\n this.interim.fill(0);\n }\n\n // loop through input\n const fourStop = length - 4;\n let i = startPos;\n while (i < length) {\n /**\n * ASCII shortcut with loop unrolled to 4 consecutive ASCII chars.\n * This is a compromise between speed gain for ASCII\n * and penalty for non ASCII:\n * For best ASCII performance the char should be stored directly into target,\n * but even a single attempt to write to target and compare afterwards\n * penalizes non ASCII really bad (-50%), thus we load the char into byteX first,\n * which reduces ASCII performance by ~15%.\n * This trial for ASCII reduces non ASCII performance by ~10% which seems acceptible\n * compared to the gains.\n * Note that this optimization only takes place for 4 consecutive ASCII chars,\n * for any shorter it bails out. Worst case - all 4 bytes being read but\n * thrown away due to the last being a non ASCII char (-10% performance).\n */\n while (i < fourStop\n && !((byte1 = input[i]) & 0x80)\n && !((byte2 = input[i + 1]) & 0x80)\n && !((byte3 = input[i + 2]) & 0x80)\n && !((byte4 = input[i + 3]) & 0x80))\n {\n target[size++] = byte1;\n target[size++] = byte2;\n target[size++] = byte3;\n target[size++] = byte4;\n i += 4;\n }\n\n // reread byte1\n byte1 = input[i++];\n\n // 1 byte\n if (byte1 < 0x80) {\n target[size++] = byte1;\n\n // 2 bytes\n } else if ((byte1 & 0xE0) === 0xC0) {\n if (i >= length) {\n this.interim[0] = byte1;\n return size;\n }\n byte2 = input[i++];\n if ((byte2 & 0xC0) !== 0x80) {\n // wrong continuation\n i--;\n continue;\n }\n codepoint = (byte1 & 0x1F) << 6 | (byte2 & 0x3F);\n if (codepoint < 0x80) {\n // wrong starter byte\n i--;\n continue;\n }\n target[size++] = codepoint;\n\n // 3 bytes\n } else if ((byte1 & 0xF0) === 0xE0) {\n if (i >= length) {\n this.interim[0] = byte1;\n return size;\n }\n byte2 = input[i++];\n if ((byte2 & 0xC0) !== 0x80) {\n // wrong continuation\n i--;\n continue;\n }\n if (i >= length) {\n this.interim[0] = byte1;\n this.interim[1] = byte2;\n return size;\n }\n byte3 = input[i++];\n if ((byte3 & 0xC0) !== 0x80) {\n // wrong continuation\n i--;\n continue;\n }\n codepoint = (byte1 & 0x0F) << 12 | (byte2 & 0x3F) << 6 | (byte3 & 0x3F);\n if (codepoint < 0x0800 || (codepoint >= 0xD800 && codepoint <= 0xDFFF) || codepoint === 0xFEFF) {\n // illegal codepoint or BOM, no i-- here\n continue;\n }\n target[size++] = codepoint;\n\n // 4 bytes\n } else if ((byte1 & 0xF8) === 0xF0) {\n if (i >= length) {\n this.interim[0] = byte1;\n return size;\n }\n byte2 = input[i++];\n if ((byte2 & 0xC0) !== 0x80) {\n // wrong continuation\n i--;\n continue;\n }\n if (i >= length) {\n this.interim[0] = byte1;\n this.interim[1] = byte2;\n return size;\n }\n byte3 = input[i++];\n if ((byte3 & 0xC0) !== 0x80) {\n // wrong continuation\n i--;\n continue;\n }\n if (i >= length) {\n this.interim[0] = byte1;\n this.interim[1] = byte2;\n this.interim[2] = byte3;\n return size;\n }\n byte4 = input[i++];\n if ((byte4 & 0xC0) !== 0x80) {\n // wrong continuation\n i--;\n continue;\n }\n codepoint = (byte1 & 0x07) << 18 | (byte2 & 0x3F) << 12 | (byte3 & 0x3F) << 6 | (byte4 & 0x3F);\n if (codepoint < 0x010000 || codepoint > 0x10FFFF) {\n // illegal codepoint, no i-- here\n continue;\n }\n target[size++] = codepoint;\n } else {\n // illegal byte, just skip\n }\n }\n return size;\n }\n}\n", "/**\n * Copyright (c) 2019 The xterm.js authors. All rights reserved.\n * @license MIT\n */\nimport { IUnicodeVersionProvider } from 'common/services/Services';\nimport { fill } from 'common/TypedArrayUtils';\n\ntype CharWidth = 0 | 1 | 2;\n\nconst BMP_COMBINING = [\n [0x0300, 0x036F], [0x0483, 0x0486], [0x0488, 0x0489],\n [0x0591, 0x05BD], [0x05BF, 0x05BF], [0x05C1, 0x05C2],\n [0x05C4, 0x05C5], [0x05C7, 0x05C7], [0x0600, 0x0603],\n [0x0610, 0x0615], [0x064B, 0x065E], [0x0670, 0x0670],\n [0x06D6, 0x06E4], [0x06E7, 0x06E8], [0x06EA, 0x06ED],\n [0x070F, 0x070F], [0x0711, 0x0711], [0x0730, 0x074A],\n [0x07A6, 0x07B0], [0x07EB, 0x07F3], [0x0901, 0x0902],\n [0x093C, 0x093C], [0x0941, 0x0948], [0x094D, 0x094D],\n [0x0951, 0x0954], [0x0962, 0x0963], [0x0981, 0x0981],\n [0x09BC, 0x09BC], [0x09C1, 0x09C4], [0x09CD, 0x09CD],\n [0x09E2, 0x09E3], [0x0A01, 0x0A02], [0x0A3C, 0x0A3C],\n [0x0A41, 0x0A42], [0x0A47, 0x0A48], [0x0A4B, 0x0A4D],\n [0x0A70, 0x0A71], [0x0A81, 0x0A82], [0x0ABC, 0x0ABC],\n [0x0AC1, 0x0AC5], [0x0AC7, 0x0AC8], [0x0ACD, 0x0ACD],\n [0x0AE2, 0x0AE3], [0x0B01, 0x0B01], [0x0B3C, 0x0B3C],\n [0x0B3F, 0x0B3F], [0x0B41, 0x0B43], [0x0B4D, 0x0B4D],\n [0x0B56, 0x0B56], [0x0B82, 0x0B82], [0x0BC0, 0x0BC0],\n [0x0BCD, 0x0BCD], [0x0C3E, 0x0C40], [0x0C46, 0x0C48],\n [0x0C4A, 0x0C4D], [0x0C55, 0x0C56], [0x0CBC, 0x0CBC],\n [0x0CBF, 0x0CBF], [0x0CC6, 0x0CC6], [0x0CCC, 0x0CCD],\n [0x0CE2, 0x0CE3], [0x0D41, 0x0D43], [0x0D4D, 0x0D4D],\n [0x0DCA, 0x0DCA], [0x0DD2, 0x0DD4], [0x0DD6, 0x0DD6],\n [0x0E31, 0x0E31], [0x0E34, 0x0E3A], [0x0E47, 0x0E4E],\n [0x0EB1, 0x0EB1], [0x0EB4, 0x0EB9], [0x0EBB, 0x0EBC],\n [0x0EC8, 0x0ECD], [0x0F18, 0x0F19], [0x0F35, 0x0F35],\n [0x0F37, 0x0F37], [0x0F39, 0x0F39], [0x0F71, 0x0F7E],\n [0x0F80, 0x0F84], [0x0F86, 0x0F87], [0x0F90, 0x0F97],\n [0x0F99, 0x0FBC], [0x0FC6, 0x0FC6], [0x102D, 0x1030],\n [0x1032, 0x1032], [0x1036, 0x1037], [0x1039, 0x1039],\n [0x1058, 0x1059], [0x1160, 0x11FF], [0x135F, 0x135F],\n [0x1712, 0x1714], [0x1732, 0x1734], [0x1752, 0x1753],\n [0x1772, 0x1773], [0x17B4, 0x17B5], [0x17B7, 0x17BD],\n [0x17C6, 0x17C6], [0x17C9, 0x17D3], [0x17DD, 0x17DD],\n [0x180B, 0x180D], [0x18A9, 0x18A9], [0x1920, 0x1922],\n [0x1927, 0x1928], [0x1932, 0x1932], [0x1939, 0x193B],\n [0x1A17, 0x1A18], [0x1B00, 0x1B03], [0x1B34, 0x1B34],\n [0x1B36, 0x1B3A], [0x1B3C, 0x1B3C], [0x1B42, 0x1B42],\n [0x1B6B, 0x1B73], [0x1DC0, 0x1DCA], [0x1DFE, 0x1DFF],\n [0x200B, 0x200F], [0x202A, 0x202E], [0x2060, 0x2063],\n [0x206A, 0x206F], [0x20D0, 0x20EF], [0x302A, 0x302F],\n [0x3099, 0x309A], [0xA806, 0xA806], [0xA80B, 0xA80B],\n [0xA825, 0xA826], [0xFB1E, 0xFB1E], [0xFE00, 0xFE0F],\n [0xFE20, 0xFE23], [0xFEFF, 0xFEFF], [0xFFF9, 0xFFFB]\n];\nconst HIGH_COMBINING = [\n [0x10A01, 0x10A03], [0x10A05, 0x10A06], [0x10A0C, 0x10A0F],\n [0x10A38, 0x10A3A], [0x10A3F, 0x10A3F], [0x1D167, 0x1D169],\n [0x1D173, 0x1D182], [0x1D185, 0x1D18B], [0x1D1AA, 0x1D1AD],\n [0x1D242, 0x1D244], [0xE0001, 0xE0001], [0xE0020, 0xE007F],\n [0xE0100, 0xE01EF]\n];\n\n// BMP lookup table, lazy initialized during first addon loading\nlet table: Uint8Array;\n\nfunction bisearch(ucs: number, data: number[][]): boolean {\n let min = 0;\n let max = data.length - 1;\n let mid;\n if (ucs < data[0][0] || ucs > data[max][1]) {\n return false;\n }\n while (max >= min) {\n mid = (min + max) >> 1;\n if (ucs > data[mid][1]) {\n min = mid + 1;\n } else if (ucs < data[mid][0]) {\n max = mid - 1;\n } else {\n return true;\n }\n }\n return false;\n}\n\nexport class UnicodeV6 implements IUnicodeVersionProvider {\n public readonly version = '6';\n\n constructor() {\n // init lookup table once\n if (!table) {\n table = new Uint8Array(65536);\n fill(table, 1);\n table[0] = 0;\n // control chars\n fill(table, 0, 1, 32);\n fill(table, 0, 0x7f, 0xa0);\n\n // apply wide char rules first\n // wide chars\n fill(table, 2, 0x1100, 0x1160);\n table[0x2329] = 2;\n table[0x232a] = 2;\n fill(table, 2, 0x2e80, 0xa4d0);\n table[0x303f] = 1; // wrongly in last line\n\n fill(table, 2, 0xac00, 0xd7a4);\n fill(table, 2, 0xf900, 0xfb00);\n fill(table, 2, 0xfe10, 0xfe1a);\n fill(table, 2, 0xfe30, 0xfe70);\n fill(table, 2, 0xff00, 0xff61);\n fill(table, 2, 0xffe0, 0xffe7);\n\n // apply combining last to ensure we overwrite\n // wrongly wide set chars:\n // the original algo evals combining first and falls\n // through to wide check so we simply do here the opposite\n // combining 0\n for (let r = 0; r < BMP_COMBINING.length; ++r) {\n fill(table, 0, BMP_COMBINING[r][0], BMP_COMBINING[r][1] + 1);\n }\n }\n }\n\n public wcwidth(num: number): CharWidth {\n if (num < 32) return 0;\n if (num < 127) return 1;\n if (num < 65536) return table[num] as CharWidth;\n if (bisearch(num, HIGH_COMBINING)) return 0;\n if ((num >= 0x20000 && num <= 0x2fffd) || (num >= 0x30000 && num <= 0x3fffd)) return 2;\n return 1;\n }\n}\n", "\n/**\n * Copyright (c) 2019 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { EventEmitter, IEvent } from 'common/EventEmitter';\n\ndeclare const setTimeout: (handler: () => void, timeout?: number) => void;\n\n/**\n * Safety watermark to avoid memory exhaustion and browser engine crash on fast data input.\n * Enable flow control to avoid this limit and make sure that your backend correctly\n * propagates this to the underlying pty. (see docs for further instructions)\n * Since this limit is meant as a safety parachute to prevent browser crashs,\n * it is set to a very high number. Typically xterm.js gets unresponsive with\n * a 100 times lower number (>500 kB).\n */\nconst DISCARD_WATERMARK = 50000000; // ~50 MB\n\n/**\n * The max number of ms to spend on writes before allowing the renderer to\n * catch up with a 0ms setTimeout. A value of < 33 to keep us close to\n * 30fps, and a value of < 16 to try to run at 60fps. Of course, the real FPS\n * depends on the time it takes for the renderer to draw the frame.\n */\nconst WRITE_TIMEOUT_MS = 12;\n\n/**\n * Threshold of max held chunks in the write buffer, that were already processed.\n * This is a tradeoff between extensive write buffer shifts (bad runtime) and high\n * memory consumption by data thats not used anymore.\n */\nconst WRITE_BUFFER_LENGTH_THRESHOLD = 50;\n\n// queueMicrotask polyfill for nodejs < v11\nconst qmt: (cb: () => void) => void = (typeof queueMicrotask === 'undefined')\n ? (cb: () => void) => { Promise.resolve().then(cb); }\n : queueMicrotask;\n\n\nexport class WriteBuffer {\n private _writeBuffer: (string | Uint8Array)[] = [];\n private _callbacks: ((() => void) | undefined)[] = [];\n private _pendingData = 0;\n private _bufferOffset = 0;\n private _isSyncWriting = false;\n private _syncCalls = 0;\n public get onWriteParsed(): IEvent { return this._onWriteParsed.event; }\n private _onWriteParsed = new EventEmitter();\n\n constructor(private _action: (data: string | Uint8Array, promiseResult?: boolean) => void | Promise) { }\n\n /**\n * @deprecated Unreliable, to be removed soon.\n */\n public writeSync(data: string | Uint8Array, maxSubsequentCalls?: number): void {\n // stop writeSync recursions with maxSubsequentCalls argument\n // This is dangerous to use as it will lose the current data chunk\n // and return immediately.\n if (maxSubsequentCalls !== undefined && this._syncCalls > maxSubsequentCalls) {\n // comment next line if a whole loop block should only contain x `writeSync` calls\n // (total flat vs. deep nested limit)\n this._syncCalls = 0;\n return;\n }\n // append chunk to buffer\n this._pendingData += data.length;\n this._writeBuffer.push(data);\n this._callbacks.push(undefined);\n\n // increase recursion counter\n this._syncCalls++;\n // exit early if another writeSync loop is active\n if (this._isSyncWriting) {\n return;\n }\n this._isSyncWriting = true;\n\n // force sync processing on pending data chunks to avoid in-band data scrambling\n // does the same as innerWrite but without event loop\n // we have to do it here as single loop steps to not corrupt loop subject\n // by another writeSync call triggered from _action\n let chunk: string | Uint8Array | undefined;\n while (chunk = this._writeBuffer.shift()) {\n this._action(chunk);\n const cb = this._callbacks.shift();\n if (cb) cb();\n }\n // reset to avoid reprocessing of chunks with scheduled innerWrite call\n // stopping scheduled innerWrite by offset > length condition\n this._pendingData = 0;\n this._bufferOffset = 0x7FFFFFFF;\n\n // allow another writeSync to loop\n this._isSyncWriting = false;\n this._syncCalls = 0;\n }\n\n public write(data: string | Uint8Array, callback?: () => void): void {\n if (this._pendingData > DISCARD_WATERMARK) {\n throw new Error('write data discarded, use flow control to avoid losing data');\n }\n\n // schedule chunk processing for next event loop run\n if (!this._writeBuffer.length) {\n this._bufferOffset = 0;\n setTimeout(() => this._innerWrite());\n }\n\n this._pendingData += data.length;\n this._writeBuffer.push(data);\n this._callbacks.push(callback);\n }\n\n /**\n * Inner write call, that enters the sliced chunk processing by timing.\n *\n * `lastTime` indicates, when the last _innerWrite call had started.\n * It is used to aggregate async handler execution under a timeout constraint\n * effectively lowering the redrawing needs, schematically:\n *\n * macroTask _innerWrite:\n * if (Date.now() - (lastTime | 0) < WRITE_TIMEOUT_MS):\n * schedule microTask _innerWrite(lastTime)\n * else:\n * schedule macroTask _innerWrite(0)\n *\n * overall execution order on task queues:\n *\n * macrotasks: [...] --> _innerWrite(0) --> [...] --> screenUpdate --> [...]\n * m t: |\n * i a: [...]\n * c s: |\n * r k: while < timeout:\n * o s: _innerWrite(timeout)\n *\n * `promiseResult` depicts the promise resolve value of an async handler.\n * This value gets carried forward through all saved stack states of the\n * paused parser for proper continuation.\n *\n * Note, for pure sync code `lastTime` and `promiseResult` have no meaning.\n */\n protected _innerWrite(lastTime: number = 0, promiseResult: boolean = true): void {\n const startTime = lastTime || Date.now();\n while (this._writeBuffer.length > this._bufferOffset) {\n const data = this._writeBuffer[this._bufferOffset];\n const result = this._action(data, promiseResult);\n if (result) {\n /**\n * If we get a promise as return value, we re-schedule the continuation\n * as thenable on the promise and exit right away.\n *\n * The exit here means, that we block input processing at the current active chunk,\n * the exact execution position within the chunk is preserved by the saved\n * stack content in InputHandler and EscapeSequenceParser.\n *\n * Resuming happens automatically from that saved stack state.\n * Also the resolved promise value is passed along the callstack to\n * `EscapeSequenceParser.parse` to correctly resume the stopped handler loop.\n *\n * Exceptions on async handlers will be logged to console async, but do not interrupt\n * the input processing (continues with next handler at the current input position).\n */\n\n /**\n * If a promise takes long to resolve, we should schedule continuation behind setTimeout.\n * This might already be too late, if our .then enters really late (executor + prev thens took very long).\n * This cannot be solved here for the handler itself (it is the handlers responsibility to slice hard work),\n * but we can at least schedule a screen update as we gain control.\n */\n const continuation: (r: boolean) => void = (r: boolean) => Date.now() - startTime >= WRITE_TIMEOUT_MS\n ? setTimeout(() => this._innerWrite(0, r))\n : this._innerWrite(startTime, r);\n\n /**\n * Optimization considerations:\n * The continuation above favors FPS over throughput by eval'ing `startTime` on resolve.\n * This might schedule too many screen updates with bad throughput drops (in case a slow\n * resolving handler sliced its work properly behind setTimeout calls). We cannot spot\n * this condition here, also the renderer has no way to spot nonsense updates either.\n * FIXME: A proper fix for this would track the FPS at the renderer entry level separately.\n *\n * If favoring of FPS shows bad throughtput impact, use the following instead. It favors\n * throughput by eval'ing `startTime` upfront pulling at least one more chunk into the\n * current microtask queue (executed before setTimeout).\n */\n // const continuation: (r: boolean) => void = Date.now() - startTime >= WRITE_TIMEOUT_MS\n // ? r => setTimeout(() => this._innerWrite(0, r))\n // : r => this._innerWrite(startTime, r);\n\n // Handle exceptions synchronously to current band position, idea:\n // 1. spawn a single microtask which we allow to throw hard\n // 2. spawn a promise immediately resolving to `true`\n // (executed on the same queue, thus properly aligned before continuation happens)\n result.catch(err => {\n qmt(() => {throw err;});\n return Promise.resolve(false);\n }).then(continuation);\n return;\n }\n\n const cb = this._callbacks[this._bufferOffset];\n if (cb) cb();\n this._bufferOffset++;\n this._pendingData -= data.length;\n\n if (Date.now() - startTime >= WRITE_TIMEOUT_MS) {\n break;\n }\n }\n if (this._writeBuffer.length > this._bufferOffset) {\n // Allow renderer to catch up before processing the next batch\n // trim already processed chunks if we are above threshold\n if (this._bufferOffset > WRITE_BUFFER_LENGTH_THRESHOLD) {\n this._writeBuffer = this._writeBuffer.slice(this._bufferOffset);\n this._callbacks = this._callbacks.slice(this._bufferOffset);\n this._bufferOffset = 0;\n }\n setTimeout(() => this._innerWrite());\n } else {\n this._writeBuffer.length = 0;\n this._callbacks.length = 0;\n this._pendingData = 0;\n this._bufferOffset = 0;\n }\n this._onWriteParsed.fire();\n }\n}\n", "/**\n * Copyright (c) 2021 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\n\n// 'rgb:' rule - matching: r/g/b | rr/gg/bb | rrr/ggg/bbb | rrrr/gggg/bbbb (hex digits)\nconst RGB_REX = /^([\\da-f])\\/([\\da-f])\\/([\\da-f])$|^([\\da-f]{2})\\/([\\da-f]{2})\\/([\\da-f]{2})$|^([\\da-f]{3})\\/([\\da-f]{3})\\/([\\da-f]{3})$|^([\\da-f]{4})\\/([\\da-f]{4})\\/([\\da-f]{4})$/;\n// '#...' rule - matching any hex digits\nconst HASH_REX = /^[\\da-f]+$/;\n\n/**\n * Parse color spec to RGB values (8 bit per channel).\n * See `man xparsecolor` for details about certain format specifications.\n *\n * Supported formats:\n * - rgb:// with , , in h | hh | hhh | hhhh\n * - #RGB, #RRGGBB, #RRRGGGBBB, #RRRRGGGGBBBB\n *\n * All other formats like rgbi: or device-independent string specifications\n * with float numbering are not supported.\n */\nexport function parseColor(data: string): [number, number, number] | undefined {\n if (!data) return;\n // also handle uppercases\n let low = data.toLowerCase();\n if (low.indexOf('rgb:') === 0) {\n // 'rgb:' specifier\n low = low.slice(4);\n const m = RGB_REX.exec(low);\n if (m) {\n const base = m[1] ? 15 : m[4] ? 255 : m[7] ? 4095 : 65535;\n return [\n Math.round(parseInt(m[1] || m[4] || m[7] || m[10], 16) / base * 255),\n Math.round(parseInt(m[2] || m[5] || m[8] || m[11], 16) / base * 255),\n Math.round(parseInt(m[3] || m[6] || m[9] || m[12], 16) / base * 255)\n ];\n }\n } else if (low.indexOf('#') === 0) {\n // '#' specifier\n low = low.slice(1);\n if (HASH_REX.exec(low) && [3, 6, 9, 12].includes(low.length)) {\n const adv = low.length / 3;\n const result: [number, number, number] = [0, 0, 0];\n for (let i = 0; i < 3; ++i) {\n const c = parseInt(low.slice(adv * i, adv * i + adv), 16);\n result[i] = adv === 1 ? c << 4 : adv === 2 ? c : adv === 3 ? c >> 4 : c >> 8;\n }\n return result;\n }\n }\n\n // Named colors are currently not supported due to the large addition to the xterm.js bundle size\n // they would add. In order to support named colors, we would need some way of optionally loading\n // additional payloads so startup/download time is not bloated (see #3530).\n}\n\n// pad hex output to requested bit width\nfunction pad(n: number, bits: number): string {\n const s = n.toString(16);\n const s2 = s.length < 2 ? '0' + s : s;\n switch (bits) {\n case 4:\n return s[0];\n case 8:\n return s2;\n case 12:\n return (s2 + s2).slice(0, 3);\n default:\n return s2 + s2;\n }\n}\n\n/**\n * Convert a given color to rgb:../../.. string of `bits` depth.\n */\nexport function toRgbString(color: [number, number, number], bits: number = 16): string {\n const [r, g, b] = color;\n return `rgb:${pad(r, bits)}/${pad(g, bits)}/${pad(b, bits)}`;\n}\n", "/**\n * Copyright (c) 2017 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\n/**\n * Internal states of EscapeSequenceParser.\n */\nexport const enum ParserState {\n GROUND = 0,\n ESCAPE = 1,\n ESCAPE_INTERMEDIATE = 2,\n CSI_ENTRY = 3,\n CSI_PARAM = 4,\n CSI_INTERMEDIATE = 5,\n CSI_IGNORE = 6,\n SOS_PM_APC_STRING = 7,\n OSC_STRING = 8,\n DCS_ENTRY = 9,\n DCS_PARAM = 10,\n DCS_IGNORE = 11,\n DCS_INTERMEDIATE = 12,\n DCS_PASSTHROUGH = 13\n}\n\n/**\n* Internal actions of EscapeSequenceParser.\n*/\nexport const enum ParserAction {\n IGNORE = 0,\n ERROR = 1,\n PRINT = 2,\n EXECUTE = 3,\n OSC_START = 4,\n OSC_PUT = 5,\n OSC_END = 6,\n CSI_DISPATCH = 7,\n PARAM = 8,\n COLLECT = 9,\n ESC_DISPATCH = 10,\n CLEAR = 11,\n DCS_HOOK = 12,\n DCS_PUT = 13,\n DCS_UNHOOK = 14\n}\n\n/**\n * Internal states of OscParser.\n */\nexport const enum OscState {\n START = 0,\n ID = 1,\n PAYLOAD = 2,\n ABORT = 3\n}\n\n// payload limit for OSC and DCS\nexport const PAYLOAD_LIMIT = 10000000;\n", "/**\n * Copyright (c) 2019 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IDisposable } from 'common/Types';\nimport { IDcsHandler, IParams, IHandlerCollection, IDcsParser, DcsFallbackHandlerType, ISubParserStackState } from 'common/parser/Types';\nimport { utf32ToString } from 'common/input/TextDecoder';\nimport { Params } from 'common/parser/Params';\nimport { PAYLOAD_LIMIT } from 'common/parser/Constants';\n\nconst EMPTY_HANDLERS: IDcsHandler[] = [];\n\nexport class DcsParser implements IDcsParser {\n private _handlers: IHandlerCollection = Object.create(null);\n private _active: IDcsHandler[] = EMPTY_HANDLERS;\n private _ident: number = 0;\n private _handlerFb: DcsFallbackHandlerType = () => { };\n private _stack: ISubParserStackState = {\n paused: false,\n loopPosition: 0,\n fallThrough: false\n };\n\n public dispose(): void {\n this._handlers = Object.create(null);\n this._handlerFb = () => { };\n this._active = EMPTY_HANDLERS;\n }\n\n public registerHandler(ident: number, handler: IDcsHandler): IDisposable {\n if (this._handlers[ident] === undefined) {\n this._handlers[ident] = [];\n }\n const handlerList = this._handlers[ident];\n handlerList.push(handler);\n return {\n dispose: () => {\n const handlerIndex = handlerList.indexOf(handler);\n if (handlerIndex !== -1) {\n handlerList.splice(handlerIndex, 1);\n }\n }\n };\n }\n\n public clearHandler(ident: number): void {\n if (this._handlers[ident]) delete this._handlers[ident];\n }\n\n public setHandlerFallback(handler: DcsFallbackHandlerType): void {\n this._handlerFb = handler;\n }\n\n public reset(): void {\n // force cleanup leftover handlers\n if (this._active.length) {\n for (let j = this._stack.paused ? this._stack.loopPosition - 1 : this._active.length - 1; j >= 0; --j) {\n this._active[j].unhook(false);\n }\n }\n this._stack.paused = false;\n this._active = EMPTY_HANDLERS;\n this._ident = 0;\n }\n\n public hook(ident: number, params: IParams): void {\n // always reset leftover handlers\n this.reset();\n this._ident = ident;\n this._active = this._handlers[ident] || EMPTY_HANDLERS;\n if (!this._active.length) {\n this._handlerFb(this._ident, 'HOOK', params);\n } else {\n for (let j = this._active.length - 1; j >= 0; j--) {\n this._active[j].hook(params);\n }\n }\n }\n\n public put(data: Uint32Array, start: number, end: number): void {\n if (!this._active.length) {\n this._handlerFb(this._ident, 'PUT', utf32ToString(data, start, end));\n } else {\n for (let j = this._active.length - 1; j >= 0; j--) {\n this._active[j].put(data, start, end);\n }\n }\n }\n\n public unhook(success: boolean, promiseResult: boolean = true): void | Promise {\n if (!this._active.length) {\n this._handlerFb(this._ident, 'UNHOOK', success);\n } else {\n let handlerResult: boolean | Promise = false;\n let j = this._active.length - 1;\n let fallThrough = false;\n if (this._stack.paused) {\n j = this._stack.loopPosition - 1;\n handlerResult = promiseResult;\n fallThrough = this._stack.fallThrough;\n this._stack.paused = false;\n }\n if (!fallThrough && handlerResult === false) {\n for (; j >= 0; j--) {\n handlerResult = this._active[j].unhook(success);\n if (handlerResult === true) {\n break;\n } else if (handlerResult instanceof Promise) {\n this._stack.paused = true;\n this._stack.loopPosition = j;\n this._stack.fallThrough = false;\n return handlerResult;\n }\n }\n j--;\n }\n // cleanup left over handlers (fallThrough for async)\n for (; j >= 0; j--) {\n handlerResult = this._active[j].unhook(false);\n if (handlerResult instanceof Promise) {\n this._stack.paused = true;\n this._stack.loopPosition = j;\n this._stack.fallThrough = true;\n return handlerResult;\n }\n }\n }\n this._active = EMPTY_HANDLERS;\n this._ident = 0;\n }\n}\n\n// predefine empty params as [0] (ZDM)\nconst EMPTY_PARAMS = new Params();\nEMPTY_PARAMS.addParam(0);\n\n/**\n * Convenient class to create a DCS handler from a single callback function.\n * Note: The payload is currently limited to 50 MB (hardcoded).\n */\nexport class DcsHandler implements IDcsHandler {\n private _data = '';\n private _params: IParams = EMPTY_PARAMS;\n private _hitLimit: boolean = false;\n\n constructor(private _handler: (data: string, params: IParams) => boolean | Promise) { }\n\n public hook(params: IParams): void {\n // since we need to preserve params until `unhook`, we have to clone it\n // (only borrowed from parser and spans multiple parser states)\n // perf optimization:\n // clone only, if we have non empty params, otherwise stick with default\n this._params = (params.length > 1 || params.params[0]) ? params.clone() : EMPTY_PARAMS;\n this._data = '';\n this._hitLimit = false;\n }\n\n public put(data: Uint32Array, start: number, end: number): void {\n if (this._hitLimit) {\n return;\n }\n this._data += utf32ToString(data, start, end);\n if (this._data.length > PAYLOAD_LIMIT) {\n this._data = '';\n this._hitLimit = true;\n }\n }\n\n public unhook(success: boolean): boolean | Promise {\n let ret: boolean | Promise = false;\n if (this._hitLimit) {\n ret = false;\n } else if (success) {\n ret = this._handler(this._data, this._params);\n if (ret instanceof Promise) {\n // need to hold data and params until `ret` got resolved\n // dont care for errors, data will be freed anyway on next start\n return ret.then(res => {\n this._params = EMPTY_PARAMS;\n this._data = '';\n this._hitLimit = false;\n return res;\n });\n }\n }\n this._params = EMPTY_PARAMS;\n this._data = '';\n this._hitLimit = false;\n return ret;\n }\n}\n", "/**\n * Copyright (c) 2018 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IParsingState, IDcsHandler, IEscapeSequenceParser, IParams, IOscHandler, IHandlerCollection, CsiHandlerType, OscFallbackHandlerType, IOscParser, EscHandlerType, IDcsParser, DcsFallbackHandlerType, IFunctionIdentifier, ExecuteFallbackHandlerType, CsiFallbackHandlerType, EscFallbackHandlerType, PrintHandlerType, PrintFallbackHandlerType, ExecuteHandlerType, IParserStackState, ParserStackType, ResumableHandlersType } from 'common/parser/Types';\nimport { ParserState, ParserAction } from 'common/parser/Constants';\nimport { Disposable } from 'common/Lifecycle';\nimport { IDisposable } from 'common/Types';\nimport { fill } from 'common/TypedArrayUtils';\nimport { Params } from 'common/parser/Params';\nimport { OscParser } from 'common/parser/OscParser';\nimport { DcsParser } from 'common/parser/DcsParser';\n\n/**\n * Table values are generated like this:\n * index: currentState << TableValue.INDEX_STATE_SHIFT | charCode\n * value: action << TableValue.TRANSITION_ACTION_SHIFT | nextState\n */\nconst enum TableAccess {\n TRANSITION_ACTION_SHIFT = 4,\n TRANSITION_STATE_MASK = 15,\n INDEX_STATE_SHIFT = 8\n}\n\n/**\n * Transition table for EscapeSequenceParser.\n */\nexport class TransitionTable {\n public table: Uint8Array;\n\n constructor(length: number) {\n this.table = new Uint8Array(length);\n }\n\n /**\n * Set default transition.\n * @param action default action\n * @param next default next state\n */\n public setDefault(action: ParserAction, next: ParserState): void {\n fill(this.table, action << TableAccess.TRANSITION_ACTION_SHIFT | next);\n }\n\n /**\n * Add a transition to the transition table.\n * @param code input character code\n * @param state current parser state\n * @param action parser action to be done\n * @param next next parser state\n */\n public add(code: number, state: ParserState, action: ParserAction, next: ParserState): void {\n this.table[state << TableAccess.INDEX_STATE_SHIFT | code] = action << TableAccess.TRANSITION_ACTION_SHIFT | next;\n }\n\n /**\n * Add transitions for multiple input character codes.\n * @param codes input character code array\n * @param state current parser state\n * @param action parser action to be done\n * @param next next parser state\n */\n public addMany(codes: number[], state: ParserState, action: ParserAction, next: ParserState): void {\n for (let i = 0; i < codes.length; i++) {\n this.table[state << TableAccess.INDEX_STATE_SHIFT | codes[i]] = action << TableAccess.TRANSITION_ACTION_SHIFT | next;\n }\n }\n}\n\n\n// Pseudo-character placeholder for printable non-ascii characters (unicode).\nconst NON_ASCII_PRINTABLE = 0xA0;\n\n\n/**\n * VT500 compatible transition table.\n * Taken from https://vt100.net/emu/dec_ansi_parser.\n */\nexport const VT500_TRANSITION_TABLE = (function (): TransitionTable {\n const table: TransitionTable = new TransitionTable(4095);\n\n // range macro for byte\n const BYTE_VALUES = 256;\n const blueprint = Array.apply(null, Array(BYTE_VALUES)).map((unused: any, i: number) => i);\n const r = (start: number, end: number): number[] => blueprint.slice(start, end);\n\n // Default definitions.\n const PRINTABLES = r(0x20, 0x7f); // 0x20 (SP) included, 0x7F (DEL) excluded\n const EXECUTABLES = r(0x00, 0x18);\n EXECUTABLES.push(0x19);\n EXECUTABLES.push.apply(EXECUTABLES, r(0x1c, 0x20));\n\n const states: number[] = r(ParserState.GROUND, ParserState.DCS_PASSTHROUGH + 1);\n let state: any;\n\n // set default transition\n table.setDefault(ParserAction.ERROR, ParserState.GROUND);\n // printables\n table.addMany(PRINTABLES, ParserState.GROUND, ParserAction.PRINT, ParserState.GROUND);\n // global anywhere rules\n for (state in states) {\n table.addMany([0x18, 0x1a, 0x99, 0x9a], state, ParserAction.EXECUTE, ParserState.GROUND);\n table.addMany(r(0x80, 0x90), state, ParserAction.EXECUTE, ParserState.GROUND);\n table.addMany(r(0x90, 0x98), state, ParserAction.EXECUTE, ParserState.GROUND);\n table.add(0x9c, state, ParserAction.IGNORE, ParserState.GROUND); // ST as terminator\n table.add(0x1b, state, ParserAction.CLEAR, ParserState.ESCAPE); // ESC\n table.add(0x9d, state, ParserAction.OSC_START, ParserState.OSC_STRING); // OSC\n table.addMany([0x98, 0x9e, 0x9f], state, ParserAction.IGNORE, ParserState.SOS_PM_APC_STRING);\n table.add(0x9b, state, ParserAction.CLEAR, ParserState.CSI_ENTRY); // CSI\n table.add(0x90, state, ParserAction.CLEAR, ParserState.DCS_ENTRY); // DCS\n }\n // rules for executables and 7f\n table.addMany(EXECUTABLES, ParserState.GROUND, ParserAction.EXECUTE, ParserState.GROUND);\n table.addMany(EXECUTABLES, ParserState.ESCAPE, ParserAction.EXECUTE, ParserState.ESCAPE);\n table.add(0x7f, ParserState.ESCAPE, ParserAction.IGNORE, ParserState.ESCAPE);\n table.addMany(EXECUTABLES, ParserState.OSC_STRING, ParserAction.IGNORE, ParserState.OSC_STRING);\n table.addMany(EXECUTABLES, ParserState.CSI_ENTRY, ParserAction.EXECUTE, ParserState.CSI_ENTRY);\n table.add(0x7f, ParserState.CSI_ENTRY, ParserAction.IGNORE, ParserState.CSI_ENTRY);\n table.addMany(EXECUTABLES, ParserState.CSI_PARAM, ParserAction.EXECUTE, ParserState.CSI_PARAM);\n table.add(0x7f, ParserState.CSI_PARAM, ParserAction.IGNORE, ParserState.CSI_PARAM);\n table.addMany(EXECUTABLES, ParserState.CSI_IGNORE, ParserAction.EXECUTE, ParserState.CSI_IGNORE);\n table.addMany(EXECUTABLES, ParserState.CSI_INTERMEDIATE, ParserAction.EXECUTE, ParserState.CSI_INTERMEDIATE);\n table.add(0x7f, ParserState.CSI_INTERMEDIATE, ParserAction.IGNORE, ParserState.CSI_INTERMEDIATE);\n table.addMany(EXECUTABLES, ParserState.ESCAPE_INTERMEDIATE, ParserAction.EXECUTE, ParserState.ESCAPE_INTERMEDIATE);\n table.add(0x7f, ParserState.ESCAPE_INTERMEDIATE, ParserAction.IGNORE, ParserState.ESCAPE_INTERMEDIATE);\n // osc\n table.add(0x5d, ParserState.ESCAPE, ParserAction.OSC_START, ParserState.OSC_STRING);\n table.addMany(PRINTABLES, ParserState.OSC_STRING, ParserAction.OSC_PUT, ParserState.OSC_STRING);\n table.add(0x7f, ParserState.OSC_STRING, ParserAction.OSC_PUT, ParserState.OSC_STRING);\n table.addMany([0x9c, 0x1b, 0x18, 0x1a, 0x07], ParserState.OSC_STRING, ParserAction.OSC_END, ParserState.GROUND);\n table.addMany(r(0x1c, 0x20), ParserState.OSC_STRING, ParserAction.IGNORE, ParserState.OSC_STRING);\n // sos/pm/apc does nothing\n table.addMany([0x58, 0x5e, 0x5f], ParserState.ESCAPE, ParserAction.IGNORE, ParserState.SOS_PM_APC_STRING);\n table.addMany(PRINTABLES, ParserState.SOS_PM_APC_STRING, ParserAction.IGNORE, ParserState.SOS_PM_APC_STRING);\n table.addMany(EXECUTABLES, ParserState.SOS_PM_APC_STRING, ParserAction.IGNORE, ParserState.SOS_PM_APC_STRING);\n table.add(0x9c, ParserState.SOS_PM_APC_STRING, ParserAction.IGNORE, ParserState.GROUND);\n table.add(0x7f, ParserState.SOS_PM_APC_STRING, ParserAction.IGNORE, ParserState.SOS_PM_APC_STRING);\n // csi entries\n table.add(0x5b, ParserState.ESCAPE, ParserAction.CLEAR, ParserState.CSI_ENTRY);\n table.addMany(r(0x40, 0x7f), ParserState.CSI_ENTRY, ParserAction.CSI_DISPATCH, ParserState.GROUND);\n table.addMany(r(0x30, 0x3c), ParserState.CSI_ENTRY, ParserAction.PARAM, ParserState.CSI_PARAM);\n table.addMany([0x3c, 0x3d, 0x3e, 0x3f], ParserState.CSI_ENTRY, ParserAction.COLLECT, ParserState.CSI_PARAM);\n table.addMany(r(0x30, 0x3c), ParserState.CSI_PARAM, ParserAction.PARAM, ParserState.CSI_PARAM);\n table.addMany(r(0x40, 0x7f), ParserState.CSI_PARAM, ParserAction.CSI_DISPATCH, ParserState.GROUND);\n table.addMany([0x3c, 0x3d, 0x3e, 0x3f], ParserState.CSI_PARAM, ParserAction.IGNORE, ParserState.CSI_IGNORE);\n table.addMany(r(0x20, 0x40), ParserState.CSI_IGNORE, ParserAction.IGNORE, ParserState.CSI_IGNORE);\n table.add(0x7f, ParserState.CSI_IGNORE, ParserAction.IGNORE, ParserState.CSI_IGNORE);\n table.addMany(r(0x40, 0x7f), ParserState.CSI_IGNORE, ParserAction.IGNORE, ParserState.GROUND);\n table.addMany(r(0x20, 0x30), ParserState.CSI_ENTRY, ParserAction.COLLECT, ParserState.CSI_INTERMEDIATE);\n table.addMany(r(0x20, 0x30), ParserState.CSI_INTERMEDIATE, ParserAction.COLLECT, ParserState.CSI_INTERMEDIATE);\n table.addMany(r(0x30, 0x40), ParserState.CSI_INTERMEDIATE, ParserAction.IGNORE, ParserState.CSI_IGNORE);\n table.addMany(r(0x40, 0x7f), ParserState.CSI_INTERMEDIATE, ParserAction.CSI_DISPATCH, ParserState.GROUND);\n table.addMany(r(0x20, 0x30), ParserState.CSI_PARAM, ParserAction.COLLECT, ParserState.CSI_INTERMEDIATE);\n // esc_intermediate\n table.addMany(r(0x20, 0x30), ParserState.ESCAPE, ParserAction.COLLECT, ParserState.ESCAPE_INTERMEDIATE);\n table.addMany(r(0x20, 0x30), ParserState.ESCAPE_INTERMEDIATE, ParserAction.COLLECT, ParserState.ESCAPE_INTERMEDIATE);\n table.addMany(r(0x30, 0x7f), ParserState.ESCAPE_INTERMEDIATE, ParserAction.ESC_DISPATCH, ParserState.GROUND);\n table.addMany(r(0x30, 0x50), ParserState.ESCAPE, ParserAction.ESC_DISPATCH, ParserState.GROUND);\n table.addMany(r(0x51, 0x58), ParserState.ESCAPE, ParserAction.ESC_DISPATCH, ParserState.GROUND);\n table.addMany([0x59, 0x5a, 0x5c], ParserState.ESCAPE, ParserAction.ESC_DISPATCH, ParserState.GROUND);\n table.addMany(r(0x60, 0x7f), ParserState.ESCAPE, ParserAction.ESC_DISPATCH, ParserState.GROUND);\n // dcs entry\n table.add(0x50, ParserState.ESCAPE, ParserAction.CLEAR, ParserState.DCS_ENTRY);\n table.addMany(EXECUTABLES, ParserState.DCS_ENTRY, ParserAction.IGNORE, ParserState.DCS_ENTRY);\n table.add(0x7f, ParserState.DCS_ENTRY, ParserAction.IGNORE, ParserState.DCS_ENTRY);\n table.addMany(r(0x1c, 0x20), ParserState.DCS_ENTRY, ParserAction.IGNORE, ParserState.DCS_ENTRY);\n table.addMany(r(0x20, 0x30), ParserState.DCS_ENTRY, ParserAction.COLLECT, ParserState.DCS_INTERMEDIATE);\n table.addMany(r(0x30, 0x3c), ParserState.DCS_ENTRY, ParserAction.PARAM, ParserState.DCS_PARAM);\n table.addMany([0x3c, 0x3d, 0x3e, 0x3f], ParserState.DCS_ENTRY, ParserAction.COLLECT, ParserState.DCS_PARAM);\n table.addMany(EXECUTABLES, ParserState.DCS_IGNORE, ParserAction.IGNORE, ParserState.DCS_IGNORE);\n table.addMany(r(0x20, 0x80), ParserState.DCS_IGNORE, ParserAction.IGNORE, ParserState.DCS_IGNORE);\n table.addMany(r(0x1c, 0x20), ParserState.DCS_IGNORE, ParserAction.IGNORE, ParserState.DCS_IGNORE);\n table.addMany(EXECUTABLES, ParserState.DCS_PARAM, ParserAction.IGNORE, ParserState.DCS_PARAM);\n table.add(0x7f, ParserState.DCS_PARAM, ParserAction.IGNORE, ParserState.DCS_PARAM);\n table.addMany(r(0x1c, 0x20), ParserState.DCS_PARAM, ParserAction.IGNORE, ParserState.DCS_PARAM);\n table.addMany(r(0x30, 0x3c), ParserState.DCS_PARAM, ParserAction.PARAM, ParserState.DCS_PARAM);\n table.addMany([0x3c, 0x3d, 0x3e, 0x3f], ParserState.DCS_PARAM, ParserAction.IGNORE, ParserState.DCS_IGNORE);\n table.addMany(r(0x20, 0x30), ParserState.DCS_PARAM, ParserAction.COLLECT, ParserState.DCS_INTERMEDIATE);\n table.addMany(EXECUTABLES, ParserState.DCS_INTERMEDIATE, ParserAction.IGNORE, ParserState.DCS_INTERMEDIATE);\n table.add(0x7f, ParserState.DCS_INTERMEDIATE, ParserAction.IGNORE, ParserState.DCS_INTERMEDIATE);\n table.addMany(r(0x1c, 0x20), ParserState.DCS_INTERMEDIATE, ParserAction.IGNORE, ParserState.DCS_INTERMEDIATE);\n table.addMany(r(0x20, 0x30), ParserState.DCS_INTERMEDIATE, ParserAction.COLLECT, ParserState.DCS_INTERMEDIATE);\n table.addMany(r(0x30, 0x40), ParserState.DCS_INTERMEDIATE, ParserAction.IGNORE, ParserState.DCS_IGNORE);\n table.addMany(r(0x40, 0x7f), ParserState.DCS_INTERMEDIATE, ParserAction.DCS_HOOK, ParserState.DCS_PASSTHROUGH);\n table.addMany(r(0x40, 0x7f), ParserState.DCS_PARAM, ParserAction.DCS_HOOK, ParserState.DCS_PASSTHROUGH);\n table.addMany(r(0x40, 0x7f), ParserState.DCS_ENTRY, ParserAction.DCS_HOOK, ParserState.DCS_PASSTHROUGH);\n table.addMany(EXECUTABLES, ParserState.DCS_PASSTHROUGH, ParserAction.DCS_PUT, ParserState.DCS_PASSTHROUGH);\n table.addMany(PRINTABLES, ParserState.DCS_PASSTHROUGH, ParserAction.DCS_PUT, ParserState.DCS_PASSTHROUGH);\n table.add(0x7f, ParserState.DCS_PASSTHROUGH, ParserAction.IGNORE, ParserState.DCS_PASSTHROUGH);\n table.addMany([0x1b, 0x9c, 0x18, 0x1a], ParserState.DCS_PASSTHROUGH, ParserAction.DCS_UNHOOK, ParserState.GROUND);\n // special handling of unicode chars\n table.add(NON_ASCII_PRINTABLE, ParserState.GROUND, ParserAction.PRINT, ParserState.GROUND);\n table.add(NON_ASCII_PRINTABLE, ParserState.OSC_STRING, ParserAction.OSC_PUT, ParserState.OSC_STRING);\n table.add(NON_ASCII_PRINTABLE, ParserState.CSI_IGNORE, ParserAction.IGNORE, ParserState.CSI_IGNORE);\n table.add(NON_ASCII_PRINTABLE, ParserState.DCS_IGNORE, ParserAction.IGNORE, ParserState.DCS_IGNORE);\n table.add(NON_ASCII_PRINTABLE, ParserState.DCS_PASSTHROUGH, ParserAction.DCS_PUT, ParserState.DCS_PASSTHROUGH);\n return table;\n})();\n\n\n/**\n * EscapeSequenceParser.\n * This class implements the ANSI/DEC compatible parser described by\n * Paul Williams (https://vt100.net/emu/dec_ansi_parser).\n *\n * To implement custom ANSI compliant escape sequences it is not needed to\n * alter this parser, instead consider registering a custom handler.\n * For non ANSI compliant sequences change the transition table with\n * the optional `transitions` constructor argument and\n * reimplement the `parse` method.\n *\n * This parser is currently hardcoded to operate in ZDM (Zero Default Mode)\n * as suggested by the original parser, thus empty parameters are set to 0.\n * This this is not in line with the latest ECMA-48 specification\n * (ZDM was part of the early specs and got completely removed later on).\n *\n * Other than the original parser from vt100.net this parser supports\n * sub parameters in digital parameters separated by colons. Empty sub parameters\n * are set to -1 (no ZDM for sub parameters).\n *\n * About prefix and intermediate bytes:\n * This parser follows the assumptions of the vt100.net parser with these restrictions:\n * - only one prefix byte is allowed as first parameter byte, byte range 0x3c .. 0x3f\n * - max. two intermediates are respected, byte range 0x20 .. 0x2f\n * Note that this is not in line with ECMA-48 which does not limit either of those.\n * Furthermore ECMA-48 allows the prefix byte range at any param byte position. Currently\n * there are no known sequences that follow the broader definition of the specification.\n *\n * TODO: implement error recovery hook via error handler return values\n */\nexport class EscapeSequenceParser extends Disposable implements IEscapeSequenceParser {\n public initialState: number;\n public currentState: number;\n public precedingCodepoint: number;\n\n // buffers over several parse calls\n protected _params: Params;\n protected _collect: number;\n\n // handler lookup containers\n protected _printHandler: PrintHandlerType;\n protected _executeHandlers: { [flag: number]: ExecuteHandlerType };\n protected _csiHandlers: IHandlerCollection;\n protected _escHandlers: IHandlerCollection;\n protected _oscParser: IOscParser;\n protected _dcsParser: IDcsParser;\n protected _errorHandler: (state: IParsingState) => IParsingState;\n\n // fallback handlers\n protected _printHandlerFb: PrintFallbackHandlerType;\n protected _executeHandlerFb: ExecuteFallbackHandlerType;\n protected _csiHandlerFb: CsiFallbackHandlerType;\n protected _escHandlerFb: EscFallbackHandlerType;\n protected _errorHandlerFb: (state: IParsingState) => IParsingState;\n\n // parser stack save for async handler support\n protected _parseStack: IParserStackState = {\n state: ParserStackType.NONE,\n handlers: [],\n handlerPos: 0,\n transition: 0,\n chunkPos: 0\n };\n\n constructor(\n protected readonly _transitions: TransitionTable = VT500_TRANSITION_TABLE\n ) {\n super();\n\n this.initialState = ParserState.GROUND;\n this.currentState = this.initialState;\n this._params = new Params(); // defaults to 32 storable params/subparams\n this._params.addParam(0); // ZDM\n this._collect = 0;\n this.precedingCodepoint = 0;\n\n // set default fallback handlers and handler lookup containers\n this._printHandlerFb = (data, start, end): void => { };\n this._executeHandlerFb = (code: number): void => { };\n this._csiHandlerFb = (ident: number, params: IParams): void => { };\n this._escHandlerFb = (ident: number): void => { };\n this._errorHandlerFb = (state: IParsingState): IParsingState => state;\n this._printHandler = this._printHandlerFb;\n this._executeHandlers = Object.create(null);\n this._csiHandlers = Object.create(null);\n this._escHandlers = Object.create(null);\n this._oscParser = new OscParser();\n this._dcsParser = new DcsParser();\n this._errorHandler = this._errorHandlerFb;\n\n // swallow 7bit ST (ESC+\\)\n this.registerEscHandler({ final: '\\\\' }, () => true);\n }\n\n protected _identifier(id: IFunctionIdentifier, finalRange: number[] = [0x40, 0x7e]): number {\n let res = 0;\n if (id.prefix) {\n if (id.prefix.length > 1) {\n throw new Error('only one byte as prefix supported');\n }\n res = id.prefix.charCodeAt(0);\n if (res && 0x3c > res || res > 0x3f) {\n throw new Error('prefix must be in range 0x3c .. 0x3f');\n }\n }\n if (id.intermediates) {\n if (id.intermediates.length > 2) {\n throw new Error('only two bytes as intermediates are supported');\n }\n for (let i = 0; i < id.intermediates.length; ++i) {\n const intermediate = id.intermediates.charCodeAt(i);\n if (0x20 > intermediate || intermediate > 0x2f) {\n throw new Error('intermediate must be in range 0x20 .. 0x2f');\n }\n res <<= 8;\n res |= intermediate;\n }\n }\n if (id.final.length !== 1) {\n throw new Error('final must be a single byte');\n }\n const finalCode = id.final.charCodeAt(0);\n if (finalRange[0] > finalCode || finalCode > finalRange[1]) {\n throw new Error(`final must be in range ${finalRange[0]} .. ${finalRange[1]}`);\n }\n res <<= 8;\n res |= finalCode;\n\n return res;\n }\n\n public identToString(ident: number): string {\n const res: string[] = [];\n while (ident) {\n res.push(String.fromCharCode(ident & 0xFF));\n ident >>= 8;\n }\n return res.reverse().join('');\n }\n\n public dispose(): void {\n this._csiHandlers = Object.create(null);\n this._executeHandlers = Object.create(null);\n this._escHandlers = Object.create(null);\n this._oscParser.dispose();\n this._dcsParser.dispose();\n }\n\n public setPrintHandler(handler: PrintHandlerType): void {\n this._printHandler = handler;\n }\n public clearPrintHandler(): void {\n this._printHandler = this._printHandlerFb;\n }\n\n public registerEscHandler(id: IFunctionIdentifier, handler: EscHandlerType): IDisposable {\n const ident = this._identifier(id, [0x30, 0x7e]);\n if (this._escHandlers[ident] === undefined) {\n this._escHandlers[ident] = [];\n }\n const handlerList = this._escHandlers[ident];\n handlerList.push(handler);\n return {\n dispose: () => {\n const handlerIndex = handlerList.indexOf(handler);\n if (handlerIndex !== -1) {\n handlerList.splice(handlerIndex, 1);\n }\n }\n };\n }\n public clearEscHandler(id: IFunctionIdentifier): void {\n if (this._escHandlers[this._identifier(id, [0x30, 0x7e])]) delete this._escHandlers[this._identifier(id, [0x30, 0x7e])];\n }\n public setEscHandlerFallback(handler: EscFallbackHandlerType): void {\n this._escHandlerFb = handler;\n }\n\n public setExecuteHandler(flag: string, handler: ExecuteHandlerType): void {\n this._executeHandlers[flag.charCodeAt(0)] = handler;\n }\n public clearExecuteHandler(flag: string): void {\n if (this._executeHandlers[flag.charCodeAt(0)]) delete this._executeHandlers[flag.charCodeAt(0)];\n }\n public setExecuteHandlerFallback(handler: ExecuteFallbackHandlerType): void {\n this._executeHandlerFb = handler;\n }\n\n public registerCsiHandler(id: IFunctionIdentifier, handler: CsiHandlerType): IDisposable {\n const ident = this._identifier(id);\n if (this._csiHandlers[ident] === undefined) {\n this._csiHandlers[ident] = [];\n }\n const handlerList = this._csiHandlers[ident];\n handlerList.push(handler);\n return {\n dispose: () => {\n const handlerIndex = handlerList.indexOf(handler);\n if (handlerIndex !== -1) {\n handlerList.splice(handlerIndex, 1);\n }\n }\n };\n }\n public clearCsiHandler(id: IFunctionIdentifier): void {\n if (this._csiHandlers[this._identifier(id)]) delete this._csiHandlers[this._identifier(id)];\n }\n public setCsiHandlerFallback(callback: (ident: number, params: IParams) => void): void {\n this._csiHandlerFb = callback;\n }\n\n public registerDcsHandler(id: IFunctionIdentifier, handler: IDcsHandler): IDisposable {\n return this._dcsParser.registerHandler(this._identifier(id), handler);\n }\n public clearDcsHandler(id: IFunctionIdentifier): void {\n this._dcsParser.clearHandler(this._identifier(id));\n }\n public setDcsHandlerFallback(handler: DcsFallbackHandlerType): void {\n this._dcsParser.setHandlerFallback(handler);\n }\n\n public registerOscHandler(ident: number, handler: IOscHandler): IDisposable {\n return this._oscParser.registerHandler(ident, handler);\n }\n public clearOscHandler(ident: number): void {\n this._oscParser.clearHandler(ident);\n }\n public setOscHandlerFallback(handler: OscFallbackHandlerType): void {\n this._oscParser.setHandlerFallback(handler);\n }\n\n public setErrorHandler(callback: (state: IParsingState) => IParsingState): void {\n this._errorHandler = callback;\n }\n public clearErrorHandler(): void {\n this._errorHandler = this._errorHandlerFb;\n }\n\n /**\n * Reset parser to initial values.\n *\n * This can also be used to lift the improper continuation error condition\n * when dealing with async handlers. Use this only as a last resort to silence\n * that error when the terminal has no pending data to be processed. Note that\n * the interrupted async handler might continue its work in the future messing\n * up the terminal state even further.\n */\n public reset(): void {\n this.currentState = this.initialState;\n this._oscParser.reset();\n this._dcsParser.reset();\n this._params.reset();\n this._params.addParam(0); // ZDM\n this._collect = 0;\n this.precedingCodepoint = 0;\n // abort pending continuation from async handler\n // Here the RESET type indicates, that the next parse call will\n // ignore any saved stack, instead continues sync with next codepoint from GROUND\n if (this._parseStack.state !== ParserStackType.NONE) {\n this._parseStack.state = ParserStackType.RESET;\n this._parseStack.handlers = []; // also release handlers ref\n }\n }\n\n /**\n * Async parse support.\n */\n protected _preserveStack(\n state: ParserStackType,\n handlers: ResumableHandlersType,\n handlerPos: number,\n transition: number,\n chunkPos: number\n ): void {\n this._parseStack.state = state;\n this._parseStack.handlers = handlers;\n this._parseStack.handlerPos = handlerPos;\n this._parseStack.transition = transition;\n this._parseStack.chunkPos = chunkPos;\n }\n\n /**\n * Parse UTF32 codepoints in `data` up to `length`.\n *\n * Note: For several actions with high data load the parsing is optimized\n * by using local read ahead loops with hardcoded conditions to\n * avoid costly table lookups. Make sure that any change of table values\n * will be reflected in the loop conditions as well and vice versa.\n * Affected states/actions:\n * - GROUND:PRINT\n * - CSI_PARAM:PARAM\n * - DCS_PARAM:PARAM\n * - OSC_STRING:OSC_PUT\n * - DCS_PASSTHROUGH:DCS_PUT\n *\n * Note on asynchronous handler support:\n * Any handler returning a promise will be treated as asynchronous.\n * To keep the in-band blocking working for async handlers, `parse` pauses execution,\n * creates a stack save and returns the promise to the caller.\n * For proper continuation of the paused state it is important\n * to await the promise resolving. On resolve the parse must be repeated\n * with the same chunk of data and the resolved value in `promiseResult`\n * until no promise is returned.\n *\n * Important: With only sync handlers defined, parsing is completely synchronous as well.\n * As soon as an async handler is involved, synchronous parsing is not possible anymore.\n *\n * Boilerplate for proper parsing of multiple chunks with async handlers:\n *\n * ```typescript\n * async function parseMultipleChunks(chunks: Uint32Array[]): Promise {\n * for (const chunk of chunks) {\n * let result: void | Promise;\n * let prev: boolean | undefined;\n * while (result = parser.parse(chunk, chunk.length, prev)) {\n * prev = await result;\n * }\n * }\n * // finished parsing all chunks...\n * }\n * ```\n */\n public parse(data: Uint32Array, length: number, promiseResult?: boolean): void | Promise {\n let code = 0;\n let transition = 0;\n let start = 0;\n let handlerResult: void | boolean | Promise;\n\n // resume from async handler\n if (this._parseStack.state) {\n // allow sync parser reset even in continuation mode\n // Note: can be used to recover parser from improper continuation error below\n if (this._parseStack.state === ParserStackType.RESET) {\n this._parseStack.state = ParserStackType.NONE;\n start = this._parseStack.chunkPos + 1; // continue with next codepoint in GROUND\n } else {\n if (promiseResult === undefined || this._parseStack.state === ParserStackType.FAIL) {\n /**\n * Reject further parsing on improper continuation after pausing.\n * This is a really bad condition with screwed up execution order and prolly messed up\n * terminal state, therefore we exit hard with an exception and reject any further parsing.\n *\n * Note: With `Terminal.write` usage this exception should never occur, as the top level\n * calls are guaranteed to handle async conditions properly. If you ever encounter this\n * exception in your terminal integration it indicates, that you injected data chunks to\n * `InputHandler.parse` or `EscapeSequenceParser.parse` synchronously without waiting for\n * continuation of a running async handler.\n *\n * It is possible to get rid of this error by calling `reset`. But dont rely on that,\n * as the pending async handler still might mess up the terminal later. Instead fix the faulty\n * async handling, so this error will not be thrown anymore.\n */\n this._parseStack.state = ParserStackType.FAIL;\n throw new Error('improper continuation due to previous async handler, giving up parsing');\n }\n\n // we have to resume the old handler loop if:\n // - return value of the promise was `false`\n // - handlers are not exhausted yet\n const handlers = this._parseStack.handlers;\n let handlerPos = this._parseStack.handlerPos - 1;\n switch (this._parseStack.state) {\n case ParserStackType.CSI:\n if (promiseResult === false && handlerPos > -1) {\n for (; handlerPos >= 0; handlerPos--) {\n handlerResult = (handlers as CsiHandlerType[])[handlerPos](this._params);\n if (handlerResult === true) {\n break;\n } else if (handlerResult instanceof Promise) {\n this._parseStack.handlerPos = handlerPos;\n return handlerResult;\n }\n }\n }\n this._parseStack.handlers = [];\n break;\n case ParserStackType.ESC:\n if (promiseResult === false && handlerPos > -1) {\n for (; handlerPos >= 0; handlerPos--) {\n handlerResult = (handlers as EscHandlerType[])[handlerPos]();\n if (handlerResult === true) {\n break;\n } else if (handlerResult instanceof Promise) {\n this._parseStack.handlerPos = handlerPos;\n return handlerResult;\n }\n }\n }\n this._parseStack.handlers = [];\n break;\n case ParserStackType.DCS:\n code = data[this._parseStack.chunkPos];\n handlerResult = this._dcsParser.unhook(code !== 0x18 && code !== 0x1a, promiseResult);\n if (handlerResult) {\n return handlerResult;\n }\n if (code === 0x1b) this._parseStack.transition |= ParserState.ESCAPE;\n this._params.reset();\n this._params.addParam(0); // ZDM\n this._collect = 0;\n break;\n case ParserStackType.OSC:\n code = data[this._parseStack.chunkPos];\n handlerResult = this._oscParser.end(code !== 0x18 && code !== 0x1a, promiseResult);\n if (handlerResult) {\n return handlerResult;\n }\n if (code === 0x1b) this._parseStack.transition |= ParserState.ESCAPE;\n this._params.reset();\n this._params.addParam(0); // ZDM\n this._collect = 0;\n break;\n }\n // cleanup before continuing with the main sync loop\n this._parseStack.state = ParserStackType.NONE;\n start = this._parseStack.chunkPos + 1;\n this.precedingCodepoint = 0;\n this.currentState = this._parseStack.transition & TableAccess.TRANSITION_STATE_MASK;\n }\n }\n\n // continue with main sync loop\n\n // process input string\n for (let i = start; i < length; ++i) {\n code = data[i];\n\n // normal transition & action lookup\n transition = this._transitions.table[this.currentState << TableAccess.INDEX_STATE_SHIFT | (code < 0xa0 ? code : NON_ASCII_PRINTABLE)];\n switch (transition >> TableAccess.TRANSITION_ACTION_SHIFT) {\n case ParserAction.PRINT:\n // read ahead with loop unrolling\n // Note: 0x20 (SP) is included, 0x7F (DEL) is excluded\n for (let j = i + 1; ; ++j) {\n if (j >= length || (code = data[j]) < 0x20 || (code > 0x7e && code < NON_ASCII_PRINTABLE)) {\n this._printHandler(data, i, j);\n i = j - 1;\n break;\n }\n if (++j >= length || (code = data[j]) < 0x20 || (code > 0x7e && code < NON_ASCII_PRINTABLE)) {\n this._printHandler(data, i, j);\n i = j - 1;\n break;\n }\n if (++j >= length || (code = data[j]) < 0x20 || (code > 0x7e && code < NON_ASCII_PRINTABLE)) {\n this._printHandler(data, i, j);\n i = j - 1;\n break;\n }\n if (++j >= length || (code = data[j]) < 0x20 || (code > 0x7e && code < NON_ASCII_PRINTABLE)) {\n this._printHandler(data, i, j);\n i = j - 1;\n break;\n }\n }\n break;\n case ParserAction.EXECUTE:\n if (this._executeHandlers[code]) this._executeHandlers[code]();\n else this._executeHandlerFb(code);\n this.precedingCodepoint = 0;\n break;\n case ParserAction.IGNORE:\n break;\n case ParserAction.ERROR:\n const inject: IParsingState = this._errorHandler(\n {\n position: i,\n code,\n currentState: this.currentState,\n collect: this._collect,\n params: this._params,\n abort: false\n });\n if (inject.abort) return;\n // inject values: currently not implemented\n break;\n case ParserAction.CSI_DISPATCH:\n // Trigger CSI Handler\n const handlers = this._csiHandlers[this._collect << 8 | code];\n let j = handlers ? handlers.length - 1 : -1;\n for (; j >= 0; j--) {\n // true means success and to stop bubbling\n // a promise indicates an async handler that needs to finish before progressing\n handlerResult = handlers[j](this._params);\n if (handlerResult === true) {\n break;\n } else if (handlerResult instanceof Promise) {\n this._preserveStack(ParserStackType.CSI, handlers, j, transition, i);\n return handlerResult;\n }\n }\n if (j < 0) {\n this._csiHandlerFb(this._collect << 8 | code, this._params);\n }\n this.precedingCodepoint = 0;\n break;\n case ParserAction.PARAM:\n // inner loop: digits (0x30 - 0x39) and ; (0x3b) and : (0x3a)\n do {\n switch (code) {\n case 0x3b:\n this._params.addParam(0); // ZDM\n break;\n case 0x3a:\n this._params.addSubParam(-1);\n break;\n default: // 0x30 - 0x39\n this._params.addDigit(code - 48);\n }\n } while (++i < length && (code = data[i]) > 0x2f && code < 0x3c);\n i--;\n break;\n case ParserAction.COLLECT:\n this._collect <<= 8;\n this._collect |= code;\n break;\n case ParserAction.ESC_DISPATCH:\n const handlersEsc = this._escHandlers[this._collect << 8 | code];\n let jj = handlersEsc ? handlersEsc.length - 1 : -1;\n for (; jj >= 0; jj--) {\n // true means success and to stop bubbling\n // a promise indicates an async handler that needs to finish before progressing\n handlerResult = handlersEsc[jj]();\n if (handlerResult === true) {\n break;\n } else if (handlerResult instanceof Promise) {\n this._preserveStack(ParserStackType.ESC, handlersEsc, jj, transition, i);\n return handlerResult;\n }\n }\n if (jj < 0) {\n this._escHandlerFb(this._collect << 8 | code);\n }\n this.precedingCodepoint = 0;\n break;\n case ParserAction.CLEAR:\n this._params.reset();\n this._params.addParam(0); // ZDM\n this._collect = 0;\n break;\n case ParserAction.DCS_HOOK:\n this._dcsParser.hook(this._collect << 8 | code, this._params);\n break;\n case ParserAction.DCS_PUT:\n // inner loop - exit DCS_PUT: 0x18, 0x1a, 0x1b, 0x7f, 0x80 - 0x9f\n // unhook triggered by: 0x1b, 0x9c (success) and 0x18, 0x1a (abort)\n for (let j = i + 1; ; ++j) {\n if (j >= length || (code = data[j]) === 0x18 || code === 0x1a || code === 0x1b || (code > 0x7f && code < NON_ASCII_PRINTABLE)) {\n this._dcsParser.put(data, i, j);\n i = j - 1;\n break;\n }\n }\n break;\n case ParserAction.DCS_UNHOOK:\n handlerResult = this._dcsParser.unhook(code !== 0x18 && code !== 0x1a);\n if (handlerResult) {\n this._preserveStack(ParserStackType.DCS, [], 0, transition, i);\n return handlerResult;\n }\n if (code === 0x1b) transition |= ParserState.ESCAPE;\n this._params.reset();\n this._params.addParam(0); // ZDM\n this._collect = 0;\n this.precedingCodepoint = 0;\n break;\n case ParserAction.OSC_START:\n this._oscParser.start();\n break;\n case ParserAction.OSC_PUT:\n // inner loop: 0x20 (SP) included, 0x7F (DEL) included\n for (let j = i + 1; ; j++) {\n if (j >= length || (code = data[j]) < 0x20 || (code > 0x7f && code < NON_ASCII_PRINTABLE)) {\n this._oscParser.put(data, i, j);\n i = j - 1;\n break;\n }\n }\n break;\n case ParserAction.OSC_END:\n handlerResult = this._oscParser.end(code !== 0x18 && code !== 0x1a);\n if (handlerResult) {\n this._preserveStack(ParserStackType.OSC, [], 0, transition, i);\n return handlerResult;\n }\n if (code === 0x1b) transition |= ParserState.ESCAPE;\n this._params.reset();\n this._params.addParam(0); // ZDM\n this._collect = 0;\n this.precedingCodepoint = 0;\n break;\n }\n this.currentState = transition & TableAccess.TRANSITION_STATE_MASK;\n }\n }\n}\n", "/**\n * Copyright (c) 2019 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IOscHandler, IHandlerCollection, OscFallbackHandlerType, IOscParser, ISubParserStackState } from 'common/parser/Types';\nimport { OscState, PAYLOAD_LIMIT } from 'common/parser/Constants';\nimport { utf32ToString } from 'common/input/TextDecoder';\nimport { IDisposable } from 'common/Types';\n\nconst EMPTY_HANDLERS: IOscHandler[] = [];\n\nexport class OscParser implements IOscParser {\n private _state = OscState.START;\n private _active = EMPTY_HANDLERS;\n private _id = -1;\n private _handlers: IHandlerCollection = Object.create(null);\n private _handlerFb: OscFallbackHandlerType = () => { };\n private _stack: ISubParserStackState = {\n paused: false,\n loopPosition: 0,\n fallThrough: false\n };\n\n public registerHandler(ident: number, handler: IOscHandler): IDisposable {\n if (this._handlers[ident] === undefined) {\n this._handlers[ident] = [];\n }\n const handlerList = this._handlers[ident];\n handlerList.push(handler);\n return {\n dispose: () => {\n const handlerIndex = handlerList.indexOf(handler);\n if (handlerIndex !== -1) {\n handlerList.splice(handlerIndex, 1);\n }\n }\n };\n }\n public clearHandler(ident: number): void {\n if (this._handlers[ident]) delete this._handlers[ident];\n }\n public setHandlerFallback(handler: OscFallbackHandlerType): void {\n this._handlerFb = handler;\n }\n\n public dispose(): void {\n this._handlers = Object.create(null);\n this._handlerFb = () => { };\n this._active = EMPTY_HANDLERS;\n }\n\n public reset(): void {\n // force cleanup handlers if payload was already sent\n if (this._state === OscState.PAYLOAD) {\n for (let j = this._stack.paused ? this._stack.loopPosition - 1 : this._active.length - 1; j >= 0; --j) {\n this._active[j].end(false);\n }\n }\n this._stack.paused = false;\n this._active = EMPTY_HANDLERS;\n this._id = -1;\n this._state = OscState.START;\n }\n\n private _start(): void {\n this._active = this._handlers[this._id] || EMPTY_HANDLERS;\n if (!this._active.length) {\n this._handlerFb(this._id, 'START');\n } else {\n for (let j = this._active.length - 1; j >= 0; j--) {\n this._active[j].start();\n }\n }\n }\n\n private _put(data: Uint32Array, start: number, end: number): void {\n if (!this._active.length) {\n this._handlerFb(this._id, 'PUT', utf32ToString(data, start, end));\n } else {\n for (let j = this._active.length - 1; j >= 0; j--) {\n this._active[j].put(data, start, end);\n }\n }\n }\n\n public start(): void {\n // always reset leftover handlers\n this.reset();\n this._state = OscState.ID;\n }\n\n /**\n * Put data to current OSC command.\n * Expects the identifier of the OSC command in the form\n * OSC id ; payload ST/BEL\n * Payload chunks are not further processed and get\n * directly passed to the handlers.\n */\n public put(data: Uint32Array, start: number, end: number): void {\n if (this._state === OscState.ABORT) {\n return;\n }\n if (this._state === OscState.ID) {\n while (start < end) {\n const code = data[start++];\n if (code === 0x3b) {\n this._state = OscState.PAYLOAD;\n this._start();\n break;\n }\n if (code < 0x30 || 0x39 < code) {\n this._state = OscState.ABORT;\n return;\n }\n if (this._id === -1) {\n this._id = 0;\n }\n this._id = this._id * 10 + code - 48;\n }\n }\n if (this._state === OscState.PAYLOAD && end - start > 0) {\n this._put(data, start, end);\n }\n }\n\n /**\n * Indicates end of an OSC command.\n * Whether the OSC got aborted or finished normally\n * is indicated by `success`.\n */\n public end(success: boolean, promiseResult: boolean = true): void | Promise {\n if (this._state === OscState.START) {\n return;\n }\n // do nothing if command was faulty\n if (this._state !== OscState.ABORT) {\n // if we are still in ID state and get an early end\n // means that the command has no payload thus we still have\n // to announce START and send END right after\n if (this._state === OscState.ID) {\n this._start();\n }\n\n if (!this._active.length) {\n this._handlerFb(this._id, 'END', success);\n } else {\n let handlerResult: boolean | Promise = false;\n let j = this._active.length - 1;\n let fallThrough = false;\n if (this._stack.paused) {\n j = this._stack.loopPosition - 1;\n handlerResult = promiseResult;\n fallThrough = this._stack.fallThrough;\n this._stack.paused = false;\n }\n if (!fallThrough && handlerResult === false) {\n for (; j >= 0; j--) {\n handlerResult = this._active[j].end(success);\n if (handlerResult === true) {\n break;\n } else if (handlerResult instanceof Promise) {\n this._stack.paused = true;\n this._stack.loopPosition = j;\n this._stack.fallThrough = false;\n return handlerResult;\n }\n }\n j--;\n }\n // cleanup left over handlers\n // we always have to call .end for proper cleanup,\n // here we use `success` to indicate whether a handler should execute\n for (; j >= 0; j--) {\n handlerResult = this._active[j].end(false);\n if (handlerResult instanceof Promise) {\n this._stack.paused = true;\n this._stack.loopPosition = j;\n this._stack.fallThrough = true;\n return handlerResult;\n }\n }\n }\n\n }\n this._active = EMPTY_HANDLERS;\n this._id = -1;\n this._state = OscState.START;\n }\n}\n\n/**\n * Convenient class to allow attaching string based handler functions\n * as OSC handlers.\n */\nexport class OscHandler implements IOscHandler {\n private _data = '';\n private _hitLimit: boolean = false;\n\n constructor(private _handler: (data: string) => boolean | Promise) { }\n\n public start(): void {\n this._data = '';\n this._hitLimit = false;\n }\n\n public put(data: Uint32Array, start: number, end: number): void {\n if (this._hitLimit) {\n return;\n }\n this._data += utf32ToString(data, start, end);\n if (this._data.length > PAYLOAD_LIMIT) {\n this._data = '';\n this._hitLimit = true;\n }\n }\n\n public end(success: boolean): boolean | Promise {\n let ret: boolean | Promise = false;\n if (this._hitLimit) {\n ret = false;\n } else if (success) {\n ret = this._handler(this._data);\n if (ret instanceof Promise) {\n // need to hold data until `ret` got resolved\n // dont care for errors, data will be freed anyway on next start\n return ret.then(res => {\n this._data = '';\n this._hitLimit = false;\n return res;\n });\n }\n }\n this._data = '';\n this._hitLimit = false;\n return ret;\n }\n}\n", "/**\n * Copyright (c) 2019 The xterm.js authors. All rights reserved.\n * @license MIT\n */\nimport { IParams, ParamsArray } from 'common/parser/Types';\n\n// max value supported for a single param/subparam (clamped to positive int32 range)\nconst MAX_VALUE = 0x7FFFFFFF;\n// max allowed subparams for a single sequence (hardcoded limitation)\nconst MAX_SUBPARAMS = 256;\n\n/**\n * Params storage class.\n * This type is used by the parser to accumulate sequence parameters and sub parameters\n * and transmit them to the input handler actions.\n *\n * NOTES:\n * - params object for action handlers is borrowed, use `.toArray` or `.clone` to get a copy\n * - never read beyond `params.length - 1` (likely to contain arbitrary data)\n * - `.getSubParams` returns a borrowed typed array, use `.getSubParamsAll` for cloned sub params\n * - hardcoded limitations:\n * - max. value for a single (sub) param is 2^31 - 1 (greater values are clamped to that)\n * - max. 256 sub params possible\n * - negative values are not allowed beside -1 (placeholder for default value)\n *\n * About ZDM (Zero Default Mode):\n * ZDM is not orchestrated by this class. If the parser is in ZDM,\n * it should add 0 for empty params, otherwise -1. This does not apply\n * to subparams, empty subparams should always be added with -1.\n */\nexport class Params implements IParams {\n // params store and length\n public params: Int32Array;\n public length: number;\n\n // sub params store and length\n protected _subParams: Int32Array;\n protected _subParamsLength: number;\n\n // sub params offsets from param: param idx --> [start, end] offset\n private _subParamsIdx: Uint16Array;\n private _rejectDigits: boolean;\n private _rejectSubDigits: boolean;\n private _digitIsSub: boolean;\n\n /**\n * Create a `Params` type from JS array representation.\n */\n public static fromArray(values: ParamsArray): Params {\n const params = new Params();\n if (!values.length) {\n return params;\n }\n // skip leading sub params\n for (let i = (Array.isArray(values[0])) ? 1 : 0; i < values.length; ++i) {\n const value = values[i];\n if (Array.isArray(value)) {\n for (let k = 0; k < value.length; ++k) {\n params.addSubParam(value[k]);\n }\n } else {\n params.addParam(value);\n }\n }\n return params;\n }\n\n /**\n * @param maxLength max length of storable parameters\n * @param maxSubParamsLength max length of storable sub parameters\n */\n constructor(public maxLength: number = 32, public maxSubParamsLength: number = 32) {\n if (maxSubParamsLength > MAX_SUBPARAMS) {\n throw new Error('maxSubParamsLength must not be greater than 256');\n }\n this.params = new Int32Array(maxLength);\n this.length = 0;\n this._subParams = new Int32Array(maxSubParamsLength);\n this._subParamsLength = 0;\n this._subParamsIdx = new Uint16Array(maxLength);\n this._rejectDigits = false;\n this._rejectSubDigits = false;\n this._digitIsSub = false;\n }\n\n /**\n * Clone object.\n */\n public clone(): Params {\n const newParams = new Params(this.maxLength, this.maxSubParamsLength);\n newParams.params.set(this.params);\n newParams.length = this.length;\n newParams._subParams.set(this._subParams);\n newParams._subParamsLength = this._subParamsLength;\n newParams._subParamsIdx.set(this._subParamsIdx);\n newParams._rejectDigits = this._rejectDigits;\n newParams._rejectSubDigits = this._rejectSubDigits;\n newParams._digitIsSub = this._digitIsSub;\n return newParams;\n }\n\n /**\n * Get a JS array representation of the current parameters and sub parameters.\n * The array is structured as follows:\n * sequence: \"1;2:3:4;5::6\"\n * array : [1, 2, [3, 4], 5, [-1, 6]]\n */\n public toArray(): ParamsArray {\n const res: ParamsArray = [];\n for (let i = 0; i < this.length; ++i) {\n res.push(this.params[i]);\n const start = this._subParamsIdx[i] >> 8;\n const end = this._subParamsIdx[i] & 0xFF;\n if (end - start > 0) {\n res.push(Array.prototype.slice.call(this._subParams, start, end));\n }\n }\n return res;\n }\n\n /**\n * Reset to initial empty state.\n */\n public reset(): void {\n this.length = 0;\n this._subParamsLength = 0;\n this._rejectDigits = false;\n this._rejectSubDigits = false;\n this._digitIsSub = false;\n }\n\n /**\n * Add a parameter value.\n * `Params` only stores up to `maxLength` parameters, any later\n * parameter will be ignored.\n * Note: VT devices only stored up to 16 values, xterm seems to\n * store up to 30.\n */\n public addParam(value: number): void {\n this._digitIsSub = false;\n if (this.length >= this.maxLength) {\n this._rejectDigits = true;\n return;\n }\n if (value < -1) {\n throw new Error('values lesser than -1 are not allowed');\n }\n this._subParamsIdx[this.length] = this._subParamsLength << 8 | this._subParamsLength;\n this.params[this.length++] = value > MAX_VALUE ? MAX_VALUE : value;\n }\n\n /**\n * Add a sub parameter value.\n * The sub parameter is automatically associated with the last parameter value.\n * Thus it is not possible to add a subparameter without any parameter added yet.\n * `Params` only stores up to `subParamsLength` sub parameters, any later\n * sub parameter will be ignored.\n */\n public addSubParam(value: number): void {\n this._digitIsSub = true;\n if (!this.length) {\n return;\n }\n if (this._rejectDigits || this._subParamsLength >= this.maxSubParamsLength) {\n this._rejectSubDigits = true;\n return;\n }\n if (value < -1) {\n throw new Error('values lesser than -1 are not allowed');\n }\n this._subParams[this._subParamsLength++] = value > MAX_VALUE ? MAX_VALUE : value;\n this._subParamsIdx[this.length - 1]++;\n }\n\n /**\n * Whether parameter at index `idx` has sub parameters.\n */\n public hasSubParams(idx: number): boolean {\n return ((this._subParamsIdx[idx] & 0xFF) - (this._subParamsIdx[idx] >> 8) > 0);\n }\n\n /**\n * Return sub parameters for parameter at index `idx`.\n * Note: The values are borrowed, thus you need to copy\n * the values if you need to hold them in nonlocal scope.\n */\n public getSubParams(idx: number): Int32Array | null {\n const start = this._subParamsIdx[idx] >> 8;\n const end = this._subParamsIdx[idx] & 0xFF;\n if (end - start > 0) {\n return this._subParams.subarray(start, end);\n }\n return null;\n }\n\n /**\n * Return all sub parameters as {idx: subparams} mapping.\n * Note: The values are not borrowed.\n */\n public getSubParamsAll(): {[idx: number]: Int32Array} {\n const result: {[idx: number]: Int32Array} = {};\n for (let i = 0; i < this.length; ++i) {\n const start = this._subParamsIdx[i] >> 8;\n const end = this._subParamsIdx[i] & 0xFF;\n if (end - start > 0) {\n result[i] = this._subParams.slice(start, end);\n }\n }\n return result;\n }\n\n /**\n * Add a single digit value to current parameter.\n * This is used by the parser to account digits on a char by char basis.\n */\n public addDigit(value: number): void {\n let length;\n if (this._rejectDigits\n || !(length = this._digitIsSub ? this._subParamsLength : this.length)\n || (this._digitIsSub && this._rejectSubDigits)\n ) {\n return;\n }\n\n const store = this._digitIsSub ? this._subParams : this.params;\n const cur = store[length - 1];\n store[length - 1] = ~cur ? Math.min(cur * 10 + value, MAX_VALUE) : value;\n }\n}\n", "/**\n * Copyright (c) 2019 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { ITerminalAddon, IDisposable, Terminal } from 'xterm';\n\nexport interface ILoadedAddon {\n instance: ITerminalAddon;\n dispose: () => void;\n isDisposed: boolean;\n}\n\nexport class AddonManager implements IDisposable {\n protected _addons: ILoadedAddon[] = [];\n\n constructor() {\n }\n\n public dispose(): void {\n for (let i = this._addons.length - 1; i >= 0; i--) {\n this._addons[i].instance.dispose();\n }\n }\n\n public loadAddon(terminal: Terminal, instance: ITerminalAddon): void {\n const loadedAddon: ILoadedAddon = {\n instance,\n dispose: instance.dispose,\n isDisposed: false\n };\n this._addons.push(loadedAddon);\n instance.dispose = () => this._wrappedAddonDispose(loadedAddon);\n instance.activate(terminal as any);\n }\n\n private _wrappedAddonDispose(loadedAddon: ILoadedAddon): void {\n if (loadedAddon.isDisposed) {\n // Do nothing if already disposed\n return;\n }\n let index = -1;\n for (let i = 0; i < this._addons.length; i++) {\n if (this._addons[i] === loadedAddon) {\n index = i;\n break;\n }\n }\n if (index === -1) {\n throw new Error('Could not dispose an addon that has not been loaded');\n }\n loadedAddon.isDisposed = true;\n loadedAddon.dispose.apply(loadedAddon.instance);\n this._addons.splice(index, 1);\n }\n}\n", "/**\n * Copyright (c) 2021 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IBuffer as IBufferApi, IBufferLine as IBufferLineApi, IBufferCell as IBufferCellApi } from 'xterm';\nimport { IBuffer } from 'common/buffer/Types';\nimport { BufferLineApiView } from 'common/public/BufferLineApiView';\nimport { CellData } from 'common/buffer/CellData';\n\nexport class BufferApiView implements IBufferApi {\n constructor(\n private _buffer: IBuffer,\n public readonly type: 'normal' | 'alternate'\n ) { }\n\n public init(buffer: IBuffer): BufferApiView {\n this._buffer = buffer;\n return this;\n }\n\n public get cursorY(): number { return this._buffer.y; }\n public get cursorX(): number { return this._buffer.x; }\n public get viewportY(): number { return this._buffer.ydisp; }\n public get baseY(): number { return this._buffer.ybase; }\n public get length(): number { return this._buffer.lines.length; }\n public getLine(y: number): IBufferLineApi | undefined {\n const line = this._buffer.lines.get(y);\n if (!line) {\n return undefined;\n }\n return new BufferLineApiView(line);\n }\n public getNullCell(): IBufferCellApi { return new CellData(); }\n}\n", "/**\n * Copyright (c) 2021 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { CellData } from 'common/buffer/CellData';\nimport { IBufferLine, ICellData } from 'common/Types';\nimport { IBufferCell as IBufferCellApi, IBufferLine as IBufferLineApi } from 'xterm';\n\nexport class BufferLineApiView implements IBufferLineApi {\n constructor(private _line: IBufferLine) { }\n\n public get isWrapped(): boolean { return this._line.isWrapped; }\n public get length(): number { return this._line.length; }\n public getCell(x: number, cell?: IBufferCellApi): IBufferCellApi | undefined {\n if (x < 0 || x >= this._line.length) {\n return undefined;\n }\n\n if (cell) {\n this._line.loadCell(x, cell as ICellData);\n return cell;\n }\n return this._line.loadCell(x, new CellData());\n }\n public translateToString(trimRight?: boolean, startColumn?: number, endColumn?: number): string {\n return this._line.translateToString(trimRight, startColumn, endColumn);\n }\n}\n", "/**\n * Copyright (c) 2021 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IBuffer as IBufferApi, IBufferNamespace as IBufferNamespaceApi } from 'xterm';\nimport { BufferApiView } from 'common/public/BufferApiView';\nimport { IEvent, EventEmitter } from 'common/EventEmitter';\nimport { ICoreTerminal } from 'common/Types';\n\nexport class BufferNamespaceApi implements IBufferNamespaceApi {\n private _normal: BufferApiView;\n private _alternate: BufferApiView;\n private _onBufferChange = new EventEmitter();\n public get onBufferChange(): IEvent { return this._onBufferChange.event; }\n\n constructor(private _core: ICoreTerminal) {\n this._normal = new BufferApiView(this._core.buffers.normal, 'normal');\n this._alternate = new BufferApiView(this._core.buffers.alt, 'alternate');\n this._core.buffers.onBufferActivate(() => this._onBufferChange.fire(this.active));\n }\n public get active(): IBufferApi {\n if (this._core.buffers.active === this._core.buffers.normal) { return this.normal; }\n if (this._core.buffers.active === this._core.buffers.alt) { return this.alternate; }\n throw new Error('Active buffer is neither normal nor alternate');\n }\n public get normal(): IBufferApi {\n return this._normal.init(this._core.buffers.normal);\n }\n public get alternate(): IBufferApi {\n return this._alternate.init(this._core.buffers.alt);\n }\n}\n", "/**\n * Copyright (c) 2021 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IParams } from 'common/parser/Types';\nimport { IDisposable, IFunctionIdentifier, IParser } from 'xterm';\nimport { ICoreTerminal } from 'common/Types';\n\nexport class ParserApi implements IParser {\n constructor(private _core: ICoreTerminal) { }\n\n public registerCsiHandler(id: IFunctionIdentifier, callback: (params: (number | number[])[]) => boolean | Promise): IDisposable {\n return this._core.registerCsiHandler(id, (params: IParams) => callback(params.toArray()));\n }\n public addCsiHandler(id: IFunctionIdentifier, callback: (params: (number | number[])[]) => boolean | Promise): IDisposable {\n return this.registerCsiHandler(id, callback);\n }\n public registerDcsHandler(id: IFunctionIdentifier, callback: (data: string, param: (number | number[])[]) => boolean | Promise): IDisposable {\n return this._core.registerDcsHandler(id, (data: string, params: IParams) => callback(data, params.toArray()));\n }\n public addDcsHandler(id: IFunctionIdentifier, callback: (data: string, param: (number | number[])[]) => boolean | Promise): IDisposable {\n return this.registerDcsHandler(id, callback);\n }\n public registerEscHandler(id: IFunctionIdentifier, handler: () => boolean | Promise): IDisposable {\n return this._core.registerEscHandler(id, handler);\n }\n public addEscHandler(id: IFunctionIdentifier, handler: () => boolean | Promise): IDisposable {\n return this.registerEscHandler(id, handler);\n }\n public registerOscHandler(ident: number, callback: (data: string) => boolean | Promise): IDisposable {\n return this._core.registerOscHandler(ident, callback);\n }\n public addOscHandler(ident: number, callback: (data: string) => boolean | Promise): IDisposable {\n return this.registerOscHandler(ident, callback);\n }\n}\n", "/**\n * Copyright (c) 2021 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { ICoreTerminal } from 'common/Types';\nimport { IUnicodeHandling, IUnicodeVersionProvider } from 'xterm';\n\nexport class UnicodeApi implements IUnicodeHandling {\n constructor(private _core: ICoreTerminal) { }\n\n public register(provider: IUnicodeVersionProvider): void {\n this._core.unicodeService.register(provider);\n }\n\n public get versions(): string[] {\n return this._core.unicodeService.versions;\n }\n\n public get activeVersion(): string {\n return this._core.unicodeService.activeVersion;\n }\n\n public set activeVersion(version: string) {\n this._core.unicodeService.activeVersion = version;\n }\n}\n", "/**\n * Copyright (c) 2019 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IBufferService, IOptionsService } from 'common/services/Services';\nimport { BufferSet } from 'common/buffer/BufferSet';\nimport { IBufferSet, IBuffer } from 'common/buffer/Types';\nimport { EventEmitter, IEvent } from 'common/EventEmitter';\nimport { Disposable } from 'common/Lifecycle';\nimport { IAttributeData, IBufferLine, ScrollSource } from 'common/Types';\n\nexport const MINIMUM_COLS = 2; // Less than 2 can mess with wide chars\nexport const MINIMUM_ROWS = 1;\n\nexport class BufferService extends Disposable implements IBufferService {\n public serviceBrand: any;\n\n public cols: number;\n public rows: number;\n public buffers: IBufferSet;\n /** Whether the user is scrolling (locks the scroll position) */\n public isUserScrolling: boolean = false;\n\n private _onResize = new EventEmitter<{ cols: number, rows: number }>();\n public get onResize(): IEvent<{ cols: number, rows: number }> { return this._onResize.event; }\n private _onScroll = new EventEmitter();\n public get onScroll(): IEvent { return this._onScroll.event; }\n\n public get buffer(): IBuffer { return this.buffers.active; }\n\n /** An IBufferline to clone/copy from for new blank lines */\n private _cachedBlankLine: IBufferLine | undefined;\n\n constructor(\n @IOptionsService private _optionsService: IOptionsService\n ) {\n super();\n this.cols = Math.max(_optionsService.rawOptions.cols || 0, MINIMUM_COLS);\n this.rows = Math.max(_optionsService.rawOptions.rows || 0, MINIMUM_ROWS);\n this.buffers = new BufferSet(_optionsService, this);\n }\n\n public dispose(): void {\n super.dispose();\n this.buffers.dispose();\n }\n\n public resize(cols: number, rows: number): void {\n this.cols = cols;\n this.rows = rows;\n this.buffers.resize(cols, rows);\n this.buffers.setupTabStops(this.cols);\n this._onResize.fire({ cols, rows });\n }\n\n public reset(): void {\n this.buffers.reset();\n this.isUserScrolling = false;\n }\n\n /**\n * Scroll the terminal down 1 row, creating a blank line.\n * @param isWrapped Whether the new line is wrapped from the previous line.\n */\n public scroll(eraseAttr: IAttributeData, isWrapped: boolean = false): void {\n const buffer = this.buffer;\n\n let newLine: IBufferLine | undefined;\n newLine = this._cachedBlankLine;\n if (!newLine || newLine.length !== this.cols || newLine.getFg(0) !== eraseAttr.fg || newLine.getBg(0) !== eraseAttr.bg) {\n newLine = buffer.getBlankLine(eraseAttr, isWrapped);\n this._cachedBlankLine = newLine;\n }\n newLine.isWrapped = isWrapped;\n\n const topRow = buffer.ybase + buffer.scrollTop;\n const bottomRow = buffer.ybase + buffer.scrollBottom;\n\n if (buffer.scrollTop === 0) {\n // Determine whether the buffer is going to be trimmed after insertion.\n const willBufferBeTrimmed = buffer.lines.isFull;\n\n // Insert the line using the fastest method\n if (bottomRow === buffer.lines.length - 1) {\n if (willBufferBeTrimmed) {\n buffer.lines.recycle().copyFrom(newLine);\n } else {\n buffer.lines.push(newLine.clone());\n }\n } else {\n buffer.lines.splice(bottomRow + 1, 0, newLine.clone());\n }\n\n // Only adjust ybase and ydisp when the buffer is not trimmed\n if (!willBufferBeTrimmed) {\n buffer.ybase++;\n // Only scroll the ydisp with ybase if the user has not scrolled up\n if (!this.isUserScrolling) {\n buffer.ydisp++;\n }\n } else {\n // When the buffer is full and the user has scrolled up, keep the text\n // stable unless ydisp is right at the top\n if (this.isUserScrolling) {\n buffer.ydisp = Math.max(buffer.ydisp - 1, 0);\n }\n }\n } else {\n // scrollTop is non-zero which means no line will be going to the\n // scrollback, instead we can just shift them in-place.\n const scrollRegionHeight = bottomRow - topRow + 1 /* as it's zero-based */;\n buffer.lines.shiftElements(topRow + 1, scrollRegionHeight - 1, -1);\n buffer.lines.set(bottomRow, newLine.clone());\n }\n\n // Move the viewport to the bottom of the buffer unless the user is\n // scrolling.\n if (!this.isUserScrolling) {\n buffer.ydisp = buffer.ybase;\n }\n\n this._onScroll.fire(buffer.ydisp);\n }\n\n /**\n * Scroll the display of the terminal\n * @param disp The number of lines to scroll down (negative scroll up).\n * @param suppressScrollEvent Don't emit the scroll event as scrollLines. This is used\n * to avoid unwanted events being handled by the viewport when the event was triggered from the\n * viewport originally.\n */\n public scrollLines(disp: number, suppressScrollEvent?: boolean, source?: ScrollSource): void {\n const buffer = this.buffer;\n if (disp < 0) {\n if (buffer.ydisp === 0) {\n return;\n }\n this.isUserScrolling = true;\n } else if (disp + buffer.ydisp >= buffer.ybase) {\n this.isUserScrolling = false;\n }\n\n const oldYdisp = buffer.ydisp;\n buffer.ydisp = Math.max(Math.min(buffer.ydisp + disp, buffer.ybase), 0);\n\n // No change occurred, don't trigger scroll/refresh\n if (oldYdisp === buffer.ydisp) {\n return;\n }\n\n if (!suppressScrollEvent) {\n this._onScroll.fire(buffer.ydisp);\n }\n }\n\n /**\n * Scroll the display of the terminal by a number of pages.\n * @param pageCount The number of pages to scroll (negative scrolls up).\n */\n public scrollPages(pageCount: number): void {\n this.scrollLines(pageCount * (this.rows - 1));\n }\n\n /**\n * Scrolls the display of the terminal to the top.\n */\n public scrollToTop(): void {\n this.scrollLines(-this.buffer.ydisp);\n }\n\n /**\n * Scrolls the display of the terminal to the bottom.\n */\n public scrollToBottom(): void {\n this.scrollLines(this.buffer.ybase - this.buffer.ydisp);\n }\n\n public scrollToLine(line: number): void {\n const scrollAmount = line - this.buffer.ydisp;\n if (scrollAmount !== 0) {\n this.scrollLines(scrollAmount);\n }\n }\n}\n", "/**\n * Copyright (c) 2019 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { ICharsetService } from 'common/services/Services';\nimport { ICharset } from 'common/Types';\n\nexport class CharsetService implements ICharsetService {\n public serviceBrand: any;\n\n public charset: ICharset | undefined;\n public glevel: number = 0;\n\n private _charsets: (ICharset | undefined)[] = [];\n\n public reset(): void {\n this.charset = undefined;\n this._charsets = [];\n this.glevel = 0;\n }\n\n public setgLevel(g: number): void {\n this.glevel = g;\n this.charset = this._charsets[g];\n }\n\n public setgCharset(g: number, charset: ICharset | undefined): void {\n this._charsets[g] = charset;\n if (this.glevel === g) {\n this.charset = charset;\n }\n }\n}\n", "/**\n * Copyright (c) 2019 The xterm.js authors. All rights reserved.\n * @license MIT\n */\nimport { IBufferService, ICoreService, ICoreMouseService } from 'common/services/Services';\nimport { EventEmitter, IEvent } from 'common/EventEmitter';\nimport { ICoreMouseProtocol, ICoreMouseEvent, CoreMouseEncoding, CoreMouseEventType, CoreMouseButton, CoreMouseAction } from 'common/Types';\n\n/**\n * Supported default protocols.\n */\nconst DEFAULT_PROTOCOLS: {[key: string]: ICoreMouseProtocol} = {\n /**\n * NONE\n * Events: none\n * Modifiers: none\n */\n NONE: {\n events: CoreMouseEventType.NONE,\n restrict: () => false\n },\n /**\n * X10\n * Events: mousedown\n * Modifiers: none\n */\n X10: {\n events: CoreMouseEventType.DOWN,\n restrict: (e: ICoreMouseEvent) => {\n // no wheel, no move, no up\n if (e.button === CoreMouseButton.WHEEL || e.action !== CoreMouseAction.DOWN) {\n return false;\n }\n // no modifiers\n e.ctrl = false;\n e.alt = false;\n e.shift = false;\n return true;\n }\n },\n /**\n * VT200\n * Events: mousedown / mouseup / wheel\n * Modifiers: all\n */\n VT200: {\n events: CoreMouseEventType.DOWN | CoreMouseEventType.UP | CoreMouseEventType.WHEEL,\n restrict: (e: ICoreMouseEvent) => {\n // no move\n if (e.action === CoreMouseAction.MOVE) {\n return false;\n }\n return true;\n }\n },\n /**\n * DRAG\n * Events: mousedown / mouseup / wheel / mousedrag\n * Modifiers: all\n */\n DRAG: {\n events: CoreMouseEventType.DOWN | CoreMouseEventType.UP | CoreMouseEventType.WHEEL | CoreMouseEventType.DRAG,\n restrict: (e: ICoreMouseEvent) => {\n // no move without button\n if (e.action === CoreMouseAction.MOVE && e.button === CoreMouseButton.NONE) {\n return false;\n }\n return true;\n }\n },\n /**\n * ANY\n * Events: all mouse related events\n * Modifiers: all\n */\n ANY: {\n events:\n CoreMouseEventType.DOWN | CoreMouseEventType.UP | CoreMouseEventType.WHEEL\n | CoreMouseEventType.DRAG | CoreMouseEventType.MOVE,\n restrict: (e: ICoreMouseEvent) => true\n }\n};\n\nconst enum Modifiers {\n SHIFT = 4,\n ALT = 8,\n CTRL = 16\n}\n\n// helper for default encoders to generate the event code.\nfunction eventCode(e: ICoreMouseEvent, isSGR: boolean): number {\n let code = (e.ctrl ? Modifiers.CTRL : 0) | (e.shift ? Modifiers.SHIFT : 0) | (e.alt ? Modifiers.ALT : 0);\n if (e.button === CoreMouseButton.WHEEL) {\n code |= 64;\n code |= e.action;\n } else {\n code |= e.button & 3;\n if (e.button & 4) {\n code |= 64;\n }\n if (e.button & 8) {\n code |= 128;\n }\n if (e.action === CoreMouseAction.MOVE) {\n code |= CoreMouseAction.MOVE;\n } else if (e.action === CoreMouseAction.UP && !isSGR) {\n // special case - only SGR can report button on release\n // all others have to go with NONE\n code |= CoreMouseButton.NONE;\n }\n }\n return code;\n}\n\nconst S = String.fromCharCode;\n\n/**\n * Supported default encodings.\n */\nconst DEFAULT_ENCODINGS: {[key: string]: CoreMouseEncoding} = {\n /**\n * DEFAULT - CSI M Pb Px Py\n * Single byte encoding for coords and event code.\n * Can encode values up to 223 (1-based).\n */\n DEFAULT: (e: ICoreMouseEvent) => {\n const params = [eventCode(e, false) + 32, e.col + 32, e.row + 32];\n // supress mouse report if we exceed addressible range\n // Note this is handled differently by emulators\n // - xterm: sends 0;0 coords instead\n // - vte, konsole: no report\n if (params[0] > 255 || params[1] > 255 || params[2] > 255) {\n return '';\n }\n return `\\x1b[M${S(params[0])}${S(params[1])}${S(params[2])}`;\n },\n /**\n * SGR - CSI < Pb ; Px ; Py M|m\n * No encoding limitation.\n * Can report button on release and works with a well formed sequence.\n */\n SGR: (e: ICoreMouseEvent) => {\n const final = (e.action === CoreMouseAction.UP && e.button !== CoreMouseButton.WHEEL) ? 'm' : 'M';\n return `\\x1b[<${eventCode(e, true)};${e.col};${e.row}${final}`;\n }\n};\n\n/**\n * CoreMouseService\n *\n * Provides mouse tracking reports with different protocols and encodings.\n * - protocols: NONE (default), X10, VT200, DRAG, ANY\n * - encodings: DEFAULT, SGR (UTF8, URXVT removed in #2507)\n *\n * Custom protocols/encodings can be added by `addProtocol` / `addEncoding`.\n * To activate a protocol/encoding, set `activeProtocol` / `activeEncoding`.\n * Switching a protocol will send a notification event `onProtocolChange`\n * with a list of needed events to track.\n *\n * The service handles the mouse tracking state and decides whether to send\n * a tracking report to the backend based on protocol and encoding limitations.\n * To send a mouse event call `triggerMouseEvent`.\n */\nexport class CoreMouseService implements ICoreMouseService {\n private _protocols: {[name: string]: ICoreMouseProtocol} = {};\n private _encodings: {[name: string]: CoreMouseEncoding} = {};\n private _activeProtocol: string = '';\n private _activeEncoding: string = '';\n private _onProtocolChange = new EventEmitter();\n private _lastEvent: ICoreMouseEvent | null = null;\n\n constructor(\n @IBufferService private readonly _bufferService: IBufferService,\n @ICoreService private readonly _coreService: ICoreService\n ) {\n // register default protocols and encodings\n for (const name of Object.keys(DEFAULT_PROTOCOLS)) this.addProtocol(name, DEFAULT_PROTOCOLS[name]);\n for (const name of Object.keys(DEFAULT_ENCODINGS)) this.addEncoding(name, DEFAULT_ENCODINGS[name]);\n // call reset to set defaults\n this.reset();\n }\n\n public addProtocol(name: string, protocol: ICoreMouseProtocol): void {\n this._protocols[name] = protocol;\n }\n\n public addEncoding(name: string, encoding: CoreMouseEncoding): void {\n this._encodings[name] = encoding;\n }\n\n public get activeProtocol(): string {\n return this._activeProtocol;\n }\n\n public get areMouseEventsActive(): boolean {\n return this._protocols[this._activeProtocol].events !== 0;\n }\n\n public set activeProtocol(name: string) {\n if (!this._protocols[name]) {\n throw new Error(`unknown protocol \"${name}\"`);\n }\n this._activeProtocol = name;\n this._onProtocolChange.fire(this._protocols[name].events);\n }\n\n public get activeEncoding(): string {\n return this._activeEncoding;\n }\n\n public set activeEncoding(name: string) {\n if (!this._encodings[name]) {\n throw new Error(`unknown encoding \"${name}\"`);\n }\n this._activeEncoding = name;\n }\n\n public reset(): void {\n this.activeProtocol = 'NONE';\n this.activeEncoding = 'DEFAULT';\n this._lastEvent = null;\n }\n\n /**\n * Event to announce changes in mouse tracking.\n */\n public get onProtocolChange(): IEvent {\n return this._onProtocolChange.event;\n }\n\n /**\n * Triggers a mouse event to be sent.\n *\n * Returns true if the event passed all protocol restrictions and a report\n * was sent, otherwise false. The return value may be used to decide whether\n * the default event action in the bowser component should be omitted.\n *\n * Note: The method will change values of the given event object\n * to fullfill protocol and encoding restrictions.\n */\n public triggerMouseEvent(e: ICoreMouseEvent): boolean {\n // range check for col/row\n if (e.col < 0 || e.col >= this._bufferService.cols\n || e.row < 0 || e.row >= this._bufferService.rows) {\n return false;\n }\n\n // filter nonsense combinations of button + action\n if (e.button === CoreMouseButton.WHEEL && e.action === CoreMouseAction.MOVE) {\n return false;\n }\n if (e.button === CoreMouseButton.NONE && e.action !== CoreMouseAction.MOVE) {\n return false;\n }\n if (e.button !== CoreMouseButton.WHEEL && (e.action === CoreMouseAction.LEFT || e.action === CoreMouseAction.RIGHT)) {\n return false;\n }\n\n // report 1-based coords\n e.col++;\n e.row++;\n\n // debounce move at grid level\n if (e.action === CoreMouseAction.MOVE && this._lastEvent && this._compareEvents(this._lastEvent, e)) {\n return false;\n }\n\n // apply protocol restrictions\n if (!this._protocols[this._activeProtocol].restrict(e)) {\n return false;\n }\n\n // encode report and send\n const report = this._encodings[this._activeEncoding](e);\n if (report) {\n // always send DEFAULT as binary data\n if (this._activeEncoding === 'DEFAULT') {\n this._coreService.triggerBinaryEvent(report);\n } else {\n this._coreService.triggerDataEvent(report, true);\n }\n }\n\n this._lastEvent = e;\n\n return true;\n }\n\n public explainEvents(events: CoreMouseEventType): {[event: string]: boolean} {\n return {\n down: !!(events & CoreMouseEventType.DOWN),\n up: !!(events & CoreMouseEventType.UP),\n drag: !!(events & CoreMouseEventType.DRAG),\n move: !!(events & CoreMouseEventType.MOVE),\n wheel: !!(events & CoreMouseEventType.WHEEL)\n };\n }\n\n private _compareEvents(e1: ICoreMouseEvent, e2: ICoreMouseEvent): boolean {\n if (e1.col !== e2.col) return false;\n if (e1.row !== e2.row) return false;\n if (e1.button !== e2.button) return false;\n if (e1.action !== e2.action) return false;\n if (e1.ctrl !== e2.ctrl) return false;\n if (e1.alt !== e2.alt) return false;\n if (e1.shift !== e2.shift) return false;\n return true;\n }\n}\n", "/**\n * Copyright (c) 2019 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { ICoreService, ILogService, IOptionsService, IBufferService } from 'common/services/Services';\nimport { EventEmitter, IEvent } from 'common/EventEmitter';\nimport { IDecPrivateModes, IModes } from 'common/Types';\nimport { clone } from 'common/Clone';\nimport { Disposable } from 'common/Lifecycle';\n\nconst DEFAULT_MODES: IModes = Object.freeze({\n insertMode: false\n});\n\nconst DEFAULT_DEC_PRIVATE_MODES: IDecPrivateModes = Object.freeze({\n applicationCursorKeys: false,\n applicationKeypad: false,\n bracketedPasteMode: false,\n origin: false,\n reverseWraparound: false,\n sendFocus: false,\n wraparound: true // defaults: xterm - true, vt100 - false\n});\n\nexport class CoreService extends Disposable implements ICoreService {\n public serviceBrand: any;\n\n public isCursorInitialized: boolean = false;\n public isCursorHidden: boolean = false;\n public modes: IModes;\n public decPrivateModes: IDecPrivateModes;\n\n // Circular dependency, this must be unset or memory will leak after Terminal.dispose\n private _scrollToBottom: (() => void) | undefined;\n\n private _onData = this.register(new EventEmitter());\n public get onData(): IEvent { return this._onData.event; }\n private _onUserInput = this.register(new EventEmitter());\n public get onUserInput(): IEvent { return this._onUserInput.event; }\n private _onBinary = this.register(new EventEmitter());\n public get onBinary(): IEvent { return this._onBinary.event; }\n\n constructor(\n // TODO: Move this into a service\n scrollToBottom: () => void,\n @IBufferService private readonly _bufferService: IBufferService,\n @ILogService private readonly _logService: ILogService,\n @IOptionsService private readonly _optionsService: IOptionsService\n ) {\n super();\n this._scrollToBottom = scrollToBottom;\n this.register({ dispose: () => this._scrollToBottom = undefined });\n this.modes = clone(DEFAULT_MODES);\n this.decPrivateModes = clone(DEFAULT_DEC_PRIVATE_MODES);\n }\n\n public reset(): void {\n this.modes = clone(DEFAULT_MODES);\n this.decPrivateModes = clone(DEFAULT_DEC_PRIVATE_MODES);\n }\n\n public triggerDataEvent(data: string, wasUserInput: boolean = false): void {\n // Prevents all events to pty process if stdin is disabled\n if (this._optionsService.rawOptions.disableStdin) {\n return;\n }\n\n // Input is being sent to the terminal, the terminal should focus the prompt.\n const buffer = this._bufferService.buffer;\n if (buffer.ybase !== buffer.ydisp) {\n this._scrollToBottom!();\n }\n\n // Fire onUserInput so listeners can react as well (eg. clear selection)\n if (wasUserInput) {\n this._onUserInput.fire();\n }\n\n // Fire onData API\n this._logService.debug(`sending data \"${data}\"`, () => data.split('').map(e => e.charCodeAt(0)));\n this._onData.fire(data);\n }\n\n public triggerBinaryEvent(data: string): void {\n if (this._optionsService.rawOptions.disableStdin) {\n return;\n }\n this._logService.debug(`sending binary \"${data}\"`, () => data.split('').map(e => e.charCodeAt(0)));\n this._onBinary.fire(data);\n }\n}\n", "/**\n * Copyright (c) 2022 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { css } from 'common/Color';\nimport { EventEmitter } from 'common/EventEmitter';\nimport { Disposable } from 'common/Lifecycle';\nimport { IDecorationService, IInternalDecoration } from 'common/services/Services';\nimport { SortedList } from 'common/SortedList';\nimport { IColor } from 'common/Types';\nimport { IDecorationOptions, IDecoration, IMarker, IEvent } from 'xterm';\n\nexport class DecorationService extends Disposable implements IDecorationService {\n public serviceBrand: any;\n\n /**\n * A list of all decorations, sorted by the marker's line value. This relies on the fact that\n * while marker line values do change, they should all change by the same amount so this should\n * never become out of order.\n */\n private readonly _decorations: SortedList = new SortedList(e => e.marker.line);\n\n private _onDecorationRegistered = this.register(new EventEmitter());\n public get onDecorationRegistered(): IEvent { return this._onDecorationRegistered.event; }\n private _onDecorationRemoved = this.register(new EventEmitter());\n public get onDecorationRemoved(): IEvent { return this._onDecorationRemoved.event; }\n\n public get decorations(): IterableIterator { return this._decorations.values(); }\n\n constructor() {\n super();\n }\n\n public registerDecoration(options: IDecorationOptions): IDecoration | undefined {\n if (options.marker.isDisposed) {\n return undefined;\n }\n const decoration = new Decoration(options);\n if (decoration) {\n const markerDispose = decoration.marker.onDispose(() => decoration.dispose());\n decoration.onDispose(() => {\n if (decoration) {\n if (this._decorations.delete(decoration)) {\n this._onDecorationRemoved.fire(decoration);\n }\n markerDispose.dispose();\n }\n });\n this._decorations.insert(decoration);\n this._onDecorationRegistered.fire(decoration);\n }\n return decoration;\n }\n\n public reset(): void {\n for (const d of this._decorations.values()) {\n d.dispose();\n }\n this._decorations.clear();\n }\n\n public *getDecorationsAtLine(line: number): IterableIterator {\n return this._decorations.getKeyIterator(line);\n }\n\n public *getDecorationsAtCell(x: number, line: number, layer?: 'bottom' | 'top'): IterableIterator {\n let xmin = 0;\n let xmax = 0;\n for (const d of this._decorations.getKeyIterator(line)) {\n xmin = d.options.x ?? 0;\n xmax = xmin + (d.options.width ?? 1);\n if (x >= xmin && x < xmax && (!layer || (d.options.layer ?? 'bottom') === layer)) {\n yield d;\n }\n }\n }\n\n public dispose(): void {\n for (const d of this._decorations.values()) {\n this._onDecorationRemoved.fire(d);\n }\n this.reset();\n }\n}\n\nclass Decoration extends Disposable implements IInternalDecoration {\n public readonly marker: IMarker;\n public element: HTMLElement | undefined;\n public isDisposed: boolean = false;\n\n public readonly onRenderEmitter = this.register(new EventEmitter());\n public readonly onRender = this.onRenderEmitter.event;\n private _onDispose = this.register(new EventEmitter());\n public readonly onDispose = this._onDispose.event;\n\n private _cachedBg: IColor | undefined | null = null;\n public get backgroundColorRGB(): IColor | undefined {\n if (this._cachedBg === null) {\n if (this.options.backgroundColor) {\n this._cachedBg = css.toColor(this.options.backgroundColor);\n } else {\n this._cachedBg = undefined;\n }\n }\n return this._cachedBg;\n }\n\n private _cachedFg: IColor | undefined | null = null;\n public get foregroundColorRGB(): IColor | undefined {\n if (this._cachedFg === null) {\n if (this.options.foregroundColor) {\n this._cachedFg = css.toColor(this.options.foregroundColor);\n } else {\n this._cachedFg = undefined;\n }\n }\n return this._cachedFg;\n }\n\n constructor(\n public readonly options: IDecorationOptions\n ) {\n super();\n this.marker = options.marker;\n if (this.options.overviewRulerOptions && !this.options.overviewRulerOptions.position) {\n this.options.overviewRulerOptions.position = 'full';\n }\n }\n\n public override dispose(): void {\n if (this._isDisposed) {\n return;\n }\n this._isDisposed = true;\n this._onDispose.fire();\n super.dispose();\n }\n}\n", "/**\n * Copyright (c) 2019 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IBufferService, IDirtyRowService } from 'common/services/Services';\n\nexport class DirtyRowService implements IDirtyRowService {\n public serviceBrand: any;\n\n private _start!: number;\n private _end!: number;\n\n public get start(): number { return this._start; }\n public get end(): number { return this._end; }\n\n constructor(\n @IBufferService private readonly _bufferService: IBufferService\n ) {\n this.clearRange();\n }\n\n public clearRange(): void {\n this._start = this._bufferService.buffer.y;\n this._end = this._bufferService.buffer.y;\n }\n\n public markDirty(y: number): void {\n if (y < this._start) {\n this._start = y;\n } else if (y > this._end) {\n this._end = y;\n }\n }\n\n public markRangeDirty(y1: number, y2: number): void {\n if (y1 > y2) {\n const temp = y1;\n y1 = y2;\n y2 = temp;\n }\n if (y1 < this._start) {\n this._start = y1;\n }\n if (y2 > this._end) {\n this._end = y2;\n }\n }\n\n public markAllDirty(): void {\n this.markRangeDirty(0, this._bufferService.rows - 1);\n }\n}\n", "/**\n * Copyright (c) 2019 The xterm.js authors. All rights reserved.\n * @license MIT\n *\n * This was heavily inspired from microsoft/vscode's dependency injection system (MIT).\n */\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { IInstantiationService, IServiceIdentifier } from 'common/services/Services';\nimport { getServiceDependencies } from 'common/services/ServiceRegistry';\n\nexport class ServiceCollection {\n\n private _entries = new Map, any>();\n\n constructor(...entries: [IServiceIdentifier, any][]) {\n for (const [id, service] of entries) {\n this.set(id, service);\n }\n }\n\n public set(id: IServiceIdentifier, instance: T): T {\n const result = this._entries.get(id);\n this._entries.set(id, instance);\n return result;\n }\n\n public forEach(callback: (id: IServiceIdentifier, instance: any) => any): void {\n this._entries.forEach((value, key) => callback(key, value));\n }\n\n public has(id: IServiceIdentifier): boolean {\n return this._entries.has(id);\n }\n\n public get(id: IServiceIdentifier): T | undefined {\n return this._entries.get(id);\n }\n}\n\nexport class InstantiationService implements IInstantiationService {\n public serviceBrand: undefined;\n\n private readonly _services: ServiceCollection = new ServiceCollection();\n\n constructor() {\n this._services.set(IInstantiationService, this);\n }\n\n public setService(id: IServiceIdentifier, instance: T): void {\n this._services.set(id, instance);\n }\n\n public getService(id: IServiceIdentifier): T | undefined {\n return this._services.get(id);\n }\n\n public createInstance(ctor: any, ...args: any[]): T {\n const serviceDependencies = getServiceDependencies(ctor).sort((a, b) => a.index - b.index);\n\n const serviceArgs: any[] = [];\n for (const dependency of serviceDependencies) {\n const service = this._services.get(dependency.id);\n if (!service) {\n throw new Error(`[createInstance] ${ctor.name} depends on UNKNOWN service ${dependency.id}.`);\n }\n serviceArgs.push(service);\n }\n\n const firstServiceArgPos = serviceDependencies.length > 0 ? serviceDependencies[0].index : args.length;\n\n // check for argument mismatches, adjust static args if needed\n if (args.length !== firstServiceArgPos) {\n throw new Error(`[createInstance] First service dependency of ${ctor.name} at position ${firstServiceArgPos + 1} conflicts with ${args.length} static arguments`);\n }\n\n // now create the instance\n return new ctor(...[...args, ...serviceArgs]);\n }\n}\n", "/**\n * Copyright (c) 2019 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { ILogService, IOptionsService, LogLevelEnum } from 'common/services/Services';\n\ntype LogType = (message?: any, ...optionalParams: any[]) => void;\n\ninterface IConsole {\n log: LogType;\n error: LogType;\n info: LogType;\n trace: LogType;\n warn: LogType;\n}\n\n// console is available on both node.js and browser contexts but the common\n// module doesn't depend on them so we need to explicitly declare it.\ndeclare const console: IConsole;\n\nconst optionsKeyToLogLevel: { [key: string]: LogLevelEnum } = {\n debug: LogLevelEnum.DEBUG,\n info: LogLevelEnum.INFO,\n warn: LogLevelEnum.WARN,\n error: LogLevelEnum.ERROR,\n off: LogLevelEnum.OFF\n};\n\nconst LOG_PREFIX = 'xterm.js: ';\n\nexport class LogService implements ILogService {\n public serviceBrand: any;\n\n public logLevel: LogLevelEnum = LogLevelEnum.OFF;\n\n constructor(\n @IOptionsService private readonly _optionsService: IOptionsService\n ) {\n this._updateLogLevel();\n this._optionsService.onOptionChange(key => {\n if (key === 'logLevel') {\n this._updateLogLevel();\n }\n });\n }\n\n private _updateLogLevel(): void {\n this.logLevel = optionsKeyToLogLevel[this._optionsService.rawOptions.logLevel];\n }\n\n private _evalLazyOptionalParams(optionalParams: any[]): void {\n for (let i = 0; i < optionalParams.length; i++) {\n if (typeof optionalParams[i] === 'function') {\n optionalParams[i] = optionalParams[i]();\n }\n }\n }\n\n private _log(type: LogType, message: string, optionalParams: any[]): void {\n this._evalLazyOptionalParams(optionalParams);\n type.call(console, LOG_PREFIX + message, ...optionalParams);\n }\n\n public debug(message: string, ...optionalParams: any[]): void {\n if (this.logLevel <= LogLevelEnum.DEBUG) {\n this._log(console.log, message, optionalParams);\n }\n }\n\n public info(message: string, ...optionalParams: any[]): void {\n if (this.logLevel <= LogLevelEnum.INFO) {\n this._log(console.info, message, optionalParams);\n }\n }\n\n public warn(message: string, ...optionalParams: any[]): void {\n if (this.logLevel <= LogLevelEnum.WARN) {\n this._log(console.warn, message, optionalParams);\n }\n }\n\n public error(message: string, ...optionalParams: any[]): void {\n if (this.logLevel <= LogLevelEnum.ERROR) {\n this._log(console.error, message, optionalParams);\n }\n }\n}\n", "/**\n * Copyright (c) 2019 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IOptionsService, ITerminalOptions, FontWeight } from 'common/services/Services';\nimport { EventEmitter, IEvent } from 'common/EventEmitter';\nimport { isMac } from 'common/Platform';\n\n// Source: https://freesound.org/people/altemark/sounds/45759/\n// This sound is released under the Creative Commons Attribution 3.0 Unported\n// (CC BY 3.0) license. It was created by 'altemark'. No modifications have been\n// made, apart from the conversion to base64.\nexport const DEFAULT_BELL_SOUND = 'data:audio/mp3;base64,SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU4LjMyLjEwNAAAAAAAAAAAAAAA//tQxAADB8AhSmxhIIEVCSiJrDCQBTcu3UrAIwUdkRgQbFAZC1CQEwTJ9mjRvBA4UOLD8nKVOWfh+UlK3z/177OXrfOdKl7pyn3Xf//WreyTRUoAWgBgkOAGbZHBgG1OF6zM82DWbZaUmMBptgQhGjsyYqc9ae9XFz280948NMBWInljyzsNRFLPWdnZGWrddDsjK1unuSrVN9jJsK8KuQtQCtMBjCEtImISdNKJOopIpBFpNSMbIHCSRpRR5iakjTiyzLhchUUBwCgyKiweBv/7UsQbg8isVNoMPMjAAAA0gAAABEVFGmgqK////9bP/6XCykxBTUUzLjEwMKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq';\n\nexport const DEFAULT_OPTIONS: Readonly = {\n cols: 80,\n rows: 24,\n cursorBlink: false,\n cursorStyle: 'block',\n cursorWidth: 1,\n customGlyphs: true,\n bellSound: DEFAULT_BELL_SOUND,\n bellStyle: 'none',\n drawBoldTextInBrightColors: true,\n fastScrollModifier: 'alt',\n fastScrollSensitivity: 5,\n fontFamily: 'courier-new, courier, monospace',\n fontSize: 15,\n fontWeight: 'normal',\n fontWeightBold: 'bold',\n lineHeight: 1.0,\n linkTooltipHoverDuration: 500,\n letterSpacing: 0,\n logLevel: 'info',\n scrollback: 1000,\n scrollSensitivity: 1,\n screenReaderMode: false,\n macOptionIsMeta: false,\n macOptionClickForcesSelection: false,\n minimumContrastRatio: 1,\n disableStdin: false,\n allowProposedApi: true,\n allowTransparency: false,\n tabStopWidth: 8,\n theme: {},\n rightClickSelectsWord: isMac,\n rendererType: 'canvas',\n windowOptions: {},\n windowsMode: false,\n wordSeparator: ' ()[]{}\\',\"`',\n altClickMovesCursor: true,\n convertEol: false,\n termName: 'xterm',\n cancelEvents: false,\n overviewRulerWidth: undefined\n};\n\nconst FONT_WEIGHT_OPTIONS: Extract[] = ['normal', 'bold', '100', '200', '300', '400', '500', '600', '700', '800', '900'];\n\nexport class OptionsService implements IOptionsService {\n public serviceBrand: any;\n\n public readonly rawOptions: ITerminalOptions;\n public options: ITerminalOptions;\n\n private _onOptionChange = new EventEmitter();\n public get onOptionChange(): IEvent { return this._onOptionChange.event; }\n\n constructor(options: Partial) {\n // set the default value of each option\n const defaultOptions = { ...DEFAULT_OPTIONS };\n for (const key in options) {\n if (key in defaultOptions) {\n try {\n const newValue = options[key];\n defaultOptions[key] = this._sanitizeAndValidateOption(key, newValue);\n } catch (e) {\n console.error(e);\n }\n }\n }\n\n // set up getters and setters for each option\n this.rawOptions = defaultOptions;\n this.options = { ... defaultOptions };\n this._setupOptions();\n }\n\n private _setupOptions(): void {\n const getter = (propName: string): any => {\n if (!(propName in DEFAULT_OPTIONS)) {\n throw new Error(`No option with key \"${propName}\"`);\n }\n return this.rawOptions[propName];\n };\n\n const setter = (propName: string, value: any): void => {\n if (!(propName in DEFAULT_OPTIONS)) {\n throw new Error(`No option with key \"${propName}\"`);\n }\n\n value = this._sanitizeAndValidateOption(propName, value);\n // Don't fire an option change event if they didn't change\n if (this.rawOptions[propName] !== value) {\n this.rawOptions[propName] = value;\n this._onOptionChange.fire(propName);\n }\n };\n\n for (const propName in this.rawOptions) {\n const desc = {\n get: getter.bind(this, propName),\n set: setter.bind(this, propName)\n };\n Object.defineProperty(this.options, propName, desc);\n }\n }\n\n public setOption(key: string, value: any): void {\n this.options[key] = value;\n }\n\n private _sanitizeAndValidateOption(key: string, value: any): any {\n switch (key) {\n case 'bellStyle':\n case 'cursorStyle':\n case 'rendererType':\n case 'wordSeparator':\n if (!value) {\n value = DEFAULT_OPTIONS[key];\n }\n break;\n case 'fontWeight':\n case 'fontWeightBold':\n if (typeof value === 'number' && 1 <= value && value <= 1000) {\n // already valid numeric value\n break;\n }\n value = FONT_WEIGHT_OPTIONS.includes(value) ? value : DEFAULT_OPTIONS[key];\n break;\n case 'cursorWidth':\n value = Math.floor(value);\n // Fall through for bounds check\n case 'lineHeight':\n case 'tabStopWidth':\n if (value < 1) {\n throw new Error(`${key} cannot be less than 1, value: ${value}`);\n }\n break;\n case 'minimumContrastRatio':\n value = Math.max(1, Math.min(21, Math.round(value * 10) / 10));\n break;\n case 'scrollback':\n value = Math.min(value, 4294967295);\n if (value < 0) {\n throw new Error(`${key} cannot be less than 0, value: ${value}`);\n }\n break;\n case 'fastScrollSensitivity':\n case 'scrollSensitivity':\n if (value <= 0) {\n throw new Error(`${key} cannot be less than or equal to 0, value: ${value}`);\n }\n case 'rows':\n case 'cols':\n if (!value && value !== 0) {\n throw new Error(`${key} must be numeric, value: ${value}`);\n }\n break;\n }\n return value;\n }\n\n public getOption(key: string): any {\n return this.options[key];\n }\n}\n", "/**\n * Copyright (c) 2019 The xterm.js authors. All rights reserved.\n * @license MIT\n *\n * This was heavily inspired from microsoft/vscode's dependency injection system (MIT).\n */\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { IServiceIdentifier } from 'common/services/Services';\n\nconst DI_TARGET = 'di$target';\nconst DI_DEPENDENCIES = 'di$dependencies';\n\nexport const serviceRegistry: Map> = new Map();\n\nexport function getServiceDependencies(ctor: any): { id: IServiceIdentifier, index: number, optional: boolean }[] {\n return ctor[DI_DEPENDENCIES] || [];\n}\n\nexport function createDecorator(id: string): IServiceIdentifier {\n if (serviceRegistry.has(id)) {\n return serviceRegistry.get(id)!;\n }\n\n const decorator: any = function (target: Function, key: string, index: number): any {\n if (arguments.length !== 3) {\n throw new Error('@IServiceName-decorator can only be used to decorate a parameter');\n }\n\n storeServiceDependency(decorator, target, index);\n };\n\n decorator.toString = () => id;\n\n serviceRegistry.set(id, decorator);\n return decorator;\n}\n\nfunction storeServiceDependency(id: Function, target: Function, index: number): void {\n if ((target as any)[DI_TARGET] === target) {\n (target as any)[DI_DEPENDENCIES].push({ id, index });\n } else {\n (target as any)[DI_DEPENDENCIES] = [{ id, index }];\n (target as any)[DI_TARGET] = target;\n }\n}\n", "/**\n * Copyright (c) 2019 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IEvent, IEventEmitter } from 'common/EventEmitter';\nimport { IBuffer, IBufferSet } from 'common/buffer/Types';\nimport { IDecPrivateModes, ICoreMouseEvent, CoreMouseEncoding, ICoreMouseProtocol, CoreMouseEventType, ICharset, IWindowOptions, IModes, IAttributeData, ScrollSource, IDisposable, IColorRGB, IColor } from 'common/Types';\nimport { createDecorator } from 'common/services/ServiceRegistry';\nimport { IDecorationOptions, IDecoration } from 'xterm';\n\nexport const IBufferService = createDecorator('BufferService');\nexport interface IBufferService {\n serviceBrand: undefined;\n\n readonly cols: number;\n readonly rows: number;\n readonly buffer: IBuffer;\n readonly buffers: IBufferSet;\n isUserScrolling: boolean;\n onResize: IEvent<{ cols: number, rows: number }>;\n onScroll: IEvent;\n scroll(eraseAttr: IAttributeData, isWrapped?: boolean): void;\n scrollToBottom(): void;\n scrollToTop(): void;\n scrollToLine(line: number): void;\n scrollLines(disp: number, suppressScrollEvent?: boolean, source?: ScrollSource): void;\n scrollPages(pageCount: number): void;\n resize(cols: number, rows: number): void;\n reset(): void;\n}\n\nexport const ICoreMouseService = createDecorator('CoreMouseService');\nexport interface ICoreMouseService {\n activeProtocol: string;\n activeEncoding: string;\n areMouseEventsActive: boolean;\n addProtocol(name: string, protocol: ICoreMouseProtocol): void;\n addEncoding(name: string, encoding: CoreMouseEncoding): void;\n reset(): void;\n\n /**\n * Triggers a mouse event to be sent.\n *\n * Returns true if the event passed all protocol restrictions and a report\n * was sent, otherwise false. The return value may be used to decide whether\n * the default event action in the bowser component should be omitted.\n *\n * Note: The method will change values of the given event object\n * to fullfill protocol and encoding restrictions.\n */\n triggerMouseEvent(event: ICoreMouseEvent): boolean;\n\n /**\n * Event to announce changes in mouse tracking.\n */\n onProtocolChange: IEvent;\n\n /**\n * Human readable version of mouse events.\n */\n explainEvents(events: CoreMouseEventType): { [event: string]: boolean };\n}\n\nexport const ICoreService = createDecorator('CoreService');\nexport interface ICoreService {\n serviceBrand: undefined;\n\n /**\n * Initially the cursor will not be visible until the first time the terminal\n * is focused.\n */\n isCursorInitialized: boolean;\n isCursorHidden: boolean;\n\n readonly modes: IModes;\n readonly decPrivateModes: IDecPrivateModes;\n\n readonly onData: IEvent;\n readonly onUserInput: IEvent;\n readonly onBinary: IEvent;\n\n reset(): void;\n\n /**\n * Triggers the onData event in the public API.\n * @param data The data that is being emitted.\n * @param wasFromUser Whether the data originated from the user (as opposed to\n * resulting from parsing incoming data). When true this will also:\n * - Scroll to the bottom of the buffer.s\n * - Fire the `onUserInput` event (so selection can be cleared).\n */\n triggerDataEvent(data: string, wasUserInput?: boolean): void;\n\n /**\n * Triggers the onBinary event in the public API.\n * @param data The data that is being emitted.\n */\n triggerBinaryEvent(data: string): void;\n}\n\nexport const ICharsetService = createDecorator('CharsetService');\nexport interface ICharsetService {\n serviceBrand: undefined;\n\n charset: ICharset | undefined;\n readonly glevel: number;\n\n reset(): void;\n\n /**\n * Set the G level of the terminal.\n * @param g\n */\n setgLevel(g: number): void;\n\n /**\n * Set the charset for the given G level of the terminal.\n * @param g\n * @param charset\n */\n setgCharset(g: number, charset: ICharset | undefined): void;\n}\n\nexport const IDirtyRowService = createDecorator('DirtyRowService');\nexport interface IDirtyRowService {\n serviceBrand: undefined;\n\n readonly start: number;\n readonly end: number;\n\n clearRange(): void;\n markDirty(y: number): void;\n markRangeDirty(y1: number, y2: number): void;\n markAllDirty(): void;\n}\n\nexport interface IServiceIdentifier {\n (...args: any[]): void;\n type: T;\n}\n\nexport interface IBrandedService {\n serviceBrand: undefined;\n}\n\ntype GetLeadingNonServiceArgs =\n Args extends [...IBrandedService[]] ? []\n : Args extends [infer A1, ...IBrandedService[]] ? [A1]\n : Args extends [infer A1, infer A2, ...IBrandedService[]] ? [A1, A2]\n : Args extends [infer A1, infer A2, infer A3, ...IBrandedService[]] ? [A1, A2, A3]\n : Args extends [infer A1, infer A2, infer A3, infer A4, ...IBrandedService[]] ? [A1, A2, A3, A4]\n : Args extends [infer A1, infer A2, infer A3, infer A4, infer A5, ...IBrandedService[]] ? [A1, A2, A3, A4, A5]\n : Args extends [infer A1, infer A2, infer A3, infer A4, infer A5, infer A6, ...IBrandedService[]] ? [A1, A2, A3, A4, A5, A6]\n : Args extends [infer A1, infer A2, infer A3, infer A4, infer A5, infer A6, infer A7, ...IBrandedService[]] ? [A1, A2, A3, A4, A5, A6, A7]\n : Args extends [infer A1, infer A2, infer A3, infer A4, infer A5, infer A6, infer A7, infer A8, ...IBrandedService[]] ? [A1, A2, A3, A4, A5, A6, A7, A8]\n : never;\n\nexport const IInstantiationService = createDecorator('InstantiationService');\nexport interface IInstantiationService {\n serviceBrand: undefined;\n\n setService(id: IServiceIdentifier, instance: T): void;\n getService(id: IServiceIdentifier): T | undefined;\n createInstance any, R extends InstanceType>(t: Ctor, ...args: GetLeadingNonServiceArgs>): R;\n}\n\nexport enum LogLevelEnum {\n DEBUG = 0,\n INFO = 1,\n WARN = 2,\n ERROR = 3,\n OFF = 4\n}\n\nexport const ILogService = createDecorator('LogService');\nexport interface ILogService {\n serviceBrand: undefined;\n\n logLevel: LogLevelEnum;\n\n debug(message: any, ...optionalParams: any[]): void;\n info(message: any, ...optionalParams: any[]): void;\n warn(message: any, ...optionalParams: any[]): void;\n error(message: any, ...optionalParams: any[]): void;\n}\n\nexport const IOptionsService = createDecorator('OptionsService');\nexport interface IOptionsService {\n serviceBrand: undefined;\n\n /**\n * Read only access to the raw options object, this is an internal-only fast path for accessing\n * single options without any validation as we trust TypeScript to enforce correct usage\n * internally.\n */\n readonly rawOptions: Readonly;\n readonly options: ITerminalOptions;\n\n readonly onOptionChange: IEvent;\n\n setOption(key: string, value: T): void;\n getOption(key: string): T | undefined;\n}\n\nexport type FontWeight = 'normal' | 'bold' | '100' | '200' | '300' | '400' | '500' | '600' | '700' | '800' | '900' | number;\nexport type LogLevel = 'debug' | 'info' | 'warn' | 'error' | 'off';\n\nexport type RendererType = 'dom' | 'canvas';\n\nexport interface ITerminalOptions {\n allowProposedApi: boolean;\n allowTransparency: boolean;\n altClickMovesCursor: boolean;\n bellSound: string;\n bellStyle: 'none' | 'sound' /* | 'visual' | 'both' */;\n cols: number;\n convertEol: boolean;\n cursorBlink: boolean;\n cursorStyle: 'block' | 'underline' | 'bar';\n cursorWidth: number;\n customGlyphs: boolean;\n disableStdin: boolean;\n drawBoldTextInBrightColors: boolean;\n fastScrollModifier: 'alt' | 'ctrl' | 'shift' | undefined;\n fastScrollSensitivity: number;\n fontSize: number;\n fontFamily: string;\n fontWeight: FontWeight;\n fontWeightBold: FontWeight;\n letterSpacing: number;\n lineHeight: number;\n linkTooltipHoverDuration: number;\n logLevel: LogLevel;\n macOptionIsMeta: boolean;\n macOptionClickForcesSelection: boolean;\n minimumContrastRatio: number;\n rendererType: RendererType;\n rightClickSelectsWord: boolean;\n rows: number;\n screenReaderMode: boolean;\n scrollback: number;\n scrollSensitivity: number;\n tabStopWidth: number;\n theme: ITheme;\n windowsMode: boolean;\n windowOptions: IWindowOptions;\n wordSeparator: string;\n overviewRulerWidth?: number;\n\n [key: string]: any;\n cancelEvents: boolean;\n termName: string;\n}\n\nexport interface ITheme {\n foreground?: string;\n background?: string;\n cursor?: string;\n cursorAccent?: string;\n selection?: string;\n selectionForeground?: string;\n black?: string;\n red?: string;\n green?: string;\n yellow?: string;\n blue?: string;\n magenta?: string;\n cyan?: string;\n white?: string;\n brightBlack?: string;\n brightRed?: string;\n brightGreen?: string;\n brightYellow?: string;\n brightBlue?: string;\n brightMagenta?: string;\n brightCyan?: string;\n brightWhite?: string;\n}\n\nexport const IUnicodeService = createDecorator('UnicodeService');\nexport interface IUnicodeService {\n serviceBrand: undefined;\n /** Register an Unicode version provider. */\n register(provider: IUnicodeVersionProvider): void;\n /** Registered Unicode versions. */\n readonly versions: string[];\n /** Currently active version. */\n activeVersion: string;\n /** Event triggered, when activate version changed. */\n readonly onChange: IEvent;\n\n /**\n * Unicode version dependent\n */\n wcwidth(codepoint: number): number;\n getStringCellWidth(s: string): number;\n}\n\nexport interface IUnicodeVersionProvider {\n readonly version: string;\n wcwidth(ucs: number): 0 | 1 | 2;\n}\n\nexport const IDecorationService = createDecorator('DecorationService');\nexport interface IDecorationService extends IDisposable {\n serviceBrand: undefined;\n readonly decorations: IterableIterator;\n readonly onDecorationRegistered: IEvent;\n readonly onDecorationRemoved: IEvent;\n registerDecoration(decorationOptions: IDecorationOptions): IDecoration | undefined;\n reset(): void;\n /** Iterates over the decorations at a line (in no particular order). */\n getDecorationsAtLine(line: number): IterableIterator;\n /** Iterates over the decorations at a cell (in no particular order). */\n getDecorationsAtCell(x: number, line: number, layer?: 'bottom' | 'top'): IterableIterator;\n}\nexport interface IInternalDecoration extends IDecoration {\n readonly options: IDecorationOptions;\n readonly backgroundColorRGB: IColor | undefined;\n readonly foregroundColorRGB: IColor | undefined;\n readonly onRenderEmitter: IEventEmitter;\n}\n", "/**\n * Copyright (c) 2019 The xterm.js authors. All rights reserved.\n * @license MIT\n */\nimport { IUnicodeService, IUnicodeVersionProvider } from 'common/services/Services';\nimport { EventEmitter, IEvent } from 'common/EventEmitter';\nimport { UnicodeV6 } from 'common/input/UnicodeV6';\n\n\nexport class UnicodeService implements IUnicodeService {\n public serviceBrand: any;\n\n private _providers: {[key: string]: IUnicodeVersionProvider} = Object.create(null);\n private _active: string = '';\n private _activeProvider: IUnicodeVersionProvider;\n private _onChange = new EventEmitter();\n public get onChange(): IEvent { return this._onChange.event; }\n\n constructor() {\n const defaultProvider = new UnicodeV6();\n this.register(defaultProvider);\n this._active = defaultProvider.version;\n this._activeProvider = defaultProvider;\n }\n\n public get versions(): string[] {\n return Object.keys(this._providers);\n }\n\n public get activeVersion(): string {\n return this._active;\n }\n\n public set activeVersion(version: string) {\n if (!this._providers[version]) {\n throw new Error(`unknown Unicode version \"${version}\"`);\n }\n this._active = version;\n this._activeProvider = this._providers[version];\n this._onChange.fire(version);\n }\n\n public register(provider: IUnicodeVersionProvider): void {\n this._providers[provider.version] = provider;\n }\n\n /**\n * Unicode version dependent interface.\n */\n public wcwidth(num: number): number {\n return this._activeProvider.wcwidth(num);\n }\n\n public getStringCellWidth(s: string): number {\n let result = 0;\n const length = s.length;\n for (let i = 0; i < length; ++i) {\n let code = s.charCodeAt(i);\n // surrogate pair first\n if (0xD800 <= code && code <= 0xDBFF) {\n if (++i >= length) {\n // this should not happen with strings retrieved from\n // Buffer.translateToString as it converts from UTF-32\n // and therefore always should contain the second part\n // for any other string we still have to handle it somehow:\n // simply treat the lonely surrogate first as a single char (UCS-2 behavior)\n return result + this.wcwidth(code);\n }\n const second = s.charCodeAt(i);\n // convert surrogate pair to high codepoint only for valid second part (UTF-16)\n // otherwise treat them independently (UCS-2 behavior)\n if (0xDC00 <= second && second <= 0xDFFF) {\n code = (code - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n } else {\n result += this.wcwidth(second);\n }\n }\n result += this.wcwidth(code);\n }\n return result;\n }\n}\n", "// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n", "// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(4389);\n", "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n var noOptions = {};\n var nonWS = /[^\\s\\u00a0]/;\n var Pos = CodeMirror.Pos, cmp = CodeMirror.cmpPos;\n\n function firstNonWS(str) {\n var found = str.search(nonWS);\n return found == -1 ? 0 : found;\n }\n\n CodeMirror.commands.toggleComment = function(cm) {\n cm.toggleComment();\n };\n\n CodeMirror.defineExtension(\"toggleComment\", function(options) {\n if (!options) options = noOptions;\n var cm = this;\n var minLine = Infinity, ranges = this.listSelections(), mode = null;\n for (var i = ranges.length - 1; i >= 0; i--) {\n var from = ranges[i].from(), to = ranges[i].to();\n if (from.line >= minLine) continue;\n if (to.line >= minLine) to = Pos(minLine, 0);\n minLine = from.line;\n if (mode == null) {\n if (cm.uncomment(from, to, options)) mode = \"un\";\n else { cm.lineComment(from, to, options); mode = \"line\"; }\n } else if (mode == \"un\") {\n cm.uncomment(from, to, options);\n } else {\n cm.lineComment(from, to, options);\n }\n }\n });\n\n // Rough heuristic to try and detect lines that are part of multi-line string\n function probablyInsideString(cm, pos, line) {\n return /\\bstring\\b/.test(cm.getTokenTypeAt(Pos(pos.line, 0))) && !/^[\\'\\\"\\`]/.test(line)\n }\n\n function getMode(cm, pos) {\n var mode = cm.getMode()\n return mode.useInnerComments === false || !mode.innerMode ? mode : cm.getModeAt(pos)\n }\n\n CodeMirror.defineExtension(\"lineComment\", function(from, to, options) {\n if (!options) options = noOptions;\n var self = this, mode = getMode(self, from);\n var firstLine = self.getLine(from.line);\n if (firstLine == null || probablyInsideString(self, from, firstLine)) return;\n\n var commentString = options.lineComment || mode.lineComment;\n if (!commentString) {\n if (options.blockCommentStart || mode.blockCommentStart) {\n options.fullLines = true;\n self.blockComment(from, to, options);\n }\n return;\n }\n\n var end = Math.min(to.ch != 0 || to.line == from.line ? to.line + 1 : to.line, self.lastLine() + 1);\n var pad = options.padding == null ? \" \" : options.padding;\n var blankLines = options.commentBlankLines || from.line == to.line;\n\n self.operation(function() {\n if (options.indent) {\n var baseString = null;\n for (var i = from.line; i < end; ++i) {\n var line = self.getLine(i);\n var whitespace = line.search(nonWS) === -1 ? line : line.slice(0, firstNonWS(line));\n if (baseString == null || baseString.length > whitespace.length) {\n baseString = whitespace;\n }\n }\n for (var i = from.line; i < end; ++i) {\n var line = self.getLine(i), cut = baseString.length;\n if (!blankLines && !nonWS.test(line)) continue;\n if (line.slice(0, cut) != baseString) cut = firstNonWS(line);\n self.replaceRange(baseString + commentString + pad, Pos(i, 0), Pos(i, cut));\n }\n } else {\n for (var i = from.line; i < end; ++i) {\n if (blankLines || nonWS.test(self.getLine(i)))\n self.replaceRange(commentString + pad, Pos(i, 0));\n }\n }\n });\n });\n\n CodeMirror.defineExtension(\"blockComment\", function(from, to, options) {\n if (!options) options = noOptions;\n var self = this, mode = getMode(self, from);\n var startString = options.blockCommentStart || mode.blockCommentStart;\n var endString = options.blockCommentEnd || mode.blockCommentEnd;\n if (!startString || !endString) {\n if ((options.lineComment || mode.lineComment) && options.fullLines != false)\n self.lineComment(from, to, options);\n return;\n }\n if (/\\bcomment\\b/.test(self.getTokenTypeAt(Pos(from.line, 0)))) return\n\n var end = Math.min(to.line, self.lastLine());\n if (end != from.line && to.ch == 0 && nonWS.test(self.getLine(end))) --end;\n\n var pad = options.padding == null ? \" \" : options.padding;\n if (from.line > end) return;\n\n self.operation(function() {\n if (options.fullLines != false) {\n var lastLineHasText = nonWS.test(self.getLine(end));\n self.replaceRange(pad + endString, Pos(end));\n self.replaceRange(startString + pad, Pos(from.line, 0));\n var lead = options.blockCommentLead || mode.blockCommentLead;\n if (lead != null) for (var i = from.line + 1; i <= end; ++i)\n if (i != end || lastLineHasText)\n self.replaceRange(lead + pad, Pos(i, 0));\n } else {\n var atCursor = cmp(self.getCursor(\"to\"), to) == 0, empty = !self.somethingSelected()\n self.replaceRange(endString, to);\n if (atCursor) self.setSelection(empty ? to : self.getCursor(\"from\"), to)\n self.replaceRange(startString, from);\n }\n });\n });\n\n CodeMirror.defineExtension(\"uncomment\", function(from, to, options) {\n if (!options) options = noOptions;\n var self = this, mode = getMode(self, from);\n var end = Math.min(to.ch != 0 || to.line == from.line ? to.line : to.line - 1, self.lastLine()), start = Math.min(from.line, end);\n\n // Try finding line comments\n var lineString = options.lineComment || mode.lineComment, lines = [];\n var pad = options.padding == null ? \" \" : options.padding, didSomething;\n lineComment: {\n if (!lineString) break lineComment;\n for (var i = start; i <= end; ++i) {\n var line = self.getLine(i);\n var found = line.indexOf(lineString);\n if (found > -1 && !/comment/.test(self.getTokenTypeAt(Pos(i, found + 1)))) found = -1;\n if (found == -1 && nonWS.test(line)) break lineComment;\n if (found > -1 && nonWS.test(line.slice(0, found))) break lineComment;\n lines.push(line);\n }\n self.operation(function() {\n for (var i = start; i <= end; ++i) {\n var line = lines[i - start];\n var pos = line.indexOf(lineString), endPos = pos + lineString.length;\n if (pos < 0) continue;\n if (line.slice(endPos, endPos + pad.length) == pad) endPos += pad.length;\n didSomething = true;\n self.replaceRange(\"\", Pos(i, pos), Pos(i, endPos));\n }\n });\n if (didSomething) return true;\n }\n\n // Try block comments\n var startString = options.blockCommentStart || mode.blockCommentStart;\n var endString = options.blockCommentEnd || mode.blockCommentEnd;\n if (!startString || !endString) return false;\n var lead = options.blockCommentLead || mode.blockCommentLead;\n var startLine = self.getLine(start), open = startLine.indexOf(startString)\n if (open == -1) return false\n var endLine = end == start ? startLine : self.getLine(end)\n var close = endLine.indexOf(endString, end == start ? open + startString.length : 0);\n var insideStart = Pos(start, open + 1), insideEnd = Pos(end, close + 1)\n if (close == -1 ||\n !/comment/.test(self.getTokenTypeAt(insideStart)) ||\n !/comment/.test(self.getTokenTypeAt(insideEnd)) ||\n self.getRange(insideStart, insideEnd, \"\\n\").indexOf(endString) > -1)\n return false;\n\n // Avoid killing block comments completely outside the selection.\n // Positions of the last startString before the start of the selection, and the first endString after it.\n var lastStart = startLine.lastIndexOf(startString, from.ch);\n var firstEnd = lastStart == -1 ? -1 : startLine.slice(0, from.ch).indexOf(endString, lastStart + startString.length);\n if (lastStart != -1 && firstEnd != -1 && firstEnd + endString.length != from.ch) return false;\n // Positions of the first endString after the end of the selection, and the last startString before it.\n firstEnd = endLine.indexOf(endString, to.ch);\n var almostLastStart = endLine.slice(to.ch).lastIndexOf(startString, firstEnd - to.ch);\n lastStart = (firstEnd == -1 || almostLastStart == -1) ? -1 : to.ch + almostLastStart;\n if (firstEnd != -1 && lastStart != -1 && lastStart != to.ch) return false;\n\n self.operation(function() {\n self.replaceRange(\"\", Pos(end, close - (pad && endLine.slice(close - pad.length, close) == pad ? pad.length : 0)),\n Pos(end, close + endString.length));\n var openEnd = open + startString.length;\n if (pad && startLine.slice(openEnd, openEnd + pad.length) == pad) openEnd += pad.length;\n self.replaceRange(\"\", Pos(start, open), Pos(start, openEnd));\n if (lead) for (var i = start + 1; i <= end; ++i) {\n var line = self.getLine(i), found = line.indexOf(lead);\n if (found == -1 || nonWS.test(line.slice(0, found))) continue;\n var foundEnd = found + lead.length;\n if (pad && line.slice(foundEnd, foundEnd + pad.length) == pad) foundEnd += pad.length;\n self.replaceRange(\"\", Pos(i, found), Pos(i, foundEnd));\n }\n });\n return true;\n });\n});\n", "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n var nonspace = /\\S/g;\n var repeat = String.prototype.repeat || function (n) { return Array(n + 1).join(this); };\n function continueComment(cm) {\n if (cm.getOption(\"disableInput\")) return CodeMirror.Pass;\n var ranges = cm.listSelections(), mode, inserts = [];\n for (var i = 0; i < ranges.length; i++) {\n var pos = ranges[i].head\n if (!/\\bcomment\\b/.test(cm.getTokenTypeAt(pos))) return CodeMirror.Pass;\n var modeHere = cm.getModeAt(pos)\n if (!mode) mode = modeHere;\n else if (mode != modeHere) return CodeMirror.Pass;\n\n var insert = null, line, found;\n var blockStart = mode.blockCommentStart, lineCmt = mode.lineComment;\n if (blockStart && mode.blockCommentContinue) {\n line = cm.getLine(pos.line);\n var end = line.lastIndexOf(mode.blockCommentEnd, pos.ch - mode.blockCommentEnd.length);\n // 1. if this block comment ended\n // 2. if this is actually inside a line comment\n if (end != -1 && end == pos.ch - mode.blockCommentEnd.length ||\n lineCmt && (found = line.lastIndexOf(lineCmt, pos.ch - 1)) > -1 &&\n /\\bcomment\\b/.test(cm.getTokenTypeAt({line: pos.line, ch: found + 1}))) {\n // ...then don't continue it\n } else if (pos.ch >= blockStart.length &&\n (found = line.lastIndexOf(blockStart, pos.ch - blockStart.length)) > -1 &&\n found > end) {\n // reuse the existing leading spaces/tabs/mixed\n // or build the correct indent using CM's tab/indent options\n if (nonspaceAfter(0, line) >= found) {\n insert = line.slice(0, found);\n } else {\n var tabSize = cm.options.tabSize, numTabs;\n found = CodeMirror.countColumn(line, found, tabSize);\n insert = !cm.options.indentWithTabs ? repeat.call(\" \", found) :\n repeat.call(\"\\t\", (numTabs = Math.floor(found / tabSize))) +\n repeat.call(\" \", found - tabSize * numTabs);\n }\n } else if ((found = line.indexOf(mode.blockCommentContinue)) > -1 &&\n found <= pos.ch &&\n found <= nonspaceAfter(0, line)) {\n insert = line.slice(0, found);\n }\n if (insert != null) insert += mode.blockCommentContinue\n }\n if (insert == null && lineCmt && continueLineCommentEnabled(cm)) {\n if (line == null) line = cm.getLine(pos.line);\n found = line.indexOf(lineCmt);\n // cursor at pos 0, line comment also at pos 0 => shift it down, don't continue\n if (!pos.ch && !found) insert = \"\";\n // continue only if the line starts with an optional space + line comment\n else if (found > -1 && nonspaceAfter(0, line) >= found) {\n // don't continue if there's only space(s) after cursor or the end of the line\n insert = nonspaceAfter(pos.ch, line) > -1;\n // but always continue if the next line starts with a line comment too\n if (!insert) {\n var next = cm.getLine(pos.line + 1) || '',\n nextFound = next.indexOf(lineCmt);\n insert = nextFound > -1 && nonspaceAfter(0, next) >= nextFound || null;\n }\n if (insert) {\n insert = line.slice(0, found) + lineCmt +\n line.slice(found + lineCmt.length).match(/^\\s*/)[0];\n }\n }\n }\n if (insert == null) return CodeMirror.Pass;\n inserts[i] = \"\\n\" + insert;\n }\n\n cm.operation(function() {\n for (var i = ranges.length - 1; i >= 0; i--)\n cm.replaceRange(inserts[i], ranges[i].from(), ranges[i].to(), \"+insert\");\n });\n }\n\n function nonspaceAfter(ch, str) {\n nonspace.lastIndex = ch;\n var m = nonspace.exec(str);\n return m ? m.index : -1;\n }\n\n function continueLineCommentEnabled(cm) {\n var opt = cm.getOption(\"continueComments\");\n if (opt && typeof opt == \"object\")\n return opt.continueLineComment !== false;\n return true;\n }\n\n CodeMirror.defineOption(\"continueComments\", null, function(cm, val, prev) {\n if (prev && prev != CodeMirror.Init)\n cm.removeKeyMap(\"continueComment\");\n if (val) {\n var key = \"Enter\";\n if (typeof val == \"string\")\n key = val;\n else if (typeof val == \"object\" && val.key)\n key = val.key;\n var map = {name: \"continueComment\"};\n map[key] = continueComment;\n cm.addKeyMap(map);\n }\n });\n});\n", "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n CodeMirror.defineOption(\"placeholder\", \"\", function(cm, val, old) {\n var prev = old && old != CodeMirror.Init;\n if (val && !prev) {\n cm.on(\"blur\", onBlur);\n cm.on(\"change\", onChange);\n cm.on(\"swapDoc\", onChange);\n CodeMirror.on(cm.getInputField(), \"compositionupdate\", cm.state.placeholderCompose = function() { onComposition(cm) })\n onChange(cm);\n } else if (!val && prev) {\n cm.off(\"blur\", onBlur);\n cm.off(\"change\", onChange);\n cm.off(\"swapDoc\", onChange);\n CodeMirror.off(cm.getInputField(), \"compositionupdate\", cm.state.placeholderCompose)\n clearPlaceholder(cm);\n var wrapper = cm.getWrapperElement();\n wrapper.className = wrapper.className.replace(\" CodeMirror-empty\", \"\");\n }\n\n if (val && !cm.hasFocus()) onBlur(cm);\n });\n\n function clearPlaceholder(cm) {\n if (cm.state.placeholder) {\n cm.state.placeholder.parentNode.removeChild(cm.state.placeholder);\n cm.state.placeholder = null;\n }\n }\n function setPlaceholder(cm) {\n clearPlaceholder(cm);\n var elt = cm.state.placeholder = document.createElement(\"pre\");\n elt.style.cssText = \"height: 0; overflow: visible\";\n elt.style.direction = cm.getOption(\"direction\");\n elt.className = \"CodeMirror-placeholder CodeMirror-line-like\";\n var placeHolder = cm.getOption(\"placeholder\")\n if (typeof placeHolder == \"string\") placeHolder = document.createTextNode(placeHolder)\n elt.appendChild(placeHolder)\n cm.display.lineSpace.insertBefore(elt, cm.display.lineSpace.firstChild);\n }\n\n function onComposition(cm) {\n setTimeout(function() {\n var empty = false\n if (cm.lineCount() == 1) {\n var input = cm.getInputField()\n empty = input.nodeName == \"TEXTAREA\" ? !cm.getLine(0).length\n : !/[^\\u200b]/.test(input.querySelector(\".CodeMirror-line\").textContent)\n }\n if (empty) setPlaceholder(cm)\n else clearPlaceholder(cm)\n }, 20)\n }\n\n function onBlur(cm) {\n if (isEmpty(cm)) setPlaceholder(cm);\n }\n function onChange(cm) {\n var wrapper = cm.getWrapperElement(), empty = isEmpty(cm);\n wrapper.className = wrapper.className.replace(\" CodeMirror-empty\", \"\") + (empty ? \" CodeMirror-empty\" : \"\");\n\n if (empty) setPlaceholder(cm);\n else clearPlaceholder(cm);\n }\n\n function isEmpty(cm) {\n return (cm.lineCount() === 1) && (cm.getLine(0) === \"\");\n }\n});\n", "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n var defaults = {\n pairs: \"()[]{}''\\\"\\\"\",\n closeBefore: \")]}'\\\":;>\",\n triples: \"\",\n explode: \"[]{}\"\n };\n\n var Pos = CodeMirror.Pos;\n\n CodeMirror.defineOption(\"autoCloseBrackets\", false, function(cm, val, old) {\n if (old && old != CodeMirror.Init) {\n cm.removeKeyMap(keyMap);\n cm.state.closeBrackets = null;\n }\n if (val) {\n ensureBound(getOption(val, \"pairs\"))\n cm.state.closeBrackets = val;\n cm.addKeyMap(keyMap);\n }\n });\n\n function getOption(conf, name) {\n if (name == \"pairs\" && typeof conf == \"string\") return conf;\n if (typeof conf == \"object\" && conf[name] != null) return conf[name];\n return defaults[name];\n }\n\n var keyMap = {Backspace: handleBackspace, Enter: handleEnter};\n function ensureBound(chars) {\n for (var i = 0; i < chars.length; i++) {\n var ch = chars.charAt(i), key = \"'\" + ch + \"'\"\n if (!keyMap[key]) keyMap[key] = handler(ch)\n }\n }\n ensureBound(defaults.pairs + \"`\")\n\n function handler(ch) {\n return function(cm) { return handleChar(cm, ch); };\n }\n\n function getConfig(cm) {\n var deflt = cm.state.closeBrackets;\n if (!deflt || deflt.override) return deflt;\n var mode = cm.getModeAt(cm.getCursor());\n return mode.closeBrackets || deflt;\n }\n\n function handleBackspace(cm) {\n var conf = getConfig(cm);\n if (!conf || cm.getOption(\"disableInput\")) return CodeMirror.Pass;\n\n var pairs = getOption(conf, \"pairs\");\n var ranges = cm.listSelections();\n for (var i = 0; i < ranges.length; i++) {\n if (!ranges[i].empty()) return CodeMirror.Pass;\n var around = charsAround(cm, ranges[i].head);\n if (!around || pairs.indexOf(around) % 2 != 0) return CodeMirror.Pass;\n }\n for (var i = ranges.length - 1; i >= 0; i--) {\n var cur = ranges[i].head;\n cm.replaceRange(\"\", Pos(cur.line, cur.ch - 1), Pos(cur.line, cur.ch + 1), \"+delete\");\n }\n }\n\n function handleEnter(cm) {\n var conf = getConfig(cm);\n var explode = conf && getOption(conf, \"explode\");\n if (!explode || cm.getOption(\"disableInput\")) return CodeMirror.Pass;\n\n var ranges = cm.listSelections();\n for (var i = 0; i < ranges.length; i++) {\n if (!ranges[i].empty()) return CodeMirror.Pass;\n var around = charsAround(cm, ranges[i].head);\n if (!around || explode.indexOf(around) % 2 != 0) return CodeMirror.Pass;\n }\n cm.operation(function() {\n var linesep = cm.lineSeparator() || \"\\n\";\n cm.replaceSelection(linesep + linesep, null);\n moveSel(cm, -1)\n ranges = cm.listSelections();\n for (var i = 0; i < ranges.length; i++) {\n var line = ranges[i].head.line;\n cm.indentLine(line, null, true);\n cm.indentLine(line + 1, null, true);\n }\n });\n }\n\n function moveSel(cm, dir) {\n var newRanges = [], ranges = cm.listSelections(), primary = 0\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i]\n if (range.head == cm.getCursor()) primary = i\n var pos = range.head.ch || dir > 0 ? {line: range.head.line, ch: range.head.ch + dir} : {line: range.head.line - 1}\n newRanges.push({anchor: pos, head: pos})\n }\n cm.setSelections(newRanges, primary)\n }\n\n function contractSelection(sel) {\n var inverted = CodeMirror.cmpPos(sel.anchor, sel.head) > 0;\n return {anchor: new Pos(sel.anchor.line, sel.anchor.ch + (inverted ? -1 : 1)),\n head: new Pos(sel.head.line, sel.head.ch + (inverted ? 1 : -1))};\n }\n\n function handleChar(cm, ch) {\n var conf = getConfig(cm);\n if (!conf || cm.getOption(\"disableInput\")) return CodeMirror.Pass;\n\n var pairs = getOption(conf, \"pairs\");\n var pos = pairs.indexOf(ch);\n if (pos == -1) return CodeMirror.Pass;\n\n var closeBefore = getOption(conf,\"closeBefore\");\n\n var triples = getOption(conf, \"triples\");\n\n var identical = pairs.charAt(pos + 1) == ch;\n var ranges = cm.listSelections();\n var opening = pos % 2 == 0;\n\n var type;\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i], cur = range.head, curType;\n var next = cm.getRange(cur, Pos(cur.line, cur.ch + 1));\n if (opening && !range.empty()) {\n curType = \"surround\";\n } else if ((identical || !opening) && next == ch) {\n if (identical && stringStartsAfter(cm, cur))\n curType = \"both\";\n else if (triples.indexOf(ch) >= 0 && cm.getRange(cur, Pos(cur.line, cur.ch + 3)) == ch + ch + ch)\n curType = \"skipThree\";\n else\n curType = \"skip\";\n } else if (identical && cur.ch > 1 && triples.indexOf(ch) >= 0 &&\n cm.getRange(Pos(cur.line, cur.ch - 2), cur) == ch + ch) {\n if (cur.ch > 2 && /\\bstring/.test(cm.getTokenTypeAt(Pos(cur.line, cur.ch - 2)))) return CodeMirror.Pass;\n curType = \"addFour\";\n } else if (identical) {\n var prev = cur.ch == 0 ? \" \" : cm.getRange(Pos(cur.line, cur.ch - 1), cur)\n if (!CodeMirror.isWordChar(next) && prev != ch && !CodeMirror.isWordChar(prev)) curType = \"both\";\n else return CodeMirror.Pass;\n } else if (opening && (next.length === 0 || /\\s/.test(next) || closeBefore.indexOf(next) > -1)) {\n curType = \"both\";\n } else {\n return CodeMirror.Pass;\n }\n if (!type) type = curType;\n else if (type != curType) return CodeMirror.Pass;\n }\n\n var left = pos % 2 ? pairs.charAt(pos - 1) : ch;\n var right = pos % 2 ? ch : pairs.charAt(pos + 1);\n cm.operation(function() {\n if (type == \"skip\") {\n moveSel(cm, 1)\n } else if (type == \"skipThree\") {\n moveSel(cm, 3)\n } else if (type == \"surround\") {\n var sels = cm.getSelections();\n for (var i = 0; i < sels.length; i++)\n sels[i] = left + sels[i] + right;\n cm.replaceSelections(sels, \"around\");\n sels = cm.listSelections().slice();\n for (var i = 0; i < sels.length; i++)\n sels[i] = contractSelection(sels[i]);\n cm.setSelections(sels);\n } else if (type == \"both\") {\n cm.replaceSelection(left + right, null);\n cm.triggerElectric(left + right);\n moveSel(cm, -1)\n } else if (type == \"addFour\") {\n cm.replaceSelection(left + left + left + left, \"before\");\n moveSel(cm, 1)\n }\n });\n }\n\n function charsAround(cm, pos) {\n var str = cm.getRange(Pos(pos.line, pos.ch - 1),\n Pos(pos.line, pos.ch + 1));\n return str.length == 2 ? str : null;\n }\n\n function stringStartsAfter(cm, pos) {\n var token = cm.getTokenAt(Pos(pos.line, pos.ch + 1))\n return /\\bstring/.test(token.type) && token.start == pos.ch &&\n (pos.ch == 0 || !/\\bstring/.test(cm.getTokenTypeAt(pos)))\n }\n});\n", "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n var ie_lt8 = /MSIE \\d/.test(navigator.userAgent) &&\n (document.documentMode == null || document.documentMode < 8);\n\n var Pos = CodeMirror.Pos;\n\n var matching = {\"(\": \")>\", \")\": \"(<\", \"[\": \"]>\", \"]\": \"[<\", \"{\": \"}>\", \"}\": \"{<\", \"<\": \">>\", \">\": \"<<\"};\n\n function bracketRegex(config) {\n return config && config.bracketRegex || /[(){}[\\]]/\n }\n\n function findMatchingBracket(cm, where, config) {\n var line = cm.getLineHandle(where.line), pos = where.ch - 1;\n var afterCursor = config && config.afterCursor\n if (afterCursor == null)\n afterCursor = /(^| )cm-fat-cursor($| )/.test(cm.getWrapperElement().className)\n var re = bracketRegex(config)\n\n // A cursor is defined as between two characters, but in in vim command mode\n // (i.e. not insert mode), the cursor is visually represented as a\n // highlighted box on top of the 2nd character. Otherwise, we allow matches\n // from before or after the cursor.\n var match = (!afterCursor && pos >= 0 && re.test(line.text.charAt(pos)) && matching[line.text.charAt(pos)]) ||\n re.test(line.text.charAt(pos + 1)) && matching[line.text.charAt(++pos)];\n if (!match) return null;\n var dir = match.charAt(1) == \">\" ? 1 : -1;\n if (config && config.strict && (dir > 0) != (pos == where.ch)) return null;\n var style = cm.getTokenTypeAt(Pos(where.line, pos + 1));\n\n var found = scanForBracket(cm, Pos(where.line, pos + (dir > 0 ? 1 : 0)), dir, style, config);\n if (found == null) return null;\n return {from: Pos(where.line, pos), to: found && found.pos,\n match: found && found.ch == match.charAt(0), forward: dir > 0};\n }\n\n // bracketRegex is used to specify which type of bracket to scan\n // should be a regexp, e.g. /[[\\]]/\n //\n // Note: If \"where\" is on an open bracket, then this bracket is ignored.\n //\n // Returns false when no bracket was found, null when it reached\n // maxScanLines and gave up\n function scanForBracket(cm, where, dir, style, config) {\n var maxScanLen = (config && config.maxScanLineLength) || 10000;\n var maxScanLines = (config && config.maxScanLines) || 1000;\n\n var stack = [];\n var re = bracketRegex(config)\n var lineEnd = dir > 0 ? Math.min(where.line + maxScanLines, cm.lastLine() + 1)\n : Math.max(cm.firstLine() - 1, where.line - maxScanLines);\n for (var lineNo = where.line; lineNo != lineEnd; lineNo += dir) {\n var line = cm.getLine(lineNo);\n if (!line) continue;\n var pos = dir > 0 ? 0 : line.length - 1, end = dir > 0 ? line.length : -1;\n if (line.length > maxScanLen) continue;\n if (lineNo == where.line) pos = where.ch - (dir < 0 ? 1 : 0);\n for (; pos != end; pos += dir) {\n var ch = line.charAt(pos);\n if (re.test(ch) && (style === undefined ||\n (cm.getTokenTypeAt(Pos(lineNo, pos + 1)) || \"\") == (style || \"\"))) {\n var match = matching[ch];\n if (match && (match.charAt(1) == \">\") == (dir > 0)) stack.push(ch);\n else if (!stack.length) return {pos: Pos(lineNo, pos), ch: ch};\n else stack.pop();\n }\n }\n }\n return lineNo - dir == (dir > 0 ? cm.lastLine() : cm.firstLine()) ? false : null;\n }\n\n function matchBrackets(cm, autoclear, config) {\n // Disable brace matching in long lines, since it'll cause hugely slow updates\n var maxHighlightLen = cm.state.matchBrackets.maxHighlightLineLength || 1000,\n highlightNonMatching = config && config.highlightNonMatching;\n var marks = [], ranges = cm.listSelections();\n for (var i = 0; i < ranges.length; i++) {\n var match = ranges[i].empty() && findMatchingBracket(cm, ranges[i].head, config);\n if (match && (match.match || highlightNonMatching !== false) && cm.getLine(match.from.line).length <= maxHighlightLen) {\n var style = match.match ? \"CodeMirror-matchingbracket\" : \"CodeMirror-nonmatchingbracket\";\n marks.push(cm.markText(match.from, Pos(match.from.line, match.from.ch + 1), {className: style}));\n if (match.to && cm.getLine(match.to.line).length <= maxHighlightLen)\n marks.push(cm.markText(match.to, Pos(match.to.line, match.to.ch + 1), {className: style}));\n }\n }\n\n if (marks.length) {\n // Kludge to work around the IE bug from issue #1193, where text\n // input stops going to the textarea whenever this fires.\n if (ie_lt8 && cm.state.focused) cm.focus();\n\n var clear = function() {\n cm.operation(function() {\n for (var i = 0; i < marks.length; i++) marks[i].clear();\n });\n };\n if (autoclear) setTimeout(clear, 800);\n else return clear;\n }\n }\n\n function doMatchBrackets(cm) {\n cm.operation(function() {\n if (cm.state.matchBrackets.currentlyHighlighted) {\n cm.state.matchBrackets.currentlyHighlighted();\n cm.state.matchBrackets.currentlyHighlighted = null;\n }\n cm.state.matchBrackets.currentlyHighlighted = matchBrackets(cm, false, cm.state.matchBrackets);\n });\n }\n\n function clearHighlighted(cm) {\n if (cm.state.matchBrackets && cm.state.matchBrackets.currentlyHighlighted) {\n cm.state.matchBrackets.currentlyHighlighted();\n cm.state.matchBrackets.currentlyHighlighted = null;\n }\n }\n\n CodeMirror.defineOption(\"matchBrackets\", false, function(cm, val, old) {\n if (old && old != CodeMirror.Init) {\n cm.off(\"cursorActivity\", doMatchBrackets);\n cm.off(\"focus\", doMatchBrackets)\n cm.off(\"blur\", clearHighlighted)\n clearHighlighted(cm);\n }\n if (val) {\n cm.state.matchBrackets = typeof val == \"object\" ? val : {};\n cm.on(\"cursorActivity\", doMatchBrackets);\n cm.on(\"focus\", doMatchBrackets)\n cm.on(\"blur\", clearHighlighted)\n }\n });\n\n CodeMirror.defineExtension(\"matchBrackets\", function() {matchBrackets(this, true);});\n CodeMirror.defineExtension(\"findMatchingBracket\", function(pos, config, oldConfig){\n // Backwards-compatibility kludge\n if (oldConfig || typeof config == \"boolean\") {\n if (!oldConfig) {\n config = config ? {strict: true} : null\n } else {\n oldConfig.strict = config\n config = oldConfig\n }\n }\n return findMatchingBracket(this, pos, config)\n });\n CodeMirror.defineExtension(\"scanForBracket\", function(pos, dir, style, config){\n return scanForBracket(this, pos, dir, style, config);\n });\n});\n", "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"))\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod)\n else // Plain browser env\n mod(CodeMirror)\n})(function(CodeMirror) {\n \"use strict\"\n var Pos = CodeMirror.Pos\n\n function regexpFlags(regexp) {\n var flags = regexp.flags\n return flags != null ? flags : (regexp.ignoreCase ? \"i\" : \"\")\n + (regexp.global ? \"g\" : \"\")\n + (regexp.multiline ? \"m\" : \"\")\n }\n\n function ensureFlags(regexp, flags) {\n var current = regexpFlags(regexp), target = current\n for (var i = 0; i < flags.length; i++) if (target.indexOf(flags.charAt(i)) == -1)\n target += flags.charAt(i)\n return current == target ? regexp : new RegExp(regexp.source, target)\n }\n\n function maybeMultiline(regexp) {\n return /\\\\s|\\\\n|\\n|\\\\W|\\\\D|\\[\\^/.test(regexp.source)\n }\n\n function searchRegexpForward(doc, regexp, start) {\n regexp = ensureFlags(regexp, \"g\")\n for (var line = start.line, ch = start.ch, last = doc.lastLine(); line <= last; line++, ch = 0) {\n regexp.lastIndex = ch\n var string = doc.getLine(line), match = regexp.exec(string)\n if (match)\n return {from: Pos(line, match.index),\n to: Pos(line, match.index + match[0].length),\n match: match}\n }\n }\n\n function searchRegexpForwardMultiline(doc, regexp, start) {\n if (!maybeMultiline(regexp)) return searchRegexpForward(doc, regexp, start)\n\n regexp = ensureFlags(regexp, \"gm\")\n var string, chunk = 1\n for (var line = start.line, last = doc.lastLine(); line <= last;) {\n // This grows the search buffer in exponentially-sized chunks\n // between matches, so that nearby matches are fast and don't\n // require concatenating the whole document (in case we're\n // searching for something that has tons of matches), but at the\n // same time, the amount of retries is limited.\n for (var i = 0; i < chunk; i++) {\n if (line > last) break\n var curLine = doc.getLine(line++)\n string = string == null ? curLine : string + \"\\n\" + curLine\n }\n chunk = chunk * 2\n regexp.lastIndex = start.ch\n var match = regexp.exec(string)\n if (match) {\n var before = string.slice(0, match.index).split(\"\\n\"), inside = match[0].split(\"\\n\")\n var startLine = start.line + before.length - 1, startCh = before[before.length - 1].length\n return {from: Pos(startLine, startCh),\n to: Pos(startLine + inside.length - 1,\n inside.length == 1 ? startCh + inside[0].length : inside[inside.length - 1].length),\n match: match}\n }\n }\n }\n\n function lastMatchIn(string, regexp, endMargin) {\n var match, from = 0\n while (from <= string.length) {\n regexp.lastIndex = from\n var newMatch = regexp.exec(string)\n if (!newMatch) break\n var end = newMatch.index + newMatch[0].length\n if (end > string.length - endMargin) break\n if (!match || end > match.index + match[0].length)\n match = newMatch\n from = newMatch.index + 1\n }\n return match\n }\n\n function searchRegexpBackward(doc, regexp, start) {\n regexp = ensureFlags(regexp, \"g\")\n for (var line = start.line, ch = start.ch, first = doc.firstLine(); line >= first; line--, ch = -1) {\n var string = doc.getLine(line)\n var match = lastMatchIn(string, regexp, ch < 0 ? 0 : string.length - ch)\n if (match)\n return {from: Pos(line, match.index),\n to: Pos(line, match.index + match[0].length),\n match: match}\n }\n }\n\n function searchRegexpBackwardMultiline(doc, regexp, start) {\n if (!maybeMultiline(regexp)) return searchRegexpBackward(doc, regexp, start)\n regexp = ensureFlags(regexp, \"gm\")\n var string, chunkSize = 1, endMargin = doc.getLine(start.line).length - start.ch\n for (var line = start.line, first = doc.firstLine(); line >= first;) {\n for (var i = 0; i < chunkSize && line >= first; i++) {\n var curLine = doc.getLine(line--)\n string = string == null ? curLine : curLine + \"\\n\" + string\n }\n chunkSize *= 2\n\n var match = lastMatchIn(string, regexp, endMargin)\n if (match) {\n var before = string.slice(0, match.index).split(\"\\n\"), inside = match[0].split(\"\\n\")\n var startLine = line + before.length, startCh = before[before.length - 1].length\n return {from: Pos(startLine, startCh),\n to: Pos(startLine + inside.length - 1,\n inside.length == 1 ? startCh + inside[0].length : inside[inside.length - 1].length),\n match: match}\n }\n }\n }\n\n var doFold, noFold\n if (String.prototype.normalize) {\n doFold = function(str) { return str.normalize(\"NFD\").toLowerCase() }\n noFold = function(str) { return str.normalize(\"NFD\") }\n } else {\n doFold = function(str) { return str.toLowerCase() }\n noFold = function(str) { return str }\n }\n\n // Maps a position in a case-folded line back to a position in the original line\n // (compensating for codepoints increasing in number during folding)\n function adjustPos(orig, folded, pos, foldFunc) {\n if (orig.length == folded.length) return pos\n for (var min = 0, max = pos + Math.max(0, orig.length - folded.length);;) {\n if (min == max) return min\n var mid = (min + max) >> 1\n var len = foldFunc(orig.slice(0, mid)).length\n if (len == pos) return mid\n else if (len > pos) max = mid\n else min = mid + 1\n }\n }\n\n function searchStringForward(doc, query, start, caseFold) {\n // Empty string would match anything and never progress, so we\n // define it to match nothing instead.\n if (!query.length) return null\n var fold = caseFold ? doFold : noFold\n var lines = fold(query).split(/\\r|\\n\\r?/)\n\n search: for (var line = start.line, ch = start.ch, last = doc.lastLine() + 1 - lines.length; line <= last; line++, ch = 0) {\n var orig = doc.getLine(line).slice(ch), string = fold(orig)\n if (lines.length == 1) {\n var found = string.indexOf(lines[0])\n if (found == -1) continue search\n var start = adjustPos(orig, string, found, fold) + ch\n return {from: Pos(line, adjustPos(orig, string, found, fold) + ch),\n to: Pos(line, adjustPos(orig, string, found + lines[0].length, fold) + ch)}\n } else {\n var cutFrom = string.length - lines[0].length\n if (string.slice(cutFrom) != lines[0]) continue search\n for (var i = 1; i < lines.length - 1; i++)\n if (fold(doc.getLine(line + i)) != lines[i]) continue search\n var end = doc.getLine(line + lines.length - 1), endString = fold(end), lastLine = lines[lines.length - 1]\n if (endString.slice(0, lastLine.length) != lastLine) continue search\n return {from: Pos(line, adjustPos(orig, string, cutFrom, fold) + ch),\n to: Pos(line + lines.length - 1, adjustPos(end, endString, lastLine.length, fold))}\n }\n }\n }\n\n function searchStringBackward(doc, query, start, caseFold) {\n if (!query.length) return null\n var fold = caseFold ? doFold : noFold\n var lines = fold(query).split(/\\r|\\n\\r?/)\n\n search: for (var line = start.line, ch = start.ch, first = doc.firstLine() - 1 + lines.length; line >= first; line--, ch = -1) {\n var orig = doc.getLine(line)\n if (ch > -1) orig = orig.slice(0, ch)\n var string = fold(orig)\n if (lines.length == 1) {\n var found = string.lastIndexOf(lines[0])\n if (found == -1) continue search\n return {from: Pos(line, adjustPos(orig, string, found, fold)),\n to: Pos(line, adjustPos(orig, string, found + lines[0].length, fold))}\n } else {\n var lastLine = lines[lines.length - 1]\n if (string.slice(0, lastLine.length) != lastLine) continue search\n for (var i = 1, start = line - lines.length + 1; i < lines.length - 1; i++)\n if (fold(doc.getLine(start + i)) != lines[i]) continue search\n var top = doc.getLine(line + 1 - lines.length), topString = fold(top)\n if (topString.slice(topString.length - lines[0].length) != lines[0]) continue search\n return {from: Pos(line + 1 - lines.length, adjustPos(top, topString, top.length - lines[0].length, fold)),\n to: Pos(line, adjustPos(orig, string, lastLine.length, fold))}\n }\n }\n }\n\n function SearchCursor(doc, query, pos, options) {\n this.atOccurrence = false\n this.afterEmptyMatch = false\n this.doc = doc\n pos = pos ? doc.clipPos(pos) : Pos(0, 0)\n this.pos = {from: pos, to: pos}\n\n var caseFold\n if (typeof options == \"object\") {\n caseFold = options.caseFold\n } else { // Backwards compat for when caseFold was the 4th argument\n caseFold = options\n options = null\n }\n\n if (typeof query == \"string\") {\n if (caseFold == null) caseFold = false\n this.matches = function(reverse, pos) {\n return (reverse ? searchStringBackward : searchStringForward)(doc, query, pos, caseFold)\n }\n } else {\n query = ensureFlags(query, \"gm\")\n if (!options || options.multiline !== false)\n this.matches = function(reverse, pos) {\n return (reverse ? searchRegexpBackwardMultiline : searchRegexpForwardMultiline)(doc, query, pos)\n }\n else\n this.matches = function(reverse, pos) {\n return (reverse ? searchRegexpBackward : searchRegexpForward)(doc, query, pos)\n }\n }\n }\n\n SearchCursor.prototype = {\n findNext: function() {return this.find(false)},\n findPrevious: function() {return this.find(true)},\n\n find: function(reverse) {\n var head = this.doc.clipPos(reverse ? this.pos.from : this.pos.to);\n if (this.afterEmptyMatch && this.atOccurrence) {\n // do not return the same 0 width match twice\n head = Pos(head.line, head.ch)\n if (reverse) {\n head.ch--;\n if (head.ch < 0) {\n head.line--;\n head.ch = (this.doc.getLine(head.line) || \"\").length;\n }\n } else {\n head.ch++;\n if (head.ch > (this.doc.getLine(head.line) || \"\").length) {\n head.ch = 0;\n head.line++;\n }\n }\n if (CodeMirror.cmpPos(head, this.doc.clipPos(head)) != 0) {\n return this.atOccurrence = false\n }\n }\n var result = this.matches(reverse, head)\n this.afterEmptyMatch = result && CodeMirror.cmpPos(result.from, result.to) == 0\n\n if (result) {\n this.pos = result\n this.atOccurrence = true\n return this.pos.match || true\n } else {\n var end = Pos(reverse ? this.doc.firstLine() : this.doc.lastLine() + 1, 0)\n this.pos = {from: end, to: end}\n return this.atOccurrence = false\n }\n },\n\n from: function() {if (this.atOccurrence) return this.pos.from},\n to: function() {if (this.atOccurrence) return this.pos.to},\n\n replace: function(newText, origin) {\n if (!this.atOccurrence) return\n var lines = CodeMirror.splitLines(newText)\n this.doc.replaceRange(lines, this.pos.from, this.pos.to, origin)\n this.pos.to = Pos(this.pos.from.line + lines.length - 1,\n lines[lines.length - 1].length + (lines.length == 1 ? this.pos.from.ch : 0))\n }\n }\n\n CodeMirror.defineExtension(\"getSearchCursor\", function(query, pos, caseFold) {\n return new SearchCursor(this.doc, query, pos, caseFold)\n })\n CodeMirror.defineDocExtension(\"getSearchCursor\", function(query, pos, caseFold) {\n return new SearchCursor(this, query, pos, caseFold)\n })\n\n CodeMirror.defineExtension(\"selectMatches\", function(query, caseFold) {\n var ranges = []\n var cur = this.getSearchCursor(query, this.getCursor(\"from\"), caseFold)\n while (cur.findNext()) {\n if (CodeMirror.cmpPos(cur.to(), this.getCursor(\"to\")) > 0) break\n ranges.push({anchor: cur.from(), head: cur.to()})\n }\n if (ranges.length)\n this.setSelections(ranges, 0)\n })\n});\n", "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n// A rough approximation of Sublime Text's keybindings\n// Depends on addon/search/searchcursor.js and optionally addon/dialog/dialogs.js\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../lib/codemirror\"), require(\"../addon/search/searchcursor\"), require(\"../addon/edit/matchbrackets\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../lib/codemirror\", \"../addon/search/searchcursor\", \"../addon/edit/matchbrackets\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n var cmds = CodeMirror.commands;\n var Pos = CodeMirror.Pos;\n\n // This is not exactly Sublime's algorithm. I couldn't make heads or tails of that.\n function findPosSubword(doc, start, dir) {\n if (dir < 0 && start.ch == 0) return doc.clipPos(Pos(start.line - 1));\n var line = doc.getLine(start.line);\n if (dir > 0 && start.ch >= line.length) return doc.clipPos(Pos(start.line + 1, 0));\n var state = \"start\", type, startPos = start.ch;\n for (var pos = startPos, e = dir < 0 ? 0 : line.length, i = 0; pos != e; pos += dir, i++) {\n var next = line.charAt(dir < 0 ? pos - 1 : pos);\n var cat = next != \"_\" && CodeMirror.isWordChar(next) ? \"w\" : \"o\";\n if (cat == \"w\" && next.toUpperCase() == next) cat = \"W\";\n if (state == \"start\") {\n if (cat != \"o\") { state = \"in\"; type = cat; }\n else startPos = pos + dir\n } else if (state == \"in\") {\n if (type != cat) {\n if (type == \"w\" && cat == \"W\" && dir < 0) pos--;\n if (type == \"W\" && cat == \"w\" && dir > 0) { // From uppercase to lowercase\n if (pos == startPos + 1) { type = \"w\"; continue; }\n else pos--;\n }\n break;\n }\n }\n }\n return Pos(start.line, pos);\n }\n\n function moveSubword(cm, dir) {\n cm.extendSelectionsBy(function(range) {\n if (cm.display.shift || cm.doc.extend || range.empty())\n return findPosSubword(cm.doc, range.head, dir);\n else\n return dir < 0 ? range.from() : range.to();\n });\n }\n\n cmds.goSubwordLeft = function(cm) { moveSubword(cm, -1); };\n cmds.goSubwordRight = function(cm) { moveSubword(cm, 1); };\n\n cmds.scrollLineUp = function(cm) {\n var info = cm.getScrollInfo();\n if (!cm.somethingSelected()) {\n var visibleBottomLine = cm.lineAtHeight(info.top + info.clientHeight, \"local\");\n if (cm.getCursor().line >= visibleBottomLine)\n cm.execCommand(\"goLineUp\");\n }\n cm.scrollTo(null, info.top - cm.defaultTextHeight());\n };\n cmds.scrollLineDown = function(cm) {\n var info = cm.getScrollInfo();\n if (!cm.somethingSelected()) {\n var visibleTopLine = cm.lineAtHeight(info.top, \"local\")+1;\n if (cm.getCursor().line <= visibleTopLine)\n cm.execCommand(\"goLineDown\");\n }\n cm.scrollTo(null, info.top + cm.defaultTextHeight());\n };\n\n cmds.splitSelectionByLine = function(cm) {\n var ranges = cm.listSelections(), lineRanges = [];\n for (var i = 0; i < ranges.length; i++) {\n var from = ranges[i].from(), to = ranges[i].to();\n for (var line = from.line; line <= to.line; ++line)\n if (!(to.line > from.line && line == to.line && to.ch == 0))\n lineRanges.push({anchor: line == from.line ? from : Pos(line, 0),\n head: line == to.line ? to : Pos(line)});\n }\n cm.setSelections(lineRanges, 0);\n };\n\n cmds.singleSelectionTop = function(cm) {\n var range = cm.listSelections()[0];\n cm.setSelection(range.anchor, range.head, {scroll: false});\n };\n\n cmds.selectLine = function(cm) {\n var ranges = cm.listSelections(), extended = [];\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n extended.push({anchor: Pos(range.from().line, 0),\n head: Pos(range.to().line + 1, 0)});\n }\n cm.setSelections(extended);\n };\n\n function insertLine(cm, above) {\n if (cm.isReadOnly()) return CodeMirror.Pass\n cm.operation(function() {\n var len = cm.listSelections().length, newSelection = [], last = -1;\n for (var i = 0; i < len; i++) {\n var head = cm.listSelections()[i].head;\n if (head.line <= last) continue;\n var at = Pos(head.line + (above ? 0 : 1), 0);\n cm.replaceRange(\"\\n\", at, null, \"+insertLine\");\n cm.indentLine(at.line, null, true);\n newSelection.push({head: at, anchor: at});\n last = head.line + 1;\n }\n cm.setSelections(newSelection);\n });\n cm.execCommand(\"indentAuto\");\n }\n\n cmds.insertLineAfter = function(cm) { return insertLine(cm, false); };\n\n cmds.insertLineBefore = function(cm) { return insertLine(cm, true); };\n\n function wordAt(cm, pos) {\n var start = pos.ch, end = start, line = cm.getLine(pos.line);\n while (start && CodeMirror.isWordChar(line.charAt(start - 1))) --start;\n while (end < line.length && CodeMirror.isWordChar(line.charAt(end))) ++end;\n return {from: Pos(pos.line, start), to: Pos(pos.line, end), word: line.slice(start, end)};\n }\n\n cmds.selectNextOccurrence = function(cm) {\n var from = cm.getCursor(\"from\"), to = cm.getCursor(\"to\");\n var fullWord = cm.state.sublimeFindFullWord == cm.doc.sel;\n if (CodeMirror.cmpPos(from, to) == 0) {\n var word = wordAt(cm, from);\n if (!word.word) return;\n cm.setSelection(word.from, word.to);\n fullWord = true;\n } else {\n var text = cm.getRange(from, to);\n var query = fullWord ? new RegExp(\"\\\\b\" + text + \"\\\\b\") : text;\n var cur = cm.getSearchCursor(query, to);\n var found = cur.findNext();\n if (!found) {\n cur = cm.getSearchCursor(query, Pos(cm.firstLine(), 0));\n found = cur.findNext();\n }\n if (!found || isSelectedRange(cm.listSelections(), cur.from(), cur.to())) return\n cm.addSelection(cur.from(), cur.to());\n }\n if (fullWord)\n cm.state.sublimeFindFullWord = cm.doc.sel;\n };\n\n cmds.skipAndSelectNextOccurrence = function(cm) {\n var prevAnchor = cm.getCursor(\"anchor\"), prevHead = cm.getCursor(\"head\");\n cmds.selectNextOccurrence(cm);\n if (CodeMirror.cmpPos(prevAnchor, prevHead) != 0) {\n cm.doc.setSelections(cm.doc.listSelections()\n .filter(function (sel) {\n return sel.anchor != prevAnchor || sel.head != prevHead;\n }));\n }\n }\n\n function addCursorToSelection(cm, dir) {\n var ranges = cm.listSelections(), newRanges = [];\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n var newAnchor = cm.findPosV(\n range.anchor, dir, \"line\", range.anchor.goalColumn);\n var newHead = cm.findPosV(\n range.head, dir, \"line\", range.head.goalColumn);\n newAnchor.goalColumn = range.anchor.goalColumn != null ?\n range.anchor.goalColumn : cm.cursorCoords(range.anchor, \"div\").left;\n newHead.goalColumn = range.head.goalColumn != null ?\n range.head.goalColumn : cm.cursorCoords(range.head, \"div\").left;\n var newRange = {anchor: newAnchor, head: newHead};\n newRanges.push(range);\n newRanges.push(newRange);\n }\n cm.setSelections(newRanges);\n }\n cmds.addCursorToPrevLine = function(cm) { addCursorToSelection(cm, -1); };\n cmds.addCursorToNextLine = function(cm) { addCursorToSelection(cm, 1); };\n\n function isSelectedRange(ranges, from, to) {\n for (var i = 0; i < ranges.length; i++)\n if (CodeMirror.cmpPos(ranges[i].from(), from) == 0 &&\n CodeMirror.cmpPos(ranges[i].to(), to) == 0) return true\n return false\n }\n\n var mirror = \"(){}[]\";\n function selectBetweenBrackets(cm) {\n var ranges = cm.listSelections(), newRanges = []\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i], pos = range.head, opening = cm.scanForBracket(pos, -1);\n if (!opening) return false;\n for (;;) {\n var closing = cm.scanForBracket(pos, 1);\n if (!closing) return false;\n if (closing.ch == mirror.charAt(mirror.indexOf(opening.ch) + 1)) {\n var startPos = Pos(opening.pos.line, opening.pos.ch + 1);\n if (CodeMirror.cmpPos(startPos, range.from()) == 0 &&\n CodeMirror.cmpPos(closing.pos, range.to()) == 0) {\n opening = cm.scanForBracket(opening.pos, -1);\n if (!opening) return false;\n } else {\n newRanges.push({anchor: startPos, head: closing.pos});\n break;\n }\n }\n pos = Pos(closing.pos.line, closing.pos.ch + 1);\n }\n }\n cm.setSelections(newRanges);\n return true;\n }\n\n cmds.selectScope = function(cm) {\n selectBetweenBrackets(cm) || cm.execCommand(\"selectAll\");\n };\n cmds.selectBetweenBrackets = function(cm) {\n if (!selectBetweenBrackets(cm)) return CodeMirror.Pass;\n };\n\n function puncType(type) {\n return !type ? null : /\\bpunctuation\\b/.test(type) ? type : undefined\n }\n\n cmds.goToBracket = function(cm) {\n cm.extendSelectionsBy(function(range) {\n var next = cm.scanForBracket(range.head, 1, puncType(cm.getTokenTypeAt(range.head)));\n if (next && CodeMirror.cmpPos(next.pos, range.head) != 0) return next.pos;\n var prev = cm.scanForBracket(range.head, -1, puncType(cm.getTokenTypeAt(Pos(range.head.line, range.head.ch + 1))));\n return prev && Pos(prev.pos.line, prev.pos.ch + 1) || range.head;\n });\n };\n\n cmds.swapLineUp = function(cm) {\n if (cm.isReadOnly()) return CodeMirror.Pass\n var ranges = cm.listSelections(), linesToMove = [], at = cm.firstLine() - 1, newSels = [];\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i], from = range.from().line - 1, to = range.to().line;\n newSels.push({anchor: Pos(range.anchor.line - 1, range.anchor.ch),\n head: Pos(range.head.line - 1, range.head.ch)});\n if (range.to().ch == 0 && !range.empty()) --to;\n if (from > at) linesToMove.push(from, to);\n else if (linesToMove.length) linesToMove[linesToMove.length - 1] = to;\n at = to;\n }\n cm.operation(function() {\n for (var i = 0; i < linesToMove.length; i += 2) {\n var from = linesToMove[i], to = linesToMove[i + 1];\n var line = cm.getLine(from);\n cm.replaceRange(\"\", Pos(from, 0), Pos(from + 1, 0), \"+swapLine\");\n if (to > cm.lastLine())\n cm.replaceRange(\"\\n\" + line, Pos(cm.lastLine()), null, \"+swapLine\");\n else\n cm.replaceRange(line + \"\\n\", Pos(to, 0), null, \"+swapLine\");\n }\n cm.setSelections(newSels);\n cm.scrollIntoView();\n });\n };\n\n cmds.swapLineDown = function(cm) {\n if (cm.isReadOnly()) return CodeMirror.Pass\n var ranges = cm.listSelections(), linesToMove = [], at = cm.lastLine() + 1;\n for (var i = ranges.length - 1; i >= 0; i--) {\n var range = ranges[i], from = range.to().line + 1, to = range.from().line;\n if (range.to().ch == 0 && !range.empty()) from--;\n if (from < at) linesToMove.push(from, to);\n else if (linesToMove.length) linesToMove[linesToMove.length - 1] = to;\n at = to;\n }\n cm.operation(function() {\n for (var i = linesToMove.length - 2; i >= 0; i -= 2) {\n var from = linesToMove[i], to = linesToMove[i + 1];\n var line = cm.getLine(from);\n if (from == cm.lastLine())\n cm.replaceRange(\"\", Pos(from - 1), Pos(from), \"+swapLine\");\n else\n cm.replaceRange(\"\", Pos(from, 0), Pos(from + 1, 0), \"+swapLine\");\n cm.replaceRange(line + \"\\n\", Pos(to, 0), null, \"+swapLine\");\n }\n cm.scrollIntoView();\n });\n };\n\n cmds.toggleCommentIndented = function(cm) {\n cm.toggleComment({ indent: true });\n }\n\n cmds.joinLines = function(cm) {\n var ranges = cm.listSelections(), joined = [];\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i], from = range.from();\n var start = from.line, end = range.to().line;\n while (i < ranges.length - 1 && ranges[i + 1].from().line == end)\n end = ranges[++i].to().line;\n joined.push({start: start, end: end, anchor: !range.empty() && from});\n }\n cm.operation(function() {\n var offset = 0, ranges = [];\n for (var i = 0; i < joined.length; i++) {\n var obj = joined[i];\n var anchor = obj.anchor && Pos(obj.anchor.line - offset, obj.anchor.ch), head;\n for (var line = obj.start; line <= obj.end; line++) {\n var actual = line - offset;\n if (line == obj.end) head = Pos(actual, cm.getLine(actual).length + 1);\n if (actual < cm.lastLine()) {\n cm.replaceRange(\" \", Pos(actual), Pos(actual + 1, /^\\s*/.exec(cm.getLine(actual + 1))[0].length));\n ++offset;\n }\n }\n ranges.push({anchor: anchor || head, head: head});\n }\n cm.setSelections(ranges, 0);\n });\n };\n\n cmds.duplicateLine = function(cm) {\n cm.operation(function() {\n var rangeCount = cm.listSelections().length;\n for (var i = 0; i < rangeCount; i++) {\n var range = cm.listSelections()[i];\n if (range.empty())\n cm.replaceRange(cm.getLine(range.head.line) + \"\\n\", Pos(range.head.line, 0));\n else\n cm.replaceRange(cm.getRange(range.from(), range.to()), range.from());\n }\n cm.scrollIntoView();\n });\n };\n\n\n function sortLines(cm, caseSensitive, direction) {\n if (cm.isReadOnly()) return CodeMirror.Pass\n var ranges = cm.listSelections(), toSort = [], selected;\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n if (range.empty()) continue;\n var from = range.from().line, to = range.to().line;\n while (i < ranges.length - 1 && ranges[i + 1].from().line == to)\n to = ranges[++i].to().line;\n if (!ranges[i].to().ch) to--;\n toSort.push(from, to);\n }\n if (toSort.length) selected = true;\n else toSort.push(cm.firstLine(), cm.lastLine());\n\n cm.operation(function() {\n var ranges = [];\n for (var i = 0; i < toSort.length; i += 2) {\n var from = toSort[i], to = toSort[i + 1];\n var start = Pos(from, 0), end = Pos(to);\n var lines = cm.getRange(start, end, false);\n if (caseSensitive)\n lines.sort(function(a, b) { return a < b ? -direction : a == b ? 0 : direction; });\n else\n lines.sort(function(a, b) {\n var au = a.toUpperCase(), bu = b.toUpperCase();\n if (au != bu) { a = au; b = bu; }\n return a < b ? -direction : a == b ? 0 : direction;\n });\n cm.replaceRange(lines, start, end);\n if (selected) ranges.push({anchor: start, head: Pos(to + 1, 0)});\n }\n if (selected) cm.setSelections(ranges, 0);\n });\n }\n\n cmds.sortLines = function(cm) { sortLines(cm, true, 1); };\n cmds.reverseSortLines = function(cm) { sortLines(cm, true, -1); };\n cmds.sortLinesInsensitive = function(cm) { sortLines(cm, false, 1); };\n cmds.reverseSortLinesInsensitive = function(cm) { sortLines(cm, false, -1); };\n\n cmds.nextBookmark = function(cm) {\n var marks = cm.state.sublimeBookmarks;\n if (marks) while (marks.length) {\n var current = marks.shift();\n var found = current.find();\n if (found) {\n marks.push(current);\n return cm.setSelection(found.from, found.to);\n }\n }\n };\n\n cmds.prevBookmark = function(cm) {\n var marks = cm.state.sublimeBookmarks;\n if (marks) while (marks.length) {\n marks.unshift(marks.pop());\n var found = marks[marks.length - 1].find();\n if (!found)\n marks.pop();\n else\n return cm.setSelection(found.from, found.to);\n }\n };\n\n cmds.toggleBookmark = function(cm) {\n var ranges = cm.listSelections();\n var marks = cm.state.sublimeBookmarks || (cm.state.sublimeBookmarks = []);\n for (var i = 0; i < ranges.length; i++) {\n var from = ranges[i].from(), to = ranges[i].to();\n var found = ranges[i].empty() ? cm.findMarksAt(from) : cm.findMarks(from, to);\n for (var j = 0; j < found.length; j++) {\n if (found[j].sublimeBookmark) {\n found[j].clear();\n for (var k = 0; k < marks.length; k++)\n if (marks[k] == found[j])\n marks.splice(k--, 1);\n break;\n }\n }\n if (j == found.length)\n marks.push(cm.markText(from, to, {sublimeBookmark: true, clearWhenEmpty: false}));\n }\n };\n\n cmds.clearBookmarks = function(cm) {\n var marks = cm.state.sublimeBookmarks;\n if (marks) for (var i = 0; i < marks.length; i++) marks[i].clear();\n marks.length = 0;\n };\n\n cmds.selectBookmarks = function(cm) {\n var marks = cm.state.sublimeBookmarks, ranges = [];\n if (marks) for (var i = 0; i < marks.length; i++) {\n var found = marks[i].find();\n if (!found)\n marks.splice(i--, 0);\n else\n ranges.push({anchor: found.from, head: found.to});\n }\n if (ranges.length)\n cm.setSelections(ranges, 0);\n };\n\n function modifyWordOrSelection(cm, mod) {\n cm.operation(function() {\n var ranges = cm.listSelections(), indices = [], replacements = [];\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n if (range.empty()) { indices.push(i); replacements.push(\"\"); }\n else replacements.push(mod(cm.getRange(range.from(), range.to())));\n }\n cm.replaceSelections(replacements, \"around\", \"case\");\n for (var i = indices.length - 1, at; i >= 0; i--) {\n var range = ranges[indices[i]];\n if (at && CodeMirror.cmpPos(range.head, at) > 0) continue;\n var word = wordAt(cm, range.head);\n at = word.from;\n cm.replaceRange(mod(word.word), word.from, word.to);\n }\n });\n }\n\n cmds.smartBackspace = function(cm) {\n if (cm.somethingSelected()) return CodeMirror.Pass;\n\n cm.operation(function() {\n var cursors = cm.listSelections();\n var indentUnit = cm.getOption(\"indentUnit\");\n\n for (var i = cursors.length - 1; i >= 0; i--) {\n var cursor = cursors[i].head;\n var toStartOfLine = cm.getRange({line: cursor.line, ch: 0}, cursor);\n var column = CodeMirror.countColumn(toStartOfLine, null, cm.getOption(\"tabSize\"));\n\n // Delete by one character by default\n var deletePos = cm.findPosH(cursor, -1, \"char\", false);\n\n if (toStartOfLine && !/\\S/.test(toStartOfLine) && column % indentUnit == 0) {\n var prevIndent = new Pos(cursor.line,\n CodeMirror.findColumn(toStartOfLine, column - indentUnit, indentUnit));\n\n // Smart delete only if we found a valid prevIndent location\n if (prevIndent.ch != cursor.ch) deletePos = prevIndent;\n }\n\n cm.replaceRange(\"\", deletePos, cursor, \"+delete\");\n }\n });\n };\n\n cmds.delLineRight = function(cm) {\n cm.operation(function() {\n var ranges = cm.listSelections();\n for (var i = ranges.length - 1; i >= 0; i--)\n cm.replaceRange(\"\", ranges[i].anchor, Pos(ranges[i].to().line), \"+delete\");\n cm.scrollIntoView();\n });\n };\n\n cmds.upcaseAtCursor = function(cm) {\n modifyWordOrSelection(cm, function(str) { return str.toUpperCase(); });\n };\n cmds.downcaseAtCursor = function(cm) {\n modifyWordOrSelection(cm, function(str) { return str.toLowerCase(); });\n };\n\n cmds.setSublimeMark = function(cm) {\n if (cm.state.sublimeMark) cm.state.sublimeMark.clear();\n cm.state.sublimeMark = cm.setBookmark(cm.getCursor());\n };\n cmds.selectToSublimeMark = function(cm) {\n var found = cm.state.sublimeMark && cm.state.sublimeMark.find();\n if (found) cm.setSelection(cm.getCursor(), found);\n };\n cmds.deleteToSublimeMark = function(cm) {\n var found = cm.state.sublimeMark && cm.state.sublimeMark.find();\n if (found) {\n var from = cm.getCursor(), to = found;\n if (CodeMirror.cmpPos(from, to) > 0) { var tmp = to; to = from; from = tmp; }\n cm.state.sublimeKilled = cm.getRange(from, to);\n cm.replaceRange(\"\", from, to);\n }\n };\n cmds.swapWithSublimeMark = function(cm) {\n var found = cm.state.sublimeMark && cm.state.sublimeMark.find();\n if (found) {\n cm.state.sublimeMark.clear();\n cm.state.sublimeMark = cm.setBookmark(cm.getCursor());\n cm.setCursor(found);\n }\n };\n cmds.sublimeYank = function(cm) {\n if (cm.state.sublimeKilled != null)\n cm.replaceSelection(cm.state.sublimeKilled, null, \"paste\");\n };\n\n cmds.showInCenter = function(cm) {\n var pos = cm.cursorCoords(null, \"local\");\n cm.scrollTo(null, (pos.top + pos.bottom) / 2 - cm.getScrollInfo().clientHeight / 2);\n };\n\n function getTarget(cm) {\n var from = cm.getCursor(\"from\"), to = cm.getCursor(\"to\");\n if (CodeMirror.cmpPos(from, to) == 0) {\n var word = wordAt(cm, from);\n if (!word.word) return;\n from = word.from;\n to = word.to;\n }\n return {from: from, to: to, query: cm.getRange(from, to), word: word};\n }\n\n function findAndGoTo(cm, forward) {\n var target = getTarget(cm);\n if (!target) return;\n var query = target.query;\n var cur = cm.getSearchCursor(query, forward ? target.to : target.from);\n\n if (forward ? cur.findNext() : cur.findPrevious()) {\n cm.setSelection(cur.from(), cur.to());\n } else {\n cur = cm.getSearchCursor(query, forward ? Pos(cm.firstLine(), 0)\n : cm.clipPos(Pos(cm.lastLine())));\n if (forward ? cur.findNext() : cur.findPrevious())\n cm.setSelection(cur.from(), cur.to());\n else if (target.word)\n cm.setSelection(target.from, target.to);\n }\n };\n cmds.findUnder = function(cm) { findAndGoTo(cm, true); };\n cmds.findUnderPrevious = function(cm) { findAndGoTo(cm,false); };\n cmds.findAllUnder = function(cm) {\n var target = getTarget(cm);\n if (!target) return;\n var cur = cm.getSearchCursor(target.query);\n var matches = [];\n var primaryIndex = -1;\n while (cur.findNext()) {\n matches.push({anchor: cur.from(), head: cur.to()});\n if (cur.from().line <= target.from.line && cur.from().ch <= target.from.ch)\n primaryIndex++;\n }\n cm.setSelections(matches, primaryIndex);\n };\n\n\n var keyMap = CodeMirror.keyMap;\n keyMap.macSublime = {\n \"Cmd-Left\": \"goLineStartSmart\",\n \"Shift-Tab\": \"indentLess\",\n \"Shift-Ctrl-K\": \"deleteLine\",\n \"Alt-Q\": \"wrapLines\",\n \"Ctrl-Left\": \"goSubwordLeft\",\n \"Ctrl-Right\": \"goSubwordRight\",\n \"Ctrl-Alt-Up\": \"scrollLineUp\",\n \"Ctrl-Alt-Down\": \"scrollLineDown\",\n \"Cmd-L\": \"selectLine\",\n \"Shift-Cmd-L\": \"splitSelectionByLine\",\n \"Esc\": \"singleSelectionTop\",\n \"Cmd-Enter\": \"insertLineAfter\",\n \"Shift-Cmd-Enter\": \"insertLineBefore\",\n \"Cmd-D\": \"selectNextOccurrence\",\n \"Shift-Cmd-Space\": \"selectScope\",\n \"Shift-Cmd-M\": \"selectBetweenBrackets\",\n \"Cmd-M\": \"goToBracket\",\n \"Cmd-Ctrl-Up\": \"swapLineUp\",\n \"Cmd-Ctrl-Down\": \"swapLineDown\",\n \"Cmd-/\": \"toggleCommentIndented\",\n \"Cmd-J\": \"joinLines\",\n \"Shift-Cmd-D\": \"duplicateLine\",\n \"F5\": \"sortLines\",\n \"Shift-F5\": \"reverseSortLines\",\n \"Cmd-F5\": \"sortLinesInsensitive\",\n \"Shift-Cmd-F5\": \"reverseSortLinesInsensitive\",\n \"F2\": \"nextBookmark\",\n \"Shift-F2\": \"prevBookmark\",\n \"Cmd-F2\": \"toggleBookmark\",\n \"Shift-Cmd-F2\": \"clearBookmarks\",\n \"Alt-F2\": \"selectBookmarks\",\n \"Backspace\": \"smartBackspace\",\n \"Cmd-K Cmd-D\": \"skipAndSelectNextOccurrence\",\n \"Cmd-K Cmd-K\": \"delLineRight\",\n \"Cmd-K Cmd-U\": \"upcaseAtCursor\",\n \"Cmd-K Cmd-L\": \"downcaseAtCursor\",\n \"Cmd-K Cmd-Space\": \"setSublimeMark\",\n \"Cmd-K Cmd-A\": \"selectToSublimeMark\",\n \"Cmd-K Cmd-W\": \"deleteToSublimeMark\",\n \"Cmd-K Cmd-X\": \"swapWithSublimeMark\",\n \"Cmd-K Cmd-Y\": \"sublimeYank\",\n \"Cmd-K Cmd-C\": \"showInCenter\",\n \"Cmd-K Cmd-G\": \"clearBookmarks\",\n \"Cmd-K Cmd-Backspace\": \"delLineLeft\",\n \"Cmd-K Cmd-1\": \"foldAll\",\n \"Cmd-K Cmd-0\": \"unfoldAll\",\n \"Cmd-K Cmd-J\": \"unfoldAll\",\n \"Ctrl-Shift-Up\": \"addCursorToPrevLine\",\n \"Ctrl-Shift-Down\": \"addCursorToNextLine\",\n \"Cmd-F3\": \"findUnder\",\n \"Shift-Cmd-F3\": \"findUnderPrevious\",\n \"Alt-F3\": \"findAllUnder\",\n \"Shift-Cmd-[\": \"fold\",\n \"Shift-Cmd-]\": \"unfold\",\n \"Cmd-I\": \"findIncremental\",\n \"Shift-Cmd-I\": \"findIncrementalReverse\",\n \"Cmd-H\": \"replace\",\n \"F3\": \"findNext\",\n \"Shift-F3\": \"findPrev\",\n \"fallthrough\": \"macDefault\"\n };\n CodeMirror.normalizeKeyMap(keyMap.macSublime);\n\n keyMap.pcSublime = {\n \"Shift-Tab\": \"indentLess\",\n \"Shift-Ctrl-K\": \"deleteLine\",\n \"Alt-Q\": \"wrapLines\",\n \"Ctrl-T\": \"transposeChars\",\n \"Alt-Left\": \"goSubwordLeft\",\n \"Alt-Right\": \"goSubwordRight\",\n \"Ctrl-Up\": \"scrollLineUp\",\n \"Ctrl-Down\": \"scrollLineDown\",\n \"Ctrl-L\": \"selectLine\",\n \"Shift-Ctrl-L\": \"splitSelectionByLine\",\n \"Esc\": \"singleSelectionTop\",\n \"Ctrl-Enter\": \"insertLineAfter\",\n \"Shift-Ctrl-Enter\": \"insertLineBefore\",\n \"Ctrl-D\": \"selectNextOccurrence\",\n \"Shift-Ctrl-Space\": \"selectScope\",\n \"Shift-Ctrl-M\": \"selectBetweenBrackets\",\n \"Ctrl-M\": \"goToBracket\",\n \"Shift-Ctrl-Up\": \"swapLineUp\",\n \"Shift-Ctrl-Down\": \"swapLineDown\",\n \"Ctrl-/\": \"toggleCommentIndented\",\n \"Ctrl-J\": \"joinLines\",\n \"Shift-Ctrl-D\": \"duplicateLine\",\n \"F9\": \"sortLines\",\n \"Shift-F9\": \"reverseSortLines\",\n \"Ctrl-F9\": \"sortLinesInsensitive\",\n \"Shift-Ctrl-F9\": \"reverseSortLinesInsensitive\",\n \"F2\": \"nextBookmark\",\n \"Shift-F2\": \"prevBookmark\",\n \"Ctrl-F2\": \"toggleBookmark\",\n \"Shift-Ctrl-F2\": \"clearBookmarks\",\n \"Alt-F2\": \"selectBookmarks\",\n \"Backspace\": \"smartBackspace\",\n \"Ctrl-K Ctrl-D\": \"skipAndSelectNextOccurrence\",\n \"Ctrl-K Ctrl-K\": \"delLineRight\",\n \"Ctrl-K Ctrl-U\": \"upcaseAtCursor\",\n \"Ctrl-K Ctrl-L\": \"downcaseAtCursor\",\n \"Ctrl-K Ctrl-Space\": \"setSublimeMark\",\n \"Ctrl-K Ctrl-A\": \"selectToSublimeMark\",\n \"Ctrl-K Ctrl-W\": \"deleteToSublimeMark\",\n \"Ctrl-K Ctrl-X\": \"swapWithSublimeMark\",\n \"Ctrl-K Ctrl-Y\": \"sublimeYank\",\n \"Ctrl-K Ctrl-C\": \"showInCenter\",\n \"Ctrl-K Ctrl-G\": \"clearBookmarks\",\n \"Ctrl-K Ctrl-Backspace\": \"delLineLeft\",\n \"Ctrl-K Ctrl-1\": \"foldAll\",\n \"Ctrl-K Ctrl-0\": \"unfoldAll\",\n \"Ctrl-K Ctrl-J\": \"unfoldAll\",\n \"Ctrl-Alt-Up\": \"addCursorToPrevLine\",\n \"Ctrl-Alt-Down\": \"addCursorToNextLine\",\n \"Ctrl-F3\": \"findUnder\",\n \"Shift-Ctrl-F3\": \"findUnderPrevious\",\n \"Alt-F3\": \"findAllUnder\",\n \"Shift-Ctrl-[\": \"fold\",\n \"Shift-Ctrl-]\": \"unfold\",\n \"Ctrl-I\": \"findIncremental\",\n \"Shift-Ctrl-I\": \"findIncrementalReverse\",\n \"Ctrl-H\": \"replace\",\n \"F3\": \"findNext\",\n \"Shift-F3\": \"findPrev\",\n \"fallthrough\": \"pcDefault\"\n };\n CodeMirror.normalizeKeyMap(keyMap.pcSublime);\n\n var mac = keyMap.default == keyMap.macDefault;\n keyMap.sublime = mac ? keyMap.macSublime : keyMap.pcSublime;\n});\n", "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n function wordRegexp(words) {\n return new RegExp(\"^((\" + words.join(\")|(\") + \"))\\\\b\");\n }\n\n var wordOperators = wordRegexp([\"and\", \"or\", \"not\", \"is\"]);\n var commonKeywords = [\"as\", \"assert\", \"break\", \"class\", \"continue\",\n \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\",\n \"for\", \"from\", \"global\", \"if\", \"import\",\n \"lambda\", \"pass\", \"raise\", \"return\",\n \"try\", \"while\", \"with\", \"yield\", \"in\", \"False\", \"True\"];\n var commonBuiltins = [\"abs\", \"all\", \"any\", \"bin\", \"bool\", \"bytearray\", \"callable\", \"chr\",\n \"classmethod\", \"compile\", \"complex\", \"delattr\", \"dict\", \"dir\", \"divmod\",\n \"enumerate\", \"eval\", \"filter\", \"float\", \"format\", \"frozenset\",\n \"getattr\", \"globals\", \"hasattr\", \"hash\", \"help\", \"hex\", \"id\",\n \"input\", \"int\", \"isinstance\", \"issubclass\", \"iter\", \"len\",\n \"list\", \"locals\", \"map\", \"max\", \"memoryview\", \"min\", \"next\",\n \"object\", \"oct\", \"open\", \"ord\", \"pow\", \"property\", \"range\",\n \"repr\", \"reversed\", \"round\", \"set\", \"setattr\", \"slice\",\n \"sorted\", \"staticmethod\", \"str\", \"sum\", \"super\", \"tuple\",\n \"type\", \"vars\", \"zip\", \"__import__\", \"NotImplemented\",\n \"Ellipsis\", \"__debug__\"];\n CodeMirror.registerHelper(\"hintWords\", \"python\", commonKeywords.concat(commonBuiltins).concat([\"exec\", \"print\"]));\n\n function top(state) {\n return state.scopes[state.scopes.length - 1];\n }\n\n CodeMirror.defineMode(\"python\", function(conf, parserConf) {\n var ERRORCLASS = \"error\";\n\n var delimiters = parserConf.delimiters || parserConf.singleDelimiters || /^[\\(\\)\\[\\]\\{\\}@,:`=;\\.\\\\]/;\n // (Backwards-compatibility with old, cumbersome config system)\n var operators = [parserConf.singleOperators, parserConf.doubleOperators, parserConf.doubleDelimiters, parserConf.tripleDelimiters,\n parserConf.operators || /^([-+*/%\\/&|^]=?|[<>=]+|\\/\\/=?|\\*\\*=?|!=|[~!@]|\\.\\.\\.)/]\n for (var i = 0; i < operators.length; i++) if (!operators[i]) operators.splice(i--, 1)\n\n var hangingIndent = parserConf.hangingIndent || conf.indentUnit;\n\n var myKeywords = commonKeywords, myBuiltins = commonBuiltins;\n if (parserConf.extra_keywords != undefined)\n myKeywords = myKeywords.concat(parserConf.extra_keywords);\n\n if (parserConf.extra_builtins != undefined)\n myBuiltins = myBuiltins.concat(parserConf.extra_builtins);\n\n var py3 = !(parserConf.version && Number(parserConf.version) < 3)\n if (py3) {\n // since http://legacy.python.org/dev/peps/pep-0465/ @ is also an operator\n var identifiers = parserConf.identifiers|| /^[_A-Za-z\\u00A1-\\uFFFF][_A-Za-z0-9\\u00A1-\\uFFFF]*/;\n myKeywords = myKeywords.concat([\"nonlocal\", \"None\", \"aiter\", \"anext\", \"async\", \"await\", \"breakpoint\", \"match\", \"case\"]);\n myBuiltins = myBuiltins.concat([\"ascii\", \"bytes\", \"exec\", \"print\"]);\n var stringPrefixes = new RegExp(\"^(([rbuf]|(br)|(rb)|(fr)|(rf))?('{3}|\\\"{3}|['\\\"]))\", \"i\");\n } else {\n var identifiers = parserConf.identifiers|| /^[_A-Za-z][_A-Za-z0-9]*/;\n myKeywords = myKeywords.concat([\"exec\", \"print\"]);\n myBuiltins = myBuiltins.concat([\"apply\", \"basestring\", \"buffer\", \"cmp\", \"coerce\", \"execfile\",\n \"file\", \"intern\", \"long\", \"raw_input\", \"reduce\", \"reload\",\n \"unichr\", \"unicode\", \"xrange\", \"None\"]);\n var stringPrefixes = new RegExp(\"^(([rubf]|(ur)|(br))?('{3}|\\\"{3}|['\\\"]))\", \"i\");\n }\n var keywords = wordRegexp(myKeywords);\n var builtins = wordRegexp(myBuiltins);\n\n // tokenizers\n function tokenBase(stream, state) {\n var sol = stream.sol() && state.lastToken != \"\\\\\"\n if (sol) state.indent = stream.indentation()\n // Handle scope changes\n if (sol && top(state).type == \"py\") {\n var scopeOffset = top(state).offset;\n if (stream.eatSpace()) {\n var lineOffset = stream.indentation();\n if (lineOffset > scopeOffset)\n pushPyScope(state);\n else if (lineOffset < scopeOffset && dedent(stream, state) && stream.peek() != \"#\")\n state.errorToken = true;\n return null;\n } else {\n var style = tokenBaseInner(stream, state);\n if (scopeOffset > 0 && dedent(stream, state))\n style += \" \" + ERRORCLASS;\n return style;\n }\n }\n return tokenBaseInner(stream, state);\n }\n\n function tokenBaseInner(stream, state, inFormat) {\n if (stream.eatSpace()) return null;\n\n // Handle Comments\n if (!inFormat && stream.match(/^#.*/)) return \"comment\";\n\n // Handle Number Literals\n if (stream.match(/^[0-9\\.]/, false)) {\n var floatLiteral = false;\n // Floats\n if (stream.match(/^[\\d_]*\\.\\d+(e[\\+\\-]?\\d+)?/i)) { floatLiteral = true; }\n if (stream.match(/^[\\d_]+\\.\\d*/)) { floatLiteral = true; }\n if (stream.match(/^\\.\\d+/)) { floatLiteral = true; }\n if (floatLiteral) {\n // Float literals may be \"imaginary\"\n stream.eat(/J/i);\n return \"number\";\n }\n // Integers\n var intLiteral = false;\n // Hex\n if (stream.match(/^0x[0-9a-f_]+/i)) intLiteral = true;\n // Binary\n if (stream.match(/^0b[01_]+/i)) intLiteral = true;\n // Octal\n if (stream.match(/^0o[0-7_]+/i)) intLiteral = true;\n // Decimal\n if (stream.match(/^[1-9][\\d_]*(e[\\+\\-]?[\\d_]+)?/)) {\n // Decimal literals may be \"imaginary\"\n stream.eat(/J/i);\n // TODO - Can you have imaginary longs?\n intLiteral = true;\n }\n // Zero by itself with no other piece of number.\n if (stream.match(/^0(?![\\dx])/i)) intLiteral = true;\n if (intLiteral) {\n // Integer literals may be \"long\"\n stream.eat(/L/i);\n return \"number\";\n }\n }\n\n // Handle Strings\n if (stream.match(stringPrefixes)) {\n var isFmtString = stream.current().toLowerCase().indexOf('f') !== -1;\n if (!isFmtString) {\n state.tokenize = tokenStringFactory(stream.current(), state.tokenize);\n return state.tokenize(stream, state);\n } else {\n state.tokenize = formatStringFactory(stream.current(), state.tokenize);\n return state.tokenize(stream, state);\n }\n }\n\n for (var i = 0; i < operators.length; i++)\n if (stream.match(operators[i])) return \"operator\"\n\n if (stream.match(delimiters)) return \"punctuation\";\n\n if (state.lastToken == \".\" && stream.match(identifiers))\n return \"property\";\n\n if (stream.match(keywords) || stream.match(wordOperators))\n return \"keyword\";\n\n if (stream.match(builtins))\n return \"builtin\";\n\n if (stream.match(/^(self|cls)\\b/))\n return \"variable-2\";\n\n if (stream.match(identifiers)) {\n if (state.lastToken == \"def\" || state.lastToken == \"class\")\n return \"def\";\n return \"variable\";\n }\n\n // Handle non-detected items\n stream.next();\n return inFormat ? null :ERRORCLASS;\n }\n\n function formatStringFactory(delimiter, tokenOuter) {\n while (\"rubf\".indexOf(delimiter.charAt(0).toLowerCase()) >= 0)\n delimiter = delimiter.substr(1);\n\n var singleline = delimiter.length == 1;\n var OUTCLASS = \"string\";\n\n function tokenNestedExpr(depth) {\n return function(stream, state) {\n var inner = tokenBaseInner(stream, state, true)\n if (inner == \"punctuation\") {\n if (stream.current() == \"{\") {\n state.tokenize = tokenNestedExpr(depth + 1)\n } else if (stream.current() == \"}\") {\n if (depth > 1) state.tokenize = tokenNestedExpr(depth - 1)\n else state.tokenize = tokenString\n }\n }\n return inner\n }\n }\n\n function tokenString(stream, state) {\n while (!stream.eol()) {\n stream.eatWhile(/[^'\"\\{\\}\\\\]/);\n if (stream.eat(\"\\\\\")) {\n stream.next();\n if (singleline && stream.eol())\n return OUTCLASS;\n } else if (stream.match(delimiter)) {\n state.tokenize = tokenOuter;\n return OUTCLASS;\n } else if (stream.match('{{')) {\n // ignore {{ in f-str\n return OUTCLASS;\n } else if (stream.match('{', false)) {\n // switch to nested mode\n state.tokenize = tokenNestedExpr(0)\n if (stream.current()) return OUTCLASS;\n else return state.tokenize(stream, state)\n } else if (stream.match('}}')) {\n return OUTCLASS;\n } else if (stream.match('}')) {\n // single } in f-string is an error\n return ERRORCLASS;\n } else {\n stream.eat(/['\"]/);\n }\n }\n if (singleline) {\n if (parserConf.singleLineStringErrors)\n return ERRORCLASS;\n else\n state.tokenize = tokenOuter;\n }\n return OUTCLASS;\n }\n tokenString.isString = true;\n return tokenString;\n }\n\n function tokenStringFactory(delimiter, tokenOuter) {\n while (\"rubf\".indexOf(delimiter.charAt(0).toLowerCase()) >= 0)\n delimiter = delimiter.substr(1);\n\n var singleline = delimiter.length == 1;\n var OUTCLASS = \"string\";\n\n function tokenString(stream, state) {\n while (!stream.eol()) {\n stream.eatWhile(/[^'\"\\\\]/);\n if (stream.eat(\"\\\\\")) {\n stream.next();\n if (singleline && stream.eol())\n return OUTCLASS;\n } else if (stream.match(delimiter)) {\n state.tokenize = tokenOuter;\n return OUTCLASS;\n } else {\n stream.eat(/['\"]/);\n }\n }\n if (singleline) {\n if (parserConf.singleLineStringErrors)\n return ERRORCLASS;\n else\n state.tokenize = tokenOuter;\n }\n return OUTCLASS;\n }\n tokenString.isString = true;\n return tokenString;\n }\n\n function pushPyScope(state) {\n while (top(state).type != \"py\") state.scopes.pop()\n state.scopes.push({offset: top(state).offset + conf.indentUnit,\n type: \"py\",\n align: null})\n }\n\n function pushBracketScope(stream, state, type) {\n var align = stream.match(/^[\\s\\[\\{\\(]*(?:#|$)/, false) ? null : stream.column() + 1\n state.scopes.push({offset: state.indent + hangingIndent,\n type: type,\n align: align})\n }\n\n function dedent(stream, state) {\n var indented = stream.indentation();\n while (state.scopes.length > 1 && top(state).offset > indented) {\n if (top(state).type != \"py\") return true;\n state.scopes.pop();\n }\n return top(state).offset != indented;\n }\n\n function tokenLexer(stream, state) {\n if (stream.sol()) {\n state.beginningOfLine = true;\n state.dedent = false;\n }\n\n var style = state.tokenize(stream, state);\n var current = stream.current();\n\n // Handle decorators\n if (state.beginningOfLine && current == \"@\")\n return stream.match(identifiers, false) ? \"meta\" : py3 ? \"operator\" : ERRORCLASS;\n\n if (/\\S/.test(current)) state.beginningOfLine = false;\n\n if ((style == \"variable\" || style == \"builtin\")\n && state.lastToken == \"meta\")\n style = \"meta\";\n\n // Handle scope changes.\n if (current == \"pass\" || current == \"return\")\n state.dedent = true;\n\n if (current == \"lambda\") state.lambda = true;\n if (current == \":\" && !state.lambda && top(state).type == \"py\" && stream.match(/^\\s*(?:#|$)/, false))\n pushPyScope(state);\n\n if (current.length == 1 && !/string|comment/.test(style)) {\n var delimiter_index = \"[({\".indexOf(current);\n if (delimiter_index != -1)\n pushBracketScope(stream, state, \"])}\".slice(delimiter_index, delimiter_index+1));\n\n delimiter_index = \"])}\".indexOf(current);\n if (delimiter_index != -1) {\n if (top(state).type == current) state.indent = state.scopes.pop().offset - hangingIndent\n else return ERRORCLASS;\n }\n }\n if (state.dedent && stream.eol() && top(state).type == \"py\" && state.scopes.length > 1)\n state.scopes.pop();\n\n return style;\n }\n\n var external = {\n startState: function(basecolumn) {\n return {\n tokenize: tokenBase,\n scopes: [{offset: basecolumn || 0, type: \"py\", align: null}],\n indent: basecolumn || 0,\n lastToken: null,\n lambda: false,\n dedent: 0\n };\n },\n\n token: function(stream, state) {\n var addErr = state.errorToken;\n if (addErr) state.errorToken = false;\n var style = tokenLexer(stream, state);\n\n if (style && style != \"comment\")\n state.lastToken = (style == \"keyword\" || style == \"punctuation\") ? stream.current() : style;\n if (style == \"punctuation\") style = null;\n\n if (stream.eol() && state.lambda)\n state.lambda = false;\n return addErr ? style + \" \" + ERRORCLASS : style;\n },\n\n indent: function(state, textAfter) {\n if (state.tokenize != tokenBase)\n return state.tokenize.isString ? CodeMirror.Pass : 0;\n\n var scope = top(state)\n var closing = scope.type == textAfter.charAt(0) ||\n scope.type == \"py\" && !state.dedent && /^(else:|elif |except |finally:)/.test(textAfter)\n if (scope.align != null)\n return scope.align - (closing ? 1 : 0)\n else\n return scope.offset - (closing ? hangingIndent : 0)\n },\n\n electricInput: /^\\s*([\\}\\]\\)]|else:|elif |except |finally:)$/,\n closeBrackets: {triples: \"'\\\"\"},\n lineComment: \"#\",\n fold: \"indent\"\n };\n return external;\n });\n\n CodeMirror.defineMIME(\"text/x-python\", \"python\");\n\n var words = function(str) { return str.split(\" \"); };\n\n CodeMirror.defineMIME(\"text/x-cython\", {\n name: \"python\",\n extra_keywords: words(\"by cdef cimport cpdef ctypedef enum except \"+\n \"extern gil include nogil property public \"+\n \"readonly struct union DEF IF ELIF ELSE\")\n });\n\n});\n", "export const codePointsToString = (code: number[]): string =>\n code.reduce((code, ord) => code + String.fromCharCode(ord), '');\n\nexport default codePointsToString;\n", "export const stringToCodePoints = (code: string): number[] =>\n code.split('').map((c: string): number => c.charCodeAt(0));\n\nexport default stringToCodePoints;\n", "import { Decoder } from '../Decoders';\nimport codePointsToString from '../codePointsToString';\nimport stringToCodePoints from '../stringToCodePoints';\n\nexport class Default implements Decoder {\n public name(): string {\n return 'default';\n }\n\n protected codePointsToString(code: number[]): string {\n return codePointsToString(code);\n }\n\n protected stringToCodePoints(code: string): number[] {\n return stringToCodePoints(code);\n }\n\n public matches(code: number[]): boolean {\n return this.matchesAsString(this.codePointsToString(code));\n }\n\n public matchesAsString(code: string): boolean {\n return true;\n }\n\n public decode(code: number[]): number[] {\n return this.decodeAsString(this.codePointsToString(code));\n }\n\n public decodeAsString(code: string): number[] {\n return this.stringToCodePoints(code);\n }\n}\n\nexport default Default;\n", "import { Decoder } from '../Decoders';\nimport Default from './Default';\n\nexport class Base64 extends Default implements Decoder {\n public name(): string {\n return 'base64';\n }\n\n public matchesAsString(code: string): boolean {\n // base64 input is at least 4 chars, pick 8 as `prin` is valid\n if (code.length < 8 || /[^A-Za-z0-9+/=]/.test(code)) {\n return false;\n }\n\n try {\n atob(code);\n\n return true;\n } catch (e) {\n return false;\n }\n }\n\n public decodeAsString(code: string): number[] {\n return Array.from(atob(code)).map((c: string): number => c.charCodeAt(0));\n }\n}\nexport default Base64;\n", "import Runner from './Runner';\n\nexport type RunnerProvider = (code: number[], input: string, args: string) => Promise;\n\nexport class Lang {\n constructor(\n private id: string,\n private name: string,\n private runner: RunnerProvider,\n private url: string = null,\n private args: string[] | null = null,\n private highlighterRef: string = id\n ) {}\n\n getId(): string {\n return this.id;\n }\n\n getName(): string {\n return this.name;\n }\n\n getURL(): string {\n return this.url;\n }\n\n getArgs(): string[] | null {\n return this.args;\n }\n\n getHighlighterRef(): string {\n return this.highlighterRef;\n }\n\n run(code: number[], input: string, args: string): Promise {\n return this.runner(code, input, args);\n }\n}\n\nexport default Lang;\n", "import EventEmitter from './index.js'\n\nexport { EventEmitter }\nexport default EventEmitter\n", "import { EventEmitter } from 'eventemitter3';\nimport { MelbaType } from 'melba-toast';\n\nexport type RunnerMessage = {\n type: 'run';\n code: number[];\n args: string;\n input: string;\n } | {\n type: 'output';\n output: string | undefined;\n error: string | undefined;\n } | {\n type: 'done';\n exitCode: number;\n };\n\nexport type RunnerError = {\n 'error': Error\n};\n\nexport type RunnerEventHandler = (message: RunnerMessage | RunnerError) => unknown;\n\nexport abstract class Runner extends EventEmitter<{\n error: RunnerError;\n message: RunnerMessage;\n done: {\n exitCode: number | undefined;\n };\n output: {\n output: string | undefined;\n error: string | undefined;\n };\n toast: {\n message: string;\n type: MelbaType | undefined;\n }\n}> {\n protected constructor() {\n super();\n\n this.on('message', (message: RunnerMessage) => {\n if (message.type === 'run') {\n return this.init(message.code, message.input, message.args);\n }\n\n if (message.type === 'output') {\n return this.emit('output', {\n output: message.output,\n error: message.error,\n });\n }\n\n if (message.type === 'done') {\n this.emit('done', {\n exitCode: message.exitCode,\n });\n\n return this.terminate();\n }\n\n console.warn('Unhandled message', message);\n });\n }\n\n abstract init(code: number[], input: string, args: string): Promise;\n abstract terminate(): void;\n}\n\nexport default Runner;\n", "import Runner, { RunnerEventHandler, RunnerMessage } from '../Runner';\n\nexport class WorkerRunner extends Runner {\n worker: Worker;\n\n constructor(workerURL: string | URL) {\n super();\n\n this.worker = new Worker(workerURL);\n\n this.worker.addEventListener('error', (error) =>\n this.emit('error', error),\n );\n\n this.worker.addEventListener('message', ({ data }) =>\n this.emit('message', data),\n );\n }\n\n async init(code: number[], input: string, args: string) {\n this.postMessage({\n type: 'run',\n code,\n args,\n input,\n });\n }\n\n postMessage(message: any, options?: StructuredSerializeOptions): void {\n return this.worker.postMessage(message, options);\n }\n\n terminate(): void {\n return this.worker.terminate();\n }\n}\n\nexport default WorkerRunner;\n", "import Runner from '../Runner';\nimport { SpawnOptions } from '@wasmer/sdk/dist/pkg/wasmer_js';\nimport codePointsToString from '../codePointsToString';\n// @ts-ignore\nimport { init, Instance, Wasmer as WasmerSDK } from \"https://unpkg.com/@wasmer/sdk@latest?module\";\n\nexport class Wasmer extends Runner {\n #package: WasmerSDK;\n #instance: Instance;\n\n constructor(private packageName: string, private filename: false | string = 'script', private spawnOptions?: SpawnOptions) {\n super();\n }\n\n /**\n * @param code\n * @param input STDIN\n * @param args The literal string `$filename` will be replaced with the path\n * to the code (e.g. `/app/script`) and is appended to the arguments\n * unless the `filename` parameter to the constructor is `false`.\n * `$code` will be replaced with a string representation of the code to\n * execute.\n */\n async init(code: number[], input: string, args: string) {\n await init();\n\n // Show an alert after a second as that probably means we're having to download the package\n const preparingMessageTimeout = window.setTimeout(() =>\n this.emit('toast', {\n message: 'Downloading package from wasmer.io. This might take some time...',\n type: 'info',\n })\n , 1000);\n\n this.#package = await WasmerSDK.fromRegistry(this.packageName);\n\n if (this.filename) {\n if (!args.includes('$filename')) {\n args += (args.length > 0 ? '\\n' : '') + '$filename';\n }\n\n args = args.replace('$filename', `/app/${this.filename}`)\n }\n\n const entrypointArgs = {\n args: args.split('\\n')\n .map((arg) => {\n if (arg !== '$code') {\n return arg;\n }\n\n return codePointsToString(code);\n }),\n stdin: input,\n ...this.spawnOptions,\n mount: {\n ...this.spawnOptions?.mount,\n '/app': {\n ...(this.spawnOptions?.mount && ( '/app' in this.spawnOptions?.mount) ? this.spawnOptions?.mount['/app'] : {}),\n ...(this.filename ? { [this.filename]: new Uint8Array(code) } : {}),\n },\n },\n };\n\n window.clearTimeout(preparingMessageTimeout);\n\n this.#instance = await this.#package.entrypoint.run(entrypointArgs);\n\n const { code: exitCode, stderr, stdout } = await this.#instance.wait();\n\n stdout.split('')\n .forEach((char) =>\n this.emit('output', {\n output: char,\n })\n );\n\n stderr.split('')\n .forEach((char) =>\n this.emit('output', {\n error: char,\n })\n );\n\n this.emit('done', {\n code: exitCode,\n });\n }\n\n terminate(): void {\n // TODO\n // return this.#instance.free();\n }\n}\n\nexport default Wasmer;\n", "import Lang from './Lang';\nimport WorkerRunner from './Runners/Worker';\nimport Runner from './Runner';\nimport Wasmer from './Runners/Wasmer';\nimport { SpawnOptions } from '@wasmer/sdk/dist/pkg/wasmer_js';\n\nexport class Langs {\n private data: { [key: string]: Lang } = {};\n\n public register(...langs: Lang[]): void {\n langs.forEach((lang: Lang): void => {\n this.data[lang.getId()] = lang;\n });\n }\n\n public get(lang: string): Lang {\n return this.data[lang];\n }\n\n public all(): string[] {\n return Object.keys(this.data);\n }\n\n public async run(\n langId: string,\n code: number[],\n args: string,\n input: string\n ): Promise {\n return await this.data[langId].run(code, input, args);\n }\n}\n\nexport const workerRunner =\n (workerURL: string | URL) =>\n async (code: number[], input: string, args: string): Promise => {\n const runner = new WorkerRunner(workerURL);\n\n runner.init(code, input, args);\n\n return runner;\n };\n\nexport const wasmerRunner =\n (packageName: string, filename: false | string = 'script', spawnOptions?: SpawnOptions) =>\n async (code: number[], input: string, args: string): Promise => {\n const runner = new Wasmer(packageName, filename, spawnOptions);\n\n runner.init(code, input, args);\n\n return runner;\n };\n\nexport const langs = new Langs();\n\nexport default langs;\n", "import { Lang } from '../../Lang';\nimport { wasmerRunner } from '../../Langs';\nimport 'codemirror/mode/shell/shell';\n\nexport class Bash extends Lang {\n constructor() {\n super(\n 'bash-wasmer',\n 'Bash (wasmer)',\n wasmerRunner('sharrattj/bash', 'script.sh'),\n 'https://www.gnu.org/software/bash/',\n [],\n 'shell'\n );\n }\n}\n\nexport default Bash;\n", "import { Decoder } from '../Decoders';\nimport Default from './Default';\n\nexport class Hexdump extends Default implements Decoder {\n public name(): string {\n return 'hexdump';\n }\n\n public matchesAsString(code: string): boolean {\n // TODO: could use the length to check that it's actually valid...\n return /^([0-9a-f]{7}(( ([0-9a-f]{4})){1,8}) *\\n)+[0-9a-f]{7}\\n?$/.test(\n code\n );\n }\n\n public decodeAsString(code: string): number[] {\n return code\n .trim()\n .replace(/\\n[0-9a-f]{7}\\n?$/, '')\n .replace(/(?<=^|\\n)[0-9a-f]{7}(( ([0-9a-f]{4})){1,8}) */g, '$1')\n .replace(/\\s+/g, '')\n .replace(/(..)(..)/g, '$2$1')\n .replace(/00$/, '')\n .match(/../g)\n .map((c: string): number => parseInt(c, 16));\n }\n}\n\nexport default Hexdump;\n", "import { Lang } from '../../Lang';\nimport { workerRunner } from '../../Langs';\nimport 'codemirror/mode/javascript/javascript';\n\nexport class JavaScript extends Lang {\n constructor() {\n super(\n 'javascript-browser',\n 'JavaScript (Browser)',\n workerRunner('dist/js/langs/javascript-browser/worker.js'),\n 'https://www.ecma-international.org/publications-and-standards/standards/ecma-262/',\n null,\n 'javascript'\n );\n }\n}\n\nexport default JavaScript;\n", "import { Lang } from '../../Lang';\nimport { wasmerRunner } from '../../Langs';\nimport 'codemirror/mode/ruby/ruby';\n\nexport class Ruby extends Lang {\n constructor() {\n super(\n 'ruby-wasmer',\n 'Ruby (wasmer)',\n wasmerRunner('katei/ruby', 'script.rb'),\n // wasmerRunner('madao/ruby-wasm', 'script.rb'),\n 'https://www.ruby-lang.org/',\n [],\n 'ruby'\n );\n }\n}\n\nexport default Ruby;\n", "import { Lang } from '../../Lang';\nimport { workerRunner } from '../../Langs';\nimport 'codemirror/mode/perl/perl';\n\nexport class Perl extends Lang {\n constructor() {\n super(\n 'webperl-5.28.1',\n 'Perl 5.28.1 (webperl)',\n workerRunner('dist/js/langs/webperl-5.28.1/worker.js'),\n 'https://www.perl.org/',\n ['-M5.10.0', '-F', '-l', '-p'],\n 'perl'\n );\n }\n}\n\nexport default Perl;\n", "import { Editor, EditorConfiguration, fromTextArea } from 'codemirror';\nimport { Melba, MelbaConstructorOptions, MelbaType } from 'melba-toast';\nimport { Renderers, createDevice } from './Renderers';\nimport CodeInput from './Inputs/Code';\nimport CodeRenderer from './Renderers/Code';\nimport IFrame from './Renderers/IFrame';\nimport IO from './IO';\nimport Image from './Renderers/Image';\nimport Inputs from './Inputs';\nimport PBMImage from './Renderers/PBMImage';\nimport TTY from './Renderers/TTY';\nimport codePointsToString from './codePointsToString';\nimport { decoders } from './Decoders';\nimport { langs } from './Langs';\nimport { options } from './Options';\nimport replaceBinaryBytes from './replaceBinaryBytes';\n\nimport 'codemirror/addon/comment/comment';\nimport 'codemirror/addon/comment/continuecomment';\nimport 'codemirror/addon/display/placeholder';\nimport 'codemirror/addon/edit/closebrackets';\nimport 'codemirror/addon/edit/matchbrackets';\nimport 'codemirror/keymap/sublime';\n\ntype Message = {\n name: 'setOption';\n value: {\n name: string;\n value: unknown;\n };\n};\n\nexport type IHashData = {\n lang: string;\n header?: string;\n code: string;\n footer?: string;\n args?: string;\n input?: string;\n type?: 'tty' | 'resource';\n mime?: string;\n options?: { [key: string]: unknown };\n};\n\nexport class UI {\n private addArg: HTMLHeadingElement;\n private args: Editor;\n private argsWrapper: HTMLDivElement;\n private bytesCount: HTMLSpanElement;\n private bytesPlural: HTMLSpanElement;\n private code: Inputs;\n private codeFooter: Inputs;\n private codeHeader: Inputs;\n private copyLinkButton: HTMLButtonElement;\n private encoded: HTMLSpanElement;\n private expanders: NodeListOf;\n private format: HTMLSpanElement;\n private io: IO;\n private langSelector: HTMLSelectElement;\n private markdownButton: HTMLButtonElement;\n private mimeType: string = 'text/plain';\n private mimeTypeInput: HTMLInputElement;\n private runButton: HTMLButtonElement;\n private stderr: Renderers;\n private stdin: Editor;\n private stdout: Renderers;\n private stopButton: HTMLButtonElement;\n\n constructor() {\n this.langSelector = document.querySelector(\n 'select[name=\"lang\"]'\n ) as HTMLSelectElement;\n\n this.addRegisteredLangs();\n\n const stdoutContainer = document.querySelector(\n 'div.stdout'\n ) as HTMLDivElement;\n\n this.codeHeader = new Inputs(\n new CodeInput(document.querySelector('div.header') as HTMLDivElement, {\n autoCloseBrackets: true,\n matchBrackets: true,\n placeholder: 'Header...',\n })\n );\n this.codeHeader.activate(CodeInput);\n\n this.code = new Inputs(\n new CodeInput(document.querySelector('div.code') as HTMLDivElement, {\n autoCloseBrackets: true,\n autofocus: true,\n matchBrackets: true,\n placeholder: 'Code...',\n })\n );\n this.code.activate(CodeInput);\n this.code.setType(this.langSelector.value);\n\n this.langSelector.addEventListener('change', () =>\n this.code.setType(this.langSelector.value)\n );\n\n this.codeFooter = new Inputs(\n new CodeInput(document.querySelector('div.footer') as HTMLDivElement, {\n autoCloseBrackets: true,\n autofocus: true,\n matchBrackets: true,\n placeholder: 'Footer...',\n })\n );\n this.codeFooter.activate(CodeInput);\n\n this.stdout = createDevice(\n new CodeRenderer(stdoutContainer),\n new PBMImage(stdoutContainer),\n new Image(stdoutContainer),\n new IFrame(stdoutContainer),\n new TTY(stdoutContainer)\n );\n this.stdout.activate('text/plain');\n\n this.stderr = createDevice(\n new TTY(document.querySelector('div.stderr') as HTMLDivElement)\n );\n this.stderr.setPrepend('\\x1b[31m');\n this.stderr.activate('text/plain');\n this.stdin = UI.createEditor(\n document.querySelector('textarea[name=\"input\"]') as HTMLTextAreaElement\n );\n this.args = UI.createEditor(\n document.querySelector('textarea[name=\"args\"]') as HTMLTextAreaElement\n );\n\n this.io = new IO(this.stdin, this.args);\n\n this.expanders = document.querySelectorAll(\n 'button[name=\"expand\"]'\n ) as NodeListOf;\n this.argsWrapper = document.querySelector(\n '.args-wrapper'\n ) as HTMLDivElement;\n this.addArg = document.querySelector(\n '.args-wrapper .actions'\n ) as HTMLHeadingElement;\n this.runButton = document.querySelector(\n 'button[name=\"run\"]'\n ) as HTMLButtonElement;\n this.stopButton = document.querySelector(\n 'button[name=\"stop\"]'\n ) as HTMLButtonElement;\n this.bytesCount = document.querySelector(\n '.bytes .byte-count'\n ) as HTMLSpanElement;\n this.bytesPlural = document.querySelector(\n '.bytes .plural'\n ) as HTMLSpanElement;\n this.encoded = document.querySelector('.encoded') as HTMLSpanElement;\n this.format = document.querySelector('.format') as HTMLSpanElement;\n this.copyLinkButton = document.querySelector(\n 'button[name=\"copy\"]'\n ) as HTMLButtonElement;\n this.markdownButton = document.querySelector(\n 'button[name=\"markdown\"]'\n ) as HTMLButtonElement;\n this.mimeTypeInput = document.querySelector('.stdout-header input');\n this.connectExpanders();\n\n // bind events\n this.code.on('change', () => this.codeOnChange());\n\n this.runButton.addEventListener('click', () => this.runCode());\n this.langSelector.addEventListener('change', () => this.populateArgs());\n this.copyLinkButton.addEventListener('click', () => {\n const link = this.buildLink();\n\n if (location.href !== link) {\n history.pushState(this.buildHashData(), document.title, link);\n }\n\n navigator.clipboard.writeText(link);\n\n UI.copied(this.copyLinkButton);\n });\n this.markdownButton.addEventListener('click', () => {\n navigator.clipboard.writeText(this.buildMarkdown());\n\n UI.copied(this.markdownButton);\n });\n this.mimeTypeInput.addEventListener('change', () =>\n this.setMimeType(this.mimeTypeInput.value || 'text/plain', false)\n );\n this.mimeTypeInput.addEventListener('keypress', ({ key }) => {\n if (key === 'Enter' && this.mimeType !== this.mimeTypeInput.value) {\n this.setMimeType(this.mimeTypeInput.value || 'text/plain', false);\n }\n });\n\n addEventListener('keydown', (event) => {\n if (event.key === 's' && (event.ctrlKey || event.metaKey)) {\n const link = this.buildLink();\n\n history.pushState(this.buildHashData(), document.title, link);\n navigator.clipboard.writeText(link);\n\n this.toast('Saved!', 'success', {\n hide: 2,\n });\n\n event.preventDefault();\n }\n });\n\n addEventListener('hashchange', () => {\n this.parseHashData(location.hash);\n\n if (this.code.read().length) {\n this.runCode();\n }\n });\n addEventListener('resize', () => this.resize());\n addEventListener(\n 'message',\n ({ data: { name, value } }: { data: Message }) => {\n if (name === 'setOption') {\n options.set(value.name, value.value);\n }\n }\n );\n\n // onload\n const previousLang = window.localStorage.getItem('lastUsedLanguage');\n if (previousLang) {\n this.setLang(previousLang);\n }\n\n this.parseHashData(location.hash);\n try {\n this.populateArgs();\n } catch (e) {\n this.toast(e.message, 'error');\n }\n this.codeOnChange();\n\n if (this.code.read().length) {\n this.runCode();\n }\n\n this.resize();\n\n document\n .querySelector('button.fullscreen-toggle')\n .addEventListener('click', () => this.enterFullscreen());\n\n document.addEventListener('fullscreenchange', () => this.exitFullscreen());\n }\n\n private addRegisteredLangs(): void {\n langs.all().forEach((langKey) => {\n const lang = langs.get(langKey),\n option = document.createElement('option');\n\n option.setAttribute('value', lang.getId());\n option.append(document.createTextNode(lang.getName()));\n\n this.langSelector.append(option);\n });\n }\n\n private setLang(lang: string): void {\n const availableLangs = langs.all();\n\n if (!availableLangs.includes(lang)) {\n throw new TypeError(`Unknown lang: ${lang}.`);\n }\n\n this.langSelector.value = lang;\n\n this.setCodeHighlight();\n }\n\n private getLangId(): string {\n return this.langSelector.value;\n }\n\n private setCodeHighlight(): void {\n const lang = langs.get(this.getLangId());\n\n [this.codeHeader, this.code, this.codeFooter].forEach((inputs) => {\n const decoder = decoders.decoderAsString(inputs.readAsString(null));\n\n if (decoder.name() !== 'default') {\n inputs.setType(null);\n\n return;\n }\n\n inputs.setType(lang.getHighlighterRef());\n });\n }\n\n public static createEditor(\n element: HTMLTextAreaElement,\n options: EditorConfiguration = {}\n ): Editor {\n return fromTextArea(element, {\n mode: null,\n theme: 'monokai',\n viewportMargin: Infinity,\n ...options,\n extraKeys: {\n 'Ctrl-D': 'duplicateLine',\n 'Ctrl-/': 'toggleComment',\n 'Shift-Tab': false,\n Tab: false,\n // @ts-ignore\n ...(options.extraKeys || {}),\n },\n });\n }\n\n private resize(): void {\n this.stdout.resize();\n this.stderr.resize();\n }\n\n private codeOnChange(): void {\n const code = this.code.read();\n\n this.encoded.setAttribute('hidden', '');\n\n this.setCodeHighlight();\n\n const decoder = decoders.decoder(code);\n\n if (decoder.name() !== 'default') {\n this.encoded.removeAttribute('hidden');\n\n this.format.innerText = decoder.name();\n }\n\n const decodedCode = decoder.decode(code);\n\n this.showBytes(decodedCode.length);\n }\n\n private runCode(): void {\n const started = Date.now();\n\n this.stdout.reset();\n this.stderr.reset();\n\n this.runButton.setAttribute('disabled', '');\n this.stopButton.removeAttribute('disabled');\n\n langs.run(\n this.getLangId(),\n [].concat(\n [\n this.codeHeader.read(),\n this.code.read(),\n this.codeFooter.read(),\n ].flatMap((code) => decoders.decode(code))\n ),\n this.io.getArgs(),\n this.io.getStdin()\n )\n .then((runner) => {\n const stopHandler = () => {\n runner.terminate();\n\n this.stderr.write(`Aborted execution after ${Date.now() - started}ms`);\n\n this.runButton.removeAttribute('disabled');\n this.stopButton.setAttribute('disabled', '');\n\n this.stopButton.removeEventListener('click', stopHandler);\n };\n\n this.stopButton.addEventListener('click', stopHandler);\n\n runner.on('output', ({ output, error }) => {\n this.stdout.write(output ?? '');\n this.stderr.write(error ?? '');\n });\n\n runner.on('done', ({ exitCode }) => {\n this.stderr.write(\n `Execution finished with status code ${exitCode} after ${Date.now() - started}ms`\n );\n\n this.runButton.removeAttribute('disabled');\n this.stopButton.setAttribute('disabled', '');\n\n this.stopButton.removeEventListener('click', stopHandler);\n\n // Make sure the process is stopped\n runner.terminate();\n });\n\n runner.on('toast', ({ message, type = 'info' }) =>\n this.toast(message, type)\n );\n\n runner.on('error', (e) => {\n this.toast(`Worker error: ${e.message}`, 'error');\n\n this.runButton.removeAttribute('disabled');\n this.stopButton.setAttribute('disabled', '');\n });\n });\n }\n\n private populateArgs(): void {\n while (this.addArg.firstElementChild) {\n this.addArg.firstElementChild.remove();\n }\n\n const lang = langs.get(this.getLangId());\n\n if (!lang) {\n throw new TypeError('Unregistered lang: ' + this.getLangId());\n }\n\n window.localStorage.setItem('lastUsedLanguage', lang.getId());\n\n const args = lang.getArgs();\n\n if (args !== null) {\n this.argsWrapper.removeAttribute('hidden');\n\n args.forEach((arg) => {\n const argButton = document.createElement('button');\n\n argButton.append(document.createTextNode(arg));\n\n argButton.addEventListener('click', () => {\n const currentValue = this.io.getArgs() ?? '',\n match = new RegExp('(\\\\n|^)' + arg + '(\\\\n|$)');\n\n if (match.test(currentValue)) {\n return;\n }\n\n this.io.setArgs((currentValue + '\\n' + arg).trim());\n });\n\n this.addArg.append(argButton);\n });\n } else {\n this.argsWrapper.setAttribute('hidden', '');\n }\n\n this.io.argsRefresh();\n }\n\n private static expand(expander: HTMLButtonElement): void {\n const collapser = expander.nextElementSibling as HTMLButtonElement,\n target = document.querySelector(expander.dataset.target);\n\n if (!target) {\n console.debug('No collapser or target for expander: ', expander);\n\n return;\n }\n\n expander.setAttribute('hidden', '');\n target.removeAttribute('hidden');\n collapser.removeAttribute('hidden');\n collapser.focus();\n }\n\n private static collapse(expander: HTMLButtonElement): void {\n const collapser = expander.nextElementSibling,\n target = document.querySelector(expander.dataset.target);\n\n if (!target) {\n console.debug('No collapser or target for expander: ', expander);\n\n return;\n }\n\n expander.removeAttribute('hidden');\n target.setAttribute('hidden', '');\n collapser.setAttribute('hidden', '');\n expander.focus();\n }\n\n private connectExpanders(): void {\n this.expanders.forEach((expander) => {\n const collapser = expander.nextElementSibling;\n\n if (!collapser || !collapser.matches('button[name=\"collapse\"]')) {\n console.debug('No collapser or target for expander: ', expander);\n\n return;\n }\n\n expander.addEventListener('click', () => UI.expand(expander));\n collapser.addEventListener('click', () => UI.collapse(expander));\n });\n }\n\n private setMimeType(mimeType: string, setInput: boolean = true): void {\n this.mimeType = mimeType;\n\n if (setInput) {\n this.mimeTypeInput.value = mimeType;\n }\n\n this.stdout.activate(mimeType);\n this.stdout.resize();\n }\n\n private static copied(button: HTMLButtonElement | HTMLInputElement): void {\n button.setAttribute('disabled', '');\n button.style.width = button.offsetWidth + 'px';\n button.classList.toggle('copied');\n\n setTimeout(() => {\n button.removeAttribute('disabled');\n button.style.width = null;\n button.classList.toggle('copied');\n }, 1000);\n }\n\n private parseHashData(hash): void {\n if (!hash || hash.length < 2) {\n return;\n }\n\n let data;\n\n try {\n const jsonData = atob(hash.slice(1));\n\n data = JSON.parse(jsonData);\n } catch (e) {\n if (e instanceof DOMException) {\n this.toast('Unable to decode URL data. Aborting.', 'error');\n\n return;\n }\n\n if (e instanceof SyntaxError) {\n this.toast('Unable to decode JSON data. Aborting.', 'error');\n\n return;\n }\n\n throw e;\n }\n\n const [headerExpander] = Array.from(this.expanders).filter((expander) =>\n expander.parentElement.matches('.code-header')\n ),\n [footerExpander] = Array.from(this.expanders).filter((expander) =>\n expander.parentElement.matches('.code-footer')\n );\n\n if (data.header) {\n UI.expand(headerExpander);\n }\n\n if (data.footer) {\n UI.expand(footerExpander);\n }\n\n if (data.options) {\n Object.entries(data.options).forEach(([key, value]) =>\n options.set(key, value)\n );\n }\n\n this.setLang(data.lang ?? this.getLangId());\n this.codeHeader.write(decodeURIComponent(escape(data.header ?? '')));\n this.code.write(decodeURIComponent(escape(data.code ?? '')));\n this.codeFooter.write(decodeURIComponent(escape(data.footer ?? '')));\n this.io.setArgs(data.args ?? '');\n this.io.setStdin(decodeURIComponent(escape(data.input ?? '')));\n\n if (data.mime) {\n this.setMimeType(data.mime);\n }\n }\n\n private buildHashData() {\n const data: IHashData = {\n lang: this.getLangId(),\n code: this.code.readAsString(null),\n },\n header = this.codeHeader.readAsString(null),\n footer = this.codeFooter.readAsString(null),\n args = this.io.getArgs(),\n input = this.io.getStdin(),\n mime = this.mimeType,\n optionValues = options.options;\n\n Object.entries({\n header,\n footer,\n args,\n input,\n }).forEach(([key, value]) => {\n if (value) {\n data[key] = value;\n }\n });\n\n if (JSON.stringify(optionValues) !== '{}') {\n data.options = optionValues;\n }\n\n if (mime !== 'text/plain') {\n data.mime = mime;\n }\n\n return btoa(JSON.stringify(data));\n }\n\n private buildLink(): string {\n const hash = this.buildHashData();\n\n return (\n location.protocol + '//' + location.host + location.pathname + '#' + hash\n );\n }\n\n private buildMarkdown(): string {\n const args = this.io.getArgs().trim().split(/\\n/).join(' '),\n lang = langs.get(this.getLangId()),\n key = Math.random().toString(36).slice(2, 10),\n rawCode = decoders.decode(this.code.read()),\n code = replaceBinaryBytes(codePointsToString(rawCode)),\n bytes = code.length;\n\n return `# [${lang.getName()}]${\n args ? ` + \\`${args}\\`` : ''\n }, ${bytes} byte${bytes === 1 ? '' : 's'}\n\n\n\n
${code.replace(/[&<>]/g, (char) =>\n      char === '<'\n        ? '<'\n        : char === '>'\n        ? '>'\n        : char === '&'\n        ? '&'\n        : char\n    )}
\n\n[Try it online!][TIO-${key}]\n\n[${lang.getName()}]: ${lang.getURL()}\n[TIO-${key}]: ${this.buildLink()}`;\n }\n\n private showBytes(byteCount: number): void {\n this.bytesCount.innerText = byteCount.toString();\n\n if (byteCount === 1) {\n this.bytesPlural.setAttribute('hidden', '');\n\n return;\n }\n\n this.bytesPlural.removeAttribute('hidden');\n }\n\n private enterFullscreen(): void {\n document.body.requestFullscreen().then(() => {\n document.body.classList.add('fullscreen');\n this.resize();\n });\n }\n\n private exitFullscreen(): void {\n document.body.classList.remove('fullscreen');\n this.resize();\n }\n\n public toast(\n content: string,\n type: MelbaType,\n options: Omit = {}\n ): Melba {\n if (!options.events) {\n options.events = {};\n }\n\n if (!options.events.click) {\n options.events.click = [];\n }\n\n options.events.click.push((toast) => toast.hide());\n\n return new Melba({\n ...options,\n content,\n type,\n });\n }\n}\n\nexport default UI;\n", "export interface Renderer {\n activate(mimeType: string): void;\n deactivate(): void;\n isActive(): boolean;\n matches(mimeType: string): boolean;\n reset(): void;\n resize(): void;\n write(char: number | string): void;\n}\n\nexport class Renderers {\n private buffer: string = '';\n private prepend: string = '';\n private registered: Renderer[] = [];\n\n public constructor(...renderers: Renderer[]) {\n this.register(...renderers);\n }\n\n public activate(mimeType: string): void {\n this.registered.reduce((value, renderer): boolean => {\n // Activate the first Renderer that matches\n if (renderer.matches(mimeType) && !value) {\n if (!renderer.isActive()) {\n renderer.activate(mimeType);\n renderer.reset();\n renderer.write(this.prepend + this.buffer);\n }\n\n return true;\n }\n\n renderer.deactivate();\n renderer.reset();\n\n return value;\n }, false);\n\n this.resize();\n }\n\n public refresh(): void {\n this.registered.forEach((renderer) => {\n this.registered\n .filter((renderer) => renderer.isActive())\n .forEach((renderer) => {\n renderer.reset();\n renderer.write(this.prepend + this.buffer);\n });\n });\n }\n\n public register(...renderers: Renderer[]): void {\n this.registered.push(...renderers);\n }\n\n public reset(): void {\n this.buffer = '';\n this.registered.forEach((renderer) => {\n renderer.reset();\n\n if (this.prepend) {\n renderer.write(this.prepend);\n }\n });\n }\n\n public resize(): void {\n this.registered.forEach((renderer) => {\n if (renderer.isActive()) {\n renderer.resize();\n }\n });\n }\n\n public setPrepend(prepend: string): void {\n this.prepend = prepend;\n\n this.refresh();\n }\n\n public write(char: number | string): void {\n if (typeof char === 'number') {\n char = String.fromCharCode(char);\n }\n\n this.buffer += char;\n this.registered\n .filter((renderer) => renderer.isActive())\n .forEach((renderer) => renderer.write(char));\n }\n}\n\nexport default Renderers;\n\nexport const createDevice = (...renderers: Renderer[]): Renderers =>\n new Renderers(...renderers);\n", "import {\n Editor,\n EditorConfiguration,\n KeyMap,\n fromTextArea,\n EditorEventMap,\n} from 'codemirror';\nimport Abstract from './Abstract';\nimport { Input } from '../Inputs';\nimport replaceBinaryBytes from '../replaceBinaryBytes';\n\nexport class Code extends Abstract implements Input {\n private editor: Editor;\n\n public constructor(parent: HTMLElement, options: EditorConfiguration = {}) {\n super();\n\n const element = this.createElement('div'),\n textarea = document.createElement('textarea') as HTMLTextAreaElement;\n\n parent.append(element);\n element.append(textarea);\n\n this.editor = fromTextArea(textarea, {\n mode: null,\n theme: 'monokai',\n viewportMargin: Infinity,\n ...options,\n extraKeys: {\n 'Ctrl-D': 'duplicateLine',\n 'Ctrl-/': 'toggleComment',\n 'Shift-Tab': false,\n Tab: false,\n ...(Object.keys(options.extraKeys || {}).length\n ? (options.extraKeys as KeyMap)\n : {}),\n },\n });\n\n this.editor.on('change', () => {\n if (this.inputs === null) {\n return;\n }\n\n // Could be smarter about this...\n this.inputs.setBuffer(\n this.editor\n .getValue()\n .split('')\n .map((char) => char.charCodeAt(0))\n );\n });\n }\n\n public matches(data: string): boolean {\n return /^[\\t\\n -~]*$/.test(data);\n }\n\n public on(eventName: string, handler: (...args: any[]) => void): void {\n this.editor.on(eventName as keyof EditorEventMap, (...args: any[]) =>\n handler(...args)\n );\n }\n\n public readAsString(binaryReplacementChar: string | null = '.'): string {\n const code = unescape(encodeURIComponent(this.editor.getValue()));\n\n if (binaryReplacementChar === null) {\n return code;\n }\n\n return replaceBinaryBytes(code, binaryReplacementChar);\n }\n\n public reset(): void {\n this.editor.setValue('');\n }\n\n public setOption(\n key: keyof EditorConfiguration,\n value: EditorConfiguration[keyof EditorConfiguration]\n ): void {\n this.editor.setOption(key, value);\n }\n\n public setType(type: string | null): void {\n if (this.editor.getOption('mode') !== type) {\n this.editor.setOption('mode', type);\n\n // This triggers the code to be highlighted in the newly selected language\n this.editor.setValue(this.editor.getValue());\n }\n }\n\n public write(data: string | number[]): void {\n if (Array.isArray(data)) {\n // String.fromCharCode(...data) causes an error with really long input!\n data = data.map((c) => String.fromCharCode(c)).join('');\n }\n\n this.editor.setValue(data);\n }\n}\n\nexport default Code;\n", "import { Input, Inputs } from '../Inputs';\n\nexport abstract class Abstract implements Input {\n protected active: boolean = false;\n private container: HTMLElement;\n protected inputs: Inputs | null = null;\n\n public activate(inputs: Inputs): void {\n this.container.removeAttribute('hidden');\n this.active = true;\n this.inputs = inputs;\n\n this.resize();\n }\n\n protected createElement(tag: string = 'div'): HTMLElement {\n this.container = document.createElement(tag);\n\n this.container.setAttribute('hidden', '');\n\n return this.container;\n }\n\n public deactivate(): void {\n this.container.setAttribute('hidden', '');\n this.active = false;\n }\n\n public isActive(): boolean {\n return this.active;\n }\n\n abstract matches(data: string): boolean;\n\n abstract on(eventName: string, handler: (...args: any[]) => void): void;\n\n public read(): number[] {\n return this.readAsString(null)\n .split('')\n .map((c) => c.charCodeAt(0));\n }\n\n abstract readAsString(replaceBinaryBytes: string | null): string;\n\n abstract setType(type: string | null): void;\n\n abstract write(data: string | number[]): void;\n\n abstract reset(): void;\n\n public resize(): void {}\n}\n\nexport default Abstract;\n", "// Don't replace newlines\nexport const replaceBinaryBytes = (code: string, replacement: string = '.') =>\n code.replace(/[^\\x09\\x0a\\x20-\\x7e]/g, replacement);\n\nexport default replaceBinaryBytes;\n", "import { Renderer } from '../Renderers';\n\nexport abstract class Abstract implements Renderer {\n protected active: boolean = false;\n protected container: HTMLElement;\n protected mimeType: string = 'text/plain';\n\n public activate(mimeType: string): void {\n this.container.removeAttribute('hidden');\n this.active = true;\n this.mimeType = mimeType;\n\n this.resize();\n }\n\n protected createElement(tag: 'div', hidden?: boolean): HTMLDivElement;\n protected createElement(tag: 'iframe', hidden?: boolean): HTMLIFrameElement;\n protected createElement(\n tag: string = 'div',\n hidden: boolean = true\n ): HTMLElement {\n const element = document.createElement(tag);\n\n if (hidden) {\n element.setAttribute('hidden', '');\n }\n\n return element;\n }\n\n public deactivate(): void {\n this.container.setAttribute('hidden', '');\n this.active = false;\n }\n\n public isActive(): boolean {\n return this.active;\n }\n\n public matches(mimeType: string): boolean {\n return true;\n }\n\n abstract write(char: number): void;\n abstract write(data: string): void;\n\n abstract reset(): void;\n\n public resize(): void {}\n}\n\nexport default Abstract;\n", "import { Editor, EditorConfiguration } from 'codemirror';\nimport Abstract from './Abstract';\nimport { Renderer } from '../Renderers';\nimport UI from '../UI';\n\nimport 'codemirror/mode/javascript/javascript';\nimport 'codemirror/mode/perl/perl';\n\nexport class Code extends Abstract implements Renderer {\n private editor: Editor;\n\n constructor(parent: HTMLElement, options: EditorConfiguration = {}) {\n super();\n\n const textarea = document.createElement('textarea');\n\n this.container = this.createElement('div');\n\n this.container.append(textarea);\n parent.append(this.container);\n\n this.editor = UI.createEditor(textarea, {\n ...options,\n readOnly: true,\n });\n\n parent.append(this.container);\n }\n\n activate(mimeType: string) {\n super.activate(mimeType);\n\n this.editor.setOption('mode', mimeType);\n }\n\n deactivate() {\n super.deactivate();\n }\n\n matches(mimeType: string): boolean {\n return [\n 'application/ecmascript',\n 'application/javascript',\n 'application/json',\n 'application/x-perl',\n 'text/ecmascript',\n 'text/javascript',\n 'text/json',\n 'text/x-perl',\n ].includes(mimeType);\n }\n\n reset(): void {\n this.editor.setValue('');\n }\n\n write(char: number | string): void {\n if (typeof char === 'number') {\n char = String.fromCharCode(char);\n }\n\n this.editor.setValue(this.editor.getValue() + char);\n }\n}\n\nexport default Code;\n", "import Abstract from './Abstract';\nimport { Renderer } from '../Renderers';\n\nexport class IFrame extends Abstract implements Renderer {\n protected buffer: string = '';\n protected container: HTMLIFrameElement;\n protected mimeType: string = 'text/html';\n\n public constructor(parent: HTMLElement) {\n super();\n\n this.container = this.createElement('iframe');\n\n parent.append(this.container);\n\n this.update();\n }\n\n public activate(mimeType: string) {\n super.activate(mimeType);\n\n this.update();\n }\n\n public matches(mimeType: string): boolean {\n return ['text/html'].includes(mimeType);\n }\n\n public reset(): void {\n this.buffer = '';\n this.update();\n }\n\n public write(char: number): void;\n public write(data: string): void;\n public write(char: number | string): void {\n if (typeof char === 'number') {\n char = String.fromCharCode(char);\n }\n\n this.buffer += char;\n this.update();\n }\n\n private update(): void {\n // We need to destroy and recreate the IFrame so that we don't clobber the back button.\n const container = this.createElement(\n 'iframe',\n this.container.hasAttribute('hidden')\n );\n\n container.src = `data:${this.mimeType};base64,${btoa(this.buffer)}`;\n\n this.container.replaceWith(container);\n\n this.container = container;\n }\n}\n\nexport default IFrame;\n", "export interface Decoder {\n name(): string;\n matches(code: number[]): boolean;\n matchesAsString(code: string): boolean;\n decode(code: number[]): number[];\n decodeAsString(code: string): number[];\n}\n\nexport class Decoders {\n private registered: Decoder[] = [];\n\n public register(...decoders: Decoder[]): void {\n this.registered.push(...decoders);\n }\n\n public decode(code: number[]): number[] {\n return this.decoder(code).decode(code);\n }\n\n public decodeAsString(code: string): number[] {\n return this.decoderAsString(code).decodeAsString(code);\n }\n\n public decoder(code: number[]): Decoder {\n const [decoder] = this.registered.filter((decoder): boolean =>\n decoder.matches(code)\n );\n\n return decoder;\n }\n\n public decoderAsString(code: string): Decoder {\n const [decoder] = this.registered.filter((decoder): boolean =>\n decoder.matchesAsString(code)\n );\n\n return decoder;\n }\n}\n\nexport default Decoders;\n\nexport const decoders = new Decoders();\n", "import { Editor } from 'codemirror';\nimport { decoders } from './Decoders';\n\nexport class IO {\n constructor(private stdin: Editor, private args: Editor) {}\n\n public getArgs(): string {\n return this.args.getValue();\n }\n\n public setArgs(value: string): void {\n this.args.setValue(value);\n }\n\n public argsRefresh(): void {\n this.args.refresh();\n }\n\n public getStdin(): string {\n return decoders\n .decodeAsString(this.stdin.getValue())\n .reduce((value, char) => value + String.fromCharCode(char), '');\n }\n\n public setStdin(value: string): void {\n this.stdin.setValue(value);\n }\n}\n\nexport default IO;\n", "export class Options {\n public options: {\n [key: string]: any;\n } = {};\n\n get(name: string, defaultValue: T = null): T {\n return (this.options[name] as T) ?? defaultValue;\n }\n\n set(name: string, value: any): void {\n this.options[name] = value;\n }\n}\n\nexport const options = new Options();\n\nexport default Options;\n", "import IFrame from './IFrame';\nimport { options } from '../Options';\n\n/**\n * Uses the following icons:\n * https://iconmonstr.com/magnifier-7-svg/\n * https://iconmonstr.com/magnifier-8-svg/\n */\nexport class Image extends IFrame {\n private imageBuffer: string = '';\n private imageMimeType: string = 'image/png';\n private zoomLevel: number = 1;\n\n public activate(mimeType: string) {\n this.zoomLevel = options.get('zoomLevel', 1);\n\n super.activate('text/html');\n\n this.imageMimeType = mimeType;\n }\n\n // TODO: this whole renderer should be a separate package with the contents parsed into a minified file\n private css(): string {\n return `\nhtml, body {\n margin: 0;\n padding: 0;\n}\n\nbody > img {\n --z: ${this.zoomLevel};\n image-rendering: pixelated;\n transform: scale(var(--z));\n transform-origin: 0 0;\n}\n\n.checked {\n background-image: linear-gradient(to right, rgba(192, 192, 192, 0.75), rgba(192, 192, 192, 0.75)),\n linear-gradient(to right, black 50%, white 50%),\n linear-gradient(to bottom, black 50%, white 50%);\n background-blend-mode: normal, difference, normal;\n background-size: 2em 2em;\n}\n\n.controls {\n background: rgba(255, 255, 255, .2);\n border: solid rgba(255, 255, 255, .6);\n border-radius: .3em 0 0 .3em;\n border-width: 1px 0 1px 1px;\n padding: .2em .2em .5em;\n position: fixed;\n right: 0;\n top: 1em;\n}\n\n.controls button {\n appearance: none;\n background: transparent;\n border: 0;\n cursor: pointer;\n}\n\n.controls button.toggle:after {\n content: '\\\\27f5';\n}\n\n.controls.left {\n border-radius: 0 .3em .3em 0;\n border-width: 1px 1px 1px 0;\n left: 0;\n right: auto;\n}\n\n.controls.left header {\n text-align: right;\n}\n\n.controls.left button.toggle:after {\n content: '\\\\27f6';\n}\n\n.controls .zoom-level {\n font-family: sans-serif;\n text-align: center;\n}\n`\n .replace(/\\s*,\\s*/g, ',')\n .replace(/\\s*>\\s*/g, '>')\n .replace(/\\s*;\\s*}\\s*/g, '}')\n .replace(/\\s*{\\s*/g, '{')\n .replace(/\\s*:\\s*/g, ':')\n .replace(/\\s*;\\s*/g, ';');\n }\n\n private data(): string {\n return `\n\n('transparencyCheckerboard', false) ? 'checked' : ''\n }\">\n
\n
\n \n
\n
\n \n \n
${this.zoomLevel * 100}%
\n
\n
\n \n
\n
\n\n`;\n }\n\n // TODO: this whole renderer should be a separate package with the contents parsed into a minified file\n private js(): string {\n return `\n const image = document.querySelector('img'),\n controls = document.querySelector('.controls'),\n zoomLevel = controls.querySelector('.zoom-level'),\n storeOption = (name, value) => {\n if (!parent) {\n return;\n }\n \n parent.postMessage({name:\"setOption\",value:{name,value}}, '${\n location.protocol + '//' + location.host\n }');\n };\n\n document.addEventListener('click', (event) => {\n const target = event.target,\n currentZoom = getComputedStyle(image).getPropertyValue('--z');\n\n if (target.matches('.zoom-in,.zoom-in *')) {\n const newZoom = currentZoom * 2;\n\n image.style.setProperty('--z', newZoom);\n zoomLevel.innerText = (newZoom * 100) + '%';\n \n storeOption('zoomLevel', newZoom);\n }\n\n if (target.matches('.zoom-out,.zoom-out *')) {\n const newZoom = currentZoom / 2;\n\n image.style.setProperty('--z', newZoom);\n zoomLevel.innerText = (newZoom * 100) + '%';\n\n storeOption('zoomLevel', newZoom);\n }\n\n if (target.matches('.toggle,.toggle *')) {\n controls.classList.toggle('left');\n }\n\n if (target.matches('button.checked')) {\n image.classList.toggle('checked');\n\n storeOption('transparencyCheckerboard', image.classList.contains('checked'));\n }\n });\n `;\n }\n\n public matches(mimeType: string): boolean {\n // Using data from: https://en.wikipedia.org/wiki/Comparison_of_web_browsers#Image_format_support\n // and: https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types\n return [\n 'image/apng',\n 'image/avif',\n 'image/bmp',\n 'image/gif',\n 'image/jpeg',\n 'image/png',\n 'image/svg+xml',\n 'image/vnd.microsoft.icon',\n 'image/webp',\n ].includes(mimeType);\n }\n\n public reset(): void {\n super.reset();\n\n this.imageBuffer = '';\n }\n\n public write(char: number): void;\n public write(data: string): void;\n public write(char: number | string): void {\n if (typeof char === 'number') {\n char = String.fromCharCode(char);\n }\n\n this.imageBuffer += char;\n this.buffer = '';\n\n super.write(this.data());\n }\n}\n\nexport default Image;\n", "export interface Input {\n activate(device: Inputs): void;\n deactivate(): void;\n isActive(): boolean;\n matches(data: string): boolean;\n on(eventName: string, handler: (...args: any[]) => void): void;\n read(): number[];\n readAsString(replaceBinaryBytes: string | null): string;\n reset(): void;\n resize(): void;\n setType(type: string | null): void;\n write(data: string | number[]): void;\n}\n\nexport type InputConstructor = new (\n parent: HTMLElement,\n ...args: any[]\n) => Input;\n\nexport class Inputs {\n private buffer: number[] = [];\n private registered: Input[] = [];\n private type: string;\n\n public constructor(...inputs: Input[]) {\n this.register(...inputs);\n }\n\n private active(): Input {\n const [input] = this.registered.filter((input) => input.isActive());\n\n return input;\n }\n\n public activate(toActivate: InputConstructor | Input): void {\n this.registered.reduce((value, input): boolean => {\n // Activate the required input\n if (\n !value &&\n ((typeof toActivate === 'function' && input instanceof toActivate) ||\n input === toActivate)\n ) {\n if (!input.isActive()) {\n input.activate(this);\n input.reset();\n input.write(this.buffer);\n }\n\n return true;\n }\n\n input.deactivate();\n input.reset();\n\n return value;\n }, false);\n\n this.resize();\n }\n\n public on(eventName: string, handler: (event: Event) => void): void {\n this.registered.forEach((input) => input.on(eventName, handler));\n }\n\n public read(): number[] {\n return this.active().read();\n }\n\n public readAsString(replaceBinaryBytes: string | null = '.'): string {\n return this.active().readAsString(replaceBinaryBytes);\n }\n\n public register(...inputs: Input[]): void {\n this.registered.push(...inputs);\n }\n\n public reset(): void {\n this.buffer.splice(0);\n this.registered.forEach((input) => input.reset());\n }\n\n public resize(): void {\n this.registered.forEach((input) => {\n if (input.isActive()) {\n input.resize();\n }\n });\n }\n\n public setBuffer(buffer: number[]): void {\n this.buffer.push(...buffer);\n }\n\n public setType(type: string | null): void {\n this.type = type;\n\n this.registered.forEach((input) => input.setType(type));\n }\n\n public write(char: number | number[] | string): void {\n const writeBuffer = [];\n\n if (typeof char === 'number') {\n writeBuffer.push(char);\n }\n\n if (Array.isArray(char)) {\n char.forEach((char) => writeBuffer.push(char));\n }\n\n if (typeof char === 'string') {\n char.split('').forEach((char) => writeBuffer.push(char.charCodeAt(0)));\n }\n\n this.registered.filter((input) => {\n if (input.isActive()) {\n input.write(writeBuffer);\n }\n });\n\n writeBuffer.forEach((char) => this.buffer.push(char));\n }\n}\n\nexport default Inputs;\n", "export class InvalidFormat extends TypeError {}\n\nexport default InvalidFormat;\n", "import Image from './Image';\nimport InvalidFormat from './Error/InvalidFormat';\nimport { Renderer } from '../Renderers';\n\nexport type PBMHeader =\n | [string, number, number, number] // P1: type, width, height, offset\n | [string, number, number, number, number]; // P3: type, width, height, maxValue, offset\n\n/**\n * @see https://en.wikipedia.org/wiki/Netpbm\n */\nexport class PBMImage extends Image implements Renderer {\n ppmBuffer: string = '';\n superTimeout: number | null = null;\n\n public activate(mimeType: string) {\n super.activate('image/png');\n }\n\n public matches(mimeType: string): boolean {\n return [\n 'image/x-portable-bitmap',\n 'image/x-portable-graymap',\n 'image/x-portable-pixmap',\n 'image/x-portable-anymap',\n ].includes(mimeType);\n }\n\n public reset() {\n super.reset();\n\n this.ppmBuffer = '';\n }\n\n public write(char: string | number): void {\n if (typeof char === 'number') {\n char = String.fromCharCode(char);\n }\n\n this.ppmBuffer += char;\n\n if (this.ppmBuffer.length < 10) {\n return;\n }\n\n // Wait for data to stop streaming\n if (this.superTimeout) {\n clearTimeout(this.superTimeout);\n }\n\n this.superTimeout = window.setTimeout(() => {\n try {\n super.reset();\n\n super.write(this.convertToPNG());\n } catch (e) {\n console.error(e);\n }\n }, 50);\n }\n\n private convertToPNG(): string {\n if (!/^P[1-7]/.test(this.ppmBuffer)) {\n throw new InvalidFormat();\n }\n\n const header = this.extractPBMHeader();\n\n if (!header) {\n throw new InvalidFormat();\n }\n\n const [format] = header;\n\n if (!format) {\n throw new InvalidFormat();\n }\n\n if (format === 'P1') {\n const [, width, height, offset] = header;\n\n return this.parseP1(width, height, offset);\n }\n\n if (format === 'P2') {\n const [, width, height, maxValue, offset] = header;\n\n return this.parseP2(width, height, maxValue, offset);\n }\n\n if (format === 'P3') {\n const [, width, height, maxValue, offset] = header;\n\n return this.parseP3(width, height, maxValue, offset);\n }\n\n if (format === 'P4') {\n const [, width, height, offset] = header;\n\n return this.parseP4(width, height, offset);\n }\n\n if (format === 'P5') {\n const [, width, height, maxValue, offset] = header;\n\n return this.parseP2(width, height, maxValue, offset, true);\n }\n\n if (format === 'P6') {\n const [, width, height, maxValue, offset] = header;\n\n return this.parseP3(width, height, maxValue, offset, true);\n }\n\n throw new InvalidFormat('Currently unsupported.');\n }\n\n private createCanvas(\n width: number,\n height: number\n ): [HTMLCanvasElement, CanvasRenderingContext2D, ImageData] {\n const canvas = document.createElement('canvas'),\n context = canvas.getContext('2d'),\n imageData = new ImageData(width, height);\n\n canvas.width = width;\n canvas.height = height;\n\n return [canvas, context, imageData];\n }\n\n private canvasToRawPNG(canvas: HTMLCanvasElement): string {\n // Convert back to raw data from a data: URI\n return atob(\n canvas.toDataURL('image/png').replace(/^data:image\\/png;base64,/, '')\n );\n }\n\n private parseP1(width: number, height: number, offset: number): string {\n const [canvas, context, imageData] = this.createCanvas(width, height),\n data = this.asciiDataGenerator(offset, false);\n\n for (let index = 0; index < width * height * 4; ) {\n const value = data.next().value === 1 ? 0 : 255;\n\n imageData.data[index++] = value;\n imageData.data[index++] = value;\n imageData.data[index++] = value;\n imageData.data[index++] = 255;\n }\n\n context.putImageData(imageData, 0, 0, 0, 0, width, height);\n\n return this.canvasToRawPNG(canvas);\n }\n\n private parseP2(\n width: number,\n height: number,\n maxValue: number,\n offset: number,\n binary: boolean = false\n ): string {\n const [canvas, context, imageData] = this.createCanvas(width, height),\n data = binary\n ? this.binaryDataGenerator(offset)\n : this.asciiDataGenerator(offset);\n\n for (let index = 0; index < width * height * 4; ) {\n const value = Math.floor((data.next().value / maxValue) * 255);\n\n imageData.data[index++] = value;\n imageData.data[index++] = value;\n imageData.data[index++] = value;\n imageData.data[index++] = 255;\n }\n\n context.putImageData(imageData, 0, 0, 0, 0, width, height);\n\n return this.canvasToRawPNG(canvas);\n }\n\n private parseP3(\n width: number,\n height: number,\n maxValue: number,\n offset: number,\n binary: boolean = false\n ): string {\n const [canvas, context, imageData] = this.createCanvas(width, height),\n data = binary\n ? this.binaryDataGenerator(offset)\n : this.asciiDataGenerator(offset);\n\n for (let index = 0; index < width * height * 4; ) {\n imageData.data[index++] = Math.floor(\n ((data.next().value || 0) / maxValue) * 255\n );\n imageData.data[index++] = Math.floor(\n ((data.next().value || 0) / maxValue) * 255\n );\n imageData.data[index++] = Math.floor(\n ((data.next().value || 0) / maxValue) * 255\n );\n imageData.data[index++] = 255;\n }\n\n context.putImageData(imageData, 0, 0, 0, 0, width, height);\n\n return this.canvasToRawPNG(canvas);\n }\n\n private parseP4(width: number, height: number, offset: number): string {\n const [canvas, context, imageData] = this.createCanvas(width, height),\n data = this.binaryBitDataGenerator(offset);\n\n for (let index = 0; index < width * height * 4; ) {\n const value = data.next().value === 1 ? 0 : 255;\n\n imageData.data[index++] = value;\n imageData.data[index++] = value;\n imageData.data[index++] = value;\n imageData.data[index++] = 255;\n }\n\n context.putImageData(imageData, 0, 0, 0, 0, width, height);\n\n return this.canvasToRawPNG(canvas);\n }\n\n private extractPBMHeader(): PBMHeader | null {\n const type = this.ppmBuffer.slice(0, 2),\n withoutMaxValue =\n /^(P[14])\\s+(?:#[^\\n]*\\s*)*(\\d+)\\s+(?:#[^\\n]*\\s*)*(\\d+)\\s*(?:#[^\\n]*\\s*)*/,\n withMaxValue =\n /^(P[2356])\\s+(?:#[^\\n]*\\s*)*(\\d+)\\s+(?:#[^\\n]*\\s*)*(\\d+)\\s+(?:#[^\\n]*\\s*)*(\\d+)\\s*(?:#[^\\n]*\\s*)*/;\n\n if (type === 'P1' || type === 'P4') {\n const match = this.ppmBuffer.match(withoutMaxValue);\n\n if (!match) {\n throw new InvalidFormat();\n }\n\n return [\n match[1], // format\n parseInt(match[2], 10), // width\n parseInt(match[3], 10), // height\n match[0].length, // offset\n ];\n }\n\n if (type === 'P2' || type === 'P3' || type === 'P5' || type === 'P6') {\n const match = this.ppmBuffer.match(withMaxValue);\n\n if (!match) {\n throw new InvalidFormat();\n }\n\n return [\n match[1], // format\n parseInt(match[2], 10), // width\n parseInt(match[3], 10), // height\n parseInt(match[4], 10), // max value\n match[0].length, // offset\n ];\n }\n }\n\n private *asciiDataGenerator(\n offset: number,\n separator: boolean = true\n ): Generator {\n let block = '';\n\n for (\n let currentPosition = offset, comment = false;\n currentPosition < this.ppmBuffer.length;\n currentPosition++\n ) {\n const currentChar = this.ppmBuffer[currentPosition];\n\n if (/#/.test(currentChar)) {\n if (block) {\n yield parseInt(block, 10);\n\n block = '';\n }\n\n comment = true;\n }\n\n if (/\\n/.test(currentChar) && comment) {\n comment = false;\n }\n\n if (comment) {\n continue;\n }\n\n if (/\\s/.test(currentChar) && block.length > 0) {\n yield parseInt(block, 10);\n\n block = '';\n }\n\n if (/\\d/.test(currentChar)) {\n block += currentChar;\n }\n\n if (separator === false && block) {\n yield parseInt(block, 10);\n\n block = '';\n }\n }\n\n yield parseInt(block, 10);\n }\n\n private *binaryDataGenerator(offset: number): Generator {\n let block = '';\n\n for (\n let currentPosition = offset;\n currentPosition < this.ppmBuffer.length;\n currentPosition++\n ) {\n const currentChar = this.ppmBuffer[currentPosition];\n\n yield currentChar.charCodeAt(0);\n }\n\n yield parseInt(block, 10);\n }\n\n private *binaryBitDataGenerator(offset: number): Generator {\n let block = '';\n\n for (\n let currentPosition = offset;\n currentPosition < this.ppmBuffer.length;\n currentPosition++\n ) {\n const currentChar = this.ppmBuffer[currentPosition],\n bitMask = ('0000000' + currentChar.charCodeAt(0).toString(2)).slice(-8);\n\n for (let rowPosition = 0; rowPosition < 8; rowPosition++) {\n yield parseInt(bitMask[rowPosition], 10);\n }\n }\n\n yield parseInt(block, 10);\n }\n}\n\nexport default PBMImage;\n", "import { ITerminalOptions, Terminal } from 'xterm';\nimport Abstract from './Abstract';\nimport { FitAddon } from 'xterm-addon-fit/src/FitAddon';\nimport { Renderer } from '../Renderers';\n\nexport class TTY extends Abstract implements Renderer {\n private buffer: string = '';\n private escapeInput: string = '';\n private fit: FitAddon;\n private maxX: number = 0;\n private maxY: number = 0;\n private options: ITerminalOptions;\n private terminal: Terminal;\n private x: number = 0;\n private y: number = 0;\n\n constructor(parent: HTMLElement, options: ITerminalOptions = {}) {\n super();\n\n this.container = this.createElement('div');\n this.container.classList.add('tty');\n\n parent.append(this.container);\n\n this.fit = new FitAddon();\n\n this.terminal = TTY.createTerminal(options);\n this.terminal.loadAddon(this.fit);\n this.terminal.open(this.container);\n\n this.options = options;\n }\n\n private static cleanText(text: string): string {\n // patch for xterm.js - this allows VT and FF but patches \\n, vs. convertEol option\n return text.replace(/(? parseInt(value || '1', 10))\n : [parseInt(value, 10), 1];\n break;\n }\n\n if (x >= cols) {\n x = cols;\n }\n\n maxX = Math.max(x, maxX);\n maxY = Math.max(y, maxY);\n\n return [x, y, maxX, maxY];\n }\n\n switch (input) {\n case '\\n':\n y++;\n x = 0;\n break;\n\n case '\\f':\n case '\\r':\n case '\\v':\n y++;\n break;\n\n case '\\t':\n x += x % 8 || 8;\n break;\n\n // backspace\n case '\\x08':\n x--;\n break;\n\n default:\n x++;\n }\n\n if (x >= cols) {\n y++;\n x = 0;\n }\n\n maxX = Math.max(x, maxX);\n maxY = Math.max(y, maxY);\n\n return [x, y, maxX, maxY];\n }\n\n private reprocessBufferForSize(): number[] {\n let maxX = 0,\n maxY = 0,\n x = 0,\n y = 0,\n escapeInput = '';\n\n const results = this.buffer.match(/\\x1b\\[(.*?)([\\x40-\\x7e])|(.)/g);\n\n if (!results) {\n return [1, 1];\n }\n\n results.forEach((input) => {\n [input, escapeInput] = this.processInputForEscape(input, escapeInput);\n\n if (input) {\n [x, y, maxX, maxY] = this.processInputForSize(x, y, maxX, maxY, input);\n }\n });\n\n return [maxX + 1, maxY + 1];\n }\n\n public reset(): void {\n this.buffer = '';\n this.escapeInput = '';\n this.maxX = 0;\n this.maxY = 0;\n this.x = 0;\n this.y = 0;\n\n this.terminal.reset();\n }\n\n public resize(): void {\n if (\n this.container.hasAttribute('hidden') ||\n (this.options.cols && this.options.rows)\n ) {\n return;\n }\n\n const [, visibleLines] = this.reprocessBufferForSize(),\n dimensions = this.fit.proposeDimensions();\n\n this.terminal.resize(\n this.options.cols ?? dimensions?.cols ?? this.terminal.cols,\n this.options.rows ?? visibleLines\n );\n }\n\n public write(char: number): void;\n public write(data: string): void;\n public write(char: number | string): void {\n if (typeof char === 'number') {\n char = String.fromCharCode(char);\n }\n\n this.buffer += char;\n\n this.handleInputForSize(char);\n\n const rows = this.maxY + 1;\n\n if (rows !== this.terminal.rows) {\n this.terminal.resize(this.terminal.cols, rows);\n }\n\n this.terminal.write(TTY.cleanText(char));\n }\n}\n\nexport default TTY;\n", "/**\n * Copyright (c) 2017 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { Terminal, ITerminalAddon } from 'xterm';\n\ninterface ITerminalDimensions {\n /**\n * The number of rows in the terminal.\n */\n rows: number;\n\n /**\n * The number of columns in the terminal.\n */\n cols: number;\n}\n\nconst MINIMUM_COLS = 2;\nconst MINIMUM_ROWS = 1;\n\nexport class FitAddon implements ITerminalAddon {\n private _terminal: Terminal | undefined;\n\n constructor() {}\n\n public activate(terminal: Terminal): void {\n this._terminal = terminal;\n }\n\n public dispose(): void {}\n\n public fit(): void {\n const dims = this.proposeDimensions();\n if (!dims || !this._terminal) {\n return;\n }\n\n // TODO: Remove reliance on private API\n const core = (this._terminal as any)._core;\n\n // Force a full render\n if (this._terminal.rows !== dims.rows || this._terminal.cols !== dims.cols) {\n core._renderService.clear();\n this._terminal.resize(dims.cols, dims.rows);\n }\n }\n\n public proposeDimensions(): ITerminalDimensions | undefined {\n if (!this._terminal) {\n return undefined;\n }\n\n if (!this._terminal.element || !this._terminal.element.parentElement) {\n return undefined;\n }\n\n // TODO: Remove reliance on private API\n const core = (this._terminal as any)._core;\n\n if (core._renderService.dimensions.actualCellWidth === 0 || core._renderService.dimensions.actualCellHeight === 0) {\n return undefined;\n }\n\n const parentElementStyle = window.getComputedStyle(this._terminal.element.parentElement);\n const parentElementHeight = parseInt(parentElementStyle.getPropertyValue('height'));\n const parentElementWidth = Math.max(0, parseInt(parentElementStyle.getPropertyValue('width')));\n const elementStyle = window.getComputedStyle(this._terminal.element);\n const elementPadding = {\n top: parseInt(elementStyle.getPropertyValue('padding-top')),\n bottom: parseInt(elementStyle.getPropertyValue('padding-bottom')),\n right: parseInt(elementStyle.getPropertyValue('padding-right')),\n left: parseInt(elementStyle.getPropertyValue('padding-left'))\n };\n const elementPaddingVer = elementPadding.top + elementPadding.bottom;\n const elementPaddingHor = elementPadding.right + elementPadding.left;\n const availableHeight = parentElementHeight - elementPaddingVer;\n const availableWidth = parentElementWidth - elementPaddingHor - core.viewport.scrollBarWidth;\n const geometry = {\n cols: Math.max(MINIMUM_COLS, Math.floor(availableWidth / core._renderService.dimensions.actualCellWidth)),\n rows: Math.max(MINIMUM_ROWS, Math.floor(availableHeight / core._renderService.dimensions.actualCellHeight))\n };\n return geometry;\n }\n}\n", "import { Decoder } from '../Decoders';\nimport Default from './Default';\n\nexport class Xxd extends Default implements Decoder {\n public name(): string {\n return 'xxd';\n }\n\n public matchesAsString(code: string): boolean {\n return /^([\\da-f]{7,8}: (((.{2}){1,2} ){1,8}) .+(\\n|$))+$/.test(code);\n }\n\n public decodeAsString(code: string): number[] {\n return code\n .trim()\n .replace(/(?<=^|\\n)[\\da-f]{7,8}: (((.{2}){1,2} ){1,8}).+/g, '$1')\n .replace(/\\s+/g, '')\n .match(/../g)\n .map((c: string): number => parseInt(c, 16));\n }\n}\nexport default Xxd;\n", "import { Lang } from '../../Lang';\nimport { wasmerRunner } from '../../Langs';\nimport 'codemirror/mode/python/python';\nimport Runner from '../../Runner';\nimport Wasmer from '../../Runners/Wasmer';\n\nexport class jq extends Lang {\n constructor() {\n super(\n 'jq-wasmer',\n 'jq (wasmer)',\n async (code: number[], input: string, args: string): Promise => {\n const runner = new Wasmer('syrusakbary/jq', false, {\n mount: {\n \"/app\": {\n \"input.json\": input\n }\n }\n });\n\n runner.init(\n code,\n '',\n (args.length ? (args + '\\n') : '') +\n '$code\\n' +\n '/app/input.json'\n );\n\n return runner;\n },\n 'https://jqlang.github.io/jq/',\n [],\n 'jq'\n );\n }\n}\n\nexport default jq;\n", "import Base64 from './Decoders/Base64';\nimport Bash from './langs/bash-wasmer/Bash';\nimport Default from './Decoders/Default';\nimport Hexdump from './Decoders/Hexdump';\nimport JavaScript from './langs/javascript-browser/JavaScript';\nimport Ruby from './langs/ruby-wasmer/Ruby';\nimport Perl from './langs/webperl-5.28.1/Perl';\n// import Python from './langs/python-wasmer/Python';\nimport UI from './UI';\nimport Xxd from './Decoders/Xxd';\nimport jq from './langs/jq-wasmer/jq';\nimport { decoders } from './Decoders';\nimport { langs } from './Langs';\n\ndecoders.register(new Xxd(), new Hexdump(), new Base64(), new Default());\nlangs.register(\n new Bash(),\n new JavaScript(),\n new Ruby(),\n new Perl(),\n // TODO: This is 120MiB which can't currently be cached by the browser by default, making it kinda useless :(\n // Need a smaller image from Wasmer, or could download the data manually on first use and store in IndexedDB:\n // https://stackoverflow.com/a/71581910/3145856\n // new Python(),\n new jq()\n);\n\nconst ui = new UI();\n"], + "mappings": "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CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,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", + "names": ["require_eventemitter3", "__commonJSMin", "exports", "module", "has", "prefix", "Events", "EE", "fn", "context", "once", "addListener", "emitter", "event", "listener", "evt", "clearEvent", "EventEmitter", "names", "events", "name", "handlers", "i", "l", "ee", "listeners", "a1", "a2", "a3", "a4", "a5", "len", "args", "length", "j", "require_codemirror", "__commonJSMin", "exports", "module", "global", "factory", "userAgent", "platform", "gecko", "ie_upto10", "ie_11up", "edge", "ie", "ie_version", "webkit", "qtwebkit", "chrome", "chrome_version", "presto", "safari", "mac_geMountainLion", "phantom", "ios", "android", "mobile", "mac", "chromeOS", "windows", "presto_version", "flipCtrlCmd", "captureRightClick", "classTest", "cls", "rmClass", "node", "current", "match", "after", "removeChildren", "count", "removeChildrenAndAdd", "parent", "e", "elt", "tag", "content", "className", "style", "i", "eltP", "range", "start", "end", "endNode", "r", "contains", "child", "activeElt", "rootNode", "doc", "activeElement", "addClass", "joinClasses", "a", "b", "as", "selectInput", "cm", "root", "element", "win", "bind", "f", "args", "copyObj", "obj", "target", "overwrite", "prop", "countColumn", "string", "tabSize", "startIndex", "startValue", "n", "nextTab", "Delayed", "self", "ms", "time", "indexOf", "array", "scrollerGap", "Pass", "sel_dontScroll", "sel_mouse", "sel_move", "findColumn", "goal", "pos", "col", "skipped", "spaceStrs", "spaceStr", "lst", "arr", "map", "out", "insertSorted", "value", "score", "priority", "nothing", "createObj", "base", "props", "inst", "nonASCIISingleCaseWordChar", "isWordCharBasic", "ch", "isWordChar", "helper", "isEmpty", "extendingChars", "isExtendingChar", "skipExtendingChars", "str", "dir", "findFirst", "pred", "from", "to", "midF", "mid", "iterateBidiSections", "order", "found", "part", "bidiOther", "getBidiPartAt", "sticky", "cur", "bidiOrdering", "lowTypes", "arabicTypes", "charType", "code", "bidiRE", "isNeutral", "isStrong", "countsAsLeft", "countsAsNum", "BidiSpan", "level", "direction", "outerType", "len", "types", "i$1", "prev", "type", "i$2", "type$1", "i$3", "prev$1", "type$2", "i$4", "type$3", "replace", "j", "i$5", "cur$1", "type$4", "i$6", "end$1", "before", "replace$1", "j$1", "m", "i$7", "at", "isRTL", "j$2", "nstart", "getOrder", "line", "noHandlers", "on", "emitter", "getHandlers", "off", "index", "signal", "handlers", "signalDOMEvent", "override", "e_defaultPrevented", "signalCursorActivity", "set", "hasHandler", "eventMixin", "ctor", "e_preventDefault", "e_stopPropagation", "e_stop", "e_target", "e_button", "dragAndDrop", "div", "zwspSupported", "zeroWidthElement", "measure", "test", "badBidiRects", "hasBadBidiRects", "txt", "r0", "r1", "splitLinesAuto", "result", "l", "nl", "rt", "hasSelection", "te", "hasCopyEvent", "badZoomedRects", "hasBadZoomedRects", "normal", "fromRange", "modes", "mimeModes", "defineMode", "name", "mode", "defineMIME", "mime", "spec", "resolveMode", "getMode", "options", "mfactory", "modeObj", "modeExtensions", "exts", "prop$1", "extendMode", "properties", "copyState", "state", "nstate", "val", "innerMode", "info", "startState", "a1", "a2", "StringStream", "lineOracle", "ok", "pattern", "consume", "caseInsensitive", "cased", "substr", "inner", "oracle", "getLine", "chunk", "sz", "getBetween", "text", "getLines", "updateLineHeight", "height", "diff", "lineNo", "no", "lineAtHeight", "h", "outer", "lh", "isLine", "lineNumberFor", "Pos", "cmp", "equalCursorPos", "copyPos", "x", "maxPos", "minPos", "clipLine", "clipPos", "last", "clipToLen", "linelen", "clipPosArray", "SavedContext", "lookAhead", "Context", "saved", "copy", "highlightLine", "context", "forceToEnd", "st", "lineClasses", "runMode", "loop", "o", "overlay", "i_end", "getLineStyles", "updateFrontier", "getContextBefore", "resetState", "precise", "display", "findStartLine", "processLine", "startAt", "stream", "callBlankLine", "readToken", "Token", "takeToken", "asArray", "tokens", "extractLineClasses", "output", "lineClass", "flattenSpans", "curStart", "curStyle", "mName", "minindent", "minline", "lim", "search", "indented", "retreatFrontier", "sawReadOnlySpans", "sawCollapsedSpans", "seeReadOnlySpans", "seeCollapsedSpans", "MarkedSpan", "marker", "getMarkedSpanFor", "spans", "span", "removeMarkedSpan", "addMarkedSpan", "op", "inThisOp", "markedSpansBefore", "old", "startCh", "isInsert", "nw", "startsBefore", "endsAfter", "markedSpansAfter", "endCh", "stretchSpansOverChange", "change", "oldFirst", "oldLast", "first", "sameLine", "offset", "span$1", "found$1", "clearEmptySpans", "newMarkers", "gap", "gapMarkers", "removeReadOnlyRanges", "markers", "mark", "parts", "mk", "p", "newParts", "dfrom", "dto", "detachMarkedSpans", "attachMarkedSpans", "extraLeft", "extraRight", "compareCollapsedMarkers", "lenDiff", "aPos", "bPos", "fromCmp", "toCmp", "collapsedSpanAtSide", "sps", "sp", "collapsedSpanAtStart", "collapsedSpanAtEnd", "collapsedSpanAround", "conflictingCollapsedRange", "visualLine", "merged", "visualLineEnd", "visualLineContinued", "lines", "visualLineNo", "lineN", "vis", "visualLineEndNo", "lineIsHidden", "lineIsHiddenInner", "heightAtLine", "lineObj", "lineLength", "findMaxLine", "d", "Line", "markedSpans", "estimateHeight", "updateLine", "estHeight", "cleanUpLine", "styleToClassCache", "styleToClassCacheWithMode", "interpretTokenStyle", "cache", "buildLineContent", "lineView", "builder", "buildToken", "buildTokenBadBidi", "allowFrontierUpdate", "insertLineContent", "defaultSpecialCharPlaceholder", "token", "startStyle", "endStyle", "css", "attributes", "displayText", "splitSpaces", "special", "mustWrap", "txt$1", "tabWidth", "fullStyle", "attr", "trailingBefore", "spaceBefore", "buildCollapsedSpan", "size", "ignoreWidget", "widget", "styles", "allText", "nextChange", "spanStyle", "spanEndStyle", "spanStartStyle", "collapsed", "foundBookmarks", "endStyles", "upto", "tokenText", "LineView", "buildViewArray", "nextPos", "view", "operationGroup", "pushOperation", "fireCallbacksForOps", "group", "callbacks", "finishOperation", "endCb", "orphanDelayedCallbacks", "signalLater", "list", "fireOrphanDelayed", "delayed", "updateLineForChanges", "dims", "updateLineText", "updateLineGutter", "updateLineClasses", "updateLineWidgets", "ensureLineWrapped", "updateLineBackground", "wrap", "getLineContent", "ext", "built", "textClass", "wrap$1", "gutterWrap", "k", "id", "isWidget", "next", "insertLineWidgets", "buildLineElement", "insertLineWidgetsFor", "allowAbove", "ws", "positionLineWidget", "width", "widgetHeight", "parentStyle", "eventInWidget", "paddingTop", "paddingVert", "paddingH", "data", "scrollGap", "displayWidth", "displayHeight", "ensureLineHeights", "rect", "wrapping", "curWidth", "heights", "rects", "mapFromLineView", "updateExternalMeasurement", "measureChar", "bias", "measureCharPrepared", "prepareMeasureForLine", "findViewForLine", "findViewIndex", "getDimensions", "prepared", "varHeight", "key", "measureCharInner", "nullRect", "nodeAndOffsetInLineMap", "collapse", "mStart", "mEnd", "getUsefulRect", "place", "maybeUpdateRectForZooming", "rSpan", "charWidth", "rtop", "rbot", "top", "bot", "scaleX", "scaleY", "clearLineMeasurementCacheFor", "clearLineMeasurementCache", "clearCaches", "pageScrollX", "pageScrollY", "widgetTopHeight", "ref", "widgets", "intoCoordSystem", "includeWidgets", "yOff", "lOff", "xOff", "fromCoordSystem", "coords", "left", "localBox", "lineSpaceBox", "charCoords", "cursorCoords", "preparedMeasure", "get", "right", "getBidi", "partPos", "invert", "other", "estimateCoords", "PosWithInfo", "outside", "xRel", "coordsChar", "y", "coordsCharInner", "rangeEnd", "wrappedLineExtent", "begin", "wrappedLineExtentChar", "targetTop", "boxIsAfter", "box", "ltr", "coordsBidiPartWrapped", "coordsBidiPart", "chAround", "boxAround", "baseX", "atLeft", "atStart", "_lineNo", "closestDist", "endX", "dist", "measureText", "textHeight", "anchor", "pre", "gutterLeft", "compensateForHScroll", "th", "perLine", "widgetsHeight", "estimateLineHeights", "est", "posFromMouse", "liberal", "forRect", "space", "colDiff", "regChange", "lendiff", "resetView", "cut", "viewCuttingPoint", "cut$1", "cutTop", "cutBot", "regLineChange", "oldN", "newN", "adjustView", "countDirtyView", "dirty", "updateSelection", "prepareSelection", "primary", "curFragment", "selFragment", "customCursor", "head", "drawSelectionCursor", "drawSelectionRange", "cursor", "charPos", "otherCursor", "cmpCoords", "fragment", "padding", "leftSide", "rightSide", "docLTR", "add", "bottom", "drawForLine", "fromArg", "toArg", "lineLen", "wrapX", "side", "extent", "fromPos", "toPos", "openStart", "openEnd", "openLeft", "openRight", "topLeft", "topRight", "botLeft", "botRight", "sFrom", "sTo", "fromLine", "toLine", "singleVLine", "leftEnd", "rightStart", "restartBlink", "onBlur", "ensureFocus", "onFocus", "delayBlurEvent", "updateHeightsInViewport", "prevBottom", "viewTop", "oldHeight", "mustScroll", "updateWidgetHeight", "chWidth", "w", "visibleLines", "viewport", "ensureFrom", "ensureTo", "maybeScrollWindow", "doScroll", "scrollNode", "scrollPosIntoView", "margin", "limit", "changed", "endCoords", "scrollPos", "calculateScrollPos", "startTop", "startLeft", "updateScrollTop", "setScrollLeft", "scrollIntoView", "snapMargin", "screentop", "screen", "docBottom", "atTop", "atBottom", "newTop", "gutterSpace", "screenleft", "screenw", "tooWide", "addToScrollTop", "resolveScrollToPos", "ensureCursorVisible", "scrollToCoords", "scrollToRange", "scrollToCoordsRange", "sPos", "updateDisplaySimple", "setScrollTop", "startWorker", "forceScroll", "isScroller", "alignHorizontally", "measureForScrollbars", "gutterW", "docH", "NativeScrollbars", "scroll", "vert", "horiz", "needsH", "needsV", "sWidth", "totalHeight", "totalWidth", "bar", "delay", "maybeDisable", "NullScrollbars", "updateScrollbars", "startWidth", "startHeight", "updateScrollbarsInner", "sizes", "scrollbarModel", "initScrollbars", "axis", "nextOpId", "startOperation", "endOperation", "endOperations", "ops", "endOperation_R1", "endOperation_W1", "endOperation_R2", "endOperation_W2", "endOperation_finish", "maybeClipScrollbars", "DisplayUpdate", "updateDisplayIfNeeded", "takeFocus", "setDocumentHeight", "postUpdateDisplay", "hidden", "unhidden", "runInOp", "operation", "methodOp", "docMethodOp", "highlightWorker", "changedLines", "oldStyles", "highlighted", "oldCls", "newCls", "ischange", "force", "selectionSnapshot", "active", "sel", "restoreSelection", "snapshot", "update", "maybeUpdateLineNumberWidth", "different", "toUpdate", "selSnapshot", "patchDisplay", "barMeasure", "updateNumbersFrom", "lineNumbers", "container", "rm", "updateNumber", "updateGutterSpace", "comp", "align", "innerW", "getGutters", "gutters", "sawLineNumbers", "renderGutters", "specs", "gElt", "updateGutters", "Display", "input", "wheelSamples", "wheelPixelsPerUnit", "wheelEventDelta", "dx", "dy", "wheelEventPixels", "delta", "onScrollWheel", "pixelsPerUnit", "canScrollX", "canScrollY", "pixels", "movedX", "movedY", "sample", "Selection", "ranges", "primIndex", "here", "there", "Range", "normalizeSelection", "mayTouch", "prim", "inv", "simpleSelection", "changeEnd", "adjustForChange", "computeSelAfterChange", "offsetPos", "computeReplacedSel", "changes", "hint", "oldPrev", "newPrev", "loadMode", "resetModeState", "isWholeLineUpdate", "updateDoc", "spansFor", "linesFor", "firstLine", "lastLine", "lastText", "lastSpans", "nlines", "added", "added$1", "added$2", "linkedDocs", "sharedHistOnly", "propagate", "skip", "sharedHist", "rel", "shared", "attachDoc", "setDirectionClass", "directionChanged", "History", "historyChangeFromChange", "histChange", "attachLocalSpans", "clearSelectionEvents", "lastChangeEvent", "hist", "addChangeToHistory", "selAfter", "opId", "pushSelectionToHistory", "selectionEventCanBeMerged", "origin", "addSelectionToHistory", "dest", "existing", "removeClearedSpans", "getOldSpans", "mergeOldSpans", "stretched", "oldCur", "stretchCur", "copyHistoryArray", "events", "newGroup", "instantiateSel", "event", "newChanges", "extendRange", "extend", "posBefore", "extendSelection", "setSelection", "extendSelections", "heads", "newSel", "replaceOneSelection", "setSimpleSelection", "filterSelectionChange", "setSelectionReplaceHistory", "done", "setSelectionNoUndo", "setSelectionInner", "skipAtomicInSelection", "reCheckSelection", "mayClear", "newAnchor", "skipAtomic", "newHead", "skipAtomicInner", "oldPos", "preventCursorLeft", "preventCursorRight", "near", "movePos", "far", "selectAll", "filterChange", "makeChange", "ignoreReadOnly", "split", "makeChangeInner", "makeChangeSingleDoc", "rebased", "rebaseHist", "makeChangeFromHistory", "allowSelectionOnly", "suppress", "source", "antiChanges", "filter", "returned", "shiftDoc", "distance", "shift", "makeChangeSingleDocInEditor", "recomputeMaxLength", "checkWidthStart", "changesHandler", "changeHandler", "replaceRange", "assign", "rebaseHistSelSingle", "rebaseHistArray", "sub", "changeLine", "handle", "changeType", "LeafChunk", "BranchChunk", "children", "remaining", "leaf", "me", "spilled", "sibling", "myIndex", "used", "LineWidget", "opt", "adjustScrollWhenAboveVisible", "this$1", "oldH", "addLineWidget", "aboveVisible", "nextMarkerId", "TextMarker", "withOp", "min", "max", "visual", "dHeight", "markText", "markTextShared", "curLine", "updateMaxLine", "SharedTextMarker", "findSharedMarkers", "copySharedMarkers", "mFrom", "mTo", "subMark", "detachSharedMarkers", "linked", "subMarker", "nextDocId", "Doc", "lineSep", "dup", "undone", "forceSplit", "gen", "histData", "gutterID", "where", "realOpts", "sepSize", "copyHistory", "CodeMirror", "link", "splitIds", "lastDrop", "onDrop", "clearDragCursor", "files", "read", "markAsReadAndPasteIfAllFilesAreRead", "t", "readTextFromFile", "file", "reader", "text$1", "selected", "onDragStart", "img", "onDragOver", "frag", "forEachCodeMirror", "byClass", "editors", "globalsRegistered", "ensureGlobalHandlers", "registerGlobalHandlers", "resizeTimer", "onResize", "keyNames", "keyMap", "normalizeKeyName", "alt", "ctrl", "cmd", "mod", "normalizeKeyMap", "keymap", "keyname", "keys", "lookupKey", "getKeyMap", "isModifierKey", "addModifierNames", "noShift", "keyName", "deleteNearSelection", "compute", "kill", "toKill", "replaced", "moveCharLogically", "moveLogically", "endOfLine", "visually", "moveInStorageOrder", "prep", "moveVisually", "bidi", "mv", "getWrappedLineExtent", "searchInVisualLine", "getRes", "res", "nextCh", "commands", "leftPos", "rightPos", "lineStart", "lineStartSmart", "lineEnd", "spaces", "sels", "firstNonWS", "inWS", "doHandleBinding", "bound", "dropShift", "prevShift", "lookupKeyForEditor", "stopSeq", "dispatchKey", "seq", "dispatchKeyInner", "handleKeyBinding", "handleCharBinding", "lastStoppedKey", "onKeyDown", "handled", "showCrossHair", "lineDiv", "up", "onKeyUp", "onKeyPress", "keyCode", "charCode", "DOUBLECLICK_DELAY", "PastClick", "button", "lastClick", "lastDoubleClick", "clickRepeat", "now", "onMouseDown", "clickInGutter", "repeat", "handleMappedButton", "leftButtonDown", "configureMouse", "option", "behavior", "contained", "leftButtonStartDrag", "leftButtonSelect", "moved", "dragEnd", "mouseMove", "dragStart", "e2", "rangeForUnit", "unit", "ourRange", "ourIndex", "startSel", "lastPos", "extendTo", "startCol", "posCol", "oldRange", "ranges$1", "bidiSimplify", "editorSize", "counter", "curCount", "visible", "move", "anchorLine", "boundary", "headIndex", "usePart", "gutterEvent", "prevent", "mX", "mY", "lineBox", "g", "gutter", "onContextMenu", "contextMenuInGutter", "themeChanged", "Init", "defaults", "optionHandlers", "defineOptions", "deflt", "notOnInit", "newBreaks", "wrappingChanged", "integer", "dragDropChanged", "wasOn", "funcs", "toggle", "registerEventHandlers", "initHooks", "word", "touchFinished", "prevTouch", "finishTouch", "isMouseLikeTouchEvent", "touch", "farAway", "inp", "indentLine", "how", "aggressive", "curSpace", "curSpaceString", "indentation", "indentString", "pos$1", "lastCopied", "setLastCopied", "newLastCopied", "applyTextInput", "inserted", "deleted", "recent", "paste", "textLines", "multiPaste", "updateInput", "changeEvent", "triggerElectric", "handlePaste", "pasted", "copyableRanges", "lineRange", "disableBrowserMagic", "field", "spellcheck", "autocorrect", "autocapitalize", "hiddenTextarea", "addEditorMethods", "helpers", "maps", "overlays", "newRanges", "help", "vspace", "hspace", "amount", "findPosH", "goalColumn", "findPosV", "goals", "headPos", "startChar", "check", "scroller", "interpret", "phraseText", "phrases", "predicate", "origDir", "lineDir", "findNextLine", "moveOnce", "boundToLine", "astral", "sawType", "pageSize", "moveAmount", "ContentEditableInput", "belongsToInput", "onCopyCut", "kludge", "hadFocus", "label", "curAnchor", "domToPos", "curFocus", "posToDOM", "rng", "poll", "isInGutter", "fromIndex", "fromNode", "toIndex", "toNode", "newText", "domTextBetween", "oldText", "cutFront", "cutEnd", "oldTop", "maxCutFront", "newBot", "oldBot", "maxCutEnd", "chFrom", "chTo", "scan", "badPos", "bad", "closing", "extraLinebreak", "recognizeMarker", "close", "addText", "walk", "cmText", "markerID", "isBlock", "lineNode", "locateNodeInLineView", "wrapper", "textNode", "topNode", "find", "curNode", "dist$1", "TextareaInput", "prepareCopyCut", "_display", "opts", "wrapOff", "lineOff", "drawn", "typing", "missed", "prevInput", "same", "reset", "oldCSS", "oldWrapperCSS", "wrapperBox", "oldScrollY", "rehide", "prepareSelectAllHack", "extval", "mouseup", "fromTextArea", "textarea", "hasFocus", "save", "realSubmit", "form", "wrappedSubmit", "addLegacyProps", "dontDelegate", "method", "func", "require_shell", "__commonJSMin", "exports", "module", "mod", "CodeMirror", "words", "define", "style", "dict", "i", "commonAtoms", "commonKeywords", "commonCommands", "tokenBase", "stream", "state", "sol", "ch", "tokenString", "tokenize", "tokenDollar", "heredoc", "tokenHeredoc", "cur", "quote", "close", "next", "escaped", "tokenStringStart", "delim", "require_javascript", "__commonJSMin", "exports", "module", "mod", "CodeMirror", "config", "parserConfig", "indentUnit", "statementIndent", "jsonldMode", "jsonMode", "trackScope", "isTS", "wordRE", "keywords", "kw", "type", "A", "B", "C", "D", "operator", "atom", "isOperatorChar", "isJsonldKeyword", "readRegexp", "stream", "escaped", "next", "inSet", "content", "ret", "tp", "style", "cont", "tokenBase", "state", "ch", "tokenString", "tokenComment", "expressionAllowed", "tokenQuasi", "word", "quote", "maybeEnd", "brackets", "findFatArrow", "arrow", "m", "depth", "sawSomething", "pos", "bracket", "atomicTypes", "JSLexical", "indented", "column", "align", "prev", "info", "inScope", "varname", "v", "cx", "parseJS", "cc", "combinator", "expression", "statement", "pass", "i", "inList", "name", "list", "register", "newContext", "registerVarScoped", "Var", "context", "inner", "Context", "isModifier", "vars", "block", "defaultVars", "pushcontext", "pushblockcontext", "popcontext", "pushlex", "result", "indent", "outer", "poplex", "expect", "wanted", "exp", "value", "vardef", "parenExpr", "maybeexpression", "maybeelse", "functiondef", "forspec", "className", "enumdef", "typename", "typeexpr", "pattern", "maybelabel", "maybeCatchBinding", "afterExport", "afterImport", "funarg", "expressionInner", "expressionNoComma", "noComma", "body", "arrowBodyNoComma", "arrowBody", "commasep", "maybeop", "maybeoperatorNoComma", "maybeoperatorComma", "classExpression", "arrayLiteral", "contCommasep", "objprop", "quasi", "maybeTarget", "me", "expr", "property", "continueQuasi", "targetNoComma", "target", "maybeTypeArgs", "_", "getterSetter", "afterprop", "maybetype", "what", "end", "sep", "proceed", "lex", "maybetypeOrIn", "mayberettype", "isKW", "afterType", "typeprops", "typearg", "maybeReturnType", "quasiType", "typeprop", "functiondecl", "continueQuasiType", "typeparam", "maybeTypeDefault", "maybeAssign", "vardefCont", "eltpattern", "proppattern", "_type", "forspec1", "forspec2", "classNameAfter", "classBody", "classfield", "isInterface", "maybeFrom", "exportField", "importSpec", "maybeMoreImports", "maybeAs", "enummember", "isContinuedStatement", "textAfter", "backUp", "basecolumn", "firstChar", "lexical", "top", "c", "closing", "require_ruby", "__commonJSMin", "exports", "module", "mod", "CodeMirror", "wordObj", "words", "o", "i", "e", "keywordList", "keywords", "indentWords", "dedentWords", "opening", "closing", "config", "curPunc", "chain", "newtok", "stream", "state", "tokenBase", "readBlockComment", "ch", "m", "readQuoted", "regexpAhead", "style", "embed", "delim", "readHereDoc", "more", "start", "depth", "next", "found", "escaped", "tokenBaseUntilBrace", "tokenBaseOnce", "alreadyCalled", "quote", "unescaped", "phrase", "mayIndent", "kwtype", "thisTok", "word", "textAfter", "firstChar", "ct", "closed", "require_perl", "__commonJSMin", "exports", "module", "mod", "CodeMirror", "PERL", "RXstyle", "RXmodifiers", "tokenChain", "stream", "state", "chain", "style", "tail", "e", "c", "i", "tokenPerl", "tokenSOMETHING", "string", "ch", "prefix", "p", "n", "look", "eatSuffix", "suffix", "x", "y", "require_Melba", "__commonJSMin", "exports", "__assign", "t", "s", "i", "n", "p", "__spreadArray", "to", "from", "pack", "l", "ar", "matchesFunction", "element", "property", "focusedSelector", "Melba", "_a", "_this", "_b", "animation", "_c", "animationDuration", "_d", "closeLabel", "_e", "container", "_f", "containerClass", "_g", "containerElement", "content", "_h", "events", "_j", "hide", "_k", "root", "_l", "toastClass", "_m", "toastElement", "_o", "toastEvents", "_p", "toastHideClass", "_q", "toastShowClass", "_r", "type", "event", "eventName", "force", "transitionEndHandler_1", "transitionStartHandler_1", "bound_1", "mouseOverHandler_1", "closeButton", "existingContainer", "callable", "hasEvent", "args", "_i", "settings", "root", "factory", "exports", "module", "define", "amd", "a", "i", "self", "e", "t", "r", "n", "o", "s", "c", "l", "h", "u", "f", "_terminal", "_renderService", "_liveRegionLineCount", "_charsToConsume", "_charsToAnnounce", "_accessibilityTreeRoot", "document", "createElement", "classList", "add", "tabIndex", "_rowContainer", "setAttribute", "_rowElements", "rows", "_createAccessibilityTreeNode", "appendChild", "_topBoundaryFocusListener", "_onBoundaryFocus", "_bottomBoundaryFocusListener", "addEventListener", "length", "_refreshRowsDimensions", "_renderRowsDebouncer", "TimeBasedDebouncer", "_renderRows", "bind", "_refreshRows", "_liveRegion", "element", "Error", "insertAdjacentElement", "register", "onResize", "_onResize", "onRender", "start", "end", "onScroll", "onA11yChar", "char", "_onChar", "onLineFeed", "onA11yTab", "spaceCount", "_onTab", "onKey", "_onKey", "key", "onBlur", "_clearLiveRegion", "onDimensionsChange", "_screenDprMonitor", "ScreenDprMonitor", "setListener", "addDisposableDomListener", "window", "dispose", "removeElementFromParent", "this", "position", "boundaryElement", "target", "beforeBoundaryElement", "getAttribute", "buffer", "lines", "relatedTarget", "topBoundaryElement", "bottomBoundaryElement", "pop", "removeChild", "shift", "removeEventListener", "newElement", "unshift", "push", "scrollLines", "focus", "preventDefault", "stopImmediatePropagation", "children", "_refreshRowDimensions", "MAX_ROWS_TO_READ", "textContent", "Strings", "tooMuchOutput", "isMac", "parentNode", "setTimeout", "keyChar", "refresh", "setSize", "toString", "lineData", "translateBufferLineToString", "ydisp", "posInSet", "innerText", "_announceCharacters", "dimensions", "actualCellHeight", "style", "height", "Disposable", "AccessibilityManager", "prepareTextForTerminal", "text", "replace", "bracketTextForPaste", "bracketedPasteMode", "paste", "textarea", "coreService", "decPrivateModes", "triggerDataEvent", "value", "moveTextAreaUnderMouseCursor", "ev", "screenElement", "pos", "getBoundingClientRect", "left", "clientX", "top", "clientY", "width", "zIndex", "selectionService", "clipboardData", "setData", "selectionText", "stopPropagation", "getData", "shouldSelectWord", "rightClickSelect", "select", "_color", "_rgba", "clear", "setCss", "bg", "fg", "getCss", "undefined", "setColor", "getColor", "ColorContrastCache", "DEFAULT_FOREGROUND", "css", "toColor", "DEFAULT_BACKGROUND", "DEFAULT_CURSOR", "DEFAULT_CURSOR_ACCENT", "DEFAULT_SELECTION", "rgba", "DEFAULT_ANSI_COLORS", "Object", "freeze", "colors", "v", "g", "b", "channels", "toCss", "toRgba", "allowTransparency", "canvas", "ctx", "getContext", "_ctx", "globalCompositeOperation", "_litmusColor", "createLinearGradient", "_contrastCache", "foreground", "background", "cursor", "cursorAccent", "selectionTransparent", "selectionOpaque", "color", "blend", "selectionForeground", "ansi", "slice", "contrastCache", "_updateRestoreColors", "onOptionsChange", "setTheme", "theme", "_parseColor", "selection", "nullColor", "isOpaque", "opacity", "black", "red", "green", "yellow", "blue", "magenta", "cyan", "white", "brightBlack", "brightRed", "brightGreen", "brightYellow", "brightBlue", "brightMagenta", "brightCyan", "brightWhite", "restoreColor", "slot", "_restoreColors", "fallback", "fillStyle", "console", "warn", "fillRect", "data", "getImageData", "substring", "split", "map", "component", "Number", "alpha", "Math", "round", "ColorManager", "elements", "parentElement", "node", "type", "handler", "options", "disposed", "_bufferService", "_logService", "_unicodeService", "_linkMatchers", "_nextLinkMatcherId", "_onShowLinkUnderline", "EventEmitter", "_onHideLinkUnderline", "_onLinkTooltip", "_rowsToLinkify", "event", "attachToDom", "mouseZoneManager", "_element", "_mouseZoneManager", "linkifyRows", "min", "max", "clearAll", "_rowsTimeoutId", "clearTimeout", "_linkifyRows", "Linkifier", "_timeBeforeLatency", "absoluteRowIndexStart", "absoluteRowIndexEnd", "overscanLineLimit", "ceil", "cols", "iterator", "hasNext", "next", "_doLinkifyRow", "range", "first", "content", "debug", "registerLinkMatcher", "regex", "matcher", "id", "matchIndex", "validationCallback", "hoverTooltipCallback", "tooltipCallback", "hoverLeaveCallback", "leaveCallback", "willLinkActivate", "priority", "_addLinkMatcherToList", "splice", "deregisterLinkMatcher", "matcherId", "rowIndex", "match", "rex", "RegExp", "source", "flags", "stringIndex", "uri", "indexOf", "lastIndex", "bufferIndex", "stringIndexToBufferIndex", "line", "get", "attr", "getFg", "isValid", "_addLink", "exec", "x", "y", "getStringCellWidth", "x1", "y1", "floor", "x2", "y2", "MouseZone", "newWindow", "open", "opener", "location", "href", "fire", "_createLinkHoverEvent", "remove", "IBufferService", "ILogService", "IUnicodeService", "clickCallback", "hoverCallback", "_", "_linkProviders", "_linkCacheDisposables", "_isMouseOut", "_activeLine", "getDisposeArrayDisposable", "_currentLink", "registerLinkProvider", "linkProvider", "providerIndex", "mouseService", "renderService", "_mouseService", "_clearCurrentLink", "_onMouseMove", "_handleMouseDown", "_handleMouseUp", "_lastMouseEvent", "_positionFromMouseEvent", "composedPath", "contains", "_lastBufferCell", "_onHover", "_askForLink", "_linkAtPosition", "link", "useLineCache", "_activeProviderReplies", "forEach", "reply", "linkWithState", "Map", "linkProvided", "_checkLinkProviderResult", "provideLinks", "links", "linksWithState", "set", "size", "_removeIntersectingLinks", "entries", "d", "replies", "occupiedCells", "Set", "providerReply", "startX", "endX", "has", "index", "hasLinkBefore", "j", "linkAtPosition", "find", "_handleNewLink", "currentLink", "_mouseDownLink", "activate", "startRow", "endRow", "_linkLeave", "disposeArray", "state", "decorations", "underline", "pointerCursor", "isHovered", "_linkHover", "defineProperties", "toggle", "_fireUnderlineEvent", "onRenderedViewportChange", "hover", "showEvent", "scrollOffset", "_createLinkUnderlineEvent", "leave", "sameLine", "wrappedFromLeft", "wrappedToRight", "coords", "getCoords", "Linkifier2", "promptLabel", "_screenElement", "_selectionService", "_optionsService", "_zones", "_areZonesActive", "_lastHoverCoords", "_initialSelectionLength", "_onMouseDown", "_mouseMoveListener", "_mouseLeaveListener", "_onMouseLeave", "_clickListener", "_onClick", "_deactivate", "zone", "_activate", "_currentZone", "pageX", "pageY", "_findZoneEventAt", "_tooltipTimeout", "_onTooltip", "rawOptions", "linkTooltipHoverDuration", "_getSelectionLength", "currentSelectionLength", "IMouseService", "ISelectionService", "IOptionsService", "MouseZoneManager", "_renderCallback", "_refreshCallbacks", "_animationFrame", "cancelAnimationFrame", "addRefreshCallback", "callback", "requestAnimationFrame", "_innerRefresh", "rowStart", "rowEnd", "rowCount", "_rowCount", "_rowStart", "_rowEnd", "_runRefreshCallbacks", "RenderDebouncer", "_currentDevicePixelRatio", "devicePixelRatio", "listener", "_listener", "clearListener", "_outerListener", "_updateDpr", "_resolutionMediaMatchList", "removeListener", "matchMedia", "addListener", "p", "m", "S", "C", "w", "L", "E", "R", "k", "M", "A", "O", "D", "T", "B", "P", "I", "H", "F", "W", "q", "browser", "Browser", "_keyDownHandled", "_keyDownSeen", "_keyPressHandled", "_unprocessedDeadKey", "_onCursorMove", "_onRender", "_onSelectionChange", "_onTitleChange", "_onBell", "_onFocus", "_onBlur", "_onA11yCharEmitter", "_onA11yTabEmitter", "_setup", "linkifier", "_instantiationService", "createInstance", "linkifier2", "_decorationService", "DecorationService", "setService", "IDecorationService", "_inputHandler", "onRequestBell", "bell", "onRequestRefreshRows", "onRequestSendFocus", "_reportFocus", "onRequestReset", "reset", "onRequestWindowsOptionsReport", "_reportWindowsOptions", "onColor", "_handleColorEvent", "forwardEvent", "onCursorMove", "onTitleChange", "_afterResize", "_colorManager", "req", "acc", "ident", "toColorRGB", "C0", "ESC", "toRgbString", "C1_ESCAPED", "ST", "setColors", "viewport", "onThemeChange", "_isDisposed", "_customKeyEventHandler", "write", "buffers", "active", "preventScroll", "_updateOptions", "_charSizeService", "measure", "setRenderer", "_createRenderer", "syncScrollArea", "optionsService", "screenReaderMode", "_accessibilityManager", "setupTabStops", "_setTheme", "_onTextAreaFocus", "sendFocus", "updateCursorStyle", "_showCursor", "blur", "_onTextAreaBlur", "_syncTextArea", "isCursorInViewport", "_compositionHelper", "isComposing", "cursorY", "ybase", "bufferLine", "cursorX", "cellHeight", "getWidth", "cellWidth", "actualCellWidth", "cursorTop", "cursorLeft", "lineHeight", "_initGlobal", "_bindKeys", "hasSelection", "copyHandler", "pasteHandlerWrapper", "handlePasteEvent", "isFirefox", "button", "rightClickHandler", "rightClickSelectsWord", "isLinux", "_keyUp", "_keyDown", "_keyPress", "compositionstart", "compositionupdate", "compositionend", "_inputEvent", "updateCompositionElements", "_queueLinkification", "parent", "isConnected", "_document", "ownerDocument", "dir", "fragment", "createDocumentFragment", "_viewportElement", "_viewportScrollArea", "_helperContainer", "coreBrowserService", "CoreBrowserService", "ICoreBrowserService", "CharSizeService", "ICharSizeService", "_theme", "onOptionChange", "_characterJoinerService", "CharacterJoinerService", "ICharacterJoinerService", "renderer", "RenderService", "IRenderService", "resize", "_compositionView", "CompositionHelper", "_soundService", "SoundService", "ISoundService", "MouseService", "Viewport", "amount", "onRequestSyncScrollBar", "onFocus", "SelectionService", "onRequestScrollLines", "suppressScrollEvent", "onSelectionChange", "onRequestRedraw", "onSelectionChanged", "columnSelectMode", "onLinuxMouseSelection", "_onScroll", "BufferDecorationRenderer", "onMouseDown", "coreMouseService", "areMouseEventsActive", "disable", "enable", "overviewRulerWidth", "_overviewRulerRenderer", "OverviewRulerRenderer", "bindMouse", "rendererType", "Renderer", "DomRenderer", "el", "sendEvent", "but", "action", "getRawByteCoords", "overrideType", "buttons", "getLinesScrolled", "deltaY", "triggerMouseEvent", "col", "row", "ctrl", "ctrlKey", "alt", "altKey", "shiftKey", "requestedEvents", "mouseup", "wheel", "mousedrag", "mousemove", "eventListeners", "cancel", "onProtocolChange", "events", "logLevel", "explainEvents", "passive", "activeProtocol", "shouldForceSelection", "hasScrollback", "sequence", "applicationCursorKeys", "abs", "onWheel", "onTouchStart", "onTouchMove", "refreshRows", "shouldColumnSelect", "isCursorInitialized", "disp", "attachCustomKeyEventHandler", "customKeyEventHandler", "registerCharacterJoiner", "joinerId", "deregisterCharacterJoiner", "deregister", "markers", "addMarker", "cursorYOffset", "normal", "registerDecoration", "decorationOptions", "column", "setSelection", "getSelection", "getSelectionPosition", "startColumn", "selectionStart", "endColumn", "selectionEnd", "clearSelection", "selectAll", "selectLines", "shouldIgnoreComposition", "macOptionIsMeta", "keydown", "scrollToBottom", "result", "evaluateKeyboardEvent", "scrollCount", "_isThirdLevelShift", "metaKey", "charCodeAt", "ETX", "CR", "domEvent", "thirdLevelKey", "isWindows", "getModifierState", "keyCode", "charCode", "which", "String", "fromCharCode", "inputType", "composed", "_soundBell", "playBellSound", "hasValidSize", "clearAllMarkers", "getBlankLine", "DEFAULT_ATTR_DATA", "clearTextureAtlas", "WindowsOptionsReportType", "GET_WIN_SIZE_PIXELS", "canvasWidth", "scaledCanvasWidth", "toFixed", "canvasHeight", "scaledCanvasHeight", "GET_CELL_SIZE_PIXELS", "scaledCellWidth", "scaledCellHeight", "force", "cancelEvents", "_visualBell", "bellStyle", "CoreTerminal", "Terminal", "_debounceThresholdMS", "_lastRefreshMs", "_additionalRefreshRequested", "_refreshTimeoutID", "refreshRequestTime", "Date", "now", "elapsed", "waitPeriodBeforeTrailingRefresh", "_scrollLines", "_scrollArea", "scrollBarWidth", "_currentRowHeight", "_currentScaledCellHeight", "_lastRecordedBufferLength", "_lastRecordedViewportHeight", "_lastRecordedBufferHeight", "_lastTouchY", "_lastScrollTop", "_wheelPartialScroll", "_refreshAnimationFrame", "_ignoreNextScrollEvent", "offsetWidth", "_activeBuffer", "onBufferActivate", "activeBuffer", "_renderDimensions", "backgroundColor", "_refresh", "immediate", "offsetHeight", "newBufferHeight", "scrollTop", "offsetParent", "diff", "_bubbleScroll", "scrollPosFromTop", "cancelable", "_getPixelsScrolled", "_applyScrollModifier", "deltaMode", "WheelEvent", "DOM_DELTA_LINE", "DOM_DELTA_PAGE", "DOM_DELTA_PIXEL", "modifier", "fastScrollModifier", "fastScrollSensitivity", "scrollSensitivity", "touches", "_decorationElements", "_altBufferIsActive", "_dimensionsChanged", "_container", "_queueRefresh", "onDecorationRegistered", "onDecorationRemoved", "decoration", "_removeDecoration", "refreshDecorations", "_renderDecoration", "_refreshStyle", "_refreshXPosition", "_createElement", "marker", "display", "onRenderEmitter", "onDispose", "anchor", "right", "delete", "_zonePool", "_zonePoolIndex", "_linePadding", "full", "center", "addDecoration", "overviewRulerOptions", "z", "_lineIntersectsZone", "_lineAdjacentToZone", "_addLineToZone", "startBufferLine", "endBufferLine", "setPadding", "padding", "ColorZoneStore", "drawHeight", "drawWidth", "drawX", "_colorZoneStore", "_shouldUpdateDimensions", "_shouldUpdateAnchor", "_lastKnownBufferLength", "_canvas", "_refreshCanvasDimensions", "insertBefore", "_registerDecorationListeners", "_registerBufferChangeListeners", "_registerDimensionChangeListeners", "_refreshDrawHeightConstants", "_refreshColorZonePadding", "_containerHeight", "clientHeight", "_refreshDrawConstants", "outerWidth", "innerWidth", "pixelsPerLine", "nonFullHeight", "_width", "_refreshDecorations", "clearRect", "lineWidth", "zones", "_renderColorZone", "updateCanvasDimensions", "updateAnchor", "_textarea", "_coreService", "_isComposing", "_isSendingComposition", "_compositionPosition", "_dataAlreadySent", "_finalizeComposition", "_handleAnyTextareaChanges", "waitForPropagation", "input", "oldValue", "dontRecurse", "fontFamily", "fontSize", "compositionViewBounds", "ICoreService", "getCoordsRelativeToElement", "rect", "elementStyle", "getComputedStyle", "leftPadding", "parseInt", "getPropertyValue", "topPadding", "colCount", "hasValidCharSize", "isSelection", "moveToRequestedRow", "startY", "targetY", "bufferService", "applicationCursor", "wrappedRowsForRow", "rowsToMove", "wrappedRows", "direction", "verticalDirection", "isWrapped", "repeat", "currentRow", "lineWraps", "startCol", "endCol", "forward", "currentCol", "bufferStr", "mod", "count", "str", "rpt", "targetX", "rowDifference", "currX", "CONSTRUCTOR_ONLY_OPTIONS", "_core", "_addonManager", "AddonManager", "_publicOptions", "getter", "propName", "setter", "_checkReadonlyOptions", "desc", "defineProperty", "includes", "_checkProposedApi", "allowProposedApi", "onBell", "onBinary", "onData", "onWriteParsed", "_parser", "ParserApi", "UnicodeApi", "_buffer", "BufferNamespaceApi", "mouseTrackingMode", "applicationCursorKeysMode", "applicationKeypadMode", "applicationKeypad", "insertMode", "modes", "originMode", "origin", "reverseWraparoundMode", "reverseWraparound", "sendFocusMode", "wraparoundMode", "wraparound", "columns", "_verifyIntegers", "registerMarker", "_verifyPositiveIntegers", "scrollPages", "pageCount", "scrollToTop", "scrollToLine", "writeUtf8", "writeln", "getOption", "setOption", "loadAddon", "addon", "values", "Infinity", "isNaN", "_alpha", "_colors", "_rendererId", "_scaledCharWidth", "_scaledCharHeight", "_scaledCellWidth", "_scaledCellHeight", "_scaledCharLeft", "_scaledCharTop", "_columnSelectMode", "_currentGlyphIdentifier", "chars", "code", "bold", "dim", "italic", "_initCanvas", "_charAtlas", "throwIfFalsy", "_clearAll", "onOptionsChanged", "onGridChanged", "_selectionStart", "_selectionEnd", "colorSet", "_refreshCharAtlas", "_setTransparency", "oldCanvas", "cloneNode", "replaceChild", "acquireCharAtlas", "warmUp", "scaledCharWidth", "scaledCharHeight", "scaledCharLeft", "scaledCharTop", "_fillCells", "_fillMiddleLineAtCells", "cellOffset", "_fillBottomLineAtCells", "_fillLeftLineAtCell", "_strokeRectAtCell", "strokeRect", "_clearCells", "_fillCharTrueColor", "cell", "font", "_getFont", "textBaseline", "TEXT_BASELINE", "_clipRow", "drawSuccess", "customGlyphs", "tryDrawCustomChar", "getChars", "fillText", "_drawChars", "contrastColor", "_getContrastColor", "isFgRGB", "isBgRGB", "_drawUncachedChars", "isInverse", "isBgDefault", "INVERTED_DEFAULT_COLOR", "getBgColor", "isFgDefault", "getFgColor", "DEFAULT_COLOR", "drawBoldTextInBrightColors", "isBold", "WHITESPACE_CELL_CHAR", "getCode", "WHITESPACE_CELL_CODE", "isDim", "isItalic", "hasOverrides", "getDecorationsAtCell", "backgroundColorRGB", "foregroundColorRGB", "draw", "fgOverride", "save", "opaque", "AttributeData", "join", "globalAlpha", "DIM_OPACITY", "restore", "beginPath", "clip", "fontWeightBold", "fontWeight", "bgOverride", "isTop", "layer", "_isCellInSelection", "minimumContrastRatio", "excludeFromContrastRatioDemands", "adjustedColor", "fgColor", "fgColorMode", "getFgColorMode", "bgColor", "bgColorMode", "getBgColorMode", "temp", "temp2", "bgRgba", "_resolveBackgroundRgba", "fgRgba", "_resolveForegroundRgba", "ensureContrastRatio", "inverse", "BaseRenderLayer", "BLINK_INTERVAL", "container", "rendererId", "_onRequestRedraw", "_coreBrowserService", "decorationService", "_cell", "CellData", "_state", "isFocused", "_cursorRenderers", "_renderBarCursor", "_renderBlockCursor", "_renderUnderlineCursor", "_cursorBlinkStateManager", "_clearCursor", "restartBlinkAnimation", "pause", "resume", "cursorBlink", "CursorBlinkStateManager", "_render", "isPaused", "triggeredByAnimationFrame", "isCursorHidden", "viewportRelativeCursorY", "loadCell", "cursorStyle", "_renderBlurCursor", "isCursorVisible", "cursorWidth", "strokeStyle", "CursorRenderLayer", "_restartInterval", "_blinkStartTimeout", "_blinkInterval", "clearInterval", "_animationTimeRestarted", "timeToStart", "time", "setInterval", "U", "N", "K", "G", "V", "X", "Z", "Y", "J", "$", "Q", "ee", "te", "re", "ie", "ne", "oe", "se", "ae", "ce", "le", "he", "ue", "fe", "_e", "de", "pe", "ve", "ye", "ge", "me", "be", "Se", "Ce", "we", "Le", "Ee", "xe", "Re", "ke", "Me", "Ae", "Oe", "De", "Te", "Be", "Pe", "Ie", "He", "je", "Fe", "We", "Ue", "qe", "Ne", "ze", "Ke", "Ge", "Ve", "Xe", "Ze", "Ye", "Je", "$e", "Qe", "et", "tt", "rt", "it", "nt", "ot", "st", "at", "ct", "lt", "ht", "ut", "ft", "_t", "dt", "pt", "vt", "yt", "gt", "mt", "bt", "St", "Ct", "wt", "Lt", "Et", "blockElementDefinitions", "patternCharacterDefinitions", "boxDrawingDefinitions", "xp", "yp", "powerlineDefinitions", "horizontalPadding", "xOffset", "yOffset", "blockElementDefinition", "charDefinition", "box", "xEighth", "yEighth", "patternDefinition", "patternSet", "cachedPatterns", "pattern", "tmpCanvas", "tmpCtx", "imageData", "ImageData", "startsWith", "parseFloat", "putImageData", "createPattern", "boxDrawingDefinition", "instructions", "actualInstructions", "instruction", "svgToCanvasInstructionMap", "args", "translateArgs", "error", "stroke", "closePath", "powerlineDefinition", "fill", "clamp", "bezierCurveTo", "lineTo", "moveTo", "cache", "GridCache", "onShowLinkUnderline", "onHideLinkUnderline", "middleRowCount", "is256Color", "LinkRenderLayer", "nextRendererId", "instantiationService", "_id", "_renderLayers", "TextRenderLayer", "SelectionRenderLayer", "_devicePixelRatio", "_updateDimensions", "removeTerminalFromCache", "onDevicePixelRatioChange", "onCharSizeChanged", "_runOperation", "operation", "renderRows", "letterSpacing", "IInstantiationService", "isPowerlineGlyph", "codepoint", "_clearState", "_didStateChange", "viewportStartRow", "viewportEndRow", "viewportCappedStartRow", "viewportCappedEndRow", "startRowEndCol", "middleRowsCount", "_areCoordinatesEqual", "coord1", "coord2", "_characterWidth", "_characterFont", "_characterOverlapCache", "_workCell", "terminalFont", "_forEachCell", "firstRow", "lastRow", "joinedRanges", "getJoinedCharacters", "isJoined", "lastCharX", "JoinedCellData", "translateToString", "_isOverlapping", "getCodePoint", "NULL_CELL_CODE", "_drawBackground", "prevFillStyle", "nextFillStyle", "isBgPalette", "_drawForeground", "isInvisible", "isUnderline", "isStrikethrough", "beginFrame", "hasOwnProperty", "overlaps", "measureText", "_didWarmUp", "_doWarmUp", "BaseCharAtlas", "charAtlasCache", "newConfig", "generateConfig", "ownedByIndex", "entry", "ownedBy", "configEquals", "config", "atlas", "newEntry", "DynamicCharAtlas", "clonedColors", "colorCode", "isLegacyEdge", "CHAR_ATLAS_CELL_SPACING", "TEXTURE_WIDTH", "TEXTURE_HEIGHT", "TRANSPARENT_COLOR", "getGlyphCacheKey", "glyph", "_config", "_drawToCacheCount", "_glyphsWaitingOnBitmap", "_bitmapCommitTimeout", "_bitmap", "_cacheCanvas", "_cacheCtx", "_tmpCtx", "_height", "capacity", "_cacheMap", "LRUMap", "prealloc", "_canCache", "glyphKey", "cacheValue", "_drawFromCache", "peek", "_drawToCache", "_toCoordinateX", "_toCoordinateY", "isEmpty", "cacheX", "cacheY", "drawImage", "inBitmap", "_getColorFromAnsiIndex", "idx", "_getBackgroundColor", "_getForegroundColor", "fontStyle", "clearColor", "offset", "_addGlyphToBitmap", "isSafari", "_generateBitmap", "glyphsMovingToBitmap", "createImageBitmap", "then", "bitmap", "NoneCharAtlas", "_map", "_head", "_tail", "_nodePool", "_unlinkNode", "prev", "_appendNode", "tail", "nodePool", "peekValue", "head", "TERMINAL_CLASS_PREFIX", "FG_CLASS_PREFIX", "BG_CLASS_PREFIX", "FOCUS_CLASS", "nextTerminalId", "_linkifier", "_linkifier2", "_terminalClass", "_refreshRowElements", "_selectionContainer", "_injectCss", "_rowFactory", "DomRendererRowFactory", "_onLinkHover", "_onLinkLeave", "_themeStyleElement", "_dimensionsStyleElement", "overflow", "styles", "_terminalSelector", "BOLD_CLASS", "ITALIC_CLASS", "CURSOR_CLASS", "CURSOR_STYLE_BLOCK_CLASS", "CURSOR_BLINK_CLASS", "CURSOR_STYLE_BAR_CLASS", "CURSOR_STYLE_UNDERLINE_CLASS", "documentFragment", "isXFlipped", "_createSelectionElement", "colStart", "colEnd", "cursorAbsoluteY", "rowElement", "createRow", "_setCellUnderline", "enabled", "span", "textDecoration", "DIM_CLASS", "UNDERLINE_CLASS", "STRIKETHROUGH_CLASS", "isCursorRow", "lineLength", "charElement", "isInSelection", "resolvedBg", "_addStyle", "padStart", "_applyMinimumContrast", "padChar", "isSelectAllActive", "selectionStartLength", "areSelectionValuesReversed", "startPlusLength", "onTrim", "SelectionModel", "_onCharSizeChange", "_measureStrategy", "DomMeasureStrategy", "_parentElement", "_result", "_measureElement", "geometry", "firstCell", "combinedData", "isCombined", "setFromCharData", "getAsCharData", "_characterJoiners", "_nextCharacterJoinerId", "joiner", "ranges", "lineStr", "rangeStartColumn", "currentStringIndex", "rangeStartStringIndex", "rangeAttrFG", "rangeAttrBG", "getBg", "getTrimmedLength", "_getJoinedRanges", "startIndex", "endIndex", "allJoinedRanges", "joinerRanges", "_mergeRanges", "_stringRangesToCellRanges", "currentRangeIndex", "currentRangeStarted", "currentRange", "getString", "newRange", "inRange", "getRootNode", "activeElement", "hasFocus", "_renderer", "_isPaused", "_needsFullRefresh", "_isNextRenderRedrawOnly", "_needsSelectionRefresh", "_canvasWidth", "_canvasHeight", "_selectionState", "_onDimensionsChange", "_onRenderedViewportChange", "_onRefreshRequest", "_renderDebouncer", "_fullRefresh", "_handleOptionsChanged", "onCharSizeChange", "IntersectionObserver", "_onIntersectionChange", "threshold", "observe", "disconnect", "isIntersecting", "intersectionRatio", "isRedrawOnly", "_fireOnCanvasResize", "NON_BREAKING_SPACE_CHAR", "ALL_NON_BREAKING_SPACE_REGEX", "_dragScrollAmount", "_enabled", "_mouseDownTimeStamp", "_oldHasSelection", "_oldSelectionStart", "_oldSelectionEnd", "_onLinuxMouseSelection", "_onRedrawRequest", "_onRequestScrollLines", "_mouseUpListener", "_onMouseUp", "onUserInput", "_trimListener", "_onTrim", "_onBufferActivate", "_model", "_activeSelectionMode", "_removeMouseDownListeners", "finalSelectionStart", "finalSelectionEnd", "lineText", "isLinuxMouseSelection", "_isClickInSelection", "_getMouseBufferCoords", "_areCoordsInSelection", "isCellInSelection", "_selectWordAtCursor", "allowWhitespaceOnlySelection", "getRangeLength", "_selectWordAt", "_getMouseEventScrollAmount", "terminalHeight", "macOptionClickForcesSelection", "timeStamp", "_onIncrementalClick", "detail", "_onSingleClick", "_onDoubleClick", "_onTripleClick", "_addMouseDownListeners", "_dragScrollIntervalTimer", "_dragScroll", "hasWidth", "_selectLineAt", "previousSelectionEnd", "_selectToWordAt", "timeElapsed", "coordinates", "moveToCellSequence", "_fireEventIfSelectionChanged", "_fireOnSelectionChange", "_convertViewportColToCharacterIndex", "charIndex", "_getWordAt", "followWrappedLinesAbove", "followWrappedLinesBelow", "charOffset", "leftWideCharCount", "rightWideCharCount", "leftLongCharOffset", "rightLongCharOffset", "charAt", "_isCharWordSeparator", "trim", "previousBufferLine", "previousLineWordPosition", "nextBufferLine", "nextLineWordPosition", "wordPosition", "wordSeparator", "wrappedRange", "getWrappedRangeForLine", "last", "createDecorator", "_audioContext", "audioContextCtor", "AudioContext", "webkitAudioContext", "audioContext", "bellAudioSource", "createBufferSource", "decodeAudioData", "_base64ToArrayBuffer", "_removeMimeType", "bellSound", "connect", "destination", "base64", "binaryString", "atob", "len", "bytes", "Uint8Array", "dataURI", "_maxLength", "onDeleteEmitter", "onInsertEmitter", "onTrimEmitter", "_array", "Array", "_startIndex", "_length", "newMaxLength", "newArray", "_getCyclicIndex", "newLength", "recycle", "deleteCount", "items", "countToTrim", "trimStart", "shiftElements", "expandListBy", "CircularList", "clone", "val", "depth", "clonedObject", "isArray", "rgb", "toPaddedHex", "contrastRatio", "l1", "l2", "fgR", "fgG", "fgB", "bgR", "bgG", "bgB", "ratio", "rgbaColor", "toChannels", "rgbaMatch", "relativeLuminance2", "rs", "gs", "bs", "pow", "relativeLuminance", "reduceLuminance", "cr", "increaseLuminance", "bgL", "fgL", "resultB", "resultA", "resultARatio", "hasWriteSyncWarnHappened", "_onBinary", "_onData", "_onLineFeed", "_onWriteParsed", "InstantiationService", "OptionsService", "BufferService", "LogService", "CoreService", "CoreMouseService", "ICoreMouseService", "_dirtyRowService", "DirtyRowService", "IDirtyRowService", "unicodeService", "UnicodeService", "_charsetService", "CharsetService", "ICharsetService", "InputHandler", "markRangeDirty", "scrollBottom", "_writeBuffer", "WriteBuffer", "promiseResult", "parse", "_onScrollApi", "_windowsMode", "writeSync", "maxSubsequentCalls", "LogLevelEnum", "WARN", "MINIMUM_COLS", "MINIMUM_ROWS", "scroll", "eraseAttr", "registerEscHandler", "registerDcsHandler", "registerCsiHandler", "registerOscHandler", "windowsMode", "_enableWindowsMode", "updateWindowsModeWrappedState", "final", "_listeners", "_disposed", "_event", "arg1", "arg2", "queue", "call", "from", "to", "GLEVEL", "MAX_PARSEBUFFER_LENGTH", "paramToWindowOption", "opts", "setWinLines", "restoreWin", "minimizeWin", "setWinPosition", "setWinSizePixels", "raiseWin", "lowerWin", "refreshWin", "setWinSizeChars", "maximizeWin", "fullscreenWin", "getWinState", "getWinPosition", "getWinSizePixels", "getScreenSizePixels", "getCellSizePixels", "getWinSizeChars", "getScreenSizeChars", "getIconTitle", "getWinTitle", "pushTitle", "popTitle", "_data", "Uint32Array", "hook", "params", "put", "concat", "subarray", "unhook", "success", "utf32ToString", "_coreMouseService", "EscapeSequenceParser", "_parseBuffer", "_stringDecoder", "StringToUtf32", "_utf8Decoder", "Utf8ToUtf32", "_windowTitle", "_iconName", "_windowTitleStack", "_iconNameStack", "_curAttrData", "_eraseAttrDataInternal", "_onRequestBell", "_onRequestRefreshRows", "_onRequestReset", "_onRequestSendFocus", "_onRequestSyncScrollBar", "_onRequestWindowsOptionsReport", "_onA11yChar", "_onA11yTab", "_onColor", "_parseStack", "paused", "cursorStartX", "cursorStartY", "decodedLength", "_specialColors", "setCsiHandlerFallback", "identifier", "identToString", "toArray", "setEscHandlerFallback", "setExecuteHandlerFallback", "setOscHandlerFallback", "setDcsHandlerFallback", "payload", "setPrintHandler", "print", "insertChars", "intermediates", "scrollLeft", "cursorUp", "scrollRight", "cursorDown", "cursorForward", "cursorBackward", "cursorNextLine", "cursorPrecedingLine", "cursorCharAbsolute", "cursorPosition", "cursorForwardTab", "eraseInDisplay", "prefix", "eraseInLine", "insertLines", "deleteLines", "deleteChars", "scrollUp", "scrollDown", "eraseChars", "cursorBackwardTab", "charPosAbsolute", "hPositionRelative", "repeatPrecedingCharacter", "sendDeviceAttributesPrimary", "sendDeviceAttributesSecondary", "linePosAbsolute", "vPositionRelative", "hVPosition", "tabClear", "setMode", "setModePrivate", "resetMode", "resetModePrivate", "charAttributes", "deviceStatus", "deviceStatusPrivate", "softReset", "setCursorStyle", "setScrollRegion", "saveCursor", "windowOptions", "restoreCursor", "insertColumns", "deleteColumns", "setExecuteHandler", "BEL", "LF", "lineFeed", "VT", "FF", "carriageReturn", "BS", "backspace", "HT", "tab", "SO", "shiftOut", "SI", "shiftIn", "C1", "IND", "NEL", "nextLine", "HTS", "tabSet", "OscHandler", "setTitle", "setIconName", "setOrReportIndexedColor", "setOrReportFgColor", "setOrReportBgColor", "setOrReportCursorColor", "restoreIndexedColor", "restoreFgColor", "restoreBgColor", "restoreCursorColor", "reverseIndex", "keypadApplicationMode", "keypadNumericMode", "fullReset", "setgLevel", "selectDefaultCharset", "flag", "selectCharset", "CHARSETS", "screenAlignmentPattern", "setErrorHandler", "DECRQSS", "_preserveStack", "_logSlowResolvingAsync", "Promise", "race", "res", "rej", "catch", "err", "wasPaused", "DEBUG", "prototype", "clearRange", "decode", "chWidth", "charset", "curAttr", "bufferRow", "markDirty", "setCellFromCodePoint", "extended", "wcwidth", "ch", "stringFromCodePoint", "_eraseAttrData", "insertCells", "getNullCell", "NULL_CELL_WIDTH", "addCodepointToCell", "precedingCodepoint", "hasContent", "DcsHandler", "convertEol", "_restrictCursor", "originalX", "nextStop", "maxCol", "_setCursor", "_moveCursor", "diffToTop", "diffToBottom", "param", "tabs", "prevStop", "_eraseInBufferLine", "clearWrap", "replaceCells", "_resetBufferLine", "clearMarkers", "scrollBackSize", "scrollBottomRowsOffset", "scrollBottomAbsolute", "deleteCells", "_is", "term", "termName", "setgCharset", "DEFAULT_CHARSET", "activeEncoding", "activateAltBuffer", "activateNormalBuffer", "_updateAttrColor", "mode", "c1", "c2", "c3", "fromColorRGB", "_extractColor", "accu", "cSpace", "advance", "hasSubParams", "subparams", "getSubParams", "underlineColor", "_processUnderline", "underlineStyle", "updateExtended", "savedX", "savedY", "savedCurAttrData", "savedCharset", "isBlinking", "bottom", "second", "_savedCharset", "slots", "spec", "parseColor", "_setOrReportSpecialColor", "collectAndFlag", "scrollRegionHeight", "level", "markAllDirty", "_disposables", "unregister", "disposables", "array", "isNode", "navigator", "userAgent", "platform", "test", "isIpad", "isIphone", "_getKey", "insert", "_search", "getKeyIterator", "mid", "SortedList", "fillFallback", "constructor", "lastChar", "CHAR_DATA_CODE_INDEX", "ExtendedAttrs", "newObj", "isBlink", "isFgPalette", "isAttributeDefault", "hasExtendedAttrs", "getUnderlineColor", "getUnderlineColorMode", "isUnderlineColorRGB", "isUnderlineColorPalette", "isUnderlineColorDefault", "getUnderlineStyle", "MAX_BUFFER_SIZE", "_hasScrollback", "_nullCell", "fromCharData", "NULL_CELL_CHAR", "_whitespaceCell", "WHITESPACE_CELL_WIDTH", "_isClearing", "_cols", "_rows", "_getCorrectBufferLength", "getWhitespaceCell", "BufferLine", "maxLength", "relativeY", "correctBufferLength", "scrollback", "fillViewportRows", "fillAttr", "newCols", "newRows", "nullCell", "addToY", "amountToTrim", "_isReflowEnabled", "_reflow", "_reflowLarger", "_reflowSmaller", "toRemove", "reflowLargerGetLinesToRemove", "newLayoutResult", "reflowLargerCreateNewLayout", "reflowLargerApplyNewLayout", "layout", "_reflowLargerAdjustViewport", "countRemoved", "viewportAdjustments", "toInsert", "countToInsert", "wrappedLines", "absoluteY", "trimmedLines", "lastLineLength", "destLineLengths", "reflowSmallerGetNewLineLengths", "linesToAdd", "newLines", "newLine", "destLineIndex", "destCol", "srcLineIndex", "srcCol", "cellsToCopy", "copyCellsFrom", "wrappedLinesIndex", "getWrappedLineTrimmedLength", "setCell", "insertEvents", "originalLines", "originalLinesLength", "originalLineIndex", "nextToInsertIndex", "nextToInsert", "countInsertedSoFar", "nextI", "insertCountEmitted", "lineIndex", "trimRight", "CHAR_DATA_WIDTH_INDEX", "CHAR_DATA_CHAR_INDEX", "tabStopWidth", "Marker", "onInsert", "onDelete", "_removeMarker", "startOverscan", "endOverscan", "BufferStringIterator", "Buffer", "_trimRight", "_endIndex", "_startOverscan", "_endOverscan", "_current", "fillCellData", "_combined", "_extendedAttrs", "cp", "CHAR_DATA_ATTR_INDEX", "codePoint", "eAttrs", "keys", "copyFrom", "src", "applyInReverse", "srcData", "srcCombinedKeys", "bufferCols", "endsInNull", "followingLineStartsWithWide", "oldCols", "bufferAbsoluteY", "srcTrimmedTineLength", "srcRemainingCells", "destRemainingCells", "countToRemove", "nextToRemoveIndex", "nextToRemoveStart", "countRemovedSoFar", "newLayout", "newLayoutLines", "newLineLengths", "cellsNeeded", "reduce", "srcLine", "cellsAvailable", "oldTrimmedLength", "endsWithWide", "_normal", "_alt", "inactiveBuffer", "BufferSet", "obj", "combined", "DEFAULT_ATTR", "_nextId", "isDisposed", "_onDispose", "NUL", "SOH", "STX", "EOT", "ENQ", "ACK", "DLE", "DC1", "DC2", "DC3", "DC4", "NAK", "SYN", "ETB", "CAN", "EM", "SUB", "FS", "GS", "RS", "US", "SP", "DEL", "PAD", "HOP", "BPH", "NBH", "SSA", "ESA", "HTJ", "VTS", "PLD", "PLU", "RI", "SS2", "SS3", "DCS", "PU1", "PU2", "STS", "CCH", "MW", "SPA", "EPA", "SOS", "SGCI", "SCI", "CSI", "OSC", "PM", "APC", "KEYCODE_KEY_MAPPINGS", "applicationCursorMode", "modifiers", "keyMapping", "keyString", "toUpperCase", "toLowerCase", "_interim", "startPos", "interim", "byte1", "byte2", "byte3", "byte4", "discardInterim", "tmp", "missing", "fourStop", "table", "BMP_COMBINING", "HIGH_COMBINING", "version", "num", "ucs", "UnicodeV6", "qmt", "queueMicrotask", "cb", "resolve", "_action", "_callbacks", "_pendingData", "_bufferOffset", "_isSyncWriting", "_syncCalls", "chunk", "_innerWrite", "lastTime", "startTime", "RGB_REX", "HASH_REX", "pad", "bits", "s2", "low", "base", "adv", "PAYLOAD_LIMIT", "EMPTY_HANDLERS", "_handlers", "create", "_active", "_ident", "_handlerFb", "_stack", "loopPosition", "fallThrough", "registerHandler", "handlerList", "handlerIndex", "clearHandler", "setHandlerFallback", "handlerResult", "DcsParser", "EMPTY_PARAMS", "Params", "addParam", "_handler", "_params", "_hitLimit", "ret", "setDefault", "addMany", "codes", "TransitionTable", "NON_ASCII_PRINTABLE", "VT500_TRANSITION_TABLE", "blueprint", "apply", "unused", "PRINTABLES", "EXECUTABLES", "states", "_transitions", "handlers", "handlerPos", "transition", "chunkPos", "initialState", "currentState", "_collect", "_printHandlerFb", "_executeHandlerFb", "_csiHandlerFb", "_escHandlerFb", "_errorHandlerFb", "_printHandler", "_executeHandlers", "_csiHandlers", "_escHandlers", "_oscParser", "OscParser", "_dcsParser", "_errorHandler", "_identifier", "finalRange", "intermediate", "finalCode", "reverse", "clearPrintHandler", "clearEscHandler", "clearExecuteHandler", "clearCsiHandler", "clearDcsHandler", "clearOscHandler", "clearErrorHandler", "collect", "abort", "addSubParam", "addDigit", "handlersEsc", "jj", "_start", "_put", "MAX_VALUE", "maxSubParamsLength", "Int32Array", "_subParams", "_subParamsLength", "_subParamsIdx", "Uint16Array", "_rejectDigits", "_rejectSubDigits", "_digitIsSub", "fromArray", "newParams", "getSubParamsAll", "store", "cur", "_addons", "instance", "terminal", "loadedAddon", "_wrappedAddonDispose", "init", "getLine", "BufferLineApiView", "BufferApiView", "_line", "getCell", "_onBufferChange", "_alternate", "alternate", "addCsiHandler", "addDcsHandler", "addEscHandler", "addOscHandler", "provider", "versions", "activeVersion", "isUserScrolling", "_cachedBlankLine", "topRow", "bottomRow", "willBufferBeTrimmed", "isFull", "oldYdisp", "scrollAmount", "glevel", "_charsets", "DEFAULT_PROTOCOLS", "NONE", "restrict", "X10", "VT200", "DRAG", "ANY", "eventCode", "isSGR", "DEFAULT_ENCODINGS", "DEFAULT", "SGR", "_protocols", "_encodings", "_activeProtocol", "_activeEncoding", "_onProtocolChange", "_lastEvent", "addProtocol", "addEncoding", "name", "protocol", "encoding", "_compareEvents", "report", "triggerBinaryEvent", "down", "up", "drag", "move", "e1", "e2", "DEFAULT_MODES", "DEFAULT_DEC_PRIVATE_MODES", "_onUserInput", "_scrollToBottom", "wasUserInput", "disableStdin", "_decorations", "_onDecorationRegistered", "_onDecorationRemoved", "Decoration", "getDecorationsAtLine", "xmin", "xmax", "_cachedBg", "_cachedFg", "foregroundColor", "_end", "_entries", "service", "ServiceCollection", "_services", "getService", "ctor", "serviceDependencies", "getServiceDependencies", "sort", "serviceArgs", "dependency", "firstServiceArgPos", "optionsKeyToLogLevel", "info", "INFO", "ERROR", "off", "OFF", "_updateLogLevel", "_evalLazyOptionalParams", "optionalParams", "_log", "message", "log", "DEFAULT_BELL_SOUND", "DEFAULT_OPTIONS", "altClickMovesCursor", "FONT_WEIGHT_OPTIONS", "_onOptionChange", "defaultOptions", "newValue", "_sanitizeAndValidateOption", "_setupOptions", "storeServiceDependency", "serviceRegistry", "decorator", "arguments", "_providers", "_onChange", "defaultProvider", "_activeProvider", "__webpack_module_cache__", "__webpack_require__", "moduleId", "cachedModule", "__webpack_modules__", "require_comment", "__commonJSMin", "exports", "module", "mod", "CodeMirror", "noOptions", "nonWS", "Pos", "cmp", "firstNonWS", "str", "found", "cm", "options", "minLine", "ranges", "mode", "i", "from", "to", "probablyInsideString", "pos", "line", "getMode", "self", "firstLine", "commentString", "end", "pad", "blankLines", "baseString", "whitespace", "cut", "startString", "endString", "lastLineHasText", "lead", "atCursor", "empty", "start", "lineString", "lines", "didSomething", "lineComment", "endPos", "startLine", "open", "endLine", "close", "insideStart", "insideEnd", "lastStart", "firstEnd", "almostLastStart", "openEnd", "foundEnd", "require_continuecomment", "__commonJSMin", "exports", "module", "mod", "CodeMirror", "nonspace", "repeat", "n", "continueComment", "cm", "ranges", "mode", "inserts", "i", "pos", "modeHere", "insert", "line", "found", "blockStart", "lineCmt", "end", "nonspaceAfter", "tabSize", "numTabs", "continueLineCommentEnabled", "next", "nextFound", "ch", "str", "m", "opt", "val", "prev", "key", "map", "require_placeholder", "__commonJSMin", "exports", "module", "mod", "CodeMirror", "cm", "val", "old", "prev", "onBlur", "onChange", "onComposition", "clearPlaceholder", "wrapper", "setPlaceholder", "elt", "placeHolder", "empty", "input", "isEmpty", "require_closebrackets", "__commonJSMin", "exports", "module", "mod", "CodeMirror", "defaults", "Pos", "cm", "val", "old", "keyMap", "ensureBound", "getOption", "conf", "name", "handleBackspace", "handleEnter", "chars", "i", "ch", "key", "handler", "handleChar", "getConfig", "deflt", "mode", "pairs", "ranges", "around", "charsAround", "cur", "explode", "linesep", "moveSel", "line", "dir", "newRanges", "primary", "range", "pos", "contractSelection", "sel", "inverted", "closeBefore", "triples", "identical", "opening", "type", "curType", "next", "stringStartsAfter", "prev", "left", "right", "sels", "str", "token", "require_matchbrackets", "__commonJSMin", "exports", "module", "mod", "CodeMirror", "ie_lt8", "Pos", "matching", "bracketRegex", "config", "findMatchingBracket", "cm", "where", "line", "pos", "afterCursor", "re", "match", "dir", "style", "found", "scanForBracket", "maxScanLen", "maxScanLines", "stack", "lineEnd", "lineNo", "end", "ch", "matchBrackets", "autoclear", "maxHighlightLen", "highlightNonMatching", "marks", "ranges", "i", "clear", "doMatchBrackets", "clearHighlighted", "val", "old", "oldConfig", "require_searchcursor", "__commonJSMin", "exports", "module", "mod", "CodeMirror", "Pos", "regexpFlags", "regexp", "flags", "ensureFlags", "current", "target", "i", "maybeMultiline", "searchRegexpForward", "doc", "start", "line", "ch", "last", "string", "match", "searchRegexpForwardMultiline", "chunk", "curLine", "before", "inside", "startLine", "startCh", "lastMatchIn", "endMargin", "from", "newMatch", "end", "searchRegexpBackward", "first", "searchRegexpBackwardMultiline", "chunkSize", "doFold", "noFold", "str", "adjustPos", "orig", "folded", "pos", "foldFunc", "min", "max", "mid", "len", "searchStringForward", "query", "caseFold", "fold", "lines", "search", "found", "cutFrom", "endString", "lastLine", "searchStringBackward", "top", "topString", "SearchCursor", "options", "reverse", "head", "result", "newText", "origin", "ranges", "cur", "require_sublime", "__commonJSMin", "exports", "module", "mod", "CodeMirror", "cmds", "Pos", "findPosSubword", "doc", "start", "dir", "line", "state", "type", "startPos", "pos", "e", "i", "next", "cat", "moveSubword", "cm", "range", "info", "visibleBottomLine", "visibleTopLine", "ranges", "lineRanges", "from", "to", "extended", "insertLine", "above", "len", "newSelection", "last", "head", "at", "wordAt", "end", "fullWord", "word", "text", "query", "cur", "found", "isSelectedRange", "prevAnchor", "prevHead", "sel", "addCursorToSelection", "newRanges", "newAnchor", "newHead", "newRange", "mirror", "selectBetweenBrackets", "opening", "closing", "puncType", "prev", "linesToMove", "newSels", "joined", "offset", "obj", "anchor", "actual", "rangeCount", "sortLines", "caseSensitive", "direction", "toSort", "selected", "lines", "a", "b", "au", "bu", "marks", "current", "j", "k", "modifyWordOrSelection", "indices", "replacements", "cursors", "indentUnit", "cursor", "toStartOfLine", "column", "deletePos", "prevIndent", "str", "tmp", "getTarget", "findAndGoTo", "forward", "target", "matches", "primaryIndex", "keyMap", "mac", "require_python", "__commonJSMin", "exports", "module", "mod", "CodeMirror", "wordRegexp", "words", "wordOperators", "commonKeywords", "commonBuiltins", "top", "state", "conf", "parserConf", "ERRORCLASS", "delimiters", "operators", "i", "hangingIndent", "myKeywords", "myBuiltins", "py3", "identifiers", "stringPrefixes", "keywords", "builtins", "tokenBase", "stream", "sol", "scopeOffset", "lineOffset", "pushPyScope", "dedent", "style", "tokenBaseInner", "inFormat", "floatLiteral", "intLiteral", "isFmtString", "formatStringFactory", "tokenStringFactory", "delimiter", "tokenOuter", "singleline", "OUTCLASS", "tokenNestedExpr", "depth", "inner", "tokenString", "pushBracketScope", "type", "align", "indented", "tokenLexer", "current", "delimiter_index", "external", "basecolumn", "addErr", "textAfter", "scope", "closing", "str", "codePointsToString", "code", "ord", "codePointsToString_default", "stringToCodePoints", "code", "c", "stringToCodePoints_default", "Default", "code", "codePointsToString_default", "stringToCodePoints_default", "Default_default", "Base64", "Default_default", "code", "c", "Base64_default", "Lang", "id", "name", "runner", "url", "args", "highlighterRef", "code", "input", "import_index", "Runner", "EventEmitter", "message", "Runner_default", "WorkerRunner", "Runner_default", "workerURL", "error", "data", "code", "input", "args", "message", "options", "Worker_default", "init", "WasmerSDK", "Wasmer", "Runner_default", "packageName", "filename", "spawnOptions", "#package", "#instance", "code", "input", "args", "preparingMessageTimeout", "entrypointArgs", "arg", "codePointsToString_default", "exitCode", "stderr", "stdout", "char", "Wasmer_default", "Langs", "langs", "lang", "langId", "code", "args", "input", "workerRunner", "workerURL", "runner", "Worker_default", "wasmerRunner", "packageName", "filename", "spawnOptions", "Wasmer_default", "import_shell", "Bash", "Lang", "wasmerRunner", "Bash_default", "Hexdump", "Default_default", "code", "c", "Hexdump_default", "import_javascript", "JavaScript", "Lang", "workerRunner", "JavaScript_default", "import_ruby", "Ruby", "Lang", "wasmerRunner", "Ruby_default", "import_perl", "Perl", "Lang", "workerRunner", "Perl_default", "import_codemirror", "import_melba_toast", "Renderers", "renderers", "mimeType", "value", "renderer", "prepend", "char", "createDevice", "renderers", "Renderers", "import_codemirror", "Abstract", "inputs", "tag", "c", "Abstract_default", "replaceBinaryBytes", "code", "replacement", "replaceBinaryBytes_default", "Code", "Abstract_default", "parent", "options", "element", "textarea", "char", "data", "eventName", "handler", "args", "binaryReplacementChar", "code", "replaceBinaryBytes_default", "key", "value", "type", "c", "Code_default", "Abstract", "mimeType", "tag", "hidden", "element", "Abstract_default", "import_javascript", "import_perl", "Code", "Abstract_default", "parent", "options", "textarea", "UI_default", "mimeType", "char", "Code_default", "IFrame", "Abstract_default", "parent", "mimeType", "char", "container", "IFrame_default", "Decoders", "decoders", "code", "decoder", "decoders", "Decoders", "IO", "stdin", "args", "value", "decoders", "char", "IO_default", "Options", "name", "defaultValue", "value", "options", "Image", "IFrame_default", "mimeType", "options", "char", "Image_default", "Inputs", "inputs", "input", "toActivate", "value", "eventName", "handler", "replaceBinaryBytes", "buffer", "type", "char", "writeBuffer", "Inputs_default", "InvalidFormat", "InvalidFormat_default", "PBMImage", "Image_default", "mimeType", "char", "e", "InvalidFormat_default", "header", "format", "width", "height", "offset", "maxValue", "canvas", "context", "imageData", "data", "index", "value", "binary", "type", "withoutMaxValue", "withMaxValue", "match", "separator", "block", "currentPosition", "comment", "currentChar", "bitMask", "rowPosition", "PBMImage_default", "import_xterm", "MINIMUM_COLS", "MINIMUM_ROWS", "FitAddon", "terminal", "dims", "core", "parentElementStyle", "parentElementHeight", "parentElementWidth", "elementStyle", "elementPadding", "elementPaddingVer", "elementPaddingHor", "availableHeight", "availableWidth", "TTY", "_TTY", "Abstract_default", "parent", "options", "FitAddon", "text", "input", "escapeInput", "x", "y", "maxX", "maxY", "cols", "value", "type", "results", "visibleLines", "dimensions", "char", "rows", "TTY_default", "import_comment", "import_continuecomment", "import_placeholder", "import_closebrackets", "import_matchbrackets", "import_sublime", "UI", "_UI", "stdoutContainer", "Inputs_default", "Code_default", "createDevice", "PBMImage_default", "Image_default", "IFrame_default", "TTY_default", "IO_default", "link", "key", "event", "name", "value", "options", "previousLang", "e", "langs", "langKey", "lang", "option", "inputs", "decoders", "element", "code", "decoder", "decodedCode", "started", "runner", "stopHandler", "output", "error", "exitCode", "message", "type", "args", "arg", "argButton", "currentValue", "expander", "collapser", "target", "mimeType", "setInput", "button", "hash", "data", "jsonData", "headerExpander", "footerExpander", "header", "footer", "input", "mime", "optionValues", "rawCode", "replaceBinaryBytes_default", "codePointsToString_default", "bytes", "char", "byteCount", "content", "toast", "UI_default", "Xxd", "Default_default", "code", "c", "Xxd_default", "import_python", "jq", "Lang", "code", "input", "args", "runner", "Wasmer_default", "jq_default", "decoders", "Xxd_default", "Hexdump_default", "Base64_default", "Default_default", "langs", "Bash_default", "JavaScript_default", "Ruby_default", "Perl_default", "jq_default", "ui", "UI_default"] } diff --git a/dist/js/langs/javascript-browser/worker.js b/dist/js/langs/javascript-browser/worker.js index e0ad385..6248b9a 100644 --- a/dist/js/langs/javascript-browser/worker.js +++ b/dist/js/langs/javascript-browser/worker.js @@ -1,4 +1,4 @@ -(()=>{var o=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var s=o((exports,module)=>{addEventListener("message",({data})=>{let{code,input}=data;prompt=()=>input,console.log=(...e)=>{postMessage({type:"output",output:e.join("")+` +var o=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var s=o((exports,module)=>{addEventListener("message",({data})=>{let{code,input}=data;prompt=()=>input,console.log=(...e)=>{postMessage({type:"output",output:e.join("")+` `})},console.warn=console.error=console.debug=(...e)=>{postMessage({type:"output",error:e.join("")+` -`})};let result;try{result=eval(code.map(e=>String.fromCharCode(e)).join("")),result instanceof Function&&(result=result(input))}catch(e){postMessage({type:"output",error:e.message}),result=null}postMessage({type:"done",output:result})})});s();})(); +`})};let result;try{result=eval(code.map(e=>String.fromCharCode(e)).join("")),result instanceof Function&&(result=result(input))}catch(e){postMessage({type:"output",error:e.message}),result=null}postMessage({type:"done",output:result})})});export default s(); //# sourceMappingURL=worker.js.map diff --git a/dist/js/langs/javascript-browser/worker.js.map b/dist/js/langs/javascript-browser/worker.js.map index 026e8f1..e28eb6b 100644 --- a/dist/js/langs/javascript-browser/worker.js.map +++ b/dist/js/langs/javascript-browser/worker.js.map @@ -2,6 +2,6 @@ "version": 3, "sources": ["../../../../js/langs/javascript-browser/worker.js"], "sourcesContent": ["addEventListener('message', ({ data }) => {\n const { code, input } = data;\n\n // overwrite builtins to support this approach\n // stdin\n prompt = () => input;\n\n // stdout\n console.log = (...data) => {\n postMessage({\n type: 'output',\n output: data.join('') + '\\n',\n });\n };\n\n // stderr\n console.warn =\n console.error =\n console.debug =\n (...data) => {\n postMessage({\n type: 'output',\n error: data.join('') + '\\n',\n });\n };\n\n let result;\n\n try {\n result = eval(code.map((char) => String.fromCharCode(char)).join(''));\n\n if (result instanceof Function) {\n result = result(input);\n }\n } catch (e) {\n postMessage({\n type: 'output',\n error: e.message,\n });\n\n // if we don't do this, we could end up with a function object that \"could not be cloned\":\n // https://stackoverflow.com/a/42376465/3145856\n result = null;\n }\n\n postMessage({\n type: 'done',\n output: result,\n });\n});\n"], - "mappings": "oEAAA,4CAAiB,UAAW,CAAC,CAAE,QAAW,CACxC,GAAM,CAAE,KAAM,OAAU,KAIxB,OAAS,IAAM,MAGf,QAAQ,IAAM,IAAI,IAAS,CACzB,YAAY,CACV,KAAM,SACN,OAAQ,EAAK,KAAK,EAAE,EAAI;AAAA,CAC1B,CAAC,CACH,EAGA,QAAQ,KACN,QAAQ,MACR,QAAQ,MACN,IAAI,IAAS,CACX,YAAY,CACV,KAAM,SACN,MAAO,EAAK,KAAK,EAAE,EAAI;AAAA,CACzB,CAAC,CACH,EAEJ,GAAI,QAEJ,GAAI,CACF,OAAS,KAAK,KAAK,IAAI,AAAC,GAAS,OAAO,aAAa,CAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAEhE,iBAAkB,WACpB,QAAS,OAAO,KAAK,EAEzB,OAAS,EAAP,CACA,YAAY,CACV,KAAM,SACN,MAAO,EAAE,OACX,CAAC,EAID,OAAS,IACX,CAEA,YAAY,CACV,KAAM,OACN,OAAQ,MACV,CAAC,CACH,CAAC", - "names": [] + "mappings": "8DAAA,IAAAA,EAAAC,EAAA,oCAAiB,UAAW,CAAC,CAAE,IAAK,IAAM,CACxC,GAAM,CAAE,KAAM,KAAM,EAAI,KAIxB,OAAS,IAAM,MAGf,QAAQ,IAAM,IAAIC,IAAS,CACzB,YAAY,CACV,KAAM,SACN,OAAQA,EAAK,KAAK,EAAE,EAAI;AAAA,CAC1B,CAAC,CACH,EAGA,QAAQ,KACN,QAAQ,MACR,QAAQ,MACN,IAAIA,IAAS,CACX,YAAY,CACV,KAAM,SACN,MAAOA,EAAK,KAAK,EAAE,EAAI;AAAA,CACzB,CAAC,CACH,EAEJ,IAAI,OAEJ,GAAI,CACF,OAAS,KAAK,KAAK,IAAKC,GAAS,OAAO,aAAaA,CAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAEhE,kBAAkB,WACpB,OAAS,OAAO,KAAK,EAEzB,OAAS,EAAG,CACV,YAAY,CACV,KAAM,SACN,MAAO,EAAE,OACX,CAAC,EAID,OAAS,IACX,CAEA,YAAY,CACV,KAAM,OACN,OAAQ,MACV,CAAC,CACH,CAAC", + "names": ["require_worker", "__commonJSMin", "data", "char"] } diff --git a/dist/js/langs/python-wasmer/worker.js b/dist/js/langs/python-wasmer/worker.js new file mode 100644 index 0000000..bd6dd5e --- /dev/null +++ b/dist/js/langs/python-wasmer/worker.js @@ -0,0 +1,24 @@ +(()=>{var Q={};function nn(t,n,e,r){return new(e||(e=Promise))(function(c,b){function g(p){try{y(r.next(p))}catch(h){b(h)}}function s(p){try{y(r.throw(p))}catch(h){b(h)}}function y(p){var h;p.done?c(p.value):(h=p.value,h instanceof e?h:new e(function(I){I(h)})).then(g,s)}y((r=r.apply(t,n||[])).next())})}var i;var Y=typeof TextDecoder<"u"?new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}):{decode:()=>{throw Error("TextDecoder not available")}};typeof TextDecoder<"u"&&Y.decode();var k=null;function j(){return k!==null&&k.buffer===i.memory.buffer||(k=new Uint8Array(i.memory.buffer)),k}function m(t,n){return t>>>=0,Y.decode(j().slice(t,t+n))}var v=new Array(128).fill(void 0);v.push(void 0,null,!0,!1);var W=v.length;function o(t){W===v.length&&v.push(v.length+1);let n=W;return W=v[n],v[n]=t,n}function _(t){return v[t]}var f=0,J=typeof TextEncoder<"u"?new TextEncoder("utf-8"):{encode:()=>{throw Error("TextEncoder not available")}},en=function(t,n){let e=J.encode(t);return n.set(e),{read:t.length,written:e.length}};function d(t,n,e){if(e===void 0){let s=J.encode(t),y=n(s.length,1)>>>0;return j().subarray(y,y+s.length).set(s),f=s.length,y}let r=t.length,c=n(r,1)>>>0,b=j(),g=0;for(;g127)break;b[c+g]=s}if(g!==r){g!==0&&(t=t.slice(g)),c=e(c,r,r=g+3*t.length,1)>>>0;let s=j().subarray(c+g,c+r);g+=en(t,s).written}return f=g,c}function l(t){return t==null}var A=null;function u(){return A!==null&&A.buffer===i.memory.buffer||(A=new Int32Array(i.memory.buffer)),A}function w(t){let n=_(t);return function(e){e<132||(v[e]=W,W=e)}(t),n}var R=null;function U(t){let n=typeof t;if(n=="number"||n=="boolean"||t==null)return`${t}`;if(n=="string")return`"${t}"`;if(n=="symbol"){let c=t.description;return c==null?"Symbol":`Symbol(${c})`}if(n=="function"){let c=t.name;return typeof c=="string"&&c.length>0?`Function(${c})`:"Function"}if(Array.isArray(t)){let c=t.length,b="[";c>0&&(b+=U(t[0]));for(let g=1;g1))return toString.call(t);if(r=e[1],r=="Object")try{return"Object("+JSON.stringify(t)+")"}catch{return"Object"}return t instanceof Error?`${t.name}: ${t.message} +${t.stack}`:r}var T=null;function q(){return T!==null&&T.buffer===i.memory.buffer||(T=new Float64Array(i.memory.buffer)),T}var M=new FinalizationRegistry(t=>{i.__wbindgen_export_3.get(t.dtor)(t.a,t.b)});function E(t,n,e,r){let c={a:t,b:n,cnt:1,dtor:e},b=(...g)=>{c.cnt++;let s=c.a;c.a=0;try{return r(s,c.b,...g)}finally{--c.cnt==0?(i.__wbindgen_export_3.get(c.dtor)(s,c.b),M.unregister(c)):c.a=s}};return b.original=c,M.register(b,c,c),b}function F(t,n,e){i._ZN12wasm_bindgen7convert8closures11invoke1_mut17h39693afad0d92ad2E(t,n,o(e))}function N(t,n,e,r){let c={a:t,b:n,cnt:1,dtor:e},b=(...g)=>{c.cnt++;try{return r(c.a,c.b,...g)}finally{--c.cnt==0&&(i.__wbindgen_export_3.get(c.dtor)(c.a,c.b),c.a=0,M.unregister(c))}};return b.original=c,M.register(b,c,c),b}function tn(t,n){return w(i._ZN129__LT_dyn_u20_core__ops__function__Fn_LT__LP__RP__GT__u2b_Output_u20__u3d__u20_R_u20_as_u20_wasm_bindgen__closure__WasmClosure_GT_8describe6invoke17h613009e110396e8aE(t,n))}function _n(t,n,e){return i._ZN12wasm_bindgen7convert8closures7invoke117h27cd5385e9d886a8E(t,n,o(e))}function a(t,n){try{return t.apply(this,n)}catch(e){i.__wbindgen_exn_store(o(e))}}var G=new FinalizationRegistry(t=>i.__wbg_command_free(t>>>0)),S=class t{static __wrap(n){n>>>=0;let e=Object.create(t.prototype);return e.__wbg_ptr=n,G.register(e,e.__wbg_ptr,e),e}__destroy_into_raw(){let n=this.__wbg_ptr;return this.__wbg_ptr=0,G.unregister(this),n}free(){let n=this.__destroy_into_raw();i.__wbg_command_free(n)}get name(){return w(i.__wbg_get_command_name(this.__wbg_ptr))}set name(n){i.__wbg_set_command_name(this.__wbg_ptr,o(n))}run(n){return w(i.command_run(this.__wbg_ptr,l(n)?0:o(n)))}binary(){return w(i.command_binary(this.__wbg_ptr))}},rn=new FinalizationRegistry(t=>i.__wbg_directory_free(t>>>0)),O=class{__destroy_into_raw(){let n=this.__wbg_ptr;return this.__wbg_ptr=0,rn.unregister(this),n}free(){let n=this.__destroy_into_raw();i.__wbg_directory_free(n)}__getClassname(){let n,e;try{let b=i.__wbindgen_add_to_stack_pointer(-16);i.directory___getClassname(b,this.__wbg_ptr);var r=u()[b/4+0],c=u()[b/4+1];return n=r,e=c,m(r,c)}finally{i.__wbindgen_add_to_stack_pointer(16),i.canonical_abi_free(n,e,1)}}constructor(n){try{let c=i.__wbindgen_add_to_stack_pointer(-16);i.directory_new(c,l(n)?0:o(n));var e=u()[c/4+0],r=u()[c/4+1];if(u()[c/4+2])throw w(r);return this.__wbg_ptr=e>>>0,this}finally{i.__wbindgen_add_to_stack_pointer(16)}}readDir(n){let e=d(n,i.__wbindgen_malloc,i.__wbindgen_realloc),r=f;return w(i.directory_readDir(this.__wbg_ptr,e,r))}writeFile(n,e){let r=d(n,i.__wbindgen_malloc,i.__wbindgen_realloc),c=f;return w(i.directory_writeFile(this.__wbg_ptr,r,c,o(e)))}readFile(n){let e=d(n,i.__wbindgen_malloc,i.__wbindgen_realloc),r=f;return w(i.directory_readFile(this.__wbg_ptr,e,r))}readTextFile(n){let e=d(n,i.__wbindgen_malloc,i.__wbindgen_realloc),r=f;return w(i.directory_readTextFile(this.__wbg_ptr,e,r))}createDir(n){let e=d(n,i.__wbindgen_malloc,i.__wbindgen_realloc),r=f;return w(i.directory_createDir(this.__wbg_ptr,e,r))}removeDir(n){let e=d(n,i.__wbindgen_malloc,i.__wbindgen_realloc),r=f;return w(i.directory_removeDir(this.__wbg_ptr,e,r))}removeFile(n){let e=d(n,i.__wbindgen_malloc,i.__wbindgen_realloc),r=f;return w(i.directory_removeFile(this.__wbg_ptr,e,r))}},Z=new FinalizationRegistry(t=>i.__wbg_instance_free(t>>>0)),B=class t{static __wrap(n){n>>>=0;let e=Object.create(t.prototype);return e.__wbg_ptr=n,Z.register(e,e.__wbg_ptr,e),e}__destroy_into_raw(){let n=this.__wbg_ptr;return this.__wbg_ptr=0,Z.unregister(this),n}free(){let n=this.__destroy_into_raw();i.__wbg_instance_free(n)}get stdin(){return w(i.__wbg_get_instance_stdin(this.__wbg_ptr))}get stdout(){return w(i.__wbg_get_instance_stdout(this.__wbg_ptr))}get stderr(){return w(i.__wbg_get_instance_stderr(this.__wbg_ptr))}wait(){let n=this.__destroy_into_raw();return w(i.instance_wait(n))}},V=new FinalizationRegistry(t=>i.__wbg_readablestreamsource_free(t>>>0)),D=class t{static __wrap(n){n>>>=0;let e=Object.create(t.prototype);return e.__wbg_ptr=n,V.register(e,e.__wbg_ptr,e),e}__destroy_into_raw(){let n=this.__wbg_ptr;return this.__wbg_ptr=0,V.unregister(this),n}free(){let n=this.__destroy_into_raw();i.__wbg_readablestreamsource_free(n)}pull(n){return w(i.readablestreamsource_pull(this.__wbg_ptr,o(n)))}cancel(){i.readablestreamsource_cancel(this.__wbg_ptr)}get type(){return w(i.readablestreamsource_type(this.__wbg_ptr))}},gn=new FinalizationRegistry(t=>i.__wbg_runtime_free(t>>>0));var on=new FinalizationRegistry(t=>i.__wbg_threadpoolworker_free(t>>>0)),L=class{__destroy_into_raw(){let n=this.__wbg_ptr;return this.__wbg_ptr=0,on.unregister(this),n}free(){let n=this.__destroy_into_raw();i.__wbg_threadpoolworker_free(n)}constructor(n){let e=i.threadpoolworker_new(n);return this.__wbg_ptr=e>>>0,this}handle(n){return w(i.threadpoolworker_handle(this.__wbg_ptr,o(n)))}},K=new FinalizationRegistry(t=>i.__wbg_trap_free(t>>>0)),$=class t{static __wrap(n){n>>>=0;let e=Object.create(t.prototype);return e.__wbg_ptr=n,K.register(e,e.__wbg_ptr,e),e}__destroy_into_raw(){let n=this.__wbg_ptr;return this.__wbg_ptr=0,K.unregister(this),n}free(){let n=this.__destroy_into_raw();i.__wbg_trap_free(n)}static __wbg_wasmer_trap(){i.trap___wbg_wasmer_trap()}},H=new FinalizationRegistry(t=>i.__wbg_wasmer_free(t>>>0)),x=class t{static __wrap(n){n>>>=0;let e=Object.create(t.prototype);return e.__wbg_ptr=n,H.register(e,e.__wbg_ptr,e),e}__destroy_into_raw(){let n=this.__wbg_ptr;return this.__wbg_ptr=0,H.unregister(this),n}free(){let n=this.__destroy_into_raw();i.__wbg_wasmer_free(n)}get entrypoint(){let n=i.__wbg_get_wasmer_entrypoint(this.__wbg_ptr);return n===0?void 0:S.__wrap(n)}set entrypoint(n){let e=0;l(n)||(function(r,c){if(!(r instanceof c))throw new Error(`expected instance of ${c.name}`);r.ptr}(n,S),e=n.__destroy_into_raw()),i.__wbg_set_wasmer_entrypoint(this.__wbg_ptr,e)}get commands(){return w(i.__wbg_get_instance_stdout(this.__wbg_ptr))}set commands(n){i.__wbg_set_wasmer_commands(this.__wbg_ptr,o(n))}static fromRegistry(n,e){let r=d(n,i.__wbindgen_malloc,i.__wbindgen_realloc),c=f;return w(i.wasmer_fromRegistry(r,c,l(e)?0:o(e)))}static fromFile(n,e){return w(i.wasmer_fromFile(o(n),l(e)?0:o(e)))}},X=new FinalizationRegistry(t=>i.__wbg_writablestreamsink_free(t>>>0)),C=class t{static __wrap(n){n>>>=0;let e=Object.create(t.prototype);return e.__wbg_ptr=n,X.register(e,e.__wbg_ptr,e),e}__destroy_into_raw(){let n=this.__wbg_ptr;return this.__wbg_ptr=0,X.unregister(this),n}free(){let n=this.__destroy_into_raw();i.__wbg_writablestreamsink_free(n)}close(){return w(i.writablestreamsink_close(this.__wbg_ptr))}abort(n){i.writablestreamsink_abort(this.__wbg_ptr,o(n))}write(n){return w(i.writablestreamsink_write(this.__wbg_ptr,o(n)))}};function cn(){let t={wbg:{}};return t.wbg.__wbg_new_08236689f0afb357=function(){return o(new Array)},t.wbg.__wbindgen_string_new=function(n,e){return o(m(n,e))},t.wbg.__wbg_new_c728d68b8b34487e=function(){return o(new Object)},t.wbg.__wbg_push_fd3233d09cf81821=function(n,e){return _(n).push(_(e))},t.wbg.__wbindgen_string_get=function(n,e){let r=_(e),c=typeof r=="string"?r:void 0;var b=l(c)?0:d(c,i.__wbindgen_malloc,i.__wbindgen_realloc),g=f;u()[n/4+1]=g,u()[n/4+0]=b},t.wbg.__wbindgen_object_clone_ref=function(n){return o(_(n))},t.wbg.__wbg_uses_87ee8532bf7067c2=function(n){let e=_(n).uses;return l(e)?0:o(e)},t.wbg.__wbg_navigator_7078da62d92ff5ad=function(n){return o(_(n).navigator)},t.wbg.__wbg_userAgent_2c548c522dca04cc=function(){return a(function(n,e){let r=d(_(e).userAgent,i.__wbindgen_malloc,i.__wbindgen_realloc),c=f;u()[n/4+1]=c,u()[n/4+0]=r},arguments)},t.wbg.__wbg_navigator_471948d3d6e10344=function(n){return o(_(n).navigator)},t.wbg.__wbg_userAgent_ec264c118b1e619c=function(){return a(function(n,e){let r=d(_(e).userAgent,i.__wbindgen_malloc,i.__wbindgen_realloc),c=f;u()[n/4+1]=c,u()[n/4+0]=r},arguments)},t.wbg.__wbg_new_d8a000788389a31e=function(n){return o(new Uint8Array(_(n)))},t.wbg.__wbg_desiredSize_800f00fde6830467=function(n,e){let r=_(e).desiredSize;q()[n/8+1]=l(r)?0:r,u()[n/4+0]=!l(r)},t.wbg.__wbg_close_3217bacea9625e8a=function(){return a(function(n){_(n).close()},arguments)},t.wbg.__wbg_enqueue_fe34f134be0ca1bd=function(){return a(function(n,e){_(n).enqueue(_(e))},arguments)},t.wbg.__wbg_error_32bdd65121e5c58d=function(n,e){_(n).error(_(e))},t.wbg.__wbindgen_number_new=function(n){return o(n)},t.wbg.__wbg_defineProperty_acb855411a6a5b7c=function(n,e,r){return o(Object.defineProperty(_(n),_(e),_(r)))},t.wbg.__wbg_crypto_58f13aa23ffcb166=function(n){return o(_(n).crypto)},t.wbg.__wbg_process_5b786e71d465a513=function(n){return o(_(n).process)},t.wbg.__wbg_versions_c2ab80650590b6a2=function(n){return o(_(n).versions)},t.wbg.__wbg_node_523d7bd03ef69fba=function(n){return o(_(n).node)},t.wbg.__wbindgen_is_string=function(n){return typeof _(n)=="string"},t.wbg.__wbg_require_2784e593a4674877=function(){return a(function(){return o(module.require)},arguments)},t.wbg.__wbg_msCrypto_abcb1295e768d1f2=function(n){return o(_(n).msCrypto)},t.wbg.__wbg_newwithlength_13b5319ab422dcf6=function(n){return o(new Uint8Array(n>>>0))},t.wbg.__wbindgen_is_object=function(n){let e=_(n);return typeof e=="object"&&e!==null},t.wbg.__wbindgen_memory=function(){return o(i.memory)},t.wbg.__wbg_buffer_344d9b41efe96da7=function(n){return o(_(n).buffer)},t.wbg.__wbg_newwithbyteoffsetandlength_2dc04d99088b15e3=function(n,e,r){return o(new Uint8Array(_(n),e>>>0,r>>>0))},t.wbg.__wbg_randomFillSync_a0d98aa11c81fe89=function(){return a(function(n,e){_(n).randomFillSync(w(e))},arguments)},t.wbg.__wbg_getRandomValues_504510b5564925af=function(){return a(function(n,e){_(n).getRandomValues(_(e))},arguments)},t.wbg.__wbg_get_4a9aa5157afeb382=function(n,e){return o(_(n)[e>>>0])},t.wbg.__wbg_length_cace2e0b3ddc0502=function(n){return _(n).length},t.wbg.__wbg_call_669127b9d730c650=function(){return a(function(n,e){return o(_(n).call(_(e)))},arguments)},t.wbg.__wbg_newwithlength_045c9df8a7cc3543=function(n){return o(new Array(n>>>0))},t.wbg.__wbg_instanceof_ArrayBuffer_c7cc317e5c29cc0d=function(n){let e;try{e=_(n)instanceof ArrayBuffer}catch{e=!1}return e},t.wbg.__wbg_toString_1a5250f284c09c9e=function(n,e,r){let c=d(_(e).toString(r),i.__wbindgen_malloc,i.__wbindgen_realloc),b=f;u()[n/4+1]=b,u()[n/4+0]=c},t.wbg.__wbg_message_35f9b952e1b922e2=function(n){return o(_(n).message)},t.wbg.__wbg_instanceof_Function_208feb37dc430eb3=function(n){let e;try{e=_(n)instanceof Function}catch{e=!1}return e},t.wbg.__wbg_apply_1c259fc7880fb101=function(){return a(function(n,e,r){return o(_(n).apply(_(e),_(r)))},arguments)},t.wbg.__wbg_call_53fc3abd42e24ec8=function(){return a(function(n,e,r){return o(_(n).call(_(e),_(r)))},arguments)},t.wbg.__wbg_toString_2c5d5b612e8bdd61=function(n){return o(_(n).toString())},t.wbg.__wbg_then_89e1c559530b85cf=function(n,e){return o(_(n).then(_(e)))},t.wbg.__wbg_set_dcfd613a3420f908=function(n,e,r){_(n).set(_(e),r>>>0)},t.wbg.__wbg_length_a5587d6cd79ab197=function(n){return _(n).length},t.wbg.__wbg_instanceof_Uint8Array_19e6f142a5e7e1e1=function(n){let e;try{e=_(n)instanceof Uint8Array}catch{e=!1}return e},t.wbg.__wbg_subarray_6ca5cfa7fbb9abbe=function(n,e,r){return o(_(n).subarray(e>>>0,r>>>0))},t.wbg.__wbindgen_is_function=function(n){return typeof _(n)=="function"},t.wbg.__wbindgen_object_drop_ref=function(n){w(n)},t.wbg.__wbg_new_659d4bfe4e53c8ae=function(){return a(function(n,e){return o(new WebAssembly.Instance(_(n),_(e)))},arguments)},t.wbg.__wbg_new_756a04b324cd462c=function(){return a(function(n){return o(new WebAssembly.Module(_(n)))},arguments)},t.wbg.__wbg_get_3a1de47b76f3642e=function(){return a(function(n,e){return o(_(n).get(e>>>0))},arguments)},t.wbg.__wbg_new_61bdcb895f1f9b01=function(){return a(function(n){return o(new WebAssembly.Memory(_(n)))},arguments)},t.wbg.__wbg_self_3fad056edded10bd=function(){return a(function(){return o(self.self)},arguments)},t.wbg.__wbg_window_a4f46c98a61d4089=function(){return a(function(){return o(window.window)},arguments)},t.wbg.__wbg_globalThis_17eff828815f7d84=function(){return a(function(){return o(globalThis.globalThis)},arguments)},t.wbg.__wbg_global_46f939f6541643c5=function(){return a(function(){return o(global.global)},arguments)},t.wbg.__wbindgen_is_undefined=function(n){return _(n)===void 0},t.wbg.__wbg_newnoargs_ccdcae30fd002262=function(n,e){return o(new Function(m(n,e)))},t.wbg.__wbg_apply_2fa612c136e53eed=function(){return a(function(n,e,r){return o(Reflect.apply(_(n),_(e),_(r)))},arguments)},t.wbg.__wbg_get_2aff440840bb6202=function(){return a(function(n,e){return o(Reflect.get(_(n),_(e)))},arguments)},t.wbg.__wbg_set_40f7786a25a9cc7e=function(){return a(function(n,e,r){return Reflect.set(_(n),_(e),_(r))},arguments)},t.wbg.__wbindgen_error_new=function(n,e){return o(new Error(m(n,e)))},t.wbg.__wbindgen_bigint_get_as_i64=function(n,e){let r=_(e),c=typeof r=="bigint"?r:void 0;(R!==null&&R.buffer===i.memory.buffer||(R=new BigInt64Array(i.memory.buffer)),R)[n/8+1]=l(c)?BigInt(0):c,u()[n/4+0]=!l(c)},t.wbg.__wbindgen_debug_string=function(n,e){let r=d(U(_(e)),i.__wbindgen_malloc,i.__wbindgen_realloc),c=f;u()[n/4+1]=c,u()[n/4+0]=r},t.wbg.__wbindgen_throw=function(n,e){throw new Error(m(n,e))},t.wbg.__wbindgen_rethrow=function(n){throw w(n)},t.wbg.__wbg_data_624fd2b6a4a5ac9e=function(n){return o(_(n).data)},t.wbg.__wbg_queueMicrotask_e5949c35d772a669=function(n){queueMicrotask(_(n))},t.wbg.__wbg_waitAsync_97f529b0dd0d7452=function(){return o(Atomics.waitAsync)},t.wbg.__wbg_new_66e5e8bd4064378e=function(n){return o(new Int32Array(_(n)))},t.wbg.__wbg_waitAsync_ace259c87ea1cfde=function(n,e,r){return o(Atomics.waitAsync(_(n),e,r))},t.wbg.__wbg_async_3cebb9c3c0a8b6e9=function(n){return _(n).async},t.wbg.__wbg_value_9b4d17e7284427cc=function(n){return o(_(n).value)},t.wbg.__wbg_new_feb65b865d980ae2=function(n,e){try{var r={a:n,b:e};let c=new Promise((b,g)=>{let s=r.a;r.a=0;try{return function(y,p,h,I){i._ZN12wasm_bindgen7convert8closures11invoke2_mut17h0ec8afacbccd07f3E(y,p,o(h),o(I))}(s,r.b,b,g)}finally{r.a=s}});return o(c)}finally{r.a=r.b=0}},t.wbg.__wbindgen_link_cb9dda2f0af60c4f=function(n){let e=d("data:application/javascript,"+encodeURIComponent(`onmessage = function (ev) { + let [ia, index, value] = ev.data; + ia = new Int32Array(ia.buffer); + let result = Atomics.wait(ia, index, value); + postMessage(result); + }; + `),i.__wbindgen_malloc,i.__wbindgen_realloc),r=f;u()[n/4+1]=r,u()[n/4+0]=e},t.wbg.__wbg_new_db2f8178fe56090a=function(){return a(function(n,e){return o(new Worker(m(n,e)))},arguments)},t.wbg.__wbg_setonmessage_30ed48e1f5d26fee=function(n,e){_(n).onmessage=_(e)},t.wbg.__wbg_of_5b11b7255a230e4e=function(n,e,r){return o(Array.of(_(n),_(e),_(r)))},t.wbg.__wbg_queueMicrotask_2be8b97a81fe4d00=function(n){return o(_(n).queueMicrotask)},t.wbg.__wbg_resolve_a3252b2860f0a09e=function(n){return o(Promise.resolve(_(n)))},t.wbg.__wbg_then_1bbc9edafd859b06=function(n,e,r){return o(_(n).then(_(e),_(r)))},t.wbg.__wbindgen_cb_drop=function(n){let e=w(n).original;return e.cnt--==1?(e.a=0,!0):!1},t.wbg.__wbg_byteLength_8903f453a3a8a1df=function(n){return _(n).byteLength},t.wbg.__wbg_exports_287124f54574699c=function(n){return o(WebAssembly.Module.exports(_(n)))},t.wbg.__wbg_for_fe237e14961c3b46=function(n,e){return o(Symbol.for(m(n,e)))},t.wbg.__wbindgen_number_get=function(n,e){let r=_(e),c=typeof r=="number"?r:void 0;q()[n/8+1]=l(c)?0:c,u()[n/4+0]=!l(c)},t.wbg.__wbg_getPrototypeOf_efd9ac7664cb1602=function(){return a(function(n){return o(Reflect.getPrototypeOf(_(n)))},arguments)},t.wbg.__wbg_constructor_3f5002261d14fb30=function(n){return o(_(n).constructor)},t.wbg.__wbg_trap_new=function(n){return o($.__wrap(n))},t.wbg.__wbg_value_442d6ccca6c89da5=function(n){return o(_(n).value)},t.wbg.__wbg_setvalue_d01c3234a2663552=function(n,e){_(n).value=_(e)},t.wbg.__wbg_instanceof_Error_9f5881c3c4149389=function(n){let e;try{e=_(n)instanceof Error}catch{e=!1}return e},t.wbg.__wbg_imports_849227f7280907ef=function(n){return o(WebAssembly.Module.imports(_(n)))},t.wbg.__wbg_instanceof_Object_3c95bd459efa5c3c=function(n){let e;try{e=_(n)instanceof Object}catch{e=!1}return e},t.wbg.__wbg_grow_51233537037b47cc=function(){return a(function(n,e){return _(n).grow(e>>>0)},arguments)},t.wbg.__wbg_instanceof_RangeError_dd0fad3a217d8897=function(n){let e;try{e=_(n)instanceof RangeError}catch{e=!1}return e},t.wbg.__wbg_buffer_b334b57bee6f611b=function(n){return o(_(n).buffer)},t.wbg.__wbg_send_a4612d3a60b1dbb4=function(){return a(function(n,e){_(n).send(_(e))},arguments)},t.wbg.__wbg_new_b9b318679315404f=function(){return a(function(n,e){return o(new WebSocket(m(n,e)))},arguments)},t.wbg.__wbg_setonopen_b2a170d59c1abe88=function(n,e){_(n).onopen=_(e)},t.wbg.__wbg_setonclose_4527668a5c065333=function(n,e){_(n).onclose=_(e)},t.wbg.__wbg_new_b71bf93085f9d631=function(){return a(function(){return o(new FileReader)},arguments)},t.wbg.__wbg_setonloadend_88fd301cd09da25d=function(n,e){_(n).onloadend=_(e)},t.wbg.__wbg_setbinaryType_dcb62e0f2b346301=function(n,e){_(n).binaryType=w(e)},t.wbg.__wbg_setonmessage_eb44f51ef6e7e0e8=function(n,e){_(n).onmessage=_(e)},t.wbg.__wbg_grow_f711696a8328da3c=function(n,e){return _(n).grow(e>>>0)},t.wbg.__wbg_hardwareConcurrency_b858ff012f3ad0fb=function(n){return _(n).hardwareConcurrency},t.wbg.__wbg_hardwareConcurrency_67b658b8df300eb5=function(n){return _(n).hardwareConcurrency},t.wbg.__wbg_isSafeInteger_c38b0a16d0c7cef7=function(n){return Number.isSafeInteger(_(n))},t.wbg.__wbindgen_jsval_loose_eq=function(n,e){return _(n)==_(e)},t.wbg.__wbindgen_boolean_get=function(n){let e=_(n);return typeof e=="boolean"?e?1:0:2},t.wbg.__wbindgen_is_bigint=function(n){return typeof _(n)=="bigint"},t.wbg.__wbindgen_bigint_from_u64=function(n){return o(BigInt.asUintN(64,n))},t.wbg.__wbindgen_jsval_eq=function(n,e){return _(n)===_(e)},t.wbg.__wbg_BigInt_9cc4d66dcbf0216e=function(n){return o(BigInt(_(n)))},t.wbg.__wbindgen_ge=function(n,e){return _(n)>=_(e)},t.wbg.__wbg_newwithu8arraysequenceandoptions_f520ece5c28a5211=function(){return a(function(n,e){return o(new Blob(_(n),_(e)))},arguments)},t.wbg.__wbg_createObjectURL_86955f30bbed45eb=function(){return a(function(n,e){let r=d(URL.createObjectURL(_(e)),i.__wbindgen_malloc,i.__wbindgen_realloc),c=f;u()[n/4+1]=c,u()[n/4+0]=r},arguments)},t.wbg.__wbg_terminate_159911c61944a361=function(n){_(n).terminate()},t.wbg.__wbg_lineno_4506d18a0b25cca2=function(n){return _(n).lineno},t.wbg.__wbg_colno_19ebfec79bfd789d=function(n){return _(n).colno},t.wbg.__wbg_assert_aa771cfef9582df7=function(n,e){console.assert(n!==0,_(e))},t.wbg.__wbg_new_abda76e883ba8a5f=function(){return o(new Error)},t.wbg.__wbg_stack_658279fe44541cf6=function(n,e){let r=d(_(e).stack,i.__wbindgen_malloc,i.__wbindgen_realloc),c=f;u()[n/4+1]=c,u()[n/4+0]=r},t.wbg.__wbg_error_f851667af71bcfc6=function(n,e){let r,c;try{r=n,c=e,console.error(m(n,e))}finally{i.canonical_abi_free(r,c,1)}},t.wbg.__wbg_instanceof_TypeError_9282fd7df97806a0=function(n){let e;try{e=_(n)instanceof TypeError}catch{e=!1}return e},t.wbg.__wbg_wasmer_new=function(n){return o(x.__wrap(n))},t.wbg.__wbg_new_ab87fd305ed9004b=function(n,e){return o(new Error(m(n,e)))},t.wbg.__wbg_instance_new=function(n){return o(B.__wrap(n))},t.wbg.__wbg_read_55c1f4e3f3729816=function(n){return o(_(n).read())},t.wbg.__wbindgen_is_falsy=function(n){return!_(n)},t.wbg.__wbg_instanceof_Blob_bd674d851f2d730d=function(n){let e;try{e=_(n)instanceof Blob}catch{e=!1}return e},t.wbg.__wbg_readAsArrayBuffer_55965fe069b748b7=function(){return a(function(n,e){_(n).readAsArrayBuffer(_(e))},arguments)},t.wbg.__wbg_result_5e08da49132b9af2=function(){return a(function(n){return o(_(n).result)},arguments)},t.wbg.__wbg_instanceof_Module_7b9e1eae1becb87c=function(n){let e;try{e=_(n)instanceof WebAssembly.Module}catch{e=!1}return e},t.wbg.__wbg_static_accessor_IMPORT_META_URL_3be0dba93f76ed43=function(n){let e=d(Q.url,i.__wbindgen_malloc,i.__wbindgen_realloc),r=f;u()[n/4+1]=r,u()[n/4+0]=e},t.wbg.__wbg_log_7811587c4c6d2844=function(n){console.log(_(n))},t.wbg.__wbg_byteLength_206a04415dea52a7=function(n){return _(n).byteLength},t.wbg.__wbg_instanceof_DedicatedWorkerGlobalScope_4cabe735c12f6f62=function(n){let e;try{e=_(n)instanceof DedicatedWorkerGlobalScope}catch{e=!1}return e},t.wbg.__wbg_postMessage_08d9966515d3437e=function(){return a(function(n,e){_(n).postMessage(_(e))},arguments)},t.wbg.__wbg_args_4d15d7afb42e284d=function(n){let e=_(n).args;return l(e)?0:o(e)},t.wbg.__wbg_env_ad8595f2986ecc88=function(n){return o(_(n).env)},t.wbg.__wbg_new_a8d206e6b5c455e8=function(n,e){return o(new TypeError(m(n,e)))},t.wbg.__wbg_mount_6bbd20e7e89111c6=function(n){return o(_(n).mount)},t.wbg.__wbg_stdin_00c789dbac01e87a=function(n){let e=_(n).stdin;return l(e)?0:o(e)},t.wbg.__wbg_command_new=function(n){return o(S.__wrap(n))},t.wbg.__wbg_registry_3c50a218bff1b9c2=function(n){let e=_(n).registry;return l(e)?0:o(e)},t.wbg.__wbindgen_is_null=function(n){return _(n)===null},t.wbg.__wbg_apiKey_45d9470ec7a59981=function(n,e){let r=_(e).apiKey;var c=l(r)?0:d(r,i.__wbindgen_malloc,i.__wbindgen_realloc),b=f;u()[n/4+1]=b,u()[n/4+0]=c},t.wbg.__wbg_networkGateway_19db657660e81113=function(n,e){let r=_(e).networkGateway;var c=l(r)?0:d(r,i.__wbindgen_malloc,i.__wbindgen_realloc),b=f;u()[n/4+1]=b,u()[n/4+0]=c},t.wbg.__wbg_program_86b0cb49d1fef987=function(n){return o(_(n).program)},t.wbg.__wbg_runtime_0041006d6e1bcee1=function(n){return o(_(n).runtime)},t.wbg.__wbg_instanceof_Window_cde2416cf5126a72=function(n){let e;try{e=_(n)instanceof Window}catch{e=!1}return e},t.wbg.__wbg_setTimeout_07866af1a1842093=function(){return a(function(n,e,r){return _(n).setTimeout(_(e),r)},arguments)},t.wbg.__wbg_setTimeout_a7009fb086494628=function(){return a(function(n,e,r){return _(n).setTimeout(_(e),r)},arguments)},t.wbg.__wbg_keys_1af6085b03973487=function(n){return o(Object.keys(_(n)))},t.wbg.__wbg_is_c74aa9bb973d6109=function(n,e){return Object.is(_(n),_(e))},t.wbg.__wbindgen_lt=function(n,e){return _(n)<_(e)},t.wbg.__wbg_writablestreamsink_new=function(n){return o(C.__wrap(n))},t.wbg.__wbg_newwithunderlyingsinkandstrategy_58a8dd5a077a053a=function(){return a(function(n,e){return o(new WritableStream(_(n),_(e)))},arguments)},t.wbg.__wbg_readablestreamsource_new=function(n){return o(D.__wrap(n))},t.wbg.__wbg_newwithunderlyingsourceandstrategy_8918d0ac449d9312=function(){return a(function(n,e){return o(new ReadableStream(_(n),_(e)))},arguments)},t.wbg.__wbg_new_5db6ceb8aeeaf01c=function(){return a(function(n){return o(new ReadableStreamDefaultReader(_(n)))},arguments)},t.wbg.__wbg_releaseLock_9b69600b4df9a3e5=function(n){_(n).releaseLock()},t.wbg.__wbg_newwithoptions_648df56fc5ca57ca=function(){return a(function(n,e,r){return o(new Worker(m(n,e),_(r)))},arguments)},t.wbg.__wbg_setonerror_589ac13960a72e2a=function(n,e){_(n).onerror=_(e)},t.wbg.__wbindgen_module=function(){return o(z.__wbindgen_wasm_module)},t.wbg.__wbindgen_function_table=function(){return o(i.__wbindgen_export_3)},t.wbg.__wbg_bind_d7487121c7db1440=function(n,e,r,c){return o(_(n).bind(_(e),_(r),_(c)))},t.wbg.__wbg_exports_1ea13b1dd33137f1=function(n){return o(_(n).exports)},t.wbg.__wbg_instanceof_Global_1c3b64df1a5c886c=function(n){let e;try{e=_(n)instanceof WebAssembly.Global}catch{e=!1}return e},t.wbg.__wbg_instanceof_Table_f9bb0e6df370756a=function(n){let e;try{e=_(n)instanceof WebAssembly.Table}catch{e=!1}return e},t.wbg.__wbindgen_shr=function(n,e){return o(_(n)>>_(e))},t.wbg.__wbindgen_bigint_from_i64=function(n){return o(n)},t.wbg.__wbindgen_bigint_from_u128=function(n,e){return o(BigInt.asUintN(64,n)<nn(void 0,void 0,void 0,function*(){if(!t){let e="https://unpkg.com/@wasmer/sdk@0.6.0/dist/wasmer_js_bg.wasm";e&&(t=new URL(e))}return z(t,n)});globalThis.__WASMER_INTERNALS__={ThreadPoolWorker:L,init:P},globalThis.$RefreshReg$=globalThis.$RefreshReg$||function(){},globalThis.$RefreshSig$=globalThis.$RefreshSig$||function(){return function(){}};var un=async({data:t})=>{let{code:n,args:e,input:r}=t;await P();let b=await(await x.fromRegistry("python/python")).entrypoint.run({args:e.split(` +`),stdin:Uint8Array.from(r.split("").map(p=>p.charCodeAt(0))),mount:{"/out":new O,"/src":{"main.py":new Uint8Array(n)}}}),{code:g,stdout:s,stderr:y}=await b.wait();postMessage({type:"output",output:s}),postMessage({type:"output",error:y}),console.log(`Python exited with ${g}: ${s}`)};addEventListener("message",t=>un(t).then(()=>postMessage({type:"done"})));})(); +/*! Bundled license information: + +@wasmer/sdk/dist/WasmerSDK.js: + (*! + * @wasmer/sdk + * Isomorphic Javascript library for interacting with WASI Modules in Node.js and the Browser. + * + * @version v0.6.0 + * @author Wasmer Engineering Team + * @homepage https://github.com/wasmerio/wasmer-js + * @repository git+https://github.com/wasmerio/wasmer-js.git + * @license MIT + *) +*/ +//# sourceMappingURL=worker.js.map diff --git a/dist/js/langs/python-wasmer/worker.js.map b/dist/js/langs/python-wasmer/worker.js.map new file mode 100644 index 0000000..31b8ea5 --- /dev/null +++ b/dist/js/langs/python-wasmer/worker.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../../node_modules/@wasmer/sdk/dist/WasmerSDK.js", "../../../../js/langs/python-wasmer/worker.ts"], + "sourcesContent": ["/*!\n * @wasmer/sdk\n * Isomorphic Javascript library for interacting with WASI Modules in Node.js and the Browser.\n *\n * @version v0.6.0\n * @author Wasmer Engineering Team \n * @homepage https://github.com/wasmerio/wasmer-js\n * @repository git+https://github.com/wasmerio/wasmer-js.git\n * @license MIT\n */\nfunction n(n,e,t,_){return new(t||(t=Promise))((function(r,o){function i(n){try{b(_.next(n))}catch(n){o(n)}}function c(n){try{b(_.throw(n))}catch(n){o(n)}}function b(n){var e;n.done?r(n.value):(e=n.value,e instanceof t?e:new t((function(n){n(e)}))).then(i,c)}b((_=_.apply(n,e||[])).next())}))}let e;\"function\"==typeof SuppressedError&&SuppressedError;const t=\"undefined\"!=typeof TextDecoder?new TextDecoder(\"utf-8\",{ignoreBOM:!0,fatal:!0}):{decode:()=>{throw Error(\"TextDecoder not available\")}};\"undefined\"!=typeof TextDecoder&&t.decode();let _=null;function r(){return null!==_&&_.buffer===e.memory.buffer||(_=new Uint8Array(e.memory.buffer)),_}function o(n,e){return n>>>=0,t.decode(r().slice(n,n+e))}const i=new Array(128).fill(void 0);i.push(void 0,null,!0,!1);let c=i.length;function b(n){c===i.length&&i.push(i.length+1);const e=c;return c=i[e],i[e]=n,e}function a(n){return i[n]}let w=0;const u=\"undefined\"!=typeof TextEncoder?new TextEncoder(\"utf-8\"):{encode:()=>{throw Error(\"TextEncoder not available\")}},g=function(n,e){const t=u.encode(n);return e.set(t),{read:n.length,written:t.length}};function s(n,e,t){if(void 0===t){const t=u.encode(n),_=e(t.length,1)>>>0;return r().subarray(_,_+t.length).set(t),w=t.length,_}let _=n.length,o=e(_,1)>>>0;const i=r();let c=0;for(;c<_;c++){const e=n.charCodeAt(c);if(e>127)break;i[o+c]=e}if(c!==_){0!==c&&(n=n.slice(c)),o=t(o,_,_=c+3*n.length,1)>>>0;const e=r().subarray(o+c,o+_);c+=g(n,e).written}return w=c,o}function f(n){return null==n}let d=null;function l(){return null!==d&&d.buffer===e.memory.buffer||(d=new Int32Array(e.memory.buffer)),d}function y(n){const e=a(n);return function(n){n<132||(i[n]=c,c=n)}(n),e}let p=null;function m(n){const e=typeof n;if(\"number\"==e||\"boolean\"==e||null==n)return`${n}`;if(\"string\"==e)return`\"${n}\"`;if(\"symbol\"==e){const e=n.description;return null==e?\"Symbol\":`Symbol(${e})`}if(\"function\"==e){const e=n.name;return\"string\"==typeof e&&e.length>0?`Function(${e})`:\"Function\"}if(Array.isArray(n)){const e=n.length;let t=\"[\";e>0&&(t+=m(n[0]));for(let _=1;_1))return toString.call(n);if(_=t[1],\"Object\"==_)try{return\"Object(\"+JSON.stringify(n)+\")\"}catch(n){return\"Object\"}return n instanceof Error?`${n.name}: ${n.message}\\n${n.stack}`:_}let h=null;function v(){return null!==h&&h.buffer===e.memory.buffer||(h=new Float64Array(e.memory.buffer)),h}const A=new FinalizationRegistry((n=>{e.__wbindgen_export_3.get(n.dtor)(n.a,n.b)}));function k(n,t,_,r){const o={a:n,b:t,cnt:1,dtor:_},i=(...n)=>{o.cnt++;const t=o.a;o.a=0;try{return r(t,o.b,...n)}finally{0==--o.cnt?(e.__wbindgen_export_3.get(o.dtor)(t,o.b),A.unregister(o)):o.a=t}};return i.original=o,A.register(i,o,o),i}function R(n,t,_){e._ZN12wasm_bindgen7convert8closures11invoke1_mut17h39693afad0d92ad2E(n,t,b(_))}function T(n,t,_,r){const o={a:n,b:t,cnt:1,dtor:_},i=(...n)=>{o.cnt++;try{return r(o.a,o.b,...n)}finally{0==--o.cnt&&(e.__wbindgen_export_3.get(o.dtor)(o.a,o.b),o.a=0,A.unregister(o))}};return i.original=o,A.register(i,o,o),i}function W(n,t){return y(e._ZN129__LT_dyn_u20_core__ops__function__Fn_LT__LP__RP__GT__u2b_Output_u20__u3d__u20_R_u20_as_u20_wasm_bindgen__closure__WasmClosure_GT_8describe6invoke17h613009e110396e8aE(n,t))}function S(n,t,_){return e._ZN12wasm_bindgen7convert8closures7invoke117h27cd5385e9d886a8E(n,t,b(_))}function x(n,t){try{return n.apply(this,t)}catch(n){e.__wbindgen_exn_store(b(n))}}function F(n){try{const r=e.__wbindgen_add_to_stack_pointer(-16),o=s(n,e.__wbindgen_malloc,e.__wbindgen_realloc),i=w;e.wat2wasm(r,o,i);var t=l()[r/4+0],_=l()[r/4+1];if(l()[r/4+2])throw y(_);return y(t)}finally{e.__wbindgen_add_to_stack_pointer(16)}}function E(){e.on_start()}function j(n){e.setWorkerUrl(b(n))}function O(n,t){return y(e.runWasix(b(n),b(t)))}function M(n){try{const o=e.__wbindgen_add_to_stack_pointer(-16);var t=f(n)?0:s(n,e.__wbindgen_malloc,e.__wbindgen_realloc),_=w;e.initializeLogger(o,t,_);var r=l()[o/4+0];if(l()[o/4+1])throw y(r)}finally{e.__wbindgen_add_to_stack_pointer(16)}}const I=new FinalizationRegistry((n=>e.__wbg_command_free(n>>>0)));class U{static __wrap(n){n>>>=0;const e=Object.create(U.prototype);return e.__wbg_ptr=n,I.register(e,e.__wbg_ptr,e),e}__destroy_into_raw(){const n=this.__wbg_ptr;return this.__wbg_ptr=0,I.unregister(this),n}free(){const n=this.__destroy_into_raw();e.__wbg_command_free(n)}get name(){return y(e.__wbg_get_command_name(this.__wbg_ptr))}set name(n){e.__wbg_set_command_name(this.__wbg_ptr,b(n))}run(n){return y(e.command_run(this.__wbg_ptr,f(n)?0:b(n)))}binary(){return y(e.command_binary(this.__wbg_ptr))}}const B=new FinalizationRegistry((n=>e.__wbg_directory_free(n>>>0)));class L{__destroy_into_raw(){const n=this.__wbg_ptr;return this.__wbg_ptr=0,B.unregister(this),n}free(){const n=this.__destroy_into_raw();e.__wbg_directory_free(n)}__getClassname(){let n,t;try{const i=e.__wbindgen_add_to_stack_pointer(-16);e.directory___getClassname(i,this.__wbg_ptr);var _=l()[i/4+0],r=l()[i/4+1];return n=_,t=r,o(_,r)}finally{e.__wbindgen_add_to_stack_pointer(16),e.canonical_abi_free(n,t,1)}}constructor(n){try{const r=e.__wbindgen_add_to_stack_pointer(-16);e.directory_new(r,f(n)?0:b(n));var t=l()[r/4+0],_=l()[r/4+1];if(l()[r/4+2])throw y(_);return this.__wbg_ptr=t>>>0,this}finally{e.__wbindgen_add_to_stack_pointer(16)}}readDir(n){const t=s(n,e.__wbindgen_malloc,e.__wbindgen_realloc),_=w;return y(e.directory_readDir(this.__wbg_ptr,t,_))}writeFile(n,t){const _=s(n,e.__wbindgen_malloc,e.__wbindgen_realloc),r=w;return y(e.directory_writeFile(this.__wbg_ptr,_,r,b(t)))}readFile(n){const t=s(n,e.__wbindgen_malloc,e.__wbindgen_realloc),_=w;return y(e.directory_readFile(this.__wbg_ptr,t,_))}readTextFile(n){const t=s(n,e.__wbindgen_malloc,e.__wbindgen_realloc),_=w;return y(e.directory_readTextFile(this.__wbg_ptr,t,_))}createDir(n){const t=s(n,e.__wbindgen_malloc,e.__wbindgen_realloc),_=w;return y(e.directory_createDir(this.__wbg_ptr,t,_))}removeDir(n){const t=s(n,e.__wbindgen_malloc,e.__wbindgen_realloc),_=w;return y(e.directory_removeDir(this.__wbg_ptr,t,_))}removeFile(n){const t=s(n,e.__wbindgen_malloc,e.__wbindgen_realloc),_=w;return y(e.directory_removeFile(this.__wbg_ptr,t,_))}}const $=new FinalizationRegistry((n=>e.__wbg_instance_free(n>>>0)));class z{static __wrap(n){n>>>=0;const e=Object.create(z.prototype);return e.__wbg_ptr=n,$.register(e,e.__wbg_ptr,e),e}__destroy_into_raw(){const n=this.__wbg_ptr;return this.__wbg_ptr=0,$.unregister(this),n}free(){const n=this.__destroy_into_raw();e.__wbg_instance_free(n)}get stdin(){return y(e.__wbg_get_instance_stdin(this.__wbg_ptr))}get stdout(){return y(e.__wbg_get_instance_stdout(this.__wbg_ptr))}get stderr(){return y(e.__wbg_get_instance_stderr(this.__wbg_ptr))}wait(){const n=this.__destroy_into_raw();return y(e.instance_wait(n))}}const D=new FinalizationRegistry((n=>e.__wbg_readablestreamsource_free(n>>>0)));class q{static __wrap(n){n>>>=0;const e=Object.create(q.prototype);return e.__wbg_ptr=n,D.register(e,e.__wbg_ptr,e),e}__destroy_into_raw(){const n=this.__wbg_ptr;return this.__wbg_ptr=0,D.unregister(this),n}free(){const n=this.__destroy_into_raw();e.__wbg_readablestreamsource_free(n)}pull(n){return y(e.readablestreamsource_pull(this.__wbg_ptr,b(n)))}cancel(){e.readablestreamsource_cancel(this.__wbg_ptr)}get type(){return y(e.readablestreamsource_type(this.__wbg_ptr))}}const C=new FinalizationRegistry((n=>e.__wbg_runtime_free(n>>>0)));class N{static __wrap(n){n>>>=0;const e=Object.create(N.prototype);return e.__wbg_ptr=n,C.register(e,e.__wbg_ptr,e),e}__destroy_into_raw(){const n=this.__wbg_ptr;return this.__wbg_ptr=0,C.unregister(this),n}free(){const n=this.__destroy_into_raw();e.__wbg_runtime_free(n)}__getClassname(){let n,t;try{const i=e.__wbindgen_add_to_stack_pointer(-16);e.runtime___getClassname(i,this.__wbg_ptr);var _=l()[i/4+0],r=l()[i/4+1];return n=_,t=r,o(_,r)}finally{e.__wbindgen_add_to_stack_pointer(16),e.canonical_abi_free(n,t,1)}}constructor(n){try{const r=e.__wbindgen_add_to_stack_pointer(-16);e.runtime_js_new(r,f(n)?0:b(n));var t=l()[r/4+0],_=l()[r/4+1];if(l()[r/4+2])throw y(_);return this.__wbg_ptr=t>>>0,this}finally{e.__wbindgen_add_to_stack_pointer(16)}}static global(n){try{const r=e.__wbindgen_add_to_stack_pointer(-16);e.runtime_global(r,f(n)?16777215:n?1:0);var t=l()[r/4+0],_=l()[r/4+1];if(l()[r/4+2])throw y(_);return 0===t?void 0:N.__wrap(t)}finally{e.__wbindgen_add_to_stack_pointer(16)}}}const P=new FinalizationRegistry((n=>e.__wbg_threadpoolworker_free(n>>>0)));class G{__destroy_into_raw(){const n=this.__wbg_ptr;return this.__wbg_ptr=0,P.unregister(this),n}free(){const n=this.__destroy_into_raw();e.__wbg_threadpoolworker_free(n)}constructor(n){const t=e.threadpoolworker_new(n);return this.__wbg_ptr=t>>>0,this}handle(n){return y(e.threadpoolworker_handle(this.__wbg_ptr,b(n)))}}const Z=new FinalizationRegistry((n=>e.__wbg_trap_free(n>>>0)));class K{static __wrap(n){n>>>=0;const e=Object.create(K.prototype);return e.__wbg_ptr=n,Z.register(e,e.__wbg_ptr,e),e}__destroy_into_raw(){const n=this.__wbg_ptr;return this.__wbg_ptr=0,Z.unregister(this),n}free(){const n=this.__destroy_into_raw();e.__wbg_trap_free(n)}static __wbg_wasmer_trap(){e.trap___wbg_wasmer_trap()}}const V=new FinalizationRegistry((n=>e.__wbg_wasmer_free(n>>>0)));class J{static __wrap(n){n>>>=0;const e=Object.create(J.prototype);return e.__wbg_ptr=n,V.register(e,e.__wbg_ptr,e),e}__destroy_into_raw(){const n=this.__wbg_ptr;return this.__wbg_ptr=0,V.unregister(this),n}free(){const n=this.__destroy_into_raw();e.__wbg_wasmer_free(n)}get entrypoint(){const n=e.__wbg_get_wasmer_entrypoint(this.__wbg_ptr);return 0===n?void 0:U.__wrap(n)}set entrypoint(n){let t=0;f(n)||(!function(n,e){if(!(n instanceof e))throw new Error(`expected instance of ${e.name}`);n.ptr}(n,U),t=n.__destroy_into_raw()),e.__wbg_set_wasmer_entrypoint(this.__wbg_ptr,t)}get commands(){return y(e.__wbg_get_instance_stdout(this.__wbg_ptr))}set commands(n){e.__wbg_set_wasmer_commands(this.__wbg_ptr,b(n))}static fromRegistry(n,t){const _=s(n,e.__wbindgen_malloc,e.__wbindgen_realloc),r=w;return y(e.wasmer_fromRegistry(_,r,f(t)?0:b(t)))}static fromFile(n,t){return y(e.wasmer_fromFile(b(n),f(t)?0:b(t)))}}const H=new FinalizationRegistry((n=>e.__wbg_writablestreamsink_free(n>>>0)));class Q{static __wrap(n){n>>>=0;const e=Object.create(Q.prototype);return e.__wbg_ptr=n,H.register(e,e.__wbg_ptr,e),e}__destroy_into_raw(){const n=this.__wbg_ptr;return this.__wbg_ptr=0,H.unregister(this),n}free(){const n=this.__destroy_into_raw();e.__wbg_writablestreamsink_free(n)}close(){return y(e.writablestreamsink_close(this.__wbg_ptr))}abort(n){e.writablestreamsink_abort(this.__wbg_ptr,b(n))}write(n){return y(e.writablestreamsink_write(this.__wbg_ptr,b(n)))}}function X(){const n={wbg:{}};return n.wbg.__wbg_new_08236689f0afb357=function(){return b(new Array)},n.wbg.__wbindgen_string_new=function(n,e){return b(o(n,e))},n.wbg.__wbg_new_c728d68b8b34487e=function(){return b(new Object)},n.wbg.__wbg_push_fd3233d09cf81821=function(n,e){return a(n).push(a(e))},n.wbg.__wbindgen_string_get=function(n,t){const _=a(t),r=\"string\"==typeof _?_:void 0;var o=f(r)?0:s(r,e.__wbindgen_malloc,e.__wbindgen_realloc),i=w;l()[n/4+1]=i,l()[n/4+0]=o},n.wbg.__wbindgen_object_clone_ref=function(n){return b(a(n))},n.wbg.__wbg_uses_87ee8532bf7067c2=function(n){const e=a(n).uses;return f(e)?0:b(e)},n.wbg.__wbg_navigator_7078da62d92ff5ad=function(n){return b(a(n).navigator)},n.wbg.__wbg_userAgent_2c548c522dca04cc=function(){return x((function(n,t){const _=s(a(t).userAgent,e.__wbindgen_malloc,e.__wbindgen_realloc),r=w;l()[n/4+1]=r,l()[n/4+0]=_}),arguments)},n.wbg.__wbg_navigator_471948d3d6e10344=function(n){return b(a(n).navigator)},n.wbg.__wbg_userAgent_ec264c118b1e619c=function(){return x((function(n,t){const _=s(a(t).userAgent,e.__wbindgen_malloc,e.__wbindgen_realloc),r=w;l()[n/4+1]=r,l()[n/4+0]=_}),arguments)},n.wbg.__wbg_new_d8a000788389a31e=function(n){return b(new Uint8Array(a(n)))},n.wbg.__wbg_desiredSize_800f00fde6830467=function(n,e){const t=a(e).desiredSize;v()[n/8+1]=f(t)?0:t,l()[n/4+0]=!f(t)},n.wbg.__wbg_close_3217bacea9625e8a=function(){return x((function(n){a(n).close()}),arguments)},n.wbg.__wbg_enqueue_fe34f134be0ca1bd=function(){return x((function(n,e){a(n).enqueue(a(e))}),arguments)},n.wbg.__wbg_error_32bdd65121e5c58d=function(n,e){a(n).error(a(e))},n.wbg.__wbindgen_number_new=function(n){return b(n)},n.wbg.__wbg_defineProperty_acb855411a6a5b7c=function(n,e,t){return b(Object.defineProperty(a(n),a(e),a(t)))},n.wbg.__wbg_crypto_58f13aa23ffcb166=function(n){return b(a(n).crypto)},n.wbg.__wbg_process_5b786e71d465a513=function(n){return b(a(n).process)},n.wbg.__wbg_versions_c2ab80650590b6a2=function(n){return b(a(n).versions)},n.wbg.__wbg_node_523d7bd03ef69fba=function(n){return b(a(n).node)},n.wbg.__wbindgen_is_string=function(n){return\"string\"==typeof a(n)},n.wbg.__wbg_require_2784e593a4674877=function(){return x((function(){return b(module.require)}),arguments)},n.wbg.__wbg_msCrypto_abcb1295e768d1f2=function(n){return b(a(n).msCrypto)},n.wbg.__wbg_newwithlength_13b5319ab422dcf6=function(n){return b(new Uint8Array(n>>>0))},n.wbg.__wbindgen_is_object=function(n){const e=a(n);return\"object\"==typeof e&&null!==e},n.wbg.__wbindgen_memory=function(){return b(e.memory)},n.wbg.__wbg_buffer_344d9b41efe96da7=function(n){return b(a(n).buffer)},n.wbg.__wbg_newwithbyteoffsetandlength_2dc04d99088b15e3=function(n,e,t){return b(new Uint8Array(a(n),e>>>0,t>>>0))},n.wbg.__wbg_randomFillSync_a0d98aa11c81fe89=function(){return x((function(n,e){a(n).randomFillSync(y(e))}),arguments)},n.wbg.__wbg_getRandomValues_504510b5564925af=function(){return x((function(n,e){a(n).getRandomValues(a(e))}),arguments)},n.wbg.__wbg_get_4a9aa5157afeb382=function(n,e){return b(a(n)[e>>>0])},n.wbg.__wbg_length_cace2e0b3ddc0502=function(n){return a(n).length},n.wbg.__wbg_call_669127b9d730c650=function(){return x((function(n,e){return b(a(n).call(a(e)))}),arguments)},n.wbg.__wbg_newwithlength_045c9df8a7cc3543=function(n){return b(new Array(n>>>0))},n.wbg.__wbg_instanceof_ArrayBuffer_c7cc317e5c29cc0d=function(n){let e;try{e=a(n)instanceof ArrayBuffer}catch(n){e=!1}return e},n.wbg.__wbg_toString_1a5250f284c09c9e=function(n,t,_){const r=s(a(t).toString(_),e.__wbindgen_malloc,e.__wbindgen_realloc),o=w;l()[n/4+1]=o,l()[n/4+0]=r},n.wbg.__wbg_message_35f9b952e1b922e2=function(n){return b(a(n).message)},n.wbg.__wbg_instanceof_Function_208feb37dc430eb3=function(n){let e;try{e=a(n)instanceof Function}catch(n){e=!1}return e},n.wbg.__wbg_apply_1c259fc7880fb101=function(){return x((function(n,e,t){return b(a(n).apply(a(e),a(t)))}),arguments)},n.wbg.__wbg_call_53fc3abd42e24ec8=function(){return x((function(n,e,t){return b(a(n).call(a(e),a(t)))}),arguments)},n.wbg.__wbg_toString_2c5d5b612e8bdd61=function(n){return b(a(n).toString())},n.wbg.__wbg_then_89e1c559530b85cf=function(n,e){return b(a(n).then(a(e)))},n.wbg.__wbg_set_dcfd613a3420f908=function(n,e,t){a(n).set(a(e),t>>>0)},n.wbg.__wbg_length_a5587d6cd79ab197=function(n){return a(n).length},n.wbg.__wbg_instanceof_Uint8Array_19e6f142a5e7e1e1=function(n){let e;try{e=a(n)instanceof Uint8Array}catch(n){e=!1}return e},n.wbg.__wbg_subarray_6ca5cfa7fbb9abbe=function(n,e,t){return b(a(n).subarray(e>>>0,t>>>0))},n.wbg.__wbindgen_is_function=function(n){return\"function\"==typeof a(n)},n.wbg.__wbindgen_object_drop_ref=function(n){y(n)},n.wbg.__wbg_new_659d4bfe4e53c8ae=function(){return x((function(n,e){return b(new WebAssembly.Instance(a(n),a(e)))}),arguments)},n.wbg.__wbg_new_756a04b324cd462c=function(){return x((function(n){return b(new WebAssembly.Module(a(n)))}),arguments)},n.wbg.__wbg_get_3a1de47b76f3642e=function(){return x((function(n,e){return b(a(n).get(e>>>0))}),arguments)},n.wbg.__wbg_new_61bdcb895f1f9b01=function(){return x((function(n){return b(new WebAssembly.Memory(a(n)))}),arguments)},n.wbg.__wbg_self_3fad056edded10bd=function(){return x((function(){return b(self.self)}),arguments)},n.wbg.__wbg_window_a4f46c98a61d4089=function(){return x((function(){return b(window.window)}),arguments)},n.wbg.__wbg_globalThis_17eff828815f7d84=function(){return x((function(){return b(globalThis.globalThis)}),arguments)},n.wbg.__wbg_global_46f939f6541643c5=function(){return x((function(){return b(global.global)}),arguments)},n.wbg.__wbindgen_is_undefined=function(n){return void 0===a(n)},n.wbg.__wbg_newnoargs_ccdcae30fd002262=function(n,e){return b(new Function(o(n,e)))},n.wbg.__wbg_apply_2fa612c136e53eed=function(){return x((function(n,e,t){return b(Reflect.apply(a(n),a(e),a(t)))}),arguments)},n.wbg.__wbg_get_2aff440840bb6202=function(){return x((function(n,e){return b(Reflect.get(a(n),a(e)))}),arguments)},n.wbg.__wbg_set_40f7786a25a9cc7e=function(){return x((function(n,e,t){return Reflect.set(a(n),a(e),a(t))}),arguments)},n.wbg.__wbindgen_error_new=function(n,e){return b(new Error(o(n,e)))},n.wbg.__wbindgen_bigint_get_as_i64=function(n,t){const _=a(t),r=\"bigint\"==typeof _?_:void 0;(null!==p&&p.buffer===e.memory.buffer||(p=new BigInt64Array(e.memory.buffer)),p)[n/8+1]=f(r)?BigInt(0):r,l()[n/4+0]=!f(r)},n.wbg.__wbindgen_debug_string=function(n,t){const _=s(m(a(t)),e.__wbindgen_malloc,e.__wbindgen_realloc),r=w;l()[n/4+1]=r,l()[n/4+0]=_},n.wbg.__wbindgen_throw=function(n,e){throw new Error(o(n,e))},n.wbg.__wbindgen_rethrow=function(n){throw y(n)},n.wbg.__wbg_data_624fd2b6a4a5ac9e=function(n){return b(a(n).data)},n.wbg.__wbg_queueMicrotask_e5949c35d772a669=function(n){queueMicrotask(a(n))},n.wbg.__wbg_waitAsync_97f529b0dd0d7452=function(){return b(Atomics.waitAsync)},n.wbg.__wbg_new_66e5e8bd4064378e=function(n){return b(new Int32Array(a(n)))},n.wbg.__wbg_waitAsync_ace259c87ea1cfde=function(n,e,t){return b(Atomics.waitAsync(a(n),e,t))},n.wbg.__wbg_async_3cebb9c3c0a8b6e9=function(n){return a(n).async},n.wbg.__wbg_value_9b4d17e7284427cc=function(n){return b(a(n).value)},n.wbg.__wbg_new_feb65b865d980ae2=function(n,t){try{var _={a:n,b:t};const r=new Promise(((n,t)=>{const r=_.a;_.a=0;try{return function(n,t,_,r){e._ZN12wasm_bindgen7convert8closures11invoke2_mut17h0ec8afacbccd07f3E(n,t,b(_),b(r))}(r,_.b,n,t)}finally{_.a=r}}));return b(r)}finally{_.a=_.b=0}},n.wbg.__wbindgen_link_cb9dda2f0af60c4f=function(n){const t=s(\"data:application/javascript,\"+encodeURIComponent(\"onmessage = function (ev) {\\n let [ia, index, value] = ev.data;\\n ia = new Int32Array(ia.buffer);\\n let result = Atomics.wait(ia, index, value);\\n postMessage(result);\\n };\\n \"),e.__wbindgen_malloc,e.__wbindgen_realloc),_=w;l()[n/4+1]=_,l()[n/4+0]=t},n.wbg.__wbg_new_db2f8178fe56090a=function(){return x((function(n,e){return b(new Worker(o(n,e)))}),arguments)},n.wbg.__wbg_setonmessage_30ed48e1f5d26fee=function(n,e){a(n).onmessage=a(e)},n.wbg.__wbg_of_5b11b7255a230e4e=function(n,e,t){return b(Array.of(a(n),a(e),a(t)))},n.wbg.__wbg_queueMicrotask_2be8b97a81fe4d00=function(n){return b(a(n).queueMicrotask)},n.wbg.__wbg_resolve_a3252b2860f0a09e=function(n){return b(Promise.resolve(a(n)))},n.wbg.__wbg_then_1bbc9edafd859b06=function(n,e,t){return b(a(n).then(a(e),a(t)))},n.wbg.__wbindgen_cb_drop=function(n){const e=y(n).original;if(1==e.cnt--)return e.a=0,!0;return!1},n.wbg.__wbg_byteLength_8903f453a3a8a1df=function(n){return a(n).byteLength},n.wbg.__wbg_exports_287124f54574699c=function(n){return b(WebAssembly.Module.exports(a(n)))},n.wbg.__wbg_for_fe237e14961c3b46=function(n,e){return b(Symbol.for(o(n,e)))},n.wbg.__wbindgen_number_get=function(n,e){const t=a(e),_=\"number\"==typeof t?t:void 0;v()[n/8+1]=f(_)?0:_,l()[n/4+0]=!f(_)},n.wbg.__wbg_getPrototypeOf_efd9ac7664cb1602=function(){return x((function(n){return b(Reflect.getPrototypeOf(a(n)))}),arguments)},n.wbg.__wbg_constructor_3f5002261d14fb30=function(n){return b(a(n).constructor)},n.wbg.__wbg_trap_new=function(n){return b(K.__wrap(n))},n.wbg.__wbg_value_442d6ccca6c89da5=function(n){return b(a(n).value)},n.wbg.__wbg_setvalue_d01c3234a2663552=function(n,e){a(n).value=a(e)},n.wbg.__wbg_instanceof_Error_9f5881c3c4149389=function(n){let e;try{e=a(n)instanceof Error}catch(n){e=!1}return e},n.wbg.__wbg_imports_849227f7280907ef=function(n){return b(WebAssembly.Module.imports(a(n)))},n.wbg.__wbg_instanceof_Object_3c95bd459efa5c3c=function(n){let e;try{e=a(n)instanceof Object}catch(n){e=!1}return e},n.wbg.__wbg_grow_51233537037b47cc=function(){return x((function(n,e){return a(n).grow(e>>>0)}),arguments)},n.wbg.__wbg_instanceof_RangeError_dd0fad3a217d8897=function(n){let e;try{e=a(n)instanceof RangeError}catch(n){e=!1}return e},n.wbg.__wbg_buffer_b334b57bee6f611b=function(n){return b(a(n).buffer)},n.wbg.__wbg_send_a4612d3a60b1dbb4=function(){return x((function(n,e){a(n).send(a(e))}),arguments)},n.wbg.__wbg_new_b9b318679315404f=function(){return x((function(n,e){return b(new WebSocket(o(n,e)))}),arguments)},n.wbg.__wbg_setonopen_b2a170d59c1abe88=function(n,e){a(n).onopen=a(e)},n.wbg.__wbg_setonclose_4527668a5c065333=function(n,e){a(n).onclose=a(e)},n.wbg.__wbg_new_b71bf93085f9d631=function(){return x((function(){return b(new FileReader)}),arguments)},n.wbg.__wbg_setonloadend_88fd301cd09da25d=function(n,e){a(n).onloadend=a(e)},n.wbg.__wbg_setbinaryType_dcb62e0f2b346301=function(n,e){a(n).binaryType=y(e)},n.wbg.__wbg_setonmessage_eb44f51ef6e7e0e8=function(n,e){a(n).onmessage=a(e)},n.wbg.__wbg_grow_f711696a8328da3c=function(n,e){return a(n).grow(e>>>0)},n.wbg.__wbg_hardwareConcurrency_b858ff012f3ad0fb=function(n){return a(n).hardwareConcurrency},n.wbg.__wbg_hardwareConcurrency_67b658b8df300eb5=function(n){return a(n).hardwareConcurrency},n.wbg.__wbg_isSafeInteger_c38b0a16d0c7cef7=function(n){return Number.isSafeInteger(a(n))},n.wbg.__wbindgen_jsval_loose_eq=function(n,e){return a(n)==a(e)},n.wbg.__wbindgen_boolean_get=function(n){const e=a(n);return\"boolean\"==typeof e?e?1:0:2},n.wbg.__wbindgen_is_bigint=function(n){return\"bigint\"==typeof a(n)},n.wbg.__wbindgen_bigint_from_u64=function(n){return b(BigInt.asUintN(64,n))},n.wbg.__wbindgen_jsval_eq=function(n,e){return a(n)===a(e)},n.wbg.__wbg_BigInt_9cc4d66dcbf0216e=function(n){return b(BigInt(a(n)))},n.wbg.__wbindgen_ge=function(n,e){return a(n)>=a(e)},n.wbg.__wbg_newwithu8arraysequenceandoptions_f520ece5c28a5211=function(){return x((function(n,e){return b(new Blob(a(n),a(e)))}),arguments)},n.wbg.__wbg_createObjectURL_86955f30bbed45eb=function(){return x((function(n,t){const _=s(URL.createObjectURL(a(t)),e.__wbindgen_malloc,e.__wbindgen_realloc),r=w;l()[n/4+1]=r,l()[n/4+0]=_}),arguments)},n.wbg.__wbg_terminate_159911c61944a361=function(n){a(n).terminate()},n.wbg.__wbg_lineno_4506d18a0b25cca2=function(n){return a(n).lineno},n.wbg.__wbg_colno_19ebfec79bfd789d=function(n){return a(n).colno},n.wbg.__wbg_assert_aa771cfef9582df7=function(n,e){console.assert(0!==n,a(e))},n.wbg.__wbg_new_abda76e883ba8a5f=function(){return b(new Error)},n.wbg.__wbg_stack_658279fe44541cf6=function(n,t){const _=s(a(t).stack,e.__wbindgen_malloc,e.__wbindgen_realloc),r=w;l()[n/4+1]=r,l()[n/4+0]=_},n.wbg.__wbg_error_f851667af71bcfc6=function(n,t){let _,r;try{_=n,r=t,console.error(o(n,t))}finally{e.canonical_abi_free(_,r,1)}},n.wbg.__wbg_instanceof_TypeError_9282fd7df97806a0=function(n){let e;try{e=a(n)instanceof TypeError}catch(n){e=!1}return e},n.wbg.__wbg_wasmer_new=function(n){return b(J.__wrap(n))},n.wbg.__wbg_new_ab87fd305ed9004b=function(n,e){return b(new Error(o(n,e)))},n.wbg.__wbg_instance_new=function(n){return b(z.__wrap(n))},n.wbg.__wbg_read_55c1f4e3f3729816=function(n){return b(a(n).read())},n.wbg.__wbindgen_is_falsy=function(n){return!a(n)},n.wbg.__wbg_instanceof_Blob_bd674d851f2d730d=function(n){let e;try{e=a(n)instanceof Blob}catch(n){e=!1}return e},n.wbg.__wbg_readAsArrayBuffer_55965fe069b748b7=function(){return x((function(n,e){a(n).readAsArrayBuffer(a(e))}),arguments)},n.wbg.__wbg_result_5e08da49132b9af2=function(){return x((function(n){return b(a(n).result)}),arguments)},n.wbg.__wbg_instanceof_Module_7b9e1eae1becb87c=function(n){let e;try{e=a(n)instanceof WebAssembly.Module}catch(n){e=!1}return e},n.wbg.__wbg_static_accessor_IMPORT_META_URL_3be0dba93f76ed43=function(n){const t=s(import.meta.url,e.__wbindgen_malloc,e.__wbindgen_realloc),_=w;l()[n/4+1]=_,l()[n/4+0]=t},n.wbg.__wbg_log_7811587c4c6d2844=function(n){console.log(a(n))},n.wbg.__wbg_byteLength_206a04415dea52a7=function(n){return a(n).byteLength},n.wbg.__wbg_instanceof_DedicatedWorkerGlobalScope_4cabe735c12f6f62=function(n){let e;try{e=a(n)instanceof DedicatedWorkerGlobalScope}catch(n){e=!1}return e},n.wbg.__wbg_postMessage_08d9966515d3437e=function(){return x((function(n,e){a(n).postMessage(a(e))}),arguments)},n.wbg.__wbg_args_4d15d7afb42e284d=function(n){const e=a(n).args;return f(e)?0:b(e)},n.wbg.__wbg_env_ad8595f2986ecc88=function(n){return b(a(n).env)},n.wbg.__wbg_new_a8d206e6b5c455e8=function(n,e){return b(new TypeError(o(n,e)))},n.wbg.__wbg_mount_6bbd20e7e89111c6=function(n){return b(a(n).mount)},n.wbg.__wbg_stdin_00c789dbac01e87a=function(n){const e=a(n).stdin;return f(e)?0:b(e)},n.wbg.__wbg_command_new=function(n){return b(U.__wrap(n))},n.wbg.__wbg_registry_3c50a218bff1b9c2=function(n){const e=a(n).registry;return f(e)?0:b(e)},n.wbg.__wbindgen_is_null=function(n){return null===a(n)},n.wbg.__wbg_apiKey_45d9470ec7a59981=function(n,t){const _=a(t).apiKey;var r=f(_)?0:s(_,e.__wbindgen_malloc,e.__wbindgen_realloc),o=w;l()[n/4+1]=o,l()[n/4+0]=r},n.wbg.__wbg_networkGateway_19db657660e81113=function(n,t){const _=a(t).networkGateway;var r=f(_)?0:s(_,e.__wbindgen_malloc,e.__wbindgen_realloc),o=w;l()[n/4+1]=o,l()[n/4+0]=r},n.wbg.__wbg_program_86b0cb49d1fef987=function(n){return b(a(n).program)},n.wbg.__wbg_runtime_0041006d6e1bcee1=function(n){return b(a(n).runtime)},n.wbg.__wbg_instanceof_Window_cde2416cf5126a72=function(n){let e;try{e=a(n)instanceof Window}catch(n){e=!1}return e},n.wbg.__wbg_setTimeout_07866af1a1842093=function(){return x((function(n,e,t){return a(n).setTimeout(a(e),t)}),arguments)},n.wbg.__wbg_setTimeout_a7009fb086494628=function(){return x((function(n,e,t){return a(n).setTimeout(a(e),t)}),arguments)},n.wbg.__wbg_keys_1af6085b03973487=function(n){return b(Object.keys(a(n)))},n.wbg.__wbg_is_c74aa9bb973d6109=function(n,e){return Object.is(a(n),a(e))},n.wbg.__wbindgen_lt=function(n,e){return a(n)>a(e))},n.wbg.__wbindgen_bigint_from_i64=function(n){return b(n)},n.wbg.__wbindgen_bigint_from_u128=function(n,e){return b(BigInt.asUintN(64,n)<n(void 0,void 0,void 0,(function*(){if(!e){let n=\"https://unpkg.com/@wasmer/sdk@0.6.0/dist/wasmer_js_bg.wasm\";n&&(e=new URL(n))}return tn(e,t)})),rn=()=>{let n=\"https://unpkg.com/@wasmer/sdk@0.6.0/dist/WasmerSDK.js\";n&&j(n)};globalThis.__WASMER_INTERNALS__={ThreadPoolWorker:G,init:_n},globalThis.$RefreshReg$=globalThis.$RefreshReg$||function(){},globalThis.$RefreshSig$=globalThis.$RefreshSig$||function(){return function(){}};export{U as Command,L as Directory,z as Instance,q as ReadableStreamSource,N as Runtime,G as ThreadPoolWorker,K as Trap,J as Wasmer,Q as WritableStreamSink,_n as init,en as initSync,M as initializeLogger,E as on_start,O as runWasix,rn as setDefaultWorkerUrl,j as setWorkerUrl,F as wat2wasm};\n", "import { Directory, init, initSync, Wasmer } from '@wasmer/sdk';\n\nconst main = async ({\n data,\n}: {\n data: { code: number[]; args: string; input: string };\n}) => {\n const { code, args, input } = data;\n\n await init();\n // initSync(wasmUrl);\n\n const pkg = await Wasmer.fromRegistry('python/python');\n\n const instance = await pkg.entrypoint.run({\n args: args.split('\\n'),\n stdin: Uint8Array.from(input.split('').map((c) => c.charCodeAt(0))),\n mount: {\n '/out': new Directory(),\n '/src': {\n 'main.py': new Uint8Array(code),\n },\n },\n });\n\n const { code: exitCode, stdout, stderr } = await instance.wait();\n\n postMessage({\n type: 'output',\n output: stdout,\n });\n\n postMessage({\n type: 'output',\n error: stderr,\n });\n\n console.log(`Python exited with ${exitCode}: ${stdout}`);\n};\n\naddEventListener('message', (data) =>\n main(data).then(() =>\n postMessage({\n type: 'done',\n })\n )\n);\n"], + "mappings": "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", + "names": ["import_meta", "n", "e", "t", "_", "r", "o", "i", "b", "c", "t", "_", "r", "e", "o", "n", "i", "c", "b", "a", "w", "u", "g", "s", "f", "d", "l", "y", "p", "m", "h", "v", "A", "k", "R", "T", "W", "S", "x", "I", "n", "e", "U", "_U", "y", "b", "f", "B", "L", "t", "i", "_", "l", "r", "o", "s", "w", "$", "z", "_z", "D", "q", "_q", "C", "P", "n", "e", "G", "t", "y", "b", "Z", "K", "_K", "V", "J", "_J", "U", "f", "_", "s", "r", "w", "H", "Q", "_Q", "X", "o", "a", "i", "l", "x", "v", "p", "m", "z", "import_meta", "q", "tn", "k", "R", "T", "W", "S", "Y", "nn", "h", "d", "tn", "n", "t", "e", "import_meta", "_", "X", "Y", "o", "nn", "_n", "G", "_n", "main", "data", "code", "args", "input", "_n", "instance", "J", "c", "L", "exitCode", "stdout", "stderr"] +} diff --git a/dist/js/langs/webperl-5.28.1/worker.js b/dist/js/langs/webperl-5.28.1/worker.js index 3ca5486..68535a8 100644 --- a/dist/js/langs/webperl-5.28.1/worker.js +++ b/dist/js/langs/webperl-5.28.1/worker.js @@ -1,2 +1,2 @@ -(()=>{importScripts("../../../../js/lib/webperl-5.28.1/webperl.js");addEventListener("message",({data:s})=>{let{code:p,args:r,input:i}=s;Perl.output=(e,t)=>{if(t===2){postMessage({type:"output",error:e});return}postMessage({type:"output",output:e})},Perl.endAfterMain=!0,Perl.addStateChangeListener((e,t)=>{t==="Ended"&&postMessage({type:"done"})}),Perl.init(()=>{Perl.stdin_buf+=i,Perl.run(p,r.trim()?r.trim().split(/\n/):[])})});})(); +importScripts("../../../../js/lib/webperl-5.28.1/webperl.js");addEventListener("message",({data:s})=>{let{code:i,input:p,args:r}=s;Perl.output=(e,t)=>{if(t===2){postMessage({type:"output",error:e});return}postMessage({type:"output",output:e})},Perl.endAfterMain=!0,Perl.addStateChangeListener((e,t)=>{t==="Ended"&&postMessage({type:"done",exitCode:Perl.exitStatus??0})}),Perl.init(()=>{Perl.stdin_buf+=p,Perl.run(i,r.trim()?r.trim().split(/\n/):[])})}); //# sourceMappingURL=worker.js.map diff --git a/dist/js/langs/webperl-5.28.1/worker.js.map b/dist/js/langs/webperl-5.28.1/worker.js.map index 25bec5a..328fe10 100644 --- a/dist/js/langs/webperl-5.28.1/worker.js.map +++ b/dist/js/langs/webperl-5.28.1/worker.js.map @@ -1,7 +1,7 @@ { "version": 3, "sources": ["../../../../js/langs/webperl-5.28.1/worker.js"], - "sourcesContent": ["importScripts('../../../../js/lib/webperl-5.28.1/webperl.js');\n\naddEventListener('message', ({ data }) => {\n // TODO: check 'type' param too...\n const { code, args, input } = data;\n\n Perl.output = (content, channel) => {\n if (channel === 2) {\n postMessage({\n type: 'output',\n error: content,\n });\n\n return;\n }\n\n postMessage({\n type: 'output',\n output: content,\n });\n };\n\n Perl.endAfterMain = true;\n\n Perl.addStateChangeListener((from, to) => {\n if (to === 'Ended') {\n postMessage({\n type: 'done',\n });\n }\n });\n\n Perl.init(() => {\n Perl.stdin_buf += input;\n\n Perl.run(code, args.trim() ? args.trim().split(/\\n/) : []);\n });\n});\n"], - "mappings": "MAAA,cAAc,8CAA8C,EAE5D,iBAAiB,UAAW,CAAC,CAAE,UAAW,CAExC,GAAM,CAAE,OAAM,OAAM,SAAU,EAE9B,KAAK,OAAS,CAAC,EAAS,IAAY,CAClC,GAAI,IAAY,EAAG,CACjB,YAAY,CACV,KAAM,SACN,MAAO,CACT,CAAC,EAED,MACF,CAEA,YAAY,CACV,KAAM,SACN,OAAQ,CACV,CAAC,CACH,EAEA,KAAK,aAAe,GAEpB,KAAK,uBAAuB,CAAC,EAAM,IAAO,CACxC,AAAI,IAAO,SACT,YAAY,CACV,KAAM,MACR,CAAC,CAEL,CAAC,EAED,KAAK,KAAK,IAAM,CACd,KAAK,WAAa,EAElB,KAAK,IAAI,EAAM,EAAK,KAAK,EAAI,EAAK,KAAK,EAAE,MAAM,IAAI,EAAI,CAAC,CAAC,CAC3D,CAAC,CACH,CAAC", - "names": [] + "sourcesContent": ["importScripts('../../../../js/lib/webperl-5.28.1/webperl.js');\n\naddEventListener('message', ({ data }) => {\n // TODO: check 'type' param too...\n const { code, input, args } = data;\n\n Perl.output = (content, channel) => {\n if (channel === 2) {\n postMessage({\n type: 'output',\n error: content,\n });\n\n return;\n }\n\n postMessage({\n type: 'output',\n output: content,\n });\n };\n\n Perl.endAfterMain = true;\n\n Perl.addStateChangeListener((from, to) => {\n if (to === 'Ended') {\n postMessage({\n type: 'done',\n exitCode: Perl.exitStatus ?? 0,\n });\n }\n });\n\n Perl.init(() => {\n Perl.stdin_buf += input;\n\n Perl.run(code, args.trim() ? args.trim().split(/\\n/) : []);\n });\n});\n"], + "mappings": "AAAA,cAAc,8CAA8C,EAE5D,iBAAiB,UAAW,CAAC,CAAE,KAAAA,CAAK,IAAM,CAExC,GAAM,CAAE,KAAAC,EAAM,MAAAC,EAAO,KAAAC,CAAK,EAAIH,EAE9B,KAAK,OAAS,CAACI,EAASC,IAAY,CAClC,GAAIA,IAAY,EAAG,CACjB,YAAY,CACV,KAAM,SACN,MAAOD,CACT,CAAC,EAED,MACF,CAEA,YAAY,CACV,KAAM,SACN,OAAQA,CACV,CAAC,CACH,EAEA,KAAK,aAAe,GAEpB,KAAK,uBAAuB,CAACE,EAAMC,IAAO,CACpCA,IAAO,SACT,YAAY,CACV,KAAM,OACN,SAAU,KAAK,YAAc,CAC/B,CAAC,CAEL,CAAC,EAED,KAAK,KAAK,IAAM,CACd,KAAK,WAAaL,EAElB,KAAK,IAAID,EAAME,EAAK,KAAK,EAAIA,EAAK,KAAK,EAAE,MAAM,IAAI,EAAI,CAAC,CAAC,CAC3D,CAAC,CACH,CAAC", + "names": ["data", "code", "input", "args", "content", "channel", "from", "to"] } diff --git a/docker-compose.yml b/docker-compose.yml index 3fdcc5e..d8bc47f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,4 +1,4 @@ -version: '3.1' +version: '3.7' services: web: @@ -12,7 +12,9 @@ services: - 8000:80 test: + init: true image: code-sandbox-test + platform: linux/x86_64 volumes: - ./:/src/ build: @@ -24,4 +26,4 @@ services: # https://stackoverflow.com/a/53975412/3145856 # https://github.com/docker/compose/issues/5574 security_opt: - - seccomp:"./docker/test/chrome.json" + - seccomp:docker/test/chrome.json diff --git a/docker/test/Dockerfile b/docker/test/Dockerfile index 514f286..85f6219 100644 --- a/docker/test/Dockerfile +++ b/docker/test/Dockerfile @@ -1,11 +1,11 @@ -FROM node:slim +FROM node:22.1-slim # Install latest chrome dev package and fonts to support major charsets (Chinese, Japanese, Arabic, Hebrew, Thai and a few others) # Note: this installs the necessary libs to make the bundled version of Chromium that Puppeteer # installs, work. RUN apt-get update \ && apt-get install -y wget gnupg \ - && wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - \ + && wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | tee /etc/apt/trusted.gpg.d/google.asc >/dev/null \ && sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' \ && apt-get update \ && apt-get install -y google-chrome-stable fonts-ipafont-gothic fonts-wqy-zenhei fonts-thai-tlwg fonts-kacst fonts-freefont-ttf libxss1 \ @@ -22,22 +22,19 @@ RUN apt-get update \ # you'll need to launch puppeteer with: # browser.launch({executablePath: 'google-chrome-stable'}) # ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD true - WORKDIR /home/pptruser # Install puppeteer so it's available in the container. -RUN npm install -g npm@latest \ - && npm init -y \ - && npm i puppeteer \ +RUN \ # Add user so we don't need --no-sandbox. # same layer as npm install to keep re-chowned files from using up several hundred MBs more space - && groupadd -r pptruser && useradd -r -g pptruser -G audio,video pptruser \ + groupadd -r pptruser && useradd -r -g pptruser -G audio,video pptruser \ && mkdir -p /home/pptruser/Downloads \ && chown -R pptruser:pptruser /home/pptruser \ && chmod -R 777 /tmp \ && apt-get update \ && apt-get install -y socat \ - && npm config set update-notifier false + && npm install -g npm@latest COPY ./entrypoint.sh /usr/local/bin/entrypoint.sh @@ -46,4 +43,10 @@ RUN chmod +x /usr/local/bin/entrypoint.sh # Run everything after as non-privileged user. USER pptruser +RUN npm init -y \ + && npm i puppeteer \ + && npm config set update-notifier false \ + && npx @puppeteer/browsers install chrome \ + && npx @puppeteer/browsers install firefox + ENTRYPOINT ["bash", "/usr/local/bin/entrypoint.sh"] diff --git a/docker/test/puppeteer.Dockerfile b/docker/test/puppeteer.Dockerfile new file mode 100644 index 0000000..428e25f --- /dev/null +++ b/docker/test/puppeteer.Dockerfile @@ -0,0 +1,5 @@ +FROM ghcr.io/puppeteer/puppeteer:22 + +WORKDIR /src + +#ENTRYPOINT ["bash", "/usr/local/bin/entrypoint.sh"] diff --git a/esbuild.js b/esbuild.js deleted file mode 100644 index 71765bd..0000000 --- a/esbuild.js +++ /dev/null @@ -1,49 +0,0 @@ -const { build } = require('esbuild'), - { Prettier } = require('esbuild-plugin-prettier'), - { sassPlugin } = require('esbuild-sass-plugin'), - buildOptions = { - entryPoints: [ - 'js/app.ts', - 'css/app.scss', - 'js/langs/javascript-browser/worker.js', - 'js/langs/webperl-5.28.1/worker.js', - ], - bundle: true, - minify: true, - sourcemap: true, - watch: false, - outdir: 'dist', - plugins: [sassPlugin(), new Prettier()], - entryNames: '[dir]/[name]', - }; - -process.argv.forEach((arg) => { - if (arg === 'watch') { - buildOptions.watch = { - onRebuild(error, result) { - if (error) { - console.log('\x1b[31mError rebuilding:\x1b[0m'); - console.error(error); - - return; - } - - console.log('\x1b[32mRebuilt.\x1b[0m'); - }, - }; - } -}); - -process.stdout.write(`Building... `); - -build(buildOptions) - .then(() => { - console.log('\x1b[32mdone.\x1b[0m'); - }) - .catch((e) => { - console.log(`\x1b[31mfailed.\x1b[0m`); - console.log(''); - console.error(e); - - process.exit(1); - }); diff --git a/esbuild.mjs b/esbuild.mjs new file mode 100644 index 0000000..be0100d --- /dev/null +++ b/esbuild.mjs @@ -0,0 +1,60 @@ +import { build, context } from 'esbuild'; +import { sassPlugin } from 'esbuild-sass-plugin'; + +const watching = process.argv.includes('watch'), + buildOptions = { + entryPoints: [ + { in: 'js/app.ts', out: 'dist/js/app' }, + { in: 'js/coi-serviceworker.ts', out: 'coi-serviceworker' }, + { in: 'css/app.scss', out: 'dist/css/app' }, + { in: 'js/langs/javascript-browser/worker.js', out: 'dist/js/langs/javascript-browser/worker' }, + { in: 'js/langs/webperl-5.28.1/worker.js', out: 'dist/js/langs/webperl-5.28.1/worker' } + ], + bundle: true, + minify: true, + sourcemap: true, + external: ["https://unpkg.com/@wasmer/sdk@latest?module"], + outdir: '.', + format: 'esm', + plugins: [sassPlugin(), { + name: 'on-end', + setup(build) { + build.onEnd((result) => { + if (!watching) { + return; + } + + if (result.errors.length) { + console.log('\x1b[31mError rebuilding:\x1b[0m'); + console.error(result.errors); + + return; + } + + console.log('\x1b[32mRebuilt.\x1b[0m'); + }); + } + }], + entryNames: '[dir]/[name]', + }; + +if (watching) { + const builder = await context(buildOptions); + + await builder.watch(); +} +else { + process.stdout.write(`Building... `); + + build(buildOptions) + .then(() => { + console.log('\x1b[32mdone.\x1b[0m'); + }) + .catch((e) => { + console.log(`\x1b[31mfailed.\x1b[0m`); + console.log(''); + console.error(e); + + process.exit(1); + }); +} \ No newline at end of file diff --git a/index.html b/index.html index beb0071..ef35c82 100644 --- a/index.html +++ b/index.html @@ -140,8 +140,8 @@

> +

STDIN

-

STDIN