akarisub 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -32,6 +32,20 @@ AkariSub is a JS wrapper for <a href="https://github.com/libass/libass">libass</
32
32
  - **TypeScript Support** - Full TypeScript definitions and type safety
33
33
  - **Updated Dependencies** - All dependencies updated to their latest versions, including libass
34
34
 
35
+ ## Installation
36
+
37
+ ```bash
38
+ npm install akarisub
39
+ # or
40
+ bun add akarisub
41
+ ```
42
+
43
+ For JSR:
44
+
45
+ ```bash
46
+ deno add jsr:@altq/akarisub
47
+ ```
48
+
35
49
  ## Usage
36
50
 
37
51
  By default all you need to do is copy the files from the `dist/` folder of the repository into the same folder as where your JS runs, then do:
@@ -1,4 +1,4 @@
1
- (()=>{async function n1(G={}){var O,j=G,U=(...J)=>console.log(...J),N=(...J)=>console.error(...J);function P(){v?.(j)}var Y=!!globalThis.WorkerGlobalScope;(function(){var J=typeof WebAssembly<"u"&&WebAssembly.instantiateStreaming;if(!J)return;WebAssembly.instantiateStreaming=function(Z,Q){var K=null,X=Promise.resolve(Z).then(function(z){return K=z.clone(),z});return J.call(WebAssembly,X,Q).catch(function(z){if(console.warn("[AkariSub] instantiateStreaming failed, using ArrayBuffer fallback:",z&&z.message||z),!K)throw z;return K.arrayBuffer().then(function(W){return WebAssembly.instantiate(W,Q)})})}})(),U=(J)=>{if(J==="AkariSub: No usable fontconfig configuration file found, using fallback."||J.startsWith("Unable to revert mtime:")||J.trim()==="")console.debug(J);else console.log(J)},N=(J)=>{if(J==="Fontconfig error: Cannot load default config file: No such file: (null)"||J==="Fontconfig error: Cannot load default config file: File not found"||J==="Fontconfig error: No writable cache directories"||J.includes("/var/cache/fontconfig")||J.includes("/.cache/fontconfig")||J.includes("/.local/share/fonts"))console.debug(J);else console.error(J)};function w(J){throw J}var v,a,l=!1;function x(){var J=g.buffer;k=new Int8Array(J),D=new Int16Array(J),b=new Uint8Array(J),h=new Uint16Array(J),L=new Int32Array(J),B=new Uint32Array(J),S=new Float32Array(J),M=new Float64Array(J),H=new BigInt64Array(J),o=new BigUint64Array(J)}function n(){{var J=16777216;g=new WebAssembly.Memory({initial:J/65536,maximum:32768})}x()}n();var D,L,H,k,S,M,h,B,o,b,T=(J)=>v0(J),s=()=>C0(),g,OJ=new TextDecoder,GJ=(J,Z,Q,K)=>{var X=Z+Q;if(K)return X;while(J[Z]&&!(Z>=X))++Z;return Z},zJ=(J,Z,Q)=>{if(!J)return"";var K=GJ(b,J,Z,Q);return OJ.decode(b.subarray(J,K))},pJ=(J,Z,Q,K)=>w(`Assertion failed: ${zJ(J)}, at: `+[Z?zJ(Z):"unknown filename",Q,K?zJ(K):"unknown function"]),p={isAbs:(J)=>J.charAt(0)==="/",splitPath:(J)=>{var Z=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return Z.exec(J).slice(1)},normalizeArray:(J,Z)=>{var Q=0;for(var K=J.length-1;K>=0;K--){var X=J[K];if(X===".")J.splice(K,1);else if(X==="..")J.splice(K,1),Q++;else if(Q)J.splice(K,1),Q--}if(Z)for(;Q;Q--)J.unshift("..");return J},normalize:(J)=>{var Z=p.isAbs(J),Q=J.slice(-1)==="/";if(J=p.normalizeArray(J.split("/").filter((K)=>!!K),!Z).join("/"),!J&&!Z)J=".";if(J&&Q)J+="/";return(Z?"/":"")+J},dirname:(J)=>{var Z=p.splitPath(J),Q=Z[0],K=Z[1];if(!Q&&!K)return".";if(K)K=K.slice(0,-1);return Q+K},basename:(J)=>J&&J.match(/([^\/]+|\/)\/*$/)[1],join:(...J)=>p.normalize(J.join("/")),join2:(J,Z)=>p.normalize(J+"/"+Z)},e0=()=>(J)=>crypto.getRandomValues(J),ZZ=(J)=>{(ZZ=e0())(J)},yJ={resolve:(...J)=>{var Z="",Q=!1;for(var K=J.length-1;K>=-1&&!Q;K--){var X=K>=0?J[K]:$.cwd();if(typeof X!="string")throw TypeError("Arguments to path.resolve must be strings");else if(!X)return"";Z=X+"/"+Z,Q=p.isAbs(X)}return Z=p.normalizeArray(Z.split("/").filter((z)=>!!z),!Q).join("/"),(Q?"/":"")+Z||"."},relative:(J,Z)=>{J=yJ.resolve(J).slice(1),Z=yJ.resolve(Z).slice(1);function Q(R){var m=0;for(;m<R.length;m++)if(R[m]!=="")break;var I=R.length-1;for(;I>=0;I--)if(R[I]!=="")break;if(m>I)return[];return R.slice(m,I-m+1)}var K=Q(J.split("/")),X=Q(Z.split("/")),z=Math.min(K.length,X.length),W=z;for(var V=0;V<z;V++)if(K[V]!==X[V]){W=V;break}var q=[];for(var V=W;V<K.length;V++)q.push("..");return q=q.concat(X.slice(W)),q.join("/")}},RJ=(J,Z=0,Q,K)=>{var X=GJ(J,Z,Q,K);return OJ.decode(J.buffer?J.subarray(Z,X):new Uint8Array(J.slice(Z,X)))},$Z=[],fJ=(J)=>{var Z=0;for(var Q=0;Q<J.length;++Q){var K=J.charCodeAt(Q);if(K<=127)Z++;else if(K<=2047)Z+=2;else if(K>=55296&&K<=57343)Z+=4,++Q;else Z+=3}return Z},FZ=(J,Z,Q,K)=>{if(!(K>0))return 0;var X=Q,z=Q+K-1;for(var W=0;W<J.length;++W){var V=J.codePointAt(W);if(V<=127){if(Q>=z)break;Z[Q++]=V}else if(V<=2047){if(Q+1>=z)break;Z[Q++]=192|V>>6,Z[Q++]=128|V&63}else if(V<=65535){if(Q+2>=z)break;Z[Q++]=224|V>>12,Z[Q++]=128|V>>6&63,Z[Q++]=128|V&63}else{if(Q+3>=z)break;Z[Q++]=240|V>>18,Z[Q++]=128|V>>12&63,Z[Q++]=128|V>>6&63,Z[Q++]=128|V&63,W++}}return Z[Q]=0,Q-X},QZ=(J,Z,Q)=>{var K=Q>0?Q:fJ(J)+1,X=Array(K),z=FZ(J,X,0,X.length);if(Z)X.length=z;return X},J1=()=>{if(!$Z.length){var J=null;if(!J)return null;$Z=QZ(J,!0)}return $Z.shift()},NJ={ttys:[],init(){},shutdown(){},register(J,Z){NJ.ttys[J]={input:[],output:[],ops:Z},$.registerDevice(J,NJ.stream_ops)},stream_ops:{open(J){var Z=NJ.ttys[J.node.rdev];if(!Z)throw new $.ErrnoError(43);J.tty=Z,J.seekable=!1},close(J){J.tty.ops.fsync(J.tty)},fsync(J){J.tty.ops.fsync(J.tty)},read(J,Z,Q,K,X){if(!J.tty||!J.tty.ops.get_char)throw new $.ErrnoError(60);var z=0;for(var W=0;W<K;W++){var V;try{V=J.tty.ops.get_char(J.tty)}catch(q){throw new $.ErrnoError(29)}if(V===void 0&&z===0)throw new $.ErrnoError(6);if(V===null||V===void 0)break;z++,Z[Q+W]=V}if(z)J.node.atime=Date.now();return z},write(J,Z,Q,K,X){if(!J.tty||!J.tty.ops.put_char)throw new $.ErrnoError(60);try{for(var z=0;z<K;z++)J.tty.ops.put_char(J.tty,Z[Q+z])}catch(W){throw new $.ErrnoError(29)}if(K)J.node.mtime=J.node.ctime=Date.now();return z}},default_tty_ops:{get_char(J){return J1()},put_char(J,Z){if(Z===null||Z===10)U(RJ(J.output)),J.output=[];else if(Z!=0)J.output.push(Z)},fsync(J){if(J.output?.length>0)U(RJ(J.output)),J.output=[]},ioctl_tcgets(J){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(J,Z,Q){return 0},ioctl_tiocgwinsz(J){return[24,80]}},default_tty1_ops:{put_char(J,Z){if(Z===null||Z===10)N(RJ(J.output)),J.output=[];else if(Z!=0)J.output.push(Z)},fsync(J){if(J.output?.length>0)N(RJ(J.output)),J.output=[]}}},Z1=(J,Z)=>b.fill(0,J,J+Z),TZ=(J,Z)=>Math.ceil(J/Z)*Z,bZ=(J)=>{J=TZ(J,65536);var Z=R0(65536,J);if(Z)Z1(Z,J);return Z},A={ops_table:null,mount(J){return A.createNode(null,"/",16895,0)},createNode(J,Z,Q,K){if($.isBlkdev(Q)||$.isFIFO(Q))throw new $.ErrnoError(63);A.ops_table||={dir:{node:{getattr:A.node_ops.getattr,setattr:A.node_ops.setattr,lookup:A.node_ops.lookup,mknod:A.node_ops.mknod,rename:A.node_ops.rename,unlink:A.node_ops.unlink,rmdir:A.node_ops.rmdir,readdir:A.node_ops.readdir,symlink:A.node_ops.symlink},stream:{llseek:A.stream_ops.llseek}},file:{node:{getattr:A.node_ops.getattr,setattr:A.node_ops.setattr},stream:{llseek:A.stream_ops.llseek,read:A.stream_ops.read,write:A.stream_ops.write,mmap:A.stream_ops.mmap,msync:A.stream_ops.msync}},link:{node:{getattr:A.node_ops.getattr,setattr:A.node_ops.setattr,readlink:A.node_ops.readlink},stream:{}},chrdev:{node:{getattr:A.node_ops.getattr,setattr:A.node_ops.setattr},stream:$.chrdev_stream_ops}};var X=$.createNode(J,Z,Q,K);if($.isDir(X.mode))X.node_ops=A.ops_table.dir.node,X.stream_ops=A.ops_table.dir.stream,X.contents={};else if($.isFile(X.mode))X.node_ops=A.ops_table.file.node,X.stream_ops=A.ops_table.file.stream,X.usedBytes=0,X.contents=A.emptyFileContents??=new Uint8Array(0);else if($.isLink(X.mode))X.node_ops=A.ops_table.link.node,X.stream_ops=A.ops_table.link.stream;else if($.isChrdev(X.mode))X.node_ops=A.ops_table.chrdev.node,X.stream_ops=A.ops_table.chrdev.stream;if(X.atime=X.mtime=X.ctime=Date.now(),J)J.contents[Z]=X,J.atime=J.mtime=J.ctime=X.atime;return X},getFileDataAsTypedArray(J){return J.contents.subarray(0,J.usedBytes)},expandFileStorage(J,Z){var Q=J.contents.length;if(Q>=Z)return;var K=1048576;if(Z=Math.max(Z,Q*(Q<K?2:1.125)>>>0),Q)Z=Math.max(Z,256);var X=A.getFileDataAsTypedArray(J);J.contents=new Uint8Array(Z),J.contents.set(X)},resizeFileStorage(J,Z){if(J.usedBytes==Z)return;var Q=J.contents;J.contents=new Uint8Array(Z),J.contents.set(Q.subarray(0,Math.min(Z,J.usedBytes))),J.usedBytes=Z},node_ops:{getattr(J){var Z={};if(Z.dev=$.isChrdev(J.mode)?J.id:1,Z.ino=J.id,Z.mode=J.mode,Z.nlink=1,Z.uid=0,Z.gid=0,Z.rdev=J.rdev,$.isDir(J.mode))Z.size=4096;else if($.isFile(J.mode))Z.size=J.usedBytes;else if($.isLink(J.mode))Z.size=J.link.length;else Z.size=0;return Z.atime=new Date(J.atime),Z.mtime=new Date(J.mtime),Z.ctime=new Date(J.ctime),Z.blksize=4096,Z.blocks=Math.ceil(Z.size/Z.blksize),Z},setattr(J,Z){for(let Q of["mode","atime","mtime","ctime"])if(Z[Q]!=null)J[Q]=Z[Q];if(Z.size!==void 0)A.resizeFileStorage(J,Z.size)},lookup(J,Z){if(!A.doesNotExistError)A.doesNotExistError=new $.ErrnoError(44),A.doesNotExistError.stack="<generic error, no stack>";throw A.doesNotExistError},mknod(J,Z,Q,K){return A.createNode(J,Z,Q,K)},rename(J,Z,Q){var K;try{K=$.lookupNode(Z,Q)}catch(z){}if(K){if($.isDir(J.mode))for(var X in K.contents)throw new $.ErrnoError(55);$.hashRemoveNode(K)}delete J.parent.contents[J.name],Z.contents[Q]=J,J.name=Q,Z.ctime=Z.mtime=J.parent.ctime=J.parent.mtime=Date.now()},unlink(J,Z){delete J.contents[Z],J.ctime=J.mtime=Date.now()},rmdir(J,Z){var Q=$.lookupNode(J,Z);for(var K in Q.contents)throw new $.ErrnoError(55);delete J.contents[Z],J.ctime=J.mtime=Date.now()},readdir(J){return[".","..",...Object.keys(J.contents)]},symlink(J,Z,Q){var K=A.createNode(J,Z,41471,0);return K.link=Q,K},readlink(J){if(!$.isLink(J.mode))throw new $.ErrnoError(28);return J.link}},stream_ops:{read(J,Z,Q,K,X){var z=J.node.contents;if(X>=J.node.usedBytes)return 0;var W=Math.min(J.node.usedBytes-X,K);return Z.set(z.subarray(X,X+W),Q),W},write(J,Z,Q,K,X,z){if(Z.buffer===k.buffer)z=!1;if(!K)return 0;var W=J.node;if(W.mtime=W.ctime=Date.now(),z)W.contents=Z.subarray(Q,Q+K),W.usedBytes=K;else if(W.usedBytes===0&&X===0)W.contents=Z.slice(Q,Q+K),W.usedBytes=K;else A.expandFileStorage(W,X+K),W.contents.set(Z.subarray(Q,Q+K),X),W.usedBytes=Math.max(W.usedBytes,X+K);return K},llseek(J,Z,Q){var K=Z;if(Q===1)K+=J.position;else if(Q===2){if($.isFile(J.node.mode))K+=J.node.usedBytes}if(K<0)throw new $.ErrnoError(28);return K},mmap(J,Z,Q,K,X){if(!$.isFile(J.node.mode))throw new $.ErrnoError(43);var z,W,V=J.node.contents;if(!(X&2)&&V.buffer===k.buffer)W=!1,z=V.byteOffset;else{if(W=!0,z=bZ(Z),!z)throw new $.ErrnoError(48);if(V){if(Q>0||Q+Z<V.length)if(V.subarray)V=V.subarray(Q,Q+Z);else V=Array.prototype.slice.call(V,Q,Q+Z);k.set(V,z)}}return{ptr:z,allocated:W}},msync(J,Z,Q,K,X){return A.stream_ops.write(J,Z,0,K,Q,!1),0}}},$1=(J)=>{if(typeof J!="string")return J;var Z={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},Q=Z[J];if(typeof Q>"u")throw Error(`Unknown file open mode: ${J}`);return Q},_Z=(J)=>{if(typeof J=="string")J=QZ(J,!0);if(!J.subarray)J=new Uint8Array(J);return J},KZ=(J,Z)=>{var Q=0;if(J)Q|=365;if(Z)Q|=146;return Q},$={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,filesystems:null,syncFSRequests:0,ErrnoError:class{name="ErrnoError";constructor(J){this.errno=J}},FSStream:class{shared={};get object(){return this.node}set object(J){this.node=J}get isRead(){return(this.flags&2097155)!==1}get isWrite(){return(this.flags&2097155)!==0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(J){this.shared.flags=J}get position(){return this.shared.position}set position(J){this.shared.position=J}},FSNode:class{node_ops={};stream_ops={};readMode=365;writeMode=146;mounted=null;constructor(J,Z,Q,K){if(!J)J=this;this.parent=J,this.mount=J.mount,this.id=$.nextInode++,this.name=Z,this.mode=Q,this.rdev=K,this.atime=this.mtime=this.ctime=Date.now()}get read(){return(this.mode&this.readMode)===this.readMode}set read(J){J?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(J){J?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return $.isDir(this.mode)}get isDevice(){return $.isChrdev(this.mode)}},lookupPath(J,Z={}){if(!J)throw new $.ErrnoError(44);if(Z.follow_mount??=!0,!p.isAbs(J))J=$.cwd()+"/"+J;J:for(var Q=0;Q<40;Q++){var K=J.split("/").filter((R)=>!!R),X=$.root,z="/";for(var W=0;W<K.length;W++){var V=W===K.length-1;if(V&&Z.parent)break;if(K[W]===".")continue;if(K[W]===".."){if(z=p.dirname(z),$.isRoot(X)){J=z+"/"+K.slice(W+1).join("/"),Q--;continue J}else X=X.parent;continue}z=p.join2(z,K[W]);try{X=$.lookupNode(X,K[W])}catch(R){if(R?.errno===44&&V&&Z.noent_okay)return{path:z};throw R}if($.isMountpoint(X)&&(!V||Z.follow_mount))X=X.mounted.root;if($.isLink(X.mode)&&(!V||Z.follow)){if(!X.node_ops.readlink)throw new $.ErrnoError(52);var q=X.node_ops.readlink(X);if(!p.isAbs(q))q=p.dirname(z)+"/"+q;J=q+"/"+K.slice(W+1).join("/");continue J}}return{path:z,node:X}}throw new $.ErrnoError(32)},getPath(J){var Z;while(!0){if($.isRoot(J)){var Q=J.mount.mountpoint;if(!Z)return Q;return Q[Q.length-1]!=="/"?`${Q}/${Z}`:Q+Z}Z=Z?`${J.name}/${Z}`:J.name,J=J.parent}},hashName(J,Z){var Q=0;for(var K=0;K<Z.length;K++)Q=(Q<<5)-Q+Z.charCodeAt(K)|0;return(J+Q>>>0)%$.nameTable.length},hashAddNode(J){var Z=$.hashName(J.parent.id,J.name);J.name_next=$.nameTable[Z],$.nameTable[Z]=J},hashRemoveNode(J){var Z=$.hashName(J.parent.id,J.name);if($.nameTable[Z]===J)$.nameTable[Z]=J.name_next;else{var Q=$.nameTable[Z];while(Q){if(Q.name_next===J){Q.name_next=J.name_next;break}Q=Q.name_next}}},lookupNode(J,Z){var Q=$.mayLookup(J);if(Q)throw new $.ErrnoError(Q);var K=$.hashName(J.id,Z);for(var X=$.nameTable[K];X;X=X.name_next){var z=X.name;if(X.parent.id===J.id&&z===Z)return X}return $.lookup(J,Z)},createNode(J,Z,Q,K){var X=new $.FSNode(J,Z,Q,K);return $.hashAddNode(X),X},destroyNode(J){$.hashRemoveNode(J)},isRoot(J){return J===J.parent},isMountpoint(J){return!!J.mounted},isFile(J){return(J&61440)===32768},isDir(J){return(J&61440)===16384},isLink(J){return(J&61440)===40960},isChrdev(J){return(J&61440)===8192},isBlkdev(J){return(J&61440)===24576},isFIFO(J){return(J&61440)===4096},isSocket(J){return(J&49152)===49152},flagsToPermissionString(J){var Z=["r","w","rw"][J&3];if(J&512)Z+="w";return Z},nodePermissions(J,Z){if($.ignorePermissions)return 0;if(Z.includes("r")&&!(J.mode&292))return 2;if(Z.includes("w")&&!(J.mode&146))return 2;if(Z.includes("x")&&!(J.mode&73))return 2;return 0},mayLookup(J){if(!$.isDir(J.mode))return 54;var Z=$.nodePermissions(J,"x");if(Z)return Z;if(!J.node_ops.lookup)return 2;return 0},mayCreate(J,Z){if(!$.isDir(J.mode))return 54;try{var Q=$.lookupNode(J,Z);return 20}catch(K){}return $.nodePermissions(J,"wx")},mayDelete(J,Z,Q){var K;try{K=$.lookupNode(J,Z)}catch(z){return z.errno}var X=$.nodePermissions(J,"wx");if(X)return X;if(Q){if(!$.isDir(K.mode))return 54;if($.isRoot(K)||$.getPath(K)===$.cwd())return 10}else if($.isDir(K.mode))return 31;return 0},mayOpen(J,Z){if(!J)return 44;if($.isLink(J.mode))return 32;var Q=$.flagsToPermissionString(Z);if($.isDir(J.mode)){if(Q!=="r"||Z&576)return 31}return $.nodePermissions(J,Q)},checkOpExists(J,Z){if(!J)throw new $.ErrnoError(Z);return J},MAX_OPEN_FDS:4096,nextfd(){for(var J=0;J<=$.MAX_OPEN_FDS;J++)if(!$.streams[J])return J;throw new $.ErrnoError(33)},getStreamChecked(J){var Z=$.getStream(J);if(!Z)throw new $.ErrnoError(8);return Z},getStream:(J)=>$.streams[J],createStream(J,Z=-1){if(J=Object.assign(new $.FSStream,J),Z==-1)Z=$.nextfd();return J.fd=Z,$.streams[Z]=J,J},closeStream(J){$.streams[J]=null},dupStream(J,Z=-1){var Q=$.createStream(J,Z);return Q.stream_ops?.dup?.(Q),Q},doSetAttr(J,Z,Q){var K=J?.stream_ops.setattr,X=K?J:Z;K??=Z.node_ops.setattr,$.checkOpExists(K,63),K(X,Q)},chrdev_stream_ops:{open(J){var Z=$.getDevice(J.node.rdev);J.stream_ops=Z.stream_ops,J.stream_ops.open?.(J)},llseek(){throw new $.ErrnoError(70)}},major:(J)=>J>>8,minor:(J)=>J&255,makedev:(J,Z)=>J<<8|Z,registerDevice(J,Z){$.devices[J]={stream_ops:Z}},getDevice:(J)=>$.devices[J],getMounts(J){var Z=[],Q=[J];while(Q.length){var K=Q.pop();Z.push(K),Q.push(...K.mounts)}return Z},syncfs(J,Z){if(typeof J=="function")Z=J,J=!1;if($.syncFSRequests++,$.syncFSRequests>1)N(`warning: ${$.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var Q=$.getMounts($.root.mount),K=0;function X(V){return $.syncFSRequests--,Z(V)}function z(V){if(V){if(!z.errored)return z.errored=!0,X(V);return}if(++K>=Q.length)X(null)}for(var W of Q)if(W.type.syncfs)W.type.syncfs(W,J,z);else z(null)},mount(J,Z,Q){var K=Q==="/",X=!Q,z;if(K&&$.root)throw new $.ErrnoError(10);else if(!K&&!X){var W=$.lookupPath(Q,{follow_mount:!1});if(Q=W.path,z=W.node,$.isMountpoint(z))throw new $.ErrnoError(10);if(!$.isDir(z.mode))throw new $.ErrnoError(54)}var V={type:J,opts:Z,mountpoint:Q,mounts:[]},q=J.mount(V);if(q.mount=V,V.root=q,K)$.root=q;else if(z){if(z.mounted=V,z.mount)z.mount.mounts.push(V)}return q},unmount(J){var Z=$.lookupPath(J,{follow_mount:!1});if(!$.isMountpoint(Z.node))throw new $.ErrnoError(28);var Q=Z.node,K=Q.mounted,X=$.getMounts(K);for(var[z,W]of Object.entries($.nameTable))while(W){var V=W.name_next;if(X.includes(W.mount))$.destroyNode(W);W=V}Q.mounted=null;var q=Q.mount.mounts.indexOf(K);Q.mount.mounts.splice(q,1)},lookup(J,Z){return J.node_ops.lookup(J,Z)},mknod(J,Z,Q){var K=$.lookupPath(J,{parent:!0}),X=K.node,z=p.basename(J);if(!z)throw new $.ErrnoError(28);if(z==="."||z==="..")throw new $.ErrnoError(20);var W=$.mayCreate(X,z);if(W)throw new $.ErrnoError(W);if(!X.node_ops.mknod)throw new $.ErrnoError(63);return X.node_ops.mknod(X,z,Z,Q)},statfs(J){return $.statfsNode($.lookupPath(J,{follow:!0}).node)},statfsStream(J){return $.statfsNode(J.node)},statfsNode(J){var Z={bsize:4096,frsize:4096,blocks:1e6,bfree:500000,bavail:500000,files:$.nextInode,ffree:$.nextInode-1,fsid:42,flags:2,namelen:255};if(J.node_ops.statfs)Object.assign(Z,J.node_ops.statfs(J.mount.opts.root));return Z},create(J,Z=438){return Z&=4095,Z|=32768,$.mknod(J,Z,0)},mkdir(J,Z=511){return Z&=1023,Z|=16384,$.mknod(J,Z,0)},mkdirTree(J,Z){var Q=J.split("/"),K="";for(var X of Q){if(!X)continue;if(K||p.isAbs(J))K+="/";K+=X;try{$.mkdir(K,Z)}catch(z){if(z.errno!=20)throw z}}},mkdev(J,Z,Q){if(typeof Q>"u")Q=Z,Z=438;return Z|=8192,$.mknod(J,Z,Q)},symlink(J,Z){if(!yJ.resolve(J))throw new $.ErrnoError(44);var Q=$.lookupPath(Z,{parent:!0}),K=Q.node;if(!K)throw new $.ErrnoError(44);var X=p.basename(Z),z=$.mayCreate(K,X);if(z)throw new $.ErrnoError(z);if(!K.node_ops.symlink)throw new $.ErrnoError(63);return K.node_ops.symlink(K,X,J)},rename(J,Z){var Q=p.dirname(J),K=p.dirname(Z),X=p.basename(J),z=p.basename(Z),W,V,q;if(W=$.lookupPath(J,{parent:!0}),V=W.node,W=$.lookupPath(Z,{parent:!0}),q=W.node,!V||!q)throw new $.ErrnoError(44);if(V.mount!==q.mount)throw new $.ErrnoError(75);var R=$.lookupNode(V,X),m=yJ.relative(J,K);if(m.charAt(0)!==".")throw new $.ErrnoError(28);if(m=yJ.relative(Z,Q),m.charAt(0)!==".")throw new $.ErrnoError(55);var I;try{I=$.lookupNode(q,z)}catch(d){}if(R===I)return;var y=$.isDir(R.mode),_=$.mayDelete(V,X,y);if(_)throw new $.ErrnoError(_);if(_=I?$.mayDelete(q,z,y):$.mayCreate(q,z),_)throw new $.ErrnoError(_);if(!V.node_ops.rename)throw new $.ErrnoError(63);if($.isMountpoint(R)||I&&$.isMountpoint(I))throw new $.ErrnoError(10);if(q!==V){if(_=$.nodePermissions(V,"w"),_)throw new $.ErrnoError(_)}$.hashRemoveNode(R);try{V.node_ops.rename(R,q,z),R.parent=q}catch(d){throw d}finally{$.hashAddNode(R)}},rmdir(J){var Z=$.lookupPath(J,{parent:!0}),Q=Z.node,K=p.basename(J),X=$.lookupNode(Q,K),z=$.mayDelete(Q,K,!0);if(z)throw new $.ErrnoError(z);if(!Q.node_ops.rmdir)throw new $.ErrnoError(63);if($.isMountpoint(X))throw new $.ErrnoError(10);Q.node_ops.rmdir(Q,K),$.destroyNode(X)},readdir(J){var Z=$.lookupPath(J,{follow:!0}),Q=Z.node,K=$.checkOpExists(Q.node_ops.readdir,54);return K(Q)},unlink(J){var Z=$.lookupPath(J,{parent:!0}),Q=Z.node;if(!Q)throw new $.ErrnoError(44);var K=p.basename(J),X=$.lookupNode(Q,K),z=$.mayDelete(Q,K,!1);if(z)throw new $.ErrnoError(z);if(!Q.node_ops.unlink)throw new $.ErrnoError(63);if($.isMountpoint(X))throw new $.ErrnoError(10);Q.node_ops.unlink(Q,K),$.destroyNode(X)},readlink(J){var Z=$.lookupPath(J),Q=Z.node;if(!Q)throw new $.ErrnoError(44);if(!Q.node_ops.readlink)throw new $.ErrnoError(28);return Q.node_ops.readlink(Q)},stat(J,Z){var Q=$.lookupPath(J,{follow:!Z}),K=Q.node,X=$.checkOpExists(K.node_ops.getattr,63);return X(K)},fstat(J){var Z=$.getStreamChecked(J),Q=Z.node,K=Z.stream_ops.getattr,X=K?Z:Q;return K??=Q.node_ops.getattr,$.checkOpExists(K,63),K(X)},lstat(J){return $.stat(J,!0)},doChmod(J,Z,Q,K){$.doSetAttr(J,Z,{mode:Q&4095|Z.mode&-4096,ctime:Date.now(),dontFollow:K})},chmod(J,Z,Q){var K;if(typeof J=="string"){var X=$.lookupPath(J,{follow:!Q});K=X.node}else K=J;$.doChmod(null,K,Z,Q)},lchmod(J,Z){$.chmod(J,Z,!0)},fchmod(J,Z){var Q=$.getStreamChecked(J);$.doChmod(Q,Q.node,Z,!1)},doChown(J,Z,Q){$.doSetAttr(J,Z,{timestamp:Date.now(),dontFollow:Q})},chown(J,Z,Q,K){var X;if(typeof J=="string"){var z=$.lookupPath(J,{follow:!K});X=z.node}else X=J;$.doChown(null,X,K)},lchown(J,Z,Q){$.chown(J,Z,Q,!0)},fchown(J,Z,Q){var K=$.getStreamChecked(J);$.doChown(K,K.node,!1)},doTruncate(J,Z,Q){if($.isDir(Z.mode))throw new $.ErrnoError(31);if(!$.isFile(Z.mode))throw new $.ErrnoError(28);var K=$.nodePermissions(Z,"w");if(K)throw new $.ErrnoError(K);$.doSetAttr(J,Z,{size:Q,timestamp:Date.now()})},truncate(J,Z){if(Z<0)throw new $.ErrnoError(28);var Q;if(typeof J=="string"){var K=$.lookupPath(J,{follow:!0});Q=K.node}else Q=J;$.doTruncate(null,Q,Z)},ftruncate(J,Z){var Q=$.getStreamChecked(J);if(Z<0||(Q.flags&2097155)===0)throw new $.ErrnoError(28);$.doTruncate(Q,Q.node,Z)},utime(J,Z,Q){var K=$.lookupPath(J,{follow:!0}),X=K.node,z=$.checkOpExists(X.node_ops.setattr,63);z(X,{atime:Z,mtime:Q})},open(J,Z,Q=438){if(J==="")throw new $.ErrnoError(44);if(Z=$1(Z),Z&64)Q=Q&4095|32768;else Q=0;var K,X;if(typeof J=="object")K=J;else{X=J.endsWith("/");var z=$.lookupPath(J,{follow:!(Z&131072),noent_okay:!0});K=z.node,J=z.path}var W=!1;if(Z&64)if(K){if(Z&128)throw new $.ErrnoError(20)}else if(X)throw new $.ErrnoError(31);else K=$.mknod(J,Q|511,0),W=!0;if(!K)throw new $.ErrnoError(44);if($.isChrdev(K.mode))Z&=-513;if(Z&65536&&!$.isDir(K.mode))throw new $.ErrnoError(54);if(!W){var V=$.mayOpen(K,Z);if(V)throw new $.ErrnoError(V)}if(Z&512&&!W)$.truncate(K,0);Z&=-131713;var q=$.createStream({node:K,path:$.getPath(K),flags:Z,seekable:!0,position:0,stream_ops:K.stream_ops,ungotten:[],error:!1});if(q.stream_ops.open)q.stream_ops.open(q);if(W)$.chmod(K,Q&511);return q},close(J){if($.isClosed(J))throw new $.ErrnoError(8);if(J.getdents)J.getdents=null;try{if(J.stream_ops.close)J.stream_ops.close(J)}catch(Z){throw Z}finally{$.closeStream(J.fd)}J.fd=null},isClosed(J){return J.fd===null},llseek(J,Z,Q){if($.isClosed(J))throw new $.ErrnoError(8);if(!J.seekable||!J.stream_ops.llseek)throw new $.ErrnoError(70);if(Q!=0&&Q!=1&&Q!=2)throw new $.ErrnoError(28);return J.position=J.stream_ops.llseek(J,Z,Q),J.ungotten=[],J.position},read(J,Z,Q,K,X){if(K<0||X<0)throw new $.ErrnoError(28);if($.isClosed(J))throw new $.ErrnoError(8);if((J.flags&2097155)===1)throw new $.ErrnoError(8);if($.isDir(J.node.mode))throw new $.ErrnoError(31);if(!J.stream_ops.read)throw new $.ErrnoError(28);var z=typeof X<"u";if(!z)X=J.position;else if(!J.seekable)throw new $.ErrnoError(70);var W=J.stream_ops.read(J,Z,Q,K,X);if(!z)J.position+=W;return W},write(J,Z,Q,K,X,z){if(K<0||X<0)throw new $.ErrnoError(28);if($.isClosed(J))throw new $.ErrnoError(8);if((J.flags&2097155)===0)throw new $.ErrnoError(8);if($.isDir(J.node.mode))throw new $.ErrnoError(31);if(!J.stream_ops.write)throw new $.ErrnoError(28);if(J.seekable&&J.flags&1024)$.llseek(J,0,2);var W=typeof X<"u";if(!W)X=J.position;else if(!J.seekable)throw new $.ErrnoError(70);var V=J.stream_ops.write(J,Z,Q,K,X,z);if(!W)J.position+=V;return V},mmap(J,Z,Q,K,X){if((K&2)!==0&&(X&2)===0&&(J.flags&2097155)!==2)throw new $.ErrnoError(2);if((J.flags&2097155)===1)throw new $.ErrnoError(2);if(!J.stream_ops.mmap)throw new $.ErrnoError(43);if(!Z)throw new $.ErrnoError(28);return J.stream_ops.mmap(J,Z,Q,K,X)},msync(J,Z,Q,K,X){if(!J.stream_ops.msync)return 0;return J.stream_ops.msync(J,Z,Q,K,X)},ioctl(J,Z,Q){if(!J.stream_ops.ioctl)throw new $.ErrnoError(59);return J.stream_ops.ioctl(J,Z,Q)},readFile(J,Z={}){if(Z.flags=Z.flags||0,Z.encoding=Z.encoding||"binary",Z.encoding!=="utf8"&&Z.encoding!=="binary")w(`Invalid encoding type "${Z.encoding}"`);var Q=$.open(J,Z.flags),K=$.stat(J),X=K.size,z=new Uint8Array(X);if($.read(Q,z,0,X,0),Z.encoding==="utf8")z=RJ(z);return $.close(Q),z},writeFile(J,Z,Q={}){Q.flags=Q.flags||577;var K=$.open(J,Q.flags,Q.mode);Z=_Z(Z),$.write(K,Z,0,Z.byteLength,void 0,Q.canOwn),$.close(K)},cwd:()=>$.currentPath,chdir(J){var Z=$.lookupPath(J,{follow:!0});if(Z.node===null)throw new $.ErrnoError(44);if(!$.isDir(Z.node.mode))throw new $.ErrnoError(54);var Q=$.nodePermissions(Z.node,"x");if(Q)throw new $.ErrnoError(Q);$.currentPath=Z.path},createDefaultDirectories(){$.mkdir("/tmp"),$.mkdir("/home"),$.mkdir("/home/web_user")},createDefaultDevices(){$.mkdir("/dev"),$.registerDevice($.makedev(1,3),{read:()=>0,write:(K,X,z,W,V)=>W,llseek:()=>0}),$.mkdev("/dev/null",$.makedev(1,3)),NJ.register($.makedev(5,0),NJ.default_tty_ops),NJ.register($.makedev(6,0),NJ.default_tty1_ops),$.mkdev("/dev/tty",$.makedev(5,0)),$.mkdev("/dev/tty1",$.makedev(6,0));var J=new Uint8Array(1024),Z=0,Q=()=>{if(Z===0)ZZ(J),Z=J.byteLength;return J[--Z]};$.createDevice("/dev","random",Q),$.createDevice("/dev","urandom",Q),$.mkdir("/dev/shm"),$.mkdir("/dev/shm/tmp")},createSpecialDirectories(){$.mkdir("/proc");var J=$.mkdir("/proc/self");$.mkdir("/proc/self/fd"),$.mount({mount(){var Z=$.createNode(J,"fd",16895,73);return Z.stream_ops={llseek:A.stream_ops.llseek},Z.node_ops={lookup(Q,K){var X=+K,z=$.getStreamChecked(X),W={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>z.path},id:X+1};return W.parent=W,W},readdir(){return Array.from($.streams.entries()).filter(([Q,K])=>K).map(([Q,K])=>Q.toString())}},Z}},{},"/proc/self/fd")},createStandardStreams(J,Z,Q){if(J)$.createDevice("/dev","stdin",J);else $.symlink("/dev/tty","/dev/stdin");if(Z)$.createDevice("/dev","stdout",null,Z);else $.symlink("/dev/tty","/dev/stdout");if(Q)$.createDevice("/dev","stderr",null,Q);else $.symlink("/dev/tty1","/dev/stderr");var K=$.open("/dev/stdin",0),X=$.open("/dev/stdout",1),z=$.open("/dev/stderr",1)},staticInit(){$.nameTable=Array(4096),$.mount(A,{},"/"),$.createDefaultDirectories(),$.createDefaultDevices(),$.createSpecialDirectories(),$.filesystems={MEMFS:A}},init(J,Z,Q){$.initialized=!0,$.createStandardStreams(J,Z,Q)},quit(){$.initialized=!1;for(var J of $.streams)if(J)$.close(J)},findObject(J,Z){var Q=$.analyzePath(J,Z);if(!Q.exists)return null;return Q.object},analyzePath(J,Z){try{var Q=$.lookupPath(J,{follow:!Z});J=Q.path}catch(X){}var K={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var Q=$.lookupPath(J,{parent:!0});K.parentExists=!0,K.parentPath=Q.path,K.parentObject=Q.node,K.name=p.basename(J),Q=$.lookupPath(J,{follow:!Z}),K.exists=!0,K.path=Q.path,K.object=Q.node,K.name=Q.node.name,K.isRoot=Q.path==="/"}catch(X){K.error=X.errno}return K},createPath(J,Z,Q,K){J=typeof J=="string"?J:$.getPath(J);var X=Z.split("/").reverse();while(X.length){var z=X.pop();if(!z)continue;var W=p.join2(J,z);try{$.mkdir(W)}catch(V){if(V.errno!=20)throw V}J=W}return W},createFile(J,Z,Q,K,X){var z=p.join2(typeof J=="string"?J:$.getPath(J),Z),W=KZ(K,X);return $.create(z,W)},createDataFile(J,Z,Q,K,X,z){var W=Z;if(J)J=typeof J=="string"?J:$.getPath(J),W=Z?p.join2(J,Z):J;var V=KZ(K,X),q=$.create(W,V);if(Q){Q=_Z(Q),$.chmod(q,V|146);var R=$.open(q,577);$.write(R,Q,0,Q.length,0,z),$.close(R),$.chmod(q,V)}},createDevice(J,Z,Q,K){var X=p.join2(typeof J=="string"?J:$.getPath(J),Z),z=KZ(!!Q,!!K);$.createDevice.major??=64;var W=$.makedev($.createDevice.major++,0);return $.registerDevice(W,{open(V){V.seekable=!1},close(V){if(K?.buffer?.length)K(10)},read(V,q,R,m,I){var y=0;for(var _=0;_<m;_++){var d;try{d=Q()}catch(t){throw new $.ErrnoError(29)}if(d===void 0&&y===0)throw new $.ErrnoError(6);if(d===null||d===void 0)break;y++,q[R+_]=d}if(y)V.node.atime=Date.now();return y},write(V,q,R,m,I){for(var y=0;y<m;y++)try{K(q[R+y])}catch(_){throw new $.ErrnoError(29)}if(m)V.node.mtime=V.node.ctime=Date.now();return y}}),$.mkdev(X,z,W)},forceLoadFile(J){if(J.isDevice||J.isFolder||J.link||J.contents)return!0;if(globalThis.XMLHttpRequest)w("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");else try{J.contents=readBinary(J.url)}catch(Z){throw new $.ErrnoError(29)}},createLazyFile(J,Z,Q,K,X){class z{lengthKnown=!1;chunks=[];get(I){if(I>this.length-1||I<0)return;var y=I%this.chunkSize,_=I/this.chunkSize|0;return this.getter(_)[y]}setDataGetter(I){this.getter=I}cacheLength(){var I=new XMLHttpRequest;if(I.open("HEAD",Q,!1),I.send(null),!(I.status>=200&&I.status<300||I.status===304))w("Couldn't load "+Q+". Status: "+I.status);var y=Number(I.getResponseHeader("Content-length")),_,d=(_=I.getResponseHeader("Accept-Ranges"))&&_==="bytes",t=(_=I.getResponseHeader("Content-Encoding"))&&_==="gzip",e=1048576;if(!d)e=y;var CJ=(WJ,kJ)=>{if(WJ>kJ)w("invalid range ("+WJ+", "+kJ+") or no bytes requested!");if(kJ>y-1)w("only "+y+" bytes available! programmer error!");var JJ=new XMLHttpRequest;if(JJ.open("GET",Q,!1),y!==e)JJ.setRequestHeader("Range","bytes="+WJ+"-"+kJ);if(JJ.responseType="arraybuffer",JJ.overrideMimeType)JJ.overrideMimeType("text/plain; charset=x-user-defined");if(JJ.send(null),!(JJ.status>=200&&JJ.status<300||JJ.status===304))w("Couldn't load "+Q+". Status: "+JJ.status);if(JJ.response!==void 0)return new Uint8Array(JJ.response||[]);return QZ(JJ.responseText||"",!0)},QJ=this;if(QJ.setDataGetter((WJ)=>{var kJ=WJ*e,JJ=(WJ+1)*e-1;if(JJ=Math.min(JJ,y-1),typeof QJ.chunks[WJ]>"u")QJ.chunks[WJ]=CJ(kJ,JJ);if(typeof QJ.chunks[WJ]>"u")w("doXHR failed!");return QJ.chunks[WJ]}),t||!y)e=y=1,y=this.getter(0).length,e=y,U("LazyFiles on gzip forces download of the whole file when length is accessed");this._length=y,this._chunkSize=e,this.lengthKnown=!0}get length(){if(!this.lengthKnown)this.cacheLength();return this._length}get chunkSize(){if(!this.lengthKnown)this.cacheLength();return this._chunkSize}}if(globalThis.XMLHttpRequest){if(!Y)w("Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc");var W=new z,V={isDevice:!1,contents:W}}else var V={isDevice:!1,url:Q};var q=$.createFile(J,Z,V,K,X);if(V.contents)q.contents=V.contents;else if(V.url)q.contents=null,q.url=V.url;Object.defineProperties(q,{usedBytes:{get:function(){return this.contents.length}}});var R={};for(let[I,y]of Object.entries(q.stream_ops))R[I]=(..._)=>{return $.forceLoadFile(q),y(..._)};function m(I,y,_,d,t){var e=I.node.contents;if(t>=e.length)return 0;var CJ=Math.min(e.length-t,d);if(e.slice)for(var QJ=0;QJ<CJ;QJ++)y[_+QJ]=e[t+QJ];else for(var QJ=0;QJ<CJ;QJ++)y[_+QJ]=e.get(t+QJ);return CJ}return R.read=(I,y,_,d,t)=>{return $.forceLoadFile(q),m(I,y,_,d,t)},R.mmap=(I,y,_,d,t)=>{$.forceLoadFile(q);var e=bZ(y);if(!e)throw new $.ErrnoError(48);return m(I,k,e,y,_),{ptr:e,allocated:!0}},q.stream_ops=R,q}},F={calculateAt(J,Z,Q){if(p.isAbs(Z))return Z;var K;if(J===-100)K=$.cwd();else{var X=F.getStreamFromFD(J);K=X.path}if(Z.length==0){if(!Q)throw new $.ErrnoError(44);return K}return K+"/"+Z},writeStat(J,Z){B[J>>2]=Z.dev,B[J+4>>2]=Z.mode,B[J+8>>2]=Z.nlink,B[J+12>>2]=Z.uid,B[J+16>>2]=Z.gid,B[J+20>>2]=Z.rdev,H[J+24>>3]=BigInt(Z.size),L[J+32>>2]=4096,L[J+36>>2]=Z.blocks;var Q=Z.atime.getTime(),K=Z.mtime.getTime(),X=Z.ctime.getTime();return H[J+40>>3]=BigInt(Math.floor(Q/1000)),B[J+48>>2]=Q%1000*1000*1000,H[J+56>>3]=BigInt(Math.floor(K/1000)),B[J+64>>2]=K%1000*1000*1000,H[J+72>>3]=BigInt(Math.floor(X/1000)),B[J+80>>2]=X%1000*1000*1000,H[J+88>>3]=BigInt(Z.ino),0},writeStatFs(J,Z){B[J+4>>2]=Z.bsize,B[J+60>>2]=Z.bsize,H[J+8>>3]=BigInt(Z.blocks),H[J+16>>3]=BigInt(Z.bfree),H[J+24>>3]=BigInt(Z.bavail),H[J+32>>3]=BigInt(Z.files),H[J+40>>3]=BigInt(Z.ffree),B[J+48>>2]=Z.fsid,B[J+64>>2]=Z.flags,B[J+56>>2]=Z.namelen},doMsync(J,Z,Q,K,X){if(!$.isFile(Z.node.mode))throw new $.ErrnoError(43);if(K&2)return 0;var z=b.slice(J,J+Q);$.msync(Z,z,X,Q,K)},getStreamFromFD(J){var Z=$.getStreamChecked(J);return Z},varargs:void 0,getStr(J){var Z=zJ(J);return Z}};function Q1(J,Z){try{return J=F.getStr(J),$.chmod(J,Z),0}catch(Q){if(typeof $>"u"||Q.name!=="ErrnoError")throw Q;return-Q.errno}}function K1(J,Z,Q,K){try{if(Z=F.getStr(Z),Z=F.calculateAt(J,Z),Q&-8)return-28;var X=$.lookupPath(Z,{follow:!0}),z=X.node;if(!z)return-44;var W="";if(Q&4)W+="r";if(Q&2)W+="w";if(Q&1)W+="x";if(W&&$.nodePermissions(z,W))return-2;return 0}catch(V){if(typeof $>"u"||V.name!=="ErrnoError")throw V;return-V.errno}}var cJ=()=>{var J=L[+F.varargs>>2];return F.varargs+=4,J},DJ=cJ;function G1(J,Z,Q){F.varargs=Q;try{var K=F.getStreamFromFD(J);switch(Z){case 0:{var X=cJ();if(X<0)return-28;while($.streams[X])X++;var z=$.dupStream(K,X);return z.fd}case 1:case 2:return 0;case 3:return K.flags;case 4:{var X=cJ();return K.flags|=X,0}case 12:{var X=DJ(),W=0;return D[X+W>>1]=2,0}case 13:case 14:return 0}return-28}catch(V){if(typeof $>"u"||V.name!=="ErrnoError")throw V;return-V.errno}}function X1(J,Z){try{return F.writeStat(Z,$.fstat(J))}catch(Q){if(typeof $>"u"||Q.name!=="ErrnoError")throw Q;return-Q.errno}}var mJ=(J,Z,Q)=>FZ(J,b,Z,Q);function z1(J,Z){try{if(Z===0)return-28;var Q=$.cwd(),K=fJ(Q)+1;if(Z<K)return-68;return mJ(Q,J,Z),K}catch(X){if(typeof $>"u"||X.name!=="ErrnoError")throw X;return-X.errno}}function j1(J,Z,Q){try{var K=F.getStreamFromFD(J);K.getdents||=$.readdir(K.path);var X=280,z=0,W=$.llseek(K,0,1),V=Math.floor(W/X),q=Math.min(K.getdents.length,V+Math.floor(Q/X));for(var R=V;R<q;R++){var m,I,y=K.getdents[R];if(y===".")m=K.node.id,I=4;else if(y===".."){var _=$.lookupPath(K.path,{parent:!0});m=_.node.id,I=4}else{var d;try{d=$.lookupNode(K.node,y)}catch(t){if(t?.errno===28)continue;throw t}m=d.id,I=$.isChrdev(d.mode)?2:$.isDir(d.mode)?4:$.isLink(d.mode)?10:8}H[Z+z>>3]=BigInt(m),H[Z+z+8>>3]=BigInt((R+1)*X),D[Z+z+16>>1]=280,k[Z+z+18]=I,mJ(y,Z+z+19,256),z+=X}return $.llseek(K,R*X,0),z}catch(t){if(typeof $>"u"||t.name!=="ErrnoError")throw t;return-t.errno}}function O1(J,Z,Q){F.varargs=Q;try{var K=F.getStreamFromFD(J);switch(Z){case 21509:{if(!K.tty)return-59;return 0}case 21505:{if(!K.tty)return-59;if(K.tty.ops.ioctl_tcgets){var X=K.tty.ops.ioctl_tcgets(K),z=DJ();L[z>>2]=X.c_iflag||0,L[z+4>>2]=X.c_oflag||0,L[z+8>>2]=X.c_cflag||0,L[z+12>>2]=X.c_lflag||0;for(var W=0;W<32;W++)k[z+W+17]=X.c_cc[W]||0;return 0}return 0}case 21510:case 21511:case 21512:{if(!K.tty)return-59;return 0}case 21506:case 21507:case 21508:{if(!K.tty)return-59;if(K.tty.ops.ioctl_tcsets){var z=DJ(),V=L[z>>2],q=L[z+4>>2],R=L[z+8>>2],m=L[z+12>>2],I=[];for(var W=0;W<32;W++)I.push(k[z+W+17]);return K.tty.ops.ioctl_tcsets(K.tty,Z,{c_iflag:V,c_oflag:q,c_cflag:R,c_lflag:m,c_cc:I})}return 0}case 21519:{if(!K.tty)return-59;var z=DJ();return L[z>>2]=0,0}case 21520:{if(!K.tty)return-59;return-28}case 21537:case 21531:{var z=DJ();return $.ioctl(K,Z,z)}case 21523:{if(!K.tty)return-59;if(K.tty.ops.ioctl_tiocgwinsz){var y=K.tty.ops.ioctl_tiocgwinsz(K.tty),z=DJ();D[z>>1]=y[0],D[z+2>>1]=y[1]}return 0}case 21524:{if(!K.tty)return-59;return 0}case 21515:{if(!K.tty)return-59;return 0}default:return-28}}catch(_){if(typeof $>"u"||_.name!=="ErrnoError")throw _;return-_.errno}}function W1(J,Z){try{return J=F.getStr(J),F.writeStat(Z,$.lstat(J))}catch(Q){if(typeof $>"u"||Q.name!=="ErrnoError")throw Q;return-Q.errno}}function V1(J,Z,Q){try{return Z=F.getStr(Z),Z=F.calculateAt(J,Z),$.mkdir(Z,Q,0),0}catch(K){if(typeof $>"u"||K.name!=="ErrnoError")throw K;return-K.errno}}function Y1(J,Z,Q,K){try{Z=F.getStr(Z);var X=K&256,z=K&4096;return K=K&-6401,Z=F.calculateAt(J,Z,z),F.writeStat(Q,X?$.lstat(Z):$.stat(Z))}catch(W){if(typeof $>"u"||W.name!=="ErrnoError")throw W;return-W.errno}}function U1(J,Z,Q,K){F.varargs=K;try{Z=F.getStr(Z),Z=F.calculateAt(J,Z);var X=K?cJ():0;return $.open(Z,Q,X).fd}catch(z){if(typeof $>"u"||z.name!=="ErrnoError")throw z;return-z.errno}}function B1(J,Z,Q,K){try{if(Z=F.getStr(Z),Z=F.calculateAt(J,Z),K<=0)return-28;var X=$.readlink(Z),z=Math.min(K,fJ(X)),W=k[Q+z];return mJ(X,Q,K+1),k[Q+z]=W,z}catch(V){if(typeof $>"u"||V.name!=="ErrnoError")throw V;return-V.errno}}function q1(J,Z,Q,K){try{return Z=F.getStr(Z),K=F.getStr(K),Z=F.calculateAt(J,Z),K=F.calculateAt(Q,K),$.rename(Z,K),0}catch(X){if(typeof $>"u"||X.name!=="ErrnoError")throw X;return-X.errno}}function N1(J){try{return J=F.getStr(J),$.rmdir(J),0}catch(Z){if(typeof $>"u"||Z.name!=="ErrnoError")throw Z;return-Z.errno}}function H1(J,Z){try{return J=F.getStr(J),F.writeStat(Z,$.stat(J))}catch(Q){if(typeof $>"u"||Q.name!=="ErrnoError")throw Q;return-Q.errno}}function P1(J,Z,Q){try{if(Z=F.getStr(Z),Z=F.calculateAt(J,Z),!Q)$.unlink(Z);else if(Q===512)$.rmdir(Z);else return-28;return 0}catch(K){if(typeof $>"u"||K.name!=="ErrnoError")throw K;return-K.errno}}var EZ=(J)=>B[J>>2]+L[J+4>>2]*4294967296;function w1(J,Z,Q,K){try{Z=F.getStr(Z),Z=F.calculateAt(J,Z,!0);var X=Date.now(),z,W;if(!Q)z=X,W=X;else{var V=EZ(Q),q=L[Q+8>>2];if(q==1073741823)z=X;else if(q==1073741822)z=null;else z=V*1000+q/1e6;if(Q+=16,V=EZ(Q),q=L[Q+8>>2],q==1073741823)W=X;else if(q==1073741822)W=null;else W=V*1000+q/1e6}if((W??z)!==null)$.utime(Z,z,W);return 0}catch(R){if(typeof $>"u"||R.name!=="ErrnoError")throw R;return-R.errno}}var D1=()=>w(""),k1=()=>{throw 1/0},L1=()=>Date.now(),A1=()=>performance.now(),I1=()=>2147483648,y1=(J)=>{var Z=g.buffer.byteLength,Q=(J-Z+65535)/65536|0;try{return g.grow(Q),x(),1}catch(K){}},R1=(J)=>{var Z=b.length;J>>>=0;var Q=I1();if(J>Q)return!1;for(var K=1;K<=4;K*=2){var X=Z*(1+0.2/K);X=Math.min(X,J+100663296);var z=Math.min(Q,TZ(Math.max(J,X),65536)),W=y1(z);if(W)return!0}return!1},GZ={},v1=()=>"./this.program",vJ=()=>{if(!vJ.strings){var J=(globalThis.navigator?.language??"C").replace("-","_")+".UTF-8",Z={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:J,_:v1()};for(var Q in GZ)if(GZ[Q]===void 0)delete Z[Q];else Z[Q]=GZ[Q];var K=[];for(var Q in Z)K.push(`${Q}=${Z[Q]}`);vJ.strings=K}return vJ.strings},C1=(J,Z)=>{var Q=0,K=0;for(var X of vJ()){var z=Z+Q;B[J+K>>2]=z,Q+=mJ(X,z,1/0)+1,K+=4}return 0},F1=(J,Z)=>{var Q=vJ();B[J>>2]=Q.length;var K=0;for(var X of Q)K+=fJ(X)+1;return B[Z>>2]=K,0},T1=(J)=>{throw`exit(${J})`},b1=T1;function _1(J){try{var Z=F.getStreamFromFD(J);return $.close(Z),0}catch(Q){if(typeof $>"u"||Q.name!=="ErrnoError")throw Q;return Q.errno}}var E1=(J,Z,Q,K)=>{var X=0;for(var z=0;z<Q;z++){var W=B[Z>>2],V=B[Z+4>>2];Z+=8;var q=$.read(J,k,W,V,K);if(q<0)return-1;if(X+=q,q<V)break;if(typeof K<"u")K+=q}return X};function g1(J,Z,Q,K){try{var X=F.getStreamFromFD(J),z=E1(X,Z,Q);return B[K>>2]=z,0}catch(W){if(typeof $>"u"||W.name!=="ErrnoError")throw W;return W.errno}}var M1=9007199254740992,x1=-9007199254740992,S1=(J)=>J<x1||J>M1?NaN:Number(J);function h1(J,Z,Q,K){Z=S1(Z);try{if(isNaN(Z))return 61;var X=F.getStreamFromFD(J);if($.llseek(X,Z,Q),H[K>>3]=BigInt(X.position),X.getdents&&Z===0&&Q===0)X.getdents=null;return 0}catch(z){if(typeof $>"u"||z.name!=="ErrnoError")throw z;return z.errno}}var p1=(J,Z,Q,K)=>{var X=0;for(var z=0;z<Q;z++){var W=B[Z>>2],V=B[Z+4>>2];Z+=8;var q=$.write(J,k,W,V,K);if(q<0)return-1;if(X+=q,q<V)break;if(typeof K<"u")K+=q}return X};function f1(J,Z,Q,K){try{var X=F.getStreamFromFD(J),z=p1(X,Z,Q);return B[K>>2]=z,0}catch(W){if(typeof $>"u"||W.name!=="ErrnoError")throw W;return W.errno}}function c1(J,Z){try{return ZZ(b.subarray(J,J+Z)),0}catch(Q){if(typeof $>"u"||Q.name!=="ErrnoError")throw Q;return Q.errno}}var gZ=[],MZ=(J)=>{var Z=gZ[J];if(!Z)gZ[J]=Z=F0.get(J);return Z};$.staticInit();var xZ,SZ,hZ,pZ,fZ,cZ,mZ,uZ,lZ,sZ,oZ,dZ,rZ,nZ,iZ,aZ,tZ,eZ,J0,Z0,$0,Q0,K0,G0,X0,z0,j0,O0,W0,V0,Y0,U0,B0,q0,N0,H0,P0,w0,D0,k0,L0,A0,I0,y0,R0,XZ,v0,C0,m1,F0;function u1(J){xZ=J.J,SZ=J.K,hZ=J.L,pZ=J.M,fZ=J.N,cZ=J.O,mZ=J.P,uZ=J.Q,lZ=J.R,sZ=J.S,oZ=J.T,dZ=J.U,rZ=J.V,nZ=J.W,iZ=J.X,aZ=J.Y,tZ=J.Z,eZ=J._,J0=J.$,Z0=J.aa,$0=J.ba,Q0=J.ca,K0=J.da,G0=J.ea,X0=J.fa,z0=J.ga,j0=J.ha,O0=J.ia,W0=J.ja,V0=J.ka,Y0=J.la,U0=J.ma,B0=J.na,q0=J.oa,N0=J.pa,H0=J.qa,P0=J.ra,w0=J.sa,D0=J.ta,k0=J.ua,L0=J.va,A0=J.wa,I0=J.xa,y0=J.ya,R0=J.Aa,XZ=J.Ba,v0=J.Ca,C0=J.Da,m1=F0=J.za}var l1={b:pJ,H:Q1,k:K1,c:G1,G:X1,C:z1,w:j1,m:O1,D:W1,x:V1,E:Y1,i:U1,v:B1,u:q1,t:N1,F:H1,s:P1,r:w1,l:D1,p:k1,j:L1,f:A1,q:R1,z:C1,A:F1,g:b1,d:_1,h:g1,y:h1,e:f1,o:s1,n:o1,a:g,B:c1};function s1(J,Z,Q){var K=s();try{return MZ(J)(Z,Q)}catch(X){if(T(K),X!==X+0)throw X;XZ(1,0)}}function o1(J,Z,Q,K,X){var z=s();try{return MZ(J)(Z,Q,K,X)}catch(W){if(T(z),W!==W+0)throw W;XZ(1,0)}}function d1(J){if(l=!0,!j.noFSInit&&!$.initialized)$.init();J.I(),$.ignorePermissions=!1}var r1={a:l1};WebAssembly.instantiateStreaming(fetch(new URL("akarisub-worker.wasm",self.location.href)),r1).then((J)=>{var Z=J.instance.exports;u1(Z),d1(Z),P()});let zZ=()=>{try{if(typeof g<"u"){if(self.wasmMemory=g,self.HEAPU8C=new Uint8ClampedArray(g.buffer),typeof BigInt64Array<"u")self.HEAP64=new BigInt64Array(g.buffer),self.HEAPU64=new BigUint64Array(g.buffer)}if(typeof b<"u")self.HEAPU8=b;if(typeof H<"u")self.HEAP64=H;if(typeof o<"u")self.HEAPU64=o}catch(J){}};if(typeof updateGlobalBufferAndViews==="function"){let J=updateGlobalBufferAndViews;updateGlobalBufferAndViews=(Z)=>{J(Z),zZ()}}if(typeof x==="function"){let J=x;x=()=>{J(),zZ()}}let T0=typeof P==="function"?P:null;if(T0)P=()=>{if(j._malloc=SZ,j._free=hZ,j._akarisub_create=xZ,j._akarisub_destroy=pZ,j._akarisub_set_drop_animations=fZ,j._akarisub_create_track_mem=cZ,j._akarisub_remove_track=mZ,j._akarisub_resize_canvas=uZ,j._akarisub_add_font=lZ,j._akarisub_reload_fonts=sZ,j._akarisub_set_default_font=oZ,j._akarisub_set_fallback_fonts=dZ,j._akarisub_set_memory_limits=rZ,j._akarisub_get_event_count=nZ,j._akarisub_alloc_event=iZ,j._akarisub_remove_event=aZ,j._akarisub_get_style_count=tZ,j._akarisub_alloc_style=eZ,j._akarisub_remove_style=J0,j._akarisub_style_override_index=Z0,j._akarisub_disable_style_override=$0,j._akarisub_render_blend=Q0,j._akarisub_render_image=K0,j._akarisub_get_changed=G0,j._akarisub_get_count=X0,j._akarisub_get_time=z0,j._akarisub_get_track_color_space=j0,j._akarisub_event_get_int=O0,j._akarisub_event_set_int=W0,j._akarisub_event_get_str=V0,j._akarisub_event_set_str=Y0,j._akarisub_style_get_num=U0,j._akarisub_style_set_num=B0,j._akarisub_style_get_str=q0,j._akarisub_style_set_str=N0,j._akarisub_render_result_x=H0,j._akarisub_render_result_y=P0,j._akarisub_render_result_w=w0,j._akarisub_render_result_h=D0,j._akarisub_render_result_image=k0,j._akarisub_render_result_next=L0,j._akarisub_render_result_collect=A0,j._akarisub_render_blend_collect=I0,j._akarisub_render_image_collect=y0,typeof $<"u")j.FS_createPath=$.createPath,j.FS_createDataFile=$.createDataFile;return zZ(),T0()};if(l)O=j;else O=new Promise((J,Z)=>{v=J,a=Z});return O}var b0=n1;var jZ=[null,"BT601",null,"BT601","BT601","BT709","BT709","SMPTE240M","SMPTE240M","FCC","FCC"];function _0(G,O=!1){let j=[],U=G.split(/[\r\n]+/g),N=U.length,P=null,Y=null;for(let w=0;w<N;w++){let v=U[w];if(!v||/^\s*$/.test(v))continue;let a=v[0];if(a==="["){let l=v.match(/^\[(.*)\]$/);if(l){if(O&&l[1].toLowerCase()==="events")break;P=null,Y={name:l[1],body:[]},j.push(Y);continue}}if(!Y)continue;if(a===";")Y.body.push({type:"comment",value:v.substring(1)});else{let l=v.indexOf(":");if(l===-1)continue;let x=v.substring(0,l),n=v.substring(l+1).trim();if(P||x==="Format"){let D=n.split(",");if(P&&D.length>P.length){let H=D.slice(P.length-1).join(",");D=D.slice(0,P.length-1),D.push(H)}let L=D.length;for(let H=0;H<L;H++)D[H]=D[H].trim();if(P){let H={},k=Math.min(P.length,L);for(let S=0;S<k;S++)H[P[S]]=D[S];n=H}else n=D}if(x==="Format")P=n;Y.body.push({key:x,value:n})}}return j}var i1=/\\blur(?:[0-9]+\.)?[0-9]+/gm;function OZ(G){return G.replace(i1,"")}var a1=[{w:7680,h:4320},{w:3840,h:2160},{w:2560,h:1440},{w:1920,h:1080},{w:1280,h:720}];function t1(G,O){let j=[...a1].sort((U,N)=>U.w-N.w);for(let U of j)if(G<=U.w&&O<=U.h)return U;return{w:Math.ceil(G/100)*100,h:Math.ceil(O/100)*100}}function r(G,O){return O&&O.includes(".")?G.toFixed(2).replace(/\.?0+$/,""):Math.round(G)}function WZ(G){let O=G.match(/PlayResX:\s*(\d+)/i),j=G.match(/PlayResY:\s*(\d+)/i),U=O?parseInt(O[1],10):1920,N=j?parseInt(j[1],10):1080,P=/\\pos\s*\(\s*(-?[\d.]+)\s*,\s*(-?[\d.]+)\s*\)/g,Y=/\\move\s*\(\s*(-?[\d.]+)\s*,\s*(-?[\d.]+)\s*,\s*(-?[\d.]+)\s*,\s*(-?[\d.]+)/g,w=/\\org\s*\(\s*(-?[\d.]+)\s*,\s*(-?[\d.]+)\s*\)/g,v=/\\i?clip\s*\(\s*(-?[\d.]+)\s*,\s*(-?[\d.]+)\s*,\s*(-?[\d.]+)\s*,\s*(-?[\d.]+)\s*\)/g,a=0,l=0,x=(b,T,s)=>{let g,OJ=new RegExp(b.source,"g");while((g=OJ.exec(G))!==null){for(let GJ of T)if(g[GJ]){let zJ=Math.abs(parseFloat(g[GJ]));if(zJ>a)a=zJ}for(let GJ of s)if(g[GJ]){let zJ=Math.abs(parseFloat(g[GJ]));if(zJ>l)l=zJ}}};if(x(P,[1],[2]),x(Y,[1,3],[2,4]),x(w,[1],[2]),x(v,[1,3],[2,4]),a<=U&&l<=N)return G;let n=t1(a,l),D=U/n.w,L=N/n.h,H=Math.min(D,L),k=Math.max(D,L),S=1,M=G,h=M.match(/(\[Events\][\s\S]*)/i);if(!h)return M;let B=h[1];return B=B.replace(P,(b,T,s)=>`\\pos(${r(parseFloat(T)*D,T)},${r(parseFloat(s)*L,s)})`),B=B.replace(/\\move\s*\(\s*(-?[\d.]+)\s*,\s*(-?[\d.]+)\s*,\s*(-?[\d.]+)\s*,\s*(-?[\d.]+)(?:\s*,\s*(-?[\d.]+)\s*,\s*(-?[\d.]+))?\s*\)/g,(b,T,s,g,OJ,GJ,zJ)=>{let pJ=`\\move(${r(parseFloat(T)*D,T)},${r(parseFloat(s)*L,s)},${r(parseFloat(g)*D,g)},${r(parseFloat(OJ)*L,OJ)}`;return GJ?`${pJ},${GJ},${zJ})`:`${pJ})`}),B=B.replace(w,(b,T,s)=>`\\org(${r(parseFloat(T)*D,T)},${r(parseFloat(s)*L,s)})`),B=B.replace(/\\(i?clip)\s*\(\s*(-?[\d.]+)\s*,\s*(-?[\d.]+)\s*,\s*(-?[\d.]+)\s*,\s*(-?[\d.]+)\s*\)/g,(b,T,s,g,OJ,GJ)=>`\\${T}(${r(parseFloat(s)*D,s)},${r(parseFloat(g)*L,g)},${r(parseFloat(OJ)*D,OJ)},${r(parseFloat(GJ)*L,GJ)})`),B=B.replace(/\\fs([\d.]+)/g,(b,T)=>`\\fs${r(parseFloat(T)*k,T)}`),B=B.replace(/\\fscx([\d.]+)/g,(b,T)=>`\\fscx${r(parseFloat(T)*S,T)}`),B=B.replace(/\\xbord([\d.]+)/g,(b,T)=>`\\xbord${r(parseFloat(T)*D,T)}`),B=B.replace(/\\ybord([\d.]+)/g,(b,T)=>`\\ybord${r(parseFloat(T)*L,T)}`),B=B.replace(/\\xshad(-?[\d.]+)/g,(b,T)=>`\\xshad${r(parseFloat(T)*D,T)}`),B=B.replace(/\\yshad(-?[\d.]+)/g,(b,T)=>`\\yshad${r(parseFloat(T)*L,T)}`),["fsp","bord","shad","be","blur"].forEach((b)=>{let T=new RegExp(`\\\\${b}(-?[\\d.]+)`,"g");B=B.replace(T,(s,g)=>`\\${b}${r(parseFloat(g)*H,g)}`)}),B=B.replace(/(\\i?clip\s*\([^,)]+m[^)]+\)|\\p[1-9][^}]*?)(?=[\\}]|$)/g,(b)=>{return b.replace(/(-?[\d.]+)\s+(-?[\d.]+)/g,(T,s,g)=>{return`${r(parseFloat(s)*D,s)} ${r(parseFloat(g)*L,g)}`})}),M.substring(0,h.index)+B}var wJ=0,S0=1,jJ=null,VZ=!1,tJ=Date.now(),oJ=24,gJ=!1,h0=!1,yZ="wasm",PJ={},dJ={},p0=0,f0=0,FJ=[],i=!1,NZ=!1,MJ=!1,e1=3,$J=[];self.width=0;self.height=0;var C={framesRendered:0,framesDropped:0,totalRenderTime:0,maxRenderTime:0,minRenderTime:1/0,lastRenderTime:0,renderStartTime:0,pendingRenders:0,totalEvents:0,currentEventIndex:0,cacheHits:0,cacheMisses:0},J4=()=>{C.framesRendered=0,C.framesDropped=0,C.totalRenderTime=0,C.maxRenderTime=0,C.minRenderTime=1/0,C.lastRenderTime=0,C.cacheHits=0,C.cacheMisses=0},UJ=!1,TJ=!0,YJ=null,LJ=null,xJ=!1,HJ=null,c0=null,c=0,IJ=null,HZ=!1,Z4=!1,ZJ=null,rJ=!1,m0=new TextEncoder,$4=new TextDecoder,PZ=null,eJ=128,u0=Math.max(eJ,4096),l0=u0;var Q4=30,K4=1,G4=24,wZ=1000,s0=Array(eJ),E0=!1;var DZ=3,sJ=5,YZ=0,X4=0,KJ=0,VJ=0,z4=[],j4=[],O4=[],UZ=null;var W4=!1,JZ=null,AJ=null,kZ=(G)=>new Promise((O)=>setTimeout(O,G)),o0=()=>{if(E0)return;for(let G=0;G<eJ;G++)s0[G]={w:0,h:0,x:0,y:0,image:0};E0=!0},g0=(G)=>{if(G<eJ)return s0[G];return{w:0,h:0,x:0,y:0,image:0}};var RZ=(G)=>{if(!ZJ||G<=0)return;let O=DZ+sJ*G;if(VJ>=O&&KJ)return;let j=Math.max(O,(VJ||64)*2),U=j*Int32Array.BYTES_PER_ELEMENT;if(KJ)ZJ._free(KJ),KJ=0,VJ=0;if(KJ=ZJ._malloc(U),!KJ)throw VJ=0,Error("Failed to allocate render-collect buffer");VJ=j},nJ=(G)=>{if(!c)return;let O=E(),j=u();if(RZ(l0),yZ==="wasm")O.renderBlendCollect(j,G,0,KJ,VJ);else O.renderImageCollect(j,G,0,KJ,VJ)},d0=()=>{if(!c)return null;let G=E(),O=u(),j=G.getEventCount(O);if(j<=0)return null;let U=Number.POSITIVE_INFINITY;for(let N=0;N<j;N++){let P=G.eventGetInt(O,N,XJ.Start)/wZ;if(Number.isFinite(P)&&P<U)U=P}if(!Number.isFinite(U))return null;return Math.max(0,U)},V4=()=>{if(!c)return null;let G=E(),O=u(),j=G.getEventCount(O);if(j<=0)return null;let U=Number.POSITIVE_INFINITY,N=0;for(let P=0;P<j;P++){let Y=G.eventGetInt(O,P,XJ.Start)/wZ,w=Math.max(0,G.eventGetInt(O,P,XJ.Duration)/wZ);if(!Number.isFinite(Y))continue;let v=Y+w;if(Y<U)U=Y;if(v>N)N=v}if(!Number.isFinite(U))return null;if(N<U)N=U;return{start:Math.max(0,U),end:Math.max(0,N)}},Y4=async()=>{if(!c)return;let G=V4();if(!G)return;let O=Math.min(G.end,G.start+Q4),j=0;for(let U=G.start;U<=O;U+=K4){if(!c)return;if(gJ&&(MJ||$J.length>0||C.pendingRenders>0)){await kZ(0);continue}if(nJ(U),j++,gJ||j%G4===0)await kZ(0)}nJ(O)};var vZ=()=>{if(W4=!1,UZ)clearTimeout(UZ),UZ=null},U4=()=>{if(AJ||!c)return;AJ=(async()=>{await kZ(0);try{await Y4()}catch(G){if(i)console.warn("[AkariSub] Full track warmup failed, continuing:",G)}try{if(c)nJ(n0())}catch(G){if(i)console.warn("[AkariSub] Post-warmup re-prime failed, continuing:",G)}})().finally(()=>{AJ=null})};var XJ={Start:0,Duration:1,ReadOrder:2,Layer:3,Style:4,MarginL:5,MarginR:6,MarginV:7},bJ={Name:0,Effect:1,Text:2},f={FontSize:0,PrimaryColour:1,SecondaryColour:2,OutlineColour:3,BackColour:4,Bold:5,Italic:6,Underline:7,StrikeOut:8,ScaleX:9,ScaleY:10,Spacing:11,Angle:12,BorderStyle:13,Outline:14,Shadow:15,Alignment:16,MarginL:17,MarginR:18,MarginV:19,Encoding:20,treat_fontname_as_pattern:21,Blur:22,Justify:23},iJ={Name:0,FontName:1},B4=(G)=>{return m0.encode(G)},q4=(G)=>{if(!ZJ)return 0;let O=B4(G),j=ZJ._malloc(O.length+1);if(!j)return 0;return self.HEAPU8.set(O,j),self.HEAPU8[j+O.length]=0,j},_J=(G)=>{if(!G)return"";let O=G,j=self.HEAPU8;while(j[O]!==0)O++;return $4.decode(j.subarray(G,O))},qJ=(G,O)=>{let j=q4(G);try{return O(j)}finally{if(j&&ZJ)ZJ._free(j)}},E=()=>{if(!PZ)throw Error("AkariSub API is not initialized");return PZ},u=()=>{if(!c)throw Error("AkariSub instance is not initialized");return c};self.addFont=({font:G})=>r0(G,!1);var uJ=(G)=>{if(G=G.trim().toLowerCase(),G.startsWith("@"))G=G.substring(1);if(dJ[G])return;if(dJ[G]=!0,!PJ[G]){if(h0)postMessage({target:"getLocalFont",font:G})}else r0(PJ[G])},r0=(G,O=!0)=>{if(typeof G==="string")IZ(G,(j)=>{M0(new Uint8Array(j),O)},console.error);else M0(G,O)};var BZ=null,N4=()=>{if(BZ)return;BZ=setTimeout(()=>{if(BZ=null,c)E().reloadFonts(c)},16)},SJ=(G,O)=>{if(!ZJ||!c){if(i)console.warn("[AkariSub] Cannot add embedded font, module or AkariSub not ready:",O);return}try{let j=E(),U=ZJ._malloc(G.length);if(!U){console.warn("[AkariSub] Failed to allocate memory for embedded font:",O);return}if(self.HEAPU8.set(G,U),qJ(O,(N)=>{j.addFont(c,N,U,G.length)}),i)console.log("[AkariSub] Added embedded font:",O,"size:",G.length)}catch(j){console.warn("[AkariSub] Failed to add embedded font:",O,j)}},M0=(G,O=!0)=>{let j=O?"/fonts/fallback":"/fonts/attached",U=O?"fallback-"+f0++:"attached-"+p0++;if(ZJ){try{ZJ.FS_createDataFile(j,U,G,!0,!0,!0)}catch(N){console.warn("Failed to write font to filesystem:",j+"/"+U,N)}if(!O)SJ(G,U);else if(c)SJ(G,U);else FJ.push({data:G,name:U})}N4()},lJ=(G,O=!0)=>{let j=O?"/fonts/fallback":"/fonts/attached",U=O?"fallback-"+f0++:"attached-"+p0++;if(ZJ){try{if(ZJ.FS_createDataFile(j,U,G,!0,!0,!0),i)console.log("[AkariSub] Wrote font to FS:",j+"/"+U,"size:",G.length)}catch(N){console.warn("Failed to write font to filesystem:",j+"/"+U,N)}if(!O)SJ(G,U);else if(c)SJ(G,U);else FJ.push({data:G,name:U})}},LZ=(G)=>{if(!PJ)return;if(G.length>500000){let j=G.match(/\[V4\+?\s*Styles?\][^\[]*(?=\[|$)/i);if(j){let P=j[0].matchAll(/^Style:[^,]*,([^,]+)/gm);for(let Y of P)uJ(Y[1].trim())}let U=G.match(/\[Events\][\s\S]*/i);if(U){let P=U[0].matchAll(/\\fn([^\\}]*?)[\\}]/g),Y=0;for(let w of P)if(uJ(w[1]),++Y>=1000)break}}else{let j=_0(G,!0);for(let N=0;N<j.length;N++)for(let P=0;P<j[N].body.length;P++){let Y=j[N].body[P];if(Y.key==="Style"&&typeof Y.value==="object"&&!Array.isArray(Y.value))uJ(Y.value.Fontname)}let U=G.match(/\[Events\][\s\S]*/i);if(U){let P=U[0].matchAll(/\\fn([^\\}]*?)[\\}]/g);for(let Y of P)uJ(Y[1])}}},AZ=(G,O)=>{let j=new XMLHttpRequest;return j.open("GET",G,!1),j.responseType=O?"arraybuffer":"text",j.send(null),j.response},IZ=(G,O,j)=>{let U=new XMLHttpRequest;U.open("GET",G,!0),U.responseType="arraybuffer",U.onload=()=>{if((U.status===200||U.status===0)&&U.response)return O(U.response)},U.onerror=j,U.send(null)};self.setTrack=({content:G})=>{if(vZ(),AJ=null,LZ(G),NZ)G=WZ(G);if(HZ)G=OZ(G);let O=E(),j=u();qJ(G,(U)=>{O.createTrackMem(j,U)}),JZ=d0(),IJ=jZ[O.getTrackColorSpace(j)],rJ=!0,postMessage({target:"verifyColorSpace",subtitleColorSpace:IJ})};self.getColorSpace=()=>{postMessage({target:"verifyColorSpace",subtitleColorSpace:IJ})};self.freeTrack=()=>{vZ(),AJ=null,JZ=null;let G=E(),O=u();G.removeTrack(O)};self.setTrackByUrl=({url:G})=>{self.setTrack({content:AZ(G)})};var EJ=!0,n0=()=>{let G=(Date.now()-tJ)/1000;if(EJ)return wJ;else{if(G>5)console.error("Didn't receive currentTime > 5 seconds. Assuming video was paused."),i0(!0);return wJ+G*S0}},H4=(G)=>{if(wJ=G,tJ=Date.now(),gJ)return;if(!jJ)if(VZ)jJ=CZ(aJ);else aJ(),VZ=!0,setTimeout(()=>{VZ=!1},20)},i0=(G)=>{if(gJ){if(EJ=G,jJ)x0(jJ),jJ=null;return}if(G!==EJ)if(EJ=G,G){if(jJ)x0(jJ),jJ=null}else tJ=Date.now(),jJ=CZ(aJ)},P4=()=>{if(MJ||$J.length===0)return;if($J.length>1){let O=$J.length-1;C.framesDropped+=O;let j=$J[$J.length-1];$J.length=0,$J.push(j)}let G=$J.shift();if(!G)return;hJ(G.time,G.force)},BJ=()=>{MJ=!1,P4()},hJ=(G,O)=>{if(MJ){let D={time:G,force:O?1:0};if(D.force)$J.length=0;else{let L=$J[$J.length-1];if(L&&Math.abs(L.time-D.time)>0.25)$J.length=0}if($J.length>=e1)$J.shift(),C.framesDropped++;$J.push(D);return}MJ=!0,o0();let j={},U=performance.now();C.renderStartTime=U,C.pendingRenders++;let N=E(),P=u(),Y=O?1:0;RZ(u0);let w=yZ==="wasm"?N.renderBlendCollect(P,G,Y,KJ,VJ):N.renderImageCollect(P,G,Y,KJ,VJ),v=new Int32Array(self.wasmMemory.buffer,KJ,DZ),a=v[0],l=v[1],n=performance.now()-U;if(C.lastRenderTime=n,C.totalRenderTime+=n,C.maxRenderTime=Math.max(C.maxRenderTime,n),n>0)C.minRenderTime=Math.min(C.minRenderTime,n);if(a!==0||O)C.framesRendered++,C.cacheMisses++;else C.cacheHits++;if(C.totalEvents=N.getEventCount(P),i){let D=performance.now(),L=v[2];j.WASMRenderTime=L-U,j.WASMBitmapDecodeTime=D-L,j.JSRenderTime=Date.now()}if(a!==0||O){let D=z4,L=j4;if(D.length=0,L.length=0,w===0)return qZ({images:D,buffers:L,times:j});let H=KJ+DZ*Int32Array.BYTES_PER_ELEMENT,k=new Int32Array(self.wasmMemory.buffer,H,w*sJ);if(UJ&&xJ!==!0){let M=O4;M.length=w;for(let h=0;h<w;++h){let B=h*sJ,o=g0(h);o.x=k[B],o.y=k[B+1],o.w=k[B+2],o.h=k[B+3],o.image=0;let b=k[B+4],T=o.w*o.h*4,s=self.HEAPU8C.slice(b,b+T),g=new ImageData(s,o.w,o.h);M[h]=TJ?createImageBitmap(g,{premultiplyAlpha:"none",colorSpaceConversion:"none"}):createImageBitmap(g),D[h]=o}Promise.all(M).then((h)=>{for(let B=0;B<w;B++)D[B].image=h[B];if(i)j.JSBitmapGenerationTime=Date.now()-(j.JSRenderTime||0);qZ({images:D,buffers:h,times:j})}).catch(()=>{if(TJ)TJ=!1,console.warn("[AkariSub] createImageBitmap options not supported, disabling"),C.pendingRenders--,BJ(),hJ(G,O);else C.pendingRenders--,postMessage({target:"unbusy"}),BJ()})}else{for(let M=0;M<w;++M){let h=M*sJ,B=g0(M);if(B.x=k[h],B.y=k[h+1],B.w=k[h+2],B.h=k[h+3],B.image=k[h+4],!LJ){let o=B.image,b=self.wasmMemory.buffer.slice(o,o+B.w*B.h*4);L.push(b),B.image=b}D[M]=B}qZ({images:D,buffers:L,times:j})}}else C.pendingRenders--,postMessage({target:"unbusy"}),BJ()};self.demand=({time:G})=>{wJ=G,tJ=Date.now();let O=rJ?1:0;rJ=!1,hJ(G,O)};var aJ=(G)=>{if(jJ=null,hJ(n0(),G),!EJ)jJ=CZ(aJ)},qZ=({times:G,images:O,buffers:j})=>{C.pendingRenders--;let{width:U,height:N}=self,P=O.length,Y={target:"render",asyncRender:UJ,images:O,times:G,width:U,height:N,colorSpace:IJ};if(xJ){if(YJ.height!==N||YJ.width!==U)YJ.width=U,YJ.height=N;if(LJ.clearRect(0,0,U,N),UJ)for(let w=0;w<P;w++){let v=O[w];if(v.image)LJ.drawImage(v.image,v.x,v.y),v.image.close()}else for(let w=0;w<P;w++){let v=O[w];if(v.image){let{w:a,h:l}=v;if(HJ.width!==a||HJ.height!==l)HJ.width=a,HJ.height=l;let x=v.image,n=a*l*4,D=self.HEAPU8C.subarray(x,x+n);c0.putImageData(new ImageData(new Uint8ClampedArray(D.buffer,D.byteOffset,D.byteLength),a,l),0,0),LJ.drawImage(HJ,v.x,v.y)}}if(xJ==="hybrid"){if(!P){postMessage(Y),BJ();return}if(i)G.bitmaps=P;try{let w=YJ.transferToImageBitmap(),v={...Y,images:[{image:w,x:0,y:0}],asyncRender:!0};postMessage(v,[w]),BJ()}catch{postMessage({target:"unbusy"}),BJ()}}else{if(i){G.JSRenderTime=Date.now()-(G.JSRenderTime||0)-(G.JSBitmapGenerationTime||0);let w=0;for(let v in G)w+=G[v]||0;console.log("Bitmaps: "+P+" Total: "+(w|0)+"ms",G)}postMessage({target:"unbusy"}),BJ()}}else postMessage(Y,j),BJ()},CZ=self.requestAnimationFrame?self.requestAnimationFrame.bind(self):(()=>{let G=0;return(O)=>{let j=Date.now();if(G===0)G=j+1000/oJ;else while(j+2>=G)G+=1000/oJ;let U=Math.max(G-j,0);return setTimeout(O,U)}})(),x0=self.cancelAnimationFrame?self.cancelAnimationFrame.bind(self):clearTimeout;self.init=async(G)=>{if(Z4=G.hasBitmapBug,typeof G.initialTime==="number"&&Number.isFinite(G.initialTime))wJ=G.initialTime;let O=self.fetch,j=(Y)=>{if(WebAssembly.instantiateStreaming)self.fetch=(w)=>O(Y)},U=()=>{self.fetch=O},N=(Y)=>{return j(Y),b0({wasm:!WebAssembly.instantiateStreaming?AZ(Y,!0):void 0}).finally(U)},P=async(Y)=>{ZJ=Y,PZ={create:Y._akarisub_create,destroy:Y._akarisub_destroy,setDropAnimations:Y._akarisub_set_drop_animations,createTrackMem:Y._akarisub_create_track_mem,removeTrack:Y._akarisub_remove_track,resizeCanvas:Y._akarisub_resize_canvas,addFont:Y._akarisub_add_font,reloadFonts:Y._akarisub_reload_fonts,setDefaultFont:Y._akarisub_set_default_font,setFallbackFonts:Y._akarisub_set_fallback_fonts,setMemoryLimits:Y._akarisub_set_memory_limits,getEventCount:Y._akarisub_get_event_count,allocEvent:Y._akarisub_alloc_event,removeEvent:Y._akarisub_remove_event,getStyleCount:Y._akarisub_get_style_count,allocStyle:Y._akarisub_alloc_style,removeStyle:Y._akarisub_remove_style,styleOverrideIndex:Y._akarisub_style_override_index,disableStyleOverride:Y._akarisub_disable_style_override,renderBlend:Y._akarisub_render_blend,renderImage:Y._akarisub_render_image,getChanged:Y._akarisub_get_changed,getCount:Y._akarisub_get_count,getTime:Y._akarisub_get_time,getTrackColorSpace:Y._akarisub_get_track_color_space,eventGetInt:Y._akarisub_event_get_int,eventSetInt:Y._akarisub_event_set_int,eventGetStr:Y._akarisub_event_get_str,eventSetStr:Y._akarisub_event_set_str,styleGetNum:Y._akarisub_style_get_num,styleSetNum:Y._akarisub_style_set_num,styleGetStr:Y._akarisub_style_get_str,styleSetStr:Y._akarisub_style_set_str,rrX:Y._akarisub_render_result_x,rrY:Y._akarisub_render_result_y,rrW:Y._akarisub_render_result_w,rrH:Y._akarisub_render_result_h,rrImage:Y._akarisub_render_result_image,rrNext:Y._akarisub_render_result_next,rrCollect:Y._akarisub_render_result_collect,renderBlendCollect:Y._akarisub_render_blend_collect,renderImageCollect:Y._akarisub_render_image_collect};let w=[],v=new Set;if(G.fallbackFonts&&G.fallbackFonts.length>0)for(let H of G.fallbackFonts){let k=H.trim(),S=k.toLowerCase();if(S&&!v.has(S))v.add(S),w.push(k)}try{Y.FS_createPath("/","fonts",!0,!0),Y.FS_createPath("/fonts","attached",!0,!0),Y.FS_createPath("/fonts","fallback",!0,!0),Y.FS_createPath("/","fontconfig",!0,!0),Y.FS_createPath("/","assets",!0,!0),Y.FS_createPath("/","etc",!0,!0),Y.FS_createPath("/etc","fonts",!0,!0);let H=`<?xml version="1.0"?>
1
+ (()=>{async function _2($={}){var J,Z=$,Q=(...w)=>{console.log(...w)},X=(...w)=>{console.error(...w)};function U(){N?.(Z)}(function(){var w=typeof WebAssembly<"u"&&WebAssembly.instantiateStreaming;w&&(WebAssembly.instantiateStreaming=function(r,f){var h=null;return r=Promise.resolve(r).then(function(v){return h=v.clone(),v}),w.call(WebAssembly,r,f).catch(function(v){if(console.warn("[AkariSub] instantiateStreaming failed, using ArrayBuffer fallback:",v&&v.message||v),!h)throw v;return h.arrayBuffer().then(function(G){return WebAssembly.instantiate(G,f)})})})})(),Q=(w)=>{w==="AkariSub: No usable fontconfig configuration file found, using fallback."||w.startsWith("Unable to revert mtime:")||w.trim()===""?console.debug(w):console.log(w)},X=(w)=>{w==="Fontconfig error: Cannot load default config file: No such file: (null)"||w==="Fontconfig error: Cannot load default config file: File not found"||w==="Fontconfig error: No writable cache directories"||w.includes("/var/cache/fontconfig")||w.includes("/.cache/fontconfig")||w.includes("/.local/share/fonts")?console.debug(w):console.error(w)};class K{}class Y extends K{}var N,S=!1;function M(){var w=H.buffer;o=new Int8Array(w),E=new Int16Array(w),P=new Uint8Array(w),new Uint16Array(w),I=new Int32Array(w),j=new Uint32Array(w),new Float32Array(w),new Float64Array(w),O=new BigInt64Array(w),A=new BigUint64Array(w)}H=new WebAssembly.Memory({initial:256,maximum:32768}),M();var E,I,O,o,j,A,P,H,R=new TextDecoder,W=(w,r)=>{for(var f=r+void 0;w[r]&&!(r>=f);)++r;return r},D=(w)=>w?R.decode(P.subarray(w,W(P,w))):"",C=(w,r)=>{for(var f=0,h=w.length-1;0<=h;h--){var v=w[h];v==="."?w.splice(h,1):v===".."?(w.splice(h,1),f++):f&&(w.splice(h,1),f--)}if(r)for(;f;f--)w.unshift("..");return w},V=(w)=>{var r=w.charAt(0)==="/",f=w.slice(-1)==="/";return(w=C(w.split("/").filter((h)=>!!h),!r).join("/"))||r||(w="."),w&&f&&(w+="/"),(r?"/":"")+w},p=(w)=>{var r=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(w).slice(1);if(w=r[0],r=r[1],!w&&!r)return".";return r&&=r.slice(0,-1),w+r},u=(w)=>w&&w.match(/([^\/]+|\/)\/*$/)[1],K0=()=>(w)=>(crypto.getRandomValues(w),0),d=(w)=>(d=K0())(w),h0=(...w)=>{for(var r="",f=!1,h=w.length-1;-1<=h&&!f;h--){if(f=0<=h?w[h]:"/",typeof f!="string")throw TypeError("Arguments to path.resolve must be strings");if(!f)return"";r=f+"/"+r,f=f.charAt(0)==="/"}return r=C(r.split("/").filter((v)=>!!v),!f).join("/"),(f?"/":"")+r||"."},_0=(w,r)=>{function f(y){for(var B=0;B<y.length&&y[B]==="";B++);for(var L=y.length-1;0<=L&&y[L]==="";L--);return B>L?[]:y.slice(B,L-B+1)}w=h0(w).slice(1),r=h0(r).slice(1),w=f(w.split("/")),r=f(r.split("/"));for(var h=Math.min(w.length,r.length),v=h,G=0;G<h;G++)if(w[G]!==r[G]){v=G;break}h=[];for(G=v;G<w.length;G++)h.push("..");return h=h.concat(r.slice(v)),h.join("/")},s0=(w)=>{var r=W(w,0);return R.decode(w.buffer?w.subarray(0,r):new Uint8Array(w.slice(0,r)))},s1=[],m0=(w)=>{for(var r=0,f=0;f<w.length;++f){var h=w.charCodeAt(f);127>=h?r++:2047>=h?r+=2:55296<=h&&57343>=h?(r+=4,++f):r+=3}return r},D0=(w,r,f,h)=>{if(!(0<h))return 0;var v=f;h=f+h-1;for(var G=0;G<w.length;++G){var y=w.codePointAt(G);if(127>=y){if(f>=h)break;r[f++]=y}else if(2047>=y){if(f+1>=h)break;r[f++]=192|y>>6,r[f++]=128|y&63}else if(65535>=y){if(f+2>=h)break;r[f++]=224|y>>12,r[f++]=128|y>>6&63,r[f++]=128|y&63}else{if(f+3>=h)break;r[f++]=240|y>>18,r[f++]=128|y>>12&63,r[f++]=128|y>>6&63,r[f++]=128|y&63,G++}}return r[f]=0,f-v},m1=[];function l1(w,r){m1[w]={input:[],output:[],Ga:r},V1(w,O2)}var O2={open(w){var r=m1[w.node.Oa];if(!r)throw new z(43);w.fa=r,w.seekable=!1},close(w){w.fa.Ga.Qa(w.fa)},Qa(w){w.fa.Ga.Qa(w.fa)},read(w,r,f,h){if(!w.fa||!w.fa.Ga.ab)throw new z(60);for(var v=0,G=0;G<h;G++){try{var y=w.fa.Ga.ab(w.fa)}catch(B){throw new z(29)}if(y===void 0&&v===0)throw new z(6);if(y===null||y===void 0)break;v++,r[f+G]=y}return v&&(w.node.Fa=Date.now()),v},write(w,r,f,h){if(!w.fa||!w.fa.Ga.Za)throw new z(60);try{for(var v=0;v<h;v++)w.fa.Ga.Za(w.fa,r[f+v])}catch(G){throw new z(29)}return h&&(w.node.ra=w.node.qa=Date.now()),v}},W2={ab(){return s1.length?s1.shift():null},Za(w,r){r===null||r===10?(Q(s0(w.output)),w.output=[]):r!=0&&w.output.push(r)},Qa(w){0<w.output?.length&&(Q(s0(w.output)),w.output=[])},nb(){return{xb:25856,zb:5,wb:191,yb:35387,vb:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ob(){return 0},pb(){return[24,80]}},V2={Za(w,r){r===null||r===10?(X(s0(w.output)),w.output=[]):r!=0&&w.output.push(r)},Qa(w){0<w.output?.length&&(X(s0(w.output)),w.output=[])}},k={Ea:null,ua(){return k.createNode(null,"/",16895,0)},createNode(w,r,f,h){if((f&61440)===24576||(f&61440)===4096)throw new z(63);return k.Ea||(k.Ea={dir:{node:{ta:k.ca.ta,va:k.ca.va,Na:k.ca.Na,Ra:k.ca.Ra,Ta:k.ca.Ta,Wa:k.ca.Wa,Ua:k.ca.Ua,Sa:k.ca.Sa,Va:k.ca.Va},stream:{wa:k.da.wa}},file:{node:{ta:k.ca.ta,va:k.ca.va},stream:{wa:k.da.wa,read:k.da.read,write:k.da.write,cb:k.da.cb,fb:k.da.fb}},link:{node:{ta:k.ca.ta,va:k.ca.va,La:k.ca.La},stream:{}},$a:{node:{ta:k.ca.ta,va:k.ca.va},stream:q2}}),f=ww(w,r,f,h),a(f.mode)?(f.ca=k.Ea.dir.node,f.da=k.Ea.dir.stream,f.ga={}):(f.mode&61440)===32768?(f.ca=k.Ea.file.node,f.da=k.Ea.file.stream,f.sa=0,f.ga=k.jb??(k.jb=new Uint8Array(0))):(f.mode&61440)===40960?(f.ca=k.Ea.link.node,f.da=k.Ea.link.stream):(f.mode&61440)===8192&&(f.ca=k.Ea.$a.node,f.da=k.Ea.$a.stream),f.Fa=f.ra=f.qa=Date.now(),w&&(w.ga[r]=f,w.Fa=w.ra=w.qa=f.Fa),f},ca:{ta(w){var r={};return r.ib=(w.mode&61440)===8192?w.id:1,r.lb=w.id,r.mode=w.mode,r.rb=1,r.uid=0,r.kb=0,r.Oa=w.Oa,a(w.mode)?r.size=4096:(w.mode&61440)===32768?r.size=w.sa:(w.mode&61440)===40960?r.size=w.link.length:r.size=0,r.Fa=new Date(w.Fa),r.ra=new Date(w.ra),r.qa=new Date(w.qa),r.gb=4096,r.hb=Math.ceil(r.size/r.gb),r},va(w,r){for(var f of["mode","atime","mtime","ctime"])r[f]!=null&&(w[f]=r[f]);r.size!==void 0&&(r=r.size,w.sa!=r&&(f=w.ga,w.ga=new Uint8Array(r),w.ga.set(f.subarray(0,Math.min(r,w.sa))),w.sa=r))},Na(){throw k.Xa||(k.Xa=new z(44),k.Xa.stack="<generic error, no stack>"),k.Xa},Ra(w,r,f,h){return k.createNode(w,r,f,h)},Ta(w,r,f){try{var h=Z0(r,f)}catch(G){}if(h){if(a(w.mode))for(var v in h.ga)throw new z(55);t0(h)}delete w.parent.ga[w.name],r.ga[f]=w,w.name=f,r.qa=r.ra=w.parent.qa=w.parent.ra=Date.now()},Wa(w,r){delete w.ga[r],w.qa=w.ra=Date.now()},Ua(w,r){var f=Z0(w,r),h;for(h in f.ga)throw new z(55);delete w.ga[r],w.qa=w.ra=Date.now()},Sa(w){return[".","..",...Object.keys(w.ga)]},Va(w,r,f){return w=k.createNode(w,r,41471,0),w.link=f,w},La(w){if((w.mode&61440)!==40960)throw new z(28);return w.link}},da:{read(w,r,f,h,v){if(v>=w.node.sa)return 0;return h=Math.min(w.node.sa-v,h),r.set(w.node.ga.subarray(v,v+h),f),h},write(w,r,f,h,v,G){if(r.buffer===o.buffer&&(G=!1),!h)return 0;if(w=w.node,w.ra=w.qa=Date.now(),G)w.ga=r.subarray(f,f+h),w.sa=h;else if(w.sa===0&&v===0)w.ga=r.slice(f,f+h),w.sa=h;else{G=v+h;var y=w.ga.length;y>=G||(G=Math.max(G,y*(1048576>y?2:1.125)>>>0),y&&(G=Math.max(G,256)),y=w.ga.subarray(0,w.sa),w.ga=new Uint8Array(G),w.ga.set(y)),w.ga.set(r.subarray(f,f+h),v),w.sa=Math.max(w.sa,v+h)}return h},wa(w,r,f){if(f===1?r+=w.position:f===2&&(w.node.mode&61440)===32768&&(r+=w.node.sa),0>r)throw new z(28);return r},cb(w,r,f,h,v){if((w.node.mode&61440)!==32768)throw new z(43);if(w=w.node.ga,v&2||w.buffer!==o.buffer){v=!0,h=65536*Math.ceil(r/65536);var G=nw(65536,h);if(G&&P.fill(0,G,G+h),h=G,!h)throw new z(48);if(w){if(0<f||f+r<w.length)w.subarray?w=w.subarray(f,f+r):w=Array.prototype.slice.call(w,f,f+r);o.set(w,h)}}else v=!1,h=w.byteOffset;return{Db:h,ub:v}},fb(w,r,f,h){return k.da.write(w,r,0,h,f,!1),0}}},t1=(w,r)=>{var f=0;return w&&(f|=365),r&&(f|=146),f},U1=null,i1={},q0=[],k2=1,O0=null,d1=!1,a1=!0,z=class{name="ErrnoError";constructor(w){this.ea=w}},B2=class{Pa={};node=null;get flags(){return this.Pa.flags}set flags(w){this.Pa.flags=w}get position(){return this.Pa.position}set position(w){this.Pa.position=w}},Y2=class{ca={};da={};Ia=null;constructor(w,r,f,h){w||=this,this.parent=w,this.ua=w.ua,this.id=k2++,this.name=r,this.mode=f,this.Oa=h,this.Fa=this.ra=this.qa=Date.now()}get read(){return(this.mode&365)===365}set read(w){w?this.mode|=365:this.mode&=-366}get write(){return(this.mode&146)===146}set write(w){w?this.mode|=146:this.mode&=-147}};function l(w,r={}){if(!w)throw new z(44);r.Ya??(r.Ya=!0),w.charAt(0)==="/"||(w="//"+w);var f=0;w:for(;40>f;f++){w=w.split("/").filter((B)=>!!B);for(var h=U1,v="/",G=0;G<w.length;G++){var y=G===w.length-1;if(y&&r.parent)break;if(w[G]!==".")if(w[G]==="..")if(v=p(v),h===h.parent){w=v+"/"+w.slice(G+1).join("/"),f--;continue w}else h=h.parent;else{v=V(v+"/"+w[G]);try{h=Z0(h,w[G])}catch(B){if(B?.ea===44&&y&&r.sb)return{path:v};throw B}if(!h.Ia||y&&!r.Ya||(h=h.Ia.root),(h.mode&61440)===40960&&(!y||r.Ja)){if(!h.ca.La)throw new z(52);h=h.ca.La(h),h.charAt(0)==="/"||(h=p(v)+"/"+h),w=h+"/"+w.slice(G+1).join("/");continue w}}}return{path:v,node:h}}throw new z(32)}function l0(w){for(var r;;){if(w===w.parent)return w=w.ua.eb,r?w[w.length-1]!=="/"?`${w}/${r}`:w+r:w;r=r?`${w.name}/${r}`:w.name,w=w.parent}}function O1(w,r){for(var f=0,h=0;h<r.length;h++)f=(f<<5)-f+r.charCodeAt(h)|0;return(w+f>>>0)%O0.length}function e1(w){var r=O1(w.parent.id,w.name);w.Ma=O0[r],O0[r]=w}function t0(w){var r=O1(w.parent.id,w.name);if(O0[r]===w)O0[r]=w.Ma;else for(r=O0[r];r;){if(r.Ma===w){r.Ma=w.Ma;break}r=r.Ma}}function Z0(w,r){var f=a(w.mode)?(f=k0(w,"x"))?f:w.ca.Na?0:2:54;if(f)throw new z(f);for(f=O0[O1(w.id,r)];f;f=f.Ma){var h=f.name;if(f.parent.id===w.id&&h===r)return f}return w.ca.Na(w,r)}function ww(w,r,f,h){return w=new Y2(w,r,f,h),e1(w),w}function a(w){return(w&61440)===16384}function k0(w,r){return a1?0:r.includes("r")&&!(w.mode&292)||r.includes("w")&&!(w.mode&146)||r.includes("x")&&!(w.mode&73)?2:0}function W1(w,r){if(!a(w.mode))return 54;try{return Z0(w,r),20}catch(f){}return k0(w,"wx")}function i0(w,r,f){try{var h=Z0(w,r)}catch(v){return v.ea}if(w=k0(w,"wx"))return w;if(f){if(!a(h.mode))return 54;if(h===h.parent||l0(h)==="/")return 10}else if(a(h.mode))return 31;return 0}function L0(w,r){if(!w)throw new z(r);return w}function G0(w){if(w=q0[w],!w)throw new z(8);return w}function rw(w,r=-1){if(w=Object.assign(new B2,w),r==-1)w:{for(r=0;4096>=r;r++)if(!q0[r])break w;throw new z(33)}return w.Ha=r,q0[r]=w}function o2(w,r=-1){return w=rw(w,r),w.da?.Bb?.(w),w}function fw(w,r){var f=null?.da.va,h=f?null:w;f??=w.ca.va,L0(f,63),f(h,r)}var q2={open(w){w.da=i1[w.node.Oa].da,w.da.open?.(w)},wa(){throw new z(70)}};function V1(w,r){i1[w]={da:r}}function hw(w,r){var f=r==="/";if(f&&U1)throw new z(10);if(!f&&r){var h=l(r,{Ya:!1});if(r=h.path,h=h.node,h.Ia)throw new z(10);if(!a(h.mode))throw new z(54)}r={type:w,Cb:{},eb:r,qb:[]},w=w.ua(r),w.ua=r,r.root=w,f?U1=w:h&&(h.Ia=r,h.ua&&h.ua.qb.push(r))}function d0(w,r,f){var h=l(w,{parent:!0}).node;if(w=u(w),!w)throw new z(28);if(w==="."||w==="..")throw new z(20);var v=W1(h,w);if(v)throw new z(v);if(!h.ca.Ra)throw new z(63);return h.ca.Ra(h,w,r,f)}function N2(w,r=438){return d0(w,r&4095|32768,0)}function $0(w,r=511){return d0(w,r&1023|16384,0)}function a0(w,r,f){typeof f>"u"&&(f=r,r=438),d0(w,r|8192,f)}function k1(w,r){if(!h0(w))throw new z(44);var f=l(r,{parent:!0}).node;if(!f)throw new z(44);r=u(r);var h=W1(f,r);if(h)throw new z(h);if(!f.ca.Va)throw new z(63);f.ca.Va(f,r,w)}function $w(w){var r=l(w,{parent:!0}).node;w=u(w);var f=Z0(r,w),h=i0(r,w,!0);if(h)throw new z(h);if(!r.ca.Ua)throw new z(63);if(f.Ia)throw new z(10);r.ca.Ua(r,w),t0(f)}function e0(w,r){return w=l(w,{Ja:!r}).node,L0(w.ca.ta,63)(w)}function w1(w,r){w=typeof w=="string"?l(w,{Ja:!0}).node:w,fw(w,{mode:r&4095|w.mode&-4096,qa:Date.now(),Ab:void 0})}function g0(w,r,f=438){if(w==="")throw new z(44);if(typeof r=="string"){var h={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090}[r];if(typeof h>"u")throw Error(`Unknown file open mode: ${r}`);r=h}if(f=r&64?f&4095|32768:0,typeof w=="object")h=w;else{var v=w.endsWith("/"),G=l(w,{Ja:!(r&131072),sb:!0});h=G.node,w=G.path}if(G=!1,r&64)if(h){if(r&128)throw new z(20)}else{if(v)throw new z(31);h=d0(w,f|511,0),G=!0}if(!h)throw new z(44);if((h.mode&61440)===8192&&(r&=-513),r&65536&&!a(h.mode))throw new z(54);if(!G&&(h?(h.mode&61440)===40960?v=32:(v=["r","w","rw"][r&3],r&512&&(v+="w"),v=a(h.mode)&&(v!=="r"||r&576)?31:k0(h,v)):v=44,v))throw new z(v);if(r&512&&!G){if(v=h,v=typeof v=="string"?l(v,{Ja:!0}).node:v,a(v.mode))throw new z(31);if((v.mode&61440)!==32768)throw new z(28);if(w=k0(v,"w"))throw new z(w);fw(v,{size:0,timestamp:Date.now()})}return r=rw({node:h,path:l0(h),flags:r&-131713,seekable:!0,position:0,da:h.da,tb:[],error:!1}),r.da.open&&r.da.open(r),G&&w1(h,f&511),r}function vw(w){if(w.Ha===null)throw new z(8);w.Ka&&(w.Ka=null);try{w.da.close&&w.da.close(w)}catch(r){throw r}finally{q0[w.Ha]=null}w.Ha=null}function r1(w,r,f){if(w.Ha===null)throw new z(8);if(!w.seekable||!w.da.wa)throw new z(70);if(f!=0&&f!=1&&f!=2)throw new z(28);return w.position=w.da.wa(w,r,f),w.tb=[],w.position}function Jw(w,r,f,h,v,G){if(0>h||0>v)throw new z(28);if(w.Ha===null)throw new z(8);if((w.flags&2097155)===0)throw new z(8);if(a(w.node.mode))throw new z(31);if(!w.da.write)throw new z(28);w.seekable&&w.flags&1024&&r1(w,0,2);var y=typeof v<"u";if(!y)v=w.position;else if(!w.seekable)throw new z(70);return r=w.da.write(w,r,f,h,v,G),y||(w.position+=r),r}function A2(w,r){w=typeof w=="string"?w:l0(w);for(r=r.split("/").reverse();r.length;){var f=r.pop();if(f){var h=V(w+"/"+f);try{$0(h)}catch(v){if(v.ea!=20)throw v}w=h}}return h}function H2(w,r,f,h,v,G){var y=r;w&&(w=typeof w=="string"?w:l0(w),y=r?V(w+"/"+r):w),w=t1(h,v),y=N2(y,w),f&&(r=f,typeof r=="string"&&(f=Array(m0(r)+1),r=D0(r,f,0,f.length),f.length=r,r=f),r.subarray||(r=new Uint8Array(r)),f=r,w1(y,w|146),r=g0(y,577),Jw(r,f,0,f.length,0,G),vw(r),w1(y,w))}function I0(w,r){w=V("/dev/"+w);var f=t1(!!r,!1);I0.bb??(I0.bb=64);var h=I0.bb++<<8|0;V1(h,{open(v){v.seekable=!1},close(){(void 0)?.buffer?.length&&(void 0)(10)},read(v,G,y,B){for(var L=0,_=0;_<B;_++){try{var c=r()}catch(s){throw new z(29)}if(c===void 0&&L===0)throw new z(6);if(c===null||c===void 0)break;L++,G[y+_]=c}return L&&(v.node.Fa=Date.now()),L},write(v,G,y,B){for(var L=0;L<B;L++)try{(void 0)(G[y+L])}catch(_){throw new z(29)}return B&&(v.node.ra=v.node.qa=Date.now()),L}}),a0(w,f,h)}var n={};function y0(w,r,f){if(r.charAt(0)==="/")return r;if(w=w===-100?"/":G0(w).path,r.length==0){if(!f)throw new z(44);return w}return w+"/"+r}function f1(w,r){j[w>>2]=r.ib,j[w+4>>2]=r.mode,j[w+8>>2]=r.rb,j[w+12>>2]=r.uid,j[w+16>>2]=r.kb,j[w+20>>2]=r.Oa,O[w+24>>3]=BigInt(r.size),I[w+32>>2]=4096,I[w+36>>2]=r.hb;var f=r.Fa.getTime(),h=r.ra.getTime(),v=r.qa.getTime();return O[w+40>>3]=BigInt(Math.floor(f/1000)),j[w+48>>2]=f%1000*1e6,O[w+56>>3]=BigInt(Math.floor(h/1000)),j[w+64>>2]=h%1000*1e6,O[w+72>>3]=BigInt(Math.floor(v/1000)),j[w+80>>2]=v%1000*1e6,O[w+88>>3]=BigInt(r.lb),0}var E0=void 0,z0=()=>{var w=I[+E0>>2];return E0+=4,w},B1={},Zw=()=>{if(!Y1){var w={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:(globalThis.navigator?.language??"C").replace("-","_")+".UTF-8",_:"./this.program"},r;for(r in B1)B1[r]===void 0?delete w[r]:w[r]=B1[r];var f=[];for(r in w)f.push(`${r}=${w[r]}`);Y1=f}return Y1},Y1,Gw=[],Qw=(w)=>{var r=Gw[w];return r||(Gw[w]=r=cw.get(w)),r};O0=Array(4096),hw(k,"/"),$0("/tmp"),$0("/home"),$0("/home/web_user"),function(){$0("/dev"),V1(259,{read:()=>0,write:(h,v,G,y)=>y,wa:()=>0}),a0("/dev/null",259),l1(1280,W2),l1(1536,V2),a0("/dev/tty",1280),a0("/dev/tty1",1536);var w=new Uint8Array(1024),r=0,f=()=>{return r===0&&(d(w),r=w.byteLength),w[--r]};I0("random",f),I0("urandom",f),$0("/dev/shm"),$0("/dev/shm/tmp")}(),function(){$0("/proc");var w=$0("/proc/self");$0("/proc/self/fd"),hw({ua(){var r=ww(w,"fd",16895,73);return r.da={wa:k.da.wa},r.ca={Na(f,h){f=+h;var v=G0(f);return f={parent:null,ua:{eb:"fake"},ca:{La:()=>v.path},id:f+1},f.parent=f},Sa(){return Array.from(q0.entries()).filter(([,f])=>f).map(([f])=>f.toString())}},r}},"/proc/self/fd")}();var Kw,yw,zw,jw,Xw,Uw,Ow,Ww,Vw,kw,Bw,Yw,ow,qw,Nw,Aw,Hw,Pw,_w,Dw,Lw,gw,Iw,Ew,Rw,Cw,Fw,uw,Mw,bw,Tw,pw,nw,o1,q1,N1,cw,P2={a:{b:(w,r,f,h)=>{throw`Assertion failed: ${D(w)}, at: `+[r?D(r):"unknown filename",f,h?D(h):"unknown function"]},H:function(w,r){try{return w=D(w),w1(w,r),0}catch(f){if(typeof n>"u"||f.name!=="ErrnoError")throw f;return-f.ea}},k:function(w,r,f){try{if(r=D(r),r=y0(w,r),f&-8)return-28;var h=l(r,{Ja:!0}).node;if(!h)return-44;return w="",f&4&&(w+="r"),f&2&&(w+="w"),f&1&&(w+="x"),w&&k0(h,w)?-2:0}catch(v){if(typeof n>"u"||v.name!=="ErrnoError")throw v;return-v.ea}},c:function(w,r,f){E0=f;try{var h=G0(w);switch(r){case 0:var v=z0();if(0>v)break;for(;q0[v];)v++;return o2(h,v).Ha;case 1:case 2:return 0;case 3:return h.flags;case 4:return v=z0(),h.flags|=v,0;case 12:return v=z0(),E[v+0>>1]=2,0;case 13:case 14:return 0}return-28}catch(G){if(typeof n>"u"||G.name!=="ErrnoError")throw G;return-G.ea}},G:function(w,r){try{var f=G0(w),h=f.node,v=f.da.ta;w=v?f:h,v??=h.ca.ta,L0(v,63);var G=v(w);return f1(r,G)}catch(y){if(typeof n>"u"||y.name!=="ErrnoError")throw y;return-y.ea}},C:function(w,r){try{if(r===0)return-28;var f=m0("/")+1;if(r<f)return-68;return D0("/",P,w,r),f}catch(h){if(typeof n>"u"||h.name!=="ErrnoError")throw h;return-h.ea}},w:function(w,r,f){try{var h=G0(w);if(!h.Ka){var v=l(h.path,{Ja:!0}).node,G=L0(v.ca.Sa,54)(v);h.Ka=G}w=0;var y=r1(h,0,1),B=Math.floor(y/280),L=Math.min(h.Ka.length,B+Math.floor(f/280));for(f=B;f<L;f++){var _=h.Ka[f];if(_===".")var c=h.node.id,s=4;else if(_==="..")c=l(h.path,{parent:!0}).node.id,s=4;else{try{var w0=Z0(h.node,_)}catch(r0){if(r0?.ea===28)continue;throw r0}c=w0.id,s=(w0.mode&61440)===8192?2:a(w0.mode)?4:(w0.mode&61440)===40960?10:8}O[r+w>>3]=BigInt(c),O[r+w+8>>3]=BigInt(280*(f+1)),E[r+w+16>>1]=280,o[r+w+18]=s,D0(_,P,r+w+19,256),w+=280}return r1(h,280*f,0),w}catch(r0){if(typeof n>"u"||r0.name!=="ErrnoError")throw r0;return-r0.ea}},m:function(w,r,f){E0=f;try{var h=G0(w);switch(r){case 21509:return h.fa?0:-59;case 21505:if(!h.fa)return-59;if(h.fa.Ga.nb){w=[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];var v=z0();I[v>>2]=25856,I[v+4>>2]=5,I[v+8>>2]=191,I[v+12>>2]=35387;for(var G=0;32>G;G++)o[v+G+17]=w[G]||0}return 0;case 21510:case 21511:case 21512:return h.fa?0:-59;case 21506:case 21507:case 21508:if(!h.fa)return-59;if(h.fa.Ga.ob)for(v=z0(),w=[],G=0;32>G;G++)w.push(o[v+G+17]);return 0;case 21519:if(!h.fa)return-59;return v=z0(),I[v>>2]=0;case 21520:return h.fa?-28:-59;case 21537:case 21531:if(v=z0(),!h.da.mb)throw new z(59);return h.da.mb(h,r,v);case 21523:if(!h.fa)return-59;return h.fa.Ga.pb&&(G=[24,80],v=z0(),E[v>>1]=G[0],E[v+2>>1]=G[1]),0;case 21524:return h.fa?0:-59;case 21515:return h.fa?0:-59;default:return-28}}catch(y){if(typeof n>"u"||y.name!=="ErrnoError")throw y;return-y.ea}},D:function(w,r){try{return w=D(w),f1(r,e0(w,!0))}catch(f){if(typeof n>"u"||f.name!=="ErrnoError")throw f;return-f.ea}},x:function(w,r,f){try{return r=D(r),r=y0(w,r),$0(r,f),0}catch(h){if(typeof n>"u"||h.name!=="ErrnoError")throw h;return-h.ea}},E:function(w,r,f,h){try{r=D(r);var v=h&256;return r=y0(w,r,h&4096),f1(f,v?e0(r,!0):e0(r))}catch(G){if(typeof n>"u"||G.name!=="ErrnoError")throw G;return-G.ea}},i:function(w,r,f,h){E0=h;try{r=D(r),r=y0(w,r);var v=h?z0():0;return g0(r,f,v).Ha}catch(G){if(typeof n>"u"||G.name!=="ErrnoError")throw G;return-G.ea}},v:function(w,r,f,h){try{if(r=D(r),r=y0(w,r),0>=h)return-28;var v=l(r).node;if(!v)throw new z(44);if(!v.ca.La)throw new z(28);var G=v.ca.La(v),y=Math.min(h,m0(G)),B=o[f+y];return D0(G,P,f,h+1),o[f+y]=B,y}catch(L){if(typeof n>"u"||L.name!=="ErrnoError")throw L;return-L.ea}},u:function(w,r,f,h){try{r=D(r),h=D(h),r=y0(w,r),h=y0(f,h),w=r;var v=p(w),G=p(h),y=u(w),B=u(h),L=l(w,{parent:!0}),_=L.node;L=l(h,{parent:!0});var c=L.node;if(!_||!c)throw new z(44);if(_.ua!==c.ua)throw new z(75);var s=Z0(_,y),w0=_0(w,G);if(w0.charAt(0)!==".")throw new z(28);if(w0=_0(h,v),w0.charAt(0)!==".")throw new z(55);try{var r0=Z0(c,B)}catch(v0){}if(s!==r0){var R0=a(s.mode),j0=i0(_,y,R0);if(j0)throw new z(j0);if(j0=r0?i0(c,B,R0):W1(c,B))throw new z(j0);if(!_.ca.Ta)throw new z(63);if(s.Ia||r0&&r0.Ia)throw new z(10);if(c!==_&&(j0=k0(_,"w")))throw new z(j0);t0(s);try{_.ca.Ta(s,c,B),s.parent=c}catch(v0){throw v0}finally{e1(s)}}return 0}catch(v0){if(typeof n>"u"||v0.name!=="ErrnoError")throw v0;return-v0.ea}},t:function(w){try{return w=D(w),$w(w),0}catch(r){if(typeof n>"u"||r.name!=="ErrnoError")throw r;return-r.ea}},F:function(w,r){try{return w=D(w),f1(r,e0(w))}catch(f){if(typeof n>"u"||f.name!=="ErrnoError")throw f;return-f.ea}},s:function(w,r,f){try{if(r=D(r),r=y0(w,r),f)if(f===512)$w(r);else return-28;else{w=r;var h=l(w,{parent:!0}).node;if(!h)throw new z(44);var v=u(w),G=Z0(h,v),y=i0(h,v,!1);if(y)throw new z(y);if(!h.ca.Wa)throw new z(63);if(G.Ia)throw new z(10);h.ca.Wa(h,v),t0(G)}return 0}catch(B){if(typeof n>"u"||B.name!=="ErrnoError")throw B;return-B.ea}},r:function(w,r,f){try{r=D(r),r=y0(w,r,!0);var h=Date.now(),v,G;if(f){var y=j[f>>2]+4294967296*I[f+4>>2],B=I[f+8>>2];B==1073741823?v=h:B==1073741822?v=null:v=1000*y+B/1e6,f+=16,y=j[f>>2]+4294967296*I[f+4>>2],B=I[f+8>>2],B==1073741823?G=h:B==1073741822?G=null:G=1000*y+B/1e6}else G=v=h;if((G??v)!==null){w=v;var L=l(r,{Ja:!0}).node;L0(L.ca.va,63)(L,{Fa:w,ra:G})}return 0}catch(_){if(typeof n>"u"||_.name!=="ErrnoError")throw _;return-_.ea}},l:()=>{throw""},p:()=>{throw new Y},j:()=>Date.now(),f:()=>performance.now(),q:(w)=>{var r=P.length;if(w>>>=0,2147483648<w)return!1;for(var f=1;4>=f;f*=2){var h=r*(1+0.2/f);h=Math.min(h,w+100663296);w:{h=(Math.min(2147483648,65536*Math.ceil(Math.max(w,h)/65536))-H.buffer.byteLength+65535)/65536|0;try{H.grow(h),M();var v=1;break w}catch(G){}v=void 0}if(v)return!0}return!1},z:(w,r)=>{var f=0,h=0,v;for(v of Zw()){var G=r+f;j[w+h>>2]=G,f+=D0(v,P,G,1/0)+1,h+=4}return 0},A:(w,r)=>{var f=Zw();j[w>>2]=f.length,w=0;for(var h of f)w+=m0(h)+1;return j[r>>2]=w,0},g:(w)=>{throw`exit(${w})`},d:function(w){try{var r=G0(w);return vw(r),0}catch(f){if(typeof n>"u"||f.name!=="ErrnoError")throw f;return f.ea}},h:function(w,r,f,h){try{w:{var v=G0(w);w=r;for(var G,y=r=0;y<f;y++){var B=j[w>>2],L=j[w+4>>2];w+=8;var _=v,c=B,s=L,w0=G,r0=o;if(0>s||0>w0)throw new z(28);if(_.Ha===null)throw new z(8);if((_.flags&2097155)===1)throw new z(8);if(a(_.node.mode))throw new z(31);if(!_.da.read)throw new z(28);var R0=typeof w0<"u";if(!R0)w0=_.position;else if(!_.seekable)throw new z(70);var j0=_.da.read(_,r0,c,s,w0);R0||(_.position+=j0);var v0=j0;if(0>v0){var Sw=-1;break w}if(r+=v0,v0<L)break;typeof G<"u"&&(G+=v0)}Sw=r}return j[h>>2]=Sw,0}catch(H1){if(typeof n>"u"||H1.name!=="ErrnoError")throw H1;return H1.ea}},y:function(w,r,f,h){r=-9007199254740992>r||9007199254740992<r?NaN:Number(r);try{if(isNaN(r))return 61;var v=G0(w);return r1(v,r,f),O[h>>3]=BigInt(v.position),v.Ka&&r===0&&f===0&&(v.Ka=null),0}catch(G){if(typeof n>"u"||G.name!=="ErrnoError")throw G;return G.ea}},e:function(w,r,f,h){try{w:{var v=G0(w);w=r;for(var G,y=r=0;y<f;y++){var B=j[w>>2],L=j[w+4>>2];w+=8;var _=Jw(v,o,B,L,G);if(0>_){var c=-1;break w}if(r+=_,_<L)break;typeof G<"u"&&(G+=_)}c=r}return j[h>>2]=c,0}catch(s){if(typeof n>"u"||s.name!=="ErrnoError")throw s;return s.ea}},o:function(w,r,f){var h=N1();try{return Qw(w)(r,f)}catch(v){if(q1(h),!(v instanceof K))throw v;o1(1,0)}},n:function(w,r,f,h,v){var G=N1();try{return Qw(w)(r,f,h,v)}catch(y){if(q1(G),!(y instanceof K))throw y;o1(1,0)}},a:H,B:(w,r)=>d(P.subarray(w,w+r))}};WebAssembly.instantiateStreaming(fetch(new URL("akarisub-worker.wasm",self.location.href)),P2).then((w)=>{w=w.instance.exports,Kw=w.J,yw=w.K,zw=w.L,jw=w.M,Xw=w.N,Uw=w.O,Ow=w.P,Ww=w.Q,Vw=w.R,kw=w.S,Bw=w.T,Yw=w.U,ow=w.V,qw=w.W,Nw=w.X,Aw=w.Y,Hw=w.Z,Pw=w._,_w=w.$,Dw=w.aa,Lw=w.ba,gw=w.ha,Iw=w.ia,Ew=w.ja,Rw=w.ka,Cw=w.la,Fw=w.ma,uw=w.na,Mw=w.oa,bw=w.pa,Tw=w.xa,pw=w.ya,nw=w.Aa,o1=w.Ba,q1=w.Ca,N1=w.Da,cw=w.za,S=!0,Z.noFSInit||d1||(d1=!0,k1("/dev/tty","/dev/stdin"),k1("/dev/tty","/dev/stdout"),k1("/dev/tty1","/dev/stderr"),g0("/dev/stdin",0),g0("/dev/stdout",1),g0("/dev/stderr",1)),w.I(),a1=!1,U()});let A1=()=>{try{typeof H<"u"&&(self.wasmMemory=H,self.HEAPU8C=new Uint8ClampedArray(H.buffer),typeof BigInt64Array<"u"&&(self.HEAP64=new BigInt64Array(H.buffer),self.HEAPU64=new BigUint64Array(H.buffer))),typeof P<"u"&&(self.HEAPU8=P),typeof O<"u"&&(self.HEAP64=O),typeof A<"u"&&(self.HEAPU64=A)}catch(w){}};if(typeof updateGlobalBufferAndViews==="function"){let w=updateGlobalBufferAndViews;updateGlobalBufferAndViews=(r)=>{w(r),A1()}}if(typeof M==="function"){let w=M;M=()=>{w(),A1()}}let xw=typeof U==="function"?U:null;return xw&&(U=()=>{return Object.assign(Z,{_malloc:yw,_free:zw,_akarisub_create:Kw,_akarisub_destroy:jw,_akarisub_set_drop_animations:Xw,_akarisub_create_track_mem:Uw,_akarisub_remove_track:Ow,_akarisub_resize_canvas:Ww,_akarisub_add_font:Vw,_akarisub_reload_fonts:kw,_akarisub_set_default_font:Bw,_akarisub_set_fallback_fonts:Yw,_akarisub_set_memory_limits:ow,_akarisub_get_event_count:qw,_akarisub_alloc_event:Nw,_akarisub_remove_event:Aw,_akarisub_get_style_count:Hw,_akarisub_alloc_style:Pw,_akarisub_remove_style:_w,_akarisub_style_override_index:Dw,_akarisub_disable_style_override:Lw,_akarisub_get_track_color_space:gw,_akarisub_event_get_int:Iw,_akarisub_event_set_int:Ew,_akarisub_event_get_str:Rw,_akarisub_event_set_str:Cw,_akarisub_style_get_num:Fw,_akarisub_style_set_num:uw,_akarisub_style_get_str:Mw,_akarisub_style_set_str:bw,_akarisub_render_blend_collect:Tw,_akarisub_render_image_collect:pw}),typeof n<"u"&&(Z.FS_createPath=A2,Z.FS_createDataFile=H2),A1(),xw()}),S?J=Z:J=new Promise((w)=>{N=w}),J}var sw=_2;var P1=[null,"BT601",null,"BT601","BT601","BT709","BT709","SMPTE240M","SMPTE240M","FCC","FCC"];function mw($,J=!1){let Z=[],Q=$.split(/[\r\n]+/g),X=Q.length,U=null,K=null;for(let Y=0;Y<X;Y++){let N=Q[Y];if(!N||/^\s*$/.test(N))continue;let S=N[0];if(S==="["){let M=N.match(/^\[(.*)\]$/);if(M){if(J&&M[1].toLowerCase()==="events")break;U=null,K={name:M[1],body:[]},Z.push(K);continue}}if(!K)continue;if(S===";")K.body.push({type:"comment",value:N.substring(1)});else{let M=N.indexOf(":");if(M===-1)continue;let E=N.substring(0,M),I=N.substring(M+1).trim();if(U||E==="Format"){let O=I.split(",");if(U&&O.length>U.length){let j=O.slice(U.length-1).join(",");O=O.slice(0,U.length-1),O.push(j)}let o=O.length;for(let j=0;j<o;j++)O[j]=O[j].trim();if(U){let j={},A=Math.min(U.length,o);for(let P=0;P<A;P++)j[U[P]]=O[P];I=j}else I=O}if(E==="Format")U=I;K.body.push({key:E,value:I})}}return Z}var D2=/\\blur(?:[0-9]+\.)?[0-9]+/gm;function _1($){return $.replace(D2,"")}var L2=[{w:7680,h:4320},{w:3840,h:2160},{w:2560,h:1440},{w:1920,h:1080},{w:1280,h:720}];function g2($,J){let Z=[...L2].sort((Q,X)=>Q.w-X.w);for(let Q of Z)if($<=Q.w&&J<=Q.h)return Q;return{w:Math.ceil($/100)*100,h:Math.ceil(J/100)*100}}function x($,J){return J&&J.includes(".")?$.toFixed(2).replace(/\.?0+$/,""):Math.round($)}function D1($){let J=$.match(/PlayResX:\s*(\d+)/i),Z=$.match(/PlayResY:\s*(\d+)/i),Q=J?parseInt(J[1],10):1920,X=Z?parseInt(Z[1],10):1080,U=/\\pos\s*\(\s*(-?[\d.]+)\s*,\s*(-?[\d.]+)\s*\)/g,K=/\\move\s*\(\s*(-?[\d.]+)\s*,\s*(-?[\d.]+)\s*,\s*(-?[\d.]+)\s*,\s*(-?[\d.]+)/g,Y=/\\org\s*\(\s*(-?[\d.]+)\s*,\s*(-?[\d.]+)\s*\)/g,N=/\\i?clip\s*\(\s*(-?[\d.]+)\s*,\s*(-?[\d.]+)\s*,\s*(-?[\d.]+)\s*,\s*(-?[\d.]+)\s*\)/g,S=0,M=0,E=(C,V,p)=>{let u,K0=new RegExp(C.source,"g");while((u=K0.exec($))!==null){for(let d of V)if(u[d]){let h0=Math.abs(parseFloat(u[d]));if(h0>S)S=h0}for(let d of p)if(u[d]){let h0=Math.abs(parseFloat(u[d]));if(h0>M)M=h0}}};if(E(U,[1],[2]),E(K,[1,3],[2,4]),E(Y,[1],[2]),E(N,[1,3],[2,4]),S<=Q&&M<=X)return $;let I=g2(S,M),O=Q/I.w,o=X/I.h,j=Math.min(O,o),A=Math.max(O,o),P=1,H=$,R=H.match(/(\[Events\][\s\S]*)/i);if(!R)return H;let W=R[1];return W=W.replace(U,(C,V,p)=>`\\pos(${x(parseFloat(V)*O,V)},${x(parseFloat(p)*o,p)})`),W=W.replace(/\\move\s*\(\s*(-?[\d.]+)\s*,\s*(-?[\d.]+)\s*,\s*(-?[\d.]+)\s*,\s*(-?[\d.]+)(?:\s*,\s*(-?[\d.]+)\s*,\s*(-?[\d.]+))?\s*\)/g,(C,V,p,u,K0,d,h0)=>{let _0=`\\move(${x(parseFloat(V)*O,V)},${x(parseFloat(p)*o,p)},${x(parseFloat(u)*O,u)},${x(parseFloat(K0)*o,K0)}`;return d?`${_0},${d},${h0})`:`${_0})`}),W=W.replace(Y,(C,V,p)=>`\\org(${x(parseFloat(V)*O,V)},${x(parseFloat(p)*o,p)})`),W=W.replace(/\\(i?clip)\s*\(\s*(-?[\d.]+)\s*,\s*(-?[\d.]+)\s*,\s*(-?[\d.]+)\s*,\s*(-?[\d.]+)\s*\)/g,(C,V,p,u,K0,d)=>`\\${V}(${x(parseFloat(p)*O,p)},${x(parseFloat(u)*o,u)},${x(parseFloat(K0)*O,K0)},${x(parseFloat(d)*o,d)})`),W=W.replace(/\\fs([\d.]+)/g,(C,V)=>`\\fs${x(parseFloat(V)*A,V)}`),W=W.replace(/\\fscx([\d.]+)/g,(C,V)=>`\\fscx${x(parseFloat(V)*P,V)}`),W=W.replace(/\\xbord([\d.]+)/g,(C,V)=>`\\xbord${x(parseFloat(V)*O,V)}`),W=W.replace(/\\ybord([\d.]+)/g,(C,V)=>`\\ybord${x(parseFloat(V)*o,V)}`),W=W.replace(/\\xshad(-?[\d.]+)/g,(C,V)=>`\\xshad${x(parseFloat(V)*O,V)}`),W=W.replace(/\\yshad(-?[\d.]+)/g,(C,V)=>`\\yshad${x(parseFloat(V)*o,V)}`),["fsp","bord","shad","be","blur"].forEach((C)=>{let V=new RegExp(`\\\\${C}(-?[\\d.]+)`,"g");W=W.replace(V,(p,u)=>`\\${C}${x(parseFloat(u)*j,u)}`)}),W=W.replace(/(\\i?clip\s*\([^,)]+m[^)]+\)|\\p[1-9][^}]*?)(?=[\\}]|$)/g,(C)=>{return C.replace(/(-?[\d.]+)\s+(-?[\d.]+)/g,(V,p,u)=>{return`${x(parseFloat(p)*O,p)} ${x(parseFloat(u)*o,u)}`})}),H.substring(0,R.index)+W}var o0=0,aw=1,J0=null,L1=!1,P0=()=>typeof performance<"u"?performance.now():Date.now(),z1=P0(),J1=24,T0=!1,ew=!1,n1="wasm",Y0={},Z1={},w2=0,r2=0,C0=[],m=!1,R1=!1,p0=!1,I2=3,t=[];self.width=0;self.height=0;var q={framesRendered:0,framesDropped:0,totalRenderTime:0,maxRenderTime:0,minRenderTime:1/0,lastRenderTime:0,renderStartTime:0,pendingRenders:0,totalEvents:0,currentEventIndex:0,cacheHits:0,cacheMisses:0},E2=()=>{q.framesRendered=0,q.framesDropped=0,q.totalRenderTime=0,q.maxRenderTime=0,q.minRenderTime=1/0,q.lastRenderTime=0,q.cacheHits=0,q.cacheMisses=0},U0=!1,F0=!0,X0=null,N0=null,n0=!1,B0=null,f2=null,F=0,H0=null,C1=!1,h2=!1,R2=!1,i=null,G1=!1,$2=new TextEncoder,C2=new TextDecoder,F1=null,j1=128,v2=Math.max(j1,4096),J2=v2;var F2=30,u2=1,M2=24,u1=1000,Z2=Array(j1),lw=!1,M1=3,v1=5,e=0,Q0=0,b2=[],T2=[],p2=[],g1=null;var n2=!1,X1=null,A0=null,b1=($)=>new Promise((J)=>setTimeout(J,$)),G2=()=>{if(lw)return;for(let $=0;$<j1;$++)Z2[$]={w:0,h:0,x:0,y:0,image:0};lw=!0},tw=($)=>{if($<j1)return Z2[$];return{w:0,h:0,x:0,y:0,image:0}},c1=($)=>{if(!i||$<=0)return;let J=M1+v1*$;if(Q0>=J&&e)return;let Z=Math.max(J,(Q0||64)*2),Q=Z*Int32Array.BYTES_PER_ELEMENT;if(e)i._free(e),e=0,Q0=0;if(e=i._malloc(Q),!e)throw Q0=0,Error("Failed to allocate render-collect buffer");Q0=Z},Q1=($)=>{if(!F)return;let J=g(),Z=T();if(c1(J2),n1==="wasm")J.renderBlendCollect(Z,$,0,e,Q0);else J.renderImageCollect(Z,$,0,e,Q0)},x0=()=>{q.totalEvents=F?g().getEventCount(F):0},Q2=()=>{if(!F)return null;let $=g(),J=T(),Z=$.getEventCount(J);if(Z<=0)return null;let Q=Number.POSITIVE_INFINITY;for(let X=0;X<Z;X++){let U=$.eventGetInt(J,X,f0.Start)/u1;if(Number.isFinite(U)&&U<Q)Q=U}if(!Number.isFinite(Q))return null;return Math.max(0,Q)},c2=()=>{if(!F)return null;let $=g(),J=T(),Z=$.getEventCount(J);if(Z<=0)return null;let Q=Number.POSITIVE_INFINITY,X=0;for(let U=0;U<Z;U++){let K=$.eventGetInt(J,U,f0.Start)/u1,Y=Math.max(0,$.eventGetInt(J,U,f0.Duration)/u1);if(!Number.isFinite(K))continue;let N=K+Y;if(K<Q)Q=K;if(N>X)X=N}if(!Number.isFinite(Q))return null;if(X<Q)X=Q;return{start:Math.max(0,Q),end:Math.max(0,X)}},x2=async()=>{if(!F)return;let $=c2();if(!$)return;let J=Math.min($.end,$.start+F2),Z=0;for(let Q=$.start;Q<=J;Q+=u2){if(!F)return;if(T0&&(p0||t.length>0||q.pendingRenders>0)){await b1(0);continue}if(Q1(Q),Z++,T0||Z%M2===0)await b1(0)}Q1(J)};var x1=()=>{if(n2=!1,g1)clearTimeout(g1),g1=null},S2=()=>{if(!h2||A0||!F)return;A0=(async()=>{await b1(0);try{await x2()}catch($){if(m)console.warn("[AkariSub] Full track warmup failed, continuing:",$)}try{if(F)Q1(z2())}catch($){if(m)console.warn("[AkariSub] Post-warmup re-prime failed, continuing:",$)}})().finally(()=>{A0=null})};var f0={Start:0,Duration:1,ReadOrder:2,Layer:3,Style:4,MarginL:5,MarginR:6,MarginV:7},u0={Name:0,Effect:1,Text:2},b={FontSize:0,PrimaryColour:1,SecondaryColour:2,OutlineColour:3,BackColour:4,Bold:5,Italic:6,Underline:7,StrikeOut:8,ScaleX:9,ScaleY:10,Spacing:11,Angle:12,BorderStyle:13,Outline:14,Shadow:15,Alignment:16,MarginL:17,MarginR:18,MarginV:19,Encoding:20,treat_fontname_as_pattern:21,Blur:22,Justify:23},K1={Name:0,FontName:1},s2=($)=>{return $2.encode($)},m2=($)=>{if(!i)return 0;let J=s2($),Z=i._malloc(J.length+1);if(!Z)return 0;return self.HEAPU8.set(J,Z),self.HEAPU8[Z+J.length]=0,Z},M0=($)=>{if(!$)return"";let J=$,Z=self.HEAPU8;while(Z[J]!==0)J++;return C2.decode(Z.subarray($,J))},V0=($,J)=>{let Z=m2($);try{return J(Z)}finally{if(Z&&i)i._free(Z)}},g=()=>{if(!F1)throw Error("AkariSub API is not initialized");return F1},T=()=>{if(!F)throw Error("AkariSub instance is not initialized");return F};self.addFont=({font:$})=>K2($,!1);var h1=($)=>{if($=$.trim().toLowerCase(),$.startsWith("@"))$=$.substring(1);if(Z1[$])return;if(Z1[$]=!0,!Y0[$]){if(ew)postMessage({target:"getLocalFont",font:$})}else K2(Y0[$])},K2=($,J=!0)=>{if(typeof $==="string")p1($,(Z)=>{iw(new Uint8Array(Z),J)},console.error);else iw($,J)};var I1=null,l2=()=>{if(I1)return;I1=setTimeout(()=>{if(I1=null,F)g().reloadFonts(F)},16)},c0=($,J)=>{if(!i||!F){if(m)console.warn("[AkariSub] Cannot add embedded font, module or AkariSub not ready:",J);return}try{let Z=g(),Q=i._malloc($.length);if(!Q){console.warn("[AkariSub] Failed to allocate memory for embedded font:",J);return}if(self.HEAPU8.set($,Q),V0(J,(X)=>{Z.addFont(F,X,Q,$.length)}),m)console.log("[AkariSub] Added embedded font:",J,"size:",$.length)}catch(Z){console.warn("[AkariSub] Failed to add embedded font:",J,Z)}},iw=($,J=!0)=>{let Z=J?"/fonts/fallback":"/fonts/attached",Q=J?"fallback-"+r2++:"attached-"+w2++;if(i){try{i.FS_createDataFile(Z,Q,$,!0,!0,!0)}catch(X){console.warn("Failed to write font to filesystem:",Z+"/"+Q,X)}if(!J)c0($,Q);else if(F)c0($,Q);else C0.push({data:$,name:Q})}l2()},$1=($,J=!0)=>{let Z=J?"/fonts/fallback":"/fonts/attached",Q=J?"fallback-"+r2++:"attached-"+w2++;if(i){try{if(i.FS_createDataFile(Z,Q,$,!0,!0,!0),m)console.log("[AkariSub] Wrote font to FS:",Z+"/"+Q,"size:",$.length)}catch(X){console.warn("Failed to write font to filesystem:",Z+"/"+Q,X)}if(!J)c0($,Q);else if(F)c0($,Q);else C0.push({data:$,name:Q})}},y2=($)=>{if(!Y0)return;if($.length>500000){let Z=$.match(/\[V4\+?\s*Styles?\][^\[]*(?=\[|$)/i);if(Z){let U=Z[0].matchAll(/^Style:[^,]*,([^,]+)/gm);for(let K of U)h1(K[1].trim())}let Q=$.match(/\[Events\][\s\S]*/i);if(Q){let U=Q[0].matchAll(/\\fn([^\\}]*?)[\\}]/g),K=0;for(let Y of U)if(h1(Y[1]),++K>=1000)break}}else{let Z=mw($,!0);for(let X=0;X<Z.length;X++)for(let U=0;U<Z[X].body.length;U++){let K=Z[X].body[U];if(K.key==="Style"&&typeof K.value==="object"&&!Array.isArray(K.value))h1(K.value.Fontname)}let Q=$.match(/\[Events\][\s\S]*/i);if(Q){let U=Q[0].matchAll(/\\fn([^\\}]*?)[\\}]/g);for(let K of U)h1(K[1])}}},T1=($,J)=>{let Z=new XMLHttpRequest;return Z.open("GET",$,!1),Z.responseType=J?"arraybuffer":"text",Z.send(null),Z.response},p1=($,J,Z)=>{let Q=new XMLHttpRequest;Q.open("GET",$,!0),Q.responseType="arraybuffer",Q.onload=()=>{if((Q.status===200||Q.status===0)&&Q.response)return J(Q.response)},Q.onerror=Z,Q.send(null)};self.setTrack=({content:$})=>{if(x1(),A0=null,y2($),R1)$=D1($);if(C1)$=_1($);let J=g(),Z=T();V0($,(Q)=>{J.createTrackMem(Z,Q)}),x0(),X1=Q2(),H0=P1[J.getTrackColorSpace(Z)],G1=!0,postMessage({target:"verifyColorSpace",subtitleColorSpace:H0})};self.getColorSpace=()=>{postMessage({target:"verifyColorSpace",subtitleColorSpace:H0})};self.freeTrack=()=>{x1(),A0=null,X1=null;let $=g(),J=T();$.removeTrack(J),x0()};self.setTrackByUrl=({url:$})=>{self.setTrack({content:T1($)})};var b0=!0,z2=()=>{let $=(P0()-z1)/1000;if(b0)return o0;else{if($>5)console.error("Didn't receive currentTime > 5 seconds. Assuming video was paused."),j2(!0);return o0+$*aw}},t2=($)=>{if(o0=$,z1=P0(),T0)return;if(!J0)if(L1)J0=S1(y1);else y1(),L1=!0,setTimeout(()=>{L1=!1},20)},j2=($)=>{if(T0){if(b0=$,J0)dw(J0),J0=null;return}if($!==b0)if(b0=$,$){if(J0)dw(J0),J0=null}else z1=P0(),J0=S1(y1)},i2=()=>{if(p0||t.length===0)return;if(t.length>1){let J=t.length-1;q.framesDropped+=J;let Z=t[t.length-1];t.length=0,t.push(Z)}let $=t.shift();if(!$)return;S0($.time,$.force)},W0=()=>{p0=!1,i2()},S0=($,J)=>{if(p0){let O={time:$,force:J?1:0};if(O.force)t.length=0;else{let o=t[t.length-1];if(o&&Math.abs(o.time-O.time)>0.25)t.length=0}if(t.length>=I2)t.shift(),q.framesDropped++;t.push(O);return}p0=!0,G2();let Z={},Q=performance.now();q.renderStartTime=Q,q.pendingRenders++;let X=g(),U=T(),K=J?1:0;c1(v2);let Y=n1==="wasm"?X.renderBlendCollect(U,$,K,e,Q0):X.renderImageCollect(U,$,K,e,Q0),N=new Int32Array(self.wasmMemory.buffer,e,M1),S=N[0],M=N[1],I=performance.now()-Q;if(q.lastRenderTime=I,q.totalRenderTime+=I,q.maxRenderTime=Math.max(q.maxRenderTime,I),I>0)q.minRenderTime=Math.min(q.minRenderTime,I);if(S!==0||J)q.framesRendered++,q.cacheMisses++;else q.cacheHits++;if(m){let O=performance.now(),o=N[2];Z.WASMRenderTime=o-Q,Z.WASMBitmapDecodeTime=O-o,Z.JSRenderTime=Date.now()}if(S!==0||J){let O=b2,o=T2;if(O.length=0,o.length=0,Y===0)return E1({images:O,buffers:o,times:Z});let j=e+M1*Int32Array.BYTES_PER_ELEMENT,A=new Int32Array(self.wasmMemory.buffer,j,Y*v1);if(U0&&n0!==!0){let H=p2;H.length=Y;for(let R=0;R<Y;++R){let W=R*v1,D=tw(R);D.x=A[W],D.y=A[W+1],D.w=A[W+2],D.h=A[W+3],D.image=0;let C=A[W+4],V=D.w*D.h*4,p=new Uint8ClampedArray(self.wasmMemory.buffer,C,V),u=new ImageData(p,D.w,D.h);H[R]=F0?createImageBitmap(u,{premultiplyAlpha:"none",colorSpaceConversion:"none"}):createImageBitmap(u),O[R]=D}Promise.all(H).then((R)=>{for(let W=0;W<Y;W++)O[W].image=R[W];if(m)Z.JSBitmapGenerationTime=Date.now()-(Z.JSRenderTime||0);E1({images:O,buffers:R,times:Z})}).catch(()=>{if(F0)F0=!1,console.warn("[AkariSub] createImageBitmap options not supported, disabling"),q.pendingRenders--,W0(),S0($,J);else q.pendingRenders--,postMessage({target:"unbusy"}),W0()})}else{for(let H=0;H<Y;++H){let R=H*v1,W=tw(H);if(W.x=A[R],W.y=A[R+1],W.w=A[R+2],W.h=A[R+3],W.image=A[R+4],!N0){let D=W.image,C=W.w*W.h*4,V=new Uint8ClampedArray(C);V.set(self.HEAPU8C.subarray(D,D+C)),o.push(V.buffer),W.image=V}O[H]=W}E1({images:O,buffers:o,times:Z})}}else q.pendingRenders--,postMessage({target:"unbusy"}),W0()};self.demand=({time:$})=>{o0=$,z1=P0();let J=G1?1:0;G1=!1,S0($,J)};var y1=($)=>{if(J0=null,S0(z2(),$),!b0)J0=S1(y1)},E1=({times:$,images:J,buffers:Z})=>{q.pendingRenders--;let{width:Q,height:X}=self,U=J.length,K={target:"render",asyncRender:U0,images:J,times:$,width:Q,height:X,colorSpace:H0};if(n0){if(X0.height!==X||X0.width!==Q)X0.width=Q,X0.height=X;if(N0.clearRect(0,0,Q,X),U0)for(let Y=0;Y<U;Y++){let N=J[Y];if(N.image)N0.drawImage(N.image,N.x,N.y),N.image.close()}else for(let Y=0;Y<U;Y++){let N=J[Y];if(N.image){let{w:S,h:M}=N;if(B0.width!==S||B0.height!==M)B0.width=S,B0.height=M;let E=N.image,I=S*M*4,O=self.HEAPU8C.subarray(E,E+I);f2.putImageData(new ImageData(O,S,M),0,0),N0.drawImage(B0,N.x,N.y)}}if(n0==="hybrid"){if(!U){postMessage(K),W0();return}if(m)$.bitmaps=U;try{let Y=X0.transferToImageBitmap(),N={...K,images:[{image:Y,x:0,y:0}],asyncRender:!0};postMessage(N,[Y]),W0()}catch{postMessage({target:"unbusy"}),W0()}}else{if(m){$.JSRenderTime=Date.now()-($.JSRenderTime||0)-($.JSBitmapGenerationTime||0);let Y=0;for(let N in $)Y+=$[N]||0;console.log("Bitmaps: "+U+" Total: "+(Y|0)+"ms",$)}postMessage({target:"unbusy"}),W0()}}else postMessage(K,Z),W0()},S1=self.requestAnimationFrame?self.requestAnimationFrame.bind(self):(()=>{let $=0;return(J)=>{let Z=P0();if($===0)$=Z+1000/J1;else while(Z+2>=$)$+=1000/J1;let Q=Math.max($-Z,0);return setTimeout(J,Q)}})(),dw=self.cancelAnimationFrame?self.cancelAnimationFrame.bind(self):clearTimeout;self.init=async($)=>{if(R2=$.hasBitmapBug,h2=!!$.fullTrackWarmup,typeof $.initialTime==="number"&&Number.isFinite($.initialTime))o0=$.initialTime;let J=self.fetch,Z=(K)=>{if(WebAssembly.instantiateStreaming)self.fetch=(Y)=>J(K)},Q=()=>{self.fetch=J},X=(K)=>{return Z(K),sw({wasm:!WebAssembly.instantiateStreaming?T1(K,!0):void 0}).finally(Q)},U=async(K)=>{i=K,F1={create:K._akarisub_create,destroy:K._akarisub_destroy,setDropAnimations:K._akarisub_set_drop_animations,createTrackMem:K._akarisub_create_track_mem,removeTrack:K._akarisub_remove_track,resizeCanvas:K._akarisub_resize_canvas,addFont:K._akarisub_add_font,reloadFonts:K._akarisub_reload_fonts,setDefaultFont:K._akarisub_set_default_font,setFallbackFonts:K._akarisub_set_fallback_fonts,setMemoryLimits:K._akarisub_set_memory_limits,getEventCount:K._akarisub_get_event_count,allocEvent:K._akarisub_alloc_event,removeEvent:K._akarisub_remove_event,getStyleCount:K._akarisub_get_style_count,allocStyle:K._akarisub_alloc_style,removeStyle:K._akarisub_remove_style,styleOverrideIndex:K._akarisub_style_override_index,disableStyleOverride:K._akarisub_disable_style_override,getTrackColorSpace:K._akarisub_get_track_color_space,eventGetInt:K._akarisub_event_get_int,eventSetInt:K._akarisub_event_set_int,eventGetStr:K._akarisub_event_get_str,eventSetStr:K._akarisub_event_set_str,styleGetNum:K._akarisub_style_get_num,styleSetNum:K._akarisub_style_set_num,styleGetStr:K._akarisub_style_get_str,styleSetStr:K._akarisub_style_set_str,renderBlendCollect:K._akarisub_render_blend_collect,renderImageCollect:K._akarisub_render_image_collect};let Y=[],N=new Set;if($.fallbackFonts&&$.fallbackFonts.length>0)for(let j of $.fallbackFonts){let A=j.trim(),P=A.toLowerCase();if(P&&!N.has(P))N.add(P),Y.push(A)}try{K.FS_createPath("/","fonts",!0,!0),K.FS_createPath("/fonts","attached",!0,!0),K.FS_createPath("/fonts","fallback",!0,!0),K.FS_createPath("/","fontconfig",!0,!0),K.FS_createPath("/","assets",!0,!0),K.FS_createPath("/","etc",!0,!0),K.FS_createPath("/etc","fonts",!0,!0);let j=`<?xml version="1.0"?>
2
2
  <!DOCTYPE fontconfig SYSTEM "fonts.dtd">
3
3
  <fontconfig>
4
4
  <!-- Font directories listed in priority order -->
@@ -36,4 +36,4 @@
36
36
  </rescan>
37
37
  </config>
38
38
  </fontconfig>
39
- `,k=m0.encode(H);Y.FS_createDataFile("/assets","fonts.conf",k,!0,!1,!1),Y.FS_createDataFile("/etc/fonts","fonts.conf",k,!0,!1,!1)}catch(H){console.warn("Failed to create font directories or fonts.conf:",H)}if(self.width=G.width,self.height=G.height,gJ=!!G.onDemandRender,yZ=G.blendMode,UJ=G.asyncRender,UJ&&typeof createImageBitmap>"u")UJ=!1,console.error("'createImageBitmap' needed for 'asyncRender' unsupported!");if(UJ)try{let k=new OffscreenCanvas(1,1).getContext("2d");if(k){let S=k.getImageData(0,0,1,1);await createImageBitmap(S,{premultiplyAlpha:"none",colorSpaceConversion:"none"}).catch(()=>{TJ=!1,console.warn("[AkariSub] createImageBitmap options not supported (Safari?), rendering without options")})}}catch{TJ=!1}PJ=G.availableFonts,i=G.debug,oJ=G.targetFps||oJ,h0=G.useLocalFonts,HZ=G.dropAllBlur,NZ=G.clampPos,await(async()=>{let H=[];for(let k of w){let S=k.trim().toLowerCase(),M=S.startsWith("@")?S.substring(1):S;if(PJ&&PJ[M]){let h=PJ[M];if(typeof h==="string"){let B=new Promise((o)=>{IZ(h,(b)=>{if(lJ(new Uint8Array(b),!0),dJ[M]=!0,i)console.log("[AkariSub] Loaded fallback font async:",M);o()},(b)=>{console.error("Failed to load fallback font:",M,b),o()})});H.push(B)}else lJ(h,!0),dJ[M]=!0}}if(H.length>0){let k=null,S=!1,M=new Promise((h)=>{k=setTimeout(()=>{S=!0,console.warn("[AkariSub] Fallback font loading timeout, continuing with available fonts"),h()},30000)});if(await Promise.race([Promise.all(H).then(()=>{if(k!==null)clearTimeout(k)}),M]),!S&&i)console.log("[AkariSub] All fallback fonts loaded successfully")}})();let l=w.length>0?w[0]:null;if(c=qJ(l||"",(H)=>{return E().create(self.width,self.height,H,i?1:0)}),FJ.length>0){for(let{data:H,name:k}of FJ)SJ(H,k);FJ.length=0,E().reloadFonts(c)}if(w.length>0)qJ(w.join(","),(H)=>{E().setFallbackFonts(u(),H)});let x=G.subContent;if(!x)x=AZ(G.subUrl);if(x.length>500000){if(postMessage({target:"partial_ready"}),i)console.log("[AkariSub] Large subtitle detected, emitting partial_ready early")}if(LZ(x),NZ)x=WZ(x);if(HZ)x=OZ(x);let D=!1,L=[];for(let H of G.fonts||[])if(typeof H==="string"){let k=new Promise((S)=>{IZ(H,(M)=>{if(lJ(new Uint8Array(M),!1),D=!0,i)console.log("[AkariSub] Loaded attached font async:",H);S()},(M)=>{console.error("Failed to load attached font:",H,M),S()})});L.push(k)}else lJ(H,!1),D=!0;if(L.length>0){let H=null,k=!1,S=new Promise((M)=>{H=setTimeout(()=>{k=!0,console.warn("[AkariSub] Attached font loading timeout, continuing with available fonts"),M()},30000)});if(await Promise.race([Promise.all(L).then(()=>{if(H!==null)clearTimeout(H)}),S]),!k&&i)console.log("[AkariSub] Attached font loading complete")}if(D){if(i)console.log("[AkariSub] Reloading fonts after writing attached fonts to FS");if(E().reloadFonts(u()),i)console.log("[AkariSub] Font reload complete")}if(LZ(x),qJ(x,(H)=>{E().createTrackMem(u(),H)}),JZ=d0(),IJ=jZ[E().getTrackColorSpace(u())],E().setDropAnimations(u(),G.dropAllAnimations||0),G.libassMemoryLimit>0||G.libassGlyphLimit>0)E().setMemoryLimits(u(),G.libassGlyphLimit||0,G.libassMemoryLimit||0);o0(),RZ(l0);try{nJ(wJ)}catch(H){if(i)console.warn("[AkariSub] Prewarm render failed, continuing:",H)}rJ=!0,postMessage({target:"ready"}),postMessage({target:"verifyColorSpace",subtitleColorSpace:IJ}),U4()};N(G.wasmUrl).then(P).catch((Y)=>{console.error("[AkariSub] WASM loading failed:",Y),postMessage({target:"error",error:"WASM loading failed: "+(Y&&Y.message?Y.message:String(Y))})})};self.offscreenCanvas=({transferable:G})=>{if(YJ=G[0],LJ=YJ.getContext("2d"),!UJ)HJ=new OffscreenCanvas(self.height,self.width),c0=HJ.getContext("2d",{desynchronized:!0});xJ=!0};self.detachOffscreen=()=>{YJ=new OffscreenCanvas(self.height,self.width),LJ=YJ.getContext("2d",{desynchronized:!0}),xJ="hybrid"};self.canvas=({width:G,height:O,videoWidth:j,videoHeight:U,force:N})=>{if(G==null)throw Error("Invalid canvas size specified");if(self.width=G,self.height=O,c)E().resizeCanvas(c,G,O,j,U);if(N)hJ(wJ,!0)};self.video=({currentTime:G,isPaused:O,rate:j})=>{if(G!=null)H4(G);if(O!=null)i0(O);if(j!=null)S0=j};self.destroy=()=>{if(vZ(),AJ=null,JZ=null,ZJ){if(YZ)ZJ._free(YZ),YZ=0,X4=0;if(KJ)ZJ._free(KJ),KJ=0,VJ=0}if(c)E().destroy(c),c=0};self.setAsyncRender=({value:G})=>{UJ=G&&typeof createImageBitmap<"u"};var a0=(G,O)=>{let j=E(),U=u();for(let N of Object.keys(O)){let P=O[N];if(P==null||N==="_index")continue;if(N in XJ){j.eventSetInt(U,G,XJ[N],Number(P));continue}if(N in bJ)qJ(String(P),(Y)=>{j.eventSetStr(U,G,bJ[N],Y)})}},w4=(G)=>{let O=E(),j=u();return{Start:O.eventGetInt(j,G,XJ.Start),Duration:O.eventGetInt(j,G,XJ.Duration),ReadOrder:O.eventGetInt(j,G,XJ.ReadOrder),Layer:O.eventGetInt(j,G,XJ.Layer),Style:String(O.eventGetInt(j,G,XJ.Style)),MarginL:O.eventGetInt(j,G,XJ.MarginL),MarginR:O.eventGetInt(j,G,XJ.MarginR),MarginV:O.eventGetInt(j,G,XJ.MarginV),Name:_J(O.eventGetStr(j,G,bJ.Name)),Text:_J(O.eventGetStr(j,G,bJ.Text)),Effect:_J(O.eventGetStr(j,G,bJ.Effect))}},t0=(G,O)=>{let j=E(),U=u();for(let N of Object.keys(O)){let P=O[N];if(P==null)continue;if(N in f){j.styleSetNum(U,G,f[N],Number(P));continue}if(N in iJ)qJ(String(P),(Y)=>{j.styleSetStr(U,G,iJ[N],Y)})}},D4=(G)=>{let O=E(),j=u();return{Name:_J(O.styleGetStr(j,G,iJ.Name)),FontName:_J(O.styleGetStr(j,G,iJ.FontName)),FontSize:O.styleGetNum(j,G,f.FontSize),PrimaryColour:O.styleGetNum(j,G,f.PrimaryColour),SecondaryColour:O.styleGetNum(j,G,f.SecondaryColour),OutlineColour:O.styleGetNum(j,G,f.OutlineColour),BackColour:O.styleGetNum(j,G,f.BackColour),Bold:O.styleGetNum(j,G,f.Bold),Italic:O.styleGetNum(j,G,f.Italic),Underline:O.styleGetNum(j,G,f.Underline),StrikeOut:O.styleGetNum(j,G,f.StrikeOut),ScaleX:O.styleGetNum(j,G,f.ScaleX),ScaleY:O.styleGetNum(j,G,f.ScaleY),Spacing:O.styleGetNum(j,G,f.Spacing),Angle:O.styleGetNum(j,G,f.Angle),BorderStyle:O.styleGetNum(j,G,f.BorderStyle),Outline:O.styleGetNum(j,G,f.Outline),Shadow:O.styleGetNum(j,G,f.Shadow),Alignment:O.styleGetNum(j,G,f.Alignment),MarginL:O.styleGetNum(j,G,f.MarginL),MarginR:O.styleGetNum(j,G,f.MarginR),MarginV:O.styleGetNum(j,G,f.MarginV),Encoding:O.styleGetNum(j,G,f.Encoding),treat_fontname_as_pattern:O.styleGetNum(j,G,f.treat_fontname_as_pattern),Blur:O.styleGetNum(j,G,f.Blur),Justify:O.styleGetNum(j,G,f.Justify)}};self.createEvent=({event:G})=>{let O=E().allocEvent(u());if(O>=0)a0(O,G)};self.getEvents=()=>{let G=[],j=E().getEventCount(u());for(let U=0;U<j;U++)G.push({...w4(U),_index:U});postMessage({target:"getEvents",events:G})};self.setEvent=({event:G,index:O})=>{a0(O,G)};self.removeEvent=({index:G})=>{E().removeEvent(u(),G)};self.createStyle=({style:G})=>{let O=E().allocStyle(u());if(O>=0)t0(O,G);return O};self.getStyles=()=>{let G=[],j=E().getStyleCount(u());for(let U=0;U<j;U++)G.push(D4(U));postMessage({target:"getStyles",time:Date.now(),styles:G})};self.setStyle=({style:G,index:O})=>{t0(O,G)};self.removeStyle=({index:G})=>{E().removeStyle(u(),G)};self.styleOverride=(G)=>{let O=self.createStyle(G);if(typeof O==="number"&&O>=0)E().styleOverrideIndex(u(),O)};self.disableStyleOverride=()=>{E().disableStyleOverride(u())};self.defaultFont=({font:G})=>{qJ(G,(O)=>{E().setDefaultFont(u(),O)})};self.getStats=()=>{let G=C.framesRendered>0?C.totalRenderTime/C.framesRendered:0;postMessage({target:"getStats",stats:{framesRendered:C.framesRendered,framesDropped:C.framesDropped,avgRenderTime:Math.round(G*100)/100,maxRenderTime:Math.round(C.maxRenderTime*100)/100,minRenderTime:C.minRenderTime===1/0?0:Math.round(C.minRenderTime*100)/100,lastRenderTime:Math.round(C.lastRenderTime*100)/100,pendingRenders:Math.max(0,C.pendingRenders),totalEvents:C.totalEvents,cacheHits:C.cacheHits,cacheMisses:C.cacheMisses}})};self.resetStats=()=>{J4(),postMessage({target:"resetStats",success:!0})};self.getEventCount=()=>{let G=c?E().getEventCount(c):0;postMessage({target:"getEventCount",count:G})};self.getStyleCount=()=>{let G=c?E().getStyleCount(c):0;postMessage({target:"getStyleCount",count:G})};onmessage=({data:G})=>{if(self[G.target])self[G.target](G);else throw Error("Unknown event target "+G.target)};})();
39
+ `,A=$2.encode(j);K.FS_createDataFile("/assets","fonts.conf",A,!0,!1,!1),K.FS_createDataFile("/etc/fonts","fonts.conf",A,!0,!1,!1)}catch(j){console.warn("Failed to create font directories or fonts.conf:",j)}if(self.width=$.width,self.height=$.height,T0=!!$.onDemandRender,n1=$.blendMode,U0=$.asyncRender,U0&&typeof createImageBitmap>"u")U0=!1,console.error("'createImageBitmap' needed for 'asyncRender' unsupported!");if(U0)try{let A=new OffscreenCanvas(1,1).getContext("2d");if(A){let P=A.getImageData(0,0,1,1);await createImageBitmap(P,{premultiplyAlpha:"none",colorSpaceConversion:"none"}).catch(()=>{F0=!1,console.warn("[AkariSub] createImageBitmap options not supported (Safari?), rendering without options")})}}catch{F0=!1}Y0=$.availableFonts,m=$.debug,J1=$.targetFps||J1,ew=$.useLocalFonts,C1=$.dropAllBlur,R1=$.clampPos,await(async()=>{let j=[];for(let A of Y){let P=A.trim().toLowerCase(),H=P.startsWith("@")?P.substring(1):P;if(Y0&&Y0[H]){let R=Y0[H];if(typeof R==="string"){let W=new Promise((D)=>{p1(R,(C)=>{if($1(new Uint8Array(C),!0),Z1[H]=!0,m)console.log("[AkariSub] Loaded fallback font async:",H);D()},(C)=>{console.error("Failed to load fallback font:",H,C),D()})});j.push(W)}else $1(R,!0),Z1[H]=!0}}if(j.length>0){let A=null,P=!1,H=new Promise((R)=>{A=setTimeout(()=>{P=!0,console.warn("[AkariSub] Fallback font loading timeout, continuing with available fonts"),R()},30000)});if(await Promise.race([Promise.all(j).then(()=>{if(A!==null)clearTimeout(A)}),H]),!P&&m)console.log("[AkariSub] All fallback fonts loaded successfully")}})();let M=Y.length>0?Y[0]:null;if(F=V0(M||"",(j)=>{return g().create(self.width,self.height,j,m?1:0)}),C0.length>0){for(let{data:j,name:A}of C0)c0(j,A);C0.length=0,g().reloadFonts(F)}if(Y.length>0)V0(Y.join(","),(j)=>{g().setFallbackFonts(T(),j)});let E=$.subContent;if(!E)E=T1($.subUrl);if(E.length>500000){if(postMessage({target:"partial_ready"}),m)console.log("[AkariSub] Large subtitle detected, emitting partial_ready early")}if(y2(E),R1)E=D1(E);if(C1)E=_1(E);let O=!1,o=[];for(let j of $.fonts||[])if(typeof j==="string"){let A=new Promise((P)=>{p1(j,(H)=>{if($1(new Uint8Array(H),!1),O=!0,m)console.log("[AkariSub] Loaded attached font async:",j);P()},(H)=>{console.error("Failed to load attached font:",j,H),P()})});o.push(A)}else $1(j,!1),O=!0;if(o.length>0){let j=null,A=!1,P=new Promise((H)=>{j=setTimeout(()=>{A=!0,console.warn("[AkariSub] Attached font loading timeout, continuing with available fonts"),H()},30000)});if(await Promise.race([Promise.all(o).then(()=>{if(j!==null)clearTimeout(j)}),P]),!A&&m)console.log("[AkariSub] Attached font loading complete")}if(O){if(m)console.log("[AkariSub] Reloading fonts after writing attached fonts to FS");if(g().reloadFonts(T()),m)console.log("[AkariSub] Font reload complete")}if(V0(E,(j)=>{g().createTrackMem(T(),j)}),x0(),X1=Q2(),H0=P1[g().getTrackColorSpace(T())],g().setDropAnimations(T(),$.dropAllAnimations||0),$.libassMemoryLimit>0||$.libassGlyphLimit>0)g().setMemoryLimits(T(),$.libassGlyphLimit||0,$.libassMemoryLimit||0);G2(),c1(J2);try{Q1(o0)}catch(j){if(m)console.warn("[AkariSub] Prewarm render failed, continuing:",j)}G1=!0,postMessage({target:"ready"}),postMessage({target:"verifyColorSpace",subtitleColorSpace:H0}),S2()};X($.wasmUrl).then(U).catch((K)=>{console.error("[AkariSub] WASM loading failed:",K),postMessage({target:"error",error:"WASM loading failed: "+(K&&K.message?K.message:String(K))})})};self.offscreenCanvas=({transferable:$})=>{if(X0=$[0],N0=X0.getContext("2d",{desynchronized:!0}),!U0)B0=new OffscreenCanvas(self.width,self.height),f2=B0.getContext("2d",{desynchronized:!0});n0=!0};self.detachOffscreen=()=>{X0=new OffscreenCanvas(self.width,self.height),N0=X0.getContext("2d",{desynchronized:!0}),n0="hybrid"};self.canvas=({width:$,height:J,videoWidth:Z,videoHeight:Q,force:X})=>{if($==null)throw Error("Invalid canvas size specified");if(self.width=$,self.height=J,F)g().resizeCanvas(F,$,J,Z,Q);if(X)S0(o0,!0)};self.video=({currentTime:$,isPaused:J,rate:Z})=>{if($!=null)t2($);if(J!=null)j2(J);if(Z!=null)aw=Z};self.destroy=()=>{if(x1(),A0=null,X1=null,i){if(e)i._free(e),e=0,Q0=0}if(F)g().destroy(F),F=0;q.totalEvents=0};self.setAsyncRender=({value:$})=>{U0=$&&typeof createImageBitmap<"u"};var X2=($,J)=>{let Z=g(),Q=T();for(let X of Object.keys(J)){let U=J[X];if(U==null||X==="_index")continue;if(X in f0){Z.eventSetInt(Q,$,f0[X],Number(U));continue}if(X in u0)V0(String(U),(K)=>{Z.eventSetStr(Q,$,u0[X],K)})}},d2=($)=>{let J=g(),Z=T();return{Start:J.eventGetInt(Z,$,f0.Start),Duration:J.eventGetInt(Z,$,f0.Duration),ReadOrder:J.eventGetInt(Z,$,f0.ReadOrder),Layer:J.eventGetInt(Z,$,f0.Layer),Style:String(J.eventGetInt(Z,$,f0.Style)),MarginL:J.eventGetInt(Z,$,f0.MarginL),MarginR:J.eventGetInt(Z,$,f0.MarginR),MarginV:J.eventGetInt(Z,$,f0.MarginV),Name:M0(J.eventGetStr(Z,$,u0.Name)),Text:M0(J.eventGetStr(Z,$,u0.Text)),Effect:M0(J.eventGetStr(Z,$,u0.Effect))}},U2=($,J)=>{let Z=g(),Q=T();for(let X of Object.keys(J)){let U=J[X];if(U==null)continue;if(X in b){Z.styleSetNum(Q,$,b[X],Number(U));continue}if(X in K1)V0(String(U),(K)=>{Z.styleSetStr(Q,$,K1[X],K)})}},a2=($)=>{let J=g(),Z=T();return{Name:M0(J.styleGetStr(Z,$,K1.Name)),FontName:M0(J.styleGetStr(Z,$,K1.FontName)),FontSize:J.styleGetNum(Z,$,b.FontSize),PrimaryColour:J.styleGetNum(Z,$,b.PrimaryColour),SecondaryColour:J.styleGetNum(Z,$,b.SecondaryColour),OutlineColour:J.styleGetNum(Z,$,b.OutlineColour),BackColour:J.styleGetNum(Z,$,b.BackColour),Bold:J.styleGetNum(Z,$,b.Bold),Italic:J.styleGetNum(Z,$,b.Italic),Underline:J.styleGetNum(Z,$,b.Underline),StrikeOut:J.styleGetNum(Z,$,b.StrikeOut),ScaleX:J.styleGetNum(Z,$,b.ScaleX),ScaleY:J.styleGetNum(Z,$,b.ScaleY),Spacing:J.styleGetNum(Z,$,b.Spacing),Angle:J.styleGetNum(Z,$,b.Angle),BorderStyle:J.styleGetNum(Z,$,b.BorderStyle),Outline:J.styleGetNum(Z,$,b.Outline),Shadow:J.styleGetNum(Z,$,b.Shadow),Alignment:J.styleGetNum(Z,$,b.Alignment),MarginL:J.styleGetNum(Z,$,b.MarginL),MarginR:J.styleGetNum(Z,$,b.MarginR),MarginV:J.styleGetNum(Z,$,b.MarginV),Encoding:J.styleGetNum(Z,$,b.Encoding),treat_fontname_as_pattern:J.styleGetNum(Z,$,b.treat_fontname_as_pattern),Blur:J.styleGetNum(Z,$,b.Blur),Justify:J.styleGetNum(Z,$,b.Justify)}};self.createEvent=({event:$})=>{let J=g().allocEvent(T());if(J>=0)X2(J,$);x0()};self.getEvents=()=>{let $=[],Z=g().getEventCount(T());for(let Q=0;Q<Z;Q++)$.push({...d2(Q),_index:Q});postMessage({target:"getEvents",events:$})};self.setEvent=({event:$,index:J})=>{X2(J,$)};self.removeEvent=({index:$})=>{g().removeEvent(T(),$),x0()};self.createStyle=({style:$})=>{let J=g().allocStyle(T());if(J>=0)U2(J,$);return J};self.getStyles=()=>{let $=[],Z=g().getStyleCount(T());for(let Q=0;Q<Z;Q++)$.push(a2(Q));postMessage({target:"getStyles",time:Date.now(),styles:$})};self.setStyle=({style:$,index:J})=>{U2(J,$)};self.removeStyle=({index:$})=>{g().removeStyle(T(),$)};self.styleOverride=($)=>{let J=self.createStyle($);if(typeof J==="number"&&J>=0)g().styleOverrideIndex(T(),J)};self.disableStyleOverride=()=>{g().disableStyleOverride(T())};self.defaultFont=({font:$})=>{V0($,(J)=>{g().setDefaultFont(T(),J)})};self.getStats=()=>{let $=q.framesRendered>0?q.totalRenderTime/q.framesRendered:0;postMessage({target:"getStats",stats:{framesRendered:q.framesRendered,framesDropped:q.framesDropped,avgRenderTime:Math.round($*100)/100,maxRenderTime:Math.round(q.maxRenderTime*100)/100,minRenderTime:q.minRenderTime===1/0?0:Math.round(q.minRenderTime*100)/100,lastRenderTime:Math.round(q.lastRenderTime*100)/100,pendingRenders:Math.max(0,q.pendingRenders),totalEvents:q.totalEvents,cacheHits:q.cacheHits,cacheMisses:q.cacheMisses}})};self.resetStats=()=>{E2(),postMessage({target:"resetStats",success:!0})};self.getEventCount=()=>{let $=F?g().getEventCount(F):0;postMessage({target:"getEventCount",count:$})};self.getStyleCount=()=>{let $=F?g().getStyleCount(F):0;postMessage({target:"getStyleCount",count:$})};onmessage=({data:$})=>{if(self[$.target])self[$.target]($);else throw Error("Unknown event target "+$.target)};})();
Binary file