Deploying to gh-pages from @ sehugg/8bitworkshop@7c026da92a 🚀

This commit is contained in:
sehugg committed 2026-09-01 09:32:06 +00:00
1 parent 241972cfab
commit 5e2829385f
82 files changed
+2511 -347

No files matched your search

+78 -3
View File
@@ -68,7 +68,7 @@
#notebook {
position:absolute;
top:3em;
bottom:0;
bottom:2em;
left:0;
right:0;
background-color:#666;
@@ -80,6 +80,76 @@
background-color:#333;
overflow:hidden;
}
#shortcuts_bar {
position:absolute;
bottom:0;
left:0;
right:0;
height:2.15em;
line-height:2em;
background-color:#999;
color:#111;
display:flex;
align-items:center;
padding:0 0.5em;
z-index:10;
overflow:hidden;
white-space:nowrap;
}
#shortcuts_bar .shortcuts_zone {
flex:1 1 auto;
overflow:hidden;
}
#shortcuts_bar .status_zone {
flex:0 0 auto;
margin-left:auto;
padding-left:1em;
}
#shortcuts_bar .shortcut {
margin-right:1.25em;
}
#shortcuts_bar kbd {
background-color:#333;
color:#fff;
border-radius:3px;
padding:0.1em 0.4em;
font-family:inherit;
font-size:0.9em;
}
#shortcuts_bar .clickable {
cursor:pointer;
}
#shortcuts_bar .clickable:hover {
text-decoration:underline;
}
#shortcuts_bar .status_item {
margin-left:0.75em;
}
#shortcuts_bar .status_item.error {
color:#ffaaaa;
font-weight:bold;
}
#shortcuts_bar .status_item.ok {
color:#ccffcc;
}
#shortcuts_bar .status_item.running {
color:#ccc;
}
#shortcuts_bar .status_item.stopped {
color:#ffdd99;
font-weight:bold;
}
@media (max-width: 1000px) {
#shortcuts_bar {
display:none;
}
}
body.statusbar-hidden #shortcuts_bar {
display:none;
}
body.statusbar-hidden #notebook {
bottom:0;
}
div.editor {
font-size: 1.25rem;
height: 100%;
@@ -94,8 +164,8 @@ div.memdump {
}
div.mem_info {
position: fixed;
right: 10px;
bottom: 10px;
right: 1em;
bottom: 2em;
background-color: #333;
color: #66ff66;
z-index: 12;
@@ -467,6 +537,11 @@ div.markdown th {
.seg_io { color: #ffcccc; }
.seg_stack { color: #ffff66; }
.seg_unknown { color: #cccccc; }
.goto_line {
background-color: #1155cc;
color: #ffffff;
width: 100%;
}
.segment.segment-ram {
background-color:#aaeeaa;
}
@@ -1,4 +1,4 @@
import{b as S}from"./chunk-3FIVEUG2.js";import{t as E}from"./chunk-JFRBOCZW.js";import"./chunk-7GWCUXYG.js";import"./chunk-LNOKARBD.js";import"./chunk-A7SWO6EA.js";import"./chunk-4RN5ADZB.js";import"./chunk-CZ7OSHSE.js";import{B as c,K as f,T as d,U as v,a as g}from"./chunk-TYDI7JZQ.js";import"./chunk-KT7KMEQC.js";function k(u){return u.value!=null}function y(u){return u.name!=null}function O(u){return u.op!=null&&u.left!=null&&u.right!=null}function N(u){return u.op!=null&&u.expr!=null}var m=class{randomize(){this.seed(Math.random()*2147483647,Math.random()*2147483647,Math.random()*2147483647,Math.random()*2147483647)}constructor(){(()=>{var r,e,i,n;this.seed=function(s,a,h,o){r=s,e=a,i=h,n=o},this.seedfloat=function(s){this.seed(s,s*4294,s*429496,s*4294967296),this.next(),this.next(),this.next()},this.next=function(){r>>>=0,e>>>=0,i>>>=0,n>>>=0;var s=r+e|0;return r=e^e>>>9,e=i+(i<<3)|0,i=i<<21|i>>>11,n=n+1|0,s=s+n|0,i=i+s|0,(s>>>0)/4294967296}})(),this.seedfloat(-1)}},I=1024*1024,l=class u{constructor(){this.margin=80;this.running=!1;this.exited=!0;this.trace=!1}load(t){let r=null,e=0;if(this.pc2label!=null){let s=this.curpc;for(;s>0&&(r=this.pc2label.get(s))==null;)s--;e=this.curpc-s,console.log("oldpc=",this.curpc,"restart @ label",r,"+",e)}this.program=t,this.opts=t.opts,this.opts.maxArrayElements||(this.opts.maxArrayElements=I),this.allstmts=t.stmts,this.label2pc=t.labels,this.label2dataptr={},this.pc2label=new Map,this.datums=[],this.subroutines={},this.builtins=this.getBuiltinFunctions();for(var i in t.labels){var n=t.labels[i];this.pc2label.set(n,i)}return this.allstmts.forEach((s,a)=>{this.curpc=a+1,this.compileStatement(s),s.command=="DATA"&&(this.label2dataptr[s.$loc.label]=this.datums.length,s.datums.forEach(h=>{this.curpc=s.$loc.offset,this.datums.push(h)}))}),this.label2pc[r]!=null?(this.curpc=this.label2pc[r]+e,!0):(this.curpc=0,!1)}reset(){this.curpc=0,this.dataptr=0,this.clearVars(),this.returnStack=[],this.column=0,this.running=!0,this.exited=!1}clearVars(){this.globals=this.vars={},this.arrays={},this.defs={},this.forLoops={},this.forLoopStack=[],this.whileLoops=[],this.rng=new m,this.opts&&this.opts.staticArrays&&this.allstmts.filter(t=>t.command=="DIM").forEach(t=>{t.args.forEach(r=>this.compileJS(this._DIM(r))())})}saveState(){return $.extend(!0,{},this)}loadState(t){$.extend(!0,this,t)}getBuiltinFunctions(){var t=this.program&&this.opts.validFunctions;t||(t=Object.getOwnPropertyNames(u.prototype).filter(i=>/^[A-Z]{3,}[$]?$/.test(i)));var r={};for(var e of t)this.supportsFunction(e)&&(r[e]=this[e].bind(this));return r}supportsFunction(t){return typeof this[t]=="function"}runtimeError(t){throw this.curpc--,new d(t,this.getCurrentSourceLocation())}dialectError(t){this.runtimeError(`I can't ${t} in this dialect of BASIC.`)}getLineForPC(t){var r=this.allstmts[t];return r&&r.$loc&&r.$loc.line}getLabelForPC(t){var r=this.allstmts[t];return r&&r.$loc&&r.$loc.label}getCurrentSourceLocation(){var t=this.getStatement();return t&&t.$loc}getCurrentLabel(){var t=this.getCurrentSourceLocation();return t&&t.label}getStatement(){return this.allstmts[this.curpc]}step(){if(!this.running)return!1;var t=this.getStatement();return t?(this.trace&&console.log(this.curpc,t,this.vars,Object.keys(this.arrays)),this.curpc++,this.executeStatement(t),this.running):(this.running=!1,this.exited=!0,!1)}compileStatement(t){if(t.$run==null)try{var r=this["do__"+t.command];r==null&&this.runtimeError(`I don't know how to "${t.command}".`);var e=r.bind(this)(t);this.trace&&console.log(e),t.$run=this.compileJS(e)}catch(i){throw e&&console.log(e),i}}compileJS(t){return new Function(t).bind(this)}executeStatement(t){this.compileStatement(t),t.$run()}skipToEOL(){do this.curpc++;while(this.curpc<this.allstmts.length&&!this.pc2label.get(this.curpc))}skipToElse(){for(;this.curpc<this.allstmts.length;){var t=this.allstmts[this.curpc].command;if(t=="ELSE"){this.curpc++;break}else if(t=="IF")return this.skipToEOL();if(this.curpc++,this.pc2label.get(this.curpc))break}}skipToEOF(){this.curpc=this.allstmts.length}skipToAfterNext(t){for(var r=this.curpc;r<this.allstmts.length;){var e=this.allstmts[r];if(e.command=="NEXT"){var i=e.lexpr;if(i&&i.name==t){this.curpc=r+1;return}}r++}this.runtimeError(`I couldn't find a matching NEXT ${t} to skip this for loop.`)}skipToAfterWend(){for(var t=this.curpc-1,r=0;t<this.allstmts.length;){var e=this.allstmts[t];if(e.command=="WHILE")r++;else if(e.command=="WEND"&&(r--,r==0)){this.curpc=t+1;return}t++}this.runtimeError("I couldn't find a matching WEND for this WHILE.")}gotoLabel(t){var r=this.label2pc[t];r>=0?this.curpc=r:this.runtimeError(`I tried to go to the label "${t}" but couldn't find it.`)}newLocalScope(){this.vars=Object.create(this.vars)}popLocalScope(){this.vars!==this.globals&&(this.vars=Object.getPrototypeOf(this.vars))}gosubLabel(t){this.returnStack.length>32767&&this.runtimeError("I did too many GOSUBs without a RETURN."),this.returnStack.push(this.curpc),this.gotoLabel(t)}returnFrLine truncated
import{b as S}from"./chunk-3FIVEUG2.js";import{t as E}from"./chunk-VOI5MHR3.js";import"./chunk-6UQAGDOD.js";import"./chunk-LNOKARBD.js";import"./chunk-A7SWO6EA.js";import"./chunk-F6NBEMS2.js";import"./chunk-CZ7OSHSE.js";import{B as c,K as f,T as d,U as v,a as g}from"./chunk-TYDI7JZQ.js";import"./chunk-KT7KMEQC.js";function k(u){return u.value!=null}function y(u){return u.name!=null}function O(u){return u.op!=null&&u.left!=null&&u.right!=null}function N(u){return u.op!=null&&u.expr!=null}var m=class{randomize(){this.seed(Math.random()*2147483647,Math.random()*2147483647,Math.random()*2147483647,Math.random()*2147483647)}constructor(){(()=>{var r,e,i,n;this.seed=function(s,a,h,o){r=s,e=a,i=h,n=o},this.seedfloat=function(s){this.seed(s,s*4294,s*429496,s*4294967296),this.next(),this.next(),this.next()},this.next=function(){r>>>=0,e>>>=0,i>>>=0,n>>>=0;var s=r+e|0;return r=e^e>>>9,e=i+(i<<3)|0,i=i<<21|i>>>11,n=n+1|0,s=s+n|0,i=i+s|0,(s>>>0)/4294967296}})(),this.seedfloat(-1)}},I=1024*1024,l=class u{constructor(){this.margin=80;this.running=!1;this.exited=!0;this.trace=!1}load(t){let r=null,e=0;if(this.pc2label!=null){let s=this.curpc;for(;s>0&&(r=this.pc2label.get(s))==null;)s--;e=this.curpc-s,console.log("oldpc=",this.curpc,"restart @ label",r,"+",e)}this.program=t,this.opts=t.opts,this.opts.maxArrayElements||(this.opts.maxArrayElements=I),this.allstmts=t.stmts,this.label2pc=t.labels,this.label2dataptr={},this.pc2label=new Map,this.datums=[],this.subroutines={},this.builtins=this.getBuiltinFunctions();for(var i in t.labels){var n=t.labels[i];this.pc2label.set(n,i)}return this.allstmts.forEach((s,a)=>{this.curpc=a+1,this.compileStatement(s),s.command=="DATA"&&(this.label2dataptr[s.$loc.label]=this.datums.length,s.datums.forEach(h=>{this.curpc=s.$loc.offset,this.datums.push(h)}))}),this.label2pc[r]!=null?(this.curpc=this.label2pc[r]+e,!0):(this.curpc=0,!1)}reset(){this.curpc=0,this.dataptr=0,this.clearVars(),this.returnStack=[],this.column=0,this.running=!0,this.exited=!1}clearVars(){this.globals=this.vars={},this.arrays={},this.defs={},this.forLoops={},this.forLoopStack=[],this.whileLoops=[],this.rng=new m,this.opts&&this.opts.staticArrays&&this.allstmts.filter(t=>t.command=="DIM").forEach(t=>{t.args.forEach(r=>this.compileJS(this._DIM(r))())})}saveState(){return $.extend(!0,{},this)}loadState(t){$.extend(!0,this,t)}getBuiltinFunctions(){var t=this.program&&this.opts.validFunctions;t||(t=Object.getOwnPropertyNames(u.prototype).filter(i=>/^[A-Z]{3,}[$]?$/.test(i)));var r={};for(var e of t)this.supportsFunction(e)&&(r[e]=this[e].bind(this));return r}supportsFunction(t){return typeof this[t]=="function"}runtimeError(t){throw this.curpc--,new d(t,this.getCurrentSourceLocation())}dialectError(t){this.runtimeError(`I can't ${t} in this dialect of BASIC.`)}getLineForPC(t){var r=this.allstmts[t];return r&&r.$loc&&r.$loc.line}getLabelForPC(t){var r=this.allstmts[t];return r&&r.$loc&&r.$loc.label}getCurrentSourceLocation(){var t=this.getStatement();return t&&t.$loc}getCurrentLabel(){var t=this.getCurrentSourceLocation();return t&&t.label}getStatement(){return this.allstmts[this.curpc]}step(){if(!this.running)return!1;var t=this.getStatement();return t?(this.trace&&console.log(this.curpc,t,this.vars,Object.keys(this.arrays)),this.curpc++,this.executeStatement(t),this.running):(this.running=!1,this.exited=!0,!1)}compileStatement(t){if(t.$run==null)try{var r=this["do__"+t.command];r==null&&this.runtimeError(`I don't know how to "${t.command}".`);var e=r.bind(this)(t);this.trace&&console.log(e),t.$run=this.compileJS(e)}catch(i){throw e&&console.log(e),i}}compileJS(t){return new Function(t).bind(this)}executeStatement(t){this.compileStatement(t),t.$run()}skipToEOL(){do this.curpc++;while(this.curpc<this.allstmts.length&&!this.pc2label.get(this.curpc))}skipToElse(){for(;this.curpc<this.allstmts.length;){var t=this.allstmts[this.curpc].command;if(t=="ELSE"){this.curpc++;break}else if(t=="IF")return this.skipToEOL();if(this.curpc++,this.pc2label.get(this.curpc))break}}skipToEOF(){this.curpc=this.allstmts.length}skipToAfterNext(t){for(var r=this.curpc;r<this.allstmts.length;){var e=this.allstmts[r];if(e.command=="NEXT"){var i=e.lexpr;if(i&&i.name==t){this.curpc=r+1;return}}r++}this.runtimeError(`I couldn't find a matching NEXT ${t} to skip this for loop.`)}skipToAfterWend(){for(var t=this.curpc-1,r=0;t<this.allstmts.length;){var e=this.allstmts[t];if(e.command=="WHILE")r++;else if(e.command=="WEND"&&(r--,r==0)){this.curpc=t+1;return}t++}this.runtimeError("I couldn't find a matching WEND for this WHILE.")}gotoLabel(t){var r=this.label2pc[t];r>=0?this.curpc=r:this.runtimeError(`I tried to go to the label "${t}" but couldn't find it.`)}newLocalScope(){this.vars=Object.create(this.vars)}popLocalScope(){this.vars!==this.globals&&(this.vars=Object.getPrototypeOf(this.vars))}gosubLabel(t){this.returnStack.length>32767&&this.runtimeError("I did too many GOSUBs without a RETURN."),this.returnStack.push(this.curpc),this.gotoLabel(t)}returnFrLine truncated
`)this.column=0,e=t;else if(t==" "){var n=this.opts.printZoneLength,s=Math.floor(this.column/n),a=(s+1)*this.opts.printZoneLength;a+n>this.margin?(this.column=0,e=`
`):e=this.TAB(a)}else e=`${t}`;return e}float2str(t,r){var e=t.toString().toUpperCase();if(r>0){for(var i=r;e.length>r;)e=t.toPrecision(i--);e.startsWith("0.")?e=e.substr(1):e.startsWith("-0.")&&(e="-"+e.substr(2))}return e}printExpr(t){var r=this.valueToString(t,this.opts.numericPadding);this.column+=r.length,this.print(r)}print(t){console.log(t)}async input(t,r){return{line:"",vals:[]}}resume(){}expr2js(t,r){if(r||(r={}),k(t))return JSON.stringify(t.value);if(y(t)){if(!t.args&&r.locals&&r.locals.indexOf(t.name)>=0)return t.name;{r.isconst&&this.runtimeError("I expected a constant value here.");var e="",i=JSON.stringify(t.name);let h=t.args?t.args.map(o=>this.expr2js(o,r)).join(", "):[];return t.name.startsWith("FN")?e+=`this.getDef(${i})(${h})`:this.builtins[t.name]?(this.checkFuncArgs(t,this.builtins[t.name]),e+=`this.builtins.${t.name}(${h})`):t.args?this.opts.arraysContainChars&&t.name.endsWith("$")?e+=`this.getStringSlice(this.vars.${t.name}, ${h})`:e+=`this.arrayGet(${i}, ${h})`:e+=`this.vars.${t.name}`,r.novalid?e:`this.checkValue(${e}, ${i})`}}else if(O(t)){var n=this.expr2js(t.left,r),s=this.expr2js(t.right,r);return`this.${t.op}(${n}, ${s})`}else if(N(t)){var a=this.expr2js(t.expr,r);return`this.${t.op}(${a})`}}assign2js(t,r){r||(r={});var e="";return(t.name.startsWith("FN")||this.builtins[t.name])&&this.runtimeError("I can't call a function here."),t.args?this.opts.arraysContainChars&&t.name.endsWith("$")?this.runtimeError("I can't set array slices via this command yet."):e+=this.array2js(t,r):e=`this.globals.${t.name}`,e}array2js(t,r){var e=JSON.stringify(t.name),i=t.args||[];return this.expr2js(t,{novalid:!0})+`;this.getArray(${e}, ${i.length})`+i.map(n=>"[this.ROUND("+this.expr2js(n,r)+")]").join("")}checkFuncArgs(t,r){var e=t.args?t.args.length:0;t.name=="RND"&&e==0||t.name=="MID$"&&e==2||t.name=="INSTR"&&e==2||r.length!=e&&this.runtimeError(`I expected ${r.length} arguments for the ${t.name} function, but I got ${e}.`)}startForLoop(t,r,e,i,n){var s=this.curpc-1,a=this.pc2label.get(s);i||(i=1),this.vars[t]=r,this.trace&&console.log(`FOR ${t} = ${r} TO ${e} STEP ${i}`);var h=()=>i>=0?this.vars[t]>e:this.vars[t]<e;this.opts.testInitialFor&&h()&&(n!=null?this.curpc=n+1:this.skipToAfterNext(t)),this.forLoopStack[t]!=null&&(this.forLoopStack=this.forLoopStack.filter(o=>o==t)),this.forLoopStack.push(t),this.forLoops[t]={$next:o=>{o&&t!=o&&this.runtimeError(`I executed NEXT "${o}", but the last FOR was for "${t}".`),this.vars[t]+=i;var b=h();b?(this.forLoopStack.pop(),delete this.forLoops[t]):this.curpc=(a!=null&&this.label2pc[a]||s)+1,this.trace&&console.log(`NEXT ${t}: ${this.vars[t]} TO ${e} STEP ${i} DONE=${b}`)}}}nextForLoop(t){var r=this.forLoops[t||this.opts.optionalNextVar&&this.forLoopStack[this.forLoopStack.length-1]];r||this.runtimeError("I couldn't find a matching FOR for this NEXT."),r.$next(t)}whileLoop(t){t?this.whileLoops.push(this.curpc-1):this.skipToAfterWend()}nextWhileLoop(){var t=this.whileLoops.pop();t==null?this.runtimeError("I couldn't find a matching WHILE for this WEND."):this.curpc=t}assign(t,r,e){return e&&t.endsWith("$")?this.checkValue(this.convert(t,r),t):t.endsWith("$")?this.convertToString(r,t):this.convertToNumber(r,t)}convert(t,r){return t.endsWith("$")?r==null?"":r.toString():typeof r=="number"?r:parseFloat(r+"")}convertToString(t,r){if(typeof t!="string")this.runtimeError(`I can't convert ${t} to a string.`);else return t}convertToNumber(t,r){if(typeof t!="number")this.runtimeError(`I can't convert ${t} to a number.`);else return this.checkNum(t)}dimArray(t,...r){if(r=r.map(Math.round),this.arrays[t]!=null){if(this.opts.staticArrays)return;this.runtimeError(`I already dimensioned this array (${t}) earlier.`)}var e=this.getTotalArrayLength(r);e>this.opts.maxArrayElements&&this.runtimeError("I can't create an array with this many elements.");var i=t.endsWith("$"),n=i?Array:Float64Array;if(r.length==1)this.arrays[t]=new n(r[0]+1);else if(r.length==2){this.arrays[t]=new Array(r[0]+1);for(var s=0;s<r[0]+1;s++)this.arrays[t][s]=new n(r[1]+1)}else this.runtimeError("I only support arrays of one or two dimensions.")}getTotalArrayLength(t){for(var r=1,e=0;e<t.length;e++)t[e]<this.opts.defaultArrayBase&&this.runtimeError(`I can't create an array with a dimension less than ${this.opts.defaultArrayBase}.`),r*=t[e];return r}getArray(t,r){return this.arrays[t]||(this.opts.defaultArraySize==0&&this.dialectError("automatically declare arrays without a DIM statement (or did you mean to call a function?)"),r==1?this.dimArray(t,this.opts.defaultArraySize-1):r==2?this.dimArray(t,this.opts.defaultArraySize-1,this.opts.defaultArraySize-1):this.runtimeError("I only support arrays of one or two dimensions.")),this.arrays[t]}arrayGet(t,...r){var e=this.getArray(t,r.length);r=r.map(this.ROUND.bind(this));for(var i=e,n=0;n<r.length;n++){var s=r[n];c(i)||this.runtimeError(`I tried to lookup ${t}(${r}) but used too many dimensions.`),s<this.opts.defaultArrayBase&&this.runtimeError(`I triedLine truncated
var value = this.convert(${JSON.stringify(n.name)}, response.vals[${s}]);
@@ -34,4 +34,4 @@ import{b as S}from"./chunk-3FIVEUG2.js";import{t as E}from"./chunk-JFRBOCZW.js";
`),this.tty.addtext("*** END OF PROGRAM ***",1),this.tty.showPrintHead(!1)}loadROM(t,r){var e=this.runtime.exited;this.program=r;var i=this.runtime.load(r);this.tty.uppercaseOnly=!0,(!this.hotReload||e||!i)&&this.reset()}getROMExtension(){return".json"}reset(){this.tty.clear(),this.runtime.reset(),this.clock=0,this.transcript=[]}pause(){this.timer.stop()}resume(){this.isBlocked()||(this.animcount=0,this.timer.start())}isBlocked(){return this.tty.waitingfor!=null||this.runtime.exited}isRunning(){return this.timer.isRunning()}getDefaultExtensions(){return[".bas"]}getToolForFilename(){return"basic"}getPresets(){return L}getPC(){return this.runtime.curpc}getSP(){return 4096-this.runtime.returnStack.length}isStable(){return!0}getCPUState(){return{PC:this.getPC(),SP:this.getSP()}}saveState(){return{c:this.getCPUState(),rt:this.runtime.saveState()}}loadState(t){this.runtime.loadState(t)}getDebugTree(){return{CurrentLine:this.runtime.getCurrentLabel(),Variables:this.runtime.vars,Arrays:this.runtime.arrays,Functions:this.runtime.defs,ForLoops:this.runtime.forLoops,WhileLoops:this.runtime.whileLoops,ReturnStack:this.runtime.returnStack,NextDatum:this.runtime.datums[this.runtime.dataptr],Clock:this.clock,Options:this.runtime.opts,Internals:this.runtime}}inspect(t){let r=this.runtime.vars[t];if(r!=null)return`${t} = ${r}`}showHelp(){return"https://8bitworkshop.com/docs/platforms/basic/"}getDebugCategories(){return["Variables"]}getDebugInfo(t,r){switch(t){case"Variables":return this.varsToLongString()}}varsToLongString(){var t="",r=Object.keys(this.runtime.vars);r.sort();for(var e of r){var i=this.runtime.vars[e],n=JSON.stringify(i);n.length>24&&(n=`${n.substr(0,24)}...(${n.length})`),t+=g(e,3)+" = "+n+`
`}return t}setupDebug(t){this.onBreakpointHit=t}clearDebug(){this.onBreakpointHit=null,this.debugTrap=null}checkDebugTrap(){return this.debugTrap&&this.debugTrap()?(this.pause(),this.break(),!0):!1}break(){this.onBreakpointHit&&this.onBreakpointHit(this.saveState())}step(){var t=this.clock;this.debugTrap=()=>this.clock>t,this.resume()}stepOver(){var t=this.runtime.getStatement();if(t&&(t.command=="GOSUB"||t.command=="ONGOSUB")){var r=this.getPC()+1;this.runEval(()=>this.getPC()==r)}else this.step()}hasCustomStepOver(){return!0}runUntilReturn(){var t=this.getSP();this.runEval(()=>this.getSP()>t)}runEval(t){this.debugTrap=()=>t(this.getCPUState()),this.resume()}restartAtPC(t){return t=Math.round(t),t>=0&&t<this.runtime.allstmts.length?(this.runtime.curpc=t,this.tty.cancelinput(),this.clock=0,!0):!1}readFile(t){return this.internalFiles[t]}writeFile(t,r){return this.internalFiles[t]=r,!0}didExit(){this.internalFiles["stdout.txt"]=this.transcript.join(""),E()}};f.basic=p;
//# sourceMappingURL=basic-ZIBXBFWM.js.map
//# sourceMappingURL=basic-4BIRAQ3E.js.map
File renamed without changes.
+27
View File
@@ -0,0 +1,27 @@
import{a as Qi}from"./chunk-LNOKARBD.js";import{d as ii}from"./chunk-KT7KMEQC.js";var si=ii((ai,yr)=>{(function(c,h){"use strict";typeof yr=="object"&&typeof yr.exports=="object"?yr.exports=c.document?h(c,!0):function(m){if(!m.document)throw new Error("jQuery requires a window with a document");return h(m)}:h(c)})(typeof window!="undefined"?window:ai,function(c,h){"use strict";var m=[],x=Object.getPrototypeOf,_=m.slice,H=m.flat?function(e){return m.flat.call(e)}:function(e){return m.concat.apply([],e)},J=m.push,oe=m.indexOf,ce={},Ee=ce.toString,Ae=ce.hasOwnProperty,We=Ae.toString,_e=We.call(Object),W={},z=function(t){return typeof t=="function"&&typeof t.nodeType!="number"&&typeof t.item!="function"},Ze=function(t){return t!=null&&t===t.window},q=c.document,gt={type:!0,src:!0,nonce:!0,noModule:!0};function tn(e,t,n){n=n||q;var r,o,a=n.createElement("script");if(a.text=e,t)for(r in gt)o=t[r]||t.getAttribute&&t.getAttribute(r),o&&a.setAttribute(r,o);n.head.appendChild(a).parentNode.removeChild(a)}function at(e){return e==null?e+"":typeof e=="object"||typeof e=="function"?ce[Ee.call(e)]||"object":typeof e}var Z="3.7.1",Y=/HTML$/i,i=function(e,t){return new i.fn.init(e,t)};i.fn=i.prototype={jquery:Z,constructor:i,length:0,toArray:function(){return _.call(this)},get:function(e){return e==null?_.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=i.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return i.each(this,e)},map:function(e){return this.pushStack(i.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(_.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(i.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(i.grep(this,function(e,t){return t%2}))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:J,sort:m.sort,splice:m.splice},i.extend=i.fn.extend=function(){var e,t,n,r,o,a,s=arguments[0]||{},d=1,l=arguments.length,g=!1;for(typeof s=="boolean"&&(g=s,s=arguments[d]||{},d++),typeof s!="object"&&!z(s)&&(s={}),d===l&&(s=this,d--);d<l;d++)if((e=arguments[d])!=null)for(t in e)r=e[t],!(t==="__proto__"||s===r)&&(g&&r&&(i.isPlainObject(r)||(o=Array.isArray(r)))?(n=s[t],o&&!Array.isArray(n)?a=[]:!o&&!i.isPlainObject(n)?a={}:a=n,o=!1,s[t]=i.extend(g,a,r)):r!==void 0&&(s[t]=r));return s},i.extend({expando:"jQuery"+(Z+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!e||Ee.call(e)!=="[object Object]"?!1:(t=x(e),t?(n=Ae.call(t,"constructor")&&t.constructor,typeof n=="function"&&We.call(n)===_e):!0)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t,n){tn(e,{nonce:t&&t.nonce},n)},each:function(e,t){var n,r=0;if(te(e))for(n=e.length;r<n&&t.call(e[r],r,e[r])!==!1;r++);else for(r in e)if(t.call(e[r],r,e[r])===!1)break;return e},text:function(e){var t,n="",r=0,o=e.nodeType;if(!o)for(;t=e[r++];)n+=i.text(t);return o===1||o===11?e.textContent:o===9?e.documentElement.textContent:o===3||o===4?e.nodeValue:n},makeArray:function(e,t){var n=t||[];return e!=null&&(te(Object(e))?i.merge(n,typeof e=="string"?[e]:e):J.call(n,e)),n},inArray:function(e,t,n){return t==null?-1:oe.call(t,e,n)},isXMLDoc:function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},merge:function(e,t){for(var n=+t.length,r=0,o=e.length;r<n;r++)e[o++]=t[r];return e.length=o,e},grep:function(e,t,n){for(var r,o=[],a=0,s=e.length,d=!n;a<s;a++)r=!t(e[a],a),r!==d&&o.push(e[a]);return o},map:function(e,t,n){var r,o,a=0,s=[];if(te(e))for(r=e.length;a<r;a++)o=t(e[a],a,n),o!=null&&s.push(o);else for(a in e)o=t(e[a],a,n),o!=null&&s.push(o);return H(s)},guid:1,support:W}),typeof Symbol=="function"&&(i.fn[Symbol.iterator]=m[Symbol.iterator]),i.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){ce["[object "+t+"]"]=t.toLowerCase()});function te(e){var t=!!e&&"length"in e&&e.length,n=at(e);return z(e)||Ze(e)?!1:n==="array"||t===0||typeof t=="number"&&t>0&&t-1 in e}function ne(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var It=m.pop,qt=m.sort,mt=m.splice,G="[\\x20\\t\\r\\n\\f]",Xe=new RegExp("^"+G+"+|((?:^|[^\\\\])(?:\\\\.)*)"+G+"+$","g");i.contains=function(e,t){var n=t&&t.parentNode;return e===n||!!(n&&n.nodeType===1&&(e.contains?e.contains(n):e.compareDocumentPosition&&e.compareDocumentPosition(n)&16))};var Pt=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g;function Sn(e,t){return t?e==="\0"?"\uFFFD":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e}i.escapeSelector=function(e){return(e+"").replace(Pt,Sn)};var Re=q,yt=J;(function(){var e,t,n,r,o,a=yt,s,d,l,g,S,A=i.expando,b=0,D=0,X=dr(),se=dr(),ee=dr(),Ue=dr(),Line truncated
`):e)),t};var he=/^(?:focusinfocus|focusoutblur)$/,Te=function(e){e.stopPropagation()};i.extend(i.event,{trigger:function(e,t,n,r){var o,a,s,d,l,g,S,A,b=[n||q],D=Ae.call(e,"type")?e.type:e,X=Ae.call(e,"namespace")?e.namespace.split("."):[];if(a=A=s=n=n||q,!(n.nodeType===3||n.nodeType===8)&&!he.test(D+i.event.triggered)&&(D.indexOf(".")>-1&&(X=D.split("."),D=X.shift(),X.sort()),l=D.indexOf(":")<0&&"on"+D,e=e[i.expando]?e:new i.Event(D,typeof e=="object"&&e),e.isTrigger=r?2:3,e.namespace=X.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+X.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=t==null?[e]:i.makeArray(t,[e]),S=i.event.special[D]||{},!(!r&&S.trigger&&S.trigger.apply(n,t)===!1))){if(!r&&!S.noBubble&&!Ze(n)){for(d=S.delegateType||D,he.test(d+D)||(a=a.parentNode);a;a=a.parentNode)b.push(a),s=a;s===(n.ownerDocument||q)&&b.push(s.defaultView||s.parentWindow||c)}for(o=0;(a=b[o++])&&!e.isPropagationStopped();)A=a,e.type=o>1?d:S.bindType||D,g=(k.get(a,"events")||Object.create(null))[e.type]&&k.get(a,"handle"),g&&g.apply(a,t),g=l&&a[l],g&&g.apply&&wt(a)&&(e.result=g.apply(a,t),e.result===!1&&e.preventDefault());return e.type=D,!r&&!e.isDefaultPrevented()&&(!S._default||S._default.apply(b.pop(),t)===!1)&&wt(n)&&l&&z(n[D])&&!Ze(n)&&(s=n[l],s&&(n[l]=null),i.event.triggered=D,e.isPropagationStopped()&&A.addEventListener(D,Te),n[D](),e.isPropagationStopped()&&A.removeEventListener(D,Te),i.event.triggered=void 0,s&&(n[l]=s)),e.result}},simulate:function(e,t,n){var r=i.extend(new i.Event,n,{type:e,isSimulated:!0});i.event.trigger(r,null,t)}}),i.fn.extend({trigger:function(e,t){return this.each(function(){i.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return i.event.trigger(e,t,n,!0)}});var $e=/\[\]$/,ze=/\r?\n/g,Xn=/^(?:submit|button|image|reset|file)$/i,Fe=/^(?:input|select|textarea|keygen)/i;function Ar(e,t,n,r){var o;if(Array.isArray(t))i.each(t,function(a,s){n||$e.test(e)?r(e,s):Ar(e+"["+(typeof s=="object"&&s!=null?a:"")+"]",s,n,r)});else if(!n&&at(t)==="object")for(o in t)Ar(e+"["+o+"]",t[o],n,r);else r(e,t)}i.param=function(e,t){var n,r=[],o=function(a,s){var d=z(s)?s():s;r[r.length]=encodeURIComponent(a)+"="+encodeURIComponent(d==null?"":d)};if(e==null)return"";if(Array.isArray(e)||e.jquery&&!i.isPlainObject(e))i.each(e,function(){o(this.name,this.value)});else for(n in e)Ar(n,e[n],t,o);return r.join("&")},i.fn.extend({serialize:function(){return i.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=i.prop(this,"elements");return e?i.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!i(this).is(":disabled")&&Fe.test(this.nodeName)&&!Xn.test(e)&&(this.checked||!Ht.test(e))}).map(function(e,t){var n=i(this).val();return n==null?null:Array.isArray(n)?i.map(n,function(r){return{name:t.name,value:r.replace(ze,`\r
`)}}):{name:t.name,value:n.replace(ze,`\r
`)}}).get()}});var Li=/%20/g,ki=/#.*$/,Mi=/([?&])_=[^&]*/,Ri=/^(.*?):[ \t]*([^\r\n]*)$/mg,Ii=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Pi=/^(?:GET|HEAD)$/,Hi=/^\/\//,Xr={},wr={},Qr="*/".concat("*"),Cr=q.createElement("a");Cr.href=P.href;function Zr(e){return function(t,n){typeof t!="string"&&(n=t,t="*");var r,o=0,a=t.toLowerCase().match(Ie)||[];if(z(n))for(;r=a[o++];)r[0]==="+"?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function Jr(e,t,n,r){var o={},a=e===wr;function s(d){var l;return o[d]=!0,i.each(e[d]||[],function(g,S){var A=S(t,n,r);if(typeof A=="string"&&!a&&!o[A])return t.dataTypes.unshift(A),s(A),!1;if(a)return!(l=A)}),l}return s(t.dataTypes[0])||!o["*"]&&s("*")}function _r(e,t){var n,r,o=i.ajaxSettings.flatOptions||{};for(n in t)t[n]!==void 0&&((o[n]?e:r||(r={}))[n]=t[n]);return r&&i.extend(!0,e,r),e}function ji(e,t,n){for(var r,o,a,s,d=e.contents,l=e.dataTypes;l[0]==="*";)l.shift(),r===void 0&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r){for(o in d)if(d[o]&&d[o].test(r)){l.unshift(o);break}}if(l[0]in n)a=l[0];else{for(o in n){if(!l[0]||e.converters[o+" "+l[0]]){a=o;break}s||(s=o)}a=a||s}if(a)return a!==l[0]&&l.unshift(a),n[a]}function zi(e,t,n,r){var o,a,s,d,l,g={},S=e.dataTypes.slice();if(S[1])for(s in e.converters)g[s.toLowerCase()]=e.converters[s];for(a=S.shift();a;)if(e.responseFields[a]&&(n[e.responseFields[a]]=t),!l&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),l=a,a=S.shift(),a){if(a==="*")a=l;else if(l!=="*"&&l!==a){if(s=g[l+" "+a]||g["* "+a],!s){for(o in g)if(d=o.split(" "),d[1]===a&&(s=g[l+" "+d[0]]||g["* "+d[0]],s)){s===!0?s=g[o]:g[o]!==!0&&(a=d[0],S.unshift(d[1]));break}}if(s!==!0)if(s&&e.throws)t=s(t);else try{t=s(t)}catch(A){return{state:"parsererror",error:s?A:"No conversion from "+l+" to "+a}}}}return{state:"success",data:t}}i.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:P.href,type:"GET",isLocal:Ii.test(P.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Qr,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":i.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?_r(_r(e,i.ajaxSettings),t):_r(i.ajaxSettings,e)},ajaxPrefilter:Zr(Xr),ajaxTransport:Zr(wr),ajax:function(e,t){typeof e=="object"&&(t=e,e=void 0),t=t||{};var n,r,o,a,s,d,l,g,S,A,b=i.ajaxSetup({},t),D=b.context||b,X=b.context&&(D.nodeType||D.jquery)?i(D):i.event,se=i.Deferred(),ee=i.Callbacks("once memory"),Ue=b.statusCode||{},Oe={},Ot={},Lt="canceled",ae={readyState:0,getResponseHeader:function(le){var Ce;if(l){if(!a)for(a={};Ce=Ri.exec(o);)a[Ce[1].toLowerCase()+" "]=(a[Ce[1].toLowerCase()+" "]||[]).concat(Ce[2]);Ce=a[le.toLowerCase()+" "]}return Ce==null?null:Ce.join(", ")},getAllResponseHeaders:function(){return l?o:null},setRequestHeader:function(le,Ce){return l==null&&(le=Ot[le.toLowerCase()]=Ot[le.toLowerCase()]||le,Oe[le]=Ce),this},overrideMimeType:function(le){return l==null&&(b.mimeType=le),this},statusCode:function(le){var Ce;if(le)if(l)ae.always(le[ae.status]);else for(Ce in le)Ue[Ce]=[Ue[Ce],le[Ce]];return this},abort:function(le){var Ce=le||Lt;return n&&n.abort(Ce),gn(0,Ce),this}};if(se.promise(ae),b.url=((e||b.url||P.href)+"").replace(Hi,P.protocol+"//"),b.type=t.method||t.type||b.method||b.type,b.dataTypes=(b.dataType||"*").toLowerCase().match(Ie)||[""],b.crossDomain==null){d=q.createElement("a");try{d.href=b.url,d.href=d.href,b.crossDomain=Cr.protocol+"//"+Cr.host!=d.protocol+"//"+d.host}catch(le){b.crossDomain=!0}}if(b.data&&b.processData&&typeof b.data!="string"&&(b.data=i.param(b.data,b.traditional)),Jr(Xr,b,t,ae),l)return ae;g=i.event&&b.global,g&&i.active++===0&&i.event.trigger("ajaxStart"),b.type=b.type.toUpperCase(),b.hasContent=!Pi.test(b.type),r=b.url.replace(ki,""),b.hasContent?b.data&&b.processData&&(b.contentType||"").indexOf("application/x-www-form-urlencoded")===0&&(b.data=b.data.replace(Li,"+")):(A=b.url.slice(r.length),b.data&&(b.processData||typeof b.data=="string")&&(r+=(V.test(r)?"&":"?")+b.data,delete b.data),b.cache===!1&&(r=r.replace(Mi,"$1"),A=(V.test(r)?"&":"?")+"_="+U.guid+++A),b.url=r+A),b.ifModified&&(i.lastModified[r]&&ae.setRequestHeader("If-Modified-Since",i.lastModified[r]),i.etag[r]&&ae.setRequestHeader("If-None-Match",i.etag[r])),(b.data&&b.hasContent&&b.contentType!==!1||t.contentType)&&ae.setRequestHeader("Content-Type",b.contentType),ae.setRequestHeader("Accept",b.dataTypes[0]&&b.accepts[b.dataTypes[0]]?b.accepts[b.dataTypes[0]]+(b.dataTypes[0]!=="*"?", "+Qr+"; q=0.01":""):b.accepts["*"]);for(S in b.headers)ae.setRequestHeader(S,b.headers[S]);if(b.beforeSend&&(b.beforeSend.call(D,ae,b)===!1||l))return ae.abort();if(Lt="abort",ee.add(b.complete),ae. Line truncated
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function go(c,h){return co(c)||po(c,h)||mo(c,h)||ho()}function mo(c,h){if(c){if(typeof c=="string")return pi(c,h);var m={}.toString.call(c).slice(8,-1);return m==="Object"&&c.constructor&&(m=c.constructor.name),m==="Map"||m==="Set"?Array.from(c):m==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(m)?pi(c,h):void 0}}var Di=Object.entries,hi=Object.setPrototypeOf,yo=Object.isFrozen,vo=Object.getPrototypeOf,bo=Object.getOwnPropertyDescriptor,qe=Object.freeze,Be=Object.seal,Rn=Object.create,Ni=typeof Reflect!="undefined"&&Reflect,Kr=Ni.apply,Vr=Ni.construct;qe||(qe=function(h){return h});Be||(Be=function(h){return h});Kr||(Kr=function(h,m){for(var x=arguments.length,_=new Array(x>2?x-2:0),H=2;H<x;H++)_[H-2]=arguments[H];return h.apply(m,_)});Vr||(Vr=function(h){for(var m=arguments.length,x=new Array(m>1?m-1:0),_=1;_<m;_++)x[_-1]=arguments[_];return new h(...x)});var kn=De(Array.prototype.forEach),To=De(Array.prototype.lastIndexOf),gi=De(Array.prototype.pop),Mn=De(Array.prototype.push),So=De(Array.prototype.splice),en=Array.isArray,rr=De(String.prototype.toLowerCase),Br=De(String.prototype.toString),mi=De(String.prototype.match),tr=De(String.prototype.replace),yi=De(String.prototype.indexOf),xo=De(String.prototype.trim),Eo=De(Number.prototype.toString),Ao=De(Boolean.prototype.toString),vi=typeof BigInt=="undefined"?null:De(BigInt.prototype.toString),bi=typeof Symbol=="undefined"?null:De(Symbol.prototype.toString),Me=De(Object.prototype.hasOwnProperty),nr=De(Object.prototype.toString),ke=De(RegExp.prototype.test),Tn=wo(TypeError);function De(c){return function(h){h instanceof RegExp&&(h.lastIndex=0);for(var m=arguments.length,x=new Array(m>1?m-1:0),_=1;_<m;_++)x[_-1]=arguments[_];return Kr(c,h,x)}}function wo(c){return function(){for(var h=arguments.length,m=new Array(h),x=0;x<h;x++)m[x]=arguments[x];return Vr(c,m)}}function ue(c,h){let m=arguments.length>2&&arguments[2]!==void 0?arguments[2]:rr;if(hi&&hi(c,null),!en(h))return c;let x=h.length;for(;x--;){let _=h[x];if(typeof _=="string"){let H=m(_);H!==_&&(yo(h)||(h[x]=H),_=H)}c[_]=!0}return c}function Co(c){for(let h=0;h<c.length;h++)Me(c,h)||(c[h]=null);return c}function Ke(c){let h=Rn(null);for(let x of Di(c)){var m=go(x,2);let _=m[0],H=m[1];Me(c,_)&&(en(H)?h[_]=Co(H):H&&typeof H=="object"&&H.constructor===Object?h[_]=Ke(H):h[_]=H)}return h}function _o(c){switch(typeof c){case"string":return c;case"number":return Eo(c);case"boolean":return Ao(c);case"bigint":return vi?vi(c):"0";case"symbol":return bi?bi(c):"Symbol()";case"undefined":return nr(c);case"function":case"object":{if(c===null)return nr(c);let h=c,m=Et(h,"toString");if(typeof m=="function"){let x=m(h);return typeof x=="string"?x:nr(x)}return nr(c)}default:return nr(c)}}function Et(c,h){for(;c!==null;){let x=bo(c,h);if(x){if(x.get)return De(x.get);if(typeof x.value=="function")return De(x.value)}c=vo(c)}function m(){return null}return m}function Do(c){try{return ke(c,""),!0}catch(h){return!1}}var Ti=qe(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","search","section","select","shadow","slot","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),Wr=qe(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","enterkeyhint","exportparts","filter","font","g","glyph","glyphref","hkern","image","inputmode","line","lineargradient","marker","mask","metadata","mpath","part","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),Gr=qe(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),No=qe(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-gly Line truncated
`+Te),k&&(Te=Kt(Te)),te&&fe?Xe(Te):Te},h.setConfig=function(){let N=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};fn(N),on=!0,I=pe,C=ve},h.clearConfig=function(){nt=null,on=!1,I=null,C=null,te=It,ne=""},h.isValidAttribute=function(N,u,y){nt||fn({});let w=xe(N),P=xe(u);return Kn(w,P,y)},h.addHook=function(N,u){typeof u=="function"&&Me(ge,N)&&Mn(ge[N],u)},h.removeHook=function(N,u){if(Me(ge,N)){if(u!==void 0){let y=To(ge[N],u);return y===-1?void 0:So(ge[N],y,1)[0]}return gi(ge[N])}},h.removeHooks=function(N){Me(ge,N)&&(ge[N]=[])},h.removeAllHooks=function(){ge=_i()},h}var ia=Oi();export{Wo as a,Go as b,si as c,Ko as d,Vo as e,Xo as f,Qo as g,ao as h,Zo as i,di as j,bn as k,ia as l,lo as m};
/*! Bundled license information:
jquery/dist/jquery.js:
(*!
* jQuery JavaScript Library v3.7.1
* https://jquery.com/
*
* Copyright OpenJS Foundation and other contributors
* Released under the MIT license
* https://jquery.org/license
*
* Date: 2023-08-28T13:37Z
*)
split.js/dist/split.js:
(*! Split.js - v1.6.5 *)
dompurify/dist/purify.es.mjs:
(*! @license DOMPurify 3.4.13 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.4.13/LICENSE *)
*/
//# sourceMappingURL=chunk-6UQAGDOD.js.map
+7
View File
@@ -0,0 +1,7 @@
{
"version": 3,
"sources": ["../node_modules/jquery/dist/jquery.js", "../node_modules/split.js/dist/split.js", "../src/ide/keys.ts", "../src/ide/shortcutbar.ts", "../src/ide/toolbar.ts", "../src/common/vlist.ts", "../node_modules/dompurify/src/utils.ts", "../node_modules/dompurify/src/tags.ts", "../node_modules/dompurify/src/attrs.ts", "../node_modules/dompurify/src/regexp.ts", "../node_modules/dompurify/src/purify.ts"],
"sourcesContent": ["/*!\n * jQuery JavaScript Library v3.7.1\n * https://jquery.com/\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2023-08-28T13:37Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket trac-14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar flat = arr.flat ? function( array ) {\n\treturn arr.flat.call( array );\n} : function( array ) {\n\treturn arr.concat.apply( [], array );\n};\n\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n\t\t// Support: Chrome <=57, Firefox <=52\n\t\t// In some browsers, typeof returns \"function\" for HTML <object> elements\n\t\t// (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n\t\t// We don't want to classify *any* DOM node as a function.\n\t\t// Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5\n\t\t// Plus for old WebKit, typeof returns \"function\" for HTML collections\n\t\t// (e.g., `typeof document.getElementsByTagName(\"div\") === \"function\"`). (gh-4756)\n\t\treturn typeof obj === \"function\" && typeof obj.nodeType !== \"number\" &&\n\t\t\ttypeof obj.item !== \"function\";\n\t};\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\nvar document = window.document;\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnonce: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, node, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar i, val,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\n\t\t\t\t// Support: Firefox 64+, Edge 18+\n\t\t\t\t// Some browsers don't support the \"nonce\" property on scripts.\n\t\t\t\t// On the other hand, just using `getAttribute` is not enough as\n\t\t\t\t// the `nonce` attribute is reset to an empty string whenever it\n\t\t\t\t// becomes browsing-context connected.\n\t\t\t\t// See https://github.com/whatwg/html/issues/2369\n\t\t\t\t// See https://html.spec.whatwg.org/#nonce-attributes\n\t\t\t\t// The `node.getAttribute` check was added for the sake of\n\t\t\t\t// `jQuery.globalEval` so that it can fake a nonce-containing node\n\t\t\t\t// via an object.\n\t\t\t\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\n\t\t\t\tif ( val ) {\n\t\t\t\t\tscript.setAttribute( i, val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar version = \"3.7.1\",\n\n\trhtmlSuffix = /HTML$/i,\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t};\n\njQuery.fn = jQueryLine truncated
"mappings": "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 truncated
"names": ["require_jquery", "__commonJSMin", "exports", "module", "global", "factory", "w", "window", "noGlobal", "arr", "getProto", "slice", "flat", "array", "push", "indexOf", "class2type", "toString", "hasOwn", "fnToString", "ObjectFunctionString", "support", "isFunction", "obj", "isWindow", "document", "preservedScriptAttributes", "DOMEval", "code", "node", "doc", "i", "val", "script", "toType", "version", "rhtmlSuffix", "jQuery", "selector", "context", "num", "elems", "ret", "callback", "elem", "_elem", "len", "j", "options", "name", "src", "copy", "copyIsArray", "clone", "target", "length", "deep", "msg", "proto", "Ctor", "isArrayLike", "nodeType", "results", "namespace", "docElem", "first", "second", "invert", "callbackInverse", "matches", "callbackExpect", "arg", "value", "_i", "type", "nodeName", "pop", "sort", "splice", "whitespace", "rtrimCSS", "a", "b", "bup", "rcssescape", "fcssescape", "ch", "asCodePoint", "sel", "preferredDoc", "pushNative", "Expr", "outermostContext", "sortInput", "hasDuplicate", "documentElement", "documentIsHTML", "rbuggyQSA", "expando", "dirruns", "done", "classCache", "createCache", "tokenCache", "compilerCache", "nonnativeSelectorCache", "sortOrder", "booleans", "identifier", "attributes", "pseudos", "rwhitespace", "rcomma", "rleadingCombinator", "rdescend", "rpseudo", "ridentifier", "matchExpr", "rinputs", "rheader", "rquickExpr", "rsibling", "runescape", "funescape", "escape", "nonHex", "high", "unloadHandler", "setDocument", "inDisabledFieldset", "addCombinator", "safeActiveElement", "err", "e", "els", "find", "seed", "m", "nid", "match", "groups", "newSelector", "newContext", "testContext", "tokenize", "toSelector", "qsaError", "select", "keys", "cache", "key", "markFunction", "fn", "assert", "el", "createInputPseudo", "createButtonPseudo", "createDisabledPseudo", "disabled", "createPositionalPseudo", "argument", "matchIndexes", "subWindow", "id", "attrId", "tag", "className", "input", "compare", "expr", "elements", "duplicates", "excess", "unquoted", "nodeNameSelector", "expectedNodeName", "pattern", "operator", "check", "result", "what", "_argument", "last", "simple", "forward", "ofType", "_context", "xml", "outerCache", "nodeIndex", "start", "dir", "parent", "useCache", "diff", "pseudo", "args", "idx", "matched", "matcher", "compile", "unmatched", "text", "lang", "elemLang", "hash", "attr", "_matchIndexes", "setFilters", "parseOnly", "tokens", "soFar", "preFilters", "cached", "combinator", "base", "skip", "checkNonElements", "doneName", "oldCache", "newCache", "elementMatcher", "matchers", "multipleContexts", "contexts", "condense", "map", "filter", "newUnmatched", "mapped", "setMatcher", "preFilter", "postFilter", "postFinder", "postSelector", "temp", "matcherOut", "preMap", "postMap", "preexisting", "matcherIn", "matcherFromTokens", "checkContext", "leadingRelative", "implicitRelative", "matchContext", "matchAnyContext", "matcherFromGroupMatchers", "elementMatchers", "setMatchers", "bySet", "byElement", "superMatcher", "outermost", "matchedCount", "setMatched", "contextBackup", "dirrunsUnique", "token", "compiled", "until", "truncate", "siblings", "n", "rneedsContext", "rsingleTag", "winnow", "qualifier", "not", "self", "rootjQuery", "init", "root", "rparentsprev", "guaranteedUnique", "targets", "l", "selectors", "cur", "sibling", "rnothtmlwhite", "createOptions", "object", "_", "flag", "firing", "memory", "fired", "locked", "list", "queue", "firingIndex", "fire", "add", "index", "Identity", "v", "Thrower", "ex", "adoptValue", "resolve", "reject", "noValue", "method", "func", "tuples", "state", "promise", "deferred", "fns", "newDefer", "tuple", "returned", "onFulfilled", "onRejected", "onProgress", "maxDepth", "depth", "handler", "special", "that", "mightThrow", "then", "process", "stateString", "singleValue", "remaining", "resolveContexts", "resolveValues", "primary", "updateFunc", "rerrorNames", "error", "asyncError", "readyList", "wait", "completed", "access", "chainable", "emptyGet", "raw", "bulk", "_key", "rmsPrefix", "rdashAlpha", "fcamelCase", "_all", "letter", "camelCase", "string", "acceptData", "owner", "Data", "data", "prop", "dataPriv", "dataUser", "rbrace", "rmultiDash", "getData", "dataAttr", "attrs", "startLength", "hooks", "next", "setter", "tmp", "count", "defer", "pnum", "rcssNum", "cssExpand", "isAttached", "composed", "isHiddenWithinTree", "adjustCSS", "valueParts", "tween", "adjusted", "scale", "maxIterations", "currentValue", "initial", "unit", "initialInUnit", "defaultDisplayMap", "getDefaultDisplay", "display", "showHide", "show", "values", "rcheckableType", "rtagName", "rscriptType", "fragment", "div", "wrapMap", "getAll", "setGlobalEval", "refElements", "rhtml", "buildFragment", "scripts", "selection", "ignored", "wrap", "attached", "nodes", "rtypenamespace", "returnTrue", "returnFalse", "on", "types", "one", "origFn", "event", "handleObjIn", "eventHandle", "events", "t", "handleObj", "handlers", "namespaces", "origType", "elemData"Line truncated
}
-12
View File
@@ -1,12 +0,0 @@
import{a as Pn}from"./chunk-LNOKARBD.js";import{d as zn}from"./chunk-KT7KMEQC.js";var Fn=zn((It,Nt)=>{(function(n,r){typeof It=="object"&&typeof Nt!="undefined"?Nt.exports=r():typeof define=="function"&&define.amd?define(r):(n=typeof globalThis!="undefined"?globalThis:n||self,n.Split=r())})(It,(function(){"use strict";var n=typeof window!="undefined"?window:null,r=n===null,a=r?void 0:n.document,c="addEventListener",m="removeEventListener",g="getBoundingClientRect",S="_a",M="_b",w="_c",K="horizontal",H=function(){return!1},Z=r?"calc":["","-webkit-","-moz-","-o-"].filter(function(_){var h=a.createElement("div");return h.style.cssText="width:"+_+"calc(9px)",!!h.style.length}).shift()+"calc",k=function(_){return typeof _=="string"||_ instanceof String},se=function(_){if(k(_)){var h=a.querySelector(_);if(!h)throw new Error("Selector "+_+" did not match a DOM element");return h}return _},x=function(_,h,A){var y=_[h];return y!==void 0?y:A},Ne=function(_,h,A,y){if(h){if(y==="end")return 0;if(y==="center")return _/2}else if(A){if(y==="start")return 0;if(y==="center")return _/2}return _},pe=function(_,h){var A=a.createElement("div");return A.className="gutter gutter-"+h,A},le=function(_,h,A){var y={};return k(h)?y[_]=h:y[_]=Z+"("+h+"% - "+A+"px)",y},nt=function(_,h){var A;return A={},A[_]=h+"px",A},We=function(_,h){if(h===void 0&&(h={}),r)return{};var A=_,y,Q,Se,Le,ce,z;Array.from&&(A=Array.from(A));var me=se(A[0]),Ae=me.parentNode,rt=getComputedStyle?getComputedStyle(Ae):null,be=rt?rt.flexDirection:null,ve=x(h,"sizes")||A.map(function(){return 100/A.length}),Ce=x(h,"minSize",100),Ye=Array.isArray(Ce)?Ce:A.map(function(){return Ce}),je=x(h,"maxSize",1/0),gt=Array.isArray(je)?je:A.map(function(){return je}),v=x(h,"expandToMin",!1),Oe=x(h,"gutterSize",10),Me=x(h,"gutterAlign","center"),$e=x(h,"snapOffset",30),Tt=Array.isArray($e)?$e:A.map(function(){return $e}),Xe=x(h,"dragInterval",1),de=x(h,"direction",K),xe=x(h,"cursor",de===K?"col-resize":"row-resize"),_t=x(h,"gutter",pe),Ve=x(h,"elementStyle",le),O=x(h,"gutterStyle",nt);de===K?(y="width",Q="clientX",Se="left",Le="right",ce="clientWidth"):de==="vertical"&&(y="height",Q="clientY",Se="top",Le="bottom",ce="clientHeight");function ue(u,i,l,p){var C=Ve(y,i,l,p);Object.keys(C).forEach(function(I){u.style[I]=C[I]})}function R(u,i,l){var p=O(y,i,l);Object.keys(p).forEach(function(C){u.style[C]=p[C]})}function he(){return z.map(function(u){return u.size})}function D(u){return"touches"in u?u.touches[0][Q]:u[Q]}function ge(u){var i=z[this.a],l=z[this.b],p=i.size+l.size;i.size=u/this.size*p,l.size=p-u/this.size*p,ue(i.element,i.size,this[M],i.i),ue(l.element,l.size,this[w],l.i)}function ot(u){var i,l=z[this.a],p=z[this.b];this.dragging&&(i=D(u)-this.start+(this[M]-this.dragOffset),Xe>1&&(i=Math.round(i/Xe)*Xe),i<=l.minSize+l.snapOffset+this[M]?i=l.minSize+this[M]:i>=this.size-(p.minSize+p.snapOffset+this[w])&&(i=this.size-(p.minSize+this[w])),i>=l.maxSize-l.snapOffset+this[M]?i=l.maxSize+this[M]:i<=this.size-(p.maxSize-p.snapOffset+this[w])&&(i=this.size-(p.maxSize+this[w])),ge.call(this,i),x(h,"onDrag",H)(he()))}function ee(){var u=z[this.a].element,i=z[this.b].element,l=u[g](),p=i[g]();this.size=l[y]+p[y]+this[M]+this[w],this.start=l[Se],this.end=l[Le]}function it(u){if(!getComputedStyle)return null;var i=getComputedStyle(u);if(!i)return null;var l=u[ce];return l===0?null:(de===K?l-=parseFloat(i.paddingLeft)+parseFloat(i.paddingRight):l-=parseFloat(i.paddingTop)+parseFloat(i.paddingBottom),l)}function ze(u){var i=it(Ae);if(i===null||Ye.reduce(function(I,Y){return I+Y},0)>i)return u;var l=0,p=[],C=u.map(function(I,Y){var re=i*I/100,Re=Ne(Oe,Y===0,Y===u.length-1,Me),Te=Ye[Y]+Re;return re<Te?(l+=Te-re,p.push(0),Te):(p.push(re-Te),re)});return l===0?u:C.map(function(I,Y){var re=I;if(l>0&&p[Y]-l>0){var Re=Math.min(l,p[Y]-l);l-=Re,re=I-Re}return re/i*100})}function at(){var u=this,i=z[u.a].element,l=z[u.b].element;u.dragging&&x(h,"onDragEnd",H)(he()),u.dragging=!1,n[m]("mouseup",u.stop),n[m]("touchend",u.stop),n[m]("touchcancel",u.stop),n[m]("mousemove",u.move),n[m]("touchmove",u.move),u.stop=null,u.move=null,i[m]("selectstart",H),i[m]("dragstart",H),l[m]("selectstart",H),l[m]("dragstart",H),i.style.userSelect="",i.style.webkitUserSelect="",i.style.MozUserSelect="",i.style.pointerEvents="",l.style.userSelect="",l.style.webkitUserSelect="",l.style.MozUserSelect="",l.style.pointerEvents="",u.gutter.style.cursor="",u.parent.style.cursor="",a.body.style.cursor=""}function st(u){if(!("button"in u&&u.button!==0)){var i=this,l=z[i.a].element,p=z[i.b].element;i.dragging||x(h,"onDragStart",H)(he()),u.preventDefault(),i.dragging=!0,i.move=ot.bind(i),i.stop=at.bind(i),n[c]("mouseup",i.stop),n[c]("touchend",i.stop),n[c]("touchcancel",i.stop),n[c]("mousemove",i.move),n[c]("touchmove",i.move),l[c]("selectstart",H),l[c]("dragstart",H),p[c]("selectstart",H),p[c]("dragstart",H),l.style.userSelect="none",l.style.webkitUserSelect="none",l.style.MozUserSelect="none",l.style.pointerEvents="none",p.stLine truncated
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Bn(n,r){return Un(n)||Hn(n,r)||Wn(n,r)||Gn()}function Wn(n,r){if(n){if(typeof n=="string")return en(n,r);var a={}.toString.call(n).slice(8,-1);return a==="Object"&&n.constructor&&(a=n.constructor.name),a==="Map"||a==="Set"?Array.from(n):a==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?en(n,r):void 0}}var gn=Object.entries,tn=Object.setPrototypeOf,Yn=Object.isFrozen,jn=Object.getPrototypeOf,$n=Object.getOwnPropertyDescriptor,G=Object.freeze,B=Object.seal,Be=Object.create,Tn=typeof Reflect!="undefined"&&Reflect,Pt=Tn.apply,kt=Tn.construct;G||(G=function(r){return r});B||(B=function(r){return r});Pt||(Pt=function(r,a){for(var c=arguments.length,m=new Array(c>2?c-2:0),g=2;g<c;g++)m[g-2]=arguments[g];return r.apply(a,m)});kt||(kt=function(r){for(var a=arguments.length,c=new Array(a>1?a-1:0),m=1;m<a;m++)c[m-1]=arguments[m];return new r(...c)});var He=P(Array.prototype.forEach),Xn=P(Array.prototype.lastIndexOf),nn=P(Array.prototype.pop),Ge=P(Array.prototype.push),Vn=P(Array.prototype.splice),Ee=Array.isArray,tt=P(String.prototype.toLowerCase),Lt=P(String.prototype.toString),rn=P(String.prototype.match),Qe=P(String.prototype.replace),on=P(String.prototype.indexOf),qn=P(String.prototype.trim),Kn=P(Number.prototype.toString),Zn=P(Boolean.prototype.toString),an=typeof BigInt=="undefined"?null:P(BigInt.prototype.toString),sn=typeof Symbol=="undefined"?null:P(Symbol.prototype.toString),U=P(Object.prototype.hasOwnProperty),et=P(Object.prototype.toString),F=P(RegExp.prototype.test),Ie=Jn(TypeError);function P(n){return function(r){r instanceof RegExp&&(r.lastIndex=0);for(var a=arguments.length,c=new Array(a>1?a-1:0),m=1;m<a;m++)c[m-1]=arguments[m];return Pt(n,r,c)}}function Jn(n){return function(){for(var r=arguments.length,a=new Array(r),c=0;c<r;c++)a[c]=arguments[c];return kt(n,a)}}function E(n,r){let a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:tt;if(tn&&tn(n,null),!Ee(r))return n;let c=r.length;for(;c--;){let m=r[c];if(typeof m=="string"){let g=a(m);g!==m&&(Yn(r)||(r[c]=g),m=g)}n[m]=!0}return n}function Qn(n){for(let r=0;r<n.length;r++)U(n,r)||(n[r]=null);return n}function j(n){let r=Be(null);for(let c of gn(n)){var a=Bn(c,2);let m=a[0],g=a[1];U(n,m)&&(Ee(g)?r[m]=Qn(g):g&&typeof g=="object"&&g.constructor===Object?r[m]=j(g):r[m]=g)}return r}function er(n){switch(typeof n){case"string":return n;case"number":return Kn(n);case"boolean":return Zn(n);case"bigint":return an?an(n):"0";case"symbol":return sn?sn(n):"Symbol()";case"undefined":return et(n);case"function":case"object":{if(n===null)return et(n);let r=n,a=ne(r,"toString");if(typeof a=="function"){let c=a(r);return typeof c=="string"?c:et(c)}return et(n)}default:return et(n)}}function ne(n,r){for(;n!==null;){let c=$n(n,r);if(c){if(c.get)return P(c.get);if(typeof c.value=="function")return P(c.value)}n=jn(n)}function a(){return null}return a}function tr(n){try{return F(n,""),!0}catch(r){return!1}}var ln=G(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","search","section","select","shadow","slot","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),Ct=G(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","enterkeyhint","exportparts","filter","font","g","glyph","glyphref","hkern","image","inputmode","line","lineargradient","marker","mask","metadata","mpath","part","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),Mt=G(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),nr=G(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknow Line truncated
`+L),W&&(L=pt(L)),y&&I?me(L):L},r.setConfig=function(){let s=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};Ot(s),qe=!0,u=O,i=R},r.clearConfig=function(){Fe=null,qe=!1,u=null,i=null,y=Se,Q=""},r.isValidAttribute=function(s,e,t){Fe||Ot({});let o=N(s),f=N(e);return Kt(o,f,t)},r.addHook=function(s,e){typeof e=="function"&&U(v,s)&&Ge(v[s],e)},r.removeHook=function(s,e){if(U(v,s)){if(e!==void 0){let t=Xn(v[s],e);return t===-1?void 0:Vn(v[s],t,1)[0]}return nn(v[s])}},r.removeHooks=function(s){U(v,s)&&(v[s]=[])},r.removeAllHooks=function(){v=hn()},r}var yr=_n();export{Qt as a,De as b,yr as c,Fn as d};
/*! Bundled license information:
split.js/dist/split.js:
(*! Split.js - v1.6.5 *)
dompurify/dist/purify.es.mjs:
(*! @license DOMPurify 3.4.13 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.4.13/LICENSE *)
*/
//# sourceMappingURL=chunk-7GWCUXYG.js.map
-7
View File
@@ -1,7 +0,0 @@
{
"version": 3,
"sources": ["../node_modules/split.js/dist/split.js", "../src/ide/toolbar.ts", "../src/common/vlist.ts", "../node_modules/dompurify/src/utils.ts", "../node_modules/dompurify/src/tags.ts", "../node_modules/dompurify/src/attrs.ts", "../node_modules/dompurify/src/regexp.ts", "../node_modules/dompurify/src/purify.ts"],
"sourcesContent": ["/*! Split.js - v1.6.5 */\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 = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Split = factory());\n}(this, (function () { 'use strict';\n\n // The programming goals of Split.js are to deliver readable, understandable and\n // maintainable code, while at the same time manually optimizing for tiny minified file size,\n // browser compatibility without additional requirements\n // and very few assumptions about the user's page layout.\n var global = typeof window !== 'undefined' ? window : null;\n var ssr = global === null;\n var document = !ssr ? global.document : undefined;\n\n // Save a couple long function names that are used frequently.\n // This optimization saves around 400 bytes.\n var addEventListener = 'addEventListener';\n var removeEventListener = 'removeEventListener';\n var getBoundingClientRect = 'getBoundingClientRect';\n var gutterStartDragging = '_a';\n var aGutterSize = '_b';\n var bGutterSize = '_c';\n var HORIZONTAL = 'horizontal';\n var NOOP = function () { return false; };\n\n // Helper function determines which prefixes of CSS calc we need.\n // We only need to do this once on startup, when this anonymous function is called.\n //\n // Tests -webkit, -moz and -o prefixes. Modified from StackOverflow:\n // http://stackoverflow.com/questions/16625140/js-feature-detection-to-detect-the-usage-of-webkit-calc-over-calc/16625167#16625167\n var calc = ssr\n ? 'calc'\n : ((['', '-webkit-', '-moz-', '-o-']\n .filter(function (prefix) {\n var el = document.createElement('div');\n el.style.cssText = \"width:\" + prefix + \"calc(9px)\";\n\n return !!el.style.length\n })\n .shift()) + \"calc\");\n\n // Helper function checks if its argument is a string-like type\n var isString = function (v) { return typeof v === 'string' || v instanceof String; };\n\n // Helper function allows elements and string selectors to be used\n // interchangeably. In either case an element is returned. This allows us to\n // do `Split([elem1, elem2])` as well as `Split(['#id1', '#id2'])`.\n var elementOrSelector = function (el) {\n if (isString(el)) {\n var ele = document.querySelector(el);\n if (!ele) {\n throw new Error((\"Selector \" + el + \" did not match a DOM element\"))\n }\n return ele\n }\n\n return el\n };\n\n // Helper function gets a property from the properties object, with a default fallback\n var getOption = function (options, propName, def) {\n var value = options[propName];\n if (value !== undefined) {\n return value\n }\n return def\n };\n\n var getGutterSize = function (gutterSize, isFirst, isLast, gutterAlign) {\n if (isFirst) {\n if (gutterAlign === 'end') {\n return 0\n }\n if (gutterAlign === 'center') {\n return gutterSize / 2\n }\n } else if (isLast) {\n if (gutterAlign === 'start') {\n return 0\n }\n if (gutterAlign === 'center') {\n return gutterSize / 2\n }\n }\n\n return gutterSize\n };\n\n // Default options\n var defaultGutterFn = function (i, gutterDirection) {\n var gut = document.createElement('div');\n gut.className = \"gutter gutter-\" + gutterDirection;\n return gut\n };\n\n var defaultElementStyleFn = function (dim, size, gutSize) {\n var style = {};\n\n if (!isString(size)) {\n style[dim] = calc + \"(\" + size + \"% - \" + gutSize + \"px)\";\n } else {\n style[dim] = size;\n }\n\n return style\n };\n\n var defaultGutterStyleFn = function (dim, gutSize) {\n var obj;\n\n return (( obj = {}, obj[dim] = (gutSize + \"px\"), obj ));\n };\n\n // The main function to initialize a split. Split.js thinks about each pair\n // of elements as an independant pair. Dragging the gutter between two elements\n // only changes the dimensions of elements in that pair. This is key to understanding\n // how the following functions operate, since each function is bound to a pair.\n //\n // A pair object is shaped like this:\n //\n // {\n // a: DOM element,\n // b: DOM element,\n // aMin: Number,\n // bMin: Number,\n // dragging: Boolean,\n // parent: DOM element,\n // direction: 'horizontal' | 'vertical'\n // }\n //\n // The basic sequence:\n //\n // 1. Set defaults tLine truncated
"mappings": "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 truncated
"names": ["require_split", "__commonJSMin", "exports", "module", "global", "factory", "ssr", "document", "addEventListener", "removeEventListener", "getBoundingClientRect", "gutterStartDragging", "aGutterSize", "bGutterSize", "HORIZONTAL", "NOOP", "calc", "prefix", "el", "isString", "v", "elementOrSelector", "ele", "getOption", "options", "propName", "def", "value", "getGutterSize", "gutterSize", "isFirst", "isLast", "gutterAlign", "defaultGutterFn", "i", "gutterDirection", "gut", "defaultElementStyleFn", "dim", "size", "gutSize", "style", "defaultGutterStyleFn", "obj", "Split", "idsOption", "ids", "dimension", "clientAxis", "position", "positionEnd", "clientSize", "elements", "firstElement", "parent", "parentStyle", "parentFlexDirection", "sizes", "minSize", "minSizes", "maxSize", "maxSizes", "expandToMin", "snapOffset", "snapOffsets", "dragInterval", "direction", "cursor", "gutter", "elementStyle", "gutterStyle", "setElementSize", "prop", "setGutterSize", "gutterElement", "getSizes", "element", "getMousePosition", "e", "adjust", "offset", "a", "b", "percentage", "drag", "calculateSizes", "aBounds", "bBounds", "innerSize", "computedStyle", "trimToMin", "sizesToTrim", "parentSize", "excessPixels", "toSpare", "pixelSizes", "pixelSize", "elementGutterSize", "elementMinSize", "newPixelSize", "takenPixels", "stopDragging", "self", "startDragging", "pairs", "id", "pair", "temp", "adjustToMin", "computedSize", "setSizes", "newSizes", "trimmed", "newSize", "destroy", "preserveStyles", "preserveGutter", "getMousetrap", "Toolbar", "parentDiv", "focusDiv", "Mousetrap", "key", "alttext", "icon", "fn", "btn", "VirtualList", "config", "width", "height", "itemHeight", "scroller", "screenItemsLen", "self", "lastRepaintY", "maxBuffer", "lastScrolled", "badNodes", "i", "l", "e", "onScroll", "scrollTop", "first", "item", "itemText", "node", "from", "finalItem", "fragment", "j", "w", "h", "c", "index", "entries", "Object", "setPrototypeOf", "isFrozen", "getPrototypeOf", "getOwnPropertyDescriptor", "freeze", "seal", "create", "_ref", "Reflect", "apply", "construct", "x", "func", "thisArg", "_len", "arguments", "length", "args", "Array", "_key", "Func", "_len2", "_key2", "arrayForEach", "unapply", "prototype", "forEach", "arrayLastIndexOf", "lastIndexOf", "arrayPop", "pop", "arrayPush", "push", "arraySplice", "splice", "arrayIsArray", "isArray", "stringToLowerCase", "String", "toLowerCase", "stringToString", "toString", "stringMatch", "match", "stringReplace", "replace", "stringIndexOf", "indexOf", "stringTrim", "trim", "numberToString", "Number", "booleanToString", "Boolean", "bigintToString", "BigInt", "symbolToString", "Symbol", "objectHasOwnProperty", "hasOwnProperty", "objectToString", "regExpTest", "RegExp", "test", "typeErrorCreate", "unconstruct", "TypeError", "lastIndex", "_len3", "_key3", "_len4", "_key4", "addToSet", "set", "array", "transformCaseFunc", "l", "element", "lcElement", "cleanArray", "index", "clone", "object", "newObject", "_ref2", "_ref3", "_slicedToArray", "property", "value", "constructor", "stringifyValue", "valueAsRecord", "valueToString", "lookupGetter", "stringified", "prop", "desc", "get", "fallbackValue", "isRegex", "_unused", "html", "svg", "svgFilters", "svgDisallowed", "mathMl", "mathMlDisallowed", "text", "xml", "MUSTACHE_EXPR", "ERB_EXPR", "TMPLIT_EXPR", "DATA_ATTR", "ARIA_ATTR", "IS_ALLOWED_URI", "IS_SCRIPT_OR_DATA", "ATTR_WHITESPACE", "DOCTYPE_NAME", "CUSTOM_ELEMENT", "ELEMENT_MARKUP_PROBE", "COMMENT_MARKUP_PROBE", "FALLBACK_TAG_CLOSE", "SELF_CLOSING_TAG", "NODE_TYPE", "attribute", "cdataSection", "entityReference", "entityNode", "processingInstruction", "comment", "document", "documentType", "documentFragment", "notation", "getGlobal", "window", "_createTrustedTypesPolicy", "trustedTypes", "purifyHostElement", "createPolicy", "suffix", "ATTR_NAME", "hasAttribute", "getAttribute", "policyName", "createHTML", "createScriptURL", "scriptUrl", "_", "console", "warn", "_createHooksMap", "afterSanitizeAttributes", "afterSanitizeElements", "afterSanitizeShadowDOM", "beforeSanitizeAttributes", "beforeSanitizeElements", "beforeSanitizeShadowDOM", "uponSanitizeAttribute", "uponSanitizeElement", "uponSanitizeShadowNode", "_resolveSetOption", "cfg", "key", "fallback", "options", "base", "transform", "createDOMPurify", "undefined", "DOMPurify", "root", "version", "VERSION", "removed", "nodeType", "Element", "isSupported", "originalDocument", "currentScript", "DocumentFragment", "HTMLTemplateElement", "Node", "NodeFilter", "_window$NamedNodeMap", "NamedNodeMap", "MozNamedAttrMap", "HTMLFormElement", "DOMParser", "ElementPrototype", "cloneNode", "remove", "getNextSibling", "getChildNodes", "getParentNode", "getShadowRoot", "getAttributes", "getNodeType", "getNodeName", "getOwnerDocument", "template", "createElement", "content", "ownerDocument", "trustedTypesPolicy", "emptyHTML", "defaultTrustedTypesPolicy", "defaultTrustedTypesPolicyResolved", "IN_TRUSTED_TYPES_POLICY", "_assertNotInTrustedTypesPolicLine truncated
}
@@ -1,2 +1,2 @@
import{M as b,N as w}from"./chunk-TYDI7JZQ.js";import{d as E}from"./chunk-KT7KMEQC.js";var y=E((d,v)=>{(function(l,e){typeof define=="function"&&define.amd?define([],e):typeof d!="undefined"?e():(e(),l.FileSaver={})})(d,function(){"use strict";function l(t,r){return typeof r=="undefined"?r={autoBom:!1}:typeof r!="object"&&(console.warn("Deprecated: Expected third argument to be a object"),r={autoBom:!r}),r.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(t.type)?new Blob(["\uFEFF",t],{type:t.type}):t}function e(t,r,c){var a=new XMLHttpRequest;a.open("GET",t),a.responseType="blob",a.onload=function(){h(a.response,r,c)},a.onerror=function(){console.error("could not download file")},a.send()}function o(t){var r=new XMLHttpRequest;r.open("HEAD",t,!1);try{r.send()}catch(c){}return 200<=r.status&&299>=r.status}function i(t){try{t.dispatchEvent(new MouseEvent("click"))}catch(c){var r=document.createEvent("MouseEvents");r.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),t.dispatchEvent(r)}}var n=typeof window=="object"&&window.window===window?window:typeof self=="object"&&self.self===self?self:typeof global=="object"&&global.global===global?global:void 0,u=n.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),h=n.saveAs||(typeof window!="object"||window!==n?function(){}:"download"in HTMLAnchorElement.prototype&&!u?function(t,r,c){var a=n.URL||n.webkitURL,s=document.createElement("a");r=r||t.name||"download",s.download=r,s.rel="noopener",typeof t=="string"?(s.href=t,s.origin===location.origin?i(s):o(s.href)?e(t,r,c):i(s,s.target="_blank")):(s.href=a.createObjectURL(t),setTimeout(function(){a.revokeObjectURL(s.href)},4e4),setTimeout(function(){i(s)},0))}:"msSaveOrOpenBlob"in navigator?function(t,r,c){if(r=r||t.name||"download",typeof t!="string")navigator.msSaveOrOpenBlob(l(t,c),r);else if(o(t))e(t,r,c);else{var a=document.createElement("a");a.href=t,a.target="_blank",setTimeout(function(){i(a)})}}:function(t,r,c,a){if(a=a||open("","_blank"),a&&(a.document.title=a.document.body.innerText="downloading..."),typeof t=="string")return e(t,r,c);var s=t.type==="application/octet-stream",C=/constructor/i.test(n.HTMLElement)||n.safari,S=/CriOS\/[\d]+/.test(navigator.userAgent);if((S||s&&C||u)&&typeof FileReader!="undefined"){var p=new FileReader;p.onloadend=function(){var m=p.result;m=S?m:m.replace(/^data:[^;]*;/,"data:attachment/file;"),a?a.location.href=m:location=m,a=null},p.readAsDataURL(t)}else{var k=n.URL||n.webkitURL,f=k.createObjectURL(t);a?a.location=f:location.href=f,a=null,setTimeout(function(){k.revokeObjectURL(f)},4e4)}});n.saveAs=h.saveAs=h,typeof v!="undefined"&&(v.exports=h)})});var g=class{constructor(e){this.checkpointInterval=10;this.maxCheckpoints=300;this.reset(),this.platform=e}reset(){this.checkpoints=[],this.framerecs=[],this.frameCount=0,this.lastSeekFrame=0,this.lastSeekStep=0,this.lastStepCount=0,this.callbackStateChanged&&this.callbackStateChanged()}frameRequested(){var e={controls:this.platform.saveControlsState(),seed:b()},o=!1;return this.lastSeekFrame<this.frameCount?this.loadControls(this.lastSeekFrame):(this.platform.saveControlsState&&this.framerecs.push(e),o=this.frameCount++%this.checkpointInterval==0),this.lastSeekFrame++,this.lastSeekStep=0,this.callbackStateChanged&&this.callbackStateChanged(),o}numFrames(){return this.frameCount}currentFrame(){return this.lastSeekFrame}currentStep(){return this.lastSeekStep}recordFrame(e){this.checkpoints.push(e),this.callbackNewCheckpoint&&this.callbackNewCheckpoint(e),this.checkpoints.length>this.maxCheckpoints&&(this.checkpoints.shift(),this.framerecs=this.framerecs.slice(this.checkpointInterval),this.lastSeekFrame-=this.checkpointInterval,this.frameCount-=this.checkpointInterval,this.callbackStateChanged&&this.callbackStateChanged())}getStateAtOrBefore(e){if(e<=0&&this.checkpoints.length>0)return{frame:0,state:this.checkpoints[0]};var o=Math.floor(e/this.checkpointInterval),i=o<this.checkpoints.length?o:this.checkpoints.length-1,n=i*this.checkpointInterval;return{frame:n,state:this.checkpoints[i]}}loadFrame(e,o){if(e|=0,o|=0,e==this.lastSeekFrame&&o==this.lastSeekStep)return e;let{frame:i,state:n}=this.getStateAtOrBefore(e-1);if(n){var u=0;for(this.platform.pause(),this.platform.loadState(n);i<e;)i<this.framerecs.length&&this.loadControls(i),i++,u=this.platform.advance(i<e);return i==0&&(u=this.platform.advance(!0),this.platform.loadState(n)),o>0&&this.platform.advanceFrameClock&&(o=this.platform.advanceFrameClock(null,o)),this.lastSeekFrame=e,this.lastSeekStep=o,this.lastStepCount=u,e}else return-1}loadControls(e){this.platform.loadControlsState&&this.platform.loadControlsState(this.framerecs[e].controls),w(this.framerecs[e].seed)}getLastCheckpoint(){return this.checkpoints.length&&this.checkpoints[this.checkpoints.length-1]}};function R(l){switch(l){case"apple2":return import("./apple2-Q322SGXS.js");case"arm32"Line truncated
//# sourceMappingURL=chunk-4RN5ADZB.js.map
import{M as b,N as w}from"./chunk-TYDI7JZQ.js";import{d as E}from"./chunk-KT7KMEQC.js";var y=E((d,v)=>{(function(l,e){typeof define=="function"&&define.amd?define([],e):typeof d!="undefined"?e():(e(),l.FileSaver={})})(d,function(){"use strict";function l(t,r){return typeof r=="undefined"?r={autoBom:!1}:typeof r!="object"&&(console.warn("Deprecated: Expected third argument to be a object"),r={autoBom:!r}),r.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(t.type)?new Blob(["\uFEFF",t],{type:t.type}):t}function e(t,r,c){var a=new XMLHttpRequest;a.open("GET",t),a.responseType="blob",a.onload=function(){h(a.response,r,c)},a.onerror=function(){console.error("could not download file")},a.send()}function o(t){var r=new XMLHttpRequest;r.open("HEAD",t,!1);try{r.send()}catch(c){}return 200<=r.status&&299>=r.status}function i(t){try{t.dispatchEvent(new MouseEvent("click"))}catch(c){var r=document.createEvent("MouseEvents");r.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),t.dispatchEvent(r)}}var n=typeof window=="object"&&window.window===window?window:typeof self=="object"&&self.self===self?self:typeof global=="object"&&global.global===global?global:void 0,u=n.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),h=n.saveAs||(typeof window!="object"||window!==n?function(){}:"download"in HTMLAnchorElement.prototype&&!u?function(t,r,c){var a=n.URL||n.webkitURL,s=document.createElement("a");r=r||t.name||"download",s.download=r,s.rel="noopener",typeof t=="string"?(s.href=t,s.origin===location.origin?i(s):o(s.href)?e(t,r,c):i(s,s.target="_blank")):(s.href=a.createObjectURL(t),setTimeout(function(){a.revokeObjectURL(s.href)},4e4),setTimeout(function(){i(s)},0))}:"msSaveOrOpenBlob"in navigator?function(t,r,c){if(r=r||t.name||"download",typeof t!="string")navigator.msSaveOrOpenBlob(l(t,c),r);else if(o(t))e(t,r,c);else{var a=document.createElement("a");a.href=t,a.target="_blank",setTimeout(function(){i(a)})}}:function(t,r,c,a){if(a=a||open("","_blank"),a&&(a.document.title=a.document.body.innerText="downloading..."),typeof t=="string")return e(t,r,c);var s=t.type==="application/octet-stream",C=/constructor/i.test(n.HTMLElement)||n.safari,S=/CriOS\/[\d]+/.test(navigator.userAgent);if((S||s&&C||u)&&typeof FileReader!="undefined"){var p=new FileReader;p.onloadend=function(){var m=p.result;m=S?m:m.replace(/^data:[^;]*;/,"data:attachment/file;"),a?a.location.href=m:location=m,a=null},p.readAsDataURL(t)}else{var k=n.URL||n.webkitURL,f=k.createObjectURL(t);a?a.location=f:location.href=f,a=null,setTimeout(function(){k.revokeObjectURL(f)},4e4)}});n.saveAs=h.saveAs=h,typeof v!="undefined"&&(v.exports=h)})});var g=class{constructor(e){this.checkpointInterval=10;this.maxCheckpoints=300;this.reset(),this.platform=e}reset(){this.checkpoints=[],this.framerecs=[],this.frameCount=0,this.lastSeekFrame=0,this.lastSeekStep=0,this.lastStepCount=0,this.callbackStateChanged&&this.callbackStateChanged()}frameRequested(){var e={controls:this.platform.saveControlsState(),seed:b()},o=!1;return this.lastSeekFrame<this.frameCount?this.loadControls(this.lastSeekFrame):(this.platform.saveControlsState&&this.framerecs.push(e),o=this.frameCount++%this.checkpointInterval==0),this.lastSeekFrame++,this.lastSeekStep=0,this.callbackStateChanged&&this.callbackStateChanged(),o}numFrames(){return this.frameCount}currentFrame(){return this.lastSeekFrame}currentStep(){return this.lastSeekStep}recordFrame(e){this.checkpoints.push(e),this.callbackNewCheckpoint&&this.callbackNewCheckpoint(e),this.checkpoints.length>this.maxCheckpoints&&(this.checkpoints.shift(),this.framerecs=this.framerecs.slice(this.checkpointInterval),this.lastSeekFrame-=this.checkpointInterval,this.frameCount-=this.checkpointInterval,this.callbackStateChanged&&this.callbackStateChanged())}getStateAtOrBefore(e){if(e<=0&&this.checkpoints.length>0)return{frame:0,state:this.checkpoints[0]};var o=Math.floor(e/this.checkpointInterval),i=o<this.checkpoints.length?o:this.checkpoints.length-1,n=i*this.checkpointInterval;return{frame:n,state:this.checkpoints[i]}}loadFrame(e,o){if(e|=0,o|=0,e==this.lastSeekFrame&&o==this.lastSeekStep)return e;let{frame:i,state:n}=this.getStateAtOrBefore(e-1);if(n){var u=0;for(this.platform.pause(),this.platform.loadState(n);i<e;)i<this.framerecs.length&&this.loadControls(i),i++,u=this.platform.advance(i<e);return i==0&&(u=this.platform.advance(!0),this.platform.loadState(n)),o>0&&this.platform.advanceFrameClock&&(o=this.platform.advanceFrameClock(null,o)),this.lastSeekFrame=e,this.lastSeekStep=o,this.lastStepCount=u,e}else return-1}loadControls(e){this.platform.loadControlsState&&this.platform.loadControlsState(this.framerecs[e].controls),w(this.framerecs[e].seed)}getLastCheckpoint(){return this.checkpoints.length&&this.checkpoints[this.checkpoints.length-1]}};function R(l){switch(l){case"apple2":return import("./apple2-Q322SGXS.js");case"arm32"Line truncated
//# sourceMappingURL=chunk-F6NBEMS2.js.map
File renamed without changes.
-192
View File
@@ -1,192 +0,0 @@
import{a as zc,b as Mc,c as Io,d as GP}from"./chunk-7GWCUXYG.js";import{a as BP}from"./chunk-LNOKARBD.js";import{a as Uc}from"./chunk-A7SWO6EA.js";import{a as G0,b as H0,c as HP}from"./chunk-4RN5ADZB.js";import{D as gO,K as bO,t as F0,u as B0}from"./chunk-CZ7OSHSE.js";import{A as mn,E as yr,F as dO,G as qo,I as Na,J as Ec,K as pO,T as mO,V as N0,a as pn,b as Da,ba as Ac,d as pi,e as qa,f as Qi,g as pt,h as fO,i as V0,k as D0,m as _c,n as Rc,o as Cc,p as Js,q as q0,t as Zc,w as I0,x as OO,y as Ia,z as Mi}from"./chunk-TYDI7JZQ.js";import{a as qt,b as Xc,c as Va,d as hO,e as uO}from"./chunk-KT7KMEQC.js";var SO=hO((K0,xO)=>{(function(i){if(typeof K0=="object"&&typeof xO!="undefined")xO.exports=i();else if(typeof define=="function"&&define.amd)define([],i);else{var e;typeof window!="undefined"?e=window:typeof global!="undefined"?e=global:typeof self!="undefined"?e=self:e=this,e.localforage=i()}})(function(){var i,e,t;return(function r(n,s,o){function a(u,O){if(!s[u]){if(!n[u]){var d=typeof Va=="function"&&Va;if(!O&&d)return d(u,!0);if(l)return l(u,!0);var g=new Error("Cannot find module '"+u+"'");throw g.code="MODULE_NOT_FOUND",g}var x=s[u]={exports:{}};n[u][0].call(x.exports,function(Q){var X=n[u][1][Q];return a(X||Q)},x,x.exports,r,n,s,o)}return s[u].exports}for(var l=typeof Va=="function"&&Va,c=0;c<o.length;c++)a(o[c]);return a})({1:[function(r,n,s){(function(o){"use strict";var a=o.MutationObserver||o.WebKitMutationObserver,l;if(a){var c=0,u=new a(Q),O=o.document.createTextNode("");u.observe(O,{characterData:!0}),l=function(){O.data=c=++c%2}}else if(!o.setImmediate&&typeof o.MessageChannel!="undefined"){var d=new o.MessageChannel;d.port1.onmessage=Q,l=function(){d.port2.postMessage(0)}}else"document"in o&&"onreadystatechange"in o.document.createElement("script")?l=function(){var E=o.document.createElement("script");E.onreadystatechange=function(){Q(),E.onreadystatechange=null,E.parentNode.removeChild(E),E=null},o.document.documentElement.appendChild(E)}:l=function(){setTimeout(Q,0)};var g,x=[];function Q(){g=!0;for(var E,G,V=x.length;V;){for(G=x,x=[],E=-1;++E<V;)G[E]();V=x.length}g=!1}n.exports=X;function X(E){x.push(E)===1&&!g&&l()}}).call(this,typeof global!="undefined"?global:typeof self!="undefined"?self:typeof window!="undefined"?window:{})},{}],2:[function(r,n,s){"use strict";var o=r(1);function a(){}var l={},c=["REJECTED"],u=["FULFILLED"],O=["PENDING"];n.exports=d;function d(p){if(typeof p!="function")throw new TypeError("resolver must be a function");this.state=O,this.queue=[],this.outcome=void 0,p!==a&&X(this,p)}d.prototype.catch=function(p){return this.then(null,p)},d.prototype.then=function(p,D){if(typeof p!="function"&&this.state===u||typeof D!="function"&&this.state===c)return this;var B=new this.constructor(a);if(this.state!==O){var fe=this.state===u?p:D;x(B,fe,this.outcome)}else this.queue.push(new g(B,p,D));return B};function g(p,D,B){this.promise=p,typeof D=="function"&&(this.onFulfilled=D,this.callFulfilled=this.otherCallFulfilled),typeof B=="function"&&(this.onRejected=B,this.callRejected=this.otherCallRejected)}g.prototype.callFulfilled=function(p){l.resolve(this.promise,p)},g.prototype.otherCallFulfilled=function(p){x(this.promise,this.onFulfilled,p)},g.prototype.callRejected=function(p){l.reject(this.promise,p)},g.prototype.otherCallRejected=function(p){x(this.promise,this.onRejected,p)};function x(p,D,B){o(function(){var fe;try{fe=D(B)}catch(Ae){return l.reject(p,Ae)}fe===p?l.reject(p,new TypeError("Cannot resolve promise with itself")):l.resolve(p,fe)})}l.resolve=function(p,D){var B=E(Q,D);if(B.status==="error")return l.reject(p,B.value);var fe=B.value;if(fe)X(p,fe);else{p.state=u,p.outcome=D;for(var Ae=-1,Te=p.queue.length;++Ae<Te;)p.queue[Ae].callFulfilled(D)}return p},l.reject=function(p,D){p.state=c,p.outcome=D;for(var B=-1,fe=p.queue.length;++B<fe;)p.queue[B].callRejected(D);return p};function Q(p){var D=p&&p.then;if(p&&(typeof p=="object"||typeof p=="function")&&typeof D=="function")return function(){D.apply(p,arguments)}}function X(p,D){var B=!1;function fe(_e){B||(B=!0,l.reject(p,_e))}function Ae(_e){B||(B=!0,l.resolve(p,_e))}function Te(){D(Ae,fe)}var oe=E(Te);oe.status==="error"&&fe(oe.value)}function E(p,D){var B={};try{B.value=p(D),B.status="success"}catch(fe){B.status="error",B.value=fe}return B}d.resolve=G;function G(p){return p instanceof this?p:l.resolve(new this(a),p)}d.reject=V;function V(p){var D=new this(a);return l.reject(D,p)}d.all=F;function F(p){var D=this;if(Object.prototype.toString.call(p)!=="[object Array]")return this.reject(new TypeError("must be an array"));var B=p.length,fe=!1;if(!B)return this.resolve([]);for(var Ae=new Array(B),Te=0,oe=-1,_e=new this(a);++oe<B;)We(p[oe],oe);return _e;function We(He,ie){D.resolve(He).then(ye,function(Oe){fe||(fe=!0,l.reject(_e,Oe))});function ye(Oe){Ae[ie]=Oe,++Te===B&&!fe&&(fe=!0,l.resolve(_e,Ae))}}}d.race=j;function j(p){var D=this;if(Object.prototype.toString.call(p)!=="[object Array]")return this.reject(new TypeErLine truncated
`):h)),f};var mt=/^(?:focusinfocus|focusoutblur)$/,yt=function(h){h.stopPropagation()};p.extend(p.event,{trigger:function(h,f,m,b){var S,v,w,C,R,L,H,te,I=[m||X],ce=u.call(h,"type")?h.type:h,Ie=u.call(h,"namespace")?h.namespace.split("."):[];if(v=te=w=m=m||X,!(m.nodeType===3||m.nodeType===8)&&!mt.test(ce+p.event.triggered)&&(ce.indexOf(".")>-1&&(Ie=ce.split("."),ce=Ie.shift(),Ie.sort()),R=ce.indexOf(":")<0&&"on"+ce,h=h[p.expando]?h:new p.Event(ce,typeof h=="object"&&h),h.isTrigger=b?2:3,h.namespace=Ie.join("."),h.rnamespace=h.namespace?new RegExp("(^|\\.)"+Ie.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,h.result=void 0,h.target||(h.target=m),f=f==null?[h]:p.makeArray(f,[h]),H=p.event.special[ce]||{},!(!b&&H.trigger&&H.trigger.apply(m,f)===!1))){if(!b&&!H.noBubble&&!Q(m)){for(C=H.delegateType||ce,mt.test(C+ce)||(v=v.parentNode);v;v=v.parentNode)I.push(v),w=v;w===(m.ownerDocument||X)&&I.push(w.defaultView||w.parentWindow||i)}for(S=0;(v=I[S++])&&!h.isPropagationStopped();)te=v,h.type=S>1?C:H.bindType||ce,L=(Pe.get(v,"events")||Object.create(null))[h.type]&&Pe.get(v,"handle"),L&&L.apply(v,f),L=R&&v[R],L&&L.apply&&Or(v)&&(h.result=L.apply(v,f),h.result===!1&&h.preventDefault());return h.type=ce,!b&&!h.isDefaultPrevented()&&(!H._default||H._default.apply(I.pop(),f)===!1)&&Or(m)&&R&&x(m[ce])&&!Q(m)&&(w=m[R],w&&(m[R]=null),p.event.triggered=ce,h.isPropagationStopped()&&te.addEventListener(ce,yt),m[ce](),h.isPropagationStopped()&&te.removeEventListener(ce,yt),p.event.triggered=void 0,w&&(m[R]=w)),h.result}},simulate:function(h,f,m){var b=p.extend(new p.Event,m,{type:h,isSimulated:!0});p.event.trigger(b,null,f)}}),p.fn.extend({trigger:function(h,f){return this.each(function(){p.event.trigger(h,f,this)})},triggerHandler:function(h,f){var m=this[0];if(m)return p.event.trigger(h,f,m,!0)}});var si=/\[\]$/,Dt=/\r?\n/g,Ma=/^(?:submit|button|image|reset|file)$/i,Oi=/^(?:input|select|textarea|keygen)/i;function Kf(h,f,m,b){var S;if(Array.isArray(f))p.each(f,function(v,w){m||si.test(h)?b(h,w):Kf(h+"["+(typeof w=="object"&&w!=null?v:"")+"]",w,m,b)});else if(!m&&V(f)==="object")for(S in f)Kf(h+"["+S+"]",f[S],m,b);else b(h,f)}p.param=function(h,f){var m,b=[],S=function(v,w){var C=x(w)?w():w;b[b.length]=encodeURIComponent(v)+"="+encodeURIComponent(C==null?"":C)};if(h==null)return"";if(Array.isArray(h)||h.jquery&&!p.isPlainObject(h))p.each(h,function(){S(this.name,this.value)});else for(m in h)Kf(m,h[m],f,S);return b.join("&")},p.fn.extend({serialize:function(){return p.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var h=p.prop(this,"elements");return h?p.makeArray(h):this}).filter(function(){var h=this.type;return this.name&&!p(this).is(":disabled")&&Oi.test(this.nodeName)&&!Ma.test(h)&&(this.checked||!ni.test(h))}).map(function(h,f){var m=p(this).val();return m==null?null:Array.isArray(m)?p.map(m,function(b){return{name:f.name,value:b.replace(Dt,`\r
`)}}):{name:f.name,value:m.replace(Dt,`\r
`)}}).get()}});var XP=/%20/g,_P=/#.*$/,RP=/([?&])_=[^&]*/,CP=/^(.*?):[ \t]*([^\r\n]*)$/mg,ZP=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,EP=/^(?:GET|HEAD)$/,AP=/^\/\//,A0={},Jf={},U0="*/".concat("*"),eO=X.createElement("a");eO.href=$e.href;function z0(h){return function(f,m){typeof f!="string"&&(m=f,f="*");var b,S=0,v=f.toLowerCase().match(Ri)||[];if(x(m))for(;b=v[S++];)b[0]==="+"?(b=b.slice(1)||"*",(h[b]=h[b]||[]).unshift(m)):(h[b]=h[b]||[]).push(m)}}function M0(h,f,m,b){var S={},v=h===Jf;function w(C){var R;return S[C]=!0,p.each(h[C]||[],function(L,H){var te=H(f,m,b);if(typeof te=="string"&&!v&&!S[te])return f.dataTypes.unshift(te),w(te),!1;if(v)return!(R=te)}),R}return w(f.dataTypes[0])||!S["*"]&&w("*")}function tO(h,f){var m,b,S=p.ajaxSettings.flatOptions||{};for(m in f)f[m]!==void 0&&((S[m]?h:b||(b={}))[m]=f[m]);return b&&p.extend(!0,h,b),h}function UP(h,f,m){for(var b,S,v,w,C=h.contents,R=h.dataTypes;R[0]==="*";)R.shift(),b===void 0&&(b=h.mimeType||f.getResponseHeader("Content-Type"));if(b){for(S in C)if(C[S]&&C[S].test(b)){R.unshift(S);break}}if(R[0]in m)v=R[0];else{for(S in m){if(!R[0]||h.converters[S+" "+R[0]]){v=S;break}w||(w=S)}v=v||w}if(v)return v!==R[0]&&R.unshift(v),m[v]}function zP(h,f,m,b){var S,v,w,C,R,L={},H=h.dataTypes.slice();if(H[1])for(w in h.converters)L[w.toLowerCase()]=h.converters[w];for(v=H.shift();v;)if(h.responseFields[v]&&(m[h.responseFields[v]]=f),!R&&b&&h.dataFilter&&(f=h.dataFilter(f,h.dataType)),R=v,v=H.shift(),v){if(v==="*")v=R;else if(R!=="*"&&R!==v){if(w=L[R+" "+v]||L["* "+v],!w){for(S in L)if(C=S.split(" "),C[1]===v&&(w=L[R+" "+C[0]]||L["* "+C[0]],w)){w===!0?w=L[S]:L[S]!==!0&&(v=C[0],H.unshift(C[1]));break}}if(w!==!0)if(w&&h.throws)f=w(f);else try{f=w(f)}catch(te){return{state:"parsererror",error:w?te:"No conversion from "+R+" to "+v}}}}return{state:"success",data:f}}p.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:$e.href,type:"GET",isLocal:ZP.test($e.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":U0,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":p.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(h,f){return f?tO(tO(h,p.ajaxSettings),f):tO(p.ajaxSettings,h)},ajaxPrefilter:z0(A0),ajaxTransport:z0(Jf),ajax:function(h,f){typeof h=="object"&&(f=h,h=void 0),f=f||{};var m,b,S,v,w,C,R,L,H,te,I=p.ajaxSetup({},f),ce=I.context||I,Ie=I.context&&(ce.nodeType||ce.jquery)?p(ce):p.event,ht=p.Deferred(),Be=p.Callbacks("once memory"),di=I.statusCode||{},Jt={},hn={},un="canceled",ot={readyState:0,getResponseHeader:function(dt){var Mt;if(R){if(!v)for(v={};Mt=CP.exec(S);)v[Mt[1].toLowerCase()+" "]=(v[Mt[1].toLowerCase()+" "]||[]).concat(Mt[2]);Mt=v[dt.toLowerCase()+" "]}return Mt==null?null:Mt.join(", ")},getAllResponseHeaders:function(){return R?S:null},setRequestHeader:function(dt,Mt){return R==null&&(dt=hn[dt.toLowerCase()]=hn[dt.toLowerCase()]||dt,Jt[dt]=Mt),this},overrideMimeType:function(dt){return R==null&&(I.mimeType=dt),this},statusCode:function(dt){var Mt;if(dt)if(R)ot.always(dt[ot.status]);else for(Mt in dt)di[Mt]=[di[Mt],dt[Mt]];return this},abort:function(dt){var Mt=dt||un;return m&&m.abort(Mt),Hs(0,Mt),this}};if(ht.promise(ot),I.url=((h||I.url||$e.href)+"").replace(AP,$e.protocol+"//"),I.type=f.method||f.type||I.method||I.type,I.dataTypes=(I.dataType||"*").toLowerCase().match(Ri)||[""],I.crossDomain==null){C=X.createElement("a");try{C.href=I.url,C.href=C.href,I.crossDomain=eO.protocol+"//"+eO.host!=C.protocol+"//"+C.host}catch(dt){I.crossDomain=!0}}if(I.data&&I.processData&&typeof I.data!="string"&&(I.data=p.param(I.data,I.traditional)),M0(A0,I,f,ot),R)return ot;L=p.event&&I.global,L&&p.active++===0&&p.event.trigger("ajaxStart"),I.type=I.type.toUpperCase(),I.hasContent=!EP.test(I.type),b=I.url.replace(_P,""),I.hasContent?I.data&&I.processData&&(I.contentType||"").indexOf("application/x-www-form-urlencoded")===0&&(I.data=I.data.replace(XP,"+")):(te=I.url.slice(b.length),I.data&&(I.processData||typeof I.data=="string")&&(b+=(je.test(b)?"&":"?")+I.data,delete I.data),I.cache===!1&&(b=b.replace(RP,"$1"),te=(je.test(b)?"&":"?")+"_="+Ce.guid+++te),I.url=b+te),I.ifModified&&(p.lastModified[b]&&ot.setRequestHeader("If-Modified-Since",p.lastModified[b]),p.etag[b]&&ot.setRequestHeader("If-None-Match",p.etag[b])),(I.data&&I.hasContent&&I.contentType!==!1||f.contentType)&&ot.setRequestHeader("Content-Type",I.contentType),ot.setRequestHeader("Accept",I.dataTypes[0]&&I.accepts[I.dataTypes[0]]?I.accepts[I.dataTypes[0]]+(I.dataTypes[0]!=="*"?", "+U0+"; q=0.01":""):I.accepts["*"]);for(H in I.headers)ot.setRequestHeader(H,I.headers[H]);if(I.beforeSend&&(I.beforeSend.call(ce,ot,I)===!1||R))return ot.abort();if(un="ab Line truncated
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function c5(i,e){return o5(i)||a5(i,e)||h5(i,e)||l5()}function h5(i,e){if(i){if(typeof i=="string")return j1(i,e);var t={}.toString.call(i).slice(8,-1);return t==="Object"&&i.constructor&&(t=i.constructor.name),t==="Map"||t==="Set"?Array.from(i):t==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?j1(i,e):void 0}}var tP=Object.entries,Y1=Object.setPrototypeOf,u5=Object.isFrozen,f5=Object.getPrototypeOf,O5=Object.getOwnPropertyDescriptor,Si=Object.freeze,vi=Object.seal,Ra=Object.create,iP=typeof Reflect!="undefined"&&Reflect,x0=iP.apply,S0=iP.construct;Si||(Si=function(e){return e});vi||(vi=function(e){return e});x0||(x0=function(e,t){for(var r=arguments.length,n=new Array(r>2?r-2:0),s=2;s<r;s++)n[s-2]=arguments[s];return e.apply(t,n)});S0||(S0=function(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];return new e(...r)});var Xa=Bt(Array.prototype.forEach),d5=Bt(Array.prototype.lastIndexOf),W1=Bt(Array.prototype.pop),_a=Bt(Array.prototype.push),p5=Bt(Array.prototype.splice),Us=Array.isArray,bc=Bt(String.prototype.toLowerCase),d0=Bt(String.prototype.toString),V1=Bt(String.prototype.match),mc=Bt(String.prototype.replace),D1=Bt(String.prototype.indexOf),m5=Bt(String.prototype.trim),g5=Bt(Number.prototype.toString),b5=Bt(Boolean.prototype.toString),q1=typeof BigInt=="undefined"?null:Bt(BigInt.prototype.toString),I1=typeof Symbol=="undefined"?null:Bt(Symbol.prototype.toString),li=Bt(Object.prototype.hasOwnProperty),gc=Bt(Object.prototype.toString),ai=Bt(RegExp.prototype.test),Ao=x5(TypeError);function Bt(i){return function(e){e instanceof RegExp&&(e.lastIndex=0);for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];return x0(i,e,r)}}function x5(i){return function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return S0(i,t)}}function Ot(i,e){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:bc;if(Y1&&Y1(i,null),!Us(e))return i;let r=e.length;for(;r--;){let n=e[r];if(typeof n=="string"){let s=t(n);s!==n&&(u5(e)||(e[r]=s),n=s)}i[n]=!0}return i}function S5(i){for(let e=0;e<i.length;e++)li(i,e)||(i[e]=null);return i}function _i(i){let e=Ra(null);for(let r of tP(i)){var t=c5(r,2);let n=t[0],s=t[1];li(i,n)&&(Us(s)?e[n]=S5(s):s&&typeof s=="object"&&s.constructor===Object?e[n]=_i(s):e[n]=s)}return e}function v5(i){switch(typeof i){case"string":return i;case"number":return g5(i);case"boolean":return b5(i);case"bigint":return q1?q1(i):"0";case"symbol":return I1?I1(i):"Symbol()";case"undefined":return gc(i);case"function":case"object":{if(i===null)return gc(i);let e=i,t=rn(e,"toString");if(typeof t=="function"){let r=t(e);return typeof r=="string"?r:gc(r)}return gc(i)}default:return gc(i)}}function rn(i,e){for(;i!==null;){let r=O5(i,e);if(r){if(r.get)return Bt(r.get);if(typeof r.value=="function")return Bt(r.value)}i=f5(i)}function t(){return null}return t}function y5(i){try{return ai(i,""),!0}catch(e){return!1}}var N1=Si(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","search","section","select","shadow","slot","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),p0=Si(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","enterkeyhint","exportparts","filter","font","g","glyph","glyphref","hkern","image","inputmode","line","lineargradient","marker","mask","metadata","mpath","part","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),m0=Si(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),w5=Si(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-gly Line truncated
`+yt),Pe&&(yt=xr(yt)),D&&Ei?_e(yt):yt},e.setConfig=function(){let re=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};En(re),ns=!0,Xn=gt,an=vt},e.clearConfig=function(){Ui=null,ns=!1,Xn=null,an=null,D=fe,B=""},e.isValidAttribute=function(re,k,W){Ui||En({});let ne=$t(re),$e=$t(k);return se(ne,$e,W)},e.addHook=function(re,k){typeof k=="function"&&li(Le,re)&&_a(Le[re],k)},e.removeHook=function(re,k){if(li(Le,re)){if(k!==void 0){let W=d5(Le[re],k);return W===-1?void 0:p5(Le[re],W,1)[0]}return W1(Le[re])}},e.removeHooks=function(re){li(Le,re)&&(Le[re]=[])},e.removeAllHooks=function(){Le=eP()},e}var M5=rP();nP.exports=M5});var k0=uO(SO());var Pt=[/^\s*[.#%]?(include|incbin|embed)\s+"(.+?)"/gmi,/^\s*([;']|[/][/])#(resource)\s+"(.+?)"/gm],Ct=[/^\s*([;]|[/][/])#link\s+"(.+?)"/gm],Fa=[/^\s*(`include|[.]include)\s+"(.+?)"/gmi,/^\s*\$(include|\$dofile|\$write_image_in_table)\('(.+?)'/gmi,{re:/^\s*([.]arch)\s+(\w+)/gmi,suffix:".json"},/\$readmem[bh]\("(.+?)"/gmi],KP=[{re:/^\s*[.#%]?\s*include\s+<(.+?)>/gmi,system:!0}];function tb(i){let e=i&&gn(i);return e&&e.includeDirs&&e.includeDirs.length?KP:[]}var J0=[/^\s+(USE|ASM)\s+(\S+[.]\S+)/gm],JP=[/^[!]src\s+"(.+?)"/gmi],ek=[{re:/^\s*import\s*"(.+?)";/gmi,suffix:".wiz"},/^\s*embed\s*"(.+?)";/gmi],tk=[/^\s*(import)\s*"(.+?)"/gmi],ik=[/^\s*%%\s*#include\s+"(.+?)"/gm],eb={apple2:{preloadFS:"65-apple2"},c64:{preloadFS:"65-c64"},vic20:{preloadFS:"65-vic20"},nes:{preloadFS:"65-nes"},atari8:{preloadFS:"65-atari8"},vector:{preloadFS:"65-none"},atari7800:{preloadFS:"65-none"},devel:{preloadFS:"65-none"},vcs:{preloadFS:"65-atari2600"},pce:{preloadFS:"65-pce"},exidy:{preloadFS:"65-none"}},Ba={dasm:{id:"dasm",name:"DASM",kind:"assembler",arch:"6502",extensions:[".dasm"],editorStyle:"6502",helpURL:"https://raw.githubusercontent.com/dasm-assembler/dasm/refs/tags/v2.20.17/docs/dasm.txt",wasmModule:"dasm-wasisdk",version:"2.20.17",includePatterns:Pt,linkPatterns:Ct},acme:{id:"acme",name:"ACME",kind:"assembler",arch:"6502",extensions:[".acme"],editorStyle:"6502",helpURL:"https://raw.githubusercontent.com/sehugg/acme/main/docs/QuickRef.txt",wasmModule:"acme",version:"0.97.1",includePatterns:[...Pt,...JP],linkPatterns:Ct},xa:{id:"xa",name:"XA",kind:"assembler",arch:"6502",extensions:[".xa"],editorStyle:"6502",helpURL:"https://www.floodgap.com/retrotech/xa/",wasmModule:"xa",version:"2.4.1",includePatterns:Pt,linkPatterns:Ct},nesasm:{id:"nesasm",name:"NESASM",kind:"assembler",arch:"6502",extensions:[".nesasm"],editorStyle:"6502",wasmModule:"nesasm",version:"3.1",includePatterns:Pt,linkPatterns:Ct},merlin32:{id:"merlin32",name:"Merlin 32",kind:"assembler",arch:"6502",extensions:[".lnk"],editorStyle:"6502",wasmModule:"merlin32",version:"1.1.1",includePatterns:[...Pt,...J0],linkPatterns:Ct},cc65:{id:"cc65",name:"cc65",kind:"compiler",arch:"6502",extensions:[".c",".h"],includeDirs:["/include","/asminc"],editorStyle:"text/x-csrc",helpURL:"https://cc65.github.io/doc/cc65.html",wasmModule:"cc65",version:"2.19",platforms:eb,includePatterns:Pt,linkPatterns:Ct},ca65:{id:"ca65",name:"ca65",kind:"assembler",arch:"6502",extensions:[".s",".ca65",".inc"],includeDirs:["/include","/asminc"],editorStyle:"6502",helpURL:"https://cc65.github.io/doc/ca65.html",wasmModule:"ca65",version:"2.19",platforms:eb,includePatterns:Pt,linkPatterns:Ct},ld65:{id:"ld65",name:"ld65",kind:"linker",arch:"6502",extensions:[],wasmModule:"ld65",version:"2.19"},sdcc:{id:"sdcc",name:"SDCC",kind:"compiler",arch:"z80",extensions:[".c",".h"],includeDirs:["/include"],editorStyle:"text/x-csrc",helpURL:"http://sdcc.sourceforge.net/doc/sdccman.pdf",wasmModule:"sdcc",version:"3.6.5",platforms:{default:{preloadFS:"sdcc"}},includePatterns:Pt,linkPatterns:Ct},sdasz80:{id:"sdasz80",name:"sdasz80",kind:"assembler",arch:"z80",extensions:[".s"],includeDirs:["/include"],editorStyle:"z80",wasmModule:"sdasz80",version:"02.00",platforms:{default:{preloadFS:"sdcc"}},includePatterns:Pt,linkPatterns:Ct},sdasgb:{id:"sdasgb",name:"sdasgb",kind:"assembler",arch:"gbz80",extensions:[".sgb"],includeDirs:["/include"],editorStyle:"z80",wasmModule:"sdasgb",platforms:{default:{preloadFS:"sdcc"}},includePatterns:Pt,linkPatterns:Ct},sdldz80:{id:"sdldz80",name:"sdldz80",kind:"linker",arch:"z80",extensions:[],wasmModule:"sdldz80",version:"03.00"},sccz80:{id:"sccz80",name:"sccz80",kind:"compiler",arch:"z80",extensions:[".scc"],platforms:{default:{preloadFS:"sccz80"}},noWorkerBuild:!0},naken:{id:"naken",name:"Naken",kind:"assembler",extensions:[".ns"],noWorkerBuild:!0},zmac:{id:"zmac",name:"zmac",kind:"assembler",arch:"z80",extensions:[".z"],editorStyle:"z80",helpURL:"https://raw.githubusercontent.com/sehugg/zmac/master/doc.txt",wasmModule:"zmac",version:"28jul2018",includePatterns:Pt,linkPatterns:Ct},jsasm:{id:"jsasm",name:"JSASM",kind:"assembler",extensions:[".asm"],editorStyle:"z80",includePatterns:Fa,linkPatterns:[]},xasm6809:{id:"xasm6809",name:"XASM6809",kind:"assembler",arch:"6809",extensions:[".xasm"],editorStyle:"6809",wasmModule:"xasm6809",includePatterns:Line truncated
`){[e,t]=Go(this,e,t);let n="";for(let s=0,o=0;s<=t&&o<this.text.length;o++){let a=this.text[o],l=s+a.length;s>e&&o&&(n+=r),e<l&&t>s&&(n+=a.slice(Math.max(0,e-s),t-s)),s=l+1}return n}flatten(e){for(let t of this.text)e.push(t)}scanIdentical(){return 0}static split(e,t){let r=[],n=-1;for(let s of e)r.push(s),n+=s.length+1,r.length==32&&(t.push(new i(r,n)),r=[],n=-1);return n>-1&&t.push(new i(r,n)),t}},No=class i extends rt{constructor(e,t){super(),this.children=e,this.length=t,this.lines=0;for(let r of e)this.lines+=r.lines}lineInner(e,t,r,n){for(let s=0;;s++){let o=this.children[s],a=n+o.length,l=r+o.lines-1;if((t?l:a)>=e)return o.lineInner(e,t,r,n);n=a+1,r=l+1}}decompose(e,t,r,n){for(let s=0,o=0;o<=t&&s<this.children.length;s++){let a=this.children[s],l=o+a.length;if(e<=l&&t>=o){let c=n&((o<=e?1:0)|(l>=t?2:0));o>=e&&l<=t&&!c?r.push(a):a.decompose(e-o,t-o,r,c)}o=l+1}}replace(e,t,r){if([e,t]=Go(this,e,t),r.lines<this.lines)for(let n=0,s=0;n<this.children.length;n++){let o=this.children[n],a=s+o.length;if(e>=s&&t<=a){let l=o.replace(e-s,t-s,r),c=this.lines-o.lines+l.lines;if(l.lines<c>>4&&l.lines>c>>6){let u=this.children.slice();return u[n]=l,new i(u,this.length-(t-e)+r.length)}return super.replace(s,a,l)}s=a+1}return super.replace(e,t,r)}sliceString(e,t=this.length,r=`
`){[e,t]=Go(this,e,t);let n="";for(let s=0,o=0;s<this.children.length&&o<=t;s++){let a=this.children[s],l=o+a.length;o>e&&s&&(n+=r),e<l&&t>o&&(n+=a.sliceString(e-o,t-o,r)),o=l+1}return n}flatten(e){for(let t of this.children)t.flatten(e)}scanIdentical(e,t){if(!(e instanceof i))return 0;let r=0,[n,s,o,a]=t>0?[0,0,this.children.length,e.children.length]:[this.children.length-1,e.children.length-1,-1,-1];for(;;n+=t,s+=t){if(n==o||s==a)return r;let l=this.children[n],c=e.children[s];if(l!=c)return r+l.scanIdentical(c,t);r+=l.length+1}}static from(e,t=e.reduce((r,n)=>r+n.length+1,-1)){let r=0;for(let g of e)r+=g.lines;if(r<32){let g=[];for(let x of e)x.flatten(g);return new ir(g,t)}let n=Math.max(32,r>>5),s=n<<1,o=n>>1,a=[],l=0,c=-1,u=[];function O(g){let x;if(g.lines>s&&g instanceof i)for(let Q of g.children)O(Q);else g.lines>o&&(l>o||!l)?(d(),a.push(g)):g instanceof ir&&l&&(x=u[u.length-1])instanceof ir&&g.lines+x.lines<=32?(l+=g.lines,c+=g.length+1,u[u.length-1]=new ir(x.text.concat(g.text),x.length+1+g.length)):(l+g.lines>n&&d(),l+=g.lines,c+=g.length+1,u.push(g))}function d(){l!=0&&(a.push(u.length==1?u[0]:i.from(u,c)),c=-1,l=u.length=0)}for(let g of e)O(g);return d(),a.length==1?a[0]:new i(a,t)}};rt.empty=new ir([""],0);function ok(i){let e=-1;for(let t of i)e+=t.length+1;return e}function Ic(i,e,t=0,r=1e9){for(let n=0,s=0,o=!0;s<i.length&&n<=r;s++){let a=i[s],l=n+a.length;l>=t&&(l>r&&(a=a.slice(0,r-n)),n<t&&(a=a.slice(t-n)),o?(e[e.length-1]+=a,o=!1):e.push(a)),n=l+1}return e}function fb(i,e,t){return Ic(i,[""],e,t)}var ro=class{constructor(e,t=1){this.dir=t,this.done=!1,this.lineBreak=!1,this.value="",this.nodes=[e],this.offsets=[t>0?1:(e instanceof ir?e.text.length:e.children.length)<<1]}nextInner(e,t){for(this.done=this.lineBreak=!1;;){let r=this.nodes.length-1,n=this.nodes[r],s=this.offsets[r],o=s>>1,a=n instanceof ir?n.text.length:n.children.length;if(o==(t>0?a:0)){if(r==0)return this.done=!0,this.value="",this;t>0&&this.offsets[r-1]++,this.nodes.pop(),this.offsets.pop()}else if((s&1)==(t>0?0:1)){if(this.offsets[r]+=t,e==0)return this.lineBreak=!0,this.value=`
`,this;e--}else if(n instanceof ir){let l=n.text[o+(t<0?-1:0)];if(this.offsets[r]+=t,l.length>Math.max(0,e))return this.value=e==0?l:t>0?l.slice(e):l.slice(0,l.length-e),this;e-=l.length}else{let l=n.children[o+(t<0?-1:0)];e>l.length?(e-=l.length,this.offsets[r]+=t):(t<0&&this.offsets[r]--,this.nodes.push(l),this.offsets.push(t>0?1:(l instanceof ir?l.text.length:l.children.length)<<1))}}}next(e=0){return e<0&&(this.nextInner(-e,-this.dir),e=this.value.length),this.nextInner(e,this.dir)}},Nc=class{constructor(e,t,r){this.value="",this.done=!1,this.cursor=new ro(e,t>r?-1:1),this.pos=t>r?e.length:0,this.from=Math.min(t,r),this.to=Math.max(t,r)}nextInner(e,t){if(t<0?this.pos<=this.from:this.pos>=this.to)return this.value="",this.done=!0,this;e+=Math.max(0,t<0?this.pos-this.to:this.from-this.pos);let r=t<0?this.pos-this.from:this.to-this.pos;e>r&&(e=r),r-=e;let{value:n}=this.cursor.next(e);return this.pos+=(n.length+e)*t,this.value=n.length<=r?n:t<0?n.slice(n.length-r):n.slice(0,r),this.done=!this.value,this}next(e=0){return e<0?e=Math.max(e,this.from-this.pos):e>0&&(e=Math.min(e,this.to-this.pos)),this.nextInner(e,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&this.value!=""}},Fc=class{constructor(e){this.inner=e,this.afterBreak=!0,this.value="",this.done=!1}next(e=0){let{done:t,lineBreak:r,value:n}=this.inner.next(e);return t&&this.afterBreak?(this.value="",this.afterBreak=!1):t?(this.done=!0,this.value=""):r?this.afterBreak?this.value="":(this.afterBreak=!0,this.next()):(this.value=n,this.afterBreak=!1),this}get lineBreak(){return!1}};typeof Symbol!="undefined"&&(rt.prototype[Symbol.iterator]=function(){return this.iter()},ro.prototype[Symbol.iterator]=Nc.prototype[Symbol.iterator]=Fc.prototype[Symbol.iterator]=function(){return this});var PO=class{constructor(e,t,r,n){this.from=e,this.to=t,this.number=r,this.text=n}get length(){return this.to-this.from}};function Go(i,e,t){return e=Math.max(0,Math.min(i.length,e)),[e,Math.max(e,Math.min(i.length,t))]}function jt(i,e,t=!0,r=!0){return lb(i,e,t,r)}function ak(i){return i>=56320&&i<57344}function lk(i){return i>=55296&&i<56320}function qr(i,e){let t=i.charCodeAt(e);if(!lk(t)||e+1==i.length)return t;let r=i.charCodeAt(e+1);return ak(r)?(t-55296<<10)+(r-56320)+65536:t}function Jc(i){return i<=65535?String.fromCharCode(i):(i-=65536,String.fromCharCode((i>>10)+55296,(i&1023)+56320))}function ds(i){return i<65536?1:2}var kO=/\r\n?|\n/,ei=(function(i){return i[i.Simple=0]="Simple",i[i.TrackDel=1]="TrackDel",i[i.TrackBefore=2]="TrackBefore",i[i.TrackAfter=3]="TrackAfter",i})(ei||(ei={})),Ln=class i{constructor(e){this.sections=e}get length(){let e=0;for(let t=0;t<this.sections.length;t+=2)e+=this.sections[t];return e}get newLength(){let e=0;for(let t=0;t<this.sections.length;t+=2){let r=this.sections[t+1];e+=r<0?this.sections[t]:r}return e}get empty(){return this.sections.length==0||this.sections.length==2&&this.sections[1]<0}iterGaps(e){for(let t=0,r=0,n=0;t<this.sections.length;){let s=this.sections[t++],o=this.sections[t++];o<0?(e(r,n,s),n+=s):n+=o,r+=s}}iterChangedRanges(e,t=!1){TO(this,e,t)}get invertedDesc(){let e=[];for(let t=0;t<this.sections.length;){let r=this.sections[t++],n=this.sections[t++];n<0?e.push(r,n):e.push(n,r)}return new i(e)}composeDesc(e){return this.empty?e:e.empty?this:gb(this,e)}mapDesc(e,t=!1){return e.empty?this:XO(this,e,t)}mapPos(e,t=-1,r=ei.Simple){let n=0,s=0;for(let o=0;o<this.sections.length;){let a=this.sections[o++],l=this.sections[o++],c=n+a;if(l<0){if(c>e)return s+(e-n);s+=a}else{if(r!=ei.Simple&&c>=e&&(r==ei.TrackDel&&n<e&&c>e||r==ei.TrackBefore&&n<e||r==ei.TrackAfter&&c>e))return null;if(c>e||c==e&&t<0&&!a)return e==n||t<0?s:s+l;s+=l}n=c}if(e>n)throw new RangeError(`Position ${e} is out of range for changeset of length ${n}`);return s}touchesRange(e,t=e){for(let r=0,n=0;r<this.sections.length&&n<=t;){let s=this.sections[r++],o=this.sections[r++],a=n+s;if(o>=0&&n<=t&&a>=e)return n<e&&a>t?"cover":!0;n=a}return!1}toString(){let e="";for(let t=0;t<this.sections.length;){let r=this.sections[t++],n=this.sections[t++];e+=(e?" ":"")+r+(n>=0?":"+n:"")}return e}toJSON(){return this.sections}static fromJSON(e){if(!Array.isArray(e)||e.length%2||e.some(t=>typeof t!="number"))throw new RangeError("Invalid JSON representation of ChangeDesc");return new i(e)}static create(e){return new i(e)}},Li=class i extends Ln{constructor(e,t){super(e),this.inserted=t}apply(e){if(this.length!=e.length)throw new RangeError("Applying change set to a document with the wrong length");return TO(this,(t,r,n,s,o)=>e=e.replace(n,n+(r-t),o),!1),e}mapDesc(e,t=!1){return XO(this,e,t,!0)}invert(e){let t=this.sections.slice(),r=[];for(let n=0,s=0;n<t.length;n+=2){let o=t[n],a=t[n+1];if(a>=0){t[n]=a,t[n+1]=o;let l=n>>1;for(;r.length<l;)r.push(rt.empty);r.push(o?e.slice(s,s+o):rt.empty)}s+=o}return new i(t,r)}compose(e){return this.empty?e:e.empty?this:gb(this,e,!0)}map(e,t=!1){return e.empty?this:XO(this,e,t,!0)}iterChanges(e,t=!1){TO(this,e,t)}get desc Line truncated
`}get readOnly(){return this.facet(Qb)}phrase(e,...t){for(let r of this.facet(i.phrases))if(Object.prototype.hasOwnProperty.call(r,e)){e=r[e];break}return t.length&&(e=e.replace(/\$(\$|\d*)/g,(r,n)=>{if(n=="$")return"$";let s=+(n||1);return!s||s>t.length?r:t[s-1]})),e}languageDataAt(e,t,r=-1){let n=[];for(let s of this.facet(xb))for(let o of s(this,t,r))Object.prototype.hasOwnProperty.call(o,e)&&n.push(o[e]);return n}charCategorizer(e){let t=this.languageDataAt("wordChars",e);return gk(t.length?t[0]:"")}wordAt(e){let{text:t,from:r,length:n}=this.doc.lineAt(e),s=this.charCategorizer(e),o=e-r,a=e-r;for(;o>0;){let l=jt(t,o,!1);if(s(t.slice(l,o))!=wt.Word)break;o=l}for(;a<n;){let l=jt(t,a);if(s(t.slice(a,l))!=wt.Word)break;a=l}return o==a?null:K.range(o+r,a+r)}};Je.allowMultipleSelections=RO;Je.tabSize=be.define({combine:i=>i.length?i[0]:4});Je.lineSeparator=Sb;Je.readOnly=Qb;Je.phrases=be.define({compare(i,e){let t=Object.keys(i),r=Object.keys(e);return t.length==r.length&&t.every(n=>i[n]==e[n])}});Je.languageData=xb;Je.changeFilter=vb;Je.transactionFilter=yb;Je.transactionExtender=wb;mi.reconfigure=Ze.define();function rr(i,e,t={}){let r={};for(let n of i)for(let s of Object.keys(n)){let o=n[s],a=r[s];if(a===void 0)r[s]=o;else if(!(a===o||o===void 0))if(Object.hasOwnProperty.call(t,s))r[s]=t[s](a,o);else throw new Error("Config merge conflict for field "+s)}for(let n in e)r[n]===void 0&&(r[n]=e[n]);return r}var wr=class{eq(e){return this==e}range(e,t=e){return Ja.create(e,t,this)}};wr.prototype.startSide=wr.prototype.endSide=0;wr.prototype.point=!1;wr.prototype.mapMode=ei.TrackDel;function YO(i,e){return i==e||i.constructor==e.constructor&&i.eq(e)}var Ja=class i{constructor(e,t,r){this.from=e,this.to=t,this.value=r}static create(e,t,r){return new i(e,t,r)}};function UO(i,e){return i.from-e.from||i.value.startSide-e.value.startSide}var zO=class i{constructor(e,t,r,n){this.from=e,this.to=t,this.value=r,this.maxPoint=n}get length(){return this.to[this.to.length-1]}findIndex(e,t,r,n=0){let s=r?this.to:this.from;for(let o=n,a=s.length;;){if(o==a)return o;let l=o+a>>1,c=s[l]-e||(r?this.value[l].endSide:this.value[l].startSide)-t;if(l==o)return c>=0?o:a;c>=0?a=l:o=l+1}}between(e,t,r,n){for(let s=this.findIndex(t,-1e9,!0),o=this.findIndex(r,1e9,!1,s);s<o;s++)if(n(this.from[s]+e,this.to[s]+e,this.value[s])===!1)return!1}map(e,t){let r=[],n=[],s=[],o=-1,a=-1;for(let l=0;l<this.value.length;l++){let c=this.value[l],u=this.from[l]+e,O=this.to[l]+e,d,g;if(u==O){let x=t.mapPos(u,c.startSide,c.mapMode);if(x==null||(d=g=x,c.startSide!=c.endSide&&(g=t.mapPos(u,c.endSide),g<d)))continue}else if(d=t.mapPos(u,c.startSide),g=t.mapPos(O,c.endSide),d>g||d==g&&c.startSide>0&&c.endSide<=0)continue;(g-d||c.endSide-c.startSide)<0||(o<0&&(o=d),c.point&&(a=Math.max(a,g-d)),r.push(c),n.push(d-o),s.push(g-o))}return{mapped:r.length?new i(n,s,r,a):null,pos:o}}},De=class i{constructor(e,t,r,n){this.chunkPos=e,this.chunk=t,this.nextLayer=r,this.maxPoint=n}static create(e,t,r,n){return new i(e,t,r,n)}get length(){let e=this.chunk.length-1;return e<0?0:Math.max(this.chunkEnd(e),this.nextLayer.length)}get size(){if(this.isEmpty)return 0;let e=this.nextLayer.size;for(let t of this.chunk)e+=t.value.length;return e}chunkEnd(e){return this.chunkPos[e]+this.chunk[e].length}update(e){let{add:t=[],sort:r=!1,filterFrom:n=0,filterTo:s=this.length}=e,o=e.filter;if(t.length==0&&!o)return this;if(r&&(t=t.slice().sort(UO)),this.isEmpty)return t.length?i.of(t):this;let a=new Kc(this,null,-1).goto(0),l=0,c=[],u=new Dr;for(;a.value||l<t.length;)if(l<t.length&&(a.from-t[l].from||a.startSide-t[l].value.startSide)>=0){let O=t[l++];u.addInner(O.from,O.to,O.value)||c.push(O)}else a.rangeIndex==1&&a.chunkIndex<this.chunk.length&&(l==t.length||this.chunkEnd(a.chunkIndex)<t[l].from)&&(!o||n>this.chunkEnd(a.chunkIndex)||s<this.chunkPos[a.chunkIndex])&&u.addChunk(this.chunkPos[a.chunkIndex],this.chunk[a.chunkIndex])?a.nextChunk():((!o||n>a.to||s<a.from||o(a.from,a.to,a.value))&&(u.addInner(a.from,a.to,a.value)||c.push(Ja.create(a.from,a.to,a.value))),a.next());return u.finishInner(this.nextLayer.isEmpty&&!c.length?i.empty:this.nextLayer.update({add:c,filter:o,filterFrom:n,filterTo:s}))}map(e){if(e.empty||this.isEmpty)return this;let t=[],r=[],n=-1;for(let o=0;o<this.chunk.length;o++){let a=this.chunkPos[o],l=this.chunk[o],c=e.touchesRange(a,a+l.length);if(c===!1)n=Math.max(n,l.maxPoint),t.push(l),r.push(e.mapPos(a));else if(c===!0){let{mapped:u,pos:O}=l.map(a,e);u&&(n=Math.max(n,u.maxPoint),t.push(u),r.push(O))}}let s=this.nextLayer.map(e);return t.length==0?s:new i(r,t,s||i.empty,n)}between(e,t,r){if(!this.isEmpty){for(let n=0;n<this.chunk.length;n++){let s=this.chunkPos[n],o=this.chunk[n];if(t>=s&&e<=s+o.length&&o.between(s,e-s,t-s,r)===!1)return}this.nextLayer.between(e,t,r)}}iter(e=0){return el.from([this]).goto(e)}get isEmpty(){return this.nextLayer==this}static iter(e,t=0){return el.from(e).goto(t)}static compare(e,t,r,n,s=-1){let o=e.filter(O=>O.maxPoint>0||!O.is Line truncated
`)}static newName(){let e=Tb[kb]||1;return Tb[kb]=e+1,"\u037C"+e.toString(36)}static mount(e,t,r){let n=e[WO],s=r&&r.nonce;n?s&&n.setNonce(s):n=new VO(e,s),n.mount(Array.isArray(t)?t:[t],e)}},Xb=new Map,VO=class{constructor(e,t){let r=e.ownerDocument||e,n=r.defaultView;if(!e.head&&e.adoptedStyleSheets&&n.CSSStyleSheet){let s=Xb.get(r);if(s)return e[WO]=s;this.sheet=new n.CSSStyleSheet,Xb.set(r,this)}else this.styleTag=r.createElement("style"),t&&this.styleTag.setAttribute("nonce",t);this.modules=[],e[WO]=this}mount(e,t){let r=this.sheet,n=0,s=0;for(let o=0;o<e.length;o++){let a=e[o],l=this.modules.indexOf(a);if(l<s&&l>-1&&(this.modules.splice(l,1),s--,l=-1),l==-1){if(this.modules.splice(s++,0,a),r)for(let c=0;c<a.rules.length;c++)r.insertRule(a.rules[c],n++)}else{for(;s<l;)n+=this.modules[s++].rules.length;n+=a.rules.length,s++}}if(r)t.adoptedStyleSheets.indexOf(this.sheet)<0&&(t.adoptedStyleSheets=[this.sheet,...t.adoptedStyleSheets]);else{let o="";for(let l=0;l<this.modules.length;l++)o+=this.modules[l].getRules()+`
`;this.styleTag.textContent=o;let a=t.head||t;this.styleTag.parentNode!=a&&a.insertBefore(this.styleTag,a.firstChild)}}setNonce(e){this.styleTag&&this.styleTag.getAttribute("nonce")!=e&&this.styleTag.setAttribute("nonce",e)}};var jn={8:"Backspace",9:"Tab",10:"Enter",12:"NumLock",13:"Enter",16:"Shift",17:"Control",18:"Alt",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",44:"PrintScreen",45:"Insert",46:"Delete",59:";",61:"=",91:"Meta",92:"Meta",106:"*",107:"+",108:",",109:"-",110:".",111:"/",144:"NumLock",145:"ScrollLock",160:"Shift",161:"Shift",162:"Control",163:"Control",164:"Alt",165:"Alt",173:"-",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"},Ho={48:")",49:"!",50:"@",51:"#",52:"$",53:"%",54:"^",55:"&",56:"*",57:"(",59:":",61:"+",173:"_",186:":",187:"+",188:"<",189:"_",190:">",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"'},xk=typeof navigator!="undefined"&&/Mac/.test(navigator.platform),Sk=typeof navigator!="undefined"&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent);for(It=0;It<10;It++)jn[48+It]=jn[96+It]=String(It);var It;for(It=1;It<=24;It++)jn[It+111]="F"+It;var It;for(It=65;It<=90;It++)jn[It]=String.fromCharCode(It+32),Ho[It]=String.fromCharCode(It);var It;for(th in jn)Ho.hasOwnProperty(th)||(Ho[th]=jn[th]);var th;function _b(i){var e=xk&&i.metaKey&&i.shiftKey&&!i.ctrlKey&&!i.altKey||Sk&&i.shiftKey&&i.key&&i.key.length==1||i.key=="Unidentified",t=!e&&i.key||(i.shiftKey?Ho:jn)[i.keyCode]||i.key||"Unidentified";return t=="Esc"&&(t="Escape"),t=="Del"&&(t="Delete"),t=="Left"&&(t="ArrowLeft"),t=="Up"&&(t="ArrowUp"),t=="Right"&&(t="ArrowRight"),t=="Down"&&(t="ArrowDown"),t}function Yt(){var i=arguments[0];typeof i=="string"&&(i=document.createElement(i));var e=1,t=arguments[1];if(t&&typeof t=="object"&&t.nodeType==null&&!Array.isArray(t)){for(var r in t)if(Object.prototype.hasOwnProperty.call(t,r)){var n=t[r];typeof n=="string"?i.setAttribute(r,n):n!=null&&(i[r]=n)}e++}for(;e<arguments.length;e++)Rb(i,arguments[e]);return i}function Rb(i,e){if(typeof e=="string")i.appendChild(document.createTextNode(e));else if(e!=null)if(e.nodeType!=null)i.appendChild(e);else if(Array.isArray(e))for(var t=0;t<e.length;t++)Rb(i,e[t]);else throw new RangeError("Unsupported child node: "+e)}var Yi=typeof navigator!="undefined"?navigator:{userAgent:"",vendor:"",platform:""},JO=typeof document!="undefined"?document:{documentElement:{style:{}}},ed=/Edge\/(\d+)/.exec(Yi.userAgent),mx=/MSIE \d/.test(Yi.userAgent),td=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(Yi.userAgent),Eh=!!(mx||td||ed),Cb=!Eh&&/gecko\/(\d+)/i.test(Yi.userAgent),DO=!Eh&&/Chrome\/(\d+)/.exec(Yi.userAgent),Zb="webkitFontSmoothing"in JO.documentElement.style,id=!Eh&&/Apple Computer/.test(Yi.vendor),Eb=id&&(/Mobile\/\w+/.test(Yi.userAgent)||Yi.maxTouchPoints>2),xe={mac:Eb||/Mac/.test(Yi.platform),windows:/Win/.test(Yi.platform),linux:/Linux|X11/.test(Yi.platform),ie:Eh,ie_version:mx?JO.documentMode||6:td?+td[1]:ed?+ed[1]:0,gecko:Cb,gecko_version:Cb?+(/Firefox\/(\d+)/.exec(Yi.userAgent)||[0,0])[1]:0,chrome:!!DO,chrome_version:DO?+DO[1]:0,ios:Eb,android:/Android\b/.test(Yi.userAgent),webkit:Zb,webkit_version:Zb?+(/\bAppleWebKit\/(\d+)/.exec(Yi.userAgent)||[0,0])[1]:0,safari:id,safari_version:id?+(/\bVersion\/(\d+(\.\d+)?)/.exec(Yi.userAgent)||[0,0])[1]:0,tabSize:JO.documentElement.style.tabSize!=null?"tab-size":"-moz-tab-size"};function Nd(i,e){for(let t in i)t=="class"&&e.class?e.class+=" "+i.class:t=="style"&&e.style?e.style+=";"+i.style:e[t]=i[t];return e}var mh=Object.create(null);function Fd(i,e,t){if(i==e)return!0;i||(i=mh),e||(e=mh);let r=Object.keys(i),n=Object.keys(e);if(r.length-(t&&r.indexOf(t)>-1?1:0)!=n.length-(t&&n.indexOf(t)>-1?1:0))return!1;for(let s of r)if(s!=t&&(n.indexOf(s)==-1||i[s]!==e[s]))return!1;return!0}function vk(i,e){for(let t=i.attributes.length-1;t>=0;t--){let r=i.attributes[t].name;e[r]==null&&i.removeAttribute(r)}for(let t in e){let r=e[t];t=="style"?i.style.cssText=r:i.getAttribute(t)!=r&&i.setAttribute(t,r)}}function Ab(i,e,t){let r=!1;if(e)for(let n in e)t&&n in t||(r=!0,n=="style"?i.style.cssText="":i.removeAttribute(n));if(t)for(let n in t)e&&e[n]==t[n]||(r=!0,n=="style"?i.style.cssText=t[n]:i.setAttribute(n,t[n]));return r}function yk(i){let e=Object.create(null);for(let t=0;t<i.attributes.length;t++){let r=i.attributes[t];e[r.name]=r.value}return e}var Nt=class{eq(e){return!1}updateDOM(e,t,r){return!1}compare(e){return this==e||this.constructor==e.constructor&&this.eq(e)}get estimatedHeight(){return-1}get lineBreaks(){return 0}ignoreEvent(e){return!0}coordsAt(e,t,r){return null}get isHidden(){return!1}get editable(){return!1}destroy(e){}},gi=(function(i){return i[i.Text=0]="Text",i[i.WidgetBefore=1]="WidgetBefore",i[i.WidgetAfter=2]="WidgetAfter",i[i.WidgetRange=3]="WidgetRange",i})(gi||(gi={})),de=class extends wr{constructor(e,t,r,n){super(),this.startSide=e,this.enLine truncated
`,n=i.state.doc.line(n.number+(t?1:-1)),s=i.bidiSpans(n),c=i.visualLineSide(n,!t)}if(l){if(!l(u))return a}else{if(!r)return c;l=r(u)}a=c}}function tT(i,e,t){let r=i.state.charCategorizer(e),n=r(t);return s=>{let o=r(s);return n==wt.Space&&(n=o),n==o}}function iT(i,e,t,r){let n=e.head,s=t?1:-1;if(n==(t?i.state.doc.length:0))return K.cursor(n,e.assoc);let o=e.goalColumn,a,l=i.contentDOM.getBoundingClientRect(),c=i.coordsAtPos(n,e.assoc||((e.empty?t:e.head==e.from)?1:-1)),u=i.documentTop;if(c)o==null&&(o=c.left-l.left),a=s<0?c.top:c.bottom;else{let x=i.viewState.lineBlockAt(n);o==null&&(o=Math.min(l.right-l.left,i.defaultCharacterWidth*(n-x.from))),a=(s<0?x.top:x.bottom)+u}let O=l.left+o,d=i.viewState.heightOracle.textHeight>>1,g=r!=null?r:d;for(let x=0;;x+=d){let Q=a+(g+x)*s,X=bd(i,{x:O,y:Q},!1,s);if(t?Q>l.bottom:Q<l.top)return K.cursor(X.pos,X.assoc);let E=i.coordsAtPos(X.pos,X.assoc),G=E?(E.top+E.bottom)/2:0;if(!E||(t?G>a:G<a))return K.cursor(X.pos,X.assoc,void 0,o)}}function cl(i,e,t){for(;;){let r=0;for(let n of i)n.between(e-1,e+1,(s,o,a)=>{if(e>s&&e<o){let l=r||t||(e-s<o-e?-1:1);e=l<0?s:o,r=l}});if(!r)return e}}function Nx(i,e){let t=null;for(let r=0;r<e.ranges.length;r++){let n=e.ranges[r],s=null;if(n.empty){let o=cl(i,n.from,0);o!=n.from&&(s=K.cursor(o,-1))}else{let o=cl(i,n.from,-1),a=cl(i,n.to,1);(o!=n.from||a!=n.to)&&(n.undirectional?s=K.undirectionalRange(n.from,n.to):s=K.range(n.from==n.anchor?o:a,n.from==n.head?o:a))}s&&(t||(t=e.ranges.slice()),t[r]=s)}return t?K.create(t,e.mainIndex):e}function NO(i,e,t){let r=cl(i.state.facet(xl).map(n=>n(i)),t.from,e.head>t.from?-1:1);return r==t.from?t:K.cursor(r,r<t.from?1:-1)}var kr=class{constructor(e,t){this.pos=e,this.assoc=t}};function bd(i,e,t,r){let n=i.contentDOM.getBoundingClientRect(),s=n.top+i.viewState.paddingTop,{x:o,y:a}=e,l=a-s,c;for(;;){if(l<0)return new kr(0,1);if(l>i.viewState.docHeight)return new kr(i.state.doc.length,-1);if(c=i.elementAtHeight(l),r==null)break;if(c.type==gi.Text){if(r<0?c.to<i.viewport.from:c.from>i.viewport.to)break;let d=i.docView.coordsAt(r<0?c.from:c.to,r>0?-1:1);if(d&&(r<0?d.top<=l+s:d.bottom>=l+s))break}let O=i.viewState.heightOracle.textHeight/2;l=r>0?c.bottom+O:c.top-O}if(i.viewport.from>=c.to||i.viewport.to<=c.from){if(t)return null;if(c.type==gi.Text){let O=Jk(i,n,c,o,a);return new kr(O,O==c.from?1:-1)}}if(c.type!=gi.Text)return l<(c.top+c.bottom)/2?new kr(c.from,1):new kr(c.to,-1);let u=i.docView.lineAt(c.from,2);return(!u||u.length!=c.length)&&(u=i.docView.lineAt(c.from,-2)),new xd(i,o,a,i.textDirectionAt(c.from)).scanTile(u,c.from)}var xd=class{constructor(e,t,r,n){this.view=e,this.x=t,this.y=r,this.baseDir=n,this.line=null,this.spans=null}bidiSpansAt(e){return(!this.line||this.line.from>e||this.line.to<e)&&(this.line=this.view.state.doc.lineAt(e),this.spans=this.view.bidiSpans(this.line)),this}baseDirAt(e,t){let{line:r,spans:n}=this.bidiSpansAt(e);return n[Tr.find(n,e-r.from,-1,t)].level==this.baseDir}dirAt(e,t){let{line:r,spans:n}=this.bidiSpansAt(e);return n[Tr.find(n,e-r.from,-1,t)].dir}bidiIn(e,t){let{spans:r,line:n}=this.bidiSpansAt(e);return r.length>1||r.length&&(r[0].level!=this.baseDir||r[0].to+n.from<t)}scan(e,t,r=!1){let n=0,s=e.length-1,o=new Set,a=this.bidiIn(e[0],e[s]),l,c,u=-1,O=1e9,d;e:for(;n<s;){let x=s-n,Q=n+s>>1;t:if(o.has(Q)){for(let G=1;G<x;G++){let V=Q+G;if(V>=s&&(V-=x),!o.has(V)){Q=V;break t}}break e}o.add(Q);let X=t(Q),E=0;if(X)for(let G=0;G<X.length;G++){let V=X[G];if(!(V.width==0&&X.length>1))if(V.bottom<this.y)(!l||l.bottom<V.bottom)&&(l=V),E=1;else if(V.top>this.y)(!c||c.top>V.top)&&(c=V),E=-1;else{let F=V.left>this.x?this.x-V.left:V.right<this.x?this.x-V.right:0,j=Math.abs(F);j<O&&(u=Q,O=j,d=V),F&&(E=F<0==(this.baseDir==St.LTR)?-1:1)}}E==-1&&(!a||this.baseDirAt(e[Q],1))?s=Q:E==1&&(!a||this.baseDirAt(e[Q+1],-1))&&(n=Q+1)}if(!d){if(!c&&!l)return{i:e[0],after:!1};let x=l&&(!c||this.y-l.bottom<c.top-this.y)?l:c;return this.y=(x.top+x.bottom)/2,this.scan(e,t,!0)}if(O&&!r){let{top:x,bottom:Q}=d;if(l&&l.bottom>(x+x+Q)/3)return this.y=l.bottom-1,this.scan(e,t,!0);if(c&&c.top<(x+Q+Q)/3)return this.y=c.top+1,this.scan(e,t,!0)}let g=(a?this.dirAt(e[u],1):this.baseDir)==St.LTR;return{i:u,after:this.x>(d.left+d.right)/2==g}}scanText(e,t){let r=[];for(let s=0;s<e.length;s=jt(e.text,s))r.push(t+s);r.push(t+e.length);let n=this.scan(r,s=>{let o=r[s]-t,a=r[s+1]-t;return ml(e.dom,o,a).getClientRects()});return n.after?new kr(r[n.i+1],-1):new kr(r[n.i],1)}scanTile(e,t){if(!e.length)return new kr(t,1);if(e.children.length==1){let a=e.children[0];if(a.isText())return this.scanText(a,t);if(a.isComposite())return this.scanTile(a,t)}let r=[t];for(let a=0,l=t;a<e.children.length;a++)r.push(l+=e.children[a].length);let n=this.scan(r,a=>{let l=e.children[a];return l.flags&48?null:(l.dom.nodeType==1?l.dom:ml(l.dom,0,l.length)).getClientRects()}),s=e.children[n.i],o=r[n.i];return s.isText()?this.scanText(s,o):s.isComposite()?this.scanTile(s,o):n.after?new kr(r[n.i+1],-1):new kr(o,1)}},Ko="\uFFFF",Sd=class{ Line truncated
`&&i.lineWrapping&&(r&&(r=K.single(r.main.anchor-1,r.main.head-1)),t={from:s.from,to:s.to,insert:rt.of([" "])}),t)return tp(i,t,r,o);if(r&&!Qh(r,s)){let a=!1,l="select";return i.inputState.lastSelectionTime>Date.now()-50&&(i.inputState.lastSelectionOrigin=="select"&&(a=!0),l=i.inputState.lastSelectionOrigin,l=="select.pointer"&&(r=Nx(n.facet(xl).map(c=>c(i)),r))),i.dispatch({selection:r,scrollIntoView:a,userEvent:l}),!0}else return!1}function tp(i,e,t,r=-1){if(xe.ios&&i.inputState.flushIOSKey(e))return!0;let n=i.state.selection.main;if(xe.android&&(e.to==n.to&&(e.from==n.from||e.from==n.from-1&&i.state.sliceDoc(e.from,n.from)==" ")&&e.insert.length==1&&e.insert.lines==2&&na(i.contentDOM,"Enter",13)||(e.from==n.from-1&&e.to==n.to&&e.insert.length==0||r==8&&e.insert.length<e.to-e.from&&e.to>n.head)&&na(i.contentDOM,"Backspace",8)||e.from==n.from&&e.to==n.to+1&&e.insert.length==0&&na(i.contentDOM,"Delete",46)))return!0;let s=e.insert.toString();i.inputState.composing>=0&&i.inputState.composing++;let o,a=()=>o||(o=sT(i,e,t));return i.state.facet(Ax).some(l=>l(i,e.from,e.to,s,a))||i.dispatch(a()),!0}function sT(i,e,t){let r,n=i.state,s=n.selection.main,o=-1;if(e.from==e.to&&e.from<s.from||e.from>s.to){let l=e.from<s.from?-1:1,c=l<0?s.from:s.to,u=cl(n.facet(xl).map(O=>O(i)),c,l);e.from==u&&(o=u)}if(o>-1)r={changes:e,selection:K.cursor(e.from+e.insert.length,-1)};else if(e.from>=s.from&&e.to<=s.to&&e.to-e.from>=(s.to-s.from)/3&&(!t||t.main.empty&&t.main.from==e.from+e.insert.length)&&i.inputState.composing<0){let l=s.from<e.from?n.sliceDoc(s.from,e.from):"",c=s.to>e.to?n.sliceDoc(e.to,s.to):"";r=n.replaceSelection(i.state.toText(l+e.insert.sliceString(0,void 0,i.state.lineBreak)+c))}else{let l=n.changes(e),c=t&&t.main.to<=l.newLength?t.main:void 0;if(n.selection.ranges.length>1&&(i.inputState.composing>=0||i.inputState.compositionPendingChange)&&e.to<=s.to+10&&e.to>=s.to-10){let u=i.state.sliceDoc(e.from,e.to),O,d=t&&Ix(i,t.main.head);if(d){let x=e.insert.length-(e.to-e.from);O={from:d.from,to:d.to-x}}else O=i.state.doc.lineAt(s.head);let g=s.to-e.to;r=n.changeByRange(x=>{if(x.from==s.from&&x.to==s.to)return{changes:l,range:c||x.map(l)};let Q=x.to-g,X=Q-u.length;if(i.state.sliceDoc(X,Q)!=u||Q>=O.from&&X<=O.to)return{range:x};let E=n.changes({from:X,to:Q,insert:e.insert}),G=x.to-s.to;return{changes:E,range:c?K.range(Math.max(0,c.anchor+G),Math.max(0,c.head+G)):x.map(E)}})}else r={changes:l,selection:c&&n.selection.replaceRange(c)}}let a="input.type";return(i.composing||i.inputState.compositionPendingChange&&i.inputState.compositionEndedAt>Date.now()-50)&&(i.inputState.compositionPendingChange=!1,a+=".compose",i.inputState.compositionFirstChange&&(a+=".start",i.inputState.compositionFirstChange=!1)),n.update(r,{userEvent:a,scrollIntoView:!0})}function Gx(i,e,t,r){let n=Math.min(i.length,e.length),s=0;for(;s<n&&i.charCodeAt(s)==e.charCodeAt(s);)s++;if(s==n&&i.length==e.length)return null;let o=i.length,a=e.length;for(;o>0&&a>0&&i.charCodeAt(o-1)==e.charCodeAt(a-1);)o--,a--;if(r=="end"){let l=Math.max(0,s-Math.min(o,a));t-=o+l-s}if(o<s&&i.length<e.length){let l=t<=s&&t>=o?s-t:0;s-=l,a=s+(a-o),o=s}else if(a<s){let l=t<=s&&t>=a?s-t:0;s-=l,o=s+(o-a),a=s}return{from:s,toA:o,toB:a}}function oT(i){let e=[];if(i.root.activeElement!=i.contentDOM)return e;let{anchorNode:t,anchorOffset:r,focusNode:n,focusOffset:s}=i.observer.selectionRange;return t&&(e.push(new wh(t,r)),(n!=t||s!=r)&&e.push(new wh(n,s))),e}function aT(i,e){if(i.length==0)return null;let t=i[0].pos,r=i.length==2?i[1].pos:t;return t>-1&&r>-1?K.single(t+e,r+e):null}function Qh(i,e){return e.head==i.main.head&&e.anchor==i.main.anchor}var yd=class{setSelectionOrigin(e){this.lastSelectionOrigin=e,this.lastSelectionTime=Date.now()}constructor(e){this.view=e,this.lastKeyCode=0,this.lastKeyTime=0,this.touchActive=!1,this.lastTouchTime=0,this.lastTouchX=0,this.lastTouchY=0,this.lastFocusTime=0,this.lastScrollTop=0,this.lastScrollLeft=0,this.lastWheelEvent=0,this.pendingIOSKey=void 0,this.lastIOSMomentumScroll=0,this.tabFocusMode=-1,this.lastSelectionOrigin=null,this.lastSelectionTime=0,this.lastContextMenu=0,this.scrollHandlers=[],this.handlers=Object.create(null),this.composing=-1,this.compositionFirstChange=null,this.compositionEndedAt=0,this.compositionPendingKey=!1,this.compositionPendingChange=!1,this.insertingText="",this.insertingTextAt=0,this.mouseSelection=null,this.draggedContent=null,this.handleEvent=this.handleEvent.bind(this),this.notifiedFocused=e.hasFocus,xe.safari&&e.contentDOM.addEventListener("input",()=>null),xe.gecko&&yT(e.contentDOM.ownerDocument)}handleEvent(e){!pT(this.view,e)||this.ignoreDuringComposition(e)||e.type=="keydown"&&this.keydown(e)||(this.view.updateState!=0?Promise.resolve().then(()=>this.runHandlers(e.type,e)):this.runHandlers(e.type,e))}runHandlers(e,t){let r=this.handlers[e];if(r){for(let n of r.observers)n(this.view,t);for(let n of r.handlers){if(t.defaultPrevented)break;if(n(this.view,t)){t.preventDefault();break}}}}ensureHandl Line truncated
`))};if((xe.mac||xe.android)&&O.from==o-1&&/^\. ?$/.test(r.text)&&e.contentDOM.getAttribute("autocorrect")=="off"&&(O={from:a,to:l,insert:rt.of([r.text.replace("."," ")])}),this.pendingContextChange=O,!e.state.readOnly){let d=this.to-this.from+(O.to-O.from+O.insert.length);tp(e,O,K.single(this.toEditorPos(r.selectionStart,d),this.toEditorPos(r.selectionEnd,d)))}this.pendingContextChange&&(this.revertPending(e.state),this.setSelection(e.state)),O.from<O.to&&!O.insert.length&&e.inputState.composing>=0&&!/[\\p{Alphabetic}\\p{Number}_]/.test(t.text.slice(Math.max(0,r.updateRangeStart-1),Math.min(t.text.length,r.updateRangeStart+1)))&&this.handlers.compositionend(r)},this.handlers.characterboundsupdate=r=>{let n=[],s=null;for(let o=this.toEditorPos(r.rangeStart),a=this.toEditorPos(r.rangeEnd);o<a;o++){let l=e.coordsForChar(o);s=l&&new DOMRect(l.left,l.top,l.right-l.left,l.bottom-l.top)||s||new DOMRect,n.push(s)}t.updateCharacterBounds(r.rangeStart,n)},this.handlers.textformatupdate=r=>{let n=[];for(let s of r.getTextFormats()){let o=s.underlineStyle,a=s.underlineThickness;if(!/none/i.test(o)&&!/none/i.test(a)){let l=this.toEditorPos(s.rangeStart),c=this.toEditorPos(s.rangeEnd);if(l<c){let u=`text-decoration: underline ${/^[a-z]/.test(o)?o+" ":o=="Dashed"?"dashed ":o=="Squiggle"?"wavy ":""}${/thin/i.test(a)?1:2}px`;n.push(de.mark({attributes:{style:u}}).range(l,c))}}}e.dispatch({effects:jx.of(de.set(n))})},this.handlers.compositionstart=()=>{e.inputState.composing<0&&(e.inputState.composing=0,e.inputState.compositionFirstChange=!0)},this.handlers.compositionend=()=>{if(e.inputState.composing=-1,e.inputState.compositionFirstChange=null,this.composing){let{drifted:r}=this.composing;this.composing=null,r&&this.reset(e.state)}};for(let r in this.handlers)t.addEventListener(r,this.handlers[r]);this.measureReq={read:r=>{let n=pl(r.root);n&&n.rangeCount&&this.editContext.updateSelectionBounds(n.getRangeAt(0).getBoundingClientRect())}}}applyEdits(e){let t=0,r=!1,n=this.pendingContextChange;return e.changes.iterChanges((s,o,a,l,c)=>{if(r)return;let u=c.length-(o-s);if(n&&o>=n.to)if(n.from==s&&n.to==o&&n.insert.eq(c)){n=this.pendingContextChange=null,t+=u,this.to+=u;return}else n=null,this.revertPending(e.state);if(s+=t,o+=t,o<=this.from)this.from+=u,this.to+=u;else if(s<this.to){if(s<this.from||o>this.to||this.to-this.from+c.length>3e4){r=!0;return}this.editContext.updateText(this.toContextPos(s),this.toContextPos(o),c.toString()),this.to+=u}t+=u}),n&&!r&&this.revertPending(e.state),!r}update(e){let t=this.pendingContextChange,r=e.startState.selection.main;this.composing&&(this.composing.drifted||!e.changes.touchesRange(r.from,r.to)&&e.transactions.some(n=>!n.isUserEvent("input.type")&&n.changes.touchesRange(this.from,this.to)))?(this.composing.drifted=!0,this.composing.editorBase=e.changes.mapPos(this.composing.editorBase)):!this.applyEdits(e)||!this.rangeIsValid(e.state)?(this.pendingContextChange=null,this.reset(e.state)):(e.docChanged||e.selectionSet||t)&&this.setSelection(e.state),(e.geometryChanged||e.docChanged||e.selectionSet)&&e.view.requestMeasure(this.measureReq)}resetRange(e){let{head:t}=e.selection.main;this.from=Math.max(0,t-1e4),this.to=Math.min(e.doc.length,t+1e4)}reset(e){this.resetRange(e),this.editContext.updateText(0,this.editContext.text.length,e.doc.sliceString(this.from,this.to)),this.setSelection(e)}revertPending(e){let t=this.pendingContextChange;this.pendingContextChange=null,this.editContext.updateText(this.toContextPos(t.from),this.toContextPos(t.from+t.insert.length),e.doc.sliceString(t.from,t.to))}setSelection(e){let{main:t}=e.selection,r=this.toContextPos(Math.max(this.from,Math.min(this.to,t.anchor))),n=this.toContextPos(t.head);(this.editContext.selectionStart!=r||this.editContext.selectionEnd!=n)&&this.editContext.updateSelection(r,n)}rangeIsValid(e){let{head:t}=e.selection.main;return!(this.from>0&&t-this.from<500||this.to<e.doc.length&&this.to-t<500||this.to-this.from>1e4*3)}toEditorPos(e,t=this.to-this.from){e=Math.min(e,t);let r=this.composing;return r&&r.drifted?r.editorBase+(e-r.contextBase):e+this.from}toContextPos(e){let t=this.composing;return t&&t.drifted?t.contextBase+(e-t.editorBase):e-this.from}destroy(){for(let e in this.handlers)this.editContext.removeEventListener(e,this.handlers[e])}},ae=class i{get state(){return this.viewState.state}get viewport(){return this.viewState.viewport}get visibleRanges(){return this.viewState.visibleRanges}get inView(){return this.viewState.inView}get composing(){return!!this.inputState&&this.inputState.composing>0}get compositionStarted(){return!!this.inputState&&this.inputState.composing>=0}get root(){return this._root}get win(){return this.dom.ownerDocument.defaultView||window}constructor(e={}){var t;this.plugins=[],this.pluginMap=new Map,this.editorAttrs={},this.contentAttrs={},this.bidiCache=[],this.destroyed=!1,this.updateState=2,this.measureScheduled=-1,this.measureRequests=[],this.contentDOM=document.createElement("div"),this.scrollDO Line truncated
-\x7F-\x9F\xAD\u061C\u200B\u200E\u200F\u2028\u2029\u202D\u202E\u2066\u2067\u2069\uFEFF\uFFF9-\uFFFC]`,Ld),BT={0:"null",7:"bell",8:"backspace",10:"newline",11:"vertical tab",13:"carriage return",27:"escape",8203:"zero width space",8204:"zero width non-joiner",8205:"zero width joiner",8206:"left-to-right mark",8207:"right-to-left mark",8232:"line separator",8237:"left-to-right override",8238:"right-to-left override",8294:"left-to-right isolate",8295:"right-to-left isolate",8297:"pop directional isolate",8233:"paragraph separator",65279:"zero width no-break space",65532:"object replacement"},BO=null;function GT(){var i;if(BO==null&&typeof document!="undefined"&&document.body){let e=document.body.style;BO=((i=e.tabSize)!==null&&i!==void 0?i:e.MozTabSize)!=null}return BO||!1}var dh=be.define({combine(i){let e=rr(i,{render:null,specialChars:FT,addSpecialChars:null});return(e.replaceTabs=!GT())&&(e.specialChars=new RegExp(" |"+e.specialChars.source,Ld)),e.addSpecialChars&&(e.specialChars=new RegExp(e.specialChars.source+"|"+e.addSpecialChars.source,Ld)),e}});function mS(i={}){return[dh.of(i),HT()]}var lx=null;function HT(){return lx||(lx=Xt.fromClass(class{constructor(i){this.view=i,this.decorations=de.none,this.decorationCache=Object.create(null),this.decorator=this.makeDecorator(i.state.facet(dh)),this.decorations=this.decorator.createDeco(i)}makeDecorator(i){return new gl({regexp:i.specialChars,decoration:(e,t,r)=>{let{doc:n}=t.state,s=qr(e[0],0);if(s==9){let o=n.lineAt(r),a=t.state.tabSize,l=ji(o.text,a,r-o.from);return de.replace({widget:new Yd((a-l%a)*this.view.defaultCharacterWidth/this.view.scaleX)})}return this.decorationCache[s]||(this.decorationCache[s]=de.replace({widget:new jd(i,s)}))},boundary:i.replaceTabs?void 0:/[^]/})}update(i){let e=i.state.facet(dh);i.startState.facet(dh)!=e?(this.decorator=this.makeDecorator(e),this.decorations=this.decorator.createDeco(i.view)):this.decorations=this.decorator.updateDeco(i,this.decorations)}},{decorations:i=>i.decorations}))}var KT="\u2022";function JT(i){return i>=32?KT:i==10?"\u2424":String.fromCharCode(9216+i)}var jd=class extends Nt{constructor(e,t){super(),this.options=e,this.code=t}eq(e){return e.code==this.code}toDOM(e){let t=JT(this.code),r=e.state.phrase("Control character")+" "+(BT[this.code]||"0x"+this.code.toString(16)),n=this.options.render&&this.options.render(this.code,r,t);if(n)return n;let s=document.createElement("span");return s.textContent=t,s.title=r,s.setAttribute("aria-label",r),s.className="cm-specialChar",s}ignoreEvent(){return!1}},Yd=class extends Nt{constructor(e){super(),this.width=e}eq(e){return e.width==this.width}toDOM(){let e=document.createElement("span");return e.textContent=" ",e.className="cm-tab",e.style.width=this.width+"px",e}ignoreEvent(){return!1}};function Mh(){return tX}var eX=de.line({class:"cm-activeLine"}),tX=Xt.fromClass(class{constructor(i){this.decorations=this.getDeco(i)}update(i){(i.docChanged||i.selectionSet)&&(this.decorations=this.getDeco(i.view))}getDeco(i){let e=-1,t=[];for(let r of i.state.selection.ranges){let n=i.lineBlockAt(r.head);n.from>e&&(t.push(eX.range(n.from)),e=n.from)}return de.set(t)}},{decorations:i=>i.decorations});var Wd=2e3;function iX(i,e,t){let r=Math.min(e.line,t.line),n=Math.max(e.line,t.line),s=[];if(e.off>Wd||t.off>Wd||e.col<0||t.col<0){let o=Math.min(e.off,t.off),a=Math.max(e.off,t.off);for(let l=r;l<=n;l++){let c=i.doc.line(l);c.length<=a&&s.push(K.range(c.from+o,c.to+a))}}else{let o=Math.min(e.col,t.col),a=Math.max(e.col,t.col);for(let l=r;l<=n;l++){let c=i.doc.line(l),u=eh(c.text,o,i.tabSize,!0);if(u<0)s.push(K.cursor(c.to));else{let O=eh(c.text,a,i.tabSize);s.push(K.range(c.from+u,c.from+O))}}}return s}function rX(i,e){let t=i.coordsAtPos(i.viewport.from);return t?Math.round(Math.abs((t.left-e)/i.defaultCharacterWidth)):-1}function cx(i,e){let t=i.posAtCoords({x:e.clientX,y:e.clientY},!1),r=i.state.doc.lineAt(t),n=t-r.from,s=n>Wd?-1:n==r.length?rX(i,e.clientX):ji(r.text,i.state.tabSize,t-r.from);return{line:r.number,col:s,off:n}}function nX(i,e){let t=cx(i,e),r=i.state.selection;return t?{update(n){if(n.docChanged){let s=n.changes.mapPos(n.startState.doc.line(t.line).from),o=n.state.doc.lineAt(s);t={line:o.number,col:t.col,off:Math.min(t.off,o.length)},r=r.map(n.changes)}},get(n,s,o){let a=cx(i,n);if(!a)return r;let l=iX(i.state,t,a);return l.length?o?K.create(l.concat(r.ranges)):K.create(l):r}}:null}function Lh(i){let e=(i==null?void 0:i.eventFilter)||(t=>t.altKey&&t.button==0);return ae.mouseSelectionStyle.of((t,r)=>e(r)?nX(t,r):null)}var sX={Alt:[18,i=>!!i.altKey],Control:[17,i=>!!i.ctrlKey],Shift:[16,i=>!!i.shiftKey],Meta:[91,i=>!!i.metaKey]},oX={style:"cursor: crosshair"};function jh(i={}){let[e,t]=sX[i.key||"Alt"],r=Xt.fromClass(class{constructor(n){this.view=n,this.isDown=!1}set(n){this.isDown!=n&&(this.isDown=n,this.view.update([]))}},{eventObservers:{keydown(n){this.set(n.keyCode==e||t(n))},keyup(n){(n.keyCode==e||!t(n))&&this.set(!1)},mousemove(n){this.set(t(n))}}} Line truncated
`&&(t="");else{let r=t.indexOf(`
`);r>-1&&(t=t.slice(0,r))}return e+t.length<=this.to?t:t.slice(0,this.to-e)}nextLine(){let e=this.parsedPos,t=this.lineAfter(e),r=e+t.length;for(let n=this.rangeIndex;;){let s=this.ranges[n].to;if(s>=r||(t=t.slice(0,s-(r-t.length)),n++,n==this.ranges.length))break;let o=this.ranges[n].from,a=this.lineAfter(o);t+=a,r=o+a.length}return{line:t,end:r}}skipGapsTo(e,t,r){for(;;){let n=this.ranges[this.rangeIndex].to,s=e+t;if(r>0?n>s:n>=s)break;let o=this.ranges[++this.rangeIndex].from;t+=o-n}return t}moveRangeIndex(){for(;this.ranges[this.rangeIndex].to<this.parsedPos;)this.rangeIndex++}emitToken(e,t,r,n){let s=4;if(this.ranges.length>1){n=this.skipGapsTo(t,n,1),t+=n;let a=this.chunk.length;n=this.skipGapsTo(r,n,-1),r+=n,s+=this.chunk.length-a}let o=this.chunk.length-4;return this.lang.streamParser.mergeTokens&&s==4&&o>=0&&this.chunk[o]==e&&this.chunk[o+2]==t?this.chunk[o+2]=r:this.chunk.push(e,t,r,s),n}parseLine(e){let{line:t,end:r}=this.nextLine(),n=0,{streamParser:s}=this.lang,o=new Jh(t,e?e.state.tabSize:4,e?Qs(e.state):2);if(o.eol())s.blankLine(this.state,o.indentUnit);else for(;!o.eol();){let a=uv(s.token,o,this.state);if(a&&(n=this.emitToken(this.lang.tokenTable.resolve(a),this.parsedPos+o.start,this.parsedPos+o.pos,n)),o.start>1e4)break}this.parsedPos=r,this.moveRangeIndex(),this.parsedPos<this.to&&this.parsedPos++}finishChunk(){let e=Ge.build({buffer:this.chunk,start:this.chunkStart,length:this.parsedPos-this.chunkStart,nodeSet:d_,topID:0,maxBufferLength:512,reused:this.chunkReused});e=new Ge(e.type,e.children,e.positions,e.length,[[this.lang.stateAfter,this.lang.streamParser.copyState(this.state)]]),this.chunks.push(e),this.chunkPos.push(this.chunkStart-this.ranges[0].from),this.chunk=[],this.chunkReused=void 0,this.chunkStart=this.parsedPos}finish(){return new Ge(this.lang.topNode,this.chunks,this.chunkPos,this.parsedPos-this.ranges[0].from).balance()}};function uv(i,e,t){e.start=e.pos;for(let r=0;r<10;r++){let n=i(e,t);if(e.pos>e.start)return n}throw new Error("Stream parser failed to advance stream.")}var Lp=Object.create(null),Pl=[Ut.none],d_=new Dn(Pl),BS=[],GS=Object.create(null),fv=Object.create(null);for(let[i,e]of[["variable","variableName"],["variable-2","variableName.special"],["string-2","string.special"],["def","variableName.definition"],["tag","tagName"],["attribute","attributeName"],["type","typeName"],["builtin","variableName.standard"],["qualifier","modifier"],["error","invalid"],["header","heading"],["property","propertyName"]])fv[i]=Ov(Lp,e);var eu=class{constructor(e){this.extra=e,this.table=Object.assign(Object.create(null),fv)}resolve(e){return e?this.table[e]||(this.table[e]=Ov(this.extra,e)):0}},p_=new eu(Lp);function wp(i,e){BS.indexOf(i)>-1||(BS.push(i),console.warn(e))}function Ov(i,e){let t=[];for(let a of e.split(" ")){let l=[];for(let c of a.split(".")){let u=i[c]||y[c];u?typeof u=="function"?l.length?l=l.map(u):wp(c,`Modifier ${c} used at start of tag`):l.length?wp(c,`Tag ${c} used as modifier`):l=Array.isArray(u)?u:[u]:wp(c,`Unknown highlighting tag ${c}`)}for(let c of l)t.push(c)}if(!t.length)return 0;let r=e.replace(/ /g,"_"),n=r+" "+t.map(a=>a.id),s=GS[n];if(s)return s.id;let o=GS[n]=Ut.define({id:Pl.length,name:r,props:[bi({[r]:t})]});return Pl.push(o),o.id}function m_(i,e){let t=Ut.define({id:Pl.length,name:"Document",props:[Nn.add(()=>i),_r.add(()=>r=>e.getIndent(r))],top:!0});return Pl.push(t),t}var qM={rtl:de.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"rtl"},bidiIsolate:St.RTL}),ltr:de.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"ltr"},bidiIsolate:St.LTR}),auto:de.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"auto"},bidiIsolate:null})};var ou=class{constructor(e,t,r,n){this.state=e,this.pos=t,this.explicit=r,this.view=n,this.abortListeners=[],this.abortOnDocChange=!1}tokenBefore(e){let t=ct(this.state).resolveInner(this.pos,-1);for(;t&&e.indexOf(t.name)<0;)t=t.parent;return t?{from:t.from,to:this.pos,text:this.state.sliceDoc(t.from,this.pos),type:t.type}:null}matchBefore(e){let t=this.state.doc.lineAt(this.pos),r=Math.max(t.from,this.pos-250),n=t.text.slice(r-t.from,this.pos-t.from),s=n.search(b_(e,!1));return s<0?null:{from:r+s,to:this.pos,text:n.slice(s)}}get aborted(){return this.abortListeners==null}addEventListener(e,t,r){e=="abort"&&this.abortListeners&&(this.abortListeners.push(t),r&&r.onDocChange&&(this.abortOnDocChange=!0))}};function dv(i){let e=Object.keys(i).join(""),t=/\w/.test(e);return t&&(e=e.replace(/\w/g,"")),`[${t?"\\w":""}${e.replace(/[^\w\s]/g,"\\$&")}]`}function g_(i){let e=Object.create(null),t=Object.create(null);for(let{label:n}of i){e[n[0]]=!0;for(let s=1;s<n.length;s++)t[n[s]]=!0}let r=dv(e)+dv(t)+"*$";return[new RegExp("^"+r),new RegExp(r)]}function bv(i){let e=i.map(n=>typeof n=="string"?{label:n}:n),[t,r]=e.every(n=>/^\w+$/.test(n.label))?[/\w*$/,/\w+$/]:g_(e);return n=>{let s=n.matchBefore(r);return s||n.explicit?{from:s?s.from:n.pos,options:e,validFor:t}:null}}function xv(i,e){return t=>{for(let r=ct(t.state).reso Line truncated
`;let o=i.state.facet(wn),a=o instanceof xi?"Lezer LRLanguage":o instanceof ti?"StreamLanguage":"Unknown",l=o instanceof xi?"AST ":o instanceof ti?"Token ":"Name ";return{pos:e,above:!0,arrow:!0,create(c){let u=document.createElement("div");u.style.overflow="visible",u.style.height="0",u.style.width="0";let O=document.createElement("div");return O.className="cm-debug-tooltip",O.textContent=`Parser: ${a}
${l}: ${r.name}
Tags : ${s}`,O.style.whiteSpace="pre-wrap",O.style.fontFamily="monospace",O.style.background="#333",O.style.color="white",O.style.padding="2px 8px",O.style.borderRadius="4px",O.style.fontSize="12px",O.style.border="1px solid #555",O.style.pointerEvents="none",O.style.position="absolute",O.style.bottom="0",O.style.width="max-content",u.appendChild(O),{dom:u}}}},{hoverTime:10,hideOnChange:!0});var L_=i=>{let{state:e}=i,t=e.doc.lineAt(e.selection.main.from),r=Hp(i.state,t.from);return r.line?j_(i):r.block?W_(i):!1};function Gp(i,e){return({state:t,dispatch:r})=>{if(t.readOnly)return!1;let n=i(e,t);return n?(r(t.update(n)),!0):!1}}var j_=Gp(q_,0);var Y_=Gp(Uv,0);var W_=Gp((i,e)=>Uv(i,e,D_(e)),0);function Hp(i,e){let t=i.languageDataAt("commentTokens",e,1);return t.length?t[0]:{}}var _l=50;function V_(i,{open:e,close:t},r,n){let s=i.sliceDoc(r-_l,r),o=i.sliceDoc(n,n+_l),a=/\s*$/.exec(s)[0].length,l=/^\s*/.exec(o)[0].length,c=s.length-a;if(s.slice(c-e.length,c)==e&&o.slice(l,l+t.length)==t)return{open:{pos:r-a,margin:a&&1},close:{pos:n+l,margin:l&&1}};let u,O;n-r<=2*_l?u=O=i.sliceDoc(r,n):(u=i.sliceDoc(r,r+_l),O=i.sliceDoc(n-_l,n));let d=/^\s*/.exec(u)[0].length,g=/\s*$/.exec(O)[0].length,x=O.length-g-t.length;return u.slice(d,d+e.length)==e&&O.slice(x,x+t.length)==t?{open:{pos:r+d+e.length,margin:/\s/.test(u.charAt(d+e.length))?1:0},close:{pos:n-g-t.length,margin:/\s/.test(O.charAt(x-1))?1:0}}:null}function D_(i){let e=[];for(let t of i.selection.ranges){let r=i.doc.lineAt(t.from),n=t.to<=r.to?r:i.doc.lineAt(t.to);n.from>r.from&&n.from==t.to&&(n=t.to==r.to+1?r:i.doc.lineAt(t.to-1));let s=e.length-1;s>=0&&e[s].to>r.from?e[s].to=n.to:e.push({from:r.from+/^\s*/.exec(r.text)[0].length,to:n.to})}return e}function Uv(i,e,t=e.selection.ranges){let r=t.map(s=>Hp(e,s.from).block);if(!r.every(s=>s))return null;let n=t.map((s,o)=>V_(e,r[o],s.from,s.to));if(i!=2&&!n.every(s=>s))return{changes:e.changes(t.map((s,o)=>n[o]?[]:[{from:s.from,insert:r[o].open+" "},{from:s.to,insert:" "+r[o].close}]))};if(i!=1&&n.some(s=>s)){let s=[];for(let o=0,a;o<n.length;o++)if(a=n[o]){let l=r[o],{open:c,close:u}=a;s.push({from:c.pos-l.open.length,to:c.pos+c.margin},{from:u.pos-u.margin,to:u.pos+l.close.length})}return{changes:s}}return null}function q_(i,e,t=e.selection.ranges){let r=[],n=-1;e:for(let{from:s,to:o}of t){let a=r.length,l=1e9,c;for(let u=s;u<=o;){let O=e.doc.lineAt(u);if(c==null&&(c=Hp(e,O.from).line,!c))continue e;if(O.from>n&&(s==o||o>O.from)){n=O.from;let d=/^\s*/.exec(O.text)[0].length,g=d==O.length,x=O.text.slice(d,d+c.length)==c?d:-1;d<O.text.length&&d<l&&(l=d),r.push({line:O,comment:x,token:c,indent:d,empty:g,single:!1})}u=O.to+1}if(l<1e9)for(let u=a;u<r.length;u++)r[u].indent<r[u].line.text.length&&(r[u].indent=l);r.length==a+1&&(r[a].single=!0)}if(i!=2&&r.some(s=>s.comment<0&&(!s.empty||s.single))){let s=[];for(let{line:a,token:l,indent:c,empty:u,single:O}of r)(O||!u)&&s.push({from:a.from+c,insert:l+" "});let o=e.changes(s);return{changes:o,selection:e.selection.map(o,1)}}else if(i!=1&&r.some(s=>s.comment>=0)){let s=[];for(let{line:o,comment:a,token:l}of r)if(a>=0){let c=o.from+a,u=c+l.length;o.text[u-o.from]==" "&&u++,s.push({from:c,to:u})}return{changes:s}}return null}var Np=Bi.define(),hu=Bi.define(),I_=be.define(),zv=be.define({combine(i){return rr(i,{minDepth:100,newGroupDelay:500,joinToEvent:(e,t)=>t},{minDepth:Math.max,newGroupDelay:Math.min,joinToEvent:(e,t)=>(r,n)=>e(r,n)||t(r,n)})}}),Mv=at.define({create(){return bo.empty},update(i,e){let t=e.state.facet(zv),r=e.annotation(Np);if(r){let l=Gr.fromTransaction(e,r.selection),c=r.side,u=c==0?i.undone:i.done;return l?u=cu(u,u.length,t.minDepth,l):u=Yv(u,e.startState.selection),new bo(c==0?r.rest:u,c==0?u:r.rest)}let n=e.annotation(hu);if((n=="full"||n=="before")&&(i=i.isolate()),e.annotation(Et.addToHistory)===!1)return e.changes.empty?i:i.addMapping(e.changes.desc);let s=Gr.fromTransaction(e),o=e.annotation(Et.time),a=e.annotation(Et.userEvent);return s?i=i.addChanges(s,o,a,t,e):e.selection&&(i=i.addSelection(e.startState.selection,o,a,t.newGroupDelay)),(n=="full"||n=="after")&&(i=i.isolate()),i},toJSON(i){return{done:i.done.map(e=>e.toJSON()),undone:i.undone.map(e=>e.toJSON())}},fromJSON(i){return new bo(i.done.map(Gr.fromJSON),i.undone.map(Gr.fromJSON))}});function Lv(i={}){return[Mv,zv.of(i),ae.domEventHandlers({beforeinput(e,t){let r=e.inputType=="historyUndo"?fu:e.inputType=="historyRedo"?Rl:null;return r?(e.preventDefault(),r(t)):!1}})]}function uu(i,e){return function({state:t,dispatch:r}){if(!e&&t.readOnly)return!1;let n=t.field(Mv,!1);if(!n)return!1;let s=n.pop(i,t,e);return s?(r(s),!0):!1}}var fu=uu(0,!1),Rl=uu(1,!1),N_=uu(0,!0),F_=uu(1,!0);var Gr=class i{constructor(e,t,r,n,s){this.changes=e,this.effects=t,this.mapped=r,this.startSelection=n,this.selectionsAfter=s}setSelAfter(e){return new i(this.changes,this.effects,this.mapped,this.startSelection,e)}toJSON(){var e,t,r;return{changes:(e=this.changes)===null||e===void 0?void 0:e.toJSON(),mapped:(t=thi Line truncated
<h5>Editor preferences</h5>
<div class="form-group"><label>Tab size: <input type="number" id="setting_tabSize" min="1" max="40" value="${i.tabSize}" style="width:4em"></label></div>
<div class="checkbox"><label><input type="checkbox" id="setting_tabsToSpaces" ${i.tabsToSpaces?"checked":""}> Insert spaces when pressing TAB</label></div>
<div class="checkbox"><label><input type="checkbox" id="setting_highlightSpecialChars" ${i.highlightSpecialChars?"checked":""}> Highlight special characters</label></div>
<div class="checkbox"><label><input type="checkbox" id="setting_highlightWhitespace" ${i.highlightWhitespace?"checked":""}> Highlight whitespace</label></div>
<div class="checkbox"><label><input type="checkbox" id="setting_highlightTrailingWhitespace" ${i.highlightTrailingWhitespace?"checked":""}> Highlight unwanted trailing whitespace</label></div>
<div class="checkbox"><label><input type="checkbox" id="setting_showLineNumbers" ${i.showLineNumbers?"checked":""}> Show line numbers</label></div>
<div class="checkbox"><label><input type="checkbox" id="setting_closeBrackets" ${i.closeBrackets?"checked":""}> Automatically add and remove closing brackets</label></div>
${e?`
<hr>
<h5>8bitworkshop IDE internal settings</h5>
<div class="checkbox"><label><input type="checkbox" id="setting_debugHighlightTags" ${i.debugHighlightTags?"checked":""}> Debug editor syntax highlighting tags</label></div>
`:""}
</form>`,buttons:{cancel:{label:"Cancel",className:"btn-default"},ok:{label:"Save",className:"btn-primary",callback:()=>{i.tabSize=parseInt($("#setting_tabSize").val())||8,i.tabsToSpaces=$("#setting_tabsToSpaces").is(":checked"),i.highlightSpecialChars=$("#setting_highlightSpecialChars").is(":checked"),i.highlightWhitespace=$("#setting_highlightWhitespace").is(":checked"),i.highlightTrailingWhitespace=$("#setting_highlightTrailingWhitespace").is(":checked"),i.closeBrackets=$("#setting_closeBrackets").is(":checked"),i.showLineNumbers=$("#setting_showLineNumbers").is(":checked"),e&&(i.debugHighlightTags=$("#setting_debugHighlightTags").is(":checked")),hC(i),uC(i)}}}})}function Su(){return typeof navigator!="undefined"?navigator.storage:null}function fC(i){var e=i!==void 0?i:Su();return!!(e&&typeof e.persist=="function")}async function OC(i){var e=i!==void 0?i:Su();try{if(e&&typeof e.estimate=="function"){var t=await e.estimate();return{usage:t&&t.usage,quota:t&&t.quota}}}catch(r){console.log("storage.estimate() failed",r)}return{}}async function dC(i){var e=i!==void 0?i:Su(),t={supported:fC(e),persisted:!1};try{e&&typeof e.persisted=="function"&&(t.persisted=await e.persisted())}catch(n){console.log("storage.persisted() failed",n)}var r=await OC(e);return t.usage=r.usage,t.quota=r.quota,t}async function tm(i){var e=i!==void 0?i:Su(),t=await dC(e);if(!t.supported||t.persisted)return t.granted=!1,t;try{t.persisted=await e.persist(),t.granted=t.persisted}catch(r){console.log("storage.persist() failed",r),t.granted=!1}return t}function pC(i){return i==null&&(i=typeof navigator!="undefined"?navigator.userAgent:""),i?/Edg\/|OPR\/|Chrome\/|Chromium\//.test(i)?"chromium":/Firefox\/|FxiOS\//.test(i)?"firefox":/Safari\//.test(i)?"safari":"other":"other"}function Xy(i){if(typeof i!="number"||!isFinite(i))return"?";for(var e=["bytes","KB","MB","GB","TB"],t=0;i>=1024&&t<e.length-1;)i/=1024,t++;return(t==0?i.toFixed(0):i.toFixed(1))+" "+e[t]}function _y(i){return i.usage==null&&i.quota==null?"":"This site is using "+Xy(i.usage)+" of the "+Xy(i.quota)+" your browser allows."}var em="Your edits are still saved in this browser either way &mdash; persistence only protects them if the browser needs to reclaim disk space. Use <b>File &gt; Download All Changes as ZIP</b> (or push to GitHub) to keep a backup.";function Ry(i){switch(i||pC()){case"chromium":return"Chrome and Edge never ask &mdash; they grant persistent storage on their own to sites you use regularly. Bookmarking this page, or installing it as an app, usually qualifies it; then try <b>Request Local Storage Permissions</b> again.";case"firefox":return"Firefox asks for permission the first time. If you dismissed or blocked that prompt, clear it from the padlock icon in the address bar and try <b>Request Local Storage Permissions</b> again.";case"safari":return"Safari decides on its own, and may delete site data after several days without a visit. Adding this page to your Favorites or Home Screen makes eviction less likely.";default:return"This browser decides on its own whether to keep site data."}}function mC(){return"This browser doesn't support persistent storage, so it may discard your local file edits when it needs disk space. "+em}function Cy(i,e){var t=_y(i),r;return i.supported?i.persisted?r=(i.granted?"Your browser just granted persistent storage. ":"Your browser is already persisting your local file edits. ")+em:r="Your browser has not granted persistent storage, so it may discard your local file edits when it needs disk space.<br><br>"+Ry()+"<br><br>"+em:r=mC(),t?r+"<br><br>"+t:r}function Zy(i){return"Your browser ran out of space for this site, so your last edit may not have been saved.<br><br>"+_y(i)+" Delete unused projects, or use <b>File &gt; Download All Changes as ZIP</b> to back up your work before it is lost."+(i.supported&&!i.persisted?"<br><br>"+Ry():"")}var Uy=uO(SO());var El=class{constructor(e,t){e=e||[],this.lines=e,this.text=t,this.offset2loc=new Map,this.line2offset=new Map;for(var r of e)r.offset>=0&&(this.offset2loc[r.offset]||(this.offset2loc[r.offset]=r),this.line2offset[r.line]||(this.line2offset[r.line]=r.offset))}findLineForOffset(e,t){if(this.offset2loc)for(var r=0;r<=t;r++){var n=this.offset2loc[e];if(n)return n;e--}return null}lineCount(){return this.lines.length}};function Ey(i){return"errors"in i}function Ay(i){return"output"in i}var vu=class{constructor(e){this.preset_id=Mi(e)}async getRemoteFile(e){return new Promise((t,r)=>Ia(e,t,Js(e)?"arraybuffer":"text"))}async getFileData(e){var t="presets/"+this.preset_id+"/"+e,r=await this.getRemoteFile(t);return r&&console.log("read",t,r.length,"bytes"),r}async setFileData(e,t){}onFileSystemUpdate(e){}};var xa=class{constructor(e,t){this.basefs=e,this.overlayfs=t}async getFileData(e){var t=await this.overlayfs.getFileData(e);return t==null?this.basefs.getFileData(e):t}async setFileData(e,t){return await this.overlayfs.setFileData(e,t),this.basefs.setFileData(e,t)}onFileSystemUpdaLine truncated
=====
[Open this project in 8bitworkshop](http://8bitworkshop.com/redir.html?platform=$PLATFORM&githubURL=$GITHUBURL&file=$MAINFILE).
`;function xo(){for(var i={},e=0;e<localStorage.length;e++){var t=localStorage.key(e);if(t.startsWith("__repo__")){var r=JSON.parse(localStorage.getItem(t)),n=t.substring(8);i[n]=r}}return i}function Al(i){var e=i.split("/",8);return e.length<5||e[0]!="https:"||e[2]!="github.com"||e[5]&&e[5]!="tree"?null:{user:e[3],repo:e[4],repopath:e[3]+"/"+e[4],branch:e[6],subtreepath:e[7]}}var $u=class{constructor(e,t,r,n){this.githubCons=e,this.githubToken=t,this.store=r,this.project=n,this.recreateGithub()}recreateGithub(){this.github=new this.githubCons({token:this.githubToken})}login(){if(this.githubToken&&this.githubToken.length)return new Promise((t,r)=>{t()});var e=new firebase.auth.GithubAuthProvider;return e.addScope("repo"),firebase.auth().signInWithPopup(e).then(t=>{this.githubToken=t.credential.accessToken;var r=t.user;this.recreateGithub(),document.cookie="__github_key="+this.githubToken+";path=/;max-age=31536000",console.log("Stored GitHub OAUTH key")})}logout(){return this.githubToken&&this.githubToken.length?firebase.auth().signOut().then(()=>{document.cookie="__github_key=;path=/;max-age=0",this.githubToken=null,this.recreateGithub()}):new Promise((e,t)=>{e()})}isFileIgnored(e){return e=e.toUpperCase(),!!(e.startsWith("LICENSE")||e.startsWith("README")||e.startsWith("."))}async getGithubSession(e){var t=Al(e);if(!t)throw new Error("Please enter a valid GitHub URL.");var r=xo()[t.repopath],n=t.branch||r&&r.branch,s=this.github.repos(t.user,t.repo);try{n=(await s.fetch()).defaultBranch||"master"}catch(a){console.log("could not fetch default branch: "+a),n="main"}console.log("branch =",n);var o={url:e,user:t.user,reponame:t.repo,repopath:t.repopath,branch:n,subtreepath:t.subtreepath,prefix:"",repo:s,platform_id:this.project?this.project.platform_id:r?r.platform_id:null};return o}getGithubHEADTree(e){var t;return this.getGithubSession(e).then(r=>(t=r,t.repo.git.refs.heads(t.branch).fetch())).then(r=>(t.head=r,t.sha=r.object.sha,t.repo.git.trees(t.sha).fetch())).then(r=>{if(t.subtreepath){for(let n of r.tree)if(n.type=="tree"&&n.path==t.subtreepath&&n.sha)return t.repo.git.trees(n.sha).fetch();throw Error("Cannot find subtree '"+t.subtreepath+"' in tree "+r.sha)}return r}).then(r=>(t.tree=r,t))}bind(e,t){var r="__repo__"+e.repopath;if(t){var n={url:e.url,branch:e.branch,platform_id:e.platform_id,mainPath:e.mainPath,sha:e.sha};console.log("storing",n),localStorage.setItem(r,JSON.stringify(n))}else localStorage.removeItem(r)}import(e){var t;return this.getGithubSession(e).then(r=>(t=r,t.repo.contents("README.md").read())).catch(r=>(console.log(r),console.log("no README.md found"),t.repo.fetch().then(n=>""))).then(r=>{var n;if(n=/8bitworkshop.com[^)]+file=([^)&]+)/.exec(r),n&&n[1]&&(console.log("main path: '"+n[1]+"'"),t.mainPath=n[1]),n=/8bitworkshop.com[^)]+platform=([A-Za-z0-9._\-]+)/.exec(r),n){if(console.log("platform id: '"+n[1]+"'"),t.platform_id&&!t.platform_id.startsWith(n[1]))throw Error("Platform mismatch: Repository is '"+n[1]+"', you have '"+t.platform_id+"' selected.");t.platform_id=n[1]}return this.bind(t,!0),t})}pull(e,t){var r;return this.getGithubHEADTree(e).then(n=>{r=n;let s=[];return r.paths=[],r.tree.tree.forEach(o=>{if(console.log(o.path,o.type,o.size),r.paths.push(o.path),o.type=="blob"&&!this.isFileIgnored(o.path)){var a=r.repo.git.blobs(o.sha).fetch().then(l=>{var c=r.prefix+o.path,u=o.size,O=l.encoding,d=l.content;if(l.encoding=="base64"){var g=_c(atob(d)),x=Js(o.path,g);d=x?g:Cc(g)}return l.size!=d.length&&(d=d.slice(0,l.size)),(t||this.store).setItem(c,d)});s.push(a)}else console.log("ignoring "+o.path)}),Promise.all(s)}).then(n=>r)}importAndPull(e){return this.import(e).then(t=>this.pull(e))}publish(e,t,r,n){var s,o=this.project.platform_id,a=this.project.stripLocalPath(this.project.mainPath);return this.github.user.repos.create({name:e,description:t,private:n,auto_init:!1,license_template:r}).then(l=>{s=l;var c=gC;c=c.replace(/\$NAME/g,encodeURIComponent(e)),c=c.replace(/\$PLATFORM/g,encodeURIComponent(o)),c=c.replace(/\$GITHUBURL/g,encodeURIComponent(s.htmlUrl)),c=c.replace(/\$MAINFILE/g,encodeURIComponent(a));var u={message:"8bitworkshop: updated metadata in README.md",content:btoa(c)};return s.contents("README.md").add(u)}).then(()=>this.getGithubSession(s.htmlUrl))}commit(e,t,r){var n;return t||(t="updated from 8bitworkshop.com"),this.getGithubHEADTree(e).then(s=>{if(n=s,n.subtreepath)throw Error("Sorry, right now you can only commit files to the root directory of a repository.");return Promise.all(r.map(o=>typeof o.data=="string"?n.repo.git.blobs.create({content:o.data,encoding:"utf-8"}):n.repo.git.blobs.create({content:btoa(Rc(o.data)),encoding:"base64"})))}).then(s=>n.repo.git.trees.create({tree:r.map((o,a)=>({path:o.path,mode:"100644",type:"blob",sha:s[a].sha})),base_tree:n.tree.sha})).then(s=>n.repo.git.commits.create({message:t,tree:s.sha,parents:[n.head.object.sha]})).then(s=>n.repo.commits(s.sha).fetch()).then(s=>(n.commit=s,n))}push(e){return e.head.update({sha:e.com Line truncated
`},s=window.c2t({noInitialRun:!0,print:n,printErr:n}),o=s.FS,a=oi()+".bin",l=oi()+".wav";o.writeFile(a,Di(),{encoding:"binary"});var c=["-2bc",a+","+e.toString(16),l];s.callMain(c);var u=o.readFile(l,{encoding:"binary"});if(u){var O=new Blob([u],{type:"audio/wav"});(0,$n.saveAs)(O,l),r+="Then connect your audio output to the cassette input, turn up the volume, and play the audio file.",$i(r)}})}function vC(i){yr("lib/makewav.js").then(()=>{let e="",t=function(a){e+=a+`
`};var r=Qi(oi());let n=r+".bin",s=r+".wav";window.makewav({noInitialRun:!1,print:t,printErr:t,arguments:["-ts","-f0","-v10",n],preRun:a=>{a.FS.writeFile(n,Di(),{encoding:"binary"})}}).ready.then(a=>{let l=[n];a.run(l),console.log(e);let u=a.FS.readFile(s,{encoding:"binary"});if(u){let O=new Blob([u],{type:"audio/wav"});(0,$n.saveAs)(O,s),e+=`
Connect your audio output to the SuperCharger input, turn up the volume, and play the audio file.`,$i(e)}})})}function yC(i){var e=Qi(oi());let t=e+".tap",r=new So(e),n=new Pu({sine_wave:!0}),s=Di(),o=s[0]+s[1]*256;s=s.slice(2),r.setContent({data:s,startAddress:o,type:So.FILE_TYPE_NON_RELOCATABLE}),r.generateSound(n);let a=n.getTAPData();if(a){let l=new Blob([a],{type:"application/octet-stream"});(0,$n.saveAs)(l,t)}}function rm(){switch(Mi(Ue)){case"vcs":return vC;case"apple2":return SC;case"c64":return yC}}function My(i){if(Di()==null)return Ke("Please fix errors before exporting."),!0;var e=rm();if(e===void 0)return Ke("Cassette export is not supported on this platform."),!0;e(i)}function Ly(i){if(Di()==null)return Ke("Please finish compiling with no errors before downloading ROM."),!0;var e=Qi(oi());if(U.getDownloadFile){var t=U.getDownloadFile(),e=Qi(oi());(0,$n.saveAs)(t.blob,e+t.extension)}else if(Di()instanceof Uint8Array){var r=new Blob([Di()],{type:"application/octet-stream"}),n=U.getROMExtension&&U.getROMExtension(Di())||"-"+Mi(Ue)+".bin";(0,$n.saveAs)(r,e+n)}else Ke(`The "${Ue}" platform doesn't have downloadable ROMs.`)}function jy(i){var e=Se.getCurrentText();if(!e)return!1;var t=new Blob([e],{type:"text/plain;charset=utf-8"});(0,$n.saveAs)(t,Iy(),{autoBom:!1})}async function Yy(){let i=(await import("./jszip.min-HOLYP7RC.js")).default;return new i}async function Wy(i){var e=await Yy();Fn().iterateFiles((t,r)=>{r&&e.file(pi(t),r)}),e.generateAsync({type:"blob"}).then(t=>{(0,$n.saveAs)(t,oi()+"-"+Mi(Ue)+".zip")})}function Vy(i){let e=U.getDebugSymbolFile&&U.getDebugSymbolFile();if(!e){Ke("This project does not have debug information.");return}var t=Qi(oi());(0,$n.saveAs)(e.blob,t+e.extension,{autoBom:!1})}async function Dy(i){var e=await Yy(),t=await ks().keys();kt(!0);try{var r=0;await Promise.all(t.map(s=>ks().getItem(s).then(o=>{Vr(r++/(t.length+1)),o&&e.file(s,o)})));var n=await e.generateAsync({type:"blob"});(0,$n.saveAs)(n,Mi(Ue)+"-all.zip")}finally{kt(!1)}}var im=!1;function qy(){im||yr("lib/gif.js").then(()=>{var i=$("#emulator").find("canvas")[0];if(!i){Ke("Could not find canvas element to record video!");return}var e=0;i.style&&i.style.transform&&(i.style.transform.indexOf("rotate(-90deg)")>=0?e=-1:i.style.transform.indexOf("rotate(90deg)")>=0&&(e=1));var t=new GIF({workerScript:"lib/gif.worker.js",workers:4,quality:10,rotate:e}),r=$("#videoPreviewImage");t.on("progress",l=>{Vr(l)}),t.on("finished",l=>{r.attr("src",URL.createObjectURL(l)),kt(!1),U.resume(),$("#videoPreviewModal").modal("show")});var n=20,s=300,o=0;console.log("Recording video",i),$("#emulator").css("backgroundColor","#cc3333");var a=()=>{o++>s?(console.log("Rendering video"),$("#emulator").css("backgroundColor","inherit"),kt(!0),U.pause(),t.render(),im=!1):(t.addFrame(i,{delay:n,copy:!0}),setTimeout(a,n),im=!0)};a()})}var nm;async function vo(){if(!nm){await yr("lib/octokat.js"),await yr("https://www.gstatic.com/firebasejs/8.8.1/firebase-app.js"),await yr("https://www.gstatic.com/firebasejs/8.8.1/firebase-auth.js"),await yr("https://8bitworkshop.com/config.js");var i=Ec("__github_key");nm=new $u(Octokat,i,ks(),Fn()),console.log("loaded github service")}return nm}function zl(){var i=(Ft||"").split("/");return i.length!=2?(Ke("You are not in a GitHub repository. Choose one from the pulldown, or Import or Publish one."),null):"https://github.com/"+i[0]+"/"+i[1]}async function Ml(i,e){var t,r=Al(i);if(!r){Ke("Could not parse GitHub URL.");return}var n=xo()[r.repopath];if(!(n&&!confirm("You've already imported "+r.repopath+" -- do you want to replace all local files?"))){kt(!0);var s=Qu(r.repopath);Vr(.25);var o=await vo();return o.import(i).then(a=>(t=a,Vr(.75),o.pull(i,s))).then(a=>{kt(!1),yo(e,{repo:r.repopath})}).catch(a=>{kt(!1),console.log(a),Ke("Could not import "+i+". "+a)})}}async function Ny(i){var e=await vo();e.login().then(()=>{$i("You are signed in to GitHub.")}).catch(t=>{Ke("Could not sign in."+t)})}async function Fy(i){var e=await vo();e.logout().then(()=>{$i("You are logged out of GitHub.")})}function By(i){var e=$("#importGithubModal"),t=$("#importGithubButton");e.modal("show"),e.off("shown.bs.modal").on("shown.bs.modal",()=>$("#importGithubURL").trigger("focus")),$("#importGithubURL").off("keydown").on("keydown",r=>{r.key==="Enter"&&(r.preventDefault(),t.trigger("click"))}),t.off("click").on("click",()=>{var r=$("#importGithubURL").val()+"";e.modal("hide"),Ml(r,!1)})}function Gy(i){if(!(Ft&&!confirm("This project ("+Fn().mainPath+") is already bound to a GitHub repository. Do you want to re-publish to a new repository? (You can instead choose 'Push Changes' to update files in the existing repository.)"))){var e=$("#publishGithubModal"),t=$("#publishGithubButton");$("#githubRepoName").val(Qi(pi(Fn().mainPath))),e.modal("show"),t.off("click").on("click",async()=>{var r=$("#githubRepoName").val()+"",n=$("#githubRepoDesc").val()+"",s=$("#githubRepoPrivate").val()=="private",o=$("#githubRepoLicense").val()+"Line truncated
`);for(let o=0;o<s.length;o++){let a=s[o],l=o+1,c=a.match(/(?:function|func|def|proc)\s+(\w+)/i);c&&n.push({id:`${e}:${l}:${c[1]}`,name:c[1],kind:"func",source:r,file:e,line:l});let u=a.match(/(?:var|let|const|global)\s+(\w+)/i);u&&n.push({id:`${e}:${l}:${u[1]}`,name:u[1],kind:"var",source:r,file:e,line:l});let O=a.match(/(?:struct|class|interface|type)\s+(\w+)/i);O&&n.push({id:`${e}:${l}:${O[1]}`,name:O[1],kind:"type",source:r,file:e,line:l});let d=a.match(/^\s*(\w+)\s*:/);d&&!a.trim().startsWith("//")&&n.push({id:`${e}:${l}:${d[1]}`,name:d[1],kind:"label",source:r,file:e,line:l});let g=a.match(/#define\s+(\w+)/i);g&&n.push({id:`${e}:${l}:${g[1]}`,name:g[1],kind:"macro",source:r,file:e,line:l});let x=a.match(/^\s*(\w+)\s*(?:=|equ)\s+/i);x&&n.push({id:`${e}:${l}:${x[1]}`,name:x[1],kind:"equate",source:r,file:e,line:l})}return n}var rw=()=>null;function nw(i){rw=i}function wo(){return rw()}var ku=class{constructor(){this.id="project";this.kind="project";this.rebuilt=!1;this.index=new Sa([])}async ready(){await this.index.init(),this.rebuilt||(this.rebuilt=!0,await this.rebuild())}query(e,t){let r=this.index.query(e,t),n=this.fulltextQuery(e,t),s=r.concat(n);return s.sort((o,a)=>a.score-o.score),s.slice(0,t)}fulltextQuery(e,t){if(e.length<2)return[];let r=e.toLowerCase(),n=[],s=Math.max(t,10),o=wo();return o?(o.iterateFiles((a,l)=>{if(typeof l!="string")return;let c=l.split(`
`),u=0;for(let O=0;O<c.length;O++){let d=c[O],x=d.toLowerCase().indexOf(r);if(x>=0){let Q=d.trim();if(!Q)continue;if(n.push({record:{id:`text:${a}:${O+1}`,name:Q.length>80?Q.slice(0,80)+"\u2026":Q,kind:"text",source:"project",file:a,line:O+1},score:200+Math.max(0,100-x*2),ranges:[x,x+e.length]}),++u>=s)break}}}),n):[]}async onFileChanged(e,t){let r=this.extractSymbolsFromFile(e,t,"project");this.index.pushRecords(r)}extractSymbolsFromFile(e,t,r){if(typeof t!="string")return[];let n=this.detectEditorStyle(e);return om(t,e,n,r)}detectEditorStyle(e){var r;switch((r=e.split(".").pop())==null?void 0:r.toLowerCase()){case"c":case"h":return"text/x-csrc";case"asm":case"a65":case"inc":return"6502";case"v":return"verilog";case"wiz":return"text/x-wiz";case"bas":case"basic":return"basic";case"fb":case"fastbasic":return"fastbasic";case"bac":case"bataribasic":return"bataribasic";case"i":return"inform6";case"d":return"dialog";default:return"text/x-csrc"}}async rebuild(){this.index.clear(),await this.index.init();let e=wo();if(!e)return;let t=[];e.iterateFiles((r,n)=>{if(typeof n!="string")return;let s=this.detectEditorStyle(r),o=om(n,r,s,"project");t.push(...o)}),this.index.pushRecords(t)}};var kC=new Set(["h","hh","hpp","inc","asm","a65","s","mac","defs","def","equ","i","m","c","bas","txt"]),TC=20,Tu=class{constructor(){this.id="toolchain";this.kind="toolchain";this.fsName=null;this.files=[];this.loaded=new Map;this.readyDone=!1;this.loadIdx=0;this.batchSize=TC}async ready(){if(this.readyDone)return;this.readyDone=!0;let e=wo();if(!e)return;let t;try{t=e.getToolForFilename?e.getToolForFilename(e.mainPath):""}catch(o){t=""}let r=Wc(t,e.platform_id),n=Yc(t,e.platform_id);if(!r||!n.length)return;this.fsName=r;let s=new Set;for(let o of n){let a=await this.listFiles(o);for(let l of a)this.isSearchable(l)&&!s.has(l)&&(s.add(l),this.files.push(l))}this.files.sort()}isValid(){return this.fsName!=null&&this.files.length>0}async listFiles(e){let t=wo();if(!t||!this.fsName||!t.queryWorker)return[];try{let r={preload_fs:this.fsName,listshared:e,updates:[],buildsteps:[]},n=await t.queryWorker(r),s=n&&n.output;return Array.isArray(s)?s:[]}catch(r){return console.debug("Toolchain list error:",r),[]}}async readFile(e){let t=wo();if(!t||!this.fsName||!t.queryWorker)return null;try{let r={preload_fs:this.fsName,readshared:e,updates:[],buildsteps:[]},n=await t.queryWorker(r),s=n&&n.output;return s instanceof Uint8Array&&s.length>0?new TextDecoder().decode(s):null}catch(r){return console.debug("Toolchain read error:",r),null}}isSearchable(e){let t=e.split("/").pop()||e,r=t.lastIndexOf(".");return r<0?!0:kC.has(t.substring(r+1).toLowerCase())}async ensureBatch(){let e=wo();if(!(!e||!e.queryWorker))for(;this.loadIdx<this.files.length;){let t=this.files.slice(this.loadIdx,this.loadIdx+this.batchSize);this.loadIdx+=t.length;let r=await Promise.all(t.map(async n=>{let s=await this.readFile(n);return[n,s]}));for(let[n,s]of r)s!=null&&this.loaded.set(n,s);if(this.loaded.size>0||this.loadIdx>=this.files.length)break}}async query(e,t){return await this.ready(),!this.isValid()||e.length<2?[]:(await this.ensureBatch(),this.textQuery(e,t))}textQuery(e,t){if(e.length<2)return[];let r=e.toLowerCase(),n=[],s=Math.max(t,5);for(let[o,a]of this.loaded){let l=a.split(`
`),c=0;for(let u=0;u<l.length;u++){let O=l[u],g=O.toLowerCase().indexOf(r);if(g>=0){let x=O.trim();if(!x)continue;if(n.push({record:{id:`toolchain:${o}:${u+1}`,name:x.length>80?x.slice(0,80)+"\u2026":x,kind:"text",source:"toolchain",file:o,line:u+1},score:200+Math.max(0,100-g*2),ranges:[g,g+e.length]}),++c>=s)break}}}return n.sort((o,a)=>a.score-o.score),n.slice(0,t)}invalidate(){this.fsName=null,this.files=[],this.loaded.clear(),this.readyDone=!1,this.loadIdx=0}};var Xu=class{constructor(){this.id="docs";this.kind="docs";this.index=null;this.readyPromise=null}async ready(){return this.readyPromise?this.readyPromise:(this.readyPromise=this.load(),this.readyPromise)}async load(){}query(e,t){return this.index?this.index.query(e,t):[]}};var _C=50,am=class i{constructor(){this.sources=new Map;this.projectSource=new ku,this.toolchainSource=new Tu,this.docsSource=new Xu,this.sources.set("project",this.projectSource),this.sources.set("toolchain",this.toolchainSource),this.sources.set("docs",this.docsSource)}static getInstance(){return i.instance||(i.instance=new i),i.instance}parseQuery(e){return e.startsWith("#")?{needle:e.slice(1).trim(),filter:"symbols"}:e.startsWith(">")?{needle:e.slice(1).trim(),filter:"files"}:e.startsWith("?")?{needle:e.slice(1).trim(),filter:"docs"}:{needle:e,filter:"all"}}async query(e,t=_C){let{needle:r,filter:n}=this.parseQuery(e);if(!r)return[];let s=[],o=[];n==="docs"?o.push(this.docsSource):n==="files"?o.push(this.projectSource):n==="symbols"?(o.push(this.projectSource),o.push(this.toolchainSource)):(o.push(this.projectSource),o.push(this.toolchainSource),o.push(this.docsSource));for(let u of o)try{await u.ready();let O=await u.query(r,t-s.length);s.push(...O)}catch(O){console.debug("Search source error:",O)}s.sort((u,O)=>O.score-u.score);let a={project:1.3,toolchain:1,docs:.7};for(let u of s){let O=a[u.record.source]||1;u.score*=O}s.sort((u,O)=>O.score-u.score);let l=new Set;return s.filter(u=>l.has(u.record.id)?!1:(l.add(u.record.id),!0)).slice(0,t)}},sw=am.getInstance();var hm=class i{constructor(e,t,r,n,s,o,a,l,c,u=0,O){this.p=e,this.stack=t,this.state=r,this.reducePos=n,this.pos=s,this.score=o,this.buffer=a,this.bufferBase=l,this.curContext=c,this.lookAhead=u,this.parent=O}toString(){return`[${this.stack.filter((e,t)=>t%3==0).concat(this.state)}]@${this.pos}${this.score?"!"+this.score:""}`}static start(e,t,r=0){let n=e.parser.context;return new i(e,[],t,r,r,0,[],0,n?new _u(n,n.start):null,0,null)}get context(){return this.curContext?this.curContext.context:null}pushState(e,t){this.stack.push(this.state,t,this.bufferBase+this.buffer.length),this.state=e}reduce(e){var t;let r=e>>19,n=e&65535,{parser:s}=this.p,o=this.reducePos<this.pos-25&&this.setLookAhead(this.pos),a=s.dynamicPrecedence(n);if(a&&(this.score+=a),r==0){n<s.minRepeatTerm&&this.reducePos<this.pos&&(this.reducePos=this.pos),this.pushState(s.getGoto(this.state,n,!0),this.reducePos),n<s.minRepeatTerm&&this.storeNode(n,this.reducePos,this.reducePos,o?8:4,!0),this.reduceContext(n,this.reducePos);return}let l=this.stack.length-(r-1)*3-(e&262144?6:0),c=l?this.stack[l-2]:this.p.ranges[0].from;n<s.minRepeatTerm&&c==this.reducePos&&this.reducePos<this.pos&&(this.reducePos=this.pos);let u=this.reducePos-c;u>=2e3&&!(!((t=this.p.parser.nodeSet.types[n])===null||t===void 0)&&t.isAnonymous)&&(c==this.p.lastBigReductionStart?(this.p.bigReductionCount++,this.p.lastBigReductionSize=u):this.p.lastBigReductionSize<u&&(this.p.bigReductionCount=1,this.p.lastBigReductionStart=c,this.p.lastBigReductionSize=u));let O=l?this.stack[l-1]:0,d=this.bufferBase+this.buffer.length-O;if(n<s.minRepeatTerm||e&131072){let g=s.stateFlag(this.state,1)?this.pos:this.reducePos;this.storeNode(n,c,g,d+4,!0)}if(e&262144)this.state=this.stack[l];else{let g=this.stack[l-3];this.state=s.getGoto(g,n,!0)}for(;this.stack.length>l;)this.stack.pop();this.reduceContext(n,c)}storeNode(e,t,r,n=4,s=!1){if(e==0&&(!this.stack.length||this.stack[this.stack.length-1]<this.buffer.length+this.bufferBase)){let o=this.buffer.length;if(o>0&&this.buffer[o-4]==0&&this.buffer[o-1]>-1){if(t==r)return;if(this.buffer[o-2]>=t){this.buffer[o-2]=r;return}}}if(!s||this.pos==r)this.buffer.push(e,t,r,n);else{let o=this.buffer.length;if(o>0&&(this.buffer[o-4]!=0||this.buffer[o-1]<0)){let a=!1;for(let l=o;l>0&&this.buffer[l-2]>r;l-=4)if(this.buffer[l-1]>=0){a=!0;break}if(a)for(;o>0&&this.buffer[o-2]>r;)this.buffer[o]=this.buffer[o-4],this.buffer[o+1]=this.buffer[o-3],this.buffer[o+2]=this.buffer[o-2],this.buffer[o+3]=this.buffer[o-1],o-=4,n>4&&(n-=4)}this.buffer[o]=e,this.buffer[o+1]=t,this.buffer[o+2]=r,this.buffer[o+3]=n}}shift(e,t,r,n){if(e&131072)this.pushState(e&65535,this.pos);else if((e&262144)==0){let s=e,{parser:o}=this.p;this.pos=n;let a=o.stateFlag(s,1);!a&&(n>r||t<=o.maxNode)&&(this.reducePos=n),this.pushState(s,a?r:Math.min(r,this.reducePos)),this.shiftContext(t,r),t<=o.maxNode&&this.buffer.push(t,r,n,4)}else this.pos=n,this.shiftContext(t,r),t<=this.p.parser.maxNode&&this.buffer. Line truncated
`:r=="r"?"\r":r=="t"?" ":"\\")}eq(e){return this.search==e.search&&this.replace==e.replace&&this.caseSensitive==e.caseSensitive&&this.regexp==e.regexp&&this.wholeWord==e.wholeWord&&this.test==e.test}create(){return this.regexp?new vm(this):new Sm(this)}getCursor(e,t=0,r){let n=e.doc?e:Je.create({doc:e});return r==null&&(r=n.doc.length),this.regexp?Qa(this,n,t,r):wa(this,n,t,r)}},Mu=class{constructor(e){this.spec=e}};function fZ(i,e,t){return(r,n,s,o)=>{if(t&&!t(r,n,s,o))return!1;let a=r>=o&&n<=o+s.length?s.slice(r-o,n-o):e.doc.sliceString(r,n);return i(a,e,r,n)}}function wa(i,e,t,r){let n;return i.wholeWord&&(n=OZ(e.doc,e.charCategorizer(e.selection.main.head))),i.test&&(n=fZ(i.test,e,n)),new _s(e.doc,i.unquoted,t,r,i.caseSensitive?void 0:s=>s.toLowerCase(),n)}function OZ(i,e){return(t,r,n,s)=>((s>t||s+n.length<r)&&(s=Math.max(0,t-2),n=i.sliceString(s,Math.min(i.length,r+2))),(e(Lu(n,t-s))!=wt.Word||e(ju(n,t-s))!=wt.Word)&&(e(ju(n,r-s))!=wt.Word||e(Lu(n,r-s))!=wt.Word))}var Sm=class extends Mu{constructor(e){super(e)}nextMatch(e,t,r){let n=wa(this.spec,e,r,e.doc.length).nextOverlapping();if(n.done){let s=Math.min(e.doc.length,t+this.spec.unquoted.length);n=wa(this.spec,e,0,s).nextOverlapping()}return n.done||n.value.from==t&&n.value.to==r?null:n.value}prevMatchInRange(e,t,r){for(let n=r;;){let s=Math.max(t,n-1e4-this.spec.unquoted.length),o=wa(this.spec,e,s,n),a=null;for(;!o.nextOverlapping().done;)a=o.value;if(a)return a;if(s==t)return null;n-=1e4}}prevMatch(e,t,r){let n=this.prevMatchInRange(e,0,t);return n||(n=this.prevMatchInRange(e,Math.max(0,r-this.spec.unquoted.length),e.doc.length)),n&&(n.from!=t||n.to!=r)?n:null}getReplacement(e){return this.spec.unquote(this.spec.replace)}matchAll(e,t){let r=wa(this.spec,e,0,e.doc.length),n=[];for(;!r.next().done;){if(n.length>=t)return null;n.push(r.value)}return n}highlight(e,t,r,n){let s=wa(this.spec,e,Math.max(0,t-this.spec.unquoted.length),Math.min(r+this.spec.unquoted.length,e.doc.length));for(;!s.next().done;)n(s.value.from,s.value.to)}};function dZ(i,e,t){return(r,n,s)=>(!t||t(r,n,s))&&i(s[0],e,r,n)}function Qa(i,e,t,r){let n;return i.wholeWord&&(n=pZ(e.charCategorizer(e.selection.main.head))),i.test&&(n=dZ(i.test,e,n)),new Zu(e.doc,i.search,{ignoreCase:!i.caseSensitive,test:n},t,r)}function Lu(i,e){return i.slice(jt(i,e,!1),e)}function ju(i,e){return i.slice(e,jt(i,e))}function pZ(i){return(e,t,r)=>!r[0].length||(i(Lu(r.input,r.index))!=wt.Word||i(ju(r.input,r.index))!=wt.Word)&&(i(ju(r.input,r.index+r[0].length))!=wt.Word||i(Lu(r.input,r.index+r[0].length))!=wt.Word)}var vm=class extends Mu{nextMatch(e,t,r){let n=Qa(this.spec,e,r,e.doc.length).next();return n.done&&(n=Qa(this.spec,e,0,t).next()),n.done?null:n.value}prevMatchInRange(e,t,r){for(let n=1;;n++){let s=Math.max(t,r-n*1e4),o=Qa(this.spec,e,s,r),a=null;for(;!o.next().done;)a=o.value;if(a&&(s==t||a.from>s+10))return a;if(s==t)return null}}prevMatch(e,t,r){return this.prevMatchInRange(e,0,t)||this.prevMatchInRange(e,r,e.doc.length)}getReplacement(e){return this.spec.unquote(this.spec.replace).replace(/\$([$&]|\d+)/g,(t,r)=>{if(r=="&")return e.match[0];if(r=="$")return"$";for(let n=r.length;n>0;n--){let s=+r.slice(0,n);if(s>0&&s<e.match.length)return e.match[s]+r.slice(n)}return t})}matchAll(e,t){let r=Qa(this.spec,e,0,e.doc.length),n=[];for(;!r.next().done;){if(n.length>=t)return null;n.push(r.value)}return n}highlight(e,t,r,n){let s=Qa(this.spec,e,Math.max(0,t-250),Math.min(r+250,e.doc.length));for(;!s.next().done;)n(s.value.from,s.value.to)}},Wl=Ze.define(),km=Ze.define(),Xs=at.define({create(i){return new Yl(ym(i).create(),null)},update(i,e){for(let t of e.effects)t.is(Wl)?i=new Yl(t.value.create(),i.panel):t.is(km)&&(i=new Yl(i.query,t.value?Tm:null));return i},provide:i=>bl.from(i,e=>e.panel)});var Yl=class{constructor(e,t){this.query=e,this.panel=t}},mZ=de.mark({class:"cm-searchMatch"}),gZ=de.mark({class:"cm-searchMatch cm-searchMatch-selected"}),bZ=Xt.fromClass(class{constructor(i){this.view=i,this.decorations=this.highlight(i.state.field(Xs))}update(i){let e=i.state.field(Xs);(e!=i.startState.field(Xs)||i.docChanged||i.selectionSet||i.viewportChanged)&&(this.decorations=this.highlight(e))}highlight({query:i,panel:e}){if(!e||!i.spec.valid)return de.none;let{view:t}=this,r=new Dr;for(let n=0,s=t.visibleRanges,o=s.length;n<o;n++){let{from:a,to:l}=s[n];for(;n<o-1&&l>s[n+1].from-500;)l=s[++n].to;i.highlight(t.state,a,l,(c,u)=>{let O=t.state.selection.ranges.some(d=>d.from==c&&d.to==u);r.add(c,u,O?gZ:mZ)})}return r.finish()}},{decorations:i=>i.decorations});function Vl(i){return e=>{let t=e.state.field(Xs,!1);return t&&t.query.spec.valid?i(e,t):Qw(e)}}var Yu=Vl((i,{query:e})=>{let{to:t}=i.state.selection.main,r=e.nextMatch(i.state,t,t);if(!r)return!1;let n=K.single(r.from,r.to),s=i.state.facet(Qo);return i.dispatch({selection:n,effects:[_m(i,r),s.scrollToMatch(n.main,i)],userEvent:"select.search"}),ww(i),!0}),Wu=Vl((i,{query:e})=>{let{state:t}=i,{from:r}=t.selection.main,n=e.prevMatch(t,r,r);if( Line truncated
`+t.scrub(),s=this.advance(n);return s>-1&&s<n.length?this.complete(e,r,s):!1}finish(e,t){return(this.stage==2||this.stage==3)&&ql(t.content,this.pos)==t.content.length?this.complete(e,t,t.content.length):!1}complete(e,t,r){return e.addLeafElement(t,ft(pe.LinkReference,this.start,this.start+r,this.elts)),!0}nextStage(e){return e?(this.pos=e.to-this.start,this.elts.push(e),this.stage++,!0):(e===!1&&(this.stage=-1),!1)}advance(e){for(;;){if(this.stage==-1)return-1;if(this.stage==0){if(!this.nextStage(gQ(e,this.pos,this.start,!0)))return-1;if(e.charCodeAt(this.pos)!=58)return this.stage=-1;this.elts.push(ft(pe.LinkMark,this.pos+this.start,this.pos+this.start+1)),this.pos++}else if(this.stage==1){if(!this.nextStage(pQ(e,ql(e,this.pos),this.start)))return-1}else if(this.stage==2){let t=ql(e,this.pos),r=0;if(t>this.pos){let n=mQ(e,t,this.start);if(n){let s=tg(e,n.to-this.start);s>0&&(this.nextStage(n),r=s)}}return r||(r=tg(e,this.pos)),r>0&&r<e.length?r:-1}else return tg(e,this.pos)}}};function tg(i,e){for(;e<i.length;e++){let t=i.charCodeAt(e);if(t==10)break;if(!Er(t))return-1}return e}var lg=class{nextLine(e,t,r){let n=t.depth<e.stack.length?-1:oQ(t),s=t.next;if(n<0)return!1;let o=ft(pe.HeaderMark,e.lineStart+t.pos,e.lineStart+n);return e.nextLine(),e.addLeafElement(r,ft(s==61?pe.SetextHeading1:pe.SetextHeading2,r.start,e.prevLineEnd(),[...e.parser.parseInline(r.content,r.start),o])),!0}finish(){return!1}},hQ={LinkReference(i,e){return e.content.charCodeAt(0)==91?new ag(e):null},SetextHeading(){return new lg}},T2=[(i,e)=>sQ(e)>=0,(i,e)=>iQ(e)>=0,(i,e)=>rQ(e)>=0,(i,e)=>pg(e,i,!0)>=0,(i,e)=>mg(e,i,!0)>=0,(i,e)=>dg(e,i,!0)>=0,(i,e)=>cQ(e,i,!0)>=0],X2={text:"",end:0},cg=class{constructor(e,t,r,n){this.parser=e,this.input=t,this.ranges=n,this.line=new ng,this.atEnd=!1,this.reusePlaceholders=new Map,this.stoppedAt=null,this.rangeI=0,this.to=n[n.length-1].to,this.lineStart=this.absoluteLineStart=this.absoluteLineEnd=n[0].from,this.block=Iu.create(pe.Document,0,this.lineStart,0,0),this.stack=[this.block],this.fragments=r.length?new fg(r,t):null,this.readLine()}get parsedPos(){return this.absoluteLineStart}advance(){if(this.stoppedAt!=null&&this.absoluteLineStart>this.stoppedAt)return this.finish();let{line:e}=this;for(;;){for(let r=0;;){let n=e.depth<this.stack.length?this.stack[this.stack.length-1]:null;for(;r<e.markers.length&&(!n||e.markers[r].from<n.end);){let s=e.markers[r++];this.addNode(s.type,s.from,s.to)}if(!n)break;this.finishContext()}if(e.pos<e.text.length)break;if(!this.nextLine())return this.finish()}if(this.fragments&&this.reuseFragment(e.basePos))return null;e:for(;;){for(let r of this.parser.blockParsers)if(r){let n=r(this,e);if(n!=!1){if(n==!0)return null;e.forward();continue e}}break}if(e.pos==e.text.length)return this.nextLine()?null:this.finish();let t=new rg(this.lineStart+e.pos,e.text.slice(e.pos));for(let r of this.parser.leafBlockParsers)if(r){let n=r(this,t);n&&t.parsers.push(n)}e:for(;this.nextLine()&&e.pos!=e.text.length;){if(e.indent<e.baseIndent+4){for(let r of this.parser.endLeafBlock)if(r(this,e,t))break e}for(let r of t.parsers)if(r.nextLine(this,e,t))return null;t.content+=`
`+e.scrub();for(let r of e.markers)t.marks.push(r)}return this.finishLeaf(t),null}stopAt(e){if(this.stoppedAt!=null&&this.stoppedAt<e)throw new RangeError("Can't move stoppedAt forward");this.stoppedAt=e}reuseFragment(e){if(!this.fragments.moveTo(this.absoluteLineStart+e,this.absoluteLineStart)||!this.fragments.matches(this.block.hash))return!1;let t=this.fragments.takeNodes(this);return t?(this.absoluteLineStart+=t,this.lineStart=bQ(this.absoluteLineStart,this.ranges),this.moveRangeI(),this.absoluteLineStart<this.to?(this.lineStart++,this.absoluteLineStart++,this.readLine()):(this.atEnd=!0,this.readLine()),!0):!1}get depth(){return this.stack.length}parentType(e=this.depth-1){return this.parser.nodeSet.types[this.stack[e].type]}nextLine(){return this.lineStart+=this.line.text.length,this.absoluteLineEnd>=this.to?(this.absoluteLineStart=this.absoluteLineEnd,this.atEnd=!0,this.readLine(),!1):(this.lineStart++,this.absoluteLineStart=this.absoluteLineEnd+1,this.moveRangeI(),this.readLine(),!0)}peekLine(){return this.scanLine(this.absoluteLineEnd+1).text}moveRangeI(){for(;this.rangeI<this.ranges.length-1&&this.absoluteLineStart>=this.ranges[this.rangeI].to;)this.rangeI++,this.absoluteLineStart=Math.max(this.absoluteLineStart,this.ranges[this.rangeI].from)}scanLine(e){let t=X2;if(t.end=e,e>=this.to)t.text="";else if(t.text=this.lineChunkAt(e),t.end+=t.text.length,this.ranges.length>1){let r=this.absoluteLineStart,n=this.rangeI;for(;this.ranges[n].to<t.end;){n++;let s=this.ranges[n].from,o=this.lineChunkAt(s);t.end=s+o.length,t.text=t.text.slice(0,this.ranges[n-1].to-r)+o,r=t.end-t.text.length}}return t}readLine(){let{line:e}=this,{text:t,end:r}=this.scanLine(this.absoluteLineStart);for(this.absoluteLineEnd=r,e.reset(t);e.depth<this.stack.length;e.depth++){let n=this.stack[e.depth],s=this.parser.skipContextMarkup[n.type];if(!s)throw new Error("Unhandled block context "+pe[n.type]);let o=this.line.markers.length;if(!s(n,this,e)){this.line.markers.length>o&&(n.end=this.line.markers[this.line.markers.length-1].to),e.forward();break}e.forward()}}lineChunkAt(e){let t=this.input.chunk(e),r;if(this.input.lineChunks)r=t==`
`?"":t;else{let n=t.indexOf(`
`);r=n<0?t:t.slice(0,n)}return e+r.length>this.to?r.slice(0,this.to-e):r}prevLineEnd(){return this.atEnd?this.lineStart:this.lineStart-1}startContext(e,t,r=0){this.block=Iu.create(e,r,this.lineStart+t,this.block.hash,this.lineStart+this.line.text.length),this.stack.push(this.block)}startComposite(e,t,r=0){this.startContext(this.parser.getNodeType(e),t,r)}addNode(e,t,r){typeof e=="number"&&(e=new Ge(this.parser.nodeSet.types[e],$a,$a,(r!=null?r:this.prevLineEnd())-t)),this.block.addChild(e,t-this.block.from)}addElement(e){this.block.addChild(e.toTree(this.parser.nodeSet),e.from-this.block.from)}addLeafElement(e,t){this.addNode(this.buffer.writeElements(ug(t.children,e.marks),-t.from).finish(t.type,t.to-t.from),t.from)}finishContext(){let e=this.stack.pop(),t=this.stack[this.stack.length-1];t.addChild(e.toTree(this.parser.nodeSet),e.from-t.from),this.block=t}finish(){for(;this.stack.length>1;)this.finishContext();return this.addGaps(this.block.toTree(this.parser.nodeSet,this.lineStart))}addGaps(e){return this.ranges.length>1?uQ(this.ranges,0,e.topNode,this.ranges[0].from,this.reusePlaceholders):e}finishLeaf(e){for(let r of e.parsers)if(r.finish(this,e))return;let t=ug(this.parser.parseInline(e.content,e.start),e.marks);this.addNode(this.buffer.writeElements(t,-e.start).finish(pe.Paragraph,e.content.length),e.start)}elt(e,t,r,n){return typeof e=="string"?ft(this.parser.getNodeType(e),t,r,n):new Fu(e,t)}get buffer(){return new Nu(this.parser.nodeSet)}};function uQ(i,e,t,r,n){let s=i[e].to,o=[],a=[],l=t.from+r;function c(u,O){for(;O?u>=s:u>s;){let d=i[e+1].from-s;r+=d,u+=d,e++,s=i[e].to}}for(let u=t.firstChild;u;u=u.nextSibling){c(u.from+r,!0);let O=u.from+r,d,g=n.get(u.tree);g?d=g:u.to+r>s?(d=uQ(i,e,u,r,n),c(u.to+r,!1)):d=u.toTree(),o.push(d),a.push(O-l)}return c(t.to+r,!1),new Ge(t.type,o,a,t.to+r-l,t.tree?t.tree.propValues:void 0)}var Nl=class i extends In{constructor(e,t,r,n,s,o,a,l,c){super(),this.nodeSet=e,this.blockParsers=t,this.leafBlockParsers=r,this.blockNames=n,this.endLeafBlock=s,this.skipContextMarkup=o,this.inlineParsers=a,this.inlineNames=l,this.wrappers=c,this.nodeTypes=Object.create(null);for(let u of e.types)this.nodeTypes[u.name]=u.id}createParse(e,t,r){let n=new cg(this,e,t,r);for(let s of this.wrappers)n=s(n,e,t,r);return n}configure(e){let t=hg(e);if(!t)return this;let{nodeSet:r,skipContextMarkup:n}=this,s=this.blockParsers.slice(),o=this.leafBlockParsers.slice(),a=this.blockNames.slice(),l=this.inlineParsers.slice(),c=this.inlineNames.slice(),u=this.endLeafBlock.slice(),O=this.wrappers;if(Dl(t.defineNodes)){n=Object.assign({},n);let d=r.types.slice(),g;for(let x of t.defineNodes){let{name:Q,block:X,composite:E,style:G}=typeof x=="string"?{name:x}:x;if(d.some(j=>j.name==Q))continue;E&&(n[d.length]=(j,p,D)=>E(p,D,j.value));let V=d.length,F=E?["Block","BlockContext"]:X?V>=pe.ATXHeading1&&V<=pe.SetextHeading2?["Block","LeafBlock","Heading"]:["Block","LeafBlock"]:void 0;d.push(Ut.define({id:V,name:Q,props:F&&[[ze.group,F]]})),G&&(g||(g={}),Array.isArray(G)||G instanceof or?g[Q]=G:Object.assign(g,G))}r=new Dn(d),g&&(r=r.extend(bi(g)))}if(Dl(t.props)&&(r=r.extend(...t.props)),Dl(t.remove))for(let d of t.remove){let g=this.blockNames.indexOf(d),x=this.inlineNames.indexOf(d);g>-1&&(s[g]=o[g]=void 0),x>-1&&(l[x]=void 0)}if(Dl(t.parseBlock))for(let d of t.parseBlock){let g=a.indexOf(d.name);if(g>-1)s[g]=d.parse,o[g]=d.leaf;else{let x=d.before?qu(a,d.before):d.after?qu(a,d.after)+1:a.length-1;s.splice(x,0,d.parse),o.splice(x,0,d.leaf),a.splice(x,0,d.name)}d.endLeaf&&u.push(d.endLeaf)}if(Dl(t.parseInline))for(let d of t.parseInline){let g=c.indexOf(d.name);if(g>-1)l[g]=d.parse;else{let x=d.before?qu(c,d.before):d.after?qu(c,d.after)+1:c.length-1;l.splice(x,0,d.parse),c.splice(x,0,d.name)}}return t.wrap&&(O=O.concat(t.wrap)),new i(r,s,o,a,u,n,l,c,O)}getNodeType(e){let t=this.nodeTypes[e];if(t==null)throw new RangeError(`Unknown node type '${e}'`);return t}parseInline(e,t){let r=new Bl(this,e,t);e:for(let n=t;n<r.end;){let s=r.char(n);for(let o of this.inlineParsers)if(o){let a=o(r,s,n);if(a>=0){n=a;continue e}}n++}return r.resolveMarkers(0)}};function Dl(i){return i!=null&&i.length>0}function hg(i){if(!Array.isArray(i))return i;if(i.length==0)return null;let e=hg(i[0]);if(i.length==1)return e;let t=hg(i.slice(1));if(!t||!e)return e||t;let r=(o,a)=>(o||$a).concat(a||$a),n=e.wrap,s=t.wrap;return{props:r(e.props,t.props),defineNodes:r(e.defineNodes,t.defineNodes),parseBlock:r(e.parseBlock,t.parseBlock),parseInline:r(e.parseInline,t.parseInline),remove:r(e.remove,t.remove),wrap:n?s?(o,a,l,c)=>n(s(o,a,l,c),a,l,c):n:s}}function qu(i,e){let t=i.indexOf(e);if(t<0)throw new RangeError(`Position specified relative to unknown parser ${e}`);return t}var fQ=[Ut.none];for(let i=1,e;e=pe[i];i++)fQ[i]=Ut.define({id:i,name:e,props:i>=pe.Escape?[]:[[ze.group,i in tQ?["Block","BlockContext"]:["Block","LeafBlock"]]],top:e=="Document"});var $a=[],Nu=class{constructor(e){this.nodeSet=e,this.content=[],this.nodes=[]}write(e Line truncated
`;)s--;this.fragmentEnd=s?s-1:0}let r=this.cursor;r||(r=this.cursor=this.fragment.tree.cursor(),r.firstChild());let n=e+this.fragment.offset;for(;r.to<=n;)if(!r.parent())return!1;for(;;){if(r.from>=n)return this.fragment.from<=t;if(!r.childAfter(n))return!1}}matches(e){let t=this.cursor.tree;return t&&t.prop(ze.contextHash)==e}takeNodes(e){let t=this.cursor,r=this.fragment.offset,n=this.fragmentEnd-(this.fragment.openEnd?1:0),s=e.absoluteLineStart,o=s,a=e.block.children.length,l=o,c=a;for(;;){if(t.to-r>n){if(t.type.isAnonymous&&t.firstChild())continue;break}let u=bQ(t.from-r,e.ranges);if(t.to-r<=e.ranges[e.rangeI].to)e.addNode(t.tree,u);else{let O=new Ge(e.parser.nodeSet.types[pe.Paragraph],[],[],0,e.block.hashProp);e.reusePlaceholders.set(O,t.tree),e.addNode(O,u)}if(t.type.is("Block")&&(R2.indexOf(t.type.id)<0?(o=t.to-r,a=e.block.children.length):(o=l,a=c),l=t.to-r,c=e.block.children.length),!t.nextSibling())break}for(;e.block.children.length>a;)e.block.children.pop(),e.block.positions.pop();return o-s}};function bQ(i,e){let t=i;for(let r=1;r<e.length;r++){let n=e[r-1].to,s=e[r].from;n<i&&(t-=s-n)}return t}var C2=bi({"Blockquote/...":y.quote,HorizontalRule:y.contentSeparator,"ATXHeading1/... SetextHeading1/...":y.heading1,"ATXHeading2/... SetextHeading2/...":y.heading2,"ATXHeading3/...":y.heading3,"ATXHeading4/...":y.heading4,"ATXHeading5/...":y.heading5,"ATXHeading6/...":y.heading6,"Comment CommentBlock":y.comment,Escape:y.escape,Entity:y.character,"Emphasis/...":y.emphasis,"StrongEmphasis/...":y.strong,"Link/... Image/...":y.link,"OrderedList/... BulletList/...":y.list,"BlockQuote/...":y.quote,"InlineCode CodeText":y.monospace,"URL Autolink":y.url,"HeaderMark HardBreak QuoteMark ListMark LinkMark EmphasisMark CodeMark":y.processingInstruction,"CodeInfo LinkLabel":y.labelName,LinkTitle:y.string,Paragraph:y.content}),xQ=new Nl(new Dn(fQ).extend(C2),Object.keys(Du).map(i=>Du[i]),Object.keys(Du).map(i=>hQ[i]),Object.keys(Du),T2,tQ,Object.keys(ig).map(i=>ig[i]),Object.keys(ig),[]);function Z2(i,e,t){let r=[];for(let n=i.firstChild,s=e;;n=n.nextSibling){let o=n?n.from:t;if(o>s&&r.push({from:s,to:o}),!n)break;s=n.to}return r}function SQ(i){let{codeParser:e,htmlParser:t}=i;return{wrap:Nh((n,s)=>{let o=n.type.id;if(e&&(o==pe.CodeBlock||o==pe.FencedCode)){let a="";if(o==pe.FencedCode){let c=n.node.getChild(pe.CodeInfo);c&&(a=s.read(c.from,c.to))}let l=e(a);if(l)return{parser:l,overlay:c=>c.type.id==pe.CodeText,bracketed:o==pe.FencedCode}}else if(t&&(o==pe.HTMLBlock||o==pe.HTMLTag||o==pe.CommentBlock))return{parser:t,overlay:Z2(n.node,n.from,n.to)};return null})}}var E2={resolve:"Strikethrough",mark:"StrikethroughMark"},A2={defineNodes:[{name:"Strikethrough",style:{"Strikethrough/...":y.strikethrough}},{name:"StrikethroughMark",style:y.processingInstruction}],parseInline:[{name:"Strikethrough",parse(i,e,t){if(e!=126||i.char(t+1)!=126||i.char(t+2)==126)return-1;let r=i.slice(t-1,t),n=i.slice(t+2,t+3),s=/\s|^$/.test(r),o=/\s|^$/.test(n),a=Fl.test(r),l=Fl.test(n);return i.addDelimiter(E2,t,t+2,!o&&(!l||s||a),!s&&(!a||o||l))},after:"Emphasis"}]};function Il(i,e,t=0,r,n=0){let s=0,o=!0,a=-1,l=-1,c=!1,u=()=>{r.push(i.elt("TableCell",n+a,n+l,i.parser.parseInline(e.slice(a,l),n+a)))};for(let O=t;O<e.length;O++){let d=e.charCodeAt(O);d==124&&!c?((!o||a>-1)&&s++,o=!1,r&&(a>-1&&u(),r.push(i.elt("TableDelimiter",O+n,O+n+1))),a=l=-1):(c||d!=32&&d!=9)&&(a<0&&(a=O),l=O+1),c=!c&&d==92}return a>-1&&(s++,r&&u()),s}function Fw(i,e){for(let t=e;t<i.length;t++){let r=i.charCodeAt(t);if(r==124)return!0;r==92&&t++}return!1}var vQ=/^[>\s]*\|?(\s*:?-+:?\s*\|)+(\s*:?-+:?\s*)?$/,Gu=class{constructor(){this.rows=null}nextLine(e,t,r){if(this.rows==null){this.rows=!1;let n;if((t.next==45||t.next==58||t.next==124)&&vQ.test(n=t.text.slice(t.pos))){let s=[];Il(e,r.content,0,s,r.start)==Il(e,n,0)&&(this.rows=[e.elt("TableHeader",r.start,r.start+r.content.length,s),e.elt("TableDelimiter",e.lineStart+t.pos,e.lineStart+t.text.length)])}}else if(this.rows){let n=[];Il(e,t.text,t.pos,n,e.lineStart),this.rows.push(e.elt("TableRow",e.lineStart+t.pos,e.lineStart+t.text.length,n))}return!1}finish(e,t){return this.rows?(e.addLeafElement(t,e.elt("Table",t.start,t.start+t.content.length,this.rows)),!0):!1}},U2={defineNodes:[{name:"Table",block:!0},{name:"TableHeader",style:{"TableHeader/...":y.heading}},"TableRow",{name:"TableCell",style:y.content},{name:"TableDelimiter",style:y.processingInstruction}],parseBlock:[{name:"Table",leaf(i,e){return Fw(e.content,0)?new Gu:null},endLeaf(i,e,t){if(t.parsers.some(n=>n instanceof Gu)||!Fw(e.text,e.basePos))return!1;let r=i.peekLine();return vQ.test(r)&&Il(i,e.text,e.basePos)==Il(i,r,e.basePos)},before:"SetextHeading"}]},Og=class{nextLine(){return!1}finish(e,t){return e.addLeafElement(t,e.elt("Task",t.start,t.start+t.content.length,[e.elt("TaskMarker",t.start,t.start+3),...e.parser.parseInline(t.content.slice(3),t.start+3)])),!0}},z2={defineNodes:[{name:"Task",block:!0,style:y.list},{name:"TaskMarker",style:y.atom}],pa Line truncated
\${}
} catch (\${error}) {
\${}
}`,{label:"try",detail:"/ catch block",type:"keyword"}),Vi("if (${}) {\n ${}\n}",{label:"if",detail:"block",type:"keyword"}),Vi(`if (\${}) {
\${}
} else {
\${}
}`,{label:"if",detail:"/ else block",type:"keyword"}),Vi(`class \${name} {
constructor(\${params}) {
\${}
}
}`,{label:"class",detail:"definition",type:"keyword"}),Vi('import {${names}} from "${module}"\n${}',{label:"import",detail:"named",type:"keyword"}),Vi('import ${name} from "${module}"\n${}',{label:"import",detail:"default",type:"keyword"})],EA=c$.concat([Vi("interface ${name} {\n ${}\n}",{label:"interface",detail:"definition",type:"keyword"}),Vi("type ${name} = ${type}",{label:"type",detail:"definition",type:"keyword"}),Vi("enum ${name} {\n ${}\n}",{label:"enum",detail:"definition",type:"keyword"})]),o$=new fa,h$=new Set(["Script","Block","FunctionExpression","FunctionDeclaration","ArrowFunction","MethodDeclaration","ForStatement"]);function Kl(i){return(e,t)=>{let r=e.node.getChild("VariableDefinition");return r&&t(r,i),!0}}var AA=["FunctionDeclaration"],UA={FunctionDeclaration:Kl("function"),ClassDeclaration:Kl("class"),ClassExpression:()=>!0,EnumDeclaration:Kl("constant"),TypeAliasDeclaration:Kl("type"),NamespaceDeclaration:Kl("namespace"),VariableDefinition(i,e){i.matchContext(AA)||e(i,"variable")},TypeDefinition(i,e){e(i,"type")},__proto__:null};function u$(i,e){let t=o$.get(e);if(t)return t;let r=[],n=!0;function s(o,a){let l=i.sliceString(o.from,o.to);r.push({label:l,type:a})}return e.cursor(ut.IncludeAnonymous).iterate(o=>{if(n)n=!1;else if(o.name){let a=UA[o.name];if(a&&a(o,s)||h$.has(o.name))return!1}else if(o.to-o.from>8192){for(let a of u$(i,o.node))r.push(a);return!1}}),o$.set(e,r),r}var a$=/^[\w$\xa1-\uffff][\w$\d\xa1-\uffff]*$/,f$=["TemplateString","String","RegExp","LineComment","BlockComment","VariableDefinition","TypeDefinition","Label","PropertyDefinition","PropertyName","PrivatePropertyDefinition","PrivatePropertyName","JSXText","JSXAttributeValue","JSXOpenTag","JSXCloseTag","JSXSelfClosingTag",".","?."];function zA(i){let e=ct(i.state).resolveInner(i.pos,-1);if(f$.indexOf(e.name)>-1)return null;let t=e.name=="VariableName"||e.to-e.from<20&&a$.test(i.state.sliceDoc(e.from,e.to));if(!t&&!i.explicit)return null;let r=[];for(let n=e;n;n=n.parent)h$.has(n.name)&&(r=r.concat(u$(i.state.doc,n)));return{options:r,from:t?e.from:i.pos,validFor:a$}}var Jr=xi.define({name:"javascript",parser:s$.configure({props:[_r.add({IfStatement:Qn({except:/^\s*({|else\b)/}),TryStatement:Qn({except:/^\s*({|catch\b|finally\b)/}),LabeledStatement:nu,SwitchBody:i=>{let e=i.textAfter,t=/^\s*\}/.test(e),r=/^\s*(case|default)\b/.test(e);return i.baseIndent+(t?0:r?1:2)*i.unit},Block:ru({closing:"}"}),ArrowFunction:i=>i.baseIndent+i.unit,"TemplateString BlockComment":()=>null,"Statement Property":Qn({except:/^\s*{/}),JSXElement(i){let e=/^\s*<\//.test(i.textAfter);return i.lineIndent(i.node.from)+(e?0:i.unit)},JSXEscape(i){let e=/\s*\}/.test(i.textAfter);return i.lineIndent(i.node.from)+(e?0:i.unit)},"JSXOpenTag JSXSelfClosingTag"(i){return i.column(i.node.from)+i.unit}}),Ti.add({"Block ClassBody SwitchBody EnumBody ObjectExpression ArrayExpression ObjectType":Rr,BlockComment(i){return{from:i.from+2,to:i.to-2}},JSXElement(i){let e=i.firstChild;if(!e||e.name=="JSXSelfClosingTag")return null;let t=i.lastChild;return{from:e.to,to:t.type.isError?i.to:t.from}},"JSXSelfClosingTag JSXOpenTag"(i){var e;let t=(e=i.firstChild)===null||e===void 0?void 0:e.nextSibling,r=i.lastChild;return!t||t.type.isError?null:{from:t.to,to:r.type.isError?i.to:r.from}}})]}),languageData:{closeBrackets:{brackets:["(","[","{","'",'"',"`"]},commentTokens:{line:"//",block:{open:"/*",close:"*/"}},indentOnInput:/^\s*(?:case |default:|\{|\}|<\/)$/,wordChars:"$"}}),O$={test:i=>/^JSX/.test(i.name),facet:Oa({commentTokens:{block:{open:"{/*",close:"*/}"}}})},Rg=Jr.configure({dialect:"ts"},"typescript"),Cg=Jr.configure({dialect:"jsx",props:[tu.add(i=>i.isTop?[O$]:void 0)]}),Zg=Jr.configure({dialect:"jsx ts",props:[tu.add(i=>i.isTop?[O$]:void 0)]},"typescript"),d$=i=>({label:i,type:"keyword"}),p$="break case const continue default delete export extends false finally in instanceof let new return static super switch this throw true typeof var yield".split(" ").map(d$),MA=p$.concat(["declare","implements","private","protected","public"].map(d$));function m$(i={}){let e=i.jsx?i.typescript?Zg:Cg:i.typescript?Rg:Jr,t=i.typescript?EA.concat(MA):c$.concat(p$);return new bt(e,[Jr.data.of({autocomplete:xv(f$,bv(t))}),Jr.data.of({autocomplete:zA}),i.jsx?YA:[]])}function LA(i){for(;;){if(i.name=="JSXOpenTag"||i.name=="JSXSelfClosingTag"||i.name=="JSXFragmentTag")return i;if(i.name=="JSXEscape"||!i.parent)return null;i=i.parent}}function l$(i,e,t=i.length){for(let r=e==null?void 0:e.firstChild;r;r=r.nextSibling)if(r.name=="JSXIdentifier"||r.name=="JSXBuiltin"||r.name=="JSXNamespacedName"||r.name=="JSXMemberExpression")return i.sliceString(r.from,Math.min(r.to,t));return""}var jA=typeof navigator=="object"&&/Android\b/.test(navigator.userAgent),YA=ae.inputHandler.of((i,e,t,r,n)=>{if((jA?i.composing:i.compositionStarted)||i.state.readOnly||e!=t||r!=">"&&r!="/"||!Jr.isActiveAt(i.state,e,-1))return!1;let s=n(),{state:o}=s,a=o.changeByRange(l=>{var c;let{head:u}=l,O=ct(o).reso Line truncated
`);for(let l of a){Y$.lastIndex=0;let c=Y$.exec(l);if(c){let u=o+c.index+c[0].length;t.push(de.widget({widget:new qg(c[0],e),side:-1}).range(u))}o+=l.length+1}}return de.set(t,!0)}function V$(i){let e;function t(r){let n=e.posAtDOM(r);i(e.state.doc.lineAt(n).number)}return Xt.fromClass(class{constructor(r){e=r,this.decorations=W$(r,t)}update(r){e=r.view,(r.docChanged||r.viewportChanged)&&(this.decorations=W$(r.view,t))}},{decorations:r=>r.decorations})}var Ig=class extends Nt{constructor(t,r,n){super();this.filename=t;this.system=r;this.handleClick=n}toDOM(){let t=document.createElement("span");return t.className="include-link-badge",t.textContent="\u2192",t.title=(this.system?"System header: ":"View ")+this.filename,t.addEventListener("click",r=>{r.preventDefault(),r.stopPropagation(),this.handleClick(this.filename,this.system)}),t}eq(t){return this.filename===t.filename&&this.system===t.system}ignoreEvent(){return!1}};function mU(i,e,t){let r=[],n=i.state.doc,s=new Set;for(let{from:o,to:a}of i.visibleRanges){let l=i.state.sliceDoc(o,a);for(let c of e){let u=c instanceof RegExp?{re:c}:c;u.re.lastIndex=0;let O;for(;O=u.re.exec(l);){let d=O[u.group!=null?u.group:O.length-1];if(!d)continue;let g=u.suffix?d+u.suffix:d,x=Math.min(o+O.index+O[0].length,n.length),Q=n.lineAt(x),X=Q.number+":"+g;s.has(X)||(s.add(X),r.push(de.widget({widget:new Ig(g,!!u.system,t),side:1}).range(Q.to)))}}}return de.set(r,!0)}function D$(i,e){function t(r){let n=i();return!n||!n.length?de.none:mU(r,n,e)}return Xt.fromClass(class{constructor(r){this.decorations=t(r)}update(r){(r.docChanged||r.viewportChanged)&&(this.decorations=t(r.view))}},{decorations:r=>r.decorations})}var tc=window.matchMedia&&window.matchMedia("only screen and (max-width: 760px)").matches;function Hn(i,e){var t=$(document.createElement("div"));return i&&t.appendTo(i),e&&t.addClass(e),t}function gU(i){return Je.transactionFilter.of(e=>{if(!e.docChanged||!e.isUserEvent("input")||!i.input)return e;let t=[],r=!1;if(e.changes.iterChanges((o,a,l,c,u)=>{let O=u.toString(),d=i.input(O);t.push({from:o,to:a,insert:d}),d!==O&&(r=!0)}),!r)return e;let n=e.annotation(Et.userEvent),s=e.annotation(Et.addToHistory);return{changes:t,selection:e.selection,effects:e.effects,scrollIntoView:e.scrollIntoView,annotations:[...n!=null?[Et.userEvent.of(n)]:[],...s!=null?[Et.addToHistory.of(s)]:[]]}})}var Ng=new mi;function q$(i){return Ng.reconfigure(gU(i))}var I$=Ze.define(),N$=Ze.define(),F$=Ze.define(),Bg=Ze.define(),B$=Ze.define(),G$=Ze.define(),Gg=Ze.define(),H$=Ze.define(),K$=at.define({create(){return De.empty},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(I$)){let r=t.value,n=[];for(let[s,o]of r.entries())if(s>=1&&s<=e.state.doc.lines){let a=e.state.doc.line(s).from;n.push(new nf(pt(o,4)).range(a))}i=De.of(n,!0)}return i}}),J$=at.define({create(){return De.empty},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(N$)){let r=t.value,n=[];for(let[s,o]of r.entries())if(s>=1&&s<=e.state.doc.lines){let a=e.state.doc.line(s).from;n.push(new sf(o).range(a))}i=De.of(n,!0)}return i}}),e1=at.define({create(){return De.empty},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(F$)){let r=t.value,n=[];for(let[s,o]of r.entries())if(s>=1&&s<=e.state.doc.lines){let a=e.state.doc.line(s).from;n.push(new of(o).range(a))}i=De.of(n,!0)}return i}}),t1=at.define({create(){return De.empty},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(Bg))if(t.value===null)i=De.empty;else{let r=t.value;if(r>=1&&r<=e.state.doc.lines){let n=e.state.doc.line(r).from,s=!1;i.between(n,n,()=>(s=!0,!1)),s?i=i.update({filter:o=>o!==n}):i=i.update({add:[xU.range(n)]})}}return i}}),Fg=at.define({create(){return De.empty},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(B$)){let r=t.value,n=[];for(let[s,o]of r.entries())if(s>=1&&s<=e.state.doc.lines){let a=e.state.doc.line(s).from;n.push(new af(s,o).range(a))}i=De.of(n,!0)}return i}}),i1=at.define({create(){return De.empty},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(G$))if(t.value===null)i=De.empty;else{let r=t.value;if(r>=1&&r<=e.state.doc.lines){let n=e.state.doc.line(r).from;i=De.of(r1.range(n))}}return i}}),nf=class extends Wt{constructor(t){super();this.hex=t}toDOM(){let t=document.createElement("span");return t.textContent=this.hex,t.style.cursor="pointer",t.title="Click to run to here",t.addEventListener("mouseenter",()=>{t.style.textDecoration="underline"}),t.addEventListener("mouseleave",()=>{t.style.textDecoration="none"}),t}eq(t){return this.hex==t.hex}},sf=class extends Wt{constructor(t){super();this.bytes=t}toDOM(){return document.createTextNode(this.bytes)}eq(t){return this.bytes==t.bytes}},of=class extends Wt{constructor(t){super();this.clock=t}toDOM(){return document.createTextNode(this.clock)}eq(t){return this.clock==t.clock}},bU=new class extends Wt{toDOM(){let i=document.createElement("span");return i.textContent="\u25CF",i.style.color="transparent",i.style.cursor="pointer",i.a Line truncated
color: #ff6666;
background-color: #330000;
padding: 4px 8px;
margin: 2px 0;
border-left: 3px solid #ff0000;
font-family: monospace;
`,t}},kU=at.define({create(){return de.none},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(Xo.showMessage)){if(t.value===null||!t.value)return de.none;if(t.value.toggle){let r=[],n=new Map;return i.between(0,e.state.doc.length,(a,l,c)=>{try{let u=e.state.doc.lineAt(l).number;c.spec.widget instanceof rc&&n.set(u,c.spec.widget.message)}catch(u){}}),n.has(t.value.line)?n.delete(t.value.line):n.set(t.value.line,t.value.msg),Array.from(n.keys()).sort((a,l)=>a-l).forEach(a=>{try{let l=e.state.doc.line(a);r.push(de.widget({widget:new rc(n.get(a)),block:!0,side:1}).range(l.to))}catch(l){}}),de.set(r,!0)}}return i},provide:i=>ae.decorations.from(i)}),Hg=class extends Nt{constructor(t){super();this.value=t}toDOM(){let t=document.createElement("div");return t.textContent=`${this.value}`,t.style.cssText=`
color: #ccccff;
background-color: #000066;
display: inline-block;
`,t.className="cm-line",t}},a1=Ze.define(),TU=at.define({create(){return de.none},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(a1)){if(t.value===null||!t.value)return de.none;let r=e.state.doc.lineAt(t.value.range.to);return de.set([de.widget({widget:new Hg(t.value.val),block:!0,side:1}).range(r.to)])}return i},provide:i=>ae.decorations.from(i)}),l1=Ze.define(),XU=de.mark({attributes:{class:"cm-error-span"}}),_U=at.define({create(){return de.none},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(l1)){if(t.value===null)return de.none;let r=[];for(let n of t.value)try{let s=e.state.doc.line(n.line),o=s.from+n.start,a=s.from+n.end;o>=s.from&&a<=s.to&&o<a&&r.push(XU.range(o,a))}catch(s){}return de.set(r,!0)}return i},provide:i=>ae.decorations.from(i)}),c1=Ze.define(),RU=de.line({attributes:{class:"highlight-lines"}}),CU=at.define({create(){return de.none},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(c1)){if(t.value===null)return de.none;let{start:r,end:n}=t.value,s=[];for(let o=r;o<=n;o++)try{let a=e.state.doc.line(o);s.push(RU.range(a.from))}catch(a){}return de.set(s)}return i!==de.none&&(e.docChanged||e.selection)?de.none:i},provide:i=>ae.decorations.from(i)}),h1={field:kU,widget:rc},nc={effect:s1,decoration:o1,field:PU},uf={effect:a1,field:TU},ff={effect:l1,field:_U},Of={effect:c1,field:CU},u1=Ze.define(),ZU=de.line({attributes:{class:"cm-traced-line"}}),EU=at.define({create(){return de.none},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(u1)){let r=[];for(let n of t.value)try{let s=e.state.doc.line(n);r.push(ZU.range(s.from))}catch(s){}return de.set(r,!0)}return i},provide:i=>ae.decorations.from(i)}),df={effect:u1,field:EU};var oc=64,d1=Ze.define(),p1=Ze.define(),Kg=at.define({create(){return new Map},update(i,e){let t=i;for(let r of e.effects)if(r.is(p1))t=new Map;else if(r.is(d1)){t===i&&(t=new Map(i));for(let n of r.value)t.set(n.id,{from:n.from,to:n.to})}if(!e.changes.empty){let r=new Map;for(let[n,s]of t)r.set(n,{from:e.changes.mapPos(s.from,-1),to:e.changes.mapPos(s.to,1)});return r}return t}}),AU=200,Jg={default:{theme:rf},6502:{isAsm:!0},z80:{isAsm:!0},jsasm:{isAsm:!0},gas:{isAsm:!0},vasm:{isAsm:!0},inform6:{theme:tf},dialog:{theme:tf,lineWrap:!0},markdown:{lineWrap:!0},fastbasic:{noGutters:!0},basic:{noGutters:!0},ecs:{theme:rf}},m1={input:null};function g1(i){m1.input=i?e=>e.toUpperCase():null}var sc=class sc{constructor(e,t){this.updateTimer=null;this.dirtylisting=!0;this.refreshDelayMsec=300;this.probe=null;this.path=e,this.mode=t}createDiv(e){var t=document.createElement("div");t.setAttribute("class","editor"),e.appendChild(t);var r=ke.getFile(this.path),n=r&&this.mode=="verilog"&&/__asm\b([\s\S]+?)\b__endasm\b/.test(r);return this.newEditor(t,r,n),this.editor.dispatch({effects:q$(m1)}),ke.getToolForFilename(this.path).startsWith("remote:")&&(this.refreshDelayMsec=1e3),t}setVisible(e){e?(this.editor.focus(),sc.tracingEnabled&&this.startTracing()):this.stopTracing()}startTracing(){!this.probe&&U.startProbing&&(this.probe=U.startProbing(),this.probe.singleFrame=!1,this.probe.clear())}stopTracing(){this.probe&&(U.stopProbing(),this.probe=null),this.editor.dispatch({effects:df.effect.of([])})}setTracingEnabled(e){sc.tracingEnabled=e,e?this.startTracing():this.stopTracing()}newEditor(e,t,r){var n=Jg[this.mode]||Jg.default,s=r||n.isAsm,o=!!n.lineWrap,a=n.theme||Jg.default.theme,l=n.useLineNumbers&&!tc;ve.embed&&(l=!1,s=!1);let c=n.noGutters||tc;var u;let O=Vg[this.mode];O?u=O.language:(console.warn("Unknown mode: "+this.mode),u=null),this.editor=new ae({parent:e,doc:t,extensions:[s?[]:Xr.of(" "),s?Zp.of((d,g)=>{let x=d.state.doc.lineAt(g).number;if(x>=0){let Q=d.state.doc.line(x);if(Q.text.trim())return d.lineIndent(Q.from)}return 0}):[],...s?[Hi.of(vy(()=>xu().tabsToSpaces))]:[],...$y(xu()),Hi.of(py),l?Yh():[],Lv(),Hi.of(Wv),nv(),pS(),Je.allowMultipleSelections.of(!0),zh(),ev(),cv(),Lh(),jh(),Mh(),QS(),Vu(),Pm({top:!0}),Hi.of(Xm),u||[],a,Dg,o?ae.lineWrapping:[],nc.field,c?[]:[lf.field,lf.gutter],s&&!c?[ic.field,ic.gutter,cf.field,cf.gutter]:[],hf.field,n1.gutter,ae.updateListener.of(d=>{for(let g of d.transactions.flatMap(x=>x.effects))if(g.is(hf.set)&&U.isRunning()&&this.runToBreakpoints(d.state),g.is(ka.runToLine)){let x=g.value;if(this.sourcefile&&this.sourcefile.line2offset){let Q=this.sourcefile.line2offset[x];Q>=0&&_o([Q])}}}),Xo.field,h1.field,ff.field,ka.field,ka.gutter,Of.field,df.field,Kg,V$(d=>{window.location.hash="asseteditor/"+encodeURIComponent(this.path)+"/"+d}),ve.embed?[]:D$(()=>{var d=ke&&ke.getToolForFilename(this.path),g=ke&&ke.platform_id;return[...Lc(d,g),...jc(d,g),...tb(d)]},(d,g)=>{if(!g){var x=b1(d);if(x){window.location.hash="#"+encodeURIComponent(x);return}}lc(d)}),Ng.of([]),ae.updateListener.of(d=>{d.docChanged&&this.editorChanged()}),uf.field,ae.updateListener.of(d=>{d.selectionSet&&this.inspectUnderCursor(d)})]}),ky(this.editor)}editorChanged(){clearTimeout(this.updateTimer),this.updateTimer=setTimeou Line truncated
`).length-1;this.editor.dispatch({changes:{from:n,insert:e}}),this.highlightLines(r-1,r+s-2)}highlightLines(e,t){let r=this.editor.state.doc.line(e+1);this.editor.dispatch({effects:[Of.effect.of({start:e+1,end:t+1}),ae.scrollIntoView(r.from,{y:"start",yMargin:100})]})}navigateToLine(e){if(e<1||e>this.editor.state.doc.lines)return;let t=this.editor.state.doc.line(e);this.editor.dispatch({selection:{anchor:t.from},effects:[Of.effect.of({start:e,end:e}),ae.scrollIntoView(t.from,{y:"center"})]}),this.editor.focus()}getValue(){return this.editor.state.doc.toString()}getPath(){return this.path}markErrors(e){this.clearErrors(),e=e.slice(0,AU);let t=new Map,r=[];for(var n of e)if(!n.path||this.path.endsWith(n.path)){var s=this.editor.state.doc.lines,o=n.line;(isNaN(o)||o<1||o>s)&&(o=1),t.set(o,n.msg),n.start!=null&&n.end!=null&&n.end>n.start&&r.push({line:o,start:n.start,end:n.end})}this.editor.dispatch({effects:[Xo.set.of(t),ff.effect.of(r.length>0?r:null)]})}clearErrors(){this.dirtylisting=!0,this.editor.dispatch({effects:[Xo.set.of(new Map),Xo.showMessage.of(null),ff.effect.of(null)]})}getSourceFile(){return this.sourcefile}updateListing(){this.clearErrors();var e=this.sourcefile.lines||[];let t=new Map,r=new Map,n=new Map;for(var s of e)if(s.offset>=0&&t.set(s.line,pt(s.offset&65535,4)),s.insns){var o=s.insns.length>9?"...":s.insns;if(r.set(s.line,o),s.iscode){if(s.cycles)n.set(s.line,s.cycles+"");else if(U.getOpcodeMetadata){var a=parseInt(s.insns.split(" ")[0],16),l=U.getOpcodeMetadata(a,s.offset);if(l&&l.minCycles){var c=l.minCycles+"";n.set(s.line,c)}}}}this.editor.dispatch({effects:[lf.set.of(t),ic.set.of(r),cf.set.of(n)]})}setTimingResult(e){if(this.sourcefile!=null){var t=new Map;for(let o of Object.keys(this.sourcefile.line2offset)){let a=this.sourcefile.line2offset[o],l=e.pc2clockrange[a];var r=l&&l.minclocks,n=l&&l.maxclocks;if(r>=0&&n>=0){var s;n==r?s=r+"":s=r+"-"+n,n==e.MAX_CLOCKS&&(s+="+"),t.set(parseInt(o),s)}}this.editor.dispatch({effects:[ic.set.of(t)]})}}setCurrentLine(e,t){var r=n=>{this.editor.dispatch({effects:[ka.set.of(n.line),nc.effect.of(n.line),...t?[ae.scrollIntoView(this.editor.state.doc.line(n.line).from,{y:"center"})]:[]]})};if(this.clearCurrentLine(t),e){if(e.line<1||e.line>this.editor.state.doc.lines)return;if(r(e),t){let s=this.editor.state.doc.line(e.line).from+(e.start||0);this.editor.dispatch({selection:{anchor:s,head:s},effects:ae.scrollIntoView(s,{y:"center"})})}this.currentDebugLine=e}}clearCurrentLine(e){if(this.currentDebugLine){if(e){let t=this.editor.state.selection.main.head;this.editor.dispatch({selection:{anchor:t,head:t}})}this.currentDebugLine=null}this.editor.dispatch({effects:[ka.set.of(null),nc.effect.of(null)]})}getActiveLine(){if(this.sourcefile){var e=hr&&hr.c;if(!e&&U.getCPUState&&!U.isRunning()&&(e=U.getCPUState()),e){var t=e&&(e.EPC||e.PC),r=this.sourcefile.findLineForOffset(t,oc);return r}}}refreshDebugState(e){var t=this.getActiveLine();!e&&(t===this.currentDebugLine||!t&&!this.currentDebugLine)||this.setCurrentLine(t,e)}refreshListing(){var e=ke.getListingForFile(this.path);e&&e.sourcefile&&e.sourcefile!==this.sourcefile&&(this.sourcefile=e.sourcefile,this.dirtylisting=!0),!(!this.sourcefile||!this.dirtylisting)&&(this.updateListing(),this.dirtylisting=!1)}refresh(e){this.refreshListing(),this.refreshDebugState(e)}tick(){this.refreshDebugState(!1),this.updateTracedLines()}updateTracedLines(){let e=this.probe;if(!e||!e.idx||!this.sourcefile)return;let t=new Set;for(let r=0;r<e.idx;r++){let n=e.buf[r];if((n&4278190080)===16777216){let s=this.sourcefile.findLineForOffset(n&65535,oc);s&&t.add(s.line)}}e.clear(),this.editor.dispatch({effects:df.effect.of(Array.from(t))})}getLine(e){return this.editor.state.doc.line(e).text}getCurrentLine(){let e=this.editor.state.selection.main.head;return this.editor.state.doc.lineAt(e).number}getCursorPC(){for(var e=this.getCurrentLine();this.sourcefile&&e>=0;){var t=this.sourcefile.line2offset[e];if(t>=0)return t;e--}return-1}undoStep(){fu(this.editor)}redoStep(){Rl(this.editor)}getBreakpointPCs(){if(this.sourcefile==null)return[];let e=[],r=this.editor.state.field(hf.field).iter();for(;r.value;){let n=this.editor.state.doc.lineAt(r.from).number,s=this.sourcefile.line2offset[n];s>=0&&e.push(s),r.next()}return e}runToBreakpoints(e){let t=this.getBreakpointPCs();t.length>0?_o(t):Ro()}};sc.tracingEnabled=!1;var Ar=sc,e0=1024,ac=class{createDiv(e){var t=document.createElement("div");return t.setAttribute("class","editor"),e.appendChild(t),this.newEditor(t),t}newEditor(e){this.disasmview=new ae({parent:e,extensions:[Lh(),jh(),Je.allowMultipleSelections.of(!0),zh(),Mh(),Vu(),j$,tf,nc.field,Je.tabSize.of(8),Je.readOnly.of(!0)]})}refresh(e){let t=hr||U.saveState(),r=t.c?t.c.PC:0,n=0,s=0,o=U.debugSymbols&&U.debugSymbols.addr2symbol||{},a=(u,O)=>{let d="",g=0;for(;g<O;){let x=u+g|0,Q=U.disassemble(x,U.readAddress.bind(U)),X="",E="";for(let F=0;F<Q.nbytes;F++)X+=pt(U.readAddress(x+F));for(;X.length<14;)X+=" ";let G=Q.line;if(o&&Q.i Line truncated
`;d+=V,x==r&&(s=n),n++,g+=Q.nbytes||1}return d};var l=r<0?r-e0:Math.max(0,r-e0);let c=a(l,r-l)+a(r,e0);if(this.disasmview.dispatch({changes:{from:0,to:this.disasmview.state.doc.length,insert:c}}),e){let u=this.disasmview.state.doc.line(s+1);this.disasmview.dispatch({selection:{anchor:u.from,head:u.from},effects:ae.scrollIntoView(u.from,{y:"center"})})}}getCursorPC(){let e=this.disasmview.state.selection.main.head,t=this.disasmview.state.doc.lineAt(e).number;if(t>=0){let n=this.disasmview.state.doc.line(t).text.trim().split(/\s+/);if(n&&n.length>=1){let s=parseInt(n[0],16);if(console.log("getCursorPC",s),s>=0)return s}}return-1}},pf=class extends ac{constructor(e){super(),this.path=e}refreshListing(){var e=ke.getListingForFile(this.path);this.assemblyfile=e&&(e.assemblyfile||e.sourcefile)}refresh(e){if(this.refreshListing(),!!this.assemblyfile){var t=this.assemblyfile.text;if(this.disasmview.dispatch({changes:{from:0,to:this.disasmview.state.doc.length,insert:t}}),!!U.saveState){var r=hr||U.saveState(),n=r.c?r.c.EPC||r.c.PC:0;if(n>=0&&this.assemblyfile){var s=this.assemblyfile.findLineForOffset(n,oc);if(s&&e){let o=this.disasmview.state.doc.line(s.line);this.disasmview.dispatch({selection:{anchor:o.from,head:o.from},effects:ae.scrollIntoView(o.from,{y:"center"})})}}}}}};function b1(i){let e=[i];try{var t=qa(ke.mainPath);t.length>0&&t!="local"&&e.push(t+"/"+i)}catch(s){}for(var r of e){var n=ke&&ke.getFile(r);if(typeof n=="string")return r}return null}function f1(i){for(var e of ib(i))if(e.editorStyle){var t=L$(e.editorStyle);if(t)return t}return null}var t0=new Map;function UU(i){let e=ke.getToolForFilename(ke.mainPath),t=Wc(e,ke.platform_id),r=Yc(e,ke.platform_id);if(!t||!r.length)return Promise.resolve(null);let n=t+":"+i;return t0.has(n)||t0.set(n,(async()=>{var s=[...r.map(u=>u+"/"+i),i];for(var o of s){var a={preload_fs:t,readshared:o,updates:[],buildsteps:[]},l=await ke.queryWorker(a),c=l&&l.output;if(c instanceof Uint8Array&&c.length>0)return new TextDecoder().decode(c)}return null})()),t0.get(n)}var Zs=class{constructor(e){this.fn=e;this.languageCompartment=new mi}createDiv(e){var t=document.createElement("div");t.setAttribute("class","editor"),e.appendChild(t);var r=f1(this.fn||this.currentPath||"")||jl();return this.view=new ae({parent:t,extensions:[Lh(),jh(),Je.allowMultipleSelections.of(!0),zh(),Mh(),Vu(),Pm({top:!0}),Hi.of(Xm),this.languageCompartment.of(r),rf,Dg,Je.readOnly.of(!0)]}),this.refresh(!1),t}setVisible(e){e&&this.refresh(!1)}setHeaderText(e){var t=f1(this.currentPath||this.fn||"")||jl();this.view.dispatch({effects:this.languageCompartment.reconfigure(t),changes:{from:0,to:this.view.state.doc.length,insert:e}})}refresh(e){var t=this.fn;if(!t){var r=window.location.hash;if(!r||!r.startsWith("#headerview/"))return;t=this.fn=decodeURIComponent(r.substring(12))}this.loadIncludeFile(t)}async loadIncludeFile(e){this.requestedFn=e;var t=b1(e);if(t){this.currentPath=t,this.setHeaderText(ke.getFile(t));return}var r=await UU(e);if(this.requestedFn===e){if(r!=null){this.currentPath=e,this.setHeaderText(r);return}this.currentPath=e,this.setHeaderText("// "+e+` was not found.
// Project include files are loaded during a build -- try building first.
// Toolchain headers are only available when the tool has a bundled filesystem.`)}}navigateToLine(e){if(!(!this.view||e<1)&&e<=this.view.state.doc.lines){let t=this.view.state.doc.line(e);this.view.dispatch({selection:{anchor:t.from},effects:[ae.scrollIntoView(t.from,{y:"center"})]}),this.view.focus()}}};function zU(i,e){let t=null;return()=>{t&&clearTimeout(t),t=setTimeout(i,e)}}var MU=30;function mf(i){return String(i).replace(/[&<>"']/g,e=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"})[e])}function LU(i){let e=i.record;if(e.source==="project"){let t=e.file;if(!t||!Se.isWindow(t))return;let r=Se.createOrShow(t);r instanceof Ar&&e.line&&r.navigateToLine(e.line)}else if(e.source==="toolchain"){let t=e.file;if(!t)return;lc(t);let r=Se.createOrShow("#headerview/"+t);r instanceof Zs&&e.line&&r.navigateToLine(e.line)}else if(e.source==="docs"){let t=e.detail||e.file||"";t&&window.open(t,"_blank")}}function x1(){bootbox.dialog({title:"Search",onEscape:!0,message:`
<div id="searchbox_form">
<input type="text" id="searchboxInput" class="form-control"
placeholder="Search symbols, files, docs"
autocomplete="off" style="margin-bottom:8px">
<div id="searchboxResults" style="max-height:340px;overflow-y:auto"></div>
</div>
`,buttons:{close:{label:"Close",className:"btn-default"}}}).one("shown.bs.modal",()=>{$("#searchboxInput").trigger("focus")});let e=$("#searchboxInput"),t=$("#searchboxResults"),r=[],n=-1,s=c=>{if(n=Math.max(-1,Math.min(c,r.length-1)),t.find("li.search-hit").each((u,O)=>{$(O).toggleClass("active",u===n)}),n>=0){let u=t[0],O=t.find("li.search-hit").eq(n);if(O.length){let d=O[0],g=u.getBoundingClientRect(),x=d.getBoundingClientRect(),Q=x.top-g.top;Q<0?u.scrollTop+=Q:Q+x.height>g.height&&(u.scrollTop+=Q+x.height-g.height)}}},o=(c=n)=>{let u=r[c];u&&(LU(u),bootbox.hideAll())},a=c=>{if(r=c||[],r.length===0){n=-1,t.html('<div class="text-muted" style="padding:8px">No matches.</div>');return}let u=$('<ul class="list-group" style="margin-bottom:0"></ul>');for(let O of r){let d=O.record,g=d.source,x=d.kind==="func"?"\u0192":d.kind==="macro"?"#":d.kind==="label"?":":d.kind==="struct"?"S":d.kind==="enum"?"E":d.kind==="text"?"\u2261":"\u2022",Q=d.file&&d.line?`${d.file}:${d.line}`:d.file||"",X=d.kind!=="text",E=$('<li class="list-group-item search-hit" style="cursor:pointer;padding:6px 10px;display:flex;align-items:center;overflow:hidden"></li>');E.html(`<span class="search-kind" style="margin-right:6px;font-weight:bold;flex:0 0 auto">${x}</span><span class="search-name" style="flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap">`+(X?`<strong>${mf(d.name)}</strong>`:`<span class="search-dumb">${mf(d.name)}</span>`)+(d.brief?` <span class="text-muted">- ${mf(d.brief)}</span>`:"")+`</span><span class="search-loc" style="flex:0 0 auto;margin-left:8px;font-style:italic;font-size:small;white-space:nowrap">${Q?mf(Q):""}</span>`),E.click(()=>{o(r.indexOf(O))}),u.append(E)}t.empty().append(u),s(0)},l=zU(async()=>{let c=e.val();if(!c){r=[],n=-1,t.empty();return}try{let u=await sw.query(c,MU);a(u)}catch(u){t.html('<div class="text-danger" style="padding:8px">Search failed.</div>')}},150);e.on("input",l),e.on("keydown",c=>{c.key==="ArrowDown"?(c.preventDefault(),s(n+1)):c.key==="ArrowUp"?(c.preventDefault(),s(n-1)):c.key==="Enter"?(c.preventDefault(),n>=0?o():l()):c.key==="Home"?(c.preventDefault(),s(0)):c.key==="End"&&(c.preventDefault(),s(r.length-1))})}var jU=800,YU=1e3,WU=16;function S1(i){return i.art?i.brev?0:7:null}var gf=/([0#]?)([x$%]|\d'h)([0-9a-f]+)(?:[;].*)?|(\d'b|0b)([01]+)/gim;function s0(i){return i.replace(/(\shex\s+)([0-9a-f]+)/ig,function(e,t,r){for(var n=t,s=0;s<r.length;s+=2)n+="0x"+r.substr(s,2)+",";return n})}function Q1(i){for(var e=[],t;t=gf.exec(i);){var r;t[4]?r=parseInt(t[5],2):t[2].startsWith("%")?r=parseInt(t[3],2):t[2].startsWith("x")||t[2].startsWith("$")||t[2].endsWith("h")?r=parseInt(t[3],16):r=parseInt(t[3]),e.push(r)}return e}function VU(i,e,t){i=s0(i);for(var r="",n,s=0,o=0,a=Math.ceil(t/4);n=gf.exec(i);)r+=i.slice(s,gf.lastIndex-n[0].length),s=gf.lastIndex,n[4]?r+=n[4]+fO(e[o++],parseInt(n[4])):n[2].startsWith("%")?r+=n[1]+n[2]+fO(e[o++],t):n[2].endsWith("h")?r+=n[1]+n[2]+pt(e[o++],parseInt(n[2])):n[2].startsWith("x")?r+=n[1]+"x"+pt(e[o++],a):n[2].startsWith("$")?r+=n[1]+"$"+pt(e[o++],a):r+=n[1]+e[o++].toString();return r+=i.slice(s),r=r.replace(/(\shex\s+)([,x0-9a-f]+)/ig,(l,c,u)=>{var O=c+u;return O=O.replace(/0x/ig,"").replace(/,/ig,""),O}),r}function o0(i,e){if(!e)return i;for(var t=0,r=0;r<e.length;r++){var n=e[r];n<0&&(n=-n-1,t^=1<<n),i&1<<r&&(t^=1<<n)}return t}function a0(i,e){var t=e[i%e.length];return[t>>3,t&7]}var DU=[[0,0,4],[8,0,0]],qU=[[0,8,12],[8,8,0],[16,8,4],[24,8,8],[32,0,12],[40,0,0],[48,0,4],[56,0,8]];function IU(i,e,t,r,n,s){for(var o=0;o<8;o++)for(var a=i[e+o]||0,l=0;l<4;l++){var c=(3-l)*s+(7-o),u=a>>l&1|(a>>l+4&1)<<1;t[n*s+r+c]=u}}function NU(i,e,t,r,n,s){for(var o=0;o<8;o++){for(var a=0,l=0;l<4;l++){var c=(3-l)*s+(7-o),u=(t[n*s+r+c]||0)&3;u&1&&(a|=1<<l),u&2&&(a|=1<<l+4)}i[e+o]=a}}function l0(i){return i.w===16&&i.h===16?qU:DU}function $1(i){return l0(i).length*8}function FU(i,e){for(var t=e.w,r=e.h,n=e.count||1,s=e.wpimg||$1(e),o=l0(e),a=[],l=0;l<n;l++){for(var c=new Array(t*r).fill(0),u=l*s,O=0;O<o.length;O++){var[d,g,x]=o[O];IU(i,u+d,c,g,x,t)}a.push(new Uint8Array(c))}return a}function BU(i,e){for(var t=e.w,r=e.h,n=e.count||i.length,s=e.wpimg||$1(e),o=l0(e),a=new Array(s*n).fill(0),l=0;l<n;l++)for(var c=i[l]||new Uint8Array(t*r),u=l*s,O=0;O<o.length;O++){var[d,g,x]=o[O];NU(a,u+d,c,g,x,t)}return a}function GU(i,e){if(e.pacstrip)return FU(i,e);var t=e.w,r=e.h,n=e.count||1,s=e.bpp||1,o=e.np||1,a=e.bpw||8,l=e.sl||Math.ceil(t*s/a),c=(1<<s)-1,u=e.pofs||l*r*n,O=e.skip||0,d=e.wpimg||l*r,g=l;e.il&&(d=l,g=l*n);for(var x=[],Q=0;Q<n;Q++){for(var X=[],E=0;E<r;E++)for(var G=e.flip?r-1-E:E,V=d*Q+G*g,F=0,j=0;j<t;j++){var p=0,D=o0(V,e.remap);e.reindex&&([D,F]=a0(j,e.reindex),D+=V);for(var B=0;B<o;B++){var fe=i[D+B*u+O];p|=((e.brev?fe>>a-F-s:fe>>F)&c)<<B*s}X.push(p),F+=s,F>=a&&!e.reindex&&(V+=1,F=0)}x.push(new Uint8Array(X))}return x}function P1(i){var e=i.count||1,t=i.bpp||1,r=i.np||1,n=i.bpw||8,s=i.sl||Math.ceil(i.w*t/n),o=i.pofs||s*i.h*e,a=i.skipLine truncated
`&&t++;return t}function X1(i,e){for(var t=/[/;][*;]([{].+[}])[*;][/;]/g,r=[],n;n=t.exec(i);){var s=n.index+n[0].length,o;e?o=i.indexOf("end",s):n[0].startsWith(";;")?(o=i.indexOf(";;",s),o==i.indexOf(";;{",s)&&(o=-1)):o=i.indexOf(";",s);var a=v1(i,n.index),l=n[0],c=o>=0?v1(i,o):"???";if(o<0){var u=e?'"end"':n[0].startsWith(";;")?'";;"':'";"';r.push({header:l,startline:a,endline:c,error:`No closing ${u} found after asset header`})}else if(o<=s)r.push({header:l,startline:a,endline:c,error:"Empty data block after asset header"});else try{var O=n[1].replace(/([A-Za-z]+):/g,'"$1":'),d=JSON.parse(O),g=/#embed\s+"(.+?)"/.exec(i.substring(s,o)),x=g?g[1]:void 0;r.push({header:l,startline:a,endline:c,fmt:d,start:s,end:o,embedFile:x})}catch(Q){r.push({header:l,startline:a,endline:c,error:`Invalid asset format: ${Q.message}`})}}return r}function _1(i,e,t){if(t(e))return e;var r=i.lastIndexOf("/");if(r>=0){var n=i.substring(0,r+1)+e;if(t(n))return n}return null}function HU(i,e){if(e.destfmt&&(e=e.destfmt),e.pacstrip)return BU(i,e);var t=e.w,r=e.h,n=e.count||1,s=e.bpp||1,o=e.np||1,a=e.bpw||8,l=e.sl||Math.ceil(e.w*s/a),c=(1<<s)-1,u=e.pofs||l*r*n,O=e.skip||0,d=e.wpimg||l*r,g=l;e.il&&(d=l,g=l*n);var x=e.il?g*r:d*n,Q;o>0&&e.sl?Q=new Uint8Array(x):a<=8?Q=new Uint8Array(x*o):Q=new Uint32Array(x*o);for(var X=0;X<n;X++)for(var E=i[X],G=0,V=0;V<r;V++)for(var F=e.flip?r-1-V:V,j=X*d+F*g,p=0,D=0;D<t;D++){var B=E[G++],fe=o0(j,e.remap);e.reindex&&([fe,p]=a0(D,e.reindex),fe+=j);for(var Ae=0;Ae<o;Ae++){var Te=B>>Ae*s&c;Q[fe+Ae*u+O]|=e.brev?Te<<a-p-s:Te<<p}p+=s,p>=a&&!e.reindex&&(j+=1,p=0)}return Q}function y1(i,e,t,r,n,s,o){for(var a=[],l=0;l<i.length;l++){var c=i[l],u=4278190080;u|=(c>>e&(1<<t)-1)<<8-t,u|=(c>>r&(1<<n)-1)<<16-n,u|=(c>>s&(1<<o)-1)<<24-o,a.push(u)}return a}function KU(i){var e=(i>>0&1)*33+(i>>1&1)*71+(i>>2&1)*151,t=(i>>3&1)*33+(i>>4&1)*71+(i>>5&1)*151,r=(i>>6&1)*81+(i>>7&1)*174;return 4278190080|r<<16|t<<8|e}function JU(i){var e=i.pal;if(typeof e=="number"){var t=Math.floor(Math.abs(e/100)%10),r=Math.floor(Math.abs(e/10)%10),n=Math.floor(Math.abs(e)%10);return 1<<t+r+n}else{if(e==="pacman")return 256;var s=R1[e];if(s)return s.length;throw new Error("No palette named "+e)}}function w1(i,e){var t=e.pal,r;if(typeof t=="number"){var n=Math.floor(Math.abs(t/100)%10),s=Math.floor(Math.abs(t/10)%10),o=Math.floor(Math.abs(t)%10);t>=0?r=y1(i,0,n,n,s,n+s,o):r=y1(i,n+s,o,n,s,0,n)}else if(t==="pacman"){r=[];for(var a=0;a<i.length;a++)r.push(KU(i[a]))}else{var l=R1[t];if(l)r=new Uint32Array(i).map(c=>l[c&l.length-1]|4278190080);else throw new Error("No palette named "+t)}return r}var R1={gb:[13686916,8890444,5401396,2961698],nes:[5395026,11796480,10485760,11599933,7602281,91,95,6208,12048,543240,26368,1196544,7153664,0,0,0,12899815,16728064,14421538,16729963,14090399,6818519,6588,21681,27227,35843,43776,2918400,10777088,0,0,0,16316664,16755516,16742785,16735173,16730354,14633471,4681215,46327,57599,58229,259115,7911470,15065624,7895160,0,0,16777215,16773822,16300216,16300248,16758527,16761855,13095423,10148607,8973816,8650717,12122296,16119980,16777136,16308472,0,0],ap2lores:[0,16711935,127,8323199,32512,8355711,191,255,12549888,16760576,12566463,16744319,65280,16776960,49023,16777215],vcs:[0,0,4210752,4210752,7105644,7105644,9474192,9474192,11579568,11579568,13158600,13158600,14474460,14474460,16053492,16053492,17476,17476,1074276,1074276,2393220,2393220,3448992,3448992,4241592,4241592,5296336,5296336,6088936,6088936,6880508,6880508,10352,10352,1328260,1328260,2645144,2645144,3963052,3963052,5016764,5016764,6070476,6070476,6862044,6862044,7915756,7915756,6276,6276,1586328,1586328,3166380,3166380,4745408,4745408,6062288,6062288,7378144,7378144,8431852,8431852,9747708,9747708,136,136,2105500,2105500,3947696,3947696,5789888,5789888,7368912,7368912,8947936,8947936,10526956,10526956,11842812,11842812,6029432,6029432,7610508,7610508,8928416,8928416,10246320,10246320,11563200,11563200,12616912,12616912,13671644,13671644,14725356,14725356,7864392,7864392,9445472,9445472,10763384,10763384,12081292,12081292,13398176,13398176,14451892,14451892,15506628,15506628,16560340,16560340,8650772,8650772,9969712,9969712,11287628,11287628,12605544,12605544,13660284,13660284,14715028,14715028,15507624,15507624,16561340,16561340,8912896,8912896,10231836,10231836,11550776,11550776,12606544,12606544,13661288,13661288,14716028,14716028,15508624,15508624,16562340,16562340,8132608,8132608,9451548,9451548,11031608,11031608,12349520,12349520,13404264,13404264,14457980,14457980,15512720,15512720,16566436,16566436,6040576,6040576,7883804,7883804,9463864,9463864,11306064,11306064,12622952,12622952,13939836,13939836,15256720,15256720,16572580,16572580,2898944,2898944,4742172,4742172,6585400,6585400,8428624,8428624,9745512,9745512,11325564,11325564,12641424,12641424,13958308,13958308,15360,15360,2120736,2120736,4226112,4226112,6069340,6069340,7648372,7648372,9228428,9228428,10806436,10806436,12123320,12123320,14356,14356,1858612,1858612,3701840,3701840,5281900,528190 Line truncated
`+s),n+=`
`+this.opToString(l,c,g))}),"X: "+t+" Y: "+r+" "+n}refresh(){this.tick(),this.datau32.fill(tn)}tick(){super.tick(),this.drawImage()}drawImage(){this.ctx.putImageData(this.imageData,0,0)}clear(){this.datau32.fill(tn)}},Cf=class extends Rf{createDiv(e){return this.createCanvas(e,256,256)}initCanvas(){super.initCanvas(),this.canvas.onclick=e=>{var t=Ac(this.canvas,e),r=Math.floor(t.x)+Math.floor(t.y)*256,n=-1,s=-1;this.redraw((o,a)=>{s<0&&n>=0&&a==r&&(s=n),o==16777216&&(n=a)}),s>=0&&_o([s])}}clear(){for(var e=0;e<=65535;e++){var t=U.readAddress(e),r=t>>2|t&31;r|=r<<8|r<<16,this.datau32[e]=r|tn}}drawEvent(e,t,r,n){var s=this.getOpRGB(e,t);if(s){var o=t&255,a=t>>8&255,l=this.datau32[t&65535];l=l|s|tn,this.datau32[t&65535]=l}}getTooltipText(e,t){var r=(e&255)+(t<<8),n="",s=-1,o={},a=null,l=[];return this.redraw((c,u,O,d,g,x)=>{switch(c){case 16777216:s=u,a=this.addr2symbol(u)||a;break;case 167772160:l.push(a);break;case 184549376:a=l.pop();break}var Q=c|s;u==r&&!o[Q]&&(n==""&&a&&(n+=`
`+a),n+=`
PC `+this.addr2str(s)+" "+this.opToString(c,null,x),o[Q]=1)}),this.addr2str(r)+n}},u0=class extends Rf{initCanvas(){super.initCanvas(),this.canvas.onclick=e=>{var t=Ac(this.canvas,e),r=Math.floor(t.x),n=Math.floor(t.y),s=this.getOpAtPos(t.x,t.y,16777216);s&&(kn("toline"),U.runEval(()=>{let o=U.getRasterScanline&&U.getRasterScanline()>=n;return o&&U.getRasterLineClock?o&&U.getRasterLineClock()>r:o}))}}drawEvent(e,t,r,n){var s=this.getOpRGB(e,t);if(s){var o=r+n*this.canvas.width,a=s|tn;this.datau32[o]|=a}}drawImage(){let e=tn;for(let t=0;t<this.datau32.length;t++)this.datau32[t]==tn?this.datau32[t]=e:e=this.datau32[t];super.drawImage()}},Zf=class extends u0{constructor(){super(...arguments);this.interrupt=0;this.rgb=0;this.lastpc=0}drawEvent(t,r,n,s){var o=n+s*this.canvas.width;if(t==134217728&&(this.interrupt=1),this.interrupt==1&&t==167772160&&(this.interrupt=r),this.interrupt>1&&this.sp>this.interrupt&&(this.interrupt=0),t==318767104&&(this.rgb|=47),t==385875968&&(this.rgb|=16256),t==352321536&&(this.rgb|=2047872),t==335544320&&(this.rgb|=7936),t==520093696&&(this.rgb=32768),t==150994944||t==402653184)this.datau32[o]=4279176975;else{let a=this.rgb;if(t==16777216){let l=this.sp&15;l>=8&&(l=16-l),Math.abs(this.lastpc)-r>16&&(l+=1),Math.abs(this.lastpc)-r>256&&(l+=1),a=this.rgb=526344*l+2105376,this.lastpc=r}this.interrupt&&(a|=8388672),this.datau32[o]==tn&&(this.datau32[o]=a|tn)}}},Ef=class extends Es{constructor(){super(...arguments);this.recreateOnResize=!0}createDiv(t){return this.vlist=new Eo(t),this.vlist.create(t,this.cyclesPerLine*this.totalScanlines,this.getMemoryLineAt.bind(this)),this.vlist.maindiv}getMemoryLineAt(t){var r="",n="seg_data",s=this.dumplines&&this.dumplines[t];if(s!=null){var o=s.info.join(", ");r="("+pn(s.row,4)+", "+pn(s.col,4)+") "+Da(s.asm||"",20)+o,o.indexOf("Write ")>=0&&(n="seg_io")}return{text:r,clas:n}}refresh(){this.tick()}tick(){let t=U instanceof bO||U instanceof gO;this.dumplines={},this.redraw((r,n,s,o,a,l)=>{t&&(a>>=2);var c=this.dumplines[a];switch(c==null&&(c={op:r,addr:n,row:o,col:s,asm:null,info:[]},this.dumplines[a]=c),r){case 16777216:if(U.disassemble){var u=U.disassemble(n,U.readAddress.bind(U));c.asm=u&&u.line}break;default:var O=this.opToString(r,n,l);O!=""&&c.info.push(O);break}}),this.vlist.refresh()}},Af=class extends Es{constructor(){super(...arguments);this.recreateOnResize=!0}createDiv(t){return this.vlist=new Eo(t),this.vlist.create(t,this.totalScanlines,this.getMemoryLineAt.bind(this)),this.vlist.maindiv}getMemoryLineAt(t){for(var r=pn(t+"",3)+" ",n="seg_code",s=this.dumplines&&this.dumplines[t]||[],o=Math.round(this.cyclesPerLine/3.3),a=0;a<this.cyclesPerLine;a++){var l=s[a];if(l!==void 0){var c=l&65535,u=u&tn;if(u==16777216)r+=",";else{var O=pt(c);r+=O,a+=O.length-1}}else r+=a==o?"|":"."}return s[-1]&&(r+=" "+s[-1]),{text:r,clas:n}}refresh(){this.tick()}tick(){let t=U instanceof bO||U instanceof gO;this.dumplines={},this.redraw((r,n,s,o,a,l)=>{var c=this.dumplines[o];switch(c==null&&(this.dumplines[o]=c=[]),r){case 16777216:var u=U.debugSymbols.addr2symbol[n];u&&(c[-1]=u);break;case 335544320:case 352321536:case 369098752:case 385875968:c[s]=r|n;break}}),this.vlist.refresh()}},Uf=class extends Es{constructor(){super(...arguments);this.recreateOnResize=!0;this.cumulativeData=!0}createDiv(t){return U.debugSymbols&&U.debugSymbols.symbolmap?this.keys=Array.from(Object.keys(U.debugSymbols.symbolmap).filter(r=>!E1(r))):this.keys=["no symbols defined"],this.vlist=new Eo(t),this.vlist.create(t,this.keys.length+1,this.getMemoryLineAt.bind(this)),this.vlist.maindiv}getMemoryLineAt(t){if(t==0)return{text:pn("Symbol",35)+pn("Reads",8)+pn("Writes",8)};var r=this.keys[t-1],n=this.dumplines&&this.dumplines[r];function s(l){var c=n[l]|0;return pn(c?c.toString():"",8)}var o,a;return n!=null?(o=pn(r,35)+s(301989888)+s(318767104),n[16777216]?a="seg_code":n[335544320]||n[352321536]?a="seg_io":a="seg_data"):(o=pn(r,35),a="seg_unknown"),{text:o,clas:a}}refresh(){this.tick()}tick(){this.dumplines={},this.redraw((t,r,n,s,o,a)=>{var l=U.debugSymbols.addr2symbol[r];if(l!=null){var c=this.dumplines[l];c==null&&(c={},this.dumplines[l]=c),c[t]=(c[t]|0)+1}}),this.vlist.refresh(),this.probe&&this.probe.clear()}};var pc=256,A1=100,U1=!1,zf=class i{constructor(e,t){this.expanded=!1;this.parent=e,this.name=t,this.children=new Map,this.level=e?e.level+1:-1,this.view=e?e.view:null}getDiv(){return this._div==null&&(this._div=document.createElement("div"),this._div.classList.add("vertical-scroll"),this._div.classList.add("tree-content"),this._header=document.createElement("div"),this._header.classList.add("tree-header"),this._header.classList.add("tree-level-"+this.level),this._header.append(this.name),this._inline=document.createElement("span"),this._inline.classList.add("tree-value"),this._header.append(this._inline),this._div.append(this._header),this.parent._content.append(this._div),this._header.onclick=e=>{this.toggleExpanded()}),this.expanded&&this._content==null?(this._content=d Line truncated
`,await aP(i),ve.newfile?!r&&!t?Ke('No build tool for "'+i+'" on this platform; project will not build.'):r?OP(!0,!0):$i("No skeleton file for "+t+" on this platform; using blank file."):$i('Could not find file "'+i+'"<br><br>Creating new '+(r?t:"blank")+" file."),delete ve.newfile,Hf()}}function X0(i){if(i=="/")ve={repo:"/"};else if(i.indexOf("://")>=0){var e=Al(i);e&&(ve={repo:e.repopath})}else ve.platform=Ue,ve.file=i;yo()}async function F5(i){var e=vO(U.getToolForFilename(i));try{return await $.get("presets/"+Mi(Ue)+"/skeleton."+e,"text")}catch(t){return console.log(t+""),null}}function _0(i){return i.indexOf(" ")>=0?(Ke("No spaces in filenames, please."),!1):!0}async function B5(i){var e=Mi(Ue),t={},r=[];for(var n of i){var s=U.getToolForFilename("test"+n);t[s]||(t[s]=[],r.push(s)),t[s].push(n)}var o=r.map(u=>$.ajax({url:"presets/"+e+"/skeleton."+vO(u),type:"HEAD"}).then(()=>u,()=>null)),a=await Promise.all(o),l=[];for(var c of a)c!=null&&l.push({tool:c,extensions:t[c]});return l}async function G5(i){var e=await B5(U.getDefaultExtensions()),t,r;return e.length===0?(t=U.getDefaultExtensions(),r=t.join(" ")):(t=e.reduce((n,s)=>n.concat(s.extensions),[]),r=e.map(n=>n.extensions.join(" ")).join("<br>")),bootbox.prompt({title:"Enter the name of your new main source file.<br><br><span class='dialog-help'>"+r+"</span>",placeholder:"newfile"+t[0],callback:n=>{if(n&&n.trim().length>0){if(!_0(n))return;n.indexOf(".")<0&&(n+=t[0]);var s=n;ve.newfile="1",X0(s)}}}),!0}function H5(i){let e=$('<input type="file" multiple accept="*" style="display:none">'),t=e[0];e.change(r=>{K5(t.files)}),e.click()}function K5(i){console.log(i);var e=0;function t(){var r=i[e++];if(!r)console.log("Done uploading",e),e>2?($i("Files uploaded."),setTimeout(wc,1e3)):(ve.file=i[0].name,bootbox.confirm({message:"Open '"+zo.sanitize(ve.file)+"' as main project file?",buttons:{confirm:{label:"Open As New Project"},cancel:{label:"Include/Link With Project Later"}},callback:o=>{o?yo():setTimeout(wc,1e3)}}));else{var n=r.name,s=new FileReader;s.onload=function(o){var a=o.target.result,l=new Uint8Array(a);Js(n,l)||(l=Cc(l).replace(`\r
`,`
`)),Se.updateFile(n,l),console.log("Uploaded "+n+" "+l.length+" bytes"),t()},s.readAsArrayBuffer(r)}}i&&t()}async function J5(i){var e=window.showDirectoryPicker;e||Ke("This browser can't open local files on your computer, yet. Try Chrome.");var t=await e(),r=t.name,n="__localfs__"+r,s={handle:t},o=k0.createInstance({name:n,version:2});await o.setItem(n,s),ve={localfs:r},yo(!0)}async function ez(i){return new Promise((e,t)=>{bootbox.prompt(zo.sanitize(i),r=>{e(r)})})}async function tz(i){let e={mode:"readwrite"};var t="__localfs__"+i,r=k0.createInstance({name:t,version:2}),n=await r.getItem(t),s=n.handle;console.log(n,s);var o=await s.queryPermission(e);if(console.log(o),o!=="granted"&&(await ez("Request permissions to access filesystem?"),o=await s.requestPermission(e)),o!=="granted"){Ke("Could not get permission to access filesystem.");return}let a={};return{getFileData:async l=>{console.log("getFileData",l);let u=await(await s.getFileHandle(l,{create:!1})).getFile(),O=await(Js(l)?u.arrayBuffer():u.text());return O instanceof ArrayBuffer?new Uint8Array(O):O},setFileData:async(l,c)=>{a[l]=Date.now();let O=await(await s.getFileHandle(l,{create:!0})).createWritable();await O.write(c),await O.close()},onFileSystemUpdate:l=>{if(typeof window.FileSystemObserver=="undefined")return;new window.FileSystemObserver((u,O)=>{for(let d of u)if(d.changedHandle){let g=d.changedHandle.name;if(Date.now()-(a[g]||0)<2e3)continue;l(g)}}).observe(s,{recursive:!0})}}}function oi(){return pi(ke.mainPath)}function Iy(){return pi(Se.getActiveID())}function iz(i){var e=Se.getActive(),t=Se.getActiveID(),r=e&&e.setData&&!e.setText;if(e&&(e.setText||e.setData)){var n="presets/"+Mi(Ue)+"/"+t;Ia(n,s=>{if(s==null){Ft?Ke("Can only revert built-in examples. If you want to revert all files, You can pull from the repository."):Ke("Can only revert built-in examples.");return}bootbox.confirm("Reset '"+zo.sanitize(t)+"' to default?",o=>{o&&(r?(e.setData(s),ke.updateFile(t,s)):e.setText(s))})},r?"arraybuffer":"text")}else Ke("Cannot revert the active window. Please choose a text file.")}function rz(i){var e=Se.getActive();if(e&&e.getPath){var t=Se.getActiveID();bootbox.confirm("Delete '"+zo.sanitize(t)+"'?",r=>{r&&Ur.removeItem(t).then(()=>{ve.file==t?(Jn.unsetLastPreset(),yo()):(wc(),$i("Deleted "+t))})})}else Ke("Cannot delete the active window.")}function nz(i){var e=Se.getActive();if(e&&e.getPath&&ke.getFile(e.getPath())){var t=Se.getActiveID();bootbox.prompt({title:"Rename '"+zo.sanitize(t)+"' to?",value:t,callback:r=>{var n=ke.getFile(e.getPath());if(r&&r!=t&&n){if(!_0(r))return;Ur.removeItem(t).then(()=>Ur.setItem(r,n)).then(()=>{wc(),alert("Renamed "+t+" to "+r),t==ke.mainPath&&X0(r)})}}})}else Ke("Cannot rename the active window.")}function sz(i){let e={},t,r=U.getPresets?U.getPresets():[];for(var n=0;n<r.length;n++){var s=r[n],o=s.chapter?s.chapter+". "+s.name:s.name,a=s.id==ke.mainPath;s.category?t=$("<optgroup />").attr("label","Examples: "+s.category).appendTo(i):t||(t=$("<optgroup />").attr("label","Examples").appendTo(i)),t.append($("<option />").val(s.id).text(o).attr("selected",a?"selected":null)),a&&(Df=s),e[s.id]=o}return e}function oz(i){if(Ni&&!Ea){var e=0,t=xo();if(t){let n=$("<optgroup />").attr("label","Repositories").appendTo(i);for(let s in t){var r=t[s];r.platform_id&&Mi(r.platform_id)==Mi(Ue)&&n.append($("<option />").val(r.url).text(r.url.substring(r.url.indexOf("/"))))}}}}async function lP(i,e,t,r){let n=await Ur.keys();n||(n=[]);let s;for(var o=0;o<n.length;o++){let a=n[o];if(a.startsWith(t)&&!r[a]){s||(s=$("<optgroup />").attr("label",e).appendTo(i));let l=a.substring(t.length);s.append($("<option />").val(a).text(l).attr("selected",a==ke.mainPath?"selected":null))}}}function cP(i){i.css("visibility","visible");var e=ke.mainPath;i.val()!=e&&i.append($("<option />").val(e).text(e).attr("selected","selected"))}async function wc(){var i=$("#preset_select").empty();if(Ft)i.append($("<option />").val("/").text("Leave Repository")),$("#repo_name").text(pi(Ft)+"/").show(),await lP(i,Ft,"",{}),cP(i);else{oz(i);var e=sz(i);await lP(i,"Local Files","",e),cP(i)}i.off("change").change(function(t){X0($(this).val().toString())})}function az(i){var e=$("<p/>");if(i.path!=null){var t=i.line?i.label?`(${i.path} @ ${i.label})`:`(${i.path}:${i.line})`:`(${i.path})`,r=$("<a/>").text(t),n=i.path;n==oi()&&(n=ke.mainPath),Se.isWindow(n)&&r.click(s=>{var o=Se.createOrShow(n);o instanceof Ar&&o.navigateToLine(i.line)}),e.append(r),e.append("&nbsp;")}return e.append($("<span/>").text(i.msg)),e}function dP(){$("#error_alert").hide(),T0=!1}function R0(i,e){var t=$("#error_alert_msg").empty();for(var r of i.slice(0,10))t.append(az(r));$("#error_alert").show(),T0=e}function pP(i,e){if(e!=null){var t={msg:e,line:0};i instanceof mO&&i.$loc&&(t=Object.create(i.$loc),t.msg=e,console.log(t)),R0([t],!0)}}async function lz(i){if("uppercaseOnly"in i&&g1(i.uppercaseOnly),"errors"in i&&i.errors.length>0)vc.addClass("has-errors"),Se.setErrors(i.errors), Line truncated
`),e.SP&&(t+="c.SP < 0x"+pt(e.SP)+`
`),e.HL&&(t+=`c.HL == 0x4000
`),U.readAddress&&(t+=`this.readAddress(0x1234) == 0x0
`),U.readVRAMAddress&&(t+=`this.readVRAMAddress(0x1234) != 0x80
`),U.getRasterScanline&&(t+=`this.getRasterScanline() > 222
`),t}function $z(i){var e=new Function("c","return ("+i+");").bind(U);kn(),U.runEval(e),fP=i}function xP(){U.isRunning()?(Se.tick(),qf=!1):qf||(Se.tick(),qf=!0),setTimeout(xP,100)}function Gf(i){U.setFrameRate(i),i>.01?$("#fps_label").text(i.toFixed(2)):$("#fps_label").text("1/"+Math.round(1/i))}function Pz(){var i=U.getFrameRate();i=i/2,i>1e-5&&Gf(i)}function kz(){var i=U.getFrameRate();i=Math.min(60,i*2),Gf(i)}function Tz(){Gf(60/65536)}function Xz(){es(),Gf(60)}function _z(){Se.refresh(!1);var i=Se.getActive();if(i.getSourceFile&&i.setTimingResult){var e=U.newCodeAnalyzer();e.showLoopTimingForPC(0),i.setTimingResult(e)}}function Z0(){Za&&(U.setRecorder(null),$("#dbg_record").removeClass("btn_recording"),$("#replaydiv").hide(),C0(),Za=!1)}function SP(){Za&&Ii.reset()}function vP(){Ii.reset(),U.setRecorder(Ii),$("#dbg_record").addClass("btn_recording"),$("#replaydiv").show(),Za=!0}function Rz(){Za?Z0():vP()}function Cz(){var i=!Ar.tracingEnabled;$("#dbg_tracelines").toggleClass("btn_active",i);var e=Se.getActive();e instanceof Ar?e.setTracingEnabled(i):Ar.tracingEnabled=i}function nn(i,e,t){var r=Se.getActive();r&&r.insertLinesBefore?bootbox.prompt({title:"Add "+zo.sanitize(i)+" File to Project",value:"filename"+zo.sanitize(e),callback:n=>{if(n&&n.trim().length>0){if(!_0(n))return;var s=n,o=`
`+t(n)+`
`;ke.loadFiles([s]).then(a=>{a&&a.length?Ke(n+" already exists; including anyway"):ke.updateFile(s,`
`),r.insertLinesBefore(o),Ca()})}}}):Ke("Can't insert text in this window -- switch back to main file")}function Zz(){var i=oi(),e=U.getToolForFilename(i);i.endsWith(".c")||e=="sdcc"||e=="cc65"||e=="cmoc"||e=="smlrc"?nn("Header",".h",t=>'#include "'+t+'"'):e=="dasm"||e=="zmac"?nn("Include",".inc",t=>' include "'+t+'"'):e=="ca65"||e=="sdasz80"||e=="vasm"||e=="armips"?nn("Include",".inc",t=>' .include "'+t+'"'):e=="verilator"?nn("Verilog",".v",t=>'`include "'+t+'"'):e=="wiz"?nn("Include",".wiz",t=>'import "'+t+'";'):e=="ecs"?nn("Include",".ecs",t=>'import "'+t+'"'):e=="acme"?nn("Include",".acme",t=>'!src "'+t+'"'):e=="xa"?nn("Include",".xa",t=>'#include "'+t+'"'):e=="dialog"?nn("Include",".dg",t=>'%% #include "'+t+'"'):Ke("Can't add include file to this project type ("+e+")")}function Ez(){var i=oi(),e=U.getToolForFilename(i);i.endsWith(".c")||e=="sdcc"||e=="cc65"||e=="cmoc"||e=="smlrc"?nn("Linked C (or .s)",".c",t=>'//#link "'+t+'"'):i.endsWith("asm")||i.endsWith(".s")||e=="ca65"||e=="lwasm"?nn("Linked ASM",".inc",t=>';#link "'+t+'"'):Ke("Can't add linked file to this project type ("+e+")")}function Az(){if(Vt=new zc($("#toolbar")[0],null),Vt.grp.prop("id","run_bar"),Vt.add("ctrl+alt+r","Reset","glyphicon-refresh",vz).prop("id","dbg_reset"),Vt.add("ctrl+alt+,","Pause","glyphicon-pause",uz).prop("id","dbg_pause"),Vt.add("ctrl+alt+.","Resume","glyphicon-play",gP).prop("id","dbg_go"),U.restartAtPC&&Vt.add("ctrl+alt+/","Restart at Cursor","glyphicon-play-circle",gz).prop("id","dbg_restartatline"),Vt.newGroup(),Vt.grp.prop("id","debug_bar"),U.runEval&&Vt.add("ctrl+alt+e","Reset and Debug","glyphicon-fast-backward",yz).prop("id","dbg_restart"),U.stepBack&&Vt.add("ctrl+alt+b","Step Backwards","glyphicon-step-backward",Sz).prop("id","dbg_stepback"),U.step&&Vt.add("ctrl+alt+s","Single Step","glyphicon-step-forward",fz).prop("id","dbg_step"),U.stepOver&&Vt.add("ctrl+alt+t","Step Over","glyphicon-hand-right",Oz).prop("id","dbg_stepover"),U.runUntilReturn&&Vt.add("ctrl+alt+o","Step Out of Subroutine","glyphicon-hand-up",xz).prop("id","dbg_stepout"),U.runToVsync&&Vt.add("ctrl+alt+n","Next Frame/Interrupt","glyphicon-forward",mz).prop("id","dbg_tovsync"),(U.runEval||U.runToPC)&&!Ue.startsWith("verilog")&&Vt.add("ctrl+alt+l","Run To Line","glyphicon-save",bz).prop("id","dbg_toline"),Vt.newGroup(),Vt.grp.prop("id","xtra_bar"),Vt.add("shift+ctrl+/","Search","glyphicon-search",x1).prop("id","dbg_search"),$(".dropdown-menu").collapse({toggle:!1}),$("#item_new_file").click(G5),$("#item_upload_file").click(H5),$("#item_open_directory").click(J5),$("#item_github_login").click(Ny),$("#item_github_logout").click(Fy),$("#item_github_import").click(By),$("#item_github_publish").click(Gy),$("#item_github_push").click(Hy),$("#item_github_pull").click(Ky),$("#item_repo_delete").click(ew),$("#item_share_file").click(zy),$("#item_reset_file").click(iz),$("#item_rename_file").click(nz),$("#item_delete_file").click(rz),U.runEval?$("#item_debug_expr").click(wz).show():$("#item_debug_expr").hide(),$("#item_download_rom").click(Ly),$("#item_download_file").click(jy),$("#item_download_zip").click(Wy),U.getDebugSymbolFile?$("#item_download_sym").click(Vy):$("#item_download_sym").hide(),$("#item_download_allzip").click(Dy),$("#item_record_video").click(qy),rm()?$("#item_export_cassette").click(My):$("#item_export_cassette").hide(),U.setFrameRate&&U.getFrameRate&&($("#dbg_slower").click(Pz),$("#dbg_faster").click(kz),$("#dbg_slowest").click(Tz),$("#dbg_fastest").click(Xz)),$("#item_addfile_include").click(Zz),$("#item_addfile_link").click(Ez),$("#item_request_persist").click(()=>OP(!0,!1)),$("#item_settings").click(Ty),$("#item_keyboard_shortcuts").click(zz),$("#item_asset_editor_help").click(Mz),xP(),U.newCodeAnalyzer&&Vt.add(null,"Analyze CPU Timing","glyphicon-time",_z),U.startProbing&&Vt.add(null,"Highlight Executed Lines","glyphicon-fire",Cz).prop("id","dbg_tracelines"),U.setRecorder&&U.advance&&Lz(),U.showHelp){let{li:r,a:n}=w0("help__"+Ue,v0+" Help");$("#help_menu").append(r),$(n).click(s=>{s.preventDefault(),window.open(U.showHelp(),"_8bws_help")})}let i=U.getToolForFilename(oi()),e=i&&gn(i),t=e==null?void 0:e.helpURL;if(t){let r=i+" Help";e.version&&(r+=" ("+e.version+")");let{li:n,a:s}=w0("help__"+i,r);$("#help_menu").append(n),$(s).click(o=>{o.preventDefault(),window.open(t,"_8bws_help")})}$("#item_tool_versions").click(Uz)}function Uz(){let i=(t,r,n)=>`<tr><td>${t}</td><td>${r}</td><td>${n}</td></tr>`,e=Object.values(Ba).filter(t=>t.wasmModule&&t.version).sort((t,r)=>t.name.localeCompare(r.name));bootbox.dialog({title:"Toolchain Versions",onEscape:!0,message:`
<table class="help">
<tr><th>Tool</th><th>Kind</th><th>Version</th></tr>
${e.map(t=>{var r;return i(t.name,t.kind,(r=t.version)!=null?r:"?")}).join(`
`)}
</table>`})}function zz(){let i=/Mac|iPhone|iPad/.test(navigator.platform),e=i?"&#8984;":"Ctrl",t=i?"&#8997;":"Alt",r=i?"&#8679;":"Shift",n=(s,o)=>`<tr><td><kbd>${s}</kbd></td><td>${o}</td></tr>`;bootbox.dialog({title:"Keyboard shortcuts",onEscape:!0,message:`
<table class="help">
<tr><th colspan="2">Custom</th></tr>
${n(`${e}+${r}+F`,"Search symbols, files, and docs")}
${n(`${r}+${t}+F`,"Format document, or selected range(s)")}
${n("Tab","Insert to next tab stop, or indent selected range(s)")}
${n(`${r}+Tab`,"Outdent line(s) or selected range(s)")}
${n("Enter","Insert newline, keep cursor at same column pos")}
<tr><th colspan="2">Standard</th></tr>
<tr>
<td>Built-in</td>
<td>
Included CodeMirror shortcuts:<br>
<a target="_blank" href="https://codemirror.net/docs/ref/#commands.defaultKeymap">defaultKeymap</a>,
<a target="_blank" href="https://codemirror.net/docs/ref/#commands.standardKeymap">standardKeymap</a>,
<a target="_blank" href="https://codemirror.net/docs/ref/#commands.historyKeymap">historyKeymap</a>,
<a target="_blank" href="https://codemirror.net/docs/ref/#search.searchKeymap">searchKeymap</a>
</td>
</tr>
</table>`,buttons:{ok:{label:"OK",className:"btn-primary"}}})}function Mz(){let i=(e,t,r)=>`<tr><td><code>${e}</code></td><td>${t}</td><td>${r}</td></tr>`;bootbox.dialog({title:"Asset Editor Reference",onEscape:!0,message:`
<p>Add asset headers in source code as comments containing JSON format descriptors:</p>
<p>
C: <code>/*{w:8,h:8}*/</code> followed by data, terminated by <code>;</code><br>
ASM: <code>;;{w:8,h:8};;</code> followed by data, terminated by <code>;;</code>
</p>
<table class="help">
<tr><th colspan="3">Image Format</th></tr>
<tr><td><b>Field</b></td><td><b>Default</b></td><td><b>Description</b></td></tr>
${i("w","<i>required</i>","Width in pixels")}
${i("h","<i>required</i>","Height in pixels")}
${i("count","1","Number of images")}
${i("bpp","1","Bits per pixel")}
${i("np","1","Number of bitplanes (total colors = 2<sup>bpp&times;np</sup>)")}
${i("bpw","8","Bits per word (8, 16, 32)")}
${i("sl","ceil(w&times;bpp/bpw)","Words per scanline (stride)")}
${i("brev","false","Bit reverse: true = MSB is leftmost pixel")}
${i("flip","false","Flip vertically (y=0 is bottom row)")}
${i("skip","0","Skip bytes at start of each image")}
${i("pofs","sl&times;h&times;count","Offset between bitplanes")}
${i("il","0","Interleave images row by row (data stored as one wide block)")}
${i("remap","&mdash;","Bit remapping table for address lines")}
${i("reindex","&mdash;","Pixel-to-byte/bit remapping")}
${i("wpimg","sl&times;h","Words per image")}
${i("aspect","1","Pixel aspect ratio for display")}
${i("xform","&mdash;","CSS transform on canvas")}
${i("art","false","Artifact color mode: true = Apple II HGR (bit 7 toggles artifact color)")}
<tr><th colspan="3">Palette Format</th></tr>
<tr><td><b>Field</b></td><td><b>Default</b></td><td><b>Description</b></td></tr>
${i("pal","&mdash;","Palette: number (e.g. 332 = 3R,3G,2B) or name (nes, vcs, c64, ap2lores, astrocade)")}
${i("n","&mdash;","Number of palette entries")}
${i("layout","&mdash;","Palette editor layout (nes, astrocade)")}
<tr><th colspan="3">Examples</th></tr>
<tr><td colspan="2"><code>/*{w:8,h:8,bpp:1,brev:1}*/</code></td><td>8x8 1bpp, MSB first (NES-style)</td></tr>
<tr><td colspan="2"><code>;;{w:8,h:5,count:4,il:1};;</code></td><td>4 interleaved 8x5 chars (stored as 32x5 block)</td></tr>
<tr><td colspan="2"><code>;;{w:7,h:8};;</code></td><td>7x8 1bpp, LSB first (Apple II HGR)</td></tr>
<tr><td colspan="2"><code>;;{w:8,h:8,art:true};;</code></td><td>8x8 with artifact color (Apple II HGR, bit 7 toggle)</td></tr>
<tr><td colspan="2"><code>/*{w:16,h:16,bpp:4,np:1}*/</code></td><td>16x16 4bpp</td></tr>
<tr><td colspan="2"><code>/*{pal:332,n:16}*/</code></td><td>16-entry RGB332 palette</pre></td></tr>
</table>`,buttons:{ok:{label:"OK",className:"btn-primary"}},size:"large"})}function Lz(){var i=$("#replayslider"),e=$("#clockslider"),t=$("#replay_frame"),r=$("#replay_clock");U.advanceFrameClock||$("#clockdiv").hide();var n=()=>{t.text(Ii.lastSeekFrame+""),r.text(Ii.lastSeekStep+"")},s=l=>{zs();var c=parseInt(i.val().toString()),u=parseInt(e.val().toString());Ii.loadFrame(c,u)>=0&&(e.attr("min",0),e.attr("max",Ii.lastStepCount),n(),If(U.saveState()))},o=l=>{zs(),Ii.loadFrame(l)>=0&&(i.val(l),n(),If(U.saveState()))},a=l=>{zs();var c=parseInt(i.val().toString());Ii.loadFrame(c,l)>=0&&(e.val(l),n(),If(U.saveState()))};Ii.callbackStateChanged=()=>{i.attr("min",0),i.attr("max",Ii.numFrames()),i.val(Ii.currentFrame()),e.val(Ii.currentStep()),n(),Qc(U.saveState())},i.on("input",s),e.on("input",s),$("#replay_min").click(()=>{o(1)}),$("#replay_max").click(()=>{o(Ii.numFrames())}),$("#replay_back").click(()=>{o(parseInt(i.val().toString())-1)}),$("#replay_fwd").click(()=>{o(parseInt(i.val().toString())+1)}),$("#clock_back").click(()=>{a(parseInt(e.val().toString())-1)}),$("#clock_fwd").click(()=>{a(parseInt(e.val().toString())+1)}),$("#replay_bar").show(),Vt.add("ctrl+alt+0","Start/Stop Replay Recording","glyphicon-record",Rz).prop("id","dbg_record")}function jz(){try{var i=window.screen.orientation||window.screen.msOrientation||window.screen.mozOrientation||null;if(i){if(i.type.indexOf("landscape")!==-1)return!0;if(i.type.indexOf("portrait")!==-1)return!1}if("orientation"in window){var e=window.orientation;if(e===0||e===180)return!1;if(e===90||e===270)return!0}}catch(t){}return window.innerWidth>window.innerHeight}async function Yz(){if(Jn.shouldCompleteTour()){await yr("lib/bootstrap-tourist.js");var i=Ue.startsWith("vcs"),e=[{element:"#platformsMenuButton",placement:"right",title:"Platform Selector",content:`You're currently on the "<b>`+Ue+'</b>" platform. You can choose a different one from the menu.'},{element:"#preset_select",title:"Project Selector",content:"You can choose different code examples, create your own files, or import projects from GitHub."},{element:"#workspace",title:"Code Editor",content:i?"Type your 6502 assembly code into the editor, and it'll be assembled in real-time.":"Type your source code into the editor, and it'll be compiled in real-time."},{element:"#emulator",placement:"left",title:"Emulator",content:"We'll load your compiled code into the emulator whenever you make changes."},{element:"#debug_bar",placement:"bottom",title:"Debug Tools",content:"Use these buttons to set breakpoints, single step through code, pause/resume, and use debugging tools."},{element:"#dropdownMenuButton",title:"Main Menu",content:"Click the menu to create new files, download your code, or share your work with others."},{element:"#sidebar",title:"Sidebar",content:"Pull right to expose the sidebar. It lets you switch between source files, view assembly listings, and use other tools like Disassembler, Memory Browser, and Asset Editor."}];jz()||e.unshift({element:"#controls_top",placement:"bottom",title:"Portrait mode detected",content:"This site works best on desktop browsers. For best results, rotate your device to landscape orientation."}),Na()&&(e.unshift({element:"#dropdownMenuButton",placement:"right",title:"Cookie Consent",content:'Before we start, we should tell you that this website stores cookies and other data in your browser. You can review our <a href="/privacy.html" target="_new">privacy policy</a>.'}),e.push({element:"#booksMenuButton",placement:"left",title:"Books",content:"Get some books that explain how to program all of this stuff, and write some games!"})),Ea&&(e.unshift({element:"#dropdownMenuButton",placement:"right",title:"Developer Analytics",content:"BTW, we send stack traces to sentry.io when exceptions are thrown. Hope that's ok."}),e.unshift({element:"#dropdownMenuButton",placement:"right",title:"Welcome to 8bitworkshop Desktop!",content:'The directory "~/8bitworkshop" contains all of your file edits and built ROM images. You can create new projects under the platform directories (e.g. "c64/myproject")'}));var t=new Tour({autoscroll:!1,steps:e,onEnd:()=>{Jn.completedTour()}});setTimeout(()=>{t.start()},2500)}}function Ff(i){var e=(i.message||i.error||i)+"";if(e.indexOf("QuotaExceededError")>=0)Y5();else{var t=i.error||i.reason;t!=null&&t instanceof mO&&Wz(t)}}function Wz(i){console.log("haltEmulation"),zs(),nM(i)}function Vz(){window.addEventListener("error",Ff),window.addEventListener("unhandledrejection",Ff)}function yP(){window.removeEventListener("error",Ff),window.removeEventListener("unhandledrejection",Ff)}function yo(i,e){e&&(ve=e),yP(),i?window.location.replace("?"+$.param(ve)):window.location.href="?"+$.param(ve)}function Hf(){Ue&&(ve.platform=Ue),delete ve[""],history.replaceState({},"","?"+$.param(ve)+window.location.hash)}function wP(i){if(!i||i==="#")return null;var e=decodeURIComponent(i.substring(1));return e.startsWith("asseteditor/")?"#asseteditor":e.startsWith(Line truncated
/*! Bundled license information:
localforage/dist/localforage.js:
(*!
localForage -- Offline Storage, Improved
Version 1.10.0
https://localforage.github.io/localForage
(c) 2013-2017 Mozilla, Apache License 2.0
*)
jquery/dist/jquery.js:
(*!
* jQuery JavaScript Library v3.7.1
* https://jquery.com/
*
* Copyright OpenJS Foundation and other contributors
* Released under the MIT license
* https://jquery.org/license
*
* Date: 2023-08-28T13:37Z
*)
dompurify/dist/purify.cjs.js:
(*! @license DOMPurify 3.4.13 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.4.13/LICENSE *)
*/
//# sourceMappingURL=chunk-JFRBOCZW.js.map
-7
View File
@@ -1,7 +0,0 @@
{
"version": 3,
"sources": ["../node_modules/localforage/dist/localforage.js", "../node_modules/jquery/dist/jquery.js", "../node_modules/dompurify/src/utils.ts", "../node_modules/dompurify/src/tags.ts", "../node_modules/dompurify/src/attrs.ts", "../node_modules/dompurify/src/regexp.ts", "../node_modules/dompurify/src/purify.ts", "../src/ide/ui.ts", "../src/common/toolmeta.ts", "../src/ide/dialogs.ts", "../node_modules/@marijn/find-cluster-break/src/index.js", "../node_modules/@codemirror/state/dist/index.js", "../node_modules/style-mod/src/style-mod.js", "../node_modules/w3c-keyname/index.js", "../node_modules/crelt/index.js", "../node_modules/@codemirror/view/dist/index.js", "../node_modules/@lezer/common/dist/index.js", "../node_modules/@lezer/highlight/dist/index.js", "../node_modules/@codemirror/language/dist/index.js", "../node_modules/@codemirror/autocomplete/dist/index.js", "../src/ide/views/debug.ts", "../node_modules/@codemirror/commands/dist/index.js", "../src/ide/views/tabs.ts", "../src/ide/settings.ts", "../src/ide/storage.ts", "../src/ide/project.ts", "../src/common/workertypes.ts", "../src/ide/services.ts", "../src/common/audio/CommodoreTape.ts", "../src/ide/shareexport.ts", "../src/ide/sync.ts", "../src/ide/search/symbolindex.ts", "../src/common/symbols/index.ts", "../src/ide/search/projectsource.ts", "../src/ide/search/toolchainsource.ts", "../src/ide/search/docssource.ts", "../src/ide/search/service.ts", "../node_modules/@lezer/lr/dist/index.js", "../node_modules/@lezer/cpp/dist/index.js", "../node_modules/@codemirror/lang-cpp/dist/index.js", "../node_modules/@codemirror/search/dist/index.js", "../src/parser/tokens-6502.ts", "parser/lang-6502.grammar.js", "../src/parser/lang-6502.ts", "../src/parser/tokens-z80.ts", "parser/lang-z80.grammar.js", "../src/parser/lang-z80.ts", "../src/parser/lang-wiz.ts", "../src/parser/lang-verilog.ts", "../src/parser/lang-inform6.ts", "../src/parser/lang-dialog.ts", "../src/parser/lang-basic.ts", "../src/parser/lang-fastbasic.ts", "../src/parser/lang-bataribasic.ts", "../node_modules/@lezer/markdown/dist/index.js", "../node_modules/@lezer/html/dist/index.js", "../node_modules/@lezer/css/dist/index.js", "../node_modules/@codemirror/lang-css/dist/index.js", "../node_modules/@lezer/javascript/dist/index.js", "../node_modules/@codemirror/lang-javascript/dist/index.js", "../node_modules/@codemirror/lang-html/dist/index.js", "../node_modules/@codemirror/lang-markdown/dist/index.js", "../src/parser/registry.ts", "../src/themes/cobalt.ts", "../src/themes/disassemblyTheme.ts", "../src/themes/editorTheme.ts", "../src/themes/mbo.ts", "../src/ide/views/assetdecorations.ts", "../src/ide/views/includedecorations.ts", "../src/ide/views/baseviews.ts", "../src/ide/views/filters.ts", "../src/ide/views/gutter.ts", "../src/ide/views/visuals.ts", "../src/ide/views/editors.ts", "../src/ide/search/searchview.ts", "../src/ide/pixeleditor.ts", "../src/ide/views/asseteditor.ts", "../src/common/vtextscroller.ts", "../src/ide/views/debugviews.ts", "../src/ide/views/treeviews.ts", "../src/ide/windows.ts"],
"sourcesContent": ["/*!\n localForage -- Offline Storage, Improved\n Version 1.10.0\n https://localforage.github.io/localForage\n (c) 2013-2017 Mozilla, Apache License 2.0\n*/\n(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.localforage = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw (f.code=\"MODULE_NOT_FOUND\", f)}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){\n(function (global){\n'use strict';\nvar Mutation = global.MutationObserver || global.WebKitMutationObserver;\n\nvar scheduleDrain;\n\n{\n if (Mutation) {\n var called = 0;\n var observer = new Mutation(nextTick);\n var element = global.document.createTextNode('');\n observer.observe(element, {\n characterData: true\n });\n scheduleDrain = function () {\n element.data = (called = ++called % 2);\n };\n } else if (!global.setImmediate && typeof global.MessageChannel !== 'undefined') {\n var channel = new global.MessageChannel();\n channel.port1.onmessage = nextTick;\n scheduleDrain = function () {\n channel.port2.postMessage(0);\n };\n } else if ('document' in global && 'onreadystatechange' in global.document.createElement('script')) {\n scheduleDrain = function () {\n\n // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n var scriptEl = global.document.createElement('script');\n scriptEl.onreadystatechange = function () {\n nextTick();\n\n scriptEl.onreadystatechange = null;\n scriptEl.parentNode.removeChild(scriptEl);\n scriptEl = null;\n };\n global.document.documentElement.appendChild(scriptEl);\n };\n } else {\n scheduleDrain = function () {\n setTimeout(nextTick, 0);\n };\n }\n}\n\nvar draining;\nvar queue = [];\n//named nextTick for less confusing stack traces\nfunction nextTick() {\n draining = true;\n var i, oldQueue;\n var len = queue.length;\n while (len) {\n oldQueue = queue;\n queue = [];\n i = -1;\n while (++i < len) {\n oldQueue[i]();\n }\n len = queue.length;\n }\n draining = false;\n}\n\nmodule.exports = immediate;\nfunction immediate(task) {\n if (queue.push(task) === 1 && !draining) {\n scheduleDrain();\n }\n}\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{}],2:[function(_dereq_,module,exports){\n'use strict';\nvar immediate = _dereq_(1);\n\n/* istanbul ignore next */\nfunction INTERNAL() {}\n\nvar handlers = {};\n\nvar REJECTED = ['REJECTED'];\nvar FULFILLED = ['FULFILLED'];\nvar PENDING = ['PENDING'];\n\nmodule.exports = Promise;\n\nfunction Promise(resolver) {\n if (typeof resolver !== 'function') {\n throw new TypeError('resolver must be a function');\n }\n this.state = PENDING;\n this.queue = [];\n this.outcome = void 0;\n if (resolver !== INTERNAL) {\n safelyResolveThenable(this, resolver);\n }\n}\n\nPromise.prototype[\"catch\"] = function (onRejected) {\n return this.then(null, onRejected);\n};\nPromise.prototype.then = function (onFulfilled, onRejected) {\n if (typeof onFulfilled !== 'function' && this.state === FULFILLED ||\n typeof onRejected !== 'function' && this.state === REJECTED) {\n return this;\n }\n var promise = new this.constructor(INTERNAL);\n if (this.state !== PENDING) {\n var resolver = this.state === FULFILLED ? onFulfilled : onRejected;\n unwrap(promise, resolver, this.outcome);\n } else {\n this.queue.push(new QueueItem(promise, onFulfilled, onRejected));\n }\n\n return promise;\n};\nfunction QueueItem(promise, onFulfilled, onRejected) {\n this.promise = promise;\n if (typeof onFulfilled === 'function') {\n this.onFulfilled = onFulfilled;\n this.callFulfilled = this.otherCallFulfilled;\n }\n if (typeof onRejected === 'function') {\n this.onRejected = onRejected;\n this.callRejected = this.otherCallRejected;\n }\n}\nQueueItem.prototype.callFulfilled = function (value) {\n handlers.resolve(this.promise, value);\n};\nQueueItem.prototype.otherCallFulfilled = function (value) {\n unwrap(this.promise, this.onFulfilled, value);\n};\nQueueItem.prototype.callLine truncated
"mappings": "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 truncated
"names": ["require_localforage", "__commonJSMin", "exports", "module", "f", "g", "define", "e", "t", "n", "r", "s", "o", "u", "a", "__require", "i", "l", "_dereq_", "global", "Mutation", "scheduleDrain", "called", "observer", "nextTick", "element", "channel", "scriptEl", "draining", "queue", "oldQueue", "len", "immediate", "task", "INTERNAL", "handlers", "REJECTED", "FULFILLED", "PENDING", "Promise", "resolver", "safelyResolveThenable", "onRejected", "onFulfilled", "promise", "unwrap", "QueueItem", "value", "func", "returnValue", "self", "result", "tryCatch", "getThen", "thenable", "error", "obj", "then", "onError", "onSuccess", "tryToUnwrap", "out", "resolve", "reject", "reason", "all", "iterable", "values", "resolved", "allResolver", "resolveFromAll", "outValue", "race", "response", "_typeof", "_classCallCheck", "instance", "Constructor", "getIDB", "idb", "isIndexedDBValid", "isSafari", "hasFetch", "createBlob", "parts", "properties", "Builder", "builder", "Promise$1", "executeCallback", "callback", "executeTwoCallbacks", "errorCallback", "normalizeKey", "key", "getCallback", "DETECT_BLOB_SUPPORT_STORE", "supportsBlobs", "dbContexts", "toString", "READ_ONLY", "READ_WRITE", "_binStringToArrayBuffer", "bin", "length", "buf", "arr", "_checkBlobSupportWithoutCaching", "txn", "blob", "matchedChrome", "matchedEdge", "_checkBlobSupport", "_deferReadiness", "dbInfo", "dbContext", "deferredOperation", "_advanceReadiness", "_rejectReadiness", "err", "_getConnection", "upgradeNeeded", "createDbContext", "dbArgs", "openreq", "db", "ex", "_getOriginalConnection", "_getUpgradedConnection", "_isUpgradeNeeded", "defaultVersion", "isNewStore", "isDowngrade", "isUpgrade", "incVersion", "_encodeBlob", "reader", "base64", "_decodeBlob", "encodedBlob", "arrayBuff", "_isEncodedBlob", "_fullyReady", "_tryReconnect", "forages", "forage", "createTransaction", "mode", "retries", "tx", "_initStorage", "options", "initPromises", "ignoreErrors", "j", "k", "getItem", "transaction", "store", "req", "iterate", "iterator", "iterationNumber", "cursor", "setItem", "blobSupport", "removeItem", "clear", "advanced", "keys", "dropInstance", "currentConfig", "isCurrentDb", "dbPromise", "newVersion", "dropObjectPromise", "_forage2", "dropDBPromise", "_forage", "asyncStorage", "isWebSQLValid", "BASE_CHARS", "BLOB_TYPE_PREFIX", "BLOB_TYPE_PREFIX_REGEX", "SERIALIZED_MARKER", "SERIALIZED_MARKER_LENGTH", "TYPE_ARRAYBUFFER", "TYPE_BLOB", "TYPE_INT8ARRAY", "TYPE_UINT8ARRAY", "TYPE_UINT8CLAMPEDARRAY", "TYPE_INT16ARRAY", "TYPE_INT32ARRAY", "TYPE_UINT16ARRAY", "TYPE_UINT32ARRAY", "TYPE_FLOAT32ARRAY", "TYPE_FLOAT64ARRAY", "TYPE_SERIALIZED_MARKER_LENGTH", "toString$1", "stringToBuffer", "serializedString", "bufferLength", "p", "encoded1", "encoded2", "encoded3", "encoded4", "buffer", "bytes", "bufferToString", "base64String", "serialize", "valueType", "marker", "fileReader", "str", "deserialize", "type", "blobType", "matcher", "localforageSerializer", "createDbTable", "_initStorage$1", "dbInfoPromise", "tryExecuteSql", "sqlStatement", "args", "results", "getItem$1", "iterate$1", "rows", "item", "_setItem", "retriesLeft", "originalValue", "sqlError", "setItem$1", "removeItem$1", "clear$1", "length$1", "key$1", "keys$1", "getAllStoreNames", "storeNames", "dropInstance$1", "operationInfo", "dropTable", "storeName", "operations", "webSQLStorage", "isLocalStorageValid", "_getKeyPrefix", "defaultConfig", "keyPrefix", "checkIfLocalStorageThrows", "localStorageTestKey", "_isLocalStorageUsable", "_initStorage$2", "clear$2", "getItem$2", "iterate$2", "keyPrefixLength", "key$2", "keys$2", "itemKey", "length$2", "removeItem$2", "setItem$2", "dropInstance$2", "localStorageWrapper", "sameValue", "x", "y", "includes", "array", "searchElement", "isArray", "arg", "DefinedDrivers", "DriverSupport", "DefaultDrivers", "DefaultDriverOrder", "OptionalDriverMethods", "LibraryMethods", "DefaultConfig", "callWhenReady", "localForageInstance", "libraryMethod", "_args", "extend", "_key", "LocalForage", "driverTypeKey", "driver", "driverName", "driverObject", "complianceError", "driverMethods", "driverMethodName", "isRequired", "configureMissingMethods", "methodNotImplementedFactory", "methodName", "_i", "_len", "optionalDriverMethod", "setDriverSupport", "support", "getDriverPromise", "serializerPromise", "drivers", "supportedDrivers", "setDriverToConfig", "extendSelfWithDriver", "initDriver", "currentDriverIndex", "driverPromiseLoop", "oldDriverSetDone", "libraryMethodsAndProperties", "localforage_js", "require_jquery", "__commonJSMin", "exports", "module", "global", "factory", "w", "window", "noGlobal", "arr", "getProto", "slice", "flat", "array", "push", "indexOf", "class2type", "toString", "hasOwn", "fnToString", "ObjectFunctionString", "support", "isFunction", "obj", "isWindow", "document", "preservedScriptAttributes", "DOMEval", "code", "node", "doc", "i", "val", "script", "toType", "version", "rhtmlSuffix", "jQuery", "selector", "context", "num", "elems", "ret", "callback",Line truncated
}
+177
View File
@@ -0,0 +1,177 @@
import{a as JO,b as ef,c as xP,d as Tg,e as _g,f as Rg,g as xl,h as hr,j as Sl,k as Ql,l as as,m as SP}from"./chunk-6UQAGDOD.js";import{a as bP}from"./chunk-LNOKARBD.js";import{a as bl}from"./chunk-A7SWO6EA.js";import{a as Xg,b as Zg,c as QP}from"./chunk-F6NBEMS2.js";import{D as HO,K as KO,t as Pg,u as kg}from"./chunk-CZ7OSHSE.js";import{A as Ni,E as ui,F as BO,G as os,I as vo,J as ml,K as GO,T as NO,V as $g,a as Gi,b as xo,ba as gl,d as gt,e as So,f as $t,g as Te,h as IO,i as Qg,k as vg,m as fl,n as ul,o as dl,p as un,q as wg,t as pl,w as yg,x as FO,y as Qo,z as Ut}from"./chunk-TYDI7JZQ.js";import{a as st,b as Ol,c as bo,d as Sg,e as DO}from"./chunk-KT7KMEQC.js";var rf=Sg((Cg,tf)=>{(function(i){if(typeof Cg=="object"&&typeof tf!="undefined")tf.exports=i();else if(typeof define=="function"&&define.amd)define([],i);else{var e;typeof window!="undefined"?e=window:typeof global!="undefined"?e=global:typeof self!="undefined"?e=self:e=this,e.localforage=i()}})(function(){var i,e,t;return(function r(n,s,o){function a(h,O){if(!s[h]){if(!n[h]){var f=typeof bo=="function"&&bo;if(!O&&f)return f(h,!0);if(l)return l(h,!0);var u=new Error("Cannot find module '"+h+"'");throw u.code="MODULE_NOT_FOUND",u}var p=s[h]={exports:{}};n[h][0].call(p.exports,function(m){var S=n[h][1][m];return a(S||m)},p,p.exports,r,n,s,o)}return s[h].exports}for(var l=typeof bo=="function"&&bo,c=0;c<o.length;c++)a(o[c]);return a})({1:[function(r,n,s){(function(o){"use strict";var a=o.MutationObserver||o.WebKitMutationObserver,l;if(a){var c=0,h=new a(m),O=o.document.createTextNode("");h.observe(O,{characterData:!0}),l=function(){O.data=c=++c%2}}else if(!o.setImmediate&&typeof o.MessageChannel!="undefined"){var f=new o.MessageChannel;f.port1.onmessage=m,l=function(){f.port2.postMessage(0)}}else"document"in o&&"onreadystatechange"in o.document.createElement("script")?l=function(){var w=o.document.createElement("script");w.onreadystatechange=function(){m(),w.onreadystatechange=null,w.parentNode.removeChild(w),w=null},o.document.documentElement.appendChild(w)}:l=function(){setTimeout(m,0)};var u,p=[];function m(){u=!0;for(var w,C,R=p.length;R;){for(C=p,p=[],w=-1;++w<R;)C[w]();R=p.length}u=!1}n.exports=S;function S(w){p.push(w)===1&&!u&&l()}}).call(this,typeof global!="undefined"?global:typeof self!="undefined"?self:typeof window!="undefined"?window:{})},{}],2:[function(r,n,s){"use strict";var o=r(1);function a(){}var l={},c=["REJECTED"],h=["FULFILLED"],O=["PENDING"];n.exports=f;function f(P){if(typeof P!="function")throw new TypeError("resolver must be a function");this.state=O,this.queue=[],this.outcome=void 0,P!==a&&S(this,P)}f.prototype.catch=function(P){return this.then(null,P)},f.prototype.then=function(P,Z){if(typeof P!="function"&&this.state===h||typeof Z!="function"&&this.state===c)return this;var z=new this.constructor(a);if(this.state!==O){var D=this.state===h?P:Z;p(z,D,this.outcome)}else this.queue.push(new u(z,P,Z));return z};function u(P,Z,z){this.promise=P,typeof Z=="function"&&(this.onFulfilled=Z,this.callFulfilled=this.otherCallFulfilled),typeof z=="function"&&(this.onRejected=z,this.callRejected=this.otherCallRejected)}u.prototype.callFulfilled=function(P){l.resolve(this.promise,P)},u.prototype.otherCallFulfilled=function(P){p(this.promise,this.onFulfilled,P)},u.prototype.callRejected=function(P){l.reject(this.promise,P)},u.prototype.otherCallRejected=function(P){p(this.promise,this.onRejected,P)};function p(P,Z,z){o(function(){var D;try{D=Z(z)}catch(Oe){return l.reject(P,Oe)}D===P?l.reject(P,new TypeError("Cannot resolve promise with itself")):l.resolve(P,D)})}l.resolve=function(P,Z){var z=w(m,Z);if(z.status==="error")return l.reject(P,z.value);var D=z.value;if(D)S(P,D);else{P.state=h,P.outcome=Z;for(var Oe=-1,se=P.queue.length;++Oe<se;)P.queue[Oe].callFulfilled(Z)}return P},l.reject=function(P,Z){P.state=c,P.outcome=Z;for(var z=-1,D=P.queue.length;++z<D;)P.queue[z].callRejected(Z);return P};function m(P){var Z=P&&P.then;if(P&&(typeof P=="object"||typeof P=="function")&&typeof Z=="function")return function(){Z.apply(P,arguments)}}function S(P,Z){var z=!1;function D(he){z||(z=!0,l.reject(P,he))}function Oe(he){z||(z=!0,l.resolve(P,he))}function se(){Z(Oe,D)}var ee=w(se);ee.status==="error"&&D(ee.value)}function w(P,Z){var z={};try{z.value=P(Z),z.status="success"}catch(D){z.status="error",z.value=D}return z}f.resolve=C;function C(P){return P instanceof this?P:l.resolve(new this(a),P)}f.reject=R;function R(P){var Z=new this(a);return l.reject(Z,P)}f.all=A;function A(P){var Z=this;if(Object.prototype.toString.call(P)!=="[object Array]")return this.reject(new TypeError("must be an array"));var z=P.length,D=!1;if(!z)return this.resolve([]);for(var Oe=new Array(z),se=0,ee=-1,he=new this(a);++ee<z;)ge(P[ee],ee);return he;function ge(we,Y){Z.resolve(we).then(re,function(N){D||(D=!0,l.reject(he,N))});function re(N){Oe[Y]=N,++se===z&&!D&&(D=!0,l.resolve(he,Oe))}}}f.race=k;function k(P){var Z=this;if(Object.prototype.toString.call(P)!=="[object Line truncated
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function RA(i,e){return XA(i)||TA(i,e)||ZA(i,e)||_A()}function ZA(i,e){if(i){if(typeof i=="string")return x$(i,e);var t={}.toString.call(i).slice(8,-1);return t==="Object"&&i.constructor&&(t=i.constructor.name),t==="Map"||t==="Set"?Array.from(i):t==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?x$(i,e):void 0}}var U$=Object.entries,S$=Object.setPrototypeOf,CA=Object.isFrozen,UA=Object.getPrototypeOf,AA=Object.getOwnPropertyDescriptor,vt=Object.freeze,wt=Object.seal,Ks=Object.create,A$=typeof Reflect!="undefined"&&Reflect,ng=A$.apply,sg=A$.construct;vt||(vt=function(e){return e});wt||(wt=function(e){return e});ng||(ng=function(e,t){for(var r=arguments.length,n=new Array(r>2?r-2:0),s=2;s<r;s++)n[s-2]=arguments[s];return e.apply(t,n)});sg||(sg=function(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];return new e(...r)});var Ns=ht(Array.prototype.forEach),EA=ht(Array.prototype.lastIndexOf),Q$=ht(Array.prototype.pop),Hs=ht(Array.prototype.push),zA=ht(Array.prototype.splice),tn=Array.isArray,qa=ht(String.prototype.toLowerCase),Jm=ht(String.prototype.toString),v$=ht(String.prototype.match),Va=ht(String.prototype.replace),w$=ht(String.prototype.indexOf),YA=ht(String.prototype.trim),MA=ht(Number.prototype.toString),LA=ht(Boolean.prototype.toString),y$=typeof BigInt=="undefined"?null:ht(BigInt.prototype.toString),$$=typeof Symbol=="undefined"?null:ht(Symbol.prototype.toString),dt=ht(Object.prototype.hasOwnProperty),ja=ht(Object.prototype.toString),ut=ht(RegExp.prototype.test),Bn=WA(TypeError);function ht(i){return function(e){e instanceof RegExp&&(e.lastIndex=0);for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];return ng(i,e,r)}}function WA(i){return function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return sg(i,t)}}function Ce(i,e){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:qa;if(S$&&S$(i,null),!tn(e))return i;let r=e.length;for(;r--;){let n=e[r];if(typeof n=="string"){let s=t(n);s!==n&&(CA(e)||(e[r]=s),n=s)}i[n]=!0}return i}function VA(i){for(let e=0;e<i.length;e++)dt(i,e)||(i[e]=null);return i}function Rt(i){let e=Ks(null);for(let r of U$(i)){var t=RA(r,2);let n=t[0],s=t[1];dt(i,n)&&(tn(s)?e[n]=VA(s):s&&typeof s=="object"&&s.constructor===Object?e[n]=Rt(s):e[n]=s)}return e}function jA(i){switch(typeof i){case"string":return i;case"number":return MA(i);case"boolean":return LA(i);case"bigint":return y$?y$(i):"0";case"symbol":return $$?$$(i):"Symbol()";case"undefined":return ja(i);case"function":case"object":{if(i===null)return ja(i);let e=i,t=ji(e,"toString");if(typeof t=="function"){let r=t(e);return typeof r=="string"?r:ja(r)}return ja(i)}default:return ja(i)}}function ji(i,e){for(;i!==null;){let r=AA(i,e);if(r){if(r.get)return ht(r.get);if(typeof r.value=="function")return ht(r.value)}i=UA(i)}function t(){return null}return t}function qA(i){try{return ut(i,""),!0}catch(e){return!1}}var P$=vt(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","search","section","select","shadow","slot","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),eg=vt(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","enterkeyhint","exportparts","filter","font","g","glyph","glyphref","hkern","image","inputmode","line","lineargradient","marker","mask","metadata","mpath","part","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),tg=vt(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),DA=vt(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-gly Line truncated
`+Ge),Xi&&(Ge=Rr(Ge)),Z&&hn?he(Ge):Ge},e.setConfig=function(){let M=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};po(M),Jn=!0,an=qe,ln=De},e.clearConfig=function(){_r=null,Jn=!1,an=null,ln=null,Z=D,z=""},e.isValidAttribute=function(M,b,_){_r||po({});let L=Be(M),ne=Be(b);return V(L,ne,_)},e.addHook=function(M,b){typeof b=="function"&&dt(de,M)&&Hs(de[M],b)},e.removeHook=function(M,b){if(dt(de,M)){if(b!==void 0){let _=EA(de[M],b);return _===-1?void 0:zA(de[M],_,1)[0]}return Q$(de[M])}},e.removeHooks=function(M){dt(de,M)&&(de[M]=[])},e.removeAllHooks=function(){de=C$()},e}var oE=E$();z$.exports=oE});var fg=DO(rf());var Le=[/^\s*[.#%]?(include|incbin|embed)\s+"(.+?)"/gmi,/^\s*([;']|[/][/])#(resource)\s+"(.+?)"/gm],Ie=[/^\s*([;]|[/][/])#link\s+"(.+?)"/gm],wo=[/^\s*(`include|[.]include)\s+"(.+?)"/gmi,/^\s*\$(include|\$dofile|\$write_image_in_table)\('(.+?)'/gmi,{re:/^\s*([.]arch)\s+(\w+)/gmi,suffix:".json"},/\$readmem[bh]\("(.+?)"/gmi],vP=[{re:/^\s*[.#%]?\s*include\s+<(.+?)>/gmi,system:!0}];function Eg(i){let e=i&&Hi(i);return e&&e.includeDirs&&e.includeDirs.length?vP:[]}var Ug=[/^\s+(USE|ASM)\s+(\S+[.]\S+)/gm],wP=[/^[!]src\s+"(.+?)"/gmi],yP=[{re:/^\s*import\s*"(.+?)";/gmi,suffix:".wiz"},/^\s*embed\s*"(.+?)";/gmi],$P=[/^\s*(import)\s*"(.+?)"/gmi],PP=[/^\s*%%\s*#include\s+"(.+?)"/gm],Ag={apple2:{preloadFS:"65-apple2"},c64:{preloadFS:"65-c64"},vic20:{preloadFS:"65-vic20"},nes:{preloadFS:"65-nes"},atari8:{preloadFS:"65-atari8"},vector:{preloadFS:"65-none"},atari7800:{preloadFS:"65-none"},devel:{preloadFS:"65-none"},vcs:{preloadFS:"65-atari2600"},pce:{preloadFS:"65-pce"},exidy:{preloadFS:"65-none"}},yo={dasm:{id:"dasm",name:"DASM",kind:"assembler",arch:"6502",extensions:[".dasm"],editorStyle:"6502",helpURL:"https://raw.githubusercontent.com/dasm-assembler/dasm/refs/tags/v2.20.17/docs/dasm.txt",wasmModule:"dasm-wasisdk",version:"2.20.17",includePatterns:Le,linkPatterns:Ie},acme:{id:"acme",name:"ACME",kind:"assembler",arch:"6502",extensions:[".acme"],editorStyle:"6502",helpURL:"https://raw.githubusercontent.com/sehugg/acme/main/docs/QuickRef.txt",wasmModule:"acme",version:"0.97.1",includePatterns:[...Le,...wP],linkPatterns:Ie},xa:{id:"xa",name:"XA",kind:"assembler",arch:"6502",extensions:[".xa"],editorStyle:"6502",helpURL:"https://www.floodgap.com/retrotech/xa/",wasmModule:"xa",version:"2.4.1",includePatterns:Le,linkPatterns:Ie},nesasm:{id:"nesasm",name:"NESASM",kind:"assembler",arch:"6502",extensions:[".nesasm"],editorStyle:"6502",wasmModule:"nesasm",version:"3.1",includePatterns:Le,linkPatterns:Ie},merlin32:{id:"merlin32",name:"Merlin 32",kind:"assembler",arch:"6502",extensions:[".lnk"],editorStyle:"6502",wasmModule:"merlin32",version:"1.1.1",includePatterns:[...Le,...Ug],linkPatterns:Ie},cc65:{id:"cc65",name:"cc65",kind:"compiler",arch:"6502",extensions:[".c",".h"],includeDirs:["/include","/asminc"],editorStyle:"text/x-csrc",helpURL:"https://cc65.github.io/doc/cc65.html",wasmModule:"cc65",version:"2.19",platforms:Ag,includePatterns:Le,linkPatterns:Ie},ca65:{id:"ca65",name:"ca65",kind:"assembler",arch:"6502",extensions:[".s",".ca65",".inc"],includeDirs:["/include","/asminc"],editorStyle:"6502",helpURL:"https://cc65.github.io/doc/ca65.html",wasmModule:"ca65",version:"2.19",platforms:Ag,includePatterns:Le,linkPatterns:Ie},ld65:{id:"ld65",name:"ld65",kind:"linker",arch:"6502",extensions:[],wasmModule:"ld65",version:"2.19"},sdcc:{id:"sdcc",name:"SDCC",kind:"compiler",arch:"z80",extensions:[".c",".h"],includeDirs:["/include"],editorStyle:"text/x-csrc",helpURL:"http://sdcc.sourceforge.net/doc/sdccman.pdf",wasmModule:"sdcc",version:"3.6.5",platforms:{default:{preloadFS:"sdcc"}},includePatterns:Le,linkPatterns:Ie},sdasz80:{id:"sdasz80",name:"sdasz80",kind:"assembler",arch:"z80",extensions:[".s"],includeDirs:["/include"],editorStyle:"z80",wasmModule:"sdasz80",version:"02.00",platforms:{default:{preloadFS:"sdcc"}},includePatterns:Le,linkPatterns:Ie},sdasgb:{id:"sdasgb",name:"sdasgb",kind:"assembler",arch:"gbz80",extensions:[".sgb"],includeDirs:["/include"],editorStyle:"z80",wasmModule:"sdasgb",platforms:{default:{preloadFS:"sdcc"}},includePatterns:Le,linkPatterns:Ie},sdldz80:{id:"sdldz80",name:"sdldz80",kind:"linker",arch:"z80",extensions:[],wasmModule:"sdldz80",version:"03.00"},sccz80:{id:"sccz80",name:"sccz80",kind:"compiler",arch:"z80",extensions:[".scc"],platforms:{default:{preloadFS:"sccz80"}},noWorkerBuild:!0},naken:{id:"naken",name:"Naken",kind:"assembler",extensions:[".ns"],noWorkerBuild:!0},zmac:{id:"zmac",name:"zmac",kind:"assembler",arch:"z80",extensions:[".z"],editorStyle:"z80",helpURL:"https://raw.githubusercontent.com/sehugg/zmac/master/doc.txt",wasmModule:"zmac",version:"28jul2018",includePatterns:Le,linkPatterns:Ie},jsasm:{id:"jsasm",name:"JSASM",kind:"assembler",extensions:[".asm"],editorStyle:"z80",includePatterns:wo,linkPatterns:[]},xasm6809:{id:"xasm6809",name:"XASM6809",kind:"assembler",arch:"6809",extensions:[".xasm"],editorStyle:"6809",wasmModule:"xasm6809",includePatterns:[...Le,...Ug],linkPLine truncated
`){[e,t]=Os(this,e,t);let n="";for(let s=0,o=0;s<=t&&o<this.text.length;o++){let a=this.text[o],l=s+a.length;s>e&&o&&(n+=r),e<l&&t>s&&(n+=a.slice(Math.max(0,e-s),t-s)),s=l+1}return n}flatten(e){for(let t of this.text)e.push(t)}scanIdentical(){return 0}static split(e,t){let r=[],n=-1;for(let s of e)r.push(s),n+=s.length+1,r.length==32&&(t.push(new i(r,n)),r=[],n=-1);return n>-1&&t.push(new i(r,n)),t}},ls=class i extends $e{constructor(e,t){super(),this.children=e,this.length=t,this.lines=0;for(let r of e)this.lines+=r.lines}lineInner(e,t,r,n){for(let s=0;;s++){let o=this.children[s],a=n+o.length,l=r+o.lines-1;if((t?l:a)>=e)return o.lineInner(e,t,r,n);n=a+1,r=l+1}}decompose(e,t,r,n){for(let s=0,o=0;o<=t&&s<this.children.length;s++){let a=this.children[s],l=o+a.length;if(e<=l&&t>=o){let c=n&((o<=e?1:0)|(l>=t?2:0));o>=e&&l<=t&&!c?r.push(a):a.decompose(e-o,t-o,r,c)}o=l+1}}replace(e,t,r){if([e,t]=Os(this,e,t),r.lines<this.lines)for(let n=0,s=0;n<this.children.length;n++){let o=this.children[n],a=s+o.length;if(e>=s&&t<=a){let l=o.replace(e-s,t-s,r),c=this.lines-o.lines+l.lines;if(l.lines<c>>4&&l.lines>c>>6){let h=this.children.slice();return h[n]=l,new i(h,this.length-(t-e)+r.length)}return super.replace(s,a,l)}s=a+1}return super.replace(e,t,r)}sliceString(e,t=this.length,r=`
`){[e,t]=Os(this,e,t);let n="";for(let s=0,o=0;s<this.children.length&&o<=t;s++){let a=this.children[s],l=o+a.length;o>e&&s&&(n+=r),e<l&&t>o&&(n+=a.sliceString(e-o,t-o,r)),o=l+1}return n}flatten(e){for(let t of this.children)t.flatten(e)}scanIdentical(e,t){if(!(e instanceof i))return 0;let r=0,[n,s,o,a]=t>0?[0,0,this.children.length,e.children.length]:[this.children.length-1,e.children.length-1,-1,-1];for(;;n+=t,s+=t){if(n==o||s==a)return r;let l=this.children[n],c=e.children[s];if(l!=c)return r+l.scanIdentical(c,t);r+=l.length+1}}static from(e,t=e.reduce((r,n)=>r+n.length+1,-1)){let r=0;for(let u of e)r+=u.lines;if(r<32){let u=[];for(let p of e)p.flatten(u);return new Jt(u,t)}let n=Math.max(32,r>>5),s=n<<1,o=n>>1,a=[],l=0,c=-1,h=[];function O(u){let p;if(u.lines>s&&u instanceof i)for(let m of u.children)O(m);else u.lines>o&&(l>o||!l)?(f(),a.push(u)):u instanceof Jt&&l&&(p=h[h.length-1])instanceof Jt&&u.lines+p.lines<=32?(l+=u.lines,c+=u.length+1,h[h.length-1]=new Jt(p.text.concat(u.text),p.length+1+u.length)):(l+u.lines>n&&f(),l+=u.lines,c+=u.length+1,h.push(u))}function f(){l!=0&&(a.push(h.length==1?h[0]:i.from(h,c)),c=-1,l=h.length=0)}for(let u of e)O(u);return f(),a.length==1?a[0]:new i(a,t)}};$e.empty=new Jt([""],0);function _P(i){let e=-1;for(let t of i)e+=t.length+1;return e}function Tl(i,e,t=0,r=1e9){for(let n=0,s=0,o=!0;s<i.length&&n<=r;s++){let a=i[s],l=n+a.length;l>=t&&(l>r&&(a=a.slice(0,r-n)),n<t&&(a=a.slice(t-n)),o?(e[e.length-1]+=a,o=!1):e.push(a)),n=l+1}return e}function Fg(i,e,t){return Tl(i,[""],e,t)}var gn=class{constructor(e,t=1){this.dir=t,this.done=!1,this.lineBreak=!1,this.value="",this.nodes=[e],this.offsets=[t>0?1:(e instanceof Jt?e.text.length:e.children.length)<<1]}nextInner(e,t){for(this.done=this.lineBreak=!1;;){let r=this.nodes.length-1,n=this.nodes[r],s=this.offsets[r],o=s>>1,a=n instanceof Jt?n.text.length:n.children.length;if(o==(t>0?a:0)){if(r==0)return this.done=!0,this.value="",this;t>0&&this.offsets[r-1]++,this.nodes.pop(),this.offsets.pop()}else if((s&1)==(t>0?0:1)){if(this.offsets[r]+=t,e==0)return this.lineBreak=!0,this.value=`
`,this;e--}else if(n instanceof Jt){let l=n.text[o+(t<0?-1:0)];if(this.offsets[r]+=t,l.length>Math.max(0,e))return this.value=e==0?l:t>0?l.slice(e):l.slice(0,l.length-e),this;e-=l.length}else{let l=n.children[o+(t<0?-1:0)];e>l.length?(e-=l.length,this.offsets[r]+=t):(t<0&&this.offsets[r]--,this.nodes.push(l),this.offsets.push(t>0?1:(l instanceof Jt?l.text.length:l.children.length)<<1))}}}next(e=0){return e<0&&(this.nextInner(-e,-this.dir),e=this.value.length),this.nextInner(e,this.dir)}},_l=class{constructor(e,t,r){this.value="",this.done=!1,this.cursor=new gn(e,t>r?-1:1),this.pos=t>r?e.length:0,this.from=Math.min(t,r),this.to=Math.max(t,r)}nextInner(e,t){if(t<0?this.pos<=this.from:this.pos>=this.to)return this.value="",this.done=!0,this;e+=Math.max(0,t<0?this.pos-this.to:this.from-this.pos);let r=t<0?this.pos-this.from:this.to-this.pos;e>r&&(e=r),r-=e;let{value:n}=this.cursor.next(e);return this.pos+=(n.length+e)*t,this.value=n.length<=r?n:t<0?n.slice(n.length-r):n.slice(0,r),this.done=!this.value,this}next(e=0){return e<0?e=Math.max(e,this.from-this.pos):e>0&&(e=Math.min(e,this.to-this.pos)),this.nextInner(e,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&this.value!=""}},Rl=class{constructor(e){this.inner=e,this.afterBreak=!0,this.value="",this.done=!1}next(e=0){let{done:t,lineBreak:r,value:n}=this.inner.next(e);return t&&this.afterBreak?(this.value="",this.afterBreak=!1):t?(this.done=!0,this.value=""):r?this.afterBreak?this.value="":(this.afterBreak=!0,this.next()):(this.value=n,this.afterBreak=!1),this}get lineBreak(){return!1}};typeof Symbol!="undefined"&&($e.prototype[Symbol.iterator]=function(){return this.iter()},gn.prototype[Symbol.iterator]=_l.prototype[Symbol.iterator]=Rl.prototype[Symbol.iterator]=function(){return this});var cf=class{constructor(e,t,r,n){this.from=e,this.to=t,this.number=r,this.text=n}get length(){return this.to-this.from}};function Os(i,e,t){return e=Math.max(0,Math.min(i.length,e)),[e,Math.max(e,Math.min(i.length,t))]}function it(i,e,t=!0,r=!0){return jg(i,e,t,r)}function RP(i){return i>=56320&&i<57344}function ZP(i){return i>=55296&&i<56320}function Zi(i,e){let t=i.charCodeAt(e);if(!ZP(t)||e+1==i.length)return t;let r=i.charCodeAt(e+1);return RP(r)?(t-55296<<10)+(r-56320)+65536:t}function El(i){return i<=65535?String.fromCharCode(i):(i-=65536,String.fromCharCode((i>>10)+55296,(i&1023)+56320))}function Cr(i){return i<65536?1:2}var hf=/\r\n?|\n/,Ot=(function(i){return i[i.Simple=0]="Simple",i[i.TrackDel=1]="TrackDel",i[i.TrackBefore=2]="TrackBefore",i[i.TrackAfter=3]="TrackAfter",i})(Ot||(Ot={})),Or=class i{constructor(e){this.sections=e}get length(){let e=0;for(let t=0;t<this.sections.length;t+=2)e+=this.sections[t];return e}get newLength(){let e=0;for(let t=0;t<this.sections.length;t+=2){let r=this.sections[t+1];e+=r<0?this.sections[t]:r}return e}get empty(){return this.sections.length==0||this.sections.length==2&&this.sections[1]<0}iterGaps(e){for(let t=0,r=0,n=0;t<this.sections.length;){let s=this.sections[t++],o=this.sections[t++];o<0?(e(r,n,s),n+=s):n+=o,r+=s}}iterChangedRanges(e,t=!1){Of(this,e,t)}get invertedDesc(){let e=[];for(let t=0;t<this.sections.length;){let r=this.sections[t++],n=this.sections[t++];n<0?e.push(r,n):e.push(n,r)}return new i(e)}composeDesc(e){return this.empty?e:e.empty?this:Kg(this,e)}mapDesc(e,t=!1){return e.empty?this:ff(this,e,t)}mapPos(e,t=-1,r=Ot.Simple){let n=0,s=0;for(let o=0;o<this.sections.length;){let a=this.sections[o++],l=this.sections[o++],c=n+a;if(l<0){if(c>e)return s+(e-n);s+=a}else{if(r!=Ot.Simple&&c>=e&&(r==Ot.TrackDel&&n<e&&c>e||r==Ot.TrackBefore&&n<e||r==Ot.TrackAfter&&c>e))return null;if(c>e||c==e&&t<0&&!a)return e==n||t<0?s:s+l;s+=l}n=c}if(e>n)throw new RangeError(`Position ${e} is out of range for changeset of length ${n}`);return s}touchesRange(e,t=e){for(let r=0,n=0;r<this.sections.length&&n<=t;){let s=this.sections[r++],o=this.sections[r++],a=n+s;if(o>=0&&n<=t&&a>=e)return n<e&&a>t?"cover":!0;n=a}return!1}toString(){let e="";for(let t=0;t<this.sections.length;){let r=this.sections[t++],n=this.sections[t++];e+=(e?" ":"")+r+(n>=0?":"+n:"")}return e}toJSON(){return this.sections}static fromJSON(e){if(!Array.isArray(e)||e.length%2||e.some(t=>typeof t!="number"))throw new RangeError("Invalid JSON representation of ChangeDesc");return new i(e)}static create(e){return new i(e)}},At=class i extends Or{constructor(e,t){super(e),this.inserted=t}apply(e){if(this.length!=e.length)throw new RangeError("Applying change set to a document with the wrong length");return Of(this,(t,r,n,s,o)=>e=e.replace(n,n+(r-t),o),!1),e}mapDesc(e,t=!1){return ff(this,e,t,!0)}invert(e){let t=this.sections.slice(),r=[];for(let n=0,s=0;n<t.length;n+=2){let o=t[n],a=t[n+1];if(a>=0){t[n]=a,t[n+1]=o;let l=n>>1;for(;r.length<l;)r.push($e.empty);r.push(o?e.slice(s,s+o):$e.empty)}s+=o}return new i(t,r)}compose(e){return this.empty?e:e.empty?this:Kg(this,e,!0)}map(e,t=!1){return e.empty?this:ff(this,e,t,!0)}iterChanges(e,t=!1){Of(this,e,t)}get desc Line truncated
`}get readOnly(){return this.facet(s0)}phrase(e,...t){for(let r of this.facet(i.phrases))if(Object.prototype.hasOwnProperty.call(r,e)){e=r[e];break}return t.length&&(e=e.replace(/\$(\$|\d*)/g,(r,n)=>{if(n=="$")return"$";let s=+(n||1);return!s||s>t.length?r:t[s-1]})),e}languageDataAt(e,t,r=-1){let n=[];for(let s of this.facet(e0))for(let o of s(this,t,r))Object.prototype.hasOwnProperty.call(o,e)&&n.push(o[e]);return n}charCategorizer(e){let t=this.languageDataAt("wordChars",e);return WP(t.length?t[0]:"")}wordAt(e){let{text:t,from:r,length:n}=this.doc.lineAt(e),s=this.charCategorizer(e),o=e-r,a=e-r;for(;o>0;){let l=it(t,o,!1);if(s(t.slice(l,o))!=Me.Word)break;o=l}for(;a<n;){let l=it(t,a);if(s(t.slice(a,l))!=Me.Word)break;a=l}return o==a?null:U.range(o+r,a+r)}};ve.allowMultipleSelections=df;ve.tabSize=K.define({combine:i=>i.length?i[0]:4});ve.lineSeparator=t0;ve.readOnly=s0;ve.phrases=K.define({compare(i,e){let t=Object.keys(i),r=Object.keys(e);return t.length==r.length&&t.every(n=>i[n]==e[n])}});ve.languageData=e0;ve.changeFilter=i0;ve.transactionFilter=r0;ve.transactionExtender=n0;bt.reconfigure=ae.define();function ei(i,e,t={}){let r={};for(let n of i)for(let s of Object.keys(n)){let o=n[s],a=r[s];if(a===void 0)r[s]=o;else if(!(a===o||o===void 0))if(Object.hasOwnProperty.call(t,s))r[s]=t[s](a,o);else throw new Error("Config merge conflict for field "+s)}for(let n in e)r[n]===void 0&&(r[n]=e[n]);return r}var di=class{eq(e){return this==e}range(e,t=e){return Xo.create(e,t,this)}};di.prototype.startSide=di.prototype.endSide=0;di.prototype.point=!1;di.prototype.mapMode=Ot.TrackDel;function yf(i,e){return i==e||i.constructor==e.constructor&&i.eq(e)}var Xo=class i{constructor(e,t,r){this.from=e,this.to=t,this.value=r}static create(e,t,r){return new i(e,t,r)}};function xf(i,e){return i.from-e.from||i.value.startSide-e.value.startSide}var Sf=class i{constructor(e,t,r,n){this.from=e,this.to=t,this.value=r,this.maxPoint=n}get length(){return this.to[this.to.length-1]}findIndex(e,t,r,n=0){let s=r?this.to:this.from;for(let o=n,a=s.length;;){if(o==a)return o;let l=o+a>>1,c=s[l]-e||(r?this.value[l].endSide:this.value[l].startSide)-t;if(l==o)return c>=0?o:a;c>=0?a=l:o=l+1}}between(e,t,r,n){for(let s=this.findIndex(t,-1e9,!0),o=this.findIndex(r,1e9,!1,s);s<o;s++)if(n(this.from[s]+e,this.to[s]+e,this.value[s])===!1)return!1}map(e,t){let r=[],n=[],s=[],o=-1,a=-1;for(let l=0;l<this.value.length;l++){let c=this.value[l],h=this.from[l]+e,O=this.to[l]+e,f,u;if(h==O){let p=t.mapPos(h,c.startSide,c.mapMode);if(p==null||(f=u=p,c.startSide!=c.endSide&&(u=t.mapPos(h,c.endSide),u<f)))continue}else if(f=t.mapPos(h,c.startSide),u=t.mapPos(O,c.endSide),f>u||f==u&&c.startSide>0&&c.endSide<=0)continue;(u-f||c.endSide-c.startSide)<0||(o<0&&(o=f),c.point&&(a=Math.max(a,u-f)),r.push(c),n.push(f-o),s.push(u-o))}return{mapped:r.length?new i(n,s,r,a):null,pos:o}}},pe=class i{constructor(e,t,r,n){this.chunkPos=e,this.chunk=t,this.nextLayer=r,this.maxPoint=n}static create(e,t,r,n){return new i(e,t,r,n)}get length(){let e=this.chunk.length-1;return e<0?0:Math.max(this.chunkEnd(e),this.nextLayer.length)}get size(){if(this.isEmpty)return 0;let e=this.nextLayer.size;for(let t of this.chunk)e+=t.value.length;return e}chunkEnd(e){return this.chunkPos[e]+this.chunk[e].length}update(e){let{add:t=[],sort:r=!1,filterFrom:n=0,filterTo:s=this.length}=e,o=e.filter;if(t.length==0&&!o)return this;if(r&&(t=t.slice().sort(xf)),this.isEmpty)return t.length?i.of(t):this;let a=new Al(this,null,-1).goto(0),l=0,c=[],h=new Ri;for(;a.value||l<t.length;)if(l<t.length&&(a.from-t[l].from||a.startSide-t[l].value.startSide)>=0){let O=t[l++];h.addInner(O.from,O.to,O.value)||c.push(O)}else a.rangeIndex==1&&a.chunkIndex<this.chunk.length&&(l==t.length||this.chunkEnd(a.chunkIndex)<t[l].from)&&(!o||n>this.chunkEnd(a.chunkIndex)||s<this.chunkPos[a.chunkIndex])&&h.addChunk(this.chunkPos[a.chunkIndex],this.chunk[a.chunkIndex])?a.nextChunk():((!o||n>a.to||s<a.from||o(a.from,a.to,a.value))&&(h.addInner(a.from,a.to,a.value)||c.push(Xo.create(a.from,a.to,a.value))),a.next());return h.finishInner(this.nextLayer.isEmpty&&!c.length?i.empty:this.nextLayer.update({add:c,filter:o,filterFrom:n,filterTo:s}))}map(e){if(e.empty||this.isEmpty)return this;let t=[],r=[],n=-1;for(let o=0;o<this.chunk.length;o++){let a=this.chunkPos[o],l=this.chunk[o],c=e.touchesRange(a,a+l.length);if(c===!1)n=Math.max(n,l.maxPoint),t.push(l),r.push(e.mapPos(a));else if(c===!0){let{mapped:h,pos:O}=l.map(a,e);h&&(n=Math.max(n,h.maxPoint),t.push(h),r.push(O))}}let s=this.nextLayer.map(e);return t.length==0?s:new i(r,t,s||i.empty,n)}between(e,t,r){if(!this.isEmpty){for(let n=0;n<this.chunk.length;n++){let s=this.chunkPos[n],o=this.chunk[n];if(t>=s&&e<=s+o.length&&o.between(s,e-s,t-s,r)===!1)return}this.nextLayer.between(e,t,r)}}iter(e=0){return To.from([this]).goto(e)}get isEmpty(){return this.nextLayer==this}static iter(e,t=0){return To.from(e).goto(t)}static compare(e,t,r,n,s=-1){let o=e.filter(O=>O.maxPoint>0||!O.isEm Line truncated
`)}static newName(){let e=c0[l0]||1;return c0[l0]=e+1,"\u037C"+e.toString(36)}static mount(e,t,r){let n=e[$f],s=r&&r.nonce;n?s&&n.setNonce(s):n=new Pf(e,s),n.mount(Array.isArray(t)?t:[t],e)}},h0=new Map,Pf=class{constructor(e,t){let r=e.ownerDocument||e,n=r.defaultView;if(!e.head&&e.adoptedStyleSheets&&n.CSSStyleSheet){let s=h0.get(r);if(s)return e[$f]=s;this.sheet=new n.CSSStyleSheet,h0.set(r,this)}else this.styleTag=r.createElement("style"),t&&this.styleTag.setAttribute("nonce",t);this.modules=[],e[$f]=this}mount(e,t){let r=this.sheet,n=0,s=0;for(let o=0;o<e.length;o++){let a=e[o],l=this.modules.indexOf(a);if(l<s&&l>-1&&(this.modules.splice(l,1),s--,l=-1),l==-1){if(this.modules.splice(s++,0,a),r)for(let c=0;c<a.rules.length;c++)r.insertRule(a.rules[c],n++)}else{for(;s<l;)n+=this.modules[s++].rules.length;n+=a.rules.length,s++}}if(r)t.adoptedStyleSheets.indexOf(this.sheet)<0&&(t.adoptedStyleSheets=[this.sheet,...t.adoptedStyleSheets]);else{let o="";for(let l=0;l<this.modules.length;l++)o+=this.modules[l].getRules()+`
`;this.styleTag.textContent=o;let a=t.head||t;this.styleTag.parentNode!=a&&a.insertBefore(this.styleTag,a.firstChild)}}setNonce(e){this.styleTag&&this.styleTag.getAttribute("nonce")!=e&&this.styleTag.setAttribute("nonce",e)}};var fr={8:"Backspace",9:"Tab",10:"Enter",12:"NumLock",13:"Enter",16:"Shift",17:"Control",18:"Alt",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",44:"PrintScreen",45:"Insert",46:"Delete",59:";",61:"=",91:"Meta",92:"Meta",106:"*",107:"+",108:",",109:"-",110:".",111:"/",144:"NumLock",145:"ScrollLock",160:"Shift",161:"Shift",162:"Control",163:"Control",164:"Alt",165:"Alt",173:"-",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"},fs={48:")",49:"!",50:"@",51:"#",52:"$",53:"%",54:"^",55:"&",56:"*",57:"(",59:":",61:"+",173:"_",186:":",187:"+",188:"<",189:"_",190:">",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"'},jP=typeof navigator!="undefined"&&/Mac/.test(navigator.platform),qP=typeof navigator!="undefined"&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent);for(ot=0;ot<10;ot++)fr[48+ot]=fr[96+ot]=String(ot);var ot;for(ot=1;ot<=24;ot++)fr[ot+111]="F"+ot;var ot;for(ot=65;ot<=90;ot++)fr[ot]=String.fromCharCode(ot+32),fs[ot]=String.fromCharCode(ot);var ot;for(Yl in fr)fs.hasOwnProperty(Yl)||(fs[Yl]=fr[Yl]);var Yl;function O0(i){var e=jP&&i.metaKey&&i.shiftKey&&!i.ctrlKey&&!i.altKey||qP&&i.shiftKey&&i.key&&i.key.length==1||i.key=="Unidentified",t=!e&&i.key||(i.shiftKey?fs:fr)[i.keyCode]||i.key||"Unidentified";return t=="Esc"&&(t="Escape"),t=="Del"&&(t="Delete"),t=="Left"&&(t="ArrowLeft"),t=="Up"&&(t="ArrowUp"),t=="Right"&&(t="ArrowRight"),t=="Down"&&(t="ArrowDown"),t}function rt(){var i=arguments[0];typeof i=="string"&&(i=document.createElement(i));var e=1,t=arguments[1];if(t&&typeof t=="object"&&t.nodeType==null&&!Array.isArray(t)){for(var r in t)if(Object.prototype.hasOwnProperty.call(t,r)){var n=t[r];typeof n=="string"?i.setAttribute(r,n):n!=null&&(i[r]=n)}e++}for(;e<arguments.length;e++)f0(i,arguments[e]);return i}function f0(i,e){if(typeof e=="string")i.appendChild(document.createTextNode(e));else if(e!=null)if(e.nodeType!=null)i.appendChild(e);else if(Array.isArray(e))for(var t=0;t<e.length;t++)f0(i,e[t]);else throw new RangeError("Unsupported child node: "+e)}var zt=typeof navigator!="undefined"?navigator:{userAgent:"",vendor:"",platform:""},Ef=typeof document!="undefined"?document:{documentElement:{style:{}}},zf=/Edge\/(\d+)/.exec(zt.userAgent),H0=/MSIE \d/.test(zt.userAgent),Yf=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(zt.userAgent),gc=!!(H0||Yf||zf),u0=!gc&&/gecko\/(\d+)/i.test(zt.userAgent),kf=!gc&&/Chrome\/(\d+)/.exec(zt.userAgent),d0="webkitFontSmoothing"in Ef.documentElement.style,Mf=!gc&&/Apple Computer/.test(zt.vendor),p0=Mf&&(/Mobile\/\w+/.test(zt.userAgent)||zt.maxTouchPoints>2),J={mac:p0||/Mac/.test(zt.platform),windows:/Win/.test(zt.platform),linux:/Linux|X11/.test(zt.platform),ie:gc,ie_version:H0?Ef.documentMode||6:Yf?+Yf[1]:zf?+zf[1]:0,gecko:u0,gecko_version:u0?+(/Firefox\/(\d+)/.exec(zt.userAgent)||[0,0])[1]:0,chrome:!!kf,chrome_version:kf?+kf[1]:0,ios:p0,android:/Android\b/.test(zt.userAgent),webkit:d0,webkit_version:d0?+(/\bAppleWebKit\/(\d+)/.exec(zt.userAgent)||[0,0])[1]:0,safari:Mf,safari_version:Mf?+(/\bVersion\/(\d+(\.\d+)?)/.exec(zt.userAgent)||[0,0])[1]:0,tabSize:Ef.documentElement.style.tabSize!=null?"tab-size":"-moz-tab-size"};function _u(i,e){for(let t in i)t=="class"&&e.class?e.class+=" "+i.class:t=="style"&&e.style?e.style+=";"+i.style:e[t]=i[t];return e}var Jl=Object.create(null);function Ru(i,e,t){if(i==e)return!0;i||(i=Jl),e||(e=Jl);let r=Object.keys(i),n=Object.keys(e);if(r.length-(t&&r.indexOf(t)>-1?1:0)!=n.length-(t&&n.indexOf(t)>-1?1:0))return!1;for(let s of r)if(s!=t&&(n.indexOf(s)==-1||i[s]!==e[s]))return!1;return!0}function DP(i,e){for(let t=i.attributes.length-1;t>=0;t--){let r=i.attributes[t].name;e[r]==null&&i.removeAttribute(r)}for(let t in e){let r=e[t];t=="style"?i.style.cssText=r:i.getAttribute(t)!=r&&i.setAttribute(t,r)}}function m0(i,e,t){let r=!1;if(e)for(let n in e)t&&n in t||(r=!0,n=="style"?i.style.cssText="":i.removeAttribute(n));if(t)for(let n in t)e&&e[n]==t[n]||(r=!0,n=="style"?i.style.cssText=t[n]:i.setAttribute(n,t[n]));return r}function IP(i){let e=Object.create(null);for(let t=0;t<i.attributes.length;t++){let r=i.attributes[t];e[r.name]=r.value}return e}var at=class{eq(e){return!1}updateDOM(e,t,r){return!1}compare(e){return this==e||this.constructor==e.constructor&&this.eq(e)}get estimatedHeight(){return-1}get lineBreaks(){return 0}ignoreEvent(e){return!0}coordsAt(e,t,r){return null}get isHidden(){return!1}get editable(){return!1}destroy(e){}},xt=(function(i){return i[i.Text=0]="Text",i[i.WidgetBefore=1]="WidgetBefore",i[i.WidgetAfter=2]="WidgetAfter",i[i.WidgetRange=3]="WidgetRange",i})(xt||(xt={})),I=class extends di{constructor(e,t,r,n){super(),this.startSide=e,this.endSLine truncated
`,n=i.state.doc.line(n.number+(t?1:-1)),s=i.bidiSpans(n),c=i.visualLineSide(n,!t)}if(l){if(!l(h))return a}else{if(!r)return c;l=r(h)}a=c}}function $1(i,e,t){let r=i.state.charCategorizer(e),n=r(t);return s=>{let o=r(s);return n==Me.Space&&(n=o),n==o}}function P1(i,e,t,r){let n=e.head,s=t?1:-1;if(n==(t?i.state.doc.length:0))return U.cursor(n,e.assoc);let o=e.goalColumn,a,l=i.contentDOM.getBoundingClientRect(),c=i.coordsAtPos(n,e.assoc||((e.empty?t:e.head==e.from)?1:-1)),h=i.documentTop;if(c)o==null&&(o=c.left-l.left),a=s<0?c.top:c.bottom;else{let p=i.viewState.lineBlockAt(n);o==null&&(o=Math.min(l.right-l.left,i.defaultCharacterWidth*(n-p.from))),a=(s<0?p.top:p.bottom)+h}let O=l.left+o,f=i.viewState.heightOracle.textHeight>>1,u=r!=null?r:f;for(let p=0;;p+=f){let m=a+(u+p)*s,S=tu(i,{x:O,y:m},!1,s);if(t?m>l.bottom:m<l.top)return U.cursor(S.pos,S.assoc);let w=i.coordsAtPos(S.pos,S.assoc),C=w?(w.top+w.bottom)/2:0;if(!w||(t?C>a:C<a))return U.cursor(S.pos,S.assoc,void 0,o)}}function Yo(i,e,t){for(;;){let r=0;for(let n of i)n.between(e-1,e+1,(s,o,a)=>{if(e>s&&e<o){let l=r||t||(e-s<o-e?-1:1);e=l<0?s:o,r=l}});if(!r)return e}}function Xb(i,e){let t=null;for(let r=0;r<e.ranges.length;r++){let n=e.ranges[r],s=null;if(n.empty){let o=Yo(i,n.from,0);o!=n.from&&(s=U.cursor(o,-1))}else{let o=Yo(i,n.from,-1),a=Yo(i,n.to,1);(o!=n.from||a!=n.to)&&(n.undirectional?s=U.undirectionalRange(n.from,n.to):s=U.range(n.from==n.anchor?o:a,n.from==n.head?o:a))}s&&(t||(t=e.ranges.slice()),t[r]=s)}return t?U.create(t,e.mainIndex):e}function _f(i,e,t){let r=Yo(i.state.facet(Bo).map(n=>n(i)),t.from,e.head>t.from?-1:1);return r==t.from?t:U.cursor(r,r<t.from?1:-1)}var bi=class{constructor(e,t){this.pos=e,this.assoc=t}};function tu(i,e,t,r){let n=i.contentDOM.getBoundingClientRect(),s=n.top+i.viewState.paddingTop,{x:o,y:a}=e,l=a-s,c;for(;;){if(l<0)return new bi(0,1);if(l>i.viewState.docHeight)return new bi(i.state.doc.length,-1);if(c=i.elementAtHeight(l),r==null)break;if(c.type==xt.Text){if(r<0?c.to<i.viewport.from:c.from>i.viewport.to)break;let f=i.docView.coordsAt(r<0?c.from:c.to,r>0?-1:1);if(f&&(r<0?f.top<=l+s:f.bottom>=l+s))break}let O=i.viewState.heightOracle.textHeight/2;l=r>0?c.bottom+O:c.top-O}if(i.viewport.from>=c.to||i.viewport.to<=c.from){if(t)return null;if(c.type==xt.Text){let O=w1(i,n,c,o,a);return new bi(O,O==c.from?1:-1)}}if(c.type!=xt.Text)return l<(c.top+c.bottom)/2?new bi(c.from,1):new bi(c.to,-1);let h=i.docView.lineAt(c.from,2);return(!h||h.length!=c.length)&&(h=i.docView.lineAt(c.from,-2)),new iu(i,o,a,i.textDirectionAt(c.from)).scanTile(h,c.from)}var iu=class{constructor(e,t,r,n){this.view=e,this.x=t,this.y=r,this.baseDir=n,this.line=null,this.spans=null}bidiSpansAt(e){return(!this.line||this.line.from>e||this.line.to<e)&&(this.line=this.view.state.doc.lineAt(e),this.spans=this.view.bidiSpans(this.line)),this}baseDirAt(e,t){let{line:r,spans:n}=this.bidiSpansAt(e);return n[xi.find(n,e-r.from,-1,t)].level==this.baseDir}dirAt(e,t){let{line:r,spans:n}=this.bidiSpansAt(e);return n[xi.find(n,e-r.from,-1,t)].dir}bidiIn(e,t){let{spans:r,line:n}=this.bidiSpansAt(e);return r.length>1||r.length&&(r[0].level!=this.baseDir||r[0].to+n.from<t)}scan(e,t,r=!1){let n=0,s=e.length-1,o=new Set,a=this.bidiIn(e[0],e[s]),l,c,h=-1,O=1e9,f;e:for(;n<s;){let p=s-n,m=n+s>>1;t:if(o.has(m)){for(let C=1;C<p;C++){let R=m+C;if(R>=s&&(R-=p),!o.has(R)){m=R;break t}}break e}o.add(m);let S=t(m),w=0;if(S)for(let C=0;C<S.length;C++){let R=S[C];if(!(R.width==0&&S.length>1))if(R.bottom<this.y)(!l||l.bottom<R.bottom)&&(l=R),w=1;else if(R.top>this.y)(!c||c.top>R.top)&&(c=R),w=-1;else{let A=R.left>this.x?this.x-R.left:R.right<this.x?this.x-R.right:0,k=Math.abs(A);k<O&&(h=m,O=k,f=R),A&&(w=A<0==(this.baseDir==Ye.LTR)?-1:1)}}w==-1&&(!a||this.baseDirAt(e[m],1))?s=m:w==1&&(!a||this.baseDirAt(e[m+1],-1))&&(n=m+1)}if(!f){if(!c&&!l)return{i:e[0],after:!1};let p=l&&(!c||this.y-l.bottom<c.top-this.y)?l:c;return this.y=(p.top+p.bottom)/2,this.scan(e,t,!0)}if(O&&!r){let{top:p,bottom:m}=f;if(l&&l.bottom>(p+p+m)/3)return this.y=l.bottom-1,this.scan(e,t,!0);if(c&&c.top<(p+m+m)/3)return this.y=c.top+1,this.scan(e,t,!0)}let u=(a?this.dirAt(e[h],1):this.baseDir)==Ye.LTR;return{i:h,after:this.x>(f.left+f.right)/2==u}}scanText(e,t){let r=[];for(let s=0;s<e.length;s=it(e.text,s))r.push(t+s);r.push(t+e.length);let n=this.scan(r,s=>{let o=r[s]-t,a=r[s+1]-t;return Do(e.dom,o,a).getClientRects()});return n.after?new bi(r[n.i+1],-1):new bi(r[n.i],1)}scanTile(e,t){if(!e.length)return new bi(t,1);if(e.children.length==1){let a=e.children[0];if(a.isText())return this.scanText(a,t);if(a.isComposite())return this.scanTile(a,t)}let r=[t];for(let a=0,l=t;a<e.children.length;a++)r.push(l+=e.children[a].length);let n=this.scan(r,a=>{let l=e.children[a];return l.flags&48?null:(l.dom.nodeType==1?l.dom:Do(l.dom,0,l.length)).getClientRects()}),s=e.children[n.i],o=r[n.i];return s.isText()?this.scanText(s,o):s.isComposite()?this.scanTile(s,o):n.after?new bi(r[n.i+1],-1):new bi(o,1)}},us="\uFFFF",ru=class{ Line truncated
`&&i.lineWrapping&&(r&&(r=U.single(r.main.anchor-1,r.main.head-1)),t={from:s.from,to:s.to,insert:$e.of([" "])}),t)return Yu(i,t,r,o);if(r&&!ac(r,s)){let a=!1,l="select";return i.inputState.lastSelectionTime>Date.now()-50&&(i.inputState.lastSelectionOrigin=="select"&&(a=!0),l=i.inputState.lastSelectionOrigin,l=="select.pointer"&&(r=Xb(n.facet(Bo).map(c=>c(i)),r))),i.dispatch({selection:r,scrollIntoView:a,userEvent:l}),!0}else return!1}function Yu(i,e,t,r=-1){if(J.ios&&i.inputState.flushIOSKey(e))return!0;let n=i.state.selection.main;if(J.android&&(e.to==n.to&&(e.from==n.from||e.from==n.from-1&&i.state.sliceDoc(e.from,n.from)==" ")&&e.insert.length==1&&e.insert.lines==2&&xs(i.contentDOM,"Enter",13)||(e.from==n.from-1&&e.to==n.to&&e.insert.length==0||r==8&&e.insert.length<e.to-e.from&&e.to>n.head)&&xs(i.contentDOM,"Backspace",8)||e.from==n.from&&e.to==n.to+1&&e.insert.length==0&&xs(i.contentDOM,"Delete",46)))return!0;let s=e.insert.toString();i.inputState.composing>=0&&i.inputState.composing++;let o,a=()=>o||(o=T1(i,e,t));return i.state.facet(mb).some(l=>l(i,e.from,e.to,s,a))||i.dispatch(a()),!0}function T1(i,e,t){let r,n=i.state,s=n.selection.main,o=-1;if(e.from==e.to&&e.from<s.from||e.from>s.to){let l=e.from<s.from?-1:1,c=l<0?s.from:s.to,h=Yo(n.facet(Bo).map(O=>O(i)),c,l);e.from==h&&(o=h)}if(o>-1)r={changes:e,selection:U.cursor(e.from+e.insert.length,-1)};else if(e.from>=s.from&&e.to<=s.to&&e.to-e.from>=(s.to-s.from)/3&&(!t||t.main.empty&&t.main.from==e.from+e.insert.length)&&i.inputState.composing<0){let l=s.from<e.from?n.sliceDoc(s.from,e.from):"",c=s.to>e.to?n.sliceDoc(e.to,s.to):"";r=n.replaceSelection(i.state.toText(l+e.insert.sliceString(0,void 0,i.state.lineBreak)+c))}else{let l=n.changes(e),c=t&&t.main.to<=l.newLength?t.main:void 0;if(n.selection.ranges.length>1&&(i.inputState.composing>=0||i.inputState.compositionPendingChange)&&e.to<=s.to+10&&e.to>=s.to-10){let h=i.state.sliceDoc(e.from,e.to),O,f=t&&kb(i,t.main.head);if(f){let p=e.insert.length-(e.to-e.from);O={from:f.from,to:f.to-p}}else O=i.state.doc.lineAt(s.head);let u=s.to-e.to;r=n.changeByRange(p=>{if(p.from==s.from&&p.to==s.to)return{changes:l,range:c||p.map(l)};let m=p.to-u,S=m-h.length;if(i.state.sliceDoc(S,m)!=h||m>=O.from&&S<=O.to)return{range:p};let w=n.changes({from:S,to:m,insert:e.insert}),C=p.to-s.to;return{changes:w,range:c?U.range(Math.max(0,c.anchor+C),Math.max(0,c.head+C)):p.map(w)}})}else r={changes:l,selection:c&&n.selection.replaceRange(c)}}let a="input.type";return(i.composing||i.inputState.compositionPendingChange&&i.inputState.compositionEndedAt>Date.now()-50)&&(i.inputState.compositionPendingChange=!1,a+=".compose",i.inputState.compositionFirstChange&&(a+=".start",i.inputState.compositionFirstChange=!1)),n.update(r,{userEvent:a,scrollIntoView:!0})}function Rb(i,e,t,r){let n=Math.min(i.length,e.length),s=0;for(;s<n&&i.charCodeAt(s)==e.charCodeAt(s);)s++;if(s==n&&i.length==e.length)return null;let o=i.length,a=e.length;for(;o>0&&a>0&&i.charCodeAt(o-1)==e.charCodeAt(a-1);)o--,a--;if(r=="end"){let l=Math.max(0,s-Math.min(o,a));t-=o+l-s}if(o<s&&i.length<e.length){let l=t<=s&&t>=o?s-t:0;s-=l,a=s+(a-o),o=s}else if(a<s){let l=t<=s&&t>=a?s-t:0;s-=l,o=s+(o-a),a=s}return{from:s,toA:o,toB:a}}function _1(i){let e=[];if(i.root.activeElement!=i.contentDOM)return e;let{anchorNode:t,anchorOffset:r,focusNode:n,focusOffset:s}=i.observer.selectionRange;return t&&(e.push(new oc(t,r)),(n!=t||s!=r)&&e.push(new oc(n,s))),e}function R1(i,e){if(i.length==0)return null;let t=i[0].pos,r=i.length==2?i[1].pos:t;return t>-1&&r>-1?U.single(t+e,r+e):null}function ac(i,e){return e.head==i.main.head&&e.anchor==i.main.anchor}var su=class{setSelectionOrigin(e){this.lastSelectionOrigin=e,this.lastSelectionTime=Date.now()}constructor(e){this.view=e,this.lastKeyCode=0,this.lastKeyTime=0,this.touchActive=!1,this.lastTouchTime=0,this.lastTouchX=0,this.lastTouchY=0,this.lastFocusTime=0,this.lastScrollTop=0,this.lastScrollLeft=0,this.lastWheelEvent=0,this.pendingIOSKey=void 0,this.lastIOSMomentumScroll=0,this.tabFocusMode=-1,this.lastSelectionOrigin=null,this.lastSelectionTime=0,this.lastContextMenu=0,this.scrollHandlers=[],this.handlers=Object.create(null),this.composing=-1,this.compositionFirstChange=null,this.compositionEndedAt=0,this.compositionPendingKey=!1,this.compositionPendingChange=!1,this.insertingText="",this.insertingTextAt=0,this.mouseSelection=null,this.draggedContent=null,this.handleEvent=this.handleEvent.bind(this),this.notifiedFocused=e.hasFocus,J.safari&&e.contentDOM.addEventListener("input",()=>null),J.gecko&&I1(e.contentDOM.ownerDocument)}handleEvent(e){!M1(this.view,e)||this.ignoreDuringComposition(e)||e.type=="keydown"&&this.keydown(e)||(this.view.updateState!=0?Promise.resolve().then(()=>this.runHandlers(e.type,e)):this.runHandlers(e.type,e))}runHandlers(e,t){let r=this.handlers[e];if(r){for(let n of r.observers)n(this.view,t);for(let n of r.handlers){if(t.defaultPrevented)break;if(n(this.view,t)){t.preventDefault();break}}}}ensureHandlers( Line truncated
`))};if((J.mac||J.android)&&O.from==o-1&&/^\. ?$/.test(r.text)&&e.contentDOM.getAttribute("autocorrect")=="off"&&(O={from:a,to:l,insert:$e.of([r.text.replace("."," ")])}),this.pendingContextChange=O,!e.state.readOnly){let f=this.to-this.from+(O.to-O.from+O.insert.length);Yu(e,O,U.single(this.toEditorPos(r.selectionStart,f),this.toEditorPos(r.selectionEnd,f)))}this.pendingContextChange&&(this.revertPending(e.state),this.setSelection(e.state)),O.from<O.to&&!O.insert.length&&e.inputState.composing>=0&&!/[\\p{Alphabetic}\\p{Number}_]/.test(t.text.slice(Math.max(0,r.updateRangeStart-1),Math.min(t.text.length,r.updateRangeStart+1)))&&this.handlers.compositionend(r)},this.handlers.characterboundsupdate=r=>{let n=[],s=null;for(let o=this.toEditorPos(r.rangeStart),a=this.toEditorPos(r.rangeEnd);o<a;o++){let l=e.coordsForChar(o);s=l&&new DOMRect(l.left,l.top,l.right-l.left,l.bottom-l.top)||s||new DOMRect,n.push(s)}t.updateCharacterBounds(r.rangeStart,n)},this.handlers.textformatupdate=r=>{let n=[];for(let s of r.getTextFormats()){let o=s.underlineStyle,a=s.underlineThickness;if(!/none/i.test(o)&&!/none/i.test(a)){let l=this.toEditorPos(s.rangeStart),c=this.toEditorPos(s.rangeEnd);if(l<c){let h=`text-decoration: underline ${/^[a-z]/.test(o)?o+" ":o=="Dashed"?"dashed ":o=="Squiggle"?"wavy ":""}${/thin/i.test(a)?1:2}px`;n.push(I.mark({attributes:{style:h}}).range(l,c))}}}e.dispatch({effects:Qb.of(I.set(n))})},this.handlers.compositionstart=()=>{e.inputState.composing<0&&(e.inputState.composing=0,e.inputState.compositionFirstChange=!0)},this.handlers.compositionend=()=>{if(e.inputState.composing=-1,e.inputState.compositionFirstChange=null,this.composing){let{drifted:r}=this.composing;this.composing=null,r&&this.reset(e.state)}};for(let r in this.handlers)t.addEventListener(r,this.handlers[r]);this.measureReq={read:r=>{let n=qo(r.root);n&&n.rangeCount&&this.editContext.updateSelectionBounds(n.getRangeAt(0).getBoundingClientRect())}}}applyEdits(e){let t=0,r=!1,n=this.pendingContextChange;return e.changes.iterChanges((s,o,a,l,c)=>{if(r)return;let h=c.length-(o-s);if(n&&o>=n.to)if(n.from==s&&n.to==o&&n.insert.eq(c)){n=this.pendingContextChange=null,t+=h,this.to+=h;return}else n=null,this.revertPending(e.state);if(s+=t,o+=t,o<=this.from)this.from+=h,this.to+=h;else if(s<this.to){if(s<this.from||o>this.to||this.to-this.from+c.length>3e4){r=!0;return}this.editContext.updateText(this.toContextPos(s),this.toContextPos(o),c.toString()),this.to+=h}t+=h}),n&&!r&&this.revertPending(e.state),!r}update(e){let t=this.pendingContextChange,r=e.startState.selection.main;this.composing&&(this.composing.drifted||!e.changes.touchesRange(r.from,r.to)&&e.transactions.some(n=>!n.isUserEvent("input.type")&&n.changes.touchesRange(this.from,this.to)))?(this.composing.drifted=!0,this.composing.editorBase=e.changes.mapPos(this.composing.editorBase)):!this.applyEdits(e)||!this.rangeIsValid(e.state)?(this.pendingContextChange=null,this.reset(e.state)):(e.docChanged||e.selectionSet||t)&&this.setSelection(e.state),(e.geometryChanged||e.docChanged||e.selectionSet)&&e.view.requestMeasure(this.measureReq)}resetRange(e){let{head:t}=e.selection.main;this.from=Math.max(0,t-1e4),this.to=Math.min(e.doc.length,t+1e4)}reset(e){this.resetRange(e),this.editContext.updateText(0,this.editContext.text.length,e.doc.sliceString(this.from,this.to)),this.setSelection(e)}revertPending(e){let t=this.pendingContextChange;this.pendingContextChange=null,this.editContext.updateText(this.toContextPos(t.from),this.toContextPos(t.from+t.insert.length),e.doc.sliceString(t.from,t.to))}setSelection(e){let{main:t}=e.selection,r=this.toContextPos(Math.max(this.from,Math.min(this.to,t.anchor))),n=this.toContextPos(t.head);(this.editContext.selectionStart!=r||this.editContext.selectionEnd!=n)&&this.editContext.updateSelection(r,n)}rangeIsValid(e){let{head:t}=e.selection.main;return!(this.from>0&&t-this.from<500||this.to<e.doc.length&&this.to-t<500||this.to-this.from>1e4*3)}toEditorPos(e,t=this.to-this.from){e=Math.min(e,t);let r=this.composing;return r&&r.drifted?r.editorBase+(e-r.contextBase):e+this.from}toContextPos(e){let t=this.composing;return t&&t.drifted?t.contextBase+(e-t.editorBase):e-this.from}destroy(){for(let e in this.handlers)this.editContext.removeEventListener(e,this.handlers[e])}},W=class i{get state(){return this.viewState.state}get viewport(){return this.viewState.viewport}get visibleRanges(){return this.viewState.visibleRanges}get inView(){return this.viewState.inView}get composing(){return!!this.inputState&&this.inputState.composing>0}get compositionStarted(){return!!this.inputState&&this.inputState.composing>=0}get root(){return this._root}get win(){return this.dom.ownerDocument.defaultView||window}constructor(e={}){var t;this.plugins=[],this.pluginMap=new Map,this.editorAttrs={},this.contentAttrs={},this.bidiCache=[],this.destroyed=!1,this.updateState=2,this.measureScheduled=-1,this.measureRequests=[],this.contentDOM=document.createElement("div"),this.scrollDOM=doc Line truncated
-\x7F-\x9F\xAD\u061C\u200B\u200E\u200F\u2028\u2029\u202D\u202E\u2066\u2067\u2069\uFEFF\uFFF9-\uFFFC]`,vu),xk={0:"null",7:"bell",8:"backspace",10:"newline",11:"vertical tab",13:"carriage return",27:"escape",8203:"zero width space",8204:"zero width non-joiner",8205:"zero width joiner",8206:"left-to-right mark",8207:"right-to-left mark",8232:"line separator",8237:"left-to-right override",8238:"right-to-left override",8294:"left-to-right isolate",8295:"right-to-left isolate",8297:"pop directional isolate",8233:"paragraph separator",65279:"zero width no-break space",65532:"object replacement"},Zf=null;function Sk(){var i;if(Zf==null&&typeof document!="undefined"&&document.body){let e=document.body.style;Zf=((i=e.tabSize)!==null&&i!==void 0?i:e.MozTabSize)!=null}return Zf||!1}var Hl=K.define({combine(i){let e=ei(i,{render:null,specialChars:bk,addSpecialChars:null});return(e.replaceTabs=!Sk())&&(e.specialChars=new RegExp(" |"+e.specialChars.source,vu)),e.addSpecialChars&&(e.specialChars=new RegExp(e.specialChars.source+"|"+e.addSpecialChars.source,vu)),e}});function Hb(i={}){return[Hl.of(i),Qk()]}var j0=null;function Qk(){return j0||(j0=je.fromClass(class{constructor(i){this.view=i,this.decorations=I.none,this.decorationCache=Object.create(null),this.decorator=this.makeDecorator(i.state.facet(Hl)),this.decorations=this.decorator.createDeco(i)}makeDecorator(i){return new Io({regexp:i.specialChars,decoration:(e,t,r)=>{let{doc:n}=t.state,s=Zi(e[0],0);if(s==9){let o=n.lineAt(r),a=t.state.tabSize,l=Et(o.text,a,r-o.from);return I.replace({widget:new yu((a-l%a)*this.view.defaultCharacterWidth/this.view.scaleX)})}return this.decorationCache[s]||(this.decorationCache[s]=I.replace({widget:new wu(i,s)}))},boundary:i.replaceTabs?void 0:/[^]/})}update(i){let e=i.state.facet(Hl);i.startState.facet(Hl)!=e?(this.decorator=this.makeDecorator(e),this.decorations=this.decorator.createDeco(i.view)):this.decorations=this.decorator.updateDeco(i,this.decorations)}},{decorations:i=>i.decorations}))}var vk="\u2022";function wk(i){return i>=32?vk:i==10?"\u2424":String.fromCharCode(9216+i)}var wu=class extends at{constructor(e,t){super(),this.options=e,this.code=t}eq(e){return e.code==this.code}toDOM(e){let t=wk(this.code),r=e.state.phrase("Control character")+" "+(xk[this.code]||"0x"+this.code.toString(16)),n=this.options.render&&this.options.render(this.code,r,t);if(n)return n;let s=document.createElement("span");return s.textContent=t,s.title=r,s.setAttribute("aria-label",r),s.className="cm-specialChar",s}ignoreEvent(){return!1}},yu=class extends at{constructor(e){super(),this.width=e}eq(e){return e.width==this.width}toDOM(){let e=document.createElement("span");return e.textContent=" ",e.className="cm-tab",e.style.width=this.width+"px",e}ignoreEvent(){return!1}};function Qc(){return $k}var yk=I.line({class:"cm-activeLine"}),$k=je.fromClass(class{constructor(i){this.decorations=this.getDeco(i)}update(i){(i.docChanged||i.selectionSet)&&(this.decorations=this.getDeco(i.view))}getDeco(i){let e=-1,t=[];for(let r of i.state.selection.ranges){let n=i.lineBlockAt(r.head);n.from>e&&(t.push(yk.range(n.from)),e=n.from)}return I.set(t)}},{decorations:i=>i.decorations});var $u=2e3;function Pk(i,e,t){let r=Math.min(e.line,t.line),n=Math.max(e.line,t.line),s=[];if(e.off>$u||t.off>$u||e.col<0||t.col<0){let o=Math.min(e.off,t.off),a=Math.max(e.off,t.off);for(let l=r;l<=n;l++){let c=i.doc.line(l);c.length<=a&&s.push(U.range(c.from+o,c.to+a))}}else{let o=Math.min(e.col,t.col),a=Math.max(e.col,t.col);for(let l=r;l<=n;l++){let c=i.doc.line(l),h=zl(c.text,o,i.tabSize,!0);if(h<0)s.push(U.cursor(c.to));else{let O=zl(c.text,a,i.tabSize);s.push(U.range(c.from+h,c.from+O))}}}return s}function kk(i,e){let t=i.coordsAtPos(i.viewport.from);return t?Math.round(Math.abs((t.left-e)/i.defaultCharacterWidth)):-1}function q0(i,e){let t=i.posAtCoords({x:e.clientX,y:e.clientY},!1),r=i.state.doc.lineAt(t),n=t-r.from,s=n>$u?-1:n==r.length?kk(i,e.clientX):Et(r.text,i.state.tabSize,t-r.from);return{line:r.number,col:s,off:n}}function Xk(i,e){let t=q0(i,e),r=i.state.selection;return t?{update(n){if(n.docChanged){let s=n.changes.mapPos(n.startState.doc.line(t.line).from),o=n.state.doc.lineAt(s);t={line:o.number,col:t.col,off:Math.min(t.off,o.length)},r=r.map(n.changes)}},get(n,s,o){let a=q0(i,n);if(!a)return r;let l=Pk(i.state,t,a);return l.length?o?U.create(l.concat(r.ranges)):U.create(l):r}}:null}function vc(i){let e=(i==null?void 0:i.eventFilter)||(t=>t.altKey&&t.button==0);return W.mouseSelectionStyle.of((t,r)=>e(r)?Xk(t,r):null)}var Tk={Alt:[18,i=>!!i.altKey],Control:[17,i=>!!i.ctrlKey],Shift:[16,i=>!!i.shiftKey],Meta:[91,i=>!!i.metaKey]},_k={style:"cursor: crosshair"};function wc(i={}){let[e,t]=Tk[i.key||"Alt"],r=je.fromClass(class{constructor(n){this.view=n,this.isDown=!1}set(n){this.isDown!=n&&(this.isDown=n,this.view.update([]))}},{eventObservers:{keydown(n){this.set(n.keyCode==e||t(n))},keyup(n){(n.keyCode==e||!t(n))&&this.set(!1)},mousemove(n){this.set(t(n))}}});retur Line truncated
`&&(t="");else{let r=t.indexOf(`
`);r>-1&&(t=t.slice(0,r))}return e+t.length<=this.to?t:t.slice(0,this.to-e)}nextLine(){let e=this.parsedPos,t=this.lineAfter(e),r=e+t.length;for(let n=this.rangeIndex;;){let s=this.ranges[n].to;if(s>=r||(t=t.slice(0,s-(r-t.length)),n++,n==this.ranges.length))break;let o=this.ranges[n].from,a=this.lineAfter(o);t+=a,r=o+a.length}return{line:t,end:r}}skipGapsTo(e,t,r){for(;;){let n=this.ranges[this.rangeIndex].to,s=e+t;if(r>0?n>s:n>=s)break;let o=this.ranges[++this.rangeIndex].from;t+=o-n}return t}moveRangeIndex(){for(;this.ranges[this.rangeIndex].to<this.parsedPos;)this.rangeIndex++}emitToken(e,t,r,n){let s=4;if(this.ranges.length>1){n=this.skipGapsTo(t,n,1),t+=n;let a=this.chunk.length;n=this.skipGapsTo(r,n,-1),r+=n,s+=this.chunk.length-a}let o=this.chunk.length-4;return this.lang.streamParser.mergeTokens&&s==4&&o>=0&&this.chunk[o]==e&&this.chunk[o+2]==t?this.chunk[o+2]=r:this.chunk.push(e,t,r,s),n}parseLine(e){let{line:t,end:r}=this.nextLine(),n=0,{streamParser:s}=this.lang,o=new Ec(t,e?e.state.tabSize:4,e?jr(e.state):2);if(o.eol())s.blankLine(this.state,o.indentUnit);else for(;!o.eol();){let a=Ix(s.token,o,this.state);if(a&&(n=this.emitToken(this.lang.tokenTable.resolve(a),this.parsedPos+o.start,this.parsedPos+o.pos,n)),o.start>1e4)break}this.parsedPos=r,this.moveRangeIndex(),this.parsedPos<this.to&&this.parsedPos++}finishChunk(){let e=Se.build({buffer:this.chunk,start:this.chunkStart,length:this.parsedPos-this.chunkStart,nodeSet:YX,topID:0,maxBufferLength:512,reused:this.chunkReused});e=new Se(e.type,e.children,e.positions,e.length,[[this.lang.stateAfter,this.lang.streamParser.copyState(this.state)]]),this.chunks.push(e),this.chunkPos.push(this.chunkStart-this.ranges[0].from),this.chunk=[],this.chunkReused=void 0,this.chunkStart=this.parsedPos}finish(){return new Se(this.lang.topNode,this.chunks,this.chunkPos,this.parsedPos-this.ranges[0].from).balance()}};function Ix(i,e,t){e.start=e.pos;for(let r=0;r<10;r++){let n=i(e,t);if(e.pos>e.start)return n}throw new Error("Stream parser failed to advance stream.")}var vd=Object.create(null),ta=[Je.none],YX=new mr(ta),_x=[],Rx=Object.create(null),Fx=Object.create(null);for(let[i,e]of[["variable","variableName"],["variable-2","variableName.special"],["string-2","string.special"],["def","variableName.definition"],["tag","tagName"],["attribute","attributeName"],["type","typeName"],["builtin","variableName.standard"],["qualifier","modifier"],["error","invalid"],["header","heading"],["property","propertyName"]])Fx[i]=Bx(vd,e);var zc=class{constructor(e){this.extra=e,this.table=Object.assign(Object.create(null),Fx)}resolve(e){return e?this.table[e]||(this.table[e]=Bx(this.extra,e)):0}},MX=new zc(vd);function od(i,e){_x.indexOf(i)>-1||(_x.push(i),console.warn(e))}function Bx(i,e){let t=[];for(let a of e.split(" ")){let l=[];for(let c of a.split(".")){let h=i[c]||d[c];h?typeof h=="function"?l.length?l=l.map(h):od(c,`Modifier ${c} used at start of tag`):l.length?od(c,`Tag ${c} used as modifier`):l=Array.isArray(h)?h:[h]:od(c,`Unknown highlighting tag ${c}`)}for(let c of l)t.push(c)}if(!t.length)return 0;let r=e.replace(/ /g,"_"),n=r+" "+t.map(a=>a.id),s=Rx[n];if(s)return s.id;let o=Rx[n]=Je.define({id:ta.length,name:r,props:[St({[r]:t})]});return ta.push(o),o.id}function LX(i,e){let t=Je.define({id:ta.length,name:"Document",props:[xr.add(()=>i),Qi.add(()=>r=>e.getIndent(r))],top:!0});return ta.push(t),t}var az={rtl:I.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"rtl"},bidiIsolate:Ye.RTL}),ltr:I.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"ltr"},bidiIsolate:Ye.LTR}),auto:I.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"auto"},bidiIsolate:null})};var jc=class{constructor(e,t,r,n){this.state=e,this.pos=t,this.explicit=r,this.view=n,this.abortListeners=[],this.abortOnDocChange=!1}tokenBefore(e){let t=_e(this.state).resolveInner(this.pos,-1);for(;t&&e.indexOf(t.name)<0;)t=t.parent;return t?{from:t.from,to:this.pos,text:this.state.sliceDoc(t.from,this.pos),type:t.type}:null}matchBefore(e){let t=this.state.doc.lineAt(this.pos),r=Math.max(t.from,this.pos-250),n=t.text.slice(r-t.from,this.pos-t.from),s=n.search(VX(e,!1));return s<0?null:{from:r+s,to:this.pos,text:n.slice(s)}}get aborted(){return this.abortListeners==null}addEventListener(e,t,r){e=="abort"&&this.abortListeners&&(this.abortListeners.push(t),r&&r.onDocChange&&(this.abortOnDocChange=!0))}};function Gx(i){let e=Object.keys(i).join(""),t=/\w/.test(e);return t&&(e=e.replace(/\w/g,"")),`[${t?"\\w":""}${e.replace(/[^\w\s]/g,"\\$&")}]`}function WX(i){let e=Object.create(null),t=Object.create(null);for(let{label:n}of i){e[n[0]]=!0;for(let s=1;s<n.length;s++)t[n[s]]=!0}let r=Gx(e)+Gx(t)+"*$";return[new RegExp("^"+r),new RegExp(r)]}function Jx(i){let e=i.map(n=>typeof n=="string"?{label:n}:n),[t,r]=e.every(n=>/^\w+$/.test(n.label))?[/\w*$/,/\w+$/]:WX(e);return n=>{let s=n.matchBefore(r);return s||n.explicit?{from:s?s.from:n.pos,options:e,validFor:t}:null}}function eS(i,e){return t=>{for(let r=_e(t.state).resolve Line truncated
`;let o=i.state.facet(rr),a=o instanceof Qt?"Lezer LRLanguage":o instanceof ft?"StreamLanguage":"Unknown",l=o instanceof Qt?"AST ":o instanceof ft?"Token ":"Name ";return{pos:e,above:!0,arrow:!0,create(c){let h=document.createElement("div");h.style.overflow="visible",h.style.height="0",h.style.width="0";let O=document.createElement("div");return O.className="cm-debug-tooltip",O.textContent=`Parser: ${a}
${l}: ${r.name}
Tags : ${s}`,O.style.whiteSpace="pre-wrap",O.style.fontFamily="monospace",O.style.background="#333",O.style.color="white",O.style.padding="2px 8px",O.style.borderRadius="4px",O.style.fontSize="12px",O.style.border="1px solid #555",O.style.pointerEvents="none",O.style.position="absolute",O.style.bottom="0",O.style.width="max-content",h.appendChild(O),{dom:h}}}},{hoverTime:10,hideOnChange:!0});var Cd=i=>{let{state:e}=i,t=e.doc.lineAt(e.selection.main.from),r=Ad(i.state,t.from);return r.line?cT(i):r.block?OT(i):!1};function Ud(i,e){return({state:t,dispatch:r})=>{if(t.readOnly)return!1;let n=i(e,t);return n?(r(t.update(n)),!0):!1}}var cT=Ud(dT,0);var hT=Ud(gS,0);var OT=Ud((i,e)=>gS(i,e,uT(e)),0);function Ad(i,e){let t=i.languageDataAt("commentTokens",e,1);return t.length?t[0]:{}}var sa=50;function fT(i,{open:e,close:t},r,n){let s=i.sliceDoc(r-sa,r),o=i.sliceDoc(n,n+sa),a=/\s*$/.exec(s)[0].length,l=/^\s*/.exec(o)[0].length,c=s.length-a;if(s.slice(c-e.length,c)==e&&o.slice(l,l+t.length)==t)return{open:{pos:r-a,margin:a&&1},close:{pos:n+l,margin:l&&1}};let h,O;n-r<=2*sa?h=O=i.sliceDoc(r,n):(h=i.sliceDoc(r,r+sa),O=i.sliceDoc(n-sa,n));let f=/^\s*/.exec(h)[0].length,u=/\s*$/.exec(O)[0].length,p=O.length-u-t.length;return h.slice(f,f+e.length)==e&&O.slice(p,p+t.length)==t?{open:{pos:r+f+e.length,margin:/\s/.test(h.charAt(f+e.length))?1:0},close:{pos:n-u-t.length,margin:/\s/.test(O.charAt(p-1))?1:0}}:null}function uT(i){let e=[];for(let t of i.selection.ranges){let r=i.doc.lineAt(t.from),n=t.to<=r.to?r:i.doc.lineAt(t.to);n.from>r.from&&n.from==t.to&&(n=t.to==r.to+1?r:i.doc.lineAt(t.to-1));let s=e.length-1;s>=0&&e[s].to>r.from?e[s].to=n.to:e.push({from:r.from+/^\s*/.exec(r.text)[0].length,to:n.to})}return e}function gS(i,e,t=e.selection.ranges){let r=t.map(s=>Ad(e,s.from).block);if(!r.every(s=>s))return null;let n=t.map((s,o)=>fT(e,r[o],s.from,s.to));if(i!=2&&!n.every(s=>s))return{changes:e.changes(t.map((s,o)=>n[o]?[]:[{from:s.from,insert:r[o].open+" "},{from:s.to,insert:" "+r[o].close}]))};if(i!=1&&n.some(s=>s)){let s=[];for(let o=0,a;o<n.length;o++)if(a=n[o]){let l=r[o],{open:c,close:h}=a;s.push({from:c.pos-l.open.length,to:c.pos+c.margin},{from:h.pos-h.margin,to:h.pos+l.close.length})}return{changes:s}}return null}function dT(i,e,t=e.selection.ranges){let r=[],n=-1;e:for(let{from:s,to:o}of t){let a=r.length,l=1e9,c;for(let h=s;h<=o;){let O=e.doc.lineAt(h);if(c==null&&(c=Ad(e,O.from).line,!c))continue e;if(O.from>n&&(s==o||o>O.from)){n=O.from;let f=/^\s*/.exec(O.text)[0].length,u=f==O.length,p=O.text.slice(f,f+c.length)==c?f:-1;f<O.text.length&&f<l&&(l=f),r.push({line:O,comment:p,token:c,indent:f,empty:u,single:!1})}h=O.to+1}if(l<1e9)for(let h=a;h<r.length;h++)r[h].indent<r[h].line.text.length&&(r[h].indent=l);r.length==a+1&&(r[a].single=!0)}if(i!=2&&r.some(s=>s.comment<0&&(!s.empty||s.single))){let s=[];for(let{line:a,token:l,indent:c,empty:h,single:O}of r)(O||!h)&&s.push({from:a.from+c,insert:l+" "});let o=e.changes(s);return{changes:o,selection:e.selection.map(o,1)}}else if(i!=1&&r.some(s=>s.comment>=0)){let s=[];for(let{line:o,comment:a,token:l}of r)if(a>=0){let c=o.from+a,h=c+l.length;o.text[h-o.from]==" "&&h++,s.push({from:c,to:h})}return{changes:s}}return null}var _d=It.define(),Fc=It.define(),pT=K.define(),bS=K.define({combine(i){return ei(i,{minDepth:100,newGroupDelay:500,joinToEvent:(e,t)=>t},{minDepth:Math.max,newGroupDelay:Math.min,joinToEvent:(e,t)=>(r,n)=>e(r,n)||t(r,n)})}}),xS=ke.define({create(){return Rn.empty},update(i,e){let t=e.state.facet(bS),r=e.annotation(_d);if(r){let l=zi.fromTransaction(e,r.selection),c=r.side,h=c==0?i.undone:i.done;return l?h=Ic(h,h.length,t.minDepth,l):h=vS(h,e.startState.selection),new Rn(c==0?r.rest:h,c==0?h:r.rest)}let n=e.annotation(Fc);if((n=="full"||n=="before")&&(i=i.isolate()),e.annotation(Ne.addToHistory)===!1)return e.changes.empty?i:i.addMapping(e.changes.desc);let s=zi.fromTransaction(e),o=e.annotation(Ne.time),a=e.annotation(Ne.userEvent);return s?i=i.addChanges(s,o,a,t,e):e.selection&&(i=i.addSelection(e.startState.selection,o,a,t.newGroupDelay)),(n=="full"||n=="after")&&(i=i.isolate()),i},toJSON(i){return{done:i.done.map(e=>e.toJSON()),undone:i.undone.map(e=>e.toJSON())}},fromJSON(i){return new Rn(i.done.map(zi.fromJSON),i.undone.map(zi.fromJSON))}});function SS(i={}){return[xS,bS.of(i),W.domEventHandlers({beforeinput(e,t){let r=e.inputType=="historyUndo"?oa:e.inputType=="historyRedo"?Rs:null;return r?(e.preventDefault(),r(t)):!1}})]}function Bc(i,e){return function({state:t,dispatch:r}){if(!e&&t.readOnly)return!1;let n=t.field(xS,!1);if(!n)return!1;let s=n.pop(i,t,e);return s?(r(s),!0):!1}}var oa=Bc(0,!1),Rs=Bc(1,!1),mT=Bc(0,!0),gT=Bc(1,!0);var zi=class i{constructor(e,t,r,n,s){this.changes=e,this.effects=t,this.mapped=r,this.startSelection=n,this.selectionsAfter=s}setSelAfter(e){return new i(this.changes,this.effects,this.mapped,this.startSelection,e)}toJSON(){var e,t,r;return{changes:(e=this.changes)===null||e===void 0?void 0:e.toJSON(),mapped:(t=this.m Line truncated
<div class="form-group"><label>Tab size: <input type="number" id="setting_tabSize" min="1" max="40" value="${i.tabSize}" style="width:4em"></label></div>
<div class="checkbox"><label><input type="checkbox" id="setting_tabsToSpaces" ${i.tabsToSpaces?"checked":""}> Insert spaces when pressing TAB</label></div>
<div class="checkbox"><label><input type="checkbox" id="setting_highlightSpecialChars" ${i.highlightSpecialChars?"checked":""}> Highlight special characters</label></div>
<div class="checkbox"><label><input type="checkbox" id="setting_highlightWhitespace" ${i.highlightWhitespace?"checked":""}> Highlight whitespace</label></div>
<div class="checkbox"><label><input type="checkbox" id="setting_highlightTrailingWhitespace" ${i.highlightTrailingWhitespace?"checked":""}> Highlight unwanted trailing whitespace</label></div>
<div class="checkbox"><label><input type="checkbox" id="setting_showLineNumbers" ${i.showLineNumbers?"checked":""}> Show line numbers</label></div>
<div class="checkbox"><label><input type="checkbox" id="setting_closeBrackets" ${i.closeBrackets?"checked":""}> Automatically add and remove closing brackets</label></div>
<div class="checkbox"><label><input type="checkbox" id="setting_showStatusBar" ${i.showStatusBar?"checked":""}> Show keyboard shortcuts / status bar</label></div>
${e?`
<hr>
<h5>Internal</h5>
<div class="checkbox"><label><input type="checkbox" id="setting_debugHighlightTags" ${i.debugHighlightTags?"checked":""}> Debug editor syntax highlighting tags</label></div>
`:""}
</form>`,buttons:{cancel:{label:"Cancel",className:"btn-default"},ok:{label:"Save",className:"btn-primary",callback:()=>{i.tabSize=parseInt($("#setting_tabSize").val())||8,i.tabsToSpaces=$("#setting_tabsToSpaces").is(":checked"),i.highlightSpecialChars=$("#setting_highlightSpecialChars").is(":checked"),i.highlightWhitespace=$("#setting_highlightWhitespace").is(":checked"),i.highlightTrailingWhitespace=$("#setting_highlightTrailingWhitespace").is(":checked"),i.closeBrackets=$("#setting_closeBrackets").is(":checked"),i.showLineNumbers=$("#setting_showLineNumbers").is(":checked"),e&&(i.debugHighlightTags=$("#setting_debugHighlightTags").is(":checked")),i.showStatusBar=$("#setting_showStatusBar").is(":checked"),Z_(i),C_(i),xl(i.showStatusBar)}}}})}function ih(){return typeof navigator!="undefined"?navigator.storage:null}function U_(i){var e=i!==void 0?i:ih();return!!(e&&typeof e.persist=="function")}async function A_(i){var e=i!==void 0?i:ih();try{if(e&&typeof e.estimate=="function"){var t=await e.estimate();return{usage:t&&t.usage,quota:t&&t.quota}}}catch(r){console.log("storage.estimate() failed",r)}return{}}async function E_(i){var e=i!==void 0?i:ih(),t={supported:U_(e),persisted:!1};try{e&&typeof e.persisted=="function"&&(t.persisted=await e.persisted())}catch(n){console.log("storage.persisted() failed",n)}var r=await A_(e);return t.usage=r.usage,t.quota=r.quota,t}async function Md(i){var e=i!==void 0?i:ih(),t=await E_(e);if(!t.supported||t.persisted)return t.granted=!1,t;try{t.persisted=await e.persist(),t.granted=t.persisted}catch(r){console.log("storage.persist() failed",r),t.granted=!1}return t}function z_(i){return i==null&&(i=typeof navigator!="undefined"?navigator.userAgent:""),i?/Edg\/|OPR\/|Chrome\/|Chromium\//.test(i)?"chromium":/Firefox\/|FxiOS\//.test(i)?"firefox":/Safari\//.test(i)?"safari":"other":"other"}function hQ(i){if(typeof i!="number"||!isFinite(i))return"?";for(var e=["bytes","KB","MB","GB","TB"],t=0;i>=1024&&t<e.length-1;)i/=1024,t++;return(t==0?i.toFixed(0):i.toFixed(1))+" "+e[t]}function OQ(i){return i.usage==null&&i.quota==null?"":"This site is using "+hQ(i.usage)+" of the "+hQ(i.quota)+" your browser allows."}var Yd="Your edits are still saved in this browser either way &mdash; persistence only protects them if the browser needs to reclaim disk space. Use <b>File &gt; Download All Changes as ZIP</b> (or push to GitHub) to keep a backup.";function fQ(i){switch(i||z_()){case"chromium":return"Chrome and Edge never ask &mdash; they grant persistent storage on their own to sites you use regularly. Bookmarking this page, or installing it as an app, usually qualifies it; then try <b>Request Local Storage Permissions</b> again.";case"firefox":return"Firefox asks for permission the first time. If you dismissed or blocked that prompt, clear it from the padlock icon in the address bar and try <b>Request Local Storage Permissions</b> again.";case"safari":return"Safari decides on its own, and may delete site data after several days without a visit. Adding this page to your Favorites or Home Screen makes eviction less likely.";default:return"This browser decides on its own whether to keep site data."}}function Y_(){return"This browser doesn't support persistent storage, so it may discard your local file edits when it needs disk space. "+Yd}function uQ(i,e){var t=OQ(i),r;return i.supported?i.persisted?r=(i.granted?"Your browser just granted persistent storage. ":"Your browser is already persisting your local file edits. ")+Yd:r="Your browser has not granted persistent storage, so it may discard your local file edits when it needs disk space.<br><br>"+fQ()+"<br><br>"+Yd:r=Y_(),t?r+"<br><br>"+t:r}function dQ(i){return"Your browser ran out of space for this site, so your last edit may not have been saved.<br><br>"+OQ(i)+" Delete unused projects, or use <b>File &gt; Download All Changes as ZIP</b> to back up your work before it is lost."+(i.supported&&!i.persisted?"<br><br>"+fQ():"")}var gQ=DO(rf());var ca=class{constructor(e,t){e=e||[],this.lines=e,this.text=t,this.offset2loc=new Map,this.line2offset=new Map;for(var r of e)r.offset>=0&&(this.offset2loc[r.offset]||(this.offset2loc[r.offset]=r),this.line2offset[r.line]||(this.line2offset[r.line]=r.offset))}findLineForOffset(e,t){if(this.offset2loc)for(var r=0;r<=t;r++){var n=this.offset2loc[e];if(n)return n;e--}return null}lineCount(){return this.lines.length}};function pQ(i){return"errors"in i}function mQ(i){return"output"in i}var rh=class{constructor(e){this.preset_id=Ut(e)}async getRemoteFile(e){return new Promise((t,r)=>Qo(e,t,un(e)?"arraybuffer":"text"))}async getFileData(e){var t="presets/"+this.preset_id+"/"+e,r=await this.getRemoteFile(t);return r&&console.log("read",t,r.length,"bytes"),r}async setFileData(e,t){}onFileSystemUpdate(e){}};var Es=class{constructor(e,t){this.basefs=e,this.overlayfs=t}async getFileData(e){var t=await this.overlayfs.getFileData(e);return t==null?this.basefs.getFileData(e):t}async setFileData(e,t){return awaiLine truncated
=====
[Open this project in 8bitworkshop](http://8bitworkshop.com/redir.html?platform=$PLATFORM&githubURL=$GITHUBURL&file=$MAINFILE).
`;function Zn(){for(var i={},e=0;e<localStorage.length;e++){var t=localStorage.key(e);if(t.startsWith("__repo__")){var r=JSON.parse(localStorage.getItem(t)),n=t.substring(8);i[n]=r}}return i}function ha(i){var e=i.split("/",8);return e.length<5||e[0]!="https:"||e[2]!="github.com"||e[5]&&e[5]!="tree"?null:{user:e[3],repo:e[4],repopath:e[3]+"/"+e[4],branch:e[6],subtreepath:e[7]}}var ah=class{constructor(e,t,r,n){this.githubCons=e,this.githubToken=t,this.store=r,this.project=n,this.recreateGithub()}recreateGithub(){this.github=new this.githubCons({token:this.githubToken})}login(){if(this.githubToken&&this.githubToken.length)return new Promise((t,r)=>{t()});var e=new firebase.auth.GithubAuthProvider;return e.addScope("repo"),firebase.auth().signInWithPopup(e).then(t=>{this.githubToken=t.credential.accessToken;var r=t.user;this.recreateGithub(),document.cookie="__github_key="+this.githubToken+";path=/;max-age=31536000",console.log("Stored GitHub OAUTH key")})}logout(){return this.githubToken&&this.githubToken.length?firebase.auth().signOut().then(()=>{document.cookie="__github_key=;path=/;max-age=0",this.githubToken=null,this.recreateGithub()}):new Promise((e,t)=>{e()})}isFileIgnored(e){return e=e.toUpperCase(),!!(e.startsWith("LICENSE")||e.startsWith("README")||e.startsWith("."))}async getGithubSession(e){var t=ha(e);if(!t)throw new Error("Please enter a valid GitHub URL.");var r=Zn()[t.repopath],n=t.branch||r&&r.branch,s=this.github.repos(t.user,t.repo);try{n=(await s.fetch()).defaultBranch||"master"}catch(a){console.log("could not fetch default branch: "+a),n="main"}console.log("branch =",n);var o={url:e,user:t.user,reponame:t.repo,repopath:t.repopath,branch:n,subtreepath:t.subtreepath,prefix:"",repo:s,platform_id:this.project?this.project.platform_id:r?r.platform_id:null};return o}getGithubHEADTree(e){var t;return this.getGithubSession(e).then(r=>(t=r,t.repo.git.refs.heads(t.branch).fetch())).then(r=>(t.head=r,t.sha=r.object.sha,t.repo.git.trees(t.sha).fetch())).then(r=>{if(t.subtreepath){for(let n of r.tree)if(n.type=="tree"&&n.path==t.subtreepath&&n.sha)return t.repo.git.trees(n.sha).fetch();throw Error("Cannot find subtree '"+t.subtreepath+"' in tree "+r.sha)}return r}).then(r=>(t.tree=r,t))}bind(e,t){var r="__repo__"+e.repopath;if(t){var n={url:e.url,branch:e.branch,platform_id:e.platform_id,mainPath:e.mainPath,sha:e.sha};console.log("storing",n),localStorage.setItem(r,JSON.stringify(n))}else localStorage.removeItem(r)}import(e){var t;return this.getGithubSession(e).then(r=>(t=r,t.repo.contents("README.md").read())).catch(r=>(console.log(r),console.log("no README.md found"),t.repo.fetch().then(n=>""))).then(r=>{var n;if(n=/8bitworkshop.com[^)]+file=([^)&]+)/.exec(r),n&&n[1]&&(console.log("main path: '"+n[1]+"'"),t.mainPath=n[1]),n=/8bitworkshop.com[^)]+platform=([A-Za-z0-9._\-]+)/.exec(r),n){if(console.log("platform id: '"+n[1]+"'"),t.platform_id&&!t.platform_id.startsWith(n[1]))throw Error("Platform mismatch: Repository is '"+n[1]+"', you have '"+t.platform_id+"' selected.");t.platform_id=n[1]}return this.bind(t,!0),t})}pull(e,t){var r;return this.getGithubHEADTree(e).then(n=>{r=n;let s=[];return r.paths=[],r.tree.tree.forEach(o=>{if(console.log(o.path,o.type,o.size),r.paths.push(o.path),o.type=="blob"&&!this.isFileIgnored(o.path)){var a=r.repo.git.blobs(o.sha).fetch().then(l=>{var c=r.prefix+o.path,h=o.size,O=l.encoding,f=l.content;if(l.encoding=="base64"){var u=fl(atob(f)),p=un(o.path,u);f=p?u:dl(u)}return l.size!=f.length&&(f=f.slice(0,l.size)),(t||this.store).setItem(c,f)});s.push(a)}else console.log("ignoring "+o.path)}),Promise.all(s)}).then(n=>r)}importAndPull(e){return this.import(e).then(t=>this.pull(e))}publish(e,t,r,n){var s,o=this.project.platform_id,a=this.project.stripLocalPath(this.project.mainPath);return this.github.user.repos.create({name:e,description:t,private:n,auto_init:!1,license_template:r}).then(l=>{s=l;var c=M_;c=c.replace(/\$NAME/g,encodeURIComponent(e)),c=c.replace(/\$PLATFORM/g,encodeURIComponent(o)),c=c.replace(/\$GITHUBURL/g,encodeURIComponent(s.htmlUrl)),c=c.replace(/\$MAINFILE/g,encodeURIComponent(a));var h={message:"8bitworkshop: updated metadata in README.md",content:btoa(c)};return s.contents("README.md").add(h)}).then(()=>this.getGithubSession(s.htmlUrl))}commit(e,t,r){var n;return t||(t="updated from 8bitworkshop.com"),this.getGithubHEADTree(e).then(s=>{if(n=s,n.subtreepath)throw Error("Sorry, right now you can only commit files to the root directory of a repository.");return Promise.all(r.map(o=>typeof o.data=="string"?n.repo.git.blobs.create({content:o.data,encoding:"utf-8"}):n.repo.git.blobs.create({content:btoa(ul(o.data)),encoding:"base64"})))}).then(s=>n.repo.git.trees.create({tree:r.map((o,a)=>({path:o.path,mode:"100644",type:"blob",sha:s[a].sha})),base_tree:n.tree.sha})).then(s=>n.repo.git.commits.create({message:t,tree:s.sha,parents:[n.head.object.sha]})).then(s=>n.repo.commits(s.sha).fetch()).then(s=>(n.commit=s,n))}push(e){return e.head.update({sha:e.com Line truncated
`},s=window.c2t({noInitialRun:!0,print:n,printErr:n}),o=s.FS,a=lt()+".bin",l=lt()+".wav";o.writeFile(a,Lt(),{encoding:"binary"});var c=["-2bc",a+","+e.toString(16),l];s.callMain(c);var h=o.readFile(l,{encoding:"binary"});if(h){var O=new Blob([h],{type:"audio/wav"});(0,sr.saveAs)(O,l),r+="Then connect your audio output to the cassette input, turn up the volume, and play the audio file.",Pt(r)}})}function j_(i){ui("lib/makewav.js").then(()=>{let e="",t=function(a){e+=a+`
`};var r=$t(lt());let n=r+".bin",s=r+".wav";window.makewav({noInitialRun:!1,print:t,printErr:t,arguments:["-ts","-f0","-v10",n],preRun:a=>{a.FS.writeFile(n,Lt(),{encoding:"binary"})}}).ready.then(a=>{let l=[n];a.run(l),console.log(e);let h=a.FS.readFile(s,{encoding:"binary"});if(h){let O=new Blob([h],{type:"audio/wav"});(0,sr.saveAs)(O,s),e+=`
Connect your audio output to the SuperCharger input, turn up the volume, and play the audio file.`,Pt(e)}})})}function q_(i){var e=$t(lt());let t=e+".tap",r=new Cn(e),n=new lh({sine_wave:!0}),s=Lt(),o=s[0]+s[1]*256;s=s.slice(2),r.setContent({data:s,startAddress:o,type:Cn.FILE_TYPE_NON_RELOCATABLE}),r.generateSound(n);let a=n.getTAPData();if(a){let l=new Blob([a],{type:"application/octet-stream"});(0,sr.saveAs)(l,t)}}function Wd(){switch(Ut(ce)){case"vcs":return j_;case"apple2":return V_;case"c64":return q_}}function xQ(i){if(Lt()==null)return Qe("Please fix errors before exporting."),!0;var e=Wd();if(e===void 0)return Qe("Cassette export is not supported on this platform."),!0;e(i)}function SQ(i){if(Lt()==null)return Qe("Please finish compiling with no errors before downloading ROM."),!0;var e=$t(lt());if(v.getDownloadFile){var t=v.getDownloadFile(),e=$t(lt());(0,sr.saveAs)(t.blob,e+t.extension)}else if(Lt()instanceof Uint8Array){var r=new Blob([Lt()],{type:"application/octet-stream"}),n=v.getROMExtension&&v.getROMExtension(Lt())||"-"+Ut(ce)+".bin";(0,sr.saveAs)(r,e+n)}else Qe(`The "${ce}" platform doesn't have downloadable ROMs.`)}function QQ(i){var e=G.getCurrentText();if(!e)return!1;var t=new Blob([e],{type:"text/plain;charset=utf-8"});(0,sr.saveAs)(t,kQ(),{autoBom:!1})}async function vQ(){let i=(await import("./jszip.min-HOLYP7RC.js")).default;return new i}async function wQ(i){var e=await vQ();Sr().iterateFiles((t,r)=>{r&&e.file(gt(t),r)}),e.generateAsync({type:"blob"}).then(t=>{(0,sr.saveAs)(t,lt()+"-"+Ut(ce)+".zip")})}function yQ(i){let e=v.getDebugSymbolFile&&v.getDebugSymbolFile();if(!e){Qe("This project does not have debug information.");return}var t=$t(lt());(0,sr.saveAs)(e.blob,t+e.extension,{autoBom:!1})}async function $Q(i){var e=await vQ(),t=await Ir().keys();We(!0);try{var r=0;await Promise.all(t.map(s=>Ir().getItem(s).then(o=>{_i(r++/(t.length+1)),o&&e.file(s,o)})));var n=await e.generateAsync({type:"blob"});(0,sr.saveAs)(n,Ut(ce)+"-all.zip")}finally{We(!1)}}var Ld=!1;function PQ(){Ld||ui("lib/gif.js").then(()=>{var i=$("#emulator").find("canvas")[0];if(!i){Qe("Could not find canvas element to record video!");return}var e=0;i.style&&i.style.transform&&(i.style.transform.indexOf("rotate(-90deg)")>=0?e=-1:i.style.transform.indexOf("rotate(90deg)")>=0&&(e=1));var t=new GIF({workerScript:"lib/gif.worker.js",workers:4,quality:10,rotate:e}),r=$("#videoPreviewImage");t.on("progress",l=>{_i(l)}),t.on("finished",l=>{r.attr("src",URL.createObjectURL(l)),We(!1),v.resume(),$("#videoPreviewModal").modal("show")});var n=20,s=300,o=0;console.log("Recording video",i),$("#emulator").css("backgroundColor","#cc3333");var a=()=>{o++>s?(console.log("Rendering video"),$("#emulator").css("backgroundColor","inherit"),We(!0),v.pause(),t.render(),Ld=!1):(t.addFrame(i,{delay:n,copy:!0}),setTimeout(a,n),Ld=!0)};a()})}var Vd;async function Un(){if(!Vd){await ui("lib/octokat.js"),await ui("https://www.gstatic.com/firebasejs/8.8.1/firebase-app.js"),await ui("https://www.gstatic.com/firebasejs/8.8.1/firebase-auth.js"),await ui("https://8bitworkshop.com/config.js");var i=ml("__github_key");Vd=new ah(Octokat,i,Ir(),Sr()),console.log("loaded github service")}return Vd}function fa(){var i=(ct||"").split("/");return i.length!=2?(Qe("You are not in a GitHub repository. Choose one from the pulldown, or Import or Publish one."),null):"https://github.com/"+i[0]+"/"+i[1]}async function ua(i,e){var t,r=ha(i);if(!r){Qe("Could not parse GitHub URL.");return}var n=Zn()[r.repopath];if(!(n&&!confirm("You've already imported "+r.repopath+" -- do you want to replace all local files?"))){We(!0);var s=oh(r.repopath);_i(.25);var o=await Un();return o.import(i).then(a=>(t=a,_i(.75),o.pull(i,s))).then(a=>{We(!1),An(e,{repo:r.repopath})}).catch(a=>{We(!1),console.log(a),Qe("Could not import "+i+". "+a)})}}async function XQ(i){var e=await Un();e.login().then(()=>{Pt("You are signed in to GitHub.")}).catch(t=>{Qe("Could not sign in."+t)})}async function TQ(i){var e=await Un();e.logout().then(()=>{Pt("You are logged out of GitHub.")})}function _Q(i){var e=$("#importGithubModal"),t=$("#importGithubButton");e.modal("show"),e.off("shown.bs.modal").on("shown.bs.modal",()=>$("#importGithubURL").trigger("focus")),$("#importGithubURL").off("keydown").on("keydown",r=>{r.key==="Enter"&&(r.preventDefault(),t.trigger("click"))}),t.off("click").on("click",()=>{var r=$("#importGithubURL").val()+"";e.modal("hide"),ua(r,!1)})}function RQ(i){if(!(ct&&!confirm("This project ("+Sr().mainPath+") is already bound to a GitHub repository. Do you want to re-publish to a new repository? (You can instead choose 'Push Changes' to update files in the existing repository.)"))){var e=$("#publishGithubModal"),t=$("#publishGithubButton");$("#githubRepoName").val($t(gt(Sr().mainPath))),e.modal("show"),t.off("click").on("click",async()=>{var r=$("#githubRepoName").val()+"",n=$("#githubRepoDesc").val()+"",s=$("#githubRepoPrivate").val()=="private",o=$("#githubRepoLicense").val()+""Line truncated
`);for(let o=0;o<s.length;o++){let a=s[o],l=o+1,c=a.match(/(?:function|func|def|proc)\s+(\w+)/i);c&&n.push({id:`${e}:${l}:${c[1]}`,name:c[1],kind:"func",source:r,file:e,line:l});let h=a.match(/(?:var|let|const|global)\s+(\w+)/i);h&&n.push({id:`${e}:${l}:${h[1]}`,name:h[1],kind:"var",source:r,file:e,line:l});let O=a.match(/(?:struct|class|interface|type)\s+(\w+)/i);O&&n.push({id:`${e}:${l}:${O[1]}`,name:O[1],kind:"type",source:r,file:e,line:l});let f=a.match(/^\s*(\w+)\s*:/);f&&!a.trim().startsWith("//")&&n.push({id:`${e}:${l}:${f[1]}`,name:f[1],kind:"label",source:r,file:e,line:l});let u=a.match(/#define\s+(\w+)/i);u&&n.push({id:`${e}:${l}:${u[1]}`,name:u[1],kind:"macro",source:r,file:e,line:l});let p=a.match(/^\s*(\w+)\s*(?:=|equ)\s+/i);p&&n.push({id:`${e}:${l}:${p[1]}`,name:p[1],kind:"equate",source:r,file:e,line:l})}return n}var YQ=()=>null;function MQ(i){YQ=i}function En(){return YQ()}var ch=class{constructor(){this.id="project";this.kind="project";this.rebuilt=!1;this.index=new zs([])}async ready(){await this.index.init(),this.rebuilt||(this.rebuilt=!0,await this.rebuild())}query(e,t){let r=this.index.query(e,t),n=this.fulltextQuery(e,t),s=r.concat(n);return s.sort((o,a)=>a.score-o.score),s.slice(0,t)}fulltextQuery(e,t){if(e.length<2)return[];let r=e.toLowerCase(),n=[],s=Math.max(t,10),o=En();return o?(o.iterateFiles((a,l)=>{if(typeof l!="string")return;let c=l.split(`
`),h=0;for(let O=0;O<c.length;O++){let f=c[O],p=f.toLowerCase().indexOf(r);if(p>=0){let m=f.trim();if(!m)continue;if(n.push({record:{id:`text:${a}:${O+1}`,name:m.length>80?m.slice(0,80)+"\u2026":m,kind:"text",source:"project",file:a,line:O+1},score:200+Math.max(0,100-p*2),ranges:[p,p+e.length]}),++h>=s)break}}}),n):[]}async onFileChanged(e,t){let r=this.extractSymbolsFromFile(e,t,"project");this.index.pushRecords(r)}extractSymbolsFromFile(e,t,r){if(typeof t!="string")return[];let n=this.detectEditorStyle(e);return qd(t,e,n,r)}detectEditorStyle(e){var r;switch((r=e.split(".").pop())==null?void 0:r.toLowerCase()){case"c":case"h":return"text/x-csrc";case"asm":case"a65":case"inc":return"6502";case"v":return"verilog";case"wiz":return"text/x-wiz";case"bas":case"basic":return"basic";case"fb":case"fastbasic":return"fastbasic";case"bac":case"bataribasic":return"bataribasic";case"i":return"inform6";case"d":return"dialog";default:return"text/x-csrc"}}async rebuild(){this.index.clear(),await this.index.init();let e=En();if(!e)return;let t=[];e.iterateFiles((r,n)=>{if(typeof n!="string")return;let s=this.detectEditorStyle(r),o=qd(n,r,s,"project");t.push(...o)}),this.index.pushRecords(t)}};var G_=new Set(["h","hh","hpp","inc","asm","a65","s","mac","defs","def","equ","i","m","c","bas","txt"]),N_=20,hh=class{constructor(){this.id="toolchain";this.kind="toolchain";this.fsName=null;this.files=[];this.loaded=new Map;this.readyDone=!1;this.loadIdx=0;this.batchSize=N_}async ready(){if(this.readyDone)return;this.readyDone=!0;let e=En();if(!e)return;let t;try{t=e.getToolForFilename?e.getToolForFilename(e.mainPath):""}catch(o){t=""}let r=$l(t,e.platform_id),n=yl(t,e.platform_id);if(!r||!n.length)return;this.fsName=r;let s=new Set;for(let o of n){let a=await this.listFiles(o);for(let l of a)this.isSearchable(l)&&!s.has(l)&&(s.add(l),this.files.push(l))}this.files.sort()}isValid(){return this.fsName!=null&&this.files.length>0}async listFiles(e){let t=En();if(!t||!this.fsName||!t.queryWorker)return[];try{let r={preload_fs:this.fsName,listshared:e,updates:[],buildsteps:[]},n=await t.queryWorker(r),s=n&&n.output;return Array.isArray(s)?s:[]}catch(r){return console.debug("Toolchain list error:",r),[]}}async readFile(e){let t=En();if(!t||!this.fsName||!t.queryWorker)return null;try{let r={preload_fs:this.fsName,readshared:e,updates:[],buildsteps:[]},n=await t.queryWorker(r),s=n&&n.output;return s instanceof Uint8Array&&s.length>0?new TextDecoder().decode(s):null}catch(r){return console.debug("Toolchain read error:",r),null}}isSearchable(e){let t=e.split("/").pop()||e,r=t.lastIndexOf(".");return r<0?!0:G_.has(t.substring(r+1).toLowerCase())}async ensureBatch(){let e=En();if(!(!e||!e.queryWorker))for(;this.loadIdx<this.files.length;){let t=this.files.slice(this.loadIdx,this.loadIdx+this.batchSize);this.loadIdx+=t.length;let r=await Promise.all(t.map(async n=>{let s=await this.readFile(n);return[n,s]}));for(let[n,s]of r)s!=null&&this.loaded.set(n,s);if(this.loaded.size>0||this.loadIdx>=this.files.length)break}}async query(e,t){return await this.ready(),!this.isValid()||e.length<2?[]:(await this.ensureBatch(),this.textQuery(e,t))}textQuery(e,t){if(e.length<2)return[];let r=e.toLowerCase(),n=[],s=Math.max(t,5);for(let[o,a]of this.loaded){let l=a.split(`
`),c=0;for(let h=0;h<l.length;h++){let O=l[h],u=O.toLowerCase().indexOf(r);if(u>=0){let p=O.trim();if(!p)continue;if(n.push({record:{id:`toolchain:${o}:${h+1}`,name:p.length>80?p.slice(0,80)+"\u2026":p,kind:"text",source:"toolchain",file:o,line:h+1},score:200+Math.max(0,100-u*2),ranges:[u,u+e.length]}),++c>=s)break}}}return n.sort((o,a)=>a.score-o.score),n.slice(0,t)}invalidate(){this.fsName=null,this.files=[],this.loaded.clear(),this.readyDone=!1,this.loadIdx=0}};var Oh=class{constructor(){this.id="docs";this.kind="docs";this.index=null;this.readyPromise=null}async ready(){return this.readyPromise?this.readyPromise:(this.readyPromise=this.load(),this.readyPromise)}async load(){}query(e,t){return this.index?this.index.query(e,t):[]}};var K_=50,Dd=class i{constructor(){this.sources=new Map;this.projectSource=new ch,this.toolchainSource=new hh,this.docsSource=new Oh,this.sources.set("project",this.projectSource),this.sources.set("toolchain",this.toolchainSource),this.sources.set("docs",this.docsSource)}static getInstance(){return i.instance||(i.instance=new i),i.instance}parseQuery(e){return e.startsWith("#")?{needle:e.slice(1).trim(),filter:"symbols"}:e.startsWith(">")?{needle:e.slice(1).trim(),filter:"files"}:e.startsWith("?")?{needle:e.slice(1).trim(),filter:"docs"}:{needle:e,filter:"all"}}async query(e,t=K_){let{needle:r,filter:n}=this.parseQuery(e);if(!r)return[];let s=[],o=[];n==="docs"?o.push(this.docsSource):n==="files"?o.push(this.projectSource):n==="symbols"?(o.push(this.projectSource),o.push(this.toolchainSource)):(o.push(this.projectSource),o.push(this.toolchainSource),o.push(this.docsSource));for(let h of o)try{await h.ready();let O=await h.query(r,t-s.length);s.push(...O)}catch(O){console.debug("Search source error:",O)}s.sort((h,O)=>O.score-h.score);let a={project:1.3,toolchain:1,docs:.7};for(let h of s){let O=a[h.record.source]||1;h.score*=O}s.sort((h,O)=>O.score-h.score);let l=new Set;return s.filter(h=>l.has(h.record.id)?!1:(l.add(h.record.id),!0)).slice(0,t)}},LQ=Dd.getInstance();var Bd=class i{constructor(e,t,r,n,s,o,a,l,c,h=0,O){this.p=e,this.stack=t,this.state=r,this.reducePos=n,this.pos=s,this.score=o,this.buffer=a,this.bufferBase=l,this.curContext=c,this.lookAhead=h,this.parent=O}toString(){return`[${this.stack.filter((e,t)=>t%3==0).concat(this.state)}]@${this.pos}${this.score?"!"+this.score:""}`}static start(e,t,r=0){let n=e.parser.context;return new i(e,[],t,r,r,0,[],0,n?new fh(n,n.start):null,0,null)}get context(){return this.curContext?this.curContext.context:null}pushState(e,t){this.stack.push(this.state,t,this.bufferBase+this.buffer.length),this.state=e}reduce(e){var t;let r=e>>19,n=e&65535,{parser:s}=this.p,o=this.reducePos<this.pos-25&&this.setLookAhead(this.pos),a=s.dynamicPrecedence(n);if(a&&(this.score+=a),r==0){n<s.minRepeatTerm&&this.reducePos<this.pos&&(this.reducePos=this.pos),this.pushState(s.getGoto(this.state,n,!0),this.reducePos),n<s.minRepeatTerm&&this.storeNode(n,this.reducePos,this.reducePos,o?8:4,!0),this.reduceContext(n,this.reducePos);return}let l=this.stack.length-(r-1)*3-(e&262144?6:0),c=l?this.stack[l-2]:this.p.ranges[0].from;n<s.minRepeatTerm&&c==this.reducePos&&this.reducePos<this.pos&&(this.reducePos=this.pos);let h=this.reducePos-c;h>=2e3&&!(!((t=this.p.parser.nodeSet.types[n])===null||t===void 0)&&t.isAnonymous)&&(c==this.p.lastBigReductionStart?(this.p.bigReductionCount++,this.p.lastBigReductionSize=h):this.p.lastBigReductionSize<h&&(this.p.bigReductionCount=1,this.p.lastBigReductionStart=c,this.p.lastBigReductionSize=h));let O=l?this.stack[l-1]:0,f=this.bufferBase+this.buffer.length-O;if(n<s.minRepeatTerm||e&131072){let u=s.stateFlag(this.state,1)?this.pos:this.reducePos;this.storeNode(n,c,u,f+4,!0)}if(e&262144)this.state=this.stack[l];else{let u=this.stack[l-3];this.state=s.getGoto(u,n,!0)}for(;this.stack.length>l;)this.stack.pop();this.reduceContext(n,c)}storeNode(e,t,r,n=4,s=!1){if(e==0&&(!this.stack.length||this.stack[this.stack.length-1]<this.buffer.length+this.bufferBase)){let o=this.buffer.length;if(o>0&&this.buffer[o-4]==0&&this.buffer[o-1]>-1){if(t==r)return;if(this.buffer[o-2]>=t){this.buffer[o-2]=r;return}}}if(!s||this.pos==r)this.buffer.push(e,t,r,n);else{let o=this.buffer.length;if(o>0&&(this.buffer[o-4]!=0||this.buffer[o-1]<0)){let a=!1;for(let l=o;l>0&&this.buffer[l-2]>r;l-=4)if(this.buffer[l-1]>=0){a=!0;break}if(a)for(;o>0&&this.buffer[o-2]>r;)this.buffer[o]=this.buffer[o-4],this.buffer[o+1]=this.buffer[o-3],this.buffer[o+2]=this.buffer[o-2],this.buffer[o+3]=this.buffer[o-1],o-=4,n>4&&(n-=4)}this.buffer[o]=e,this.buffer[o+1]=t,this.buffer[o+2]=r,this.buffer[o+3]=n}}shift(e,t,r,n){if(e&131072)this.pushState(e&65535,this.pos);else if((e&262144)==0){let s=e,{parser:o}=this.p;this.pos=n;let a=o.stateFlag(s,1);!a&&(n>r||t<=o.maxNode)&&(this.reducePos=n),this.pushState(s,a?r:Math.min(r,this.reducePos)),this.shiftContext(t,r),t<=o.maxNode&&this.buffer.push(t,r,n,4)}else this.pos=n,this.shiftContext(t,r),t<=this.p.parser.maxNode&&this.buffer. Line truncated
`:r=="r"?"\r":r=="t"?" ":"\\")}eq(e){return this.search==e.search&&this.replace==e.replace&&this.caseSensitive==e.caseSensitive&&this.regexp==e.regexp&&this.wholeWord==e.wholeWord&&this.test==e.test}create(){return this.regexp?new sp(this):new np(this)}getCursor(e,t=0,r){let n=e.doc?e:ve.create({doc:e});return r==null&&(r=n.doc.length),this.regexp?Ws(this,n,t,r):Ls(this,n,t,r)}},Sh=class{constructor(e){this.spec=e}};function CR(i,e,t){return(r,n,s,o)=>{if(t&&!t(r,n,s,o))return!1;let a=r>=o&&n<=o+s.length?s.slice(r-o,n-o):e.doc.sliceString(r,n);return i(a,e,r,n)}}function Ls(i,e,t,r){let n;return i.wholeWord&&(n=UR(e.doc,e.charCategorizer(e.selection.main.head))),i.test&&(n=CR(i.test,e,n)),new Gr(e.doc,i.unquoted,t,r,i.caseSensitive?void 0:s=>s.toLowerCase(),n)}function UR(i,e){return(t,r,n,s)=>((s>t||s+n.length<r)&&(s=Math.max(0,t-2),n=i.sliceString(s,Math.min(i.length,r+2))),(e(Qh(n,t-s))!=Me.Word||e(vh(n,t-s))!=Me.Word)&&(e(vh(n,r-s))!=Me.Word||e(Qh(n,r-s))!=Me.Word))}var np=class extends Sh{constructor(e){super(e)}nextMatch(e,t,r){let n=Ls(this.spec,e,r,e.doc.length).nextOverlapping();if(n.done){let s=Math.min(e.doc.length,t+this.spec.unquoted.length);n=Ls(this.spec,e,0,s).nextOverlapping()}return n.done||n.value.from==t&&n.value.to==r?null:n.value}prevMatchInRange(e,t,r){for(let n=r;;){let s=Math.max(t,n-1e4-this.spec.unquoted.length),o=Ls(this.spec,e,s,n),a=null;for(;!o.nextOverlapping().done;)a=o.value;if(a)return a;if(s==t)return null;n-=1e4}}prevMatch(e,t,r){let n=this.prevMatchInRange(e,0,t);return n||(n=this.prevMatchInRange(e,Math.max(0,r-this.spec.unquoted.length),e.doc.length)),n&&(n.from!=t||n.to!=r)?n:null}getReplacement(e){return this.spec.unquote(this.spec.replace)}matchAll(e,t){let r=Ls(this.spec,e,0,e.doc.length),n=[];for(;!r.next().done;){if(n.length>=t)return null;n.push(r.value)}return n}highlight(e,t,r,n){let s=Ls(this.spec,e,Math.max(0,t-this.spec.unquoted.length),Math.min(r+this.spec.unquoted.length,e.doc.length));for(;!s.next().done;)n(s.value.from,s.value.to)}};function AR(i,e,t){return(r,n,s)=>(!t||t(r,n,s))&&i(s[0],e,r,n)}function Ws(i,e,t,r){let n;return i.wholeWord&&(n=ER(e.charCategorizer(e.selection.main.head))),i.test&&(n=AR(i.test,e,n)),new ph(e.doc,i.search,{ignoreCase:!i.caseSensitive,test:n},t,r)}function Qh(i,e){return i.slice(it(i,e,!1),e)}function vh(i,e){return i.slice(e,it(i,e))}function ER(i){return(e,t,r)=>!r[0].length||(i(Qh(r.input,r.index))!=Me.Word||i(vh(r.input,r.index))!=Me.Word)&&(i(vh(r.input,r.index+r[0].length))!=Me.Word||i(Qh(r.input,r.index+r[0].length))!=Me.Word)}var sp=class extends Sh{nextMatch(e,t,r){let n=Ws(this.spec,e,r,e.doc.length).next();return n.done&&(n=Ws(this.spec,e,0,t).next()),n.done?null:n.value}prevMatchInRange(e,t,r){for(let n=1;;n++){let s=Math.max(t,r-n*1e4),o=Ws(this.spec,e,s,r),a=null;for(;!o.next().done;)a=o.value;if(a&&(s==t||a.from>s+10))return a;if(s==t)return null}}prevMatch(e,t,r){return this.prevMatchInRange(e,0,t)||this.prevMatchInRange(e,r,e.doc.length)}getReplacement(e){return this.spec.unquote(this.spec.replace).replace(/\$([$&]|\d+)/g,(t,r)=>{if(r=="&")return e.match[0];if(r=="$")return"$";for(let n=r.length;n>0;n--){let s=+r.slice(0,n);if(s>0&&s<e.match.length)return e.match[s]+r.slice(n)}return t})}matchAll(e,t){let r=Ws(this.spec,e,0,e.doc.length),n=[];for(;!r.next().done;){if(n.length>=t)return null;n.push(r.value)}return n}highlight(e,t,r,n){let s=Ws(this.spec,e,Math.max(0,t-250),Math.min(r+250,e.doc.length));for(;!s.next().done;)n(s.value.from,s.value.to)}},ga=ae.define(),fp=ae.define(),Br=ke.define({create(i){return new ma(op(i).create(),null)},update(i,e){for(let t of e.effects)t.is(ga)?i=new ma(t.value.create(),i.panel):t.is(fp)&&(i=new ma(i.query,t.value?up:null));return i},provide:i=>Fo.from(i,e=>e.panel)});var ma=class{constructor(e,t){this.query=e,this.panel=t}},zR=I.mark({class:"cm-searchMatch"}),YR=I.mark({class:"cm-searchMatch cm-searchMatch-selected"}),MR=je.fromClass(class{constructor(i){this.view=i,this.decorations=this.highlight(i.state.field(Br))}update(i){let e=i.state.field(Br);(e!=i.startState.field(Br)||i.docChanged||i.selectionSet||i.viewportChanged)&&(this.decorations=this.highlight(e))}highlight({query:i,panel:e}){if(!e||!i.spec.valid)return I.none;let{view:t}=this,r=new Ri;for(let n=0,s=t.visibleRanges,o=s.length;n<o;n++){let{from:a,to:l}=s[n];for(;n<o-1&&l>s[n+1].from-500;)l=s[++n].to;i.highlight(t.state,a,l,(c,h)=>{let O=t.state.selection.ranges.some(f=>f.from==c&&f.to==h);r.add(c,h,O?YR:zR)})}return r.finish()}},{decorations:i=>i.decorations});function ba(i){return e=>{let t=e.state.field(Br,!1);return t&&t.query.spec.valid?i(e,t):$h(e)}}var Vs=ba((i,{query:e})=>{let{to:t}=i.state.selection.main,r=e.nextMatch(i.state,t,t);if(!r)return!1;let n=U.single(r.from,r.to),s=i.state.facet(zn);return i.dispatch({selection:n,effects:[dp(i,r),s.scrollToMatch(n.main,i)],userEvent:"select.search"}),nv(i),!0}),wh=ba((i,{query:e})=>{let{state:t}=i,{from:r}=t.selection.main,n=e.prevMatch(t,r,r);if(!n) Line truncated
`+t.scrub(),s=this.advance(n);return s>-1&&s<n.length?this.complete(e,r,s):!1}finish(e,t){return(this.stage==2||this.stage==3)&&Sa(t.content,this.pos)==t.content.length?this.complete(e,t,t.content.length):!1}complete(e,t,r){return e.addLeafElement(t,Ze(F.LinkReference,this.start,this.start+r,this.elts)),!0}nextStage(e){return e?(this.pos=e.to-this.start,this.elts.push(e),this.stage++,!0):(e===!1&&(this.stage=-1),!1)}advance(e){for(;;){if(this.stage==-1)return-1;if(this.stage==0){if(!this.nextStage(Kv(e,this.pos,this.start,!0)))return-1;if(e.charCodeAt(this.pos)!=58)return this.stage=-1;this.elts.push(Ze(F.LinkMark,this.pos+this.start,this.pos+this.start+1)),this.pos++}else if(this.stage==1){if(!this.nextStage(Nv(e,Sa(e,this.pos),this.start)))return-1}else if(this.stage==2){let t=Sa(e,this.pos),r=0;if(t>this.pos){let n=Hv(e,t,this.start);if(n){let s=Mp(e,n.to-this.start);s>0&&(this.nextStage(n),r=s)}}return r||(r=Mp(e,this.pos)),r>0&&r<e.length?r:-1}else return Mp(e,this.pos)}}};function Mp(i,e){for(;e<i.length;e++){let t=i.charCodeAt(e);if(t==10)break;if(!$i(t))return-1}return e}var Ip=class{nextLine(e,t,r){let n=t.depth<e.stack.length?-1:Wv(t),s=t.next;if(n<0)return!1;let o=Ze(F.HeaderMark,e.lineStart+t.pos,e.lineStart+n);return e.nextLine(),e.addLeafElement(r,Ze(s==61?F.SetextHeading1:F.SetextHeading2,r.start,e.prevLineEnd(),[...e.parser.parseInline(r.content,r.start),o])),!0}finish(){return!1}},Dv={LinkReference(i,e){return e.content.charCodeAt(0)==91?new Dp(e):null},SetextHeading(){return new Ip}},GZ=[(i,e)=>Lv(e)>=0,(i,e)=>zv(e)>=0,(i,e)=>Yv(e)>=0,(i,e)=>Jp(e,i,!0)>=0,(i,e)=>em(e,i,!0)>=0,(i,e)=>Kp(e,i,!0)>=0,(i,e)=>qv(e,i,!0)>=0],NZ={text:"",end:0},Fp=class{constructor(e,t,r,n){this.parser=e,this.input=t,this.ranges=n,this.line=new Vp,this.atEnd=!1,this.reusePlaceholders=new Map,this.stoppedAt=null,this.rangeI=0,this.to=n[n.length-1].to,this.lineStart=this.absoluteLineStart=this.absoluteLineEnd=n[0].from,this.block=Xh.create(F.Document,0,this.lineStart,0,0),this.stack=[this.block],this.fragments=r.length?new Np(r,t):null,this.readLine()}get parsedPos(){return this.absoluteLineStart}advance(){if(this.stoppedAt!=null&&this.absoluteLineStart>this.stoppedAt)return this.finish();let{line:e}=this;for(;;){for(let r=0;;){let n=e.depth<this.stack.length?this.stack[this.stack.length-1]:null;for(;r<e.markers.length&&(!n||e.markers[r].from<n.end);){let s=e.markers[r++];this.addNode(s.type,s.from,s.to)}if(!n)break;this.finishContext()}if(e.pos<e.text.length)break;if(!this.nextLine())return this.finish()}if(this.fragments&&this.reuseFragment(e.basePos))return null;e:for(;;){for(let r of this.parser.blockParsers)if(r){let n=r(this,e);if(n!=!1){if(n==!0)return null;e.forward();continue e}}break}if(e.pos==e.text.length)return this.nextLine()?null:this.finish();let t=new Wp(this.lineStart+e.pos,e.text.slice(e.pos));for(let r of this.parser.leafBlockParsers)if(r){let n=r(this,t);n&&t.parsers.push(n)}e:for(;this.nextLine()&&e.pos!=e.text.length;){if(e.indent<e.baseIndent+4){for(let r of this.parser.endLeafBlock)if(r(this,e,t))break e}for(let r of t.parsers)if(r.nextLine(this,e,t))return null;t.content+=`
`+e.scrub();for(let r of e.markers)t.marks.push(r)}return this.finishLeaf(t),null}stopAt(e){if(this.stoppedAt!=null&&this.stoppedAt<e)throw new RangeError("Can't move stoppedAt forward");this.stoppedAt=e}reuseFragment(e){if(!this.fragments.moveTo(this.absoluteLineStart+e,this.absoluteLineStart)||!this.fragments.matches(this.block.hash))return!1;let t=this.fragments.takeNodes(this);return t?(this.absoluteLineStart+=t,this.lineStart=Jv(this.absoluteLineStart,this.ranges),this.moveRangeI(),this.absoluteLineStart<this.to?(this.lineStart++,this.absoluteLineStart++,this.readLine()):(this.atEnd=!0,this.readLine()),!0):!1}get depth(){return this.stack.length}parentType(e=this.depth-1){return this.parser.nodeSet.types[this.stack[e].type]}nextLine(){return this.lineStart+=this.line.text.length,this.absoluteLineEnd>=this.to?(this.absoluteLineStart=this.absoluteLineEnd,this.atEnd=!0,this.readLine(),!1):(this.lineStart++,this.absoluteLineStart=this.absoluteLineEnd+1,this.moveRangeI(),this.readLine(),!0)}peekLine(){return this.scanLine(this.absoluteLineEnd+1).text}moveRangeI(){for(;this.rangeI<this.ranges.length-1&&this.absoluteLineStart>=this.ranges[this.rangeI].to;)this.rangeI++,this.absoluteLineStart=Math.max(this.absoluteLineStart,this.ranges[this.rangeI].from)}scanLine(e){let t=NZ;if(t.end=e,e>=this.to)t.text="";else if(t.text=this.lineChunkAt(e),t.end+=t.text.length,this.ranges.length>1){let r=this.absoluteLineStart,n=this.rangeI;for(;this.ranges[n].to<t.end;){n++;let s=this.ranges[n].from,o=this.lineChunkAt(s);t.end=s+o.length,t.text=t.text.slice(0,this.ranges[n-1].to-r)+o,r=t.end-t.text.length}}return t}readLine(){let{line:e}=this,{text:t,end:r}=this.scanLine(this.absoluteLineStart);for(this.absoluteLineEnd=r,e.reset(t);e.depth<this.stack.length;e.depth++){let n=this.stack[e.depth],s=this.parser.skipContextMarkup[n.type];if(!s)throw new Error("Unhandled block context "+F[n.type]);let o=this.line.markers.length;if(!s(n,this,e)){this.line.markers.length>o&&(n.end=this.line.markers[this.line.markers.length-1].to),e.forward();break}e.forward()}}lineChunkAt(e){let t=this.input.chunk(e),r;if(this.input.lineChunks)r=t==`
`?"":t;else{let n=t.indexOf(`
`);r=n<0?t:t.slice(0,n)}return e+r.length>this.to?r.slice(0,this.to-e):r}prevLineEnd(){return this.atEnd?this.lineStart:this.lineStart-1}startContext(e,t,r=0){this.block=Xh.create(e,r,this.lineStart+t,this.block.hash,this.lineStart+this.line.text.length),this.stack.push(this.block)}startComposite(e,t,r=0){this.startContext(this.parser.getNodeType(e),t,r)}addNode(e,t,r){typeof e=="number"&&(e=new Se(this.parser.nodeSet.types[e],js,js,(r!=null?r:this.prevLineEnd())-t)),this.block.addChild(e,t-this.block.from)}addElement(e){this.block.addChild(e.toTree(this.parser.nodeSet),e.from-this.block.from)}addLeafElement(e,t){this.addNode(this.buffer.writeElements(Gp(t.children,e.marks),-t.from).finish(t.type,t.to-t.from),t.from)}finishContext(){let e=this.stack.pop(),t=this.stack[this.stack.length-1];t.addChild(e.toTree(this.parser.nodeSet),e.from-t.from),this.block=t}finish(){for(;this.stack.length>1;)this.finishContext();return this.addGaps(this.block.toTree(this.parser.nodeSet,this.lineStart))}addGaps(e){return this.ranges.length>1?Iv(this.ranges,0,e.topNode,this.ranges[0].from,this.reusePlaceholders):e}finishLeaf(e){for(let r of e.parsers)if(r.finish(this,e))return;let t=Gp(this.parser.parseInline(e.content,e.start),e.marks);this.addNode(this.buffer.writeElements(t,-e.start).finish(F.Paragraph,e.content.length),e.start)}elt(e,t,r,n){return typeof e=="string"?Ze(this.parser.getNodeType(e),t,r,n):new _h(e,t)}get buffer(){return new Th(this.parser.nodeSet)}};function Iv(i,e,t,r,n){let s=i[e].to,o=[],a=[],l=t.from+r;function c(h,O){for(;O?h>=s:h>s;){let f=i[e+1].from-s;r+=f,h+=f,e++,s=i[e].to}}for(let h=t.firstChild;h;h=h.nextSibling){c(h.from+r,!0);let O=h.from+r,f,u=n.get(h.tree);u?f=u:h.to+r>s?(f=Iv(i,e,h,r,n),c(h.to+r,!1)):f=h.toTree(),o.push(f),a.push(O-l)}return c(t.to+r,!1),new Se(t.type,o,a,t.to+r-l,t.tree?t.tree.propValues:void 0)}var va=class i extends br{constructor(e,t,r,n,s,o,a,l,c){super(),this.nodeSet=e,this.blockParsers=t,this.leafBlockParsers=r,this.blockNames=n,this.endLeafBlock=s,this.skipContextMarkup=o,this.inlineParsers=a,this.inlineNames=l,this.wrappers=c,this.nodeTypes=Object.create(null);for(let h of e.types)this.nodeTypes[h.name]=h.id}createParse(e,t,r){let n=new Fp(this,e,t,r);for(let s of this.wrappers)n=s(n,e,t,r);return n}configure(e){let t=Bp(e);if(!t)return this;let{nodeSet:r,skipContextMarkup:n}=this,s=this.blockParsers.slice(),o=this.leafBlockParsers.slice(),a=this.blockNames.slice(),l=this.inlineParsers.slice(),c=this.inlineNames.slice(),h=this.endLeafBlock.slice(),O=this.wrappers;if(xa(t.defineNodes)){n=Object.assign({},n);let f=r.types.slice(),u;for(let p of t.defineNodes){let{name:m,block:S,composite:w,style:C}=typeof p=="string"?{name:p}:p;if(f.some(k=>k.name==m))continue;w&&(n[f.length]=(k,P,Z)=>w(P,Z,k.value));let R=f.length,A=w?["Block","BlockContext"]:S?R>=F.ATXHeading1&&R<=F.SetextHeading2?["Block","LeafBlock","Heading"]:["Block","LeafBlock"]:void 0;f.push(Je.define({id:R,name:m,props:A&&[[ue.group,A]]})),C&&(u||(u={}),Array.isArray(C)||C instanceof ri?u[m]=C:Object.assign(u,C))}r=new mr(f),u&&(r=r.extend(St(u)))}if(xa(t.props)&&(r=r.extend(...t.props)),xa(t.remove))for(let f of t.remove){let u=this.blockNames.indexOf(f),p=this.inlineNames.indexOf(f);u>-1&&(s[u]=o[u]=void 0),p>-1&&(l[p]=void 0)}if(xa(t.parseBlock))for(let f of t.parseBlock){let u=a.indexOf(f.name);if(u>-1)s[u]=f.parse,o[u]=f.leaf;else{let p=f.before?kh(a,f.before):f.after?kh(a,f.after)+1:a.length-1;s.splice(p,0,f.parse),o.splice(p,0,f.leaf),a.splice(p,0,f.name)}f.endLeaf&&h.push(f.endLeaf)}if(xa(t.parseInline))for(let f of t.parseInline){let u=c.indexOf(f.name);if(u>-1)l[u]=f.parse;else{let p=f.before?kh(c,f.before):f.after?kh(c,f.after)+1:c.length-1;l.splice(p,0,f.parse),c.splice(p,0,f.name)}}return t.wrap&&(O=O.concat(t.wrap)),new i(r,s,o,a,h,n,l,c,O)}getNodeType(e){let t=this.nodeTypes[e];if(t==null)throw new RangeError(`Unknown node type '${e}'`);return t}parseInline(e,t){let r=new ya(this,e,t);e:for(let n=t;n<r.end;){let s=r.char(n);for(let o of this.inlineParsers)if(o){let a=o(r,s,n);if(a>=0){n=a;continue e}}n++}return r.resolveMarkers(0)}};function xa(i){return i!=null&&i.length>0}function Bp(i){if(!Array.isArray(i))return i;if(i.length==0)return null;let e=Bp(i[0]);if(i.length==1)return e;let t=Bp(i.slice(1));if(!t||!e)return e||t;let r=(o,a)=>(o||js).concat(a||js),n=e.wrap,s=t.wrap;return{props:r(e.props,t.props),defineNodes:r(e.defineNodes,t.defineNodes),parseBlock:r(e.parseBlock,t.parseBlock),parseInline:r(e.parseInline,t.parseInline),remove:r(e.remove,t.remove),wrap:n?s?(o,a,l,c)=>n(s(o,a,l,c),a,l,c):n:s}}function kh(i,e){let t=i.indexOf(e);if(t<0)throw new RangeError(`Position specified relative to unknown parser ${e}`);return t}var Fv=[Je.none];for(let i=1,e;e=F[i];i++)Fv[i]=Je.define({id:i,name:e,props:i>=F.Escape?[]:[[ue.group,i in Ev?["Block","BlockContext"]:["Block","LeafBlock"]]],top:e=="Document"});var js=[],Th=class{constructor(e){this.nodeSet=e,this.content=[],this.nodes=[]}write(e,t,r, Line truncated
`;)s--;this.fragmentEnd=s?s-1:0}let r=this.cursor;r||(r=this.cursor=this.fragment.tree.cursor(),r.firstChild());let n=e+this.fragment.offset;for(;r.to<=n;)if(!r.parent())return!1;for(;;){if(r.from>=n)return this.fragment.from<=t;if(!r.childAfter(n))return!1}}matches(e){let t=this.cursor.tree;return t&&t.prop(ue.contextHash)==e}takeNodes(e){let t=this.cursor,r=this.fragment.offset,n=this.fragmentEnd-(this.fragment.openEnd?1:0),s=e.absoluteLineStart,o=s,a=e.block.children.length,l=o,c=a;for(;;){if(t.to-r>n){if(t.type.isAnonymous&&t.firstChild())continue;break}let h=Jv(t.from-r,e.ranges);if(t.to-r<=e.ranges[e.rangeI].to)e.addNode(t.tree,h);else{let O=new Se(e.parser.nodeSet.types[F.Paragraph],[],[],0,e.block.hashProp);e.reusePlaceholders.set(O,t.tree),e.addNode(O,h)}if(t.type.is("Block")&&(KZ.indexOf(t.type.id)<0?(o=t.to-r,a=e.block.children.length):(o=l,a=c),l=t.to-r,c=e.block.children.length),!t.nextSibling())break}for(;e.block.children.length>a;)e.block.children.pop(),e.block.positions.pop();return o-s}};function Jv(i,e){let t=i;for(let r=1;r<e.length;r++){let n=e[r-1].to,s=e[r].from;n<i&&(t-=s-n)}return t}var JZ=St({"Blockquote/...":d.quote,HorizontalRule:d.contentSeparator,"ATXHeading1/... SetextHeading1/...":d.heading1,"ATXHeading2/... SetextHeading2/...":d.heading2,"ATXHeading3/...":d.heading3,"ATXHeading4/...":d.heading4,"ATXHeading5/...":d.heading5,"ATXHeading6/...":d.heading6,"Comment CommentBlock":d.comment,Escape:d.escape,Entity:d.character,"Emphasis/...":d.emphasis,"StrongEmphasis/...":d.strong,"Link/... Image/...":d.link,"OrderedList/... BulletList/...":d.list,"BlockQuote/...":d.quote,"InlineCode CodeText":d.monospace,"URL Autolink":d.url,"HeaderMark HardBreak QuoteMark ListMark LinkMark EmphasisMark CodeMark":d.processingInstruction,"CodeInfo LinkLabel":d.labelName,LinkTitle:d.string,Paragraph:d.content}),ew=new va(new mr(Fv).extend(JZ),Object.keys(Ph).map(i=>Ph[i]),Object.keys(Ph).map(i=>Dv[i]),Object.keys(Ph),GZ,Ev,Object.keys(Lp).map(i=>Lp[i]),Object.keys(Lp),[]);function eC(i,e,t){let r=[];for(let n=i.firstChild,s=e;;n=n.nextSibling){let o=n?n.from:t;if(o>s&&r.push({from:s,to:o}),!n)break;s=n.to}return r}function tw(i){let{codeParser:e,htmlParser:t}=i;return{wrap:_c((n,s)=>{let o=n.type.id;if(e&&(o==F.CodeBlock||o==F.FencedCode)){let a="";if(o==F.FencedCode){let c=n.node.getChild(F.CodeInfo);c&&(a=s.read(c.from,c.to))}let l=e(a);if(l)return{parser:l,overlay:c=>c.type.id==F.CodeText,bracketed:o==F.FencedCode}}else if(t&&(o==F.HTMLBlock||o==F.HTMLTag||o==F.CommentBlock))return{parser:t,overlay:eC(n.node,n.from,n.to)};return null})}}var tC={resolve:"Strikethrough",mark:"StrikethroughMark"},iC={defineNodes:[{name:"Strikethrough",style:{"Strikethrough/...":d.strikethrough}},{name:"StrikethroughMark",style:d.processingInstruction}],parseInline:[{name:"Strikethrough",parse(i,e,t){if(e!=126||i.char(t+1)!=126||i.char(t+2)==126)return-1;let r=i.slice(t-1,t),n=i.slice(t+2,t+3),s=/\s|^$/.test(r),o=/\s|^$/.test(n),a=wa.test(r),l=wa.test(n);return i.addDelimiter(tC,t,t+2,!o&&(!l||s||a),!s&&(!a||o||l))},after:"Emphasis"}]};function Qa(i,e,t=0,r,n=0){let s=0,o=!0,a=-1,l=-1,c=!1,h=()=>{r.push(i.elt("TableCell",n+a,n+l,i.parser.parseInline(e.slice(a,l),n+a)))};for(let O=t;O<e.length;O++){let f=e.charCodeAt(O);f==124&&!c?((!o||a>-1)&&s++,o=!1,r&&(a>-1&&h(),r.push(i.elt("TableDelimiter",O+n,O+n+1))),a=l=-1):(c||f!=32&&f!=9)&&(a<0&&(a=O),l=O+1),c=!c&&f==92}return a>-1&&(s++,r&&h()),s}function Tv(i,e){for(let t=e;t<i.length;t++){let r=i.charCodeAt(t);if(r==124)return!0;r==92&&t++}return!1}var iw=/^[>\s]*\|?(\s*:?-+:?\s*\|)+(\s*:?-+:?\s*)?$/,Zh=class{constructor(){this.rows=null}nextLine(e,t,r){if(this.rows==null){this.rows=!1;let n;if((t.next==45||t.next==58||t.next==124)&&iw.test(n=t.text.slice(t.pos))){let s=[];Qa(e,r.content,0,s,r.start)==Qa(e,n,0)&&(this.rows=[e.elt("TableHeader",r.start,r.start+r.content.length,s),e.elt("TableDelimiter",e.lineStart+t.pos,e.lineStart+t.text.length)])}}else if(this.rows){let n=[];Qa(e,t.text,t.pos,n,e.lineStart),this.rows.push(e.elt("TableRow",e.lineStart+t.pos,e.lineStart+t.text.length,n))}return!1}finish(e,t){return this.rows?(e.addLeafElement(t,e.elt("Table",t.start,t.start+t.content.length,this.rows)),!0):!1}},rC={defineNodes:[{name:"Table",block:!0},{name:"TableHeader",style:{"TableHeader/...":d.heading}},"TableRow",{name:"TableCell",style:d.content},{name:"TableDelimiter",style:d.processingInstruction}],parseBlock:[{name:"Table",leaf(i,e){return Tv(e.content,0)?new Zh:null},endLeaf(i,e,t){if(t.parsers.some(n=>n instanceof Zh)||!Tv(e.text,e.basePos))return!1;let r=i.peekLine();return iw.test(r)&&Qa(i,e.text,e.basePos)==Qa(i,r,e.basePos)},before:"SetextHeading"}]},Hp=class{nextLine(){return!1}finish(e,t){return e.addLeafElement(t,e.elt("Task",t.start,t.start+t.content.length,[e.elt("TaskMarker",t.start,t.start+3),...e.parser.parseInline(t.content.slice(3),t.start+3)])),!0}},nC={defineNodes:[{name:"Task",block:!0,style:d.list},{name:"TaskMarker",style:d.atom}],parseBlock:[ Line truncated
\${}
} catch (\${error}) {
\${}
}`,{label:"try",detail:"/ catch block",type:"keyword"}),Mt("if (${}) {\n ${}\n}",{label:"if",detail:"block",type:"keyword"}),Mt(`if (\${}) {
\${}
} else {
\${}
}`,{label:"if",detail:"/ else block",type:"keyword"}),Mt(`class \${name} {
constructor(\${params}) {
\${}
}
}`,{label:"class",detail:"definition",type:"keyword"}),Mt('import {${names}} from "${module}"\n${}',{label:"import",detail:"named",type:"keyword"}),Mt('import ${name} from "${module}"\n${}',{label:"import",detail:"default",type:"keyword"})],tU=qw.concat([Mt("interface ${name} {\n ${}\n}",{label:"interface",detail:"definition",type:"keyword"}),Mt("type ${name} = ${type}",{label:"type",detail:"definition",type:"keyword"}),Mt("enum ${name} {\n ${}\n}",{label:"enum",detail:"definition",type:"keyword"})]),Ww=new ks,Dw=new Set(["Script","Block","FunctionExpression","FunctionDeclaration","ArrowFunction","MethodDeclaration","ForStatement"]);function ka(i){return(e,t)=>{let r=e.node.getChild("VariableDefinition");return r&&t(r,i),!0}}var iU=["FunctionDeclaration"],rU={FunctionDeclaration:ka("function"),ClassDeclaration:ka("class"),ClassExpression:()=>!0,EnumDeclaration:ka("constant"),TypeAliasDeclaration:ka("type"),NamespaceDeclaration:ka("namespace"),VariableDefinition(i,e){i.matchContext(iU)||e(i,"variable")},TypeDefinition(i,e){e(i,"type")},__proto__:null};function Iw(i,e){let t=Ww.get(e);if(t)return t;let r=[],n=!0;function s(o,a){let l=i.sliceString(o.from,o.to);r.push({label:l,type:a})}return e.cursor(Re.IncludeAnonymous).iterate(o=>{if(n)n=!1;else if(o.name){let a=rU[o.name];if(a&&a(o,s)||Dw.has(o.name))return!1}else if(o.to-o.from>8192){for(let a of Iw(i,o.node))r.push(a);return!1}}),Ww.set(e,r),r}var Vw=/^[\w$\xa1-\uffff][\w$\d\xa1-\uffff]*$/,Fw=["TemplateString","String","RegExp","LineComment","BlockComment","VariableDefinition","TypeDefinition","Label","PropertyDefinition","PropertyName","PrivatePropertyDefinition","PrivatePropertyName","JSXText","JSXAttributeValue","JSXOpenTag","JSXCloseTag","JSXSelfClosingTag",".","?."];function nU(i){let e=_e(i.state).resolveInner(i.pos,-1);if(Fw.indexOf(e.name)>-1)return null;let t=e.name=="VariableName"||e.to-e.from<20&&Vw.test(i.state.sliceDoc(e.from,e.to));if(!t&&!i.explicit)return null;let r=[];for(let n=e;n;n=n.parent)Dw.has(n.name)&&(r=r.concat(Iw(i.state.doc,n)));return{options:r,from:t?e.from:i.pos,validFor:Vw}}var Li=Qt.define({name:"javascript",parser:Lw.configure({props:[Qi.add({IfStatement:nr({except:/^\s*({|else\b)/}),TryStatement:nr({except:/^\s*({|catch\b|finally\b)/}),LabeledStatement:Wc,SwitchBody:i=>{let e=i.textAfter,t=/^\s*\}/.test(e),r=/^\s*(case|default)\b/.test(e);return i.baseIndent+(t?0:r?1:2)*i.unit},Block:Lc({closing:"}"}),ArrowFunction:i=>i.baseIndent+i.unit,"TemplateString BlockComment":()=>null,"Statement Property":nr({except:/^\s*{/}),JSXElement(i){let e=/^\s*<\//.test(i.textAfter);return i.lineIndent(i.node.from)+(e?0:i.unit)},JSXEscape(i){let e=/\s*\}/.test(i.textAfter);return i.lineIndent(i.node.from)+(e?0:i.unit)},"JSXOpenTag JSXSelfClosingTag"(i){return i.column(i.node.from)+i.unit}}),Tt.add({"Block ClassBody SwitchBody EnumBody ObjectExpression ArrayExpression ObjectType":vi,BlockComment(i){return{from:i.from+2,to:i.to-2}},JSXElement(i){let e=i.firstChild;if(!e||e.name=="JSXSelfClosingTag")return null;let t=i.lastChild;return{from:e.to,to:t.type.isError?i.to:t.from}},"JSXSelfClosingTag JSXOpenTag"(i){var e;let t=(e=i.firstChild)===null||e===void 0?void 0:e.nextSibling,r=i.lastChild;return!t||t.type.isError?null:{from:t.to,to:r.type.isError?i.to:r.from}}})]}),languageData:{closeBrackets:{brackets:["(","[","{","'",'"',"`"]},commentTokens:{line:"//",block:{open:"/*",close:"*/"}},indentOnInput:/^\s*(?:case |default:|\{|\}|<\/)$/,wordChars:"$"}}),Bw={test:i=>/^JSX/.test(i.name),facet:Xs({commentTokens:{block:{open:"{/*",close:"*/}"}}})},pm=Li.configure({dialect:"ts"},"typescript"),mm=Li.configure({dialect:"jsx",props:[Yc.add(i=>i.isTop?[Bw]:void 0)]}),gm=Li.configure({dialect:"jsx ts",props:[Yc.add(i=>i.isTop?[Bw]:void 0)]},"typescript"),Gw=i=>({label:i,type:"keyword"}),Nw="break case const continue default delete export extends false finally in instanceof let new return static super switch this throw true typeof var yield".split(" ").map(Gw),sU=Nw.concat(["declare","implements","private","protected","public"].map(Gw));function Hw(i={}){let e=i.jsx?i.typescript?gm:mm:i.typescript?pm:Li,t=i.typescript?tU.concat(sU):qw.concat(Nw);return new Ee(e,[Li.data.of({autocomplete:eS(Fw,Jx(t))}),Li.data.of({autocomplete:nU}),i.jsx?lU:[]])}function oU(i){for(;;){if(i.name=="JSXOpenTag"||i.name=="JSXSelfClosingTag"||i.name=="JSXFragmentTag")return i;if(i.name=="JSXEscape"||!i.parent)return null;i=i.parent}}function jw(i,e,t=i.length){for(let r=e==null?void 0:e.firstChild;r;r=r.nextSibling)if(r.name=="JSXIdentifier"||r.name=="JSXBuiltin"||r.name=="JSXNamespacedName"||r.name=="JSXMemberExpression")return i.sliceString(r.from,Math.min(r.to,t));return""}var aU=typeof navigator=="object"&&/Android\b/.test(navigator.userAgent),lU=W.inputHandler.of((i,e,t,r,n)=>{if((aU?i.composing:i.compositionStarted)||i.state.readOnly||e!=t||r!=">"&&r!="/"||!Li.isActiveAt(i.state,e,-1))return!1;let s=n(),{state:o}=s,a=o.changeByRange(l=>{var c;let{head:h}=l,O=_e(o).resol Line truncated
`);for(let l of a){vy.lastIndex=0;let c=vy.exec(l);if(c){let h=o+c.index+c[0].length;t.push(I.widget({widget:new Tm(c[0],e),side:-1}).range(h))}o+=l.length+1}}return I.set(t,!0)}function yy(i){let e;function t(r){let n=e.posAtDOM(r);i(e.state.doc.lineAt(n).number)}return je.fromClass(class{constructor(r){e=r,this.decorations=wy(r,t)}update(r){e=r.view,(r.docChanged||r.viewportChanged)&&(this.decorations=wy(r.view,t))}},{decorations:r=>r.decorations})}var _m=class extends at{constructor(t,r,n){super();this.filename=t;this.system=r;this.handleClick=n}toDOM(){let t=document.createElement("span");return t.className="include-link-badge",t.textContent="\u2192",t.title=(this.system?"System header: ":"View ")+this.filename,t.addEventListener("click",r=>{r.preventDefault(),r.stopPropagation(),this.handleClick(this.filename,this.system)}),t}eq(t){return this.filename===t.filename&&this.system===t.system}ignoreEvent(){return!1}};function zU(i,e,t){let r=[],n=i.state.doc,s=new Set;for(let{from:o,to:a}of i.visibleRanges){let l=i.state.sliceDoc(o,a);for(let c of e){let h=c instanceof RegExp?{re:c}:c;h.re.lastIndex=0;let O;for(;O=h.re.exec(l);){let f=O[h.group!=null?h.group:O.length-1];if(!f)continue;let u=h.suffix?f+h.suffix:f,p=Math.min(o+O.index+O[0].length,n.length),m=n.lineAt(p),S=m.number+":"+u;s.has(S)||(s.add(S),r.push(I.widget({widget:new _m(u,!!h.system,t),side:1}).range(m.to)))}}}return I.set(r,!0)}function $y(i,e){function t(r){let n=i();return!n||!n.length?I.none:zU(r,n,e)}return je.fromClass(class{constructor(r){this.decorations=t(r)}update(r){(r.docChanged||r.viewportChanged)&&(this.decorations=t(r.view))}},{decorations:r=>r.decorations})}var Ds=window.matchMedia&&window.matchMedia("only screen and (max-width: 760px)").matches;function wr(i,e){var t=$(document.createElement("div"));return i&&t.appendTo(i),e&&t.addClass(e),t}function YU(i){return ve.transactionFilter.of(e=>{if(!e.docChanged||!e.isUserEvent("input")||!i.input)return e;let t=[],r=!1;if(e.changes.iterChanges((o,a,l,c,h)=>{let O=h.toString(),f=i.input(O);t.push({from:o,to:a,insert:f}),f!==O&&(r=!0)}),!r)return e;let n=e.annotation(Ne.userEvent),s=e.annotation(Ne.addToHistory);return{changes:t,selection:e.selection,effects:e.effects,scrollIntoView:e.scrollIntoView,annotations:[...n!=null?[Ne.userEvent.of(n)]:[],...s!=null?[Ne.addToHistory.of(s)]:[]]}})}var Rm=new bt;function Py(i){return Rm.reconfigure(YU(i))}var ky=ae.define(),Xy=ae.define(),Ty=ae.define(),Cm=ae.define(),_y=ae.define(),Ry=ae.define(),Um=ae.define(),Zy=ae.define(),Cy=ke.define({create(){return pe.empty},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(ky)){let r=t.value,n=[];for(let[s,o]of r.entries())if(s>=1&&s<=e.state.doc.lines){let a=e.state.doc.line(s).from;n.push(new Mh(Te(o,4)).range(a))}i=pe.of(n,!0)}return i}}),Uy=ke.define({create(){return pe.empty},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(Xy)){let r=t.value,n=[];for(let[s,o]of r.entries())if(s>=1&&s<=e.state.doc.lines){let a=e.state.doc.line(s).from;n.push(new Lh(o).range(a))}i=pe.of(n,!0)}return i}}),Ay=ke.define({create(){return pe.empty},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(Ty)){let r=t.value,n=[];for(let[s,o]of r.entries())if(s>=1&&s<=e.state.doc.lines){let a=e.state.doc.line(s).from;n.push(new Wh(o).range(a))}i=pe.of(n,!0)}return i}}),Ey=ke.define({create(){return pe.empty},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(Cm))if(t.value===null)i=pe.empty;else{let r=t.value;if(r>=1&&r<=e.state.doc.lines){let n=e.state.doc.line(r).from,s=!1;i.between(n,n,()=>(s=!0,!1)),s?i=i.update({filter:o=>o!==n}):i=i.update({add:[LU.range(n)]})}}return i}}),Zm=ke.define({create(){return pe.empty},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(_y)){let r=t.value,n=[];for(let[s,o]of r.entries())if(s>=1&&s<=e.state.doc.lines){let a=e.state.doc.line(s).from;n.push(new Vh(s,o).range(a))}i=pe.of(n,!0)}return i}}),zy=ke.define({create(){return pe.empty},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(Ry))if(t.value===null)i=pe.empty;else{let r=t.value;if(r>=1&&r<=e.state.doc.lines){let n=e.state.doc.line(r).from;i=pe.of(Yy.range(n))}}return i}}),Mh=class extends nt{constructor(t){super();this.hex=t}toDOM(){let t=document.createElement("span");return t.textContent=this.hex,t.style.cursor="pointer",t.title="Click to run to here",t.addEventListener("mouseenter",()=>{t.style.textDecoration="underline"}),t.addEventListener("mouseleave",()=>{t.style.textDecoration="none"}),t}eq(t){return this.hex==t.hex}},Lh=class extends nt{constructor(t){super();this.bytes=t}toDOM(){return document.createTextNode(this.bytes)}eq(t){return this.bytes==t.bytes}},Wh=class extends nt{constructor(t){super();this.clock=t}toDOM(){return document.createTextNode(this.clock)}eq(t){return this.clock==t.clock}},MU=new class extends nt{toDOM(){let i=document.createElement("span");return i.textContent="\u25CF",i.style.color="transparent",i.style.cursor="pointer",i.addEve Line truncated
color: #ff6666;
background-color: #330000;
padding: 4px 8px;
margin: 2px 0;
border-left: 3px solid #ff0000;
font-family: monospace;
`,t}},BU=ke.define({create(){return I.none},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(Vn.showMessage)){if(t.value===null||!t.value)return I.none;if(t.value.toggle){let r=[],n=new Map;return i.between(0,e.state.doc.length,(a,l,c)=>{try{let h=e.state.doc.lineAt(l).number;c.spec.widget instanceof Ra&&n.set(h,c.spec.widget.message)}catch(h){}}),n.has(t.value.line)?n.delete(t.value.line):n.set(t.value.line,t.value.msg),Array.from(n.keys()).sort((a,l)=>a-l).forEach(a=>{try{let l=e.state.doc.line(a);r.push(I.widget({widget:new Ra(n.get(a)),block:!0,side:1}).range(l.to))}catch(l){}}),I.set(r,!0)}}return i},provide:i=>W.decorations.from(i)}),Am=class extends at{constructor(t){super();this.value=t}toDOM(){let t=document.createElement("div");return t.textContent=`${this.value}`,t.style.cssText=`
color: #ccccff;
background-color: #000066;
display: inline-block;
`,t.className="cm-line",t}},Vy=ae.define(),GU=ke.define({create(){return I.none},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(Vy)){if(t.value===null||!t.value)return I.none;let r=e.state.doc.lineAt(t.value.range.to);return I.set([I.widget({widget:new Am(t.value.val),block:!0,side:1}).range(r.to)])}return i},provide:i=>W.decorations.from(i)}),jy=ae.define(),NU=I.mark({attributes:{class:"cm-error-span"}}),HU=ke.define({create(){return I.none},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(jy)){if(t.value===null)return I.none;let r=[];for(let n of t.value)try{let s=e.state.doc.line(n.line),o=s.from+n.start,a=s.from+n.end;o>=s.from&&a<=s.to&&o<a&&r.push(NU.range(o,a))}catch(s){}return I.set(r,!0)}return i},provide:i=>W.decorations.from(i)}),qy=ae.define(),KU=I.line({attributes:{class:"highlight-lines"}}),JU=ke.define({create(){return I.none},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(qy)){if(t.value===null)return I.none;let{start:r,end:n}=t.value,s=[];for(let o=r;o<=n;o++)try{let a=e.state.doc.line(o);s.push(KU.range(a.from))}catch(a){}return I.set(s)}return i!==I.none&&(e.docChanged||e.selection)?I.none:i},provide:i=>W.decorations.from(i)}),Dy={field:BU,widget:Ra},Za={effect:Ly,decoration:Wy,field:FU},Ih={effect:Vy,field:GU},Fh={effect:jy,field:HU},Bh={effect:qy,field:JU},Iy=ae.define(),eA=I.line({attributes:{class:"cm-traced-line"}}),tA=ke.define({create(){return I.none},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(Iy)){let r=[];for(let n of t.value)try{let s=e.state.doc.line(n);r.push(eA.range(s.from))}catch(s){}return I.set(r,!0)}return i},provide:i=>W.decorations.from(i)}),Gh={effect:Iy,field:tA};var iA=[...ef(NS,JO),{key:"Mod-Shift-Backspace",run:Kc}],Gy=ef(ov,JO),Ua=64,Ny=ae.define(),Hy=ae.define(),Em=ke.define({create(){return new Map},update(i,e){let t=i;for(let r of e.effects)if(r.is(Hy))t=new Map;else if(r.is(Ny)){t===i&&(t=new Map(i));for(let n of r.value)t.set(n.id,{from:n.from,to:n.to})}if(!e.changes.empty){let r=new Map;for(let[n,s]of t)r.set(n,{from:e.changes.mapPos(s.from,-1),to:e.changes.mapPos(s.to,1)});return r}return t}}),rA=200,zm={default:{theme:Yh},6502:{isAsm:!0},z80:{isAsm:!0},jsasm:{isAsm:!0},gas:{isAsm:!0},vasm:{isAsm:!0},inform6:{theme:zh},dialog:{theme:zh,lineWrap:!0},markdown:{lineWrap:!0},fastbasic:{noGutters:!0},basic:{noGutters:!0},ecs:{theme:Yh}},Ky={input:null};function Jy(i){Ky.input=i?e=>e.toUpperCase():null}var Ca=class Ca{constructor(e,t){this.updateTimer=null;this.dirtylisting=!0;this.refreshDelayMsec=300;this.probe=null;this.path=e,this.mode=t}createDiv(e){var t=document.createElement("div");t.setAttribute("class","editor"),e.appendChild(t);var r=ie.getFile(this.path),n=r&&this.mode=="verilog"&&/__asm\b([\s\S]+?)\b__endasm\b/.test(r);return this.newEditor(t,r,n),this.editor.dispatch({effects:Py(Ky)}),ie.getToolForFilename(this.path).startsWith("remote:")&&(this.refreshDelayMsec=1e3),t}setVisible(e){e?(this.editor.focus(),Ca.tracingEnabled&&this.startTracing()):this.stopTracing()}getShortcuts(){if(!this.editor)return[];var e=this.editor,t=(r,n,s)=>({key:r,label:n,fn:()=>{s(e),e.focus()}});return[t("mod+f","Find",$h),t("mod+g","Find Next",Vs),t("mod+d","Next Occurrence",hp),t("mod+shift+backspace","Delete Line",Kc),t("mod+/","Toggle Comment",Cd),t("mod+z","Undo",oa),t("mod+shift+z","Redo",Rs)]}startTracing(){!this.probe&&v.startProbing&&(this.probe=v.startProbing(),this.probe.singleFrame=!1,this.probe.clear())}stopTracing(){this.probe&&(v.stopProbing(),this.probe=null),this.editor.dispatch({effects:Gh.effect.of([])})}setTracingEnabled(e){Ca.tracingEnabled=e,e?this.startTracing():this.stopTracing()}newEditor(e,t,r){var n=zm[this.mode]||zm.default,s=r||n.isAsm,o=!!n.lineWrap,a=n.theme||zm.default.theme,l=n.useLineNumbers&&!Ds;te.embed&&(l=!1,s=!1);let c=n.noGutters||Ds;var h;let O=km[this.mode];O?h=O.language:(console.warn("Unknown mode: "+this.mode),h=null),this.editor=new W({parent:e,doc:t,extensions:[s?[]:Si.of(" "),s?md.of((f,u)=>{let p=f.state.doc.lineAt(u).number;if(p>=0){let m=f.state.doc.line(p);if(m.text.trim())return f.lineIndent(m.from)}return 0}):[],...s?[Bt.of(iQ(()=>As().tabsToSpaces))]:[],...oQ(As()),Bt.of(iA),l?yc():[],SS(),Bt.of(wS),Mx(),Nb(),ve.allowMultipleSelections.of(!0),Sc(),Ax(),qx(),vc(),wc(),Qc(),sx(),yh(),Op({top:!0}),Bt.of(Gy),h||[],a,Xm,o?W.lineWrapping:[],Za.field,c?[]:[jh.field,jh.gutter],s&&!c?[_a.field,_a.gutter,qh.field,qh.gutter]:[],Dh.field,My.gutter,W.updateListener.of(f=>{for(let u of f.transactions.flatMap(p=>p.effects))if(u.is(Dh.set)&&v.isRunning()&&this.runToBreakpoints(f.state),u.is(Is.runToLine)){let p=u.value;if(this.sourcefile&&this.sourcefile.line2offset){let m=this.sourcefile.line2offset[p];m>=0&&jn([m])}}}),Vn.field,Dy.field,Fh.field,Is.field,Is.gutter,Bh.field,Gh.field,Em,yy(f=>{window.location.hash="asseteditor/"+encodeURIComponent(this.path)+"/"+f}),te.embed?[]:$y(()=>{var f=ie&&ie.getToolForFilename(this.path),u=ie&&ie.platform_id;return[...vl(f,u), Line truncated
`).length-1;this.editor.dispatch({changes:{from:n,insert:e}}),this.highlightLines(r-1,r+s-2)}highlightLines(e,t){let r=this.editor.state.doc.line(e+1);this.editor.dispatch({effects:[Bh.effect.of({start:e+1,end:t+1}),W.scrollIntoView(r.from,{y:"start",yMargin:100})]})}navigateToLine(e){if(e<1||e>this.editor.state.doc.lines)return;let t=this.editor.state.doc.line(e);this.editor.dispatch({selection:{anchor:t.from},effects:[Bh.effect.of({start:e,end:e}),W.scrollIntoView(t.from,{y:"center"})]}),this.editor.focus()}getValue(){return this.editor.state.doc.toString()}getPath(){return this.path}markErrors(e){this.clearErrors(),e=e.slice(0,rA);let t=new Map,r=[];for(var n of e)if(!n.path||this.path.endsWith(n.path)){var s=this.editor.state.doc.lines,o=n.line;(isNaN(o)||o<1||o>s)&&(o=1),t.set(o,n.msg),n.start!=null&&n.end!=null&&n.end>n.start&&r.push({line:o,start:n.start,end:n.end})}this.editor.dispatch({effects:[Vn.set.of(t),Fh.effect.of(r.length>0?r:null)]})}clearErrors(){this.dirtylisting=!0,this.editor.dispatch({effects:[Vn.set.of(new Map),Vn.showMessage.of(null),Fh.effect.of(null)]})}getSourceFile(){return this.sourcefile}updateListing(){this.clearErrors();var e=this.sourcefile.lines||[];let t=new Map,r=new Map,n=new Map;for(var s of e)if(s.offset>=0&&t.set(s.line,Te(s.offset&65535,4)),s.insns){var o=s.insns.length>9?"...":s.insns;if(r.set(s.line,o),s.iscode){if(s.cycles)n.set(s.line,s.cycles+"");else if(v.getOpcodeMetadata){var a=parseInt(s.insns.split(" ")[0],16),l=v.getOpcodeMetadata(a,s.offset);if(l&&l.minCycles){var c=l.minCycles+"";n.set(s.line,c)}}}}this.editor.dispatch({effects:[jh.set.of(t),_a.set.of(r),qh.set.of(n)]})}setTimingResult(e){if(this.sourcefile!=null){var t=new Map;for(let o of Object.keys(this.sourcefile.line2offset)){let a=this.sourcefile.line2offset[o],l=e.pc2clockrange[a];var r=l&&l.minclocks,n=l&&l.maxclocks;if(r>=0&&n>=0){var s;n==r?s=r+"":s=r+"-"+n,n==e.MAX_CLOCKS&&(s+="+"),t.set(parseInt(o),s)}}this.editor.dispatch({effects:[_a.set.of(t)]})}}setCurrentLine(e,t){var r=n=>{this.editor.dispatch({effects:[Is.set.of(n.line),Za.effect.of(n.line),...t?[W.scrollIntoView(this.editor.state.doc.line(n.line).from,{y:"center"})]:[]]})};if(this.clearCurrentLine(t),e){if(e.line<1||e.line>this.editor.state.doc.lines)return;if(r(e),t){let s=this.editor.state.doc.line(e.line).from+(e.start||0);this.editor.dispatch({selection:{anchor:s,head:s},effects:W.scrollIntoView(s,{y:"center"})})}this.currentDebugLine=e}}clearCurrentLine(e){if(this.currentDebugLine){if(e){let t=this.editor.state.selection.main.head;this.editor.dispatch({selection:{anchor:t,head:t}})}this.currentDebugLine=null}this.editor.dispatch({effects:[Is.set.of(null),Za.effect.of(null)]})}getActiveLine(){if(this.sourcefile){var e=li&&li.c;if(!e&&v.getCPUState&&!v.isRunning()&&(e=v.getCPUState()),e){var t=e&&(e.EPC||e.PC),r=this.sourcefile.findLineForOffset(t,Ua);return r}}}refreshDebugState(e){var t=this.getActiveLine();!e&&(t===this.currentDebugLine||!t&&!this.currentDebugLine)||this.setCurrentLine(t,e)}refreshListing(){var e=ie.getListingForFile(this.path);e&&e.sourcefile&&e.sourcefile!==this.sourcefile&&(this.sourcefile=e.sourcefile,this.dirtylisting=!0),!(!this.sourcefile||!this.dirtylisting)&&(this.updateListing(),this.dirtylisting=!1)}refresh(e){this.refreshListing(),this.refreshDebugState(e)}tick(){this.refreshDebugState(!1),this.updateTracedLines()}updateTracedLines(){let e=this.probe;if(!e||!e.idx||!this.sourcefile)return;let t=new Set;for(let r=0;r<e.idx;r++){let n=e.buf[r];if((n&4278190080)===16777216){let s=this.sourcefile.findLineForOffset(n&65535,Ua);s&&t.add(s.line)}}e.clear(),this.editor.dispatch({effects:Gh.effect.of(Array.from(t))})}getLine(e){return this.editor.state.doc.line(e).text}getCurrentLine(){let e=this.editor.state.selection.main.head;return this.editor.state.doc.lineAt(e).number}getCursorPC(){for(var e=this.getCurrentLine();this.sourcefile&&e>=0;){var t=this.sourcefile.line2offset[e];if(t>=0)return t;e--}return-1}undoStep(){oa(this.editor)}redoStep(){Rs(this.editor)}getBreakpointPCs(){if(this.sourcefile==null)return[];let e=[],r=this.editor.state.field(Dh.field).iter();for(;r.value;){let n=this.editor.state.doc.lineAt(r.from).number,s=this.sourcefile.line2offset[n];s>=0&&e.push(s),r.next()}return e}runToBreakpoints(e){let t=this.getBreakpointPCs();t.length>0?jn(t):qn()}};Ca.tracingEnabled=!1;var ai=Ca,Ym=1024,Fs=class{createDiv(e){var t=document.createElement("div");return t.setAttribute("class","editor"),e.appendChild(t),this.newEditor(t),t}newEditor(e){this.disasmview=new W({parent:e,extensions:[vc(),wc(),ve.allowMultipleSelections.of(!0),Sc(),Qc(),yh(),Qy,zh,Za.field,ve.tabSize.of(8),ve.readOnly.of(!0)]})}refresh(e,t){let r=li||v.saveState(),n=t!==void 0?t:r.c?r.c.PC:0,s=0,o=0,a=v.debugSymbols&&v.debugSymbols.addr2symbol||{},l=(O,f)=>{let u="",p=0;for(;p<f;){let m=O+p|0,S=v.disassemble(m,v.readAddress.bind(v)),w="",C="";for(let k=0;k<S.nbytes;k++)w+=Te(v.readAddress(m+k));for(;w.length<14;)w+=" ";let R=S.line Line truncated
`;u+=A,m==n&&(o=s),s++,p+=S.nbytes||1}return u};var c=n<0?n-Ym:Math.max(0,n-Ym);let h=l(c,n-c)+l(n,Ym);if(this.disasmview.dispatch({changes:{from:0,to:this.disasmview.state.doc.length,insert:h}}),e){let O=this.disasmview.state.doc.line(o+1);this.disasmview.dispatch({selection:{anchor:O.from,head:O.from},effects:W.scrollIntoView(O.from,{y:"center"})})}}goToAddress(e){e|=0,this.findAndSelectAddress(e)||(this.refresh(!1,e),this.findAndSelectAddress(e)),this.disasmview.focus()}findAndSelectAddress(e){let t=Te(e,4),r=this.disasmview.state.doc;for(let n=1;n<=r.lines;n++){let s=r.line(n);if(s.text.startsWith(t+" "))return this.disasmview.dispatch({selection:{anchor:s.from,head:s.from+t.length},effects:W.scrollIntoView(s.from,{y:"center"})}),!0}return!1}getCursorPC(){let e=this.disasmview.state.selection.main.head,t=this.disasmview.state.doc.lineAt(e).number;if(t>=0){let n=this.disasmview.state.doc.line(t).text.trim().split(/\s+/);if(n&&n.length>=1){let s=parseInt(n[0],16);if(console.log("getCursorPC",s),s>=0)return s}}return-1}},Nh=class extends Fs{constructor(e){super(),this.path=e}refreshListing(){var e=ie.getListingForFile(this.path);this.assemblyfile=e&&(e.assemblyfile||e.sourcefile)}refresh(e){if(this.refreshListing(),!!this.assemblyfile){var t=this.assemblyfile.text;if(this.disasmview.dispatch({changes:{from:0,to:this.disasmview.state.doc.length,insert:t}}),!!v.saveState){var r=li||v.saveState(),n=r.c?r.c.EPC||r.c.PC:0;if(n>=0&&this.assemblyfile){var s=this.assemblyfile.findLineForOffset(n,Ua);if(s&&e){let o=this.disasmview.state.doc.line(s.line);this.disasmview.dispatch({selection:{anchor:o.from,head:o.from},effects:W.scrollIntoView(o.from,{y:"center"})})}}}}}};function e$(i){let e=[i];try{var t=So(ie.mainPath);t.length>0&&t!="local"&&e.push(t+"/"+i)}catch(s){}for(var r of e){var n=ie&&ie.getFile(r);if(typeof n=="string")return r}return null}function Fy(i){for(var e of zg(i))if(e.editorStyle){var t=Sy(e.editorStyle);if(t)return t}return null}var Mm=new Map;function nA(i){let e=ie.getToolForFilename(ie.mainPath),t=$l(e,ie.platform_id),r=yl(e,ie.platform_id);if(!t||!r.length)return Promise.resolve(null);let n=t+":"+i;return Mm.has(n)||Mm.set(n,(async()=>{var s=[...r.map(h=>h+"/"+i),i];for(var o of s){var a={preload_fs:t,readshared:o,updates:[],buildsteps:[]},l=await ie.queryWorker(a),c=l&&l.output;if(c instanceof Uint8Array&&c.length>0)return new TextDecoder().decode(c)}return null})()),Mm.get(n)}var Kr=class{constructor(e){this.fn=e;this.languageCompartment=new bt}createDiv(e){var t=document.createElement("div");t.setAttribute("class","editor"),e.appendChild(t);var r=Fy(this.fn||this.currentPath||"")||pa();return this.view=new W({parent:t,extensions:[vc(),wc(),ve.allowMultipleSelections.of(!0),Sc(),Qc(),yh(),Op({top:!0}),Bt.of(Gy),this.languageCompartment.of(r),Yh,Xm,ve.readOnly.of(!0)]}),this.refresh(!1),t}setVisible(e){e&&this.refresh(!1)}setHeaderText(e){var t=Fy(this.currentPath||this.fn||"")||pa();this.view.dispatch({effects:this.languageCompartment.reconfigure(t),changes:{from:0,to:this.view.state.doc.length,insert:e}})}refresh(e){var t=this.fn;if(!t){var r=window.location.hash;if(!r||!r.startsWith("#headerview/"))return;t=this.fn=decodeURIComponent(r.substring(12))}this.loadIncludeFile(t)}async loadIncludeFile(e){this.requestedFn=e;var t=e$(e);if(t){this.currentPath=t,this.setHeaderText(ie.getFile(t));return}var r=await nA(e);if(this.requestedFn===e){if(r!=null){this.currentPath=e,this.setHeaderText(r);return}this.currentPath=e,this.setHeaderText("// "+e+` was not found.
// Project include files are loaded during a build -- try building first.
// Toolchain headers are only available when the tool has a bundled filesystem.`)}}navigateToLine(e){if(!(!this.view||e<1)&&e<=this.view.state.doc.lines){let t=this.view.state.doc.line(e);this.view.dispatch({selection:{anchor:t.from},effects:[W.scrollIntoView(t.from,{y:"center"})]}),this.view.focus()}}};function sA(i,e){let t=null;return()=>{t&&clearTimeout(t),t=setTimeout(i,e)}}var oA=30;function Hh(i){return String(i).replace(/[&<>"']/g,e=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"})[e])}function aA(i){let e=i.record;if(e.source==="project"){let t=e.file;if(!t||!G.isWindow(t))return;let r=G.createOrShow(t);r instanceof ai&&e.line&&r.navigateToLine(e.line)}else if(e.source==="toolchain"){let t=e.file;if(!t)return;Aa(t);let r=G.createOrShow("#headerview/"+t);r instanceof Kr&&e.line&&r.navigateToLine(e.line)}else if(e.source==="docs"){let t=e.detail||e.file||"";t&&window.open(t,"_blank")}}function Lm(){bootbox.dialog({title:"Search",onEscape:!0,message:`
<div id="searchbox_form">
<input type="text" id="searchboxInput" class="form-control"
placeholder="Search symbols, files, docs"
autocomplete="off" style="margin-bottom:8px">
<div id="searchboxResults" style="max-height:340px;overflow-y:auto"></div>
</div>
`,buttons:{close:{label:"Close",className:"btn-default"}}}).one("shown.bs.modal",()=>{$("#searchboxInput").trigger("focus")});let e=$("#searchboxInput"),t=$("#searchboxResults"),r=[],n=-1,s=c=>{if(n=Math.max(-1,Math.min(c,r.length-1)),t.find("li.search-hit").each((h,O)=>{$(O).toggleClass("active",h===n)}),n>=0){let h=t[0],O=t.find("li.search-hit").eq(n);if(O.length){let f=O[0],u=h.getBoundingClientRect(),p=f.getBoundingClientRect(),m=p.top-u.top;m<0?h.scrollTop+=m:m+p.height>u.height&&(h.scrollTop+=m+p.height-u.height)}}},o=(c=n)=>{let h=r[c];h&&(aA(h),bootbox.hideAll())},a=c=>{if(r=c||[],r.length===0){n=-1,t.html('<div class="text-muted" style="padding:8px">No matches.</div>');return}let h=$('<ul class="list-group" style="margin-bottom:0"></ul>');for(let O of r){let f=O.record,u=f.source,p=f.kind==="func"?"\u0192":f.kind==="macro"?"#":f.kind==="label"?":":f.kind==="struct"?"S":f.kind==="enum"?"E":f.kind==="text"?"\u2261":"\u2022",m=f.file&&f.line?`${f.file}:${f.line}`:f.file||"",S=f.kind!=="text",w=$('<li class="list-group-item search-hit" style="cursor:pointer;padding:6px 10px;display:flex;align-items:center;overflow:hidden"></li>');w.html(`<span class="search-kind" style="margin-right:6px;font-weight:bold;flex:0 0 auto">${p}</span><span class="search-name" style="flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap">`+(S?`<strong>${Hh(f.name)}</strong>`:`<span class="search-dumb">${Hh(f.name)}</span>`)+(f.brief?` <span class="text-muted">- ${Hh(f.brief)}</span>`:"")+`</span><span class="search-loc" style="flex:0 0 auto;margin-left:8px;font-style:italic;font-size:small;white-space:nowrap">${m?Hh(m):""}</span>`),w.click(()=>{o(r.indexOf(O))}),h.append(w)}t.empty().append(h),s(0)},l=sA(async()=>{let c=e.val();if(!c){r=[],n=-1,t.empty();return}try{let h=await LQ.query(c,oA);a(h)}catch(h){t.html('<div class="text-danger" style="padding:8px">Search failed.</div>')}},150);e.on("input",l),e.on("keydown",c=>{c.key==="ArrowDown"?(c.preventDefault(),s(n+1)):c.key==="ArrowUp"?(c.preventDefault(),s(n-1)):c.key==="Enter"?(c.preventDefault(),n>=0?o():l()):c.key==="Home"?(c.preventDefault(),s(0)):c.key==="End"&&(c.preventDefault(),s(r.length-1))})}var lA=800,cA=1e3,hA=16;function t$(i){return i.art?i.brev?0:7:null}var Kh=/([0#]?)([x$%]|\d'h)([0-9a-f]+)(?:[;].*)?|(\d'b|0b)([01]+)/gim;function qm(i){return i.replace(/(\shex\s+)([0-9a-f]+)/ig,function(e,t,r){for(var n=t,s=0;s<r.length;s+=2)n+="0x"+r.substr(s,2)+",";return n})}function s$(i){for(var e=[],t;t=Kh.exec(i);){var r;t[4]?r=parseInt(t[5],2):t[2].startsWith("%")?r=parseInt(t[3],2):t[2].startsWith("x")||t[2].startsWith("$")||t[2].endsWith("h")?r=parseInt(t[3],16):r=parseInt(t[3]),e.push(r)}return e}function OA(i,e,t){i=qm(i);for(var r="",n,s=0,o=0,a=Math.ceil(t/4);n=Kh.exec(i);)r+=i.slice(s,Kh.lastIndex-n[0].length),s=Kh.lastIndex,n[4]?r+=n[4]+IO(e[o++],parseInt(n[4])):n[2].startsWith("%")?r+=n[1]+n[2]+IO(e[o++],t):n[2].endsWith("h")?r+=n[1]+n[2]+Te(e[o++],parseInt(n[2])):n[2].startsWith("x")?r+=n[1]+"x"+Te(e[o++],a):n[2].startsWith("$")?r+=n[1]+"$"+Te(e[o++],a):r+=n[1]+e[o++].toString();return r+=i.slice(s),r=r.replace(/(\shex\s+)([,x0-9a-f]+)/ig,(l,c,h)=>{var O=c+h;return O=O.replace(/0x/ig,"").replace(/,/ig,""),O}),r}function Dm(i,e){if(!e)return i;for(var t=0,r=0;r<e.length;r++){var n=e[r];n<0&&(n=-n-1,t^=1<<n),i&1<<r&&(t^=1<<n)}return t}function Im(i,e){var t=e[i%e.length];return[t>>3,t&7]}var fA=[[0,0,4],[8,0,0]],uA=[[0,8,12],[8,8,0],[16,8,4],[24,8,8],[32,0,12],[40,0,0],[48,0,4],[56,0,8]];function dA(i,e,t,r,n,s){for(var o=0;o<8;o++)for(var a=i[e+o]||0,l=0;l<4;l++){var c=(3-l)*s+(7-o),h=a>>l&1|(a>>l+4&1)<<1;t[n*s+r+c]=h}}function pA(i,e,t,r,n,s){for(var o=0;o<8;o++){for(var a=0,l=0;l<4;l++){var c=(3-l)*s+(7-o),h=(t[n*s+r+c]||0)&3;h&1&&(a|=1<<l),h&2&&(a|=1<<l+4)}i[e+o]=a}}function Fm(i){return i.w===16&&i.h===16?uA:fA}function o$(i){return Fm(i).length*8}function mA(i,e){for(var t=e.w,r=e.h,n=e.count||1,s=e.wpimg||o$(e),o=Fm(e),a=[],l=0;l<n;l++){for(var c=new Array(t*r).fill(0),h=l*s,O=0;O<o.length;O++){var[f,u,p]=o[O];dA(i,h+f,c,u,p,t)}a.push(new Uint8Array(c))}return a}function gA(i,e){for(var t=e.w,r=e.h,n=e.count||i.length,s=e.wpimg||o$(e),o=Fm(e),a=new Array(s*n).fill(0),l=0;l<n;l++)for(var c=i[l]||new Uint8Array(t*r),h=l*s,O=0;O<o.length;O++){var[f,u,p]=o[O];pA(a,h+f,c,u,p,t)}return a}function bA(i,e){if(e.pacstrip)return mA(i,e);var t=e.w,r=e.h,n=e.count||1,s=e.bpp||1,o=e.np||1,a=e.bpw||8,l=e.sl||Math.ceil(t*s/a),c=(1<<s)-1,h=e.pofs||l*r*n,O=e.skip||0,f=e.wpimg||l*r,u=l;e.il&&(f=l,u=l*n);for(var p=[],m=0;m<n;m++){for(var S=[],w=0;w<r;w++)for(var C=e.flip?r-1-w:w,R=f*m+C*u,A=0,k=0;k<t;k++){var P=0,Z=Dm(R,e.remap);e.reindex&&([Z,A]=Im(k,e.reindex),Z+=R);for(var z=0;z<o;z++){var D=i[Z+z*h+O];P|=((e.brev?D>>a-A-s:D>>A)&c)<<z*s}S.push(P),A+=s,A>=a&&!e.reindex&&(R+=1,A=0)}p.push(new Uint8Array(S))}return p}function a$(i){var e=i.count||1,t=i.bpp||1,r=i.np||1,n=i.bpw||8,s=i.sl||Math.ceil(i.w*t/n),o=i.pofs||s*i.h*e,a=i.skip||0Line truncated
`&&t++;return t}function h$(i,e){for(var t=/[/;][*;]([{].+[}])[*;][/;]/g,r=[],n;n=t.exec(i);){var s=n.index+n[0].length,o;e?o=i.indexOf("end",s):n[0].startsWith(";;")?(o=i.indexOf(";;",s),o==i.indexOf(";;{",s)&&(o=-1)):o=i.indexOf(";",s);var a=i$(i,n.index),l=n[0],c=o>=0?i$(i,o):"???";if(o<0){var h=e?'"end"':n[0].startsWith(";;")?'";;"':'";"';r.push({header:l,startline:a,endline:c,error:`No closing ${h} found after asset header`})}else if(o<=s)r.push({header:l,startline:a,endline:c,error:"Empty data block after asset header"});else try{var O=n[1].replace(/([A-Za-z]+):/g,'"$1":'),f=JSON.parse(O),u=/#embed\s+"(.+?)"/.exec(i.substring(s,o)),p=u?u[1]:void 0;r.push({header:l,startline:a,endline:c,fmt:f,start:s,end:o,embedFile:p})}catch(m){r.push({header:l,startline:a,endline:c,error:`Invalid asset format: ${m.message}`})}}return r}function O$(i,e,t){if(t(e))return e;var r=i.lastIndexOf("/");if(r>=0){var n=i.substring(0,r+1)+e;if(t(n))return n}return null}function xA(i,e){if(e.destfmt&&(e=e.destfmt),e.pacstrip)return gA(i,e);var t=e.w,r=e.h,n=e.count||1,s=e.bpp||1,o=e.np||1,a=e.bpw||8,l=e.sl||Math.ceil(e.w*s/a),c=(1<<s)-1,h=e.pofs||l*r*n,O=e.skip||0,f=e.wpimg||l*r,u=l;e.il&&(f=l,u=l*n);var p=e.il?u*r:f*n,m;o>0&&e.sl?m=new Uint8Array(p):a<=8?m=new Uint8Array(p*o):m=new Uint32Array(p*o);for(var S=0;S<n;S++)for(var w=i[S],C=0,R=0;R<r;R++)for(var A=e.flip?r-1-R:R,k=S*f+A*u,P=0,Z=0;Z<t;Z++){var z=w[C++],D=Dm(k,e.remap);e.reindex&&([D,P]=Im(Z,e.reindex),D+=k);for(var Oe=0;Oe<o;Oe++){var se=z>>Oe*s&c;m[D+Oe*h+O]|=e.brev?se<<a-P-s:se<<P}P+=s,P>=a&&!e.reindex&&(k+=1,P=0)}return m}function r$(i,e,t,r,n,s,o){for(var a=[],l=0;l<i.length;l++){var c=i[l],h=4278190080;h|=(c>>e&(1<<t)-1)<<8-t,h|=(c>>r&(1<<n)-1)<<16-n,h|=(c>>s&(1<<o)-1)<<24-o,a.push(h)}return a}function SA(i){var e=(i>>0&1)*33+(i>>1&1)*71+(i>>2&1)*151,t=(i>>3&1)*33+(i>>4&1)*71+(i>>5&1)*151,r=(i>>6&1)*81+(i>>7&1)*174;return 4278190080|r<<16|t<<8|e}function QA(i){var e=i.pal;if(typeof e=="number"){var t=Math.floor(Math.abs(e/100)%10),r=Math.floor(Math.abs(e/10)%10),n=Math.floor(Math.abs(e)%10);return 1<<t+r+n}else{if(e==="pacman")return 256;var s=f$[e];if(s)return s.length;throw new Error("No palette named "+e)}}function n$(i,e){var t=e.pal,r;if(typeof t=="number"){var n=Math.floor(Math.abs(t/100)%10),s=Math.floor(Math.abs(t/10)%10),o=Math.floor(Math.abs(t)%10);t>=0?r=r$(i,0,n,n,s,n+s,o):r=r$(i,n+s,o,n,s,0,n)}else if(t==="pacman"){r=[];for(var a=0;a<i.length;a++)r.push(SA(i[a]))}else{var l=f$[t];if(l)r=new Uint32Array(i).map(c=>l[c&l.length-1]|4278190080);else throw new Error("No palette named "+t)}return r}var f$={gb:[13686916,8890444,5401396,2961698],nes:[5395026,11796480,10485760,11599933,7602281,91,95,6208,12048,543240,26368,1196544,7153664,0,0,0,12899815,16728064,14421538,16729963,14090399,6818519,6588,21681,27227,35843,43776,2918400,10777088,0,0,0,16316664,16755516,16742785,16735173,16730354,14633471,4681215,46327,57599,58229,259115,7911470,15065624,7895160,0,0,16777215,16773822,16300216,16300248,16758527,16761855,13095423,10148607,8973816,8650717,12122296,16119980,16777136,16308472,0,0],ap2lores:[0,16711935,127,8323199,32512,8355711,191,255,12549888,16760576,12566463,16744319,65280,16776960,49023,16777215],vcs:[0,0,4210752,4210752,7105644,7105644,9474192,9474192,11579568,11579568,13158600,13158600,14474460,14474460,16053492,16053492,17476,17476,1074276,1074276,2393220,2393220,3448992,3448992,4241592,4241592,5296336,5296336,6088936,6088936,6880508,6880508,10352,10352,1328260,1328260,2645144,2645144,3963052,3963052,5016764,5016764,6070476,6070476,6862044,6862044,7915756,7915756,6276,6276,1586328,1586328,3166380,3166380,4745408,4745408,6062288,6062288,7378144,7378144,8431852,8431852,9747708,9747708,136,136,2105500,2105500,3947696,3947696,5789888,5789888,7368912,7368912,8947936,8947936,10526956,10526956,11842812,11842812,6029432,6029432,7610508,7610508,8928416,8928416,10246320,10246320,11563200,11563200,12616912,12616912,13671644,13671644,14725356,14725356,7864392,7864392,9445472,9445472,10763384,10763384,12081292,12081292,13398176,13398176,14451892,14451892,15506628,15506628,16560340,16560340,8650772,8650772,9969712,9969712,11287628,11287628,12605544,12605544,13660284,13660284,14715028,14715028,15507624,15507624,16561340,16561340,8912896,8912896,10231836,10231836,11550776,11550776,12606544,12606544,13661288,13661288,14716028,14716028,15508624,15508624,16562340,16562340,8132608,8132608,9451548,9451548,11031608,11031608,12349520,12349520,13404264,13404264,14457980,14457980,15512720,15512720,16566436,16566436,6040576,6040576,7883804,7883804,9463864,9463864,11306064,11306064,12622952,12622952,13939836,13939836,15256720,15256720,16572580,16572580,2898944,2898944,4742172,4742172,6585400,6585400,8428624,8428624,9745512,9745512,11325564,11325564,12641424,12641424,13958308,13958308,15360,15360,2120736,2120736,4226112,4226112,6069340,6069340,7648372,7648372,9228428,9228428,10806436,10806436,12123320,12123320,14356,14356,1858612,1858612,3701840,3701840,5281900,5281900,68 Line truncated
`+s),n+=`
`+this.opToString(l,c,u))}),"X: "+t+" Y: "+r+" "+n}refresh(){this.tick(),this.datau32.fill(Vi)}tick(){super.tick(),this.drawImage()}drawImage(){this.ctx.putImageData(this.imageData,0,0)}clear(){this.datau32.fill(Vi)}},uO=class extends fO{createDiv(e){return this.createCanvas(e,256,256)}initCanvas(){super.initCanvas(),this.canvas.onclick=e=>{var t=gl(this.canvas,e),r=Math.floor(t.x)+Math.floor(t.y)*256,n=-1,s=-1;this.redraw((o,a)=>{s<0&&n>=0&&a==r&&(s=n),o==16777216&&(n=a)}),s>=0&&jn([s])}}clear(){for(var e=0;e<=65535;e++){var t=v.readAddress(e),r=t>>2|t&31;r|=r<<8|r<<16,this.datau32[e]=r|Vi}}drawEvent(e,t,r,n){var s=this.getOpRGB(e,t);if(s){var o=t&255,a=t>>8&255,l=this.datau32[t&65535];l=l|s|Vi,this.datau32[t&65535]=l}}getTooltipText(e,t){var r=(e&255)+(t<<8),n="",s=-1,o={},a=null,l=[];return this.redraw((c,h,O,f,u,p)=>{switch(c){case 16777216:s=h,a=this.addr2symbol(h)||a;break;case 167772160:l.push(a);break;case 184549376:a=l.pop();break}var m=c|s;h==r&&!o[m]&&(n==""&&a&&(n+=`
`+a),n+=`
PC `+this.addr2str(s)+" "+this.opToString(c,null,p),o[m]=1)}),this.addr2str(r)+n}},Nm=class extends fO{initCanvas(){super.initCanvas(),this.canvas.onclick=e=>{var t=gl(this.canvas,e),r=Math.floor(t.x),n=Math.floor(t.y),s=this.getOpAtPos(t.x,t.y,16777216);s&&(ar("toline"),v.runEval(()=>{let o=v.getRasterScanline&&v.getRasterScanline()>=n;return o&&v.getRasterLineClock?o&&v.getRasterLineClock()>r:o}))}}drawEvent(e,t,r,n){var s=this.getOpRGB(e,t);if(s){var o=r+n*this.canvas.width,a=s|Vi;this.datau32[o]|=a}}drawImage(){let e=Vi;for(let t=0;t<this.datau32.length;t++)this.datau32[t]==Vi?this.datau32[t]=e:e=this.datau32[t];super.drawImage()}},dO=class extends Nm{constructor(){super(...arguments);this.interrupt=0;this.rgb=0;this.lastpc=0}drawEvent(t,r,n,s){var o=n+s*this.canvas.width;if(t==134217728&&(this.interrupt=1),this.interrupt==1&&t==167772160&&(this.interrupt=r),this.interrupt>1&&this.sp>this.interrupt&&(this.interrupt=0),t==318767104&&(this.rgb|=47),t==385875968&&(this.rgb|=16256),t==352321536&&(this.rgb|=2047872),t==335544320&&(this.rgb|=7936),t==520093696&&(this.rgb=32768),t==150994944||t==402653184)this.datau32[o]=4279176975;else{let a=this.rgb;if(t==16777216){let l=this.sp&15;l>=8&&(l=16-l),Math.abs(this.lastpc)-r>16&&(l+=1),Math.abs(this.lastpc)-r>256&&(l+=1),a=this.rgb=526344*l+2105376,this.lastpc=r}this.interrupt&&(a|=8388672),this.datau32[o]==Vi&&(this.datau32[o]=a|Vi)}}},pO=class extends Jr{constructor(){super(...arguments);this.recreateOnResize=!0}createDiv(t){return this.vlist=new Fn(t),this.vlist.create(t,this.cyclesPerLine*this.totalScanlines,this.getMemoryLineAt.bind(this)),this.vlist.maindiv}getMemoryLineAt(t){var r="",n="seg_data",s=this.dumplines&&this.dumplines[t];if(s!=null){var o=s.info.join(", ");r="("+Gi(s.row,4)+", "+Gi(s.col,4)+") "+xo(s.asm||"",20)+o,o.indexOf("Write ")>=0&&(n="seg_io")}return{text:r,clas:n}}refresh(){this.tick()}tick(){let t=v instanceof KO||v instanceof HO;this.dumplines={},this.redraw((r,n,s,o,a,l)=>{t&&(a>>=2);var c=this.dumplines[a];switch(c==null&&(c={op:r,addr:n,row:o,col:s,asm:null,info:[]},this.dumplines[a]=c),r){case 16777216:if(v.disassemble){var h=v.disassemble(n,v.readAddress.bind(v));c.asm=h&&h.line}break;default:var O=this.opToString(r,n,l);O!=""&&c.info.push(O);break}}),this.vlist.refresh()}},mO=class extends Jr{constructor(){super(...arguments);this.recreateOnResize=!0}createDiv(t){return this.vlist=new Fn(t),this.vlist.create(t,this.totalScanlines,this.getMemoryLineAt.bind(this)),this.vlist.maindiv}getMemoryLineAt(t){for(var r=Gi(t+"",3)+" ",n="seg_code",s=this.dumplines&&this.dumplines[t]||[],o=Math.round(this.cyclesPerLine/3.3),a=0;a<this.cyclesPerLine;a++){var l=s[a];if(l!==void 0){var c=l&65535,h=h&Vi;if(h==16777216)r+=",";else{var O=Te(c);r+=O,a+=O.length-1}}else r+=a==o?"|":"."}return s[-1]&&(r+=" "+s[-1]),{text:r,clas:n}}refresh(){this.tick()}tick(){let t=v instanceof KO||v instanceof HO;this.dumplines={},this.redraw((r,n,s,o,a,l)=>{var c=this.dumplines[o];switch(c==null&&(this.dumplines[o]=c=[]),r){case 16777216:var h=v.debugSymbols.addr2symbol[n];h&&(c[-1]=h);break;case 335544320:case 352321536:case 369098752:case 385875968:c[s]=r|n;break}}),this.vlist.refresh()}},gO=class extends Jr{constructor(){super(...arguments);this.recreateOnResize=!0;this.cumulativeData=!0}createDiv(t){return v.debugSymbols&&v.debugSymbols.symbolmap?this.keys=Array.from(Object.keys(v.debugSymbols.symbolmap).filter(r=>!p$(r))):this.keys=["no symbols defined"],this.vlist=new Fn(t),this.vlist.create(t,this.keys.length+1,this.getMemoryLineAt.bind(this)),this.vlist.maindiv}getMemoryLineAt(t){if(t==0)return{text:Gi("Symbol",35)+Gi("Reads",8)+Gi("Writes",8)};var r=this.keys[t-1],n=this.dumplines&&this.dumplines[r];function s(l){var c=n[l]|0;return Gi(c?c.toString():"",8)}var o,a;return n!=null?(o=Gi(r,35)+s(301989888)+s(318767104),n[16777216]?a="seg_code":n[335544320]||n[352321536]?a="seg_io":a="seg_data"):(o=Gi(r,35),a="seg_unknown"),{text:o,clas:a}}refresh(){this.tick()}tick(){this.dumplines={},this.redraw((t,r,n,s,o,a)=>{var l=v.debugSymbols.addr2symbol[r];if(l!=null){var c=this.dumplines[l];c==null&&(c={},this.dumplines[l]=c),c[t]=(c[t]|0)+1}}),this.vlist.refresh(),this.probe&&this.probe.clear()}};var Wa=256,m$=100,g$=!1,bO=class i{constructor(e,t){this.expanded=!1;this.parent=e,this.name=t,this.children=new Map,this.level=e?e.level+1:-1,this.view=e?e.view:null}getDiv(){return this._div==null&&(this._div=document.createElement("div"),this._div.classList.add("vertical-scroll"),this._div.classList.add("tree-content"),this._header=document.createElement("div"),this._header.classList.add("tree-header"),this._header.classList.add("tree-level-"+this.level),this._header.append(this.name),this._inline=document.createElement("span"),this._inline.classList.add("tree-value"),this._header.append(this._inline),this._div.append(this._header),this.parent._content.append(this._div),this._header.onclick=e=>{this.toggleExpanded()}),this.expanded&&this._content==null?(this._content=d Line truncated
`,await L$(i),te.newfile?!r&&!t?Qe('No build tool for "'+i+'" on this platform; project will not build.'):r?I$(!0,!0):Pt("No skeleton file for "+t+" on this platform; using blank file."):Pt('Could not find file "'+i+'"<br><br>Creating new '+(r?t:"blank")+" file."),delete te.newfile,ZO()}}function dg(i){if(i=="/")te={repo:"/"};else if(i.indexOf("://")>=0){var e=ha(i);e&&(te={repo:e.repopath})}else te.platform=ce,te.file=i;An()}async function mE(i){var e=nf(v.getToolForFilename(i));try{return await $.get("presets/"+Ut(ce)+"/skeleton."+e,"text")}catch(t){return console.log(t+""),null}}function pg(i){return i.indexOf(" ")>=0?(Qe("No spaces in filenames, please."),!1):!0}async function gE(i){var e=Ut(ce),t={},r=[];for(var n of i){var s=v.getToolForFilename("test"+n);t[s]||(t[s]=[],r.push(s)),t[s].push(n)}var o=r.map(h=>$.ajax({url:"presets/"+e+"/skeleton."+nf(h),type:"HEAD"}).then(()=>h,()=>null)),a=await Promise.all(o),l=[];for(var c of a)c!=null&&l.push({tool:c,extensions:t[c]});return l}async function bE(i){var e=await gE(v.getDefaultExtensions()),t,r;return e.length===0?(t=v.getDefaultExtensions(),r=t.join(" ")):(t=e.reduce((n,s)=>n.concat(s.extensions),[]),r=e.map(n=>n.extensions.join(" ")).join("<br>")),bootbox.prompt({title:"Enter the name of your new main source file.<br><br><span class='dialog-help'>"+r+"</span>",placeholder:"newfile"+t[0],callback:n=>{if(n&&n.trim().length>0){if(!pg(n))return;n.indexOf(".")<0&&(n+=t[0]);var s=n;te.newfile="1",dg(s)}}}),!0}function xE(i){let e=$('<input type="file" multiple accept="*" style="display:none">'),t=e[0];e.change(r=>{SE(t.files)}),e.click()}function SE(i){console.log(i);var e=0;function t(){var r=i[e++];if(!r)console.log("Done uploading",e),e>2?(Pt("Files uploaded."),setTimeout(Ga,1e3)):(te.file=i[0].name,bootbox.confirm({message:"Open '"+nn.sanitize(te.file)+"' as main project file?",buttons:{confirm:{label:"Open As New Project"},cancel:{label:"Include/Link With Project Later"}},callback:o=>{o?An():setTimeout(Ga,1e3)}}));else{var n=r.name,s=new FileReader;s.onload=function(o){var a=o.target.result,l=new Uint8Array(a);un(n,l)||(l=dl(l).replace(`\r
`,`
`)),G.updateFile(n,l),console.log("Uploaded "+n+" "+l.length+" bytes"),t()},s.readAsArrayBuffer(r)}}i&&t()}async function QE(i){var e=window.showDirectoryPicker;e||Qe("This browser can't open local files on your computer, yet. Try Chrome.");var t=await e(),r=t.name,n="__localfs__"+r,s={handle:t},o=fg.createInstance({name:n,version:2});await o.setItem(n,s),te={localfs:r},An(!0)}async function vE(i){return new Promise((e,t)=>{bootbox.prompt(nn.sanitize(i),r=>{e(r)})})}async function wE(i){let e={mode:"readwrite"};var t="__localfs__"+i,r=fg.createInstance({name:t,version:2}),n=await r.getItem(t),s=n.handle;console.log(n,s);var o=await s.queryPermission(e);if(console.log(o),o!=="granted"&&(await vE("Request permissions to access filesystem?"),o=await s.requestPermission(e)),o!=="granted"){Qe("Could not get permission to access filesystem.");return}let a={};return{getFileData:async l=>{console.log("getFileData",l);let h=await(await s.getFileHandle(l,{create:!1})).getFile(),O=await(un(l)?h.arrayBuffer():h.text());return O instanceof ArrayBuffer?new Uint8Array(O):O},setFileData:async(l,c)=>{a[l]=Date.now();let O=await(await s.getFileHandle(l,{create:!0})).createWritable();await O.write(c),await O.close()},onFileSystemUpdate:l=>{if(typeof window.FileSystemObserver=="undefined")return;new window.FileSystemObserver((h,O)=>{for(let f of h)if(f.changedHandle){let u=f.changedHandle.name;if(Date.now()-(a[u]||0)<2e3)continue;l(u)}}).observe(s,{recursive:!0})}}}function lt(){return gt(ie.mainPath)}function kQ(){return gt(G.getActiveID())}function yE(i){var e=G.getActive(),t=G.getActiveID(),r=e&&e.setData&&!e.setText;if(e&&(e.setText||e.setData)){var n="presets/"+Ut(ce)+"/"+t;Qo(n,s=>{if(s==null){ct?Qe("Can only revert built-in examples. If you want to revert all files, You can pull from the repository."):Qe("Can only revert built-in examples.");return}bootbox.confirm("Reset '"+nn.sanitize(t)+"' to default?",o=>{o&&(r?(e.setData(s),ie.updateFile(t,s)):e.setText(s))})},r?"arraybuffer":"text")}else Qe("Cannot revert the active window. Please choose a text file.")}function $E(i){var e=G.getActive();if(e&&e.getPath){var t=G.getActiveID();bootbox.confirm("Delete '"+nn.sanitize(t)+"'?",r=>{r&&Pi.removeItem(t).then(()=>{te.file==t?($r.unsetLastPreset(),An()):(Ga(),Pt("Deleted "+t))})})}else Qe("Cannot delete the active window.")}function PE(i){var e=G.getActive();if(e&&e.getPath&&ie.getFile(e.getPath())){var t=G.getActiveID();bootbox.prompt({title:"Rename '"+nn.sanitize(t)+"' to?",value:t,callback:r=>{var n=ie.getFile(e.getPath());if(r&&r!=t&&n){if(!pg(r))return;Pi.removeItem(t).then(()=>Pi.setItem(r,n)).then(()=>{Ga(),alert("Renamed "+t+" to "+r),t==ie.mainPath&&dg(r)})}}})}else Qe("Cannot rename the active window.")}function kE(i){let e={},t,r=v.getPresets?v.getPresets():[];for(var n=0;n<r.length;n++){var s=r[n],o=s.chapter?s.chapter+". "+s.name:s.name,a=s.id==ie.mainPath;s.category?t=$("<optgroup />").attr("label","Examples: "+s.category).appendTo(i):t||(t=$("<optgroup />").attr("label","Examples").appendTo(i)),t.append($("<option />").val(s.id).text(o).attr("selected",a?"selected":null)),a&&(yO=s),e[s.id]=o}return e}function XE(i){if(jt&&!io){var e=0,t=Zn();if(t){let n=$("<optgroup />").attr("label","Repositories").appendTo(i);for(let s in t){var r=t[s];r.platform_id&&Ut(r.platform_id)==Ut(ce)&&n.append($("<option />").val(r.url).text(r.url.substring(r.url.indexOf("/"))))}}}}async function W$(i,e,t,r){let n=await Pi.keys();n||(n=[]);let s;for(var o=0;o<n.length;o++){let a=n[o];if(a.startsWith(t)&&!r[a]){s||(s=$("<optgroup />").attr("label",e).appendTo(i));let l=a.substring(t.length);s.append($("<option />").val(a).text(l).attr("selected",a==ie.mainPath?"selected":null))}}}function V$(i){i.css("visibility","visible");var e=ie.mainPath;i.val()!=e&&i.append($("<option />").val(e).text(e).attr("selected","selected"))}async function Ga(){var i=$("#preset_select").empty();if(ct)i.append($("<option />").val("/").text("Leave Repository")),$("#repo_name").text(gt(ct)+"/").show(),await W$(i,ct,"",{}),V$(i);else{XE(i);var e=kE(i);await W$(i,"Local Files","",e),V$(i)}i.off("change").change(function(t){dg($(this).val().toString())})}function TE(i){var e=$("<p/>");if(i.path!=null){var t=i.line?i.label?`(${i.path} @ ${i.label})`:`(${i.path}:${i.line})`:`(${i.path})`,r=$("<a/>").text(t),n=i.path;n==lt()&&(n=ie.mainPath),G.isWindow(n)&&r.click(s=>{var o=G.createOrShow(n);o instanceof ai&&o.navigateToLine(i.line)}),e.append(r),e.append("&nbsp;")}return e.append($("<span/>").text(i.msg)),e}function F$(){$("#error_alert").hide(),ug=!1}function mg(i,e){var t=$("#error_alert_msg").empty();for(var r of i.slice(0,10))t.append(TE(r));$("#error_alert").show(),ug=e;var n=i.find(o=>o.path!=null),s;n&&G.isWindow(n.path==lt()?ie.mainPath:n.path)&&(s=()=>{ZE(n)})}function B$(i,e){if(e!=null){var t={msg:e,line:0};i instanceof NO&&i.$loc&&(t=Object.create(i.$loc),t.msg=e,console.log(t)),mg([t],!0)}}async function _E(i){if("uppercaseOnly"in i&&Jy(i.uppercaseO Line truncated
`),e.SP&&(t+="c.SP < 0x"+Te(e.SP)+`
`),e.HL&&(t+=`c.HL == 0x4000
`),v.readAddress&&(t+=`this.readAddress(0x1234) == 0x0
`),v.readVRAMAddress&&(t+=`this.readVRAMAddress(0x1234) != 0x80
`),v.getRasterScanline&&(t+=`this.getRasterScanline() > 222
`),t}function WE(i){var e=new Function("c","return ("+i+");").bind(v);ar(),v.runEval(e),D$=i}function lP(){v.isRunning()?(G.tick(),$O=!1):$O||(G.tick(),$O=!0),setTimeout(lP,100)}function RO(i){v.setFrameRate(i),i>.01?$("#fps_label").text(i.toFixed(2)):$("#fps_label").text("1/"+Math.round(1/i))}function VE(){var i=v.getFrameRate();i=i/2,i>1e-5&&RO(i)}function jE(){var i=v.getFrameRate();i=Math.min(60,i*2),RO(i)}function qE(){RO(60/65536)}function DE(){Pr(),RO(60)}function IE(){G.refresh(!1);var i=G.getActive();if(i.getSourceFile&&i.setTimingResult){var e=v.newCodeAnalyzer();e.showLoopTimingForPC(0),i.setTimingResult(e)}}function bg(){eo&&(v.setRecorder(null),$("#dbg_record").removeClass("btn_recording"),$("#replaydiv").hide(),gg(),eo=!1)}function cP(){eo&&Vt.reset()}function hP(){Vt.reset(),v.setRecorder(Vt),$("#dbg_record").addClass("btn_recording"),$("#replaydiv").show(),eo=!0}function FE(){eo?bg():hP(),hr()}function BE(){var i=!ai.tracingEnabled;$("#dbg_tracelines").toggleClass("btn_active",i);var e=G.getActive();e instanceof ai?e.setTracingEnabled(i):ai.tracingEnabled=i}function qi(i,e,t){var r=G.getActive();r&&r.insertLinesBefore?bootbox.prompt({title:"Add "+nn.sanitize(i)+" File to Project",value:"filename"+nn.sanitize(e),callback:n=>{if(n&&n.trim().length>0){if(!pg(n))return;var s=n,o=`
`+t(n)+`
`;ie.loadFiles([s]).then(a=>{a&&a.length?Qe(n+" already exists; including anyway"):ie.updateFile(s,`
`),r.insertLinesBefore(o),Js()})}}}):Qe("Can't insert text in this window -- switch back to main file")}function GE(){var i=lt(),e=v.getToolForFilename(i);i.endsWith(".c")||e=="sdcc"||e=="cc65"||e=="cmoc"||e=="smlrc"?qi("Header",".h",t=>'#include "'+t+'"'):e=="dasm"||e=="zmac"?qi("Include",".inc",t=>' include "'+t+'"'):e=="ca65"||e=="sdasz80"||e=="vasm"||e=="armips"?qi("Include",".inc",t=>' .include "'+t+'"'):e=="verilator"?qi("Verilog",".v",t=>'`include "'+t+'"'):e=="wiz"?qi("Include",".wiz",t=>'import "'+t+'";'):e=="ecs"?qi("Include",".ecs",t=>'import "'+t+'"'):e=="acme"?qi("Include",".acme",t=>'!src "'+t+'"'):e=="xa"?qi("Include",".xa",t=>'#include "'+t+'"'):e=="dialog"?qi("Include",".dg",t=>'%% #include "'+t+'"'):Qe("Can't add include file to this project type ("+e+")")}function NE(){var i=lt(),e=v.getToolForFilename(i);i.endsWith(".c")||e=="sdcc"||e=="cc65"||e=="cmoc"||e=="smlrc"?qi("Linked C (or .s)",".c",t=>'//#link "'+t+'"'):i.endsWith("asm")||i.endsWith(".s")||e=="ca65"||e=="lwasm"?qi("Linked ASM",".inc",t=>';#link "'+t+'"'):Qe("Can't add linked file to this project type ("+e+")")}function HE(){if(tt=new Sl($("#toolbar")[0],null),tt.grp.prop("id","run_bar"),tt.add("mod+shift+r","Reset","glyphicon-refresh",oP).prop("id","dbg_reset"),tt.add("mod+shift+h","Pause","glyphicon-pause",H$).prop("id","dbg_pause"),tt.add("mod+shift+g","Go To Address","",r=>{G$()||XO()}),tt.add("mod+shift+g","Resume","glyphicon-play",XO).prop("id","dbg_go"),v.restartAtPC&&tt.add("mod+shift+a","Restart at Cursor","glyphicon-play-circle",iP).prop("id","dbg_restartatline"),tt.newGroup(),tt.grp.prop("id","debug_bar"),v.runEval&&tt.add("mod+shift+d","Reset and Debug","glyphicon-fast-backward",aP).prop("id","dbg_restart"),v.stepBack&&tt.add("mod+shift+j","Step Backwards","glyphicon-step-backward",sP).prop("id","dbg_stepback"),v.step&&tt.add("mod+shift+l","Single Step","glyphicon-step-forward",K$).prop("id","dbg_step"),v.stepOver&&tt.add("mod+shift+k","Step Over","glyphicon-hand-right",J$).prop("id","dbg_stepover"),v.runUntilReturn&&tt.add("mod+shift+i","Step Out of Subroutine","glyphicon-hand-up",nP).prop("id","dbg_stepout"),v.runToVsync&&tt.add("mod+shift+x","Next Frame/Interrupt","glyphicon-forward",eP).prop("id","dbg_tovsync"),(v.runEval||v.runToPC)&&!ce.startsWith("verilog")&&tt.add("mod+shift+y","Run To Line","glyphicon-save",rP).prop("id","dbg_toline"),tt.newGroup(),tt.grp.prop("id","xtra_bar"),tt.add("mod+shift+f","Search","glyphicon-search",Lm).prop("id","dbg_search"),$(".dropdown-menu").collapse({toggle:!1}),$("#item_new_file").click(bE),$("#item_upload_file").click(xE),$("#item_open_directory").click(QE),$("#item_github_login").click(XQ),$("#item_github_logout").click(TQ),$("#item_github_import").click(_Q),$("#item_github_publish").click(RQ),$("#item_github_push").click(ZQ),$("#item_github_pull").click(CQ),$("#item_repo_delete").click(AQ),$("#item_share_file").click(bQ),$("#item_reset_file").click(yE),$("#item_rename_file").click(PE),$("#item_delete_file").click($E),v.runEval?$("#item_debug_expr").click(ME).show():$("#item_debug_expr").hide(),$("#item_download_rom").click(SQ),$("#item_download_file").click(QQ),$("#item_download_zip").click(wQ),v.getDebugSymbolFile?$("#item_download_sym").click(yQ):$("#item_download_sym").hide(),$("#item_download_allzip").click($Q),$("#item_record_video").click(PQ),Wd()?$("#item_export_cassette").click(xQ):$("#item_export_cassette").hide(),v.setFrameRate&&v.getFrameRate&&($("#dbg_slower").click(VE),$("#dbg_faster").click(jE),$("#dbg_slowest").click(qE),$("#dbg_fastest").click(DE)),$("#item_addfile_include").click(GE),$("#item_addfile_link").click(NE),$("#item_request_persist").click(()=>I$(!0,!1)),$("#item_settings").click(cQ),$("#item_keyboard_shortcuts").click(JE),$("#item_asset_editor_help").click(e5),lP(),v.newCodeAnalyzer&&tt.add(null,"Analyze CPU Timing","glyphicon-time",IE),v.startProbing&&tt.add(null,"Highlight Executed Lines","glyphicon-fire",BE).prop("id","dbg_tracelines"),v.setRecorder&&v.advance&&t5(),v.showHelp){let{li:r,a:n}=lg("help__"+ce,og+" Help");$("#help_menu").append(r),$(n).click(s=>{s.preventDefault(),window.open(v.showHelp(),"_8bws_help")})}let i=v.getToolForFilename(lt()),e=i&&Hi(i),t=e==null?void 0:e.helpURL;if(t){let r=i+" Help";e.version&&(r+=" ("+e.version+")");let{li:n,a:s}=lg("help__"+i,r);$("#help_menu").append(n),$(s).click(o=>{o.preventDefault(),window.open(t,"_8bws_help")})}$("#item_tool_versions").click(KE)}function KE(){let i=(t,r,n)=>`<tr><td>${t}</td><td>${r}</td><td>${n}</td></tr>`,e=Object.values(yo).filter(t=>t.wasmModule&&t.version).sort((t,r)=>t.name.localeCompare(r.name));bootbox.dialog({title:"Toolchain Versions",onEscape:!0,message:`
<table class="help">
<tr><th>Tool</th><th>Kind</th><th>Version</th></tr>
${e.map(t=>{var r;return i(t.name,t.kind,(r=t.version)!=null?r:"?")}).join(`
`)}
</table>`})}function JE(){let i=/Mac|iPhone|iPad/.test(navigator.platform),e=i?"&#8984;":"Ctrl",t=i?"&#8997;":"Alt",r=i?"&#8679;":"Shift",n=(s,o)=>`<tr><td><kbd>${s}</kbd></td><td>${o}</td></tr>`;bootbox.dialog({title:"Keyboard shortcuts",onEscape:!0,message:`
<table class="help">
<tr><th colspan="2">Custom</th></tr>
${n(`${e}+${r}+F`,"Search symbols, files, and docs")}
${n(`${r}+${t}+F`,"Format document, or selected range(s)")}
${n("Tab","Insert to next tab stop, or indent selected range(s)")}
${n(`${r}+Tab`,"Outdent line(s) or selected range(s)")}
${n("Enter","Insert newline, keep cursor at same column pos")}
<tr><th colspan="2">Standard</th></tr>
<tr>
<td>Built-in</td>
<td>
Included CodeMirror shortcuts:<br>
<a target="_blank" href="https://codemirror.net/docs/ref/#commands.defaultKeymap">defaultKeymap</a>,
<a target="_blank" href="https://codemirror.net/docs/ref/#commands.standardKeymap">standardKeymap</a>,
<a target="_blank" href="https://codemirror.net/docs/ref/#commands.historyKeymap">historyKeymap</a>,
<a target="_blank" href="https://codemirror.net/docs/ref/#search.searchKeymap">searchKeymap</a>
</td>
</tr>
</table>`,buttons:{ok:{label:"OK",className:"btn-primary"}}})}function e5(){let i=(e,t,r)=>`<tr><td><code>${e}</code></td><td>${t}</td><td>${r}</td></tr>`;bootbox.dialog({title:"Asset Editor Reference",onEscape:!0,message:`
<p>Add asset headers in source code as comments containing JSON format descriptors:</p>
<p>
C: <code>/*{w:8,h:8}*/</code> followed by data, terminated by <code>;</code><br>
ASM: <code>;;{w:8,h:8};;</code> followed by data, terminated by <code>;;</code>
</p>
<table class="help">
<tr><th colspan="3">Image Format</th></tr>
<tr><td><b>Field</b></td><td><b>Default</b></td><td><b>Description</b></td></tr>
${i("w","<i>required</i>","Width in pixels")}
${i("h","<i>required</i>","Height in pixels")}
${i("count","1","Number of images")}
${i("bpp","1","Bits per pixel")}
${i("np","1","Number of bitplanes (total colors = 2<sup>bpp&times;np</sup>)")}
${i("bpw","8","Bits per word (8, 16, 32)")}
${i("sl","ceil(w&times;bpp/bpw)","Words per scanline (stride)")}
${i("brev","false","Bit reverse: true = MSB is leftmost pixel")}
${i("flip","false","Flip vertically (y=0 is bottom row)")}
${i("skip","0","Skip bytes at start of each image")}
${i("pofs","sl&times;h&times;count","Offset between bitplanes")}
${i("il","0","Interleave images row by row (data stored as one wide block)")}
${i("remap","&mdash;","Bit remapping table for address lines")}
${i("reindex","&mdash;","Pixel-to-byte/bit remapping")}
${i("wpimg","sl&times;h","Words per image")}
${i("aspect","1","Pixel aspect ratio for display")}
${i("xform","&mdash;","CSS transform on canvas")}
${i("art","false","Artifact color mode: true = Apple II HGR (bit 7 toggles artifact color)")}
<tr><th colspan="3">Palette Format</th></tr>
<tr><td><b>Field</b></td><td><b>Default</b></td><td><b>Description</b></td></tr>
${i("pal","&mdash;","Palette: number (e.g. 332 = 3R,3G,2B) or name (nes, vcs, c64, ap2lores, astrocade)")}
${i("n","&mdash;","Number of palette entries")}
${i("layout","&mdash;","Palette editor layout (nes, astrocade)")}
<tr><th colspan="3">Examples</th></tr>
<tr><td colspan="2"><code>/*{w:8,h:8,bpp:1,brev:1}*/</code></td><td>8x8 1bpp, MSB first (NES-style)</td></tr>
<tr><td colspan="2"><code>;;{w:8,h:5,count:4,il:1};;</code></td><td>4 interleaved 8x5 chars (stored as 32x5 block)</td></tr>
<tr><td colspan="2"><code>;;{w:7,h:8};;</code></td><td>7x8 1bpp, LSB first (Apple II HGR)</td></tr>
<tr><td colspan="2"><code>;;{w:8,h:8,art:true};;</code></td><td>8x8 with artifact color (Apple II HGR, bit 7 toggle)</td></tr>
<tr><td colspan="2"><code>/*{w:16,h:16,bpp:4,np:1}*/</code></td><td>16x16 4bpp</td></tr>
<tr><td colspan="2"><code>/*{pal:332,n:16}*/</code></td><td>16-entry RGB332 palette</pre></td></tr>
</table>`,buttons:{ok:{label:"OK",className:"btn-primary"}},size:"large"})}function t5(){var i=$("#replayslider"),e=$("#clockslider"),t=$("#replay_frame"),r=$("#replay_clock");v.advanceFrameClock||$("#clockdiv").hide();var n=()=>{t.text(Vt.lastSeekFrame+""),r.text(Vt.lastSeekStep+"")},s=l=>{rn();var c=parseInt(i.val().toString()),h=parseInt(e.val().toString());Vt.loadFrame(c,h)>=0&&(e.attr("min",0),e.attr("max",Vt.lastStepCount),n(),PO(v.saveState()))},o=l=>{rn(),Vt.loadFrame(l)>=0&&(i.val(l),n(),PO(v.saveState()))},a=l=>{rn();var c=parseInt(i.val().toString());Vt.loadFrame(c,l)>=0&&(e.val(l),n(),PO(v.saveState()))};Vt.callbackStateChanged=()=>{i.attr("min",0),i.attr("max",Vt.numFrames()),i.val(Vt.currentFrame()),e.val(Vt.currentStep()),n(),Ha(v.saveState())},i.on("input",s),e.on("input",s),$("#replay_min").click(()=>{o(1)}),$("#replay_max").click(()=>{o(Vt.numFrames())}),$("#replay_back").click(()=>{o(parseInt(i.val().toString())-1)}),$("#replay_fwd").click(()=>{o(parseInt(i.val().toString())+1)}),$("#clock_back").click(()=>{a(parseInt(e.val().toString())-1)}),$("#clock_fwd").click(()=>{a(parseInt(e.val().toString())+1)}),$("#replay_bar").show(),tt.add("mod+shift+e","Start/Stop Replay Recording","glyphicon-record",FE).prop("id","dbg_record")}function i5(){try{var i=window.screen.orientation||window.screen.msOrientation||window.screen.mozOrientation||null;if(i){if(i.type.indexOf("landscape")!==-1)return!0;if(i.type.indexOf("portrait")!==-1)return!1}if("orientation"in window){var e=window.orientation;if(e===0||e===180)return!1;if(e===90||e===270)return!0}}catch(t){}return window.innerWidth>window.innerHeight}async function r5(){if($r.shouldCompleteTour()){await ui("lib/bootstrap-tourist.js");var i=ce.startsWith("vcs"),e=[{element:"#platformsMenuButton",placement:"right",title:"Platform Selector",content:`You're currently on the "<b>`+ce+'</b>" platform. You can choose a different one from the menu.'},{element:"#preset_select",title:"Project Selector",content:"You can choose different code examples, create your own files, or import projects from GitHub."},{element:"#workspace",title:"Code Editor",content:i?"Type your 6502 assembly code into the editor, and it'll be assembled in real-time.":"Type your source code into the editor, and it'll be compiled in real-time."},{element:"#emulator",placement:"left",title:"Emulator",content:"We'll load your compiled code into the emulator whenever you make changes."},{element:"#debug_bar",placement:"bottom",title:"Debug Tools",content:"Use these buttons to set breakpoints, single step through code, pause/resume, and use debugging tools."},{element:"#dropdownMenuButton",title:"Main Menu",content:"Click the menu to create new files, download your code, or share your work with others."},{element:"#sidebar",title:"Sidebar",content:"Pull right to expose the sidebar. It lets you switch between source files, view assembly listings, and use other tools like Disassembler, Memory Browser, and Asset Editor."}];i5()||e.unshift({element:"#controls_top",placement:"bottom",title:"Portrait mode detected",content:"This site works best on desktop browsers. For best results, rotate your device to landscape orientation."}),vo()&&(e.unshift({element:"#dropdownMenuButton",placement:"right",title:"Cookie Consent",content:'Before we start, we should tell you that this website stores cookies and other data in your browser. You can review our <a href="/privacy.html" target="_new">privacy policy</a>.'}),e.push({element:"#booksMenuButton",placement:"left",title:"Books",content:"Get some books that explain how to program all of this stuff, and write some games!"})),io&&(e.unshift({element:"#dropdownMenuButton",placement:"right",title:"Developer Analytics",content:"BTW, we send stack traces to sentry.io when exceptions are thrown. Hope that's ok."}),e.unshift({element:"#dropdownMenuButton",placement:"right",title:"Welcome to 8bitworkshop Desktop!",content:'The directory "~/8bitworkshop" contains all of your file edits and built ROM images. You can create new projects under the platform directories (e.g. "c64/myproject")'}));var t=new Tour({autoscroll:!1,steps:e,onEnd:()=>{$r.completedTour()}});setTimeout(()=>{t.start()},2500)}}function TO(i){var e=(i.message||i.error||i)+"";if(e.indexOf("QuotaExceededError")>=0)cE();else{var t=i.error||i.reason;t!=null&&t instanceof NO&&n5(t)}}function n5(i){console.log("haltEmulation"),rn(),S5(i)}function s5(){window.addEventListener("error",TO),window.addEventListener("unhandledrejection",TO)}function OP(){window.removeEventListener("error",TO),window.removeEventListener("unhandledrejection",TO)}function An(i,e){e&&(te=e),OP(),i?window.location.replace("?"+$.param(te)):window.location.href="?"+$.param(te)}function ZO(){ce&&(te.platform=ce),delete te[""],history.replaceState({},"","?"+$.param(te)+window.location.hash)}function fP(i){if(!i||i==="#")return null;var e=decodeURIComponent(i.substring(1));return e.startsWith("asseteditor/")?"#asseteditor":e.startsWithLine truncated
/*! Bundled license information:
localforage/dist/localforage.js:
(*!
localForage -- Offline Storage, Improved
Version 1.10.0
https://localforage.github.io/localForage
(c) 2013-2017 Mozilla, Apache License 2.0
*)
dompurify/dist/purify.cjs.js:
(*! @license DOMPurify 3.4.13 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.4.13/LICENSE *)
*/
//# sourceMappingURL=chunk-VOI5MHR3.js.map
+7
View File
@@ -0,0 +1,7 @@
{
"version": 3,
"sources": ["../node_modules/localforage/dist/localforage.js", "../node_modules/dompurify/src/utils.ts", "../node_modules/dompurify/src/tags.ts", "../node_modules/dompurify/src/attrs.ts", "../node_modules/dompurify/src/regexp.ts", "../node_modules/dompurify/src/purify.ts", "../src/ide/ui.ts", "../src/common/toolmeta.ts", "../src/ide/dialogs.ts", "../node_modules/@marijn/find-cluster-break/src/index.js", "../node_modules/@codemirror/state/dist/index.js", "../node_modules/style-mod/src/style-mod.js", "../node_modules/w3c-keyname/index.js", "../node_modules/crelt/index.js", "../node_modules/@codemirror/view/dist/index.js", "../node_modules/@lezer/common/dist/index.js", "../node_modules/@lezer/highlight/dist/index.js", "../node_modules/@codemirror/language/dist/index.js", "../node_modules/@codemirror/autocomplete/dist/index.js", "../src/ide/views/debug.ts", "../node_modules/@codemirror/commands/dist/index.js", "../src/ide/views/tabs.ts", "../src/ide/settings.ts", "../src/ide/storage.ts", "../src/ide/project.ts", "../src/common/workertypes.ts", "../src/ide/services.ts", "../src/common/audio/CommodoreTape.ts", "../src/ide/shareexport.ts", "../src/ide/sync.ts", "../src/ide/search/symbolindex.ts", "../src/common/symbols/index.ts", "../src/ide/search/projectsource.ts", "../src/ide/search/toolchainsource.ts", "../src/ide/search/docssource.ts", "../src/ide/search/service.ts", "../node_modules/@lezer/lr/dist/index.js", "../node_modules/@lezer/cpp/dist/index.js", "../node_modules/@codemirror/lang-cpp/dist/index.js", "../node_modules/@codemirror/search/dist/index.js", "../src/parser/tokens-6502.ts", "parser/lang-6502.grammar.js", "../src/parser/lang-6502.ts", "../src/parser/tokens-z80.ts", "parser/lang-z80.grammar.js", "../src/parser/lang-z80.ts", "../src/parser/lang-wiz.ts", "../src/parser/lang-verilog.ts", "../src/parser/lang-inform6.ts", "../src/parser/lang-dialog.ts", "../src/parser/lang-basic.ts", "../src/parser/lang-fastbasic.ts", "../src/parser/lang-bataribasic.ts", "../node_modules/@lezer/markdown/dist/index.js", "../node_modules/@lezer/html/dist/index.js", "../node_modules/@lezer/css/dist/index.js", "../node_modules/@codemirror/lang-css/dist/index.js", "../node_modules/@lezer/javascript/dist/index.js", "../node_modules/@codemirror/lang-javascript/dist/index.js", "../node_modules/@codemirror/lang-html/dist/index.js", "../node_modules/@codemirror/lang-markdown/dist/index.js", "../src/parser/registry.ts", "../src/themes/cobalt.ts", "../src/themes/disassemblyTheme.ts", "../src/themes/editorTheme.ts", "../src/themes/mbo.ts", "../src/ide/views/assetdecorations.ts", "../src/ide/views/includedecorations.ts", "../src/ide/views/baseviews.ts", "../src/ide/views/filters.ts", "../src/ide/views/gutter.ts", "../src/ide/views/visuals.ts", "../src/ide/views/editors.ts", "../src/ide/search/searchview.ts", "../src/ide/pixeleditor.ts", "../src/ide/views/asseteditor.ts", "../src/common/vtextscroller.ts", "../src/ide/views/debugviews.ts", "../src/ide/views/treeviews.ts", "../src/ide/windows.ts"],
"sourcesContent": ["/*!\n localForage -- Offline Storage, Improved\n Version 1.10.0\n https://localforage.github.io/localForage\n (c) 2013-2017 Mozilla, Apache License 2.0\n*/\n(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.localforage = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw (f.code=\"MODULE_NOT_FOUND\", f)}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){\n(function (global){\n'use strict';\nvar Mutation = global.MutationObserver || global.WebKitMutationObserver;\n\nvar scheduleDrain;\n\n{\n if (Mutation) {\n var called = 0;\n var observer = new Mutation(nextTick);\n var element = global.document.createTextNode('');\n observer.observe(element, {\n characterData: true\n });\n scheduleDrain = function () {\n element.data = (called = ++called % 2);\n };\n } else if (!global.setImmediate && typeof global.MessageChannel !== 'undefined') {\n var channel = new global.MessageChannel();\n channel.port1.onmessage = nextTick;\n scheduleDrain = function () {\n channel.port2.postMessage(0);\n };\n } else if ('document' in global && 'onreadystatechange' in global.document.createElement('script')) {\n scheduleDrain = function () {\n\n // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n var scriptEl = global.document.createElement('script');\n scriptEl.onreadystatechange = function () {\n nextTick();\n\n scriptEl.onreadystatechange = null;\n scriptEl.parentNode.removeChild(scriptEl);\n scriptEl = null;\n };\n global.document.documentElement.appendChild(scriptEl);\n };\n } else {\n scheduleDrain = function () {\n setTimeout(nextTick, 0);\n };\n }\n}\n\nvar draining;\nvar queue = [];\n//named nextTick for less confusing stack traces\nfunction nextTick() {\n draining = true;\n var i, oldQueue;\n var len = queue.length;\n while (len) {\n oldQueue = queue;\n queue = [];\n i = -1;\n while (++i < len) {\n oldQueue[i]();\n }\n len = queue.length;\n }\n draining = false;\n}\n\nmodule.exports = immediate;\nfunction immediate(task) {\n if (queue.push(task) === 1 && !draining) {\n scheduleDrain();\n }\n}\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{}],2:[function(_dereq_,module,exports){\n'use strict';\nvar immediate = _dereq_(1);\n\n/* istanbul ignore next */\nfunction INTERNAL() {}\n\nvar handlers = {};\n\nvar REJECTED = ['REJECTED'];\nvar FULFILLED = ['FULFILLED'];\nvar PENDING = ['PENDING'];\n\nmodule.exports = Promise;\n\nfunction Promise(resolver) {\n if (typeof resolver !== 'function') {\n throw new TypeError('resolver must be a function');\n }\n this.state = PENDING;\n this.queue = [];\n this.outcome = void 0;\n if (resolver !== INTERNAL) {\n safelyResolveThenable(this, resolver);\n }\n}\n\nPromise.prototype[\"catch\"] = function (onRejected) {\n return this.then(null, onRejected);\n};\nPromise.prototype.then = function (onFulfilled, onRejected) {\n if (typeof onFulfilled !== 'function' && this.state === FULFILLED ||\n typeof onRejected !== 'function' && this.state === REJECTED) {\n return this;\n }\n var promise = new this.constructor(INTERNAL);\n if (this.state !== PENDING) {\n var resolver = this.state === FULFILLED ? onFulfilled : onRejected;\n unwrap(promise, resolver, this.outcome);\n } else {\n this.queue.push(new QueueItem(promise, onFulfilled, onRejected));\n }\n\n return promise;\n};\nfunction QueueItem(promise, onFulfilled, onRejected) {\n this.promise = promise;\n if (typeof onFulfilled === 'function') {\n this.onFulfilled = onFulfilled;\n this.callFulfilled = this.otherCallFulfilled;\n }\n if (typeof onRejected === 'function') {\n this.onRejected = onRejected;\n this.callRejected = this.otherCallRejected;\n }\n}\nQueueItem.prototype.callFulfilled = function (value) {\n handlers.resolve(this.promise, value);\n};\nQueueItem.prototype.otherCallFulfilled = function (value) {\n unwrap(this.promise, this.onFulfilled, value);\n};\nQueueItem.prototype.callLine truncated
"mappings": "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 truncated
"names": ["require_localforage", "__commonJSMin", "exports", "module", "f", "g", "define", "e", "t", "n", "r", "s", "o", "u", "a", "__require", "i", "l", "_dereq_", "global", "Mutation", "scheduleDrain", "called", "observer", "nextTick", "element", "channel", "scriptEl", "draining", "queue", "oldQueue", "len", "immediate", "task", "INTERNAL", "handlers", "REJECTED", "FULFILLED", "PENDING", "Promise", "resolver", "safelyResolveThenable", "onRejected", "onFulfilled", "promise", "unwrap", "QueueItem", "value", "func", "returnValue", "self", "result", "tryCatch", "getThen", "thenable", "error", "obj", "then", "onError", "onSuccess", "tryToUnwrap", "out", "resolve", "reject", "reason", "all", "iterable", "values", "resolved", "allResolver", "resolveFromAll", "outValue", "race", "response", "_typeof", "_classCallCheck", "instance", "Constructor", "getIDB", "idb", "isIndexedDBValid", "isSafari", "hasFetch", "createBlob", "parts", "properties", "Builder", "builder", "Promise$1", "executeCallback", "callback", "executeTwoCallbacks", "errorCallback", "normalizeKey", "key", "getCallback", "DETECT_BLOB_SUPPORT_STORE", "supportsBlobs", "dbContexts", "toString", "READ_ONLY", "READ_WRITE", "_binStringToArrayBuffer", "bin", "length", "buf", "arr", "_checkBlobSupportWithoutCaching", "txn", "blob", "matchedChrome", "matchedEdge", "_checkBlobSupport", "_deferReadiness", "dbInfo", "dbContext", "deferredOperation", "_advanceReadiness", "_rejectReadiness", "err", "_getConnection", "upgradeNeeded", "createDbContext", "dbArgs", "openreq", "db", "ex", "_getOriginalConnection", "_getUpgradedConnection", "_isUpgradeNeeded", "defaultVersion", "isNewStore", "isDowngrade", "isUpgrade", "incVersion", "_encodeBlob", "reader", "base64", "_decodeBlob", "encodedBlob", "arrayBuff", "_isEncodedBlob", "_fullyReady", "_tryReconnect", "forages", "forage", "createTransaction", "mode", "retries", "tx", "_initStorage", "options", "initPromises", "ignoreErrors", "j", "k", "getItem", "transaction", "store", "req", "iterate", "iterator", "iterationNumber", "cursor", "setItem", "blobSupport", "removeItem", "clear", "advanced", "keys", "dropInstance", "currentConfig", "isCurrentDb", "dbPromise", "newVersion", "dropObjectPromise", "_forage2", "dropDBPromise", "_forage", "asyncStorage", "isWebSQLValid", "BASE_CHARS", "BLOB_TYPE_PREFIX", "BLOB_TYPE_PREFIX_REGEX", "SERIALIZED_MARKER", "SERIALIZED_MARKER_LENGTH", "TYPE_ARRAYBUFFER", "TYPE_BLOB", "TYPE_INT8ARRAY", "TYPE_UINT8ARRAY", "TYPE_UINT8CLAMPEDARRAY", "TYPE_INT16ARRAY", "TYPE_INT32ARRAY", "TYPE_UINT16ARRAY", "TYPE_UINT32ARRAY", "TYPE_FLOAT32ARRAY", "TYPE_FLOAT64ARRAY", "TYPE_SERIALIZED_MARKER_LENGTH", "toString$1", "stringToBuffer", "serializedString", "bufferLength", "p", "encoded1", "encoded2", "encoded3", "encoded4", "buffer", "bytes", "bufferToString", "base64String", "serialize", "valueType", "marker", "fileReader", "str", "deserialize", "type", "blobType", "matcher", "localforageSerializer", "createDbTable", "_initStorage$1", "dbInfoPromise", "tryExecuteSql", "sqlStatement", "args", "results", "getItem$1", "iterate$1", "rows", "item", "_setItem", "retriesLeft", "originalValue", "sqlError", "setItem$1", "removeItem$1", "clear$1", "length$1", "key$1", "keys$1", "getAllStoreNames", "storeNames", "dropInstance$1", "operationInfo", "dropTable", "storeName", "operations", "webSQLStorage", "isLocalStorageValid", "_getKeyPrefix", "defaultConfig", "keyPrefix", "checkIfLocalStorageThrows", "localStorageTestKey", "_isLocalStorageUsable", "_initStorage$2", "clear$2", "getItem$2", "iterate$2", "keyPrefixLength", "key$2", "keys$2", "itemKey", "length$2", "removeItem$2", "setItem$2", "dropInstance$2", "localStorageWrapper", "sameValue", "x", "y", "includes", "array", "searchElement", "isArray", "arg", "DefinedDrivers", "DriverSupport", "DefaultDrivers", "DefaultDriverOrder", "OptionalDriverMethods", "LibraryMethods", "DefaultConfig", "callWhenReady", "localForageInstance", "libraryMethod", "_args", "extend", "_key", "LocalForage", "driverTypeKey", "driver", "driverName", "driverObject", "complianceError", "driverMethods", "driverMethodName", "isRequired", "configureMissingMethods", "methodNotImplementedFactory", "methodName", "_i", "_len", "optionalDriverMethod", "setDriverSupport", "support", "getDriverPromise", "serializerPromise", "drivers", "supportedDrivers", "setDriverToConfig", "extendSelfWithDriver", "initDriver", "currentDriverIndex", "driverPromiseLoop", "oldDriverSetDone", "libraryMethodsAndProperties", "localforage_js", "entries", "Object", "setPrototypeOf", "isFrozen", "getPrototypeOf", "getOwnPropertyDescriptor", "freeze", "seal", "create", "_ref", "Reflect", "apply", "construct", "x", "func", "thisArg", "_len", "arguments", "length", "args", "Array", "_key", "Func", "_len2", "_key2", "arrayForEach", "unapply", "prototype", "forEach", "arrayLastIndexOf", "lastIndexOf", "arrayPop", "pop", "arrayPush", "push", "arraySplice", "splice", "arrayIsArray", "isArray", "stringToLowerCase", "String", "toLoLine truncated
}
@@ -1,2 +1,2 @@
import{a as x}from"./chunk-3FIVEUG2.js";import{t as y}from"./chunk-JFRBOCZW.js";import"./chunk-7GWCUXYG.js";import"./chunk-LNOKARBD.js";import"./chunk-A7SWO6EA.js";import"./chunk-4RN5ADZB.js";import{J as m,m as c,p}from"./chunk-CZ7OSHSE.js";import{C as d,K as f,aa as a,n as h}from"./chunk-TYDI7JZQ.js";import"./chunk-KT7KMEQC.js";var n=31,s=class extends p{constructor(){super();this.cpuFrequency=1e6;this.defaultROMSize=32768;this.cpu=new c;this.ram=new Uint8Array(16384);this.read=a([[0,16383,16383,e=>this.ram[e]],[16384,16384,65535,e=>this.serial.byteAvailable()?128:0],[16385,16385,65535,e=>this.serial.recvByte()],[16386,16386,65535,e=>this.serial.clearToSend()?128:0],[32768,65535,32767,e=>this.rom&&this.rom[e]]]);this.write=a([[0,16383,16383,(e,r)=>{this.ram[e]=r}],[16387,16387,65535,(e,r)=>this.serial.sendByte(r)],[16399,16399,65535,(e,r)=>{this.inputs[n]=1}]]);this.connectCPUMemoryBus(this)}connectSerialIO(e){this.serial=e}readConst(e){return this.read(e)}advanceFrame(e){for(var r=0;r<this.cpuFrequency/60&&!(e&&e());)r+=this.advanceCPU();return r}advanceCPU(){if(this.isHalted())return 1;var e=super.advanceCPU();return this.serial&&this.serial.advance(e),e}reset(){this.inputs[n]=0,super.reset(),this.serial&&this.serial.reset()}isHalted(){return this.inputs[n]!=0}};var S=[{id:"hello.dasm",name:"Hello World (ASM)"}],l=class{constructor(t){t.style.overflowY="auto";var e=$('<div id="gameport"/>').appendTo(t);$('<p class="transcript-header">Serial Output</p>').appendTo(e);var r=$('<div id="windowport" class="transcript"/>').appendTo(e);this.div=r[0]}start(){this.tty=new x(this.div,!1)}reset(){this.tty.clear()}saveState(){return this.tty.saveState()}loadState(t){this.tty.loadState(t)}};function v(i){return i==10?"":i<32?String.fromCharCode(i+9216):String.fromCharCode(i)}var u=class{constructor(){this.bufferedRead=!0;this.cyclesPerByte=1e6/(57600/8);this.maxOutputBytes=4096}clearToSend(){return this.outputBytes.length<this.maxOutputBytes}sendByte(t){this.clearToSend()&&(this.outputBytes.push(t),this.viewer.tty.addtext(v(t),34),t==10&&this.viewer.tty.newline(),this.clearToSend()||(this.viewer.tty.newline(),this.viewer.tty.addtext("\u26A0\uFE0F OUTPUT BUFFER FULL \u26A0\uFE0F",4)))}byteAvailable(){return this.readIndex()>this.inputIndex}recvByte(){var t=this.readIndex();this.inputIndex=t;var e=(this.inputBytes&&this.inputBytes[t])|0;return this.viewer.tty.addtext(v(e),18),e==10&&this.viewer.tty.newline(),e}readIndex(){return this.bufferedRead?this.inputIndex+1:Math.floor(this.clk/this.cyclesPerByte)}reset(){this.inputIndex=-1,this.clk=0,this.outputBytes=[],this.bufin=""}advance(t){this.clk+=t}saveState(){return{clk:this.clk,idx:this.inputIndex,out:this.outputBytes.slice()}}loadState(t){this.clk=t.clk,this.inputIndex=t.idx,this.outputBytes=t.out.slice()}},o=class extends m{constructor(e){super(e);this.getMemoryMap=function(){return{main:[{name:"RAM",start:0,size:16384,type:"ram"},{name:"ROM",start:32768,size:32768,type:"rom"}]}};this.serview=new l(e)}async start(){super.start(),this.serial=new u,this.serial.viewer=this.serview,this.serview.start(),this.machine.connectSerialIO(this.serial)}reset(){this.serial.inputBytes=d(this.internalFiles["serialin.dat"]),super.reset(),this.serview.reset()}isBlocked(){return this.machine.isHalted()}advance(e){return this.isBlocked()?(this.internalFiles["serialout.dat"]=h(this.serial.outputBytes),y(),0):super.advance(e)}saveState(){var e=super.saveState();return e.serial=this.serial.saveState(),e.serview=this.serview.saveState(),e}loadState(e){super.loadState(e),this.serial.loadState(e.serial),this.serview.loadState(e.serview)}newMachine(){return new s}getPresets(){return S}readAddress(e){return this.machine.readConst(e)}};f["devel-6502"]=o;export{u as SerialTestHarness};
//# sourceMappingURL=devel-TBMSR4BW.js.map
import{a as x}from"./chunk-3FIVEUG2.js";import{t as y}from"./chunk-VOI5MHR3.js";import"./chunk-6UQAGDOD.js";import"./chunk-LNOKARBD.js";import"./chunk-A7SWO6EA.js";import"./chunk-F6NBEMS2.js";import{J as m,m as c,p}from"./chunk-CZ7OSHSE.js";import{C as d,K as f,aa as a,n as h}from"./chunk-TYDI7JZQ.js";import"./chunk-KT7KMEQC.js";var n=31,s=class extends p{constructor(){super();this.cpuFrequency=1e6;this.defaultROMSize=32768;this.cpu=new c;this.ram=new Uint8Array(16384);this.read=a([[0,16383,16383,e=>this.ram[e]],[16384,16384,65535,e=>this.serial.byteAvailable()?128:0],[16385,16385,65535,e=>this.serial.recvByte()],[16386,16386,65535,e=>this.serial.clearToSend()?128:0],[32768,65535,32767,e=>this.rom&&this.rom[e]]]);this.write=a([[0,16383,16383,(e,r)=>{this.ram[e]=r}],[16387,16387,65535,(e,r)=>this.serial.sendByte(r)],[16399,16399,65535,(e,r)=>{this.inputs[n]=1}]]);this.connectCPUMemoryBus(this)}connectSerialIO(e){this.serial=e}readConst(e){return this.read(e)}advanceFrame(e){for(var r=0;r<this.cpuFrequency/60&&!(e&&e());)r+=this.advanceCPU();return r}advanceCPU(){if(this.isHalted())return 1;var e=super.advanceCPU();return this.serial&&this.serial.advance(e),e}reset(){this.inputs[n]=0,super.reset(),this.serial&&this.serial.reset()}isHalted(){return this.inputs[n]!=0}};var S=[{id:"hello.dasm",name:"Hello World (ASM)"}],l=class{constructor(t){t.style.overflowY="auto";var e=$('<div id="gameport"/>').appendTo(t);$('<p class="transcript-header">Serial Output</p>').appendTo(e);var r=$('<div id="windowport" class="transcript"/>').appendTo(e);this.div=r[0]}start(){this.tty=new x(this.div,!1)}reset(){this.tty.clear()}saveState(){return this.tty.saveState()}loadState(t){this.tty.loadState(t)}};function v(i){return i==10?"":i<32?String.fromCharCode(i+9216):String.fromCharCode(i)}var u=class{constructor(){this.bufferedRead=!0;this.cyclesPerByte=1e6/(57600/8);this.maxOutputBytes=4096}clearToSend(){return this.outputBytes.length<this.maxOutputBytes}sendByte(t){this.clearToSend()&&(this.outputBytes.push(t),this.viewer.tty.addtext(v(t),34),t==10&&this.viewer.tty.newline(),this.clearToSend()||(this.viewer.tty.newline(),this.viewer.tty.addtext("\u26A0\uFE0F OUTPUT BUFFER FULL \u26A0\uFE0F",4)))}byteAvailable(){return this.readIndex()>this.inputIndex}recvByte(){var t=this.readIndex();this.inputIndex=t;var e=(this.inputBytes&&this.inputBytes[t])|0;return this.viewer.tty.addtext(v(e),18),e==10&&this.viewer.tty.newline(),e}readIndex(){return this.bufferedRead?this.inputIndex+1:Math.floor(this.clk/this.cyclesPerByte)}reset(){this.inputIndex=-1,this.clk=0,this.outputBytes=[],this.bufin=""}advance(t){this.clk+=t}saveState(){return{clk:this.clk,idx:this.inputIndex,out:this.outputBytes.slice()}}loadState(t){this.clk=t.clk,this.inputIndex=t.idx,this.outputBytes=t.out.slice()}},o=class extends m{constructor(e){super(e);this.getMemoryMap=function(){return{main:[{name:"RAM",start:0,size:16384,type:"ram"},{name:"ROM",start:32768,size:32768,type:"rom"}]}};this.serview=new l(e)}async start(){super.start(),this.serial=new u,this.serial.viewer=this.serview,this.serview.start(),this.machine.connectSerialIO(this.serial)}reset(){this.serial.inputBytes=d(this.internalFiles["serialin.dat"]),super.reset(),this.serview.reset()}isBlocked(){return this.machine.isHalted()}advance(e){return this.isBlocked()?(this.internalFiles["serialout.dat"]=h(this.serial.outputBytes),y(),0):super.advance(e)}saveState(){var e=super.saveState();return e.serial=this.serial.saveState(),e.serview=this.serview.saveState(),e}loadState(e){super.loadState(e),this.serial.loadState(e.serial),this.serview.loadState(e.serview)}newMachine(){return new s}getPresets(){return S}readAddress(e){return this.machine.readConst(e)}};f["devel-6502"]=o;export{u as SerialTestHarness};
//# sourceMappingURL=devel-3P3HQ7JL.js.map
File renamed without changes.
+1 -1
View File
@@ -1,2 +1,2 @@
import{b as v,c as P}from"./chunk-4RN5ADZB.js";import{A as p,E as w,K as c,l as u,m,y as g}from"./chunk-TYDI7JZQ.js";import{e as I}from"./chunk-KT7KMEQC.js";var k=I(P()),i,a,l,h=(function(e){if(!e||e.length==0)return{};for(var r={},t=0;t<e.length;++t){var o=e[t].split("=",2);o.length==1?r[o[0]]="":r[o[0]]=decodeURIComponent(o[1].replace(/\+/g," "))}return r})(window.location.search.substr(1).split("&"));function x(){typeof window.onerror=="object"&&(window.onerror=function(e,r,t,o,n){var s=e+" "+r+" "+t+":"+o+", "+n;$.get("/error?msg="+encodeURIComponent(s),"text")})}function M(){var e=!1;document.addEventListener("visibilitychange",function(r){document.visibilityState=="hidden"&&a.isRunning()?(a.pause(),e=!0):document.visibilityState=="visible"&&e&&(a.resume(),e=!1)}),$(window).on("focus",function(){e&&(a.resume(),e=!1)}),$(window).on("blur",function(){a.isRunning()&&(a.pause(),e=!0)})}async function y(e,r){if(!r){alert("No ROM found.");return}console.log(r.length+" bytes"),await a.loadROM(e,r),a.resume()}function R(){return $("#emulator").find("canvas")}function E(e,r,t){w("gif.js/dist/gif.js").then(()=>{var o=R()[0];if(!o){alert("Could not find canvas element to record video!");return}var n=0;o.style&&o.style.transform&&(o.style.transform.indexOf("rotate(-90deg)")>=0?n=-1:o.style.transform.indexOf("rotate(90deg)")>=0&&(n=1));var s=new GIF({workerScript:"gif.js/dist/gif.worker.js",workers:4,quality:10,rotate:n});s.on("finished",function(C){console.log("finished encoding GIF"),t(C)}),e=e||100+(Math.random()*256&3),r=r||100+(Math.random()*256&15);var f=0;console.log("Recording video",o);var d=()=>{f++>r?(console.log("Rendering video"),s.render()):(s.addFrame(o,{delay:e,copy:!0}),setTimeout(d,e))};d()})}async function S(e){if(!c[i])throw Error("Invalid platform '"+i+"'.");a=new c[i]($("#emuscreen")[0]),await a.start(),e.rec&&R().on("focus",()=>{a.resume()});var r=e.n||"Game",t,o=e.url,n=e.r;if(o)return console.log(o),g(o,f=>{y(r,f)},"arraybuffer"),!0;if(n){var s=m(atob(n));t=new u().decode(s)}return M(),y(r,t),!0}async function b(e){if(e.data&&(e=e.data),i=e.p,!i)throw new Error("No platform variable!");try{var r=await v(p(i));console.log("starting platform",i),await S(e)}catch(t){console.log(t),alert('Platform "'+i+'" not supported.')}}function F(){x(),h.p&&b(h)}window.addEventListener("message",O,!1);function O(e){if(e.data){var r=e.data.cmd;if(r=="start"&&!a)b(e);else if(r=="reset")a.reset(),l.reset();else if(r=="getReplay"){var t={frameCount:l.frameCount,checkpoints:l.checkpoints,framerecs:l.framerecs,checkpointInterval:l.checkpointInterval,maxCheckpoints:l.maxCheckpoints};e.source.postMessage({ack:r,replay:t},e.origin)}else if(r=="watchState"){var o=new Function("platform","state",e.data.fn);l.callbackNewCheckpoint=n=>{e.source.postMessage({ack:r,state:o(a,n)},e.origin)}}else r=="recordVideo"?E(e.data.intervalMsec,e.data.maxFrames,function(n){e.data.filename&&(0,k.saveAs)(n,e.data.filename),e.source.postMessage({ack:r,gif:n},e.origin)}):console.log("Unknown data.cmd: "+r)}}self===top&&(document.body.style.backgroundColor="#555");F();export{a as platform,i as platform_id,F as startEmbed,l as stateRecorder};
import{b as v,c as P}from"./chunk-F6NBEMS2.js";import{A as p,E as w,K as c,l as u,m,y as g}from"./chunk-TYDI7JZQ.js";import{e as I}from"./chunk-KT7KMEQC.js";var k=I(P()),i,a,l,h=(function(e){if(!e||e.length==0)return{};for(var r={},t=0;t<e.length;++t){var o=e[t].split("=",2);o.length==1?r[o[0]]="":r[o[0]]=decodeURIComponent(o[1].replace(/\+/g," "))}return r})(window.location.search.substr(1).split("&"));function x(){typeof window.onerror=="object"&&(window.onerror=function(e,r,t,o,n){var s=e+" "+r+" "+t+":"+o+", "+n;$.get("/error?msg="+encodeURIComponent(s),"text")})}function M(){var e=!1;document.addEventListener("visibilitychange",function(r){document.visibilityState=="hidden"&&a.isRunning()?(a.pause(),e=!0):document.visibilityState=="visible"&&e&&(a.resume(),e=!1)}),$(window).on("focus",function(){e&&(a.resume(),e=!1)}),$(window).on("blur",function(){a.isRunning()&&(a.pause(),e=!0)})}async function y(e,r){if(!r){alert("No ROM found.");return}console.log(r.length+" bytes"),await a.loadROM(e,r),a.resume()}function R(){return $("#emulator").find("canvas")}function E(e,r,t){w("gif.js/dist/gif.js").then(()=>{var o=R()[0];if(!o){alert("Could not find canvas element to record video!");return}var n=0;o.style&&o.style.transform&&(o.style.transform.indexOf("rotate(-90deg)")>=0?n=-1:o.style.transform.indexOf("rotate(90deg)")>=0&&(n=1));var s=new GIF({workerScript:"gif.js/dist/gif.worker.js",workers:4,quality:10,rotate:n});s.on("finished",function(C){console.log("finished encoding GIF"),t(C)}),e=e||100+(Math.random()*256&3),r=r||100+(Math.random()*256&15);var f=0;console.log("Recording video",o);var d=()=>{f++>r?(console.log("Rendering video"),s.render()):(s.addFrame(o,{delay:e,copy:!0}),setTimeout(d,e))};d()})}async function S(e){if(!c[i])throw Error("Invalid platform '"+i+"'.");a=new c[i]($("#emuscreen")[0]),await a.start(),e.rec&&R().on("focus",()=>{a.resume()});var r=e.n||"Game",t,o=e.url,n=e.r;if(o)return console.log(o),g(o,f=>{y(r,f)},"arraybuffer"),!0;if(n){var s=m(atob(n));t=new u().decode(s)}return M(),y(r,t),!0}async function b(e){if(e.data&&(e=e.data),i=e.p,!i)throw new Error("No platform variable!");try{var r=await v(p(i));console.log("starting platform",i),await S(e)}catch(t){console.log(t),alert('Platform "'+i+'" not supported.')}}function F(){x(),h.p&&b(h)}window.addEventListener("message",O,!1);function O(e){if(e.data){var r=e.data.cmd;if(r=="start"&&!a)b(e);else if(r=="reset")a.reset(),l.reset();else if(r=="getReplay"){var t={frameCount:l.frameCount,checkpoints:l.checkpoints,framerecs:l.framerecs,checkpointInterval:l.checkpointInterval,maxCheckpoints:l.maxCheckpoints};e.source.postMessage({ack:r,replay:t},e.origin)}else if(r=="watchState"){var o=new Function("platform","state",e.data.fn);l.callbackNewCheckpoint=n=>{e.source.postMessage({ack:r,state:o(a,n)},e.origin)}}else r=="recordVideo"?E(e.data.intervalMsec,e.data.maxFrames,function(n){e.data.filename&&(0,k.saveAs)(n,e.data.filename),e.source.postMessage({ack:r,gif:n},e.origin)}):console.log("Unknown data.cmd: "+r)}}self===top&&(document.body.style.backgroundColor="#555");F();export{a as platform,i as platform_id,F as startEmbed,l as stateRecorder};
//# sourceMappingURL=embedui.js.map
+158
View File
@@ -0,0 +1,158 @@
"use strict";
// MINIMAL KEYBOARD SHORTCUT MATCHER
//
// Follows the rules from "All JavaScript keyboard shortcut libraries are
// broken" (Hazel Duvall, 2025-01-10):
// - match on KeyboardEvent.key (layout-aware), never code/keyCode/which
// (mousetrap and most libraries use which -> wrong keys on Dvorak etc.)
// - only roman letters (A-Z), digits, and named navigation keys
// - normalize case, so Shift never changes what is matched
// - Shift is only allowed with letters (Shift mutates digits/punctuation)
// - never use Alt (macOS Option mutates letters, e.g. Alt+R = '®';
// AltGr = Ctrl+Alt on international PC layouts)
// - 'mod' = Cmd on macOS, Ctrl on Windows/Linux
Object.defineProperty(exports, "__esModule", { value: true });
exports.IDE_RESERVED_KEYS = exports.KeyBinder = void 0;
exports.isMacOS = isMacOS;
exports.parseKeyBinding = parseKeyBinding;
exports.matchesKeyBinding = matchesKeyBinding;
exports.normalizeCMKeySpec = normalizeCMKeySpec;
exports.effectiveCMKeySpec = effectiveCMKeySpec;
exports.stripCMKeymap = stripCMKeymap;
const NAMED_KEYS = {
left: 'arrowleft', right: 'arrowright', up: 'arrowup', down: 'arrowdown',
};
var _isMac = null;
function isMacOS() {
if (_isMac === null) {
var nav = typeof navigator !== 'undefined' ? navigator : null;
_isMac = !!nav && /mac|iphone|ipad|ipod/i.test(nav.platform || nav.userAgent || '');
}
return _isMac;
}
function parseKeyBinding(spec) {
var parts = spec.toLowerCase().split('+');
var key = parts.pop();
var b = { mod: false, shift: false, key: '' };
for (var p of parts) {
if (p == 'mod' || p == 'ctrl' || p == 'meta' || p == 'cmd')
b.mod = true;
else if (p == 'shift')
b.shift = true;
else {
console.warn('Keyboard shortcut "' + spec + '": unsupported modifier "' + p + '" (alt is layout-dependent), skipping');
return null;
}
}
key = NAMED_KEYS[key] || key;
var isLetter = /^[a-z]$/.test(key);
if (!isLetter && !/^[0-9]$/.test(key) && !/^arrow/.test(key)) {
console.warn('Keyboard shortcut "' + spec + '": key "' + key + '" is layout-dependent (use a-z, 0-9), skipping');
return null;
}
if (b.shift && !isLetter && !/^arrow/.test(key)) {
console.warn('Keyboard shortcut "' + spec + '": shift is only allowed with letters and arrows, skipping');
return null;
}
b.key = key;
return b;
}
function matchesKeyBinding(b, e) {
if (e.altKey)
return false; // we never bind alt; avoids AltGr ghosts while typing
var mac = isMacOS();
var modPressed = mac ? e.metaKey : e.ctrlKey;
var otherPressed = mac ? e.ctrlKey : e.metaKey;
if (b.mod !== modPressed || otherPressed)
return false;
if (b.shift !== e.shiftKey)
return false;
return (e.key || '').toLowerCase() === b.key;
}
class KeyBinder {
constructor() {
this.bindings = [];
this.handler = (e) => {
// defer to any handler that already claimed this event (CodeMirror
// keymaps, browser UI, ...) -- they call preventDefault when handled
if (e.defaultPrevented)
return;
for (var i = 0; i < this.bindings.length; i++) {
var bind = this.bindings[i];
if (matchesKeyBinding(bind.binding, e)) {
e.preventDefault();
e.stopPropagation();
bind.fn(e);
return;
}
}
};
}
bind(spec, fn) {
var b = parseKeyBinding(spec);
if (b)
this.bindings.push({ binding: b, fn });
}
unbindAll() {
this.bindings = [];
}
attach() {
window.addEventListener('keydown', this.handler);
}
detach() {
window.removeEventListener('keydown', this.handler);
}
}
exports.KeyBinder = KeyBinder;
const CM_MODIFIERS = {
mod: 'Mod', cmd: 'Mod', meta: 'Mod', ctrl: 'Ctrl', control: 'Ctrl',
shift: 'Shift', alt: 'Alt', option: 'Alt',
};
var _isWin = null;
function isWindows() {
if (_isWin === null) {
var nav = typeof navigator !== 'undefined' ? navigator : null;
_isWin = !!nav && /win/i.test(nav.platform || nav.userAgent || '');
}
return _isWin;
}
// "Shift-Mod-k" and "Mod-Shift-K" both become "Mod-Shift-k"
function normalizeCMKeySpec(spec) {
var parts = spec.split('-');
var key = parts.pop();
if (key === '')
key = '-'; // trailing dash means the key itself is '-'
var mods = [];
for (var p of parts) {
if (p === '')
continue; // "Mod--" splits to ['Mod', '', '']
var m = CM_MODIFIERS[p.toLowerCase()] || p;
if (m == 'Ctrl' && !isMacOS())
m = 'Mod'; // off macOS, Ctrl *is* Mod
if (mods.indexOf(m) < 0)
mods.push(m);
}
mods.sort();
return mods.concat([key.toLowerCase()]).join('-');
}
// the spec CodeMirror will actually use on this platform
function effectiveCMKeySpec(b) {
var platform = isMacOS() ? b.mac : (isWindows() ? b.win : b.linux);
return platform || b.key;
}
// every mod+shift+<letter> the IDE binds -- see the shortcuts in ui.ts, which
// testkeys.ts checks this list against
exports.IDE_RESERVED_KEYS = [
'Mod-Shift-a', 'Mod-Shift-d', 'Mod-Shift-e', 'Mod-Shift-f', 'Mod-Shift-g',
'Mod-Shift-h', 'Mod-Shift-i', 'Mod-Shift-j', 'Mod-Shift-k', 'Mod-Shift-l',
'Mod-Shift-r', 'Mod-Shift-x', 'Mod-Shift-y',
];
// drop the bindings that would swallow one of the IDE's own shortcuts
function stripCMKeymap(keymap, specs) {
var freed = specs.map(normalizeCMKeySpec);
return keymap.filter(function (b) {
var spec = effectiveCMKeySpec(b);
return !spec || freed.indexOf(normalizeCMKeySpec(spec)) < 0;
});
}
//# sourceMappingURL=keys.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"keys.js","sourceRoot":"","sources":["../../src/ide/keys.ts"],"names":[],"mappings":"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 truncated
+1 -1
View File
@@ -1373,7 +1373,7 @@ class PixEditor extends Viewer {
return span;
}
createToolbarButtons(parent) {
var toolbar = new toolbar_1.Toolbar(parent, null);
var toolbar = new toolbar_1.Toolbar(parent, parent); // scope key bindings to the pixel editor
toolbar.add('ctrl+shift+h', 'Flip X', 'glyphicon-resize-horizontal', this.flipX.bind(this));
toolbar.add('ctrl+shift+v', 'Flip Y', 'glyphicon-resize-vertical', this.flipY.bind(this));
toolbar.add('ctrl+shift+9', 'Rotate', 'glyphicon-repeat', this.rotate90.bind(this));
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"pixeleditor.js","sourceRoot":"","sources":["../../src/ide/pixeleditor.ts"],"names":[],"mappings":"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 truncated
{"version":3,"file":"pixeleditor.js","sourceRoot":"","sources":["../../src/ide/pixeleditor.ts"],"names":[],"mappings":"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 truncated
+6 -2
View File
@@ -13,6 +13,7 @@ const language_1 = require("@codemirror/language");
const state_1 = require("@codemirror/state");
const view_1 = require("@codemirror/view");
const util_1 = require("../common/util");
const shortcutbar_1 = require("./shortcutbar");
const debug_1 = require("./views/debug");
const tabs_1 = require("./views/tabs");
exports.highlightSpecialCharsCompartment = new state_1.Compartment();
@@ -33,6 +34,7 @@ const defaultSettings = {
closeBrackets: false,
debugHighlightTags: false,
showLineNumbers: false,
showStatusBar: true,
};
function loadSettings() {
try {
@@ -81,7 +83,6 @@ function openSettings() {
onEscape: true,
title: "Settings",
message: `<form id="settingsForm" onsubmit="return false">
<h5>Editor preferences</h5>
<div class="form-group"><label>Tab size: <input type="number" id="setting_tabSize" min="1" max="40" value="${settings.tabSize}" style="width:4em"></label></div>
<div class="checkbox"><label><input type="checkbox" id="setting_tabsToSpaces" ${settings.tabsToSpaces ? 'checked' : ''}> Insert spaces when pressing TAB</label></div>
<div class="checkbox"><label><input type="checkbox" id="setting_highlightSpecialChars" ${settings.highlightSpecialChars ? 'checked' : ''}> Highlight special characters</label></div>
@@ -89,9 +90,10 @@ function openSettings() {
<div class="checkbox"><label><input type="checkbox" id="setting_highlightTrailingWhitespace" ${settings.highlightTrailingWhitespace ? 'checked' : ''}> Highlight unwanted trailing whitespace</label></div>
<div class="checkbox"><label><input type="checkbox" id="setting_showLineNumbers" ${settings.showLineNumbers ? 'checked' : ''}> Show line numbers</label></div>
<div class="checkbox"><label><input type="checkbox" id="setting_closeBrackets" ${settings.closeBrackets ? 'checked' : ''}> Automatically add and remove closing brackets</label></div>
<div class="checkbox"><label><input type="checkbox" id="setting_showStatusBar" ${settings.showStatusBar ? 'checked' : ''}> Show keyboard shortcuts / status bar</label></div>
${showInternal ? `
<hr>
<h5>8bitworkshop IDE internal settings</h5>
<h5>Internal</h5>
<div class="checkbox"><label><input type="checkbox" id="setting_debugHighlightTags" ${settings.debugHighlightTags ? 'checked' : ''}> Debug editor syntax highlighting tags</label></div>
` : ''}
</form>`,
@@ -113,8 +115,10 @@ function openSettings() {
settings.showLineNumbers = $('#setting_showLineNumbers').is(':checked');
if (showInternal)
settings.debugHighlightTags = $('#setting_debugHighlightTags').is(':checked');
settings.showStatusBar = $('#setting_showStatusBar').is(':checked');
saveSettings(settings);
applySettingsToAll(settings);
(0, shortcutbar_1.setBarVisible)(settings.showStatusBar);
}
}
}
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/ide/settings.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/ide/settings.ts"],"names":[],"mappings":"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"}
+164
View File
@@ -0,0 +1,164 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.shortcutBar = exports.ShortcutBar = void 0;
exports.formatKey = formatKey;
exports.initShortcutBar = initShortcutBar;
exports.setGlobalShortcutsFn = setGlobalShortcutsFn;
exports.setViewShortcutsFn = setViewShortcutsFn;
exports.setBarStatus = setBarStatus;
exports.setBarVisible = setBarVisible;
exports.refreshShortcutBar = refreshShortcutBar;
exports.registerElementShortcuts = registerElementShortcuts;
exports.unregisterElementShortcuts = unregisterElementShortcuts;
const $ = require("jquery");
const keys_1 = require("./keys");
// display a mousetrap-style key spec for the current platform:
// mac: 'mod+shift+r' -> '⇧⌘R', 'ctrl+alt+r' -> '⌃⌥R'
// win/linux: 'mod+shift+r' -> 'Ctrl+Shift+R'
// unknown parts (e.g. punctuation keys) pass through unchanged
const MAC_SYMBOLS = { shift: '⇧', ctrl: '⌃', alt: '⌥', meta: '⌘', mod: '⌘', cmd: '⌘' };
const PC_NAMES = { shift: 'Shift', ctrl: 'Ctrl', alt: 'Alt', meta: 'Win', mod: 'Ctrl', cmd: 'Cmd' };
const KEY_SYMBOLS = { arrowleft: '←', arrowright: '→', arrowup: '↑', arrowdown: '↓', backspace: '⌫', enter: '↩', tab: '⇥', escape: '⎋', space: '␣' };
function formatKey(key) {
var parts = key.toLowerCase().split('+');
var main = parts.pop();
var isMac = (0, keys_1.isMacOS)();
// canonical display order: shift first on mac (HIG), ctrl first on PC
var order = isMac ? ['shift', 'ctrl', 'alt', 'meta', 'mod', 'cmd'] : ['mod', 'ctrl', 'shift', 'alt', 'meta', 'cmd'];
var uniq = order.filter((p) => parts.indexOf(p) >= 0);
for (var p of parts)
if (uniq.indexOf(p) < 0)
uniq.push(p);
var modStr = uniq.map((p) => isMac ? (MAC_SYMBOLS[p] || p) : (PC_NAMES[p] || p)).join(isMac ? '' : '+');
var mainDisp = /^[a-z]$/.test(main) ? main.toUpperCase() : (KEY_SYMBOLS[main] || (isMac ? main : main.charAt(0).toUpperCase() + main.slice(1)));
return (modStr ? modStr + (isMac ? '' : '+') : '') + mainDisp;
}
class ShortcutBar {
constructor(div) {
this.shortcutsSig = "";
this.status = {};
this.visible = true;
this.div = div;
this.shortcutsZone = $(document.createElement("span")).addClass("shortcuts_zone");
this.statusZone = $(document.createElement("span")).addClass("status_zone");
$(div).append(this.shortcutsZone).append(this.statusZone);
}
setShortcuts(shortcuts) {
if (!this.visible)
return;
// skip re-render if nothing changed
var sig = shortcuts.map((s) => s.key + "\u0001" + s.label).join("\u0002");
if (sig === this.shortcutsSig)
return;
this.shortcutsSig = sig;
this.shortcutsZone.empty();
for (var s of shortcuts) {
var span = $(document.createElement("span")).addClass("shortcut");
span.append($(document.createElement("kbd")).text(formatKey(s.key)));
span.append(document.createTextNode(" " + s.label));
if (s.fn) {
makeClickable(span, s.fn);
}
this.shortcutsZone.append(span);
}
}
setStatus(id, item) {
if (item)
this.status[id] = item;
else
delete this.status[id];
this.renderStatus();
}
renderStatus() {
if (!this.visible)
return;
this.statusZone.empty();
for (var key of Object.keys(this.status)) {
var s = this.status[key];
var span = $(document.createElement("span")).addClass("status_item");
if (s.cls)
span.addClass(s.cls);
if (s.title)
span.prop("title", s.title);
span.text(s.text);
if (s.fn) {
makeClickable(span, s.fn);
}
this.statusZone.append(span);
}
}
}
exports.ShortcutBar = ShortcutBar;
function makeClickable(span, fn) {
// don't steal focus on mousedown: clicking a chip would blur the active
// view and re-render the bar (removing the chip) before the click lands
span.addClass("clickable");
span.mousedown((e) => e.preventDefault());
span.click(fn);
}
// module-level singleton + provider wiring
// (avoids circular imports between ui.ts / windows.ts / views)
exports.shortcutBar = null;
function initShortcutBar(div) {
exports.shortcutBar = new ShortcutBar(div);
}
var globalShortcutsFn = () => [];
var viewShortcutsFn = () => [];
// global/debug shortcuts are composed by ui.ts (knows debug state)
function setGlobalShortcutsFn(fn) { globalShortcutsFn = fn; }
// view-specific shortcuts come from the active ProjectView's getShortcuts()
function setViewShortcutsFn(fn) { viewShortcutsFn = fn; }
// status items are updated directly by the subsystem that owns them
function setBarStatus(id, item) {
if (exports.shortcutBar)
exports.shortcutBar.setStatus(id, item);
}
// show/hide the whole bar (driven by the IDE setting); also collapses
// the bottom spacing via the body class (see css/ui.css)
function setBarVisible(visible) {
$(document.body).toggleClass("statusbar-hidden", !visible);
if (exports.shortcutBar) {
exports.shortcutBar.visible = visible;
if (visible) {
exports.shortcutBar.shortcutsSig = ""; // force re-render on next refresh
exports.shortcutBar.renderStatus();
refreshShortcutBar();
}
}
}
function refreshShortcutBar() {
if (!exports.shortcutBar)
return;
var shortcuts = [...globalShortcutsFn(), ...viewShortcutsFn()];
// widget-scoped providers (e.g. the waveform viewer): show chips while
// the widget's container has focus
var ae = document.activeElement;
for (var es of elementShortcuts) {
if (ae && es.div.contains(ae))
shortcuts = shortcuts.concat(es.fn());
}
exports.shortcutBar.setShortcuts(shortcuts.filter((s) => !isBrowserEaten(s.key)));
}
var elementShortcuts = [];
function registerElementShortcuts(div, fn) {
elementShortcuts.push({ div, fn });
}
function unregisterElementShortcuts(div) {
elementShortcuts = elementShortcuts.filter((es) => es.div !== div);
}
// combos the browser/OS reserves and won't let a page intercept:
// hide them from the bar rather than advertise dead keys
// (the underlying bindings stay in place for platforms where they work)
function isBrowserEaten(key) {
var k = key.toLowerCase();
if (!(0, keys_1.isMacOS)()) {
// Chrome/Firefox devtools on Windows/Linux: Ctrl+Shift+I/J/K
if (k == 'mod+shift+i' || k == 'mod+shift+j' || k == 'mod+shift+k')
return true;
// GNOME desktop: terminal / lock screen
if (k == 'ctrl+alt+t' || k == 'ctrl+alt+l')
return true;
}
return false;
}
//# sourceMappingURL=shortcutbar.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"shortcutbar.js","sourceRoot":"","sources":["../../src/ide/shortcutbar.ts"],"names":[],"mappings":"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 truncated
+45 -4
View File
@@ -2,15 +2,44 @@
/// TOOLBAR
Object.defineProperty(exports, "__esModule", { value: true });
exports.Toolbar = void 0;
const shortcutbar_1 = require("./shortcutbar");
const keys_1 = require("./keys");
// Lazy mousetrap require: mousetrap references `document` at module load time,
// which crashes in Node-based tests (window is polyfilled, document is not).
function getMousetrap() {
return require('mousetrap');
}
// Patch mousetrap's default stopCallback, which blocks ALL bound shortcuts
// when the event target is an input or contenteditable element -- which
// includes the CodeMirror editor. Allow combos with ctrl/alt/meta modifiers
// through so app commands keep working while typing in the editor.
// (AltGraph = AltGr on international keyboards: treat as character input.)
function patchMousetrap(Mousetrap) {
if (Mousetrap._8bwPatched)
return Mousetrap;
var origStop = Mousetrap.stopCallback;
Mousetrap.stopCallback = function (e, element, combo, sequence) {
if (e && (e.ctrlKey || e.altKey || e.metaKey)) {
if (e.getModifierState && e.getModifierState('AltGraph')) {
return origStop.call(this, e, element, combo, sequence);
}
return false;
}
return origStop.call(this, e, element, combo, sequence);
};
Mousetrap._8bwPatched = true;
return Mousetrap;
}
class Toolbar {
constructor(parentDiv, focusDiv) {
this.boundkeys = [];
const Mousetrap = getMousetrap();
const Mousetrap = patchMousetrap(getMousetrap());
// article-compliant bindings (match on KeyboardEvent.key) go through
// KeyBinder; non-compliant specs (punctuation, alt, shift+digit) fall
// back to mousetrap's positional matching
this.focusDiv = focusDiv;
this.keybinder = new keys_1.KeyBinder();
this.keybinder.attach();
this.mousetrap = focusDiv ? new Mousetrap(focusDiv) : Mousetrap;
this.span = $(document.createElement("span")).addClass("btn_toolbar");
parentDiv.appendChild(this.span[0]);
@@ -21,6 +50,11 @@ class Toolbar {
this.span.remove();
this.span = null;
}
if (this.keybinder) {
this.keybinder.detach();
this.keybinder.unbindAll();
this.keybinder = null;
}
if (this.mousetrap) {
for (var key of this.boundkeys) {
this.mousetrap.unbind(key);
@@ -39,13 +73,20 @@ class Toolbar {
icon = '<span class="glyphicon ' + icon + '" aria-hidden="true"></span>';
}
btn.html(icon);
btn.prop("title", key ? (alttext + " (" + key + ")") : alttext);
btn.prop("title", key ? (alttext + " (" + (0, shortcutbar_1.formatKey)(key) + ")") : alttext);
btn.click(fn);
this.grp.append(btn).show();
}
if (key) {
this.mousetrap.bind(key, fn);
this.boundkeys.push(key);
if (!this.focusDiv && (0, keys_1.parseKeyBinding)(key)) {
// layout-safe global binding: fires even when the editor has focus
this.keybinder.bind(key, fn);
}
else {
// legacy fallback: mousetrap (positional matching, input-scoped)
this.mousetrap.bind(key, (e, combo) => { fn(e, combo); return false; });
this.boundkeys.push(key);
}
}
return btn;
}
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"toolbar.js","sourceRoot":"","sources":["../../src/ide/toolbar.ts"],"names":[],"mappings":";AACA,WAAW;;;AAEX,+EAA+E;AAC/E,6EAA6E;AAC7E,SAAS,YAAY;IACjB,OAAO,OAAO,CAAC,WAAW,CAAC,CAAC;AAChC,CAAC;AAED,MAAa,OAAO;IAMhB,YAAY,SAAqB,EAAE,QAAoB;QAFvD,cAAS,GAAG,EAAE,CAAC;QAGb,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;QACjC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAChE,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QACtE,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IACD,OAAO;QACL,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACnB,CAAC;QACD,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,KAAK,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBAC/B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7B,CAAC;YACD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACxB,CAAC;IACH,CAAC;IACD,QAAQ;QACN,OAAO,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;IACvG,CAAC;IACD,GAAG,CAAC,GAAU,EAAE,OAAc,EAAE,IAAW,EAAE,EAAoB;QAC/D,IAAI,GAAG,GAAG,IAAI,CAAC;QACf,IAAI,IAAI,EAAE,CAAC;YACT,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC1D,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;gBACjC,IAAI,GAAG,yBAAyB,GAAG,IAAI,GAAG,8BAA8B,CAAC;YAC3E,CAAC;YACD,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACf,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,GAAC,IAAI,GAAC,GAAG,GAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAC1D,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACd,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QAC9B,CAAC;QACD,IAAI,GAAG,EAAE,CAAC;YACR,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAC7B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;CAEF;AA/CH,0BA+CG"}
{"version":3,"file":"toolbar.js","sourceRoot":"","sources":["../../src/ide/toolbar.ts"],"names":[],"mappings":"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"}
+165 -13
View File
@@ -71,6 +71,7 @@ const services_1 = require("./services");
const shareexport_1 = require("./shareexport");
const sync_1 = require("./sync");
const toolbar_1 = require("./toolbar");
const shortcutbar_1 = require("./shortcutbar");
const searchview_1 = require("./search/searchview");
const projectsource_1 = require("./search/projectsource");
const asseteditor_1 = require("./views/asseteditor");
@@ -90,6 +91,7 @@ var toolbar = $("#controls_top");
var uitoolbar;
var stateRecorder;
var userPaused; // did user explicitly pause?
var debugSessionActive; // has the user entered a debug session? (drives debug shortcut chips)
var current_output; // current ROM (or other object)
var current_preset; // current preset object (if selected)
var store; // persistent store
@@ -937,6 +939,12 @@ function showErrorAlert(errors, runtime) {
}
$("#error_alert").show();
errorWasRuntime = runtime;
// status chip: click jumps to first error that has an openable path
var jumpErr = errors.find((err) => err.path != null);
var fn;
if (jumpErr && exports.projectWindows.isWindow(jumpErr.path == getCurrentMainFilename() ? exports.current_project.mainPath : jumpErr.path)) {
fn = () => { jumpToError(jumpErr); };
}
}
function showExceptionAsError(err, msg) {
if (msg != null) {
@@ -1062,6 +1070,118 @@ function showDebugInfo(state) {
function setDebugButtonState(btnid, btnstate) {
$("#debug_bar, #run_bar").find("button").removeClass("btn_active").removeClass("btn_stopped");
$("#dbg_" + btnid).addClass("btn_" + btnstate);
(0, shortcutbar_1.refreshShortcutBar)();
}
// context-sensitive shortcut providers for the bottom bar
function jumpToError(err) {
var path = err.path == getCurrentMainFilename() ? exports.current_project.mainPath : err.path;
if (!exports.projectWindows.isWindow(path))
return;
var wnd = exports.projectWindows.createOrShow(path);
if (wnd instanceof editors_1.SourceEditor) {
wnd.navigateToLine(err.line);
}
}
// go-to-address (mod+shift+g): works while the Disassembly, Memory Browser,
// or VRAM Browser is the active view; accepts a hex address ("$1234", "0x1234",
// "1234") or a symbol name ("main")
function getGoToAddressView() {
var wnd = exports.projectWindows.getActive();
if (wnd instanceof editors_1.DisassemblerView || wnd instanceof debugviews_1.MemoryView)
return wnd;
return null;
}
function parseGoToTarget(s) {
s = s.trim();
if (!s)
return -1;
// symbol name first (so symbols like "add" aren't parsed as hex)
var symmap = exports.platform.debugSymbols && exports.platform.debugSymbols.symbolmap;
if (symmap && s in symmap)
return symmap[s];
var ls = s.toLowerCase();
if (symmap) {
for (var sym in symmap) {
if (sym.toLowerCase() === ls)
return symmap[sym];
}
}
// hex address (bare digits are parsed as hex, like the listings)
if (/^(0x|\$)[0-9a-f]+$/i.test(s))
return parseInt(s.replace(/^(0x|\$)/i, ''), 16);
if (/^[0-9a-f]+$/i.test(s))
return parseInt(s, 16);
return -1;
}
function promptGoToAddress() {
var wnd = getGoToAddressView();
if (!wnd)
return false;
var cur = wnd.getCursorPC ? wnd.getCursorPC() : -1;
bootbox.prompt({
title: "Go to Address",
placeholder: "address in hex",
value: cur >= 0 ? (0, util_1.hex)(cur, 4) : "",
callback: (result) => {
if (!result)
return; // canceled or empty
var addr = parseGoToTarget(result);
if (isNaN(addr) || addr < 0) {
(0, dialogs_1.alertError)("Can't find address or symbol: " + DOMPurify.sanitize(result));
return;
}
wnd.goToAddress(addr);
}
});
return true;
}
function getGlobalShortcuts() {
var shortcuts = [];
if (exports.platform && isPlatformReady()) {
// debug shortcuts appear only once a debug session has started
if (exports.platform.setupDebug && exports.platform.runEval) // TODO??
shortcuts.push({ key: 'mod+shift+d', label: 'Reset & Debug', fn: resetAndDebug });
if (!debugSessionActive) {
shortcuts.push({ key: 'mod+shift+r', label: 'Reset & Run', fn: resetAndRun });
shortcuts.push({ key: 'mod+shift+f', label: 'Search', fn: searchview_1.openSearchDialog });
}
if (exports.platform.isRunning && exports.platform.isRunning()) {
// in a debug session but emulator running: just Pause
shortcuts.push({ key: 'mod+shift+h', label: 'Pause', fn: pause });
}
else if (exports.platform.isRunning && !exports.platform.isRunning() && !getGoToAddressView()) {
// mod+shift+g becomes "Go To Address" while a debug tool view is active
shortcuts.push({ key: 'mod+shift+g', label: 'Resume', fn: resume });
}
if (getGoToAddressView()) {
shortcuts.push({ key: 'mod+shift+g', label: 'Go To Address', fn: promptGoToAddress });
}
}
return shortcuts;
}
function getDebugShortcuts() {
var shortcuts = [];
if (!debugSessionActive || !exports.platform || !isPlatformReady())
return shortcuts;
var running = exports.platform.isRunning && exports.platform.isRunning();
if (exports.platform.step)
shortcuts.push({ key: 'mod+shift+l', label: 'Step', fn: singleStep });
if (exports.platform.stepOver)
shortcuts.push({ key: 'mod+shift+k', label: 'Step Over', fn: stepOver });
if (exports.platform.runUntilReturn)
shortcuts.push({ key: 'mod+shift+i', label: 'Step Out', fn: runUntilReturn });
if (exports.platform.stepBack)
shortcuts.push({ key: 'mod+shift+j', label: 'Step Back', fn: runStepBackwards });
if (exports.platform.runToVsync)
shortcuts.push({ key: 'mod+shift+x', label: 'Next Frame', fn: singleFrameStep });
if (exports.platform.restartAtPC)
shortcuts.push({ key: 'mod+shift+a', label: 'Restart at Cursor', fn: restartAtCursor });
// TODO: check to see if line has debug info
if ((exports.platform.runEval || exports.platform.runToPC) && !exports.platform_id.startsWith('verilog'))
shortcuts.push({ key: 'mod+shift+y', label: 'Run To Line', fn: runToCursor });
// session-level actions are always available once debugging
//shortcuts.push({ key: 'mod+shift+e', label: recorderActive ? 'Stop Recording' : 'Record', fn: _toggleRecording });
return shortcuts;
}
function isPlatformReady() {
return exports.platform && current_output != null;
@@ -1120,6 +1240,7 @@ function openRelevantListing(state) {
exports.projectWindows.createOrShow(bestid, true);
}
function uiDebugCallback(state) {
debugSessionActive = true;
exports.lastDebugState = state;
showDebugInfo(state);
openRelevantListing(state);
@@ -1139,12 +1260,15 @@ function setupDebugCallback(btnid) {
function setupBreakpoint(btnid) {
if (!checkRunReady())
return;
debugSessionActive = true;
_disableRecording();
setupDebugCallback(btnid);
if (btnid)
setDebugButtonState(btnid, "active");
(0, shortcutbar_1.refreshShortcutBar)();
}
function _pause() {
debugSessionActive = true;
if (exports.platform && exports.platform.isRunning()) {
exports.platform.pause();
console.log("Paused");
@@ -1337,9 +1461,11 @@ function resetPlatform() {
function resetAndRun() {
if (!checkRunReady())
return;
debugSessionActive = false; // plain run: hide debug shortcut chips
clearBreakpoint();
resetPlatform();
_resume();
(0, shortcutbar_1.refreshShortcutBar)();
}
function resetAndDebug() {
if (!checkRunReady())
@@ -1477,6 +1603,7 @@ function _toggleRecording() {
else {
_enableRecording();
}
(0, shortcutbar_1.refreshShortcutBar)();
}
function _toggleTraceLines() {
var enabled = !editors_1.SourceEditor.tracingEnabled;
@@ -1559,38 +1686,44 @@ function setupDebugControls() {
// create toolbar buttons
uitoolbar = new toolbar_1.Toolbar($("#toolbar")[0], null);
uitoolbar.grp.prop('id', 'run_bar');
uitoolbar.add('ctrl+alt+r', 'Reset', 'glyphicon-refresh', resetAndRun).prop('id', 'dbg_reset');
uitoolbar.add('ctrl+alt+,', 'Pause', 'glyphicon-pause', pause).prop('id', 'dbg_pause');
uitoolbar.add('ctrl+alt+.', 'Resume', 'glyphicon-play', resume).prop('id', 'dbg_go');
uitoolbar.add('mod+shift+r', 'Reset', 'glyphicon-refresh', resetAndRun).prop('id', 'dbg_reset');
uitoolbar.add('mod+shift+h', 'Pause', 'glyphicon-pause', pause).prop('id', 'dbg_pause');
// bound before Resume so it takes priority in the debug tool views;
// falls through to Resume everywhere else
uitoolbar.add('mod+shift+g', 'Go To Address', '', (e) => {
if (!promptGoToAddress())
resume();
});
uitoolbar.add('mod+shift+g', 'Resume', 'glyphicon-play', resume).prop('id', 'dbg_go');
if (exports.platform.restartAtPC) {
uitoolbar.add('ctrl+alt+/', 'Restart at Cursor', 'glyphicon-play-circle', restartAtCursor).prop('id', 'dbg_restartatline');
uitoolbar.add('mod+shift+a', 'Restart at Cursor', 'glyphicon-play-circle', restartAtCursor).prop('id', 'dbg_restartatline');
}
uitoolbar.newGroup();
uitoolbar.grp.prop('id', 'debug_bar');
if (exports.platform.runEval) {
uitoolbar.add('ctrl+alt+e', 'Reset and Debug', 'glyphicon-fast-backward', resetAndDebug).prop('id', 'dbg_restart');
uitoolbar.add('mod+shift+d', 'Reset and Debug', 'glyphicon-fast-backward', resetAndDebug).prop('id', 'dbg_restart');
}
if (exports.platform.stepBack) {
uitoolbar.add('ctrl+alt+b', 'Step Backwards', 'glyphicon-step-backward', runStepBackwards).prop('id', 'dbg_stepback');
uitoolbar.add('mod+shift+j', 'Step Backwards', 'glyphicon-step-backward', runStepBackwards).prop('id', 'dbg_stepback');
}
if (exports.platform.step) {
uitoolbar.add('ctrl+alt+s', 'Single Step', 'glyphicon-step-forward', singleStep).prop('id', 'dbg_step');
uitoolbar.add('mod+shift+l', 'Single Step', 'glyphicon-step-forward', singleStep).prop('id', 'dbg_step');
}
if (exports.platform.stepOver) {
uitoolbar.add('ctrl+alt+t', 'Step Over', 'glyphicon-hand-right', stepOver).prop('id', 'dbg_stepover');
uitoolbar.add('mod+shift+k', 'Step Over', 'glyphicon-hand-right', stepOver).prop('id', 'dbg_stepover');
}
if (exports.platform.runUntilReturn) {
uitoolbar.add('ctrl+alt+o', 'Step Out of Subroutine', 'glyphicon-hand-up', runUntilReturn).prop('id', 'dbg_stepout');
uitoolbar.add('mod+shift+i', 'Step Out of Subroutine', 'glyphicon-hand-up', runUntilReturn).prop('id', 'dbg_stepout');
}
if (exports.platform.runToVsync) {
uitoolbar.add('ctrl+alt+n', 'Next Frame/Interrupt', 'glyphicon-forward', singleFrameStep).prop('id', 'dbg_tovsync');
uitoolbar.add('mod+shift+x', 'Next Frame/Interrupt', 'glyphicon-forward', singleFrameStep).prop('id', 'dbg_tovsync');
}
if ((exports.platform.runEval || exports.platform.runToPC) && !exports.platform_id.startsWith('verilog')) {
uitoolbar.add('ctrl+alt+l', 'Run To Line', 'glyphicon-save', runToCursor).prop('id', 'dbg_toline');
uitoolbar.add('mod+shift+y', 'Run To Line', 'glyphicon-save', runToCursor).prop('id', 'dbg_toline');
}
uitoolbar.newGroup();
uitoolbar.grp.prop('id', 'xtra_bar');
uitoolbar.add('shift+ctrl+/', 'Search', 'glyphicon-search', searchview_1.openSearchDialog).prop('id', 'dbg_search');
uitoolbar.add('mod+shift+f', 'Search', 'glyphicon-search', searchview_1.openSearchDialog).prop('id', 'dbg_search');
// add menu clicks
$(".dropdown-menu").collapse({ toggle: false });
$("#item_new_file").click(_createNewFile);
@@ -1832,7 +1965,7 @@ function setupReplaySlider() {
$("#clock_back").click(() => { setClockTo(parseInt(clockslider.val().toString()) - 1); });
$("#clock_fwd").click(() => { setClockTo(parseInt(clockslider.val().toString()) + 1); });
$("#replay_bar").show();
uitoolbar.add('ctrl+alt+0', 'Start/Stop Replay Recording', 'glyphicon-record', _toggleRecording).prop('id', 'dbg_record');
uitoolbar.add('mod+shift+e', 'Start/Stop Replay Recording', 'glyphicon-record', _toggleRecording).prop('id', 'dbg_record');
}
function isLandscape() {
try {
@@ -2130,6 +2263,25 @@ async function startPlatform() {
installHashChangeHandler();
exports.platform.sourceFileFetch = (path) => exports.current_project.filedata[path];
setupDebugControls();
// context-sensitive shortcuts/status bar (hidden by CSS on small windows)
if (!baseviews_1.isMobileDevice && $("#shortcuts_bar").length) {
(0, shortcutbar_1.initShortcutBar)($("#shortcuts_bar")[0]);
(0, shortcutbar_1.setGlobalShortcutsFn)(getGlobalShortcuts);
(0, shortcutbar_1.setViewShortcutsFn)(() => {
// view-specific keys (CodeMirror bindings) only apply while that view has
// focus; e.g. clicking the verilog waveform keeps the editor active but blurs it
var div = exports.projectWindows.id2div[exports.projectWindows.activeid];
var viewHasFocus = div && document.activeElement && div.contains(document.activeElement);
var wnd = exports.projectWindows.getActive();
var shortcuts = viewHasFocus && wnd && wnd.getShortcuts ? wnd.getShortcuts() : [];
// debug chips ride along with the view zone (they're gated on debugSessionActive)
return [...getDebugShortcuts(), ...shortcuts];
});
// focus changes can invalidate view-specific shortcuts
$(document).on('focusin focusout', () => (0, shortcutbar_1.refreshShortcutBar)());
(0, shortcutbar_1.refreshShortcutBar)();
(0, shortcutbar_1.setBarVisible)((0, settings_1.loadSettings)().showStatusBar);
}
addPageFocusHandlers();
showInstructions();
if (isEmbed) {
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/ide/ui.ts"],"names":[],"mappings":"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 truncated
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/ide/ui.ts"],"names":[],"mappings":"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 truncated
+15 -1
View File
@@ -47,7 +47,19 @@ function getMousetrap() {
class AssetEditorView {
createDiv(parent) {
this.maindiv = (0, baseviews_1.newDiv)(parent, "vertical-scroll");
return this.maindiv[0];
// focusable so the shortcut bar can tell when this view has focus
// (default focus still applies to inner inputs, refining this)
var div = this.maindiv[0];
div.setAttribute('tabindex', '-1');
div.addEventListener('mousedown', () => { div.focus(); });
return div;
}
// chips for the global asset undo/redo (bound via mousetrap in setVisible)
getShortcuts() {
return [
{ key: 'mod+z', label: 'Undo', fn: () => ui_1.projectWindows.undoStep() },
{ key: 'mod+shift+z', label: 'Redo', fn: () => ui_1.projectWindows.redoStep() },
];
}
clearAssets() {
this.rootnodes = [];
@@ -504,6 +516,8 @@ class AssetEditorView {
Mousetrap.bind('mod+z', (e) => { ui_1.projectWindows.undoStep(); return false; });
Mousetrap.bind('mod+shift+z', (e) => { ui_1.projectWindows.redoStep(); return false; });
}
// focus so the shortcut bar's view chips (undo/redo) show
this.maindiv && this.maindiv[0] && this.maindiv[0].focus();
}
else {
const Mousetrap = getMousetrap();
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"asseteditor.js","sourceRoot":"","sources":["../../../src/ide/views/asseteditor.ts"],"names":[],"mappings":"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 truncated
{"version":3,"file":"asseteditor.js","sourceRoot":"","sources":["../../../src/ide/views/asseteditor.ts"],"names":[],"mappings":"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 truncated
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"baseviews.js","sourceRoot":"","sources":["../../../src/ide/views/baseviews.ts"],"names":[],"mappings":";;;AAiCA,wBAKC;AAVA,CAAC;AAEF,6GAA6G;AAClG,QAAA,cAAc,GAAG,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,oCAAoC,CAAC,CAAC,OAAO,CAAC;AAEjH,SAAgB,MAAM,CAAC,MAAO,EAAE,GAAY;IACxC,IAAI,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3C,IAAI,MAAM;QAAE,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;IAChC,IAAI,GAAG;QAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC3B,OAAO,GAAG,CAAC;AACf,CAAC"}
{"version":3,"file":"baseviews.js","sourceRoot":"","sources":["../../../src/ide/views/baseviews.ts"],"names":[],"mappings":";;;AAmCA,wBAKC;AAVA,CAAC;AAEF,6GAA6G;AAClG,QAAA,cAAc,GAAG,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,oCAAoC,CAAC,CAAC,OAAO,CAAC;AAEjH,SAAgB,MAAM,CAAC,MAAO,EAAE,GAAY;IACxC,IAAI,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3C,IAAI,MAAM;QAAE,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;IAChC,IAAI,GAAG;QAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC3B,OAAO,GAAG,CAAC;AACf,CAAC"}
+27
View File
@@ -23,6 +23,7 @@ class MemoryView {
this.recreateOnResize = true;
this.hibits = 0; // a hack to make it work with 32-bit addresses
this.totalRows = 0x1400; // a little more room in case we split lots of lines
this.gotoRow = -1; // row highlighted by the Go To Address prompt
}
createDiv(parent) {
var div = document.createElement('div');
@@ -45,6 +46,8 @@ class MemoryView {
if (dlr)
linediv.classList.add('seg_' + this.getMemorySegment(this.dumplines[row].a | this.hibits));
}
if (row == this.gotoRow)
linediv.classList.add('goto_line');
linediv.appendChild(document.createTextNode(s));
return linediv;
}
@@ -61,6 +64,29 @@ class MemoryView {
this.memorylist.scrollToItem(this.findMemoryWindowLine(addr & 0xffff));
}
}
// jump to an address (or symbol), via the Go To Address prompt;
// centers the target row in the viewport and highlights it
goToAddress(addr) {
this.hibits = addr & 0xffff0000;
var dump = this.getDumpLines();
var row;
if (dump && dump.length) {
row = this.findMemoryWindowLine(addr & 0xffff);
}
else {
// no symbol map (e.g. VRAM): rows are raw 16-byte chunks
row = (addr & 0xffff) >> 4;
}
if (row === undefined)
return;
this.gotoRow = row;
if (this.memorylist) {
var c = this.memorylist.container;
var y = row * this.memorylist.itemHeight - (c.clientHeight - this.memorylist.itemHeight) / 2;
c.scrollTop = Math.max(0, y);
}
this.tick();
}
refresh() {
this.dumplines = null;
this.tick();
@@ -74,6 +100,7 @@ class MemoryView {
var newtext = this.getMemoryLineAt(row);
if (oldtext != newtext)
div.text(newtext);
div.toggleClass('goto_line', row == this.gotoRow);
});
}
}
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"debugviews.js","sourceRoot":"","sources":["../../../src/ide/views/debugviews.ts"],"names":[],"mappings":"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 truncated
{"version":3,"file":"debugviews.js","sourceRoot":"","sources":["../../../src/ide/views/debugviews.ts"],"names":[],"mappings":"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 truncated
+58 -5
View File
@@ -22,6 +22,13 @@ const mbo_1 = require("../../themes/mbo");
const settings_1 = require("../settings");
const tabs_1 = require("./tabs");
const ui_1 = require("../ui");
const keys_1 = require("../keys");
// Free the mod+shift+<letter> keys the IDE binds (see IDE_RESERVED_KEYS) so its
// debug shortcuts work while an editor is focused. CodeMirror claims two of
// them today: deleteLine ("Shift-Mod-k") and selectSelectionMatches
// ("Mod-Shift-l"); deleteLine keeps a home on Mod-Shift-Backspace.
const ideDefaultKeymap = [...(0, keys_1.stripCMKeymap)(commands_1.defaultKeymap, keys_1.IDE_RESERVED_KEYS), { key: "Mod-Shift-Backspace", run: commands_1.deleteLine }];
const ideSearchKeymap = (0, keys_1.stripCMKeymap)(search_1.searchKeymap, keys_1.IDE_RESERVED_KEYS);
const assetdecorations_1 = require("./assetdecorations");
const includedecorations_1 = require("./includedecorations");
const baseviews_1 = require("./baseviews");
@@ -118,6 +125,25 @@ class SourceEditor {
this.stopTracing();
}
}
// a few of the CodeMirror bindings available while editing;
// chips are clickable and run the command on this editor
getShortcuts() {
if (!this.editor)
return [];
var ed = this.editor;
var mk = (key, label, cmd) => ({
key, label, fn: () => { cmd(ed); ed.focus(); }
});
return [
mk('mod+f', 'Find', search_1.openSearchPanel),
mk('mod+g', 'Find Next', search_1.findNext),
mk('mod+d', 'Next Occurrence', search_1.selectNextOccurrence),
mk('mod+shift+backspace', 'Delete Line', commands_1.deleteLine),
mk('mod+/', 'Toggle Comment', commands_1.toggleComment),
mk('mod+z', 'Undo', commands_1.undo),
mk('mod+shift+z', 'Redo', commands_1.redo),
];
}
startTracing() {
if (!this.probe && ui_1.platform.startProbing) {
this.probe = ui_1.platform.startProbing();
@@ -184,7 +210,7 @@ class SourceEditor {
...(0, settings_1.settingsExtensions)((0, settings_1.loadSettings)()),
// https://codemirror.net/docs/ref/#commands.defaultKeymap includes
// https://codemirror.net/docs/ref/#commands.standardKeymap
view_1.keymap.of(commands_1.defaultKeymap),
view_1.keymap.of(ideDefaultKeymap),
lineNums ? (0, view_1.lineNumbers)() : [],
// Undo history.
(0, commands_1.history)(),
@@ -203,7 +229,7 @@ class SourceEditor {
(0, view_1.highlightActiveLineGutter)(),
(0, search_1.highlightSelectionMatches)(),
(0, search_1.search)({ top: true }),
view_1.keymap.of(search_1.searchKeymap),
view_1.keymap.of(ideSearchKeymap),
// lintGutter(),
// autocompletion(),
parser || [],
@@ -689,9 +715,9 @@ class DisassemblerView {
});
}
// TODO: too many globals
refresh(moveCursor) {
refresh(moveCursor, centerAddr) {
let state = ui_1.lastDebugState || ui_1.platform.saveState(); // TODO?
let pc = state.c ? state.c.PC : 0;
let pc = centerAddr !== undefined ? centerAddr : (state.c ? state.c.PC : 0);
let curline = 0;
let selline = 0;
let addr2symbol = (ui_1.platform.debugSymbols && ui_1.platform.debugSymbols.addr2symbol) || {};
@@ -760,6 +786,33 @@ class DisassemblerView {
});
}
}
// jump to an address (or symbol), via the Go To Address prompt
goToAddress(addr) {
addr |= 0;
if (!this.findAndSelectAddress(addr)) {
// re-center the disassembly window on this address
this.refresh(false, addr);
this.findAndSelectAddress(addr);
}
this.disasmview.focus();
}
findAndSelectAddress(addr) {
const h = (0, util_1.hex)(addr, 4); // every line starts with the address + tab
const doc = this.disasmview.state.doc;
for (let i = 1; i <= doc.lines; i++) {
const line = doc.line(i);
if (line.text.startsWith(h + "\t")) {
// select the address so the line stays highlighted; scrollIntoView
// centers it in the viewport
this.disasmview.dispatch({
selection: { anchor: line.from, head: line.from + h.length },
effects: view_1.EditorView.scrollIntoView(line.from, { y: "center" }),
});
return true;
}
}
return false;
}
getCursorPC() {
const pos = this.disasmview.state.selection.main.head;
const lineNum = this.disasmview.state.doc.lineAt(pos).number;
@@ -910,7 +963,7 @@ class HeaderView {
(0, view_1.highlightActiveLine)(),
(0, search_1.highlightSelectionMatches)(),
(0, search_1.search)({ top: true }),
view_1.keymap.of(search_1.searchKeymap),
view_1.keymap.of(ideSearchKeymap),
this.languageCompartment.of(lang),
mbo_1.mbo,
editorTheme_1.editorTheme,
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"editors.js","sourceRoot":"","sources":["../../../src/ide/views/editors.ts"],"names":[],"mappings":"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 truncated
{"version":3,"file":"editors.js","sourceRoot":"","sources":["../../../src/ide/views/editors.ts"],"names":[],"mappings":"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 truncated
+20
View File
@@ -5,6 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
Object.defineProperty(exports, "__esModule", { value: true });
exports.WaveformView = void 0;
const toolbar_1 = require("./toolbar");
const shortcutbar_1 = require("./shortcutbar");
const vlist_1 = require("../common/vlist");
const dompurify_1 = __importDefault(require("dompurify"));
const BUILTIN_INPUT_PORTS = [
@@ -21,8 +22,27 @@ class WaveformView {
this.scrollbarWidth = 12;
this.parent = parent;
this.wfp = wfp;
// focusable container + chip registration so the shortcut bar can show
// this widget's keys while it has focus (the canvas itself can't take focus)
this.parent.setAttribute('tabindex', '-1');
this.parent.addEventListener('mousedown', () => { this.parent.focus(); });
(0, shortcutbar_1.registerElementShortcuts)(this.parent, () => this.getShortcuts());
this.recreate();
}
// chips for the widget's mousetrap-scoped toolbar bindings
getShortcuts() {
return [
{ key: '=', label: 'Zoom In', fn: () => this.setZoom(this.zoom * 2) },
{ key: '-', label: 'Zoom Out', fn: () => this.setZoom(this.zoom / 2) },
{ key: 'ctrl+shift+left', label: 'To Start', fn: () => { this.setSelTime(0); this.setOrgTime(0); } },
{ key: 'shift+left', label: 'Page Left', fn: () => this.setSelTime(this.tsel - this.clocksPerPage / 4) },
{ key: 'left', label: 'Left', fn: () => this.setSelTime(this.tsel - 1) },
{ key: 'right', label: 'Right', fn: () => this.setSelTime(this.tsel + 1) },
{ key: 'shift+right', label: 'Page Right', fn: () => this.setSelTime(this.tsel + this.clocksPerPage / 4) },
{ key: 'space', label: 'Go To Current', fn: () => { this.setOrgTime(this.tnow); this.setSelTime(this.tnow); } },
{ key: 'h', label: 'Hex/Dec', fn: () => { this.hexformat = !this.hexformat; this.refresh(); } },
];
}
recreate() {
clearTimeout(this.wtimer);
this.wtimer = setTimeout(() => {
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"waveform.js","sourceRoot":"","sources":["../../src/ide/waveform.ts"],"names":[],"mappings":"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 truncated
{"version":3,"file":"waveform.js","sourceRoot":"","sources":["../../src/ide/waveform.ts"],"names":[],"mappings":"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 truncated
+5
View File
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
exports.ProjectWindows = void 0;
const $ = require("jquery");
const util_1 = require("../common/util");
const shortcutbar_1 = require("./shortcutbar");
class ProjectWindows {
constructor(containerdiv, project) {
this.id2window = {};
@@ -45,11 +46,15 @@ class ProjectWindows {
this.activewnd && this.activewnd.setVisible && this.activewnd.setVisible(false);
this.activediv = div;
this.activewnd = wnd;
// set before showing: setVisible() may focus the view, whose focusin
// handler refreshes the shortcut bar against the new active view
this.activeid = id;
$(div).show();
this.refresh(true); // needed to tell asset editor 1st time running, but that's bad
this.refreshErrors();
wnd.setVisible && wnd.setVisible(true);
this.id2showfn[id] && this.id2showfn[id](id, wnd);
(0, shortcutbar_1.refreshShortcutBar)(); // active view changed -> update context-sensitive shortcuts
}
else if (moveCursor) {
this.refresh(moveCursor);
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"windows.js","sourceRoot":"","sources":["../../src/ide/windows.ts"],"names":[],"mappings":"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 truncated
{"version":3,"file":"windows.js","sourceRoot":"","sources":["../../src/ide/windows.ts"],"names":[],"mappings":";;;AACA,4BAA6B;AAC7B,yCAAuE;AAIvE,+CAA6D;AAU7D,MAAa,cAAc;IAgBzB,YAAY,YAAyB,EAAE,OAAoB;QAb3D,cAAS,GAAkC,EAAE,CAAC;QAC9C,gBAAW,GAA2C,EAAE,CAAC;QACzD,cAAS,GAAyC,EAAE,CAAC;QACrD,WAAM,GAAkC,EAAE,CAAC;QAWzC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;IACtB,CAAC;IACD,6BAA6B;IAE7B,QAAQ,CAAC,EAAU;QACjB,OAAO,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC;IACtC,CAAC;IAED,aAAa,CAAC,EAAU,EAAE,QAA8B;QACtD,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC;IAClC,CAAC;IAED,WAAW,CAAC,EAAU,EAAE,MAA0B;QAChD,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;IAC9B,CAAC;IAED,MAAM,CAAC,EAAU;QACf,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC7B,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;YACnC,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACtD,CAAC;QACD,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC1B,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACzD,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QAChB,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,YAAY,CAAC,EAAU,EAAE,UAAoB;QAC3C,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC1B,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC1B,IAAI,IAAI,CAAC,SAAS,IAAI,GAAG,EAAE,CAAC;YAC1B,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC;YAC3C,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAChF,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;YACrB,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;YACrB,qEAAqE;YACrE,iEAAiE;YACjE,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;YACnB,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;YACd,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,+DAA+D;YACnF,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACvC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;YAClD,IAAA,gCAAkB,GAAE,CAAC,CAAC,4DAA4D;QACpF,CAAC;aAAM,IAAI,UAAU,EAAE,CAAC;YACtB,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC3B,CAAC;QACD,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACnB,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;YAClC,MAAM,UAAU,GAAG,EAAE,KAAK,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;YAChD,IAAI,UAAU,EAAE,CAAC;gBACf,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;oBACzB,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACpF,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,GAAG,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,kBAAkB,CAAC,EAAE,CAAC,CAAC;gBACpE,oFAAoF;gBACpF,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;oBAClF,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;gBACvC,CAAC;YACH,CAAC;YACD,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACvB,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,WAAW,CAAC,EAAU;QACpB,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE,OAAO;QAC9B,IAAI,QAAQ,GAAG,IAAA,yBAAkB,EAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACzD,IAAI,EAAE,KAAK,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YACjC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC;QAC/C,CAAC;aAAM,CAAC;YACN,IAAI,QAAQ,GAAG,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,cAAc,CAAC,MAAM,CAAC;gBAChF,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAA,yBAAkB,EAAC,EAAE,CAAC,CAAC;YACrD,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,GAAG,QAAQ,GAAG,KAAK,GAAG,QAAQ,CAAC;QAClE,CAAC;IACH,CAAC;IAED,GAAG,CAAC,EAAU,EAAE,MAAmB;QACjC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;IAC9B,CAAC;IAED,OAAO,CAAC,UAAmB;QACzB,yBAAyB;QACzB,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO;YAC1C,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACvC,CAAC;IAED,IAAI;QACF,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI;YACvC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;IAC1B,CAAC;IAED,SAAS,CAAC,MAAqB;QAC7B,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;QACzB,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAED,aAAa;QACX,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;YAChD,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM;gBAC3C,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;;gBAE3C,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;QACjC,CAAC;IACH,CAAC;IAED,SAAS,KAAkB,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAEnD,WAAW,KAAa,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAE/C,cAAc;QACZ,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ;YAC3C,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;;YAEjC,OAAO,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IAED,MAAM;QACJ,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC;YACvE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;YACrC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;YAClC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAED,UAAU,CAAC,MAAc,EAAE,IAAc;QACvC,IAAI,IAAI,YAAY,UAAU,EAAE,CAAC;YAC/B,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAALine truncated
+158
View File
@@ -0,0 +1,158 @@
"use strict";
// MINIMAL KEYBOARD SHORTCUT MATCHER
//
// Follows the rules from "All JavaScript keyboard shortcut libraries are
// broken" (Hazel Duvall, 2025-01-10):
// - match on KeyboardEvent.key (layout-aware), never code/keyCode/which
// (mousetrap and most libraries use which -> wrong keys on Dvorak etc.)
// - only roman letters (A-Z), digits, and named navigation keys
// - normalize case, so Shift never changes what is matched
// - Shift is only allowed with letters (Shift mutates digits/punctuation)
// - never use Alt (macOS Option mutates letters, e.g. Alt+R = '®';
// AltGr = Ctrl+Alt on international PC layouts)
// - 'mod' = Cmd on macOS, Ctrl on Windows/Linux
Object.defineProperty(exports, "__esModule", { value: true });
exports.IDE_RESERVED_KEYS = exports.KeyBinder = void 0;
exports.isMacOS = isMacOS;
exports.parseKeyBinding = parseKeyBinding;
exports.matchesKeyBinding = matchesKeyBinding;
exports.normalizeCMKeySpec = normalizeCMKeySpec;
exports.effectiveCMKeySpec = effectiveCMKeySpec;
exports.stripCMKeymap = stripCMKeymap;
const NAMED_KEYS = {
left: 'arrowleft', right: 'arrowright', up: 'arrowup', down: 'arrowdown',
};
var _isMac = null;
function isMacOS() {
if (_isMac === null) {
var nav = typeof navigator !== 'undefined' ? navigator : null;
_isMac = !!nav && /mac|iphone|ipad|ipod/i.test(nav.platform || nav.userAgent || '');
}
return _isMac;
}
function parseKeyBinding(spec) {
var parts = spec.toLowerCase().split('+');
var key = parts.pop();
var b = { mod: false, shift: false, key: '' };
for (var p of parts) {
if (p == 'mod' || p == 'ctrl' || p == 'meta' || p == 'cmd')
b.mod = true;
else if (p == 'shift')
b.shift = true;
else {
console.warn('Keyboard shortcut "' + spec + '": unsupported modifier "' + p + '" (alt is layout-dependent), skipping');
return null;
}
}
key = NAMED_KEYS[key] || key;
var isLetter = /^[a-z]$/.test(key);
if (!isLetter && !/^[0-9]$/.test(key) && !/^arrow/.test(key)) {
console.warn('Keyboard shortcut "' + spec + '": key "' + key + '" is layout-dependent (use a-z, 0-9), skipping');
return null;
}
if (b.shift && !isLetter && !/^arrow/.test(key)) {
console.warn('Keyboard shortcut "' + spec + '": shift is only allowed with letters and arrows, skipping');
return null;
}
b.key = key;
return b;
}
function matchesKeyBinding(b, e) {
if (e.altKey)
return false; // we never bind alt; avoids AltGr ghosts while typing
var mac = isMacOS();
var modPressed = mac ? e.metaKey : e.ctrlKey;
var otherPressed = mac ? e.ctrlKey : e.metaKey;
if (b.mod !== modPressed || otherPressed)
return false;
if (b.shift !== e.shiftKey)
return false;
return (e.key || '').toLowerCase() === b.key;
}
class KeyBinder {
constructor() {
this.bindings = [];
this.handler = (e) => {
// defer to any handler that already claimed this event (CodeMirror
// keymaps, browser UI, ...) -- they call preventDefault when handled
if (e.defaultPrevented)
return;
for (var i = 0; i < this.bindings.length; i++) {
var bind = this.bindings[i];
if (matchesKeyBinding(bind.binding, e)) {
e.preventDefault();
e.stopPropagation();
bind.fn(e);
return;
}
}
};
}
bind(spec, fn) {
var b = parseKeyBinding(spec);
if (b)
this.bindings.push({ binding: b, fn });
}
unbindAll() {
this.bindings = [];
}
attach() {
window.addEventListener('keydown', this.handler);
}
detach() {
window.removeEventListener('keydown', this.handler);
}
}
exports.KeyBinder = KeyBinder;
const CM_MODIFIERS = {
mod: 'Mod', cmd: 'Mod', meta: 'Mod', ctrl: 'Ctrl', control: 'Ctrl',
shift: 'Shift', alt: 'Alt', option: 'Alt',
};
var _isWin = null;
function isWindows() {
if (_isWin === null) {
var nav = typeof navigator !== 'undefined' ? navigator : null;
_isWin = !!nav && /win/i.test(nav.platform || nav.userAgent || '');
}
return _isWin;
}
// "Shift-Mod-k" and "Mod-Shift-K" both become "Mod-Shift-k"
function normalizeCMKeySpec(spec) {
var parts = spec.split('-');
var key = parts.pop();
if (key === '')
key = '-'; // trailing dash means the key itself is '-'
var mods = [];
for (var p of parts) {
if (p === '')
continue; // "Mod--" splits to ['Mod', '', '']
var m = CM_MODIFIERS[p.toLowerCase()] || p;
if (m == 'Ctrl' && !isMacOS())
m = 'Mod'; // off macOS, Ctrl *is* Mod
if (mods.indexOf(m) < 0)
mods.push(m);
}
mods.sort();
return mods.concat([key.toLowerCase()]).join('-');
}
// the spec CodeMirror will actually use on this platform
function effectiveCMKeySpec(b) {
var platform = isMacOS() ? b.mac : (isWindows() ? b.win : b.linux);
return platform || b.key;
}
// every mod+shift+<letter> the IDE binds -- see the shortcuts in ui.ts, which
// testkeys.ts checks this list against
exports.IDE_RESERVED_KEYS = [
'Mod-Shift-a', 'Mod-Shift-d', 'Mod-Shift-e', 'Mod-Shift-f', 'Mod-Shift-g',
'Mod-Shift-h', 'Mod-Shift-i', 'Mod-Shift-j', 'Mod-Shift-k', 'Mod-Shift-l',
'Mod-Shift-r', 'Mod-Shift-x', 'Mod-Shift-y',
];
// drop the bindings that would swallow one of the IDE's own shortcuts
function stripCMKeymap(keymap, specs) {
var freed = specs.map(normalizeCMKeySpec);
return keymap.filter(function (b) {
var spec = effectiveCMKeySpec(b);
return !spec || freed.indexOf(normalizeCMKeySpec(spec)) < 0;
});
}
//# sourceMappingURL=keys.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"keys.js","sourceRoot":"","sources":["../../../src/ide/keys.ts"],"names":[],"mappings":"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 truncated
+1 -1
View File
@@ -1373,7 +1373,7 @@ class PixEditor extends Viewer {
return span;
}
createToolbarButtons(parent) {
var toolbar = new toolbar_1.Toolbar(parent, null);
var toolbar = new toolbar_1.Toolbar(parent, parent); // scope key bindings to the pixel editor
toolbar.add('ctrl+shift+h', 'Flip X', 'glyphicon-resize-horizontal', this.flipX.bind(this));
toolbar.add('ctrl+shift+v', 'Flip Y', 'glyphicon-resize-vertical', this.flipY.bind(this));
toolbar.add('ctrl+shift+9', 'Rotate', 'glyphicon-repeat', this.rotate90.bind(this));
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"pixeleditor.js","sourceRoot":"","sources":["../../../src/ide/pixeleditor.ts"],"names":[],"mappings":"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 truncated
{"version":3,"file":"pixeleditor.js","sourceRoot":"","sources":["../../../src/ide/pixeleditor.ts"],"names":[],"mappings":"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 truncated
+6 -2
View File
@@ -13,6 +13,7 @@ const language_1 = require("@codemirror/language");
const state_1 = require("@codemirror/state");
const view_1 = require("@codemirror/view");
const util_1 = require("../common/util");
const shortcutbar_1 = require("./shortcutbar");
const debug_1 = require("./views/debug");
const tabs_1 = require("./views/tabs");
exports.highlightSpecialCharsCompartment = new state_1.Compartment();
@@ -33,6 +34,7 @@ const defaultSettings = {
closeBrackets: false,
debugHighlightTags: false,
showLineNumbers: false,
showStatusBar: true,
};
function loadSettings() {
try {
@@ -81,7 +83,6 @@ function openSettings() {
onEscape: true,
title: "Settings",
message: `<form id="settingsForm" onsubmit="return false">
<h5>Editor preferences</h5>
<div class="form-group"><label>Tab size: <input type="number" id="setting_tabSize" min="1" max="40" value="${settings.tabSize}" style="width:4em"></label></div>
<div class="checkbox"><label><input type="checkbox" id="setting_tabsToSpaces" ${settings.tabsToSpaces ? 'checked' : ''}> Insert spaces when pressing TAB</label></div>
<div class="checkbox"><label><input type="checkbox" id="setting_highlightSpecialChars" ${settings.highlightSpecialChars ? 'checked' : ''}> Highlight special characters</label></div>
@@ -89,9 +90,10 @@ function openSettings() {
<div class="checkbox"><label><input type="checkbox" id="setting_highlightTrailingWhitespace" ${settings.highlightTrailingWhitespace ? 'checked' : ''}> Highlight unwanted trailing whitespace</label></div>
<div class="checkbox"><label><input type="checkbox" id="setting_showLineNumbers" ${settings.showLineNumbers ? 'checked' : ''}> Show line numbers</label></div>
<div class="checkbox"><label><input type="checkbox" id="setting_closeBrackets" ${settings.closeBrackets ? 'checked' : ''}> Automatically add and remove closing brackets</label></div>
<div class="checkbox"><label><input type="checkbox" id="setting_showStatusBar" ${settings.showStatusBar ? 'checked' : ''}> Show keyboard shortcuts / status bar</label></div>
${showInternal ? `
<hr>
<h5>8bitworkshop IDE internal settings</h5>
<h5>Internal</h5>
<div class="checkbox"><label><input type="checkbox" id="setting_debugHighlightTags" ${settings.debugHighlightTags ? 'checked' : ''}> Debug editor syntax highlighting tags</label></div>
` : ''}
</form>`,
@@ -113,8 +115,10 @@ function openSettings() {
settings.showLineNumbers = $('#setting_showLineNumbers').is(':checked');
if (showInternal)
settings.debugHighlightTags = $('#setting_debugHighlightTags').is(':checked');
settings.showStatusBar = $('#setting_showStatusBar').is(':checked');
saveSettings(settings);
applySettingsToAll(settings);
(0, shortcutbar_1.setBarVisible)(settings.showStatusBar);
}
}
}
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../../src/ide/settings.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../../src/ide/settings.ts"],"names":[],"mappings":"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"}
+164
View File
@@ -0,0 +1,164 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.shortcutBar = exports.ShortcutBar = void 0;
exports.formatKey = formatKey;
exports.initShortcutBar = initShortcutBar;
exports.setGlobalShortcutsFn = setGlobalShortcutsFn;
exports.setViewShortcutsFn = setViewShortcutsFn;
exports.setBarStatus = setBarStatus;
exports.setBarVisible = setBarVisible;
exports.refreshShortcutBar = refreshShortcutBar;
exports.registerElementShortcuts = registerElementShortcuts;
exports.unregisterElementShortcuts = unregisterElementShortcuts;
const $ = require("jquery");
const keys_1 = require("./keys");
// display a mousetrap-style key spec for the current platform:
// mac: 'mod+shift+r' -> '⇧⌘R', 'ctrl+alt+r' -> '⌃⌥R'
// win/linux: 'mod+shift+r' -> 'Ctrl+Shift+R'
// unknown parts (e.g. punctuation keys) pass through unchanged
const MAC_SYMBOLS = { shift: '⇧', ctrl: '⌃', alt: '⌥', meta: '⌘', mod: '⌘', cmd: '⌘' };
const PC_NAMES = { shift: 'Shift', ctrl: 'Ctrl', alt: 'Alt', meta: 'Win', mod: 'Ctrl', cmd: 'Cmd' };
const KEY_SYMBOLS = { arrowleft: '←', arrowright: '→', arrowup: '↑', arrowdown: '↓', backspace: '⌫', enter: '↩', tab: '⇥', escape: '⎋', space: '␣' };
function formatKey(key) {
var parts = key.toLowerCase().split('+');
var main = parts.pop();
var isMac = (0, keys_1.isMacOS)();
// canonical display order: shift first on mac (HIG), ctrl first on PC
var order = isMac ? ['shift', 'ctrl', 'alt', 'meta', 'mod', 'cmd'] : ['mod', 'ctrl', 'shift', 'alt', 'meta', 'cmd'];
var uniq = order.filter((p) => parts.indexOf(p) >= 0);
for (var p of parts)
if (uniq.indexOf(p) < 0)
uniq.push(p);
var modStr = uniq.map((p) => isMac ? (MAC_SYMBOLS[p] || p) : (PC_NAMES[p] || p)).join(isMac ? '' : '+');
var mainDisp = /^[a-z]$/.test(main) ? main.toUpperCase() : (KEY_SYMBOLS[main] || (isMac ? main : main.charAt(0).toUpperCase() + main.slice(1)));
return (modStr ? modStr + (isMac ? '' : '+') : '') + mainDisp;
}
class ShortcutBar {
constructor(div) {
this.shortcutsSig = "";
this.status = {};
this.visible = true;
this.div = div;
this.shortcutsZone = $(document.createElement("span")).addClass("shortcuts_zone");
this.statusZone = $(document.createElement("span")).addClass("status_zone");
$(div).append(this.shortcutsZone).append(this.statusZone);
}
setShortcuts(shortcuts) {
if (!this.visible)
return;
// skip re-render if nothing changed
var sig = shortcuts.map((s) => s.key + "\u0001" + s.label).join("\u0002");
if (sig === this.shortcutsSig)
return;
this.shortcutsSig = sig;
this.shortcutsZone.empty();
for (var s of shortcuts) {
var span = $(document.createElement("span")).addClass("shortcut");
span.append($(document.createElement("kbd")).text(formatKey(s.key)));
span.append(document.createTextNode(" " + s.label));
if (s.fn) {
makeClickable(span, s.fn);
}
this.shortcutsZone.append(span);
}
}
setStatus(id, item) {
if (item)
this.status[id] = item;
else
delete this.status[id];
this.renderStatus();
}
renderStatus() {
if (!this.visible)
return;
this.statusZone.empty();
for (var key of Object.keys(this.status)) {
var s = this.status[key];
var span = $(document.createElement("span")).addClass("status_item");
if (s.cls)
span.addClass(s.cls);
if (s.title)
span.prop("title", s.title);
span.text(s.text);
if (s.fn) {
makeClickable(span, s.fn);
}
this.statusZone.append(span);
}
}
}
exports.ShortcutBar = ShortcutBar;
function makeClickable(span, fn) {
// don't steal focus on mousedown: clicking a chip would blur the active
// view and re-render the bar (removing the chip) before the click lands
span.addClass("clickable");
span.mousedown((e) => e.preventDefault());
span.click(fn);
}
// module-level singleton + provider wiring
// (avoids circular imports between ui.ts / windows.ts / views)
exports.shortcutBar = null;
function initShortcutBar(div) {
exports.shortcutBar = new ShortcutBar(div);
}
var globalShortcutsFn = () => [];
var viewShortcutsFn = () => [];
// global/debug shortcuts are composed by ui.ts (knows debug state)
function setGlobalShortcutsFn(fn) { globalShortcutsFn = fn; }
// view-specific shortcuts come from the active ProjectView's getShortcuts()
function setViewShortcutsFn(fn) { viewShortcutsFn = fn; }
// status items are updated directly by the subsystem that owns them
function setBarStatus(id, item) {
if (exports.shortcutBar)
exports.shortcutBar.setStatus(id, item);
}
// show/hide the whole bar (driven by the IDE setting); also collapses
// the bottom spacing via the body class (see css/ui.css)
function setBarVisible(visible) {
$(document.body).toggleClass("statusbar-hidden", !visible);
if (exports.shortcutBar) {
exports.shortcutBar.visible = visible;
if (visible) {
exports.shortcutBar.shortcutsSig = ""; // force re-render on next refresh
exports.shortcutBar.renderStatus();
refreshShortcutBar();
}
}
}
function refreshShortcutBar() {
if (!exports.shortcutBar)
return;
var shortcuts = [...globalShortcutsFn(), ...viewShortcutsFn()];
// widget-scoped providers (e.g. the waveform viewer): show chips while
// the widget's container has focus
var ae = document.activeElement;
for (var es of elementShortcuts) {
if (ae && es.div.contains(ae))
shortcuts = shortcuts.concat(es.fn());
}
exports.shortcutBar.setShortcuts(shortcuts.filter((s) => !isBrowserEaten(s.key)));
}
var elementShortcuts = [];
function registerElementShortcuts(div, fn) {
elementShortcuts.push({ div, fn });
}
function unregisterElementShortcuts(div) {
elementShortcuts = elementShortcuts.filter((es) => es.div !== div);
}
// combos the browser/OS reserves and won't let a page intercept:
// hide them from the bar rather than advertise dead keys
// (the underlying bindings stay in place for platforms where they work)
function isBrowserEaten(key) {
var k = key.toLowerCase();
if (!(0, keys_1.isMacOS)()) {
// Chrome/Firefox devtools on Windows/Linux: Ctrl+Shift+I/J/K
if (k == 'mod+shift+i' || k == 'mod+shift+j' || k == 'mod+shift+k')
return true;
// GNOME desktop: terminal / lock screen
if (k == 'ctrl+alt+t' || k == 'ctrl+alt+l')
return true;
}
return false;
}
//# sourceMappingURL=shortcutbar.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"shortcutbar.js","sourceRoot":"","sources":["../../../src/ide/shortcutbar.ts"],"names":[],"mappings":"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 truncated
+45 -4
View File
@@ -2,15 +2,44 @@
/// TOOLBAR
Object.defineProperty(exports, "__esModule", { value: true });
exports.Toolbar = void 0;
const shortcutbar_1 = require("./shortcutbar");
const keys_1 = require("./keys");
// Lazy mousetrap require: mousetrap references `document` at module load time,
// which crashes in Node-based tests (window is polyfilled, document is not).
function getMousetrap() {
return require('mousetrap');
}
// Patch mousetrap's default stopCallback, which blocks ALL bound shortcuts
// when the event target is an input or contenteditable element -- which
// includes the CodeMirror editor. Allow combos with ctrl/alt/meta modifiers
// through so app commands keep working while typing in the editor.
// (AltGraph = AltGr on international keyboards: treat as character input.)
function patchMousetrap(Mousetrap) {
if (Mousetrap._8bwPatched)
return Mousetrap;
var origStop = Mousetrap.stopCallback;
Mousetrap.stopCallback = function (e, element, combo, sequence) {
if (e && (e.ctrlKey || e.altKey || e.metaKey)) {
if (e.getModifierState && e.getModifierState('AltGraph')) {
return origStop.call(this, e, element, combo, sequence);
}
return false;
}
return origStop.call(this, e, element, combo, sequence);
};
Mousetrap._8bwPatched = true;
return Mousetrap;
}
class Toolbar {
constructor(parentDiv, focusDiv) {
this.boundkeys = [];
const Mousetrap = getMousetrap();
const Mousetrap = patchMousetrap(getMousetrap());
// article-compliant bindings (match on KeyboardEvent.key) go through
// KeyBinder; non-compliant specs (punctuation, alt, shift+digit) fall
// back to mousetrap's positional matching
this.focusDiv = focusDiv;
this.keybinder = new keys_1.KeyBinder();
this.keybinder.attach();
this.mousetrap = focusDiv ? new Mousetrap(focusDiv) : Mousetrap;
this.span = $(document.createElement("span")).addClass("btn_toolbar");
parentDiv.appendChild(this.span[0]);
@@ -21,6 +50,11 @@ class Toolbar {
this.span.remove();
this.span = null;
}
if (this.keybinder) {
this.keybinder.detach();
this.keybinder.unbindAll();
this.keybinder = null;
}
if (this.mousetrap) {
for (var key of this.boundkeys) {
this.mousetrap.unbind(key);
@@ -39,13 +73,20 @@ class Toolbar {
icon = '<span class="glyphicon ' + icon + '" aria-hidden="true"></span>';
}
btn.html(icon);
btn.prop("title", key ? (alttext + " (" + key + ")") : alttext);
btn.prop("title", key ? (alttext + " (" + (0, shortcutbar_1.formatKey)(key) + ")") : alttext);
btn.click(fn);
this.grp.append(btn).show();
}
if (key) {
this.mousetrap.bind(key, fn);
this.boundkeys.push(key);
if (!this.focusDiv && (0, keys_1.parseKeyBinding)(key)) {
// layout-safe global binding: fires even when the editor has focus
this.keybinder.bind(key, fn);
}
else {
// legacy fallback: mousetrap (positional matching, input-scoped)
this.mousetrap.bind(key, (e, combo) => { fn(e, combo); return false; });
this.boundkeys.push(key);
}
}
return btn;
}
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"toolbar.js","sourceRoot":"","sources":["../../../src/ide/toolbar.ts"],"names":[],"mappings":";AACA,WAAW;;;AAEX,+EAA+E;AAC/E,6EAA6E;AAC7E,SAAS,YAAY;IACjB,OAAO,OAAO,CAAC,WAAW,CAAC,CAAC;AAChC,CAAC;AAED,MAAa,OAAO;IAMhB,YAAY,SAAqB,EAAE,QAAoB;QAFvD,cAAS,GAAG,EAAE,CAAC;QAGb,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;QACjC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAChE,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QACtE,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IACD,OAAO;QACL,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACnB,CAAC;QACD,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,KAAK,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBAC/B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7B,CAAC;YACD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACxB,CAAC;IACH,CAAC;IACD,QAAQ;QACN,OAAO,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;IACvG,CAAC;IACD,GAAG,CAAC,GAAU,EAAE,OAAc,EAAE,IAAW,EAAE,EAAoB;QAC/D,IAAI,GAAG,GAAG,IAAI,CAAC;QACf,IAAI,IAAI,EAAE,CAAC;YACT,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC1D,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;gBACjC,IAAI,GAAG,yBAAyB,GAAG,IAAI,GAAG,8BAA8B,CAAC;YAC3E,CAAC;YACD,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACf,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,GAAC,IAAI,GAAC,GAAG,GAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAC1D,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACd,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QAC9B,CAAC;QACD,IAAI,GAAG,EAAE,CAAC;YACR,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAC7B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;CAEF;AA/CH,0BA+CG"}
{"version":3,"file":"toolbar.js","sourceRoot":"","sources":["../../../src/ide/toolbar.ts"],"names":[],"mappings":"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"}
+165 -13
View File
@@ -71,6 +71,7 @@ const services_1 = require("./services");
const shareexport_1 = require("./shareexport");
const sync_1 = require("./sync");
const toolbar_1 = require("./toolbar");
const shortcutbar_1 = require("./shortcutbar");
const searchview_1 = require("./search/searchview");
const projectsource_1 = require("./search/projectsource");
const asseteditor_1 = require("./views/asseteditor");
@@ -90,6 +91,7 @@ var toolbar = $("#controls_top");
var uitoolbar;
var stateRecorder;
var userPaused; // did user explicitly pause?
var debugSessionActive; // has the user entered a debug session? (drives debug shortcut chips)
var current_output; // current ROM (or other object)
var current_preset; // current preset object (if selected)
var store; // persistent store
@@ -937,6 +939,12 @@ function showErrorAlert(errors, runtime) {
}
$("#error_alert").show();
errorWasRuntime = runtime;
// status chip: click jumps to first error that has an openable path
var jumpErr = errors.find((err) => err.path != null);
var fn;
if (jumpErr && exports.projectWindows.isWindow(jumpErr.path == getCurrentMainFilename() ? exports.current_project.mainPath : jumpErr.path)) {
fn = () => { jumpToError(jumpErr); };
}
}
function showExceptionAsError(err, msg) {
if (msg != null) {
@@ -1062,6 +1070,118 @@ function showDebugInfo(state) {
function setDebugButtonState(btnid, btnstate) {
$("#debug_bar, #run_bar").find("button").removeClass("btn_active").removeClass("btn_stopped");
$("#dbg_" + btnid).addClass("btn_" + btnstate);
(0, shortcutbar_1.refreshShortcutBar)();
}
// context-sensitive shortcut providers for the bottom bar
function jumpToError(err) {
var path = err.path == getCurrentMainFilename() ? exports.current_project.mainPath : err.path;
if (!exports.projectWindows.isWindow(path))
return;
var wnd = exports.projectWindows.createOrShow(path);
if (wnd instanceof editors_1.SourceEditor) {
wnd.navigateToLine(err.line);
}
}
// go-to-address (mod+shift+g): works while the Disassembly, Memory Browser,
// or VRAM Browser is the active view; accepts a hex address ("$1234", "0x1234",
// "1234") or a symbol name ("main")
function getGoToAddressView() {
var wnd = exports.projectWindows.getActive();
if (wnd instanceof editors_1.DisassemblerView || wnd instanceof debugviews_1.MemoryView)
return wnd;
return null;
}
function parseGoToTarget(s) {
s = s.trim();
if (!s)
return -1;
// symbol name first (so symbols like "add" aren't parsed as hex)
var symmap = exports.platform.debugSymbols && exports.platform.debugSymbols.symbolmap;
if (symmap && s in symmap)
return symmap[s];
var ls = s.toLowerCase();
if (symmap) {
for (var sym in symmap) {
if (sym.toLowerCase() === ls)
return symmap[sym];
}
}
// hex address (bare digits are parsed as hex, like the listings)
if (/^(0x|\$)[0-9a-f]+$/i.test(s))
return parseInt(s.replace(/^(0x|\$)/i, ''), 16);
if (/^[0-9a-f]+$/i.test(s))
return parseInt(s, 16);
return -1;
}
function promptGoToAddress() {
var wnd = getGoToAddressView();
if (!wnd)
return false;
var cur = wnd.getCursorPC ? wnd.getCursorPC() : -1;
bootbox.prompt({
title: "Go to Address",
placeholder: "address in hex",
value: cur >= 0 ? (0, util_1.hex)(cur, 4) : "",
callback: (result) => {
if (!result)
return; // canceled or empty
var addr = parseGoToTarget(result);
if (isNaN(addr) || addr < 0) {
(0, dialogs_1.alertError)("Can't find address or symbol: " + DOMPurify.sanitize(result));
return;
}
wnd.goToAddress(addr);
}
});
return true;
}
function getGlobalShortcuts() {
var shortcuts = [];
if (exports.platform && isPlatformReady()) {
// debug shortcuts appear only once a debug session has started
if (exports.platform.setupDebug && exports.platform.runEval) // TODO??
shortcuts.push({ key: 'mod+shift+d', label: 'Reset & Debug', fn: resetAndDebug });
if (!debugSessionActive) {
shortcuts.push({ key: 'mod+shift+r', label: 'Reset & Run', fn: resetAndRun });
shortcuts.push({ key: 'mod+shift+f', label: 'Search', fn: searchview_1.openSearchDialog });
}
if (exports.platform.isRunning && exports.platform.isRunning()) {
// in a debug session but emulator running: just Pause
shortcuts.push({ key: 'mod+shift+h', label: 'Pause', fn: pause });
}
else if (exports.platform.isRunning && !exports.platform.isRunning() && !getGoToAddressView()) {
// mod+shift+g becomes "Go To Address" while a debug tool view is active
shortcuts.push({ key: 'mod+shift+g', label: 'Resume', fn: resume });
}
if (getGoToAddressView()) {
shortcuts.push({ key: 'mod+shift+g', label: 'Go To Address', fn: promptGoToAddress });
}
}
return shortcuts;
}
function getDebugShortcuts() {
var shortcuts = [];
if (!debugSessionActive || !exports.platform || !isPlatformReady())
return shortcuts;
var running = exports.platform.isRunning && exports.platform.isRunning();
if (exports.platform.step)
shortcuts.push({ key: 'mod+shift+l', label: 'Step', fn: singleStep });
if (exports.platform.stepOver)
shortcuts.push({ key: 'mod+shift+k', label: 'Step Over', fn: stepOver });
if (exports.platform.runUntilReturn)
shortcuts.push({ key: 'mod+shift+i', label: 'Step Out', fn: runUntilReturn });
if (exports.platform.stepBack)
shortcuts.push({ key: 'mod+shift+j', label: 'Step Back', fn: runStepBackwards });
if (exports.platform.runToVsync)
shortcuts.push({ key: 'mod+shift+x', label: 'Next Frame', fn: singleFrameStep });
if (exports.platform.restartAtPC)
shortcuts.push({ key: 'mod+shift+a', label: 'Restart at Cursor', fn: restartAtCursor });
// TODO: check to see if line has debug info
if ((exports.platform.runEval || exports.platform.runToPC) && !exports.platform_id.startsWith('verilog'))
shortcuts.push({ key: 'mod+shift+y', label: 'Run To Line', fn: runToCursor });
// session-level actions are always available once debugging
//shortcuts.push({ key: 'mod+shift+e', label: recorderActive ? 'Stop Recording' : 'Record', fn: _toggleRecording });
return shortcuts;
}
function isPlatformReady() {
return exports.platform && current_output != null;
@@ -1120,6 +1240,7 @@ function openRelevantListing(state) {
exports.projectWindows.createOrShow(bestid, true);
}
function uiDebugCallback(state) {
debugSessionActive = true;
exports.lastDebugState = state;
showDebugInfo(state);
openRelevantListing(state);
@@ -1139,12 +1260,15 @@ function setupDebugCallback(btnid) {
function setupBreakpoint(btnid) {
if (!checkRunReady())
return;
debugSessionActive = true;
_disableRecording();
setupDebugCallback(btnid);
if (btnid)
setDebugButtonState(btnid, "active");
(0, shortcutbar_1.refreshShortcutBar)();
}
function _pause() {
debugSessionActive = true;
if (exports.platform && exports.platform.isRunning()) {
exports.platform.pause();
console.log("Paused");
@@ -1337,9 +1461,11 @@ function resetPlatform() {
function resetAndRun() {
if (!checkRunReady())
return;
debugSessionActive = false; // plain run: hide debug shortcut chips
clearBreakpoint();
resetPlatform();
_resume();
(0, shortcutbar_1.refreshShortcutBar)();
}
function resetAndDebug() {
if (!checkRunReady())
@@ -1477,6 +1603,7 @@ function _toggleRecording() {
else {
_enableRecording();
}
(0, shortcutbar_1.refreshShortcutBar)();
}
function _toggleTraceLines() {
var enabled = !editors_1.SourceEditor.tracingEnabled;
@@ -1559,38 +1686,44 @@ function setupDebugControls() {
// create toolbar buttons
uitoolbar = new toolbar_1.Toolbar($("#toolbar")[0], null);
uitoolbar.grp.prop('id', 'run_bar');
uitoolbar.add('ctrl+alt+r', 'Reset', 'glyphicon-refresh', resetAndRun).prop('id', 'dbg_reset');
uitoolbar.add('ctrl+alt+,', 'Pause', 'glyphicon-pause', pause).prop('id', 'dbg_pause');
uitoolbar.add('ctrl+alt+.', 'Resume', 'glyphicon-play', resume).prop('id', 'dbg_go');
uitoolbar.add('mod+shift+r', 'Reset', 'glyphicon-refresh', resetAndRun).prop('id', 'dbg_reset');
uitoolbar.add('mod+shift+h', 'Pause', 'glyphicon-pause', pause).prop('id', 'dbg_pause');
// bound before Resume so it takes priority in the debug tool views;
// falls through to Resume everywhere else
uitoolbar.add('mod+shift+g', 'Go To Address', '', (e) => {
if (!promptGoToAddress())
resume();
});
uitoolbar.add('mod+shift+g', 'Resume', 'glyphicon-play', resume).prop('id', 'dbg_go');
if (exports.platform.restartAtPC) {
uitoolbar.add('ctrl+alt+/', 'Restart at Cursor', 'glyphicon-play-circle', restartAtCursor).prop('id', 'dbg_restartatline');
uitoolbar.add('mod+shift+a', 'Restart at Cursor', 'glyphicon-play-circle', restartAtCursor).prop('id', 'dbg_restartatline');
}
uitoolbar.newGroup();
uitoolbar.grp.prop('id', 'debug_bar');
if (exports.platform.runEval) {
uitoolbar.add('ctrl+alt+e', 'Reset and Debug', 'glyphicon-fast-backward', resetAndDebug).prop('id', 'dbg_restart');
uitoolbar.add('mod+shift+d', 'Reset and Debug', 'glyphicon-fast-backward', resetAndDebug).prop('id', 'dbg_restart');
}
if (exports.platform.stepBack) {
uitoolbar.add('ctrl+alt+b', 'Step Backwards', 'glyphicon-step-backward', runStepBackwards).prop('id', 'dbg_stepback');
uitoolbar.add('mod+shift+j', 'Step Backwards', 'glyphicon-step-backward', runStepBackwards).prop('id', 'dbg_stepback');
}
if (exports.platform.step) {
uitoolbar.add('ctrl+alt+s', 'Single Step', 'glyphicon-step-forward', singleStep).prop('id', 'dbg_step');
uitoolbar.add('mod+shift+l', 'Single Step', 'glyphicon-step-forward', singleStep).prop('id', 'dbg_step');
}
if (exports.platform.stepOver) {
uitoolbar.add('ctrl+alt+t', 'Step Over', 'glyphicon-hand-right', stepOver).prop('id', 'dbg_stepover');
uitoolbar.add('mod+shift+k', 'Step Over', 'glyphicon-hand-right', stepOver).prop('id', 'dbg_stepover');
}
if (exports.platform.runUntilReturn) {
uitoolbar.add('ctrl+alt+o', 'Step Out of Subroutine', 'glyphicon-hand-up', runUntilReturn).prop('id', 'dbg_stepout');
uitoolbar.add('mod+shift+i', 'Step Out of Subroutine', 'glyphicon-hand-up', runUntilReturn).prop('id', 'dbg_stepout');
}
if (exports.platform.runToVsync) {
uitoolbar.add('ctrl+alt+n', 'Next Frame/Interrupt', 'glyphicon-forward', singleFrameStep).prop('id', 'dbg_tovsync');
uitoolbar.add('mod+shift+x', 'Next Frame/Interrupt', 'glyphicon-forward', singleFrameStep).prop('id', 'dbg_tovsync');
}
if ((exports.platform.runEval || exports.platform.runToPC) && !exports.platform_id.startsWith('verilog')) {
uitoolbar.add('ctrl+alt+l', 'Run To Line', 'glyphicon-save', runToCursor).prop('id', 'dbg_toline');
uitoolbar.add('mod+shift+y', 'Run To Line', 'glyphicon-save', runToCursor).prop('id', 'dbg_toline');
}
uitoolbar.newGroup();
uitoolbar.grp.prop('id', 'xtra_bar');
uitoolbar.add('shift+ctrl+/', 'Search', 'glyphicon-search', searchview_1.openSearchDialog).prop('id', 'dbg_search');
uitoolbar.add('mod+shift+f', 'Search', 'glyphicon-search', searchview_1.openSearchDialog).prop('id', 'dbg_search');
// add menu clicks
$(".dropdown-menu").collapse({ toggle: false });
$("#item_new_file").click(_createNewFile);
@@ -1832,7 +1965,7 @@ function setupReplaySlider() {
$("#clock_back").click(() => { setClockTo(parseInt(clockslider.val().toString()) - 1); });
$("#clock_fwd").click(() => { setClockTo(parseInt(clockslider.val().toString()) + 1); });
$("#replay_bar").show();
uitoolbar.add('ctrl+alt+0', 'Start/Stop Replay Recording', 'glyphicon-record', _toggleRecording).prop('id', 'dbg_record');
uitoolbar.add('mod+shift+e', 'Start/Stop Replay Recording', 'glyphicon-record', _toggleRecording).prop('id', 'dbg_record');
}
function isLandscape() {
try {
@@ -2130,6 +2263,25 @@ async function startPlatform() {
installHashChangeHandler();
exports.platform.sourceFileFetch = (path) => exports.current_project.filedata[path];
setupDebugControls();
// context-sensitive shortcuts/status bar (hidden by CSS on small windows)
if (!baseviews_1.isMobileDevice && $("#shortcuts_bar").length) {
(0, shortcutbar_1.initShortcutBar)($("#shortcuts_bar")[0]);
(0, shortcutbar_1.setGlobalShortcutsFn)(getGlobalShortcuts);
(0, shortcutbar_1.setViewShortcutsFn)(() => {
// view-specific keys (CodeMirror bindings) only apply while that view has
// focus; e.g. clicking the verilog waveform keeps the editor active but blurs it
var div = exports.projectWindows.id2div[exports.projectWindows.activeid];
var viewHasFocus = div && document.activeElement && div.contains(document.activeElement);
var wnd = exports.projectWindows.getActive();
var shortcuts = viewHasFocus && wnd && wnd.getShortcuts ? wnd.getShortcuts() : [];
// debug chips ride along with the view zone (they're gated on debugSessionActive)
return [...getDebugShortcuts(), ...shortcuts];
});
// focus changes can invalidate view-specific shortcuts
$(document).on('focusin focusout', () => (0, shortcutbar_1.refreshShortcutBar)());
(0, shortcutbar_1.refreshShortcutBar)();
(0, shortcutbar_1.setBarVisible)((0, settings_1.loadSettings)().showStatusBar);
}
addPageFocusHandlers();
showInstructions();
if (isEmbed) {
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../../../src/ide/ui.ts"],"names":[],"mappings":"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 truncated
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../../../src/ide/ui.ts"],"names":[],"mappings":"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 truncated
+15 -1
View File
@@ -47,7 +47,19 @@ function getMousetrap() {
class AssetEditorView {
createDiv(parent) {
this.maindiv = (0, baseviews_1.newDiv)(parent, "vertical-scroll");
return this.maindiv[0];
// focusable so the shortcut bar can tell when this view has focus
// (default focus still applies to inner inputs, refining this)
var div = this.maindiv[0];
div.setAttribute('tabindex', '-1');
div.addEventListener('mousedown', () => { div.focus(); });
return div;
}
// chips for the global asset undo/redo (bound via mousetrap in setVisible)
getShortcuts() {
return [
{ key: 'mod+z', label: 'Undo', fn: () => ui_1.projectWindows.undoStep() },
{ key: 'mod+shift+z', label: 'Redo', fn: () => ui_1.projectWindows.redoStep() },
];
}
clearAssets() {
this.rootnodes = [];
@@ -504,6 +516,8 @@ class AssetEditorView {
Mousetrap.bind('mod+z', (e) => { ui_1.projectWindows.undoStep(); return false; });
Mousetrap.bind('mod+shift+z', (e) => { ui_1.projectWindows.redoStep(); return false; });
}
// focus so the shortcut bar's view chips (undo/redo) show
this.maindiv && this.maindiv[0] && this.maindiv[0].focus();
}
else {
const Mousetrap = getMousetrap();
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"asseteditor.js","sourceRoot":"","sources":["../../../../src/ide/views/asseteditor.ts"],"names":[],"mappings":"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 truncated
{"version":3,"file":"asseteditor.js","sourceRoot":"","sources":["../../../../src/ide/views/asseteditor.ts"],"names":[],"mappings":"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 truncated
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"baseviews.js","sourceRoot":"","sources":["../../../../src/ide/views/baseviews.ts"],"names":[],"mappings":";;;AAiCA,wBAKC;AAVA,CAAC;AAEF,6GAA6G;AAClG,QAAA,cAAc,GAAG,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,oCAAoC,CAAC,CAAC,OAAO,CAAC;AAEjH,SAAgB,MAAM,CAAC,MAAO,EAAE,GAAY;IACxC,IAAI,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3C,IAAI,MAAM;QAAE,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;IAChC,IAAI,GAAG;QAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC3B,OAAO,GAAG,CAAC;AACf,CAAC"}
{"version":3,"file":"baseviews.js","sourceRoot":"","sources":["../../../../src/ide/views/baseviews.ts"],"names":[],"mappings":";;;AAmCA,wBAKC;AAVA,CAAC;AAEF,6GAA6G;AAClG,QAAA,cAAc,GAAG,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,oCAAoC,CAAC,CAAC,OAAO,CAAC;AAEjH,SAAgB,MAAM,CAAC,MAAO,EAAE,GAAY;IACxC,IAAI,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3C,IAAI,MAAM;QAAE,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;IAChC,IAAI,GAAG;QAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC3B,OAAO,GAAG,CAAC;AACf,CAAC"}
+27
View File
@@ -23,6 +23,7 @@ class MemoryView {
this.recreateOnResize = true;
this.hibits = 0; // a hack to make it work with 32-bit addresses
this.totalRows = 0x1400; // a little more room in case we split lots of lines
this.gotoRow = -1; // row highlighted by the Go To Address prompt
}
createDiv(parent) {
var div = document.createElement('div');
@@ -45,6 +46,8 @@ class MemoryView {
if (dlr)
linediv.classList.add('seg_' + this.getMemorySegment(this.dumplines[row].a | this.hibits));
}
if (row == this.gotoRow)
linediv.classList.add('goto_line');
linediv.appendChild(document.createTextNode(s));
return linediv;
}
@@ -61,6 +64,29 @@ class MemoryView {
this.memorylist.scrollToItem(this.findMemoryWindowLine(addr & 0xffff));
}
}
// jump to an address (or symbol), via the Go To Address prompt;
// centers the target row in the viewport and highlights it
goToAddress(addr) {
this.hibits = addr & 0xffff0000;
var dump = this.getDumpLines();
var row;
if (dump && dump.length) {
row = this.findMemoryWindowLine(addr & 0xffff);
}
else {
// no symbol map (e.g. VRAM): rows are raw 16-byte chunks
row = (addr & 0xffff) >> 4;
}
if (row === undefined)
return;
this.gotoRow = row;
if (this.memorylist) {
var c = this.memorylist.container;
var y = row * this.memorylist.itemHeight - (c.clientHeight - this.memorylist.itemHeight) / 2;
c.scrollTop = Math.max(0, y);
}
this.tick();
}
refresh() {
this.dumplines = null;
this.tick();
@@ -74,6 +100,7 @@ class MemoryView {
var newtext = this.getMemoryLineAt(row);
if (oldtext != newtext)
div.text(newtext);
div.toggleClass('goto_line', row == this.gotoRow);
});
}
}
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"debugviews.js","sourceRoot":"","sources":["../../../../src/ide/views/debugviews.ts"],"names":[],"mappings":"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 truncated
{"version":3,"file":"debugviews.js","sourceRoot":"","sources":["../../../../src/ide/views/debugviews.ts"],"names":[],"mappings":"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 truncated
+58 -5
View File
@@ -22,6 +22,13 @@ const mbo_1 = require("../../themes/mbo");
const settings_1 = require("../settings");
const tabs_1 = require("./tabs");
const ui_1 = require("../ui");
const keys_1 = require("../keys");
// Free the mod+shift+<letter> keys the IDE binds (see IDE_RESERVED_KEYS) so its
// debug shortcuts work while an editor is focused. CodeMirror claims two of
// them today: deleteLine ("Shift-Mod-k") and selectSelectionMatches
// ("Mod-Shift-l"); deleteLine keeps a home on Mod-Shift-Backspace.
const ideDefaultKeymap = [...(0, keys_1.stripCMKeymap)(commands_1.defaultKeymap, keys_1.IDE_RESERVED_KEYS), { key: "Mod-Shift-Backspace", run: commands_1.deleteLine }];
const ideSearchKeymap = (0, keys_1.stripCMKeymap)(search_1.searchKeymap, keys_1.IDE_RESERVED_KEYS);
const assetdecorations_1 = require("./assetdecorations");
const includedecorations_1 = require("./includedecorations");
const baseviews_1 = require("./baseviews");
@@ -118,6 +125,25 @@ class SourceEditor {
this.stopTracing();
}
}
// a few of the CodeMirror bindings available while editing;
// chips are clickable and run the command on this editor
getShortcuts() {
if (!this.editor)
return [];
var ed = this.editor;
var mk = (key, label, cmd) => ({
key, label, fn: () => { cmd(ed); ed.focus(); }
});
return [
mk('mod+f', 'Find', search_1.openSearchPanel),
mk('mod+g', 'Find Next', search_1.findNext),
mk('mod+d', 'Next Occurrence', search_1.selectNextOccurrence),
mk('mod+shift+backspace', 'Delete Line', commands_1.deleteLine),
mk('mod+/', 'Toggle Comment', commands_1.toggleComment),
mk('mod+z', 'Undo', commands_1.undo),
mk('mod+shift+z', 'Redo', commands_1.redo),
];
}
startTracing() {
if (!this.probe && ui_1.platform.startProbing) {
this.probe = ui_1.platform.startProbing();
@@ -184,7 +210,7 @@ class SourceEditor {
...(0, settings_1.settingsExtensions)((0, settings_1.loadSettings)()),
// https://codemirror.net/docs/ref/#commands.defaultKeymap includes
// https://codemirror.net/docs/ref/#commands.standardKeymap
view_1.keymap.of(commands_1.defaultKeymap),
view_1.keymap.of(ideDefaultKeymap),
lineNums ? (0, view_1.lineNumbers)() : [],
// Undo history.
(0, commands_1.history)(),
@@ -203,7 +229,7 @@ class SourceEditor {
(0, view_1.highlightActiveLineGutter)(),
(0, search_1.highlightSelectionMatches)(),
(0, search_1.search)({ top: true }),
view_1.keymap.of(search_1.searchKeymap),
view_1.keymap.of(ideSearchKeymap),
// lintGutter(),
// autocompletion(),
parser || [],
@@ -689,9 +715,9 @@ class DisassemblerView {
});
}
// TODO: too many globals
refresh(moveCursor) {
refresh(moveCursor, centerAddr) {
let state = ui_1.lastDebugState || ui_1.platform.saveState(); // TODO?
let pc = state.c ? state.c.PC : 0;
let pc = centerAddr !== undefined ? centerAddr : (state.c ? state.c.PC : 0);
let curline = 0;
let selline = 0;
let addr2symbol = (ui_1.platform.debugSymbols && ui_1.platform.debugSymbols.addr2symbol) || {};
@@ -760,6 +786,33 @@ class DisassemblerView {
});
}
}
// jump to an address (or symbol), via the Go To Address prompt
goToAddress(addr) {
addr |= 0;
if (!this.findAndSelectAddress(addr)) {
// re-center the disassembly window on this address
this.refresh(false, addr);
this.findAndSelectAddress(addr);
}
this.disasmview.focus();
}
findAndSelectAddress(addr) {
const h = (0, util_1.hex)(addr, 4); // every line starts with the address + tab
const doc = this.disasmview.state.doc;
for (let i = 1; i <= doc.lines; i++) {
const line = doc.line(i);
if (line.text.startsWith(h + "\t")) {
// select the address so the line stays highlighted; scrollIntoView
// centers it in the viewport
this.disasmview.dispatch({
selection: { anchor: line.from, head: line.from + h.length },
effects: view_1.EditorView.scrollIntoView(line.from, { y: "center" }),
});
return true;
}
}
return false;
}
getCursorPC() {
const pos = this.disasmview.state.selection.main.head;
const lineNum = this.disasmview.state.doc.lineAt(pos).number;
@@ -910,7 +963,7 @@ class HeaderView {
(0, view_1.highlightActiveLine)(),
(0, search_1.highlightSelectionMatches)(),
(0, search_1.search)({ top: true }),
view_1.keymap.of(search_1.searchKeymap),
view_1.keymap.of(ideSearchKeymap),
this.languageCompartment.of(lang),
mbo_1.mbo,
editorTheme_1.editorTheme,
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"editors.js","sourceRoot":"","sources":["../../../../src/ide/views/editors.ts"],"names":[],"mappings":"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 truncated
{"version":3,"file":"editors.js","sourceRoot":"","sources":["../../../../src/ide/views/editors.ts"],"names":[],"mappings":"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 truncated
+20
View File
@@ -5,6 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
Object.defineProperty(exports, "__esModule", { value: true });
exports.WaveformView = void 0;
const toolbar_1 = require("./toolbar");
const shortcutbar_1 = require("./shortcutbar");
const vlist_1 = require("../common/vlist");
const dompurify_1 = __importDefault(require("dompurify"));
const BUILTIN_INPUT_PORTS = [
@@ -21,8 +22,27 @@ class WaveformView {
this.scrollbarWidth = 12;
this.parent = parent;
this.wfp = wfp;
// focusable container + chip registration so the shortcut bar can show
// this widget's keys while it has focus (the canvas itself can't take focus)
this.parent.setAttribute('tabindex', '-1');
this.parent.addEventListener('mousedown', () => { this.parent.focus(); });
(0, shortcutbar_1.registerElementShortcuts)(this.parent, () => this.getShortcuts());
this.recreate();
}
// chips for the widget's mousetrap-scoped toolbar bindings
getShortcuts() {
return [
{ key: '=', label: 'Zoom In', fn: () => this.setZoom(this.zoom * 2) },
{ key: '-', label: 'Zoom Out', fn: () => this.setZoom(this.zoom / 2) },
{ key: 'ctrl+shift+left', label: 'To Start', fn: () => { this.setSelTime(0); this.setOrgTime(0); } },
{ key: 'shift+left', label: 'Page Left', fn: () => this.setSelTime(this.tsel - this.clocksPerPage / 4) },
{ key: 'left', label: 'Left', fn: () => this.setSelTime(this.tsel - 1) },
{ key: 'right', label: 'Right', fn: () => this.setSelTime(this.tsel + 1) },
{ key: 'shift+right', label: 'Page Right', fn: () => this.setSelTime(this.tsel + this.clocksPerPage / 4) },
{ key: 'space', label: 'Go To Current', fn: () => { this.setOrgTime(this.tnow); this.setSelTime(this.tnow); } },
{ key: 'h', label: 'Hex/Dec', fn: () => { this.hexformat = !this.hexformat; this.refresh(); } },
];
}
recreate() {
clearTimeout(this.wtimer);
this.wtimer = setTimeout(() => {
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"waveform.js","sourceRoot":"","sources":["../../../src/ide/waveform.ts"],"names":[],"mappings":"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 truncated
{"version":3,"file":"waveform.js","sourceRoot":"","sources":["../../../src/ide/waveform.ts"],"names":[],"mappings":"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 truncated
+5
View File
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
exports.ProjectWindows = void 0;
const $ = require("jquery");
const util_1 = require("../common/util");
const shortcutbar_1 = require("./shortcutbar");
class ProjectWindows {
constructor(containerdiv, project) {
this.id2window = {};
@@ -45,11 +46,15 @@ class ProjectWindows {
this.activewnd && this.activewnd.setVisible && this.activewnd.setVisible(false);
this.activediv = div;
this.activewnd = wnd;
// set before showing: setVisible() may focus the view, whose focusin
// handler refreshes the shortcut bar against the new active view
this.activeid = id;
$(div).show();
this.refresh(true); // needed to tell asset editor 1st time running, but that's bad
this.refreshErrors();
wnd.setVisible && wnd.setVisible(true);
this.id2showfn[id] && this.id2showfn[id](id, wnd);
(0, shortcutbar_1.refreshShortcutBar)(); // active view changed -> update context-sensitive shortcuts
}
else if (moveCursor) {
this.refresh(moveCursor);
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"windows.js","sourceRoot":"","sources":["../../../src/ide/windows.ts"],"names":[],"mappings":"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 truncated
{"version":3,"file":"windows.js","sourceRoot":"","sources":["../../../src/ide/windows.ts"],"names":[],"mappings":"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 truncated
+1 -1
View File
@@ -1 +1 @@
{"root":["../../test/unit/testanalysis.ts","../../test/unit/testassembler.ts","../../test/unit/testassetscan.ts","../../test/unit/testbaseplatform.ts","../../test/unit/testbataribasic.ts","../../test/unit/testcommon.ts","../../test/unit/testcommon_ext.ts","../../test/unit/testdasm.ts","../../test/unit/testecs.ts","../../test/unit/testelfparser.ts","../../test/unit/testemu.ts","../../test/unit/testlibretro.ts","../../test/unit/testlinking.ts","../../test/unit/testpixelclipboard.ts","../../test/unit/testpresets.ts","../../test/unit/testsearchindex.ts","../../test/unit/testsearchsymbols.ts","../../test/unit/testsearchtoolchain.ts","../../test/unit/teststepover.ts","../../test/unit/teststorage.ts","../../test/unit/testtoolmeta.ts","../../test/unit/testtoolselect.ts","../../test/unit/testutil.ts","../../test/unit/testwasishim.ts","../../src/common/analysis.ts","../../src/common/audio.ts","../../src/common/baseplatform.ts","../../src/common/binutils.ts","../../src/common/devices.ts","../../src/common/emu.ts","../../src/common/gbpalette.ts","../../src/common/mameplatform.ts","../../src/common/probe.ts","../../src/common/recorder.ts","../../src/common/searchtypes.ts","../../src/common/teletype.ts","../../src/common/tokenizer.ts","../../src/common/toolmeta.ts","../../src/common/util.ts","../../src/common/vlist.ts","../../src/common/vtextscroller.ts","../../src/common/wasmplatform.ts","../../src/common/workertypes.ts","../../src/common/audio/CommodoreTape.ts","../../src/common/basic/compiler.ts","../../src/common/basic/fuzz.ts","../../src/common/basic/run.ts","../../src/common/basic/runtime.ts","../../src/common/cpu/6809.ts","../../src/common/cpu/ARM.ts","../../src/common/cpu/F8.ts","../../src/common/cpu/MOS6502.ts","../../src/common/cpu/SM83.ts","../../src/common/cpu/ZilogZ80.ts","../../src/common/cpu/disasm6502.ts","../../src/common/cpu/disasmF8.ts","../../src/common/cpu/disasmHuC6280.ts","../../src/common/cpu/disasmSM83.ts","../../src/common/cpu/disasmz80.ts","../../src/common/ecs/binpack.ts","../../src/common/ecs/compiler.ts","../../src/common/ecs/decoder.ts","../../src/common/ecs/ecs.ts","../../src/common/ecs/main.ts","../../src/common/hdl/fuzz.ts","../../src/common/hdl/hdlruntime.ts","../../src/common/hdl/hdltypes.ts","../../src/common/hdl/hdlwasm.ts","../../src/common/hdl/vxmlparser.ts","../../src/common/hdl/vxmltest.ts","../../src/common/symbols/doccomment.ts","../../src/common/symbols/index.ts","../../src/common/wasi/libretro.ts","../../src/common/wasi/wasishim.ts","../../src/ide/dialogs.ts","../../src/ide/embedui.ts","../../src/ide/pixeleditor.ts","../../src/ide/project.ts","../../src/ide/services.ts","../../src/ide/settings.ts","../../src/ide/shareexport.ts","../../src/ide/storage.ts","../../src/ide/sync.ts","../../src/ide/toolbar.ts","../../src/ide/ui.ts","../../src/ide/waveform.ts","../../src/ide/windows.ts","../../src/ide/search/docssource.ts","../../src/ide/search/projectsource.ts","../../src/ide/search/searchview.ts","../../src/ide/search/service.ts","../../src/ide/search/symbolindex.ts","../../src/ide/search/toolchainsource.ts","../../src/ide/search/types.ts","../../src/ide/views/assetdecorations.ts","../../src/ide/views/asseteditor.ts","../../src/ide/views/baseviews.ts","../../src/ide/views/debug.ts","../../src/ide/views/debugviews.ts","../../src/ide/views/editors.ts","../../src/ide/views/filters.ts","../../src/ide/views/gutter.ts","../../src/ide/views/includedecorations.ts","../../src/ide/views/tabs.ts","../../src/ide/views/traceviews.ts","../../src/ide/views/treeviews.ts","../../src/ide/views/visuals.ts","../../src/machine/apple2.ts","../../src/machine/arm32.ts","../../src/machine/astrocade.ts","../../src/machine/atari7800.ts","../../src/machine/atari8.ts","../../src/machine/c64.ts","../../src/machine/channelf.ts","../../src/machine/coleco.ts","../../src/machine/cpc.ts","../../src/machine/devel.ts","../../src/machine/exidy.ts","../../src/machine/galaxian.ts","../../src/machine/gb.ts","../../src/machine/kim1.ts","../../src/machine/mcr.ts","../../src/machine/msx.ts","../../src/machine/mw8080bw.ts","../../src/machine/pacman.ts","../../src/machine/sms.ts","../../src/machine/vdp_z80.ts","../../src/machine/vic20.ts","../../src/machine/vicdual.ts","../../src/machine/williams.ts","../../src/machine/zx.ts","../../src/machine/chips/antic.ts","../../src/machine/chips/gtia.ts","../../src/machine/chips/pokey.ts","../../src/machine/chips/tms9918a.ts","../../src/parser/lang-6502.ts","../../src/parser/lang-basic.ts","../../src/parser/lang-bataribasic.ts","../../src/parser/lang-dialog.ts","../../src/parser/lang-fastbasic.ts","../../src/parser/lang-inform6.ts","../../src/parser/lang-verilog.ts","../../src/parser/lang-wiz.ts","../../src/parser/lang-z80.ts","../../src/parser/registry.ts","../../src/parser/tokens-6502.ts","../../src/parser/tokens-6809.ts","../../src/parser/tokens-z80.ts","../../src/platform/_index.ts","../../src/platform/apple2.ts","../../src/platform/arm32.ts","../../src/platform/astrocade.ts","../.Line truncated
{"root":["../../test/unit/testanalysis.ts","../../test/unit/testassembler.ts","../../test/unit/testassetscan.ts","../../test/unit/testbaseplatform.ts","../../test/unit/testbataribasic.ts","../../test/unit/testcommon.ts","../../test/unit/testcommon_ext.ts","../../test/unit/testdasm.ts","../../test/unit/testecs.ts","../../test/unit/testelfparser.ts","../../test/unit/testemu.ts","../../test/unit/testkeys.ts","../../test/unit/testlibretro.ts","../../test/unit/testlinking.ts","../../test/unit/testpixelclipboard.ts","../../test/unit/testpresets.ts","../../test/unit/testsearchindex.ts","../../test/unit/testsearchsymbols.ts","../../test/unit/testsearchtoolchain.ts","../../test/unit/teststepover.ts","../../test/unit/teststorage.ts","../../test/unit/testtoolmeta.ts","../../test/unit/testtoolselect.ts","../../test/unit/testutil.ts","../../test/unit/testwasishim.ts","../../src/common/analysis.ts","../../src/common/audio.ts","../../src/common/baseplatform.ts","../../src/common/binutils.ts","../../src/common/devices.ts","../../src/common/emu.ts","../../src/common/gbpalette.ts","../../src/common/mameplatform.ts","../../src/common/probe.ts","../../src/common/recorder.ts","../../src/common/searchtypes.ts","../../src/common/teletype.ts","../../src/common/tokenizer.ts","../../src/common/toolmeta.ts","../../src/common/util.ts","../../src/common/vlist.ts","../../src/common/vtextscroller.ts","../../src/common/wasmplatform.ts","../../src/common/workertypes.ts","../../src/common/audio/CommodoreTape.ts","../../src/common/basic/compiler.ts","../../src/common/basic/fuzz.ts","../../src/common/basic/run.ts","../../src/common/basic/runtime.ts","../../src/common/cpu/6809.ts","../../src/common/cpu/ARM.ts","../../src/common/cpu/F8.ts","../../src/common/cpu/MOS6502.ts","../../src/common/cpu/SM83.ts","../../src/common/cpu/ZilogZ80.ts","../../src/common/cpu/disasm6502.ts","../../src/common/cpu/disasmF8.ts","../../src/common/cpu/disasmHuC6280.ts","../../src/common/cpu/disasmSM83.ts","../../src/common/cpu/disasmz80.ts","../../src/common/ecs/binpack.ts","../../src/common/ecs/compiler.ts","../../src/common/ecs/decoder.ts","../../src/common/ecs/ecs.ts","../../src/common/ecs/main.ts","../../src/common/hdl/fuzz.ts","../../src/common/hdl/hdlruntime.ts","../../src/common/hdl/hdltypes.ts","../../src/common/hdl/hdlwasm.ts","../../src/common/hdl/vxmlparser.ts","../../src/common/hdl/vxmltest.ts","../../src/common/symbols/doccomment.ts","../../src/common/symbols/index.ts","../../src/common/wasi/libretro.ts","../../src/common/wasi/wasishim.ts","../../src/ide/dialogs.ts","../../src/ide/embedui.ts","../../src/ide/keys.ts","../../src/ide/pixeleditor.ts","../../src/ide/project.ts","../../src/ide/services.ts","../../src/ide/settings.ts","../../src/ide/shareexport.ts","../../src/ide/shortcutbar.ts","../../src/ide/storage.ts","../../src/ide/sync.ts","../../src/ide/toolbar.ts","../../src/ide/ui.ts","../../src/ide/waveform.ts","../../src/ide/windows.ts","../../src/ide/search/docssource.ts","../../src/ide/search/projectsource.ts","../../src/ide/search/searchview.ts","../../src/ide/search/service.ts","../../src/ide/search/symbolindex.ts","../../src/ide/search/toolchainsource.ts","../../src/ide/search/types.ts","../../src/ide/views/assetdecorations.ts","../../src/ide/views/asseteditor.ts","../../src/ide/views/baseviews.ts","../../src/ide/views/debug.ts","../../src/ide/views/debugviews.ts","../../src/ide/views/editors.ts","../../src/ide/views/filters.ts","../../src/ide/views/gutter.ts","../../src/ide/views/includedecorations.ts","../../src/ide/views/tabs.ts","../../src/ide/views/traceviews.ts","../../src/ide/views/treeviews.ts","../../src/ide/views/visuals.ts","../../src/machine/apple2.ts","../../src/machine/arm32.ts","../../src/machine/astrocade.ts","../../src/machine/atari7800.ts","../../src/machine/atari8.ts","../../src/machine/c64.ts","../../src/machine/channelf.ts","../../src/machine/coleco.ts","../../src/machine/cpc.ts","../../src/machine/devel.ts","../../src/machine/exidy.ts","../../src/machine/galaxian.ts","../../src/machine/gb.ts","../../src/machine/kim1.ts","../../src/machine/mcr.ts","../../src/machine/msx.ts","../../src/machine/mw8080bw.ts","../../src/machine/pacman.ts","../../src/machine/sms.ts","../../src/machine/vdp_z80.ts","../../src/machine/vic20.ts","../../src/machine/vicdual.ts","../../src/machine/williams.ts","../../src/machine/zx.ts","../../src/machine/chips/antic.ts","../../src/machine/chips/gtia.ts","../../src/machine/chips/pokey.ts","../../src/machine/chips/tms9918a.ts","../../src/parser/lang-6502.ts","../../src/parser/lang-basic.ts","../../src/parser/lang-bataribasic.ts","../../src/parser/lang-dialog.ts","../../src/parser/lang-fastbasic.ts","../../src/parser/lang-inform6.ts","../../src/parser/lang-verilog.ts","../../src/parser/lang-wiz.ts","../../src/parser/lang-z80.ts","../../src/parser/registry.ts","../../src/parser/tokens-6502.ts","../../src/parser/tokens-6809.ts","../../src/parser/tokens-z80.ts","../../src/platform/_index.ts","../../src/platLine truncated
+128
View File
@@ -0,0 +1,128 @@
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
var ownKeys = function(o) {
ownKeys = Object.getOwnPropertyNames || function (o) {
var ar = [];
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
return ar;
};
return ownKeys(o);
};
return function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
__setModuleDefault(result, mod);
return result;
};
})();
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const assert_1 = __importDefault(require("assert"));
const mocha_1 = require("mocha");
const commands_1 = require("@codemirror/commands");
const search_1 = require("@codemirror/search");
const fs = __importStar(require("fs"));
const keys_1 = require("../../src/ide/keys");
function keyEvent(key, mods) {
var mod = !!mods.mod;
return {
key,
ctrlKey: mod && !(0, keys_1.isMacOS)(), metaKey: mod && (0, keys_1.isMacOS)(),
shiftKey: !!mods.shift, altKey: !!mods.alt
};
}
(0, mocha_1.describe)('parseKeyBinding', () => {
it('should parse mod+shift+letter', () => {
assert_1.default.deepStrictEqual((0, keys_1.parseKeyBinding)('mod+shift+k'), { mod: true, shift: true, key: 'k' });
assert_1.default.deepStrictEqual((0, keys_1.parseKeyBinding)('MOD+SHIFT+K'), { mod: true, shift: true, key: 'k' });
});
it('should map arrow aliases', () => {
assert_1.default.strictEqual((0, keys_1.parseKeyBinding)('mod+left').key, 'arrowleft');
});
it('should reject layout-dependent specs', () => {
assert_1.default.strictEqual((0, keys_1.parseKeyBinding)('mod+alt+k'), null); // alt is never bound
assert_1.default.strictEqual((0, keys_1.parseKeyBinding)('mod+shift+='), null); // shift mutates punctuation
assert_1.default.strictEqual((0, keys_1.parseKeyBinding)('mod+shift+1'), null); // ...and digits
});
});
(0, mocha_1.describe)('matchesKeyBinding', () => {
const b = (0, keys_1.parseKeyBinding)('mod+shift+k');
it('should match regardless of the reported case', () => {
assert_1.default.ok((0, keys_1.matchesKeyBinding)(b, keyEvent('K', { mod: true, shift: true })));
assert_1.default.ok((0, keys_1.matchesKeyBinding)(b, keyEvent('k', { mod: true, shift: true })));
});
it('should not match without the modifiers', () => {
assert_1.default.ok(!(0, keys_1.matchesKeyBinding)(b, keyEvent('k', { mod: true })));
assert_1.default.ok(!(0, keys_1.matchesKeyBinding)(b, keyEvent('k', { shift: true })));
assert_1.default.ok(!(0, keys_1.matchesKeyBinding)(b, keyEvent('k', { mod: true, shift: true, alt: true })));
});
});
(0, mocha_1.describe)('normalizeCMKeySpec', () => {
it('should ignore modifier order and case', () => {
// the bug this test exists for: CodeMirror binds deleteLine as
// "Shift-Mod-k", which an exact string match against "Mod-Shift-k" misses
assert_1.default.strictEqual((0, keys_1.normalizeCMKeySpec)('Shift-Mod-k'), (0, keys_1.normalizeCMKeySpec)('Mod-Shift-k'));
assert_1.default.strictEqual((0, keys_1.normalizeCMKeySpec)('Mod-Shift-K'), 'Mod-Shift-k');
assert_1.default.strictEqual((0, keys_1.normalizeCMKeySpec)('Cmd-Shift-k'), 'Mod-Shift-k');
});
it('should keep distinct keys distinct', () => {
assert_1.default.notStrictEqual((0, keys_1.normalizeCMKeySpec)('Mod-Shift-k'), (0, keys_1.normalizeCMKeySpec)('Mod-k'));
assert_1.default.notStrictEqual((0, keys_1.normalizeCMKeySpec)('Mod-Shift-k'), (0, keys_1.normalizeCMKeySpec)('Mod-Alt-k'));
});
it('should handle the minus key', () => {
assert_1.default.strictEqual((0, keys_1.normalizeCMKeySpec)('Mod--'), 'Mod--');
});
});
(0, mocha_1.describe)('stripCMKeymap', () => {
const keymaps = {
defaultKeymap: commands_1.defaultKeymap, searchKeymap: search_1.searchKeymap
};
for (const name of Object.keys(keymaps)) {
it(`should leave no IDE shortcut bound in ${name}`, () => {
const left = (0, keys_1.stripCMKeymap)(keymaps[name], keys_1.IDE_RESERVED_KEYS)
.map(keys_1.effectiveCMKeySpec)
.filter((s) => s && keys_1.IDE_RESERVED_KEYS.some((r) => (0, keys_1.normalizeCMKeySpec)(r) == (0, keys_1.normalizeCMKeySpec)(s)));
assert_1.default.deepStrictEqual(left, [], `${name} still binds ${left}`);
});
}
it('should actually remove the two known collisions', () => {
assert_1.default.strictEqual((0, keys_1.stripCMKeymap)(commands_1.defaultKeymap, keys_1.IDE_RESERVED_KEYS).length, commands_1.defaultKeymap.length - 1);
assert_1.default.strictEqual((0, keys_1.stripCMKeymap)(search_1.searchKeymap, keys_1.IDE_RESERVED_KEYS).length, search_1.searchKeymap.length - 1);
});
it('should not disturb bindings the IDE does not claim', () => {
// Mod-Shift-z (redo on mac) is not an IDE shortcut and must survive
assert_1.default.strictEqual((0, keys_1.stripCMKeymap)(commands_1.historyKeymap, keys_1.IDE_RESERVED_KEYS).length, commands_1.historyKeymap.length);
});
});
(0, mocha_1.describe)('IDE_RESERVED_KEYS', () => {
it('should cover every mod+shift shortcut ui.ts binds', () => {
const src = fs.readFileSync(__dirname + '/../../../src/ide/ui.ts', 'utf-8');
const bound = new Set((src.match(/'mod\+shift\+[a-z]'/g) || []).map((s) => s.replace(/'/g, '')));
assert_1.default.ok(bound.size > 0, 'found no shortcuts in ui.ts -- did the spelling change?');
const reserved = new Set(keys_1.IDE_RESERVED_KEYS.map(keys_1.normalizeCMKeySpec));
for (const key of bound) {
const spec = (0, keys_1.normalizeCMKeySpec)(key.replace(/\+/g, '-'));
assert_1.default.ok(reserved.has(spec), `ui.ts binds ${key}, missing from IDE_RESERVED_KEYS`);
}
});
});
//# sourceMappingURL=testkeys.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"testkeys.js","sourceRoot":"","sources":["../../../test/unit/testkeys.ts"],"names":[],"mappings":"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"}
+1 -1
View File
@@ -1 +1 @@
{"root":["../src/common/analysis.ts","../src/common/audio.ts","../src/common/baseplatform.ts","../src/common/binutils.ts","../src/common/devices.ts","../src/common/emu.ts","../src/common/gbpalette.ts","../src/common/mameplatform.ts","../src/common/probe.ts","../src/common/recorder.ts","../src/common/searchtypes.ts","../src/common/teletype.ts","../src/common/tokenizer.ts","../src/common/toolmeta.ts","../src/common/util.ts","../src/common/vlist.ts","../src/common/vtextscroller.ts","../src/common/wasmplatform.ts","../src/common/workertypes.ts","../src/common/audio/CommodoreTape.ts","../src/common/basic/compiler.ts","../src/common/basic/fuzz.ts","../src/common/basic/run.ts","../src/common/basic/runtime.ts","../src/common/cpu/6809.ts","../src/common/cpu/ARM.ts","../src/common/cpu/F8.ts","../src/common/cpu/MOS6502.ts","../src/common/cpu/SM83.ts","../src/common/cpu/ZilogZ80.ts","../src/common/cpu/disasm6502.ts","../src/common/cpu/disasmF8.ts","../src/common/cpu/disasmHuC6280.ts","../src/common/cpu/disasmSM83.ts","../src/common/cpu/disasmz80.ts","../src/common/ecs/binpack.ts","../src/common/ecs/compiler.ts","../src/common/ecs/decoder.ts","../src/common/ecs/ecs.ts","../src/common/ecs/main.ts","../src/common/hdl/fuzz.ts","../src/common/hdl/hdlruntime.ts","../src/common/hdl/hdltypes.ts","../src/common/hdl/hdlwasm.ts","../src/common/hdl/vxmlparser.ts","../src/common/hdl/vxmltest.ts","../src/common/symbols/doccomment.ts","../src/common/symbols/index.ts","../src/common/wasi/libretro.ts","../src/common/wasi/wasishim.ts","../src/ide/dialogs.ts","../src/ide/embedui.ts","../src/ide/pixeleditor.ts","../src/ide/project.ts","../src/ide/services.ts","../src/ide/settings.ts","../src/ide/shareexport.ts","../src/ide/storage.ts","../src/ide/sync.ts","../src/ide/toolbar.ts","../src/ide/ui.ts","../src/ide/waveform.ts","../src/ide/windows.ts","../src/ide/search/docssource.ts","../src/ide/search/projectsource.ts","../src/ide/search/searchview.ts","../src/ide/search/service.ts","../src/ide/search/symbolindex.ts","../src/ide/search/toolchainsource.ts","../src/ide/search/types.ts","../src/ide/views/assetdecorations.ts","../src/ide/views/asseteditor.ts","../src/ide/views/baseviews.ts","../src/ide/views/debug.ts","../src/ide/views/debugviews.ts","../src/ide/views/editors.ts","../src/ide/views/filters.ts","../src/ide/views/gutter.ts","../src/ide/views/includedecorations.ts","../src/ide/views/tabs.ts","../src/ide/views/traceviews.ts","../src/ide/views/treeviews.ts","../src/ide/views/visuals.ts","../src/machine/apple2.ts","../src/machine/arm32.ts","../src/machine/astrocade.ts","../src/machine/atari7800.ts","../src/machine/atari8.ts","../src/machine/c64.ts","../src/machine/channelf.ts","../src/machine/coleco.ts","../src/machine/cpc.ts","../src/machine/devel.ts","../src/machine/exidy.ts","../src/machine/galaxian.ts","../src/machine/gb.ts","../src/machine/kim1.ts","../src/machine/mcr.ts","../src/machine/msx.ts","../src/machine/mw8080bw.ts","../src/machine/pacman.ts","../src/machine/sms.ts","../src/machine/vdp_z80.ts","../src/machine/vic20.ts","../src/machine/vicdual.ts","../src/machine/williams.ts","../src/machine/zx.ts","../src/machine/chips/antic.ts","../src/machine/chips/gtia.ts","../src/machine/chips/pokey.ts","../src/machine/chips/tms9918a.ts","../src/parser/lang-6502.ts","../src/parser/lang-basic.ts","../src/parser/lang-bataribasic.ts","../src/parser/lang-dialog.ts","../src/parser/lang-fastbasic.ts","../src/parser/lang-inform6.ts","../src/parser/lang-verilog.ts","../src/parser/lang-wiz.ts","../src/parser/lang-z80.ts","../src/parser/registry.ts","../src/parser/tokens-6502.ts","../src/parser/tokens-6809.ts","../src/parser/tokens-z80.ts","../src/platform/_index.ts","../src/platform/apple2.ts","../src/platform/arm32.ts","../src/platform/astrocade.ts","../src/platform/atari7800.ts","../src/platform/atari8.ts","../src/platform/basic.ts","../src/platform/c64.ts","../src/platform/channelf.ts","../src/platform/coleco.ts","../src/platform/cpc.ts","../src/platform/devel.ts","../src/platform/exidy.ts","../src/platform/galaxian.ts","../src/platform/gb.ts","../src/platform/kim1.ts","../src/platform/mcr.ts","../src/platform/msx.ts","../src/platform/mw8080bw.ts","../src/platform/nes.ts","../src/platform/pacman.ts","../src/platform/pce.ts","../src/platform/sms.ts","../src/platform/sound_konami.ts","../src/platform/sound_williams.ts","../src/platform/vcs.ts","../src/platform/vector.ts","../src/platform/vectrex.ts","../src/platform/verilog.ts","../src/platform/vic20.ts","../src/platform/vicdual.ts","../src/platform/williams.ts","../src/platform/x86.ts","../src/platform/zmachine.ts","../src/platform/zx.ts","../src/themes/cobalt.ts","../src/themes/disassemblyTheme.ts","../src/themes/editorTheme.ts","../src/themes/mbo.ts","../src/tools/8bws.ts","../src/tools/buildpresets.ts","../src/tools/cliformat.ts","../src/tools/emutarget.ts","../src/tools/nodemock.ts","../src/tools/runscript.ts","../src/tools/sim6502.ts","../src/tools/termimage.ts","../src/tools/testlib.ts"Line truncated
{"root":["../src/common/analysis.ts","../src/common/audio.ts","../src/common/baseplatform.ts","../src/common/binutils.ts","../src/common/devices.ts","../src/common/emu.ts","../src/common/gbpalette.ts","../src/common/mameplatform.ts","../src/common/probe.ts","../src/common/recorder.ts","../src/common/searchtypes.ts","../src/common/teletype.ts","../src/common/tokenizer.ts","../src/common/toolmeta.ts","../src/common/util.ts","../src/common/vlist.ts","../src/common/vtextscroller.ts","../src/common/wasmplatform.ts","../src/common/workertypes.ts","../src/common/audio/CommodoreTape.ts","../src/common/basic/compiler.ts","../src/common/basic/fuzz.ts","../src/common/basic/run.ts","../src/common/basic/runtime.ts","../src/common/cpu/6809.ts","../src/common/cpu/ARM.ts","../src/common/cpu/F8.ts","../src/common/cpu/MOS6502.ts","../src/common/cpu/SM83.ts","../src/common/cpu/ZilogZ80.ts","../src/common/cpu/disasm6502.ts","../src/common/cpu/disasmF8.ts","../src/common/cpu/disasmHuC6280.ts","../src/common/cpu/disasmSM83.ts","../src/common/cpu/disasmz80.ts","../src/common/ecs/binpack.ts","../src/common/ecs/compiler.ts","../src/common/ecs/decoder.ts","../src/common/ecs/ecs.ts","../src/common/ecs/main.ts","../src/common/hdl/fuzz.ts","../src/common/hdl/hdlruntime.ts","../src/common/hdl/hdltypes.ts","../src/common/hdl/hdlwasm.ts","../src/common/hdl/vxmlparser.ts","../src/common/hdl/vxmltest.ts","../src/common/symbols/doccomment.ts","../src/common/symbols/index.ts","../src/common/wasi/libretro.ts","../src/common/wasi/wasishim.ts","../src/ide/dialogs.ts","../src/ide/embedui.ts","../src/ide/keys.ts","../src/ide/pixeleditor.ts","../src/ide/project.ts","../src/ide/services.ts","../src/ide/settings.ts","../src/ide/shareexport.ts","../src/ide/shortcutbar.ts","../src/ide/storage.ts","../src/ide/sync.ts","../src/ide/toolbar.ts","../src/ide/ui.ts","../src/ide/waveform.ts","../src/ide/windows.ts","../src/ide/search/docssource.ts","../src/ide/search/projectsource.ts","../src/ide/search/searchview.ts","../src/ide/search/service.ts","../src/ide/search/symbolindex.ts","../src/ide/search/toolchainsource.ts","../src/ide/search/types.ts","../src/ide/views/assetdecorations.ts","../src/ide/views/asseteditor.ts","../src/ide/views/baseviews.ts","../src/ide/views/debug.ts","../src/ide/views/debugviews.ts","../src/ide/views/editors.ts","../src/ide/views/filters.ts","../src/ide/views/gutter.ts","../src/ide/views/includedecorations.ts","../src/ide/views/tabs.ts","../src/ide/views/traceviews.ts","../src/ide/views/treeviews.ts","../src/ide/views/visuals.ts","../src/machine/apple2.ts","../src/machine/arm32.ts","../src/machine/astrocade.ts","../src/machine/atari7800.ts","../src/machine/atari8.ts","../src/machine/c64.ts","../src/machine/channelf.ts","../src/machine/coleco.ts","../src/machine/cpc.ts","../src/machine/devel.ts","../src/machine/exidy.ts","../src/machine/galaxian.ts","../src/machine/gb.ts","../src/machine/kim1.ts","../src/machine/mcr.ts","../src/machine/msx.ts","../src/machine/mw8080bw.ts","../src/machine/pacman.ts","../src/machine/sms.ts","../src/machine/vdp_z80.ts","../src/machine/vic20.ts","../src/machine/vicdual.ts","../src/machine/williams.ts","../src/machine/zx.ts","../src/machine/chips/antic.ts","../src/machine/chips/gtia.ts","../src/machine/chips/pokey.ts","../src/machine/chips/tms9918a.ts","../src/parser/lang-6502.ts","../src/parser/lang-basic.ts","../src/parser/lang-bataribasic.ts","../src/parser/lang-dialog.ts","../src/parser/lang-fastbasic.ts","../src/parser/lang-inform6.ts","../src/parser/lang-verilog.ts","../src/parser/lang-wiz.ts","../src/parser/lang-z80.ts","../src/parser/registry.ts","../src/parser/tokens-6502.ts","../src/parser/tokens-6809.ts","../src/parser/tokens-z80.ts","../src/platform/_index.ts","../src/platform/apple2.ts","../src/platform/arm32.ts","../src/platform/astrocade.ts","../src/platform/atari7800.ts","../src/platform/atari8.ts","../src/platform/basic.ts","../src/platform/c64.ts","../src/platform/channelf.ts","../src/platform/coleco.ts","../src/platform/cpc.ts","../src/platform/devel.ts","../src/platform/exidy.ts","../src/platform/galaxian.ts","../src/platform/gb.ts","../src/platform/kim1.ts","../src/platform/mcr.ts","../src/platform/msx.ts","../src/platform/mw8080bw.ts","../src/platform/nes.ts","../src/platform/pacman.ts","../src/platform/pce.ts","../src/platform/sms.ts","../src/platform/sound_konami.ts","../src/platform/sound_williams.ts","../src/platform/vcs.ts","../src/platform/vector.ts","../src/platform/vectrex.ts","../src/platform/verilog.ts","../src/platform/vic20.ts","../src/platform/vicdual.ts","../src/platform/williams.ts","../src/platform/x86.ts","../src/platform/zmachine.ts","../src/platform/zx.ts","../src/themes/cobalt.ts","../src/themes/disassemblyTheme.ts","../src/themes/editorTheme.ts","../src/themes/mbo.ts","../src/tools/8bws.ts","../src/tools/buildpresets.ts","../src/tools/cliformat.ts","../src/tools/emutarget.ts","../src/tools/nodemock.ts","../src/tools/runscript.ts","../src/tools/sim6502.ts","../Line truncated
+1 -1
View File
@@ -1,2 +1,2 @@
import{A,B,C,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z}from"./chunk-JFRBOCZW.js";import"./chunk-7GWCUXYG.js";import"./chunk-LNOKARBD.js";import"./chunk-A7SWO6EA.js";import"./chunk-4RN5ADZB.js";import"./chunk-CZ7OSHSE.js";import"./chunk-TYDI7JZQ.js";import"./chunk-KT7KMEQC.js";export{r as clearBreakpoint,f as current_project,B as emulationHalted,o as getCurrentEditorFilename,n as getCurrentMainFilename,k as getCurrentOutput,j as getCurrentProject,w as getPlatformAndRepo,i as getPlatformStore,A as getSaveState,z as getTestOutput,l as getWorkerParams,u as gotoNewLocation,t as haltEmulation,h as lastDebugState,m as openHeaderFile,e as platform,b as platform_id,g as projectWindows,a as qs,C as reloadWorkspaceFile,d as repo_id,q as runToPC,s as setFrameRateUI,y as setTestInput,p as setupBreakpoint,v as setupSplits,x as startUI,c as store_id};
import{A,B,C,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z}from"./chunk-VOI5MHR3.js";import"./chunk-6UQAGDOD.js";import"./chunk-LNOKARBD.js";import"./chunk-A7SWO6EA.js";import"./chunk-F6NBEMS2.js";import"./chunk-CZ7OSHSE.js";import"./chunk-TYDI7JZQ.js";import"./chunk-KT7KMEQC.js";export{r as clearBreakpoint,f as current_project,B as emulationHalted,o as getCurrentEditorFilename,n as getCurrentMainFilename,k as getCurrentOutput,j as getCurrentProject,w as getPlatformAndRepo,i as getPlatformStore,A as getSaveState,z as getTestOutput,l as getWorkerParams,u as gotoNewLocation,t as haltEmulation,h as lastDebugState,m as openHeaderFile,e as platform,b as platform_id,g as projectWindows,a as qs,C as reloadWorkspaceFile,d as repo_id,q as runToPC,s as setFrameRateUI,y as setTestInput,p as setupBreakpoint,v as setupSplits,x as startUI,c as store_id};
//# sourceMappingURL=ui.js.map
@@ -1,18 +1,18 @@
import{a as nm0,b as tm0,c as cm0,d as ta3}from"./chunk-7GWCUXYG.js";import"./chunk-LNOKARBD.js";import{j as fm0,v as jP}from"./chunk-CZ7OSHSE.js";import{K as EF,P as $y0,T as em0,U as rm0,W as E7,Y as km0,Z as im0,n as qy0,r as HP}from"./chunk-TYDI7JZQ.js";import{c as LF,d as fa3,e as na3}from"./chunk-KT7KMEQC.js";var sm0=fa3((kR,BZ)=>{var dZ={};(function(){var y;y||(y=typeof dZ!="undefined"?dZ:{});var q={},P0;for(P0 in y)y.hasOwnProperty(P0)&&(q[P0]=y[P0]);var q0="./this.program";function J9(p,H){throw H}var le=!1,W9=!1,oe=!1,vk=!1;le=typeof window=="object",W9=typeof importScripts=="function",oe=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",vk=!le&&!oe&&!W9;var Y4="",Nn,wf,p7,Kr;oe?(Y4=W9?LF("path").dirname(Y4)+"/":__dirname+"/",Nn=function(p,H){var f0=RI(p);return f0?H?f0:f0.toString():(p7||(p7=LF("fs")),Kr||(Kr=LF("path")),p=Kr.normalize(p),p7.readFileSync(p,H?null:"utf8"))},wf=function(p){return p=Nn(p,!0),p.buffer||(p=new Uint8Array(p)),bn(p.buffer),p},1<process.argv.length&&(q0=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),typeof BZ!="undefined"&&(BZ.exports=y),process.on("uncaughtException",function(p){if(!(p instanceof gq))throw p}),process.on("unhandledRejection",x5),J9=function(p){process.exit(p)},y.inspect=function(){return"[Emscripten Module object]"}):vk?(typeof read!="undefined"&&(Nn=function(p){var H=RI(p);return H?lq(H):read(p)}),wf=function(p){var H;return(H=RI(p))?H:typeof readbuffer=="function"?new Uint8Array(readbuffer(p)):(H=read(p,"binary"),bn(typeof H=="object"),H)},typeof quit=="function"&&(J9=function(p){quit(p)}),typeof print!="undefined"&&(typeof console=="undefined"&&(console={}),console.log=print,console.warn=console.error=typeof printErr!="undefined"?printErr:print)):(le||W9)&&(W9?Y4=self.location.href:typeof document!="undefined"&&document.currentScript&&(Y4=document.currentScript.src),Y4=Y4.indexOf("blob:")!==0?Y4.substr(0,Y4.lastIndexOf("/")+1):"",Nn=function(p){try{var H=new XMLHttpRequest;return H.open("GET",p,!1),H.send(null),H.responseText}catch(f0){if(p=RI(p))return lq(p);throw f0}},W9&&(wf=function(p){try{var H=new XMLHttpRequest;return H.open("GET",p,!1),H.responseType="arraybuffer",H.send(null),new Uint8Array(H.response)}catch(f0){if(p=RI(p))return p;throw f0}}));var mn=y.print||console.log.bind(console),Fn=y.printErr||console.warn.bind(console);for(P0 in q)q.hasOwnProperty(P0)&&(y[P0]=q[P0]);q=null,y.thisProgram&&(q0=y.thisProgram),y.quit&&(J9=y.quit);var If=0,Xc;y.wasmBinary&&(Xc=y.wasmBinary);var gu=y.noExitRuntime||!0;function Rg(){this.buffer=new ArrayBuffer(Ei/65536*65536)}function tR(){}function qt(){this.exports=(function(H){function f0(Gr){return Gr.set=function(As,B5){this[As]=B5},Gr.get=function(As){return this[As]},Gr}for(var W,S=new Uint8Array(123),u0=25;u0>=0;--u0)S[48+u0]=52+u0,S[65+u0]=u0,S[97+u0]=26+u0;S[43]=62,S[47]=63;function U(Gr,As,B5){for(var Z,n4,e=0,V=As,W7=B5.length,O=As+(W7*3>>2)-(B5[W7-2]=="=")-(B5[W7-1]=="=");e<W7;e+=4)Z=S[B5.charCodeAt(e+1)],n4=S[B5.charCodeAt(e+2)],Gr[V++]=S[B5.charCodeAt(e)]<<2|Z>>4,V<O&&(Gr[V++]=Z<<4|n4>>2),V<O&&(Gr[V++]=n4<<6|S[B5.charCodeAt(e+3)])}function O3(Gr){U(W,1024,"dmFsdWUudHlwZS5pc0NvbmNyZXRlKCkARmxvdwBsaXQuaXNDb25jcmV0ZSgpAExpdGVyYWxzAHZhbHVlcy5zaXplKCkgPT0gMQBnZXRTaW5nbGVWYWx1ZQBnZXRpMzIAYyA9PSAoYyAmIDB4ZmYpAGV4dGVuZEZvclBhY2tpbmcAYyA9PSAoYyAmIDB4ZmZmZikAYWxsb2NhdGlvbiBmYWlsdXJl"),U(W,1200,"pDIAAKUyAACmMgAApzIAAKgyAAB0eXBlLmlzRnVuY3Rpb24oKSAmJiAhZnVuYy5pc051bGwoKQBnZXRGdW5jAHR5cGUuaXNOdWxsYWJsZSgpAG1ha2VOdWxsAHR5cGUuZ2V0SGVhcFR5cGUoKSA9PSBIZWFwVHlwZTo6aTMxAGdldGkzMQByZWludGVycHJldGk2NAByZWludGVycHJldGkzMgBzAC9ob21lL3J1bm5lci93b3JrL2JpbmFyeWVuLmpzL2JpbmFyeWVuLmpzL2JpbmFyeWVuL3NyYy9lbXNjcmlwdGVuLW9wdGltaXplci9pc3RyaW5nLmgASVN0cmluZwAYaAIA2AU="),U(W,1476,"qTIAAKoyAACrMgAArDIAAK0yAABONHdhc20yNENvbnN0YW50RXhwcmVzc2lvblJ1bm5lcklOU18xN0NFeHByZXNzaW9uUnVubmVyRUUyME5vbmNvbnN0YW50RXhjZXB0aW9uRQBnZXRDb25zdEV4cHJlc3Npb24AbWFrZUNvbnN0YW50RXhwcmVzc2lvbgBzaXplIDw9IG51bUNodW5rcyAqIENIVU5LX1NJWkUAYWxsb2NTcGFjZQB2YWx1ZS5pc051bGwoKSAmJiAidW5leHBlY3RlZCBub24tbnVsbCByZWZlcmVuY2UgdHlwZSBsaXRlcmFsIgBpbnZhbGlkIGNvbnN0YW50IGV4cHJlc3Npb24AaXNCYXNpYygpICYmICJCYXNpYyB0eXBlIGV4cGVjdGVkIgB2YWx1ZS50eXBlLmlzTnVtYmVyKCkAbWFrZUNvbnN0"),U(W,1828,"qTIAAK4yAACrMgAArDIAAK0y"),U(W,1856,"rzIAALAyAACxMgAAsjIAALMyAABleHByZXNzaW9uLT5pczxVbmFyeT4oKQAvaG9tZS9ydW5uZXIvd29yay9iaW5hcnllbi5qcy9iaW5hcnllbi5qcy9iaW5hcnllbi9zcmMvYmluYXJ5ZW4tYy5jcHAAQmluYXJ5ZW5VbmFyeVNldFZhbHVlAHZhbHVlRXhwcgBCaW5hcnllblVuYXJ5U2V0T3AAQmluYXJ5ZW5VbmFyeUdldFZhbHVlAEJpbmFyeWVuVW5hcnlHZXRPcABwYXJlbnQgPT0gb3RoZXIucGFyZW50AG9wZXJhdG9yLQBleHByZXNzaW9uLT5pczxUdXBsZU1ha2U+KCkAQmluYXJ5ZW5UdXBsZU1ha2VTZXRPcGVyYW5kQXQAaW5kZXggPCBzdGF0aWNfY2FzdDxUdXBsZU1ha2UqPihleHByZXNzaW9uKS0+b3BlcmFuZHMuc2l6ZSgpAG9wZXJhbmRFeHByAEJpbmFyeWVuVHVwbGVNYWtlUmVtb3ZlT3BlcmFuZEF0AEJpbmFyeWVuVHVwbGVNYWtlSW5zZXJ0T3BlcmFuZEF0AGluZGV4IDw9IHNpemUoKQBpbnNlcnRBdABCaW5hcnllblR1cGxlTWFrZUdldE9wZXJhbmRBdABCaW5hcnllblR1cGxlTWFrZUdldE51bU9wZXJhbmRzAEJpbmLine truncated
import{i as nm0,j as tm0,k as cm0,l as um0,m as ca3}from"./chunk-6UQAGDOD.js";import"./chunk-LNOKARBD.js";import{j as fm0,v as jP}from"./chunk-CZ7OSHSE.js";import{K as EF,P as $y0,T as em0,U as rm0,W as E7,Y as km0,Z as im0,n as qy0,r as HP}from"./chunk-TYDI7JZQ.js";import{c as LF,d as na3,e as ta3}from"./chunk-KT7KMEQC.js";var Am0=na3((kR,BZ)=>{var dZ={};(function(){var y;y||(y=typeof dZ!="undefined"?dZ:{});var q={},P0;for(P0 in y)y.hasOwnProperty(P0)&&(q[P0]=y[P0]);var q0="./this.program";function J9(p,H){throw H}var le=!1,W9=!1,oe=!1,vk=!1;le=typeof window=="object",W9=typeof importScripts=="function",oe=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",vk=!le&&!oe&&!W9;var Y4="",Nn,wf,p7,Kr;oe?(Y4=W9?LF("path").dirname(Y4)+"/":__dirname+"/",Nn=function(p,H){var f0=RI(p);return f0?H?f0:f0.toString():(p7||(p7=LF("fs")),Kr||(Kr=LF("path")),p=Kr.normalize(p),p7.readFileSync(p,H?null:"utf8"))},wf=function(p){return p=Nn(p,!0),p.buffer||(p=new Uint8Array(p)),bn(p.buffer),p},1<process.argv.length&&(q0=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),typeof BZ!="undefined"&&(BZ.exports=y),process.on("uncaughtException",function(p){if(!(p instanceof gq))throw p}),process.on("unhandledRejection",x5),J9=function(p){process.exit(p)},y.inspect=function(){return"[Emscripten Module object]"}):vk?(typeof read!="undefined"&&(Nn=function(p){var H=RI(p);return H?lq(H):read(p)}),wf=function(p){var H;return(H=RI(p))?H:typeof readbuffer=="function"?new Uint8Array(readbuffer(p)):(H=read(p,"binary"),bn(typeof H=="object"),H)},typeof quit=="function"&&(J9=function(p){quit(p)}),typeof print!="undefined"&&(typeof console=="undefined"&&(console={}),console.log=print,console.warn=console.error=typeof printErr!="undefined"?printErr:print)):(le||W9)&&(W9?Y4=self.location.href:typeof document!="undefined"&&document.currentScript&&(Y4=document.currentScript.src),Y4=Y4.indexOf("blob:")!==0?Y4.substr(0,Y4.lastIndexOf("/")+1):"",Nn=function(p){try{var H=new XMLHttpRequest;return H.open("GET",p,!1),H.send(null),H.responseText}catch(f0){if(p=RI(p))return lq(p);throw f0}},W9&&(wf=function(p){try{var H=new XMLHttpRequest;return H.open("GET",p,!1),H.responseType="arraybuffer",H.send(null),new Uint8Array(H.response)}catch(f0){if(p=RI(p))return p;throw f0}}));var mn=y.print||console.log.bind(console),Fn=y.printErr||console.warn.bind(console);for(P0 in q)q.hasOwnProperty(P0)&&(y[P0]=q[P0]);q=null,y.thisProgram&&(q0=y.thisProgram),y.quit&&(J9=y.quit);var If=0,Xc;y.wasmBinary&&(Xc=y.wasmBinary);var gu=y.noExitRuntime||!0;function Rg(){this.buffer=new ArrayBuffer(Ei/65536*65536)}function tR(){}function qt(){this.exports=(function(H){function f0(Gr){return Gr.set=function(As,B5){this[As]=B5},Gr.get=function(As){return this[As]},Gr}for(var W,S=new Uint8Array(123),u0=25;u0>=0;--u0)S[48+u0]=52+u0,S[65+u0]=u0,S[97+u0]=26+u0;S[43]=62,S[47]=63;function U(Gr,As,B5){for(var Z,n4,e=0,V=As,W7=B5.length,O=As+(W7*3>>2)-(B5[W7-2]=="=")-(B5[W7-1]=="=");e<W7;e+=4)Z=S[B5.charCodeAt(e+1)],n4=S[B5.charCodeAt(e+2)],Gr[V++]=S[B5.charCodeAt(e)]<<2|Z>>4,V<O&&(Gr[V++]=Z<<4|n4>>2),V<O&&(Gr[V++]=n4<<6|S[B5.charCodeAt(e+3)])}function O3(Gr){U(W,1024,"dmFsdWUudHlwZS5pc0NvbmNyZXRlKCkARmxvdwBsaXQuaXNDb25jcmV0ZSgpAExpdGVyYWxzAHZhbHVlcy5zaXplKCkgPT0gMQBnZXRTaW5nbGVWYWx1ZQBnZXRpMzIAYyA9PSAoYyAmIDB4ZmYpAGV4dGVuZEZvclBhY2tpbmcAYyA9PSAoYyAmIDB4ZmZmZikAYWxsb2NhdGlvbiBmYWlsdXJl"),U(W,1200,"pDIAAKUyAACmMgAApzIAAKgyAAB0eXBlLmlzRnVuY3Rpb24oKSAmJiAhZnVuYy5pc051bGwoKQBnZXRGdW5jAHR5cGUuaXNOdWxsYWJsZSgpAG1ha2VOdWxsAHR5cGUuZ2V0SGVhcFR5cGUoKSA9PSBIZWFwVHlwZTo6aTMxAGdldGkzMQByZWludGVycHJldGk2NAByZWludGVycHJldGkzMgBzAC9ob21lL3J1bm5lci93b3JrL2JpbmFyeWVuLmpzL2JpbmFyeWVuLmpzL2JpbmFyeWVuL3NyYy9lbXNjcmlwdGVuLW9wdGltaXplci9pc3RyaW5nLmgASVN0cmluZwAYaAIA2AU="),U(W,1476,"qTIAAKoyAACrMgAArDIAAK0yAABONHdhc20yNENvbnN0YW50RXhwcmVzc2lvblJ1bm5lcklOU18xN0NFeHByZXNzaW9uUnVubmVyRUUyME5vbmNvbnN0YW50RXhjZXB0aW9uRQBnZXRDb25zdEV4cHJlc3Npb24AbWFrZUNvbnN0YW50RXhwcmVzc2lvbgBzaXplIDw9IG51bUNodW5rcyAqIENIVU5LX1NJWkUAYWxsb2NTcGFjZQB2YWx1ZS5pc051bGwoKSAmJiAidW5leHBlY3RlZCBub24tbnVsbCByZWZlcmVuY2UgdHlwZSBsaXRlcmFsIgBpbnZhbGlkIGNvbnN0YW50IGV4cHJlc3Npb24AaXNCYXNpYygpICYmICJCYXNpYyB0eXBlIGV4cGVjdGVkIgB2YWx1ZS50eXBlLmlzTnVtYmVyKCkAbWFrZUNvbnN0"),U(W,1828,"qTIAAK4yAACrMgAArDIAAK0y"),U(W,1856,"rzIAALAyAACxMgAAsjIAALMyAABleHByZXNzaW9uLT5pczxVbmFyeT4oKQAvaG9tZS9ydW5uZXIvd29yay9iaW5hcnllbi5qcy9iaW5hcnllbi5qcy9iaW5hcnllbi9zcmMvYmluYXJ5ZW4tYy5jcHAAQmluYXJ5ZW5VbmFyeVNldFZhbHVlAHZhbHVlRXhwcgBCaW5hcnllblVuYXJ5U2V0T3AAQmluYXJ5ZW5VbmFyeUdldFZhbHVlAEJpbmFyeWVuVW5hcnlHZXRPcABwYXJlbnQgPT0gb3RoZXIucGFyZW50AG9wZXJhdG9yLQBleHByZXNzaW9uLT5pczxUdXBsZU1ha2U+KCkAQmluYXJ5ZW5UdXBsZU1ha2VTZXRPcGVyYW5kQXQAaW5kZXggPCBzdGF0aWNfY2FzdDxUdXBsZU1ha2UqPihleHByZXNzaW9uKS0+b3BlcmFuZHMuc2l6ZSgpAG9wZXJhbmRFeHByAEJpbmFyeWVuVHVwbGVNYWtlUmVtb3ZlT3BlcmFuZEF0AEJpbmFyeWVuVHVwbGVNYWtlSW5zZXJ0T3BlcmFuZEF0AGluZGV4IDw9IHNpemUoKQBpbnNlcnRBdABCaW5hcnllblR1cGxlTWFrZUdldE9wZXJhbmRBdABCaW5hcnllblR1cGxlTWFrZUdldE51bU9wZXJhbLine truncated
`)):typeof readline=="function"&&(H=readline(),H!==null&&(H+=`
`));if(!H)return null;p.input=vR(H,!0)}return p.input.shift()},Hu:function(p,H){H===null||H===10?(mn(O7(p.output,0)),p.output=[]):H!=0&&p.output.push(H)},flush:function(p){p.output&&0<p.output.length&&(mn(O7(p.output,0)),p.output=[])}},vm0={Hu:function(p,H){H===null||H===10?(Fn(O7(p.output,0)),p.output=[]):H!=0&&p.output.push(H)},flush:function(p){p.output&&0<p.output.length&&(Fn(O7(p.output,0)),p.output=[])}},K4={mu:null,pu:function(){return K4.createNode(null,"/",16895,0)},createNode:function(p,H,f0,W){if((f0&61440)===24576||(f0&61440)===4096)throw new hk(63);return K4.mu||(K4.mu={dir:{node:{qu:K4.hu.qu,nu:K4.hu.nu,lookup:K4.hu.lookup,yu:K4.hu.yu,rename:K4.hu.rename,unlink:K4.hu.unlink,rmdir:K4.hu.rmdir,readdir:K4.hu.readdir,symlink:K4.hu.symlink},stream:{ru:K4.ju.ru}},file:{node:{qu:K4.hu.qu,nu:K4.hu.nu},stream:{ru:K4.ju.ru,read:K4.ju.read,write:K4.ju.write,Mu:K4.ju.Mu,Uu:K4.ju.Uu,Wu:K4.ju.Wu}},link:{node:{qu:K4.hu.qu,nu:K4.hu.nu,readlink:K4.hu.readlink},stream:{}},Nu:{node:{qu:K4.hu.qu,nu:K4.hu.nu},stream:bm0}}),f0=iq(p,H,f0,W),(f0.mode&61440)===16384?(f0.hu=K4.mu.dir.node,f0.ju=K4.mu.dir.stream,f0.gu={}):(f0.mode&61440)===32768?(f0.hu=K4.mu.file.node,f0.ju=K4.mu.file.stream,f0.ku=0,f0.gu=null):(f0.mode&61440)===40960?(f0.hu=K4.mu.link.node,f0.ju=K4.mu.link.stream):(f0.mode&61440)===8192&&(f0.hu=K4.mu.Nu.node,f0.ju=K4.mu.Nu.stream),f0.timestamp=Date.now(),p&&(p.gu[H]=f0,p.timestamp=f0.timestamp),f0},wv:function(p){return p.gu?p.gu.subarray?p.gu.subarray(0,p.ku):new Uint8Array(p.gu):new Uint8Array(0)},Pu:function(p,H){var f0=p.gu?p.gu.length:0;f0>=H||(H=Math.max(H,f0*(1048576>f0?2:1.125)>>>0),f0!=0&&(H=Math.max(H,256)),f0=p.gu,p.gu=new Uint8Array(H),0<p.ku&&p.gu.set(f0.subarray(0,p.ku),0))},jv:function(p,H){if(p.ku!=H)if(H==0)p.gu=null,p.ku=0;else{var f0=p.gu;p.gu=new Uint8Array(H),f0&&p.gu.set(f0.subarray(0,Math.min(H,p.ku))),p.ku=H}},hu:{qu:function(p){var H={};return H.dev=(p.mode&61440)===8192?p.id:1,H.ino=p.id,H.mode=p.mode,H.nlink=1,H.uid=0,H.gid=0,H.rdev=p.rdev,(p.mode&61440)===16384?H.size=4096:(p.mode&61440)===32768?H.size=p.ku:(p.mode&61440)===40960?H.size=p.link.length:H.size=0,H.atime=new Date(p.timestamp),H.mtime=new Date(p.timestamp),H.ctime=new Date(p.timestamp),H.Yu=4096,H.blocks=Math.ceil(H.size/H.Yu),H},nu:function(p,H){H.mode!==void 0&&(p.mode=H.mode),H.timestamp!==void 0&&(p.timestamp=H.timestamp),H.size!==void 0&&K4.jv(p,H.size)},lookup:function(){throw oR[44]},yu:function(p,H,f0,W){return K4.createNode(p,H,f0,W)},rename:function(p,H,f0){if((p.mode&61440)===16384){try{var W=ZZ(H,f0)}catch(u0){}if(W)for(var S in W.gu)throw new hk(55)}delete p.parent.gu[p.name],p.parent.timestamp=Date.now(),p.name=f0,H.gu[f0]=p,H.timestamp=p.parent.timestamp,p.parent=H},unlink:function(p,H){delete p.gu[H],p.timestamp=Date.now()},rmdir:function(p,H){var f0=ZZ(p,H),W;for(W in f0.gu)throw new hk(55);delete p.gu[H],p.timestamp=Date.now()},readdir:function(p){var H=[".",".."],f0;for(f0 in p.gu)p.gu.hasOwnProperty(f0)&&H.push(f0);return H},symlink:function(p,H,f0){return p=K4.createNode(p,H,41471,0),p.link=f0,p},readlink:function(p){if((p.mode&61440)!==40960)throw new hk(28);return p.link}},ju:{read:function(p,H,f0,W,S){var u0=p.node.gu;if(S>=p.node.ku)return 0;if(p=Math.min(p.node.ku-S,W),8<p&&u0.subarray)H.set(u0.subarray(S,S+p),f0);else for(W=0;W<p;W++)H[f0+W]=u0[S+W];return p},write:function(p,H,f0,W,S,u0){if(H.buffer===wt.buffer&&(u0=!1),!W)return 0;if(p=p.node,p.timestamp=Date.now(),H.subarray&&(!p.gu||p.gu.subarray)){if(u0)return p.gu=H.subarray(f0,f0+W),p.ku=W;if(p.ku===0&&S===0)return p.gu=H.slice(f0,f0+W),p.ku=W;if(S+W<=p.ku)return p.gu.set(H.subarray(f0,f0+W),S),W}if(K4.Pu(p,S+W),p.gu.subarray&&H.subarray)p.gu.set(H.subarray(f0,f0+W),S);else for(u0=0;u0<W;u0++)p.gu[S+u0]=H[f0+u0];return p.ku=Math.max(p.ku,S+W),W},ru:function(p,H,f0){if(f0===1?H+=p.position:f0===2&&(p.node.mode&61440)===32768&&(H+=p.node.ku),0>H)throw new hk(28);return H},Mu:function(p,H,f0){K4.Pu(p.node,H+f0),p.node.ku=Math.max(p.node.ku,H+f0)},Uu:function(p,H,f0,W,S,u0){if(H!==0)throw new hk(28);if((p.node.mode&61440)!==32768)throw new hk(43);if(p=p.node.gu,u0&2||p.buffer!==gA){for((0<W||W+f0<p.length)&&(p.subarray?p=p.subarray(W,W+f0):p=Array.prototype.slice.call(p,W,W+f0)),W=!0,u0=16384*Math.ceil(f0/16384),H=QI(u0);f0<u0;)wt[H+f0++]=0;if(f0=H,!f0)throw new hk(48);wt.set(p,f0)}else W=!1,f0=p.byteOffset;return{iu:f0,tv:W}},Wu:function(p,H,f0,W,S){if((p.node.mode&61440)!==32768)throw new hk(43);return S&2||K4.ju.write(p,H,0,W,f0,!1),0}}},AR=null,eq={},KB=[],dm0=1,OB=null,GZ={},hk=null,oR={};function Qg(p,H){if(p=CZ("/",p),H=H||{},!p)return{path:"",node:null};var f0={Ru:!0,Iu:0},W;for(W in f0)H[W]===void 0&&(H[W]=f0[W]);if(8<H.Iu)throw new hk(32);p=sR(p.split("/").filter(function(U){return!!U}),!1);var S=AR;for(f0="/",W=0;W<p.length;W++){var u0=W===p.length-1;if(u0&&H.parent)break;if(S=ZZ(S,p[W]),f0=bZ(f0+"/"+p[W]),S.zu&&(!u0||u0&&H.Ru)&&(S=S.zu.root),!u0||H.Qu){for(u0=0;(S.mode&61440)===40960;)if(S=Cm0(f0),f0=CZ(hm0(f0),S),S=Qg(f Line truncated
`},"%p":function(d9){return 0<=d9.Bu&&12>d9.Bu?"AM":"PM"},"%S":function(d9){return u0(d9.qv,2)},"%t":function(){return" "},"%u":function(d9){return d9.Cu||7},"%U":function(d9){var v4=new Date(d9.lu+1900,0,1),X4=v4.getDay()===0?v4:FZ(v4,7-v4.getDay());return d9=new Date(d9.lu+1900,d9.tu,d9.vu),0>U(X4,d9)?u0(Math.ceil((31-X4.getDate()+(IR(XZ(d9.getFullYear())?MZ:NZ,d9.getMonth()-1)-31)+d9.getDate())/7),2):U(X4,v4)===0?"01":"00"},"%V":function(d9){var v4=new Date(d9.lu+1901,0,4),X4=O3(new Date(d9.lu+1900,0,4));v4=O3(v4);var H5=FZ(new Date(d9.lu+1900,0,1),d9.Du);return 0>U(H5,X4)?"53":0>=U(v4,H5)?"01":u0(Math.ceil((X4.getFullYear()<d9.lu+1900?d9.Du+32-X4.getDate():d9.Du+1-X4.getDate())/7),2)},"%w":function(d9){return d9.Cu},"%W":function(d9){var v4=new Date(d9.lu,0,1),X4=v4.getDay()===1?v4:FZ(v4,v4.getDay()===0?1:7-v4.getDay()+1);return d9=new Date(d9.lu+1900,d9.tu,d9.vu),0>U(X4,d9)?u0(Math.ceil((31-X4.getDate()+(IR(XZ(d9.getFullYear())?MZ:NZ,d9.getMonth()-1)-31)+d9.getDate())/7),2):U(X4,v4)===0?"01":"00"},"%y":function(d9){return(d9.lu+1900).toString().substring(2)},"%Y":function(d9){return d9.lu+1900},"%z":function(d9){d9=d9.ov;var v4=0<=d9;return d9=Math.abs(d9)/60,(v4?"+":"-")+("0000"+(d9/60*100+d9%60)).slice(-4)},"%Z":function(d9){return d9.rv},"%%":function(){return"%"}};for(O4 in bi)0<=f0.indexOf(O4)&&(f0=f0.replace(new RegExp(O4,"g"),bi[O4](W)));return O4=vR(f0,!1),O4.length>H?0:(wt.set(O4,p),O4.length-1)}function oq(p,H,f0,W){p||(p=this),this.parent=p,this.pu=p.pu,this.zu=null,this.id=dm0++,this.name=H,this.mode=f0,this.hu={},this.ju={},this.rdev=W}Object.defineProperties(oq.prototype,{read:{get:function(){return(this.mode&365)===365},set:function(p){p?this.mode|=365:this.mode&=-366}},write:{get:function(){return(this.mode&146)===146},set:function(p){p?this.mode|=146:this.mode&=-147}}}),cq(),OB=Array(4096),nq(K4,"/"),Zl("/tmp"),Zl("/home"),Zl("/home/web_user"),(function(){Zl("/dev"),lR(259,{read:function(){return 0},write:function(H,f0,W,S){return S}}),pZ("/dev/null",259),$P(1280,Im0),$P(1536,vm0),pZ("/dev/tty",1280),pZ("/dev/tty1",1536);var p=gm0();qB("random",p),qB("urandom",p),Zl("/dev/shm"),Zl("/dev/shm/tmp")})(),(function(){Zl("/proc");var p=Zl("/proc/self");Zl("/proc/self/fd"),nq({pu:function(){var H=iq(p,"fd",16895,73);return H.hu={lookup:function(f0,W){var S=KB[+W];if(!S)throw new hk(8);return f0={parent:null,pu:{Vu:"fake"},hu:{readlink:function(){return S.path}}},f0.parent=f0}},H}},"/proc/self/fd")})();var pm0=!1;function vR(p,H){for(var f0=0,W=0;W<p.length;++W){var S=p.charCodeAt(W);55296<=S&&57343>=S&&(S=65536+((S&1023)<<10)|p.charCodeAt(++W)&1023),127>=S?++f0:f0=2047>=S?f0+2:65535>=S?f0+3:f0+4}f0=Array(f0+1);var u0=f0.length;if(W=0,0<u0){S=W,u0=W+u0-1;for(var U=0;U<p.length;++U){var O3=p.charCodeAt(U);if(55296<=O3&&57343>=O3){var Vk=p.charCodeAt(++U);O3=65536+((O3&1023)<<10)|Vk&1023}if(127>=O3){if(W>=u0)break;f0[W++]=O3}else{if(2047>=O3){if(W+1>=u0)break;f0[W++]=192|O3>>6}else{if(65535>=O3){if(W+2>=u0)break;f0[W++]=224|O3>>12}else{if(W+3>=u0)break;f0[W++]=240|O3>>18,f0[W++]=128|O3>>12&63}f0[W++]=128|O3>>6&63}f0[W++]=128|O3&63}}f0[W]=0,p=W-S}else p=0;return H&&(f0.length=p),f0}function lq(p){for(var H=[],f0=0;f0<p.length;f0++){var W=p[f0];255<W&&(pm0&&bn(!1,"Character code "+W+" ("+String.fromCharCode(W)+") at offset "+f0+" not in 0x00-0xFF."),W&=255),H.push(String.fromCharCode(W))}return H.join("")}var Wm0=typeof atob=="function"?atob:function(p){var H="",f0=0;p=p.replace(/[^A-Za-z0-9\+\/=]/g,"");do{var W="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(p.charAt(f0++)),S="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(p.charAt(f0++)),u0="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(p.charAt(f0++)),U="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(p.charAt(f0++));W=W<<2|S>>4,S=(S&15)<<4|u0>>2;var O3=(u0&3)<<6|U;H+=String.fromCharCode(W),u0!==64&&(H+=String.fromCharCode(S)),U!==64&&(H+=String.fromCharCode(O3))}while(f0<p.length);return H};function RI(p){if(LP(p)){if(p=p.slice(EP.length),typeof oe=="boolean"&&oe){try{var H=Buffer.from(p,"base64")}catch(u0){H=new Buffer(p,"base64")}var f0=new Uint8Array(H.buffer,H.byteOffset,H.byteLength)}else try{var W=Wm0(p),S=new Uint8Array(W.length);for(H=0;H<W.length;++H)S[H]=W.charCodeAt(H);f0=S}catch(u0){throw Error("Converting base64 string to bytes failed.")}return f0}}var aq={S:function(p){wq(p)},i:function(p,H,f0,W){x5("Assertion failed: "+pk(p)+", at: "+[H?pk(H):"unknown filename",f0,W?pk(W):"unknown function"])},n:function(p){return QI(p+16)+16},s:function(p){p=new EB(p);var H=p.wu();return H.$u()||(H.Ku(!0),mZ--),H.Lu(!1),yZ.push(p),H.Xu(),p.bv()},v:function(){B4(0);var p=yZ.pop(),H=p.wu();if(H.hv()&&!H.Tu()){var f0=H.av();f0&&Bk.get(f0)(H.Ou),OP(H.Ou)}p.Fu(),Na=0},d:function(){var p=Na;if(!p)return If=0;var H=new MI(p).xu(),f0=new EB;if(f0.Ju(p),!H)return If=0,f0.iu|0;var W=Array.prototype.slice.call(arguments),S=o4(),u0=d5(4);k4[u0> Line truncated
`));if(!H)return null;p.input=vR(H,!0)}return p.input.shift()},Hu:function(p,H){H===null||H===10?(mn(O7(p.output,0)),p.output=[]):H!=0&&p.output.push(H)},flush:function(p){p.output&&0<p.output.length&&(mn(O7(p.output,0)),p.output=[])}},dm0={Hu:function(p,H){H===null||H===10?(Fn(O7(p.output,0)),p.output=[]):H!=0&&p.output.push(H)},flush:function(p){p.output&&0<p.output.length&&(Fn(O7(p.output,0)),p.output=[])}},K4={mu:null,pu:function(){return K4.createNode(null,"/",16895,0)},createNode:function(p,H,f0,W){if((f0&61440)===24576||(f0&61440)===4096)throw new hk(63);return K4.mu||(K4.mu={dir:{node:{qu:K4.hu.qu,nu:K4.hu.nu,lookup:K4.hu.lookup,yu:K4.hu.yu,rename:K4.hu.rename,unlink:K4.hu.unlink,rmdir:K4.hu.rmdir,readdir:K4.hu.readdir,symlink:K4.hu.symlink},stream:{ru:K4.ju.ru}},file:{node:{qu:K4.hu.qu,nu:K4.hu.nu},stream:{ru:K4.ju.ru,read:K4.ju.read,write:K4.ju.write,Mu:K4.ju.Mu,Uu:K4.ju.Uu,Wu:K4.ju.Wu}},link:{node:{qu:K4.hu.qu,nu:K4.hu.nu,readlink:K4.hu.readlink},stream:{}},Nu:{node:{qu:K4.hu.qu,nu:K4.hu.nu},stream:Cm0}}),f0=iq(p,H,f0,W),(f0.mode&61440)===16384?(f0.hu=K4.mu.dir.node,f0.ju=K4.mu.dir.stream,f0.gu={}):(f0.mode&61440)===32768?(f0.hu=K4.mu.file.node,f0.ju=K4.mu.file.stream,f0.ku=0,f0.gu=null):(f0.mode&61440)===40960?(f0.hu=K4.mu.link.node,f0.ju=K4.mu.link.stream):(f0.mode&61440)===8192&&(f0.hu=K4.mu.Nu.node,f0.ju=K4.mu.Nu.stream),f0.timestamp=Date.now(),p&&(p.gu[H]=f0,p.timestamp=f0.timestamp),f0},wv:function(p){return p.gu?p.gu.subarray?p.gu.subarray(0,p.ku):new Uint8Array(p.gu):new Uint8Array(0)},Pu:function(p,H){var f0=p.gu?p.gu.length:0;f0>=H||(H=Math.max(H,f0*(1048576>f0?2:1.125)>>>0),f0!=0&&(H=Math.max(H,256)),f0=p.gu,p.gu=new Uint8Array(H),0<p.ku&&p.gu.set(f0.subarray(0,p.ku),0))},jv:function(p,H){if(p.ku!=H)if(H==0)p.gu=null,p.ku=0;else{var f0=p.gu;p.gu=new Uint8Array(H),f0&&p.gu.set(f0.subarray(0,Math.min(H,p.ku))),p.ku=H}},hu:{qu:function(p){var H={};return H.dev=(p.mode&61440)===8192?p.id:1,H.ino=p.id,H.mode=p.mode,H.nlink=1,H.uid=0,H.gid=0,H.rdev=p.rdev,(p.mode&61440)===16384?H.size=4096:(p.mode&61440)===32768?H.size=p.ku:(p.mode&61440)===40960?H.size=p.link.length:H.size=0,H.atime=new Date(p.timestamp),H.mtime=new Date(p.timestamp),H.ctime=new Date(p.timestamp),H.Yu=4096,H.blocks=Math.ceil(H.size/H.Yu),H},nu:function(p,H){H.mode!==void 0&&(p.mode=H.mode),H.timestamp!==void 0&&(p.timestamp=H.timestamp),H.size!==void 0&&K4.jv(p,H.size)},lookup:function(){throw oR[44]},yu:function(p,H,f0,W){return K4.createNode(p,H,f0,W)},rename:function(p,H,f0){if((p.mode&61440)===16384){try{var W=ZZ(H,f0)}catch(u0){}if(W)for(var S in W.gu)throw new hk(55)}delete p.parent.gu[p.name],p.parent.timestamp=Date.now(),p.name=f0,H.gu[f0]=p,H.timestamp=p.parent.timestamp,p.parent=H},unlink:function(p,H){delete p.gu[H],p.timestamp=Date.now()},rmdir:function(p,H){var f0=ZZ(p,H),W;for(W in f0.gu)throw new hk(55);delete p.gu[H],p.timestamp=Date.now()},readdir:function(p){var H=[".",".."],f0;for(f0 in p.gu)p.gu.hasOwnProperty(f0)&&H.push(f0);return H},symlink:function(p,H,f0){return p=K4.createNode(p,H,41471,0),p.link=f0,p},readlink:function(p){if((p.mode&61440)!==40960)throw new hk(28);return p.link}},ju:{read:function(p,H,f0,W,S){var u0=p.node.gu;if(S>=p.node.ku)return 0;if(p=Math.min(p.node.ku-S,W),8<p&&u0.subarray)H.set(u0.subarray(S,S+p),f0);else for(W=0;W<p;W++)H[f0+W]=u0[S+W];return p},write:function(p,H,f0,W,S,u0){if(H.buffer===wt.buffer&&(u0=!1),!W)return 0;if(p=p.node,p.timestamp=Date.now(),H.subarray&&(!p.gu||p.gu.subarray)){if(u0)return p.gu=H.subarray(f0,f0+W),p.ku=W;if(p.ku===0&&S===0)return p.gu=H.slice(f0,f0+W),p.ku=W;if(S+W<=p.ku)return p.gu.set(H.subarray(f0,f0+W),S),W}if(K4.Pu(p,S+W),p.gu.subarray&&H.subarray)p.gu.set(H.subarray(f0,f0+W),S);else for(u0=0;u0<W;u0++)p.gu[S+u0]=H[f0+u0];return p.ku=Math.max(p.ku,S+W),W},ru:function(p,H,f0){if(f0===1?H+=p.position:f0===2&&(p.node.mode&61440)===32768&&(H+=p.node.ku),0>H)throw new hk(28);return H},Mu:function(p,H,f0){K4.Pu(p.node,H+f0),p.node.ku=Math.max(p.node.ku,H+f0)},Uu:function(p,H,f0,W,S,u0){if(H!==0)throw new hk(28);if((p.node.mode&61440)!==32768)throw new hk(43);if(p=p.node.gu,u0&2||p.buffer!==gA){for((0<W||W+f0<p.length)&&(p.subarray?p=p.subarray(W,W+f0):p=Array.prototype.slice.call(p,W,W+f0)),W=!0,u0=16384*Math.ceil(f0/16384),H=QI(u0);f0<u0;)wt[H+f0++]=0;if(f0=H,!f0)throw new hk(48);wt.set(p,f0)}else W=!1,f0=p.byteOffset;return{iu:f0,tv:W}},Wu:function(p,H,f0,W,S){if((p.node.mode&61440)!==32768)throw new hk(43);return S&2||K4.ju.write(p,H,0,W,f0,!1),0}}},AR=null,eq={},KB=[],Bm0=1,OB=null,GZ={},hk=null,oR={};function Qg(p,H){if(p=CZ("/",p),H=H||{},!p)return{path:"",node:null};var f0={Ru:!0,Iu:0},W;for(W in f0)H[W]===void 0&&(H[W]=f0[W]);if(8<H.Iu)throw new hk(32);p=sR(p.split("/").filter(function(U){return!!U}),!1);var S=AR;for(f0="/",W=0;W<p.length;W++){var u0=W===p.length-1;if(u0&&H.parent)break;if(S=ZZ(S,p[W]),f0=bZ(f0+"/"+p[W]),S.zu&&(!u0||u0&&H.Ru)&&(S=S.zu.root),!u0||H.Qu){for(u0=0;(S.mode&61440)===40960;)if(S=Gm0(f0),f0=CZ(gm0(f0),S),S=Qg(f Line truncated
`},"%p":function(d9){return 0<=d9.Bu&&12>d9.Bu?"AM":"PM"},"%S":function(d9){return u0(d9.qv,2)},"%t":function(){return" "},"%u":function(d9){return d9.Cu||7},"%U":function(d9){var v4=new Date(d9.lu+1900,0,1),X4=v4.getDay()===0?v4:FZ(v4,7-v4.getDay());return d9=new Date(d9.lu+1900,d9.tu,d9.vu),0>U(X4,d9)?u0(Math.ceil((31-X4.getDate()+(IR(XZ(d9.getFullYear())?MZ:NZ,d9.getMonth()-1)-31)+d9.getDate())/7),2):U(X4,v4)===0?"01":"00"},"%V":function(d9){var v4=new Date(d9.lu+1901,0,4),X4=O3(new Date(d9.lu+1900,0,4));v4=O3(v4);var H5=FZ(new Date(d9.lu+1900,0,1),d9.Du);return 0>U(H5,X4)?"53":0>=U(v4,H5)?"01":u0(Math.ceil((X4.getFullYear()<d9.lu+1900?d9.Du+32-X4.getDate():d9.Du+1-X4.getDate())/7),2)},"%w":function(d9){return d9.Cu},"%W":function(d9){var v4=new Date(d9.lu,0,1),X4=v4.getDay()===1?v4:FZ(v4,v4.getDay()===0?1:7-v4.getDay()+1);return d9=new Date(d9.lu+1900,d9.tu,d9.vu),0>U(X4,d9)?u0(Math.ceil((31-X4.getDate()+(IR(XZ(d9.getFullYear())?MZ:NZ,d9.getMonth()-1)-31)+d9.getDate())/7),2):U(X4,v4)===0?"01":"00"},"%y":function(d9){return(d9.lu+1900).toString().substring(2)},"%Y":function(d9){return d9.lu+1900},"%z":function(d9){d9=d9.ov;var v4=0<=d9;return d9=Math.abs(d9)/60,(v4?"+":"-")+("0000"+(d9/60*100+d9%60)).slice(-4)},"%Z":function(d9){return d9.rv},"%%":function(){return"%"}};for(O4 in bi)0<=f0.indexOf(O4)&&(f0=f0.replace(new RegExp(O4,"g"),bi[O4](W)));return O4=vR(f0,!1),O4.length>H?0:(wt.set(O4,p),O4.length-1)}function oq(p,H,f0,W){p||(p=this),this.parent=p,this.pu=p.pu,this.zu=null,this.id=Bm0++,this.name=H,this.mode=f0,this.hu={},this.ju={},this.rdev=W}Object.defineProperties(oq.prototype,{read:{get:function(){return(this.mode&365)===365},set:function(p){p?this.mode|=365:this.mode&=-366}},write:{get:function(){return(this.mode&146)===146},set:function(p){p?this.mode|=146:this.mode&=-147}}}),cq(),OB=Array(4096),nq(K4,"/"),Zl("/tmp"),Zl("/home"),Zl("/home/web_user"),(function(){Zl("/dev"),lR(259,{read:function(){return 0},write:function(H,f0,W,S){return S}}),pZ("/dev/null",259),$P(1280,vm0),$P(1536,dm0),pZ("/dev/tty",1280),pZ("/dev/tty1",1536);var p=wm0();qB("random",p),qB("urandom",p),Zl("/dev/shm"),Zl("/dev/shm/tmp")})(),(function(){Zl("/proc");var p=Zl("/proc/self");Zl("/proc/self/fd"),nq({pu:function(){var H=iq(p,"fd",16895,73);return H.hu={lookup:function(f0,W){var S=KB[+W];if(!S)throw new hk(8);return f0={parent:null,pu:{Vu:"fake"},hu:{readlink:function(){return S.path}}},f0.parent=f0}},H}},"/proc/self/fd")})();var Wm0=!1;function vR(p,H){for(var f0=0,W=0;W<p.length;++W){var S=p.charCodeAt(W);55296<=S&&57343>=S&&(S=65536+((S&1023)<<10)|p.charCodeAt(++W)&1023),127>=S?++f0:f0=2047>=S?f0+2:65535>=S?f0+3:f0+4}f0=Array(f0+1);var u0=f0.length;if(W=0,0<u0){S=W,u0=W+u0-1;for(var U=0;U<p.length;++U){var O3=p.charCodeAt(U);if(55296<=O3&&57343>=O3){var Vk=p.charCodeAt(++U);O3=65536+((O3&1023)<<10)|Vk&1023}if(127>=O3){if(W>=u0)break;f0[W++]=O3}else{if(2047>=O3){if(W+1>=u0)break;f0[W++]=192|O3>>6}else{if(65535>=O3){if(W+2>=u0)break;f0[W++]=224|O3>>12}else{if(W+3>=u0)break;f0[W++]=240|O3>>18,f0[W++]=128|O3>>12&63}f0[W++]=128|O3>>6&63}f0[W++]=128|O3&63}}f0[W]=0,p=W-S}else p=0;return H&&(f0.length=p),f0}function lq(p){for(var H=[],f0=0;f0<p.length;f0++){var W=p[f0];255<W&&(Wm0&&bn(!1,"Character code "+W+" ("+String.fromCharCode(W)+") at offset "+f0+" not in 0x00-0xFF."),W&=255),H.push(String.fromCharCode(W))}return H.join("")}var Vm0=typeof atob=="function"?atob:function(p){var H="",f0=0;p=p.replace(/[^A-Za-z0-9\+\/=]/g,"");do{var W="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(p.charAt(f0++)),S="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(p.charAt(f0++)),u0="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(p.charAt(f0++)),U="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(p.charAt(f0++));W=W<<2|S>>4,S=(S&15)<<4|u0>>2;var O3=(u0&3)<<6|U;H+=String.fromCharCode(W),u0!==64&&(H+=String.fromCharCode(S)),U!==64&&(H+=String.fromCharCode(O3))}while(f0<p.length);return H};function RI(p){if(LP(p)){if(p=p.slice(EP.length),typeof oe=="boolean"&&oe){try{var H=Buffer.from(p,"base64")}catch(u0){H=new Buffer(p,"base64")}var f0=new Uint8Array(H.buffer,H.byteOffset,H.byteLength)}else try{var W=Vm0(p),S=new Uint8Array(W.length);for(H=0;H<W.length;++H)S[H]=W.charCodeAt(H);f0=S}catch(u0){throw Error("Converting base64 string to bytes failed.")}return f0}}var aq={S:function(p){wq(p)},i:function(p,H,f0,W){x5("Assertion failed: "+pk(p)+", at: "+[H?pk(H):"unknown filename",f0,W?pk(W):"unknown function"])},n:function(p){return QI(p+16)+16},s:function(p){p=new EB(p);var H=p.wu();return H.$u()||(H.Ku(!0),mZ--),H.Lu(!1),yZ.push(p),H.Xu(),p.bv()},v:function(){B4(0);var p=yZ.pop(),H=p.wu();if(H.hv()&&!H.Tu()){var f0=H.av();f0&&Bk.get(f0)(H.Ou),OP(H.Ou)}p.Fu(),Na=0},d:function(){var p=Na;if(!p)return If=0;var H=new MI(p).xu(),f0=new EB;if(f0.Ju(p),!H)return If=0,f0.iu|0;var W=Array.prototype.slice.call(arguments),S=o4(),u0=d5(4);k4[u0> Line truncated
`},y._BinaryenModulePrint(p),mn=W,S},H.emitStackIR=function(W){H.runPasses(["generate-stack-ir"]),W&&H.runPasses(["optimize-stack-ir"]),W=mn;let S="";return mn=u0=>{S+=u0+`
`},H.runPasses(["print-stack-ir"]),mn=W,S},H.emitAsmjs=function(){let W=mn,S="";return mn=u0=>{S+=u0+`
`},y._BinaryenModulePrintAsmjs(p),mn=W,S},H.validate=function(){return y._BinaryenModuleValidate(p)},H.optimize=function(){return y._BinaryenModuleOptimize(p)},H.optimizeFunction=function(W){return typeof W=="string"&&(W=H.getFunction(W)),y._BinaryenFunctionOptimize(W,p)},H.runPasses=function(W){return Lr(()=>y._BinaryenModuleRunPasses(p,z5(W.map(Wr)),W.length))},H.runPassesOnFunction=function(W,S){return typeof W=="string"&&(W=H.getFunction(W)),Lr(()=>y._BinaryenFunctionRunPasses(W,p,z5(S.map(Wr)),S.length))},H.autoDrop=function(){return y._BinaryenModuleAutoDrop(p)},H.dispose=function(){y._BinaryenModuleDispose(p)},H.emitBinary=function(W){return Lr(()=>{var S=d5(Ym0());y._BinaryenModuleAllocateAndWrite(S,p,Wr(W));let u0=wA[S>>>2],U=wA[(S>>>2)+1];S=wA[(S>>>2)+2];try{let O3=new Uint8Array(U);return O3.set(Mc.subarray(u0,u0+U)),typeof W=="undefined"?O3:{binary:O3,sourceMap:pk(S)}}finally{xg(u0),S&&xg(S)}})},H.interpret=function(){return y._BinaryenModuleInterpret(p)},H.addDebugInfoFileName=function(W){return Lr(()=>y._BinaryenModuleAddDebugInfoFileName(p,Wr(W)))},H.getDebugInfoFileName=function(W){return pk(y._BinaryenModuleGetDebugInfoFileName(p,W))},H.setDebugLocation=function(W,S,u0,U,O3){return y._BinaryenFunctionSetDebugLocation(W,S,u0,U,O3)},H.copyExpression=function(W){return y._BinaryenExpressionCopy(W,p)},H}y.wrapModule=xZ,y.Relooper=function(p){bn(p&&typeof p=="object"&&p.ptr&&p.block&&p.if);let H=y._RelooperCreate(p.ptr);this.ptr=H,this.addBlock=function(f0){return y._RelooperAddBlock(H,f0)},this.addBranch=function(f0,W,S,u0){return y._RelooperAddBranch(f0,W,S,u0)},this.addBlockWithSwitch=function(f0,W){return y._RelooperAddBlockWithSwitch(H,f0,W)},this.addBranchForSwitch=function(f0,W,S,u0){return Lr(()=>y._RelooperAddBranchForSwitch(f0,W,z5(S),S.length,u0))},this.renderAndDispose=function(f0,W){return y._RelooperRenderAndDispose(H,f0,W)}},y.ExpressionRunner=function(p,H,f0,W){let S=y._ExpressionRunnerCreate(p.ptr,H,f0,W);this.ptr=S,this.setLocalValue=function(u0,U){return!!y._ExpressionRunnerSetLocalValue(S,u0,U)},this.setGlobalValue=function(u0,U){return Lr(()=>!!y._ExpressionRunnerSetGlobalValue(S,Wr(u0),U))},this.runAndDispose=function(u0){return y._ExpressionRunnerRunAndDispose(S,u0)}};function P7(p,H,f0){H=H(p);let W=Array(H);for(let S=0;S<H;++S)W[S]=f0(p,S);return W}function Fa(p,H,f0,W,S,u0){let U=H.length;f0=f0(p);let O3=0;for(;O3<U;)O3<f0?W(p,O3,H[O3]):S(p,H[O3]),++O3;for(;f0>O3;)u0(p,--f0)}y.getExpressionId=function(p){return y._BinaryenExpressionGetId(p)},y.getExpressionType=function(p){return y._BinaryenExpressionGetType(p)},y.getExpressionInfo=function(p){let H=y._BinaryenExpressionGetId(p),f0=y._BinaryenExpressionGetType(p);switch(H){case y.BlockId:return{id:H,type:f0,name:pk(y._BinaryenBlockGetName(p)),children:P7(p,y._BinaryenBlockGetNumChildren,y._BinaryenBlockGetChildAt)};case y.IfId:return{id:H,type:f0,condition:y._BinaryenIfGetCondition(p),ifTrue:y._BinaryenIfGetIfTrue(p),ifFalse:y._BinaryenIfGetIfFalse(p)};case y.LoopId:return{id:H,type:f0,name:pk(y._BinaryenLoopGetName(p)),body:y._BinaryenLoopGetBody(p)};case y.BreakId:return{id:H,type:f0,name:pk(y._BinaryenBreakGetName(p)),condition:y._BinaryenBreakGetCondition(p),value:y._BinaryenBreakGetValue(p)};case y.SwitchId:return{id:H,type:f0,names:P7(p,y._BinaryenSwitchGetNumNames,y._BinaryenSwitchGetNameAt).map(S=>pk(S)),defaultName:pk(y._BinaryenSwitchGetDefaultName(p)),condition:y._BinaryenSwitchGetCondition(p),value:y._BinaryenSwitchGetValue(p)};case y.CallId:return{id:H,type:f0,isReturn:!!y._BinaryenCallIsReturn(p),target:pk(y._BinaryenCallGetTarget(p)),operands:P7(p,y._BinaryenCallGetNumOperands,y._BinaryenCallGetOperandAt)};case y.CallIndirectId:return{id:H,type:f0,isReturn:!!y._BinaryenCallIndirectIsReturn(p),target:y._BinaryenCallIndirectGetTarget(p),table:y._BinaryenCallIndirectGetTable(p),operands:P7(p,y._BinaryenCallIndirectGetNumOperands,y._BinaryenCallIndirectGetOperandAt)};case y.LocalGetId:return{id:H,type:f0,index:y._BinaryenLocalGetGetIndex(p)};case y.LocalSetId:return{id:H,type:f0,isTee:!!y._BinaryenLocalSetIsTee(p),index:y._BinaryenLocalSetGetIndex(p),value:y._BinaryenLocalSetGetValue(p)};case y.GlobalGetId:return{id:H,type:f0,name:pk(y._BinaryenGlobalGetGetName(p))};case y.GlobalSetId:return{id:H,type:f0,name:pk(y._BinaryenGlobalSetGetName(p)),value:y._BinaryenGlobalSetGetValue(p)};case y.LoadId:return{id:H,type:f0,isAtomic:!!y._BinaryenLoadIsAtomic(p),isSigned:!!y._BinaryenLoadIsSigned(p),offset:y._BinaryenLoadGetOffset(p),bytes:y._BinaryenLoadGetBytes(p),align:y._BinaryenLoadGetAlign(p),ptr:y._BinaryenLoadGetPtr(p)};case y.StoreId:return{id:H,type:f0,isAtomic:!!y._BinaryenStoreIsAtomic(p),offset:y._BinaryenStoreGetOffset(p),bytes:y._BinaryenStoreGetBytes(p),align:y._BinaryenStoreGetAlign(p),ptr:y._BinaryenStoreGetPtr(p),value:y._BinaryenStoreGetValue(p)};case y.ConstId:let W;switch(f0){case y.i32:W=y._BinaryenConstGetValueI32(p);break;case y.i64:W={low:y._BinaryenConstGetValueI64Low(p),high:y._BinaryenCons Line truncated
`},y._BinaryenExpressionPrint(p),mn=H,f0},Object.defineProperty(y,"readBinary",{writable:!0}),y.readBinary=function(p){let H=hA(p,0);return p=y._BinaryenModuleRead(H,p.length),xg(H),xZ(p)},y.parseText=function(p){let H=QI(p.length+1);return bl(p,H),p=y._BinaryenModuleParse(H),xg(H),xZ(p)},y.getOptimizeLevel=function(){return y._BinaryenGetOptimizeLevel()},y.setOptimizeLevel=function(p){y._BinaryenSetOptimizeLevel(p)},y.getShrinkLevel=function(){return y._BinaryenGetShrinkLevel()},y.setShrinkLevel=function(p){y._BinaryenSetShrinkLevel(p)},y.getDebugInfo=function(){return!!y._BinaryenGetDebugInfo()},y.setDebugInfo=function(p){y._BinaryenSetDebugInfo(p)},y.getLowMemoryUnused=function(){return!!y._BinaryenGetLowMemoryUnused()},y.setLowMemoryUnused=function(p){y._BinaryenSetLowMemoryUnused(p)},y.getFastMath=function(){return!!y._BinaryenGetFastMath()},y.setFastMath=function(p){y._BinaryenSetFastMath(p)},y.getPassArgument=function(p){return Lr(()=>{let H=y._BinaryenGetPassArgument(Wr(p));return H!==0?pk(H):null})},y.setPassArgument=function(p,H){Lr(()=>{y._BinaryenSetPassArgument(Wr(p),Wr(H))})},y.clearPassArguments=function(){y._BinaryenClearPassArguments()},y.getAlwaysInlineMaxSize=function(){return y._BinaryenGetAlwaysInlineMaxSize()},y.setAlwaysInlineMaxSize=function(p){y._BinaryenSetAlwaysInlineMaxSize(p)},y.getFlexibleInlineMaxSize=function(){return y._BinaryenGetFlexibleInlineMaxSize()},y.setFlexibleInlineMaxSize=function(p){y._BinaryenSetFlexibleInlineMaxSize(p)},y.getOneCallerInlineMaxSize=function(){return y._BinaryenGetOneCallerInlineMaxSize()},y.setOneCallerInlineMaxSize=function(p){y._BinaryenSetOneCallerInlineMaxSize(p)},y.getAllowInliningFunctionsWithLoops=function(){return!!y._BinaryenGetAllowInliningFunctionsWithLoops()},y.setAllowInliningFunctionsWithLoops=function(p){y._BinaryenSetAllowInliningFunctionsWithLoops(p)};let zg=Symbol();function I4(p){function H(f0){if(!(this instanceof H))return f0?new H(f0):null;ss.call(this,f0)}return Object.assign(H,ss),Object.assign(H,p),(H.prototype=Object.create(ss.prototype)).constructor=H,yR(H.prototype,p),H}function yR(p,H){Object.keys(H).forEach(f0=>{let W=H[f0];if(typeof W=="function"){p[f0]=function(...u0){return this.constructor[f0](this[zg],...u0)};var S;if(W.length===1&&(S=f0.match(/^(get|is)/))){S=S[1].length;let u0=f0.charAt(S).toLowerCase()+f0.substring(S+1),U=H["set"+f0.substring(S)];Object.defineProperty(p,u0,{get(){return W(this[zg])},set(O3){if(U)U(this[zg],O3);else throw Error("property '"+u0+"' has no setter")}})}}})}function ss(p){if(!p)throw Error("expression reference must not be null");this[zg]=p}ss.getId=function(p){return y._BinaryenExpressionGetId(p)},ss.getType=function(p){return y._BinaryenExpressionGetType(p)},ss.setType=function(p,H){y._BinaryenExpressionSetType(p,H)},ss.finalize=function(p){return y._BinaryenExpressionFinalize(p)},ss.toText=function(p){return y.emitText(p)},yR(ss.prototype,ss),ss.prototype.valueOf=function(){return this[zg]},y.Expression=ss,y.Block=I4({getName(p){return(p=y._BinaryenBlockGetName(p))?pk(p):null},setName(p,H){Lr(()=>{y._BinaryenBlockSetName(p,Wr(H))})},getNumChildren(p){return y._BinaryenBlockGetNumChildren(p)},getChildren(p){return P7(p,y._BinaryenBlockGetNumChildren,y._BinaryenBlockGetChildAt)},setChildren(p,H){Fa(p,H,y._BinaryenBlockGetNumChildren,y._BinaryenBlockSetChildAt,y._BinaryenBlockAppendChild,y._BinaryenBlockRemoveChildAt)},getChildAt(p,H){return y._BinaryenBlockGetChildAt(p,H)},setChildAt(p,H,f0){y._BinaryenBlockSetChildAt(p,H,f0)},appendChild(p,H){return y._BinaryenBlockAppendChild(p,H)},insertChildAt(p,H,f0){y._BinaryenBlockInsertChildAt(p,H,f0)},removeChildAt(p,H){return y._BinaryenBlockRemoveChildAt(p,H)}}),y.If=I4({getCondition(p){return y._BinaryenIfGetCondition(p)},setCondition(p,H){y._BinaryenIfSetCondition(p,H)},getIfTrue(p){return y._BinaryenIfGetIfTrue(p)},setIfTrue(p,H){y._BinaryenIfSetIfTrue(p,H)},getIfFalse(p){return y._BinaryenIfGetIfFalse(p)},setIfFalse(p,H){y._BinaryenIfSetIfFalse(p,H)}}),y.Loop=I4({getName(p){return(p=y._BinaryenLoopGetName(p))?pk(p):null},setName(p,H){Lr(()=>{y._BinaryenLoopSetName(p,Wr(H))})},getBody(p){return y._BinaryenLoopGetBody(p)},setBody(p,H){y._BinaryenLoopSetBody(p,H)}}),y.Break=I4({getName(p){return(p=y._BinaryenBreakGetName(p))?pk(p):null},setName(p,H){Lr(()=>{y._BinaryenBreakSetName(p,Wr(H))})},getCondition(p){return y._BinaryenBreakGetCondition(p)},setCondition(p,H){y._BinaryenBreakSetCondition(p,H)},getValue(p){return y._BinaryenBreakGetValue(p)},setValue(p,H){y._BinaryenBreakSetValue(p,H)}}),y.Switch=I4({getNumNames(p){return y._BinaryenSwitchGetNumNames(p)},getNames(p){return P7(p,y._BinaryenSwitchGetNumNames,y._BinaryenSwitchGetNameAt).map(H=>pk(H))},setNames(p,H){Lr(()=>{Fa(p,H.map(Wr),y._BinaryenSwitchGetNumNames,y._BinaryenSwitchSetNameAt,y._BinaryenSwitchAppendName,y._BinaryenSwitchRemoveNameAt)})},getDefaultName(p){return(p=y._BinaryenSwitchGetDefaultName(p))?pk(p):null},setDefaultName(p,H){Lr(()=>{y._BinaryenSwitchSetDefaultN Line truncated
`);return q}powercycle(){this.resetStartTimeMsec=new Date().getTime()-1,this.finished=!1,this.stopped=!1,this.basefuncs._ctor_var_reset(this.state),this.basefuncs._eval_initial(this.state);for(var q=0;q<100;q++){this.basefuncs._eval_settle(this.state),this.basefuncs._eval(this.state);var P0=this.basefuncs._change_request(this.state);if(!P0){this.settleTime=q;return}}throw new A4(null,"model did not converge on reset()")}eval(){var q=this.state.clk,P0=this.state.reset,q0=this.state.test_CPU16_top$cpu$state,J9=this.state.CPU$opcode,le=this.state.CPU$aluop,W9=q0;this.curfuncs=this.basefuncs;for(var oe=0;oe<100;oe++){this.curfuncs._eval(this.state);var vk=this.curfuncs._change_request(this.state);if(!vk){this.settleTime=oe;return}}throw new A4(null,"model did not converge on eval()")}tick2(q){for(;q-- >0;)this.state.clk=0,this.eval(),this.state.clk=1,this.eval()}defaultValue(q,P0){if(K7(q))return q.left<=31?0:BigInt(0);if(aA(q)&&typeof q.high.cvalue=="number"&&typeof q.low.cvalue=="number"){let q0,J9=q.high.cvalue-q.low.cvalue+1;if(J9<0&&(J9=-J9),K7(q.subtype))q.subtype.left<=7?q0=new Uint8Array(J9):q.subtype.left<=15?q0=new Uint16Array(J9):q.subtype.left<=31?q0=new Uint32Array(J9):q0=[];else{q0=[];for(let le=0;le<J9;le++)q0[le]=this.defaultValue(q.subtype)}if(P0!=null&&P0.initValue!=null)for(let le=0;le<P0.initValue.exprs.length;le++){let W9=P0.initValue.exprs[le];if(rR(W9)&&YI(W9.expr))q0[W9.index]=W9.expr.cvalue;else throw new A4(q,"non-const expr in initarray")}return q0}throw new A4(q,`no default value for var type: ${P0.name}`)}constValue(q){if(YI(q))return q.cvalue;throw new A4(q,"no const value for expr")}block2js(q){return this.expr2js(q)}expr2js(q,P0){if(q==null)return"/*null*/";if(Ma(q)){if(this.curconsts[q.refname]!=null&&!(P0||{}).store)return this.constused++,`${this.curconsts[q.refname]}`;if(this.locals[q.refname])return`${q.refname}`;if(this.globals[q.refname])return`o.${q.refname}`;throw new A4(q,`cannot find variable '${q.refname}'`)}else if(wZ(q)){this.locals[q.name]=q;let W9=`var ${q.name}`;if(q.constValue!=null)W9+=` = ${this.constValue(q)}`;else{if(q.initValue!=null)throw new A4(q,"can't init array here");K7(q.dtype)&&q.dtype.left>31&&(W9+=" = []")}return W9}else{if(YI(q))return`0x${q.cvalue.toString(16)}`;if(OF(q))return q.bigvalue.toString();if(qF(q))switch(q.op){case"if":return q.right==null||IZ(q.right)&&q.right.exprs.length==0?`if (${this.expr2js(q.cond,{cond:!0})}) { ${this.expr2js(q.left)} }`:`if (${this.expr2js(q.cond,{cond:!0})}) { ${this.expr2js(q.left)} } else { ${this.expr2js(q.right)} }`;case"cond":case"condbound":return`(${this.expr2js(q.cond,{cond:!0})} ? ${this.expr2js(q.left)} : ${this.expr2js(q.right)})`;default:throw new A4(q,`unknown triop ${q.op}`)}else if(Ng(q))switch(q.op){case"contassign":case"assign":case"assignpre":case"assigndly":case"assignpost":return`${this.expr2js(q.right,{store:!0})} = ${this.expr2js(q.left)}`;case"arraysel":case"wordsel":return`${this.expr2js(q.left)}[${this.expr2js(q.right)}]`;case"changedet":return`$$req |= (${this.expr2js(q.left)} ^ ${this.expr2js(q.right)}); ${this.expr2js(q.right)} = ${this.expr2js(q.left)}`;default:var q0=ca3[q.op];if(!q0)throw new A4(q,`unknown binop ${q.op}`);return q0.startsWith("?")&&(q0=q0.substr(1),!P0||!P0.cond)?`((${this.expr2js(q.left)} ${q0} ${this.expr2js(q.right)})?1:0)`:`(${this.expr2js(q.left)} ${q0} ${this.expr2js(q.right)})`}else if(PF(q))switch(q.op){case"ccast":return this.expr2js(q.left);case"creturn":return`return ${this.expr2js(q.left)}`;case"creset":return this.expr2reset(q.left);case"not":return`(~${this.expr2js(q.left)})`;case"negate":return`(-${this.expr2js(q.left)})`;case"extends":let W9=32-q.widthminv;return`((${this.expr2js(q.left)} << ${W9}) >> ${W9})`;case"redxor":return`this.$$${q.op}(${this.expr2js(q.left)})`;default:throw new A4(q,`unknown unop ${q.op}`)}else if(IZ(q)){var J9=q.exprs.map(W9=>this.expr2js(W9)).join(`;
`},y._BinaryenModulePrintAsmjs(p),mn=W,S},H.validate=function(){return y._BinaryenModuleValidate(p)},H.optimize=function(){return y._BinaryenModuleOptimize(p)},H.optimizeFunction=function(W){return typeof W=="string"&&(W=H.getFunction(W)),y._BinaryenFunctionOptimize(W,p)},H.runPasses=function(W){return Lr(()=>y._BinaryenModuleRunPasses(p,z5(W.map(Wr)),W.length))},H.runPassesOnFunction=function(W,S){return typeof W=="string"&&(W=H.getFunction(W)),Lr(()=>y._BinaryenFunctionRunPasses(W,p,z5(S.map(Wr)),S.length))},H.autoDrop=function(){return y._BinaryenModuleAutoDrop(p)},H.dispose=function(){y._BinaryenModuleDispose(p)},H.emitBinary=function(W){return Lr(()=>{var S=d5(Xm0());y._BinaryenModuleAllocateAndWrite(S,p,Wr(W));let u0=wA[S>>>2],U=wA[(S>>>2)+1];S=wA[(S>>>2)+2];try{let O3=new Uint8Array(U);return O3.set(Mc.subarray(u0,u0+U)),typeof W=="undefined"?O3:{binary:O3,sourceMap:pk(S)}}finally{xg(u0),S&&xg(S)}})},H.interpret=function(){return y._BinaryenModuleInterpret(p)},H.addDebugInfoFileName=function(W){return Lr(()=>y._BinaryenModuleAddDebugInfoFileName(p,Wr(W)))},H.getDebugInfoFileName=function(W){return pk(y._BinaryenModuleGetDebugInfoFileName(p,W))},H.setDebugLocation=function(W,S,u0,U,O3){return y._BinaryenFunctionSetDebugLocation(W,S,u0,U,O3)},H.copyExpression=function(W){return y._BinaryenExpressionCopy(W,p)},H}y.wrapModule=xZ,y.Relooper=function(p){bn(p&&typeof p=="object"&&p.ptr&&p.block&&p.if);let H=y._RelooperCreate(p.ptr);this.ptr=H,this.addBlock=function(f0){return y._RelooperAddBlock(H,f0)},this.addBranch=function(f0,W,S,u0){return y._RelooperAddBranch(f0,W,S,u0)},this.addBlockWithSwitch=function(f0,W){return y._RelooperAddBlockWithSwitch(H,f0,W)},this.addBranchForSwitch=function(f0,W,S,u0){return Lr(()=>y._RelooperAddBranchForSwitch(f0,W,z5(S),S.length,u0))},this.renderAndDispose=function(f0,W){return y._RelooperRenderAndDispose(H,f0,W)}},y.ExpressionRunner=function(p,H,f0,W){let S=y._ExpressionRunnerCreate(p.ptr,H,f0,W);this.ptr=S,this.setLocalValue=function(u0,U){return!!y._ExpressionRunnerSetLocalValue(S,u0,U)},this.setGlobalValue=function(u0,U){return Lr(()=>!!y._ExpressionRunnerSetGlobalValue(S,Wr(u0),U))},this.runAndDispose=function(u0){return y._ExpressionRunnerRunAndDispose(S,u0)}};function P7(p,H,f0){H=H(p);let W=Array(H);for(let S=0;S<H;++S)W[S]=f0(p,S);return W}function Fa(p,H,f0,W,S,u0){let U=H.length;f0=f0(p);let O3=0;for(;O3<U;)O3<f0?W(p,O3,H[O3]):S(p,H[O3]),++O3;for(;f0>O3;)u0(p,--f0)}y.getExpressionId=function(p){return y._BinaryenExpressionGetId(p)},y.getExpressionType=function(p){return y._BinaryenExpressionGetType(p)},y.getExpressionInfo=function(p){let H=y._BinaryenExpressionGetId(p),f0=y._BinaryenExpressionGetType(p);switch(H){case y.BlockId:return{id:H,type:f0,name:pk(y._BinaryenBlockGetName(p)),children:P7(p,y._BinaryenBlockGetNumChildren,y._BinaryenBlockGetChildAt)};case y.IfId:return{id:H,type:f0,condition:y._BinaryenIfGetCondition(p),ifTrue:y._BinaryenIfGetIfTrue(p),ifFalse:y._BinaryenIfGetIfFalse(p)};case y.LoopId:return{id:H,type:f0,name:pk(y._BinaryenLoopGetName(p)),body:y._BinaryenLoopGetBody(p)};case y.BreakId:return{id:H,type:f0,name:pk(y._BinaryenBreakGetName(p)),condition:y._BinaryenBreakGetCondition(p),value:y._BinaryenBreakGetValue(p)};case y.SwitchId:return{id:H,type:f0,names:P7(p,y._BinaryenSwitchGetNumNames,y._BinaryenSwitchGetNameAt).map(S=>pk(S)),defaultName:pk(y._BinaryenSwitchGetDefaultName(p)),condition:y._BinaryenSwitchGetCondition(p),value:y._BinaryenSwitchGetValue(p)};case y.CallId:return{id:H,type:f0,isReturn:!!y._BinaryenCallIsReturn(p),target:pk(y._BinaryenCallGetTarget(p)),operands:P7(p,y._BinaryenCallGetNumOperands,y._BinaryenCallGetOperandAt)};case y.CallIndirectId:return{id:H,type:f0,isReturn:!!y._BinaryenCallIndirectIsReturn(p),target:y._BinaryenCallIndirectGetTarget(p),table:y._BinaryenCallIndirectGetTable(p),operands:P7(p,y._BinaryenCallIndirectGetNumOperands,y._BinaryenCallIndirectGetOperandAt)};case y.LocalGetId:return{id:H,type:f0,index:y._BinaryenLocalGetGetIndex(p)};case y.LocalSetId:return{id:H,type:f0,isTee:!!y._BinaryenLocalSetIsTee(p),index:y._BinaryenLocalSetGetIndex(p),value:y._BinaryenLocalSetGetValue(p)};case y.GlobalGetId:return{id:H,type:f0,name:pk(y._BinaryenGlobalGetGetName(p))};case y.GlobalSetId:return{id:H,type:f0,name:pk(y._BinaryenGlobalSetGetName(p)),value:y._BinaryenGlobalSetGetValue(p)};case y.LoadId:return{id:H,type:f0,isAtomic:!!y._BinaryenLoadIsAtomic(p),isSigned:!!y._BinaryenLoadIsSigned(p),offset:y._BinaryenLoadGetOffset(p),bytes:y._BinaryenLoadGetBytes(p),align:y._BinaryenLoadGetAlign(p),ptr:y._BinaryenLoadGetPtr(p)};case y.StoreId:return{id:H,type:f0,isAtomic:!!y._BinaryenStoreIsAtomic(p),offset:y._BinaryenStoreGetOffset(p),bytes:y._BinaryenStoreGetBytes(p),align:y._BinaryenStoreGetAlign(p),ptr:y._BinaryenStoreGetPtr(p),value:y._BinaryenStoreGetValue(p)};case y.ConstId:let W;switch(f0){case y.i32:W=y._BinaryenConstGetValueI32(p);break;case y.i64:W={low:y._BinaryenConstGetValueI64Low(p),high:y._BinaryenCons Line truncated
`},y._BinaryenExpressionPrint(p),mn=H,f0},Object.defineProperty(y,"readBinary",{writable:!0}),y.readBinary=function(p){let H=hA(p,0);return p=y._BinaryenModuleRead(H,p.length),xg(H),xZ(p)},y.parseText=function(p){let H=QI(p.length+1);return bl(p,H),p=y._BinaryenModuleParse(H),xg(H),xZ(p)},y.getOptimizeLevel=function(){return y._BinaryenGetOptimizeLevel()},y.setOptimizeLevel=function(p){y._BinaryenSetOptimizeLevel(p)},y.getShrinkLevel=function(){return y._BinaryenGetShrinkLevel()},y.setShrinkLevel=function(p){y._BinaryenSetShrinkLevel(p)},y.getDebugInfo=function(){return!!y._BinaryenGetDebugInfo()},y.setDebugInfo=function(p){y._BinaryenSetDebugInfo(p)},y.getLowMemoryUnused=function(){return!!y._BinaryenGetLowMemoryUnused()},y.setLowMemoryUnused=function(p){y._BinaryenSetLowMemoryUnused(p)},y.getFastMath=function(){return!!y._BinaryenGetFastMath()},y.setFastMath=function(p){y._BinaryenSetFastMath(p)},y.getPassArgument=function(p){return Lr(()=>{let H=y._BinaryenGetPassArgument(Wr(p));return H!==0?pk(H):null})},y.setPassArgument=function(p,H){Lr(()=>{y._BinaryenSetPassArgument(Wr(p),Wr(H))})},y.clearPassArguments=function(){y._BinaryenClearPassArguments()},y.getAlwaysInlineMaxSize=function(){return y._BinaryenGetAlwaysInlineMaxSize()},y.setAlwaysInlineMaxSize=function(p){y._BinaryenSetAlwaysInlineMaxSize(p)},y.getFlexibleInlineMaxSize=function(){return y._BinaryenGetFlexibleInlineMaxSize()},y.setFlexibleInlineMaxSize=function(p){y._BinaryenSetFlexibleInlineMaxSize(p)},y.getOneCallerInlineMaxSize=function(){return y._BinaryenGetOneCallerInlineMaxSize()},y.setOneCallerInlineMaxSize=function(p){y._BinaryenSetOneCallerInlineMaxSize(p)},y.getAllowInliningFunctionsWithLoops=function(){return!!y._BinaryenGetAllowInliningFunctionsWithLoops()},y.setAllowInliningFunctionsWithLoops=function(p){y._BinaryenSetAllowInliningFunctionsWithLoops(p)};let zg=Symbol();function I4(p){function H(f0){if(!(this instanceof H))return f0?new H(f0):null;ss.call(this,f0)}return Object.assign(H,ss),Object.assign(H,p),(H.prototype=Object.create(ss.prototype)).constructor=H,yR(H.prototype,p),H}function yR(p,H){Object.keys(H).forEach(f0=>{let W=H[f0];if(typeof W=="function"){p[f0]=function(...u0){return this.constructor[f0](this[zg],...u0)};var S;if(W.length===1&&(S=f0.match(/^(get|is)/))){S=S[1].length;let u0=f0.charAt(S).toLowerCase()+f0.substring(S+1),U=H["set"+f0.substring(S)];Object.defineProperty(p,u0,{get(){return W(this[zg])},set(O3){if(U)U(this[zg],O3);else throw Error("property '"+u0+"' has no setter")}})}}})}function ss(p){if(!p)throw Error("expression reference must not be null");this[zg]=p}ss.getId=function(p){return y._BinaryenExpressionGetId(p)},ss.getType=function(p){return y._BinaryenExpressionGetType(p)},ss.setType=function(p,H){y._BinaryenExpressionSetType(p,H)},ss.finalize=function(p){return y._BinaryenExpressionFinalize(p)},ss.toText=function(p){return y.emitText(p)},yR(ss.prototype,ss),ss.prototype.valueOf=function(){return this[zg]},y.Expression=ss,y.Block=I4({getName(p){return(p=y._BinaryenBlockGetName(p))?pk(p):null},setName(p,H){Lr(()=>{y._BinaryenBlockSetName(p,Wr(H))})},getNumChildren(p){return y._BinaryenBlockGetNumChildren(p)},getChildren(p){return P7(p,y._BinaryenBlockGetNumChildren,y._BinaryenBlockGetChildAt)},setChildren(p,H){Fa(p,H,y._BinaryenBlockGetNumChildren,y._BinaryenBlockSetChildAt,y._BinaryenBlockAppendChild,y._BinaryenBlockRemoveChildAt)},getChildAt(p,H){return y._BinaryenBlockGetChildAt(p,H)},setChildAt(p,H,f0){y._BinaryenBlockSetChildAt(p,H,f0)},appendChild(p,H){return y._BinaryenBlockAppendChild(p,H)},insertChildAt(p,H,f0){y._BinaryenBlockInsertChildAt(p,H,f0)},removeChildAt(p,H){return y._BinaryenBlockRemoveChildAt(p,H)}}),y.If=I4({getCondition(p){return y._BinaryenIfGetCondition(p)},setCondition(p,H){y._BinaryenIfSetCondition(p,H)},getIfTrue(p){return y._BinaryenIfGetIfTrue(p)},setIfTrue(p,H){y._BinaryenIfSetIfTrue(p,H)},getIfFalse(p){return y._BinaryenIfGetIfFalse(p)},setIfFalse(p,H){y._BinaryenIfSetIfFalse(p,H)}}),y.Loop=I4({getName(p){return(p=y._BinaryenLoopGetName(p))?pk(p):null},setName(p,H){Lr(()=>{y._BinaryenLoopSetName(p,Wr(H))})},getBody(p){return y._BinaryenLoopGetBody(p)},setBody(p,H){y._BinaryenLoopSetBody(p,H)}}),y.Break=I4({getName(p){return(p=y._BinaryenBreakGetName(p))?pk(p):null},setName(p,H){Lr(()=>{y._BinaryenBreakSetName(p,Wr(H))})},getCondition(p){return y._BinaryenBreakGetCondition(p)},setCondition(p,H){y._BinaryenBreakSetCondition(p,H)},getValue(p){return y._BinaryenBreakGetValue(p)},setValue(p,H){y._BinaryenBreakSetValue(p,H)}}),y.Switch=I4({getNumNames(p){return y._BinaryenSwitchGetNumNames(p)},getNames(p){return P7(p,y._BinaryenSwitchGetNumNames,y._BinaryenSwitchGetNameAt).map(H=>pk(H))},setNames(p,H){Lr(()=>{Fa(p,H.map(Wr),y._BinaryenSwitchGetNumNames,y._BinaryenSwitchSetNameAt,y._BinaryenSwitchAppendName,y._BinaryenSwitchRemoveNameAt)})},getDefaultName(p){return(p=y._BinaryenSwitchGetDefaultName(p))?pk(p):null},setDefaultName(p,H){Lr(()=>{y._BinaryenSwitchSetDefaultN Line truncated
`);return q}powercycle(){this.resetStartTimeMsec=new Date().getTime()-1,this.finished=!1,this.stopped=!1,this.basefuncs._ctor_var_reset(this.state),this.basefuncs._eval_initial(this.state);for(var q=0;q<100;q++){this.basefuncs._eval_settle(this.state),this.basefuncs._eval(this.state);var P0=this.basefuncs._change_request(this.state);if(!P0){this.settleTime=q;return}}throw new A4(null,"model did not converge on reset()")}eval(){var q=this.state.clk,P0=this.state.reset,q0=this.state.test_CPU16_top$cpu$state,J9=this.state.CPU$opcode,le=this.state.CPU$aluop,W9=q0;this.curfuncs=this.basefuncs;for(var oe=0;oe<100;oe++){this.curfuncs._eval(this.state);var vk=this.curfuncs._change_request(this.state);if(!vk){this.settleTime=oe;return}}throw new A4(null,"model did not converge on eval()")}tick2(q){for(;q-- >0;)this.state.clk=0,this.eval(),this.state.clk=1,this.eval()}defaultValue(q,P0){if(K7(q))return q.left<=31?0:BigInt(0);if(aA(q)&&typeof q.high.cvalue=="number"&&typeof q.low.cvalue=="number"){let q0,J9=q.high.cvalue-q.low.cvalue+1;if(J9<0&&(J9=-J9),K7(q.subtype))q.subtype.left<=7?q0=new Uint8Array(J9):q.subtype.left<=15?q0=new Uint16Array(J9):q.subtype.left<=31?q0=new Uint32Array(J9):q0=[];else{q0=[];for(let le=0;le<J9;le++)q0[le]=this.defaultValue(q.subtype)}if(P0!=null&&P0.initValue!=null)for(let le=0;le<P0.initValue.exprs.length;le++){let W9=P0.initValue.exprs[le];if(rR(W9)&&YI(W9.expr))q0[W9.index]=W9.expr.cvalue;else throw new A4(q,"non-const expr in initarray")}return q0}throw new A4(q,`no default value for var type: ${P0.name}`)}constValue(q){if(YI(q))return q.cvalue;throw new A4(q,"no const value for expr")}block2js(q){return this.expr2js(q)}expr2js(q,P0){if(q==null)return"/*null*/";if(Ma(q)){if(this.curconsts[q.refname]!=null&&!(P0||{}).store)return this.constused++,`${this.curconsts[q.refname]}`;if(this.locals[q.refname])return`${q.refname}`;if(this.globals[q.refname])return`o.${q.refname}`;throw new A4(q,`cannot find variable '${q.refname}'`)}else if(wZ(q)){this.locals[q.name]=q;let W9=`var ${q.name}`;if(q.constValue!=null)W9+=` = ${this.constValue(q)}`;else{if(q.initValue!=null)throw new A4(q,"can't init array here");K7(q.dtype)&&q.dtype.left>31&&(W9+=" = []")}return W9}else{if(YI(q))return`0x${q.cvalue.toString(16)}`;if(OF(q))return q.bigvalue.toString();if(qF(q))switch(q.op){case"if":return q.right==null||IZ(q.right)&&q.right.exprs.length==0?`if (${this.expr2js(q.cond,{cond:!0})}) { ${this.expr2js(q.left)} }`:`if (${this.expr2js(q.cond,{cond:!0})}) { ${this.expr2js(q.left)} } else { ${this.expr2js(q.right)} }`;case"cond":case"condbound":return`(${this.expr2js(q.cond,{cond:!0})} ? ${this.expr2js(q.left)} : ${this.expr2js(q.right)})`;default:throw new A4(q,`unknown triop ${q.op}`)}else if(Ng(q))switch(q.op){case"contassign":case"assign":case"assignpre":case"assigndly":case"assignpost":return`${this.expr2js(q.right,{store:!0})} = ${this.expr2js(q.left)}`;case"arraysel":case"wordsel":return`${this.expr2js(q.left)}[${this.expr2js(q.right)}]`;case"changedet":return`$$req |= (${this.expr2js(q.left)} ^ ${this.expr2js(q.right)}); ${this.expr2js(q.right)} = ${this.expr2js(q.left)}`;default:var q0=ua3[q.op];if(!q0)throw new A4(q,`unknown binop ${q.op}`);return q0.startsWith("?")&&(q0=q0.substr(1),!P0||!P0.cond)?`((${this.expr2js(q.left)} ${q0} ${this.expr2js(q.right)})?1:0)`:`(${this.expr2js(q.left)} ${q0} ${this.expr2js(q.right)})`}else if(PF(q))switch(q.op){case"ccast":return this.expr2js(q.left);case"creturn":return`return ${this.expr2js(q.left)}`;case"creset":return this.expr2reset(q.left);case"not":return`(~${this.expr2js(q.left)})`;case"negate":return`(-${this.expr2js(q.left)})`;case"extends":let W9=32-q.widthminv;return`((${this.expr2js(q.left)} << ${W9}) >> ${W9})`;case"redxor":return`this.$$${q.op}(${this.expr2js(q.left)})`;default:throw new A4(q,`unknown unop ${q.op}`)}else if(IZ(q)){var J9=q.exprs.map(W9=>this.expr2js(W9)).join(`;
`);if(q.name){if(q.name.startsWith("_change_request"))return`var $$req = 0;
${J9}
;return $$req;`;if(q.blocktype=="sformatf"){var le=q.exprs.map(W9=>this.expr2js(W9));return le=[JSON.stringify(q.name)].concat(le),le.join(", ")}}return J9}else{if($F(q))return`for (${this.expr2js(q.precond)}; ${this.expr2js(q.loopcond)}; ${this.expr2js(q.inc)}) { ${this.expr2js(q.body)} }`;if(eR(q))return(q.funcname=="$stop"||q.funcname=="$finish")&&q.$loc?`this.${q.funcname}(o, ${JSON.stringify(q.$loc)})`:q.args==null||q.args.length==0?`this.${q.funcname}(o)`:`this.${q.funcname}(o, ${q.args.map(W9=>this.expr2js(W9)).join(", ")})`}}throw console.log(q),new Error(`unrecognized expr: ${JSON.stringify(q)}`)}expr2reset(q){if(Ma(q)){if(this.curconsts[q.refname]!=null)return`${q.refname}`;if(K7(q.dtype))return q.dtype.left<=31?`${this.expr2js(q)} = 0`:`${this.expr2js(q)} = BigInt(0)`;if(aA(q.dtype)){if(K7(q.dtype.subtype))return`${this.expr2js(q)}.fill(0)`;if(aA(q.dtype.subtype)&&K7(q.dtype.subtype.subtype))return`${this.expr2js(q)}.forEach((a) => a.fill(0))`;throw new A4(q,`unsupported data type for reset: ${JSON.stringify(q.dtype)}`)}}else throw new A4(q,"can only reset var refs")}$finish(q,P0){this.finished||(console.log("Simulation $finish",P0),this.finished=!0)}$stop(q,P0){this.stopped||(console.log("Simulation $stop",P0),this.stopped=!0)}$rand(q){return Math.random()|0}$display(q,P0,...q0){console.log(P0,q0)}$readmem(q,P0,q0,J9,le,W9){for(var oe=[],vk=0;vk<P0.length;vk++)oe.push(P0[vk]>>0&255),oe.push(P0[vk]>>8&255),oe.push(P0[vk]>>16&255),oe.push(P0[vk]>>24&255);oe=oe.filter(p7=>p7!=0),oe.reverse();var Y4=qy0(oe),Nn=this.getFileData(Y4);if(Nn==null)throw new A4(null,"Could not $readmem '"+Y4+"'");var wf=Nn.split(`
`).filter(p7=>p7!=="").map(p7=>parseInt(p7,W9?16:2));if(console.log("$readmem",W9,Y4,wf.length),q0===null)throw new A4(null,"No destination array to $readmem "+Y4);if(q0.length<wf.length)throw new A4(null,"Destination array too small to $readmem "+Y4);for(vk=0;vk<wf.length;vk++)q0[vk]=wf[vk]}$time(q){return new Date().getTime()-this.resetStartTimeMsec}$$redxor(q){return q=q^q>>1,q=q^q>>2,q=q^q>>4,q=q^q>>8,q=q^q>>16,q}isStopped(){return this.stopped}isFinished(){return this.finished}tick(){this.state.clk^=1,this.eval()}get(q){return this.state[q]}set(q,P0){q in this.state&&(this.state[q]=P0)}saveState(){return HP(!0,{},this.state)}getGlobals(){return this.saveState()}loadState(q){HP(!0,this.state,q)}},ca3={eq:"?===",neq:"?!==",gt:"?>",lt:"?<",gte:"?>=",lte:"?<=",and:"&",or:"|",xor:"^",add:"+",sub:"-",shiftr:">>>",shiftl:"<<",mul:"*",moddiv:"%",div:"/",muls:"*",moddivs:"%",divs:"/",gts:"?>",gtes:"?>=",lts:"?<",ltes:"?<="};var bk=na3(sm0());var ua3=["_ctor_var_reset","_eval_initial","_eval_settle","_eval","_change_request"],Fg=0,Am0="$$MEM",sa3="$$GLOBAL",SP="$$CHANGE",JP="$$treclen",DP="$$tofs",_P="$$tend",TP="$$tbuf";function Pt(y){if(K7(y))return y.left<=7?1:y.left<=15?2:y.left<=31?4:y.left<=63?8:(y.left>>6)*8+8;if(aA(y))return(Math.abs(y.high.cvalue-y.low.cvalue)+1)*Pt(y.subtype);throw new A4(y,"don't know data type")}function Aa3(y){return Pt(y)>8}function lm0(y){return aA(y)?lm0(y.subtype):Pt(y)}function om0(y){if(ml(y)&&aA(y.dtype))return Pt(y.dtype.subtype);throw ml(y)&&K7(y.dtype)&&y.dtype.left>63?new A4(y,"elements > 64 bits not supported"):new A4(y,"cannot figure out array element size")}function oa3(y){return Pt(fR(y))}function fR(y){if(Ma(y)){for(var q=y.dtype;aA(q);)q=q.subtype;return q}else{if(Ng(y)&&y.op=="arraysel")return fR(y.left);if(Ng(y)&&y.op=="wordsel")return fR(y.left)}throw new A4(y,"cannot figure out array value type")}function la3(y){return y<=1?1:y<=2?2:y<=4?4:8}function iR(y){return y<=4?bk.i32:y<=8?bk.i64:bk.none}var nR=class{constructor(){this.len=0;this.vars={};this.locals=[];this.params=[]}addVar(q){var P0=Pt(q.dtype),q0=this.addEntry(q.name,P0,iR(P0),q.dtype,!1);return q0.init=q.initValue,q0.constval=q.constValue,q0}alignTo(q){for(;this.len%q;)this.len++}addEntry(q,P0,q0,J9,le){this.alignTo(la3(P0));var W9={name:q,type:J9,size:P0,itype:q0,index:this.params.length+this.locals.length,offset:this.len,init:null,constval:null,reset:!1};return this.len+=P0,W9.name!=null&&(this.vars[W9.name]=W9),le?this.params.push(W9):this.locals.push(W9),W9}getLocals(){var q=[];for(let P0 of this.locals)q.push(P0.itype);return q}lookup(q){return this.vars[q]}},TB=class{constructor(q,P0,q0){this.getFileData=null;this.optimize=!1;this.maxEvalIterations=8;this.traceBufferSize=1044480;this.randomizeOnReset=!1;this.labelseq=0;this.hdlmod=q,this.constpool=P0,this.maxMemoryMB=q0||16,this.genMemory(),this.genFuncs(),this.validate()}async init(){await this.genModule(),this.genStateInterface(),this.enableTracing()}initSync(){this.genModuleSync(),this.genStateInterface(),this.enableTracing()}powercycle(){this.resetStartTimeMsec=new Date().getTime()-1,this.finished=!1,this.stopped=!1,this.clearMutableState(),this.setInitialValues(),this.instance.exports._ctor_var_reset(Fg),this.instance.exports._eval_initial(Fg);for(var q=0;q<100;q++){this.instance.exports._eval_settle(Fg),this.instance.exports._eval(Fg);var P0=this.instance.exports._change_request(Fg);if(!P0)return}throw new A4(null,"model did not converge on reset()")}eval(){this.instance.exports.eval(Fg)}tick(){this.state.clk^=1,this.eval()}tick2(q){this.instance.exports.tick2(Fg,q)}isFinished(){return this.finished}isStopped(){return this.stopped}saveState(){return{o:this.data8.slice(0,this.statebytes)}}loadState(q){this.data8.set(q.o)}getGlobals(){var q={};for(let[le,W9]of Object.entries(this.hdlmod.vardefs)){var P0=q,q0=le.split("$");for(var J9 of q0.slice(0,-1))P0[J9]=P0[J9]||{},P0=P0[J9];P0[q0[q0.length-1]]=this.state[le]}return q}enableTracing(){if(this.outputbytes==0)throw new Error("outputbytes == 0");if(this.outputbytes%8)throw new Error("outputbytes must be 8-byte aligned");if(this.traceBufferSize%8)throw new Error("trace buffer size must be 8-byte aligned");this.traceStartOffset=this.globals.lookup(TP).offset,this.traceEndOffset=this.traceStartOffset+this.traceBufferSize-this.outputbytes,this.state[_P]=this.traceEndOffset,this.state[JP]=this.outputbytes,this.resetTrace(),this.trace=this.makeScopeProxy(()=>this.traceReadOffset)}resetTrace(){this.traceReadOffset=this.traceStartOffset,this.state[DP]=this.traceStartOffset}nextTrace(){this.traceReadOffset+=this.outputbytes,this.traceReadOffset>=this.traceEndOffset&&(this.traceReadOffset=this.traceStartOffset)}getTraceRecordSize(){return this.traceRecordSize}dispose(){this.bmod&&(this.bmod.dispose(),this.bmod=null,this.instance=null,this.databuf=null,this.data8=null,this.data16=null,this.data32=null)}genMemory(){this.bmod=new bk.Module,this.bmod.setFeatures(bk.Features.SignExt),this.genTypes();var q=t Line truncated
`).filter(Y4=>Y4!=="").map(Y4=>parseInt(Y4,oe?16:2)),J9=0;J9<vk.length;J9++)this.data8[P0+J9]=vk[J9];return 0}label(q){return`@${q||"label"}_${++this.labelseq}`}addCopyTraceRecFunction(){let q=this.bmod,P0=this.globals.lookup(JP).offset,q0=this.globals.lookup(DP).offset,J9=this.globals.lookup(_P).offset,le=this.globals.lookup(TP).offset;var W9=bk.i32,oe=bk.none,vk=this.label("@block"),Y4=this.label("@loop");q.addFunction("copyTraceRec",bk.createType([]),oe,[W9,W9,W9],q.block(vk,[q.local.set(0,q.i32.const(Fg)),q.local.set(1,q.i32.load(0,4,q.i32.const(P0))),q.local.set(2,q.i32.load(0,4,q.i32.const(q0))),q.loop(Y4,q.block(null,[q.i64.store(0,8,q.local.get(2,W9),q.i64.load(0,8,q.local.get(0,W9))),q.local.set(0,q.i32.add(q.local.get(0,W9),q.i32.const(8))),q.local.set(2,q.i32.add(q.local.get(2,W9),q.i32.const(8))),q.local.set(1,q.i32.sub(q.local.get(1,W9),q.i32.const(8))),this.bmod.br_if(Y4,q.local.get(1,W9))])),q.i32.store(0,4,q.i32.const(q0),q.i32.add(q.i32.load(0,4,q.i32.const(q0)),q.i32.load(0,4,q.i32.const(P0)))),q.br_if(vk,q.i32.lt_u(q.i32.load(0,4,q.i32.const(q0)),q.i32.load(0,4,q.i32.const(J9)))),q.i32.store(0,4,q.i32.const(q0),q.i32.const(le))]))}addTick2Function(){let q=this.bmod;var P0=this.label("@loop");if(this.globals.lookup("clk")){var q0=q.local.get(0,bk.i32);q.addFunction("tick2",bk.createType([bk.i32,bk.i32]),bk.none,[],q.loop(P0,q.block(null,[this.makeSetVariableFunction("clk",0),q.drop(q.call("eval",[q0],bk.i32)),this.makeSetVariableFunction("clk",1),q.drop(q.call("eval",[q0],bk.i32)),q.call("copyTraceRec",[],bk.none),q.br_if(P0,q.local.tee(1,q.i32.sub(q.local.get(1,bk.i32),q.i32.const(1)),bk.i32))]))),q.addFunctionExport("tick2","tick2")}else q.addFunctionExport("eval","tick2")}addEvalFunction(){this.bmod.addFunction("eval",bk.createType([bk.i32]),bk.i32,[],this.makeTickFuncBody(0)),this.bmod.addFunctionExport("eval","eval")}makeGetVariableFunction(q,P0){var q0=this.globals.lookup(q).type,J9={refname:q,dtype:q0};return this.e2w(J9)}makeSetVariableFunction(q,P0){var q0=this.globals.lookup(q).type,J9={refname:q,dtype:q0},le={cvalue:P0,bigvalue:null,dtype:q0};return this.assign2wasm(J9,le)}makeTickFuncBody(q){var P0=this.bmod.local.get(0,bk.i32);return q>this.maxEvalIterations?this.bmod.i32.const(q):this.bmod.block(null,[this.bmod.call("_eval",[P0],bk.none),this.bmod.if(this.bmod.call("_change_request",[P0],bk.i32),this.makeTickFuncBody(q+1),this.bmod.return(this.bmod.local.get(0,bk.i32)))],bk.i32)}funcResult(q){return q.startsWith("_change_request")?bk.i32:q=="$time"?bk.i64:q=="$rand"?bk.i32:bk.none}pushScope(q){q.parent=this.locals,this.locals=q}popScope(){this.locals=this.locals.parent}i3264(q){var P0=Pt(q),q0=iR(P0);if(q0==bk.i32)return this.bmod.i32;if(q0==bk.i64)return this.bmod.i64;throw new A4(q,"data types > 64 bits not supported")}i3264rel(q){if(ml(q.left)&&ml(q.right)){var P0=Pt(q.left.dtype),q0=Pt(q.right.dtype);return P0>q0?this.i3264(q.left.dtype):this.i3264(q.right.dtype)}throw new A4(q,`can't ${q.op} arguments`)}dataptr(){return this.bmod.local.get(0,bk.i32)}e2w(q,P0){if(q==null)return this.bmod.nop();if(IZ(q))return this.block2wasm(q,P0);if(wZ(q))return this.local2wasm(q,P0);if(Ma(q))return this.varref2wasm(q,P0);if(YI(q)||OF(q))return this.const2wasm(q,P0);if(eR(q))return this.funccall2wasm(q,P0);if(PF(q)||Ng(q)||qF(q)||$F(q)){var q0=`_${q.op}2wasm`,J9=this[q0];if(J9==null)throw new A4(q,`no such method ${q0}`);return this[q0](q,P0)}else throw new A4(q,"could not translate expr")}block2wasm(q,P0){var q0=q.exprs.map(le=>this.e2w(le)),J9=P0&&P0.funcblock?this.funcResult(P0.funcblock.name):bk.none;return J9==bk.i32&&q0.push(this.bmod.return(this.bmod.local.get(this.locals.lookup(SP).index,J9))),P0&&P0.resulttype&&(J9=bk.i32),this.bmod.block(q.name,q0,J9)}funccall2wasm(q,P0){var q0=[this.dataptr()];for(var J9 of q.args)q0.push(this.e2w(J9,{funcarg:!0}));var le=q.funcname;q.funcname.startsWith("$")&&((q.funcname=="$stop"||q.funcname=="$finish")&&q.$loc&&(q0=[this.bmod.i32.const(q.$loc.line)]),le+="_"+(q0.length-1));var W9=this.funcResult(q.funcname);return this.bmod.call(le,q0,W9)}const2wasm(q,P0){var q0=Pt(q.dtype);if(K7(q.dtype))if(q.bigvalue!=null){let J9=q.bigvalue&BigInt(4294967295),le=q.bigvalue>>BigInt(32)&BigInt(4294967295);return this.i3264(q.dtype).const(Number(J9),Number(le))}else{if(q0<=4)return this.bmod.i32.const(q.cvalue|0);if(q0<=8)return this.bmod.i64.const(q.cvalue|0,0);throw new A4(q,"constants > 64 bits not supported")}else throw new A4(q,"non-logic constants not supported")}varref2wasm(q,P0){if(P0&&P0.store)throw Error("cannot store here");var q0=this.locals&&this.locals.lookup(q.refname),J9=this.globals.lookup(q.refname);if(q0!=null)return this.bmod.local.get(q0.index,q0.itype);if(J9!=null)return J9.size>8&&P0&&P0.funcarg?this.address2wasm(q):this.loadmem(q,this.dataptr(),J9.offset,J9.size);throw new A4(q,`cannot lookup variable ${q.refname}`)}local2wasm(q,P0){var q0=this.locals.lookup(q.name);return this.bmod.nop()}assign2wasm(q,P0){var q0=this.e2w(P0);if(Ma( Line truncated
`).filter(p7=>p7!=="").map(p7=>parseInt(p7,W9?16:2));if(console.log("$readmem",W9,Y4,wf.length),q0===null)throw new A4(null,"No destination array to $readmem "+Y4);if(q0.length<wf.length)throw new A4(null,"Destination array too small to $readmem "+Y4);for(vk=0;vk<wf.length;vk++)q0[vk]=wf[vk]}$time(q){return new Date().getTime()-this.resetStartTimeMsec}$$redxor(q){return q=q^q>>1,q=q^q>>2,q=q^q>>4,q=q^q>>8,q=q^q>>16,q}isStopped(){return this.stopped}isFinished(){return this.finished}tick(){this.state.clk^=1,this.eval()}get(q){return this.state[q]}set(q,P0){q in this.state&&(this.state[q]=P0)}saveState(){return HP(!0,{},this.state)}getGlobals(){return this.saveState()}loadState(q){HP(!0,this.state,q)}},ua3={eq:"?===",neq:"?!==",gt:"?>",lt:"?<",gte:"?>=",lte:"?<=",and:"&",or:"|",xor:"^",add:"+",sub:"-",shiftr:">>>",shiftl:"<<",mul:"*",moddiv:"%",div:"/",muls:"*",moddivs:"%",divs:"/",gts:"?>",gtes:"?>=",lts:"?<",ltes:"?<="};var bk=ta3(Am0());var sa3=["_ctor_var_reset","_eval_initial","_eval_settle","_eval","_change_request"],Fg=0,om0="$$MEM",Aa3="$$GLOBAL",SP="$$CHANGE",JP="$$treclen",DP="$$tofs",_P="$$tend",TP="$$tbuf";function Pt(y){if(K7(y))return y.left<=7?1:y.left<=15?2:y.left<=31?4:y.left<=63?8:(y.left>>6)*8+8;if(aA(y))return(Math.abs(y.high.cvalue-y.low.cvalue)+1)*Pt(y.subtype);throw new A4(y,"don't know data type")}function oa3(y){return Pt(y)>8}function am0(y){return aA(y)?am0(y.subtype):Pt(y)}function lm0(y){if(ml(y)&&aA(y.dtype))return Pt(y.dtype.subtype);throw ml(y)&&K7(y.dtype)&&y.dtype.left>63?new A4(y,"elements > 64 bits not supported"):new A4(y,"cannot figure out array element size")}function la3(y){return Pt(fR(y))}function fR(y){if(Ma(y)){for(var q=y.dtype;aA(q);)q=q.subtype;return q}else{if(Ng(y)&&y.op=="arraysel")return fR(y.left);if(Ng(y)&&y.op=="wordsel")return fR(y.left)}throw new A4(y,"cannot figure out array value type")}function aa3(y){return y<=1?1:y<=2?2:y<=4?4:8}function iR(y){return y<=4?bk.i32:y<=8?bk.i64:bk.none}var nR=class{constructor(){this.len=0;this.vars={};this.locals=[];this.params=[]}addVar(q){var P0=Pt(q.dtype),q0=this.addEntry(q.name,P0,iR(P0),q.dtype,!1);return q0.init=q.initValue,q0.constval=q.constValue,q0}alignTo(q){for(;this.len%q;)this.len++}addEntry(q,P0,q0,J9,le){this.alignTo(aa3(P0));var W9={name:q,type:J9,size:P0,itype:q0,index:this.params.length+this.locals.length,offset:this.len,init:null,constval:null,reset:!1};return this.len+=P0,W9.name!=null&&(this.vars[W9.name]=W9),le?this.params.push(W9):this.locals.push(W9),W9}getLocals(){var q=[];for(let P0 of this.locals)q.push(P0.itype);return q}lookup(q){return this.vars[q]}},TB=class{constructor(q,P0,q0){this.getFileData=null;this.optimize=!1;this.maxEvalIterations=8;this.traceBufferSize=1044480;this.randomizeOnReset=!1;this.labelseq=0;this.hdlmod=q,this.constpool=P0,this.maxMemoryMB=q0||16,this.genMemory(),this.genFuncs(),this.validate()}async init(){await this.genModule(),this.genStateInterface(),this.enableTracing()}initSync(){this.genModuleSync(),this.genStateInterface(),this.enableTracing()}powercycle(){this.resetStartTimeMsec=new Date().getTime()-1,this.finished=!1,this.stopped=!1,this.clearMutableState(),this.setInitialValues(),this.instance.exports._ctor_var_reset(Fg),this.instance.exports._eval_initial(Fg);for(var q=0;q<100;q++){this.instance.exports._eval_settle(Fg),this.instance.exports._eval(Fg);var P0=this.instance.exports._change_request(Fg);if(!P0)return}throw new A4(null,"model did not converge on reset()")}eval(){this.instance.exports.eval(Fg)}tick(){this.state.clk^=1,this.eval()}tick2(q){this.instance.exports.tick2(Fg,q)}isFinished(){return this.finished}isStopped(){return this.stopped}saveState(){return{o:this.data8.slice(0,this.statebytes)}}loadState(q){this.data8.set(q.o)}getGlobals(){var q={};for(let[le,W9]of Object.entries(this.hdlmod.vardefs)){var P0=q,q0=le.split("$");for(var J9 of q0.slice(0,-1))P0[J9]=P0[J9]||{},P0=P0[J9];P0[q0[q0.length-1]]=this.state[le]}return q}enableTracing(){if(this.outputbytes==0)throw new Error("outputbytes == 0");if(this.outputbytes%8)throw new Error("outputbytes must be 8-byte aligned");if(this.traceBufferSize%8)throw new Error("trace buffer size must be 8-byte aligned");this.traceStartOffset=this.globals.lookup(TP).offset,this.traceEndOffset=this.traceStartOffset+this.traceBufferSize-this.outputbytes,this.state[_P]=this.traceEndOffset,this.state[JP]=this.outputbytes,this.resetTrace(),this.trace=this.makeScopeProxy(()=>this.traceReadOffset)}resetTrace(){this.traceReadOffset=this.traceStartOffset,this.state[DP]=this.traceStartOffset}nextTrace(){this.traceReadOffset+=this.outputbytes,this.traceReadOffset>=this.traceEndOffset&&(this.traceReadOffset=this.traceStartOffset)}getTraceRecordSize(){return this.traceRecordSize}dispose(){this.bmod&&(this.bmod.dispose(),this.bmod=null,this.instance=null,this.databuf=null,this.data8=null,this.data16=null,this.data32=null)}genMemory(){this.bmod=new bk.Module,this.bmod.setFeatures(bk.Features.SignExt),this.genTypes();var q=t Line truncated
`).filter(Y4=>Y4!=="").map(Y4=>parseInt(Y4,oe?16:2)),J9=0;J9<vk.length;J9++)this.data8[P0+J9]=vk[J9];return 0}label(q){return`@${q||"label"}_${++this.labelseq}`}addCopyTraceRecFunction(){let q=this.bmod,P0=this.globals.lookup(JP).offset,q0=this.globals.lookup(DP).offset,J9=this.globals.lookup(_P).offset,le=this.globals.lookup(TP).offset;var W9=bk.i32,oe=bk.none,vk=this.label("@block"),Y4=this.label("@loop");q.addFunction("copyTraceRec",bk.createType([]),oe,[W9,W9,W9],q.block(vk,[q.local.set(0,q.i32.const(Fg)),q.local.set(1,q.i32.load(0,4,q.i32.const(P0))),q.local.set(2,q.i32.load(0,4,q.i32.const(q0))),q.loop(Y4,q.block(null,[q.i64.store(0,8,q.local.get(2,W9),q.i64.load(0,8,q.local.get(0,W9))),q.local.set(0,q.i32.add(q.local.get(0,W9),q.i32.const(8))),q.local.set(2,q.i32.add(q.local.get(2,W9),q.i32.const(8))),q.local.set(1,q.i32.sub(q.local.get(1,W9),q.i32.const(8))),this.bmod.br_if(Y4,q.local.get(1,W9))])),q.i32.store(0,4,q.i32.const(q0),q.i32.add(q.i32.load(0,4,q.i32.const(q0)),q.i32.load(0,4,q.i32.const(P0)))),q.br_if(vk,q.i32.lt_u(q.i32.load(0,4,q.i32.const(q0)),q.i32.load(0,4,q.i32.const(J9)))),q.i32.store(0,4,q.i32.const(q0),q.i32.const(le))]))}addTick2Function(){let q=this.bmod;var P0=this.label("@loop");if(this.globals.lookup("clk")){var q0=q.local.get(0,bk.i32);q.addFunction("tick2",bk.createType([bk.i32,bk.i32]),bk.none,[],q.loop(P0,q.block(null,[this.makeSetVariableFunction("clk",0),q.drop(q.call("eval",[q0],bk.i32)),this.makeSetVariableFunction("clk",1),q.drop(q.call("eval",[q0],bk.i32)),q.call("copyTraceRec",[],bk.none),q.br_if(P0,q.local.tee(1,q.i32.sub(q.local.get(1,bk.i32),q.i32.const(1)),bk.i32))]))),q.addFunctionExport("tick2","tick2")}else q.addFunctionExport("eval","tick2")}addEvalFunction(){this.bmod.addFunction("eval",bk.createType([bk.i32]),bk.i32,[],this.makeTickFuncBody(0)),this.bmod.addFunctionExport("eval","eval")}makeGetVariableFunction(q,P0){var q0=this.globals.lookup(q).type,J9={refname:q,dtype:q0};return this.e2w(J9)}makeSetVariableFunction(q,P0){var q0=this.globals.lookup(q).type,J9={refname:q,dtype:q0},le={cvalue:P0,bigvalue:null,dtype:q0};return this.assign2wasm(J9,le)}makeTickFuncBody(q){var P0=this.bmod.local.get(0,bk.i32);return q>this.maxEvalIterations?this.bmod.i32.const(q):this.bmod.block(null,[this.bmod.call("_eval",[P0],bk.none),this.bmod.if(this.bmod.call("_change_request",[P0],bk.i32),this.makeTickFuncBody(q+1),this.bmod.return(this.bmod.local.get(0,bk.i32)))],bk.i32)}funcResult(q){return q.startsWith("_change_request")?bk.i32:q=="$time"?bk.i64:q=="$rand"?bk.i32:bk.none}pushScope(q){q.parent=this.locals,this.locals=q}popScope(){this.locals=this.locals.parent}i3264(q){var P0=Pt(q),q0=iR(P0);if(q0==bk.i32)return this.bmod.i32;if(q0==bk.i64)return this.bmod.i64;throw new A4(q,"data types > 64 bits not supported")}i3264rel(q){if(ml(q.left)&&ml(q.right)){var P0=Pt(q.left.dtype),q0=Pt(q.right.dtype);return P0>q0?this.i3264(q.left.dtype):this.i3264(q.right.dtype)}throw new A4(q,`can't ${q.op} arguments`)}dataptr(){return this.bmod.local.get(0,bk.i32)}e2w(q,P0){if(q==null)return this.bmod.nop();if(IZ(q))return this.block2wasm(q,P0);if(wZ(q))return this.local2wasm(q,P0);if(Ma(q))return this.varref2wasm(q,P0);if(YI(q)||OF(q))return this.const2wasm(q,P0);if(eR(q))return this.funccall2wasm(q,P0);if(PF(q)||Ng(q)||qF(q)||$F(q)){var q0=`_${q.op}2wasm`,J9=this[q0];if(J9==null)throw new A4(q,`no such method ${q0}`);return this[q0](q,P0)}else throw new A4(q,"could not translate expr")}block2wasm(q,P0){var q0=q.exprs.map(le=>this.e2w(le)),J9=P0&&P0.funcblock?this.funcResult(P0.funcblock.name):bk.none;return J9==bk.i32&&q0.push(this.bmod.return(this.bmod.local.get(this.locals.lookup(SP).index,J9))),P0&&P0.resulttype&&(J9=bk.i32),this.bmod.block(q.name,q0,J9)}funccall2wasm(q,P0){var q0=[this.dataptr()];for(var J9 of q.args)q0.push(this.e2w(J9,{funcarg:!0}));var le=q.funcname;q.funcname.startsWith("$")&&((q.funcname=="$stop"||q.funcname=="$finish")&&q.$loc&&(q0=[this.bmod.i32.const(q.$loc.line)]),le+="_"+(q0.length-1));var W9=this.funcResult(q.funcname);return this.bmod.call(le,q0,W9)}const2wasm(q,P0){var q0=Pt(q.dtype);if(K7(q.dtype))if(q.bigvalue!=null){let J9=q.bigvalue&BigInt(4294967295),le=q.bigvalue>>BigInt(32)&BigInt(4294967295);return this.i3264(q.dtype).const(Number(J9),Number(le))}else{if(q0<=4)return this.bmod.i32.const(q.cvalue|0);if(q0<=8)return this.bmod.i64.const(q.cvalue|0,0);throw new A4(q,"constants > 64 bits not supported")}else throw new A4(q,"non-logic constants not supported")}varref2wasm(q,P0){if(P0&&P0.store)throw Error("cannot store here");var q0=this.locals&&this.locals.lookup(q.refname),J9=this.globals.lookup(q.refname);if(q0!=null)return this.bmod.local.get(q0.index,q0.itype);if(J9!=null)return J9.size>8&&P0&&P0.funcarg?this.address2wasm(q):this.loadmem(q,this.dataptr(),J9.offset,J9.size);throw new A4(q,`cannot lookup variable ${q.refname}`)}local2wasm(q,P0){var q0=this.locals.lookup(q.name);return this.bmod.nop()}assign2wasm(q,P0){var q0=this.e2w(P0);if(Ma( Line truncated
`),Wf=Or.message+`
`,vf=0;vf<Bk.length;vf++)vf>Or.lineNumber-5&&vf<Or.lineNumber+5&&(Wf+=Bk[vf]+`
`);console.log(Wf)}}dispose(){Kr&&(Kr.dispose(),Kr=null)}async loadROM(Or,Ei){var Bk=Ei,Wf=Bk.modules.TOP;if(Bk.modules&&Wf){var vf=!0,It=vf?TB:vZ,Q5=new It(Wf,Bk.modules["@CONST-POOL@"]);Q5.getFileData=this.sourceFileFetch,await Q5.init(),this.dispose(),Kr=Q5;var fo=[];for(var IA in Wf.vardefs){var Cl=Wf.vardefs[IA];K7(Cl.dtype)&&fo.push({name:IA,label:Cl.origName,input:Cl.isInput,output:Cl.isOutput,len:Cl.dtype.left+1})}if(qt=fo,va3||(qt=qt.filter(Gl=>!Gl.label.startsWith("__V"))),v5=0,Kr instanceof TB&&(Kr.randomizeOnReset=!0),this.hasvideo=Kr.state.vsync!=null&&Kr.state.hsync!=null&&Kr.state.rgb!=null,this.hasvideo){let Gl=["clk","reset"];qt=qt.filter(x5=>Gl.indexOf(x5.name)<0),this.showVideoControls()}else this.hideVideoControls()}Kr.powercycle(),Ei.program_rom&&Ei.program_rom_variable&&(Kr.state[Ei.program_rom_variable]?Kr.state[Ei.program_rom_variable].length!=Ei.program_rom.length?alert("ROM size mismatch -- expected "+Kr.state[Ei.program_rom_variable].length+" got "+Ei.program_rom.length):Kr.state[Ei.program_rom_variable].set(Ei.program_rom):alert("No program_rom variable found ("+Ei.program_rom_variable+")")),this.restartAudio(),this.waveview&&this.waveview.recreate(),this.reset()}showVideoControls(){$("#speed_bar").show(),$("#run_bar").show(),$("#dbg_record").show()}hideVideoControls(){$("#speed_bar").hide(),$("#run_bar").hide(),$("#dbg_record").hide()}restartAudio(){var Or=Kr&&Kr.state.spkr!=null&&gA>1;q0&&!Or?(q0.stop(),q0=null):!q0&&Or&&(q0=new fm0(mn*this.getFrameRate()),this.isRunning()&&q0.start())}isRunning(){return wf&&wf.isRunning()}pause(){wf.stop(),q0&&q0.stop()}resume(){wf.start(),q0&&q0.start()}isBlocked(){return Kr&&Kr.isFinished()}isStopped(){return Kr&&Kr.isStopped()}setFrameRate(Or){gA=Or;var Ei=Math.min(60,Or*mn);if(!wf||wf.frameRate!=Ei){var Bk=this.isRunning();wf&&wf.stop(),wf=new rm0(Ei,p7),Bk&&wf.start()}q0&&(q0.stop(),q0=null),this.restartAudio()}getFrameRate(){return gA}reset(){Kr&&(v5=0,pf&&pf.fill(0),P0&&P0.setRotate(Kr.state.rotate?-90:0),$("#verilog_bar").hide(),this.hasvideo?(Kr.state.reset=1,Kr.tick2(100),Kr.state.reset=0):(Kr.state.reset=1,this.resume()))}tick(){Kr&&Kr.tick2(1)}getToolForFilename(Or){return Or.endsWith(".asm")?"jsasm":Or.endsWith(".ice")?"silice":"verilator"}getDefaultExtensions(){return[".v",".asm",".ice"]}inspect(Or){if(Kr){if(!Or||!Or.match(/^\w+$/)){Xc=gu=null;return}var Ei;for(let Bk in Kr.state)(Bk==Or||Bk.endsWith("$"+Or))&&(Or=Bk,Ei=Kr.state[Or]);typeof Ei=="number"?(Xc=Kr.state,gu=Or):Xc=gu=null}}getDebugTree(){return{runtime:Kr,state:Kr&&Kr.getGlobals()}}saveState(){return{o:Kr&&Kr.saveState()}}loadState(Or){Or.o&&Kr.loadState(Or.o)}saveControlsState(){return{p1x:P0.paddle_x,p1y:P0.paddle_y,sw0:Fn[0],sw1:Fn[1],sw2:Fn[2],keycode:If}}loadControlsState(Or){P0.paddle_x=Or.p1x,P0.paddle_y=Or.p1y,Fn[0]=Or.sw0,Fn[1]=Or.sw1,Fn[2]=Or.sw2,If=Or.keycode}getDownloadFile(){if(Kr instanceof vZ)return{extension:".js",blob:new Blob([Kr.getJSCode()],{type:"text/plain"})};if(Kr instanceof TB)return{extension:".wat",blob:new Blob([Kr.bmod.emitText()],{type:"text/plain"})}}getHDLModuleRunner(){return Kr}showHelp(){return"https://8bitworkshop.com/docs/platforms/verilog/"}}return new k4},da3=[{id:"hvsync_generator.v",name:"Video Sync Generator"},{id:"test_hvsync.v",name:"Test Pattern"},{id:"chardisplay.v",name:"RAM Text Display"},{id:"starfield.v",name:"Scrolling Starfield"},{id:"ball_paddle.v",name:"Brick Smash Game"}],Ba3=function(y,q){this.__proto__=new UP(y,q),this.getPresets=function(){return da3},this.setVideoParams(736,520,25e6)};EF.verilog=UP;EF["verilog-vga"]=Ba3;EF["verilog-test"]=UP;
//# sourceMappingURL=verilog-BCAR4POO.js.map
`);console.log(Wf)}}dispose(){Kr&&(Kr.dispose(),Kr=null)}async loadROM(Or,Ei){var Bk=Ei,Wf=Bk.modules.TOP;if(Bk.modules&&Wf){var vf=!0,It=vf?TB:vZ,Q5=new It(Wf,Bk.modules["@CONST-POOL@"]);Q5.getFileData=this.sourceFileFetch,await Q5.init(),this.dispose(),Kr=Q5;var fo=[];for(var IA in Wf.vardefs){var Cl=Wf.vardefs[IA];K7(Cl.dtype)&&fo.push({name:IA,label:Cl.origName,input:Cl.isInput,output:Cl.isOutput,len:Cl.dtype.left+1})}if(qt=fo,da3||(qt=qt.filter(Gl=>!Gl.label.startsWith("__V"))),v5=0,Kr instanceof TB&&(Kr.randomizeOnReset=!0),this.hasvideo=Kr.state.vsync!=null&&Kr.state.hsync!=null&&Kr.state.rgb!=null,this.hasvideo){let Gl=["clk","reset"];qt=qt.filter(x5=>Gl.indexOf(x5.name)<0),this.showVideoControls()}else this.hideVideoControls()}Kr.powercycle(),Ei.program_rom&&Ei.program_rom_variable&&(Kr.state[Ei.program_rom_variable]?Kr.state[Ei.program_rom_variable].length!=Ei.program_rom.length?alert("ROM size mismatch -- expected "+Kr.state[Ei.program_rom_variable].length+" got "+Ei.program_rom.length):Kr.state[Ei.program_rom_variable].set(Ei.program_rom):alert("No program_rom variable found ("+Ei.program_rom_variable+")")),this.restartAudio(),this.waveview&&this.waveview.recreate(),this.reset()}showVideoControls(){$("#speed_bar").show(),$("#run_bar").show(),$("#dbg_record").show()}hideVideoControls(){$("#speed_bar").hide(),$("#run_bar").hide(),$("#dbg_record").hide()}restartAudio(){var Or=Kr&&Kr.state.spkr!=null&&gA>1;q0&&!Or?(q0.stop(),q0=null):!q0&&Or&&(q0=new fm0(mn*this.getFrameRate()),this.isRunning()&&q0.start())}isRunning(){return wf&&wf.isRunning()}pause(){wf.stop(),q0&&q0.stop()}resume(){wf.start(),q0&&q0.start()}isBlocked(){return Kr&&Kr.isFinished()}isStopped(){return Kr&&Kr.isStopped()}setFrameRate(Or){gA=Or;var Ei=Math.min(60,Or*mn);if(!wf||wf.frameRate!=Ei){var Bk=this.isRunning();wf&&wf.stop(),wf=new rm0(Ei,p7),Bk&&wf.start()}q0&&(q0.stop(),q0=null),this.restartAudio()}getFrameRate(){return gA}reset(){Kr&&(v5=0,pf&&pf.fill(0),P0&&P0.setRotate(Kr.state.rotate?-90:0),$("#verilog_bar").hide(),this.hasvideo?(Kr.state.reset=1,Kr.tick2(100),Kr.state.reset=0):(Kr.state.reset=1,this.resume()))}tick(){Kr&&Kr.tick2(1)}getToolForFilename(Or){return Or.endsWith(".asm")?"jsasm":Or.endsWith(".ice")?"silice":"verilator"}getDefaultExtensions(){return[".v",".asm",".ice"]}inspect(Or){if(Kr){if(!Or||!Or.match(/^\w+$/)){Xc=gu=null;return}var Ei;for(let Bk in Kr.state)(Bk==Or||Bk.endsWith("$"+Or))&&(Or=Bk,Ei=Kr.state[Or]);typeof Ei=="number"?(Xc=Kr.state,gu=Or):Xc=gu=null}}getDebugTree(){return{runtime:Kr,state:Kr&&Kr.getGlobals()}}saveState(){return{o:Kr&&Kr.saveState()}}loadState(Or){Or.o&&Kr.loadState(Or.o)}saveControlsState(){return{p1x:P0.paddle_x,p1y:P0.paddle_y,sw0:Fn[0],sw1:Fn[1],sw2:Fn[2],keycode:If}}loadControlsState(Or){P0.paddle_x=Or.p1x,P0.paddle_y=Or.p1y,Fn[0]=Or.sw0,Fn[1]=Or.sw1,Fn[2]=Or.sw2,If=Or.keycode}getDownloadFile(){if(Kr instanceof vZ)return{extension:".js",blob:new Blob([Kr.getJSCode()],{type:"text/plain"})};if(Kr instanceof TB)return{extension:".wat",blob:new Blob([Kr.bmod.emitText()],{type:"text/plain"})}}getHDLModuleRunner(){return Kr}showHelp(){return"https://8bitworkshop.com/docs/platforms/verilog/"}}return new k4},Ba3=[{id:"hvsync_generator.v",name:"Video Sync Generator"},{id:"test_hvsync.v",name:"Test Pattern"},{id:"chardisplay.v",name:"RAM Text Display"},{id:"starfield.v",name:"Scrolling Starfield"},{id:"ball_paddle.v",name:"Brick Smash Game"}],ya3=function(y,q){this.__proto__=new UP(y,q),this.getPresets=function(){return Ba3},this.setVideoParams(736,520,25e6)};EF.verilog=UP;EF["verilog-vga"]=ya3;EF["verilog-test"]=UP;
//# sourceMappingURL=verilog-MBHBXAJL.js.map
@@ -1,7 +1,7 @@
{
"version": 3,
"sources": ["../node_modules/binaryen/index.js", "../src/ide/waveform.ts", "../src/common/hdl/hdltypes.ts", "../src/common/hdl/hdlruntime.ts", "../src/common/hdl/hdlwasm.ts", "../src/platform/verilog.ts"],
"sourcesContent": ["var binaryen = {};\n(function() {\n\nvar a;a||(a=typeof binaryen !== 'undefined' ? binaryen : {});var aa={},f;for(f in a)a.hasOwnProperty(f)&&(aa[f]=a[f]);var ba=\"./this.program\";function ca(b,d){throw d;}var da=!1,fa=!1,n=!1,ha=!1;da=\"object\"===typeof window;fa=\"function\"===typeof importScripts;n=\"object\"===typeof process&&\"object\"===typeof process.versions&&\"string\"===typeof process.versions.node;ha=!da&&!n&&!fa;var p=\"\",ia,ja,ka,la;\nif(n)p=fa?require(\"path\").dirname(p)+\"/\":__dirname+\"/\",ia=function(b,d){var g=ma(b);if(g)return d?g:g.toString();ka||(ka=require(\"fs\"));la||(la=require(\"path\"));b=la.normalize(b);return ka.readFileSync(b,d?null:\"utf8\")},ja=function(b){b=ia(b,!0);b.buffer||(b=new Uint8Array(b));assert(b.buffer);return b},1<process.argv.length&&(ba=process.argv[1].replace(/\\\\/g,\"/\")),process.argv.slice(2),\"undefined\"!==typeof module&&(module.exports=a),process.on(\"uncaughtException\",function(b){if(!(b instanceof na))throw b;\n}),process.on(\"unhandledRejection\",q),ca=function(b){process.exit(b)},a.inspect=function(){return\"[Emscripten Module object]\"};else if(ha)\"undefined\"!=typeof read&&(ia=function(b){var d=ma(b);return d?oa(d):read(b)}),ja=function(b){var d;if(d=ma(b))return d;if(\"function\"===typeof readbuffer)return new Uint8Array(readbuffer(b));d=read(b,\"binary\");assert(\"object\"===typeof d);return d},\"function\"===typeof quit&&(ca=function(b){quit(b)}),\"undefined\"!==typeof print&&(\"undefined\"===typeof console&&(console=\n{}),console.log=print,console.warn=console.error=\"undefined\"!==typeof printErr?printErr:print);else if(da||fa)fa?p=self.location.href:\"undefined\"!==typeof document&&document.currentScript&&(p=document.currentScript.src),p=0!==p.indexOf(\"blob:\")?p.substr(0,p.lastIndexOf(\"/\")+1):\"\",ia=function(b){try{var d=new XMLHttpRequest;d.open(\"GET\",b,!1);d.send(null);return d.responseText}catch(g){if(b=ma(b))return oa(b);throw g;}},fa&&(ja=function(b){try{var d=new XMLHttpRequest;d.open(\"GET\",b,!1);d.responseType=\n\"arraybuffer\";d.send(null);return new Uint8Array(d.response)}catch(g){if(b=ma(b))return b;throw g;}});var t=a.print||console.log.bind(console),v=a.printErr||console.warn.bind(console);for(f in aa)aa.hasOwnProperty(f)&&(a[f]=aa[f]);aa=null;a.thisProgram&&(ba=a.thisProgram);a.quit&&(ca=a.quit);var w=0,pa;a.wasmBinary&&(pa=a.wasmBinary);var noExitRuntime=a.noExitRuntime||!0;function qa(){this.buffer=new ArrayBuffer(ra/65536*65536)}function sa(){}\nfunction ta(){this.exports=(\n// EMSCRIPTEN_START_ASM\nfunction instantiate(Jb){function c(d){d.set=function(a,b){this[a]=b};d.get=function(a){return this[a]};return d}var e;var f=new Uint8Array(123);for(var a=25;a>=0;--a){f[48+a]=52+a;f[65+a]=a;f[97+a]=26+a}f[43]=62;f[47]=63;function l(m,n,o){var g,h,a=0,i=n,j=o.length,k=n+(j*3>>2)-(o[j-2]==\"=\")-(o[j-1]==\"=\");for(;a<j;a+=4){g=f[o.charCodeAt(a+1)];h=f[o.charCodeAt(a+2)];m[i++]=f[o.charCodeAt(a)]<<2|g>>4;if(i<k)m[i++]=g<<4|h>>2;if(i<k)m[i++]=h<<6|f[o.charCodeAt(a+3)]}}function p(q){l(e,1024,\"dmFsdWUudHlwZS5pc0NvbmNyZXRlKCkARmxvdwBsaXQuaXNDb25jcmV0ZSgpAExpdGVyYWxzAHZhbHVlcy5zaXplKCkgPT0gMQBnZXRTaW5nbGVWYWx1ZQBnZXRpMzIAYyA9PSAoYyAmIDB4ZmYpAGV4dGVuZEZvclBhY2tpbmcAYyA9PSAoYyAmIDB4ZmZmZikAYWxsb2NhdGlvbiBmYWlsdXJl\");l(e,1200,\"pDIAAKUyAACmMgAApzIAAKgyAAB0eXBlLmlzRnVuY3Rpb24oKSAmJiAhZnVuYy5pc051bGwoKQBnZXRGdW5jAHR5cGUuaXNOdWxsYWJsZSgpAG1ha2VOdWxsAHR5cGUuZ2V0SGVhcFR5cGUoKSA9PSBIZWFwVHlwZTo6aTMxAGdldGkzMQByZWludGVycHJldGk2NAByZWludGVycHJldGkzMgBzAC9ob21lL3J1bm5lci93b3JrL2JpbmFyeWVuLmpzL2JpbmFyeWVuLmpzL2JpbmFyeWVuL3NyYy9lbXNjcmlwdGVuLW9wdGltaXplci9pc3RyaW5nLmgASVN0cmluZwAYaAIA2AU=\");l(e,1476,\"qTIAAKoyAACrMgAArDIAAK0yAABONHdhc20yNENvbnN0YW50RXhwcmVzc2lvblJ1bm5lcklOU18xN0NFeHByZXNzaW9uUnVubmVyRUUyME5vbmNvbnN0YW50RXhjZXB0aW9uRQBnZXRDb25zdEV4cHJlc3Npb24AbWFrZUNvbnN0YW50RXhwcmVzc2lvbgBzaXplIDw9IG51bUNodW5rcyAqIENIVU5LX1NJWkUAYWxsb2NTcGFjZQB2YWx1ZS5pc051bGwoKSAmJiAidW5leHBlY3RlZCBub24tbnVsbCByZWZlcmVuY2UgdHlwZSBsaXRlcmFsIgBpbnZhbGlkIGNvbnN0YW50IGV4cHJlc3Npb24AaXNCYXNpYygpICYmICJCYXNpYyB0eXBlIGV4cGVjdGVkIgB2YWx1ZS50eXBlLmlzTnVtYmVyKCkAbWFrZUNvbnN0\");l(e,1828,\"qTIAAK4yAACrMgAArDIAAK0y\");l(e,1856,\"rzIAALAyAACxMgAAsjIAALMyAABleHByZXNzaW9uLT5pczxVbmFyeT4oKQAvaG9tZS9ydW5uZXIvd29yay9iaW5hcnllbi5qcy9iaW5hcnllbi5qcy9iaW5hcnllbi9zcmMvYmluYXJ5ZW4tYy5jcHAAQmluYXJ5ZW5VbmFyeVNldFZhbHVlAHZhbHVlRXhwcgBCaW5hcnllblVuYXJ5U2V0T3AAQmluYXJ5ZW5VbmFyeUdldFZhbHVlAEJpbmFyeWVuVW5hcnlHZXRPcABwYXJlbnQgPT0gb3RoZXIucGFyZW50AG9wZXJhdG9yLQBleHByZXNzaW9uLT5pczxUdXBsZU1ha2U+KCkAQmluYXJ5ZW5UdXBsZU1ha2VTZXRPcGVyYW5kQXQAaW5kZXggPCBzdGF0aWNfY2FzdDxUdXBsZU1ha2UqPihleHByZXNzaW9uKS0+b3BlcmFuZHMuc2l6ZSgpAG9wZXJhbmRFeHByAEJpbmFyeWVuVHVwbGVNYWtlUmVtb3ZlT3BlcmFuZEF0AEJpbmFyeWVuVHVwbGVNYWtlSW5zZXJ0T3BlcmFuZEF0AGluZGV4IDw9IHNpemUoKQBpbnNlcnRBdABCaW5hcnllblR1cGxlTWFrZUdldE9wZXJhbmRBdABCaW5hcnllblR1cGxlTWFrZUdldE51bU9wZXJhbmRzAEJpbmFyeWVuVHVwbGVNYWtlQXBwZW5kT3BlcmFuZABleHByZXNzaW9uLT5pczxUdXBsZUV4dHJhY3Q+KCkAQmluYXJ5ZW5UdXBsZUV4dHJhY3RTZXRUdXBsZQB0dXLine truncated
"mappings": "6TAAA,IAAAA,IAAAC,IAAA,CAAAC,GAAAC,KAAA,KAAIC,GAAW,CAAC,GACf,UAAW,CAEZ,IAAIC,EAAEA,IAAIA,EAAE,OAAOD,IAAa,YAAcA,GAAW,CAAC,GAAG,IAAIE,EAAG,CAAC,EAAEC,GAAE,IAAIA,MAAKF,EAAEA,EAAE,eAAeE,EAAC,IAAID,EAAGC,EAAC,EAAEF,EAAEE,EAAC,GAAG,IAAIC,GAAG,iBAAiB,SAASC,GAAGC,EAAEC,EAAE,CAAC,MAAMA,CAAE,CAAC,IAAIC,GAAG,GAAGC,GAAG,GAAGC,GAAE,GAAGC,GAAG,GAAGH,GAAc,OAAO,QAAlB,SAAyBC,GAAgB,OAAO,eAApB,WAAkCC,GAAa,OAAO,SAAlB,UAAsC,OAAO,QAAQ,UAA1B,UAA+C,OAAO,QAAQ,SAAS,MAAnC,SAAwCC,GAAG,CAACH,IAAI,CAACE,IAAG,CAACD,GAAG,IAAIG,GAAE,GAAGC,GAAGC,GAAGC,GAAGC,GAC5YN,IAAEE,GAAEH,GAAG,GAAQ,MAAM,EAAE,QAAQG,EAAC,EAAE,IAAI,UAAU,IAAIC,GAAG,SAASP,EAAEC,EAAE,CAAC,IAAIU,GAAEC,GAAGZ,CAAC,EAAE,OAAGW,GAASV,EAAEU,GAAEA,GAAE,SAAS,GAAEF,KAAKA,GAAG,GAAQ,IAAI,GAAGC,KAAKA,GAAG,GAAQ,MAAM,GAAGV,EAAEU,GAAG,UAAUV,CAAC,EAASS,GAAG,aAAaT,EAAEC,EAAE,KAAK,MAAM,EAAC,EAAEO,GAAG,SAASR,EAAE,CAAC,OAAAA,EAAEO,GAAGP,EAAE,EAAE,EAAEA,EAAE,SAASA,EAAE,IAAI,WAAWA,CAAC,GAAGa,GAAOb,EAAE,MAAM,EAASA,CAAC,EAAE,EAAE,QAAQ,KAAK,SAASF,GAAG,QAAQ,KAAK,CAAC,EAAE,QAAQ,MAAM,GAAG,GAAG,QAAQ,KAAK,MAAM,CAAC,EAAgB,OAAOL,IAArB,cAA8BA,GAAO,QAAQE,GAAG,QAAQ,GAAG,oBAAoB,SAASK,EAAE,CAAC,GAAG,EAAEA,aAAac,IAAI,MAAMd,CAC7f,CAAC,EAAE,QAAQ,GAAG,qBAAqBe,EAAC,EAAEhB,GAAG,SAASC,EAAE,CAAC,QAAQ,KAAKA,CAAC,CAAC,EAAEL,EAAE,QAAQ,UAAU,CAAC,MAAM,4BAA4B,GAAUU,IAAgB,OAAO,MAApB,cAA2BE,GAAG,SAASP,EAAE,CAAC,IAAIC,EAAEW,GAAGZ,CAAC,EAAE,OAAOC,EAAEe,GAAGf,CAAC,EAAE,KAAKD,CAAC,CAAC,GAAGQ,GAAG,SAASR,EAAE,CAAC,IAAIC,EAAE,OAAGA,EAAEW,GAAGZ,CAAC,GAASC,EAAkB,OAAO,YAApB,WAAsC,IAAI,WAAW,WAAWD,CAAC,CAAC,GAAEC,EAAE,KAAKD,EAAE,QAAQ,EAAEa,GAAkB,OAAOZ,GAAlB,QAAmB,EAASA,EAAC,EAAe,OAAO,MAApB,aAA2BF,GAAG,SAASC,EAAE,CAAC,KAAKA,CAAC,CAAC,GAAiB,OAAO,OAArB,cAA2C,OAAO,SAArB,cAA+B,QAClf,CAAC,GAAG,QAAQ,IAAI,MAAM,QAAQ,KAAK,QAAQ,MAAoB,OAAO,UAArB,YAA8B,SAAS,SAAeE,IAAIC,MAAGA,GAAGG,GAAE,KAAK,SAAS,KAAmB,OAAO,UAArB,aAA+B,SAAS,gBAAgBA,GAAE,SAAS,cAAc,KAAKA,GAAMA,GAAE,QAAQ,OAAO,IAArB,EAAuBA,GAAE,OAAO,EAAEA,GAAE,YAAY,GAAG,EAAE,CAAC,EAAE,GAAGC,GAAG,SAASP,EAAE,CAAC,GAAG,CAAC,IAAIC,EAAE,IAAI,eAAe,OAAAA,EAAE,KAAK,MAAMD,EAAE,EAAE,EAAEC,EAAE,KAAK,IAAI,EAASA,EAAE,YAAY,OAAOU,GAAE,CAAC,GAAGX,EAAEY,GAAGZ,CAAC,EAAE,OAAOgB,GAAGhB,CAAC,EAAE,MAAMW,EAAE,CAAC,EAAER,KAAKK,GAAG,SAASR,EAAE,CAAC,GAAG,CAAC,IAAIC,EAAE,IAAI,eAAe,OAAAA,EAAE,KAAK,MAAMD,EAAE,EAAE,EAAEC,EAAE,aAC7e,cAAcA,EAAE,KAAK,IAAI,EAAS,IAAI,WAAWA,EAAE,QAAQ,CAAC,OAAOU,GAAE,CAAC,GAAGX,EAAEY,GAAGZ,CAAC,EAAE,OAAOA,EAAE,MAAMW,EAAE,CAAC,IAAG,IAAIM,GAAEtB,EAAE,OAAO,QAAQ,IAAI,KAAK,OAAO,EAAEuB,GAAEvB,EAAE,UAAU,QAAQ,KAAK,KAAK,OAAO,EAAE,IAAIE,MAAKD,EAAGA,EAAG,eAAeC,EAAC,IAAIF,EAAEE,EAAC,EAAED,EAAGC,EAAC,GAAGD,EAAG,KAAKD,EAAE,cAAcG,GAAGH,EAAE,aAAaA,EAAE,OAAOI,GAAGJ,EAAE,MAAM,IAAIwB,GAAE,EAAEC,GAAGzB,EAAE,aAAayB,GAAGzB,EAAE,YAAY,IAAI0B,GAAc1B,EAAE,eAAe,GAAG,SAAS2B,IAAI,CAAC,KAAK,OAAO,IAAI,YAAYC,GAAG,MAAM,KAAK,CAAC,CAAC,SAASC,IAAI,CAAC,CAC9b,SAASC,IAAI,CAAC,KAAK,SAEnB,SAAqBC,EAAG,CAAC,SAASC,GAAE1B,GAAE,CAAC,OAAAA,GAAE,IAAI,SAASN,GAAEK,GAAE,CAAC,KAAKL,EAAC,EAAEK,EAAC,EAAEC,GAAE,IAAI,SAASN,GAAE,CAAC,OAAO,KAAKA,EAAC,CAAC,EAASM,EAAC,CAAiC,QAA5B2B,EAAM/B,EAAE,IAAI,WAAW,GAAG,EAAUF,GAAE,GAAGA,IAAG,EAAE,EAAEA,GAAGE,EAAE,GAAGF,EAAC,EAAE,GAAGA,GAAEE,EAAE,GAAGF,EAAC,EAAEA,GAAEE,EAAE,GAAGF,EAAC,EAAE,GAAGA,GAAEE,EAAE,EAAE,EAAE,GAAGA,EAAE,EAAE,EAAE,GAAG,SAASgC,EAAEC,GAAE1B,GAAE2B,GAAE,CAAqE,QAAhEpB,EAAEqB,GAAErC,EAAE,EAAEsC,EAAE7B,GAAE8B,GAAEH,GAAE,OAAOI,EAAE/B,IAAG8B,GAAE,GAAG,IAAIH,GAAEG,GAAE,CAAC,GAAG,MAAMH,GAAEG,GAAE,CAAC,GAAG,KAAUvC,EAAEuC,GAAEvC,GAAG,EAAGgB,EAAEd,EAAEkC,GAAE,WAAWpC,EAAE,CAAC,CAAC,EAAEqC,GAAEnC,EAAEkC,GAAE,WAAWpC,EAAE,CAAC,CAAC,EAAEmC,GAAEG,GAAG,EAAEpC,EAAEkC,GAAE,WAAWpC,CAAC,CAAC,GAAG,EAAEgB,GAAG,EAAKsB,EAAEE,IAAEL,GAAEG,GAAG,EAAEtB,GAAG,EAAEqB,IAAG,GAAKC,EAAEE,IAAEL,GAAEG,GAAG,EAAED,IAAG,EAAEnC,EAAEkC,GAAE,WAAWpC,EAAE,CAAC,CAAC,EAAE,CAAC,SAASW,GAAES,GAAE,CAACc,EAAED,EAAE,KAAK,8NAA8N,EAAEC,EAAED,EAAE,KAAK,sWAAsW,EAAEC,EAAED,EAAE,KAAK,0cAA0c,EAAEC,EAAED,EAAE,KAAK,0BAA0B,EAAEC,EAAED,EAAE,KAAK,kiMAAkiM,EAAEC,EAAED,EAAE,KAAK,8EAA8E,EAAEC,EAAED,EAAE,KAAK,0CAA0C,EAAEC,EAAED,EAAE,KAAK,8FAA8F,EAAEC,EAAED,EAAE,KAAK,sEAAsE,EAAEC,EAAED,EAAE,KAAK,sEAAsE,EAAEC,EAAED,EAAE,KAAK,0CAA0C,EAAEC,EAAED,EAAE,KAAK,kHAAkH,EAAEC,EAAED,EAAE,KAAK,8EAA8E,EAAEC,EAAED,EAAE,KAAK,0CAA0C,EAAEC,EAAED,EAAE,KAAK,kpRAAkpR,EAAEC,EAAED,EAAE,MAAM,sCAAsC,EAAEC,EAAED,EAAE,MAAM,0zBAA0zB,EAAEC,EAAED,EAAE,MAAM,sCAAsC,EAAEC,EAAED,EAAE,MAAM,sCAAsC,EAAEC,EAAED,EAAE,MAAM,sCAAsC,EAAEC,EAAED,EAAE,MAAM,sCAAsC,EAAEC,EAAED,EAAE,MAAM,sCAAsC,EAAEC,EAAED,EAAE,MAAM,8VAA8V,EAAEC,EAAED,EAAE,MAAM,sCAAsC,EAAEC,EAAED,EAAE,MAAM,8FAA8F,EAAEC,EAAED,EAAE,MAAM,sCAAsC,EAAEC,EAAED,EAAE,MAAM,seAAse,EAAEC,EAAED,EAAE,MAAM,0DAA0D,EAAEC,EAAED,EAAE,MAAM,sKAAsK,EAAEC,EAAED,EAAE,MAAM,sCAAsC,EAAEC,EAAED,EAAE,MAAM,0NAA0N,EAAEC,EAAED,EAAE,MAAM,0CAA0C,EAAEC,EAAED,EAAE,MAAM,sCAAsC,EAAEC,EAAED,EAAE,MAAM,sDAAsD,EAAEC,EAAED,EAAE,MAAM,0CAA0C,EAAEC,EAAED,EAAE,MAAM,kHAAkH,EAAEC,EAAED,EAAE,MAAM,80BAA80B,EAAEC,EAAED,EAAE,MAAM,0uBAA0uB,EAAEC,EAAED,EAAE,MAAM,8XAA8X,EAAEC,EAAED,EAAE,MAAM,0BAA0B,EAAEC,EAAED,EAAE,MAAM,0BAA0B,EAAEC,EAAED,EAAE,MAAM,0sGAA0sG,EAAEC,EAAED,EAAE,MAAM,sCAAsC,EAAEC,EAAED,EAALine truncated
"names": ["require_binaryen", "__commonJSMin", "exports", "module", "binaryen", "a", "aa", "f", "ba", "ca", "b", "d", "da", "fa", "n", "ha", "p", "ia", "ja", "ka", "la", "g", "ma", "assert", "na", "q", "oa", "t", "v", "w", "pa", "noExitRuntime", "qa", "ra", "sa", "ta", "Jb", "c", "e", "l", "m", "o", "h", "i", "j", "k", "r", "s", "u", "x", "y", "z", "A", "B", "C", "Hb", "Ib", "D", "E", "Fb", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "_", "$", "ea", "ga", "ua", "va", "wa", "xa", "ya", "za", "Aa", "Ba", "Ca", "Da", "Ea", "Fa", "Ga", "Ha", "Ia", "Ja", "Ka", "La", "Ma", "Na", "Oa", "Pa", "Qa", "Ra", "Sa", "Ta", "Ua", "Va", "Wa", "Xa", "Ya", "Za", "_a", "$a", "ab", "bb", "cb", "db", "eb", "fb", "gb", "hb", "ib", "jb", "kb", "lb", "mb", "nb", "ob", "pb", "qb", "rb", "sb", "tb", "ub", "vb", "wb", "xb", "yb", "vl", "zb", "jc", "Sk", "wk", "Mk", "hc", "yk", "vc", "Fy", "Wb", "Ub", "Tb", "cp", "Gh", "Bp", "pc", "Qm", "bp", "vh", "pA", "kO", "vm", "vsa", "rD", "Lb", "Jt", "Gxa", "$2", "_2", "Fxa", "Ab", "Bb", "Cb", "Db", "Eb", "Gb", "Kb", "Mb", "Nb", "Ob", "Pb", "Qb", "Rb", "Sb", "Vb", "Xb", "Yb", "Zb", "_b", "$b", "ac", "bc", "cc", "dc", "ec", "fc", "gc", "ic", "Iv", "lc", "kc", "mc", "nc", "oc", "qc", "rc", "sc", "Gy", "tc", "uc", "wc", "xc", "yc", "zc", "Ac", "Bc", "Cc", "Dc", "Ec", "Fc", "Gc", "Hc", "Ic", "Jc", "Kc", "Lc", "Mc", "Nc", "Oc", "Pc", "Qc", "Rc", "Sc", "Tc", "Uc", "Vc", "Wc", "Xc", "Yc", "Zc", "_c", "$c", "ad", "bd", "cd", "dd", "ed", "fd", "gd", "hd", "id", "jd", "kd", "ld", "md", "nd", "od", "pd", "qd", "rd", "sd", "td", "ud", "vd", "wd", "xd", "yd", "zd", "Ad", "Bd", "Cd", "Dd", "Ed", "Fd", "Gd", "Hd", "Id", "Jd", "Kd", "Ld", "Md", "Nd", "Od", "Pd", "Qd", "Rd", "Sd", "Td", "Ud", "Vd", "Wd", "Xd", "Yd", "Zd", "fO", "eO", "_d", "$d", "xz", "ae", "be", "ce", "de", "ee", "fe", "ge", "he", "ie", "je", "ke", "le", "me", "ne", "oe", "pe", "qe", "re", "se", "te", "ue", "ve", "we", "xe", "ye", "ze", "Ae", "Lw", "Exa", "xh", "Vg", "Be", "Ce", "De", "Ee", "rh", "Fe", "Ge", "He", "Ie", "Je", "Ke", "Le", "Me", "dH", "lu", "Ne", "Oe", "Pe", "Qe", "Sg", "iv", "Re", "Se", "Te", "Ue", "Ve", "We", "Xe", "Ye", "Ze", "_e", "$e", "af", "bf", "cf", "df", "ef", "ff", "gf", "hf", "jf", "kf", "lf", "mf", "nf", "of", "pf", "qf", "rf", "sf", "tf", "mh", "uf", "vf", "wf", "xf", "yf", "zf", "Af", "Bf", "Cf", "Df", "Ef", "Ff", "Gf", "Hf", "If", "Jf", "Kf", "Lf", "Mf", "Nf", "Of", "Pf", "Qf", "Rf", "Sf", "Tf", "Uf", "Vf", "Wf", "Xf", "Yf", "lj", "Km", "Zf", "g0", "sk", "_f", "$f", "ag", "bg", "tA", "wl", "cg", "dg", "eg", "fg", "Ay", "qh", "gg", "hg", "fl", "Rg", "Rp", "ig", "jg", "kg", "lg", "mg", "ng", "og", "pg", "qg", "rg", "sg", "tg", "ug", "vg", "wg", "xg", "yg", "zg", "Ag", "Bg", "Cg", "Dg", "Eg", "Fg", "Gg", "Hg", "Ig", "Jg", "Kg", "Lg", "Mg", "Ng", "Og", "JP", "Pg", "Qg", "Tg", "Ug", "Wg", "Xg", "Yg", "Zg", "_g", "$g", "ah", "bh", "ch", "dh", "eh", "fh", "gh", "hh", "ih", "jh", "kh", "lh", "nh", "oh", "zh", "ph", "sh", "th", "uh", "wh", "yh", "Ah", "Bh", "Ch", "Dh", "Eh", "Fh", "Hh", "Ih", "Jh", "Kh", "Lh", "Mh", "o0", "hO", "Nh", "Oh", "Ph", "Qh", "Rh", "Sh", "Th", "Uh", "Vh", "Wh", "Xh", "Yh", "Zh", "Dxa", "IP", "_h", "$h", "Oi", "Gv", "ai", "bi", "isa", "HP", "ci", "di", "ei", "fi", "gi", "hi", "ii", "ji", "ki", "GP", "li", "mi", "ni", "oi", "pi", "qi", "ri", "si", "ti", "ui", "vi", "wi", "xi", "yi", "zi", "Ai", "sr", "Ek", "Bi", "Ci", "mI", "Di", "Ei", "Fi", "sA", "s0", "Gi", "psa", "Hi", "Ii", "Ji", "Ki", "Li", "Mi", "Ni", "Pi", "Dn", "km", "Qi", "Ri", "Si", "Ti", "Ui", "Vi", "Wi", "Xi", "Yi", "Zi", "_i", "$i", "aj", "bj", "cj", "dj", "ej", "fj", "gj", "hj", "ij", "jj", "kj", "qsa", "mj", "nj", "oj", "pj", "Hm", "qj", "rj", "sj", "tj", "uj", "vj", "wj", "xj", "yj", "zj", "Aj", "Bj", "Cj", "Dj", "Ej", "Fj", "Gj", "Hj", "Ij", "Jj", "Cy", "Kj", "Lj", "Mj", "Nj", "Oj", "Pj", "Qj", "Rj", "Sj", "Tj", "Uj", "Vj", "em", "Wj", "Xj", "Yj", "Zj", "_j", "$j", "ak", "bk", "ck", "dk", "ek", "fk", "gk", "hk", "ik", "Ev", "jk", "kk", "lk", "mk", "nk", "ok", "pk", "FP", "qk", "rk", "tk", "uk", "vk", "xk", "Fv", "zk", "Ak", "Bk", "Ck", "Dk", "Fk", "Gk", "Hk", "Ik", "Jk", "Kk", "Lk", "mD", "Nk", "Ok", "Pk", "Qk", "Rk", "Tk", "Uk", "Vk", "Wk", "Xk", "Yk", "Zk", "_k", "$k", "al", "bl", "cl", "dl", "el", "gl", "hl", "il", "jl", "kl", "ll", "ml", "nl", "ol", "pl", "ql", "rl", "sl", "tl", "ul", "xl", "yl", "zl", "Et", "Al", "Bl", "Cl", "Dl", "El", "Fl", "Gl", "Hl", "Il", "Jl", "Kl", "Ll", "Ml", "Nl", "Ol", "Pl", "Ql", "Rl", "Sl", "Tl", "Ul", "Vl", "Wl", "Xl", "Yl", "Zl", "_l", "$l", "am", "bm", "cm", "dm", "fm", "gm", "hm", "im", "jm", "lm", "mm", "nm", "om", "pm", "qm", "rm", "sm", "tm", "um", "wm", "xm", "ym", "zm", "Bm", "Cn", "kr", "mxa", "z2", "Ns", "Jq", "txa", "et", "Sp", "$wa", "uxa", "en", "cH", "csa", "Gn", "Fm", "l8", "Nn", "iF", "CZ", "Br", "Ez", "hoa", "dna", "ioa", "UN", "cr", "lo", "cna", "mG", "wJ", "Uw", "jG", "iG", "bna", "ana", "$ma", "YN", "Zn", "xw", "NN"Line truncated
"sourcesContent": ["var binaryen = {};\n(function() {\n\nvar a;a||(a=typeof binaryen !== 'undefined' ? binaryen : {});var aa={},f;for(f in a)a.hasOwnProperty(f)&&(aa[f]=a[f]);var ba=\"./this.program\";function ca(b,d){throw d;}var da=!1,fa=!1,n=!1,ha=!1;da=\"object\"===typeof window;fa=\"function\"===typeof importScripts;n=\"object\"===typeof process&&\"object\"===typeof process.versions&&\"string\"===typeof process.versions.node;ha=!da&&!n&&!fa;var p=\"\",ia,ja,ka,la;\nif(n)p=fa?require(\"path\").dirname(p)+\"/\":__dirname+\"/\",ia=function(b,d){var g=ma(b);if(g)return d?g:g.toString();ka||(ka=require(\"fs\"));la||(la=require(\"path\"));b=la.normalize(b);return ka.readFileSync(b,d?null:\"utf8\")},ja=function(b){b=ia(b,!0);b.buffer||(b=new Uint8Array(b));assert(b.buffer);return b},1<process.argv.length&&(ba=process.argv[1].replace(/\\\\/g,\"/\")),process.argv.slice(2),\"undefined\"!==typeof module&&(module.exports=a),process.on(\"uncaughtException\",function(b){if(!(b instanceof na))throw b;\n}),process.on(\"unhandledRejection\",q),ca=function(b){process.exit(b)},a.inspect=function(){return\"[Emscripten Module object]\"};else if(ha)\"undefined\"!=typeof read&&(ia=function(b){var d=ma(b);return d?oa(d):read(b)}),ja=function(b){var d;if(d=ma(b))return d;if(\"function\"===typeof readbuffer)return new Uint8Array(readbuffer(b));d=read(b,\"binary\");assert(\"object\"===typeof d);return d},\"function\"===typeof quit&&(ca=function(b){quit(b)}),\"undefined\"!==typeof print&&(\"undefined\"===typeof console&&(console=\n{}),console.log=print,console.warn=console.error=\"undefined\"!==typeof printErr?printErr:print);else if(da||fa)fa?p=self.location.href:\"undefined\"!==typeof document&&document.currentScript&&(p=document.currentScript.src),p=0!==p.indexOf(\"blob:\")?p.substr(0,p.lastIndexOf(\"/\")+1):\"\",ia=function(b){try{var d=new XMLHttpRequest;d.open(\"GET\",b,!1);d.send(null);return d.responseText}catch(g){if(b=ma(b))return oa(b);throw g;}},fa&&(ja=function(b){try{var d=new XMLHttpRequest;d.open(\"GET\",b,!1);d.responseType=\n\"arraybuffer\";d.send(null);return new Uint8Array(d.response)}catch(g){if(b=ma(b))return b;throw g;}});var t=a.print||console.log.bind(console),v=a.printErr||console.warn.bind(console);for(f in aa)aa.hasOwnProperty(f)&&(a[f]=aa[f]);aa=null;a.thisProgram&&(ba=a.thisProgram);a.quit&&(ca=a.quit);var w=0,pa;a.wasmBinary&&(pa=a.wasmBinary);var noExitRuntime=a.noExitRuntime||!0;function qa(){this.buffer=new ArrayBuffer(ra/65536*65536)}function sa(){}\nfunction ta(){this.exports=(\n// EMSCRIPTEN_START_ASM\nfunction instantiate(Jb){function c(d){d.set=function(a,b){this[a]=b};d.get=function(a){return this[a]};return d}var e;var f=new Uint8Array(123);for(var a=25;a>=0;--a){f[48+a]=52+a;f[65+a]=a;f[97+a]=26+a}f[43]=62;f[47]=63;function l(m,n,o){var g,h,a=0,i=n,j=o.length,k=n+(j*3>>2)-(o[j-2]==\"=\")-(o[j-1]==\"=\");for(;a<j;a+=4){g=f[o.charCodeAt(a+1)];h=f[o.charCodeAt(a+2)];m[i++]=f[o.charCodeAt(a)]<<2|g>>4;if(i<k)m[i++]=g<<4|h>>2;if(i<k)m[i++]=h<<6|f[o.charCodeAt(a+3)]}}function p(q){l(e,1024,\"dmFsdWUudHlwZS5pc0NvbmNyZXRlKCkARmxvdwBsaXQuaXNDb25jcmV0ZSgpAExpdGVyYWxzAHZhbHVlcy5zaXplKCkgPT0gMQBnZXRTaW5nbGVWYWx1ZQBnZXRpMzIAYyA9PSAoYyAmIDB4ZmYpAGV4dGVuZEZvclBhY2tpbmcAYyA9PSAoYyAmIDB4ZmZmZikAYWxsb2NhdGlvbiBmYWlsdXJl\");l(e,1200,\"pDIAAKUyAACmMgAApzIAAKgyAAB0eXBlLmlzRnVuY3Rpb24oKSAmJiAhZnVuYy5pc051bGwoKQBnZXRGdW5jAHR5cGUuaXNOdWxsYWJsZSgpAG1ha2VOdWxsAHR5cGUuZ2V0SGVhcFR5cGUoKSA9PSBIZWFwVHlwZTo6aTMxAGdldGkzMQByZWludGVycHJldGk2NAByZWludGVycHJldGkzMgBzAC9ob21lL3J1bm5lci93b3JrL2JpbmFyeWVuLmpzL2JpbmFyeWVuLmpzL2JpbmFyeWVuL3NyYy9lbXNjcmlwdGVuLW9wdGltaXplci9pc3RyaW5nLmgASVN0cmluZwAYaAIA2AU=\");l(e,1476,\"qTIAAKoyAACrMgAArDIAAK0yAABONHdhc20yNENvbnN0YW50RXhwcmVzc2lvblJ1bm5lcklOU18xN0NFeHByZXNzaW9uUnVubmVyRUUyME5vbmNvbnN0YW50RXhjZXB0aW9uRQBnZXRDb25zdEV4cHJlc3Npb24AbWFrZUNvbnN0YW50RXhwcmVzc2lvbgBzaXplIDw9IG51bUNodW5rcyAqIENIVU5LX1NJWkUAYWxsb2NTcGFjZQB2YWx1ZS5pc051bGwoKSAmJiAidW5leHBlY3RlZCBub24tbnVsbCByZWZlcmVuY2UgdHlwZSBsaXRlcmFsIgBpbnZhbGlkIGNvbnN0YW50IGV4cHJlc3Npb24AaXNCYXNpYygpICYmICJCYXNpYyB0eXBlIGV4cGVjdGVkIgB2YWx1ZS50eXBlLmlzTnVtYmVyKCkAbWFrZUNvbnN0\");l(e,1828,\"qTIAAK4yAACrMgAArDIAAK0y\");l(e,1856,\"rzIAALAyAACxMgAAsjIAALMyAABleHByZXNzaW9uLT5pczxVbmFyeT4oKQAvaG9tZS9ydW5uZXIvd29yay9iaW5hcnllbi5qcy9iaW5hcnllbi5qcy9iaW5hcnllbi9zcmMvYmluYXJ5ZW4tYy5jcHAAQmluYXJ5ZW5VbmFyeVNldFZhbHVlAHZhbHVlRXhwcgBCaW5hcnllblVuYXJ5U2V0T3AAQmluYXJ5ZW5VbmFyeUdldFZhbHVlAEJpbmFyeWVuVW5hcnlHZXRPcABwYXJlbnQgPT0gb3RoZXIucGFyZW50AG9wZXJhdG9yLQBleHByZXNzaW9uLT5pczxUdXBsZU1ha2U+KCkAQmluYXJ5ZW5UdXBsZU1ha2VTZXRPcGVyYW5kQXQAaW5kZXggPCBzdGF0aWNfY2FzdDxUdXBsZU1ha2UqPihleHByZXNzaW9uKS0+b3BlcmFuZHMuc2l6ZSgpAG9wZXJhbmRFeHByAEJpbmFyeWVuVHVwbGVNYWtlUmVtb3ZlT3BlcmFuZEF0AEJpbmFyeWVuVHVwbGVNYWtlSW5zZXJ0T3BlcmFuZEF0AGluZGV4IDw9IHNpemUoKQBpbnNlcnRBdABCaW5hcnllblR1cGxlTWFrZUdldE9wZXJhbmRBdABCaW5hcnllblR1cGxlTWFrZUdldE51bU9wZXJhbmRzAEJpbmFyeWVuVHVwbGVNYWtlQXBwZW5kT3BlcmFuZABleHByZXNzaW9uLT5pczxUdXBsZUV4dHJhY3Q+KCkAQmluYXJ5ZW5UdXBsZUV4dHJhY3RTZXRUdXBsZQB0dXLine truncated
"mappings": "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 truncated
"names": ["require_binaryen", "__commonJSMin", "exports", "module", "binaryen", "a", "aa", "f", "ba", "ca", "b", "d", "da", "fa", "n", "ha", "p", "ia", "ja", "ka", "la", "g", "ma", "assert", "na", "q", "oa", "t", "v", "w", "pa", "noExitRuntime", "qa", "ra", "sa", "ta", "Jb", "c", "e", "l", "m", "o", "h", "i", "j", "k", "r", "s", "u", "x", "y", "z", "A", "B", "C", "Hb", "Ib", "D", "E", "Fb", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "_", "$", "ea", "ga", "ua", "va", "wa", "xa", "ya", "za", "Aa", "Ba", "Ca", "Da", "Ea", "Fa", "Ga", "Ha", "Ia", "Ja", "Ka", "La", "Ma", "Na", "Oa", "Pa", "Qa", "Ra", "Sa", "Ta", "Ua", "Va", "Wa", "Xa", "Ya", "Za", "_a", "$a", "ab", "bb", "cb", "db", "eb", "fb", "gb", "hb", "ib", "jb", "kb", "lb", "mb", "nb", "ob", "pb", "qb", "rb", "sb", "tb", "ub", "vb", "wb", "xb", "yb", "vl", "zb", "jc", "Sk", "wk", "Mk", "hc", "yk", "vc", "Fy", "Wb", "Ub", "Tb", "cp", "Gh", "Bp", "pc", "Qm", "bp", "vh", "pA", "kO", "vm", "vsa", "rD", "Lb", "Jt", "Gxa", "$2", "_2", "Fxa", "Ab", "Bb", "Cb", "Db", "Eb", "Gb", "Kb", "Mb", "Nb", "Ob", "Pb", "Qb", "Rb", "Sb", "Vb", "Xb", "Yb", "Zb", "_b", "$b", "ac", "bc", "cc", "dc", "ec", "fc", "gc", "ic", "Iv", "lc", "kc", "mc", "nc", "oc", "qc", "rc", "sc", "Gy", "tc", "uc", "wc", "xc", "yc", "zc", "Ac", "Bc", "Cc", "Dc", "Ec", "Fc", "Gc", "Hc", "Ic", "Jc", "Kc", "Lc", "Mc", "Nc", "Oc", "Pc", "Qc", "Rc", "Sc", "Tc", "Uc", "Vc", "Wc", "Xc", "Yc", "Zc", "_c", "$c", "ad", "bd", "cd", "dd", "ed", "fd", "gd", "hd", "id", "jd", "kd", "ld", "md", "nd", "od", "pd", "qd", "rd", "sd", "td", "ud", "vd", "wd", "xd", "yd", "zd", "Ad", "Bd", "Cd", "Dd", "Ed", "Fd", "Gd", "Hd", "Id", "Jd", "Kd", "Ld", "Md", "Nd", "Od", "Pd", "Qd", "Rd", "Sd", "Td", "Ud", "Vd", "Wd", "Xd", "Yd", "Zd", "fO", "eO", "_d", "$d", "xz", "ae", "be", "ce", "de", "ee", "fe", "ge", "he", "ie", "je", "ke", "le", "me", "ne", "oe", "pe", "qe", "re", "se", "te", "ue", "ve", "we", "xe", "ye", "ze", "Ae", "Lw", "Exa", "xh", "Vg", "Be", "Ce", "De", "Ee", "rh", "Fe", "Ge", "He", "Ie", "Je", "Ke", "Le", "Me", "dH", "lu", "Ne", "Oe", "Pe", "Qe", "Sg", "iv", "Re", "Se", "Te", "Ue", "Ve", "We", "Xe", "Ye", "Ze", "_e", "$e", "af", "bf", "cf", "df", "ef", "ff", "gf", "hf", "jf", "kf", "lf", "mf", "nf", "of", "pf", "qf", "rf", "sf", "tf", "mh", "uf", "vf", "wf", "xf", "yf", "zf", "Af", "Bf", "Cf", "Df", "Ef", "Ff", "Gf", "Hf", "If", "Jf", "Kf", "Lf", "Mf", "Nf", "Of", "Pf", "Qf", "Rf", "Sf", "Tf", "Uf", "Vf", "Wf", "Xf", "Yf", "lj", "Km", "Zf", "g0", "sk", "_f", "$f", "ag", "bg", "tA", "wl", "cg", "dg", "eg", "fg", "Ay", "qh", "gg", "hg", "fl", "Rg", "Rp", "ig", "jg", "kg", "lg", "mg", "ng", "og", "pg", "qg", "rg", "sg", "tg", "ug", "vg", "wg", "xg", "yg", "zg", "Ag", "Bg", "Cg", "Dg", "Eg", "Fg", "Gg", "Hg", "Ig", "Jg", "Kg", "Lg", "Mg", "Ng", "Og", "JP", "Pg", "Qg", "Tg", "Ug", "Wg", "Xg", "Yg", "Zg", "_g", "$g", "ah", "bh", "ch", "dh", "eh", "fh", "gh", "hh", "ih", "jh", "kh", "lh", "nh", "oh", "zh", "ph", "sh", "th", "uh", "wh", "yh", "Ah", "Bh", "Ch", "Dh", "Eh", "Fh", "Hh", "Ih", "Jh", "Kh", "Lh", "Mh", "o0", "hO", "Nh", "Oh", "Ph", "Qh", "Rh", "Sh", "Th", "Uh", "Vh", "Wh", "Xh", "Yh", "Zh", "Dxa", "IP", "_h", "$h", "Oi", "Gv", "ai", "bi", "isa", "HP", "ci", "di", "ei", "fi", "gi", "hi", "ii", "ji", "ki", "GP", "li", "mi", "ni", "oi", "pi", "qi", "ri", "si", "ti", "ui", "vi", "wi", "xi", "yi", "zi", "Ai", "sr", "Ek", "Bi", "Ci", "mI", "Di", "Ei", "Fi", "sA", "s0", "Gi", "psa", "Hi", "Ii", "Ji", "Ki", "Li", "Mi", "Ni", "Pi", "Dn", "km", "Qi", "Ri", "Si", "Ti", "Ui", "Vi", "Wi", "Xi", "Yi", "Zi", "_i", "$i", "aj", "bj", "cj", "dj", "ej", "fj", "gj", "hj", "ij", "jj", "kj", "qsa", "mj", "nj", "oj", "pj", "Hm", "qj", "rj", "sj", "tj", "uj", "vj", "wj", "xj", "yj", "zj", "Aj", "Bj", "Cj", "Dj", "Ej", "Fj", "Gj", "Hj", "Ij", "Jj", "Cy", "Kj", "Lj", "Mj", "Nj", "Oj", "Pj", "Qj", "Rj", "Sj", "Tj", "Uj", "Vj", "em", "Wj", "Xj", "Yj", "Zj", "_j", "$j", "ak", "bk", "ck", "dk", "ek", "fk", "gk", "hk", "ik", "Ev", "jk", "kk", "lk", "mk", "nk", "ok", "pk", "FP", "qk", "rk", "tk", "uk", "vk", "xk", "Fv", "zk", "Ak", "Bk", "Ck", "Dk", "Fk", "Gk", "Hk", "Ik", "Jk", "Kk", "Lk", "mD", "Nk", "Ok", "Pk", "Qk", "Rk", "Tk", "Uk", "Vk", "Wk", "Xk", "Yk", "Zk", "_k", "$k", "al", "bl", "cl", "dl", "el", "gl", "hl", "il", "jl", "kl", "ll", "ml", "nl", "ol", "pl", "ql", "rl", "sl", "tl", "ul", "xl", "yl", "zl", "Et", "Al", "Bl", "Cl", "Dl", "El", "Fl", "Gl", "Hl", "Il", "Jl", "Kl", "Ll", "Ml", "Nl", "Ol", "Pl", "Ql", "Rl", "Sl", "Tl", "Ul", "Vl", "Wl", "Xl", "Yl", "Zl", "_l", "$l", "am", "bm", "cm", "dm", "fm", "gm", "hm", "im", "jm", "lm", "mm", "nm", "om", "pm", "qm", "rm", "sm", "tm", "um", "wm", "xm", "ym", "zm", "Bm", "Cn", "kr", "mxa", "z2", "Ns", "Jq", "txa", "et", "Sp", "$wa", "uxa", "en", "cH", "csa", "Gn", "Fm", "l8", "Nn", "iF", "CZ", "Br", "Ez", "hoa", "dna", "ioa", "UN", "cr", "lo", "cna", "mG", "wJ", "Uw", "jG", "iG", "bna", "ana", "$ma", "YN", "Zn", "xw", "NN"Line truncated
}
+2
View File
@@ -285,6 +285,8 @@ body {
</div><!-- controls_dynamic -->
</div><!-- controls_top -->
<div id="shortcuts_bar" class="disable-select"></div>
<div id="notebook">
<div id="sidebar">
<ul id="windowMenuList">
+172
View File
@@ -0,0 +1,172 @@
// MINIMAL KEYBOARD SHORTCUT MATCHER
//
// Follows the rules from "All JavaScript keyboard shortcut libraries are
// broken" (Hazel Duvall, 2025-01-10):
// - match on KeyboardEvent.key (layout-aware), never code/keyCode/which
// (mousetrap and most libraries use which -> wrong keys on Dvorak etc.)
// - only roman letters (A-Z), digits, and named navigation keys
// - normalize case, so Shift never changes what is matched
// - Shift is only allowed with letters (Shift mutates digits/punctuation)
// - never use Alt (macOS Option mutates letters, e.g. Alt+R = '®';
// AltGr = Ctrl+Alt on international PC layouts)
// - 'mod' = Cmd on macOS, Ctrl on Windows/Linux
export interface KeyBinding {
mod: boolean; // Cmd on macOS, Ctrl on Windows/Linux
shift: boolean;
key: string; // normalized: 'a'-'z', '0'-'9', or 'arrowleft' etc.
}
const NAMED_KEYS: { [k: string]: string } = {
left: 'arrowleft', right: 'arrowright', up: 'arrowup', down: 'arrowdown',
};
var _isMac: boolean | null = null;
export function isMacOS(): boolean {
if (_isMac === null) {
var nav = typeof navigator !== 'undefined' ? navigator : null;
_isMac = !!nav && /mac|iphone|ipad|ipod/i.test(nav.platform || nav.userAgent || '');
}
return _isMac;
}
export function parseKeyBinding(spec: string): KeyBinding | null {
var parts = spec.toLowerCase().split('+');
var key = parts.pop() as string;
var b: KeyBinding = { mod: false, shift: false, key: '' };
for (var p of parts) {
if (p == 'mod' || p == 'ctrl' || p == 'meta' || p == 'cmd') b.mod = true;
else if (p == 'shift') b.shift = true;
else {
console.warn('Keyboard shortcut "' + spec + '": unsupported modifier "' + p + '" (alt is layout-dependent), skipping');
return null;
}
}
key = NAMED_KEYS[key] || key;
var isLetter = /^[a-z]$/.test(key);
if (!isLetter && !/^[0-9]$/.test(key) && !/^arrow/.test(key)) {
console.warn('Keyboard shortcut "' + spec + '": key "' + key + '" is layout-dependent (use a-z, 0-9), skipping');
return null;
}
if (b.shift && !isLetter && !/^arrow/.test(key)) {
console.warn('Keyboard shortcut "' + spec + '": shift is only allowed with letters and arrows, skipping');
return null;
}
b.key = key;
return b;
}
export function matchesKeyBinding(b: KeyBinding, e: KeyboardEvent): boolean {
if (e.altKey) return false; // we never bind alt; avoids AltGr ghosts while typing
var mac = isMacOS();
var modPressed = mac ? e.metaKey : e.ctrlKey;
var otherPressed = mac ? e.ctrlKey : e.metaKey;
if (b.mod !== modPressed || otherPressed) return false;
if (b.shift !== e.shiftKey) return false;
return (e.key || '').toLowerCase() === b.key;
}
export class KeyBinder {
bindings: { binding: KeyBinding; fn: (e?: any, combo?: any) => void }[] = [];
private handler = (e: KeyboardEvent) => {
// defer to any handler that already claimed this event (CodeMirror
// keymaps, browser UI, ...) -- they call preventDefault when handled
if (e.defaultPrevented) return;
for (var i = 0; i < this.bindings.length; i++) {
var bind = this.bindings[i];
if (matchesKeyBinding(bind.binding, e)) {
e.preventDefault();
e.stopPropagation();
bind.fn(e);
return;
}
}
};
bind(spec: string, fn: (e?: any, combo?: any) => void) {
var b = parseKeyBinding(spec);
if (b) this.bindings.push({ binding: b, fn });
}
unbindAll() {
this.bindings = [];
}
attach() {
window.addEventListener('keydown', this.handler);
}
detach() {
window.removeEventListener('keydown', this.handler);
}
}
// --- CodeMirror keymap interop ---
//
// CodeMirror calls preventDefault() on any key one of its keymaps handles, and
// KeyBinder (above) deliberately defers to that, so a key CodeMirror binds can
// never reach the IDE while an editor is focused. Handing a key over to the IDE
// therefore means removing CodeMirror's binding for it.
//
// The specs can't be compared as strings: CodeMirror writes modifiers in
// whatever order each binding's author chose ("Shift-Mod-k" for deleteLine,
// "Mod-Shift-l" for selectSelectionMatches), and a binding may carry
// per-platform specs that override its default one.
export interface CMKeyBinding {
key?: string;
mac?: string;
win?: string;
linux?: string;
}
const CM_MODIFIERS: { [k: string]: string } = {
mod: 'Mod', cmd: 'Mod', meta: 'Mod', ctrl: 'Ctrl', control: 'Ctrl',
shift: 'Shift', alt: 'Alt', option: 'Alt',
};
var _isWin: boolean | null = null;
function isWindows(): boolean {
if (_isWin === null) {
var nav = typeof navigator !== 'undefined' ? navigator : null;
_isWin = !!nav && /win/i.test(nav.platform || nav.userAgent || '');
}
return _isWin;
}
// "Shift-Mod-k" and "Mod-Shift-K" both become "Mod-Shift-k"
export function normalizeCMKeySpec(spec: string): string {
var parts = spec.split('-');
var key = parts.pop() as string;
if (key === '') key = '-'; // trailing dash means the key itself is '-'
var mods: string[] = [];
for (var p of parts) {
if (p === '') continue; // "Mod--" splits to ['Mod', '', '']
var m = CM_MODIFIERS[p.toLowerCase()] || p;
if (m == 'Ctrl' && !isMacOS()) m = 'Mod'; // off macOS, Ctrl *is* Mod
if (mods.indexOf(m) < 0) mods.push(m);
}
mods.sort();
return mods.concat([key.toLowerCase()]).join('-');
}
// the spec CodeMirror will actually use on this platform
export function effectiveCMKeySpec(b: CMKeyBinding): string | undefined {
var platform = isMacOS() ? b.mac : (isWindows() ? b.win : b.linux);
return platform || b.key;
}
// every mod+shift+<letter> the IDE binds -- see the shortcuts in ui.ts, which
// testkeys.ts checks this list against
export const IDE_RESERVED_KEYS = [
'Mod-Shift-a', 'Mod-Shift-d', 'Mod-Shift-e', 'Mod-Shift-f', 'Mod-Shift-g',
'Mod-Shift-h', 'Mod-Shift-i', 'Mod-Shift-j', 'Mod-Shift-k', 'Mod-Shift-l',
'Mod-Shift-r', 'Mod-Shift-x', 'Mod-Shift-y',
];
// drop the bindings that would swallow one of the IDE's own shortcuts
export function stripCMKeymap<T extends CMKeyBinding>(keymap: readonly T[], specs: string[]): T[] {
var freed = specs.map(normalizeCMKeySpec);
return keymap.filter(function (b) {
var spec = effectiveCMKeySpec(b);
return !spec || freed.indexOf(normalizeCMKeySpec(spec)) < 0;
});
}
+1 -1
View File
@@ -1544,7 +1544,7 @@ class PixEditor extends Viewer {
}
createToolbarButtons(parent: HTMLElement) {
var toolbar = new Toolbar(parent, null);
var toolbar = new Toolbar(parent, parent); // scope key bindings to the pixel editor
toolbar.add('ctrl+shift+h', 'Flip X', 'glyphicon-resize-horizontal', this.flipX.bind(this));
toolbar.add('ctrl+shift+v', 'Flip Y', 'glyphicon-resize-vertical', this.flipY.bind(this));
toolbar.add('ctrl+shift+9', 'Rotate', 'glyphicon-repeat', this.rotate90.bind(this));
+7 -2
View File
@@ -3,6 +3,7 @@ import { indentUnit } from "@codemirror/language";
import { Compartment, EditorState, Extension } from "@codemirror/state";
import { EditorView, highlightSpecialChars, highlightTrailingWhitespace, highlightWhitespace, keymap, lineNumbers } from "@codemirror/view";
import { isProductionHost } from "../common/util";
import { setBarVisible } from "./shortcutbar";
import { debugHighlightTagsTooltip } from "./views/debug";
import { insertTabKeymap, smartIndentKeymap } from "./views/tabs";
@@ -27,6 +28,7 @@ export interface EditorSettings {
closeBrackets: boolean;
debugHighlightTags: boolean;
showLineNumbers: boolean;
showStatusBar: boolean;
}
const SETTINGS_KEY = "8bitworkshop/editorSettings";
@@ -40,6 +42,7 @@ const defaultSettings: EditorSettings = {
closeBrackets: false,
debugHighlightTags: false,
showLineNumbers: false,
showStatusBar: true,
};
export function loadSettings(): EditorSettings {
@@ -96,7 +99,6 @@ export function openSettings() {
onEscape: true,
title: "Settings",
message: `<form id="settingsForm" onsubmit="return false">
<h5>Editor preferences</h5>
<div class="form-group"><label>Tab size: <input type="number" id="setting_tabSize" min="1" max="40" value="${settings.tabSize}" style="width:4em"></label></div>
<div class="checkbox"><label><input type="checkbox" id="setting_tabsToSpaces" ${settings.tabsToSpaces ? 'checked' : ''}> Insert spaces when pressing TAB</label></div>
<div class="checkbox"><label><input type="checkbox" id="setting_highlightSpecialChars" ${settings.highlightSpecialChars ? 'checked' : ''}> Highlight special characters</label></div>
@@ -104,9 +106,10 @@ export function openSettings() {
<div class="checkbox"><label><input type="checkbox" id="setting_highlightTrailingWhitespace" ${settings.highlightTrailingWhitespace ? 'checked' : ''}> Highlight unwanted trailing whitespace</label></div>
<div class="checkbox"><label><input type="checkbox" id="setting_showLineNumbers" ${settings.showLineNumbers ? 'checked' : ''}> Show line numbers</label></div>
<div class="checkbox"><label><input type="checkbox" id="setting_closeBrackets" ${settings.closeBrackets ? 'checked' : ''}> Automatically add and remove closing brackets</label></div>
<div class="checkbox"><label><input type="checkbox" id="setting_showStatusBar" ${settings.showStatusBar ? 'checked' : ''}> Show keyboard shortcuts / status bar</label></div>
${showInternal ? `
<hr>
<h5>8bitworkshop IDE internal settings</h5>
<h5>Internal</h5>
<div class="checkbox"><label><input type="checkbox" id="setting_debugHighlightTags" ${settings.debugHighlightTags ? 'checked' : ''}> Debug editor syntax highlighting tags</label></div>
` : ''}
</form>`,
@@ -127,8 +130,10 @@ export function openSettings() {
settings.closeBrackets = $('#setting_closeBrackets').is(':checked');
settings.showLineNumbers = $('#setting_showLineNumbers').is(':checked');
if (showInternal) settings.debugHighlightTags = $('#setting_debugHighlightTags').is(':checked');
settings.showStatusBar = $('#setting_showStatusBar').is(':checked');
saveSettings(settings);
applySettingsToAll(settings);
setBarVisible(settings.showStatusBar);
}
}
}
+183
View File
@@ -0,0 +1,183 @@
import $ = require("jquery");
import { isMacOS } from "./keys";
// KEYBOARD SHORTCUTS / STATUS BAR
//
// Display-only bar with two zones:
// left: context-sensitive keyboard shortcuts (chips of form "<kbd> Ctrl+Alt+R Reset")
// right: status items (errors, debug state, etc.)
//
// The bar does NOT bind any keys -- actual key handling lives where it
// always has (mousetrap in Toolbar, CodeMirror keymaps). The bar reflects
// what is available in the current context; chips are clickable where an
// obvious action exists.
export interface Shortcut {
key: string; // display combo, e.g. "Ctrl+Alt+R"
label: string;
fn?: (e?, combo?) => void; // optional: makes the chip clickable
}
export interface StatusItem {
text: string;
cls?: string; // extra css class, e.g. 'error' 'ok' 'running'
title?: string; // tooltip
fn?: (e?) => void; // optional: makes the chip clickable
}
// display a mousetrap-style key spec for the current platform:
// mac: 'mod+shift+r' -> '⇧⌘R', 'ctrl+alt+r' -> '⌃⌥R'
// win/linux: 'mod+shift+r' -> 'Ctrl+Shift+R'
// unknown parts (e.g. punctuation keys) pass through unchanged
const MAC_SYMBOLS: { [mod: string]: string } = { shift: '⇧', ctrl: '⌃', alt: '⌥', meta: '⌘', mod: '⌘', cmd: '⌘' };
const PC_NAMES: { [mod: string]: string } = { shift: 'Shift', ctrl: 'Ctrl', alt: 'Alt', meta: 'Win', mod: 'Ctrl', cmd: 'Cmd' };
const KEY_SYMBOLS: { [k: string]: string } = { arrowleft: '←', arrowright: '→', arrowup: '↑', arrowdown: '↓', backspace: '⌫', enter: '↩', tab: '⇥', escape: '⎋', space: '␣' };
export function formatKey(key: string): string {
var parts = key.toLowerCase().split('+');
var main = parts.pop() as string;
var isMac = isMacOS();
// canonical display order: shift first on mac (HIG), ctrl first on PC
var order = isMac ? ['shift', 'ctrl', 'alt', 'meta', 'mod', 'cmd'] : ['mod', 'ctrl', 'shift', 'alt', 'meta', 'cmd'];
var uniq = order.filter((p) => parts.indexOf(p) >= 0);
for (var p of parts) if (uniq.indexOf(p) < 0) uniq.push(p);
var modStr = uniq.map((p) => isMac ? (MAC_SYMBOLS[p] || p) : (PC_NAMES[p] || p)).join(isMac ? '' : '+');
var mainDisp = /^[a-z]$/.test(main) ? main.toUpperCase() : (KEY_SYMBOLS[main] || (isMac ? main : main.charAt(0).toUpperCase() + main.slice(1)));
return (modStr ? modStr + (isMac ? '' : '+') : '') + mainDisp;
}
export class ShortcutBar {
div: HTMLElement;
shortcutsSig: string = "";
status: { [id: string]: StatusItem } = {};
shortcutsZone: JQuery;
statusZone: JQuery;
visible: boolean = true;
constructor(div: HTMLElement) {
this.div = div;
this.shortcutsZone = $(document.createElement("span")).addClass("shortcuts_zone");
this.statusZone = $(document.createElement("span")).addClass("status_zone");
$(div).append(this.shortcutsZone).append(this.statusZone);
}
setShortcuts(shortcuts: Shortcut[]) {
if (!this.visible) return;
// skip re-render if nothing changed
var sig = shortcuts.map((s) => s.key + "\u0001" + s.label).join("\u0002");
if (sig === this.shortcutsSig) return;
this.shortcutsSig = sig;
this.shortcutsZone.empty();
for (var s of shortcuts) {
var span = $(document.createElement("span")).addClass("shortcut");
span.append($(document.createElement("kbd")).text(formatKey(s.key)));
span.append(document.createTextNode(" " + s.label));
if (s.fn) {
makeClickable(span, s.fn);
}
this.shortcutsZone.append(span);
}
}
setStatus(id: string, item: StatusItem | null) {
if (item) this.status[id] = item;
else delete this.status[id];
this.renderStatus();
}
renderStatus() {
if (!this.visible) return;
this.statusZone.empty();
for (var key of Object.keys(this.status)) {
var s = this.status[key];
var span = $(document.createElement("span")).addClass("status_item");
if (s.cls) span.addClass(s.cls);
if (s.title) span.prop("title", s.title);
span.text(s.text);
if (s.fn) {
makeClickable(span, s.fn);
}
this.statusZone.append(span);
}
}
}
function makeClickable(span: JQuery, fn: (e?) => void) {
// don't steal focus on mousedown: clicking a chip would blur the active
// view and re-render the bar (removing the chip) before the click lands
span.addClass("clickable");
span.mousedown((e) => e.preventDefault());
span.click(fn);
}
// module-level singleton + provider wiring
// (avoids circular imports between ui.ts / windows.ts / views)
export var shortcutBar: ShortcutBar = null;
export function initShortcutBar(div: HTMLElement) {
shortcutBar = new ShortcutBar(div);
}
var globalShortcutsFn: () => Shortcut[] = () => [];
var viewShortcutsFn: () => Shortcut[] = () => [];
// global/debug shortcuts are composed by ui.ts (knows debug state)
export function setGlobalShortcutsFn(fn: () => Shortcut[]) { globalShortcutsFn = fn; }
// view-specific shortcuts come from the active ProjectView's getShortcuts()
export function setViewShortcutsFn(fn: () => Shortcut[]) { viewShortcutsFn = fn; }
// status items are updated directly by the subsystem that owns them
export function setBarStatus(id: string, item: StatusItem | null) {
if (shortcutBar) shortcutBar.setStatus(id, item);
}
// show/hide the whole bar (driven by the IDE setting); also collapses
// the bottom spacing via the body class (see css/ui.css)
export function setBarVisible(visible: boolean) {
$(document.body).toggleClass("statusbar-hidden", !visible);
if (shortcutBar) {
shortcutBar.visible = visible;
if (visible) {
shortcutBar.shortcutsSig = ""; // force re-render on next refresh
shortcutBar.renderStatus();
refreshShortcutBar();
}
}
}
export function refreshShortcutBar() {
if (!shortcutBar) return;
var shortcuts = [...globalShortcutsFn(), ...viewShortcutsFn()];
// widget-scoped providers (e.g. the waveform viewer): show chips while
// the widget's container has focus
var ae = document.activeElement;
for (var es of elementShortcuts) {
if (ae && es.div.contains(ae)) shortcuts = shortcuts.concat(es.fn());
}
shortcutBar.setShortcuts(shortcuts.filter((s) => !isBrowserEaten(s.key)));
}
var elementShortcuts: { div: HTMLElement; fn: () => Shortcut[] }[] = [];
export function registerElementShortcuts(div: HTMLElement, fn: () => Shortcut[]) {
elementShortcuts.push({ div, fn });
}
export function unregisterElementShortcuts(div: HTMLElement) {
elementShortcuts = elementShortcuts.filter((es) => es.div !== div);
}
// combos the browser/OS reserves and won't let a page intercept:
// hide them from the bar rather than advertise dead keys
// (the underlying bindings stay in place for platforms where they work)
function isBrowserEaten(key: string): boolean {
var k = key.toLowerCase();
if (!isMacOS()) {
// Chrome/Firefox devtools on Windows/Linux: Ctrl+Shift+I/J/K
if (k == 'mod+shift+i' || k == 'mod+shift+j' || k == 'mod+shift+k') return true;
// GNOME desktop: terminal / lock screen
if (k == 'ctrl+alt+t' || k == 'ctrl+alt+l') return true;
}
return false;
}
+48 -5
View File
@@ -1,20 +1,52 @@
/// TOOLBAR
import { formatKey } from "./shortcutbar";
import { KeyBinder, parseKeyBinding } from "./keys";
// Lazy mousetrap require: mousetrap references `document` at module load time,
// which crashes in Node-based tests (window is polyfilled, document is not).
function getMousetrap() {
return require('mousetrap');
}
// Patch mousetrap's default stopCallback, which blocks ALL bound shortcuts
// when the event target is an input or contenteditable element -- which
// includes the CodeMirror editor. Allow combos with ctrl/alt/meta modifiers
// through so app commands keep working while typing in the editor.
// (AltGraph = AltGr on international keyboards: treat as character input.)
function patchMousetrap(Mousetrap: any) {
if (Mousetrap._8bwPatched) return Mousetrap;
var origStop = Mousetrap.stopCallback;
Mousetrap.stopCallback = function (e, element, combo, sequence) {
if (e && (e.ctrlKey || e.altKey || e.metaKey)) {
if (e.getModifierState && e.getModifierState('AltGraph')) {
return origStop.call(this, e, element, combo, sequence);
}
return false;
}
return origStop.call(this, e, element, combo, sequence);
};
Mousetrap._8bwPatched = true;
return Mousetrap;
}
export class Toolbar {
span : JQuery;
grp : JQuery;
mousetrap;
boundkeys = [];
keybinder: KeyBinder;
focusDiv: HTMLElement;
constructor(parentDiv:HTMLElement, focusDiv:HTMLElement) {
const Mousetrap = getMousetrap();
const Mousetrap = patchMousetrap(getMousetrap());
// article-compliant bindings (match on KeyboardEvent.key) go through
// KeyBinder; non-compliant specs (punctuation, alt, shift+digit) fall
// back to mousetrap's positional matching
this.focusDiv = focusDiv;
this.keybinder = new KeyBinder();
this.keybinder.attach();
this.mousetrap = focusDiv ? new Mousetrap(focusDiv) : Mousetrap;
this.span = $(document.createElement("span")).addClass("btn_toolbar");
parentDiv.appendChild(this.span[0]);
@@ -25,6 +57,11 @@ export class Toolbar {
this.span.remove();
this.span = null;
}
if (this.keybinder) {
this.keybinder.detach();
this.keybinder.unbindAll();
this.keybinder = null;
}
if (this.mousetrap) {
for (var key of this.boundkeys) {
this.mousetrap.unbind(key);
@@ -43,13 +80,19 @@ export class Toolbar {
icon = '<span class="glyphicon ' + icon + '" aria-hidden="true"></span>';
}
btn.html(icon);
btn.prop("title", key ? (alttext+" ("+key+")") : alttext);
btn.prop("title", key ? (alttext+" ("+formatKey(key)+")") : alttext);
btn.click(fn);
this.grp.append(btn).show();
}
if (key) {
this.mousetrap.bind(key, fn);
this.boundkeys.push(key);
if (!this.focusDiv && parseKeyBinding(key)) {
// layout-safe global binding: fires even when the editor has focus
this.keybinder.bind(key, fn);
} else {
// legacy fallback: mousetrap (positional matching, input-scoped)
this.mousetrap.bind(key, (e, combo) => { fn(e, combo); return false; });
this.boundkeys.push(key);
}
}
return btn;
}
+162 -14
View File
@@ -13,13 +13,14 @@ import { getSkeletonName, getToolMeta, TOOL_META } from "../common/toolmeta";
import { CodeListingMap, FileData, WorkerError, WorkerResult } from "../common/workertypes";
import { importPlatform } from "../platform/_index";
import { alertError, alertInfo, fatalError, setWaitDialog } from "./dialogs";
import { openSettings } from "./settings";
import { openSettings, loadSettings } from "./settings";
import { getPersistStatusMessage, getQuotaExceededMessage, requestPersistentStorage } from "./storage";
import { CodeProject, createNewPersistentStore, LocalForageFilesystem, OverlayFilesystem, ProjectFilesystem, WebPresetsFileSystem } from "./project";
import { getRepos, parseGithubURL } from "./services";
import { _downloadAllFilesZipFile, _downloadCassetteFile, _downloadProjectZipFile, _downloadROMImage, _downloadSourceFile, _downloadSymFile, _getCassetteFunction, _recordVideo, _shareEmbedLink } from "./shareexport";
import { _importProjectFromGithub, _loginToGithub, _logoutOfGithub, _publishProjectToGithub, _pullProjectFromGithub, _pushProjectToGithub, _removeRepository, importProjectFromGithub } from "./sync";
import { Toolbar } from "./toolbar";
import { Shortcut, initShortcutBar, setGlobalShortcutsFn, setViewShortcutsFn, setBarVisible, refreshShortcutBar } from "./shortcutbar";
import { openSearchDialog } from "./search/searchview";
import { setProjectProvider } from "./search/projectsource";
import { AssetEditorView } from "./views/asseteditor";
@@ -77,6 +78,7 @@ var toolbar = $("#controls_top");
var uitoolbar: Toolbar;
var stateRecorder: StateRecorderImpl;
var userPaused: boolean; // did user explicitly pause?
var debugSessionActive: boolean; // has the user entered a debug session? (drives debug shortcut chips)
var current_output: any; // current ROM (or other object)
var current_preset: Preset; // current preset object (if selected)
var store: LocalForage; // persistent store
@@ -951,6 +953,12 @@ function showErrorAlert(errors: WorkerError[], runtime: boolean) {
}
$("#error_alert").show();
errorWasRuntime = runtime;
// status chip: click jumps to first error that has an openable path
var jumpErr = errors.find((err) => err.path != null);
var fn;
if (jumpErr && projectWindows.isWindow(jumpErr.path == getCurrentMainFilename() ? current_project.mainPath : jumpErr.path)) {
fn = () => { jumpToError(jumpErr); };
}
}
function showExceptionAsError(err, msg: string) {
@@ -1073,6 +1081,115 @@ function showDebugInfo(state?) {
function setDebugButtonState(btnid: string, btnstate: string) {
$("#debug_bar, #run_bar").find("button").removeClass("btn_active").removeClass("btn_stopped");
$("#dbg_" + btnid).addClass("btn_" + btnstate);
refreshShortcutBar();
}
// context-sensitive shortcut providers for the bottom bar
function jumpToError(err: WorkerError) {
var path = err.path == getCurrentMainFilename() ? current_project.mainPath : err.path;
if (!projectWindows.isWindow(path)) return;
var wnd = projectWindows.createOrShow(path);
if (wnd instanceof SourceEditor) {
wnd.navigateToLine(err.line);
}
}
// go-to-address (mod+shift+g): works while the Disassembly, Memory Browser,
// or VRAM Browser is the active view; accepts a hex address ("$1234", "0x1234",
// "1234") or a symbol name ("main")
function getGoToAddressView(): DisassemblerView | MemoryView | null {
var wnd = projectWindows.getActive();
if (wnd instanceof DisassemblerView || wnd instanceof MemoryView) return wnd;
return null;
}
function parseGoToTarget(s: string): number {
s = s.trim();
if (!s) return -1;
// symbol name first (so symbols like "add" aren't parsed as hex)
var symmap = platform.debugSymbols && platform.debugSymbols.symbolmap;
if (symmap && s in symmap) return symmap[s];
var ls = s.toLowerCase();
if (symmap) {
for (var sym in symmap) {
if (sym.toLowerCase() === ls) return symmap[sym];
}
}
// hex address (bare digits are parsed as hex, like the listings)
if (/^(0x|\$)[0-9a-f]+$/i.test(s)) return parseInt(s.replace(/^(0x|\$)/i, ''), 16);
if (/^[0-9a-f]+$/i.test(s)) return parseInt(s, 16);
return -1;
}
function promptGoToAddress(): boolean {
var wnd = getGoToAddressView();
if (!wnd) return false;
var cur = (wnd as any).getCursorPC ? (wnd as any).getCursorPC() : -1;
(bootbox as any).prompt({
title: "Go to Address",
placeholder: "address in hex",
value: cur >= 0 ? hex(cur, 4) : "",
callback: (result: string) => {
if (!result) return; // canceled or empty
var addr = parseGoToTarget(result);
if (isNaN(addr) || addr < 0) {
alertError("Can't find address or symbol: " + DOMPurify.sanitize(result));
return;
}
wnd.goToAddress(addr);
}
});
return true;
}
function getGlobalShortcuts(): Shortcut[] {
var shortcuts: Shortcut[] = [];
if (platform && isPlatformReady()) {
// debug shortcuts appear only once a debug session has started
if (platform.setupDebug && platform.runEval) // TODO??
shortcuts.push({ key: 'mod+shift+d', label: 'Reset & Debug', fn: resetAndDebug });
if (!debugSessionActive) {
shortcuts.push({ key: 'mod+shift+r', label: 'Reset & Run', fn: resetAndRun });
shortcuts.push({ key: 'mod+shift+f', label: 'Search', fn: openSearchDialog });
}
if (platform.isRunning && platform.isRunning()) {
// in a debug session but emulator running: just Pause
shortcuts.push({ key: 'mod+shift+h', label: 'Pause', fn: pause });
} else if (platform.isRunning && !platform.isRunning() && !getGoToAddressView()) {
// mod+shift+g becomes "Go To Address" while a debug tool view is active
shortcuts.push({ key: 'mod+shift+g', label: 'Resume', fn: resume });
}
if (getGoToAddressView()) {
shortcuts.push({ key: 'mod+shift+g', label: 'Go To Address', fn: promptGoToAddress });
}
}
return shortcuts;
}
function getDebugShortcuts(): Shortcut[] {
var shortcuts: Shortcut[] = [];
if (!debugSessionActive || !platform || !isPlatformReady()) return shortcuts;
var running = platform.isRunning && platform.isRunning();
if (platform.step)
shortcuts.push({ key: 'mod+shift+l', label: 'Step', fn: singleStep });
if (platform.stepOver)
shortcuts.push({ key: 'mod+shift+k', label: 'Step Over', fn: stepOver });
if (platform.runUntilReturn)
shortcuts.push({ key: 'mod+shift+i', label: 'Step Out', fn: runUntilReturn });
if (platform.stepBack)
shortcuts.push({ key: 'mod+shift+j', label: 'Step Back', fn: runStepBackwards });
if (platform.runToVsync)
shortcuts.push({ key: 'mod+shift+x', label: 'Next Frame', fn: singleFrameStep });
if (platform.restartAtPC)
shortcuts.push({ key: 'mod+shift+a', label: 'Restart at Cursor', fn: restartAtCursor });
// TODO: check to see if line has debug info
if ((platform.runEval || platform.runToPC) && !platform_id.startsWith('verilog'))
shortcuts.push({ key: 'mod+shift+y', label: 'Run To Line', fn: runToCursor });
// session-level actions are always available once debugging
//shortcuts.push({ key: 'mod+shift+e', label: recorderActive ? 'Stop Recording' : 'Record', fn: _toggleRecording });
return shortcuts;
}
function isPlatformReady() {
@@ -1130,6 +1247,7 @@ function openRelevantListing(state: EmuState) {
}
function uiDebugCallback(state: EmuState) {
debugSessionActive = true;
lastDebugState = state;
showDebugInfo(state);
openRelevantListing(state);
@@ -1150,12 +1268,15 @@ function setupDebugCallback(btnid?: DebugCommandType) {
export function setupBreakpoint(btnid?: DebugCommandType) {
if (!checkRunReady()) return;
debugSessionActive = true;
_disableRecording();
setupDebugCallback(btnid);
if (btnid) setDebugButtonState(btnid, "active");
refreshShortcutBar();
}
function _pause() {
debugSessionActive = true;
if (platform && platform.isRunning()) {
platform.pause();
console.log("Paused");
@@ -1345,9 +1466,11 @@ function resetPlatform() {
function resetAndRun() {
if (!checkRunReady()) return;
debugSessionActive = false; // plain run: hide debug shortcut chips
clearBreakpoint();
resetPlatform();
_resume();
refreshShortcutBar();
}
function resetAndDebug() {
@@ -1487,6 +1610,7 @@ function _toggleRecording() {
} else {
_enableRecording();
}
refreshShortcutBar();
}
function _toggleTraceLines() {
@@ -1569,38 +1693,43 @@ function setupDebugControls() {
// create toolbar buttons
uitoolbar = new Toolbar($("#toolbar")[0], null);
uitoolbar.grp.prop('id', 'run_bar');
uitoolbar.add('ctrl+alt+r', 'Reset', 'glyphicon-refresh', resetAndRun).prop('id', 'dbg_reset');
uitoolbar.add('ctrl+alt+,', 'Pause', 'glyphicon-pause', pause).prop('id', 'dbg_pause');
uitoolbar.add('ctrl+alt+.', 'Resume', 'glyphicon-play', resume).prop('id', 'dbg_go');
uitoolbar.add('mod+shift+r', 'Reset', 'glyphicon-refresh', resetAndRun).prop('id', 'dbg_reset');
uitoolbar.add('mod+shift+h', 'Pause', 'glyphicon-pause', pause).prop('id', 'dbg_pause');
// bound before Resume so it takes priority in the debug tool views;
// falls through to Resume everywhere else
uitoolbar.add('mod+shift+g', 'Go To Address', '', (e) => {
if (!promptGoToAddress()) resume();
});
uitoolbar.add('mod+shift+g', 'Resume', 'glyphicon-play', resume).prop('id', 'dbg_go');
if (platform.restartAtPC) {
uitoolbar.add('ctrl+alt+/', 'Restart at Cursor', 'glyphicon-play-circle', restartAtCursor).prop('id', 'dbg_restartatline');
uitoolbar.add('mod+shift+a', 'Restart at Cursor', 'glyphicon-play-circle', restartAtCursor).prop('id', 'dbg_restartatline');
}
uitoolbar.newGroup();
uitoolbar.grp.prop('id', 'debug_bar');
if (platform.runEval) {
uitoolbar.add('ctrl+alt+e', 'Reset and Debug', 'glyphicon-fast-backward', resetAndDebug).prop('id', 'dbg_restart');
uitoolbar.add('mod+shift+d', 'Reset and Debug', 'glyphicon-fast-backward', resetAndDebug).prop('id', 'dbg_restart');
}
if (platform.stepBack) {
uitoolbar.add('ctrl+alt+b', 'Step Backwards', 'glyphicon-step-backward', runStepBackwards).prop('id', 'dbg_stepback');
uitoolbar.add('mod+shift+j', 'Step Backwards', 'glyphicon-step-backward', runStepBackwards).prop('id', 'dbg_stepback');
}
if (platform.step) {
uitoolbar.add('ctrl+alt+s', 'Single Step', 'glyphicon-step-forward', singleStep).prop('id', 'dbg_step');
uitoolbar.add('mod+shift+l', 'Single Step', 'glyphicon-step-forward', singleStep).prop('id', 'dbg_step');
}
if (platform.stepOver) {
uitoolbar.add('ctrl+alt+t', 'Step Over', 'glyphicon-hand-right', stepOver).prop('id', 'dbg_stepover');
uitoolbar.add('mod+shift+k', 'Step Over', 'glyphicon-hand-right', stepOver).prop('id', 'dbg_stepover');
}
if (platform.runUntilReturn) {
uitoolbar.add('ctrl+alt+o', 'Step Out of Subroutine', 'glyphicon-hand-up', runUntilReturn).prop('id', 'dbg_stepout');
uitoolbar.add('mod+shift+i', 'Step Out of Subroutine', 'glyphicon-hand-up', runUntilReturn).prop('id', 'dbg_stepout');
}
if (platform.runToVsync) {
uitoolbar.add('ctrl+alt+n', 'Next Frame/Interrupt', 'glyphicon-forward', singleFrameStep).prop('id', 'dbg_tovsync');
uitoolbar.add('mod+shift+x', 'Next Frame/Interrupt', 'glyphicon-forward', singleFrameStep).prop('id', 'dbg_tovsync');
}
if ((platform.runEval || platform.runToPC) && !platform_id.startsWith('verilog')) {
uitoolbar.add('ctrl+alt+l', 'Run To Line', 'glyphicon-save', runToCursor).prop('id', 'dbg_toline');
uitoolbar.add('mod+shift+y', 'Run To Line', 'glyphicon-save', runToCursor).prop('id', 'dbg_toline');
}
uitoolbar.newGroup();
uitoolbar.grp.prop('id', 'xtra_bar');
uitoolbar.add('shift+ctrl+/', 'Search', 'glyphicon-search', openSearchDialog).prop('id', 'dbg_search');
uitoolbar.add('mod+shift+f', 'Search', 'glyphicon-search', openSearchDialog).prop('id', 'dbg_search');
// add menu clicks
$(".dropdown-menu").collapse({ toggle: false });
$("#item_new_file").click(_createNewFile);
@@ -1846,7 +1975,7 @@ function setupReplaySlider() {
$("#clock_back").click(() => { setClockTo(parseInt(clockslider.val().toString()) - 1); });
$("#clock_fwd").click(() => { setClockTo(parseInt(clockslider.val().toString()) + 1); });
$("#replay_bar").show();
uitoolbar.add('ctrl+alt+0', 'Start/Stop Replay Recording', 'glyphicon-record', _toggleRecording).prop('id', 'dbg_record');
uitoolbar.add('mod+shift+e', 'Start/Stop Replay Recording', 'glyphicon-record', _toggleRecording).prop('id', 'dbg_record');
}
@@ -2143,6 +2272,25 @@ async function startPlatform() {
installHashChangeHandler();
platform.sourceFileFetch = (path) => current_project.filedata[path];
setupDebugControls();
// context-sensitive shortcuts/status bar (hidden by CSS on small windows)
if (!isMobileDevice && $("#shortcuts_bar").length) {
initShortcutBar($("#shortcuts_bar")[0]);
setGlobalShortcutsFn(getGlobalShortcuts);
setViewShortcutsFn(() => {
// view-specific keys (CodeMirror bindings) only apply while that view has
// focus; e.g. clicking the verilog waveform keeps the editor active but blurs it
var div = projectWindows.id2div[projectWindows.activeid];
var viewHasFocus = div && document.activeElement && div.contains(document.activeElement);
var wnd = projectWindows.getActive();
var shortcuts = viewHasFocus && wnd && wnd.getShortcuts ? wnd.getShortcuts() : [];
// debug chips ride along with the view zone (they're gated on debugSessionActive)
return [...getDebugShortcuts(), ...shortcuts];
});
// focus changes can invalidate view-specific shortcuts
$(document).on('focusin focusout', () => refreshShortcutBar());
refreshShortcutBar();
setBarVisible(loadSettings().showStatusBar);
}
addPageFocusHandlers();
showInstructions();
if (isEmbed) {
+17 -1
View File
@@ -4,6 +4,7 @@ import { hex, rgb2bgr, safeident } from "../../common/util";
import { FileData } from "../../common/workertypes";
import * as pixed from "../pixeleditor";
import { current_project, platform_id, projectWindows } from "../ui";
import { Shortcut } from "../shortcutbar";
import { newDiv, ProjectView } from "./baseviews";
// Lazy mousetrap require: mousetrap references `document` at module load time,
@@ -21,7 +22,20 @@ export class AssetEditorView implements ProjectView, pixed.EditorContext {
deferrednodes: pixed.PixNode[];
createDiv(parent: HTMLElement) {
this.maindiv = newDiv(parent, "vertical-scroll");
return this.maindiv[0];
// focusable so the shortcut bar can tell when this view has focus
// (default focus still applies to inner inputs, refining this)
var div = this.maindiv[0];
div.setAttribute('tabindex', '-1');
div.addEventListener('mousedown', () => { div.focus(); });
return div;
}
// chips for the global asset undo/redo (bound via mousetrap in setVisible)
getShortcuts(): Shortcut[] {
return [
{ key: 'mod+z', label: 'Undo', fn: () => projectWindows.undoStep() },
{ key: 'mod+shift+z', label: 'Redo', fn: () => projectWindows.redoStep() },
];
}
clearAssets() {
@@ -485,6 +499,8 @@ export class AssetEditorView implements ProjectView, pixed.EditorContext {
Mousetrap.bind('mod+z', (e) => { projectWindows.undoStep(); return false; });
Mousetrap.bind('mod+shift+z', (e) => { projectWindows.redoStep(); return false; });
}
// focus so the shortcut bar's view chips (undo/redo) show
this.maindiv && this.maindiv[0] && this.maindiv[0].focus();
} else {
const Mousetrap = getMousetrap();
if (Mousetrap.unbind) {
+2
View File
@@ -1,6 +1,7 @@
import { CodeAnalyzer } from "../../common/analysis";
import { SourceFile, WorkerError } from "../../common/workertypes";
import { Shortcut } from "../shortcutbar";
export interface ProjectView {
createDiv(parent: HTMLElement): HTMLElement;
@@ -26,6 +27,7 @@ export interface ProjectView {
getAssetText?(id: string): string | null;
replaceAssetText?(id: string, text: string): void;
clearAssetRanges?(): void;
getShortcuts?(): Shortcut[]; // context-sensitive shortcuts for the bottom bar
};
// detect mobile (https://stackoverflow.com/questions/3514784/what-is-the-best-way-to-detect-a-mobile-device)
+26
View File
@@ -37,6 +37,8 @@ export class MemoryView implements ProjectView {
return this.maindiv = div;
}
gotoRow = -1; // row highlighted by the Go To Address prompt
showMemoryWindow(workspace: HTMLElement, parent: HTMLElement) {
this.memorylist = new VirtualList({
w: $(workspace).width(),
@@ -50,6 +52,7 @@ export class MemoryView implements ProjectView {
var dlr = this.dumplines[row];
if (dlr) linediv.classList.add('seg_' + this.getMemorySegment(this.dumplines[row].a | this.hibits));
}
if (row == this.gotoRow) linediv.classList.add('goto_line');
linediv.appendChild(document.createTextNode(s));
return linediv;
}
@@ -68,6 +71,28 @@ export class MemoryView implements ProjectView {
}
}
// jump to an address (or symbol), via the Go To Address prompt;
// centers the target row in the viewport and highlights it
goToAddress(addr: number) {
this.hibits = addr & 0xffff0000;
var dump = this.getDumpLines();
var row;
if (dump && dump.length) {
row = this.findMemoryWindowLine(addr & 0xffff);
} else {
// no symbol map (e.g. VRAM): rows are raw 16-byte chunks
row = (addr & 0xffff) >> 4;
}
if (row === undefined) return;
this.gotoRow = row;
if (this.memorylist) {
var c = this.memorylist.container;
var y = row * this.memorylist.itemHeight - (c.clientHeight - this.memorylist.itemHeight) / 2;
c.scrollTop = Math.max(0, y);
}
this.tick();
}
refresh() {
this.dumplines = null;
this.tick();
@@ -82,6 +107,7 @@ export class MemoryView implements ProjectView {
var newtext = this.getMemoryLineAt(row);
if (oldtext != newtext)
div.text(newtext);
div.toggleClass('goto_line', row == this.gotoRow);
});
}
}
+65 -8
View File
@@ -1,10 +1,10 @@
import { defaultKeymap, history, historyKeymap, isolateHistory, redo, undo } from "@codemirror/commands";
import { defaultKeymap, deleteLine, history, historyKeymap, isolateHistory, redo, undo, toggleComment } from "@codemirror/commands";
import { cpp } from "@codemirror/lang-cpp";
import { markdown } from "@codemirror/lang-markdown";
import { bracketMatching, foldGutter, indentOnInput, indentService, indentUnit } from "@codemirror/language";
import { highlightSelectionMatches, search, searchKeymap } from "@codemirror/search";
import { highlightSelectionMatches, search, searchKeymap, openSearchPanel, findNext, selectNextOccurrence } from "@codemirror/search";
import { Compartment, EditorState, Extension, StateEffect, StateField } from "@codemirror/state";
import { crosshairCursor, drawSelection, dropCursor, EditorView, highlightActiveLine, highlightActiveLineGutter, keymap, lineNumbers, rectangularSelection, ViewUpdate } from "@codemirror/view";
import { crosshairCursor, drawSelection, dropCursor, EditorView, highlightActiveLine, highlightActiveLineGutter, keymap, lineNumbers, KeyBinding, rectangularSelection, ViewUpdate } from "@codemirror/view";
import { CodeAnalyzer } from "../../common/analysis";
import { ProbeFlags, ProbeRecorder } from "../../common/probe";
import { getFilenameForPath, getFolderForPath, hex, rpad } from "../../common/util";
@@ -19,9 +19,18 @@ import { mbo } from "../../themes/mbo";
import { loadSettings, registerEditor, settingsExtensions } from "../settings";
import { asmSpacesKeymap } from "./tabs";
import { clearBreakpoint, current_project, lastDebugState, openHeaderFile, platform, qs, runToPC } from "../ui";
import { IDE_RESERVED_KEYS, stripCMKeymap } from "../keys";
// Free the mod+shift+<letter> keys the IDE binds (see IDE_RESERVED_KEYS) so its
// debug shortcuts work while an editor is focused. CodeMirror claims two of
// them today: deleteLine ("Shift-Mod-k") and selectSelectionMatches
// ("Mod-Shift-l"); deleteLine keeps a home on Mod-Shift-Backspace.
const ideDefaultKeymap: KeyBinding[] = [...stripCMKeymap(defaultKeymap, IDE_RESERVED_KEYS), { key: "Mod-Shift-Backspace", run: deleteLine }];
const ideSearchKeymap: KeyBinding[] = stripCMKeymap(searchKeymap, IDE_RESERVED_KEYS);
import { createAssetHeaderPlugin } from "./assetdecorations";
import { createIncludeLinkPlugin } from "./includedecorations";
import { isMobileDevice, ProjectView } from "./baseviews";
import { Shortcut } from "../shortcutbar";
import { createTextTransformFilterEffect, textTransformFilterCompartment } from "./filters";
import { breakpointMarkers, bytes, clock, currentPcMarker, errorMarkers, offset, statusMarkers } from "./gutter";
import { currentPc, errorMessages, errorSpans, highlightLines, showValue, tracedLines } from "./visuals";
@@ -131,6 +140,25 @@ export class SourceEditor implements ProjectView {
}
}
// a few of the CodeMirror bindings available while editing;
// chips are clickable and run the command on this editor
getShortcuts(): Shortcut[] {
if (!this.editor) return [];
var ed = this.editor;
var mk = (key: string, label: string, cmd: (v: EditorView) => boolean): Shortcut => ({
key, label, fn: () => { cmd(ed); ed.focus(); }
});
return [
mk('mod+f', 'Find', openSearchPanel),
mk('mod+g', 'Find Next', findNext),
mk('mod+d', 'Next Occurrence', selectNextOccurrence),
mk('mod+shift+backspace', 'Delete Line', deleteLine),
mk('mod+/', 'Toggle Comment', toggleComment),
mk('mod+z', 'Undo', undo),
mk('mod+shift+z', 'Redo', redo),
];
}
startTracing() {
if (!this.probe && platform.startProbing) {
this.probe = platform.startProbing();
@@ -200,7 +228,7 @@ export class SourceEditor implements ProjectView {
...settingsExtensions(loadSettings()),
// https://codemirror.net/docs/ref/#commands.defaultKeymap includes
// https://codemirror.net/docs/ref/#commands.standardKeymap
keymap.of(defaultKeymap),
keymap.of(ideDefaultKeymap),
lineNums ? lineNumbers() : [],
@@ -228,7 +256,7 @@ export class SourceEditor implements ProjectView {
highlightSelectionMatches(),
search({ top: true }),
keymap.of(searchKeymap),
keymap.of(ideSearchKeymap),
// lintGutter(),
// autocompletion(),
@@ -765,9 +793,9 @@ export class DisassemblerView implements ProjectView {
}
// TODO: too many globals
refresh(moveCursor: boolean) {
refresh(moveCursor: boolean, centerAddr?: number) {
let state = lastDebugState || platform.saveState(); // TODO?
let pc = state.c ? state.c.PC : 0;
let pc = centerAddr !== undefined ? centerAddr : (state.c ? state.c.PC : 0);
let curline = 0;
let selline = 0;
let addr2symbol = (platform.debugSymbols && platform.debugSymbols.addr2symbol) || {};
@@ -834,6 +862,35 @@ export class DisassemblerView implements ProjectView {
}
}
// jump to an address (or symbol), via the Go To Address prompt
goToAddress(addr: number) {
addr |= 0;
if (!this.findAndSelectAddress(addr)) {
// re-center the disassembly window on this address
this.refresh(false, addr);
this.findAndSelectAddress(addr);
}
this.disasmview.focus();
}
private findAndSelectAddress(addr: number): boolean {
const h = hex(addr, 4); // every line starts with the address + tab
const doc = this.disasmview.state.doc;
for (let i = 1; i <= doc.lines; i++) {
const line = doc.line(i);
if (line.text.startsWith(h + "\t")) {
// select the address so the line stays highlighted; scrollIntoView
// centers it in the viewport
this.disasmview.dispatch({
selection: { anchor: line.from, head: line.from + h.length },
effects: EditorView.scrollIntoView(line.from, { y: "center" }),
});
return true;
}
}
return false;
}
getCursorPC(): number {
const pos = this.disasmview.state.selection.main.head;
const lineNum = this.disasmview.state.doc.lineAt(pos).number;
@@ -991,7 +1048,7 @@ export class HeaderView implements ProjectView {
highlightActiveLine(),
highlightSelectionMatches(),
search({ top: true }),
keymap.of(searchKeymap),
keymap.of(ideSearchKeymap),
this.languageCompartment.of(lang),
mbo,
editorTheme,
+21
View File
@@ -1,5 +1,6 @@
import { Toolbar } from "./toolbar";
import { registerElementShortcuts, Shortcut } from "./shortcutbar";
import { VirtualList } from "../common/vlist";
import DOMPurify from "dompurify";
@@ -44,9 +45,29 @@ export class WaveformView {
constructor(parent:HTMLElement, wfp:WaveformProvider) {
this.parent = parent;
this.wfp = wfp;
// focusable container + chip registration so the shortcut bar can show
// this widget's keys while it has focus (the canvas itself can't take focus)
this.parent.setAttribute('tabindex', '-1');
this.parent.addEventListener('mousedown', () => { this.parent.focus(); });
registerElementShortcuts(this.parent, () => this.getShortcuts());
this.recreate();
}
// chips for the widget's mousetrap-scoped toolbar bindings
getShortcuts(): Shortcut[] {
return [
{ key: '=', label: 'Zoom In', fn: () => this.setZoom(this.zoom * 2) },
{ key: '-', label: 'Zoom Out', fn: () => this.setZoom(this.zoom / 2) },
{ key: 'ctrl+shift+left', label: 'To Start', fn: () => { this.setSelTime(0); this.setOrgTime(0); } },
{ key: 'shift+left', label: 'Page Left', fn: () => this.setSelTime(this.tsel - this.clocksPerPage/4) },
{ key: 'left', label: 'Left', fn: () => this.setSelTime(this.tsel - 1) },
{ key: 'right', label: 'Right', fn: () => this.setSelTime(this.tsel + 1) },
{ key: 'shift+right', label: 'Page Right', fn: () => this.setSelTime(this.tsel + this.clocksPerPage/4) },
{ key: 'space', label: 'Go To Current', fn: () => { this.setOrgTime(this.tnow); this.setSelTime(this.tnow); } },
{ key: 'h', label: 'Hex/Dec', fn: () => { this.hexformat = !this.hexformat; this.refresh(); } },
];
}
wtimer;
recreate() {
clearTimeout(this.wtimer);
+5
View File
@@ -4,6 +4,7 @@ import { getFilenameForPath, getFilenamePrefix } from "../common/util";
import { FileData, WorkerError } from "../common/workertypes";
import { CodeProject } from "./project";
import { ProjectView } from "./views/baseviews";
import { Shortcut, refreshShortcutBar } from "./shortcutbar";
type WindowCreateFunction = (id: string) => ProjectView;
type WindowShowFunction = (id: string, view: ProjectView) => void;
@@ -71,11 +72,15 @@ export class ProjectWindows {
this.activewnd && this.activewnd.setVisible && this.activewnd.setVisible(false);
this.activediv = div;
this.activewnd = wnd;
// set before showing: setVisible() may focus the view, whose focusin
// handler refreshes the shortcut bar against the new active view
this.activeid = id;
$(div).show();
this.refresh(true); // needed to tell asset editor 1st time running, but that's bad
this.refreshErrors();
wnd.setVisible && wnd.setVisible(true);
this.id2showfn[id] && this.id2showfn[id](id, wnd);
refreshShortcutBar(); // active view changed -> update context-sensitive shortcuts
} else if (moveCursor) {
this.refresh(moveCursor);
}