2022-09-16 04:59:21 +00:00
import { a as um0 , b as ca3 , c as ua3 } from "./chunk-PP6TWFIY.js" ; import "./chunk-5SHCNQ2O.js" ; import { j as cm0 , w as zP } from "./chunk-YLYWUMYM.js" ; import { I as em0 , J as EF , O as rm0 , P as km0 , S as im0 , T as fm0 , V as E7 , X as nm0 , Y as tm0 , m as $y0 , q as xP } from "./chunk-ATS7PSQG.js" ; import { b as LF , c as ta3 , e as qy0 } from "./chunk-5XVCUSSZ.js" ; var om0 = ta3 ( ( rR , vZ ) => { var IZ = { } ; ( function ( ) { var y ; y || ( y = typeof IZ != "undefined" ? IZ : { } ) ; 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 , If , G7 , rk ; oe ? ( Y4 = W9 ? LF ( "path" ) . dirname ( Y4 ) + "/" : _ _dirname + "/" , Nn = function ( p , H ) { var f0 = FI ( p ) ; return f0 ? H ? f0 : f0 . toString ( ) : ( G7 || ( G7 = LF ( "fs" ) ) , rk || ( rk = LF ( "path" ) ) , p = rk . normalize ( p ) , G7 . readFileSync ( p , H ? null : "utf8" ) ) } , If = 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 vZ != "undefined" && ( vZ . exports = y ) , process . on ( "uncaughtException" , function ( p ) { if ( ! ( p instanceof gq ) ) throw p } ) , process . on ( "unhandledRejection" , p7 ) , J9 = function ( p ) { process . exit ( p ) } , y . inspect = function ( ) { return "[Emscripten Module object]" } ) : vk ? ( typeof read != "undefined" && ( Nn = function ( p ) { var H = FI ( p ) ; return H ? lq ( H ) : read ( p ) } ) , If = function ( p ) { var H ; return ( H = FI ( 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 = FI ( p ) ) return lq ( p ) ; throw f0 } } , W9 && ( If = 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 = FI ( 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 vf = 0 , Mc ; y . wasmBinary && ( Mc = y . wasmBinary ) ; var gu = y . noExitRuntime || ! 0 ; function Mg ( ) { this . buffer = new ArrayBuffer ( D4 / 65536 * 65536 ) } function fR ( ) { } function qt ( ) { this . exports = function ( H ) { function f0 ( Gr ) { return Gr . set = function ( ls , B5 ) { this [ ls ] = B5 } , Gr . get = function ( ls ) { return this [ ls ] } , 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 , ls , B5 ) { for ( var Z , n4 , e = 0 , V = ls , W7 = B5 . length , O = ls + ( 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 , " qTIAAKoyAACrMgAArDIAAK0yAABONHdhc20yNENvbnN0YW50RXhwcmVzc2lvblJ1bm5lcklOU18xN0NFeHByZXNzaW9uUnVubmVyRUUyME5vbmNvbnN0YW50RXhjZXB0aW9uRQBnZXRDb25zdEV4cHJlc3Npb24AbWFrZUNvbnN0YW50RXhwcmVzc2lvbgBzaXplIDw9IG51bUNodW5rcyAqIENIVU5LX1NJWkUAYWxsb2NTcGFjZQB2YWx1ZS5pc051bGwoKSAmJiAidW5leHBlY3RlZCBub24tbnVs
2022-09-14 04:33:52 +00:00
` )):typeof readline=="function"&&(H=readline(),H!==null&&(H+= `
` ));if(!H)return null;p.input=wR(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=[])}},Bm0={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=[])}},O4={mu:null,pu:function(){return O4.createNode(null,"/",16895,0)},createNode:function(p,H,f0,W){if((f0&61440)==24576||(f0&61440)==4096)throw new hk(63);return O4.mu||(O4.mu={dir:{node:{qu:O4.hu.qu,nu:O4.hu.nu,lookup:O4.hu.lookup,yu:O4.hu.yu,rename:O4.hu.rename,unlink:O4.hu.unlink,rmdir:O4.hu.rmdir,readdir:O4.hu.readdir,symlink:O4.hu.symlink},stream:{ru:O4.ju.ru}},file:{node:{qu:O4.hu.qu,nu:O4.hu.nu},stream:{ru:O4.ju.ru,read:O4.ju.read,write:O4.ju.write,Mu:O4.ju.Mu,Uu:O4.ju.Uu,Wu:O4.ju.Wu}},link:{node:{qu:O4.hu.qu,nu:O4.hu.nu,readlink:O4.hu.readlink},stream:{}},Nu:{node:{qu:O4.hu.qu,nu:O4.hu.nu},stream:Gm0}}),f0=iq(p,H,f0,W),(f0.mode&61440)==16384?(f0.hu=O4.mu.dir.node,f0.ju=O4.mu.dir.stream,f0.gu={}):(f0.mode&61440)==32768?(f0.hu=O4.mu.file.node,f0.ju=O4.mu.file.stream,f0.ku=0,f0.gu=null):(f0.mode&61440)==40960?(f0.hu=O4.mu.link.node,f0.ju=O4.mu.link.stream):(f0.mode&61440)==8192&&(f0.hu=O4.mu.Nu.node,f0.ju=O4.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&&O4.jv(p,H.size)},lookup:function(){throw sR[44]},yu:function(p,H,f0,W){return O4.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=O4.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(O4.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){O4.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.g
2022-09-16 04:59:21 +00:00
` },"%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()+(gR(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 x5=FZ(new Date(d9.lu+1900,0,1),d9.Du);return 0>U(x5,X4)?"53":0>=U(v4,x5)?"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()+(gR(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?"+":"-")+String("0000"+(d9/60*100+d9%60)).slice(-4)},"%Z":function(d9){return d9.rv},"%%":function(){return"%"}};for(P4 in mi)0<=f0.indexOf(P4)&&(f0=f0.replace(new RegExp(P4,"g"),mi[P4](W)));return P4=wR(f0,!1),P4.length>H?0:(wt.set(P4,p),P4.length-1)}function oq(p,H,f0,W){p||(p=this),this.parent=p,this.pu=p.pu,this.zu=null,this.id=ym0++,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(),KB=Array(4096),nq(O4,"/"),bl("/tmp"),bl("/home"),bl("/home/web_user"),function(){bl("/dev"),AR(259,{read:function(){return 0},write:function(H,f0,W,S){return S}}),pZ("/dev/null",259), $ P(1280,dm0), $ P(1536,Bm0),pZ("/dev/tty",1280),pZ("/dev/tty1",1536);var p=Im0();PB("random",p),PB("urandom",p),bl("/dev/shm"),bl("/dev/shm/tmp")}(),function(){bl("/proc");var p=bl("/proc/self");bl("/proc/self/fd"),nq({pu:function(){var H=iq(p,"fd",16895,73);return H.hu={lookup:function(f0,W){var S=EB[+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 Vm0=!1;function wR(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 Wk=p.charCodeAt(++U);O3=65536+((O3&1023)<<10)|Wk&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&&(Vm0&&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 Ym0=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 FI(p){if(LP(p)){if(p=p.slice(EP.length),typeof
2022-09-14 04:33:52 +00:00
` },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+ `
2022-09-16 04:59:21 +00:00
` },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 Er(()=>y._BinaryenModuleRunPasses(p,Q5(W.map(Wr)),W.length))},H.runPassesOnFunction=function(W,S){return typeof W=="string"&&(W=H.getFunction(W)),Er(()=>y._BinaryenFunctionRunPasses(W,p,Q5(S.map(Wr)),S.length))},H.autoDrop=function(){return y._BinaryenModuleAutoDrop(p)},H.dispose=function(){y._BinaryenModuleDispose(p)},H.emitBinary=function(W){return Er(()=>{var S=d5(Mm0());y._BinaryenModuleAllocateAndWrite(S,p,Wr(W));let u0=Lr[S>>>2],U=Lr[(S>>>2)+1];S=Lr[(S>>>2)+2];try{let O3=new Uint8Array(U);return O3.set( $ t.subarray(u0,u0+U)),typeof W=="undefined"?O3:{binary:O3,sourceMap:Zk(S)}}finally{Qg(u0),S&&Qg(S)}})},H.interpret=function(){return y._BinaryenModuleInterpret(p)},H.addDebugInfoFileName=function(W){return Er(()=>y._BinaryenModuleAddDebugInfoFileName(p,Wr(W)))},H.getDebugInfoFileName=function(W){return Zk(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 Er(()=>y._RelooperAddBranchForSwitch(f0,W,Q5(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 Er(()=>!!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 Xa(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:Zk(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:Zk(y._BinaryenLoopGetName(p)),body:y._BinaryenLoopGetBody(p)};case y.BreakId:return{id:H,type:f0,name:Zk(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=>Zk(S)),defaultName:Zk(y._BinaryenSwitchGetDefaultName(p)),condition:y._BinaryenSwitchGetCondition(p),value:y._BinaryenSwitchGetValue(p)};case y.CallId:return{id:H,type:f0,isReturn:!!y._BinaryenCallIsReturn(p),target:Zk(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
2022-09-14 04:33:52 +00:00
` },y._BinaryenExpressionPrint(p),mn=H,f0},Object.defineProperty(y,"readBinary",{writable:!0}),y.readBinary=function(p){let H=wA(p,0);return p=y._BinaryenModuleRead(H,p.length),Qg(H),xZ(p)},y.parseText=function(p){let H=RI(p.length+1);return ml(p,H),p=y._BinaryenModuleParse(H),Qg(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 Er(()=>{let H=y._BinaryenGetPassArgument(Wr(p));return H!==0?Zk(H):null})},y.setPassArgument=function(p,H){Er(()=>{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 xg=Symbol();function I4(p){function H(f0){if(!(this instanceof H))return f0?new H(f0):null;os.call(this,f0)}return Object.assign(H,os),Object.assign(H,p),(H.prototype=Object.create(os.prototype)).constructor=H,dR(H.prototype,p),H}function dR(p,H){Object.keys(H).forEach(f0=>{let W=H[f0];if(typeof W=="function"){p[f0]=function(...u0){return this.constructor[f0](this[xg],...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[xg])},set(O3){if(U)U(this[xg],O3);else throw Error("property '"+u0+"' has no setter")}})}}})}function os(p){if(!p)throw Error("expression reference must not be null");this[xg]=p}os.getId=function(p){return y._BinaryenExpressionGetId(p)},os.getType=function(p){return y._BinaryenExpressionGetType(p)},os.setType=function(p,H){y._BinaryenExpressionSetType(p,H)},os.finalize=function(p){return y._BinaryenExpressionFinalize(p)},os.toText=function(p){return y.emitText(p)},dR(os.prototype,os),os.prototype.valueOf=function(){return this[xg]},y.Expression=os,y.Block=I4({getName(p){return(p=y._BinaryenBlockGetName(p))?Zk(p):null},setName(p,H){Er(()=>{y._BinaryenBlockSetName(p,Wr(H))})},getNumChildren(p){return y._BinaryenBlockGetNumChildren(p)},getChildren(p){return P7(p,y._BinaryenBlockGetNumChildren,y._BinaryenBlockGetChildAt)},setChildren(p,H){Xa(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))?Zk(p):null},setName(p,H){Er(()=>{y._
` );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 s4(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 s4(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(gA(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)&&VI(W9.expr))q0[W9.index]=W9.expr.cvalue;else throw new s4(q,"non-const expr in initarray")}return q0}throw new s4(q, ` no default value for var type : $ { P0 . name } ` )}constValue(q){if(VI(q))return q.cvalue;throw new s4(q,"no const value for expr")}block2js(q){return this.expr2js(q)}expr2js(q,P0){if(q==null)return"/*null*/";if(Va(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 s4(q, ` cannot find variable '${q.refname}' ` )}else if(gZ(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 s4(q,"can't init array here");K7(q.dtype)&&q.dtype.left>31&&(W9+=" = []")}return W9}else{if(VI(q))return ` 0 x$ { q . cvalue . toString ( 16 ) } ` ;if(KF(q))return q.bigvalue.toString();if(PF(q))switch(q.op){case"if":return q.right==null||wZ(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 s4(q, ` unknown triop $ { q . op } ` )}else if(Yg(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=sa3[q.op];if(!q0)throw new s4(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 s4(q, ` unknown unop $ { q . op } ` )}else if(wZ(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(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(Va(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(gA(q.dtype)){if(K7(q.dtype.subtype))return ` $ { this . expr2js ( q ) } . fill ( 0 ) ` ;if(gA(q.dtype.subtype)&&K7(q.dtype.subtype.subtype))return ` $ { this . expr2js ( q ) } . forEach ( ( a ) => a . fill ( 0 ) ) ` ;throw new s4(q, ` unsupported data type for reset : $ { JSON . stringify ( q . dtype ) } ` )}}else throw new s4(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(G7=>G7!=0),oe.reverse();var Y4= $ y0(oe),Nn=this.getFileData(Y4);if(Nn==null)throw new s4(null,"Could not $ readmem '"+Y4+"'");var If=Nn.split( `
` ).filter(G7=>G7!=="").map(G7=>parseInt(G7,W9?16:2));if(console.log(" $ readmem",W9,Y4,If.length),q0===null)throw new s4(null,"No destination array to $ readmem "+Y4);if(q0.length<If.length)throw new s4(null,"Destination array too small to $ readmem "+Y4);for(vk=0;vk<If.length;vk++)q0[vk]=If[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 xP(!0,{},this.state)}getGlobals(){return this.saveState()}loadState(q){xP(!0,this.state,q)}},sa3={eq:"?===",neq:"?!==",gt:"?>",lt:"?<",gte:"?>=",lte:"?<=",and:"&",or:"|",xor:"^",add:"+",sub:"-",shiftr:">>>",shiftl:"<<",mul:"*",moddiv:"%",div:"/",muls:"*",moddivs:"%",divs:"/",gts:"?>",gtes:"?>=",lts:"?<",ltes:"?<="};var mk=qy0(om0());var Aa3=["_ctor_var_reset","_eval_initial","_eval_settle","_eval","_change_request"],Xg=0,lm0=" $ $ MEM",oa3=" $ $ GLOBAL",jP=" $ $ CHANGE",SP=" $ $ treclen",JP=" $ $ tofs",DP=" $ $ tend",_P=" $ $ 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(gA(y))return(Math.abs(y.high.cvalue-y.low.cvalue)+1)*Pt(y.subtype);throw new s4(y,"don't know data type")}function la3(y){return Pt(y)>8}function am0(y){return gA(y)?am0(y.subtype):Pt(y)}function hm0(y){if(yl(y)&&gA(y.dtype))return Pt(y.dtype.subtype);throw yl(y)&&K7(y.dtype)&&y.dtype.left>63?new s4(y,"elements > 64 bits not supported"):new s4(y,"cannot figure out array element size")}function aa3(y){return Pt(kR(y))}function kR(y){if(Va(y)){for(var q=y.dtype;gA(q);)q=q.subtype;return q}else{if(Yg(y)&&y.op=="arraysel")return kR(y.left);if(Yg(y)&&y.op=="wordsel")return kR(y.left)}throw new s4(y,"cannot figure out array value type")}function ha3(y){return y<=1?1:y<=2?2:y<=4?4:8}function iR(y){return y<=4?mk.i32:y<=8?mk.i64:mk.none}var TP=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(ha3(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]}},dZ=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(Xg),this.instance.exports._eval_initial(Xg);for(var q=0;q<100;q++){this.instance.exports._eval_settle(Xg),this.instance.exports._eval(Xg);var P0=this.instance.exports._change_request(Xg);if(!P0)return}throw new s4(null,"model did not converge on reset()")}eval(){this.instance.exports.eval(Xg)}tick(){this.state.clk^=1,this.eval()}tick2(q){this.instance.exports.tick2(Xg,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-
2022-09-16 04:59:21 +00:00
` ).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(SP).offset,q0=this.globals.lookup(JP).offset,J9=this.globals.lookup(DP).offset,le=this.globals.lookup(_P).offset;var W9=mk.i32,oe=mk.none,vk=this.label("@block"),Y4=this.label("@loop");q.addFunction("copyTraceRec",mk.createType([]),oe,[W9,W9,W9],q.block(vk,[q.local.set(0,q.i32.const(Xg)),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,mk.i32);q.addFunction("tick2",mk.createType([mk.i32,mk.i32]),mk.none,[],q.loop(P0,q.block(null,[this.makeSetVariableFunction("clk",0),q.drop(q.call("eval",[q0],mk.i32)),this.makeSetVariableFunction("clk",1),q.drop(q.call("eval",[q0],mk.i32)),q.call("copyTraceRec",[],mk.none),q.br_if(P0,q.local.tee(1,q.i32.sub(q.local.get(1,mk.i32),q.i32.const(1)),mk.i32))]))),q.addFunctionExport("tick2","tick2")}else q.addFunctionExport("eval","tick2")}addEvalFunction(){this.bmod.addFunction("eval",mk.createType([mk.i32]),mk.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,mk.i32);return q>this.maxEvalIterations?this.bmod.i32.const(q):this.bmod.block(null,[this.bmod.call("_eval",[P0],mk.none),this.bmod.if(this.bmod.call("_change_request",[P0],mk.i32),this.makeTickFuncBody(q+1),this.bmod.return(this.bmod.local.get(0,mk.i32)))],mk.i32)}funcResult(q){return q.startsWith("_change_request")?mk.i32:q==" $ time"?mk.i64:q==" $ rand"?mk.i32:mk.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==mk.i32)return this.bmod.i32;if(q0==mk.i64)return this.bmod.i64;throw new s4(q,"data types > 64 bits not supported")}i3264rel(q){if(yl(q.left)&&yl(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 s4(q, ` can ' t $ { q . op } arguments ` )}dataptr(){return this.bmod.local.get(0,mk.i32)}e2w(q,P0){if(q==null)return this.bmod.nop();if(wZ(q))return this.block2wasm(q,P0);if(gZ(q))return this.local2wasm(q,P0);if(Va(q))return this.varref2wasm(q,P0);if(VI(q)||KF(q))return this.const2wasm(q,P0);if( $ F(q))return this.funccall2wasm(q,P0);if(OF(q)||Yg(q)||PF(q)||qF(q)){var q0= ` _$ { q . op } 2 wasm ` ,J9=this[q0];if(J9==null)throw new s4(q, ` no such method $ { q0 } ` );return this[q0](q,P0)}else throw new s4(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):mk.none;return J9==mk.i32&&q0.push(this.bmod.return(this.bmod.local.get(this.locals.lookup(jP).index,J9))),P0&&P0.resulttype&&(J9=mk.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,P
` ),Ni=Lr.message+ `
` ,df=0;df<D4.length;df++)df>Lr.lineNumber-5&&df<Lr.lineNumber+5&&(Ni+=D4[df]+ `
` );console.log(Ni)}}dispose(){rk&&(rk.dispose(),rk=null)}async loadROM(Lr,Ei){var D4=Ei,Ni=D4.modules.TOP;if(D4.modules&&Ni){var df=!0,It=df?dZ:_B,Z7=new It(Ni,D4.modules["@CONST-POOL@"]);Z7.getFileData=this.sourceFileFetch,await Z7.init(),this.dispose(),rk=Z7;var wu=[];for(var TB in Ni.vardefs){var Iu=Ni.vardefs[TB];K7(Iu.dtype)&&wu.push({name:TB,label:Iu.origName,input:Iu.isInput,output:Iu.isOutput,len:Iu.dtype.left+1})}if(qt=wu,Ba3||(qt=qt.filter(Ng=>!Ng.label.startsWith("__V"))),v5=0,rk instanceof dZ&&(rk.randomizeOnReset=!0),this.hasvideo=rk.state.vsync!=null&&rk.state.hsync!=null&&rk.state.rgb!=null,this.hasvideo){let Ng=["clk","reset"];qt=qt.filter(Fg=>Ng.indexOf(Fg.name)<0),this.showVideoControls()}else this.hideVideoControls()}rk.powercycle(),Ei.program_rom&&Ei.program_rom_variable&&(rk.state[Ei.program_rom_variable]?rk.state[Ei.program_rom_variable].length!=Ei.program_rom.length?alert("ROM size mismatch -- expected "+rk.state[Ei.program_rom_variable].length+" got "+Ei.program_rom.length):rk.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 Lr=rk&&rk.state.spkr!=null&&IA>1;q0&&!Lr?(q0.stop(),q0=null):!q0&&Lr&&(q0=new cm0(mn*this.getFrameRate()),this.isRunning()&&q0.start())}isRunning(){return If&&If.isRunning()}pause(){If.stop(),q0&&q0.stop()}resume(){If.start(),q0&&q0.start()}isBlocked(){return rk&&rk.isFinished()}isStopped(){return rk&&rk.isStopped()}setFrameRate(Lr){IA=Lr;var Ei=Math.min(60,Lr*mn);if(!If||If.frameRate!=Ei){var D4=this.isRunning();If&&If.stop(),If=new fm0(Ei,G7),D4&&If.start()}q0&&(q0.stop(),q0=null),this.restartAudio()}getFrameRate(){return IA}reset(){!rk||(v5=0,Wf&&Wf.fill(0),P0&&P0.setRotate(rk.state.rotate?-90:0), $ ("#verilog_bar").hide(),this.hasvideo?(rk.state.reset=1,rk.tick2(100),rk.state.reset=0):(rk.state.reset=1,this.resume()))}tick(){!rk||rk.tick2(1)}getToolForFilename(Lr){return Lr.endsWith(".asm")?"jsasm":Lr.endsWith(".ice")?"silice":"verilator"}getDefaultExtension(){return".v"}inspect(Lr){if(!!rk){if(!Lr||!Lr.match(/^ \w + $ /)){Mc=gu=null;return}var Ei;for(let D4 in rk.state)(D4==Lr||D4.endsWith(" $ "+Lr))&&(Lr=D4,Ei=rk.state[Lr]);typeof Ei=="number"?(Mc=rk.state,gu=Lr):Mc=gu=null}}getDebugTree(){return{runtime:rk,state:rk&&rk.getGlobals()}}saveState(){return{o:rk&&rk.saveState()}}loadState(Lr){Lr.o&&rk.loadState(Lr.o)}saveControlsState(){return{p1x:P0.paddle_x,p1y:P0.paddle_y,sw0:Fn[0],sw1:Fn[1],sw2:Fn[2],keycode:vf}}loadControlsState(Lr){P0.paddle_x=Lr.p1x,P0.paddle_y=Lr.p1y,Fn[0]=Lr.sw0,Fn[1]=Lr.sw1,Fn[2]=Lr.sw2,vf=Lr.keycode}getDownloadFile(){if(rk instanceof _B)return{extension:".js",blob:new Blob([rk.getJSCode()],{type:"text/plain"})};if(rk instanceof dZ)return{extension:".wat",blob:new Blob([rk.bmod.emitText()],{type:"text/plain"})}}getHDLModuleRunner(){return rk}showHelp(){return"https://8bitworkshop.com/docs/platforms/verilog/"}}return new BZ},ya3=[{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"}],ma3=function(y,q){this.__proto__=new UP(y,q),this.getPresets=function(){return ya3},this.setVideoParams(800-64,520,25e6)};EF.verilog=UP;EF["verilog-vga"]=ma3;EF["verilog-test"]=UP;
//# sourceMappingURL=verilog-YLF2L3BG.js.map