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

This commit is contained in:
sehugg committed 2026-09-11 10:28:31 +00:00
1 parent dc5d23bf5e
commit 6272c4a5b4
78 files changed
+1301 -240

No files matched your search

@@ -1,4 +1,4 @@
import{b as S}from"./chunk-3FIVEUG2.js";import{w as E}from"./chunk-XP2G5PMM.js";import"./chunk-UG4IOEUD.js";import"./chunk-LNOKARBD.js";import"./chunk-A7SWO6EA.js";import"./chunk-XQHODGIL.js";import"./chunk-4676AC7I.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{w as E}from"./chunk-S75754OX.js";import"./chunk-UG4IOEUD.js";import"./chunk-LNOKARBD.js";import"./chunk-A7SWO6EA.js";import"./chunk-GO3ZR2EJ.js";import"./chunk-4676AC7I.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{w as E}from"./chunk-XP2G5PMM.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-5D2BN5ZN.js.map
//# sourceMappingURL=basic-GCGBUNRV.js.map
File renamed without changes.
@@ -1,4 +1,4 @@
import{I as R,q as D}from"./chunk-4676AC7I.js";import{$ as P,K as S,W as n,aa as A,g as h,s as p}from"./chunk-TYDI7JZQ.js";import"./chunk-KT7KMEQC.js";var I=1,d=2,k=4,b=8,u=16,l=class{constructor(){this.PC0=0;this.PC1=0;this.DC0=0;this.DC1=0;this.A=0;this.W=0;this.IS=0;this.R=new Uint8Array(64);this.o=0;this.stable=!0;this.irqRequest=!1}connectMemoryBus(s){this.bus=s}connectIOBus(s){this.iobus=s}reset(){this.PC0=0,this.PC1=0,this.DC0=0,this.DC1=0,this.A=0,this.W=0,this.IS=0,this.R.fill(0),this.irqRequest=!1}interrupt(s){this.irqRequest=!0}getPC(){return this.PC0}getSP(){return this.PC1}isStable(){return this.stable}saveState(){return{PC:this.PC0,PC0:this.PC0,PC1:this.PC1,DC0:this.DC0,DC1:this.DC1,A:this.A,W:this.W,IS:this.IS,R:Array.from(this.R),o:this.o,irq:this.irqRequest}}loadState(s){var e;this.PC0=(e=s.PC0)!=null?e:s.PC,this.PC1=s.PC1,this.DC0=s.DC0,this.DC1=s.DC1,this.A=s.A,this.W=s.W,this.IS=s.IS;for(let r=0;r<64;r++)this.R[r]=s.R[r];this.o=s.o,this.irqRequest=s.irq}fetchPC0(){let s=this.bus.read(this.PC0);return this.PC0=this.PC0+1&65535,s}fetchDC0(){let s=this.bus.read(this.DC0);return this.DC0=this.DC0+1&65535,s}storeDC0(s){this.bus.write(this.DC0,s),this.DC0=this.DC0+1&65535}clrOZCS(){this.W&=~(b|k|d|I)}setSZ(s){(s&255)===0&&(this.W|=k),(s&128)===0&&(this.W|=I)}doAdd(s,e,r=0){let t=(s&255)+(e&255)+(r&1);return t&256&&(this.W|=d),((s^t)&(e^t)&128)!==0&&(this.W|=b),t&255}doAddDecimal(s,e){let r=(s&15)+(e&15),t=r>9?1:0;r=(s>>4)+(e>>4)+t;let i=r>9?1:0;this.clrOZCS();let x=this.doAdd(s,e);this.setSZ(x);let c=0;return i&&(c|=160),t&&(c|=10),c&&(this.clrOZCS(),x=this.doAdd(x,c),this.setSZ(x)),x}getScratchpadIndex(s){if(s<12)return s;if(s===12)return this.IS&63;if(s===13){let e=this.IS&63;return this.IS=this.IS&56|this.IS+1&7,e}if(s===14){let e=this.IS&63;return this.IS=this.IS&56|this.IS-1&7,e}return 0}advanceInsn(){if(this.irqRequest&&this.W&u)return this.irqRequest=!1,this.PC1=this.PC0,this.PC0=this.bus.read(4094)<<8|this.bus.read(4095),this.W&=~u,6;let s=this.fetchPC0();this.o=s,this.stable=!0;let e=4,r,t;switch(s){case 0:this.A=this.R[12];break;case 1:this.A=this.R[13];break;case 2:this.A=this.R[14];break;case 3:this.A=this.R[15];break;case 4:this.R[12]=this.A;break;case 5:this.R[13]=this.A;break;case 6:this.R[14]=this.A;break;case 7:this.R[15]=this.A;break;case 8:this.R[12]=this.PC1>>8&255,this.R[13]=this.PC1&255,e=8;break;case 9:this.PC1=this.R[12]<<8|this.R[13],e=8;break;case 10:this.A=this.IS&63;break;case 11:this.IS=this.A&63;break;case 12:this.PC1=this.PC0,this.PC0=this.R[12]<<8|this.R[13],e=8;break;case 13:this.PC0=this.R[14]<<8|this.R[15],e=8;break;case 14:this.R[14]=this.DC0>>8&255,this.R[15]=this.DC0&255,e=8;break;case 15:this.DC0=this.R[14]<<8|this.R[15],e=8;break;case 16:this.DC0=this.R[10]<<8|this.R[11],e=8;break;case 17:this.R[10]=this.DC0>>8&255,this.R[11]=this.DC0&255,e=8;break;case 18:this.A=this.A>>1&255,this.clrOZCS(),this.setSZ(this.A);break;case 19:this.A=this.A<<1&255,this.clrOZCS(),this.setSZ(this.A);break;case 20:this.A=this.A>>4&255,this.clrOZCS(),this.setSZ(this.A);break;case 21:this.A=this.A<<4&255,this.clrOZCS(),this.setSZ(this.A);break;case 22:this.A=this.fetchDC0(),e=6;break;case 23:this.storeDC0(this.A),e=6;break;case 24:this.A=~this.A&255,this.clrOZCS(),this.setSZ(this.A);break;case 25:r=this.W&d?1:0,this.clrOZCS(),this.A=this.doAdd(this.A,r),this.setSZ(this.A);break;case 26:this.W&=~u;break;case 27:this.W|=u;break;case 28:this.PC0=this.PC1;break;case 29:this.W=this.R[9]&31;break;case 30:this.R[9]=this.W&31;break;case 31:this.clrOZCS(),this.A=this.doAdd(this.A,1),this.setSZ(this.A);break;case 32:this.A=this.fetchPC0(),e=6;break;case 33:r=this.fetchPC0(),this.A=this.A&r,this.clrOZCS(),this.setSZ(this.A),e=6;break;case 34:r=this.fetchPC0(),this.A=this.A|r,this.clrOZCS(),this.setSZ(this.A),e=6;break;case 35:r=this.fetchPC0(),this.A=this.A^r,this.clrOZCS(),this.setSZ(this.A),e=6;break;case 36:r=this.fetchPC0(),this.clrOZCS(),this.A=this.doAdd(this.A,r),this.setSZ(this.A),e=6;break;case 37:r=this.fetchPC0(),this.clrOZCS(),this.doAdd(~this.A&255,r,1),this.setSZ(this.doAdd(~this.A&255,r,1)),e=6;break;case 38:r=this.fetchPC0(),this.A=this.iobus.read(r)&255,this.clrOZCS(),this.setSZ(this.A),e=8;break;case 39:r=this.fetchPC0(),this.iobus.write(r,this.A),e=8;break;case 40:{let i=this.fetchPC0(),x=this.fetchPC0();this.PC1=this.PC0,this.PC0=i<<8|x,e=12;break}case 41:{let i=this.fetchPC0(),x=this.fetchPC0();this.PC0=i<<8|x,e=10;break}case 42:{let i=this.fetchPC0(),x=this.fetchPC0();this.DC0=i<<8|x,e=10;break}case 43:break;case 44:r=this.DC0,this.DC0=this.DC1,this.DC1=r;break;case 45:case 46:case 47:break;case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case 58:case 59:case 60:case 61:case 62:t=this.getScratchpadIndex(s&15),this.clrOZCS(),this.R[t]=this.doAdd(this.R[t],255),this.setSZ(this.R[t]),e=6;break;case 63:break;case 64:case 65:case 66:case 67:case 68:case 69:case 70:case 71:case 72:case 73:case 74:case 75:case 76:case 77:case 78:t=this.getScraLine truncated
import{I as R,q as D}from"./chunk-4676AC7I.js";import{$ as P,K as S,W as n,aa as A,g as h,s as p}from"./chunk-TYDI7JZQ.js";import"./chunk-KT7KMEQC.js";var I=1,d=2,k=4,b=8,u=16,l=class{constructor(){this.PC0=0;this.PC1=0;this.DC0=0;this.DC1=0;this.A=0;this.W=0;this.IS=0;this.R=new Uint8Array(64);this.o=0;this.stable=!0;this.irqRequest=!1}connectMemoryBus(s){this.bus=s}connectIOBus(s){this.iobus=s}reset(){this.PC0=0,this.PC1=0,this.DC0=0,this.DC1=0,this.A=0,this.W=0,this.IS=0,this.R.fill(0),this.irqRequest=!1}interrupt(s){this.irqRequest=!0}getPC(){return this.PC0}getSP(){return this.PC1}isStable(){return this.stable}saveState(){return{PC:this.PC0,PC0:this.PC0,PC1:this.PC1,DC0:this.DC0,DC1:this.DC1,A:this.A,W:this.W,IS:this.IS,R:Array.from(this.R),o:this.o,irq:this.irqRequest}}loadState(s){var e;this.PC0=(e=s.PC0)!=null?e:s.PC,this.PC1=s.PC1,this.DC0=s.DC0,this.DC1=s.DC1,this.A=s.A,this.W=s.W,this.IS=s.IS;for(let r=0;r<64;r++)this.R[r]=s.R[r];this.o=s.o,this.irqRequest=s.irq}fetchPC0(){let s=this.bus.read(this.PC0);return this.PC0=this.PC0+1&65535,s}fetchDC0(){let s=this.bus.read(this.DC0);return this.DC0=this.DC0+1&65535,s}storeDC0(s){this.bus.write(this.DC0,s),this.DC0=this.DC0+1&65535}clrOZCS(){this.W&=~(b|k|d|I)}setSZ(s){(s&255)===0&&(this.W|=k),(s&128)===0&&(this.W|=I)}doAdd(s,e,r=0){let t=(s&255)+(e&255)+(r&1);return t&256&&(this.W|=d),((s^t)&(e^t)&128)!==0&&(this.W|=b),t&255}doAddDecimal(s,e){let r=(s&15)+(e&15),t=r>9?1:0;r=(s>>4)+(e>>4)+t;let i=r>9?1:0;this.clrOZCS();let x=this.doAdd(s,e);this.setSZ(x);let c=0;return i&&(c|=160),t&&(c|=10),c&&(this.clrOZCS(),x=this.doAdd(x,c),this.setSZ(x)),x}getScratchpadIndex(s){if(s<12)return s;if(s===12)return this.IS&63;if(s===13){let e=this.IS&63;return this.IS=this.IS&56|this.IS+1&7,e}if(s===14){let e=this.IS&63;return this.IS=this.IS&56|this.IS-1&7,e}return 0}advanceInsn(){if(this.irqRequest&&this.W&u)return this.irqRequest=!1,this.PC1=this.PC0,this.PC0=this.bus.read(4094)<<8|this.bus.read(4095),this.W&=~u,6;let s=this.fetchPC0();this.o=s,this.stable=!0;let e=4,r,t;switch(s){case 0:this.A=this.R[12];break;case 1:this.A=this.R[13];break;case 2:this.A=this.R[14];break;case 3:this.A=this.R[15];break;case 4:this.R[12]=this.A;break;case 5:this.R[13]=this.A;break;case 6:this.R[14]=this.A;break;case 7:this.R[15]=this.A;break;case 8:this.R[12]=this.PC1>>8&255,this.R[13]=this.PC1&255,e=8;break;case 9:this.PC1=this.R[12]<<8|this.R[13],e=8;break;case 10:this.A=this.IS&63;break;case 11:this.IS=this.A&63;break;case 12:this.PC1=this.PC0,this.PC0=this.R[12]<<8|this.R[13],e=8;break;case 13:this.PC0=this.R[14]<<8|this.R[15],e=8;break;case 14:this.R[14]=this.DC0>>8&255,this.R[15]=this.DC0&255,e=8;break;case 15:this.DC0=this.R[14]<<8|this.R[15],e=8;break;case 16:this.DC0=this.R[10]<<8|this.R[11],e=8;break;case 17:this.R[10]=this.DC0>>8&255,this.R[11]=this.DC0&255,e=8;break;case 18:this.A=this.A>>1&255,this.clrOZCS(),this.setSZ(this.A);break;case 19:this.A=this.A<<1&255,this.clrOZCS(),this.setSZ(this.A);break;case 20:this.A=this.A>>4&255,this.clrOZCS(),this.setSZ(this.A);break;case 21:this.A=this.A<<4&255,this.clrOZCS(),this.setSZ(this.A);break;case 22:this.A=this.fetchDC0(),e=6;break;case 23:this.storeDC0(this.A),e=6;break;case 24:this.A=~this.A&255,this.clrOZCS(),this.setSZ(this.A);break;case 25:r=this.W&d?1:0,this.clrOZCS(),this.A=this.doAdd(this.A,r),this.setSZ(this.A);break;case 26:this.W&=~u;break;case 27:this.W|=u;break;case 28:this.PC0=this.PC1;break;case 29:this.W=this.R[9]&31;break;case 30:this.R[9]=this.W&31;break;case 31:this.clrOZCS(),this.A=this.doAdd(this.A,1),this.setSZ(this.A);break;case 32:this.A=this.fetchPC0(),e=6;break;case 33:r=this.fetchPC0(),this.A=this.A&r,this.clrOZCS(),this.setSZ(this.A),e=6;break;case 34:r=this.fetchPC0(),this.A=this.A|r,this.clrOZCS(),this.setSZ(this.A),e=6;break;case 35:r=this.fetchPC0(),this.A=this.A^r,this.clrOZCS(),this.setSZ(this.A),e=6;break;case 36:r=this.fetchPC0(),this.clrOZCS(),this.A=this.doAdd(this.A,r),this.setSZ(this.A),e=6;break;case 37:r=this.fetchPC0(),this.clrOZCS(),this.doAdd(~this.A&255,r,1),this.setSZ(this.doAdd(~this.A&255,r,1)),e=6;break;case 38:r=this.fetchPC0(),this.A=this.iobus.read(r)&255,this.clrOZCS(),this.setSZ(this.A),e=8;break;case 39:r=this.fetchPC0(),this.iobus.write(r,this.A),e=8;break;case 40:{let i=this.fetchPC0(),x=this.fetchPC0();this.PC1=this.PC0,this.PC0=i<<8|x,e=12;break}case 41:{let i=this.fetchPC0(),x=this.fetchPC0();this.PC0=i<<8|x,e=10;break}case 42:{let i=this.fetchPC0(),x=this.fetchPC0();this.DC0=i<<8|x,e=10;break}case 43:break;case 44:r=this.DC0,this.DC0=this.DC1,this.DC1=r;break;case 45:case 46:case 47:break;case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case 58:case 59:case 60:case 61:case 62:t=this.getScratchpadIndex(s&15),this.clrOZCS(),this.R[t]=this.doAdd(this.R[t],255),this.setSZ(this.R[t]),e=6;break;case 63:break;case 64:case 65:case 66:case 67:case 68:case 69:case 70:case 71:case 72:case 73:case 74:case 75:case 76:case 77:case 78:t=this.getScraLine truncated
DC0 = `+h(a.DC0,4)+" DC1 = "+h(a.DC1,4)+`
A = `+h(a.A,2)+" W = "+h(a.W,2)+`
IS = `+h(a.IS,2)+`
@@ -14,4 +14,4 @@ Port 5: `+h(e.port5||0,2)+`
Row: `+h(e.row_reg||0,2)+`
Col: `+h(e.col_reg||0,2)+`
`;case"VRAM":return"";default:return""}}getMemoryMap(){return{main:[{name:"BIOS",start:0,size:2048,type:"rom"},{name:"Cart ROM",start:2048,size:30720,type:"rom"}]}}};S.channelf=m;
//# sourceMappingURL=channelf-AQGDMKUF.js.map
//# sourceMappingURL=channelf-XPHWQYI4.js.map
@@ -1,7 +1,7 @@
{
"version": 3,
"sources": ["../src/common/cpu/F8.ts", "../src/machine/channelf.ts", "../src/common/cpu/disasmF8.ts", "../src/platform/channelf.ts"],
"sourcesContent": ["// based on https://github.com/mamedev/mame/blob/master/src/devices/cpu/f8/f8.cpp\n// license:BSD-3-Clause\n// copyright-holders:Juergen Buchmueller\n// and https://raw.githubusercontent.com/mamedev/mame/master/src/mame/fairchild/channelf.cpp\n// license:GPL-2.0+\n// copyright-holders:Juergen Buchmueller, Frank Palazzolo, Sean Riddle\n\nimport { Bus, CPU, InstructionBased, SavesState, Interruptable, MemoryBusConnected } from \"../devices\";\n\nexport interface F8State {\n PC: number; // alias for PC0 (required by CpuState)\n PC0: number; // program counter\n PC1: number; // saved program counter (stack)\n DC0: number; // data counter\n DC1: number; // alternate data counter\n A: number; // accumulator\n W: number; // status register (flags)\n IS: number; // indirect scratchpad address register (6-bit)\n R: number[]; // 64-byte scratchpad RAM\n o: number; // last opcode\n irq: boolean;\n}\n\n// Status register flag bits\nconst FLAG_S = 0x01; // Sign (complementary: set when positive)\nconst FLAG_C = 0x02; // Carry\nconst FLAG_Z = 0x04; // Zero\nconst FLAG_O = 0x08; // Overflow\nconst FLAG_I = 0x10; // Interrupt Control Bit\n\nexport class F8CPU implements CPU, InstructionBased, SavesState<F8State>, Interruptable<number>, MemoryBusConnected {\n\n // Registers\n PC0: number = 0; // active program counter\n PC1: number = 0; // saved program counter\n DC0: number = 0; // active data counter\n DC1: number = 0; // alternate data counter\n A: number = 0; // accumulator\n W: number = 0; // status/flags\n IS: number = 0; // indirect scratchpad address (6-bit)\n R: Uint8Array = new Uint8Array(64); // scratchpad RAM\n\n bus: Bus;\n iobus: Bus;\n o: number = 0; // last opcode\n stable: boolean = true;\n irqRequest: boolean = false;\n\n connectMemoryBus(bus: Bus): void {\n this.bus = bus;\n }\n connectIOBus(bus: Bus): void {\n this.iobus = bus;\n }\n\n reset(): void {\n this.PC0 = 0;\n this.PC1 = 0;\n this.DC0 = 0;\n this.DC1 = 0;\n this.A = 0;\n this.W = 0;\n this.IS = 0;\n this.R.fill(0);\n this.irqRequest = false;\n }\n\n interrupt(type: number): void {\n this.irqRequest = true;\n }\n\n getPC(): number { return this.PC0; }\n getSP(): number { return this.PC1; }\n isStable(): boolean { return this.stable; }\n\n saveState(): F8State {\n return {\n PC: this.PC0,\n PC0: this.PC0,\n PC1: this.PC1,\n DC0: this.DC0,\n DC1: this.DC1,\n A: this.A,\n W: this.W,\n IS: this.IS,\n R: Array.from(this.R),\n o: this.o,\n irq: this.irqRequest,\n };\n }\n\n loadState(state: F8State): void {\n this.PC0 = state.PC0 ?? state.PC;\n this.PC1 = state.PC1;\n this.DC0 = state.DC0;\n this.DC1 = state.DC1;\n this.A = state.A;\n this.W = state.W;\n this.IS = state.IS;\n for (let i = 0; i < 64; i++) this.R[i] = state.R[i];\n this.o = state.o;\n this.irqRequest = state.irq;\n }\n\n // Read byte at PC0, increment PC0\n private fetchPC0(): number {\n const val = this.bus.read(this.PC0);\n this.PC0 = (this.PC0 + 1) & 0xFFFF;\n return val;\n }\n\n // Read byte at DC0, increment DC0\n private fetchDC0(): number {\n const val = this.bus.read(this.DC0);\n this.DC0 = (this.DC0 + 1) & 0xFFFF;\n return val;\n }\n\n // Write byte at DC0, increment DC0\n private storeDC0(val: number): void {\n this.bus.write(this.DC0, val);\n this.DC0 = (this.DC0 + 1) & 0xFFFF;\n }\n\n // Clear O, Z, C, S flags\n private clrOZCS(): void {\n this.W &= ~(FLAG_O | FLAG_Z | FLAG_C | FLAG_S);\n }\n\n // Set Sign and Zero flags from value\n // Note: F8 sign flag is COMPLEMENTARY - set when bit 7 is CLEAR (positive)\n private setSZ(val: number): void {\n if ((val & 0xFF) === 0) this.W |= FLAG_Z;\n if ((val & 0x80) === 0) this.W |= FLAG_S; // complementary sign\n }\n\n // Addition with carry/overflow detection\n private doAdd(a: number, b: number, carry: number = 0): number {\n const result = (a & 0xFF) + (b & 0xFF) + (carry & 1);\n // Set carry if overflow past 8 bits\n if (result & 0x100) this.W |= FLAG_C;\n // Set overflow using XOR method\n if (((a ^ result) & (b ^ result) & 0x80) !== 0) this.W |= FLAG_O;\n return result & 0xFF;\n }\n\n // BCD addition\n private doAddDecimal(augend: number, addend: number): number {\n let tmp = (augend & 0x0F) + (addend & 0x0F);\n let c1 = (tmp > 9) ? 1 : 0;\n tmp = (augend >> 4) + (addend >> 4) + c1;\n let c2 = (tmp > 9) ? 1 : 0;\n\n // Do binary add for flags\n this.clrOZCS();\n let result = this.doAdd(augend, addend);\n this.setSZ(result);\n\n // Apply BCD correction\n let correction = 0;\n if (c2) correction |= 0xA0;\n if (c1) correction |= 0x0A;\n if (correction) {\n this.clrOZCS();\n result = this.doAdd(result, correction);\n this.setSZ(result);\n }\n return resulLine truncated
"mappings": "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 truncated
"sourcesContent": ["// based on https://github.com/mamedev/mame/blob/master/src/devices/cpu/f8/f8.cpp\n// license:BSD-3-Clause\n// copyright-holders:Juergen Buchmueller\n// and https://raw.githubusercontent.com/mamedev/mame/master/src/mame/fairchild/channelf.cpp\n// license:GPL-2.0+\n// copyright-holders:Juergen Buchmueller, Frank Palazzolo, Sean Riddle\n\nimport { Bus, CPU, InstructionBased, SavesState, Interruptable, MemoryBusConnected } from \"../devices\";\n\nexport interface F8State {\n PC: number; // alias for PC0 (required by CpuState)\n PC0: number; // program counter\n PC1: number; // saved program counter (stack)\n DC0: number; // data counter\n DC1: number; // alternate data counter\n A: number; // accumulator\n W: number; // status register (flags)\n IS: number; // indirect scratchpad address register (6-bit)\n R: number[]; // 64-byte scratchpad RAM\n o: number; // last opcode\n irq: boolean;\n}\n\n// Status register flag bits\nconst FLAG_S = 0x01; // Sign (complementary: set when positive)\nconst FLAG_C = 0x02; // Carry\nconst FLAG_Z = 0x04; // Zero\nconst FLAG_O = 0x08; // Overflow\nconst FLAG_I = 0x10; // Interrupt Control Bit\n\nexport class F8CPU implements CPU, InstructionBased, SavesState<F8State>, Interruptable<number>, MemoryBusConnected {\n\n // Registers\n PC0: number = 0; // active program counter\n PC1: number = 0; // saved program counter\n DC0: number = 0; // active data counter\n DC1: number = 0; // alternate data counter\n A: number = 0; // accumulator\n W: number = 0; // status/flags\n IS: number = 0; // indirect scratchpad address (6-bit)\n R: Uint8Array = new Uint8Array(64); // scratchpad RAM\n\n bus: Bus;\n iobus: Bus;\n o: number = 0; // last opcode\n stable: boolean = true;\n irqRequest: boolean = false;\n\n connectMemoryBus(bus: Bus): void {\n this.bus = bus;\n }\n connectIOBus(bus: Bus): void {\n this.iobus = bus;\n }\n\n reset(): void {\n this.PC0 = 0;\n this.PC1 = 0;\n this.DC0 = 0;\n this.DC1 = 0;\n this.A = 0;\n this.W = 0;\n this.IS = 0;\n this.R.fill(0);\n this.irqRequest = false;\n }\n\n interrupt(type: number): void {\n this.irqRequest = true;\n }\n\n getPC(): number { return this.PC0; }\n getSP(): number { return this.PC1; }\n isStable(): boolean { return this.stable; }\n\n saveState(): F8State {\n return {\n PC: this.PC0,\n PC0: this.PC0,\n PC1: this.PC1,\n DC0: this.DC0,\n DC1: this.DC1,\n A: this.A,\n W: this.W,\n IS: this.IS,\n R: Array.from(this.R),\n o: this.o,\n irq: this.irqRequest,\n };\n }\n\n loadState(state: F8State): void {\n this.PC0 = state.PC0 ?? state.PC;\n this.PC1 = state.PC1;\n this.DC0 = state.DC0;\n this.DC1 = state.DC1;\n this.A = state.A;\n this.W = state.W;\n this.IS = state.IS;\n for (let i = 0; i < 64; i++) this.R[i] = state.R[i];\n this.o = state.o;\n this.irqRequest = state.irq;\n }\n\n // Read byte at PC0, increment PC0\n private fetchPC0(): number {\n const val = this.bus.read(this.PC0);\n this.PC0 = (this.PC0 + 1) & 0xFFFF;\n return val;\n }\n\n // Read byte at DC0, increment DC0\n private fetchDC0(): number {\n const val = this.bus.read(this.DC0);\n this.DC0 = (this.DC0 + 1) & 0xFFFF;\n return val;\n }\n\n // Write byte at DC0, increment DC0\n private storeDC0(val: number): void {\n this.bus.write(this.DC0, val);\n this.DC0 = (this.DC0 + 1) & 0xFFFF;\n }\n\n // Clear O, Z, C, S flags\n private clrOZCS(): void {\n this.W &= ~(FLAG_O | FLAG_Z | FLAG_C | FLAG_S);\n }\n\n // Set Sign and Zero flags from value\n // Note: F8 sign flag is COMPLEMENTARY - set when bit 7 is CLEAR (positive)\n private setSZ(val: number): void {\n if ((val & 0xFF) === 0) this.W |= FLAG_Z;\n if ((val & 0x80) === 0) this.W |= FLAG_S; // complementary sign\n }\n\n // Addition with carry/overflow detection\n private doAdd(a: number, b: number, carry: number = 0): number {\n const result = (a & 0xFF) + (b & 0xFF) + (carry & 1);\n // Set carry if overflow past 8 bits\n if (result & 0x100) this.W |= FLAG_C;\n // Set overflow using XOR method\n if (((a ^ result) & (b ^ result) & 0x80) !== 0) this.W |= FLAG_O;\n return result & 0xFF;\n }\n\n // BCD addition\n private doAddDecimal(augend: number, addend: number): number {\n let tmp = (augend & 0x0F) + (addend & 0x0F);\n let c1 = (tmp > 9) ? 1 : 0;\n tmp = (augend >> 4) + (addend >> 4) + c1;\n let c2 = (tmp > 9) ? 1 : 0;\n\n // Do binary add for flags\n this.clrOZCS();\n let result = this.doAdd(augend, addend);\n this.setSZ(result);\n\n // Apply BCD correction\n let correction = 0;\n if (c2) correction |= 0xA0;\n if (c1) correction |= 0x0A;\n if (correction) {\n this.clrOZCS();\n result = this.doAdd(result, correction);\n this.setSZ(result);\n }\n return resulLine truncated
"mappings": "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 truncated
"names": ["FLAG_S", "FLAG_C", "FLAG_Z", "FLAG_O", "FLAG_I", "F8CPU", "bus", "type", "state", "_a", "i", "val", "a", "b", "carry", "result", "augend", "addend", "tmp", "c1", "c2", "correction", "r", "idx", "opcode", "cycles", "hi", "lo", "mask", "offset", "cmp", "CHANNELF_COLORMAP", "INPUT_RIGHT", "INPUT_LEFT", "INPUT_BACK", "INPUT_FORWARD", "INPUT_CCW", "INPUT_CW", "INPUT_PULL", "INPUT_PUSH", "ChannelF", "BasicMachine", "F8CPU", "newAddressDecoder", "a", "v", "port", "val", "row", "col", "color", "addr", "data", "padBytes", "trap", "clock", "targetClocks", "y", "palOffset", "p125", "p126", "rgba", "cycles", "samplesPerFrame", "i", "sample", "freq", "period", "key", "code", "flags", "pressed", "released", "Keys", "state", "regName", "r", "disassembleF8", "pc", "b0", "b1", "b2", "mn", "args", "nb", "isaddr", "regs", "hex", "offset", "mask", "CHANNELF_PRESETS", "cpuStateToLongString_F8", "c", "hex", "printFlags", "v", "ChannelFPlatform", "BaseMachinePlatform", "ChannelF", "fn", "a", "pc", "read", "disassembleF8", "category", "state", "PLATFORMS"]
}
@@ -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-3KOIXQGR.js");case"arm32"Line truncated
//# sourceMappingURL=chunk-XQHODGIL.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-3KOIXQGR.js");case"arm32"Line truncated
//# sourceMappingURL=chunk-GO3ZR2EJ.js.map
File renamed without changes.
+45 -45
View File
@@ -1,21 +1,21 @@
import{a as ou,b as au,c as jP,d as zg,e as Yg,f as Mg,g as vl,h as ur,j as Ql,k as wl,l as hs,m as qP}from"./chunk-UG4IOEUD.js";import{a as VP}from"./chunk-LNOKARBD.js";import{a as Sl}from"./chunk-A7SWO6EA.js";import{a as Eg,b as Lg,c as DP}from"./chunk-XQHODGIL.js";import{D as nu,K as su,t as Ug,u as Ag}from"./chunk-4676AC7I.js";import{A as Ki,E as pi,F as tu,G as ls,I as cs,J as bl,K as iu,T as ru,V as Zg,a as Hi,b as Qo,ba as xl,d as Ot,e as wo,f as kt,g as ve,h as JO,i as Xg,k as _g,m as dl,n as pl,o as ml,p as mn,q as Rg,t as gl,w as Cg,x as eu,y as yo,z as Et}from"./chunk-TYDI7JZQ.js";import{a as st,b as fl,c as vo,d as Tg,e as KO}from"./chunk-KT7KMEQC.js";var cu=Tg((Wg,lu)=>{(function(i){if(typeof Wg=="object"&&typeof lu!="undefined")lu.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 u=typeof vo=="function"&&vo;if(!O&&u)return u(h,!0);if(l)return l(h,!0);var f=new Error("Cannot find module '"+h+"'");throw f.code="MODULE_NOT_FOUND",f}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 vo=="function"&&vo,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 u=new o.MessageChannel;u.port1.onmessage=m,l=function(){u.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 f,p=[];function m(){f=!0;for(var w,Z,R=p.length;R;){for(Z=p,p=[],w=-1;++w<R;)Z[w]();R=p.length}f=!1}n.exports=S;function S(w){p.push(w)===1&&!f&&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=u;function u(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)}u.prototype.catch=function(P){return this.then(null,P)},u.prototype.then=function(P,C){if(typeof P!="function"&&this.state===h||typeof C!="function"&&this.state===c)return this;var z=new this.constructor(a);if(this.state!==O){var I=this.state===h?P:C;p(z,I,this.outcome)}else this.queue.push(new f(z,P,C));return z};function f(P,C,z){this.promise=P,typeof C=="function"&&(this.onFulfilled=C,this.callFulfilled=this.otherCallFulfilled),typeof z=="function"&&(this.onRejected=z,this.callRejected=this.otherCallRejected)}f.prototype.callFulfilled=function(P){l.resolve(this.promise,P)},f.prototype.otherCallFulfilled=function(P){p(this.promise,this.onFulfilled,P)},f.prototype.callRejected=function(P){l.reject(this.promise,P)},f.prototype.otherCallRejected=function(P){p(this.promise,this.onRejected,P)};function p(P,C,z){o(function(){var I;try{I=C(z)}catch(Oe){return l.reject(P,Oe)}I===P?l.reject(P,new TypeError("Cannot resolve promise with itself")):l.resolve(P,I)})}l.resolve=function(P,C){var z=w(m,C);if(z.status==="error")return l.reject(P,z.value);var I=z.value;if(I)S(P,I);else{P.state=h,P.outcome=C;for(var Oe=-1,se=P.queue.length;++Oe<se;)P.queue[Oe].callFulfilled(C)}return P},l.reject=function(P,C){P.state=c,P.outcome=C;for(var z=-1,I=P.queue.length;++z<I;)P.queue[z].callRejected(C);return P};function m(P){var C=P&&P.then;if(P&&(typeof P=="object"||typeof P=="function")&&typeof C=="function")return function(){C.apply(P,arguments)}}function S(P,C){var z=!1;function I(he){z||(z=!0,l.reject(P,he))}function Oe(he){z||(z=!0,l.resolve(P,he))}function se(){C(Oe,I)}var te=w(se);te.status==="error"&&I(te.value)}function w(P,C){var z={};try{z.value=P(C),z.status="success"}catch(I){z.status="error",z.value=I}return z}u.resolve=Z;function Z(P){return P instanceof this?P:l.resolve(new this(a),P)}u.reject=R;function R(P){var C=new this(a);return l.reject(C,P)}u.all=A;function A(P){var C=this;if(Object.prototype.toString.call(P)!=="[object Array]")return this.reject(new TypeError("must be an array"));var z=P.length,I=!1;if(!z)return this.resolve([]);for(var Oe=new Array(z),se=0,te=-1,he=new this(a);++te<z;)ge(P[te],te);return he;function ge(ye,Y){C.resolve(ye).then(re,function(G){I||(I=!0,l.reject(he,G))});function re(G){Oe[Y]=G,++se===z&&!I&&(I=!0,l.resolve(he,Oe))}}}u.race=k;function k(P){var C=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 lE(i,e){return sE(i)||oE(i,e)||cE(i,e)||aE()}function cE(i,e){if(i){if(typeof i=="string")return L$(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)?L$(i,e):void 0}}var tP=Object.entries,W$=Object.setPrototypeOf,hE=Object.isFrozen,OE=Object.getPrototypeOf,uE=Object.getOwnPropertyDescriptor,yt=Object.freeze,$t=Object.seal,eo=Object.create,iP=typeof Reflect!="undefined"&&Reflect,fg=iP.apply,dg=iP.construct;yt||(yt=function(e){return e});$t||($t=function(e){return e});fg||(fg=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)});dg||(dg=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 Ks=ht(Array.prototype.forEach),fE=ht(Array.prototype.lastIndexOf),V$=ht(Array.prototype.pop),Js=ht(Array.prototype.push),dE=ht(Array.prototype.splice),sn=Array.isArray,Fa=ht(String.prototype.toLowerCase),lg=ht(String.prototype.toString),j$=ht(String.prototype.match),Da=ht(String.prototype.replace),q$=ht(String.prototype.indexOf),pE=ht(String.prototype.trim),mE=ht(Number.prototype.toString),gE=ht(Boolean.prototype.toString),D$=typeof BigInt=="undefined"?null:ht(BigInt.prototype.toString),I$=typeof Symbol=="undefined"?null:ht(Symbol.prototype.toString),pt=ht(Object.prototype.hasOwnProperty),Ia=ht(Object.prototype.toString),dt=ht(RegExp.prototype.test),Nn=bE(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 fg(i,e,r)}}function bE(i){return function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return dg(i,t)}}function Ze(i,e){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:Fa;if(W$&&W$(i,null),!sn(e))return i;let r=e.length;for(;r--;){let n=e[r];if(typeof n=="string"){let s=t(n);s!==n&&(hE(e)||(e[r]=s),n=s)}i[n]=!0}return i}function xE(i){for(let e=0;e<i.length;e++)pt(i,e)||(i[e]=null);return i}function Zt(i){let e=eo(null);for(let r of tP(i)){var t=lE(r,2);let n=t[0],s=t[1];pt(i,n)&&(sn(s)?e[n]=xE(s):s&&typeof s=="object"&&s.constructor===Object?e[n]=Zt(s):e[n]=s)}return e}function SE(i){switch(typeof i){case"string":return i;case"number":return mE(i);case"boolean":return gE(i);case"bigint":return D$?D$(i):"0";case"symbol":return I$?I$(i):"Symbol()";case"undefined":return Ia(i);case"function":case"object":{if(i===null)return Ia(i);let e=i,t=Ii(e,"toString");if(typeof t=="function"){let r=t(e);return typeof r=="string"?r:Ia(r)}return Ia(i)}default:return Ia(i)}}function Ii(i,e){for(;i!==null;){let r=uE(i,e);if(r){if(r.get)return ht(r.get);if(typeof r.value=="function")return ht(r.value)}i=OE(i)}function t(){return null}return t}function vE(i){try{return dt(i,""),!0}catch(e){return!1}}var F$=yt(["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"]),cg=yt(["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"]),hg=yt(["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"]),QE=yt(["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
`+Ne),_i&&(Ne=Zr(Ne)),C&&fn?he(Ne):Ne},e.setConfig=function(){let M=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};bo(M),ts=!0,hn=qe,On=De},e.clearConfig=function(){Cr=null,ts=!1,hn=null,On=null,C=I,z=""},e.isValidAttribute=function(M,b,_){Cr||bo({});let L=Be(M),ne=Be(b);return V(L,ne,_)},e.addHook=function(M,b){typeof b=="function"&&pt(de,M)&&Js(de[M],b)},e.removeHook=function(M,b){if(pt(de,M)){if(b!==void 0){let _=fE(de[M],b);return _===-1?void 0:dE(de[M],_,1)[0]}return V$(de[M])}},e.removeHooks=function(M){pt(de,M)&&(de[M]=[])},e.removeAllHooks=function(){de=eP()},e}var zE=rP();nP.exports=zE});var Sg=KO(cu());var Le=[/^\s*[.#%]?(include|incbin|embed)\s+"(.+?)"/gmi,/^\s*([;']|[/][/])#(resource)\s+"(.+?)"/gm],Ie=[/^\s*([;]|[/][/])#link\s+"(.+?)"/gm],$o=[/^\s*(`include|[.]include)\s+"(.+?)"/gmi,/^\s*\$(include|\$dofile|\$write_image_in_table)\('(.+?)'/gmi,{re:/^\s*([.]arch)\s+(\w+)/gmi,suffix:".json"},/\$readmem[bh]\("(.+?)"/gmi],IP=[{re:/^\s*[.#%]?\s*include\s+<(.+?)>/gmi,system:!0}];function qg(i){let e=i&&Ji(i);return e&&e.includeDirs&&e.includeDirs.length?IP:[]}var Vg=[/^\s+(USE|ASM)\s+(\S+[.]\S+)/gm],FP=[/^[!]src\s+"(.+?)"/gmi],BP=[{re:/^\s*import\s*"(.+?)";/gmi,suffix:".wiz"},/^\s*embed\s*"(.+?)";/gmi],NP=[/^\s*(import)\s*"(.+?)"/gmi],GP=[/^\s*%%\s*#include\s+"(.+?)"/gm],jg={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"}},Po={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,...FP],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.10",includePatterns:[...Le,...Vg],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:jg,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:jg,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:$o,linkPatterns:[]},xasm6809:{id:"xasm6809",name:"XASM6809",kind:"assembler",arch:"6809",extensions:[".xasm"],editorStyle:"6809",wasmModule:"xasm6809",includePatterns:[...Le,...Vg],linkLine truncated
import{a as su,b as ou,c as VP,d as Eg,e as zg,f as Yg,g as vl,h as Ci,j as Ql,k as wl,l as hs,m as jP}from"./chunk-UG4IOEUD.js";import{a as WP}from"./chunk-LNOKARBD.js";import{a as Sl}from"./chunk-A7SWO6EA.js";import{a as Ag,b as Mg,c as qP}from"./chunk-GO3ZR2EJ.js";import{D as ru,K as nu,t as Zg,u as Ug}from"./chunk-4676AC7I.js";import{A as Ji,E as pi,F as eu,G as ls,I as cs,J as bl,K as tu,T as iu,V as Cg,a as Ki,b as Qo,ba as xl,d as Ot,e as wo,f as kt,g as ve,h as KO,i as Tg,k as Xg,m as dl,n as pl,o as ml,p as gn,q as _g,t as gl,w as Rg,x as JO,y as yo,z as Et}from"./chunk-TYDI7JZQ.js";import{a as st,b as fl,c as vo,d as kg,e as HO}from"./chunk-KT7KMEQC.js";var lu=kg((Lg,au)=>{(function(i){if(typeof Lg=="object"&&typeof au!="undefined")au.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 u=typeof vo=="function"&&vo;if(!O&&u)return u(h,!0);if(l)return l(h,!0);var f=new Error("Cannot find module '"+h+"'");throw f.code="MODULE_NOT_FOUND",f}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 vo=="function"&&vo,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 u=new o.MessageChannel;u.port1.onmessage=m,l=function(){u.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 f,p=[];function m(){f=!0;for(var w,Z,R=p.length;R;){for(Z=p,p=[],w=-1;++w<R;)Z[w]();R=p.length}f=!1}n.exports=S;function S(w){p.push(w)===1&&!f&&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=u;function u(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)}u.prototype.catch=function(P){return this.then(null,P)},u.prototype.then=function(P,C){if(typeof P!="function"&&this.state===h||typeof C!="function"&&this.state===c)return this;var z=new this.constructor(a);if(this.state!==O){var I=this.state===h?P:C;p(z,I,this.outcome)}else this.queue.push(new f(z,P,C));return z};function f(P,C,z){this.promise=P,typeof C=="function"&&(this.onFulfilled=C,this.callFulfilled=this.otherCallFulfilled),typeof z=="function"&&(this.onRejected=z,this.callRejected=this.otherCallRejected)}f.prototype.callFulfilled=function(P){l.resolve(this.promise,P)},f.prototype.otherCallFulfilled=function(P){p(this.promise,this.onFulfilled,P)},f.prototype.callRejected=function(P){l.reject(this.promise,P)},f.prototype.otherCallRejected=function(P){p(this.promise,this.onRejected,P)};function p(P,C,z){o(function(){var I;try{I=C(z)}catch(Oe){return l.reject(P,Oe)}I===P?l.reject(P,new TypeError("Cannot resolve promise with itself")):l.resolve(P,I)})}l.resolve=function(P,C){var z=w(m,C);if(z.status==="error")return l.reject(P,z.value);var I=z.value;if(I)S(P,I);else{P.state=h,P.outcome=C;for(var Oe=-1,se=P.queue.length;++Oe<se;)P.queue[Oe].callFulfilled(C)}return P},l.reject=function(P,C){P.state=c,P.outcome=C;for(var z=-1,I=P.queue.length;++z<I;)P.queue[z].callRejected(C);return P};function m(P){var C=P&&P.then;if(P&&(typeof P=="object"||typeof P=="function")&&typeof C=="function")return function(){C.apply(P,arguments)}}function S(P,C){var z=!1;function I(he){z||(z=!0,l.reject(P,he))}function Oe(he){z||(z=!0,l.resolve(P,he))}function se(){C(Oe,I)}var te=w(se);te.status==="error"&&I(te.value)}function w(P,C){var z={};try{z.value=P(C),z.status="success"}catch(I){z.status="error",z.value=I}return z}u.resolve=Z;function Z(P){return P instanceof this?P:l.resolve(new this(a),P)}u.reject=R;function R(P){var C=new this(a);return l.reject(C,P)}u.all=A;function A(P){var C=this;if(Object.prototype.toString.call(P)!=="[object Array]")return this.reject(new TypeError("must be an array"));var z=P.length,I=!1;if(!z)return this.resolve([]);for(var Oe=new Array(z),se=0,te=-1,he=new this(a);++te<z;)ge(P[te],te);return he;function ge(ye,Y){C.resolve(ye).then(re,function(G){I||(I=!0,l.reject(he,G))});function re(G){Oe[Y]=G,++se===z&&!I&&(I=!0,l.resolve(he,Oe))}}}u.race=k;function k(P){var C=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 lE(i,e){return sE(i)||oE(i,e)||cE(i,e)||aE()}function cE(i,e){if(i){if(typeof i=="string")return M$(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)?M$(i,e):void 0}}var eP=Object.entries,L$=Object.setPrototypeOf,hE=Object.isFrozen,OE=Object.getPrototypeOf,uE=Object.getOwnPropertyDescriptor,yt=Object.freeze,$t=Object.seal,eo=Object.create,tP=typeof Reflect!="undefined"&&Reflect,ug=tP.apply,fg=tP.construct;yt||(yt=function(e){return e});$t||($t=function(e){return e});ug||(ug=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)});fg||(fg=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 Ks=ht(Array.prototype.forEach),fE=ht(Array.prototype.lastIndexOf),W$=ht(Array.prototype.pop),Js=ht(Array.prototype.push),dE=ht(Array.prototype.splice),sn=Array.isArray,Fa=ht(String.prototype.toLowerCase),ag=ht(String.prototype.toString),V$=ht(String.prototype.match),Da=ht(String.prototype.replace),j$=ht(String.prototype.indexOf),pE=ht(String.prototype.trim),mE=ht(Number.prototype.toString),gE=ht(Boolean.prototype.toString),q$=typeof BigInt=="undefined"?null:ht(BigInt.prototype.toString),D$=typeof Symbol=="undefined"?null:ht(Symbol.prototype.toString),pt=ht(Object.prototype.hasOwnProperty),Ia=ht(Object.prototype.toString),dt=ht(RegExp.prototype.test),Gn=bE(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 ug(i,e,r)}}function bE(i){return function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return fg(i,t)}}function Ze(i,e){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:Fa;if(L$&&L$(i,null),!sn(e))return i;let r=e.length;for(;r--;){let n=e[r];if(typeof n=="string"){let s=t(n);s!==n&&(hE(e)||(e[r]=s),n=s)}i[n]=!0}return i}function xE(i){for(let e=0;e<i.length;e++)pt(i,e)||(i[e]=null);return i}function Zt(i){let e=eo(null);for(let r of eP(i)){var t=lE(r,2);let n=t[0],s=t[1];pt(i,n)&&(sn(s)?e[n]=xE(s):s&&typeof s=="object"&&s.constructor===Object?e[n]=Zt(s):e[n]=s)}return e}function SE(i){switch(typeof i){case"string":return i;case"number":return mE(i);case"boolean":return gE(i);case"bigint":return q$?q$(i):"0";case"symbol":return D$?D$(i):"Symbol()";case"undefined":return Ia(i);case"function":case"object":{if(i===null)return Ia(i);let e=i,t=Fi(e,"toString");if(typeof t=="function"){let r=t(e);return typeof r=="string"?r:Ia(r)}return Ia(i)}default:return Ia(i)}}function Fi(i,e){for(;i!==null;){let r=uE(i,e);if(r){if(r.get)return ht(r.get);if(typeof r.value=="function")return ht(r.value)}i=OE(i)}function t(){return null}return t}function vE(i){try{return dt(i,""),!0}catch(e){return!1}}var I$=yt(["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"]),lg=yt(["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"]),cg=yt(["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"]),QE=yt(["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
`+Ne),_i&&(Ne=Zr(Ne)),C&&dn?he(Ne):Ne},e.setConfig=function(){let M=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};bo(M),ts=!0,On=qe,un=De},e.clearConfig=function(){Cr=null,ts=!1,On=null,un=null,C=I,z=""},e.isValidAttribute=function(M,b,_){Cr||bo({});let L=Be(M),ne=Be(b);return V(L,ne,_)},e.addHook=function(M,b){typeof b=="function"&&pt(de,M)&&Js(de[M],b)},e.removeHook=function(M,b){if(pt(de,M)){if(b!==void 0){let _=fE(de[M],b);return _===-1?void 0:dE(de[M],_,1)[0]}return W$(de[M])}},e.removeHooks=function(M){pt(de,M)&&(de[M]=[])},e.removeAllHooks=function(){de=J$()},e}var zE=iP();rP.exports=zE});var xg=HO(lu());var Le=[/^\s*[.#%]?(include|incbin|embed)\s+"(.+?)"/gmi,/^\s*([;']|[/][/])#(resource)\s+"(.+?)"/gm],Ie=[/^\s*([;]|[/][/])#link\s+"(.+?)"/gm],$o=[/^\s*(`include|[.]include)\s+"(.+?)"/gmi,/^\s*\$(include|\$dofile|\$write_image_in_table)\('(.+?)'/gmi,{re:/^\s*([.]arch)\s+(\w+)/gmi,suffix:".json"},/\$readmem[bh]\("(.+?)"/gmi],DP=[{re:/^\s*[.#%]?\s*include\s+<(.+?)>/gmi,system:!0}];function jg(i){let e=i&&er(i);return e&&e.includeDirs&&e.includeDirs.length?DP:[]}var Wg=[/^\s+(USE|ASM)\s+(\S+[.]\S+)/gm],IP=[/^[!]src\s+"(.+?)"/gmi],FP=[{re:/^\s*import\s*"(.+?)";/gmi,suffix:".wiz"},/^\s*embed\s*"(.+?)";/gmi],BP=[/^\s*(import)\s*"(.+?)"/gmi],NP=[/^\s*%%\s*#include\s+"(.+?)"/gm],Vg={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"}},Po={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,...IP],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.10",includePatterns:[...Le,...Wg],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:Vg,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:Vg,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:$o,linkPatterns:[]},xasm6809:{id:"xasm6809",name:"XASM6809",kind:"assembler",arch:"6809",extensions:[".xasm"],editorStyle:"6809",wasmModule:"xasm6809",includePatterns:[...Le,...Wg],linkLine truncated
`){[e,t]=ds(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}},Os=class i extends Pe{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]=ds(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]=ds(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 f of e)r+=f.lines;if(r<32){let f=[];for(let p of e)p.flatten(f);return new ii(f,t)}let n=Math.max(32,r>>5),s=n<<1,o=n>>1,a=[],l=0,c=-1,h=[];function O(f){let p;if(f.lines>s&&f instanceof i)for(let m of f.children)O(m);else f.lines>o&&(l>o||!l)?(u(),a.push(f)):f instanceof ii&&l&&(p=h[h.length-1])instanceof ii&&f.lines+p.lines<=32?(l+=f.lines,c+=f.length+1,h[h.length-1]=new ii(p.text.concat(f.text),p.length+1+f.length)):(l+f.lines>n&&u(),l+=f.lines,c+=f.length+1,h.push(f))}function u(){l!=0&&(a.push(h.length==1?h[0]:i.from(h,c)),c=-1,l=h.length=0)}for(let f of e)O(f);return u(),a.length==1?a[0]:new i(a,t)}};Pe.empty=new ii([""],0);function e1(i){let e=-1;for(let t of i)e+=t.length+1;return e}function Rl(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 sb(i,e,t){return Rl(i,[""],e,t)}var Sn=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 ii?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 ii?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 ii){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 ii?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)}},Cl=class{constructor(e,t,r){this.value="",this.done=!1,this.cursor=new Sn(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!=""}},Zl=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"&&(Pe.prototype[Symbol.iterator]=function(){return this.iter()},Sn.prototype[Symbol.iterator]=Cl.prototype[Symbol.iterator]=Zl.prototype[Symbol.iterator]=function(){return this});var pu=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 ds(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 tb(i,e,t,r)}function t1(i){return i>=56320&&i<57344}function i1(i){return i>=55296&&i<56320}function Ui(i,e){let t=i.charCodeAt(e);if(!i1(t)||e+1==i.length)return t;let r=i.charCodeAt(e+1);return t1(r)?(t-55296<<10)+(r-56320)+65536:t}function Yl(i){return i<=65535?String.fromCharCode(i):(i-=65536,String.fromCharCode((i>>10)+55296,(i&1023)+56320))}function Ar(i){return i<65536?1:2}var mu=/\r\n?|\n/,ut=(function(i){return i[i.Simple=0]="Simple",i[i.TrackDel=1]="TrackDel",i[i.TrackBefore=2]="TrackBefore",i[i.TrackAfter=3]="TrackAfter",i})(ut||(ut={})),fr=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){gu(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:hb(this,e)}mapDesc(e,t=!1){return e.empty?this:bu(this,e,t)}mapPos(e,t=-1,r=ut.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!=ut.Simple&&c>=e&&(r==ut.TrackDel&&n<e&&c>e||r==ut.TrackBefore&&n<e||r==ut.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)}},zt=class i extends fr{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 gu(this,(t,r,n,s,o)=>e=e.replace(n,n+(r-t),o),!1),e}mapDesc(e,t=!1){return bu(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(Pe.empty);r.push(o?e.slice(s,s+o):Pe.empty)}s+=o}return new i(t,r)}compose(e){return this.empty?e:e.empty?this:hb(this,e,!0)}map(e,t=!1){return e.empty?this:bu(this,e,t,!0)}iterChanges(e,t=!1){gu(this,e,t)}get desc Line truncated
`}get readOnly(){return this.facet(gb)}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(ub))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 O1(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)}};we.allowMultipleSelections=Su;we.tabSize=J.define({combine:i=>i.length?i[0]:4});we.lineSeparator=fb;we.readOnly=gb;we.phrases=J.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])}});we.languageData=ub;we.changeFilter=db;we.transactionFilter=pb;we.transactionExtender=mb;bt.reconfigure=ae.define();function ri(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 mi=class{eq(e){return this==e}range(e,t=e){return _o.create(e,t,this)}};mi.prototype.startSide=mi.prototype.endSide=0;mi.prototype.point=!1;mi.prototype.mapMode=ut.TrackDel;function _u(i,e){return i==e||i.constructor==e.constructor&&i.eq(e)}var _o=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 $u(i,e){return i.from-e.from||i.value.startSide-e.value.startSide}var Pu=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,u,f;if(h==O){let p=t.mapPos(h,c.startSide,c.mapMode);if(p==null||(u=f=p,c.startSide!=c.endSide&&(f=t.mapPos(h,c.endSide),f<u)))continue}else if(u=t.mapPos(h,c.startSide),f=t.mapPos(O,c.endSide),u>f||u==f&&c.startSide>0&&c.endSide<=0)continue;(f-u||c.endSide-c.startSide)<0||(o<0&&(o=u),c.point&&(a=Math.max(a,f-u)),r.push(c),n.push(u-o),s.push(f-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($u)),this.isEmpty)return t.length?i.of(t):this;let a=new zl(this,null,-1).goto(0),l=0,c=[],h=new Zi;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(_o.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 Ro.from([this]).goto(e)}get isEmpty(){return this.nextLayer==this}static iter(e,t=0){return Ro.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=vb[Sb]||1;return vb[Sb]=e+1,"\u037C"+e.toString(36)}static mount(e,t,r){let n=e[Ru],s=r&&r.nonce;n?s&&n.setNonce(s):n=new Cu(e,s),n.mount(Array.isArray(t)?t:[t],e)}},Qb=new Map,Cu=class{constructor(e,t){let r=e.ownerDocument||e,n=r.defaultView;if(!e.head&&e.adoptedStyleSheets&&n.CSSStyleSheet){let s=Qb.get(r);if(s)return e[Ru]=s;this.sheet=new n.CSSStyleSheet,Qb.set(r,this)}else this.styleTag=r.createElement("style"),t&&this.styleTag.setAttribute("nonce",t);this.modules=[],e[Ru]=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 dr={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:"'"},ps={48:")",49:"!",50:"@",51:"#",52:"$",53:"%",54:"^",55:"&",56:"*",57:"(",59:":",61:"+",173:"_",186:":",187:"+",188:"<",189:"_",190:">",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"'},f1=typeof navigator!="undefined"&&/Mac/.test(navigator.platform),d1=typeof navigator!="undefined"&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent);for(ot=0;ot<10;ot++)dr[48+ot]=dr[96+ot]=String(ot);var ot;for(ot=1;ot<=24;ot++)dr[ot+111]="F"+ot;var ot;for(ot=65;ot<=90;ot++)dr[ot]=String.fromCharCode(ot+32),ps[ot]=String.fromCharCode(ot);var ot;for(Ll in dr)ps.hasOwnProperty(Ll)||(ps[Ll]=dr[Ll]);var Ll;function wb(i){var e=f1&&i.metaKey&&i.shiftKey&&!i.ctrlKey&&!i.altKey||d1&&i.shiftKey&&i.key&&i.key.length==1||i.key=="Unidentified",t=!e&&i.key||(i.shiftKey?ps:dr)[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++)yb(i,arguments[e]);return i}function yb(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++)yb(i,e[t]);else throw new RangeError("Unsupported child node: "+e)}var Mt=typeof navigator!="undefined"?navigator:{userAgent:"",vendor:"",platform:""},Vu=typeof document!="undefined"?document:{documentElement:{style:{}}},ju=/Edge\/(\d+)/.exec(Mt.userAgent),c0=/MSIE \d/.test(Mt.userAgent),qu=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(Mt.userAgent),xc=!!(c0||qu||ju),$b=!xc&&/gecko\/(\d+)/i.test(Mt.userAgent),Zu=!xc&&/Chrome\/(\d+)/.exec(Mt.userAgent),Pb="webkitFontSmoothing"in Vu.documentElement.style,Du=!xc&&/Apple Computer/.test(Mt.vendor),kb=Du&&(/Mobile\/\w+/.test(Mt.userAgent)||Mt.maxTouchPoints>2),ee={mac:kb||/Mac/.test(Mt.platform),windows:/Win/.test(Mt.platform),linux:/Linux|X11/.test(Mt.platform),ie:xc,ie_version:c0?Vu.documentMode||6:qu?+qu[1]:ju?+ju[1]:0,gecko:$b,gecko_version:$b?+(/Firefox\/(\d+)/.exec(Mt.userAgent)||[0,0])[1]:0,chrome:!!Zu,chrome_version:Zu?+Zu[1]:0,ios:kb,android:/Android\b/.test(Mt.userAgent),webkit:Pb,webkit_version:Pb?+(/\bAppleWebKit\/(\d+)/.exec(Mt.userAgent)||[0,0])[1]:0,safari:Du,safari_version:Du?+(/\bVersion\/(\d+(\.\d+)?)/.exec(Mt.userAgent)||[0,0])[1]:0,tabSize:Vu.documentElement.style.tabSize!=null?"tab-size":"-moz-tab-size"};function zf(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 tc=Object.create(null);function Yf(i,e,t){if(i==e)return!0;i||(i=tc),e||(e=tc);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 p1(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 Tb(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 m1(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={})),F=class extends mi{constructor(e,t,r,n){super(),this.startSide=e,this.endLine 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 N1(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 G1(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,u=i.viewState.heightOracle.textHeight>>1,f=r!=null?r:u;for(let p=0;;p+=u){let m=a+(f+p)*s,S=lf(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),Z=w?(w.top+w.bottom)/2:0;if(!w||(t?Z>a:Z<a))return U.cursor(S.pos,S.assoc,void 0,o)}}function Lo(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 L0(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=Lo(i,n.from,0);o!=n.from&&(s=U.cursor(o,-1))}else{let o=Lo(i,n.from,-1),a=Lo(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 Eu(i,e,t){let r=Lo(i.state.facet(Go).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 Si=class{constructor(e,t){this.pos=e,this.assoc=t}};function lf(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 Si(0,1);if(l>i.viewState.docHeight)return new Si(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 u=i.docView.coordsAt(r<0?c.from:c.to,r>0?-1:1);if(u&&(r<0?u.top<=l+s:u.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=F1(i,n,c,o,a);return new Si(O,O==c.from?1:-1)}}if(c.type!=xt.Text)return l<(c.top+c.bottom)/2?new Si(c.from,1):new Si(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 cf(i,o,a,i.textDirectionAt(c.from)).scanTile(h,c.from)}var cf=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[vi.find(n,e-r.from,-1,t)].level==this.baseDir}dirAt(e,t){let{line:r,spans:n}=this.bidiSpansAt(e);return n[vi.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,u;e:for(;n<s;){let p=s-n,m=n+s>>1;t:if(o.has(m)){for(let Z=1;Z<p;Z++){let R=m+Z;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 Z=0;Z<S.length;Z++){let R=S[Z];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,u=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(!u){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}=u;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 f=(a?this.dirAt(e[h],1):this.baseDir)==Ye.LTR;return{i:h,after:this.x>(u.left+u.right)/2==f}}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 Fo(e.dom,o,a).getClientRects()});return n.after?new Si(r[n.i+1],-1):new Si(r[n.i],1)}scanTile(e,t){if(!e.length)return new Si(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:Fo(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 Si(r[n.i+1],-1):new Si(o,1)}},ms="\uFFFF",hf=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:Pe.of([" "])}),t)return Df(i,t,r,o);if(r&&!cc(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=L0(n.facet(Go).map(c=>c(i)),r))),i.dispatch({selection:r,scrollIntoView:a,userEvent:l}),!0}else return!1}function Df(i,e,t,r=-1){if(ee.ios&&i.inputState.flushIOSKey(e))return!0;let n=i.state.selection.main;if(ee.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&&Qs(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)&&Qs(i.contentDOM,"Backspace",8)||e.from==n.from&&e.to==n.to+1&&e.insert.length==0&&Qs(i.contentDOM,"Delete",46)))return!0;let s=e.insert.toString();i.inputState.composing>=0&&i.inputState.composing++;let o,a=()=>o||(o=J1(i,e,t));return i.state.facet(T0).some(l=>l(i,e.from,e.to,s,a))||i.dispatch(a()),!0}function J1(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=Lo(n.facet(Go).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,u=t&&M0(i,t.main.head);if(u){let p=e.insert.length-(e.to-e.from);O={from:u.from,to:u.to-p}}else O=i.state.doc.lineAt(s.head);let f=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-f,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}),Z=p.to-s.to;return{changes:w,range:c?U.range(Math.max(0,c.anchor+Z),Math.max(0,c.head+Z)):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 j0(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 ek(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 lc(t,r)),(n!=t||s!=r)&&e.push(new lc(n,s))),e}function tk(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 cc(i,e){return e.head==i.main.head&&e.anchor==i.main.anchor}var uf=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,ee.safari&&e.contentDOM.addEventListener("input",()=>null),ee.gecko&&mk(e.contentDOM.ownerDocument)}handleEvent(e){!ck(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((ee.mac||ee.android)&&O.from==o-1&&/^\. ?$/.test(r.text)&&e.contentDOM.getAttribute("autocorrect")=="off"&&(O={from:a,to:l,insert:Pe.of([r.text.replace("."," ")])}),this.pendingContextChange=O,!e.state.readOnly){let u=this.to-this.from+(O.to-O.from+O.insert.length);Df(e,O,U.single(this.toEditorPos(r.selectionStart,u),this.toEditorPos(r.selectionEnd,u)))}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(F.mark({attributes:{style:h}}).range(l,c))}}}e.dispatch({effects:Z0.of(F.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=Io(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=d Line truncated
-\x7F-\x9F\xAD\u061C\u200B\u200E\u200F\u2028\u2029\u202D\u202E\u2066\u2067\u2069\uFEFF\uFFF9-\uFFFC]`,Xf),jk={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"},Yu=null;function qk(){var i;if(Yu==null&&typeof document!="undefined"&&document.body){let e=document.body.style;Yu=((i=e.tabSize)!==null&&i!==void 0?i:e.MozTabSize)!=null}return Yu||!1}var Jl=J.define({combine(i){let e=ri(i,{render:null,specialChars:Vk,addSpecialChars:null});return(e.replaceTabs=!qk())&&(e.specialChars=new RegExp(" |"+e.specialChars.source,Xf)),e.addSpecialChars&&(e.specialChars=new RegExp(e.specialChars.source+"|"+e.addSpecialChars.source,Xf)),e}});function cx(i={}){return[Jl.of(i),Dk()]}var t0=null;function Dk(){return t0||(t0=je.fromClass(class{constructor(i){this.view=i,this.decorations=F.none,this.decorationCache=Object.create(null),this.decorator=this.makeDecorator(i.state.facet(Jl)),this.decorations=this.decorator.createDeco(i)}makeDecorator(i){return new Bo({regexp:i.specialChars,decoration:(e,t,r)=>{let{doc:n}=t.state,s=Ui(e[0],0);if(s==9){let o=n.lineAt(r),a=t.state.tabSize,l=Yt(o.text,a,r-o.from);return F.replace({widget:new Rf((a-l%a)*this.view.defaultCharacterWidth/this.view.scaleX)})}return this.decorationCache[s]||(this.decorationCache[s]=F.replace({widget:new _f(i,s)}))},boundary:i.replaceTabs?void 0:/[^]/})}update(i){let e=i.state.facet(Jl);i.startState.facet(Jl)!=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 Ik="\u2022";function Fk(i){return i>=32?Ik:i==10?"\u2424":String.fromCharCode(9216+i)}var _f=class extends at{constructor(e,t){super(),this.options=e,this.code=t}eq(e){return e.code==this.code}toDOM(e){let t=Fk(this.code),r=e.state.phrase("Control character")+" "+(jk[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}},Rf=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 wc(){return Nk}var Bk=F.line({class:"cm-activeLine"}),Nk=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(Bk.range(n.from)),e=n.from)}return F.set(t)}},{decorations:i=>i.decorations});var Cf=2e3;function Gk(i,e,t){let r=Math.min(e.line,t.line),n=Math.max(e.line,t.line),s=[];if(e.off>Cf||t.off>Cf||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=Ml(c.text,o,i.tabSize,!0);if(h<0)s.push(U.cursor(c.to));else{let O=Ml(c.text,a,i.tabSize);s.push(U.range(c.from+h,c.from+O))}}}return s}function Hk(i,e){let t=i.coordsAtPos(i.viewport.from);return t?Math.round(Math.abs((t.left-e)/i.defaultCharacterWidth)):-1}function i0(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>Cf?-1:n==r.length?Hk(i,e.clientX):Yt(r.text,i.state.tabSize,t-r.from);return{line:r.number,col:s,off:n}}function Kk(i,e){let t=i0(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=i0(i,n);if(!a)return r;let l=Gk(i.state,t,a);return l.length?o?U.create(l.concat(r.ranges)):U.create(l):r}}:null}function yc(i){let e=(i==null?void 0:i.eventFilter)||(t=>t.altKey&&t.button==0);return W.mouseSelectionStyle.of((t,r)=>e(r)?Kk(t,r):null)}var Jk={Alt:[18,i=>!!i.altKey],Control:[17,i=>!!i.ctrlKey],Shift:[16,i=>!!i.shiftKey],Meta:[91,i=>!!i.metaKey]},eT={style:"cursor: crosshair"};function $c(i={}){let[e,t]=Jk[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
`){[e,t]=ds(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 f of e)r+=f.lines;if(r<32){let f=[];for(let p of e)p.flatten(f);return new ii(f,t)}let n=Math.max(32,r>>5),s=n<<1,o=n>>1,a=[],l=0,c=-1,h=[];function O(f){let p;if(f.lines>s&&f instanceof i)for(let m of f.children)O(m);else f.lines>o&&(l>o||!l)?(u(),a.push(f)):f instanceof ii&&l&&(p=h[h.length-1])instanceof ii&&f.lines+p.lines<=32?(l+=f.lines,c+=f.length+1,h[h.length-1]=new ii(p.text.concat(f.text),p.length+1+f.length)):(l+f.lines>n&&u(),l+=f.lines,c+=f.length+1,h.push(f))}function u(){l!=0&&(a.push(h.length==1?h[0]:i.from(h,c)),c=-1,l=h.length=0)}for(let f of e)O(f);return u(),a.length==1?a[0]:new i(a,t)}};Pe.empty=new ii([""],0);function JP(i){let e=-1;for(let t of i)e+=t.length+1;return e}function Rl(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 nb(i,e,t){return Rl(i,[""],e,t)}var vn=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 ii?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 ii?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 ii){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 ii?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)}},Cl=class{constructor(e,t,r){this.value="",this.done=!1,this.cursor=new vn(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!=""}},Zl=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"&&(Pe.prototype[Symbol.iterator]=function(){return this.iter()},vn.prototype[Symbol.iterator]=Cl.prototype[Symbol.iterator]=Zl.prototype[Symbol.iterator]=function(){return this});var du=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 ds(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 eb(i,e,t,r)}function e1(i){return i>=56320&&i<57344}function t1(i){return i>=55296&&i<56320}function Ai(i,e){let t=i.charCodeAt(e);if(!t1(t)||e+1==i.length)return t;let r=i.charCodeAt(e+1);return e1(r)?(t-55296<<10)+(r-56320)+65536:t}function Yl(i){return i<=65535?String.fromCharCode(i):(i-=65536,String.fromCharCode((i>>10)+55296,(i&1023)+56320))}function Ar(i){return i<65536?1:2}var pu=/\r\n?|\n/,ut=(function(i){return i[i.Simple=0]="Simple",i[i.TrackDel=1]="TrackDel",i[i.TrackBefore=2]="TrackBefore",i[i.TrackAfter=3]="TrackAfter",i})(ut||(ut={})),fr=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){mu(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:cb(this,e)}mapDesc(e,t=!1){return e.empty?this:gu(this,e,t)}mapPos(e,t=-1,r=ut.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!=ut.Simple&&c>=e&&(r==ut.TrackDel&&n<e&&c>e||r==ut.TrackBefore&&n<e||r==ut.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)}},zt=class i extends fr{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 mu(this,(t,r,n,s,o)=>e=e.replace(n,n+(r-t),o),!1),e}mapDesc(e,t=!1){return gu(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(Pe.empty);r.push(o?e.slice(s,s+o):Pe.empty)}s+=o}return new i(t,r)}compose(e){return this.empty?e:e.empty?this:cb(this,e,!0)}map(e,t=!1){return e.empty?this:gu(this,e,t,!0)}iterChanges(e,t=!1){mu(this,e,t)}get desc Line truncated
`}get readOnly(){return this.facet(mb)}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(Ob))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 h1(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)}};we.allowMultipleSelections=xu;we.tabSize=J.define({combine:i=>i.length?i[0]:4});we.lineSeparator=ub;we.readOnly=mb;we.phrases=J.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])}});we.languageData=Ob;we.changeFilter=fb;we.transactionFilter=db;we.transactionExtender=pb;bt.reconfigure=ae.define();function ri(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 mi=class{eq(e){return this==e}range(e,t=e){return _o.create(e,t,this)}};mi.prototype.startSide=mi.prototype.endSide=0;mi.prototype.point=!1;mi.prototype.mapMode=ut.TrackDel;function Xu(i,e){return i==e||i.constructor==e.constructor&&i.eq(e)}var _o=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 yu(i,e){return i.from-e.from||i.value.startSide-e.value.startSide}var $u=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,u,f;if(h==O){let p=t.mapPos(h,c.startSide,c.mapMode);if(p==null||(u=f=p,c.startSide!=c.endSide&&(f=t.mapPos(h,c.endSide),f<u)))continue}else if(u=t.mapPos(h,c.startSide),f=t.mapPos(O,c.endSide),u>f||u==f&&c.startSide>0&&c.endSide<=0)continue;(f-u||c.endSide-c.startSide)<0||(o<0&&(o=u),c.point&&(a=Math.max(a,f-u)),r.push(c),n.push(u-o),s.push(f-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(yu)),this.isEmpty)return t.length?i.of(t):this;let a=new zl(this,null,-1).goto(0),l=0,c=[],h=new Ui;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(_o.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 Ro.from([this]).goto(e)}get isEmpty(){return this.nextLayer==this}static iter(e,t=0){return Ro.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=Sb[xb]||1;return Sb[xb]=e+1,"\u037C"+e.toString(36)}static mount(e,t,r){let n=e[_u],s=r&&r.nonce;n?s&&n.setNonce(s):n=new Ru(e,s),n.mount(Array.isArray(t)?t:[t],e)}},vb=new Map,Ru=class{constructor(e,t){let r=e.ownerDocument||e,n=r.defaultView;if(!e.head&&e.adoptedStyleSheets&&n.CSSStyleSheet){let s=vb.get(r);if(s)return e[_u]=s;this.sheet=new n.CSSStyleSheet,vb.set(r,this)}else this.styleTag=r.createElement("style"),t&&this.styleTag.setAttribute("nonce",t);this.modules=[],e[_u]=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 dr={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:"'"},ps={48:")",49:"!",50:"@",51:"#",52:"$",53:"%",54:"^",55:"&",56:"*",57:"(",59:":",61:"+",173:"_",186:":",187:"+",188:"<",189:"_",190:">",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"'},u1=typeof navigator!="undefined"&&/Mac/.test(navigator.platform),f1=typeof navigator!="undefined"&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent);for(ot=0;ot<10;ot++)dr[48+ot]=dr[96+ot]=String(ot);var ot;for(ot=1;ot<=24;ot++)dr[ot+111]="F"+ot;var ot;for(ot=65;ot<=90;ot++)dr[ot]=String.fromCharCode(ot+32),ps[ot]=String.fromCharCode(ot);var ot;for(Ll in dr)ps.hasOwnProperty(Ll)||(ps[Ll]=dr[Ll]);var Ll;function Qb(i){var e=u1&&i.metaKey&&i.shiftKey&&!i.ctrlKey&&!i.altKey||f1&&i.shiftKey&&i.key&&i.key.length==1||i.key=="Unidentified",t=!e&&i.key||(i.shiftKey?ps:dr)[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++)wb(i,arguments[e]);return i}function wb(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++)wb(i,e[t]);else throw new RangeError("Unsupported child node: "+e)}var Mt=typeof navigator!="undefined"?navigator:{userAgent:"",vendor:"",platform:""},Wu=typeof document!="undefined"?document:{documentElement:{style:{}}},Vu=/Edge\/(\d+)/.exec(Mt.userAgent),l0=/MSIE \d/.test(Mt.userAgent),ju=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(Mt.userAgent),xc=!!(l0||ju||Vu),yb=!xc&&/gecko\/(\d+)/i.test(Mt.userAgent),Cu=!xc&&/Chrome\/(\d+)/.exec(Mt.userAgent),$b="webkitFontSmoothing"in Wu.documentElement.style,qu=!xc&&/Apple Computer/.test(Mt.vendor),Pb=qu&&(/Mobile\/\w+/.test(Mt.userAgent)||Mt.maxTouchPoints>2),ee={mac:Pb||/Mac/.test(Mt.platform),windows:/Win/.test(Mt.platform),linux:/Linux|X11/.test(Mt.platform),ie:xc,ie_version:l0?Wu.documentMode||6:ju?+ju[1]:Vu?+Vu[1]:0,gecko:yb,gecko_version:yb?+(/Firefox\/(\d+)/.exec(Mt.userAgent)||[0,0])[1]:0,chrome:!!Cu,chrome_version:Cu?+Cu[1]:0,ios:Pb,android:/Android\b/.test(Mt.userAgent),webkit:$b,webkit_version:$b?+(/\bAppleWebKit\/(\d+)/.exec(Mt.userAgent)||[0,0])[1]:0,safari:qu,safari_version:qu?+(/\bVersion\/(\d+(\.\d+)?)/.exec(Mt.userAgent)||[0,0])[1]:0,tabSize:Wu.documentElement.style.tabSize!=null?"tab-size":"-moz-tab-size"};function Ef(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 tc=Object.create(null);function zf(i,e,t){if(i==e)return!0;i||(i=tc),e||(e=tc);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 d1(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 kb(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 p1(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={})),F=class extends mi{constructor(e,t,r,n){super(),this.startSide=e,this.endLine 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 B1(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 N1(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,u=i.viewState.heightOracle.textHeight>>1,f=r!=null?r:u;for(let p=0;;p+=u){let m=a+(f+p)*s,S=af(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),Z=w?(w.top+w.bottom)/2:0;if(!w||(t?Z>a:Z<a))return U.cursor(S.pos,S.assoc,void 0,o)}}function Lo(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 M0(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=Lo(i,n.from,0);o!=n.from&&(s=U.cursor(o,-1))}else{let o=Lo(i,n.from,-1),a=Lo(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 Au(i,e,t){let r=Lo(i.state.facet(Go).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 Si=class{constructor(e,t){this.pos=e,this.assoc=t}};function af(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 Si(0,1);if(l>i.viewState.docHeight)return new Si(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 u=i.docView.coordsAt(r<0?c.from:c.to,r>0?-1:1);if(u&&(r<0?u.top<=l+s:u.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=I1(i,n,c,o,a);return new Si(O,O==c.from?1:-1)}}if(c.type!=xt.Text)return l<(c.top+c.bottom)/2?new Si(c.from,1):new Si(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 lf(i,o,a,i.textDirectionAt(c.from)).scanTile(h,c.from)}var lf=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[vi.find(n,e-r.from,-1,t)].level==this.baseDir}dirAt(e,t){let{line:r,spans:n}=this.bidiSpansAt(e);return n[vi.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,u;e:for(;n<s;){let p=s-n,m=n+s>>1;t:if(o.has(m)){for(let Z=1;Z<p;Z++){let R=m+Z;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 Z=0;Z<S.length;Z++){let R=S[Z];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,u=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(!u){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}=u;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 f=(a?this.dirAt(e[h],1):this.baseDir)==Ye.LTR;return{i:h,after:this.x>(u.left+u.right)/2==f}}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 Fo(e.dom,o,a).getClientRects()});return n.after?new Si(r[n.i+1],-1):new Si(r[n.i],1)}scanTile(e,t){if(!e.length)return new Si(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:Fo(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 Si(r[n.i+1],-1):new Si(o,1)}},ms="\uFFFF",cf=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:Pe.of([" "])}),t)return qf(i,t,r,o);if(r&&!cc(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=M0(n.facet(Go).map(c=>c(i)),r))),i.dispatch({selection:r,scrollIntoView:a,userEvent:l}),!0}else return!1}function qf(i,e,t,r=-1){if(ee.ios&&i.inputState.flushIOSKey(e))return!0;let n=i.state.selection.main;if(ee.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&&Qs(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)&&Qs(i.contentDOM,"Backspace",8)||e.from==n.from&&e.to==n.to+1&&e.insert.length==0&&Qs(i.contentDOM,"Delete",46)))return!0;let s=e.insert.toString();i.inputState.composing>=0&&i.inputState.composing++;let o,a=()=>o||(o=K1(i,e,t));return i.state.facet(k0).some(l=>l(i,e.from,e.to,s,a))||i.dispatch(a()),!0}function K1(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=Lo(n.facet(Go).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,u=t&&Y0(i,t.main.head);if(u){let p=e.insert.length-(e.to-e.from);O={from:u.from,to:u.to-p}}else O=i.state.doc.lineAt(s.head);let f=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-f,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}),Z=p.to-s.to;return{changes:w,range:c?U.range(Math.max(0,c.anchor+Z),Math.max(0,c.head+Z)):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 V0(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 J1(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 lc(t,r)),(n!=t||s!=r)&&e.push(new lc(n,s))),e}function ek(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 cc(i,e){return e.head==i.main.head&&e.anchor==i.main.anchor}var Of=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,ee.safari&&e.contentDOM.addEventListener("input",()=>null),ee.gecko&&pk(e.contentDOM.ownerDocument)}handleEvent(e){!lk(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((ee.mac||ee.android)&&O.from==o-1&&/^\. ?$/.test(r.text)&&e.contentDOM.getAttribute("autocorrect")=="off"&&(O={from:a,to:l,insert:Pe.of([r.text.replace("."," ")])}),this.pendingContextChange=O,!e.state.readOnly){let u=this.to-this.from+(O.to-O.from+O.insert.length);qf(e,O,U.single(this.toEditorPos(r.selectionStart,u),this.toEditorPos(r.selectionEnd,u)))}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(F.mark({attributes:{style:h}}).range(l,c))}}}e.dispatch({effects:C0.of(F.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=Io(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=d Line truncated
-\x7F-\x9F\xAD\u061C\u200B\u200E\u200F\u2028\u2029\u202D\u202E\u2066\u2067\u2069\uFEFF\uFFF9-\uFFFC]`,Tf),Vk={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"},zu=null;function jk(){var i;if(zu==null&&typeof document!="undefined"&&document.body){let e=document.body.style;zu=((i=e.tabSize)!==null&&i!==void 0?i:e.MozTabSize)!=null}return zu||!1}var Jl=J.define({combine(i){let e=ri(i,{render:null,specialChars:Wk,addSpecialChars:null});return(e.replaceTabs=!jk())&&(e.specialChars=new RegExp(" |"+e.specialChars.source,Tf)),e.addSpecialChars&&(e.specialChars=new RegExp(e.specialChars.source+"|"+e.addSpecialChars.source,Tf)),e}});function lx(i={}){return[Jl.of(i),qk()]}var e0=null;function qk(){return e0||(e0=je.fromClass(class{constructor(i){this.view=i,this.decorations=F.none,this.decorationCache=Object.create(null),this.decorator=this.makeDecorator(i.state.facet(Jl)),this.decorations=this.decorator.createDeco(i)}makeDecorator(i){return new Bo({regexp:i.specialChars,decoration:(e,t,r)=>{let{doc:n}=t.state,s=Ai(e[0],0);if(s==9){let o=n.lineAt(r),a=t.state.tabSize,l=Yt(o.text,a,r-o.from);return F.replace({widget:new _f((a-l%a)*this.view.defaultCharacterWidth/this.view.scaleX)})}return this.decorationCache[s]||(this.decorationCache[s]=F.replace({widget:new Xf(i,s)}))},boundary:i.replaceTabs?void 0:/[^]/})}update(i){let e=i.state.facet(Jl);i.startState.facet(Jl)!=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 Dk="\u2022";function Ik(i){return i>=32?Dk:i==10?"\u2424":String.fromCharCode(9216+i)}var Xf=class extends at{constructor(e,t){super(),this.options=e,this.code=t}eq(e){return e.code==this.code}toDOM(e){let t=Ik(this.code),r=e.state.phrase("Control character")+" "+(Vk[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}},_f=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 wc(){return Bk}var Fk=F.line({class:"cm-activeLine"}),Bk=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(Fk.range(n.from)),e=n.from)}return F.set(t)}},{decorations:i=>i.decorations});var Rf=2e3;function Nk(i,e,t){let r=Math.min(e.line,t.line),n=Math.max(e.line,t.line),s=[];if(e.off>Rf||t.off>Rf||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=Ml(c.text,o,i.tabSize,!0);if(h<0)s.push(U.cursor(c.to));else{let O=Ml(c.text,a,i.tabSize);s.push(U.range(c.from+h,c.from+O))}}}return s}function Gk(i,e){let t=i.coordsAtPos(i.viewport.from);return t?Math.round(Math.abs((t.left-e)/i.defaultCharacterWidth)):-1}function t0(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>Rf?-1:n==r.length?Gk(i,e.clientX):Yt(r.text,i.state.tabSize,t-r.from);return{line:r.number,col:s,off:n}}function Hk(i,e){let t=t0(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=t0(i,n);if(!a)return r;let l=Nk(i.state,t,a);return l.length?o?U.create(l.concat(r.ranges)):U.create(l):r}}:null}function yc(i){let e=(i==null?void 0:i.eventFilter)||(t=>t.altKey&&t.button==0);return W.mouseSelectionStyle.of((t,r)=>e(r)?Hk(t,r):null)}var Kk={Alt:[18,i=>!!i.altKey],Control:[17,i=>!!i.ctrlKey],Shift:[16,i=>!!i.shiftKey],Meta:[91,i=>!!i.metaKey]},Jk={style:"cursor: crosshair"};function $c(i={}){let[e,t]=Kk[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 Yc(t,e?e.state.tabSize:4,e?Dr(e.state):2);if(o.eol())s.blankLine(this.state,o.indentUnit);else for(;!o.eol();){let a=nS(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:lX,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 nS(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 Xd=Object.create(null),ra=[Je.none],lX=new br(ra),Vx=[],jx=Object.create(null),sS=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"]])sS[i]=oS(Xd,e);var Mc=class{constructor(e){this.extra=e,this.table=Object.assign(Object.create(null),sS)}resolve(e){return e?this.table[e]||(this.table[e]=oS(this.extra,e)):0}},cX=new Mc(Xd);function fd(i,e){Vx.indexOf(i)>-1||(Vx.push(i),console.warn(e))}function oS(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):fd(c,`Modifier ${c} used at start of tag`):l.length?fd(c,`Tag ${c} used as modifier`):l=Array.isArray(h)?h:[h]:fd(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=jx[n];if(s)return s.id;let o=jx[n]=Je.define({id:ra.length,name:r,props:[St({[r]:t})]});return ra.push(o),o.id}function hX(i,e){let t=Je.define({id:ra.length,name:"Document",props:[vr.add(()=>i),wi.add(()=>r=>e.getIndent(r))],top:!0});return ra.push(t),t}var Lz={rtl:F.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"rtl"},bidiIsolate:Ye.RTL}),ltr:F.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"ltr"},bidiIsolate:Ye.LTR}),auto:F.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"auto"},bidiIsolate:null})};var Dc=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(uX(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 aS(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 OX(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=aS(e)+aS(t)+"*$";return[new RegExp("^"+r),new RegExp(r)]}function OS(i){let e=i.map(n=>typeof n=="string"?{label:n}:n),[t,r]=e.every(n=>/^\w+$/.test(n.label))?[/\w*$/,/\w+$/]:OX(e);return n=>{let s=n.matchBefore(r);return s||n.explicit?{from:s?s.from:n.pos,options:e,validFor:t}:null}}function uS(i,e){return t=>{for(let r=_e(t.state).resolve Line truncated
`;let o=i.state.facet(sr),a=o instanceof vt?"Lezer LRLanguage":o instanceof ft?"StreamLanguage":"Unknown",l=o instanceof vt?"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}
`);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 Yc(t,e?e.state.tabSize:4,e?Dr(e.state):2);if(o.eol())s.blankLine(this.state,o.indentUnit);else for(;!o.eol();){let a=rS(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:aX,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 rS(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 Td=Object.create(null),ra=[Je.none],aX=new br(ra),Wx=[],Vx=Object.create(null),nS=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"]])nS[i]=sS(Td,e);var Mc=class{constructor(e){this.extra=e,this.table=Object.assign(Object.create(null),nS)}resolve(e){return e?this.table[e]||(this.table[e]=sS(this.extra,e)):0}},lX=new Mc(Td);function ud(i,e){Wx.indexOf(i)>-1||(Wx.push(i),console.warn(e))}function sS(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):ud(c,`Modifier ${c} used at start of tag`):l.length?ud(c,`Tag ${c} used as modifier`):l=Array.isArray(h)?h:[h]:ud(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=Vx[n];if(s)return s.id;let o=Vx[n]=Je.define({id:ra.length,name:r,props:[St({[r]:t})]});return ra.push(o),o.id}function cX(i,e){let t=Je.define({id:ra.length,name:"Document",props:[vr.add(()=>i),wi.add(()=>r=>e.getIndent(r))],top:!0});return ra.push(t),t}var Lz={rtl:F.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"rtl"},bidiIsolate:Ye.RTL}),ltr:F.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"ltr"},bidiIsolate:Ye.LTR}),auto:F.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"auto"},bidiIsolate:null})};var Dc=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(OX(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 oS(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 hX(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=oS(e)+oS(t)+"*$";return[new RegExp("^"+r),new RegExp(r)]}function hS(i){let e=i.map(n=>typeof n=="string"?{label:n}:n),[t,r]=e.every(n=>/^\w+$/.test(n.label))?[/\w*$/,/\w+$/]:hX(e);return n=>{let s=n.matchBefore(r);return s||n.explicit?{from:s?s.from:n.pos,options:e,validFor:t}:null}}function OS(i,e){return t=>{for(let r=_e(t.state).resolve Line truncated
`;let o=i.state.facet(or),a=o instanceof vt?"Lezer LRLanguage":o instanceof ft?"StreamLanguage":"Unknown",l=o instanceof vt?"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 Ld=i=>{let{state:e}=i,t=e.doc.lineAt(e.selection.main.from),r=Vd(i.state,t.from);return r.line?ZX(i):r.block?AX(i):!1};function Wd(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 ZX=Wd(YX,0);var UX=Wd(XS,0);var AX=Wd((i,e)=>XS(i,e,zX(e)),0);function Vd(i,e){let t=i.languageDataAt("commentTokens",e,1);return t.length?t[0]:{}}var aa=50;function EX(i,{open:e,close:t},r,n){let s=i.sliceDoc(r-aa,r),o=i.sliceDoc(n,n+aa),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*aa?h=O=i.sliceDoc(r,n):(h=i.sliceDoc(r,r+aa),O=i.sliceDoc(n-aa,n));let u=/^\s*/.exec(h)[0].length,f=/\s*$/.exec(O)[0].length,p=O.length-f-t.length;return h.slice(u,u+e.length)==e&&O.slice(p,p+t.length)==t?{open:{pos:r+u+e.length,margin:/\s/.test(h.charAt(u+e.length))?1:0},close:{pos:n-f-t.length,margin:/\s/.test(O.charAt(p-1))?1:0}}:null}function zX(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 XS(i,e,t=e.selection.ranges){let r=t.map(s=>Vd(e,s.from).block);if(!r.every(s=>s))return null;let n=t.map((s,o)=>EX(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 YX(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=Vd(e,O.from).line,!c))continue e;if(O.from>n&&(s==o||o>O.from)){n=O.from;let u=/^\s*/.exec(O.text)[0].length,f=u==O.length,p=O.text.slice(u,u+c.length)==c?u:-1;u<O.text.length&&u<l&&(l=u),r.push({line:O,comment:p,token:c,indent:u,empty:f,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 zd=Bt.define(),Nc=Bt.define(),MX=J.define(),_S=J.define({combine(i){return ri(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)})}}),RS=Te.define({create(){return Un.empty},update(i,e){let t=e.state.facet(_S),r=e.annotation(zd);if(r){let l=Mi.fromTransaction(e,r.selection),c=r.side,h=c==0?i.undone:i.done;return l?h=Bc(h,h.length,t.minDepth,l):h=US(h,e.startState.selection),new Un(c==0?r.rest:h,c==0?h:r.rest)}let n=e.annotation(Nc);if((n=="full"||n=="before")&&(i=i.isolate()),e.annotation(Ge.addToHistory)===!1)return e.changes.empty?i:i.addMapping(e.changes.desc);let s=Mi.fromTransaction(e),o=e.annotation(Ge.time),a=e.annotation(Ge.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 Un(i.done.map(Mi.fromJSON),i.undone.map(Mi.fromJSON))}});function CS(i={}){return[RS,_S.of(i),W.domEventHandlers({beforeinput(e,t){let r=e.inputType=="historyUndo"?la:e.inputType=="historyRedo"?Us:null;return r?(e.preventDefault(),r(t)):!1}})]}function Gc(i,e){return function({state:t,dispatch:r}){if(!e&&t.readOnly)return!1;let n=t.field(RS,!1);if(!n)return!1;let s=n.pop(i,t,e);return s?(r(s),!0):!1}}var la=Gc(0,!1),Us=Gc(1,!1),LX=Gc(0,!0),WX=Gc(1,!0);var Mi=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
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 CX=i=>{let{state:e}=i,t=e.doc.lineAt(e.selection.main.from),r=Ld(i.state,t.from);return r.line?ZX(i):r.block?AX(i):!1};function Md(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 ZX=Md(YX,0);var UX=Md(TS,0);var AX=Md((i,e)=>TS(i,e,zX(e)),0);function Ld(i,e){let t=i.languageDataAt("commentTokens",e,1);return t.length?t[0]:{}}var aa=50;function EX(i,{open:e,close:t},r,n){let s=i.sliceDoc(r-aa,r),o=i.sliceDoc(n,n+aa),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*aa?h=O=i.sliceDoc(r,n):(h=i.sliceDoc(r,r+aa),O=i.sliceDoc(n-aa,n));let u=/^\s*/.exec(h)[0].length,f=/\s*$/.exec(O)[0].length,p=O.length-f-t.length;return h.slice(u,u+e.length)==e&&O.slice(p,p+t.length)==t?{open:{pos:r+u+e.length,margin:/\s/.test(h.charAt(u+e.length))?1:0},close:{pos:n-f-t.length,margin:/\s/.test(O.charAt(p-1))?1:0}}:null}function zX(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 TS(i,e,t=e.selection.ranges){let r=t.map(s=>Ld(e,s.from).block);if(!r.every(s=>s))return null;let n=t.map((s,o)=>EX(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 YX(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=Ld(e,O.from).line,!c))continue e;if(O.from>n&&(s==o||o>O.from)){n=O.from;let u=/^\s*/.exec(O.text)[0].length,f=u==O.length,p=O.text.slice(u,u+c.length)==c?u:-1;u<O.text.length&&u<l&&(l=u),r.push({line:O,comment:p,token:c,indent:u,empty:f,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 Ed=Bt.define(),Nc=Bt.define(),MX=J.define(),XS=J.define({combine(i){return ri(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)})}}),_S=Te.define({create(){return An.empty},update(i,e){let t=e.state.facet(XS),r=e.annotation(Ed);if(r){let l=Li.fromTransaction(e,r.selection),c=r.side,h=c==0?i.undone:i.done;return l?h=Bc(h,h.length,t.minDepth,l):h=ZS(h,e.startState.selection),new An(c==0?r.rest:h,c==0?h:r.rest)}let n=e.annotation(Nc);if((n=="full"||n=="before")&&(i=i.isolate()),e.annotation(Ge.addToHistory)===!1)return e.changes.empty?i:i.addMapping(e.changes.desc);let s=Li.fromTransaction(e),o=e.annotation(Ge.time),a=e.annotation(Ge.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 An(i.done.map(Li.fromJSON),i.undone.map(Li.fromJSON))}});function RS(i={}){return[_S,XS.of(i),W.domEventHandlers({beforeinput(e,t){let r=e.inputType=="historyUndo"?la:e.inputType=="historyRedo"?Us:null;return r?(e.preventDefault(),r(t)):!1}})]}function Gc(i,e){return function({state:t,dispatch:r}){if(!e&&t.readOnly)return!1;let n=t.field(_S,!1);if(!n)return!1;let s=n.pop(i,t,e);return s?(r(s),!0):!1}}var la=Gc(0,!1),Us=Gc(1,!1),LX=Gc(0,!0),WX=Gc(1,!0);var Li=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>
@@ -29,23 +29,23 @@ Tags : ${s}`,O.style.whiteSpace="pre-wrap",O.style.fontFamily="monospace",O.sty
<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"),iR(i),rR(i),vl(i.showStatusBar)}}}})}function nh(){return typeof navigator!="undefined"?navigator.storage:null}function nR(i){var e=i!==void 0?i:nh();return!!(e&&typeof e.persist=="function")}async function sR(i){var e=i!==void 0?i:nh();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 oR(i){var e=i!==void 0?i:nh(),t={supported:nR(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 sR(e);return t.usage=r.usage,t.quota=r.quota,t}async function Id(i){var e=i!==void 0?i:nh(),t=await oR(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 aR(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 Qv(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 wv(i){return i.usage==null&&i.quota==null?"":"This site is using "+Qv(i.usage)+" of the "+Qv(i.quota)+" your browser allows."}var Dd="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 yv(i){switch(i||aR()){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 lR(){return"This browser doesn't support persistent storage, so it may discard your local file edits when it needs disk space. "+Dd}function $v(i,e){var t=wv(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. ")+Dd:r="Your browser has not granted persistent storage, so it may discard your local file edits when it needs disk space.<br><br>"+yv()+"<br><br>"+Dd:r=lR(),t?r+"<br><br>"+t:r}function Pv(i){return"Your browser ran out of space for this site, so your last edit may not have been saved.<br><br>"+wv(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>"+yv():"")}var Xv=KO(cu());var Oa=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.has(r.offset)||this.offset2loc.set(r.offset,r),this.line2offset.has(r.line)||this.line2offset.set(r.line,r.offset));this.sortedOffsets=Array.from(this.offset2loc.keys()).sort((n,s)=>n-s)}findLineForOffset(e,t){let r=this.sortedOffsets;for(var n=0,s=r.length-1,o=-1;n<=s;){var a=n+s>>1;r[a]<=e?(o=a,n=a+1):s=a-1}if(o<0)return null;var l=r[o];return e-l>t?null:this.offset2loc.get(l)}lineCount(){return this.lines.length}};function kv(i){return"errors"in i}function Tv(i){return"output"in i}var sh=class{constructor(e){this.preset_id=Et(e)}async getRemoteFile(e){return new Promise((t,r)=>yo(e,t,mn(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 Ms=class{constructor(e,t){this.basefs=eLine truncated
</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"),iR(i),rR(i),vl(i.showStatusBar)}}}})}function rh(){return typeof navigator!="undefined"?navigator.storage:null}function nR(i){var e=i!==void 0?i:rh();return!!(e&&typeof e.persist=="function")}async function sR(i){var e=i!==void 0?i:rh();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 oR(i){var e=i!==void 0?i:rh(),t={supported:nR(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 sR(e);return t.usage=r.usage,t.quota=r.quota,t}async function Dd(i){var e=i!==void 0?i:rh(),t=await oR(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 aR(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 vv(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 Qv(i){return i.usage==null&&i.quota==null?"":"This site is using "+vv(i.usage)+" of the "+vv(i.quota)+" your browser allows."}var qd="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 wv(i){switch(i||aR()){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 lR(){return"This browser doesn't support persistent storage, so it may discard your local file edits when it needs disk space. "+qd}function yv(i,e){var t=Qv(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. ")+qd:r="Your browser has not granted persistent storage, so it may discard your local file edits when it needs disk space.<br><br>"+wv()+"<br><br>"+qd:r=lR(),t?r+"<br><br>"+t:r}function $v(i){return"Your browser ran out of space for this site, so your last edit may not have been saved.<br><br>"+Qv(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>"+wv():"")}var Tv=HO(lu());var Oa=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.has(r.offset)||this.offset2loc.set(r.offset,r),this.line2offset.has(r.line)||this.line2offset.set(r.line,r.offset));this.sortedOffsets=Array.from(this.offset2loc.keys()).sort((n,s)=>n-s)}findLineForOffset(e,t){let r=this.sortedOffsets;for(var n=0,s=r.length-1,o=-1;n<=s;){var a=n+s>>1;r[a]<=e?(o=a,n=a+1):s=a-1}if(o<0)return null;var l=r[o];return e-l>t?null:this.offset2loc.get(l)}lineCount(){return this.lines.length}};function Pv(i){return"errors"in i}function kv(i){return"output"in i}var nh=class{constructor(e){this.preset_id=Et(e)}async getRemoteFile(e){return new Promise((t,r)=>yo(e,t,gn(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 Ms=class{constructor(e,t){this.basefs=eLine truncated
=====
[Open this project in 8bitworkshop](http://8bitworkshop.com/redir.html?platform=$PLATFORM&githubURL=$GITHUBURL&file=$MAINFILE).
`;function An(){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 ua(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 ch=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=ua(e);if(!t)throw new Error("Please enter a valid GitHub URL.");var r=An()[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,u=l.content;if(l.encoding=="base64"){var f=dl(atob(u)),p=mn(o.path,f);u=p?f:ml(f)}return l.size!=u.length&&(u=u.slice(0,l.size)),(t||this.store).setItem(c,u)});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=cR;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(pl(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,Vt(),{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,ar.saveAs)(O,l),r+="Then connect your audio output to the cassette input, turn up the volume, and play the audio file.",Tt(r)}})}function fR(i){pi("lib/makewav.js").then(()=>{let e="",t=function(a){e+=a+`
`};var r=kt(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,Vt(),{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,ar.saveAs)(O,s),e+=`
Connect your audio output to the SuperCharger input, turn up the volume, and play the audio file.`,Tt(e)}})})}function dR(i){var e=kt(lt());let t=e+".tap",r=new En(e),n=new hh({sine_wave:!0}),s=Vt(),o=s[0]+s[1]*256;s=s.slice(2),r.setContent({data:s,startAddress:o,type:En.FILE_TYPE_NON_RELOCATABLE}),r.generateSound(n);let a=n.getTAPData();if(a){let l=new Blob([a],{type:"application/octet-stream"});(0,ar.saveAs)(l,t)}}function Bd(){switch(Et(le)){case"vcs":return fR;case"apple2":return uR;case"c64":return dR}}function Rv(i){if(Vt()==null)return Qe("Please fix errors before exporting."),!0;var e=Bd();if(e===void 0)return Qe("Cassette export is not supported on this platform."),!0;e(i)}function Cv(i){if(Vt()==null)return Qe("Please finish compiling with no errors before downloading ROM."),!0;var e=kt(lt());if(v.getDownloadFile){var t=v.getDownloadFile(),e=kt(lt());(0,ar.saveAs)(t.blob,e+t.extension)}else if(Vt()instanceof Uint8Array){var r=new Blob([Vt()],{type:"application/octet-stream"}),n=v.getROMExtension&&v.getROMExtension(Vt())||"-"+Et(le)+".bin";(0,ar.saveAs)(r,e+n)}else Qe(`The "${le}" platform doesn't have downloadable ROMs.`)}function Zv(i){var e=j.getCurrentText();if(!e)return!1;var t=new Blob([e],{type:"text/plain;charset=utf-8"});(0,ar.saveAs)(t,Mv(),{autoBom:!1})}async function Uv(){let i=(await import("./jszip.min-HOLYP7RC.js")).default;return new i}async function Av(i){var e=await Uv();Qr().iterateFiles((t,r)=>{r&&e.file(Ot(t),r)}),e.generateAsync({type:"blob"}).then(t=>{(0,ar.saveAs)(t,lt()+"-"+Et(le)+".zip")})}function Ev(i){let e=v.getDebugSymbolFile&&v.getDebugSymbolFile();if(!e){Qe("This project does not have debug information.");return}var t=kt(lt());(0,ar.saveAs)(e.blob,t+e.extension,{autoBom:!1})}async function zv(i){var e=await Uv(),t=await Br().keys();We(!0);try{var r=0;await Promise.all(t.map(s=>Br().getItem(s).then(o=>{Ci(r++/(t.length+1)),o&&e.file(s,o)})));var n=await e.generateAsync({type:"blob"});(0,ar.saveAs)(n,Et(le)+"-all.zip")}finally{We(!1)}}var Fd=!1;function Yv(){Fd||pi("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=>{Ci(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(),Fd=!1):(t.addFrame(i,{delay:n,copy:!0}),setTimeout(a,n),Fd=!0)};a()})}var Nd;async function zn(){if(!Nd){await pi("lib/octokat.js"),await pi("https://www.gstatic.com/firebasejs/8.8.1/firebase-app.js"),await pi("https://www.gstatic.com/firebasejs/8.8.1/firebase-auth.js"),await pi("https://8bitworkshop.com/config.js");var i=bl("__github_key");Nd=new ch(Octokat,i,Br(),Qr()),console.log("loaded github service")}return Nd}function da(){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 pa(i,e){var t,r=ua(i);if(!r){Qe("Could not parse GitHub URL.");return}var n=An()[r.repopath];if(!(n&&!confirm("You've already imported "+r.repopath+" -- do you want to replace all local files?"))){We(!0);var s=lh(r.repopath);Ci(.25);var o=await zn();return o.import(i).then(a=>(t=a,Ci(.75),o.pull(i,s))).then(a=>{We(!1),Yn(e,{repo:r.repopath})}).catch(a=>{We(!1),console.log(a),Qe("Could not import "+i+". "+a)})}}async function Lv(i){var e=await zn();e.login().then(()=>{Tt("You are signed in to GitHub.")}).catch(t=>{Qe("Could not sign in."+t)})}async function Wv(i){var e=await zn();e.logout().then(()=>{Tt("You are logged out of GitHub.")})}function Vv(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"),pa(r,!1)})}function jv(i){if(!(ct&&!confirm("This project ("+Qr().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(kt(Ot(Qr().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 u=a.match(/^\s*(\w+)\s*:/);u&&!a.trim().startsWith("//")&&n.push({id:`${e}:${l}:${u[1]}`,name:u[1],kind:"label",source:r,file:e,line:l});let f=a.match(/#define\s+(\w+)/i);f&&n.push({id:`${e}:${l}:${f[1]}`,name:f[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 Gv=()=>null;function Hv(i){Gv=i}function Mn(){return Gv()}var Oh=class{constructor(){this.id="project";this.kind="project";this.rebuilt=!1;this.index=new Ls([])}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=Mn();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 u=c[O],p=u.toLowerCase().indexOf(r);if(p>=0){let m=u.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 Hd(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=Mn();if(!e)return;let t=[];e.iterateFiles((r,n)=>{if(typeof n!="string")return;let s=this.detectEditorStyle(r),o=Hd(n,r,s,"project");t.push(...o)}),this.index.pushRecords(t)}};var xR=new Set(["h","hh","hpp","inc","asm","a65","s","mac","defs","def","equ","i","m","c","bas","txt"]),SR=20,uh=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=SR}async ready(){if(this.readyDone)return;this.readyDone=!0;let e=Mn();if(!e)return;let t;try{t=e.getToolForFilename?e.getToolForFilename(e.mainPath):""}catch(o){t=""}let r=kl(t,e.platform_id),n=Pl(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=Mn();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=Mn();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:xR.has(t.substring(r+1).toLowerCase())}async ensureBatch(){let e=Mn();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],f=O.toLowerCase().indexOf(r);if(f>=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-f*2),ranges:[f,f+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 fh=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 QR=50,Kd=class i{constructor(){this.sources=new Map;this.projectSource=new Oh,this.toolchainSource=new uh,this.docsSource=new fh,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=QR){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)}},Kv=Kd.getInstance();var tp=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 dh(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,u=this.bufferBase+this.buffer.length-O;if(n<s.minRepeatTerm||e&131072){let f=s.stateFlag(this.state,1)?this.pos:this.reducePos;this.storeNode(n,c,f,u+4,!0)}if(e&262144)this.state=this.stack[l];else{let f=this.stack[l-3];this.state=s.getGoto(f,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 up(this):new Op(this)}getCursor(e,t=0,r){let n=e.doc?e:we.create({doc:e});return r==null&&(r=n.doc.length),this.regexp?qs(this,n,t,r):js(this,n,t,r)}},Qh=class{constructor(e){this.spec=e}};function rC(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 js(i,e,t,r){let n;return i.wholeWord&&(n=nC(e.doc,e.charCategorizer(e.selection.main.head))),i.test&&(n=rC(i.test,e,n)),new Hr(e.doc,i.unquoted,t,r,i.caseSensitive?void 0:s=>s.toLowerCase(),n)}function nC(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(wh(n,t-s))!=Me.Word||e(yh(n,t-s))!=Me.Word)&&(e(yh(n,r-s))!=Me.Word||e(wh(n,r-s))!=Me.Word))}var Op=class extends Qh{constructor(e){super(e)}nextMatch(e,t,r){let n=js(this.spec,e,r,e.doc.length).nextOverlapping();if(n.done){let s=Math.min(e.doc.length,t+this.spec.unquoted.length);n=js(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=js(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=js(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=js(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 sC(i,e,t){return(r,n,s)=>(!t||t(r,n,s))&&i(s[0],e,r,n)}function qs(i,e,t,r){let n;return i.wholeWord&&(n=oC(e.charCategorizer(e.selection.main.head))),i.test&&(n=sC(i.test,e,n)),new gh(e.doc,i.search,{ignoreCase:!i.caseSensitive,test:n},t,r)}function wh(i,e){return i.slice(it(i,e,!1),e)}function yh(i,e){return i.slice(e,it(i,e))}function oC(i){return(e,t,r)=>!r[0].length||(i(wh(r.input,r.index))!=Me.Word||i(yh(r.input,r.index))!=Me.Word)&&(i(yh(r.input,r.index+r[0].length))!=Me.Word||i(wh(r.input,r.index+r[0].length))!=Me.Word)}var up=class extends Qh{nextMatch(e,t,r){let n=qs(this.spec,e,r,e.doc.length).next();return n.done&&(n=qs(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=qs(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=qs(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=qs(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)}},xa=ae.define(),xp=ae.define(),Gr=Te.define({create(i){return new ba(fp(i).create(),null)},update(i,e){for(let t of e.effects)t.is(xa)?i=new ba(t.value.create(),i.panel):t.is(xp)&&(i=new ba(i.query,t.value?Sp:null));return i},provide:i=>No.from(i,e=>e.panel)});var ba=class{constructor(e,t){this.query=e,this.panel=t}},aC=F.mark({class:"cm-searchMatch"}),lC=F.mark({class:"cm-searchMatch cm-searchMatch-selected"}),cC=je.fromClass(class{constructor(i){this.view=i,this.decorations=this.highlight(i.state.field(Gr))}update(i){let e=i.state.field(Gr);(e!=i.startState.field(Gr)||i.docChanged||i.selectionSet||i.viewportChanged)&&(this.decorations=this.highlight(e))}highlight({query:i,panel:e}){if(!e||!i.spec.valid)return F.none;let{view:t}=this,r=new Zi;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(u=>u.from==c&&u.to==h);r.add(c,h,O?lC:aC)})}return r.finish()}},{decorations:i=>i.decorations});function Sa(i){return e=>{let t=e.state.field(Gr,!1);return t&&t.query.spec.valid?i(e,t):kh(e)}}var Ds=Sa((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(Ln);return i.dispatch({selection:n,effects:[vp(i,r),s.scrollToMatch(n.main,i)],userEvent:"select.search"}),mQ(i),!0}),$h=Sa((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)&&Qa(t.content,this.pos)==t.content.length?this.complete(e,t,t.content.length):!1}complete(e,t,r){return e.addLeafElement(t,Ce(B.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(hw(e,this.pos,this.start,!0)))return-1;if(e.charCodeAt(this.pos)!=58)return this.stage=-1;this.elts.push(Ce(B.LinkMark,this.pos+this.start,this.pos+this.start+1)),this.pos++}else if(this.stage==1){if(!this.nextStage(lw(e,Qa(e,this.pos),this.start)))return-1}else if(this.stage==2){let t=Qa(e,this.pos),r=0;if(t>this.pos){let n=cw(e,t,this.start);if(n){let s=Ip(e,n.to-this.start);s>0&&(this.nextStage(n),r=s)}}return r||(r=Ip(e,this.pos)),r>0&&r<e.length?r:-1}else return Ip(e,this.pos)}}};function Ip(i,e){for(;e<i.length;e++){let t=i.charCodeAt(e);if(t==10)break;if(!ki(t))return-1}return e}var Jp=class{nextLine(e,t,r){let n=t.depth<e.stack.length?-1:JQ(t),s=t.next;if(n<0)return!1;let o=Ce(B.HeaderMark,e.lineStart+t.pos,e.lineStart+n);return e.nextLine(),e.addLeafElement(r,Ce(s==61?B.SetextHeading1:B.SetextHeading2,r.start,e.prevLineEnd(),[...e.parser.parseInline(r.content,r.start),o])),!0}finish(){return!1}},rw={LinkReference(i,e){return e.content.charCodeAt(0)==91?new Kp(e):null},SetextHeading(){return new Jp}},xZ=[(i,e)=>KQ(e)>=0,(i,e)=>NQ(e)>=0,(i,e)=>GQ(e)>=0,(i,e)=>om(e,i,!0)>=0,(i,e)=>am(e,i,!0)>=0,(i,e)=>sm(e,i,!0)>=0,(i,e)=>iw(e,i,!0)>=0],SZ={text:"",end:0},em=class{constructor(e,t,r,n){this.parser=e,this.input=t,this.ranges=n,this.line=new Np,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=_h.create(B.Document,0,this.lineStart,0,0),this.stack=[this.block],this.fragments=r.length?new rm(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 Bp(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=Ow(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=SZ;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 "+B[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==`
`;function En(){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 ua(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 lh=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=ua(e);if(!t)throw new Error("Please enter a valid GitHub URL.");var r=En()[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,u=l.content;if(l.encoding=="base64"){var f=dl(atob(u)),p=gn(o.path,f);u=p?f:ml(f)}return l.size!=u.length&&(u=u.slice(0,l.size)),(t||this.store).setItem(c,u)});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=cR;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(pl(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,Vt(),{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,lr.saveAs)(O,l),r+="Then connect your audio output to the cassette input, turn up the volume, and play the audio file.",Tt(r)}})}function fR(i){pi("lib/makewav.js").then(()=>{let e="",t=function(a){e+=a+`
`};var r=kt(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,Vt(),{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,lr.saveAs)(O,s),e+=`
Connect your audio output to the SuperCharger input, turn up the volume, and play the audio file.`,Tt(e)}})})}function dR(i){var e=kt(lt());let t=e+".tap",r=new zn(e),n=new ch({sine_wave:!0}),s=Vt(),o=s[0]+s[1]*256;s=s.slice(2),r.setContent({data:s,startAddress:o,type:zn.FILE_TYPE_NON_RELOCATABLE}),r.generateSound(n);let a=n.getTAPData();if(a){let l=new Blob([a],{type:"application/octet-stream"});(0,lr.saveAs)(l,t)}}function Fd(){switch(Et(le)){case"vcs":return fR;case"apple2":return uR;case"c64":return dR}}function _v(i){if(Vt()==null)return Qe("Please fix errors before exporting."),!0;var e=Fd();if(e===void 0)return Qe("Cassette export is not supported on this platform."),!0;e(i)}function Rv(i){if(Vt()==null)return Qe("Please finish compiling with no errors before downloading ROM."),!0;var e=kt(lt());if(v.getDownloadFile){var t=v.getDownloadFile(),e=kt(lt());(0,lr.saveAs)(t.blob,e+t.extension)}else if(Vt()instanceof Uint8Array){var r=new Blob([Vt()],{type:"application/octet-stream"}),n=v.getROMExtension&&v.getROMExtension(Vt())||"-"+Et(le)+".bin";(0,lr.saveAs)(r,e+n)}else Qe(`The "${le}" platform doesn't have downloadable ROMs.`)}function Cv(i){var e=j.getCurrentText();if(!e)return!1;var t=new Blob([e],{type:"text/plain;charset=utf-8"});(0,lr.saveAs)(t,Yv(),{autoBom:!1})}async function Zv(){let i=(await import("./jszip.min-HOLYP7RC.js")).default;return new i}async function Uv(i){var e=await Zv();Qr().iterateFiles((t,r)=>{r&&e.file(Ot(t),r)}),e.generateAsync({type:"blob"}).then(t=>{(0,lr.saveAs)(t,lt()+"-"+Et(le)+".zip")})}function Av(i){let e=v.getDebugSymbolFile&&v.getDebugSymbolFile();if(!e){Qe("This project does not have debug information.");return}var t=kt(lt());(0,lr.saveAs)(e.blob,t+e.extension,{autoBom:!1})}async function Ev(i){var e=await Zv(),t=await Br().keys();We(!0);try{var r=0;await Promise.all(t.map(s=>Br().getItem(s).then(o=>{Zi(r++/(t.length+1)),o&&e.file(s,o)})));var n=await e.generateAsync({type:"blob"});(0,lr.saveAs)(n,Et(le)+"-all.zip")}finally{We(!1)}}var Id=!1;function zv(){Id||pi("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=>{Zi(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(),Id=!1):(t.addFrame(i,{delay:n,copy:!0}),setTimeout(a,n),Id=!0)};a()})}var Bd;async function Yn(){if(!Bd){await pi("lib/octokat.js"),await pi("https://www.gstatic.com/firebasejs/8.8.1/firebase-app.js"),await pi("https://www.gstatic.com/firebasejs/8.8.1/firebase-auth.js"),await pi("https://8bitworkshop.com/config.js");var i=bl("__github_key");Bd=new lh(Octokat,i,Br(),Qr()),console.log("loaded github service")}return Bd}function da(){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 pa(i,e){var t,r=ua(i);if(!r){Qe("Could not parse GitHub URL.");return}var n=En()[r.repopath];if(!(n&&!confirm("You've already imported "+r.repopath+" -- do you want to replace all local files?"))){We(!0);var s=ah(r.repopath);Zi(.25);var o=await Yn();return o.import(i).then(a=>(t=a,Zi(.75),o.pull(i,s))).then(a=>{We(!1),Mn(e,{repo:r.repopath})}).catch(a=>{We(!1),console.log(a),Qe("Could not import "+i+". "+a)})}}async function Mv(i){var e=await Yn();e.login().then(()=>{Tt("You are signed in to GitHub.")}).catch(t=>{Qe("Could not sign in."+t)})}async function Lv(i){var e=await Yn();e.logout().then(()=>{Tt("You are logged out of GitHub.")})}function Wv(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"),pa(r,!1)})}function Vv(i){if(!(ct&&!confirm("This project ("+Qr().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(kt(Ot(Qr().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 u=a.match(/^\s*(\w+)\s*:/);u&&!a.trim().startsWith("//")&&n.push({id:`${e}:${l}:${u[1]}`,name:u[1],kind:"label",source:r,file:e,line:l});let f=a.match(/#define\s+(\w+)/i);f&&n.push({id:`${e}:${l}:${f[1]}`,name:f[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 Nv=()=>null;function Gv(i){Nv=i}function Ln(){return Nv()}var hh=class{constructor(){this.id="project";this.kind="project";this.rebuilt=!1;this.index=new Ls([])}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=Ln();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 u=c[O],p=u.toLowerCase().indexOf(r);if(p>=0){let m=u.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 Gd(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=Ln();if(!e)return;let t=[];e.iterateFiles((r,n)=>{if(typeof n!="string")return;let s=this.detectEditorStyle(r),o=Gd(n,r,s,"project");t.push(...o)}),this.index.pushRecords(t)}};var xR=new Set(["h","hh","hpp","inc","asm","a65","s","mac","defs","def","equ","i","m","c","bas","txt"]),SR=20,Oh=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=SR}async ready(){if(this.readyDone)return;this.readyDone=!0;let e=Ln();if(!e)return;let t;try{t=e.getToolForFilename?e.getToolForFilename(e.mainPath):""}catch(o){t=""}let r=kl(t,e.platform_id),n=Pl(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=Ln();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=Ln();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:xR.has(t.substring(r+1).toLowerCase())}async ensureBatch(){let e=Ln();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],f=O.toLowerCase().indexOf(r);if(f>=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-f*2),ranges:[f,f+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 uh=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 QR=50,Hd=class i{constructor(){this.sources=new Map;this.projectSource=new hh,this.toolchainSource=new Oh,this.docsSource=new uh,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=QR){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)}},Hv=Hd.getInstance();var ep=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,u=this.bufferBase+this.buffer.length-O;if(n<s.minRepeatTerm||e&131072){let f=s.stateFlag(this.state,1)?this.pos:this.reducePos;this.storeNode(n,c,f,u+4,!0)}if(e&262144)this.state=this.stack[l];else{let f=this.stack[l-3];this.state=s.getGoto(f,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 Op(this):new hp(this)}getCursor(e,t=0,r){let n=e.doc?e:we.create({doc:e});return r==null&&(r=n.doc.length),this.regexp?qs(this,n,t,r):js(this,n,t,r)}},vh=class{constructor(e){this.spec=e}};function rC(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 js(i,e,t,r){let n;return i.wholeWord&&(n=nC(e.doc,e.charCategorizer(e.selection.main.head))),i.test&&(n=rC(i.test,e,n)),new Hr(e.doc,i.unquoted,t,r,i.caseSensitive?void 0:s=>s.toLowerCase(),n)}function nC(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(wh(n,t-s))!=Me.Word)&&(e(wh(n,r-s))!=Me.Word||e(Qh(n,r-s))!=Me.Word))}var hp=class extends vh{constructor(e){super(e)}nextMatch(e,t,r){let n=js(this.spec,e,r,e.doc.length).nextOverlapping();if(n.done){let s=Math.min(e.doc.length,t+this.spec.unquoted.length);n=js(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=js(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=js(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=js(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 sC(i,e,t){return(r,n,s)=>(!t||t(r,n,s))&&i(s[0],e,r,n)}function qs(i,e,t,r){let n;return i.wholeWord&&(n=oC(e.charCategorizer(e.selection.main.head))),i.test&&(n=sC(i.test,e,n)),new mh(e.doc,i.search,{ignoreCase:!i.caseSensitive,test:n},t,r)}function Qh(i,e){return i.slice(it(i,e,!1),e)}function wh(i,e){return i.slice(e,it(i,e))}function oC(i){return(e,t,r)=>!r[0].length||(i(Qh(r.input,r.index))!=Me.Word||i(wh(r.input,r.index))!=Me.Word)&&(i(wh(r.input,r.index+r[0].length))!=Me.Word||i(Qh(r.input,r.index+r[0].length))!=Me.Word)}var Op=class extends vh{nextMatch(e,t,r){let n=qs(this.spec,e,r,e.doc.length).next();return n.done&&(n=qs(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=qs(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=qs(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=qs(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)}},xa=ae.define(),bp=ae.define(),Gr=Te.define({create(i){return new ba(up(i).create(),null)},update(i,e){for(let t of e.effects)t.is(xa)?i=new ba(t.value.create(),i.panel):t.is(bp)&&(i=new ba(i.query,t.value?xp:null));return i},provide:i=>No.from(i,e=>e.panel)});var ba=class{constructor(e,t){this.query=e,this.panel=t}},aC=F.mark({class:"cm-searchMatch"}),lC=F.mark({class:"cm-searchMatch cm-searchMatch-selected"}),cC=je.fromClass(class{constructor(i){this.view=i,this.decorations=this.highlight(i.state.field(Gr))}update(i){let e=i.state.field(Gr);(e!=i.startState.field(Gr)||i.docChanged||i.selectionSet||i.viewportChanged)&&(this.decorations=this.highlight(e))}highlight({query:i,panel:e}){if(!e||!i.spec.valid)return F.none;let{view:t}=this,r=new Ui;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(u=>u.from==c&&u.to==h);r.add(c,h,O?lC:aC)})}return r.finish()}},{decorations:i=>i.decorations});function Sa(i){return e=>{let t=e.state.field(Gr,!1);return t&&t.query.spec.valid?i(e,t):Ph(e)}}var Ds=Sa((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(Wn);return i.dispatch({selection:n,effects:[Sp(i,r),s.scrollToMatch(n.main,i)],userEvent:"select.search"}),pQ(i),!0}),yh=Sa((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)&&Qa(t.content,this.pos)==t.content.length?this.complete(e,t,t.content.length):!1}complete(e,t,r){return e.addLeafElement(t,Ce(B.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(cw(e,this.pos,this.start,!0)))return-1;if(e.charCodeAt(this.pos)!=58)return this.stage=-1;this.elts.push(Ce(B.LinkMark,this.pos+this.start,this.pos+this.start+1)),this.pos++}else if(this.stage==1){if(!this.nextStage(aw(e,Qa(e,this.pos),this.start)))return-1}else if(this.stage==2){let t=Qa(e,this.pos),r=0;if(t>this.pos){let n=lw(e,t,this.start);if(n){let s=Dp(e,n.to-this.start);s>0&&(this.nextStage(n),r=s)}}return r||(r=Dp(e,this.pos)),r>0&&r<e.length?r:-1}else return Dp(e,this.pos)}}};function Dp(i,e){for(;e<i.length;e++){let t=i.charCodeAt(e);if(t==10)break;if(!ki(t))return-1}return e}var Kp=class{nextLine(e,t,r){let n=t.depth<e.stack.length?-1:KQ(t),s=t.next;if(n<0)return!1;let o=Ce(B.HeaderMark,e.lineStart+t.pos,e.lineStart+n);return e.nextLine(),e.addLeafElement(r,Ce(s==61?B.SetextHeading1:B.SetextHeading2,r.start,e.prevLineEnd(),[...e.parser.parseInline(r.content,r.start),o])),!0}finish(){return!1}},iw={LinkReference(i,e){return e.content.charCodeAt(0)==91?new Hp(e):null},SetextHeading(){return new Kp}},xZ=[(i,e)=>HQ(e)>=0,(i,e)=>BQ(e)>=0,(i,e)=>NQ(e)>=0,(i,e)=>sm(e,i,!0)>=0,(i,e)=>om(e,i,!0)>=0,(i,e)=>nm(e,i,!0)>=0,(i,e)=>tw(e,i,!0)>=0],SZ={text:"",end:0},Jp=class{constructor(e,t,r,n){this.parser=e,this.input=t,this.ranges=n,this.line=new Bp,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(B.Document,0,this.lineStart,0,0),this.stack=[this.block],this.fragments=r.length?new im(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 Fp(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=hw(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=SZ;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 "+B[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=_h.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],Is,Is,(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(im(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?nw(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=im(this.parser.parseInline(e.content,e.start),e.marks);this.addNode(this.buffer.writeElements(t,-e.start).finish(B.Paragraph,e.content.length),e.start)}elt(e,t,r,n){return typeof e=="string"?Ce(this.parser.getNodeType(e),t,r,n):new Ch(e,t)}get buffer(){return new Rh(this.parser.nodeSet)}};function nw(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 u=i[e+1].from-s;r+=u,h+=u,e++,s=i[e].to}}for(let h=t.firstChild;h;h=h.nextSibling){c(h.from+r,!0);let O=h.from+r,u,f=n.get(h.tree);f?u=f:h.to+r>s?(u=nw(i,e,h,r,n),c(h.to+r,!1)):u=h.toTree(),o.push(u),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 ya=class i extends Sr{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 em(this,e,t,r);for(let s of this.wrappers)n=s(n,e,t,r);return n}configure(e){let t=tm(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(va(t.defineNodes)){n=Object.assign({},n);let u=r.types.slice(),f;for(let p of t.defineNodes){let{name:m,block:S,composite:w,style:Z}=typeof p=="string"?{name:p}:p;if(u.some(k=>k.name==m))continue;w&&(n[u.length]=(k,P,C)=>w(P,C,k.value));let R=u.length,A=w?["Block","BlockContext"]:S?R>=B.ATXHeading1&&R<=B.SetextHeading2?["Block","LeafBlock","Heading"]:["Block","LeafBlock"]:void 0;u.push(Je.define({id:R,name:m,props:A&&[[fe.group,A]]})),Z&&(f||(f={}),Array.isArray(Z)||Z instanceof oi?f[m]=Z:Object.assign(f,Z))}r=new br(u),f&&(r=r.extend(St(f)))}if(va(t.props)&&(r=r.extend(...t.props)),va(t.remove))for(let u of t.remove){let f=this.blockNames.indexOf(u),p=this.inlineNames.indexOf(u);f>-1&&(s[f]=o[f]=void 0),p>-1&&(l[p]=void 0)}if(va(t.parseBlock))for(let u of t.parseBlock){let f=a.indexOf(u.name);if(f>-1)s[f]=u.parse,o[f]=u.leaf;else{let p=u.before?Xh(a,u.before):u.after?Xh(a,u.after)+1:a.length-1;s.splice(p,0,u.parse),o.splice(p,0,u.leaf),a.splice(p,0,u.name)}u.endLeaf&&h.push(u.endLeaf)}if(va(t.parseInline))for(let u of t.parseInline){let f=c.indexOf(u.name);if(f>-1)l[f]=u.parse;else{let p=u.before?Xh(c,u.before):u.after?Xh(c,u.after)+1:c.length-1;l.splice(p,0,u.parse),c.splice(p,0,u.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 Pa(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 va(i){return i!=null&&i.length>0}function tm(i){if(!Array.isArray(i))return i;if(i.length==0)return null;let e=tm(i[0]);if(i.length==1)return e;let t=tm(i.slice(1));if(!t||!e)return e||t;let r=(o,a)=>(o||Is).concat(a||Is),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 Xh(i,e){let t=i.indexOf(e);if(t<0)throw new RangeError(`Position specified relative to unknown parser ${e}`);return t}var sw=[Je.none];for(let i=1,e;e=B[i];i++)sw[i]=Je.define({id:i,name:e,props:i>=B.Escape?[]:[[fe.group,i in BQ?["Block","BlockContext"]:["Block","LeafBlock"]]],top:e=="Document"});var Is=[],Rh=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(fe.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=Ow(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[B.Paragraph],[],[],0,e.block.hashProp);e.reusePlaceholders.set(O,t.tree),e.addNode(O,h)}if(t.type.is("Block")&&(QZ.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 Ow(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 wZ=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}),uw=new ya(new br(sw).extend(wZ),Object.keys(Th).map(i=>Th[i]),Object.keys(Th).map(i=>rw[i]),Object.keys(Th),xZ,BQ,Object.keys(Fp).map(i=>Fp[i]),Object.keys(Fp),[]);function yZ(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 fw(i){let{codeParser:e,htmlParser:t}=i;return{wrap:Cc((n,s)=>{let o=n.type.id;if(e&&(o==B.CodeBlock||o==B.FencedCode)){let a="";if(o==B.FencedCode){let c=n.node.getChild(B.CodeInfo);c&&(a=s.read(c.from,c.to))}let l=e(a);if(l)return{parser:l,overlay:c=>c.type.id==B.CodeText,bracketed:o==B.FencedCode}}else if(t&&(o==B.HTMLBlock||o==B.HTMLTag||o==B.CommentBlock))return{parser:t,overlay:yZ(n.node,n.from,n.to)};return null})}}var $Z={resolve:"Strikethrough",mark:"StrikethroughMark"},PZ={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=$a.test(r),l=$a.test(n);return i.addDelimiter($Z,t,t+2,!o&&(!l||s||a),!s&&(!a||o||l))},after:"Emphasis"}]};function wa(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 u=e.charCodeAt(O);u==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||u!=32&&u!=9)&&(a<0&&(a=O),l=O+1),c=!c&&u==92}return a>-1&&(s++,r&&h()),s}function WQ(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 dw=/^[>\s]*\|?(\s*:?-+:?\s*\|)+(\s*:?-+:?\s*)?$/,Uh=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)&&dw.test(n=t.text.slice(t.pos))){let s=[];wa(e,r.content,0,s,r.start)==wa(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=[];wa(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}},kZ={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 WQ(e.content,0)?new Uh:null},endLeaf(i,e,t){if(t.parsers.some(n=>n instanceof Uh)||!WQ(e.text,e.basePos))return!1;let r=i.peekLine();return dw.test(r)&&wa(i,e.text,e.basePos)==wa(i,r,e.basePos)},before:"SetextHeading"}]},nm=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}},TZ={defineNodes:[{name:"Task",block:!0,style:d.list},{name:"TaskMarker",style:d.atom}],parseBlock:[ Line truncated
`);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],Is,Is,(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(tm(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?rw(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=tm(this.parser.parseInline(e.content,e.start),e.marks);this.addNode(this.buffer.writeElements(t,-e.start).finish(B.Paragraph,e.content.length),e.start)}elt(e,t,r,n){return typeof e=="string"?Ce(this.parser.getNodeType(e),t,r,n):new Rh(e,t)}get buffer(){return new _h(this.parser.nodeSet)}};function rw(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 u=i[e+1].from-s;r+=u,h+=u,e++,s=i[e].to}}for(let h=t.firstChild;h;h=h.nextSibling){c(h.from+r,!0);let O=h.from+r,u,f=n.get(h.tree);f?u=f:h.to+r>s?(u=rw(i,e,h,r,n),c(h.to+r,!1)):u=h.toTree(),o.push(u),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 ya=class i extends Sr{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 Jp(this,e,t,r);for(let s of this.wrappers)n=s(n,e,t,r);return n}configure(e){let t=em(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(va(t.defineNodes)){n=Object.assign({},n);let u=r.types.slice(),f;for(let p of t.defineNodes){let{name:m,block:S,composite:w,style:Z}=typeof p=="string"?{name:p}:p;if(u.some(k=>k.name==m))continue;w&&(n[u.length]=(k,P,C)=>w(P,C,k.value));let R=u.length,A=w?["Block","BlockContext"]:S?R>=B.ATXHeading1&&R<=B.SetextHeading2?["Block","LeafBlock","Heading"]:["Block","LeafBlock"]:void 0;u.push(Je.define({id:R,name:m,props:A&&[[fe.group,A]]})),Z&&(f||(f={}),Array.isArray(Z)||Z instanceof oi?f[m]=Z:Object.assign(f,Z))}r=new br(u),f&&(r=r.extend(St(f)))}if(va(t.props)&&(r=r.extend(...t.props)),va(t.remove))for(let u of t.remove){let f=this.blockNames.indexOf(u),p=this.inlineNames.indexOf(u);f>-1&&(s[f]=o[f]=void 0),p>-1&&(l[p]=void 0)}if(va(t.parseBlock))for(let u of t.parseBlock){let f=a.indexOf(u.name);if(f>-1)s[f]=u.parse,o[f]=u.leaf;else{let p=u.before?Th(a,u.before):u.after?Th(a,u.after)+1:a.length-1;s.splice(p,0,u.parse),o.splice(p,0,u.leaf),a.splice(p,0,u.name)}u.endLeaf&&h.push(u.endLeaf)}if(va(t.parseInline))for(let u of t.parseInline){let f=c.indexOf(u.name);if(f>-1)l[f]=u.parse;else{let p=u.before?Th(c,u.before):u.after?Th(c,u.after)+1:c.length-1;l.splice(p,0,u.parse),c.splice(p,0,u.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 Pa(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 va(i){return i!=null&&i.length>0}function em(i){if(!Array.isArray(i))return i;if(i.length==0)return null;let e=em(i[0]);if(i.length==1)return e;let t=em(i.slice(1));if(!t||!e)return e||t;let r=(o,a)=>(o||Is).concat(a||Is),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 Th(i,e){let t=i.indexOf(e);if(t<0)throw new RangeError(`Position specified relative to unknown parser ${e}`);return t}var nw=[Je.none];for(let i=1,e;e=B[i];i++)nw[i]=Je.define({id:i,name:e,props:i>=B.Escape?[]:[[fe.group,i in FQ?["Block","BlockContext"]:["Block","LeafBlock"]]],top:e=="Document"});var Is=[],_h=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(fe.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=hw(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[B.Paragraph],[],[],0,e.block.hashProp);e.reusePlaceholders.set(O,t.tree),e.addNode(O,h)}if(t.type.is("Block")&&(QZ.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 hw(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 wZ=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}),Ow=new ya(new br(nw).extend(wZ),Object.keys(kh).map(i=>kh[i]),Object.keys(kh).map(i=>iw[i]),Object.keys(kh),xZ,FQ,Object.keys(Ip).map(i=>Ip[i]),Object.keys(Ip),[]);function yZ(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 uw(i){let{codeParser:e,htmlParser:t}=i;return{wrap:Cc((n,s)=>{let o=n.type.id;if(e&&(o==B.CodeBlock||o==B.FencedCode)){let a="";if(o==B.FencedCode){let c=n.node.getChild(B.CodeInfo);c&&(a=s.read(c.from,c.to))}let l=e(a);if(l)return{parser:l,overlay:c=>c.type.id==B.CodeText,bracketed:o==B.FencedCode}}else if(t&&(o==B.HTMLBlock||o==B.HTMLTag||o==B.CommentBlock))return{parser:t,overlay:yZ(n.node,n.from,n.to)};return null})}}var $Z={resolve:"Strikethrough",mark:"StrikethroughMark"},PZ={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=$a.test(r),l=$a.test(n);return i.addDelimiter($Z,t,t+2,!o&&(!l||s||a),!s&&(!a||o||l))},after:"Emphasis"}]};function wa(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 u=e.charCodeAt(O);u==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||u!=32&&u!=9)&&(a<0&&(a=O),l=O+1),c=!c&&u==92}return a>-1&&(s++,r&&h()),s}function LQ(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 fw=/^[>\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)&&fw.test(n=t.text.slice(t.pos))){let s=[];wa(e,r.content,0,s,r.start)==wa(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=[];wa(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}},kZ={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 LQ(e.content,0)?new Zh:null},endLeaf(i,e,t){if(t.parsers.some(n=>n instanceof Zh)||!LQ(e.text,e.basePos))return!1;let r=i.peekLine();return fw.test(r)&&wa(i,e.text,e.basePos)==wa(i,r,e.basePos)},before:"SetextHeading"}]},rm=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}},TZ={defineNodes:[{name:"Task",block:!0,style:d.list},{name:"TaskMarker",style:d.atom}],parseBlock:[ Line truncated
\${}
} catch (\${error}) {
\${}
@@ -57,47 +57,47 @@ Connect your audio output to the SuperCharger input, turn up the volume, and pla
constructor(\${params}) {
\${}
}
}`,{label:"class",detail:"definition",type:"keyword"}),Wt('import {${names}} from "${module}"\n${}',{label:"import",detail:"named",type:"keyword"}),Wt('import ${name} from "${module}"\n${}',{label:"import",detail:"default",type:"keyword"})],$U=iy.concat([Wt("interface ${name} {\n ${}\n}",{label:"interface",detail:"definition",type:"keyword"}),Wt("type ${name} = ${type}",{label:"type",detail:"definition",type:"keyword"}),Wt("enum ${name} {\n ${}\n}",{label:"enum",detail:"definition",type:"keyword"})]),Jw=new _s,ry=new Set(["Script","Block","FunctionExpression","FunctionDeclaration","ArrowFunction","MethodDeclaration","ForStatement"]);function Xa(i){return(e,t)=>{let r=e.node.getChild("VariableDefinition");return r&&t(r,i),!0}}var PU=["FunctionDeclaration"],kU={FunctionDeclaration:Xa("function"),ClassDeclaration:Xa("class"),ClassExpression:()=>!0,EnumDeclaration:Xa("constant"),TypeAliasDeclaration:Xa("type"),NamespaceDeclaration:Xa("namespace"),VariableDefinition(i,e){i.matchContext(PU)||e(i,"variable")},TypeDefinition(i,e){e(i,"type")},__proto__:null};function ny(i,e){let t=Jw.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=kU[o.name];if(a&&a(o,s)||ry.has(o.name))return!1}else if(o.to-o.from>8192){for(let a of ny(i,o.node))r.push(a);return!1}}),Jw.set(e,r),r}var ey=/^[\w$\xa1-\uffff][\w$\d\xa1-\uffff]*$/,sy=["TemplateString","String","RegExp","LineComment","BlockComment","VariableDefinition","TypeDefinition","Label","PropertyDefinition","PropertyName","PrivatePropertyDefinition","PrivatePropertyName","JSXText","JSXAttributeValue","JSXOpenTag","JSXCloseTag","JSXSelfClosingTag",".","?."];function TU(i){let e=_e(i.state).resolveInner(i.pos,-1);if(sy.indexOf(e.name)>-1)return null;let t=e.name=="VariableName"||e.to-e.from<20&&ey.test(i.state.sliceDoc(e.from,e.to));if(!t&&!i.explicit)return null;let r=[];for(let n=e;n;n=n.parent)ry.has(n.name)&&(r=r.concat(ny(i.state.doc,n)));return{options:r,from:t?e.from:i.pos,validFor:ey}}var Vi=vt.define({name:"javascript",parser:Kw.configure({props:[wi.add({IfStatement:or({except:/^\s*({|else\b)/}),TryStatement:or({except:/^\s*({|catch\b|finally\b)/}),LabeledStatement:jc,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:Vc({closing:"}"}),ArrowFunction:i=>i.baseIndent+i.unit,"TemplateString BlockComment":()=>null,"Statement Property":or({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}}),Rt.add({"Block ClassBody SwitchBody EnumBody ObjectExpression ArrayExpression ObjectType":yi,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:"$"}}),oy={test:i=>/^JSX/.test(i.name),facet:Rs({commentTokens:{block:{open:"{/*",close:"*/}"}}})},Qm=Vi.configure({dialect:"ts"},"typescript"),wm=Vi.configure({dialect:"jsx",props:[Lc.add(i=>i.isTop?[oy]:void 0)]}),ym=Vi.configure({dialect:"jsx ts",props:[Lc.add(i=>i.isTop?[oy]:void 0)]},"typescript"),ay=i=>({label:i,type:"keyword"}),ly="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(ay),XU=ly.concat(["declare","implements","private","protected","public"].map(ay));function cy(i={}){let e=i.jsx?i.typescript?ym:wm:i.typescript?Qm:Vi,t=i.typescript?$U.concat(XU):iy.concat(ly);return new Ee(e,[Vi.data.of({autocomplete:uS(sy,OS(t))}),Vi.data.of({autocomplete:TU}),i.jsx?CU:[]])}function _U(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 ty(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 RU=typeof navigator=="object"&&/Android\b/.test(navigator.userAgent),CU=W.inputHandler.of((i,e,t,r,n)=>{if((RU?i.composing:i.compositionStarted)||i.state.readOnly||e!=t||r!=">"&&r!="/"||!Vi.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){zy.lastIndex=0;let c=zy.exec(l);if(c){let h=o+c.index+c[0].length;t.push(F.widget({widget:new Mm(c[0],e),side:-1}).range(h))}o+=l.length+1}}return F.set(t,!0)}function My(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=Yy(r,t)}update(r){e=r.view,(r.docChanged||r.viewportChanged)&&(this.decorations=Yy(r.view,t))}},{decorations:r=>r.decorations})}var Lm=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 uA(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 u=O[h.group!=null?h.group:O.length-1];if(!u)continue;let f=h.suffix?u+h.suffix:u,p=Math.min(o+O.index+O[0].length,n.length),m=n.lineAt(p),S=m.number+":"+f;s.has(S)||(s.add(S),r.push(F.widget({widget:new Lm(f,!!h.system,t),side:1}).range(m.to)))}}}return F.set(r,!0)}function Ly(i,e){function t(r){let n=i();return!n||!n.length?F.none:uA(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 Bs=window.matchMedia&&window.matchMedia("only screen and (max-width: 760px)").matches;function cr(i,e){var t=$(document.createElement("div"));return i&&t.appendTo(i),e&&t.addClass(e),t}function fA(i){return we.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(),u=i.input(O);t.push({from:o,to:a,insert:u}),u!==O&&(r=!0)}),!r)return e;let n=e.annotation(Ge.userEvent),s=e.annotation(Ge.addToHistory);return{changes:t,selection:e.selection,effects:e.effects,scrollIntoView:e.scrollIntoView,annotations:[...n!=null?[Ge.userEvent.of(n)]:[],...s!=null?[Ge.addToHistory.of(s)]:[]]}})}var Wm=new bt;function Wy(i){return Wm.reconfigure(fA(i))}var Vy=ae.define(),jy=ae.define(),qy=ae.define(),Dy=ae.define(),Iy=ae.define(),Fy=ae.define(),By=ae.define(),jm=ae.define(),Ny=ae.define(),Gy=Te.define({create(){return pe.empty},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(Vy)){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(ve(o,4)).range(a))}i=pe.of(n,!0)}return i}}),Hy=Te.define({create(){return pe.empty},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(jy)){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 jh(o).range(a))}i=pe.of(n,!0)}return i}}),Ky=Te.define({create(){return pe.empty},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(qy)){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 qh(o).range(a))}i=pe.of(n,!0)}return i}}),Jy=Te.define({create(){return pe.empty},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(Iy)){let r=[],n=t.value.filter(s=>s.line>=1&&s.line<=e.state.doc.lines).sort((s,o)=>s.line-o.line);for(let s of n){let o=e.state.doc.line(s.line).from;r.push((s.enabled?pA:mA).range(o))}i=pe.of(r,!0)}return i}}),Vm=Te.define({create(){return pe.empty},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(Fy)){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 Ih(s,o).range(a))}i=pe.of(n,!0)}return i}}),e$=Te.define({create(){return pe.empty},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(By))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(t$.range(n))}}return i}}),Vh=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}},jh=class extends nt{constructor(t){super();this.bytes=t}toDOM(){return document.createTextNode(this.bytes)}eq(t){return this.bytes==t.bytes}},qh=class extends nt{constructor(t){super();this.clock=t}toDOM(){return document.createTextNode(this.clock)}eq(t){return this.clock==t.clock}},dA=new class extends nt{toDOM(){let i=document.createElement("span");return i.textContent="\u25CF",i.style.color="transparent",i.style.cursor="pointer",i.addE Line truncated
}`,{label:"class",detail:"definition",type:"keyword"}),Wt('import {${names}} from "${module}"\n${}',{label:"import",detail:"named",type:"keyword"}),Wt('import ${name} from "${module}"\n${}',{label:"import",detail:"default",type:"keyword"})],$U=ty.concat([Wt("interface ${name} {\n ${}\n}",{label:"interface",detail:"definition",type:"keyword"}),Wt("type ${name} = ${type}",{label:"type",detail:"definition",type:"keyword"}),Wt("enum ${name} {\n ${}\n}",{label:"enum",detail:"definition",type:"keyword"})]),Kw=new _s,iy=new Set(["Script","Block","FunctionExpression","FunctionDeclaration","ArrowFunction","MethodDeclaration","ForStatement"]);function Xa(i){return(e,t)=>{let r=e.node.getChild("VariableDefinition");return r&&t(r,i),!0}}var PU=["FunctionDeclaration"],kU={FunctionDeclaration:Xa("function"),ClassDeclaration:Xa("class"),ClassExpression:()=>!0,EnumDeclaration:Xa("constant"),TypeAliasDeclaration:Xa("type"),NamespaceDeclaration:Xa("namespace"),VariableDefinition(i,e){i.matchContext(PU)||e(i,"variable")},TypeDefinition(i,e){e(i,"type")},__proto__:null};function ry(i,e){let t=Kw.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=kU[o.name];if(a&&a(o,s)||iy.has(o.name))return!1}else if(o.to-o.from>8192){for(let a of ry(i,o.node))r.push(a);return!1}}),Kw.set(e,r),r}var Jw=/^[\w$\xa1-\uffff][\w$\d\xa1-\uffff]*$/,ny=["TemplateString","String","RegExp","LineComment","BlockComment","VariableDefinition","TypeDefinition","Label","PropertyDefinition","PropertyName","PrivatePropertyDefinition","PrivatePropertyName","JSXText","JSXAttributeValue","JSXOpenTag","JSXCloseTag","JSXSelfClosingTag",".","?."];function TU(i){let e=_e(i.state).resolveInner(i.pos,-1);if(ny.indexOf(e.name)>-1)return null;let t=e.name=="VariableName"||e.to-e.from<20&&Jw.test(i.state.sliceDoc(e.from,e.to));if(!t&&!i.explicit)return null;let r=[];for(let n=e;n;n=n.parent)iy.has(n.name)&&(r=r.concat(ry(i.state.doc,n)));return{options:r,from:t?e.from:i.pos,validFor:Jw}}var ji=vt.define({name:"javascript",parser:Hw.configure({props:[wi.add({IfStatement:ar({except:/^\s*({|else\b)/}),TryStatement:ar({except:/^\s*({|catch\b|finally\b)/}),LabeledStatement:jc,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:Vc({closing:"}"}),ArrowFunction:i=>i.baseIndent+i.unit,"TemplateString BlockComment":()=>null,"Statement Property":ar({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}}),Rt.add({"Block ClassBody SwitchBody EnumBody ObjectExpression ArrayExpression ObjectType":yi,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:"$"}}),sy={test:i=>/^JSX/.test(i.name),facet:Rs({commentTokens:{block:{open:"{/*",close:"*/}"}}})},vm=ji.configure({dialect:"ts"},"typescript"),Qm=ji.configure({dialect:"jsx",props:[Lc.add(i=>i.isTop?[sy]:void 0)]}),wm=ji.configure({dialect:"jsx ts",props:[Lc.add(i=>i.isTop?[sy]:void 0)]},"typescript"),oy=i=>({label:i,type:"keyword"}),ay="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(oy),XU=ay.concat(["declare","implements","private","protected","public"].map(oy));function ly(i={}){let e=i.jsx?i.typescript?wm:Qm:i.typescript?vm:ji,t=i.typescript?$U.concat(XU):ty.concat(ay);return new Ee(e,[ji.data.of({autocomplete:OS(ny,hS(t))}),ji.data.of({autocomplete:TU}),i.jsx?CU:[]])}function _U(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 ey(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 RU=typeof navigator=="object"&&/Android\b/.test(navigator.userAgent),CU=W.inputHandler.of((i,e,t,r,n)=>{if((RU?i.composing:i.compositionStarted)||i.state.readOnly||e!=t||r!=">"&&r!="/"||!ji.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){Ey.lastIndex=0;let c=Ey.exec(l);if(c){let h=o+c.index+c[0].length;t.push(F.widget({widget:new Ym(c[0],e),side:-1}).range(h))}o+=l.length+1}}return F.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=zy(r,t)}update(r){e=r.view,(r.docChanged||r.viewportChanged)&&(this.decorations=zy(r.view,t))}},{decorations:r=>r.decorations})}var Mm=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 uA(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 u=O[h.group!=null?h.group:O.length-1];if(!u)continue;let f=h.suffix?u+h.suffix:u,p=Math.min(o+O.index+O[0].length,n.length),m=n.lineAt(p),S=m.number+":"+f;s.has(S)||(s.add(S),r.push(F.widget({widget:new Mm(f,!!h.system,t),side:1}).range(m.to)))}}}return F.set(r,!0)}function My(i,e){function t(r){let n=i();return!n||!n.length?F.none:uA(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 Bs=window.matchMedia&&window.matchMedia("only screen and (max-width: 760px)").matches;function hr(i,e){var t=$(document.createElement("div"));return i&&t.appendTo(i),e&&t.addClass(e),t}function fA(i){return we.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(),u=i.input(O);t.push({from:o,to:a,insert:u}),u!==O&&(r=!0)}),!r)return e;let n=e.annotation(Ge.userEvent),s=e.annotation(Ge.addToHistory);return{changes:t,selection:e.selection,effects:e.effects,scrollIntoView:e.scrollIntoView,annotations:[...n!=null?[Ge.userEvent.of(n)]:[],...s!=null?[Ge.addToHistory.of(s)]:[]]}})}var Lm=new bt;function Ly(i){return Lm.reconfigure(fA(i))}var Wy=ae.define(),Vy=ae.define(),jy=ae.define(),qy=ae.define(),Dy=ae.define(),Iy=ae.define(),Fy=ae.define(),Vm=ae.define(),By=ae.define(),Ny=Te.define({create(){return pe.empty},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(Wy)){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(ve(o,4)).range(a))}i=pe.of(n,!0)}return i}}),Gy=Te.define({create(){return pe.empty},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(Vy)){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(o).range(a))}i=pe.of(n,!0)}return i}}),Hy=Te.define({create(){return pe.empty},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(jy)){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 jh(o).range(a))}i=pe.of(n,!0)}return i}}),Ky=Te.define({create(){return pe.empty},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(Dy)){let r=[],n=t.value.filter(s=>s.line>=1&&s.line<=e.state.doc.lines).sort((s,o)=>s.line-o.line);for(let s of n){let o=e.state.doc.line(s.line).from;r.push((s.enabled?pA:mA).range(o))}i=pe.of(r,!0)}return i}}),Wm=Te.define({create(){return pe.empty},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(Iy)){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 Dh(s,o).range(a))}i=pe.of(n,!0)}return i}}),Jy=Te.define({create(){return pe.empty},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(Fy))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(e$.range(n))}}return i}}),Wh=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}},Vh=class extends nt{constructor(t){super();this.bytes=t}toDOM(){return document.createTextNode(this.bytes)}eq(t){return this.bytes==t.bytes}},jh=class extends nt{constructor(t){super();this.clock=t}toDOM(){return document.createTextNode(this.clock)}eq(t){return this.clock==t.clock}},dA=new class extends nt{toDOM(){let i=document.createElement("span");return i.textContent="\u25CF",i.style.color="transparent",i.style.cursor="pointer",i.addE Line truncated
color: #ff6666;
background-color: #330000;
padding: 4px 8px;
margin: 2px 0;
border-left: 3px solid #ff0000;
font-family: monospace;
`,t}},yA=Te.define({create(){return F.none},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(Dn.showMessage)){if(t.value===null||!t.value)return F.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 Ua&&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(F.widget({widget:new Ua(n.get(a)),block:!0,side:1}).range(l.to))}catch(l){}}),F.set(r,!0)}}return i},provide:i=>W.decorations.from(i)}),qm=class extends at{constructor(t){super();this.value=t}toDOM(){let t=document.createElement("div");return t.textContent=`${this.value}`,t.style.cssText=`
`,t}},yA=Te.define({create(){return F.none},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(In.showMessage)){if(t.value===null||!t.value)return F.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 Ua&&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(F.widget({widget:new Ua(n.get(a)),block:!0,side:1}).range(l.to))}catch(l){}}),F.set(r,!0)}}return i},provide:i=>W.decorations.from(i)}),jm=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}},s$=ae.define(),$A=Te.define({create(){return F.none},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(s$)){if(t.value===null||!t.value)return F.none;let r=e.state.doc.lineAt(t.value.range.to);return F.set([F.widget({widget:new qm(t.value.val),block:!0,side:1}).range(r.to)])}return i},provide:i=>W.decorations.from(i)}),o$=ae.define(),PA=F.mark({attributes:{class:"cm-error-span"}}),kA=Te.define({create(){return F.none},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(o$)){if(t.value===null)return F.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(PA.range(o,a))}catch(s){}return F.set(r,!0)}return i},provide:i=>W.decorations.from(i)}),a$=ae.define(),TA=F.line({attributes:{class:"highlight-lines"}}),XA=Te.define({create(){return F.none},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(a$)){if(t.value===null)return F.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(TA.range(a.from))}catch(a){}return F.set(s)}return i!==F.none&&(e.docChanged||e.selection)?F.none:i},provide:i=>W.decorations.from(i)}),l$={field:yA,widget:Ua},Aa={effect:r$,decoration:n$,field:wA},Gh={effect:s$,field:$A},Hh={effect:o$,field:kA},Kh={effect:a$,field:XA},c$=ae.define(),_A=F.line({attributes:{class:"cm-traced-line"}}),RA=Te.define({create(){return F.none},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(c$)){let r=[];for(let n of t.value)try{let s=e.state.doc.line(n);r.push(_A.range(s.from))}catch(s){}return F.set(r,!0)}return i},provide:i=>W.decorations.from(i)}),Jh={effect:c$,field:RA};var CA=[...au(lv,ou),{key:"Mod-Shift-Backspace",run:eh}],u$=au(bQ,ou),Gs=64,f$=ae.define(),d$=ae.define(),Dm=Te.define({create(){return new Map},update(i,e){let t=i;for(let r of e.effects)if(r.is(d$))t=new Map;else if(r.is(f$)){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}}),ZA=200,Im={default:{theme:Lh},6502:{isAsm:!0},z80:{isAsm:!0},jsasm:{isAsm:!0},gas:{isAsm:!0},vasm:{isAsm:!0},inform6:{theme:Mh},dialog:{theme:Mh,lineWrap:!0},markdown:{lineWrap:!0},fastbasic:{noGutters:!0},basic:{noGutters:!0},ecs:{theme:Lh}},p$={input:null};function m$(i){p$.input=i?e=>e.toUpperCase():null}var Ea=class Ea{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=K.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:Wy(p$)}),this.syncBreakpoints(),K.getToolForFilename(this.path).startsWith("remote:")&&(this.refreshDelayMsec=1e3),t}setVisible(e){e?(this.editor.focus(),Ea.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",kh),t("mod+g","Find Next",Ds),t("mod+d","Next Occurrence",gp),t("mod+shift+backspace","Delete Line",eh),t("mod+/","Toggle Comment",Ld),t("mod+z","Undo",la),t("mod+shift+z","Redo",Us)]}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:Jh.effect.of([])})}setTracingEnabled(e){Ea.tracingEnabled=e,e?this.startTracing():this.stopTracing()}newEditor(e,t,r){var n=Im[this.mode]||Im.default,s=r||n.isAsm,o=!!n.lineWrap,a=n.theme||Im.default.theme,l=n.useLineNumbers&&!Bs;ie.embed&&(l=!1,s=!1);let c=n.noGutters||Bs;var h;let O=Um[this.mode];O?h=O.language:(console.warn("Unknown mode: "+this.mode),h=null),this.editor=new W({parent:e,doc:t,extensions:[s?[]:Qi.of(" "),s?wd.of((u,f)=>{let p=u.state.doc.lineAt(f).number;if(p>=0){let m=u.state.doc.line(p);if(m.text.trim())return u.lineIndent(m.from)}return 0}):[],...s?[Gt.of(dv(()=>Ys().tabsToSpaces))]:[],...bv(Ys()),Gt.of(CA),l?Pc():[],CS(),Gt.of(AS),Hx(),lx(),we.allowMultipleSelections.of(!0),Qc(),Fx(),iS(),yc(),$c(),wc(),gx(),Ph(),bp({top:!0}),Gt.of(u$),h||[],a,Am,o?W.lineWrapping:[],Aa.field,c?[]:[Fh.field,Fh.gutter],s&&!c?[Za.field,Za.gutter,Bh.field,Bh.gutter]:[],Nh.field,i$.gutter,W.updateListener.of(u=>{for(let f of u.transactions.flatMap(p=>p.effects))if(f.is(Nh.requestToggle)&&Qt.toggleSourceLine(this.path,f.value),f.is(Ns.runToLine)){let p=f.value;if(this.sourcefile&&this.sourcefile.line2offset){let m=this.sourcefile.line2offset.get(p);m>=0&&Ya([m])}}}),Dn.field,l$.field,Hh.field,Ns.field,Ns.gutter,Kh.field,Jh.field,Dm,My(u=>{window.location.hash="asseteditor/"+encodeURIComponent(this.path)+"/"+u}),ie.embed?[]:Ly(()=>{var u=K&&K.getToolForFilename(this.path),f=K&&K.platfo 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:[Kh.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:[Kh.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,ZA);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:[Dn.set.of(t),Hh.effect.of(r.length>0?r:null)]})}clearErrors(){this.dirtylisting=!0,this.editor.dispatch({effects:[Dn.set.of(new Map),Dn.showMessage.of(null),Hh.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,ve(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:[Fh.set.of(t),Za.set.of(r),Bh.set.of(n)]})}setTimingResult(e){if(this.sourcefile!=null){var t=new Map;for(let[o,a]of this.sourcefile.line2offset){let 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(o,s)}}this.editor.dispatch({effects:[Za.set.of(t)]})}}setCurrentLine(e,t){var r=n=>{this.editor.dispatch({effects:[Ns.set.of(n.line),Aa.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:[Ns.set.of(null),Aa.effect.of(null)]})}getActiveLine(){if(this.sourcefile){var e=wt&&wt.c;if(!e&&v.getCPUState&&!v.isRunning()&&(e=v.getCPUState()),e){var t=e&&(e.EPC||e.PC),r=this.sourcefile.findLineForOffset(t,Gs);return r}}}refreshDebugState(e){var t=this.getActiveLine();!e&&(t===this.currentDebugLine||!t&&!this.currentDebugLine)||this.setCurrentLine(t,e)}refreshListing(){var e=K.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,Gs);s&&t.add(s.line)}}e.clear(),this.editor.dispatch({effects:Jh.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.get(e);if(t>=0)return t;e--}return-1}undoStep(){la(this.editor)}redoStep(){Us(this.editor)}syncBreakpoints(){let e=Qt.getSourceBreakpointsForFile(this.path).map(t=>({line:t.line,enabled:t.enabled}));this.editor.dispatch({effects:Nh.setAll.of(e)})}};Ea.tracingEnabled=!1;var ei=Ea,Fm=1024,$r=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:[yc(),$c(),we.allowMultipleSelections.of(!0),Qc(),wc(),Ph(),Zy,Mh,Aa.field,we.tabSize.of(8),we.readOnly.of(!0)]})}refresh(e,t){let r=wt||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,u)=>{let f="",p=0;for(;p<u;){let m=O+p|0,S=v.disassemble(m,v.readAddress.bind(v)),w="",Z="";for(let k=0;k<S.nbytes;k++)w+=ve(v.readAddress(m+k));for(;w.length<14;)w+=" ";let R=S.line;if(a&&S.isaddr&&(R=R.replace(/([^#])[$]([0-9A-F]+)/,(k,...P)=>{let C=parseInt(P[1],16),z=a[C];return z?P[0]+z:(z=a[C-1],z?P[0]+z+"+1":k)})),a){let k=a[m];k&&(Z="; "+k)}let A=ve(m,4)+" "+Qo(w,14)+" "+Qo(R Line truncated
`;f+=A,m==n&&(o=s),s++,p+=S.nbytes||1}return f};var c=n<0?n-Fm:Math.max(0,n-Fm);let h=l(c,n-c)+l(n,Fm);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=ve(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}},eO=class extends $r{constructor(e){super(),this.path=e}refreshListing(){var e=K.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=wt||v.saveState(),n=r.c?r.c.EPC||r.c.PC:0;if(n>=0&&this.assemblyfile){var s=this.assemblyfile.findLineForOffset(n,Gs);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"})})}}}}}goToAddress(e){this.refreshListing();let t=this.assemblyfile&&this.assemblyfile.findLineForOffset(e,Gs);if(t){let r=this.disasmview.state.doc.line(t.line);this.disasmview.dispatch({selection:{anchor:r.from,head:r.from},effects:W.scrollIntoView(r.from,{y:"center"})})}this.disasmview.focus()}};function g$(i){let e=[i];try{var t=wo(K.mainPath);t.length>0&&t!="local"&&e.push(t+"/"+i)}catch(s){}for(var r of e){var n=K&&K.getFile(r);if(typeof n=="string")return r}return null}function h$(i){for(var e of Dg(i))if(e.editorStyle){var t=Cy(e.editorStyle);if(t)return t}return null}var Bm=new Map;function UA(i){let e=K.getToolForFilename(K.mainPath),t=kl(e,K.platform_id),r=Pl(e,K.platform_id);if(!t||!r.length)return Promise.resolve(null);let n=t+":"+i;return Bm.has(n)||Bm.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 K.queryWorker(a),c=l&&l.output;if(c instanceof Uint8Array&&c.length>0)return new TextDecoder().decode(c)}return null})()),Bm.get(n)}var en=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=h$(this.fn||this.currentPath||"")||ga();return this.view=new W({parent:t,extensions:[yc(),$c(),we.allowMultipleSelections.of(!0),Qc(),wc(),Ph(),bp({top:!0}),Gt.of(u$),this.languageCompartment.of(r),Lh,Am,we.readOnly.of(!0)]}),this.refresh(!1),t}setVisible(e){e&&this.refresh(!1)}setHeaderText(e){var t=h$(this.currentPath||this.fn||"")||ga();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=g$(e);if(t){this.currentPath=t,this.setHeaderText(K.getFile(t));return}var r=await UA(e);if(this.requestedFn===e){if(r!=null){this.currentPath=e,this.setHeaderText(r);return}this.currentPath=e,this.setHeaderText("// "+e+` was not found.
`,t.className="cm-line",t}},n$=ae.define(),$A=Te.define({create(){return F.none},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(n$)){if(t.value===null||!t.value)return F.none;let r=e.state.doc.lineAt(t.value.range.to);return F.set([F.widget({widget:new jm(t.value.val),block:!0,side:1}).range(r.to)])}return i},provide:i=>W.decorations.from(i)}),s$=ae.define(),PA=F.mark({attributes:{class:"cm-error-span"}}),kA=Te.define({create(){return F.none},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(s$)){if(t.value===null)return F.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(PA.range(o,a))}catch(s){}return F.set(r,!0)}return i},provide:i=>W.decorations.from(i)}),o$=ae.define(),TA=F.line({attributes:{class:"highlight-lines"}}),XA=Te.define({create(){return F.none},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(o$)){if(t.value===null)return F.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(TA.range(a.from))}catch(a){}return F.set(s)}return i!==F.none&&(e.docChanged||e.selection)?F.none:i},provide:i=>W.decorations.from(i)}),a$={field:yA,widget:Ua},Aa={effect:i$,decoration:r$,field:wA},Nh={effect:n$,field:$A},Gh={effect:s$,field:kA},Hh={effect:o$,field:XA},l$=ae.define(),_A=F.line({attributes:{class:"cm-traced-line"}}),RA=Te.define({create(){return F.none},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(l$)){let r=[];for(let n of t.value)try{let s=e.state.doc.line(n);r.push(_A.range(s.from))}catch(s){}return F.set(r,!0)}return i},provide:i=>W.decorations.from(i)}),Kh={effect:l$,field:RA};var CA=[...ou(av,su),{key:"Mod-Shift-Backspace",run:Wd}],O$=ou(gQ,su),Gs=64,u$=ae.define(),f$=ae.define(),qm=Te.define({create(){return new Map},update(i,e){let t=i;for(let r of e.effects)if(r.is(f$))t=new Map;else if(r.is(u$)){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}}),ZA=200,Dm={default:{theme:Mh},6502:{isAsm:!0},z80:{isAsm:!0},jsasm:{isAsm:!0},gas:{isAsm:!0},vasm:{isAsm:!0},inform6:{theme:Yh},dialog:{theme:Yh,lineWrap:!0},markdown:{lineWrap:!0},fastbasic:{noGutters:!0},basic:{noGutters:!0},ecs:{theme:Mh}},d$={input:null};function p$(i){d$.input=i?e=>e.toUpperCase():null}var Ea=class Ea{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=K.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:Ly(d$)}),this.syncBreakpoints(),K.getToolForFilename(this.path).startsWith("remote:")&&(this.refreshDelayMsec=1e3),t}setVisible(e){e?(this.editor.focus(),Ea.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",Ph),t("mod+g","Find Next",Ds),t("mod+d","Next Occurrence",mp),t("mod+z","Undo",la),t("mod+shift+z","Redo",Us)]}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:Kh.effect.of([])})}setTracingEnabled(e){Ea.tracingEnabled=e,e?this.startTracing():this.stopTracing()}newEditor(e,t,r){var n=Dm[this.mode]||Dm.default,s=r||n.isAsm,o=!!n.lineWrap,a=n.theme||Dm.default.theme,l=n.useLineNumbers&&!Bs;ie.embed&&(l=!1,s=!1);let c=n.noGutters||Bs;var h;let O=Zm[this.mode];O?h=O.language:(console.warn("Unknown mode: "+this.mode),h=null),this.editor=new W({parent:e,doc:t,extensions:[s?[]:Qi.of(" "),s?Qd.of((u,f)=>{let p=u.state.doc.lineAt(f).number;if(p>=0){let m=u.state.doc.line(p);if(m.text.trim())return u.lineIndent(m.from)}return 0}):[],...s?[Gt.of(fv(()=>Ys().tabsToSpaces))]:[],...gv(Ys()),Gt.of(CA),l?Pc():[],RS(),Gt.of(US),Gx(),ax(),we.allowMultipleSelections.of(!0),Qc(),Ix(),tS(),yc(),$c(),wc(),mx(),$h(),gp({top:!0}),Gt.of(O$),h||[],a,Um,o?W.lineWrapping:[],Aa.field,c?[]:[Ih.field,Ih.gutter],s&&!c?[Za.field,Za.gutter,Fh.field,Fh.gutter]:[],Bh.field,t$.gutter,W.updateListener.of(u=>{for(let f of u.transactions.flatMap(p=>p.effects))if(f.is(Bh.requestToggle)&&Qt.toggleSourceLine(this.path,f.value),f.is(Ns.runToLine)){let p=f.value;if(this.sourcefile&&this.sourcefile.line2offset){let m=this.sourcefile.line2offset.get(p);m>=0&&Ya([m])}}}),In.field,a$.field,Gh.field,Ns.field,Ns.gutter,Hh.field,Kh.field,qm,Yy(u=>{window.location.hash="asseteditor/"+encodeURIComponent(this.path)+"/"+u}),ie.embed?[]:My(()=>{var u=K&&K.getToolForFilename(this.path),f=K&&K.platform_id;return[...yl(u,f),...$l(u,f),...jg(u)]},(u,f)=>{if(!f){var p=m$(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:[Hh.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:[Hh.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,ZA);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:[In.set.of(t),Gh.effect.of(r.length>0?r:null)]})}clearErrors(){this.dirtylisting=!0,this.editor.dispatch({effects:[In.set.of(new Map),In.showMessage.of(null),Gh.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,ve(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:[Ih.set.of(t),Za.set.of(r),Fh.set.of(n)]})}setTimingResult(e){if(this.sourcefile!=null){var t=new Map;for(let[o,a]of this.sourcefile.line2offset){let 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(o,s)}}this.editor.dispatch({effects:[Za.set.of(t)]})}}setCurrentLine(e,t){var r=n=>{this.editor.dispatch({effects:[Ns.set.of(n.line),Aa.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:[Ns.set.of(null),Aa.effect.of(null)]})}getActiveLine(){if(this.sourcefile){var e=wt&&wt.c;if(!e&&v.getCPUState&&!v.isRunning()&&(e=v.getCPUState()),e){var t=e&&(e.EPC||e.PC),r=this.sourcefile.findLineForOffset(t,Gs);return r}}}refreshDebugState(e){var t=this.getActiveLine();!e&&(t===this.currentDebugLine||!t&&!this.currentDebugLine)||this.setCurrentLine(t,e)}refreshListing(){var e=K.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,Gs);s&&t.add(s.line)}}e.clear(),this.editor.dispatch({effects:Kh.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.get(e);if(t>=0)return t;e--}return-1}undoStep(){la(this.editor)}redoStep(){Us(this.editor)}syncBreakpoints(){let e=Qt.getSourceBreakpointsForFile(this.path).map(t=>({line:t.line,enabled:t.enabled}));this.editor.dispatch({effects:Bh.setAll.of(e)})}};Ea.tracingEnabled=!1;var ei=Ea,Im=1024,$r=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:[yc(),$c(),we.allowMultipleSelections.of(!0),Qc(),wc(),$h(),Cy,Yh,Aa.field,we.tabSize.of(8),we.readOnly.of(!0)]})}refresh(e,t){let r=wt||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,u)=>{let f="",p=0;for(;p<u;){let m=O+p|0,S=v.disassemble(m,v.readAddress.bind(v)),w="",Z="";for(let k=0;k<S.nbytes;k++)w+=ve(v.readAddress(m+k));for(;w.length<14;)w+=" ";let R=S.line;if(a&&S.isaddr&&(R=R.replace(/([^#])[$]([0-9A-F]+)/,(k,...P)=>{let C=parseInt(P[1],16),z=a[C];return z?P[0]+z:(z=a[C-1],z?P[0]+z+"+1":k)})),a){let k=a[m];k&&(Z="; "+k)}let A=ve(m,4)+" "+Qo(w,14)+" "+Qo(R Line truncated
`;f+=A,m==n&&(o=s),s++,p+=S.nbytes||1}return f};var c=n<0?n-Im:Math.max(0,n-Im);let h=l(c,n-c)+l(n,Im);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=ve(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}},Jh=class extends $r{constructor(e){super(),this.path=e}refreshListing(){var e=K.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=wt||v.saveState(),n=r.c?r.c.EPC||r.c.PC:0;if(n>=0&&this.assemblyfile){var s=this.assemblyfile.findLineForOffset(n,Gs);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"})})}}}}}goToAddress(e){this.refreshListing();let t=this.assemblyfile&&this.assemblyfile.findLineForOffset(e,Gs);if(t){let r=this.disasmview.state.doc.line(t.line);this.disasmview.dispatch({selection:{anchor:r.from,head:r.from},effects:W.scrollIntoView(r.from,{y:"center"})})}this.disasmview.focus()}};function m$(i){let e=[i];try{var t=wo(K.mainPath);t.length>0&&t!="local"&&e.push(t+"/"+i)}catch(s){}for(var r of e){var n=K&&K.getFile(r);if(typeof n=="string")return r}return null}function c$(i){for(var e of qg(i))if(e.editorStyle){var t=Ry(e.editorStyle);if(t)return t}return null}var Fm=new Map;function UA(i){let e=K.getToolForFilename(K.mainPath),t=kl(e,K.platform_id),r=Pl(e,K.platform_id);if(!t||!r.length)return Promise.resolve(null);let n=t+":"+i;return Fm.has(n)||Fm.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 K.queryWorker(a),c=l&&l.output;if(c instanceof Uint8Array&&c.length>0)return new TextDecoder().decode(c)}return null})()),Fm.get(n)}var en=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=c$(this.fn||this.currentPath||"")||ga();return this.view=new W({parent:t,extensions:[yc(),$c(),we.allowMultipleSelections.of(!0),Qc(),wc(),$h(),gp({top:!0}),Gt.of(O$),this.languageCompartment.of(r),Mh,Um,we.readOnly.of(!0)]}),this.refresh(!1),t}setVisible(e){e&&this.refresh(!1)}setHeaderText(e){var t=c$(this.currentPath||this.fn||"")||ga();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=m$(e);if(t){this.currentPath=t,this.setHeaderText(K.getFile(t));return}var r=await UA(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()}}};var In=class{constructor(e){var t=document.createElement("div");t.setAttribute("class","memdump"),e.appendChild(t),this.maindiv=t}create(e,t,r){this.getLineAt=r,this.memorylist=new wl({w:$(e).width(),h:$(e).height(),itemHeight:Nm(),totalRows:t,generatorFn:n=>{var s=r(n),o=document.createElement("div");return o.appendChild(document.createTextNode(s.text)),s.clas!=null&&(o.className=s.clas),o}}),$(this.maindiv).append(this.memorylist.container)}refresh(){this.memorylist&&$(this.maindiv).find("[data-index]").each((e,t)=>{var r=t,n=parseInt(r.getAttribute("data-index")),s=r.innerText,o=this.getLineAt(n),a=o.text;if(s!=a&&(r.innerText=a,o.clas!=null&&!r.classList.contains(o.clas))){var l=Array.from(r.classList);l.forEach(c=>r.classList.remove(c)),r.classList.add("vrow"),r.classList.add(o.clas)}})}};function Nm(){return $("#booksMenuButton").first().height()}function b$(i){return i.endsWith("_SIZE__")||i.endsWith("_LAST__")||i.endsWith("STACKSIZE__")||i.endsWith("FILEOFFS__")||i.startsWith("l__")||i.startsWith("s__")||i.startsWith(".__.")}var tn=class{constructor(){this.recreateOnResize=!0;this.hibits=0;this.totalRows=5120;this.gotoRow=-1}createDiv(e){var t=document.createElement("div");return t.setAttribute("class","memdump"),e.appendChild(t),this.showMemoryWindow(e,t),this.maindiv=t}showMemoryWindow(e,t){this.memorylist=new wl({w:$(e).width(),h:$(e).height(),itemHeight:Nm(),totalRows:this.totalRows,generatorFn:n=>{var s=this.getMemoryLineAt(n),o=document.createElement("div");if(this.dumplines){var a=this.dumplines[n];a&&o.classList.add("seg_"+this.getMemorySegment(this.dumplines[n].a|this.hibits))}return n==this.gotoRow&&o.classList.add("goto_line"),o.appendChild(document.createTextNode(s)),o}}),$(t).append(this.memorylist.container),this.tick();let r=fa();r&&this.dumplines&&this.scrollToAddress(r.data_start)}scrollToAddress(e){this.dumplines&&(this.hibits=e&4294901760,this.memorylist.scrollToItem(this.findMemoryWindowLine(e&65535)))}goToAddress(e){this.hibits=e&4294901760;var t=this.getDumpLines(),r;if(t&&t.length?r=this.findMemoryWindowLine(e&65535):r=(e&65535)>>4,r!==void 0){if(this.gotoRow=r,this.memorylist){var n=this.memorylist.container,s=r*this.memorylist.itemHeight-(n.clientHeight-this.memorylist.itemHeight)/2;n.scrollTop=Math.max(0,s)}this.tick()}}refresh(){this.dumplines=null,this.tick()}tick(){this.memorylist&&$(this.maindiv).find("[data-index]").each((e,t)=>{var r=$(t),n=parseInt(r.attr("data-index")),s=r.text(),o=this.getMemoryLineAt(n);s!=o&&r.text(o),r.toggleClass("goto_line",n==this.gotoRow)})}getMemoryLineAt(e){var t=e*16,r=0,n=16,s;if(this.getDumpLines()){var o=this.dumplines[e];if(o)t=o.a&65520,r=o.a-t,n=r+o.l,s=o.s;else return"."}for(var a=ve(t+r,4)+" ",l=0;l<r;l++)a+=" ";r>8&&(a+=" ");for(var l=r;l<n;l++){var c=this.readAddress(t+l|this.hibits);l==8&&(a+=" "),a+=" "+(typeof c=="number"?ve(c,2):"??")}for(var l=n;l<16;l++)a+=" ";return s&&(a+=" "+s),a}readAddress(e){return v.readAddress(e)}getDumpLineAt(e){var t=this.dumplines[e];if(t)return t.a+" "+t.s}getDumpLines(){var e=v.debugSymbols&&v.debugSymbols.addr2symbol||{};if(this.dumplines==null){this.dumplines=[];var t=0,r;for(let a of Object.keys(e)){var n=parseInt(a),s=e[n|this.hibits];if(r)for(b$(r)&&(r="");t<n&&this.dumplines.length<65536;){var o=t+16&1048560;o>n&&(o=n),this.dumplines.push({a:t,l:o-t,s:r}),t=o}r=s}}return this.dumplines}getMemorySegment(e){let t=fa();if(t){if(e>=t.data_start&&e<t.data_start+t.data_size)return v.getSP&&e>=v.getSP()-15?"stack":"data";if(e>=t.code_start&&e<t.code_start+(t.code_size||t.rom_size))return"code"}var r=K.segments;if(r){for(var n of r)if(e>=n.start&&e<n.start+n.size){if(n.type=="rom")return"code";if(n.type=="ram")return"data";if(n.type=="io")return"io"}}return"unknown"}findMemoryWindowLine(e){for(var t=0;t<this.dumplines.length;t++)if(this.dumplines[t].a>=e)return t}},tO=class extends tn{constructor(){super(...arguments);this.totalRows=2048}readAddress(t){return v.readVRAMAddress(t)}getMemorySegment(t){return"video"}getDumpLines(){return null}},Ma=class{constructor(e,t){this.recreateOnResize=!0;this.path=e,this.data=t}populateVlist(){$(this.vlist.maindiv).empty(),this.vlist.create(this.parent,this.data.length+15>>4,this.getMemoryLineAt.bind(this))}createDiv(e){return this.parent=e,this.vlist=new In(this.parent),this.populateVlist(),this.vlist.maindiv}setData(e){this.data=e,this.populateVlist()}getMemoryLineAt(e){for(var t=e*16,r=0,n=16,s=ve(t+r,4)+" ",o=0;o<r;o++)s+=" ";r>8&&(s+=" ");for(var o=r;o<n;o++){var a=this.data[t+o];o==8&&(s+=" "),s+=" "+(a>=0?ve(a,2):" ")}return{text:s}}refresh(){this.vlist.refresh()}getPath(){return this.path}},iO=class{createDiv(e){return this.maindiv=cr(e,"vert Line truncated
// 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()}}};var Fn=class{constructor(e){var t=document.createElement("div");t.setAttribute("class","memdump"),e.appendChild(t),this.maindiv=t}create(e,t,r){this.getLineAt=r,this.memorylist=new wl({w:$(e).width(),h:$(e).height(),itemHeight:Bm(),totalRows:t,generatorFn:n=>{var s=r(n),o=document.createElement("div");return o.appendChild(document.createTextNode(s.text)),s.clas!=null&&(o.className=s.clas),o}}),$(this.maindiv).append(this.memorylist.container)}refresh(){this.memorylist&&$(this.maindiv).find("[data-index]").each((e,t)=>{var r=t,n=parseInt(r.getAttribute("data-index")),s=r.innerText,o=this.getLineAt(n),a=o.text;if(s!=a&&(r.innerText=a,o.clas!=null&&!r.classList.contains(o.clas))){var l=Array.from(r.classList);l.forEach(c=>r.classList.remove(c)),r.classList.add("vrow"),r.classList.add(o.clas)}})}};function Bm(){return $("#booksMenuButton").first().height()}function g$(i){return i.endsWith("_SIZE__")||i.endsWith("_LAST__")||i.endsWith("STACKSIZE__")||i.endsWith("FILEOFFS__")||i.startsWith("l__")||i.startsWith("s__")||i.startsWith(".__.")}var tn=class{constructor(){this.recreateOnResize=!0;this.hibits=0;this.totalRows=5120;this.gotoRow=-1}createDiv(e){var t=document.createElement("div");return t.setAttribute("class","memdump"),e.appendChild(t),this.showMemoryWindow(e,t),this.maindiv=t}showMemoryWindow(e,t){this.memorylist=new wl({w:$(e).width(),h:$(e).height(),itemHeight:Bm(),totalRows:this.totalRows,generatorFn:n=>{var s=this.getMemoryLineAt(n),o=document.createElement("div");if(this.dumplines){var a=this.dumplines[n];a&&o.classList.add("seg_"+this.getMemorySegment(this.dumplines[n].a|this.hibits))}return n==this.gotoRow&&o.classList.add("goto_line"),o.appendChild(document.createTextNode(s)),o}}),$(t).append(this.memorylist.container),this.tick();let r=fa();r&&this.dumplines&&this.scrollToAddress(r.data_start)}scrollToAddress(e){this.dumplines&&(this.hibits=e&4294901760,this.memorylist.scrollToItem(this.findMemoryWindowLine(e&65535)))}goToAddress(e){this.hibits=e&4294901760;var t=this.getDumpLines(),r;if(t&&t.length?r=this.findMemoryWindowLine(e&65535):r=(e&65535)>>4,r!==void 0){if(this.gotoRow=r,this.memorylist){var n=this.memorylist.container,s=r*this.memorylist.itemHeight-(n.clientHeight-this.memorylist.itemHeight)/2;n.scrollTop=Math.max(0,s)}this.tick()}}refresh(){this.dumplines=null,this.tick()}tick(){this.memorylist&&$(this.maindiv).find("[data-index]").each((e,t)=>{var r=$(t),n=parseInt(r.attr("data-index")),s=r.text(),o=this.getMemoryLineAt(n);s!=o&&r.text(o),r.toggleClass("goto_line",n==this.gotoRow)})}getMemoryLineAt(e){var t=e*16,r=0,n=16,s;if(this.getDumpLines()){var o=this.dumplines[e];if(o)t=o.a&65520,r=o.a-t,n=r+o.l,s=o.s;else return"."}for(var a=ve(t+r,4)+" ",l=0;l<r;l++)a+=" ";r>8&&(a+=" ");for(var l=r;l<n;l++){var c=this.readAddress(t+l|this.hibits);l==8&&(a+=" "),a+=" "+(typeof c=="number"?ve(c,2):"??")}for(var l=n;l<16;l++)a+=" ";return s&&(a+=" "+s),a}readAddress(e){return v.readAddress(e)}getDumpLineAt(e){var t=this.dumplines[e];if(t)return t.a+" "+t.s}getDumpLines(){var e=v.debugSymbols&&v.debugSymbols.addr2symbol||{};if(this.dumplines==null){this.dumplines=[];var t=0,r;for(let a of Object.keys(e)){var n=parseInt(a),s=e[n|this.hibits];if(r)for(g$(r)&&(r="");t<n&&this.dumplines.length<65536;){var o=t+16&1048560;o>n&&(o=n),this.dumplines.push({a:t,l:o-t,s:r}),t=o}r=s}}return this.dumplines}getMemorySegment(e){let t=fa();if(t){if(e>=t.data_start&&e<t.data_start+t.data_size)return v.getSP&&e>=v.getSP()-15?"stack":"data";if(e>=t.code_start&&e<t.code_start+(t.code_size||t.rom_size))return"code"}var r=K.segments;if(r){for(var n of r)if(e>=n.start&&e<n.start+n.size){if(n.type=="rom")return"code";if(n.type=="ram")return"data";if(n.type=="io")return"io"}}return"unknown"}findMemoryWindowLine(e){for(var t=0;t<this.dumplines.length;t++)if(this.dumplines[t].a>=e)return t}},eO=class extends tn{constructor(){super(...arguments);this.totalRows=2048}readAddress(t){return v.readVRAMAddress(t)}getMemorySegment(t){return"video"}getDumpLines(){return null}},Ma=class{constructor(e,t){this.recreateOnResize=!0;this.path=e,this.data=t}populateVlist(){$(this.vlist.maindiv).empty(),this.vlist.create(this.parent,this.data.length+15>>4,this.getMemoryLineAt.bind(this))}createDiv(e){return this.parent=e,this.vlist=new Fn(this.parent),this.populateVlist(),this.vlist.maindiv}setData(e){this.data=e,this.populateVlist()}getMemoryLineAt(e){for(var t=e*16,r=0,n=16,s=ve(t+r,4)+" ",o=0;o<r;o++)s+=" ";r>8&&(s+=" ");for(var o=r;o<n;o++){var a=this.data[t+o];o==8&&(s+=" "),s+=" "+(a>=0?ve(a,2):" ")}return{text:s}}refresh(){this.vlist.refresh()}getPath(){return this.path}},tO=class{createDiv(e){return this.maindiv=hr(e,"vert Line truncated
`+s),n+=`
`+this.opToString(l,c,f))}),"X: "+t+" Y: "+r+" "+n}refresh(){this.tick(),this.datau32.fill(ji)}tick(){super.tick(),this.drawImage()}drawImage(){this.ctx.putImageData(this.imageData,0,0)}clear(){this.datau32.fill(ji)}},nO=class extends rO{createDiv(e){return this.createCanvas(e,256,256)}initCanvas(){super.initCanvas(),this.canvas.onclick=e=>{var t=xl(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&&Ya([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|ji}}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|ji,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,u,f,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+=`
`+this.opToString(l,c,f))}),"X: "+t+" Y: "+r+" "+n}refresh(){this.tick(),this.datau32.fill(qi)}tick(){super.tick(),this.drawImage()}drawImage(){this.ctx.putImageData(this.imageData,0,0)}clear(){this.datau32.fill(qi)}},rO=class extends iO{createDiv(e){return this.createCanvas(e,256,256)}initCanvas(){super.initCanvas(),this.canvas.onclick=e=>{var t=xl(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&&Ya([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|qi}}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|qi,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,u,f,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}},Hm=class extends rO{initCanvas(){super.initCanvas(),this.canvas.onclick=e=>{var t=xl(this.canvas,e),r=Math.floor(t.x),n=Math.floor(t.y),s=this.getOpAtPos(t.x,t.y,16777216);s&&(qi("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|ji;this.datau32[o]|=a}}drawImage(){let e=ji;for(let t=0;t<this.datau32.length;t++)this.datau32[t]==ji?this.datau32[t]=e:e=this.datau32[t];super.drawImage()}},sO=class extends Hm{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]==ji&&(this.datau32[o]=a|ji)}}},oO=class extends rn{constructor(){super(...arguments);this.recreateOnResize=!0}createDiv(t){return this.vlist=new In(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="("+Hi(s.row,4)+", "+Hi(s.col,4)+") "+Qo(s.asm||"",20)+o,o.indexOf("Write ")>=0&&(n="seg_io")}return{text:r,clas:n}}refresh(){this.tick()}tick(){let t=v instanceof su||v instanceof nu;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()}},aO=class extends rn{constructor(){super(...arguments);this.recreateOnResize=!0}createDiv(t){return this.vlist=new In(t),this.vlist.create(t,this.totalScanlines,this.getMemoryLineAt.bind(this)),this.vlist.maindiv}getMemoryLineAt(t){for(var r=Hi(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&ji;if(h==16777216)r+=",";else{var O=ve(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 su||v instanceof nu;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()}},lO=class extends rn{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=>!b$(r))):this.keys=["no symbols defined"],this.vlist=new In(t),this.vlist.create(t,this.keys.length+1,this.getMemoryLineAt.bind(this)),this.vlist.maindiv}getMemoryLineAt(t){if(t==0)return{text:Hi("Symbol",35)+Hi("Reads",8)+Hi("Writes",8)};var r=this.keys[t-1],n=this.dumplines&&this.dumplines[r];function s(l){var c=n[l]|0;return Hi(c?c.toString():"",8)}var o,a;return n!=null?(o=Hi(r,35)+s(301989888)+s(318767104),n[16777216]?a="seg_code":n[335544320]||n[352321536]?a="seg_io":a="seg_data"):(o=Hi(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()}},cO=class{constructor(){this.editingId=null}createDiv(e){return this.maindiv=cr(e,"vertical-scroll bp-view"),this.render(),this.maindiv[0]}refresh(e){this.render()}render(){let e=this.maindiv.empty(),t=Wh(),r=this.editingId!=null?t.find(h=>h.bp.id==this.editingId):null,n=$('<div class="bp-form"/>'),s=$('<input type="text" class="bp-input" spellcheck="false"/>').attr("placeholder","address or symbol (e.g. $8000, mainloop)").val(r&&r.bp.type=="address"?r.bp.target:""),o=$('<input type="text" class="bp-input" spellcheck="false"/>').attr("placeholder","condition (e.g. A == $20 && X < 4)").val(r&&r.bp.condition||""),a=$('<button class="btn btn-default btn-xs bp-submit"/>').text(r?"Save":"Add"),l=$('<button class="btn btn-default btn-xs bp-submit"/>').text("Cancel");l.toggle(r!= Line truncated
PC `+this.addr2str(s)+" "+this.opToString(c,null,p),o[m]=1)}),this.addr2str(r)+n}},Gm=class extends iO{initCanvas(){super.initCanvas(),this.canvas.onclick=e=>{var t=xl(this.canvas,e),r=Math.floor(t.x),n=Math.floor(t.y),s=this.getOpAtPos(t.x,t.y,16777216);s&&(Di("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|qi;this.datau32[o]|=a}}drawImage(){let e=qi;for(let t=0;t<this.datau32.length;t++)this.datau32[t]==qi?this.datau32[t]=e:e=this.datau32[t];super.drawImage()}},nO=class extends Gm{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]==qi&&(this.datau32[o]=a|qi)}}},sO=class extends rn{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="("+Ki(s.row,4)+", "+Ki(s.col,4)+") "+Qo(s.asm||"",20)+o,o.indexOf("Write ")>=0&&(n="seg_io")}return{text:r,clas:n}}refresh(){this.tick()}tick(){let t=v instanceof nu||v instanceof ru;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()}},oO=class extends rn{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=Ki(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&qi;if(h==16777216)r+=",";else{var O=ve(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 nu||v instanceof ru;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()}},aO=class extends rn{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=>!g$(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:Ki("Symbol",35)+Ki("Reads",8)+Ki("Writes",8)};var r=this.keys[t-1],n=this.dumplines&&this.dumplines[r];function s(l){var c=n[l]|0;return Ki(c?c.toString():"",8)}var o,a;return n!=null?(o=Ki(r,35)+s(301989888)+s(318767104),n[16777216]?a="seg_code":n[335544320]||n[352321536]?a="seg_io":a="seg_data"):(o=Ki(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()}},lO=class{constructor(){this.editingId=null}createDiv(e){return this.maindiv=hr(e,"vertical-scroll bp-view"),this.render(),this.maindiv[0]}refresh(e){this.render()}render(){let e=this.maindiv.empty(),t=Lh(),r=this.editingId!=null?t.find(h=>h.bp.id==this.editingId):null,n=$('<div class="bp-form"/>'),s=$('<input type="text" class="bp-input" spellcheck="false"/>').attr("placeholder","address or symbol (e.g. $8000, mainloop)").val(r&&r.bp.type=="address"?r.bp.target:""),o=$('<input type="text" class="bp-input" spellcheck="false"/>').attr("placeholder","condition (e.g. A == $20 && X < 4)").val(r&&r.bp.condition||""),a=$('<button class="btn btn-default btn-xs bp-submit"/>').text(r?"Save":"Add"),l=$('<button class="btn btn-default btn-xs bp-submit"/>').text("Cancel");l.toggle(r!= Line truncated
<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 u=O[0],f=h.getBoundingClientRect(),p=u.getBoundingClientRect(),m=p.top-f.top;m<0?h.scrollTop+=m:m+p.height>f.height&&(h.scrollTop+=m+p.height-f.height)}}},o=(c=n)=>{let h=r[c];h&&(YA(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 u=O.record,f=u.source,p=u.kind==="func"?"\u0192":u.kind==="macro"?"#":u.kind==="label"?":":u.kind==="struct"?"S":u.kind==="enum"?"E":u.kind==="text"?"\u2261":"\u2022",m=u.source==="debugger"?ve(u.addr,4):u.file&&u.line?`${u.file}:${u.line}`:u.file||"",S=u.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>${OO(u.name)}</strong>`:`<span class="search-dumb">${OO(u.name)}</span>`)+(u.brief?` <span class="text-muted">- ${OO(u.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?OO(m):""}</span>`),w.click(()=>{o(r.indexOf(O))}),h.append(w)}t.empty().append(h),s(0)},l=EA(async()=>{let c=e.val();if(!c){r=[],n=-1,t.empty();return}try{let h=await Kv.query(c,zA),O=hO(c,v&&v.debugSymbols&&v.debugSymbols.symbolmap);O&&v$(O,h.length>0)&&h.push(S$(c,O,K&&K.segments)),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 MA=800,LA=1e3,WA=16;function Q$(i){return i.art?i.brev?0:7:null}var uO=/([0#]?)([x$%]|\d'h)([0-9a-f]+)(?:[;].*)?|(\d'b|0b)([01]+)/gim;function ig(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 P$(i){for(var e=[],t;t=uO.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 VA(i,e,t){i=ig(i);for(var r="",n,s=0,o=0,a=Math.ceil(t/4);n=uO.exec(i);)r+=i.slice(s,uO.lastIndex-n[0].length),s=uO.lastIndex,n[4]?r+=n[4]+JO(e[o++],parseInt(n[4])):n[2].startsWith("%")?r+=n[1]+n[2]+JO(e[o++],t):n[2].endsWith("h")?r+=n[1]+n[2]+ve(e[o++],parseInt(n[2])):n[2].startsWith("x")?r+=n[1]+"x"+ve(e[o++],a):n[2].startsWith("$")?r+=n[1]+"$"+ve(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 rg(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 ng(i,e){var t=e[i%e.length];return[t>>3,t&7]}var jA=[[0,0,4],[8,0,0]],qA=[[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 IA(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 sg(i){return i.w===16&&i.h===16?qA:jA}function k$(i){return sg(i).length*8}function FA(i,e){for(var t=e.w,r=e.h,n=e.count||1,s=e.wpimg||k$(e),o=sg(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[u,f,p]=o[O];DA(i,h+u,c,f,p,t)}a.push(new Uint8Array(c))}return a}function BA(i,e){for(var t=e.w,r=e.h,n=e.count||i.length,s=e.wpimg||k$(e),o=sg(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[u,f,p]=o[O];IA(a,h+u,c,f,p,t)}return a}function NA(i,e){if(e.pacstrip)return FA(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,u=e.wpimg||l*r,f=l;e.il&&(u=l,f=l*n);for(var p=[],m=0;m<n;m++){for(var S=[],w=0;w<r;w++)for(var Z=e.flip?r-1-w:w,R=u*m+Z*f,A=0,k=0;k<t;k++){var P=0,C=rg(R,e.remap);e.reindex&&([C,A]=ng(k,e.reindex),C+=R);for(var z=0;z<o;z++){var I=i[C+z*h+O];P|=((e.brev?I>>a-A-s:I>>A)&c)<<z*s}S.push(P),A+=s,A>=a&&!e.reindex&&(R+=1,A=0)}p.push(new Uint8ALine truncated
`&&t++;return t}function R$(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=w$(i,n.index),l=n[0],c=o>=0?w$(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":'),u=JSON.parse(O),f=/#embed\s+"(.+?)"/.exec(i.substring(s,o)),p=f?f[1]:void 0;r.push({header:l,startline:a,endline:c,fmt:u,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 C$(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 GA(i,e){if(e.destfmt&&(e=e.destfmt),e.pacstrip)return BA(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,u=e.wpimg||l*r,f=l;e.il&&(u=l,f=l*n);var p=e.il?f*r:u*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],Z=0,R=0;R<r;R++)for(var A=e.flip?r-1-R:R,k=S*u+A*f,P=0,C=0;C<t;C++){var z=w[Z++],I=rg(k,e.remap);e.reindex&&([I,P]=ng(C,e.reindex),I+=k);for(var Oe=0;Oe<o;Oe++){var se=z>>Oe*s&c;m[I+Oe*h+O]|=e.brev?se<<a-P-s:se<<P}P+=s,P>=a&&!e.reindex&&(k+=1,P=0)}return m}function y$(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 HA(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 KA(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=Z$[e];if(s)return s.length;throw new Error("No palette named "+e)}}function $$(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=y$(i,0,n,n,s,n+s,o):r=y$(i,n+s,o,n,s,0,n)}else if(t==="pacman"){r=[];for(var a=0;a<i.length;a++)r.push(HA(i[a]))}else{var l=Z$[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 Z$={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
`,await aP(i),ie.newfile?!r&&!t?Qe('No build tool for "'+i+'" on this platform; project will not build.'):r?fP(!0,!0):Tt("No skeleton file for "+t+" on this platform; using blank file."):Tt('Could not find file "'+i+'"<br><br>Creating new '+(r?t:"blank")+" file."),delete ie.newfile,MO()}}function Qg(i){if(i=="/")ie={repo:"/"};else if(i.indexOf("://")>=0){var e=ua(i);e&&(ie={repo:e.repopath})}else ie.platform=le,ie.file=i;Yn()}async function FE(i){var e=hu(v.getToolForFilename(i));try{return await $.get("presets/"+Et(le)+"/skeleton."+e,"text")}catch(t){return console.log(t+""),null}}function wg(i){return i.indexOf(" ")>=0?(Qe("No spaces in filenames, please."),!1):!0}async function BE(i){var e=Et(le),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."+hu(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 NE(i){var e=await BE(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(!wg(n))return;n.indexOf(".")<0&&(n+=t[0]);var s=n;ie.newfile="1",Qg(s)}}}),!0}function GE(i){let e=$('<input type="file" multiple accept="*" style="display:none">'),t=e[0];e.change(r=>{HE(t.files)}),e.click()}function HE(i){console.log(i);var e=0;function t(){var r=i[e++];if(!r)console.log("Done uploading",e),e>2?(Tt("Files uploaded."),setTimeout(Ka,1e3)):(ie.file=i[0].name,bootbox.confirm({message:"Open '"+an.sanitize(ie.file)+"' as main project file?",buttons:{confirm:{label:"Open As New Project"},cancel:{label:"Include/Link With Project Later"}},callback:o=>{o?Yn():setTimeout(Ka,1e3)}}));else{var n=r.name,s=new FileReader;s.onload=function(o){var a=o.target.result,l=new Uint8Array(a);mn(n,l)||(l=ml(l).replace(`\r
`,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 u=O[0],f=h.getBoundingClientRect(),p=u.getBoundingClientRect(),m=p.top-f.top;m<0?h.scrollTop+=m:m+p.height>f.height&&(h.scrollTop+=m+p.height-f.height)}}},o=(c=n)=>{let h=r[c];h&&(YA(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 u=O.record,f=u.source,p=u.kind==="func"?"\u0192":u.kind==="macro"?"#":u.kind==="label"?":":u.kind==="struct"?"S":u.kind==="enum"?"E":u.kind==="text"?"\u2261":"\u2022",m=u.source==="debugger"?ve(u.addr,4):u.file&&u.line?`${u.file}:${u.line}`:u.file||"",S=u.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>${hO(u.name)}</strong>`:`<span class="search-dumb">${hO(u.name)}</span>`)+(u.brief?` <span class="text-muted">- ${hO(u.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?hO(m):""}</span>`),w.click(()=>{o(r.indexOf(O))}),h.append(w)}t.empty().append(h),s(0)},l=EA(async()=>{let c=e.val();if(!c){r=[],n=-1,t.empty();return}try{let h=await Hv.query(c,zA),O=cO(c,v&&v.debugSymbols&&v.debugSymbols.symbolmap);O&&S$(O,h.length>0)&&h.push(x$(c,O,K&&K.segments)),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 MA=800,LA=1e3,WA=16;function v$(i){return i.art?i.brev?0:7:null}var OO=/([0#]?)([x$%]|\d'h)([0-9a-f]+)(?:[;].*)?|(\d'b|0b)([01]+)/gim;function tg(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 $$(i){for(var e=[],t;t=OO.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 VA(i,e,t){i=tg(i);for(var r="",n,s=0,o=0,a=Math.ceil(t/4);n=OO.exec(i);)r+=i.slice(s,OO.lastIndex-n[0].length),s=OO.lastIndex,n[4]?r+=n[4]+KO(e[o++],parseInt(n[4])):n[2].startsWith("%")?r+=n[1]+n[2]+KO(e[o++],t):n[2].endsWith("h")?r+=n[1]+n[2]+ve(e[o++],parseInt(n[2])):n[2].startsWith("x")?r+=n[1]+"x"+ve(e[o++],a):n[2].startsWith("$")?r+=n[1]+"$"+ve(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 ig(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 rg(i,e){var t=e[i%e.length];return[t>>3,t&7]}var jA=[[0,0,4],[8,0,0]],qA=[[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 IA(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 ng(i){return i.w===16&&i.h===16?qA:jA}function P$(i){return ng(i).length*8}function FA(i,e){for(var t=e.w,r=e.h,n=e.count||1,s=e.wpimg||P$(e),o=ng(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[u,f,p]=o[O];DA(i,h+u,c,f,p,t)}a.push(new Uint8Array(c))}return a}function BA(i,e){for(var t=e.w,r=e.h,n=e.count||i.length,s=e.wpimg||P$(e),o=ng(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[u,f,p]=o[O];IA(a,h+u,c,f,p,t)}return a}function NA(i,e){if(e.pacstrip)return FA(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,u=e.wpimg||l*r,f=l;e.il&&(u=l,f=l*n);for(var p=[],m=0;m<n;m++){for(var S=[],w=0;w<r;w++)for(var Z=e.flip?r-1-w:w,R=u*m+Z*f,A=0,k=0;k<t;k++){var P=0,C=ig(R,e.remap);e.reindex&&([C,A]=rg(k,e.reindex),C+=R);for(var z=0;z<o;z++){var I=i[C+z*h+O];P|=((e.brev?I>>a-A-s:I>>A)&c)<<z*s}S.push(P),A+=s,A>=a&&!e.reindex&&(R+=1,A=0)}p.push(new Uint8ALine truncated
`&&t++;return t}function _$(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=Q$(i,n.index),l=n[0],c=o>=0?Q$(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":'),u=JSON.parse(O),f=/#embed\s+"(.+?)"/.exec(i.substring(s,o)),p=f?f[1]:void 0;r.push({header:l,startline:a,endline:c,fmt:u,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 R$(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 GA(i,e){if(e.destfmt&&(e=e.destfmt),e.pacstrip)return BA(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,u=e.wpimg||l*r,f=l;e.il&&(u=l,f=l*n);var p=e.il?f*r:u*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],Z=0,R=0;R<r;R++)for(var A=e.flip?r-1-R:R,k=S*u+A*f,P=0,C=0;C<t;C++){var z=w[Z++],I=ig(k,e.remap);e.reindex&&([I,P]=rg(C,e.reindex),I+=k);for(var Oe=0;Oe<o;Oe++){var se=z>>Oe*s&c;m[I+Oe*h+O]|=e.brev?se<<a-P-s:se<<P}P+=s,P>=a&&!e.reindex&&(k+=1,P=0)}return m}function w$(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 HA(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 KA(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=C$[e];if(s)return s.length;throw new Error("No palette named "+e)}}function y$(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=w$(i,0,n,n,s,n+s,o):r=w$(i,n+s,o,n,s,0,n)}else if(t==="pacman"){r=[];for(var a=0;a<i.length;a++)r.push(HA(i[a]))}else{var l=C$[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 C$={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
`,await oP(i),ie.newfile?!r&&!t?Qe('No build tool for "'+i+'" on this platform; project will not build.'):r?uP(!0,!0):Tt("No skeleton file for "+t+" on this platform; using blank file."):Tt('Could not find file "'+i+'"<br><br>Creating new '+(r?t:"blank")+" file."),delete ie.newfile,YO()}}function vg(i){if(i=="/")ie={repo:"/"};else if(i.indexOf("://")>=0){var e=ua(i);e&&(ie={repo:e.repopath})}else ie.platform=le,ie.file=i;Mn()}async function FE(i){var e=cu(v.getToolForFilename(i));try{return await $.get("presets/"+Et(le)+"/skeleton."+e,"text")}catch(t){return console.log(t+""),null}}function Qg(i){return i.indexOf(" ")>=0?(Qe("No spaces in filenames, please."),!1):!0}async function BE(i){var e=Et(le),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."+cu(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 NE(i){var e=await BE(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(!Qg(n))return;n.indexOf(".")<0&&(n+=t[0]);var s=n;ie.newfile="1",vg(s)}}}),!0}function GE(i){let e=$('<input type="file" multiple accept="*" style="display:none">'),t=e[0];e.change(r=>{HE(t.files)}),e.click()}function HE(i){console.log(i);var e=0;function t(){var r=i[e++];if(!r)console.log("Done uploading",e),e>2?(Tt("Files uploaded."),setTimeout(Ka,1e3)):(ie.file=i[0].name,bootbox.confirm({message:"Open '"+an.sanitize(ie.file)+"' as main project file?",buttons:{confirm:{label:"Open As New Project"},cancel:{label:"Include/Link With Project Later"}},callback:o=>{o?Mn():setTimeout(Ka,1e3)}}));else{var n=r.name,s=new FileReader;s.onload=function(o){var a=o.target.result,l=new Uint8Array(a);gn(n,l)||(l=ml(l).replace(`\r
`,`
`)),j.updateFile(n,l),console.log("Uploaded "+n+" "+l.length+" bytes"),t()},s.readAsArrayBuffer(r)}}i&&t()}async function KE(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=Sg.createInstance({name:n,version:2});await o.setItem(n,s),ie={localfs:r},Yn(!0)}async function JE(i){return new Promise((e,t)=>{bootbox.prompt(an.sanitize(i),r=>{e(r)})})}async function e5(i){let e={mode:"readwrite"};var t="__localfs__"+i,r=Sg.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 JE("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(mn(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 u of h)if(u.changedHandle){let f=u.changedHandle.name;if(Date.now()-(a[f]||0)<2e3)continue;l(f)}}).observe(s,{recursive:!0})}}}function lt(){return Ot(K.mainPath)}function Mv(){return Ot(j.getActiveID())}function t5(i){var e=j.getActive(),t=j.getActiveID(),r=e&&e.setData&&!e.setText;if(e&&(e.setText||e.setData)){var n="presets/"+Et(le)+"/"+t;yo(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 '"+an.sanitize(t)+"' to default?",o=>{o&&(r?(e.setData(s),K.updateFile(t,s)):e.setText(s))})},r?"arraybuffer":"text")}else Qe("Cannot revert the active window. Please choose a text file.")}function i5(i){var e=j.getActive();if(e&&e.getPath){var t=j.getActiveID();bootbox.confirm("Delete '"+an.sanitize(t)+"'?",r=>{r&&Ti.removeItem(t).then(()=>{ie.file==t?(kr.unsetLastPreset(),Yn()):(Ka(),Tt("Deleted "+t))})})}else Qe("Cannot delete the active window.")}function r5(i){var e=j.getActive();if(e&&e.getPath&&K.getFile(e.getPath())){var t=j.getActiveID();bootbox.prompt({title:"Rename '"+an.sanitize(t)+"' to?",value:t,callback:r=>{var n=K.getFile(e.getPath());if(r&&r!=t&&n){if(!wg(r))return;Ti.removeItem(t).then(()=>Ti.setItem(r,n)).then(()=>{Ka(),alert("Renamed "+t+" to "+r),t==K.mainPath&&Qg(r)})}}})}else Qe("Cannot rename the active window.")}function n5(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==K.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&&(_O=s),e[s.id]=o}return e}function s5(i){if(Dt&&!no){var e=0,t=An();if(t){let n=$("<optgroup />").attr("label","Repositories").appendTo(i);for(let s in t){var r=t[s];r.platform_id&&Et(r.platform_id)==Et(le)&&n.append($("<option />").val(r.url).text(r.url.substring(r.url.indexOf("/"))))}}}}async function lP(i,e,t,r){let n=await Ti.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==K.mainPath?"selected":null))}}}function cP(i){i.css("visibility","visible");var e=K.mainPath;i.val()!=e&&i.append($("<option />").val(e).text(e).attr("selected","selected"))}async function Ka(){var i=$("#preset_select").empty();if(ct)i.append($("<option />").val("/").text("Leave Repository")),$("#repo_name").text(Ot(ct)+"/").show(),await lP(i,ct,"",{}),cP(i);else{s5(i);var e=n5(i);await lP(i,"Local Files","",e),cP(i)}i.off("change").change(function(t){Qg($(this).val().toString())})}function o5(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=K.mainPath),j.isWindow(n)&&r.click(s=>{var o=j.createOrShow(n);o instanceof ei&&o.navigateToLine(i.line)}),e.append(r),e.append("&nbsp;")}return e.append($("<span/>").text(i.msg)),e}function dP(){$("#error_alert").hide(),vg=!1}function yg(i,e){var t=$("#error_alert_msg").empty();for(var r of i.slice(0,10))t.append(o5(r));$("#error_alert").show(),vg=e;var n=i.find(o=>o.path!=null),s;n&&j.isWindow(n.path==lt()?K.mainPath:n.path)&&(s=()=>{c5(n)})}function pP(i,e){if(e!=null){var t={msg:e,line:0};i instanceof ru&&i.$loc&&(t=Object.create(i.$loc),t.msg=e,console.log(t)),yg([t],!0)}}async function a5(i){if("uppercaseOnly"in i&&m$(i.uppercaseOnly),"erro Line truncated
`)),j.updateFile(n,l),console.log("Uploaded "+n+" "+l.length+" bytes"),t()},s.readAsArrayBuffer(r)}}i&&t()}async function KE(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=xg.createInstance({name:n,version:2});await o.setItem(n,s),ie={localfs:r},Mn(!0)}async function JE(i){return new Promise((e,t)=>{bootbox.prompt(an.sanitize(i),r=>{e(r)})})}async function e5(i){let e={mode:"readwrite"};var t="__localfs__"+i,r=xg.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 JE("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(gn(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 u of h)if(u.changedHandle){let f=u.changedHandle.name;if(Date.now()-(a[f]||0)<2e3)continue;l(f)}}).observe(s,{recursive:!0})}}}function lt(){return Ot(K.mainPath)}function Yv(){return Ot(j.getActiveID())}function t5(i){var e=j.getActive(),t=j.getActiveID(),r=e&&e.setData&&!e.setText;if(e&&(e.setText||e.setData)){var n="presets/"+Et(le)+"/"+t;yo(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 '"+an.sanitize(t)+"' to default?",o=>{o&&(r?(e.setData(s),K.updateFile(t,s)):e.setText(s))})},r?"arraybuffer":"text")}else Qe("Cannot revert the active window. Please choose a text file.")}function i5(i){var e=j.getActive();if(e&&e.getPath){var t=j.getActiveID();bootbox.confirm("Delete '"+an.sanitize(t)+"'?",r=>{r&&Ti.removeItem(t).then(()=>{ie.file==t?(kr.unsetLastPreset(),Mn()):(Ka(),Tt("Deleted "+t))})})}else Qe("Cannot delete the active window.")}function r5(i){var e=j.getActive();if(e&&e.getPath&&K.getFile(e.getPath())){var t=j.getActiveID();bootbox.prompt({title:"Rename '"+an.sanitize(t)+"' to?",value:t,callback:r=>{var n=K.getFile(e.getPath());if(r&&r!=t&&n){if(!Qg(r))return;Ti.removeItem(t).then(()=>Ti.setItem(r,n)).then(()=>{Ka(),alert("Renamed "+t+" to "+r),t==K.mainPath&&vg(r)})}}})}else Qe("Cannot rename the active window.")}function n5(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==K.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&&(XO=s),e[s.id]=o}return e}function s5(i){if(Dt&&!no){var e=0,t=En();if(t){let n=$("<optgroup />").attr("label","Repositories").appendTo(i);for(let s in t){var r=t[s];r.platform_id&&Et(r.platform_id)==Et(le)&&n.append($("<option />").val(r.url).text(r.url.substring(r.url.indexOf("/"))))}}}}async function aP(i,e,t,r){let n=await Ti.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==K.mainPath?"selected":null))}}}function lP(i){i.css("visibility","visible");var e=K.mainPath;i.val()!=e&&i.append($("<option />").val(e).text(e).attr("selected","selected"))}async function Ka(){var i=$("#preset_select").empty();if(ct)i.append($("<option />").val("/").text("Leave Repository")),$("#repo_name").text(Ot(ct)+"/").show(),await aP(i,ct,"",{}),lP(i);else{s5(i);var e=n5(i);await aP(i,"Local Files","",e),lP(i)}i.off("change").change(function(t){vg($(this).val().toString())})}function o5(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=K.mainPath),j.isWindow(n)&&r.click(s=>{var o=j.createOrShow(n);o instanceof ei&&o.navigateToLine(i.line)}),e.append(r),e.append("&nbsp;")}return e.append($("<span/>").text(i.msg)),e}function fP(){$("#error_alert").hide(),Sg=!1}function wg(i,e){var t=$("#error_alert_msg").empty();for(var r of i.slice(0,10))t.append(o5(r));$("#error_alert").show(),Sg=e;var n=i.find(o=>o.path!=null),s;n&&j.isWindow(n.path==lt()?K.mainPath:n.path)&&(s=()=>{c5(n)})}function dP(i,e){if(e!=null){var t={msg:e,line:0};i instanceof iu&&i.$loc&&(t=Object.create(i.$loc),t.msg=e,console.log(t)),wg([t],!0)}}async function a5(i){if("uppercaseOnly"in i&&p$(i.uppercaseOnly),"erro Line truncated
`),e.SP&&(t+="c.SP < 0x"+ve(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 x5(i){var e=new Function("c","return ("+i+");").bind(v);qi(),v.runEval(e),uP=i}function CP(){v.isRunning()?(j.tick(),RO=!1):RO||(j.tick(),RO=!0),setTimeout(CP,100)}function YO(i){v.setFrameRate(i),i>.01?$("#fps_label").text(i.toFixed(2)):$("#fps_label").text("1/"+Math.round(1/i))}function S5(){var i=v.getFrameRate();i=i/2,i>1e-5&&YO(i)}function v5(){var i=v.getFrameRate();i=Math.min(60,i*2),YO(i)}function Q5(){YO(60/65536)}function w5(){Tr(),YO(60)}function y5(){j.refresh(!1);var i=j.getActive();if(i.getSourceFile&&i.setTimingResult){var e=v.newCodeAnalyzer();e.showLoopTimingForPC(0),i.setTimingResult(e)}}function Pg(){io&&(v.setRecorder(null),$("#dbg_record").removeClass("btn_recording"),$("#replaydiv").hide(),EO(),io=!1)}function ZP(){io&&qt.reset()}function UP(){qt.reset(),v.setRecorder(qt),$("#dbg_record").addClass("btn_recording"),$("#replaydiv").show(),io=!0}function $5(){io?Pg():UP(),ur()}function P5(){var i=!ei.tracingEnabled;$("#dbg_tracelines").toggleClass("btn_active",i);var e=j.getActive();e instanceof ei?e.setTracingEnabled(i):ei.tracingEnabled=i}function Fi(i,e,t){var r=j.getActive();r&&r.insertLinesBefore?bootbox.prompt({title:"Add "+an.sanitize(i)+" File to Project",value:"filename"+an.sanitize(e),callback:n=>{if(n&&n.trim().length>0){if(!wg(n))return;var s=n,o=`
`),t}function x5(i){var e=new Function("c","return ("+i+");").bind(v);Di(),v.runEval(e),OP=i}function RP(){v.isRunning()?(j.tick(),_O=!1):_O||(j.tick(),_O=!0),setTimeout(RP,100)}function zO(i){v.setFrameRate(i),i>.01?$("#fps_label").text(i.toFixed(2)):$("#fps_label").text("1/"+Math.round(1/i))}function S5(){var i=v.getFrameRate();i=i/2,i>1e-5&&zO(i)}function v5(){var i=v.getFrameRate();i=Math.min(60,i*2),zO(i)}function Q5(){zO(60/65536)}function w5(){Tr(),zO(60)}function y5(){j.refresh(!1);var i=j.getActive();if(i.getSourceFile&&i.setTimingResult){var e=v.newCodeAnalyzer();e.showLoopTimingForPC(0),i.setTimingResult(e)}}function $g(){io&&(v.setRecorder(null),$("#dbg_record").removeClass("btn_recording"),$("#replaydiv").hide(),AO(),io=!1)}function CP(){io&&qt.reset()}function ZP(){qt.reset(),v.setRecorder(qt),$("#dbg_record").addClass("btn_recording"),$("#replaydiv").show(),io=!0}function $5(){io?$g():ZP(),Ci()}function P5(){var i=!ei.tracingEnabled;$("#dbg_tracelines").toggleClass("btn_active",i);var e=j.getActive();e instanceof ei?e.setTracingEnabled(i):ei.tracingEnabled=i}function Bi(i,e,t){var r=j.getActive();r&&r.insertLinesBefore?bootbox.prompt({title:"Add "+an.sanitize(i)+" File to Project",value:"filename"+an.sanitize(e),callback:n=>{if(n&&n.trim().length>0){if(!Qg(n))return;var s=n,o=`
`+t(n)+`
`;K.loadFiles([s]).then(a=>{a&&a.length?Qe(n+" already exists; including anyway"):K.updateFile(s,`
`),r.insertLinesBefore(o),to()})}}}):Qe("Can't insert text in this window -- switch back to main file")}function k5(){var i=lt(),e=v.getToolForFilename(i);i.endsWith(".c")||e=="sdcc"||e=="cc65"||e=="cmoc"||e=="smlrc"?Fi("Header",".h",t=>'#include "'+t+'"'):e=="dasm"||e=="zmac"?Fi("Include",".inc",t=>' include "'+t+'"'):e=="ca65"||e=="sdasz80"||e=="vasm"||e=="armips"?Fi("Include",".inc",t=>' .include "'+t+'"'):e=="verilator"?Fi("Verilog",".v",t=>'`include "'+t+'"'):e=="wiz"?Fi("Include",".wiz",t=>'import "'+t+'";'):e=="ecs"?Fi("Include",".ecs",t=>'import "'+t+'"'):e=="acme"?Fi("Include",".acme",t=>'!src "'+t+'"'):e=="xa"?Fi("Include",".xa",t=>'#include "'+t+'"'):e=="dialog"?Fi("Include",".dg",t=>'%% #include "'+t+'"'):Qe("Can't add include file to this project type ("+e+")")}function T5(){var i=lt(),e=v.getToolForFilename(i);i.endsWith(".c")||e=="sdcc"||e=="cc65"||e=="cmoc"||e=="smlrc"?Fi("Linked C (or .s)",".c",t=>'//#link "'+t+'"'):i.endsWith("asm")||i.endsWith(".s")||e=="ca65"||e=="lwasm"?Fi("Linked ASM",".inc",t=>';#link "'+t+'"'):Qe("Can't add linked file to this project type ("+e+")")}function X5(){if(tt=new Ql($("#toolbar")[0],null),tt.grp.prop("id","run_bar"),tt.add("mod+shift+r","Reset","glyphicon-refresh",_P).prop("id","dbg_reset"),tt.add("mod+shift+h","Pause","glyphicon-pause",SP).prop("id","dbg_pause"),tt.add("mod+shift+g","Go To Address","",r=>{gP()||UO()}),tt.add("mod+shift+g","Resume","glyphicon-play",UO).prop("id","dbg_go"),tt.add("F8","Pause/Resume","",vP),v.restartAtPC&&tt.add("mod+shift+a","Restart at Cursor","glyphicon-play-circle",PP).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",RP).prop("id","dbg_restart"),v.stepBack&&tt.add("mod+shift+j","Step Backwards","glyphicon-step-backward",XP).prop("id","dbg_stepback"),v.step&&tt.add("mod+shift+l","Single Step","glyphicon-step-forward",QP).prop("id","dbg_step"),v.stepOver&&tt.add("mod+shift+k","Step Over","glyphicon-hand-right",wP).prop("id","dbg_stepover"),v.runUntilReturn&&tt.add("mod+shift+i","Step Out of Subroutine","glyphicon-hand-up",TP).prop("id","dbg_stepout"),v.runToVsync&&tt.add("mod+shift+x","Next Frame/Interrupt","glyphicon-forward",yP).prop("id","dbg_tovsync"),(v.runEval||v.runToPC)&&!le.startsWith("verilog")&&tt.add("mod+shift+y","Run To Line","glyphicon-save",kP).prop("id","dbg_toline"),tt.newGroup(),tt.grp.prop("id","xtra_bar"),tt.add("mod+shift+f","Search","glyphicon-search",Km).prop("id","dbg_search"),$(".dropdown-menu").collapse({toggle:!1}),$("#item_new_file").click(NE),$("#item_upload_file").click(GE),$("#item_open_directory").click(KE),$("#item_github_login").click(Lv),$("#item_github_logout").click(Wv),$("#item_github_import").click(Vv),$("#item_github_publish").click(jv),$("#item_github_push").click(qv),$("#item_github_pull").click(Dv),$("#item_repo_delete").click(Fv),$("#item_share_file").click(_v),$("#item_reset_file").click(t5),$("#item_rename_file").click(r5),$("#item_delete_file").click(i5),v.runEval?$("#item_debug_expr").click(g5).show():$("#item_debug_expr").hide(),$("#item_download_rom").click(Cv),$("#item_download_file").click(Zv),$("#item_download_zip").click(Av),v.getDebugSymbolFile?$("#item_download_sym").click(Ev):$("#item_download_sym").hide(),$("#item_download_allzip").click(zv),$("#item_record_video").click(Yv),Bd()?$("#item_export_cassette").click(Rv):$("#item_export_cassette").hide(),v.setFrameRate&&v.getFrameRate&&($("#dbg_slower").click(S5),$("#dbg_faster").click(v5),$("#dbg_slowest").click(Q5),$("#dbg_fastest").click(w5)),$("#item_addfile_include").click(k5),$("#item_addfile_link").click(T5),$("#item_request_persist").click(()=>fP(!0,!1)),$("#item_settings").click(vv),$("#item_keyboard_shortcuts").click(R5),$("#item_asset_editor_help").click(C5),CP(),v.newCodeAnalyzer&&tt.add(null,"Analyze CPU Timing","glyphicon-time",y5),v.startProbing&&tt.add(null,"Highlight Executed Lines","glyphicon-fire",P5).prop("id","dbg_tracelines"),v.setRecorder&&v.advance&&Z5(),v.showHelp){let{li:r,a:n}=gg("help__"+le,pg+" Help");$("#help_menu").append(r),$(n).click(s=>{s.preventDefault(),window.open(v.showHelp(),"_8bws_help")})}let i=v.getToolForFilename(lt()),e=i&&Ji(i),t=e==null?void 0:e.helpURL;if(t){let r=i+" Help";e.version&&(r+=" ("+e.version+")");let{li:n,a:s}=gg("help__"+i,r);$("#help_menu").append(n),$(s).click(o=>{o.preventDefault(),window.open(t,"_8bws_help")})}$("#item_tool_versions").click(_5)}function _5(){let i=(t,r,n)=>`<tr><td>${t}</td><td>${r}</td><td>${n}</td></tr>`,e=Object.values(Po).filter(t=>t.wasmModule&&t.version).sort((t,r)=>t.name.localeCompare(r.name));bootbox.dialog({title:"Toolchain Versions",onEscape:!0,message:`
`),r.insertLinesBefore(o),to()})}}}):Qe("Can't insert text in this window -- switch back to main file")}function k5(){var i=lt(),e=v.getToolForFilename(i);i.endsWith(".c")||e=="sdcc"||e=="cc65"||e=="cmoc"||e=="smlrc"?Bi("Header",".h",t=>'#include "'+t+'"'):e=="dasm"||e=="zmac"?Bi("Include",".inc",t=>' include "'+t+'"'):e=="ca65"||e=="sdasz80"||e=="vasm"||e=="armips"?Bi("Include",".inc",t=>' .include "'+t+'"'):e=="verilator"?Bi("Verilog",".v",t=>'`include "'+t+'"'):e=="wiz"?Bi("Include",".wiz",t=>'import "'+t+'";'):e=="ecs"?Bi("Include",".ecs",t=>'import "'+t+'"'):e=="acme"?Bi("Include",".acme",t=>'!src "'+t+'"'):e=="xa"?Bi("Include",".xa",t=>'#include "'+t+'"'):e=="dialog"?Bi("Include",".dg",t=>'%% #include "'+t+'"'):Qe("Can't add include file to this project type ("+e+")")}function T5(){var i=lt(),e=v.getToolForFilename(i);i.endsWith(".c")||e=="sdcc"||e=="cc65"||e=="cmoc"||e=="smlrc"?Bi("Linked C (or .s)",".c",t=>'//#link "'+t+'"'):i.endsWith("asm")||i.endsWith(".s")||e=="ca65"||e=="lwasm"?Bi("Linked ASM",".inc",t=>';#link "'+t+'"'):Qe("Can't add linked file to this project type ("+e+")")}function X5(){if(tt=new Ql($("#toolbar")[0],null),tt.grp.prop("id","run_bar"),tt.add("mod+shift+r","Reset","glyphicon-refresh",XP).prop("id","dbg_reset"),tt.add("mod+shift+h","Pause","glyphicon-pause",xP).prop("id","dbg_pause"),tt.add("mod+shift+g","Go To Address","",r=>{mP()||ZO()}),tt.add("mod+shift+g","Resume","glyphicon-play",ZO).prop("id","dbg_go"),tt.add("F8","Pause/Resume","",SP),v.restartAtPC&&tt.add("mod+shift+a","Restart at Cursor","glyphicon-play-circle",$P).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",_P).prop("id","dbg_restart"),v.stepBack&&tt.add("mod+shift+j","Step Backwards","glyphicon-step-backward",TP).prop("id","dbg_stepback"),v.step&&tt.add("mod+shift+l","Single Step","glyphicon-step-forward",vP).prop("id","dbg_step"),v.stepOver&&tt.add("mod+shift+k","Step Over","glyphicon-hand-right",QP).prop("id","dbg_stepover"),v.runUntilReturn&&tt.add("mod+shift+i","Step Out of Subroutine","glyphicon-hand-up",kP).prop("id","dbg_stepout"),v.runToVsync&&tt.add("mod+shift+x","Next Frame/Interrupt","glyphicon-forward",wP).prop("id","dbg_tovsync"),(v.runEval||v.runToPC)&&!le.startsWith("verilog")&&tt.add("mod+shift+y","Run To Line","glyphicon-save",PP).prop("id","dbg_toline"),tt.newGroup(),tt.grp.prop("id","xtra_bar"),tt.add("mod+shift+f","Search","glyphicon-search",Hm).prop("id","dbg_search"),$(".dropdown-menu").collapse({toggle:!1}),$("#item_new_file").click(NE),$("#item_upload_file").click(GE),$("#item_open_directory").click(KE),$("#item_github_login").click(Mv),$("#item_github_logout").click(Lv),$("#item_github_import").click(Wv),$("#item_github_publish").click(Vv),$("#item_github_push").click(jv),$("#item_github_pull").click(qv),$("#item_repo_delete").click(Iv),$("#item_share_file").click(Xv),$("#item_reset_file").click(t5),$("#item_rename_file").click(r5),$("#item_delete_file").click(i5),v.runEval?$("#item_debug_expr").click(g5).show():$("#item_debug_expr").hide(),$("#item_download_rom").click(Rv),$("#item_download_file").click(Cv),$("#item_download_zip").click(Uv),v.getDebugSymbolFile?$("#item_download_sym").click(Av):$("#item_download_sym").hide(),$("#item_download_allzip").click(Ev),$("#item_record_video").click(zv),Fd()?$("#item_export_cassette").click(_v):$("#item_export_cassette").hide(),v.setFrameRate&&v.getFrameRate&&($("#dbg_slower").click(S5),$("#dbg_faster").click(v5),$("#dbg_slowest").click(Q5),$("#dbg_fastest").click(w5)),$("#item_addfile_include").click(k5),$("#item_addfile_link").click(T5),$("#item_request_persist").click(()=>uP(!0,!1)),$("#item_settings").click(Sv),$("#item_keyboard_shortcuts").click(R5),$("#item_asset_editor_help").click(C5),RP(),v.newCodeAnalyzer&&tt.add(null,"Analyze CPU Timing","glyphicon-time",y5),v.startProbing&&tt.add(null,"Highlight Executed Lines","glyphicon-fire",P5).prop("id","dbg_tracelines"),v.setRecorder&&v.advance&&Z5(),v.showHelp){let{li:r,a:n}=mg("help__"+le,dg+" Help");$("#help_menu").append(r),$(n).click(s=>{s.preventDefault(),window.open(v.showHelp(),"_8bws_help")})}let i=v.getToolForFilename(lt()),e=i&&er(i),t=e==null?void 0:e.helpURL;if(t){let r=i+" Help";e.version&&(r+=" ("+e.version+")");let{li:n,a:s}=mg("help__"+i,r);$("#help_menu").append(n),$(s).click(o=>{o.preventDefault(),window.open(t,"_8bws_help")})}$("#item_tool_versions").click(_5)}function _5(){let i=(t,r,n)=>`<tr><td>${t}</td><td>${r}</td><td>${n}</td></tr>`,e=Object.values(Po).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(`
@@ -158,7 +158,7 @@ PC `+this.addr2str(s)+" "+this.opToString(c,null,p),o[m]=1)}),this.addr2str(r)+n
<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 Z5(){var i=$("#replayslider"),e=$("#clockslider"),t=$("#replay_frame"),r=$("#replay_clock");v.advanceFrameClock||$("#clockdiv").hide();var n=()=>{t.text(qt.lastSeekFrame+""),r.text(qt.lastSeekStep+"")},s=l=>{on();var c=parseInt(i.val().toString()),h=parseInt(e.val().toString());qt.loadFrame(c,h)>=0&&(e.attr("min",0),e.attr("max",qt.lastStepCount),n(),CO(v.saveState()))},o=l=>{on(),qt.loadFrame(l)>=0&&(i.val(l),n(),CO(v.saveState()))},a=l=>{on();var c=parseInt(i.val().toString());qt.loadFrame(c,l)>=0&&(e.val(l),n(),CO(v.saveState()))};qt.callbackStateChanged=()=>{i.attr("min",0),i.attr("max",qt.numFrames()),i.val(qt.currentFrame()),e.val(qt.currentStep()),n(),Ja(v.saveState())},i.on("input",s),e.on("input",s),$("#replay_min").click(()=>{o(1)}),$("#replay_max").click(()=>{o(qt.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",$5).prop("id","dbg_record")}function U5(){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 A5(){if(kr.shouldCompleteTour()){await pi("lib/bootstrap-tourist.js");var i=le.startsWith("vcs"),e=[{element:"#platformsMenuButton",placement:"right",title:"Platform Selector",content:`You're currently on the "<b>`+le+'</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."}];U5()||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."}),cs()&&(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!"})),no&&(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:()=>{kr.completedTour()}});setTimeout(()=>{t.start()},2500)}}function AO(i){var e=(i.message||i.error||i)+"";if(e.indexOf("QuotaExceededError")>=0)LE();else{var t=i.error||i.reason;t!=null&&t instanceof ru?E5(t):cs()&&Ng(e,t)}}function E5(i){console.log("haltEmulation"),on(),K5(i)}function z5(){window.addEventListener("error",AO),window.addEventListener("unhandledrejection",AO)}function AP(){window.removeEventListener("error",AO),window.removeEventListener("unhandledrejection",AO)}function Yn(i,e){e&&(ie=e),AP(),i?window.location.replace("?"+$.param(ie)):window.location.href="?"+$.param(ie)}function MO(){le&&(ie.platform=le),delete ie[""],history.replaceState({},"","?"+$.param(ie)+window.location.hash)}function EP(i){if(!i||i==="#")return null;var e=decodeURIComponent(i.substring(1));return e.startsWith("asseteditor/")?"#asseteditor"Line truncated
</table>`,buttons:{ok:{label:"OK",className:"btn-primary"}},size:"large"})}function Z5(){var i=$("#replayslider"),e=$("#clockslider"),t=$("#replay_frame"),r=$("#replay_clock");v.advanceFrameClock||$("#clockdiv").hide();var n=()=>{t.text(qt.lastSeekFrame+""),r.text(qt.lastSeekStep+"")},s=l=>{on();var c=parseInt(i.val().toString()),h=parseInt(e.val().toString());qt.loadFrame(c,h)>=0&&(e.attr("min",0),e.attr("max",qt.lastStepCount),n(),RO(v.saveState()))},o=l=>{on(),qt.loadFrame(l)>=0&&(i.val(l),n(),RO(v.saveState()))},a=l=>{on();var c=parseInt(i.val().toString());qt.loadFrame(c,l)>=0&&(e.val(l),n(),RO(v.saveState()))};qt.callbackStateChanged=()=>{i.attr("min",0),i.attr("max",qt.numFrames()),i.val(qt.currentFrame()),e.val(qt.currentStep()),n(),Ja(v.saveState())},i.on("input",s),e.on("input",s),$("#replay_min").click(()=>{o(1)}),$("#replay_max").click(()=>{o(qt.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",$5).prop("id","dbg_record")}function U5(){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 A5(){if(kr.shouldCompleteTour()){await pi("lib/bootstrap-tourist.js");var i=le.startsWith("vcs"),e=[{element:"#platformsMenuButton",placement:"right",title:"Platform Selector",content:`You're currently on the "<b>`+le+'</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."}];U5()||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."}),cs()&&(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!"})),no&&(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:()=>{kr.completedTour()}});setTimeout(()=>{t.start()},2500)}}function UO(i){var e=(i.message||i.error||i)+"";if(e.indexOf("QuotaExceededError")>=0)LE();else{var t=i.error||i.reason;t!=null&&t instanceof iu?E5(t):cs()&&Bg(e,t)}}function E5(i){console.log("haltEmulation"),on(),K5(i)}function z5(){window.addEventListener("error",UO),window.addEventListener("unhandledrejection",UO)}function UP(){window.removeEventListener("error",UO),window.removeEventListener("unhandledrejection",UO)}function Mn(i,e){e&&(ie=e),UP(),i?window.location.replace("?"+$.param(ie)):window.location.href="?"+$.param(ie)}function YO(){le&&(ie.platform=le),delete ie[""],history.replaceState({},"","?"+$.param(ie)+window.location.hash)}function AP(i){if(!i||i==="#")return null;var e=decodeURIComponent(i.substring(1));return e.startsWith("asseteditor/")?"#asseteditor"Line truncated
/*! Bundled license information:
localforage/dist/localforage.js:
@@ -172,4 +172,4 @@ localforage/dist/localforage.js:
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-XP2G5PMM.js.map
//# sourceMappingURL=chunk-S75754OX.js.map
@@ -1,7 +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/errorreport.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/breakcond.ts", "../src/ide/breakpoints.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/common/vtextscroller.ts", "../src/ide/views/debugviews.ts", "../src/ide/search/debuggerhit.ts", "../src/ide/search/searchview.ts", "../src/ide/pixeleditor.ts", "../src/ide/views/asseteditor.ts", "../src/ide/views/treeviews.ts", "../src/ide/windows.ts", "../src/ide/search/listinglocation.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": "gqBAAA,IAAAA,GAAAC,GAAA,CAAAC,GAAAC,KAAA,EAMC,SAASC,EAAE,CAAC,GAAG,OAAOF,IAAU,UAAU,OAAOC,IAAS,YAAaA,GAAO,QAAQC,EAAE,UAAU,OAAO,QAAS,YAAY,OAAO,IAAK,OAAO,CAAC,EAAEA,CAAC,MAAM,CAAC,IAAIC,EAAK,OAAO,QAAS,YAAaA,EAAE,OAAe,OAAO,QAAS,YAAaA,EAAE,OAAe,OAAO,MAAO,YAAaA,EAAE,KAAUA,EAAE,KAAKA,EAAE,YAAcD,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC,IAAIE,EAAOH,EAAOD,EAAQ,OAAQ,SAASK,EAAEC,EAAEC,EAAEC,EAAE,CAAC,SAASC,EAAEC,EAAEC,EAAE,CAAC,GAAG,CAACJ,EAAEG,CAAC,EAAE,CAAC,GAAG,CAACJ,EAAEI,CAAC,EAAE,CAAC,IAAIE,EAAE,OAAOC,IAAS,YAAYA,GAAQ,GAAG,CAACF,GAAGC,EAAE,OAAOA,EAAEF,EAAE,EAAE,EAAE,GAAGI,EAAE,OAAOA,EAAEJ,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,MAAM,uBAAuBA,EAAE,GAAG,EAAE,MAAO,EAAE,KAAK,mBAAoB,CAAE,CAAC,IAAIK,EAAER,EAAEG,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAEJ,EAAEI,CAAC,EAAE,CAAC,EAAE,KAAKK,EAAE,QAAQ,SAASV,EAAE,CAAC,IAAIE,EAAED,EAAEI,CAAC,EAAE,CAAC,EAAEL,CAAC,EAAE,OAAOI,EAAEF,GAAIF,CAAC,CAAC,EAAEU,EAAEA,EAAE,QAAQV,EAAEC,EAAEC,EAAEC,CAAC,CAAC,CAAC,OAAOD,EAAEG,CAAC,EAAE,OAAO,CAA2C,QAAtCI,EAAE,OAAOD,IAAS,YAAYA,GAAgBH,EAAE,EAAEA,EAAEF,EAAE,OAAOE,IAAID,EAAED,EAAEE,CAAC,CAAC,EAAE,OAAOD,CAAC,GAAG,CAAC,EAAE,CAAC,SAASO,EAAQf,EAAOD,EAAQ,EACp1B,SAAUiB,EAAO,CAClB,aACA,IAAIC,EAAWD,EAAO,kBAAoBA,EAAO,uBAE7CE,EAGF,GAAID,EAAU,CACZ,IAAIE,EAAS,EACTC,EAAW,IAAIH,EAASI,CAAQ,EAChCC,EAAUN,EAAO,SAAS,eAAe,EAAE,EAC/CI,EAAS,QAAQE,EAAS,CACxB,cAAe,EACjB,CAAC,EACDJ,EAAgB,UAAY,CAC1BI,EAAQ,KAAQH,EAAS,EAAEA,EAAS,CACtC,CACF,SAAW,CAACH,EAAO,cAAgB,OAAOA,EAAO,gBAAmB,YAAa,CAC/E,IAAIO,EAAU,IAAIP,EAAO,eACzBO,EAAQ,MAAM,UAAYF,EAC1BH,EAAgB,UAAY,CAC1BK,EAAQ,MAAM,YAAY,CAAC,CAC7B,CACF,KAAW,aAAcP,GAAU,uBAAwBA,EAAO,SAAS,cAAc,QAAQ,EAC/FE,EAAgB,UAAY,CAI1B,IAAIM,EAAWR,EAAO,SAAS,cAAc,QAAQ,EACrDQ,EAAS,mBAAqB,UAAY,CACxCH,EAAS,EAETG,EAAS,mBAAqB,KAC9BA,EAAS,WAAW,YAAYA,CAAQ,EACxCA,EAAW,IACb,EACAR,EAAO,SAAS,gBAAgB,YAAYQ,CAAQ,CACtD,EAEAN,EAAgB,UAAY,CAC1B,WAAWG,EAAU,CAAC,CACxB,EAIJ,IAAII,EACAC,EAAQ,CAAC,EAEb,SAASL,GAAW,CAClBI,EAAW,GAGX,QAFIZ,EAAGc,EACHC,EAAMF,EAAM,OACTE,GAAK,CAIV,IAHAD,EAAWD,EACXA,EAAQ,CAAC,EACTb,EAAI,GACG,EAAEA,EAAIe,GACXD,EAASd,CAAC,EAAE,EAEde,EAAMF,EAAM,MACd,CACAD,EAAW,EACb,CAEAzB,EAAO,QAAU6B,EACjB,SAASA,EAAUC,EAAM,CACnBJ,EAAM,KAAKI,CAAI,IAAM,GAAK,CAACL,GAC7BP,EAAc,CAElB,CAEA,GAAG,KAAK,KAAK,OAAO,QAAW,YAAc,OAAS,OAAO,MAAS,YAAc,KAAO,OAAO,QAAW,YAAc,OAAS,CAAC,CAAC,CACtI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,SAASH,EAAQf,EAAOD,EAAQ,CACzC,aACA,IAAI8B,EAAYd,EAAQ,CAAC,EAGzB,SAASgB,GAAW,CAAC,CAErB,IAAIC,EAAW,CAAC,EAEZC,EAAW,CAAC,UAAU,EACtBC,EAAY,CAAC,WAAW,EACxBC,EAAU,CAAC,SAAS,EAExBnC,EAAO,QAAUoC,EAEjB,SAASA,EAAQC,EAAU,CACzB,GAAI,OAAOA,GAAa,WACtB,MAAM,IAAI,UAAU,6BAA6B,EAEnD,KAAK,MAAQF,EACb,KAAK,MAAQ,CAAC,EACd,KAAK,QAAU,OACXE,IAAaN,GACfO,EAAsB,KAAMD,CAAQ,CAExC,CAEAD,EAAQ,UAAU,MAAW,SAAUG,EAAY,CACjD,OAAO,KAAK,KAAK,KAAMA,CAAU,CACnC,EACAH,EAAQ,UAAU,KAAO,SAAUI,EAAaD,EAAY,CAC1D,GAAI,OAAOC,GAAgB,YAAc,KAAK,QAAUN,GACtD,OAAOK,GAAe,YAAc,KAAK,QAAUN,EACnD,OAAO,KAET,IAAIQ,EAAU,IAAI,KAAK,YAAYV,CAAQ,EAC3C,GAAI,KAAK,QAAUI,EAAS,CAC1B,IAAIE,EAAW,KAAK,QAAUH,EAAYM,EAAcD,EACxDG,EAAOD,EAASJ,EAAU,KAAK,OAAO,CACxC,MACE,KAAK,MAAM,KAAK,IAAIM,EAAUF,EAASD,EAAaD,CAAU,CAAC,EAGjE,OAAOE,CACT,EACA,SAASE,EAAUF,EAASD,EAAaD,EAAY,CACnD,KAAK,QAAUE,EACX,OAAOD,GAAgB,aACzB,KAAK,YAAcA,EACnB,KAAK,cAAgB,KAAK,oBAExB,OAAOD,GAAe,aACxB,KAAK,WAAaA,EAClB,KAAK,aAAe,KAAK,kBAE7B,CACAI,EAAU,UAAU,cAAgB,SAAUC,EAAO,CACnDZ,EAAS,QAAQ,KAAK,QAASY,CAAK,CACtC,EACAD,EAAU,UAAU,mBAAqB,SAAUC,EAAO,CACxDF,EAAO,KAAK,QAAS,KAAK,YAAaE,CAAK,CAC9C,EACAD,EAAU,UAAU,aAAe,SAAUC,EAAO,CAClDZ,EAAS,OAAO,KAAK,QAASY,CAAK,CACrC,EACAD,EAAU,UAAU,kBAAoB,SAAUC,EAAO,CACvDF,EAAO,KAAK,QAAS,KAAK,WAAYE,CAAK,CAC7C,EAEA,SAASF,EAAOD,EAASI,EAAMD,EAAO,CACpCf,EAAU,UAAY,CACpB,IAAIiB,EACJ,GAAI,CACFA,EAAcD,EAAKD,CAAK,CAC1B,OAASxC,GAAG,CACV,OAAO4B,EAAS,OAAOS,EAASrC,EAAC,CACnC,CACI0C,IAAgBL,EAClBT,EAAS,OAAOS,EAAS,IAAI,UAAU,oCAAoC,CAAC,EAE5ET,EAAS,QAAQS,EAASK,CAAW,CAEzC,CAAC,CACH,CAEAd,EAAS,QAAU,SAAUe,EAAMH,EAAO,CACxC,IAAII,EAASC,EAASC,EAASN,CAAK,EACpC,GAAII,EAAO,SAAW,QACpB,OAAOhB,EAAS,OAAOe,EAAMC,EAAO,KAAK,EAE3C,IAAIG,EAAWH,EAAO,MAEtB,GAAIG,EACFb,EAAsBS,EAAMI,CAAQ,MAC/B,CACLJ,EAAK,MAAQb,EACba,EAAK,QAAUH,EAGf,QAFI/B,GAAI,GACJe,GAAMmB,EAAK,MAAM,OACd,EAAElC,GAAIe,IACXmB,EAAK,MAAMlC,EAAC,EAAE,cAAc+B,CAAK,CAErC,CACA,OAAOG,CACT,EACAf,EAAS,OAAS,SAAUe,EAAMK,EAAO,CACvCL,EAAK,MAAQd,EACbc,EAAK,QAAUK,EAGf,QAFIvC,EAAI,GACJe,EAAMmB,EAAK,MAAM,OACd,EAAElC,EAAIe,GACXmB,EAAK,MAAMlC,CAAC,EAAE,aAAauC,CAAK,EAElC,OAAOL,CACT,EAEA,SAASG,EAAQG,EAAK,CAEpB,IAAIC,EAAOD,GAAOA,EAAI,KACtB,GAAIA,IAAQ,OAAOA,GAAQ,UAAY,OAAOA,GAAQ,aAAe,OAAOC,GAAS,WACnF,OAAO,UAAoB,CACzBA,EAAK,MAAMD,EAAK,SAAS,CAC3B,CAEJ,CAEA,SAASf,EAAsBS,EAAMI,EAAU,CAE7C,IAAIhC,EAAS,GACb,SAASoC,EAAQX,GAAO,CAClBzB,IAGJA,EAAS,GACTa,EAAS,OAAOe,EAAMH,EAAK,EAC7B,CAEA,SAASY,GAAUZ,GAAO,CACpBzB,IAGJA,EAAS,GACTa,EAAS,QAAQe,EAAMH,EAAK,EAC9B,CAEA,SAASa,IAAc,CACrBN,EAASK,GAAWD,CAAO,CAC7B,CAEA,IAAIP,GAASC,EAASQ,EAAW,EAC7BT,GAAO,SAAW,SACpBO,EAAQP,GAAO,KAAK,CAExB,CAEA,SAASC,EAASJ,EAAMD,EAAO,CAC7B,IAAIc,EAAM,CAAC,EACX,GAAI,CACFA,EAAI,MAAQb,EAAKD,CAAK,EACtBc,EAAI,OAAS,SACf,OAAStD,EAAG,CACVsD,EAAI,OAAS,QACbA,EAAI,MAAQtD,CACd,CACA,OAAOsD,CACT,CAEAtB,EAAQ,QAAUuB,EAClB,SAASA,EAAQf,EAAO,CACtB,OAALine 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
"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": "gqBAAA,IAAAA,GAAAC,GAAA,CAAAC,GAAAC,KAAA,EAMC,SAASC,EAAE,CAAC,GAAG,OAAOF,IAAU,UAAU,OAAOC,IAAS,YAAaA,GAAO,QAAQC,EAAE,UAAU,OAAO,QAAS,YAAY,OAAO,IAAK,OAAO,CAAC,EAAEA,CAAC,MAAM,CAAC,IAAIC,EAAK,OAAO,QAAS,YAAaA,EAAE,OAAe,OAAO,QAAS,YAAaA,EAAE,OAAe,OAAO,MAAO,YAAaA,EAAE,KAAUA,EAAE,KAAKA,EAAE,YAAcD,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC,IAAIE,EAAOH,EAAOD,EAAQ,OAAQ,SAASK,EAAEC,EAAEC,EAAEC,EAAE,CAAC,SAASC,EAAEC,EAAEC,EAAE,CAAC,GAAG,CAACJ,EAAEG,CAAC,EAAE,CAAC,GAAG,CAACJ,EAAEI,CAAC,EAAE,CAAC,IAAIE,EAAE,OAAOC,IAAS,YAAYA,GAAQ,GAAG,CAACF,GAAGC,EAAE,OAAOA,EAAEF,EAAE,EAAE,EAAE,GAAGI,EAAE,OAAOA,EAAEJ,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,MAAM,uBAAuBA,EAAE,GAAG,EAAE,MAAO,EAAE,KAAK,mBAAoB,CAAE,CAAC,IAAIK,EAAER,EAAEG,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAEJ,EAAEI,CAAC,EAAE,CAAC,EAAE,KAAKK,EAAE,QAAQ,SAASV,EAAE,CAAC,IAAIE,EAAED,EAAEI,CAAC,EAAE,CAAC,EAAEL,CAAC,EAAE,OAAOI,EAAEF,GAAIF,CAAC,CAAC,EAAEU,EAAEA,EAAE,QAAQV,EAAEC,EAAEC,EAAEC,CAAC,CAAC,CAAC,OAAOD,EAAEG,CAAC,EAAE,OAAO,CAA2C,QAAtCI,EAAE,OAAOD,IAAS,YAAYA,GAAgBH,EAAE,EAAEA,EAAEF,EAAE,OAAOE,IAAID,EAAED,EAAEE,CAAC,CAAC,EAAE,OAAOD,CAAC,GAAG,CAAC,EAAE,CAAC,SAASO,EAAQf,EAAOD,EAAQ,EACp1B,SAAUiB,EAAO,CAClB,aACA,IAAIC,EAAWD,EAAO,kBAAoBA,EAAO,uBAE7CE,EAGF,GAAID,EAAU,CACZ,IAAIE,EAAS,EACTC,EAAW,IAAIH,EAASI,CAAQ,EAChCC,EAAUN,EAAO,SAAS,eAAe,EAAE,EAC/CI,EAAS,QAAQE,EAAS,CACxB,cAAe,EACjB,CAAC,EACDJ,EAAgB,UAAY,CAC1BI,EAAQ,KAAQH,EAAS,EAAEA,EAAS,CACtC,CACF,SAAW,CAACH,EAAO,cAAgB,OAAOA,EAAO,gBAAmB,YAAa,CAC/E,IAAIO,EAAU,IAAIP,EAAO,eACzBO,EAAQ,MAAM,UAAYF,EAC1BH,EAAgB,UAAY,CAC1BK,EAAQ,MAAM,YAAY,CAAC,CAC7B,CACF,KAAW,aAAcP,GAAU,uBAAwBA,EAAO,SAAS,cAAc,QAAQ,EAC/FE,EAAgB,UAAY,CAI1B,IAAIM,EAAWR,EAAO,SAAS,cAAc,QAAQ,EACrDQ,EAAS,mBAAqB,UAAY,CACxCH,EAAS,EAETG,EAAS,mBAAqB,KAC9BA,EAAS,WAAW,YAAYA,CAAQ,EACxCA,EAAW,IACb,EACAR,EAAO,SAAS,gBAAgB,YAAYQ,CAAQ,CACtD,EAEAN,EAAgB,UAAY,CAC1B,WAAWG,EAAU,CAAC,CACxB,EAIJ,IAAII,EACAC,EAAQ,CAAC,EAEb,SAASL,GAAW,CAClBI,EAAW,GAGX,QAFIZ,EAAGc,EACHC,EAAMF,EAAM,OACTE,GAAK,CAIV,IAHAD,EAAWD,EACXA,EAAQ,CAAC,EACTb,EAAI,GACG,EAAEA,EAAIe,GACXD,EAASd,CAAC,EAAE,EAEde,EAAMF,EAAM,MACd,CACAD,EAAW,EACb,CAEAzB,EAAO,QAAU6B,EACjB,SAASA,EAAUC,EAAM,CACnBJ,EAAM,KAAKI,CAAI,IAAM,GAAK,CAACL,GAC7BP,EAAc,CAElB,CAEA,GAAG,KAAK,KAAK,OAAO,QAAW,YAAc,OAAS,OAAO,MAAS,YAAc,KAAO,OAAO,QAAW,YAAc,OAAS,CAAC,CAAC,CACtI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,SAASH,EAAQf,EAAOD,EAAQ,CACzC,aACA,IAAI8B,EAAYd,EAAQ,CAAC,EAGzB,SAASgB,GAAW,CAAC,CAErB,IAAIC,EAAW,CAAC,EAEZC,EAAW,CAAC,UAAU,EACtBC,EAAY,CAAC,WAAW,EACxBC,EAAU,CAAC,SAAS,EAExBnC,EAAO,QAAUoC,EAEjB,SAASA,EAAQC,EAAU,CACzB,GAAI,OAAOA,GAAa,WACtB,MAAM,IAAI,UAAU,6BAA6B,EAEnD,KAAK,MAAQF,EACb,KAAK,MAAQ,CAAC,EACd,KAAK,QAAU,OACXE,IAAaN,GACfO,EAAsB,KAAMD,CAAQ,CAExC,CAEAD,EAAQ,UAAU,MAAW,SAAUG,EAAY,CACjD,OAAO,KAAK,KAAK,KAAMA,CAAU,CACnC,EACAH,EAAQ,UAAU,KAAO,SAAUI,EAAaD,EAAY,CAC1D,GAAI,OAAOC,GAAgB,YAAc,KAAK,QAAUN,GACtD,OAAOK,GAAe,YAAc,KAAK,QAAUN,EACnD,OAAO,KAET,IAAIQ,EAAU,IAAI,KAAK,YAAYV,CAAQ,EAC3C,GAAI,KAAK,QAAUI,EAAS,CAC1B,IAAIE,EAAW,KAAK,QAAUH,EAAYM,EAAcD,EACxDG,EAAOD,EAASJ,EAAU,KAAK,OAAO,CACxC,MACE,KAAK,MAAM,KAAK,IAAIM,EAAUF,EAASD,EAAaD,CAAU,CAAC,EAGjE,OAAOE,CACT,EACA,SAASE,EAAUF,EAASD,EAAaD,EAAY,CACnD,KAAK,QAAUE,EACX,OAAOD,GAAgB,aACzB,KAAK,YAAcA,EACnB,KAAK,cAAgB,KAAK,oBAExB,OAAOD,GAAe,aACxB,KAAK,WAAaA,EAClB,KAAK,aAAe,KAAK,kBAE7B,CACAI,EAAU,UAAU,cAAgB,SAAUC,EAAO,CACnDZ,EAAS,QAAQ,KAAK,QAASY,CAAK,CACtC,EACAD,EAAU,UAAU,mBAAqB,SAAUC,EAAO,CACxDF,EAAO,KAAK,QAAS,KAAK,YAAaE,CAAK,CAC9C,EACAD,EAAU,UAAU,aAAe,SAAUC,EAAO,CAClDZ,EAAS,OAAO,KAAK,QAASY,CAAK,CACrC,EACAD,EAAU,UAAU,kBAAoB,SAAUC,EAAO,CACvDF,EAAO,KAAK,QAAS,KAAK,WAAYE,CAAK,CAC7C,EAEA,SAASF,EAAOD,EAASI,EAAMD,EAAO,CACpCf,EAAU,UAAY,CACpB,IAAIiB,EACJ,GAAI,CACFA,EAAcD,EAAKD,CAAK,CAC1B,OAASxC,GAAG,CACV,OAAO4B,EAAS,OAAOS,EAASrC,EAAC,CACnC,CACI0C,IAAgBL,EAClBT,EAAS,OAAOS,EAAS,IAAI,UAAU,oCAAoC,CAAC,EAE5ET,EAAS,QAAQS,EAASK,CAAW,CAEzC,CAAC,CACH,CAEAd,EAAS,QAAU,SAAUe,EAAMH,EAAO,CACxC,IAAII,EAASC,EAASC,EAASN,CAAK,EACpC,GAAII,EAAO,SAAW,QACpB,OAAOhB,EAAS,OAAOe,EAAMC,EAAO,KAAK,EAE3C,IAAIG,EAAWH,EAAO,MAEtB,GAAIG,EACFb,EAAsBS,EAAMI,CAAQ,MAC/B,CACLJ,EAAK,MAAQb,EACba,EAAK,QAAUH,EAGf,QAFI/B,GAAI,GACJe,GAAMmB,EAAK,MAAM,OACd,EAAElC,GAAIe,IACXmB,EAAK,MAAMlC,EAAC,EAAE,cAAc+B,CAAK,CAErC,CACA,OAAOG,CACT,EACAf,EAAS,OAAS,SAAUe,EAAMK,EAAO,CACvCL,EAAK,MAAQd,EACbc,EAAK,QAAUK,EAGf,QAFIvC,EAAI,GACJe,EAAMmB,EAAK,MAAM,OACd,EAAElC,EAAIe,GACXmB,EAAK,MAAMlC,CAAC,EAAE,aAAauC,CAAK,EAElC,OAAOL,CACT,EAEA,SAASG,EAAQG,EAAK,CAEpB,IAAIC,EAAOD,GAAOA,EAAI,KACtB,GAAIA,IAAQ,OAAOA,GAAQ,UAAY,OAAOA,GAAQ,aAAe,OAAOC,GAAS,WACnF,OAAO,UAAoB,CACzBA,EAAK,MAAMD,EAAK,SAAS,CAC3B,CAEJ,CAEA,SAASf,EAAsBS,EAAMI,EAAU,CAE7C,IAAIhC,EAAS,GACb,SAASoC,EAAQX,GAAO,CAClBzB,IAGJA,EAAS,GACTa,EAAS,OAAOe,EAAMH,EAAK,EAC7B,CAEA,SAASY,GAAUZ,GAAO,CACpBzB,IAGJA,EAAS,GACTa,EAAS,QAAQe,EAAMH,EAAK,EAC9B,CAEA,SAASa,IAAc,CACrBN,EAASK,GAAWD,CAAO,CAC7B,CAEA,IAAIP,GAASC,EAASQ,EAAW,EAC7BT,GAAO,SAAW,SACpBO,EAAQP,GAAO,KAAK,CAExB,CAEA,SAASC,EAASJ,EAAMD,EAAO,CAC7B,IAAIc,EAAM,CAAC,EACX,GAAI,CACFA,EAAI,MAAQb,EAAKD,CAAK,EACtBc,EAAI,OAAS,SACf,OAAStD,EAAG,CACVsD,EAAI,OAAS,QACbA,EAAI,MAAQtD,CACd,CACA,OAAOsD,CACT,CAEAtB,EAAQ,QAAUuB,EAClB,SAASA,EAAQf,EAAO,CACtB,OAALine 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{w as y}from"./chunk-XP2G5PMM.js";import"./chunk-UG4IOEUD.js";import"./chunk-LNOKARBD.js";import"./chunk-A7SWO6EA.js";import"./chunk-XQHODGIL.js";import{J as m,m as c,p}from"./chunk-4676AC7I.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-MDTGV5B7.js.map
import{a as x}from"./chunk-3FIVEUG2.js";import{w as y}from"./chunk-S75754OX.js";import"./chunk-UG4IOEUD.js";import"./chunk-LNOKARBD.js";import"./chunk-A7SWO6EA.js";import"./chunk-GO3ZR2EJ.js";import{J as m,m as c,p}from"./chunk-4676AC7I.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-XCR776LM.js.map
File renamed without changes.
+1 -1
View File
@@ -1,2 +1,2 @@
import{b as v,c as P}from"./chunk-XQHODGIL.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-GO3ZR2EJ.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
@@ -1,2 +1,2 @@
import{K as Q,c as z,d as X,e as L,k as j,r as J}from"./chunk-4676AC7I.js";import{$ as Z,K as P,L as N,T as Y,W as s,X as q,Z as F,aa as _}from"./chunk-TYDI7JZQ.js";import"./chunk-KT7KMEQC.js";var o0=F([[s.A,0,16],[s.LEFT,0,4],[s.RIGHT,0,8],[s.P2_A,1,16],[s.P2_LEFT,1,4],[s.P2_RIGHT,1,8],[s.SELECT,0,1],[s.START,1,1],[s.VK_2,1,2]]),h0=F([[s.UP,0,-1],[s.B,0,-2],[s.VK_7,0,-4],[s.A,0,-8],[s.RIGHT,0,-16],[s.LEFT,0,-32],[s.VK_6,0,-64],[s.SELECT,0,-128],[s.START,1,-128],[s.VK_2,1,-64],[s.DOWN,2,-64]]),u0=[33,71,151,8448,18176,38656,5308416,11403264],c0=function(n,b,t,r,f){var u=f.gfxBase||10240;this.missileWidth=f.missileWidth||4,this.missileOffset=f.missileOffset||0,this.showOffscreenObjects=!1,this.frameCounter=0,this.starsEnabled=0;for(var k=[],T=0;T<256;T++)k[T]=N();this.advanceFrame=function(){this.frameCounter=this.frameCounter+1&255},this.drawScanline=function(c,x){var l=x*264;if(!this.showOffscreenObjects&&(x<16||x>=240)){for(var e=0;e<264;e++)c[l+e]=4278190080;return}for(var a=l,C=0;C<32;C++)for(var I=C,s0=t[I*2],a0=t[I*2+1],D=x+s0&255,i0=D>>3<<5,o=D&7,n0=b[i0+I],A=(a0&7)<<2,m=u+(n0<<3)+o,d=n[m],v=n[m+2048],e=0;e<8;e++){var h=128>>e,p=A+(d&h?1:0)+(v&h?2:0);c[a]=r[p],a++}for(var w=7;w>=0;w--){var y=(w<<2)+64,f0=t[y],B=240-(f0-(w<3?1:0)),o=x-B;if(o>=0&&o<16){var O=t[y+3]+1;if(O==0&&!this.showOffscreenObjects)continue;var E=t[y+1],K=E&64;E&128&&(o=15-o),E&=63;var A=(t[y+2]&7)<<2,m=u+(E<<5)+(o<8?o:o+8);a=l+O;for(var d=n[m],v=n[m+2048],e=0;e<8;e++){var h=128>>e,p=(d&h?1:0)+(v&h?2:0);p&&(c[K?a+15-e:a+e]=r[A+p])}for(var d=n[m+8],v=n[m+2056],e=0;e<8;e++){var h=128>>e,p=(d&h?1:0)+(v&h?2:0);p&&(c[K?a+7-e:a+e+8]=r[A+p])}}}for(var G=255,W=255,i=0;i<8;i++){var B=t[96+(i<<2)+1];(B+x-(i<3?1:0)&255)==255&&(i!=7?G=i:W=i)}for(var e=0;e<2;e++)if(i=e?W:G,i!=255)for(var O=255-t[96+(i<<2)+3],a=l+O-this.missileOffset,x0=i==7?4294967040:4294967295,H=0;H<this.missileWidth;H++)c[a++]=x0;if(this.starsEnabled){var V=this.frameCounter+k[x&255]&255;if(V+x&16){var a=l+V;(c[a]&16777215)==0&&(c[a]=r[x&31])}}}},t0=18432e3,m0=264,r0=t0/6,e0=t0/3/192/2,p0=e0/132/2,O0=1/p0*(20/132),l0=r0/e0,M=8,$=2,d0=60*m0,g=class extends J{constructor(){super();this.options={};this.palBase=14336;this.keyMap=o0;this.cpuFrequency=r0;this.canvasWidth=264;this.numTotalScanlines=264;this.numVisibleScanlines=264;this.defaultROMSize=16384;this.sampleRate=d0*$;this.cpuCyclesPerLine=l0|0;this.rotate=90;this.cpu=new z;this.ram=new Uint8Array(2048);this.vram=new Uint8Array(1024);this.oram=new Uint8Array(256);this.watchdog_counter=0;this.interruptEnabled=0;this.defaultInputs=[14,8,0];this.read=_([[0,16383,0,t=>this.rom?this.rom[t]:null],[16384,18431,1023,t=>this.ram[t]],[20480,22527,1023,t=>this.vram[t]],[22528,24575,255,t=>this.oram[t]],[24576,24576,0,t=>this.inputs[0]],[26624,26624,0,t=>this.inputs[1]],[28672,28672,0,t=>this.inputs[2]],[30720,30720,0,t=>{this.watchdog_counter=M}]]);this.write=_([[16384,18431,1023,(t,r)=>{this.ram[t]=r}],[20480,22527,1023,(t,r)=>{this.vram[t]=r}],[22528,24575,255,(t,r)=>{this.oram[t]=r}],[28673,28673,0,(t,r)=>{this.interruptEnabled=r&1}],[28676,28676,0,(t,r)=>{this.gfx.starsEnabled=r&1}]]);var t=new X;this.psg1=new L(t),this.psg2=new L(t),this.audioadapter=new j([this.psg1.psg,this.psg2.psg],$,this.sampleRate),this.init()}init(){this.rom=new Uint8Array(this.defaultROMSize),this.palette=new Uint32Array(new ArrayBuffer(128)),this.gfx=new c0(this.rom,this.vram,this.oram,this.palette,this.options),this.connectCPUMemoryBus(this),this.connectCPUIOBus(this.newIOBus()),this.inputs.set(this.defaultInputs),this.handler=q(this.inputs,this.keyMap)}readConst(t){return t<28672?this.read(t):null}newIOBus(){return{read:t=>0,write:(t,r)=>{t&1&&this.psg1.selectRegister(r&15),t&2&&this.psg1.setData(r),t&4&&this.psg2.selectRegister(r&15),t&8&&this.psg2.setData(r)}}}reset(){super.reset(),this.psg1.reset(),this.psg2.reset(),this.watchdog_counter=M}startScanline(){this.audio&&this.audioadapter&&this.audioadapter.generate(this.audio)}drawScanline(){this.gfx.drawScanline(this.pixels,this.scanline)}advanceFrame(t){var r=super.advanceFrame(t);if(this.gfx.advanceFrame(),!this.gfx.showOffscreenObjects)for(var f=0;f<264;f++)this.pixels.fill(4278190080,256+f*264,264+f*264);if(this.watchdog_counter--<=0)throw new Y("WATCHDOG FIRED");return this.interruptEnabled&&this.cpu.NMI(),r}loadROM(t){this.rom.set(Z(t,this.defaultROMSize));for(var r=0;r<32;r++){var f=this.rom[this.palBase+r];this.palette[r]=4278190080;for(var u=0;u<8;u++)1<<u&f&&(this.palette[r]+=u0[u])}}loadState(t){super.loadState(t),this.vram.set(t.bv),this.oram.set(t.bo),this.watchdog_counter=t.wdc,this.interruptEnabled=t.ie,this.gfx.starsEnabled=t.se,this.gfx.frameCounter=t.fc}saveState(){var t=super.saveState();return t.bv=this.vram.slice(0),t.bo=this.oram.slice(0),t.fc=this.gfx.frameCounter,t.ie=this.interruptEnabled,t.se=this.gfx.starsEnabled,t.wdc=this.watchdog_counter,t}},S=class extends g{constructor(){super();this.defaultROMSize=20512;this.palBase=20480;this.scramble=!0;this.keyMap=h0;this.options=Line truncated
//# sourceMappingURL=galaxian-2ZINMM4F.js.map
import{K as Q,c as z,d as X,e as L,k as j,r as J}from"./chunk-4676AC7I.js";import{$ as Z,K as P,L as N,T as Y,W as s,X as q,Z as F,aa as _}from"./chunk-TYDI7JZQ.js";import"./chunk-KT7KMEQC.js";var o0=F([[s.A,0,16],[s.LEFT,0,4],[s.RIGHT,0,8],[s.P2_A,1,16],[s.P2_LEFT,1,4],[s.P2_RIGHT,1,8],[s.SELECT,0,1],[s.START,1,1],[s.VK_2,1,2]]),h0=F([[s.UP,0,-1],[s.B,0,-2],[s.VK_7,0,-4],[s.A,0,-8],[s.RIGHT,0,-16],[s.LEFT,0,-32],[s.VK_6,0,-64],[s.SELECT,0,-128],[s.START,1,-128],[s.VK_2,1,-64],[s.DOWN,2,-64]]),u0=[33,71,151,8448,18176,38656,5308416,11403264],c0=function(n,b,t,r,f){var u=f.gfxBase||10240;this.missileWidth=f.missileWidth||4,this.missileOffset=f.missileOffset||0,this.showOffscreenObjects=!1,this.frameCounter=0,this.starsEnabled=0;for(var k=[],T=0;T<256;T++)k[T]=N();this.advanceFrame=function(){this.frameCounter=this.frameCounter+1&255},this.drawScanline=function(c,x){var l=x*264;if(!this.showOffscreenObjects&&(x<16||x>=240)){for(var e=0;e<264;e++)c[l+e]=4278190080;return}for(var a=l,C=0;C<32;C++)for(var I=C,s0=t[I*2],a0=t[I*2+1],D=x+s0&255,i0=D>>3<<5,o=D&7,n0=b[i0+I],A=(a0&7)<<2,m=u+(n0<<3)+o,d=n[m],v=n[m+2048],e=0;e<8;e++){var h=128>>e,p=A+(d&h?1:0)+(v&h?2:0);c[a]=r[p],a++}for(var w=7;w>=0;w--){var y=(w<<2)+64,f0=t[y],B=240-(f0-(w<3?1:0)),o=x-B;if(o>=0&&o<16){var O=t[y+3]+1;if(O==0&&!this.showOffscreenObjects)continue;var E=t[y+1],K=E&64;E&128&&(o=15-o),E&=63;var A=(t[y+2]&7)<<2,m=u+(E<<5)+(o<8?o:o+8);a=l+O;for(var d=n[m],v=n[m+2048],e=0;e<8;e++){var h=128>>e,p=(d&h?1:0)+(v&h?2:0);p&&(c[K?a+15-e:a+e]=r[A+p])}for(var d=n[m+8],v=n[m+2056],e=0;e<8;e++){var h=128>>e,p=(d&h?1:0)+(v&h?2:0);p&&(c[K?a+7-e:a+e+8]=r[A+p])}}}for(var G=255,W=255,i=0;i<8;i++){var B=t[96+(i<<2)+1];(B+x-(i<3?1:0)&255)==255&&(i!=7?G=i:W=i)}for(var e=0;e<2;e++)if(i=e?W:G,i!=255)for(var O=255-t[96+(i<<2)+3],a=l+O-this.missileOffset,x0=i==7?4294967040:4294967295,H=0;H<this.missileWidth;H++)c[a++]=x0;if(this.starsEnabled){var V=this.frameCounter+k[x&255]&255;if(V+x&16){var a=l+V;(c[a]&16777215)==0&&(c[a]=r[x&31])}}}},t0=18432e3,m0=264,r0=t0/6,e0=t0/3/192/2,p0=e0/132/2,y0=1/p0*(20/132),l0=r0/e0,M=8,$=2,d0=60*m0,g=class extends J{constructor(){super();this.options={};this.palBase=14336;this.keyMap=o0;this.cpuFrequency=r0;this.canvasWidth=264;this.numTotalScanlines=264;this.numVisibleScanlines=264;this.defaultROMSize=16384;this.sampleRate=d0*$;this.cpuCyclesPerLine=l0|0;this.rotate=90;this.cpu=new z;this.ram=new Uint8Array(2048);this.vram=new Uint8Array(1024);this.oram=new Uint8Array(256);this.watchdog_counter=0;this.interruptEnabled=0;this.defaultInputs=[14,8,0];this.read=_([[0,16383,0,t=>this.rom?this.rom[t]:null],[16384,18431,1023,t=>this.ram[t]],[20480,22527,1023,t=>this.vram[t]],[22528,24575,255,t=>this.oram[t]],[24576,24576,0,t=>this.inputs[0]],[26624,26624,0,t=>this.inputs[1]],[28672,28672,0,t=>this.inputs[2]],[30720,30720,0,t=>{this.watchdog_counter=M}]]);this.write=_([[16384,18431,1023,(t,r)=>{this.ram[t]=r}],[20480,22527,1023,(t,r)=>{this.vram[t]=r}],[22528,24575,255,(t,r)=>{this.oram[t]=r}],[28673,28673,0,(t,r)=>{this.interruptEnabled=r&1}],[28676,28676,0,(t,r)=>{this.gfx.starsEnabled=r&1}]]);var t=new X;this.psg1=new L(t),this.psg2=new L(t),this.audioadapter=new j([this.psg1.psg,this.psg2.psg],$,this.sampleRate),this.init()}init(){this.rom=new Uint8Array(this.defaultROMSize),this.palette=new Uint32Array(new ArrayBuffer(128)),this.gfx=new c0(this.rom,this.vram,this.oram,this.palette,this.options),this.connectCPUMemoryBus(this),this.connectCPUIOBus(this.newIOBus()),this.inputs.set(this.defaultInputs),this.handler=q(this.inputs,this.keyMap)}readConst(t){return t<28672?this.read(t):null}newIOBus(){return{read:t=>0,write:(t,r)=>{t&1&&this.psg1.selectRegister(r&15),t&2&&this.psg1.setData(r),t&4&&this.psg2.selectRegister(r&15),t&8&&this.psg2.setData(r)}}}reset(){super.reset(),this.psg1.reset(),this.psg2.reset(),this.watchdog_counter=M}startScanline(){this.audio&&this.audioadapter&&this.audioadapter.generate(this.audio)}drawScanline(){this.gfx.drawScanline(this.pixels,this.scanline)}advanceFrame(t){var r=super.advanceFrame(t);if(this.gfx.advanceFrame(),!this.gfx.showOffscreenObjects)for(var f=0;f<264;f++)this.pixels.fill(4278190080,256+f*264,264+f*264);if(this.watchdog_counter--<=0)throw new Y("WATCHDOG FIRED");return this.interruptEnabled&&this.cpu.NMI(),r}loadROM(t){this.rom.set(Z(t,this.defaultROMSize));for(var r=0;r<32;r++){var f=this.rom[this.palBase+r];this.palette[r]=4278190080;for(var u=0;u<8;u++)1<<u&f&&(this.palette[r]+=u0[u])}}loadState(t){super.loadState(t),this.vram.set(t.bv),this.oram.set(t.bo),this.watchdog_counter=t.wdc,this.interruptEnabled=t.ie,this.gfx.starsEnabled=t.se,this.gfx.frameCounter=t.fc}saveState(){var t=super.saveState();return t.bv=this.vram.slice(0),t.bo=this.oram.slice(0),t.fc=this.gfx.frameCounter,t.ie=this.interruptEnabled,t.se=this.gfx.starsEnabled,t.wdc=this.watchdog_counter,t}},S=class extends g{constructor(){super();this.defaultROMSize=20512;this.palBase=20480;this.scramble=!0;this.keyMap=h0;this.options=Line truncated
//# sourceMappingURL=galaxian-KNJ55ELW.js.map
@@ -1,7 +1,7 @@
{
"version": 3,
"sources": ["../src/machine/galaxian.ts", "../src/platform/galaxian.ts"],
"sourcesContent": ["\nimport { Z80, Z80State } from \"../common/cpu/ZilogZ80\";\nimport { BasicScanlineMachine } from \"../common/devices\";\nimport { KeyFlags, newAddressDecoder, padBytes, noise, Keys, makeKeycodeMap, newKeyboardHandler, EmuHalt } from \"../common/emu\";\nimport { TssChannelAdapter, MasterAudio, AY38910_Audio } from \"../common/audio\";\nimport { hex } from \"../common/util\";\n\nconst GALAXIAN_KEYCODE_MAP = makeKeycodeMap([\n [Keys.A, 0, 0x10], // P1\n [Keys.LEFT, 0, 0x4],\n [Keys.RIGHT, 0, 0x8],\n [Keys.P2_A, 1, 0x10], // P2\n [Keys.P2_LEFT, 1, 0x4],\n [Keys.P2_RIGHT, 1, 0x8],\n [Keys.SELECT, 0, 0x1],\n [Keys.START, 1, 0x1],\n [Keys.VK_2, 1, 0x2],\n]);\n\nconst SCRAMBLE_KEYCODE_MAP = makeKeycodeMap([\n [Keys.UP, 0, -0x1], // P1\n [Keys.B, 0, -0x2], // fire\n [Keys.VK_7, 0, -0x4], // credit\n [Keys.A, 0, -0x8], // bomb\n [Keys.RIGHT, 0, -0x10],\n [Keys.LEFT, 0, -0x20],\n [Keys.VK_6, 0, -0x40],\n [Keys.SELECT, 0, -0x80],\n [Keys.START, 1, -0x80],\n [Keys.VK_2, 1, -0x40],\n [Keys.DOWN, 2, -0x40],\n //[Keys.VK_UP, 2, -0x10],\n]);\n\nconst bitcolors = [\n 0x000021, 0x000047, 0x000097, // red\n 0x002100, 0x004700, 0x009700, // green\n 0x510000, 0xae0000 // blue\n];\n\nconst GalaxianVideo = function (rom: Uint8Array, vram: Uint8Array, oram: Uint8Array, palette: Uint32Array, options) {\n\n var gfxBase = options.gfxBase || 0x2800;\n this.missileWidth = options.missileWidth || 4;\n this.missileOffset = options.missileOffset || 0;\n this.showOffscreenObjects = false;\n this.frameCounter = 0;\n this.starsEnabled = 0;\n var stars = [];\n for (var i = 0; i < 256; i++)\n stars[i] = noise();\n\n this.advanceFrame = function () {\n this.frameCounter = (this.frameCounter + 1) & 0xff;\n }\n\n this.drawScanline = function (pixels, sl) {\n var pixofs = sl * 264;\n // hide offscreen on left + right (b/c rotated)\n if (!this.showOffscreenObjects && (sl < 16 || sl >= 240)) {\n for (var i = 0; i < 264; i++)\n pixels[pixofs + i] = 0xff000000;\n return; // offscreen\n }\n // draw tiles\n var outi = pixofs; // starting output pixel in frame buffer\n for (var xx = 0; xx < 32; xx++) {\n var xofs = xx;\n var scroll = oram[xofs * 2]; // even entries control scroll position\n var attrib = oram[xofs * 2 + 1]; // odd entries control the color base\n var sl2 = (sl + scroll) & 0xff;\n var vramofs = (sl2 >> 3) << 5; // offset in VRAM\n var yy = sl2 & 7; // y offset within tile\n var tile = vram[vramofs + xofs]; // TODO: why undefined?\n var color0 = (attrib & 7) << 2;\n var addr = gfxBase + (tile << 3) + yy;\n var data1 = rom[addr];\n var data2 = rom[addr + 0x800];\n for (var i = 0; i < 8; i++) {\n var bm = 128 >> i;\n var color = color0 + ((data1 & bm) ? 1 : 0) + ((data2 & bm) ? 2 : 0);\n pixels[outi] = palette[color];\n outi++;\n }\n }\n // draw sprites\n for (var sprnum = 7; sprnum >= 0; sprnum--) {\n var base = (sprnum << 2) + 0x40;\n var base0 = oram[base];\n var sy = 240 - (base0 - ((sprnum < 3) ? 1 : 0)); // the first three sprites match against y-1\n var yy = (sl - sy);\n if (yy >= 0 && yy < 16) {\n var sx = oram[base + 3] + 1; // +1 pixel offset from tiles\n if (sx == 0 && !this.showOffscreenObjects) {\n continue; // drawn off-buffer\n }\n var code = oram[base + 1];\n var flipx = code & 0x40; // TODO: flipx\n if (code & 0x80) // flipy\n yy = 15 - yy;\n code &= 0x3f;\n var color0 = (oram[base + 2] & 7) << 2;\n var addr = gfxBase + (code << 5) + (yy < 8 ? yy : yy + 8);\n outi = pixofs + sx; //<< 1\n var data1 = rom[addr];\n var data2 = rom[addr + 0x800];\n for (var i = 0; i < 8; i++) {\n var bm = 128 >> i;\n var color = ((data1 & bm) ? 1 : 0) + ((data2 & bm) ? 2 : 0);\n if (color)\n pixels[flipx ? (outi + 15 - i) : (outi + i)] = palette[color0 + color];\n }\n var data1 = rom[addr + 8];\n var data2 = rom[addr + 0x808];\n for (var i = 0; i < 8; i++) {\n var bm = 128 >> i;\n var color = ((data1 & bm) ? 1 : 0) + ((data2 & bm) ? 2 : 0);\n if (color)\n pixels[flipx ? (outi + 7 - i) : (outi + i + 8)] = palette[color0 + color];\n }\n }\n }\n // draw bLine truncated
"mappings": "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 truncated
"names": ["GALAXIAN_KEYCODE_MAP", "makeKeycodeMap", "Keys", "SCRAMBLE_KEYCODE_MAP", "bitcolors", "GalaxianVideo", "rom", "vram", "oram", "palette", "options", "gfxBase", "stars", "i", "noise", "pixels", "sl", "pixofs", "outi", "xx", "xofs", "scroll", "attrib", "sl2", "vramofs", "yy", "tile", "color0", "addr", "data1", "data2", "bm", "color", "sprnum", "base", "base0", "sy", "sx", "code", "flipx", "shell", "missile", "which", "col", "j", "starx", "XTAL", "scanlinesPerFrame", "cpuFrequency", "hsyncFrequency", "vsyncFrequency", "vblankDuration", "cpuCyclesPerLine", "INITIAL_WATCHDOG", "audioOversample", "audioSampleRate", "GalaxianMachine", "BasicScanlineMachine", "Z80", "newAddressDecoder", "a", "v", "audio", "MasterAudio", "AY38910_Audio", "TssChannelAdapter", "newKeyboardHandler", "val", "trap", "steps", "EmuHalt", "data", "padBytes", "b", "state", "GalaxianScrambleMachine", "bit", "GALAXIAN_PRESETS", "GalaxianPlatform", "BaseZ80MachinePlatform", "GalaxianMachine", "a", "GalaxianScramblePlatform", "GalaxianScrambleMachine", "PLATFORMS"]
"sourcesContent": ["\nimport { Z80, Z80State } from \"../common/cpu/ZilogZ80\";\nimport { BasicScanlineMachine } from \"../common/devices\";\nimport { KeyFlags, newAddressDecoder, padBytes, noise, Keys, makeKeycodeMap, newKeyboardHandler, EmuHalt } from \"../common/emu\";\nimport { TssChannelAdapter, MasterAudio, AY38910_Audio } from \"../common/audio\";\nimport { hex } from \"../common/util\";\n\nconst GALAXIAN_KEYCODE_MAP = makeKeycodeMap([\n [Keys.A, 0, 0x10], // P1\n [Keys.LEFT, 0, 0x4],\n [Keys.RIGHT, 0, 0x8],\n [Keys.P2_A, 1, 0x10], // P2\n [Keys.P2_LEFT, 1, 0x4],\n [Keys.P2_RIGHT, 1, 0x8],\n [Keys.SELECT, 0, 0x1],\n [Keys.START, 1, 0x1],\n [Keys.VK_2, 1, 0x2],\n]);\n\nconst SCRAMBLE_KEYCODE_MAP = makeKeycodeMap([\n [Keys.UP, 0, -0x1], // P1\n [Keys.B, 0, -0x2], // fire\n [Keys.VK_7, 0, -0x4], // credit\n [Keys.A, 0, -0x8], // bomb\n [Keys.RIGHT, 0, -0x10],\n [Keys.LEFT, 0, -0x20],\n [Keys.VK_6, 0, -0x40],\n [Keys.SELECT, 0, -0x80],\n [Keys.START, 1, -0x80],\n [Keys.VK_2, 1, -0x40],\n [Keys.DOWN, 2, -0x40],\n //[Keys.VK_UP, 2, -0x10],\n]);\n\nconst bitcolors = [\n 0x000021, 0x000047, 0x000097, // red\n 0x002100, 0x004700, 0x009700, // green\n 0x510000, 0xae0000 // blue\n];\n\nconst GalaxianVideo = function (rom: Uint8Array, vram: Uint8Array, oram: Uint8Array, palette: Uint32Array, options) {\n\n var gfxBase = options.gfxBase || 0x2800;\n this.missileWidth = options.missileWidth || 4;\n this.missileOffset = options.missileOffset || 0;\n this.showOffscreenObjects = false;\n this.frameCounter = 0;\n this.starsEnabled = 0;\n var stars = [];\n for (var i = 0; i < 256; i++)\n stars[i] = noise();\n\n this.advanceFrame = function () {\n this.frameCounter = (this.frameCounter + 1) & 0xff;\n }\n\n this.drawScanline = function (pixels, sl) {\n var pixofs = sl * 264;\n // hide offscreen on left + right (b/c rotated)\n if (!this.showOffscreenObjects && (sl < 16 || sl >= 240)) {\n for (var i = 0; i < 264; i++)\n pixels[pixofs + i] = 0xff000000;\n return; // offscreen\n }\n // draw tiles\n var outi = pixofs; // starting output pixel in frame buffer\n for (var xx = 0; xx < 32; xx++) {\n var xofs = xx;\n var scroll = oram[xofs * 2]; // even entries control scroll position\n var attrib = oram[xofs * 2 + 1]; // odd entries control the color base\n var sl2 = (sl + scroll) & 0xff;\n var vramofs = (sl2 >> 3) << 5; // offset in VRAM\n var yy = sl2 & 7; // y offset within tile\n var tile = vram[vramofs + xofs]; // TODO: why undefined?\n var color0 = (attrib & 7) << 2;\n var addr = gfxBase + (tile << 3) + yy;\n var data1 = rom[addr];\n var data2 = rom[addr + 0x800];\n for (var i = 0; i < 8; i++) {\n var bm = 128 >> i;\n var color = color0 + ((data1 & bm) ? 1 : 0) + ((data2 & bm) ? 2 : 0);\n pixels[outi] = palette[color];\n outi++;\n }\n }\n // draw sprites\n for (var sprnum = 7; sprnum >= 0; sprnum--) {\n var base = (sprnum << 2) + 0x40;\n var base0 = oram[base];\n var sy = 240 - (base0 - ((sprnum < 3) ? 1 : 0)); // the first three sprites match against y-1\n var yy = (sl - sy);\n if (yy >= 0 && yy < 16) {\n var sx = oram[base + 3] + 1; // +1 pixel offset from tiles\n if (sx == 0 && !this.showOffscreenObjects) {\n continue; // drawn off-buffer\n }\n var code = oram[base + 1];\n var flipx = code & 0x40; // TODO: flipx\n if (code & 0x80) // flipy\n yy = 15 - yy;\n code &= 0x3f;\n var color0 = (oram[base + 2] & 7) << 2;\n var addr = gfxBase + (code << 5) + (yy < 8 ? yy : yy + 8);\n outi = pixofs + sx; //<< 1\n var data1 = rom[addr];\n var data2 = rom[addr + 0x800];\n for (var i = 0; i < 8; i++) {\n var bm = 128 >> i;\n var color = ((data1 & bm) ? 1 : 0) + ((data2 & bm) ? 2 : 0);\n if (color)\n pixels[flipx ? (outi + 15 - i) : (outi + i)] = palette[color0 + color];\n }\n var data1 = rom[addr + 8];\n var data2 = rom[addr + 0x808];\n for (var i = 0; i < 8; i++) {\n var bm = 128 >> i;\n var color = ((data1 & bm) ? 1 : 0) + ((data2 & bm) ? 2 : 0);\n if (color)\n pixels[flipx ? (outi + 7 - i) : (outi + i + 8)] = palette[color0 + color];\n }\n }\n }\n // draw bLine truncated
"mappings": "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 truncated
"names": ["GALAXIAN_KEYCODE_MAP", "makeKeycodeMap", "Keys", "SCRAMBLE_KEYCODE_MAP", "bitcolors", "GalaxianVideo", "rom", "vram", "oram", "palette", "options", "gfxBase", "stars", "i", "noise", "pixels", "sl", "pixofs", "outi", "xx", "xofs", "scroll", "attrib", "sl2", "vramofs", "yy", "tile", "color0", "addr", "data1", "data2", "bm", "color", "sprnum", "base", "base0", "sy", "sx", "code", "flipx", "shell", "missile", "which", "col", "j", "starx", "XTAL", "scanlinesPerFrame", "cpuFrequency", "hsyncFrequency", "vsyncFrequency", "vblankDuration", "cpuCyclesPerLine", "INITIAL_WATCHDOG", "audioOversample", "audioSampleRate", "GalaxianMachine", "BasicScanlineMachine", "Z80", "newAddressDecoder", "a", "v", "audio", "MasterAudio", "AY38910_Audio", "TssChannelAdapter", "newKeyboardHandler", "val", "trap", "steps", "EmuHalt", "data", "padBytes", "b", "state", "GalaxianScrambleMachine", "bit", "GalaxianPlatform", "BaseZ80MachinePlatform", "GalaxianMachine", "a", "GalaxianScramblePlatform", "GalaxianScrambleMachine", "PLATFORMS"]
}
+3 -3
View File
@@ -1,4 +1,4 @@
import{a as D}from"./chunk-A7SWO6EA.js";import{C as K,E as $,H as Y,I as J,r as Z,u as V}from"./chunk-4676AC7I.js";import{K as j,T as z,W as f,X as O,Z as N,aa as W,g as x}from"./chunk-TYDI7JZQ.js";import"./chunk-KT7KMEQC.js";var b=class b{constructor(){this.A=0;this.F=0;this.B=0;this.C=0;this.D=0;this.E=0;this.H=0;this.L=0;this.SP=65534;this.PC=256;this.ime=!1;this.imeDelay=!1;this.halted=!1;this.interruptFlags=0;this.cyclesPerInsn=0;this.o=0;this.stable=!0}connectMemoryBus(t){this.bus=t}reset(){this.A=1,this.F=176,this.B=0,this.C=19,this.D=0,this.E=216,this.H=1,this.L=77,this.SP=65534,this.PC=256,this.ime=!1,this.imeDelay=!1,this.halted=!1,this.interruptFlags=0}interrupt(t){this.interruptFlags|=t}getPC(){return this.PC}getSP(){return this.SP}isStable(){return this.stable}saveState(){return{PC:this.PC,SP:this.SP,AF:this.A<<8|this.F,BC:this.B<<8|this.C,DE:this.D<<8|this.E,HL:this.H<<8|this.L,o:this.o,ime:this.ime?1:0,halted:this.halted,interrupt:this.interruptFlags}}loadState(t){this.PC=t.PC,this.SP=t.SP,this.A=t.AF>>8&255,this.F=t.AF&240,this.B=t.BC>>8&255,this.C=t.BC&255,this.D=t.DE>>8&255,this.E=t.DE&255,this.H=t.HL>>8&255,this.L=t.HL&255,this.o=t.o,this.ime=!!t.ime,this.halted=t.halted,this.interruptFlags=t.interrupt}getAF(){return this.A<<8|this.F&240}getBC(){return this.B<<8|this.C}getDE(){return this.D<<8|this.E}getHL(){return this.H<<8|this.L}setAF(t){this.A=t>>8&255,this.F=t&240}setBC(t){this.B=t>>8&255,this.C=t&255}setDE(t){this.D=t>>8&255,this.E=t&255}setHL(t){this.H=t>>8&255,this.L=t&255}read(t){return this.bus.read(t&65535)}write(t,e){this.bus.write(t&65535,e&255)}readWord(t){return this.read(t)|this.read(t+1)<<8}writeWord(t,e){this.write(t,e&255),this.write(t+1,e>>8&255)}fetchByte(){var t=this.read(this.PC);return this.PC=this.PC+1&65535,t}fetchWord(){var t=this.fetchByte(),e=this.fetchByte();return e<<8|t}fetchSignedByte(){var t=this.fetchByte();return t<128?t:t-256}pushWord(t){this.SP=this.SP-1&65535,this.write(this.SP,t>>8&255),this.SP=this.SP-1&65535,this.write(this.SP,t&255)}popWord(){var t=this.read(this.SP);this.SP=this.SP+1&65535;var e=this.read(this.SP);return this.SP=this.SP+1&65535,e<<8|t}getZ(){return!!(this.F&b.FLAG_Z)}getN(){return!!(this.F&b.FLAG_N)}getH(){return!!(this.F&b.FLAG_H)}getC(){return!!(this.F&b.FLAG_C)}setZ(t){t?this.F|=b.FLAG_Z:this.F&=~b.FLAG_Z}setN(t){t?this.F|=b.FLAG_N:this.F&=~b.FLAG_N}setH(t){t?this.F|=b.FLAG_H:this.F&=~b.FLAG_H}setC(t){t?this.F|=b.FLAG_C:this.F&=~b.FLAG_C}setFlags(t,e,s,i){this.F=(t?b.FLAG_Z:0)|(e?b.FLAG_N:0)|(s?b.FLAG_H:0)|(i?b.FLAG_C:0)}getReg(t){switch(t){case 0:return this.B;case 1:return this.C;case 2:return this.D;case 3:return this.E;case 4:return this.H;case 5:return this.L;case 6:return this.read(this.getHL());case 7:return this.A}return 0}setReg(t,e){switch(e&=255,t){case 0:this.B=e;break;case 1:this.C=e;break;case 2:this.D=e;break;case 3:this.E=e;break;case 4:this.H=e;break;case 5:this.L=e;break;case 6:this.write(this.getHL(),e);break;case 7:this.A=e;break}}getReg16(t){switch(t){case 0:return this.getBC();case 1:return this.getDE();case 2:return this.getHL();case 3:return this.SP}return 0}setReg16(t,e){switch(e&=65535,t){case 0:this.setBC(e);break;case 1:this.setDE(e);break;case 2:this.setHL(e);break;case 3:this.SP=e;break}}getReg16AF(t){switch(t){case 0:return this.getBC();case 1:return this.getDE();case 2:return this.getHL();case 3:return this.getAF()}return 0}setReg16AF(t,e){switch(e&=65535,t){case 0:this.setBC(e);break;case 1:this.setDE(e);break;case 2:this.setHL(e);break;case 3:this.setAF(e);break}}checkCondition(t){switch(t){case 0:return!this.getZ();case 1:return this.getZ();case 2:return!this.getC();case 3:return this.getC()}return!1}addA(t){var e=this.A+t;this.setFlags((e&255)===0,!1,(this.A&15)+(t&15)>15,e>255),this.A=e&255}adcA(t){var e=this.getC()?1:0,s=this.A+t+e;this.setFlags((s&255)===0,!1,(this.A&15)+(t&15)+e>15,s>255),this.A=s&255}subA(t){var e=this.A-t;this.setFlags((e&255)===0,!0,(this.A&15)<(t&15),e<0),this.A=e&255}sbcA(t){var e=this.getC()?1:0,s=this.A-t-e;this.setFlags((s&255)===0,!0,(this.A&15)<(t&15)+e,s<0),this.A=s&255}andA(t){this.A&=t,this.setFlags(this.A===0,!1,!0,!1)}xorA(t){this.A^=t,this.A&=255,this.setFlags(this.A===0,!1,!1,!1)}orA(t){this.A|=t,this.A&=255,this.setFlags(this.A===0,!1,!1,!1)}cpA(t){var e=this.A-t;this.setFlags((e&255)===0,!0,(this.A&15)<(t&15),e<0)}aluOp(t,e){switch(t){case 0:this.addA(e);break;case 1:this.adcA(e);break;case 2:this.subA(e);break;case 3:this.sbcA(e);break;case 4:this.andA(e);break;case 5:this.xorA(e);break;case 6:this.orA(e);break;case 7:this.cpA(e);break}}inc8(t){var e=t+1&255;return this.setZ(e===0),this.setN(!1),this.setH((t&15)===15),e}dec8(t){var e=t-1&255;return this.setZ(e===0),this.setN(!0),this.setH((t&15)===0),e}addHL(t){var e=this.getHL(),s=e+t;this.setN(!1),this.setH((e&4095)+(t&4095)>4095),this.setC(s>65535),this.setHL(s&65535)}daa(){var t=this.A;this.getN()?(this.getC()&&(t-=96),this.getH()&&(t-=6)):((this.getC()||t>153)&&(t+=96,this.setC(!0)),(this.getH(Line truncated
import{a as D}from"./chunk-A7SWO6EA.js";import{C as K,E as $,H as Y,I as J,r as Z,u as V}from"./chunk-4676AC7I.js";import{K as j,T as z,W as f,X as O,Z as N,aa as W,g as x}from"./chunk-TYDI7JZQ.js";import"./chunk-KT7KMEQC.js";var b=class b{constructor(){this.A=0;this.F=0;this.B=0;this.C=0;this.D=0;this.E=0;this.H=0;this.L=0;this.SP=65534;this.PC=256;this.ime=!1;this.imeDelay=!1;this.halted=!1;this.interruptFlags=0;this.cyclesPerInsn=0;this.o=0;this.stable=!0}connectMemoryBus(t){this.bus=t}reset(){this.A=1,this.F=176,this.B=0,this.C=19,this.D=0,this.E=216,this.H=1,this.L=77,this.SP=65534,this.PC=256,this.ime=!1,this.imeDelay=!1,this.halted=!1,this.interruptFlags=0}interrupt(t){this.interruptFlags|=t}getPC(){return this.PC}getSP(){return this.SP}isStable(){return this.stable}saveState(){return{PC:this.PC,SP:this.SP,AF:this.A<<8|this.F,BC:this.B<<8|this.C,DE:this.D<<8|this.E,HL:this.H<<8|this.L,o:this.o,ime:this.ime?1:0,halted:this.halted,interrupt:this.interruptFlags}}loadState(t){this.PC=t.PC,this.SP=t.SP,this.A=t.AF>>8&255,this.F=t.AF&240,this.B=t.BC>>8&255,this.C=t.BC&255,this.D=t.DE>>8&255,this.E=t.DE&255,this.H=t.HL>>8&255,this.L=t.HL&255,this.o=t.o,this.ime=!!t.ime,this.halted=t.halted,this.interruptFlags=t.interrupt}getAF(){return this.A<<8|this.F&240}getBC(){return this.B<<8|this.C}getDE(){return this.D<<8|this.E}getHL(){return this.H<<8|this.L}setAF(t){this.A=t>>8&255,this.F=t&240}setBC(t){this.B=t>>8&255,this.C=t&255}setDE(t){this.D=t>>8&255,this.E=t&255}setHL(t){this.H=t>>8&255,this.L=t&255}read(t){return this.bus.read(t&65535)}write(t,e){this.bus.write(t&65535,e&255)}readWord(t){return this.read(t)|this.read(t+1)<<8}writeWord(t,e){this.write(t,e&255),this.write(t+1,e>>8&255)}fetchByte(){var t=this.read(this.PC);return this.PC=this.PC+1&65535,t}fetchWord(){var t=this.fetchByte(),e=this.fetchByte();return e<<8|t}fetchSignedByte(){var t=this.fetchByte();return t<128?t:t-256}pushWord(t){this.SP=this.SP-1&65535,this.write(this.SP,t>>8&255),this.SP=this.SP-1&65535,this.write(this.SP,t&255)}popWord(){var t=this.read(this.SP);this.SP=this.SP+1&65535;var e=this.read(this.SP);return this.SP=this.SP+1&65535,e<<8|t}getZ(){return!!(this.F&b.FLAG_Z)}getN(){return!!(this.F&b.FLAG_N)}getH(){return!!(this.F&b.FLAG_H)}getC(){return!!(this.F&b.FLAG_C)}setZ(t){t?this.F|=b.FLAG_Z:this.F&=~b.FLAG_Z}setN(t){t?this.F|=b.FLAG_N:this.F&=~b.FLAG_N}setH(t){t?this.F|=b.FLAG_H:this.F&=~b.FLAG_H}setC(t){t?this.F|=b.FLAG_C:this.F&=~b.FLAG_C}setFlags(t,e,s,i){this.F=(t?b.FLAG_Z:0)|(e?b.FLAG_N:0)|(s?b.FLAG_H:0)|(i?b.FLAG_C:0)}getReg(t){switch(t){case 0:return this.B;case 1:return this.C;case 2:return this.D;case 3:return this.E;case 4:return this.H;case 5:return this.L;case 6:return this.read(this.getHL());case 7:return this.A}return 0}setReg(t,e){switch(e&=255,t){case 0:this.B=e;break;case 1:this.C=e;break;case 2:this.D=e;break;case 3:this.E=e;break;case 4:this.H=e;break;case 5:this.L=e;break;case 6:this.write(this.getHL(),e);break;case 7:this.A=e;break}}getReg16(t){switch(t){case 0:return this.getBC();case 1:return this.getDE();case 2:return this.getHL();case 3:return this.SP}return 0}setReg16(t,e){switch(e&=65535,t){case 0:this.setBC(e);break;case 1:this.setDE(e);break;case 2:this.setHL(e);break;case 3:this.SP=e;break}}getReg16AF(t){switch(t){case 0:return this.getBC();case 1:return this.getDE();case 2:return this.getHL();case 3:return this.getAF()}return 0}setReg16AF(t,e){switch(e&=65535,t){case 0:this.setBC(e);break;case 1:this.setDE(e);break;case 2:this.setHL(e);break;case 3:this.setAF(e);break}}checkCondition(t){switch(t){case 0:return!this.getZ();case 1:return this.getZ();case 2:return!this.getC();case 3:return this.getC()}return!1}addA(t){var e=this.A+t;this.setFlags((e&255)===0,!1,(this.A&15)+(t&15)>15,e>255),this.A=e&255}adcA(t){var e=this.getC()?1:0,s=this.A+t+e;this.setFlags((s&255)===0,!1,(this.A&15)+(t&15)+e>15,s>255),this.A=s&255}subA(t){var e=this.A-t;this.setFlags((e&255)===0,!0,(this.A&15)<(t&15),e<0),this.A=e&255}sbcA(t){var e=this.getC()?1:0,s=this.A-t-e;this.setFlags((s&255)===0,!0,(this.A&15)<(t&15)+e,s<0),this.A=s&255}andA(t){this.A&=t,this.setFlags(this.A===0,!1,!0,!1)}xorA(t){this.A^=t,this.A&=255,this.setFlags(this.A===0,!1,!1,!1)}orA(t){this.A|=t,this.A&=255,this.setFlags(this.A===0,!1,!1,!1)}cpA(t){var e=this.A-t;this.setFlags((e&255)===0,!0,(this.A&15)<(t&15),e<0)}aluOp(t,e){switch(t){case 0:this.addA(e);break;case 1:this.adcA(e);break;case 2:this.subA(e);break;case 3:this.sbcA(e);break;case 4:this.andA(e);break;case 5:this.xorA(e);break;case 6:this.orA(e);break;case 7:this.cpA(e);break}}inc8(t){var e=t+1&255;return this.setZ(e===0),this.setN(!1),this.setH((t&15)===15),e}dec8(t){var e=t-1&255;return this.setZ(e===0),this.setN(!0),this.setH((t&15)===0),e}addHL(t){var e=this.getHL(),s=e+t;this.setN(!1),this.setH((e&4095)+(t&4095)>4095),this.setC(s>65535),this.setHL(s&65535)}daa(){var t=this.A;this.getN()?(this.getC()&&(t-=96),this.getH()&&(t-=6)):((this.getC()||t>153)&&(t+=96,this.setC(!0)),(this.getH(Line truncated
LY `+x(this.ly,2)+" LYC "+x(this.lyc,2)+`
SCX `+x(this.scx,2)+" SCY "+x(this.scy,2)+`
WX `+x(this.wx,2)+" WY "+x(this.wy,2)+`
@@ -11,5 +11,5 @@ Bank `+this.romBank+`
`;return this.cgbMode&&(i+=`--- CGB ---
VBK `+this.vramBankSelect+" SVBK "+this.wramBankSelect+`
SPD `+(this.doubleSpeed?"2x":"1x")+`
`),i}}};var he=["nop","ld bc,xx","ld (bc),a","inc bc","inc b","dec b","ld b,x","rlca","ld (xx),sp","add hl,bc","ld a,(bc)","dec bc","inc c","dec c","ld c,x","rrca","stop x","ld de,xx","ld (de),a","inc de","inc d","dec d","ld d,x","rla","jr x","add hl,de","ld a,(de)","dec de","inc e","dec e","ld e,x","rra","jr nz,x","ld hl,xx","ld (hl+),a","inc hl","inc h","dec h","ld h,x","daa","jr z,x","add hl,hl","ld a,(hl+)","dec hl","inc l","dec l","ld l,x","cpl","jr nc,x","ld sp,xx","ld (hl-),a","inc sp","inc (hl)","dec (hl)","ld (hl),x","scf","jr c,x","add hl,sp","ld a,(hl-)","dec sp","inc a","dec a","ld a,x","ccf","ld b,b","ld b,c","ld b,d","ld b,e","ld b,h","ld b,l","ld b,(hl)","ld b,a","ld c,b","ld c,c","ld c,d","ld c,e","ld c,h","ld c,l","ld c,(hl)","ld c,a","ld d,b","ld d,c","ld d,d","ld d,e","ld d,h","ld d,l","ld d,(hl)","ld d,a","ld e,b","ld e,c","ld e,d","ld e,e","ld e,h","ld e,l","ld e,(hl)","ld e,a","ld h,b","ld h,c","ld h,d","ld h,e","ld h,h","ld h,l","ld h,(hl)","ld h,a","ld l,b","ld l,c","ld l,d","ld l,e","ld l,h","ld l,l","ld l,(hl)","ld l,a","ld (hl),b","ld (hl),c","ld (hl),d","ld (hl),e","ld (hl),h","ld (hl),l","halt","ld (hl),a","ld a,b","ld a,c","ld a,d","ld a,e","ld a,h","ld a,l","ld a,(hl)","ld a,a","add a,b","add a,c","add a,d","add a,e","add a,h","add a,l","add a,(hl)","add a,a","adc a,b","adc a,c","adc a,d","adc a,e","adc a,h","adc a,l","adc a,(hl)","adc a,a","sub b","sub c","sub d","sub e","sub h","sub l","sub (hl)","sub a","sbc a,b","sbc a,c","sbc a,d","sbc a,e","sbc a,h","sbc a,l","sbc a,(hl)","sbc a,a","and b","and c","and d","and e","and h","and l","and (hl)","and a","xor b","xor c","xor d","xor e","xor h","xor l","xor (hl)","xor a","or b","or c","or d","or e","or h","or l","or (hl)","or a","cp b","cp c","cp d","cp e","cp h","cp l","cp (hl)","cp a","ret nz","pop bc","jp nz,xx","jp xx","call nz,xx","push bc","add a,x","rst 00h","ret z","ret","jp z,xx","xxCBxx","call z,xx","call xx","adc a,x","rst 08h","ret nc","pop de","jp nc,xx","??","call nc,xx","push de","sub x","rst 10h","ret c","reti","jp c,xx","??","call c,xx","??","sbc a,x","rst 18h","ldh (x),a","pop hl","ld (c),a","??","??","push hl","and x","rst 20h","add sp,x","jp (hl)","ld (xx),a","??","??","??","xor x","rst 28h","ldh a,(x)","pop af","ld a,(c)","di","??","push af","or x","rst 30h","ld hl,sp+x","ld sp,hl","ld a,(xx)","ei","??","??","cp x","rst 38h"],re=["rlc b","rlc c","rlc d","rlc e","rlc h","rlc l","rlc (hl)","rlc a","rrc b","rrc c","rrc d","rrc e","rrc h","rrc l","rrc (hl)","rrc a","rl b","rl c","rl d","rl e","rl h","rl l","rl (hl)","rl a","rr b","rr c","rr d","rr e","rr h","rr l","rr (hl)","rr a","sla b","sla c","sla d","sla e","sla h","sla l","sla (hl)","sla a","sra b","sra c","sra d","sra e","sra h","sra l","sra (hl)","sra a","swap b","swap c","swap d","swap e","swap h","swap l","swap (hl)","swap a","srl b","srl c","srl d","srl e","srl h","srl l","srl (hl)","srl a","bit 0,b","bit 0,c","bit 0,d","bit 0,e","bit 0,h","bit 0,l","bit 0,(hl)","bit 0,a","bit 1,b","bit 1,c","bit 1,d","bit 1,e","bit 1,h","bit 1,l","bit 1,(hl)","bit 1,a","bit 2,b","bit 2,c","bit 2,d","bit 2,e","bit 2,h","bit 2,l","bit 2,(hl)","bit 2,a","bit 3,b","bit 3,c","bit 3,d","bit 3,e","bit 3,h","bit 3,l","bit 3,(hl)","bit 3,a","bit 4,b","bit 4,c","bit 4,d","bit 4,e","bit 4,h","bit 4,l","bit 4,(hl)","bit 4,a","bit 5,b","bit 5,c","bit 5,d","bit 5,e","bit 5,h","bit 5,l","bit 5,(hl)","bit 5,a","bit 6,b","bit 6,c","bit 6,d","bit 6,e","bit 6,h","bit 6,l","bit 6,(hl)","bit 6,a","bit 7,b","bit 7,c","bit 7,d","bit 7,e","bit 7,h","bit 7,l","bit 7,(hl)","bit 7,a","res 0,b","res 0,c","res 0,d","res 0,e","res 0,h","res 0,l","res 0,(hl)","res 0,a","res 1,b","res 1,c","res 1,d","res 1,e","res 1,h","res 1,l","res 1,(hl)","res 1,a","res 2,b","res 2,c","res 2,d","res 2,e","res 2,h","res 2,l","res 2,(hl)","res 2,a","res 3,b","res 3,c","res 3,d","res 3,e","res 3,h","res 3,l","res 3,(hl)","res 3,a","res 4,b","res 4,c","res 4,d","res 4,e","res 4,h","res 4,l","res 4,(hl)","res 4,a","res 5,b","res 5,c","res 5,d","res 5,e","res 5,h","res 5,l","res 5,(hl)","res 5,a","res 6,b","res 6,c","res 6,d","res 6,e","res 6,h","res 6,l","res 6,(hl)","res 6,a","res 7,b","res 7,c","res 7,d","res 7,e","res 7,h","res 7,l","res 7,(hl)","res 7,a","set 0,b","set 0,c","set 0,d","set 0,e","set 0,h","set 0,l","set 0,(hl)","set 0,a","set 1,b","set 1,c","set 1,d","set 1,e","set 1,h","set 1,l","set 1,(hl)","set 1,a","set 2,b","set 2,c","set 2,d","set 2,e","set 2,h","set 2,l","set 2,(hl)","set 2,a","set 3,b","set 3,c","set 3,d","set 3,e","set 3,h","set 3,l","set 3,(hl)","set 3,a","set 4,b","set 4,c","set 4,d","set 4,e","set 4,h","set 4,l","set 4,(hl)","set 4,a","set 5,b","set 5,c","set 5,d","set 5,e","set 5,h","set 5,l","set 5,(hl)","set 5,a","set 6,b","set 6,c","set 6,d","set 6,e","set 6,h","set 6,l","set 6,(hl)","set 6,a","set 7,b","set 7,c","set 7,d","set 7,e","set 7,h","set 7,l","set 7,(hl)","set 7,a"];function X(A,t,e,s){var i,h=1,r=!1;if(t===203?(i=re[e],h=2):i=he[t],(!i||!i.length||i==="??")&&(i="??"),/\bLine truncated
//# sourceMappingURL=gb-PVXAFHI2.js.map
`),i}}};var he=["nop","ld bc,xx","ld (bc),a","inc bc","inc b","dec b","ld b,x","rlca","ld (xx),sp","add hl,bc","ld a,(bc)","dec bc","inc c","dec c","ld c,x","rrca","stop x","ld de,xx","ld (de),a","inc de","inc d","dec d","ld d,x","rla","jr x","add hl,de","ld a,(de)","dec de","inc e","dec e","ld e,x","rra","jr nz,x","ld hl,xx","ld (hl+),a","inc hl","inc h","dec h","ld h,x","daa","jr z,x","add hl,hl","ld a,(hl+)","dec hl","inc l","dec l","ld l,x","cpl","jr nc,x","ld sp,xx","ld (hl-),a","inc sp","inc (hl)","dec (hl)","ld (hl),x","scf","jr c,x","add hl,sp","ld a,(hl-)","dec sp","inc a","dec a","ld a,x","ccf","ld b,b","ld b,c","ld b,d","ld b,e","ld b,h","ld b,l","ld b,(hl)","ld b,a","ld c,b","ld c,c","ld c,d","ld c,e","ld c,h","ld c,l","ld c,(hl)","ld c,a","ld d,b","ld d,c","ld d,d","ld d,e","ld d,h","ld d,l","ld d,(hl)","ld d,a","ld e,b","ld e,c","ld e,d","ld e,e","ld e,h","ld e,l","ld e,(hl)","ld e,a","ld h,b","ld h,c","ld h,d","ld h,e","ld h,h","ld h,l","ld h,(hl)","ld h,a","ld l,b","ld l,c","ld l,d","ld l,e","ld l,h","ld l,l","ld l,(hl)","ld l,a","ld (hl),b","ld (hl),c","ld (hl),d","ld (hl),e","ld (hl),h","ld (hl),l","halt","ld (hl),a","ld a,b","ld a,c","ld a,d","ld a,e","ld a,h","ld a,l","ld a,(hl)","ld a,a","add a,b","add a,c","add a,d","add a,e","add a,h","add a,l","add a,(hl)","add a,a","adc a,b","adc a,c","adc a,d","adc a,e","adc a,h","adc a,l","adc a,(hl)","adc a,a","sub b","sub c","sub d","sub e","sub h","sub l","sub (hl)","sub a","sbc a,b","sbc a,c","sbc a,d","sbc a,e","sbc a,h","sbc a,l","sbc a,(hl)","sbc a,a","and b","and c","and d","and e","and h","and l","and (hl)","and a","xor b","xor c","xor d","xor e","xor h","xor l","xor (hl)","xor a","or b","or c","or d","or e","or h","or l","or (hl)","or a","cp b","cp c","cp d","cp e","cp h","cp l","cp (hl)","cp a","ret nz","pop bc","jp nz,xx","jp xx","call nz,xx","push bc","add a,x","rst 00h","ret z","ret","jp z,xx","xxCBxx","call z,xx","call xx","adc a,x","rst 08h","ret nc","pop de","jp nc,xx","??","call nc,xx","push de","sub x","rst 10h","ret c","reti","jp c,xx","??","call c,xx","??","sbc a,x","rst 18h","ldh (x),a","pop hl","ld (c),a","??","??","push hl","and x","rst 20h","add sp,x","jp (hl)","ld (xx),a","??","??","??","xor x","rst 28h","ldh a,(x)","pop af","ld a,(c)","di","??","push af","or x","rst 30h","ld hl,sp+x","ld sp,hl","ld a,(xx)","ei","??","??","cp x","rst 38h"],re=["rlc b","rlc c","rlc d","rlc e","rlc h","rlc l","rlc (hl)","rlc a","rrc b","rrc c","rrc d","rrc e","rrc h","rrc l","rrc (hl)","rrc a","rl b","rl c","rl d","rl e","rl h","rl l","rl (hl)","rl a","rr b","rr c","rr d","rr e","rr h","rr l","rr (hl)","rr a","sla b","sla c","sla d","sla e","sla h","sla l","sla (hl)","sla a","sra b","sra c","sra d","sra e","sra h","sra l","sra (hl)","sra a","swap b","swap c","swap d","swap e","swap h","swap l","swap (hl)","swap a","srl b","srl c","srl d","srl e","srl h","srl l","srl (hl)","srl a","bit 0,b","bit 0,c","bit 0,d","bit 0,e","bit 0,h","bit 0,l","bit 0,(hl)","bit 0,a","bit 1,b","bit 1,c","bit 1,d","bit 1,e","bit 1,h","bit 1,l","bit 1,(hl)","bit 1,a","bit 2,b","bit 2,c","bit 2,d","bit 2,e","bit 2,h","bit 2,l","bit 2,(hl)","bit 2,a","bit 3,b","bit 3,c","bit 3,d","bit 3,e","bit 3,h","bit 3,l","bit 3,(hl)","bit 3,a","bit 4,b","bit 4,c","bit 4,d","bit 4,e","bit 4,h","bit 4,l","bit 4,(hl)","bit 4,a","bit 5,b","bit 5,c","bit 5,d","bit 5,e","bit 5,h","bit 5,l","bit 5,(hl)","bit 5,a","bit 6,b","bit 6,c","bit 6,d","bit 6,e","bit 6,h","bit 6,l","bit 6,(hl)","bit 6,a","bit 7,b","bit 7,c","bit 7,d","bit 7,e","bit 7,h","bit 7,l","bit 7,(hl)","bit 7,a","res 0,b","res 0,c","res 0,d","res 0,e","res 0,h","res 0,l","res 0,(hl)","res 0,a","res 1,b","res 1,c","res 1,d","res 1,e","res 1,h","res 1,l","res 1,(hl)","res 1,a","res 2,b","res 2,c","res 2,d","res 2,e","res 2,h","res 2,l","res 2,(hl)","res 2,a","res 3,b","res 3,c","res 3,d","res 3,e","res 3,h","res 3,l","res 3,(hl)","res 3,a","res 4,b","res 4,c","res 4,d","res 4,e","res 4,h","res 4,l","res 4,(hl)","res 4,a","res 5,b","res 5,c","res 5,d","res 5,e","res 5,h","res 5,l","res 5,(hl)","res 5,a","res 6,b","res 6,c","res 6,d","res 6,e","res 6,h","res 6,l","res 6,(hl)","res 6,a","res 7,b","res 7,c","res 7,d","res 7,e","res 7,h","res 7,l","res 7,(hl)","res 7,a","set 0,b","set 0,c","set 0,d","set 0,e","set 0,h","set 0,l","set 0,(hl)","set 0,a","set 1,b","set 1,c","set 1,d","set 1,e","set 1,h","set 1,l","set 1,(hl)","set 1,a","set 2,b","set 2,c","set 2,d","set 2,e","set 2,h","set 2,l","set 2,(hl)","set 2,a","set 3,b","set 3,c","set 3,d","set 3,e","set 3,h","set 3,l","set 3,(hl)","set 3,a","set 4,b","set 4,c","set 4,d","set 4,e","set 4,h","set 4,l","set 4,(hl)","set 4,a","set 5,b","set 5,c","set 5,d","set 5,e","set 5,h","set 5,l","set 5,(hl)","set 5,a","set 6,b","set 6,c","set 6,d","set 6,e","set 6,h","set 6,l","set 6,(hl)","set 6,a","set 7,b","set 7,c","set 7,d","set 7,e","set 7,h","set 7,l","set 7,(hl)","set 7,a"];function X(C,t,e,s){var i,h=1,r=!1;if(t===203?(i=re[e],h=2):i=he[t],(!i||!i.length||i==="??")&&(i="??"),/\bLine truncated
//# sourceMappingURL=gb-YNQWD4W4.js.map
@@ -1,7 +1,7 @@
{
"version": 3,
"sources": ["../src/common/cpu/SM83.ts", "../src/machine/gb.ts", "../src/common/cpu/disasmSM83.ts", "../src/platform/gb.ts"],
"sourcesContent": ["\nimport { Bus, CPU, InstructionBased, Interruptable, MemoryBusConnected, SavesState } from \"../devices\";\n\nexport interface SM83State {\n PC: number;\n SP: number;\n AF: number;\n BC: number;\n DE: number;\n HL: number;\n o: number; // last opcode\n ime: number;\n halted: boolean;\n interrupt: number;\n}\n\n// SM83 CPU \u2014 the Game Boy's modified Z80\n// No IX/IY, no shadow registers, no I/R, no IO bus\n// 4 flags only: Z(7), N(6), H(5), C(4) in F register\n// CB prefix for bit ops + SWAP\n// Single IME flag, memory-mapped IF/IE\n\nexport class SM83 implements CPU, InstructionBased, SavesState<SM83State>, Interruptable<number>, MemoryBusConnected {\n\n // Registers\n A: number = 0;\n F: number = 0;\n B: number = 0;\n C: number = 0;\n D: number = 0;\n E: number = 0;\n H: number = 0;\n L: number = 0;\n SP: number = 0xFFFE;\n PC: number = 0x0100;\n\n // Interrupt master enable\n ime: boolean = false;\n imeDelay: boolean = false; // EI delays by one instruction\n halted: boolean = false;\n // Pending interrupt request (set by machine via interrupt())\n interruptFlags: number = 0;\n\n bus: Bus;\n cyclesPerInsn: number = 0;\n o: number = 0; // last opcode\n stable: boolean = true;\n\n // Flag bit positions in F register\n static FLAG_Z = 0x80;\n static FLAG_N = 0x40;\n static FLAG_H = 0x20;\n static FLAG_C = 0x10;\n\n connectMemoryBus(bus: Bus): void {\n this.bus = bus;\n }\n\n reset(): void {\n // After boot ROM, typical state:\n this.A = 0x01;\n this.F = 0xB0;\n this.B = 0x00;\n this.C = 0x13;\n this.D = 0x00;\n this.E = 0xD8;\n this.H = 0x01;\n this.L = 0x4D;\n this.SP = 0xFFFE;\n this.PC = 0x0100;\n this.ime = false;\n this.imeDelay = false;\n this.halted = false;\n this.interruptFlags = 0;\n }\n\n interrupt(type: number): void {\n this.interruptFlags |= type;\n }\n\n getPC(): number { return this.PC; }\n getSP(): number { return this.SP; }\n isStable(): boolean { return this.stable; }\n\n saveState(): SM83State {\n return {\n PC: this.PC,\n SP: this.SP,\n AF: (this.A << 8) | this.F,\n BC: (this.B << 8) | this.C,\n DE: (this.D << 8) | this.E,\n HL: (this.H << 8) | this.L,\n o: this.o,\n ime: this.ime ? 1 : 0,\n halted: this.halted,\n interrupt: this.interruptFlags,\n };\n }\n\n loadState(state: SM83State): void {\n this.PC = state.PC;\n this.SP = state.SP;\n this.A = (state.AF >> 8) & 0xFF;\n this.F = state.AF & 0xF0; // lower 4 bits always 0\n this.B = (state.BC >> 8) & 0xFF;\n this.C = state.BC & 0xFF;\n this.D = (state.DE >> 8) & 0xFF;\n this.E = state.DE & 0xFF;\n this.H = (state.HL >> 8) & 0xFF;\n this.L = state.HL & 0xFF;\n this.o = state.o;\n this.ime = !!state.ime;\n this.halted = state.halted;\n this.interruptFlags = state.interrupt;\n }\n\n // Helper accessors for 16-bit register pairs\n getAF(): number { return (this.A << 8) | (this.F & 0xF0); }\n getBC(): number { return (this.B << 8) | this.C; }\n getDE(): number { return (this.D << 8) | this.E; }\n getHL(): number { return (this.H << 8) | this.L; }\n\n setAF(v: number): void { this.A = (v >> 8) & 0xFF; this.F = v & 0xF0; }\n setBC(v: number): void { this.B = (v >> 8) & 0xFF; this.C = v & 0xFF; }\n setDE(v: number): void { this.D = (v >> 8) & 0xFF; this.E = v & 0xFF; }\n setHL(v: number): void { this.H = (v >> 8) & 0xFF; this.L = v & 0xFF; }\n\n // Memory helpers\n read(addr: number): number {\n return this.bus.read(addr & 0xFFFF);\n }\n write(addr: number, val: number): void {\n this.bus.write(addr & 0xFFFF, val & 0xFF);\n }\n readWord(addr: number): number {\n return this.read(addr) | (this.read(addr + 1) << 8);\n }\n writeWord(addr: number, val: number): void {\n this.write(addr, val & 0xFF);\n this.write(addr + 1, (val >> 8) & 0xFF);\n }\n\n // Fetch byte at PC, advance PC\n fetchByte(): number {\n var v = this.read(this.PC);\n this.PC = (this.PC + 1) & 0xFFFF;\n return v;\n }\n fetchWord(): number {\n var lo = this.fetchByte();\n var hi = this.fetchByte();\n return (hi << 8) | lo;\n }\n fetchSignedByte(): number {\n var v = this.fetchByte();\n return v < 128 ? v : v - 256;\n }\n\n // Stack helpers\n pushWord(val: number): void {\n this.SP = (this.SP - 1) & 0xFFFF;\n this.write(this.SP, (val >> 8) & 0xFF);\n this.SP = (this.SP - 1) & 0xFFFF;\n this.write(this.SP, val & 0xFF);\n }\n popWord(): number {\n var lo = this.read(this.SP);\n this.SP = (this.SP + 1) & 0xFFFF;\n var hi = this.read(this.SP);\n this.SP = (this.SP + 1) & 0xFFFF;\n return (hi << 8) | lo;\n }\n\n // Flag helpers\n getZ(): boolean { return !!(this.F & SM83.FLAG_Z); }\n getN(): boolean { return !!(this.F & SM83.FLAG_N); }\n getH(): boolean { return !!(this.F & SM83.FLAG_H); }\n getC(): boolean { return !!(this.F & SM83.FLAG_C); }\n\n setZ(b: boolean): Line truncated
"mappings": "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 truncated
"sourcesContent": ["\nimport { Bus, CPU, InstructionBased, Interruptable, MemoryBusConnected, SavesState } from \"../devices\";\n\nexport interface SM83State {\n PC: number;\n SP: number;\n AF: number;\n BC: number;\n DE: number;\n HL: number;\n o: number; // last opcode\n ime: number;\n halted: boolean;\n interrupt: number;\n}\n\n// SM83 CPU \u2014 the Game Boy's modified Z80\n// No IX/IY, no shadow registers, no I/R, no IO bus\n// 4 flags only: Z(7), N(6), H(5), C(4) in F register\n// CB prefix for bit ops + SWAP\n// Single IME flag, memory-mapped IF/IE\n\nexport class SM83 implements CPU, InstructionBased, SavesState<SM83State>, Interruptable<number>, MemoryBusConnected {\n\n // Registers\n A: number = 0;\n F: number = 0;\n B: number = 0;\n C: number = 0;\n D: number = 0;\n E: number = 0;\n H: number = 0;\n L: number = 0;\n SP: number = 0xFFFE;\n PC: number = 0x0100;\n\n // Interrupt master enable\n ime: boolean = false;\n imeDelay: boolean = false; // EI delays by one instruction\n halted: boolean = false;\n // Pending interrupt request (set by machine via interrupt())\n interruptFlags: number = 0;\n\n bus: Bus;\n cyclesPerInsn: number = 0;\n o: number = 0; // last opcode\n stable: boolean = true;\n\n // Flag bit positions in F register\n static FLAG_Z = 0x80;\n static FLAG_N = 0x40;\n static FLAG_H = 0x20;\n static FLAG_C = 0x10;\n\n connectMemoryBus(bus: Bus): void {\n this.bus = bus;\n }\n\n reset(): void {\n // After boot ROM, typical state:\n this.A = 0x01;\n this.F = 0xB0;\n this.B = 0x00;\n this.C = 0x13;\n this.D = 0x00;\n this.E = 0xD8;\n this.H = 0x01;\n this.L = 0x4D;\n this.SP = 0xFFFE;\n this.PC = 0x0100;\n this.ime = false;\n this.imeDelay = false;\n this.halted = false;\n this.interruptFlags = 0;\n }\n\n interrupt(type: number): void {\n this.interruptFlags |= type;\n }\n\n getPC(): number { return this.PC; }\n getSP(): number { return this.SP; }\n isStable(): boolean { return this.stable; }\n\n saveState(): SM83State {\n return {\n PC: this.PC,\n SP: this.SP,\n AF: (this.A << 8) | this.F,\n BC: (this.B << 8) | this.C,\n DE: (this.D << 8) | this.E,\n HL: (this.H << 8) | this.L,\n o: this.o,\n ime: this.ime ? 1 : 0,\n halted: this.halted,\n interrupt: this.interruptFlags,\n };\n }\n\n loadState(state: SM83State): void {\n this.PC = state.PC;\n this.SP = state.SP;\n this.A = (state.AF >> 8) & 0xFF;\n this.F = state.AF & 0xF0; // lower 4 bits always 0\n this.B = (state.BC >> 8) & 0xFF;\n this.C = state.BC & 0xFF;\n this.D = (state.DE >> 8) & 0xFF;\n this.E = state.DE & 0xFF;\n this.H = (state.HL >> 8) & 0xFF;\n this.L = state.HL & 0xFF;\n this.o = state.o;\n this.ime = !!state.ime;\n this.halted = state.halted;\n this.interruptFlags = state.interrupt;\n }\n\n // Helper accessors for 16-bit register pairs\n getAF(): number { return (this.A << 8) | (this.F & 0xF0); }\n getBC(): number { return (this.B << 8) | this.C; }\n getDE(): number { return (this.D << 8) | this.E; }\n getHL(): number { return (this.H << 8) | this.L; }\n\n setAF(v: number): void { this.A = (v >> 8) & 0xFF; this.F = v & 0xF0; }\n setBC(v: number): void { this.B = (v >> 8) & 0xFF; this.C = v & 0xFF; }\n setDE(v: number): void { this.D = (v >> 8) & 0xFF; this.E = v & 0xFF; }\n setHL(v: number): void { this.H = (v >> 8) & 0xFF; this.L = v & 0xFF; }\n\n // Memory helpers\n read(addr: number): number {\n return this.bus.read(addr & 0xFFFF);\n }\n write(addr: number, val: number): void {\n this.bus.write(addr & 0xFFFF, val & 0xFF);\n }\n readWord(addr: number): number {\n return this.read(addr) | (this.read(addr + 1) << 8);\n }\n writeWord(addr: number, val: number): void {\n this.write(addr, val & 0xFF);\n this.write(addr + 1, (val >> 8) & 0xFF);\n }\n\n // Fetch byte at PC, advance PC\n fetchByte(): number {\n var v = this.read(this.PC);\n this.PC = (this.PC + 1) & 0xFFFF;\n return v;\n }\n fetchWord(): number {\n var lo = this.fetchByte();\n var hi = this.fetchByte();\n return (hi << 8) | lo;\n }\n fetchSignedByte(): number {\n var v = this.fetchByte();\n return v < 128 ? v : v - 256;\n }\n\n // Stack helpers\n pushWord(val: number): void {\n this.SP = (this.SP - 1) & 0xFFFF;\n this.write(this.SP, (val >> 8) & 0xFF);\n this.SP = (this.SP - 1) & 0xFFFF;\n this.write(this.SP, val & 0xFF);\n }\n popWord(): number {\n var lo = this.read(this.SP);\n this.SP = (this.SP + 1) & 0xFFFF;\n var hi = this.read(this.SP);\n this.SP = (this.SP + 1) & 0xFFFF;\n return (hi << 8) | lo;\n }\n\n // Flag helpers\n getZ(): boolean { return !!(this.F & SM83.FLAG_Z); }\n getN(): boolean { return !!(this.F & SM83.FLAG_N); }\n getH(): boolean { return !!(this.F & SM83.FLAG_H); }\n getC(): boolean { return !!(this.F & SM83.FLAG_C); }\n\n setZ(b: boolean): Line truncated
"mappings": "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 truncated
"names": ["_SM83", "bus", "type", "state", "v", "addr", "val", "lo", "hi", "b", "z", "n", "h", "c", "i", "cc", "result", "carry", "op", "hl", "a", "opcode", "reg", "cycles", "bit", "intCycles", "x", "y", "p", "q", "e", "bit7", "bit0", "cbop", "SM83", "cgbColorToARGB", "lo", "hi", "r5", "g5", "b5", "r8", "g8", "b8", "GB_KEYCODE_MAP", "makeKeycodeMap", "Keys", "DUTY_TABLE", "NR_READ_MASKS", "GameBoyAPU", "addr", "val", "regIndex", "wasEnabled", "divisor", "newFreq", "tCycles", "t", "sampleByte", "xor", "ch1out", "ch2out", "ch3out", "ch4out", "waveSample", "dac1", "dac2", "dac3", "dac4", "left", "right", "leftVol", "rightVol", "state", "GameBoyMachine", "BasicScanlineMachine", "SM83", "newAddressDecoder", "a", "v", "newKeyboardHandler", "bank", "fullAddr", "offset", "result", "srcBase", "length", "src", "dst", "i", "cycles", "timerPeriod", "pending", "handled", "oldFlags", "c", "n", "samplePeriod", "oldMode", "mCycles", "lineOffset", "x", "DMG_PALETTE", "palette", "colorIndex", "shade", "cram", "paletteNum", "idx", "tileMap", "signed", "y", "tileRow", "tileYOffset", "scrolledX", "tileCol", "tileXBit", "mapOffset", "tileIndex", "tileAddr", "attr", "cgbPalette", "vramBank", "xFlip", "yFlip", "bgPri", "tileY", "tileBit", "wxAdjusted", "winY", "drawn", "winX", "spriteHeight", "spritesOnLine", "sprites", "b", "si", "spriteIndex", "yPos", "xPos", "flags", "bgPriority", "spriteVramBank", "px", "screenX", "bit", "bgMaster", "bgColor", "data", "title", "cartType", "EmuHalt", "cgbFlag", "numBanks", "io", "cgb", "category", "s", "hex", "SM83_OPS", "SM83_OPS_CB", "disassembleSM83", "pc", "b0", "b1", "b2", "am", "n", "isaddr", "hex", "operand", "offset", "GB_PRESETS", "GameBoyPlatform", "BaseMachinePlatform", "getToolForFilename_z80", "GameBoyMachine", "a", "isDebuggable", "category", "state", "cpuStateToLongString_SM83", "sp", "start", "end", "dumpStackToString", "pc", "read", "disassembleSM83", "GBC_PRESETS", "GameBoyColorPlatform", "m", "PLATFORMS"]
}
+10 -3
View File
@@ -1275,6 +1275,7 @@ function pause() {
clearBreakpoint();
_pause();
userPaused = true;
(0, shortcutbar_1.refreshShortcutBar)(); // debug chips appear once the session starts
}
// F8 pauses a running emulator and resumes a paused one. Unmodified and not
// bound by CodeMirror, so it always reaches the IDE -- even while typing in
@@ -1300,7 +1301,8 @@ function _resume() {
function resume() {
if (!checkRunReady())
return;
// If there are enabled breakpoints, resume with them armed
// If there are enabled breakpoints, resume with them armed; the debug
// session stays active so the debug chips keep showing
if (breakpoints_1.bpStore.getEnabled().length > 0 && armBreakpoints()) {
if (!exports.platform.isRunning()) {
exports.projectWindows.refresh(false);
@@ -1310,12 +1312,16 @@ function resume() {
return;
}
clearBreakpoint();
// plain run: end the debug session so the Reset & Run / Search chips return
// (pause() set debugSessionActive; undo it here unless breakpoints were armed)
debugSessionActive = false;
if (!exports.platform.isRunning()) {
exports.projectWindows.refresh(false);
}
_resume();
userPaused = false;
lastViewClicked = null;
(0, shortcutbar_1.refreshShortcutBar)();
}
function singleStep() {
if (!checkRunReady())
@@ -2296,8 +2302,9 @@ function showInstructions() {
vcanvas.on('focus', () => {
if (exports.platform.isRunning()) {
div.fadeIn(200);
// toggle sound for browser autoplay
exports.platform.pause();
// unlock audio for browser autoplay policy (resume() no-ops if already running;
// don't pair with pause() first -- suspend()/resume() are async and racing them
// here left the AudioContext stuck suspended)
exports.platform.resume();
}
});
+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
+2 -2
View File
@@ -140,8 +140,8 @@ class SourceEditor {
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+shift+backspace', 'Delete Line', deleteLine),
//mk('mod+/', 'Toggle Comment', toggleComment),
mk('mod+z', 'Undo', commands_1.undo),
mk('mod+shift+z', 'Redo', commands_1.redo),
];
+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
@@ -1,2 +1,2 @@
import{J as y,m as F,p as V}from"./chunk-4676AC7I.js";import{$ as p,K as l,W as e,aa as f,g as h,l as I,m as x}from"./chunk-TYDI7JZQ.js";import"./chunk-KT7KMEQC.js";var B=[e.VK_DELETE,e.VK_ENTER,e.VK_RIGHT,e.VK_F7,e.VK_F1,e.VK_F3,e.VK_F5,e.VK_DOWN,e.VK_3,e.VK_W,e.VK_A,e.VK_4,e.VK_Z,e.VK_S,e.VK_E,e.VK_SHIFT,e.VK_5,e.VK_R,e.VK_D,e.VK_6,e.VK_C,e.VK_F,e.VK_T,e.VK_X,e.VK_7,e.VK_Y,e.VK_G,e.VK_8,e.VK_B,e.VK_H,e.VK_U,e.VK_V,e.VK_9,e.VK_I,e.VK_J,e.VK_0,e.VK_M,e.VK_K,e.VK_O,e.VK_N,null,e.VK_P,e.VK_L,e.VK_MINUS,e.VK_PERIOD,null,null,e.VK_COMMA,null,null,e.VK_SEMICOLON,e.VK_HOME,e.VK_SHIFT,e.VK_EQUALS,e.VK_TILDE,e.VK_SLASH,e.VK_1,e.VK_LEFT,e.VK_CONTROL,e.VK_2,e.VK_SPACE,e.VK_ALT,e.VK_Q,null],A=0,a=class{constructor(){this.regs=new Uint8Array(16);this.ina=0;this.inb=0}read(o){return this.regs[o]}write(o,r){this.regs[o]=r}input_a(){return this.ina&~this.regs[1]}input_b(){return this.inb&~this.regs[1]}output_a(){return this.regs[0]^255|this.regs[1]}output_b(){return this.regs[2]^255|this.regs[3]}},g=class extends V{constructor(){super();this.cpuFrequency=1e6;this.defaultROMSize=4096;this.cpu=new F;this.ram=new Uint8Array(6144);this.rriot1=new a;this.rriot2=new a;this.digits=[];this.read=f([[5888,5951,15,r=>this.readIO_1(r)],[5952,6015,15,r=>this.readIO_2(r)],[0,6143,8191,r=>this.ram[r]],[6144,8191,2047,r=>this.bios[r]]],{gmask:8191});this.write=f([[5888,5951,15,(r,t)=>this.writeIO_1(r,t)],[5952,6015,15,(r,t)=>this.writeIO_2(r,t)],[0,6143,8191,(r,t)=>{this.ram[r]=t}]],{gmask:8191});this.bios=new I().decode(x(atob(O))),this.connectCPUMemoryBus(this)}readConst(r){return this.read(r)}readIO_1(r){return this.rriot1.read(r)}writeIO_1(r,t){this.rriot1.write(r,t)}readIO_2(r){switch(r&15){case 0:let t=0;for(let i=0;i<8;i++)(this.rriot2.regs[0]&1<<i)==0&&(t|=this.inputs[A+i]);this.rriot2.ina=t^255}return this.rriot2.read(r)}writeIO_2(r,t){this.rriot2.write(r,t);let i=this.rriot2.output_a(),n=this.rriot2.output_b();console.log(i,n)}loadROM(r){super.loadROM(r),this.ram.set(this.rom,1024),this.reset()}loadBIOS(r){this.bios=p(r,2048),this.reset()}setKeyInput(r,t,i){for(var n=B,s=0;s<n.length;s++)if(n[s]&&n[s].c==r){let K=s>>3,u=s&7;i&1?this.inputs[A+K]|=1<<u:i&64&&(this.inputs[A+K]&=~(1<<u)),console.log(r,K,u,h(this.inputs[A+K]));break}}advanceFrame(r){for(var t=0;t<this.cpuFrequency/60&&!(r&&r());)t+=this.advanceCPU();return t}},O="TFpHAAAIAAAABY3ivWkoAQsOJSiprY3sFyAyGaknjUIXqb+NQxeiZKkWIHoZytD4qSoo4a35FyBhGa31FyBeGa32KKPtF833F63uF+34F5AkqS8lXeclnegooqICqQQOBTgAhfqF+0xPHCDsJXAg6hlMMxgPGamNDgVrTI3vF61xGI3wF61yGI3xF6kHDgJ8/43pFyBBGk7pFw3pFyUErekXyRbQ7aIKICQaJQHfytD2JUIq8AYlBtHw8yDzGc35F/ANrfkXyQAlDf/wF9CcJQ0gTBmN7RcOBQHuF0z4GCXEKKSiAiV9L/AUIAAa0CPK0PElDEzsFw4CnCWhzecX0Awo4ugX0ASpAPACqf8OBcWt9ReN7Ret9heN7hepYI3vF6kAjecXjegXYKgYbSUB5xet6BdpACUJmGAgTBmoSigBIG8ZmChiYCkPyQoYMAJpB2kwjukXjOoXoAggnhlKsAYooUyRGSDEKEKI0Ouu6Res6hdgoglILEcXEPupfo1EF6mnjUIXDgkHDiKqytDfaGCiBg4FHsMODB4lhw4HHu7tF9AD7u4XYCAkGiAAGiikYMkwMB7JRxAayUAwAxhpCSooAaQEKi7pF4jQ+a3pF6AAYMhgjusXoggOIovqFw3qF43qF8rQ8a3qFypKrusXYCxCFxD7rUYXoP+MKIEUiND9JQow+zjtDgYLByULSf8pgGAOSFsOBJeaDgymJYclW0x1Gv8oHygfKB4oGWsaKCKF82iF8WiF74X6aIXwhfuE9Ib1uobyIIgeTE8cbPoXbP4Xov+aJYmp/43zF6kBLEAX0Bkw+an8GGkBkAPu8xesQBcQ843yDkIbah4gjB4l2x4gLx6iCiAxHkyvHakAhfiF+SBaHskB8AYgrB9M2x0gGR/Q0yWi8MwlBPD0KILvIGofyRUQu8kU8ETJEPAsyREoYRLwL8kT8DEKKAGF/KIEpP/QCrH6BvwqkfpMwxwKJvom+8rQ6vAIqQHQAqkAhf8OgmZjHyihTMgdpe+F+qXwDoR6Wh7JO9D5JRr3hfYgnR+qIJEfKMGF+yjl+ijhivAPJQORJUMlO8rQ8uglB8X20BcowvfQE4rQuaIMDkOaDgLPTxwlD6IR0O4OBNYoofaF9yAvHqk7IKAepfrN9xel+w6iGRipACA7HiDMHyAeHqX2JQOl9yiBTGQcqRiqJVGRJVGgALH6DgUFDgJy8A4IIeb40ALm+UxIHSV6Lx4lJCCeDgcnng4CQCUqTKwdpvKapftIpfpIpfFIpvWk9KXzQMkg8MrJf/AbyQ3w28kK8BzJLvAmyUfw1clR8ArJTPAJTGocDiIgQh1M5xw4pfrpAYX6sALG+0ysHaAApfiR+kzCHaX7DgSOpQ4FlmCiB73VHyCgHsoQ92CF/A6D00wepfwogw6K1UygHob9oggORAQiMPkg1B4g6x6tQBcpgEb+Bf6F/iUJytDvJQym/aX+KkpgogGG/6IAjkEXoj+OQxeiB45CF9h4YKkghf6G/SUkrUIXKf4OInLUHqIIJYVG/mkAJcnK0O4lCgkBJcam/WCt8xeN9Bet8hc46QGwA870F6z0FxDzDggPSk70F5DjCYCw4KADogGp/45CF+joLUAXiND1oAeMQhcJgEn/YA4iXIX5qX+NQReiCaADufgADgPmSB8lAikPKOGI0OslMakAJRlM/h6E/Ki55x+gAIxAFyUOjUAXoH+I0P3o6KT8YOb60ALm+2CiIaABIAIf0AfgJ9D1qRVgoP8KsAPIEPqKKQ9KqpgQAxhpB8rQ+mAYZfeF96X2aQCF9mAgWh4grB8opKX4DqKkG8lHEBcOqaSgBCom+Cb5iA7iZWCl+IX6pfmF+2AAKAMKDU1JSyATUlJFIBO/htvP5u39h//v9/y53vnx////HBwiHB8c";var c=[{id:"hello.dasm",name:"Hello World (ASM)"}],m=class extends y{constructor(){super(...arguments);this.getMemoryMap=function(){return{main:[{name:"RAM",start:0,size:5120,type:"ram"},{name:"6530",start:5888,size:64,type:"io"},{name:"6530",start:5952,size:64,type:"io"},{name:"RAM",start:6016,size:128,type:"ram"},{name:"BIOS",start:6144,size:2048,type:"rom"}]}}}newMachine(){return new g}getPresets(){return c}readAddress(r){return this.machine.readConst(r)}};l.kim1=m;
//# sourceMappingURL=kim1-E2SR2N4X.js.map
import{J as y,m as l,p as V}from"./chunk-4676AC7I.js";import{$ as F,K as p,W as e,aa as f,g as h,l as I,m as x}from"./chunk-TYDI7JZQ.js";import"./chunk-KT7KMEQC.js";var B=[e.VK_DELETE,e.VK_ENTER,e.VK_RIGHT,e.VK_F7,e.VK_F1,e.VK_F3,e.VK_F5,e.VK_DOWN,e.VK_3,e.VK_W,e.VK_A,e.VK_4,e.VK_Z,e.VK_S,e.VK_E,e.VK_SHIFT,e.VK_5,e.VK_R,e.VK_D,e.VK_6,e.VK_C,e.VK_F,e.VK_T,e.VK_X,e.VK_7,e.VK_Y,e.VK_G,e.VK_8,e.VK_B,e.VK_H,e.VK_U,e.VK_V,e.VK_9,e.VK_I,e.VK_J,e.VK_0,e.VK_M,e.VK_K,e.VK_O,e.VK_N,null,e.VK_P,e.VK_L,e.VK_MINUS,e.VK_PERIOD,null,null,e.VK_COMMA,null,null,e.VK_SEMICOLON,e.VK_HOME,e.VK_SHIFT,e.VK_EQUALS,e.VK_TILDE,e.VK_SLASH,e.VK_1,e.VK_LEFT,e.VK_CONTROL,e.VK_2,e.VK_SPACE,e.VK_ALT,e.VK_Q,null],A=0,a=class{constructor(){this.regs=new Uint8Array(16);this.ina=0;this.inb=0}read(o){return this.regs[o]}write(o,r){this.regs[o]=r}input_a(){return this.ina&~this.regs[1]}input_b(){return this.inb&~this.regs[1]}output_a(){return this.regs[0]^255|this.regs[1]}output_b(){return this.regs[2]^255|this.regs[3]}},g=class extends V{constructor(){super();this.cpuFrequency=1e6;this.defaultROMSize=4096;this.cpu=new l;this.ram=new Uint8Array(6144);this.rriot1=new a;this.rriot2=new a;this.digits=[];this.read=f([[5888,5951,15,r=>this.readIO_1(r)],[5952,6015,15,r=>this.readIO_2(r)],[0,6143,8191,r=>this.ram[r]],[6144,8191,2047,r=>this.bios[r]]],{gmask:8191});this.write=f([[5888,5951,15,(r,t)=>this.writeIO_1(r,t)],[5952,6015,15,(r,t)=>this.writeIO_2(r,t)],[0,6143,8191,(r,t)=>{this.ram[r]=t}]],{gmask:8191});this.bios=new I().decode(x(atob(O))),this.connectCPUMemoryBus(this)}readConst(r){return this.read(r)}readIO_1(r){return this.rriot1.read(r)}writeIO_1(r,t){this.rriot1.write(r,t)}readIO_2(r){switch(r&15){case 0:let t=0;for(let i=0;i<8;i++)(this.rriot2.regs[0]&1<<i)==0&&(t|=this.inputs[A+i]);this.rriot2.ina=t^255}return this.rriot2.read(r)}writeIO_2(r,t){this.rriot2.write(r,t);let i=this.rriot2.output_a(),n=this.rriot2.output_b();console.log(i,n)}loadROM(r){super.loadROM(r),this.ram.set(this.rom,1024),this.reset()}loadBIOS(r){this.bios=F(r,2048),this.reset()}setKeyInput(r,t,i){for(var n=B,s=0;s<n.length;s++)if(n[s]&&n[s].c==r){let K=s>>3,u=s&7;i&1?this.inputs[A+K]|=1<<u:i&64&&(this.inputs[A+K]&=~(1<<u)),console.log(r,K,u,h(this.inputs[A+K]));break}}advanceFrame(r){for(var t=0;t<this.cpuFrequency/60&&!(r&&r());)t+=this.advanceCPU();return t}},O="TFpHAAAIAAAABY3ivWkoAQsOJSiprY3sFyAyGaknjUIXqb+NQxeiZKkWIHoZytD4qSoo4a35FyBhGa31FyBeGa32KKPtF833F63uF+34F5AkqS8lXeclnegooqICqQQOBTgAhfqF+0xPHCDsJXAg6hlMMxgPGamNDgVrTI3vF61xGI3wF61yGI3xF6kHDgJ8/43pFyBBGk7pFw3pFyUErekXyRbQ7aIKICQaJQHfytD2JUIq8AYlBtHw8yDzGc35F/ANrfkXyQAlDf/wF9CcJQ0gTBmN7RcOBQHuF0z4GCXEKKSiAiV9L/AUIAAa0CPK0PElDEzsFw4CnCWhzecX0Awo4ugX0ASpAPACqf8OBcWt9ReN7Ret9heN7hepYI3vF6kAjecXjegXYKgYbSUB5xet6BdpACUJmGAgTBmoSigBIG8ZmChiYCkPyQoYMAJpB2kwjukXjOoXoAggnhlKsAYooUyRGSDEKEKI0Ouu6Res6hdgoglILEcXEPupfo1EF6mnjUIXDgkHDiKqytDfaGCiBg4FHsMODB4lhw4HHu7tF9AD7u4XYCAkGiAAGiikYMkwMB7JRxAayUAwAxhpCSooAaQEKi7pF4jQ+a3pF6AAYMhgjusXoggOIovqFw3qF43qF8rQ8a3qFypKrusXYCxCFxD7rUYXoP+MKIEUiND9JQow+zjtDgYLByULSf8pgGAOSFsOBJeaDgymJYclW0x1Gv8oHygfKB4oGWsaKCKF82iF8WiF74X6aIXwhfuE9Ib1uobyIIgeTE8cbPoXbP4Xov+aJYmp/43zF6kBLEAX0Bkw+an8GGkBkAPu8xesQBcQ843yDkIbah4gjB4l2x4gLx6iCiAxHkyvHakAhfiF+SBaHskB8AYgrB9M2x0gGR/Q0yWi8MwlBPD0KILvIGofyRUQu8kU8ETJEPAsyREoYRLwL8kT8DEKKAGF/KIEpP/QCrH6BvwqkfpMwxwKJvom+8rQ6vAIqQHQAqkAhf8OgmZjHyihTMgdpe+F+qXwDoR6Wh7JO9D5JRr3hfYgnR+qIJEfKMGF+yjl+ijhivAPJQORJUMlO8rQ8uglB8X20BcowvfQE4rQuaIMDkOaDgLPTxwlD6IR0O4OBNYoofaF9yAvHqk7IKAepfrN9xel+w6iGRipACA7HiDMHyAeHqX2JQOl9yiBTGQcqRiqJVGRJVGgALH6DgUFDgJy8A4IIeb40ALm+UxIHSV6Lx4lJCCeDgcnng4CQCUqTKwdpvKapftIpfpIpfFIpvWk9KXzQMkg8MrJf/AbyQ3w28kK8BzJLvAmyUfw1clR8ArJTPAJTGocDiIgQh1M5xw4pfrpAYX6sALG+0ysHaAApfiR+kzCHaX7DgSOpQ4FlmCiB73VHyCgHsoQ92CF/A6D00wepfwogw6K1UygHob9oggORAQiMPkg1B4g6x6tQBcpgEb+Bf6F/iUJytDvJQym/aX+KkpgogGG/6IAjkEXoj+OQxeiB45CF9h4YKkghf6G/SUkrUIXKf4OInLUHqIIJYVG/mkAJcnK0O4lCgkBJcam/WCt8xeN9Bet8hc46QGwA870F6z0FxDzDggPSk70F5DjCYCw4KADogGp/45CF+joLUAXiND1oAeMQhcJgEn/YA4iXIX5qX+NQReiCaADufgADgPmSB8lAikPKOGI0OslMakAJRlM/h6E/Ki55x+gAIxAFyUOjUAXoH+I0P3o6KT8YOb60ALm+2CiIaABIAIf0AfgJ9D1qRVgoP8KsAPIEPqKKQ9KqpgQAxhpB8rQ+mAYZfeF96X2aQCF9mAgWh4grB8opKX4DqKkG8lHEBcOqaSgBCom+Cb5iA7iZWCl+IX6pfmF+2AAKAMKDU1JSyATUlJFIBO/htvP5u39h//v9/y53vnx////HBwiHB8c";var c=[],m=class extends y{constructor(){super(...arguments);this.getMemoryMap=function(){return{main:[{name:"RAM",start:0,size:5120,type:"ram"},{name:"6530",start:5888,size:64,type:"io"},{name:"6530",start:5952,size:64,type:"io"},{name:"RAM",start:6016,size:128,type:"ram"},{name:"BIOS",start:6144,size:2048,type:"rom"}]}}}newMachine(){return new g}getPresets(){return c}readAddress(r){return this.machine.readConst(r)}};p.kim1=m;
//# sourceMappingURL=kim1-LURQYRTE.js.map
@@ -1,7 +1,7 @@
{
"version": 3,
"sources": ["../src/machine/kim1.ts", "../src/platform/kim1.ts"],
"sourcesContent": ["\nimport { MOS6502, MOS6502State } from \"../common/cpu/MOS6502\";\nimport { BasicHeadlessMachine } from \"../common/devices\";\nimport { padBytes, Keys, KeyFlags, newAddressDecoder } from \"../common/emu\"; // TODO\nimport { hex, stringToByteArray, lzgmini } from \"../common/util\";\n\nconst KIM1_KEYMATRIX_NOSHIFT = [\n Keys.VK_DELETE, Keys.VK_ENTER, Keys.VK_RIGHT, Keys.VK_F7,\tKeys.VK_F1, Keys.VK_F3, Keys.VK_F5, Keys.VK_DOWN,\n Keys.VK_3, Keys.VK_W, Keys.VK_A, Keys.VK_4,\t\t\tKeys.VK_Z, Keys.VK_S, Keys.VK_E, Keys.VK_SHIFT,\n Keys.VK_5, Keys.VK_R, Keys.VK_D, Keys.VK_6,\t\t\tKeys.VK_C, Keys.VK_F, Keys.VK_T, Keys.VK_X,\n Keys.VK_7, Keys.VK_Y, Keys.VK_G, Keys.VK_8,\t\t\tKeys.VK_B, Keys.VK_H, Keys.VK_U, Keys.VK_V,\n Keys.VK_9, Keys.VK_I, Keys.VK_J, Keys.VK_0,\t\t\tKeys.VK_M, Keys.VK_K, Keys.VK_O, Keys.VK_N,\n null/*Keys.VK_PLUS*/, Keys.VK_P, Keys.VK_L, Keys.VK_MINUS,\tKeys.VK_PERIOD, null/*Keys.VK_COLON*/, null/*Keys.VK_AT*/, Keys.VK_COMMA,\n null/*Keys.VK_POUND*/, null/*TIMES*/, Keys.VK_SEMICOLON, Keys.VK_HOME, Keys.VK_SHIFT/*right*/, Keys.VK_EQUALS, Keys.VK_TILDE, Keys.VK_SLASH,\n Keys.VK_1, Keys.VK_LEFT, Keys.VK_CONTROL, Keys.VK_2,\t\tKeys.VK_SPACE, Keys.VK_ALT, Keys.VK_Q, null/*STOP*/,\n];\n\nconst KEYBOARD_ROW_0 = 0;\n\nclass RRIOT_6530 {\n\n regs = new Uint8Array(16);\n ina : number = 0;\n inb : number = 0;\n\n read(a:number) : number {\n //console.log('read', hex(a), hex(this.regs[a]));\n return this.regs[a];\n }\n\n write(a:number,v:number) {\n this.regs[a] = v;\n //console.log('write', hex(a), hex(v));\n }\n \n input_a() { return this.ina & ~this.regs[1]; }\n input_b() { return this.inb & ~this.regs[1]; }\n output_a() { return (this.regs[0] ^ 0xff) | this.regs[1]; }\n output_b() { return (this.regs[2] ^ 0xff) | this.regs[3]; }\n}\n\nexport class KIM1 extends BasicHeadlessMachine {\n cpuFrequency = 1000000;\n defaultROMSize = 0x1000;\n \n cpu = new MOS6502();\n ram = new Uint8Array(0x1800);\n bios : Uint8Array;\n\n rriot1 : RRIOT_6530 = new RRIOT_6530();\n rriot2 : RRIOT_6530 = new RRIOT_6530();\n digits = [];\n\n constructor() {\n super();\n this.bios = new lzgmini().decode(stringToByteArray(atob(KIM1_BIOS_LZG)));\n this.connectCPUMemoryBus(this);\n }\n\n read = newAddressDecoder([\n [0x1700, 0x173f, 0x000f, (a) => { return this.readIO_1(a); }],\n [0x1740, 0x177f, 0x000f, (a) => { return this.readIO_2(a); }],\n [0x0000, 0x17ff, 0x1fff, (a) => { return this.ram[a]; }],\n [0x1800, 0x1fff, 0x07ff, (a) => { return this.bios[a]; }],\n ], {gmask:0x1fff});\n \n write = newAddressDecoder([\n [0x1700, 0x173f, 0x000f, (a,v) => { return this.writeIO_1(a,v); }],\n [0x1740, 0x177f, 0x000f, (a,v) => { return this.writeIO_2(a,v); }],\n [0x0000, 0x17ff, 0x1fff, (a,v) => { this.ram[a] = v; }],\n ], {gmask:0x1fff});\n \n readConst(a:number) : number {\n return this.read(a);\n }\n\n readIO_1(a:number) : number {\n return this.rriot1.read(a);\n }\n \n writeIO_1(a:number, v:number) {\n this.rriot1.write(a,v);\n }\n \n readIO_2(a:number) : number {\n switch (a & 0xf) {\n case 0x0:\n let cols = 0;\n for (let i=0; i<8; i++)\n if ((this.rriot2.regs[0] & (1<<i)) == 0)\n cols |= this.inputs[KEYBOARD_ROW_0 + i];\n //if (cols) console.log(this.rriot1.regs[0], cols);\n this.rriot2.ina = cols ^ 0xff;\n }\n return this.rriot2.read(a);\n }\n \n writeIO_2(a:number, v:number) {\n this.rriot2.write(a,v);\n // update LED\n let digit = this.rriot2.output_a();\n let segments = this.rriot2.output_b();\n console.log(digit, segments);\n }\n \n loadROM(data) {\n super.loadROM(data);\n this.ram.set(this.rom, 0x400);\n this.reset();\n }\n\n loadBIOS(data) {\n this.bios = padBytes(data, 0x800);\n this.reset();\n }\n\n setKeyInput(key:number, code:number, flags:number) : void {\n //console.log(key,code,flags);\n var keymap = KIM1_KEYMATRIX_NOSHIFT;\n for (var i=0; i<keymap.length; i++) {\n if (keymap[i] && keymap[i].c == key) {\n let row = i >> 3;\n let col = i & 7;\n // is column selected?\n if (flags & KeyFlags.KeyDown) {\n this.inputs[KEYBOARD_ROW_0 + row] |= (1<<col);\n } else if (flags & KeyFlags.KeyUp) {\n this.inputs[KEYBOARD_ROW_0 + row] &= ~(1<<col);\n }\n console.log(key, row, col, hex(this.inputs[KEYBOARD_ROW_0 + row]));\n break;\n }\n }\n }\n \n advanceFrame(trap) : number {\n var clock = 0;\n while (clock < this.cpuFrequency/60) {\n if (trap && trap()) break;\n clock += this.advanceCPU();\n }\n return clock;\n }\n}\n\n// https://github.com/jefftranter/6502/blob/master/asm/KIM-1/ROMs/kim.s\nconst KIM1_BIOS_LZG = `TFpHAAAIAAAABY3ivWkoAQsOJSiprY3sFyAyGaknjUIXqb+NQxeiZKkWIHoZytD4qSoo4a35FyBhGa31FyBeGa32KKPtF833F63uF+34F5AkqS8lXeclnegooqICqQQOBTgAhfqF+0xPHCDsJXAg6hlMMxgPGamNDgVrTI3vF61xGI3wF61yGI3xF6kHLine truncated
"mappings": "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",
"sourcesContent": ["\nimport { MOS6502, MOS6502State } from \"../common/cpu/MOS6502\";\nimport { BasicHeadlessMachine } from \"../common/devices\";\nimport { padBytes, Keys, KeyFlags, newAddressDecoder } from \"../common/emu\"; // TODO\nimport { hex, stringToByteArray, lzgmini } from \"../common/util\";\n\nconst KIM1_KEYMATRIX_NOSHIFT = [\n Keys.VK_DELETE, Keys.VK_ENTER, Keys.VK_RIGHT, Keys.VK_F7,\tKeys.VK_F1, Keys.VK_F3, Keys.VK_F5, Keys.VK_DOWN,\n Keys.VK_3, Keys.VK_W, Keys.VK_A, Keys.VK_4,\t\t\tKeys.VK_Z, Keys.VK_S, Keys.VK_E, Keys.VK_SHIFT,\n Keys.VK_5, Keys.VK_R, Keys.VK_D, Keys.VK_6,\t\t\tKeys.VK_C, Keys.VK_F, Keys.VK_T, Keys.VK_X,\n Keys.VK_7, Keys.VK_Y, Keys.VK_G, Keys.VK_8,\t\t\tKeys.VK_B, Keys.VK_H, Keys.VK_U, Keys.VK_V,\n Keys.VK_9, Keys.VK_I, Keys.VK_J, Keys.VK_0,\t\t\tKeys.VK_M, Keys.VK_K, Keys.VK_O, Keys.VK_N,\n null/*Keys.VK_PLUS*/, Keys.VK_P, Keys.VK_L, Keys.VK_MINUS,\tKeys.VK_PERIOD, null/*Keys.VK_COLON*/, null/*Keys.VK_AT*/, Keys.VK_COMMA,\n null/*Keys.VK_POUND*/, null/*TIMES*/, Keys.VK_SEMICOLON, Keys.VK_HOME, Keys.VK_SHIFT/*right*/, Keys.VK_EQUALS, Keys.VK_TILDE, Keys.VK_SLASH,\n Keys.VK_1, Keys.VK_LEFT, Keys.VK_CONTROL, Keys.VK_2,\t\tKeys.VK_SPACE, Keys.VK_ALT, Keys.VK_Q, null/*STOP*/,\n];\n\nconst KEYBOARD_ROW_0 = 0;\n\nclass RRIOT_6530 {\n\n regs = new Uint8Array(16);\n ina : number = 0;\n inb : number = 0;\n\n read(a:number) : number {\n //console.log('read', hex(a), hex(this.regs[a]));\n return this.regs[a];\n }\n\n write(a:number,v:number) {\n this.regs[a] = v;\n //console.log('write', hex(a), hex(v));\n }\n \n input_a() { return this.ina & ~this.regs[1]; }\n input_b() { return this.inb & ~this.regs[1]; }\n output_a() { return (this.regs[0] ^ 0xff) | this.regs[1]; }\n output_b() { return (this.regs[2] ^ 0xff) | this.regs[3]; }\n}\n\nexport class KIM1 extends BasicHeadlessMachine {\n cpuFrequency = 1000000;\n defaultROMSize = 0x1000;\n \n cpu = new MOS6502();\n ram = new Uint8Array(0x1800);\n bios : Uint8Array;\n\n rriot1 : RRIOT_6530 = new RRIOT_6530();\n rriot2 : RRIOT_6530 = new RRIOT_6530();\n digits = [];\n\n constructor() {\n super();\n this.bios = new lzgmini().decode(stringToByteArray(atob(KIM1_BIOS_LZG)));\n this.connectCPUMemoryBus(this);\n }\n\n read = newAddressDecoder([\n [0x1700, 0x173f, 0x000f, (a) => { return this.readIO_1(a); }],\n [0x1740, 0x177f, 0x000f, (a) => { return this.readIO_2(a); }],\n [0x0000, 0x17ff, 0x1fff, (a) => { return this.ram[a]; }],\n [0x1800, 0x1fff, 0x07ff, (a) => { return this.bios[a]; }],\n ], {gmask:0x1fff});\n \n write = newAddressDecoder([\n [0x1700, 0x173f, 0x000f, (a,v) => { return this.writeIO_1(a,v); }],\n [0x1740, 0x177f, 0x000f, (a,v) => { return this.writeIO_2(a,v); }],\n [0x0000, 0x17ff, 0x1fff, (a,v) => { this.ram[a] = v; }],\n ], {gmask:0x1fff});\n \n readConst(a:number) : number {\n return this.read(a);\n }\n\n readIO_1(a:number) : number {\n return this.rriot1.read(a);\n }\n \n writeIO_1(a:number, v:number) {\n this.rriot1.write(a,v);\n }\n \n readIO_2(a:number) : number {\n switch (a & 0xf) {\n case 0x0:\n let cols = 0;\n for (let i=0; i<8; i++)\n if ((this.rriot2.regs[0] & (1<<i)) == 0)\n cols |= this.inputs[KEYBOARD_ROW_0 + i];\n //if (cols) console.log(this.rriot1.regs[0], cols);\n this.rriot2.ina = cols ^ 0xff;\n }\n return this.rriot2.read(a);\n }\n \n writeIO_2(a:number, v:number) {\n this.rriot2.write(a,v);\n // update LED\n let digit = this.rriot2.output_a();\n let segments = this.rriot2.output_b();\n console.log(digit, segments);\n }\n \n loadROM(data) {\n super.loadROM(data);\n this.ram.set(this.rom, 0x400);\n this.reset();\n }\n\n loadBIOS(data) {\n this.bios = padBytes(data, 0x800);\n this.reset();\n }\n\n setKeyInput(key:number, code:number, flags:number) : void {\n //console.log(key,code,flags);\n var keymap = KIM1_KEYMATRIX_NOSHIFT;\n for (var i=0; i<keymap.length; i++) {\n if (keymap[i] && keymap[i].c == key) {\n let row = i >> 3;\n let col = i & 7;\n // is column selected?\n if (flags & KeyFlags.KeyDown) {\n this.inputs[KEYBOARD_ROW_0 + row] |= (1<<col);\n } else if (flags & KeyFlags.KeyUp) {\n this.inputs[KEYBOARD_ROW_0 + row] &= ~(1<<col);\n }\n console.log(key, row, col, hex(this.inputs[KEYBOARD_ROW_0 + row]));\n break;\n }\n }\n }\n \n advanceFrame(trap) : number {\n var clock = 0;\n while (clock < this.cpuFrequency/60) {\n if (trap && trap()) break;\n clock += this.advanceCPU();\n }\n return clock;\n }\n}\n\n// https://github.com/jefftranter/6502/blob/master/asm/KIM-1/ROMs/kim.s\nconst KIM1_BIOS_LZG = `TFpHAAAIAAAABY3ivWkoAQsOJSiprY3sFyAyGaknjUIXqb+NQxeiZKkWIHoZytD4qSoo4a35FyBhGa31FyBeGa32KKPtF833F63uF+34F5AkqS8lXeclnegooqICqQQOBTgAhfqF+0xPHCDsJXAg6hlMMxgPGamNDgVrTI3vF61xGI3wF61yGI3xF6kHLine truncated
"mappings": "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",
"names": ["KIM1_KEYMATRIX_NOSHIFT", "Keys", "KEYBOARD_ROW_0", "RRIOT_6530", "a", "v", "KIM1", "BasicHeadlessMachine", "MOS6502", "newAddressDecoder", "lzgmini", "stringToByteArray", "KIM1_BIOS_LZG", "cols", "digit", "segments", "data", "padBytes", "key", "code", "flags", "keymap", "i", "row", "col", "hex", "trap", "clock", "KIM1_PRESETS", "KIM1Platform", "Base6502MachinePlatform", "KIM1", "a", "PLATFORMS"]
}
+3 -3
View File
@@ -1,4 +1,4 @@
import{b as Z}from"./chunk-JX2MTUGT.js";import{a as U}from"./chunk-OJEFOAZC.js";import{a as Ft}from"./chunk-LNOKARBD.js";import{A as W,j as q,n as X,o as Y,x as O,y as H}from"./chunk-4676AC7I.js";import{H as L,K as I,P as T,T as V,U as B,W as m,Y as G,Z as w,g as D,n as v}from"./chunk-TYDI7JZQ.js";import{d as S}from"./chunk-KT7KMEQC.js";var F=S((wt,z)=>{"use strict";var d=function(){this.state=new Array(8);for(var t=0;t<this.state.length;t++)this.state[t]=64};d.BUTTON_A=0;d.BUTTON_B=1;d.BUTTON_SELECT=2;d.BUTTON_START=3;d.BUTTON_UP=4;d.BUTTON_DOWN=5;d.BUTTON_LEFT=6;d.BUTTON_RIGHT=7;d.prototype={buttonDown:function(t){this.state[t]=65},buttonUp:function(t){this.state[t]=64}};z.exports=d});var N=S((qt,K)=>{"use strict";K.exports={copyArrayElements:function(t,i,s,e,r){for(var a=0;a<r;++a)s[e+a]=t[i+a]},copyArray:function(t){return t.slice(0)},fromJSON:function(t,i){for(var s=0;s<t.JSON_PROPERTIES.length;s++){var e=t.JSON_PROPERTIES[s];t[e]!==null&&t[e].buffer&&t[e].set?t[e].set(i[e]):t[e]=i[e]}},toJSON:function(t){for(var i={},s=0;s<t.JSON_PROPERTIES.length;s++){var e=t.JSON_PROPERTIES[s];i[e]=t[e]}return i}}});var tt=S((Xt,$)=>{"use strict";var J=N(),Q=function(t){this.nes=t,this.mem=null,this.REG_ACC=null,this.REG_X=null,this.REG_Y=null,this.REG_SP=null,this.REG_PC=null,this.REG_PC_NEW=null,this.REG_STATUS=null,this.F_CARRY=null,this.F_DECIMAL=null,this.F_INTERRUPT=null,this.F_INTERRUPT_NEW=null,this.F_OVERFLOW=null,this.F_SIGN=null,this.F_ZERO=null,this.F_NOTUSED=null,this.F_NOTUSED_NEW=null,this.F_BRK=null,this.F_BRK_NEW=null,this.opdata=null,this.cyclesToHalt=null,this.crash=null,this.irqRequested=null,this.irqType=null,this.reset()};Q.prototype={IRQ_NORMAL:0,IRQ_NMI:1,IRQ_RESET:2,reset:function(){this.mem=new Uint8Array(65536);for(var t=0;t<8192;t++)this.mem[t]=255;for(var i=0;i<4;i++){var s=i*2048;this.mem[s+8]=247,this.mem[s+9]=239,this.mem[s+10]=223,this.mem[s+15]=191}for(var e=8193;e<this.mem.length;e++)this.mem[e]=0;this.REG_ACC=0,this.REG_X=0,this.REG_Y=0,this.REG_SP=511,this.REG_PC=32767,this.REG_PC_NEW=32767,this.REG_STATUS=40,this.setStatus(40),this.F_CARRY=0,this.F_DECIMAL=0,this.F_INTERRUPT=1,this.F_INTERRUPT_NEW=1,this.F_OVERFLOW=0,this.F_SIGN=0,this.F_ZERO=1,this.F_NOTUSED=1,this.F_NOTUSED_NEW=1,this.F_BRK=1,this.F_BRK_NEW=1,this.opdata=new j().opdata,this.cyclesToHalt=0,this.crash=!1,this.irqRequested=!1,this.irqType=null},emulate:function(){var t,i;if(this.irqRequested){switch(t=this.F_CARRY|(this.F_ZERO===0?1:0)<<1|this.F_INTERRUPT<<2|this.F_DECIMAL<<3|this.F_BRK<<4|this.F_NOTUSED<<5|this.F_OVERFLOW<<6|this.F_SIGN<<7,this.REG_PC_NEW=this.REG_PC,this.F_INTERRUPT_NEW=this.F_INTERRUPT,this.irqType){case 0:{if(this.F_INTERRUPT!==0)break;this.doIrq(t);break}case 1:{this.doNonMaskableInterrupt(t);break}case 2:{this.doResetInterrupt();break}}this.REG_PC=this.REG_PC_NEW,this.F_INTERRUPT=this.F_INTERRUPT_NEW,this.F_BRK=this.F_BRK_NEW,this.irqRequested=!1}var s=this.opdata[this.nes.mmap.load(this.REG_PC+1)],e=s>>24,r=0,a=s>>8&255,n=this.REG_PC;this.REG_PC+=s>>16&255;var h=0;switch(a){case 0:{h=this.load(n+2);break}case 1:{h=this.load(n+2),h<128?h+=this.REG_PC:h+=this.REG_PC-256;break}case 2:break;case 3:{h=this.load16bit(n+2);break}case 4:{h=this.REG_ACC;break}case 5:{h=this.REG_PC;break}case 6:{h=this.load(n+2)+this.REG_X&255;break}case 7:{h=this.load(n+2)+this.REG_Y&255;break}case 8:{h=this.load16bit(n+2),(h&65280)!==(h+this.REG_X&65280)&&(r=1),h+=this.REG_X;break}case 9:{h=this.load16bit(n+2),(h&65280)!==(h+this.REG_Y&65280)&&(r=1),h+=this.REG_Y;break}case 10:{h=this.load(n+2),(h&65280)!==(h+this.REG_X&65280)&&(r=1),h+=this.REG_X,h&=255,h=this.load16bit(h);break}case 11:{h=this.load16bit(this.load(n+2)),(h&65280)!==(h+this.REG_Y&65280)&&(r=1),h+=this.REG_Y;break}case 12:{h=this.load16bit(n+2),h<8191?h=this.mem[h]+(this.mem[h&65280|(h&255)+1&255]<<8):h=this.nes.mmap.load(h)+(this.nes.mmap.load(h&65280|(h&255)+1&255)<<8);break}}switch(h&=65535,s&255){case 0:{t=this.REG_ACC+this.load(h)+this.F_CARRY,((this.REG_ACC^this.load(h))&128)===0&&((this.REG_ACC^t)&128)!==0?this.F_OVERFLOW=1:this.F_OVERFLOW=0,this.F_CARRY=t>255?1:0,this.F_SIGN=t>>7&1,this.F_ZERO=t&255,this.REG_ACC=t&255,e+=r;break}case 1:{this.REG_ACC=this.REG_ACC&this.load(h),this.F_SIGN=this.REG_ACC>>7&1,this.F_ZERO=this.REG_ACC,a!==11&&(e+=r);break}case 2:{a===4?(this.F_CARRY=this.REG_ACC>>7&1,this.REG_ACC=this.REG_ACC<<1&255,this.F_SIGN=this.REG_ACC>>7&1,this.F_ZERO=this.REG_ACC):(t=this.load(h),this.F_CARRY=t>>7&1,t=t<<1&255,this.F_SIGN=t>>7&1,this.F_ZERO=t,this.write(h,t));break}case 3:{this.F_CARRY===0&&(e+=(n&65280)!==(h&65280)?2:1,this.REG_PC=h);break}case 4:{this.F_CARRY===1&&(e+=(n&65280)!==(h&65280)?2:1,this.REG_PC=h);break}case 5:{this.F_ZERO===0&&(e+=(n&65280)!==(h&65280)?2:1,this.REG_PC=h);break}case 6:{t=this.load(h),this.F_SIGN=t>>7&1,this.F_OVERFLOW=t>>6&1,t&=this.REG_ACC,this.F_ZERO=t;break}case 7:{this.F_SIGN===1&&(e++,this.REG_PC=h);break}case 8:{this.F_ZERO!==0&&(e+=(n&65280)!==(h&65280)?2:1,this.REG_PC=h);break}case 9:Line truncated
import{b as Z}from"./chunk-JX2MTUGT.js";import{a as U}from"./chunk-OJEFOAZC.js";import{a as Ft}from"./chunk-LNOKARBD.js";import{A as W,j as q,n as X,o as Y,x as T,y as H}from"./chunk-4676AC7I.js";import{H as L,K as N,P as E,T as V,U as B,W as m,Y as G,Z as w,g as D,n as v}from"./chunk-TYDI7JZQ.js";import{d as S}from"./chunk-KT7KMEQC.js";var O=S((wt,z)=>{"use strict";var d=function(){this.state=new Array(8);for(var t=0;t<this.state.length;t++)this.state[t]=64};d.BUTTON_A=0;d.BUTTON_B=1;d.BUTTON_SELECT=2;d.BUTTON_START=3;d.BUTTON_UP=4;d.BUTTON_DOWN=5;d.BUTTON_LEFT=6;d.BUTTON_RIGHT=7;d.prototype={buttonDown:function(t){this.state[t]=65},buttonUp:function(t){this.state[t]=64}};z.exports=d});var I=S((qt,K)=>{"use strict";K.exports={copyArrayElements:function(t,i,s,e,r){for(var a=0;a<r;++a)s[e+a]=t[i+a]},copyArray:function(t){return t.slice(0)},fromJSON:function(t,i){for(var s=0;s<t.JSON_PROPERTIES.length;s++){var e=t.JSON_PROPERTIES[s];t[e]!==null&&t[e].buffer&&t[e].set?t[e].set(i[e]):t[e]=i[e]}},toJSON:function(t){for(var i={},s=0;s<t.JSON_PROPERTIES.length;s++){var e=t.JSON_PROPERTIES[s];i[e]=t[e]}return i}}});var tt=S((Xt,$)=>{"use strict";var J=I(),Q=function(t){this.nes=t,this.mem=null,this.REG_ACC=null,this.REG_X=null,this.REG_Y=null,this.REG_SP=null,this.REG_PC=null,this.REG_PC_NEW=null,this.REG_STATUS=null,this.F_CARRY=null,this.F_DECIMAL=null,this.F_INTERRUPT=null,this.F_INTERRUPT_NEW=null,this.F_OVERFLOW=null,this.F_SIGN=null,this.F_ZERO=null,this.F_NOTUSED=null,this.F_NOTUSED_NEW=null,this.F_BRK=null,this.F_BRK_NEW=null,this.opdata=null,this.cyclesToHalt=null,this.crash=null,this.irqRequested=null,this.irqType=null,this.reset()};Q.prototype={IRQ_NORMAL:0,IRQ_NMI:1,IRQ_RESET:2,reset:function(){this.mem=new Uint8Array(65536);for(var t=0;t<8192;t++)this.mem[t]=255;for(var i=0;i<4;i++){var s=i*2048;this.mem[s+8]=247,this.mem[s+9]=239,this.mem[s+10]=223,this.mem[s+15]=191}for(var e=8193;e<this.mem.length;e++)this.mem[e]=0;this.REG_ACC=0,this.REG_X=0,this.REG_Y=0,this.REG_SP=511,this.REG_PC=32767,this.REG_PC_NEW=32767,this.REG_STATUS=40,this.setStatus(40),this.F_CARRY=0,this.F_DECIMAL=0,this.F_INTERRUPT=1,this.F_INTERRUPT_NEW=1,this.F_OVERFLOW=0,this.F_SIGN=0,this.F_ZERO=1,this.F_NOTUSED=1,this.F_NOTUSED_NEW=1,this.F_BRK=1,this.F_BRK_NEW=1,this.opdata=new j().opdata,this.cyclesToHalt=0,this.crash=!1,this.irqRequested=!1,this.irqType=null},emulate:function(){var t,i;if(this.irqRequested){switch(t=this.F_CARRY|(this.F_ZERO===0?1:0)<<1|this.F_INTERRUPT<<2|this.F_DECIMAL<<3|this.F_BRK<<4|this.F_NOTUSED<<5|this.F_OVERFLOW<<6|this.F_SIGN<<7,this.REG_PC_NEW=this.REG_PC,this.F_INTERRUPT_NEW=this.F_INTERRUPT,this.irqType){case 0:{if(this.F_INTERRUPT!==0)break;this.doIrq(t);break}case 1:{this.doNonMaskableInterrupt(t);break}case 2:{this.doResetInterrupt();break}}this.REG_PC=this.REG_PC_NEW,this.F_INTERRUPT=this.F_INTERRUPT_NEW,this.F_BRK=this.F_BRK_NEW,this.irqRequested=!1}var s=this.opdata[this.nes.mmap.load(this.REG_PC+1)],e=s>>24,r=0,a=s>>8&255,n=this.REG_PC;this.REG_PC+=s>>16&255;var h=0;switch(a){case 0:{h=this.load(n+2);break}case 1:{h=this.load(n+2),h<128?h+=this.REG_PC:h+=this.REG_PC-256;break}case 2:break;case 3:{h=this.load16bit(n+2);break}case 4:{h=this.REG_ACC;break}case 5:{h=this.REG_PC;break}case 6:{h=this.load(n+2)+this.REG_X&255;break}case 7:{h=this.load(n+2)+this.REG_Y&255;break}case 8:{h=this.load16bit(n+2),(h&65280)!==(h+this.REG_X&65280)&&(r=1),h+=this.REG_X;break}case 9:{h=this.load16bit(n+2),(h&65280)!==(h+this.REG_Y&65280)&&(r=1),h+=this.REG_Y;break}case 10:{h=this.load(n+2),(h&65280)!==(h+this.REG_X&65280)&&(r=1),h+=this.REG_X,h&=255,h=this.load16bit(h);break}case 11:{h=this.load16bit(this.load(n+2)),(h&65280)!==(h+this.REG_Y&65280)&&(r=1),h+=this.REG_Y;break}case 12:{h=this.load16bit(n+2),h<8191?h=this.mem[h]+(this.mem[h&65280|(h&255)+1&255]<<8):h=this.nes.mmap.load(h)+(this.nes.mmap.load(h&65280|(h&255)+1&255)<<8);break}}switch(h&=65535,s&255){case 0:{t=this.REG_ACC+this.load(h)+this.F_CARRY,((this.REG_ACC^this.load(h))&128)===0&&((this.REG_ACC^t)&128)!==0?this.F_OVERFLOW=1:this.F_OVERFLOW=0,this.F_CARRY=t>255?1:0,this.F_SIGN=t>>7&1,this.F_ZERO=t&255,this.REG_ACC=t&255,e+=r;break}case 1:{this.REG_ACC=this.REG_ACC&this.load(h),this.F_SIGN=this.REG_ACC>>7&1,this.F_ZERO=this.REG_ACC,a!==11&&(e+=r);break}case 2:{a===4?(this.F_CARRY=this.REG_ACC>>7&1,this.REG_ACC=this.REG_ACC<<1&255,this.F_SIGN=this.REG_ACC>>7&1,this.F_ZERO=this.REG_ACC):(t=this.load(h),this.F_CARRY=t>>7&1,t=t<<1&255,this.F_SIGN=t>>7&1,this.F_ZERO=t,this.write(h,t));break}case 3:{this.F_CARRY===0&&(e+=(n&65280)!==(h&65280)?2:1,this.REG_PC=h);break}case 4:{this.F_CARRY===1&&(e+=(n&65280)!==(h&65280)?2:1,this.REG_PC=h);break}case 5:{this.F_ZERO===0&&(e+=(n&65280)!==(h&65280)?2:1,this.REG_PC=h);break}case 6:{t=this.load(h),this.F_SIGN=t>>7&1,this.F_OVERFLOW=t>>6&1,t&=this.REG_ACC,this.F_ZERO=t;break}case 7:{this.F_SIGN===1&&(e++,this.REG_PC=h);break}case 8:{this.F_ZERO!==0&&(e+=(n&65280)!==(h&65280)?2:1,this.REG_PC=h);break}case 9:Line truncated
`)}var l=e[8194];r+=`
Status `,r+=l&128?"VBLANK ":"- ",r+=l&64?"SPRITE0HIT ":"- ",r+=`
`,s.f_color&&(r+=" Tint "+(s.f_color&1?"RED ":"")+(s.f_color&2?"BLUE ":"")+(s.f_color&4?"GREEN ":"")+`
@@ -22,5 +22,5 @@ IRQ Counter: `+s.irqCounter,r+=`
PRG Select: `+s.prgAddressSelect,r+=`
CHR Select: `+s.chrAddressSelect),r+=`
`,r}startProbing(){var s=new X(this);return this.connectProbe(s),s}stopProbing(){this.connectProbe(null)}connectProbe(s){this.probe=s||this.nullProbe}showHelp(){return"https://8bitworkshop.com/docs/platforms/nes/"}getDebugSymbolFile(){var s=this.debugSymbols.addr2symbol,e="";for(let[r,a]of Object.entries(s)){let n=Number(r),h;n<8192?(n=n%2048,h="R"):n<24576?h="G":n<32768?(n=n-24576,h="S"):(n=n-32768,h="P");let l=n.toString(16).padStart(4,"0").toUpperCase();a[0]>="0"&&a[0]<="9"&&(a="L"+a),a=L(a,".","_"),e+=`${h}:${l}:${a}
`}return{extension:".mlb",blob:new Blob([e],{type:"text/plain"})}}},k=class extends U{constructor(){super(...arguments);this.getToolForFilename=O;this.getOpcodeMetadata=W}start(){}loadROM(s,e){if(!this.started)this.startModule(this.mainElement,{jsfile:"mame8bitws.js",driver:"nes",width:256,height:240,romfn:"/emulator/cart.nes",romdata:new Uint8Array(e),preInit:function(n){}});else{var r=e[4]*16384,a=e[5]*8192;this.loadROMFile(e),this.loadRegion(":nes_slot:cart:prg_rom",e.slice(16,16+r)),this.loadRegion(":nes_slot:cart:chr_rom",e.slice(16+r,16+r+a))}}getPresets(){return Tt}getDefaultExtensions(){return[".c",".cpp",".acme",".xa",".ca65",".dasm",".ecs",".wiz"]}};I.nes=E;I["nes-asm"]=E;I["nes.mame"]=k;
//# sourceMappingURL=nes-UT72WS3X.js.map
`}return{extension:".mlb",blob:new Blob([e],{type:"text/plain"})}}},k=class extends U{constructor(){super(...arguments);this.getToolForFilename=T;this.getOpcodeMetadata=W}start(){}loadROM(s,e){if(!this.started)this.startModule(this.mainElement,{jsfile:"mame8bitws.js",driver:"nes",width:256,height:240,romfn:"/emulator/cart.nes",romdata:new Uint8Array(e),preInit:function(n){}});else{var r=e[4]*16384,a=e[5]*8192;this.loadROMFile(e),this.loadRegion(":nes_slot:cart:prg_rom",e.slice(16,16+r)),this.loadRegion(":nes_slot:cart:chr_rom",e.slice(16+r,16+r+a))}}getPresets(){return Tt}getDefaultExtensions(){return[".c",".cpp",".acme",".xa",".ca65",".dasm",".ecs",".wiz"]}};N.nes=y;N["nes.mame"]=k;
//# sourceMappingURL=nes-C4ZGBBHZ.js.map
@@ -1,7 +1,7 @@
{
"version": 3,
"sources": ["../jsnes/src/controller.js", "../jsnes/src/utils.js", "../jsnes/src/cpu.js", "../jsnes/src/tile.js", "../jsnes/src/ppu.js", "../jsnes/src/papu.js", "../jsnes/src/mappers.js", "../jsnes/src/rom.js", "../jsnes/src/nes.js", "../jsnes/src/index.js", "../src/platform/nes.ts"],
"sourcesContent": ["var Controller = function() {\n this.state = new Array(8);\n for (var i = 0; i < this.state.length; i++) {\n this.state[i] = 0x40;\n }\n};\n\nController.BUTTON_A = 0;\nController.BUTTON_B = 1;\nController.BUTTON_SELECT = 2;\nController.BUTTON_START = 3;\nController.BUTTON_UP = 4;\nController.BUTTON_DOWN = 5;\nController.BUTTON_LEFT = 6;\nController.BUTTON_RIGHT = 7;\n\nController.prototype = {\n buttonDown: function(key) {\n this.state[key] = 0x41;\n },\n\n buttonUp: function(key) {\n this.state[key] = 0x40;\n }\n};\n\nmodule.exports = Controller;\n", "module.exports = {\n copyArrayElements: function(src, srcPos, dest, destPos, length) {\n for (var i = 0; i < length; ++i) {\n dest[destPos + i] = src[srcPos + i];\n }\n },\n\n copyArray: function(src) {\n return src.slice(0);\n },\n\n fromJSON: function(obj, state) {\n for (var i = 0; i < obj.JSON_PROPERTIES.length; i++) {\n var key = obj.JSON_PROPERTIES[i];\n if (obj[key] !== null && obj[key].buffer && obj[key].set)\n obj[key].set(state[key]); // set array elements\n else\n obj[key] = state[key]; // replace\n }\n },\n\n toJSON: function(obj) {\n var state = {};\n for (var i = 0; i < obj.JSON_PROPERTIES.length; i++) {\n var key = obj.JSON_PROPERTIES[i];\n state[key] = obj[key];\n }\n return state;\n }\n};\n", "var utils = require(\"./utils\");\n\nvar CPU = function(nes) {\n this.nes = nes;\n\n // Keep Chrome happy\n this.mem = null;\n this.REG_ACC = null;\n this.REG_X = null;\n this.REG_Y = null;\n this.REG_SP = null;\n this.REG_PC = null;\n this.REG_PC_NEW = null;\n this.REG_STATUS = null;\n this.F_CARRY = null;\n this.F_DECIMAL = null;\n this.F_INTERRUPT = null;\n this.F_INTERRUPT_NEW = null;\n this.F_OVERFLOW = null;\n this.F_SIGN = null;\n this.F_ZERO = null;\n this.F_NOTUSED = null;\n this.F_NOTUSED_NEW = null;\n this.F_BRK = null;\n this.F_BRK_NEW = null;\n this.opdata = null;\n this.cyclesToHalt = null;\n this.crash = null;\n this.irqRequested = null;\n this.irqType = null;\n\n this.reset();\n};\n\nCPU.prototype = {\n // IRQ Types\n IRQ_NORMAL: 0,\n IRQ_NMI: 1,\n IRQ_RESET: 2,\n\n reset: function() {\n // Main memory\n this.mem = new Uint8Array(0x10000);\n\n for (var i = 0; i < 0x2000; i++) {\n this.mem[i] = 0xff;\n }\n for (var p = 0; p < 4; p++) {\n var j = p * 0x800;\n this.mem[j + 0x008] = 0xf7;\n this.mem[j + 0x009] = 0xef;\n this.mem[j + 0x00a] = 0xdf;\n this.mem[j + 0x00f] = 0xbf;\n }\n for (var k = 0x2001; k < this.mem.length; k++) {\n this.mem[k] = 0;\n }\n\n // CPU Registers:\n this.REG_ACC = 0;\n this.REG_X = 0;\n this.REG_Y = 0;\n // Reset Stack pointer:\n this.REG_SP = 0x01ff;\n // Reset Program counter:\n this.REG_PC = 0x8000 - 1;\n this.REG_PC_NEW = 0x8000 - 1;\n // Reset Status register:\n this.REG_STATUS = 0x28;\n\n this.setStatus(0x28);\n\n // Set flags:\n this.F_CARRY = 0;\n this.F_DECIMAL = 0;\n this.F_INTERRUPT = 1;\n this.F_INTERRUPT_NEW = 1;\n this.F_OVERFLOW = 0;\n this.F_SIGN = 0;\n this.F_ZERO = 1;\n\n this.F_NOTUSED = 1;\n this.F_NOTUSED_NEW = 1;\n this.F_BRK = 1;\n this.F_BRK_NEW = 1;\n\n this.opdata = new OpData().opdata;\n this.cyclesToHalt = 0;\n\n // Reset crash flag:\n this.crash = false;\n\n // Interrupt notification:\n this.irqRequested = false;\n this.irqType = null;\n },\n\n // Emulates a single CPU instruction, returns the number of cycles\n emulate: function() {\n var temp;\n var add;\n\n // Check interrupts:\n if (this.irqRequested) {\n temp =\n this.F_CARRY |\n ((this.F_ZERO === 0 ? 1 : 0) << 1) |\n (this.F_INTERRUPT << 2) |\n (this.F_DECIMAL << 3) |\n (this.F_BRK << 4) |\n (this.F_NOTUSED << 5) |\n (this.F_OVERFLOW << 6) |\n (this.F_SIGN << 7);\n\n this.REG_PC_NEW = this.REG_PC;\n this.F_INTERRUPT_NEW = this.F_INTERRUPT;\n switch (this.irqType) {\n case 0: {\n // Normal IRQ:\n if (this.F_INTERRUPT !== 0) {\n // console.log(\"Interrupt was masked.\");\n break;\n }\n this.doIrq(temp);\n // console.log(\"Did normal IRQ. I=\"+this.F_INTERRUPT);\n break;\n }\n case 1: {\n // NMI:\n this.doNonMaskableInterrupt(temp);\n break;\n }\n case 2: {\n // Reset:\n this.doResetInterrupt();\n break;\n }\n }\n\n this.REG_PC = this.REG_PC_NEW;\n this.F_INTERRUPT = this.F_INTERRUPT_NEW;\n this.F_BRK = this.F_BRK_NEW;\n this.irqRequested = false;\n }\n\n var opinf = this.opdata[this.nes.mmap.load(this.REG_PC + 1)];\n var cycleCount = opinf >> 24;\n var cycleAdd = 0;\n\n // Find address mode:\n var addrMode = (opinf >> 8) & 0xff;\n\n Line truncated
"mappings": "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 truncated
"sourcesContent": ["var Controller = function() {\n this.state = new Array(8);\n for (var i = 0; i < this.state.length; i++) {\n this.state[i] = 0x40;\n }\n};\n\nController.BUTTON_A = 0;\nController.BUTTON_B = 1;\nController.BUTTON_SELECT = 2;\nController.BUTTON_START = 3;\nController.BUTTON_UP = 4;\nController.BUTTON_DOWN = 5;\nController.BUTTON_LEFT = 6;\nController.BUTTON_RIGHT = 7;\n\nController.prototype = {\n buttonDown: function(key) {\n this.state[key] = 0x41;\n },\n\n buttonUp: function(key) {\n this.state[key] = 0x40;\n }\n};\n\nmodule.exports = Controller;\n", "module.exports = {\n copyArrayElements: function(src, srcPos, dest, destPos, length) {\n for (var i = 0; i < length; ++i) {\n dest[destPos + i] = src[srcPos + i];\n }\n },\n\n copyArray: function(src) {\n return src.slice(0);\n },\n\n fromJSON: function(obj, state) {\n for (var i = 0; i < obj.JSON_PROPERTIES.length; i++) {\n var key = obj.JSON_PROPERTIES[i];\n if (obj[key] !== null && obj[key].buffer && obj[key].set)\n obj[key].set(state[key]); // set array elements\n else\n obj[key] = state[key]; // replace\n }\n },\n\n toJSON: function(obj) {\n var state = {};\n for (var i = 0; i < obj.JSON_PROPERTIES.length; i++) {\n var key = obj.JSON_PROPERTIES[i];\n state[key] = obj[key];\n }\n return state;\n }\n};\n", "var utils = require(\"./utils\");\n\nvar CPU = function(nes) {\n this.nes = nes;\n\n // Keep Chrome happy\n this.mem = null;\n this.REG_ACC = null;\n this.REG_X = null;\n this.REG_Y = null;\n this.REG_SP = null;\n this.REG_PC = null;\n this.REG_PC_NEW = null;\n this.REG_STATUS = null;\n this.F_CARRY = null;\n this.F_DECIMAL = null;\n this.F_INTERRUPT = null;\n this.F_INTERRUPT_NEW = null;\n this.F_OVERFLOW = null;\n this.F_SIGN = null;\n this.F_ZERO = null;\n this.F_NOTUSED = null;\n this.F_NOTUSED_NEW = null;\n this.F_BRK = null;\n this.F_BRK_NEW = null;\n this.opdata = null;\n this.cyclesToHalt = null;\n this.crash = null;\n this.irqRequested = null;\n this.irqType = null;\n\n this.reset();\n};\n\nCPU.prototype = {\n // IRQ Types\n IRQ_NORMAL: 0,\n IRQ_NMI: 1,\n IRQ_RESET: 2,\n\n reset: function() {\n // Main memory\n this.mem = new Uint8Array(0x10000);\n\n for (var i = 0; i < 0x2000; i++) {\n this.mem[i] = 0xff;\n }\n for (var p = 0; p < 4; p++) {\n var j = p * 0x800;\n this.mem[j + 0x008] = 0xf7;\n this.mem[j + 0x009] = 0xef;\n this.mem[j + 0x00a] = 0xdf;\n this.mem[j + 0x00f] = 0xbf;\n }\n for (var k = 0x2001; k < this.mem.length; k++) {\n this.mem[k] = 0;\n }\n\n // CPU Registers:\n this.REG_ACC = 0;\n this.REG_X = 0;\n this.REG_Y = 0;\n // Reset Stack pointer:\n this.REG_SP = 0x01ff;\n // Reset Program counter:\n this.REG_PC = 0x8000 - 1;\n this.REG_PC_NEW = 0x8000 - 1;\n // Reset Status register:\n this.REG_STATUS = 0x28;\n\n this.setStatus(0x28);\n\n // Set flags:\n this.F_CARRY = 0;\n this.F_DECIMAL = 0;\n this.F_INTERRUPT = 1;\n this.F_INTERRUPT_NEW = 1;\n this.F_OVERFLOW = 0;\n this.F_SIGN = 0;\n this.F_ZERO = 1;\n\n this.F_NOTUSED = 1;\n this.F_NOTUSED_NEW = 1;\n this.F_BRK = 1;\n this.F_BRK_NEW = 1;\n\n this.opdata = new OpData().opdata;\n this.cyclesToHalt = 0;\n\n // Reset crash flag:\n this.crash = false;\n\n // Interrupt notification:\n this.irqRequested = false;\n this.irqType = null;\n },\n\n // Emulates a single CPU instruction, returns the number of cycles\n emulate: function() {\n var temp;\n var add;\n\n // Check interrupts:\n if (this.irqRequested) {\n temp =\n this.F_CARRY |\n ((this.F_ZERO === 0 ? 1 : 0) << 1) |\n (this.F_INTERRUPT << 2) |\n (this.F_DECIMAL << 3) |\n (this.F_BRK << 4) |\n (this.F_NOTUSED << 5) |\n (this.F_OVERFLOW << 6) |\n (this.F_SIGN << 7);\n\n this.REG_PC_NEW = this.REG_PC;\n this.F_INTERRUPT_NEW = this.F_INTERRUPT;\n switch (this.irqType) {\n case 0: {\n // Normal IRQ:\n if (this.F_INTERRUPT !== 0) {\n // console.log(\"Interrupt was masked.\");\n break;\n }\n this.doIrq(temp);\n // console.log(\"Did normal IRQ. I=\"+this.F_INTERRUPT);\n break;\n }\n case 1: {\n // NMI:\n this.doNonMaskableInterrupt(temp);\n break;\n }\n case 2: {\n // Reset:\n this.doResetInterrupt();\n break;\n }\n }\n\n this.REG_PC = this.REG_PC_NEW;\n this.F_INTERRUPT = this.F_INTERRUPT_NEW;\n this.F_BRK = this.F_BRK_NEW;\n this.irqRequested = false;\n }\n\n var opinf = this.opdata[this.nes.mmap.load(this.REG_PC + 1)];\n var cycleCount = opinf >> 24;\n var cycleAdd = 0;\n\n // Find address mode:\n var addrMode = (opinf >> 8) & 0xff;\n\n Line truncated
"mappings": "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 truncated
"names": ["require_controller", "__commonJSMin", "exports", "module", "Controller", "i", "key", "require_utils", "__commonJSMin", "exports", "module", "src", "srcPos", "dest", "destPos", "length", "i", "obj", "state", "key", "require_cpu", "__commonJSMin", "exports", "module", "utils", "CPU", "nes", "i", "p", "j", "k", "OpData", "temp", "add", "opinf", "cycleCount", "cycleAdd", "addrMode", "opaddr", "addr", "val", "type", "value", "addr1", "addr2", "cycles", "status", "st", "s", "inst", "op", "size", "require_tile", "__commonJSMin", "exports", "module", "Tile", "scanline", "sline", "b1", "b2", "buffer", "srcx1", "srcy1", "srcx2", "srcy2", "dx", "dy", "palAdd", "palette", "flipHorizontal", "flipVertical", "pri", "priTable", "x", "y", "s", "require_ppu", "__commonJSMin", "exports", "module", "Tile", "utils", "PPU", "nes", "i", "NameTable", "PaletteTable", "mirroring", "fromStart", "toStart", "size", "bgColor", "buffer", "pixrendered", "x", "y", "value", "flag", "n", "tmp", "address", "baseAddress", "data", "b1", "b2", "count", "startScan", "scanCount", "si", "ei", "bgbuffer", "destIndex", "scan", "baseTile", "tscanoffset", "scantile", "attrib", "ptTile", "nameTable", "imgPalette", "targetBuffer", "t", "tpix", "att", "col", "tile", "sx", "startscan", "scancount", "bgPri", "top", "srcy1", "srcy2", "toffset", "tIndexAdd", "bufferIndex", "tileIndex", "leftOver", "index", "tIndex", "state", "width", "height", "name", "basex", "basey", "add", "tx", "ty", "attindex", "sqy", "sqx", "s", "r", "g", "b", "rFactor", "gFactor", "bFactor", "emph", "yiq", "rgb", "require_papu", "__commonJSMin", "exports", "module", "CPU_FREQ_NTSC", "PAPU", "nes", "ChannelSquare", "ChannelTriangle", "ChannelNoise", "ChannelDM", "address", "tmp", "value", "nCycles", "maxCycles", "dmc", "triangle", "square1", "square2", "noise", "acc_c", "cycles", "sq_index", "tnd_index", "smpNoise", "sampleValueL", "sampleValueR", "smpDiffL", "smpDiffR", "pos", "ival", "i", "max_sqr", "max_tnd", "papu", "addrAdd", "require_mappers", "__commonJSMin", "exports", "module", "utils", "Mappers", "nes", "address", "value", "w", "ret", "ram", "bank", "vromTile", "bank4kStart", "bank1k", "bank4k", "bankoffset", "baseIndex", "i", "bank2k", "bank8k", "bank16k", "offset", "s", "reg", "tmp", "baseBank", "oldSetting", "cmd", "arg", "prgbank1", "prgbank2", "require_rom", "__commonJSMin", "exports", "module", "Mappers", "Tile", "ROM", "nes", "data", "j", "v", "foundError", "offset", "tileIndex", "leftOver", "require_nes", "__commonJSMin", "exports", "module", "CPU", "Controller", "PPU", "PAPU", "ROM", "NES", "opts", "key", "cycles", "emulateSound", "cpu", "ppu", "papu", "FRAMELOOP", "controller", "button", "x", "y", "now", "fps", "data", "rate", "s", "require_src", "__commonJSMin", "exports", "module", "jsnes", "getMousetrap", "JSNES_PRESETS", "JSNES_KEYCODE_MAP", "makeKeycodeMap", "Keys", "copyTypedArrays", "o", "k", "JSNESPlatform", "Base6502Platform", "mainElement", "fn", "getToolForFilename_6502", "NullProbe", "SampleAudio", "RasterVideo", "idata", "frameBuffer", "i", "left", "right", "s", "EmuHalt", "cycles", "AnimationTimer", "setKeyboardFromMap", "key", "code", "flags", "novideo", "a", "attraddr", "baseTile", "row", "col", "name", "t", "attr", "tag", "j", "attrshift", "coloradd", "y", "color", "rgb", "title", "data", "romstr", "byteArrayToString", "mmap", "oldload", "oldwrite", "oldregLoad", "oldregWrite", "lastioaddr", "addr", "val", "ppu", "old_endScanline", "old_startFrame", "old_writeMem", "v", "CodeAnalyzer_nes", "frame0", "c", "state", "category", "mem", "PPUFLAGS", "flag", "status", "hex", "scrollX", "scrollY", "rec", "ProbeRecorder", "probe", "sym", "text", "numK", "symType", "replaceAll", "NESMAMEPlatform", "BaseMAME6502Platform", "getOpcodeMetadata_6502", "_self", "prgromlen", "chrromlen", "PLATFORMS"]
}
+1 -1
View File
@@ -12,7 +12,7 @@ const channelf_1 = require("../machine/channelf");
const disasmF8_1 = require("../common/cpu/disasmF8");
const util_1 = require("../common/util");
var CHANNELF_PRESETS = [
{ id: 'hello.dasm', name: 'Hello World (ASM)' },
//{ id: 'hello.dasm', name: 'Hello World (ASM)' },
];
function cpuStateToLongString_F8(c) {
return "PC0 = " + (0, util_1.hex)(c.PC0, 4) + " PC1 = " + (0, util_1.hex)(c.PC1, 4) + "\n"
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"channelf.js","sourceRoot":"","sources":["../../src/platform/channelf.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"channelf.js","sourceRoot":"","sources":["../../src/platform/channelf.ts"],"names":[],"mappings":"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"}
+1 -1
View File
@@ -20,7 +20,7 @@ class GalaxianPlatform extends baseplatform_1.BaseZ80MachinePlatform {
};
}
newMachine() { return new galaxian_1.GalaxianMachine(); }
getPresets() { return GALAXIAN_PRESETS; }
getPresets() { return []; }
readAddress(a) { return this.machine.readConst(a); }
readVRAMAddress(a) { return (a < 0x800) ? this.machine.vram[a] : this.machine.oram[a - 0x800]; }
showHelp() { return "https://8bitworkshop.com/docs/platforms/arcade/index.html#galaxian-scramble"; }
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"galaxian.js","sourceRoot":"","sources":["../../src/platform/galaxian.ts"],"names":[],"mappings":";;AAEA,uCAA0C;AAC1C,kDAA+E;AAC/E,yDAAgE;AAEhE,MAAM,gBAAgB,GAAG;IACvB,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,eAAe,EAAE;IAC1C,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,eAAe,EAAE;CAC1C,CAAC;AAEF,MAAM,gBAAiB,SAAQ,qCAAuC;IAAtE;;QAME,oDAAoD;QACpD,iBAAY,GAAG;YAAa,OAAO,EAAE,IAAI,EAAC;oBACxC,EAAC,IAAI,EAAC,WAAW,EAAC,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC;oBACrD,EAAC,IAAI,EAAC,YAAY,EAAC,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC;oBACtD,EAAC,IAAI,EAAC,eAAe,EAAC,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,IAAI,EAAC;iBAC1D,EAAE,CAAA;QAAC,CAAC,CAAC;IAER,CAAC;IAXC,UAAU,KAAc,OAAO,IAAI,0BAAe,EAAE,CAAC,CAAC,CAAC;IACvD,UAAU,KAAc,OAAO,gBAAgB,CAAC,CAAC,CAAC;IAClD,WAAW,CAAC,CAAC,IAAW,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3D,eAAe,CAAC,CAAC,IAAO,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAOjG,QAAQ,KAAK,OAAO,6EAA6E,CAAA,CAAC,CAAC;CACpG;AAED,MAAM,wBAAyB,SAAQ,gBAAgB;IAErD,UAAU,KAAc,OAAO,IAAI,kCAAuB,EAAE,CAAC,CAAC,CAAC;CAEhE;AAED,eAAS,CAAC,UAAU,CAAC,GAAG,gBAAgB,CAAC;AACzC,eAAS,CAAC,mBAAmB,CAAC,GAAG,wBAAwB,CAAC"}
{"version":3,"file":"galaxian.js","sourceRoot":"","sources":["../../src/platform/galaxian.ts"],"names":[],"mappings":";;AAEA,uCAA0C;AAC1C,kDAA+E;AAC/E,yDAAgE;AAEhE,MAAM,gBAAgB,GAAG;IACvB,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,eAAe,EAAE;IAC1C,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,eAAe,EAAE;CAC1C,CAAC;AAEF,MAAM,gBAAiB,SAAQ,qCAAuC;IAAtE;;QAME,oDAAoD;QACpD,iBAAY,GAAG;YAAa,OAAO,EAAE,IAAI,EAAC;oBACxC,EAAC,IAAI,EAAC,WAAW,EAAC,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC;oBACrD,EAAC,IAAI,EAAC,YAAY,EAAC,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC;oBACtD,EAAC,IAAI,EAAC,eAAe,EAAC,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,IAAI,EAAC;iBAC1D,EAAE,CAAA;QAAC,CAAC,CAAC;IAER,CAAC;IAXC,UAAU,KAAc,OAAO,IAAI,0BAAe,EAAE,CAAC,CAAC,CAAC;IACvD,UAAU,KAAc,OAAO,EAAE,CAAC,CAAC,CAAC;IACpC,WAAW,CAAC,CAAC,IAAW,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3D,eAAe,CAAC,CAAC,IAAO,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAOjG,QAAQ,KAAK,OAAO,6EAA6E,CAAA,CAAC,CAAC;CACpG;AAED,MAAM,wBAAyB,SAAQ,gBAAgB;IAErD,UAAU,KAAc,OAAO,IAAI,kCAAuB,EAAE,CAAC,CAAC,CAAC;CAEhE;AAED,eAAS,CAAC,UAAU,CAAC,GAAG,gBAAgB,CAAC;AACzC,eAAS,CAAC,mBAAmB,CAAC,GAAG,wBAAwB,CAAC"}
+10 -5
View File
@@ -5,12 +5,17 @@ const baseplatform_1 = require("../common/baseplatform");
const emu_1 = require("../common/emu");
const disasmSM83_1 = require("../common/cpu/disasmSM83");
const GB_PRESETS = [
{ id: 'hello.c', name: 'Hello World (C)' },
{ id: 'testdrawing.c', name: 'Drawing Routines (C)' },
{ id: 'testphys.c', name: 'Sprite Test (C)' },
{ id: 'hello.c', name: 'Hello World', category: 'C' },
{ id: 'testdrawing.c', name: 'Drawing Routines' },
{ id: 'testphys.c', name: 'Joypad Sprite' },
{ id: 'sprites.c', name: 'Multiple Sprites' },
{ id: 'metasprites.c', name: 'Metasprites' },
{ id: 'scroll.c', name: 'Scrolling' },
{ id: 'music.c', name: 'Music Player' },
{ id: 'siegegame.c', name: 'Siege Game' },
{ id: 'chase.c', name: "Shiru's Chase Game" },
{ id: 'pakupaku.c', name: 'Paku Paku' },
{ id: 'hello.sgb', name: 'Hello World (ASM)' },
{ id: 'hello.sgb', name: 'Hello World (ASM)', category: 'assembler' },
{ id: 'main.wiz', name: 'Snake Game (Wiz)' },
];
class GameBoyPlatform extends baseplatform_1.BaseMachinePlatform {
@@ -71,7 +76,7 @@ class GameBoyPlatform extends baseplatform_1.BaseMachinePlatform {
}
}
const GBC_PRESETS = [
{ id: 'hello_color.c', name: 'Hello Color World (C)' },
//{ id: 'hello_color.c', name: 'Hello Color World (C)' },
];
class GameBoyColorPlatform extends GameBoyPlatform {
newMachine() {
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"gb.js","sourceRoot":"","sources":["../../src/platform/gb.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"gb.js","sourceRoot":"","sources":["../../src/platform/gb.ts"],"names":[],"mappings":"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"}
+1 -1
View File
@@ -4,7 +4,7 @@ const emu_1 = require("../common/emu");
const kim1_1 = require("../machine/kim1");
const baseplatform_1 = require("../common/baseplatform");
var KIM1_PRESETS = [
{ id: 'hello.dasm', name: 'Hello World (ASM)' },
//{id:'hello.dasm', name:'Hello World (ASM)'},
];
class KIM1Platform extends baseplatform_1.Base6502MachinePlatform {
constructor() {
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"kim1.js","sourceRoot":"","sources":["../../src/platform/kim1.ts"],"names":[],"mappings":";;AAEA,uCAA0C;AAC1C,0CAAuC;AACvC,yDAAiE;AAEjE,IAAI,YAAY,GAAG;IACjB,EAAC,EAAE,EAAC,YAAY,EAAE,IAAI,EAAC,mBAAmB,EAAC;CAC5C,CAAC;AAEF,MAAM,YAAa,SAAQ,sCAA6B;IAAxD;;QAME,iBAAY,GAAG;YAAa,OAAO,EAAE,IAAI,EAAC;oBACtC,EAAC,IAAI,EAAC,KAAK,EAAW,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,KAAK,EAAC;oBAC1D,EAAC,IAAI,EAAC,MAAM,EAAU,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,IAAI,EAAC;oBACzD,EAAC,IAAI,EAAC,MAAM,EAAU,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,IAAI,EAAC;oBACzD,EAAC,IAAI,EAAC,KAAK,EAAW,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,KAAK,EAAC;oBAC1D,EAAC,IAAI,EAAC,MAAM,EAAU,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,KAAK,EAAC;iBAC7D,EAAE,CAAA;QAAC,CAAC,CAAC;IACR,CAAC;IAXC,UAAU,KAAc,OAAO,IAAI,WAAI,EAAE,CAAC,CAAC,CAAC;IAC5C,UAAU,KAAc,OAAO,YAAY,CAAC,CAAC,CAAC;IAC9C,WAAW,CAAC,CAAC,IAAW,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAS5D;AAED,GAAG;AAEH,eAAS,CAAC,MAAM,CAAC,GAAG,YAAY,CAAC"}
{"version":3,"file":"kim1.js","sourceRoot":"","sources":["../../src/platform/kim1.ts"],"names":[],"mappings":";;AAEA,uCAA0C;AAC1C,0CAAuC;AACvC,yDAAiE;AAEjE,IAAI,YAAY,GAAG;AACjB,8CAA8C;CAC/C,CAAC;AAEF,MAAM,YAAa,SAAQ,sCAA6B;IAAxD;;QAME,iBAAY,GAAG;YAAa,OAAO,EAAE,IAAI,EAAC;oBACtC,EAAC,IAAI,EAAC,KAAK,EAAW,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,KAAK,EAAC;oBAC1D,EAAC,IAAI,EAAC,MAAM,EAAU,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,IAAI,EAAC;oBACzD,EAAC,IAAI,EAAC,MAAM,EAAU,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,IAAI,EAAC;oBACzD,EAAC,IAAI,EAAC,KAAK,EAAW,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,KAAK,EAAC;oBAC1D,EAAC,IAAI,EAAC,MAAM,EAAU,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,KAAK,EAAC;iBAC7D,EAAE,CAAA;QAAC,CAAC,CAAC;IACR,CAAC;IAXC,UAAU,KAAc,OAAO,IAAI,WAAI,EAAE,CAAC,CAAC,CAAC;IAC5C,UAAU,KAAc,OAAO,YAAY,CAAC,CAAC,CAAC;IAC9C,WAAW,CAAC,CAAC,IAAW,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAS5D;AAED,GAAG;AAEH,eAAS,CAAC,MAAM,CAAC,GAAG,YAAY,CAAC"}
-1
View File
@@ -567,6 +567,5 @@ class NESMAMEPlatform extends mameplatform_1.BaseMAME6502Platform {
}
///
emu_1.PLATFORMS['nes'] = JSNESPlatform;
emu_1.PLATFORMS['nes-asm'] = JSNESPlatform;
emu_1.PLATFORMS['nes.mame'] = NESMAMEPlatform;
//# sourceMappingURL=nes.js.map
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"nes.js","sourceRoot":"","sources":["../../src/platform/nes.ts"],"names":[],"mappings":"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 truncated
{"version":3,"file":"nes.js","sourceRoot":"","sources":["../../src/platform/nes.ts"],"names":[],"mappings":"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 truncated
-1
View File
@@ -792,5 +792,4 @@ var VerilogVGAPlatform = function (mainElement, options) {
////////////////
emu_1.PLATFORMS['verilog'] = VerilogPlatform;
emu_1.PLATFORMS['verilog-vga'] = VerilogVGAPlatform;
emu_1.PLATFORMS['verilog-test'] = VerilogPlatform;
//# sourceMappingURL=verilog.js.map
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"verilog.js","sourceRoot":"","sources":["../../src/platform/verilog.ts"],"names":[],"mappings":"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 truncated
{"version":3,"file":"verilog.js","sourceRoot":"","sources":["../../src/platform/verilog.ts"],"names":[],"mappings":"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 truncated
+10 -3
View File
@@ -1275,6 +1275,7 @@ function pause() {
clearBreakpoint();
_pause();
userPaused = true;
(0, shortcutbar_1.refreshShortcutBar)(); // debug chips appear once the session starts
}
// F8 pauses a running emulator and resumes a paused one. Unmodified and not
// bound by CodeMirror, so it always reaches the IDE -- even while typing in
@@ -1300,7 +1301,8 @@ function _resume() {
function resume() {
if (!checkRunReady())
return;
// If there are enabled breakpoints, resume with them armed
// If there are enabled breakpoints, resume with them armed; the debug
// session stays active so the debug chips keep showing
if (breakpoints_1.bpStore.getEnabled().length > 0 && armBreakpoints()) {
if (!exports.platform.isRunning()) {
exports.projectWindows.refresh(false);
@@ -1310,12 +1312,16 @@ function resume() {
return;
}
clearBreakpoint();
// plain run: end the debug session so the Reset & Run / Search chips return
// (pause() set debugSessionActive; undo it here unless breakpoints were armed)
debugSessionActive = false;
if (!exports.platform.isRunning()) {
exports.projectWindows.refresh(false);
}
_resume();
userPaused = false;
lastViewClicked = null;
(0, shortcutbar_1.refreshShortcutBar)();
}
function singleStep() {
if (!checkRunReady())
@@ -2296,8 +2302,9 @@ function showInstructions() {
vcanvas.on('focus', () => {
if (exports.platform.isRunning()) {
div.fadeIn(200);
// toggle sound for browser autoplay
exports.platform.pause();
// unlock audio for browser autoplay policy (resume() no-ops if already running;
// don't pair with pause() first -- suspend()/resume() are async and racing them
// here left the AudioContext stuck suspended)
exports.platform.resume();
}
});
+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
+2 -2
View File
@@ -140,8 +140,8 @@ class SourceEditor {
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+shift+backspace', 'Delete Line', deleteLine),
//mk('mod+/', 'Toggle Comment', toggleComment),
mk('mod+z', 'Undo', commands_1.undo),
mk('mod+shift+z', 'Redo', commands_1.redo),
];
+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
+1 -1
View File
@@ -12,7 +12,7 @@ const channelf_1 = require("../machine/channelf");
const disasmF8_1 = require("../common/cpu/disasmF8");
const util_1 = require("../common/util");
var CHANNELF_PRESETS = [
{ id: 'hello.dasm', name: 'Hello World (ASM)' },
//{ id: 'hello.dasm', name: 'Hello World (ASM)' },
];
function cpuStateToLongString_F8(c) {
return "PC0 = " + (0, util_1.hex)(c.PC0, 4) + " PC1 = " + (0, util_1.hex)(c.PC1, 4) + "\n"
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"channelf.js","sourceRoot":"","sources":["../../../src/platform/channelf.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"channelf.js","sourceRoot":"","sources":["../../../src/platform/channelf.ts"],"names":[],"mappings":"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"}
+1 -1
View File
@@ -20,7 +20,7 @@ class GalaxianPlatform extends baseplatform_1.BaseZ80MachinePlatform {
};
}
newMachine() { return new galaxian_1.GalaxianMachine(); }
getPresets() { return GALAXIAN_PRESETS; }
getPresets() { return []; }
readAddress(a) { return this.machine.readConst(a); }
readVRAMAddress(a) { return (a < 0x800) ? this.machine.vram[a] : this.machine.oram[a - 0x800]; }
showHelp() { return "https://8bitworkshop.com/docs/platforms/arcade/index.html#galaxian-scramble"; }
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"galaxian.js","sourceRoot":"","sources":["../../../src/platform/galaxian.ts"],"names":[],"mappings":";;AAEA,uCAA0C;AAC1C,kDAA+E;AAC/E,yDAAgE;AAEhE,MAAM,gBAAgB,GAAG;IACvB,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,eAAe,EAAE;IAC1C,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,eAAe,EAAE;CAC1C,CAAC;AAEF,MAAM,gBAAiB,SAAQ,qCAAuC;IAAtE;;QAME,oDAAoD;QACpD,iBAAY,GAAG;YAAa,OAAO,EAAE,IAAI,EAAC;oBACxC,EAAC,IAAI,EAAC,WAAW,EAAC,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC;oBACrD,EAAC,IAAI,EAAC,YAAY,EAAC,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC;oBACtD,EAAC,IAAI,EAAC,eAAe,EAAC,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,IAAI,EAAC;iBAC1D,EAAE,CAAA;QAAC,CAAC,CAAC;IAER,CAAC;IAXC,UAAU,KAAc,OAAO,IAAI,0BAAe,EAAE,CAAC,CAAC,CAAC;IACvD,UAAU,KAAc,OAAO,gBAAgB,CAAC,CAAC,CAAC;IAClD,WAAW,CAAC,CAAC,IAAW,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3D,eAAe,CAAC,CAAC,IAAO,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAOjG,QAAQ,KAAK,OAAO,6EAA6E,CAAA,CAAC,CAAC;CACpG;AAED,MAAM,wBAAyB,SAAQ,gBAAgB;IAErD,UAAU,KAAc,OAAO,IAAI,kCAAuB,EAAE,CAAC,CAAC,CAAC;CAEhE;AAED,eAAS,CAAC,UAAU,CAAC,GAAG,gBAAgB,CAAC;AACzC,eAAS,CAAC,mBAAmB,CAAC,GAAG,wBAAwB,CAAC"}
{"version":3,"file":"galaxian.js","sourceRoot":"","sources":["../../../src/platform/galaxian.ts"],"names":[],"mappings":";;AAEA,uCAA0C;AAC1C,kDAA+E;AAC/E,yDAAgE;AAEhE,MAAM,gBAAgB,GAAG;IACvB,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,eAAe,EAAE;IAC1C,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,eAAe,EAAE;CAC1C,CAAC;AAEF,MAAM,gBAAiB,SAAQ,qCAAuC;IAAtE;;QAME,oDAAoD;QACpD,iBAAY,GAAG;YAAa,OAAO,EAAE,IAAI,EAAC;oBACxC,EAAC,IAAI,EAAC,WAAW,EAAC,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC;oBACrD,EAAC,IAAI,EAAC,YAAY,EAAC,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC;oBACtD,EAAC,IAAI,EAAC,eAAe,EAAC,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,IAAI,EAAC;iBAC1D,EAAE,CAAA;QAAC,CAAC,CAAC;IAER,CAAC;IAXC,UAAU,KAAc,OAAO,IAAI,0BAAe,EAAE,CAAC,CAAC,CAAC;IACvD,UAAU,KAAc,OAAO,EAAE,CAAC,CAAC,CAAC;IACpC,WAAW,CAAC,CAAC,IAAW,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3D,eAAe,CAAC,CAAC,IAAO,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAOjG,QAAQ,KAAK,OAAO,6EAA6E,CAAA,CAAC,CAAC;CACpG;AAED,MAAM,wBAAyB,SAAQ,gBAAgB;IAErD,UAAU,KAAc,OAAO,IAAI,kCAAuB,EAAE,CAAC,CAAC,CAAC;CAEhE;AAED,eAAS,CAAC,UAAU,CAAC,GAAG,gBAAgB,CAAC;AACzC,eAAS,CAAC,mBAAmB,CAAC,GAAG,wBAAwB,CAAC"}
+10 -5
View File
@@ -5,12 +5,17 @@ const baseplatform_1 = require("../common/baseplatform");
const emu_1 = require("../common/emu");
const disasmSM83_1 = require("../common/cpu/disasmSM83");
const GB_PRESETS = [
{ id: 'hello.c', name: 'Hello World (C)' },
{ id: 'testdrawing.c', name: 'Drawing Routines (C)' },
{ id: 'testphys.c', name: 'Sprite Test (C)' },
{ id: 'hello.c', name: 'Hello World', category: 'C' },
{ id: 'testdrawing.c', name: 'Drawing Routines' },
{ id: 'testphys.c', name: 'Joypad Sprite' },
{ id: 'sprites.c', name: 'Multiple Sprites' },
{ id: 'metasprites.c', name: 'Metasprites' },
{ id: 'scroll.c', name: 'Scrolling' },
{ id: 'music.c', name: 'Music Player' },
{ id: 'siegegame.c', name: 'Siege Game' },
{ id: 'chase.c', name: "Shiru's Chase Game" },
{ id: 'pakupaku.c', name: 'Paku Paku' },
{ id: 'hello.sgb', name: 'Hello World (ASM)' },
{ id: 'hello.sgb', name: 'Hello World (ASM)', category: 'assembler' },
{ id: 'main.wiz', name: 'Snake Game (Wiz)' },
];
class GameBoyPlatform extends baseplatform_1.BaseMachinePlatform {
@@ -71,7 +76,7 @@ class GameBoyPlatform extends baseplatform_1.BaseMachinePlatform {
}
}
const GBC_PRESETS = [
{ id: 'hello_color.c', name: 'Hello Color World (C)' },
//{ id: 'hello_color.c', name: 'Hello Color World (C)' },
];
class GameBoyColorPlatform extends GameBoyPlatform {
newMachine() {
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"gb.js","sourceRoot":"","sources":["../../../src/platform/gb.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"gb.js","sourceRoot":"","sources":["../../../src/platform/gb.ts"],"names":[],"mappings":";;AAAA,sCAA+C;AAC/C,yDAAyL;AACzL,uCAA0C;AAC1C,yDAA2D;AAE3D,MAAM,UAAU,GAAa;IAC3B,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,EAAE;IACrD,EAAE,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,kBAAkB,EAAE;IACjD,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,eAAe,EAAE;IAC3C,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,kBAAkB,EAAE;IAC7C,EAAE,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,aAAa,EAAE;IAC5C,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE;IACrC,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,cAAc,EAAE;IACvC,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,YAAY,EAAE;IACzC,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,oBAAoB,EAAE;IAC7C,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE;IACvC,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,mBAAmB,EAAE,QAAQ,EAAE,WAAW,EAAE;IACrE,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,kBAAkB,EAAE;CAC7C,CAAC;AAEF,MAAM,eAAgB,SAAQ,kCAAmC;IAAjE;;QAKE,uBAAkB,GAAM,qCAAsB,CAAC;IAuDjD,CAAC;IA1DC,UAAU,KAAc,OAAO,IAAI,mBAAc,EAAE,CAAC,CAAC,CAAC;IACtD,UAAU,KAAc,OAAO,UAAU,CAAC,CAAC,CAAC;IAC5C,oBAAoB,KAAK,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAEpF,WAAW,CAAC,CAAC,IAAW,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,eAAe,CAAC,CAAC,IAAO,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEjE,WAAW;QACT,OAAO,KAAK,CAAC;IACf,CAAC;IAED,eAAe;QACb,OAAO,KAAK,CAAC;IACf,CAAC;IAED,YAAY;QACV,OAAO;YACL,IAAI,EAAE;gBACJ,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE;gBAChE,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE;gBACjE,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE;gBAC/D,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE;gBAClE,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE;gBAC9D,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE;gBACvD,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;gBAChE,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE;aAC7D;SACF,CAAC;IACJ,CAAC;IAED,kBAAkB;QAChB,IAAI,IAAA,2BAAY,EAAC,IAAI,CAAC,OAAO,CAAC;YAC5B,OAAO,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC;;YAEzC,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IACnC,CAAC;IAED,YAAY,CAAC,QAAgB,EAAE,KAAe;QAC5C,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,KAAK,CAAC,CAAC,OAAO,IAAA,wCAAyB,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACtD,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC;gBACnC,IAAI,KAAK,GAAG,EAAE,GAAG,MAAM,CAAC;gBACxB,IAAI,GAAG,GAAG,KAAK,GAAG,IAAI,CAAC;gBACvB,IAAI,EAAE,IAAI,CAAC;oBAAE,EAAE,GAAG,OAAO,CAAC;gBAC1B,OAAO,IAAA,gCAAiB,EAAgB,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;YAC1E,CAAC;YACD,OAAO,CAAC,CAAC,OAAO,IAAA,2BAAY,EAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC3F,CAAC;IACH,CAAC;IAED,WAAW,CAAC,EAAU,EAAE,IAA8B;QACpD,OAAO,IAAA,4BAAe,EAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,QAAQ;QACN,OAAO,kDAAkD,CAAC;IAC5D,CAAC;CACF;AAED,MAAM,WAAW,GAAa;AAC5B,yDAAyD;CAC1D,CAAC;AAEF,MAAM,oBAAqB,SAAQ,eAAe;IAEhD,UAAU;QACR,IAAI,CAAC,GAAG,IAAI,mBAAc,EAAE,CAAC;QAC7B,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC;QACpB,OAAO,CAAC,CAAC;IACX,CAAC;IACD,UAAU,KAAc,OAAO,WAAW,CAAC,CAAC,CAAC;IAE7C,eAAe;QACb,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,YAAY;QACV,OAAO;YACL,IAAI,EAAE;gBACJ,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE;gBAChE,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE;gBACjE,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE;gBAClE,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE;gBAClE,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE;gBAChE,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE;gBAClE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE;gBACvD,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;gBAChE,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE;aAC7D;SACF,CAAC;IACJ,CAAC;IAED,QAAQ;QACN,OAAO,kDAAkD,CAAC;IAC5D,CAAC;CACF;AAED,eAAS,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC;AAClC,eAAS,CAAC,UAAU,CAAC,GAAG,oBAAoB,CAAC"}
+1 -1
View File
@@ -4,7 +4,7 @@ const emu_1 = require("../common/emu");
const kim1_1 = require("../machine/kim1");
const baseplatform_1 = require("../common/baseplatform");
var KIM1_PRESETS = [
{ id: 'hello.dasm', name: 'Hello World (ASM)' },
//{id:'hello.dasm', name:'Hello World (ASM)'},
];
class KIM1Platform extends baseplatform_1.Base6502MachinePlatform {
constructor() {
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"kim1.js","sourceRoot":"","sources":["../../../src/platform/kim1.ts"],"names":[],"mappings":";;AAEA,uCAA0C;AAC1C,0CAAuC;AACvC,yDAAiE;AAEjE,IAAI,YAAY,GAAG;IACjB,EAAC,EAAE,EAAC,YAAY,EAAE,IAAI,EAAC,mBAAmB,EAAC;CAC5C,CAAC;AAEF,MAAM,YAAa,SAAQ,sCAA6B;IAAxD;;QAME,iBAAY,GAAG;YAAa,OAAO,EAAE,IAAI,EAAC;oBACtC,EAAC,IAAI,EAAC,KAAK,EAAW,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,KAAK,EAAC;oBAC1D,EAAC,IAAI,EAAC,MAAM,EAAU,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,IAAI,EAAC;oBACzD,EAAC,IAAI,EAAC,MAAM,EAAU,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,IAAI,EAAC;oBACzD,EAAC,IAAI,EAAC,KAAK,EAAW,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,KAAK,EAAC;oBAC1D,EAAC,IAAI,EAAC,MAAM,EAAU,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,KAAK,EAAC;iBAC7D,EAAE,CAAA;QAAC,CAAC,CAAC;IACR,CAAC;IAXC,UAAU,KAAc,OAAO,IAAI,WAAI,EAAE,CAAC,CAAC,CAAC;IAC5C,UAAU,KAAc,OAAO,YAAY,CAAC,CAAC,CAAC;IAC9C,WAAW,CAAC,CAAC,IAAW,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAS5D;AAED,GAAG;AAEH,eAAS,CAAC,MAAM,CAAC,GAAG,YAAY,CAAC"}
{"version":3,"file":"kim1.js","sourceRoot":"","sources":["../../../src/platform/kim1.ts"],"names":[],"mappings":";;AAEA,uCAA0C;AAC1C,0CAAuC;AACvC,yDAAiE;AAEjE,IAAI,YAAY,GAAG;AACjB,8CAA8C;CAC/C,CAAC;AAEF,MAAM,YAAa,SAAQ,sCAA6B;IAAxD;;QAME,iBAAY,GAAG;YAAa,OAAO,EAAE,IAAI,EAAC;oBACtC,EAAC,IAAI,EAAC,KAAK,EAAW,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,KAAK,EAAC;oBAC1D,EAAC,IAAI,EAAC,MAAM,EAAU,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,IAAI,EAAC;oBACzD,EAAC,IAAI,EAAC,MAAM,EAAU,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,IAAI,EAAC;oBACzD,EAAC,IAAI,EAAC,KAAK,EAAW,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,KAAK,EAAC;oBAC1D,EAAC,IAAI,EAAC,MAAM,EAAU,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,KAAK,EAAC;iBAC7D,EAAE,CAAA;QAAC,CAAC,CAAC;IACR,CAAC;IAXC,UAAU,KAAc,OAAO,IAAI,WAAI,EAAE,CAAC,CAAC,CAAC;IAC5C,UAAU,KAAc,OAAO,YAAY,CAAC,CAAC,CAAC;IAC9C,WAAW,CAAC,CAAC,IAAW,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAS5D;AAED,GAAG;AAEH,eAAS,CAAC,MAAM,CAAC,GAAG,YAAY,CAAC"}
-1
View File
@@ -567,6 +567,5 @@ class NESMAMEPlatform extends mameplatform_1.BaseMAME6502Platform {
}
///
emu_1.PLATFORMS['nes'] = JSNESPlatform;
emu_1.PLATFORMS['nes-asm'] = JSNESPlatform;
emu_1.PLATFORMS['nes.mame'] = NESMAMEPlatform;
//# sourceMappingURL=nes.js.map
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"nes.js","sourceRoot":"","sources":["../../../src/platform/nes.ts"],"names":[],"mappings":"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 truncated
{"version":3,"file":"nes.js","sourceRoot":"","sources":["../../../src/platform/nes.ts"],"names":[],"mappings":"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 truncated
-1
View File
@@ -792,5 +792,4 @@ var VerilogVGAPlatform = function (mainElement, options) {
////////////////
emu_1.PLATFORMS['verilog'] = VerilogPlatform;
emu_1.PLATFORMS['verilog-vga'] = VerilogVGAPlatform;
emu_1.PLATFORMS['verilog-test'] = VerilogPlatform;
//# sourceMappingURL=verilog.js.map
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"verilog.js","sourceRoot":"","sources":["../../../src/platform/verilog.ts"],"names":[],"mappings":"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 truncated
{"version":3,"file":"verilog.js","sourceRoot":"","sources":["../../../src/platform/verilog.ts"],"names":[],"mappings":";;AACA,yDAAgE;AAChE,uCAAwI;AACxI,2CAA8C;AAC9C,8CAA+E;AAC/E,qDAA+F;AAC/F,yDAAuD;AACvD,mDAAsD;AACtD,kCAAmC;AAOnC,IAAI,eAAe,GAAG;IACpB,EAAC,EAAE,EAAC,iBAAiB,EAAE,IAAI,EAAC,eAAe,EAAC;IAC5C,EAAC,EAAE,EAAC,kBAAkB,EAAE,IAAI,EAAC,gBAAgB,EAAC;IAC9C,EAAC,EAAE,EAAC,oBAAoB,EAAE,IAAI,EAAC,sBAAsB,EAAC;IACtD,EAAC,EAAE,EAAC,eAAe,EAAE,IAAI,EAAC,cAAc,EAAC;IACzC,EAAC,EAAE,EAAC,YAAY,EAAE,IAAI,EAAC,mBAAmB,EAAC;IAC3C,EAAC,EAAE,EAAC,YAAY,EAAE,IAAI,EAAC,kBAAkB,EAAC;IAC1C,EAAC,EAAE,EAAC,cAAc,EAAE,IAAI,EAAC,YAAY,EAAC;IACtC,EAAC,EAAE,EAAC,iBAAiB,EAAE,IAAI,EAAC,iCAAiC,EAAC;IAC9D,EAAC,EAAE,EAAC,qBAAqB,EAAE,IAAI,EAAC,gCAAgC,EAAC;IACjE,EAAC,EAAE,EAAC,eAAe,EAAE,IAAI,EAAC,kBAAkB,EAAC;IAC7C,EAAC,EAAE,EAAC,eAAe,EAAE,IAAI,EAAC,kBAAkB,EAAC;IAC7C,EAAC,EAAE,EAAC,YAAY,EAAE,IAAI,EAAC,eAAe,EAAC;IACvC,EAAC,EAAE,EAAC,WAAW,EAAE,IAAI,EAAC,eAAe,EAAC;IACtC,EAAC,EAAE,EAAC,iBAAiB,EAAE,IAAI,EAAC,gBAAgB,EAAC;IAC7C,EAAC,EAAE,EAAC,mBAAmB,EAAE,IAAI,EAAC,kBAAkB,EAAC;IACjD,EAAC,EAAE,EAAC,eAAe,EAAE,IAAI,EAAC,aAAa,EAAC;IACxC,EAAC,EAAE,EAAC,mBAAmB,EAAE,IAAI,EAAC,iBAAiB,EAAC;IAChD,EAAC,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,WAAW,EAAC;IAC/B,EAAC,EAAE,EAAC,mBAAmB,EAAE,IAAI,EAAC,iBAAiB,EAAC;IAChD,EAAC,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,gCAAgC,EAAC;IACpD,EAAC,EAAE,EAAC,aAAa,EAAE,IAAI,EAAC,qBAAqB,EAAC;IAE9C,EAAC,EAAE,EAAC,OAAO,EAAE,IAAI,EAAC,KAAK,EAAE,QAAQ,EAAC,KAAK,EAAC;IACxC,EAAC,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,kBAAkB,EAAC;IACtC,EAAC,EAAE,EAAC,mBAAmB,EAAE,IAAI,EAAC,sBAAsB,EAAC;IACrD,EAAC,EAAE,EAAC,eAAe,EAAE,IAAI,EAAC,cAAc,EAAC;IACzC,EAAC,EAAE,EAAC,iBAAiB,EAAE,IAAI,EAAC,eAAe,EAAC;IAC5C,EAAC,EAAE,EAAC,4BAA4B,EAAE,IAAI,EAAC,0BAA0B,EAAC;IAClE,EAAC,EAAE,EAAC,SAAS,EAAE,IAAI,EAAC,YAAY,EAAC;IACjC,EAAC,EAAE,EAAC,gBAAgB,EAAE,IAAI,EAAC,cAAc,EAAC;IAC1C,EAAC,EAAE,EAAC,WAAW,EAAE,IAAI,EAAC,iBAAiB,EAAC;IAExC,EAAC,EAAE,EAAC,WAAW,EAAE,IAAI,EAAC,UAAU,EAAE,QAAQ,EAAC,OAAO,EAAC;IACnD,EAAC,EAAE,EAAC,aAAa,EAAE,IAAI,EAAC,YAAY,EAAC;IACrC,EAAC,EAAE,EAAC,qBAAqB,EAAE,IAAI,EAAC,qBAAqB,EAAC;IAEtD,EAAC,EAAE,EAAC,kBAAkB,EAAE,IAAI,EAAC,cAAc,EAAE,QAAQ,EAAC,QAAQ,EAAC;IAC/D,EAAC,EAAE,EAAC,gBAAgB,EAAE,IAAI,EAAC,eAAe,EAAC;IAC3C,EAAC,EAAE,EAAC,iBAAiB,EAAE,IAAI,EAAC,kBAAkB,EAAC;IAC/C,kDAAkD;CACnD,CAAC;AAEF,IAAI,mBAAmB,GAAG,IAAA,oBAAc,EAAC;IACvC,CAAC,UAAI,CAAC,IAAI,EAAG,CAAC,EAAE,GAAG,CAAC;IACpB,CAAC,UAAI,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC;IACpB,CAAC,UAAI,CAAC,EAAE,EAAK,CAAC,EAAE,GAAG,CAAC;IACpB,CAAC,UAAI,CAAC,IAAI,EAAG,CAAC,EAAE,GAAG,CAAC;IACpB,CAAC,UAAI,CAAC,CAAC,EAAM,CAAC,EAAE,IAAI,CAAC;IACrB,CAAC,UAAI,CAAC,CAAC,EAAM,CAAC,EAAE,IAAI,CAAC;IACrB,CAAC,UAAI,CAAC,OAAO,EAAG,CAAC,EAAE,GAAG,CAAC;IACvB,CAAC,UAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,GAAG,CAAC;IACvB,CAAC,UAAI,CAAC,KAAK,EAAK,CAAC,EAAE,GAAG,CAAC;IACvB,CAAC,UAAI,CAAC,OAAO,EAAG,CAAC,EAAE,GAAG,CAAC;IACvB,CAAC,UAAI,CAAC,IAAI,EAAM,CAAC,EAAE,IAAI,CAAC;IACxB,CAAC,UAAI,CAAC,IAAI,EAAM,CAAC,EAAE,IAAI,CAAC;IACxB,CAAC,UAAI,CAAC,KAAK,EAAM,CAAC,EAAE,GAAG,CAAC;IACxB,CAAC,UAAI,CAAC,QAAQ,EAAG,CAAC,EAAE,GAAG,CAAC;IACxB,CAAC,UAAI,CAAC,MAAM,EAAK,CAAC,EAAE,GAAG,CAAC;IACxB,CAAC,UAAI,CAAC,SAAS,EAAE,CAAC,EAAE,GAAG,CAAC;IACxB,CAAC,UAAI,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC;CACrB,CAAC,CAAC;AAEH,MAAM,mBAAmB,GAAG,OAAO,CAAC;AACpC,MAAM,eAAe,GAAG,EAAE,CAAC;AAC3B,MAAM,qBAAqB,GAAG,KAAK,CAAC,CAAC,iCAAiC;AAEtE,WAAW;AAEX,IAAI,eAAe,GAAG,UAAS,WAAW,EAAE,OAAO;IACjD,IAAI,CAAC,SAAS,GAAG,IAAK,2BAAoB,EAAE,CAAC;IAE7C,IAAI,KAAmB,CAAC;IACxB,IAAI,KAAK,CAAC;IACV,IAAI,MAAM,CAAC;IACX,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,IAAI,UAAU,GAAI,GAAG,CAAC;IACtB,IAAI,WAAW,GAAG,GAAG,CAAC;IACtB,IAAI,aAAa,GAAG,GAAG,GAAC,EAAE,CAAC,CAAC,gBAAgB;IAC5C,IAAI,KAAmB,CAAC;IACxB,IAAI,KAAsB,CAAC;IAC3B,IAAI,aAAa,CAAC;IAClB,IAAI,GAAqB,CAAC;IAC1B,IAAI,cAAc,GAAG,CAAC,GAAG,GAAC,EAAE,GAAC,CAAC,GAAC,EAAE,CAAC,GAAC,GAAG,CAAC,CAAC,gBAAgB;IAExD,iBAAiB;IACjB,IAAI,QAAQ,GAAG,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC;IACvB,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,oBAAoB;IACpB,IAAI,WAAW,EAAE,WAAW,CAAC;IAC7B,IAAI,YAAY,GAAG,IAAI,WAAW,CAAC,UAAU,GAAG,WAAW,CAAC,CAAC;IAE7D,YAAY;IACZ,IAAI,WAAW,CAAC;IAChB,kBAAkB;IAClB,IAAI,aAAa,CAAC;IAClB,IAAI,YAAY,CAAC;IACjB,IAAI,WAAW,CAAC;IAEhB,kBAAkB;IAClB,IAAI,MAAM,GAAC,CAAC,CAAC;IACb,IAAI,MAAM,GAAC,CAAC,CAAC;IACb,IAAI,QAAQ,GAAC,CAAC,CAAC;IACf,IAAI,UAAU,GAAC,KAAK,CAAC;IACrB,IAAI,UAAU,GAAC,KAAK,CAAC;IACrB,IAAI,cAAc,GAAG,CAAC,CAAC;IAEvB,IAAI,SAAS,GAAG;QACd,UAAU;QACV,UAAU;QACV,UAAU;QACV,UAAU;QACV,UAAU;QACV,UAAU;QACV,UAAU;QACV,UAAU;QACV,UAAU;QACV,UAAU;QACV,UAAU;QACV,UAAU;QACV,UAAU;QACV,UAAU;QACV,UAAU;QACV,UAAU;KACX,CAAC;IAEF,IAAI,SAAS,CAAC;IACd,IAAI,SAAS,GAAG,CAAC,CAAC;IAElB,SAAS,OAAO;QACd,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACb,IAAI,QAAQ,EAAE,CAAC;YACb,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACtC,CAAC;QACD,cAAc,EAAE,CAAC;QACjB,IAAI,SAAS,IAAI,SAAS,EAAE,EAAE,CAAC;YAC7B,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC;IACH,CAAC;IAED,wEAAwE;IACxE,8EAA8E;IAC9E,qEAAqE;IACrE,SAAS,YAAY,CAAC,IAAY;QAChC,IAAI,SAAS,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC;QACnD,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI;YLine truncated
+26 -3
View File
@@ -81,6 +81,14 @@ const cliformat_1 = require("./cliformat");
const PRESETS_DIR = 'presets';
const PLATFORM_SRC_DIR = 'src/platform';
const DEFAULT_TIMEOUT = 120000;
// skip these platforms, they aren't ready yet or otherwise broken
const SKIP_PLATFORMS = [
'atari8-800xl.mame',
'vector-ataribw',
'williams-defender',
'astrocade-arcade',
'mcr',
];
// Load every platform module so it registers itself in PLATFORMS. A couple of
// them touch the DOM at import time and can't run here; they're reported
// rather than hidden.
@@ -175,7 +183,7 @@ function listSkeletons(dir, platform, skelTools) {
// (.mame, .wasm, -defender) repeat their parent's list, so the same file can
// be named several times; it is built once, under the first platform that
// claims it.
async function listPresets(filter, platform, warn = () => { }) {
async function listPresets(filter, platform, warn = () => { }, err = () => { }) {
await importAllPlatforms(warn);
const found = [];
const seen = new Set();
@@ -193,11 +201,16 @@ async function listPresets(filter, platform, warn = () => { }) {
found.push(e);
};
for (const id of Object.keys(emu_1.PLATFORMS).sort()) {
if (SKIP_PLATFORMS.includes(id))
continue;
let presets;
let plat;
try {
plat = new emu_1.PLATFORMS[id](null);
presets = plat.getPresets ? plat.getPresets() : [];
if (presets.length === 0) {
warn(`platform ${id}: no presets listed in getPresets()`);
}
}
catch (e) {
warn(`platform ${id}: ${e}`);
@@ -213,6 +226,7 @@ async function listPresets(filter, platform, warn = () => { }) {
if (!seen.has(relpath) && !fs.existsSync(path.join(PRESETS_DIR, relpath))) {
missing[id] = (missing[id] || 0) + 1;
seen.add(relpath);
warn(`platform ${id}: ${relpath} not found`);
continue;
}
const tool = toolForPreset(relpath, id, plat);
@@ -224,7 +238,7 @@ async function listPresets(filter, platform, warn = () => { }) {
keep(skel);
}
for (const id of Object.keys(missing).sort()) {
warn(`platform ${id}: ${missing[id]} preset(s) not in presets/${(0, util_1.getBasePlatform)(id)}/`);
err(`platform ${id}: ${missing[id]} preset(s) not in presets/${(0, util_1.getBasePlatform)(id)}/`);
}
found.sort((a, b) => a.preset < b.preset ? -1 : a.preset > b.preset ? 1 : 0);
return found;
@@ -473,9 +487,15 @@ async function main() {
const verbose = argv.includes('--verbose');
const timeout = arg(argv, 'timeout') ? parseInt(arg(argv, 'timeout')) : undefined;
const warnings = [];
const presets = await listPresets(filter, platform, (w) => warnings.push(w));
const errors = [];
const presets = await listPresets(filter, platform, (w) => warnings.push(w), (e) => errors.push(e));
for (const w of warnings)
console.log(dim(`note: ${w}`));
for (const e of errors)
console.log(red(`error: ${e}`));
if (errors.length) {
console.error(red(`aborting: ${errors.length} platform(s) list preset files that don't exist`));
}
console.log(bold(`building ${presets.length} presets...`));
const results = await buildAllPresets({
presets, timeout, verbose, onResult: (r) => {
@@ -518,6 +538,9 @@ async function main() {
if (baseline) {
process.exit(compareToBaseline(results, baseline) ? 1 : 0);
}
if (errors.length) {
process.exit(1);
}
}
if (require.main === module) {
main().catch((e) => { console.error(e); process.exit(2); });
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"buildpresets.js","sourceRoot":"","sources":["../../../src/tools/buildpresets.ts"],"names":[],"mappings":"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 truncated
{"version":3,"file":"buildpresets.js","sourceRoot":"","sources":["../../../src/tools/buildpresets.ts"],"names":[],"mappings":"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 truncated
+26 -3
View File
@@ -81,6 +81,14 @@ const cliformat_1 = require("./cliformat");
const PRESETS_DIR = 'presets';
const PLATFORM_SRC_DIR = 'src/platform';
const DEFAULT_TIMEOUT = 120000;
// skip these platforms, they aren't ready yet or otherwise broken
const SKIP_PLATFORMS = [
'atari8-800xl.mame',
'vector-ataribw',
'williams-defender',
'astrocade-arcade',
'mcr',
];
// Load every platform module so it registers itself in PLATFORMS. A couple of
// them touch the DOM at import time and can't run here; they're reported
// rather than hidden.
@@ -175,7 +183,7 @@ function listSkeletons(dir, platform, skelTools) {
// (.mame, .wasm, -defender) repeat their parent's list, so the same file can
// be named several times; it is built once, under the first platform that
// claims it.
async function listPresets(filter, platform, warn = () => { }) {
async function listPresets(filter, platform, warn = () => { }, err = () => { }) {
await importAllPlatforms(warn);
const found = [];
const seen = new Set();
@@ -193,11 +201,16 @@ async function listPresets(filter, platform, warn = () => { }) {
found.push(e);
};
for (const id of Object.keys(emu_1.PLATFORMS).sort()) {
if (SKIP_PLATFORMS.includes(id))
continue;
let presets;
let plat;
try {
plat = new emu_1.PLATFORMS[id](null);
presets = plat.getPresets ? plat.getPresets() : [];
if (presets.length === 0) {
warn(`platform ${id}: no presets listed in getPresets()`);
}
}
catch (e) {
warn(`platform ${id}: ${e}`);
@@ -213,6 +226,7 @@ async function listPresets(filter, platform, warn = () => { }) {
if (!seen.has(relpath) && !fs.existsSync(path.join(PRESETS_DIR, relpath))) {
missing[id] = (missing[id] || 0) + 1;
seen.add(relpath);
warn(`platform ${id}: ${relpath} not found`);
continue;
}
const tool = toolForPreset(relpath, id, plat);
@@ -224,7 +238,7 @@ async function listPresets(filter, platform, warn = () => { }) {
keep(skel);
}
for (const id of Object.keys(missing).sort()) {
warn(`platform ${id}: ${missing[id]} preset(s) not in presets/${(0, util_1.getBasePlatform)(id)}/`);
err(`platform ${id}: ${missing[id]} preset(s) not in presets/${(0, util_1.getBasePlatform)(id)}/`);
}
found.sort((a, b) => a.preset < b.preset ? -1 : a.preset > b.preset ? 1 : 0);
return found;
@@ -473,9 +487,15 @@ async function main() {
const verbose = argv.includes('--verbose');
const timeout = arg(argv, 'timeout') ? parseInt(arg(argv, 'timeout')) : undefined;
const warnings = [];
const presets = await listPresets(filter, platform, (w) => warnings.push(w));
const errors = [];
const presets = await listPresets(filter, platform, (w) => warnings.push(w), (e) => errors.push(e));
for (const w of warnings)
console.log(dim(`note: ${w}`));
for (const e of errors)
console.log(red(`error: ${e}`));
if (errors.length) {
console.error(red(`aborting: ${errors.length} platform(s) list preset files that don't exist`));
}
console.log(bold(`building ${presets.length} presets...`));
const results = await buildAllPresets({
presets, timeout, verbose, onResult: (r) => {
@@ -518,6 +538,9 @@ async function main() {
if (baseline) {
process.exit(compareToBaseline(results, baseline) ? 1 : 0);
}
if (errors.length) {
process.exit(1);
}
}
if (require.main === module) {
main().catch((e) => { console.error(e); process.exit(2); });
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"buildpresets.js","sourceRoot":"","sources":["../../src/tools/buildpresets.ts"],"names":[],"mappings":"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 truncated
{"version":3,"file":"buildpresets.js","sourceRoot":"","sources":["../../src/tools/buildpresets.ts"],"names":[],"mappings":"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 truncated
+1 -1
View File
@@ -1,2 +1,2 @@
import{A,B,C,D,E,F,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-XP2G5PMM.js";import"./chunk-UG4IOEUD.js";import"./chunk-LNOKARBD.js";import"./chunk-A7SWO6EA.js";import"./chunk-XQHODGIL.js";import"./chunk-4676AC7I.js";import"./chunk-TYDI7JZQ.js";import"./chunk-KT7KMEQC.js";export{s as armBreakpoints,u as clearBreakpoint,f as current_project,E as emulationHalted,o as getCurrentEditorFilename,n as getCurrentMainFilename,k as getCurrentOutput,j as getCurrentProject,z as getPlatformAndRepo,i as getPlatformStore,D as getSaveState,C as getTestOutput,l as getWorkerParams,x as gotoNewLocation,w as haltEmulation,h as lastDebugState,m as openHeaderFile,q as openLocationForPC,p as parseGoToTarget,e as platform,b as platform_id,g as projectWindows,a as qs,F as reloadWorkspaceFile,d as repo_id,t as runToPC,v as setFrameRateUI,B as setTestInput,r as setupBreakpoint,y as setupSplits,A as startUI,c as store_id};
import{A,B,C,D,E,F,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-S75754OX.js";import"./chunk-UG4IOEUD.js";import"./chunk-LNOKARBD.js";import"./chunk-A7SWO6EA.js";import"./chunk-GO3ZR2EJ.js";import"./chunk-4676AC7I.js";import"./chunk-TYDI7JZQ.js";import"./chunk-KT7KMEQC.js";export{s as armBreakpoints,u as clearBreakpoint,f as current_project,E as emulationHalted,o as getCurrentEditorFilename,n as getCurrentMainFilename,k as getCurrentOutput,j as getCurrentProject,z as getPlatformAndRepo,i as getPlatformStore,D as getSaveState,C as getTestOutput,l as getWorkerParams,x as gotoNewLocation,w as haltEmulation,h as lastDebugState,m as openHeaderFile,q as openLocationForPC,p as parseGoToTarget,e as platform,b as platform_id,g as projectWindows,a as qs,F as reloadWorkspaceFile,d as repo_id,t as runToPC,v as setFrameRateUI,B as setTestInput,r as setupBreakpoint,y as setupSplits,A as startUI,c as store_id};
//# sourceMappingURL=ui.js.map
@@ -1,18 +1,18 @@
import{i as nm0,j as tm0,k as cm0,l as um0,m as ca3}from"./chunk-UG4IOEUD.js";import"./chunk-LNOKARBD.js";import{j as fm0,v as jP}from"./chunk-4676AC7I.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
import{i as fm0,j as nm0,k as tm0,l as cm0,m as ca3}from"./chunk-UG4IOEUD.js";import"./chunk-LNOKARBD.js";import{j as im0,v as jP}from"./chunk-4676AC7I.js";import{K as HP,P as qy0,T as $y0,U as em0,W as E7,Y as rm0,Z as km0,n as Py0,r as zP}from"./chunk-TYDI7JZQ.js";import{c as LF,d as na3,e as ta3}from"./chunk-KT7KMEQC.js";var sm0=na3((rR,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 hq))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?oq(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 oq(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 nR(){}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=[])}},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
`));if(!H)return null;p.input=IR(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=kq(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 AR[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}}},sR=null,$P={},KB=[],Bm0=1,OB=null,GZ={},hk=null,AR={};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=uR(p.split("/").filter(function(U){return!!U}),!1);var S=sR;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()+(wR(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()+(wR(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=IR(f0,!1),O4.length>H?0:(wt.set(O4,p),O4.length-1)}function Aq(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(Aq.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}}}),tq(),OB=Array(4096),fq(K4,"/"),Zl("/tmp"),Zl("/home"),Zl("/home/web_user"),(function(){Zl("/dev"),oR(259,{read:function(){return 0},write:function(H,f0,W,S){return S}}),pZ("/dev/null",259),qP(1280,vm0),qP(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"),fq({pu:function(){var H=kq(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 IR(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 oq(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(UP(p)){if(p=p.slice(LP.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 lq={S:function(p){gq(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),KP(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(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(`;
`},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,BR(H.prototype,p),H}function BR(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)},BR(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(eR(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(KF(q))return q.bigvalue.toString();if(PF(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(OF(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)}},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
;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(qF(q))return`for (${this.expr2js(q.precond)}; ${this.expr2js(q.loopcond)}; ${this.expr2js(q.inc)}) { ${this.expr2js(q.body)} }`;if($F(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=Py0(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 zP(!0,{},this.state)}getGlobals(){return this.saveState()}loadState(q){zP(!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(sm0());var sa3=["_ctor_var_reset","_eval_initial","_eval_settle","_eval","_change_request"],Fg=0,Am0="$$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 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 la3(y){return Pt(iR(y))}function iR(y){if(Ma(y)){for(var q=y.dtype;aA(q);)q=q.subtype;return q}else{if(Ng(y)&&y.op=="arraysel")return iR(y.left);if(Ng(y)&&y.op=="wordsel")return iR(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 kR(y){return y<=4?bk.i32:y<=8?bk.i64:bk.none}var fR=class{constructor(){this.len=0;this.vars={};this.locals=[];this.params=[]}addVar(q){var P0=Pt(q.dtype),q0=this.addEntry(q.name,P0,kR(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=kR(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)||KF(q))return this.const2wasm(q,P0);if($F(q))return this.funccall2wasm(q,P0);if(OF(q)||Ng(q)||PF(q)||qF(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,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-KG6V5Z5H.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 im0(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 em0(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 am0(y,q),this.getPresets=function(){return Ba3},this.setVideoParams(736,520,25e6)};HP.verilog=am0;HP["verilog-vga"]=ya3;
//# sourceMappingURL=verilog-DAN6FCSK.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": "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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
"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
}
+1 -1
View File
@@ -67,7 +67,7 @@
#ifndef _METASPRITES_H_INCLUDE
#define _METASPRITES_H_INCLUDE
#include <gb/hardware.h>
//#include <gb/hardware.h>
#include "types.h"
#include <stdint.h>
+136
View File
@@ -0,0 +1,136 @@
/*
* gbtext.h - 8x8 text font + helpers for Game Boy presets.
*
* Glyphs are the NES "chr_generic" font (ASCII tiles 0x20-0x7a).
* That font stores two bitplanes: plane 0 is a drop shadow and
* plane 1 is the glyph. Game Boy 2bpp tiles use the same
* color-index layout (index = plane0 | plane1<<1), so the bytes
* are copied verbatim, just interleaved per scanline.
*
* Tile indices equal ASCII codes, so a C string can be written
* straight to the tile map with put_str().
*/
#ifndef GBTEXT_H
#define GBTEXT_H
#include <stdint.h>
#include <string.h>
#include "gb/types.h"
#include "gb/hardware.h"
#include "gb/gb.h"
#define FONT_TILE_BASE 0x20U
#define FONT_NUM_TILES 91U
const uint8_t font_tiles[FONT_NUM_TILES*16] = {
/*;;{w:8,h:8,bpp:1,count:91,brev:1,np:2,pofs:1,sl:2};;*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x3c,0x38,0x3c,0x38,0x3c,0x30,0x38,0x30,0x38,0x30,0x38,0x00,0x38,0x30,0x38,0x00,
0x3c,0x28,0x3c,0x28,0x3c,0x28,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x3c,0x28,0x7e,0x7c,0x7e,0x28,0x7e,0x7c,0x7e,0x28,0x3c,0x00,0x00,0x00,
0x0c,0x08,0x3f,0x3e,0x3f,0x28,0x3e,0x3c,0x3e,0x14,0x7e,0x7c,0x7e,0x10,0x18,0x00,
0x00,0x00,0x76,0x64,0x7e,0x48,0x7c,0x10,0x3e,0x24,0x7e,0x4c,0x6e,0x00,0x00,0x00,
0x00,0x00,0x38,0x30,0x7c,0x48,0x7c,0x30,0x7e,0x5c,0x7e,0x48,0x7e,0x34,0x3e,0x00,
0x30,0x20,0x30,0x20,0x70,0x40,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x0e,0x0c,0x1e,0x18,0x3c,0x30,0x38,0x30,0x38,0x30,0x3c,0x18,0x1e,0x0c,0x0e,0x00,
0x70,0x60,0x78,0x30,0x3c,0x18,0x1c,0x18,0x1c,0x18,0x3c,0x30,0x78,0x60,0x70,0x00,
0x00,0x00,0x00,0x00,0x3e,0x3c,0x3e,0x18,0x3e,0x3c,0x3e,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x18,0x10,0x18,0x10,0x7e,0x7c,0x7e,0x10,0x18,0x10,0x18,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x30,0x38,0x30,0x78,0x60,0x70,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x3c,0x3e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x30,0x38,0x30,0x38,0x00,
0x06,0x04,0x0e,0x0c,0x0e,0x08,0x1c,0x18,0x1c,0x10,0x38,0x30,0x38,0x20,0x30,0x00,
0x3c,0x38,0x7e,0x6c,0x7e,0x6c,0x7e,0x6c,0x7e,0x6c,0x7e,0x6c,0x7e,0x38,0x3c,0x00,
0x1c,0x18,0x3c,0x38,0x3c,0x18,0x1c,0x18,0x1c,0x18,0x1c,0x18,0x1c,0x18,0x1c,0x00,
0x3c,0x38,0x7e,0x6c,0x7e,0x0c,0x3e,0x38,0x7c,0x60,0x7e,0x6c,0x7e,0x7c,0x7e,0x00,
0x3c,0x38,0x7e,0x6c,0x7e,0x0c,0x3e,0x38,0x3e,0x0c,0x7e,0x6c,0x7e,0x38,0x3c,0x00,
0x7e,0x6c,0x7e,0x6c,0x7e,0x6c,0x7e,0x7c,0x7e,0x0c,0x0e,0x0c,0x0e,0x0c,0x0e,0x00,
0x7e,0x7c,0x7e,0x6c,0x7e,0x60,0x7c,0x78,0x7e,0x0c,0x7e,0x6c,0x7e,0x38,0x3c,0x00,
0x3c,0x38,0x7e,0x6c,0x7e,0x60,0x7c,0x78,0x7e,0x6c,0x7e,0x6c,0x7e,0x38,0x3c,0x00,
0x7e,0x7c,0x7e,0x6c,0x7e,0x6c,0x7e,0x0c,0x0e,0x0c,0x0e,0x0c,0x0e,0x0c,0x0e,0x00,
0x3c,0x38,0x7e,0x6c,0x7e,0x6c,0x7e,0x38,0x7e,0x6c,0x7e,0x6c,0x7e,0x38,0x3c,0x00,
0x3c,0x38,0x7e,0x6c,0x7e,0x6c,0x7e,0x3c,0x3e,0x0c,0x7e,0x6c,0x7e,0x38,0x3c,0x00,
0x00,0x00,0x38,0x30,0x38,0x30,0x38,0x00,0x38,0x30,0x38,0x30,0x38,0x00,0x00,0x00,
0x00,0x00,0x38,0x30,0x38,0x30,0x38,0x00,0x38,0x30,0x38,0x30,0x78,0x60,0x70,0x00,
0x0e,0x0c,0x1e,0x18,0x3c,0x30,0x78,0x60,0x78,0x30,0x3c,0x18,0x1e,0x0c,0x0e,0x00,
0x00,0x00,0x00,0x00,0x3e,0x3c,0x3e,0x00,0x3e,0x3c,0x3e,0x00,0x00,0x00,0x00,0x00,
0x70,0x60,0x78,0x30,0x3c,0x18,0x1e,0x0c,0x1e,0x18,0x3c,0x30,0x78,0x60,0x70,0x00,
0x3c,0x38,0x7e,0x6c,0x7e,0x0c,0x1e,0x18,0x3c,0x30,0x38,0x00,0x38,0x30,0x38,0x00,
0x3c,0x38,0x7e,0x44,0x7e,0x5c,0x7e,0x54,0x7e,0x5c,0x7e,0x40,0x7e,0x3c,0x3e,0x00,
0x3e,0x3c,0x7f,0x66,0x77,0x66,0x7f,0x7e,0x7f,0x66,0x77,0x66,0x77,0x66,0x77,0x00,
0x7e,0x7c,0x7f,0x66,0x77,0x66,0x7f,0x7c,0x7f,0x66,0x77,0x66,0x7f,0x7c,0x7e,0x00,
0x3e,0x3c,0x7f,0x66,0x77,0x60,0x70,0x60,0x70,0x60,0x77,0x66,0x7f,0x3c,0x3e,0x00,
0x7c,0x78,0x7e,0x6c,0x7f,0x66,0x77,0x66,0x77,0x66,0x7f,0x6c,0x7e,0x78,0x7c,0x00,
0x7f,0x7e,0x7f,0x60,0x70,0x60,0x7f,0x7e,0x7f,0x60,0x70,0x60,0x7f,0x7e,0x7f,0x00,
0x7f,0x7e,0x7f,0x60,0x70,0x60,0x7c,0x78,0x7c,0x60,0x70,0x60,0x70,0x60,0x70,0x00,
0x3e,0x3c,0x7f,0x66,0x77,0x60,0x7f,0x6e,0x7f,0x66,0x77,0x66,0x7f,0x3c,0x3e,0x00,
0x77,0x66,0x77,0x66,0x77,0x66,0x7f,0x7e,0x7f,0x66,0x77,0x66,0x77,0x66,0x77,0x00,
0x7f,0x7e,0x7f,0x18,0x1c,0x18,0x1c,0x18,0x1c,0x18,0x1c,0x18,0x7f,0x7e,0x7f,0x00,
0x07,0x06,0x07,0x06,0x07,0x06,0x07,0x06,0x77,0x66,0x77,0x66,0x7f,0x3c,0x3e,0x00,
0x77,0x66,0x7f,0x6c,0x7e,0x78,0x7c,0x70,0x7c,0x78,0x7e,0x6c,0x7f,0x66,0x77,0x00,
0x70,0x60,0x70,0x60,0x70,0x60,0x70,0x60,0x70,0x60,0x70,0x60,0x7f,0x7e,0x7f,0x00,
0xfe,0xec,0xff,0xfe,0xff,0xd6,0xff,0xd6,0xff,0xc6,0xe7,0xc6,0xe7,0xc6,0xe7,0x00,
0x77,0x66,0x7f,0x76,0x7f,0x7e,0x7f,0x7e,0x7f,0x6e,0x7f,0x66,0x77,0x66,0x77,0x00,
0x3e,0x3c,0x7f,0x66,0x77,0x66,0x77,0x66,0x77,0x66,0x77,0x66,0x7f,0x3c,0x3e,0x00,
0x7e,0x7c,0x7f,0x66,0x77,0x66,0x7f,0x7c,0x7e,0x60,0x70,0x60,0x70,0x60,0x70,0x00,
0x3e,0x3c,0x7f,0x66,0x77,0x66,0x77,0x66,0x77,0x66,0x7f,0x6c,0x7f,0x3e,0x3f,0x00,
0x7e,0x7c,0x7f,0x66,0x77,0x66,0x7f,0x7c,0x7e,0x78,0x7e,0x6c,0x7f,0x66,0x77,0x00,
0x3e,0x3c,0x7f,0x66,0x77,0x60,0x7e,0x3c,0x3f,0x06,0x77,0x66,0x7f,0x3c,0x3e,0x00,
0x7f,0x7e,0x7f,0x18,0x1c,0x18,0x1c,0x18,0x1c,0x18,0x1c,0x18,0x1c,0x18,0x1c,0x00,
0x77,0x66,0x77,0x66,0x77,0x66,0x77,0x66,0x77,0x66,0x77,0x66,0x7f,0x3c,0x3e,0x00,
0x77,0x66,0x77,0x66,0x77,0x66,0x77,0x66,0x7f,0x3c,0x3e,0x3c,0x3e,0x18,0x1c,0x00,
0xe7,0xc6,0xe7,0xc6,0xff,0xd6,0xff,0xd6,0xff,0xd6,0xff,0xfe,0xff,0x6c,0x7e,0x00,
0x77,0x66,0x77,0x66,0x7f,0x3c,0x3e,0x18,0x3e,0x3c,0x7f,0x66,0x77,0x66,0x77,0x00,
0x77,0x66,0x77,0x66,0x77,0x66,0x7f,0x3c,0x3e,0x18,0x1c,0x18,0x1c,0x18,0x1c,0x00,
0x7f,0x7e,0x7f,0x06,0x0f,0x0c,0x1e,0x18,0x3c,0x30,0x78,0x60,0x7f,0x7e,0x7f,0x00,
0x1f,0x1e,0x1f,0x18,0x1c,0x18,0x1c,0x18,0x1c,0x18,0x1c,0x18,0x1f,0x1e,0x1f,0x00,
0x30,0x20,0x38,0x30,0x38,0x10,0x1c,0x18,0x1c,0x08,0x0e,0x0c,0x0e,0x04,0x06,0x00,
0xf8,0xf0,0xf8,0x30,0x38,0x30,0x38,0x30,0x38,0x30,0x38,0x30,0xf8,0xf0,0xf8,0x00,
0x18,0x10,0x3c,0x38,0x7e,0x6c,0x7e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0x7e,0x7f,0x00,
0x30,0x20,0x30,0x20,0x38,0x10,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x3c,0x38,0x3e,0x0c,0x3e,0x3c,0x7e,0x4c,0x7e,0x34,0x3e,0x00,
0x70,0x60,0x70,0x60,0x7c,0x78,0x7e,0x6c,0x7e,0x6c,0x7e,0x6c,0x7e,0x78,0x7c,0x00,
0x00,0x00,0x00,0x00,0x3c,0x38,0x7e,0x6c,0x7e,0x60,0x7e,0x6c,0x7e,0x38,0x3c,0x00,
0x0e,0x0c,0x0e,0x0c,0x3e,0x3c,0x7e,0x6c,0x7e,0x6c,0x7e,0x6c,0x7e,0x3c,0x3e,0x00,
0x00,0x00,0x00,0x00,0x3c,0x38,0x7e,0x64,0x7e,0x7c,0x7e,0x60,0x7e,0x3c,0x3e,0x00,
0x00,0x00,0x3c,0x38,0x7e,0x6c,0x7e,0x60,0x7c,0x78,0x7c,0x60,0x70,0x60,0x70,0x00,
0x00,0x00,0x00,0x00,0x3e,0x3c,0x7e,0x6c,0x7e,0x3c,0x3e,0x0c,0x7e,0x78,0x7c,0x00,
0x70,0x60,0x70,0x60,0x7c,0x78,0x7e,0x6c,0x7e,0x6c,0x7e,0x6c,0x7e,0x6c,0x7e,0x00,
0x00,0x00,0x1c,0x18,0x1c,0x00,0x1c,0x18,0x1c,0x18,0x1c,0x18,0x1c,0x18,0x1c,0x00,
0x00,0x00,0x0e,0x0c,0x0e,0x00,0x0e,0x0c,0x0e,0x0c,0x7e,0x6c,0x7e,0x38,0x3c,0x00,
0x70,0x60,0x70,0x60,0x7e,0x6c,0x7e,0x78,0x7c,0x70,0x7c,0x78,0x7e,0x6c,0x7e,0x00,
0x3c,0x38,0x3c,0x18,0x1c,0x18,0x1c,0x18,0x1c,0x18,0x1c,0x18,0x1c,0x18,0x1c,0x00,
0x00,0x00,0x00,0x00,0x7e,0x6c,0x7f,0x7e,0x7f,0x56,0x7f,0x66,0x77,0x66,0x77,0x00,
0x00,0x00,0x00,0x00,0x7c,0x78,0x7e,0x6c,0x7e,0x6c,0x7e,0x6c,0x7e,0x6c,0x7e,0x00,
0x00,0x00,0x00,0x00,0x3c,0x38,0x7e,0x6c,0x7e,0x6c,0x7e,0x6c,0x7e,0x38,0x3c,0x00,
0x00,0x00,0x00,0x00,0x7c,0x78,0x7e,0x6c,0x7e,0x78,0x7c,0x60,0x70,0x60,0x70,0x00,
0x00,0x00,0x00,0x00,0x3e,0x3c,0x7e,0x6c,0x7e,0x3c,0x3e,0x0c,0x0e,0x0c,0x0e,0x00,
0x00,0x00,0x00,0x00,0x7c,0x78,0x7e,0x6c,0x7e,0x60,0x70,0x60,0x70,0x60,0x70,0x00,
0x00,0x00,0x00,0x00,0x3e,0x3c,0x7e,0x60,0x7c,0x38,0x3e,0x0c,0x7e,0x78,0x7c,0x00,
0x00,0x00,0x1c,0x18,0x3e,0x3c,0x3e,0x18,0x1c,0x18,0x1c,0x18,0x1e,0x0c,0x0e,0x00,
0x00,0x00,0x00,0x00,0x7e,0x6c,0x7e,0x6c,0x7e,0x6c,0x7e,0x6c,0x7e,0x34,0x3e,0x00,
0x00,0x00,0x00,0x00,0x7e,0x6c,0x7e,0x6c,0x7e,0x6c,0x7e,0x3c,0x3e,0x18,0x1c,0x00,
0x00,0x00,0x00,0x00,0xe7,0xc6,0xe7,0xc6,0xff,0xd6,0xff,0x7c,0x7e,0x6c,0x7e,0x00,
0x00,0x00,0x00,0x00,0x7e,0x6c,0x7e,0x38,0x3c,0x10,0x3c,0x38,0x7e,0x6c,0x7e,0x00,
0x00,0x00,0x00,0x00,0x7e,0x6c,0x7e,0x6c,0x7e,0x3c,0x3e,0x18,0x7c,0x70,0x78,0x00,
0x00,0x00,0x00,0x00,0x7e,0x7c,0x7e,0x18,0x3c,0x30,0x78,0x60,0x7e,0x7c,0x7e,0x00,
/*;;*/
};
/* load the font into BG tile data (call with the LCD off) */
static void font_init(void) {
set_bkg_data(FONT_TILE_BASE, FONT_NUM_TILES, font_tiles);
}
/* write a string to the tile map; tile index == ASCII code */
static void put_str(uint8_t x, uint8_t y, const char* s) {
set_bkg_tiles(x, y, strlen(s), 1, (uint8_t*)s);
}
/* write a single character to the tile map */
static void put_char(uint8_t x, uint8_t y, char c) {
set_bkg_tiles(x, y, 1, 1, (uint8_t*)&c);
}
#endif
+28 -63
View File
@@ -1,78 +1,43 @@
/*
Hello world for Game Boy.
Set the BG palette, write a message to the tile map,
then turn on the LCD.
Ported from presets/nes/hello.c, using GBDK (gb/gb.h).
*/
//#link "gb/sfr.sgb"
//#link "gb/crt0.sgb"
//#resource "gb/global.sgb"
#include <stdint.h>
#include <string.h>
#include "gb/types.h"
#include "gb/hardware.h"
#include "gb/gb.h"
#include "gbtext.h"
#define NUM_TILES 46
// main function, run after console reset
void main(void) {
static const uint8_t font[NUM_TILES*16] = {
/*;;{w:8,h:8,bpp:1,count:46,brev:1,np:2,pofs:1,sl:2};;*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,0x81,0x81,0x42,0x42,0x24,0x24,0x18,0x18,0x18,0x18,0x24,0x24,0x42,0x42,0x81,0x81
,0x00,0x00,0x24,0x24,0x00,0x00,0x00,0x00,0x24,0x24,0x18,0x18,0x00,0x00,0x00,0x00
,0x00,0x00,0x24,0x24,0x00,0x00,0x00,0x00,0x18,0x18,0x24,0x24,0x00,0x00,0x00,0x00
,0x00,0x00,0x36,0x36,0x49,0x49,0x41,0x41,0x22,0x22,0x14,0x14,0x08,0x08,0x00,0x00
,0x00,0x00,0x00,0x00,0x08,0x08,0x04,0x04,0x7E,0x7E,0x04,0x04,0x08,0x08,0x00,0x00
,0x00,0x00,0x00,0x00,0x10,0x10,0x20,0x20,0x7E,0x7E,0x20,0x20,0x10,0x10,0x00,0x00
,0x00,0x00,0x10,0x10,0x38,0x38,0x54,0x54,0x10,0x10,0x10,0x10,0x10,0x10,0x00,0x00
,0x00,0x00,0x10,0x10,0x10,0x10,0x10,0x10,0x54,0x54,0x38,0x38,0x10,0x10,0x00,0x00
,0x00,0x00,0x00,0x00,0x10,0x10,0x10,0x10,0x7C,0x7C,0x10,0x10,0x10,0x10,0x00,0x00
,0x00,0x00,0x1C,0x1C,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x1C,0x1C,0x00,0x00
,0x00,0x00,0x06,0x06,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x00,0x00
,0x00,0x00,0x1C,0x1C,0x02,0x02,0x04,0x04,0x08,0x08,0x10,0x10,0x1E,0x1E,0x00,0x00
,0x00,0x00,0x1C,0x1C,0x02,0x02,0x0C,0x0C,0x02,0x02,0x02,0x02,0x1C,0x1C,0x00,0x00
,0x00,0x00,0x12,0x12,0x12,0x12,0x1E,0x1E,0x02,0x02,0x02,0x02,0x02,0x02,0x00,0x00
,0x00,0x00,0x1E,0x1E,0x10,0x10,0x1E,0x1E,0x02,0x02,0x02,0x02,0x1E,0x1E,0x00,0x00
,0x00,0x00,0x0C,0x0C,0x10,0x10,0x1C,0x1C,0x12,0x12,0x12,0x12,0x0C,0x0C,0x00,0x00
,0x00,0x00,0x1C,0x1C,0x04,0x04,0x0E,0x0E,0x04,0x04,0x04,0x04,0x04,0x04,0x00,0x00
,0x00,0x00,0x1C,0x1C,0x22,0x22,0x1C,0x1C,0x22,0x22,0x22,0x22,0x1C,0x1C,0x00,0x00
,0x00,0x00,0x1E,0x1E,0x12,0x12,0x1E,0x1E,0x02,0x02,0x02,0x02,0x02,0x02,0x00,0x00
,0x00,0x00,0x18,0x18,0x24,0x24,0x3C,0x3C,0x24,0x24,0x24,0x24,0x24,0x24,0x00,0x00
,0x00,0x00,0x38,0x38,0x24,0x24,0x38,0x38,0x24,0x24,0x24,0x24,0x38,0x38,0x00,0x00
,0x00,0x00,0x1C,0x1C,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x1C,0x1C,0x00,0x00
,0x00,0x00,0x38,0x38,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x38,0x38,0x00,0x00
,0x00,0x00,0x3C,0x3C,0x20,0x20,0x38,0x38,0x20,0x20,0x20,0x20,0x3C,0x3C,0x00,0x00
,0x00,0x00,0x3C,0x3C,0x20,0x20,0x38,0x38,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x00
,0x00,0x00,0x18,0x18,0x20,0x20,0x2C,0x2C,0x24,0x24,0x24,0x24,0x18,0x18,0x00,0x00
,0x00,0x00,0x24,0x24,0x24,0x24,0x3C,0x3C,0x24,0x24,0x24,0x24,0x24,0x24,0x00,0x00
,0x00,0x00,0x38,0x38,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x38,0x38,0x00,0x00
,0x00,0x00,0x3C,0x3C,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x38,0x38,0x00,0x00
,0x00,0x00,0x24,0x24,0x28,0x28,0x30,0x30,0x28,0x28,0x24,0x24,0x24,0x24,0x00,0x00
,0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x38,0x38,0x00,0x00
,0x00,0x00,0x22,0x22,0x36,0x36,0x2A,0x2A,0x22,0x22,0x22,0x22,0x22,0x22,0x00,0x00
,0x00,0x00,0x24,0x24,0x34,0x34,0x2C,0x2C,0x24,0x24,0x24,0x24,0x24,0x24,0x00,0x00
,0x00,0x00,0x18,0x18,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x18,0x18,0x00,0x00
,0x00,0x00,0x38,0x38,0x24,0x24,0x38,0x38,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x00
,0x00,0x00,0x18,0x18,0x24,0x24,0x24,0x24,0x24,0x24,0x2C,0x2C,0x1C,0x1C,0x02,0x02
,0x00,0x00,0x38,0x38,0x24,0x24,0x38,0x38,0x24,0x24,0x24,0x24,0x24,0x24,0x00,0x00
,0x00,0x00,0x1C,0x1C,0x20,0x20,0x18,0x18,0x04,0x04,0x04,0x04,0x38,0x38,0x00,0x00
,0x00,0x00,0x3E,0x3E,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x00,0x00
,0x00,0x00,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x18,0x18,0x00,0x00
,0x00,0x00,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x14,0x14,0x08,0x08,0x00,0x00
,0x00,0x00,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x2A,0x2A,0x14,0x14,0x00,0x00
,0x00,0x00,0x22,0x22,0x14,0x14,0x08,0x08,0x08,0x08,0x14,0x14,0x22,0x22,0x00,0x00
,0x00,0x00,0x22,0x22,0x14,0x14,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x00,0x00
,0x00,0x00,0x3C,0x3C,0x04,0x04,0x08,0x08,0x10,0x10,0x20,0x20,0x3C,0x3C,0x00,0x00
/*;;*/
};
void main(void)
{
// GB can only write VRAM while the LCD is off
DISPLAY_OFF;
memcpy(_VRAM8000, font, sizeof(font)); // copy tile data
memcpy(_SCRN0, font, 32*32); // copy garbage data to screen
BGP_REG = 0xe4; // palette
LCDC_REG = LCDCF_ON|LCDCF_BG8000|LCDCF_BG9800|LCDCF_BGON|LCDCF_OBJ16|LCDCF_OBJON|LCDCF_WIN9C00|LCDCF_WINOFF;
// background palette: color 0 = white, 1 = light, 2 = dark, 3 = black
BGP_REG = 0xE4;
OBP0_REG = OBP1_REG = 0xE4;
// copy the 8x8 font into BG tile data
font_init();
// write text to the tile map (tile index == ASCII code)
put_str(2, 2, "HELLO, WORLD!");
// enable the background layer, then the LCD
SHOW_BKG;
DISPLAY_ON;
// Loop forever
while(1) {
// Game main loop processing goes here
// Done processing, yield CPU and wait for start of next frame
// infinite loop
while (1) {
wait_vbl_done();
}
}
+86
View File
@@ -0,0 +1,86 @@
/*
Metasprites combine several hardware sprites to make a larger
sprite. Our demo uses 4 hardware sprites in a 2x2 pattern,
forming 16x16 pixel sprites.
Ported from presets/nes/metasprites.c, using GBDK (gb/metasprites.h).
The Game Boy OAM holds 40 sprites, so 10 actors of 4 sprites each
fit on screen (the NES fits 16).
*/
//#link "gb/sfr.sgb"
//#link "gb/crt0.sgb"
//#resource "gb/global.sgb"
#include <stdint.h>
#include <stdlib.h>
#include "gb/types.h"
#include "gb/hardware.h"
#include "gb/gb.h"
#include "gb/metasprites.h"
#include "gbtext.h"
///// METASPRITES
// a 2x2 metasprite made from four font tiles
#define TILE 0x21
const metasprite_t metasprite[] = {
METASPR_ITEM(0, 0, TILE+0, 0),
METASPR_ITEM(0, 8, TILE+1, 0),
METASPR_ITEM(8, 0, TILE+2, 0),
METASPR_ITEM(8, 8, TILE+3, 0),
METASPR_TERM
};
// number of actors (4 h/w sprites each; 10 * 4 = 40 sprites)
#define NUM_ACTORS 10
// actor x/y positions
uint8_t actor_x[NUM_ACTORS];
uint8_t actor_y[NUM_ACTORS];
// actor x/y deltas per frame (signed)
int8_t actor_dx[NUM_ACTORS];
int8_t actor_dy[NUM_ACTORS];
// setup LCD and tile data
void setup_graphics(void) {
DISPLAY_OFF;
BGP_REG = OBP0_REG = OBP1_REG = 0xE4;
LCDC_REG |= LCDCF_BG8000;
font_init();
SHOW_BKG;
SHOW_SPRITES;
DISPLAY_ON;
}
// main program
void main(void) {
uint8_t i; // actor index
// initialize PPU
setup_graphics();
// initialize actors with random values
for (i=0; i<NUM_ACTORS; i++) {
actor_x[i] = rand();
actor_y[i] = rand();
actor_dx[i] = (rand() & 7) - 3;
actor_dy[i] = (rand() & 7) - 3;
}
// loop forever
while (1) {
uint8_t base = 0; // first free sprite ID
// draw and move all actors
for (i=0; i<NUM_ACTORS; i++) {
base += move_metasprite(metasprite, FONT_TILE_BASE, base,
actor_x[i], actor_y[i]);
actor_x[i] += actor_dx[i];
actor_y[i] += actor_dy[i];
}
// hide rest of sprites
hide_sprites_range(base, 40);
// wait for next frame
wait_vbl_done();
}
}
+174
View File
@@ -0,0 +1,174 @@
/*
* A simple music player for Game Boy.
*
* Port of presets/nes/music.c, which drives two pulse channels and a
* triangle (bass) channel from a compact note stream. The Game Boy has
* two pulse channels and a wave channel, so the triangle maps to the
* wave channel and the same score plays on two pulses + wave.
*
* Score format (identical to the NES version):
* byte < 0x80 a note number (index into the period tables below)
* byte >= 0x80 end of chord; low 6 bits = duration in frames
* 0xff end of score
*
* Notes < BASS_NOTE go to the wave channel, the rest to the pulses,
* exactly like the NES player routes low notes to the triangle.
*
* "The Easy Winners" by Scott Joplin.
*/
//#link "gb/sfr.sgb"
//#link "gb/crt0.sgb"
//#resource "gb/global.sgb"
#include <stdint.h>
#include <string.h>
#include "gb/types.h"
#include "gb/hardware.h"
#include "gb/gb.h"
#include "gbtext.h"
typedef uint8_t byte;
typedef uint16_t word;
#define BASS_NOTE 36
/* Note indices match the NES score: MIDI note = index + 20.
* Pulse periods are 11-bit: f = 131072 / (2048 - X). Indices below 16
* are under the pulse channel's range and clamp to X = 0. */
const word note_table_pulse[64] = {
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,
0x02c,0x09d,0x107,0x16b,0x1c9,0x223,0x277,0x2c7,
0x312,0x358,0x39b,0x3da,0x416,0x44e,0x483,0x4b5,
0x4e5,0x511,0x53b,0x563,0x589,0x5ac,0x5ce,0x5ed,
0x60b,0x627,0x642,0x65b,0x672,0x689,0x69e,0x6b2,
0x6c4,0x6d6,0x6e7,0x6f7,0x706,0x714,0x721,0x72d,
0x739,0x744,0x74f,0x759,0x762,0x76b,0x773,0x77b,
};
/* Wave-channel periods: f = 65536 / (2048 - X). The wave channel goes
* an octave lower than the pulses, so it covers the low bass notes. */
const word note_table_wave[64] = {
0x000,0x000,0x000,0x000,0x02c,0x09d,0x107,0x16b,
0x1c9,0x223,0x277,0x2c7,0x312,0x358,0x39b,0x3da,
0x416,0x44e,0x483,0x4b5,0x4e5,0x511,0x53b,0x563,
0x589,0x5ac,0x5ce,0x5ed,0x60b,0x627,0x642,0x65b,
0x672,0x689,0x69e,0x6b2,0x6c4,0x6d6,0x6e7,0x6f7,
0x706,0x714,0x721,0x72d,0x739,0x744,0x74f,0x759,
0x762,0x76b,0x773,0x77b,0x783,0x78a,0x790,0x797,
0x79d,0x7a2,0x7a7,0x7ac,0x7b1,0x7b6,0x7ba,0x7be,
};
/* 32-sample triangle waveform, two 4-bit samples per byte. */
const uint8_t wave_pattern[16] = {
0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef,0xfe,0xdc,0xba,0x98,0x76,0x54,0x32,0x10
};
byte cur_duration = 0;
byte chs = 0; /* channels assigned for the current chord */
const byte* music_ptr = 0;
extern const byte music1[]; /* score -- see end of file */
byte next_music_byte(void) {
return *music_ptr++;
}
void psg_init(void) {
byte i;
NR52_REG = 0x80; /* sound on */
NR51_REG = 0xFF; /* all channels to both outputs */
NR50_REG = 0x77; /* master volume */
NR10_REG = 0x00; /* pulse 1 sweep off */
/* load wave RAM with the wave DAC off */
NR30_REG = 0x00;
for (i = 0; i < 16; i++) _AUD3WAVERAM[i] = wave_pattern[i];
NR32_REG = 0x20; /* wave output level 100% */
}
void gb_pulse_note(byte ch, word period, byte vol) {
byte lo = (byte)(period & 0xff);
byte hi = (byte)((period >> 8) & 0x07);
byte env = (byte)((vol << 4) | 0x02); /* decay envelope from vol */
if (ch == 0) {
NR11_REG = 0x80; /* 50% duty */
NR12_REG = env;
NR13_REG = lo;
NR14_REG = (byte)(0x80 | hi); /* trigger */
} else {
NR21_REG = 0x80;
NR22_REG = env;
NR23_REG = lo;
NR24_REG = (byte)(0x80 | hi); /* trigger */
}
}
void gb_wave_note(word period) {
NR30_REG = 0x80; /* wave DAC on */
NR31_REG = 0x00; /* length (unused) */
NR32_REG = 0x20; /* 100% volume */
NR33_REG = (byte)(period & 0xff);
NR34_REG = (byte)(0x80 | ((period >> 8) & 0x07)); /* trigger */
}
void play_music(void) {
if (music_ptr) {
/* run out the duration timer, fetching notes as needed */
while (cur_duration == 0) {
byte note = next_music_byte();
if ((note & 0x80) == 0) {
/* pulses play higher notes, wave handles the low bass */
if (note >= BASS_NOTE || (chs & 4)) {
word period = note_table_pulse[note & 63];
/* use whichever pulse generator is free */
if (!(chs & 1)) {
gb_pulse_note(0, period, 15);
chs |= 1;
} else if (!(chs & 2)) {
gb_pulse_note(1, period, 15);
chs |= 2;
}
} else {
gb_wave_note(note_table_wave[note & 63]);
chs |= 4;
}
} else {
/* end of chord: set duration and free every channel */
if (note == 0xff) music_ptr = 0;
cur_duration = note & 63;
chs = 0;
}
}
cur_duration--;
}
}
void start_music(const byte* music) {
music_ptr = music;
cur_duration = 0;
chs = 0;
}
void main(void) {
/* title screen (LCD off while writing tiles and the tile map) */
DISPLAY_OFF;
BGP_REG = 0xE4;
OBP0_REG = OBP1_REG = 0xE4;
font_init();
put_str(1, 7, "THE EASY WINNERS");
put_str(4, 9, "SCOTT JOPLIN");
SHOW_BKG;
DISPLAY_ON;
psg_init();
music_ptr = 0;
while (1) {
if (!music_ptr) start_music(music1);
wait_vbl_done();
play_music();
}
}
const byte music1[] = {
0x2a,0x1e,0x95,0x33,0x27,0x9f,0x31,0x25,0x8a,0x2f,0x23,0x8b,0x2e,0x22,0x89,0x2c,0x20,0x8b,0x2a,0x1e,0x95,0x28,0x1c,0x8a,0x27,0x1b,0x95,0x25,0x19,0x8b,0x23,0x17,0x89,0x22,0x12,0x8b,0x23,0x8a,0x25,0x8b,0x27,0x89,0x28,0x1e,0x8c,0x2a,0x1c,0x89,0x2c,0x1b,0x8c,0x2e,0x19,0x89,0x2f,0x17,0x95,0x27,0x23,0x1e,0x95,0x12,0x95,0x23,0x1e,0x27,0x95,0x2f,0x33,0x17,0x95,0x2f,0x33,0x27,0x94,0x12,0x95,0x33,0x36,0x23,0x95,0x38,0x32,0x17,0x8b,0x33,0x36,0x89,0x1e,0x27,0x23,0x8b,0x38,0x32,0x8a,0x33,0x36,0x12,0x8b,0x32,0x38,0x89,0x36,0x33,0x27,0x95,0x3d,0x37,0x10,0x8b,0x3b,0x38,0x8a,0x20,0x23,0x28,0x8b,0x37,0x3d,0x89,0x38,0x3b,0x10,0x8b,0x37,0x3d,0x8a,0x3b,0x38,0x28,0x8b,0x36,0x33,0x8a,0x17,0x95,0x2a,0x1e,0x23,0x8b,0x2c,0x89,0x2e,0x12,0x8b,0x2f,0x8a,0x31,0x27,0x23,0x8b,0x32,0x89,0x2f,0x33,0x17,0x95,0x33,0x2f,0x1e,0x95,0x12,0x94,0x36,0x33,0x1e,0x95,0x32,0x38,0x17,0x8b,0x36,0x33,0x89,0x23,0x1e,0x27,0x8b,0x38,0x32,0x8a,0x33,0x36,0x18,0x8b,0x33,0x36,0x8a,0x33,0x36,0x2a,0x95,0x36,0x19,0x8b,0x31,0x2e,0x89,0x25,0x22,0x2a,0x8b,0x36,0x8a,0x2f,0x35,0x19,0x8b,0x36,0x89,0x38,0x2f,0x29,0x95,0x2e,0x36,0x1e,0x95,0x1c,0x28,0x95,0x27,0x1b,0x8b,0x2a,0x8a,0x2e,0x25,0x19,0x8b,0x34,0x89,0x33,0x2f,0x23,0x95,0x33,0x2f,0x1e,0x95,0x12,0x94,0x33,0x36,0x23,0x95,0x32,0x38,0x17,0x8b,0x33,0x36,0x8a,0x23,0x27,0x1e,0x8b,0x38,0x32,0x89,0x36,0x33,0x12,0x8b,0x32,0x38,0x8a,0x33,0x36,0x1e,0x94,0x37,0x3d,0x10,0x8b,0x3b,0x38,0x8a,0x23,0x28,0x20,0x8b,0x3d,0x37,0x89,0x3b,0x38,0x1c,0x8b,0x38,0x3b,0x8a,0x3a,0x3d,0x38,0x8b,0x3f,0x37,0x3a,0x89,0x27,0x1b,0x8b,0x33,0x8a,0x37,0x22,0x16,0x8b,0x3a,0x8a,0x3f,0x0f,0x1b,0x95,0x3a,0x8b,0x3b,0x8a,0x3d,0x37,0x1c,0x8b,0x3b,0x38,0x89,0x23,0x28,0x20,0x8b,0x3d,0x37,0x8a,0x38,0x3b,0x10,0x8b,0x3d,0x37,0x89,0x38,0x3b,0x20,0x8b,0x36,0x33,0x8a,0x17,0x23,0x8b,0x38,0x34,0x8a,0x33,0x36,0x1e,0x8b,0x31,0x34,0x8a,0x2f,0x33,0x17,0x8b,0x36,0x33,0x8a,0x23,0x27,0x1e,0x8b,0x33,0x36,0x8a,0x36,0x30,0x12,0x8a,0x34,0x31,0x8a,0x1e,0x28,0x22,0x8b,0x30,0x36,0x89,0x34,0x31,0x12,0x8b,0x2e,0x28,0x33,0x8a,0x31,0x28,0x2e,0x95,0x27,0x2f,0x1e,0x95,0x12,0x95,0x14,0x94,0x16,0x95,0x2f,0x33,0x17,0x95,0x2f,0x33,0x27,0x94,0x12,0x95,0x36,0x33,0x23,0x95,0x32,0x38,0x17,0x8a,0x33,0x36,0x8a,0x23,0x27,0x1e,0x8b,0x32,0x38,0x8a,0x33,0x36,0x12,0x8b,0x38,0x32,0x8a,0x36,0x33,0x27,0x95,0x3d,0x37,0x10,0x8a,0x3b,0x38,0x8a,0x23,0x28,0x20,0x8b,0x37,0x3d,0x89,0x3b,0x38,0x10,0x8b,0x37,0x3d,0x8a,0x38,0x3b,0x23,0x8b,0x36,0x33,0x8a,0x17,0x95,0x2a,0x1e,0x23,0x8b,0x2c,0x8a,0x2e,0x12,0x8b,0x2f,0x89,0x31,0x23,0x1e,0x8b,0x32,0x8a,0x33,0x2f,0x17,0x95,0x2f,0x33,0x1e,0x94,0x12,0x95,0x36,0x33,0x27,0x95,0x38,0x32,0x17,0x8a,0x36,0x33,0x8a,0x23,0x1e,0x27,0x8b,0x38,0x32,0x89,0x33,0x36,0x18,0x8c,0x36,0x33,0x89,0x33,0x36,0x21,0x95,0x36,0x19,0x8b,0x2e,0x31,0x8a,0x25,0x2a,0x22,0x8b,0x36,0x89,0x35,0x2f,0x19,0x8b,0x36,0x8a,0x2f,0x38,0x25,0x94,0x36,0x2e,0x2a,0x95,0x1c,0x28,0x95,0x27,0x1b,0x8c,0x2a,0x89,0x2e,0x25,0x19,0x8b,0x34,0x8a,0x33,0x2f,0x23,0x95,0x2f,0x33,0x1e,0x94,0x12,0x95,0x33,0x36,0x23,0x95,0x32,0x38,0x17,0x8a,0x33,0x36,0x8a,0x23,0x1e,0x27,0x8b,0x32,0x38,0x89,0x36,0x33,0x12,0x8c,0x32,0x38,0x89,0x33,0x36,0x1e,0x95,0x37,0x3d,0x10,0x8b,0x3b,0x38,0x8a,0x23,0x20,0x28,0x8a,0x3d,0x37,0x8a,0x38,0x3b,0x1c,0x8b,0x3b,0x38,0x8a,0x3d,0x38,0x3a,0x8b,0x3a,0x3f,0x37,0x89,0x27,0x1b,0x8b,0x33,0x8a,0x37,0x22,0x16,0x8b,0x3a,0x8a,0x3f,0x0f,0x1b,0x95,0x3a,0x8b,0x3b,0x8a,0x3d,0x37,0x1c,0x8b,0x3b,0x38,0x8a,0x20,0x28,0x23,0x8b,0x3d,0x37,0x89,0x38,0x3b,0x10,0x8b,0x3d,0x37,0x8a,0x38,0x3b,0x20,0x8b,0x33,0x36,0x89,0x17,0x23,0x8b,0x38,0x34,0x8a,0x36,0x33,0x23,0x8b,0x34,0x31,0x89,0x2f,0x33,0x17,0x8c,0x36,0x33,0x89,0x1e,0x27,0x23,0x8c,0x33,0x36,0x89,0x36,0x30,0x12,0x8b,0x34,0x31,0x8a,0x1e,0x28,0x22,0x8a,0x30,0x36,0x8a,0x34,0x31,0x1e,0x8b,0x28,0x2e,0x33,0x89,0x28,0x31,0x2e,0x95,0x27,0x2f,0x17,0x95,0x12,0x1e,0x95,0x3b,0x36,0x33,0x96,0x2a,0x8b,0x2b,0x8a,0x2c,0x1e,0x12,0x8b,0x2d,0x89,0x2e,0x28,0x1e,0x8b,0x2e,0x31,0x8a,0x16,0x22,0x8b,0x36,0x89,0x34,0x1e,0x22,0x8b,0x31,0x8a,0x2c,0x25,0x19,0x8b,0x2d,0x89,0x2e,0x28,0x25,0x8b,0x33,0x2e,0x8a,0x25,0x19,0x8c,0x31,0x89,0x2c,0x1a,0x26,0x8b,0x2e,0x8a,0x2f,0x1b,0x27,0x8b,0x2a,0x89,0x2c,0x23,0x1e,0x8b,0x2e,0x8a,0x2f,0x12,0x1e,0x8b,0x30,0x89,0x31,0x27,0x23,0x8b,0x32,0x8a,0x33,0x17,0x23,0x8b,0x32,0x8a,0x33,0x1e,0x23,0x8b,0x38,0x33,0x8a,0x1e,0x12,0x8b,0x36,0x8a,0x31,0x1e,0x23,0x8b,0x33,0x89,0x34,0x25,0x19,0x8b,0x3d,0x89,0x1e,0x28,0x22,0x8b,0x33,0x89,0x34,0x12,0x1e,0x8b,0x3d,0x8a,0x1e,0x22,0x28,0x8a,0x33,0x8a,0x34,0x19,0x25,0x8b,0x3d,0x89,0x28,0x1e,0x22,0x8b,0x3b,0x89,0x3a,0x1e,0x12,0x8b,0x38,0x8a,0x36,0x22,0x16,0x8b,0x34,0x8a,0x33,0x23,0x17,0x8b,0x3b,0x8a,0x1e,0x23,0x27,0x8a,0x32,0x8a,0x33,0x12,0x1e,0x8b,0x3b,0x89,0x27,0x23,0x1e,0x8b,0x32,0x89,0x33,0x23,0x17,0x8b,0x3b,0x89,0x1e,0x23,0x27,0x8b,0x38,0x8a,0x36,0x12,0x1e,0x8b,0x33,0x89,0x31,0x1e,0x27,0x8b,0x2f,0x8a,0x2e,0x20,0x14,0x8b,0x2f,0x8a,0x30,0x2a,0x24,0x8b,0x30,0x38,0x8a,0x24,0x18,0x8b,0x36,0x89,0x33,0x24,0x20,0x8b,0x30,0x8a,0x2e,0x27,0x1b,0x8b,0x2f,0x89,0x30,0x24,0x2a,0x8b,0x30,0x38,0x8a,0x20,0x14,0x8b,0x33,0x36,0x8a,0x38,0x30,0x24,0x8b,0x33,0x36,0x89Line truncated
};
+58
View File
@@ -0,0 +1,58 @@
/*
Scrolling demo for Game Boy.
The background tile map is 32x32 tiles (256x256 pixels) and
wraps around, so the scroll registers can move anywhere in it.
We put text at the top, middle and bottom rows and scroll the
view up and down through the whole map.
Ported from presets/nes/scroll.c, using GBDK (gb/gb.h).
*/
//#link "gb/sfr.sgb"
//#link "gb/crt0.sgb"
//#resource "gb/global.sgb"
#include <stdint.h>
#include "gb/types.h"
#include "gb/hardware.h"
#include "gb/gb.h"
#include "gbtext.h"
// scroll the window up and down until the end
void scroll_demo(void) {
int y = 0; // y scroll position
int dy = 1; // y scroll direction
// infinite loop
while (1) {
// wait for next frame
wait_vbl_done();
// update y variable
y += dy;
// change direction when hitting either edge of scroll area
if (y >= 255) dy = -1;
if (y == 0) dy = 1;
// set the Y scroll register
SCY_REG = y;
}
}
// main function, run after console reset
void main(void) {
DISPLAY_OFF;
// background palette: color 0 = white, 1 = light, 2 = dark, 3 = black
BGP_REG = 0xE4;
font_init();
// write text to the tile map
put_str(2, 0, "Tile map row 0");
put_str(2, 15, "Tile map row 15");
put_str(2, 29, "Tile map row 29");
// enable rendering
SHOW_BKG;
DISPLAY_ON;
// scroll the view back and forth
scroll_demo();
}
+357
View File
@@ -0,0 +1,357 @@
/*
Siege for Game Boy — port of presets/nes/siegegame.c.
A character-based surround-the-opponent game. Two players (one
human, one AI) leave trails that box each other in; the first
one to hit a wall, a trail, or the other player loses the round.
Porting notes:
- The NES version reads the nametable back from the PPU to
detect collisions and steer the AI (see getchar()). On the
Game Boy VRAM can only be accessed during VBlank, so we keep
a shadow copy of the playfield in RAM instead.
- Text uses the gbtext.h font (tile index == ASCII code), so
strings can be written straight to the tile map.
- The NES draws player tails as colored tiles; here we use two
custom dither tiles (light for player 1, dark for player 2)
appended after the font tiles.
- Flashing colliding players reuses the NES trick of XORing the
head tile index with 0x80: tiles 0x80 and up are blank, so
the head alternates between visible and hidden.
- Playfield is cropped to 20x17 tiles to fit the GB screen.
Controls: D-pad moves player 1, Start starts the game.
*/
//#link "gb/sfr.sgb"
//#link "gb/crt0.sgb"
//#resource "gb/global.sgb"
#include <stdlib.h>
#include <string.h>
#include <stdint.h>
#include "gb/types.h"
#include "gb/hardware.h"
#include "gb/gb.h"
#include "gbtext.h"
typedef uint8_t byte;
typedef uint16_t word;
// screen is 20x18 tiles; leave the bottom row blank
#define COLS 20
#define ROWS 17
////////// GAME DATA
typedef struct {
byte x;
byte y;
byte dir;
word score;
char head_attr;
char tail_attr;
int collided:1;
int human:1;
} Player;
Player players[2];
byte attract;
byte gameover;
byte frames_per_move;
// shadow copy of the tile map, for collision checks and AI
// (GB VRAM can only be read during VBlank, so mirror in RAM)
byte playfield[COLS*ROWS];
#define START_SPEED 12
#define MAX_SPEED 5
#define MAX_SCORE 7
// two custom tail tiles appended after the font tiles
// (the NES version uses two colored tiles for the tails)
#define TAIL_TILE_P1 (FONT_TILE_BASE + FONT_NUM_TILES) // 0x7b
#define TAIL_TILE_P2 (FONT_TILE_BASE + FONT_NUM_TILES + 1) // 0x7c
// three custom tiles for the border
#define BORDER_LR (FONT_TILE_BASE + FONT_NUM_TILES + 2) // 0x7d
#define BORDER_UD (FONT_TILE_BASE + FONT_NUM_TILES + 3) // 0x7e
#define BORDER_CORNER (FONT_TILE_BASE + FONT_NUM_TILES + 4) // 0x7f
// blank tile used to clear tiles 0x80-0xff (see init)
const uint8_t zero_tile[16] = {0};
// tail tiles: dark checkerboard (player 1), light (player 2)
const uint8_t tail_tiles[5*16] = {
/*;;{w:8,h:8,bpp:1,count:5,brev:1,np:2,pofs:1,sl:2};;*/
0x55,0x55,0xAA,0xAA, 0x55,0x55,0xAA,0xAA,
0x55,0x55,0xAA,0xAA, 0x55,0x55,0xAA,0xAA,
0x55,0x00,0xAA,0x00, 0x55,0x00,0xAA,0x00,
0x55,0x00,0xAA,0x00, 0x55,0x00,0xAA,0x00,
0x00,0x00,0x00,0xFF, 0x55,0x00,0xAA,0x00,
0x55,0x00,0xAA,0x00, 0x00,0xFF,0x00,0x00,
0x14,0x42,0x28,0x42, 0x14,0x42,0x28,0x42,
0x14,0x42,0x28,0x42, 0x14,0x42,0x28,0x42,
0x00,0xFF,0x2A,0x81, 0x54,0x81,0x2A,0x81,
0x54,0x81,0x2A,0x81, 0x54,0x81,0x00,0xFF,
/*;;*/
};
////////// TEXT ROUTINES
// read a playfield character: from the shadow buffer,
// no VBlank tricks needed (unlike the NES nametable read)
byte getchar(byte x, byte y) {
return playfield[y*COLS+x];
}
void cputcxy(byte x, byte y, char ch) {
put_char(x, y, ch);
// keep shadow buffer in sync with the screen
playfield[y*COLS+x] = ch;
}
void cputsxy(byte x, byte y, const char* str) {
byte i;
for (i=0; str[i]; i++)
cputcxy(x+i, y, str[i]);
}
void clrscr() {
byte x, y;
memset(playfield, 0, sizeof(playfield));
// fill the visible tile map with spaces
for (y=0; y<ROWS; y++)
for (x=0; x<COLS; x++)
put_char(x, y, ' ');
}
///////////
const char BOX_CHARS[8] = {
BORDER_CORNER,
BORDER_CORNER,
BORDER_CORNER,
BORDER_CORNER,
BORDER_LR,
BORDER_LR,
BORDER_UD,
BORDER_UD,
};
void draw_box(byte x, byte y, byte x2, byte y2, const char* chars) {
byte x1 = x;
cputcxy(x, y, chars[2]);
cputcxy(x2, y, chars[3]);
cputcxy(x, y2, chars[0]);
cputcxy(x2, y2, chars[1]);
while (++x < x2) {
cputcxy(x, y, chars[5]);
cputcxy(x, y2, chars[4]);
}
while (++y < y2) {
cputcxy(x1, y, chars[6]);
cputcxy(x2, y, chars[7]);
}
}
void draw_playfield() {
draw_box(1,2,COLS-2,ROWS-1,BOX_CHARS);
if (attract) {
cputsxy(4,ROWS-1,"PRESS START");
} else {
cputsxy(1,1,"P1:");
cputcxy(4,1,players[0].score+'0');
cputsxy(13,1,"P2:");
cputcxy(16,1,players[1].score+'0');
}
}
typedef enum { D_RIGHT, D_DOWN, D_LEFT, D_UP } dir_t;
const char DIR_X[4] = { 1, 0, -1, 0 };
const char DIR_Y[4] = { 0, 1, 0, -1 };
void init_game() {
memset(players, 0, sizeof(players));
players[0].head_attr = '1';
players[1].head_attr = '2';
players[0].tail_attr = TAIL_TILE_P1;
players[1].tail_attr = TAIL_TILE_P2;
frames_per_move = START_SPEED;
}
void reset_players() {
players[0].x = players[0].y = 5;
players[0].dir = D_RIGHT;
players[1].x = COLS-6;
players[1].y = ROWS-6;
players[1].dir = D_LEFT;
players[0].collided = players[1].collided = 0;
}
void draw_player(Player* p) {
cputcxy(p->x, p->y, p->head_attr);
}
void move_player(Player* p) {
cputcxy(p->x, p->y, p->tail_attr);
p->x += DIR_X[p->dir];
p->y += DIR_Y[p->dir];
if (getchar(p->x, p->y) != 0)
p->collided = 1;
draw_player(p);
}
void human_control(Player* p) {
byte dir = 0xff;
byte joy = joypad();
// start game if attract mode
if (attract && (joy & J_START))
gameover = 1;
// do not allow movement unless human player
if (!p->human) return;
if (joy & J_LEFT) dir = D_LEFT;
if (joy & J_RIGHT) dir = D_RIGHT;
if (joy & J_UP) dir = D_UP;
if (joy & J_DOWN) dir = D_DOWN;
// don't let the player reverse
if (dir < 0x80 && dir != (p->dir ^ 2)) {
p->dir = dir;
}
}
byte ai_try_dir(Player* p, dir_t dir, byte shift) {
byte x,y;
dir &= 3;
x = p->x + (DIR_X[dir] << shift);
y = p->y + (DIR_Y[dir] << shift);
if (x < COLS && y < ROWS && getchar(x, y) == 0) {
p->dir = dir;
return 1;
} else {
return 0;
}
}
void ai_control(Player* p) {
dir_t dir;
if (p->human) return;
dir = p->dir;
if (!ai_try_dir(p, dir, 0)) {
ai_try_dir(p, dir+1, 0);
ai_try_dir(p, dir-1, 0);
} else {
ai_try_dir(p, dir-1, 0) && ai_try_dir(p, dir-1, 1+(rand() & 3));
ai_try_dir(p, dir+1, 0) && ai_try_dir(p, dir+1, 1+(rand() & 3));
ai_try_dir(p, dir, rand() & 3);
}
}
void flash_colliders() {
byte i;
// flash players that collided by toggling the head tile
// between the glyph and the blank tile 0x80 up
for (i=0; i<56; i++) {
wait_vbl_done(); // head draws happen right after VBlank
if (players[0].collided) players[0].head_attr ^= 0x80;
if (players[1].collided) players[1].head_attr ^= 0x80;
draw_player(&players[0]);
draw_player(&players[1]);
wait_vbl_done(); // two frames per flash, like the NES version
}
// even number of flashes leaves head_attr restored
}
void make_move() {
byte i;
for (i=0; i<frames_per_move; i++) {
human_control(&players[0]);
wait_vbl_done(); // pace one move every frames_per_move frames
}
ai_control(&players[0]);
ai_control(&players[1]);
// if players collide, 2nd player gets the point
// (draws happen right after the last VBlank above)
move_player(&players[1]);
move_player(&players[0]);
}
void declare_winner(byte winner) {
byte i;
clrscr();
// draw nested boxes closing in on the center
for (i=0; i<ROWS/2-3; i++) {
draw_box(i,i,COLS-1-i,ROWS-1-i,BOX_CHARS);
wait_vbl_done();
}
cputsxy(6,10,"WINNER:");
cputsxy(6,13,"PLAYER ");
cputcxy(6+7, 13, '1'+winner);
// ~1.25 seconds (NES delay() counts frames)
for (i=0; i<75; i++) wait_vbl_done();
gameover = 1;
}
void play_round() {
display_off();
clrscr();
draw_playfield();
reset_players();
DISPLAY_ON;
while (1) {
make_move();
if (gameover) return; // attract mode -> start
if (players[0].collided || players[1].collided) break;
}
flash_colliders();
// add scores to players that didn't collide
if (players[0].collided) players[1].score++;
if (players[1].collided) players[0].score++;
// increase speed
if (frames_per_move > MAX_SPEED) frames_per_move--;
// game over?
if (players[0].score != players[1].score) {
if (players[0].score >= MAX_SCORE)
declare_winner(0);
else if (players[1].score >= MAX_SCORE)
declare_winner(1);
}
}
void play_game() {
gameover = 0;
init_game();
if (!attract)
players[0].human = 1;
while (!gameover) {
play_round();
}
}
void main() {
byte i, x, y;
DISPLAY_OFF;
// unsigned tile indexing so ASCII codes work; must be set before
// set_bkg_data(), which uses it to pick the VRAM tile base
LCDC_REG |= LCDCF_BG8000;
// load font (tiles 0x20-0x7a, tile index == ASCII) + tail tiles
font_init();
set_bkg_data(TAIL_TILE_P1, sizeof(tail_tiles)/16, tail_tiles);
// clear tiles 0x80-0xff so head_attr^0x80 flashing shows blank
for (i=0x80; i!=0; i++)
set_bkg_data(i, 1, zero_tile);
// 4-shade palette
BGP_REG = 0xE4;
// fill the tile map with spaces
for (y=0; y<ROWS; y++)
for (x=0; x<COLS; x++)
put_char(x, y, ' ');
SHOW_BKG;
DISPLAY_ON;
while (1) {
attract = 1;
play_game();
attract = 0;
play_game();
}
}
+75
View File
@@ -0,0 +1,75 @@
/*
Sprite demo for Game Boy.
Animate all 40 hardware sprites (the Game Boy OAM holds 40,
where the NES has 64).
Ported from presets/nes/sprites.c, using GBDK (gb/gb.h).
The font tiles loaded for the background live at 0x8000, which
is the same tile data the objects use, so we can point the
sprites at them too.
*/
//#link "gb/sfr.sgb"
//#link "gb/crt0.sgb"
//#resource "gb/global.sgb"
#include <stdint.h>
#include <stdlib.h>
#include "gb/types.h"
#include "gb/hardware.h"
#include "gb/gb.h"
#include "gbtext.h"
// number of actors
#define NUM_ACTORS 40 // 40 sprites (Game Boy maximum)
// actor x/y positions
uint8_t actor_x[NUM_ACTORS]; // horizontal coordinates
uint8_t actor_y[NUM_ACTORS]; // vertical coordinates
// actor x/y deltas per frame (signed)
int8_t actor_dx[NUM_ACTORS]; // horizontal velocity
int8_t actor_dy[NUM_ACTORS]; // vertical velocity
// setup LCD and tile data
void setup_graphics(void) {
DISPLAY_OFF;
// 4-shade palettes (index 0 is transparent for objects)
BGP_REG = OBP0_REG = OBP1_REG = 0xE4;
// use 0x8000 for BG tile data so background and objects
// share the same font tiles
LCDC_REG |= LCDCF_BG8000;
// load the font tiles at 0x8000 (shared by BG and objects)
font_init();
SHOW_BKG;
SHOW_SPRITES;
DISPLAY_ON;
}
// main program
void main(void) {
uint8_t i; // actor index
// initialize actors with random values
for (i=0; i<NUM_ACTORS; i++) {
actor_x[i] = rand();
actor_y[i] = rand();
actor_dx[i] = (rand() & 7) - 3;
actor_dy[i] = (rand() & 7) - 3;
}
setup_graphics();
// loop forever
while (1) {
// draw and move all actors
for (i=0; i<NUM_ACTORS; i++) {
set_sprite_tile(i, FONT_TILE_BASE + i);
move_sprite(i, actor_x[i], actor_y[i]);
actor_x[i] += actor_dx[i];
actor_y[i] += actor_dy[i];
}
// wait for next frame
wait_vbl_done();
}
}
+22 -4
View File
@@ -1,4 +1,20 @@
/*
Drawing primitives demo for Game Boy.
Uses the GBDK pixel plotting library (gb/drawing.h) to draw
characters, circles, boxes, and lines in the various draw
modes (SOLID, XOR) and foreground/background colors.
No font data is included in this file. The characters drawn by
gprintf()/gotogxy() use the 256-character IBM fixed-width font
(font_ibm_fixed) compiled into the GBDK drawing library, which
is linked in automatically via gb.lib.
The last section scrolls the whole screen by replotting every
pixel one row up at a time. This is slow, since each call to
plot_point() reads and writes a byte of pixel memory.
*/
//#link "gb/sfr.sgb"
//#link "gb/crt0.sgb"
//#resource "gb/global.sgb"
@@ -9,18 +25,19 @@
#include "gb/gb.h"
#include "gb/drawing.h"
// draw a starburst of lines radiating from (x,y)
void linetest(uint8_t x, uint8_t y, uint8_t w) {
color(DKGREY,WHITE,SOLID);
for (int i = -w; i <= w; i++) line(x,y,x+i,y-w);
for (int i = -w; i <= w; i++) line(x,y,x+w,y+i);
for (int i = -w; i <= w; i++) line(x,y,x+i,y+w);
for (int i = -w; i <= w; i++) line(x,y,x-w,y+i);
for (int i = -w; i <= w; i++) line(x,y,x-w,y+i);
}
void main(void)
{
uint8_t a,b,c,d,e;
c=0;
uint8_t a,b,c,d,e; // loop counters and color indices
c=0; // character code to draw, starting at 0
/* Draw many characters on the screen with different fg and bg colours */
for (a=0; a<=15; a++) {
for (b=0; b<=15; b++) {
@@ -32,7 +49,7 @@ void main(void)
}
color(d,e,SOLID);
gprintf("%c",c++);
}
}
}
/* Draw two circles, a line, and two boxes in different drawing modes */
@@ -47,6 +64,7 @@ void main(void)
box(0,130,40,143,M_NOFILL);
box(50,130,90,143,M_FILL);
// draw lines fanning out from a point
linetest(130, 100, 20);
/* Scroll the screen using the hardest method imaginable :) */
@@ -1,4 +1,12 @@
/*
Physics demo for Game Boy.
A single sprite with velocity and friction, using fixed-point
coordinates: positions are 16-bit values where the lower 4 bits
are the sub-pixel fraction, dropped with >> 4 when the sprite
is moved. Arrow keys apply thrust; holding A gives a jump burst.
*/
//#link "gb/sfr.sgb"
//#link "gb/crt0.sgb"
//#resource "gb/global.sgb"
@@ -12,6 +20,7 @@
// Postion values are calculated as 16 bit numbers and their
// lower 4 bits are dropped when applying them to the sprite
// 4 frames of a ball sprite (8x8, 1bpp)
UINT8 sprite_data[] = {
/*;;{w:8,h:8,bpp:1,count:4,brev:1,np:2,pofs:1,sl:2};;*/
0x3C,0x3C,0x42,0x7E,0x99,0xFF,0xA9,0xFF,0x89,0xFF,0x89,0xFF,0x42,0x7E,0x3C,0x3C,
@@ -23,12 +32,12 @@ UINT8 sprite_data[] = {
joypads_t joypads;
// sprite coords
UINT16 PosX, PosY;
INT16 SpdX, SpdY;
UINT8 Jump;
// fixed-point sprite coords (fraction in lower 4 bits)
UINT16 PosX, PosY; // position
INT16 SpdX, SpdY; // velocity
UINT8 Jump; // frames of jump thrust remaining
// main funxction
// main function
void main(void) {
// init palettes
BGP_REG = OBP0_REG = OBP1_REG = 0xE4;
@@ -45,14 +54,16 @@ void main(void) {
// init 2 joypads
joypad_init(1, &joypads);
// start at screen center with zero velocity
PosX = PosY = 64 << 4;
Jump = SpdX = SpdY = 0;
// loop forever
while(1) {
// poll joypads
joypad_ex(&joypads);
// game object
// game object: arrow keys apply thrust, clamped to a max speed
if (joypads.joy0 & J_UP) {
SpdY -= 2;
if (SpdY < -64) SpdY = -64;
@@ -67,24 +78,26 @@ void main(void) {
SpdX += 2;
if (SpdX > 64) SpdX = 64;
}
// A button triggers a 3-frame jump (only when grounded)
if ((joypads.joy0 & J_A) && (!Jump)) {
Jump = 3;
}
// jump
// jump: apply upward impulse while Jump counts down
if (Jump) {
SpdY -= 8;
if (SpdY < -32) SpdY = -32;
Jump--;
}
// apply velocity to position
PosX += SpdX, PosY += SpdY;
// Translate to pixels and move sprite
// Downshift by 4 bits to use the whole number values
move_sprite(0, PosX >> 4, PosY >> 4);
// decelerate
// friction: velocities decay toward zero each frame
if (SpdY >= 0) {
if (SpdY) SpdY--;
} else SpdY ++;
+78
View File
@@ -0,0 +1,78 @@
//#link "gb/sfr.sgb"
//#link "gb/crt0.sgb"
//#resource "gb/global.sgb"
#include <stdint.h>
#include <string.h>
#include "gb/types.h"
#include "gb/hardware.h"
#include "gb/gb.h"
#define NUM_TILES 46
static const uint8_t font[NUM_TILES*16] = {
/*;;{w:8,h:8,bpp:1,count:46,brev:1,np:2,pofs:1,sl:2};;*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,0x81,0x81,0x42,0x42,0x24,0x24,0x18,0x18,0x18,0x18,0x24,0x24,0x42,0x42,0x81,0x81
,0x00,0x00,0x24,0x24,0x00,0x00,0x00,0x00,0x24,0x24,0x18,0x18,0x00,0x00,0x00,0x00
,0x00,0x00,0x24,0x24,0x00,0x00,0x00,0x00,0x18,0x18,0x24,0x24,0x00,0x00,0x00,0x00
,0x00,0x00,0x36,0x36,0x49,0x49,0x41,0x41,0x22,0x22,0x14,0x14,0x08,0x08,0x00,0x00
,0x00,0x00,0x00,0x00,0x08,0x08,0x04,0x04,0x7E,0x7E,0x04,0x04,0x08,0x08,0x00,0x00
,0x00,0x00,0x00,0x00,0x10,0x10,0x20,0x20,0x7E,0x7E,0x20,0x20,0x10,0x10,0x00,0x00
,0x00,0x00,0x10,0x10,0x38,0x38,0x54,0x54,0x10,0x10,0x10,0x10,0x10,0x10,0x00,0x00
,0x00,0x00,0x10,0x10,0x10,0x10,0x10,0x10,0x54,0x54,0x38,0x38,0x10,0x10,0x00,0x00
,0x00,0x00,0x00,0x00,0x10,0x10,0x10,0x10,0x7C,0x7C,0x10,0x10,0x10,0x10,0x00,0x00
,0x00,0x00,0x1C,0x1C,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x1C,0x1C,0x00,0x00
,0x00,0x00,0x06,0x06,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x00,0x00
,0x00,0x00,0x1C,0x1C,0x02,0x02,0x04,0x04,0x08,0x08,0x10,0x10,0x1E,0x1E,0x00,0x00
,0x00,0x00,0x1C,0x1C,0x02,0x02,0x0C,0x0C,0x02,0x02,0x02,0x02,0x1C,0x1C,0x00,0x00
,0x00,0x00,0x12,0x12,0x12,0x12,0x1E,0x1E,0x02,0x02,0x02,0x02,0x02,0x02,0x00,0x00
,0x00,0x00,0x1E,0x1E,0x10,0x10,0x1E,0x1E,0x02,0x02,0x02,0x02,0x1E,0x1E,0x00,0x00
,0x00,0x00,0x0C,0x0C,0x10,0x10,0x1C,0x1C,0x12,0x12,0x12,0x12,0x0C,0x0C,0x00,0x00
,0x00,0x00,0x1C,0x1C,0x04,0x04,0x0E,0x0E,0x04,0x04,0x04,0x04,0x04,0x04,0x00,0x00
,0x00,0x00,0x1C,0x1C,0x22,0x22,0x1C,0x1C,0x22,0x22,0x22,0x22,0x1C,0x1C,0x00,0x00
,0x00,0x00,0x1E,0x1E,0x12,0x12,0x1E,0x1E,0x02,0x02,0x02,0x02,0x02,0x02,0x00,0x00
,0x00,0x00,0x18,0x18,0x24,0x24,0x3C,0x3C,0x24,0x24,0x24,0x24,0x24,0x24,0x00,0x00
,0x00,0x00,0x38,0x38,0x24,0x24,0x38,0x38,0x24,0x24,0x24,0x24,0x38,0x38,0x00,0x00
,0x00,0x00,0x1C,0x1C,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x1C,0x1C,0x00,0x00
,0x00,0x00,0x38,0x38,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x38,0x38,0x00,0x00
,0x00,0x00,0x3C,0x3C,0x20,0x20,0x38,0x38,0x20,0x20,0x20,0x20,0x3C,0x3C,0x00,0x00
,0x00,0x00,0x3C,0x3C,0x20,0x20,0x38,0x38,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x00
,0x00,0x00,0x18,0x18,0x20,0x20,0x2C,0x2C,0x24,0x24,0x24,0x24,0x18,0x18,0x00,0x00
,0x00,0x00,0x24,0x24,0x24,0x24,0x3C,0x3C,0x24,0x24,0x24,0x24,0x24,0x24,0x00,0x00
,0x00,0x00,0x38,0x38,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x38,0x38,0x00,0x00
,0x00,0x00,0x3C,0x3C,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x38,0x38,0x00,0x00
,0x00,0x00,0x24,0x24,0x28,0x28,0x30,0x30,0x28,0x28,0x24,0x24,0x24,0x24,0x00,0x00
,0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x38,0x38,0x00,0x00
,0x00,0x00,0x22,0x22,0x36,0x36,0x2A,0x2A,0x22,0x22,0x22,0x22,0x22,0x22,0x00,0x00
,0x00,0x00,0x24,0x24,0x34,0x34,0x2C,0x2C,0x24,0x24,0x24,0x24,0x24,0x24,0x00,0x00
,0x00,0x00,0x18,0x18,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x18,0x18,0x00,0x00
,0x00,0x00,0x38,0x38,0x24,0x24,0x38,0x38,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x00
,0x00,0x00,0x18,0x18,0x24,0x24,0x24,0x24,0x24,0x24,0x2C,0x2C,0x1C,0x1C,0x02,0x02
,0x00,0x00,0x38,0x38,0x24,0x24,0x38,0x38,0x24,0x24,0x24,0x24,0x24,0x24,0x00,0x00
,0x00,0x00,0x1C,0x1C,0x20,0x20,0x18,0x18,0x04,0x04,0x04,0x04,0x38,0x38,0x00,0x00
,0x00,0x00,0x3E,0x3E,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x00,0x00
,0x00,0x00,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x18,0x18,0x00,0x00
,0x00,0x00,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x14,0x14,0x08,0x08,0x00,0x00
,0x00,0x00,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x2A,0x2A,0x14,0x14,0x00,0x00
,0x00,0x00,0x22,0x22,0x14,0x14,0x08,0x08,0x08,0x08,0x14,0x14,0x22,0x22,0x00,0x00
,0x00,0x00,0x22,0x22,0x14,0x14,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x00,0x00
,0x00,0x00,0x3C,0x3C,0x04,0x04,0x08,0x08,0x10,0x10,0x20,0x20,0x3C,0x3C,0x00,0x00
/*;;*/
};
void main(void)
{
DISPLAY_OFF;
memcpy(_VRAM8000, font, sizeof(font)); // copy tile data
memcpy(_SCRN0, font, 32*32); // copy garbage data to screen
BGP_REG = 0xe4; // palette
LCDC_REG = LCDCF_ON|LCDCF_BG8000|LCDCF_BG9800|LCDCF_BGON|LCDCF_OBJ16|LCDCF_OBJON|LCDCF_WIN9C00|LCDCF_WINOFF;
DISPLAY_ON;
// Loop forever
while(1) {
// Game main loop processing goes here
// Done processing, yield CPU and wait for start of next frame
wait_vbl_done();
}
}
+10 -3
View File
@@ -1288,6 +1288,7 @@ function pause() {
clearBreakpoint();
_pause();
userPaused = true;
refreshShortcutBar(); // debug chips appear once the session starts
}
// F8 pauses a running emulator and resumes a paused one. Unmodified and not
@@ -1311,7 +1312,8 @@ function _resume() {
function resume() {
if (!checkRunReady()) return;
// If there are enabled breakpoints, resume with them armed
// If there are enabled breakpoints, resume with them armed; the debug
// session stays active so the debug chips keep showing
if (bpStore.getEnabled().length > 0 && armBreakpoints()) {
if (!platform.isRunning()) {
projectWindows.refresh(false);
@@ -1322,12 +1324,16 @@ function resume() {
}
clearBreakpoint();
// plain run: end the debug session so the Reset & Run / Search chips return
// (pause() set debugSessionActive; undo it here unless breakpoints were armed)
debugSessionActive = false;
if (!platform.isRunning()) {
projectWindows.refresh(false);
}
_resume();
userPaused = false;
lastViewClicked = null;
refreshShortcutBar();
}
function singleStep() {
@@ -2298,8 +2304,9 @@ function showInstructions() {
vcanvas.on('focus', () => {
if (platform.isRunning()) {
div.fadeIn(200);
// toggle sound for browser autoplay
platform.pause();
// unlock audio for browser autoplay policy (resume() no-ops if already running;
// don't pair with pause() first -- suspend()/resume() are async and racing them
// here left the AudioContext stuck suspended)
platform.resume();
}
});
+2 -2
View File
@@ -154,8 +154,8 @@ export class SourceEditor implements ProjectView {
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+shift+backspace', 'Delete Line', deleteLine),
//mk('mod+/', 'Toggle Comment', toggleComment),
mk('mod+z', 'Undo', undo),
mk('mod+shift+z', 'Redo', redo),
];
+1 -1
View File
@@ -12,7 +12,7 @@ import { disassembleF8 } from "../common/cpu/disasmF8";
import { hex, printFlags } from "../common/util";
var CHANNELF_PRESETS = [
{ id: 'hello.dasm', name: 'Hello World (ASM)' },
//{ id: 'hello.dasm', name: 'Hello World (ASM)' },
];
function cpuStateToLongString_F8(c): string {
+1 -1
View File
@@ -12,7 +12,7 @@ const GALAXIAN_PRESETS = [
class GalaxianPlatform extends BaseZ80MachinePlatform<GalaxianMachine> implements Platform {
newMachine() { return new GalaxianMachine(); }
getPresets() { return GALAXIAN_PRESETS; }
getPresets() { return []; }
readAddress(a) { return this.machine.readConst(a); }
readVRAMAddress(a) { return (a < 0x800) ? this.machine.vram[a] : this.machine.oram[a-0x800]; }
// TODO loadBIOS(bios) { this.machine.loadBIOS(a); }
+10 -5
View File
@@ -4,12 +4,17 @@ import { PLATFORMS } from "../common/emu";
import { disassembleSM83 } from "../common/cpu/disasmSM83";
const GB_PRESETS: Preset[] = [
{ id: 'hello.c', name: 'Hello World (C)' },
{ id: 'testdrawing.c', name: 'Drawing Routines (C)' },
{ id: 'testphys.c', name: 'Sprite Test (C)' },
{ id: 'hello.c', name: 'Hello World', category: 'C' },
{ id: 'testdrawing.c', name: 'Drawing Routines' },
{ id: 'testphys.c', name: 'Joypad Sprite' },
{ id: 'sprites.c', name: 'Multiple Sprites' },
{ id: 'metasprites.c', name: 'Metasprites' },
{ id: 'scroll.c', name: 'Scrolling' },
{ id: 'music.c', name: 'Music Player' },
{ id: 'siegegame.c', name: 'Siege Game' },
{ id: 'chase.c', name: "Shiru's Chase Game" },
{ id: 'pakupaku.c', name: 'Paku Paku' },
{ id: 'hello.sgb', name: 'Hello World (ASM)' },
{ id: 'hello.sgb', name: 'Hello World (ASM)', category: 'assembler' },
{ id: 'main.wiz', name: 'Snake Game (Wiz)' },
];
@@ -76,7 +81,7 @@ class GameBoyPlatform extends BaseMachinePlatform<GameBoyMachine> implements Pla
}
const GBC_PRESETS: Preset[] = [
{ id: 'hello_color.c', name: 'Hello Color World (C)' },
//{ id: 'hello_color.c', name: 'Hello Color World (C)' },
];
class GameBoyColorPlatform extends GameBoyPlatform {
+1 -1
View File
@@ -5,7 +5,7 @@ import { KIM1 } from "../machine/kim1";
import { Base6502MachinePlatform } from "../common/baseplatform";
var KIM1_PRESETS = [
{id:'hello.dasm', name:'Hello World (ASM)'},
//{id:'hello.dasm', name:'Hello World (ASM)'},
];
class KIM1Platform extends Base6502MachinePlatform<KIM1> implements Platform {
-1
View File
@@ -587,6 +587,5 @@ class NESMAMEPlatform extends BaseMAME6502Platform implements Platform {
///
PLATFORMS['nes'] = JSNESPlatform;
PLATFORMS['nes-asm'] = JSNESPlatform;
PLATFORMS['nes.mame'] = NESMAMEPlatform;
-1
View File
@@ -835,4 +835,3 @@ var VerilogVGAPlatform = function(mainElement, options) {
PLATFORMS['verilog'] = VerilogPlatform;
PLATFORMS['verilog-vga'] = VerilogVGAPlatform;
PLATFORMS['verilog-test'] = VerilogPlatform;
+28 -3
View File
@@ -60,6 +60,15 @@ export interface BuildOptions {
const DEFAULT_TIMEOUT = 120000;
// skip these platforms, they aren't ready yet or otherwise broken
const SKIP_PLATFORMS = [
'atari8-800xl.mame',
'vector-ataribw',
'williams-defender',
'astrocade-arcade',
'mcr',
];
// Load every platform module so it registers itself in PLATFORMS. A couple of
// them touch the DOM at import time and can't run here; they're reported
// rather than hidden.
@@ -144,7 +153,9 @@ function listSkeletons(dir: string, platform: string, skelTools: { [name: string
// be named several times; it is built once, under the first platform that
// claims it.
export async function listPresets(
filter?: string, platform?: string, warn: (s: string) => void = () => { }
filter?: string, platform?: string,
warn: (s: string) => void = () => { },
err: (s: string) => void = () => { }
): Promise<PresetEntry[]> {
await importAllPlatforms(warn);
const found: PresetEntry[] = [];
@@ -160,11 +171,16 @@ export async function listPresets(
found.push(e);
};
for (const id of Object.keys(PLATFORMS).sort()) {
if (SKIP_PLATFORMS.includes(id)) continue;
let presets: { id: string }[];
let plat: any;
try {
plat = new PLATFORMS[id](null);
presets = plat.getPresets ? plat.getPresets() : [];
if (presets.length === 0) {
warn(`platform ${id}: no presets listed in getPresets()`);
}
} catch (e) {
warn(`platform ${id}: ${e}`);
continue;
@@ -178,6 +194,7 @@ export async function listPresets(
if (!seen.has(relpath) && !fs.existsSync(path.join(PRESETS_DIR, relpath))) {
missing[id] = (missing[id] || 0) + 1;
seen.add(relpath);
warn(`platform ${id}: ${relpath} not found`);
continue;
}
const tool = toolForPreset(relpath, id, plat);
@@ -187,7 +204,7 @@ export async function listPresets(
for (const skel of listSkeletons(dir, id, skelTools)) keep(skel);
}
for (const id of Object.keys(missing).sort()) {
warn(`platform ${id}: ${missing[id]} preset(s) not in presets/${getBasePlatform(id)}/`);
err(`platform ${id}: ${missing[id]} preset(s) not in presets/${getBasePlatform(id)}/`);
}
found.sort((a, b) => a.preset < b.preset ? -1 : a.preset > b.preset ? 1 : 0);
return found;
@@ -433,8 +450,13 @@ async function main() {
const timeout = arg(argv, 'timeout') ? parseInt(arg(argv, 'timeout')) : undefined;
const warnings: string[] = [];
const presets = await listPresets(filter, platform, (w) => warnings.push(w));
const errors: string[] = [];
const presets = await listPresets(filter, platform, (w) => warnings.push(w), (e) => errors.push(e));
for (const w of warnings) console.log(dim(`note: ${w}`));
for (const e of errors) console.log(red(`error: ${e}`));
if (errors.length) {
console.error(red(`aborting: ${errors.length} platform(s) list preset files that don't exist`));
}
console.log(bold(`building ${presets.length} presets...`));
const results = await buildAllPresets({
presets, timeout, verbose, onResult: (r) => {
@@ -472,6 +494,9 @@ async function main() {
if (baseline) {
process.exit(compareToBaseline(results, baseline) ? 1 : 0);
}
if (errors.length) {
process.exit(1);
}
}
if (require.main === module) {