framefields 2.0.9 → 2.0.10

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.
Files changed (165) hide show
  1. package/dist/audio/index.mjs +10 -10
  2. package/dist/{audio-Dev4NGPa.mjs → audio-B7Al-W_0.mjs} +3 -3
  3. package/dist/{audio-Dev4NGPa.mjs.map → audio-B7Al-W_0.mjs.map} +1 -1
  4. package/dist/{dist-DgfykO99.mjs → dist-B9PkqWnN.mjs} +26 -13
  5. package/dist/dist-B9PkqWnN.mjs.map +1 -0
  6. package/dist/{dist-CoSg-CWr.mjs → dist-BFjSQP7i.mjs} +2 -2
  7. package/dist/{dist-CoSg-CWr.mjs.map → dist-BFjSQP7i.mjs.map} +1 -1
  8. package/dist/effects/index.mjs +23 -23
  9. package/dist/{effects-hxRwxjyC.mjs → effects-CREopCyP.mjs} +2 -2
  10. package/dist/{effects-hxRwxjyC.mjs.map → effects-CREopCyP.mjs.map} +1 -1
  11. package/dist/fonts/index.mjs +1 -1
  12. package/dist/{fonts-BznIea-I.mjs → fonts-DhEQ5h6E.mjs} +2 -2
  13. package/dist/{fonts-BznIea-I.mjs.map → fonts-DhEQ5h6E.mjs.map} +1 -1
  14. package/dist/index-CvDVpaKn.d.mts.map +1 -1
  15. package/dist/index-D1zaOwEU.d.mts.map +1 -1
  16. package/dist/index-fo4E7A6C.d.mts.map +1 -1
  17. package/dist/index.mjs +38 -38
  18. package/dist/preview/index.mjs +10 -10
  19. package/dist/{preview-DZTbEON9.mjs → preview-9ifxywUM.mjs} +2 -2
  20. package/dist/{preview-DZTbEON9.mjs.map → preview-9ifxywUM.mjs.map} +1 -1
  21. package/dist/preview-engine/{chunk-VWLR2AZR.mjs → chunk-AEK5BO3J.mjs} +1 -1
  22. package/dist/preview-engine/{chunk-5PPSCISJ.mjs → chunk-AG5JNZYQ.mjs} +1 -1
  23. package/dist/preview-engine/chunk-MJM3NFEC.mjs +315 -0
  24. package/dist/preview-engine/{chunk-BUWK5RJ4.mjs → chunk-QTKJXDIW.mjs} +1 -1
  25. package/dist/preview-engine/{chunk-WQ7BFSKF.mjs → chunk-RNOO4UR5.mjs} +1 -1
  26. package/dist/preview-engine/{chunk-OF75EHTX.mjs → chunk-T6CC2KCZ.mjs} +1 -1
  27. package/dist/preview-engine/fonts.mjs +1 -1
  28. package/dist/preview-engine/framefields.mjs +1 -1
  29. package/dist/preview-engine/player.mjs +1 -1
  30. package/dist/preview-engine/{renderers-LTNTQLWE.mjs → renderers-7HNVXNAI.mjs} +1 -1
  31. package/dist/{program-C797QMRL.mjs → program-xRfFoPxe.mjs} +2 -2
  32. package/dist/{program-C797QMRL.mjs.map → program-xRfFoPxe.mjs.map} +1 -1
  33. package/dist/renderer/index.mjs +2 -2
  34. package/dist/{renderer-CV8diddR.mjs → renderer-5h0llpx7.mjs} +2 -2
  35. package/dist/{renderer-CV8diddR.mjs.map → renderer-5h0llpx7.mjs.map} +1 -1
  36. package/dist/{renderer-C2gnWTQZ.mjs → renderer-6GeDT4Mx.mjs} +2 -2
  37. package/dist/{renderer-C2gnWTQZ.mjs.map → renderer-6GeDT4Mx.mjs.map} +1 -1
  38. package/dist/{renderer-BE4Ns0nw.mjs → renderer-8qpGxSSO.mjs} +2 -2
  39. package/dist/{renderer-BE4Ns0nw.mjs.map → renderer-8qpGxSSO.mjs.map} +1 -1
  40. package/dist/{renderer--vY6O19V.mjs → renderer-9wp5R7PL.mjs} +2 -2
  41. package/dist/{renderer--vY6O19V.mjs.map → renderer-9wp5R7PL.mjs.map} +1 -1
  42. package/dist/renderer-B4F6wL68.mjs +3 -0
  43. package/dist/renderer-B4i1jmiT.mjs +3 -0
  44. package/dist/renderer-B5ylY3uM.mjs +3 -0
  45. package/dist/{renderer-DPpgBTlK.mjs → renderer-BA8YwBRQ.mjs} +2 -2
  46. package/dist/{renderer-DPpgBTlK.mjs.map → renderer-BA8YwBRQ.mjs.map} +1 -1
  47. package/dist/{renderer-CpUbDJAV.mjs → renderer-BGXbGqY4.mjs} +2 -2
  48. package/dist/{renderer-CpUbDJAV.mjs.map → renderer-BGXbGqY4.mjs.map} +1 -1
  49. package/dist/{renderer-CckJJHbM.mjs → renderer-BJ6Y-7ke.mjs} +2 -2
  50. package/dist/{renderer-CckJJHbM.mjs.map → renderer-BJ6Y-7ke.mjs.map} +1 -1
  51. package/dist/renderer-BPw23wiR.mjs +3 -0
  52. package/dist/{renderer-DRpE3ZW4.mjs → renderer-BZmfKIom.mjs} +2 -2
  53. package/dist/{renderer-DRpE3ZW4.mjs.map → renderer-BZmfKIom.mjs.map} +1 -1
  54. package/dist/{renderer-B8gTyU3w.mjs → renderer-BgdkEFmv.mjs} +2 -2
  55. package/dist/{renderer-B8gTyU3w.mjs.map → renderer-BgdkEFmv.mjs.map} +1 -1
  56. package/dist/renderer-BghW-bSZ.mjs +3 -0
  57. package/dist/{renderer-CB8hMQgm.mjs → renderer-BiSALMQy.mjs} +1 -1
  58. package/dist/{renderer-BgqjWI7K.mjs → renderer-BnvqEqvE.mjs} +2 -2
  59. package/dist/{renderer-BgqjWI7K.mjs.map → renderer-BnvqEqvE.mjs.map} +1 -1
  60. package/dist/{renderer-CxQ5v4fJ.mjs → renderer-BpCxKWQm.mjs} +2 -2
  61. package/dist/{renderer-CxQ5v4fJ.mjs.map → renderer-BpCxKWQm.mjs.map} +1 -1
  62. package/dist/{renderer-9QCHY8Kh.mjs → renderer-BtRfKx5N.mjs} +2 -2
  63. package/dist/{renderer-9QCHY8Kh.mjs.map → renderer-BtRfKx5N.mjs.map} +1 -1
  64. package/dist/{renderer-EmG34sT2.mjs → renderer-But0u-xi.mjs} +2 -2
  65. package/dist/{renderer-EmG34sT2.mjs.map → renderer-But0u-xi.mjs.map} +1 -1
  66. package/dist/renderer-Bw3oZ9YT.mjs +3 -0
  67. package/dist/renderer-C2009W-_.mjs +3 -0
  68. package/dist/renderer-C36yoGXG.mjs +3 -0
  69. package/dist/{renderer-DX38J6mK.mjs → renderer-CIYcdZuZ.mjs} +2 -2
  70. package/dist/{renderer-DX38J6mK.mjs.map → renderer-CIYcdZuZ.mjs.map} +1 -1
  71. package/dist/{renderer-5jfDUKd4.mjs → renderer-CJNyhr_S.mjs} +2 -2
  72. package/dist/{renderer-5jfDUKd4.mjs.map → renderer-CJNyhr_S.mjs.map} +1 -1
  73. package/dist/renderer-CM1_2ZWA.mjs +3 -0
  74. package/dist/{renderer-BXaK02qA.mjs → renderer-CNF10fCq.mjs} +2 -2
  75. package/dist/{renderer-BXaK02qA.mjs.map → renderer-CNF10fCq.mjs.map} +1 -1
  76. package/dist/{renderer-BTYncYDf.mjs → renderer-CStktK20.mjs} +39 -39
  77. package/dist/{renderer-BTYncYDf.mjs.map → renderer-CStktK20.mjs.map} +1 -1
  78. package/dist/renderer-CWlzudP8.mjs +3 -0
  79. package/dist/{renderer-DAFyJ4dv.mjs → renderer-CcU7dVn9.mjs} +2 -2
  80. package/dist/{renderer-DAFyJ4dv.mjs.map → renderer-CcU7dVn9.mjs.map} +1 -1
  81. package/dist/renderer-Cd5vzrGs.mjs +3 -0
  82. package/dist/renderer-CeJ_vDXI.mjs +3 -0
  83. package/dist/{renderer-BcPpcKDI.mjs → renderer-CfeoxM_3.mjs} +2 -2
  84. package/dist/{renderer-BcPpcKDI.mjs.map → renderer-CfeoxM_3.mjs.map} +1 -1
  85. package/dist/{renderer-DgSO5OO0.mjs → renderer-CgmFh6MY.mjs} +1 -1
  86. package/dist/{renderer-gT0ADXMW.mjs → renderer-CoZKST2Y.mjs} +2 -2
  87. package/dist/{renderer-gT0ADXMW.mjs.map → renderer-CoZKST2Y.mjs.map} +1 -1
  88. package/dist/{renderer-DnF3aXPX.mjs → renderer-CroHPOsX.mjs} +2 -2
  89. package/dist/{renderer-DnF3aXPX.mjs.map → renderer-CroHPOsX.mjs.map} +1 -1
  90. package/dist/renderer-D5Z6mda5.mjs +3 -0
  91. package/dist/{renderer-D3uNI10l.mjs → renderer-D7ztfQHX.mjs} +2 -2
  92. package/dist/{renderer-D3uNI10l.mjs.map → renderer-D7ztfQHX.mjs.map} +1 -1
  93. package/dist/{renderer-6PqlYQjC.mjs → renderer-DAMJZNtX.mjs} +2 -2
  94. package/dist/{renderer-6PqlYQjC.mjs.map → renderer-DAMJZNtX.mjs.map} +1 -1
  95. package/dist/{renderer-D6Gi_h4K.mjs → renderer-DBlPbsgi.mjs} +1 -1
  96. package/dist/renderer-DCJa7OGk.mjs +3 -0
  97. package/dist/{renderer-B4ecTNR7.mjs → renderer-DCkSR2Ne.mjs} +2 -2
  98. package/dist/{renderer-B4ecTNR7.mjs.map → renderer-DCkSR2Ne.mjs.map} +1 -1
  99. package/dist/renderer-DGwSl7g1.mjs +3 -0
  100. package/dist/{renderer-lq4n1hSS.mjs → renderer-DNNqpK7t.mjs} +2 -2
  101. package/dist/{renderer-lq4n1hSS.mjs.map → renderer-DNNqpK7t.mjs.map} +1 -1
  102. package/dist/renderer-DNoRNfMm.mjs +3 -0
  103. package/dist/renderer-DOZ8bpyY.mjs +3 -0
  104. package/dist/renderer-DRHyRNU8.mjs +3 -0
  105. package/dist/{renderer-CKJb_Lky.mjs → renderer-DTvfYkI9.mjs} +2 -2
  106. package/dist/{renderer-CKJb_Lky.mjs.map → renderer-DTvfYkI9.mjs.map} +1 -1
  107. package/dist/{renderer-CuqhAB4i.mjs → renderer-DYm4duFr.mjs} +2 -2
  108. package/dist/{renderer-CuqhAB4i.mjs.map → renderer-DYm4duFr.mjs.map} +1 -1
  109. package/dist/{renderer-xp_J0ln7.mjs → renderer-DdVBt8Rz.mjs} +2 -2
  110. package/dist/{renderer-xp_J0ln7.mjs.map → renderer-DdVBt8Rz.mjs.map} +1 -1
  111. package/dist/{renderer-BpJgfBQ8.mjs → renderer-DffynBHa.mjs} +2 -2
  112. package/dist/{renderer-BpJgfBQ8.mjs.map → renderer-DffynBHa.mjs.map} +1 -1
  113. package/dist/{renderer-DCK73tcD.mjs → renderer-DjTiNeAp.mjs} +2 -2
  114. package/dist/{renderer-DCK73tcD.mjs.map → renderer-DjTiNeAp.mjs.map} +1 -1
  115. package/dist/{renderer-Dn8v2o9L.mjs → renderer-Dju9CaeL.mjs} +2 -2
  116. package/dist/{renderer-Dn8v2o9L.mjs.map → renderer-Dju9CaeL.mjs.map} +1 -1
  117. package/dist/renderer-DlD85Xoi.mjs +3 -0
  118. package/dist/renderer-Dr0bgOrW.mjs +3 -0
  119. package/dist/{renderer-zvtpCnqy.mjs → renderer-DryPrxYc.mjs} +1 -1
  120. package/dist/renderer-DurtG-Hc.mjs +3 -0
  121. package/dist/{renderer-CrVAvP92.mjs → renderer-DxtHmyAa.mjs} +2 -2
  122. package/dist/{renderer-CrVAvP92.mjs.map → renderer-DxtHmyAa.mjs.map} +1 -1
  123. package/dist/renderer-eFv9HBmL.mjs +3 -0
  124. package/dist/renderer-iuV6wQoL.mjs +4 -0
  125. package/dist/{renderer-BwmZUkvd.mjs → renderer-jkZ_IQnW.mjs} +2 -2
  126. package/dist/{renderer-BwmZUkvd.mjs.map → renderer-jkZ_IQnW.mjs.map} +1 -1
  127. package/dist/renderer-n-uuWPF4.mjs +3 -0
  128. package/dist/renderer-rzccTFuY.mjs +3 -0
  129. package/dist/{renderer-C-PfbkPu.mjs → renderer-wVldKtFU.mjs} +2 -2
  130. package/dist/{renderer-C-PfbkPu.mjs.map → renderer-wVldKtFU.mjs.map} +1 -1
  131. package/dist/{renderer-B1UeU7lX.mjs → renderer-xKOVmd2O.mjs} +4 -4
  132. package/dist/{renderer-B1UeU7lX.mjs.map → renderer-xKOVmd2O.mjs.map} +1 -1
  133. package/dist/renderer-y9eGFPFL.mjs +3 -0
  134. package/dist/{renderers-CP8CFWDs-Ciap7y_j.mjs → renderers-CP8CFWDs-BLgwUYX2.mjs} +2 -2
  135. package/dist/{renderers-CP8CFWDs-Ciap7y_j.mjs.map → renderers-CP8CFWDs-BLgwUYX2.mjs.map} +1 -1
  136. package/dist/signals/index.mjs +4 -4
  137. package/package.json +55 -55
  138. package/dist/dist-DgfykO99.mjs.map +0 -1
  139. package/dist/preview-engine/chunk-ZJFAGIOM.mjs +0 -315
  140. package/dist/renderer-3uTfN95I.mjs +0 -3
  141. package/dist/renderer-B5GslTP-.mjs +0 -3
  142. package/dist/renderer-BUIWeIKQ.mjs +0 -3
  143. package/dist/renderer-B_LfC88A.mjs +0 -3
  144. package/dist/renderer-B_zmicsE.mjs +0 -3
  145. package/dist/renderer-BtNxtXkR.mjs +0 -3
  146. package/dist/renderer-C-sZSHtf.mjs +0 -3
  147. package/dist/renderer-C1zifktw.mjs +0 -3
  148. package/dist/renderer-CCt2XTSM.mjs +0 -3
  149. package/dist/renderer-CMXcaArD.mjs +0 -3
  150. package/dist/renderer-CW9D5zCP.mjs +0 -3
  151. package/dist/renderer-D1R7vBUl.mjs +0 -3
  152. package/dist/renderer-D5yawxtJ.mjs +0 -3
  153. package/dist/renderer-DC8jr1Ay.mjs +0 -3
  154. package/dist/renderer-DCv-Abvn.mjs +0 -4
  155. package/dist/renderer-DPLFhzaV.mjs +0 -3
  156. package/dist/renderer-DVsF2FDr.mjs +0 -3
  157. package/dist/renderer-DetDm3ep.mjs +0 -3
  158. package/dist/renderer-DhMhJh_G.mjs +0 -3
  159. package/dist/renderer-DhQld4Qt.mjs +0 -3
  160. package/dist/renderer-Dn3rc3ah.mjs +0 -3
  161. package/dist/renderer-Dw9LxE2f.mjs +0 -3
  162. package/dist/renderer-HvrQZw5E.mjs +0 -3
  163. package/dist/renderer-QdJE56ts.mjs +0 -3
  164. package/dist/renderer-euGyUN2O.mjs +0 -3
  165. package/dist/renderer-p3SmBFP9.mjs +0 -3
@@ -1,4 +1,4 @@
1
- import{a as Cn}from"./chunk-JPXQPP6J.mjs";import{a as un}from"./chunk-CNSHAFEA.mjs";import{h as Bn,l as ln}from"./chunk-24P6DAB3.mjs";import{d as cn}from"./chunk-6YJP57MZ.mjs";import{d as ZA,e as En,f as NA,g as ft,h as Qn}from"./chunk-ZJFAGIOM.mjs";import{r as pA}from"./chunk-MTJHQATU.mjs";import{d as Ct}from"./chunk-HYBAPT6I.mjs";import{o as JA}from"./chunk-YAQFFQPG.mjs";import{a as gn,c as In,e as $}from"./chunk-BVF64D6H.mjs";var bn=gn((Wo,wn)=>{$();var Ke=()=>new Proxy(function(){},{get:(A,e)=>e==="__esModule"?!0:e===Symbol.toPrimitive?()=>"":Ke(),apply:()=>Ke(),construct:()=>Ke()});wn.exports=Ke()});var $n=gn((xs,_n)=>{$();var tt=()=>new Proxy(function(){},{get:(A,e)=>e==="__esModule"?!0:e===Symbol.toPrimitive?()=>"":tt(),apply:()=>tt(),construct:()=>tt()});_n.exports=tt()});$();var dn=new Float32Array(2048);for(let A=0;A<2048;A++)dn[A]=.5*(1-Math.cos(2*Math.PI*A/2047));var hn=new Uint16Array(2048);for(let A=0;A<2048;A++){let e=0,t=A;for(let n=0;n<11;n++)e=e<<1|t&1,t>>=1;hn[A]=e}var mn=new Float32Array(2048/2),pn=new Float32Array(2048/2);for(let A=0;A<2048/2;A++){let e=-2*Math.PI*A/2048;mn[A]=Math.cos(e),pn[A]=Math.sin(e)}function Jr(A,e){for(let t=0;t<2048;t++){let n=hn[t]??0;if(n>t){let r=A[t]??0;A[t]=A[n]??0,A[n]=r;let o=e[t]??0;e[t]=e[n]??0,e[n]=o}}for(let t=2;t<=2048;t<<=1){let n=t>>1,r=2048/t;for(let o=0;o<2048;o+=t)for(let i=0;i<n;i++){let a=i*r,s=mn[a]??1,g=pn[a]??0,I=A[o+i]??0,B=e[o+i]??0,u=A[o+i+n]??0,E=e[o+i+n]??0,Q=u*s-E*g,C=u*g+E*s;A[o+i]=I+Q,e[o+i]=B+C,A[o+i+n]=I-Q,e[o+i+n]=B-C}}}var Te=class A{tempReal=new Float32Array(2048);tempImag=new Float32Array(2048);previousBins=new Float32Array(1024);extractAtTime(e,t,n){let r=e.length,o=r>0?e[0]?.length??0:0,a=Math.round(n*t)-1024;for(let M=0;M<2048;M++){let b=a+M,x=0;b>=0&&b<o&&(r===1?x=e[0]?.[b]??0:r>=2&&(x=((e[0]?.[b]??0)+(e[1]?.[b]??0))*.5)),this.tempReal[M]=x*(dn[M]??1),this.tempImag[M]=0}Jr(this.tempReal,this.tempImag);let s=new Float32Array(1024),g=2/2048;for(let M=0;M<1024;M++){let b=this.tempReal[M]??0,x=this.tempImag[M]??0;s[M]=Math.sqrt(b*b+x*x)*g*2}let I=t/2048,B=Math.max(1,Math.round(20/I)),u=Math.max(B+1,Math.round(150/I)),E=0;for(let M=B;M<=u&&M<1024;M++)E+=(s[M]??0)*(s[M]??0);let Q=Math.min(1,Math.sqrt(E/(u-B+1))*4),C=0;for(let M=0;M<1024;M++){let b=(s[M]??0)-(this.previousBins[M]??0);b>0&&(C+=b),this.previousBins[M]=s[M]??0}let h=Math.min(1,C*.15),m=Math.round(300/I),p=Math.min(1023,Math.round(3400/I)),D=0;for(let M=m;M<=p;M++)D+=(s[M]??0)*(s[M]??0);let N=Math.min(1,Math.sqrt(D/(p-m+1))*3.5);return{fftBins:s,bassEnergy:Q,drumTransient:h,vocalEnergy:N,timeMs:n*1e3}}static packBufferData(e){let t=new Float32Array(1028);return t.set(e.fftBins,0),t[1024]=e.bassEnergy,t[1025]=e.drumTransient,t[1026]=e.vocalEnergy,t[1027]=e.timeMs,t}static createGpuBuffer(e,t){let n=t?A.packBufferData(t):new Float32Array(1028),r=e.createBuffer({label:"AudioLatentBuffer",size:4112,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST,mappedAtCreation:!0});return new Float32Array(r.getMappedRange()).set(n),r.unmap(),r}static updateGpuBuffer(e,t,n){let r=A.packBufferData(n);e.queue.writeBuffer(t,0,r)}},fn=class{constructor(e,t,n,r){this.channels=e;this.sampleRate=t;this.fps=n;this.totalFrames=r;let o=new Te,i=t||48e3,a=n||30,s=e[0]?.length??0,g=Math.max(10,Math.ceil(s/i*a)+10),I=typeof r=="number"&&Number.isFinite(r)&&r>0?Math.round(r):g;this.frames=new Array(I);for(let B=0;B<I;B++){let u=B/a;this.frames[B]=o.extractAtTime(e,i,u)}}channels;sampleRate;fps;totalFrames;frames=[];gpuBuffers=new WeakMap;getFrameData(e){let t=Math.max(0,Math.min(this.totalFrames-1,Math.round(e)));return this.frames[t]??{fftBins:new Float32Array(1024),bassEnergy:0,drumTransient:0,vocalEnergy:0,timeMs:t/this.fps*1e3}}getGpuBuffer(e,t){let n=this.gpuBuffers.get(e);n||(n=new Map,this.gpuBuffers.set(e,n));let r=Math.max(0,Math.min(this.totalFrames-1,Math.round(t))),o=n.get(r);if(!o){let i=this.getFrameData(r);o=Te.createGpuBuffer(e,i),n.set(r,o)}return o}};$();$();$();var k={create(A=0,e=0,t=0){return[A,e,t]},copy(A){return[A[0],A[1],A[2]]},set(A,e,t,n){return A[0]=e,A[1]=t,A[2]=n,A},add(A,e){return[A[0]+e[0],A[1]+e[1],A[2]+e[2]]},subtract(A,e){return[A[0]-e[0],A[1]-e[1],A[2]-e[2]]},multiplyScalar(A,e){return[A[0]*e,A[1]*e,A[2]*e]},dot(A,e){return A[0]*e[0]+A[1]*e[1]+A[2]*e[2]},cross(A,e){return[A[1]*e[2]-A[2]*e[1],A[2]*e[0]-A[0]*e[2],A[0]*e[1]-A[1]*e[0]]},lengthSq(A){return A[0]*A[0]+A[1]*A[1]+A[2]*A[2]},length(A){return Math.hypot(A[0],A[1],A[2])},distance(A,e){return Math.hypot(A[0]-e[0],A[1]-e[1],A[2]-e[2])},normalize(A){let e=Math.hypot(A[0],A[1],A[2]);if(e===0)return[0,0,0];let t=1/e;return[A[0]*t,A[1]*t,A[2]*t]},lerp(A,e,t){return[A[0]+(e[0]-A[0])*t,A[1]+(e[1]-A[1])*t,A[2]+(e[2]-A[2])*t]},equals(A,e,t=1e-6){return Math.abs(A[0]-e[0])<=t&&Math.abs(A[1]-e[1])<=t&&Math.abs(A[2]-e[2])<=t}};var cA={identity(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]},copy(A){return[...A]},multiply(A,e){let t=new Array(16);for(let n=0;n<4;n++)for(let r=0;r<4;r++)t[r*4+n]=A[0+n]*e[r*4+0]+A[4+n]*e[r*4+1]+A[8+n]*e[r*4+2]+A[12+n]*e[r*4+3];return t},translate(A,e,t=0){return[1,0,0,0,0,1,0,0,0,0,1,0,A,e,t,1]},scale(A,e,t=1){return[A,0,0,0,0,e,0,0,0,0,t,0,0,0,0,1]},rotateX(A){let e=Math.cos(A),t=Math.sin(A);return[1,0,0,0,0,e,t,0,0,-t,e,0,0,0,0,1]},rotateY(A){let e=Math.cos(A),t=Math.sin(A);return[e,0,-t,0,0,1,0,0,t,0,e,0,0,0,0,1]},rotateZ(A){let e=Math.cos(A),t=Math.sin(A);return[e,t,0,0,-t,e,0,0,0,0,1,0,0,0,0,1]},rotateAxis(A,e){let t=k.normalize(A),n=t[0],r=t[1],o=t[2],i=Math.cos(e),a=Math.sin(e),s=1-i;return[s*n*n+i,s*n*r+a*o,s*n*o-a*r,0,s*n*r-a*o,s*r*r+i,s*r*o+a*n,0,s*n*o+a*r,s*r*o-a*n,s*o*o+i,0,0,0,0,1]},lookAt(A,e,t=[0,-1,0]){let n=k.subtract(e,A);k.lengthSq(n)===0?n=[0,0,1]:n=k.normalize(n);let r=k.cross(n,t);k.lengthSq(r)===0?r=[1,0,0]:r=k.normalize(r);let o=k.cross(r,n);return[r[0],o[0],n[0],0,r[1],o[1],n[1],0,r[2],o[2],n[2],0,-k.dot(r,A),-k.dot(o,A),-k.dot(n,A),1]},perspective(A,e,t,n){let r=1/Math.tan(A/2),o=1/(n-t);return[r/e,0,0,0,0,r,0,0,0,0,n*o,1,0,0,-t*n*o,0]},orthographic(A,e,t,n,r,o){let i=1/(e-A),a=1/(n-t),s=1/(o-r);return[2*i,0,0,0,0,2*a,0,0,0,0,s,0,-(e+A)*i,-(n+t)*a,-r*s,1]},invert(A){let e=new Array(16);e[0]=A[5]*A[10]*A[15]-A[5]*A[11]*A[14]-A[9]*A[6]*A[15]+A[9]*A[7]*A[14]+A[13]*A[6]*A[11]-A[13]*A[7]*A[10],e[4]=-A[4]*A[10]*A[15]+A[4]*A[11]*A[14]+A[8]*A[6]*A[15]-A[8]*A[7]*A[14]-A[12]*A[6]*A[11]+A[12]*A[7]*A[10],e[8]=A[4]*A[9]*A[15]-A[4]*A[11]*A[13]-A[8]*A[5]*A[15]+A[8]*A[7]*A[13]+A[12]*A[5]*A[11]-A[12]*A[7]*A[9],e[12]=-A[4]*A[9]*A[14]+A[4]*A[10]*A[13]+A[8]*A[5]*A[14]-A[8]*A[6]*A[13]-A[12]*A[5]*A[10]+A[12]*A[6]*A[9],e[1]=-A[1]*A[10]*A[15]+A[1]*A[11]*A[14]+A[9]*A[2]*A[15]-A[9]*A[3]*A[14]-A[13]*A[2]*A[11]+A[13]*A[3]*A[10],e[5]=A[0]*A[10]*A[15]-A[0]*A[11]*A[14]-A[8]*A[2]*A[15]+A[8]*A[3]*A[14]+A[12]*A[2]*A[11]-A[12]*A[3]*A[10],e[9]=-A[0]*A[9]*A[15]+A[0]*A[11]*A[13]+A[8]*A[1]*A[15]-A[8]*A[3]*A[13]-A[12]*A[1]*A[11]+A[12]*A[3]*A[9],e[13]=A[0]*A[9]*A[14]-A[0]*A[10]*A[13]-A[8]*A[1]*A[14]+A[8]*A[2]*A[13]+A[12]*A[1]*A[10]-A[12]*A[2]*A[9],e[2]=A[1]*A[6]*A[15]-A[1]*A[7]*A[14]-A[5]*A[2]*A[15]+A[5]*A[3]*A[14]+A[13]*A[2]*A[7]-A[13]*A[3]*A[6],e[6]=-A[0]*A[6]*A[15]+A[0]*A[7]*A[14]+A[4]*A[2]*A[15]-A[4]*A[3]*A[14]-A[12]*A[2]*A[7]+A[12]*A[3]*A[6],e[10]=A[0]*A[5]*A[15]-A[0]*A[7]*A[13]-A[4]*A[1]*A[15]+A[4]*A[3]*A[13]+A[12]*A[1]*A[7]-A[12]*A[3]*A[5],e[14]=-A[0]*A[5]*A[14]+A[0]*A[6]*A[13]+A[4]*A[1]*A[14]-A[4]*A[2]*A[13]-A[12]*A[1]*A[6]+A[12]*A[2]*A[5],e[3]=-A[1]*A[6]*A[11]+A[1]*A[7]*A[10]+A[5]*A[2]*A[11]-A[5]*A[3]*A[10]-A[9]*A[2]*A[7]+A[9]*A[3]*A[6],e[7]=A[0]*A[6]*A[11]-A[0]*A[7]*A[10]-A[4]*A[2]*A[11]+A[4]*A[3]*A[10]+A[8]*A[2]*A[7]-A[8]*A[3]*A[6],e[11]=-A[0]*A[5]*A[11]+A[0]*A[7]*A[9]+A[4]*A[1]*A[11]-A[4]*A[3]*A[9]-A[8]*A[1]*A[7]+A[8]*A[3]*A[5],e[15]=A[0]*A[5]*A[10]-A[0]*A[6]*A[9]-A[4]*A[1]*A[10]+A[4]*A[2]*A[9]+A[8]*A[1]*A[6]-A[8]*A[2]*A[5];let t=A[0]*e[0]+A[1]*e[4]+A[2]*e[8]+A[3]*e[12];if(Math.abs(t)<1e-12)return null;t=1/t;for(let n=0;n<16;n++)e[n]*=t;return e},transpose(A){return[A[0],A[4],A[8],A[12],A[1],A[5],A[9],A[13],A[2],A[6],A[10],A[14],A[3],A[7],A[11],A[15]]},projectPoint(A,e){let t=e[0],n=e[1],r=e[2],o=A[0]*t+A[4]*n+A[8]*r+A[12],i=A[1]*t+A[5]*n+A[9]*r+A[13],a=A[2]*t+A[6]*n+A[10]*r+A[14],s=A[3]*t+A[7]*n+A[11]*r+A[15],g=Math.abs(s)>1e-6?1/s:1;return[o*g,i*g,a*g]},projectRectangle(A,e,t){return[cA.projectPoint(A,[0,0,0]),cA.projectPoint(A,[e,0,0]),cA.projectPoint(A,[e,t,0]),cA.projectPoint(A,[0,t,0])]},toFloat32Array(A){return new Float32Array(A)}};function ce(A,e,t=3){let n=0,r=1,o=1,i=0;for(let a=0;a<t;a++){let s=Math.sin(A*r*2*Math.PI+e+a*1.7),g=Math.cos(A*r*1.414*Math.PI+e*2.1+a*.9);n+=(s*.6+g*.4)*o,i+=o,r*=2,o*=.5}return i>0?n/i:0}var ne={createDefaultCamera(A,e,t=50){let n=t*Math.PI/180,r=e/2/Math.tan(n/2);return{eye:[A/2,e/2,-r],target:[A/2,e/2,0],up:[0,-1,0],fov:t,aspect:Math.max(1e-4,A/e),near:1,far:5e4,zoom:1,focusDistance:r,fStop:2.8,maxBlurRadius:32}},computeViewMatrix(A){return cA.lookAt(A.eye,A.target,A.up)},computeProjectionMatrix(A){let e=A.fov*Math.PI/180,t=cA.perspective(e,A.aspect,A.near,A.far);return A.zoom!==1&&A.zoom>0&&(t[0]*=A.zoom,t[5]*=A.zoom),t},computeViewProjectionMatrix(A){let e=ne.computeViewMatrix(A),t=ne.computeProjectionMatrix(A);return cA.multiply(t,e)},dolly(A,e,t){let n=k.normalize(k.subtract(e,A)),r=k.multiplyScalar(n,t);return{eye:k.add(A,r),target:e}},truckPedestal(A,e,t,n,r){let o=k.normalize(k.subtract(e,A)),i=k.normalize(k.cross(o,t)),a=k.cross(i,o),s=k.multiplyScalar(i,n),g=k.multiplyScalar(a,r),I=k.add(s,g);return{eye:k.add(A,I),target:k.add(e,I)}},orbit(A,e,t,n){let r=t*Math.PI/180,o=n*Math.PI/180,i=Math.cos(o),a=Math.sin(o),s=Math.cos(r),g=Math.sin(r),I=A[0]+e*i*g,B=A[1]-e*a,u=A[2]-e*i*s;return[I,B,u]},applyOrientation(A,e,t,n){if(e===0&&t===0&&n===0)return A;let r=k.normalize(k.subtract(A.target,A.eye)),o=k.normalize(k.cross(r,A.up)),i=k.cross(o,r),a=k.distance(A.eye,A.target),s=r,g=i;if(t!==0){let u=t*Math.PI/180,E=Math.cos(u),Q=Math.sin(u);s=k.normalize(k.subtract(k.multiplyScalar(s,E),k.multiplyScalar(o,Q)))}let I=k.normalize(k.cross(s,g));if(e!==0){let u=e*Math.PI/180,E=Math.cos(u),Q=Math.sin(u);s=k.normalize(k.add(k.multiplyScalar(s,E),k.multiplyScalar(g,Q))),g=k.normalize(k.cross(I,s))}if(n!==0){let u=n*Math.PI/180,E=Math.cos(u),Q=Math.sin(u);g=k.normalize(k.add(k.multiplyScalar(g,E),k.multiplyScalar(I,Q)))}let B=k.add(A.eye,k.multiplyScalar(s,a));return{...A,target:B,up:g}},applyCameraShake(A,e,t){let{translationAmplitude:n,rotationAmplitude:r,frequency:o=2.5,octaves:i=3,seed:a=42}=t;if(n<=0&&r<=0)return A;let s=e*o,g=ce(s,a,i)*n,I=ce(s,a+101.5,i)*n,B=ce(s,a+203.7,i)*(n*.5),u=ce(s,a+307.1,i)*r,E=ce(s,a+409.3,i)*r,Q=k.normalize(k.subtract(A.target,A.eye)),C=k.normalize(k.cross(Q,A.up)),h=k.cross(C,Q),m=k.add(k.multiplyScalar(C,g),k.add(k.multiplyScalar(h,I),k.multiplyScalar(Q,B))),p=k.add(A.eye,m),D=k.add(A.target,k.add(k.multiplyScalar(C,E*10),k.multiplyScalar(h,u*10)));return{...A,eye:p,target:D}},computeCircleOfConfusion(A,e,t,n,r=32){if(e<=0||n<=0||A<=0)return 0;let o=Math.abs(A-e),i=t/n,a=o/A*i*.5;return Math.min(r,Math.max(0,a))},computeCameraFrustumPlanes(A){let e=t=>{let n=Math.hypot(t[0],t[1],t[2]);return n===0?t:[t[0]/n,t[1]/n,t[2]/n,t[3]/n]};return{left:e([A[3]+A[0],A[7]+A[4],A[11]+A[8],A[15]+A[12]]),right:e([A[3]-A[0],A[7]-A[4],A[11]-A[8],A[15]-A[12]]),bottom:e([A[3]+A[1],A[7]+A[5],A[11]+A[9],A[15]+A[13]]),top:e([A[3]-A[1],A[7]-A[5],A[11]-A[9],A[15]-A[13]]),near:e([A[2],A[6],A[10],A[14]]),far:e([A[3]-A[2],A[7]-A[6],A[11]-A[10],A[15]-A[14]])}},isBoxInFrustum(A,e,t){let n=[t.left,t.right,t.bottom,t.top,t.near,t.far];for(let r of n){let o=r[0]>0?e[0]:A[0],i=r[1]>0?e[1]:A[1],a=r[2]>0?e[2]:A[2];if(r[0]*o+r[1]*i+r[2]*a+r[3]<0)return!1}return!0}};$();var yn=8,dt=544;function Dn(A){if(!A)return[1,1,1];if(Array.isArray(A)){let r=A[0]??1,o=A[1]??1,i=A[2]??1;return[r>1?r/255:r,o>1?o/255:o,i>1?i/255:i]}if(typeof A=="object"&&A!==null){let r=A.r??1,o=A.g??1,i=A.b??1;return[r>1?r/255:r,o>1?o/255:o,i>1?i/255:i]}if(typeof A!="string")return[1,1,1];let e=A.trim().toLowerCase();if(e.startsWith("#")){let r=e.slice(1);if(r.length===3){let o=Number.parseInt(r[0]+r[0],16)/255,i=Number.parseInt(r[1]+r[1],16)/255,a=Number.parseInt(r[2]+r[2],16)/255;return[o,i,a]}if(r.length>=6){let o=Number.parseInt(r.slice(0,2),16)/255,i=Number.parseInt(r.slice(2,4),16)/255,a=Number.parseInt(r.slice(4,6),16)/255;return[o,i,a]}}let t=e.match(/rgba?\s*\(\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)/);if(t){let r=Number.parseFloat(t[1])/255,o=Number.parseFloat(t[2])/255,i=Number.parseFloat(t[3])/255;return[Math.max(0,Math.min(1,r)),Math.max(0,Math.min(1,o)),Math.max(0,Math.min(1,i))]}let n=e.match(/hsla?\s*\(\s*([\d.]+)\s*,\s*([\d.]+)%?\s*,\s*([\d.]+)%?/);if(n){let r=Number.parseFloat(n[1])/360,o=Number.parseFloat(n[2])/100,i=Number.parseFloat(n[3])/100;return Tr(r,o,i)}return[1,1,1]}function Tr(A,e,t){if(e===0)return[t,t,t];let n=(i,a,s)=>{let g=s;return g<0&&(g+=1),g>1&&(g-=1),g<1/6?i+(a-i)*6*g:g<1/2?a:g<2/3?i+(a-i)*(2/3-g)*6:i},r=t<.5?t*(1+e):t+e-t*e,o=2*t-r;return[n(o,r,A+1/3),n(o,r,A),n(o,r,A-1/3)]}var re={computeNormalMatrix(A){let e=cA.invert(A);return e?[e[0],e[4],e[8],0,e[1],e[5],e[9],0,e[2],e[6],e[10],0,0,0,0,1]:cA.identity()},processLight(A){let e=Dn(A.color),t=A.intensity??1,n=A.position?A.position[0]:A.x??0,r=A.position?A.position[1]:A.y??0,o=A.position?A.position[2]:A.z??0,i=A.lightType??A.type??"directional",a=1;i==="ambient"?a=0:i==="directional"?a=1:i==="point"?a=2:i==="spot"&&(a=3);let s=[0,0,-1];if(A.direction)s=k.normalize(A.direction);else if(A.target||A.targetX!==void 0||A.targetY!==void 0||A.targetZ!==void 0){let m=A.target?A.target[0]:A.targetX??n,p=A.target?A.target[1]:A.targetY??r,D=A.target?A.target[2]:A.targetZ??o,N=[m,p,D],M=k.subtract(N,[n,r,o]);k.length(M)>1e-4&&(s=k.normalize(M))}let g=Math.max(1,A.radius??1e3),I=A.decay??2,B=Math.max(.1,Math.min(180,A.angle??45)),u=Math.max(0,Math.min(1,A.penumbra??.2)),E=B*Math.PI/180,Q=E*(1-u),C=Math.cos(E),h=Math.cos(Q);return{posType:[n,r,o,a],dirRadius:[s[0],s[1],s[2],g],colorIntensity:[e[0],e[1],e[2],t],spotParams:[C,h,I,0]}},packLightsUniforms(A){let e=new Float32Array(dt/4);if(!A||A.length===0)return e[4]=0,e[5]=0,e;let t=0,n=0,r=0,o=[];for(let a of A)if((a.lightType??a.type)==="ambient"){let g=Dn(a.color),I=a.intensity??1;t+=g[0]*I,n+=g[1]*I,r+=g[2]*I}else o.length<yn&&o.push(re.processLight(a));e[0]=t,e[1]=n,e[2]=r,e[3]=1,e[4]=o.length,e[5]=1,e[6]=0,e[7]=0;let i=8;for(let a=0;a<yn;a++){if(a<o.length){let s=o[a];e[i+0]=s.posType[0],e[i+1]=s.posType[1],e[i+2]=s.posType[2],e[i+3]=s.posType[3],e[i+4]=s.dirRadius[0],e[i+5]=s.dirRadius[1],e[i+6]=s.dirRadius[2],e[i+7]=s.dirRadius[3],e[i+8]=s.colorIntensity[0],e[i+9]=s.colorIntensity[1],e[i+10]=s.colorIntensity[2],e[i+11]=s.colorIntensity[3],e[i+12]=s.spotParams[0],e[i+13]=s.spotParams[1],e[i+14]=s.spotParams[2],e[i+15]=s.spotParams[3]}else for(let s=0;s<16;s++)e[i+s]=0;i+=16}return e}};$();var ue=class A{static parse(e,t,n){let r=typeof t=="object"&&t!==null?t:n??{},o=typeof t=="string"?t:r.mtlText,i=[],a=[],s=[],g=[],I={materialName:"default",faces:[]};g.push(I);let B={};o&&Object.assign(B,A.parseMtl(o));let u=e.split(/\r?\n/);for(let R=0;R<u.length;R++){let gA=u[R]?.trim();if(!gA||gA.startsWith("#"))continue;let AA=gA.split(/\s+/),IA=AA[0]?.toLowerCase();if(IA==="mtllib"){let q=AA.slice(1).join(" ").trim();if(r.basePath&&typeof pA<"u"&&pA.existsSync)try{let w=JA.resolve(r.basePath,q);if(pA.existsSync(w)){let L=pA.readFileSync(w,"utf-8");Object.assign(B,A.parseMtl(L))}}catch{}}else if(IA==="v"){let q=Number.parseFloat(AA[1]??"0"),w=Number.parseFloat(AA[2]??"0"),L=Number.parseFloat(AA[3]??"0");i.push([q,w,L])}else if(IA==="vn"){let q=Number.parseFloat(AA[1]??"0"),w=Number.parseFloat(AA[2]??"0"),L=Number.parseFloat(AA[3]??"0");a.push([q,w,L])}else if(IA==="vt"){let q=Number.parseFloat(AA[1]??"0"),w=AA[2]!==void 0?Number.parseFloat(AA[2]):0;s.push([q,w])}else if(IA==="usemtl"){let q=AA[1]??"default";I.faces.length>0?(I={materialName:q,faces:[]},g.push(I)):I.materialName=q}else if(IA==="f"){let q=[];for(let w=1;w<AA.length;w++){let L=AA[w];if(!L)continue;let z=L.split("/"),iA=Number.parseInt(z[0]??"0",10),EA=z[1]&&z[1].length>0?Number.parseInt(z[1],10):0,CA=z[2]&&z[2].length>0?Number.parseInt(z[2],10):0;iA<0&&(iA=i.length+iA+1),EA<0&&(EA=s.length+EA+1),CA<0&&(CA=a.length+CA+1),q.push({v:iA-1,vt:EA-1,vn:CA-1})}if(q.length>=3)for(let w=1;w<q.length-1;w++){let L=q[0],z=q[w],iA=q[w+1];L&&z&&iA&&I.faces.push([L,z,iA])}}}let E=1/0,Q=1/0,C=1/0,h=-1/0,m=-1/0,p=-1/0;for(let R of i){let[gA,AA,IA]=R;gA===void 0||AA===void 0||IA===void 0||(gA<E&&(E=gA),AA<Q&&(Q=AA),IA<C&&(C=IA),gA>h&&(h=gA),AA>m&&(m=AA),IA>p&&(p=IA))}Number.isFinite(E)||(E=-1,Q=-1,C=-1,h=1,m=1,p=1);let D=(E+h)*.5,N=(Q+m)*.5,M=(C+p)*.5,b=Math.max(1e-4,h-E),x=Math.max(1e-4,m-Q),G=Math.max(1e-4,p-C),T=Math.max(b,x,G),Y=1;r.normalizeSize&&r.normalizeSize>0&&(Y=r.normalizeSize/T),typeof r.scale=="number"&&(Y*=r.scale);let O=r.center??!1,v=O?D:0,tA=O?N:0,X=O?M:0,F=[];for(let R=0;R<g.length;R++){let gA=g[R];if(!gA||gA.faces.length===0)continue;let AA=new Map,IA=[],q=[],w=[],L=[],z=!1;for(let CA of gA.faces)for(let QA of CA){let mA=`${QA.v}_${QA.vt}_${QA.vn}`,dA=AA.get(mA);if(dA===void 0){dA=IA.length/3,AA.set(mA,dA);let DA=i[QA.v]??[0,0,0],wA=((DA[0]??0)-v)*Y,UA=((DA[1]??0)-tA)*Y,SA=((DA[2]??0)-X)*Y;if(IA.push(wA,UA,SA),QA.vt>=0&&s[QA.vt]){let kA=s[QA.vt];w.push(kA[0]??0,1-(kA[1]??0))}else w.push(0,0);if(QA.vn>=0&&a[QA.vn]){z=!0;let kA=a[QA.vn];q.push(kA[0]??0,kA[1]??0,kA[2]??0)}else q.push(0,0,0)}L.push(dA)}if(!z||r.smoothNormals){let CA=new Float32Array(IA.length);for(let QA=0;QA<L.length;QA+=3){let mA=L[QA],dA=L[QA+1],DA=L[QA+2],wA=[IA[mA*3],IA[mA*3+1],IA[mA*3+2]],UA=[IA[dA*3],IA[dA*3+1],IA[dA*3+2]],SA=[IA[DA*3],IA[DA*3+1],IA[DA*3+2]],kA=k.subtract(UA,wA),ot=k.subtract(SA,wA),RA=k.cross(kA,ot);CA[mA*3]+=RA[0],CA[mA*3+1]+=RA[1],CA[mA*3+2]+=RA[2],CA[dA*3]+=RA[0],CA[dA*3+1]+=RA[1],CA[dA*3+2]+=RA[2],CA[DA*3]+=RA[0],CA[DA*3+1]+=RA[1],CA[DA*3+2]+=RA[2]}for(let QA=0;QA<IA.length/3;QA++){let mA=CA[QA*3],dA=CA[QA*3+1],DA=CA[QA*3+2],wA=Math.hypot(mA,dA,DA)||1;q[QA*3]=mA/wA,q[QA*3+1]=dA/wA,q[QA*3+2]=DA/wA}}let EA=IA.length/3>65535?new Uint32Array(L):new Uint16Array(L);F.push({id:`mesh_${R}`,name:gA.materialName,positions:new Float32Array(IA),normals:new Float32Array(q),uvs:new Float32Array(w),indices:EA,materialName:gA.materialName})}let sA=(E-v)*Y,H=(Q-tA)*Y,V=(C-X)*Y,rA=(h-v)*Y,K=(m-tA)*Y,S=(p-X)*Y,_=rA-sA,j=K-H,W=S-V,nA=(sA+rA)*.5,lA=(H+K)*.5,oA=(V+S)*.5,aA=Math.hypot(_,j,W)*.5;return{meshes:F,materials:B,animations:[],bounds:{min:[sA,H,V],max:[rA,K,S],center:[nA,lA,oA],size:[_,j,W],boundingSphereRadius:aA}}}static parseMtl(e){let t={},n=null,r=e.split(/\r?\n/);for(let o of r){let i=o.trim();if(!i||i.startsWith("#"))continue;let a=i.split(/\s+/),s=a[0]?.toLowerCase();if(s==="newmtl"){let g=a[1]??"default";n={name:g,diffuseColor:[1,1,1,1],specularColor:[1,1,1],ambientColor:[.2,.2,.2],shininess:32,opacity:1},t[g]=n}else if(n)if(s==="kd"){let g=Number.parseFloat(a[1]??"1"),I=Number.parseFloat(a[2]??"1"),B=Number.parseFloat(a[3]??"1");n.diffuseColor=[g,I,B,n.diffuseColor?.[3]??1]}else if(s==="ks"){let g=Number.parseFloat(a[1]??"1"),I=Number.parseFloat(a[2]??"1"),B=Number.parseFloat(a[3]??"1");n.specularColor=[g,I,B],n.specularIntensity=(g+I+B)/3}else if(s==="ka"){let g=Number.parseFloat(a[1]??"0.2"),I=Number.parseFloat(a[2]??"0.2"),B=Number.parseFloat(a[3]??"0.2");n.ambientColor=[g,I,B]}else if(s==="ns")n.shininess=Number.parseFloat(a[1]??"32");else if(s==="d"||s==="tr"){let g=Number.parseFloat(a[1]??"1");n.opacity=s==="d"?g:1-g,n.diffuseColor&&(n.diffuseColor[3]=n.opacity)}else s==="map_kd"?n.diffuseTexture=a.slice(1).join(" "):(s==="map_bump"||s==="bump")&&(n.normalTexture=a.slice(1).join(" "))}return t}};function Ko(A,e,t={}){return ue.parse(A,e,t)}function Yo(A){return ue.parseMtl(A)}function Ee(A,e,t={}){let n;if(typeof A!="string")n=new TextDecoder().decode(A);else{let r=A.trim();if(!(r.startsWith("v ")||r.startsWith("#")||r.includes(`
1
+ import{a as Cn}from"./chunk-JPXQPP6J.mjs";import{a as un}from"./chunk-CNSHAFEA.mjs";import{h as Bn,l as ln}from"./chunk-24P6DAB3.mjs";import{d as cn}from"./chunk-6YJP57MZ.mjs";import{d as ZA,e as En,f as NA,g as ft,h as Qn}from"./chunk-MJM3NFEC.mjs";import{r as pA}from"./chunk-MTJHQATU.mjs";import{d as Ct}from"./chunk-HYBAPT6I.mjs";import{o as JA}from"./chunk-YAQFFQPG.mjs";import{a as gn,c as In,e as $}from"./chunk-BVF64D6H.mjs";var bn=gn((Wo,wn)=>{$();var Ke=()=>new Proxy(function(){},{get:(A,e)=>e==="__esModule"?!0:e===Symbol.toPrimitive?()=>"":Ke(),apply:()=>Ke(),construct:()=>Ke()});wn.exports=Ke()});var $n=gn((xs,_n)=>{$();var tt=()=>new Proxy(function(){},{get:(A,e)=>e==="__esModule"?!0:e===Symbol.toPrimitive?()=>"":tt(),apply:()=>tt(),construct:()=>tt()});_n.exports=tt()});$();var dn=new Float32Array(2048);for(let A=0;A<2048;A++)dn[A]=.5*(1-Math.cos(2*Math.PI*A/2047));var hn=new Uint16Array(2048);for(let A=0;A<2048;A++){let e=0,t=A;for(let n=0;n<11;n++)e=e<<1|t&1,t>>=1;hn[A]=e}var mn=new Float32Array(2048/2),pn=new Float32Array(2048/2);for(let A=0;A<2048/2;A++){let e=-2*Math.PI*A/2048;mn[A]=Math.cos(e),pn[A]=Math.sin(e)}function Jr(A,e){for(let t=0;t<2048;t++){let n=hn[t]??0;if(n>t){let r=A[t]??0;A[t]=A[n]??0,A[n]=r;let o=e[t]??0;e[t]=e[n]??0,e[n]=o}}for(let t=2;t<=2048;t<<=1){let n=t>>1,r=2048/t;for(let o=0;o<2048;o+=t)for(let i=0;i<n;i++){let a=i*r,s=mn[a]??1,g=pn[a]??0,I=A[o+i]??0,B=e[o+i]??0,u=A[o+i+n]??0,E=e[o+i+n]??0,Q=u*s-E*g,C=u*g+E*s;A[o+i]=I+Q,e[o+i]=B+C,A[o+i+n]=I-Q,e[o+i+n]=B-C}}}var Te=class A{tempReal=new Float32Array(2048);tempImag=new Float32Array(2048);previousBins=new Float32Array(1024);extractAtTime(e,t,n){let r=e.length,o=r>0?e[0]?.length??0:0,a=Math.round(n*t)-1024;for(let M=0;M<2048;M++){let b=a+M,x=0;b>=0&&b<o&&(r===1?x=e[0]?.[b]??0:r>=2&&(x=((e[0]?.[b]??0)+(e[1]?.[b]??0))*.5)),this.tempReal[M]=x*(dn[M]??1),this.tempImag[M]=0}Jr(this.tempReal,this.tempImag);let s=new Float32Array(1024),g=2/2048;for(let M=0;M<1024;M++){let b=this.tempReal[M]??0,x=this.tempImag[M]??0;s[M]=Math.sqrt(b*b+x*x)*g*2}let I=t/2048,B=Math.max(1,Math.round(20/I)),u=Math.max(B+1,Math.round(150/I)),E=0;for(let M=B;M<=u&&M<1024;M++)E+=(s[M]??0)*(s[M]??0);let Q=Math.min(1,Math.sqrt(E/(u-B+1))*4),C=0;for(let M=0;M<1024;M++){let b=(s[M]??0)-(this.previousBins[M]??0);b>0&&(C+=b),this.previousBins[M]=s[M]??0}let h=Math.min(1,C*.15),m=Math.round(300/I),p=Math.min(1023,Math.round(3400/I)),D=0;for(let M=m;M<=p;M++)D+=(s[M]??0)*(s[M]??0);let N=Math.min(1,Math.sqrt(D/(p-m+1))*3.5);return{fftBins:s,bassEnergy:Q,drumTransient:h,vocalEnergy:N,timeMs:n*1e3}}static packBufferData(e){let t=new Float32Array(1028);return t.set(e.fftBins,0),t[1024]=e.bassEnergy,t[1025]=e.drumTransient,t[1026]=e.vocalEnergy,t[1027]=e.timeMs,t}static createGpuBuffer(e,t){let n=t?A.packBufferData(t):new Float32Array(1028),r=e.createBuffer({label:"AudioLatentBuffer",size:4112,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST,mappedAtCreation:!0});return new Float32Array(r.getMappedRange()).set(n),r.unmap(),r}static updateGpuBuffer(e,t,n){let r=A.packBufferData(n);e.queue.writeBuffer(t,0,r)}},fn=class{constructor(e,t,n,r){this.channels=e;this.sampleRate=t;this.fps=n;this.totalFrames=r;let o=new Te,i=t||48e3,a=n||30,s=e[0]?.length??0,g=Math.max(10,Math.ceil(s/i*a)+10),I=typeof r=="number"&&Number.isFinite(r)&&r>0?Math.round(r):g;this.frames=new Array(I);for(let B=0;B<I;B++){let u=B/a;this.frames[B]=o.extractAtTime(e,i,u)}}channels;sampleRate;fps;totalFrames;frames=[];gpuBuffers=new WeakMap;getFrameData(e){let t=Math.max(0,Math.min(this.totalFrames-1,Math.round(e)));return this.frames[t]??{fftBins:new Float32Array(1024),bassEnergy:0,drumTransient:0,vocalEnergy:0,timeMs:t/this.fps*1e3}}getGpuBuffer(e,t){let n=this.gpuBuffers.get(e);n||(n=new Map,this.gpuBuffers.set(e,n));let r=Math.max(0,Math.min(this.totalFrames-1,Math.round(t))),o=n.get(r);if(!o){let i=this.getFrameData(r);o=Te.createGpuBuffer(e,i),n.set(r,o)}return o}};$();$();$();var k={create(A=0,e=0,t=0){return[A,e,t]},copy(A){return[A[0],A[1],A[2]]},set(A,e,t,n){return A[0]=e,A[1]=t,A[2]=n,A},add(A,e){return[A[0]+e[0],A[1]+e[1],A[2]+e[2]]},subtract(A,e){return[A[0]-e[0],A[1]-e[1],A[2]-e[2]]},multiplyScalar(A,e){return[A[0]*e,A[1]*e,A[2]*e]},dot(A,e){return A[0]*e[0]+A[1]*e[1]+A[2]*e[2]},cross(A,e){return[A[1]*e[2]-A[2]*e[1],A[2]*e[0]-A[0]*e[2],A[0]*e[1]-A[1]*e[0]]},lengthSq(A){return A[0]*A[0]+A[1]*A[1]+A[2]*A[2]},length(A){return Math.hypot(A[0],A[1],A[2])},distance(A,e){return Math.hypot(A[0]-e[0],A[1]-e[1],A[2]-e[2])},normalize(A){let e=Math.hypot(A[0],A[1],A[2]);if(e===0)return[0,0,0];let t=1/e;return[A[0]*t,A[1]*t,A[2]*t]},lerp(A,e,t){return[A[0]+(e[0]-A[0])*t,A[1]+(e[1]-A[1])*t,A[2]+(e[2]-A[2])*t]},equals(A,e,t=1e-6){return Math.abs(A[0]-e[0])<=t&&Math.abs(A[1]-e[1])<=t&&Math.abs(A[2]-e[2])<=t}};var cA={identity(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]},copy(A){return[...A]},multiply(A,e){let t=new Array(16);for(let n=0;n<4;n++)for(let r=0;r<4;r++)t[r*4+n]=A[0+n]*e[r*4+0]+A[4+n]*e[r*4+1]+A[8+n]*e[r*4+2]+A[12+n]*e[r*4+3];return t},translate(A,e,t=0){return[1,0,0,0,0,1,0,0,0,0,1,0,A,e,t,1]},scale(A,e,t=1){return[A,0,0,0,0,e,0,0,0,0,t,0,0,0,0,1]},rotateX(A){let e=Math.cos(A),t=Math.sin(A);return[1,0,0,0,0,e,t,0,0,-t,e,0,0,0,0,1]},rotateY(A){let e=Math.cos(A),t=Math.sin(A);return[e,0,-t,0,0,1,0,0,t,0,e,0,0,0,0,1]},rotateZ(A){let e=Math.cos(A),t=Math.sin(A);return[e,t,0,0,-t,e,0,0,0,0,1,0,0,0,0,1]},rotateAxis(A,e){let t=k.normalize(A),n=t[0],r=t[1],o=t[2],i=Math.cos(e),a=Math.sin(e),s=1-i;return[s*n*n+i,s*n*r+a*o,s*n*o-a*r,0,s*n*r-a*o,s*r*r+i,s*r*o+a*n,0,s*n*o+a*r,s*r*o-a*n,s*o*o+i,0,0,0,0,1]},lookAt(A,e,t=[0,-1,0]){let n=k.subtract(e,A);k.lengthSq(n)===0?n=[0,0,1]:n=k.normalize(n);let r=k.cross(n,t);k.lengthSq(r)===0?r=[1,0,0]:r=k.normalize(r);let o=k.cross(r,n);return[r[0],o[0],n[0],0,r[1],o[1],n[1],0,r[2],o[2],n[2],0,-k.dot(r,A),-k.dot(o,A),-k.dot(n,A),1]},perspective(A,e,t,n){let r=1/Math.tan(A/2),o=1/(n-t);return[r/e,0,0,0,0,r,0,0,0,0,n*o,1,0,0,-t*n*o,0]},orthographic(A,e,t,n,r,o){let i=1/(e-A),a=1/(n-t),s=1/(o-r);return[2*i,0,0,0,0,2*a,0,0,0,0,s,0,-(e+A)*i,-(n+t)*a,-r*s,1]},invert(A){let e=new Array(16);e[0]=A[5]*A[10]*A[15]-A[5]*A[11]*A[14]-A[9]*A[6]*A[15]+A[9]*A[7]*A[14]+A[13]*A[6]*A[11]-A[13]*A[7]*A[10],e[4]=-A[4]*A[10]*A[15]+A[4]*A[11]*A[14]+A[8]*A[6]*A[15]-A[8]*A[7]*A[14]-A[12]*A[6]*A[11]+A[12]*A[7]*A[10],e[8]=A[4]*A[9]*A[15]-A[4]*A[11]*A[13]-A[8]*A[5]*A[15]+A[8]*A[7]*A[13]+A[12]*A[5]*A[11]-A[12]*A[7]*A[9],e[12]=-A[4]*A[9]*A[14]+A[4]*A[10]*A[13]+A[8]*A[5]*A[14]-A[8]*A[6]*A[13]-A[12]*A[5]*A[10]+A[12]*A[6]*A[9],e[1]=-A[1]*A[10]*A[15]+A[1]*A[11]*A[14]+A[9]*A[2]*A[15]-A[9]*A[3]*A[14]-A[13]*A[2]*A[11]+A[13]*A[3]*A[10],e[5]=A[0]*A[10]*A[15]-A[0]*A[11]*A[14]-A[8]*A[2]*A[15]+A[8]*A[3]*A[14]+A[12]*A[2]*A[11]-A[12]*A[3]*A[10],e[9]=-A[0]*A[9]*A[15]+A[0]*A[11]*A[13]+A[8]*A[1]*A[15]-A[8]*A[3]*A[13]-A[12]*A[1]*A[11]+A[12]*A[3]*A[9],e[13]=A[0]*A[9]*A[14]-A[0]*A[10]*A[13]-A[8]*A[1]*A[14]+A[8]*A[2]*A[13]+A[12]*A[1]*A[10]-A[12]*A[2]*A[9],e[2]=A[1]*A[6]*A[15]-A[1]*A[7]*A[14]-A[5]*A[2]*A[15]+A[5]*A[3]*A[14]+A[13]*A[2]*A[7]-A[13]*A[3]*A[6],e[6]=-A[0]*A[6]*A[15]+A[0]*A[7]*A[14]+A[4]*A[2]*A[15]-A[4]*A[3]*A[14]-A[12]*A[2]*A[7]+A[12]*A[3]*A[6],e[10]=A[0]*A[5]*A[15]-A[0]*A[7]*A[13]-A[4]*A[1]*A[15]+A[4]*A[3]*A[13]+A[12]*A[1]*A[7]-A[12]*A[3]*A[5],e[14]=-A[0]*A[5]*A[14]+A[0]*A[6]*A[13]+A[4]*A[1]*A[14]-A[4]*A[2]*A[13]-A[12]*A[1]*A[6]+A[12]*A[2]*A[5],e[3]=-A[1]*A[6]*A[11]+A[1]*A[7]*A[10]+A[5]*A[2]*A[11]-A[5]*A[3]*A[10]-A[9]*A[2]*A[7]+A[9]*A[3]*A[6],e[7]=A[0]*A[6]*A[11]-A[0]*A[7]*A[10]-A[4]*A[2]*A[11]+A[4]*A[3]*A[10]+A[8]*A[2]*A[7]-A[8]*A[3]*A[6],e[11]=-A[0]*A[5]*A[11]+A[0]*A[7]*A[9]+A[4]*A[1]*A[11]-A[4]*A[3]*A[9]-A[8]*A[1]*A[7]+A[8]*A[3]*A[5],e[15]=A[0]*A[5]*A[10]-A[0]*A[6]*A[9]-A[4]*A[1]*A[10]+A[4]*A[2]*A[9]+A[8]*A[1]*A[6]-A[8]*A[2]*A[5];let t=A[0]*e[0]+A[1]*e[4]+A[2]*e[8]+A[3]*e[12];if(Math.abs(t)<1e-12)return null;t=1/t;for(let n=0;n<16;n++)e[n]*=t;return e},transpose(A){return[A[0],A[4],A[8],A[12],A[1],A[5],A[9],A[13],A[2],A[6],A[10],A[14],A[3],A[7],A[11],A[15]]},projectPoint(A,e){let t=e[0],n=e[1],r=e[2],o=A[0]*t+A[4]*n+A[8]*r+A[12],i=A[1]*t+A[5]*n+A[9]*r+A[13],a=A[2]*t+A[6]*n+A[10]*r+A[14],s=A[3]*t+A[7]*n+A[11]*r+A[15],g=Math.abs(s)>1e-6?1/s:1;return[o*g,i*g,a*g]},projectRectangle(A,e,t){return[cA.projectPoint(A,[0,0,0]),cA.projectPoint(A,[e,0,0]),cA.projectPoint(A,[e,t,0]),cA.projectPoint(A,[0,t,0])]},toFloat32Array(A){return new Float32Array(A)}};function ce(A,e,t=3){let n=0,r=1,o=1,i=0;for(let a=0;a<t;a++){let s=Math.sin(A*r*2*Math.PI+e+a*1.7),g=Math.cos(A*r*1.414*Math.PI+e*2.1+a*.9);n+=(s*.6+g*.4)*o,i+=o,r*=2,o*=.5}return i>0?n/i:0}var ne={createDefaultCamera(A,e,t=50){let n=t*Math.PI/180,r=e/2/Math.tan(n/2);return{eye:[A/2,e/2,-r],target:[A/2,e/2,0],up:[0,-1,0],fov:t,aspect:Math.max(1e-4,A/e),near:1,far:5e4,zoom:1,focusDistance:r,fStop:2.8,maxBlurRadius:32}},computeViewMatrix(A){return cA.lookAt(A.eye,A.target,A.up)},computeProjectionMatrix(A){let e=A.fov*Math.PI/180,t=cA.perspective(e,A.aspect,A.near,A.far);return A.zoom!==1&&A.zoom>0&&(t[0]*=A.zoom,t[5]*=A.zoom),t},computeViewProjectionMatrix(A){let e=ne.computeViewMatrix(A),t=ne.computeProjectionMatrix(A);return cA.multiply(t,e)},dolly(A,e,t){let n=k.normalize(k.subtract(e,A)),r=k.multiplyScalar(n,t);return{eye:k.add(A,r),target:e}},truckPedestal(A,e,t,n,r){let o=k.normalize(k.subtract(e,A)),i=k.normalize(k.cross(o,t)),a=k.cross(i,o),s=k.multiplyScalar(i,n),g=k.multiplyScalar(a,r),I=k.add(s,g);return{eye:k.add(A,I),target:k.add(e,I)}},orbit(A,e,t,n){let r=t*Math.PI/180,o=n*Math.PI/180,i=Math.cos(o),a=Math.sin(o),s=Math.cos(r),g=Math.sin(r),I=A[0]+e*i*g,B=A[1]-e*a,u=A[2]-e*i*s;return[I,B,u]},applyOrientation(A,e,t,n){if(e===0&&t===0&&n===0)return A;let r=k.normalize(k.subtract(A.target,A.eye)),o=k.normalize(k.cross(r,A.up)),i=k.cross(o,r),a=k.distance(A.eye,A.target),s=r,g=i;if(t!==0){let u=t*Math.PI/180,E=Math.cos(u),Q=Math.sin(u);s=k.normalize(k.subtract(k.multiplyScalar(s,E),k.multiplyScalar(o,Q)))}let I=k.normalize(k.cross(s,g));if(e!==0){let u=e*Math.PI/180,E=Math.cos(u),Q=Math.sin(u);s=k.normalize(k.add(k.multiplyScalar(s,E),k.multiplyScalar(g,Q))),g=k.normalize(k.cross(I,s))}if(n!==0){let u=n*Math.PI/180,E=Math.cos(u),Q=Math.sin(u);g=k.normalize(k.add(k.multiplyScalar(g,E),k.multiplyScalar(I,Q)))}let B=k.add(A.eye,k.multiplyScalar(s,a));return{...A,target:B,up:g}},applyCameraShake(A,e,t){let{translationAmplitude:n,rotationAmplitude:r,frequency:o=2.5,octaves:i=3,seed:a=42}=t;if(n<=0&&r<=0)return A;let s=e*o,g=ce(s,a,i)*n,I=ce(s,a+101.5,i)*n,B=ce(s,a+203.7,i)*(n*.5),u=ce(s,a+307.1,i)*r,E=ce(s,a+409.3,i)*r,Q=k.normalize(k.subtract(A.target,A.eye)),C=k.normalize(k.cross(Q,A.up)),h=k.cross(C,Q),m=k.add(k.multiplyScalar(C,g),k.add(k.multiplyScalar(h,I),k.multiplyScalar(Q,B))),p=k.add(A.eye,m),D=k.add(A.target,k.add(k.multiplyScalar(C,E*10),k.multiplyScalar(h,u*10)));return{...A,eye:p,target:D}},computeCircleOfConfusion(A,e,t,n,r=32){if(e<=0||n<=0||A<=0)return 0;let o=Math.abs(A-e),i=t/n,a=o/A*i*.5;return Math.min(r,Math.max(0,a))},computeCameraFrustumPlanes(A){let e=t=>{let n=Math.hypot(t[0],t[1],t[2]);return n===0?t:[t[0]/n,t[1]/n,t[2]/n,t[3]/n]};return{left:e([A[3]+A[0],A[7]+A[4],A[11]+A[8],A[15]+A[12]]),right:e([A[3]-A[0],A[7]-A[4],A[11]-A[8],A[15]-A[12]]),bottom:e([A[3]+A[1],A[7]+A[5],A[11]+A[9],A[15]+A[13]]),top:e([A[3]-A[1],A[7]-A[5],A[11]-A[9],A[15]-A[13]]),near:e([A[2],A[6],A[10],A[14]]),far:e([A[3]-A[2],A[7]-A[6],A[11]-A[10],A[15]-A[14]])}},isBoxInFrustum(A,e,t){let n=[t.left,t.right,t.bottom,t.top,t.near,t.far];for(let r of n){let o=r[0]>0?e[0]:A[0],i=r[1]>0?e[1]:A[1],a=r[2]>0?e[2]:A[2];if(r[0]*o+r[1]*i+r[2]*a+r[3]<0)return!1}return!0}};$();var yn=8,dt=544;function Dn(A){if(!A)return[1,1,1];if(Array.isArray(A)){let r=A[0]??1,o=A[1]??1,i=A[2]??1;return[r>1?r/255:r,o>1?o/255:o,i>1?i/255:i]}if(typeof A=="object"&&A!==null){let r=A.r??1,o=A.g??1,i=A.b??1;return[r>1?r/255:r,o>1?o/255:o,i>1?i/255:i]}if(typeof A!="string")return[1,1,1];let e=A.trim().toLowerCase();if(e.startsWith("#")){let r=e.slice(1);if(r.length===3){let o=Number.parseInt(r[0]+r[0],16)/255,i=Number.parseInt(r[1]+r[1],16)/255,a=Number.parseInt(r[2]+r[2],16)/255;return[o,i,a]}if(r.length>=6){let o=Number.parseInt(r.slice(0,2),16)/255,i=Number.parseInt(r.slice(2,4),16)/255,a=Number.parseInt(r.slice(4,6),16)/255;return[o,i,a]}}let t=e.match(/rgba?\s*\(\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)/);if(t){let r=Number.parseFloat(t[1])/255,o=Number.parseFloat(t[2])/255,i=Number.parseFloat(t[3])/255;return[Math.max(0,Math.min(1,r)),Math.max(0,Math.min(1,o)),Math.max(0,Math.min(1,i))]}let n=e.match(/hsla?\s*\(\s*([\d.]+)\s*,\s*([\d.]+)%?\s*,\s*([\d.]+)%?/);if(n){let r=Number.parseFloat(n[1])/360,o=Number.parseFloat(n[2])/100,i=Number.parseFloat(n[3])/100;return Tr(r,o,i)}return[1,1,1]}function Tr(A,e,t){if(e===0)return[t,t,t];let n=(i,a,s)=>{let g=s;return g<0&&(g+=1),g>1&&(g-=1),g<1/6?i+(a-i)*6*g:g<1/2?a:g<2/3?i+(a-i)*(2/3-g)*6:i},r=t<.5?t*(1+e):t+e-t*e,o=2*t-r;return[n(o,r,A+1/3),n(o,r,A),n(o,r,A-1/3)]}var re={computeNormalMatrix(A){let e=cA.invert(A);return e?[e[0],e[4],e[8],0,e[1],e[5],e[9],0,e[2],e[6],e[10],0,0,0,0,1]:cA.identity()},processLight(A){let e=Dn(A.color),t=A.intensity??1,n=A.position?A.position[0]:A.x??0,r=A.position?A.position[1]:A.y??0,o=A.position?A.position[2]:A.z??0,i=A.lightType??A.type??"directional",a=1;i==="ambient"?a=0:i==="directional"?a=1:i==="point"?a=2:i==="spot"&&(a=3);let s=[0,0,-1];if(A.direction)s=k.normalize(A.direction);else if(A.target||A.targetX!==void 0||A.targetY!==void 0||A.targetZ!==void 0){let m=A.target?A.target[0]:A.targetX??n,p=A.target?A.target[1]:A.targetY??r,D=A.target?A.target[2]:A.targetZ??o,N=[m,p,D],M=k.subtract(N,[n,r,o]);k.length(M)>1e-4&&(s=k.normalize(M))}let g=Math.max(1,A.radius??1e3),I=A.decay??2,B=Math.max(.1,Math.min(180,A.angle??45)),u=Math.max(0,Math.min(1,A.penumbra??.2)),E=B*Math.PI/180,Q=E*(1-u),C=Math.cos(E),h=Math.cos(Q);return{posType:[n,r,o,a],dirRadius:[s[0],s[1],s[2],g],colorIntensity:[e[0],e[1],e[2],t],spotParams:[C,h,I,0]}},packLightsUniforms(A){let e=new Float32Array(dt/4);if(!A||A.length===0)return e[4]=0,e[5]=0,e;let t=0,n=0,r=0,o=[];for(let a of A)if((a.lightType??a.type)==="ambient"){let g=Dn(a.color),I=a.intensity??1;t+=g[0]*I,n+=g[1]*I,r+=g[2]*I}else o.length<yn&&o.push(re.processLight(a));e[0]=t,e[1]=n,e[2]=r,e[3]=1,e[4]=o.length,e[5]=1,e[6]=0,e[7]=0;let i=8;for(let a=0;a<yn;a++){if(a<o.length){let s=o[a];e[i+0]=s.posType[0],e[i+1]=s.posType[1],e[i+2]=s.posType[2],e[i+3]=s.posType[3],e[i+4]=s.dirRadius[0],e[i+5]=s.dirRadius[1],e[i+6]=s.dirRadius[2],e[i+7]=s.dirRadius[3],e[i+8]=s.colorIntensity[0],e[i+9]=s.colorIntensity[1],e[i+10]=s.colorIntensity[2],e[i+11]=s.colorIntensity[3],e[i+12]=s.spotParams[0],e[i+13]=s.spotParams[1],e[i+14]=s.spotParams[2],e[i+15]=s.spotParams[3]}else for(let s=0;s<16;s++)e[i+s]=0;i+=16}return e}};$();var ue=class A{static parse(e,t,n){let r=typeof t=="object"&&t!==null?t:n??{},o=typeof t=="string"?t:r.mtlText,i=[],a=[],s=[],g=[],I={materialName:"default",faces:[]};g.push(I);let B={};o&&Object.assign(B,A.parseMtl(o));let u=e.split(/\r?\n/);for(let R=0;R<u.length;R++){let gA=u[R]?.trim();if(!gA||gA.startsWith("#"))continue;let AA=gA.split(/\s+/),IA=AA[0]?.toLowerCase();if(IA==="mtllib"){let q=AA.slice(1).join(" ").trim();if(r.basePath&&typeof pA<"u"&&pA.existsSync)try{let w=JA.resolve(r.basePath,q);if(pA.existsSync(w)){let L=pA.readFileSync(w,"utf-8");Object.assign(B,A.parseMtl(L))}}catch{}}else if(IA==="v"){let q=Number.parseFloat(AA[1]??"0"),w=Number.parseFloat(AA[2]??"0"),L=Number.parseFloat(AA[3]??"0");i.push([q,w,L])}else if(IA==="vn"){let q=Number.parseFloat(AA[1]??"0"),w=Number.parseFloat(AA[2]??"0"),L=Number.parseFloat(AA[3]??"0");a.push([q,w,L])}else if(IA==="vt"){let q=Number.parseFloat(AA[1]??"0"),w=AA[2]!==void 0?Number.parseFloat(AA[2]):0;s.push([q,w])}else if(IA==="usemtl"){let q=AA[1]??"default";I.faces.length>0?(I={materialName:q,faces:[]},g.push(I)):I.materialName=q}else if(IA==="f"){let q=[];for(let w=1;w<AA.length;w++){let L=AA[w];if(!L)continue;let z=L.split("/"),iA=Number.parseInt(z[0]??"0",10),EA=z[1]&&z[1].length>0?Number.parseInt(z[1],10):0,CA=z[2]&&z[2].length>0?Number.parseInt(z[2],10):0;iA<0&&(iA=i.length+iA+1),EA<0&&(EA=s.length+EA+1),CA<0&&(CA=a.length+CA+1),q.push({v:iA-1,vt:EA-1,vn:CA-1})}if(q.length>=3)for(let w=1;w<q.length-1;w++){let L=q[0],z=q[w],iA=q[w+1];L&&z&&iA&&I.faces.push([L,z,iA])}}}let E=1/0,Q=1/0,C=1/0,h=-1/0,m=-1/0,p=-1/0;for(let R of i){let[gA,AA,IA]=R;gA===void 0||AA===void 0||IA===void 0||(gA<E&&(E=gA),AA<Q&&(Q=AA),IA<C&&(C=IA),gA>h&&(h=gA),AA>m&&(m=AA),IA>p&&(p=IA))}Number.isFinite(E)||(E=-1,Q=-1,C=-1,h=1,m=1,p=1);let D=(E+h)*.5,N=(Q+m)*.5,M=(C+p)*.5,b=Math.max(1e-4,h-E),x=Math.max(1e-4,m-Q),G=Math.max(1e-4,p-C),T=Math.max(b,x,G),Y=1;r.normalizeSize&&r.normalizeSize>0&&(Y=r.normalizeSize/T),typeof r.scale=="number"&&(Y*=r.scale);let O=r.center??!1,v=O?D:0,tA=O?N:0,X=O?M:0,F=[];for(let R=0;R<g.length;R++){let gA=g[R];if(!gA||gA.faces.length===0)continue;let AA=new Map,IA=[],q=[],w=[],L=[],z=!1;for(let CA of gA.faces)for(let QA of CA){let mA=`${QA.v}_${QA.vt}_${QA.vn}`,dA=AA.get(mA);if(dA===void 0){dA=IA.length/3,AA.set(mA,dA);let DA=i[QA.v]??[0,0,0],wA=((DA[0]??0)-v)*Y,UA=((DA[1]??0)-tA)*Y,SA=((DA[2]??0)-X)*Y;if(IA.push(wA,UA,SA),QA.vt>=0&&s[QA.vt]){let kA=s[QA.vt];w.push(kA[0]??0,1-(kA[1]??0))}else w.push(0,0);if(QA.vn>=0&&a[QA.vn]){z=!0;let kA=a[QA.vn];q.push(kA[0]??0,kA[1]??0,kA[2]??0)}else q.push(0,0,0)}L.push(dA)}if(!z||r.smoothNormals){let CA=new Float32Array(IA.length);for(let QA=0;QA<L.length;QA+=3){let mA=L[QA],dA=L[QA+1],DA=L[QA+2],wA=[IA[mA*3],IA[mA*3+1],IA[mA*3+2]],UA=[IA[dA*3],IA[dA*3+1],IA[dA*3+2]],SA=[IA[DA*3],IA[DA*3+1],IA[DA*3+2]],kA=k.subtract(UA,wA),ot=k.subtract(SA,wA),RA=k.cross(kA,ot);CA[mA*3]+=RA[0],CA[mA*3+1]+=RA[1],CA[mA*3+2]+=RA[2],CA[dA*3]+=RA[0],CA[dA*3+1]+=RA[1],CA[dA*3+2]+=RA[2],CA[DA*3]+=RA[0],CA[DA*3+1]+=RA[1],CA[DA*3+2]+=RA[2]}for(let QA=0;QA<IA.length/3;QA++){let mA=CA[QA*3],dA=CA[QA*3+1],DA=CA[QA*3+2],wA=Math.hypot(mA,dA,DA)||1;q[QA*3]=mA/wA,q[QA*3+1]=dA/wA,q[QA*3+2]=DA/wA}}let EA=IA.length/3>65535?new Uint32Array(L):new Uint16Array(L);F.push({id:`mesh_${R}`,name:gA.materialName,positions:new Float32Array(IA),normals:new Float32Array(q),uvs:new Float32Array(w),indices:EA,materialName:gA.materialName})}let sA=(E-v)*Y,H=(Q-tA)*Y,V=(C-X)*Y,rA=(h-v)*Y,K=(m-tA)*Y,S=(p-X)*Y,_=rA-sA,j=K-H,W=S-V,nA=(sA+rA)*.5,lA=(H+K)*.5,oA=(V+S)*.5,aA=Math.hypot(_,j,W)*.5;return{meshes:F,materials:B,animations:[],bounds:{min:[sA,H,V],max:[rA,K,S],center:[nA,lA,oA],size:[_,j,W],boundingSphereRadius:aA}}}static parseMtl(e){let t={},n=null,r=e.split(/\r?\n/);for(let o of r){let i=o.trim();if(!i||i.startsWith("#"))continue;let a=i.split(/\s+/),s=a[0]?.toLowerCase();if(s==="newmtl"){let g=a[1]??"default";n={name:g,diffuseColor:[1,1,1,1],specularColor:[1,1,1],ambientColor:[.2,.2,.2],shininess:32,opacity:1},t[g]=n}else if(n)if(s==="kd"){let g=Number.parseFloat(a[1]??"1"),I=Number.parseFloat(a[2]??"1"),B=Number.parseFloat(a[3]??"1");n.diffuseColor=[g,I,B,n.diffuseColor?.[3]??1]}else if(s==="ks"){let g=Number.parseFloat(a[1]??"1"),I=Number.parseFloat(a[2]??"1"),B=Number.parseFloat(a[3]??"1");n.specularColor=[g,I,B],n.specularIntensity=(g+I+B)/3}else if(s==="ka"){let g=Number.parseFloat(a[1]??"0.2"),I=Number.parseFloat(a[2]??"0.2"),B=Number.parseFloat(a[3]??"0.2");n.ambientColor=[g,I,B]}else if(s==="ns")n.shininess=Number.parseFloat(a[1]??"32");else if(s==="d"||s==="tr"){let g=Number.parseFloat(a[1]??"1");n.opacity=s==="d"?g:1-g,n.diffuseColor&&(n.diffuseColor[3]=n.opacity)}else s==="map_kd"?n.diffuseTexture=a.slice(1).join(" "):(s==="map_bump"||s==="bump")&&(n.normalTexture=a.slice(1).join(" "))}return t}};function Ko(A,e,t={}){return ue.parse(A,e,t)}function Yo(A){return ue.parseMtl(A)}function Ee(A,e,t={}){let n;if(typeof A!="string")n=new TextDecoder().decode(A);else{let r=A.trim();if(!(r.startsWith("v ")||r.startsWith("#")||r.includes(`
2
2
  v `)||r.includes("\rv "))&&typeof pA<"u"&&pA.existsSync)try{let i=A.startsWith("file://")?A.slice(7):A;try{i=decodeURIComponent(i)}catch{}pA.existsSync(i)?(n=pA.readFileSync(i,"utf-8"),t={basePath:t.basePath??JA.dirname(i),...t}):n=A}catch{n=A}else n=A}return ue.parse(n,e,t)}$();var xn=In(bn(),1);var qA=class A{static FBX_KTIME=46186158e3;static parse(e,t={}){let n=typeof e=="string"?A.parseAscii(e):A.isBinary(e)?A.parseBinary(e):A.parseAscii(new TextDecoder().decode(e));return A.buildModelFromTree(n,t)}static isBinary(e){let t=e instanceof Uint8Array?e:new Uint8Array(e);if(t.length<27)return!1;let n="Kaydara FBX Binary \0\0";for(let r=0;r<n.length;r++)if(t[r]!==n.charCodeAt(r))return!1;return!0}static parseBinary(e){let t=e instanceof Uint8Array?e:new Uint8Array(e),n=new DataView(t.buffer,t.byteOffset,t.byteLength),o=n.getUint32(23,!0)>=7500,i=27,a={name:"Root",props:[],children:[]},s=()=>{if(i>=t.byteLength)return null;let g,I,B;if(o){if(i+25>t.byteLength)return null;g=Number(n.getBigUint64(i,!0)),I=Number(n.getBigUint64(i+8,!0)),B=n.getUint8(i+24),i+=25}else{if(i+13>t.byteLength)return null;g=n.getUint32(i,!0),I=n.getUint32(i+4,!0),B=n.getUint8(i+12),i+=13}if(g===0)return null;let u=new TextDecoder().decode(t.subarray(i,i+B));i+=B;let E=[];for(let C=0;C<I;C++){let h=String.fromCharCode(t[i]);switch(i+=1,h){case"Y":{E.push(n.getInt16(i,!0)),i+=2;break}case"C":case"B":{E.push(n.getUint8(i)!==0),i+=1;break}case"I":{E.push(n.getInt32(i,!0)),i+=4;break}case"F":{E.push(n.getFloat32(i,!0)),i+=4;break}case"D":{E.push(n.getFloat64(i,!0)),i+=8;break}case"L":{E.push(Number(n.getBigInt64(i,!0))),i+=8;break}case"S":{let m=n.getUint32(i,!0);i+=4;let p=new TextDecoder().decode(t.subarray(i,i+m));E.push(p),i+=m;break}case"R":{let m=n.getUint32(i,!0);i+=4;let p=t.subarray(i,i+m);E.push(p),i+=m;break}case"f":case"d":case"i":case"l":case"b":case"c":{let m=n.getUint32(i,!0),p=n.getUint32(i+4,!0),D=n.getUint32(i+8,!0);i+=12;let N;if(p===1){let b=t.subarray(i,i+D);N=(0,xn.inflateSync)(b),i+=D}else{let x=m*(h==="d"||h==="l"?8:h==="f"||h==="i"?4:1);N=t.subarray(i,i+x),i+=x}let M=new DataView(N.buffer,N.byteOffset,N.byteLength);if(h==="f"){let b=new Float32Array(m);for(let x=0;x<m;x++)b[x]=M.getFloat32(x*4,!0);E.push(b)}else if(h==="d"){let b=new Float64Array(m);for(let x=0;x<m;x++)b[x]=M.getFloat64(x*8,!0);E.push(b)}else if(h==="i"){let b=new Int32Array(m);for(let x=0;x<m;x++)b[x]=M.getInt32(x*4,!0);E.push(b)}else if(h==="l"){let b=new Float64Array(m);for(let x=0;x<m;x++)b[x]=Number(M.getBigInt64(x*8,!0));E.push(b)}else if(h==="b"){let b=new Uint8Array(m);for(let x=0;x<m;x++)b[x]=M.getUint8(x);E.push(b)}else E.push(N);break}default:break}}let Q=[];for(;i<g;){let C=s();if(C)Q.push(C);else break}return i=g,{name:u,props:E,children:Q}};for(;i<t.byteLength-(o?25:13);){let g=s();if(g)a.children.push(g);else break}return a}static parseAscii(e){let t={name:"Root",props:[],children:[]},n=[t],r=e.split(/\r?\n/);for(let o=0;o<r.length;o++){let i=r[o]?.trim();if(!i||i.startsWith(";"))continue;if(i==="}"){n.length>1&&n.pop();continue}let a=i.indexOf(":");if(a===-1)continue;let s=i.substring(0,a).trim(),g=i.substring(a+1).trim(),I=g.endsWith("{"),B=I?g.slice(0,-1).trim():g,u=[];if(B){let C=B.split(",").map(h=>h.trim());for(let h of C)h.startsWith('"')&&h.endsWith('"')?u.push(h.slice(1,-1)):Number.isNaN(Number(h))?u.push(h):u.push(Number(h))}let E={name:s,props:u,children:[]},Q=n[n.length-1];Q&&Q.children.push(E),I&&n.push(E)}return t}static buildModelFromTree(e,t={}){let n=e.children.find(G=>G.name==="Objects"),r=e.children.find(G=>G.name==="Connections"),o=new Map;if(n)for(let G of n.children){let T=G.props[0]??0,O=String(G.props[1]??"").split("::"),v=O.length>1?O[1]:O[0],tA=String(G.props[2]??G.name);o.set(T,{id:T,name:v,type:tA,node:G})}let i=[];if(r){for(let G of r.children)if(G.name==="C"||G.name==="Connect"){let T=String(G.props[0]),Y=G.props[1]??0,O=G.props[2]??0,v=T==="OP"?String(G.props[3]):void 0;i.push({childId:Y,parentId:O,propName:v})}}let a=[],s={};function g(G){if(!G)return[];if(G.props[0]instanceof Float32Array||G.props[0]instanceof Float64Array||G.props[0]instanceof Int32Array||Array.isArray(G.props[0]))return G.props[0];let T=G.children.find(Y=>Y.name==="a");return T&&T.props.length>0?T.props:Array.isArray(G.props)&&G.props.length>0&&typeof G.props[0]=="number"?G.props:[]}for(let[G,T]of o)if(T.node.name==="Geometry"&&(T.type==="Mesh"||T.node.props[2]==="Mesh"||T.type==="")){let Y=T.node,O=Y.children.find(w=>w.name==="Vertices"),v=Y.children.find(w=>w.name==="PolygonVertexIndex"),tA=Y.children.find(w=>w.name==="LayerElementNormal"),X=Y.children.find(w=>w.name==="LayerElementUV");if(!O||!v)continue;let F=g(O),sA=g(v),H=tA?.children.find(w=>w.name==="Normals"),V=g(H),rA=X?.children.find(w=>w.name==="UV"),K=X?.children.find(w=>w.name==="UVIndex"),S=g(rA),_=g(K),j=[],W=[],nA=[];for(let w=0;w<sA.length;w++){let L=sA[w];if(L<0){if(nA.push(-(L+1)),W.push(w),nA.length>=3)for(let z=1;z<nA.length-1;z++)j.push([nA[0],nA[z],nA[z+1]]);nA=[]}else nA.push(L),W.push(w)}let lA=[],oA=[],aA=[],R=[];for(let w=0;w<j.length;w++){let L=j[w];for(let z=0;z<3;z++){let iA=L[z],EA=lA.length/3,CA=F[iA*3]??0,QA=F[iA*3+1]??0,mA=F[iA*3+2]??0;if(lA.push(CA,QA,mA),V.length>0){let dA=V[iA*3]??0,DA=V[iA*3+1]??0,wA=V[iA*3+2]??0;oA.push(dA,DA,wA)}else oA.push(0,0,1);if(S.length>0){let dA=iA;_.length>0&&(dA=_[iA]??iA);let DA=S[dA*2]??0,wA=S[dA*2+1]??0;aA.push(DA,1-wA)}else aA.push(0,0);R.push(EA)}}if(V.length===0||t.smoothNormals){let w=new Float32Array(lA.length);for(let L=0;L<R.length;L+=3){let z=R[L],iA=R[L+1],EA=R[L+2],CA=[lA[z*3],lA[z*3+1],lA[z*3+2]],QA=[lA[iA*3],lA[iA*3+1],lA[iA*3+2]],mA=[lA[EA*3],lA[EA*3+1],lA[EA*3+2]],dA=k.subtract(QA,CA),DA=k.subtract(mA,CA),wA=k.cross(dA,DA);w[z*3]+=wA[0],w[z*3+1]+=wA[1],w[z*3+2]+=wA[2],w[iA*3]+=wA[0],w[iA*3+1]+=wA[1],w[iA*3+2]+=wA[2],w[EA*3]+=wA[0],w[EA*3+1]+=wA[1],w[EA*3+2]+=wA[2]}for(let L=0;L<lA.length/3;L++){let z=w[L*3],iA=w[L*3+1],EA=w[L*3+2],CA=Math.hypot(z,iA,EA)||1;oA[L*3]=z/CA,oA[L*3+1]=iA/CA,oA[L*3+2]=EA/CA}}let gA=i.find(w=>w.parentId===G&&o.get(w.childId)?.type==="Deformer"&&o.get(w.childId)?.node.props[2]==="Skin"),AA,IA;if(gA){let w=lA.length/3;AA=new Float32Array(w*4),IA=new Float32Array(w*4),i.filter(z=>z.parentId===gA.childId&&o.get(z.childId)?.type==="Deformer"&&o.get(z.childId)?.node.props[2]==="Cluster").forEach((z,iA)=>{let EA=o.get(z.childId)?.node,CA=EA?.children.find(mA=>mA.name==="Indexes"),QA=EA?.children.find(mA=>mA.name==="Weights");if(CA&&QA){let mA=g(CA),dA=g(QA);for(let DA=0;DA<mA.length;DA++){let wA=dA[DA]??0;for(let UA=0;UA<w;UA++)for(let SA=0;SA<4;SA++)if(IA[UA*4+SA]===0){AA[UA*4+SA]=iA,IA[UA*4+SA]=wA;break}}}})}let q=lA.length/3>65535;a.push({id:`fbx_mesh_${G}`,name:T.name,positions:new Float32Array(lA),normals:new Float32Array(oA),uvs:new Float32Array(aA),indices:q?new Uint32Array(R):new Uint16Array(R),jointIndices:AA,jointWeights:IA,materialName:T.name})}for(let[,G]of o)if(G.node.name==="Material"){let Y=G.node.children.find(X=>X.name==="Properties70"),O=[1,1,1,1],v=32,tA=1;if(Y){for(let X of Y.children)if(X.name==="P"){let F=String(X.props[0]);if(F==="DiffuseColor"||F==="Color"){let sA=Number(X.props[4]??1),H=Number(X.props[5]??1),V=Number(X.props[6]??1);O=[sA,H,V,1]}else F==="Shininess"||F==="ShininessExponent"?v=Number(X.props[4]??32):F==="Opacity"&&(tA=Number(X.props[4]??1),O[3]=tA)}}s[G.name]={name:G.name,diffuseColor:O,shininess:v,opacity:tA}}let I=[];for(let[G,T]of o)if(T.node.name==="AnimationStack"){let Y=T.name||"Take 001",O=[],v=i.find(X=>X.parentId===G&&o.get(X.childId)?.node.name==="AnimationLayer");if(v){let X=i.filter(sA=>sA.parentId===v.childId&&o.get(sA.childId)?.node.name==="AnimationCurveNode"),F=new Map;for(let sA of X){let H=o.get(sA.childId);if(!H)continue;let V=i.find(W=>W.childId===H.id&&o.get(W.parentId)?.node.name==="Model"),rA=V?o.get(V.parentId):void 0,K=Mn(V?.propName)??Mn(H.name);if(!K)continue;let S=`${rA?.id??H.id}|${K}`,_=F.get(S);if(!_){let W=rA?.node;_={nodeName:rA?.name??H.name,model:W,kind:K,defaults:Yr(W,H.node,K),channels:[void 0,void 0,void 0]},F.set(S,_)}i.filter(W=>W.parentId===H.id&&o.get(W.childId)?.node.name==="AnimationCurve").forEach((W,nA)=>{let lA=Kr(W.propName)??nA;if(lA>2)return;let oA=o.get(W.childId)?.node,aA=g(oA?.children.find(AA=>AA.name==="KeyTime")),R=g(oA?.children.find(AA=>AA.name==="KeyValueFloat")),gA=Math.min(aA.length,R.length);gA!==0&&(_.channels[lA]={times:Array.from(aA.slice(0,gA),AA=>Number(AA)),values:Array.from(R.slice(0,gA),AA=>Number(AA))})})}for(let sA of F.values()){let H=zr(sA);H&&O.push(H)}}let tA=1;for(let X of O)if(X.times.length>0){let F=X.times[X.times.length-1]??0;F>tA&&(tA=F)}I.push({name:Y,duration:tA,fps:30,tracks:O})}let B=1/0,u=1/0,E=1/0,Q=-1/0,C=-1/0,h=-1/0;for(let G of a)for(let T=0;T<G.positions.length;T+=3){let Y=G.positions[T],O=G.positions[T+1],v=G.positions[T+2];Y<B&&(B=Y),O<u&&(u=O),v<E&&(E=v),Y>Q&&(Q=Y),O>C&&(C=O),v>h&&(h=v)}Number.isFinite(B)||(B=-1,u=-1,E=-1,Q=1,C=1,h=1);let m=Q-B,p=C-u,D=h-E,N=(B+Q)*.5,M=(u+C)*.5,b=(E+h)*.5,x=Math.hypot(m,p,D)*.5;return{meshes:a,materials:s,animations:I,bounds:{min:[B,u,E],max:[Q,C,h],center:[N,M,b],size:[m,p,D],boundingSphereRadius:x}}}};function Mn(A){switch(A){case"Lcl Translation":case"T":return"T";case"Lcl Rotation":case"R":return"R";case"Lcl Scaling":case"S":return"S";default:return}}function Kr(A){switch(A){case"d|X":return 0;case"d|Y":return 1;case"d|Z":return 2;default:return}}function ht(A,e){let n=A?.children.find(r=>r.name==="Properties70")?.children.find(r=>r.name==="P"&&r.props[0]===e);if(n)return n.props.slice(4).map(r=>Number(r))}function Yr(A,e,t){let n=t==="S"?1:0,r=ht(A,t==="T"?"Lcl Translation":t==="R"?"Lcl Rotation":"Lcl Scaling"),o=[n,n,n];for(let i=0;i<3;i++){let a=r?.[i],s=ht(e,`d|${"XYZ"[i]}`)?.[0],g=a??s;g!==void 0&&Number.isFinite(g)&&(o[i]=g)}return o}var Or=["XYZ","XZY","YZX","YXZ","ZXY","ZYX"];function Vr(A){let e=ht(A,"RotationOrder")?.[0]??0;return Or[e]??"XYZ"}function Wr(A,e="XYZ"){let t=[0,0,0,1];for(let n of e){let r="XYZ".indexOf(n),o=(A[r]??0)*Math.PI/360,i=Math.sin(o),a=[0,0,0,Math.cos(o)];a[r]=i,t=[a[3]*t[0]+a[0]*t[3]+a[1]*t[2]-a[2]*t[1],a[3]*t[1]-a[0]*t[2]+a[1]*t[3]+a[2]*t[0],a[3]*t[2]+a[0]*t[1]-a[1]*t[0]+a[2]*t[3],a[3]*t[3]-a[0]*t[0]-a[1]*t[1]-a[2]*t[2]]}return t}function Xr(A,e){let{times:t,values:n}=A,r=t.length-1;if(e<=t[0])return n[0];if(e>=t[r])return n[r];let o=0;for(;o<r-1&&t[o+1]<=e;)o++;let i=t[o],a=t[o+1],s=a>i?(e-i)/(a-i):0;return n[o]+(n[o+1]-n[o])*s}function zr(A){let e=new Set;for(let s of A.channels)for(let g of s?.times??[])e.add(g);if(e.size===0)return;let t=[...e].sort((s,g)=>s-g),n=new Float32Array(t.length),r=A.kind==="R",o=new Float32Array(t.length*(r?4:3)),i=r?Vr(A.model):"XYZ",a;return t.forEach((s,g)=>{n[g]=s/qA.FBX_KTIME;let I=[0,1,2].map(u=>{let E=A.channels[u];return E?Xr(E,s):A.defaults[u]});if(!r){o.set(I,g*3);return}let B=Wr(I,i);if(a&&a[0]*B[0]+a[1]*B[1]+a[2]*B[2]+a[3]*B[3]<0)for(let u=0;u<4;u++)B[u]=-B[u];a=B,o.set(B,g*4)}),{nodeName:A.nodeName,times:n,translations:A.kind==="T"?o:void 0,rotations:r?o:void 0,scales:A.kind==="S"?o:void 0}}function qo(A,e={}){return qA.parse(A,e)}function Qe(A,e={}){let t=A;if(typeof A=="string"){let n=A.trim();if(!(n.includes("FBXHeaderExtension")||n.includes("Kaydara FBX"))&&typeof pA<"u"&&pA.existsSync)try{let o=A.startsWith("file://")?A.slice(7):A;try{o=decodeURIComponent(o)}catch{}if(pA.existsSync(o)){let i=pA.readFileSync(o);t=new Uint8Array(i.buffer,i.byteOffset,i.byteLength)}}catch{}}return qA.parse(t,e)}$();$();var Fn=`
3
3
  struct AudioLatentBuffer {
4
4
  fftBins : array<f32, 1024>,
@@ -1,3 +1,3 @@
1
- import{a as F}from"./chunk-VWLR2AZR.mjs";import{b as T,d as m}from"./chunk-ZJFAGIOM.mjs";import{m as y}from"./chunk-4GEWSUX5.mjs";import{o}from"./chunk-YAQFFQPG.mjs";import{d as g,e as d}from"./chunk-BVF64D6H.mjs";d();d();var U=65536,x=1953658213,N=1954115633,$=1330926671,k=1953784678;function P(e,t){if(e.length<12)throw new Error(`Invalid font binary for "${t}": File size (${e.length} bytes) is too small to be a valid TrueType or OpenType font.`);let n=(e[0]??0)<<24|(e[1]??0)<<16|(e[2]??0)<<8|(e[3]??0);if(n===U||n===x||n===N||n===k)return"truetype";if(n===$)return"opentype";let r=(n>>>0).toString(16).padStart(8,"0");throw new Error(`Invalid font format for "${t}": Expected a valid TrueType (.ttf) or OpenType (.otf) font binary. Found header tag: 0x${r}.`)}async function v(e){if(e instanceof Uint8Array)return{buffer:e};if(typeof e!="string")throw new TypeError(`Font source must be a file path string or Uint8Array, received: ${typeof e}`);let t=e;if(t.startsWith("http://")||t.startsWith("https://")){let i=await fetch(t);if(!i.ok)throw new Error(`Failed to download font from "${t}": HTTP ${i.status} ${i.statusText}`);let l=await i.arrayBuffer();return{buffer:new Uint8Array(l),filePath:t}}if(t.startsWith("file://"))try{t=new URL(t).pathname}catch{t=t.replace(/^file:\/\//,"")}let n=[t,o.resolve(g.cwd(),t),o.resolve(g.cwd(),"assets/fonts",t),o.resolve(g.cwd(),"assets/fonts",o.basename(t))],r=g.cwd();for(let i=0;i<5;i++){n.push(o.resolve(r,t)),n.push(o.resolve(r,"assets/fonts",o.basename(t)));let l=o.dirname(r);if(l===r)break;r=l}let s=null,f=null;for(let i of n)try{if((await y.stat(i)).isFile()){s=i,f=await y.readFile(i);break}}catch{}if(!s||!f)throw new Error(`Font file not found: "${e}". Checked candidate locations:
1
+ import{a as F}from"./chunk-AEK5BO3J.mjs";import{b as T,d as m}from"./chunk-MJM3NFEC.mjs";import{m as y}from"./chunk-4GEWSUX5.mjs";import{o}from"./chunk-YAQFFQPG.mjs";import{d as g,e as d}from"./chunk-BVF64D6H.mjs";d();d();var U=65536,x=1953658213,N=1954115633,$=1330926671,k=1953784678;function P(e,t){if(e.length<12)throw new Error(`Invalid font binary for "${t}": File size (${e.length} bytes) is too small to be a valid TrueType or OpenType font.`);let n=(e[0]??0)<<24|(e[1]??0)<<16|(e[2]??0)<<8|(e[3]??0);if(n===U||n===x||n===N||n===k)return"truetype";if(n===$)return"opentype";let r=(n>>>0).toString(16).padStart(8,"0");throw new Error(`Invalid font format for "${t}": Expected a valid TrueType (.ttf) or OpenType (.otf) font binary. Found header tag: 0x${r}.`)}async function v(e){if(e instanceof Uint8Array)return{buffer:e};if(typeof e!="string")throw new TypeError(`Font source must be a file path string or Uint8Array, received: ${typeof e}`);let t=e;if(t.startsWith("http://")||t.startsWith("https://")){let i=await fetch(t);if(!i.ok)throw new Error(`Failed to download font from "${t}": HTTP ${i.status} ${i.statusText}`);let l=await i.arrayBuffer();return{buffer:new Uint8Array(l),filePath:t}}if(t.startsWith("file://"))try{t=new URL(t).pathname}catch{t=t.replace(/^file:\/\//,"")}let n=[t,o.resolve(g.cwd(),t),o.resolve(g.cwd(),"assets/fonts",t),o.resolve(g.cwd(),"assets/fonts",o.basename(t))],r=g.cwd();for(let i=0;i<5;i++){n.push(o.resolve(r,t)),n.push(o.resolve(r,"assets/fonts",o.basename(t)));let l=o.dirname(r);if(l===r)break;r=l}let s=null,f=null;for(let i of n)try{if((await y.stat(i)).isFile()){s=i,f=await y.readFile(i);break}}catch{}if(!s||!f)throw new Error(`Font file not found: "${e}". Checked candidate locations:
2
2
  - ${n.join(`
3
3
  - `)}`);return{buffer:new Uint8Array(f.buffer,f.byteOffset,f.byteLength),filePath:s}}var b=class e{static instance=null;fonts=new Map;constructor(){}static getInstance(){return e.instance||(e.instance=new e),e.instance}static async register(t,n){return e.getInstance().register(t,n)}static async registerEmojiFont(t){let{buffer:n,filePath:r}=await v(t);P(n,r??(typeof t=="string"?t:"Uint8Array")),m.setEmojiFont(n,r)}static get(t){return e.getInstance().get(t)}static has(t){return e.getInstance().has(t)}static getAll(){return e.getInstance().getAll()}static getRegisteredFontPaths(){return e.getInstance().getRegisteredFontPaths()}static clear(){e.getInstance().clear()}async register(t,n){let r,s,f,i;if(typeof t=="object"&&t!==null)r=t.family,s=t.source,f=t.weight,i=t.style;else if(typeof t=="string"&&n!==void 0)r=t,s=n;else if(typeof t=="string")r=void 0,s=t;else throw new TypeError("Invalid arguments passed to FontManager.register");let{buffer:l,filePath:u}=await v(s),h=u??(typeof s=="string"?s:"Uint8Array"),E=P(l,h),c;try{let a=T(l);a&&"fonts"in a&&Array.isArray(a.fonts)&&a.fonts.length>0?c=a.fonts[0]:c=a}catch(a){let A=a instanceof Error?a.message:String(a);throw new Error(`Failed to parse TrueType/OpenType font binary for "${h}": ${A}`)}let R=c.familyName||c.postscriptName||o.parse(h).name,p=r?.trim()||R,w={family:p,source:s,filePath:u,format:E,postscriptName:c.postscriptName,unitsPerEm:c.unitsPerEm,weight:f,style:i};return this.fonts.set(p,w),u&&await F(p,u),m.setParsed(p,c),w}get(t){return this.fonts.get(t)}has(t){return this.fonts.has(t)}getAll(){return Array.from(this.fonts.values())}getRegisteredFontPaths(){let t=[];for(let n of this.fonts.values())n.filePath?t.push(n.filePath):typeof n.source=="string"&&t.push(n.source);return t}clear(){this.fonts.clear()}};export{b as a};
@@ -1,4 +1,4 @@
1
- import{a as Z}from"./chunk-LKYN3BM2.mjs";import{a as mt}from"./chunk-JPXQPP6J.mjs";import{a as B}from"./chunk-CNSHAFEA.mjs";import{a as pt,b as K,d as dt,e as L}from"./chunk-36YGYLKD.mjs";import{a as ct,b as ht}from"./chunk-VWLR2AZR.mjs";import{d as R,f as G,g as M,i as ft}from"./chunk-ZJFAGIOM.mjs";import{d as lt}from"./chunk-HYBAPT6I.mjs";import{e as g}from"./chunk-BVF64D6H.mjs";g();var $=class{constructor(t,e){this.url=t;this.isHeadless=e}url;isHeadless;input=null;initPromise=null;iterator=null;iteratorStartTimestamp=-1;currentFetchId=0;fetchLock=Promise.resolve();destroyed=!1;async init(){if(!this.input)return this.initPromise?this.initPromise:(this.destroyed=!1,this.initPromise=(async()=>{try{let t=await L.acquire(this.url);this.destroyed?L.release(this.url):this.input=t}catch(t){throw this.initPromise=null,t}})(),this.initPromise)}destroy(){this.destroyed=!0,this.iterator?.return(),this.input&&(L.release(this.url),this.input=null),this.initPromise=null,this.onDestroy()}},J=class extends ${canvasSink=null;videoSampleSink=null;currentFrame=null;nextFrame=null;currentSample=null;nextSample=null;headlessQueue=[];isDecoding=!1;decodeBuffer=null;nextRequest=null;pushHeadlessQueue(t){let e=this.headlessQueue.findIndex(r=>r.timestamp>t.timestamp);e===-1?this.headlessQueue.push(t):this.headlessQueue.splice(e,0,t)}async fillHeadlessQueue(t){if(this.iterator)for(;this.headlessQueue.length<2;){let e=await this.iterator.next();if(this.currentFetchId!==t){e.value?.close?.();return}if(e.done||!e.value)break;this.pushHeadlessQueue(e.value)}}async closeIterator(t){if(t)try{await t.return()}catch{}}resetSinks(){let t=this.iterator;if(this.iterator=null,t)try{t.return()}catch{}this.canvasSink=null,this.videoSampleSink=null,this.currentFrame=null,this.nextFrame=null,this.currentSample?.close(),this.currentSample=null,this.nextSample?.close(),this.nextSample=null;for(let e of this.headlessQueue)try{e.close()}catch{}this.headlessQueue=[],this.decodeBuffer=null,this.iteratorStartTimestamp=-1}onDestroy(){this.resetSinks()}async startIterator(t,e){if(!this.canvasSink)return;let r=Math.max(0,Number.isFinite(t)?t:0),i=this.iterator;if(this.iterator=null,await this.closeIterator(i),this.currentFetchId!==e||this.destroyed)return;this.iterator=this.canvasSink.canvases(r);let n=await this.iterator.next();if(this.currentFetchId!==e||this.destroyed)return;this.currentFrame=n.value??null;let s=await this.iterator.next();this.currentFetchId!==e||this.destroyed||(this.nextFrame=s.value??null,this.iteratorStartTimestamp=r)}async startIteratorHeadless(t,e){if(!this.videoSampleSink)return;let r=Math.max(0,Number.isFinite(t)?t:0),i=this.iterator;if(this.iterator=null,await this.closeIterator(i),this.currentFetchId!==e||this.destroyed)return;for(let s of this.headlessQueue)s.close();this.headlessQueue=[];let n=Math.max(0,r-.1);this.iterator=this.videoSampleSink.samples(n),await this.fillHeadlessQueue(e),!(this.currentFetchId!==e||this.destroyed)&&(this.iteratorStartTimestamp=r)}async getFrame(t){if(await this.init(),this.destroyed||!this.input)return null;let e=Math.max(0,Number.isFinite(t)?t:0);return this.isDecoding?(this.nextRequest&&this.nextRequest.resolve(null),new Promise((r,i)=>{this.nextRequest={timestampSec:e,resolve:r,reject:i}})):this.executeDecode(e)}async executeDecode(t){this.isDecoding=!0;try{return await this.performDecode(t)}finally{if(this.isDecoding=!1,this.nextRequest){let e=this.nextRequest;this.nextRequest=null,this.executeDecode(e.timestampSec).then(e.resolve).catch(e.reject)}}}async performDecodeHeadless(t,e){if(!this.videoSampleSink){if(this.destroyed||!this.input)return null;let h=await this.input.getPrimaryVideoTrack();if(!h)return null;this.videoSampleSink=new pt(h)}let r=1e-4;if((!this.iterator||t<this.iteratorStartTimestamp-r||this.headlessQueue.length>0&&t<this.headlessQueue[0].timestamp-.01||this.headlessQueue.length>0&&t-this.headlessQueue[0].timestamp>1)&&(await this.startIteratorHeadless(t,e),this.currentFetchId!==e||this.destroyed||!this.input))return null;for(;;){if(await this.fillHeadlessQueue(e),this.currentFetchId!==e||this.destroyed||!this.input)return null;if(this.headlessQueue.length>=2&&this.headlessQueue[1].timestamp<=t+r){this.headlessQueue.shift()?.close();continue}break}let s=this.headlessQueue[0];if(!s)return null;let a=s.displayWidth,o=s.displayHeight,l=a*o*4,c=this.decodeBuffer;return(!c||c.length!==l)&&(c=new Uint8Array(l),this.decodeBuffer=c),await s.copyTo(c,{format:"RGBA"}),this.currentFetchId!==e||this.destroyed||!this.input?null:{width:a,height:o,buffer:c}}async performDecodeInternal(t){this.currentFetchId++;let e=this.currentFetchId;if(this.isHeadless)return this.performDecodeHeadless(t,e);if(!this.canvasSink){if(this.destroyed||!this.input)return null;let a=await this.input.getPrimaryVideoTrack();if(!a)return null;this.canvasSink=new K(a,{poolSize:3,alpha:!0})}let r=1e-4;if((!this.iterator||t<this.iteratorStartTimestamp-r||this.currentFrame&&t<this.currentFrame.timestamp-.01||this.currentFrame&&t-this.currentFrame.timestamp>1)&&(await this.startIterator(t,e),this.currentFetchId!==e||this.destroyed||!this.input))return null;for(;this.nextFrame&&this.nextFrame.timestamp<=t+r;)if(this.currentFrame=this.nextFrame,this.nextFrame=null,this.iterator){let a=await this.iterator.next();if(this.currentFetchId!==e||this.destroyed||!this.input)return null;this.nextFrame=a.value??null}if(!this.currentFrame)return null;let s=this.currentFrame.canvas;return{width:s.width,height:s.height,canvas:s}}async performDecode(t){let e=Math.max(0,Number.isFinite(t)?t:0);try{return await this.performDecodeInternal(e)}catch(r){let i=r;if(i?.name==="InputDisposedError"||i?.message?.includes("disposed")||this.destroyed||!this.input)return null;this.resetSinks();try{if(!this.isHeadless&&this.input&&!this.destroyed){let n=await this.input.getPrimaryVideoTrack();if(n&&!this.destroyed)return this.canvasSink=new K(n,{poolSize:3,alpha:!0,decoderOptions:{hardwareAcceleration:"prefer-software"}}),await this.performDecodeInternal(e)}}catch{}throw r}}},tt=class extends ${audioSink=null;onDestroy(){this.audioSink=null}async startIterator(t,e){this.audioSink&&(this.iterator?.return(),this.iterator=this.audioSink.buffers(t),this.iteratorStartTimestamp=t)}async*getBuffers(t){try{if(await this.init(),this.destroyed||!this.input)return;if(!this.audioSink){let i=await this.input.getPrimaryAudioTrack();if(!i)return;this.audioSink=new dt(i)}(!this.iterator||Math.abs(t-this.iteratorStartTimestamp)>.05)&&(this.currentFetchId++,await this.startIterator(t,this.currentFetchId));let r=this.currentFetchId;if(!this.iterator)return;for await(let i of this.iterator){if(this.currentFetchId!==r||this.destroyed||!this.input)break;this.iteratorStartTimestamp=i.timestamp+i.duration,yield i}}catch(e){let r=e;if(r?.name==="InputDisposedError"||r?.message?.includes("disposed")||this.destroyed||!this.input)return;throw e}finally{let e=this.currentFetchId;this.currentFetchId===e&&(this.iterator=null)}}},et=class{videoDecoders=new Map;audioDecoders=new Map;lastAccessed=new Map;touchKey(t){this.lastAccessed.set(t,Date.now())}destroy(){for(let t of this.videoDecoders.values())try{t.destroy()}catch{}this.videoDecoders.clear();for(let t of this.audioDecoders.values())try{t.destroy()}catch{}this.audioDecoders.clear(),this.lastAccessed.clear()}prune(t=3e5){let e=Date.now();for(let[r,i]of this.lastAccessed.entries())if(e-i>t){let n=this.videoDecoders.get(r);n&&(n.destroy(),this.videoDecoders.delete(r));let s=this.audioDecoders.get(r);s&&(s.destroy(),this.audioDecoders.delete(r)),this.lastAccessed.delete(r)}}getVideo(t,e,r){let i=`${t}-${e}-${r??"default"}`,n=this.videoDecoders.get(i);return n||(n=new J(t,e),this.videoDecoders.set(i,n)),this.touchKey(i),this.prune(),n}getAudio(t,e){let r=`${t}-${e??"default"}`,i=this.audioDecoders.get(r);return i||(i=new tt(t,!1),this.audioDecoders.set(r,i)),this.touchKey(r),this.prune(),i}clearNode(t){for(let[e,r]of this.videoDecoders)e.includes(t)&&(r.destroy(),this.videoDecoders.delete(e),this.lastAccessed.delete(e));for(let[e,r]of this.audioDecoders)e.includes(t)&&(r.destroy(),this.audioDecoders.delete(e),this.lastAccessed.delete(e))}},Vt=new et;g();g();var yt=`
1
+ import{a as Z}from"./chunk-LKYN3BM2.mjs";import{a as mt}from"./chunk-JPXQPP6J.mjs";import{a as B}from"./chunk-CNSHAFEA.mjs";import{a as pt,b as K,d as dt,e as L}from"./chunk-36YGYLKD.mjs";import{a as ct,b as ht}from"./chunk-AEK5BO3J.mjs";import{d as R,f as G,g as M,i as ft}from"./chunk-MJM3NFEC.mjs";import{d as lt}from"./chunk-HYBAPT6I.mjs";import{e as g}from"./chunk-BVF64D6H.mjs";g();var $=class{constructor(t,e){this.url=t;this.isHeadless=e}url;isHeadless;input=null;initPromise=null;iterator=null;iteratorStartTimestamp=-1;currentFetchId=0;fetchLock=Promise.resolve();destroyed=!1;async init(){if(!this.input)return this.initPromise?this.initPromise:(this.destroyed=!1,this.initPromise=(async()=>{try{let t=await L.acquire(this.url);this.destroyed?L.release(this.url):this.input=t}catch(t){throw this.initPromise=null,t}})(),this.initPromise)}destroy(){this.destroyed=!0,this.iterator?.return(),this.input&&(L.release(this.url),this.input=null),this.initPromise=null,this.onDestroy()}},J=class extends ${canvasSink=null;videoSampleSink=null;currentFrame=null;nextFrame=null;currentSample=null;nextSample=null;headlessQueue=[];isDecoding=!1;decodeBuffer=null;nextRequest=null;pushHeadlessQueue(t){let e=this.headlessQueue.findIndex(r=>r.timestamp>t.timestamp);e===-1?this.headlessQueue.push(t):this.headlessQueue.splice(e,0,t)}async fillHeadlessQueue(t){if(this.iterator)for(;this.headlessQueue.length<2;){let e=await this.iterator.next();if(this.currentFetchId!==t){e.value?.close?.();return}if(e.done||!e.value)break;this.pushHeadlessQueue(e.value)}}async closeIterator(t){if(t)try{await t.return()}catch{}}resetSinks(){let t=this.iterator;if(this.iterator=null,t)try{t.return()}catch{}this.canvasSink=null,this.videoSampleSink=null,this.currentFrame=null,this.nextFrame=null,this.currentSample?.close(),this.currentSample=null,this.nextSample?.close(),this.nextSample=null;for(let e of this.headlessQueue)try{e.close()}catch{}this.headlessQueue=[],this.decodeBuffer=null,this.iteratorStartTimestamp=-1}onDestroy(){this.resetSinks()}async startIterator(t,e){if(!this.canvasSink)return;let r=Math.max(0,Number.isFinite(t)?t:0),i=this.iterator;if(this.iterator=null,await this.closeIterator(i),this.currentFetchId!==e||this.destroyed)return;this.iterator=this.canvasSink.canvases(r);let n=await this.iterator.next();if(this.currentFetchId!==e||this.destroyed)return;this.currentFrame=n.value??null;let s=await this.iterator.next();this.currentFetchId!==e||this.destroyed||(this.nextFrame=s.value??null,this.iteratorStartTimestamp=r)}async startIteratorHeadless(t,e){if(!this.videoSampleSink)return;let r=Math.max(0,Number.isFinite(t)?t:0),i=this.iterator;if(this.iterator=null,await this.closeIterator(i),this.currentFetchId!==e||this.destroyed)return;for(let s of this.headlessQueue)s.close();this.headlessQueue=[];let n=Math.max(0,r-.1);this.iterator=this.videoSampleSink.samples(n),await this.fillHeadlessQueue(e),!(this.currentFetchId!==e||this.destroyed)&&(this.iteratorStartTimestamp=r)}async getFrame(t){if(await this.init(),this.destroyed||!this.input)return null;let e=Math.max(0,Number.isFinite(t)?t:0);return this.isDecoding?(this.nextRequest&&this.nextRequest.resolve(null),new Promise((r,i)=>{this.nextRequest={timestampSec:e,resolve:r,reject:i}})):this.executeDecode(e)}async executeDecode(t){this.isDecoding=!0;try{return await this.performDecode(t)}finally{if(this.isDecoding=!1,this.nextRequest){let e=this.nextRequest;this.nextRequest=null,this.executeDecode(e.timestampSec).then(e.resolve).catch(e.reject)}}}async performDecodeHeadless(t,e){if(!this.videoSampleSink){if(this.destroyed||!this.input)return null;let h=await this.input.getPrimaryVideoTrack();if(!h)return null;this.videoSampleSink=new pt(h)}let r=1e-4;if((!this.iterator||t<this.iteratorStartTimestamp-r||this.headlessQueue.length>0&&t<this.headlessQueue[0].timestamp-.01||this.headlessQueue.length>0&&t-this.headlessQueue[0].timestamp>1)&&(await this.startIteratorHeadless(t,e),this.currentFetchId!==e||this.destroyed||!this.input))return null;for(;;){if(await this.fillHeadlessQueue(e),this.currentFetchId!==e||this.destroyed||!this.input)return null;if(this.headlessQueue.length>=2&&this.headlessQueue[1].timestamp<=t+r){this.headlessQueue.shift()?.close();continue}break}let s=this.headlessQueue[0];if(!s)return null;let a=s.displayWidth,o=s.displayHeight,l=a*o*4,c=this.decodeBuffer;return(!c||c.length!==l)&&(c=new Uint8Array(l),this.decodeBuffer=c),await s.copyTo(c,{format:"RGBA"}),this.currentFetchId!==e||this.destroyed||!this.input?null:{width:a,height:o,buffer:c}}async performDecodeInternal(t){this.currentFetchId++;let e=this.currentFetchId;if(this.isHeadless)return this.performDecodeHeadless(t,e);if(!this.canvasSink){if(this.destroyed||!this.input)return null;let a=await this.input.getPrimaryVideoTrack();if(!a)return null;this.canvasSink=new K(a,{poolSize:3,alpha:!0})}let r=1e-4;if((!this.iterator||t<this.iteratorStartTimestamp-r||this.currentFrame&&t<this.currentFrame.timestamp-.01||this.currentFrame&&t-this.currentFrame.timestamp>1)&&(await this.startIterator(t,e),this.currentFetchId!==e||this.destroyed||!this.input))return null;for(;this.nextFrame&&this.nextFrame.timestamp<=t+r;)if(this.currentFrame=this.nextFrame,this.nextFrame=null,this.iterator){let a=await this.iterator.next();if(this.currentFetchId!==e||this.destroyed||!this.input)return null;this.nextFrame=a.value??null}if(!this.currentFrame)return null;let s=this.currentFrame.canvas;return{width:s.width,height:s.height,canvas:s}}async performDecode(t){let e=Math.max(0,Number.isFinite(t)?t:0);try{return await this.performDecodeInternal(e)}catch(r){let i=r;if(i?.name==="InputDisposedError"||i?.message?.includes("disposed")||this.destroyed||!this.input)return null;this.resetSinks();try{if(!this.isHeadless&&this.input&&!this.destroyed){let n=await this.input.getPrimaryVideoTrack();if(n&&!this.destroyed)return this.canvasSink=new K(n,{poolSize:3,alpha:!0,decoderOptions:{hardwareAcceleration:"prefer-software"}}),await this.performDecodeInternal(e)}}catch{}throw r}}},tt=class extends ${audioSink=null;onDestroy(){this.audioSink=null}async startIterator(t,e){this.audioSink&&(this.iterator?.return(),this.iterator=this.audioSink.buffers(t),this.iteratorStartTimestamp=t)}async*getBuffers(t){try{if(await this.init(),this.destroyed||!this.input)return;if(!this.audioSink){let i=await this.input.getPrimaryAudioTrack();if(!i)return;this.audioSink=new dt(i)}(!this.iterator||Math.abs(t-this.iteratorStartTimestamp)>.05)&&(this.currentFetchId++,await this.startIterator(t,this.currentFetchId));let r=this.currentFetchId;if(!this.iterator)return;for await(let i of this.iterator){if(this.currentFetchId!==r||this.destroyed||!this.input)break;this.iteratorStartTimestamp=i.timestamp+i.duration,yield i}}catch(e){let r=e;if(r?.name==="InputDisposedError"||r?.message?.includes("disposed")||this.destroyed||!this.input)return;throw e}finally{let e=this.currentFetchId;this.currentFetchId===e&&(this.iterator=null)}}},et=class{videoDecoders=new Map;audioDecoders=new Map;lastAccessed=new Map;touchKey(t){this.lastAccessed.set(t,Date.now())}destroy(){for(let t of this.videoDecoders.values())try{t.destroy()}catch{}this.videoDecoders.clear();for(let t of this.audioDecoders.values())try{t.destroy()}catch{}this.audioDecoders.clear(),this.lastAccessed.clear()}prune(t=3e5){let e=Date.now();for(let[r,i]of this.lastAccessed.entries())if(e-i>t){let n=this.videoDecoders.get(r);n&&(n.destroy(),this.videoDecoders.delete(r));let s=this.audioDecoders.get(r);s&&(s.destroy(),this.audioDecoders.delete(r)),this.lastAccessed.delete(r)}}getVideo(t,e,r){let i=`${t}-${e}-${r??"default"}`,n=this.videoDecoders.get(i);return n||(n=new J(t,e),this.videoDecoders.set(i,n)),this.touchKey(i),this.prune(),n}getAudio(t,e){let r=`${t}-${e??"default"}`,i=this.audioDecoders.get(r);return i||(i=new tt(t,!1),this.audioDecoders.set(r,i)),this.touchKey(r),this.prune(),i}clearNode(t){for(let[e,r]of this.videoDecoders)e.includes(t)&&(r.destroy(),this.videoDecoders.delete(e),this.lastAccessed.delete(e));for(let[e,r]of this.audioDecoders)e.includes(t)&&(r.destroy(),this.audioDecoders.delete(e),this.lastAccessed.delete(e))}},Vt=new et;g();g();var yt=`
2
2
  struct CompositeUniforms {
3
3
  blendMode : u32,
4
4
  padding1 : u32,
@@ -1 +1 @@
1
- import{a}from"./chunk-WQ7BFSKF.mjs";import"./chunk-VWLR2AZR.mjs";import"./chunk-ZJFAGIOM.mjs";import"./chunk-4GEWSUX5.mjs";import"./chunk-MTJHQATU.mjs";import"./chunk-HYBAPT6I.mjs";import"./chunk-YAQFFQPG.mjs";import"./chunk-BVF64D6H.mjs";export{a as FontManager};
1
+ import{a}from"./chunk-RNOO4UR5.mjs";import"./chunk-AEK5BO3J.mjs";import"./chunk-MJM3NFEC.mjs";import"./chunk-4GEWSUX5.mjs";import"./chunk-MTJHQATU.mjs";import"./chunk-HYBAPT6I.mjs";import"./chunk-YAQFFQPG.mjs";import"./chunk-BVF64D6H.mjs";export{a as FontManager};
@@ -1,4 +1,4 @@
1
- import{B as Rl,C as Bl,D as Rn,E as Bn,F as Il,G as Ul,H as El,I as _l,J as _r,K as Gl,a as pl,b as fl,c as X,d as Je,e as wl,f as Sl,g as Ml,h as kl,i as Pl,j as Tl,k as Cl,n as Al,o as Nl,p as Dl,q as Fl,r as Ho,s as ig,t as sg,u as ug,v as dg,w as mg,x as pg,y as fg,z as hg}from"./chunk-BUWK5RJ4.mjs";import{a as Ll}from"./chunk-PIAJWALT.mjs";import{a as Ln,b as $o}from"./chunk-PJ3DVG45.mjs";import{a as Wo,b as yl,d as vl,e as lg,f as cg}from"./chunk-OF75EHTX.mjs";import{a as bl}from"./chunk-LKYN3BM2.mjs";import"./chunk-JPXQPP6J.mjs";import{$ as da,A as kc,B as Pc,C as Tc,D as Cc,E as Hn,F as lt,G as Yn,H as Xn,I as Zn,J as qn,K as Ac,L as Kn,M as Jn,N as Qn,O as ea,P as ta,Q as ra,R as na,S as aa,T as oa,U as ia,V as sa,W as ua,X as la,Y as ar,Z as ct,_ as ca,a as ec,aa as ma,b as tc,c as rc,d as nc,e as ac,f as oc,g as ic,h as sc,i as uc,j as lc,k as $n,l as Wn,m as cc,n as dc,o as mc,p as pc,q as fc,r as hc,s as gc,t as bc,u as xc,v as yc,w as vc,x as wc,y as Sc,z as Mc}from"./chunk-VVLM6LZ3.mjs";import"./chunk-ZDCA6NVT.mjs";import"./chunk-BWDARDO6.mjs";import"./chunk-7O24H4YT.mjs";import{A as ag,B as og,C as Yo,D as zl,E as Vl,F as En,G as jl,H as $l,I as Wl,J as Hl,K as Yl,L as Xl,M as _n,N as Zl,O as Gn,P as zn,Q as Vn,R as nr,a as zo,b as If,c as Uf,d as Ef,e as _f,f as Gf,g as qf,h as Kf,i as Jf,j as Qf,k as eh,l as th,m as rh,n as vh,o as wh,p as Sh,q as Mh,r as kh,s as Ph,t as Th,u as Ch,v as Ah,w as Nh,x as _h,y as Kh,z as ng}from"./chunk-AW7HNZKR.mjs";import"./chunk-XCYFPA34.mjs";import"./chunk-7DIAFPQP.mjs";import"./chunk-DLXQDDIN.mjs";import"./chunk-HPIULG7P.mjs";import"./chunk-BJKH76OM.mjs";import"./chunk-YITWSOG4.mjs";import"./chunk-Y6FEU4TV.mjs";import"./chunk-R3ZH7YF3.mjs";import"./chunk-YG35X5R5.mjs";import"./chunk-SNYAHQ25.mjs";import"./chunk-GHMCGTJ2.mjs";import"./chunk-AUFSM5KI.mjs";import"./chunk-FE6RSVKZ.mjs";import"./chunk-5JD65JSJ.mjs";import"./chunk-JAOXXYXG.mjs";import"./chunk-R6YNSBKL.mjs";import"./chunk-HRIKNYPF.mjs";import"./chunk-6JW37VJA.mjs";import"./chunk-QGBSLNFI.mjs";import{a as zf,b as Vf}from"./chunk-YKMBRUAE.mjs";import"./chunk-XFYXT76H.mjs";import"./chunk-QM3XFEJN.mjs";import"./chunk-NRHSNPZV.mjs";import"./chunk-XUM42I4R.mjs";import{a as In,b as Un}from"./chunk-N4LHIPHZ.mjs";import"./chunk-OWOSYNMF.mjs";import{a as Jh,b as Qh,c as eg,d as tg,e as rg}from"./chunk-VXUJWPIK.mjs";import"./chunk-T6COGNOW.mjs";import"./chunk-BQ65MU6H.mjs";import"./chunk-S4CSX6K5.mjs";import"./chunk-XOEEGC4Z.mjs";import{i as Dn}from"./chunk-XKO4RYKN.mjs";import"./chunk-K52S5DJX.mjs";import"./chunk-UC7CSW2A.mjs";import"./chunk-CNSHAFEA.mjs";import{a as gl}from"./chunk-EJGLUZMW.mjs";import{a as Kl,b as Jl,c as Ql,d as jn}from"./chunk-CURR5X7D.mjs";import"./chunk-V6VU46ZG.mjs";import"./chunk-24DXIKXL.mjs";import"./chunk-LIHUEYI5.mjs";import"./chunk-ZSIJB76A.mjs";import"./chunk-EQ4QZRXB.mjs";import"./chunk-AMBSW6OA.mjs";import"./chunk-XLFYM7KH.mjs";import"./chunk-D3TETPLI.mjs";import"./chunk-CBM7B7EW.mjs";import"./chunk-SUUUYXXT.mjs";import{a as ql}from"./chunk-25IW7NYO.mjs";import"./chunk-MDDF2GCF.mjs";import{a as fe}from"./chunk-IYVN2QEL.mjs";import{A as Dh,B as Fh,C as Lh,D as Oh,E as Rh,F as Bh,G as Ih,H as Uh,I as Eh,a as i,c as jf,d as $f,e as Wf,f as Hf,g as Yf,h as Xf,i as Zf,j as nh,k as ah,l as oh,m as ih,n as sh,o as uh,p as lh,q as ch,r as dh,s as mh,t as ph,u as fh,v as hh,w as gh,x as bh,y as xh,z as yh}from"./chunk-NQZKBFC6.mjs";import{b as hl}from"./chunk-CYY366IE.mjs";import"./chunk-PQD5UPHG.mjs";import{b as Ol}from"./chunk-BHFI3Y4T.mjs";import{a as dl}from"./chunk-37EFVZWT.mjs";import"./chunk-4VOHF3FF.mjs";import{a as Gh,b as zh,c as Vh,d as jh,e as $h,f as Wh,g as Hh,h as Vo,i as Yh,j as jo,k as Xh,l as Zh,m as qh}from"./chunk-24P6DAB3.mjs";import{e as Fn}from"./chunk-36YGYLKD.mjs";import{a as Dt,b as kf,c as Pf,d as Tf,e as Cf,f as Af,g as Nf,h as Df,i as ol,j as il,k as Ff,l as Lf,m as Of,n as Rf,o as Bf,p as sl,q as ul,r as ll,s as cl}from"./chunk-ZNGOAGAI.mjs";import{d as ml}from"./chunk-6YJP57MZ.mjs";import{a as ut}from"./chunk-WQ7BFSKF.mjs";import"./chunk-VWLR2AZR.mjs";import{d as Ft,f as On,i as xl}from"./chunk-ZJFAGIOM.mjs";import{m as rr}from"./chunk-4GEWSUX5.mjs";import{r as he}from"./chunk-MTJHQATU.mjs";import"./chunk-HYBAPT6I.mjs";import{o as j}from"./chunk-YAQFFQPG.mjs";import{a as Ur,b as Er}from"./chunk-ZEYUXJIV.mjs";import{a as Go,c as tr,d as S,e as g}from"./chunk-BVF64D6H.mjs";var Ou=Go((N2,Lu)=>{g();var wn=()=>new Proxy(function(){},{get:(e,t)=>t==="__esModule"?!0:t===Symbol.toPrimitive?()=>"":wn(),apply:()=>wn(),construct:()=>wn()});Lu.exports=wn()});var Bu=Go((j2,Ru)=>{g();var kn=()=>new Proxy(function(){},{get:(e,t)=>t==="__esModule"?!0:t===Symbol.toPrimitive?()=>"":kn(),apply:()=>kn(),construct:()=>kn()});Ru.exports=kn()});g();g();var Xo=`
1
+ import{B as Rl,C as Bl,D as Rn,E as Bn,F as Il,G as Ul,H as El,I as _l,J as _r,K as Gl,a as pl,b as fl,c as X,d as Je,e as wl,f as Sl,g as Ml,h as kl,i as Pl,j as Tl,k as Cl,n as Al,o as Nl,p as Dl,q as Fl,r as Ho,s as ig,t as sg,u as ug,v as dg,w as mg,x as pg,y as fg,z as hg}from"./chunk-QTKJXDIW.mjs";import{a as Ll}from"./chunk-PIAJWALT.mjs";import{a as Ln,b as $o}from"./chunk-PJ3DVG45.mjs";import{a as Wo,b as yl,d as vl,e as lg,f as cg}from"./chunk-T6CC2KCZ.mjs";import{a as bl}from"./chunk-LKYN3BM2.mjs";import"./chunk-JPXQPP6J.mjs";import{$ as da,A as kc,B as Pc,C as Tc,D as Cc,E as Hn,F as lt,G as Yn,H as Xn,I as Zn,J as qn,K as Ac,L as Kn,M as Jn,N as Qn,O as ea,P as ta,Q as ra,R as na,S as aa,T as oa,U as ia,V as sa,W as ua,X as la,Y as ar,Z as ct,_ as ca,a as ec,aa as ma,b as tc,c as rc,d as nc,e as ac,f as oc,g as ic,h as sc,i as uc,j as lc,k as $n,l as Wn,m as cc,n as dc,o as mc,p as pc,q as fc,r as hc,s as gc,t as bc,u as xc,v as yc,w as vc,x as wc,y as Sc,z as Mc}from"./chunk-VVLM6LZ3.mjs";import"./chunk-ZDCA6NVT.mjs";import"./chunk-BWDARDO6.mjs";import"./chunk-7O24H4YT.mjs";import{A as ag,B as og,C as Yo,D as zl,E as Vl,F as En,G as jl,H as $l,I as Wl,J as Hl,K as Yl,L as Xl,M as _n,N as Zl,O as Gn,P as zn,Q as Vn,R as nr,a as zo,b as If,c as Uf,d as Ef,e as _f,f as Gf,g as qf,h as Kf,i as Jf,j as Qf,k as eh,l as th,m as rh,n as vh,o as wh,p as Sh,q as Mh,r as kh,s as Ph,t as Th,u as Ch,v as Ah,w as Nh,x as _h,y as Kh,z as ng}from"./chunk-AW7HNZKR.mjs";import"./chunk-XCYFPA34.mjs";import"./chunk-7DIAFPQP.mjs";import"./chunk-DLXQDDIN.mjs";import"./chunk-HPIULG7P.mjs";import"./chunk-BJKH76OM.mjs";import"./chunk-YITWSOG4.mjs";import"./chunk-Y6FEU4TV.mjs";import"./chunk-R3ZH7YF3.mjs";import"./chunk-YG35X5R5.mjs";import"./chunk-SNYAHQ25.mjs";import"./chunk-GHMCGTJ2.mjs";import"./chunk-AUFSM5KI.mjs";import"./chunk-FE6RSVKZ.mjs";import"./chunk-5JD65JSJ.mjs";import"./chunk-JAOXXYXG.mjs";import"./chunk-R6YNSBKL.mjs";import"./chunk-HRIKNYPF.mjs";import"./chunk-6JW37VJA.mjs";import"./chunk-QGBSLNFI.mjs";import{a as zf,b as Vf}from"./chunk-YKMBRUAE.mjs";import"./chunk-XFYXT76H.mjs";import"./chunk-QM3XFEJN.mjs";import"./chunk-NRHSNPZV.mjs";import"./chunk-XUM42I4R.mjs";import{a as In,b as Un}from"./chunk-N4LHIPHZ.mjs";import"./chunk-OWOSYNMF.mjs";import{a as Jh,b as Qh,c as eg,d as tg,e as rg}from"./chunk-VXUJWPIK.mjs";import"./chunk-T6COGNOW.mjs";import"./chunk-BQ65MU6H.mjs";import"./chunk-S4CSX6K5.mjs";import"./chunk-XOEEGC4Z.mjs";import{i as Dn}from"./chunk-XKO4RYKN.mjs";import"./chunk-K52S5DJX.mjs";import"./chunk-UC7CSW2A.mjs";import"./chunk-CNSHAFEA.mjs";import{a as gl}from"./chunk-EJGLUZMW.mjs";import{a as Kl,b as Jl,c as Ql,d as jn}from"./chunk-CURR5X7D.mjs";import"./chunk-V6VU46ZG.mjs";import"./chunk-24DXIKXL.mjs";import"./chunk-LIHUEYI5.mjs";import"./chunk-ZSIJB76A.mjs";import"./chunk-EQ4QZRXB.mjs";import"./chunk-AMBSW6OA.mjs";import"./chunk-XLFYM7KH.mjs";import"./chunk-D3TETPLI.mjs";import"./chunk-CBM7B7EW.mjs";import"./chunk-SUUUYXXT.mjs";import{a as ql}from"./chunk-25IW7NYO.mjs";import"./chunk-MDDF2GCF.mjs";import{a as fe}from"./chunk-IYVN2QEL.mjs";import{A as Dh,B as Fh,C as Lh,D as Oh,E as Rh,F as Bh,G as Ih,H as Uh,I as Eh,a as i,c as jf,d as $f,e as Wf,f as Hf,g as Yf,h as Xf,i as Zf,j as nh,k as ah,l as oh,m as ih,n as sh,o as uh,p as lh,q as ch,r as dh,s as mh,t as ph,u as fh,v as hh,w as gh,x as bh,y as xh,z as yh}from"./chunk-NQZKBFC6.mjs";import{b as hl}from"./chunk-CYY366IE.mjs";import"./chunk-PQD5UPHG.mjs";import{b as Ol}from"./chunk-BHFI3Y4T.mjs";import{a as dl}from"./chunk-37EFVZWT.mjs";import"./chunk-4VOHF3FF.mjs";import{a as Gh,b as zh,c as Vh,d as jh,e as $h,f as Wh,g as Hh,h as Vo,i as Yh,j as jo,k as Xh,l as Zh,m as qh}from"./chunk-24P6DAB3.mjs";import{e as Fn}from"./chunk-36YGYLKD.mjs";import{a as Dt,b as kf,c as Pf,d as Tf,e as Cf,f as Af,g as Nf,h as Df,i as ol,j as il,k as Ff,l as Lf,m as Of,n as Rf,o as Bf,p as sl,q as ul,r as ll,s as cl}from"./chunk-ZNGOAGAI.mjs";import{d as ml}from"./chunk-6YJP57MZ.mjs";import{a as ut}from"./chunk-RNOO4UR5.mjs";import"./chunk-AEK5BO3J.mjs";import{d as Ft,f as On,i as xl}from"./chunk-MJM3NFEC.mjs";import{m as rr}from"./chunk-4GEWSUX5.mjs";import{r as he}from"./chunk-MTJHQATU.mjs";import"./chunk-HYBAPT6I.mjs";import{o as j}from"./chunk-YAQFFQPG.mjs";import{a as Ur,b as Er}from"./chunk-ZEYUXJIV.mjs";import{a as Go,c as tr,d as S,e as g}from"./chunk-BVF64D6H.mjs";var Ou=Go((N2,Lu)=>{g();var wn=()=>new Proxy(function(){},{get:(e,t)=>t==="__esModule"?!0:t===Symbol.toPrimitive?()=>"":wn(),apply:()=>wn(),construct:()=>wn()});Lu.exports=wn()});var Bu=Go((j2,Ru)=>{g();var kn=()=>new Proxy(function(){},{get:(e,t)=>t==="__esModule"?!0:t===Symbol.toPrimitive?()=>"":kn(),apply:()=>kn(),construct:()=>kn()});Ru.exports=kn()});g();g();var Xo=`
2
2
  struct MotionBlurUniforms {
3
3
  shutterFraction: f32, // shutterAngle / 360.0
4
4
  sampleCount: u32, // e.g. 16
@@ -1,4 +1,4 @@
1
- import{a as v0}from"./chunk-SRT2OCQW.mjs";import{a as z1,d as g0}from"./chunk-5PPSCISJ.mjs";import{a as w0,c as y0,f as M0}from"./chunk-OF75EHTX.mjs";import{a as F}from"./chunk-LKYN3BM2.mjs";import"./chunk-JPXQPP6J.mjs";import{a as C0,b as L0}from"./chunk-UC7CSW2A.mjs";import"./chunk-CNSHAFEA.mjs";import{a as G1}from"./chunk-EJGLUZMW.mjs";import{a as u0}from"./chunk-CYY366IE.mjs";import{a as b0}from"./chunk-4VOHF3FF.mjs";import{i as d0,l as N1}from"./chunk-24P6DAB3.mjs";import"./chunk-36YGYLKD.mjs";import{h as o0,o as L1,u as l0,v as c0,w as _0}from"./chunk-ZNGOAGAI.mjs";import{d as r1}from"./chunk-6YJP57MZ.mjs";import{a as B1,c as f0}from"./chunk-VWLR2AZR.mjs";import{a as h0,d as p0}from"./chunk-ZJFAGIOM.mjs";import{b as m0,d as x1}from"./chunk-HYBAPT6I.mjs";import{a as p1,c as r4,d as A,e as L}from"./chunk-BVF64D6H.mjs";var H1=p1(o1=>{"use strict";L();Object.defineProperty(o1,"__esModule",{value:!0});o1.loop=o1.conditional=o1.parse=void 0;var a4=function t(e,n){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:i;if(Array.isArray(n))n.forEach(function(d){return t(e,d,i,r)});else if(typeof n=="function")n(e,i,r,t);else{var s=Object.keys(n)[0];Array.isArray(n[s])?(r[s]={},t(e,n[s],i,r[s])):r[s]=n[s](e,i,r,t)}return i};o1.parse=a4;var s4=function(e,n){return function(i,r,s,d){n(i,r,s)&&d(i,e,r,s)}};o1.conditional=s4;var o4=function(e,n){return function(i,r,s,d){for(var o=[],l=i.pos;n(i,r,s);){var m={};if(d(i,e,r,m),i.pos===l)break;l=i.pos,o.push(m)}return o}};o1.loop=o4});var $1=p1(G=>{"use strict";L();Object.defineProperty(G,"__esModule",{value:!0});G.readBits=G.readArray=G.readUnsigned=G.readString=G.peekBytes=G.readBytes=G.peekByte=G.readByte=G.buildStream=void 0;var d4=function(e){return{data:e,pos:0}};G.buildStream=d4;var S0=function(){return function(e){return e.data[e.pos++]}};G.readByte=S0;var l4=function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return function(n){return n.data[n.pos+e]}};G.peekByte=l4;var S1=function(e){return function(n){return n.data.subarray(n.pos,n.pos+=e)}};G.readBytes=S1;var c4=function(e){return function(n){return n.data.subarray(n.pos,n.pos+e)}};G.peekBytes=c4;var _4=function(e){return function(n){return Array.from(S1(e)(n)).map(function(i){return String.fromCharCode(i)}).join("")}};G.readString=_4;var u4=function(e){return function(n){var i=S1(2)(n);return e?(i[1]<<8)+i[0]:(i[0]<<8)+i[1]}};G.readUnsigned=u4;var h4=function(e,n){return function(i,r,s){for(var d=typeof n=="function"?n(i,r,s):n,o=S1(e),l=new Array(d),m=0;m<d;m++)l[m]=o(i);return l}};G.readArray=h4;var m4=function(e,n,i){for(var r=0,s=0;s<i;s++)r+=e[n+s]&&Math.pow(2,i-s-1);return r},f4=function(e){return function(n){for(var i=S0()(n),r=new Array(8),s=0;s<8;s++)r[7-s]=!!(i&1<<s);return Object.keys(e).reduce(function(d,o){var l=e[o];return l.length?d[o]=m4(r,l.index,l.length):d[o]=r[l.index],d},{})}};G.readBits=f4});var P0=p1(I1=>{"use strict";L();Object.defineProperty(I1,"__esModule",{value:!0});I1.default=void 0;var d1=H1(),C=$1(),P1={blocks:function(e){for(var n=0,i=[],r=e.data.length,s=0,d=(0,C.readByte)()(e);d!==n&&d;d=(0,C.readByte)()(e)){if(e.pos+d>=r){var o=r-e.pos;i.push((0,C.readBytes)(o)(e)),s+=o;break}i.push((0,C.readBytes)(d)(e)),s+=d}for(var l=new Uint8Array(s),m=0,u=0;u<i.length;u++)l.set(i[u],m),m+=i[u].length;return l}},p4=(0,d1.conditional)({gce:[{codes:(0,C.readBytes)(2)},{byteSize:(0,C.readByte)()},{extras:(0,C.readBits)({future:{index:0,length:3},disposal:{index:3,length:3},userInput:{index:6},transparentColorGiven:{index:7}})},{delay:(0,C.readUnsigned)(!0)},{transparentColorIndex:(0,C.readByte)()},{terminator:(0,C.readByte)()}]},function(t){var e=(0,C.peekBytes)(2)(t);return e[0]===33&&e[1]===249}),g4=(0,d1.conditional)({image:[{code:(0,C.readByte)()},{descriptor:[{left:(0,C.readUnsigned)(!0)},{top:(0,C.readUnsigned)(!0)},{width:(0,C.readUnsigned)(!0)},{height:(0,C.readUnsigned)(!0)},{lct:(0,C.readBits)({exists:{index:0},interlaced:{index:1},sort:{index:2},future:{index:3,length:2},size:{index:5,length:3}})}]},(0,d1.conditional)({lct:(0,C.readArray)(3,function(t,e,n){return Math.pow(2,n.descriptor.lct.size+1)})},function(t,e,n){return n.descriptor.lct.exists}),{data:[{minCodeSize:(0,C.readByte)()},P1]}]},function(t){return(0,C.peekByte)()(t)===44}),w4=(0,d1.conditional)({text:[{codes:(0,C.readBytes)(2)},{blockSize:(0,C.readByte)()},{preData:function(e,n,i){return(0,C.readBytes)(i.text.blockSize)(e)}},P1]},function(t){var e=(0,C.peekBytes)(2)(t);return e[0]===33&&e[1]===1}),v4=(0,d1.conditional)({application:[{codes:(0,C.readBytes)(2)},{blockSize:(0,C.readByte)()},{id:function(e,n,i){return(0,C.readString)(i.blockSize)(e)}},P1]},function(t){var e=(0,C.peekBytes)(2)(t);return e[0]===33&&e[1]===255}),y4=(0,d1.conditional)({comment:[{codes:(0,C.readBytes)(2)},P1]},function(t){var e=(0,C.peekBytes)(2)(t);return e[0]===33&&e[1]===254}),b4=[{header:[{signature:(0,C.readString)(3)},{version:(0,C.readString)(3)}]},{lsd:[{width:(0,C.readUnsigned)(!0)},{height:(0,C.readUnsigned)(!0)},{gct:(0,C.readBits)({exists:{index:0},resolution:{index:1,length:3},sort:{index:4},size:{index:5,length:3}})},{backgroundColorIndex:(0,C.readByte)()},{pixelAspectRatio:(0,C.readByte)()}]},(0,d1.conditional)({gct:(0,C.readArray)(3,function(t,e){return Math.pow(2,e.lsd.gct.size+1)})},function(t,e){return e.lsd.gct.exists}),{frames:(0,d1.loop)([p4,v4,y4,g4,w4],function(t){var e=(0,C.peekByte)()(t);return e===33||e===44})}],M4=b4;I1.default=M4});var I0=p1(k1=>{"use strict";L();Object.defineProperty(k1,"__esModule",{value:!0});k1.deinterlace=void 0;var C4=function(e,n){for(var i=new Array(e.length),r=e.length/n,s=function(w,g){var f=e.slice(g*n,(g+1)*n);i.splice.apply(i,[w*n,n].concat(f))},d=[0,4,2,1],o=[8,8,4,2],l=0,m=0;m<4;m++)for(var u=d[m];u<r;u+=o[m])s(u,l),l++;return i};k1.deinterlace=C4});var k0=p1(E1=>{"use strict";L();Object.defineProperty(E1,"__esModule",{value:!0});E1.lzw=void 0;var L4=function(e,n,i){var r=4096,s=-1,d=i,o,l,m,u,c,w,g,T,f,S,E,O,j,z,n1,Y,k=new Array(i),P=new Array(r),M=new Array(r),N=new Array(r+1);for(O=e,l=1<<O,c=l+1,o=l+2,g=s,u=O+1,m=(1<<u)-1,f=0;f<l;f++)P[f]=0,M[f]=f;var E,T,V,j,z,Y,n1;for(E=T=V=j=z=Y=n1=0,S=0;S<d;){if(z===0){if(T<u){E+=n[n1]<<T,T+=8,n1++;continue}if(f=E&m,E>>=u,T-=u,f>o||f==c)break;if(f==l){u=O+1,m=(1<<u)-1,o=l+2,g=s;continue}if(g==s){N[z++]=M[f],g=f,j=f;continue}for(w=f,f==o&&(N[z++]=j,f=g);f>l;)N[z++]=M[f],f=P[f];j=M[f]&255,N[z++]=j,o<r&&(P[o]=g,M[o]=j,o++,(o&m)===0&&o<r&&(u++,m+=o)),g=w}z--,k[Y++]=N[z],S++}for(S=Y;S<d;S++)k[S]=0;return k};E1.lzw=L4});var T0=p1(l1=>{"use strict";L();Object.defineProperty(l1,"__esModule",{value:!0});l1.decompressFrames=l1.decompressFrame=l1.parseGIF=void 0;var x4=E4(P0()),S4=H1(),P4=$1(),I4=I0(),k4=k0();function E4(t){return t&&t.__esModule?t:{default:t}}var T4=function(e){var n=new Uint8Array(e);return(0,S4.parse)((0,P4.buildStream)(n),x4.default)};l1.parseGIF=T4;var R4=function(e){for(var n=e.pixels.length,i=new Uint8ClampedArray(n*4),r=0;r<n;r++){var s=r*4,d=e.pixels[r],o=e.colorTable[d]||[0,0,0];i[s]=o[0],i[s+1]=o[1],i[s+2]=o[2],i[s+3]=d!==e.transparentIndex?255:0}return i},E0=function(e,n,i){if(!e.image){console.warn("gif frame does not have associated image.");return}var r=e.image,s=r.descriptor.width*r.descriptor.height,d=(0,k4.lzw)(r.data.minCodeSize,r.data.blocks,s);r.descriptor.lct.interlaced&&(d=(0,I4.deinterlace)(d,r.descriptor.width));var o={pixels:d,dims:{top:e.image.descriptor.top,left:e.image.descriptor.left,width:e.image.descriptor.width,height:e.image.descriptor.height}};return r.descriptor.lct&&r.descriptor.lct.exists?o.colorTable=r.lct:o.colorTable=n,e.gce&&(o.delay=(e.gce.delay||10)*10,o.disposalType=e.gce.extras.disposal,e.gce.extras.transparentColorGiven&&(o.transparentIndex=e.gce.transparentColorIndex)),i&&(o.patch=R4(o)),o};l1.decompressFrame=E0;var F4=function(e,n){return e.frames.filter(function(i){return i.image}).map(function(i){return E0(i,e.gct,n)})};l1.decompressFrames=F4});L();L();var x0=[{packageName:"@framefields/node-lut",ops:["ApplyLUT"],load:()=>import("./renderers-XFBSGTHU.mjs")},{packageName:"@framefields/node-audio-compressor",ops:["AudioCompressor"],load:()=>import("./renderers-YAOB5XU6.mjs")},{packageName:"@framefields/node-audio-delay",ops:["AudioDelay"],load:()=>import("./renderers-Q3MD34JN.mjs")},{packageName:"@framefields/node-audio-fade",ops:["AudioFade"],load:()=>import("./renderers-27Q5X3U6.mjs")},{packageName:"@framefields/node-audio-noise-gate",ops:["AudioNoiseGate"],load:()=>import("./renderers-GXCRINGC.mjs")},{packageName:"@framefields/node-audio-parametric-eq",ops:["AudioParametricEq"],load:()=>import("./renderers-DZTNRCR7.mjs")},{packageName:"@framefields/node-audio-reverb",ops:["AudioReverb"],load:()=>import("./renderers-NS3AIJVG.mjs")},{packageName:"@framefields/node-audio-signal-extractor",ops:["AudioSignalExtractor"],load:()=>import("./renderers-CHOGQHVQ.mjs")},{packageName:"@framefields/node-blur",ops:["Blur"],load:()=>import("./renderers-NSY2SDIE.mjs")},{packageName:"@framefields/node-camera-parallax-3d",ops:["CameraParallax3D"],load:()=>import("./renderers-2US2NIUG.mjs")},{packageName:"@framefields/node-canvas-generator",ops:["CanvasGenerator"],load:()=>import("./renderers-B52QT6MT.mjs")},{packageName:"@framefields/node-channel-merger",ops:["ChannelMerger"],load:()=>import("./renderers-F2KJNDWA.mjs")},{packageName:"@framefields/node-channel-splitter",ops:["ChannelSplitter"],load:()=>import("./renderers-PW4OJWHF.mjs")},{packageName:"@framefields/node-color-balance",ops:["ColorBalance"],load:()=>import("./renderers-76PQY2SO.mjs")},{packageName:"@framefields/node-colorkey",ops:["ColorKey"],load:()=>import("./renderers-BE6RVJSE.mjs")},{packageName:"@framefields/node-compositor",ops:["Compositor"],load:()=>import("./renderers-LTNTQLWE.mjs")},{packageName:"@framefields/node-corner-pin",ops:["CornerPin"],load:()=>import("./renderers-DEYDSGJX.mjs")},{packageName:"@framefields/node-crop",ops:["Crop"],load:()=>import("./renderers-VTTGFO55.mjs")},{packageName:"@framefields/node-curves",ops:["Curves"],load:()=>import("./renderers-XUHRY3XH.mjs")},{packageName:"@framefields/node-deflicker",ops:["TemporalDeflicker","Deflicker"],load:()=>import("./renderers-PWLWOZY4.mjs")},{packageName:"@framefields/node-displacement-map",ops:["DisplacementMap"],load:()=>import("./renderers-KBFW7B5F.mjs")},{packageName:"@framefields/node-extract-frame",ops:["ExtractFrame"],load:()=>import("./renderers-WG7QBD4D.mjs")},{packageName:"@framefields/node-extract-lut",ops:["ExtractLUT"],load:()=>import("./renderers-W5CVDJVH.mjs")},{packageName:"@framefields/node-film-grain",ops:["FilmGrain"],load:()=>import("./renderers-IHKORHMT.mjs")},{packageName:"@framefields/node-flip",ops:["Flip"],load:()=>import("./renderers-4AHH6BHF.mjs")},{packageName:"@framefields/node-gradient-map",ops:["GradientMap"],load:()=>import("./renderers-UGZUPONY.mjs")},{packageName:"@framefields/node-halftone-screen",ops:["HalftoneScreen"],load:()=>import("./renderers-32PIFHPS.mjs")},{packageName:"@framefields/node-high-pass",ops:["HighPass"],load:()=>import("./renderers-JA4SLMG3.mjs")},{packageName:"@framefields/node-kenburns",ops:["KenBurns"],load:()=>import("./renderers-LJRJMFCR.mjs")},{packageName:"@framefields/node-layer-style",ops:["LayerStyle"],load:()=>import("./renderers-6PRVCTYV.mjs")},{packageName:"@framefields/node-levels",ops:["Levels"],load:()=>import("./renderers-BMM2BH56.mjs")},{packageName:"@framefields/node-liquify",ops:["Liquify"],load:()=>import("./renderers-WSMLLSWX.mjs")},{packageName:"@framefields/node-mask-math",ops:["MaskMath"],load:()=>import("./renderers-ELO3KWTK.mjs")},{packageName:"@framefields/node-mesh-warp",ops:["MeshWarp"],load:()=>import("./renderers-RXGNA2Q7.mjs")},{packageName:"@framefields/node-modulate",ops:["Modulate"],load:()=>import("./renderers-NQUDQEHY.mjs")},{packageName:"@framefields/node-noise-generator",ops:["NoiseGenerator"],load:()=>import("./renderers-JQHUBWLL.mjs")},{packageName:"@framefields/node-paint",ops:["Paint"],load:()=>import("./renderers-3Y3EMRDJ.mjs")},{packageName:"@framefields/node-patch-heal",ops:["PatchHeal"],load:()=>import("./renderers-GJSUN5HU.mjs")},{packageName:"@framefields/node-refine-edge",ops:["RefineEdge"],load:()=>import("./renderers-JLN77CFZ.mjs")},{packageName:"@framefields/node-refraction-caustics",ops:["RefractionCaustics3D"],load:()=>import("./renderers-CHJWUJVI.mjs")},{packageName:"@framefields/node-relight-3d",ops:["Relight3D"],load:()=>import("./renderers-CI2GXWLP.mjs")},{packageName:"@framefields/node-resizer-scaler",ops:["ResizerScaler"],load:()=>import("./renderers-CAUWP4XH.mjs")},{packageName:"@framefields/node-rotate",ops:["Rotate"],load:()=>import("./renderers-WN4SYFCU.mjs")},{packageName:"@framefields/node-selective-color",ops:["SelectiveColor"],load:()=>import("./renderers-XFC6ZPO5.mjs")},{packageName:"@framefields/node-shadows-highlights",ops:["ShadowsHighlights"],load:()=>import("./renderers-W3VVM5HB.mjs")},{packageName:"@framefields/node-shape-generator",ops:["ShapeGenerator"],load:()=>import("./renderers-WLH4HRUE.mjs")},{packageName:"@framefields/node-signal-gate",ops:["SignalGate"],load:()=>import("./renderers-LPAPZ5QS.mjs")},{packageName:"@framefields/node-stereo-panning",ops:["StereoPanning"],load:()=>import("./renderers-YTB4FOHT.mjs")},{packageName:"@framefields/node-tile-offset",ops:["TileOffset"],load:()=>import("./renderers-CRKRWR2Y.mjs")},{packageName:"@framefields/node-unsharp-mask",ops:["UnsharpMask"],load:()=>import("./renderers-FCV4COVB.mjs")},{packageName:"@framefields/node-vignette",ops:["Vignette"],load:()=>import("./renderers-WLLJFZTF.mjs")},{packageName:"@framefields/node-vision",ops:["Vision"],load:()=>import("./renderers-EE2GFG7J.mjs")}];L();L();var W1=class t{static instance=null;loadedFonts=new Set;constructor(){}static getInstance(){return t.instance||(t.instance=new t),t.instance}async loadFont(e,n){if(this.loadedFonts.has(e))return;let i=`local-font-${e}`;if(document.getElementById(i))return;let r=document.createElement("style");r.id=i,r.innerHTML=`
1
+ import{a as v0}from"./chunk-SRT2OCQW.mjs";import{a as z1,d as g0}from"./chunk-AG5JNZYQ.mjs";import{a as w0,c as y0,f as M0}from"./chunk-T6CC2KCZ.mjs";import{a as F}from"./chunk-LKYN3BM2.mjs";import"./chunk-JPXQPP6J.mjs";import{a as C0,b as L0}from"./chunk-UC7CSW2A.mjs";import"./chunk-CNSHAFEA.mjs";import{a as G1}from"./chunk-EJGLUZMW.mjs";import{a as u0}from"./chunk-CYY366IE.mjs";import{a as b0}from"./chunk-4VOHF3FF.mjs";import{i as d0,l as N1}from"./chunk-24P6DAB3.mjs";import"./chunk-36YGYLKD.mjs";import{h as o0,o as L1,u as l0,v as c0,w as _0}from"./chunk-ZNGOAGAI.mjs";import{d as r1}from"./chunk-6YJP57MZ.mjs";import{a as B1,c as f0}from"./chunk-AEK5BO3J.mjs";import{a as h0,d as p0}from"./chunk-MJM3NFEC.mjs";import{b as m0,d as x1}from"./chunk-HYBAPT6I.mjs";import{a as p1,c as r4,d as A,e as L}from"./chunk-BVF64D6H.mjs";var H1=p1(o1=>{"use strict";L();Object.defineProperty(o1,"__esModule",{value:!0});o1.loop=o1.conditional=o1.parse=void 0;var a4=function t(e,n){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:i;if(Array.isArray(n))n.forEach(function(d){return t(e,d,i,r)});else if(typeof n=="function")n(e,i,r,t);else{var s=Object.keys(n)[0];Array.isArray(n[s])?(r[s]={},t(e,n[s],i,r[s])):r[s]=n[s](e,i,r,t)}return i};o1.parse=a4;var s4=function(e,n){return function(i,r,s,d){n(i,r,s)&&d(i,e,r,s)}};o1.conditional=s4;var o4=function(e,n){return function(i,r,s,d){for(var o=[],l=i.pos;n(i,r,s);){var m={};if(d(i,e,r,m),i.pos===l)break;l=i.pos,o.push(m)}return o}};o1.loop=o4});var $1=p1(G=>{"use strict";L();Object.defineProperty(G,"__esModule",{value:!0});G.readBits=G.readArray=G.readUnsigned=G.readString=G.peekBytes=G.readBytes=G.peekByte=G.readByte=G.buildStream=void 0;var d4=function(e){return{data:e,pos:0}};G.buildStream=d4;var S0=function(){return function(e){return e.data[e.pos++]}};G.readByte=S0;var l4=function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return function(n){return n.data[n.pos+e]}};G.peekByte=l4;var S1=function(e){return function(n){return n.data.subarray(n.pos,n.pos+=e)}};G.readBytes=S1;var c4=function(e){return function(n){return n.data.subarray(n.pos,n.pos+e)}};G.peekBytes=c4;var _4=function(e){return function(n){return Array.from(S1(e)(n)).map(function(i){return String.fromCharCode(i)}).join("")}};G.readString=_4;var u4=function(e){return function(n){var i=S1(2)(n);return e?(i[1]<<8)+i[0]:(i[0]<<8)+i[1]}};G.readUnsigned=u4;var h4=function(e,n){return function(i,r,s){for(var d=typeof n=="function"?n(i,r,s):n,o=S1(e),l=new Array(d),m=0;m<d;m++)l[m]=o(i);return l}};G.readArray=h4;var m4=function(e,n,i){for(var r=0,s=0;s<i;s++)r+=e[n+s]&&Math.pow(2,i-s-1);return r},f4=function(e){return function(n){for(var i=S0()(n),r=new Array(8),s=0;s<8;s++)r[7-s]=!!(i&1<<s);return Object.keys(e).reduce(function(d,o){var l=e[o];return l.length?d[o]=m4(r,l.index,l.length):d[o]=r[l.index],d},{})}};G.readBits=f4});var P0=p1(I1=>{"use strict";L();Object.defineProperty(I1,"__esModule",{value:!0});I1.default=void 0;var d1=H1(),C=$1(),P1={blocks:function(e){for(var n=0,i=[],r=e.data.length,s=0,d=(0,C.readByte)()(e);d!==n&&d;d=(0,C.readByte)()(e)){if(e.pos+d>=r){var o=r-e.pos;i.push((0,C.readBytes)(o)(e)),s+=o;break}i.push((0,C.readBytes)(d)(e)),s+=d}for(var l=new Uint8Array(s),m=0,u=0;u<i.length;u++)l.set(i[u],m),m+=i[u].length;return l}},p4=(0,d1.conditional)({gce:[{codes:(0,C.readBytes)(2)},{byteSize:(0,C.readByte)()},{extras:(0,C.readBits)({future:{index:0,length:3},disposal:{index:3,length:3},userInput:{index:6},transparentColorGiven:{index:7}})},{delay:(0,C.readUnsigned)(!0)},{transparentColorIndex:(0,C.readByte)()},{terminator:(0,C.readByte)()}]},function(t){var e=(0,C.peekBytes)(2)(t);return e[0]===33&&e[1]===249}),g4=(0,d1.conditional)({image:[{code:(0,C.readByte)()},{descriptor:[{left:(0,C.readUnsigned)(!0)},{top:(0,C.readUnsigned)(!0)},{width:(0,C.readUnsigned)(!0)},{height:(0,C.readUnsigned)(!0)},{lct:(0,C.readBits)({exists:{index:0},interlaced:{index:1},sort:{index:2},future:{index:3,length:2},size:{index:5,length:3}})}]},(0,d1.conditional)({lct:(0,C.readArray)(3,function(t,e,n){return Math.pow(2,n.descriptor.lct.size+1)})},function(t,e,n){return n.descriptor.lct.exists}),{data:[{minCodeSize:(0,C.readByte)()},P1]}]},function(t){return(0,C.peekByte)()(t)===44}),w4=(0,d1.conditional)({text:[{codes:(0,C.readBytes)(2)},{blockSize:(0,C.readByte)()},{preData:function(e,n,i){return(0,C.readBytes)(i.text.blockSize)(e)}},P1]},function(t){var e=(0,C.peekBytes)(2)(t);return e[0]===33&&e[1]===1}),v4=(0,d1.conditional)({application:[{codes:(0,C.readBytes)(2)},{blockSize:(0,C.readByte)()},{id:function(e,n,i){return(0,C.readString)(i.blockSize)(e)}},P1]},function(t){var e=(0,C.peekBytes)(2)(t);return e[0]===33&&e[1]===255}),y4=(0,d1.conditional)({comment:[{codes:(0,C.readBytes)(2)},P1]},function(t){var e=(0,C.peekBytes)(2)(t);return e[0]===33&&e[1]===254}),b4=[{header:[{signature:(0,C.readString)(3)},{version:(0,C.readString)(3)}]},{lsd:[{width:(0,C.readUnsigned)(!0)},{height:(0,C.readUnsigned)(!0)},{gct:(0,C.readBits)({exists:{index:0},resolution:{index:1,length:3},sort:{index:4},size:{index:5,length:3}})},{backgroundColorIndex:(0,C.readByte)()},{pixelAspectRatio:(0,C.readByte)()}]},(0,d1.conditional)({gct:(0,C.readArray)(3,function(t,e){return Math.pow(2,e.lsd.gct.size+1)})},function(t,e){return e.lsd.gct.exists}),{frames:(0,d1.loop)([p4,v4,y4,g4,w4],function(t){var e=(0,C.peekByte)()(t);return e===33||e===44})}],M4=b4;I1.default=M4});var I0=p1(k1=>{"use strict";L();Object.defineProperty(k1,"__esModule",{value:!0});k1.deinterlace=void 0;var C4=function(e,n){for(var i=new Array(e.length),r=e.length/n,s=function(w,g){var f=e.slice(g*n,(g+1)*n);i.splice.apply(i,[w*n,n].concat(f))},d=[0,4,2,1],o=[8,8,4,2],l=0,m=0;m<4;m++)for(var u=d[m];u<r;u+=o[m])s(u,l),l++;return i};k1.deinterlace=C4});var k0=p1(E1=>{"use strict";L();Object.defineProperty(E1,"__esModule",{value:!0});E1.lzw=void 0;var L4=function(e,n,i){var r=4096,s=-1,d=i,o,l,m,u,c,w,g,T,f,S,E,O,j,z,n1,Y,k=new Array(i),P=new Array(r),M=new Array(r),N=new Array(r+1);for(O=e,l=1<<O,c=l+1,o=l+2,g=s,u=O+1,m=(1<<u)-1,f=0;f<l;f++)P[f]=0,M[f]=f;var E,T,V,j,z,Y,n1;for(E=T=V=j=z=Y=n1=0,S=0;S<d;){if(z===0){if(T<u){E+=n[n1]<<T,T+=8,n1++;continue}if(f=E&m,E>>=u,T-=u,f>o||f==c)break;if(f==l){u=O+1,m=(1<<u)-1,o=l+2,g=s;continue}if(g==s){N[z++]=M[f],g=f,j=f;continue}for(w=f,f==o&&(N[z++]=j,f=g);f>l;)N[z++]=M[f],f=P[f];j=M[f]&255,N[z++]=j,o<r&&(P[o]=g,M[o]=j,o++,(o&m)===0&&o<r&&(u++,m+=o)),g=w}z--,k[Y++]=N[z],S++}for(S=Y;S<d;S++)k[S]=0;return k};E1.lzw=L4});var T0=p1(l1=>{"use strict";L();Object.defineProperty(l1,"__esModule",{value:!0});l1.decompressFrames=l1.decompressFrame=l1.parseGIF=void 0;var x4=E4(P0()),S4=H1(),P4=$1(),I4=I0(),k4=k0();function E4(t){return t&&t.__esModule?t:{default:t}}var T4=function(e){var n=new Uint8Array(e);return(0,S4.parse)((0,P4.buildStream)(n),x4.default)};l1.parseGIF=T4;var R4=function(e){for(var n=e.pixels.length,i=new Uint8ClampedArray(n*4),r=0;r<n;r++){var s=r*4,d=e.pixels[r],o=e.colorTable[d]||[0,0,0];i[s]=o[0],i[s+1]=o[1],i[s+2]=o[2],i[s+3]=d!==e.transparentIndex?255:0}return i},E0=function(e,n,i){if(!e.image){console.warn("gif frame does not have associated image.");return}var r=e.image,s=r.descriptor.width*r.descriptor.height,d=(0,k4.lzw)(r.data.minCodeSize,r.data.blocks,s);r.descriptor.lct.interlaced&&(d=(0,I4.deinterlace)(d,r.descriptor.width));var o={pixels:d,dims:{top:e.image.descriptor.top,left:e.image.descriptor.left,width:e.image.descriptor.width,height:e.image.descriptor.height}};return r.descriptor.lct&&r.descriptor.lct.exists?o.colorTable=r.lct:o.colorTable=n,e.gce&&(o.delay=(e.gce.delay||10)*10,o.disposalType=e.gce.extras.disposal,e.gce.extras.transparentColorGiven&&(o.transparentIndex=e.gce.transparentColorIndex)),i&&(o.patch=R4(o)),o};l1.decompressFrame=E0;var F4=function(e,n){return e.frames.filter(function(i){return i.image}).map(function(i){return E0(i,e.gct,n)})};l1.decompressFrames=F4});L();L();var x0=[{packageName:"@framefields/node-lut",ops:["ApplyLUT"],load:()=>import("./renderers-XFBSGTHU.mjs")},{packageName:"@framefields/node-audio-compressor",ops:["AudioCompressor"],load:()=>import("./renderers-YAOB5XU6.mjs")},{packageName:"@framefields/node-audio-delay",ops:["AudioDelay"],load:()=>import("./renderers-Q3MD34JN.mjs")},{packageName:"@framefields/node-audio-fade",ops:["AudioFade"],load:()=>import("./renderers-27Q5X3U6.mjs")},{packageName:"@framefields/node-audio-noise-gate",ops:["AudioNoiseGate"],load:()=>import("./renderers-GXCRINGC.mjs")},{packageName:"@framefields/node-audio-parametric-eq",ops:["AudioParametricEq"],load:()=>import("./renderers-DZTNRCR7.mjs")},{packageName:"@framefields/node-audio-reverb",ops:["AudioReverb"],load:()=>import("./renderers-NS3AIJVG.mjs")},{packageName:"@framefields/node-audio-signal-extractor",ops:["AudioSignalExtractor"],load:()=>import("./renderers-CHOGQHVQ.mjs")},{packageName:"@framefields/node-blur",ops:["Blur"],load:()=>import("./renderers-NSY2SDIE.mjs")},{packageName:"@framefields/node-camera-parallax-3d",ops:["CameraParallax3D"],load:()=>import("./renderers-2US2NIUG.mjs")},{packageName:"@framefields/node-canvas-generator",ops:["CanvasGenerator"],load:()=>import("./renderers-B52QT6MT.mjs")},{packageName:"@framefields/node-channel-merger",ops:["ChannelMerger"],load:()=>import("./renderers-F2KJNDWA.mjs")},{packageName:"@framefields/node-channel-splitter",ops:["ChannelSplitter"],load:()=>import("./renderers-PW4OJWHF.mjs")},{packageName:"@framefields/node-color-balance",ops:["ColorBalance"],load:()=>import("./renderers-76PQY2SO.mjs")},{packageName:"@framefields/node-colorkey",ops:["ColorKey"],load:()=>import("./renderers-BE6RVJSE.mjs")},{packageName:"@framefields/node-compositor",ops:["Compositor"],load:()=>import("./renderers-7HNVXNAI.mjs")},{packageName:"@framefields/node-corner-pin",ops:["CornerPin"],load:()=>import("./renderers-DEYDSGJX.mjs")},{packageName:"@framefields/node-crop",ops:["Crop"],load:()=>import("./renderers-VTTGFO55.mjs")},{packageName:"@framefields/node-curves",ops:["Curves"],load:()=>import("./renderers-XUHRY3XH.mjs")},{packageName:"@framefields/node-deflicker",ops:["TemporalDeflicker","Deflicker"],load:()=>import("./renderers-PWLWOZY4.mjs")},{packageName:"@framefields/node-displacement-map",ops:["DisplacementMap"],load:()=>import("./renderers-KBFW7B5F.mjs")},{packageName:"@framefields/node-extract-frame",ops:["ExtractFrame"],load:()=>import("./renderers-WG7QBD4D.mjs")},{packageName:"@framefields/node-extract-lut",ops:["ExtractLUT"],load:()=>import("./renderers-W5CVDJVH.mjs")},{packageName:"@framefields/node-film-grain",ops:["FilmGrain"],load:()=>import("./renderers-IHKORHMT.mjs")},{packageName:"@framefields/node-flip",ops:["Flip"],load:()=>import("./renderers-4AHH6BHF.mjs")},{packageName:"@framefields/node-gradient-map",ops:["GradientMap"],load:()=>import("./renderers-UGZUPONY.mjs")},{packageName:"@framefields/node-halftone-screen",ops:["HalftoneScreen"],load:()=>import("./renderers-32PIFHPS.mjs")},{packageName:"@framefields/node-high-pass",ops:["HighPass"],load:()=>import("./renderers-JA4SLMG3.mjs")},{packageName:"@framefields/node-kenburns",ops:["KenBurns"],load:()=>import("./renderers-LJRJMFCR.mjs")},{packageName:"@framefields/node-layer-style",ops:["LayerStyle"],load:()=>import("./renderers-6PRVCTYV.mjs")},{packageName:"@framefields/node-levels",ops:["Levels"],load:()=>import("./renderers-BMM2BH56.mjs")},{packageName:"@framefields/node-liquify",ops:["Liquify"],load:()=>import("./renderers-WSMLLSWX.mjs")},{packageName:"@framefields/node-mask-math",ops:["MaskMath"],load:()=>import("./renderers-ELO3KWTK.mjs")},{packageName:"@framefields/node-mesh-warp",ops:["MeshWarp"],load:()=>import("./renderers-RXGNA2Q7.mjs")},{packageName:"@framefields/node-modulate",ops:["Modulate"],load:()=>import("./renderers-NQUDQEHY.mjs")},{packageName:"@framefields/node-noise-generator",ops:["NoiseGenerator"],load:()=>import("./renderers-JQHUBWLL.mjs")},{packageName:"@framefields/node-paint",ops:["Paint"],load:()=>import("./renderers-3Y3EMRDJ.mjs")},{packageName:"@framefields/node-patch-heal",ops:["PatchHeal"],load:()=>import("./renderers-GJSUN5HU.mjs")},{packageName:"@framefields/node-refine-edge",ops:["RefineEdge"],load:()=>import("./renderers-JLN77CFZ.mjs")},{packageName:"@framefields/node-refraction-caustics",ops:["RefractionCaustics3D"],load:()=>import("./renderers-CHJWUJVI.mjs")},{packageName:"@framefields/node-relight-3d",ops:["Relight3D"],load:()=>import("./renderers-CI2GXWLP.mjs")},{packageName:"@framefields/node-resizer-scaler",ops:["ResizerScaler"],load:()=>import("./renderers-CAUWP4XH.mjs")},{packageName:"@framefields/node-rotate",ops:["Rotate"],load:()=>import("./renderers-WN4SYFCU.mjs")},{packageName:"@framefields/node-selective-color",ops:["SelectiveColor"],load:()=>import("./renderers-XFC6ZPO5.mjs")},{packageName:"@framefields/node-shadows-highlights",ops:["ShadowsHighlights"],load:()=>import("./renderers-W3VVM5HB.mjs")},{packageName:"@framefields/node-shape-generator",ops:["ShapeGenerator"],load:()=>import("./renderers-WLH4HRUE.mjs")},{packageName:"@framefields/node-signal-gate",ops:["SignalGate"],load:()=>import("./renderers-LPAPZ5QS.mjs")},{packageName:"@framefields/node-stereo-panning",ops:["StereoPanning"],load:()=>import("./renderers-YTB4FOHT.mjs")},{packageName:"@framefields/node-tile-offset",ops:["TileOffset"],load:()=>import("./renderers-CRKRWR2Y.mjs")},{packageName:"@framefields/node-unsharp-mask",ops:["UnsharpMask"],load:()=>import("./renderers-FCV4COVB.mjs")},{packageName:"@framefields/node-vignette",ops:["Vignette"],load:()=>import("./renderers-WLLJFZTF.mjs")},{packageName:"@framefields/node-vision",ops:["Vision"],load:()=>import("./renderers-EE2GFG7J.mjs")}];L();L();var W1=class t{static instance=null;loadedFonts=new Set;constructor(){}static getInstance(){return t.instance||(t.instance=new t),t.instance}async loadFont(e,n){if(this.loadedFonts.has(e))return;let i=`local-font-${e}`;if(document.getElementById(i))return;let r=document.createElement("style");r.id=i,r.innerHTML=`
2
2
  @font-face {
3
3
  font-family: "${e}";
4
4
  src: url("${n}");
@@ -1,4 +1,4 @@
1
- import{b as Aa,c as Fa}from"./chunk-5PPSCISJ.mjs";import{A as Ya,C as Ga,F as Bn,K as hn,b as bi,c as Ti,d as L,e as dn,l as Ia,m as za,o as Ea,r as Va,y as Vn}from"./chunk-BUWK5RJ4.mjs";import"./chunk-JPXQPP6J.mjs";import{a as Da}from"./chunk-YKMBRUAE.mjs";import{b as Xa}from"./chunk-N4LHIPHZ.mjs";import{a as En}from"./chunk-CNSHAFEA.mjs";import{a as Ba}from"./chunk-BHFI3Y4T.mjs";import"./chunk-37EFVZWT.mjs";import"./chunk-4VOHF3FF.mjs";import{b as un,l as cn}from"./chunk-24P6DAB3.mjs";import"./chunk-36YGYLKD.mjs";import{c as xi,e as Sa,t as Ca,w as Ra}from"./chunk-ZNGOAGAI.mjs";import"./chunk-6YJP57MZ.mjs";import{d as fn,f as La}from"./chunk-ZJFAGIOM.mjs";import"./chunk-MTJHQATU.mjs";import{c as Oa}from"./chunk-HYBAPT6I.mjs";import"./chunk-YAQFFQPG.mjs";import{e as ue}from"./chunk-BVF64D6H.mjs";ue();ue();ue();var Ua=`
1
+ import{b as Aa,c as Fa}from"./chunk-AG5JNZYQ.mjs";import{A as Ya,C as Ga,F as Bn,K as hn,b as bi,c as Ti,d as L,e as dn,l as Ia,m as za,o as Ea,r as Va,y as Vn}from"./chunk-QTKJXDIW.mjs";import"./chunk-JPXQPP6J.mjs";import{a as Da}from"./chunk-YKMBRUAE.mjs";import{b as Xa}from"./chunk-N4LHIPHZ.mjs";import{a as En}from"./chunk-CNSHAFEA.mjs";import{a as Ba}from"./chunk-BHFI3Y4T.mjs";import"./chunk-37EFVZWT.mjs";import"./chunk-4VOHF3FF.mjs";import{b as un,l as cn}from"./chunk-24P6DAB3.mjs";import"./chunk-36YGYLKD.mjs";import{c as xi,e as Sa,t as Ca,w as Ra}from"./chunk-ZNGOAGAI.mjs";import"./chunk-6YJP57MZ.mjs";import{d as fn,f as La}from"./chunk-MJM3NFEC.mjs";import"./chunk-MTJHQATU.mjs";import{c as Oa}from"./chunk-HYBAPT6I.mjs";import"./chunk-YAQFFQPG.mjs";import{e as ue}from"./chunk-BVF64D6H.mjs";ue();ue();ue();var Ua=`
2
2
  struct RelightMaterialUniforms {
3
3
  // vec4 0
4
4
  roughness : f32,
@@ -1,6 +1,6 @@
1
1
  import { bt as getActiveMediaMetadata, ft as createVirtualMedia } from "./dist-B9Afsv83.mjs";
2
2
  import { t as ColorSchema } from "./dist-DzUJmIHt.mjs";
3
- import { nt as signalRegistry } from "./dist-DgfykO99.mjs";
3
+ import { nt as signalRegistry } from "./dist-B9PkqWnN.mjs";
4
4
  import { z } from "zod";
5
5
  import { loadYoga } from "yoga-layout/load";
6
6
 
@@ -5185,4 +5185,4 @@ function collectNodeOps(nodes) {
5185
5185
 
5186
5186
  //#endregion
5187
5187
  export { TextPathBuilder as $, MaterialTypeSchema as A, evaluateAnimationAtFrame as At, SelectorUnitsSchema as B, evaluateVolumetricFormation as Bt, KineticMarqueeConfigSchema as C, computeLayoutSync as Ct, LightTypeSchema as D, deterministicWigglyNoise as Dt, LightNodeSchema as E, computeStaggerDelay as Et, SceneDefinitionSchema as F, evaluateSelectorCombination as Ft, SpringPhysicsSchema as G, initLayout as Gt, ShapeNodeSchema as H, generatePathSegments as Ht, SceneTransitionTypeSchema as I, evaluateSkewMatrix as It, TextAnimatorBuilder as J, sampleCurveGeometry as Jt, TextAnchorConfigSchema as K, parseSvgPathToCubicBeziers as Kt, SelectorBasedOnSchema as L, evaluateSpringProgress as Lt, Model3DNodeSchema as M, evaluateCubicBezierDerivative as Mt, ParticleDissolveConfigSchema as N, evaluateExpressionSelector as Nt, LineSpacingDynamicsSchema as O, distanceToCurveParameter as Ot, Scene as P, evaluateMarqueeOffset as Pt, TextNodeSchema as Q, SelectorModeSchema as R, evaluateTrackAtFrame as Rt, GlyphAnchorPointSchema as S, computeLayout as St, LayoutNodeSchema as T, computeRangeSelectorWeight as Tt, SkewPropertiesSchema as U, getScramblePool as Ut, Sequence as V, generateArcLengthLUT as Vt, Spatial3DPropertiesSchema as W, getShuffledOrder as Wt, TextCursorConfigSchema as X, waveToCubicBeziers as Xt, TextAnimatorSchema as Y, samplePathChainGeometry as Yt, TextCursorStyleSchema as Z, EnhancedTextNodeSchema as _, calculateSequenceTimeline as _t, AnchorPresetSchema as a, TextSignalSelectorSchema as at, FlexNodeSchema as b, computeAnchorPivotOffset as bt, BoxNodeSchema as c, TextWigglySelectorSchema as ct, CarrierHandoffConfigSchema as d, VariableFontAxesSchema as dt, TextPathOptionsSchema as et, ChromaticGlitchConfigSchema as f, Vec2Schema as ft, DynamicStrokePropertiesSchema as g, buildPathLUT as gt, CubicBezierSegmentSchema as h, applyStaggerToChildren as ht, AnchorGroupingSchema as i, TextSelectorSchema as it, MediaNodeSchema as j, evaluateCubicBezier as jt, LongShadowConfigSchema as k, ellipseToCubicBeziers as kt, CameraAnimation as l, TypewriterAnimatorSchema as lt, CompositorProgramSchema as m, VolumetricFormationModeSchema as mt, AdvancedTextAnimatorBuilder as n, TextRangeSelectorSchema as nt, AnimatableGlyphPropsSchema as o, TextSpanMarkSchema as ot, ColorStopSchema as p, VolumetricFormationConfigSchema as pt, TextAnimator as q, sampleAudioSpectrumScale as qt, AdvancedTextAnimatorSchema as r, TextScrambleConfigSchema as rt, AudioSpectrumTypographySchema as s, TextSpanSchema as st, AETextAnimatorSchema as t, TextPathSourceSchema as tt, CameraNodeSchema as u, TypingCadenceSchema as ut, ExpressionSelectorSchema as v, collectNodeOps as vt, LayerAnimation as w, computeLineLeadingDisplacement as wt, GlyphAnchorGroupingSchema as x, computeCarrierContinuity as xt, ExtendedGlyphPropertiesSchema as y, compositorToProgram as yt, SelectorShapeSchema as z, evaluateTypewriterState as zt };
5188
- //# sourceMappingURL=program-C797QMRL.mjs.map
5188
+ //# sourceMappingURL=program-xRfFoPxe.mjs.map