@utsp/core 0.17.0-nightly.20260127111647.165f2b8 → 0.17.0-nightly.20260127225451.86b0757
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/LICENSE +1 -1
- package/dist/benchmark.cjs +3 -3
- package/dist/benchmark.d.ts +11 -11
- package/dist/benchmark.mjs +3 -3
- package/dist/index.cjs +5 -5
- package/dist/index.d.ts +11 -11
- package/dist/index.mjs +5 -5
- package/package.json +2 -2
package/LICENSE
CHANGED
package/dist/benchmark.cjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
"use strict";var he=Object.defineProperty;var yn=Object.getOwnPropertyDescriptor;var fn=Object.getOwnPropertyNames;var Sn=Object.prototype.hasOwnProperty;var In=(b,e,t)=>e in b?he(b,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):b[e]=t;var C=(b,e)=>he(b,"name",{value:e,configurable:!0});var L=(b,e)=>()=>(b&&(e=b(b=0)),e);var G=(b,e)=>{for(var t in e)he(b,t,{get:e[t],enumerable:!0})},xn=(b,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of fn(e))!Sn.call(b,n)&&n!==t&&he(b,n,{get:()=>e[n],enumerable:!(r=yn(e,n))||r.enumerable});return b};var $=b=>xn(he({},"__esModule",{value:!0}),b);var h=(b,e,t)=>(In(b,typeof e!="symbol"?e+"":e,t),t);var Ze,rr=L(()=>{"use strict";Ze=(o=>(o[o.Rectangle=1]="Rectangle",o[o.Circle=2]="Circle",o[o.Line=3]="Line",o[o.Ellipse=4]="Ellipse",o[o.Triangle=5]="Triangle",o))(Ze||{})});var Ie,nr,or,ir,sr,ar,dr,lr,cr,ur,pr,mr,hr,br,gr,Cr,yr,fr,Sr,Ir,xr,Or,vr,wr,Ur,Mr,Er,Ar,Pr,kr,Rr,Br,zr,We,je,Tr,Je,qe,Ke,Qe,et,tt,Z=L(()=>{"use strict";Ie=C(b=>b?2:1,"charCodeByteSize"),nr=6,or=6,ir=6,sr=7,ar=5,dr=3,lr=1,cr=6,ur=4,pr=5,mr=2,hr=8,br=7,gr=7,Cr=8,yr=10,fr=6,Sr=3,Ir=9,xr=15,Or=51,vr=5,wr=6,Ur=4,Mr=3,Er=3,Ar=4,Pr=5,kr=4,Rr=2,Br=5,zr=5,We=5,je=5,Tr=3,Je=8,qe=6,Ke=3,Qe=8,et=3,tt=4});var V,f,T=L(()=>{"use strict";V=class V{constructor(e){h(this,"data");h(this,"view");this.data=new Uint8Array(e),this.view=new DataView(this.data.buffer)}static from(e){let t=new V(0);return t.data=e,t.view=new DataView(e.buffer,e.byteOffset,e.byteLength),t}static allocUnsafe(e){return new V(e)}get length(){return this.data.length}toUint8Array(){return this.data}readUInt8(e){return this.view.getUint8(e)}readInt8(e){return this.view.getInt8(e)}readUInt16BE(e){return this.view.getUint16(e,!1)}readInt16BE(e){return this.view.getInt16(e,!1)}readUInt16LE(e){return this.view.getUint16(e,!0)}readInt16LE(e){return this.view.getInt16(e,!0)}readUInt32BE(e){return this.view.getUint32(e,!1)}readInt32BE(e){return this.view.getInt32(e,!1)}readUInt32LE(e){return this.view.getUint32(e,!0)}readInt32LE(e){return this.view.getInt32(e,!0)}readBigUInt64BE(e){return this.view.getBigUint64(e,!1)}readBigInt64BE(e){return this.view.getBigInt64(e,!1)}readBigUInt64LE(e){return this.view.getBigUint64(e,!0)}readBigInt64LE(e){return this.view.getBigInt64(e,!0)}writeUInt8(e,t){this.view.setUint8(t,e)}writeInt8(e,t){this.view.setInt8(t,e)}writeUInt16BE(e,t){this.view.setUint16(t,e,!1)}writeInt16BE(e,t){this.view.setInt16(t,e,!1)}writeUInt16LE(e,t){this.view.setUint16(t,e,!0)}writeInt16LE(e,t){this.view.setInt16(t,e,!0)}writeUInt32BE(e,t){this.view.setUint32(t,e,!1)}writeInt32BE(e,t){this.view.setInt32(t,e,!1)}writeUInt32LE(e,t){this.view.setUint32(t,e,!0)}writeInt32LE(e,t){this.view.setInt32(t,e,!0)}writeBigUInt64BE(e,t){this.view.setBigUint64(t,e,!1)}writeBigInt64BE(e,t){this.view.setBigInt64(t,e,!1)}writeBigUInt64LE(e,t){this.view.setBigUint64(t,e,!0)}writeBigInt64LE(e,t){this.view.setBigInt64(t,e,!0)}readFloatBE(e){return this.view.getFloat32(e,!1)}readFloatLE(e){return this.view.getFloat32(e,!0)}writeFloatBE(e,t){this.view.setFloat32(t,e,!1)}writeFloatLE(e,t){this.view.setFloat32(t,e,!0)}copy(e,t=0,r=0,n=this.length){let o=this.data.subarray(r,n);return e.data.set(o,t),o.length}slice(e,t){let r=this.data.slice(e,t);return V.from(r)}subarray(e,t){let r=this.data.subarray(e,t);return V.from(r)}toBuffer(){return typeof Buffer<"u"&&Buffer.from?Buffer.from(this.data):this.data}static fromNodeBuffer(e){return e instanceof Uint8Array?V.from(e):V.from(new Uint8Array(e))}};C(V,"BufferCompat");f=V});var Hr={};G(Hr,{PlaySoundFlags:()=>Nr,SoundEffectsFlags:()=>Yr});var Nr,Yr,Xr=L(()=>{"use strict";Nr=(a=>(a[a.Loop=1]="Loop",a[a.HasVolume=2]="HasVolume",a[a.HasPitch=4]="HasPitch",a[a.HasFadeIn=8]="HasFadeIn",a[a.HasPosition=16]="HasPosition",a[a.HasLowpass=32]="HasLowpass",a[a.HasHighpass=64]="HasHighpass",a[a.HasReverb=128]="HasReverb",a))(Nr||{}),Yr=(r=>(r[r.HasLowpass=1]="HasLowpass",r[r.HasHighpass=2]="HasHighpass",r[r.HasReverb=4]="HasReverb",r))(Yr||{})});var Zr={};G(Zr,{AudioOrderType:()=>Gr,AudioTargetType:()=>$r,getAudioOrderTypeName:()=>vn,isValidAudioOrderType:()=>On});function On(b){return b>=1&&b<=9}function vn(b){switch(b){case 1:return"PlaySound";case 2:return"PlayGlobalSound";case 3:return"StopSound";case 4:return"FadeOutSound";case 5:return"PauseSound";case 6:return"ResumeSound";case 7:return"SetListenerPosition";case 8:return"ConfigureSpatial";case 9:return"SetSoundEffects";default:return`UnknownAudio(0x${b.toString(16)})`}}var Gr,$r,Wr=L(()=>{"use strict";Gr=(d=>(d[d.PlaySound=1]="PlaySound",d[d.PlayGlobalSound=2]="PlayGlobalSound",d[d.StopSound=3]="StopSound",d[d.FadeOutSound=4]="FadeOutSound",d[d.PauseSound=5]="PauseSound",d[d.ResumeSound=6]="ResumeSound",d[d.SetListenerPosition=7]="SetListenerPosition",d[d.ConfigureSpatial=8]="ConfigureSpatial",d[d.SetSoundEffects=9]="SetSoundEffects",d))(Gr||{}),$r=(r=>(r[r.InstanceId=0]="InstanceId",r[r.SoundId=1]="SoundId",r[r.All=2]="All",r))($r||{});C(On,"isValidAudioOrderType");C(vn,"getAudioOrderTypeName")});var qr={};G(qr,{GamepadVibrateFlags:()=>Jr,MobileVibrateFlags:()=>jr});var jr,Jr,Kr=L(()=>{"use strict";jr=(e=>(e[e.HasIntensity=1]="HasIntensity",e))(jr||{}),Jr=(t=>(t[t.HasStartDelay=1]="HasStartDelay",t[t.AllGamepads=2]="AllGamepads",t))(Jr||{})});var en={};G(en,{VibrationOrderType:()=>Qr});var Qr,tn=L(()=>{"use strict";Qr=(n=>(n[n.MobileVibrate=1]="MobileVibrate",n[n.MobileCancel=2]="MobileCancel",n[n.GamepadVibrate=16]="GamepadVibrate",n[n.GamepadCancel=17]="GamepadCancel",n))(Qr||{})});var bt,ee,gt=L(()=>{"use strict";Z();bt=class bt{constructor(){h(this,"charCodeSize",Ie)}decode(e,t=0,r=!1){if(t>=e.length)throw new Error("Buffer too short to decode order type");let n=e.readUInt8(t);switch(n){case 1:return this.decodeCharOrder(e,t,r);case 2:return this.decodeTextOrder(e,t);case 23:return this.decodeTextMultilineOrder(e,t);case 3:return this.decodeSubFrameOrder(e,t,r);case 4:return this.decodeSubFrameMultiColorOrder(e,t,r);case 5:return this.decodeFullFrameOrder(e,t,r);case 6:return this.decodeFullFrameMultiColorOrder(e,t,r);case 7:return this.decodeSpriteOrder(e,t);case 8:return this.decodeSpriteMultiColorOrder(e,t);case 9:return this.decodeColorMapOrder(e,t);case 10:return this.decodeShapeOrder(e,t,r);case 11:return this.decodeDotCloudOrder(e,t,r);case 12:return this.decodeDotCloudMultiColorOrder(e,t,r);case 17:return this.decodeBitmaskOrder(e,t,r);case 18:return this.decodeBitmask4Order(e,t,r);case 24:return this.decodeBitmask16Order(e,t,r);case 25:return this.decodePolylineOrder(e,t,r);case 13:return this.decodeSpriteCloudOrder(e,t);case 14:return this.decodeSpriteCloudMultiColorOrder(e,t);case 15:return this.decodeSpriteCloudVariedOrder(e,t);case 16:return this.decodeSpriteCloudVariedMultiColorOrder(e,t);case 19:return this.decodeClearOrder(e,t,r);case 20:return this.decodeFillCharOrder(e,t,r);case 21:return this.decodeFillSpriteOrder(e,t);case 22:return this.decodeFillSpriteMultiColorOrder(e,t);default:throw new Error(`Unknown order type: 0x${n.toString(16)}`)}}readCharCode(e,t,r){return r?[e.readUInt16LE(t),t+2]:[e.readUInt8(t),t+1]}decodeCharOrder(e,t,r){let o=5+this.charCodeSize(r);this.checkSize(e,t,o);let i=t,s=e.readUInt8(i++),a=e.readUInt8(i++),d=e.readUInt8(i++),[l,c]=this.readCharCode(e,i,r);i=c;let u=e.readUInt8(i++),p=e.readUInt8(i++);return{order:{type:1,posX:a,posY:d,charCode:l,bgColorCode:u,fgColorCode:p},bytesRead:o}}decodeTextOrder(e,t){this.checkSize(e,t,5);let r=t,n=e.readUInt8(r+3);this.checkSize(e,t,5+n);let o=e.subarray(r+4,r+4+n),i=new TextDecoder().decode(o.toUint8Array());return{order:{type:2,posX:e.readUInt8(r+1),posY:e.readUInt8(r+2),text:i,bgColorCode:e.readUInt8(r+4+n),fgColorCode:e.readUInt8(r+5+n)},bytesRead:6+n}}decodeTextMultilineOrder(e,t){this.checkSize(e,t,5);let r=t,n=e.readUInt8(r+3);this.checkSize(e,t,5+n);let o=e.subarray(r+4,r+4+n),i=new TextDecoder().decode(o.toUint8Array());return{order:{type:23,posX:e.readUInt8(r+1),posY:e.readUInt8(r+2),text:i,bgColorCode:e.readUInt8(r+4+n),fgColorCode:e.readUInt8(r+5+n)},bytesRead:6+n}}decodeSubFrameOrder(e,t,r){this.checkSize(e,t,7);let n=t,o=this.charCodeSize(r),i=e.readUInt8(n+3)+1,s=e.readUInt8(n+4)+1,a=i*s;this.checkSize(e,t,7+a*o);let d=[],l=n+7;for(let u=0;u<a;u++){let[p,m]=this.readCharCode(e,l,r);d.push(p),l=m}return{order:{type:3,posX:e.readUInt8(n+1),posY:e.readUInt8(n+2),sizeX:i,sizeY:s,bgColorCode:e.readUInt8(n+5),fgColorCode:e.readUInt8(n+6),frame:d},bytesRead:7+a*o}}decodeSubFrameMultiColorOrder(e,t,r){this.checkSize(e,t,5);let n=t,o=this.charCodeSize(r),i=e.readUInt8(n+3)+1,s=e.readUInt8(n+4)+1,a=i*s,d=o+2;this.checkSize(e,t,5+a*d);let l=[],c=n+5;for(let p=0;p<a;p++){let[m,g]=this.readCharCode(e,c,r);c=g,l.push({charCode:m,bgColorCode:e.readUInt8(c++),fgColorCode:e.readUInt8(c++)})}return{order:{type:4,posX:e.readUInt8(n+1),posY:e.readUInt8(n+2),sizeX:i,sizeY:s,frame:l},bytesRead:5+a*d}}decodeFullFrameOrder(e,t,r,n){this.checkSize(e,t,3);let o=t,i=this.charCodeSize(r),s=n||Math.floor((e.length-t-3)/i);this.checkSize(e,t,3+s*i);let a=[],d=o+3;for(let c=0;c<s;c++){let[u,p]=this.readCharCode(e,d,r);a.push(u),d=p}return{order:{type:5,bgColorCode:e.readUInt8(o+1),fgColorCode:e.readUInt8(o+2),frame:a},bytesRead:3+s*i}}decodeFullFrameMultiColorOrder(e,t,r,n){this.checkSize(e,t,1);let o=t,s=this.charCodeSize(r)+2,a=n||Math.floor((e.length-t-1)/s);this.checkSize(e,t,1+a*s);let d=[],l=o+1;for(let u=0;u<a;u++){let[p,m]=this.readCharCode(e,l,r);l=m,d.push({charCode:p,bgColorCode:e.readUInt8(l++),fgColorCode:e.readUInt8(l++)})}return{order:{type:6,frame:d},bytesRead:1+a*s}}decodeSpriteOrder(e,t){this.checkSize(e,t,6);let r=t;return{order:{type:7,posX:e.readUInt8(r+1),posY:e.readUInt8(r+2),spriteIndex:e.readUInt8(r+3),bgColorCode:e.readUInt8(r+4),fgColorCode:e.readUInt8(r+5)},bytesRead:6}}decodeSpriteMultiColorOrder(e,t){this.checkSize(e,t,4);let r=t;return{order:{type:8,posX:e.readUInt8(r+1),posY:e.readUInt8(r+2),spriteIndex:e.readUInt8(r+3)},bytesRead:4}}decodeColorMapOrder(e,t){this.checkSize(e,t,5);let r=t,n=e.readUInt8(r+3)+1,o=e.readUInt8(r+4)+1,i=n*o;this.checkSize(e,t,5+i*2);let s=[];for(let d=0;d<i;d++){let l=r+5+d*2;s.push({bgColorCode:e.readUInt8(l),fgColorCode:e.readUInt8(l+1)})}return{order:{type:9,posX:e.readUInt8(r+1),posY:e.readUInt8(r+2),sizeX:n,sizeY:o,colorData:s},bytesRead:5+i*2}}decodeShapeOrder(e,t,r){this.checkSize(e,t,2);let n=t,o=e.readUInt8(n+1),{shapeData:i,bytesRead:s}=this.decodeShapeData(e,n+2,o,r);return{order:{type:10,shapeType:o,shapeData:i},bytesRead:2+s}}decodeShapeData(e,t,r,n){let o=t,i=this.charCodeSize(n);switch(r){case 1:{let s=7+i;this.checkSize(e,t,s);let a=e.readUInt8(o++),d=e.readUInt8(o++),l=e.readUInt8(o++)+1,c=e.readUInt8(o++)+1,u=e.readUInt8(o++)===1,[p,m]=this.readCharCode(e,o,n);o=m;let g=e.readUInt8(o++),y=e.readUInt8(o++);return{shapeData:{posX:a,posY:d,width:l,height:c,filled:u,charCode:p,bgColorCode:g,fgColorCode:y},bytesRead:s}}case 2:{let s=6+i;this.checkSize(e,t,s);let a=e.readUInt8(o++),d=e.readUInt8(o++),l=e.readUInt8(o++)+1,c=e.readUInt8(o++)===1,[u,p]=this.readCharCode(e,o,n);o=p;let m=e.readUInt8(o++),g=e.readUInt8(o++);return{shapeData:{centerX:a,centerY:d,radius:l,filled:c,charCode:u,bgColorCode:m,fgColorCode:g},bytesRead:s}}case 3:{let s=6+i;this.checkSize(e,t,s);let a=e.readUInt8(o++),d=e.readUInt8(o++),l=e.readUInt8(o++),c=e.readUInt8(o++),[u,p]=this.readCharCode(e,o,n);o=p;let m=e.readUInt8(o++),g=e.readUInt8(o++);return{shapeData:{x1:a,y1:d,x2:l,y2:c,charCode:u,bgColorCode:m,fgColorCode:g},bytesRead:s}}case 4:{let s=7+i;this.checkSize(e,t,s);let a=e.readUInt8(o++),d=e.readUInt8(o++),l=e.readUInt8(o++)+1,c=e.readUInt8(o++)+1,u=e.readUInt8(o++)===1,[p,m]=this.readCharCode(e,o,n);o=m;let g=e.readUInt8(o++),y=e.readUInt8(o++);return{shapeData:{centerX:a,centerY:d,radiusX:l,radiusY:c,filled:u,charCode:p,bgColorCode:g,fgColorCode:y},bytesRead:s}}case 5:{let s=9+i;this.checkSize(e,t,s);let a=e.readUInt8(o++),d=e.readUInt8(o++),l=e.readUInt8(o++),c=e.readUInt8(o++),u=e.readUInt8(o++),p=e.readUInt8(o++),m=e.readUInt8(o++)===1,[g,y]=this.readCharCode(e,o,n);o=y;let S=e.readUInt8(o++),x=e.readUInt8(o++);return{shapeData:{x1:a,y1:d,x2:l,y2:c,x3:u,y3:p,filled:m,charCode:g,bgColorCode:S,fgColorCode:x},bytesRead:s}}default:throw new Error(`Unknown shape type: ${r}`)}}decodeDotCloudOrder(e,t,r){let o=1+this.charCodeSize(r)+2+2;this.checkSize(e,t,o);let i=t,s=e.readUInt8(i++),[a,d]=this.readCharCode(e,i,r);i=d;let l=e.readUInt8(i++),c=e.readUInt8(i++),u=e.readUInt16BE(i);i+=2,this.checkSize(e,t,o+u*2);let p=[];for(let g=0;g<u;g++)p.push({posX:e.readUInt8(i++),posY:e.readUInt8(i++)});return{order:{type:11,charCode:a,bgColorCode:l,fgColorCode:c,positions:p},bytesRead:o+u*2}}decodeDotCloudMultiColorOrder(e,t,r){this.checkSize(e,t,3);let n=this.charCodeSize(r),o=t,i=e.readUInt16BE(o+1),s=n+4;this.checkSize(e,t,3+i*s);let a=[],d=o+3;for(let c=0;c<i;c++){let[u,p]=this.readCharCode(e,d,r);d=p,a.push({charCode:u,bgColorCode:e.readUInt8(d++),fgColorCode:e.readUInt8(d++),posX:e.readUInt8(d++),posY:e.readUInt8(d++)})}return{order:{type:12,dots:a},bytesRead:3+i*s}}decodeBitmaskOrder(e,t,r){let o=8+this.charCodeSize(r);this.checkSize(e,t,o);let i=t,s=e.readUInt8(i++),a=e.readUInt8(i++),d=e.readUInt8(i++),l=e.readUInt8(i++)+1,c=e.readUInt8(i++)+1,[u,p]=this.readCharCode(e,i,r);i=p;let m=e.readUInt8(i++),g=e.readUInt8(i++),y=e.readUInt8(i++)===1,S=Math.ceil(l*c/8);this.checkSize(e,t,o+S);let x=new Uint8Array(S);for(let v=0;v<S;v++)x[v]=e.readUInt8(i+v);return{order:{type:17,posX:a,posY:d,sizeX:l,sizeY:c,charCode:u,bgColorCode:m,fgColorCode:g,override:y,mask:x},bytesRead:o+S}}decodeBitmask4Order(e,t,r){let i=6+3*(this.charCodeSize(r)+2);this.checkSize(e,t,i);let s=t,a=e.readUInt8(s++),d=e.readUInt8(s++),l=e.readUInt8(s++),c=e.readUInt8(s++)+1,u=e.readUInt8(s++)+1,p=e.readUInt8(s++)===1,m=Math.ceil(c*u/4);this.checkSize(e,t,i+m);let g=[];for(let x=0;x<3;x++){let[I,v]=this.readCharCode(e,s,r);s=v,g.push({charCode:I,bgColorCode:e.readUInt8(s++),fgColorCode:e.readUInt8(s++)})}let y=new Uint8Array(m);for(let x=0;x<m;x++)y[x]=e.readUInt8(s+x);return{order:{type:18,posX:d,posY:l,sizeX:c,sizeY:u,override:p,variants:g,mask:y},bytesRead:i+m}}decodeBitmask16Order(e,t,r){let i=6+15*(this.charCodeSize(r)+2);this.checkSize(e,t,i);let s=t,a=e.readUInt8(s++),d=e.readUInt8(s++),l=e.readUInt8(s++),c=e.readUInt8(s++)+1,u=e.readUInt8(s++)+1,p=e.readUInt8(s++)===1,m=Math.ceil(c*u/2);this.checkSize(e,t,i+m);let g=[];for(let x=0;x<15;x++){let[I,v]=this.readCharCode(e,s,r);s=v,g.push({charCode:I,bgColorCode:e.readUInt8(s++),fgColorCode:e.readUInt8(s++)})}let y=new Uint8Array(m);for(let x=0;x<m;x++)y[x]=e.readUInt8(s+x);return{order:{type:24,posX:d,posY:l,sizeX:c,sizeY:u,override:p,variants:g,mask:y},bytesRead:i+m}}decodePolylineOrder(e,t,r){let o=4+this.charCodeSize(r);this.checkSize(e,t,o);let i=t,s=e.readUInt8(i++),[a,d]=this.readCharCode(e,i,r);i=d;let l=e.readUInt8(i++),c=e.readUInt8(i++),u=e.readUInt8(i++);this.checkSize(e,t,o+u*2);let p=[];for(let g=0;g<u;g++)p.push({x:e.readUInt8(i++),y:e.readUInt8(i++)});return{order:{type:25,charCode:a,fgColorCode:l,bgColorCode:c,points:p},bytesRead:o+u*2}}decodeSpriteCloudOrder(e,t){this.checkSize(e,t,6);let r=t,n=e.readUInt16BE(r+4);this.checkSize(e,t,6+n*2);let o=[];for(let s=0;s<n;s++){let a=r+6+s*2;o.push({posX:e.readUInt8(a),posY:e.readUInt8(a+1)})}return{order:{type:13,spriteIndex:e.readUInt8(r+1),bgColorCode:e.readUInt8(r+2),fgColorCode:e.readUInt8(r+3),positions:o},bytesRead:6+n*2}}decodeSpriteCloudMultiColorOrder(e,t){this.checkSize(e,t,4);let r=t,n=e.readUInt16BE(r+2);this.checkSize(e,t,4+n*2);let o=[];for(let s=0;s<n;s++){let a=r+4+s*2;o.push({posX:e.readUInt8(a),posY:e.readUInt8(a+1)})}return{order:{type:14,spriteIndex:e.readUInt8(r+1),positions:o},bytesRead:4+n*2}}decodeSpriteCloudVariedOrder(e,t){this.checkSize(e,t,3);let r=t,n=e.readUInt16BE(r+1);this.checkSize(e,t,3+n*5);let o=[];for(let s=0;s<n;s++){let a=r+3+s*5;o.push({spriteIndex:e.readUInt8(a),bgColorCode:e.readUInt8(a+1),fgColorCode:e.readUInt8(a+2),posX:e.readUInt8(a+3),posY:e.readUInt8(a+4)})}return{order:{type:15,sprites:o},bytesRead:3+n*5}}decodeSpriteCloudVariedMultiColorOrder(e,t){this.checkSize(e,t,3);let r=t,n=e.readUInt16BE(r+1);this.checkSize(e,t,3+n*3);let o=[];for(let s=0;s<n;s++){let a=r+3+s*3;o.push({spriteIndex:e.readUInt8(a),posX:e.readUInt8(a+1),posY:e.readUInt8(a+2)})}return{order:{type:16,sprites:o},bytesRead:3+n*3}}decodeClearOrder(e,t,r){let o=3+this.charCodeSize(r);this.checkSize(e,t,o);let i=t,s=e.readUInt8(i++),[a,d]=this.readCharCode(e,i,r);i=d;let l=e.readUInt8(i++),c=e.readUInt8(i++);return{order:{type:19,charCode:a,bgColorCode:l,fgColorCode:c},bytesRead:o}}decodeFillCharOrder(e,t,r){this.checkSize(e,t,5);let n=this.charCodeSize(r),o=t,i=e.readUInt8(o+1)+1,s=e.readUInt8(o+2)+1,a=i*s,d=5+a*n;this.checkSize(e,t,d);let l=[],c=o+5;for(let p=0;p<a;p++){let[m,g]=this.readCharCode(e,c,r);l.push(m),c=g}return{order:{type:20,patternWidth:i,patternHeight:s,bgColorCode:e.readUInt8(o+3),fgColorCode:e.readUInt8(o+4),pattern:l},bytesRead:d}}decodeFillSpriteOrder(e,t){this.checkSize(e,t,4);let r=t;return{order:{type:21,spriteIndex:e.readUInt8(r+1),bgColorCode:e.readUInt8(r+2),fgColorCode:e.readUInt8(r+3)},bytesRead:4}}decodeFillSpriteMultiColorOrder(e,t){this.checkSize(e,t,2);let r=t;return{order:{type:22,spriteIndex:e.readUInt8(r+1)},bytesRead:2}}checkSize(e,t,r){if(t+r>e.length)throw new Error(`Buffer too short: need ${r} bytes at offset ${t}, but only ${e.length-t} bytes available`)}};C(bt,"OrderDecoder");ee=bt});var wn,rn,nn,Ct,te,yt=L(()=>{"use strict";wn=4,rn=4,nn=8,Ct=class Ct{decode(e,t=0){this.checkSize(e,t,nn);let r=t,n=e.readUInt8(r++),o=e.readUInt16BE(r);r+=2;let i=e.readUInt16BE(r);r+=2;let s=e.readUInt8(r++)+1,a=e.readUInt8(r++)+1,d=e.readUInt8(r++);if(d>rn)throw new Error(`Invalid renderPass count: ${d} (max ${rn})`);let l=d*wn;this.checkSize(e,r,l);let c=[];for(let p=0;p<d;p++){let m=e.readUInt8(r++),g=e.readUInt8(r++),y=e.readUInt8(r++),S=e.readUInt8(r++);c.push({id:m,zMin:g,zMax:y,enabled:(S&1)!==0})}return{display:{id:n,originX:o,originY:i,sizeX:s,sizeY:a,renderPasses:c.length>0?c:void 0},bytesRead:nn+l}}checkSize(e,t,r){if(t+r>e.length)throw new Error(`Buffer too short for display: need ${r} bytes at offset ${t}, but only ${e.length-t} bytes available`)}};C(Ct,"DisplayDecoder");te=Ct});var Un,Mn,ft,re,St=L(()=>{"use strict";gt();Un=32,Mn=64,ft=class ft{constructor(){h(this,"orderDecoder");this.orderDecoder=new ee}decode(e,t=0){this.checkSize(e,t,13);let n=t,o=e.readUInt16BE(n);n+=2;let i=e.readUInt8(n++),s=e.readUInt8(n++),a=e.readUInt16BE(n);n+=2;let d=e.readUInt16BE(n);n+=2;let l=e.readUInt16BE(n);n+=2;let c=e.readUInt16BE(n);n+=2;let u=e.readUInt8(n++),p=(i&Un)!==0,m=(i&Mn)!==0,g=[],y=n;for(let x=0;x<u;x++){let I=this.orderDecoder.decode(e,y,m);g.push(I.order),y+=I.bytesRead}return{layer:{id:o,updateFlags:i,zIndex:s,originX:a,originY:d,width:l,height:c,orderCount:u,orders:g,isMacroLayer:p,is16bit:m},bytesRead:y-t}}checkSize(e,t,r){if(t+r>e.length)throw new Error(`Buffer too short for layer: need ${r} bytes at offset ${t}, but only ${e.length-t} bytes available`)}};C(ft,"LayerDecoder");re=ft});var It,Ue,on=L(()=>{"use strict";It=class It{decode(e,t=0){if(t>=e.length)throw new Error("Buffer too short to decode audio order type");let r=e.readUInt8(t);switch(r){case 1:return this.decodePlaySoundOrder(e,t);case 2:return this.decodePlayGlobalSoundOrder(e,t);case 3:return this.decodeStopSoundOrder(e,t);case 4:return this.decodeFadeOutSoundOrder(e,t);case 5:return this.decodePauseSoundOrder(e,t);case 6:return this.decodeResumeSoundOrder(e,t);case 7:return this.decodeSetListenerPositionOrder(e,t);case 8:return this.decodeConfigureSpatialOrder(e,t);case 9:return this.decodeSetSoundEffectsOrder(e,t);default:throw new Error(`Unknown audio order type: 0x${r.toString(16)}`)}}decodePlaySoundOrder(e,t){this.checkSize(e,t,5);let r=t,n=e.readUInt8(r++),o=e.readUInt8(r++),i=e.readUInt16BE(r);r+=2;let s=e.readUInt8(r++),a={type:n,soundId:o,instanceId:i,flags:s};return s&2&&(this.checkSize(e,r,1),a.volume=e.readUInt8(r++)),s&4&&(this.checkSize(e,r,1),a.pitch=e.readUInt8(r++)),s&8&&(this.checkSize(e,r,1),a.fadeIn=e.readUInt8(r++)),s&16&&(this.checkSize(e,r,4),a.posX=e.readUInt16BE(r),r+=2,a.posY=e.readUInt16BE(r),r+=2),s&32&&(this.checkSize(e,r,1),a.lowpass=e.readUInt8(r++)),s&64&&(this.checkSize(e,r,1),a.highpass=e.readUInt8(r++)),s&128&&(this.checkSize(e,r,1),a.reverb=e.readUInt8(r++)),{order:a,bytesRead:r-t}}decodePlayGlobalSoundOrder(e,t){this.checkSize(e,t,5);let r=t,n=e.readUInt8(r++),o=e.readUInt8(r++),i=e.readUInt16BE(r);r+=2;let s=e.readUInt8(r++),a={type:n,soundId:o,instanceId:i,flags:s};return s&2&&(this.checkSize(e,r,1),a.volume=e.readUInt8(r++)),s&4&&(this.checkSize(e,r,1),a.pitch=e.readUInt8(r++)),s&8&&(this.checkSize(e,r,1),a.fadeIn=e.readUInt8(r++)),s&32&&(this.checkSize(e,r,1),a.lowpass=e.readUInt8(r++)),s&64&&(this.checkSize(e,r,1),a.highpass=e.readUInt8(r++)),s&128&&(this.checkSize(e,r,1),a.reverb=e.readUInt8(r++)),{order:a,bytesRead:r-t}}decodeStopSoundOrder(e,t){this.checkSize(e,t,2);let r=t,n=e.readUInt8(r++),o=e.readUInt8(r++),i={type:n,targetType:o};return o===0?(this.checkSize(e,r,2),i.target=e.readUInt16BE(r),r+=2):o===1&&(this.checkSize(e,r,1),i.target=e.readUInt8(r++)),{order:i,bytesRead:r-t}}decodeFadeOutSoundOrder(e,t){this.checkSize(e,t,3);let r=t,n=e.readUInt8(r++),o=e.readUInt8(r++),i=e.readUInt8(r++),s={type:n,targetType:o,duration:i};return o===0?(this.checkSize(e,r,2),s.target=e.readUInt16BE(r),r+=2):o===1&&(this.checkSize(e,r,1),s.target=e.readUInt8(r++)),{order:s,bytesRead:r-t}}decodePauseSoundOrder(e,t){this.checkSize(e,t,2);let r=t,n=e.readUInt8(r++),o=e.readUInt8(r++),i={type:n,targetType:o};return o===0?(this.checkSize(e,r,2),i.target=e.readUInt16BE(r),r+=2):o===1&&(this.checkSize(e,r,1),i.target=e.readUInt8(r++)),{order:i,bytesRead:r-t}}decodeResumeSoundOrder(e,t){this.checkSize(e,t,2);let r=t,n=e.readUInt8(r++),o=e.readUInt8(r++),i={type:n,targetType:o};return o===0?(this.checkSize(e,r,2),i.target=e.readUInt16BE(r),r+=2):o===1&&(this.checkSize(e,r,1),i.target=e.readUInt8(r++)),{order:i,bytesRead:r-t}}decodeSetListenerPositionOrder(e,t){this.checkSize(e,t,5);let r=t,n=e.readUInt8(r++),o=e.readUInt16BE(r);r+=2;let i=e.readUInt16BE(r);return r+=2,{order:{type:n,x:o,y:i},bytesRead:5}}decodeConfigureSpatialOrder(e,t){this.checkSize(e,t,5);let r=t;return{order:{type:e.readUInt8(r),maxDistance:e.readUInt8(r+1),referenceDistance:e.readUInt8(r+2),rolloffFactor:e.readUInt8(r+3),panSpread:e.readUInt8(r+4)},bytesRead:5}}decodeSetSoundEffectsOrder(e,t){this.checkSize(e,t,4);let r=t,n=e.readUInt8(r++),o=e.readUInt16BE(r);r+=2;let i=e.readUInt8(r++),s={type:n,instanceId:o,flags:i};return i&1&&(this.checkSize(e,r,1),s.lowpass=e.readUInt8(r++)),i&2&&(this.checkSize(e,r,1),s.highpass=e.readUInt8(r++)),i&4&&(this.checkSize(e,r,1),s.reverb=e.readUInt8(r++)),{order:s,bytesRead:r-t}}checkSize(e,t,r){if(t+r>e.length)throw new Error(`Buffer too short for audio order: need ${r} bytes at offset ${t}, but only ${e.length-t} bytes available`)}};C(It,"AudioOrderDecoder");Ue=It});var xt,Me,sn=L(()=>{"use strict";xt=class xt{decode(e,t=0){if(t>=e.length)throw new Error("Buffer too short to decode vibration order type");let r=e.readUInt8(t);switch(r){case 1:return this.decodeMobileVibrateOrder(e,t);case 2:return this.decodeMobileCancelOrder(e,t);case 16:return this.decodeGamepadVibrateOrder(e,t);case 17:return this.decodeGamepadCancelOrder(e,t);default:throw new Error(`Unknown vibration order type: 0x${r.toString(16)}`)}}decodeMobileVibrateOrder(e,t){let r=t,n=e.readUInt8(r++),o=e.readUInt8(r++),i=e.readUInt8(r++),s=[];for(let d=0;d<i;d++)s.push(e.readUInt16BE(r)),r+=2;let a={type:n,flags:o,pattern:s};return o&1&&(a.intensity=e.readUInt8(r++)/255),{order:a,bytesRead:r-t}}decodeMobileCancelOrder(e,t){return{order:{type:2},bytesRead:1}}decodeGamepadVibrateOrder(e,t){let r=t,n=e.readUInt8(r++),o=e.readUInt8(r++),i=e.readUInt8(r++),s=e.readUInt16BE(r);r+=2;let a=e.readUInt8(r++),d=e.readUInt8(r++),l={type:n,flags:o,gamepadIndex:i,duration:s,strongMagnitude:a,weakMagnitude:d};return o&1&&(l.startDelay=e.readUInt16BE(r),r+=2),{order:l,bytesRead:r-t}}decodeGamepadCancelOrder(e,t){let r=t,n=e.readUInt8(r++),o=e.readUInt8(r++),i=e.readUInt8(r++);return{order:{type:n,flags:o,gamepadIndex:i},bytesRead:r-t}}};C(xt,"VibrationOrderDecoder");Me=xt});var Ot,ne,vt=L(()=>{"use strict";Ot=class Ot{decode(e,t=0){let r=e.readUInt8(t);switch(r){case 1:return this.decodeCreateInstance(e,t);case 2:return this.decodeUpdateInstance(e,t);case 3:return this.decodeRemoveInstance(e,t);default:throw new Error(`Unknown macro order type: 0x${r.toString(16)}`)}}decodeAll(e,t,r){let n=[],o=0;for(let i=0;i<r;i++){let{order:s,bytesRead:a}=this.decode(e,t+o);n.push(s),o+=a}return{orders:n,bytesRead:o}}decodeCreateInstance(e,t){let r=t,n=e.readUInt8(t++),o=e.readUInt8(t++),i=e.readUInt8(t++),s=e.readUInt8(t++),a=e.readInt16BE(t);t+=2;let d=e.readInt16BE(t);t+=2;let l=e.readUInt8(t++),c=e.readUInt16BE(t);t+=2;let u=e.toUint8Array().subarray(t,t+c);t+=c;let p=new TextDecoder().decode(u),m=JSON.parse(p);return{order:{type:n,instanceId:o,macroId:i,layerId:s,x:a,y:d,tabIndex:l,params:m},bytesRead:t-r}}decodeUpdateInstance(e,t){let r=t,n=e.readUInt8(t++),o=e.readUInt8(t++),i=e.readUInt16BE(t);t+=2;let s=e.toUint8Array().subarray(t,t+i);t+=i;let a=new TextDecoder().decode(s),d=JSON.parse(a);return{order:{type:n,instanceId:o,params:d},bytesRead:t-r}}decodeRemoveInstance(e,t){let r=e.readUInt8(t),n=e.readUInt8(t+1);return{order:{type:r,instanceId:n},bytesRead:2}}};C(Ot,"MacroOrderDecoder");ne=Ot});var wt,Ee,an=L(()=>{"use strict";wt=class wt{decode(e,t){let r=e[t];switch(r){case 1:return this.decodeSetConfigOrder(e,t);case 2:return this.decodeSetScanlinesOrder(e,t);case 3:return this.decodeSetAmbientEffectOrder(e,t);case 4:return this.decodeSetScalingModeOrder(e,t);case 5:return this.decodeSetGridOrder(e,t);case 6:return this.decodeSwitchPaletteOrder(e,t);case 7:return this.decodeSetCellSizeOrder(e,t);default:throw new Error(`Unknown post-process order type: ${r}`)}}decodeSetConfigOrder(e,t){let r=t,n=e[r++],o=e[r++],i=e[r++],s={type:n,displayId:o,flags:i};return i&1&&(s.scanlines={enabled:e[r++]===1,opacity:e[r++]/255,pattern:e[r++],colorR:e[r++],colorG:e[r++],colorB:e[r++]}),i&2&&(s.ambientEffect={enabled:e[r++]===1,blur:e[r++],scale:e[r++]/100,opacity:e[r++]/255}),{order:s,bytesRead:r-t}}decodeSetScanlinesOrder(e,t){let r=t;return{order:{type:e[r++],displayId:e[r++],enabled:e[r++]===1,opacity:e[r++]/255,pattern:e[r++],colorR:e[r++],colorG:e[r++],colorB:e[r++]},bytesRead:r-t}}decodeSetAmbientEffectOrder(e,t){let r=t;return{order:{type:e[r++],displayId:e[r++],enabled:e[r++]===1,blur:e[r++],scale:e[r++]/100,opacity:e[r++]/255},bytesRead:r-t}}decodeSetScalingModeOrder(e,t){let r=t;return{order:{type:e[r++],displayId:e[r++],mode:e[r++]},bytesRead:r-t}}decodeSetGridOrder(e,t){let r=t;return{order:{type:e[r++],displayId:e[r++],enabled:e[r++]===1,colorR:e[r++],colorG:e[r++],colorB:e[r++],colorA:e[r++],lineWidth:e[r++]},bytesRead:r-t}}decodeSwitchPaletteOrder(e,t){let r=t;return{order:{type:e[r++],displayId:e[r++],slotId:e[r++]},bytesRead:r-t}}decodeSetCellSizeOrder(e,t){let r=t;return{order:{type:e[r++],displayId:e[r++],cellWidth:e[r++],cellHeight:e[r++]},bytesRead:r-t}}};C(wt,"PostProcessOrderDecoder");Ee=wt});var dn={};G(dn,{UpdatePacketDecoder:()=>be});var Ut,be,Mt=L(()=>{"use strict";yt();St();on();sn();vt();an();T();Ut=class Ut{constructor(){h(this,"displayDecoder");h(this,"layerDecoder");h(this,"audioOrderDecoder");h(this,"vibrationOrderDecoder");h(this,"macroOrderDecoder");h(this,"postProcessOrderDecoder");this.displayDecoder=new te,this.layerDecoder=new re,this.audioOrderDecoder=new Ue,this.vibrationOrderDecoder=new Me,this.macroOrderDecoder=new ne,this.postProcessOrderDecoder=new Ee}decode(e,t=0){let r=f.from(e);this.checkSize(r,t,15);let o=t,i=Number(r.readBigUInt64BE(o));o+=8;let s=r.readUInt8(o);o+=1;let a=[],d=0;for(let B=0;B<s;B++){let O=this.displayDecoder.decode(r,o);a.push(O.display),o+=O.bytesRead,d+=O.bytesRead}this.checkSize(r,o,2);let l=r.readUInt16BE(o);o+=2;let c=[],u=0;for(let B=0;B<l;B++){let O=this.layerDecoder.decode(r,o);c.push({...O.layer,byteSize:O.bytesRead}),o+=O.bytesRead,u+=O.bytesRead}this.checkSize(r,o,1);let p=r.readUInt8(o);o+=1;let m=[],g=0;for(let B=0;B<p;B++){let O=this.audioOrderDecoder.decode(r,o);m.push(O.order),o+=O.bytesRead,g+=O.bytesRead}this.checkSize(r,o,1);let y=r.readUInt8(o);o+=1;let S=[],x=0;for(let B=0;B<y;B++){let O=this.vibrationOrderDecoder.decode(r,o);S.push(O.order),o+=O.bytesRead,x+=O.bytesRead}this.checkSize(r,o,1);let I=r.readUInt8(o);o+=1;let v=[],w=0;for(let B=0;B<I;B++){let O=this.macroOrderDecoder.decode(r,o);v.push(O.order),o+=O.bytesRead,w+=O.bytesRead}this.checkSize(r,o,1);let A=r.readUInt8(o);o+=1;let E=[],U=0;for(let B=0;B<A;B++){let O=this.postProcessOrderDecoder.decode(r.toUint8Array(),o);E.push(O.order),o+=O.bytesRead,U+=O.bytesRead}return{tick:i,displayCount:s,displays:a,layerCount:l,layers:c,audioOrderCount:p,audioOrders:m,vibrationOrderCount:y,vibrationOrders:S,macroOrderCount:I,macroOrders:v,postProcessOrderCount:A,postProcessOrders:E,__byteSizes:{displays:d,layers:u,audioOrders:g,vibrationOrders:x,macroOrders:w,postProcessOrders:U}}}isValid(e,t=0){let r=f.from(e);try{return this.checkSize(r,t,15),!0}catch{return!1}}decodeHeader(e,t=0){let r=f.from(e);this.checkSize(r,t,13);let n=t,o=Number(r.readBigUInt64BE(n));n+=8;let i=r.readUInt8(n);n+=1;for(let a=0;a<i;a++){let d=this.displayDecoder.decode(r,n);n+=d.bytesRead}this.checkSize(r,n,2);let s=r.readUInt16BE(n);return{tick:o,displayCount:i,layerCount:s}}checkSize(e,t,r){if(t+r>e.length)throw new Error(`Buffer too short for update packet: need ${r} bytes at offset ${t}, but only ${e.length-t} bytes available`)}};C(Ut,"UpdatePacketDecoder");be=Ut});var Vn={};G(Vn,{BufferCompat:()=>f,CellBuffer:()=>N,Core:()=>$e,DisplayDecoder:()=>te,DisplayEncoder:()=>j,DisplayRasterizer:()=>de,Layer:()=>ce,LayerDecoder:()=>re,LayerEncoder:()=>J,LayerRasterizer:()=>ae,LoadDecoder:()=>ie,LoadEncoder:()=>Y,MacroEventDecoder:()=>se,MacroEventEncoder:()=>we,MacroLoadDecoder:()=>oe,MacroLoadEncoder:()=>Q,MacroOrderDecoder:()=>ne,MacroOrderEncoder:()=>q,OrderBuilder:()=>Ae,OrderDecoder:()=>ee,OrderEncoder:()=>W,ShapeType:()=>Ze,SpriteRegistry:()=>le,UpdatePacketDecoder:()=>be,UpdatePacketEncoder:()=>K,Vector2:()=>Cn.Vector2});module.exports=$(Vn);Z();Z();T();var nt=class nt{constructor(){h(this,"charCodeSize",Ie)}encode(e,t=!1){switch(e.type){case 1:return this.encodeCharOrder(e,t);case 2:return this.encodeTextOrder(e);case 23:return this.encodeTextMultilineOrder(e);case 3:return this.encodeSubFrameOrder(e,t);case 4:return this.encodeSubFrameMultiColorOrder(e,t);case 5:return this.encodeFullFrameOrder(e,t);case 6:return this.encodeFullFrameMultiColorOrder(e,t);case 7:return this.encodeSpriteOrder(e);case 8:return this.encodeSpriteMultiColorOrder(e);case 9:return this.encodeColorMapOrder(e);case 10:return this.encodeShapeOrder(e,t);case 11:return this.encodeDotCloudOrder(e,t);case 12:return this.encodeDotCloudMultiColorOrder(e,t);case 17:return this.encodeBitmaskOrder(e,t);case 18:return this.encodeBitmask4Order(e,t);case 24:return this.encodeBitmask16Order(e,t);case 25:return this.encodePolylineOrder(e,t);case 13:return this.encodeSpriteCloudOrder(e);case 14:return this.encodeSpriteCloudMultiColorOrder(e);case 15:return this.encodeSpriteCloudVariedOrder(e);case 16:return this.encodeSpriteCloudVariedMultiColorOrder(e);case 19:return this.encodeClearOrder(e,t);case 20:return this.encodeFillCharOrder(e,t);case 21:return this.encodeFillSpriteOrder(e);case 22:return this.encodeFillSpriteMultiColorOrder(e);default:throw new Error(`Unknown order type: ${e.type}`)}}writeCharCode(e,t,r,n){return n?(e.writeUInt16LE(t,r),r+2):(e.writeUInt8(t,r),r+1)}encodeCharOrder(e,t){let r=f.allocUnsafe(nr+(t?1:0)),n=0;return r.writeUInt8(e.type,n++),r.writeUInt8(e.posX,n++),r.writeUInt8(e.posY,n++),n=this.writeCharCode(r,e.charCode,n,t),r.writeUInt8(e.bgColorCode,n++),r.writeUInt8(e.fgColorCode,n++),r.toUint8Array()}encodeTextOrder(e){let t=new TextEncoder().encode(e.text),r=f.allocUnsafe(or+t.length),n=0;r.writeUInt8(e.type,n++),r.writeUInt8(e.posX,n++),r.writeUInt8(e.posY,n++),r.writeUInt8(t.length,n++);for(let o=0;o<t.length;o++)r.writeUInt8(t[o],n++);return r.writeUInt8(e.bgColorCode,n++),r.writeUInt8(e.fgColorCode,n++),r.toUint8Array()}encodeTextMultilineOrder(e){let t=new TextEncoder().encode(e.text),r=f.allocUnsafe(ir+t.length),n=0;r.writeUInt8(e.type,n++),r.writeUInt8(e.posX,n++),r.writeUInt8(e.posY,n++),r.writeUInt8(t.length,n++);for(let o=0;o<t.length;o++)r.writeUInt8(t[o],n++);return r.writeUInt8(e.bgColorCode,n++),r.writeUInt8(e.fgColorCode,n++),r.toUint8Array()}encodeSubFrameOrder(e,t){let r=e.sizeX*e.sizeY,n=this.charCodeSize(t),o=f.allocUnsafe(sr+r*n),i=0;o.writeUInt8(e.type,i++),o.writeUInt8(e.posX,i++),o.writeUInt8(e.posY,i++),o.writeUInt8(e.sizeX-1,i++),o.writeUInt8(e.sizeY-1,i++),o.writeUInt8(e.bgColorCode,i++),o.writeUInt8(e.fgColorCode,i++);for(let s of e.frame)i=this.writeCharCode(o,s,i,t);return o.toUint8Array()}encodeSubFrameMultiColorOrder(e,t){let r=e.sizeX*e.sizeY,n=this.charCodeSize(t),o=f.allocUnsafe(ar+r*(n+2)),i=0;o.writeUInt8(e.type,i++),o.writeUInt8(e.posX,i++),o.writeUInt8(e.posY,i++),o.writeUInt8(e.sizeX-1,i++),o.writeUInt8(e.sizeY-1,i++);for(let s of e.frame)i=this.writeCharCode(o,s.charCode,i,t),o.writeUInt8(s.bgColorCode,i++),o.writeUInt8(s.fgColorCode,i++);return o.toUint8Array()}encodeFullFrameOrder(e,t){let r=e.frame.length,n=this.charCodeSize(t),o=f.allocUnsafe(dr+r*n),i=0;o.writeUInt8(e.type,i++),o.writeUInt8(e.bgColorCode,i++),o.writeUInt8(e.fgColorCode,i++);for(let s of e.frame)i=this.writeCharCode(o,s,i,t);return o.toUint8Array()}encodeFullFrameMultiColorOrder(e,t){let r=e.frame.length,n=this.charCodeSize(t),o=f.allocUnsafe(lr+r*(n+2)),i=0;o.writeUInt8(e.type,i++);for(let s of e.frame)i=this.writeCharCode(o,s.charCode,i,t),o.writeUInt8(s.bgColorCode,i++),o.writeUInt8(s.fgColorCode,i++);return o.toUint8Array()}encodeSpriteOrder(e){let t=f.allocUnsafe(cr),r=0;return t.writeUInt8(e.type,r++),t.writeUInt8(e.posX,r++),t.writeUInt8(e.posY,r++),t.writeUInt8(e.spriteIndex,r++),t.writeUInt8(e.bgColorCode,r++),t.writeUInt8(e.fgColorCode,r++),t.toUint8Array()}encodeSpriteMultiColorOrder(e){let t=f.allocUnsafe(ur),r=0;return t.writeUInt8(e.type,r++),t.writeUInt8(e.posX,r++),t.writeUInt8(e.posY,r++),t.writeUInt8(e.spriteIndex,r++),t.toUint8Array()}encodeColorMapOrder(e){let t=e.sizeX*e.sizeY,r=f.allocUnsafe(pr+t*2),n=0;r.writeUInt8(e.type,n++),r.writeUInt8(e.posX,n++),r.writeUInt8(e.posY,n++),r.writeUInt8(e.sizeX-1,n++),r.writeUInt8(e.sizeY-1,n++);for(let o of e.colorData)r.writeUInt8(o.bgColorCode,n++),r.writeUInt8(o.fgColorCode,n++);return r.toUint8Array()}encodeShapeOrder(e,t){let r=this.encodeShapeData(e.shapeType,e.shapeData,t),n=f.allocUnsafe(mr+r.length),o=0;n.writeUInt8(e.type,o++),n.writeUInt8(e.shapeType,o++);for(let i=0;i<r.length;i++)n.writeUInt8(r[i],o++);return n.toUint8Array()}encodeShapeData(e,t,r){let n=this.charCodeSize(r);switch(e){case 1:{let o=f.allocUnsafe(hr+(r?1:0)),i=0;return o.writeUInt8(t.posX,i++),o.writeUInt8(t.posY,i++),o.writeUInt8(t.width-1,i++),o.writeUInt8(t.height-1,i++),o.writeUInt8(t.filled?1:0,i++),i=this.writeCharCode(o,t.charCode,i,r),o.writeUInt8(t.bgColorCode,i++),o.writeUInt8(t.fgColorCode,i++),o.toUint8Array()}case 2:{let o=f.allocUnsafe(br+(r?1:0)),i=0;return o.writeUInt8(t.centerX,i++),o.writeUInt8(t.centerY,i++),o.writeUInt8(t.radius-1,i++),o.writeUInt8(t.filled?1:0,i++),i=this.writeCharCode(o,t.charCode,i,r),o.writeUInt8(t.bgColorCode,i++),o.writeUInt8(t.fgColorCode,i++),o.toUint8Array()}case 3:{let o=f.allocUnsafe(gr+(r?1:0)),i=0;return o.writeUInt8(t.x1,i++),o.writeUInt8(t.y1,i++),o.writeUInt8(t.x2,i++),o.writeUInt8(t.y2,i++),i=this.writeCharCode(o,t.charCode,i,r),o.writeUInt8(t.bgColorCode,i++),o.writeUInt8(t.fgColorCode,i++),o.toUint8Array()}case 4:{let o=f.allocUnsafe(Cr+(r?1:0)),i=0;return o.writeUInt8(t.centerX,i++),o.writeUInt8(t.centerY,i++),o.writeUInt8(t.radiusX-1,i++),o.writeUInt8(t.radiusY-1,i++),o.writeUInt8(t.filled?1:0,i++),i=this.writeCharCode(o,t.charCode,i,r),o.writeUInt8(t.bgColorCode,i++),o.writeUInt8(t.fgColorCode,i++),o.toUint8Array()}case 5:{let o=f.allocUnsafe(yr+(r?1:0)),i=0;return o.writeUInt8(t.x1,i++),o.writeUInt8(t.y1,i++),o.writeUInt8(t.x2,i++),o.writeUInt8(t.y2,i++),o.writeUInt8(t.x3,i++),o.writeUInt8(t.y3,i++),o.writeUInt8(t.filled?1:0,i++),i=this.writeCharCode(o,t.charCode,i,r),o.writeUInt8(t.bgColorCode,i++),o.writeUInt8(t.fgColorCode,i++),o.toUint8Array()}default:throw new Error(`Unknown shape type: ${e}`)}}encodeDotCloudOrder(e,t){let r=e.positions.length,n=this.charCodeSize(t),o=f.allocUnsafe(fr+(t?1:0)+r*2),i=0;o.writeUInt8(e.type,i++),i=this.writeCharCode(o,e.charCode,i,t),o.writeUInt8(e.bgColorCode,i++),o.writeUInt8(e.fgColorCode,i++),o.writeUInt16BE(r,i),i+=2;for(let s of e.positions)o.writeUInt8(s.posX,i++),o.writeUInt8(s.posY,i++);return o.toUint8Array()}encodeDotCloudMultiColorOrder(e,t){let r=e.dots.length,n=this.charCodeSize(t),o=f.allocUnsafe(Sr+r*(n+4)),i=0;o.writeUInt8(e.type,i++),o.writeUInt16BE(r,i),i+=2;for(let s of e.dots)i=this.writeCharCode(o,s.charCode,i,t),o.writeUInt8(s.bgColorCode,i++),o.writeUInt8(s.fgColorCode,i++),o.writeUInt8(s.posX,i++),o.writeUInt8(s.posY,i++);return o.toUint8Array()}encodeBitmaskOrder(e,t){let r=e.mask.length,n=f.allocUnsafe(Ir+(t?1:0)+r),o=0;n.writeUInt8(e.type,o++),n.writeUInt8(e.posX,o++),n.writeUInt8(e.posY,o++),n.writeUInt8(e.sizeX-1,o++),n.writeUInt8(e.sizeY-1,o++),o=this.writeCharCode(n,e.charCode,o,t),n.writeUInt8(e.bgColorCode,o++),n.writeUInt8(e.fgColorCode,o++),n.writeUInt8(e.override?1:0,o++);for(let i=0;i<r;i++)n.writeUInt8(e.mask[i],o++);return n.toUint8Array()}encodeBitmask4Order(e,t){let r=e.mask.length,n=this.charCodeSize(t),o=f.allocUnsafe(xr+3*(t?1:0)+r),i=0;o.writeUInt8(e.type,i++),o.writeUInt8(e.posX,i++),o.writeUInt8(e.posY,i++),o.writeUInt8(e.sizeX-1,i++),o.writeUInt8(e.sizeY-1,i++),o.writeUInt8(e.override?1:0,i++);for(let s of e.variants)i=this.writeCharCode(o,s.charCode,i,t),o.writeUInt8(s.bgColorCode,i++),o.writeUInt8(s.fgColorCode,i++);for(let s=0;s<r;s++)o.writeUInt8(e.mask[s],i++);return o.toUint8Array()}encodeBitmask16Order(e,t){let r=e.mask.length,n=this.charCodeSize(t),o=f.allocUnsafe(Or+15*(t?1:0)+r),i=0;o.writeUInt8(e.type,i++),o.writeUInt8(e.posX,i++),o.writeUInt8(e.posY,i++),o.writeUInt8(e.sizeX-1,i++),o.writeUInt8(e.sizeY-1,i++),o.writeUInt8(e.override?1:0,i++);for(let s of e.variants)i=this.writeCharCode(o,s.charCode,i,t),o.writeUInt8(s.bgColorCode,i++),o.writeUInt8(s.fgColorCode,i++);for(let s=0;s<r;s++)o.writeUInt8(e.mask[s],i++);return o.toUint8Array()}encodePolylineOrder(e,t){let r=e.points.length,n=f.allocUnsafe(vr+(t?1:0)+r*2),o=0;n.writeUInt8(e.type,o++),o=this.writeCharCode(n,e.charCode,o,t),n.writeUInt8(e.fgColorCode,o++),n.writeUInt8(e.bgColorCode,o++),n.writeUInt8(r,o++);for(let i of e.points)n.writeUInt8(i.x,o++),n.writeUInt8(i.y,o++);return n.toUint8Array()}encodeSpriteCloudOrder(e){let t=e.positions.length,r=f.allocUnsafe(wr+t*2),n=0;r.writeUInt8(e.type,n++),r.writeUInt8(e.spriteIndex,n++),r.writeUInt8(e.bgColorCode,n++),r.writeUInt8(e.fgColorCode,n++),r.writeUInt16BE(t,n),n+=2;for(let o of e.positions)r.writeUInt8(o.posX,n++),r.writeUInt8(o.posY,n++);return r.toUint8Array()}encodeSpriteCloudMultiColorOrder(e){let t=e.positions.length,r=f.allocUnsafe(Ur+t*2),n=0;r.writeUInt8(e.type,n++),r.writeUInt8(e.spriteIndex,n++),r.writeUInt16BE(t,n),n+=2;for(let o of e.positions)r.writeUInt8(o.posX,n++),r.writeUInt8(o.posY,n++);return r.toUint8Array()}encodeSpriteCloudVariedOrder(e){let t=e.sprites.length,r=f.allocUnsafe(Mr+t*5),n=0;r.writeUInt8(e.type,n++),r.writeUInt16BE(t,n),n+=2;for(let o of e.sprites)r.writeUInt8(o.spriteIndex,n++),r.writeUInt8(o.bgColorCode,n++),r.writeUInt8(o.fgColorCode,n++),r.writeUInt8(o.posX,n++),r.writeUInt8(o.posY,n++);return r.toUint8Array()}encodeSpriteCloudVariedMultiColorOrder(e){let t=e.sprites.length,r=f.allocUnsafe(Er+t*3),n=0;r.writeUInt8(e.type,n++),r.writeUInt16BE(t,n),n+=2;for(let o of e.sprites)r.writeUInt8(o.spriteIndex,n++),r.writeUInt8(o.posX,n++),r.writeUInt8(o.posY,n++);return r.toUint8Array()}encodeClearOrder(e,t){let r=f.allocUnsafe(Ar+(t?1:0)),n=0;return r.writeUInt8(e.type,n++),n=this.writeCharCode(r,e.charCode,n,t),r.writeUInt8(e.bgColorCode,n++),r.writeUInt8(e.fgColorCode,n++),r.toUint8Array()}encodeFillCharOrder(e,t){let r=e.patternWidth*e.patternHeight,n=this.charCodeSize(t),o=f.allocUnsafe(Pr+r*n),i=0;o.writeUInt8(e.type,i++),o.writeUInt8(e.patternWidth-1,i++),o.writeUInt8(e.patternHeight-1,i++),o.writeUInt8(e.bgColorCode,i++),o.writeUInt8(e.fgColorCode,i++);for(let s of e.pattern)i=this.writeCharCode(o,s,i,t);return o.toUint8Array()}encodeFillSpriteOrder(e){let t=f.allocUnsafe(kr),r=0;return t.writeUInt8(e.type,r++),t.writeUInt8(e.spriteIndex,r++),t.writeUInt8(e.bgColorCode,r++),t.writeUInt8(e.fgColorCode,r++),t.toUint8Array()}encodeFillSpriteMultiColorOrder(e){let t=f.allocUnsafe(Rr),r=0;return t.writeUInt8(e.type,r++),t.writeUInt8(e.spriteIndex,r++),t.toUint8Array()}};C(nt,"OrderEncoder");var W=nt;T();var Lr=4,ot=4,Fr=8,it=class it{encode(e){let t=e.renderPasses?.length??0;if(t>ot)throw new Error(`renderPasses supports up to ${ot} entries, got ${t}`);let r=Fr+t*Lr,n=f.allocUnsafe(r),o=0;if(n.writeUInt8(e.id,o++),n.writeUInt16BE(e.originX,o),o+=2,n.writeUInt16BE(e.originY,o),o+=2,n.writeUInt8(e.sizeX-1,o++),n.writeUInt8(e.sizeY-1,o++),n.writeUInt8(t,o++),t>0&&e.renderPasses)for(let i of e.renderPasses){let s=Math.max(0,Math.min(255,i.id)),a=Math.max(0,Math.min(255,i.zMin)),d=Math.max(0,Math.min(255,i.zMax)),l=i.enabled===!1?0:1;n.writeUInt8(s,o++),n.writeUInt8(a,o++),n.writeUInt8(d,o++),n.writeUInt8(l,o++)}return n.toUint8Array()}calculateSize(e){let t=Math.min(e.renderPasses?.length??0,ot);return Fr+t*Lr}};C(it,"DisplayEncoder");var j=it;T();var Dr=255,Vr=32,_r=64,st=class st{constructor(){h(this,"orderEncoder");this.orderEncoder=new W}encode(e){let t=e.is16bit;if(e.orders.length>Dr)throw new Error(`[UTSP] LayerEncoder: Layer ${e.id} has ${e.orders.length} orders, max is ${Dr}. This would cause packet corruption! Split into multiple layers.`);let r=e.orders.map(l=>this.orderEncoder.encode(l,t)),n=13,o=r.reduce((l,c)=>l+c.length,0),i=n+o,s=f.allocUnsafe(i),a=0;s.writeUInt16BE(e.id,a),a+=2;let d=e.updateFlags;e.isMacroLayer?d|=Vr:d&=~Vr,t?d|=_r:d&=~_r,s.writeUInt8(d,a++),s.writeUInt8(e.zIndex,a++),s.writeUInt16BE(e.originX,a),a+=2,s.writeUInt16BE(e.originY,a),a+=2,s.writeUInt16BE(e.width,a),a+=2,s.writeUInt16BE(e.height,a),a+=2,s.writeUInt8(e.orders.length,a++);for(let l of r)f.from(l).copy(s,a),a+=l.length;return s.toUint8Array()}calculateSize(e){let r=e.is16bit;return 13+e.orders.reduce((o,i)=>o+this.orderEncoder.encode(i,r).length,0)}};C(st,"LayerEncoder");var J=st;T();Z();var at=class at{encode(e){switch(e.type){case 1:return this.encodePlaySoundOrder(e);case 2:return this.encodePlayGlobalSoundOrder(e);case 3:return this.encodeStopSoundOrder(e);case 4:return this.encodeFadeOutSoundOrder(e);case 5:return this.encodePauseSoundOrder(e);case 6:return this.encodeResumeSoundOrder(e);case 7:return this.encodeSetListenerPositionOrder(e);case 8:return this.encodeConfigureSpatialOrder(e);case 9:return this.encodeSetSoundEffectsOrder(e);default:throw new Error(`Unknown audio order type: ${e.type}`)}}calculateSize(e){switch(e.type){case 1:return this.calculatePlaySoundSize(e);case 2:return this.calculatePlayGlobalSoundSize(e);case 3:case 5:case 6:return this.calculateTargetOrderSize(e);case 4:return this.calculateFadeOutSize(e);case 7:return We;case 8:return je;case 9:return this.calculateSetSoundEffectsSize(e);default:throw new Error(`Unknown audio order type: ${e.type}`)}}encodePlaySoundOrder(e){let t=this.calculatePlaySoundSize(e),r=f.allocUnsafe(t),n=0;return r.writeUInt8(e.type,n++),r.writeUInt8(e.soundId,n++),r.writeUInt16BE(e.instanceId,n),n+=2,r.writeUInt8(e.flags,n++),e.flags&2&&r.writeUInt8(e.volume??255,n++),e.flags&4&&r.writeUInt8(e.pitch??128,n++),e.flags&8&&r.writeUInt8(e.fadeIn??0,n++),e.flags&16&&(r.writeUInt16BE(e.posX??0,n),n+=2,r.writeUInt16BE(e.posY??0,n),n+=2),e.flags&32&&r.writeUInt8(e.lowpass??0,n++),e.flags&64&&r.writeUInt8(e.highpass??0,n++),e.flags&128&&r.writeUInt8(e.reverb??0,n++),r.toUint8Array()}encodePlayGlobalSoundOrder(e){let t=this.calculatePlayGlobalSoundSize(e),r=f.allocUnsafe(t),n=0;r.writeUInt8(e.type,n++),r.writeUInt8(e.soundId,n++),r.writeUInt16BE(e.instanceId,n),n+=2;let o=e.flags&-17;return r.writeUInt8(o,n++),o&2&&r.writeUInt8(e.volume??255,n++),o&4&&r.writeUInt8(e.pitch??128,n++),o&8&&r.writeUInt8(e.fadeIn??0,n++),o&32&&r.writeUInt8(e.lowpass??0,n++),o&64&&r.writeUInt8(e.highpass??0,n++),o&128&&r.writeUInt8(e.reverb??0,n++),r.toUint8Array()}calculatePlaySoundSize(e){let t=Br;return e.flags&2&&(t+=1),e.flags&4&&(t+=1),e.flags&8&&(t+=1),e.flags&16&&(t+=4),e.flags&32&&(t+=1),e.flags&64&&(t+=1),e.flags&128&&(t+=1),t}calculatePlayGlobalSoundSize(e){let t=zr,r=e.flags&-17;return r&2&&(t+=1),r&4&&(t+=1),r&8&&(t+=1),r&32&&(t+=1),r&64&&(t+=1),r&128&&(t+=1),t}encodeStopSoundOrder(e){return this.encodeTargetOrder(e.type,e.targetType,e.target)}encodePauseSoundOrder(e){return this.encodeTargetOrder(e.type,e.targetType,e.target)}encodeResumeSoundOrder(e){return this.encodeTargetOrder(e.type,e.targetType,e.target)}encodeFadeOutSoundOrder(e){let t=this.calculateFadeOutSize(e),r=f.allocUnsafe(t),n=0;return r.writeUInt8(e.type,n++),r.writeUInt8(e.targetType,n++),r.writeUInt8(e.duration,n++),e.targetType===0?r.writeUInt16BE(e.target??0,n):e.targetType===1&&r.writeUInt8(e.target??0,n),r.toUint8Array()}encodeTargetOrder(e,t,r){let n=2;t===0?n+=2:t===1&&(n+=1);let o=f.allocUnsafe(n),i=0;return o.writeUInt8(e,i++),o.writeUInt8(t,i++),t===0?o.writeUInt16BE(r??0,i):t===1&&o.writeUInt8(r??0,i),o.toUint8Array()}calculateTargetOrderSize(e){let t=2;return e.targetType===0?t+=2:e.targetType===1&&(t+=1),t}calculateFadeOutSize(e){let t=3;return e.targetType===0?t+=2:e.targetType===1&&(t+=1),t}encodeSetListenerPositionOrder(e){let t=f.allocUnsafe(We),r=0;return t.writeUInt8(e.type,r++),t.writeUInt16BE(e.x,r),r+=2,t.writeUInt16BE(e.y,r),t.toUint8Array()}encodeConfigureSpatialOrder(e){let t=f.allocUnsafe(je),r=0;return t.writeUInt8(e.type,r++),t.writeUInt8(e.maxDistance,r++),t.writeUInt8(e.referenceDistance,r++),t.writeUInt8(e.rolloffFactor,r++),t.writeUInt8(e.panSpread,r++),t.toUint8Array()}encodeSetSoundEffectsOrder(e){let t=this.calculateSetSoundEffectsSize(e),r=f.allocUnsafe(t),n=0;return r.writeUInt8(e.type,n++),r.writeUInt16BE(e.instanceId,n),n+=2,r.writeUInt8(e.flags,n++),e.flags&1&&r.writeUInt8(e.lowpass??0,n++),e.flags&2&&r.writeUInt8(e.highpass??0,n++),e.flags&4&&r.writeUInt8(e.reverb??0,n++),r.toUint8Array()}calculateSetSoundEffectsSize(e){let t=4;return e.flags&1&&(t+=1),e.flags&2&&(t+=1),e.flags&4&&(t+=1),t}};C(at,"AudioOrderEncoder");var xe=at;T();var dt=class dt{encode(e){switch(e.type){case 1:return this.encodeMobileVibrateOrder(e);case 2:return this.encodeMobileCancelOrder(e);case 16:return this.encodeGamepadVibrateOrder(e);case 17:return this.encodeGamepadCancelOrder(e);default:throw new Error(`Unknown vibration order type: ${e.type}`)}}calculateSize(e){switch(e.type){case 1:return this.calculateMobileVibrateSize(e);case 2:return 1;case 16:return this.calculateGamepadVibrateSize(e);case 17:return 3;default:throw new Error(`Unknown vibration order type: ${e.type}`)}}calculateMobileVibrateSize(e){let t=3+e.pattern.length*2;return e.intensity!==void 0&&(t+=1),t}encodeMobileVibrateOrder(e){let t=this.calculateMobileVibrateSize(e),r=f.allocUnsafe(t),n=0,o=0;e.intensity!==void 0&&(o|=1),r.writeUInt8(e.type,n++),r.writeUInt8(o,n++),r.writeUInt8(e.pattern.length,n++);for(let i of e.pattern){let s=Math.min(65535,Math.max(0,Math.round(i)));r.writeUInt16BE(s,n),n+=2}if(e.intensity!==void 0){let i=Math.round(Math.min(1,Math.max(0,e.intensity))*255);r.writeUInt8(i,n++)}return r.toUint8Array()}encodeMobileCancelOrder(e){let t=f.allocUnsafe(1);return t.writeUInt8(2,0),t.toUint8Array()}calculateGamepadVibrateSize(e){let t=7;return e.startDelay!==void 0&&e.startDelay>0&&(t+=2),t}encodeGamepadVibrateOrder(e){let t=this.calculateGamepadVibrateSize(e),r=f.allocUnsafe(t),n=0,o=0;e.startDelay!==void 0&&e.startDelay>0&&(o|=1),e.gamepadIndex===255&&(o|=2),r.writeUInt8(e.type,n++),r.writeUInt8(o,n++),r.writeUInt8(e.gamepadIndex,n++);let i=Math.min(65535,Math.max(0,Math.round(e.duration)));if(r.writeUInt16BE(i,n),n+=2,r.writeUInt8(e.strongMagnitude,n++),r.writeUInt8(e.weakMagnitude,n++),e.startDelay!==void 0&&e.startDelay>0){let s=Math.min(65535,Math.max(0,Math.round(e.startDelay)));r.writeUInt16BE(s,n),n+=2}return r.toUint8Array()}encodeGamepadCancelOrder(e){let t=f.allocUnsafe(3),r=0,n=0;return e.gamepadIndex===255&&(n|=2),t.writeUInt8(e.type,r++),t.writeUInt8(n,r++),t.writeUInt8(e.gamepadIndex,r++),t.toUint8Array()}};C(dt,"VibrationOrderEncoder");var Oe=dt;T();var lt=class lt{encode(e){switch(e.type){case 1:return this.encodeCreateInstance(e);case 2:return this.encodeUpdateInstance(e);case 3:return this.encodeRemoveInstance(e);default:throw new Error(`Unknown macro order type: ${e.type}`)}}calculateSize(e){switch(e.type){case 1:return this.calculateCreateInstanceSize(e);case 2:return this.calculateUpdateInstanceSize(e);case 3:return 2;default:throw new Error(`Unknown macro order type: ${e.type}`)}}encodeCreateInstance(e){let t=JSON.stringify(e.params),r=new TextEncoder().encode(t);if(r.length>65535)throw new Error(`Params JSON too large: ${r.length} bytes (max 65535)`);let n=11+r.length,o=f.allocUnsafe(n),i=0;return o.writeUInt8(e.type,i++),o.writeUInt8(e.instanceId,i++),o.writeUInt8(e.macroId,i++),o.writeUInt8(e.layerId,i++),o.writeInt16BE(e.x,i),i+=2,o.writeInt16BE(e.y,i),i+=2,o.writeUInt8(e.tabIndex,i++),o.writeUInt16BE(r.length,i),i+=2,o.toUint8Array().set(r,i),o.toUint8Array()}calculateCreateInstanceSize(e){let t=JSON.stringify(e.params);return 11+new TextEncoder().encode(t).length}encodeUpdateInstance(e){let t=JSON.stringify(e.params),r=new TextEncoder().encode(t);if(r.length>65535)throw new Error(`Params JSON too large: ${r.length} bytes (max 65535)`);let n=4+r.length,o=f.allocUnsafe(n),i=0;return o.writeUInt8(e.type,i++),o.writeUInt8(e.instanceId,i++),o.writeUInt16BE(r.length,i),i+=2,o.toUint8Array().set(r,i),o.toUint8Array()}calculateUpdateInstanceSize(e){let t=JSON.stringify(e.params);return 4+new TextEncoder().encode(t).length}encodeRemoveInstance(e){let t=f.allocUnsafe(2);return t.writeUInt8(e.type,0),t.writeUInt8(e.instanceId,1),t.toUint8Array()}};C(lt,"MacroOrderEncoder");var q=lt;T();Z();var ct=class ct{encode(e){switch(e.type){case 1:return this.encodeSetConfigOrder(e);case 2:return this.encodeSetScanlinesOrder(e);case 3:return this.encodeSetAmbientEffectOrder(e);case 4:return this.encodeSetScalingModeOrder(e);case 5:return this.encodeSetGridOrder(e);case 6:return this.encodeSwitchPaletteOrder(e);case 7:return this.encodeSetCellSizeOrder(e);default:throw new Error(`Unknown post-process order type: ${e.type}`)}}calculateSize(e){switch(e.type){case 1:return this.calculateSetConfigSize(e);case 2:return Je;case 3:return qe;case 4:return Ke;case 5:return Qe;case 6:return et;case 7:return tt;default:throw new Error(`Unknown post-process order type: ${e.type}`)}}encodeSetConfigOrder(e){let t=this.calculateSetConfigSize(e),r=f.allocUnsafe(t),n=0;return r.writeUInt8(e.type,n++),r.writeUInt8(e.displayId,n++),r.writeUInt8(e.flags,n++),e.flags&1&&e.scanlines&&(r.writeUInt8(e.scanlines.enabled?1:0,n++),r.writeUInt8(Math.round(e.scanlines.opacity*255),n++),r.writeUInt8(e.scanlines.pattern,n++),r.writeUInt8(e.scanlines.colorR,n++),r.writeUInt8(e.scanlines.colorG,n++),r.writeUInt8(e.scanlines.colorB,n++)),e.flags&2&&e.ambientEffect&&(r.writeUInt8(e.ambientEffect.enabled?1:0,n++),r.writeUInt8(Math.min(255,Math.round(e.ambientEffect.blur)),n++),r.writeUInt8(Math.min(255,Math.max(100,Math.round(e.ambientEffect.scale*100))),n++),r.writeUInt8(Math.round(e.ambientEffect.opacity*255),n++)),r.toUint8Array()}calculateSetConfigSize(e){let t=Tr;return e.flags&1&&(t+=6),e.flags&2&&(t+=4),t}encodeSetScanlinesOrder(e){let t=f.allocUnsafe(Je),r=0;return t.writeUInt8(e.type,r++),t.writeUInt8(e.displayId,r++),t.writeUInt8(e.enabled?1:0,r++),t.writeUInt8(Math.round(e.opacity*255),r++),t.writeUInt8(e.pattern,r++),t.writeUInt8(e.colorR,r++),t.writeUInt8(e.colorG,r++),t.writeUInt8(e.colorB,r++),t.toUint8Array()}encodeSetAmbientEffectOrder(e){let t=f.allocUnsafe(qe),r=0;return t.writeUInt8(e.type,r++),t.writeUInt8(e.displayId,r++),t.writeUInt8(e.enabled?1:0,r++),t.writeUInt8(Math.min(255,Math.round(e.blur)),r++),t.writeUInt8(Math.min(255,Math.max(100,Math.round(e.scale*100))),r++),t.writeUInt8(Math.round(e.opacity*255),r++),t.toUint8Array()}encodeSetScalingModeOrder(e){let t=f.allocUnsafe(Ke),r=0;return t.writeUInt8(e.type,r++),t.writeUInt8(e.displayId,r++),t.writeUInt8(e.mode,r++),t.toUint8Array()}encodeSetGridOrder(e){let t=f.allocUnsafe(Qe),r=0;return t.writeUInt8(e.type,r++),t.writeUInt8(e.displayId,r++),t.writeUInt8(e.enabled?1:0,r++),t.writeUInt8(e.colorR,r++),t.writeUInt8(e.colorG,r++),t.writeUInt8(e.colorB,r++),t.writeUInt8(e.colorA,r++),t.writeUInt8(Math.min(10,Math.max(1,e.lineWidth)),r++),t.toUint8Array()}encodeSwitchPaletteOrder(e){let t=f.allocUnsafe(et),r=0;return t.writeUInt8(e.type,r++),t.writeUInt8(e.displayId,r++),t.writeUInt8(e.slotId,r++),t.toUint8Array()}encodeSetCellSizeOrder(e){let t=f.allocUnsafe(tt),r=0;return t.writeUInt8(e.type,r++),t.writeUInt8(e.displayId,r++),t.writeUInt8(e.cellWidth,r++),t.writeUInt8(e.cellHeight,r++),t.toUint8Array()}};C(ct,"PostProcessOrderEncoder");var ve=ct;T();var ut=class ut{constructor(){h(this,"layerEncoder");h(this,"audioOrderEncoder");h(this,"vibrationOrderEncoder");h(this,"macroOrderEncoder");h(this,"postProcessOrderEncoder");h(this,"displayEncoder");this.layerEncoder=new J,this.audioOrderEncoder=new xe,this.vibrationOrderEncoder=new Oe,this.macroOrderEncoder=new q,this.postProcessOrderEncoder=new ve,this.displayEncoder=new j}encode(e){let t=e.layers.map(O=>this.layerEncoder.encode(O)),r=e.audioOrders||[],n=r.map(O=>this.audioOrderEncoder.encode(O)),o=e.vibrationOrders||[],i=o.map(O=>this.vibrationOrderEncoder.encode(O)),s=e.macroOrders||[],a=s.map(O=>this.macroOrderEncoder.encode(O)),d=e.postProcessOrders||[],l=d.map(O=>this.postProcessOrderEncoder.encode(O)),c=9,u=e.displays.reduce((O,z)=>O+this.displayEncoder.calculateSize(z),0),p=2,m=t.reduce((O,z)=>O+z.length,0),g=1,y=n.reduce((O,z)=>O+z.length,0),S=1,x=i.reduce((O,z)=>O+z.length,0),I=1,v=a.reduce((O,z)=>O+z.length,0),w=1,A=l.reduce((O,z)=>O+z.length,0),E=c+u+p+m+g+y+S+x+I+v+w+A,U=f.allocUnsafe(E),M=0,B=typeof e.tick=="bigint"?e.tick:BigInt(e.tick);U.writeBigUInt64BE(B,M),M+=8,U.writeUInt8(e.displays.length,M),M+=1;for(let O of e.displays){let z=this.displayEncoder.encode(O);f.from(z).copy(U,M),M+=z.length}U.writeUInt16BE(e.layers.length,M),M+=2;for(let O of t)f.from(O).copy(U,M),M+=O.length;U.writeUInt8(r.length,M),M+=1;for(let O of n)f.from(O).copy(U,M),M+=O.length;U.writeUInt8(o.length,M),M+=1;for(let O of i)f.from(O).copy(U,M),M+=O.length;U.writeUInt8(s.length,M),M+=1;for(let O of a)f.from(O).copy(U,M),M+=O.length;U.writeUInt8(d.length,M),M+=1;for(let O of l)f.from(O).copy(U,M),M+=O.length;return U.toUint8Array()}calculateSize(e){let r=e.displays.reduce((x,I)=>x+this.displayEncoder.calculateSize(I),0),n=2,o=e.layers.reduce((x,I)=>x+this.layerEncoder.calculateSize(I),0),i=1,a=(e.audioOrders||[]).reduce((x,I)=>x+this.audioOrderEncoder.calculateSize(I),0),d=1,c=(e.vibrationOrders||[]).reduce((x,I)=>x+this.vibrationOrderEncoder.calculateSize(I),0),u=1,m=(e.macroOrders||[]).reduce((x,I)=>x+this.macroOrderEncoder.calculateSize(I),0),g=1,S=(e.postProcessOrders||[]).reduce((x,I)=>x+this.postProcessOrderEncoder.calculateSize(I),0);return 9+r+n+o+i+a+d+c+u+m+g+S}static createEmptyPacket(e){return{tick:typeof e=="bigint"?Number(e):e,displayCount:0,displays:[],layerCount:0,layers:[],audioOrderCount:0,audioOrders:[],vibrationOrderCount:0,vibrationOrders:[],macroOrderCount:0,macroOrders:[],postProcessOrderCount:0,postProcessOrders:[]}}encodeEmpty(e){let t=f.allocUnsafe(15),r=typeof e=="bigint"?e:BigInt(e);return t.writeBigUInt64BE(r,0),t.writeUInt8(0,8),t.writeUInt16BE(0,9),t.writeUInt8(0,11),t.writeUInt8(0,12),t.writeUInt8(0,13),t.writeUInt8(0,14),t.toUint8Array()}};C(ut,"UpdatePacketEncoder");var K=ut;T();var pt=class pt{encode(e){switch(e.loadType){case 1:return this.encodeColorPalette(e);case 2:return this.encodeSprite(e);case 3:return this.encodeMulticolorSprite(e);case 5:return this.encodeSound(e);case 8:return this.encodeImageFont(e);case 9:return this.encodeImageFontBlock(e);default:throw new Error(`Unknown load type: ${e.loadType}`)}}encodeColorPalette(e){let t=e.colors.length;if(t>255)throw new Error(`Palette size ${t} exceeds maximum of 255`);let r=e.slotId!==void 0,n=r?4:3,o=f.allocUnsafe(n+t*6),i=0;o.writeUInt8(1,i++),o.writeUInt8(r?255:0,i++),r&&o.writeUInt8(e.slotId,i++),o.writeUInt8(t,i++);for(let s of e.colors)o.writeUInt8(s.colorId,i++),o.writeUInt8(s.r,i++),o.writeUInt8(s.g,i++),o.writeUInt8(s.b,i++),o.writeUInt8(s.a,i++),o.writeUInt8(s.e??0,i++);return o.toUint8Array()}encodeSprite(e){let t=e.sprites.length;if(t>255)throw new Error(`Sprite count ${t} exceeds maximum of 255`);let r=2;for(let i of e.sprites)r+=3,r+=i.data.length;let n=f.allocUnsafe(r),o=0;n.writeUInt8(2,o++),n.writeUInt8(t,o++);for(let i of e.sprites){if(i.data.length!==i.sizeX*i.sizeY)throw new Error(`Sprite ${i.spriteId}: data length ${i.data.length} does not match size ${i.sizeX}x${i.sizeY}`);n.writeUInt8(i.spriteId,o++),n.writeUInt8(i.sizeX,o++),n.writeUInt8(i.sizeY,o++);for(let s of i.data)n.writeUInt8(s,o++)}return n.toUint8Array()}encodeMulticolorSprite(e){let t=e.sprites.length;if(t>255)throw new Error(`Sprite count ${t} exceeds maximum of 255`);let r=2;for(let i of e.sprites)r+=3,r+=i.data.length*3;let n=f.allocUnsafe(r),o=0;n.writeUInt8(3,o++),n.writeUInt8(t,o++);for(let i of e.sprites){if(i.data.length!==i.sizeX*i.sizeY)throw new Error(`Sprite ${i.spriteId}: data length ${i.data.length} does not match size ${i.sizeX}x${i.sizeY}`);n.writeUInt8(i.spriteId,o++),n.writeUInt8(i.sizeX,o++),n.writeUInt8(i.sizeY,o++);for(let s of i.data)n.writeUInt8(s.charCode,o++),n.writeUInt8(s.fgColorId,o++),n.writeUInt8(s.bgColorId,o++)}return n.toUint8Array()}encodeSound(e){let t=e.sounds.length;if(t>255)throw new Error(`Sound count ${t} exceeds maximum of 255`);let r=2;for(let i of e.sounds){if(i.midiData.length>65535)throw new Error(`Sound ${i.soundId}: MIDI data size ${i.midiData.length} exceeds maximum of 65535 bytes`);r+=3,r+=i.midiData.length}let n=f.allocUnsafe(r),o=0;n.writeUInt8(5,o++),n.writeUInt8(t,o++);for(let i of e.sounds){n.writeUInt8(i.soundId,o++),n.writeUInt16BE(i.midiData.length,o),o+=2;for(let s=0;s<i.midiData.length;s++)n.writeUInt8(i.midiData[s],o++)}return n.toUint8Array()}encodeImageFont(e){if(![1,4,16].includes(e.atlasBlocks))throw new Error(`Invalid atlasBlocks value: ${e.atlasBlocks}. Must be 1, 4, or 16.`);let r=f.allocUnsafe(6),n=0;return r.writeUInt8(8,n++),r.writeUInt8(e.glyphWidth,n++),r.writeUInt8(e.glyphHeight,n++),r.writeUInt8(e.cellWidth,n++),r.writeUInt8(e.cellHeight,n++),r.writeUInt8(e.atlasBlocks,n++),r.toUint8Array()}encodeImageFontBlock(e){let t=6+e.imageData.length,r=f.allocUnsafe(t),n=0;r.writeUInt8(9,n++),r.writeUInt8(e.blockIndex,n++),r.writeUInt32LE(e.imageData.length,n),n+=4;for(let o=0;o<e.imageData.length;o++)r.writeUInt8(e.imageData[o],n++);return r.toUint8Array()}};C(pt,"LoadEncoder");var Y=pt;T();var mt=class mt{encode(e){let t=JSON.stringify(e.template),r=new TextEncoder().encode(t);if(r.length>65535)throw new Error(`Macro template JSON too large: ${r.length} bytes (max 65535)`);let n=4+r.length,o=f.allocUnsafe(n),i=0;return o.writeUInt8(7,i++),o.writeUInt8(e.macroId,i++),o.writeUInt16BE(r.length,i),i+=2,o.toUint8Array().set(r,i),o.toUint8Array()}calculateSize(e){let t=JSON.stringify(e.template);return 4+new TextEncoder().encode(t).length}};C(mt,"MacroLoadEncoder");var Q=mt;T();var ht=class ht{encode(e){switch(e.type){case 1:return this.encodeClick(e);case 2:return this.encodeChange(e);case 3:return this.encodeSubmit(e);case 4:return this.encodeSelect(e);default:throw new Error(`Unknown macro event type: ${e.type}`)}}calculateSize(e){switch(e.type){case 1:return 2;case 2:return this.calculateChangeSize(e);case 3:return this.calculateSubmitSize(e);case 4:return 4;default:throw new Error(`Unknown macro event type: ${e.type}`)}}encodeClick(e){let t=f.allocUnsafe(2);return t.writeUInt8(e.type,0),t.writeUInt8(e.instanceId,1),t.toUint8Array()}encodeChange(e){if(typeof e.value=="boolean"){let r=f.allocUnsafe(4);return r.writeUInt8(e.type,0),r.writeUInt8(e.instanceId,1),r.writeUInt8(1,2),r.writeUInt8(e.value?1:0,3),r.toUint8Array()}else{let r=f.allocUnsafe(7);return r.writeUInt8(e.type,0),r.writeUInt8(e.instanceId,1),r.writeUInt8(0,2),r.writeFloatBE(e.value,3),r.toUint8Array()}}calculateChangeSize(e){return typeof e.value=="boolean"?4:7}encodeSubmit(e){let t=new TextEncoder().encode(e.text);if(t.length>65535)throw new Error(`Submit text too large: ${t.length} bytes (max 65535)`);let r=4+t.length,n=f.allocUnsafe(r),o=0;return n.writeUInt8(e.type,o++),n.writeUInt8(e.instanceId,o++),n.writeUInt16BE(t.length,o),o+=2,n.toUint8Array().set(t,o),n.toUint8Array()}calculateSubmitSize(e){return 4+new TextEncoder().encode(e.text).length}encodeSelect(e){let t=f.allocUnsafe(4);return t.writeUInt8(e.type,0),t.writeUInt8(e.instanceId,1),t.writeUInt16BE(e.index,2),t.toUint8Array()}};C(ht,"MacroEventEncoder");var we=ht;gt();yt();St();Mt();vt();T();var Et=class Et{decode(e,t=0){let r=t,n=e.readUInt8(t++);if(n!==7)throw new Error(`Expected LoadType.Macro (0x07), got 0x${n.toString(16)}`);let o=e.readUInt8(t++),i=e.readUInt16BE(t);t+=2;let s=e.toUint8Array().subarray(t,t+i);t+=i;let a=new TextDecoder().decode(s),d=JSON.parse(a);return{load:{loadType:7,macroId:o,template:d},bytesRead:t-r}}};C(Et,"MacroLoadDecoder");var oe=Et;var At=class At{decode(e,t=0){let r=f.from(e);if(t>=r.length)throw new Error("Buffer too short to decode load type");let n=r.readUInt8(t);switch(n){case 1:return this.decodeColorPalette(r,t);case 2:return this.decodeSprite(r,t);case 3:return this.decodeMulticolorSprite(r,t);case 5:return this.decodeSound(r,t);case 7:return this.decodeMacro(r,t);case 8:return this.decodeImageFont(r,t);case 9:return this.decodeImageFontBlock(r,t);default:throw new Error(`Unknown load type: 0x${n.toString(16)}`)}}decodeColorPalette(e,t){let r=t;this.checkSize(e,t,3,"ColorPalette header");let n=e.readUInt8(t++),i=e.readUInt8(t++)===255,s;i&&(this.checkSize(e,t,1,"ColorPalette slotId"),s=e.readUInt8(t++));let a=e.readUInt8(t++);this.checkSize(e,t,a*6,`ColorPalette ${a} colors`);let d=[];for(let c=0;c<a;c++)d.push({colorId:e.readUInt8(t++),r:e.readUInt8(t++),g:e.readUInt8(t++),b:e.readUInt8(t++),a:e.readUInt8(t++),e:e.readUInt8(t++)});return{load:{loadType:1,...s!==void 0&&{slotId:s},colors:d},bytesRead:t-r}}decodeSprite(e,t){let r=t;this.checkSize(e,t,2,"Sprite header");let n=e.readUInt8(t++),o=e.readUInt8(t++),i=[];for(let a=0;a<o;a++){this.checkSize(e,t,3,`Sprite ${a} header`);let d=e.readUInt8(t++),l=e.readUInt8(t++),c=e.readUInt8(t++),u=l*c;this.checkSize(e,t,u,`Sprite ${a} data`);let p=[];for(let m=0;m<u;m++)p.push(e.readUInt8(t++));i.push({spriteId:d,sizeX:l,sizeY:c,data:p})}return{load:{loadType:2,sprites:i},bytesRead:t-r}}decodeMulticolorSprite(e,t){let r=t;this.checkSize(e,t,2,"MulticolorSprite header");let n=e.readUInt8(t++),o=e.readUInt8(t++),i=[];for(let a=0;a<o;a++){this.checkSize(e,t,3,`MulticolorSprite ${a} header`);let d=e.readUInt8(t++),l=e.readUInt8(t++),c=e.readUInt8(t++),u=l*c;this.checkSize(e,t,u*3,`MulticolorSprite ${a} data`);let p=[];for(let m=0;m<u;m++)p.push({charCode:e.readUInt8(t++),fgColorId:e.readUInt8(t++),bgColorId:e.readUInt8(t++)});i.push({spriteId:d,sizeX:l,sizeY:c,data:p})}return{load:{loadType:3,sprites:i},bytesRead:t-r}}decodeSound(e,t){let r=t;this.checkSize(e,t,2,"Sound header");let n=e.readUInt8(t++),o=e.readUInt8(t++),i=[];for(let a=0;a<o;a++){this.checkSize(e,t,3,`Sound ${a} header`);let d=e.readUInt8(t++),l=e.readUInt16BE(t);t+=2,this.checkSize(e,t,l,`Sound ${a} MIDI data`);let c=new Uint8Array(l);for(let u=0;u<l;u++)c[u]=e.readUInt8(t++);i.push({soundId:d,midiData:c})}return{load:{loadType:5,sounds:i},bytesRead:t-r}}checkSize(e,t,r,n){if(t+r>e.length)throw new Error(`Buffer too short for ${n}: need ${r} bytes at offset ${t}, but only ${e.length-t} bytes remaining`)}decodeMacro(e,t){return new oe().decode(e,t)}decodeImageFont(e,t){let r=t;this.checkSize(e,t,6,"ImageFont header");let n=e.readUInt8(t++),o=e.readUInt8(t++),i=e.readUInt8(t++),s=e.readUInt8(t++),a=e.readUInt8(t++),d=e.readUInt8(t++);if(![1,4,16].includes(d))throw new Error(`Invalid atlasBlocks value: ${d}. Must be 1, 4, or 16.`);let l=d;return{load:{loadType:8,glyphWidth:o,glyphHeight:i,cellWidth:s,cellHeight:a,atlasBlocks:l},bytesRead:t-r}}decodeImageFontBlock(e,t){let r=t;this.checkSize(e,t,2,"ImageFontBlock header");let n=e.readUInt8(t++),o=e.readUInt8(t++);this.checkSize(e,t,4,"ImageFontBlock data size");let i=e.readUInt32LE(t);t+=4,this.checkSize(e,t,i,"ImageFontBlock data");let s=new Uint8Array(i);for(let d=0;d<i;d++)s[d]=e.readUInt8(t++);return{load:{loadType:9,blockIndex:o,imageData:s},bytesRead:t-r}}};C(At,"LoadDecoder");var ie=At;var Pt=class Pt{decode(e,t=0){let r=e.readUInt8(t);switch(r){case 1:return this.decodeClick(e,t);case 2:return this.decodeChange(e,t);case 3:return this.decodeSubmit(e,t);case 4:return this.decodeSelect(e,t);default:throw new Error(`Unknown macro event type: 0x${r.toString(16)}`)}}decodeAll(e,t,r){let n=[],o=0;for(let i=0;i<r;i++){let{event:s,bytesRead:a}=this.decode(e,t+o);n.push(s),o+=a}return{events:n,bytesRead:o}}decodeClick(e,t){let r=e.readUInt8(t),n=e.readUInt8(t+1);return{event:{type:r,instanceId:n},bytesRead:2}}decodeChange(e,t){let r=e.readUInt8(t),n=e.readUInt8(t+1),o=e.readUInt8(t+2),i,s;return o===1?(i=e.readUInt8(t+3)===1,s=4):(i=e.readFloatBE(t+3),s=7),{event:{type:r,instanceId:n,value:i},bytesRead:s}}decodeSubmit(e,t){let r=t,n=e.readUInt8(t++),o=e.readUInt8(t++),i=e.readUInt16BE(t);t+=2;let s=e.toUint8Array().subarray(t,t+i);t+=i;let a=new TextDecoder().decode(s);return{event:{type:n,instanceId:o,text:a},bytesRead:t-r}}decodeSelect(e,t){let r=e.readUInt8(t),n=e.readUInt8(t+1),o=e.readUInt16BE(t+2);return{event:{type:r,instanceId:n,index:o},bytesRead:4}}};C(Pt,"MacroEventDecoder");var se=Pt;var kt=class kt{constructor(){h(this,"currentWidth",256);h(this,"currentHeight",256)}rasterizeOrders(e,t,r,n,o){this.currentWidth=r,this.currentHeight=n,this.clearBuffer(t);for(let i of e)this.rasterizeOrder(i,t,o)}clearBuffer(e){e.clear()}rasterizeOrder(e,t,r){switch(e.type){case 1:this.rasterizeChar(e,t);break;case 2:this.rasterizeText(e,t);break;case 23:this.rasterizeTextMultiline(e,t);break;case 3:this.rasterizeSubFrame(e,t);break;case 4:this.rasterizeSubFrameMultiColor(e,t);break;case 5:this.rasterizeFullFrame(e,t);break;case 6:this.rasterizeFullFrameMultiColor(e,t);break;case 7:this.rasterizeSprite(e,t,r);break;case 8:this.rasterizeSpriteMultiColor(e,t,r);break;case 9:this.rasterizeColorMap(e,t);break;case 10:this.rasterizeShape(e,t);break;case 11:this.rasterizeDotCloud(e,t);break;case 12:this.rasterizeDotCloudMultiColor(e,t);break;case 17:this.rasterizeBitmask(e,t);break;case 18:this.rasterizeBitmask4(e,t);break;case 24:this.rasterizeBitmask16(e,t);break;case 25:this.rasterizePolyline(e,t);break;case 13:this.rasterizeSpriteCloud(e,t,r);break;case 14:this.rasterizeSpriteCloudMultiColor(e,t,r);break;case 15:this.rasterizeSpriteCloudVaried(e,t,r);break;case 16:this.rasterizeSpriteCloudVariedMultiColor(e,t,r);break;case 19:this.rasterizeClear(e,t);break;case 20:this.rasterizeFillChar(e,t);break;case 21:this.rasterizeFillSprite(e,t,r);break;case 22:this.rasterizeFillSpriteMultiColor(e,t,r);break;default:break}}rasterizeChar(e,t){let{posX:r,posY:n,charCode:o,bgColorCode:i,fgColorCode:s}=e;if(!this.isInBounds(r,n))return;let a=n*this.currentWidth+r;t.set(a,o,s,i)}rasterizeText(e,t){let{posX:r,posY:n,text:o,bgColorCode:i,fgColorCode:s}=e;if(this.isInBounds(r,n))for(let a=0;a<o.length;a++){let d=r+a;if(d>=this.currentWidth)break;let l=n*this.currentWidth+d,c=o.charCodeAt(a);t.set(l,c,s,i)}}rasterizeTextMultiline(e,t){let{posX:r,posY:n,text:o,bgColorCode:i,fgColorCode:s}=e,a=o.split(`
|
|
2
|
-
`),d=n;for(let l of a){if(d>=this.currentHeight)break;if(d>=0&&this.isInBounds(r,d))for(let c=0;c<l.length;c++){let u=r+c;if(u>=this.currentWidth)break;let p=d*this.currentWidth+u,m=l.charCodeAt(c);t.set(p,m,s,i)}d++}}rasterizeSubFrame(e,t){let{posX:r,posY:n,sizeX:o,sizeY:i,frame:s,bgColorCode:a,fgColorCode:d}=e;for(let l=0;l<i;l++){let c=n+l;if(!(c<0||c>=this.currentHeight))for(let u=0;u<o;u++){let p=r+u;if(p<0||p>=this.currentWidth)continue;let m=l*o+u;if(m>=s.length)break;let g=c*this.currentWidth+p;t.set(g,s[m],d,a)}}}rasterizeSubFrameMultiColor(e,t){let{posX:r,posY:n,sizeX:o,sizeY:i,frame:s}=e;for(let a=0;a<i;a++){let d=n+a;if(!(d<0||d>=this.currentHeight))for(let l=0;l<o;l++){let c=r+l;if(c<0||c>=this.currentWidth)continue;let u=a*o+l;if(u>=s.length)break;let p=s[u],m=d*this.currentWidth+c;t.set(m,p.charCode,p.fgColorCode,p.bgColorCode)}}}rasterizeFullFrame(e,t){let{frame:r,bgColorCode:n,fgColorCode:o}=e,i=this.currentWidth*this.currentHeight;for(let s=0;s<i&&s<r.length;s++)t.set(s,r[s],o,n)}rasterizeFullFrameMultiColor(e,t){let{frame:r}=e,n=this.currentWidth*this.currentHeight;for(let o=0;o<n&&o<r.length;o++){let i=r[o];t.set(o,i.charCode,i.fgColorCode,i.bgColorCode)}}rasterizeColorMap(e,t){let{posX:r,posY:n,sizeX:o,sizeY:i,colorData:s}=e;for(let a=0;a<i;a++){let d=n+a;if(!(d<0||d>=this.currentHeight))for(let l=0;l<o;l++){let c=r+l;if(c<0||c>=this.currentWidth)continue;let u=a*o+l;if(u>=s.length)break;let p=d*this.currentWidth+c,m=s[u];t.setColorsOnly(p,m.fgColorCode,m.bgColorCode)}}}rasterizeShape(e,t){let{shapeType:r,shapeData:n}=e;switch(r){case 1:this.rasterizeRectangle(n,t);break;case 2:this.rasterizeCircle(n,t);break;case 3:this.rasterizeLine(n,t);break;case 4:this.rasterizeEllipse(n,t);break;case 5:this.rasterizeTriangle(n,t);break}}rasterizeRectangle(e,t){let{posX:r,posY:n,width:o,height:i,filled:s,charCode:a,bgColorCode:d,fgColorCode:l}=e;if(s)for(let c=0;c<i;c++){let u=n+c;if(!(u<0||u>=this.currentHeight))for(let p=0;p<o;p++){let m=r+p;if(m<0||m>=this.currentWidth)continue;let g=u*this.currentWidth+m;t.set(g,a,l,d)}}else{for(let c=0;c<o;c++)this.setCell(r+c,n,a,d,l,t),this.setCell(r+c,n+i-1,a,d,l,t);for(let c=0;c<i;c++)this.setCell(r,n+c,a,d,l,t),this.setCell(r+o-1,n+c,a,d,l,t)}}rasterizeCircle(e,t){let{centerX:r,centerY:n,radius:o,filled:i,charCode:s,bgColorCode:a,fgColorCode:d}=e;if(i)for(let l=-o;l<=o;l++){let c=n+l;if(!(c<0||c>=this.currentHeight))for(let u=-o;u<=o;u++){let p=r+u;if(!(p<0||p>=this.currentWidth)&&u*u+l*l<=o*o){let m=c*this.currentWidth+p;t.set(m,s,d,a)}}}else{let l=o,c=0,u=0;for(;l>=c;)this.setCell(r+l,n+c,s,a,d,t),this.setCell(r+c,n+l,s,a,d,t),this.setCell(r-c,n+l,s,a,d,t),this.setCell(r-l,n+c,s,a,d,t),this.setCell(r-l,n-c,s,a,d,t),this.setCell(r-c,n-l,s,a,d,t),this.setCell(r+c,n-l,s,a,d,t),this.setCell(r+l,n-c,s,a,d,t),u<=0&&(c+=1,u+=2*c+1),u>0&&(l-=1,u-=2*l+1)}}rasterizeLine(e,t){let{x1:r,y1:n,x2:o,y2:i,charCode:s,bgColorCode:a,fgColorCode:d}=e,l=Math.abs(o-r),c=Math.abs(i-n),u=r<o?1:-1,p=n<i?1:-1,m=l-c,g=r,y=n;for(;this.setCell(g,y,s,a,d,t),!(g===o&&y===i);){let S=2*m;S>-c&&(m-=c,g+=u),S<l&&(m+=l,y+=p)}}rasterizePolyline(e,t){let{charCode:r,fgColorCode:n,bgColorCode:o,points:i}=e;if(i.length<2){i.length===1&&this.setCell(i[0].x,i[0].y,r,o,n,t);return}for(let s=0;s<i.length-1;s++){let a=i[s],d=i[s+1];this.rasterizeLineSegment(a.x,a.y,d.x,d.y,r,o,n,t)}}rasterizeLineSegment(e,t,r,n,o,i,s,a){let d=Math.abs(r-e),l=Math.abs(n-t),c=e<r?1:-1,u=t<n?1:-1,p=d-l,m=e,g=t;for(;this.setCell(m,g,o,i,s,a),!(m===r&&g===n);){let y=2*p;y>-l&&(p-=l,m+=c),y<d&&(p+=d,g+=u)}}rasterizeEllipse(e,t){let{centerX:r,centerY:n,radiusX:o,radiusY:i,filled:s,charCode:a,bgColorCode:d,fgColorCode:l}=e;if(s)for(let c=-i;c<=i;c++){let u=n+c;if(!(u<0||u>=this.currentHeight))for(let p=-o;p<=o;p++){let m=r+p;if(m<0||m>=this.currentWidth)continue;if(p*p/(o*o)+c*c/(i*i)<=1){let y=u*this.currentWidth+m;t.set(y,a,l,d)}}}else{let c=Math.max(o,i)*8;for(let u=0;u<c;u++){let p=2*Math.PI*u/c,m=Math.round(r+o*Math.cos(p)),g=Math.round(n+i*Math.sin(p));this.setCell(m,g,a,d,l,t)}}}rasterizeTriangle(e,t){let{x1:r,y1:n,x2:o,y2:i,x3:s,y3:a,filled:d,charCode:l,bgColorCode:c,fgColorCode:u}=e;if(d){let p=[{x:r,y:n},{x:o,y:i},{x:s,y:a}].sort((I,v)=>I.y-v.y),[m,g,y]=p,S=C((I,v,w)=>{let A=Math.round(Math.min(v,w)),E=Math.round(Math.max(v,w));for(let U=A;U<=E;U++)if(U>=0&&U<this.currentWidth&&I>=0&&I<this.currentHeight){let M=I*this.currentWidth+U;t.set(M,l,u,c)}},"drawLine"),x=C((I,v,w,A,E)=>A===v?w:w+(I-v)*(E-w)/(A-v),"interpolate");for(let I=m.y;I<=g.y;I++){let v=x(I,m.y,m.x,y.y,y.x),w=x(I,m.y,m.x,g.y,g.x);S(I,v,w)}for(let I=g.y+1;I<=y.y;I++){let v=x(I,m.y,m.x,y.y,y.x),w=x(I,g.y,g.x,y.y,y.x);S(I,v,w)}}else this.drawLineSegment(r,n,o,i,l,c,u,t),this.drawLineSegment(o,i,s,a,l,c,u,t),this.drawLineSegment(s,a,r,n,l,c,u,t)}drawLineSegment(e,t,r,n,o,i,s,a){let d=Math.abs(r-e),l=Math.abs(n-t),c=e<r?1:-1,u=t<n?1:-1,p=d-l,m=e,g=t;for(;this.setCell(m,g,o,i,s,a),!(m===r&&g===n);){let y=2*p;y>-l&&(p-=l,m+=c),y<d&&(p+=d,g+=u)}}rasterizeDotCloud(e,t){let{charCode:r,bgColorCode:n,fgColorCode:o,positions:i}=e,s=this.currentWidth;for(let a=0;a<i.length;a++){let d=i[a];if(d.posX<0||d.posX>=s||d.posY<0||d.posY>=this.currentHeight)continue;let l=d.posY*s+d.posX;t.set(l,r,o,n)}}rasterizeDotCloudMultiColor(e,t){let{dots:r}=e;for(let n of r)this.setCell(n.posX,n.posY,n.charCode,n.bgColorCode,n.fgColorCode,t)}rasterizeBitmask(e,t){let{posX:r,posY:n,sizeX:o,sizeY:i,charCode:s,bgColorCode:a,fgColorCode:d,override:l,mask:c}=e;for(let u=0;u<i;u++){let p=n+u;if(!(p<0||p>=this.currentHeight))for(let m=0;m<o;m++){let g=r+m;if(g<0||g>=this.currentWidth)continue;let y=u*o+m,S=Math.floor(y/8),x=y%8,I=(c[S]&1<<x)!==0,v=p*this.currentWidth+g;I?t.set(v,s,d,a):l&&t.set(v,255,255,255)}}}rasterizeBitmask4(e,t){let{posX:r,posY:n,sizeX:o,sizeY:i,override:s,variants:a,mask:d}=e;for(let l=0;l<i;l++){let c=n+l;if(!(c<0||c>=this.currentHeight))for(let u=0;u<o;u++){let p=r+u;if(p<0||p>=this.currentWidth)continue;let m=l*o+u,g=Math.floor(m/4),y=m%4*2,S=d[g]>>y&3,x=c*this.currentWidth+p;if(S>0){let I=a[S-1];t.set(x,I.charCode,I.fgColorCode,I.bgColorCode)}else s&&t.set(x,255,255,255)}}}rasterizeBitmask16(e,t){let{posX:r,posY:n,sizeX:o,sizeY:i,override:s,variants:a,mask:d}=e;for(let l=0;l<i;l++){let c=n+l;if(!(c<0||c>=this.currentHeight))for(let u=0;u<o;u++){let p=r+u;if(p<0||p>=this.currentWidth)continue;let m=l*o+u,g=Math.floor(m/2),y=m%2*4,S=d[g]>>y&15,x=c*this.currentWidth+p;if(S>0){let I=a[S-1];t.set(x,I.charCode,I.fgColorCode,I.bgColorCode)}else s&&t.set(x,255,255,255)}}}rasterizeClear(e,t){let{charCode:r,bgColorCode:n,fgColorCode:o}=e;t.clearWithColor(r,o,n)}rasterizeFillChar(e,t){let{patternWidth:r,patternHeight:n,pattern:o,bgColorCode:i,fgColorCode:s}=e;for(let a=0;a<this.currentHeight;a++)for(let d=0;d<this.currentWidth;d++){let l=d%r,u=a%n*r+l;if(u<o.length){let p=a*this.currentWidth+d;t.set(p,o[u],s,i)}}}rasterizeSprite(e,t,r){if(!r)return;let{posX:n,posY:o,spriteIndex:i,bgColorCode:s,fgColorCode:a}=e,d=r.getUnicolorSprite(i);if(!d)return;let l=d.data;for(let c=0;c<d.sizeY;c++)for(let u=0;u<d.sizeX;u++){let p=n+u,m=o+c;if(!this.isInBounds(p,m))continue;let g=c*d.sizeX+u,y=l.get(g);this.setCell(p,m,y,s,a,t)}}rasterizeSpriteMultiColor(e,t,r){if(!r)return;let{posX:n,posY:o,spriteIndex:i}=e,s=r.getMulticolorSprite(i);if(!s)return;let a=s.data;for(let d=0;d<s.sizeY;d++)for(let l=0;l<s.sizeX;l++){let c=n+l,u=o+d;if(!this.isInBounds(c,u))continue;let p=d*s.sizeX+l,m=a.getCharCode(p),g=a.getFgColorCode(p),y=a.getBgColorCode(p);this.setCell(c,u,m,y,g,t)}}rasterizeSpriteCloud(e,t,r){if(!r)return;let{spriteIndex:n,bgColorCode:o,fgColorCode:i,positions:s}=e,a=r.getUnicolorSprite(n);if(a){if(a.sizeX===1&&a.sizeY===1){let d=a.data.get(0),l=this.currentWidth;for(let c=0;c<s.length;c++){let u=s[c];if(u.posX<0||u.posX>=l||u.posY<0||u.posY>=this.currentHeight)continue;let p=u.posY*l+u.posX;t.set(p,d,i,o)}return}for(let d=0;d<s.length;d++){let l=a.data;for(let c=0;c<a.sizeY;c++)for(let u=0;u<a.sizeX;u++){let p=s[d].posX+u,m=s[d].posY+c;if(!this.isInBounds(p,m))continue;let g=c*a.sizeX+u,y=l.get(g);this.setCell(p,m,y,o,i,t)}}}}rasterizeSpriteCloudMultiColor(e,t,r){if(!r)return;let{spriteIndex:n,positions:o}=e,i=r.getMulticolorSprite(n);if(i)for(let s=0;s<o.length;s++){let a=i.data;for(let d=0;d<i.sizeY;d++)for(let l=0;l<i.sizeX;l++){let c=o[s].posX+l,u=o[s].posY+d;if(!this.isInBounds(c,u))continue;let p=d*i.sizeX+l,m=a.getCharCode(p),g=a.getFgColorCode(p),y=a.getBgColorCode(p);this.setCell(c,u,m,y,g,t)}}}rasterizeSpriteCloudVaried(e,t,r){if(!r)return;let{sprites:n}=e;for(let o=0;o<n.length;o++){let i=n[o],s=r.getUnicolorSprite(i.spriteIndex);if(!s)continue;let a=s.data;for(let d=0;d<s.sizeY;d++)for(let l=0;l<s.sizeX;l++){let c=i.posX+l,u=i.posY+d;if(!this.isInBounds(c,u))continue;let p=d*s.sizeX+l,m=a.get(p);this.setCell(c,u,m,i.bgColorCode,i.fgColorCode,t)}}}rasterizeSpriteCloudVariedMultiColor(e,t,r){if(!r)return;let{sprites:n}=e;for(let o=0;o<n.length;o++){let i=n[o],s=r.getMulticolorSprite(i.spriteIndex);if(!s)continue;let a=s.data;for(let d=0;d<s.sizeY;d++)for(let l=0;l<s.sizeX;l++){let c=i.posX+l,u=i.posY+d;if(!this.isInBounds(c,u))continue;let p=d*s.sizeX+l,m=a.getCharCode(p),g=a.getFgColorCode(p),y=a.getBgColorCode(p);this.setCell(c,u,m,y,g,t)}}}rasterizeFillSprite(e,t,r){if(!r)return;let{spriteIndex:n,bgColorCode:o,fgColorCode:i}=e,s=r.getUnicolorSprite(n);if(!s)return;let a=s.data;for(let d=0;d<this.currentHeight;d++)for(let l=0;l<this.currentWidth;l++){let c=l%s.sizeX,p=d%s.sizeY*s.sizeX+c,m=a.get(p),g=d*this.currentWidth+l;t.set(g,m,i,o)}}rasterizeFillSpriteMultiColor(e,t,r){if(!r)return;let{spriteIndex:n}=e,o=r.getMulticolorSprite(n);if(!o)return;let i=o.data;for(let s=0;s<this.currentHeight;s++)for(let a=0;a<this.currentWidth;a++){let d=a%o.sizeX,c=s%o.sizeY*o.sizeX+d,u=i.getCharCode(c),p=i.getFgColorCode(c),m=i.getBgColorCode(c),g=s*this.currentWidth+a;t.set(g,u,p,m)}}setCell(e,t,r,n,o,i){if(!this.isInBounds(e,t))return;let s=t*this.currentWidth+e;i.set(s,r,o,n)}isInBounds(e,t){return e>=0&&e<this.currentWidth&&t>=0&&t<this.currentHeight}};C(kt,"LayerRasterizer");var ae=kt;var _=class _{constructor(e){this.engine=e;h(this,"colorCache",new Array(256));h(this,"cellsBuffer",[]);h(this,"opacityBuffer",new Uint8Array(0));h(this,"visibleLayersBuffer",[]);h(this,"visibleLayerIdsBuffer",[]);h(this,"passCellsBuffers",[]);h(this,"passOpacityBuffers",[]);this.rebuildColorCache()}static getChar(e){let t=_.charCache.get(e);return t===void 0&&(t=String.fromCharCode(e),_.charCache.set(e,t)),t}getLastVisibleLayerIds(){return this.visibleLayerIdsBuffer}rebuildColorCache(){for(let e=0;e<256;e++){let t=this.engine.getColor(e);t?this.colorCache[e]={r:t.r,g:t.g,b:t.b,a:t.a}:this.colorCache[e]={r:0,g:0,b:0,a:0}}}getColorRGB(e){return this.colorCache[e]??this.colorCache[255]}getColorEmission(e){let t=this.engine.getColor(e);return t?t.e:0}isLayerVisible(e,t){let r=e.x,n=e.x+e.width,o=e.y,i=e.y+e.height,s=t.x,a=t.x+256,d=t.y,l=t.y+256;return!(n<=s||r>=a||i<=d||o>=l)}rasterize(e,t,r){let n=this.normalizePasses(r);return this.rasterizeMultiPass(e,t,n)}rasterizeSinglePass(e,t){let r=e.width*e.height,n=this.cellsBuffer;n.length=r;for(let d=0;d<r;d++)n[d]?(n[d].char=" ",n[d].fgColorIndex=255,n[d].bgColorIndex=255,n[d].fgEmission=0,n[d].bgEmission=0):n[d]={char:" ",fgColorIndex:255,bgColorIndex:255,fgEmission:0,bgEmission:0};this.opacityBuffer.length<r?this.opacityBuffer=new Uint8Array(r):this.opacityBuffer.fill(0,0,r);let o=this.opacityBuffer,i=this.visibleLayersBuffer;i.length=0;for(let d=0;d<t.length;d++){let l=t[d];l.isEnabled()&&this.isLayerVisible(e,l.getOrigin())&&i.push(l)}i.sort((d,l)=>l.getZOrder()-d.getZOrder());let s=this.visibleLayerIdsBuffer;s.length=i.length;for(let d=0;d<i.length;d++)s[d]=i[d].getId();for(let d=0;d<e.height;d++)for(let l=0;l<e.width;l++){let c=d*e.width+l;if(o[c])continue;let u=e.x+l,p=e.y+d;for(let m=0;m<i.length;m++){let g=i[m],y=u-g.getOrigin().x,S=p-g.getOrigin().y,x=g.getWidth(),I=g.getHeight();if(y<0||y>=x||S<0||S>=I)continue;let v=S*x+y,w=g.getData(),A=w.getCharCode(v),E=w.getFgColorCode(v),U=w.getBgColorCode(v),M=n[c];if(A!==0&&M.char===" "&&(M.char=_.getChar(A)),E!==255&&M.fgColorIndex===255&&(M.fgColorIndex=E,M.fgEmission=this.getColorEmission(E)),U!==255){M.bgColorIndex===255&&(M.bgColorIndex=U,M.bgEmission=this.getColorEmission(U)),o[c]=1;break}}}let a=new Array(r);for(let d=0;d<r;d++)a[d]={char:n[d].char,fgColorIndex:n[d].fgColorIndex,bgColorIndex:n[d].bgColorIndex,fgEmission:n[d].fgEmission,bgEmission:n[d].bgEmission};return{id:e.id,width:e.width,height:e.height,cells:a,palette:this.colorCache}}rasterizeMultiPass(e,t,r){let n=e.width*e.height;this.ensurePassBuffers(r.length,n),this.visibleLayerIdsBuffer.length=0;let o=this.visibleLayersBuffer;o.length=0;for(let l=0;l<t.length;l++){let c=t[l];c.isEnabled()&&this.isLayerVisible(e,c.getOrigin())&&o.push(c)}o.sort((l,c)=>c.getZOrder()-l.getZOrder());for(let l=0;l<r.length;l++){let c=r[l],u=this.passCellsBuffers[l],p=this.preparePassBuffers(u,this.passOpacityBuffers[l],n);this.passOpacityBuffers[l]=p;let m=[];for(let y=0;y<o.length;y++){let S=o[y],x=S.getZOrder();x<c.zMin||x>c.zMax||m.push(S)}let g=this.visibleLayerIdsBuffer.length;for(let y=0;y<m.length;y++)this.visibleLayerIdsBuffer[g+y]=m[y].getId();this.composePass(e,m,u,p)}let i=this.cellsBuffer,s=this.preparePassBuffers(i,this.opacityBuffer,n);this.opacityBuffer=s;let a=new Array(n),d=[];for(let l=0;l<r.length;l++){let c=this.passCellsBuffers[l],u=new Array(n);for(let p=0;p<n;p++){let m=c[p];u[p]={char:m.char,fgColorIndex:m.fgColorIndex,bgColorIndex:m.bgColorIndex,fgEmission:m.fgEmission,bgEmission:m.bgEmission}}d.push({id:r[l].id,zMin:r[l].zMin,zMax:r[l].zMax,cells:u})}for(let l=0;l<n;l++){let c=i[l];for(let u=r.length-1;u>=0;u--){let p=this.passCellsBuffers[u][l];if(c.char===" "&&p.char!==" "&&(c.char=p.char),c.fgColorIndex===255&&p.fgColorIndex!==255&&(c.fgColorIndex=p.fgColorIndex,c.fgEmission=p.fgEmission),p.bgColorIndex!==255){c.bgColorIndex===255&&(c.bgColorIndex=p.bgColorIndex,c.bgEmission=p.bgEmission);break}}a[l]={char:c.char,fgColorIndex:c.fgColorIndex,bgColorIndex:c.bgColorIndex,fgEmission:c.fgEmission,bgEmission:c.bgEmission}}return{id:e.id,width:e.width,height:e.height,cells:a,palette:this.colorCache,passes:d}}composePass(e,t,r,n){let o=e.width,i=e.height;for(let s=0;s<i;s++)for(let a=0;a<o;a++){let d=s*o+a;if(n[d])continue;let l=e.x+a,c=e.y+s;for(let u=0;u<t.length;u++){let p=t[u],m=l-p.getOrigin().x,g=c-p.getOrigin().y,y=p.getWidth(),S=p.getHeight();if(m<0||m>=y||g<0||g>=S)continue;let x=g*y+m,I=p.getData(),v=I.getCharCode(x),w=I.getFgColorCode(x),A=I.getBgColorCode(x),E=r[d];if(v!==0&&E.char===" "&&(E.char=_.getChar(v)),w!==255&&E.fgColorIndex===255&&(E.fgColorIndex=w,E.fgEmission=this.getColorEmission(w)),A!==255){E.bgColorIndex===255&&(E.bgColorIndex=A,E.bgEmission=this.getColorEmission(A)),n[d]=1;break}}}}preparePassBuffers(e,t,r){e.length=r;for(let n=0;n<r;n++)e[n]?(e[n].char=" ",e[n].fgColorIndex=255,e[n].bgColorIndex=255,e[n].fgEmission=0,e[n].bgEmission=0):e[n]={char:" ",fgColorIndex:255,bgColorIndex:255,fgEmission:0,bgEmission:0};return t.length<r?t=new Uint8Array(r):t.fill(0,0,r),t}ensurePassBuffers(e,t){for(;this.passCellsBuffers.length<e;)this.passCellsBuffers.push([]);for(;this.passOpacityBuffers.length<e;)this.passOpacityBuffers.push(new Uint8Array(t));this.passCellsBuffers.length>e&&(this.passCellsBuffers.length=e),this.passOpacityBuffers.length>e&&(this.passOpacityBuffers.length=e);for(let r=0;r<e;r++)this.passOpacityBuffers[r].length<t?this.passOpacityBuffers[r]=new Uint8Array(t):this.passOpacityBuffers[r].fill(0,0,t)}normalizePasses(e){let t={id:0,zMin:0,zMax:255,enabled:!0};if(!e||e.length===0)return[t];let r=e.filter(n=>n.enabled!==!1);return r.length===0?[t]:r.slice(0,4)}rasterizeWithSortedLayers(e,t){let r=e.width*e.height,n=this.cellsBuffer;n.length=r;for(let a=0;a<r;a++)n[a]?(n[a].char=" ",n[a].fgColorIndex=255,n[a].bgColorIndex=255,n[a].fgEmission=0,n[a].bgEmission=0):n[a]={char:" ",fgColorIndex:255,bgColorIndex:255,fgEmission:0,bgEmission:0};this.opacityBuffer.length<r?this.opacityBuffer=new Uint8Array(r):this.opacityBuffer.fill(0,0,r);let o=this.opacityBuffer,i=this.visibleLayersBuffer;i.length=0;for(let a=0;a<t.length;a++){let d=t[a];this.isLayerVisible(e,d.getOrigin())&&i.push(d)}for(let a=0;a<e.height;a++)for(let d=0;d<e.width;d++){let l=a*e.width+d;if(o[l])continue;let c=e.x+d,u=e.y+a;for(let p=0;p<i.length;p++){let m=i[p],g=c-m.getOrigin().x,y=u-m.getOrigin().y,S=m.getWidth(),x=m.getHeight();if(g<0||g>=S||y<0||y>=x)continue;let I=y*S+g,v=m.getData(),w=v.getCharCode(I),A=v.getFgColorCode(I),E=v.getBgColorCode(I),U=n[l];if(w!==0&&U.char===" "&&(U.char=_.getChar(w)),A!==255&&U.fgColorIndex===255&&(U.fgColorIndex=A,U.fgEmission=this.getColorEmission(A)),E!==255){U.bgColorIndex===255&&(U.bgColorIndex=E,U.bgEmission=this.getColorEmission(E)),o[l]=1;break}}}let s=new Array(r);for(let a=0;a<r;a++)s[a]={char:n[a].char,fgColorIndex:n[a].fgColorIndex,bgColorIndex:n[a].bgColorIndex,fgEmission:n[a].fgEmission,bgEmission:n[a].bgEmission};return{id:e.id,width:e.width,height:e.height,cells:s,palette:this.colorCache}}calculateIntersection(e,t){let r=e.x,n=e.x+e.width,o=e.y,i=e.y+e.height,s=t.x,a=t.x+256,d=t.y,l=t.y+256,c=Math.max(r,s),u=Math.min(n,a),p=Math.max(o,d),m=Math.min(i,l);return{visible:c<u&&p<m,originStart:{x:c-e.x,y:p-e.y},originEnd:{x:u-e.x,y:m-e.y},layerStart:{x:c-t.x,y:p-t.y},layerEnd:{x:u-t.x,y:m-t.y}}}};C(_,"DisplayRasterizer"),h(_,"charCache",(()=>{let e=new Map;for(let t=0;t<256;t++)e.set(t,String.fromCharCode(t));return e})());var de=_;T();var ln=[[0,0],[9786,1],[9787,2],[9829,3],[9830,4],[9827,5],[9824,6],[8226,7],[9688,8],[9675,9],[9689,10],[9794,11],[9792,12],[9834,13],[9835,14],[9788,15],[9658,16],[9668,17],[8597,18],[8252,19],[182,20],[167,21],[9644,22],[8616,23],[8593,24],[8595,25],[8594,26],[8592,27],[8735,28],[8596,29],[9650,30],[9660,31],[8962,127],[199,128],[252,129],[233,130],[226,131],[228,132],[224,133],[229,134],[231,135],[234,136],[235,137],[232,138],[239,139],[238,140],[236,141],[196,142],[197,143],[201,144],[230,145],[198,146],[244,147],[246,148],[242,149],[251,150],[249,151],[255,152],[214,153],[220,154],[162,155],[163,156],[165,157],[8359,158],[402,159],[225,160],[237,161],[243,162],[250,163],[241,164],[209,165],[170,166],[186,167],[191,168],[8976,169],[172,170],[189,171],[188,172],[161,173],[171,174],[187,175],[9617,176],[9618,177],[9619,178],[9474,179],[9508,180],[9569,181],[9570,182],[9558,183],[9557,184],[9571,185],[9553,186],[9559,187],[9565,188],[9564,189],[9563,190],[9488,191],[9492,192],[9524,193],[9516,194],[9500,195],[9472,196],[9532,197],[9566,198],[9567,199],[9562,200],[9556,201],[9577,202],[9574,203],[9568,204],[9552,205],[9580,206],[9575,207],[9576,208],[9572,209],[9573,210],[9561,211],[9560,212],[9554,213],[9555,214],[9579,215],[9578,216],[9496,217],[9484,218],[9608,219],[9604,220],[9612,221],[9616,222],[9600,223],[945,224],[223,225],[915,226],[960,227],[931,228],[963,229],[181,230],[964,231],[934,232],[920,233],[937,234],[948,235],[8734,236],[966,237],[949,238],[8745,239],[8801,240],[177,241],[8805,242],[8804,243],[8992,244],[8993,245],[247,246],[8776,247],[176,248],[8729,249],[183,250],[8730,251],[8319,252],[178,253],[9632,254],[160,255]],En=new Map(ln),Ci=new Map(ln.map(([b,e])=>[e,b]));function X(b){if(b<128)return b;let e=En.get(b);return e!==void 0?e:b&255}C(X,"unicodeToCp437");var k=class k{static toCharCode(e){if(typeof e=="number")return e;let t=e.charCodeAt(0);return X(t)}static dedent(e){let t=e.split(`
|
|
1
|
+
"use strict";var he=Object.defineProperty;var yn=Object.getOwnPropertyDescriptor;var fn=Object.getOwnPropertyNames;var Sn=Object.prototype.hasOwnProperty;var In=(b,e,t)=>e in b?he(b,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):b[e]=t;var C=(b,e)=>he(b,"name",{value:e,configurable:!0});var L=(b,e)=>()=>(b&&(e=b(b=0)),e);var G=(b,e)=>{for(var t in e)he(b,t,{get:e[t],enumerable:!0})},xn=(b,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of fn(e))!Sn.call(b,n)&&n!==t&&he(b,n,{get:()=>e[n],enumerable:!(r=yn(e,n))||r.enumerable});return b};var $=b=>xn(he({},"__esModule",{value:!0}),b);var h=(b,e,t)=>(In(b,typeof e!="symbol"?e+"":e,t),t);var Ze,rr=L(()=>{"use strict";Ze=(o=>(o[o.Rectangle=1]="Rectangle",o[o.Circle=2]="Circle",o[o.Line=3]="Line",o[o.Ellipse=4]="Ellipse",o[o.Triangle=5]="Triangle",o))(Ze||{})});var Ie,nr,or,ir,sr,ar,dr,lr,cr,ur,pr,mr,hr,br,gr,Cr,yr,fr,Sr,Ir,xr,Or,vr,wr,Ur,Mr,Er,Ar,Pr,kr,Rr,Br,zr,We,je,Tr,Je,qe,Ke,Qe,et,tt,Z=L(()=>{"use strict";Ie=C(b=>b?2:1,"charCodeByteSize"),nr=6,or=6,ir=6,sr=7,ar=5,dr=3,lr=1,cr=6,ur=4,pr=5,mr=2,hr=8,br=7,gr=7,Cr=8,yr=10,fr=6,Sr=3,Ir=9,xr=15,Or=51,vr=5,wr=6,Ur=4,Mr=3,Er=3,Ar=4,Pr=5,kr=4,Rr=2,Br=5,zr=5,We=5,je=5,Tr=3,Je=8,qe=6,Ke=3,Qe=8,et=3,tt=4});var V,f,T=L(()=>{"use strict";V=class V{constructor(e){h(this,"data");h(this,"view");this.data=new Uint8Array(e),this.view=new DataView(this.data.buffer)}static from(e){let t=new V(0);return t.data=e,t.view=new DataView(e.buffer,e.byteOffset,e.byteLength),t}static allocUnsafe(e){return new V(e)}get length(){return this.data.length}toUint8Array(){return this.data}readUInt8(e){return this.view.getUint8(e)}readInt8(e){return this.view.getInt8(e)}readUInt16BE(e){return this.view.getUint16(e,!1)}readInt16BE(e){return this.view.getInt16(e,!1)}readUInt16LE(e){return this.view.getUint16(e,!0)}readInt16LE(e){return this.view.getInt16(e,!0)}readUInt32BE(e){return this.view.getUint32(e,!1)}readInt32BE(e){return this.view.getInt32(e,!1)}readUInt32LE(e){return this.view.getUint32(e,!0)}readInt32LE(e){return this.view.getInt32(e,!0)}readBigUInt64BE(e){return this.view.getBigUint64(e,!1)}readBigInt64BE(e){return this.view.getBigInt64(e,!1)}readBigUInt64LE(e){return this.view.getBigUint64(e,!0)}readBigInt64LE(e){return this.view.getBigInt64(e,!0)}writeUInt8(e,t){this.view.setUint8(t,e)}writeInt8(e,t){this.view.setInt8(t,e)}writeUInt16BE(e,t){this.view.setUint16(t,e,!1)}writeInt16BE(e,t){this.view.setInt16(t,e,!1)}writeUInt16LE(e,t){this.view.setUint16(t,e,!0)}writeInt16LE(e,t){this.view.setInt16(t,e,!0)}writeUInt32BE(e,t){this.view.setUint32(t,e,!1)}writeInt32BE(e,t){this.view.setInt32(t,e,!1)}writeUInt32LE(e,t){this.view.setUint32(t,e,!0)}writeInt32LE(e,t){this.view.setInt32(t,e,!0)}writeBigUInt64BE(e,t){this.view.setBigUint64(t,e,!1)}writeBigInt64BE(e,t){this.view.setBigInt64(t,e,!1)}writeBigUInt64LE(e,t){this.view.setBigUint64(t,e,!0)}writeBigInt64LE(e,t){this.view.setBigInt64(t,e,!0)}readFloatBE(e){return this.view.getFloat32(e,!1)}readFloatLE(e){return this.view.getFloat32(e,!0)}writeFloatBE(e,t){this.view.setFloat32(t,e,!1)}writeFloatLE(e,t){this.view.setFloat32(t,e,!0)}copy(e,t=0,r=0,n=this.length){let o=this.data.subarray(r,n);return e.data.set(o,t),o.length}slice(e,t){let r=this.data.slice(e,t);return V.from(r)}subarray(e,t){let r=this.data.subarray(e,t);return V.from(r)}toBuffer(){return typeof Buffer<"u"&&Buffer.from?Buffer.from(this.data):this.data}static fromNodeBuffer(e){return e instanceof Uint8Array?V.from(e):V.from(new Uint8Array(e))}};C(V,"BufferCompat");f=V});var Hr={};G(Hr,{PlaySoundFlags:()=>Nr,SoundEffectsFlags:()=>Yr});var Nr,Yr,Xr=L(()=>{"use strict";Nr=(a=>(a[a.Loop=1]="Loop",a[a.HasVolume=2]="HasVolume",a[a.HasPitch=4]="HasPitch",a[a.HasFadeIn=8]="HasFadeIn",a[a.HasPosition=16]="HasPosition",a[a.HasLowpass=32]="HasLowpass",a[a.HasHighpass=64]="HasHighpass",a[a.HasReverb=128]="HasReverb",a))(Nr||{}),Yr=(r=>(r[r.HasLowpass=1]="HasLowpass",r[r.HasHighpass=2]="HasHighpass",r[r.HasReverb=4]="HasReverb",r))(Yr||{})});var Zr={};G(Zr,{AudioOrderType:()=>Gr,AudioTargetType:()=>$r,getAudioOrderTypeName:()=>vn,isValidAudioOrderType:()=>On});function On(b){return b>=1&&b<=9}function vn(b){switch(b){case 1:return"PlaySound";case 2:return"PlayGlobalSound";case 3:return"StopSound";case 4:return"FadeOutSound";case 5:return"PauseSound";case 6:return"ResumeSound";case 7:return"SetListenerPosition";case 8:return"ConfigureSpatial";case 9:return"SetSoundEffects";default:return`UnknownAudio(0x${b.toString(16)})`}}var Gr,$r,Wr=L(()=>{"use strict";Gr=(d=>(d[d.PlaySound=1]="PlaySound",d[d.PlayGlobalSound=2]="PlayGlobalSound",d[d.StopSound=3]="StopSound",d[d.FadeOutSound=4]="FadeOutSound",d[d.PauseSound=5]="PauseSound",d[d.ResumeSound=6]="ResumeSound",d[d.SetListenerPosition=7]="SetListenerPosition",d[d.ConfigureSpatial=8]="ConfigureSpatial",d[d.SetSoundEffects=9]="SetSoundEffects",d))(Gr||{}),$r=(r=>(r[r.InstanceId=0]="InstanceId",r[r.SoundId=1]="SoundId",r[r.All=2]="All",r))($r||{});C(On,"isValidAudioOrderType");C(vn,"getAudioOrderTypeName")});var qr={};G(qr,{GamepadVibrateFlags:()=>Jr,MobileVibrateFlags:()=>jr});var jr,Jr,Kr=L(()=>{"use strict";jr=(e=>(e[e.HasIntensity=1]="HasIntensity",e))(jr||{}),Jr=(t=>(t[t.HasStartDelay=1]="HasStartDelay",t[t.AllGamepads=2]="AllGamepads",t))(Jr||{})});var en={};G(en,{VibrationOrderType:()=>Qr});var Qr,tn=L(()=>{"use strict";Qr=(n=>(n[n.MobileVibrate=1]="MobileVibrate",n[n.MobileCancel=2]="MobileCancel",n[n.GamepadVibrate=16]="GamepadVibrate",n[n.GamepadCancel=17]="GamepadCancel",n))(Qr||{})});var bt,ee,gt=L(()=>{"use strict";Z();bt=class bt{constructor(){h(this,"charCodeSize",Ie)}decode(e,t=0,r=!1){if(t>=e.length)throw new Error("Buffer too short to decode order type");let n=e.readUInt8(t);switch(n){case 1:return this.decodeCharOrder(e,t,r);case 2:return this.decodeTextOrder(e,t);case 23:return this.decodeTextMultilineOrder(e,t);case 3:return this.decodeSubFrameOrder(e,t,r);case 4:return this.decodeSubFrameMultiColorOrder(e,t,r);case 5:return this.decodeFullFrameOrder(e,t,r);case 6:return this.decodeFullFrameMultiColorOrder(e,t,r);case 7:return this.decodeSpriteOrder(e,t);case 8:return this.decodeSpriteMultiColorOrder(e,t);case 9:return this.decodeColorMapOrder(e,t);case 10:return this.decodeShapeOrder(e,t,r);case 11:return this.decodeDotCloudOrder(e,t,r);case 12:return this.decodeDotCloudMultiColorOrder(e,t,r);case 17:return this.decodeBitmaskOrder(e,t,r);case 18:return this.decodeBitmask4Order(e,t,r);case 24:return this.decodeBitmask16Order(e,t,r);case 25:return this.decodePolylineOrder(e,t,r);case 13:return this.decodeSpriteCloudOrder(e,t);case 14:return this.decodeSpriteCloudMultiColorOrder(e,t);case 15:return this.decodeSpriteCloudVariedOrder(e,t);case 16:return this.decodeSpriteCloudVariedMultiColorOrder(e,t);case 19:return this.decodeFillOrder(e,t,r);case 20:return this.decodeFillCharOrder(e,t,r);case 21:return this.decodeFillSpriteOrder(e,t);case 22:return this.decodeFillSpriteMultiColorOrder(e,t);default:throw new Error(`Unknown order type: 0x${n.toString(16)}`)}}readCharCode(e,t,r){return r?[e.readUInt16LE(t),t+2]:[e.readUInt8(t),t+1]}decodeCharOrder(e,t,r){let o=5+this.charCodeSize(r);this.checkSize(e,t,o);let i=t,s=e.readUInt8(i++),a=e.readUInt8(i++),d=e.readUInt8(i++),[l,c]=this.readCharCode(e,i,r);i=c;let u=e.readUInt8(i++),p=e.readUInt8(i++);return{order:{type:1,posX:a,posY:d,charCode:l,bgColorCode:u,fgColorCode:p},bytesRead:o}}decodeTextOrder(e,t){this.checkSize(e,t,5);let r=t,n=e.readUInt8(r+3);this.checkSize(e,t,5+n);let o=e.subarray(r+4,r+4+n),i=new TextDecoder().decode(o.toUint8Array());return{order:{type:2,posX:e.readUInt8(r+1),posY:e.readUInt8(r+2),text:i,bgColorCode:e.readUInt8(r+4+n),fgColorCode:e.readUInt8(r+5+n)},bytesRead:6+n}}decodeTextMultilineOrder(e,t){this.checkSize(e,t,5);let r=t,n=e.readUInt8(r+3);this.checkSize(e,t,5+n);let o=e.subarray(r+4,r+4+n),i=new TextDecoder().decode(o.toUint8Array());return{order:{type:23,posX:e.readUInt8(r+1),posY:e.readUInt8(r+2),text:i,bgColorCode:e.readUInt8(r+4+n),fgColorCode:e.readUInt8(r+5+n)},bytesRead:6+n}}decodeSubFrameOrder(e,t,r){this.checkSize(e,t,7);let n=t,o=this.charCodeSize(r),i=e.readUInt8(n+3)+1,s=e.readUInt8(n+4)+1,a=i*s;this.checkSize(e,t,7+a*o);let d=[],l=n+7;for(let u=0;u<a;u++){let[p,m]=this.readCharCode(e,l,r);d.push(p),l=m}return{order:{type:3,posX:e.readUInt8(n+1),posY:e.readUInt8(n+2),sizeX:i,sizeY:s,bgColorCode:e.readUInt8(n+5),fgColorCode:e.readUInt8(n+6),frame:d},bytesRead:7+a*o}}decodeSubFrameMultiColorOrder(e,t,r){this.checkSize(e,t,5);let n=t,o=this.charCodeSize(r),i=e.readUInt8(n+3)+1,s=e.readUInt8(n+4)+1,a=i*s,d=o+2;this.checkSize(e,t,5+a*d);let l=[],c=n+5;for(let p=0;p<a;p++){let[m,g]=this.readCharCode(e,c,r);c=g,l.push({charCode:m,bgColorCode:e.readUInt8(c++),fgColorCode:e.readUInt8(c++)})}return{order:{type:4,posX:e.readUInt8(n+1),posY:e.readUInt8(n+2),sizeX:i,sizeY:s,frame:l},bytesRead:5+a*d}}decodeFullFrameOrder(e,t,r,n){this.checkSize(e,t,3);let o=t,i=this.charCodeSize(r),s=n||Math.floor((e.length-t-3)/i);this.checkSize(e,t,3+s*i);let a=[],d=o+3;for(let c=0;c<s;c++){let[u,p]=this.readCharCode(e,d,r);a.push(u),d=p}return{order:{type:5,bgColorCode:e.readUInt8(o+1),fgColorCode:e.readUInt8(o+2),frame:a},bytesRead:3+s*i}}decodeFullFrameMultiColorOrder(e,t,r,n){this.checkSize(e,t,1);let o=t,s=this.charCodeSize(r)+2,a=n||Math.floor((e.length-t-1)/s);this.checkSize(e,t,1+a*s);let d=[],l=o+1;for(let u=0;u<a;u++){let[p,m]=this.readCharCode(e,l,r);l=m,d.push({charCode:p,bgColorCode:e.readUInt8(l++),fgColorCode:e.readUInt8(l++)})}return{order:{type:6,frame:d},bytesRead:1+a*s}}decodeSpriteOrder(e,t){this.checkSize(e,t,6);let r=t;return{order:{type:7,posX:e.readUInt8(r+1),posY:e.readUInt8(r+2),spriteIndex:e.readUInt8(r+3),bgColorCode:e.readUInt8(r+4),fgColorCode:e.readUInt8(r+5)},bytesRead:6}}decodeSpriteMultiColorOrder(e,t){this.checkSize(e,t,4);let r=t;return{order:{type:8,posX:e.readUInt8(r+1),posY:e.readUInt8(r+2),spriteIndex:e.readUInt8(r+3)},bytesRead:4}}decodeColorMapOrder(e,t){this.checkSize(e,t,5);let r=t,n=e.readUInt8(r+3)+1,o=e.readUInt8(r+4)+1,i=n*o;this.checkSize(e,t,5+i*2);let s=[];for(let d=0;d<i;d++){let l=r+5+d*2;s.push({bgColorCode:e.readUInt8(l),fgColorCode:e.readUInt8(l+1)})}return{order:{type:9,posX:e.readUInt8(r+1),posY:e.readUInt8(r+2),sizeX:n,sizeY:o,colorData:s},bytesRead:5+i*2}}decodeShapeOrder(e,t,r){this.checkSize(e,t,2);let n=t,o=e.readUInt8(n+1),{shapeData:i,bytesRead:s}=this.decodeShapeData(e,n+2,o,r);return{order:{type:10,shapeType:o,shapeData:i},bytesRead:2+s}}decodeShapeData(e,t,r,n){let o=t,i=this.charCodeSize(n);switch(r){case 1:{let s=7+i;this.checkSize(e,t,s);let a=e.readUInt8(o++),d=e.readUInt8(o++),l=e.readUInt8(o++)+1,c=e.readUInt8(o++)+1,u=e.readUInt8(o++)===1,[p,m]=this.readCharCode(e,o,n);o=m;let g=e.readUInt8(o++),y=e.readUInt8(o++);return{shapeData:{posX:a,posY:d,width:l,height:c,filled:u,charCode:p,bgColorCode:g,fgColorCode:y},bytesRead:s}}case 2:{let s=6+i;this.checkSize(e,t,s);let a=e.readUInt8(o++),d=e.readUInt8(o++),l=e.readUInt8(o++)+1,c=e.readUInt8(o++)===1,[u,p]=this.readCharCode(e,o,n);o=p;let m=e.readUInt8(o++),g=e.readUInt8(o++);return{shapeData:{centerX:a,centerY:d,radius:l,filled:c,charCode:u,bgColorCode:m,fgColorCode:g},bytesRead:s}}case 3:{let s=6+i;this.checkSize(e,t,s);let a=e.readUInt8(o++),d=e.readUInt8(o++),l=e.readUInt8(o++),c=e.readUInt8(o++),[u,p]=this.readCharCode(e,o,n);o=p;let m=e.readUInt8(o++),g=e.readUInt8(o++);return{shapeData:{x1:a,y1:d,x2:l,y2:c,charCode:u,bgColorCode:m,fgColorCode:g},bytesRead:s}}case 4:{let s=7+i;this.checkSize(e,t,s);let a=e.readUInt8(o++),d=e.readUInt8(o++),l=e.readUInt8(o++)+1,c=e.readUInt8(o++)+1,u=e.readUInt8(o++)===1,[p,m]=this.readCharCode(e,o,n);o=m;let g=e.readUInt8(o++),y=e.readUInt8(o++);return{shapeData:{centerX:a,centerY:d,radiusX:l,radiusY:c,filled:u,charCode:p,bgColorCode:g,fgColorCode:y},bytesRead:s}}case 5:{let s=9+i;this.checkSize(e,t,s);let a=e.readUInt8(o++),d=e.readUInt8(o++),l=e.readUInt8(o++),c=e.readUInt8(o++),u=e.readUInt8(o++),p=e.readUInt8(o++),m=e.readUInt8(o++)===1,[g,y]=this.readCharCode(e,o,n);o=y;let S=e.readUInt8(o++),x=e.readUInt8(o++);return{shapeData:{x1:a,y1:d,x2:l,y2:c,x3:u,y3:p,filled:m,charCode:g,bgColorCode:S,fgColorCode:x},bytesRead:s}}default:throw new Error(`Unknown shape type: ${r}`)}}decodeDotCloudOrder(e,t,r){let o=1+this.charCodeSize(r)+2+2;this.checkSize(e,t,o);let i=t,s=e.readUInt8(i++),[a,d]=this.readCharCode(e,i,r);i=d;let l=e.readUInt8(i++),c=e.readUInt8(i++),u=e.readUInt16BE(i);i+=2,this.checkSize(e,t,o+u*2);let p=[];for(let g=0;g<u;g++)p.push({posX:e.readUInt8(i++),posY:e.readUInt8(i++)});return{order:{type:11,charCode:a,bgColorCode:l,fgColorCode:c,positions:p},bytesRead:o+u*2}}decodeDotCloudMultiColorOrder(e,t,r){this.checkSize(e,t,3);let n=this.charCodeSize(r),o=t,i=e.readUInt16BE(o+1),s=n+4;this.checkSize(e,t,3+i*s);let a=[],d=o+3;for(let c=0;c<i;c++){let[u,p]=this.readCharCode(e,d,r);d=p,a.push({charCode:u,bgColorCode:e.readUInt8(d++),fgColorCode:e.readUInt8(d++),posX:e.readUInt8(d++),posY:e.readUInt8(d++)})}return{order:{type:12,dots:a},bytesRead:3+i*s}}decodeBitmaskOrder(e,t,r){let o=8+this.charCodeSize(r);this.checkSize(e,t,o);let i=t,s=e.readUInt8(i++),a=e.readUInt8(i++),d=e.readUInt8(i++),l=e.readUInt8(i++)+1,c=e.readUInt8(i++)+1,[u,p]=this.readCharCode(e,i,r);i=p;let m=e.readUInt8(i++),g=e.readUInt8(i++),y=e.readUInt8(i++)===1,S=Math.ceil(l*c/8);this.checkSize(e,t,o+S);let x=new Uint8Array(S);for(let v=0;v<S;v++)x[v]=e.readUInt8(i+v);return{order:{type:17,posX:a,posY:d,sizeX:l,sizeY:c,charCode:u,bgColorCode:m,fgColorCode:g,override:y,mask:x},bytesRead:o+S}}decodeBitmask4Order(e,t,r){let i=6+3*(this.charCodeSize(r)+2);this.checkSize(e,t,i);let s=t,a=e.readUInt8(s++),d=e.readUInt8(s++),l=e.readUInt8(s++),c=e.readUInt8(s++)+1,u=e.readUInt8(s++)+1,p=e.readUInt8(s++)===1,m=Math.ceil(c*u/4);this.checkSize(e,t,i+m);let g=[];for(let x=0;x<3;x++){let[I,v]=this.readCharCode(e,s,r);s=v,g.push({charCode:I,bgColorCode:e.readUInt8(s++),fgColorCode:e.readUInt8(s++)})}let y=new Uint8Array(m);for(let x=0;x<m;x++)y[x]=e.readUInt8(s+x);return{order:{type:18,posX:d,posY:l,sizeX:c,sizeY:u,override:p,variants:g,mask:y},bytesRead:i+m}}decodeBitmask16Order(e,t,r){let i=6+15*(this.charCodeSize(r)+2);this.checkSize(e,t,i);let s=t,a=e.readUInt8(s++),d=e.readUInt8(s++),l=e.readUInt8(s++),c=e.readUInt8(s++)+1,u=e.readUInt8(s++)+1,p=e.readUInt8(s++)===1,m=Math.ceil(c*u/2);this.checkSize(e,t,i+m);let g=[];for(let x=0;x<15;x++){let[I,v]=this.readCharCode(e,s,r);s=v,g.push({charCode:I,bgColorCode:e.readUInt8(s++),fgColorCode:e.readUInt8(s++)})}let y=new Uint8Array(m);for(let x=0;x<m;x++)y[x]=e.readUInt8(s+x);return{order:{type:24,posX:d,posY:l,sizeX:c,sizeY:u,override:p,variants:g,mask:y},bytesRead:i+m}}decodePolylineOrder(e,t,r){let o=4+this.charCodeSize(r);this.checkSize(e,t,o);let i=t,s=e.readUInt8(i++),[a,d]=this.readCharCode(e,i,r);i=d;let l=e.readUInt8(i++),c=e.readUInt8(i++),u=e.readUInt8(i++);this.checkSize(e,t,o+u*2);let p=[];for(let g=0;g<u;g++)p.push({x:e.readUInt8(i++),y:e.readUInt8(i++)});return{order:{type:25,charCode:a,fgColorCode:l,bgColorCode:c,points:p},bytesRead:o+u*2}}decodeSpriteCloudOrder(e,t){this.checkSize(e,t,6);let r=t,n=e.readUInt16BE(r+4);this.checkSize(e,t,6+n*2);let o=[];for(let s=0;s<n;s++){let a=r+6+s*2;o.push({posX:e.readUInt8(a),posY:e.readUInt8(a+1)})}return{order:{type:13,spriteIndex:e.readUInt8(r+1),bgColorCode:e.readUInt8(r+2),fgColorCode:e.readUInt8(r+3),positions:o},bytesRead:6+n*2}}decodeSpriteCloudMultiColorOrder(e,t){this.checkSize(e,t,4);let r=t,n=e.readUInt16BE(r+2);this.checkSize(e,t,4+n*2);let o=[];for(let s=0;s<n;s++){let a=r+4+s*2;o.push({posX:e.readUInt8(a),posY:e.readUInt8(a+1)})}return{order:{type:14,spriteIndex:e.readUInt8(r+1),positions:o},bytesRead:4+n*2}}decodeSpriteCloudVariedOrder(e,t){this.checkSize(e,t,3);let r=t,n=e.readUInt16BE(r+1);this.checkSize(e,t,3+n*5);let o=[];for(let s=0;s<n;s++){let a=r+3+s*5;o.push({spriteIndex:e.readUInt8(a),bgColorCode:e.readUInt8(a+1),fgColorCode:e.readUInt8(a+2),posX:e.readUInt8(a+3),posY:e.readUInt8(a+4)})}return{order:{type:15,sprites:o},bytesRead:3+n*5}}decodeSpriteCloudVariedMultiColorOrder(e,t){this.checkSize(e,t,3);let r=t,n=e.readUInt16BE(r+1);this.checkSize(e,t,3+n*3);let o=[];for(let s=0;s<n;s++){let a=r+3+s*3;o.push({spriteIndex:e.readUInt8(a),posX:e.readUInt8(a+1),posY:e.readUInt8(a+2)})}return{order:{type:16,sprites:o},bytesRead:3+n*3}}decodeFillOrder(e,t,r){let o=3+this.charCodeSize(r);this.checkSize(e,t,o);let i=t,s=e.readUInt8(i++),[a,d]=this.readCharCode(e,i,r);i=d;let l=e.readUInt8(i++),c=e.readUInt8(i++);return{order:{type:19,charCode:a,bgColorCode:l,fgColorCode:c},bytesRead:o}}decodeFillCharOrder(e,t,r){this.checkSize(e,t,5);let n=this.charCodeSize(r),o=t,i=e.readUInt8(o+1)+1,s=e.readUInt8(o+2)+1,a=i*s,d=5+a*n;this.checkSize(e,t,d);let l=[],c=o+5;for(let p=0;p<a;p++){let[m,g]=this.readCharCode(e,c,r);l.push(m),c=g}return{order:{type:20,patternWidth:i,patternHeight:s,bgColorCode:e.readUInt8(o+3),fgColorCode:e.readUInt8(o+4),pattern:l},bytesRead:d}}decodeFillSpriteOrder(e,t){this.checkSize(e,t,4);let r=t;return{order:{type:21,spriteIndex:e.readUInt8(r+1),bgColorCode:e.readUInt8(r+2),fgColorCode:e.readUInt8(r+3)},bytesRead:4}}decodeFillSpriteMultiColorOrder(e,t){this.checkSize(e,t,2);let r=t;return{order:{type:22,spriteIndex:e.readUInt8(r+1)},bytesRead:2}}checkSize(e,t,r){if(t+r>e.length)throw new Error(`Buffer too short: need ${r} bytes at offset ${t}, but only ${e.length-t} bytes available`)}};C(bt,"OrderDecoder");ee=bt});var wn,rn,nn,Ct,te,yt=L(()=>{"use strict";wn=4,rn=4,nn=8,Ct=class Ct{decode(e,t=0){this.checkSize(e,t,nn);let r=t,n=e.readUInt8(r++),o=e.readUInt16BE(r);r+=2;let i=e.readUInt16BE(r);r+=2;let s=e.readUInt8(r++)+1,a=e.readUInt8(r++)+1,d=e.readUInt8(r++);if(d>rn)throw new Error(`Invalid renderPass count: ${d} (max ${rn})`);let l=d*wn;this.checkSize(e,r,l);let c=[];for(let p=0;p<d;p++){let m=e.readUInt8(r++),g=e.readUInt8(r++),y=e.readUInt8(r++),S=e.readUInt8(r++);c.push({id:m,zMin:g,zMax:y,enabled:(S&1)!==0})}return{display:{id:n,originX:o,originY:i,sizeX:s,sizeY:a,renderPasses:c.length>0?c:void 0},bytesRead:nn+l}}checkSize(e,t,r){if(t+r>e.length)throw new Error(`Buffer too short for display: need ${r} bytes at offset ${t}, but only ${e.length-t} bytes available`)}};C(Ct,"DisplayDecoder");te=Ct});var Un,Mn,ft,re,St=L(()=>{"use strict";gt();Un=32,Mn=64,ft=class ft{constructor(){h(this,"orderDecoder");this.orderDecoder=new ee}decode(e,t=0){this.checkSize(e,t,13);let n=t,o=e.readUInt16BE(n);n+=2;let i=e.readUInt8(n++),s=e.readUInt8(n++),a=e.readUInt16BE(n);n+=2;let d=e.readUInt16BE(n);n+=2;let l=e.readUInt16BE(n);n+=2;let c=e.readUInt16BE(n);n+=2;let u=e.readUInt8(n++),p=(i&Un)!==0,m=(i&Mn)!==0,g=[],y=n;for(let x=0;x<u;x++){let I=this.orderDecoder.decode(e,y,m);g.push(I.order),y+=I.bytesRead}return{layer:{id:o,updateFlags:i,zIndex:s,originX:a,originY:d,width:l,height:c,orderCount:u,orders:g,isMacroLayer:p,is16bit:m},bytesRead:y-t}}checkSize(e,t,r){if(t+r>e.length)throw new Error(`Buffer too short for layer: need ${r} bytes at offset ${t}, but only ${e.length-t} bytes available`)}};C(ft,"LayerDecoder");re=ft});var It,Ue,on=L(()=>{"use strict";It=class It{decode(e,t=0){if(t>=e.length)throw new Error("Buffer too short to decode audio order type");let r=e.readUInt8(t);switch(r){case 1:return this.decodePlaySoundOrder(e,t);case 2:return this.decodePlayGlobalSoundOrder(e,t);case 3:return this.decodeStopSoundOrder(e,t);case 4:return this.decodeFadeOutSoundOrder(e,t);case 5:return this.decodePauseSoundOrder(e,t);case 6:return this.decodeResumeSoundOrder(e,t);case 7:return this.decodeSetListenerPositionOrder(e,t);case 8:return this.decodeConfigureSpatialOrder(e,t);case 9:return this.decodeSetSoundEffectsOrder(e,t);default:throw new Error(`Unknown audio order type: 0x${r.toString(16)}`)}}decodePlaySoundOrder(e,t){this.checkSize(e,t,5);let r=t,n=e.readUInt8(r++),o=e.readUInt8(r++),i=e.readUInt16BE(r);r+=2;let s=e.readUInt8(r++),a={type:n,soundId:o,instanceId:i,flags:s};return s&2&&(this.checkSize(e,r,1),a.volume=e.readUInt8(r++)),s&4&&(this.checkSize(e,r,1),a.pitch=e.readUInt8(r++)),s&8&&(this.checkSize(e,r,1),a.fadeIn=e.readUInt8(r++)),s&16&&(this.checkSize(e,r,4),a.posX=e.readUInt16BE(r),r+=2,a.posY=e.readUInt16BE(r),r+=2),s&32&&(this.checkSize(e,r,1),a.lowpass=e.readUInt8(r++)),s&64&&(this.checkSize(e,r,1),a.highpass=e.readUInt8(r++)),s&128&&(this.checkSize(e,r,1),a.reverb=e.readUInt8(r++)),{order:a,bytesRead:r-t}}decodePlayGlobalSoundOrder(e,t){this.checkSize(e,t,5);let r=t,n=e.readUInt8(r++),o=e.readUInt8(r++),i=e.readUInt16BE(r);r+=2;let s=e.readUInt8(r++),a={type:n,soundId:o,instanceId:i,flags:s};return s&2&&(this.checkSize(e,r,1),a.volume=e.readUInt8(r++)),s&4&&(this.checkSize(e,r,1),a.pitch=e.readUInt8(r++)),s&8&&(this.checkSize(e,r,1),a.fadeIn=e.readUInt8(r++)),s&32&&(this.checkSize(e,r,1),a.lowpass=e.readUInt8(r++)),s&64&&(this.checkSize(e,r,1),a.highpass=e.readUInt8(r++)),s&128&&(this.checkSize(e,r,1),a.reverb=e.readUInt8(r++)),{order:a,bytesRead:r-t}}decodeStopSoundOrder(e,t){this.checkSize(e,t,2);let r=t,n=e.readUInt8(r++),o=e.readUInt8(r++),i={type:n,targetType:o};return o===0?(this.checkSize(e,r,2),i.target=e.readUInt16BE(r),r+=2):o===1&&(this.checkSize(e,r,1),i.target=e.readUInt8(r++)),{order:i,bytesRead:r-t}}decodeFadeOutSoundOrder(e,t){this.checkSize(e,t,3);let r=t,n=e.readUInt8(r++),o=e.readUInt8(r++),i=e.readUInt8(r++),s={type:n,targetType:o,duration:i};return o===0?(this.checkSize(e,r,2),s.target=e.readUInt16BE(r),r+=2):o===1&&(this.checkSize(e,r,1),s.target=e.readUInt8(r++)),{order:s,bytesRead:r-t}}decodePauseSoundOrder(e,t){this.checkSize(e,t,2);let r=t,n=e.readUInt8(r++),o=e.readUInt8(r++),i={type:n,targetType:o};return o===0?(this.checkSize(e,r,2),i.target=e.readUInt16BE(r),r+=2):o===1&&(this.checkSize(e,r,1),i.target=e.readUInt8(r++)),{order:i,bytesRead:r-t}}decodeResumeSoundOrder(e,t){this.checkSize(e,t,2);let r=t,n=e.readUInt8(r++),o=e.readUInt8(r++),i={type:n,targetType:o};return o===0?(this.checkSize(e,r,2),i.target=e.readUInt16BE(r),r+=2):o===1&&(this.checkSize(e,r,1),i.target=e.readUInt8(r++)),{order:i,bytesRead:r-t}}decodeSetListenerPositionOrder(e,t){this.checkSize(e,t,5);let r=t,n=e.readUInt8(r++),o=e.readUInt16BE(r);r+=2;let i=e.readUInt16BE(r);return r+=2,{order:{type:n,x:o,y:i},bytesRead:5}}decodeConfigureSpatialOrder(e,t){this.checkSize(e,t,5);let r=t;return{order:{type:e.readUInt8(r),maxDistance:e.readUInt8(r+1),referenceDistance:e.readUInt8(r+2),rolloffFactor:e.readUInt8(r+3),panSpread:e.readUInt8(r+4)},bytesRead:5}}decodeSetSoundEffectsOrder(e,t){this.checkSize(e,t,4);let r=t,n=e.readUInt8(r++),o=e.readUInt16BE(r);r+=2;let i=e.readUInt8(r++),s={type:n,instanceId:o,flags:i};return i&1&&(this.checkSize(e,r,1),s.lowpass=e.readUInt8(r++)),i&2&&(this.checkSize(e,r,1),s.highpass=e.readUInt8(r++)),i&4&&(this.checkSize(e,r,1),s.reverb=e.readUInt8(r++)),{order:s,bytesRead:r-t}}checkSize(e,t,r){if(t+r>e.length)throw new Error(`Buffer too short for audio order: need ${r} bytes at offset ${t}, but only ${e.length-t} bytes available`)}};C(It,"AudioOrderDecoder");Ue=It});var xt,Me,sn=L(()=>{"use strict";xt=class xt{decode(e,t=0){if(t>=e.length)throw new Error("Buffer too short to decode vibration order type");let r=e.readUInt8(t);switch(r){case 1:return this.decodeMobileVibrateOrder(e,t);case 2:return this.decodeMobileCancelOrder(e,t);case 16:return this.decodeGamepadVibrateOrder(e,t);case 17:return this.decodeGamepadCancelOrder(e,t);default:throw new Error(`Unknown vibration order type: 0x${r.toString(16)}`)}}decodeMobileVibrateOrder(e,t){let r=t,n=e.readUInt8(r++),o=e.readUInt8(r++),i=e.readUInt8(r++),s=[];for(let d=0;d<i;d++)s.push(e.readUInt16BE(r)),r+=2;let a={type:n,flags:o,pattern:s};return o&1&&(a.intensity=e.readUInt8(r++)/255),{order:a,bytesRead:r-t}}decodeMobileCancelOrder(e,t){return{order:{type:2},bytesRead:1}}decodeGamepadVibrateOrder(e,t){let r=t,n=e.readUInt8(r++),o=e.readUInt8(r++),i=e.readUInt8(r++),s=e.readUInt16BE(r);r+=2;let a=e.readUInt8(r++),d=e.readUInt8(r++),l={type:n,flags:o,gamepadIndex:i,duration:s,strongMagnitude:a,weakMagnitude:d};return o&1&&(l.startDelay=e.readUInt16BE(r),r+=2),{order:l,bytesRead:r-t}}decodeGamepadCancelOrder(e,t){let r=t,n=e.readUInt8(r++),o=e.readUInt8(r++),i=e.readUInt8(r++);return{order:{type:n,flags:o,gamepadIndex:i},bytesRead:r-t}}};C(xt,"VibrationOrderDecoder");Me=xt});var Ot,ne,vt=L(()=>{"use strict";Ot=class Ot{decode(e,t=0){let r=e.readUInt8(t);switch(r){case 1:return this.decodeCreateInstance(e,t);case 2:return this.decodeUpdateInstance(e,t);case 3:return this.decodeRemoveInstance(e,t);default:throw new Error(`Unknown macro order type: 0x${r.toString(16)}`)}}decodeAll(e,t,r){let n=[],o=0;for(let i=0;i<r;i++){let{order:s,bytesRead:a}=this.decode(e,t+o);n.push(s),o+=a}return{orders:n,bytesRead:o}}decodeCreateInstance(e,t){let r=t,n=e.readUInt8(t++),o=e.readUInt8(t++),i=e.readUInt8(t++),s=e.readUInt8(t++),a=e.readInt16BE(t);t+=2;let d=e.readInt16BE(t);t+=2;let l=e.readUInt8(t++),c=e.readUInt16BE(t);t+=2;let u=e.toUint8Array().subarray(t,t+c);t+=c;let p=new TextDecoder().decode(u),m=JSON.parse(p);return{order:{type:n,instanceId:o,macroId:i,layerId:s,x:a,y:d,tabIndex:l,params:m},bytesRead:t-r}}decodeUpdateInstance(e,t){let r=t,n=e.readUInt8(t++),o=e.readUInt8(t++),i=e.readUInt16BE(t);t+=2;let s=e.toUint8Array().subarray(t,t+i);t+=i;let a=new TextDecoder().decode(s),d=JSON.parse(a);return{order:{type:n,instanceId:o,params:d},bytesRead:t-r}}decodeRemoveInstance(e,t){let r=e.readUInt8(t),n=e.readUInt8(t+1);return{order:{type:r,instanceId:n},bytesRead:2}}};C(Ot,"MacroOrderDecoder");ne=Ot});var wt,Ee,an=L(()=>{"use strict";wt=class wt{decode(e,t){let r=e[t];switch(r){case 1:return this.decodeSetConfigOrder(e,t);case 2:return this.decodeSetScanlinesOrder(e,t);case 3:return this.decodeSetAmbientEffectOrder(e,t);case 4:return this.decodeSetScalingModeOrder(e,t);case 5:return this.decodeSetGridOrder(e,t);case 6:return this.decodeSwitchPaletteOrder(e,t);case 7:return this.decodeSetCellSizeOrder(e,t);default:throw new Error(`Unknown post-process order type: ${r}`)}}decodeSetConfigOrder(e,t){let r=t,n=e[r++],o=e[r++],i=e[r++],s={type:n,displayId:o,flags:i};return i&1&&(s.scanlines={enabled:e[r++]===1,opacity:e[r++]/255,pattern:e[r++],colorR:e[r++],colorG:e[r++],colorB:e[r++]}),i&2&&(s.ambientEffect={enabled:e[r++]===1,blur:e[r++],scale:e[r++]/100,opacity:e[r++]/255}),{order:s,bytesRead:r-t}}decodeSetScanlinesOrder(e,t){let r=t;return{order:{type:e[r++],displayId:e[r++],enabled:e[r++]===1,opacity:e[r++]/255,pattern:e[r++],colorR:e[r++],colorG:e[r++],colorB:e[r++]},bytesRead:r-t}}decodeSetAmbientEffectOrder(e,t){let r=t;return{order:{type:e[r++],displayId:e[r++],enabled:e[r++]===1,blur:e[r++],scale:e[r++]/100,opacity:e[r++]/255},bytesRead:r-t}}decodeSetScalingModeOrder(e,t){let r=t;return{order:{type:e[r++],displayId:e[r++],mode:e[r++]},bytesRead:r-t}}decodeSetGridOrder(e,t){let r=t;return{order:{type:e[r++],displayId:e[r++],enabled:e[r++]===1,colorR:e[r++],colorG:e[r++],colorB:e[r++],colorA:e[r++],lineWidth:e[r++]},bytesRead:r-t}}decodeSwitchPaletteOrder(e,t){let r=t;return{order:{type:e[r++],displayId:e[r++],slotId:e[r++]},bytesRead:r-t}}decodeSetCellSizeOrder(e,t){let r=t;return{order:{type:e[r++],displayId:e[r++],cellWidth:e[r++],cellHeight:e[r++]},bytesRead:r-t}}};C(wt,"PostProcessOrderDecoder");Ee=wt});var dn={};G(dn,{UpdatePacketDecoder:()=>be});var Ut,be,Mt=L(()=>{"use strict";yt();St();on();sn();vt();an();T();Ut=class Ut{constructor(){h(this,"displayDecoder");h(this,"layerDecoder");h(this,"audioOrderDecoder");h(this,"vibrationOrderDecoder");h(this,"macroOrderDecoder");h(this,"postProcessOrderDecoder");this.displayDecoder=new te,this.layerDecoder=new re,this.audioOrderDecoder=new Ue,this.vibrationOrderDecoder=new Me,this.macroOrderDecoder=new ne,this.postProcessOrderDecoder=new Ee}decode(e,t=0){let r=f.from(e);this.checkSize(r,t,15);let o=t,i=Number(r.readBigUInt64BE(o));o+=8;let s=r.readUInt8(o);o+=1;let a=[],d=0;for(let B=0;B<s;B++){let O=this.displayDecoder.decode(r,o);a.push(O.display),o+=O.bytesRead,d+=O.bytesRead}this.checkSize(r,o,2);let l=r.readUInt16BE(o);o+=2;let c=[],u=0;for(let B=0;B<l;B++){let O=this.layerDecoder.decode(r,o);c.push({...O.layer,byteSize:O.bytesRead}),o+=O.bytesRead,u+=O.bytesRead}this.checkSize(r,o,1);let p=r.readUInt8(o);o+=1;let m=[],g=0;for(let B=0;B<p;B++){let O=this.audioOrderDecoder.decode(r,o);m.push(O.order),o+=O.bytesRead,g+=O.bytesRead}this.checkSize(r,o,1);let y=r.readUInt8(o);o+=1;let S=[],x=0;for(let B=0;B<y;B++){let O=this.vibrationOrderDecoder.decode(r,o);S.push(O.order),o+=O.bytesRead,x+=O.bytesRead}this.checkSize(r,o,1);let I=r.readUInt8(o);o+=1;let v=[],w=0;for(let B=0;B<I;B++){let O=this.macroOrderDecoder.decode(r,o);v.push(O.order),o+=O.bytesRead,w+=O.bytesRead}this.checkSize(r,o,1);let A=r.readUInt8(o);o+=1;let E=[],U=0;for(let B=0;B<A;B++){let O=this.postProcessOrderDecoder.decode(r.toUint8Array(),o);E.push(O.order),o+=O.bytesRead,U+=O.bytesRead}return{tick:i,displayCount:s,displays:a,layerCount:l,layers:c,audioOrderCount:p,audioOrders:m,vibrationOrderCount:y,vibrationOrders:S,macroOrderCount:I,macroOrders:v,postProcessOrderCount:A,postProcessOrders:E,__byteSizes:{displays:d,layers:u,audioOrders:g,vibrationOrders:x,macroOrders:w,postProcessOrders:U}}}isValid(e,t=0){let r=f.from(e);try{return this.checkSize(r,t,15),!0}catch{return!1}}decodeHeader(e,t=0){let r=f.from(e);this.checkSize(r,t,13);let n=t,o=Number(r.readBigUInt64BE(n));n+=8;let i=r.readUInt8(n);n+=1;for(let a=0;a<i;a++){let d=this.displayDecoder.decode(r,n);n+=d.bytesRead}this.checkSize(r,n,2);let s=r.readUInt16BE(n);return{tick:o,displayCount:i,layerCount:s}}checkSize(e,t,r){if(t+r>e.length)throw new Error(`Buffer too short for update packet: need ${r} bytes at offset ${t}, but only ${e.length-t} bytes available`)}};C(Ut,"UpdatePacketDecoder");be=Ut});var Vn={};G(Vn,{BufferCompat:()=>f,CellBuffer:()=>N,Core:()=>$e,DisplayDecoder:()=>te,DisplayEncoder:()=>j,DisplayRasterizer:()=>de,Layer:()=>ce,LayerDecoder:()=>re,LayerEncoder:()=>J,LayerRasterizer:()=>ae,LoadDecoder:()=>ie,LoadEncoder:()=>Y,MacroEventDecoder:()=>se,MacroEventEncoder:()=>we,MacroLoadDecoder:()=>oe,MacroLoadEncoder:()=>Q,MacroOrderDecoder:()=>ne,MacroOrderEncoder:()=>q,OrderBuilder:()=>Ae,OrderDecoder:()=>ee,OrderEncoder:()=>W,ShapeType:()=>Ze,SpriteRegistry:()=>le,UpdatePacketDecoder:()=>be,UpdatePacketEncoder:()=>K,Vector2:()=>Cn.Vector2});module.exports=$(Vn);Z();Z();T();var nt=class nt{constructor(){h(this,"charCodeSize",Ie)}encode(e,t=!1){switch(e.type){case 1:return this.encodeCharOrder(e,t);case 2:return this.encodeTextOrder(e);case 23:return this.encodeTextMultilineOrder(e);case 3:return this.encodeSubFrameOrder(e,t);case 4:return this.encodeSubFrameMultiColorOrder(e,t);case 5:return this.encodeFullFrameOrder(e,t);case 6:return this.encodeFullFrameMultiColorOrder(e,t);case 7:return this.encodeSpriteOrder(e);case 8:return this.encodeSpriteMultiColorOrder(e);case 9:return this.encodeColorMapOrder(e);case 10:return this.encodeShapeOrder(e,t);case 11:return this.encodeDotCloudOrder(e,t);case 12:return this.encodeDotCloudMultiColorOrder(e,t);case 17:return this.encodeBitmaskOrder(e,t);case 18:return this.encodeBitmask4Order(e,t);case 24:return this.encodeBitmask16Order(e,t);case 25:return this.encodePolylineOrder(e,t);case 13:return this.encodeSpriteCloudOrder(e);case 14:return this.encodeSpriteCloudMultiColorOrder(e);case 15:return this.encodeSpriteCloudVariedOrder(e);case 16:return this.encodeSpriteCloudVariedMultiColorOrder(e);case 19:return this.encodeFillOrder(e,t);case 20:return this.encodeFillCharOrder(e,t);case 21:return this.encodeFillSpriteOrder(e);case 22:return this.encodeFillSpriteMultiColorOrder(e);default:throw new Error(`Unknown order type: ${e.type}`)}}writeCharCode(e,t,r,n){return n?(e.writeUInt16LE(t,r),r+2):(e.writeUInt8(t,r),r+1)}encodeCharOrder(e,t){let r=f.allocUnsafe(nr+(t?1:0)),n=0;return r.writeUInt8(e.type,n++),r.writeUInt8(e.posX,n++),r.writeUInt8(e.posY,n++),n=this.writeCharCode(r,e.charCode,n,t),r.writeUInt8(e.bgColorCode,n++),r.writeUInt8(e.fgColorCode,n++),r.toUint8Array()}encodeTextOrder(e){let t=new TextEncoder().encode(e.text),r=f.allocUnsafe(or+t.length),n=0;r.writeUInt8(e.type,n++),r.writeUInt8(e.posX,n++),r.writeUInt8(e.posY,n++),r.writeUInt8(t.length,n++);for(let o=0;o<t.length;o++)r.writeUInt8(t[o],n++);return r.writeUInt8(e.bgColorCode,n++),r.writeUInt8(e.fgColorCode,n++),r.toUint8Array()}encodeTextMultilineOrder(e){let t=new TextEncoder().encode(e.text),r=f.allocUnsafe(ir+t.length),n=0;r.writeUInt8(e.type,n++),r.writeUInt8(e.posX,n++),r.writeUInt8(e.posY,n++),r.writeUInt8(t.length,n++);for(let o=0;o<t.length;o++)r.writeUInt8(t[o],n++);return r.writeUInt8(e.bgColorCode,n++),r.writeUInt8(e.fgColorCode,n++),r.toUint8Array()}encodeSubFrameOrder(e,t){let r=e.sizeX*e.sizeY,n=this.charCodeSize(t),o=f.allocUnsafe(sr+r*n),i=0;o.writeUInt8(e.type,i++),o.writeUInt8(e.posX,i++),o.writeUInt8(e.posY,i++),o.writeUInt8(e.sizeX-1,i++),o.writeUInt8(e.sizeY-1,i++),o.writeUInt8(e.bgColorCode,i++),o.writeUInt8(e.fgColorCode,i++);for(let s of e.frame)i=this.writeCharCode(o,s,i,t);return o.toUint8Array()}encodeSubFrameMultiColorOrder(e,t){let r=e.sizeX*e.sizeY,n=this.charCodeSize(t),o=f.allocUnsafe(ar+r*(n+2)),i=0;o.writeUInt8(e.type,i++),o.writeUInt8(e.posX,i++),o.writeUInt8(e.posY,i++),o.writeUInt8(e.sizeX-1,i++),o.writeUInt8(e.sizeY-1,i++);for(let s of e.frame)i=this.writeCharCode(o,s.charCode,i,t),o.writeUInt8(s.bgColorCode,i++),o.writeUInt8(s.fgColorCode,i++);return o.toUint8Array()}encodeFullFrameOrder(e,t){let r=e.frame.length,n=this.charCodeSize(t),o=f.allocUnsafe(dr+r*n),i=0;o.writeUInt8(e.type,i++),o.writeUInt8(e.bgColorCode,i++),o.writeUInt8(e.fgColorCode,i++);for(let s of e.frame)i=this.writeCharCode(o,s,i,t);return o.toUint8Array()}encodeFullFrameMultiColorOrder(e,t){let r=e.frame.length,n=this.charCodeSize(t),o=f.allocUnsafe(lr+r*(n+2)),i=0;o.writeUInt8(e.type,i++);for(let s of e.frame)i=this.writeCharCode(o,s.charCode,i,t),o.writeUInt8(s.bgColorCode,i++),o.writeUInt8(s.fgColorCode,i++);return o.toUint8Array()}encodeSpriteOrder(e){let t=f.allocUnsafe(cr),r=0;return t.writeUInt8(e.type,r++),t.writeUInt8(e.posX,r++),t.writeUInt8(e.posY,r++),t.writeUInt8(e.spriteIndex,r++),t.writeUInt8(e.bgColorCode,r++),t.writeUInt8(e.fgColorCode,r++),t.toUint8Array()}encodeSpriteMultiColorOrder(e){let t=f.allocUnsafe(ur),r=0;return t.writeUInt8(e.type,r++),t.writeUInt8(e.posX,r++),t.writeUInt8(e.posY,r++),t.writeUInt8(e.spriteIndex,r++),t.toUint8Array()}encodeColorMapOrder(e){let t=e.sizeX*e.sizeY,r=f.allocUnsafe(pr+t*2),n=0;r.writeUInt8(e.type,n++),r.writeUInt8(e.posX,n++),r.writeUInt8(e.posY,n++),r.writeUInt8(e.sizeX-1,n++),r.writeUInt8(e.sizeY-1,n++);for(let o of e.colorData)r.writeUInt8(o.bgColorCode,n++),r.writeUInt8(o.fgColorCode,n++);return r.toUint8Array()}encodeShapeOrder(e,t){let r=this.encodeShapeData(e.shapeType,e.shapeData,t),n=f.allocUnsafe(mr+r.length),o=0;n.writeUInt8(e.type,o++),n.writeUInt8(e.shapeType,o++);for(let i=0;i<r.length;i++)n.writeUInt8(r[i],o++);return n.toUint8Array()}encodeShapeData(e,t,r){let n=this.charCodeSize(r);switch(e){case 1:{let o=f.allocUnsafe(hr+(r?1:0)),i=0;return o.writeUInt8(t.posX,i++),o.writeUInt8(t.posY,i++),o.writeUInt8(t.width-1,i++),o.writeUInt8(t.height-1,i++),o.writeUInt8(t.filled?1:0,i++),i=this.writeCharCode(o,t.charCode,i,r),o.writeUInt8(t.bgColorCode,i++),o.writeUInt8(t.fgColorCode,i++),o.toUint8Array()}case 2:{let o=f.allocUnsafe(br+(r?1:0)),i=0;return o.writeUInt8(t.centerX,i++),o.writeUInt8(t.centerY,i++),o.writeUInt8(t.radius-1,i++),o.writeUInt8(t.filled?1:0,i++),i=this.writeCharCode(o,t.charCode,i,r),o.writeUInt8(t.bgColorCode,i++),o.writeUInt8(t.fgColorCode,i++),o.toUint8Array()}case 3:{let o=f.allocUnsafe(gr+(r?1:0)),i=0;return o.writeUInt8(t.x1,i++),o.writeUInt8(t.y1,i++),o.writeUInt8(t.x2,i++),o.writeUInt8(t.y2,i++),i=this.writeCharCode(o,t.charCode,i,r),o.writeUInt8(t.bgColorCode,i++),o.writeUInt8(t.fgColorCode,i++),o.toUint8Array()}case 4:{let o=f.allocUnsafe(Cr+(r?1:0)),i=0;return o.writeUInt8(t.centerX,i++),o.writeUInt8(t.centerY,i++),o.writeUInt8(t.radiusX-1,i++),o.writeUInt8(t.radiusY-1,i++),o.writeUInt8(t.filled?1:0,i++),i=this.writeCharCode(o,t.charCode,i,r),o.writeUInt8(t.bgColorCode,i++),o.writeUInt8(t.fgColorCode,i++),o.toUint8Array()}case 5:{let o=f.allocUnsafe(yr+(r?1:0)),i=0;return o.writeUInt8(t.x1,i++),o.writeUInt8(t.y1,i++),o.writeUInt8(t.x2,i++),o.writeUInt8(t.y2,i++),o.writeUInt8(t.x3,i++),o.writeUInt8(t.y3,i++),o.writeUInt8(t.filled?1:0,i++),i=this.writeCharCode(o,t.charCode,i,r),o.writeUInt8(t.bgColorCode,i++),o.writeUInt8(t.fgColorCode,i++),o.toUint8Array()}default:throw new Error(`Unknown shape type: ${e}`)}}encodeDotCloudOrder(e,t){let r=e.positions.length,n=this.charCodeSize(t),o=f.allocUnsafe(fr+(t?1:0)+r*2),i=0;o.writeUInt8(e.type,i++),i=this.writeCharCode(o,e.charCode,i,t),o.writeUInt8(e.bgColorCode,i++),o.writeUInt8(e.fgColorCode,i++),o.writeUInt16BE(r,i),i+=2;for(let s of e.positions)o.writeUInt8(s.posX,i++),o.writeUInt8(s.posY,i++);return o.toUint8Array()}encodeDotCloudMultiColorOrder(e,t){let r=e.dots.length,n=this.charCodeSize(t),o=f.allocUnsafe(Sr+r*(n+4)),i=0;o.writeUInt8(e.type,i++),o.writeUInt16BE(r,i),i+=2;for(let s of e.dots)i=this.writeCharCode(o,s.charCode,i,t),o.writeUInt8(s.bgColorCode,i++),o.writeUInt8(s.fgColorCode,i++),o.writeUInt8(s.posX,i++),o.writeUInt8(s.posY,i++);return o.toUint8Array()}encodeBitmaskOrder(e,t){let r=e.mask.length,n=f.allocUnsafe(Ir+(t?1:0)+r),o=0;n.writeUInt8(e.type,o++),n.writeUInt8(e.posX,o++),n.writeUInt8(e.posY,o++),n.writeUInt8(e.sizeX-1,o++),n.writeUInt8(e.sizeY-1,o++),o=this.writeCharCode(n,e.charCode,o,t),n.writeUInt8(e.bgColorCode,o++),n.writeUInt8(e.fgColorCode,o++),n.writeUInt8(e.override?1:0,o++);for(let i=0;i<r;i++)n.writeUInt8(e.mask[i],o++);return n.toUint8Array()}encodeBitmask4Order(e,t){let r=e.mask.length,n=this.charCodeSize(t),o=f.allocUnsafe(xr+3*(t?1:0)+r),i=0;o.writeUInt8(e.type,i++),o.writeUInt8(e.posX,i++),o.writeUInt8(e.posY,i++),o.writeUInt8(e.sizeX-1,i++),o.writeUInt8(e.sizeY-1,i++),o.writeUInt8(e.override?1:0,i++);for(let s of e.variants)i=this.writeCharCode(o,s.charCode,i,t),o.writeUInt8(s.bgColorCode,i++),o.writeUInt8(s.fgColorCode,i++);for(let s=0;s<r;s++)o.writeUInt8(e.mask[s],i++);return o.toUint8Array()}encodeBitmask16Order(e,t){let r=e.mask.length,n=this.charCodeSize(t),o=f.allocUnsafe(Or+15*(t?1:0)+r),i=0;o.writeUInt8(e.type,i++),o.writeUInt8(e.posX,i++),o.writeUInt8(e.posY,i++),o.writeUInt8(e.sizeX-1,i++),o.writeUInt8(e.sizeY-1,i++),o.writeUInt8(e.override?1:0,i++);for(let s of e.variants)i=this.writeCharCode(o,s.charCode,i,t),o.writeUInt8(s.bgColorCode,i++),o.writeUInt8(s.fgColorCode,i++);for(let s=0;s<r;s++)o.writeUInt8(e.mask[s],i++);return o.toUint8Array()}encodePolylineOrder(e,t){let r=e.points.length,n=f.allocUnsafe(vr+(t?1:0)+r*2),o=0;n.writeUInt8(e.type,o++),o=this.writeCharCode(n,e.charCode,o,t),n.writeUInt8(e.fgColorCode,o++),n.writeUInt8(e.bgColorCode,o++),n.writeUInt8(r,o++);for(let i of e.points)n.writeUInt8(i.x,o++),n.writeUInt8(i.y,o++);return n.toUint8Array()}encodeSpriteCloudOrder(e){let t=e.positions.length,r=f.allocUnsafe(wr+t*2),n=0;r.writeUInt8(e.type,n++),r.writeUInt8(e.spriteIndex,n++),r.writeUInt8(e.bgColorCode,n++),r.writeUInt8(e.fgColorCode,n++),r.writeUInt16BE(t,n),n+=2;for(let o of e.positions)r.writeUInt8(o.posX,n++),r.writeUInt8(o.posY,n++);return r.toUint8Array()}encodeSpriteCloudMultiColorOrder(e){let t=e.positions.length,r=f.allocUnsafe(Ur+t*2),n=0;r.writeUInt8(e.type,n++),r.writeUInt8(e.spriteIndex,n++),r.writeUInt16BE(t,n),n+=2;for(let o of e.positions)r.writeUInt8(o.posX,n++),r.writeUInt8(o.posY,n++);return r.toUint8Array()}encodeSpriteCloudVariedOrder(e){let t=e.sprites.length,r=f.allocUnsafe(Mr+t*5),n=0;r.writeUInt8(e.type,n++),r.writeUInt16BE(t,n),n+=2;for(let o of e.sprites)r.writeUInt8(o.spriteIndex,n++),r.writeUInt8(o.bgColorCode,n++),r.writeUInt8(o.fgColorCode,n++),r.writeUInt8(o.posX,n++),r.writeUInt8(o.posY,n++);return r.toUint8Array()}encodeSpriteCloudVariedMultiColorOrder(e){let t=e.sprites.length,r=f.allocUnsafe(Er+t*3),n=0;r.writeUInt8(e.type,n++),r.writeUInt16BE(t,n),n+=2;for(let o of e.sprites)r.writeUInt8(o.spriteIndex,n++),r.writeUInt8(o.posX,n++),r.writeUInt8(o.posY,n++);return r.toUint8Array()}encodeFillOrder(e,t){let r=f.allocUnsafe(Ar+(t?1:0)),n=0;return r.writeUInt8(e.type,n++),n=this.writeCharCode(r,e.charCode,n,t),r.writeUInt8(e.bgColorCode,n++),r.writeUInt8(e.fgColorCode,n++),r.toUint8Array()}encodeFillCharOrder(e,t){let r=e.patternWidth*e.patternHeight,n=this.charCodeSize(t),o=f.allocUnsafe(Pr+r*n),i=0;o.writeUInt8(e.type,i++),o.writeUInt8(e.patternWidth-1,i++),o.writeUInt8(e.patternHeight-1,i++),o.writeUInt8(e.bgColorCode,i++),o.writeUInt8(e.fgColorCode,i++);for(let s of e.pattern)i=this.writeCharCode(o,s,i,t);return o.toUint8Array()}encodeFillSpriteOrder(e){let t=f.allocUnsafe(kr),r=0;return t.writeUInt8(e.type,r++),t.writeUInt8(e.spriteIndex,r++),t.writeUInt8(e.bgColorCode,r++),t.writeUInt8(e.fgColorCode,r++),t.toUint8Array()}encodeFillSpriteMultiColorOrder(e){let t=f.allocUnsafe(Rr),r=0;return t.writeUInt8(e.type,r++),t.writeUInt8(e.spriteIndex,r++),t.toUint8Array()}};C(nt,"OrderEncoder");var W=nt;T();var Lr=4,ot=4,Fr=8,it=class it{encode(e){let t=e.renderPasses?.length??0;if(t>ot)throw new Error(`renderPasses supports up to ${ot} entries, got ${t}`);let r=Fr+t*Lr,n=f.allocUnsafe(r),o=0;if(n.writeUInt8(e.id,o++),n.writeUInt16BE(e.originX,o),o+=2,n.writeUInt16BE(e.originY,o),o+=2,n.writeUInt8(e.sizeX-1,o++),n.writeUInt8(e.sizeY-1,o++),n.writeUInt8(t,o++),t>0&&e.renderPasses)for(let i of e.renderPasses){let s=Math.max(0,Math.min(255,i.id)),a=Math.max(0,Math.min(255,i.zMin)),d=Math.max(0,Math.min(255,i.zMax)),l=i.enabled===!1?0:1;n.writeUInt8(s,o++),n.writeUInt8(a,o++),n.writeUInt8(d,o++),n.writeUInt8(l,o++)}return n.toUint8Array()}calculateSize(e){let t=Math.min(e.renderPasses?.length??0,ot);return Fr+t*Lr}};C(it,"DisplayEncoder");var j=it;T();var Dr=255,Vr=32,_r=64,st=class st{constructor(){h(this,"orderEncoder");this.orderEncoder=new W}encode(e){let t=e.is16bit;if(e.orders.length>Dr)throw new Error(`[UTSP] LayerEncoder: Layer ${e.id} has ${e.orders.length} orders, max is ${Dr}. This would cause packet corruption! Split into multiple layers.`);let r=e.orders.map(l=>this.orderEncoder.encode(l,t)),n=13,o=r.reduce((l,c)=>l+c.length,0),i=n+o,s=f.allocUnsafe(i),a=0;s.writeUInt16BE(e.id,a),a+=2;let d=e.updateFlags;e.isMacroLayer?d|=Vr:d&=~Vr,t?d|=_r:d&=~_r,s.writeUInt8(d,a++),s.writeUInt8(e.zIndex,a++),s.writeUInt16BE(e.originX,a),a+=2,s.writeUInt16BE(e.originY,a),a+=2,s.writeUInt16BE(e.width,a),a+=2,s.writeUInt16BE(e.height,a),a+=2,s.writeUInt8(e.orders.length,a++);for(let l of r)f.from(l).copy(s,a),a+=l.length;return s.toUint8Array()}calculateSize(e){let r=e.is16bit;return 13+e.orders.reduce((o,i)=>o+this.orderEncoder.encode(i,r).length,0)}};C(st,"LayerEncoder");var J=st;T();Z();var at=class at{encode(e){switch(e.type){case 1:return this.encodePlaySoundOrder(e);case 2:return this.encodePlayGlobalSoundOrder(e);case 3:return this.encodeStopSoundOrder(e);case 4:return this.encodeFadeOutSoundOrder(e);case 5:return this.encodePauseSoundOrder(e);case 6:return this.encodeResumeSoundOrder(e);case 7:return this.encodeSetListenerPositionOrder(e);case 8:return this.encodeConfigureSpatialOrder(e);case 9:return this.encodeSetSoundEffectsOrder(e);default:throw new Error(`Unknown audio order type: ${e.type}`)}}calculateSize(e){switch(e.type){case 1:return this.calculatePlaySoundSize(e);case 2:return this.calculatePlayGlobalSoundSize(e);case 3:case 5:case 6:return this.calculateTargetOrderSize(e);case 4:return this.calculateFadeOutSize(e);case 7:return We;case 8:return je;case 9:return this.calculateSetSoundEffectsSize(e);default:throw new Error(`Unknown audio order type: ${e.type}`)}}encodePlaySoundOrder(e){let t=this.calculatePlaySoundSize(e),r=f.allocUnsafe(t),n=0;return r.writeUInt8(e.type,n++),r.writeUInt8(e.soundId,n++),r.writeUInt16BE(e.instanceId,n),n+=2,r.writeUInt8(e.flags,n++),e.flags&2&&r.writeUInt8(e.volume??255,n++),e.flags&4&&r.writeUInt8(e.pitch??128,n++),e.flags&8&&r.writeUInt8(e.fadeIn??0,n++),e.flags&16&&(r.writeUInt16BE(e.posX??0,n),n+=2,r.writeUInt16BE(e.posY??0,n),n+=2),e.flags&32&&r.writeUInt8(e.lowpass??0,n++),e.flags&64&&r.writeUInt8(e.highpass??0,n++),e.flags&128&&r.writeUInt8(e.reverb??0,n++),r.toUint8Array()}encodePlayGlobalSoundOrder(e){let t=this.calculatePlayGlobalSoundSize(e),r=f.allocUnsafe(t),n=0;r.writeUInt8(e.type,n++),r.writeUInt8(e.soundId,n++),r.writeUInt16BE(e.instanceId,n),n+=2;let o=e.flags&-17;return r.writeUInt8(o,n++),o&2&&r.writeUInt8(e.volume??255,n++),o&4&&r.writeUInt8(e.pitch??128,n++),o&8&&r.writeUInt8(e.fadeIn??0,n++),o&32&&r.writeUInt8(e.lowpass??0,n++),o&64&&r.writeUInt8(e.highpass??0,n++),o&128&&r.writeUInt8(e.reverb??0,n++),r.toUint8Array()}calculatePlaySoundSize(e){let t=Br;return e.flags&2&&(t+=1),e.flags&4&&(t+=1),e.flags&8&&(t+=1),e.flags&16&&(t+=4),e.flags&32&&(t+=1),e.flags&64&&(t+=1),e.flags&128&&(t+=1),t}calculatePlayGlobalSoundSize(e){let t=zr,r=e.flags&-17;return r&2&&(t+=1),r&4&&(t+=1),r&8&&(t+=1),r&32&&(t+=1),r&64&&(t+=1),r&128&&(t+=1),t}encodeStopSoundOrder(e){return this.encodeTargetOrder(e.type,e.targetType,e.target)}encodePauseSoundOrder(e){return this.encodeTargetOrder(e.type,e.targetType,e.target)}encodeResumeSoundOrder(e){return this.encodeTargetOrder(e.type,e.targetType,e.target)}encodeFadeOutSoundOrder(e){let t=this.calculateFadeOutSize(e),r=f.allocUnsafe(t),n=0;return r.writeUInt8(e.type,n++),r.writeUInt8(e.targetType,n++),r.writeUInt8(e.duration,n++),e.targetType===0?r.writeUInt16BE(e.target??0,n):e.targetType===1&&r.writeUInt8(e.target??0,n),r.toUint8Array()}encodeTargetOrder(e,t,r){let n=2;t===0?n+=2:t===1&&(n+=1);let o=f.allocUnsafe(n),i=0;return o.writeUInt8(e,i++),o.writeUInt8(t,i++),t===0?o.writeUInt16BE(r??0,i):t===1&&o.writeUInt8(r??0,i),o.toUint8Array()}calculateTargetOrderSize(e){let t=2;return e.targetType===0?t+=2:e.targetType===1&&(t+=1),t}calculateFadeOutSize(e){let t=3;return e.targetType===0?t+=2:e.targetType===1&&(t+=1),t}encodeSetListenerPositionOrder(e){let t=f.allocUnsafe(We),r=0;return t.writeUInt8(e.type,r++),t.writeUInt16BE(e.x,r),r+=2,t.writeUInt16BE(e.y,r),t.toUint8Array()}encodeConfigureSpatialOrder(e){let t=f.allocUnsafe(je),r=0;return t.writeUInt8(e.type,r++),t.writeUInt8(e.maxDistance,r++),t.writeUInt8(e.referenceDistance,r++),t.writeUInt8(e.rolloffFactor,r++),t.writeUInt8(e.panSpread,r++),t.toUint8Array()}encodeSetSoundEffectsOrder(e){let t=this.calculateSetSoundEffectsSize(e),r=f.allocUnsafe(t),n=0;return r.writeUInt8(e.type,n++),r.writeUInt16BE(e.instanceId,n),n+=2,r.writeUInt8(e.flags,n++),e.flags&1&&r.writeUInt8(e.lowpass??0,n++),e.flags&2&&r.writeUInt8(e.highpass??0,n++),e.flags&4&&r.writeUInt8(e.reverb??0,n++),r.toUint8Array()}calculateSetSoundEffectsSize(e){let t=4;return e.flags&1&&(t+=1),e.flags&2&&(t+=1),e.flags&4&&(t+=1),t}};C(at,"AudioOrderEncoder");var xe=at;T();var dt=class dt{encode(e){switch(e.type){case 1:return this.encodeMobileVibrateOrder(e);case 2:return this.encodeMobileCancelOrder(e);case 16:return this.encodeGamepadVibrateOrder(e);case 17:return this.encodeGamepadCancelOrder(e);default:throw new Error(`Unknown vibration order type: ${e.type}`)}}calculateSize(e){switch(e.type){case 1:return this.calculateMobileVibrateSize(e);case 2:return 1;case 16:return this.calculateGamepadVibrateSize(e);case 17:return 3;default:throw new Error(`Unknown vibration order type: ${e.type}`)}}calculateMobileVibrateSize(e){let t=3+e.pattern.length*2;return e.intensity!==void 0&&(t+=1),t}encodeMobileVibrateOrder(e){let t=this.calculateMobileVibrateSize(e),r=f.allocUnsafe(t),n=0,o=0;e.intensity!==void 0&&(o|=1),r.writeUInt8(e.type,n++),r.writeUInt8(o,n++),r.writeUInt8(e.pattern.length,n++);for(let i of e.pattern){let s=Math.min(65535,Math.max(0,Math.round(i)));r.writeUInt16BE(s,n),n+=2}if(e.intensity!==void 0){let i=Math.round(Math.min(1,Math.max(0,e.intensity))*255);r.writeUInt8(i,n++)}return r.toUint8Array()}encodeMobileCancelOrder(e){let t=f.allocUnsafe(1);return t.writeUInt8(2,0),t.toUint8Array()}calculateGamepadVibrateSize(e){let t=7;return e.startDelay!==void 0&&e.startDelay>0&&(t+=2),t}encodeGamepadVibrateOrder(e){let t=this.calculateGamepadVibrateSize(e),r=f.allocUnsafe(t),n=0,o=0;e.startDelay!==void 0&&e.startDelay>0&&(o|=1),e.gamepadIndex===255&&(o|=2),r.writeUInt8(e.type,n++),r.writeUInt8(o,n++),r.writeUInt8(e.gamepadIndex,n++);let i=Math.min(65535,Math.max(0,Math.round(e.duration)));if(r.writeUInt16BE(i,n),n+=2,r.writeUInt8(e.strongMagnitude,n++),r.writeUInt8(e.weakMagnitude,n++),e.startDelay!==void 0&&e.startDelay>0){let s=Math.min(65535,Math.max(0,Math.round(e.startDelay)));r.writeUInt16BE(s,n),n+=2}return r.toUint8Array()}encodeGamepadCancelOrder(e){let t=f.allocUnsafe(3),r=0,n=0;return e.gamepadIndex===255&&(n|=2),t.writeUInt8(e.type,r++),t.writeUInt8(n,r++),t.writeUInt8(e.gamepadIndex,r++),t.toUint8Array()}};C(dt,"VibrationOrderEncoder");var Oe=dt;T();var lt=class lt{encode(e){switch(e.type){case 1:return this.encodeCreateInstance(e);case 2:return this.encodeUpdateInstance(e);case 3:return this.encodeRemoveInstance(e);default:throw new Error(`Unknown macro order type: ${e.type}`)}}calculateSize(e){switch(e.type){case 1:return this.calculateCreateInstanceSize(e);case 2:return this.calculateUpdateInstanceSize(e);case 3:return 2;default:throw new Error(`Unknown macro order type: ${e.type}`)}}encodeCreateInstance(e){let t=JSON.stringify(e.params),r=new TextEncoder().encode(t);if(r.length>65535)throw new Error(`Params JSON too large: ${r.length} bytes (max 65535)`);let n=11+r.length,o=f.allocUnsafe(n),i=0;return o.writeUInt8(e.type,i++),o.writeUInt8(e.instanceId,i++),o.writeUInt8(e.macroId,i++),o.writeUInt8(e.layerId,i++),o.writeInt16BE(e.x,i),i+=2,o.writeInt16BE(e.y,i),i+=2,o.writeUInt8(e.tabIndex,i++),o.writeUInt16BE(r.length,i),i+=2,o.toUint8Array().set(r,i),o.toUint8Array()}calculateCreateInstanceSize(e){let t=JSON.stringify(e.params);return 11+new TextEncoder().encode(t).length}encodeUpdateInstance(e){let t=JSON.stringify(e.params),r=new TextEncoder().encode(t);if(r.length>65535)throw new Error(`Params JSON too large: ${r.length} bytes (max 65535)`);let n=4+r.length,o=f.allocUnsafe(n),i=0;return o.writeUInt8(e.type,i++),o.writeUInt8(e.instanceId,i++),o.writeUInt16BE(r.length,i),i+=2,o.toUint8Array().set(r,i),o.toUint8Array()}calculateUpdateInstanceSize(e){let t=JSON.stringify(e.params);return 4+new TextEncoder().encode(t).length}encodeRemoveInstance(e){let t=f.allocUnsafe(2);return t.writeUInt8(e.type,0),t.writeUInt8(e.instanceId,1),t.toUint8Array()}};C(lt,"MacroOrderEncoder");var q=lt;T();Z();var ct=class ct{encode(e){switch(e.type){case 1:return this.encodeSetConfigOrder(e);case 2:return this.encodeSetScanlinesOrder(e);case 3:return this.encodeSetAmbientEffectOrder(e);case 4:return this.encodeSetScalingModeOrder(e);case 5:return this.encodeSetGridOrder(e);case 6:return this.encodeSwitchPaletteOrder(e);case 7:return this.encodeSetCellSizeOrder(e);default:throw new Error(`Unknown post-process order type: ${e.type}`)}}calculateSize(e){switch(e.type){case 1:return this.calculateSetConfigSize(e);case 2:return Je;case 3:return qe;case 4:return Ke;case 5:return Qe;case 6:return et;case 7:return tt;default:throw new Error(`Unknown post-process order type: ${e.type}`)}}encodeSetConfigOrder(e){let t=this.calculateSetConfigSize(e),r=f.allocUnsafe(t),n=0;return r.writeUInt8(e.type,n++),r.writeUInt8(e.displayId,n++),r.writeUInt8(e.flags,n++),e.flags&1&&e.scanlines&&(r.writeUInt8(e.scanlines.enabled?1:0,n++),r.writeUInt8(Math.round(e.scanlines.opacity*255),n++),r.writeUInt8(e.scanlines.pattern,n++),r.writeUInt8(e.scanlines.colorR,n++),r.writeUInt8(e.scanlines.colorG,n++),r.writeUInt8(e.scanlines.colorB,n++)),e.flags&2&&e.ambientEffect&&(r.writeUInt8(e.ambientEffect.enabled?1:0,n++),r.writeUInt8(Math.min(255,Math.round(e.ambientEffect.blur)),n++),r.writeUInt8(Math.min(255,Math.max(100,Math.round(e.ambientEffect.scale*100))),n++),r.writeUInt8(Math.round(e.ambientEffect.opacity*255),n++)),r.toUint8Array()}calculateSetConfigSize(e){let t=Tr;return e.flags&1&&(t+=6),e.flags&2&&(t+=4),t}encodeSetScanlinesOrder(e){let t=f.allocUnsafe(Je),r=0;return t.writeUInt8(e.type,r++),t.writeUInt8(e.displayId,r++),t.writeUInt8(e.enabled?1:0,r++),t.writeUInt8(Math.round(e.opacity*255),r++),t.writeUInt8(e.pattern,r++),t.writeUInt8(e.colorR,r++),t.writeUInt8(e.colorG,r++),t.writeUInt8(e.colorB,r++),t.toUint8Array()}encodeSetAmbientEffectOrder(e){let t=f.allocUnsafe(qe),r=0;return t.writeUInt8(e.type,r++),t.writeUInt8(e.displayId,r++),t.writeUInt8(e.enabled?1:0,r++),t.writeUInt8(Math.min(255,Math.round(e.blur)),r++),t.writeUInt8(Math.min(255,Math.max(100,Math.round(e.scale*100))),r++),t.writeUInt8(Math.round(e.opacity*255),r++),t.toUint8Array()}encodeSetScalingModeOrder(e){let t=f.allocUnsafe(Ke),r=0;return t.writeUInt8(e.type,r++),t.writeUInt8(e.displayId,r++),t.writeUInt8(e.mode,r++),t.toUint8Array()}encodeSetGridOrder(e){let t=f.allocUnsafe(Qe),r=0;return t.writeUInt8(e.type,r++),t.writeUInt8(e.displayId,r++),t.writeUInt8(e.enabled?1:0,r++),t.writeUInt8(e.colorR,r++),t.writeUInt8(e.colorG,r++),t.writeUInt8(e.colorB,r++),t.writeUInt8(e.colorA,r++),t.writeUInt8(Math.min(10,Math.max(1,e.lineWidth)),r++),t.toUint8Array()}encodeSwitchPaletteOrder(e){let t=f.allocUnsafe(et),r=0;return t.writeUInt8(e.type,r++),t.writeUInt8(e.displayId,r++),t.writeUInt8(e.slotId,r++),t.toUint8Array()}encodeSetCellSizeOrder(e){let t=f.allocUnsafe(tt),r=0;return t.writeUInt8(e.type,r++),t.writeUInt8(e.displayId,r++),t.writeUInt8(e.cellWidth,r++),t.writeUInt8(e.cellHeight,r++),t.toUint8Array()}};C(ct,"PostProcessOrderEncoder");var ve=ct;T();var ut=class ut{constructor(){h(this,"layerEncoder");h(this,"audioOrderEncoder");h(this,"vibrationOrderEncoder");h(this,"macroOrderEncoder");h(this,"postProcessOrderEncoder");h(this,"displayEncoder");this.layerEncoder=new J,this.audioOrderEncoder=new xe,this.vibrationOrderEncoder=new Oe,this.macroOrderEncoder=new q,this.postProcessOrderEncoder=new ve,this.displayEncoder=new j}encode(e){let t=e.layers.map(O=>this.layerEncoder.encode(O)),r=e.audioOrders||[],n=r.map(O=>this.audioOrderEncoder.encode(O)),o=e.vibrationOrders||[],i=o.map(O=>this.vibrationOrderEncoder.encode(O)),s=e.macroOrders||[],a=s.map(O=>this.macroOrderEncoder.encode(O)),d=e.postProcessOrders||[],l=d.map(O=>this.postProcessOrderEncoder.encode(O)),c=9,u=e.displays.reduce((O,z)=>O+this.displayEncoder.calculateSize(z),0),p=2,m=t.reduce((O,z)=>O+z.length,0),g=1,y=n.reduce((O,z)=>O+z.length,0),S=1,x=i.reduce((O,z)=>O+z.length,0),I=1,v=a.reduce((O,z)=>O+z.length,0),w=1,A=l.reduce((O,z)=>O+z.length,0),E=c+u+p+m+g+y+S+x+I+v+w+A,U=f.allocUnsafe(E),M=0,B=typeof e.tick=="bigint"?e.tick:BigInt(e.tick);U.writeBigUInt64BE(B,M),M+=8,U.writeUInt8(e.displays.length,M),M+=1;for(let O of e.displays){let z=this.displayEncoder.encode(O);f.from(z).copy(U,M),M+=z.length}U.writeUInt16BE(e.layers.length,M),M+=2;for(let O of t)f.from(O).copy(U,M),M+=O.length;U.writeUInt8(r.length,M),M+=1;for(let O of n)f.from(O).copy(U,M),M+=O.length;U.writeUInt8(o.length,M),M+=1;for(let O of i)f.from(O).copy(U,M),M+=O.length;U.writeUInt8(s.length,M),M+=1;for(let O of a)f.from(O).copy(U,M),M+=O.length;U.writeUInt8(d.length,M),M+=1;for(let O of l)f.from(O).copy(U,M),M+=O.length;return U.toUint8Array()}calculateSize(e){let r=e.displays.reduce((x,I)=>x+this.displayEncoder.calculateSize(I),0),n=2,o=e.layers.reduce((x,I)=>x+this.layerEncoder.calculateSize(I),0),i=1,a=(e.audioOrders||[]).reduce((x,I)=>x+this.audioOrderEncoder.calculateSize(I),0),d=1,c=(e.vibrationOrders||[]).reduce((x,I)=>x+this.vibrationOrderEncoder.calculateSize(I),0),u=1,m=(e.macroOrders||[]).reduce((x,I)=>x+this.macroOrderEncoder.calculateSize(I),0),g=1,S=(e.postProcessOrders||[]).reduce((x,I)=>x+this.postProcessOrderEncoder.calculateSize(I),0);return 9+r+n+o+i+a+d+c+u+m+g+S}static createEmptyPacket(e){return{tick:typeof e=="bigint"?Number(e):e,displayCount:0,displays:[],layerCount:0,layers:[],audioOrderCount:0,audioOrders:[],vibrationOrderCount:0,vibrationOrders:[],macroOrderCount:0,macroOrders:[],postProcessOrderCount:0,postProcessOrders:[]}}encodeEmpty(e){let t=f.allocUnsafe(15),r=typeof e=="bigint"?e:BigInt(e);return t.writeBigUInt64BE(r,0),t.writeUInt8(0,8),t.writeUInt16BE(0,9),t.writeUInt8(0,11),t.writeUInt8(0,12),t.writeUInt8(0,13),t.writeUInt8(0,14),t.toUint8Array()}};C(ut,"UpdatePacketEncoder");var K=ut;T();var pt=class pt{encode(e){switch(e.loadType){case 1:return this.encodeColorPalette(e);case 2:return this.encodeSprite(e);case 3:return this.encodeMulticolorSprite(e);case 5:return this.encodeSound(e);case 8:return this.encodeImageFont(e);case 9:return this.encodeImageFontBlock(e);default:throw new Error(`Unknown load type: ${e.loadType}`)}}encodeColorPalette(e){let t=e.colors.length;if(t>255)throw new Error(`Palette size ${t} exceeds maximum of 255`);let r=e.slotId!==void 0,n=r?4:3,o=f.allocUnsafe(n+t*6),i=0;o.writeUInt8(1,i++),o.writeUInt8(r?255:0,i++),r&&o.writeUInt8(e.slotId,i++),o.writeUInt8(t,i++);for(let s of e.colors)o.writeUInt8(s.colorId,i++),o.writeUInt8(s.r,i++),o.writeUInt8(s.g,i++),o.writeUInt8(s.b,i++),o.writeUInt8(s.a,i++),o.writeUInt8(s.e??0,i++);return o.toUint8Array()}encodeSprite(e){let t=e.sprites.length;if(t>255)throw new Error(`Sprite count ${t} exceeds maximum of 255`);let r=2;for(let i of e.sprites)r+=3,r+=i.data.length;let n=f.allocUnsafe(r),o=0;n.writeUInt8(2,o++),n.writeUInt8(t,o++);for(let i of e.sprites){if(i.data.length!==i.sizeX*i.sizeY)throw new Error(`Sprite ${i.spriteId}: data length ${i.data.length} does not match size ${i.sizeX}x${i.sizeY}`);n.writeUInt8(i.spriteId,o++),n.writeUInt8(i.sizeX,o++),n.writeUInt8(i.sizeY,o++);for(let s of i.data)n.writeUInt8(s,o++)}return n.toUint8Array()}encodeMulticolorSprite(e){let t=e.sprites.length;if(t>255)throw new Error(`Sprite count ${t} exceeds maximum of 255`);let r=2;for(let i of e.sprites)r+=3,r+=i.data.length*3;let n=f.allocUnsafe(r),o=0;n.writeUInt8(3,o++),n.writeUInt8(t,o++);for(let i of e.sprites){if(i.data.length!==i.sizeX*i.sizeY)throw new Error(`Sprite ${i.spriteId}: data length ${i.data.length} does not match size ${i.sizeX}x${i.sizeY}`);n.writeUInt8(i.spriteId,o++),n.writeUInt8(i.sizeX,o++),n.writeUInt8(i.sizeY,o++);for(let s of i.data)n.writeUInt8(s.charCode,o++),n.writeUInt8(s.fgColorId,o++),n.writeUInt8(s.bgColorId,o++)}return n.toUint8Array()}encodeSound(e){let t=e.sounds.length;if(t>255)throw new Error(`Sound count ${t} exceeds maximum of 255`);let r=2;for(let i of e.sounds){if(i.midiData.length>65535)throw new Error(`Sound ${i.soundId}: MIDI data size ${i.midiData.length} exceeds maximum of 65535 bytes`);r+=3,r+=i.midiData.length}let n=f.allocUnsafe(r),o=0;n.writeUInt8(5,o++),n.writeUInt8(t,o++);for(let i of e.sounds){n.writeUInt8(i.soundId,o++),n.writeUInt16BE(i.midiData.length,o),o+=2;for(let s=0;s<i.midiData.length;s++)n.writeUInt8(i.midiData[s],o++)}return n.toUint8Array()}encodeImageFont(e){if(![1,4,16].includes(e.atlasBlocks))throw new Error(`Invalid atlasBlocks value: ${e.atlasBlocks}. Must be 1, 4, or 16.`);let r=f.allocUnsafe(6),n=0;return r.writeUInt8(8,n++),r.writeUInt8(e.glyphWidth,n++),r.writeUInt8(e.glyphHeight,n++),r.writeUInt8(e.cellWidth,n++),r.writeUInt8(e.cellHeight,n++),r.writeUInt8(e.atlasBlocks,n++),r.toUint8Array()}encodeImageFontBlock(e){let t=6+e.imageData.length,r=f.allocUnsafe(t),n=0;r.writeUInt8(9,n++),r.writeUInt8(e.blockIndex,n++),r.writeUInt32LE(e.imageData.length,n),n+=4;for(let o=0;o<e.imageData.length;o++)r.writeUInt8(e.imageData[o],n++);return r.toUint8Array()}};C(pt,"LoadEncoder");var Y=pt;T();var mt=class mt{encode(e){let t=JSON.stringify(e.template),r=new TextEncoder().encode(t);if(r.length>65535)throw new Error(`Macro template JSON too large: ${r.length} bytes (max 65535)`);let n=4+r.length,o=f.allocUnsafe(n),i=0;return o.writeUInt8(7,i++),o.writeUInt8(e.macroId,i++),o.writeUInt16BE(r.length,i),i+=2,o.toUint8Array().set(r,i),o.toUint8Array()}calculateSize(e){let t=JSON.stringify(e.template);return 4+new TextEncoder().encode(t).length}};C(mt,"MacroLoadEncoder");var Q=mt;T();var ht=class ht{encode(e){switch(e.type){case 1:return this.encodeClick(e);case 2:return this.encodeChange(e);case 3:return this.encodeSubmit(e);case 4:return this.encodeSelect(e);default:throw new Error(`Unknown macro event type: ${e.type}`)}}calculateSize(e){switch(e.type){case 1:return 2;case 2:return this.calculateChangeSize(e);case 3:return this.calculateSubmitSize(e);case 4:return 4;default:throw new Error(`Unknown macro event type: ${e.type}`)}}encodeClick(e){let t=f.allocUnsafe(2);return t.writeUInt8(e.type,0),t.writeUInt8(e.instanceId,1),t.toUint8Array()}encodeChange(e){if(typeof e.value=="boolean"){let r=f.allocUnsafe(4);return r.writeUInt8(e.type,0),r.writeUInt8(e.instanceId,1),r.writeUInt8(1,2),r.writeUInt8(e.value?1:0,3),r.toUint8Array()}else{let r=f.allocUnsafe(7);return r.writeUInt8(e.type,0),r.writeUInt8(e.instanceId,1),r.writeUInt8(0,2),r.writeFloatBE(e.value,3),r.toUint8Array()}}calculateChangeSize(e){return typeof e.value=="boolean"?4:7}encodeSubmit(e){let t=new TextEncoder().encode(e.text);if(t.length>65535)throw new Error(`Submit text too large: ${t.length} bytes (max 65535)`);let r=4+t.length,n=f.allocUnsafe(r),o=0;return n.writeUInt8(e.type,o++),n.writeUInt8(e.instanceId,o++),n.writeUInt16BE(t.length,o),o+=2,n.toUint8Array().set(t,o),n.toUint8Array()}calculateSubmitSize(e){return 4+new TextEncoder().encode(e.text).length}encodeSelect(e){let t=f.allocUnsafe(4);return t.writeUInt8(e.type,0),t.writeUInt8(e.instanceId,1),t.writeUInt16BE(e.index,2),t.toUint8Array()}};C(ht,"MacroEventEncoder");var we=ht;gt();yt();St();Mt();vt();T();var Et=class Et{decode(e,t=0){let r=t,n=e.readUInt8(t++);if(n!==7)throw new Error(`Expected LoadType.Macro (0x07), got 0x${n.toString(16)}`);let o=e.readUInt8(t++),i=e.readUInt16BE(t);t+=2;let s=e.toUint8Array().subarray(t,t+i);t+=i;let a=new TextDecoder().decode(s),d=JSON.parse(a);return{load:{loadType:7,macroId:o,template:d},bytesRead:t-r}}};C(Et,"MacroLoadDecoder");var oe=Et;var At=class At{decode(e,t=0){let r=f.from(e);if(t>=r.length)throw new Error("Buffer too short to decode load type");let n=r.readUInt8(t);switch(n){case 1:return this.decodeColorPalette(r,t);case 2:return this.decodeSprite(r,t);case 3:return this.decodeMulticolorSprite(r,t);case 5:return this.decodeSound(r,t);case 7:return this.decodeMacro(r,t);case 8:return this.decodeImageFont(r,t);case 9:return this.decodeImageFontBlock(r,t);default:throw new Error(`Unknown load type: 0x${n.toString(16)}`)}}decodeColorPalette(e,t){let r=t;this.checkSize(e,t,3,"ColorPalette header");let n=e.readUInt8(t++),i=e.readUInt8(t++)===255,s;i&&(this.checkSize(e,t,1,"ColorPalette slotId"),s=e.readUInt8(t++));let a=e.readUInt8(t++);this.checkSize(e,t,a*6,`ColorPalette ${a} colors`);let d=[];for(let c=0;c<a;c++)d.push({colorId:e.readUInt8(t++),r:e.readUInt8(t++),g:e.readUInt8(t++),b:e.readUInt8(t++),a:e.readUInt8(t++),e:e.readUInt8(t++)});return{load:{loadType:1,...s!==void 0&&{slotId:s},colors:d},bytesRead:t-r}}decodeSprite(e,t){let r=t;this.checkSize(e,t,2,"Sprite header");let n=e.readUInt8(t++),o=e.readUInt8(t++),i=[];for(let a=0;a<o;a++){this.checkSize(e,t,3,`Sprite ${a} header`);let d=e.readUInt8(t++),l=e.readUInt8(t++),c=e.readUInt8(t++),u=l*c;this.checkSize(e,t,u,`Sprite ${a} data`);let p=[];for(let m=0;m<u;m++)p.push(e.readUInt8(t++));i.push({spriteId:d,sizeX:l,sizeY:c,data:p})}return{load:{loadType:2,sprites:i},bytesRead:t-r}}decodeMulticolorSprite(e,t){let r=t;this.checkSize(e,t,2,"MulticolorSprite header");let n=e.readUInt8(t++),o=e.readUInt8(t++),i=[];for(let a=0;a<o;a++){this.checkSize(e,t,3,`MulticolorSprite ${a} header`);let d=e.readUInt8(t++),l=e.readUInt8(t++),c=e.readUInt8(t++),u=l*c;this.checkSize(e,t,u*3,`MulticolorSprite ${a} data`);let p=[];for(let m=0;m<u;m++)p.push({charCode:e.readUInt8(t++),fgColorId:e.readUInt8(t++),bgColorId:e.readUInt8(t++)});i.push({spriteId:d,sizeX:l,sizeY:c,data:p})}return{load:{loadType:3,sprites:i},bytesRead:t-r}}decodeSound(e,t){let r=t;this.checkSize(e,t,2,"Sound header");let n=e.readUInt8(t++),o=e.readUInt8(t++),i=[];for(let a=0;a<o;a++){this.checkSize(e,t,3,`Sound ${a} header`);let d=e.readUInt8(t++),l=e.readUInt16BE(t);t+=2,this.checkSize(e,t,l,`Sound ${a} MIDI data`);let c=new Uint8Array(l);for(let u=0;u<l;u++)c[u]=e.readUInt8(t++);i.push({soundId:d,midiData:c})}return{load:{loadType:5,sounds:i},bytesRead:t-r}}checkSize(e,t,r,n){if(t+r>e.length)throw new Error(`Buffer too short for ${n}: need ${r} bytes at offset ${t}, but only ${e.length-t} bytes remaining`)}decodeMacro(e,t){return new oe().decode(e,t)}decodeImageFont(e,t){let r=t;this.checkSize(e,t,6,"ImageFont header");let n=e.readUInt8(t++),o=e.readUInt8(t++),i=e.readUInt8(t++),s=e.readUInt8(t++),a=e.readUInt8(t++),d=e.readUInt8(t++);if(![1,4,16].includes(d))throw new Error(`Invalid atlasBlocks value: ${d}. Must be 1, 4, or 16.`);let l=d;return{load:{loadType:8,glyphWidth:o,glyphHeight:i,cellWidth:s,cellHeight:a,atlasBlocks:l},bytesRead:t-r}}decodeImageFontBlock(e,t){let r=t;this.checkSize(e,t,2,"ImageFontBlock header");let n=e.readUInt8(t++),o=e.readUInt8(t++);this.checkSize(e,t,4,"ImageFontBlock data size");let i=e.readUInt32LE(t);t+=4,this.checkSize(e,t,i,"ImageFontBlock data");let s=new Uint8Array(i);for(let d=0;d<i;d++)s[d]=e.readUInt8(t++);return{load:{loadType:9,blockIndex:o,imageData:s},bytesRead:t-r}}};C(At,"LoadDecoder");var ie=At;var Pt=class Pt{decode(e,t=0){let r=e.readUInt8(t);switch(r){case 1:return this.decodeClick(e,t);case 2:return this.decodeChange(e,t);case 3:return this.decodeSubmit(e,t);case 4:return this.decodeSelect(e,t);default:throw new Error(`Unknown macro event type: 0x${r.toString(16)}`)}}decodeAll(e,t,r){let n=[],o=0;for(let i=0;i<r;i++){let{event:s,bytesRead:a}=this.decode(e,t+o);n.push(s),o+=a}return{events:n,bytesRead:o}}decodeClick(e,t){let r=e.readUInt8(t),n=e.readUInt8(t+1);return{event:{type:r,instanceId:n},bytesRead:2}}decodeChange(e,t){let r=e.readUInt8(t),n=e.readUInt8(t+1),o=e.readUInt8(t+2),i,s;return o===1?(i=e.readUInt8(t+3)===1,s=4):(i=e.readFloatBE(t+3),s=7),{event:{type:r,instanceId:n,value:i},bytesRead:s}}decodeSubmit(e,t){let r=t,n=e.readUInt8(t++),o=e.readUInt8(t++),i=e.readUInt16BE(t);t+=2;let s=e.toUint8Array().subarray(t,t+i);t+=i;let a=new TextDecoder().decode(s);return{event:{type:n,instanceId:o,text:a},bytesRead:t-r}}decodeSelect(e,t){let r=e.readUInt8(t),n=e.readUInt8(t+1),o=e.readUInt16BE(t+2);return{event:{type:r,instanceId:n,index:o},bytesRead:4}}};C(Pt,"MacroEventDecoder");var se=Pt;var kt=class kt{constructor(){h(this,"currentWidth",256);h(this,"currentHeight",256)}rasterizeOrders(e,t,r,n,o){this.currentWidth=r,this.currentHeight=n,this.clearBuffer(t);for(let i of e)this.rasterizeOrder(i,t,o)}clearBuffer(e){e.clear()}rasterizeOrder(e,t,r){switch(e.type){case 1:this.rasterizeChar(e,t);break;case 2:this.rasterizeText(e,t);break;case 23:this.rasterizeTextMultiline(e,t);break;case 3:this.rasterizeSubFrame(e,t);break;case 4:this.rasterizeSubFrameMultiColor(e,t);break;case 5:this.rasterizeFullFrame(e,t);break;case 6:this.rasterizeFullFrameMultiColor(e,t);break;case 7:this.rasterizeSprite(e,t,r);break;case 8:this.rasterizeSpriteMultiColor(e,t,r);break;case 9:this.rasterizeColorMap(e,t);break;case 10:this.rasterizeShape(e,t);break;case 11:this.rasterizeDotCloud(e,t);break;case 12:this.rasterizeDotCloudMultiColor(e,t);break;case 17:this.rasterizeBitmask(e,t);break;case 18:this.rasterizeBitmask4(e,t);break;case 24:this.rasterizeBitmask16(e,t);break;case 25:this.rasterizePolyline(e,t);break;case 13:this.rasterizeSpriteCloud(e,t,r);break;case 14:this.rasterizeSpriteCloudMultiColor(e,t,r);break;case 15:this.rasterizeSpriteCloudVaried(e,t,r);break;case 16:this.rasterizeSpriteCloudVariedMultiColor(e,t,r);break;case 19:this.rasterizeFill(e,t);break;case 20:this.rasterizeFillChar(e,t);break;case 21:this.rasterizeFillSprite(e,t,r);break;case 22:this.rasterizeFillSpriteMultiColor(e,t,r);break;default:break}}rasterizeChar(e,t){let{posX:r,posY:n,charCode:o,bgColorCode:i,fgColorCode:s}=e;if(!this.isInBounds(r,n))return;let a=n*this.currentWidth+r;t.set(a,o,s,i)}rasterizeText(e,t){let{posX:r,posY:n,text:o,bgColorCode:i,fgColorCode:s}=e;if(this.isInBounds(r,n))for(let a=0;a<o.length;a++){let d=r+a;if(d>=this.currentWidth)break;let l=n*this.currentWidth+d,c=o.charCodeAt(a);t.set(l,c,s,i)}}rasterizeTextMultiline(e,t){let{posX:r,posY:n,text:o,bgColorCode:i,fgColorCode:s}=e,a=o.split(`
|
|
2
|
+
`),d=n;for(let l of a){if(d>=this.currentHeight)break;if(d>=0&&this.isInBounds(r,d))for(let c=0;c<l.length;c++){let u=r+c;if(u>=this.currentWidth)break;let p=d*this.currentWidth+u,m=l.charCodeAt(c);t.set(p,m,s,i)}d++}}rasterizeSubFrame(e,t){let{posX:r,posY:n,sizeX:o,sizeY:i,frame:s,bgColorCode:a,fgColorCode:d}=e;for(let l=0;l<i;l++){let c=n+l;if(!(c<0||c>=this.currentHeight))for(let u=0;u<o;u++){let p=r+u;if(p<0||p>=this.currentWidth)continue;let m=l*o+u;if(m>=s.length)break;let g=c*this.currentWidth+p;t.set(g,s[m],d,a)}}}rasterizeSubFrameMultiColor(e,t){let{posX:r,posY:n,sizeX:o,sizeY:i,frame:s}=e;for(let a=0;a<i;a++){let d=n+a;if(!(d<0||d>=this.currentHeight))for(let l=0;l<o;l++){let c=r+l;if(c<0||c>=this.currentWidth)continue;let u=a*o+l;if(u>=s.length)break;let p=s[u],m=d*this.currentWidth+c;t.set(m,p.charCode,p.fgColorCode,p.bgColorCode)}}}rasterizeFullFrame(e,t){let{frame:r,bgColorCode:n,fgColorCode:o}=e,i=this.currentWidth*this.currentHeight;for(let s=0;s<i&&s<r.length;s++)t.set(s,r[s],o,n)}rasterizeFullFrameMultiColor(e,t){let{frame:r}=e,n=this.currentWidth*this.currentHeight;for(let o=0;o<n&&o<r.length;o++){let i=r[o];t.set(o,i.charCode,i.fgColorCode,i.bgColorCode)}}rasterizeColorMap(e,t){let{posX:r,posY:n,sizeX:o,sizeY:i,colorData:s}=e;for(let a=0;a<i;a++){let d=n+a;if(!(d<0||d>=this.currentHeight))for(let l=0;l<o;l++){let c=r+l;if(c<0||c>=this.currentWidth)continue;let u=a*o+l;if(u>=s.length)break;let p=d*this.currentWidth+c,m=s[u];t.setColorsOnly(p,m.fgColorCode,m.bgColorCode)}}}rasterizeShape(e,t){let{shapeType:r,shapeData:n}=e;switch(r){case 1:this.rasterizeRectangle(n,t);break;case 2:this.rasterizeCircle(n,t);break;case 3:this.rasterizeLine(n,t);break;case 4:this.rasterizeEllipse(n,t);break;case 5:this.rasterizeTriangle(n,t);break}}rasterizeRectangle(e,t){let{posX:r,posY:n,width:o,height:i,filled:s,charCode:a,bgColorCode:d,fgColorCode:l}=e;if(s)for(let c=0;c<i;c++){let u=n+c;if(!(u<0||u>=this.currentHeight))for(let p=0;p<o;p++){let m=r+p;if(m<0||m>=this.currentWidth)continue;let g=u*this.currentWidth+m;t.set(g,a,l,d)}}else{for(let c=0;c<o;c++)this.setCell(r+c,n,a,d,l,t),this.setCell(r+c,n+i-1,a,d,l,t);for(let c=0;c<i;c++)this.setCell(r,n+c,a,d,l,t),this.setCell(r+o-1,n+c,a,d,l,t)}}rasterizeCircle(e,t){let{centerX:r,centerY:n,radius:o,filled:i,charCode:s,bgColorCode:a,fgColorCode:d}=e;if(i)for(let l=-o;l<=o;l++){let c=n+l;if(!(c<0||c>=this.currentHeight))for(let u=-o;u<=o;u++){let p=r+u;if(!(p<0||p>=this.currentWidth)&&u*u+l*l<=o*o){let m=c*this.currentWidth+p;t.set(m,s,d,a)}}}else{let l=o,c=0,u=0;for(;l>=c;)this.setCell(r+l,n+c,s,a,d,t),this.setCell(r+c,n+l,s,a,d,t),this.setCell(r-c,n+l,s,a,d,t),this.setCell(r-l,n+c,s,a,d,t),this.setCell(r-l,n-c,s,a,d,t),this.setCell(r-c,n-l,s,a,d,t),this.setCell(r+c,n-l,s,a,d,t),this.setCell(r+l,n-c,s,a,d,t),u<=0&&(c+=1,u+=2*c+1),u>0&&(l-=1,u-=2*l+1)}}rasterizeLine(e,t){let{x1:r,y1:n,x2:o,y2:i,charCode:s,bgColorCode:a,fgColorCode:d}=e,l=Math.abs(o-r),c=Math.abs(i-n),u=r<o?1:-1,p=n<i?1:-1,m=l-c,g=r,y=n;for(;this.setCell(g,y,s,a,d,t),!(g===o&&y===i);){let S=2*m;S>-c&&(m-=c,g+=u),S<l&&(m+=l,y+=p)}}rasterizePolyline(e,t){let{charCode:r,fgColorCode:n,bgColorCode:o,points:i}=e;if(i.length<2){i.length===1&&this.setCell(i[0].x,i[0].y,r,o,n,t);return}for(let s=0;s<i.length-1;s++){let a=i[s],d=i[s+1];this.rasterizeLineSegment(a.x,a.y,d.x,d.y,r,o,n,t)}}rasterizeLineSegment(e,t,r,n,o,i,s,a){let d=Math.abs(r-e),l=Math.abs(n-t),c=e<r?1:-1,u=t<n?1:-1,p=d-l,m=e,g=t;for(;this.setCell(m,g,o,i,s,a),!(m===r&&g===n);){let y=2*p;y>-l&&(p-=l,m+=c),y<d&&(p+=d,g+=u)}}rasterizeEllipse(e,t){let{centerX:r,centerY:n,radiusX:o,radiusY:i,filled:s,charCode:a,bgColorCode:d,fgColorCode:l}=e;if(s)for(let c=-i;c<=i;c++){let u=n+c;if(!(u<0||u>=this.currentHeight))for(let p=-o;p<=o;p++){let m=r+p;if(m<0||m>=this.currentWidth)continue;if(p*p/(o*o)+c*c/(i*i)<=1){let y=u*this.currentWidth+m;t.set(y,a,l,d)}}}else{let c=Math.max(o,i)*8;for(let u=0;u<c;u++){let p=2*Math.PI*u/c,m=Math.round(r+o*Math.cos(p)),g=Math.round(n+i*Math.sin(p));this.setCell(m,g,a,d,l,t)}}}rasterizeTriangle(e,t){let{x1:r,y1:n,x2:o,y2:i,x3:s,y3:a,filled:d,charCode:l,bgColorCode:c,fgColorCode:u}=e;if(d){let p=[{x:r,y:n},{x:o,y:i},{x:s,y:a}].sort((I,v)=>I.y-v.y),[m,g,y]=p,S=C((I,v,w)=>{let A=Math.round(Math.min(v,w)),E=Math.round(Math.max(v,w));for(let U=A;U<=E;U++)if(U>=0&&U<this.currentWidth&&I>=0&&I<this.currentHeight){let M=I*this.currentWidth+U;t.set(M,l,u,c)}},"drawLine"),x=C((I,v,w,A,E)=>A===v?w:w+(I-v)*(E-w)/(A-v),"interpolate");for(let I=m.y;I<=g.y;I++){let v=x(I,m.y,m.x,y.y,y.x),w=x(I,m.y,m.x,g.y,g.x);S(I,v,w)}for(let I=g.y+1;I<=y.y;I++){let v=x(I,m.y,m.x,y.y,y.x),w=x(I,g.y,g.x,y.y,y.x);S(I,v,w)}}else this.drawLineSegment(r,n,o,i,l,c,u,t),this.drawLineSegment(o,i,s,a,l,c,u,t),this.drawLineSegment(s,a,r,n,l,c,u,t)}drawLineSegment(e,t,r,n,o,i,s,a){let d=Math.abs(r-e),l=Math.abs(n-t),c=e<r?1:-1,u=t<n?1:-1,p=d-l,m=e,g=t;for(;this.setCell(m,g,o,i,s,a),!(m===r&&g===n);){let y=2*p;y>-l&&(p-=l,m+=c),y<d&&(p+=d,g+=u)}}rasterizeDotCloud(e,t){let{charCode:r,bgColorCode:n,fgColorCode:o,positions:i}=e,s=this.currentWidth;for(let a=0;a<i.length;a++){let d=i[a];if(d.posX<0||d.posX>=s||d.posY<0||d.posY>=this.currentHeight)continue;let l=d.posY*s+d.posX;t.set(l,r,o,n)}}rasterizeDotCloudMultiColor(e,t){let{dots:r}=e;for(let n of r)this.setCell(n.posX,n.posY,n.charCode,n.bgColorCode,n.fgColorCode,t)}rasterizeBitmask(e,t){let{posX:r,posY:n,sizeX:o,sizeY:i,charCode:s,bgColorCode:a,fgColorCode:d,override:l,mask:c}=e;for(let u=0;u<i;u++){let p=n+u;if(!(p<0||p>=this.currentHeight))for(let m=0;m<o;m++){let g=r+m;if(g<0||g>=this.currentWidth)continue;let y=u*o+m,S=Math.floor(y/8),x=y%8,I=(c[S]&1<<x)!==0,v=p*this.currentWidth+g;I?t.set(v,s,d,a):l&&t.set(v,255,255,255)}}}rasterizeBitmask4(e,t){let{posX:r,posY:n,sizeX:o,sizeY:i,override:s,variants:a,mask:d}=e;for(let l=0;l<i;l++){let c=n+l;if(!(c<0||c>=this.currentHeight))for(let u=0;u<o;u++){let p=r+u;if(p<0||p>=this.currentWidth)continue;let m=l*o+u,g=Math.floor(m/4),y=m%4*2,S=d[g]>>y&3,x=c*this.currentWidth+p;if(S>0){let I=a[S-1];t.set(x,I.charCode,I.fgColorCode,I.bgColorCode)}else s&&t.set(x,255,255,255)}}}rasterizeBitmask16(e,t){let{posX:r,posY:n,sizeX:o,sizeY:i,override:s,variants:a,mask:d}=e;for(let l=0;l<i;l++){let c=n+l;if(!(c<0||c>=this.currentHeight))for(let u=0;u<o;u++){let p=r+u;if(p<0||p>=this.currentWidth)continue;let m=l*o+u,g=Math.floor(m/2),y=m%2*4,S=d[g]>>y&15,x=c*this.currentWidth+p;if(S>0){let I=a[S-1];t.set(x,I.charCode,I.fgColorCode,I.bgColorCode)}else s&&t.set(x,255,255,255)}}}rasterizeFill(e,t){let{charCode:r,bgColorCode:n,fgColorCode:o}=e;t.clearWithColor(r,o,n)}rasterizeFillChar(e,t){let{patternWidth:r,patternHeight:n,pattern:o,bgColorCode:i,fgColorCode:s}=e;for(let a=0;a<this.currentHeight;a++)for(let d=0;d<this.currentWidth;d++){let l=d%r,u=a%n*r+l;if(u<o.length){let p=a*this.currentWidth+d;t.set(p,o[u],s,i)}}}rasterizeSprite(e,t,r){if(!r)return;let{posX:n,posY:o,spriteIndex:i,bgColorCode:s,fgColorCode:a}=e,d=r.getUnicolorSprite(i);if(!d)return;let l=d.data;for(let c=0;c<d.sizeY;c++)for(let u=0;u<d.sizeX;u++){let p=n+u,m=o+c;if(!this.isInBounds(p,m))continue;let g=c*d.sizeX+u,y=l.get(g);this.setCell(p,m,y,s,a,t)}}rasterizeSpriteMultiColor(e,t,r){if(!r)return;let{posX:n,posY:o,spriteIndex:i}=e,s=r.getMulticolorSprite(i);if(!s)return;let a=s.data;for(let d=0;d<s.sizeY;d++)for(let l=0;l<s.sizeX;l++){let c=n+l,u=o+d;if(!this.isInBounds(c,u))continue;let p=d*s.sizeX+l,m=a.getCharCode(p),g=a.getFgColorCode(p),y=a.getBgColorCode(p);this.setCell(c,u,m,y,g,t)}}rasterizeSpriteCloud(e,t,r){if(!r)return;let{spriteIndex:n,bgColorCode:o,fgColorCode:i,positions:s}=e,a=r.getUnicolorSprite(n);if(a){if(a.sizeX===1&&a.sizeY===1){let d=a.data.get(0),l=this.currentWidth;for(let c=0;c<s.length;c++){let u=s[c];if(u.posX<0||u.posX>=l||u.posY<0||u.posY>=this.currentHeight)continue;let p=u.posY*l+u.posX;t.set(p,d,i,o)}return}for(let d=0;d<s.length;d++){let l=a.data;for(let c=0;c<a.sizeY;c++)for(let u=0;u<a.sizeX;u++){let p=s[d].posX+u,m=s[d].posY+c;if(!this.isInBounds(p,m))continue;let g=c*a.sizeX+u,y=l.get(g);this.setCell(p,m,y,o,i,t)}}}}rasterizeSpriteCloudMultiColor(e,t,r){if(!r)return;let{spriteIndex:n,positions:o}=e,i=r.getMulticolorSprite(n);if(i)for(let s=0;s<o.length;s++){let a=i.data;for(let d=0;d<i.sizeY;d++)for(let l=0;l<i.sizeX;l++){let c=o[s].posX+l,u=o[s].posY+d;if(!this.isInBounds(c,u))continue;let p=d*i.sizeX+l,m=a.getCharCode(p),g=a.getFgColorCode(p),y=a.getBgColorCode(p);this.setCell(c,u,m,y,g,t)}}}rasterizeSpriteCloudVaried(e,t,r){if(!r)return;let{sprites:n}=e;for(let o=0;o<n.length;o++){let i=n[o],s=r.getUnicolorSprite(i.spriteIndex);if(!s)continue;let a=s.data;for(let d=0;d<s.sizeY;d++)for(let l=0;l<s.sizeX;l++){let c=i.posX+l,u=i.posY+d;if(!this.isInBounds(c,u))continue;let p=d*s.sizeX+l,m=a.get(p);this.setCell(c,u,m,i.bgColorCode,i.fgColorCode,t)}}}rasterizeSpriteCloudVariedMultiColor(e,t,r){if(!r)return;let{sprites:n}=e;for(let o=0;o<n.length;o++){let i=n[o],s=r.getMulticolorSprite(i.spriteIndex);if(!s)continue;let a=s.data;for(let d=0;d<s.sizeY;d++)for(let l=0;l<s.sizeX;l++){let c=i.posX+l,u=i.posY+d;if(!this.isInBounds(c,u))continue;let p=d*s.sizeX+l,m=a.getCharCode(p),g=a.getFgColorCode(p),y=a.getBgColorCode(p);this.setCell(c,u,m,y,g,t)}}}rasterizeFillSprite(e,t,r){if(!r)return;let{spriteIndex:n,bgColorCode:o,fgColorCode:i}=e,s=r.getUnicolorSprite(n);if(!s)return;let a=s.data;for(let d=0;d<this.currentHeight;d++)for(let l=0;l<this.currentWidth;l++){let c=l%s.sizeX,p=d%s.sizeY*s.sizeX+c,m=a.get(p),g=d*this.currentWidth+l;t.set(g,m,i,o)}}rasterizeFillSpriteMultiColor(e,t,r){if(!r)return;let{spriteIndex:n}=e,o=r.getMulticolorSprite(n);if(!o)return;let i=o.data;for(let s=0;s<this.currentHeight;s++)for(let a=0;a<this.currentWidth;a++){let d=a%o.sizeX,c=s%o.sizeY*o.sizeX+d,u=i.getCharCode(c),p=i.getFgColorCode(c),m=i.getBgColorCode(c),g=s*this.currentWidth+a;t.set(g,u,p,m)}}setCell(e,t,r,n,o,i){if(!this.isInBounds(e,t))return;let s=t*this.currentWidth+e;i.set(s,r,o,n)}isInBounds(e,t){return e>=0&&e<this.currentWidth&&t>=0&&t<this.currentHeight}};C(kt,"LayerRasterizer");var ae=kt;var _=class _{constructor(e){this.engine=e;h(this,"colorCache",new Array(256));h(this,"cellsBuffer",[]);h(this,"opacityBuffer",new Uint8Array(0));h(this,"visibleLayersBuffer",[]);h(this,"visibleLayerIdsBuffer",[]);h(this,"passCellsBuffers",[]);h(this,"passOpacityBuffers",[]);this.rebuildColorCache()}static getChar(e){let t=_.charCache.get(e);return t===void 0&&(t=String.fromCharCode(e),_.charCache.set(e,t)),t}getLastVisibleLayerIds(){return this.visibleLayerIdsBuffer}rebuildColorCache(){for(let e=0;e<256;e++){let t=this.engine.getColor(e);t?this.colorCache[e]={r:t.r,g:t.g,b:t.b,a:t.a}:this.colorCache[e]={r:0,g:0,b:0,a:0}}}getColorRGB(e){return this.colorCache[e]??this.colorCache[255]}getColorEmission(e){let t=this.engine.getColor(e);return t?t.e:0}isLayerVisible(e,t){let r=e.x,n=e.x+e.width,o=e.y,i=e.y+e.height,s=t.x,a=t.x+256,d=t.y,l=t.y+256;return!(n<=s||r>=a||i<=d||o>=l)}rasterize(e,t,r){let n=this.normalizePasses(r);return this.rasterizeMultiPass(e,t,n)}rasterizeSinglePass(e,t){let r=e.width*e.height,n=this.cellsBuffer;n.length=r;for(let d=0;d<r;d++)n[d]?(n[d].char=" ",n[d].fgColorIndex=255,n[d].bgColorIndex=255,n[d].fgEmission=0,n[d].bgEmission=0):n[d]={char:" ",fgColorIndex:255,bgColorIndex:255,fgEmission:0,bgEmission:0};this.opacityBuffer.length<r?this.opacityBuffer=new Uint8Array(r):this.opacityBuffer.fill(0,0,r);let o=this.opacityBuffer,i=this.visibleLayersBuffer;i.length=0;for(let d=0;d<t.length;d++){let l=t[d];l.isEnabled()&&this.isLayerVisible(e,l.getOrigin())&&i.push(l)}i.sort((d,l)=>l.getZOrder()-d.getZOrder());let s=this.visibleLayerIdsBuffer;s.length=i.length;for(let d=0;d<i.length;d++)s[d]=i[d].getId();for(let d=0;d<e.height;d++)for(let l=0;l<e.width;l++){let c=d*e.width+l;if(o[c])continue;let u=e.x+l,p=e.y+d;for(let m=0;m<i.length;m++){let g=i[m],y=u-g.getOrigin().x,S=p-g.getOrigin().y,x=g.getWidth(),I=g.getHeight();if(y<0||y>=x||S<0||S>=I)continue;let v=S*x+y,w=g.getData(),A=w.getCharCode(v),E=w.getFgColorCode(v),U=w.getBgColorCode(v),M=n[c];if(A!==0&&M.char===" "&&(M.char=_.getChar(A)),E!==255&&M.fgColorIndex===255&&(M.fgColorIndex=E,M.fgEmission=this.getColorEmission(E)),U!==255){M.bgColorIndex===255&&(M.bgColorIndex=U,M.bgEmission=this.getColorEmission(U)),o[c]=1;break}}}let a=new Array(r);for(let d=0;d<r;d++)a[d]={char:n[d].char,fgColorIndex:n[d].fgColorIndex,bgColorIndex:n[d].bgColorIndex,fgEmission:n[d].fgEmission,bgEmission:n[d].bgEmission};return{id:e.id,width:e.width,height:e.height,cells:a,palette:this.colorCache}}rasterizeMultiPass(e,t,r){let n=e.width*e.height;this.ensurePassBuffers(r.length,n),this.visibleLayerIdsBuffer.length=0;let o=this.visibleLayersBuffer;o.length=0;for(let l=0;l<t.length;l++){let c=t[l];c.isEnabled()&&this.isLayerVisible(e,c.getOrigin())&&o.push(c)}o.sort((l,c)=>c.getZOrder()-l.getZOrder());for(let l=0;l<r.length;l++){let c=r[l],u=this.passCellsBuffers[l],p=this.preparePassBuffers(u,this.passOpacityBuffers[l],n);this.passOpacityBuffers[l]=p;let m=[];for(let y=0;y<o.length;y++){let S=o[y],x=S.getZOrder();x<c.zMin||x>c.zMax||m.push(S)}let g=this.visibleLayerIdsBuffer.length;for(let y=0;y<m.length;y++)this.visibleLayerIdsBuffer[g+y]=m[y].getId();this.composePass(e,m,u,p)}let i=this.cellsBuffer,s=this.preparePassBuffers(i,this.opacityBuffer,n);this.opacityBuffer=s;let a=new Array(n),d=[];for(let l=0;l<r.length;l++){let c=this.passCellsBuffers[l],u=new Array(n);for(let p=0;p<n;p++){let m=c[p];u[p]={char:m.char,fgColorIndex:m.fgColorIndex,bgColorIndex:m.bgColorIndex,fgEmission:m.fgEmission,bgEmission:m.bgEmission}}d.push({id:r[l].id,zMin:r[l].zMin,zMax:r[l].zMax,cells:u})}for(let l=0;l<n;l++){let c=i[l];for(let u=r.length-1;u>=0;u--){let p=this.passCellsBuffers[u][l];if(c.char===" "&&p.char!==" "&&(c.char=p.char),c.fgColorIndex===255&&p.fgColorIndex!==255&&(c.fgColorIndex=p.fgColorIndex,c.fgEmission=p.fgEmission),p.bgColorIndex!==255){c.bgColorIndex===255&&(c.bgColorIndex=p.bgColorIndex,c.bgEmission=p.bgEmission);break}}a[l]={char:c.char,fgColorIndex:c.fgColorIndex,bgColorIndex:c.bgColorIndex,fgEmission:c.fgEmission,bgEmission:c.bgEmission}}return{id:e.id,width:e.width,height:e.height,cells:a,palette:this.colorCache,passes:d}}composePass(e,t,r,n){let o=e.width,i=e.height;for(let s=0;s<i;s++)for(let a=0;a<o;a++){let d=s*o+a;if(n[d])continue;let l=e.x+a,c=e.y+s;for(let u=0;u<t.length;u++){let p=t[u],m=l-p.getOrigin().x,g=c-p.getOrigin().y,y=p.getWidth(),S=p.getHeight();if(m<0||m>=y||g<0||g>=S)continue;let x=g*y+m,I=p.getData(),v=I.getCharCode(x),w=I.getFgColorCode(x),A=I.getBgColorCode(x),E=r[d];if(v!==0&&E.char===" "&&(E.char=_.getChar(v)),w!==255&&E.fgColorIndex===255&&(E.fgColorIndex=w,E.fgEmission=this.getColorEmission(w)),A!==255){E.bgColorIndex===255&&(E.bgColorIndex=A,E.bgEmission=this.getColorEmission(A)),n[d]=1;break}}}}preparePassBuffers(e,t,r){e.length=r;for(let n=0;n<r;n++)e[n]?(e[n].char=" ",e[n].fgColorIndex=255,e[n].bgColorIndex=255,e[n].fgEmission=0,e[n].bgEmission=0):e[n]={char:" ",fgColorIndex:255,bgColorIndex:255,fgEmission:0,bgEmission:0};return t.length<r?t=new Uint8Array(r):t.fill(0,0,r),t}ensurePassBuffers(e,t){for(;this.passCellsBuffers.length<e;)this.passCellsBuffers.push([]);for(;this.passOpacityBuffers.length<e;)this.passOpacityBuffers.push(new Uint8Array(t));this.passCellsBuffers.length>e&&(this.passCellsBuffers.length=e),this.passOpacityBuffers.length>e&&(this.passOpacityBuffers.length=e);for(let r=0;r<e;r++)this.passOpacityBuffers[r].length<t?this.passOpacityBuffers[r]=new Uint8Array(t):this.passOpacityBuffers[r].fill(0,0,t)}normalizePasses(e){let t={id:0,zMin:0,zMax:255,enabled:!0};if(!e||e.length===0)return[t];let r=e.filter(n=>n.enabled!==!1);return r.length===0?[t]:r.slice(0,4)}rasterizeWithSortedLayers(e,t){let r=e.width*e.height,n=this.cellsBuffer;n.length=r;for(let a=0;a<r;a++)n[a]?(n[a].char=" ",n[a].fgColorIndex=255,n[a].bgColorIndex=255,n[a].fgEmission=0,n[a].bgEmission=0):n[a]={char:" ",fgColorIndex:255,bgColorIndex:255,fgEmission:0,bgEmission:0};this.opacityBuffer.length<r?this.opacityBuffer=new Uint8Array(r):this.opacityBuffer.fill(0,0,r);let o=this.opacityBuffer,i=this.visibleLayersBuffer;i.length=0;for(let a=0;a<t.length;a++){let d=t[a];this.isLayerVisible(e,d.getOrigin())&&i.push(d)}for(let a=0;a<e.height;a++)for(let d=0;d<e.width;d++){let l=a*e.width+d;if(o[l])continue;let c=e.x+d,u=e.y+a;for(let p=0;p<i.length;p++){let m=i[p],g=c-m.getOrigin().x,y=u-m.getOrigin().y,S=m.getWidth(),x=m.getHeight();if(g<0||g>=S||y<0||y>=x)continue;let I=y*S+g,v=m.getData(),w=v.getCharCode(I),A=v.getFgColorCode(I),E=v.getBgColorCode(I),U=n[l];if(w!==0&&U.char===" "&&(U.char=_.getChar(w)),A!==255&&U.fgColorIndex===255&&(U.fgColorIndex=A,U.fgEmission=this.getColorEmission(A)),E!==255){U.bgColorIndex===255&&(U.bgColorIndex=E,U.bgEmission=this.getColorEmission(E)),o[l]=1;break}}}let s=new Array(r);for(let a=0;a<r;a++)s[a]={char:n[a].char,fgColorIndex:n[a].fgColorIndex,bgColorIndex:n[a].bgColorIndex,fgEmission:n[a].fgEmission,bgEmission:n[a].bgEmission};return{id:e.id,width:e.width,height:e.height,cells:s,palette:this.colorCache}}calculateIntersection(e,t){let r=e.x,n=e.x+e.width,o=e.y,i=e.y+e.height,s=t.x,a=t.x+256,d=t.y,l=t.y+256,c=Math.max(r,s),u=Math.min(n,a),p=Math.max(o,d),m=Math.min(i,l);return{visible:c<u&&p<m,originStart:{x:c-e.x,y:p-e.y},originEnd:{x:u-e.x,y:m-e.y},layerStart:{x:c-t.x,y:p-t.y},layerEnd:{x:u-t.x,y:m-t.y}}}};C(_,"DisplayRasterizer"),h(_,"charCache",(()=>{let e=new Map;for(let t=0;t<256;t++)e.set(t,String.fromCharCode(t));return e})());var de=_;T();var ln=[[0,0],[9786,1],[9787,2],[9829,3],[9830,4],[9827,5],[9824,6],[8226,7],[9688,8],[9675,9],[9689,10],[9794,11],[9792,12],[9834,13],[9835,14],[9788,15],[9658,16],[9668,17],[8597,18],[8252,19],[182,20],[167,21],[9644,22],[8616,23],[8593,24],[8595,25],[8594,26],[8592,27],[8735,28],[8596,29],[9650,30],[9660,31],[8962,127],[199,128],[252,129],[233,130],[226,131],[228,132],[224,133],[229,134],[231,135],[234,136],[235,137],[232,138],[239,139],[238,140],[236,141],[196,142],[197,143],[201,144],[230,145],[198,146],[244,147],[246,148],[242,149],[251,150],[249,151],[255,152],[214,153],[220,154],[162,155],[163,156],[165,157],[8359,158],[402,159],[225,160],[237,161],[243,162],[250,163],[241,164],[209,165],[170,166],[186,167],[191,168],[8976,169],[172,170],[189,171],[188,172],[161,173],[171,174],[187,175],[9617,176],[9618,177],[9619,178],[9474,179],[9508,180],[9569,181],[9570,182],[9558,183],[9557,184],[9571,185],[9553,186],[9559,187],[9565,188],[9564,189],[9563,190],[9488,191],[9492,192],[9524,193],[9516,194],[9500,195],[9472,196],[9532,197],[9566,198],[9567,199],[9562,200],[9556,201],[9577,202],[9574,203],[9568,204],[9552,205],[9580,206],[9575,207],[9576,208],[9572,209],[9573,210],[9561,211],[9560,212],[9554,213],[9555,214],[9579,215],[9578,216],[9496,217],[9484,218],[9608,219],[9604,220],[9612,221],[9616,222],[9600,223],[945,224],[223,225],[915,226],[960,227],[931,228],[963,229],[181,230],[964,231],[934,232],[920,233],[937,234],[948,235],[8734,236],[966,237],[949,238],[8745,239],[8801,240],[177,241],[8805,242],[8804,243],[8992,244],[8993,245],[247,246],[8776,247],[176,248],[8729,249],[183,250],[8730,251],[8319,252],[178,253],[9632,254],[160,255]],En=new Map(ln),Ci=new Map(ln.map(([b,e])=>[e,b]));function X(b){if(b<128)return b;let e=En.get(b);return e!==void 0?e:b&255}C(X,"unicodeToCp437");var k=class k{static toCharCode(e){if(typeof e=="number")return e;let t=e.charCodeAt(0);return X(t)}static dedent(e){let t=e.split(`
|
|
3
3
|
`);if(t.length>0&&t[0].trim()===""&&t.shift(),t.length>0&&t[t.length-1].trim()===""&&t.pop(),t.length===0)return"";let r=t.filter(o=>o.trim().length>0);if(r.length===0)return"";let n=Math.min(...r.map(o=>{let i=o.match(/^(\s*)/);return i?i[1].length:0}));return t.map(o=>o.slice(n)).join(`
|
|
4
|
-
`)}static encodeString(e){let t="";for(let r=0;r<e.length;r++){let n=e.charCodeAt(r),o=X(n);t+=String.fromCharCode(o)}return t}static char(e,t,r,n=15,o=0){return{type:1,posX:e,posY:t,charCode:k.toCharCode(r),bgColorCode:o,fgColorCode:n}}static text(e,t,r,n=15,o=0){return{type:2,posX:e,posY:t,text:k.encodeString(r),bgColorCode:o,fgColorCode:n}}static textMultiline(e,t,r,n=15,o=0){return{type:23,posX:e,posY:t,text:k.encodeString(k.dedent(r)),bgColorCode:o,fgColorCode:n}}static subFrame(e,t,r,n,o,i=15,s=0){return{type:3,posX:e,posY:t,sizeX:r,sizeY:n,frame:o.map(a=>k.toCharCode(a)),bgColorCode:s,fgColorCode:i}}static subFrameMultiColor(e,t,r,n,o){return{type:4,posX:e,posY:t,sizeX:r,sizeY:n,frame:o.map(i=>({charCode:k.toCharCode(i.charCode),bgColorCode:i.bgColorCode,fgColorCode:i.fgColorCode}))}}static fullFrame(e,t=15,r=0){return{type:5,frame:e.map(n=>k.toCharCode(n)),bgColorCode:r,fgColorCode:t}}static fullFrameMultiColor(e){return{type:6,frame:e.map(t=>({charCode:k.toCharCode(t.charCode),bgColorCode:t.bgColorCode,fgColorCode:t.fgColorCode}))}}static sprite(e,t,r,n=15,o=0){return{type:7,posX:e,posY:t,spriteIndex:r,bgColorCode:o,fgColorCode:n}}static spriteMultiColor(e,t,r){return{type:8,posX:e,posY:t,spriteIndex:r}}static colorMap(e,t,r,n,o){return{type:9,posX:e,posY:t,sizeX:r,sizeY:n,colorData:o}}static rectangle(e,t,r,n,o={}){return{type:10,shapeType:1,shapeData:{posX:e,posY:t,width:r,height:n,filled:o.filled??!0,charCode:k.toCharCode(o.charCode??"\u2588"),bgColorCode:o.bgColor??0,fgColorCode:o.fgColor??15}}}static circle(e,t,r,n={}){return{type:10,shapeType:2,shapeData:{centerX:e,centerY:t,radius:r,filled:n.filled??!0,charCode:k.toCharCode(n.charCode??"\u2588"),bgColorCode:n.bgColor??0,fgColorCode:n.fgColor??15}}}static line(e,t,r,n,o={}){return{type:10,shapeType:3,shapeData:{x1:e,y1:t,x2:r,y2:n,charCode:k.toCharCode(o.charCode??"\u2588"),bgColorCode:o.bgColor??0,fgColorCode:o.fgColor??15}}}static ellipse(e,t,r,n,o={}){return{type:10,shapeType:4,shapeData:{centerX:e,centerY:t,radiusX:r,radiusY:n,filled:o.filled??!0,charCode:k.toCharCode(o.charCode??"\u2588"),bgColorCode:o.bgColor??0,fgColorCode:o.fgColor??15}}}static triangle(e,t,r,n,o,i,s={}){return{type:10,shapeType:5,shapeData:{x1:e,y1:t,x2:r,y2:n,x3:o,y3:i,filled:s.filled??!0,charCode:k.toCharCode(s.charCode??"\u2588"),bgColorCode:s.bgColor??0,fgColorCode:s.fgColor??15}}}static dotCloud(e,t,r=15,n=0){return{type:11,charCode:k.toCharCode(t),bgColorCode:n,fgColorCode:r,positions:e}}static dotCloudMultiColor(e){return{type:12,dots:e.map(t=>({...t,charCode:k.toCharCode(t.charCode)}))}}static bitmask(e,t,r,n,o,i,s=15,a=0,d=!1){let l=r*n,c=Math.ceil(l/8),u=new Uint8Array(c);for(let p=0;p<l;p++)if(o[p]){let m=Math.floor(p/8),g=p%8;u[m]|=1<<g}return{type:17,posX:e,posY:t,sizeX:r,sizeY:n,charCode:k.toCharCode(i),bgColorCode:a,fgColorCode:s,override:d,mask:u}}static bitmask4(e,t,r,n,o,i,s=!1){let a={char:"?",fgColor:15,bgColor:0},d=[i[0]??a,i[1]??a,i[2]??a],l=r*n,c=Math.ceil(l/4),u=new Uint8Array(c);for(let p=0;p<l;p++){let m=o[p]&3,g=Math.floor(p/4),y=p%4*2;u[g]|=m<<y}return{type:18,posX:e,posY:t,sizeX:r,sizeY:n,override:s,variants:[{charCode:k.toCharCode(d[0].char),fgColorCode:d[0].fgColor,bgColorCode:d[0].bgColor},{charCode:k.toCharCode(d[1].char),fgColorCode:d[1].fgColor,bgColorCode:d[1].bgColor},{charCode:k.toCharCode(d[2].char),fgColorCode:d[2].fgColor,bgColorCode:d[2].bgColor}],mask:u}}static bitmask16(e,t,r,n,o,i,s=!1){let a={char:"?",fgColor:15,bgColor:0},d=[];for(let p=0;p<15;p++)d.push(i[p]??a);let l=r*n,c=Math.ceil(l/2),u=new Uint8Array(c);for(let p=0;p<l;p++){let m=o[p]&15,g=Math.floor(p/2),y=p%2*4;u[g]|=m<<y}return{type:24,posX:e,posY:t,sizeX:r,sizeY:n,override:s,variants:d.map(p=>({charCode:k.toCharCode(p.char),fgColorCode:p.fgColor,bgColorCode:p.bgColor})),mask:u}}static spriteCloud(e,t,r=15,n=0){return{type:13,spriteIndex:e,bgColorCode:n,fgColorCode:r,positions:t}}static spriteCloudMultiColor(e,t){return{type:14,spriteIndex:e,positions:t}}static spriteCloudVaried(e){return{type:15,sprites:e}}static spriteCloudVariedMultiColor(e){return{type:16,sprites:e}}static clear(e=32,t=15,r=0){return{type:19,charCode:k.toCharCode(e),bgColorCode:r,fgColorCode:t}}static fillChar(e,t,r,n=15,o=0){return{type:20,patternWidth:e,patternHeight:t,pattern:r.map(i=>k.toCharCode(i)),bgColorCode:o,fgColorCode:n}}static fillSprite(e,t=15,r=0){return{type:21,spriteIndex:e,bgColorCode:r,fgColorCode:t}}static fillSpriteMultiColor(e){return{type:22,spriteIndex:e}}static boxWithBorder(e,t,r,n,o,i){return[this.rectangle(e+1,t+1,r-2,n-2,{charCode:i.charCode??"\u2588",bgColor:i.bgColor??0,fgColor:i.fgColor??8,filled:!0}),this.rectangle(e,t,r,n,{charCode:o.charCode??"\u2588",bgColor:o.bgColor??0,fgColor:o.fgColor??15,filled:!1})]}static grid(e,t,r,n,o,i,s={}){let a=[];for(let d=0;d<=o;d++)for(let l=0;l<=i;l++)a.push({posX:e+l*r,posY:t+d*n});return this.dotCloud(a,s.charCode??"+",s.fgColor??15,s.bgColor??0)}static polyline(e,t="*",r=15,n=0){return{type:25,charCode:k.toCharCode(t),fgColorCode:r,bgColorCode:n,points:e.map(o=>({x:o.x&255,y:o.y&255}))}}static polylineFromCoords(e,t="*",r=15,n=0){let o=[];for(let i=0;i<e.length-1;i+=2)o.push({x:e[i],y:e[i+1]});return this.polyline(o,t,r,n)}static polygon(e,t="*",r=15,n=0){if(e.length<2)return this.polyline(e,t,r,n);let o=[...e,e[0]];return this.polyline(o,t,r,n)}};C(k,"OrderBuilder");var Ae=k;rr();var Bt=class Bt{constructor(e=65536,t=!1){h(this,"charCodes");h(this,"fgColors");h(this,"bgColors");h(this,"size");h(this,"is16bit");this.size=e,this.is16bit=t,this.charCodes=t?new Uint16Array(e):new Uint8Array(e),this.fgColors=new Uint8Array(e),this.bgColors=new Uint8Array(e),this.clear()}clear(){this.charCodes.fill(0),this.fgColors.fill(255),this.bgColors.fill(255)}clearWithColor(e,t,r){let n=this.is16bit?e:e&255;this.charCodes.fill(n),this.fgColors.fill(t),this.bgColors.fill(r)}set(e,t,r,n){this.charCodes[e]=this.is16bit?t:t&255,this.fgColors[e]=r,this.bgColors[e]=n}fillCharsUniform(e,t,r,n){let o=this.is16bit?t:t&255;for(let i=0;i<e.length;i++){let s=e[i];this.charCodes[s]=o,this.fgColors[s]=r,this.bgColors[s]=n}}get(e){return{charCode:this.charCodes[e],fgColorCode:this.fgColors[e],bgColorCode:this.bgColors[e]}}setCharOnly(e,t){this.charCodes[e]=this.is16bit?t:t&255}setColorsOnly(e,t,r){this.fgColors[e]=t,this.bgColors[e]=r}getCharCode(e){return this.charCodes[e]}getFgColorCode(e){return this.fgColors[e]}getBgColorCode(e){return this.bgColors[e]}getRawCharCodes(){return this.charCodes}getRawFgColors(){return this.fgColors}getRawBgColors(){return this.bgColors}getSize(){return this.size}is16BitMode(){return this.is16bit}};C(Bt,"CellBuffer");var N=Bt,zt=class zt{constructor(e){h(this,"data");h(this,"size");this.size=e,this.data=new Uint16Array(e)}clear(){this.data.fill(0)}set(e,t){this.data[e]=t}get(e){return this.data[e]}getRawData(){return this.data}getSize(){return this.size}};C(zt,"CharCodeBuffer");var ge=zt;var Tt=class Tt{constructor(){h(this,"unicolorSprites",new Map);h(this,"multicolorSprites",new Map)}loadUnicolorSprites(e){if("loadType"in e){this.loadUnicolorSpritesFromPacket(e);return}for(let t of e){let{spriteId:r,sizeX:n,sizeY:o,data:i}=t,s=new ge(n*o);if(typeof i=="string"){let d=i.replace(/\n/g,"");for(let l=0;l<Math.min(d.length,n*o);l++)s.set(l,X(d.charCodeAt(l)))}else if(Array.isArray(i)&&i.length>0&&typeof i[0]=="string"){let d=i;for(let l=0;l<Math.min(d.length,o);l++){let c=d[l];if(c)for(let u=0;u<Math.min(c.length,n);u++)s.set(l*n+u,X(c.charCodeAt(u)))}}else{let d=i;for(let l=0;l<Math.min(d.length,n*o);l++)s.set(l,d[l])}let a={id:r,sizeX:n,sizeY:o,data:s};this.unicolorSprites.set(a.id,a)}}loadUnicolorSpritesFromPacket(e){for(let t of e.sprites){let r=new ge(t.sizeX*t.sizeY);for(let o=0;o<t.data.length;o++)r.set(o,t.data[o]);let n={id:t.spriteId,sizeX:t.sizeX,sizeY:t.sizeY,data:r};this.unicolorSprites.set(n.id,n)}}loadMulticolorSprites(e){if("loadType"in e){this.loadMulticolorSpritesFromPacket(e);return}for(let t of e){let{spriteId:r,sizeX:n,sizeY:o,data:i}=t,s=new N(n*o);for(let d=0;d<Math.min(i.length,n*o);d++){let l=i[d],c=typeof l.charCode=="string"?X(l.charCode.charCodeAt(0)):l.charCode;s.set(d,c,l.fgColorId,l.bgColorId)}let a={id:r,sizeX:n,sizeY:o,data:s};this.multicolorSprites.set(a.id,a)}}loadMulticolorSpritesFromPacket(e){for(let t of e.sprites){let r=new N(t.sizeX*t.sizeY);for(let o=0;o<t.data.length;o++){let i=t.data[o];r.set(o,i.charCode,i.fgColorId,i.bgColorId)}let n={id:t.spriteId,sizeX:t.sizeX,sizeY:t.sizeY,data:r};this.multicolorSprites.set(n.id,n)}}getUnicolorSprite(e){return this.unicolorSprites.get(e)}getMulticolorSprite(e){return this.multicolorSprites.get(e)}hasUnicolorSprite(e){return this.unicolorSprites.has(e)}hasMulticolorSprite(e){return this.multicolorSprites.has(e)}unloadUnicolorSprite(e){return this.unicolorSprites.delete(e)}unloadMulticolorSprite(e){return this.multicolorSprites.delete(e)}clearUnicolorSprites(){this.unicolorSprites.clear()}clearMulticolorSprites(){this.multicolorSprites.clear()}clearAll(){this.unicolorSprites.clear(),this.multicolorSprites.clear()}getUnicolorSpriteCount(){return this.unicolorSprites.size}getMulticolorSpriteCount(){return this.multicolorSprites.size}getTotalSpriteCount(){return this.unicolorSprites.size+this.multicolorSprites.size}};C(Tt,"SpriteRegistry");var le=Tt;var Ce=require("@utsp/types");var Lt=class Lt{constructor(e=0,t=60,r=40){h(this,"id");h(this,"origin");h(this,"size");h(this,"commandSink");h(this,"previousOrigin",new Ce.Vector2(0,0));h(this,"previousSize",new Ce.Vector2(0,0));h(this,"renderPasses");if(e<0||e>255)throw new Error(`Display ID must be between 0 and 255, got ${e}`);if(t<1||t>256)throw new Error(`Display sizeX must be between 1 and 256, got ${t}`);if(r<1||r>256)throw new Error(`Display sizeY must be between 1 and 256, got ${r}`);this.id=e,this.origin=new Ce.Vector2(0,0),this.size=new Ce.Vector2(t,r)}getId(){return this.id}setCommandSink(e){this.commandSink=e}getOrigin(){return this.origin}setOrigin(e){this.origin=e}moveOrigin(e,t){this.origin.x+=e,this.origin.y+=t}hasOriginChanged(){return this.origin.x!==this.previousOrigin.x||this.origin.y!==this.previousOrigin.y}hasSizeChanged(){return this.size.x!==this.previousSize.x||this.size.y!==this.previousSize.y}hasChanged(){return this.hasOriginChanged()||this.hasSizeChanged()}resetChangeTracking(){this.previousOrigin.x=this.origin.x,this.previousOrigin.y=this.origin.y,this.previousSize.x=this.size.x,this.previousSize.y=this.size.y}getSize(){return this.size}setSize(e){if(e.x<1||e.x>256)throw new Error(`Display sizeX must be between 1 and 256, got ${e.x}`);if(e.y<1||e.y>256)throw new Error(`Display sizeY must be between 1 and 256, got ${e.y}`);this.size=e}getSink(){if(!this.commandSink)throw new Error("Display is not attached to a User");return this.commandSink}setPostProcess(e){this.getSink().setPostProcess(this.id,e)}setScanlinesEnabled(e){this.getSink().setScanlinesEnabled(this.id,e)}setScanlinesOpacity(e){this.getSink().setScanlinesOpacity(this.id,e)}setScanlinesPattern(e){this.getSink().setScanlinesPattern(this.id,e)}setAmbientEffect(e){this.getSink().setAmbientEffect(this.id,e)}setAmbientEffectEnabled(e){this.getSink().setAmbientEffectEnabled(this.id,e)}setAmbientEffectBlur(e){this.getSink().setAmbientEffectBlur(this.id,e)}setAmbientEffectScale(e){this.getSink().setAmbientEffectScale(this.id,e)}isAmbientEffectEnabled(){return this.getSink().isAmbientEffectEnabled(this.id)}getAmbientEffectConfig(){return this.getSink().getAmbientEffectConfig(this.id)}getPostProcessConfig(){return this.getSink().getPostProcessConfig(this.id)}setScalingMode(e){this.getSink().setScalingMode(this.id,e)}getScalingMode(){return this.getSink().getScalingMode(this.id)}setCellSize(e,t){this.getSink().setCellSize(this.id,e,t)}getCellSize(){return this.getSink().getCellSize(this.id)}setGrid(e){this.getSink().setGrid(this.id,e)}setGridEnabled(e){this.getSink().setGridEnabled(this.id,e)}isGridEnabled(){return this.getSink().isGridEnabled(this.id)}getGridConfig(){return this.getSink().getGridConfig(this.id)}switchPalette(e){this.getSink().switchPalette(this.id,e)}getCurrentPaletteSlotId(){return this.getSink().getCurrentPaletteSlotId(this.id)}getRenderPasses(){return this.renderPasses}setRenderPasses(e){if(!e||e.length===0){this.renderPasses=void 0;return}if(e.length>4)throw new Error(`renderPasses supports up to 4 entries, got ${e.length}`);this.renderPasses=e.map(t=>this.normalizePass(t))}normalizePass(e){let t=Math.max(0,Math.min(255,e.zMin)),r=Math.max(0,Math.min(255,e.zMax));if(t>r){let n=t;t=r,r=n}return{id:e.id,zMin:t,zMax:r,enabled:e.enabled!==!1}}getDebugInfo(){return{id:this.id,origin:{x:this.origin.x,y:this.origin.y},size:{x:this.size.x,y:this.size.y},renderPasses:this.renderPasses}}};C(Lt,"Display");var Pe=Lt;var cn=require("@utsp/types");var Ft=255,H=class H{constructor(e,t,r,n,o){h(this,"id",0);h(this,"name");h(this,"isMacroLayer");h(this,"origin");h(this,"orders",[]);h(this,"zOrder",0);h(this,"data");h(this,"width");h(this,"height");h(this,"mustBeReliable",!1);h(this,"spriteRegistry");h(this,"mode","server");h(this,"charCodeMode");h(this,"previousOrigin");h(this,"previousZOrder");h(this,"enabled",!0);h(this,"useSetMode",!1);h(this,"needsCommit",!1);if(r<1||r>256||n<1||n>256)throw new Error(`Layer size must be 1-256, got ${r}\xD7${n}`);let i={};typeof o=="boolean"?i={mustBeReliable:o}:o&&(i=o),this.origin=e,this.zOrder=t,this.name=i.name,this.width=r,this.height=n,this.mustBeReliable=i.mustBeReliable??!1,this.isMacroLayer=i.isMacroLayer??!1,this.charCodeMode=i.charCodeMode??"8bit";let s=this.charCodeMode==="16bit";this.data=new N(r*n,s),this.previousOrigin=new cn.Vector2(e.x,e.y),this.previousZOrder=t}getIsMacroLayer(){return this.isMacroLayer}getCharCodeMode(){return this.charCodeMode}setMode(e){this.mode=e}setSpriteRegistry(e){this.spriteRegistry=e}getOrders(){return this.orders}addOrders(e){this.orders.push(...e),this.useSetMode=!1,(this.mode==="client"||this.mode==="standalone")&&H.rasterizer.rasterizeOrders(this.orders,this.data,this.width,this.height,this.spriteRegistry)}addTemporaryOrders(e){(this.mode==="client"||this.mode==="standalone")&&H.rasterizer.rasterizeOrders(e,this.data,this.width,this.height,this.spriteRegistry)}setOrders(e){this.orders=e,this.useSetMode=!0,(this.mode==="client"||this.mode==="standalone")&&H.rasterizer.rasterizeOrders(e,this.data,this.width,this.height,this.spriteRegistry)}clearOrders(){this.orders=[],(this.mode==="client"||this.mode==="standalone")&&H.rasterizer.clearBuffer(this.data)}getOrigin(){return this.origin}setOrigin(e){this.origin=e}getZOrder(){return this.zOrder}setZOrder(e){this.zOrder=e}getId(){return this.id}getName(){return this.name}setName(e){let t=typeof e=="string"?e.trim():void 0;this.name=t&&t.length>0?t:void 0}getDebugInfo(){return{id:this.id,name:this.name,z:this.zOrder,mustBeReliable:this.mustBeReliable,charCodeMode:this.charCodeMode,width:this.width,height:this.height,origin:{x:this.origin.x,y:this.origin.y},enabled:this.enabled,useSetMode:this.useSetMode,needsCommit:this.needsCommit,ordersCount:this.orders.length}}setIdInternal(e){this.id=e}getData(){return this.data}getWidth(){return this.width}getHeight(){return this.height}getCellAt(e,t){return e<0||e>=this.width||t<0||t>=this.height?null:this.data.get(t*this.width+e)}setMustBeReliable(e){this.mustBeReliable=e}getMustBeReliable(){return this.mustBeReliable}setEnabled(e){this.enabled=e}isEnabled(){return this.enabled}hasOriginChanged(){return this.origin.x!==this.previousOrigin.x||this.origin.y!==this.previousOrigin.y}hasZOrderChanged(){return this.zOrder!==this.previousZOrder}calculateUpdateFlags(){if(!this.enabled)return 0;let e=1;return this.useSetMode&&(e|=2),this.hasOriginChanged()&&(e|=4),this.hasZOrderChanged()&&(e|=8),(this.orders.length>0||this.needsCommit&&this.useSetMode)&&(e|=4),e}resetChangeTracking(){this.previousOrigin.x=this.origin.x,this.previousOrigin.y=this.origin.y,this.previousZOrder=this.zOrder}commit(){this.orders.length>Ft&&(console.error(`[UTSP] \u26A0\uFE0F CRITICAL: Layer ${this.id} has ${this.orders.length} orders, but max is ${Ft}!
|
|
4
|
+
`)}static encodeString(e){let t="";for(let r=0;r<e.length;r++){let n=e.charCodeAt(r),o=X(n);t+=String.fromCharCode(o)}return t}static char(e,t,r,n=15,o=0){return{type:1,posX:e,posY:t,charCode:k.toCharCode(r),bgColorCode:o,fgColorCode:n}}static text(e,t,r,n=15,o=0){return{type:2,posX:e,posY:t,text:k.encodeString(r),bgColorCode:o,fgColorCode:n}}static textMultiline(e,t,r,n=15,o=0){return{type:23,posX:e,posY:t,text:k.encodeString(k.dedent(r)),bgColorCode:o,fgColorCode:n}}static subFrame(e,t,r,n,o,i=15,s=0){return{type:3,posX:e,posY:t,sizeX:r,sizeY:n,frame:o.map(a=>k.toCharCode(a)),bgColorCode:s,fgColorCode:i}}static subFrameMultiColor(e,t,r,n,o){return{type:4,posX:e,posY:t,sizeX:r,sizeY:n,frame:o.map(i=>({charCode:k.toCharCode(i.charCode),bgColorCode:i.bgColorCode,fgColorCode:i.fgColorCode}))}}static fullFrame(e,t=15,r=0){return{type:5,frame:e.map(n=>k.toCharCode(n)),bgColorCode:r,fgColorCode:t}}static fullFrameMultiColor(e){return{type:6,frame:e.map(t=>({charCode:k.toCharCode(t.charCode),bgColorCode:t.bgColorCode,fgColorCode:t.fgColorCode}))}}static sprite(e,t,r,n=15,o=0){return{type:7,posX:e,posY:t,spriteIndex:r,bgColorCode:o,fgColorCode:n}}static spriteMultiColor(e,t,r){return{type:8,posX:e,posY:t,spriteIndex:r}}static colorMap(e,t,r,n,o){return{type:9,posX:e,posY:t,sizeX:r,sizeY:n,colorData:o}}static rectangle(e,t,r,n,o={}){return{type:10,shapeType:1,shapeData:{posX:e,posY:t,width:r,height:n,filled:o.filled??!0,charCode:k.toCharCode(o.charCode??"\u2588"),bgColorCode:o.bgColor??0,fgColorCode:o.fgColor??15}}}static circle(e,t,r,n={}){return{type:10,shapeType:2,shapeData:{centerX:e,centerY:t,radius:r,filled:n.filled??!0,charCode:k.toCharCode(n.charCode??"\u2588"),bgColorCode:n.bgColor??0,fgColorCode:n.fgColor??15}}}static line(e,t,r,n,o={}){return{type:10,shapeType:3,shapeData:{x1:e,y1:t,x2:r,y2:n,charCode:k.toCharCode(o.charCode??"\u2588"),bgColorCode:o.bgColor??0,fgColorCode:o.fgColor??15}}}static ellipse(e,t,r,n,o={}){return{type:10,shapeType:4,shapeData:{centerX:e,centerY:t,radiusX:r,radiusY:n,filled:o.filled??!0,charCode:k.toCharCode(o.charCode??"\u2588"),bgColorCode:o.bgColor??0,fgColorCode:o.fgColor??15}}}static triangle(e,t,r,n,o,i,s={}){return{type:10,shapeType:5,shapeData:{x1:e,y1:t,x2:r,y2:n,x3:o,y3:i,filled:s.filled??!0,charCode:k.toCharCode(s.charCode??"\u2588"),bgColorCode:s.bgColor??0,fgColorCode:s.fgColor??15}}}static dotCloud(e,t,r=15,n=0){return{type:11,charCode:k.toCharCode(t),bgColorCode:n,fgColorCode:r,positions:e}}static dotCloudMultiColor(e){return{type:12,dots:e.map(t=>({...t,charCode:k.toCharCode(t.charCode)}))}}static bitmask(e,t,r,n,o,i,s=15,a=0,d=!1){let l=r*n,c=Math.ceil(l/8),u=new Uint8Array(c);for(let p=0;p<l;p++)if(o[p]){let m=Math.floor(p/8),g=p%8;u[m]|=1<<g}return{type:17,posX:e,posY:t,sizeX:r,sizeY:n,charCode:k.toCharCode(i),bgColorCode:a,fgColorCode:s,override:d,mask:u}}static bitmask4(e,t,r,n,o,i,s=!1){let a={char:"?",fgColor:15,bgColor:0},d=[i[0]??a,i[1]??a,i[2]??a],l=r*n,c=Math.ceil(l/4),u=new Uint8Array(c);for(let p=0;p<l;p++){let m=o[p]&3,g=Math.floor(p/4),y=p%4*2;u[g]|=m<<y}return{type:18,posX:e,posY:t,sizeX:r,sizeY:n,override:s,variants:[{charCode:k.toCharCode(d[0].char),fgColorCode:d[0].fgColor,bgColorCode:d[0].bgColor},{charCode:k.toCharCode(d[1].char),fgColorCode:d[1].fgColor,bgColorCode:d[1].bgColor},{charCode:k.toCharCode(d[2].char),fgColorCode:d[2].fgColor,bgColorCode:d[2].bgColor}],mask:u}}static bitmask16(e,t,r,n,o,i,s=!1){let a={char:"?",fgColor:15,bgColor:0},d=[];for(let p=0;p<15;p++)d.push(i[p]??a);let l=r*n,c=Math.ceil(l/2),u=new Uint8Array(c);for(let p=0;p<l;p++){let m=o[p]&15,g=Math.floor(p/2),y=p%2*4;u[g]|=m<<y}return{type:24,posX:e,posY:t,sizeX:r,sizeY:n,override:s,variants:d.map(p=>({charCode:k.toCharCode(p.char),fgColorCode:p.fgColor,bgColorCode:p.bgColor})),mask:u}}static spriteCloud(e,t,r=15,n=0){return{type:13,spriteIndex:e,bgColorCode:n,fgColorCode:r,positions:t}}static spriteCloudMultiColor(e,t){return{type:14,spriteIndex:e,positions:t}}static spriteCloudVaried(e){return{type:15,sprites:e}}static spriteCloudVariedMultiColor(e){return{type:16,sprites:e}}static fill(e=32,t=15,r=0){return{type:19,charCode:k.toCharCode(e),bgColorCode:r,fgColorCode:t}}static fillChar(e,t,r,n=15,o=0){return{type:20,patternWidth:e,patternHeight:t,pattern:r.map(i=>k.toCharCode(i)),bgColorCode:o,fgColorCode:n}}static fillSprite(e,t=15,r=0){return{type:21,spriteIndex:e,bgColorCode:r,fgColorCode:t}}static fillSpriteMultiColor(e){return{type:22,spriteIndex:e}}static boxWithBorder(e,t,r,n,o,i){return[this.rectangle(e+1,t+1,r-2,n-2,{charCode:i.charCode??"\u2588",bgColor:i.bgColor??0,fgColor:i.fgColor??8,filled:!0}),this.rectangle(e,t,r,n,{charCode:o.charCode??"\u2588",bgColor:o.bgColor??0,fgColor:o.fgColor??15,filled:!1})]}static grid(e,t,r,n,o,i,s={}){let a=[];for(let d=0;d<=o;d++)for(let l=0;l<=i;l++)a.push({posX:e+l*r,posY:t+d*n});return this.dotCloud(a,s.charCode??"+",s.fgColor??15,s.bgColor??0)}static polyline(e,t="*",r=15,n=0){return{type:25,charCode:k.toCharCode(t),fgColorCode:r,bgColorCode:n,points:e.map(o=>({x:o.x&255,y:o.y&255}))}}static polylineFromCoords(e,t="*",r=15,n=0){let o=[];for(let i=0;i<e.length-1;i+=2)o.push({x:e[i],y:e[i+1]});return this.polyline(o,t,r,n)}static polygon(e,t="*",r=15,n=0){if(e.length<2)return this.polyline(e,t,r,n);let o=[...e,e[0]];return this.polyline(o,t,r,n)}};C(k,"OrderBuilder");var Ae=k;rr();var Bt=class Bt{constructor(e=65536,t=!1){h(this,"charCodes");h(this,"fgColors");h(this,"bgColors");h(this,"size");h(this,"is16bit");this.size=e,this.is16bit=t,this.charCodes=t?new Uint16Array(e):new Uint8Array(e),this.fgColors=new Uint8Array(e),this.bgColors=new Uint8Array(e),this.clear()}clear(){this.charCodes.fill(0),this.fgColors.fill(255),this.bgColors.fill(255)}clearWithColor(e,t,r){let n=this.is16bit?e:e&255;this.charCodes.fill(n),this.fgColors.fill(t),this.bgColors.fill(r)}set(e,t,r,n){this.charCodes[e]=this.is16bit?t:t&255,this.fgColors[e]=r,this.bgColors[e]=n}fillCharsUniform(e,t,r,n){let o=this.is16bit?t:t&255;for(let i=0;i<e.length;i++){let s=e[i];this.charCodes[s]=o,this.fgColors[s]=r,this.bgColors[s]=n}}get(e){return{charCode:this.charCodes[e],fgColorCode:this.fgColors[e],bgColorCode:this.bgColors[e]}}setCharOnly(e,t){this.charCodes[e]=this.is16bit?t:t&255}setColorsOnly(e,t,r){this.fgColors[e]=t,this.bgColors[e]=r}getCharCode(e){return this.charCodes[e]}getFgColorCode(e){return this.fgColors[e]}getBgColorCode(e){return this.bgColors[e]}getRawCharCodes(){return this.charCodes}getRawFgColors(){return this.fgColors}getRawBgColors(){return this.bgColors}getSize(){return this.size}is16BitMode(){return this.is16bit}};C(Bt,"CellBuffer");var N=Bt,zt=class zt{constructor(e){h(this,"data");h(this,"size");this.size=e,this.data=new Uint16Array(e)}clear(){this.data.fill(0)}set(e,t){this.data[e]=t}get(e){return this.data[e]}getRawData(){return this.data}getSize(){return this.size}};C(zt,"CharCodeBuffer");var ge=zt;var Tt=class Tt{constructor(){h(this,"unicolorSprites",new Map);h(this,"multicolorSprites",new Map)}loadUnicolorSprites(e){if("loadType"in e){this.loadUnicolorSpritesFromPacket(e);return}for(let t of e){let{spriteId:r,sizeX:n,sizeY:o,data:i}=t,s=new ge(n*o);if(typeof i=="string"){let d=i.replace(/\n/g,"");for(let l=0;l<Math.min(d.length,n*o);l++)s.set(l,X(d.charCodeAt(l)))}else if(Array.isArray(i)&&i.length>0&&typeof i[0]=="string"){let d=i;for(let l=0;l<Math.min(d.length,o);l++){let c=d[l];if(c)for(let u=0;u<Math.min(c.length,n);u++)s.set(l*n+u,X(c.charCodeAt(u)))}}else{let d=i;for(let l=0;l<Math.min(d.length,n*o);l++)s.set(l,d[l])}let a={id:r,sizeX:n,sizeY:o,data:s};this.unicolorSprites.set(a.id,a)}}loadUnicolorSpritesFromPacket(e){for(let t of e.sprites){let r=new ge(t.sizeX*t.sizeY);for(let o=0;o<t.data.length;o++)r.set(o,t.data[o]);let n={id:t.spriteId,sizeX:t.sizeX,sizeY:t.sizeY,data:r};this.unicolorSprites.set(n.id,n)}}loadMulticolorSprites(e){if("loadType"in e){this.loadMulticolorSpritesFromPacket(e);return}for(let t of e){let{spriteId:r,sizeX:n,sizeY:o,data:i}=t,s=new N(n*o);for(let d=0;d<Math.min(i.length,n*o);d++){let l=i[d],c=typeof l.charCode=="string"?X(l.charCode.charCodeAt(0)):l.charCode;s.set(d,c,l.fgColorId,l.bgColorId)}let a={id:r,sizeX:n,sizeY:o,data:s};this.multicolorSprites.set(a.id,a)}}loadMulticolorSpritesFromPacket(e){for(let t of e.sprites){let r=new N(t.sizeX*t.sizeY);for(let o=0;o<t.data.length;o++){let i=t.data[o];r.set(o,i.charCode,i.fgColorId,i.bgColorId)}let n={id:t.spriteId,sizeX:t.sizeX,sizeY:t.sizeY,data:r};this.multicolorSprites.set(n.id,n)}}getUnicolorSprite(e){return this.unicolorSprites.get(e)}getMulticolorSprite(e){return this.multicolorSprites.get(e)}hasUnicolorSprite(e){return this.unicolorSprites.has(e)}hasMulticolorSprite(e){return this.multicolorSprites.has(e)}unloadUnicolorSprite(e){return this.unicolorSprites.delete(e)}unloadMulticolorSprite(e){return this.multicolorSprites.delete(e)}clearUnicolorSprites(){this.unicolorSprites.clear()}clearMulticolorSprites(){this.multicolorSprites.clear()}clearAll(){this.unicolorSprites.clear(),this.multicolorSprites.clear()}getUnicolorSpriteCount(){return this.unicolorSprites.size}getMulticolorSpriteCount(){return this.multicolorSprites.size}getTotalSpriteCount(){return this.unicolorSprites.size+this.multicolorSprites.size}};C(Tt,"SpriteRegistry");var le=Tt;var Ce=require("@utsp/types");var Lt=class Lt{constructor(e=0,t=60,r=40){h(this,"id");h(this,"origin");h(this,"size");h(this,"commandSink");h(this,"previousOrigin",new Ce.Vector2(0,0));h(this,"previousSize",new Ce.Vector2(0,0));h(this,"renderPasses");if(e<0||e>255)throw new Error(`Display ID must be between 0 and 255, got ${e}`);if(t<1||t>256)throw new Error(`Display sizeX must be between 1 and 256, got ${t}`);if(r<1||r>256)throw new Error(`Display sizeY must be between 1 and 256, got ${r}`);this.id=e,this.origin=new Ce.Vector2(0,0),this.size=new Ce.Vector2(t,r)}getId(){return this.id}setCommandSink(e){this.commandSink=e}getOrigin(){return this.origin}setOrigin(e){this.origin=e}moveOrigin(e,t){this.origin.x+=e,this.origin.y+=t}hasOriginChanged(){return this.origin.x!==this.previousOrigin.x||this.origin.y!==this.previousOrigin.y}hasSizeChanged(){return this.size.x!==this.previousSize.x||this.size.y!==this.previousSize.y}hasChanged(){return this.hasOriginChanged()||this.hasSizeChanged()}resetChangeTracking(){this.previousOrigin.x=this.origin.x,this.previousOrigin.y=this.origin.y,this.previousSize.x=this.size.x,this.previousSize.y=this.size.y}getSize(){return this.size}setSize(e){if(e.x<1||e.x>256)throw new Error(`Display sizeX must be between 1 and 256, got ${e.x}`);if(e.y<1||e.y>256)throw new Error(`Display sizeY must be between 1 and 256, got ${e.y}`);this.size=e}getSink(){if(!this.commandSink)throw new Error("Display is not attached to a User");return this.commandSink}setPostProcess(e){this.getSink().setPostProcess(this.id,e)}setScanlinesEnabled(e){this.getSink().setScanlinesEnabled(this.id,e)}setScanlinesOpacity(e){this.getSink().setScanlinesOpacity(this.id,e)}setScanlinesPattern(e){this.getSink().setScanlinesPattern(this.id,e)}setAmbientEffect(e){this.getSink().setAmbientEffect(this.id,e)}setAmbientEffectEnabled(e){this.getSink().setAmbientEffectEnabled(this.id,e)}setAmbientEffectBlur(e){this.getSink().setAmbientEffectBlur(this.id,e)}setAmbientEffectScale(e){this.getSink().setAmbientEffectScale(this.id,e)}isAmbientEffectEnabled(){return this.getSink().isAmbientEffectEnabled(this.id)}getAmbientEffectConfig(){return this.getSink().getAmbientEffectConfig(this.id)}getPostProcessConfig(){return this.getSink().getPostProcessConfig(this.id)}setScalingMode(e){this.getSink().setScalingMode(this.id,e)}getScalingMode(){return this.getSink().getScalingMode(this.id)}setCellSize(e,t){this.getSink().setCellSize(this.id,e,t)}getCellSize(){return this.getSink().getCellSize(this.id)}setGrid(e){this.getSink().setGrid(this.id,e)}setGridEnabled(e){this.getSink().setGridEnabled(this.id,e)}isGridEnabled(){return this.getSink().isGridEnabled(this.id)}getGridConfig(){return this.getSink().getGridConfig(this.id)}switchPalette(e){this.getSink().switchPalette(this.id,e)}getCurrentPaletteSlotId(){return this.getSink().getCurrentPaletteSlotId(this.id)}getRenderPasses(){return this.renderPasses}setRenderPasses(e){if(!e||e.length===0){this.renderPasses=void 0;return}if(e.length>4)throw new Error(`renderPasses supports up to 4 entries, got ${e.length}`);this.renderPasses=e.map(t=>this.normalizePass(t))}normalizePass(e){let t=Math.max(0,Math.min(255,e.zMin)),r=Math.max(0,Math.min(255,e.zMax));if(t>r){let n=t;t=r,r=n}return{id:e.id,zMin:t,zMax:r,enabled:e.enabled!==!1}}getDebugInfo(){return{id:this.id,origin:{x:this.origin.x,y:this.origin.y},size:{x:this.size.x,y:this.size.y},renderPasses:this.renderPasses}}};C(Lt,"Display");var Pe=Lt;var cn=require("@utsp/types");var Ft=255,H=class H{constructor(e,t,r,n,o){h(this,"id",0);h(this,"name");h(this,"isMacroLayer");h(this,"origin");h(this,"orders",[]);h(this,"zOrder",0);h(this,"data");h(this,"width");h(this,"height");h(this,"mustBeReliable",!1);h(this,"spriteRegistry");h(this,"mode","server");h(this,"charCodeMode");h(this,"previousOrigin");h(this,"previousZOrder");h(this,"enabled",!0);h(this,"useSetMode",!1);h(this,"needsCommit",!1);if(r<1||r>256||n<1||n>256)throw new Error(`Layer size must be 1-256, got ${r}\xD7${n}`);let i={};typeof o=="boolean"?i={mustBeReliable:o}:o&&(i=o),this.origin=e,this.zOrder=t,this.name=i.name,this.width=r,this.height=n,this.mustBeReliable=i.mustBeReliable??!1,this.isMacroLayer=i.isMacroLayer??!1,this.charCodeMode=i.charCodeMode??"8bit";let s=this.charCodeMode==="16bit";this.data=new N(r*n,s),this.previousOrigin=new cn.Vector2(e.x,e.y),this.previousZOrder=t}getIsMacroLayer(){return this.isMacroLayer}getCharCodeMode(){return this.charCodeMode}setMode(e){this.mode=e}setSpriteRegistry(e){this.spriteRegistry=e}getOrders(){return this.orders}addOrders(e){this.orders.push(...e),this.useSetMode=!1,(this.mode==="client"||this.mode==="standalone")&&H.rasterizer.rasterizeOrders(this.orders,this.data,this.width,this.height,this.spriteRegistry)}addTemporaryOrders(e){(this.mode==="client"||this.mode==="standalone")&&H.rasterizer.rasterizeOrders(e,this.data,this.width,this.height,this.spriteRegistry)}setOrders(e){this.orders=e,this.useSetMode=!0,(this.mode==="client"||this.mode==="standalone")&&H.rasterizer.rasterizeOrders(e,this.data,this.width,this.height,this.spriteRegistry)}clearOrders(){this.orders=[],(this.mode==="client"||this.mode==="standalone")&&H.rasterizer.clearBuffer(this.data)}getOrigin(){return this.origin}setOrigin(e){this.origin=e}getZOrder(){return this.zOrder}setZOrder(e){this.zOrder=e}getId(){return this.id}getName(){return this.name}setName(e){let t=typeof e=="string"?e.trim():void 0;this.name=t&&t.length>0?t:void 0}getDebugInfo(){return{id:this.id,name:this.name,z:this.zOrder,mustBeReliable:this.mustBeReliable,charCodeMode:this.charCodeMode,width:this.width,height:this.height,origin:{x:this.origin.x,y:this.origin.y},enabled:this.enabled,useSetMode:this.useSetMode,needsCommit:this.needsCommit,ordersCount:this.orders.length}}setIdInternal(e){this.id=e}getData(){return this.data}getWidth(){return this.width}getHeight(){return this.height}getCellAt(e,t){return e<0||e>=this.width||t<0||t>=this.height?null:this.data.get(t*this.width+e)}setMustBeReliable(e){this.mustBeReliable=e}getMustBeReliable(){return this.mustBeReliable}setEnabled(e){this.enabled=e}isEnabled(){return this.enabled}hasOriginChanged(){return this.origin.x!==this.previousOrigin.x||this.origin.y!==this.previousOrigin.y}hasZOrderChanged(){return this.zOrder!==this.previousZOrder}calculateUpdateFlags(){if(!this.enabled)return 0;let e=1;return this.useSetMode&&(e|=2),this.hasOriginChanged()&&(e|=4),this.hasZOrderChanged()&&(e|=8),(this.orders.length>0||this.needsCommit&&this.useSetMode)&&(e|=4),e}resetChangeTracking(){this.previousOrigin.x=this.origin.x,this.previousOrigin.y=this.origin.y,this.previousZOrder=this.zOrder}commit(){this.orders.length>Ft&&(console.error(`[UTSP] \u26A0\uFE0F CRITICAL: Layer ${this.id} has ${this.orders.length} orders, but max is ${Ft}!
|
|
5
5
|
This WILL cause packet corruption and decoding errors.
|
|
6
6
|
Solution: Split into multiple layers or reduce order count.
|
|
7
7
|
Orders breakdown: ${this.getOrdersBreakdown()}`),this.orders=this.orders.slice(0,Ft)),this.needsCommit=!0}getOrdersBreakdown(){let e=new Map;for(let t of this.orders){let r=t.type??"unknown";e.set(r,(e.get(r)??0)+1)}return Array.from(e.entries()).map(([t,r])=>`0x${t.toString(16)}:${r}`).join(", ")}getNeedsCommit(){return this.needsCommit}resetCommit(){this.needsCommit=!1}};C(H,"Layer"),h(H,"rasterizer",new ae);var ce=H;function ue(b,e){b.setIdInternal(e)}C(ue,"assignLayerId");var Dt=class Dt{constructor(){h(this,"macros",new Map);h(this,"macroNameToId",new Map);h(this,"nextMacroId",0);h(this,"instances",new Map);h(this,"instanceNameToId",new Map);h(this,"nextInstanceId",0);h(this,"layerNameToId",new Map);h(this,"pendingOrders",[])}registerMacro(e){let t=e.id;if(this.macroNameToId.has(t)){let o=this.macroNameToId.get(t);return this.macros.set(o,{macroId:o,name:t,template:e}),o}let r=this.nextMacroId++;if(r>255)throw new Error("Maximum macro count (256) exceeded");let n={macroId:r,name:t,template:e};return this.macros.set(r,n),this.macroNameToId.set(t,r),r}getMacroByName(e){let t=this.macroNameToId.get(e);return t!==void 0?this.macros.get(t):void 0}getMacroById(e){return this.macros.get(e)}getMacroId(e){return this.macroNameToId.get(e)}toMacroLoad(e){let t=this.macros.get(e);if(t)return{loadType:7,macroId:t.macroId,template:t.template}}toAllMacroLoads(){let e=[];for(let t of this.macros.values())e.push({loadType:7,macroId:t.macroId,template:t.template});return e}setLayerMapping(e,t){this.layerNameToId.set(e,t)}createInstance(e){let t=this.macroNameToId.get(e.macro);if(t===void 0){console.warn(`MacroRegistry: Unknown macro "${e.macro}"`);return}let r=this.layerNameToId.get(e.layer);if(r===void 0){console.warn(`MacroRegistry: Unknown layer "${e.layer}"`);return}if(this.instanceNameToId.has(e.id))return console.warn(`MacroRegistry: Instance "${e.id}" already exists`),this.instanceNameToId.get(e.id);let n=this.nextInstanceId++;if(n>255)throw new Error("Maximum instance count (256) exceeded");let o={instanceId:n,name:e.id,macroId:t,layerId:r,x:e.x,y:e.y,tabIndex:e.tabIndex??0,params:e.params??{}};this.instances.set(n,o),this.instanceNameToId.set(e.id,n);let i={type:1,instanceId:n,macroId:t,layerId:r,x:e.x,y:e.y,tabIndex:e.tabIndex??0,params:e.params??{}};return this.pendingOrders.push(i),n}updateInstance(e,t){let r=this.instanceNameToId.get(e);if(r===void 0)return!1;let n=this.instances.get(r);if(!n)return!1;for(let i in t)n.params[i]=t[i];let o={type:2,instanceId:r,params:t};return this.pendingOrders.push(o),!0}removeInstance(e){let t=this.instanceNameToId.get(e);if(t===void 0)return!1;this.instances.delete(t),this.instanceNameToId.delete(e);let r={type:3,instanceId:t};return this.pendingOrders.push(r),!0}getInstanceByName(e){let t=this.instanceNameToId.get(e);return t!==void 0?this.instances.get(t):void 0}getInstanceById(e){return this.instances.get(e)}getInstanceName(e){return this.instances.get(e)?.name}flushPendingOrders(){let e=this.pendingOrders;return this.pendingOrders=[],e}hasPendingOrders(){return this.pendingOrders.length>0}getAllInstances(){return Array.from(this.instances.values())}clearInstances(){this.instances.clear(),this.instanceNameToId.clear(),this.nextInstanceId=0,this.pendingOrders=[]}clear(){this.macros.clear(),this.macroNameToId.clear(),this.nextMacroId=0,this.clearInstances()}};C(Dt,"MacroRegistry");var ke=Dt;function D(b){return typeof b=="number"?b:b.charCodeAt(0)}C(D,"toCharCode");function ye(b){return typeof b=="string"?b.charAt(0):String.fromCharCode(b)}C(ye,"toCharString");var An={single:{topLeft:"\u250C",topRight:"\u2510",bottomLeft:"\u2514",bottomRight:"\u2518",horizontal:"\u2500",vertical:"\u2502"},double:{topLeft:"\u2554",topRight:"\u2557",bottomLeft:"\u255A",bottomRight:"\u255D",horizontal:"\u2550",vertical:"\u2551"},rounded:{topLeft:"\u256D",topRight:"\u256E",bottomLeft:"\u2570",bottomRight:"\u256F",horizontal:"\u2500",vertical:"\u2502"}},Vt={update(b,e,t,r){let n,o;e.subtype==="button"&&e.button?(n=t.resolveValue(e.button.width,b.params),o=t.resolveValue(e.button.height??3,b.params)):(n=t.resolveValue(b.params.width??1,b.params),o=t.resolveValue(b.params.height??1,b.params));let i=b.isHovered;b.isHovered=Pn(t.mouseX,t.mouseY,b.x,b.y,n,o);let s=b.isActive;b.isActive=b.isHovered&&t.mouseDown,s&&!b.isActive&&b.isHovered&&(r.push({instanceId:b.instanceId,event:"click"}),e.subtype==="button"&&e.button?.soundRelease!==void 0&&t.playSound?.(e.button.soundRelease)),e.subtype==="button"&&e.button&&(!i&&b.isHovered&&e.button.soundHover!==void 0&&t.playSound?.(e.button.soundHover),!s&&b.isActive&&e.button.soundClick!==void 0&&t.playSound?.(e.button.soundClick))},render(b,e,t){let r=un(b),n=e.states[r]??e.states.normal,o={...b.params,...n},i=[];if(e.subtype==="button"&&e.button)kn(b,e,o,i,t);else if(e.base)for(let s of e.base){let a=zn(s,b.x,b.y,o,t);a&&i.push(a)}return i}};function Pn(b,e,t,r,n,o){return b>=t&&b<t+n&&e>=r&&e<r+o}C(Pn,"isPointInRect");function un(b){return b.isDisabled?"disabled":b.isActive?"active":b.isHovered?"hover":b.isFocused?"focused":"normal"}C(un,"getUIState");function fe(b){if(typeof b=="number")return Math.max(0,Math.min(255,Math.floor(b)));if(typeof b=="string"){let e=parseInt(b,10);if(!isNaN(e))return Math.max(0,Math.min(255,Math.floor(e)))}return 243}C(fe,"toColorIndex");function kn(b,e,t,r,n){let o=e.button,i=un(b),s=e.states[i]??e.states.normal,a=n.resolveValue(o.width,t),d=n.resolveValue(o.height??3,t),l=n.resolveValue(o.label,t),c=o.border??"single",u=n.resolveValue(s.fg??15,t),p=n.resolveValue(s.bg??0,t),m=n.resolveValue(s.textFg??u,t),g=s.offsetY??0,y=b.x,S=b.y+g;c==="none"?Rn(y,S,a,d,l,u,p,m,r):Bn(y,S,a,d,l,u,p,m,c,r)}C(kn,"renderButton");function Rn(b,e,t,r,n,o,i,s,a){if(r===1)a.push({type:2,posX:b,posY:e,text:" ".repeat(t),fgColorCode:o,bgColorCode:i});else for(let c=0;c<r;c++)a.push({type:2,posX:b,posY:e+c,text:" ".repeat(t),fgColorCode:o,bgColorCode:i});let d=b+Math.floor((t-n.length)/2),l=e+Math.floor(r/2);a.push({type:2,posX:d,posY:l,text:n,fgColorCode:s,bgColorCode:i})}C(Rn,"renderButtonNoBorder");function Bn(b,e,t,r,n,o,i,s,a,d){let l=An[a];d.push({type:2,posX:b,posY:e,text:l.topLeft+l.horizontal.repeat(t-2)+l.topRight,fgColorCode:o,bgColorCode:i});for(let g=1;g<r-1;g++)d.push({type:2,posX:b,posY:e+g,text:l.vertical+" ".repeat(t-2)+l.vertical,fgColorCode:o,bgColorCode:i});d.push({type:2,posX:b,posY:e+r-1,text:l.bottomLeft+l.horizontal.repeat(t-2)+l.bottomRight,fgColorCode:o,bgColorCode:i});let c=t-2,u=r-2,p=b+1+Math.floor((c-n.length)/2),m=e+1+Math.floor(u/2);d.push({type:2,posX:p,posY:m,text:n,fgColorCode:s,bgColorCode:i})}C(Bn,"renderButtonWithBorder");function zn(b,e,t,r,n){if(b.fillRect){let[o,i,s,a,d,l,c]=b.fillRect;return{type:3,posX:e+n.resolveValue(o,r),posY:t+n.resolveValue(i,r),sizeX:n.resolveValue(s,r),sizeY:n.resolveValue(a,r),fgColorCode:fe(n.resolveValue(l,r)),bgColorCode:fe(n.resolveValue(c,r)),frame:Array(n.resolveValue(s,r)*n.resolveValue(a,r)).fill(D(d))}}if(b.text){let[o,i,s,a]=b.text;return{type:2,posX:e+n.resolveValue(o,r),posY:t+n.resolveValue(i,r),text:n.resolveValue(s,r),fgColorCode:fe(n.resolveValue(a,r)),bgColorCode:255}}if(b.setCell){let[o,i,s,a,d]=b.setCell;return{type:1,posX:e+n.resolveValue(o,r),posY:t+n.resolveValue(i,r),charCode:D(n.resolveValue(s,r)),fgColorCode:fe(n.resolveValue(a,r)),bgColorCode:fe(n.resolveValue(d,r))}}return null}C(zn,"executeRenderCommand");function pn(b,e,t,r,n,o,i){return{type:"ui",instanceId:b,macroId:e,layerId:t,x:r,y:n,params:o,tabIndex:i,isHovered:!1,isFocused:!1,isActive:!1,isDisabled:!1}}C(pn,"createUIInstance");var Nt=class Nt{update(e,t,r,n){let o=t.emitter,{resolveValue:i}=r;if(!e.emitDone){if(o.burst){let s=i(o.burst,e.params);for(let a=0;a<s&&!(o.limit&&e.particles.length>=o.limit);a++)e.particles.push(this.createParticle(e,t,r));o.once&&(e.emitDone=!0)}else if(o.rate){let s=i(o.rate,e.params);for(e.timeSinceEmit+=s;e.timeSinceEmit>=1&&!(o.limit&&e.particles.length>=o.limit);)e.particles.push(this.createParticle(e,t,r)),e.timeSinceEmit-=1}}for(let s=e.particles.length-1;s>=0;s--){let a=e.particles[s];a.x+=a.vx,a.y+=a.vy,a.lifetime-=1,a.lifetime<=0&&e.particles.splice(s,1)}}render(e,t,r){if(e.particles.length===0)return[];let{resolveValue:n}=r,o=t.emitter,i=o.viewport??o.zone,s=n(i.x,e.params),a=n(i.y,e.params),d=n(i.width,e.params),l=n(i.height,e.params),c=e.x+(typeof s=="number"?s:0),u=e.y+(typeof a=="number"?a:0),p=typeof d=="number"?d:0,m=typeof l=="number"?l:0;if(p<=0||m<=0)return[];let g=[];for(let y of e.particles){let S=Math.floor(y.x),x=Math.floor(y.y);if(S<c||S>=c+p||x<u||x>=u+m)continue;let I=y.fg;if(t.particle.fade&&y.maxLifetime>0){let v=y.lifetime/y.maxLifetime;I=this.fadeColorIndex(y.fg,v)}g.push({charCode:D(y.char),fgColorCode:I,bgColorCode:y.bg??255,posX:S,posY:x})}return[{type:12,dots:g}]}createParticle(e,t,r){let{resolveValue:n,resolveRandomValue:o}=r,i=t.emitter,s=t.particle,a=n(i.zone.x,e.params),d=n(i.zone.y,e.params),l=n(i.zone.width,e.params),c=n(i.zone.height,e.params),u=e.x+a+Math.random()*l,p=e.y+d+Math.random()*c,m=0,g=0;if("x"in s.velocity&&"y"in s.velocity)m=n(s.velocity.x,e.params),g=n(s.velocity.y,e.params);else if("angle"in s.velocity&&"speed"in s.velocity){let E=o(s.velocity.angle),U=o(s.velocity.speed,e.params),M=E*Math.PI/180;m=Math.cos(M)*U,g=Math.sin(M)*U}let y=o(s.lifetime),S=Array.isArray(s.char)?s.char[Math.floor(Math.random()*s.char.length)]:s.char,x=ye(S),I=Array.isArray(s.fg)?s.fg[Math.floor(Math.random()*s.fg.length)]:s.fg,v=typeof I=="number"?I:parseInt(I,10)||243,w=s.bg?Array.isArray(s.bg)?s.bg[Math.floor(Math.random()*s.bg.length)]:s.bg:void 0,A=w!==void 0?typeof w=="number"?w:parseInt(w,10)||255:void 0;return{x:u,y:p,vx:m,vy:g,char:x,fg:v,bg:A,lifetime:y,maxLifetime:y}}fadeColorIndex(e,t){return t<.1?255:e}};C(Nt,"ParticleHandler");var Re=Nt;var Yt=class Yt{update(e,t,r,n){e.elapsed+=1;let o=Math.min(1,e.elapsed/e.duration),i=t.transform.decay?1-o:1,s=t.transform.offset;s&&(e.currentOffsetX=this.resolveRandomOffset(s.x,e.params,r)*i,e.currentOffsetY=this.resolveRandomOffset(s.y,e.params,r)*i),e.elapsed>=e.duration&&(n.push({instanceId:e.instanceId,event:"complete"}),r.deleteInstance(e.instanceId))}render(e,t,r){return[]}getOffset(e){return{x:e.currentOffsetX,y:e.currentOffsetY}}resolveRandomOffset(e,t,r){if(typeof e=="number")return e;if(typeof e=="string")return r.resolveValue(e,t);if(typeof e=="object"&&"random"in e){let[n,o]=e.random,i=r.resolveValue(n,t),s=r.resolveValue(o,t);return i+Math.random()*(s-i)}return 0}};C(Yt,"EffectHandler");var Be=Yt;var Ht=class Ht{constructor(){h(this,"spriteRegistry",null)}setSpriteRegistry(e){this.spriteRegistry=e}update(e,t,r,n){if(e.finished)return;if(e.delayRemaining>0){e.delayRemaining--;return}if(e.pauseRemaining>0){e.pauseRemaining--;return}let o=t.cursor?.blinkRate??15;e.blinkTimer++,e.blinkTimer>=o&&(e.blinkTimer=0,e.blinkState=!e.blinkState);let i=e.speed;if(e.direction==="reveal"){let a=Math.min(i,e.totalCells-e.revealedCount);if(t.pauseOn&&a>0){let d=e.cells[e.revealedCount];d&&t.pauseOn.chars.includes(d.char)&&(e.pauseRemaining=t.pauseOn.duration)}e.revealedCount+=a,e.revealedCount>=e.totalCells&&(e.finished=!0,n.push({instanceId:e.instanceId,event:"complete"}))}else{let a=Math.min(i,e.revealedCount);e.revealedCount-=a,e.revealedCount<=0&&(e.finished=!0,n.push({instanceId:e.instanceId,event:"complete"}))}}render(e,t,r){let n=[],o=e.cells.slice(0,e.revealedCount),i=new Map;for(let s of o)i.has(s.y)||i.set(s.y,[]),i.get(s.y).push(s);for(let[s,a]of i){a.sort((l,c)=>l.x-c.x);let d=0;for(;d<a.length;){let l=a[d],c=d+1;for(;c<a.length&&a[c].x===a[c-1].x+1&&a[c].fg===l.fg&&a[c].bg===l.bg;)c++;if(c-d===1)n.push({type:1,posX:e.x+l.x,posY:e.y+s,charCode:l.char.charCodeAt(0),fgColorCode:l.fg,bgColorCode:l.bg});else{let p="";for(let m=d;m<c;m++)p+=a[m].char;n.push({type:2,posX:e.x+l.x,posY:e.y+s,text:p,fgColorCode:l.fg,bgColorCode:l.bg})}d=c}}if(t.cursor&&!e.finished&&(!t.cursor.blink||e.blinkState)&&e.revealedCount<e.cells.length){let a=e.cells[e.revealedCount];if(a){let d=t.cursor.bg??a.bg;n.push({type:1,posX:e.x+a.x,posY:e.y+a.y,charCode:D(t.cursor.char),fgColorCode:t.cursor.fg??15,bgColorCode:d})}}return n}buildCells(e,t,r){let n=[],o=e.content;switch(o.type){case"text":{let i=r(o.text,t),s=r(o.fg??15,t),a=r(o.bg??0,t),d=i.split(`
|