@taole/giftstage 0.3.5 → 0.3.6

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.
@@ -1,4 +1,4 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});var cI=typeof document!="undefined"?document.currentScript:null;function se(C,A,g=2){const I=C.length;let B=ne(C,0,I,g,!0);const Q=[];if(!B||B.next===B.prev)return Q;let E,e,i;if(C.length>80*g){E=C[0],e=C[1];let t=E,a=e;for(let o=g;o<I;o+=g){const s=C[o],n=C[o+1];s<E&&(E=s),n<e&&(e=n),s>t&&(t=s),n>a&&(a=n)}i=Math.max(t-E,a-e),i=i!==0?32767/i:0}return WI(B,Q,g,E,e,i,0),Q}function ne(C,A,g,I,B){let Q;if(B===Re(C,A,g,I)>0)for(let E=A;E<g;E+=I)Q=TC(E/I|0,C[E],C[E+1],Q);else for(let E=g-I;E>=A;E-=I)Q=TC(E/I|0,C[E],C[E+1],Q);return Q&&HB(Q,Q.next)&&(VI(Q),Q=Q.next),Q}function TI(C,A){if(!C)return C;A||(A=C);let g=C,I;do if(I=!1,!g.steiner&&(HB(g,g.next)||yA(g.prev,g,g.next)===0)){if(VI(g),g=A=g.prev,g===g.next)break;I=!0}else g=g.next;while(I||g!==A);return A}function WI(C,A,g,I,B,Q,E){if(!C)return;!E&&Q&&De(C,I,B,Q);let e=C;for(;C.prev!==C.next;){const i=C.prev,t=C.next;if(Q?ce(C,I,B,Q):re(C)){A.push(i.i,C.i,t.i),VI(C),C=t.next,e=t.next;continue}if(C=t,C===e){E?E===1?(C=he(TI(C),A),WI(C,A,g,I,B,Q,2)):E===2&&le(C,A,g,I,B,Q):WI(TI(C),A,g,I,B,Q,1);break}}}function re(C){const A=C.prev,g=C,I=C.next;if(yA(A,g,I)>=0)return!1;const B=A.x,Q=g.x,E=I.x,e=A.y,i=g.y,t=I.y,a=Math.min(B,Q,E),o=Math.min(e,i,t),s=Math.max(B,Q,E),n=Math.max(e,i,t);let r=I.next;for(;r!==A;){if(r.x>=a&&r.x<=s&&r.y>=o&&r.y<=n&&MI(B,e,Q,i,E,t,r.x,r.y)&&yA(r.prev,r,r.next)>=0)return!1;r=r.next}return!0}function ce(C,A,g,I){const B=C.prev,Q=C,E=C.next;if(yA(B,Q,E)>=0)return!1;const e=B.x,i=Q.x,t=E.x,a=B.y,o=Q.y,s=E.y,n=Math.min(e,i,t),r=Math.min(a,o,s),c=Math.max(e,i,t),h=Math.max(a,o,s),l=oC(n,r,A,g,I),w=oC(c,h,A,g,I);let D=C.prevZ,y=C.nextZ;for(;D&&D.z>=l&&y&&y.z<=w;){if(D.x>=n&&D.x<=c&&D.y>=r&&D.y<=h&&D!==B&&D!==E&&MI(e,a,i,o,t,s,D.x,D.y)&&yA(D.prev,D,D.next)>=0||(D=D.prevZ,y.x>=n&&y.x<=c&&y.y>=r&&y.y<=h&&y!==B&&y!==E&&MI(e,a,i,o,t,s,y.x,y.y)&&yA(y.prev,y,y.next)>=0))return!1;y=y.nextZ}for(;D&&D.z>=l;){if(D.x>=n&&D.x<=c&&D.y>=r&&D.y<=h&&D!==B&&D!==E&&MI(e,a,i,o,t,s,D.x,D.y)&&yA(D.prev,D,D.next)>=0)return!1;D=D.prevZ}for(;y&&y.z<=w;){if(y.x>=n&&y.x<=c&&y.y>=r&&y.y<=h&&y!==B&&y!==E&&MI(e,a,i,o,t,s,y.x,y.y)&&yA(y.prev,y,y.next)>=0)return!1;y=y.nextZ}return!0}function he(C,A){let g=C;do{const I=g.prev,B=g.next.next;!HB(I,B)&&AE(I,g,g.next,B)&&MB(I,B)&&MB(B,I)&&(A.push(I.i,g.i,B.i),VI(g),VI(g.next),g=C=B),g=g.next}while(g!==C);return TI(g)}function le(C,A,g,I,B,Q){let E=C;do{let e=E.next.next;for(;e!==E.prev;){if(E.i!==e.i&&Fe(E,e)){let i=ue(E,e);E=TI(E,E.next),i=TI(i,i.next),WI(E,A,g,I,B,Q,0),WI(i,A,g,I,B,Q,0);return}e=e.next}E=E.next}while(E!==C)}function De(C,A,g,I){let B=C;do B.z===0&&(B.z=oC(B.x,B.y,A,g,I)),B.prevZ=B.prev,B.nextZ=B.next,B=B.next;while(B!==C);B.prevZ.nextZ=null,B.prevZ=null,we(B)}function we(C){let A,g=1;do{let I=C,B;C=null;let Q=null;for(A=0;I;){A++;let E=I,e=0;for(let t=0;t<g&&(e++,E=E.nextZ,!!E);t++);let i=g;for(;e>0||i>0&&E;)e!==0&&(i===0||!E||I.z<=E.z)?(B=I,I=I.nextZ,e--):(B=E,E=E.nextZ,i--),Q?Q.nextZ=B:C=B,B.prevZ=Q,Q=B;I=E}Q.nextZ=null,g*=2}while(A>1);return C}function oC(C,A,g,I,B){return C=(C-g)*B|0,A=(A-I)*B|0,C=(C|C<<8)&16711935,C=(C|C<<4)&252645135,C=(C|C<<2)&858993459,C=(C|C<<1)&1431655765,A=(A|A<<8)&16711935,A=(A|A<<4)&252645135,A=(A|A<<2)&858993459,A=(A|A<<1)&1431655765,C|A<<1}function ye(C,A,g,I,B,Q,E,e){return(B-E)*(A-e)>=(C-E)*(Q-e)&&(C-E)*(I-e)>=(g-E)*(A-e)&&(g-E)*(Q-e)>=(B-E)*(I-e)}function MI(C,A,g,I,B,Q,E,e){return!(C===E&&A===e)&&ye(C,A,g,I,B,Q,E,e)}function Fe(C,A){return C.next.i!==A.i&&C.prev.i!==A.i&&!de(C,A)&&(MB(C,A)&&MB(A,C)&&Ge(C,A)&&(yA(C.prev,C,A.prev)||yA(C,A.prev,A))||HB(C,A)&&yA(C.prev,C,C.next)>0&&yA(A.prev,A,A.next)>0)}function yA(C,A,g){return(A.y-C.y)*(g.x-A.x)-(A.x-C.x)*(g.y-A.y)}function HB(C,A){return C.x===A.x&&C.y===A.y}function AE(C,A,g,I){const B=BB(yA(C,A,g)),Q=BB(yA(C,A,I)),E=BB(yA(g,I,C)),e=BB(yA(g,I,A));return!!(B!==Q&&E!==e||B===0&&IB(C,g,A)||Q===0&&IB(C,I,A)||E===0&&IB(g,C,I)||e===0&&IB(g,A,I))}function IB(C,A,g){return A.x<=Math.max(C.x,g.x)&&A.x>=Math.min(C.x,g.x)&&A.y<=Math.max(C.y,g.y)&&A.y>=Math.min(C.y,g.y)}function BB(C){return C>0?1:C<0?-1:0}function de(C,A){let g=C;do{if(g.i!==C.i&&g.next.i!==C.i&&g.i!==A.i&&g.next.i!==A.i&&AE(g,g.next,C,A))return!0;g=g.next}while(g!==C);return!1}function MB(C,A){return yA(C.prev,C,C.next)<0?yA(C,A,C.next)>=0&&yA(C,C.prev,A)>=0:yA(C,A,C.prev)<0||yA(C,C.next,A)<0}function Ge(C,A){let g=C,I=!1;const B=(C.x+A.x)/2,Q=(C.y+A.y)/2;do g.y>Q!=g.next.y>Q&&g.next.y!==g.y&&B<(g.next.x-g.x)*(Q-g.y)/(g.next.y-g.y)+g.x&&(I=!I),g=g.next;while(g!==C);return I}function ue(C,A){const g=sC(C.i,C.x,C.y),I=sC(A.i,A.x,A.y),B=C.next,Q=A.prev;return C.next=A,A.prev=C,g.next=B,B.prev=g,I.next=g,g.prev=I,Q.next=I,I.prev=Q,I}function TC(C,A,g,I){const B=sC(C,A,g);return I?(B.next=I.next,B.prev=I,I.next.prev=B,I.next=B):(B.prev=B,B.next=B),B}function VI(C){C.next.prev=C.prev,C.prev.next=C.next,C.prevZ&&(C.prevZ.nextZ=C.nextZ),C.nextZ&&(C.nextZ.prevZ=C.prevZ)}function sC(C,A,g){return{i:C,x:A,y:g,prev:null,next:null,z:0,prevZ:null,nextZ:null,steiner:!1}}function Re(C,A,g,I){let B=0;for(let Q=A,E=g-I;Q<g;Q+=I)B+=(C[E]-C[Q])*(C[Q+1]+C[E+1]),E=Q;return B}const NB=8;function fe(C){const A=UC(C);let g=A.next();for(;!g.done;)g=A.next();return g.value}function*UC(C){if(!C||C.trim().length===0)return[];const A=[];let g=[],I=0,B=0,Q=0,E=0,e=0,i=0;const t=yield*Se(C);let a=0,o=0;function s(){return a<t.length?parseFloat(t[a++]):0}for(;a<t.length;)switch(a>=o&&(o=a+256,yield),t[a++]){case"M":for(g.length>0&&(A.push(g),g=[]),I=s(),B=s(),Q=I,E=B,g.push({x:I,y:B});a<t.length&&!isNaN(parseFloat(t[a]));)a>=o&&(o=a+256,yield),I=s(),B=s(),g.push({x:I,y:B});break;case"m":for(g.length>0&&(A.push(g),g=[]),I+=s(),B+=s(),Q=I,E=B,g.push({x:I,y:B});a<t.length&&!isNaN(parseFloat(t[a]));)a>=o&&(o=a+256,yield),I+=s(),B+=s(),g.push({x:I,y:B});break;case"L":for(;a<t.length&&!isNaN(parseFloat(t[a]));)a>=o&&(o=a+256,yield),I=s(),B=s(),g.push({x:I,y:B});break;case"l":for(;a<t.length&&!isNaN(parseFloat(t[a]));)a>=o&&(o=a+256,yield),I+=s(),B+=s(),g.push({x:I,y:B});break;case"H":for(;a<t.length&&!isNaN(parseFloat(t[a]));)a>=o&&(o=a+256,yield),I=s(),g.push({x:I,y:B});break;case"h":for(;a<t.length&&!isNaN(parseFloat(t[a]));)a>=o&&(o=a+256,yield),I+=s(),g.push({x:I,y:B});break;case"V":for(;a<t.length&&!isNaN(parseFloat(t[a]));)a>=o&&(o=a+256,yield),B=s(),g.push({x:I,y:B});break;case"v":for(;a<t.length&&!isNaN(parseFloat(t[a]));)a>=o&&(o=a+256,yield),B+=s(),g.push({x:I,y:B});break;case"C":{for(;a<t.length&&!isNaN(parseFloat(t[a]));){a>=o&&(o=a+256,yield);const r=s(),c=s(),h=s(),l=s(),w=s(),D=s();CB(g,I,B,r,c,h,l,w,D),e=h,i=l,I=w,B=D}break}case"c":{for(;a<t.length&&!isNaN(parseFloat(t[a]));){a>=o&&(o=a+256,yield);const r=I+s(),c=B+s(),h=I+s(),l=B+s(),w=I+s(),D=B+s();CB(g,I,B,r,c,h,l,w,D),e=h,i=l,I=w,B=D}break}case"S":{for(;a<t.length&&!isNaN(parseFloat(t[a]));){a>=o&&(o=a+256,yield);const r=2*I-e,c=2*B-i,h=s(),l=s(),w=s(),D=s();CB(g,I,B,r,c,h,l,w,D),e=h,i=l,I=w,B=D}break}case"s":{for(;a<t.length&&!isNaN(parseFloat(t[a]));){a>=o&&(o=a+256,yield);const r=2*I-e,c=2*B-i,h=I+s(),l=B+s(),w=I+s(),D=B+s();CB(g,I,B,r,c,h,l,w,D),e=h,i=l,I=w,B=D}break}case"Q":{for(;a<t.length&&!isNaN(parseFloat(t[a]));){a>=o&&(o=a+256,yield);const r=s(),c=s(),h=s(),l=s();WC(g,I,B,r,c,h,l),e=r,i=c,I=h,B=l}break}case"q":{for(;a<t.length&&!isNaN(parseFloat(t[a]));){a>=o&&(o=a+256,yield);const r=I+s(),c=B+s(),h=I+s(),l=B+s();WC(g,I,B,r,c,h,l),e=r,i=c,I=h,B=l}break}case"Z":case"z":I=Q,B=E,g.length>0&&(A.push(g),g=[]);break}return g.length>0&&A.push(g),A}function*Se(C){const A=[],g=/[A-Za-z]|[^A-Za-z,\s]+/g;let I;for(;I=g.exec(C);)A.push(I[0]),(A.length&255)===0&&(yield);return A}function CB(C,A,g,I,B,Q,E,e,i){for(let t=1;t<=NB;t++){const a=t/NB,o=1-a,s=o*o,n=a*a;C.push({x:s*o*A+3*s*a*I+3*o*n*Q+n*a*e,y:s*o*g+3*s*a*B+3*o*n*E+n*a*i})}}function WC(C,A,g,I,B,Q,E){for(let e=1;e<=NB;e++){const i=e/NB,t=1-i;C.push({x:t*t*A+2*t*i*I+i*i*Q,y:t*t*g+2*t*i*B+i*i*E})}}const nC=new WeakSet;function VC(C){if(nC.has(C))return null;const A=UB(C);let g=A.next();for(;!g.done;)g=A.next();return g.value}function*UB(C){if(nC.has(C))return null;const{vertices:A,indices:g}=C;if(!(A instanceof Float32Array))return"clip vertices must be Float32Array";if(!(g instanceof Uint32Array))return"clip indices must be Uint32Array integers";if(A.length<6||A.length%2!==0)return"clip vertices must contain at least three xy pairs";for(let B=0;B<A.length;B++)if((B&1023)===0&&(yield),!Number.isFinite(A[B]))return`clip vertex ${B} is not finite`;if(g.length<3||g.length%3!==0)return"clip indices must contain complete triangles";const I=A.length/2;for(let B=0;B<g.length;B+=3){(B&1023)===0&&(yield);const Q=g[B],E=g[B+1],e=g[B+2];if(!Number.isInteger(Q)||!Number.isInteger(E)||!Number.isInteger(e))return`clip triangle ${B/3} contains a non-integer index`;if(Q>=I||E>=I||e>=I)return`clip triangle ${B/3} references an out-of-range vertex`;if(Q===E||E===e||Q===e)return`clip triangle ${B/3} is degenerate`;const i=A[Q*2],t=A[Q*2+1],a=A[E*2],o=A[E*2+1],s=A[e*2],n=A[e*2+1],r=(a-i)*(n-t)-(o-t)*(s-i);if(!Number.isFinite(r)||Math.abs(r)<=Number.EPSILON)return`clip triangle ${B/3} has zero area`}return nC.add(C),null}function Me(C,A){const g=[],I=C.length/2;for(let B=0;B+2<A.length;B+=3){const Q=A[B],E=A[B+1],e=A[B+2];if(Q>=I||E>=I||e>=I){g.push(Q,E,e);continue}if(Q===E||E===e||Q===e)continue;const i=C[Q*2],t=C[Q*2+1],a=C[E*2],o=C[E*2+1],s=C[e*2],n=C[e*2+1],r=(a-i)*(n-t)-(o-t)*(s-i);(!Number.isFinite(r)||Math.abs(r)>Number.EPSILON)&&g.push(Q,E,e)}return g.length===A.length?A:new Uint32Array(g)}function*Ne(C){var A;if(C.length===0)return"invalid";let g=0;for(const I of C)for(const B of I)if((g++&127)===0&&(yield),!Number.isFinite(B.x)||!Number.isFinite(B.y))return"invalid";for(const I of C){if(I.length===0)continue;let B=1;for(const s of I)(g++&127)===0&&(yield),B=Math.max(B,Math.abs(s.x),Math.abs(s.y));const Q=B*1e-7,E=Q*Q,e=[];for(const s of I){(g++&127)===0&&(yield);const n=e[e.length-1];if(n){const r=s.x-n.x,c=s.y-n.y;if(r*r+c*c<=E)continue}e.push(s)}if(e.length>1){const s=e[0],n=e[e.length-1],r=s.x-n.x,c=s.y-n.y;r*r+c*c<=E&&e.pop()}const i=new Map;let t=null,a=null,o=0;for(const s of e){(g++&127)===0&&(yield);const n=Math.floor(s.x/Q),r=Math.floor(s.y/Q);let c=!1;for(let w=n-1;w<=n+1&&!c;w++)for(let D=r-1;D<=r+1&&!c;D++){const y=i.get(`${w},${D}`);c=(A=y==null?void 0:y.some(R=>{const F=s.x-R.x,d=s.y-R.y;return F*F+d*d<=E}))!=null?A:!1}if(c)continue;const h=`${n},${r}`,l=i.get(h);if(l?l.push(s):i.set(h,[s]),!t)t=s;else if(!a)a={x:s.x-t.x,y:s.y-t.y},o=Q*Math.max(1,Math.hypot(a.x,a.y));else if(Math.abs(a.x*(s.y-t.y)-a.y*(s.x-t.x))>o)return"fillable"}}return"empty"}function ZC(C,A){if(C.length===0)return null;const g=[],I=[],B=[];for(const t of C)if(!(t.length<3)){B.push(t);for(const a of t)g.push(a.x,a.y),I.push(a.x,a.y)}if(g.length===0)return null;const Q=[];let E=0;for(const t of B){const a=[];for(const s of t)a.push(s.x,s.y);const o=se(a,void 0,2);for(const s of o)Q.push(s+E);E+=t.length}if(Q.length===0)return null;const e=new Float32Array(g),i=Me(e,new Uint32Array(Q));return i.length===0?null:{vertices:e,indices:i}}var Ue=Object.defineProperty,ke=(C,A,g)=>A in C?Ue(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,Og=(C,A,g)=>ke(C,typeof A!="symbol"?A+"":A,g);function Ye(C){if(C.length!==1||C[0].length!==4)return null;const A=C[0],g=A.map(n=>n.x),I=A.map(n=>n.y),B=Math.min(...g),Q=Math.min(...I),E=Math.max(...g),e=Math.max(...I);if(!(E>B&&e>Q))return null;const i=Math.max(E-B,e-Q)*1e-4+1e-6;let t=0;const a=[];for(const n of A){const r=Math.abs(n.x-B)<=i,c=Math.abs(n.x-E)<=i,h=Math.abs(n.y-Q)<=i,l=Math.abs(n.y-e)<=i;if(!r&&!c||!h&&!l)return null;const w=(r?0:1)|(h?0:2);if(a.includes(w))return null;a.push(w),t|=1<<w}if(t!==15)return null;let o=0;for(let n=0;n<A.length;n++){const r=A[n],c=A[(n+1)%A.length],h=Math.abs(c.x-r.x),l=Math.abs(c.y-r.y);if(!(h<=i&&l>i||l<=i&&h>i))return null;o+=r.x*c.y-c.x*r.y}const s=2*(E-B)*(e-Q);return Math.abs(Math.abs(o)-s)>i*s?null:{x0:B,y0:Q,x1:E,y1:e}}function*gE(C,A=!1){return{kind:A?"empty":yield*Ne(C),localRect:Ye(C)}}class IE{constructor(){Og(this,"paths",new Map),Og(this,"tables",new WeakMap),Og(this,"resourcePaths",new WeakMap),Og(this,"pathUsers",new Map),Og(this,"released",new WeakSet),Og(this,"hits",0),Og(this,"trackHits",!1)}retain(A,g){var I;if(this.released.has(A))throw new DOMException("SVGA clip resource released","AbortError");let B=this.resourcePaths.get(A);B||(B=new Set,this.resourcePaths.set(A,B)),B.has(g)||(B.add(g),this.pathUsers.set(g,((I=this.pathUsers.get(g))!=null?I:0)+1))}release(A){var g,I;this.released.add(A);const B=[];for(const Q of(g=this.resourcePaths.get(A))!=null?g:[]){const E=((I=this.pathUsers.get(Q))!=null?I:1)-1;E>0?this.pathUsers.set(Q,E):(this.pathUsers.delete(Q),this.paths.delete(Q),B.push(Q))}return this.resourcePaths.delete(A),this.tables.delete(A),B}get(A){const g=this.paths.get(A);return g&&this.trackHits&&this.hits++,g}set(A,g){this.paths.set(A,g)}getByIndex(A,g){var I;const B=(I=A.clipPaths[g])!=null?I:"";this.retain(A,B);let Q=this.tables.get(A);Q||(Q=[],this.tables.set(A,Q));const E=Q[g];if((E==null?void 0:E.path)===B)return this.trackHits&&this.hits++,E.value;const e=this.get(B);return e&&(Q[g]={path:B,value:e}),e}*analyze(A,g){var I;const B=this.getByIndex(A,g);if(B)return B;const Q=(I=A.clipPaths[g])!=null?I:"",E=yield*UC(Q),e=yield*gE(E,!Q.trim());return this.set(Q,e),e}clear(){this.paths.clear(),this.tables=new WeakMap,this.resourcePaths=new WeakMap,this.pathUsers.clear()}}const XC=new WeakMap;function pe(C){let A=XC.get(C);return A||(A=new IE,XC.set(C,A)),A}var Ke=Object.defineProperty,me=(C,A,g)=>A in C?Ke(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,OC=(C,A,g)=>me(C,typeof A!="symbol"?A+"":A,g);const QB=1024;class PC{constructor(){OC(this,"blocks",[]),OC(this,"length",0)}push(A,g,I,B,Q,E=!1){const e=this.length%QB;e||this.blocks.push(new Int32Array(QB*6));const i=this.blocks[this.blocks.length-1],t=e*6;i[t]=A,i[t+1]=g,i[t+2]=I,i[t+3]=B,i[t+4]=Q,i[t+5]=+E,this.length++}get(A,g){return this.blocks[Math.floor(A/QB)][A%QB*6+g]}}const jC=new DataView(new ArrayBuffer(8));function Je(C,A){jC.setFloat64(0,A===0?0:A,!0);for(let g=0;g<8;g++)C=Math.imul(C^jC.getUint8(g),16777619);return C>>>0}function*BE(C,A=Je){var g,I,B,Q,E;const{frameCount:e,spriteCount:i}=C,t=new PC,a=new Uint32Array(e+1);for(let f=0;f<e;f++){a[f]=t.length;for(let u=0;u<i;u++){yield;const G=u*e+f;if(((g=C.frameData[G*9+8])!=null?g:0)<.05)continue;const S=(I=C.shapesIndex[G])!=null?I:-1,M=S>=0&&!!C.shapePresence[S],N=(B=C.clipPathIndex[G])!=null?B:-1,U=N<0?0:(Q=C.clipKinds[N])!=null?Q:0;if(U===1)continue;const p=u*7,k=C.atlas[p+2],m=!!C.atlas[p+1];if(!M&&!m)continue;const H=!M&&m&&!!U&&!!C.clipRects[N*5];U&&!H&&t.push(2,u,S,N,k),M&&t.push(1,u,S,N,k),m&&t.push(U&&!H?3:0,u,S,N,k,H),U&&!H&&t.push(4,u,S,N,k)}}a[e]=t.length;const o=new Uint32Array(e),s=new Map;let n=1;for(let f=0;f<e;f++){const u=a[f],G=a[f+1];let S=2166136261;for(let U=u;U<G;U++){yield;for(let p=0;p<6;p++)S=A(S,t.get(U,p));if(t.get(U,5))for(let p=1;p<5;p++)S=A(S,C.clipRects[t.get(U,3)*5+p])}let M=0;const N=(E=s.get(S))!=null?E:[];for(const U of N){const p=a[U];if(a[U+1]-p!==G-u)continue;let k=!0;for(let m=u;m<G&&k;m++){yield;const H=p+m-u;for(let v=0;v<6;v++)if(t.get(m,v)!==t.get(H,v)){k=!1;break}if(k&&t.get(m,5)){for(let v=1;v<5;v++)if(C.clipRects[t.get(m,3)*5+v]!==C.clipRects[t.get(H,3)*5+v]){k=!1;break}}}if(k){M=o[U];break}}M||(M=n++,N.push(f),s.set(S,N)),o[f]=M,yield}const r=new Uint8Array(t.length),c=new Uint32Array(t.length),h=new Int32Array(t.length*3),l=new Float32Array(t.length*12);for(let f=0;f<t.length;f++){yield,r[f]=t.get(f,0);const u=t.get(f,1);c[f]=u;for(let M=0;M<3;M++)h[f*3+M]=t.get(f,M+2);const G=u*7,S=f*12;if(l[S+4]=u,l[S+5]=t.get(f,4),C.atlas[G])for(let M=0;M<4;M++)l[S+M]=C.atlas[G+M+3];else l[S+6]=1;if(t.get(f,5)){l[S+6]|=2;for(let M=0;M<4;M++)l[S+M+8]=C.clipRects[t.get(f,3)*5+M+1]}}const w=new Uint32Array(e+1),D=new PC;for(let f=0;f<e;f++){yield,w[f]=D.length;const u=a[f+1];for(let G=a[f];G<u;){yield;const S=r[G];let M=1;if(S===0)for(;G+M<u&&r[G+M]===0&&h[(G+M)*3+2]===h[G*3+2];)M++,yield;D.push(S,G,M,0,0),G+=M}}w[e]=D.length;const y=new Uint32Array(D.length),R=new Uint32Array(D.length),F=new Uint8Array(D.length);for(let f=0;f<D.length;f++)yield,F[f]=D.get(f,0),y[f]=D.get(f,1),R[f]=D.get(f,2);const d={frameOffsets:a,frameScheduleIds:o,operations:r,spriteIndices:c,meshReferences:h,spriteMetadata:l,runFrameOffsets:w,runOperationStarts:y,runOperationCounts:R,runTypes:F};return{...d,byteLength:Object.values(d).reduce((f,u)=>f+u.byteLength,0)}}function*Le(C){if(C.length%9)throw new RangeError("Invalid SVGA frame row length");const A=new Float32Array(C.length/9*12);for(let g=0;g<C.length/9;g++){(g&127)===0&&(yield);for(let I=0;I<9;I++)A[g*12+I]=C[g*9+I]}return A}function QA(C="Operation aborted"){const A=new Error(C);return A.name="AbortError",A}function mg(C){return C instanceof Error?C.name==="AbortError"?!0:"cause"in C&&mg(C.cause):!1}function L(C,A){if(C!=null&&C.aborted)throw QA(A)}var He=Object.defineProperty,xe=(C,A,g)=>A in C?He(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,EB=(C,A,g)=>xe(C,typeof A!="symbol"?A+"":A,g);const CE=1e3/60,be=2,qe=12,ve=.25;function wB(){return typeof performance!="undefined"?performance.now():Date.now()}function Te(){return new Promise(C=>{if(typeof requestAnimationFrame=="function"){requestAnimationFrame(()=>C());return}setTimeout(C,0)}).then(wB)}function We(C,A={}){var g,I,B;const Q=Math.max(.1,(g=A.minBudgetMs)!=null?g:be),E=Math.max(Q,(I=A.maxBudgetMs)!=null?I:qe),e=Math.max(.05,Math.min(.95,(B=A.frameFraction)!=null?B:.5)),i=Number.isFinite(C)&&C>0?C:CE;return Math.max(Q,Math.min(E,i*e))}function Ve(C,A){return!Number.isFinite(A)||A<4||A>100?C:C+(A-C)*ve}class Ze{constructor(){EB(this,"frameIntervalMs",CE),EB(this,"lastFrameAt",-1),EB(this,"sliceStartedAt",wB()),EB(this,"nextFramePromise",null)}budgetMs(A={}){return We(this.frameIntervalMs,A)}shouldYield(A={}){return wB()-this.sliceStartedAt>=this.budgetMs(A)}async yield(){this.nextFramePromise||(this.nextFramePromise=Te().then(A=>{this.lastFrameAt>=0&&(this.frameIntervalMs=Ve(this.frameIntervalMs,A-this.lastFrameAt)),this.lastFrameAt=A,this.sliceStartedAt=wB()}).finally(()=>{this.nextFramePromise=null})),await this.nextFramePromise}}const TB=new Ze;function OA(C={}){return{get budgetMs(){return TB.budgetMs(C)},shouldYield(){return TB.shouldYield(C)},yield(){return TB.yield()}}}var Xe=Object.defineProperty,Oe=(C,A,g)=>A in C?Xe(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,eB=(C,A,g)=>Oe(C,typeof A!="symbol"?A+"":A,g);class Pe{constructor(A){this.resourceId=A,eB(this,"started",performance.now()),eB(this,"phases",{}),eB(this,"executor","main-thread"),eB(this,"fallbackReason")}phase(A){var g,I;return(I=(g=this.phases)[A])!=null?I:g[A]={executionMs:0,mainThreadExecutionMs:0,workerExecutionMs:0,elapsedMs:0,maxSliceMs:0,slices:0,cacheHits:0,bytes:0}}record(A,g,I="main"){const B=this.phase(A);B.executionMs+=g,B[I==="main"?"mainThreadExecutionMs":"workerExecutionMs"]+=g,B.maxSliceMs=Math.max(B.maxSliceMs,g),B.slices++}measure(A,g){const I=performance.now();try{return g()}finally{const B=performance.now()-I;this.record(A,B),this.phase(A).elapsedMs+=B}}finish(A){return{resourceId:this.resourceId,executor:this.executor,fallbackReason:this.fallbackReason,status:A,elapsedMs:performance.now()-this.started,phases:this.phases}}}async function Ig(C,A={},g="command-build"){var I,B;const Q=OA({maxBudgetMs:A.frameBudgetMs}),E=A.profile?performance.now():0;let e=A.profile?performance.now():0,i=!0;try{for(;;){if(L(A.signal),(I=A.checkActive)==null||I.call(A),Q.shouldYield()){A.profile&&A.profile.record(g,performance.now()-e),i=!1;const a=Q.yield();if(A.signal){const o=A.signal;await new Promise((s,n)=>{const r=()=>{c(),n(QA("SVGA preparation canceled"))},c=()=>o.removeEventListener("abort",r);if(o.aborted){r();return}o.addEventListener("abort",r,{once:!0}),a.then(()=>{c(),s()},h=>{c(),n(h)})})}else await a;(B=A.checkActive)==null||B.call(A),e=A.profile?performance.now():0,i=!0}const t=C.next();if(t.done)return t.value}}finally{A.profile&&(i&&A.profile.record(g,performance.now()-e),A.profile.phase(g).elapsedMs+=performance.now()-E),C.return(void 0)}}const rC=0,yB=1,jg=2,cC=3,FB=4;function*QE(C,A={}){var g,I,B,Q,E,e,i,t;const a=C.spriteTable,o=(g=A.clipAnalysis)!=null?g:pe(a);A.profile&&(o.trackHits=!0);const s=new Uint8Array(a.clipPaths.length),n=new Float64Array(a.clipPaths.length*5);for(let l=0;l<a.spriteCount*a.frameCount;l++){(l&127)===0&&(yield);const w=(I=a.clipPathIndex[l])!=null?I:-1;if(w<0||s[w]||!a.clipPaths[w]||((B=a.frameData[l*9+8])!=null?B:0)<.05)continue;const D=yield*o.analyze(a,w);s[w]=D.kind==="empty"?1:D.kind==="fillable"?2:3;const y=D.localRect;if(y){const R=w*5;n[R]=1,n[R+1]=y.x0,n[R+2]=y.y0,n[R+3]=y.x1,n[R+4]=y.y1}}const r=new Uint8Array(a.shapesTable.length);for(let l=0;l<r.length;l++)(l&127)===0&&(yield),r[l]=+!!((Q=a.shapesTable[l])!=null&&Q.length);const c=(E=C.atlasTextureHandles)!=null&&E.length?C.atlasTextureHandles:C.atlasTextureHandle?[C.atlasTextureHandle]:[],h=new Float64Array(a.spriteCount*7);for(let l=0;l<a.spriteCount;l++){(l&127)===0&&(yield);const w=C.atlasRects.get((e=a.imageKeys[l])!=null?e:""),D=l*7;w&&(h[D]=1,h[D+1]=+!!c[(i=w.textureIndex)!=null?i:0],h[D+2]=(t=w.textureIndex)!=null?t:0,h[D+3]=w.x,h[D+4]=w.y,h[D+5]=w.x+w.w,h[D+6]=w.y+w.h)}return{frameCount:a.frameCount,spriteCount:a.spriteCount,frameData:a.frameData,shapesIndex:a.shapesIndex,clipPathIndex:a.clipPathIndex,shapePresence:r,clipKinds:s,clipRects:n,atlas:h}}function*EE(C,A){return yield*BE(yield*QE(C,A))}function je(C){const A=EE(C,{});let g=A.next();for(;!g.done;)g=A.next();return g.value}function ze(C,A={}){return Ig(EE(C,A),A)}const eE=`var L = Object.defineProperty, q = (n, o, a) => o in n ? L(n, o, { enumerable: !0, configurable: !0, writable: !0, value: a }) : n[o] = a, T = (n, o, a) => q(n, typeof o != "symbol" ? o + "" : o, a);
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});var cI=typeof document!="undefined"?document.currentScript:null;function se(C,A,g=2){const I=C.length;let B=ne(C,0,I,g,!0);const Q=[];if(!B||B.next===B.prev)return Q;let E,e,i;if(C.length>80*g){E=C[0],e=C[1];let t=E,a=e;for(let o=g;o<I;o+=g){const s=C[o],n=C[o+1];s<E&&(E=s),n<e&&(e=n),s>t&&(t=s),n>a&&(a=n)}i=Math.max(t-E,a-e),i=i!==0?32767/i:0}return WI(B,Q,g,E,e,i,0),Q}function ne(C,A,g,I,B){let Q;if(B===Re(C,A,g,I)>0)for(let E=A;E<g;E+=I)Q=TC(E/I|0,C[E],C[E+1],Q);else for(let E=g-I;E>=A;E-=I)Q=TC(E/I|0,C[E],C[E+1],Q);return Q&&HB(Q,Q.next)&&(VI(Q),Q=Q.next),Q}function TI(C,A){if(!C)return C;A||(A=C);let g=C,I;do if(I=!1,!g.steiner&&(HB(g,g.next)||yA(g.prev,g,g.next)===0)){if(VI(g),g=A=g.prev,g===g.next)break;I=!0}else g=g.next;while(I||g!==A);return A}function WI(C,A,g,I,B,Q,E){if(!C)return;!E&&Q&&De(C,I,B,Q);let e=C;for(;C.prev!==C.next;){const i=C.prev,t=C.next;if(Q?ce(C,I,B,Q):re(C)){A.push(i.i,C.i,t.i),VI(C),C=t.next,e=t.next;continue}if(C=t,C===e){E?E===1?(C=he(TI(C),A),WI(C,A,g,I,B,Q,2)):E===2&&le(C,A,g,I,B,Q):WI(TI(C),A,g,I,B,Q,1);break}}}function re(C){const A=C.prev,g=C,I=C.next;if(yA(A,g,I)>=0)return!1;const B=A.x,Q=g.x,E=I.x,e=A.y,i=g.y,t=I.y,a=Math.min(B,Q,E),o=Math.min(e,i,t),s=Math.max(B,Q,E),n=Math.max(e,i,t);let r=I.next;for(;r!==A;){if(r.x>=a&&r.x<=s&&r.y>=o&&r.y<=n&&MI(B,e,Q,i,E,t,r.x,r.y)&&yA(r.prev,r,r.next)>=0)return!1;r=r.next}return!0}function ce(C,A,g,I){const B=C.prev,Q=C,E=C.next;if(yA(B,Q,E)>=0)return!1;const e=B.x,i=Q.x,t=E.x,a=B.y,o=Q.y,s=E.y,n=Math.min(e,i,t),r=Math.min(a,o,s),c=Math.max(e,i,t),h=Math.max(a,o,s),l=oC(n,r,A,g,I),w=oC(c,h,A,g,I);let D=C.prevZ,y=C.nextZ;for(;D&&D.z>=l&&y&&y.z<=w;){if(D.x>=n&&D.x<=c&&D.y>=r&&D.y<=h&&D!==B&&D!==E&&MI(e,a,i,o,t,s,D.x,D.y)&&yA(D.prev,D,D.next)>=0||(D=D.prevZ,y.x>=n&&y.x<=c&&y.y>=r&&y.y<=h&&y!==B&&y!==E&&MI(e,a,i,o,t,s,y.x,y.y)&&yA(y.prev,y,y.next)>=0))return!1;y=y.nextZ}for(;D&&D.z>=l;){if(D.x>=n&&D.x<=c&&D.y>=r&&D.y<=h&&D!==B&&D!==E&&MI(e,a,i,o,t,s,D.x,D.y)&&yA(D.prev,D,D.next)>=0)return!1;D=D.prevZ}for(;y&&y.z<=w;){if(y.x>=n&&y.x<=c&&y.y>=r&&y.y<=h&&y!==B&&y!==E&&MI(e,a,i,o,t,s,y.x,y.y)&&yA(y.prev,y,y.next)>=0)return!1;y=y.nextZ}return!0}function he(C,A){let g=C;do{const I=g.prev,B=g.next.next;!HB(I,B)&&AE(I,g,g.next,B)&&MB(I,B)&&MB(B,I)&&(A.push(I.i,g.i,B.i),VI(g),VI(g.next),g=C=B),g=g.next}while(g!==C);return TI(g)}function le(C,A,g,I,B,Q){let E=C;do{let e=E.next.next;for(;e!==E.prev;){if(E.i!==e.i&&Fe(E,e)){let i=ue(E,e);E=TI(E,E.next),i=TI(i,i.next),WI(E,A,g,I,B,Q,0),WI(i,A,g,I,B,Q,0);return}e=e.next}E=E.next}while(E!==C)}function De(C,A,g,I){let B=C;do B.z===0&&(B.z=oC(B.x,B.y,A,g,I)),B.prevZ=B.prev,B.nextZ=B.next,B=B.next;while(B!==C);B.prevZ.nextZ=null,B.prevZ=null,we(B)}function we(C){let A,g=1;do{let I=C,B;C=null;let Q=null;for(A=0;I;){A++;let E=I,e=0;for(let t=0;t<g&&(e++,E=E.nextZ,!!E);t++);let i=g;for(;e>0||i>0&&E;)e!==0&&(i===0||!E||I.z<=E.z)?(B=I,I=I.nextZ,e--):(B=E,E=E.nextZ,i--),Q?Q.nextZ=B:C=B,B.prevZ=Q,Q=B;I=E}Q.nextZ=null,g*=2}while(A>1);return C}function oC(C,A,g,I,B){return C=(C-g)*B|0,A=(A-I)*B|0,C=(C|C<<8)&16711935,C=(C|C<<4)&252645135,C=(C|C<<2)&858993459,C=(C|C<<1)&1431655765,A=(A|A<<8)&16711935,A=(A|A<<4)&252645135,A=(A|A<<2)&858993459,A=(A|A<<1)&1431655765,C|A<<1}function ye(C,A,g,I,B,Q,E,e){return(B-E)*(A-e)>=(C-E)*(Q-e)&&(C-E)*(I-e)>=(g-E)*(A-e)&&(g-E)*(Q-e)>=(B-E)*(I-e)}function MI(C,A,g,I,B,Q,E,e){return!(C===E&&A===e)&&ye(C,A,g,I,B,Q,E,e)}function Fe(C,A){return C.next.i!==A.i&&C.prev.i!==A.i&&!de(C,A)&&(MB(C,A)&&MB(A,C)&&Ge(C,A)&&(yA(C.prev,C,A.prev)||yA(C,A.prev,A))||HB(C,A)&&yA(C.prev,C,C.next)>0&&yA(A.prev,A,A.next)>0)}function yA(C,A,g){return(A.y-C.y)*(g.x-A.x)-(A.x-C.x)*(g.y-A.y)}function HB(C,A){return C.x===A.x&&C.y===A.y}function AE(C,A,g,I){const B=BB(yA(C,A,g)),Q=BB(yA(C,A,I)),E=BB(yA(g,I,C)),e=BB(yA(g,I,A));return!!(B!==Q&&E!==e||B===0&&IB(C,g,A)||Q===0&&IB(C,I,A)||E===0&&IB(g,C,I)||e===0&&IB(g,A,I))}function IB(C,A,g){return A.x<=Math.max(C.x,g.x)&&A.x>=Math.min(C.x,g.x)&&A.y<=Math.max(C.y,g.y)&&A.y>=Math.min(C.y,g.y)}function BB(C){return C>0?1:C<0?-1:0}function de(C,A){let g=C;do{if(g.i!==C.i&&g.next.i!==C.i&&g.i!==A.i&&g.next.i!==A.i&&AE(g,g.next,C,A))return!0;g=g.next}while(g!==C);return!1}function MB(C,A){return yA(C.prev,C,C.next)<0?yA(C,A,C.next)>=0&&yA(C,C.prev,A)>=0:yA(C,A,C.prev)<0||yA(C,C.next,A)<0}function Ge(C,A){let g=C,I=!1;const B=(C.x+A.x)/2,Q=(C.y+A.y)/2;do g.y>Q!=g.next.y>Q&&g.next.y!==g.y&&B<(g.next.x-g.x)*(Q-g.y)/(g.next.y-g.y)+g.x&&(I=!I),g=g.next;while(g!==C);return I}function ue(C,A){const g=sC(C.i,C.x,C.y),I=sC(A.i,A.x,A.y),B=C.next,Q=A.prev;return C.next=A,A.prev=C,g.next=B,B.prev=g,I.next=g,g.prev=I,Q.next=I,I.prev=Q,I}function TC(C,A,g,I){const B=sC(C,A,g);return I?(B.next=I.next,B.prev=I,I.next.prev=B,I.next=B):(B.prev=B,B.next=B),B}function VI(C){C.next.prev=C.prev,C.prev.next=C.next,C.prevZ&&(C.prevZ.nextZ=C.nextZ),C.nextZ&&(C.nextZ.prevZ=C.prevZ)}function sC(C,A,g){return{i:C,x:A,y:g,prev:null,next:null,z:0,prevZ:null,nextZ:null,steiner:!1}}function Re(C,A,g,I){let B=0;for(let Q=A,E=g-I;Q<g;Q+=I)B+=(C[E]-C[Q])*(C[Q+1]+C[E+1]),E=Q;return B}const NB=8;function fe(C){const A=UC(C);let g=A.next();for(;!g.done;)g=A.next();return g.value}function*UC(C){if(!C||C.trim().length===0)return[];const A=[];let g=[],I=0,B=0,Q=0,E=0,e=0,i=0;const t=yield*Se(C);let a=0,o=0;function s(){return a<t.length?parseFloat(t[a++]):0}for(;a<t.length;)switch(a>=o&&(o=a+256,yield),t[a++]){case"M":for(g.length>0&&(A.push(g),g=[]),I=s(),B=s(),Q=I,E=B,g.push({x:I,y:B});a<t.length&&!isNaN(parseFloat(t[a]));)a>=o&&(o=a+256,yield),I=s(),B=s(),g.push({x:I,y:B});break;case"m":for(g.length>0&&(A.push(g),g=[]),I+=s(),B+=s(),Q=I,E=B,g.push({x:I,y:B});a<t.length&&!isNaN(parseFloat(t[a]));)a>=o&&(o=a+256,yield),I+=s(),B+=s(),g.push({x:I,y:B});break;case"L":for(;a<t.length&&!isNaN(parseFloat(t[a]));)a>=o&&(o=a+256,yield),I=s(),B=s(),g.push({x:I,y:B});break;case"l":for(;a<t.length&&!isNaN(parseFloat(t[a]));)a>=o&&(o=a+256,yield),I+=s(),B+=s(),g.push({x:I,y:B});break;case"H":for(;a<t.length&&!isNaN(parseFloat(t[a]));)a>=o&&(o=a+256,yield),I=s(),g.push({x:I,y:B});break;case"h":for(;a<t.length&&!isNaN(parseFloat(t[a]));)a>=o&&(o=a+256,yield),I+=s(),g.push({x:I,y:B});break;case"V":for(;a<t.length&&!isNaN(parseFloat(t[a]));)a>=o&&(o=a+256,yield),B=s(),g.push({x:I,y:B});break;case"v":for(;a<t.length&&!isNaN(parseFloat(t[a]));)a>=o&&(o=a+256,yield),B+=s(),g.push({x:I,y:B});break;case"C":{for(;a<t.length&&!isNaN(parseFloat(t[a]));){a>=o&&(o=a+256,yield);const r=s(),c=s(),h=s(),l=s(),w=s(),D=s();CB(g,I,B,r,c,h,l,w,D),e=h,i=l,I=w,B=D}break}case"c":{for(;a<t.length&&!isNaN(parseFloat(t[a]));){a>=o&&(o=a+256,yield);const r=I+s(),c=B+s(),h=I+s(),l=B+s(),w=I+s(),D=B+s();CB(g,I,B,r,c,h,l,w,D),e=h,i=l,I=w,B=D}break}case"S":{for(;a<t.length&&!isNaN(parseFloat(t[a]));){a>=o&&(o=a+256,yield);const r=2*I-e,c=2*B-i,h=s(),l=s(),w=s(),D=s();CB(g,I,B,r,c,h,l,w,D),e=h,i=l,I=w,B=D}break}case"s":{for(;a<t.length&&!isNaN(parseFloat(t[a]));){a>=o&&(o=a+256,yield);const r=2*I-e,c=2*B-i,h=I+s(),l=B+s(),w=I+s(),D=B+s();CB(g,I,B,r,c,h,l,w,D),e=h,i=l,I=w,B=D}break}case"Q":{for(;a<t.length&&!isNaN(parseFloat(t[a]));){a>=o&&(o=a+256,yield);const r=s(),c=s(),h=s(),l=s();WC(g,I,B,r,c,h,l),e=r,i=c,I=h,B=l}break}case"q":{for(;a<t.length&&!isNaN(parseFloat(t[a]));){a>=o&&(o=a+256,yield);const r=I+s(),c=B+s(),h=I+s(),l=B+s();WC(g,I,B,r,c,h,l),e=r,i=c,I=h,B=l}break}case"Z":case"z":I=Q,B=E,g.length>0&&(A.push(g),g=[]);break}return g.length>0&&A.push(g),A}function*Se(C){const A=[],g=/[A-Za-z]|[^A-Za-z,\s]+/g;let I;for(;I=g.exec(C);)A.push(I[0]),(A.length&255)===0&&(yield);return A}function CB(C,A,g,I,B,Q,E,e,i){for(let t=1;t<=NB;t++){const a=t/NB,o=1-a,s=o*o,n=a*a;C.push({x:s*o*A+3*s*a*I+3*o*n*Q+n*a*e,y:s*o*g+3*s*a*B+3*o*n*E+n*a*i})}}function WC(C,A,g,I,B,Q,E){for(let e=1;e<=NB;e++){const i=e/NB,t=1-i;C.push({x:t*t*A+2*t*i*I+i*i*Q,y:t*t*g+2*t*i*B+i*i*E})}}const nC=new WeakSet;function VC(C){if(nC.has(C))return null;const A=UB(C);let g=A.next();for(;!g.done;)g=A.next();return g.value}function*UB(C){if(nC.has(C))return null;const{vertices:A,indices:g}=C;if(!(A instanceof Float32Array))return"clip vertices must be Float32Array";if(!(g instanceof Uint32Array))return"clip indices must be Uint32Array integers";if(A.length<6||A.length%2!==0)return"clip vertices must contain at least three xy pairs";for(let B=0;B<A.length;B++)if((B&1023)===0&&(yield),!Number.isFinite(A[B]))return`clip vertex ${B} is not finite`;if(g.length<3||g.length%3!==0)return"clip indices must contain complete triangles";const I=A.length/2;for(let B=0;B<g.length;B+=3){(B&1023)===0&&(yield);const Q=g[B],E=g[B+1],e=g[B+2];if(!Number.isInteger(Q)||!Number.isInteger(E)||!Number.isInteger(e))return`clip triangle ${B/3} contains a non-integer index`;if(Q>=I||E>=I||e>=I)return`clip triangle ${B/3} references an out-of-range vertex`;if(Q===E||E===e||Q===e)return`clip triangle ${B/3} is degenerate`;const i=A[Q*2],t=A[Q*2+1],a=A[E*2],o=A[E*2+1],s=A[e*2],n=A[e*2+1],r=(a-i)*(n-t)-(o-t)*(s-i);if(!Number.isFinite(r)||Math.abs(r)<=Number.EPSILON)return`clip triangle ${B/3} has zero area`}return nC.add(C),null}function Me(C,A){const g=[],I=C.length/2;for(let B=0;B+2<A.length;B+=3){const Q=A[B],E=A[B+1],e=A[B+2];if(Q>=I||E>=I||e>=I){g.push(Q,E,e);continue}if(Q===E||E===e||Q===e)continue;const i=C[Q*2],t=C[Q*2+1],a=C[E*2],o=C[E*2+1],s=C[e*2],n=C[e*2+1],r=(a-i)*(n-t)-(o-t)*(s-i);(!Number.isFinite(r)||Math.abs(r)>Number.EPSILON)&&g.push(Q,E,e)}return g.length===A.length?A:new Uint32Array(g)}function*Ne(C){var A;if(C.length===0)return"invalid";let g=0;for(const I of C)for(const B of I)if((g++&127)===0&&(yield),!Number.isFinite(B.x)||!Number.isFinite(B.y))return"invalid";for(const I of C){if(I.length===0)continue;let B=1;for(const s of I)(g++&127)===0&&(yield),B=Math.max(B,Math.abs(s.x),Math.abs(s.y));const Q=B*1e-7,E=Q*Q,e=[];for(const s of I){(g++&127)===0&&(yield);const n=e[e.length-1];if(n){const r=s.x-n.x,c=s.y-n.y;if(r*r+c*c<=E)continue}e.push(s)}if(e.length>1){const s=e[0],n=e[e.length-1],r=s.x-n.x,c=s.y-n.y;r*r+c*c<=E&&e.pop()}const i=new Map;let t=null,a=null,o=0;for(const s of e){(g++&127)===0&&(yield);const n=Math.floor(s.x/Q),r=Math.floor(s.y/Q);let c=!1;for(let w=n-1;w<=n+1&&!c;w++)for(let D=r-1;D<=r+1&&!c;D++){const y=i.get(`${w},${D}`);c=(A=y==null?void 0:y.some(R=>{const F=s.x-R.x,d=s.y-R.y;return F*F+d*d<=E}))!=null?A:!1}if(c)continue;const h=`${n},${r}`,l=i.get(h);if(l?l.push(s):i.set(h,[s]),!t)t=s;else if(!a)a={x:s.x-t.x,y:s.y-t.y},o=Q*Math.max(1,Math.hypot(a.x,a.y));else if(Math.abs(a.x*(s.y-t.y)-a.y*(s.x-t.x))>o)return"fillable"}}return"empty"}function ZC(C,A){if(C.length===0)return null;const g=[],I=[],B=[];for(const t of C)if(!(t.length<3)){B.push(t);for(const a of t)g.push(a.x,a.y),I.push(a.x,a.y)}if(g.length===0)return null;const Q=[];let E=0;for(const t of B){const a=[];for(const s of t)a.push(s.x,s.y);const o=se(a,void 0,2);for(const s of o)Q.push(s+E);E+=t.length}if(Q.length===0)return null;const e=new Float32Array(g),i=Me(e,new Uint32Array(Q));return i.length===0?null:{vertices:e,indices:i}}var Ue=Object.defineProperty,ke=(C,A,g)=>A in C?Ue(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,eI=(C,A,g)=>ke(C,typeof A!="symbol"?A+"":A,g);function Ye(C){if(C.length!==1||C[0].length!==4)return null;const A=C[0],g=A.map(n=>n.x),I=A.map(n=>n.y),B=Math.min(...g),Q=Math.min(...I),E=Math.max(...g),e=Math.max(...I);if(!(E>B&&e>Q))return null;const i=Math.max(E-B,e-Q)*1e-4+1e-6;let t=0;const a=[];for(const n of A){const r=Math.abs(n.x-B)<=i,c=Math.abs(n.x-E)<=i,h=Math.abs(n.y-Q)<=i,l=Math.abs(n.y-e)<=i;if(!r&&!c||!h&&!l)return null;const w=(r?0:1)|(h?0:2);if(a.includes(w))return null;a.push(w),t|=1<<w}if(t!==15)return null;let o=0;for(let n=0;n<A.length;n++){const r=A[n],c=A[(n+1)%A.length],h=Math.abs(c.x-r.x),l=Math.abs(c.y-r.y);if(!(h<=i&&l>i||l<=i&&h>i))return null;o+=r.x*c.y-c.x*r.y}const s=2*(E-B)*(e-Q);return Math.abs(Math.abs(o)-s)>i*s?null:{x0:B,y0:Q,x1:E,y1:e}}function*gE(C,A=!1){return{kind:A?"empty":yield*Ne(C),localRect:Ye(C)}}class IE{constructor(){eI(this,"paths",new Map),eI(this,"tables",new WeakMap),eI(this,"resourcePaths",new WeakMap),eI(this,"pathUsers",new Map),eI(this,"hits",0),eI(this,"trackHits",!1)}retain(A,g){var I;let B=this.resourcePaths.get(A);B||(B=new Set,this.resourcePaths.set(A,B)),B.has(g)||(B.add(g),this.pathUsers.set(g,((I=this.pathUsers.get(g))!=null?I:0)+1))}release(A){var g,I;const B=[];for(const Q of(g=this.resourcePaths.get(A))!=null?g:[]){const E=((I=this.pathUsers.get(Q))!=null?I:1)-1;E>0?this.pathUsers.set(Q,E):(this.pathUsers.delete(Q),this.paths.delete(Q),B.push(Q))}return this.resourcePaths.delete(A),this.tables.delete(A),B}get(A){const g=this.paths.get(A);return g&&this.trackHits&&this.hits++,g}set(A,g){this.paths.set(A,g)}getByIndex(A,g){var I;const B=(I=A.clipPaths[g])!=null?I:"";this.retain(A,B);let Q=this.tables.get(A);Q||(Q=[],this.tables.set(A,Q));const E=Q[g];if((E==null?void 0:E.path)===B)return this.trackHits&&this.hits++,E.value;const e=this.get(B);return e&&(Q[g]={path:B,value:e}),e}*analyze(A,g){var I;const B=this.getByIndex(A,g);if(B)return B;const Q=(I=A.clipPaths[g])!=null?I:"",E=yield*UC(Q),e=yield*gE(E,!Q.trim());return this.set(Q,e),e}clear(){this.paths.clear(),this.tables=new WeakMap,this.resourcePaths=new WeakMap,this.pathUsers.clear()}}const XC=new WeakMap;function pe(C){let A=XC.get(C);return A||(A=new IE,XC.set(C,A)),A}var Ke=Object.defineProperty,me=(C,A,g)=>A in C?Ke(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,OC=(C,A,g)=>me(C,typeof A!="symbol"?A+"":A,g);const QB=1024;class PC{constructor(){OC(this,"blocks",[]),OC(this,"length",0)}push(A,g,I,B,Q,E=!1){const e=this.length%QB;e||this.blocks.push(new Int32Array(QB*6));const i=this.blocks[this.blocks.length-1],t=e*6;i[t]=A,i[t+1]=g,i[t+2]=I,i[t+3]=B,i[t+4]=Q,i[t+5]=+E,this.length++}get(A,g){return this.blocks[Math.floor(A/QB)][A%QB*6+g]}}const jC=new DataView(new ArrayBuffer(8));function Je(C,A){jC.setFloat64(0,A===0?0:A,!0);for(let g=0;g<8;g++)C=Math.imul(C^jC.getUint8(g),16777619);return C>>>0}function*BE(C,A=Je){var g,I,B,Q,E;const{frameCount:e,spriteCount:i}=C,t=new PC,a=new Uint32Array(e+1);for(let f=0;f<e;f++){a[f]=t.length;for(let u=0;u<i;u++){yield;const G=u*e+f;if(((g=C.frameData[G*9+8])!=null?g:0)<.05)continue;const S=(I=C.shapesIndex[G])!=null?I:-1,M=S>=0&&!!C.shapePresence[S],N=(B=C.clipPathIndex[G])!=null?B:-1,U=N<0?0:(Q=C.clipKinds[N])!=null?Q:0;if(U===1)continue;const K=u*7,k=C.atlas[K+2],m=!!C.atlas[K+1];if(!M&&!m)continue;const H=!M&&m&&!!U&&!!C.clipRects[N*5];U&&!H&&t.push(2,u,S,N,k),M&&t.push(1,u,S,N,k),m&&t.push(U&&!H?3:0,u,S,N,k,H),U&&!H&&t.push(4,u,S,N,k)}}a[e]=t.length;const o=new Uint32Array(e),s=new Map;let n=1;for(let f=0;f<e;f++){const u=a[f],G=a[f+1];let S=2166136261;for(let U=u;U<G;U++){yield;for(let K=0;K<6;K++)S=A(S,t.get(U,K));if(t.get(U,5))for(let K=1;K<5;K++)S=A(S,C.clipRects[t.get(U,3)*5+K])}let M=0;const N=(E=s.get(S))!=null?E:[];for(const U of N){const K=a[U];if(a[U+1]-K!==G-u)continue;let k=!0;for(let m=u;m<G&&k;m++){yield;const H=K+m-u;for(let v=0;v<6;v++)if(t.get(m,v)!==t.get(H,v)){k=!1;break}if(k&&t.get(m,5)){for(let v=1;v<5;v++)if(C.clipRects[t.get(m,3)*5+v]!==C.clipRects[t.get(H,3)*5+v]){k=!1;break}}}if(k){M=o[U];break}}M||(M=n++,N.push(f),s.set(S,N)),o[f]=M,yield}const r=new Uint8Array(t.length),c=new Uint32Array(t.length),h=new Int32Array(t.length*3),l=new Float32Array(t.length*12);for(let f=0;f<t.length;f++){yield,r[f]=t.get(f,0);const u=t.get(f,1);c[f]=u;for(let M=0;M<3;M++)h[f*3+M]=t.get(f,M+2);const G=u*7,S=f*12;if(l[S+4]=u,l[S+5]=t.get(f,4),C.atlas[G])for(let M=0;M<4;M++)l[S+M]=C.atlas[G+M+3];else l[S+6]=1;if(t.get(f,5)){l[S+6]|=2;for(let M=0;M<4;M++)l[S+M+8]=C.clipRects[t.get(f,3)*5+M+1]}}const w=new Uint32Array(e+1),D=new PC;for(let f=0;f<e;f++){yield,w[f]=D.length;const u=a[f+1];for(let G=a[f];G<u;){yield;const S=r[G];let M=1;if(S===0)for(;G+M<u&&r[G+M]===0&&h[(G+M)*3+2]===h[G*3+2];)M++,yield;D.push(S,G,M,0,0),G+=M}}w[e]=D.length;const y=new Uint32Array(D.length),R=new Uint32Array(D.length),F=new Uint8Array(D.length);for(let f=0;f<D.length;f++)yield,F[f]=D.get(f,0),y[f]=D.get(f,1),R[f]=D.get(f,2);const d={frameOffsets:a,frameScheduleIds:o,operations:r,spriteIndices:c,meshReferences:h,spriteMetadata:l,runFrameOffsets:w,runOperationStarts:y,runOperationCounts:R,runTypes:F};return{...d,byteLength:Object.values(d).reduce((f,u)=>f+u.byteLength,0)}}function*Le(C){if(C.length%9)throw new RangeError("Invalid SVGA frame row length");const A=new Float32Array(C.length/9*12);for(let g=0;g<C.length/9;g++){(g&127)===0&&(yield);for(let I=0;I<9;I++)A[g*12+I]=C[g*9+I]}return A}function CA(C="Operation aborted"){const A=new Error(C);return A.name="AbortError",A}function Mg(C){return C instanceof Error?C.name==="AbortError"?!0:"cause"in C&&Mg(C.cause):!1}function J(C,A){if(C!=null&&C.aborted)throw CA(A)}var He=Object.defineProperty,xe=(C,A,g)=>A in C?He(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,EB=(C,A,g)=>xe(C,typeof A!="symbol"?A+"":A,g);const CE=1e3/60,be=2,qe=12,ve=.25;function wB(){return typeof performance!="undefined"?performance.now():Date.now()}function Te(){return new Promise(C=>{if(typeof requestAnimationFrame=="function"){requestAnimationFrame(()=>C());return}setTimeout(C,0)}).then(wB)}function We(C,A={}){var g,I,B;const Q=Math.max(.1,(g=A.minBudgetMs)!=null?g:be),E=Math.max(Q,(I=A.maxBudgetMs)!=null?I:qe),e=Math.max(.05,Math.min(.95,(B=A.frameFraction)!=null?B:.5)),i=Number.isFinite(C)&&C>0?C:CE;return Math.max(Q,Math.min(E,i*e))}function Ve(C,A){return!Number.isFinite(A)||A<4||A>100?C:C+(A-C)*ve}class Ze{constructor(){EB(this,"frameIntervalMs",CE),EB(this,"lastFrameAt",-1),EB(this,"sliceStartedAt",wB()),EB(this,"nextFramePromise",null)}budgetMs(A={}){return We(this.frameIntervalMs,A)}shouldYield(A={}){return wB()-this.sliceStartedAt>=this.budgetMs(A)}async yield(){this.nextFramePromise||(this.nextFramePromise=Te().then(A=>{this.lastFrameAt>=0&&(this.frameIntervalMs=Ve(this.frameIntervalMs,A-this.lastFrameAt)),this.lastFrameAt=A,this.sliceStartedAt=wB()}).finally(()=>{this.nextFramePromise=null})),await this.nextFramePromise}}const TB=new Ze;function OA(C={}){return{get budgetMs(){return TB.budgetMs(C)},shouldYield(){return TB.shouldYield(C)},yield(){return TB.yield()}}}var Xe=Object.defineProperty,Oe=(C,A,g)=>A in C?Xe(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,eB=(C,A,g)=>Oe(C,typeof A!="symbol"?A+"":A,g);class Pe{constructor(A){this.resourceId=A,eB(this,"started",performance.now()),eB(this,"phases",{}),eB(this,"executor","main-thread"),eB(this,"fallbackReason")}phase(A){var g,I;return(I=(g=this.phases)[A])!=null?I:g[A]={executionMs:0,mainThreadExecutionMs:0,workerExecutionMs:0,elapsedMs:0,maxSliceMs:0,slices:0,cacheHits:0,bytes:0}}record(A,g,I="main"){const B=this.phase(A);B.executionMs+=g,B[I==="main"?"mainThreadExecutionMs":"workerExecutionMs"]+=g,B.maxSliceMs=Math.max(B.maxSliceMs,g),B.slices++}measure(A,g){const I=performance.now();try{return g()}finally{const B=performance.now()-I;this.record(A,B),this.phase(A).elapsedMs+=B}}finish(A){return{resourceId:this.resourceId,executor:this.executor,fallbackReason:this.fallbackReason,status:A,elapsedMs:performance.now()-this.started,phases:this.phases}}}async function tg(C,A={},g="command-build"){var I,B;const Q=OA({maxBudgetMs:A.frameBudgetMs}),E=A.profile?performance.now():0;let e=A.profile?performance.now():0,i=!0;try{for(;;){if(J(A.signal),(I=A.checkActive)==null||I.call(A),Q.shouldYield()){A.profile&&A.profile.record(g,performance.now()-e),i=!1;const a=Q.yield();if(A.signal){const o=A.signal;await new Promise((s,n)=>{const r=()=>{c(),n(CA("SVGA preparation canceled"))},c=()=>o.removeEventListener("abort",r);if(o.aborted){r();return}o.addEventListener("abort",r,{once:!0}),a.then(()=>{c(),s()},h=>{c(),n(h)})})}else await a;(B=A.checkActive)==null||B.call(A),e=A.profile?performance.now():0,i=!0}const t=C.next();if(t.done)return t.value}}finally{A.profile&&(i&&A.profile.record(g,performance.now()-e),A.profile.phase(g).elapsedMs+=performance.now()-E),C.return(void 0)}}const rC=0,yB=1,Pg=2,cC=3,FB=4;function*QE(C,A={}){var g,I,B,Q,E,e,i,t;const a=C.spriteTable,o=(g=A.clipAnalysis)!=null?g:pe(a);A.profile&&(o.trackHits=!0);const s=new Uint8Array(a.clipPaths.length),n=new Float64Array(a.clipPaths.length*5);for(let l=0;l<a.spriteCount*a.frameCount;l++){(l&127)===0&&(yield);const w=(I=a.clipPathIndex[l])!=null?I:-1;if(w<0||s[w]||!a.clipPaths[w]||((B=a.frameData[l*9+8])!=null?B:0)<.05)continue;const D=yield*o.analyze(a,w);s[w]=D.kind==="empty"?1:D.kind==="fillable"?2:3;const y=D.localRect;if(y){const R=w*5;n[R]=1,n[R+1]=y.x0,n[R+2]=y.y0,n[R+3]=y.x1,n[R+4]=y.y1}}const r=new Uint8Array(a.shapesTable.length);for(let l=0;l<r.length;l++)(l&127)===0&&(yield),r[l]=+!!((Q=a.shapesTable[l])!=null&&Q.length);const c=(E=C.atlasTextureHandles)!=null&&E.length?C.atlasTextureHandles:C.atlasTextureHandle?[C.atlasTextureHandle]:[],h=new Float64Array(a.spriteCount*7);for(let l=0;l<a.spriteCount;l++){(l&127)===0&&(yield);const w=C.atlasRects.get((e=a.imageKeys[l])!=null?e:""),D=l*7;w&&(h[D]=1,h[D+1]=+!!c[(i=w.textureIndex)!=null?i:0],h[D+2]=(t=w.textureIndex)!=null?t:0,h[D+3]=w.x,h[D+4]=w.y,h[D+5]=w.x+w.w,h[D+6]=w.y+w.h)}return{frameCount:a.frameCount,spriteCount:a.spriteCount,frameData:a.frameData,shapesIndex:a.shapesIndex,clipPathIndex:a.clipPathIndex,shapePresence:r,clipKinds:s,clipRects:n,atlas:h}}function*EE(C,A){return yield*BE(yield*QE(C,A))}function je(C){const A=EE(C,{});let g=A.next();for(;!g.done;)g=A.next();return g.value}function ze(C,A={}){return tg(EE(C,A),A)}const eE=`var L = Object.defineProperty, q = (n, o, a) => o in n ? L(n, o, { enumerable: !0, configurable: !0, writable: !0, value: a }) : n[o] = a, T = (n, o, a) => q(n, typeof o != "symbol" ? o + "" : o, a);
2
2
  const F = 1024;
3
3
  class G {
4
4
  constructor() {
@@ -216,7 +216,7 @@ R.onmessage = (n) => {
216
216
  }
217
217
  };
218
218
  //# sourceMappingURL=svga-command-worker-CMzk8QPG.js.map
219
- `,zC=typeof self!="undefined"&&self.Blob&&new Blob(["URL.revokeObjectURL(import.meta.url);",eE],{type:"text/javascript;charset=utf-8"});function _e(C){let A;try{if(A=zC&&(self.URL||self.webkitURL).createObjectURL(zC),!A)throw"";const g=new Worker(A,{type:"module",name:C==null?void 0:C.name});return g.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(A)}),g}catch(g){return new Worker("data:text/javascript;charset=utf-8,"+encodeURIComponent(eE),{type:"module",name:C==null?void 0:C.name})}}var $e=Object.defineProperty,Ai=(C,A,g)=>A in C?$e(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,iB=(C,A,g)=>Ai(C,typeof A!="symbol"?A+"":A,g);class gi{constructor(){iB(this,"foregroundStreak",0),iB(this,"active",0),iB(this,"maxConcurrent",1),iB(this,"waiters",[])}configure(A){this.maxConcurrent=Math.max(1,Math.floor(Number.isFinite(A)?A:1)),this.drain()}tryAcquire(A="foreground"){return this.active>=this.maxConcurrent||this.waiters.length?null:(this.active++,this.createRelease(A))}acquire(A,g="foreground"){if(A!=null&&A.aborted)return Promise.reject(QA("SVGA worker task aborted"));const I=this.tryAcquire(g);return I?Promise.resolve(I):new Promise((B,Q)=>{const E={resolve:B,reject:Q,signal:A,priority:g};A&&(E.onAbort=()=>{const e=this.waiters.indexOf(E);e>=0&&this.waiters.splice(e,1),Q(QA("SVGA worker task aborted"))},A.addEventListener("abort",E.onAbort,{once:!0})),this.waiters.push(E)})}createRelease(A){let g=!1;return()=>{g||(g=!0,this.active--,this.foregroundStreak=A==="foreground"?this.foregroundStreak+1:0,this.drain())}}run(A,g,I="foreground"){if(g!=null&&g.aborted)return Promise.reject(QA("SVGA worker task aborted"));const B=this.tryAcquire();return B?this.execute(A,B):this.acquire(g,I).then(Q=>this.execute(A,Q))}async execute(A,g){try{return await A()}finally{g()}}drain(){for(var A;this.active<this.maxConcurrent&&this.waiters.length>0;){const g=this.waiters.findIndex(E=>E.priority==="foreground"),I=this.waiters.findIndex(E=>E.priority==="background"),B=I>=0&&(g<0||this.foregroundStreak>=8)?I:g,Q=this.waiters.splice(B<0?0:B,1)[0];if(Q){if(Q.signal&&Q.onAbort&&Q.signal.removeEventListener("abort",Q.onAbort),(A=Q.signal)!=null&&A.aborted){Q.reject(QA("SVGA worker task aborted"));continue}this.active++,Q.resolve(this.createRelease(Q.priority))}}}}const kC=new gi;function YC(C){C!=null&&kC.configure(C)}function pC(C,A,g="foreground"){return kC.run(C,A,g)}function iE(C,A="foreground"){return kC.acquire(C,A)}let $g,Ii=1;const BI=new Map;function Bi(){if($g)return $g;const C=new _e,A=g=>{$g===C&&($g=void 0),C.terminate();for(const[I,B]of BI)B.owner===C&&(BI.delete(I),B.reject(g))};return C.addEventListener("message",g=>{const I=g.data,B=I&&BI.get(I.id);!B||B.owner!==C||B.generation!==I.generation||(BI.delete(I.id),["paused","complete","error"].includes(I.type)?B.resolve(I):B.reject(new Error("Invalid SVGA command response")))}),C.addEventListener("error",g=>A(new Error(g.message||"SVGA command worker failed"))),C.addEventListener("messageerror",()=>A(new Error("SVGA command worker deserialization failed"))),$g=C,C}async function Ci(C,A,g){var I,B,Q,E,e;if(typeof Worker=="undefined")throw new Error("SVGA command Worker unavailable");L(g.signal),(I=g.checkActive)==null||I.call(g);const i=Bi(),t=Ii++,a=t;let o=!0;try{for(;;){if((B=g.checkActive)==null||B.call(g),L(g.signal),$g!==i)throw new Error("SVGA command worker restarted while queued");const s=g.profile?performance.now():0,n=await iE(g.signal,"background");g.profile&&(g.profile.phase("worker-queue").elapsedMs+=performance.now()-s);let r;try{if((Q=g.checkActive)==null||Q.call(g),L(g.signal),$g!==i)throw new Error("SVGA command worker restarted while queued");r=await new Promise((c,h)=>{var l;const w=()=>{var d;clearTimeout(y),(d=g.signal)==null||d.removeEventListener("abort",D),BI.delete(t)},D=()=>{w(),h(QA("SVGA command task aborted"))},y=setTimeout(()=>{w(),h(new Error("SVGA command worker response timeout"))},3e4);BI.set(t,{owner:i,generation:a,resolve:d=>{w(),c(d)},reject:d=>{w(),h(d)}}),(l=g.signal)==null||l.addEventListener("abort",D,{once:!0});const R={type:o?"start":"resume",id:t,generation:a,input:o?C:void 0,hybrid:A,sliceMs:g.workerTimeSliceMs,profile:!!g.profile},F=o?Object.values(C).filter(ArrayBuffer.isView).map(d=>d.buffer):[];try{i.postMessage(R,F)}catch(d){w(),h(d)}})}finally{n()}if(o=!1,(E=g.checkActive)==null||E.call(g),L(g.signal),g.profile)for(const c of(e=r.samples)!=null?e:[]){if(!["command-build","frame-pack"].includes(c.phase)||!Number.isFinite(c.executionMs)||c.executionMs<0)throw new Error("Invalid worker profile");g.profile.record(c.phase,c.executionMs,"worker"),g.profile.phase(c.phase).elapsedMs+=c.elapsedMs}if(r.type==="error")throw new Error(r.error||"SVGA command worker failed");if(r.type==="complete"){if(!r.result)throw new Error("Missing SVGA command result");return r.result}}}finally{BI.delete(t);try{i.postMessage({type:"cancel",id:t,generation:a})}catch(s){}}}function*Qi(C){const A={...C};for(const g of["frameData","shapesIndex","clipPathIndex","shapePresence","clipKinds","clipRects","atlas"]){const I=C[g],B=new Uint8Array(I.byteLength),Q=new Uint8Array(I.buffer,I.byteOffset,I.byteLength);for(let e=0;e<Q.length;e+=65536)yield,B.set(Q.subarray(e,e+65536),e);const E=I.constructor;Object.assign(A,{[g]:new E(B.buffer)})}return A}function*Ei(C,A,g){var I,B,Q,E;if(!(C.packed instanceof Float32Array)||C.packed.length!==A.frameData.length/9*12)throw new Error("Invalid packed SVGA frame table");for(let o=0;o<A.frameData.length/9;o++){(o&127)===0&&(yield);for(let s=0;s<12;s++){const n=s<9?A.frameData[o*9+s]:0;if(!Object.is(C.packed[o*12+s],n))throw new Error("SVGA packed frame data mismatch")}}const e=C.commandTable;if(!g){if(e)throw new Error("Unexpected command table");return}if(!e)throw new Error("Missing command table");const i=(I=e.operations)==null?void 0:I.length,t=[[e.frameOffsets,Uint32Array,A.frameCount+1],[e.frameScheduleIds,Uint32Array,A.frameCount],[e.operations,Uint8Array,i],[e.spriteIndices,Uint32Array,i],[e.meshReferences,Int32Array,i*3],[e.spriteMetadata,Float32Array,i*12],[e.runFrameOffsets,Uint32Array,A.frameCount+1],[e.runOperationStarts,Uint32Array,(B=e.runTypes)==null?void 0:B.length],[e.runOperationCounts,Uint32Array,(Q=e.runTypes)==null?void 0:Q.length],[e.runTypes,Uint8Array,(E=e.runTypes)==null?void 0:E.length]];let a=0;for(const[o,s,n]of t){if(!(o instanceof s)||o.length!==n)throw new Error("Invalid command array layout");a+=o.byteLength}if(a!==e.byteLength||i>A.frameCount*A.spriteCount*4||e.frameOffsets[0]!==0||e.frameOffsets[A.frameCount]!==i||e.runFrameOffsets[0]!==0||e.runFrameOffsets[A.frameCount]!==e.runTypes.length)throw new Error("Invalid command table bounds");for(let o=0;o<A.frameCount;o++){yield;const s=e.frameOffsets[o],n=e.frameOffsets[o+1];if(s>n||!e.frameScheduleIds[o]||e.frameScheduleIds[o]>o+1||e.runFrameOffsets[o]>e.runFrameOffsets[o+1])throw new Error("Invalid command frame offsets");let r=s;for(let c=e.runFrameOffsets[o];c<e.runFrameOffsets[o+1];c++){yield;const h=e.runOperationCounts[c];if(!h||e.runOperationStarts[c]!==r||r+h>n||e.runTypes[c]!==e.operations[r]||h>1&&e.runTypes[c]!==0)throw new Error("Invalid command run");for(let l=r;l<r+h;l++)if((l&127)===0&&(yield),e.operations[l]!==e.runTypes[c]||e.meshReferences[l*3+2]!==e.meshReferences[r*3+2])throw new Error("Invalid run grouping");r+=h}if(r!==n)throw new Error("Incomplete command runs");for(let c=s;c<n;c++){(c&127)===0&&(yield);const h=e.spriteIndices[c],l=e.meshReferences[c*3],w=e.meshReferences[c*3+1];if(e.operations[c]>4||h>=A.spriteCount||l!==A.shapesIndex[h*A.frameCount+o]||w!==A.clipPathIndex[h*A.frameCount+o]||e.meshReferences[c*3+2]!==A.atlas[h*7+2])throw new Error("Invalid command reference");for(let D=0;D<12;D++)if(!Number.isFinite(e.spriteMetadata[c*12+D]))throw new Error("Non-finite command metadata")}}}async function ei(C,A,g={}){var I,B,Q,E;const e=()=>{var n;L(g.signal),(n=g.checkActive)==null||n.call(g)},i={...g,checkActive:e},t=(B=(I=g.clipAnalysis)==null?void 0:I.hits)!=null?B:0,a=await Ig(QE(C,g),i,"clip-prepare");if(g.profile&&(g.profile.phase("clip-prepare").cacheHits=((E=(Q=g.clipAnalysis)==null?void 0:Q.hits)!=null?E:0)-t),g.useWorker!==!1)try{const n=await Ig(Qi(a),i,"input-copy");g.profile&&(g.profile.phase("input-copy").bytes=Object.values(n).filter(ArrayBuffer.isView).reduce((c,h)=>c+h.byteLength,0));const r=await Ci(n,A,i);return await Ig(Ei(r,a,A),i,"validation"),g.profile&&(g.profile.executor="worker"),r}catch(n){e(),g.profile&&(g.profile.fallbackReason=String(n))}e();const o=A?await Ig(BE(a),i,"command-build"):void 0,s=await Ig(Le(a.frameData),i,"frame-pack");return{commandTable:o,packed:s}}const Wg=12,KC=32*1024*1024,xB=KC,hC=8,ZI=12,AI=9,gI=13,fg=9,hI=4,mI=6,ii=`#version 300 es\r
219
+ `,zC=typeof self!="undefined"&&self.Blob&&new Blob(["URL.revokeObjectURL(import.meta.url);",eE],{type:"text/javascript;charset=utf-8"});function _e(C){let A;try{if(A=zC&&(self.URL||self.webkitURL).createObjectURL(zC),!A)throw"";const g=new Worker(A,{type:"module",name:C==null?void 0:C.name});return g.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(A)}),g}catch(g){return new Worker("data:text/javascript;charset=utf-8,"+encodeURIComponent(eE),{type:"module",name:C==null?void 0:C.name})}}var $e=Object.defineProperty,Ai=(C,A,g)=>A in C?$e(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,iB=(C,A,g)=>Ai(C,typeof A!="symbol"?A+"":A,g);class gi{constructor(){iB(this,"foregroundStreak",0),iB(this,"active",0),iB(this,"maxConcurrent",1),iB(this,"waiters",[])}configure(A){this.maxConcurrent=Math.max(1,Math.floor(Number.isFinite(A)?A:1)),this.drain()}tryAcquire(A="foreground"){return this.active>=this.maxConcurrent||this.waiters.length?null:(this.active++,this.createRelease(A))}acquire(A,g="foreground"){if(A!=null&&A.aborted)return Promise.reject(CA("SVGA worker task aborted"));const I=this.tryAcquire(g);return I?Promise.resolve(I):new Promise((B,Q)=>{const E={resolve:B,reject:Q,signal:A,priority:g};A&&(E.onAbort=()=>{const e=this.waiters.indexOf(E);e>=0&&this.waiters.splice(e,1),Q(CA("SVGA worker task aborted"))},A.addEventListener("abort",E.onAbort,{once:!0})),this.waiters.push(E)})}createRelease(A){let g=!1;return()=>{g||(g=!0,this.active--,this.foregroundStreak=A==="foreground"?this.foregroundStreak+1:0,this.drain())}}run(A,g,I="foreground"){if(g!=null&&g.aborted)return Promise.reject(CA("SVGA worker task aborted"));const B=this.tryAcquire();return B?this.execute(A,B):this.acquire(g,I).then(Q=>this.execute(A,Q))}async execute(A,g){try{return await A()}finally{g()}}drain(){for(var A;this.active<this.maxConcurrent&&this.waiters.length>0;){const g=this.waiters.findIndex(E=>E.priority==="foreground"),I=this.waiters.findIndex(E=>E.priority==="background"),B=I>=0&&(g<0||this.foregroundStreak>=8)?I:g,Q=this.waiters.splice(B<0?0:B,1)[0];if(Q){if(Q.signal&&Q.onAbort&&Q.signal.removeEventListener("abort",Q.onAbort),(A=Q.signal)!=null&&A.aborted){Q.reject(CA("SVGA worker task aborted"));continue}this.active++,Q.resolve(this.createRelease(Q.priority))}}}}const kC=new gi;function YC(C){C!=null&&kC.configure(C)}function pC(C,A,g="foreground"){return kC.run(C,A,g)}function iE(C,A="foreground"){return kC.acquire(C,A)}let _g,Ii=1;const II=new Map;function Bi(){if(_g)return _g;const C=new _e,A=g=>{_g===C&&(_g=void 0),C.terminate();for(const[I,B]of II)B.owner===C&&(II.delete(I),B.reject(g))};return C.addEventListener("message",g=>{const I=g.data,B=I&&II.get(I.id);!B||B.owner!==C||B.generation!==I.generation||(II.delete(I.id),["paused","complete","error"].includes(I.type)?B.resolve(I):B.reject(new Error("Invalid SVGA command response")))}),C.addEventListener("error",g=>A(new Error(g.message||"SVGA command worker failed"))),C.addEventListener("messageerror",()=>A(new Error("SVGA command worker deserialization failed"))),_g=C,C}async function Ci(C,A,g){var I,B,Q,E,e;if(typeof Worker=="undefined")throw new Error("SVGA command Worker unavailable");J(g.signal),(I=g.checkActive)==null||I.call(g);const i=Bi(),t=Ii++,a=t;let o=!0;try{for(;;){if((B=g.checkActive)==null||B.call(g),J(g.signal),_g!==i)throw new Error("SVGA command worker restarted while queued");const s=g.profile?performance.now():0,n=await iE(g.signal,"background");g.profile&&(g.profile.phase("worker-queue").elapsedMs+=performance.now()-s);let r;try{if((Q=g.checkActive)==null||Q.call(g),J(g.signal),_g!==i)throw new Error("SVGA command worker restarted while queued");r=await new Promise((c,h)=>{var l;const w=()=>{var d;clearTimeout(y),(d=g.signal)==null||d.removeEventListener("abort",D),II.delete(t)},D=()=>{w(),h(CA("SVGA command task aborted"))},y=setTimeout(()=>{w(),h(new Error("SVGA command worker response timeout"))},3e4);II.set(t,{owner:i,generation:a,resolve:d=>{w(),c(d)},reject:d=>{w(),h(d)}}),(l=g.signal)==null||l.addEventListener("abort",D,{once:!0});const R={type:o?"start":"resume",id:t,generation:a,input:o?C:void 0,hybrid:A,sliceMs:g.workerTimeSliceMs,profile:!!g.profile},F=o?Object.values(C).filter(ArrayBuffer.isView).map(d=>d.buffer):[];try{i.postMessage(R,F)}catch(d){w(),h(d)}})}finally{n()}if(o=!1,(E=g.checkActive)==null||E.call(g),J(g.signal),g.profile)for(const c of(e=r.samples)!=null?e:[]){if(!["command-build","frame-pack"].includes(c.phase)||!Number.isFinite(c.executionMs)||c.executionMs<0)throw new Error("Invalid worker profile");g.profile.record(c.phase,c.executionMs,"worker"),g.profile.phase(c.phase).elapsedMs+=c.elapsedMs}if(r.type==="error")throw new Error(r.error||"SVGA command worker failed");if(r.type==="complete"){if(!r.result)throw new Error("Missing SVGA command result");return r.result}}}finally{II.delete(t);try{i.postMessage({type:"cancel",id:t,generation:a})}catch(s){}}}function*Qi(C){const A={...C};for(const g of["frameData","shapesIndex","clipPathIndex","shapePresence","clipKinds","clipRects","atlas"]){const I=C[g],B=new Uint8Array(I.byteLength),Q=new Uint8Array(I.buffer,I.byteOffset,I.byteLength);for(let e=0;e<Q.length;e+=65536)yield,B.set(Q.subarray(e,e+65536),e);const E=I.constructor;Object.assign(A,{[g]:new E(B.buffer)})}return A}function*Ei(C,A,g){var I,B,Q,E;if(!(C.packed instanceof Float32Array)||C.packed.length!==A.frameData.length/9*12)throw new Error("Invalid packed SVGA frame table");for(let o=0;o<A.frameData.length/9;o++){(o&127)===0&&(yield);for(let s=0;s<12;s++){const n=s<9?A.frameData[o*9+s]:0;if(!Object.is(C.packed[o*12+s],n))throw new Error("SVGA packed frame data mismatch")}}const e=C.commandTable;if(!g){if(e)throw new Error("Unexpected command table");return}if(!e)throw new Error("Missing command table");const i=(I=e.operations)==null?void 0:I.length,t=[[e.frameOffsets,Uint32Array,A.frameCount+1],[e.frameScheduleIds,Uint32Array,A.frameCount],[e.operations,Uint8Array,i],[e.spriteIndices,Uint32Array,i],[e.meshReferences,Int32Array,i*3],[e.spriteMetadata,Float32Array,i*12],[e.runFrameOffsets,Uint32Array,A.frameCount+1],[e.runOperationStarts,Uint32Array,(B=e.runTypes)==null?void 0:B.length],[e.runOperationCounts,Uint32Array,(Q=e.runTypes)==null?void 0:Q.length],[e.runTypes,Uint8Array,(E=e.runTypes)==null?void 0:E.length]];let a=0;for(const[o,s,n]of t){if(!(o instanceof s)||o.length!==n)throw new Error("Invalid command array layout");a+=o.byteLength}if(a!==e.byteLength||i>A.frameCount*A.spriteCount*4||e.frameOffsets[0]!==0||e.frameOffsets[A.frameCount]!==i||e.runFrameOffsets[0]!==0||e.runFrameOffsets[A.frameCount]!==e.runTypes.length)throw new Error("Invalid command table bounds");for(let o=0;o<A.frameCount;o++){yield;const s=e.frameOffsets[o],n=e.frameOffsets[o+1];if(s>n||!e.frameScheduleIds[o]||e.frameScheduleIds[o]>o+1||e.runFrameOffsets[o]>e.runFrameOffsets[o+1])throw new Error("Invalid command frame offsets");let r=s;for(let c=e.runFrameOffsets[o];c<e.runFrameOffsets[o+1];c++){yield;const h=e.runOperationCounts[c];if(!h||e.runOperationStarts[c]!==r||r+h>n||e.runTypes[c]!==e.operations[r]||h>1&&e.runTypes[c]!==0)throw new Error("Invalid command run");for(let l=r;l<r+h;l++)if((l&127)===0&&(yield),e.operations[l]!==e.runTypes[c]||e.meshReferences[l*3+2]!==e.meshReferences[r*3+2])throw new Error("Invalid run grouping");r+=h}if(r!==n)throw new Error("Incomplete command runs");for(let c=s;c<n;c++){(c&127)===0&&(yield);const h=e.spriteIndices[c],l=e.meshReferences[c*3],w=e.meshReferences[c*3+1];if(e.operations[c]>4||h>=A.spriteCount||l!==A.shapesIndex[h*A.frameCount+o]||w!==A.clipPathIndex[h*A.frameCount+o]||e.meshReferences[c*3+2]!==A.atlas[h*7+2])throw new Error("Invalid command reference");for(let D=0;D<12;D++)if(!Number.isFinite(e.spriteMetadata[c*12+D]))throw new Error("Non-finite command metadata")}}}async function ei(C,A,g={}){var I,B,Q,E;const e=()=>{var n;J(g.signal),(n=g.checkActive)==null||n.call(g)},i={...g,checkActive:e},t=(B=(I=g.clipAnalysis)==null?void 0:I.hits)!=null?B:0,a=await tg(QE(C,g),i,"clip-prepare");if(g.profile&&(g.profile.phase("clip-prepare").cacheHits=((E=(Q=g.clipAnalysis)==null?void 0:Q.hits)!=null?E:0)-t),g.useWorker!==!1)try{const n=await tg(Qi(a),i,"input-copy");g.profile&&(g.profile.phase("input-copy").bytes=Object.values(n).filter(ArrayBuffer.isView).reduce((c,h)=>c+h.byteLength,0));const r=await Ci(n,A,i);return await tg(Ei(r,a,A),i,"validation"),g.profile&&(g.profile.executor="worker"),r}catch(n){e(),g.profile&&(g.profile.fallbackReason=String(n))}e();const o=A?await tg(BE(a),i,"command-build"):void 0,s=await tg(Le(a.frameData),i,"frame-pack");return{commandTable:o,packed:s}}const Wg=12,KC=32*1024*1024,xB=KC,hC=8,ZI=12,$g=9,AI=13,fg=9,hI=4,mI=6,ii=`#version 300 es\r
220
220
  precision highp float;\r
221
221
  \r
222
222
  layout(location = 0) in vec3 a_position;\r
@@ -2235,7 +2235,7 @@ fn fs(input: VOut) -> @location(0) vec4f {\r
2235
2235
  let color = textureSample(atlasTex, atlasSampler, input.uv);\r
2236
2236
  return vec4f(color.rgb * input.color.a, color.a * input.color.a);\r
2237
2237
  }\r
2238
- `,ag=Object.freeze({submitted:!0});function $(C,A){return A?{submitted:!1,reason:C,message:A}:{submitted:!1,reason:C}}function vg(C,A){if(!C.submitted)throw new Error(`${A} rejected (${C.reason})${C.message?`: ${C.message}`:""}`)}const Ag=16,Ug=Object.freeze({parentA:0,parentB:1,parentC:2,parentD:3,translateX:4,translateY:5,opacity:6,frame:7,clipX0:8,clipY0:9,clipX1:10,clipY1:11,clipEnabled:12,metadataBase:13,atlasPage:14,motionTrackPlusOne:15});var Oi=Object.defineProperty,Pi=(C,A,g)=>A in C?Oi(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,Y=(C,A,g)=>Pi(C,typeof A!="symbol"?A+"":A,g);const gQ=new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]),ji=new Float32Array([0,0,1,1]),Hg=16*1024*1024,tE=12,NI=8,zi=NI*Float32Array.BYTES_PER_ELEMENT,WB=160,IQ="svga-frame-table-instanced-premul";function iI(C,A){const g=Math.max(1,Math.floor(A));return Math.ceil(Math.max(0,C)/g)*g}const hg=class BA{constructor(A,g,I=!0){Y(this,"type","webgpu"),Y(this,"supportsAtomicFrameReplay",!0),Y(this,"canvas"),Y(this,"maxTextureSize"),Y(this,"adapter"),Y(this,"device"),Y(this,"context"),Y(this,"format"),Y(this,"encoder",null),Y(this,"passEncoder",null),Y(this,"nextId",1),Y(this,"buffers",new Map),Y(this,"textures",new Map),Y(this,"pipelines",new Map),Y(this,"particleSpritePreparations",new Map),Y(this,"particleSpritePreparationEpoch",0),Y(this,"sampler"),Y(this,"uniformBuffer"),Y(this,"texturedBindGroupLayout"),Y(this,"dualTexturedBindGroupLayout"),Y(this,"instancedTextureBindGroupLayout"),Y(this,"uniformOnlyBindGroupLayout"),Y(this,"svgaFrameTableBindGroupLayout",null),Y(this,"uniformSlotStride",256),Y(this,"maxUniformSlots",8192),Y(this,"uniformSlotIndex",0),Y(this,"uniformShadow",new Uint8Array(this.uniformSlotStride*this.maxUniformSlots)),Y(this,"uniformShadowDirtyMin",1/0),Y(this,"uniformShadowDirtyMax",0),Y(this,"lastDrawPipeline",null),Y(this,"lastStencilRef",-1),Y(this,"frameUsesStencil",!1),Y(this,"lastVertexBufferId",-1),Y(this,"lastIndexBufferId",-1),Y(this,"uniformScratch160",new Float32Array(40)),Y(this,"uniformScratch128",new Float32Array(32)),Y(this,"svgaFrameTableUniformScratch",new Float32Array(WB/Float32Array.BYTES_PER_ELEMENT)),Y(this,"svgaFrameTableUniformWords",new Uint32Array(this.svgaFrameTableUniformScratch.buffer)),Y(this,"uniformOpacityScratch",new Float32Array(4)),Y(this,"depthStencilTexture",null),Y(this,"depthStencilView",null),Y(this,"msaaColorTexture",null),Y(this,"msaaColorView",null),Y(this,"lastCanvasWidth",0),Y(this,"lastCanvasHeight",0),Y(this,"lastDepthStencilSampleCount",0),Y(this,"msaaSampleCount",1),Y(this,"wantAntialias"),Y(this,"configuredCanvasWidth",0),Y(this,"configuredCanvasHeight",0),Y(this,"dummyTexture"),Y(this,"dummyTextureView"),Y(this,"videoUploadCanvas",null),Y(this,"videoUploadCtx",null),Y(this,"videoElementPreferCanvasBridge",!1),Y(this,"videoFramePreferCanvasBridge",!1),Y(this,"texturedBindGroupCache",new Map),Y(this,"dualTexturedBindGroupCache",new Map),Y(this,"instancedTextureBindGroupCache",new Map),Y(this,"particleDataBindGroupCache",new Map),Y(this,"motionDataBindGroupCache",new Map),Y(this,"svgaFrameTableDataBindGroupCache",new Map),Y(this,"instancedProjectionBuffer",null),Y(this,"instancedStorageBuffer",null),Y(this,"storageBindOffsetAlign",256),Y(this,"instancedStorageRingOffset",0),Y(this,"svgaCompactSlotStateUploadId",-1),Y(this,"svgaCompactSlotStateStorageBase",-1),Y(this,"svgaCompactSlotStateByteLength",0),Y(this,"instancedStorageShadow",new Uint8Array(0)),Y(this,"instancedStorageShadowDirtyMax",0),Y(this,"instancedProjectionCache",new Float32Array(16)),Y(this,"instancedProjectionValid",!1),Y(this,"lastClipMaskStorageBase",-1),Y(this,"lastClipMaskStorageByteLength",0),Y(this,"lastInstancedTextureBindGroup",null),Y(this,"performanceBufferWrites",0),Y(this,"performanceBufferWriteBytes",0),Y(this,"performanceStorageBufferWrites",0),Y(this,"performanceStorageBufferWriteBytes",0),Y(this,"performanceSubmittedDrawCalls",0),Y(this,"performanceRejectedDrawCalls",0),Y(this,"performanceSVGADynamicUploadWrites",0),Y(this,"performanceSVGADynamicUploadBytes",0),Y(this,"runtimeSubmittedDrawCalls",0),Y(this,"runtimeRejectedDrawCalls",0),Y(this,"currentDrawResult",$("invalid-command","WebGPU draw has not been submitted")),Y(this,"currentDrawRecorded",!1),Y(this,"runtimeUncapturedErrors",0),Y(this,"runtimeBackendLosses",0),Y(this,"runtimeDiagnosticHandler",null),Y(this,"deviceLost",!1),Y(this,"uncapturedErrorRequiresQuarantine",!1),Y(this,"deviceLostHandler",null),Y(this,"handleDeviceLoss",()=>{var B,Q;this.deviceLost=!0,this.particleSpritePreparationEpoch++,this.particleSpritePreparations.clear(),this.runtimeBackendLosses++,(B=this.runtimeDiagnosticHandler)==null||B.call(this,{type:"backend-lost"}),this.passEncoder=null,this.encoder=null,this.buffers.clear(),this.textures.clear(),this.texturedBindGroupCache.clear(),this.dualTexturedBindGroupCache.clear(),this.instancedTextureBindGroupCache.clear(),this.svgaFrameTableDataBindGroupCache.clear(),this.particleDataBindGroupCache.clear(),this.motionDataBindGroupCache.clear(),(Q=this.deviceLostHandler)==null||Q.call(this)}),Y(this,"handleUncapturedError",B=>{var Q;this.uncapturedErrorRequiresQuarantine=!0,this.runtimeUncapturedErrors++,(Q=this.runtimeDiagnosticHandler)==null||Q.call(this,{type:"gpu-uncaptured-error",message:B.error.message}),console.error("[WebGPU Error]",B.error.message)}),this.canvas=A,this.adapter=g,this.maxTextureSize=g.limits.maxTextureDimension2D,this.wantAntialias=I}async init(){this.device=await this.adapter.requestDevice(),this.device.lost.then(this.handleDeviceLoss),this.device.onuncapturederror=this.handleUncapturedError,this.context=this.canvas.getContext("webgpu"),this.format=navigator.gpu.getPreferredCanvasFormat(),this.msaaSampleCount=this.wantAntialias?4:1,this.configureCanvasContext(),this.sampler=this.device.createSampler({magFilter:"linear",minFilter:"linear"}),this.uniformSlotStride=this.device.limits.minUniformBufferOffsetAlignment,this.storageBindOffsetAlign=this.device.limits.minStorageBufferOffsetAlignment,this.uniformBuffer=this.device.createBuffer({size:this.uniformSlotStride*this.maxUniformSlots,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),this.uniformShadow=new Uint8Array(this.uniformSlotStride*this.maxUniformSlots),this.dummyTexture=this.device.createTexture({size:[1,1],format:"rgba8unorm",usage:GPUTextureUsage.TEXTURE_BINDING}),this.dummyTextureView=this.dummyTexture.createView(),this.initPipelines()}configureCanvasContext(){this.context.configure({device:this.device,format:this.format,alphaMode:"premultiplied"}),this.configuredCanvasWidth=this.canvas.width,this.configuredCanvasHeight=this.canvas.height}ensureFrameAttachments(A,g,I){var B,Q;(this.lastCanvasWidth!==A||this.lastCanvasHeight!==g||this.lastDepthStencilSampleCount!==this.msaaSampleCount)&&((B=this.depthStencilTexture)==null||B.destroy(),this.depthStencilTexture=null,this.depthStencilView=null,(Q=this.msaaColorTexture)==null||Q.destroy(),this.msaaColorTexture=null,this.msaaColorView=null,this.msaaSampleCount>1&&(this.msaaColorTexture=this.device.createTexture({size:[A,g],format:this.format,sampleCount:this.msaaSampleCount,usage:GPUTextureUsage.RENDER_ATTACHMENT}),this.msaaColorView=this.msaaColorTexture.createView()),this.lastCanvasWidth=A,this.lastCanvasHeight=g,this.lastDepthStencilSampleCount=this.msaaSampleCount),I&&!this.depthStencilTexture&&(this.depthStencilTexture=this.device.createTexture({size:[A,g],format:"depth24plus-stencil8",sampleCount:this.msaaSampleCount,usage:GPUTextureUsage.RENDER_ATTACHMENT}),this.depthStencilView=this.depthStencilTexture.createView())}initPipelines(){const A=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform",hasDynamicOffset:!0,minBindingSize:160}},{binding:1,visibility:GPUShaderStage.FRAGMENT,texture:{}},{binding:2,visibility:GPUShaderStage.FRAGMENT,sampler:{}}]});this.texturedBindGroupLayout=A;const g=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform",hasDynamicOffset:!0,minBindingSize:160}},{binding:1,visibility:GPUShaderStage.FRAGMENT,texture:{}},{binding:2,visibility:GPUShaderStage.FRAGMENT,texture:{}},{binding:3,visibility:GPUShaderStage.FRAGMENT,sampler:{}}]});this.dualTexturedBindGroupLayout=g,this.instancedTextureBindGroupLayout=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{}}]});const I=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX,buffer:{type:"uniform",hasDynamicOffset:!0,minBindingSize:128}}]});this.uniformOnlyBindGroupLayout=I,this.createTexturedPipeline("svga-batch-premul:none",wA.svgaBatchPremul,A,[{shaderLocation:0,offset:0,format:"float32x3"},{shaderLocation:1,offset:12,format:"float32x4"},{shaderLocation:2,offset:28,format:"float32x2"}],36,"none"),this.createTexturedPipeline("vap:none",wA.vap,A,[{shaderLocation:0,offset:0,format:"float32x2"},{shaderLocation:1,offset:8,format:"float32x2"},{shaderLocation:2,offset:16,format:"float32x2"}],24,"none"),this.createTexturedPipeline("vap-mix-overlay:none",wA.vapMixOverlay,g,[{shaderLocation:0,offset:0,format:"float32x2"},{shaderLocation:1,offset:8,format:"float32x2"}],16,"none",2),this.createTexturedPipeline("alpha-video:none",wA.alphaVideo,A,[{shaderLocation:0,offset:0,format:"float32x2"},{shaderLocation:1,offset:8,format:"float32x2"}],16,"none"),this.createTexturedPipeline("rgba-textured:none",wA.rgbaTextured,A,[{shaderLocation:0,offset:0,format:"float32x2"},{shaderLocation:1,offset:8,format:"float32x2"}],16,"none")}ensureStencilPipelines(){this.pipelines.has("svga-batch-premul:pass")||this.createTexturedPipeline("svga-batch-premul:pass",wA.svgaBatchPremul,this.texturedBindGroupLayout,[{shaderLocation:0,offset:0,format:"float32x3"},{shaderLocation:1,offset:12,format:"float32x4"},{shaderLocation:2,offset:28,format:"float32x2"}],36,"pass"),this.pipelines.has("svga-batch-premul:test")||this.createTexturedPipeline("svga-batch-premul:test",wA.svgaBatchPremul,this.texturedBindGroupLayout,[{shaderLocation:0,offset:0,format:"float32x3"},{shaderLocation:1,offset:12,format:"float32x4"},{shaderLocation:2,offset:28,format:"float32x2"}],36,"test"),this.pipelines.has("vap:pass")||this.createTexturedPipeline("vap:pass",wA.vap,this.texturedBindGroupLayout,[{shaderLocation:0,offset:0,format:"float32x2"},{shaderLocation:1,offset:8,format:"float32x2"},{shaderLocation:2,offset:16,format:"float32x2"}],24,"pass"),this.pipelines.has("vap-mix-overlay:pass")||this.createTexturedPipeline("vap-mix-overlay:pass",wA.vapMixOverlay,this.dualTexturedBindGroupLayout,[{shaderLocation:0,offset:0,format:"float32x2"},{shaderLocation:1,offset:8,format:"float32x2"}],16,"pass",2);for(const[A,g]of[["alpha-video:pass",wA.alphaVideo],["rgba-textured:pass",wA.rgbaTextured]])this.pipelines.has(A)||this.createTexturedPipeline(A,g,this.texturedBindGroupLayout,[{shaderLocation:0,offset:0,format:"float32x2"},{shaderLocation:1,offset:8,format:"float32x2"}],16,"pass");this.pipelines.has("clip-mask:write")||this.createClipMaskPipeline(this.uniformOnlyBindGroupLayout)}ensureInstancedProjectionBuffer(){return this.instancedProjectionBuffer||(this.instancedProjectionBuffer=this.device.createBuffer({size:256,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),this.instancedProjectionValid=!1),this.instancedProjectionBuffer}ensureInstancedStorageBuffer(){return this.instancedStorageBuffer||(this.instancedStorageBuffer=this.device.createBuffer({size:Hg,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST})),this.instancedStorageBuffer}ensureInstancedDataBindGroup(A,g){let I=A.instancedDataBindGroups;I||(I=new Map,A.instancedDataBindGroups=I);let B=I.get(g);return B||(B=this.device.createBindGroup({layout:A.bindGroupLayout,entries:[{binding:0,resource:{buffer:this.ensureInstancedProjectionBuffer(),offset:0,size:256}},{binding:1,resource:{buffer:this.ensureInstancedStorageBuffer(),offset:0,size:g}}]}),I.set(g,B),B)}ensureInstancedSvgaPipeline(A="none"){const g=`svga-instanced-premul:${A}`;let I=this.pipelines.get(g);return I||(this.createInstancedSvgaPipeline(g,wA.svgaInstancedPremul,A),I=this.pipelines.get(g)),I}ensureInstancedClipMaskPipeline(){const A="clip-mask-instanced:write";let g=this.pipelines.get(A);return g||(this.createInstancedClipMaskPipeline(),g=this.pipelines.get(A)),g}ensureInstancedAlphaPipeline(){const A=this.frameUsesStencil?"pass":"none",g=`alpha-video-instanced:${A}`;let I=this.pipelines.get(g);return I||(this.createInstancedAlphaVideoPipeline(A),I=this.pipelines.get(g)),I}ensureInstancedVapPipeline(){const A=this.frameUsesStencil?"pass":"none",g=`vap-instanced:${A}`;let I=this.pipelines.get(g);return I||(this.createVapInstancedPipeline(A),I=this.pipelines.get(g)),I}ensureSVGAFrameTableDataLayout(){return this.svgaFrameTableBindGroupLayout?this.svgaFrameTableBindGroupLayout:(this.svgaFrameTableBindGroupLayout=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX,buffer:{type:"uniform",hasDynamicOffset:!0,minBindingSize:WB}},{binding:1,visibility:GPUShaderStage.VERTEX,buffer:{type:"read-only-storage",minBindingSize:BA.SVGA_FRAME_TABLE_ROW_BYTES}},{binding:2,visibility:GPUShaderStage.VERTEX,buffer:{type:"read-only-storage",minBindingSize:zi}},{binding:3,visibility:GPUShaderStage.VERTEX,buffer:{type:"read-only-storage",minBindingSize:32}},{binding:4,visibility:GPUShaderStage.VERTEX,buffer:{type:"uniform",minBindingSize:32}},{binding:5,visibility:GPUShaderStage.VERTEX,buffer:{type:"read-only-storage",hasDynamicOffset:!0,minBindingSize:BA.SVGA_FRAME_TABLE_ROW_BYTES}}]}),this.svgaFrameTableBindGroupLayout)}ensureSVGAFrameTablePipeline(A="none"){const g=`${IQ}:${A}`;let I=this.pipelines.get(g);if(I)return I;const B=this.ensureSVGAFrameTableDataLayout(),Q=this.device.createShaderModule({code:Xi}),E=A==="test"?{format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"equal",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"equal",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilReadMask:255,stencilWriteMask:0}:A==="pass"?{format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilWriteMask:0}:void 0;return I={pipeline:this.device.createRenderPipeline({label:`svga-frame-table-instanced:${A}`,layout:this.device.createPipelineLayout({bindGroupLayouts:[B,this.instancedTextureBindGroupLayout]}),vertex:{module:Q,entryPoint:"vs",buffers:[{arrayStride:8,attributes:[{shaderLocation:0,offset:0,format:"float32x2"}]}]},fragment:{module:Q,entryPoint:"fs",targets:[{format:this.format,blend:{color:{srcFactor:"one",dstFactor:"one-minus-src-alpha"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha"}}}]},primitive:{topology:"triangle-list"},depthStencil:E,multisample:{count:this.msaaSampleCount}}),bindGroupLayout:B,textureCount:1},this.pipelines.set(g,I),I}ensureSVGAFrameTableMeshPipeline(A,g){const I=A==="svga-frame-table-clip-mask"?"write":g==="clear"?"none":g,B=`${A}:${I}`;let Q=this.pipelines.get(B);if(Q)return Q;const E=this.ensureSVGAFrameTableDataLayout(),e=this.device.createShaderModule({code:A==="svga-frame-table-shape-premul"?wA.svgaFrameTableShape:wA.svgaFrameTableClipMask}),i=A==="svga-frame-table-clip-mask";let t;return i?t={format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"always",passOp:"replace",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"always",passOp:"replace",failOp:"keep",depthFailOp:"keep"},stencilWriteMask:255}:I==="test"?t={format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"equal",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"equal",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilReadMask:255,stencilWriteMask:0}:I==="pass"&&(t={format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilWriteMask:0}),Q={pipeline:this.device.createRenderPipeline({label:`${A}:${I}`,layout:this.device.createPipelineLayout({bindGroupLayouts:[E,this.instancedTextureBindGroupLayout]}),vertex:{module:e,entryPoint:"vs",buffers:A==="svga-frame-table-shape-premul"?[{arrayStride:36,attributes:[{shaderLocation:0,offset:0,format:"float32x3"},{shaderLocation:1,offset:12,format:"float32x4"},{shaderLocation:2,offset:28,format:"float32x2"}]}]:[{arrayStride:8,attributes:[{shaderLocation:0,offset:0,format:"float32x2"}]}]},fragment:{module:e,entryPoint:"fs",targets:[{format:this.format,writeMask:i?0:GPUColorWrite.ALL,...i?{}:{blend:{color:{srcFactor:"one",dstFactor:"one-minus-src-alpha"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha"}}}}]},primitive:{topology:"triangle-list"},depthStencil:t,multisample:{count:this.msaaSampleCount}}),bindGroupLayout:E,textureCount:1},this.pipelines.set(B,Q),Q}ensureMotionSvgaPipeline(){const A=this.frameUsesStencil?"pass":"none",g=`svga-motion-instanced-premul:${A}`;let I=this.pipelines.get(g);if(I)return I;this.ensureInstancedProjectionBuffer(),this.ensureInstancedStorageBuffer();const B=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX,buffer:{type:"uniform",minBindingSize:64}},{binding:1,visibility:GPUShaderStage.VERTEX,buffer:{type:"read-only-storage",hasDynamicOffset:!0,minBindingSize:BA.SVGA_INSTANCED_STRIDE}},{binding:2,visibility:GPUShaderStage.VERTEX,buffer:{type:"read-only-storage",minBindingSize:32}},{binding:3,visibility:GPUShaderStage.VERTEX,buffer:{type:"uniform",minBindingSize:32}}]}),Q=this.device.createShaderModule({code:wA.svgaMotionInstancedPremul});return I={pipeline:this.device.createRenderPipeline({layout:this.device.createPipelineLayout({bindGroupLayouts:[B,this.instancedTextureBindGroupLayout]}),vertex:{module:Q,entryPoint:"vs",buffers:[{arrayStride:8,attributes:[{shaderLocation:0,offset:0,format:"float32x2"}]}]},fragment:{module:Q,entryPoint:"fs",targets:[{format:this.format,blend:{color:{srcFactor:"one",dstFactor:"one-minus-src-alpha"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha"}}}]},primitive:{topology:"triangle-list"},depthStencil:A==="pass"?{format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilWriteMask:0}:void 0,multisample:{count:this.msaaSampleCount}}),bindGroupLayout:B,textureCount:1},this.pipelines.set(g,I),I}ensureParticlePipeline(A){const g=this.frameUsesStencil?"pass":"none",I=`particle-instanced:${A}:${g}`;let B=this.pipelines.get(I);if(B)return B;this.ensureInstancedProjectionBuffer();const Q=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX,buffer:{type:"uniform",minBindingSize:64}},{binding:1,visibility:GPUShaderStage.VERTEX,buffer:{type:"read-only-storage",minBindingSize:80}}]}),E=this.device.createShaderModule({code:wA.particleInstanced}),e=A==="additive";return B={pipeline:this.device.createRenderPipeline({label:`particle-instanced:${A}:${g}`,layout:this.device.createPipelineLayout({bindGroupLayouts:[Q]}),vertex:{module:E,entryPoint:"vs",buffers:[{arrayStride:8,attributes:[{shaderLocation:0,offset:0,format:"float32x2"}]}]},fragment:{module:E,entryPoint:"fs",targets:[{format:this.format,blend:e?{color:{srcFactor:"one",dstFactor:"one"},alpha:{srcFactor:"one",dstFactor:"one"}}:{color:{srcFactor:"one",dstFactor:"one-minus-src-alpha"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha"}}}]},primitive:{topology:"triangle-list"},depthStencil:g==="pass"?{format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilWriteMask:0}:void 0,multisample:{count:this.msaaSampleCount}}),bindGroupLayout:Q,textureCount:0},this.pipelines.set(I,B),B}async prepareParticleSpritePipelines(){if(this.deviceLost)throw new Error("WebGPU device is lost");const A=[];for(const g of["none","pass"])for(const I of["normal","additive"]){const B=`particle-sprite-instanced:${I}:${g}`;if(this.pipelines.has(B))continue;let Q=this.particleSpritePreparations.get(B);if(!Q){const E=this.particleSpritePreparationEpoch;Q=(async()=>{const{descriptor:e,dataLayout:i}=this.particleSpritePipelineDescriptor(I,g),t=await this.device.createRenderPipelineAsync(e);if(this.deviceLost||E!==this.particleSpritePreparationEpoch)throw new Error("WebGPU particle preparation cancelled by backend teardown");this.pipelines.set(B,{pipeline:t,bindGroupLayout:i,textureCount:1})})().finally(()=>{this.particleSpritePreparations.get(B)===Q&&this.particleSpritePreparations.delete(B)}),this.particleSpritePreparations.set(B,Q)}A.push(Q)}await Promise.all(A)}ensureParticleSpritePipeline(A){const g=this.frameUsesStencil?"pass":"none",I=`particle-sprite-instanced:${A}:${g}`;let B=this.pipelines.get(I);if(B)return B;const{descriptor:Q,dataLayout:E}=this.particleSpritePipelineDescriptor(A,g);return B={pipeline:this.device.createRenderPipeline(Q),bindGroupLayout:E,textureCount:1},this.pipelines.set(I,B),B}particleSpritePipelineDescriptor(A,g){const I=`particle-sprite-instanced:${A}:${g}`;this.ensureInstancedProjectionBuffer();const B=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX,buffer:{type:"uniform",minBindingSize:64}},{binding:1,visibility:GPUShaderStage.VERTEX,buffer:{type:"read-only-storage",minBindingSize:128}}]}),Q=this.device.createShaderModule({code:wA.particleSpriteInstanced}),E=A==="additive";return{descriptor:{label:I,layout:this.device.createPipelineLayout({bindGroupLayouts:[B,this.instancedTextureBindGroupLayout]}),vertex:{module:Q,entryPoint:"vs",buffers:[{arrayStride:8,attributes:[{shaderLocation:0,offset:0,format:"float32x2"}]}]},fragment:{module:Q,entryPoint:"fs",targets:[{format:this.format,blend:E?{color:{srcFactor:"one",dstFactor:"one"},alpha:{srcFactor:"one",dstFactor:"one"}}:{color:{srcFactor:"one",dstFactor:"one-minus-src-alpha"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha"}}}]},primitive:{topology:"triangle-list"},depthStencil:g==="pass"?{format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilWriteMask:0}:void 0,multisample:{count:this.msaaSampleCount}},dataLayout:B}}createInstancedSvgaPipeline(A,g,I){this.ensureInstancedProjectionBuffer(),this.ensureInstancedStorageBuffer();const B=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX,buffer:{type:"uniform",hasDynamicOffset:!1,minBindingSize:64}},{binding:1,visibility:GPUShaderStage.VERTEX,buffer:{type:"read-only-storage",hasDynamicOffset:!0,minBindingSize:BA.SVGA_INSTANCED_STRIDE}}]}),Q=this.instancedTextureBindGroupLayout,E=this.device.createShaderModule({code:g}),e=I==="test"?{format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"equal",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"equal",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilReadMask:255,stencilWriteMask:0}:I==="pass"?{format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilWriteMask:0}:void 0,i=this.device.createRenderPipeline({layout:this.device.createPipelineLayout({bindGroupLayouts:[B,Q]}),vertex:{module:E,entryPoint:"vs",buffers:[{arrayStride:8,attributes:[{shaderLocation:0,offset:0,format:"float32x2"}]}]},fragment:{module:E,entryPoint:"fs",targets:[{format:this.format,blend:{color:{srcFactor:"one",dstFactor:"one-minus-src-alpha"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha"}}}]},primitive:{topology:"triangle-list"},depthStencil:e,multisample:{count:this.msaaSampleCount}});this.pipelines.set(A,{pipeline:i,bindGroupLayout:B,textureCount:1})}createInstancedClipMaskPipeline(){this.ensureInstancedProjectionBuffer(),this.ensureInstancedStorageBuffer();const A=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX,buffer:{type:"uniform",hasDynamicOffset:!1,minBindingSize:64}},{binding:1,visibility:GPUShaderStage.VERTEX,buffer:{type:"read-only-storage",hasDynamicOffset:!0,minBindingSize:BA.CLIP_MASK_INSTANCED_STRIDE}}]}),g=this.device.createShaderModule({code:wA.clipMaskInstanced}),I=this.device.createRenderPipeline({layout:this.device.createPipelineLayout({bindGroupLayouts:[A]}),vertex:{module:g,entryPoint:"vs",buffers:[{arrayStride:8,attributes:[{shaderLocation:0,offset:0,format:"float32x2"}]}]},fragment:{module:g,entryPoint:"fs",targets:[{format:this.format,writeMask:0}]},primitive:{topology:"triangle-list"},depthStencil:{format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"always",passOp:"replace",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"always",passOp:"replace",failOp:"keep",depthFailOp:"keep"},stencilReadMask:255,stencilWriteMask:255},multisample:{count:this.msaaSampleCount}});this.pipelines.set("clip-mask-instanced:write",{pipeline:I,bindGroupLayout:A,textureCount:0})}createVapInstancedPipeline(A){this.ensureInstancedProjectionBuffer(),this.ensureInstancedStorageBuffer();const g=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX,buffer:{type:"uniform",hasDynamicOffset:!1,minBindingSize:64}},{binding:1,visibility:GPUShaderStage.VERTEX,buffer:{type:"read-only-storage",hasDynamicOffset:!0,minBindingSize:BA.VAP_INSTANCED_STRIDE}}]}),I=this.instancedTextureBindGroupLayout,B=this.device.createShaderModule({code:wA.vapInstanced}),Q=this.device.createRenderPipeline({layout:this.device.createPipelineLayout({bindGroupLayouts:[g,I]}),vertex:{module:B,entryPoint:"vs",buffers:[{arrayStride:16,attributes:[{shaderLocation:0,offset:0,format:"float32x2"},{shaderLocation:1,offset:8,format:"float32x2"}]}]},fragment:{module:B,entryPoint:"fs",targets:[{format:this.format,blend:{color:{srcFactor:"one",dstFactor:"one-minus-src-alpha"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha"}}}]},primitive:{topology:"triangle-list"},depthStencil:A==="pass"?{format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilWriteMask:0}:void 0,multisample:{count:this.msaaSampleCount}});this.pipelines.set(`vap-instanced:${A}`,{pipeline:Q,bindGroupLayout:g,textureCount:1})}createInstancedAlphaVideoPipeline(A){this.ensureInstancedProjectionBuffer(),this.ensureInstancedStorageBuffer();const g=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX,buffer:{type:"uniform",hasDynamicOffset:!1,minBindingSize:64}},{binding:1,visibility:GPUShaderStage.VERTEX,buffer:{type:"read-only-storage",hasDynamicOffset:!0,minBindingSize:BA.ALPHA_INSTANCED_STRIDE}}]}),I=this.instancedTextureBindGroupLayout,B=this.device.createShaderModule({code:wA.alphaVideoInstanced}),Q=this.device.createRenderPipeline({layout:this.device.createPipelineLayout({bindGroupLayouts:[g,I]}),vertex:{module:B,entryPoint:"vs",buffers:[{arrayStride:16,attributes:[{shaderLocation:0,offset:0,format:"float32x2"},{shaderLocation:1,offset:8,format:"float32x2"}]}]},fragment:{module:B,entryPoint:"fs",targets:[{format:this.format,blend:{color:{srcFactor:"one",dstFactor:"one-minus-src-alpha"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha"}}}]},primitive:{topology:"triangle-list"},depthStencil:A==="pass"?{format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilWriteMask:0}:void 0,multisample:{count:this.msaaSampleCount}});this.pipelines.set(`alpha-video-instanced:${A}`,{pipeline:Q,bindGroupLayout:g,textureCount:1})}createTexturedPipeline(A,g,I,B,Q,E,e=1){const i=this.device.createShaderModule({code:g}),t=E==="test"?{format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"equal",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"equal",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilReadMask:255,stencilWriteMask:0}:E==="pass"?{format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilWriteMask:0}:void 0,a=this.device.createRenderPipeline({layout:this.device.createPipelineLayout({bindGroupLayouts:[I]}),vertex:{module:i,entryPoint:"vs",buffers:[{arrayStride:Q,attributes:B}]},fragment:{module:i,entryPoint:"fs",targets:[{format:this.format,blend:{color:{srcFactor:"one",dstFactor:"one-minus-src-alpha"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha"}}}]},primitive:{topology:"triangle-list"},depthStencil:t,multisample:{count:this.msaaSampleCount}});this.pipelines.set(A,{pipeline:a,bindGroupLayout:I,textureCount:e})}createClipMaskPipeline(A){const g=this.device.createShaderModule({code:wA.clipMask}),I=this.device.createRenderPipeline({layout:this.device.createPipelineLayout({bindGroupLayouts:[A]}),vertex:{module:g,entryPoint:"vs",buffers:[{arrayStride:8,attributes:[{shaderLocation:0,offset:0,format:"float32x2"}]}]},fragment:{module:g,entryPoint:"fs",targets:[{format:this.format,writeMask:0}]},primitive:{topology:"triangle-list"},depthStencil:{format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"always",passOp:"replace",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"always",passOp:"replace",failOp:"keep",depthFailOp:"keep"},stencilReadMask:255,stencilWriteMask:255},multisample:{count:this.msaaSampleCount}});this.pipelines.set("clip-mask:write",{pipeline:I,bindGroupLayout:A,textureCount:0})}beginFrame(A={}){if(this.deviceLost)return $("backend-lost","WebGPU device is lost");if(this.uncapturedErrorRequiresQuarantine)return $("validation-error","WebGPU reported an uncaptured error after the previous submission");try{const g=this.canvas.width,I=this.canvas.height;(g!==this.configuredCanvasWidth||I!==this.configuredCanvasHeight)&&this.configureCanvasContext();const B=A.stencil===!0;this.frameUsesStencil=B,this.ensureFrameAttachments(g,I,B),B&&this.ensureStencilPipelines(),this.encoder=this.device.createCommandEncoder();const Q=this.context.getCurrentTexture().createView(),E=this.msaaSampleCount>1&&this.msaaColorView?{view:this.msaaColorView,resolveTarget:Q,clearValue:{r:0,g:0,b:0,a:0},loadOp:"clear",storeOp:"discard"}:{view:Q,clearValue:{r:0,g:0,b:0,a:0},loadOp:"clear",storeOp:"store"};this.uniformSlotIndex=0,this.instancedStorageRingOffset=0,this.svgaCompactSlotStateUploadId=-1,this.svgaCompactSlotStateStorageBase=-1,this.svgaCompactSlotStateByteLength=0,this.instancedStorageShadowDirtyMax=0,this.lastClipMaskStorageBase=-1,this.lastClipMaskStorageByteLength=0,this.uniformShadowDirtyMin=1/0,this.uniformShadowDirtyMax=0,this.lastDrawPipeline=null,this.lastStencilRef=-1,this.lastVertexBufferId=-1,this.lastIndexBufferId=-1,this.lastInstancedTextureBindGroup=null;const e={colorAttachments:[E]};return B&&(e.depthStencilAttachment={view:this.depthStencilView,stencilClearValue:0,stencilLoadOp:"clear",stencilStoreOp:"discard",depthClearValue:1,depthLoadOp:"clear",depthStoreOp:"discard"}),this.passEncoder=this.encoder.beginRenderPass(e),ag}catch(g){return this.passEncoder=null,this.encoder=null,$("submission-error",this.errorMessage(g))}}endFrame(){if(this.deviceLost)return $("backend-lost","WebGPU device is lost");if(!this.passEncoder||!this.encoder)return $("invalid-command","WebGPU frame is not active");try{return this.passEncoder.end(),this.flushUniformShadow(),this.flushInstancedStorageShadow(),this.device.queue.submit([this.encoder.finish()]),this.passEncoder=null,this.encoder=null,ag}catch(A){return this.passEncoder=null,this.encoder=null,$("submission-error",this.errorMessage(A))}}abortFrame(){if(this.deviceLost)return $("backend-lost","WebGPU device is lost");const A=this.uncapturedErrorRequiresQuarantine;if(this.passEncoder)try{this.passEncoder.end()}catch(g){return this.passEncoder=null,this.encoder=null,$("submission-error",this.errorMessage(g))}return this.passEncoder=null,this.encoder=null,this.instancedStorageShadowDirtyMax=0,this.uniformShadowDirtyMin=1/0,this.uniformShadowDirtyMax=0,this.lastDrawPipeline=null,this.lastStencilRef=-1,this.lastVertexBufferId=-1,this.lastIndexBufferId=-1,A?$("validation-error","WebGPU backend is quarantined after an uncaptured error"):(this.lastInstancedTextureBindGroup=null,this.svgaCompactSlotStateUploadId=-1,this.svgaCompactSlotStateStorageBase=-1,this.svgaCompactSlotStateByteLength=0,ag)}errorMessage(A){return A instanceof Error?A.message:String(A)}getPerformanceSnapshot(){return{bufferWrites:this.performanceBufferWrites,bufferWriteBytes:this.performanceBufferWriteBytes,storageBufferWrites:this.performanceStorageBufferWrites,storageBufferWriteBytes:this.performanceStorageBufferWriteBytes,submittedDrawCalls:this.performanceSubmittedDrawCalls,rejectedDrawCalls:this.performanceRejectedDrawCalls,svgaDynamicUploadWrites:this.performanceSVGADynamicUploadWrites,svgaDynamicUploadBytes:this.performanceSVGADynamicUploadBytes}}resetPerformanceSnapshot(){this.performanceBufferWrites=0,this.performanceBufferWriteBytes=0,this.performanceStorageBufferWrites=0,this.performanceStorageBufferWriteBytes=0,this.performanceSubmittedDrawCalls=0,this.performanceRejectedDrawCalls=0,this.performanceSVGADynamicUploadWrites=0,this.performanceSVGADynamicUploadBytes=0}getRuntimeDiagnosticsSnapshot(){return{submittedDrawCalls:this.runtimeSubmittedDrawCalls,rejectedDrawCalls:this.runtimeRejectedDrawCalls,webgpuUncapturedErrors:this.runtimeUncapturedErrors,backendLosses:this.runtimeBackendLosses}}setRuntimeDiagnosticHandler(A){this.runtimeDiagnosticHandler=A}setDeviceLostHandler(A){this.deviceLostHandler=A}recordSubmittedDraw(){this.currentDrawResult=ag,this.currentDrawRecorded=!0,this.performanceSubmittedDrawCalls++,this.runtimeSubmittedDrawCalls++}rejectSVGAFastPathDraw(){this.currentDrawRecorded=!0,this.currentDrawResult.submitted&&(this.currentDrawResult=$("invalid-command","WebGPU draw was rejected")),this.performanceRejectedDrawCalls++,this.runtimeRejectedDrawCalls++}writeBuffer(A,g,I,B,Q,E="generic"){const e=(ArrayBuffer.isView(I),I.byteLength),i=Number(B!=null?B:0),t=Number(Q!=null?Q:Math.max(0,e-i));this.performanceBufferWrites++,this.performanceBufferWriteBytes+=t,E==="storage"&&(this.performanceStorageBufferWrites++,this.performanceStorageBufferWriteBytes+=t),this.device.queue.writeBuffer(A,g,I,B,Q)}flushUniformShadow(){if(this.uniformShadowDirtyMax<=this.uniformShadowDirtyMin)return;const A=this.uniformShadow,g=this.uniformShadowDirtyMin,I=this.uniformShadowDirtyMax;this.writeBuffer(this.uniformBuffer,g,A.buffer,A.byteOffset+g,I-g),this.uniformShadowDirtyMin=1/0,this.uniformShadowDirtyMax=0}flushInstancedStorageShadow(){const A=this.instancedStorageShadowDirtyMax;if(A<=0)return;const g=this.instancedStorageShadow;this.writeBuffer(this.ensureInstancedStorageBuffer(),0,g.buffer,g.byteOffset,A,"storage"),this.instancedStorageShadowDirtyMax=0}writeInstancedStorageShadow(A,g,I){const B=A+I;if(this.instancedStorageShadow.byteLength<B){let Q=Math.max(256,this.instancedStorageShadow.byteLength);for(;Q<B;)Q=Math.min(Hg,Q*2);const E=new Uint8Array(Q);E.set(this.instancedStorageShadow),this.instancedStorageShadow=E}this.instancedStorageShadow.set(new Uint8Array(g.buffer,g.byteOffset,I),A),B>this.instancedStorageShadowDirtyMax&&(this.instancedStorageShadowDirtyMax=B)}writeUniformShadow(A,g,I){this.uniformShadow.set(new Uint8Array(g.buffer,g.byteOffset,I),A),A<this.uniformShadowDirtyMin&&(this.uniformShadowDirtyMin=A);const B=A+I;B>this.uniformShadowDirtyMax&&(this.uniformShadowDirtyMax=B)}ensureInstancedProjection(A){if(A.length<16)return;if(this.instancedProjectionValid){let I=!0;for(let B=0;B<16;B++)if(this.instancedProjectionCache[B]!==A[B]){I=!1;break}if(I)return}const g=this.ensureInstancedProjectionBuffer();this.instancedProjectionCache.set(A.length===16?A:A.subarray(0,16)),this.instancedProjectionValid=!0,this.writeBuffer(g,0,A.buffer,A.byteOffset,64)}gpuBufferUsage(A){let g=GPUBufferUsage.COPY_DST;return A==="vertex"?g|=GPUBufferUsage.VERTEX:A==="index"?g|=GPUBufferUsage.INDEX:A==="storage"?g|=GPUBufferUsage.STORAGE:g|=GPUBufferUsage.UNIFORM,g}bufferSourceByteLength(A){return ArrayBuffer.isView(A),A.byteLength}mappedUploadView(A){if(A instanceof ArrayBuffer)return new Uint8Array(A);if(typeof SharedArrayBuffer!="undefined"&&A instanceof SharedArrayBuffer)return new Uint8Array(new Uint8Array(A));const g=A,I=new Uint8Array(g.buffer,g.byteOffset,g.byteLength);return typeof SharedArrayBuffer!="undefined"&&g.buffer instanceof SharedArrayBuffer?new Uint8Array(I):I}writeBufferSource(A,g,I){if(I instanceof ArrayBuffer){this.writeBuffer(A,g,I);return}if(typeof SharedArrayBuffer!="undefined"&&I instanceof SharedArrayBuffer){this.writeBuffer(A,g,new Uint8Array(new Uint8Array(I)));return}const B=I;if(typeof SharedArrayBuffer!="undefined"&&B.buffer instanceof SharedArrayBuffer){this.writeBuffer(A,g,new Uint8Array(new Uint8Array(B.buffer,B.byteOffset,B.byteLength)));return}this.writeBuffer(A,g,B.buffer,B.byteOffset,B.byteLength)}createSVGAFrameTable(A,g){var I,B;const Q=this.mappedUploadView(A);if(Q.byteLength<BA.SVGA_FRAME_TABLE_ROW_BYTES||Q.byteLength%BA.SVGA_FRAME_TABLE_ROW_BYTES!==0)throw new RangeError(`SVGA frame table byte length must be a positive multiple of ${BA.SVGA_FRAME_TABLE_ROW_BYTES}, got ${Q.byteLength}`);const E=Math.floor(g.spriteCount),e=Math.floor(g.frameCount),i=E*e;if(!Number.isSafeInteger(E)||!Number.isSafeInteger(e)||E<1||e<1||!Number.isSafeInteger(i)||i*BA.SVGA_FRAME_TABLE_ROW_BYTES!==Q.byteLength)throw new RangeError(`SVGA frame table dimensions do not match byte length: ${E}x${e}, ${Q.byteLength} bytes`);const t=(I=g.spriteMetadata)!=null?I:g.metadata,a=g.hybridSpriteMetadata;let o=null;if(t){const w=E*4,D=E*NI;if(t.length===w){o=new Float32Array(D);for(let y=0;y<E;y++){const R=y*4,F=y*NI;o.set(t.subarray(R,R+4),F),o[F+4]=y}}else{if(t.length!==D)throw new RangeError(`SVGA sprite metadata requires ${w} or ${D} floats, got ${t.length}`);o=t}}const s=(B=this.device.limits)==null?void 0:B.maxStorageBufferBindingSize;if(typeof s=="number"&&Number.isFinite(s)&&(Q.byteLength>s||o&&o.byteLength>s||a&&a.byteLength>s))throw new RangeError(`SVGA frame table exceeds maxStorageBufferBindingSize=${s}; use CPU/hybrid fallback`);const n=this.createBuffer(Q,"storage");let r,c;try{if(r=o?this.createBuffer(o,"storage"):void 0,a){if(a.length<ZI||a.length%ZI!==0)throw new RangeError("SVGA Hybrid sprite metadata must contain complete 12-float rows");c=this.createBuffer(a,"storage")}}catch(w){throw c&&this.deleteBuffer(c),r&&this.deleteBuffer(r),this.deleteBuffer(n),w}const h=g.atlasPageCount,l=Number.isFinite(h)&&h>0?Math.floor(h):1;return{backend:"webgpu",kind:"webgpu-buffer",buffer:n,...r?{spriteMetadataBuffer:r}:{},...c?{hybridSpriteMetadataBuffer:c}:{},spriteCount:E,frameCount:e,atlasPageCount:l,strideFloats:tE,byteLength:Q.byteLength}}deleteSVGAFrameTable(A){var g;A.backend==="webgpu"&&(A.spriteMetadataBuffer&&A.spriteMetadataBuffer.id!==A.buffer.id&&this.deleteBuffer(A.spriteMetadataBuffer),A.hybridSpriteMetadataBuffer&&A.hybridSpriteMetadataBuffer.id!==A.buffer.id&&A.hybridSpriteMetadataBuffer.id!==((g=A.spriteMetadataBuffer)==null?void 0:g.id)&&this.deleteBuffer(A.hybridSpriteMetadataBuffer),this.deleteBuffer(A.buffer))}createBuffer(A,g){const I=this.mappedUploadView(A),B=this.device.createBuffer({size:Math.max(I.byteLength,4),usage:this.gpuBufferUsage(g),mappedAtCreation:!0});new Uint8Array(B.getMappedRange()).set(I),B.unmap();const Q=this.nextId++;return this.buffers.set(Q,{buffer:B,usage:g}),{id:Q,usage:g}}updateBuffer(A,g,I=0){const B=this.buffers.get(A.id);if(!B)return;const Q=Math.max(0,Math.floor(I)),E=this.bufferSourceByteLength(g),e=Math.max(4,Q+E);e>B.buffer.size&&(B.buffer.destroy(),B.buffer=this.device.createBuffer({size:e,usage:this.gpuBufferUsage(B.usage)}),B.usage==="vertex"&&this.lastVertexBufferId===A.id&&(this.lastVertexBufferId=-1),B.usage==="index"&&this.lastIndexBufferId===A.id&&(this.lastIndexBufferId=-1)),this.writeBufferSource(B.buffer,Q,g)}deleteBuffer(A){const g=this.buffers.get(A.id);if(g){g.buffer.destroy(),this.buffers.delete(A.id),this.motionDataBindGroupCache.clear();for(const I of Array.from(this.svgaFrameTableDataBindGroupCache.keys()))I.split(":").includes(String(A.id))&&this.svgaFrameTableDataBindGroupCache.delete(I);for(const I of Array.from(this.particleDataBindGroupCache.keys()))I.split(":").includes(String(A.id))&&this.particleDataBindGroupCache.delete(I)}}copyHtmlVideoToTextureDirect(A,g,I,B){if(this.videoElementPreferCanvasBridge)return!1;try{return this.device.queue.copyExternalImageToTexture({source:B,flipY:!0},{texture:A},[g,I]),!0}catch(Q){return this.videoElementPreferCanvasBridge=!0,console.debug("[WebGPU] copyExternalImageToTexture(<video>) failed; using canvas bridge.",Q),!1}}copyVideoFrameToTextureDirect(A,g,I,B){if(this.videoFramePreferCanvasBridge)return!1;try{return this.device.queue.copyExternalImageToTexture({source:B,flipY:!0},{texture:A},[g,I]),!0}catch(Q){return this.videoFramePreferCanvasBridge=!0,console.debug("[WebGPU] copyExternalImageToTexture(VideoFrame) failed; using canvas bridge.",Q),!1}}drawVideoLikeSourceToTexture(A,g,I,B){this.videoUploadCanvas||(this.videoUploadCanvas=document.createElement("canvas"),this.videoUploadCtx=this.videoUploadCanvas.getContext("2d"));const Q=this.videoUploadCanvas,E=this.videoUploadCtx;E&&((Q.width!==g||Q.height!==I)&&(Q.width=g,Q.height=I),E.drawImage(B,0,0,g,I),this.device.queue.copyExternalImageToTexture({source:Q,flipY:!0},{texture:A},[g,I]))}copyImageSourceToTexture(A,g,I,B,Q=!1){if(typeof VideoFrame!="undefined"&&B instanceof VideoFrame){const E=B,e=E.displayWidth||E.codedWidth,i=E.displayHeight||E.codedHeight;if(!e||!i||!g||!I||this.copyVideoFrameToTextureDirect(A,g,I,E))return;this.drawVideoLikeSourceToTexture(A,g,I,E);return}if(B instanceof HTMLVideoElement){const E=B,e=E.videoWidth,i=E.videoHeight;if(E.readyState<HTMLMediaElement.HAVE_CURRENT_DATA||!e||!i||!g||!I)return;if(E.readyState<HTMLMediaElement.HAVE_ENOUGH_DATA){this.drawVideoLikeSourceToTexture(A,g,I,E);return}if(this.copyHtmlVideoToTextureDirect(A,g,I,E))return;this.drawVideoLikeSourceToTexture(A,g,I,E);return}this.device.queue.copyExternalImageToTexture({source:B},{texture:A,premultipliedAlpha:Q},[g,I])}createTexture(A,g){var I,B;const Q=(I=g.width)!=null?I:1,E=(B=g.height)!=null?B:1,e=this.device.createTexture({size:[Q,E],format:"rgba8unorm",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.RENDER_ATTACHMENT});if(A instanceof ArrayBuffer){const t=Q*4,a=Math.ceil(t/256)*256;if(a===t||E===1)this.device.queue.writeTexture({texture:e},A,{bytesPerRow:t},[Q,E]);else{const o=new Uint8Array(A),s=new Uint8Array(a*E);for(let n=0;n<E;n++)s.set(o.subarray(n*t,(n+1)*t),n*a);this.device.queue.writeTexture({texture:e},s,{bytesPerRow:a},[Q,E])}}else this.copyImageSourceToTexture(e,Q,E,A,g.premultiplyAlpha===!0);const i=this.nextId++;return this.textures.set(i,{texture:e,view:e.createView(),width:Q,height:E}),{id:i,width:Q,height:E}}createEmptyTexture(A,g,I={}){const B=Math.max(1,Math.floor(A)),Q=Math.max(1,Math.floor(g)),E=this.device.createTexture({size:[B,Q],format:"rgba8unorm",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.RENDER_ATTACHMENT}),e=this.nextId++;return this.textures.set(e,{texture:E,view:E.createView(),width:B,height:Q}),{id:e,width:B,height:Q}}updateTexture(A,g){const I=this.textures.get(A.id);I&&this.copyImageSourceToTexture(I.texture,I.width,I.height,g)}updateTextureRegion(A,g,I,B,Q,E){const e=this.textures.get(A.id);if(!e)return;const i={texture:e.texture,origin:{x:Math.floor(I),y:Math.floor(B)}};if(typeof VideoFrame!="undefined"&&g instanceof VideoFrame){const s=g,n=s.displayWidth||s.codedWidth,r=s.displayHeight||s.codedHeight;if(!n||!r)return;const c=Q!=null?Q:n,h=E!=null?E:r;if(c!==n||h!==r){this.drawVideoLikeSourceToTextureRegion(e.texture,c,h,s,i.origin.x,i.origin.y);return}if(this.copyVideoFrameToTextureRegionDirect(e.texture,n,r,s,i.origin.x,i.origin.y))return;this.drawVideoLikeSourceToTextureRegion(e.texture,n,r,s,i.origin.x,i.origin.y);return}if(g instanceof HTMLVideoElement){const s=g,n=s.videoWidth,r=s.videoHeight;if(s.readyState<HTMLMediaElement.HAVE_CURRENT_DATA||!n||!r)return;const c=Q!=null?Q:n,h=E!=null?E:r;if(c!==n||h!==r){this.drawVideoLikeSourceToTextureRegion(e.texture,c,h,s,i.origin.x,i.origin.y);return}if(s.readyState<HTMLMediaElement.HAVE_ENOUGH_DATA){this.drawVideoLikeSourceToTextureRegion(e.texture,n,r,s,i.origin.x,i.origin.y);return}if(this.copyHtmlVideoToTextureRegionDirect(e.texture,n,r,s,i.origin.x,i.origin.y))return;this.drawVideoLikeSourceToTextureRegion(e.texture,n,r,s,i.origin.x,i.origin.y);return}const t=g,a=Q!=null?Q:t.width,o=E!=null?E:t.height;if(a!==t.width||o!==t.height){this.drawVideoLikeSourceToTextureRegion(e.texture,a,o,t,i.origin.x,i.origin.y);return}this.device.queue.copyExternalImageToTexture({source:t},i,[t.width,t.height])}copyHtmlVideoToTextureRegionDirect(A,g,I,B,Q,E){if(this.videoElementPreferCanvasBridge)return!1;try{return this.device.queue.copyExternalImageToTexture({source:B,flipY:!0},{texture:A,origin:{x:Q,y:E}},[g,I]),!0}catch(e){return this.videoElementPreferCanvasBridge=!0,console.debug("[WebGPU] copyExternalImageToTexture(<video> region) failed; using canvas bridge.",e),!1}}copyVideoFrameToTextureRegionDirect(A,g,I,B,Q,E){if(this.videoFramePreferCanvasBridge)return!1;try{return this.device.queue.copyExternalImageToTexture({source:B,flipY:!0},{texture:A,origin:{x:Q,y:E}},[g,I]),!0}catch(e){return this.videoFramePreferCanvasBridge=!0,console.debug("[WebGPU] copyExternalImageToTexture(VideoFrame region) failed; using canvas bridge.",e),!1}}drawVideoLikeSourceToTextureRegion(A,g,I,B,Q,E){this.videoUploadCanvas||(this.videoUploadCanvas=document.createElement("canvas"),this.videoUploadCtx=this.videoUploadCanvas.getContext("2d"));const e=this.videoUploadCanvas,i=this.videoUploadCtx;i&&((e.width!==g||e.height!==I)&&(e.width=g,e.height=I),i.drawImage(B,0,0,g,I),this.device.queue.copyExternalImageToTexture({source:e,flipY:!0},{texture:A,origin:{x:Q,y:E}},[g,I]))}deleteTexture(A){const g=this.textures.get(A.id);if(g){g.texture.destroy(),this.textures.delete(A.id),this.texturedBindGroupCache.delete(A.id),this.dualTexturedBindGroupCache.delete(A.id);for(const[I,B]of this.dualTexturedBindGroupCache)B.delete(A.id),B.size===0&&this.dualTexturedBindGroupCache.delete(I);this.instancedTextureBindGroupCache.delete(A.id);for(const I of Array.from(this.particleDataBindGroupCache.keys()))I.endsWith(`:${A.id}`)&&this.particleDataBindGroupCache.delete(I)}}draw(A){const g=A.shader;if(this.currentDrawResult=$("invalid-command",`WebGPU rejected ${g}`),this.currentDrawRecorded=!1,this.deviceLost)return this.currentDrawResult=$("backend-lost","WebGPU device is lost"),this.rejectSVGAFastPathDraw(),this.currentDrawResult;if(!this.passEncoder)return this.rejectSVGAFastPathDraw(),this.currentDrawResult=$("invalid-command","WebGPU frame is not active"),this.currentDrawResult;if((A.stencil!=null&&A.stencil!=="none"||g==="clip-mask"||g==="clip-mask-instanced"||g==="svga-frame-table-clip-mask")&&!this.frameUsesStencil)return this.rejectSVGAFastPathDraw(),this.currentDrawResult=$("invalid-command",`WebGPU ${g} requires a depth-stencil attachment in the active frame`),this.currentDrawResult;try{this.drawInternal(A)}catch(B){return this.currentDrawResult=$("submission-error",this.errorMessage(B)),this.currentDrawRecorded||this.rejectSVGAFastPathDraw(),this.currentDrawResult}return this.currentDrawRecorded||this.rejectSVGAFastPathDraw(),this.currentDrawResult}drawInternal(A){var g,I,B,Q,E,e,i;const t=A.shader;if(t===IQ||t==="svga-timeline-instanced-premul"||t==="svga-frame-table-shape-premul"||t==="svga-frame-table-clip-mask"){this.drawSVGAFrameTableInstanced(A);return}if(A.shader==="svga-instanced-premul"){this.drawInstancedSvga(A);return}if(A.shader==="svga-motion-instanced-premul"){this.drawMotionInstancedSvga(A);return}if(A.shader==="clip-mask-instanced"){this.drawInstancedClipMask(A);return}if(A.shader==="alpha-video-instanced"){this.drawInstancedAlpha(A);return}if(A.shader==="vap-instanced"){this.drawInstancedVap(A);return}if(A.shader==="particle-instanced"||A.shader==="particle-sprite-instanced"){this.drawInstancedParticles(A);return}const a=(g=A.stencil)!=null?g:"none",o=A.shader==="clip-mask"||a==="clear"?"clip-mask:write":`${A.shader}:${a==="none"&&this.frameUsesStencil?"pass":a}`,s=this.pipelines.get(o);if(!s)return;const n=this.passEncoder,r=s.pipeline;this.lastDrawPipeline!==r&&(n.setPipeline(r),this.lastDrawPipeline=r,this.lastInstancedTextureBindGroup=null);let c=0;a==="clear"?c=0:(a==="write"||A.shader==="clip-mask"||a==="test")&&(c=1),this.frameUsesStencil&&this.lastStencilRef!==c&&(n.setStencilReference(c),this.lastStencilRef=c);const h=this.uniformSlotIndex++;if(h>=this.maxUniformSlots){console.warn("[WebGPU] uniform slot overflow; increase maxUniformSlots");return}const l=h*this.uniformSlotStride,w=A.uniforms.u_projection;if(s.textureCount>0){const d=A.uniforms.u_transform,f=d instanceof Float32Array&&d.length>=16?d:gQ,u=A.uniforms.u_atlasRemap,G=u instanceof Float32Array&&u.length>=4?u:ji,S=typeof A.uniforms.u_opacity=="number"?A.uniforms.u_opacity:1,M=typeof A.uniforms.u_rgbPremultiplied=="number"?A.uniforms.u_rgbPremultiplied:1;if(w instanceof Float32Array&&w.length>=16){const N=this.uniformScratch160;N.set(w.length===16?w:w.subarray(0,16),0),N.set(f.length===16?f:f.subarray(0,16),16),N.set(G.length===4?G:G.subarray(0,4),32),N[36]=S,N[37]=M,N[38]=0,N[39]=0,this.writeUniformShadow(l,N,160)}else{this.writeUniformShadow(l+64,f,64),this.writeUniformShadow(l+128,G,16);const N=this.uniformOpacityScratch;N[0]=S,N[1]=M,N[2]=0,N[3]=0,this.writeUniformShadow(l+144,N,N.byteLength)}}else if(w instanceof Float32Array&&w.length>=16){const d=A.uniforms.u_transform,f=d instanceof Float32Array&&d.length>=16?d:gQ,u=this.uniformScratch128;u.set(w.length===16?w:w.subarray(0,16),0),u.set(f.length===16?f:f.subarray(0,16),16),this.writeUniformShadow(l,u,128)}if(s.textureCount===1){const d=A.textures.length>0?A.textures[0]:null,f=d?this.textures.get(d.id):null,u=(I=f==null?void 0:f.view)!=null?I:this.dummyTextureView,G=(B=d==null?void 0:d.id)!=null?B:0;let S=this.texturedBindGroupCache.get(G);S||(S=this.device.createBindGroup({layout:this.texturedBindGroupLayout,entries:[{binding:0,resource:{buffer:this.uniformBuffer,offset:0,size:160}},{binding:1,resource:u},{binding:2,resource:this.sampler}]}),this.texturedBindGroupCache.set(G,S)),n.setBindGroup(0,S,[l])}else if(s.textureCount===2){const d=A.textures[0],f=A.textures[1],u=d?this.textures.get(d.id):null,G=f?this.textures.get(f.id):null,S=(Q=d==null?void 0:d.id)!=null?Q:0,M=(E=f==null?void 0:f.id)!=null?E:0;let N=this.dualTexturedBindGroupCache.get(S);N||(N=new Map,this.dualTexturedBindGroupCache.set(S,N));let U=N.get(M);U||(U=this.device.createBindGroup({layout:this.dualTexturedBindGroupLayout,entries:[{binding:0,resource:{buffer:this.uniformBuffer,offset:0,size:160}},{binding:1,resource:(e=u==null?void 0:u.view)!=null?e:this.dummyTextureView},{binding:2,resource:(i=G==null?void 0:G.view)!=null?i:this.dummyTextureView},{binding:3,resource:this.sampler}]}),N.set(M,U)),n.setBindGroup(0,U,[l])}else s.uniformOnlyBindGroup||(s.uniformOnlyBindGroup=this.device.createBindGroup({layout:s.bindGroupLayout,entries:[{binding:0,resource:{buffer:this.uniformBuffer,offset:0,size:128}}]})),n.setBindGroup(0,s.uniformOnlyBindGroup,[l]);const D=this.buffers.get(A.vertexBuffer.id),y=this.buffers.get(A.indexBuffer.id);if(!D||!y)return;const R=A.vertexBuffer.id,F=A.indexBuffer.id;this.lastVertexBufferId!==R&&(n.setVertexBuffer(0,D.buffer),this.lastVertexBufferId=R),this.lastIndexBufferId!==F&&(n.setIndexBuffer(y.buffer,"uint32"),this.lastIndexBufferId=F),n.drawIndexed(A.indexCount),this.recordSubmittedDraw()}drawInstancedSvga(A){var g,I,B;const Q=this.passEncoder,E=(g=A.instanceCount)!=null?g:0,e=A.instanceData,i=BA.SVGA_INSTANCED_STRIDE/4;if(E<1||!e||e.length<E*i)return;if(E>BA.SVGA_INSTANCED_MAX){console.warn("[WebGPU] svga-instanced-premul: instanceCount exceeds max",E);return}const t=A.stencil==="test"?"test":this.frameUsesStencil?"pass":"none",a=this.ensureInstancedSvgaPipeline(t),o=a.pipeline;this.lastDrawPipeline!==o&&(Q.setPipeline(o),this.lastDrawPipeline=o,this.lastInstancedTextureBindGroup=null);const s=t==="test"?1:0;this.frameUsesStencil&&this.lastStencilRef!==s&&(Q.setStencilReference(s),this.lastStencilRef=s);const n=A.uniforms.u_projection;if(!(n instanceof Float32Array)||n.length<16)return;const r=this.buffers.get(A.vertexBuffer.id),c=this.buffers.get(A.indexBuffer.id);if(!r||!c)return;this.ensureInstancedProjection(n);const h=E*BA.SVGA_INSTANCED_STRIDE,l=this.instancedStorageRingOffset;if(l+h>Hg){console.warn("[WebGPU] instanced SVGA storage ring full");return}this.instancedStorageRingOffset+=iI(h,this.storageBindOffsetAlign),this.writeInstancedStorageShadow(l,e,h),this.performanceSVGADynamicUploadWrites++,this.performanceSVGADynamicUploadBytes+=h;const w=A.textures[0],D=w?this.textures.get(w.id):null,y=(I=D==null?void 0:D.view)!=null?I:this.dummyTextureView,R=(B=w==null?void 0:w.id)!=null?B:0;let F=this.instancedTextureBindGroupCache.get(R);F||(F=this.device.createBindGroup({layout:this.instancedTextureBindGroupLayout,entries:[{binding:0,resource:y},{binding:1,resource:this.sampler}]}),this.instancedTextureBindGroupCache.set(R,F)),Q.setBindGroup(0,this.ensureInstancedDataBindGroup(a,h),[l]),this.lastInstancedTextureBindGroup!==F&&(Q.setBindGroup(1,F),this.lastInstancedTextureBindGroup=F);const d=A.vertexBuffer.id,f=A.indexBuffer.id;this.lastVertexBufferId!==d&&(Q.setVertexBuffer(0,r.buffer),this.lastVertexBufferId=d),this.lastIndexBufferId!==f&&(Q.setIndexBuffer(c.buffer,"uint32"),this.lastIndexBufferId=f),Q.drawIndexed(A.indexCount,E,0,0,0),this.recordSubmittedDraw()}drawInstancedClipMask(A){var g;const I=this.passEncoder,B=(g=A.instanceCount)!=null?g:0,Q=A.instanceData;if(B<1||!Q||Q.length<B*6)return;if(B>BA.CLIP_MASK_INSTANCED_MAX){console.warn("[WebGPU] clip-mask-instanced: instanceCount exceeds max",B);return}const E=this.ensureInstancedClipMaskPipeline(),e=E.pipeline;this.lastDrawPipeline!==e&&(I.setPipeline(e),this.lastDrawPipeline=e,this.lastInstancedTextureBindGroup=null);const i=A.stencil==="clear",t=i?0:1;this.lastStencilRef!==t&&(I.setStencilReference(t),this.lastStencilRef=t);const a=A.uniforms.u_projection;if(!(a instanceof Float32Array)||a.length<16)return;const o=this.buffers.get(A.vertexBuffer.id),s=this.buffers.get(A.indexBuffer.id);if(!o||!s)return;this.ensureInstancedProjection(a);const n=B*BA.CLIP_MASK_INSTANCED_STRIDE;let r=this.lastClipMaskStorageBase;if(!i||r<0||this.lastClipMaskStorageByteLength!==n){if(r=this.instancedStorageRingOffset,r+n>Hg){console.warn("[WebGPU] instanced clip-mask storage ring full");return}this.instancedStorageRingOffset+=iI(n,this.storageBindOffsetAlign),this.writeInstancedStorageShadow(r,Q,n),this.lastClipMaskStorageBase=r,this.lastClipMaskStorageByteLength=n}I.setBindGroup(0,this.ensureInstancedDataBindGroup(E,n),[r]),this.lastVertexBufferId!==A.vertexBuffer.id&&(I.setVertexBuffer(0,o.buffer),this.lastVertexBufferId=A.vertexBuffer.id),this.lastIndexBufferId!==A.indexBuffer.id&&(I.setIndexBuffer(s.buffer,"uint32"),this.lastIndexBufferId=A.indexBuffer.id),I.drawIndexed(A.indexCount,B,0,0,0),this.recordSubmittedDraw(),i&&(this.lastClipMaskStorageBase=-1,this.lastClipMaskStorageByteLength=0)}drawSVGAFrameTableInstanced(A){var g,I,B,Q,E,e,i,t,a,o,s,n,r,c,h,l;const w=this.passEncoder,D=A.shader==="svga-frame-table-shape-premul"||A.shader==="svga-frame-table-clip-mask",y=Math.floor((g=A.instanceCount)!=null?g:D?1:0);if(y<1||y>BA.SVGA_FRAME_TABLE_INSTANCE_MAX){y>BA.SVGA_FRAME_TABLE_INSTANCE_MAX&&console.warn("[WebGPU] svga-frame-table-instanced-premul: sprite count exceeds max",y);return}const R=(I=A.svgaFrameTable)!=null?I:null,F=R&&typeof R=="object"&&"backend"in R?R:null,d=(F==null?void 0:F.backend)==="webgpu"?F.buffer:R&&"id"in R?R:(Q=(B=A.svgaFrameTableBuffer)!=null?B:A.frameTableBuffer)!=null?Q:null;if(!d||d.usage!=="storage")return;const f=this.buffers.get(d.id);if(!f||f.usage!=="storage"||f.buffer.size<BA.SVGA_FRAME_TABLE_ROW_BYTES||f.buffer.size%BA.SVGA_FRAME_TABLE_ROW_BYTES!==0)return;const u=(t=(i=(e=(E=A.svgaSpriteMetadataBuffer)!=null?E:A.svgaSpriteMetadata)!=null?e:A.spriteMetadataBuffer)!=null?i:(F==null?void 0:F.backend)==="webgpu"?F.spriteMetadataBuffer:null)!=null?t:null;if(!u||u.usage!=="storage")return;const G=this.buffers.get(u.id);if(!G||G.usage!=="storage")return;const S=Math.floor((a=A.svgaSpriteMetadataStrideFloats)!=null?a:NI),M=S*Float32Array.BYTES_PER_ELEMENT;if(S<NI||S%4!==0||G.buffer.size<M||G.buffer.size%M!==0)return;const N=(o=A.svgaFrameTableFrameCount)!=null?o:A.frameTableFrameCount,U=(s=A.svgaFrameTableSpriteCount)!=null?s:A.frameTableSpriteCount,p=Math.floor(Number.isFinite(N)?N:(F==null?void 0:F.backend)==="webgpu"?F.frameCount:0),k=Math.floor(f.buffer.size/BA.SVGA_FRAME_TABLE_ROW_BYTES),m=Math.floor(Number.isFinite(U)?U:(F==null?void 0:F.backend)==="webgpu"?F.spriteCount:p>0?k/p:0);if(p<1||m<1||p*m>k||!Number.isSafeInteger(p)||!Number.isSafeInteger(m))return;const H=A.instanceData,v=A.svgaFrameTableSlotStates,j=Math.floor((n=A.svgaFrameTableSlotStateCount)!=null?n:0),T=Math.floor((r=A.svgaFrameTableSpritesPerSlot)!=null?r:0),b=v!=null&&j>0&&T>0&&j*T===y&&v.length>=j*Ag,X=!b&&H!=null&&H.length>=y*Ag,Z=this.resolveSVGAFrameTableSlotUniform(A,y,p);if(!Z)return;let EA=Z.metadataBase;if(b)EA+=T;else if(X){let hA=-1;for(let oA=0;oA<y;oA++){const rA=Math.floor((c=H[oA*Ag+Ug.metadataBase])!=null?c:-1);rA>hA&&(hA=rA)}EA=hA+1}else EA+=y;if(Z.metadataBase<0||!D&&(EA<1||EA>G.buffer.size/M))return;const UA=b?v:H,cA=X||b?(b?j:y)*Ag*Float32Array.BYTES_PER_ELEMENT:Math.min(64,f.buffer.size),IA=(h=A.svgaFrameTableSlotStateUploadId)!=null?h:-1,Bg=b&&IA>=0&&IA===this.svgaCompactSlotStateUploadId&&cA===this.svgaCompactSlotStateByteLength,CA=Bg?this.svgaCompactSlotStateStorageBase:X||b?this.instancedStorageRingOffset:0;if((X||b)&&(CA<0||CA+cA>Hg))return;(X||b)&&!Bg&&(this.instancedStorageRingOffset+=iI(cA,this.storageBindOffsetAlign),this.writeInstancedStorageShadow(CA,UA,cA),this.performanceSVGADynamicUploadWrites++,this.performanceSVGADynamicUploadBytes+=cA,b&&IA>=0&&(this.svgaCompactSlotStateUploadId=IA,this.svgaCompactSlotStateStorageBase=CA,this.svgaCompactSlotStateByteLength=cA));const V=A.motionTrackIndex,YA=A.motionTrackBuffer,kA=A.motionTrackGlobalsBuffer,W=YA?this.buffers.get(YA.id):null,pA=kA?this.buffers.get(kA.id):null,LA=Math.floor((l=A.motionTrackSampleCount)!=null?l:0),og=Math.floor(V!=null?V:-1),PA=(og+1)*LA*8*4,KA=og>=0&&LA>=1&&(W==null?void 0:W.usage)==="storage"&&(pA==null?void 0:pA.usage)==="uniform"&&W.buffer.size>=PA&&pA.buffer.size>=32,vA=A.stencil==="test"?"test":A.stencil==="write"?"write":A.stencil==="clear"?"clear":this.frameUsesStencil?"pass":"none",nA=D?this.ensureSVGAFrameTableMeshPipeline(A.shader,vA):this.ensureSVGAFrameTablePipeline(vA==="test"?"test":vA==="pass"?"pass":"none");this.lastDrawPipeline!==nA.pipeline&&(w.setPipeline(nA.pipeline),this.lastDrawPipeline=nA.pipeline,this.lastInstancedTextureBindGroup=null);const J=vA==="test"||vA==="write"?1:0;this.frameUsesStencil&&this.lastStencilRef!==J&&(w.setStencilReference(J),this.lastStencilRef=J);const eA=A.uniforms.u_projection;if(!(eA instanceof Float32Array)||eA.length<16)return;const Cg=this.buffers.get(A.vertexBuffer.id),AA=this.buffers.get(A.indexBuffer.id);if(!Cg||!AA)return;const DA=A.textures[0];if(!DA)return;const gA=this.textures.get(DA.id);if(!gA)return;const Jg=this.reserveSVGAFrameTableUniform(eA,Z,p,m,y,KA?og:null,b?2:X?1:0,T,S/4);if(Jg==null)return;const Lg=KA?W.buffer:f.buffer,Qg=KA?pA.buffer:this.uniformBuffer,dA=X||b?this.ensureInstancedStorageBuffer():f.buffer;if(dA.size<cA)return;const SA=b?"slots":X?"hybrid":"direct",GA=`${d.id}:${u.id}:${KA?YA.id:0}:${KA?kA.id:0}:${SA}:${cA}`;let iA=this.svgaFrameTableDataBindGroupCache.get(GA);iA||(iA=this.device.createBindGroup({layout:nA.bindGroupLayout,entries:[{binding:0,resource:{buffer:this.uniformBuffer,offset:0,size:this.uniformSlotStride}},{binding:1,resource:{buffer:f.buffer,offset:0,size:f.buffer.size}},{binding:2,resource:{buffer:G.buffer,offset:0,size:G.buffer.size}},{binding:3,resource:{buffer:Lg,offset:0,size:Lg.size}},{binding:4,resource:{buffer:Qg,offset:0,size:32}},{binding:5,resource:{buffer:dA,offset:0,size:cA}}]}),this.svgaFrameTableDataBindGroupCache.set(GA,iA)),w.setBindGroup(0,iA,[Jg,CA]);const tA=DA.id;let aA=this.instancedTextureBindGroupCache.get(tA);aA||(aA=this.device.createBindGroup({layout:this.instancedTextureBindGroupLayout,entries:[{binding:0,resource:gA.view},{binding:1,resource:this.sampler}]}),this.instancedTextureBindGroupCache.set(tA,aA)),w.setBindGroup(1,aA),this.lastVertexBufferId!==A.vertexBuffer.id&&(w.setVertexBuffer(0,Cg.buffer),this.lastVertexBufferId=A.vertexBuffer.id),this.lastIndexBufferId!==A.indexBuffer.id&&(w.setIndexBuffer(AA.buffer,"uint32"),this.lastIndexBufferId=A.indexBuffer.id),w.drawIndexed(A.indexCount,y,0,0,0),this.recordSubmittedDraw()}resolveSVGAFrameTableSlotUniform(A,g,I){var B,Q,E,e,i,t,a,o,s,n,r,c,h,l,w,D,y,R,F,d,f,u,G,S,M,N,U,p,k,m,H,v,j,T,b,X,Z,EA,UA,FA,cA,IA,Bg,CA,V,YA,kA,W,pA,LA,og,PA,KA,vA,nA;const J=(Q=(B=A.svgaFrameTableSlotState)!=null?B:A.svgaSlotState)!=null?Q:A.uniforms.u_svgaSlotState instanceof Float32Array?A.uniforms.u_svgaSlotState:A.uniforms.u_slotState instanceof Float32Array?A.uniforms.u_slotState:null,eA=A.uniforms.u_transform,Cg=A.uniforms.u_clipRect,AA=A.svgaFrameTableParentAffine,DA=A.svgaFrameTableParentTranslate,gA=A.svgaFrameTableClipRect,Jg=A.svgaFrameIndex!=null||A.svgaFrameTableFrameIndex!=null||A.frameTableFrameIndex!=null,Lg=A.svgaFrameTableOpacity!=null||typeof A.uniforms.u_opacity=="number",Qg=A.uniforms.u_projection;if(!(Qg instanceof Float32Array)||Qg.length<16)return null;let dA=1,SA=0,GA=0,iA=1,tA=0,aA=0,hA=(E=A.svgaFrameTableOpacity)!=null?E:typeof A.uniforms.u_opacity=="number"?A.uniforms.u_opacity:1,oA=(t=(i=(e=A.svgaFrameIndex)!=null?e:A.svgaFrameTableFrameIndex)!=null?i:A.frameTableFrameIndex)!=null?t:0,rA=0,uA=0,RA=this.canvas.width,TA=this.canvas.height,Eg=0,Xg=(a=A.svgaFrameTableAtlasPage)!=null?a:-1,jA=(c=(r=(n=(s=(o=A.svgaFrameTableMetadataBase)!=null?o:A.svgaFrameTableSpriteBase)!=null?s:A.frameTableSpriteBase)!=null?n:A.svgaSpriteMetadataBase)!=null?r:A.svgaSpriteBase)!=null?c:0;if(AA&&AA.length>=4)dA=(h=AA[0])!=null?h:dA,SA=(l=AA[1])!=null?l:SA,GA=(w=AA[2])!=null?w:GA,iA=(D=AA[3])!=null?D:iA,DA&&DA.length>=2&&(tA=(y=DA[0])!=null?y:tA,aA=(R=DA[1])!=null?R:aA),gA&&gA.length>=4&&(rA=(F=gA[0])!=null?F:rA,uA=(d=gA[1])!=null?d:uA,RA=(f=gA[2])!=null?f:RA,TA=(u=gA[3])!=null?u:TA,Eg=1);else if(J&&J.length>=13)dA=(G=J[0])!=null?G:dA,SA=(S=J[1])!=null?S:SA,GA=(M=J[2])!=null?M:GA,iA=(N=J[3])!=null?N:iA,tA=(U=J[4])!=null?U:tA,aA=(p=J[5])!=null?p:aA,Lg||(hA=(k=J[6])!=null?k:hA),Jg||(oA=(m=J[7])!=null?m:oA),rA=(H=J[8])!=null?H:rA,uA=(v=J[9])!=null?v:uA,RA=(j=J[10])!=null?j:RA,TA=(T=J[11])!=null?T:TA,Eg=((b=J[12])!=null?b:0)>.5?1:0,A.svgaFrameTableMetadataBase==null&&A.svgaFrameTableSpriteBase==null&&A.frameTableSpriteBase==null&&A.svgaSpriteMetadataBase==null&&A.svgaSpriteBase==null&&J.length>=14&&(jA=(X=J[13])!=null?X:jA);else if(eA instanceof Float32Array&&eA.length>=16){dA=(Z=eA[0])!=null?Z:dA,SA=(EA=eA[1])!=null?EA:SA,GA=(UA=eA[4])!=null?UA:GA,iA=(FA=eA[5])!=null?FA:iA,tA=(cA=eA[12])!=null?cA:tA,aA=(IA=eA[13])!=null?IA:aA;const eI=Cg instanceof Float32Array&&Cg.length>=4?Cg:gA;eI&&eI.length>=4&&(rA=(Bg=eI[0])!=null?Bg:rA,uA=(CA=eI[1])!=null?CA:uA,RA=(V=eI[2])!=null?V:RA,TA=(YA=eI[3])!=null?YA:TA,Eg=typeof A.uniforms.u_clipEnabled=="number"?A.uniforms.u_clipEnabled>.5?1:0:1)}return AA&&J&&J.length>=13&&(DA||(tA=(kA=J[4])!=null?kA:tA,aA=(W=J[5])!=null?W:aA),Lg||(hA=(pA=J[6])!=null?pA:hA),Jg||(oA=(LA=J[7])!=null?LA:oA),gA||(rA=(og=J[8])!=null?og:rA,uA=(PA=J[9])!=null?PA:uA,RA=(KA=J[10])!=null?KA:RA,TA=(vA=J[11])!=null?vA:TA,Eg=((nA=J[12])!=null?nA:0)>.5?1:0)),Number.isFinite(hA)||(hA=1),Number.isFinite(oA)||(oA=0),Number.isFinite(jA)||(jA=0),Number.isFinite(Xg)||(Xg=-1),oA=Math.max(0,Math.min(I-1,Math.floor(oA))),jA=Math.max(0,Math.floor(jA)),![dA,SA,GA,iA,tA,aA,hA].every(Number.isFinite)||g<1?null:{parentA:dA,parentB:SA,parentC:GA,parentD:iA,tx:tA,ty:aA,opacity:hA,frameIndex:oA,clipX0:rA,clipY0:uA,clipX1:RA,clipY1:TA,clipEnabled:Eg,metadataBase:jA,atlasPage:Math.max(-1,Math.floor(Xg))}}reserveSVGAFrameTableUniform(A,g,I,B,Q,E,e,i=0,t=2){if(!g)return null;const a=this.uniformSlotIndex++;if(a>=this.maxUniformSlots)return console.warn("[WebGPU] uniform slot overflow; increase maxUniformSlots"),null;const o=this.svgaFrameTableUniformScratch;o.fill(0),o.set(A.length===16?A:A.subarray(0,16),0),o[16]=g.parentA,o[17]=g.parentB,o[18]=g.parentC,o[19]=g.parentD,o[20]=g.tx,o[21]=g.ty,o[22]=g.opacity,o[23]=g.frameIndex,o[24]=g.clipX0,o[25]=g.clipY0,o[26]=g.clipX1,o[27]=g.clipY1;const s=this.svgaFrameTableUniformWords;s[28]=Math.max(0,Math.floor(g.metadataBase)),s[29]=Math.max(1,Math.floor(Q)),s[30]=(g.clipEnabled>.5?1:0)|(e===1?2:0)|(e===2?4:0),s[31]=E==null?0:Math.max(1,Math.floor(E)+1),s[32]=Math.max(1,Math.floor(I)),s[33]=Math.max(1,Math.floor(B)),s[34]=3,s[35]=g.atlasPage>=0?Math.floor(g.atlasPage):4294967295,s[36]=e===2?Math.max(1,Math.floor(i)):0,s[37]=Math.max(2,Math.floor(t)),s[38]=e;const n=a*this.uniformSlotStride;return this.writeUniformShadow(n,o,WB),n}drawMotionInstancedSvga(A){var g,I,B;const Q=this.passEncoder,E=(g=A.instanceCount)!=null?g:0,e=A.instanceData,i=A.motionTrackBuffer,t=A.motionTrackGlobalsBuffer;if(!e||!i||!t||E<1)return;const a=this.buffers.get(i.id),o=this.buffers.get(t.id),s=this.buffers.get(A.vertexBuffer.id),n=this.buffers.get(A.indexBuffer.id);if(!a||!o||!s||!n)return;const r=this.ensureMotionSvgaPipeline();this.lastDrawPipeline!==r.pipeline&&(Q.setPipeline(r.pipeline),this.lastDrawPipeline=r.pipeline,this.lastInstancedTextureBindGroup=null);const c=A.uniforms.u_projection;if(!(c instanceof Float32Array)||c.length<16)return;this.ensureInstancedProjection(c);const h=E*BA.SVGA_INSTANCED_STRIDE,l=this.instancedStorageRingOffset;if(l+h>Hg)return;this.instancedStorageRingOffset+=iI(h,this.storageBindOffsetAlign),this.writeInstancedStorageShadow(l,e,h),this.performanceSVGADynamicUploadWrites++,this.performanceSVGADynamicUploadBytes+=h;const w=`${h}:${i.id}:${t.id}:${this.frameUsesStencil?1:0}`;let D=this.motionDataBindGroupCache.get(w);D||(D=this.device.createBindGroup({layout:r.bindGroupLayout,entries:[{binding:0,resource:{buffer:this.ensureInstancedProjectionBuffer(),size:64}},{binding:1,resource:{buffer:this.ensureInstancedStorageBuffer(),offset:0,size:h}},{binding:2,resource:{buffer:a.buffer,size:a.buffer.size}},{binding:3,resource:{buffer:o.buffer,size:32}}]}),this.motionDataBindGroupCache.set(w,D)),Q.setBindGroup(0,D,[l]);const y=A.textures[0],R=y?this.textures.get(y.id):null,F=(I=y==null?void 0:y.id)!=null?I:0;let d=this.instancedTextureBindGroupCache.get(F);d||(d=this.device.createBindGroup({layout:this.instancedTextureBindGroupLayout,entries:[{binding:0,resource:(B=R==null?void 0:R.view)!=null?B:this.dummyTextureView},{binding:1,resource:this.sampler}]}),this.instancedTextureBindGroupCache.set(F,d)),Q.setBindGroup(1,d),Q.setVertexBuffer(0,s.buffer),Q.setIndexBuffer(n.buffer,"uint32"),this.lastVertexBufferId=A.vertexBuffer.id,this.lastIndexBufferId=A.indexBuffer.id,Q.drawIndexed(A.indexCount,E,0,0,0),this.recordSubmittedDraw()}drawInstancedParticles(A){var g,I,B,Q;const E=this.passEncoder,e=(g=A.instanceCount)!=null?g:0,i=A.instanceBuffer;if(!i||e<1||e>BA.PARTICLE_INSTANCED_MAX)return;const t=this.buffers.get(i.id),a=this.buffers.get(A.vertexBuffer.id),o=this.buffers.get(A.indexBuffer.id);if(!t||!a||!o)return;const s=(I=A.particleBlend)!=null?I:"additive",n=A.shader==="particle-sprite-instanced",r=n?this.ensureParticleSpritePipeline(s):this.ensureParticlePipeline(s);this.lastDrawPipeline!==r.pipeline&&(E.setPipeline(r.pipeline),this.lastDrawPipeline=r.pipeline,this.lastInstancedTextureBindGroup=null);const c=A.uniforms.u_projection;if(!(c instanceof Float32Array)||c.length<16)return;this.ensureInstancedProjection(c);const h=n&&(Q=(B=A.textures[0])==null?void 0:B.id)!=null?Q:0;if(n&&!this.textures.has(h))return;const l=`${n?"sprite-v2":"ballistic-v1"}:${this.frameUsesStencil?"pass":"none"}:${s}:${i.id}:${h}`;let w=this.particleDataBindGroupCache.get(l);if(w||(w=this.device.createBindGroup({layout:r.bindGroupLayout,entries:[{binding:0,resource:{buffer:this.ensureInstancedProjectionBuffer(),offset:0,size:64}},{binding:1,resource:{buffer:t.buffer,offset:0,size:t.buffer.size}}]}),this.particleDataBindGroupCache.set(l,w)),E.setBindGroup(0,w),n){const D=this.textures.get(h);let y=this.instancedTextureBindGroupCache.get(h);y||(y=this.device.createBindGroup({layout:this.instancedTextureBindGroupLayout,entries:[{binding:0,resource:D.view},{binding:1,resource:this.sampler}]}),this.instancedTextureBindGroupCache.set(h,y)),E.setBindGroup(1,y)}this.lastVertexBufferId!==A.vertexBuffer.id&&(E.setVertexBuffer(0,a.buffer),this.lastVertexBufferId=A.vertexBuffer.id),this.lastIndexBufferId!==A.indexBuffer.id&&(E.setIndexBuffer(o.buffer,"uint32"),this.lastIndexBufferId=A.indexBuffer.id),E.drawIndexed(A.indexCount,e,0,0,0),this.recordSubmittedDraw()}drawInstancedAlpha(A){var g,I,B;const Q=this.passEncoder,E=(g=A.instanceCount)!=null?g:0,e=A.instanceData;if(E<1||!e||e.length<E*12)return;if(E>BA.ALPHA_INSTANCED_MAX){console.warn("[WebGPU] alpha-video-instanced: instanceCount exceeds max",E);return}const t=this.ensureInstancedAlphaPipeline(),a=t.pipeline;this.lastDrawPipeline!==a&&(Q.setPipeline(a),this.lastDrawPipeline=a,this.lastInstancedTextureBindGroup=null),this.frameUsesStencil&&this.lastStencilRef!==0&&(Q.setStencilReference(0),this.lastStencilRef=0);const o=A.uniforms.u_projection;if(!(o instanceof Float32Array)||o.length<16)return;const s=this.buffers.get(A.vertexBuffer.id),n=this.buffers.get(A.indexBuffer.id);if(!s||!n)return;this.ensureInstancedProjection(o);const r=E*BA.ALPHA_INSTANCED_STRIDE,c=this.instancedStorageRingOffset;if(c+r>Hg){console.warn("[WebGPU] instanced alpha storage ring full");return}this.instancedStorageRingOffset+=iI(r,this.storageBindOffsetAlign),this.writeInstancedStorageShadow(c,e,r);const h=A.textures[0],l=h?this.textures.get(h.id):null,w=(I=l==null?void 0:l.view)!=null?I:this.dummyTextureView,D=(B=h==null?void 0:h.id)!=null?B:0;let y=this.instancedTextureBindGroupCache.get(D);y||(y=this.device.createBindGroup({layout:this.instancedTextureBindGroupLayout,entries:[{binding:0,resource:w},{binding:1,resource:this.sampler}]}),this.instancedTextureBindGroupCache.set(D,y)),Q.setBindGroup(0,this.ensureInstancedDataBindGroup(t,r),[c]),this.lastInstancedTextureBindGroup!==y&&(Q.setBindGroup(1,y),this.lastInstancedTextureBindGroup=y);const R=A.vertexBuffer.id,F=A.indexBuffer.id;this.lastVertexBufferId!==R&&(Q.setVertexBuffer(0,s.buffer),this.lastVertexBufferId=R),this.lastIndexBufferId!==F&&(Q.setIndexBuffer(n.buffer,"uint32"),this.lastIndexBufferId=F),Q.drawIndexed(A.indexCount,E,0,0,0),this.recordSubmittedDraw()}drawInstancedVap(A){var g,I,B;const Q=this.passEncoder,E=(g=A.instanceCount)!=null?g:0,e=A.instanceData;if(E<1||!e||e.length<E*32)return;if(E>BA.VAP_INSTANCED_MAX){console.warn("[WebGPU] vap-instanced: instanceCount exceeds max",E);return}const t=this.ensureInstancedVapPipeline(),a=t.pipeline;this.lastDrawPipeline!==a&&(Q.setPipeline(a),this.lastDrawPipeline=a,this.lastInstancedTextureBindGroup=null),this.frameUsesStencil&&this.lastStencilRef!==0&&(Q.setStencilReference(0),this.lastStencilRef=0);const o=A.uniforms.u_projection;if(!(o instanceof Float32Array)||o.length<16)return;const s=this.buffers.get(A.vertexBuffer.id),n=this.buffers.get(A.indexBuffer.id);if(!s||!n)return;this.ensureInstancedProjection(o);const r=E*BA.VAP_INSTANCED_STRIDE,c=this.instancedStorageRingOffset;if(c+r>Hg){console.warn("[WebGPU] instanced VAP storage ring full");return}this.instancedStorageRingOffset+=iI(r,this.storageBindOffsetAlign),this.writeInstancedStorageShadow(c,e,r);const h=A.textures[0],l=h?this.textures.get(h.id):null,w=(I=l==null?void 0:l.view)!=null?I:this.dummyTextureView,D=(B=h==null?void 0:h.id)!=null?B:0;let y=this.instancedTextureBindGroupCache.get(D);y||(y=this.device.createBindGroup({layout:this.instancedTextureBindGroupLayout,entries:[{binding:0,resource:w},{binding:1,resource:this.sampler}]}),this.instancedTextureBindGroupCache.set(D,y)),Q.setBindGroup(0,this.ensureInstancedDataBindGroup(t,r),[c]),this.lastInstancedTextureBindGroup!==y&&(Q.setBindGroup(1,y),this.lastInstancedTextureBindGroup=y);const R=A.vertexBuffer.id,F=A.indexBuffer.id;this.lastVertexBufferId!==R&&(Q.setVertexBuffer(0,s.buffer),this.lastVertexBufferId=R),this.lastIndexBufferId!==F&&(Q.setIndexBuffer(n.buffer,"uint32"),this.lastIndexBufferId=F),Q.drawIndexed(A.indexCount,E,0,0,0),this.recordSubmittedDraw()}clearStencil(){}setScissor(A,g,I,B){if(!this.passEncoder)return;const Q=this.canvas.width,E=this.canvas.height,e=Math.max(0,Math.min(Q,Math.floor(A))),i=Math.max(0,Math.min(E,Math.floor(g))),t=Math.max(e,Math.min(Q,Math.ceil(A+I))),a=Math.max(i,Math.min(E,Math.ceil(g+B)));this.passEncoder.setScissorRect(e,i,t-e,a-i)}resetScissor(){this.passEncoder&&this.passEncoder.setScissorRect(0,0,this.canvas.width,this.canvas.height)}destroy(){var A,g,I,B,Q,E,e;this.particleSpritePreparationEpoch++,this.particleSpritePreparations.clear(),this.deviceLostHandler=null,this.runtimeDiagnosticHandler=null,this.device&&(this.device.onuncapturederror=null);for(const[,i]of this.buffers)i.buffer.destroy();for(const[,i]of this.textures)i.texture.destroy();(A=this.uniformBuffer)==null||A.destroy(),(g=this.instancedProjectionBuffer)==null||g.destroy(),(I=this.instancedStorageBuffer)==null||I.destroy(),(B=this.depthStencilTexture)==null||B.destroy(),(Q=this.msaaColorTexture)==null||Q.destroy(),(E=this.dummyTexture)==null||E.destroy(),(e=this.device)==null||e.destroy(),this.buffers.clear(),this.textures.clear(),this.texturedBindGroupCache.clear(),this.dualTexturedBindGroupCache.clear(),this.instancedTextureBindGroupCache.clear(),this.particleDataBindGroupCache.clear(),this.motionDataBindGroupCache.clear(),this.pipelines.clear()}};Y(hg,"SVGA_INSTANCED_MAX",2048);Y(hg,"SVGA_INSTANCED_STRIDE",52);Y(hg,"SVGA_FRAME_TABLE_INSTANCE_MAX",2048);Y(hg,"SVGA_FRAME_TABLE_ROW_BYTES",tE*Float32Array.BYTES_PER_ELEMENT);Y(hg,"CLIP_MASK_INSTANCED_MAX",2048);Y(hg,"CLIP_MASK_INSTANCED_STRIDE",24);Y(hg,"ALPHA_INSTANCED_MAX",1024);Y(hg,"ALPHA_INSTANCED_STRIDE",48);Y(hg,"VAP_INSTANCED_MAX",1024);Y(hg,"VAP_INSTANCED_STRIDE",128);Y(hg,"PARTICLE_INSTANCED_MAX",8192);let aE=hg;function BQ(C,A,g){const I=C.createShader(A);if(!I)throw new Error("Failed to create shader");if(C.shaderSource(I,g),C.compileShader(I),!C.getShaderParameter(I,C.COMPILE_STATUS)){const B=C.getShaderInfoLog(I);throw C.deleteShader(I),new Error(`Shader compile failed: ${B}`)}return I}function WA(C,A,g){const I=BQ(C,C.VERTEX_SHADER,A),B=BQ(C,C.FRAGMENT_SHADER,g),Q=C.createProgram();if(!Q)throw C.deleteShader(I),C.deleteShader(B),new Error("Failed to create program");if(C.attachShader(Q,I),C.attachShader(Q,B),C.linkProgram(Q),!C.getProgramParameter(Q,C.LINK_STATUS)){const E=C.getProgramInfoLog(Q);throw C.deleteProgram(Q),C.deleteShader(I),C.deleteShader(B),new Error(`Program link failed: ${E}`)}return C.deleteShader(I),C.deleteShader(B),Q}function CQ(C,A=C.LINEAR,g=C.CLAMP_TO_EDGE){const I=C.createTexture();if(!I)throw new Error("Failed to create texture");return C.bindTexture(C.TEXTURE_2D,I),C.texParameteri(C.TEXTURE_2D,C.TEXTURE_MIN_FILTER,A),C.texParameteri(C.TEXTURE_2D,C.TEXTURE_MAG_FILTER,A),C.texParameteri(C.TEXTURE_2D,C.TEXTURE_WRAP_S,g),C.texParameteri(C.TEXTURE_2D,C.TEXTURE_WRAP_T,g),I}function _i(C=typeof navigator!="undefined"?navigator:null){var A,g;const I=(A=C==null?void 0:C.userAgent)!=null?A:"";return/iPad|iPhone|iPod/i.test(I)||/Macintosh/i.test(I)&&((g=C==null?void 0:C.maxTouchPoints)!=null?g:0)>1}function XI(C){const A=C;return typeof A.displayWidth=="number"&&A.displayWidth>0?A.displayWidth:typeof A.codedWidth=="number"&&A.codedWidth>0?A.codedWidth:typeof A.videoWidth=="number"&&A.videoWidth>0?A.videoWidth:typeof A.naturalWidth=="number"&&A.naturalWidth>0?A.naturalWidth:typeof A.width=="number"&&A.width>0?A.width:0}function OI(C){const A=C;return typeof A.displayHeight=="number"&&A.displayHeight>0?A.displayHeight:typeof A.codedHeight=="number"&&A.codedHeight>0?A.codedHeight:typeof A.videoHeight=="number"&&A.videoHeight>0?A.videoHeight:typeof A.naturalHeight=="number"&&A.naturalHeight>0?A.naturalHeight:typeof A.height=="number"&&A.height>0?A.height:0}var $i=Object.defineProperty,At=(C,A,g)=>A in C?$i(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,x=(C,A,g)=>At(C,typeof A!="symbol"?A+"":A,g);const tB="svga-frame-table-instanced-premul",QQ=8,gt=new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]),It=new Float32Array([1,1]),fA=class bA{constructor(A,g=!0){x(this,"type","webgl2"),x(this,"supportsAtomicFrameReplay",!0),x(this,"canvas"),x(this,"maxTextureSize",4096),x(this,"antialias"),x(this,"gl"),x(this,"nextId",1),x(this,"buffers",new Map),x(this,"textures",new Map),x(this,"frameTables",new Map),x(this,"ownedFrameTableMetadataIds",new Set),x(this,"programs",new Map),x(this,"vertexArrays",new Map),x(this,"cachedDrawProgram",null),x(this,"cachedTex0Id",null),x(this,"cachedFrameTableId",null),x(this,"cachedFrameMetadataId",null),x(this,"cachedProjectionRef",null),x(this,"cachedProjectionShader",null),x(this,"videoUploadCanvas",null),x(this,"videoUploadCtx",null),x(this,"videoElementPreferCanvasBridge",_i()),x(this,"videoElementDirectUploadValidated",!1),x(this,"maxVertexTextureImageUnits",0),x(this,"svgaFrameTableSupported",!1),x(this,"instancedSvgaInstanceGLBuffer",null),x(this,"svgaSlotStateTexture",null),x(this,"svgaSlotStateTextureWidth",0),x(this,"svgaSlotStateTextureHeight",0),x(this,"svgaSlotStateUploadScratch",new Float32Array(0)),x(this,"svgaSlotStateUploadId",-1),x(this,"svgaTableInfoScratch",new Int32Array(4)),x(this,"svgaTableSizeScratch",new Int32Array(2)),x(this,"svgaMetadataSizeScratch",new Int32Array(2)),x(this,"instancedClipMaskGLBuffer",null),x(this,"instancedAlphaInstanceGLBuffer",null),x(this,"performanceBufferWrites",0),x(this,"performanceBufferWriteBytes",0),x(this,"performanceStorageBufferWrites",0),x(this,"performanceStorageBufferWriteBytes",0),x(this,"performanceSubmittedDrawCalls",0),x(this,"performanceRejectedDrawCalls",0),x(this,"performanceSVGADynamicUploadWrites",0),x(this,"performanceSVGADynamicUploadBytes",0),x(this,"runtimeSubmittedDrawCalls",0),x(this,"runtimeRejectedDrawCalls",0),x(this,"currentDrawResult",$("invalid-command","WebGL2 draw has not been submitted")),x(this,"currentDrawRecorded",!1),x(this,"runtimeBackendLosses",0),x(this,"runtimeDiagnosticHandler",null),x(this,"contextLost",!1),x(this,"deviceLostHandler",null),x(this,"onContextLost",I=>{var B,Q;I.preventDefault(),this.contextLost=!0,this.runtimeBackendLosses++,(B=this.runtimeDiagnosticHandler)==null||B.call(this,{type:"backend-lost"}),this.svgaFrameTableSupported=!1,this.buffers.clear(),this.textures.clear(),this.frameTables.clear(),this.programs.clear(),this.vertexArrays.clear(),this.ownedFrameTableMetadataIds.clear(),this.instancedSvgaInstanceGLBuffer=null,this.instancedClipMaskGLBuffer=null,this.instancedAlphaInstanceGLBuffer=null,this.instancedVapInstanceGLBuffer=null,this.svgaSlotStateTexture=null,(Q=this.deviceLostHandler)==null||Q.call(this)}),x(this,"instancedVapInstanceGLBuffer",null),this.canvas=A,this.antialias=g}async init(){const A=this.canvas.getContext("webgl2",{alpha:!0,premultipliedAlpha:!0,antialias:this.antialias,depth:!1,stencil:!0});if(!A)throw new Error("WebGL2 not available");this.gl=A,this.canvas.addEventListener("webglcontextlost",this.onContextLost),this.maxTextureSize=A.getParameter(A.MAX_TEXTURE_SIZE)||this.maxTextureSize,this.maxVertexTextureImageUnits=A.getParameter(A.MAX_VERTEX_TEXTURE_IMAGE_UNITS)||0,A.enable(A.BLEND),A.blendFunc(A.ONE,A.ONE_MINUS_SRC_ALPHA),A.clearColor(0,0,0,0),A.pixelStorei(A.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),A.pixelStorei(A.UNPACK_COLORSPACE_CONVERSION_WEBGL,A.NONE),this.initPrograms()}getPerformanceSnapshot(){return{bufferWrites:this.performanceBufferWrites,bufferWriteBytes:this.performanceBufferWriteBytes,storageBufferWrites:this.performanceStorageBufferWrites,storageBufferWriteBytes:this.performanceStorageBufferWriteBytes,submittedDrawCalls:this.performanceSubmittedDrawCalls,rejectedDrawCalls:this.performanceRejectedDrawCalls,svgaDynamicUploadWrites:this.performanceSVGADynamicUploadWrites,svgaDynamicUploadBytes:this.performanceSVGADynamicUploadBytes}}getRuntimeDiagnosticsSnapshot(){return{submittedDrawCalls:this.runtimeSubmittedDrawCalls,rejectedDrawCalls:this.runtimeRejectedDrawCalls,webgpuUncapturedErrors:0,backendLosses:this.runtimeBackendLosses}}setRuntimeDiagnosticHandler(A){this.runtimeDiagnosticHandler=A}resetPerformanceSnapshot(){this.performanceBufferWrites=0,this.performanceBufferWriteBytes=0,this.performanceStorageBufferWrites=0,this.performanceStorageBufferWriteBytes=0,this.performanceSubmittedDrawCalls=0,this.performanceRejectedDrawCalls=0,this.performanceSVGADynamicUploadWrites=0,this.performanceSVGADynamicUploadBytes=0}setDeviceLostHandler(A){this.deviceLostHandler=A}recordSubmittedDraw(){this.currentDrawResult=ag,this.currentDrawRecorded=!0,this.performanceSubmittedDrawCalls++,this.runtimeSubmittedDrawCalls++}rejectSVGAFastPathDraw(){this.currentDrawRecorded=!0,this.currentDrawResult.submitted&&(this.currentDrawResult=$("invalid-command","WebGL2 draw was rejected")),this.performanceRejectedDrawCalls++,this.runtimeRejectedDrawCalls++}initPrograms(){const A=this.gl,g=WA(A,P.svgaBatchPremul.vert,P.svgaBatchPremul.frag);this.programs.set("svga-batch-premul",this.makeProgramEntry(g,{transform:!0,opacity:!0})),this.bindProgramSamplers(g,{u_atlas:0});const I=WA(A,P.svgaInstancedPremul.vert,P.svgaInstancedPremul.frag);if(this.programs.set("svga-instanced-premul",this.makeProgramEntry(I)),this.bindProgramSamplers(I,{u_atlas:0}),this.maxVertexTextureImageUnits>=2&&this.maxTextureSize>=3)try{const n=WA(A,P.svgaFrameTableInstancedPremul.vert,P.svgaFrameTableInstancedPremul.frag);this.programs.set(tB,this.makeProgramEntry(n,{frameTable:!0,spriteMetadata:!0,tableInfo:!0,frameTableSize:!0,spriteMetadataSize:!0,spriteMetadataStride:!0,spriteBase:!0,frameIndex:!0,parentAffine:!0,parentTranslate:!0,slotOpacity:!0,atlasPage:!0,clipRect:!0,clipEnabled:!0,canvasHeight:!0,instanceStateEnabled:!0,slotStates:!0,slotStateSize:!0,compactSlotStateEnabled:!0,spritesPerSlot:!0})),this.bindProgramSamplers(n,{u_atlas:0,u_frameTable:1,u_spriteMetadata:2,u_slotStates:3});const r=WA(A,P.svgaFrameTableShape.vert,P.svgaFrameTableShape.frag);this.programs.set("svga-frame-table-shape-premul",this.makeProgramEntry(r,{frameTable:!0,tableInfo:!0,frameTableSize:!0,spriteBase:!0,frameIndex:!0,parentAffine:!0,parentTranslate:!0,slotOpacity:!0,clipRect:!0,clipEnabled:!0,canvasHeight:!0,slotStates:!0,slotStateSize:!0,compactSlotStateEnabled:!0})),this.bindProgramSamplers(r,{u_frameTable:0,u_slotStates:3});const c=WA(A,P.svgaFrameTableClipMask.vert,P.svgaFrameTableClipMask.frag);this.programs.set("svga-frame-table-clip-mask",this.makeProgramEntry(c,{frameTable:!0,tableInfo:!0,frameTableSize:!0,spriteBase:!0,frameIndex:!0,parentAffine:!0,parentTranslate:!0,clipRect:!0,clipEnabled:!0,canvasHeight:!0,slotStates:!0,slotStateSize:!0,compactSlotStateEnabled:!0})),this.bindProgramSamplers(c,{u_frameTable:0,u_slotStates:3}),this.svgaFrameTableSupported=!0}catch(n){this.svgaFrameTableSupported=!1,console.warn("[WebGL2] SVGA frame-table shader unavailable; using CPU reference path.",n)}const B=WA(A,P.vap.vert,P.vap.frag);this.programs.set("vap",this.makeProgramEntry(B,{transform:!0,atlasRemap:!0,opacity:!0,rgbPremultiplied:!0})),this.bindProgramSamplers(B,{u_video:0});const Q=WA(A,P.vapMixOverlay.vert,P.vapMixOverlay.frag);this.programs.set("vap-mix-overlay",this.makeProgramEntry(Q,{transform:!0,atlasRemap:!0,opacity:!0})),this.bindProgramSamplers(Q,{u_resource:0,u_video:1});const E=WA(A,P.alphaVideo.vert,P.alphaVideo.frag);this.programs.set("alpha-video",this.makeProgramEntry(E,{transform:!0,atlasRemap:!0,opacity:!0,rgbPremultiplied:!0})),this.bindProgramSamplers(E,{u_video:0});const e=WA(A,P.rgbaTextured.vert,P.rgbaTextured.frag);this.programs.set("rgba-textured",this.makeProgramEntry(e,{transform:!0,atlasRemap:!0,opacity:!0})),this.bindProgramSamplers(e,{u_video:0});const i=WA(A,P.alphaVideoInstanced.vert,P.alphaVideoInstanced.frag);this.programs.set("alpha-video-instanced",this.makeProgramEntry(i)),this.bindProgramSamplers(i,{u_video:0});const t=WA(A,P.vapInstanced.vert,P.vapInstanced.frag);this.programs.set("vap-instanced",this.makeProgramEntry(t)),this.bindProgramSamplers(t,{u_video:0});const a=WA(A,P.clipMask.vert,P.clipMask.frag);this.programs.set("clip-mask",this.makeProgramEntry(a,{transform:!0}));const o=WA(A,P.clipMaskInstanced.vert,P.clipMaskInstanced.frag);this.programs.set("clip-mask-instanced",this.makeProgramEntry(o));const s=WA(A,P.particleInstanced.vert,P.particleInstanced.frag);this.programs.set("particle-instanced",this.makeProgramEntry(s))}prepareParticleSpritePipelines(){if(this.contextLost)throw new Error("WebGL2 context is lost");try{this.ensureParticleSpriteProgram()}finally{this.cachedDrawProgram=null}}ensureParticleSpriteProgram(){let A=this.programs.get("particle-sprite-instanced");if(A)return A;const g=WA(this.gl,P.particleSpriteInstanced.vert,P.particleSpriteInstanced.frag);return A=this.makeProgramEntry(g,{particleSprite:!0}),this.programs.set("particle-sprite-instanced",A),this.bindProgramSamplers(g,{u_atlas:0}),A}makeProgramEntry(A,g={}){const I=this.gl;return{program:A,projLoc:I.getUniformLocation(A,"u_projection"),transformLoc:g.transform?I.getUniformLocation(A,"u_transform"):null,atlasRemapLoc:g.atlasRemap?I.getUniformLocation(A,"u_atlasRemap"):null,opacityLoc:g.opacity?I.getUniformLocation(A,"u_opacity"):null,rgbPremultipliedLoc:g.rgbPremultiplied?I.getUniformLocation(A,"u_rgbPremultiplied"):null,frameTableLoc:g.frameTable?I.getUniformLocation(A,"u_frameTable"):null,spriteMetadataLoc:g.spriteMetadata?I.getUniformLocation(A,"u_spriteMetadata"):null,tableInfoLoc:g.tableInfo?I.getUniformLocation(A,"u_tableInfo"):null,frameTableSizeLoc:g.frameTableSize?I.getUniformLocation(A,"u_frameTableSize"):null,spriteMetadataSizeLoc:g.spriteMetadataSize?I.getUniformLocation(A,"u_spriteMetadataSize"):null,spriteMetadataStrideLoc:g.spriteMetadataStride?I.getUniformLocation(A,"u_spriteMetadataTexelsPerRow"):null,spriteBaseLoc:g.spriteBase?I.getUniformLocation(A,"u_spriteBase"):null,frameIndexLoc:g.frameIndex?I.getUniformLocation(A,"u_frameIndex"):null,parentAffineLoc:g.parentAffine?I.getUniformLocation(A,"u_parentAffine"):null,parentTranslateLoc:g.parentTranslate?I.getUniformLocation(A,"u_parentTranslate"):null,slotOpacityLoc:g.slotOpacity?I.getUniformLocation(A,"u_slotOpacity"):null,atlasPageLoc:g.atlasPage?I.getUniformLocation(A,"u_atlasPage"):null,clipRectLoc:g.clipRect?I.getUniformLocation(A,"u_clipRect"):null,clipEnabledLoc:g.clipEnabled?I.getUniformLocation(A,"u_clipEnabled"):null,canvasHeightLoc:g.canvasHeight?I.getUniformLocation(A,"u_canvasHeight"):null,instanceStateEnabledLoc:g.instanceStateEnabled?I.getUniformLocation(A,"u_instanceStateEnabled"):null,slotStatesLoc:g.slotStates?I.getUniformLocation(A,"u_slotStates"):null,slotStateSizeLoc:g.slotStateSize?I.getUniformLocation(A,"u_slotStateSize"):null,compactSlotStateEnabledLoc:g.compactSlotStateEnabled?I.getUniformLocation(A,"u_compactSlotStateEnabled"):null,spritesPerSlotLoc:g.spritesPerSlot?I.getUniformLocation(A,"u_spritesPerSlot"):null,particleTimeLoc:g.particleSprite?I.getUniformLocation(A,"u_time"):null,particleGlobalAlphaLoc:g.particleSprite?I.getUniformLocation(A,"u_globalAlpha"):null,particleSizeEnvelopeLoc:g.particleSprite?I.getUniformLocation(A,"u_sizeEnvelope"):null,particleFadeModeLoc:g.particleSprite?I.getUniformLocation(A,"u_fadeMode"):null,particleCssScaleLoc:g.particleSprite?I.getUniformLocation(A,"u_cssScale"):null,lastOpacity:null,lastRgbPremultiplied:null}}applyIdentityTransform(A){A.transformLoc&&this.gl.uniformMatrix4fv(A.transformLoc,!1,gt)}bindProgramSamplers(A,g){const I=this.gl;I.useProgram(A);for(const B in g){const Q=I.getUniformLocation(A,B);Q&&I.uniform1i(Q,g[B])}}applyProjectionUniform(A,g,I){!A.projLoc||!(I instanceof Float32Array)||I.length<16||this.cachedProjectionShader===g&&this.cachedProjectionRef===I||(this.gl.uniformMatrix4fv(A.projLoc,!1,I),this.cachedProjectionShader=g,this.cachedProjectionRef=I)}applyDrawUniforms(A,g,I){const B=this.gl;if(this.applyProjectionUniform(A,g,I.uniforms.u_projection),A.transformLoc){const Q=I.uniforms.u_transform;Q instanceof Float32Array?B.uniformMatrix4fv(A.transformLoc,!1,Q):this.applyIdentityTransform(A)}if(A.atlasRemapLoc){const Q=I.uniforms.u_atlasRemap;Q instanceof Float32Array&&B.uniform4fv(A.atlasRemapLoc,Q)}if(A.opacityLoc){const Q=I.uniforms.u_opacity,E=typeof Q=="number"?Q:1;A.lastOpacity!==E&&(B.uniform1f(A.opacityLoc,E),A.lastOpacity=E)}if(A.rgbPremultipliedLoc){const Q=I.uniforms.u_rgbPremultiplied;typeof Q=="number"&&A.lastRgbPremultiplied!==Q&&(B.uniform1f(A.rgbPremultipliedLoc,Q),A.lastRgbPremultiplied=Q)}}beginFrame(A={}){const g=this.gl;if(this.contextLost)return $("backend-lost","WebGL2 context is lost");try{return g.viewport(0,0,this.canvas.width,this.canvas.height),g.colorMask(!0,!0,!0,!0),g.stencilMask(255),g.disable(g.STENCIL_TEST),g.disable(g.SCISSOR_TEST),g.clearColor(0,0,0,0),g.clearStencil(0),g.clear(g.COLOR_BUFFER_BIT|(A.stencil?g.STENCIL_BUFFER_BIT:0)),this.cachedDrawProgram=null,this.cachedTex0Id=null,this.cachedFrameTableId=null,this.cachedFrameMetadataId=null,this.cachedProjectionRef=null,this.cachedProjectionShader=null,this.svgaSlotStateUploadId=-1,ag}catch(I){return $("submission-error",this.errorMessage(I))}}endFrame(){if(this.contextLost)return $("backend-lost","WebGL2 context is lost");try{return this.gl.flush(),ag}catch(A){return $("submission-error",this.errorMessage(A))}}abortFrame(){const A=this.gl;if(this.contextLost)return $("backend-lost","WebGL2 context is lost");try{return A.colorMask(!0,!0,!0,!0),A.stencilMask(255),A.disable(A.STENCIL_TEST),A.disable(A.SCISSOR_TEST),A.clearColor(0,0,0,0),A.clearStencil(0),A.clear(A.COLOR_BUFFER_BIT|A.STENCIL_BUFFER_BIT),A.flush(),this.cachedDrawProgram=null,this.cachedTex0Id=null,this.cachedFrameTableId=null,this.cachedFrameMetadataId=null,this.cachedProjectionRef=null,this.cachedProjectionShader=null,this.svgaSlotStateUploadId=-1,ag}catch(g){return $("submission-error",this.errorMessage(g))}}errorMessage(A){return A instanceof Error?A.message:String(A)}getBufferSourceByteLength(A){return ArrayBuffer.isView(A),A.byteLength}createBuffer(A,g){const I=this.gl,B=I.createBuffer();if(!B)throw new Error("Failed to create buffer");I.bindVertexArray(null);const Q=g==="index"?I.ELEMENT_ARRAY_BUFFER:I.ARRAY_BUFFER;I.bindBuffer(Q,B),I.bufferData(Q,A,I.DYNAMIC_DRAW);const E=this.nextId++;return this.buffers.set(E,{buffer:B,usage:g,byteLength:this.getBufferSourceByteLength(A)}),{id:E,usage:g}}updateBuffer(A,g,I=0){const B=this.buffers.get(A.id);if(!B)return;const Q=this.gl;Q.bindVertexArray(null);const E=B.usage==="index"?Q.ELEMENT_ARRAY_BUFFER:Q.ARRAY_BUFFER;Q.bindBuffer(E,B.buffer);const e=this.getBufferSourceByteLength(g);I===0&&e<=B.byteLength?Q.bufferSubData(E,0,g):(Q.bufferData(E,g,Q.DYNAMIC_DRAW),B.byteLength=e)}deleteBuffer(A){const g=this.buffers.get(A.id);g&&(this.gl.bindVertexArray(null),this.deleteVertexArraysForBuffer(A.id),this.gl.deleteBuffer(g.buffer),this.buffers.delete(A.id))}uploadVideoFrameToTexture(A,g,I){const B=this.gl,Q=g.videoWidth,E=g.videoHeight;if(g.readyState<HTMLMediaElement.HAVE_CURRENT_DATA||Q<=0||E<=0)return!1;if(!this.videoElementPreferCanvasBridge){B.bindTexture(B.TEXTURE_2D,A),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,1);try{if(I?B.texImage2D(B.TEXTURE_2D,0,B.RGBA,B.RGBA,B.UNSIGNED_BYTE,g):B.texSubImage2D(B.TEXTURE_2D,0,0,0,B.RGBA,B.UNSIGNED_BYTE,g),!this.videoElementDirectUploadValidated){const t=B.getError();if(t!==B.NO_ERROR)throw new Error(`WebGL video upload error: 0x${t.toString(16)}`);this.videoElementDirectUploadValidated=!0}return!0}catch(t){this.videoElementPreferCanvasBridge=!0,console.debug("[WebGL2] direct HTMLVideo upload failed; using canvas bridge.",t)}finally{B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,0)}}this.videoUploadCanvas||(this.videoUploadCanvas=document.createElement("canvas"),this.videoUploadCtx=this.videoUploadCanvas.getContext("2d"));const e=this.videoUploadCanvas,i=this.videoUploadCtx;return i?((e.width!==Q||e.height!==E)&&(e.width=Q,e.height=E),i.drawImage(g,0,0,Q,E),B.bindTexture(B.TEXTURE_2D,A),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,1),I?B.texImage2D(B.TEXTURE_2D,0,B.RGBA,B.RGBA,B.UNSIGNED_BYTE,e):B.texSubImage2D(B.TEXTURE_2D,0,0,0,B.RGBA,B.UNSIGNED_BYTE,e),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,0),!0):!1}createTexture(A,g){var I,B;const Q=this.gl;Q.activeTexture(Q.TEXTURE0),this.cachedTex0Id=null;const E=g.filter==="nearest"?Q.NEAREST:Q.LINEAR,e=CQ(Q,E),i=g.premultiplyAlpha===!0;let t=(I=g.width)!=null?I:1,a=(B=g.height)!=null?B:1;if(A instanceof ArrayBuffer)Q.texImage2D(Q.TEXTURE_2D,0,Q.RGBA,t,a,0,Q.RGBA,Q.UNSIGNED_BYTE,new Uint8Array(A));else if(typeof VideoFrame!="undefined"&&A instanceof VideoFrame){const s=A;Q.bindTexture(Q.TEXTURE_2D,e),Q.pixelStorei(Q.UNPACK_FLIP_Y_WEBGL,1),Q.pixelStorei(Q.UNPACK_PREMULTIPLY_ALPHA_WEBGL,i?1:0),Q.texImage2D(Q.TEXTURE_2D,0,Q.RGBA,Q.RGBA,Q.UNSIGNED_BYTE,s),Q.pixelStorei(Q.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),Q.pixelStorei(Q.UNPACK_FLIP_Y_WEBGL,0),t=s.displayWidth||s.codedWidth||t,a=s.displayHeight||s.codedHeight||a}else if(A instanceof HTMLVideoElement)Q.bindTexture(Q.TEXTURE_2D,e),Q.pixelStorei(Q.UNPACK_PREMULTIPLY_ALPHA_WEBGL,i?1:0),this.uploadVideoFrameToTexture(e,A,!0),Q.pixelStorei(Q.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),t=A.videoWidth||t,a=A.videoHeight||a;else{const s=i,n=g.sourcePremultiplied===!0,r=s&&!n?1:0;Q.bindTexture(Q.TEXTURE_2D,e),Q.pixelStorei(Q.UNPACK_FLIP_Y_WEBGL,0),Q.pixelStorei(Q.UNPACK_PREMULTIPLY_ALPHA_WEBGL,r),Q.texImage2D(Q.TEXTURE_2D,0,Q.RGBA,Q.RGBA,Q.UNSIGNED_BYTE,A),Q.pixelStorei(Q.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),Q.pixelStorei(Q.UNPACK_FLIP_Y_WEBGL,0),"width"in A&&(t=A.width,a=A.height)}const o=this.nextId++;return this.textures.set(o,{texture:e,width:t,height:a}),{id:o,width:t,height:a}}canCreateSVGAFrameTable(){return this.svgaFrameTableSupported&&this.maxVertexTextureImageUnits>=2&&this.maxTextureSize>=3}assertSVGAFrameTableSupport(){if(!this.canCreateSVGAFrameTable())throw new Error(`WebGL2 SVGA frame table unsupported (vertexTextureUnits=${this.maxVertexTextureImageUnits}, maxTextureSize=${this.maxTextureSize}, shader=${this.svgaFrameTableSupported?"ready":"unavailable"})`)}createFloatTableTexture(A,g,I,B){const Q=this.gl,E=Math.floor(g),e=Math.floor(I);if(E<1||e<1||E>this.maxTextureSize||e>this.maxTextureSize)throw new RangeError(`[WebGL2] ${B} dimensions ${E}x${e} exceed MAX_TEXTURE_SIZE=${this.maxTextureSize}`);if(A.length!==E*e*4)throw new RangeError(`[WebGL2] ${B} data length ${A.length} does not match ${E}x${e} RGBA texels`);Q.activeTexture(Q.TEXTURE0),this.cachedTex0Id=null;const i=Q.createTexture();if(!i)throw new Error(`[WebGL2] failed to create ${B} texture`);Q.bindTexture(Q.TEXTURE_2D,i),Q.texParameteri(Q.TEXTURE_2D,Q.TEXTURE_MIN_FILTER,Q.NEAREST),Q.texParameteri(Q.TEXTURE_2D,Q.TEXTURE_MAG_FILTER,Q.NEAREST),Q.texParameteri(Q.TEXTURE_2D,Q.TEXTURE_WRAP_S,Q.CLAMP_TO_EDGE),Q.texParameteri(Q.TEXTURE_2D,Q.TEXTURE_WRAP_T,Q.CLAMP_TO_EDGE);const t=Q.getParameter(Q.UNPACK_ALIGNMENT);Q.pixelStorei(Q.UNPACK_ALIGNMENT,1);try{Q.texImage2D(Q.TEXTURE_2D,0,Q.RGBA32F,E,e,0,Q.RGBA,Q.FLOAT,A);const a=Q.getError();if(a!==Q.NO_ERROR)throw new Error(`GL error 0x${a.toString(16)} while uploading ${B}`)}catch(a){throw Q.deleteTexture(i),a}finally{Q.pixelStorei(Q.UNPACK_ALIGNMENT,t||4)}return{texture:i,width:E,height:e}}createLinearFloatTableTexture(A,g,I,B){const Q=Math.floor(g),E=Math.max(1,Math.floor(I));if(Q<1||A.length!==Q*4)throw new RangeError(`[WebGL2] ${B} requires ${Q*4} floats, got ${A.length}`);const e=this.maxTextureSize-this.maxTextureSize%E;if(e<E)throw new RangeError(`[WebGL2] ${B} cannot fit a ${E}-texel record in MAX_TEXTURE_SIZE=${this.maxTextureSize}`);const i=Math.max(E,Math.min(e,Q-Q%E||E)),t=Math.ceil(Q/i);if(t>this.maxTextureSize)throw new RangeError(`[WebGL2] ${B} dimensions ${i}x${t} exceed MAX_TEXTURE_SIZE=${this.maxTextureSize}`);const a=i*t===Q?A:new Float32Array(i*t*4);return a!==A&&a.set(A),this.createFloatTableTexture(a,i,t,B)}createSVGAFrameTableMetadata(A,g,I=QQ){this.assertSVGAFrameTableSupport();const B=Math.floor(g);if(B<1||!Number.isFinite(B))throw new RangeError(`[WebGL2] invalid SVGA sprite metadata count: ${g}`);const Q=Math.floor(I);if(Q<8||Q%4!==0)throw new RangeError(`[WebGL2] invalid SVGA metadata stride: ${I}`);const E=new Float32Array(B*Q);if(A.length===B*4)for(let t=0;t<B;t++){const a=t*4,o=t*Q;E.set(A.subarray(a,a+4),o),E[o+4]=t,E[o+5]=0}else if(A.length===E.length)E.set(A);else throw new RangeError(`[WebGL2] SVGA sprite metadata requires ${B*4} or ${E.length} floats, got ${A.length}`);const e=this.createLinearFloatTableTexture(E,B*(Q/4),Q/4,"SVGA sprite metadata"),i=this.nextId++;return this.textures.set(i,{texture:e.texture,width:e.width,height:e.height}),{id:i,width:e.width,height:e.height}}createSVGAFrameTable(A,g){var I,B,Q,E,e,i;this.assertSVGAFrameTableSupport();const t=Math.floor(g.spriteCount),a=Math.floor(g.frameCount);if(t<1||a<1||!Number.isFinite(t)||!Number.isFinite(a))throw new RangeError(`[WebGL2] invalid SVGA frame table dimensions ${t}x${a}`);const o=t*a;if(!Number.isSafeInteger(o)||A.length!==o*Wg)throw new RangeError(`[WebGL2] SVGA frame table requires ${o*Wg} floats, got ${A.length}`);const s=this.createLinearFloatTableTexture(A,o*3,3,"SVGA frame table"),n=this.nextId++,r={id:n,width:s.width,height:s.height};this.textures.set(n,{texture:s.texture,width:s.width,height:s.height});let c=g.metadataTexture,h;try{if(c&&!this.textures.has(c.id))throw new Error(`WebGL2 SVGA sprite metadata texture ${c.id} is not owned by this backend`);if(c=c!=null?c:((I=g.spriteMetadata)!=null?I:g.metadata)?this.createSVGAFrameTableMetadata((B=g.spriteMetadata)!=null?B:g.metadata,t):void 0,!g.metadataTexture&&c&&this.ownedFrameTableMetadataIds.add(c.id),g.hybridSpriteMetadata){const y=g.hybridSpriteMetadata.length/ZI;if(!Number.isSafeInteger(y)||y<1)throw new RangeError("SVGA Hybrid sprite metadata must contain complete 12-float rows");h=this.createSVGAFrameTableMetadata(g.hybridSpriteMetadata,y,ZI),this.ownedFrameTableMetadataIds.add(h.id)}}catch(y){this.gl.deleteTexture(s.texture),this.textures.delete(n);for(const R of[c,h]){if(!R||!this.ownedFrameTableMetadataIds.has(R.id))continue;const F=this.textures.get(R.id);F&&this.gl.deleteTexture(F.texture),this.textures.delete(R.id),this.ownedFrameTableMetadataIds.delete(R.id)}throw y}const l=g.atlasPageCount,w=Number.isFinite(l)&&l>0?Math.floor(l):1,D={backend:"webgl2",kind:"webgl2-texture",texture:r,textureWidth:s.width,textureHeight:s.height,spriteCount:t,frameCount:a,atlasPageCount:w,strideFloats:Wg,byteLength:A.byteLength,...c?{spriteMetadataTexture:c}:{},...h?{hybridSpriteMetadataTexture:h}:{}};return this.frameTables.set(n,{texture:s.texture,width:s.width,height:s.height,metadataTexture:c&&(E=(Q=this.textures.get(c.id))==null?void 0:Q.texture)!=null?E:null,metadataWidth:(e=c==null?void 0:c.width)!=null?e:0,metadataHeight:(i=c==null?void 0:c.height)!=null?i:0,metadataOwned:!g.metadataTexture&&!!c,binding:D}),D}deleteSVGAFrameTable(A){var g,I,B,Q,E;if(!A||A.backend!=="webgl2")return;const e=A.texture.id,i=this.frameTables.get(e);if(i){this.gl.deleteTexture(i.texture),this.textures.delete(e);const t=(g=i.binding.spriteMetadataTexture)==null?void 0:g.id;if(i.metadataOwned&&t!=null&&t!==e){const o=this.textures.get(t);o&&this.gl.deleteTexture(o.texture),this.textures.delete(t),this.ownedFrameTableMetadataIds.delete(t)}const a=(I=i.binding.hybridSpriteMetadataTexture)==null?void 0:I.id;if(a!=null&&a!==e){const o=this.textures.get(a);o&&this.gl.deleteTexture(o.texture),this.textures.delete(a),this.ownedFrameTableMetadataIds.delete(a)}this.frameTables.delete(e)}else{const t=this.textures.get(e);t&&(this.gl.deleteTexture(t.texture),this.textures.delete(e));const a=(B=A.spriteMetadataTexture)==null?void 0:B.id;if(a!=null&&this.ownedFrameTableMetadataIds.has(a)){const s=this.textures.get(a);s&&this.gl.deleteTexture(s.texture),this.textures.delete(a),this.ownedFrameTableMetadataIds.delete(a)}const o=(Q=A.hybridSpriteMetadataTexture)==null?void 0:Q.id;if(o!=null&&this.ownedFrameTableMetadataIds.has(o)){const s=this.textures.get(o);s&&this.gl.deleteTexture(s.texture),this.textures.delete(o),this.ownedFrameTableMetadataIds.delete(o)}}this.cachedFrameTableId===e&&(this.cachedFrameTableId=null),this.cachedFrameMetadataId===((E=A.spriteMetadataTexture)==null?void 0:E.id)&&(this.cachedFrameMetadataId=null)}createEmptyTexture(A,g,I={}){const B=this.gl;B.activeTexture(B.TEXTURE0),this.cachedTex0Id=null;const Q=I.filter==="nearest"?B.NEAREST:B.LINEAR,E=CQ(B,Q),e=Math.max(1,Math.floor(A)),i=Math.max(1,Math.floor(g));B.bindTexture(B.TEXTURE_2D,E),B.texImage2D(B.TEXTURE_2D,0,B.RGBA,e,i,0,B.RGBA,B.UNSIGNED_BYTE,null);const t=this.nextId++;return this.textures.set(t,{texture:E,width:e,height:i}),{id:t,width:e,height:i}}updateTexture(A,g){const I=this.textures.get(A.id);if(!I)return;if(this.gl.activeTexture(this.gl.TEXTURE0),this.cachedTex0Id=null,typeof VideoFrame!="undefined"&&g instanceof VideoFrame){const i=this.gl,t=XI(g),a=OI(g),o=t===I.width&&a===I.height;i.bindTexture(i.TEXTURE_2D,I.texture),i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,1),o?i.texSubImage2D(i.TEXTURE_2D,0,0,0,i.RGBA,i.UNSIGNED_BYTE,g):(i.texImage2D(i.TEXTURE_2D,0,i.RGBA,i.RGBA,i.UNSIGNED_BYTE,g),t>0&&a>0&&(I.width=t,I.height=a)),i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,0);return}if(g instanceof HTMLVideoElement){const i=g.videoWidth,t=g.videoHeight,a=i!==I.width||t!==I.height;this.uploadVideoFrameToTexture(I.texture,g,a)&&a&&(I.width=i,I.height=t);return}const B=this.gl,Q=XI(g),E=OI(g),e=Q===I.width&&E===I.height;B.bindTexture(B.TEXTURE_2D,I.texture),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,0),e?B.texSubImage2D(B.TEXTURE_2D,0,0,0,B.RGBA,B.UNSIGNED_BYTE,g):(B.texImage2D(B.TEXTURE_2D,0,B.RGBA,B.RGBA,B.UNSIGNED_BYTE,g),Q>0&&E>0&&(I.width=Q,I.height=E)),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,0)}updateTextureRegion(A,g,I,B,Q,E){const e=this.textures.get(A.id);if(!e)return;const i=this.gl;i.activeTexture(i.TEXTURE0),this.cachedTex0Id=null,i.bindTexture(i.TEXTURE_2D,e.texture);let t,a;if(typeof VideoFrame!="undefined"&&g instanceof VideoFrame)t=g.displayWidth||g.codedWidth,a=g.displayHeight||g.codedHeight;else if(g instanceof HTMLVideoElement){if(g.readyState<HTMLMediaElement.HAVE_CURRENT_DATA)return;t=g.videoWidth,a=g.videoHeight}else{const n=g;t=n.width,a=n.height}if(!t||!a)return;const o=Q!=null?Q:t,s=E!=null?E:a;if(o!==t||s!==a){this.videoUploadCanvas||(this.videoUploadCanvas=document.createElement("canvas"),this.videoUploadCtx=this.videoUploadCanvas.getContext("2d"));const n=this.videoUploadCanvas,r=this.videoUploadCtx;if(!r)return;(n.width!==o||n.height!==s)&&(n.width=o,n.height=s),r.drawImage(g,0,0,o,s),i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,1),i.texSubImage2D(i.TEXTURE_2D,0,I,B,i.RGBA,i.UNSIGNED_BYTE,n),i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,0);return}if(typeof VideoFrame!="undefined"&&g instanceof VideoFrame){i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,1),i.texSubImage2D(i.TEXTURE_2D,0,I,B,i.RGBA,i.UNSIGNED_BYTE,g),i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,0);return}if(g instanceof HTMLVideoElement){i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,1),i.texSubImage2D(i.TEXTURE_2D,0,I,B,i.RGBA,i.UNSIGNED_BYTE,g),i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,0);return}i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,0),i.texSubImage2D(i.TEXTURE_2D,0,I,B,i.RGBA,i.UNSIGNED_BYTE,g),i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,0)}deleteTexture(A){const g=this.textures.get(A.id);g&&(this.gl.deleteTexture(g.texture),this.textures.delete(A.id),this.cachedTex0Id===A.id&&(this.cachedTex0Id=null))}draw(A){var g;const I=A.shader;if(this.currentDrawResult=$("invalid-command",`WebGL2 rejected ${I}`),this.currentDrawRecorded=!1,this.contextLost)return this.currentDrawResult=$("backend-lost","WebGL2 context is lost"),this.rejectSVGAFastPathDraw(),this.currentDrawResult;try{if(I===tB||I==="svga-timeline-instanced-premul")return this.drawSVGAFrameTableGL(A),this.completeDrawResult();if(I==="svga-frame-table-shape-premul"||I==="svga-frame-table-clip-mask")return this.drawSVGAFrameTableMeshGL(A),this.completeDrawResult();if(A.shader==="svga-instanced-premul")return this.drawInstancedSvgaGL(A),this.completeDrawResult();if(A.shader==="clip-mask-instanced")return this.drawInstancedClipMaskGL(A),this.completeDrawResult();if(A.shader==="alpha-video-instanced")return this.drawInstancedAlphaGL(A),this.completeDrawResult();if(A.shader==="vap-instanced")return this.drawInstancedVapGL(A),this.completeDrawResult();if(A.shader==="particle-instanced")return this.drawInstancedParticlesGL(A),this.completeDrawResult();if(A.shader==="particle-sprite-instanced")return this.drawInstancedParticleSpritesGL(A),this.completeDrawResult();const B=this.gl,Q=(g=A.stencil)!=null?g:"none",E=A.shader==="clip-mask"||Q==="clear"?"clip-mask":A.shader,e=this.programs.get(E);if(!e)return this.rejectDrawResult("invalid-command",`WebGL2 shader unavailable: ${E}`);Q==="clear"?(B.enable(B.STENCIL_TEST),B.stencilFunc(B.ALWAYS,0,255),B.stencilOp(B.KEEP,B.KEEP,B.REPLACE),B.stencilMask(255),B.colorMask(!1,!1,!1,!1)):Q==="write"||A.shader==="clip-mask"?(B.enable(B.STENCIL_TEST),B.stencilFunc(B.ALWAYS,1,255),B.stencilOp(B.KEEP,B.KEEP,B.REPLACE),B.stencilMask(255),B.colorMask(!1,!1,!1,!1)):Q==="test"?(B.enable(B.STENCIL_TEST),B.stencilFunc(B.EQUAL,1,255),B.stencilOp(B.KEEP,B.KEEP,B.KEEP),B.stencilMask(0),B.colorMask(!0,!0,!0,!0)):(B.disable(B.STENCIL_TEST),B.colorMask(!0,!0,!0,!0)),this.cachedDrawProgram!==E&&(B.useProgram(e.program),this.cachedDrawProgram=E);for(let a=0;a<A.textures.length;a++){const o=A.textures[a].id;if(a===0&&this.cachedTex0Id===o)continue;const s=this.textures.get(o);if(!s)return this.rejectDrawResult("missing-resource",`WebGL2 texture ${o} is unavailable`);B.activeTexture(B.TEXTURE0+a),B.bindTexture(B.TEXTURE_2D,s.texture),a===0&&(this.cachedTex0Id=o)}this.applyDrawUniforms(e,E,A);const i=this.buffers.get(A.vertexBuffer.id),t=this.buffers.get(A.indexBuffer.id);return!i||!t?this.rejectDrawResult("missing-resource","WebGL2 draw buffer is unavailable"):(this.bindCachedVertexArray(E,A.vertexBuffer.id,A.indexBuffer.id)&&(B.bindBuffer(B.ARRAY_BUFFER,i.buffer),B.bindBuffer(B.ELEMENT_ARRAY_BUFFER,t.buffer),this.setupAttributes(E)),B.drawElements(B.TRIANGLES,A.indexCount,B.UNSIGNED_INT,0),this.recordSubmittedDraw(),(Q!=="none"||A.shader==="clip-mask")&&(B.disable(B.STENCIL_TEST),B.colorMask(!0,!0,!0,!0)),ag)}catch(B){return this.rejectDrawResult("submission-error",this.errorMessage(B))}}completeDrawResult(){return this.currentDrawRecorded||this.rejectSVGAFastPathDraw(),this.currentDrawResult}rejectDrawResult(A,g){return this.currentDrawResult=$(A,g),this.rejectSVGAFastPathDraw(),this.currentDrawResult}clearStencil(){const A=this.gl;A.stencilMask(255),A.clear(A.STENCIL_BUFFER_BIT)}setScissor(A,g,I,B){const Q=this.gl,E=this.canvas.width,e=this.canvas.height,i=Math.max(0,Math.min(E,Math.floor(A))),t=Math.max(0,Math.min(e,Math.floor(g))),a=Math.max(i,Math.min(E,Math.ceil(A+I))),o=Math.max(t,Math.min(e,Math.ceil(g+B)));Q.enable(Q.SCISSOR_TEST),Q.scissor(i,e-o,a-i,o-t)}resetScissor(){this.gl.disable(this.gl.SCISSOR_TEST)}setupAttributes(A){const g=this.gl;if(A===tB){g.enableVertexAttribArray(0),g.vertexAttribPointer(0,2,g.FLOAT,!1,8,0);for(let B=1;B<=9;B++)g.vertexAttribDivisor(B,0),g.disableVertexAttribArray(B)}else if(A==="svga-batch-premul"||A==="svga-frame-table-shape-premul")g.enableVertexAttribArray(0),g.vertexAttribPointer(0,3,g.FLOAT,!1,36,0),g.enableVertexAttribArray(1),g.vertexAttribPointer(1,4,g.FLOAT,!1,36,12),g.enableVertexAttribArray(2),g.vertexAttribPointer(2,2,g.FLOAT,!1,36,28);else if(A==="vap")g.enableVertexAttribArray(0),g.vertexAttribPointer(0,2,g.FLOAT,!1,24,0),g.enableVertexAttribArray(1),g.vertexAttribPointer(1,2,g.FLOAT,!1,24,8),g.enableVertexAttribArray(2),g.vertexAttribPointer(2,2,g.FLOAT,!1,24,16);else if(A==="clip-mask"||A==="svga-frame-table-clip-mask")g.enableVertexAttribArray(0),g.vertexAttribPointer(0,2,g.FLOAT,!1,8,0),g.disableVertexAttribArray(1),g.disableVertexAttribArray(2);else{g.enableVertexAttribArray(0),g.vertexAttribPointer(0,2,g.FLOAT,!1,16,0),g.enableVertexAttribArray(1),g.vertexAttribPointer(1,2,g.FLOAT,!1,16,8);for(let B=2;B<=9;B++)g.vertexAttribDivisor(B,0),g.disableVertexAttribArray(B)}}bindCachedVertexArray(A,g,I){const B=this.gl;let Q=this.vertexArrays.get(A);Q||(Q=new Map,this.vertexArrays.set(A,Q));let E=Q.get(g);E||(E=new Map,Q.set(g,E));const e=E.get(I);if(e)return B.bindVertexArray(e),!1;const i=B.createVertexArray();if(!i)throw new Error("Failed to create vertex array");return E.set(I,i),B.bindVertexArray(i),!0}deleteVertexArraysForBuffer(A){const g=this.gl;for(const[I,B]of this.vertexArrays){for(const[Q,E]of B){if(Q===A){for(const i of E.values())g.deleteVertexArray(i);B.delete(Q);continue}const e=E.get(A);e&&(g.deleteVertexArray(e),E.delete(A)),E.size===0&&B.delete(Q)}B.size===0&&this.vertexArrays.delete(I)}}deleteAllVertexArrays(){for(const A of this.vertexArrays.values())for(const g of A.values())for(const I of g.values())this.gl.deleteVertexArray(I);this.vertexArrays.clear()}ensureInstancedSvgaInstanceBuffer(){const A=this.gl;if(!this.instancedSvgaInstanceGLBuffer){const g=A.createBuffer();if(!g)throw new Error("createBuffer failed");A.bindVertexArray(null),A.bindBuffer(A.ARRAY_BUFFER,g),A.bufferData(A.ARRAY_BUFFER,bA.INST_SVGA_GL_BYTES,A.DYNAMIC_DRAW),this.instancedSvgaInstanceGLBuffer=g}return this.instancedSvgaInstanceGLBuffer}uploadSVGASlotStates(A,g,I=-1){const B=this.gl,Q=g*4;if(g<1||A.length<g*Ag||Q<1)return null;const E=Math.min(this.maxTextureSize,Math.max(4,2**Math.ceil(Math.log2(Q)))),e=Math.ceil(Q/E);if(e>this.maxTextureSize||!this.svgaSlotStateTexture&&(this.svgaSlotStateTexture=B.createTexture(),!this.svgaSlotStateTexture))return null;if(B.activeTexture(B.TEXTURE3),B.bindTexture(B.TEXTURE_2D,this.svgaSlotStateTexture),B.texParameteri(B.TEXTURE_2D,B.TEXTURE_MIN_FILTER,B.NEAREST),B.texParameteri(B.TEXTURE_2D,B.TEXTURE_MAG_FILTER,B.NEAREST),B.texParameteri(B.TEXTURE_2D,B.TEXTURE_WRAP_S,B.CLAMP_TO_EDGE),B.texParameteri(B.TEXTURE_2D,B.TEXTURE_WRAP_T,B.CLAMP_TO_EDGE),(this.svgaSlotStateTextureWidth!==E||this.svgaSlotStateTextureHeight!==e)&&(B.texImage2D(B.TEXTURE_2D,0,B.RGBA32F,E,e,0,B.RGBA,B.FLOAT,null),this.svgaSlotStateTextureWidth=E,this.svgaSlotStateTextureHeight=e),I>=0&&this.svgaSlotStateUploadId===I)return{width:E,height:e};const i=E*e*4,t=A.subarray(0,g*Ag);let a=t;return i!==t.length&&(this.svgaSlotStateUploadScratch.length<i&&(this.svgaSlotStateUploadScratch=new Float32Array(i)),this.svgaSlotStateUploadScratch.fill(0,0,i),this.svgaSlotStateUploadScratch.set(t),a=this.svgaSlotStateUploadScratch.subarray(0,i)),B.texSubImage2D(B.TEXTURE_2D,0,0,0,E,e,B.RGBA,B.FLOAT,a,0),this.performanceSVGADynamicUploadWrites++,this.performanceSVGADynamicUploadBytes+=g*Ag*Float32Array.BYTES_PER_ELEMENT,this.svgaSlotStateUploadId=I,{width:E,height:e}}resolveSVGAFrameTableSlotState(A,g){var I,B,Q,E,e,i,t,a,o,s,n,r,c,h,l,w,D,y,R,F,d,f,u,G,S,M,N,U,p,k,m,H,v,j,T,b,X,Z,EA,UA,FA,cA,IA,Bg,CA,V,YA,kA,W,pA,LA,og,PA,KA,vA;const nA=A.uniforms,J=(B=(I=A.svgaFrameTableSlotState)!=null?I:A.svgaSlotState)!=null?B:nA.u_svgaSlotState instanceof Float32Array?nA.u_svgaSlotState:nA.u_slotState instanceof Float32Array?nA.u_slotState:null,eA=nA.u_transform,Cg=nA.u_clipRect,AA=A.svgaFrameTableParentAffine,DA=A.svgaFrameTableParentTranslate,gA=A.svgaFrameTableClipRect,Jg=A.svgaFrameIndex!=null||A.svgaFrameTableFrameIndex!=null||A.frameTableFrameIndex!=null,Lg=A.svgaFrameTableOpacity!=null||typeof nA.u_opacity=="number";let Qg=1,dA=0,SA=0,GA=1,iA=0,tA=0,aA=(Q=A.svgaFrameTableOpacity)!=null?Q:typeof nA.u_opacity=="number"?nA.u_opacity:1,hA=(i=(e=(E=A.svgaFrameIndex)!=null?E:A.svgaFrameTableFrameIndex)!=null?e:A.frameTableFrameIndex)!=null?i:0,oA=0,rA=0,uA=this.canvas.width,RA=this.canvas.height,TA=0,Eg=(n=(s=(o=(a=(t=A.svgaFrameTableMetadataBase)!=null?t:A.svgaFrameTableSpriteBase)!=null?a:A.frameTableSpriteBase)!=null?o:A.svgaSpriteMetadataBase)!=null?s:A.svgaSpriteBase)!=null?n:0,Xg=(r=A.svgaFrameTableAtlasPage)!=null?r:-1;if(AA&&AA.length>=4)Qg=(c=AA[0])!=null?c:Qg,dA=(h=AA[1])!=null?h:dA,SA=(l=AA[2])!=null?l:SA,GA=(w=AA[3])!=null?w:GA,DA&&DA.length>=2&&(iA=(D=DA[0])!=null?D:iA,tA=(y=DA[1])!=null?y:tA),gA&&gA.length>=4&&(oA=(R=gA[0])!=null?R:oA,rA=(F=gA[1])!=null?F:rA,uA=(d=gA[2])!=null?d:uA,RA=(f=gA[3])!=null?f:RA,TA=1);else if(J&&J.length>=13)Qg=(u=J[0])!=null?u:Qg,dA=(G=J[1])!=null?G:dA,SA=(S=J[2])!=null?S:SA,GA=(M=J[3])!=null?M:GA,iA=(N=J[4])!=null?N:iA,tA=(U=J[5])!=null?U:tA,Lg||(aA=(p=J[6])!=null?p:aA),Jg||(hA=(k=J[7])!=null?k:hA),oA=(m=J[8])!=null?m:oA,rA=(H=J[9])!=null?H:rA,uA=(v=J[10])!=null?v:uA,RA=(j=J[11])!=null?j:RA,TA=((T=J[12])!=null?T:0)>.5?1:0,A.svgaFrameTableMetadataBase==null&&A.svgaFrameTableSpriteBase==null&&A.frameTableSpriteBase==null&&A.svgaSpriteMetadataBase==null&&A.svgaSpriteBase==null&&J.length>=14&&(Eg=(b=J[13])!=null?b:Eg);else if(eA instanceof Float32Array&&eA.length>=16){Qg=(X=eA[0])!=null?X:Qg,dA=(Z=eA[1])!=null?Z:dA,SA=(EA=eA[4])!=null?EA:SA,GA=(UA=eA[5])!=null?UA:GA,iA=(FA=eA[12])!=null?FA:iA,tA=(cA=eA[13])!=null?cA:tA;const jA=Cg instanceof Float32Array&&Cg.length>=4?Cg:gA;jA&&jA.length>=4&&(oA=(IA=jA[0])!=null?IA:oA,rA=(Bg=jA[1])!=null?Bg:rA,uA=(CA=jA[2])!=null?CA:uA,RA=(V=jA[3])!=null?V:RA,TA=typeof nA.u_clipEnabled=="number"?nA.u_clipEnabled>.5?1:0:1)}return AA&&J&&J.length>=13&&(DA||(iA=(YA=J[4])!=null?YA:iA,tA=(kA=J[5])!=null?kA:tA),Lg||(aA=(W=J[6])!=null?W:aA),Jg||(hA=(pA=J[7])!=null?pA:hA),gA||(oA=(LA=J[8])!=null?LA:oA,rA=(og=J[9])!=null?og:rA,uA=(PA=J[10])!=null?PA:uA,RA=(KA=J[11])!=null?KA:RA,TA=((vA=J[12])!=null?vA:0)>.5?1:0)),Number.isFinite(aA)||(aA=1),Number.isFinite(hA)||(hA=0),Number.isFinite(Eg)||(Eg=0),Number.isFinite(Xg)||(Xg=-1),hA=Math.max(0,Math.min(Math.max(1,g)-1,Math.floor(hA))),Eg=Math.max(0,Math.floor(Eg)),[Qg,dA,SA,GA,iA,tA,aA,oA,rA,uA,RA].every(Number.isFinite)?{parentA:Qg,parentB:dA,parentC:SA,parentD:GA,tx:iA,ty:tA,opacity:aA,frameIndex:hA,clipX0:oA,clipY0:rA,clipX1:uA,clipY1:RA,clipEnabled:TA,metadataBase:Eg,atlasPage:Math.max(-1,Math.floor(Xg))}:null}drawSVGAFrameTableGL(A){var g,I,B,Q,E,e,i,t,a,o,s,n,r,c,h,l,w,D,y,R,F,d,f,u;const G=this.gl;if(!this.svgaFrameTableSupported){this.rejectSVGAFastPathDraw();return}const S=(g=A.svgaFrameTable)!=null?g:null,M=S&&typeof S=="object"&&"backend"in S?S:null,N=(E=(Q=(B=(I=(M==null?void 0:M.backend)==="webgl2"?M.texture:null)!=null?I:S&&"id"in S?S:null)!=null?B:A.svgaFrameTableTexture)!=null?Q:A.frameTableTexture)!=null?E:null;if(!N){this.rejectSVGAFastPathDraw();return}const U=this.frameTables.get(N.id);if(!U){this.rejectSVGAFastPathDraw();return}const p=(a=(i=(e=A.svgaSpriteMetadataTexture)!=null?e:A.svgaSpriteMetadata)!=null?i:A.spriteMetadataTexture)!=null?a:(M==null?void 0:M.backend)==="webgl2"&&(t=M.spriteMetadataTexture)!=null?t:null;if(!p){this.rejectSVGAFastPathDraw();return}const k=this.textures.get(p.id);if(!k){this.rejectSVGAFastPathDraw();return}const m=(o=A.svgaFrameTableFrameCount)!=null?o:A.frameTableFrameCount,H=(s=A.svgaFrameTableSpriteCount)!=null?s:A.frameTableSpriteCount,v=Math.floor(Number.isFinite(m)?m:(M==null?void 0:M.backend)==="webgl2"?M.frameCount:0),j=Math.floor(Number.isFinite(H)?H:(M==null?void 0:M.backend)==="webgl2"?M.spriteCount:0),T=Math.floor((n=A.instanceCount)!=null?n:0),b=A.instanceData,X=A.svgaFrameTableSlotStates,Z=Math.floor((r=A.svgaFrameTableSlotStateCount)!=null?r:0),EA=Math.floor((c=A.svgaFrameTableSpritesPerSlot)!=null?c:0),UA=X!=null&&Z>0&&EA>0&&Z*EA===T&&X.length>=Z*Ag,FA=!UA&&b!=null&&b.length>=T*Ag,cA=U.width*U.height,IA=k.width*k.height,CA=Math.floor((h=A.svgaSpriteMetadataStrideFloats)!=null?h:QQ)/4,V=this.resolveSVGAFrameTableSlotState(A,v);let YA=(l=V==null?void 0:V.metadataBase)!=null?l:-1;if(V)if(UA)YA+=EA;else if(FA){let AA=-1;for(let DA=0;DA<T;DA++){const gA=Math.floor((w=b[DA*Ag+Ug.metadataBase])!=null?w:-1);gA>AA&&(AA=gA)}YA=AA+1}else YA+=T;if(T<1||T>2048||v<1||j<1||!Number.isSafeInteger(v)||!Number.isSafeInteger(j)||!Number.isSafeInteger(CA)||CA<2||v*j*3>cA||!V||V.metadataBase<0||YA<1||YA*CA>IA){this.rejectSVGAFastPathDraw();return}const kA=tB,W=this.programs.get(kA);if(!W){this.rejectSVGAFastPathDraw();return}const pA=A.textures[0],LA=pA?this.textures.get(pA.id):null;if(!LA){this.rejectSVGAFastPathDraw();return}const og=(D=A.stencil)!=null?D:"none";og==="test"?(G.enable(G.STENCIL_TEST),G.stencilFunc(G.EQUAL,1,255),G.stencilOp(G.KEEP,G.KEEP,G.KEEP),G.stencilMask(0),G.colorMask(!0,!0,!0,!0)):(G.disable(G.STENCIL_TEST),G.colorMask(!0,!0,!0,!0)),this.cachedDrawProgram!==kA&&(G.useProgram(W.program),this.cachedDrawProgram=kA),G.activeTexture(G.TEXTURE0),this.cachedTex0Id!==pA.id&&(G.bindTexture(G.TEXTURE_2D,LA.texture),this.cachedTex0Id=pA.id),G.activeTexture(G.TEXTURE1),this.cachedFrameTableId!==N.id&&(G.bindTexture(G.TEXTURE_2D,U.texture),this.cachedFrameTableId=N.id),G.activeTexture(G.TEXTURE2),this.cachedFrameMetadataId!==p.id&&(G.bindTexture(G.TEXTURE_2D,k.texture),this.cachedFrameMetadataId=p.id);let PA=null;if(UA&&(PA=this.uploadSVGASlotStates(X,Z,A.svgaFrameTableSlotStateUploadId),!PA)){this.rejectSVGAFastPathDraw();return}this.applyProjectionUniform(W,kA,A.uniforms.u_projection);const KA=this.svgaTableInfoScratch;KA[0]=v,KA[1]=j,KA[2]=3,KA[3]=0;const vA=this.svgaTableSizeScratch;vA[0]=U.width,vA[1]=U.height;const nA=this.svgaMetadataSizeScratch;nA[0]=k.width,nA[1]=k.height;const J=G;if(W.tableInfoLoc&&((y=J.uniform4iv)==null||y.call(J,W.tableInfoLoc,KA)),W.frameTableSizeLoc&&((R=J.uniform2iv)==null||R.call(J,W.frameTableSizeLoc,vA)),W.spriteMetadataSizeLoc&&((F=J.uniform2iv)==null||F.call(J,W.spriteMetadataSizeLoc,nA)),W.spriteMetadataStrideLoc&&G.uniform1i(W.spriteMetadataStrideLoc,CA),W.spriteBaseLoc&&G.uniform1i(W.spriteBaseLoc,V.metadataBase),W.frameIndexLoc&&G.uniform1i(W.frameIndexLoc,V.frameIndex),W.parentAffineLoc&&G.uniform4f(W.parentAffineLoc,V.parentA,V.parentB,V.parentC,V.parentD),W.parentTranslateLoc&&G.uniform2f(W.parentTranslateLoc,V.tx,V.ty),W.slotOpacityLoc&&G.uniform1f(W.slotOpacityLoc,V.opacity),W.atlasPageLoc&&G.uniform1i(W.atlasPageLoc,V.atlasPage),W.clipRectLoc&&G.uniform4f(W.clipRectLoc,V.clipX0,V.clipY0,V.clipX1,V.clipY1),W.clipEnabledLoc&&G.uniform1f(W.clipEnabledLoc,V.clipEnabled),W.canvasHeightLoc&&G.uniform1f(W.canvasHeightLoc,this.canvas.height),W.instanceStateEnabledLoc&&G.uniform1f(W.instanceStateEnabledLoc,FA?1:0),W.compactSlotStateEnabledLoc&&G.uniform1f(W.compactSlotStateEnabledLoc,UA?1:0),W.spritesPerSlotLoc&&G.uniform1i(W.spritesPerSlotLoc,UA?EA:1),W.slotStateSizeLoc){const AA=new Int32Array([(d=PA==null?void 0:PA.width)!=null?d:1,(f=PA==null?void 0:PA.height)!=null?f:1]);(u=J.uniform2iv)==null||u.call(J,W.slotStateSizeLoc,AA)}const eA=this.buffers.get(A.vertexBuffer.id),Cg=this.buffers.get(A.indexBuffer.id);if(!eA||!Cg){this.rejectSVGAFastPathDraw();return}if(this.bindCachedVertexArray(kA,A.vertexBuffer.id,A.indexBuffer.id)&&(G.bindBuffer(G.ARRAY_BUFFER,eA.buffer),G.bindBuffer(G.ELEMENT_ARRAY_BUFFER,Cg.buffer),this.setupAttributes(kA)),FA){const AA=this.ensureInstancedSvgaInstanceBuffer();G.bindBuffer(G.ARRAY_BUFFER,AA),G.bufferSubData(G.ARRAY_BUFFER,0,b,0,T*Ag),this.performanceSVGADynamicUploadWrites++,this.performanceSVGADynamicUploadBytes+=T*Ag*Float32Array.BYTES_PER_ELEMENT;const DA=16*Float32Array.BYTES_PER_ELEMENT;for(let gA=1;gA<=4;gA++)G.enableVertexAttribArray(gA),G.vertexAttribPointer(gA,4,G.FLOAT,!1,DA,(gA-1)*4*Float32Array.BYTES_PER_ELEMENT),G.vertexAttribDivisor(gA,1)}else for(let AA=1;AA<=4;AA++)G.disableVertexAttribArray(AA),G.vertexAttribDivisor(AA,0);G.drawElementsInstanced(G.TRIANGLES,A.indexCount,G.UNSIGNED_INT,0,T),this.recordSubmittedDraw(),og!=="none"&&(G.disable(G.STENCIL_TEST),G.colorMask(!0,!0,!0,!0))}drawSVGAFrameTableMeshGL(A){var g,I,B,Q,E,e,i,t,a,o,s,n,r,c;const h=this.gl;if(!this.svgaFrameTableSupported)return;const l=(g=A.svgaFrameTable)!=null?g:null,w=l&&typeof l=="object"&&"backend"in l?l:null,D=(w==null?void 0:w.backend)==="webgl2"?w.texture:(I=A.svgaFrameTableTexture)!=null?I:null;if(!D)return;const y=this.frameTables.get(D.id);if(!y)return;const R=Math.floor((Q=(B=A.svgaFrameTableFrameCount)!=null?B:w==null?void 0:w.frameCount)!=null?Q:0),F=Math.floor((e=(E=A.svgaFrameTableSpriteCount)!=null?E:w==null?void 0:w.spriteCount)!=null?e:0),d=Math.floor((i=A.instanceCount)!=null?i:1),f=A.svgaFrameTableSlotStates,u=Math.floor((t=A.svgaFrameTableSlotStateCount)!=null?t:0),G=f!=null&&u===d&&A.svgaFrameTableSpritesPerSlot===1&&f.length>=u*Ag,S=this.resolveSVGAFrameTableSlotState(A,R);if(!S||R<1||F<1||d<1||d>2048)return;const M=A.shader,N=this.programs.get(M);if(!N)return;const U=(a=A.stencil)!=null?a:"none";U==="clear"?(h.enable(h.STENCIL_TEST),h.stencilFunc(h.ALWAYS,0,255),h.stencilOp(h.KEEP,h.KEEP,h.REPLACE),h.stencilMask(255),h.colorMask(!1,!1,!1,!1)):U==="write"?(h.enable(h.STENCIL_TEST),h.stencilFunc(h.ALWAYS,1,255),h.stencilOp(h.KEEP,h.KEEP,h.REPLACE),h.stencilMask(255),h.colorMask(!1,!1,!1,!1)):U==="test"?(h.enable(h.STENCIL_TEST),h.stencilFunc(h.EQUAL,1,255),h.stencilOp(h.KEEP,h.KEEP,h.KEEP),h.stencilMask(0),h.colorMask(!0,!0,!0,!0)):(h.disable(h.STENCIL_TEST),h.colorMask(!0,!0,!0,!0)),this.cachedDrawProgram!==M&&(h.useProgram(N.program),this.cachedDrawProgram=M),h.activeTexture(h.TEXTURE0),this.cachedTex0Id!==D.id&&(h.bindTexture(h.TEXTURE_2D,y.texture),this.cachedTex0Id=D.id),this.applyProjectionUniform(N,M,A.uniforms.u_projection),this.svgaTableInfoScratch[0]=R,this.svgaTableInfoScratch[1]=F,this.svgaTableInfoScratch[2]=3,this.svgaTableInfoScratch[3]=0,this.svgaTableSizeScratch[0]=y.width,this.svgaTableSizeScratch[1]=y.height;const p=h;N.tableInfoLoc&&((o=p.uniform4iv)==null||o.call(p,N.tableInfoLoc,this.svgaTableInfoScratch)),N.frameTableSizeLoc&&((s=p.uniform2iv)==null||s.call(p,N.frameTableSizeLoc,this.svgaTableSizeScratch)),N.spriteBaseLoc&&h.uniform1i(N.spriteBaseLoc,S.metadataBase),N.frameIndexLoc&&h.uniform1i(N.frameIndexLoc,S.frameIndex),N.parentAffineLoc&&h.uniform4f(N.parentAffineLoc,S.parentA,S.parentB,S.parentC,S.parentD),N.parentTranslateLoc&&h.uniform2f(N.parentTranslateLoc,S.tx,S.ty),N.slotOpacityLoc&&h.uniform1f(N.slotOpacityLoc,S.opacity),N.clipRectLoc&&h.uniform4f(N.clipRectLoc,S.clipX0,S.clipY0,S.clipX1,S.clipY1),N.clipEnabledLoc&&h.uniform1f(N.clipEnabledLoc,S.clipEnabled),N.canvasHeightLoc&&h.uniform1f(N.canvasHeightLoc,this.canvas.height);let k=null;if(G&&(k=this.uploadSVGASlotStates(f,u,A.svgaFrameTableSlotStateUploadId),!k))return;N.compactSlotStateEnabledLoc&&h.uniform1f(N.compactSlotStateEnabledLoc,G?1:0),N.slotStateSizeLoc&&(this.svgaTableSizeScratch[0]=(n=k==null?void 0:k.width)!=null?n:1,this.svgaTableSizeScratch[1]=(r=k==null?void 0:k.height)!=null?r:1,(c=p.uniform2iv)==null||c.call(p,N.slotStateSizeLoc,this.svgaTableSizeScratch));const m=this.buffers.get(A.vertexBuffer.id),H=this.buffers.get(A.indexBuffer.id);!m||!H||(this.bindCachedVertexArray(M,A.vertexBuffer.id,A.indexBuffer.id)&&(h.bindBuffer(h.ARRAY_BUFFER,m.buffer),h.bindBuffer(h.ELEMENT_ARRAY_BUFFER,H.buffer),this.setupAttributes(M)),h.drawElementsInstanced(h.TRIANGLES,A.indexCount,h.UNSIGNED_INT,0,d),this.recordSubmittedDraw(),U!=="none"&&(h.disable(h.STENCIL_TEST),h.colorMask(!0,!0,!0,!0)))}drawInstancedParticlesGL(A){var g;const I=this.gl,B=(g=A.instanceCount)!=null?g:0;if(B<1||!A.instanceBuffer)return;const Q=this.buffers.get(A.instanceBuffer.id),E=this.buffers.get(A.vertexBuffer.id),e=this.buffers.get(A.indexBuffer.id),i=this.programs.get("particle-instanced");if(!Q||!E||!e||!i)return;I.useProgram(i.program),this.cachedDrawProgram="particle-instanced",this.applyProjectionUniform(i,"particle-instanced",A.uniforms.u_projection);const t=A.uniforms.u_time,a=A.uniforms.u_particleSize,o=A.uniforms.u_globalAlpha;I.uniform1f(I.getUniformLocation(i.program,"u_time"),typeof t=="number"?t:0),I.uniform1f(I.getUniformLocation(i.program,"u_particleSize"),typeof a=="number"?a:8),I.uniform1f(I.getUniformLocation(i.program,"u_globalAlpha"),typeof o=="number"?o:1),I.bindVertexArray(null),I.bindBuffer(I.ARRAY_BUFFER,E.buffer),I.enableVertexAttribArray(0),I.vertexAttribPointer(0,2,I.FLOAT,!1,8,0),I.vertexAttribDivisor(0,0),I.bindBuffer(I.ARRAY_BUFFER,Q.buffer);const s=64;for(let n=1;n<=4;n++)I.enableVertexAttribArray(n),I.vertexAttribPointer(n,4,I.FLOAT,!1,s,16+(n-1)*16),I.vertexAttribDivisor(n,1);I.bindBuffer(I.ELEMENT_ARRAY_BUFFER,e.buffer),I.blendFunc(I.ONE,A.particleBlend==="additive"?I.ONE:I.ONE_MINUS_SRC_ALPHA),I.drawElementsInstanced(I.TRIANGLES,A.indexCount,I.UNSIGNED_INT,0,B),this.recordSubmittedDraw(),I.blendFunc(I.ONE,I.ONE_MINUS_SRC_ALPHA)}drawInstancedParticleSpritesGL(A){var g;const I=this.gl,B=(g=A.instanceCount)!=null?g:0;if(B<1||!A.instanceBuffer||!A.textures[0])return;const Q=this.buffers.get(A.instanceBuffer.id),E=this.buffers.get(A.vertexBuffer.id),e=this.buffers.get(A.indexBuffer.id),i=this.textures.get(A.textures[0].id);if(!Q||!E||!e||!i)return;const t=this.ensureParticleSpriteProgram();I.useProgram(t.program),this.cachedDrawProgram="particle-sprite-instanced",this.applyProjectionUniform(t,"particle-sprite-instanced",A.uniforms.u_projection);const a=A.uniforms.u_time,o=A.uniforms.u_globalAlpha,s=A.uniforms.u_sizeEnvelope,n=A.uniforms.u_fadeMode,r=A.uniforms.u_cssScale;t.particleTimeLoc&&I.uniform1f(t.particleTimeLoc,typeof a=="number"?a:0),t.particleGlobalAlphaLoc&&I.uniform1f(t.particleGlobalAlphaLoc,typeof o=="number"?o:1),t.particleSizeEnvelopeLoc&&I.uniform1f(t.particleSizeEnvelopeLoc,typeof s=="number"?s:1),t.particleFadeModeLoc&&I.uniform1f(t.particleFadeModeLoc,typeof n=="number"?n:1),t.particleCssScaleLoc&&I.uniform2fv(t.particleCssScaleLoc,r instanceof Float32Array&&r.length>=2?r:It),I.activeTexture(I.TEXTURE0),I.bindTexture(I.TEXTURE_2D,i.texture),this.cachedTex0Id=A.textures[0].id,I.bindVertexArray(null),I.bindBuffer(I.ARRAY_BUFFER,E.buffer),I.enableVertexAttribArray(0),I.vertexAttribPointer(0,2,I.FLOAT,!1,8,0),I.vertexAttribDivisor(0,0),I.bindBuffer(I.ARRAY_BUFFER,Q.buffer);const c=96;for(let h=1;h<=6;h++)I.enableVertexAttribArray(h),I.vertexAttribPointer(h,4,I.FLOAT,!1,c,32+(h-1)*16),I.vertexAttribDivisor(h,1);I.bindBuffer(I.ELEMENT_ARRAY_BUFFER,e.buffer),I.blendFunc(I.ONE,A.particleBlend==="additive"?I.ONE:I.ONE_MINUS_SRC_ALPHA),I.drawElementsInstanced(I.TRIANGLES,A.indexCount,I.UNSIGNED_INT,0,B),this.recordSubmittedDraw(),I.blendFunc(I.ONE,I.ONE_MINUS_SRC_ALPHA)}drawInstancedSvgaGL(A){var g,I;const B=this.gl,Q=(g=A.instanceCount)!=null?g:0,E=A.instanceData;if(Q<1||!E||E.length<Q*bA.INST_SVGA_GL_FLOATS)return;if(Q>bA.INST_SVGA_GL_MAX){console.warn("[WebGL2] svga-instanced-premul: instanceCount exceeds max",Q);return}const e=(I=A.stencil)!=null?I:"none";e==="test"?(B.enable(B.STENCIL_TEST),B.stencilFunc(B.EQUAL,1,255),B.stencilOp(B.KEEP,B.KEEP,B.KEEP),B.stencilMask(0),B.colorMask(!0,!0,!0,!0)):(B.disable(B.STENCIL_TEST),B.colorMask(!0,!0,!0,!0));const i="svga-instanced-premul",t=this.programs.get(i);if(!t)return;this.cachedDrawProgram!==i&&(B.useProgram(t.program),this.cachedDrawProgram=i);for(let n=0;n<A.textures.length;n++){const r=A.textures[n].id;if(n===0&&this.cachedTex0Id===r)continue;const c=this.textures.get(r);c&&(B.activeTexture(B.TEXTURE0+n),B.bindTexture(B.TEXTURE_2D,c.texture),n===0&&(this.cachedTex0Id=r))}this.applyProjectionUniform(t,i,A.uniforms.u_projection);const a=this.buffers.get(A.vertexBuffer.id),o=this.buffers.get(A.indexBuffer.id);if(!a||!o)return;const s=this.ensureInstancedSvgaInstanceBuffer();if(B.bindBuffer(B.ARRAY_BUFFER,s),B.bufferSubData(B.ARRAY_BUFFER,0,E,0,Q*bA.INST_SVGA_GL_FLOATS),this.performanceSVGADynamicUploadWrites++,this.performanceSVGADynamicUploadBytes+=Q*bA.INST_SVGA_GL_FLOATS*Float32Array.BYTES_PER_ELEMENT,this.bindCachedVertexArray(i,A.vertexBuffer.id,A.indexBuffer.id)){const n=bA.INST_SVGA_GL_STRIDE;B.bindBuffer(B.ARRAY_BUFFER,s),B.enableVertexAttribArray(1),B.vertexAttribPointer(1,4,B.FLOAT,!1,n,0),B.vertexAttribDivisor(1,1),B.enableVertexAttribArray(2),B.vertexAttribPointer(2,3,B.FLOAT,!1,n,16),B.vertexAttribDivisor(2,1),B.enableVertexAttribArray(3),B.vertexAttribPointer(3,4,B.FLOAT,!1,n,28),B.vertexAttribDivisor(3,1),B.enableVertexAttribArray(4),B.vertexAttribIPointer(4,2,B.UNSIGNED_INT,n,44),B.vertexAttribDivisor(4,1),B.bindBuffer(B.ARRAY_BUFFER,a.buffer),B.enableVertexAttribArray(0),B.vertexAttribPointer(0,2,B.FLOAT,!1,8,0),B.vertexAttribDivisor(0,0),B.bindBuffer(B.ELEMENT_ARRAY_BUFFER,o.buffer)}B.drawElementsInstanced(B.TRIANGLES,A.indexCount,B.UNSIGNED_INT,0,Q),this.recordSubmittedDraw(),e!=="none"&&(B.disable(B.STENCIL_TEST),B.colorMask(!0,!0,!0,!0))}ensureInstancedClipMaskBuffer(){const A=this.gl;if(!this.instancedClipMaskGLBuffer){const g=A.createBuffer();if(!g)throw new Error("createBuffer failed");A.bindVertexArray(null),A.bindBuffer(A.ARRAY_BUFFER,g),A.bufferData(A.ARRAY_BUFFER,bA.INST_CLIP_MASK_GL_BYTES,A.DYNAMIC_DRAW),this.instancedClipMaskGLBuffer=g}return this.instancedClipMaskGLBuffer}drawInstancedClipMaskGL(A){var g,I;const B=this.gl,Q=(g=A.instanceCount)!=null?g:0,E=A.instanceData;if(Q<1||!E||E.length<Q*bA.INST_CLIP_MASK_GL_FLOATS)return;if(Q>bA.INST_CLIP_MASK_GL_MAX){console.warn("[WebGL2] clip-mask-instanced: instanceCount exceeds max",Q);return}const e="clip-mask-instanced",i=this.programs.get(e);if(!i)return;const t=this.buffers.get(A.vertexBuffer.id),a=this.buffers.get(A.indexBuffer.id);if(!t||!a)return;const o=(I=A.stencil)!=null?I:"write";B.enable(B.STENCIL_TEST),B.stencilFunc(B.ALWAYS,o==="clear"?0:1,255),B.stencilOp(B.KEEP,B.KEEP,B.REPLACE),B.stencilMask(255),B.colorMask(!1,!1,!1,!1),this.cachedDrawProgram!==e&&(B.useProgram(i.program),this.cachedDrawProgram=e),this.applyProjectionUniform(i,e,A.uniforms.u_projection);const s=this.ensureInstancedClipMaskBuffer();if(B.bindBuffer(B.ARRAY_BUFFER,s),o!=="clear"&&B.bufferSubData(B.ARRAY_BUFFER,0,E,0,Q*bA.INST_CLIP_MASK_GL_FLOATS),this.bindCachedVertexArray(e,A.vertexBuffer.id,A.indexBuffer.id)){const n=bA.INST_CLIP_MASK_GL_STRIDE;B.bindBuffer(B.ARRAY_BUFFER,s),B.enableVertexAttribArray(1),B.vertexAttribPointer(1,4,B.FLOAT,!1,n,0),B.vertexAttribDivisor(1,1),B.enableVertexAttribArray(2),B.vertexAttribPointer(2,2,B.FLOAT,!1,n,16),B.vertexAttribDivisor(2,1),B.bindBuffer(B.ARRAY_BUFFER,t.buffer),B.enableVertexAttribArray(0),B.vertexAttribPointer(0,2,B.FLOAT,!1,8,0),B.vertexAttribDivisor(0,0),B.bindBuffer(B.ELEMENT_ARRAY_BUFFER,a.buffer)}B.drawElementsInstanced(B.TRIANGLES,A.indexCount,B.UNSIGNED_INT,0,Q),this.recordSubmittedDraw(),B.disable(B.STENCIL_TEST),B.colorMask(!0,!0,!0,!0)}ensureInstancedAlphaInstanceBuffer(){const A=this.gl;if(!this.instancedAlphaInstanceGLBuffer){const g=A.createBuffer();if(!g)throw new Error("createBuffer failed");A.bindVertexArray(null),A.bindBuffer(A.ARRAY_BUFFER,g),A.bufferData(A.ARRAY_BUFFER,bA.INST_ALPHA_GL_BYTES,A.DYNAMIC_DRAW),this.instancedAlphaInstanceGLBuffer=g}return this.instancedAlphaInstanceGLBuffer}drawInstancedAlphaGL(A){var g;const I=this.gl,B=(g=A.instanceCount)!=null?g:0,Q=A.instanceData;if(B<1||!Q||Q.length<B*12)return;if(B>bA.INST_ALPHA_GL_MAX){console.warn("[WebGL2] alpha-video-instanced: instanceCount exceeds max",B);return}I.disable(I.STENCIL_TEST),I.colorMask(!0,!0,!0,!0);const E="alpha-video-instanced",e=this.programs.get("alpha-video-instanced");if(!e)return;this.cachedDrawProgram!==E&&(I.useProgram(e.program),this.cachedDrawProgram=E);for(let o=0;o<A.textures.length;o++){const s=A.textures[o].id;if(o===0&&this.cachedTex0Id===s)continue;const n=this.textures.get(s);n&&(I.activeTexture(I.TEXTURE0+o),I.bindTexture(I.TEXTURE_2D,n.texture),o===0&&(this.cachedTex0Id=s))}this.applyProjectionUniform(e,E,A.uniforms.u_projection);const i=this.buffers.get(A.vertexBuffer.id),t=this.buffers.get(A.indexBuffer.id);if(!i||!t)return;const a=this.ensureInstancedAlphaInstanceBuffer();if(I.bindBuffer(I.ARRAY_BUFFER,a),I.bufferSubData(I.ARRAY_BUFFER,0,Q,0,B*12),this.bindCachedVertexArray(E,A.vertexBuffer.id,A.indexBuffer.id)){I.bindBuffer(I.ARRAY_BUFFER,a);for(let n=0;n<3;n++){const r=2+n;I.enableVertexAttribArray(r),I.vertexAttribPointer(r,4,I.FLOAT,!1,48,n*16),I.vertexAttribDivisor(r,1)}I.bindBuffer(I.ARRAY_BUFFER,i.buffer);const s=16;I.enableVertexAttribArray(0),I.vertexAttribPointer(0,2,I.FLOAT,!1,s,0),I.vertexAttribDivisor(0,0),I.enableVertexAttribArray(1),I.vertexAttribPointer(1,2,I.FLOAT,!1,s,8),I.vertexAttribDivisor(1,0),I.bindBuffer(I.ELEMENT_ARRAY_BUFFER,t.buffer)}I.drawElementsInstanced(I.TRIANGLES,A.indexCount,I.UNSIGNED_INT,0,B),this.recordSubmittedDraw()}ensureInstancedVapInstanceBuffer(){const A=this.gl;if(!this.instancedVapInstanceGLBuffer){const g=A.createBuffer();if(!g)throw new Error("createBuffer failed");A.bindVertexArray(null),A.bindBuffer(A.ARRAY_BUFFER,g),A.bufferData(A.ARRAY_BUFFER,bA.INST_VAP_GL_BYTES,A.DYNAMIC_DRAW),this.instancedVapInstanceGLBuffer=g}return this.instancedVapInstanceGLBuffer}drawInstancedVapGL(A){var g;const I=this.gl,B=(g=A.instanceCount)!=null?g:0,Q=A.instanceData;if(B<1||!Q||Q.length<B*32)return;if(B>bA.INST_VAP_GL_MAX){console.warn("[WebGL2] vap-instanced: instanceCount exceeds max",B);return}I.disable(I.STENCIL_TEST),I.colorMask(!0,!0,!0,!0);const E="vap-instanced",e=this.programs.get("vap-instanced");if(!e)return;this.cachedDrawProgram!==E&&(I.useProgram(e.program),this.cachedDrawProgram=E);for(let o=0;o<A.textures.length;o++){const s=A.textures[o].id;if(o===0&&this.cachedTex0Id===s)continue;const n=this.textures.get(s);n&&(I.activeTexture(I.TEXTURE0+o),I.bindTexture(I.TEXTURE_2D,n.texture),o===0&&(this.cachedTex0Id=s))}this.applyProjectionUniform(e,E,A.uniforms.u_projection);const i=this.buffers.get(A.vertexBuffer.id),t=this.buffers.get(A.indexBuffer.id);if(!i||!t)return;const a=this.ensureInstancedVapInstanceBuffer();if(I.bindBuffer(I.ARRAY_BUFFER,a),I.bufferSubData(I.ARRAY_BUFFER,0,Q,0,B*32),this.bindCachedVertexArray(E,A.vertexBuffer.id,A.indexBuffer.id)){I.bindBuffer(I.ARRAY_BUFFER,a);for(let n=0;n<8;n++){const r=2+n;I.enableVertexAttribArray(r),I.vertexAttribPointer(r,4,I.FLOAT,!1,128,n*16),I.vertexAttribDivisor(r,1)}I.bindBuffer(I.ARRAY_BUFFER,i.buffer);const s=16;I.enableVertexAttribArray(0),I.vertexAttribPointer(0,2,I.FLOAT,!1,s,0),I.vertexAttribDivisor(0,0),I.enableVertexAttribArray(1),I.vertexAttribPointer(1,2,I.FLOAT,!1,s,8),I.vertexAttribDivisor(1,0),I.bindBuffer(I.ELEMENT_ARRAY_BUFFER,t.buffer)}I.drawElementsInstanced(I.TRIANGLES,A.indexCount,I.UNSIGNED_INT,0,B),this.recordSubmittedDraw()}destroy(){this.deviceLostHandler=null,this.canvas.removeEventListener("webglcontextlost",this.onContextLost),this.runtimeDiagnosticHandler=null;const A=this.gl;A.bindVertexArray(null),this.deleteAllVertexArrays(),this.instancedSvgaInstanceGLBuffer&&(A.deleteBuffer(this.instancedSvgaInstanceGLBuffer),this.instancedSvgaInstanceGLBuffer=null),this.svgaSlotStateTexture&&(A.deleteTexture(this.svgaSlotStateTexture),this.svgaSlotStateTexture=null,this.svgaSlotStateTextureWidth=0,this.svgaSlotStateTextureHeight=0),this.instancedClipMaskGLBuffer&&(A.deleteBuffer(this.instancedClipMaskGLBuffer),this.instancedClipMaskGLBuffer=null),this.instancedAlphaInstanceGLBuffer&&(A.deleteBuffer(this.instancedAlphaInstanceGLBuffer),this.instancedAlphaInstanceGLBuffer=null),this.instancedVapInstanceGLBuffer&&(A.deleteBuffer(this.instancedVapInstanceGLBuffer),this.instancedVapInstanceGLBuffer=null);for(const[,I]of this.buffers)A.deleteBuffer(I.buffer);for(const[,I]of this.textures)A.deleteTexture(I.texture);for(const[,I]of this.programs)A.deleteProgram(I.program);this.buffers.clear(),this.frameTables.clear(),this.ownedFrameTableMetadataIds.clear(),this.textures.clear(),this.programs.clear();const g=A.getExtension("WEBGL_lose_context");g==null||g.loseContext()}};x(fA,"INST_SVGA_GL_MAX",2048);x(fA,"INST_SVGA_GL_FLOATS",13);x(fA,"INST_SVGA_GL_STRIDE",fA.INST_SVGA_GL_FLOATS*4);x(fA,"INST_SVGA_GL_BYTES",fA.INST_SVGA_GL_MAX*16*Float32Array.BYTES_PER_ELEMENT);x(fA,"INST_CLIP_MASK_GL_MAX",2048);x(fA,"INST_CLIP_MASK_GL_FLOATS",6);x(fA,"INST_CLIP_MASK_GL_STRIDE",fA.INST_CLIP_MASK_GL_FLOATS*4);x(fA,"INST_CLIP_MASK_GL_BYTES",fA.INST_CLIP_MASK_GL_MAX*fA.INST_CLIP_MASK_GL_STRIDE);x(fA,"INST_ALPHA_GL_MAX",1024);x(fA,"INST_ALPHA_GL_BYTES",fA.INST_ALPHA_GL_MAX*48);x(fA,"INST_VAP_GL_MAX",1024);x(fA,"INST_VAP_GL_BYTES",fA.INST_VAP_GL_MAX*128);let oE=fA;var Bt=Object.defineProperty,Ct=(C,A,g)=>A in C?Bt(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,mA=(C,A,g)=>Ct(C,typeof A!="symbol"?A+"":A,g);function Qt(C,A){let g=C.replace(/^#version\s+300\s+es\s*/m,"");return A==="vertex"?(g=g.replace(/layout\s*\(location\s*=\s*\d+\)\s*in\s+/g,"attribute "),g=g.replace(/\bout\s+/g,"varying ")):(g=g.replace(/\bin\s+/g,"varying "),g=g.replace(/out\s+vec4\s+fragColor\s*;\s*/g,""),g=g.replace(/\bfragColor\b/g,"gl_FragColor"),g=g.replace(/\btexture\s*\(/g,"texture2D(")),g}function EQ(C,A,g,I){const B=C.createShader(A);if(!B)throw new Error("Failed to create shader");if(C.shaderSource(B,Qt(g,I)),C.compileShader(B),!C.getShaderParameter(B,C.COMPILE_STATUS)){const Q=C.getShaderInfoLog(B);throw C.deleteShader(B),new Error(`Shader compile failed: ${Q}`)}return B}function fI(C,A,g,I){const B=EQ(C,C.VERTEX_SHADER,A,"vertex"),Q=EQ(C,C.FRAGMENT_SHADER,g,"fragment"),E=C.createProgram();if(!E)throw C.deleteShader(B),C.deleteShader(Q),new Error("Failed to create program");C.attachShader(E,B),C.attachShader(E,Q);for(const[e,i]of Object.entries(I))C.bindAttribLocation(E,i,e);if(C.linkProgram(E),!C.getProgramParameter(E,C.LINK_STATUS)){const e=C.getProgramInfoLog(E);throw C.deleteProgram(E),C.deleteShader(B),C.deleteShader(Q),new Error(`Program link failed: ${e}`)}return C.deleteShader(B),C.deleteShader(Q),E}function eQ(C,A=C.LINEAR,g=C.CLAMP_TO_EDGE){const I=C.createTexture();if(!I)throw new Error("Failed to create texture");return C.bindTexture(C.TEXTURE_2D,I),C.texParameteri(C.TEXTURE_2D,C.TEXTURE_MIN_FILTER,A),C.texParameteri(C.TEXTURE_2D,C.TEXTURE_MAG_FILTER,A),C.texParameteri(C.TEXTURE_2D,C.TEXTURE_WRAP_S,g),C.texParameteri(C.TEXTURE_2D,C.TEXTURE_WRAP_T,g),I}const Et=new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]);class lC{constructor(A,g=!0){mA(this,"type","webgl1"),mA(this,"canvas"),mA(this,"maxTextureSize",4096),mA(this,"antialias"),mA(this,"gl"),mA(this,"nextId",1),mA(this,"buffers",new Map),mA(this,"textures",new Map),mA(this,"programs",new Map),mA(this,"cachedDrawProgram",null),mA(this,"cachedTex0Id",null),mA(this,"cachedProjectionRef",null),mA(this,"cachedProjectionShader",null),mA(this,"lastDrawSubmitted",!1),mA(this,"videoUploadCanvas",null),mA(this,"videoUploadCtx",null),mA(this,"supportsUintIndices",!1),this.canvas=A,this.antialias=g}async init(){const A=this.canvas.getContext("webgl",{alpha:!0,premultipliedAlpha:!0,antialias:this.antialias,depth:!1,stencil:!0});if(!A)throw new Error("WebGL1 not available");this.gl=A,this.maxTextureSize=A.getParameter(A.MAX_TEXTURE_SIZE)||this.maxTextureSize,this.supportsUintIndices=!!A.getExtension("OES_element_index_uint"),A.enable(A.BLEND),A.blendFunc(A.ONE,A.ONE_MINUS_SRC_ALPHA),A.clearColor(0,0,0,0),A.pixelStorei(A.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),A.pixelStorei(A.UNPACK_COLORSPACE_CONVERSION_WEBGL,A.NONE),this.initPrograms()}initPrograms(){const A=this.gl,g=fI(A,P.svgaBatchPremul.vert,P.svgaBatchPremul.frag,{a_position:0,a_color:1,a_uv:2});this.programs.set("svga-batch-premul",this.makeProgramEntry(g,{transform:!0,opacity:!0})),this.bindProgramSamplers(g,{u_atlas:0});const I=fI(A,P.vap.vert,P.vap.frag,{a_position:0,a_rgbUV:1,a_alphaUV:2});this.programs.set("vap",this.makeProgramEntry(I,{transform:!0,atlasRemap:!0,opacity:!0,rgbPremultiplied:!0})),this.bindProgramSamplers(I,{u_video:0});const B=fI(A,P.alphaVideo.vert,P.alphaVideo.frag,{a_position:0,a_uv:1});this.programs.set("alpha-video",this.makeProgramEntry(B,{transform:!0,atlasRemap:!0,opacity:!0,rgbPremultiplied:!0})),this.bindProgramSamplers(B,{u_video:0});const Q=fI(A,P.rgbaTextured.vert,P.rgbaTextured.frag,{a_position:0,a_uv:1});this.programs.set("rgba-textured",this.makeProgramEntry(Q,{transform:!0,atlasRemap:!0,opacity:!0})),this.bindProgramSamplers(Q,{u_video:0});const E=fI(A,P.clipMask.vert,P.clipMask.frag,{a_position:0});this.programs.set("clip-mask",this.makeProgramEntry(E,{transform:!0}))}makeProgramEntry(A,g={}){const I=this.gl;return{program:A,projLoc:I.getUniformLocation(A,"u_projection"),transformLoc:g.transform?I.getUniformLocation(A,"u_transform"):null,atlasRemapLoc:g.atlasRemap?I.getUniformLocation(A,"u_atlasRemap"):null,opacityLoc:g.opacity?I.getUniformLocation(A,"u_opacity"):null,rgbPremultipliedLoc:g.rgbPremultiplied?I.getUniformLocation(A,"u_rgbPremultiplied"):null,lastOpacity:null,lastRgbPremultiplied:null}}applyIdentityTransform(A){A.transformLoc&&this.gl.uniformMatrix4fv(A.transformLoc,!1,Et)}bindProgramSamplers(A,g){const I=this.gl;I.useProgram(A);for(const B in g){const Q=I.getUniformLocation(A,B);Q&&I.uniform1i(Q,g[B])}}applyDrawUniforms(A,g,I){const B=this.gl,Q=I.uniforms.u_projection;if(A.projLoc&&Q instanceof Float32Array&&Q.length>=16&&(this.cachedProjectionShader!==g||this.cachedProjectionRef!==Q)&&(B.uniformMatrix4fv(A.projLoc,!1,Q),this.cachedProjectionShader=g,this.cachedProjectionRef=Q),A.transformLoc){const E=I.uniforms.u_transform;E instanceof Float32Array?B.uniformMatrix4fv(A.transformLoc,!1,E):this.applyIdentityTransform(A)}if(A.atlasRemapLoc){const E=I.uniforms.u_atlasRemap;E instanceof Float32Array&&B.uniform4fv(A.atlasRemapLoc,E)}if(A.opacityLoc){const E=I.uniforms.u_opacity,e=typeof E=="number"?E:1;A.lastOpacity!==e&&(B.uniform1f(A.opacityLoc,e),A.lastOpacity=e)}if(A.rgbPremultipliedLoc){const E=I.uniforms.u_rgbPremultiplied;typeof E=="number"&&A.lastRgbPremultiplied!==E&&(B.uniform1f(A.rgbPremultipliedLoc,E),A.lastRgbPremultiplied=E)}}beginFrame(A={}){const g=this.gl;try{return g.viewport(0,0,this.canvas.width,this.canvas.height),g.colorMask(!0,!0,!0,!0),g.stencilMask(255),g.disable(g.STENCIL_TEST),g.disable(g.SCISSOR_TEST),g.clearColor(0,0,0,0),g.clearStencil(0),g.clear(g.COLOR_BUFFER_BIT|(A.stencil?g.STENCIL_BUFFER_BIT:0)),this.cachedDrawProgram=null,this.cachedTex0Id=null,this.cachedProjectionRef=null,this.cachedProjectionShader=null,ag}catch(I){return $("submission-error",this.errorMessage(I))}}endFrame(){try{return this.gl.flush(),ag}catch(A){return $("submission-error",this.errorMessage(A))}}abortFrame(){const A=this.gl;try{return A.colorMask(!0,!0,!0,!0),A.stencilMask(255),A.disable(A.STENCIL_TEST),A.disable(A.SCISSOR_TEST),A.clearColor(0,0,0,0),A.clearStencil(0),A.clear(A.COLOR_BUFFER_BIT|A.STENCIL_BUFFER_BIT),A.flush(),this.cachedDrawProgram=null,this.cachedTex0Id=null,this.cachedProjectionRef=null,this.cachedProjectionShader=null,ag}catch(g){return $("submission-error",this.errorMessage(g))}}errorMessage(A){return A instanceof Error?A.message:String(A)}getBufferSourceByteLength(A){return ArrayBuffer.isView(A),A.byteLength}normalizeIndexSource(A){if(this.supportsUintIndices)return A;if(ArrayBuffer.isView(A)){if(A instanceof Uint16Array)return A;if("length"in A)return Uint16Array.from(A);const g=new Uint8Array(A.buffer,A.byteOffset,A.byteLength);return new Uint16Array(g.buffer.slice(g.byteOffset,g.byteOffset+g.byteLength))}return new Uint16Array(A)}createBuffer(A,g){const I=this.gl,B=I.createBuffer();if(!B)throw new Error("Failed to create buffer");const Q=g==="index"?this.normalizeIndexSource(A):A,E=g==="index"?I.ELEMENT_ARRAY_BUFFER:I.ARRAY_BUFFER;I.bindBuffer(E,B),I.bufferData(E,Q,I.DYNAMIC_DRAW);const e=this.nextId++;return this.buffers.set(e,{buffer:B,usage:g,byteLength:this.getBufferSourceByteLength(Q)}),{id:e,usage:g}}updateBuffer(A,g,I=0){const B=this.buffers.get(A.id);if(!B)return;const Q=this.gl,E=B.usage==="index"?this.normalizeIndexSource(g):g,e=B.usage==="index"?Q.ELEMENT_ARRAY_BUFFER:Q.ARRAY_BUFFER;Q.bindBuffer(e,B.buffer);const i=this.getBufferSourceByteLength(E);I===0&&i<=B.byteLength?Q.bufferSubData(e,0,E):(Q.bufferData(e,E,Q.DYNAMIC_DRAW),B.byteLength=i)}deleteBuffer(A){const g=this.buffers.get(A.id);g&&(this.gl.deleteBuffer(g.buffer),this.buffers.delete(A.id))}ensureVideoUploadCanvas(A,g){return this.videoUploadCanvas||(this.videoUploadCanvas=document.createElement("canvas"),this.videoUploadCtx=this.videoUploadCanvas.getContext("2d")),!this.videoUploadCtx||!this.videoUploadCanvas?null:((this.videoUploadCanvas.width!==A||this.videoUploadCanvas.height!==g)&&(this.videoUploadCanvas.width=A,this.videoUploadCanvas.height=g),this.videoUploadCtx)}uploadVideoFrameToTexture(A,g,I){const B=this.gl,Q=g.videoWidth,E=g.videoHeight;if(g.readyState<HTMLMediaElement.HAVE_CURRENT_DATA||Q<=0||E<=0)return!1;const e=this.ensureVideoUploadCanvas(Q,E);return!e||!this.videoUploadCanvas?!1:(e.drawImage(g,0,0,Q,E),B.bindTexture(B.TEXTURE_2D,A),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,1),I?B.texImage2D(B.TEXTURE_2D,0,B.RGBA,B.RGBA,B.UNSIGNED_BYTE,this.videoUploadCanvas):B.texSubImage2D(B.TEXTURE_2D,0,0,0,B.RGBA,B.UNSIGNED_BYTE,this.videoUploadCanvas),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,0),!0)}createTexture(A,g){var I,B;const Q=this.gl,E=g.filter==="nearest"?Q.NEAREST:Q.LINEAR,e=eQ(Q,E),i=g.premultiplyAlpha===!0;let t=(I=g.width)!=null?I:1,a=(B=g.height)!=null?B:1;if(A instanceof ArrayBuffer)Q.texImage2D(Q.TEXTURE_2D,0,Q.RGBA,t,a,0,Q.RGBA,Q.UNSIGNED_BYTE,new Uint8Array(A));else if(typeof VideoFrame!="undefined"&&A instanceof VideoFrame)Q.bindTexture(Q.TEXTURE_2D,e),Q.pixelStorei(Q.UNPACK_FLIP_Y_WEBGL,1),Q.pixelStorei(Q.UNPACK_PREMULTIPLY_ALPHA_WEBGL,i?1:0),Q.texImage2D(Q.TEXTURE_2D,0,Q.RGBA,Q.RGBA,Q.UNSIGNED_BYTE,A),Q.pixelStorei(Q.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),Q.pixelStorei(Q.UNPACK_FLIP_Y_WEBGL,0),t=A.displayWidth||A.codedWidth||t,a=A.displayHeight||A.codedHeight||a;else if(A instanceof HTMLVideoElement)Q.bindTexture(Q.TEXTURE_2D,e),Q.pixelStorei(Q.UNPACK_PREMULTIPLY_ALPHA_WEBGL,i?1:0),this.uploadVideoFrameToTexture(e,A,!0),Q.pixelStorei(Q.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),t=A.videoWidth||t,a=A.videoHeight||a;else{const s=i,n=g.sourcePremultiplied===!0,r=s&&!n?1:0;Q.bindTexture(Q.TEXTURE_2D,e),Q.pixelStorei(Q.UNPACK_FLIP_Y_WEBGL,0),Q.pixelStorei(Q.UNPACK_PREMULTIPLY_ALPHA_WEBGL,r),Q.texImage2D(Q.TEXTURE_2D,0,Q.RGBA,Q.RGBA,Q.UNSIGNED_BYTE,A),Q.pixelStorei(Q.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),Q.pixelStorei(Q.UNPACK_FLIP_Y_WEBGL,0),"width"in A&&(t=A.width,a=A.height)}const o=this.nextId++;return this.textures.set(o,{texture:e,width:t,height:a}),{id:o,width:t,height:a}}createEmptyTexture(A,g,I={}){const B=this.gl,Q=I.filter==="nearest"?B.NEAREST:B.LINEAR,E=eQ(B,Q),e=Math.max(1,Math.floor(A)),i=Math.max(1,Math.floor(g));B.bindTexture(B.TEXTURE_2D,E),B.texImage2D(B.TEXTURE_2D,0,B.RGBA,e,i,0,B.RGBA,B.UNSIGNED_BYTE,null);const t=this.nextId++;return this.textures.set(t,{texture:E,width:e,height:i}),{id:t,width:e,height:i}}updateTexture(A,g){const I=this.textures.get(A.id);if(!I)return;if(typeof VideoFrame!="undefined"&&g instanceof VideoFrame){const i=this.gl,t=XI(g),a=OI(g),o=t===I.width&&a===I.height;i.bindTexture(i.TEXTURE_2D,I.texture),i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,1),o?i.texSubImage2D(i.TEXTURE_2D,0,0,0,i.RGBA,i.UNSIGNED_BYTE,g):(i.texImage2D(i.TEXTURE_2D,0,i.RGBA,i.RGBA,i.UNSIGNED_BYTE,g),t>0&&a>0&&(I.width=t,I.height=a)),i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,0);return}if(g instanceof HTMLVideoElement){const i=g.videoWidth,t=g.videoHeight,a=i!==I.width||t!==I.height;this.uploadVideoFrameToTexture(I.texture,g,a)&&a&&(I.width=i,I.height=t);return}const B=this.gl,Q=XI(g),E=OI(g),e=Q===I.width&&E===I.height;B.bindTexture(B.TEXTURE_2D,I.texture),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,0),e?B.texSubImage2D(B.TEXTURE_2D,0,0,0,B.RGBA,B.UNSIGNED_BYTE,g):(B.texImage2D(B.TEXTURE_2D,0,B.RGBA,B.RGBA,B.UNSIGNED_BYTE,g),Q>0&&E>0&&(I.width=Q,I.height=E)),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,0)}updateTextureRegion(A,g,I,B,Q,E){const e=this.textures.get(A.id);if(!e)return;const i=this.gl;i.bindTexture(i.TEXTURE_2D,e.texture);let t,a;if(typeof VideoFrame!="undefined"&&g instanceof VideoFrame)t=g.displayWidth||g.codedWidth,a=g.displayHeight||g.codedHeight;else if(g instanceof HTMLVideoElement){if(g.readyState<HTMLMediaElement.HAVE_CURRENT_DATA)return;t=g.videoWidth,a=g.videoHeight}else{const n=g;t=n.width,a=n.height}if(!t||!a)return;const o=Q!=null?Q:t,s=E!=null?E:a;if(o!==t||s!==a){const n=this.ensureVideoUploadCanvas(o,s);if(!n||!this.videoUploadCanvas)return;n.drawImage(g,0,0,o,s),i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,1),i.texSubImage2D(i.TEXTURE_2D,0,I,B,i.RGBA,i.UNSIGNED_BYTE,this.videoUploadCanvas),i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,0);return}if(typeof VideoFrame!="undefined"&&g instanceof VideoFrame){i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,1),i.texSubImage2D(i.TEXTURE_2D,0,I,B,i.RGBA,i.UNSIGNED_BYTE,g),i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,0);return}if(g instanceof HTMLVideoElement){i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,1),i.texSubImage2D(i.TEXTURE_2D,0,I,B,i.RGBA,i.UNSIGNED_BYTE,g),i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,0);return}i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,0),i.texSubImage2D(i.TEXTURE_2D,0,I,B,i.RGBA,i.UNSIGNED_BYTE,g)}deleteTexture(A){const g=this.textures.get(A.id);g&&(this.gl.deleteTexture(g.texture),this.textures.delete(A.id),this.cachedTex0Id===A.id&&(this.cachedTex0Id=null))}draw(A){this.lastDrawSubmitted=!1;const g=A.stencil==="clear"||A.shader==="clip-mask"?"clip-mask":A.shader;if(!this.programs.has(g))return $("invalid-command",`WebGL1 shader unavailable: ${g}`);if(!this.buffers.has(A.vertexBuffer.id)||!this.buffers.has(A.indexBuffer.id))return $("missing-resource","WebGL1 draw buffer is unavailable");for(const I of A.textures)if(!this.textures.has(I.id))return $("missing-resource",`WebGL1 texture ${I.id} is unavailable`);try{this.drawInternal(A)}catch(I){return $("submission-error",this.errorMessage(I))}return this.lastDrawSubmitted?ag:$("invalid-command",`WebGL1 rejected ${A.shader}`)}drawInternal(A){var g;const I=this.gl,B=(g=A.stencil)!=null?g:"none",Q=A.shader==="clip-mask"||B==="clear"?"clip-mask":A.shader;if(Q==="svga-instanced-premul"||Q==="alpha-video-instanced"||Q==="vap-instanced")throw new Error(`WebGL1 backend does not support instanced shader: ${Q}`);const E=this.programs.get(Q);if(!E)return;B==="clear"?(I.enable(I.STENCIL_TEST),I.stencilFunc(I.ALWAYS,0,255),I.stencilOp(I.KEEP,I.KEEP,I.REPLACE),I.stencilMask(255),I.colorMask(!1,!1,!1,!1)):B==="write"||A.shader==="clip-mask"?(I.enable(I.STENCIL_TEST),I.stencilFunc(I.ALWAYS,1,255),I.stencilOp(I.KEEP,I.KEEP,I.REPLACE),I.stencilMask(255),I.colorMask(!1,!1,!1,!1)):B==="test"?(I.enable(I.STENCIL_TEST),I.stencilFunc(I.EQUAL,1,255),I.stencilOp(I.KEEP,I.KEEP,I.KEEP),I.stencilMask(0),I.colorMask(!0,!0,!0,!0)):(I.disable(I.STENCIL_TEST),I.colorMask(!0,!0,!0,!0)),this.cachedDrawProgram!==Q&&(I.useProgram(E.program),this.cachedDrawProgram=Q);for(let t=0;t<A.textures.length;t++){const a=A.textures[t].id;if(t===0&&this.cachedTex0Id===a)continue;const o=this.textures.get(a);o&&(I.activeTexture(I.TEXTURE0+t),I.bindTexture(I.TEXTURE_2D,o.texture),t===0&&(this.cachedTex0Id=a))}this.applyDrawUniforms(E,Q,A);const e=this.buffers.get(A.vertexBuffer.id),i=this.buffers.get(A.indexBuffer.id);!e||!i||(I.bindBuffer(I.ARRAY_BUFFER,e.buffer),I.bindBuffer(I.ELEMENT_ARRAY_BUFFER,i.buffer),this.setupAttributes(Q),I.drawElements(I.TRIANGLES,A.indexCount,this.supportsUintIndices?I.UNSIGNED_INT:I.UNSIGNED_SHORT,0),this.lastDrawSubmitted=!0,(B!=="none"||A.shader==="clip-mask")&&(I.disable(I.STENCIL_TEST),I.colorMask(!0,!0,!0,!0)))}clearStencil(){const A=this.gl;A.stencilMask(255),A.clear(A.STENCIL_BUFFER_BIT)}setScissor(A,g,I,B){const Q=this.gl,E=this.canvas.width,e=this.canvas.height,i=Math.max(0,Math.min(E,Math.floor(A))),t=Math.max(0,Math.min(e,Math.floor(g))),a=Math.max(i,Math.min(E,Math.ceil(A+I))),o=Math.max(t,Math.min(e,Math.ceil(g+B)));Q.enable(Q.SCISSOR_TEST),Q.scissor(i,e-o,a-i,o-t)}resetScissor(){this.gl.disable(this.gl.SCISSOR_TEST)}setupAttributes(A){const g=this.gl;g.disableVertexAttribArray(0),g.disableVertexAttribArray(1),g.disableVertexAttribArray(2),A==="svga-batch-premul"?(g.enableVertexAttribArray(0),g.vertexAttribPointer(0,3,g.FLOAT,!1,36,0),g.enableVertexAttribArray(1),g.vertexAttribPointer(1,4,g.FLOAT,!1,36,12),g.enableVertexAttribArray(2),g.vertexAttribPointer(2,2,g.FLOAT,!1,36,28)):A==="vap"?(g.enableVertexAttribArray(0),g.vertexAttribPointer(0,2,g.FLOAT,!1,24,0),g.enableVertexAttribArray(1),g.vertexAttribPointer(1,2,g.FLOAT,!1,24,8),g.enableVertexAttribArray(2),g.vertexAttribPointer(2,2,g.FLOAT,!1,24,16)):A==="clip-mask"?(g.enableVertexAttribArray(0),g.vertexAttribPointer(0,2,g.FLOAT,!1,8,0)):(g.enableVertexAttribArray(0),g.vertexAttribPointer(0,2,g.FLOAT,!1,16,0),g.enableVertexAttribArray(1),g.vertexAttribPointer(1,2,g.FLOAT,!1,16,8))}destroy(){const A=this.gl;for(const[,I]of this.buffers)A.deleteBuffer(I.buffer);for(const[,I]of this.textures)A.deleteTexture(I.texture);for(const[,I]of this.programs)A.deleteProgram(I.program);this.buffers.clear(),this.textures.clear(),this.programs.clear();const g=A.getExtension("WEBGL_lose_context");g==null||g.loseContext()}}function sE(){return typeof GPUQueue!="undefined"&&typeof GPUQueue.prototype.copyExternalImageToTexture=="function"}function et(){return typeof navigator!="undefined"&&"gpu"in navigator&&sE()}function it(){if(typeof document=="undefined")return!1;try{return document.createElement("canvas").getContext("webgl2")!==null}catch(C){return!1}}function tt(){if(typeof document=="undefined")return!1;try{return document.createElement("canvas").getContext("webgl")!==null}catch(C){return!1}}function at(){return typeof SharedArrayBuffer!="undefined"&&typeof Atomics!="undefined"&&globalThis.crossOriginIsolated===!0}function nE(){return typeof OffscreenCanvas!="undefined"}async function rE(C,A=!0,g=!0,I=!1){const B=g,Q=g;if(I){const e=new lC(C,Q);return await e.init(),e}if(A&&typeof navigator!="undefined"&&"gpu"in navigator&&sE())try{const e=await navigator.gpu.requestAdapter({powerPreference:"high-performance"});if(e){const i=new aE(C,e,B);return await i.init(),i}else console.warn("[GiftStage] WebGPU unavailable: requestAdapter returned null, fallback to WebGL2/WebGL1.")}catch(e){console.warn(`[GiftStage] WebGPU init failed: ${e instanceof Error?e.message:String(e)}, fallback to WebGL2/WebGL1.`)}else A&&typeof navigator!="undefined"&&"gpu"in navigator&&console.warn("[GiftStage] WebGPU unavailable: GPUQueue.copyExternalImageToTexture is not supported, fallback to WebGL2/WebGL1.");try{const e=new oE(C,Q);return await e.init(),e}catch(e){console.warn(`[GiftStage] WebGL2 init failed: ${e instanceof Error?e.message:String(e)}, fallback to WebGL1.`)}const E=new lC(C,Q);return await E.init(),E}const ot={width:1920,height:1080},st={width:2560,height:1440};function nt(C=typeof navigator!="undefined"?navigator:void 0){var A;if(!(C!=null&&C.userAgent))return!1;const g=C.userAgent;return!!(/Android|iPhone|iPod|Mobile/i.test(g)||/iPad/i.test(g)||/Macintosh/i.test(g)&&((A=C.maxTouchPoints)!=null?A:0)>1)}function rt(C){return nt(C)?ot:st}function ct(C,A,g){const I=C.clientWidth||C.getBoundingClientRect().width||0,B=C.clientHeight||C.getBoundingClientRect().height||0,Q=A>0&&Number.isFinite(A)?A:1;let E=Math.max(1,Math.round(I*Q)),e=Math.max(1,Math.round(B*Q));if(g!==!1){const i=g!=null?g:rt(),t=Math.max(i.width,i.height),a=Math.min(i.width,i.height);if(t>0&&a>0){const o=Math.min(1,t/Math.max(E,e),a/Math.min(E,e));o<1&&(E=Math.max(1,Math.round(E*o)),e=Math.max(1,Math.round(e*o)))}}(C.width!==E||C.height!==e)&&(C.width=E,C.height=e)}function Zg(C){const A=C.clientWidth||C.getBoundingClientRect().width||1,g=C.clientHeight||C.getBoundingClientRect().height||1;return{sx:C.width/Math.max(1,A),sy:C.height/Math.max(1,g)}}const II=9,ht={a:1,b:0,c:0,d:1,tx:0,ty:0};function cE(C,A,g){return(C*g+A)*II}function lt(C,A,g){var I,B;const Q=(I=C.shapesIndex[A*C.frameCount+g])!=null?I:-1;return Q<0?null:(B=C.shapesTable[Q])!=null?B:null}function hE(C,A){var g,I,B,Q,E,e,i;const t=C.length;let a=A!=null?A:0;if(a<=0)for(const D of C)a=Math.max(a,D.frames.length);const o=C.map(D=>D.imageKey),s=new Float32Array(t*a*II),n=[],r=new Map,c=new Int32Array(t*a).fill(-1),h=[],l=new Int32Array(t*a).fill(-1);let w=!1;for(let D=0;D<t;D++){const y=C[D];let R=null,F=-1;for(let d=0;d<a;d++){const f=y.frames[d],u=cE(D,d,a);if(!f){s[u+2]=1,s[u+5]=1;continue}const G=(I=(g=f.layout)==null?void 0:g.width)!=null?I:0,S=(Q=(B=f.layout)==null?void 0:B.height)!=null?Q:0,M=(E=f.transform)!=null?E:ht;s[u]=G,s[u+1]=S,s[u+2]=M.a,s[u+3]=M.b,s[u+4]=M.c,s[u+5]=M.d,s[u+6]=M.tx,s[u+7]=M.ty,s[u+8]=f.alpha;const N=(e=f.clipPath)!=null?e:"";if(N.length>0){let k=r.get(N);k===void 0&&(k=n.length,n.push(N),r.set(N,k)),c[D*a+d]=k}const U=f.shapes;if(!U||U.length===0){R=null,F=-1;continue}if(((i=U[0])==null?void 0:i.kind)==="keep"){F>=0&&(l[D*a+d]=F,w=!0);continue}if(R!==null&&U===R&&F>=0){l[D*a+d]=F,w=!0;continue}const p=U.every(k=>k.kind!=="keep")?U:U.filter(k=>k.kind!=="keep");if(p.length===0){R=null,F=-1;continue}R=p,F=h.length,h.push(p),l[D*a+d]=F,w=!0}}return{spriteCount:t,frameCount:a,imageKeys:o,frameData:s,clipPaths:n,clipPathIndex:c,shapesTable:h,shapesIndex:l,hasAnyShapes:w}}function Tg(C,A){if(A.allFramesInsideViewBox!==void 0)return A.allFramesInsideViewBox;const g=C.viewBoxWidth,I=C.viewBoxHeight;let B=g>0&&I>0&&!A.hasAnyShapes;const Q=B?Math.max(g,I)*.001+.001:0;A:for(let E=0;B&&E<A.spriteCount;E++)for(let e=0;e<A.frameCount;e++){const i=cE(E,e,A.frameCount),t=A.frameData[i],a=A.frameData[i+1];if(t<=0||a<=0)continue;const o=A.frameData[i+2],s=A.frameData[i+3],n=A.frameData[i+4],r=A.frameData[i+5],c=A.frameData[i+6],h=A.frameData[i+7],l=o*t+c,w=s*t+h,D=o*t+n*a+c,y=s*t+r*a+h,R=n*a+c,F=r*a+h;if(Math.min(c,l,D,R)<-Q||Math.min(h,w,y,F)<-Q||Math.max(c,l,D,R)>g+Q||Math.max(h,w,y,F)>I+Q){B=!1;break A}}return A.allFramesInsideViewBox=B,B}function dB(C,A,g){const I=Math.floor(C.length/gI),B=Math.floor(A.length/(hI*fg)),Q=Math.floor(g.length/mI),E=Math.min(I,B,Q);for(let e=0;e<E;e++){const i=e*gI,t=C[i],a=C[i+1],o=C[i+2],s=C[i+3],n=C[i+4],r=C[i+5],c=C[i+6],h=C[i+7],l=C[i+8],w=C[i+9],D=C[i+10],y=C[i+11],R=C[i+12],F=c,d=h,f=o*t+c,u=s*t+h,G=o*t+n*a+c,S=s*t+r*a+h,M=n*a+c,N=r*a+h,U=e*hI*fg;A[U]=F,A[U+1]=d,A[U+2]=0,A[U+3]=1,A[U+4]=1,A[U+5]=1,A[U+6]=l,A[U+7]=w,A[U+8]=D;const p=U+fg;A[p]=f,A[p+1]=u,A[p+2]=0,A[p+3]=1,A[p+4]=1,A[p+5]=1,A[p+6]=l,A[p+7]=y,A[p+8]=D;const k=U+2*fg;A[k]=G,A[k+1]=S,A[k+2]=0,A[k+3]=1,A[k+4]=1,A[k+5]=1,A[k+6]=l,A[k+7]=y,A[k+8]=R;const m=U+3*fg;A[m]=M,A[m+1]=N,A[m+2]=0,A[m+3]=1,A[m+4]=1,A[m+5]=1,A[m+6]=l,A[m+7]=w,A[m+8]=R;const H=e*mI,v=e*hI;g[H]=v,g[H+1]=v+1,g[H+2]=v+2,g[H+3]=v,g[H+4]=v+2,g[H+5]=v+3}return E}function Dt(C,A,g){const I=tQ(C,_.__wbindgen_malloc),B=qA;var Q=tQ(A,_.__wbindgen_malloc),E=qA,e=yE(g,_.__wbindgen_malloc),i=qA;return _.build_batch_vertices(I,B,Q,E,A,e,i,g)>>>0}function wt(C){const A=qB(C,_.__wbindgen_malloc),g=qA,I=_.decode_svga(A,g);if(I[2])throw PI(I[1]);return PI(I[0])}function yt(C){const A=qB(C,_.__wbindgen_malloc),g=qA,I=_.decode_svga_payload(A,g);if(I[3])throw PI(I[2]);var B=bB(I[0],I[1]).slice();return _.__wbindgen_free(I[0],I[1]*1,1),B}function Ft(C){const A=qB(C,_.__wbindgen_malloc),g=qA,I=_.decode_svga_payload_profiled(A,g);if(I[3])throw PI(I[2]);var B=bB(I[0],I[1]).slice();return _.__wbindgen_free(I[0],I[1]*1,1),B}function dt(C){const A=qB(C,_.__wbindgen_malloc),g=qA,I=_.inflate(A,g);if(I[3])throw PI(I[2]);var B=bB(I[0],I[1]).slice();return _.__wbindgen_free(I[0],I[1]*1,1),B}function lE(){_.init()}function Gt(){return _.take_svga_payload_profile()}function ut(C,A){const g=Mt(C,_.__wbindgen_malloc),I=qA,B=yE(A,_.__wbindgen_malloc),Q=qA,E=_.triangulate_clip_polygons(g,I,B,Q);var e=Rt(E[0],E[1]).slice();return _.__wbindgen_free(E[0],E[1]*4,4),e}function DE(){return{__proto__:null,"./gift_stage_wasm_bg.js":{__proto__:null,__wbg_Error_2e59b1b37a9a34c3:function(A,g){return Error(VB(A,g))},__wbg_String_8564e559799eccda:function(A,g){const I=String(g),B=Nt(I,_.__wbindgen_malloc,_.__wbindgen_realloc),Q=qA;iQ().setInt32(A+4,Q,!0),iQ().setInt32(A+0,B,!0)},__wbg___wbindgen_copy_to_typed_array_a4db337751e0b328:function(A,g,I){new Uint8Array(I.buffer,I.byteOffset,I.byteLength).set(bB(A,g))},__wbg___wbindgen_is_string_b29b5c5a8065ba1a:function(A){return typeof A=="string"},__wbg___wbindgen_throw_81fc77679af83bc6:function(A,g){throw new Error(VB(A,g))},__wbg_new_4f9fafbb3909af72:function(){return new Object},__wbg_new_99cabae501c0a8a0:function(){return new Map},__wbg_new_f3c9df4f38f3f798:function(){return new Array},__wbg_now_008d9b84600b5c19:function(){return performance.now()},__wbg_set_08463b1df38a7e29:function(A,g,I){return A.set(g,I)},__wbg_set_6be42768c690e380:function(A,g,I){A[g]=I},__wbg_set_6c60b2e8ad0e9383:function(A,g,I){A[g>>>0]=I},__wbindgen_cast_0000000000000001:function(A){return A},__wbindgen_cast_0000000000000002:function(A,g){return VB(A,g)},__wbindgen_cast_0000000000000003:function(A){return BigInt.asUintN(64,A)},__wbindgen_init_externref_table:function(){const A=_.__wbindgen_externrefs,g=A.grow(4);A.set(0,void 0),A.set(g+0,void 0),A.set(g+1,null),A.set(g+2,!0),A.set(g+3,!1)}}}}function Rt(C,A){return C=C>>>0,wE().subarray(C/4,C/4+A)}function bB(C,A){return C=C>>>0,lI().subarray(C/1,C/1+A)}let zg=null;function iQ(){return(zg===null||zg.buffer.detached===!0||zg.buffer.detached===void 0&&zg.buffer!==_.memory.buffer)&&(zg=new DataView(_.memory.buffer)),zg}let UI=null;function ft(){return(UI===null||UI.byteLength===0)&&(UI=new Float32Array(_.memory.buffer)),UI}let kI=null;function St(){return(kI===null||kI.byteLength===0)&&(kI=new Float64Array(_.memory.buffer)),kI}function VB(C,A){return C=C>>>0,kt(C,A)}let YI=null;function wE(){return(YI===null||YI.byteLength===0)&&(YI=new Uint32Array(_.memory.buffer)),YI}let pI=null;function lI(){return(pI===null||pI.byteLength===0)&&(pI=new Uint8Array(_.memory.buffer)),pI}function yE(C,A){const g=A(C.length*4,4)>>>0;return wE().set(C,g/4),qA=C.length,g}function qB(C,A){const g=A(C.length*1,1)>>>0;return lI().set(C,g/1),qA=C.length,g}function tQ(C,A){const g=A(C.length*4,4)>>>0;return ft().set(C,g/4),qA=C.length,g}function Mt(C,A){const g=A(C.length*8,8)>>>0;return St().set(C,g/8),qA=C.length,g}function Nt(C,A,g){if(g===void 0){const e=JI.encode(C),i=A(e.length,1)>>>0;return lI().subarray(i,i+e.length).set(e),qA=e.length,i}let I=C.length,B=A(I,1)>>>0;const Q=lI();let E=0;for(;E<I;E++){const e=C.charCodeAt(E);if(e>127)break;Q[B+E]=e}if(E!==I){E!==0&&(C=C.slice(E)),B=g(B,I,I=E+C.length*3,1)>>>0;const e=lI().subarray(B+E,B+I),i=JI.encodeInto(C,e);E+=i.written,B=g(B,I,E,1)>>>0}return qA=E,B}function PI(C){const A=_.__wbindgen_externrefs.get(C);return _.__externref_table_dealloc(C),A}let GB=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0});GB.decode();const Ut=2146435072;let ZB=0;function kt(C,A){return ZB+=A,ZB>=Ut&&(GB=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}),GB.decode(),ZB=A),GB.decode(lI().subarray(C,C+A))}const JI=new TextEncoder;"encodeInto"in JI||(JI.encodeInto=function(C,A){const g=JI.encode(C);return A.set(g),{read:C.length,written:g.length}});let qA=0,_;function FE(C,A){return _=C.exports,zg=null,UI=null,kI=null,YI=null,pI=null,_.__wbindgen_start(),_}async function Yt(C,A){if(typeof Response=="function"&&C instanceof Response){if(typeof WebAssembly.instantiateStreaming=="function")try{return await WebAssembly.instantiateStreaming(C,A)}catch(B){if(C.ok&&g(C.type)&&C.headers.get("Content-Type")!=="application/wasm")console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n",B);else throw B}const I=await C.arrayBuffer();return await WebAssembly.instantiate(I,A)}else{const I=await WebAssembly.instantiate(C,A);return I instanceof WebAssembly.Instance?{instance:I,module:C}:I}function g(I){switch(I){case"basic":case"cors":case"default":return!0}return!1}}function pt(C){if(_!==void 0)return _;C!==void 0&&(Object.getPrototypeOf(C)===Object.prototype?{module:C}=C:console.warn("using deprecated parameters for `initSync()`; pass a single object instead"));const A=DE();C instanceof WebAssembly.Module||(C=new WebAssembly.Module(C));const g=new WebAssembly.Instance(C,A);return FE(g)}async function dE(C){if(_!==void 0)return _;C!==void 0&&(Object.getPrototypeOf(C)===Object.prototype?{module_or_path:C}=C:console.warn("using deprecated parameters for the initialization function; pass a single object instead")),C===void 0&&(C=new URL("data:application/wasm;base64,AGFzbQEAAAAB6gI0YAJ/fwF/YAR/f39/AGADf39/AGACf38AYAN/f38Bf2AFf39/f38AYAF/AGABfwF/YAAAYAZ/f39/f38AYAR/f39/AX9gAAR/f39/YAABb2AFf39/f38Bf2ACf38Ef39/f2ACf38Bb2AGf39/f39/AX9gAn9/AX5gAAF/YAV/f31/fwBgBX9/fn9/AGAFf398f38AYAJ9fQF9YAJ8fAF8YAADf39/YAACf39gAAF8YANvf28AYANvb28Bb2ADb29vAGACf28AYAFvAX9gA39/bwBgAXwBb2ABfgFvYAh/f39/f39/fwBgBn9/f3x8fABgCHx8fHx8fHx8AX9gA39/fgBgBn9/f31/fwBgBn9/f35/fwBgBn9/f3x/fwBgAn9/A39/f2AEf39/fwJ/f2AIf39/f29/f28Bf2AEf35/fwBgBH99f38AYAR/fH9/AGADf399AGAHf39/f39/fwBgAXwBf2ADf398AAKmBxAXLi9naWZ0X3N0YWdlX3dhc21fYmcuanMaX193Ymdfbm93XzAwOGQ5Yjg0NjAwYjVjMTkAGhcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcxpfX3diZ19zZXRfNmM2MGIyZThhZDBlOTM4MwAbFy4vZ2lmdF9zdGFnZV93YXNtX2JnLmpzGl9fd2JnX3NldF8wODQ2M2IxZGYzOGE3ZTI5ABwXLi9naWZ0X3N0YWdlX3dhc21fYmcuanMaX193Ymdfc2V0XzZiZTQyNzY4YzY5MGUzODAAHRcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcx1fX3diZ19TdHJpbmdfODU2NGU1NTk3OTllY2NkYQAeFy4vZ2lmdF9zdGFnZV93YXNtX2JnLmpzGl9fd2JnX25ld185OWNhYmFlNTAxYzBhOGEwAAwXLi9naWZ0X3N0YWdlX3dhc21fYmcuanMaX193YmdfbmV3X2YzYzlkZjRmMzhmM2Y3OTgADBcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcxpfX3diZ19uZXdfNGY5ZmFmYmIzOTA5YWY3MgAMFy4vZ2lmdF9zdGFnZV93YXNtX2JnLmpzJ19fd2JnX19fd2JpbmRnZW5fdGhyb3dfODFmYzc3Njc5YWY4M2JjNgADFy4vZ2lmdF9zdGFnZV93YXNtX2JnLmpzHF9fd2JnX0Vycm9yXzJlNTliMWIzN2E5YTM0YzMADxcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcytfX3diZ19fX3diaW5kZ2VuX2lzX3N0cmluZ19iMjliNWM1YTgwNjViYTFhAB8XLi9naWZ0X3N0YWdlX3dhc21fYmcuanM1X193YmdfX193YmluZGdlbl9jb3B5X3RvX3R5cGVkX2FycmF5X2E0ZGIzMzc3NTFlMGIzMjgAIBcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcx9fX3diaW5kZ2VuX2luaXRfZXh0ZXJucmVmX3RhYmxlAAgXLi9naWZ0X3N0YWdlX3dhc21fYmcuanMgX193YmluZGdlbl9jYXN0XzAwMDAwMDAwMDAwMDAwMDEAIRcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcyBfX3diaW5kZ2VuX2Nhc3RfMDAwMDAwMDAwMDAwMDAwMgAPFy4vZ2lmdF9zdGFnZV93YXNtX2JnLmpzIF9fd2JpbmRnZW5fY2FzdF8wMDAwMDAwMDAwMDAwMDAzACIDzgHMAQEjJAcBAgIJAAMEEAYCAgMDAQUECgAKACUREQMBBQICAAICAwQAEgMAAQIDBgABAAEABgEEAQEDBQAGCQUCCQkCBQIDAAIIASYCAwEGBQYCCQYFAQEFBQUFAQEACScoKQUBAQIEBAUBBAAAAAcCAwEBBgIAAA0AAAoABg4ODiorLBAHDQUUExUGBgEKBAEIAgYWFxcWAAADAwMDAgAwAwIxAgQCMjMFABIKAwABAQMAAAMAAAICBwcIAgQEBgwAAAgDAwAEAAMAAwcIAgQJAnABZmZvAIAIBQMBABEGCQF/AUGAgMAACwe6Ag8GbWVtb3J5AgALZGVjb2RlX3N2Z2EAjgETZGVjb2RlX3N2Z2FfcGF5bG9hZACMARxkZWNvZGVfc3ZnYV9wYXlsb2FkX3Byb2ZpbGVkAIsBGXRha2Vfc3ZnYV9wYXlsb2FkX3Byb2ZpbGUAzQEHaW5mbGF0ZQCNARRidWlsZF9iYXRjaF92ZXJ0aWNlcwCQARl0cmlhbmd1bGF0ZV9jbGlwX3BvbHlnb25zAI8BBGluaXQA2gERX193YmluZGdlbl9tYWxsb2MAgwESX193YmluZGdlbl9yZWFsbG9jAIgBFV9fd2JpbmRnZW5fZXh0ZXJucmVmcwEBGV9f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oAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIAo2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABayAKSQRAIARBoAJqIAEgCkEBQQEQTCAEKAKoAiEBCyAKBEAgBCgCpAIgAWogCSAK/AoAAAsgBCAEKAKoAiAKaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAMAQsgBSgCCCIJQQJHBEAgBCgCoAIgAUYEQCAEQaACahBhCyAEKAKkAiABakEBOgAAIAQgAUEBaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgIMQwAAAAAgCUEBcRshQSAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIEE4AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgIUQwAAAAAgBSgCEBshQSAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIEE4AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgIcQwAAAAAgBSgCGBshQSAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIEE4AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgIkQwAAAAAgBSgCIBshQSAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIEE4AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgIsQwAAAAAgBSgCKBshQSAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIEE4AAAMAQsgBSgCMCIJQQJGDQIgBCgCoAIgAUYEQCAEQaACahBhCyAEKAKkAiABakECOgAAIAQgAUEBaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgI0QwAAAAAgCUEBcRshQSAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIEE4AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgI8QwAAAAAgBSgCOBshQSAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIEE4AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgJEQwAAAAAgBSgCQBshQSAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIEE4AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgJMQwAAAAAgBSgCSBsMAQsgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJq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ZkUgLCAroiApICaiZkVyDQAgHSAHQQhqKwMAoSAJKwMAIByhoiAcIAcrAwChIAlBCGorAwAgHaGioUQAAAAAAAAAAGYNAgsgCiAPRw0ACwwGCyABIAhHDQALCwJAAkAgC0H/AXFBAWsOAgQBAAsgDEEcaiENIAEgDGohBiABIQoDQCAKIQgCQANAIAwgBigCJCIBaiEHIAYoAhBBAE4EQCAGKAIgIQogBisDACAHKwMAYgR/QQAFIAYrAwggBysDCGELDQIgBkEIaisDACIcIAogDGoiCUEIaisDAKEgBysDACAGKwMAIh2hoiAdIAkrAwChIAdBCGorAwAgHKGioUQAAAAAAAAAAGENAgsgByEGIAEgCEcNAAtBASELIAghAQwICyAGKAIcIQggBigCGCEJIAogDGoiBiABNgIkAkAgCUUNACAJIApHBEAgCSANaiAINgIADAELIAYgCDYCHAsgByAKNgIgIAgEQCAHIAggDGogASAIRhsgCTYCGAtBASELIAEgCkcNAAsMBgsgDEEkaiEYIAEgDGohCyABIQgDQCAMIAsoAiQiD2ohByAPIBhqKAIAIg0gCygCICIZRwRAIAwgGWohFiALKAIQIhBB/////wdxIRoDQAJAIAwgDSIOaiIRKAIQIgYgEHNB/////wdxRQRAIA0gGGooAgAhDQwBCyARKAIkIQ0gBkH/////B3EiFyAHKAIQQf////8HcUYNACAWKAIQQf////8HcSAXRg0AIAwgESgCIGohFCAMIA1qIRMgESsDCCEeIBErAwAhHyALKwMIIR0gCysDACEhIBAhCSALIQYDQCAJIRICQCAMIAYiCigCJGoiBigCECIJQf////8HcSIbIBdGDQAgEkH/////B3EiEiAaRiASIBdGciAaIBtGcg0AIAorAwAgCkEIaisDACAGKwMAIAZBCGorAwAgISAdIB8gHhAoDQILIAYgC0cNAAsgHyAhoSEiIB4gHaEhIwJAAkAgHSAWQQhqKwMAIhyhIiggBysDACIkICGhIieiIikgISAWKwMAIiChIiogB0EIaisDACIlIB2hIiaiIitjRQRAICMgICAfoaIgIiAcIB6homMNASAfICShICaiICcgHiAloaJjRQ0CDAELICMgJCAfoaIgIiAlIB6hoqFEAAAAAAAAAABmRSAfICChIBwgHaGiICAgIaEgHiAcoaKhRAAAAAAAAAAAZkVyDQELICEgH6EhHCAdIB6hISACQCAeIBRBCGorAwAiIqEiJyATKwMAIiQgH6EiJqIgHyAUKwMAIiOhIiwgE0EIaisDACIlIB6hIi2iY0UEQCAgICMgIaGiIBwgIiAdoaJjDQEgISAkoSAtoiAmIB0gJaGiY0UNAgwBCyAgICQgIaGiIBwgJSAdoaKhRAAAAAAAAAAAZkUgISAjoSAiIB6hoiAjIB+hIB0gIqGioUQAAAAAAAAAAGZFcg0BCyAdIB6gRAAAAAAAAOA/oiEkICEgH6BEAAAAAAAA4D+iISVBACEKIB0hHCALIQYDQAJ/QQAgHCIgIAwgBiIJKAIkaiIGKwMIIhxhDQAaQQAgICAkZCAcICRkc0UNABogJSAJKwMAIiYgJCAgoSAGKwMAICahoiAcICCho6BjCyAKcyEKIAYgC0cNAAsgCkEBcUUNACAjICGhIhwgKKIgIiAdoSIdICqioUQAAAAAAAAAAGIgLCAdoiAcICeioUQAAAAAAAAAAGJyDQYLIAsrAwAgESsDAGIEf0EABSALKwMIIBErAwhhC0UgKSArZEVyDQAgHiAUQQhqKwMAoSATKwMAIB+hoiAfIBQrAwChIBNBCGorAwAgHqGiZA0FCyANIBlHDQALCyAHIQsgDyIIIAFHDQALCyAVQSBqJAAPCyAIIAxqIgEoAhAhCyAAKAIIIQYgASgCJCEHIAEgDjYCJCABKQMAIS4gAUEIaikDACEvIBEoAiAhCiARIAg2AiAgEUEIaikDACEwIBEoAhAhDyARKQMAITEgByAMaiAGQShsIgk2AiAgFUEYaiIQIC83AwAgFUEIaiIOIDA3AwAgCiAMaiAJQShqIg02AiQgFSAuNwMQIBUgMTcDACAAKAIAIAAoAggiBmtBAU0EQCAAIAZBAkEIQSgQTCAAKAIIIQYLIAAoAgQgBkEobGoiASAVKQMQNwMAIAEgBzYCJCABIA02AiAgAUEANgIcIAFCADcCFCABIAtB/////wdxNgIQIAEgFSkDADcDKCABIAk2AkwgASAKNgJIIAFBADYCRCABQgA3AjwgASAPQf////8HcTYCOCABQQhqIBApAwA3AwAgAUEwaiAOKQMANwMAIAAgBkECajYCCCAAKAIEIgpBHGohDyAIIApqIgYoAiQiCSELA0ACQCAJIApqIQcCQAJAIAYoAhBBAE4EQCAGKAIgIQEgBisDACAHKwMAYgR/QQAFIAYrAwggBysDCGELDQEgBkEIaisDACIcIAEgCmoiCEEIaisDAKEgBysDACAGKwMAIh2hoiAdIAgrAwChIAdBCGorAwAgHKGioUQAAAAAAAAAAGENAQsgCSALRw0BDAILIAYoAhwhCCAGKAIYIQsgASAKaiIGIAk2AiQCQCALRQ0AIAEgC0cEQCALIA9qIAg2AgAMAQsgBiAINgIcCyAHIAE2AiAgCARAIAcgCCAKaiAIIAlGGyALNgIYCyAGIQcgASILIAlGDQELIAcoAiQhCSAHIQYMAQsLIAAoAgQiCkEcaiEPIAogDWoiBigCJCIBIQsDQAJAIAEgCmohBwJAAkAgBigCEEEATgRAIAYoAiAhCCAGKwMAIAcrAwBiBH9BAAUgBisDCCAHKwMIYQsNASAGQQhqKwMAIhwgCCAKaiINQQhqKwMAoSAHKwMAIAYrAwAiHaGiIB0gDSsDAKEgB0EIaisDACAcoaKhRAAAAAAAAAAAYQ0BCyABIAtHDQEMAgsgBigCHCELIAYoAhghDSAIIApqIgYgATYCJAJAIA1FDQAgCCANRwRAIA0gD2ogCzYCAAwBCyAGIAs2AhwLIAcgCDYCICALBEAgByAKIAtqIAEgC0YbIA02AhgLIAYhByAIIgsgAUYNAQsgBygCJCEBIAchBgwBCwtBACELIAAgCSACIAMgBCAFEBIMAwsgDEEcaiELIAEgDGohCQNAIAEhCAJAAkADQCAMIAkoAiQiBmohByAJKAIQQQBOBEAgCSgCICEBIAkrAwAgBysDAGIEf0EABSAJKwMIIAcrAwhhCw0CIAlBCGorAwAiHCABIAxqIgpBCGorAwChIAcrAwAgCSsDACIdoaIgHSAKKwMAoSAHQQhqKwMAIByhoqFEAAAAAAAAAABhDQILIAchCSAGIAhHDQALIAghBgwBCyAJKAIcIQggCSgCGCEKIAEgDGoiCSAGNgIkAkAgCkUNACABIApHBEAgCiALaiAINgIADAELIAkgCDYCHAsgByABNgIgIAgEQCAHIAggDGogBiAIRhsgCjYCGAsgASAGRw0BCwsgACgCBCIKQRxqIQ8gBiEOA0ACQCAKIAYgCmoiCCgCIGoiCSsDACAKIAogCCgCJCIGaiILKAIkIgFqIgcrAwBhBEAgCSsDCCAHKwMIYQ0BCyAJKwMAIhwgCUEIaisDACIdIAgrAwAgCEEIaisDACALKwMAIAtBCGorAwAgBysDACIgIAdBCGorAwAiHhAoRQ0AICAgHKEhIiAeIB2hISMCQCAdIAogCSgCIGoiDUEIaisDACIfoSAKIAkoAiRqIhArAwAiJCAcoSIooiAcIA0rAwAiIaEgEEEIaisDACIlIB2hIieiY0UEQCAjICEgIKGiICIgHyAeoaJjICAgJKEgJ6IgKCAeICWhomNyDQEMAgsgIyAkICChoiAiICUgHqGioUQAAAAAAAAAAGZFICAgIaEgHyAdoaIgISAcoSAeIB+hoqFEAAAAAAAAAABmRXINAQsgHCAgoSEiIB0gHqEhIwJAIB4gCiAHKAIgaiINQQhqKwMAIh+hIAogBygCJGoiECsDACIkICChIiiiICAgDSsDACIhoSAQQQhqKwMAIiUgHqEiJ6JjRQRAICMgISAcoaIgIiAfIB2homMgHCAkoSAnoiAoIB0gJaGiY3INAQwCCyAjICQgHKGiICIgJSAdoaKhRAAAAAAAAAAAZkUgHCAhoSAfIB6hoiAhICChIB0gH6GioUQAAAAAAAAAAGZFcg0BCyAHKAIQQf////8HcSENIAgoAhBB/////wdxIRAgCSgCEEH/////B3EhDiACKAIAIAIoAggiBmtBAk0EQCACIAZBA0EEQQQQTCACKAIIIQYLIAIoAgQgBkECdGoiCSANNgIIIAkgEDYCBCAJIA42AgAgAiAGQQNqNgIIIAgoAhwhCSAIKAIYIQ0gBygCJCEGIAogCCgCICIHaiIQIAgoAiQiCDYCJAJAIA1FDQAgByANRwRAIA0gD2ogCTYCAAwBCyAQIAk2AhwLIAggCmoiECAHNgIgIAkEQCAQIAkgCmogCCAJRhsgDTYCGAsgCygCHCEIIAsoAhghByAKIAsoAiAiCWoiDSALKAIkIgs2AiQCQCAHRQ0AIAcgCUcEQCAHIA9qIAg2AgAMAQsgDSAINgIcCyAKIAtqIg0gCTYCICAIBEAgDSAIIApqIAggC0YbIAc2AhgLIAEhDgsgBiAORw0ACyAGIApqIQkDQCAGIQgCQANAIAogCSgCJCIBaiEHIAkoAhBBAE4EQCAJKAIgIQYgCSsDACAHKwMAYgR/QQAFIAkrAwggBysDCGELDQIgCUEIaisDACIcIAYgCmoiC0EIaisDAKEgBysDACAJKwMAIh2hoiAdIAsrAwChIAdBCGorAwAgHKGioUQAAAAAAAAAAGENAgsgByEJIAEgCEcNAAtBAiELIAghAQwECyAJKAIcIQggCSgCGCELIAYgCmoiCSABNgIkAkAgC0UNACAGIAtHBEAgCyAPaiAINgIADAELIAkgCDYCHAsgByAGNgIgIAgEQCAHIAggCmogASAIRhsgCzYCGAtBAiELIAEgBkcNAAsMAgsgDigCEEH/////B3EhByAKIA1qKAIAQf////8HcSEKIAggDGoiASgCEEH/////B3EhCSABKAIkIQEgAigCACACKAIIIgZrQQJNBEAgAiAGQQNBBEEEEEwgAigCCCEGCyACKAIEIAZBAnRqIgggCTYCCCAIIAc2AgQgCCAKNgIAIAIgBkEDajYCCCAOKAIcIQYgDigCGCEIIAwgDigCICIHaiIJIA4oAiQiCjYCJCAIBEAgCSAIIAxqIAcgCEYbIAY2AhwLIAogDGoiCSAHNgIgIAZFDQAgCSAGIAxqIAYgCkYbIAg2AhgMAAsACwALySUCCX8BfiMAQRBrIggkAAJAAkACQAJAAkAgAEH1AU8EQCAAQcz/e0sEQEEAIQAMBgsgAEELaiICQXhxIQVB5O/AACgCACIJRQ0EQR8hBkEAIAVrIQMgAEH0//8HTQRAIAVBJiACQQh2ZyIAa3ZBAXEgAEEBdGtBPmohBgsgBkECdEHI7MAAaigCACICRQRAQQAhAAwCCyAFQRkgBkEBdmtBACAGQR9HG3QhBEEAIQADQAJAIAIoAgRBeHEiByAFSQ0AIAcgBWsiByADTw0AIAIhASAHIgMNAEEAIQMgASEADAQLIAIoAhQiByAAIAcgAiAEQR12QQRxaigCECICRxsgACAHGyEAIARBAXQhBCACDQALDAELAkACQAJAAkACQEHg78AAKAIAIgRBECAAQQtqQfgDcSAAQQtJGyIFQQN2IgB2IgFBA3EEQCABQX9zQQFxIABqIgdBA3QiAUHY7cAAaiIAIAFB4O3AAGooAgAiAigCCCIDRg0BIAMgADYCDCAAIAM2AggMAgsgBUHo78AAKAIATQ0IIAENAkHk78AAKAIAIgBFDQggAGhBAnRByOzAAGooAgAiAigCBEF4cSAFayEDIAIhAQNAAkAgASgCECIADQAgASgCFCIADQAgAigCGCEGAkACQCACIAIoAgwiAEYEQCACQRRBECACKAIUIgAbaigCACIBDQFBACEADAILIAIoAggiASAANgIMIAAgATYCCAwBCyACQRRqIAJBEGogABshBANAIAQhByABIgBBFGogAEEQaiAAKAIUIgEbIQQgAEEUQRAgARtqKAIAIgENAAsgB0EANgIACyAGRQ0GAkAgAigCHEECdEHI7MAAaiIBKAIAIAJHBEAgAiAGKAIQRwRAIAYgADYCFCAADQIMCQsgBiAANgIQIAANAQwICyABIAA2AgAgAEUNBgsgACAGNgIYIAIoAhAiAQRAIAAgATYCECABIAA2AhgLIAIoAhQiAUUNBiAAIAE2AhQgASAANgIYDAYLIAAoAgRBeHEgBWsiASADIAEgA0kiARshAyAAIAIgARshAiAAIQEMAAsAC0Hg78AAIARBfiAHd3E2AgALIAJBCGohACACIAFBA3I2AgQgASACaiIBIAEoAgRBAXI2AgQMBwsCQEECIAB0IgJBACACa3IgASAAdHFoIgdBA3QiAUHY7cAAaiICIAFB4O3AAGooAgAiACgCCCIDRwRAIAMgAjYCDCACIAM2AggMAQtB4O/AACAEQX4gB3dxNgIACyAAIAVBA3I2AgQgACAFaiIGIAEgBWsiB0EBcjYCBCAAIAFqIAc2AgBB6O/AACgCACICBEBB8O/AACgCACEBAkBB4O/AACgCACIEQQEgAkEDdnQiA3FFBEBB4O/AACADIARyNgIAIAJBeHFB2O3AAGoiAyEEDAELIAJBeHEiAkHY7cAAaiEEIAJB4O3AAGooAgAhAwsgBCABNgIIIAMgATYCDCABIAQ2AgwgASADNgIICyAAQQhqIQBB8O/AACAGNgIAQejvwAAgBzYCAAwGC0Hk78AAQeTvwAAoAgBBfiACKAIcd3E2AgALAkACQCADQRBPBEAgAiAFQQNyNgIEIAIgBWoiByADQQFyNgIEIAMgB2ogAzYCAEHo78AAKAIAIgFFDQFB8O/AACgCACEAAkBB4O/AACgCACIEQQEgAUEDdnQiBnFFBEBB4O/AACAEIAZyNgIAIAFBeHFB2O3AAGoiBCEBDAELIAFBeHEiBEHY7cAAaiEBIARB4O3AAGooAgAhBAsgASAANgIIIAQgADYCDCAAIAE2AgwgACAENgIIDAELIAIgAyAFaiIAQQNyNgIEIAAgAmoiACAAKAIEQQFyNgIEDAELQfDvwAAgBzYCAEHo78AAIAM2AgALIAJBCGoiAEUNAwwECyAAIAFyRQRAQQAhAUECIAZ0IgBBACAAa3IgCXEiAEUNAyAAaEECdEHI7MAAaigCACEACyAARQ0BCwNAIAMgACgCBEF4cSICIAVrIgQgAyADIARLIgQbIAIgBUkiAhshAyABIAAgASAEGyACGyEBIAAoAhAiAgR/IAIFIAAoAhQLIgANAAsLIAFFDQAgBUHo78AAKAIAIgBNIAMgACAFa09xDQAgASgCGCEGAkACQCABIAEoAgwiAEYEQCABQRRBECABKAIUIgAbaigCACICDQFBACEADAILIAEoAggiAiAANgIMIAAgAjYCCAwBCyABQRRqIAFBEGogABshBANAIAQhByACIgBBFGogAEEQaiAAKAIUIgIbIQQgAEEUQRAgAhtqKAIAIgINAAsgB0EANgIACwJAIAZFDQACQAJAIAEoAhxBAnRByOzAAGoiAigCACABRwRAIAEgBigCEEcEQCAGIAA2AhQgAA0CDAQLIAYgADYCECAADQEMAwsgAiAANgIAIABFDQELIAAgBjYCGCABKAIQIgIEQCAAIAI2AhAgAiAANgIYCyABKAIUIgJFDQEgACACNgIUIAIgADYCGAwBC0Hk78AAQeTvwAAoAgBBfiABKAIcd3E2AgALAkAgA0EQTwRAIAEgBUEDcjYCBCABIAVqIgAgA0EBcjYCBCAAIANqIAM2AgAgA0GAAk8EQCAAIAMQNwwCCwJAQeDvwAAoAgAiAkEBIANBA3Z0IgRxRQRAQeDvwAAgAiAEcjYCACADQfgBcUHY7cAAaiIDIQIMAQsgA0H4AXEiBEHY7cAAaiECIARB4O3AAGooAgAhAwsgAiAANgIIIAMgADYCDCAAIAI2AgwgACADNgIIDAELIAEgAyAFaiIAQQNyNgIEIAAgAWoiACAAKAIEQQFyNgIECyABQQhqIgANAQsCQAJAAkACQAJAIAVB6O/AACgCACIBSwRAIAVB7O/AACgCACIATwRAIAhBBGohAAJ/IAVBr4AEakGAgHxxIgFBEHYgAUH//wNxQQBHaiIBQAAiBEF/RgRAQQAhAUEADAELIAFBEHQiAkEQayACIARBEHQiAUEAIAJrRhsLIQIgAEEANgIIIAAgAjYCBCAAIAE2AgAgCCgCBCIBRQRAQQAhAAwICyAIKAIMIQdB+O/AACAIKAIIIgRB+O/AACgCAGoiADYCAEH878AAIABB/O/AACgCACICIAAgAksbNgIAAkACQEH078AAKAIAIgIEQEHI7cAAIQADQCABIAAoAgAiAyAAKAIEIgZqRg0CIAAoAggiAA0ACwwCC0GE8MAAKAIAIgBBACAAIAFNG0UEQEGE8MAAIAE2AgALQYjwwABB/x82AgBB1O3AACAHNgIAQcztwAAgBDYCAEHI7cAAIAE2AgBB5O3AAEHY7cAANgIAQeztwABB4O3AADYCAEHg7cAAQdjtwAA2AgBB9O3AAEHo7cAANgIAQejtwABB4O3AADYCAEH87cAAQfDtwAA2AgBB8O3AAEHo7cAANgIAQYTuwABB+O3AADYCAEH47cAAQfDtwAA2AgBBjO7AAEGA7sAANgIAQYDuwABB+O3AADYCAEGU7sAAQYjuwAA2AgBBiO7AAEGA7sAANgIAQZzuwABBkO7AADYCAEGQ7sAAQYjuwAA2AgBBpO7AAEGY7sAANgIAQZjuwABBkO7AADYCAEGg7sAAQZjuwAA2AgBBrO7AAEGg7sAANgIAQajuwABBoO7AADYCAEG07sAAQajuwAA2AgBBsO7AAEGo7sAANgIAQbzuwABBsO7AADYCAEG47sAAQbDuwAA2AgBBxO7AAEG47sAANgIAQcDuwABBuO7AADYCAEHM7sAAQcDuwAA2AgBByO7AAEHA7sAANgIAQdTuwABByO7AADYCAEHQ7sAAQcjuwAA2AgBB3O7AAEHQ7sAANgIAQdjuwABB0O7AADYCAEHk7sAAQdjuwAA2AgBB7O7AAEHg7sAANgIAQeDuwABB2O7AADYCAEH07sAAQejuwAA2AgBB6O7AAEHg7sAANgIAQfzuwABB8O7AADYCAEHw7sAAQejuwAA2AgBBhO/AAEH47sAANgIAQfjuwABB8O7AADYCAEGM78AAQYDvwAA2AgBBgO/AAEH47sAANgIAQZTvwABBiO/AADYCAEGI78AAQYDvwAA2AgBBnO/AAEGQ78AANgIAQZDvwABBiO/AADYCAEGk78AAQZjvwAA2AgBBmO/AAEGQ78AANgIAQazvwABBoO/AADYCAEGg78AAQZjvwAA2AgBBtO/AAEGo78AANgIAQajvwABBoO/AADYCAEG878AAQbDvwAA2AgBBsO/AAEGo78AANgIAQcTvwABBuO/AADYCAEG478AAQbDvwAA2AgBBzO/AAEHA78AANgIAQcDvwABBuO/AADYCAEHU78AAQcjvwAA2AgBByO/AAEHA78AANgIAQdzvwABB0O/AADYCAEHQ78AAQcjvwAA2AgBB9O/AACABQQ9qQXhxIgBBCGsiAjYCAEHY78AAQdDvwAA2AgBB7O/AACAEQShrIgQgASAAa2pBCGoiADYCACACIABBAXI2AgQgASAEakEoNgIEQYDwwABBgICAATYCAAwICyACIANJIAEgAk1yDQAgACgCDCIDQQFxDQAgA0EBdiAHRg0DC0GE8MAAQYTwwAAoAgAiACABIAAgAUkbNgIAIAEgBGohA0HI7cAAIQACQAJAA0AgAyAAKAIAIgZHBEAgACgCCCIADQEMAgsLIAAoAgwiA0EBcQ0AIANBAXYgB0YNAQtByO3AACEAA0ACQCACIAAoAgAiA08EQCACIAMgACgCBGoiBkkNAQsgACgCCCEADAELC0H078AAIAFBD2pBeHEiAEEIayIDNgIAQezvwAAgBEEoayIJIAEgAGtqQQhqIgA2AgAgAyAAQQFyNgIEIAEgCWpBKDYCBEGA8MAAQYCAgAE2AgAgAiAGQSBrQXhxQQhrIgAgACACQRBqSRsiA0EbNgIEQcjtwAApAgAhCiADQRBqQdDtwAApAgA3AgAgA0EIaiIAIAo3AgBB1O3AACAHNgIAQcztwAAgBDYCAEHI7cAAIAE2AgBB0O3AACAANgIAIANBHGohAANAIABBBzYCACAAQQRqIgAgBkkNAAsgAiADRg0HIAMgAygCBEF+cTYCBCACIAMgAmsiAEEBcjYCBCADIAA2AgAgAEGAAk8EQCACIAAQNwwICwJAQeDvwAAoAgAiAUEBIABBA3Z0IgRxRQRAQeDvwAAgASAEcjYCACAAQfgBcUHY7cAAaiIAIQEMAQsgAEH4AXEiAEHY7cAAaiEBIABB4O3AAGooAgAhAAsgASACNgIIIAAgAjYCDCACIAE2AgwgAiAANgIIDAcLIAAgATYCACAAIAAoAgQgBGo2AgQgAUEPakF4cUEIayIEIAVBA3I2AgQgBkEPakF4cUEIayIDIAQgBWoiAGshBSADQfTvwAAoAgBGDQMgA0Hw78AAKAIARg0EIAMoAgQiAkEDcUEBRgRAIAMgAkF4cSIBEDMgASAFaiEFIAEgA2oiAygCBCECCyADIAJBfnE2AgQgACAFQQFyNgIEIAAgBWogBTYCACAFQYACTwRAIAAgBRA3DAYLAkBB4O/AACgCACIBQQEgBUEDdnQiAnFFBEBB4O/AACABIAJyNgIAIAVB+AFxQdjtwABqIgUhAwwBCyAFQfgBcSIBQdjtwABqIQMgAUHg7cAAaigCACEFCyADIAA2AgggBSAANgIMIAAgAzYCDCAAIAU2AggMBQtB7O/AACAAIAVrIgE2AgBB9O/AAEH078AAKAIAIgAgBWoiAjYCACACIAFBAXI2AgQgACAFQQNyNgIEIABBCGohAAwGC0Hw78AAKAIAIQACQCABIAVrIgJBD00EQEHw78AAQQA2AgBB6O/AAEEANgIAIAAgAUEDcjYCBCAAIAFqIgEgASgCBEEBcjYCBAwBC0Ho78AAIAI2AgBB8O/AACAAIAVqIgQ2AgAgBCACQQFyNgIEIAAgAWogAjYCACAAIAVBA3I2AgQLIABBCGohAAwFCyAAIAQgBmo2AgRB9O/AAEH078AAKAIAIgBBD2pBeHEiAUEIayICNgIAQezvwABB7O/AACgCACAEaiIEIAAgAWtqQQhqIgE2AgAgAiABQQFyNgIEIAAgBGpBKDYCBEGA8MAAQYCAgAE2AgAMAwtB9O/AACAANgIAQezvwABB7O/AACgCACAFaiIBNgIAIAAgAUEBcjYCBAwBC0Hw78AAIAA2AgBB6O/AAEHo78AAKAIAIAVqIgE2AgAgACABQQFyNgIEIAAgAWogATYCAAsgBEEIaiEADAELQQAhAEHs78AAKAIAIgEgBU0NAEHs78AAIAEgBWsiATYCAEH078AAQfTvwAAoAgAiACAFaiICNgIAIAIgAUEBcjYCBCAAIAVBA3I2AgQgAEEIaiEACyAIQRBqJAAgAAvTDQIQfwJ+IwBBIGsiCyQAAkACQCABKAIMIgkgAmoiBCAJTwRAIAEoAgQiDiAOQQFqIgdBA3YiBkEHbCAOQQhJGyICQQF2IARJBEACQAJAAn8gAkEBaiICIAQgAiAESxsiAkEPTwRAIAJB/////wFLDQJBfyACQQN0QQduQQFrZ3ZBAWoMAQtBBCACQQhxQQhqIAJBBEkbCyICrUIYfiIUQiCIpw0EIBSnIgUgAkEIaiIGaiIHIAVJIAdB+P///wdLcg0EIAdBCBDOASIEDQEgBxCZASALKAIUIQIgCygCECEEDAULEJ4BIAsoAhwhAiALKAIYIQQMBAsgBCAFaiEMIAYEQCAMQf8BIAb8CwALIAJBAWsiDyACQQN2QQdsIA9BCEkbIRMCQCAJRQRAIAEoAgAhBQwBCyAMQQhqIQggASgCACIFQRhrIQ0gBSkDAEJ/hUKAgYKEiJCgwIB/gyEVQQAhAiAJIQYgBSEEA0AgFVAEQANAIAJBCGohAiAEQQhqIgQpAwBCgIGChIiQoMCAf4MiFEKAgYKEiJCgwIB/UQ0ACyAUQoCBgoSIkKDAgH+FIRULIAwgDyADIA0gFXqnQQN2IAJqIhFBaGxqECqnIhBxIgpqKQAAQoCBgoSIkKDAgH+DIhRQBEBBCCESA0AgCiASaiEHIBJBCGohEiAMIAcgD3EiCmopAABCgIGChIiQoMCAf4MiFFANAAsLIBVCAX0gFYMhFSAMIBR6p0EDdiAKaiAPcSIKaiwAAEEATgRAIAwpAwBCgIGChIiQoMCAf4N6p0EDdiEKCyAKIAxqIBBBGXYiBzoAACAIIApBCGsgD3FqIAc6AAAgDCAKQX9zQRhsaiIQQRBqIAUgEUF/c0EYbGoiB0EQaikAADcAACAQQQhqIAdBCGopAAA3AAAgECAHKQAANwAAIAZBAWsiBg0ACwsgASAPNgIEIAEgDDYCACABIBMgCWs2AghBgYCAgHghBCAORQ0DIA4gDkEYbEEfakF4cSICakEJaiIBRQ0DIAUgAmsgAUEIEMQBDAMLIAEgBwR/IAEoAgAhBEEAIQIgBiAHQQdxQQBHaiIGQQFxIAZBAUcEQCAGQf7///8DcSEKA0AgAiAEaiIGIAYpAwAiFEJ/hUIHiEKBgoSIkKDAgAGDIBRC//79+/fv37//AIR8NwMAIAZBCGoiBiAGKQMAIhRCf4VCB4hCgYKEiJCgwIABgyAUQv/+/fv379+//wCEfDcDACACQRBqIQIgCkECayIKDQALCwRAIAIgBGoiAiACKQMAIhRCf4VCB4hCgYKEiJCgwIABgyAUQv/+/fv379+//wCEfDcDAAsCQCAHQQhPBEAgBCAHaiAEKQAANwAADAELIAdFDQAgBEEIaiAEIAf8CgAAC0EAIQIDQAJAIAIgBGotAABBgAFHDQBBACACayEQIAQgAkF/c0EYbGohCAJAA0AgAyAEIBBBGGxqQRhrECohFCABKAIEIg0gFKciEXEiByEJIAQgB2opAABCgIGChIiQoMCAf4MiFVAEQEEIIQUDQCAFIAlqIQYgBUEIaiEFIAQgBiANcSIJaikAAEKAgYKEiJCgwIB/gyIVUA0ACwsgBCAVeqdBA3YgCWogDXEiCWosAABBAE4EQCAEKQMAQoCBgoSIkKDAgH+DeqdBA3YhCQsgCSAHayACIAdrcyANcUEITwRAIAQgCWoiBi0AACAGIBFBGXYiBToAACABKAIAIgYgCUEIayANcWpBCGogBToAACAEIAlBf3NBGGxqIQVB/wFGDQIgCCgAACEEIAggBSgAADYAACAFIAQ2AAAgBSgABCEEIAUgCCgABDYABCAIIAQ2AAQgCCgACCEEIAggBSgACDYACCAFIAQ2AAggBSgADCEEIAUgCCgADDYADCAIIAQ2AAwgCCgAECEEIAggBSgAEDYAECAFIAQ2ABAgBSgAFCEEIAUgCCgAFDYAFCAIIAQ2ABQgASgCACEEDAELCyACIARqIBFBGXYiBjoAACABKAIAIgQgDSACQQhrcWpBCGogBjoAAAwBCyACIAZqQf8BOgAAIAYgASgCBCACQQhrcWpBCGpB/wE6AAAgBUEQaiAIQRBqKQAANwAAIAVBCGogCEEIaikAADcAACAFIAgpAAA3AAAgBiEECyACIA5GIAJBAWohAkUNAAsgASgCDCEJIAEoAgQiASABQQFqQQN2QQdsIAFBCEkbBUEACyICIAlrNgIIQYGAgIB4IQQMAgsQngEgCygCBCECIAsoAgAhBAwBCxCeASALKAIMIQIgCygCCCEECyAAIAI2AgQgACAENgIAIAtBIGokAAvpfAIbfwJ+IwBBkAJrIggkACAIIAI2AgwgCCABNgIIQaDwwAAtAABBAUcEQBBWCyAIQThqQaigwAApAwA3AwBBkPDAAEGQ8MAAKQMAIh5CAXw3AwAgCEGAgICAeDYCaCAIQQI2AhAgCEIENwNgIAhCADcDWCAIQoCAgIDAADcDUCAIQaCgwAApAwA3AzAgCEGY8MAAKQMANwNIIAggHjcDQCAIIAhBCGo2AuQBIAhB3ABqIRogCEHQAGohGyAIQTBqIRwgCEHoAGohHQJAAkACQAJAA0ACQAJAAkACQAJAIAgoAuQBIgQoAgQiBwRAIAQoAgAiBiwAACIBQQBODQEgB0EKSw0CIAYgB2pBAWssAABBAE4NAiAIQfgAaiAIQeQBahA7IAgoAngEQCAIKAJ8IQIMCQsgCCkDgAEhHwwDCyAAIAhBEGpB6AD8CgAADAgLIAGtQv8BgyEfIAQgB0EBazYCBCAEIAZBAWo2AgAMAgsgAUH/AXEgBiwAASIBQf8BcUEHdGpBgAFrIQICQAJAAkACQAJAAkACQAJAAkAgAUEASARAIAIgBiwAAiIBQf8BcUEOdGpBgIABayECIAFBAE4NASACIAYsAAMiAUH/AXFBFXRqQYCAgAFrIQIgAUEATg0CIAJBgICAgAFrrSEeIAYsAAQiAUEATg0DIAFB/wFxIAYsAAUiAUH/AXFBB3RqQYABayECIAFBAE4NBCACIAYsAAYiAUH/AXFBDnRqQYCAAWshAiABQQBODQUgAiAGLAAHIgFB/wFxQRV0akGAgIABayECIAFBAE4NBiACQYCAgIABa61CHIYgHnwhHiAGLAAIIgJBAE4NByAGLQAJIgFBAk8NCCACQf8AcSABQQd0cq1COIYgHnwhH0EKIQIMCQsgAq0hH0ECIQIMCAsgAq0hH0EDIQIMBwsgAq0hH0EEIQIMBgsgAa1C/wGDQhyGIB58IR9BBSECDAULIAKtQhyGIB58IR9BBiECDAQLIAKtQhyGIB58IR9BByECDAMLIAKtQhyGIB58IR9BCCECDAILIAKtQv8Bg0I4hiAefCEfQQkhAgwBC0HkncAAQQ4QhgEhAgwGCyAEIAcgAms2AgQgBCACIAZqNgIACyAIIB83A+gBIB9C/////w9WDQELIAggH0IHgyIeNwPwASAeQgZaBEAgCCAIQfABaq1CgICAgDCENwP4ASAIQfgAaiIBQeiDwAAgCEH4AWoQWSABEHwhAgwECyAfQgdYBEBB0J3AAEEUEIYBIQIMBAsgHqchAgJ/AkACQAJAAkACQAJAAkACQAJAIB+nQQN2IgFBAWsOBQABBQIDCAsgCCgCaEGAgICAeEYEQCAIQQA2AnAgCEKAgICAEDcDaAsgAiAdIAhB5AFqEEQiAQ0DQQAMCAsgCCgCEEECRgRAIAhBADYCKCAIQQA2AiAgCEEANgIYIAhBADYCEAsgCCACOgD4ASAIQQI6APABQQQgAnZBAXFFBEAgCCAIQfABaq1CgICAgMAAhDcDgAEgCCAIQfgBaq1CgICAgMAAhDcDeCAIQYQCaiIBIAhB+ABqEFogARB8IQIMCwsgCEEQaiELIwBBQGoiCiQAIApBEGogCEHkAWoiBhAfAkAgCigCEEEBRgRAIAooAhQhAgwBCwJAIAopAxgiHiAGKAIAQQRqKAIAIgGtWARAIAEgHqdrIQQDQCAEIAYoAgBBBGooAgAiAU8EQEEAIQIgASAERg0EQfegwABBGRCGASECDAQLIApBEGogBhAfIAooAhBBAUYEQCAKKAIUIQIMBAsgCiAKKQMYIh83AwggH0L/////D1YNAiAKIB9CB4MiHjcDMCAeQgZaBEAgCiAKQTBqrUKAgICAMIQ3AzggCkEQaiIBQeiDwAAgCkE4ahBZIAEQfCECDAQLIB9CB1gEQEHjoMAAQRQQhgEhAgwECyAepyECIwBBIGsiDiQAAn8CQAJAAkACQAJAAkACQAJAAkAgH6dBA3YiAUEBaw4EAQIDBAALIAIgASAGQeMAECQMCAsgCygCAEUEQCALQgE3AgALIA4gAjoAAyAOQQU6AAIgAkH/AXFBBUcEQCAOIA5BAmqtQoCAgIDAAIQ3AxggDiAOQQNqrUKAgICAwACENwMQIA5BBGoiASAOQRBqEFogARB8IQIMBwsgBigCACIHQQRqIgIoAgAiAUEDTQRAQeSswABBEBCGASECDAcLIAIgAUEEazYCACAHIAcoAgAiAUEEajYCACALIAEqAAA4AgQMAwsgCygCCEUEQCALQgE3AggLIA4gAjoAAyAOQQU6AAIgAkH/AXFBBUcEQCAOIA5BAmqtQoCAgIDAAIQ3AxggDiAOQQNqrUKAgICAwACENwMQIA5BBGoiASAOQRBqEFogARB8IQIMBQsgBigCACIHQQRqIgIoAgAiAUEDTQRAQeSswABBEBCGASECDAULIAIgAUEEazYCACAHIAcoAgAiAUEEajYCACALIAEqAAA4AgwMAgsgCygCEEUEQCALQgE3AhALIAIgC0EUaiAGEBoiAUUNASAOIAE2AhAgDkEQakGrn8AAQQtB05/AAEEDEHYgDigCEAwFCyALKAIYRQRAIAtCATcCGAsgAiALQRxqIAYQGiIBDQELQQAMAwsgDiABNgIQIA5BEGpBq5/AAEELQdafwABBBhB2IA4oAhAMAgsgDiACNgIQIA5BEGpBq5/AAEELQcSfwABBDxB2IA4oAhAMAQsgDiACNgIQIA5BEGpBq5/AAEELQbafwABBDhB2IA4oAhALIQIgDkEgaiQAIAJFDQALDAILQZChwABBEBCGASECDAELIAogCkEIaq1CgICAgDCENwMQIApBJGoiAUHSg8AAIApBEGoQWSABEHwhAgsgCkFAayQAIAINCkEADAcLIAhB5AFqIQcjAEFAaiITJAAgEyACOgA/IBNBAjoAPgJAIAJB/wFxQQJHBEAgEyATQT5qrUKAgICAwACENwMoIBMgE0E/aq1CgICAgMAAhDcDICATQQhqIgEgE0EgahBaIAEQfCEBDAELIBNCgICAgMAANwIIIBNCgICAgICAgICAfzcCECATQQhqIQ8jAEFAaiIWJAAgFkEQaiAHEB8CQCAWKAIQQQFGBEAgFigCFCEBDAELAkAgFikDGCIeIAcoAgBBBGooAgAiAa1YBEAgASAep2shGQNAIBkgBygCAEEEaigCACICTwRAQQAhASACIBlGDQRB96DAAEEZEIYBIQEMBAsgFkEQaiAHEB8gFigCEEEBRgRAIBYoAhQhAQwECyAWIBYpAxgiHzcDCCAfQv////8PVg0CIBYgH0IHgyIeNwMwIB5CBloEQCAWIBZBMGqtQoCAgIAwhDcDOCAWQRBqIgFB6IPAACAWQThqEFkgARB8IQEMBAsgH0IHWARAQeOgwABBFBCGASEBDAQLIB6nIQIjAEEQayINJAACfwJAAkACQAJAAkAgH6dBA3YiAUEBaw4CAQIACyACIAEgB0HjABAkDAQLIA8oAgxBgICAgHhGBEAgD0EANgIUIA9CgICAgBA3AgwLIAIgD0EMaiAHEEQiAQ0BQQAMAwsjAEHwAWsiFCQAIBQgAjoA7wEgFEECOgDuAQJAIAJB/wFxQQJHBEAgFCAUQe4Baq1CgICAgMAAhDcDgAEgFCAUQe8Baq1CgICAgMAAhDcDeCAUQQhqIgEgFEH4AGoQWiABEHwhAQwBCyAUQQI2AjAgFEECNgIQIBRBADYCCCAUQoCAgICAgICAgH83AmggFEKAgICAwAA3AmAgFEEIaiECIwBBQGoiFyQAIBdBEGogBxAfAkAgFygCEEEBRgRAIBcoAhQhAQwBCwJAIBcpAxgiHiAHKAIAQQRqKAIAIgGtWARAIAEgHqdrIQ4DQCAOIAcoAgBBBGooAgAiBE8EQEEAIQEgBCAORg0EQfegwABBGRCGASEBDAQLIBdBEGogBxAfIBcoAhBBAUYEQCAXKAIUIQEMBAsgFyAXKQMYIh83AwggH0L/////D1YNAiAXIB9CB4MiHjcDMCAeQgZaBEAgFyAXQTBqrUKAgICAMIQ3AzggF0EQaiIBQeiDwAAgF0E4ahBZIAEQfCEBDAQLIB9CB1gEQEHjoMAAQRQQhgEhAQwECyAepyEEIwBBIGsiECQAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAIB+nQQN2IgFBAWsOBQECAwQFAAsgBCABIAdB4gAQJAwKCyACKAIARQRAIAJCATcCAAsgECAEOgADIBBBBToAAiAEQf8BcUEFRwRAIBAgEEECaq1CgICAgMAAhDcDGCAQIBBBA2qtQoCAgIDAAIQ3AxAgEEEEaiIBIBBBEGoQWiABEHwhAQwJCyAHKAIAIgZBBGoiBCgCACIBQQNNBEBB5KzAAEEQEIYBIQEMCQsgBCABQQRrNgIAIAYgBigCACIBQQRqNgIAIAIgASoAADgCBAwECyACKAIIQQJGBEAgAkEANgIgIAJBADYCGCACQQA2AhAgAkEANgIICyAQIAQ6AAMgEEECOgACIARB/wFxQQJHBEAgECAQQQJqrUKAgICAwACENwMYIBAgEEEDaq1CgICAgMAAhDcDECAQQQRqIgEgEEEQahBaIAEQfCEBDAcLIAJBCGohCiMAQUBqIhEkACARQRBqIAcQHwJAIBEoAhBBAUYEQCARKAIUIQEMAQsCQCARKQMYIh4gBygCAEEEaigCACIBrVgEQCABIB6nayELA0AgCyAHKAIAQQRqKAIAIgRPBEBBACEBIAQgC0YNBEH3oMAAQRkQhgEhAQwECyARQRBqIAcQHyARKAIQQQFGBEAgESgCFCEBDAQLIBEgESkDGCIfNwMIIB9C/////w9WDQIgESAfQgeDIh43AzAgHkIGWgRAIBEgEUEwaq1CgICAgDCENwM4IBFBEGoiAUHog8AAIBFBOGoQWSABEHwhAQwECyAfQgdYBEBB46DAAEEUEIYBIQEMBAsgHqchBCMAQSBrIgUkAAJ/AkACQAJAAkACQAJAAkACQAJAAkAgH6dBA3YiAUEBaw4EAQIDBAALIAQgASAHQeEAECQMCQsgCigCAEUEQCAKQgE3AgALIAUgBDoAAyAFQQU6AAIgBEH/AXFBBUcEQCAFIAVBAmqtQoCAgIDAAIQ3AxggBSAFQQNqrUKAgICAwACENwMQIAVBBGoiASAFQRBqEFogARB8IQEMCAsgBygCACIGQQRqIgQoAgAiAUEDTQRAQeSswABBEBCGASEBDAgLIAQgAUEEazYCACAGIAYoAgAiAUEEajYCACAKIAEqAAA4AgQMAwsgCigCCEUEQCAKQgE3AggLIAUgBDoAAyAFQQU6AAIgBEH/AXFBBUcEQCAFIAVBAmqtQoCAgIDAAIQ3AxggBSAFQQNqrUKAgICAwACENwMQIAVBBGoiASAFQRBqEFogARB8IQEMBgsgBygCACIGQQRqIgQoAgAiAUEDTQRAQeSswABBEBCGASEBDAYLIAQgAUEEazYCACAGIAYoAgAiAUEEajYCACAKIAEqAAA4AgwMAgsgCigCEEUEQCAKQgE3AhALIAUgBDoAAyAFQQU6AAIgBEH/AXFBBUcEQCAFIAVBAmqtQoCAgIDAAIQ3AxggBSAFQQNqrUKAgICAwACENwMQIAVBBGoiASAFQRBqEFogARB8IQEMBAsgBygCACIGQQRqIgQoAgAiAUEDTQRAQeSswABBEBCGASEBDAQLIAQgAUEEazYCACAGIAYoAgAiAUEEajYCACAKIAEqAAA4AhQMAQsgCigCGEUEQCAKQgE3AhgLIAUgBDoAAyAFQQU6AAIgBEH/AXFBBUcEQCAFIAVBAmqtQoCAgIDAAIQ3AxggBSAFQQNqrUKAgICAwACENwMQIAVBBGoiASAFQRBqEFogARB8IQEMAgsgBygCACIGQQRqIgQoAgAiAUEDTQRAQeSswABBEBCGASEBDAILIAQgAUEEazYCACAGIAYoAgAiAUEEajYCACAKIAEqAAA4AhwLQQAMBAsgBSABNgIQIAVBEGpB8p3AAEEGQf+dwABBBhB2IAUoAhAMAwsgBSABNgIQIAVBEGpB8p3AAEEGQfqdwABBBRB2IAUoAhAMAgsgBSABNgIQIAVBEGpB8p3AAEEGQfmdwABBARB2IAUoAhAMAQsgBSABNgIQIAVBEGpB8p3AAEEGQfidwABBARB2IAUoAhALIQEgBUEgaiQAIAFFDQALDAILQZChwABBEBCGASEBDAELIBEgEUEIaq1CgICAgDCENwMQIBFBJGoiAUHSg8AAIBFBEGoQWSABEHwhAQsgEUFAayQAIAENBgwDCyACKAIoQQJGBEAgAkEANgJQIAJBADYCSCACQQA2AkAgAkEANgI4IAJBADYCMCACQQA2AigLIBAgBDoAAyAQQQI6AAIgBEH/AXFBAkcEQCAQIBBBAmqtQoCAgIDAAIQ3AxggECAQQQNqrUKAgICAwACENwMQIBBBBGoiASAQQRBqEFogARB8IQEMBQsgAkEoaiAHQeEAEDQiAQ0EDAILIAIoAmRBgICAgHhGBEAgAkEANgJsIAJCgICAgBA3AmQLIAQgAkHkAGogBxBEIgFFDQEgECABNgIQIBBBEGpB0p7AAEELQfGewABBCRB2IBAoAhAMBgsgAkHYAGohESMAQZAEayIVJAAgFSAEOgCPBCAVQQI6AI4EAkAgBEH/AXFBAkcEQCAVIBVBjgRqrUKAgICAwACENwOQAiAVIBVBjwRqrUKAgICAwACENwOIAiAVQQRqIgEgFUGIAmoQWiABEHwhAQwBCyAVQYGAgIB4NgL8ASAVQQA2AgQgFUECNgLMASAVQQI2AlQgFUECNgI0IBVBAjYCDCAVQQRqIRIjAEFAaiIYJAAgGEEQaiAHEB8CQCAYKAIQQQFGBEAgGCgCFCEBDAELAkAgGCkDGCIeIAcoAgBBBGooAgAiAa1YBEAgASAep2shCgNAIAogBygCAEEEaigCACIETwRAQQAhASAEIApGDQRB96DAAEEZEIYBIQEMBAsgGEEQaiAHEB8gGCgCEEEBRgRAIBgoAhQhAQwECyAYIBgpAxgiHzcDCCAfQv////8PVg0CIBggH0IHgyIeNwMwIB5CBloEQCAYIBhBMGqtQoCAgIAwhDcDOCAYQRBqIgFB6IPAACAYQThqEFkgARB8IQEMBAsgH0IHWARAQeOgwABBFBCGASEBDAQLIB6nIQQjAEEgayIMJAACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgH6dBA3YiAUEBaw4LAQIDBAAAAAAABQYACyAEIAEgB0HhABAkDA0LIBIoAgBFBEAgEkIBNwIACyAEIBJBBGogBxAaIgENBUEADAwLIBJB+AFqIQsgEigC+AFBgYCAgHhGBEAgC0GAgICAeDYCAAsgDCAEOgADIAxBAjoAAiAEQf8BcUECRwRAIAwgDEECaq1CgICAgMAAhDcDGCAMIAxBA2qtQoCAgIDAAIQ3AxAgDEEEaiIBIAxBEGoQWiABEHwhAQwKCyMAQUBqIgUkACAFQRBqIAcQHwJAIAUoAhBBAUYEQCAFKAIUIQEMAQsCQCAFKQMYIh4gBygCAEEEaigCACIBrVgEQCABIB6nayEGA0AgBiAHKAIAQQRqKAIAIgRPBEBBACEBIAQgBkYNBEH3oMAAQRkQhgEhAQwECyAFQRBqIAcQHyAFKAIQQQFGBEAgBSgCFCEBDAQLIAUgBSkDGCIfNwMIIB9C/////w9WDQIgBSAfQgeDIh43AzAgHkIGWgRAIAUgBUEwaq1CgICAgDCENwM4IAVBEGoiAUHog8AAIAVBOGoQWSABEHwhAQwECyAfQgdYBEBB46DAAEEUEIYBIQEMBAsgHqchBAJ/IB+nQQN2IgFBAUYEQCALKAIAQYCAgIB4RgRAIAtBADYCCCALQoCAgIAQNwIAC0EAIAQgCyAHEEQiAUUNARogBSABNgIQIAVBEGpB/a7AAEEJQYavwABBARB2IAUoAhAhAQwFCyAEIAEgB0HgABAkCyIBRQ0ACwwCC0GQocAAQRAQhgEhAQwBCyAFIAVBCGqtQoCAgIAwhDcDECAFQSRqIgFB0oPAACAFQRBqEFkgARB8IQELIAVBQGskACABDQlBAAwLCyASKAIIQQJGBEAgEkEANgIoIBJBADYCICASQQA2AhggEkEANgIQIBJBADYCCAsgDCAEOgADIAxBAjoAAiAEQf8BcUECRwRAIAwgDEECaq1CgICAgMAAhDcDGCAMIAxBA2qtQoCAgIDAAIQ3AxAgDEEEaiIBIAxBEGoQWiABEHwhAQwICyASQQhqIQUjAEFAaiIJJAAgCUEQaiAHEB8CQCAJKAIQQQFGBEAgCSgCFCEBDAELAkAgCSkDGCIeIAcoAgBBBGooAgAiAa1YBEAgASAep2shCwNAIAsgBygCAEEEaigCACIETwRAQQAhASAEIAtGDQRB96DAAEEZEIYBIQEMBAsgCUEQaiAHEB8gCSgCEEEBRgRAIAkoAhQhAQwECyAJIAkpAxgiHzcDCCAfQv////8PVg0CIAkgH0IHgyIeNwMwIB5CBloEQCAJIAlBMGqtQoCAgIAwhDcDOCAJQRBqIgFB6IPAACAJQThqEFkgARB8IQEMBAsgH0IHWARAQeOgwABBFBCGASEBDAQLIB6nIQQjAEEgayIDJAACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQCAfp0EDdiIBQQFrDgUBAgMEBQALIAQgASAHQeAAECQMCwsgBSgCAEUEQCAFQgE3AgALIAMgBDoAAyADQQU6AAIgBEH/AXFBBUcEQCADIANBAmqtQoCAgIDAAIQ3AxggAyADQQNqrUKAgICAwACENwMQIANBBGoiASADQRBqEFogARB8IQEMCgsgBygCACIGQQRqIgQoAgAiAUEDTQRAQeSswABBEBCGASEBDAoLIAQgAUEEazYCACAGIAYoAgAiAUEEajYCACAFIAEqAAA4AgQMBAsgBSgCCEUEQCAFQgE3AggLIAMgBDoAAyADQQU6AAIgBEH/AXFBBUcEQCADIANBAmqtQoCAgIDAAIQ3AxggAyADQQNqrUKAgICAwACENwMQIANBBGoiASADQRBqEFogARB8IQEMCAsgBygCACIGQQRqIgQoAgAiAUEDTQRAQeSswABBEBCGASEBDAgLIAQgAUEEazYCACAGIAYoAgAiAUEEajYCACAFIAEqAAA4AgwMAwsgBSgCEEUEQCAFQgE3AhALIAMgBDoAAyADQQU6AAIgBEH/AXFBBUcEQCADIANBAmqtQoCAgIDAAIQ3AxggAyADQQNqrUKAgICAwACENwMQIANBBGoiASADQRBqEFogARB8IQEMBgsgBygCACIGQQRqIgQoAgAiAUEDTQRAQeSswABBEBCGASEBDAYLIAQgAUEEazYCACAGIAYoAgAiAUEEajYCACAFIAEqAAA4AhQMAgsgBSgCGEUEQCAFQgE3AhgLIAMgBDoAAyADQQU6AAIgBEH/AXFBBUcEQCADIANBAmqtQoCAgIDAAIQ3AxggAyADQQNqrUKAgICAwACENwMQIANBBGoiASADQRBqEFogARB8IQEMBAsgBygCACIGQQRqIgQoAgAiAUEDTQRAQeSswABBEBCGASEBDAQLIAQgAUEEazYCACAGIAYoAgAiAUEEajYCACAFIAEqAAA4AhwMAQsgBSgCIEUEQCAFQgE3AiALIAMgBDoAAyADQQU6AAIgBEH/AXFBBUcEQCADIANBAmqtQoCAgIDAAIQ3AxggAyADQQNqrUKAgICAwACENwMQIANBBGoiASADQRBqEFogARB8IQEMAgsgBygCACIGQQRqIgQoAgAiAUEDTQRAQeSswABBEBCGASEBDAILIAQgAUEEazYCACAGIAYoAgAiAUEEajYCACAFIAEqAAA4AiQLQQAMBQsgAyABNgIQIANBEGpBhLDAAEEIQZewwABBDRB2IAMoAhAMBAsgAyABNgIQIANBEGpBhLDAAEEIQZGwwABBBhB2IAMoAhAMAwsgAyABNgIQIANBEGpBhLDAAEEIQYywwABBBRB2IAMoAhAMAgsgAyABNgIQIANBEGpBhLDAAEEIQfOvwABBARB2IAMoAhAMAQsgAyABNgIQIANBEGpBhLDAAEEIQfKvwABBARB2IAMoAhALIQEgA0EgaiQAIAFFDQALDAILQZChwABBEBCGASEBDAELIAkgCUEIaq1CgICAgDCENwMQIAlBJGoiAUHSg8AAIAlBEGoQWSABEHwhAQsgCUFAayQAIAENB0EADAoLIBIoAjBBAkYEQCASQQA2AkggEkEANgJAIBJBADYCOCASQQA2AjALIAwgBDoAAyAMQQI6AAIgBEH/AXFBAkcEQCAMIAxBAmqtQoCAgIDAAIQ3AxggDCAMQQNqrUKAgICAwACENwMQIAxBBGoiASAMQRBqEFogARB8IQEMBgsgEkEwaiEFIwBBQGoiCSQAIAlBEGogBxAfAkAgCSgCEEEBRgRAIAkoAhQhAQwBCwJAIAkpAxgiHiAHKAIAQQRqKAIAIgGtWARAIAEgHqdrIQsDQCALIAcoAgBBBGooAgAiBE8EQEEAIQEgBCALRg0EQfegwABBGRCGASEBDAQLIAlBEGogBxAfIAkoAhBBAUYEQCAJKAIUIQEMBAsgCSAJKQMYIh83AwggH0L/////D1YNAiAJIB9CB4MiHjcDMCAeQgZaBEAgCSAJQTBqrUKAgICAMIQ3AzggCUEQaiIBQeiDwAAgCUE4ahBZIAEQfCEBDAQLIB9CB1gEQEHjoMAAQRQQhgEhAQwECyAepyEEIwBBIGsiAyQAAn8CQAJAAkACQAJAAkACQAJAAkACQCAfp0EDdiIBQQFrDgQBAgMEAAsgBCABIAdB4AAQJAwJCyAFKAIARQRAIAVCATcCAAsgAyAEOgADIANBBToAAiAEQf8BcUEFRwRAIAMgA0ECaq1CgICAgMAAhDcDGCADIANBA2qtQoCAgIDAAIQ3AxAgA0EEaiIBIANBEGoQWiABEHwhAQwICyAHKAIAIgZBBGoiBCgCACIBQQNNBEBB5KzAAEEQEIYBIQEMCAsgBCABQQRrNgIAIAYgBigCACIBQQRqNgIAIAUgASoAADgCBAwDCyAFKAIIRQRAIAVCATcCCAsgAyAEOgADIANBBToAAiAEQf8BcUEFRwRAIAMgA0ECaq1CgICAgMAAhDcDGCADIANBA2qtQoCAgIDAAIQ3AxAgA0EEaiIBIANBEGoQWiABEHwhAQwGCyAHKAIAIgZBBGoiBCgCACIBQQNNBEBB5KzAAEEQEIYBIQEMBgsgBCABQQRrNgIAIAYgBigCACIBQQRqNgIAIAUgASoAADgCDAwCCyAFKAIQRQRAIAVCATcCEAsgAyAEOgADIANBBToAAiAEQf8BcUEFRwRAIAMgA0ECaq1CgICAgMAAhDcDGCADIANBA2qtQoCAgIDAAIQ3AxAgA0EEaiIBIANBEGoQWiABEHwhAQwECyAHKAIAIgZBBGoiBCgCACIBQQNNBEBB5KzAAEEQEIYBIQEMBAsgBCABQQRrNgIAIAYgBigCACIBQQRqNgIAIAUgASoAADgCFAwBCyAFKAIYRQRAIAVCATcCGAsgAyAEOgADIANBBToAAiAEQf8BcUEFRwRAIAMgA0ECaq1CgICAgMAAhDcDGCADIANBA2qtQoCAgIDAAIQ3AxAgA0EEaiIBIANBEGoQWiABEHwhAQwCCyAHKAIAIgZBBGoiBCgCACIBQQNNBEBB5KzAAEEQEIYBIQEMAgsgBCABQQRrNgIAIAYgBigCACIBQQRqNgIAIAUgASoAADgCHAtBAAwECyADIAE2AhAgA0EQakHnr8AAQQtB/K/AAEEIEHYgAygCEAwDCyADIAE2AhAgA0EQakHnr8AAQQtB9K/AAEEIEHYgAygCEAwCCyADIAE2AhAgA0EQakHnr8AAQQtB86/AAEEBEHYgAygCEAwBCyADIAE2AhAgA0EQakHnr8AAQQtB8q/AAEEBEHYgAygCEAshASADQSBqJAAgAUUNAAsMAgtBkKHAAEEQEIYBIQEMAQsgCSAJQQhqrUKAgICAMIQ3AxAgCUEkaiIBQdKDwAAgCUEQahBZIAEQfCEBCyAJQUBrJAAgAQ0FQQAMCQsgEigCUEECRgRAIBJBAjYCqAEgEkECNgKIASASQQA2AoABIBJBADYCeCASQQA2AnAgEkEANgJoIBJBADYCYCASQQA2AlggEkEANgJQCyAMIAQ6AAMgDEECOgACIARB/wFxQQJHBEAgDCAMQQJqrUKAgICAwACENwMYIAwgDEEDaq1CgICAgMAAhDcDECAMQQRqIgEgDEEQahBaIAEQfCEBDAQLIBJB0ABqIQkjAEFAaiIFJAAgBUEQaiAHEB8CQCAFKAIQQQFGBEAgBSgCFCEBDAELAkAgBSkDGCIeIAcoAgBBBGooAgAiAa1YBEAgASAep2shCwNAIAsgBygCAEEEaigCACIETwRAQQAhASAEIAtGDQRB96DAAEEZEIYBIQEMBAsgBUEQaiAHEB8gBSgCEEEBRgRAIAUoAhQhAQwECyAFIAUpAxgiHzcDCCAfQv////8PVg0CIAUgH0IHgyIeNwMwIB5CBloEQCAFIAVBMGqtQoCAgIAwhDcDOCAFQRBqIgFB6IPAACAFQThqEFkgARB8IQEMBAsgH0IHWARAQeOgwABBFBCGASEBDAQLIB6nIQQjAEEgayIDJAACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAfp0EDdiIBQQFrDgkBAgMEBQYHCAkACyAEIAEgB0HgABAkDBELIAkoAjhBAkYEQCAJQQA2AlAgCUEANgJIIAlBADYCQCAJQQA2AjgLIAMgBDoAAyADQQI6AAIgBEH/AXFBAkcEQCADIANBAmqtQoCAgIDAAIQ3AxggAyADQQNqrUKAgICAwACENwMQIANBBGoiASADQRBqEFogARB8IQEMEAsgCUE4aiAHEDUiAQ0PDAgLIAkoAlhBAkYEQCAJQQA2AnAgCUEANgJoIAlBADYCYCAJQQA2AlgLIAMgBDoAAyADQQI6AAIgBEH/AXFBAkcEQCADIANBAmqtQoCAgIDAAIQ3AxggAyADQQNqrUKAgICAwACENwMQIANBBGoiASADQRBqEFogARB8IQEMDgsgCUHYAGogBxA1IgENDQwHCyAJKAIARQRAIAlCATcCAAsgAyAEOgADIANBBToAAiAEQf8BcUEFRwRAIAMgA0ECaq1CgICAgMAAhDcDGCADIANBA2qtQoCAgIDAAIQ3AxAgA0EEaiIBIANBEGoQWiABEHwhAQwMCyAHKAIAIgZBBGoiBCgCACIBQQNNBEBB5KzAAEEQEIYBIQEMDAsgBCABQQRrNgIAIAYgBigCACIBQQRqNgIAIAkgASoAADgCBAwGCyAJKAIIRQRAIAlCATcCCAsgBCAJQQxqIAcQGiIBRQ0FIAMgATYCECADQRBqQYevwABBCkGnr8AAQQgQdiADKAIQDA0LIAkoAhBFBEAgCUIBNwIQCyAEIAlBFGogBxAaIgFFDQQgAyABNgIQIANBEGpBh6/AAEEKQa+vwABBCRB2IAMoAhAMDAsgCSgCGEUEQCAJQgE3AhgLIAMgBDoAAyADQQU6AAIgBEH/AXFBBUcEQCADIANBAmqtQoCAgIDAAIQ3AxggAyADQQNqrUKAgICAwACENwMQIANBBGoiASADQRBqEFogARB8IQEMCAsgBygCACIGQQRqIgQoAgAiAUEDTQRAQeSswABBEBCGASEBDAgLIAQgAUEEazYCACAGIAYoAgAiAUEEajYCACAJIAEqAAA4AhwMAwsgCSgCIEUEQCAJQgE3AiALIAMgBDoAAyADQQU6AAIgBEH/AXFBBUcEQCADIANBAmqtQoCAgIDAAIQ3AxggAyADQQNqrUKAgICAwACENwMQIANBBGoiASADQRBqEFogARB8IQEMBgsgBygCACIGQQRqIgQoAgAiAUEDTQRAQeSswABBEBCGASEBDAYLIAQgAUEEazYCACAGIAYoAgAiAUEEajYCACAJIAEqAAA4AiQMAgsgCSgCKEUEQCAJQgE3AigLIAMgBDoAAyADQQU6AAIgBEH/AXFBBUcEQCADIANBAmqtQoCAgIDAAIQ3AxggAyADQQNqrUKAgICAwACENwMQIANBBGoiASADQRBqEFogARB8IQEMBAsgBygCACIGQQRqIgQoAgAiAUEDTQRAQeSswABBEBCGASEBDAQLIAQgAUEEazYCACAGIAYoAgAiAUEEajYCACAJIAEqAAA4AiwMAQsgCSgCMEUEQCAJQgE3AjALIAMgBDoAAyADQQU6AAIgBEH/AXFBBUcEQCADIANBAmqtQoCAgIDAAIQ3AxggAyADQQNqrUKAgICAwACENwMQIANBBGoiASADQRBqEFogARB8IQEMAgsgBygCACIGQQRqIgQoAgAiAUEDTQRAQeSswABBEBCGASEBDAILIAQgAUEEazYCACAGIAYoAgAiAUEEajYCACAJIAEqAAA4AjQLQQAMBwsgAyABNgIQIANBEGpBh6/AAEEKQdqvwABBDRB2IAMoAhAMBgsgAyABNgIQIANBEGpBh6/AAEEKQc6vwABBDBB2IAMoAhAMBQsgAyABNgIQIANBEGpBh6/AAEEKQcOvwABBCxB2IAMoAhAMBAsgAyABNgIQIANBEGpBh6/AAEEKQbivwABBCxB2IAMoAhAMAwsgAyABNgIQIANBEGpBh6/AAEEKQZuvwABBDBB2IAMoAhAMAgsgAyABNgIQIANBEGpBh6/AAEEKQZWvwABBBhB2IAMoAhAMAQsgAyABNgIQIANBEGpBh6/AAEEKQZGvwABBBBB2IAMoAhALIQEgA0EgaiQAIAFFDQALDAILQZChwABBEBCGASEBDAELIAUgBUEIaq1CgICAgDCENwMQIAVBJGoiAUHSg8AAIAVBEGoQWSABEHwhAQsgBUFAayQAIAENA0EADAgLIBIoAsgBQQJGBEAgEkEANgLwASASQQA2AugBIBJBADYC4AEgEkEANgLYASASQQA2AtABIBJBADYCyAELIAwgBDoAAyAMQQI6AAIgBEH/AXFBAkcEQCAMIAxBAmqtQoCAgIDAAIQ3AxggDCAMQQNqrUKAgICAwACENwMQIAxBBGoiASAMQRBqEFogARB8IQEMAgsgEkHIAWogB0HgABA0IgENAUEADAcLIAwgATYCECAMQRBqQdyfwABBC0Hnn8AAQQYQdgwFCyAMIAE2AhAgDEEQakHcn8AAQQtB6J7AAEEJEHYMBAsgDCABNgIQIAxBEGpB3J/AAEELQf2fwABBBhB2DAMLIAwgATYCECAMQRBqQdyfwABBC0H2n8AAQQcQdgwCCyAMIAE2AhAgDEEQakHcn8AAQQtB8p/AAEEEEHYMAQsgDCABNgIQIAxBEGpB3J/AAEELQe2fwABBBRB2CyAMKAIQCyEBIAxBIGokACABRQ0ACwwCC0GQocAAQRAQhgEhAQwBCyAYIBhBCGqtQoCAgIAwhDcDECAYQSRqIgFB0oPAACAYQRBqEFkgARB8IQELIBhBQGskACABBEAgFSgC/AEiBEGCgICAeEggBEVyDQEgFSgCgAIgBEEBEMQBDAELIBVBiAJqIBVBBGpBhAL8CgAAIBEoAggiBiARKAIARgRAIwBBEGsiCyQAIAtBBGogESgCACIBIBEoAgRBBCABQQF0IgEgAUEETRsiBEEEQYQCEEsgCygCBEEBRgRAIAsoAgggCygCDBCqAQALIAsoAgghASARIAQ2AgAgESABNgIEIAtBEGokAAsgESgCBCAGQYQCbGogFUGIAmpBhAL8CgAAIBEgBkEBajYCCEEAIQELIBVBkARqJAAgAQ0BC0EADAQLIBAgATYCECAQQRBqQdKewABBC0H6nsAAQQYQdiAQKAIQDAMLIBAgATYCECAQQRBqQdKewABBC0HonsAAQQkQdiAQKAIQDAILIBAgATYCECAQQRBqQdKewABBC0HinsAAQQYQdiAQKAIQDAELIBAgATYCECAQQRBqQdKewABBC0HdnsAAQQUQdiAQKAIQCyEBIBBBIGokACABRQ0ACwwCC0GQocAAQRAQhgEhAQwBCyAXIBdBCGqtQoCAgIAwhDcDECAXQSRqIgFB0oPAACAXQRBqEFkgARB8IQELIBdBQGskACABBEAgFCgCbCICQYCAgIB4RiACRXJFBEAgFCgCcCACQQEQxAELIBQoAmgiEQRAIBQoAmRB/AFqIQQDQCAEQQRrKAIAIgJBgoCAgHhIIAJFckUEQCAEKAIAIAJBARDEAQsgBEGEAmohBCARQQFrIhENAAsLIBQoAmAiAkUNASAUKAJkIAJBhAJsQQQQxAEMAQsgFEH4AGogFEEIakHwAPwKAAAgDygCCCIGIA8oAgBGBEAjAEEQayIBJAAgAUEEaiAPKAIAIgIgDygCBEEEIAJBAXQiAiACQQRNGyIEQQRB8AAQSyABKAIEQQFGDRYgASgCCCECIA8gBDYCACAPIAI2AgQgAUEQaiQACyAPKAIEIAZB8ABsaiAUQfgAakHwAPwKAAAgDyAGQQFqNgIIQQAhAQsgFEHwAWokACABDQFBAAwCCyANIAE2AgggDUEIakGDoMAAQQxBj6DAAEEJEHYgDSgCCAwBCyANIAE2AgwgDUEMakGDoMAAQQxB1p/AAEEGEHYgDSgCDAshASANQRBqJAAgAUUNAAsMAgtBkKHAAEEQEIYBIQEMAQsgFiAWQQhqrUKAgICAMIQ3AxAgFkEkaiIBQdKDwAAgFkEQahBZIAEQfCEBCyAWQUBrJAAgAQRAIBMoAhQiAkGAgICAeEYgAkVyRQRAIBMoAhggAkEBEMQBCyATQQhqEEogEygCCCICRQ0BIBMoAgwgAkHwAGxBBBDEAQwBCyATQTBqIgYgE0EYaikCADcDACATQShqIgQgE0EQaikCADcDACATIBMpAgg3AyAgGygCCCILIBsoAgBGBEAjAEEQayIBJAAgAUEEaiAbKAIAIgIgGygCBEEEIAJBAXQiAiACQQRNGyIHQQRBGBBLIAEoAgRBAUYNDiABKAIIIQIgGyAHNgIAIBsgAjYCBCABQRBqJAALIBsoAgQgC0EYbGoiASATKQMgNwIAIAFBEGogBikDADcCACABQQhqIAQpAwA3AgAgGyALQQFqNgIIQQAhAQsgE0FAayQAIAENA0EADAYLIAhB5AFqIQQjAEHgAGsiDSQAIA0gAjoAXyANQQI6AF4CQCACQf8BcUECRwRAIA0gDUHeAGqtQoCAgIDAAIQ3AzggDSANQd8Aaq1CgICAgMAAhDcDMCANQQRqIgEgDUEwahBaIAEQfCEBDAELIA1BADYCHCANQQA2AhQgDUEANgIMIA1BADYCBCANQYCAgIB4NgIkIA1BBGohCyMAQUBqIgokACAKQRBqIAQQHwJAIAooAhBBAUYEQCAKKAIUIQIMAQsCQCAKKQMYIh4gBCgCAEEEaigCACIBrVgEQCABIB6nayEHA0AgByAEKAIAQQRqKAIAIgFPBEBBACECIAEgB0YNBEH3oMAAQRkQhgEhAgwECyAKQRBqIAQQHyAKKAIQQQFGBEAgCigCFCECDAQLIAogCikDGCIfNwMIIB9C/////w9WDQIgCiAfQgeDIh43AzAgHkIGWgRAIAogCkEwaq1CgICAgDCENwM4IApBEGoiAUHog8AAIApBOGoQWSABEHwhAgwECyAfQgdYBEBB46DAAEEUEIYBIQIMBAsgHqchAiMAQRBrIgYkAAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAIB+nQQN2IgFBAWsOBQECAwQFAAsgAiABIARB4wAQJAwLCyALKAIgQYCAgIB4RgRAIAtBADYCKCALQoCAgIAQNwIgCyACIAtBIGogBBBEIgENBEEADAoLIAsoAgBFBEAgC0IBNwIACyACIAtBBGogBBAaIgENBEEADAkLIAsoAghFBEAgC0IBNwIICyACIAtBDGogBBAaIgENBEEADAgLIAsoAhBFBEAgC0IBNwIQCyACIAtBFGogBBAaIgENBEEADAcLIAsoAhhFBEAgC0IBNwIYCyACIAtBHGogBBAaIgENBEEADAYLIAYgATYCDCAGQQxqQZaewABBC0GhnsAAQQkQdgwECyAGIAE2AgwgBkEMakGWnsAAQQtBqp7AAEELEHYMAwsgBiABNgIMIAZBDGpBlp7AAEELQbWewABBCRB2DAILIAYgATYCDCAGQQxqQZaewABBC0G+nsAAQQoQdgwBCyAGIAE2AgwgBkEMakGWnsAAQQtByJ7AAEEKEHYLIAYoAgwLIQIgBkEQaiQAIAJFDQALDAILQZChwABBEBCGASECDAELIAogCkEIaq1CgICAgDCENwMQIApBJGoiAUHSg8AAIApBEGoQWSABEHwhAgsgCkFAayQAIAIiAQRAIA0oAiQiAkGAgICAeEYgAkVyDQEgDSgCKCACQQEQxAEMAQsgDUHYAGoiDiANQSxqKAIANgIAIA1B0ABqIgogDUEkaikCADcDACANQcgAaiILIA1BHGopAgA3AwAgDUFAayIGIA1BFGopAgA3AwAgDUE4aiIEIA1BDGopAgA3AwAgDSANKQIENwMwIBooAggiGSAaKAIARgRAIwBBEGsiASQAIAFBBGogGigCACICIBooAgRBBCACQQF0IgIgAkEETRsiB0EEQSwQSyABKAIEQQFGDQ0gASgCCCECIBogBzYCACAaIAI2AgQgAUEQaiQACyAaKAIEIBlBLGxqIgEgDSkDMDcCACABQShqIA4oAgA2AgAgAUEgaiAKKQMANwIAIAFBGGogCykDADcCACABQRBqIAYpAwA3AgAgAUEIaiAEKQMANwIAIBogGUEBajYCCEEAIQELIA1B4ABqJAAgAQ0DQQAMBQsgCCABNgJ4IAhB+ABqQYCfwABBC0GLn8AAQQcQdiAIKAJ4IQIMCAsgCEEANgKAASAIQoCAgIAQNwJ4IwBB0ABrIg8kACAPQQA2AhQgD0KAgICAEDcCDCAPQSBqIAhB+ABqIgYiAUEIaigCADYCACAPIAEpAgA3AxggDyAPQRhqNgJEIA8gD0EMajYCQCAPQUBrIQcjAEFAaiIFJAAgBUEQaiAIQeQBaiIOEB8CQCAFKAIQQQFGBEAgBSgCFCEBDAELAkAgBSkDGCIeIA4oAgBBBGooAgAiAa1YBEAgASAep2shCyAHKAIEIQIgBygCACEEA0AgCyAOKAIAQQRqKAIAIgdPBEBBACEBIAcgC0YNBEH3oMAAQRkQhgEhAQwECyAFQRBqIA4QHyAFKAIQQQFGBEAgBSgCFCEBDAQLIAUgBSkDGCIfNwMIIB9C/////w9WDQIgBSAfQgeDIh43AzAgHkIGWgRAIAUgBUEwaq1CgICAgDCENwM4IAVBEGoiAUHog8AAIAVBOGoQWSABEHwhAQwECyAfQgdYBEBB46DAAEEUEIYBIQEMBAsgHqchBwJAAkACQCAfp0EDdiIBQQFrDgIBAgALIAcgASAOQeMAECQiAUUNAgwFCyAHIAQgDhBEIgFFDQEMBAsjAEEgayINJAAgDSAHOgADIA1BAjoAAgJ/IAdB/wFxQQJHBEAgDSANQQJqrUKAgICA8ACENwMYIA0gDUEDaq1CgICAgPAAhDcDECANQQRqIgEgDUEQahBaIAEQfAwBCyANQRBqIA4QICANKAIQQQFGBEAgDSgCFAwBCyANKQMYIh4gDigCACIBQQRqNQIAWARAIA1BEGoiByABIB6nEC5BACEKIwBBEGsiGSQAIAJBADYCCCAHKAIIIgEgAigCACIRSwRAIAJBACABQQFBARBMIAIoAgAhESACKAIIIQoLIBlBCGogB0EIaikCACIeNwMAIBkgBykCADcDAAJ/AkAgHqciASARIAprSwRAIAIgCiABQQFBARBMIBkoAgQhCgwBCyAZKAIEIgogAUUNARoLIAIoAgAgAigCCCIRayABSQRAIAIgESABQQFBARBMIAIoAgghEQsgAQRAIAIoAgQgEWogCiAB/AoAAAsgAiABIBFqNgIIIAEgCmoLIQEgGUEANgIIIBkgATYCBCAZQQxqIAFBACAZKAIAKAIQEQIAIBlBEGokAEEADAELQZCrwABBEBCGAQshASANQSBqJAAgAUUNAAsMAgtBkKHAAEEQEIYBIQEMAQsgBSAFQQhqrUKAgICAMIQ3AxAgBUEkaiIBQdKDwAAgBUEQahBZIAEQfCEBCyAFQUBrJAACQCABBEAgDygCGCICBEAgDygCHCACQQEQxAELIA8oAgwiAkUNASAPKAIQIAJBARDEAQwBCyAPQThqIA9BFGooAgA2AgAgDyAPKQIMNwMwIA9ByABqIA9BIGooAgA2AgAgDyAPKQMYNwNAIA9BJGogHCAPQTBqIA9BQGsQISAPKAIkIgFBgICAgHhGIAFFckUEQCAPKAIoIAFBARDEAQtBACEBCyAPQdAAaiQAQQAgAUUNAxogCCABNgJ4IAZBgJ/AAEELQZifwABBBhB2IAgoAnghAgwHCyAIIAE2AnggCEH4AGpBgJ/AAEELQZ6fwABBBxB2IAgoAnghAgwGCyAIIAE2AnggCEH4AGpBgJ/AAEELQaWfwABBBhB2IAgoAnghAgwFCyACIAEgCEHkAWpB5AAQJAsiAkUNAQwDCwsgCCAIQegBaq1CgICAgDCENwN4IAhBhAJqIgFB0oPAACAIQfgAahBZIAEQfCECDAELIAggAjYCeCAIQfgAakGAn8AAQQtBkp/AAEEGEHYgCCgCeCECCyAIQfgAaiAIQRBqQegA/AoAACAAQQM2AgAgACACNgIEIAgoAtABIgBBgICAgHhGIABFckUEQCAIKALUASAAQQEQxAELIAhBmAFqEEIgCEG4AWoQPCAIKAK4ASIABEAgCCgCvAEgAEEYbEEEEMQBCyAIKALIASEHIAgoAswBIgEEQCAHQSRqIQIDQCACQQRrKAIAIgBBgICAgHhGIABFckUEQCACKAIAIABBARDEAQsgAkEsaiECIAFBAWsiAQ0ACwsgCCgCxAEiAEUNACAHIABBLGxBBBDEAQsgCEGQAmokAA8LIAEoAgggASgCDBCqAQALvQsBGX8gAUHk0QBqIRUgAUGABGohFiABQYDPAGohFyABQaDRAGohGCABQYA2aiEZIAFB7dEAaiEaIwBB8ABrIgdBMGohGyABLQDrUSEDIAdBIGohEiAHQRhqIRMgB0EQaiEUAkACQANAQaACIQUgFyERAkACQAJAAkACQAJAIANB/wFxIgQOAwEAAgQLQSAhBSAYIRELIBJCADcDACATQgA3AwAgFEIANwMAIAdCADcDCCAHQSxqQQBBxAD8CwAgASAEQYAZbCIDaiEGIAMgFmohDEGAcCEDA0AgAyAGaiIKQYgUakKehviY4OOAjwM3AgAgCkGAFGpCnob4mODjgI8DNwIAIANBEGoiAw0ACyAMQYAQakEAQYAJ/AsADAELIBJCADcDACATQgA3AwAgFEIANwMAIAdCADcDCCAHQSxqQQBBxAD8CwBBgHAhAwNAIAEgA2oiBUGIxgBqQp6G+Jjg44CPAzcCACAFQYDGAGpCnob4mODjgI8DNwIAIANBEGoiAw0AC0ETIQUgGiERIBkhDAtBHCENIBUgBEEBdGovAQAiCiAFSwRAQQMhCQwFCyARIQMgCiIGRQ0BA0AgAy0AACIFQQ9NBEAgB0EIaiAFQQF0aiIFIAUvAQBBAWo7AQAgA0EBaiEDIAZBAWsiBg0BDAMLC0EDIQkMBAtBAyEJDAMLIAcgBy8BCiIFQQF0IgY2AjRBAiEDA0AgA0EPS0UEQCAbIANBAnRqIAYgB0EIaiADQQF0ai8BACILakEBdCIGNgIAIAUgC2ohBSADIANBEElqIQMMAQsLQQEhCSAEQQJGIAVB//8DcUEBS3IgBkGAgARHcQ0CAkAgCkUNACAMQYAQaiEOQf//AyEEQQAhCwNAIAsiD0EBaiELAkAgDyARai0AAEEPcSIIRQ0AIAdBLGogCEECdGoiAyADKAIAIgNBAWo2AgACfyADQX9BICAIa3ZxIgNBgARPBEAgA0EIdCADQYD+A3FBCHZyIgNBBHZBjx5xIANBjx5xQQR0ciIDQQJ2QbPmAHEgA0Gz5gBxQQJ0ciIDQQF2QdWqAXEgA0HVqgFxQQF0cgwBCyADQQF0LwGEuEALQf//A3FBECAIa3YhBiAIQQtJBEAgBkH/B0sNASAIQQl0IA9yIQVBASAIdCIPQQF0IQggDCAGQQF0aiEDA0AgAyAFOwEAIAMgCGohAyAGIA9qIgZBgAhJDQALDAELIAwgBkH/B3FBAXRqIgMvAQAiBUGeBkYEQCADIAQ7AQAgBCEFIARBAmshBAsCQCAIQQtGBEAgBkEJdiEQDAELQQohDSAGQQp2IhBBAXEgBUF/c2pB//8DcSIDQb8ESwRAQQMhCQwHCyAOIANBAXRqIgMvAQAiBQR/IAQFIAMgBDsBACAEIQUgBEECawshAyAIQQ1JBEAgAyEEDAELIAZBC3YiEEEBcSAFQX9zakH//wNxIgRBvwRLBEBBAyEJDAcLIA4gBEEBdGoiBC8BACIFBH8gAwUgBCADOwEAIAMhBSADQQJrCyEEIAhBDUYNACAGQQx2IhBBAXEgBUF/c2pB//8DcSIDQb8ESwRAQQMhCQwHCyAOIANBAXRqIgMvAQAiBQR/IAQFIAMgBDsBACAEIQUgBEECawshAyAIQQ9HBEAgAyEEDAELIAZBDXYiEEEBcSAFQX9zakH//wNxIgRBvwRLBEBBAyEJDAcLIA4gBEEBdGoiBC8BACIFBEAgAyEEDAELIAQgAzsBACADQQJrIQQgAyEFCyAQQQF2QQFxIAVBf3NqQf//A3EiA0G/BEsEQEEKIQ1BAyEJDAYLIA4gA0EBdGogDzsBACAKIAtLDQEMAgsgCiALRw0ACwsCQAJAIAEtAOtRIgQOAwEAAwALIAEgBEEBayIDOgDrUQwBCwsgAkEANgIMQQwhDQwBCyACQQA2AgxBCiENCyAAIA06AAEgACAJOgAAC54IAQd/IARBfHEiCCADaiEGAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCACIANPIgogBUF/RiACIARqQQNrIAFJciIJRXJFIAIgA2sgAyACayIHIAIgA0sbQQFGcUUEQCABQQNrIghBACABIAhPGyIIIAYgBiAISxshCCAKIAlFckUgB0EDS3ENASADIAhJDQIgAyEGDA4LIANBAWsiAiABTw0DIAEgBkkgAyAGS3INBCAIBEAgACADaiAAIAJqLQAAIAj8CwALIAZBAWshAgwNCyADIAhJDQEgAyEGDAwLIAAgA2ohC0EAIQcDQCADIAdqQQNqIAFPDQQgAiAHaiIGQQNqIAVxIgwgAU8NBSAFIAZxIgkgAU8NBiAHIAtqIgogACAJai0AADoAACAGQQFqIAVxIgkgAU8NByAKQQFqIAAgCWotAAA6AAAgASAGQQJqIAVxIgZLBEAgCkECaiAAIAZqLQAAOgAAIApBA2ogACAMai0AADoAACADIAdBBGoiB2oiBiAITw0MDAELCyAGIAFB7MHAABBzAAsgAUEEayEHIAMhBgNAIAJBA2ogAU8NByACQXxPDQggBiAHSw0JIAAgBmogACACaigAADYAACACQQRqIQIgCCAGQQRqIgZLDQALDAoLIAIgAUGUwMAAEHMACyADIAYgAUGkwMAAEDkAC0G0wMAAQS9B5MDAABCrAQALQfTAwABByABBvMHAABCrAQALIAkgAUHMwcAAEHMACyAJIAFB3MHAABBzAAtBACACQQNqIAFBrMXAABA5AAsgAiACQQRqIAFBrMXAABA5AAtBvMXAAEErQazFwAAQggEACyACIAdqIQILAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIARBA3FBAWsOAwABAg4LIAIgBXEiAyABSQ0KIAMgAUH8wcAAEHMACyAGQQFqIgcgAU8NASACQQFqIAVxIgMgAU8NAiACIAVxIgIgAU8NAyABIAZLDQogBiABQcTDwAAQcwALIAZBAmoiByABTw0DIAJBAmogBXEiAyABTw0EIAIgBXEiBCABTw0FIAEgBk0NBiAAIAZqIAAgBGotAAA6AAAgAkEBaiAFcSICIAFPDQcgBkEBaiIGIAFJDQkgBiABQZzFwAAQcwALQZzCwABBL0HMwsAAEKsBAAtB3MLAAEHIAEGkw8AAEKsBAAsgAiABQbTDwAAQcwALQdTDwABBL0GExMAAEKsBAAtBlMTAAEHIAEHcxMAAEKsBAAsgBCABQezEwAAQcwALIAYgAUH8xMAAEHMACyACIAFBjMXAABBzAAsgASAGSwRAIAYhBwwCCyAGIAFBjMLAABBzAAsgACAGaiAAIAJqLQAAOgAACyAAIAdqIAAgA2otAAA6AAALC8YGAQd/AkACQCABIABBA2pBfHEiBCAAayIHSQ0AIAEgB2siBkEESQ0AQQAhASAAIARHBEAgACAEayIEQXxNBEADQCABIAAgA2oiAiwAAEG/f0pqIAJBAWosAABBv39KaiACQQJqLAAAQb9/SmogAkEDaiwAAEG/f0pqIQEgA0EEaiIDDQALCyAAIANqIQIDQCABIAIsAABBv39KaiEBIAJBAWohAiAEQQFqIgQNAAsLIAAgB2ohBAJAIAZBA3EiAEUNACAEIAZB/P///wdxaiIDLAAAQb9/SiEFIABBAUYNACAFIAMsAAFBv39KaiEFIABBAkYNACAFIAMsAAJBv39KaiEFCyAGQQJ2IQYgASAFaiEDA0AgBCEAIAZFDQJBwAEgBiAGQcABTxsiBUEDcSEHAkAgBUECdCIEQfAHcSIBRQRAQQAhAgwBCyAAIAFqIQhBACECIAAhAQNAIAIgASgCACICQX9zQQd2IAJBBnZyQYGChAhxaiABQQRqKAIAIgJBf3NBB3YgAkEGdnJBgYKECHFqIAFBCGooAgAiAkF/c0EHdiACQQZ2ckGBgoQIcWogAUEMaigCACICQX9zQQd2IAJBBnZyQYGChAhxaiECIAFBEGoiASAIRw0ACwsgBiAFayEGIAAgBGohBCACQQh2Qf+B/AdxIAJB/4H8B3FqQYGABGxBEHYgA2ohAyAHRQ0ACwJ/IAAgBUH8AXFBAnRqIgAoAgAiAUF/c0EHdiABQQZ2ckGBgoQIcSIBIAdBAUYNABogASAAKAIEIgFBf3NBB3YgAUEGdnJBgYKECHFqIgEgB0ECRg0AGiAAKAIIIgBBf3NBB3YgAEEGdnJBgYKECHEgAWoLIgFBCHZB/4EccSABQf+B/AdxakGBgARsQRB2IANqIQMMAQsgAUUEQEEADwsgAUEDcSEEAkAgAUEESQRADAELIAFBfHEhBQNAIAMgACACaiIBLAAAQb9/SmogAUEBaiwAAEG/f0pqIAFBAmosAABBv39KaiABQQNqLAAAQb9/SmohAyAFIAJBBGoiAkcNAAsLIARFDQAgACACaiEBA0AgAyABLAAAQb9/SmohAyABQQFqIQEgBEEBayIEDQALCyADC/gFAQh/IwBBEGsiBSQAIAAoAgQhAgJAAkACQAJAAkACQAJAIAAoAgwiA0EBcUUEQCABIAJqIgEgAkkNAyADKAIQQQFGDQIMAQsgACgCCCIIIANBBXYiBGohByACIARNIAcgAmsgAU9xDQMMBAtBASEGQQEgAygCDCIHQQlqdCICIAEgASACSRsgASAHGyIBQQBIDQQgAQRAQQEhBCABQQEQzgEiBkUNBQtBACEEIAVBADYCDCAFIAY2AgggBSABNgIEIAAoAgAhCCABIAAoAgQiAkkEQCAFQQRqQQAgAkEBQQEQTCAFKAIMIQQgBSgCCCEGCyACBEAgBCAGaiAIIAL8CgAACyADIAMoAhAiAUEBazYCECAFIAIgBGo2AgwgAUEBRgRAIAMoAgAiAQRAIAMoAgQgAUEBEMQBCyADQRRBBBDEAQsgACAFKAIINgIAIAAgBSgCBDYCCCAAIAdBAnRBAXI2AgwMBQsCQAJAAkACQCAAKAIAIgkgAygCBCIGayIEIAFqIgggBE8EQCADKAIAIgcgCE8NASABIAdNIAIgBE1xDQIMAwsMAwsgACABNgIIDAcLIAIEQCAGIAkgAvwKAAALIAAgBjYCACAAIAMoAgA2AggMBgsgAyACIARqIgE2AgggACAIIAdBAXQiAiACIAhJGyABayICIAcgAWtLBH8gAyABIAJBAUEBEEwgAygCBCEGIAMoAgAFIAcLIARrNgIIIAAgBCAGajYCAAwFC0Gvs8AAQRFBuLPAABCCAQALQa+zwABBEUHIs8AAEIIBAAsgACgCACIGIARrIQEgAgRAIAEgBiAC/AoAAAsgACADQR9xNgIMIAAgATYCACAAIAc2AggMAgsgBSAHNgIEIAUgAiAEaiIDNgIMIAUgACgCACAEayIGNgIIIAAgCCACayABSQR/IAVBBGogAyABQQFBARBMIAUoAgghBiAFKAIEBSAHCyAEazYCCCAAIAQgBmo2AgAMAQsgBCABEKoBAAsgBUEQaiQAC8QFAgF+BH8jAEEgayIFJAAgBUEAOgACIAUgADoAAwJ/IABB/wFxBEAgBSAFQQJqrUKAgICAwACENwMYIAUgBUEDaq1CgICAgMAAhDcDECAFQQRqIgAgBUEQahBaIAAQfAwBCwJAAn8CQAJAAkACQAJAAkACQAJAIAIoAgAiBkEEaigCACIHRQ0AAkAgBigCACIALAAAIgRBAEgEQCAHQQpLDQEgACAHakEBaywAAEEATg0BIAVBEGogAhA7IAUoAhBBAUYEQCAFKAIUDA0LIAUpAxghAwwLCyAErUL/AYMhAyAGQQRqIAdBAWs2AgAgBiAAQQFqNgIADAoLIARB/wFxIAAsAAEiBEH/AXFBB3RqQYABayECIARBAEgEQCACIAAsAAIiBEH/AXFBDnRqQYCAAWshAiAEQQBODQIgAiAALAADIgRB/wFxQRV0akGAgIABayECIARBAE4NAyACQYCAgIABa60hAyAALAAEIgJBAE4NBCACQf8BcSAALAAFIgRB/wFxQQd0akGAAWshAiAEQQBODQUgAiAALAAGIgRB/wFxQQ50akGAgAFrIQIgBEEATg0GIAIgACwAByIEQf8BcUEVdGpBgICAAWshAiAEQQBODQcgAkGAgICAAWutQhyGIAN8IQMgACwACCICQQBODQggAC0ACSIEQQJPDQEgAkH/AHEgBEEHdHKtQjiGIAN8IQNBCgwJCyACrSEDQQIMCAtB9KzAAEEOEIYBDAkLIAKtIQNBAwwGCyACrSEDQQQMBQsgAq1C/wGDQhyGIAN8IQNBBQwECyACrUIchiADfCEDQQYMAwsgAq1CHIYgA3whA0EHDAILIAKtQhyGIAN8IQNBCAwBCyACrUL/AYNCOIYgA3whA0EJCyECIAZBBGogByACazYCACAGIAAgAmo2AgALIAEgAz4CAEEACyAFQSBqJAAL2gUCB38BfgJ/IAFFBEAgACgCCCEHQS0hCyAFQQFqDAELQStBgIDEACAAKAIIIgdBgICAAXEiARshCyABQRV2IAVqCyEJAkAgB0GAgIAEcUUEQEEAIQIMAQsCQCADQRBPBEAgAiADEBghAQwBCyADRQRAQQAhAQwBCyADQQNxIQoCQCADQQRJBEBBACEBDAELIANBDHEhDEEAIQEDQCABIAIgCGoiBiwAAEG/f0pqIAZBAWosAABBv39KaiAGQQJqLAAAQb9/SmogBkEDaiwAAEG/f0pqIQEgDCAIQQRqIghHDQALCyAKRQ0AIAIgCGohBgNAIAEgBiwAAEG/f0pqIQEgBkEBaiEGIApBAWsiCg0ACwsgASAJaiEJCwJAIAAvAQwiCCAJSwRAAkACQCAHQYCAgAhxRQRAIAggCWshCEEAIQFBACEJAkACQAJAIAdBHXZBA3FBAWsOAwABAAILIAghCQwBCyAIQf7/A3FBAXYhCQsgB0H///8AcSEKIAAoAgQhByAAKAIAIQADQCABQf//A3EgCUH//wNxTw0CQQEhBiABQQFqIQEgACAKIAcoAhARAABFDQALDAQLIAAgACkCCCINp0GAgID/eXFBsICAgAJyNgIIQQEhBiAAKAIAIgcgACgCBCIKIAsgAiADEIUBDQNBACEBIAggCWtB//8DcSECA0AgAUH//wNxIAJPDQIgAUEBaiEBIAdBMCAKKAIQEQAARQ0ACwwDC0EBIQYgACAHIAsgAiADEIUBDQIgACAEIAUgBygCDBEEAA0CQQAhASAIIAlrQf//A3EhAgNAIAFB//8DcSIDIAJJIQYgAiADTQ0DIAFBAWohASAAIAogBygCEBEAAEUNAAsMAgsgByAEIAUgCigCDBEEAA0BIAAgDTcCCEEADwtBASEGIAAoAgAiASAAKAIEIgAgCyACIAMQhQENACABIAQgBSAAKAIMEQQAIQYLIAYLlAYBBX8gAEEIayIBIABBBGsoAgAiA0F4cSIAaiECAkACQCADQQFxDQAgA0ECcUUNASABKAIAIgMgAGohACABIANrIgFB8O/AACgCAEYEQCACKAIEQQNxQQNHDQFB6O/AACAANgIAIAIgAigCBEF+cTYCBCABIABBAXI2AgQgAiAANgIADwsgASADEDMLAkACQAJAAkACQCACKAIEIgNBAnFFBEAgAkH078AAKAIARg0CIAJB8O/AACgCAEYNAyACIANBeHEiAhAzIAEgACACaiIAQQFyNgIEIAAgAWogADYCACABQfDvwAAoAgBHDQFB6O/AACAANgIADwsgAiADQX5xNgIEIAEgAEEBcjYCBCAAIAFqIAA2AgALIABBgAJJDQIgASAAEDdBACEBQYjwwABBiPDAACgCAEEBayIANgIAIAANBEHQ7cAAKAIAIgAEQANAIAFBAWohASAAKAIIIgANAAsLQYjwwABB/x8gASABQf8fTRs2AgAPC0H078AAIAE2AgBB7O/AAEHs78AAKAIAIABqIgA2AgAgASAAQQFyNgIEQfDvwAAoAgAgAUYEQEHo78AAQQA2AgBB8O/AAEEANgIACyAAQYDwwAAoAgAiA00NA0H078AAKAIAIgJFDQNBACEAQezvwAAoAgAiBEEpSQ0CQcjtwAAhAQNAIAIgASgCACIFTwRAIAIgBSABKAIEakkNBAsgASgCCCEBDAALAAtB8O/AACABNgIAQejvwABB6O/AACgCACAAaiIANgIAIAEgAEEBcjYCBCAAIAFqIAA2AgAPCwJAQeDvwAAoAgAiAkEBIABBA3Z0IgNxRQRAQeDvwAAgAiADcjYCACAAQfgBcUHY7cAAaiIAIQIMAQsgAEH4AXEiAEHY7cAAaiECIABB4O3AAGooAgAhAAsgAiABNgIIIAAgATYCDCABIAI2AgwgASAANgIIDwtB0O3AACgCACIBBEADQCAAQQFqIQAgASgCCCIBDQALC0GI8MAAQf8fIAAgAEH/H00bNgIAIAMgBE8NAEGA8MAAQX82AgALC7YOAQd/IwBBIGsiBiQAIAACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAQ4oAgEBAQEBAQEBAwUBAQQBAQEBAQEBAQEBAQEBAQEBAQEBAQgBAQEBBwALIAFB3ABGDQULIAJBAXFFIAFB/wVNcg0HQRBBACABQaudBE8bIgIgAkEIciIDIAFBC3QiAiADQQJ0KAKI3kBBC3RJGyIDIANBBHIiAyADQQJ0KAKI3kBBC3QgAksbIgMgA0ECciIDIANBAnQoAojeQEELdCACSxsiAyADQQFqIgMgA0ECdCgCiN5AQQt0IAJLGyIDIANBAWoiAyADQQJ0KAKI3kBBC3QgAksbIgNBAnQoAojeQEELdCIFIAJGIAIgBUtqIANqIgVBAnQiAkGI3sAAaiEIIAIoAojeQEEVdiECQf8FIQMCQCAFQR9NBEAgCCgCBEEVdiEDIAVFDQELIAhBBGsoAgBB////AHEhBAsCQCADIAJBf3NqRQ0AIAEgBGshBCADQQFrIQVBACEDA0AgAyACQeDSwABqLQAAaiIDIARLDQEgBSACQQFqIgJHDQALCyACQQFxRQ0HIAZBDmpBADoAACAGQQA7AQwgBiABQRR2LQDY2kA6AA8gBiABQQR2QQ9xLQDY2kA6ABMgBiABQQh2QQ9xLQDY2kA6ABIgBiABQQx2QQ9xLQDY2kA6ABEgBiABQRB2QQ9xLQDY2kA6ABAgAUEBcmdBAnYiAiAGQQxqIgNqIgRB+wA6AAAgBEEBa0H1ADoAACADIAJBAmsiAmpB3AA6AAAgBkEUaiIDIAFBD3EtANjaQDoAACAAIAYpAQw3AAAgBkH9ADoAFQwICyAAQgA3AQIgAEHc4AA7AQAMCgsgAEIANwECIABB3OgBOwEADAkLIABCADcBAiAAQdzkATsBAAwICyAAQgA3AQIgAEHc3AE7AQAMBwsgAEIANwECIABB3LgBOwEADAYLIAJBgAJxRQ0BIABCADcBAiAAQdzOADsBAAwFCyACQf///wdxQYCABE8NAwtBACECQQAhAwJAIAEiBEEgSQ0AIARB/wBJBEBBASECDAELAkACQCAEQYCABE8EQCAEQYCACEkNASAEQf7//wBxIgJBrp0LRyAEQeD//wBxQeDNCkcgAkGe8ApHcXEgBEHw1wtrQXFJcSAEQYDwC2tB3mxJcSAEQYCADGtBnnRJcSAEQdCmDGtBe0lxIARBgII4a0H65lRJcSAEQfCDOElxIQIMAwsgBEEIdkH/AXEhCQNAIAJBAmohCCADIAItALXlQCIHaiEFIAkgAi0AtOVAIgJHBEAgAiAJSw0DIAUhAyAIIgJBzABHDQEMAwsCQAJAIAMgBUsgBUGcAktyRQRAIAdFDQIgA0GA5sAAaiECDAELIAMgBUGcAkHA6sAAEDkACwNAIAItAAAgBEH/AXFHBEAgAkEBaiECIAdBAWsiBw0BDAILC0EAIQIMBAsgBSEDIAgiAkHMAEcNAAsMAQsgBEEIdkH/AXEhCQNAAkAgAkECaiEIIAMgAi0Ajd9AIgdqIQUgCSACLQCM30AiAkcEQCACIAlLDQEgBSEDIAgiAkHcAEcNAgwBCwJAAkAgAyAFSyAFQdQBS3JFBEAgB0UNAiADQejfwABqIQIMAQsgAyAFQdQBQcDqwAAQOQALA0AgAi0AACAEQf8BcUcEQCACQQFqIQIgB0EBayIHDQEMAgsLQQAhAgwECyAFIQMgCCICQdwARw0BCwsgBEH//wNxIQVBASECQQAhBANAIARBAWohAwJAIAQsALzhQCIHQQBOBEAgAyEEDAELIANB+ANHBEAgBEG94cAAai0AACAHQf8AcUEIdHIhByAEQQJqIQQMAQtB0OrAABDMAQALIAUgB2siBUEASA0CIAJBAXMhAiAEQfgDRw0ACwwBC0EBIQJBACEHA0AgB0EBaiEDAkAgBywAnOhAIgVBAE4EQCADIQcMAQsgA0GkAkcEQCAHQZ3owABqLQAAIAVB/wBxQQh0ciEFIAdBAmohBwwBC0HQ6sAAEMwBAAsgBCAFayIEQQBIDQEgAkEBcyECIAdBpAJHDQALCyACQQFxDQEgBkEYakEAOgAAIAZBADsBFiAGIAFBFHYtANjaQDoAGSAGIAFBBHZBD3EtANjaQDoAHSAGIAFBCHZBD3EtANjaQDoAHCAGIAFBDHZBD3EtANjaQDoAGyAGIAFBEHZBD3EtANjaQDoAGiABQQFyZ0ECdiICIAZBFmoiA2oiBEH7ADoAACAEQQFrQfUAOgAAIAMgAkECayICakHcADoAACAGQR5qIgMgAUEPcS0A2NpAOgAAIAAgBikBFjcAACAGQf0AOgAfCyAAQQhqIAMvAQA7AABBCgwDCyAAIAE2AgBBgAEhAkGBAQwCCyAAQgA3AQIgAEHcxAA7AQALQQAhAkECCzoADSAAIAI6AAwgBkEgaiQAC9MEAgZ+BH8gACAAKAI4IAJqNgI4AkAgACgCPCILRQRADAELQQQhCQJ+QQggC2siCiACIAIgCksbIgxBBEkEQEEAIQlCAAwBCyABNQAACyEDIAwgCUEBcksEQCABIAlqMwAAIAlBA3SthiADhCEDIAlBAnIhCQsgACAAKQMwIAkgDEkEfiABIAlqMQAAIAlBA3SthiADhAUgAwsgC0EDdEE4ca2GhCIDNwMwIAIgCk8EQCAAIAApAxggA4UiBCAAKQMIfCIGIAApAxAiBUINiSAFIAApAwB8IgWFIgd8IgggB0IRiYU3AxAgACAIQiCJNwMIIAAgBiAEQhCJhSIEQhWJIAQgBUIgiXwiBIU3AxggACADIASFNwMADAELIAAgAiALajYCPA8LIAIgCmsiAkEHcSEJIAJBeHEiAiAKSwRAIAApAwghBCAAKQMQIQMgACkDGCEGIAApAwAhBQNAIAQgASAKaikAACIHIAaFIgR8IgYgAyAFfCIFIANCDYmFIgN8IgggA0IRiYUhAyAGIARCEImFIgRCFYkgBCAFQiCJfCIFhSEGIAhCIIkhBCAFIAeFIQUgCkEIaiIKIAJJDQALIAAgAzcDECAAIAY3AxggACAENwMIIAAgBTcDAAtBBCECAn4gCUEESQRAQQAhAkIADAELIAEgCmo1AAALIQMgCSACQQFySwRAIAEgCmogAmozAAAgAkEDdK2GIAOEIQMgAkECciECCyAAIAIgCUkEfiABIAIgCmpqMQAAIAJBA3SthiADhAUgAws3AzAgACAJNgI8C+MEAgF+BH8CQCABKAIAIgVBBGooAgAiBkUEQAwBCwJAIAUoAgAiBCwAACIDQQBIBEAgBkEKSw0BIAQgBmpBAWssAABBAE4NASAAIAEQOw8LIAAgA61C/wGDNwMIIABBADYCACAFQQRqIAZBAWs2AgAgBSAEQQFqNgIADwsgA0H/AXEgBCwAASIDQf8BcUEHdGpBgAFrIQECfwJAAkACQAJAAkACQAJAIANBAEgEQCABIAQsAAIiA0H/AXFBDnRqQYCAAWshASADQQBODQEgASAELAADIgNB/wFxQRV0akGAgIABayEBIANBAE4NAiABQYCAgIABa60hAiAELAAEIgFBAE4NAyABQf8BcSAELAAFIgNB/wFxQQd0akGAAWshASADQQBODQQgASAELAAGIgNB/wFxQQ50akGAgAFrIQEgA0EATg0FIAEgBCwAByIDQf8BcUEVdGpBgICAAWshASADQQBODQYgAUGAgICAAWutQhyGIAJ8IQIgBCwACCIBQQBODQcgBC0ACSIDQQJJBEAgAUH/AHEgA0EHdHKtQjiGIAJ8IQJBCgwJCwwJCyABrSECQQIMBwsgAa0hAkEDDAYLIAGtIQJBBAwFCyABrUL/AYNCHIYgAnwhAkEFDAQLIAGtQhyGIAJ8IQJBBgwDCyABrUIchiACfCECQQcMAgsgAa1CHIYgAnwhAkEIDAELIAGtQv8Bg0I4hiACfCECQQkLIQEgACACNwMIIABBADYCACAFQQRqIAYgAWs2AgAgBSABIARqNgIADwtBz6HAAEEOEIYBIQEgAEEBNgIAIAAgATYCBAvjBAIBfgR/AkAgASgCACIFQQRqKAIAIgZFBEAMAQsCQCAFKAIAIgQsAAAiA0EASARAIAZBCksNASAEIAZqQQFrLAAAQQBODQEgACABEDsPCyAAIAOtQv8BgzcDCCAAQQA2AgAgBUEEaiAGQQFrNgIAIAUgBEEBajYCAA8LIANB/wFxIAQsAAEiA0H/AXFBB3RqQYABayEBAn8CQAJAAkACQAJAAkACQCADQQBIBEAgASAELAACIgNB/wFxQQ50akGAgAFrIQEgA0EATg0BIAEgBCwAAyIDQf8BcUEVdGpBgICAAWshASADQQBODQIgAUGAgICAAWutIQIgBCwABCIBQQBODQMgAUH/AXEgBCwABSIDQf8BcUEHdGpBgAFrIQEgA0EATg0EIAEgBCwABiIDQf8BcUEOdGpBgIABayEBIANBAE4NBSABIAQsAAciA0H/AXFBFXRqQYCAgAFrIQEgA0EATg0GIAFBgICAgAFrrUIchiACfCECIAQsAAgiAUEATg0HIAQtAAkiA0ECSQRAIAFB/wBxIANBB3RyrUI4hiACfCECQQoMCQsMCQsgAa0hAkECDAcLIAGtIQJBAwwGCyABrSECQQQMBQsgAa1C/wGDQhyGIAJ8IQJBBQwECyABrUIchiACfCECQQYMAwsgAa1CHIYgAnwhAkEHDAILIAGtQhyGIAJ8IQJBCAwBCyABrUL/AYNCOIYgAnwhAkEJCyEBIAAgAjcDCCAAQQA2AgAgBUEEaiAGIAFrNgIAIAUgASAEajYCAA8LQc+rwABBDhCGASEBIABBATYCACAAIAE2AgQL/gQCBH4KfyMAQSBrIgokACABQRBqIgggAhAqIQQgASgCCEUEQCAKIAFBASAIEBQLIAEoAgQiDCAEp3EhCCAEQhmIIgZC/wCDQoGChIiQoMCAAX4hByACKAIEIREgAigCCCEOIAEoAgAhCQNAAn8CQAJAAkAgCCAJaikAACIFIAeFIgRCf4UgBEKBgoSIkKDAgAF9g0KAgYKEiJCgwIB/gyIEUEUEQANAIAkgBHqnQQN2IAhqIAxxQWhsaiIQQRBrKAIAIA5GBEAgESAQQRRrKAIAIA4QdUUNAwsgBEIBfSAEgyIEUEUNAAsLIAVCgIGChIiQoMCAf4MhBCANRQRAIARQDQMgBHqnQQN2IAhqIAxxIQsLQQEgBCAFQgGGg1ANAxogCSALaiwAACIIQQBOBEAgCSAJKQMAQoCBgoSIkKDAgH+DeqdBA3YiC2otAAAhCAsgAkEIaigCACENIAIpAgAhBCAJIAtqIAanQf8AcSICOgAAIAkgC0EIayAMcWpBCGogAjoAACAKQRBqIgIgDTYCACAKQRxqIANBCGooAgA2AgAgASABKAIIIAhBAXFrNgIIIAEgASgCDEEBajYCDCAJIAtBaGxqQRhrIgEgBDcCACAKIAMpAgA3AhQgAUEIaiACKQMANwIAIAFBEGogCkEYaikDADcCACAAQYCAgIB4NgIADAELIBBBDGsiASkCACEEIAEgAykCADcCACABQQhqIgEoAgAhCCABIANBCGooAgA2AgAgACAENwIAIABBCGogCDYCACACKAIAIgBFDQAgAigCBCAAQQEQxAELIApBIGokAA8LQQALIQ0gD0EIaiIPIAhqIAxxIQgMAAsAC/4FAgp/An4jAEEQayIJJAACQAJAAkAgBARAIAEoAgQhByABKAIIIQwgASgCDCEIIAEoAgAhCyABKAIUIQUgASgCECEGA0AgBSAGRgRAAkAgByAIIAcgCEkbIgVBAUYEQCAMIAstAAA6AAAMAQsgBUUNACAMIAsgBfwKAAALIAEgBTYCFCABIAcgBWsiBzYCBCABIAUgC2oiCzYCAEEAIQYLIAUgCE0gBSAGT3FFBEAgBiAFIAhB2K3AABA5AAsgAikDCCEPIAIpAwAhECAJQQhqIAIgBiAMaiAFIAZrIAMgBEEEQQAgBSAGRiINGxCwASAJLQAMIQ4gCSgCCCABIAUgBiACKQMAIBB9p2oiBiAFIAZJGyIGNgIQQQJHDQIgAikDCCAPfachCgJAAkAgDkEBaw4CAQUACyANDQQgCkUNAQwECyANDQMgCkUNAAsMAgsCQCABKAIQIgYgASgCFCIFRwRAIAEoAgwhBAwBCyABKAIAIQYgASgCCCEHAkAgASgCBCIIIAEoAgwiBCAEIAhLGyIFQQFGBEAgByAGLQAAOgAADAELIAVFDQAgByAGIAX8CgAACyABIAU2AhQgASAIIAVrNgIEIAEgBSAGajYCAEEAIQYLIAUgBk8gBCAFT3FFBEAgBiAFIARB2K3AABA5AAsgAikDCCEPIAIpAwAhECAJQQhqIAIgASgCCCAGaiAFIAZrIANBAEEEQQAgBSAGRhsQsAEgCSgCCCABIAUgBiACKQMAIBB9p2oiASABIAVLGzYCEEECRw0AIAIpAwggD32nIQoMAQsCQAJAQRZBARDOASICBEAgAkHdq8AAQRb8CgAAQQxBBBDOASIBRQ0BIAFBFjYCCCABIAI2AgQgAUEWNgIAQQxBBBDOASICRQRAQQRBDBDSAQALIAJBFDoACCACQdy0wAA2AgQgAiABNgIAIAAgAq1CIIZCA4Q3AgAMAgtBAUEWEKoBAAtBBEEMENIBAAsMAQsgAEEEOgAAIAAgCjYCBAsgCUEQaiQAC9sEAQZ/AkACQCAAKAIIIgdBgICAwAFxRQ0AAkACQAJAAkAgB0GAgICAAXEEQCAALwEOIgMNAUEAIQIMAgsgAkEQTwRAIAEgAhAYIQMMBAsgAkUEQAwECyACQQNxIQYCQCACQQRJBEAMAQsgAkEMcSEIA0AgAyABIAVqIgQsAABBv39KaiAEQQFqLAAAQb9/SmogBEECaiwAAEG/f0pqIARBA2osAABBv39KaiEDIAggBUEEaiIFRw0ACwsgBkUNAyABIAVqIQQDQCADIAQsAABBv39KaiEDIARBAWohBCAGQQFrIgYNAAsMAwsgASACaiEIQQAhAiABIQQgAyEFA0AgBCIGIAhGDQICfyAGQQFqIAYsAAAiBEEATg0AGiAGQQJqIARBYEkNABogBkEDaiAEQXBJDQAaIAZBBGoLIgQgBmsgAmohAiAFQQFrIgUNAAsLQQAhBQsgAyAFayEDCyADIAAvAQwiBE8NACAEIANrIQZBACEDQQAhBQJAAkACQCAHQR12QQNxQQFrDgIAAQILIAYhBQwBCyAGQf7/A3FBAXYhBQsgB0H///8AcSEIIAAoAgQhByAAKAIAIQADQCADQf//A3EgBUH//wNxSQRAQQEhBCADQQFqIQMgACAIIAcoAhARAABFDQEMAwsLQQEhBCAAIAEgAiAHKAIMEQQADQFBACEDIAYgBWtB//8DcSEBA0AgA0H//wNxIgIgAUkhBCABIAJNDQIgA0EBaiEDIAAgCCAHKAIQEQAARQ0ACwwBCyAAKAIAIAEgAiAAKAIEKAIMEQQAIQQLIAQL5gQCAX8CfiMAQdAAayIEJAACQCADRQRAQaChwABBFxCGASEDDAELQgghBQJAAkACQAJAAkACQAJAAkACQAJAAkAgAEH/AXFBAWsOBQcEAAEDAgsgA0EBayEAAkADQCAEQSBqIAIQHyAEKAIgQQFGBEAgBCgCJCEDDA0LIAQgBCkDKCIFNwMYAkACQAJAAkAgBUL/////D1gEQCAEIAVCB4MiBjcDQCAGQgVWDQFBACEDAkACQAJAIAanQQFrDgUFAAEHAgYLQQIhAwwFC0EDIQMMBAtBBSEDDAMLIAQgBEEYaq1CgICAgDCENwMgIARBNGoiAEHSg8AAIARBIGoQWSAAEHwhAwwQCyAEIARBQGutQoCAgIAwhDcDSCAEQSBqIgBB6IPAACAEQcgAahBZIAAQfCEDDA8LQQEhAwsgBUIIVA0CIAMgBadBA3YgAiAAECQiA0UNAQwNCwsgBUIHVg0FC0HjoMAAQRQQhgEhAwwKC0G3ocAAQRgQhgEhAwwJCyAEQQhqIAIQHyAEKAIIDQcMBQtCBCEFDAMLIARBIGogAhAfIAQoAiANASAEKQMoIQUMAgsgBadBA3YgAUYNAkG3ocAAQRgQhgEhAwwFCyAEKAIkIQMMBAsgBSACKAIAIgBBBGoiASgCACICrVgNAUGQocAAQRAQhgEhAwwDCyACKAIAIgBBBGoiASgCACECQgAhBQsgBaciAyACTQRAIAEgAiADazYCACAAIAAoAgAgA2o2AgBBACEDDAILIAQgAjYCJCAEIAM2AiAgBEEgahCBAQALIAQoAgwhAwsgBEHQAGokACADC44UAhR/A34jAEEQayISJABBvOzAAC0AAEEBRwRAAkACQAJAAkBBvOzAAC0AAEEBaw4CAAIBC0G87MAAQQI6AABBsOzAACgCACIERQ0AQbjswAAoAgAiBQRAQazswAAoAgAiAkEIaiEDIAIpAwBCf4VCgIGChIiQoMCAf4MhFgNAIBZQBEADQCACQeAAayECIAMpAwAgA0EIaiEDQoCBgoSIkKDAgH+DIhZCgIGChIiQoMCAf1ENAAsgFkKAgYKEiJCgwIB/hSEWCyACIBZ6p0EDdkF0bGpBBGsoAgAiC0GECE8EQCALEFwLIBZCAX0gFoMhFiAFQQFrIgUNAAsLIAQgBEEMbEETakF4cSICakEJaiIDRQ0AQazswAAoAgAgAmsgA0EIEMQBC0G87MAAQQE6AABBrOzAAEHAsMAAKQIANwIAQbTswABByLDAACkCADcCAEGo7MAAQQA2AgAMAQtB0LDAAEH9AEGQscAAEIIBAAsLAkACQEGo7MAAKAIARQRAQajswABBfzYCAEGw7MAAKAIAIgQgAHEhAiAAQRl2IhOtQoGChIiQoMCAAX4hGEGs7MAAKAIAIQUDQCACIAVqKQAAIhcgGIUiFkJ/hSAWQoGChIiQoMCAAX2DQoCBgoSIkKDAgH+DIhZQRQRAA0AgACAFIBZ6p0EDdiACaiAEcUF0bGoiA0EMaygCAEYEQCADQQhrKAIAIAFGDQYLIBZCAX0gFoMiFlBFDQALCyAXIBdCAYaDQoCBgoSIkKDAgH+DUEUNAiACIAZBCGoiBmogBHEhAgwACwALQaSwwAAQigEAC0G07MAAKAIARQRAIBJBCGohFCMAQSBrIgwkAAJAQbjswAAoAgAiC0EBaiICIAtPBEBBsOzAACgCACIJIAlBAWoiBEEDdiIDQQdsIAlBCEkbIg1BAXYgAkkEQAJAAkACQAJAAkACfyANQQFqIgMgAiACIANJGyICQQ9PBEAgAkH/////AUsNAkF/IAJBA3RBB25BAWtndkEBagwBC0EEIAJBCHFBCGogAkEESRsLIgKtQgx+IhZCIIinDQIgFqciA0F4Sw0CIANBB2pBeHEiBCACQQhqIgVqIgMgBEkgA0H4////B0tyDQIgA0EIEM4BIgYNASADEJkBIAwoAhQhAiAMKAIQIQMMBwsQngEgDCgCHCECIAwoAhghAwwGCyAEIAZqIQggBQRAIAhB/wEgBfwLAAsgAkEBayIKIAJBA3ZBB2wgCkEISRshDiALDQFBrOzAACgCACEGDAILEJ4BIAwoAgwhAiAMKAIIIQMMBAsgCEEMayEPIAhBCGohEEGs7MAAKAIAIgZBDGshDSAGKQMAQn+FQoCBgoSIkKDAgH+DIRZBACECIAshBCAGIQMDQCAWUARAA0AgAkEIaiECIANBCGoiAykDAEKAgYKEiJCgwIB/gyIWQoCBgoSIkKDAgH9RDQALIBZCgIGChIiQoMCAf4UhFgsgCCANIBZ6p0EDdiACaiIRQXRsaiIFKAIAIgcgBSgCBCAHGyIVIApxIgVqKQAAQoCBgoSIkKDAgH+DIhdQBEBBCCEHA0AgBSAHaiEFIAdBCGohByAIIAUgCnEiBWopAABCgIGChIiQoMCAf4MiF1ANAAsLIBZCAX0gFoMhFiAIIBd6p0EDdiAFaiAKcSIFaiwAAEEATgRAIAgpAwBCgIGChIiQoMCAf4N6p0EDdiEFCyAFIAhqIBVBGXYiBzoAACAQIAVBCGsgCnFqIAc6AAAgDyAFQXRsaiIFQQhqIA0gEUF0bGoiB0EIaigAADYAACAFIAcpAAA3AAAgBEEBayIEDQALC0Gw7MAAIAo2AgBBrOzAACAINgIAQbTswAAgDiALazYCAEGBgICAeCEDIAlFDQIgCSAJQQxsQRNqQXhxIgJqQQlqIgRFDQIgBiACayAEQQgQxAEMAgsgBARAQazswAAoAgAhBkEAIQIgAyAEQQdxQQBHaiIDQQFxIANBAUcEQCADQf7///8DcSEDA0AgAiAGaiIFIAUpAwAiFkJ/hUIHiEKBgoSIkKDAgAGDIBZC//79+/fv37//AIR8NwMAIAVBCGoiBSAFKQMAIhZCf4VCB4hCgYKEiJCgwIABgyAWQv/+/fv379+//wCEfDcDACACQRBqIQIgA0ECayIDDQALCwRAIAIgBmoiAiACKQMAIhZCf4VCB4hCgYKEiJCgwIABgyAWQv/+/fv379+//wCEfDcDAAsgBkEIaiEIAkAgBEEITwRAIAQgBmogBikAADcAAAwBCyAERQ0AIAggBiAE/AoAAAsgBkEMayEOQQAhBQNAIAUiAkEBaiEFAkAgAiAGaiIPLQAAQYABRw0AIAYgBUF0bGohAyAOIAJBdGxqIRACQANAIBAoAgAiBCAQKAIEIAQbIhEgCXEiCiEEIAYgCmopAABCgIGChIiQoMCAf4MiFlAEQEEIIQcDQCAEIAdqIQQgB0EIaiEHIAYgBCAJcSIEaikAAEKAgYKEiJCgwIB/gyIWUA0ACwsgBiAWeqdBA3YgBGogCXEiBGosAABBAE4EQCAGKQMAQoCBgoSIkKDAgH+DeqdBA3YhBAsgBCAKayACIAprcyAJcUEITwRAIAQgBmoiBy0AACAHIBFBGXYiBzoAACAIIARBCGsgCXFqIAc6AAAgDiAEQXRsaiEEQf8BRg0CIAMoAAAhByADIAQoAAA2AAAgBCAHNgAAIAQoAAQhByAEIAMoAAQ2AAQgAyAHNgAEIAMoAAghByADIAQoAAg2AAggBCAHNgAIDAELCyAPIBFBGXYiAzoAACAIIAJBCGsgCXFqIAM6AAAMAQsgD0H/AToAACAIIAJBCGsgCXFqQf8BOgAAIARBCGogA0EIaigAADYAACAEIAMpAAA3AAALIAIgCUcNAAsLQbTswAAgDSALazYCAEGBgICAeCEDDAELEJ4BIAwoAgQhAiAMKAIAIQMLIBQgAjYCBCAUIAM2AgAgDEEgaiQACyAAIAEQrAEhC0Gs7MAAKAIAIgNBsOzAACgCACIFIABxIgJqKQAAQoCBgoSIkKDAgH+DIhZQBEBBCCEEA0AgAiAEaiECIARBCGohBCADIAIgBXEiAmopAABCgIGChIiQoMCAf4MiFlANAAsLIAMgFnqnQQN2IAJqIAVxIgJqLAAAIgRBAE4EQCADIAMpAwBCgIGChIiQoMCAf4N6p0EDdiICai0AACEECyACIANqIBM6AAAgAyACQQhrIAVxakEIaiATOgAAQbTswABBtOzAACgCACAEQQFxazYCAEG47MAAQbjswAAoAgBBAWo2AgAgAyACQXRsaiIDQQRrIAs2AgAgA0EIayABNgIAIANBDGsgADYCAAsgA0EEaygCACEAEDYiASAAJQEmAUGo7MAAQajswAAoAgBBAWo2AgAgEkEQaiQAIAEL+wMBCH8jAEEQayIGJAACfwJAIANBAXFFBEAgAi0AACIFDQFBAAwCCyAAIAIgA0EBdiABKAIMEQQADAELIAEoAgwhCgNAIAJBAWohBAJAAkACQAJAIAXAQQBIBEAgBUH/AXEiCEGAAUYNASAIQcABRw0DIAYgATYCBCAGIAA2AgAgBkKggICABjcCCCADIAdBA3RqIgIoAgAgBiACKAIEEQAARQ0CQQEMBgsgACAEIAVB/wFxIgIgChEEAEUEQCACIARqIQIMBAtBAQwFCyAAIAJBA2oiBCACLwABIgIgChEEAEUEQCACIARqIQIMAwtBAQwECyAHQQFqIQcgBCECDAELQaCAgIAGIQsgBUEBcQRAIAIoAAEhCyACQQVqIQQLQQAhCAJ/IAVBAnFFBEBBACEJIAQMAQsgBC8AACEJIARBAmoLIQIgBUEEcQR/IAIvAAAhCCACQQJqBSACCyEEIAVBCHEEfyAELwAAIQcgBEECagUgBAshAiAFQRBxBEAgAyAJQQN0ai8BBCEJCyAGIAVBIHEEfyADIAhBA3RqLwEEBSAICzsBDiAGIAk7AQwgBiALNgIIIAYgATYCBCAGIAA2AgBBASADIAdBA3RqIgQoAgAgBiAEKAIEEQAADQIaIAdBAWohBwsgAi0AACIFDQALQQALIAZBEGokAAv3AwEKf0EKIQIgACIEQegHTwRAIAFBBGshBiAEIQMCQAJAA0AgAyADQZDOAG4iBEGQzgBsayIJQf//A3FB5ABuIQcCQCAFQQpqIgJBBGtBCkkEQCAGQQpqIgggB0EBdCIKLQCA2UA6AAAgAkEDayILQQpJDQEgC0EKQcjawAAQcwALIAJBBGtBCkHI2sAAEHMACyAIQQFqIApBgdnAAGotAAA6AAAgAkECa0EKSQRAIAhBAmogCSAHQeQAbGtBAXRB/v8HcSIHLQCA2UA6AAAgAkEBa0EKTw0CIAhBA2ogB0GB2cAAai0AADoAACAGQQRrIQYgBUEEayEFIANB/6ziBEsgBCEDRQ0DDAELCyACQQJrQQpByNrAABBzAAsgAkEBa0EKQcjawAAQcwALIAVBCmohAgsCQCAEQQlNBEAgBCEFIAIhAwwBCyAEQf//A3FB5ABuIQUCQCACQQJrIgNBCkkEQCABIANqIAQgBUHkAGxrQf//A3FBAXQiBi0AgNlAOgAAIAJBAWsiBEEKTw0BIAEgBGogBkGB2cAAai0AADoAAAwCCyADQQpByNrAABBzAAsgBEEKQcjawAAQcwALQQAgACAFG0UEQCADQQFrIgNBCk8EQCADQQpByNrAABBzAAsgASADaiAFQQF0LQCB2UA6AAALIAML2wMCA3wFfyACIAahIAcgBaEiCKIgBiAEoSIJIAMgB6GioSIKRAAAAAAAAAAAZCAKRAAAAAAAAAAAY2shDCAAIAahIAiiIAkgASAHoaKhIghEAAAAAAAAAABkIAhEAAAAAAAAAABjayENQQEhCwJAIAMgAaEiCCAEIAKhoiACIAChIgkgBSADoaKhIgpEAAAAAAAAAABkIApEAAAAAAAAAABjayIOIAggBiACoaIgCSAHIAOhoqEiCEQAAAAAAAAAAGQgCEQAAAAAAAAAAGNrIg9HIAwgDUdxDQACQCANDQAgBCAGEKMBIABmRSAFIAcQowEgAWZFcg0AIAQgBhCiASEIIAUgBxCiASEJIAAgCGZFDQAgASAJZg0BCwJAIAwNACAEIAYQowEgAmZFIAUgBxCjASADZkVyDQAgBCAGEKIBIQggBSAHEKIBIQkgAiAIZkUNACADIAlmDQELAkAgDw0AIAAgAhCjASAGZkUgASADEKMBIAdmRXINACAAIAIQogEhCCABIAMQogEhCSAGIAhmRQ0AIAcgCWYNAQtBACELIA4NACAAIAIQowEgBGZFIAEgAxCjASAFZkVyDQAgASADEKIBIQEgACACEKIBIARlIAEgBWVxIQsLIAsLzQMCBn4CfyMAQdAAayIIJAAgCEFAayIJQgA3AwAgCEIANwM4IAggACkDCCICNwMwIAggACkDACIDNwMoIAggAkLzytHLp4zZsvQAhTcDICAIIAJC7d6R85bM3LfkAIU3AxggCCADQuHklfPW7Nm87ACFNwMQIAggA0L1ys2D16zbt/MAhTcDCCAIQQhqIgAgASgCACABKAIEEB4gCEH/AToATyAAIAhBzwBqQQEQHiAIKQMIIQMgCCkDGCECIAk1AgAhBiAIKQM4IQQgCCkDICAIKQMQIQcgCEHQAGokACAEIAZCOIaEIgaFIgRCEIkgBCAHfCIEhSIFQhWJIAUgAiADfCIDQiCJfCIFhSIHQhCJIAcgBCACQg2JIAOFIgJ8IgNCIIlC/wGFfCIEhSIHQhWJIAcgAyACQhGJhSICIAUgBoV8IgNCIIl8IgaFIgVCEIkgBSADIAJCDYmFIgIgBHwiA0IgiXwiBIUiBUIViSAFIAMgAkIRiYUiAiAGfCIDQiCJfCIGhSIFQhCJIAUgAkINiSADhSICIAR8IgNCIIl8IgSFQhWJIAJCEYkgA4UiAkINiSACIAZ8hSICQhGJhSACIAR8IgJCIImFIAKFC80DAgZ+An8jAEHQAGsiCCQAIAhBQGsiCUIANwMAIAhCADcDOCAIIAApAwgiAjcDMCAIIAApAwAiAzcDKCAIIAJC88rRy6eM2bL0AIU3AyAgCCACQu3ekfOWzNy35ACFNwMYIAggA0Lh5JXz1uzZvOwAhTcDECAIIANC9crNg9es27fzAIU3AwggCEEIaiIAIAEoAgQgASgCCBAeIAhB/wE6AE8gACAIQc8AakEBEB4gCCkDCCEDIAgpAxghAiAJNQIAIQYgCCkDOCEEIAgpAyAgCCkDECEHIAhB0ABqJAAgBCAGQjiGhCIGhSIEQhCJIAQgB3wiBIUiBUIViSAFIAIgA3wiA0IgiXwiBYUiB0IQiSAHIAQgAkINiSADhSICfCIDQiCJQv8BhXwiBIUiB0IViSAHIAMgAkIRiYUiAiAFIAaFfCIDQiCJfCIGhSIFQhCJIAUgAyACQg2JhSICIAR8IgNCIIl8IgSFIgVCFYkgBSADIAJCEYmFIgIgBnwiA0IgiXwiBoUiBUIQiSAFIAJCDYkgA4UiAiAEfCIDQiCJfCIEhUIViSACQhGJIAOFIgJCDYkgAiAGfIUiAkIRiYUgAiAEfCICQiCJhSAChQuPBAECfyAAIAFqIQICQAJAIAAoAgQiA0EBcQ0AIANBAnFFDQEgACgCACIDIAFqIQEgACADayIAQfDvwAAoAgBGBEAgAigCBEEDcUEDRw0BQejvwAAgATYCACACIAIoAgRBfnE2AgQgACABQQFyNgIEIAIgATYCAAwCCyAAIAMQMwsCQAJAAkAgAigCBCIDQQJxRQRAIAJB9O/AACgCAEYNAiACQfDvwAAoAgBGDQMgAiADQXhxIgIQMyAAIAEgAmoiAUEBcjYCBCAAIAFqIAE2AgAgAEHw78AAKAIARw0BQejvwAAgATYCAA8LIAIgA0F+cTYCBCAAIAFBAXI2AgQgACABaiABNgIACyABQYACTwRAIAAgARA3DwsCQEHg78AAKAIAIgJBASABQQN2dCIDcUUEQEHg78AAIAIgA3I2AgAgAUH4AXFB2O3AAGoiASECDAELIAFB+AFxIgFB2O3AAGohAiABQeDtwABqKAIAIQELIAIgADYCCCABIAA2AgwgACACNgIMIAAgATYCCA8LQfTvwAAgADYCAEHs78AAQezvwAAoAgAgAWoiATYCACAAIAFBAXI2AgQgAEHw78AAKAIARw0BQejvwABBADYCAEHw78AAQQA2AgAPC0Hw78AAIAA2AgBB6O/AAEHo78AAKAIAIAFqIgE2AgAgACABQQFyNgIEIAAgAWogATYCAAsLvgMBBX8jAEEQayIIJAACQAJAAkACQAJAIAEoAghBAUYEQCABKAIAIQQgASgCBCEFIAFBDEEEEMQBQQdBICAFQQp2Z2siASABQQdPG0ECdEEBciEHIAIgBGsiBiADaiEDIAIgBEYEQCAHIQEMBgsgBkGAgIDAAE8EQEEUQQQQzgEiAUUNAiABQQE2AhAgASADNgIIIAEgBDYCBCABIAU2AgAgASAHQQJ2QQdxNgIMDAULIAZBBXQgB2ohAQwECyADQQBIDQECQCADRQRAQQEhBAwBC0EBIQUgA0EBEM4BIgRFDQILIAMEQCAEIAIgA/wKAAALIAEgASgCCCICQQFrNgIIIAJBAUYEQCABQQRqKAIAIgJBAEgNAyABKAIAIAJBARDEASABQQxBBBDEAQtBB0EgIANBCnZnayIBIAFBB08bQQJ0QQFyIQEgAyEFDAQLQQRBFBDSAQALIAUgAxCqAQALQbCywABBKyAIQQ9qQaCywABBlLPAABBoAAsgAyAGayICQQAgAiADTRshAyAFIAZrIQUgBCAGaiEECyAAIAE2AgwgACAFNgIIIAAgAzYCBCAAIAQ2AgAgCEEQaiQAC5wDAQl/IAJB//8DcSEFIAFB//8DcSEGAkAgBCAEQbArcCIIayIHQbArSQ0AIAMhAiAHIQpBACEBA0AgBiABIAJqIgktAABqIgsgCUEBai0AAGoiDCAJQQJqLQAAaiINIAlBA2otAABqIgYgDSAMIAUgC2pqamohBSABQQRqIgFBsCtHDQAgBUHx/wNwIQUgBkHx/wNwIQYgAkGwK2ohAiAKQbArayIKQbArSQ0BQQAhAQwACwALAkAgCEUNACADIAdqIQIgCEEHcSIHBEAgAiEBA0AgBiABLQAAaiIGIAVqIQUgAUEBaiICIQEgB0EBayIHDQALCyAIQQhJDQAgAyAEaiEBA0AgBiACLQAAaiIDIAJBAWotAABqIgQgAkECai0AAGoiByACQQNqLQAAaiIKIAJBBGotAABqIgggAkEFai0AAGoiCSACQQZqLQAAaiILIAJBB2otAABqIgYgCyAJIAggCiAHIAQgAyAFampqampqamohBSACQQhqIgIgAUcNAAsLIAAgBUHx/wNwOwECIAAgBkHx/wNwOwEAC54KAgl/An4jAEHQAGsiBCQAAkACQCACIAEoAgQiA00EQEEAIQMgAkEASA0BQQEhBSACBEBBASEDIAJBARDOASIFRQ0CCyAEIAI2AhQgBEEANgIQIAQgBTYCDCAEQQdBICACQQp2Z2siAyADQQdPG0ECdEEBcjYCGCAEQQxqIQMjAEFAaiIFJAACQAJAAkACQAJAAkAgAiABKAIEIgcgAiAHSRsiBkUNACADKAIIIghFBEAgBUEEaiICIAEgBhAuIwBBEGsiASQAIAVBFGoiBgJ/IAJBDGogAigCACgCDBEHAEUEQCAGIAIpAgA3AgQgBkEMaiACQQhqKQIANwIAQQEMAQsgAUEIaiACQQhqKQIAIgw3AwAgASACKQIAIg03AwAgBkEEaiABQQxqIAEoAgQgDKcgDacoAggRAQBBAAs2AgAgAUEQaiQAIAUoAhQEQCAFQTBqIAVBIGopAgAiDDcDACAFIAUpAhg3AyggBSgCLCEGIAynIgEgAygCCCADKAIEIgJrSwRAIAMgARAZIAMoAgQhAgsgAQRAIAMoAgAgAmogBiAB/AoAAAsgASADKAIIIAMoAgQiAmsiB0sNAyADIAEgAmo2AgQgBUE0aiAGIAEgBSgCKCgCEBECAAwCCwJAIAMoAgwiAUEBcQRAIAFBBXYiASADKAIIaiICRQ0BIAMoAgAgAWsgAkEBEMQBDAELIAEgASgCECICQQFrNgIQIAJBAUcNACABKAIAIgIEQCABKAIEIAJBARDEAQsgAUEUQQQQxAELIANBCGogBUEgaikCADcCACADIAUpAhg3AgAMAQsgCCADKAIEayAGSQRAIAMgBhAZCyADKAIIIQogAygCBCEIIAEoAgAhCQNAIAogCGsgBkkEQCADIAYQGSADKAIEIQgLIAYEQCADKAIAIAhqIAkgBvwKAAALIAYgAygCCCIKIAMoAgQiCGsiC0sNAyADIAYgCGoiCDYCBCAGIAdLDQQgASAHIAZrIgc2AgQgASAGIAlqIgk2AgAgAiAGayICIAcgAiAHSRsiBg0ACwsgBUFAayQADAQLIAUgBzYCPCAFIAE2AjggBUE4ahCBAQALIAUgCzYCGAwBCyAFIAc2AhgLIAUgBjYCFCAFQRRqEIEBAAsgBCgCECEBIAQoAgwhAgJAIAQoAhgiA0EBcUUEQCAAIAM2AgwgACABNgIIIAAgAjYCBCAAQdizwAA2AgAMAQsgBCgCFCEFIAQgASADQQV2IgNqNgIkIAQgAiADazYCICAEIAMgBWo2AhwgBEEoaiEFIARBHGoiASgCBCECAn8CQCABKAIIIgYgASgCACIHRwRAQQxBBBDOASIBDQFBBEEMENIBAAsgBkUEQEEAIQFBASECQfixwAAMAgsgAkEBcQRAIAIhAUHsssAADAILIAJBAXIhAUGAs8AADAELIAFBATYCCCABIAc2AgQgASACNgIAQYyywAALIQcgBSABNgIMIAUgBjYCCCAFIAI2AgQgBSAHNgIAIAQgAzYCOCAEKAIwIgEgA0kNAyAEQTBqIgIgASADazYCACAEIAQoAiwgA2o2AiwgAEEIaiACKQIANwIAIAAgBCkCKDcCAAsgBEHQAGokAA8LIAQgAzYCRCAEIAI2AkAgBEFAaxCBAQALIAMgAhCqAQALIAQgATYCPCAEIARBPGqtQoCAgIDgAIQ3A0ggBCAEQThqrUKAgICA4ACENwNAQaiDwAAgBEFAa0GUqsAAEIIBAAuIAwEGfyMAQRBrIgUkAAJAAkACQAJAAkACQCACQQFxBEAgAkEBdiEDDAELIAEtAAAiA0UNASABIQQDQCAEQQFqIQQCQCADwEEASARAIANB/wFxQYABRgRAIAYgBC8AACIDaiEGIAMgBGpBAmohBAwCCyAEIANBA3FBGHciCEEFdEGAgICABHEgCEGAgICAAnEgCEGAgIAIcUEHdHJyQR12aiADQQF2QQJxaiADQQJ2QQJxaiEEIAZFIAdyIQcMAQsgBCADQf8BcSIDaiEEIAMgBmohBgsgBC0AACIDDQALQQAhAyAHIAZBEElxDQBBACEHIAZBAXQiA0EASA0ECyADDQELQQEhBEEAIQMMAQtBASEHIANBARDOASIERQ0BCyAFQQA2AgggBSAENgIEIAUgAzYCACAFQazRwAAgASACECZFDQFB1NHAAEHWACAFQQ9qQcTRwABBrNLAABBoAAsgByADEKoBAAsgACAFKQIANwIAIABBCGogBUEIaigCADYCACAFQRBqJAAL5wIBBX8CQCABQc3/e0EQIAAgAEEQTRsiAGtPDQAgAEEQIAFBC2pBeHEgAUELSRsiBGpBDGoQEyICRQ0AIAJBCGshAQJAIABBAWsiAyACcUUEQCABIQAMAQsgAkEEayIFKAIAIgZBeHEgAiADakEAIABrcUEIayICIABBACACIAFrQRBNG2oiACABayICayEDIAZBA3EEQCAAIAMgACgCBEEBcXJBAnI2AgQgACADaiIDIAMoAgRBAXI2AgQgBSACIAUoAgBBAXFyQQJyNgIAIAEgAmoiAyADKAIEQQFyNgIEIAEgAhArDAELIAEoAgAhASAAIAM2AgQgACABIAJqNgIACwJAIAAoAgQiAUEDcUUNACABQXhxIgIgBEEQak0NACAAIAQgAUEBcXJBAnI2AgQgACAEaiIBIAIgBGsiBEEDcjYCBCAAIAJqIgIgAigCBEEBcjYCBCABIAQQKwsgAEEIaiEDCyADC/oDAQR/IwBBQGoiAyQAIANBOGogAhC6ASADKAI8IQICQCADKAI4IgRFBEBBASEBDAELIAMgAjYCPCADIAQ2AjggA0EwaiAEIAEqAgAQrQECfyADKAI0IgUgAygCMEEBcQ0AGiADQTxqIgZB5JbAAEEBECUgBRDFASADQShqIAQgASoCBBCtASADKAIsIgUgAygCKEEBcQ0AGiAGQeWWwABBARAlIAUQxQEgA0EgaiAEIAEqAggQrQEgAygCJCIFIAMoAiBBAXENABogBkHmlsAAQQEQJSAFEMUBIANBGGogBCABKgIMEK0BIAMoAhwiBSADKAIYQQFxDQAaIAZB55bAAEEBECUgBRDFASADQRBqIAQgASoCEBCtASADKAIUIgQgAygCEEEBcQ0AGiAGQeiWwABBAhAlIAQQxQEgA0EIaiEEIwBBEGsiAiQAIAJBCGogA0E4aiIFKAIAIAFBFGoqAgAQrQFBASEBIAIoAgwhBiACKAIIQQFxRQRAIAVBBGpB6pbAAEECECUgBhDFAUEAIQELIAQgBjYCBCAEIAE2AgAgAkEQaiQAIAMoAjwhAiADKAIIQQFxRQRAQQAhAQwCCyADKAIMCyEEQQEhASACQYQISQRAIAQhAgwBCyACEFwgBCECCyAAIAI2AgQgACABNgIAIANBQGskAAuIAwEGfyMAQTBrIgMkACADQSBqQgA3AwAgA0EYakIANwMAIANBEGpCADcDACADQgA3AwggA0EoaiABIAFBGGoiCCADQQhqQSAQIgJAAkACQCADLQAoIgRBBEYNAANAAkACQAJAAkACQCAEQQFrDgMBAAIECyADKAIsLQAIQSNHDQMMAgsgAy0AKUEjRg0BDAILIAMoAiwiBC0ACEEjRw0BIAQoAgAhBiAEQQRqKAIAIgcoAgAiBQRAIAYgBREGAAsgBygCBCIFBEAgBiAFIAcoAggQxAELIARBDEEEEMQBCyADQShqIAEgCCADQQhqQSAQIiADLQAoIgRBBEcNAQwCCwsgACADKQMoNwIADAELIAMoAiwiBEEhTw0BIAIoAgAgAigCCCIBayAESQRAIAIgASAEQQFBARBMIAIoAgghAQsgBARAIAIoAgQgAWogA0EIaiAE/AoAAAsgACAENgIEIAIgASAEajYCCCAAQQQ6AAALIANBMGokAA8LQQAgBEEgQeCuwAAQOQALggMBBH8gACgCDCECAkACQAJAIAFBgAJPBEAgACgCGCEDAkACQCAAIAJGBEAgAEEUQRAgACgCFCICG2ooAgAiAQ0BQQAhAgwCCyAAKAIIIgEgAjYCDCACIAE2AggMAQsgAEEUaiAAQRBqIAIbIQQDQCAEIQUgASICQRRqIAJBEGogAigCFCIBGyEEIAJBFEEQIAEbaigCACIBDQALIAVBADYCAAsgA0UNAgJAIAAoAhxBAnRByOzAAGoiASgCACAARwRAIAMoAhAgAEYNASADIAI2AhQgAg0DDAQLIAEgAjYCACACRQ0EDAILIAMgAjYCECACDQEMAgsgACgCCCIAIAJHBEAgACACNgIMIAIgADYCCA8LQeDvwABB4O/AACgCAEF+IAFBA3Z3cTYCAA8LIAIgAzYCGCAAKAIQIgEEQCACIAE2AhAgASACNgIYCyAAKAIUIgBFDQAgAiAANgIUIAAgAjYCGA8LDwtB5O/AAEHk78AAKAIAQX4gACgCHHdxNgIAC6oNAgZ/An4jAEFAaiIFJAAgBUEQaiABEB8CQCAFKAIQQQFGBEAgBSgCFCEDDAELAkAgBSkDGCIJIAEoAgBBBGooAgAiA61YBEAgAyAJp2shCANAIAggASgCAEEEaigCACIETwRAQQAhAyAEIAhGDQRB96DAAEEZEIYBIQMMBAsgBUEQaiABEB8gBSgCEEEBRgRAIAUoAhQhAwwECyAFIAUpAxgiCTcDCCAJQv////8PVg0CIAUgCUIHgyIKNwMwIApCBloEQCAFIAVBMGqtQoCAgIAwhDcDOCAFQRBqIgBB6IPAACAFQThqEFkgABB8IQMMBAsgCUIHWARAQeOgwABBFBCGASEDDAQLIAqnIQQjAEEgayIDJAACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgCadBA3YiBkEBaw4GAQIDBAUGAAsgBCAGIAEgAhAkDA0LIAAoAgBFBEAgAEIBNwIACyADIAQ6AAMgA0EFOgACIARB/wFxQQVHBEAgAyADQQJqrUKAgICAwACENwMYIAMgA0EDaq1CgICAgMAAhDcDECADQQRqIgQgA0EQahBaIAQQfCEEDAwLIAEoAgAiBEEEaiIGKAIAIgdBA00EQEHkrMAAQRAQhgEhBAwMCyAGIAdBBGs2AgAgBCAEKAIAIgRBBGo2AgAgACAEKgAAOAIEDAULIAAoAghFBEAgAEIBNwIICyADIAQ6AAMgA0EFOgACIARB/wFxQQVHBEAgAyADQQJqrUKAgICAwACENwMYIAMgA0EDaq1CgICAgMAAhDcDECADQQRqIgQgA0EQahBaIAQQfCEEDAoLIAEoAgAiBEEEaiIGKAIAIgdBA00EQEHkrMAAQRAQhgEhBAwKCyAGIAdBBGs2AgAgBCAEKAIAIgRBBGo2AgAgACAEKgAAOAIMDAQLIAAoAhBFBEAgAEIBNwIQCyADIAQ6AAMgA0EFOgACIARB/wFxQQVHBEAgAyADQQJqrUKAgICAwACENwMYIAMgA0EDaq1CgICAgMAAhDcDECADQQRqIgQgA0EQahBaIAQQfCEEDAgLIAEoAgAiBEEEaiIGKAIAIgdBA00EQEHkrMAAQRAQhgEhBAwICyAGIAdBBGs2AgAgBCAEKAIAIgRBBGo2AgAgACAEKgAAOAIUDAMLIAAoAhhFBEAgAEIBNwIYCyADIAQ6AAMgA0EFOgACIARB/wFxQQVHBEAgAyADQQJqrUKAgICAwACENwMYIAMgA0EDaq1CgICAgMAAhDcDECADQQRqIgQgA0EQahBaIAQQfCEEDAYLIAEoAgAiBEEEaiIGKAIAIgdBA00EQEHkrMAAQRAQhgEhBAwGCyAGIAdBBGs2AgAgBCAEKAIAIgRBBGo2AgAgACAEKgAAOAIcDAILIAAoAiBFBEAgAEIBNwIgCyADIAQ6AAMgA0EFOgACIARB/wFxQQVHBEAgAyADQQJqrUKAgICAwACENwMYIAMgA0EDaq1CgICAgMAAhDcDECADQQRqIgQgA0EQahBaIAQQfCEEDAQLIAEoAgAiBEEEaiIGKAIAIgdBA00EQEHkrMAAQRAQhgEhBAwECyAGIAdBBGs2AgAgBCAEKAIAIgRBBGo2AgAgACAEKgAAOAIkDAELIAAoAihFBEAgAEIBNwIoCyADIAQ6AAMgA0EFOgACIARB/wFxQQVHBEAgAyADQQJqrUKAgICAwACENwMYIAMgA0EDaq1CgICAgMAAhDcDECADQQRqIgQgA0EQahBaIAQQfCEEDAILIAEoAgAiBEEEaiIGKAIAIgdBA00EQEHkrMAAQRAQhgEhBAwCCyAGIAdBBGs2AgAgBCAEKAIAIgRBBGo2AgAgACAEKgAAOAIsC0EADAYLIAMgBDYCECADQRBqQYWewABBCUGUnsAAQQIQdiADKAIQDAULIAMgBDYCECADQRBqQYWewABBCUGSnsAAQQIQdiADKAIQDAQLIAMgBDYCECADQRBqQYWewABBCUGRnsAAQQEQdiADKAIQDAMLIAMgBDYCECADQRBqQYWewABBCUGQnsAAQQEQdiADKAIQDAILIAMgBDYCECADQRBqQYWewABBCUGPnsAAQQEQdiADKAIQDAELIAMgBDYCECADQRBqQYWewABBCUGOnsAAQQEQdiADKAIQCyADQSBqJAAiA0UNAAsMAgtBkKHAAEEQEIYBIQMMAQsgBSAFQQhqrUKAgICAMIQ3AxAgBUEkaiIAQdKDwAAgBUEQahBZIAAQfCEDCyAFQUBrJAAgAwv3CQIGfwJ+IwBBQGoiBCQAIARBEGogARAfAkAgBCgCEEEBRgRAIAQoAhQhAgwBCwJAIAQpAxgiCCABKAIAQQRqKAIAIgKtWARAIAIgCKdrIQcDQCAHIAEoAgBBBGooAgAiA08EQEEAIQIgAyAHRg0EQfegwABBGRCGASECDAQLIARBEGogARAfIAQoAhBBAUYEQCAEKAIUIQIMBAsgBCAEKQMYIgg3AwggCEL/////D1YNAiAEIAhCB4MiCTcDMCAJQgZaBEAgBCAEQTBqrUKAgICAMIQ3AzggBEEQaiIAQeiDwAAgBEE4ahBZIAAQfCECDAQLIAhCB1gEQEHjoMAAQRQQhgEhAgwECyAJpyEDIwBBIGsiAiQAAn8CQAJAAkACQAJAAkACQAJAAkACQCAIp0EDdiIFQQFrDgQBAgMEAAsgAyAFIAFB3wAQJAwJCyAAKAIARQRAIABCATcCAAsgAiADOgADIAJBBToAAiADQf8BcUEFRwRAIAIgAkECaq1CgICAgMAAhDcDGCACIAJBA2qtQoCAgIDAAIQ3AxAgAkEEaiIDIAJBEGoQWiADEHwhAwwICyABKAIAIgNBBGoiBSgCACIGQQNNBEBB5KzAAEEQEIYBIQMMCAsgBSAGQQRrNgIAIAMgAygCACIDQQRqNgIAIAAgAyoAADgCBAwDCyAAKAIIRQRAIABCATcCCAsgAiADOgADIAJBBToAAiADQf8BcUEFRwRAIAIgAkECaq1CgICAgMAAhDcDGCACIAJBA2qtQoCAgIDAAIQ3AxAgAkEEaiIDIAJBEGoQWiADEHwhAwwGCyABKAIAIgNBBGoiBSgCACIGQQNNBEBB5KzAAEEQEIYBIQMMBgsgBSAGQQRrNgIAIAMgAygCACIDQQRqNgIAIAAgAyoAADgCDAwCCyAAKAIQRQRAIABCATcCEAsgAiADOgADIAJBBToAAiADQf8BcUEFRwRAIAIgAkECaq1CgICAgMAAhDcDGCACIAJBA2qtQoCAgIDAAIQ3AxAgAkEEaiIDIAJBEGoQWiADEHwhAwwECyABKAIAIgNBBGoiBSgCACIGQQNNBEBB5KzAAEEQEIYBIQMMBAsgBSAGQQRrNgIAIAMgAygCACIDQQRqNgIAIAAgAyoAADgCFAwBCyAAKAIYRQRAIABCATcCGAsgAiADOgADIAJBBToAAiADQf8BcUEFRwRAIAIgAkECaq1CgICAgMAAhDcDGCACIAJBA2qtQoCAgIDAAIQ3AxAgAkEEaiIDIAJBEGoQWiADEHwhAwwCCyABKAIAIgNBBGoiBSgCACIGQQNNBEBB5KzAAEEQEIYBIQMMAgsgBSAGQQRrNgIAIAMgAygCACIDQQRqNgIAIAAgAyoAADgCHAtBAAwECyACIAM2AhAgAkEQakHwrsAAQQlB/K7AAEEBEHYgAigCEAwDCyACIAM2AhAgAkEQakHwrsAAQQlB+67AAEEBEHYgAigCEAwCCyACIAM2AhAgAkEQakHwrsAAQQlB+q7AAEEBEHYgAigCEAwBCyACIAM2AhAgAkEQakHwrsAAQQlB+a7AAEEBEHYgAigCEAsgAkEgaiQAIgJFDQALDAILQZChwABBEBCGASECDAELIAQgBEEIaq1CgICAgDCENwMQIARBJGoiAEHSg8AAIARBEGoQWSAAEHwhAgsgBEFAayQAIAIL8wIBBX8jAEEQayIDJAACQEGU68AAKAIARQRAQZTrwABBfzYCAEGk68AAKAIAIgBBoOvAACgCACIBRgRAAn8gACAAQZjrwAAoAgAiAkcNABrQb0GAASAAIABBgAFNGyIE/A8BIgJBf0YNAwJAQajrwAAoAgAiAUUEQEGo68AAIAI2AgAMAQsgACABaiACRw0EC0GY68AAKAIAIgEgAGsgBE8EQCABIQIgAAwBCyADQQRqIAFBnOvAACgCACAAIARqIgJBBEEEEEsgAygCBEEBRg0DQZzrwAAgAygCCDYCAEGY68AAIAI2AgBBoOvAACgCAAsiASACTw0CQZzrwAAoAgAgAUECdGogAEEBajYCAEGg68AAIAFBAWoiATYCAAsgACABTw0BQaTrwABBnOvAACgCACAAQQJ0aigCADYCAEGU68AAQZTrwAAoAgBBAWo2AgBBqOvAACgCACEBIANBEGokACAAIAFqDwtB9MXAABCKAQsAC8QCAQR/IABCADcCECAAAn9BACABQYACSQ0AGkEfIAFB////B0sNABogAUEmIAFBCHZnIgNrdkEBcSADQQF0a0E+agsiAjYCHCACQQJ0QcjswABqIQRBASACdCIDQeTvwAAoAgBxRQRAIAQgADYCACAAIAQ2AhggACAANgIMIAAgADYCCEHk78AAQeTvwAAoAgAgA3I2AgAPCwJAAkAgASAEKAIAIgMoAgRBeHFGBEAgAyECDAELIAFBGSACQQF2a0EAIAJBH0cbdCEFA0AgAyAFQR12QQRxaiIEKAIQIgJFDQIgBUEBdCEFIAIhAyACKAIEQXhxIAFHDQALCyACKAIIIgEgADYCDCACIAA2AgggAEEANgIYIAAgAjYCDCAAIAE2AggPCyAEQRBqIAA2AgAgACADNgIYIAAgADYCDCAAIAA2AggL6AIBAX8jAEEgayICJAACQAJAAkACQAJAAkAgAC0AAEEBaw4DAQIDAAsgAiAAKAIENgIAQRRBARDOASIARQ0EIABBEGpBsczAACgAADYAACAAQQhqQanMwAApAAA3AAAgAEGhzMAAKQAANwAAIAJBFDYCDCACIAA2AgggAkEUNgIEIAIgAq1CgICAgJAJhDcDGCACIAJBBGqtQoCAgICgCYQ3AxAgASgCACABKAIEQfuVwAAgAkEQahAmIQAgAigCBCIBRQ0DIAIoAgggAUEBEMQBDAMLIAIgAC0AAUECdCIAKAKozkA2AgggAiAAKALQz0A2AgQgAiACQQRqrUKAgICAsAmENwMQIAEoAgAgASgCBEHLhMAAIAJBEGoQJiEADAILIAAoAgQiACgCACAAKAIEIAEQ1AEhAAwBCyAAKAIEIgAoAgAgASAAKAIEKAIQEQAAIQALIAJBIGokACAADwtBAUEUEKoBAAuRAgIBfwF+IwBBIGsiBCQAAkACQAJAIAAgAk0EQCABIAJLDQFCgICAgOAHIQUgACABTQ0CIAQgADYCCCAEIAE2AgwgBCAFIARBDGqthDcDGCAEIAUgBEEIaq2ENwMQQdmBwAAgBEEQaiADEIIBAAsgBCAANgIIIAQgAjYCDCAEQoCAgIDgByIFIARBDGqthDcDGCAEIAUgBEEIaq2ENwMQQbiCwAAgBEEQaiADEIIBAAsgBCABNgIIIAQgAjYCDCAEQoCAgIDgByIFIARBDGqthDcDGAwBCyAEIAE2AgggBCACNgIMIAQgBSAEQQxqrYQ3AxgLIAQgBSAEQQhqrYQ3AxBB8YLAACAEQRBqIAMQggEAC74CAQV/IwBBMGsiAyQAIANBKGogAhC6ASADKAIsIQICQCADKAIoIgVFBEBBASEGDAELIAMgAjYCLCADIAU2AiggA0EgaiAFIAEqAgAQrQFBASEGIAMoAiQhBAJAIAMoAiBBAXENACADQSxqIgdBpprAAEEBECUgBBDFASADQRhqIAUgASoCBBCtASADKAIcIQQgAygCGEEBcQ0AIAdBp5rAAEEBECUgBBDFASADQRBqIAUgASoCCBCtASADKAIUIQQgAygCEEEBcQ0AIAdB5ZbAAEEBECUgBBDFASADQQhqIAUgASoCDBCtASADKAIMIQQgAygCCEEBcQ0AIAdB5JbAAEEBECUgBBDFAUEAIQYMAQsgAkGECEkEQCAEIQIMAQsgAhBcIAQhAgsgACACNgIEIAAgBjYCACADQTBqJAALnwICB38DfiABKAIAIgJBBGooAgAiAwRAIAIoAgAiBEEKIAMgA0EKTxsiAWohBiADIAFrIQcgAa1CB35CB30hC0EAIQECQAJAA0ACQCABIARqIggsAAAiBUH/AHGtIAmGIAqEIQogBUEATg0AIAkgC1ENAyAJQgd8IQkgAUEBaiIBIANHDQEMAgsLIAJBBGogAUF/cyADajYCACACIAhBAWo2AgAgBUEBSyAJQj9RcUUEQCAAIAo3AwggAEEANgIADwsgAEHPq8AAQQ4QhgE2AgQgAEEBNgIADwsgAkEEakEANgIAIAIgAyAEajYCAEGMqsAAEIEBAAsgAiAGNgIAIAJBBGogBzYCAAsgAEHPq8AAQQ4QhgE2AgQgAEEBNgIAC58CAQp/IAAoAggiBwRAIAAoAgQhCANAIAggA0EYbGoiASgCDCIAQYCAgIB4RiAARXJFBEAgASgCECAAQQEQxAELIAEoAggiCQRAIAEoAgQhCkEAIQQDQCAKIARB8ABsaiICKAJkIgBBgICAgHhGIABFckUEQCACKAJoIABBARDEAQsgAigCYCIFBEAgAigCXEH8AWohAANAIABBBGsoAgAiBkGCgICAeEggBkVyRQRAIAAoAgAgBkEBEMQBCyAAQYQCaiEAIAVBAWsiBQ0ACwsgAigCWCIABEAgAigCXCAAQYQCbEEEEMQBCyAEQQFqIgQgCUcNAAsLIAEoAgAiAARAIAEoAgQgAEHwAGxBBBDEAQsgA0EBaiIDIAdHDQALCwv/AQEDfyMAQRBrIgMkAAJ/AkAgASgCCCICQYCAgBBxRQRAIAJBgICAIHENASABQQFBAUEAIAAoAgAgA0EGaiIBECciACABakEKIABrEBsMAgsgACgCACEAQQAhAgNAIAIgA2pBDWogAEEPcS0A2NpAOgAAIAJBAWshAiAAQQ9LIABBBHYhAA0ACyABQQFB6NrAAEECIAIgA2pBDmpBACACaxAbDAELIAAoAgAhAEEAIQIDQCACIANqQQ1qIABBD3EtAOraQDoAACACQQFrIQIgAEEPSyAAQQR2IQANAAsgAUEBQejawABBAiACIANqQQ5qQQAgAmsQGwsgA0EQaiQAC50CAQJ/AkACQCABKAIAIgEoAhBBAUcEQCADQQBOBEAgA0UEQEEBIQQMAwtBASEFIANBARDOASIEDQILIAUgAxCqAQALIAAgASkCADcCACABQoCAgIAQNwIAIABBCGogAUEIaiIEKAIANgIAIARBADYCACABIAEoAhAiBEEBazYCECAEQQFGBEAgASgCACIEBEAgASgCBCAEQQEQxAELIAFBFEEEEMQBCyADBEAgACgCBCACIAP8CgAACyAAIAM2AggMAQsgACAENgIEIAAgAzYCACADBEAgBCACIAP8CgAACyAAIAM2AgggASABKAIQIgBBAWs2AhAgAEEBRw0AIAEoAgAiAARAIAEoAgQgAEEBEMQBCyABQRRBBBDEAQsLiAIBBn8gACgCCCIEIQICf0EBIAFBgAFJDQAaQQIgAUGAEEkNABpBA0EEIAFBgIAESRsLIgYgACgCACAEa0sEfyAAIAQgBhBSIAAoAggFIAILIAAoAgRqIQICQCABQYABTwRAIAFBP3FBgH9yIQUgAUEGdiEDIAFBgBBJBEAgAiAFOgABIAIgA0HAAXI6AAAMAgsgAUEMdiEHIANBP3FBgH9yIQMgAUH//wNNBEAgAiAFOgACIAIgAzoAASACIAdB4AFyOgAADAILIAIgBToAAyACIAM6AAIgAiAHQT9xQYB/cjoAASACIAFBEnZBcHI6AAAMAQsgAiABOgAACyAAIAQgBmo2AghBAAucAgEDfyMAQRBrIgYkACABIAEoAggiBEEAIARBAUcbNgIIAkACQAJAIARBAUYEQCABKAIEIQUgASgCACEEIAFBDEEEEMQBIAMEQCAEIAIgA/wKAAALIAAgAzYCCCAAIAQ2AgQgACAFNgIADAELIANBAEgNAQJAIANFBEBBASEEDAELQQEhBSADQQEQzgEiBEUNAgsgACAENgIEIAAgAzYCACADBEAgBCACIAP8CgAACyAAIAM2AgggASABKAIIIgBBAWs2AgggAEEBRw0AIAFBBGooAgAiAEEASA0CIAEoAgAgAEEBEMQBIAFBDEEEEMQBCyAGQRBqJAAPCyAFIAMQqgEAC0GwssAAQSsgBkEPakGgssAAQZSzwAAQaAALiAIBBn8gACgCCCIEIQICf0EBIAFBgAFJDQAaQQIgAUGAEEkNABpBA0EEIAFBgIAESRsLIgYgACgCACAEa0sEfyAAIAQgBhBVIAAoAggFIAILIAAoAgRqIQICQCABQYABTwRAIAFBP3FBgH9yIQUgAUEGdiEDIAFBgBBJBEAgAiAFOgABIAIgA0HAAXI6AAAMAgsgAUEMdiEHIANBP3FBgH9yIQMgAUH//wNNBEAgAiAFOgACIAIgAzoAASACIAdB4AFyOgAADAILIAIgBToAAyACIAM6AAIgAiAHQT9xQYB/cjoAASACIAFBEnZBcHI6AAAMAQsgAiABOgAACyAAIAQgBmo2AghBAAuHAgIBfgZ/AkAgACgCBCIGRQ0AIAAoAgwiBwRAIAAoAgAiAkEIaiEDIAIpAwBCf4VCgIGChIiQoMCAf4MhAQNAIAFQBEADQCACQcABayECIAMpAwAgA0EIaiEDQoCBgoSIkKDAgH+DIgFCgIGChIiQoMCAf1ENAAsgAUKAgYKEiJCgwIB/hSEBCyACIAF6p0EDdkFobGoiBEEYaygCACIFBEAgBEEUaygCACAFQQEQxAELIARBDGsoAgAiBQRAIARBCGsoAgAgBUEBEMQBCyABQgF9IAGDIQEgB0EBayIHDQALCyAGQRhsIgMgBmpBIWoiAkUNACAAKAIAIANrQRhrIAJBCBDEAQsL7AEBA38CQAJAAkACQCABKAIAIgFBAXEEQEEHQSAgAiABQX5xIgVrIgYgA2oiAUEKdmdrIgQgBEEHTxtBAnRBAXIhBCACIAVGBEAgBCECIAEhAwwFCyAGQYCAgMAASQ0CQRRBBBDOASICRQ0BIAJBATYCECACIAE2AgggAiAFNgIEIAIgATYCACACIARBAnZBB3E2AgwMAwsgACABIAIgAxAsDwtBBEEUENIBAAsgBkEFdCAEaiECCyABIAZrIgRBACABIARPGyEBIAUgBmohBQsgACACNgIMIAAgAzYCCCAAIAE2AgQgACAFNgIAC4YKAgh/An4jAEEgayIFJAAgBSAAOgADIAVBAjoAAgJAAkACfyAAQf8BcUECRwRAIAUgBUECaq1CgICAgPAAhDcDGCAFIAVBA2qtQoCAgIDwAIQ3AxAgBUEEaiIAIAVBEGoQWiAAEHwMAQsgBUEQaiACECAgBSgCEEEBRgRAIAUoAhQMAQsgBSkDGCILIAIoAgBBBGo1AgBYDQFBkKvAAEEQEIYBCyEAIAFBADYCCAwBCyMAQRBrIgckACABQQA2AgggC6ciAyACKAIAIgJBBGoiCCgCACIAIAAgA0sbIgAgASgCACIGSwRAIAFBACAAQQFBARBMIAEoAgAhBiABKAIIIQQgAyAIKAIAIgAgACADSxshAAsgBiAEayAASQRAIAEgBCAAQQFBARBMIAMgAkEEaigCACIAIAAgA0sbIQALAkACQCAABEAgASgCCCEEIAIoAgAhBiACQQRqIQgDQCABKAIAIARrIABJBEAgASAEIABBAUEBEEwgASgCCCEECyAABEAgASgCBCAEaiAGIAD8CgAACyABIAAgBGoiBDYCCCAIKAIAIgYgAEkNAiAIIAYgAGsiCTYCACACIAIoAgAgAGoiBjYCACADIABrIgMgCSADIAlJGyIADQALCyAHQRBqJAAMAQsgByAGNgIMIAcgADYCCCAHQQhqEIEBAAsgBUEQaiEGIAEoAgQhAgJAAkAgASgCCCIERQ0AIARBB2siAEEAIAAgBE0bIQkgAkEDakF8cSACayEKQQAhAANAAkACQAJAIAAgAmotAAAiB8AiCEEATgRAIAogAGtBA3ENASAAIAlPDQIDQCAAIAJqIgNBBGooAgAgAygCAHJBgIGChHhxDQMgAEEIaiIAIAlJDQALDAILQoCAgICAICEMQoCAgIAQIQsCQAJAAn4CQAJAAkACQAJAAkACQAJAAkAgBy0A+tpAQQJrDgMAAQIKCyAAQQFqIgMgBEkNAkIAIQxCACELDAkLQgAhDCAAQQFqIgMgBEkNAkIAIQsMCAtCACEMIABBAWoiAyAESQ0CQgAhCwwHCyACIANqLAAAQb9/Sg0GDAcLIAIgA2osAAAhAwJAAkAgB0HgAWsiBwRAIAdBDUYEQAwCBQwDCwALIANBYHFBoH9GDQQMAwsgA0Gff0oNAgwDCyAIQR9qQf8BcUEMTwRAIAhBfnFBbkcNAiADQUBIDQMMAgsgA0FASA0CDAELIAIgA2osAAAhAwJAAkACQAJAIAdB8AFrDgUBAAAAAgALIAhBD2pB/wFxQQJLIANBQE5yDQMMAgsgA0HwAGpB/wFxQTBPDQIMAQsgA0GPf0oNAQsgBCAAQQJqIgNNBEBCACELDAULIAIgA2osAABBv39KDQJCACELIABBA2oiAyAETw0EIAIgA2osAABBQEgNBUKAgICAgOAADAMLQoCAgICAIAwCC0IAIQsgAEECaiIDIARPDQIgAiADaiwAAEG/f0wNAwtCgICAgIDAAAshDEKAgICAECELCyAGIAwgAK2EIAuENwIEIAZBATYCAAwGCyADQQFqIQAMAgsgAEEBaiEADAELIAAgBE8NAANAIAAgAmosAABBAEgNASAEIABBAWoiAEcNAAsMAgsgACAESQ0ACwsgBiAENgIIIAYgAjYCBCAGQQA2AgALQQAhACAFKAIQQQFHDQBBoKvAAEEvEIYBIQAgAUEANgIICyAFQSBqJAAgAAvnAQEDfwJAAkACQAJAIAEoAgAiAUEBcQRAQQdBICACIAFrIgYgA2oiBEEKdmdrIgUgBUEHTxtBAnRBAXIhBSABIAJGBEAgBSECIAQhAwwFCyAGQYCAgMAASQ0CQRRBBBDOASICRQ0BIAJBATYCECACIAQ2AgggAiABNgIEIAIgBDYCACACIAVBAnZBB3E2AgwMAwsgACABIAIgAxAsDwtBBEEUENIBAAsgBkEFdCAFaiECCyAEIAZrIgVBACAEIAVPGyEEIAEgBmohAQsgACACNgIMIAAgAzYCCCAAIAQ2AgQgACABNgIAC+ABAQJ/AkACQCABKAIAIgEoAhBBAUcEQCADQQBIDQECQCADRQRAQQEhBAwBC0EBIQUgA0EBEM4BIgRFDQILIAMEQCAEIAIgA/wKAAALIAEgASgCECICQQFrNgIQIAJBAUYEQCABKAIAIgIEQCABKAIEIAJBARDEAQsgAUEUQQQQxAELQQdBICADQQp2Z2siASABQQdPG0ECdEEBciEBIAMhBQwCCyABKAIEIAEoAgAgAmtqIQUgAiEEDAELIAUgAxCqAQALIAAgATYCDCAAIAU2AgggACADNgIEIAAgBDYCAAv8AQIDfwF+IwBBMGsiAiQAIAEoAgBBgICAgHhGBEAgASgCDCEDIAJBLGoiBEEANgIAIAJCgICAgBA3AiQgAkEkakG4zMAAIAMoAgAiAygCACADKAIEECYaIAJBIGogBCgCACIDNgIAIAIgAikCJCIFNwMYIAFBCGogAzYCACABIAU3AgALIAEpAgAhBSABQoCAgIAQNwIAIAJBEGoiAyABQQhqIgEoAgA2AgAgAUEANgIAIAIgBTcDCEEMQQQQzgEiAUUEQEEEQQwQ0gEACyABIAIpAwg3AgAgAUEIaiADKAIANgIAIABBmM7AADYCBCAAIAE2AgAgAkEwaiQAC5QCAQJ/IwBBIGsiBSQAQbjwwABBuPDAACgCACIGQQFqNgIAAkACf0EAIAZBAEgNABpBAUG08MAALQAADQAaQbTwwABBAToAAEGw8MAAQbDwwAAoAgBBAWo2AgBBAgtB/wFxIgZBAkcEQCAGQQFxRQ0BIAVBCGogACABKAIYEQMADAELQbzwwAAoAgAiBkEASA0AQbzwwAAgBkEBajYCAEHA8MAAKAIABEAgBSAAIAEoAhQRAwAgBSAEOgAdIAUgAzoAHCAFIAI2AhggBSAFKQMANwIQQcDwwAAoAgAgBUEQakHE8MAAKAIAKAIUEQMAC0G88MAAQbzwwAAoAgBBAWs2AgBBtPDAAEEAOgAAIANFDQAACwALwgECBH8CfiMAQSBrIgIkAEEBIQUCQCABQdKxwABBIxCyAQ0AIAAoAgAiAygCCCIEBEAgAygCBCIAIARBBHRqIQRCgICAgMAEIgYgAkEIaq2EIQcgBiACrYQhBgNAIAIgACkCADcCACACIABBCGopAgA3AgggAiAHNwMYIAIgBjcDECABKAIAIAEoAgRBsZbAACACQRBqECYNAiAAQRBqIgAgBEcNAAsLIAEgAygCECADKAIUELIBIQULIAJBIGokACAFC7cBAQZ/IAAoAggiBQRAIAAoAgQhBgNAIAYgAkHwAGxqIgEoAmQiAEGAgICAeEYgAEVyRQRAIAEoAmggAEEBEMQBCyABKAJgIgMEQCABKAJcQfwBaiEAA0AgAEEEaygCACIEQYKAgIB4SCAERXJFBEAgACgCACAEQQEQxAELIABBhAJqIQAgA0EBayIDDQALCyABKAJYIgAEQCABKAJcIABBhAJsQQQQxAELIAJBAWoiAiAFRw0ACwsLqgECAn8BfkEBIQdBBCEGAkAgBCAFakEBa0EAIARrca0gA61+IghCIIhQRQRAQQAhAwwBCyAIpyIDQYCAgIB4IARrSwRAQQAhAwwBCwJAAkACfyABBEAgAiABIAVsIAQgAxC5AQwBCyADRQRAIAQhBgwCCyADIAQQzgELIgYNACAAIAQ2AgQMAQsgACAGNgIEQQAhBwtBCCEGCyAAIAZqIAM2AgAgACAHNgIAC6oBAQF/IwBBEGsiBSQAIARFBEBBAEEAEKoBAAsgAiABIAJqIgFLBEBBAEEAEKoBAAsgBUEEaiAAKAIAIgIgACgCBCABIAJBAXQiAiABIAJLGyIBQQhBBEEBIARBgQhJGyAEQQFGGyICIAEgAksbIgEgAyAEEEsgBSgCBEEBRgRAIAUoAgggBSgCDBCqAQALIAUoAgghAiAAIAE2AgAgACACNgIEIAVBEGokAAu2AQEBfyMAQRBrIgMkAAJAAkACQCAAKAIAIgBBAXEEQCABIABBfnEiAGsgAmoiAUEASA0CIAAgAUEBEMQBDAELIAAgACgCCCIBQQFrNgIIIAFBAUcNACAAQQRqKAIAIgFBAEgNAiAAKAIAIAFBARDEASAAQQxBBBDEAQsgA0EQaiQADwtBsLLAAEErIANBD2pBoLLAAEHcssAAEGgAC0GwssAAQSsgA0EPakGgssAAQZSzwAAQaAALtQEBAX8CQEEMQQQQzgEiBgRAIAZBAjYCCCAGIAM2AgAgBiAEIANrIAVqNgIEIAEgBiABKAIAIgEgASACRiICGzYCACACRQRAIAEgASgCCCICQQFqNgIIIAJBAEgNAiAAIAE2AgwgACAFNgIIIAAgBDYCBCAAQYyywAA2AgAgBkEMQQQQxAEPCyAAIAY2AgwgACAFNgIIIAAgBDYCBCAAQYyywAA2AgAPC0EEQQwQ0gEACxDIAQALogEBAX8jAEEQayIGJAACQCABBEAgBkEEaiABIAMgBCAFIAIoAhARBQACQCAGKAIEIgIgBigCDCIBTQRAIAYoAgghBQwBCyACQQJ0IQIgBigCCCEDIAFFBEBBBCEFIAMgAkEEEMQBDAELIAMgAkEEIAFBAnQiAhC5ASIFRQ0CCyAAIAE2AgQgACAFNgIAIAZBEGokAA8LENABAAtBBCACEKoBAAuxAQEBfyMAQRBrIgMkAAJAAkACQCAAKAIAIgBBAXEEQCABIABrIAJqIgFBAEgNAiAAIAFBARDEAQwBCyAAIAAoAggiAUEBazYCCCABQQFHDQAgAEEEaigCACIBQQBIDQIgACgCACABQQEQxAEgAEEMQQQQxAELIANBEGokAA8LQbCywABBKyADQQ9qQaCywABB3LLAABBoAAtBsLLAAEErIANBD2pBoLLAAEGUs8AAEGgAC6ABAQF/IwBBEGsiBSQAAkAgAQRAIAVBBGogASADIAQgAigCEBEBAAJAIAUoAgQiAiAFKAIMIgFNBEAgBSgCCCEEDAELIAJBAnQhAiAFKAIIIQMgAUUEQEEEIQQgAyACQQQQxAEMAQsgAyACQQQgAUECdCICELkBIgRFDQILIAAgATYCBCAAIAQ2AgAgBUEQaiQADwsQ0AEAC0EEIAIQqgEAC4kBAQF/IwBBEGsiAyQAIAIgASACaiIBSwRAQQBBABCqAQALIANBBGogACgCACICIAAoAgRBCCABIAJBAXQiAiABIAJLGyIBIAFBCE0bIgFBAUEBEEsgAygCBEEBRgRAIAMoAgggAygCDBCqAQALIAMoAgghAiAAIAE2AgAgACACNgIEIANBEGokAAucAQIDfwF+IwBBIGsiAiQAIAEoAgBBgICAgHhGBEAgASgCDCEDIAJBHGoiBEEANgIAIAJCgICAgBA3AhQgAkEUakG4zMAAIAMoAgAiAygCACADKAIEECYaIAJBEGogBCgCACIDNgIAIAIgAikCFCIFNwMIIAFBCGogAzYCACABIAU3AgALIABBmM7AADYCBCAAIAE2AgAgAkEgaiQAC40BAQR/IwBBEGsiAiQAAn9BASABKAIAIgNBJyABKAIEIgUoAhAiAREAAA0AGiACIAAoAgBBgQIQHQJAIAItAA0iAEGBAU8EQCADIAIoAgAgAREAAEUNAUEBDAILIAMgAiACLQAMIgRqIAAgBGsgBSgCDBEEAEUNAEEBDAELIANBJyABEQAACyACQRBqJAALhQEBAX8jAEEQayIDJAAgAiABIAJqIgFLBEBBAEEAEKoBAAsgA0EEaiAAKAIAIgIgACgCBEEIIAEgAkEBdCICIAEgAksbIgEgAUEITRsiARBXIAMoAgRBAUYEQCADKAIIIAMoAgwQqgEACyADKAIIIQIgACABNgIAIAAgAjYCBCADQRBqJAALqQECA38CfiMAQRBrIgAkACMAQRBrIgEkACABQQA6AA9BAUEBEM4BIgJFBEBBAUEBENIBAAsgACABQQ9qrTcDACAAIAKtNwMIIAJBAUEBEMQBIAFBEGokACAAKQMAIQMgACkDCCEEQaDwwAAtAABBAkYEQEHAqsAAQf0AQYCrwAAQggEAC0Gg8MAAQQE6AABBmPDAACAENwMAQZDwwAAgAzcDACAAQRBqJAALcgACfyADQQBIBEBBASEBQQAhA0EEDAELAn8CQAJ/IAEEQCACIAFBASADELkBDAELIANFBEBBASEBDAILIANBARDOAQsiAQ0AIABBATYCBEEBDAELIAAgATYCBEEACyEBQQgLIABqIAM2AgAgACABNgIAC5YCAgV/AW8jAEEQayIFJAAgBSACNwMAIAACfyABLQACRQRAIAJCgICAgICAgBBaBEAgBSAFrUKAgICAMIQ3AwhBASEBAn8jAEEQayIGJABBASEHAkACfyAFQQhqIgRBAXEEQCAEQQF2IQMgBEECTwRAIANBARDOASIHRQ0DCyADBEAgB0H0lMAAIAP8CgAACyADDAELIAZBBGpB9JTAACAEEC8gBigCDCEDIAYoAgghByAGKAIECyEEIAcgAxDXASAEBEAgByAEQQEQxAELIAZBEGokAAwBC0EBIAMQqgEACwwCC0EAIQEgAroQtAEMAQtBACEBIAIQDyEIEDYiAyAIJgEgAws2AgQgACABNgIAIAVBEGokAAtoAQN/QQEhBAJAIAJBAXEEQCACQQF2IQMgAkECTwRAIANBARDOASIERQ0CIAMhBQsgAwRAIAQgASAD/AoAAAsgACADNgIIIAAgBDYCBCAAIAU2AgAPCyAAIAEgAhAvDwtBASADEKoBAAtuAQN/QQEhAwJAIAFBAXEEQCABQQF2IQIgAUECTwRAIAJBARDOASIDRQ0CIAIhBAsgAgRAIANBjJbAACAC/AoAAAsgACACNgIIIAAgAzYCBCAAIAQ2AgAPCyAAQYyWwAAgARAvDwtBASACEKoBAAtrAAJAAkAgA0UEQEEBIQEMAQsgA0EBEM4BIgFFDQELIAMEQCABIAIgA/wKAAALIAAgAzYCCCAAIAM2AgQgACABNgIAIABBB0EgIANBCnZnayIAIABBB08bQQJ0QQFyNgIMDwtBASADEKoBAAuPAQEBfwJAAkAgAEGECE8EQCAA0G8mAUGU68AAKAIADQJBlOvAAEF/NgIAIABBqOvAACgCACIBSQ0BIAAgAWsiAEGg68AAKAIATw0BQZzrwAAoAgAgAEECdGpBpOvAACgCADYCAEGk68AAIAA2AgBBlOvAAEGU68AAKAIAQQFqNgIACw8LAAtBhMbAABCKAQALaAEBfyMAQRBrIgUkACABRQRAENABAAsgBUEIaiABIAMgBCACKAIQEQEAIAAgBSgCCCICQQJGIgE2AgggACAFKAIMIgNBACABGzYCBCAAQQAgA0GACCACQQFxGyABGzYCACAFQRBqJAALagEDfyMAQRBrIgEkACABQQRqIAAoAgAiAiAAKAIEQQQgAkEBdCICIAJBBE0bIgJBCEEoEEsgASgCBEEBRgRAIAEoAgggASgCDBCqAQALIAEoAgghAyAAIAI2AgAgACADNgIEIAFBEGokAAtvACMAQRBrIgEkACAAKAIAIgAgACgCCCICQQFrNgIIAkAgAkEBRgRAIABBBGooAgAiAkEASA0BIAAoAgAgAkEBEMQBIABBDEEEEMQBCyABQRBqJAAPC0GwssAAQSsgAUEPakGgssAAQZSzwAAQaAALYwEBfyMAQRBrIgYkACABRQRAENABAAsgBkEIaiABIAMgBCAFIAIoAhARBQAgBigCDCEBIAAgBigCCCICNgIIIAAgAUEAIAJBAXEiAhs2AgQgAEEAIAEgAhs2AgAgBkEQaiQAC2YBA38jAEEQayIBJAAgAUEEaiAAKAIAIgIgACgCBEEIIAJBAXQiAiACQQhNGyICEFcgASgCBEEBRgRAIAEoAgggASgCDBCqAQALIAEoAgghAyAAIAI2AgAgACADNgIEIAFBEGokAAthAQF/IwBBEGsiBSQAIAFFBEAQ0AEACyAFQQhqIAEgAyAEIAIoAhARAQAgBSgCDCEBIAAgBSgCCCICNgIIIAAgAUEAIAJBAXEiAhs2AgQgAEEAIAEgAhs2AgAgBUEQaiQAC1oBAX8CQCADQQBIDQACQCADRQRAQQEhAQwBC0EBIQQgA0EBEM4BIgFFDQELIAAgATYCBCAAIAM2AgAgAwRAIAEgAiAD/AoAAAsgACADNgIIDwsgBCADEKoBAAteAQF/IAEoAgAiBEEBcQRAIAAgASAEIARBfnEgAiADEE4PCyAEIAQoAggiAUEBajYCCCABQQBOBEAgACAENgIMIAAgAzYCCCAAIAI2AgQgAEGMssAANgIADwsQyAEAC14BAn8jAEEQayIFJAAgBUEIaiABKAIAIAQ1AgAQWEEBIQQgBSgCDCEGIAUoAghBAXFFBEAgAUEEaiACIAMQJSAGEMUBQQAhBAsgACAGNgIEIAAgBDYCACAFQRBqJAALXwECfyMAQRBrIgUkACAFQQhqIAEoAgAgBCsDABC1AUEBIQQgBSgCDCEGIAUoAghBAXFFBEAgAUEEaiACIAMQJSAGEMUBQQAhBAsgACAGNgIEIAAgBDYCACAFQRBqJAALWwEBfyMAQRBrIgUkACABRQRAENABAAsgBUEIaiABIAMgBCACKAIQEQEAIAAgBS0ACCIBNgIIIAAgBSgCDEEAIAEbNgIEIABBACAFLQAJIAEbNgIAIAVBEGokAAtcAQF/IwBBIGsiBSQAIAUgATYCBCAFIAA2AgAgBSADNgIMIAUgAjYCCCAFIAVBCGqtQoCAgIDQDIQ3AxggBSAFrUKAgICAkAyENwMQQceEwAAgBUEQaiAEEIIBAAtZAQF/IwBBEGsiBCQAIAFFBEAQ0AEACyAEQQhqIAEgAyACKAIQEQIAIAAgBC0ACCIBNgIIIAAgBCgCDEEAIAEbNgIEIABBACAELQAJIAEbNgIAIARBEGokAAtbAQF/IAEoAgAiBEEBcQRAIAAgASAEIAQgAiADEE4PCyAEIAQoAggiAUEBajYCCCABQQBOBEAgACAENgIMIAAgAzYCCCAAIAI2AgQgAEGMssAANgIADwsQyAEAC0kBAX8jAEEQayICJAAgASAAKAIAIgBBf3NBH3ZBAUEAIAAgAEEfdSIBcyABayACQQZqIgEQJyIAIAFqQQogAGsQGyACQRBqJAALVQEBfyMAQRBrIgYkACABRQRAENABAAsgBkEIaiABIAMgBCAFIAIoAhARBQAgBigCDCEBIAAgBigCCCICNgIEIAAgAUEAIAJBAXEbNgIAIAZBEGokAAtVAQF/IwBBEGsiBiQAIAFFBEAQ0AEACyAGQQhqIAEgAyAEIAUgAigCEBETACAGKAIMIQEgACAGKAIIIgI2AgQgACABQQAgAkEBcRs2AgAgBkEQaiQAC1UBAX8jAEEQayIGJAAgAUUEQBDQAQALIAZBCGogASADIAQgBSACKAIQERQAIAYoAgwhASAAIAYoAggiAjYCBCAAIAFBACACQQFxGzYCACAGQRBqJAALVQEBfyMAQRBrIgYkACABRQRAENABAAsgBkEIaiABIAMgBCAFIAIoAhARFQAgBigCDCEBIAAgBigCCCICNgIEIAAgAUEAIAJBAXEbNgIAIAZBEGokAAtTAQF/IwBBEGsiBSQAIAFFBEAQ0AEACyAFQQhqIAEgAyAEIAIoAhARAQAgBSgCDCEBIAAgBSgCCCICNgIEIAAgAUEAIAJBAXEbNgIAIAVBEGokAAtRAQF/IwBBEGsiBCQAIAFFBEAQ0AEACyAEQQhqIAEgAyACKAIQEQIAIAQoAgwhASAAIAQoAggiAjYCBCAAIAFBACACQQFxGzYCACAEQRBqJAALSwAgASgCACIBQQFxBEAgAUF+cSEBIAMEQCABIAIgA/wKAAALIAAgAzYCCCAAIAE2AgQgACACIAFrIANqNgIADwsgACABIAIgAxBAC1ACAX8BfiMAQSBrIgMkACADIAE2AgwgAyAANgIIIANCgICAgOAHIgQgA0EIaq2ENwMYIAMgBCADQQxqrYQ3AxBBgYLAACADQRBqIAIQggEAC0cBAX8gACgCACAAKAIIIgNrIAJJBEAgACADIAIQUiAAKAIIIQMLIAIEQCAAKAIEIANqIAEgAvwKAAALIAAgAiADajYCCEEAC0MBA38CQCACRQ0AA0AgAC0AACIEIAEtAAAiBUYEQCAAQQFqIQAgAUEBaiEBIAJBAWsiAg0BDAILCyAEIAVrIQMLIAMLkAMBCn8gACgCACIAKAIIIgwgACgCAEYEQCMAQRBrIgkkACAJQQhqIQ0gACgCACEFIwBBEGsiCCQAIAhBBGohBiAAIgcoAgQhDgJAAkBBBCAFQQFqIgUgBygCACIKQQF0IgsgBSALSxsiBSAFQQRNGyILIgVB/////wBNBEAgBUEEdCIFQf3///8HSQ0BCyAGQQA2AgQgBkEBNgIADAELAn8gCgRAIA4gCkEEdEEEIAUQuQEMAQsgBUEEEM4BCyIKRQRAIAYgBTYCCCAGQQQ2AgQgBkEBNgIADAELIAYgBTYCCCAGIAo2AgQgBkEANgIACwJ/IAgoAgQEQCAIKAIMIQcgCCgCCAwBCyAIKAIIIQYgByALNgIAIAcgBjYCBEGBgICAeAshBiANIAc2AgQgDSAGNgIAIAhBEGokACAJKAIIIgdBgYCAgHhHBEAgByAJKAIMEKoBAAsgCUEQaiQACyAAKAIEIAxBBHRqIgcgBDYCDCAHIAM2AgggByACNgIEIAcgATYCACAAIAxBAWo2AggLRAAgASgCACIBQQFxBEAgAwRAIAEgAiAD/AoAAAsgACADNgIIIAAgATYCBCAAIAIgAWsgA2o2AgAPCyAAIAEgAiADEEALRwEBfyAAKAIAIAAoAggiA2sgAkkEQCAAIAMgAhBVIAAoAgghAwsgAgRAIAAoAgQgA2ogASAC/AoAAAsgACACIANqNgIIQQALQwECfyMAQRBrIgIkACACQQhqIAAoAgAlARAEIAIoAggiAyACKAIMIgAgARDUASAABEAgAyAAQQEQxAELIAJBEGokAAs2AQF/IwBBEGsiAiQAIAFBAUEBQQAgACgCACACQQZqIgEQJyIAIAFqQQogAGsQGyACQRBqJAALsgQCCH8DfiMAQSBrIgYkACABQQFBAUEAIAZBDGohBEEAIQFBFCECIAApAwAiDCIKQugHWgRAIARBBGshAiAKIQsCQAJAA0AgCyALQpDOAIAiCkKQzgB+faciB0H//wNxQeQAbiEFAkAgAUEUaiIAQQRrQRRJBEAgAkEUaiIDIAVBAXQiCC0AgNlAOgAAIABBA2siCUEUSQ0BIAlBFEHI2sAAEHMACyAAQQRrQRRByNrAABBzAAsgA0EBaiAIQYHZwABqLQAAOgAAIABBAmtBFEkEQCADQQJqIAcgBUHkAGxrQQF0Qf7/B3EiBS0AgNlAOgAAIABBAWtBFE8NAiADQQNqIAVBgdnAAGotAAA6AAAgAkEEayECIAFBBGshASALQv+s4gRWIAohC0UNAwwBCwsgAEECa0EUQcjawAAQcwALIABBAWtBFEHI2sAAEHMACyABQRRqIQILAkAgCkIJWARAIAIhAQwBCyAKpyIDQf//A3FB5ABuIQACQCACQQJrIgFBFEkEQCABIARqIAMgAEHkAGxrQf//A3FBAXQiAy0AgNlAOgAAIAJBAWsiAkEUTw0BIACtIQogAiAEaiADQYHZwABqLQAAOgAADAILIAFBFEHI2sAAEHMACyACQRRByNrAABBzAAsgDFBFIApQcUUEQCABQQFrIgFBFE8EQCABQRRByNrAABBzAAsgASAEaiAKp0EBdC0AgdlAOgAACyABIARqQRQgAWsQGyAGQSBqJAALSAEBf0EYQQQQzgEiAUUEQEEEQRgQ0gEACyABQQA2AgggAUKAgICAwAA3AgAgASAAKQIANwIMIAFBFGogAEEIaigCADYCACABCz0AIAAoAgAiACAAKAIQIgFBAWs2AhAgAUEBRgRAIAAoAgAiAQRAIAAoAgQgAUEBEMQBCyAAQRRBBBDEAQsLRgECfyABKAIEIQIgASgCACEDQQhBBBDOASIBRQRAQQRBCBDSAQALIAEgAjYCBCABIAM2AgAgAEGIzcAANgIEIAAgATYCAAtDAQF/IAEoAgAiASABKAIIIgRBAWo2AgggBEEASARAEMgBAAsgACABNgIMIAAgAzYCCCAAIAI2AgQgAEGMssAANgIAC0MBAX8gASgCACIBIAEoAhAiBEEBajYCECAEQQBIBEAQyAEACyAAIAE2AgwgACADNgIIIAAgAjYCBCAAQdizwAA2AgALPwIBfwF+IwBBEGsiASQAIAFCgICAgOAHIgIgAK2ENwMIIAEgAiAAQQRqrYQ3AwBBoIHAACABQeyzwAAQggEAC94BAgF/AX4jAEEgayIDJAAgAyABNgIQIAMgADYCDCADQQE7ARwgAyACNgIYIAMgA0EMajYCFCMAQRBrIgEkACADQRRqIgApAgAhBCABIAA2AgwgASAENwIEIwBBEGsiACQAIAFBBGoiASgCACICKAIEIgNBAXEEQCACKAIAIQIgACADQQF2NgIEIAAgAjYCACAAQdDMwAAgASgCBCABKAIIIgAtAAggAC0ACRBIAAsgAEGAgICAeDYCACAAIAE2AgwgAEHszMAAIAEoAgQgASgCCCIALQAIIAAtAAkQSAALLwACQCABaUEBRyAAQYCAgIB4IAFrS3INACAABEAgACABEM4BIgFFDQELIAEPCwALPwAgACgCAEGAgICAeEcEQCABIAAoAgQgACgCCBCyAQ8LIAEoAgAgASgCBCAAKAIMKAIAIgAoAgAgACgCBBAmCzgAAkAgAkGAgMQARg0AIAAgAiABKAIQEQAARQ0AQQEPCyADRQRAQQAPCyAAIAMgBCABKAIMEQQAC0UBAX9BGEEEEM4BIgJFBEBBBEEYENIBAAsgAiABNgIUIAIgADYCECACQoCAgICAgICAgH83AgggAkKAgICAwAA3AgAgAgvtAQEDfyABKAIIIgJBgICAEHFFBEAgAkGAgIAgcUUEQCAAIAEQeg8LQQAhAiMAQRBrIgMkACAAKAIAIQADQCACIANqQQ9qIABBD3EtAOraQDoAACACQQFrIQIgAEEPSyAAQQR2IQANAAsgAUEBQejawABBAiACIANqQRBqQQAgAmsQGyADQRBqJAAPC0EAIQIjAEEQayIDJAAgACgCACEAA0AgAiADakEPaiAAQQ9xLQDY2kA6AAAgAkEBayECIABBD0sgAEEEdiEADQALIAFBAUHo2sAAQQIgAiADakEQakEAIAJrEBsgA0EQaiQACy4AAkAgA2lBAUcgAUGAgICAeCADa0tyDQAgACABIAMgAhC5ASIARQ0AIAAPCwALOQEBf0EBIQICQCAAIAEQPQ0AIAEoAgBB+erAAEECIAEoAgQoAgwRBAANACAAQQRqIAEQPSECCyACCy0BAX8jAEEQayIBJAAgASABQQ9qrUKAgICAwAyENwMAQcuEwAAgASAAEIIBAAvoAQEEfyMAQRBrIgIkACMAQRBrIgMkACADQQRqIAAgAUEBEBAgAQRAIAAgAUEBEMQBCwJAAkAgAgJ/IAMoAgQiBUGAgICAeEYEQEEAIQEgAygCCCEAQQEMAQsgAygCCCEAAkAgAygCDCIEIAVPBEAgACEBDAELIARFBEBBASEBIAAgBUEBEMQBDAELIAAgBUEBIAQQuQEiAUUNAgtBACEAQQALNgIMIAIgADYCCCACIAQ2AgQgAiABNgIAIANBEGokAAwBC0EBIAQQqgEACyACKAIAIAIoAgQgAigCCCACKAIMIAJBEGokAAvoAQEEfyMAQRBrIgIkACMAQRBrIgMkACADQQRqIAAgAUEAEBAgAQRAIAAgAUEBEMQBCwJAAkAgAgJ/IAMoAgQiBUGAgICAeEYEQEEAIQEgAygCCCEAQQEMAQsgAygCCCEAAkAgAygCDCIEIAVPBEAgACEBDAELIARFBEBBASEBIAAgBUEBEMQBDAELIAAgBUEBIAQQuQEiAUUNAgtBACEAQQALNgIMIAIgADYCCCACIAQ2AgQgAiABNgIAIANBEGokAAwBC0EBIAQQqgEACyACKAIAIAIoAgQgAigCCCACKAIMIAJBEGokAAu1DgIYfwF+IwBBEGsiCyQAIwBBEGsiESQAIBFBBGohEiMAQfAAayIDJAACQAJAAkAgAUEBTQRAQfChwABBFxDXASECIBJBgICAgHg2AgAgEiACNgIEDAELAkBBgIACEBMiAkUNACACQQRrLQAAQQNxRQ0AIAJBAEGAgAL8CwALIAJFDQECf0GQ0gJBBBDOASIEBEAgBEEAQYnSAvwLACAEQQE7AY7SAiAEQQE6AIzSAiAEQQI6AI3SAiAEDAELQQRBkNICENIBAAshDCADQSBqIgRBCGpCADcDACAEQgA3AwAgBCAMNgIQIANBADYCHCADQoCAAjcCFCADIAI2AhAgAyABQQJrNgIMIAMgAEECajYCCCADQQA2AkQgA0KAgICAEDcCPCADQcgAaiEHIANBCGohEyMAQRBrIgUkAEGAwAAhDgJAAkAgA0E8aiIJKAIAIhUgCSgCCCIMa0EgTwRAIBUhAiAMIQQMAQsgBSATIAkQMiAFLQAAQQRHBEAgByAFKQMAIhpCIIg+AgQgByAaPAAAIAdBA2ogGqciAkEYdjoAACAHIAJBCHY7AAEMAgsgBSgCBARAIAkoAgAhAiAJKAIIIQQMAQsgB0EEOgAAIAdBADYCBAwBCyATQRhqIRgDQAJAIAIgBEcgAiAVR3INACAFIBMgCRAyIAUtAABBBEcEQCAHIAUpAwAiGkIgiD4CBCAHIBo8AAAgB0EDaiAapyICQRh2OgAAIAcgAkEIdjsAAQwDCyAJKAIIIQQgBSgCBARAIAkoAgAhAgwBCyAHQQQ6AAAgByAEIAxrNgIEDAILIAIgBEYEQCAFIAIgCSgCBCACQSBqIgYgAkEBdCICIAIgBkkbIgJBAUEBEEsgBSgCAEEBRgRAIAdCgcwANwIADAMLIAUoAgQhBiAJIAI2AgAgCSAGNgIECyAJKAIEIARqIRcgDiACIARrIhkgDiAZSRsiFCAIayIGBEAgCCAXakEAIAb8CwALIAUgEyAYIBcgFBAiAkACQAJAAn8CQAJAAkACQAJ/IAUtAABBBEcEQCAFKQMAIhpCIIinIQpBACEGIBqnDAELIAUoAgQiBiAUSw0GIA1BgH5xQQRyCyINQf8BcUEBaw4EAgEABgcLIAotAAhBI0cNBiAKKAIAIQggCkEEaigCACIPKAIAIhAEQCAIIBARBgALIA8oAgQiEARAIAggECAPKAIIEMQBC0EADAMLIAotAAhBI0YNAQwFCyANQYD+A3FBgMYARw0EC0EBCyEIA0ACQAJAIAhFBEAgCkEMQQQQxAEMAQsgBSATIBggBiAXaiAUIAZrIggQIgJAAkACfyAFLQAAQQRHBEAgBSkDACIaQiCIpyEKIBqnDAELIAggBSgCBCIPSQ0GIAYgD2ohBiANQYB+cUEEcgsiDUH/AXFBAWsOBAABAwYHCyANQYD+A3FBgMYARg0BDAYLIAotAAhBI0cNBQtBASEIDAELIAotAAhBI0cNAyAKKAIAIQggCkEEaigCACIPKAIAIhAEQCAIIBARBgALIA8oAgQiEARAIAggECAPKAIIEMQBC0EAIQgMAAsAC0GYrsAAQTZB0K7AABCrAQALIAkgBCAGaiIENgIIIAZFBEAgB0EEOgAAIAcgBCAMazYCBAwDCyAUIAZrIQggBiAURyAOIBlLcg0BIA5BAEggDkEBdCEORQ0BQX8hDgwBCwsgByAKNgIEIAcgDTYCACAJIAQgBmo2AggLIAVBEGokACADLQBIQQRHBEAgAyADKQNINwNQIAMgA0HQAGqtQoCAgIDQAIQ3A2ggA0HcAGpBmYTAACADQegAahAvIAMoAmAiAiADKAJkENcBIRUgAygCXCIEBEAgAiAEQQEQxAELIAMtAFBBA0YEQCADKAJUIgIoAgAhBCACQQRqKAIAIgwoAgAiBQRAIAQgBREGAAsgDCgCBCIFBEAgBCAFIAwoAggQxAELIAJBDEEEEMQBCyASQYCAgIB4NgIAIBIgFTYCBCADKAI8IgIEQCADKAJAIAJBARDEAQsgAygCFCICBEAgAygCECACQQEQxAELIAMoAjBBkNICQQQQxAEMAQsgEiADKQI8NwIAIBJBCGogA0HEAGooAgA2AgAgAygCFCICBEAgAygCECACQQEQxAELIAMoAjBBkNICQQQQxAELIANB8ABqJAAMAQtBAUGAgAIQqgEACyABBEAgACABQQEQxAELAkACQCALAn8gESgCBCICQYCAgIB4RgRAQQAhASARKAIIIQBBAQwBCyARKAIIIQACQCARKAIMIhYgAk8EQCAAIQEMAQsgFkUEQEEBIQEgACACQQEQxAEMAQsgACACQQEgFhC5ASIBRQ0CC0EAIQBBAAs2AgwgCyAANgIIIAsgFjYCBCALIAE2AgAgEUEQaiQADAELQQEgFhCqAQALIAsoAgAgCygCBCALKAIIIAsoAgwgC0EQaiQAC61vBE5/BH4ofQFvIwBBEGsiMCQAIwBBEGsiNSQAIDVBCGohRSMAQZACayIFJAAgBUEwaiAAIAEQFQJAIAUoAjAiAkEDRgRAIAUgBSgCNDYCvAEgBSAFQbwBaq1CgICAgBCENwPAASAFQeABakGshMAAIAVBwAFqEC8gBSgC5AEiAyAFKALoARDXASEHIAUoAuABIgIEQCADIAJBARDEAQsgBSgCvAEiAygCDCICQYCAgIB4RiACRXJFBEAgAygCECACQQEQxAELIAMoAgAiAgRAIAMoAgQgAkEEdEEEEMQBCyADQRhBBBDEAUEBIRsMAQsgBSgCVCEHIAUoAlAhBCACQQJGBH9BAAUgBSgCTEEAIAUoAkhBAXEbIUYgBSgCREEUIAUoAkBBAXEbIUcgBSoCPEMAAAAAIAUoAjhBAXEbIW4gBSoCNEMAAAAAIAJBAXEbIW9BAQshSCAFKAJcIQMgBCkDACFSIAcEQCAEIAdBGGwiAmtBGGshCSACIAdqQSFqIQ5BCCEbCyAFKAKQASEcIAUoAowBIQwgBSgCiAEhSSAFKAKEASEgIAUoAoABIT8gBSgCfCEmIAUoAnghEyAFKAJ0IREgBSgCcCEQQaDwwAAtAABBAUcEQBBWC0GQ8MAAQZDwwAApAwAiUUIBfDcDAEGY8MAAKQMAIVAgBUHIAWoiFUG4qsAAKQMANwMAIAVBsKrAACkDADcDwAEgBSBQNwPYASAFIFE3A9ABIAUgCTYCiAIgBSAONgKEAiAFIBs2AoACIAMEQCAFQShqIAVBwAFqIAMgBUHQAWoQFAsgBSADNgL4ASAFIAQ2AvABIAUgBCAHakEBajYC7AEgBSAEQQhqNgLoASAFIFJCf4VCgIGChIiQoMCAf4M3A+ABIAVBwAFqIQhBACEDIwBB4ABrIgokACAKQShqIAVB4AFqIiciAkEoaikDADcDACAKQSBqIAJBIGopAwA3AwAgCkEYaiACQRhqKQMAIlE3AwAgCkEQaiACQRBqKQMANwMAIApBCGogAkEIaikDADcDACAKIAIpAwAiUDcDAAJAIFGnIgdFBEBBACEHDAELIApBPGohBCAKKAIIIQkgCigCECEOAkADQCAHQQFrIQcgUFAEQANAIA5BwAFrIQ4gCSkDACAJQQhqIQlCgIGChIiQoMCAf4MiUEKAgYKEiJCgwIB/UQ0ACyBQQoCBgoSIkKDAgH+FIVALIFAgUCJRQgF9gyFQIA4gUXqnQQN2QWhsaiIaQRhrKAIAIhJBgICAgHhGDQFBACEbAkAgGkEEaygCACICQQBOBEAgGkEIaygCACEPIBpBDGsoAgAhDSAaQRRrKQIAIVEgAkUEQEEBIQMMAgtBASEbIAJBARDOASIDDQEgAiEDCyAbIAMQqgEACyACBEAgAyAPIAL8CgAACyANBEAgDyANQQEQxAELIAogAjYCRCAKIAM2AkAgCiACNgI8IAogUTcCNCAKIBI2AjAgCiBRNwJMIAogEjYCSCAKQdQAaiAIIApByABqIAQQISAKKAJUIgJBgICAgHhGIAJFckUEQCAKKAJYIAJBARDEAQsgBw0AC0EAIQcLIAogCTYCCCAKIA42AhALIAogUDcDACAKIAc2AhggCigCGCIHBEAgCigCCCEDIAooAhAhAiAKKQMAIVADQCBQUARAA0AgAkHAAWshAiADKQMAIANBCGohA0KAgYKEiJCgwIB/gyJQQoCBgoSIkKDAgH9RDQALIAogAjYCECAKIAM2AgggUEKAgYKEiJCgwIB/hSFQCyAKIAdBAWsiBzYCGCAKIFBCAX0gUIMiUTcDACACIFB6p0EDdkFobGoiCEEYaygCACIEBEAgCEEUaygCACAEQQEQxAELIAhBDGsoAgAiBARAIAhBCGsoAgAgBEEBEMQBCyBRIVAgBw0ACwsCQCAKKAIgIgNFDQAgCigCJCICRQ0AIAooAiggAiADEMQBCyAKQeAAaiQAIAVBOGogFSkDADcDACAFQUBrIAVB0AFqKQMANwMAIAVByABqIAVB2AFqKQMANwMAIAUgBSkDwAE3AzAgBSARIBNBGGxqNgKoASAFIBA2AqQBIAUgETYCoAEgBSARNgKcASMAQTBrIiUkACAFQZwBaiIqKAIAIRUgKigCCCEoAkAgKigCBCICICooAgwiQEYEQCAVIRMMAQsgJUEUaiFBIBUhEwNAIAJBEGopAgAhUyACQQxqKAIAIUogAigCACEDICUgAkEEaigCACIHIAJBCGooAgBB8ABsajYCLCAlIAM2AiggJSAHNgIkICUgBzYCIEEAITEjAEEQayJCJAAgJUEgaiIjKAIIIUsgIygCACIQIQ0gIygCDBpDAAAAACFwQwAAAAAhcUMAAAAAIXJDAAAAACFzQwAAAAAhdEMAAAAAIWgjAEEgayIpJAAgIygCBCIOICMoAgwiH0cEQANAIA5B6ABqKQIAIVIgDkHkAGooAgAhTCAOQdQAaioCACF1IA5B0ABqKAIAISwgDkHMAGoqAgAhdiAOQcgAaigCACEYIA5BxABqKgIAIXcgDkFAaygCACEyIA5BPGoqAgAheCAOQThqKAIAITYgDkE0aioCACF5IA5BMGooAgAhNyAOQSxqKgIAIXogDkEoaigCACFNIA5BJGoqAgAhaSAOQSBqKAIAITggDkEcaioCACFqIA5BGGooAgAhOSAOQRRqKgIAIWsgDkEQaigCACE6IA5BDGoqAgAhbCAOQQRqKgIAIXsgDkEIaigCACFOIA5B2ABqKAIAIQcgDkHcAGooAgAhBCAOQeAAaigCACEDIA4oAgAhOyAjIA5B8ABqIg42AgQgKSAEIANBhAJsajYCHCApIAc2AhggKSAENgIUICkgBDYCECMAQbADayIGJAAgKUEQaiIzKAIIIiFBhAJsIjRBrAFuIU8gMygCACEHAkAgMygCBCIEIDMoAgwiPEYEQCAHIQMMAQsgByEDA0AgBkGsAWoiCyAEQYQC/AoAACAzIARBhAJqIgQ2AgRBACESQQAhFkMAAAAAIVdDAAAAACFYQwAAAAAhWUMAAAAAIVVCACFQQwAAAAAhX0EAIT1BACEtQQAhLkEAIS9BACE+QwAAAAAhYEMAAAAAIWFDAAAAACFiQwAAAAAhY0MAAAAAIWRDAAAAACFlIwBBQGoiHSQAAkACQAJAAkACQCALKAIAQQFGBEAgCygCBEEDRg0BCwJ9IAsoAlAiQ0ECRgRAQYCAgIB4IQhDAAAAAAwBCyALKgLEASFaIAsoAsABIUQgCyoCvAEhViALKAK4ASEUIAsqArQBIVsgCygCsAEhIiALKgKsASFtIAsoAqgBIRcgCyoCpAEhVyALKAKgASEKIAsqApwBIVggCygCmAEhGiALKgKUASFZIAsoApABIREgCyoCjAEhVSALKAKIASEZIAsqAoQBIVwgCygCgAEhDyALKgJ8IV0gCygCeCEJIAsqAnQhVCALKAJwIQggCyoCbCFfIAsoAmghPSALKAJkIS0gCygCYCEuIAsoAlwhLyALKAJYIT4gCyoCVCAdQQI2AjggHUECNgIwIB0gXDgCLCAdIA82AiggHSBdOAIkIB0gCTYCICAdIFQ4AhwgHSAINgIYIB1BAzYCFCAdQgE3AgwjAEHQAGsiHiQAAkACQAJAAkACQCAdQQxqIhIoAgBBAUcNACASKAIEIgggEigCCCIJRg0AIAhBA3QgEmpBEGohKwNAICtBBGsoAgBBAUYEQCArKgIAIlRDAAAAAF4NAwsgK0EIaiErIAkgCEEBaiIIRw0ACwsgHUEANgIIIB1CgICAgMAANwIADAELIBIgCEEBajYCBEEQQQQQzgEiFkUNASAWIFQ4AgAgHiAWNgIQIB5BBDYCDCAeQQE2AhQgHkHIAGogEkEwaigCADYCACAeQUBrIBJBKGopAgA3AwAgHkE4aiASQSBqKQIANwMAIB5BMGogEkEYaikCADcDACAeQShqIg8gEkEQaikCADcDACAeQSBqIBJBCGopAgA3AwAgHiASKQIAIlE3AxgCQCBRp0EBcUUNACAeKAIcIhIgHigCICIbRg0AIBtBAWshCUEBISQDQCAPIBJBA3RqISsgEiEIA0ACQCArQQRrKAIAQQFGBEAgKyoCACJUQwAAAABeDQELICtBCGohKyAbIAhBAWoiCEcNAQwDCwsgCEEBaiESIB4oAgwgJEYEQCAeQQxqICRBAUEEQQQQTCAeKAIQIRYLIBYgJEECdGogVDgCACAeICRBAWoiJDYCFCAIIAlHDQALCyAdIB4pAgw3AgAgHUEIaiAeQRRqKAIANgIACyAeQdAAaiQADAELQQRBEBCqAQALQQAhFkEAIRIgGUECRwRAIFdDAAAAACAKQQFxGyFgIFhDAAAAACAaQQFxGyFhIFlDAAAAACARQQFxGyFiIFVDAAAAACAZQQFxGyFjQQEhEgsgF0ECRwRAIFZDAAAAACAUQQFxGyFZIFtDAAAAACAiQQFxGyFYIG1DAAAAACAXQQFxGyFXQQEhFiBaQwAAAAAgREEBcRshVQsgQ0EBcSEPAkAgHSgCCEUEQEGAgICAeCEIIB0oAgAiCUUNASAdKAIEIAlBAnRBBBDEAQwBCyAdKQIEIVAgHSgCACEIC0MAAAAAIA8bCyFbQwAAgD8hZkMAAIA/IWdDAAAAACFaQwAAAAAhViALKALIASIJQQJHBEAgCyoC7AFDAAAAACALKALoAUEBcRshWiALKgLkAUMAAIA/IAsoAuABQQFxGyFnIAsqAtQBQwAAAAAgCygC0AFBAXEbIWUgCyoCzAFDAACAPyAJQQFxGyFmIAsqAtwBQwAAAAAgCygC2AFBAXEbIWQgCyoC9AFDAAAAACALKALwAUEBcRshVgsgCygC+AEiGkGCgICAeEgNASALKAL8ASERIAspAvwBQv////8PWARAIBpFDQIgESAaQQEQxAEMAgsgCygCgAIhCUEEQQEQzgEiD0UNAyAGIAk2ApABIAYgETYCjAEgBiAaNgKIASAPQfDC0cMGNgAAIAYgVjgCqAEgBiBaOAKkASAGIGc4AqABIAYgZDgCnAEgBiBlOAKYASAGIGY4ApQBIAZBBDYChAEgBiAPNgKAASAGQQQ2AnwgBiBbOAJ4IAYgUDcCcCAGIAg2AmwgBiBfOAJoIAYgPTYCZCAGIC02AmAgBiAuNgJcIAYgLzYCWCAGID42AlQgBiBVOAJQIAYgWTgCTCAGIFg4AkggBiBXOAJEIAYgFjYCQCAGIGA4AjwgBiBhOAI4IAYgYjgCNCAGIGM4AjAgBiASNgIsIAZBADYCGCAGQQA2AgAMAgtBBEEBEM4BIghFDQIgBkIANwKkASAGQoCAgICAgIDAPzcCnAEgBkKAgID8AzcClAEgBkKEgICAgICAgIB/NwKEASAGIAg2AoABIAZCgICAgMAANwJ4IAZBgICAgHg2AmwgBkEANgJkIAZBADYCXCAGQQA2AlQgBkEANgJAIAZBADYCLCAGQQA2AhggBkEANgIAIAhB68qVgwc2AAAgCygC+AEiCEGCgICAeEggCEVyDQEgCygC/AEgCEEBEMQBDAELIAsoAggiCkECRwRAIAsqAiwhbSALKAIoIRogCyoCJCFcIAsoAiAhESALKgIcIV0gCygCGCEPIAsqAhQhXiALKAIQIQkgCyoCDCFUQQRBARDOASIiRQ0CIAYgVjgCqAEgBiBaOAKkASAGIGc4AqABIAYgZDgCnAEgBiBlOAKYASAGIGY4ApQBIAZChICAgICAgICAfzcChAEgBiAiNgKAASAGQQQ2AnwgBiBbOAJ4IAYgUDcCcCAGIAg2AmwgBiBfOAJoIAYgPTYCZCAGIC02AmAgBiAuNgJcIAYgLzYCWCAGID42AlQgBiBVOAJQIAYgWTgCTCAGIFg4AkggBiBXOAJEIAYgFjYCQCAGIGA4AjwgBiBhOAI4IAYgYjgCNCAGIGM4AjAgBiASNgIsIAZBADYCGCAGQQE2AgAgIkHyyo2jBzYAACAGIG1DAAAAACAaGzgCFCAGIFxDAAAAACARGzgCECAGIF1DAAAAACAPGzgCDCAGIF5DAAAAACAJGzgCCCAGIFRDAAAAACAKQQFxGzgCBAwBCyBQpyEKAkAgCygCMCIaQQJHBEAgCyoCTCFcIAsoAkghESALKgJEIV0gCygCQCEPIAsqAjwhXiALKAI4IQkgCyoCNCFUQQdBARDOASIiRQ0BIAYgWzgCeCAGIFBCIIg+AnQgBiAKNgJwIAYgCDYCbCAGIF84AmggBiA9NgJkIAYgLTYCYCAGIC42AlwgBiAvNgJYIAYgPjYCVCAGIFU4AlAgBiBZOAJMIAYgWDgCSCAGIFc4AkQgBiAWNgJAIAYgYDgCPCAGIGE4AjggBiBiOAI0IAYgYzgCMCAGIBI2AiwgIkEDakHAlsAAKAAANgAAICJBvZbAACgAADYAACAGIFY4AqgBIAYgWjgCpAEgBiBnOAKgASAGIGQ4ApwBIAYgZTgCmAEgBiBmOAKUASAGQoeAgICAgICAgH83AoQBIAYgIjYCgAEgBkEHNgJ8IAYgXEMAAAAAIBFBAXEbOAIoIAYgXUMAAAAAIA9BAXEbOAIkIAYgXkMAAAAAIAlBAXEbOAIgIAYgVEMAAAAAIBpBAXEbOAIcIAZBATYCGCAGQQA2AgAMAgsgBkECNgIAIAhBgICAgHhyQYCAgIB4Rg0BIAogCEECdEEEEMQBDAELQQFBBxCqAQALIB1BQGskAAwBC0EBQQQQqgEACyAGKAIAQQJHBEAgAyAGQawB/AoAACADQawBaiEDCyAEIDxHDQALIDMoAgwhPCAzKAIEIQQLIDwgBGtBhAJuIRYgBCA8RwRAIARB/AFqIQQDQCAEQQRrKAIAIghBgoCAgHhIIAhFckUEQCAEKAIAIAhBARDEAQsgBEGEAmohBCAWQQFrIhYNAAsLIClBBGohCSAHIQQCQCAhRQ0AIDQgT0GsAWwiCEYNACA0QasBTQRAQQQhBCA0RQ0BIAcgNEEEEMQBDAELIAcgNEEEIAgQuQEiBA0AQQQgCBDSAQALIAkgBDYCBCAJIE82AgAgCSADIAdrQawBbjYCCCAGQbADaiQAQQAhBCBOQQJHBEAgaUMAAAAAIDhBAXEbIXAgakMAAAAAIDlBAXEbIXEga0MAAAAAIDpBAXEbIXIgbEMAAAAAIE5BAXEbIXNBASEECyApKQIIIVAgKSgCBCEHICkoAgwhA0EAIRYgTUECRwRAIHVDAAAAACAsQQFxGyF0IHdDAACAPyAyQQFxGyFsIHhDAAAAACA2QQFxGyFrIHlDAAAAACA3QQFxGyFqIHpDAACAPyBNQQFxGyFpQQEhFiB2QwAAAAAgGEEBcRshaAsCQCADBEAgByEDDAELQYCAgIB4IQMgBwRAIFCnIAdBrAFsQQQQxAELCyANQUBrIFA3AgAgDUE8aiADNgIAIA1BLGogdDgCACANQShqIGg4AgAgDUEkaiBsOAIAIA1BIGogazgCACANQRxqIGo4AgAgDUEYaiBpOAIAIA1BFGogFjYCACANQRBqIHA4AgAgDUEMaiBxOAIAIA1BCGogcjgCACANQQRqIHM4AgAgDSAENgIAIA1ByABqIHtDAAAAACA7QQFxGzgCACANQTRqQgEgUiBMQYCAgIB4RiIDGzcCACANQTBqQQAgTCADGzYCACANQcwAaiENIA4gH0cNAAsLIEJBCGoiAyANNgIEIAMgEDYCACApQSBqJAAgQigCDCEEICMoAgwhAyAjQoCAgIDAADcCCCAjKAIEIQggI0KEgICAwAA3AgAgAyAIRwRAIAMgCGtB8ABuIQcDQCAIIDFB8ABsaiIJKAJkIgNBgICAgHhGIANFckUEQCAJKAJoIANBARDEAQsgCSgCYCINBEAgCSgCXEH8AWohFgNAIBZBBGsoAgAiA0GCgICAeEggA0VyRQRAIBYoAgAgA0EBEMQBCyAWQYQCaiEWIA1BAWsiDQ0ACwsgCSgCWCIDBEAgCSgCXCADQYQCbEEEEMQBCyAxQQFqIjEgB0cNAAsLIEtB8ABsIghBzABuIQcgECENAkAgS0UNACAIIAdBzABsIgNGDQAgCEHLAE0EQEEEIQ0gCEUNASAQIAhBBBDEAQwBCyAQIAhBBCADELkBIg0NAEEEIAMQ0gEACyBBIA02AgQgQSAHNgIAIEEgBCAQa0HMAG42AghBACEQICMoAgwiAyAjKAIEIgRrQfAAbiEHIAMgBEcEQANAIAQgEEHwAGxqIggoAmQiA0GAgICAeEYgA0VyRQRAIAgoAmggA0EBEMQBCyAIKAJgIjEEQCAIKAJcQfwBaiENA0AgDUEEaygCACIDQYKAgIB4SCADRXJFBEAgDSgCACADQQEQxAELIA1BhAJqIQ0gMUEBayIxDQALCyAIKAJYIgMEQCAIKAJcIANBhAJsQQQQxAELIBBBAWoiECAHRw0ACwsgIygCCCIDBEAgIygCACADQfAAbEEEEMQBCyBCQRBqJAAgJUIBIFMgSkGAgICAeEYiAxs3AgwgJUEAIEogAxs2AgggE0EQaiAlQRhqKQIANwIAIBNBCGogJUEQaikCADcCACATICUpAgg3AgAgE0EYaiETIAJBGGoiAiBARw0ACwsgKkKEgICAwAA3AgAgKkKAgICAwAA3AgggQCACa0EYbiEJIAIgQEcEQANAIAJBDGooAgAiA0GAgICAeEYgA0VyRQRAIAJBEGooAgAgA0EBEMQBCyACEEogAigCACIDBEAgAkEEaigCACADQfAAbEEEEMQBCyACQRhqIQIgCUEBayIJDQALCyAFQdwAaiIsIBU2AgQgLCAoNgIAICwgEyAVa0EYbjYCCCAqKAIMIgIgKigCBCITa0EYbiEDIAIgE0cEQANAIBNBDGooAgAiAkGAgICAeEYgAkVyRQRAIBNBEGooAgAgAkEBEMQBCyATEEogEygCACICBEAgE0EEaigCACACQfAAbEEEEMQBCyATQRhqIRMgA0EBayIDDQALCyAqKAIIIgIEQCAqKAIAIAJBGGxBBBDEAQsgJUEwaiQAIAUgPyAgQSxsajYCuAEgBSAmNgK0ASAFID82ArABIAUgPzYCrAEgBUHoAGoiNiEaIAVBrAFqIgMoAggiDUEsbCIKQRxuIRIgAygCACEHAkAgAygCBCICIAMoAgwiEUYEQCAHIQMMAQsgByEDA0AgAkEkaikCACFQIAJBIGooAgAhDyACQQxqKAIAIQkgAkEIaigCACETIAJBFGooAgAhECACQRBqKAIAIRUgAkEcaigCACEIIAJBGGooAgAhBCADQQxqIAJBBGooAgBBACACKAIAQQFxGzYCACADQRhqIAhBACAEQQFxGzYCACADQRRqIBBBACAVQQFxGzYCACADQRBqIAlBACATQQFxGzYCACADQQRqQgEgUCAPQYCAgIB4RiIEGzcCACADQQAgDyAEGzYCACADQRxqIQMgAkEsaiICIBFHDQALCyARIAJrQSxuIQQgAiARRwRAIAJBJGohAgNAIAJBBGsoAgAiCEGAgICAeEYgCEVyRQRAIAIoAgAgCEEBEMQBCyACQSxqIQIgBEEBayIEDQALCyAHIQICQCANRQ0AIAogEkEcbCIERg0AIApBG00EQEEEIQIgCkUNASAHIApBBBDEAQwBCyAHIApBBCAEELkBIgINAEEEIAQQ0gEACyAaIAI2AgQgGiASNgIAIBogAyAHa0EcbjYCCCAFIEY2AoQBIAUgRzYCgAEgBSBuOAJ8IAUgbzgCeCAFIEg2AnQgBUEAIBwgSUGAgICAeEYiAxsiBzYCWCAFQQEgDCADGyICNgJUIAVBACBJIAMbIhM2AlAgBUEANgK8ASAnIAVBvAFqELoBIAUoAuQBIQMCfwJAAkAgBSgC4AEiCEUNACAFIAM2AsQBIAUgCDYCwAEgBUEgaiACIAcQrwEgBSgCJCEDAkAgBSgCIEEBcQ0AIAVBxAFqIgdB45rAAEEHECUgAxDFAQJ/IEgEQCAFQRhqIQQgBUH4AGohECMAQTBrIgkkACAJQShqIAgQugEgCSgCLCECAkAgCSgCKCIVRQRAQQEhGwwBCyAJIAI2AiwgCSAVNgIoIAlBIGogFSAQKgIAEK0BQQEhGyAJKAIkIQMCQCAJKAIgQQFxDQAgCUEsaiIIQbubwABBDhAlIAMQxQEgCUEYaiAVIBAqAgQQrQEgCSgCHCEDIAkoAhhBAXENACAIQcmbwABBDxAlIAMQxQEgCUEQaiAQKAIIEK4BIAkoAhQhAyAJKAIQQQFxDQAgCEHYm8AAQQMQJSADEMUBIAlBCGogECgCDBCuASAJKAIMIQMgCSgCCEEBcQ0AIAhB25vAAEEGECUgAxDFAUEAIRsMAQsgAkGECEkEQCADIQIMAQsgAhBcIAMhAgsgBCACNgIEIAQgGzYCACAJQTBqJAAgBSgCHCEDIAUoAhgMAQtBgQhBgAggCC0AABshA0EAC0EBcQ0AIAdB6prAAEEGECUgAxDFASMAQdAAayIUJAAgBUEwaiICKAIAIg4pAwAhUCAUQThqIQQgAigCDCEWAn8gBUHAAWoiCigCACIHLQABRQRAEAUhfBA2IgIgfCYBQQAMAQsQuAEhAkEBCyEDIAQgBzYCECAEQQA2AgggBCACNgIEIAQgAzYCAAJ/IBQoAjhBAkYEQCAUKAI8IQNBAQwBCyAUQTBqIhogFEHIAGoiESgCACISNgIAIBRBKGoiDyAUQUBrIg0pAgA3AwAgFCAUKQI4IlE3AyAgFgRAIBRBIGpBBHIhFSAOQQhqIQkgFCgCKEEARyEEIFBCf4VCgIGChIiQoMCAf4MhUCAUKAIkISIgFCgCLCECIFGnQQFxIQgDQCACIQcgUFAEQANAIA5BwAFrIQ4gCSkDACAJQQhqIQlCgIGChIiQoMCAf4MiUEKAgYKEiJCgwIB/UQ0ACyBQQoCBgoSIkKDAgH+FIVALIA4gUHqnQQN2QWhsaiICQQRrKAIAIRAgAkEIaygCACEbIBRBGGogAkEUaygCACACQRBrKAIAEK8BIBQoAhwhAgJAAkACQCAUKAIYQQFxBEAgAiEDDAELIAdBgwhLIARxBEAgBxBcCyAUQQA2AiggFCACNgIsIBRBOGogEiAQEJ8BIBQoAjwhAwJAAkACQAJAIBQoAjgEQAJAIBAEQCAUKAJAIQQDQCAUQRBqIgcgGy0AALgQtAE2AgQgB0EANgIAIBQoAhQhByAUKAIQQQFxDQIgAyAEIAcQswEgBEEBaiEEIBtBAWohGyAQQQFrIhANAAsLIAhFDQQgFCACNgI4IBRBOGooAgAlARAKDQcCf0EzQQEQzgEiBARAIARBsKDAAEEz/AoAACAEQTMQ1wEgBEEzQQEQxAEMAQtBAUEzEKoBAAshCCACQYQITwRAIAIQXAsgA0GDCE0NBSADIQkgCCEDDAILIANBhAhPBEAgAxBcCyAHIQMLIAJBgwhNDQEgAiEJCyAJEFwLQQAhBCACIQcMAgsgIiUBIAIlASADJQEQAiF8EDYiByB8JgEgB0GECE8EQCAHEFwLIANBhAhPBEAgAxBcCyACQYQISQ0DIAIQXAwDC0EAIQQgAiEHIAghAwsgIkGECE8EQCAiEFwLIAdBgwhLIARxBEAgBxBcC0EBDAQLIBUgAiADEMUBCyBQQgF9IFCDIVBBACEEIBZBAWsiFg0ACwsgESAaKAIANgIAIA0gDykDADcDACAUIBQpAyA3AzggFEEIaiEHIBRBOGoiAigCBCEDAkAgAigCCEUNACACKAIMIgJBhAhJDQAgAhBcCyAHIAM2AgQgB0EANgIAIBQoAgwhAyAUKAIIC0EBIQlBAXFFBEAgCkEEakHwmsAAQQYQJSADEMUBQQAhCQsgBUEQaiICIAM2AgQgAiAJNgIAIBRB0ABqJAAgBSgCEEEBcQRAIAUoAhQhAwwBCyAFQQhqITcjAEEgayImJAAgLCgCBCEOQQEhCSAmQRRqIAVBwAFqIkMoAgAgLCgCCCICEJ8BICYoAhghAwJAICYoAhQiREUNAAJAIAIEQCACQRhsIQkgJigCHCEbA0AgJkEIaiE4IwBBIGsiICQAICBBGGogRBC6ASAgKAIcIQICQCAgKAIYIgdFBEBBASENDAELICAgAjYCHCAgIAc2AhggIEEQaiAOKAIEIA4oAggQrwEgICgCFCEHICAoAhBBAXFFBEAgIEEcakHum8AAQQkQJSAHEMUBICBBCGohOSMAQSBrIickACAOQQxqIgIoAgQhD0EBIRYgJ0EUaiAgQRhqIhQoAgAgAigCCCICEJ8BICcoAhghDQJAICcoAhQiIkUNAAJAIAIEQCACQcwAbCEWICcoAhwhLQNAICdBCGohOkEAIQcjAEEwayIcJAAgHEEoaiAiELoBIBwoAiwhBAJAIBwoAigiGkUEQEEBIRUMAQsgHCAENgIsIBwgGjYCKCAcQSBqIBogDyoCSBCtASAcKAIkIQICQCAcKAIgQQFxDQAgHEEsaiIQQbSawABBBRAlIAIQxQECfyAPKAIAQQFGBEAgHEEYaiEIIA9BBGohEiMAQTBrIgokACAKQShqIBoQugEgCigCLCEHAkAgCigCKCIRRQRAQQEhDAwBCyAKIAc2AiwgCiARNgIoIApBIGogESASKgIAEK0BQQEhDCAKKAIkIQICQCAKKAIgQQFxDQAgCkEsaiIVQcOZwABBARAlIAIQxQEgCkEYaiARIBIqAgQQrQEgCigCHCECIAooAhhBAXENACAVQcSZwABBARAlIAIQxQEgCkEQaiARIBIqAggQrQEgCigCFCECIAooAhBBAXENACAVQcWZwABBBRAlIAIQxQEgCkEIaiARIBIqAgwQrQEgCigCDCECIAooAghBAXENACAVQcqZwABBBhAlIAIQxQFBACEMDAELIAdBhAhJBEAgAiEHDAELIAcQXCACIQcLIAggBzYCBCAIIAw2AgAgCkEwaiQAIBwoAhghByAcKAIcDAELQYEIQYAIIBotAAAbCyECIAdBAXENACAQQbmawABBBhAlIAIQxQECfyAPKAIUQQFGBEAgHEEQaiAPQRhqIBoQMSAcKAIQIQcgHCgCFAwBC0EAIQdBgQhBgAggGi0AABsLIQIgB0EBcQ0AIBBBv5rAAEEJECUgAhDFASAcQQhqIA8oAjQgDygCOBCvASAcKAIMIQIgHCgCCEEBcQ0AIBBByJrAAEEJECUgAhDFASMAQSBrIigkACAcQShqIgooAgAhBAJAAkAgD0E8aiICKAIAQYCAgIB4RwRAIAIoAgQhEkEBIQcgKEEUaiAEIAIoAggiAhCfASAoKAIYIRUgKCgCFCIaRQ0CIAJFDQEgAkGsAWwhByAoKAIcIS4DQAJAIChBCGohO0EAIQQjAEFAaiIZJAAgGUE4aiAaELoBIBkoAjwhCAJAIBkoAjgiH0UEQEEBIQQMAQsgGSAINgI8IBkgHzYCOCAZQTBqIBIoAoABIBIoAoQBEK8BIBkoAjQhAgJAIBkoAjBBAXENACAZQTxqIjJBj5vAAEEEECUgAhDFAQJ/IBIoAogBQYCAgIB4RwRAIBlBKGogEigCjAEgEigCkAEQrwEgGSgCKCEEIBkoAiwMAQtBgQhBgAggHy0AABsLIQIgBEEBcQ0AIDJBk5vAAEEJECUgAhDFAQJ/IBIoAgBBAUYEQCAZQSBqIRAgEkEEaiEhIwBBMGsiDCQAIAxBKGogHxC6ASAMKAIsIQQCQCAMKAIoIhhFBEBBASEvDAELIAwgBDYCLCAMIBg2AiggDEEgaiAYICEqAgAQrQFBASEvIAwoAiQhAgJAIAwoAiBBAXENACAMQSxqIhFBw5nAAEEBECUgAhDFASAMQRhqIBggISoCBBCtASAMKAIcIQIgDCgCGEEBcQ0AIBFBxJnAAEEBECUgAhDFASAMQRBqIBggISoCCBCtASAMKAIUIQIgDCgCEEEBcQ0AIBFBxZnAAEEFECUgAhDFASAMQQhqIBggISoCDBCtASAMKAIMIQIgDCgCCEEBcQ0AIBFBypnAAEEGECUgAhDFASAMIBggISoCEBCtASAMKAIEIQIgDCgCAEEBcQ0AIBFB0JnAAEENECUgAhDFAUEAIS8MAQsgBEGECEkEQCACIQQMAQsgBBBcIAIhBAsgECAENgIEIBAgLzYCACAMQTBqJAAgGSgCICEEIBkoAiQMAQtBACEEQYEIQYAIIB8tAAAbCyECIARBAXENACAyQbmWwABBBBAlIAIQxQECfyASKAIYQQFGBEAgGUEYaiEQIBJBHGohISMAQTBrIgwkACAMQShqIB8QugEgDCgCLCEEAkAgDCgCKCIYRQRAQQEhJAwBCyAMIAQ2AiwgDCAYNgIoIAxBIGogGCAhKgIAEK0BQQEhJCAMKAIkIQICQCAMKAIgQQFxDQAgDEEsaiIRQcOZwABBARAlIAIQxQEgDEEYaiAYICEqAgQQrQEgDCgCHCECIAwoAhhBAXENACARQcSZwABBARAlIAIQxQEgDEEQaiAYICEqAggQrQEgDCgCFCECIAwoAhBBAXENACARQYWcwABBCBAlIAIQxQEgDEEIaiAYICEqAgwQrQEgDCgCDCECIAwoAghBAXENACARQY2cwABBCBAlIAIQxQFBACEkDAELIARBhAhJBEAgAiEEDAELIAQQXCACIQQLIBAgBDYCBCAQICQ2AgAgDEEwaiQAIBkoAhghBCAZKAIcDAELQQAhBEGBCEGACCAfLQAAGwshAiAEQQFxDQAgMkG9lsAAQQcQJSACEMUBIBlBEGohISASQSxqIRhBACEMIwBBQGoiFyQAIBdBOGogHxC6ASAXKAI8IRACQCAXKAI4IhFFBEBBASEEDAELIBcgEDYCPCAXIBE2AjgCfyAYKAIAQQFGBEAgF0EwaiAYQQRqIBEQOiAXKAIwIQwgFygCNAwBC0GBCEGACCARLQAAGwshAgJAIAxBAXENACAXQTxqIgRB/ZbAAEEEECUgAhDFAQJ/IBgoAhRBAUYEQCAXQShqIBhBGGogERA6IBcoAighDCAXKAIsDAELQQAhDEGBCEGACCARLQAAGwshAiAMQQFxDQAgBEGBl8AAQQYQJSACEMUBIBdBIGogESAYKgJMEK0BIBcoAiQhAiAXKAIgQQFxDQAgBEGHl8AAQQwQJSACEMUBAn8gGCgCKEEBRgRAIBdBGGogGCgCLBCuASAXKAIYIQwgFygCHAwBC0EAIQxBgQhBgAggES0AABsLIQIgDEEBcQ0AIARBk5fAAEEIECUgAhDFAQJ/IBgoAjBBAUYEQCAXQRBqIBgoAjQQrgEgFygCFCECIBcoAhAMAQtBgQhBgAggES0AABshAkEAC0EBcQ0AIARBm5fAAEEJECUgAhDFASMAQRBrIhEkACAXQThqIgQoAgAhEEEBIQwCfyAYQThqIgIoAgBBAUYEQCARQQhqIBAgAioCBBCtASARKAIMIQIgESgCCAwBC0GBCEGACCAQLQAAGyECQQALQQFxRQRAIARBBGpBpJfAAEELECUgAhDFAUEAIQwLIBdBCGoiBCACNgIEIAQgDDYCACARQRBqJAAgFygCCEEBcQRAIBcoAgwhAiAXKAI8IRAMAQsjAEEgayIfJAAgF0E4aiIRKAIAIQQCQAJAIBhBQGsiAigCAEGAgICAeEcEQCACKAIEIQxBASEYIB9BFGogBCACKAIIIgIQnwEgHygCGCEEIB8oAhQiEEUNAiACRQ0BIAJBAnQhGCAfKAIcISQDQAJAIB9BCGogECAMKgIAEK0BIB8oAgwhAiAfKAIIQQFxDQAgBCAkIAIQswEgJEEBaiEkIAxBBGohDCAYQQRrIhgNAQwDCwtBASEYIARBhAhJBEAgAiEEDAMLIAQQXCACIQQMAgtBgQhBgAggBC0AABshBAsgEUEEakGvl8AAQQkQJSAEEMUBQQAhGAsgFyAENgIEIBcgGDYCACAfQSBqJAAgFygCPCEQIBcoAgBBAXFFBEBBACEEDAILIBcoAgQhAgtBASEEIBBBhAhJBEAgAiEQDAELIBAQXCACIRALICEgEDYCBCAhIAQ2AgAgF0FAayQAIBkoAhQhAiAZKAIQQQFxDQAgMkGcm8AAQQUQJSACEMUBIwBBEGsiECQAIBBBCGogEkGUAWogGUE4aiICKAIAEDFBASEEIBAoAgwhCCAQKAIIQQFxRQRAIAJBBGpBv5rAAEEJECUgCBDFAUEAIQQLIBlBCGoiAiAINgIEIAIgBDYCACAQQRBqJAAgGSgCPCEIIBkoAghBAXFFBEBBACEEDAILIBkoAgwhAgtBASEEIAhBhAhJBEAgAiEIDAELIAgQXCACIQgLIDsgCDYCBCA7IAQ2AgAgGUFAayQAICgoAgwhAiAoKAIIQQFxDQAgFSAuIAIQswEgLkEBaiEuIBJBrAFqIRIgB0GsAWsiBw0BDAMLC0EBIQcgFUGECEkEQCACIRUMAwsgFRBcIAIhFQwCC0GBCEGACCAELQAAGyEVCyAKQQRqQdGawABBBhAlIBUQxQFBACEHCyAcIBU2AgQgHCAHNgIAIChBIGokACAcKAIsIQQgHCgCAEEBcUUEQEEAIRUMAgsgHCgCBCECC0EBIRUgBEGECEkEQCACIQQMAQsgBBBcIAIhBAsgOiAENgIEIDogFTYCACAcQTBqJAAgJygCDCECICcoAghBAXENAiANIC0gAhCzASAtQQFqIS0gD0HMAGohDyAWQcwAayIWDQALCyAUQQRqQdubwABBBhAlIA0QxQFBACEWDAELQQEhFiANQYQITwRAIA0QXAsgAiENCyA5IA02AgQgOSAWNgIAICdBIGokACAgKAIcIQIgICgCCEEBcUUEQEEAIQ0MAgsgICgCDCEHC0EBIQ0gAkGECEkEQCAHIQIMAQsgAhBcIAchAgsgOCACNgIEIDggDTYCACAgQSBqJAAgJigCDCECICYoAghBAXENAiADIBsgAhCzASAbQQFqIRsgDkEYaiEOIAlBGGsiCQ0ACwsgQ0EEakH2msAAQQcQJSADEMUBQQAhCQwBC0EBIQkgA0GECE8EQCADEFwLIAIhAwsgNyADNgIEIDcgCTYCACAmQSBqJAAgBSgCCEEBcQRAIAUoAgwhAwwBCyMAQSBrIg0kACA2KAIEIQ5BASEJIA1BFGogBUHAAWoiCCgCACA2KAIIIgIQnwEgDSgCGCEDAkAgDSgCFCIERQ0AAkAgAgRAIAJBHGwhCSANKAIcIRsDQCANQQhqIRUjAEEwayIPJAAgD0EoaiAEELoBIA8oAiwhBwJAIA8oAigiAkUEQEEBIRYMAQsgDyAHNgIsIA8gAjYCKCAPQSBqIA4oAgQgDigCCBCvAUEBIRYgDygCJCECAkAgDygCIEEBcQ0AIA9BLGoiEEHpmcAAQQkQJSACEMUBIA9BGGogDigCDBCuASAPKAIcIQIgDygCGEEBcQ0AIBBB8pnAAEELECUgAhDFASAPQRBqIA4oAhAQrgEgDygCFCECIA8oAhBBAXENACAQQf2ZwABBCRAlIAIQxQEgD0EIaiAOKAIUEK4BIA8oAgwhAiAPKAIIQQFxDQAgEEGGmsAAQQoQJSACEMUBIA8gDigCGBCuASAPKAIEIQIgDygCAEEBcQ0AIBBBkJrAAEEKECUgAhDFAUEAIRYMAQsgB0GECEkEQCACIQcMAQsgBxBcIAIhBwsgFSAHNgIEIBUgFjYCACAPQTBqJAAgDSgCDCECIA0oAghBAXENAiADIBsgAhCzASAbQQFqIRsgDkEcaiEOIAlBHGsiCQ0ACwsgCEEEakH9msAAQQYQJSADEMUBQQAhCQwBC0EBIQkgA0GECE8EQCADEFwLIAIhAwsgBSADNgIEIAUgCTYCACANQSBqJAAgBSgCAEEBcUUNAiAFKAIEIQMLIAUoAsQBIgJBhAhJDQAgAhBcCyAFIAM2ArwBIAUgBUG8AWqtQoCAgIAghDcDwAEgBUHgAWpBhITAACAFQcABahAvIAUoAuQBIgMgBSgC6AEQ1wEhByAFKALgASICBEAgAyACQQEQxAELIAUoArwBIgJBhAhPBEAgAhBcCyAFKAJQIRNBAQwBCyAFKALEASEHQQALIRsgEwRAIAUoAlQgE0EBEMQBCyAFQTBqEEJBACEJICwoAggiEARAICwoAgQhFQNAIBUgCUEYbGoiDSgCACICBEAgDSgCBCACQQEQxAELIA0oAhQiCARAIA0oAhAhA0EAIQ4DQCADIA5BzABsaiIPKAIwIgIEQCAPKAI0IAJBARDEAQsCQCAPKAI8IhNBgICAgHhGDQAgDygCRCIEBEAgDygCQEHsAGohEwNAIBNBEGooAgAiAgRAIBNBFGooAgAgAkEBEMQBCyATQRxqKAIAIgJBgICAgHhGIAJFckUEQCATQSBqKAIAIAJBARDEAQsgEygCACICQYCAgIB4RiACRXJFBEAgE0EEaigCACACQQJ0QQQQxAELIBNBrAFqIRMgBEEBayIEDQALIA8oAjwhEwsgE0UNACAPKAJAIBNBrAFsQQQQxAELIA5BAWoiDiAIRw0ACwsgDSgCDCICBEAgDSgCECACQcwAbEEEEMQBCyAJQQFqIgkgEEcNAAsLIAUoAlwiAgRAIAUoAmAgAkEYbEEEEMQBCyAFKAJwIhMEQCAFKAJsIQMDQCADKAIAIgIEQCADQQRqKAIAIAJBARDEAQsgA0EcaiEDIBNBAWsiEw0ACwsgBSgCaCICRQ0AIAUoAmwgAkEcbEEEEMQBCyBFIAc2AgQgRSAbNgIAIAVBkAJqJAAgNSgCDCEDIDUoAgghAiABBEAgACABQQEQxAELIDAgAjYCCCAwIANBACACQQFxIgAbNgIEIDBBACADIAAbNgIAIDVBEGokACAwKAIAIDAoAgQgMCgCCCAwQRBqJAAL3RUCGX8MfCMAQRBrIhEkACMAQRBrIg8kACAPQQRqIRMjAEHQAGsiByQAAkAgAUEBcUEBIAMbBEAgE0EANgIIIBNCgICAgMAANwIADAELIAdBADYCCCAHQoCAgIDAADcCACAHQQA2AiwgB0KAgICAgAE3AiQgB0IINwIcIAdCADcCFCAHQoCAgICAATcCDCAHQQA2AjggB0KAgICAwAA3AjAgAUEBdiEaA0AgAiASQQJ0aigCACEUAkAgGiIEIAMgEkEBaiISSwRAIAIgEkECdGooAgAhBAsgBEkgBCAUTXIgBCAUa0ECTXINACAEQQF0IgQgFEEBdCIFSSABIARJckUEQCAHQoCAgIAgNwJIIAcgBCAFa0H+////AHEiBDYCQCAHIAAgBUEDdGoiBTYCPCAHIAUgBEEDdGo2AkQgB0EwaiEVQQAhBkQAAAAAAAAAACEeRAAAAAAAAAAAIR1EAAAAAAAAAAAhH0QAAAAAAAAAACEgQQAhECMAQSBrIhskACAHQQxqIghBADYCCAJAAn8CfwJAIAdBPGoiBCgCECIJBEAgBCgCBCIKIAluIgUgCCgCAEsEQCAIQQAgBUEIQRAQTCAIKAIIIQYLIAkgCk0EQCAJQQFGDQIgCUEDdCELIAgoAgQgBkEEdGohBSAEKAIAIQQDQCAFIAQrAwA5AwAgBUEIaiAEQQhqKwMAOQMAIAQgC2ohBCAFQRBqIQUgBkEBaiEGIAkgCiAJayIKTQ0ACwsgFUEANgIIIAggBjYCCCAGQQNJDQQgFSgCACAGTQRAIBVBACAGQQFqQQRBBBBMC0EAIQQgCEEANgIUIAhBDGohGCAGQQF2QQNsIgYgCCgCDCIFSwRAIBhBACAGQQhBKBBMIAgoAgwhBSAIKAIUIQQLIAQgBUYEQCAYEF4LIAgoAhAgBEEobGoiBUIANwMQIAVCgICAgICAgPj/ADcDCCAFQoCAgICAgID4/wA3AwAgBUKogICAgAU3AyAgBUEYakIANwMAIAggBEEBajYCFCAIKAIIDAILQeDqwABBM0HgocAAEIIBAAtBAUEBQdCpwAAQcwALIhYhBEEAIQUjAEEgayINJAACQCAIKAIIIgYgBE8EQCAEQQFrIgkgBk8NAQJAIARFDQAgCCgCBCIKIARBBHRqIQYgCiAJQQR0aiIFKwMIISEgBSsDACEiIAohBQNAIB4gIiAFKwMAIiKhICEgBUEIaisDACIhoKKgIR4gBUEQaiIFIAZHDQALAkAgHkQAAAAAAAAAAGRFBEAgBEEEdEEQayIEIQ4gCEEMaiEQIAQgCmohCiAIKAIUIgtBKGxBKGshBUEAIQQDQCANQRhqIhcgCkEIaikDADcDACANIAopAwA3AxAgBUEoaiIJIQwgCSEGIAQEQCAIKAIQIgwgBGoiGSgCJCEGIBkgCTYCJCAGIAxqIAk2AiAgBCEMCyAQKAIAIAtGBEAgEBBeCyAIKAIQIAVqIgRBMGogFykDADcDACAEQShqIA0pAxA3AwAgBEHMAGogBjYCACAEQcgAaiAMNgIAIARBxABqQQA2AgAgBEE8akIANwIAIARBOGogDkEEdjYCACAIIAtBAWoiCzYCFCAKQRBrIQogBUEoaiEFIAkhBCAOQRBrIg5BcEcNAAsMAQsgBEEEdCEMIAhBDGohFyAIKAIUIg5BKGxBKGshBUEAIQQDQCANQQhqIhkgCkEIaikDADcDACANIAopAwA3AwAgBUEoaiIJIQsgCSEGIAQEQCAIKAIQIgsgBGoiHCgCJCEGIBwgCTYCJCAGIAtqIAk2AiAgBCELCyAXKAIAIA5GBEAgFxBeCyAKQRBqIQogCCgCECAFaiIEQTBqIBkpAwA3AwAgBEEoaiANKQMANwMAIARBzABqIAY2AgAgBEHIAGogCzYCACAEQcQAakEANgIAIARBPGpCADcCACAEQThqIBA2AgAgCCAOQQFqIg42AhQgEEEBaiEQIAVBKGohBSAJIQQgDEEQayIMDQALCyAIKAIQIgkgBWoiBisDACAJIAYoAiQiBGoiCysDAGINACAGKwMIIAsrAwhiDQAgBigCHCEFIAYoAhghCiAJIAYoAiAiBmoiDCAENgIkIAoEQCAMIAkgCmogBiAKRhsgBTYCHAsgCyAGNgIgIAUEQCALIAUgCWogBCAFRhsgCjYCGAsgBCEFCyANQSBqJAAgBQwCC0EAIAQgBkGgncAAEDkACyAJIAZB8JzAABBzAAsiCUUNACAIKAIQIAlqIgQoAiQgBCgCIEYNAAJAIAgoAggiBEHQAE0NACAEIBZBAWtNBEBBASAWIARBkJ3AABA5AAsgCCgCBCIGKwMAIR0gBisDCCEeAkAgFkEBRgRAIB0hHyAeISAMAQsgBkEQaiEEAn8gFkEEdCIMQSBrIgtBMHFBMEYEQCAEIQUgHiEgIB0hHyAGDAELQQAgC0EEdkEBakEDcWshCiAeISAgHSEfA0AgBEEIaisDACEhIB0gBCsDACIiEKMBIR0gHyAiEKIBIR8gHiAhEKMBIR4gICAhEKIBISAgBEEQaiIFIQQgCkEBaiIKDQALIAVBEGsLIQQgC0EwSQ0AIAYgDGohCgNAIAVBMGoiBisDACEhIAVBIGorAwAhIiAFQRBqKwMAISMgBUE4aisDACEkIAVBKGorAwAhJSAFQRhqKwMAISYgBSsDACEnIB4gBCsDGCIoEKMBICYQowEgJRCjASAkEKMBIR4gHSAnEKMBICMQowEgIhCjASAhEKMBIR0gICAoEKIBICYQogEgJRCiASAkEKIBISAgHyAnEKIBICMQogEgIhCiASAhEKIBIR8gBiEEIAVBQGsiBSAKRw0ACwsgHSAfoSAeICChEKMBIh1EAAAAAAAAAABhDQBEAAAAAMD/30AgHaMhHQsgGCAJIBUgHyAgIB0QEgsgG0EgaiQAIAcoAjgiBCAHKAIAIAcoAggiBWtLBEAgByAFIARBBEEEEEwgBygCOCEECyAERQ0BIARBAnQhCiAHKAI0IQQgBygCCCIGQQJ0IQkDQCAEKAIAIBRqIQsgBygCACAGRgRAIwBBEGsiBSQAIAVBBGogBygCACIMIAcoAgRBBCAMQQF0IgwgDEEETRsiDEEEQQQQSyAFKAIEQQFGBEAgBSgCCCAFKAIMEKoBAAsgBSgCCCEIIAcgDDYCACAHIAg2AgQgBUEQaiQACyAEQQRqIQQgBygCBCAJaiALNgIAIAcgBkEBaiIGNgIIIAlBBGohCSAKQQRrIgoNAAsMAQsgBSAEIAFBwKnAABA5AAsgAyASRw0ACyATIAcpAgA3AgAgE0EIaiAHQQhqKAIANgIAIAcoAjAiBARAIAcoAjQgBEECdEEEEMQBCyAHKAIMIgQEQCAHKAIQIARBBHRBCBDEAQsgBygCGCIEBEAgBygCHCAEQShsQQgQxAELIAcoAiQiBEUNACAHKAIoIARBBHRBCBDEAQsgB0HQAGokACADBEAgAiADQQJ0QQQQxAELIAEEQCAAIAFBA3RBCBDEAQsCQCAPKAIEIgEgDygCDCIATQRAIA8oAgghAQwBCyABQQJ0IQIgDygCCCEDIABFBEBBBCEBIAMgAkEEEMQBDAELIAMgAkEEIABBAnQiAhC5ASIBDQBBBCACEKoBAAsgESAANgIEIBEgATYCACAPQRBqJAAgESgCACARKAIEIBFBEGokAAv3EwIRfw19EDYiEiAEJgEgAyEIEDYiAyAHJgEgBiEMIwBBIGsiDyQAIA8gEjYCECAPIAg2AgwgDyACNgIIIA8gAzYCHCAPIAw2AhggDyAFNgIUAn8gACENIAIhCiAFIQYCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAMQQZuIhMgCEEkbiIUIAFBDW4iESARIBRLGyIRIBEgE0sbIhUEQCAVQSRsIRZBDCABIAFBDE0bQQ1uQSRsIRdBIyAIIAhBI00bQSRuQSRsIRhBBSAMIAxBBU0bQQZuQQ1sIRNBAyEQA0AgASALTQ0DIAtBAWogAU8NBCALQQJqIAFPDQUgC0EDaiABTw0GIAtBBGogAU8NByALQQVqIAFPDQggC0EGaiABTw0JIAtBB2ogAU8NCiALQQhqIAFPDQsgC0EJaiABTw0MIAtBCmogAU8NDSALQQtqIAFPDQ4gCSAXRg0PIAggCU0NECANKgIAIR4gDUEEaioCACEfIA1BCGoqAgAhGSANQQxqKgIAIRogDUEQaioCACEkIA1BFGoqAgAhJSANQRxqKgIAIRsgDUEgaioCACEcIA1BJGoqAgAhICANQShqKgIAISEgDUEsaioCACEiIA1BMGoqAgAhIyAKIA1BGGoqAgAiHTgCACAJQQFqIAhPDREgCkEEaiAbOAIAIAlBAmogCE8NEiAKQQhqQQA2AgAgCUEDaiAITw0TIApBDGpBgICA/AM2AgAgCUEEaiAITw0UIApBEGpBgICA/AM2AgAgCUEFaiAITw0VIApBFGpBgICA/AM2AgAgCUEGaiAITw0WIApBGGogHDgCACAJQQdqIAhPDRcgCkEcaiAgOAIAIAlBCGogCE8NGCAKQSBqICE4AgAgCUEJaiAITw0ZIApBJGogHiAZlCIZIB2SOAIAIAlBCmogCE8NGiAKQShqIB4gGpQiGiAbkjgCACAJQQtqIAhPDRsgCkEsakEANgIAIAlBDGogCE8NHCAKQTBqQYCAgPwDNgIAIAlBDWogCE8NHSAKQTRqQYCAgPwDNgIAIAlBDmogCE8NHiAKQThqQYCAgPwDNgIAIAlBD2ogCE8NHyAKQTxqIBw4AgAgCUEQaiAITw0gIApBQGsgIjgCACAJQRFqIAhPDSEgCkHEAGogITgCACAJQRJqIAhPDSIgCkHIAGogGSAfICSUIhmSIB2SOAIAIAlBE2ogCE8NIyAKQcwAaiAaIB8gJZQiGpIgG5I4AgAgCUEUaiAITw0kIApB0ABqQQA2AgAgCUEVaiAITw0lIApB1ABqQYCAgPwDNgIAIAlBFmogCE8NJiAKQdgAakGAgID8AzYCACAJQRdqIAhPDScgCkHcAGpBgICA/AM2AgAgCUEYaiAITw0oIApB4ABqIBw4AgAgCUEZaiAITw0pIApB5ABqICI4AgAgCUEaaiAITw0qIApB6ABqICM4AgAgCUEbaiAITw0rIApB7ABqIBkgHZI4AgAgCUEcaiAITw0sIApB8ABqIBogG5I4AgAgCUEdaiAITw0tIApB9ABqQQA2AgAgCUEeaiAITw0uIApB+ABqQYCAgPwDNgIAIAlBH2ogCE8NLyAKQfwAakGAgID8AzYCACAJQSBqIAhPDTAgCkGAAWpBgICA/AM2AgAgCUEhaiAITw0xIApBhAFqIBw4AgAgCUEiaiAITw0yIApBiAFqICA4AgAgCSAYRg0zIApBjAFqICM4AgAgDCAOTQ00IAYgEEEDayIUNgIAIA5BAWogDE8NNSAGQQRqIBBBAms2AgAgDkECaiAMTw02IAZBCGogEEEBayIRNgIAIA5BA2ogDE8NNyAGQQxqIBQ2AgAgDkEEaiAMTw04IAZBEGogETYCACALIBNGDQIgBkEUaiAQNgIAIA1BNGohDSAKQZABaiEKIBBBBGohECALQQ1qIQsgBkEYaiEGIA5BBmohDiAWIAlBJGoiCUcNAAsLIBUMNwsgDkEFaiAMQYCpwAAQcwALIAsgAUGgosAAEHMACyALQQFqIAFBsKLAABBzAAsgC0ECaiABQcCiwAAQcwALIAtBA2ogAUHQosAAEHMACyALQQRqIAFB4KLAABBzAAsgC0EFaiABQfCiwAAQcwALIAtBBmogAUGAo8AAEHMACyALQQdqIAFBkKPAABBzAAsgC0EIaiABQaCjwAAQcwALIAtBCWogAUGwo8AAEHMACyALQQpqIAFBwKPAABBzAAsgC0ELaiABQdCjwAAQcwALIAtBDGogAUHgo8AAEHMACyAJIAhB8KPAABBzAAsgCUEBaiAIQYCkwAAQcwALIAlBAmogCEGQpMAAEHMACyAJQQNqIAhBoKTAABBzAAsgCUEEaiAIQbCkwAAQcwALIAlBBWogCEHApMAAEHMACyAJQQZqIAhB0KTAABBzAAsgCUEHaiAIQeCkwAAQcwALIAlBCGogCEHwpMAAEHMACyAJQQlqIAhBgKXAABBzAAsgCUEKaiAIQZClwAAQcwALIAlBC2ogCEGgpcAAEHMACyAJQQxqIAhBsKXAABBzAAsgCUENaiAIQcClwAAQcwALIAlBDmogCEHQpcAAEHMACyAJQQ9qIAhB4KXAABBzAAsgCUEQaiAIQfClwAAQcwALIAlBEWogCEGApsAAEHMACyAJQRJqIAhBkKbAABBzAAsgCUETaiAIQaCmwAAQcwALIAlBFGogCEGwpsAAEHMACyAJQRVqIAhBwKbAABBzAAsgCUEWaiAIQdCmwAAQcwALIAlBF2ogCEHgpsAAEHMACyAJQRhqIAhB8KbAABBzAAsgCUEZaiAIQYCnwAAQcwALIAlBGmogCEGQp8AAEHMACyAJQRtqIAhBoKfAABBzAAsgCUEcaiAIQbCnwAAQcwALIAlBHWogCEHAp8AAEHMACyAJQR5qIAhB0KfAABBzAAsgCUEfaiAIQeCnwAAQcwALIAlBIGogCEHwp8AAEHMACyAJQSFqIAhBgKjAABBzAAsgCUEiaiAIQZCowAAQcwALIAlBI2ogCEGgqMAAEHMACyAOIAxBsKjAABBzAAsgDkEBaiAMQcCowAAQcwALIA5BAmogDEHQqMAAEHMACyAOQQNqIAxB4KjAABBzAAsgDkEEaiAMQfCowAAQcwALIAUgDEECdCIGIA9BHGoQyQEgDARAIAUgBkEEEMQBCyADQYQITwRAIAMQXAsgAiAIQQJ0IgMgD0EQahDJASAIBEAgAiADQQQQxAELIBJBhAhPBEAgEhBcCyABBEAgACABQQJ0QQQQxAELIA9BIGokAAseACAARQRAENABAAsgACACIAMgBCAFIAEoAhARDQALIAEBf0EBIQEgACgCACIAQQFxBH8gAQUgACgCCEEBRgsLHAAgAEUEQBDQAQALIAAgAiADIAQgASgCEBEKAAscACAARQRAENABAAsgACACIAMgBCABKAIQEQEACxwAIABFBEAQ0AEACyAAIAIgAyAEIAEoAhARLQALHAAgAEUEQBDQAQALIAAgAiADIAQgASgCEBEuAAscACAARQRAENABAAsgACACIAMgBCABKAIQES8ACygBAX8gACgCACIBQYCAgIB4ckGAgICAeEcEQCAAKAIEIAFBARDEAQsLCgBBCCAAENIBAAsaACAARQRAENABAAsgACACIAMgASgCEBECAAsaACAARQRAENABAAsgACACIAMgASgCEBEEAAsYACAARQRAENABAAsgACACIAEoAhARAAALIQAgAEEANgIMIAAgAzYCCCAAIAI2AgQgAEH4scAANgIACxIAQfjQwABBOUGU0cAAEIIBAAslAQFvEAYhAxA2IgIgAyYBIABBADYCCCAAIAI2AgQgACABNgIACxoBAX8gACgCACIBBEAgACgCBCABQQEQxAELCxQAIAAgACABIAAgAV0bIAEgAVwbCxQAIAAgACABIAAgAWMbIAEgAWIbCxQAIAEgASAAIAAgAWMbIAAgAGIbCxQAIAEgASAAIAAgAV0bIAAgAFwbCx0AIAEgAC0AAEECdCIAKALMrEAgACgCtKxAELIBCx0AIAEgAC0AAEECdCIAKAKArkAgACgC6K1AELIBCx8AIABBCGpBxLTAACkCADcCACAAQby0wAApAgA3AgALHwAgAEEIakGcxsAAKQIANwIAIABBlMbAACkCADcCAAsfACAAQQhqQazGwAApAgA3AgAgAEGkxsAAKQIANwIACx8AIAAEQCAAIAEQ0gEAC0G80sAAQSNB0NLAABCCAQALEgAgACABQQF0QQFyIAIQggEACxYBAW8gACABEA4hAhA2IgAgAiYBIAALFAAgACACuxC0ATYCBCAAQQA2AgALFAAgACABtxC0ATYCBCAAQQA2AgALFQAgACABIAIQrAE2AgQgAEEANgIAC9MLAQ5/IAAhDyMAQRBrIggkACABKAIQIQcgBkH/AXFBAnQoAoi1QCEKIwBBEGsiBiQAAkACQAJAAkACQAJA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aW5kZXggwCIgb3V0IG9mIHJhbmdlIGZvciBzbGljZSBvZiBsZW5ndGggwAAQcmFuZ2UgZW5kIGluZGV4IMAiIG91dCBvZiByYW5nZSBmb3Igc2xpY2Ugb2YgbGVuZ3RoIMAAIWNhbm5vdCBhZHZhbmNlIHBhc3QgYHJlbWFpbmluZ2A6IMAEIDw9IMAAE2ludmFsaWQga2V5IHZhbHVlOiDAABlpbnZhbGlkIHdpcmUgdHlwZSB2YWx1ZTogwAASU2VyaWFsaXplIGZhaWxlZDogwAAQSW5mbGF0ZSBmYWlsZWQ6IMAAGFByb3RvYnVmIGRlY29kZSBmYWlsZWQ6IMAAwAI6IMAAc3JjXHZlcnRleC5ycwBDOlxVc2Vyc1xTYXJnZXJhc1wuY2FyZ29ccmVnaXN0cnlcc3JjXGluZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmXGJ5dGVzLTEuMTEuMVxzcmNcYnl0ZXNfbXV0LnJzAC9ydXN0Yy9lNDA4OTQ3YmZkMjAwYWY0MmRiMzIyZGFmMGZhZGZlN2UyNmQzYmQxL2xpYnJhcnkvY29yZS9zcmMvc2xpY2Uvc29ydC9zaGFyZWQvc21hbGxzb3J0LnJzAC9ydXN0Yy9lNDA4OTQ3YmZkMjAwYWY0MmRiMzIyZGFmMGZhZGZlN2UyNmQzYmQxL2xpYnJhcnkvY29yZS9zcmMvc2xpY2Uvc29ydC9zdGFibGUvcXVpY2tzb3J0LnJzAC9ydXN0Yy9lNDA4OTQ3YmZkMjAwYWY0MmRiMzIyZGFmMGZhZGZlN2UyNmQzYmQxL2xpYnJhcnkvYWxsb2Mvc3JjL2ZtdC5ycwBDOlxVc2Vyc1xTYXJnZXJhc1wuY2FyZ29ccmVnaXN0cnlcc3JjXGluZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmXGJ5dGVzLTEuMTEuMVxzcmNcYnl0ZXMucnMAL3J1c3RjL2U0MDg5NDdiZmQyMDBhZjQyZGIzMjJkYWYwZmFkZmU3ZTI2ZDNiZDEvbGlicmFyeS9zdGQvc3JjL3N5cy90aHJlYWRfbG9jYWwvbm9fdGhyZWFkcy5ycwAvcnVzdGMvZTQwODk0N2JmZDIwMGFmNDJkYjMyMmRhZjBmYWRmZTdlMjZkM2JkMS9saWJyYXJ5L2NvcmUvc3JjL3NsaWNlL2l0ZXIucnMAQzpcVXNlcnNcU2FyZ2VyYXNcLmNhcmdvXHJlZ2lzdHJ5XHNyY1xpbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3ZlxtaW5pel9veGlkZS0wLjguOVxzcmNcaW5mbGF0ZVxvdXRwdXRfYnVmZmVyLnJzAEM6XFVzZXJzXFNhcmdlcmFzXC5jYXJnb1xyZWdpc3RyeVxzcmNcaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2ZcZmxhdGUyLTEuMS45XHNyY1xidWZyZWFkZXIucnMAc3JjXGNsaXAucnMAL3J1c3RjL2U0MDg5NDdiZmQyMDBhZjQyZGIzMjJkYWYwZmFkZmU3ZTI2ZDNiZDEvbGlicmFyeS9jb3JlL3NyYy9mbXQvbnVtLnJzAEM6XFVzZXJzXFNhcmdlcmFzXC5jYXJnb1xyZWdpc3RyeVxzcmNcaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2ZcbWluaXpfb3hpZGUtMC44Ljlcc3JjXGluZmxhdGVcc3RyZWFtLnJzAHNyY1xwcm90b2J1Zi5ycwAvcnVzdGMvZTQwODk0N2JmZDIwMGFmNDJkYjMyMmRhZjBmYWRmZTdlMjZkM2JkMS9saWJyYXJ5L2NvcmUvc3JjL2lvL2JvcnJvd2VkX2J1Zi5ycwBDOlxVc2Vyc1xTYXJnZXJhc1wuY2FyZ29ccmVnaXN0cnlcc3JjXGluZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmXHdhc20tYmluZGdlbi0wLjIuMTE3XHNyY1xleHRlcm5yZWYucnMAQzpcVXNlcnNcU2FyZ2VyYXNcLmNhcmdvXHJlZ2lzdHJ5XHNyY1xpbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3ZlxtaW5pel9veGlkZS0wLjguOVxzcmNcaW5mbGF0ZVxjb3JlLnJzAC9ydXN0Yy9lNDA4OTQ3YmZkMjAwYWY0MmRiMzIyZGFmMGZhZGZlN2UyNmQzYmQxL2xpYnJhcnkvY29yZS9zcmMvdW5pY29kZS9wcmludGFibGUucnMAL3J1c3QvZGVwcy9oYXNoYnJvd24tMC4xNi4xL3NyYy9yYXcvbW9kLnJzAC9ydXN0Yy9lNDA4OTQ3YmZkMjAwYWY0MmRiMzIyZGFmMGZhZGZlN2UyNmQzYmQxL2xpYnJhcnkvY29yZS9zcmMvZm10L21vZC5ycwAvcnVzdGMvZTQwODk0N2JmZDIwMGFmNDJkYjMyMmRhZjBmYWRmZTdlMjZkM2JkMS9saWJyYXJ5L3N0ZC9zcmMvaW8vbW9kLnJzAC9ydXN0Yy9lNDA4OTQ3YmZkMjAwYWY0MmRiMzIyZGFmMGZhZGZlN2UyNmQzYmQxL2xpYnJhcnkvYWxsb2Mvc3JjL3Jhd192ZWMvbW9kLnJzAC9ydXN0L2RlcHMvZGxtYWxsb2MtMC4yLjExL3NyYy9kbG1hbGxvYy5ycwBDOlxVc2Vyc1xTYXJnZXJhc1wuY2FyZ29ccmVnaXN0cnlcc3JjXGluZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmXGVhcmN1dC0wLjQuOVxzcmNcbGliLnJzAEM6XFVzZXJzXFNhcmdlcmFzXC5jYXJnb1xyZWdpc3RyeVxzcmNcaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Zcc2VyZGUtd2FzbS1iaW5kZ2VuLTAuNi41XHNyY1xsaWIucnMAQzpcVXNlcnNcU2FyZ2VyYXNcLmNhcmdvXHJlZ2lzdHJ5XHNyY1xpbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3ZlxieXRlcy0xLjExLjFcc3JjXGxpYi5ycwDALCBjYW4ndCBiZSByZXByZXNlbnRlZCBhcyBhIEphdmFTY3JpcHQgbnVtYmVyACZjb3B5X2Zyb21fc2xpY2U6IHNvdXJjZSBzbGljZSBsZW5ndGggKMArKSBkb2VzIG5vdCBtYXRjaCBkZXN0aW5hdGlvbiBzbGljZSBsZW5ndGggKMABKQDACyAob3MgZXJyb3IgwAEpABNpbnZhbGlkIHdpcmUgdHlwZTogwAsgKGV4cGVjdGVkIMABKQDAAS7AAjogAHJlY3RlbGxpcHNlegYQAA8AAAAiAAAAEwAAAERlY29kZWRUcmFuc2Zvcm1hYmNkdHh0eURlY29kZWRTaGFwZVN0eWxlZmlsbHN0cm9rZXN0cm9rZV93aWR0aGxpbmVfY2FwbGluZV9qb2lubWl0ZXJfbGltaXRsaW5lX2Rhc2hTVkdBUGF5bG9hZFByb2ZpbGVpbnB1dEJ5dGVzb3V0cHV0Qnl0ZXNwcm9zdERlY29kZU1zbWV0YWRhdGFBbmRJbWFnZXNNc2ZyYW1lVGFibGVNc2ZpbmFsaXplTXNwYXlsb2FkQnVpbGRNc3J1c3RUb3RhbE1zaW1hZ2VCeXRlc2ltYWdlQ291bnRzcHJpdGVDb3VudGZyYW1lQ291bnRjZWxsQ291bnRjbGlwUGF0aENvdW50c2hhcGVDb3VudHNoYXBlR3JvdXBDb3VudHNoYXBlQnl0ZXN3cml0ZXJJbml0aWFsQ2FwYWNpdHl3cml0ZXJGaW5hbENhcGFjaXR5RGVjb2RlZFJlY3R4eXdpZHRoaGVpZ2h0Y29ybmVyX3JhZGl1c0RlY29kZWRBdWRpb2F1ZGlvX2tleXN0YXJ0X2ZyYW1lZW5kX2ZyYW1lc3RhcnRfdGltZXRvdGFsX3RpbWVEZWNvZGVkQ29sb3JyZ0RlY29kZWRGcmFtZWFscGhhbGF5b3V0dHJhbnNmb3JtY2xpcF9wYXRoc2hhcGVzRGVjb2RlZE1vdmlldmVyc2lvbnBhcmFtc2ltYWdlc3Nwcml0ZXNhdWRpb3NEZWNvZGVkU2hhcGVraW5kcGF0aF9kYXRhc3R5bGVEZWNvZGVkTGF5b3V0RGVjb2RlZFBhcmFtc3ZpZXdfYm94X3dpZHRodmlld19ib3hfaGVpZ2h0ZnBzZnJhbWVzRGVjb2RlZFNwcml0ZWltYWdlX2tleURlY29kZWRFbGxpcHNlcmFkaXVzX3hyYWRpdXNfeQAAAP//////////GA4QAEGwnMAAC/MDegYQAA8AAABKAwAAIwAAAHoGEAAPAAAAaQMAACkAAAB6BhAADwAAAFIDAAApAAAASwkQAF4AAACFAgAAKAAAAEsJEABeAAAAbgQAABwAAABLCRAAXgAAAN0CAAAhAAAASwkQAF4AAADpAAAAJgAAAEsJEABeAAAABgEAAB0AAABLCRAAXgAAAHoEAAAzAAAASwkQAF4AAAB7BAAAMwAAAGludmFsaWQgdGFnIHZhbHVlOiAwaW52YWxpZCB2YXJpbnRMYXlvdXR4eXdpZHRoaGVpZ2h0VHJhbnNmb3JtYWJjZHR4dHlBdWRpb0VudGl0eWF1ZGlvX2tleXN0YXJ0X2ZyYW1lZW5kX2ZyYW1lc3RhcnRfdGltZXRvdGFsX3RpbWVGcmFtZUVu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ciB1bmRlcmZsb3dpbnZhbGlkIHZhcmludHJlY3Vyc2lvbiBsaW1pdCByZWFjaGVkVmFyaW50U2l4dHlGb3VyQml0TGVuZ3RoRGVsaW1pdGVkU3RhcnRHcm91cEVuZEdyb3VwVGhpcnR5VHdvQml0TgUQAGQAAABiAAAAFQAAAAYAAAAMAAAADwAAAAoAAAAIAAAADAAAAJkWEACfFhAAqxYQALoWEADEFhAAzBYQAGFzc2VydGlvbiBmYWlsZWQ6IG4gPD0gc2VsZi5idWYuaW5pdCAtIHNlbGYuYnVmLmZpbGxlZAAAigYQAFMAAAAVAQAACQAAAIUIEABJAAAAsgEAADEAAABSZ2JhQ29sb3JyZ2JhU2hhcGVBcmdzZFNoYXBlU3R5bGVmaWxsc3Ryb2tlc3Ryb2tlX3dpZHRobGluZV9jYXBsaW5lX2pvaW5taXRlcl9saW1pdGxpbmVfZGFzaF9pbGluZV9kYXNoX2lpbGluZV9kYXNoX2lpaUVsbGlwc2VBcmdzeHlyYWRpdXNfeHJhZGl1c195UmVjdEFyZ3N3aWR0aGhlaWdodGNvcm5lcl9yYWRpdXOqCRAAagAAADUAAAAOAAAAAAAAAP//////////OBgQAEHQsMAAC80BQXR0ZW1wdGVkIHRvIGluaXRpYWxpemUgdGhyZWFkLWxvY2FsIHdoaWxlIGl0IGlzIGJlaW5nIGRyb3BwZWQAACoEEABeAAAAawAAAA0AAABjbG9zdXJlIGludm9rZWQgcmVjdXJzaXZlbHkgb3IgYWZ0ZXIgYmVpbmcgZHJvcHBlZGZhaWxlZCB0byBkZWNvZGUgUHJvdG9idWYgbWVzc2FnZTogAAAAJQAAACYAAAAnAAAAKAAAACkAAAAqAAAAKwAAACwAAAAtAAAALgBBqLLAAAvdAgEAAAAvAAAAY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZQDJAxAAYAAAADoFAAAyAAAAMAAAADEAAAAyAAAAMwAAADQAAAA1AAAANgAAADcAAAAzAAAAOAAAAMkDEABgAAAASAUAAEkAAABMYXlvdXRFcnJvcm92ZXJmbG93AFsCEABkAAAAvQIAAB0AAABbAhAAZAAAAKkCAAAVAAAAOQAAADoAAAA7AAAAPAAAAD0AAAAVChAAXgAA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bAAAAEQEAAAjAAAASwcQAGwAAABEBAAADgAAAGFzc2VydGlvbiBmYWlsZWQ6IG91dF9wb3MgKyAxIDwgb3V0X3NsaWNlLmxlbigpAEsHEABsAAAARgQAAA0AAABhc3NlcnRpb24gZmFpbGVkOiAoc291cmNlX3BvcyArIDEpICYgb3V0X2J1Zl9zaXplX21hc2sgPCBvdXRfc2xpY2UubGVuKClLBxAAbAAAAEcEAAANAAAASwcQAGwAAABIBAAAIgAAAEsHEABsAAAASAQAAA0AAABhc3NlcnRpb24gZmFpbGVkOiBvdXRfcG9zICsgMiA8IG91dF9zbGljZS5sZW4oKQBLBxAAbAAAAEwEAAANAAAAYXNzZXJ0aW9uIGZhaWxlZDogKHNvdXJjZV9wb3MgKyAyKSAmIG91dF9idWZfc2l6ZV9tYXNrIDwgb3V0X3NsaWNlLmxlbigpSwcQAGwAAABNBAAADQAAAEsHEABsAAAATgQAACIAAABLBxAAbAAAAE4EAAANAAAASwcQAGwAAABPBAAAJgAAAEsHEABsAAAATwQAAA0AAABLBxAAbAAAACwEAAAXAAAAZGVzdCBpcyBvdXQgb2YgYm91bmRzAAAACwYQAG4AAABCAQAAHAAAAAsGEABuAAAAdgEAADAAAADeBhAAbAAAAHwAAAARAAAA3gYQAGwAAACJAAAAEQAAAG1dy9YsUOtjeEGmV3Ebi7mauO6RURSWWM+WAOjSnxKKZW50aXR5IG5vdCBmb3VuZHBlcm1pc3Npb24gZGVuaWVkY29ubmVjdGlvbiByZWZ1c2VkY29ubmVjdGlvbiByZXNldGhvc3QgdW5yZWFjaGFibGVuZXR3b3JrIHVucmVhY2hhYmxlY29ubmVjdGlvbiBhYm9ydGVkbm90IGNvbm5lY3RlZGFkZHJlc3MgaW4gdXNlYWRkcmVzcyBub3QgYXZhaWxhYmxlbmV0d29yayBkb3duYnJva2VuIHBpcGVlbnRpdHkgYWxyZWFkeSBleGlzdHNvcGVyYXRpb24gd291bGQgYmxvY2tub3QgYSBkaXJlY3RvcnlpcyBhIGRpcmVjdG9yeWRpcmVjdG9yeSBub3QgZW1wdHlyZWFkLW9ubHkgZmlsZXN5c3RlbSBvciBzdG9yYWdlIG1lZGl1bWZpbGVzeXN0ZW0gbG9vcCBv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",typeof document=="undefined"?require("url").pathToFileURL(__filename).href:cI&&cI.tagName.toUpperCase()==="SCRIPT"&&cI.src||new URL("gift-stage.cjs",document.baseURI).href));const A=DE();(typeof C=="string"||typeof Request=="function"&&C instanceof Request||typeof URL=="function"&&C instanceof URL)&&(C=fetch(C));const{instance:g,module:I}=await Yt(await C,A);return FE(g)}const Kt=Object.freeze(Object.defineProperty({__proto__:null,build_batch_vertices:Dt,decode_svga:wt,decode_svga_payload:yt,decode_svga_payload_profiled:Ft,default:dE,inflate:dt,init:lE,initSync:pt,take_svga_payload_profile:Gt,triangulate_clip_polygons:ut},Symbol.toStringTag,{value:"Module"})),XB="data:application/wasm;base64,AGFzbQEAAAAB6gI0YAJ/fwF/YAR/f39/AGADf39/AGACf38AYAN/f38Bf2AFf39/f38AYAF/AGABfwF/YAAAYAZ/f39/f38AYAR/f39/AX9gAAR/f39/YAABb2AFf39/f38Bf2ACf38Ef39/f2ACf38Bb2AGf39/f39/AX9gAn9/AX5gAAF/YAV/f31/fwBgBX9/fn9/AGAFf398f38AYAJ9fQF9YAJ8fAF8YAADf39/YAACf39gAAF8YANvf28AYANvb28Bb2ADb29vAGACf28AYAFvAX9gA39/bwBgAXwBb2ABfgFvYAh/f39/f39/fwBgBn9/f3x8fABgCHx8fHx8fHx8AX9gA39/fgBgBn9/f31/fwBgBn9/f35/fwBgBn9/f3x/fwBgAn9/A39/f2AEf39/fwJ/f2AIf39/f29/f28Bf2AEf35/fwBgBH99f38AYAR/fH9/AGADf399AGAHf39/f39/fwBgAXwBf2ADf398AAKmBxAXLi9naWZ0X3N0YWdlX3dhc21fYmcuanMaX193Ymdfbm93XzAwOGQ5Yjg0NjAwYjVjMTkAGhcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcxpfX3diZ19zZXRfNmM2MGIyZThhZDBlOTM4MwAbFy4vZ2lmdF9zdGFnZV93YXNtX2JnLmpzGl9fd2JnX3NldF8wODQ2M2IxZGYzOGE3ZTI5ABwXLi9naWZ0X3N0YWdlX3dhc21fYmcuanMaX193Ymdfc2V0XzZiZTQyNzY4YzY5MGUzODAAHRcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcx1fX3diZ19TdHJpbmdfODU2NGU1NTk3OTllY2NkYQAeFy4vZ2lmdF9zdGFnZV93YXNtX2JnLmpzGl9fd2JnX25ld185OWNhYmFlNTAxYzBhOGEwAAwXLi9naWZ0X3N0YWdlX3dhc21fYmcuanMaX193YmdfbmV3X2YzYzlkZjRmMzhmM2Y3OTgADBcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcxpfX3diZ19uZXdfNGY5ZmFmYmIzOTA5YWY3MgAMFy4vZ2lmdF9zdGFnZV93YXNtX2JnLmpzJ19fd2JnX19fd2JpbmRnZW5fdGhyb3dfODFmYzc3Njc5YWY4M2JjNgADFy4vZ2lmdF9zdGFnZV93YXNtX2JnLmpzHF9fd2JnX0Vycm9yXzJlNTliMWIzN2E5YTM0YzMADxcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcytfX3diZ19fX3diaW5kZ2VuX2lzX3N0cmluZ19iMjliNWM1YTgwNjViYTFhAB8XLi9naWZ0X3N0YWdlX3dhc21fYmcuanM1X193YmdfX193YmluZGdlbl9jb3B5X3RvX3R5cGVkX2FycmF5X2E0ZGIzMzc3NTFlMGIzMjgAIBcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcx9fX3diaW5kZ2VuX2luaXRfZXh0ZXJucmVmX3RhYmxlAAgXLi9naWZ0X3N0YWdlX3dhc21fYmcuanMgX193YmluZGdlbl9jYXN0XzAwMDAwMDAwMDAwMDAwMDEAIRcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcyBfX3diaW5kZ2VuX2Nhc3RfMDAwMDAwMDAwMDAwMDAwMgAPFy4vZ2lmdF9zdGFnZV93YXNtX2JnLmpzIF9fd2JpbmRnZW5fY2FzdF8wMDAwMDAwMDAwMDAwMDAzACIDzgHMAQEjJAcBAgIJAAMEEAYCAgMDAQUECgAKACUREQMBBQICAAICAwQAEgMAAQIDBgABAAEABgEEAQEDBQAGCQUCCQkCBQIDAAIIASYCAwEGBQYCCQYFAQEFBQUFAQEACScoKQUBAQIEBAUBBAAAAAcCAwEBBgIAAA0AAAoABg4ODiorLBAHDQUUExUGBgEKBAEIAgYWFxcWAAADAwMDAgAwAwIxAgQCMjMFABIKAwABAQMAAAMAAAICBwcIAgQEBgwAAAgDAwAEAAMAAwcIAgQJAnABZmZvAIAIBQMBABEGCQF/AUGAgMAACwe6Ag8GbWVtb3J5AgALZGVjb2RlX3N2Z2EAjgETZGVjb2RlX3N2Z2FfcGF5bG9hZACMARxkZWNvZGVfc3ZnYV9wYXlsb2FkX3Byb2ZpbGVkAIsBGXRha2Vfc3ZnYV9wYXlsb2FkX3Byb2ZpbGUAzQEHaW5mbGF0ZQCNARRidWlsZF9iYXRjaF92ZXJ0aWNlcwCQARl0cmlhbmd1bGF0ZV9jbGlwX3BvbHlnb25zAI8BBGluaXQA2gERX193YmluZGdlbl9tYWxsb2MAgwESX193YmluZGdlbl9yZWFsbG9jAIgBFV9fd2JpbmRnZW5fZXh0ZXJucmVmcwEBGV9f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oAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIAo2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABayAKSQRAIARBoAJqIAEgCkEBQQEQTCAEKAKoAiEBCyAKBEAgBCgCpAIgAWogCSAK/AoAAAsgBCAEKAKoAiAKaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAMAQsgBSgCCCIJQQJHBEAgBCgCoAIgAUYEQCAEQaACahBhCyAEKAKkAiABakEBOgAAIAQgAUEBaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgIMQwAAAAAgCUEBcRshQSAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIEE4AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgIUQwAAAAAgBSgCEBshQSAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIEE4AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgIcQwAAAAAgBSgCGBshQSAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIEE4AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgIkQwAAAAAgBSgCIBshQSAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIEE4AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgIsQwAAAAAgBSgCKBshQSAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIEE4AAAMAQsgBSgCMCIJQQJGDQIgBCgCoAIgAUYEQCAEQaACahBhCyAEKAKkAiABakECOgAAIAQgAUEBaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgI0QwAAAAAgCUEBcRshQSAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIEE4AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgI8QwAAAAAgBSgCOBshQSAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIEE4AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgJEQwAAAAAgBSgCQBshQSAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIEE4AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgJMQwAAAAAgBSgCSBsMAQsgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJq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ZkUgLCAroiApICaiZkVyDQAgHSAHQQhqKwMAoSAJKwMAIByhoiAcIAcrAwChIAlBCGorAwAgHaGioUQAAAAAAAAAAGYNAgsgCiAPRw0ACwwGCyABIAhHDQALCwJAAkAgC0H/AXFBAWsOAgQBAAsgDEEcaiENIAEgDGohBiABIQoDQCAKIQgCQANAIAwgBigCJCIBaiEHIAYoAhBBAE4EQCAGKAIgIQogBisDACAHKwMAYgR/QQAFIAYrAwggBysDCGELDQIgBkEIaisDACIcIAogDGoiCUEIaisDAKEgBysDACAGKwMAIh2hoiAdIAkrAwChIAdBCGorAwAgHKGioUQAAAAAAAAAAGENAgsgByEGIAEgCEcNAAtBASELIAghAQwICyAGKAIcIQggBigCGCEJIAogDGoiBiABNgIkAkAgCUUNACAJIApHBEAgCSANaiAINgIADAELIAYgCDYCHAsgByAKNgIgIAgEQCAHIAggDGogASAIRhsgCTYCGAtBASELIAEgCkcNAAsMBgsgDEEkaiEYIAEgDGohCyABIQgDQCAMIAsoAiQiD2ohByAPIBhqKAIAIg0gCygCICIZRwRAIAwgGWohFiALKAIQIhBB/////wdxIRoDQAJAIAwgDSIOaiIRKAIQIgYgEHNB/////wdxRQRAIA0gGGooAgAhDQwBCyARKAIkIQ0gBkH/////B3EiFyAHKAIQQf////8HcUYNACAWKAIQQf////8HcSAXRg0AIAwgESgCIGohFCAMIA1qIRMgESsDCCEeIBErAwAhHyALKwMIIR0gCysDACEhIBAhCSALIQYDQCAJIRICQCAMIAYiCigCJGoiBigCECIJQf////8HcSIbIBdGDQAgEkH/////B3EiEiAaRiASIBdGciAaIBtGcg0AIAorAwAgCkEIaisDACAGKwMAIAZBCGorAwAgISAdIB8gHhAoDQILIAYgC0cNAAsgHyAhoSEiIB4gHaEhIwJAAkAgHSAWQQhqKwMAIhyhIiggBysDACIkICGhIieiIikgISAWKwMAIiChIiogB0EIaisDACIlIB2hIiaiIitjRQRAICMgICAfoaIgIiAcIB6homMNASAfICShICaiICcgHiAloaJjRQ0CDAELICMgJCAfoaIgIiAlIB6hoqFEAAAAAAAAAABmRSAfICChIBwgHaGiICAg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AAseACAARQRAENABAAsgACACIAMgBCAFIAEoAhARDQALIAEBf0EBIQEgACgCACIAQQFxBH8gAQUgACgCCEEBRgsLHAAgAEUEQBDQAQALIAAgAiADIAQgASgCEBEKAAscACAARQRAENABAAsgACACIAMgBCABKAIQEQEACxwAIABFBEAQ0AEACyAAIAIgAyAEIAEoAhARLQALHAAgAEUEQBDQAQALIAAgAiADIAQgASgCEBEuAAscACAARQRAENABAAsgACACIAMgBCABKAIQES8ACygBAX8gACgCACIBQYCAgIB4ckGAgICAeEcEQCAAKAIEIAFBARDEAQsLCgBBCCAAENIBAAsaACAARQRAENABAAsgACACIAMgASgCEBECAAsaACAARQRAENABAAsgACACIAMgASgCEBEEAAsYACAARQRAENABAAsgACACIAEoAhARAAALIQAgAEEANgIMIAAgAzYCCCAAIAI2AgQgAEH4scAANgIACxIAQfjQwABBOUGU0cAAEIIBAAslAQFvEAYhAxA2IgIgAyYBIABBADYCCCAAIAI2AgQgACABNgIACxoBAX8gACgCACIBBEAgACgCBCABQQEQxAELCxQAIAAgACABIAAgAV0bIAEgAVwbCxQAIAAgACABIAAgAWMbIAEgAWIbCxQAIAEgASAAIAAgAWMbIAAgAGIbCxQAIAEgASAAIAAgAV0bIAAgAFwbCx0AIAEgAC0AAEECdCIAKALMrEAgACgCtKxAELIBCx0AIAEgAC0AAEECdCIAKAKArkAgACgC6K1AELIBCx8AIABBCGpBxLTAACkCADcCACAAQby0wAApAgA3AgALHwAgAEEIakGcxsAAKQIANwIAIABBlMbAACkCADcCAAsfACAAQQhqQazGwAApAgA3AgAgAEGkxsAAKQIANwIACx8AIAAEQCAAIAEQ0gEAC0G80sAAQSNB0NLAABCCAQALEgAgACABQQF0QQFyIAIQggEACxYBAW8gACABEA4hAhA2IgAgAiYBIAALFAAgACACuxC0ATYCBCAAQQA2AgALFAAgACABtxC0ATYCBCAAQQA2AgALFQAgACABIAIQrAE2AgQgAEEANgIAC9MLAQ5/IAAhDyMAQRBrIggkACABKAIQIQcgBkH/AXFBAnQoAoi1QCEKIwBBEGsiBiQAAkACQAJAAkACQAJA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aW5kZXggwCIgb3V0IG9mIHJhbmdlIGZvciBzbGljZSBvZiBsZW5ndGggwAAQcmFuZ2UgZW5kIGluZGV4IMAiIG91dCBvZiByYW5nZSBmb3Igc2xpY2Ugb2YgbGVuZ3RoIMAAIWNhbm5vdCBhZHZhbmNlIHBhc3QgYHJlbWFpbmluZ2A6IMAEIDw9IMAAE2ludmFsaWQga2V5IHZhbHVlOiDAABlpbnZhbGlkIHdpcmUgdHlwZSB2YWx1ZTogwAASU2VyaWFsaXplIGZhaWxlZDogwAAQSW5mbGF0ZSBmYWlsZWQ6IMAAGFByb3RvYnVmIGRlY29kZSBmYWlsZWQ6IMAAwAI6IMAAc3JjXHZlcnRleC5ycwBDOlxVc2Vyc1xTYXJnZXJhc1wuY2FyZ29ccmVnaXN0cnlcc3JjXGluZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmXGJ5dGVzLTEuMTEuMVxzcmNcYnl0ZXNfbXV0LnJzAC9ydXN0Yy9lNDA4OTQ3YmZkMjAwYWY0MmRiMzIyZGFmMGZhZGZlN2UyNmQzYmQxL2xpYnJhcnkvY29yZS9zcmMvc2xpY2Uvc29ydC9zaGFyZWQvc21hbGxzb3J0LnJzAC9ydXN0Yy9lNDA4OTQ3YmZkMjAwYWY0MmRiMzIyZGFmMGZhZGZlN2UyNmQzYmQxL2xpYnJhcnkvY29yZS9zcmMvc2xpY2Uvc29ydC9zdGFibGUvcXVpY2tzb3J0LnJzAC9ydXN0Yy9lNDA4OTQ3YmZkMjAwYWY0MmRiMzIyZGFmMGZhZGZlN2UyNmQzYmQxL2xpYnJhcnkvYWxsb2Mvc3JjL2ZtdC5ycwBDOlxVc2Vyc1xTYXJnZXJhc1wuY2FyZ29ccmVnaXN0cnlcc3JjXGluZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmXGJ5dGVzLTEuMTEuMVxzcmNcYnl0ZXMucnMAL3J1c3RjL2U0MDg5NDdiZmQyMDBhZjQyZGIzMjJkYWYwZmFkZmU3ZTI2ZDNiZDEvbGlicmFyeS9zdGQvc3JjL3N5cy90aHJlYWRfbG9jYWwvbm9fdGhyZWFkcy5ycwAvcnVzdGMvZTQwODk0N2JmZDIwMGFmNDJkYjMyMmRhZjBmYWRmZTdlMjZkM2JkMS9saWJyYXJ5L2NvcmUvc3JjL3NsaWNlL2l0ZXIucnMAQzpcVXNlcnNcU2FyZ2VyYXNcLmNhcmdvXHJlZ2lzdHJ5XHNyY1xpbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3ZlxtaW5pel9veGlkZS0wLjguOVxzcmNcaW5mbGF0ZVxvdXRwdXRfYnVmZmVyLnJzAEM6XFVzZXJzXFNhcmdlcmFzXC5jYXJnb1xyZWdpc3RyeVxzcmNcaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2ZcZmxhdGUyLTEuMS45XHNyY1xidWZyZWFkZXIucnMAc3JjXGNsaXAucnMAL3J1c3RjL2U0MDg5NDdiZmQyMDBhZjQyZGIzMjJkYWYwZmFkZmU3ZTI2ZDNiZDEvbGlicmFyeS9jb3JlL3NyYy9mbXQvbnVtLnJzAEM6XFVzZXJzXFNhcmdlcmFzXC5jYXJnb1xyZWdpc3RyeVxzcmNcaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2ZcbWluaXpfb3hpZGUtMC44Ljlcc3JjXGluZmxhdGVcc3RyZWFtLnJzAHNyY1xwcm90b2J1Zi5ycwAvcnVzdGMvZTQwODk0N2JmZDIwMGFmNDJkYjMyMmRhZjBmYWRmZTdlMjZkM2JkMS9saWJyYXJ5L2NvcmUvc3JjL2lvL2JvcnJvd2VkX2J1Zi5ycwBDOlxVc2Vyc1xTYXJnZXJhc1wuY2FyZ29ccmVnaXN0cnlcc3JjXGluZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmXHdhc20tYmluZGdlbi0wLjIuMTE3XHNyY1xleHRlcm5yZWYucnMAQzpcVXNlcnNcU2FyZ2VyYXNcLmNhcmdvXHJlZ2lzdHJ5XHNyY1xpbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3ZlxtaW5pel9veGlkZS0wLjguOVxzcmNcaW5mbGF0ZVxjb3JlLnJzAC9ydXN0Yy9lNDA4OTQ3YmZkMjAwYWY0MmRiMzIyZGFmMGZhZGZlN2UyNmQzYmQxL2xpYnJhcnkvY29yZS9zcmMvdW5pY29kZS9wcmludGFibGUucnMAL3J1c3QvZGVwcy9oYXNoYnJvd24tMC4xNi4xL3NyYy9yYXcvbW9kLnJzAC9ydXN0Yy9lNDA4OTQ3YmZkMjAwYWY0MmRiMzIyZGFmMGZhZGZlN2UyNmQzYmQxL2xpYnJhcnkvY29yZS9zcmMvZm10L21vZC5ycwAvcnVzdGMvZTQwODk0N2JmZDIwMGFmNDJkYjMyMmRhZjBmYWRmZTdlMjZkM2JkMS9saWJyYXJ5L3N0ZC9zcmMvaW8vbW9kLnJzAC9ydXN0Yy9lNDA4OTQ3YmZkMjAwYWY0MmRiMzIyZGFmMGZhZGZlN2UyNmQzYmQxL2xpYnJhcnkvYWxsb2Mvc3JjL3Jhd192ZWMvbW9kLnJzAC9ydXN0L2RlcHMvZGxtYWxsb2MtMC4yLjExL3NyYy9kbG1hbGxvYy5ycwBDOlxVc2Vyc1xTYXJnZXJhc1wuY2FyZ29ccmVnaXN0cnlcc3JjXGluZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmXGVhcmN1dC0wLjQuOVxzcmNcbGliLnJzAEM6XFVzZXJzXFNhcmdlcmFzXC5jYXJnb1xyZWdpc3RyeVxzcmNcaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Zcc2VyZGUtd2FzbS1iaW5kZ2VuLTAuNi41XHNyY1xsaWIucnMAQzpcVXNlcnNcU2FyZ2VyYXNcLmNhcmdvXHJlZ2lzdHJ5XHNyY1xpbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3ZlxieXRlcy0xLjExLjFcc3JjXGxpYi5ycwDALCBjYW4ndCBiZSByZXByZXNlbnRlZCBhcyBhIEphdmFTY3JpcHQgbnVtYmVyACZjb3B5X2Zyb21fc2xpY2U6IHNvdXJjZSBzbGljZSBsZW5ndGggKMArKSBkb2VzIG5vdCBtYXRjaCBkZXN0aW5hdGlvbiBzbGljZSBsZW5ndGggKMABKQDACyAob3MgZXJyb3IgwAEpABNpbnZhbGlkIHdpcmUgdHlwZTogwAsgKGV4cGVjdGVkIMABKQDAAS7AAjogAHJlY3RlbGxpcHNlegYQAA8AAAAiAAAAEwAAAERlY29kZWRUcmFuc2Zvcm1hYmNkdHh0eURlY29kZWRTaGFwZVN0eWxlZmlsbHN0cm9rZXN0cm9rZV93aWR0aGxpbmVfY2FwbGluZV9qb2lubWl0ZXJfbGltaXRsaW5lX2Rhc2hTVkdBUGF5bG9hZFByb2ZpbGVpbnB1dEJ5dGVzb3V0cHV0Qnl0ZXNwcm9zdERlY29kZU1zbWV0YWRhdGFBbmRJbWFnZXNNc2ZyYW1lVGFibGVNc2ZpbmFsaXplTXNwYXlsb2FkQnVpbGRNc3J1c3RUb3RhbE1zaW1hZ2VCeXRlc2ltYWdlQ291bnRzcHJpdGVDb3VudGZyYW1lQ291bnRjZWxsQ291bnRjbGlwUGF0aENvdW50c2hhcGVDb3VudHNoYXBlR3JvdXBDb3VudHNoYXBlQnl0ZXN3cml0ZXJJbml0aWFsQ2FwYWNpdHl3cml0ZXJGaW5hbENhcGFjaXR5RGVjb2RlZFJlY3R4eXdpZHRoaGVpZ2h0Y29ybmVyX3JhZGl1c0RlY29kZWRBdWRpb2F1ZGlvX2tleXN0YXJ0X2ZyYW1lZW5kX2ZyYW1lc3RhcnRfdGltZXRvdGFsX3RpbWVEZWNvZGVkQ29sb3JyZ0RlY29kZWRGcmFtZWFscGhhbGF5b3V0dHJhbnNmb3JtY2xpcF9wYXRoc2hhcGVzRGVjb2RlZE1vdmlldmVyc2lvbnBhcmFtc2ltYWdlc3Nwcml0ZXNhdWRpb3NEZWNvZGVkU2hhcGVraW5kcGF0aF9kYXRhc3R5bGVEZWNvZGVkTGF5b3V0RGVjb2RlZFBhcmFtc3ZpZXdfYm94X3dpZHRodmlld19ib3hfaGVpZ2h0ZnBzZnJhbWVzRGVjb2RlZFNwcml0ZWltYWdlX2tleURlY29kZWRFbGxpcHNlcmFkaXVzX3hyYWRpdXNfeQAAAP//////////GA4QAEGwnMAAC/MDegYQAA8AAABKAwAAIwAAAHoGEAAPAAAAaQMAACkAAAB6BhAADwAAAFIDAAApAAAASwkQAF4AAACFAgAAKAAAAEsJEABeAAAAbgQAABwAAABLCRAAXgAAAN0CAAAhAAAASwkQAF4AAADpAAAAJgAAAEsJEABeAAAABgEAAB0AAABLCRAAXgAAAHoEAAAzAAAASwkQAF4AAAB7BAAAMwAAAGludmFsaWQgdGFnIHZhbHVlOiAwaW52YWxpZCB2YXJpbnRMYXlvdXR4eXdpZHRoaGVpZ2h0VHJhbnNmb3JtYWJjZHR4dHlBdWRpb0VudGl0eWF1ZGlvX2tleXN0YXJ0X2ZyYW1lZW5kX2ZyYW1lc3RhcnRfdGltZXRvdGFsX3RpbWVGcmFtZUVu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ciB1bmRlcmZsb3dpbnZhbGlkIHZhcmludHJlY3Vyc2lvbiBsaW1pdCByZWFjaGVkVmFyaW50U2l4dHlGb3VyQml0TGVuZ3RoRGVsaW1pdGVkU3RhcnRHcm91cEVuZEdyb3VwVGhpcnR5VHdvQml0TgUQAGQAAABiAAAAFQAAAAYAAAAMAAAADwAAAAoAAAAIAAAADAAAAJkWEACfFhAAqxYQALoWEADEFhAAzBYQAGFzc2VydGlvbiBmYWlsZWQ6IG4gPD0gc2VsZi5idWYuaW5pdCAtIHNlbGYuYnVmLmZpbGxlZAAAigYQAFMAAAAVAQAACQAAAIUIEABJAAAAsgEAADEAAABSZ2JhQ29sb3JyZ2JhU2hhcGVBcmdzZFNoYXBlU3R5bGVmaWxsc3Ryb2tlc3Ryb2tlX3dpZHRobGluZV9jYXBsaW5lX2pvaW5taXRlcl9saW1pdGxpbmVfZGFzaF9pbGluZV9kYXNoX2lpbGluZV9kYXNoX2lpaUVsbGlwc2VBcmdzeHlyYWRpdXNfeHJhZGl1c195UmVjdEFyZ3N3aWR0aGhlaWdodGNvcm5lcl9yYWRpdXOqCRAAagAAADUAAAAOAAAAAAAAAP//////////OBgQAEHQsMAAC80BQXR0ZW1wdGVkIHRvIGluaXRpYWxpemUgdGhyZWFkLWxvY2FsIHdoaWxlIGl0IGlzIGJlaW5nIGRyb3BwZWQAACoEEABeAAAAawAAAA0AAABjbG9zdXJlIGludm9rZWQgcmVjdXJzaXZlbHkgb3IgYWZ0ZXIgYmVpbmcgZHJvcHBlZGZhaWxlZCB0byBkZWNvZGUgUHJvdG9idWYgbWVzc2FnZTogAAAAJQAAACYAAAAnAAAAKAAAACkAAAAqAAAAKwAAACwAAAAtAAAALgBBqLLAAAvdAgEAAAAvAAAAY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZQDJAxAAYAAAADoFAAAyAAAAMAAAADEAAAAyAAAAMwAAADQAAAA1AAAANgAAADcAAAAzAAAAOAAAAMkDEABgAAAASAUAAEkAAABMYXlvdXRFcnJvcm92ZXJmbG93AFsCEABkAAAAvQIAAB0AAABbAhAAZAAAAKkCAAAVAAAAOQAAADoAAAA7AAAAPAAAAD0AAAAVChAAXgAAAKoAAAAFAAAAYWJvcnQAAAAVChAAXgAAAG4AAAAJAAAAZGVzY3JpcHRpb24oKSBpcyBkZXByZWNhdGVkOyB1c2UgRGlzcGxhedNycSO0gchL3WO3BlKAuaI/AAAADAAAAAQAAABAAAAAPwAAAAwAAAAEAAAAQQAAAEAAAABMGhAAQgAAAEMAAABEAAAAQgAAAEUAQZC1wAALaQIAAAAAAAAABAAAANgEEAB1AAAAIAAAAAkAAADYBBAAdQAAACoAAAATAAAASwcQAGwAAABrBgAAGgAAAEsHEABsAAAAawYAADYAAABLBxAAbAAAAF4GAAAoAAAASwcQAGwAAABzBwAAPgBBhLbAAAu9GwEBAQECAgICAwMDAwQEBAQFBQUFAAAAAAMABAAFAAYABwAIAAkACgALAA0ADwARABMAFwAbAB8AIwArADMAOwBDAFMAYwBzAIMAowDDAOMAAgEAAgACAAJLBxAAbAAAANkHAABNAAAAEBESAAgHCQYKBQsEDAMNAg4BDwBLBxAAbAAAADwGAAAtAAAASwcQAGwAAAA8BgAAGQAAAAEBAQAEAAEAAgADAAQABQAHAAkADQARABkAIQAxAEEAYQCBAMEAAQGBAQECAQMBBAEGAQgBDAEQARgBIAEwAUABYAAASwcQAGwAAACEBgAAIAAAAEsHEABsAAAAEQIAACgAAAAAAACAAEAAwAAgAKAAYADgABAAkABQANAAMACwAHAA8AAIAIgASADIACgAqABoAOgAGACYAFgA2AA4ALgAeAD4AAQAhABEAMQAJACkAGQA5AAUAJQAVADUADQAtAB0APQADACMAEwAzAAsAKwAbADsABwAnABcANwAPAC8AHwA/AACAIIAQgDCACIAogBiAOIAEgCSAFIA0gAyALIAcgDyAAoAigBKAMoAKgCqAGoA6gAaAJoAWgDaADoAugB6APoABgCGAEYAxgAmAKYAZgDmABYAlgBWANYANgC2AHYA9gAOAI4ATgDOAC4ArgBuAO4AHgCeAF4A3gA+AL4AfgD+AAEAgQBBAMEAIQChAGEA4QARAJEAUQDRADEAsQBxAPEACQCJAEkAyQApAKkAaQDpABkAmQBZANkAOQC5AHkA+QAFAIUARQDFACUApQBlAOUAFQCVAFUA1QA1ALUAdQD1AA0AjQBNAM0ALQCtAG0A7QAdAJ0AXQDdAD0AvQB9AP0AAwCDAEMAwwAjAKMAYwDjABMAkwBTANMAMwCzAHMA8wALAIsASwDLACsAqwBrAOsAGwCbAFsA2wA7ALsAewD7AAcAhwBHAMcAJwCnAGcA5wAXAJcAVwDXADcAtwB3APcADwCPAE8AzwAvAK8AbwDvAB8AnwBfAN8APwC/AH8A/4AAgICAQIDAgCCAoIBggOCAEICQgFCA0IAwgLCAcIDwgAiAiIBIgMiAKICogGiA6IAYgJiAWIDYgDiAuIB4gPiABICEgESAxIAkgKSAZIDkgBSAlIBUgNSANIC0gHSA9IAMgIyATIDMgCyArIBsgOyAHICcgFyA3IA8gLyAfID8gAKAgoBCgMKAIoCigGKA4oASgJKAUoDSgDKAsoBygPKACoCKgEqAyoAqgKqAaoDqgBqAmoBagNqAOoC6gHqA+oAGgIaARoDGgCaApoBmgOaAFoCWgFaA1oA2gLaAdoD2gA6AjoBOgM6ALoCugG6A7oAegJ6AXoDegD6AvoB+gP6AAYCBgEGAwYAhgKGAYYDhgBGAkYBRgNGAMYCxgHGA8YAJgImASYDJgCmAqYBpgOmAGYCZgFmA2YA5gLmAeYD5gAWAhYBFgMWAJYClgGWA5YAVgJWAVYDVgDWAtYB1gPWADYCNgE2AzYAtgK2AbYDtgB2AnYBdgN2APYC9gH2A/YADgIOAQ4DDgCOAo4BjgOOAE4CTgFOA04AzgLOAc4DzgAuAi4BLgMuAK4CrgGuA64AbgJuAW4DbgDuAu4B7gPuAB4CHgEeAx4AngKeAZ4DngBeAl4BXgNeAN4C3gHeA94APgI+AT4DPgC+Ar4BvgO+AH4CfgF+A34A/gL+Af4D/SwcQAGwAAACGAgAAHQAAAEsHEABsAAAAIgQAABQAAABLBxAAbAAAACMEAAASAAAAYXNzZXJ0aW9uIGZhaWxlZDogb3V0X3BvcyArIDMgPCBvdXRfc2xpY2UubGVuKCkASwcQAGwAAAA2BAAADQAAAGFzc2VydGlvbiBmYWlsZWQ6IChzb3VyY2VfcG9zICsgMykgJiBvdXRfYnVmX3NpemVfbWFzayA8IG91dF9zbGljZS5sZW4oKUsHEABsAAAANwQAAA0AAABLBxAAbAAAADkEAAAiAAAASwcQAGwAAAA6BAAAJgAAAEsHEABsAAAAOwQAACYAAABLBxAAbAAAAEQEAAAjAAAASwcQAGwAAABEBAAADgAAAGFzc2VydGlvbiBmYWlsZWQ6IG91dF9wb3MgKyAxIDwgb3V0X3NsaWNlLmxlbigpAEsHEABsAAAARgQAAA0AAABhc3NlcnRpb24gZmFpbGVkOiAoc291cmNlX3BvcyArIDEpICYgb3V0X2J1Zl9zaXplX21hc2sgPCBvdXRfc2xpY2UubGVuKClLBxAAbAAAAEcEAAANAAAASwcQAGwAAABIBAAAIgAAAEsHEABsAAAASAQAAA0AAABhc3NlcnRpb24gZmFpbGVkOiBvdXRfcG9zICsgMiA8IG91dF9zbGljZS5sZW4oKQBLBxAAbAAAAEwEAAANAAAAYXNzZXJ0aW9uIGZhaWxlZDogKHNvdXJjZV9wb3MgKyAyKSAmIG91dF9idWZfc2l6ZV9tYXNrIDwgb3V0X3NsaWNlLmxlbigpSwcQAGwAAABNBAAADQAAAEsHEABsAAAATgQAACIAAABLBxAAbAAAAE4EAAANAAAASwcQAGwAAABPBAAAJgAAAEsHEABsAAAATwQAAA0AAABLBxAAbAAAACwEAAAXAAAAZGVzdCBpcyBvdXQgb2YgYm91bmRzAAAACwYQAG4AAABCAQAAHAAAAAsGEABuAAAAdgEAADAAAADeBhAAbAAAAHwAAAARAAAA3gYQAGwAAACJAAAAEQAAAG1dy9YsUOtjeEGmV3Ebi7mauO6RURSWWM+WAOjSnxKKZW50aXR5IG5vdCBmb3VuZHBlcm1pc3Npb24gZGVuaWVkY29ubmVjdGlvbiByZWZ1c2VkY29ubmVjdGlvbiByZXNldGhvc3QgdW5yZWFjaGFibGVuZXR3b3JrIHVucmVhY2hhYmxlY29ubmVjdGlvbiBhYm9ydGVkbm90IGNvbm5lY3RlZGFkZHJlc3MgaW4gdXNlYWRkcmVzcyBub3QgYXZhaWxhYmxlbmV0d29yayBkb3duYnJva2VuIHBpcGVlbnRpdHkgYWxyZWFkeSBleGlzdHNvcGVyYXRpb24gd291bGQgYmxvY2tub3QgYSBkaXJlY3RvcnlpcyBhIGRpcmVjdG9yeWRpcmVjdG9yeSBub3QgZW1wdHlyZWFkLW9ubHkgZmlsZXN5c3RlbSBvciBzdG9yYWdlIG1lZGl1bWZpbGVzeXN0ZW0gbG9vcCBv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";let JA=null,aB=null;function aQ(){return typeof performance!="undefined"?performance.now():Date.now()}function mt(){var C;const A=globalThis.process;return(C=A==null?void 0:A.versions)!=null&&C.node&&XB.startsWith("/")?new URL(Object.assign({})[`../..${XB}`],typeof document=="undefined"?require("url").pathToFileURL(__filename).href:cI&&cI.tagName.toUpperCase()==="SCRIPT"&&cI.src||new URL("gift-stage.cjs",document.baseURI).href):XB}function DI(){return JA!==null}async function GE(){return JA?!0:aB||(aB=(async()=>{try{return await dE({module_or_path:mt()}),lE(),JA=Kt,!0}catch(C){return console.warn("[GiftStage] WASM unavailable, using JS fallback:",C),!1}})(),aB)}function Jt(C){if(!JA)return null;try{return JA.inflate(C)}catch(A){return null}}function Lt(C){if(!JA)return null;try{return bt(JA.decode_svga(C))}catch(A){return null}}function Ht(C){if(!JA)return null;try{return JA.decode_svga_payload(C)}catch(A){return null}}function xt(C){if(!JA)return null;try{const A=aQ(),g=typeof JA.decode_svga_payload_profiled=="function"?JA.decode_svga_payload_profiled(C):JA.decode_svga_payload(C),I=aQ()-A,B=typeof JA.take_svga_payload_profile=="function"?JA.take_svga_payload_profile():null,Q=B&&typeof B=="object"?B:null;return{payload:g,profile:Q?{...Q,jsCallTotalMs:I,wasmBoundaryAndGlueMs:Math.max(0,I-Q.rustTotalMs)}:void 0}}catch(A){return null}}function OB(C,A,g){if(!JA)return null;try{return JA.build_batch_vertices(C,A,g)}catch(I){return null}}function bt(C){var A,g,I,B,Q,E,e;const i=C.params,t=i?{viewBoxWidth:(A=i.view_box_width)!=null?A:0,viewBoxHeight:(g=i.view_box_height)!=null?g:0,fps:(I=i.fps)!=null?I:20,frames:(B=i.frames)!=null?B:0}:{viewBoxWidth:0,viewBoxHeight:0,fps:20,frames:0},a=new Map,o=C.images;if(o instanceof Map)for(const[r,c]of o)a.set(r,c instanceof Uint8Array?c:new Uint8Array(c));else if(o&&typeof o=="object")for(const[r,c]of Object.entries(o))a.set(r,c instanceof Uint8Array?c:new Uint8Array(c));const s=((Q=C.sprites)!=null?Q:[]).map(qt),n=((E=C.audios)!=null?E:[]).map(r=>{var c,h,l,w,D;return{audioKey:(c=r.audio_key)!=null?c:"",startFrame:(h=r.start_frame)!=null?h:0,endFrame:(l=r.end_frame)!=null?l:0,startTime:(w=r.start_time)!=null?w:0,totalTime:(D=r.total_time)!=null?D:0}});return{version:(e=C.version)!=null?e:"",params:t,images:a,spriteTable:hE(s,t.frames),audios:n}}function qt(C){var A,g;let I=null;const B=((A=C.frames)!=null?A:[]).map(Q=>{var E,e,i,t,a,o,s,n,r,c,h;const l=Array.isArray(Q.shapes)?Q.shapes:[];let w;return l.length===0?(I=null,w=null):((E=l[0])==null?void 0:E.kind)==="keep"?w=I:(w=Wt(l),I=w),{alpha:(e=Q.alpha)!=null?e:0,layout:Q.layout?{width:(i=Q.layout.width)!=null?i:0,height:(t=Q.layout.height)!=null?t:0}:null,transform:Q.transform?{a:(a=Q.transform.a)!=null?a:1,b:(o=Q.transform.b)!=null?o:0,c:(s=Q.transform.c)!=null?s:0,d:(n=Q.transform.d)!=null?n:1,tx:(r=Q.transform.tx)!=null?r:0,ty:(c=Q.transform.ty)!=null?c:0}:null,clipPath:(h=Q.clip_path)!=null?h:"",shapes:w}});return{imageKey:(g=C.image_key)!=null?g:"",frames:B}}function oQ(C){var A,g,I,B;return C?{r:(A=C.r)!=null?A:0,g:(g=C.g)!=null?g:0,b:(I=C.b)!=null?I:0,a:(B=C.a)!=null?B:0}:null}function vt(C){var A,g,I,B,Q,E;const e=(A=C==null?void 0:C.line_dash)!=null?A:C==null?void 0:C.lineDash;return{fill:oQ(C==null?void 0:C.fill),stroke:oQ(C==null?void 0:C.stroke),strokeWidth:(I=(g=C==null?void 0:C.stroke_width)!=null?g:C==null?void 0:C.strokeWidth)!=null?I:0,lineCap:(B=C==null?void 0:C.line_cap)!=null?B:C==null?void 0:C.lineCap,lineJoin:(Q=C==null?void 0:C.line_join)!=null?Q:C==null?void 0:C.lineJoin,miterLimit:(E=C==null?void 0:C.miter_limit)!=null?E:C==null?void 0:C.miterLimit,lineDash:Array.isArray(e)&&e.length>0?e:void 0}}function Tt(C){var A,g,I,B,Q,E;return{a:(A=C==null?void 0:C.a)!=null?A:1,b:(g=C==null?void 0:C.b)!=null?g:0,c:(I=C==null?void 0:C.c)!=null?I:0,d:(B=C==null?void 0:C.d)!=null?B:1,tx:(Q=C==null?void 0:C.tx)!=null?Q:0,ty:(E=C==null?void 0:C.ty)!=null?E:0}}function Wt(C){var A,g,I,B,Q,E,e,i,t,a,o,s,n;if(!Array.isArray(C)||C.length===0)return null;const r=[];for(const c of C){const h=c==null?void 0:c.kind;if(h!=="path"&&h!=="rect"&&h!=="ellipse")continue;const l={kind:h,pathData:(A=c.path_data)!=null?A:c.pathData,rect:c.rect?{x:(g=c.rect.x)!=null?g:0,y:(I=c.rect.y)!=null?I:0,width:(B=c.rect.width)!=null?B:0,height:(Q=c.rect.height)!=null?Q:0,cornerRadius:(e=(E=c.rect.corner_radius)!=null?E:c.rect.cornerRadius)!=null?e:0}:void 0,ellipse:c.ellipse?{x:(i=c.ellipse.x)!=null?i:0,y:(t=c.ellipse.y)!=null?t:0,radiusX:(o=(a=c.ellipse.radius_x)!=null?a:c.ellipse.radiusX)!=null?o:0,radiusY:(n=(s=c.ellipse.radius_y)!=null?s:c.ellipse.radiusY)!=null?n:0}:void 0,style:vt(c.style),transform:Tt(c.transform)};r.push(l)}return r.length>0?r:null}var Vt=Object.defineProperty,Zt=(C,A,g)=>A in C?Vt(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,PB=(C,A,g)=>Zt(C,typeof A!="symbol"?A+"":A,g);class uE{constructor(){PB(this,"floatPoolA",null),PB(this,"floatPoolB",null),PB(this,"uint32Pool",null)}getFloat32(A){var g,I;if(!this.floatPoolA||this.floatPoolA.length<A){const B=Math.max(A,((I=(g=this.floatPoolA)==null?void 0:g.length)!=null?I:0)*2,1024);this.floatPoolA=new Float32Array(B)}return this.floatPoolA}getFloat32B(A){var g,I;if(!this.floatPoolB||this.floatPoolB.length<A){const B=Math.max(A,((I=(g=this.floatPoolB)==null?void 0:g.length)!=null?I:0)*2,1024);this.floatPoolB=new Float32Array(B)}return this.floatPoolB}getUint32(A){var g,I;if(!this.uint32Pool||this.uint32Pool.length<A){const B=Math.max(A,((I=(g=this.uint32Pool)==null?void 0:g.length)!=null?I:0)*2,1024);this.uint32Pool=new Uint32Array(B)}return this.uint32Pool}destroy(){this.floatPoolA=null,this.floatPoolB=null,this.uint32Pool=null}}function Kg(C,A,g,I,B,Q){const E=1/(C-A),e=1/(g-I),i=1/(B-Q),t=new Float32Array(16);return t[0]=-2*E,t[5]=-2*e,t[10]=2*i,t[12]=(C+A)*E,t[13]=(I+g)*e,t[14]=(B+Q)*i,t[15]=1,t}function lg(C,A,g){return C+(A-C)*g}function uB(C,A,g){return C<A?A:C>g?g:C}let Xt=0;function mC(){return`gift_${++Xt}_${Date.now().toString(36)}`}function Ot(C){const A=C.length;if(A<3)return[];if(A===3)return[0,1,2];const g=[],I=Array.from({length:A},(e,i)=>i),Q=Pt(C)>0;let E=A*A;for(;I.length>3&&E-- >0;){let e=!1;const i=I.length;for(let t=0;t<i;t++){const a=I[(t-1+i)%i],o=I[t],s=I[(t+1)%i],n=C[a],r=C[o],c=C[s],h=(r.x-n.x)*(c.y-n.y)-(r.y-n.y)*(c.x-n.x);if(!(Q?h>0:h<0))continue;let w=!1;for(let D=0;D<i;D++)if(!(D===(t-1+i)%i||D===t||D===(t+1)%i)&&jt(C[I[D]],n,r,c)){w=!0;break}if(!w){Q?g.push(a,o,s):g.push(a,s,o),I.splice(t,1),e=!0;break}}if(!e)break}if(I.length===3){const[e,i,t]=I;Q?g.push(e,i,t):g.push(e,t,i)}return g}function Pt(C){let A=0;const g=C.length;for(let I=0;I<g;I++){const B=(I+1)%g;A+=C[I].x*C[B].y,A-=C[B].x*C[I].y}return A*.5}function jt(C,A,g,I){const B=jB(C,A,g),Q=jB(C,g,I),E=jB(C,I,A),e=B<0||Q<0||E<0,i=B>0||Q>0||E>0;return!(e&&i)}function jB(C,A,g){return(C.x-g.x)*(A.y-g.y)-(A.x-g.x)*(C.y-g.y)}const JC={x:0,y:0};function rg(C){var A;return C.scale*((A=C.motionScaleX)!=null?A:1)}function cg(C){var A;return C.scale*((A=C.motionScaleY)!=null?A:1)}function sQ(C,A,g){if(typeof C=="string"){const I=Number.parseFloat(C);return Number.isFinite(I)?A*I/100:A*.5}if(typeof C=="number"&&Number.isFinite(C)){const I=g&&g>0?A/g:1;return C*I}return A*.5}function vB(C,A={x:0,y:0}){const g=C.options.transformOrigin;return A.x=C.x+sQ(g==null?void 0:g.x,C.width,C.options.width)*rg(C),A.y=C.y+sQ(g==null?void 0:g.y,C.height,C.options.height)*cg(C),A}function nI(C,A,g,I,B,Q){const E=C.rotation||0,e=Math.cos(E),i=Math.sin(E),t=vB(C,JC),a=A-t.x,o=g-t.y;return Q[0]=e*I,Q[1]=i*I,Q[2]=0,Q[3]=0,Q[4]=-i*B,Q[5]=e*B,Q[6]=0,Q[7]=0,Q[8]=0,Q[9]=0,Q[10]=1,Q[11]=0,Q[12]=t.x+e*a-i*o,Q[13]=t.y+i*a+e*o,Q[14]=0,Q[15]=1,Q}function zt(C,A,g=A){const I=C.rotation||0;if(I===0)return g!==A&&Object.assign(g,A),g;const B=Math.cos(I),Q=Math.sin(I),E=vB(C,JC),{a:e,b:i,c:t,d:a,tx:o,ty:s}=A,n=o-E.x,r=s-E.y;return g.a=B*e-Q*i,g.b=Q*e+B*i,g.c=B*t-Q*a,g.d=Q*t+B*a,g.tx=E.x+B*n-Q*r,g.ty=E.y+Q*n+B*r,g}function Sg(C,A,g,I,B,Q={x:0,y:0,w:0,h:0}){const E=C.rotation||0;if(E===0)return Q.x=A,Q.y=g,Q.w=I,Q.h=B,Q;const e=Math.cos(E),i=Math.sin(E),t=vB(C,JC),a=A-t.x,o=g-t.y,s=a+I,n=o+B,r=t.x+e*a-i*o,c=t.y+i*a+e*o,h=t.x+e*s-i*o,l=t.y+i*s+e*o,w=t.x+e*s-i*n,D=t.y+i*s+e*n,y=t.x+e*a-i*n,R=t.y+i*a+e*n,F=Math.min(r,h,w,y),d=Math.min(c,l,D,R),f=Math.max(r,h,w,y),u=Math.max(c,l,D,R);return Q.x=F,Q.y=d,Q.w=f-F,Q.h=u-d,Q}function XA(C){var A;return(A=C.options.objectFit)!=null?A:"contain"}function Fg(C,A,g,I,B=!1){const Q=I!=null?I:{scaleX:1,scaleY:1,width:0,height:0,offsetX:0,offsetY:0},E=C.width*(B?C.scale:rg(C)),e=C.height*(B?C.scale:cg(C)),i=XA(C);if(!(A>0)||!(g>0))return Q.scaleX=1,Q.scaleY=1,Q.width=E,Q.height=e,Q.offsetX=0,Q.offsetY=0,Q;if(i==="fill")return Q.scaleX=E/A,Q.scaleY=e/g,Q.width=E,Q.height=e,Q.offsetX=0,Q.offsetY=0,Q;const t=i==="cover"?Math.max(E/A,e/g):Math.min(E/A,e/g),a=A*t,o=g*t;return Q.scaleX=t,Q.scaleY=t,Q.width=a,Q.height=o,Q.offsetX=i==="cover"?(E-a)*.5:0,Q.offsetY=i==="cover"?(e-o)*.5:0,Q}const RE=`function* YA(A) {
2238
+ `,ag=Object.freeze({submitted:!0});function $(C,A){return A?{submitted:!1,reason:C,message:A}:{submitted:!1,reason:C}}function vg(C,A){if(!C.submitted)throw new Error(`${A} rejected (${C.reason})${C.message?`: ${C.message}`:""}`)}const Ag=16,kg=Object.freeze({parentA:0,parentB:1,parentC:2,parentD:3,translateX:4,translateY:5,opacity:6,frame:7,clipX0:8,clipY0:9,clipX1:10,clipY1:11,clipEnabled:12,metadataBase:13,atlasPage:14,motionTrackPlusOne:15});var Oi=Object.defineProperty,Pi=(C,A,g)=>A in C?Oi(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,Y=(C,A,g)=>Pi(C,typeof A!="symbol"?A+"":A,g);const gQ=new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]),ji=new Float32Array([0,0,1,1]),Hg=16*1024*1024,tE=12,NI=8,zi=NI*Float32Array.BYTES_PER_ELEMENT,WB=160,IQ="svga-frame-table-instanced-premul";function iI(C,A){const g=Math.max(1,Math.floor(A));return Math.ceil(Math.max(0,C)/g)*g}const hg=class BA{constructor(A,g,I=!0){Y(this,"type","webgpu"),Y(this,"supportsAtomicFrameReplay",!0),Y(this,"canvas"),Y(this,"maxTextureSize"),Y(this,"adapter"),Y(this,"device"),Y(this,"context"),Y(this,"format"),Y(this,"encoder",null),Y(this,"passEncoder",null),Y(this,"nextId",1),Y(this,"buffers",new Map),Y(this,"textures",new Map),Y(this,"pipelines",new Map),Y(this,"particleSpritePreparations",new Map),Y(this,"particleSpritePreparationEpoch",0),Y(this,"sampler"),Y(this,"uniformBuffer"),Y(this,"texturedBindGroupLayout"),Y(this,"dualTexturedBindGroupLayout"),Y(this,"instancedTextureBindGroupLayout"),Y(this,"uniformOnlyBindGroupLayout"),Y(this,"svgaFrameTableBindGroupLayout",null),Y(this,"uniformSlotStride",256),Y(this,"maxUniformSlots",8192),Y(this,"uniformSlotIndex",0),Y(this,"uniformShadow",new Uint8Array(this.uniformSlotStride*this.maxUniformSlots)),Y(this,"uniformShadowDirtyMin",1/0),Y(this,"uniformShadowDirtyMax",0),Y(this,"lastDrawPipeline",null),Y(this,"lastStencilRef",-1),Y(this,"frameUsesStencil",!1),Y(this,"lastVertexBufferId",-1),Y(this,"lastIndexBufferId",-1),Y(this,"uniformScratch160",new Float32Array(40)),Y(this,"uniformScratch128",new Float32Array(32)),Y(this,"svgaFrameTableUniformScratch",new Float32Array(WB/Float32Array.BYTES_PER_ELEMENT)),Y(this,"svgaFrameTableUniformWords",new Uint32Array(this.svgaFrameTableUniformScratch.buffer)),Y(this,"uniformOpacityScratch",new Float32Array(4)),Y(this,"depthStencilTexture",null),Y(this,"depthStencilView",null),Y(this,"msaaColorTexture",null),Y(this,"msaaColorView",null),Y(this,"lastCanvasWidth",0),Y(this,"lastCanvasHeight",0),Y(this,"lastDepthStencilSampleCount",0),Y(this,"msaaSampleCount",1),Y(this,"wantAntialias"),Y(this,"configuredCanvasWidth",0),Y(this,"configuredCanvasHeight",0),Y(this,"dummyTexture"),Y(this,"dummyTextureView"),Y(this,"videoUploadCanvas",null),Y(this,"videoUploadCtx",null),Y(this,"videoElementPreferCanvasBridge",!1),Y(this,"videoFramePreferCanvasBridge",!1),Y(this,"texturedBindGroupCache",new Map),Y(this,"dualTexturedBindGroupCache",new Map),Y(this,"instancedTextureBindGroupCache",new Map),Y(this,"particleDataBindGroupCache",new Map),Y(this,"motionDataBindGroupCache",new Map),Y(this,"svgaFrameTableDataBindGroupCache",new Map),Y(this,"instancedProjectionBuffer",null),Y(this,"instancedStorageBuffer",null),Y(this,"storageBindOffsetAlign",256),Y(this,"instancedStorageRingOffset",0),Y(this,"svgaCompactSlotStateUploadId",-1),Y(this,"svgaCompactSlotStateStorageBase",-1),Y(this,"svgaCompactSlotStateByteLength",0),Y(this,"instancedStorageShadow",new Uint8Array(0)),Y(this,"instancedStorageShadowDirtyMax",0),Y(this,"instancedProjectionCache",new Float32Array(16)),Y(this,"instancedProjectionValid",!1),Y(this,"lastClipMaskStorageBase",-1),Y(this,"lastClipMaskStorageByteLength",0),Y(this,"lastInstancedTextureBindGroup",null),Y(this,"performanceBufferWrites",0),Y(this,"performanceBufferWriteBytes",0),Y(this,"performanceStorageBufferWrites",0),Y(this,"performanceStorageBufferWriteBytes",0),Y(this,"performanceSubmittedDrawCalls",0),Y(this,"performanceRejectedDrawCalls",0),Y(this,"performanceSVGADynamicUploadWrites",0),Y(this,"performanceSVGADynamicUploadBytes",0),Y(this,"runtimeSubmittedDrawCalls",0),Y(this,"runtimeRejectedDrawCalls",0),Y(this,"currentDrawResult",$("invalid-command","WebGPU draw has not been submitted")),Y(this,"currentDrawRecorded",!1),Y(this,"runtimeUncapturedErrors",0),Y(this,"runtimeBackendLosses",0),Y(this,"runtimeDiagnosticHandler",null),Y(this,"deviceLost",!1),Y(this,"uncapturedErrorRequiresQuarantine",!1),Y(this,"deviceLostHandler",null),Y(this,"handleDeviceLoss",()=>{var B,Q;this.deviceLost=!0,this.particleSpritePreparationEpoch++,this.particleSpritePreparations.clear(),this.runtimeBackendLosses++,(B=this.runtimeDiagnosticHandler)==null||B.call(this,{type:"backend-lost"}),this.passEncoder=null,this.encoder=null,this.buffers.clear(),this.textures.clear(),this.texturedBindGroupCache.clear(),this.dualTexturedBindGroupCache.clear(),this.instancedTextureBindGroupCache.clear(),this.svgaFrameTableDataBindGroupCache.clear(),this.particleDataBindGroupCache.clear(),this.motionDataBindGroupCache.clear(),(Q=this.deviceLostHandler)==null||Q.call(this)}),Y(this,"handleUncapturedError",B=>{var Q;this.uncapturedErrorRequiresQuarantine=!0,this.runtimeUncapturedErrors++,(Q=this.runtimeDiagnosticHandler)==null||Q.call(this,{type:"gpu-uncaptured-error",message:B.error.message}),console.error("[WebGPU Error]",B.error.message)}),this.canvas=A,this.adapter=g,this.maxTextureSize=g.limits.maxTextureDimension2D,this.wantAntialias=I}async init(){this.device=await this.adapter.requestDevice(),this.device.lost.then(this.handleDeviceLoss),this.device.onuncapturederror=this.handleUncapturedError,this.context=this.canvas.getContext("webgpu"),this.format=navigator.gpu.getPreferredCanvasFormat(),this.msaaSampleCount=this.wantAntialias?4:1,this.configureCanvasContext(),this.sampler=this.device.createSampler({magFilter:"linear",minFilter:"linear"}),this.uniformSlotStride=this.device.limits.minUniformBufferOffsetAlignment,this.storageBindOffsetAlign=this.device.limits.minStorageBufferOffsetAlignment,this.uniformBuffer=this.device.createBuffer({size:this.uniformSlotStride*this.maxUniformSlots,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),this.uniformShadow=new Uint8Array(this.uniformSlotStride*this.maxUniformSlots),this.dummyTexture=this.device.createTexture({size:[1,1],format:"rgba8unorm",usage:GPUTextureUsage.TEXTURE_BINDING}),this.dummyTextureView=this.dummyTexture.createView(),this.initPipelines()}configureCanvasContext(){this.context.configure({device:this.device,format:this.format,alphaMode:"premultiplied"}),this.configuredCanvasWidth=this.canvas.width,this.configuredCanvasHeight=this.canvas.height}ensureFrameAttachments(A,g,I){var B,Q;(this.lastCanvasWidth!==A||this.lastCanvasHeight!==g||this.lastDepthStencilSampleCount!==this.msaaSampleCount)&&((B=this.depthStencilTexture)==null||B.destroy(),this.depthStencilTexture=null,this.depthStencilView=null,(Q=this.msaaColorTexture)==null||Q.destroy(),this.msaaColorTexture=null,this.msaaColorView=null,this.msaaSampleCount>1&&(this.msaaColorTexture=this.device.createTexture({size:[A,g],format:this.format,sampleCount:this.msaaSampleCount,usage:GPUTextureUsage.RENDER_ATTACHMENT}),this.msaaColorView=this.msaaColorTexture.createView()),this.lastCanvasWidth=A,this.lastCanvasHeight=g,this.lastDepthStencilSampleCount=this.msaaSampleCount),I&&!this.depthStencilTexture&&(this.depthStencilTexture=this.device.createTexture({size:[A,g],format:"depth24plus-stencil8",sampleCount:this.msaaSampleCount,usage:GPUTextureUsage.RENDER_ATTACHMENT}),this.depthStencilView=this.depthStencilTexture.createView())}initPipelines(){const A=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform",hasDynamicOffset:!0,minBindingSize:160}},{binding:1,visibility:GPUShaderStage.FRAGMENT,texture:{}},{binding:2,visibility:GPUShaderStage.FRAGMENT,sampler:{}}]});this.texturedBindGroupLayout=A;const g=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform",hasDynamicOffset:!0,minBindingSize:160}},{binding:1,visibility:GPUShaderStage.FRAGMENT,texture:{}},{binding:2,visibility:GPUShaderStage.FRAGMENT,texture:{}},{binding:3,visibility:GPUShaderStage.FRAGMENT,sampler:{}}]});this.dualTexturedBindGroupLayout=g,this.instancedTextureBindGroupLayout=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{}}]});const I=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX,buffer:{type:"uniform",hasDynamicOffset:!0,minBindingSize:128}}]});this.uniformOnlyBindGroupLayout=I,this.createTexturedPipeline("svga-batch-premul:none",wA.svgaBatchPremul,A,[{shaderLocation:0,offset:0,format:"float32x3"},{shaderLocation:1,offset:12,format:"float32x4"},{shaderLocation:2,offset:28,format:"float32x2"}],36,"none"),this.createTexturedPipeline("vap:none",wA.vap,A,[{shaderLocation:0,offset:0,format:"float32x2"},{shaderLocation:1,offset:8,format:"float32x2"},{shaderLocation:2,offset:16,format:"float32x2"}],24,"none"),this.createTexturedPipeline("vap-mix-overlay:none",wA.vapMixOverlay,g,[{shaderLocation:0,offset:0,format:"float32x2"},{shaderLocation:1,offset:8,format:"float32x2"}],16,"none",2),this.createTexturedPipeline("alpha-video:none",wA.alphaVideo,A,[{shaderLocation:0,offset:0,format:"float32x2"},{shaderLocation:1,offset:8,format:"float32x2"}],16,"none"),this.createTexturedPipeline("rgba-textured:none",wA.rgbaTextured,A,[{shaderLocation:0,offset:0,format:"float32x2"},{shaderLocation:1,offset:8,format:"float32x2"}],16,"none")}ensureStencilPipelines(){this.pipelines.has("svga-batch-premul:pass")||this.createTexturedPipeline("svga-batch-premul:pass",wA.svgaBatchPremul,this.texturedBindGroupLayout,[{shaderLocation:0,offset:0,format:"float32x3"},{shaderLocation:1,offset:12,format:"float32x4"},{shaderLocation:2,offset:28,format:"float32x2"}],36,"pass"),this.pipelines.has("svga-batch-premul:test")||this.createTexturedPipeline("svga-batch-premul:test",wA.svgaBatchPremul,this.texturedBindGroupLayout,[{shaderLocation:0,offset:0,format:"float32x3"},{shaderLocation:1,offset:12,format:"float32x4"},{shaderLocation:2,offset:28,format:"float32x2"}],36,"test"),this.pipelines.has("vap:pass")||this.createTexturedPipeline("vap:pass",wA.vap,this.texturedBindGroupLayout,[{shaderLocation:0,offset:0,format:"float32x2"},{shaderLocation:1,offset:8,format:"float32x2"},{shaderLocation:2,offset:16,format:"float32x2"}],24,"pass"),this.pipelines.has("vap-mix-overlay:pass")||this.createTexturedPipeline("vap-mix-overlay:pass",wA.vapMixOverlay,this.dualTexturedBindGroupLayout,[{shaderLocation:0,offset:0,format:"float32x2"},{shaderLocation:1,offset:8,format:"float32x2"}],16,"pass",2);for(const[A,g]of[["alpha-video:pass",wA.alphaVideo],["rgba-textured:pass",wA.rgbaTextured]])this.pipelines.has(A)||this.createTexturedPipeline(A,g,this.texturedBindGroupLayout,[{shaderLocation:0,offset:0,format:"float32x2"},{shaderLocation:1,offset:8,format:"float32x2"}],16,"pass");this.pipelines.has("clip-mask:write")||this.createClipMaskPipeline(this.uniformOnlyBindGroupLayout)}ensureInstancedProjectionBuffer(){return this.instancedProjectionBuffer||(this.instancedProjectionBuffer=this.device.createBuffer({size:256,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),this.instancedProjectionValid=!1),this.instancedProjectionBuffer}ensureInstancedStorageBuffer(){return this.instancedStorageBuffer||(this.instancedStorageBuffer=this.device.createBuffer({size:Hg,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST})),this.instancedStorageBuffer}ensureInstancedDataBindGroup(A,g){let I=A.instancedDataBindGroups;I||(I=new Map,A.instancedDataBindGroups=I);let B=I.get(g);return B||(B=this.device.createBindGroup({layout:A.bindGroupLayout,entries:[{binding:0,resource:{buffer:this.ensureInstancedProjectionBuffer(),offset:0,size:256}},{binding:1,resource:{buffer:this.ensureInstancedStorageBuffer(),offset:0,size:g}}]}),I.set(g,B),B)}ensureInstancedSvgaPipeline(A="none"){const g=`svga-instanced-premul:${A}`;let I=this.pipelines.get(g);return I||(this.createInstancedSvgaPipeline(g,wA.svgaInstancedPremul,A),I=this.pipelines.get(g)),I}ensureInstancedClipMaskPipeline(){const A="clip-mask-instanced:write";let g=this.pipelines.get(A);return g||(this.createInstancedClipMaskPipeline(),g=this.pipelines.get(A)),g}ensureInstancedAlphaPipeline(){const A=this.frameUsesStencil?"pass":"none",g=`alpha-video-instanced:${A}`;let I=this.pipelines.get(g);return I||(this.createInstancedAlphaVideoPipeline(A),I=this.pipelines.get(g)),I}ensureInstancedVapPipeline(){const A=this.frameUsesStencil?"pass":"none",g=`vap-instanced:${A}`;let I=this.pipelines.get(g);return I||(this.createVapInstancedPipeline(A),I=this.pipelines.get(g)),I}ensureSVGAFrameTableDataLayout(){return this.svgaFrameTableBindGroupLayout?this.svgaFrameTableBindGroupLayout:(this.svgaFrameTableBindGroupLayout=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX,buffer:{type:"uniform",hasDynamicOffset:!0,minBindingSize:WB}},{binding:1,visibility:GPUShaderStage.VERTEX,buffer:{type:"read-only-storage",minBindingSize:BA.SVGA_FRAME_TABLE_ROW_BYTES}},{binding:2,visibility:GPUShaderStage.VERTEX,buffer:{type:"read-only-storage",minBindingSize:zi}},{binding:3,visibility:GPUShaderStage.VERTEX,buffer:{type:"read-only-storage",minBindingSize:32}},{binding:4,visibility:GPUShaderStage.VERTEX,buffer:{type:"uniform",minBindingSize:32}},{binding:5,visibility:GPUShaderStage.VERTEX,buffer:{type:"read-only-storage",hasDynamicOffset:!0,minBindingSize:BA.SVGA_FRAME_TABLE_ROW_BYTES}}]}),this.svgaFrameTableBindGroupLayout)}ensureSVGAFrameTablePipeline(A="none"){const g=`${IQ}:${A}`;let I=this.pipelines.get(g);if(I)return I;const B=this.ensureSVGAFrameTableDataLayout(),Q=this.device.createShaderModule({code:Xi}),E=A==="test"?{format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"equal",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"equal",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilReadMask:255,stencilWriteMask:0}:A==="pass"?{format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilWriteMask:0}:void 0;return I={pipeline:this.device.createRenderPipeline({label:`svga-frame-table-instanced:${A}`,layout:this.device.createPipelineLayout({bindGroupLayouts:[B,this.instancedTextureBindGroupLayout]}),vertex:{module:Q,entryPoint:"vs",buffers:[{arrayStride:8,attributes:[{shaderLocation:0,offset:0,format:"float32x2"}]}]},fragment:{module:Q,entryPoint:"fs",targets:[{format:this.format,blend:{color:{srcFactor:"one",dstFactor:"one-minus-src-alpha"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha"}}}]},primitive:{topology:"triangle-list"},depthStencil:E,multisample:{count:this.msaaSampleCount}}),bindGroupLayout:B,textureCount:1},this.pipelines.set(g,I),I}ensureSVGAFrameTableMeshPipeline(A,g){const I=A==="svga-frame-table-clip-mask"?"write":g==="clear"?"none":g,B=`${A}:${I}`;let Q=this.pipelines.get(B);if(Q)return Q;const E=this.ensureSVGAFrameTableDataLayout(),e=this.device.createShaderModule({code:A==="svga-frame-table-shape-premul"?wA.svgaFrameTableShape:wA.svgaFrameTableClipMask}),i=A==="svga-frame-table-clip-mask";let t;return i?t={format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"always",passOp:"replace",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"always",passOp:"replace",failOp:"keep",depthFailOp:"keep"},stencilWriteMask:255}:I==="test"?t={format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"equal",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"equal",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilReadMask:255,stencilWriteMask:0}:I==="pass"&&(t={format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilWriteMask:0}),Q={pipeline:this.device.createRenderPipeline({label:`${A}:${I}`,layout:this.device.createPipelineLayout({bindGroupLayouts:[E,this.instancedTextureBindGroupLayout]}),vertex:{module:e,entryPoint:"vs",buffers:A==="svga-frame-table-shape-premul"?[{arrayStride:36,attributes:[{shaderLocation:0,offset:0,format:"float32x3"},{shaderLocation:1,offset:12,format:"float32x4"},{shaderLocation:2,offset:28,format:"float32x2"}]}]:[{arrayStride:8,attributes:[{shaderLocation:0,offset:0,format:"float32x2"}]}]},fragment:{module:e,entryPoint:"fs",targets:[{format:this.format,writeMask:i?0:GPUColorWrite.ALL,...i?{}:{blend:{color:{srcFactor:"one",dstFactor:"one-minus-src-alpha"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha"}}}}]},primitive:{topology:"triangle-list"},depthStencil:t,multisample:{count:this.msaaSampleCount}}),bindGroupLayout:E,textureCount:1},this.pipelines.set(B,Q),Q}ensureMotionSvgaPipeline(){const A=this.frameUsesStencil?"pass":"none",g=`svga-motion-instanced-premul:${A}`;let I=this.pipelines.get(g);if(I)return I;this.ensureInstancedProjectionBuffer(),this.ensureInstancedStorageBuffer();const B=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX,buffer:{type:"uniform",minBindingSize:64}},{binding:1,visibility:GPUShaderStage.VERTEX,buffer:{type:"read-only-storage",hasDynamicOffset:!0,minBindingSize:BA.SVGA_INSTANCED_STRIDE}},{binding:2,visibility:GPUShaderStage.VERTEX,buffer:{type:"read-only-storage",minBindingSize:32}},{binding:3,visibility:GPUShaderStage.VERTEX,buffer:{type:"uniform",minBindingSize:32}}]}),Q=this.device.createShaderModule({code:wA.svgaMotionInstancedPremul});return I={pipeline:this.device.createRenderPipeline({layout:this.device.createPipelineLayout({bindGroupLayouts:[B,this.instancedTextureBindGroupLayout]}),vertex:{module:Q,entryPoint:"vs",buffers:[{arrayStride:8,attributes:[{shaderLocation:0,offset:0,format:"float32x2"}]}]},fragment:{module:Q,entryPoint:"fs",targets:[{format:this.format,blend:{color:{srcFactor:"one",dstFactor:"one-minus-src-alpha"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha"}}}]},primitive:{topology:"triangle-list"},depthStencil:A==="pass"?{format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilWriteMask:0}:void 0,multisample:{count:this.msaaSampleCount}}),bindGroupLayout:B,textureCount:1},this.pipelines.set(g,I),I}ensureParticlePipeline(A){const g=this.frameUsesStencil?"pass":"none",I=`particle-instanced:${A}:${g}`;let B=this.pipelines.get(I);if(B)return B;this.ensureInstancedProjectionBuffer();const Q=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX,buffer:{type:"uniform",minBindingSize:64}},{binding:1,visibility:GPUShaderStage.VERTEX,buffer:{type:"read-only-storage",minBindingSize:80}}]}),E=this.device.createShaderModule({code:wA.particleInstanced}),e=A==="additive";return B={pipeline:this.device.createRenderPipeline({label:`particle-instanced:${A}:${g}`,layout:this.device.createPipelineLayout({bindGroupLayouts:[Q]}),vertex:{module:E,entryPoint:"vs",buffers:[{arrayStride:8,attributes:[{shaderLocation:0,offset:0,format:"float32x2"}]}]},fragment:{module:E,entryPoint:"fs",targets:[{format:this.format,blend:e?{color:{srcFactor:"one",dstFactor:"one"},alpha:{srcFactor:"one",dstFactor:"one"}}:{color:{srcFactor:"one",dstFactor:"one-minus-src-alpha"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha"}}}]},primitive:{topology:"triangle-list"},depthStencil:g==="pass"?{format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilWriteMask:0}:void 0,multisample:{count:this.msaaSampleCount}}),bindGroupLayout:Q,textureCount:0},this.pipelines.set(I,B),B}async prepareParticleSpritePipelines(){if(this.deviceLost)throw new Error("WebGPU device is lost");const A=[];for(const g of["none","pass"])for(const I of["normal","additive"]){const B=`particle-sprite-instanced:${I}:${g}`;if(this.pipelines.has(B))continue;let Q=this.particleSpritePreparations.get(B);if(!Q){const E=this.particleSpritePreparationEpoch;Q=(async()=>{const{descriptor:e,dataLayout:i}=this.particleSpritePipelineDescriptor(I,g),t=await this.device.createRenderPipelineAsync(e);if(this.deviceLost||E!==this.particleSpritePreparationEpoch)throw new Error("WebGPU particle preparation cancelled by backend teardown");this.pipelines.set(B,{pipeline:t,bindGroupLayout:i,textureCount:1})})().finally(()=>{this.particleSpritePreparations.get(B)===Q&&this.particleSpritePreparations.delete(B)}),this.particleSpritePreparations.set(B,Q)}A.push(Q)}await Promise.all(A)}ensureParticleSpritePipeline(A){const g=this.frameUsesStencil?"pass":"none",I=`particle-sprite-instanced:${A}:${g}`;let B=this.pipelines.get(I);if(B)return B;const{descriptor:Q,dataLayout:E}=this.particleSpritePipelineDescriptor(A,g);return B={pipeline:this.device.createRenderPipeline(Q),bindGroupLayout:E,textureCount:1},this.pipelines.set(I,B),B}particleSpritePipelineDescriptor(A,g){const I=`particle-sprite-instanced:${A}:${g}`;this.ensureInstancedProjectionBuffer();const B=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX,buffer:{type:"uniform",minBindingSize:64}},{binding:1,visibility:GPUShaderStage.VERTEX,buffer:{type:"read-only-storage",minBindingSize:128}}]}),Q=this.device.createShaderModule({code:wA.particleSpriteInstanced}),E=A==="additive";return{descriptor:{label:I,layout:this.device.createPipelineLayout({bindGroupLayouts:[B,this.instancedTextureBindGroupLayout]}),vertex:{module:Q,entryPoint:"vs",buffers:[{arrayStride:8,attributes:[{shaderLocation:0,offset:0,format:"float32x2"}]}]},fragment:{module:Q,entryPoint:"fs",targets:[{format:this.format,blend:E?{color:{srcFactor:"one",dstFactor:"one"},alpha:{srcFactor:"one",dstFactor:"one"}}:{color:{srcFactor:"one",dstFactor:"one-minus-src-alpha"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha"}}}]},primitive:{topology:"triangle-list"},depthStencil:g==="pass"?{format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilWriteMask:0}:void 0,multisample:{count:this.msaaSampleCount}},dataLayout:B}}createInstancedSvgaPipeline(A,g,I){this.ensureInstancedProjectionBuffer(),this.ensureInstancedStorageBuffer();const B=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX,buffer:{type:"uniform",hasDynamicOffset:!1,minBindingSize:64}},{binding:1,visibility:GPUShaderStage.VERTEX,buffer:{type:"read-only-storage",hasDynamicOffset:!0,minBindingSize:BA.SVGA_INSTANCED_STRIDE}}]}),Q=this.instancedTextureBindGroupLayout,E=this.device.createShaderModule({code:g}),e=I==="test"?{format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"equal",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"equal",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilReadMask:255,stencilWriteMask:0}:I==="pass"?{format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilWriteMask:0}:void 0,i=this.device.createRenderPipeline({layout:this.device.createPipelineLayout({bindGroupLayouts:[B,Q]}),vertex:{module:E,entryPoint:"vs",buffers:[{arrayStride:8,attributes:[{shaderLocation:0,offset:0,format:"float32x2"}]}]},fragment:{module:E,entryPoint:"fs",targets:[{format:this.format,blend:{color:{srcFactor:"one",dstFactor:"one-minus-src-alpha"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha"}}}]},primitive:{topology:"triangle-list"},depthStencil:e,multisample:{count:this.msaaSampleCount}});this.pipelines.set(A,{pipeline:i,bindGroupLayout:B,textureCount:1})}createInstancedClipMaskPipeline(){this.ensureInstancedProjectionBuffer(),this.ensureInstancedStorageBuffer();const A=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX,buffer:{type:"uniform",hasDynamicOffset:!1,minBindingSize:64}},{binding:1,visibility:GPUShaderStage.VERTEX,buffer:{type:"read-only-storage",hasDynamicOffset:!0,minBindingSize:BA.CLIP_MASK_INSTANCED_STRIDE}}]}),g=this.device.createShaderModule({code:wA.clipMaskInstanced}),I=this.device.createRenderPipeline({layout:this.device.createPipelineLayout({bindGroupLayouts:[A]}),vertex:{module:g,entryPoint:"vs",buffers:[{arrayStride:8,attributes:[{shaderLocation:0,offset:0,format:"float32x2"}]}]},fragment:{module:g,entryPoint:"fs",targets:[{format:this.format,writeMask:0}]},primitive:{topology:"triangle-list"},depthStencil:{format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"always",passOp:"replace",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"always",passOp:"replace",failOp:"keep",depthFailOp:"keep"},stencilReadMask:255,stencilWriteMask:255},multisample:{count:this.msaaSampleCount}});this.pipelines.set("clip-mask-instanced:write",{pipeline:I,bindGroupLayout:A,textureCount:0})}createVapInstancedPipeline(A){this.ensureInstancedProjectionBuffer(),this.ensureInstancedStorageBuffer();const g=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX,buffer:{type:"uniform",hasDynamicOffset:!1,minBindingSize:64}},{binding:1,visibility:GPUShaderStage.VERTEX,buffer:{type:"read-only-storage",hasDynamicOffset:!0,minBindingSize:BA.VAP_INSTANCED_STRIDE}}]}),I=this.instancedTextureBindGroupLayout,B=this.device.createShaderModule({code:wA.vapInstanced}),Q=this.device.createRenderPipeline({layout:this.device.createPipelineLayout({bindGroupLayouts:[g,I]}),vertex:{module:B,entryPoint:"vs",buffers:[{arrayStride:16,attributes:[{shaderLocation:0,offset:0,format:"float32x2"},{shaderLocation:1,offset:8,format:"float32x2"}]}]},fragment:{module:B,entryPoint:"fs",targets:[{format:this.format,blend:{color:{srcFactor:"one",dstFactor:"one-minus-src-alpha"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha"}}}]},primitive:{topology:"triangle-list"},depthStencil:A==="pass"?{format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilWriteMask:0}:void 0,multisample:{count:this.msaaSampleCount}});this.pipelines.set(`vap-instanced:${A}`,{pipeline:Q,bindGroupLayout:g,textureCount:1})}createInstancedAlphaVideoPipeline(A){this.ensureInstancedProjectionBuffer(),this.ensureInstancedStorageBuffer();const g=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX,buffer:{type:"uniform",hasDynamicOffset:!1,minBindingSize:64}},{binding:1,visibility:GPUShaderStage.VERTEX,buffer:{type:"read-only-storage",hasDynamicOffset:!0,minBindingSize:BA.ALPHA_INSTANCED_STRIDE}}]}),I=this.instancedTextureBindGroupLayout,B=this.device.createShaderModule({code:wA.alphaVideoInstanced}),Q=this.device.createRenderPipeline({layout:this.device.createPipelineLayout({bindGroupLayouts:[g,I]}),vertex:{module:B,entryPoint:"vs",buffers:[{arrayStride:16,attributes:[{shaderLocation:0,offset:0,format:"float32x2"},{shaderLocation:1,offset:8,format:"float32x2"}]}]},fragment:{module:B,entryPoint:"fs",targets:[{format:this.format,blend:{color:{srcFactor:"one",dstFactor:"one-minus-src-alpha"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha"}}}]},primitive:{topology:"triangle-list"},depthStencil:A==="pass"?{format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilWriteMask:0}:void 0,multisample:{count:this.msaaSampleCount}});this.pipelines.set(`alpha-video-instanced:${A}`,{pipeline:Q,bindGroupLayout:g,textureCount:1})}createTexturedPipeline(A,g,I,B,Q,E,e=1){const i=this.device.createShaderModule({code:g}),t=E==="test"?{format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"equal",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"equal",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilReadMask:255,stencilWriteMask:0}:E==="pass"?{format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilWriteMask:0}:void 0,a=this.device.createRenderPipeline({layout:this.device.createPipelineLayout({bindGroupLayouts:[I]}),vertex:{module:i,entryPoint:"vs",buffers:[{arrayStride:Q,attributes:B}]},fragment:{module:i,entryPoint:"fs",targets:[{format:this.format,blend:{color:{srcFactor:"one",dstFactor:"one-minus-src-alpha"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha"}}}]},primitive:{topology:"triangle-list"},depthStencil:t,multisample:{count:this.msaaSampleCount}});this.pipelines.set(A,{pipeline:a,bindGroupLayout:I,textureCount:e})}createClipMaskPipeline(A){const g=this.device.createShaderModule({code:wA.clipMask}),I=this.device.createRenderPipeline({layout:this.device.createPipelineLayout({bindGroupLayouts:[A]}),vertex:{module:g,entryPoint:"vs",buffers:[{arrayStride:8,attributes:[{shaderLocation:0,offset:0,format:"float32x2"}]}]},fragment:{module:g,entryPoint:"fs",targets:[{format:this.format,writeMask:0}]},primitive:{topology:"triangle-list"},depthStencil:{format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"always",passOp:"replace",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"always",passOp:"replace",failOp:"keep",depthFailOp:"keep"},stencilReadMask:255,stencilWriteMask:255},multisample:{count:this.msaaSampleCount}});this.pipelines.set("clip-mask:write",{pipeline:I,bindGroupLayout:A,textureCount:0})}beginFrame(A={}){if(this.deviceLost)return $("backend-lost","WebGPU device is lost");if(this.uncapturedErrorRequiresQuarantine)return $("validation-error","WebGPU reported an uncaptured error after the previous submission");try{const g=this.canvas.width,I=this.canvas.height;(g!==this.configuredCanvasWidth||I!==this.configuredCanvasHeight)&&this.configureCanvasContext();const B=A.stencil===!0;this.frameUsesStencil=B,this.ensureFrameAttachments(g,I,B),B&&this.ensureStencilPipelines(),this.encoder=this.device.createCommandEncoder();const Q=this.context.getCurrentTexture().createView(),E=this.msaaSampleCount>1&&this.msaaColorView?{view:this.msaaColorView,resolveTarget:Q,clearValue:{r:0,g:0,b:0,a:0},loadOp:"clear",storeOp:"discard"}:{view:Q,clearValue:{r:0,g:0,b:0,a:0},loadOp:"clear",storeOp:"store"};this.uniformSlotIndex=0,this.instancedStorageRingOffset=0,this.svgaCompactSlotStateUploadId=-1,this.svgaCompactSlotStateStorageBase=-1,this.svgaCompactSlotStateByteLength=0,this.instancedStorageShadowDirtyMax=0,this.lastClipMaskStorageBase=-1,this.lastClipMaskStorageByteLength=0,this.uniformShadowDirtyMin=1/0,this.uniformShadowDirtyMax=0,this.lastDrawPipeline=null,this.lastStencilRef=-1,this.lastVertexBufferId=-1,this.lastIndexBufferId=-1,this.lastInstancedTextureBindGroup=null;const e={colorAttachments:[E]};return B&&(e.depthStencilAttachment={view:this.depthStencilView,stencilClearValue:0,stencilLoadOp:"clear",stencilStoreOp:"discard",depthClearValue:1,depthLoadOp:"clear",depthStoreOp:"discard"}),this.passEncoder=this.encoder.beginRenderPass(e),ag}catch(g){return this.passEncoder=null,this.encoder=null,$("submission-error",this.errorMessage(g))}}endFrame(){if(this.deviceLost)return $("backend-lost","WebGPU device is lost");if(!this.passEncoder||!this.encoder)return $("invalid-command","WebGPU frame is not active");try{return this.passEncoder.end(),this.flushUniformShadow(),this.flushInstancedStorageShadow(),this.device.queue.submit([this.encoder.finish()]),this.passEncoder=null,this.encoder=null,ag}catch(A){return this.passEncoder=null,this.encoder=null,$("submission-error",this.errorMessage(A))}}abortFrame(){if(this.deviceLost)return $("backend-lost","WebGPU device is lost");const A=this.uncapturedErrorRequiresQuarantine;if(this.passEncoder)try{this.passEncoder.end()}catch(g){return this.passEncoder=null,this.encoder=null,$("submission-error",this.errorMessage(g))}return this.passEncoder=null,this.encoder=null,this.instancedStorageShadowDirtyMax=0,this.uniformShadowDirtyMin=1/0,this.uniformShadowDirtyMax=0,this.lastDrawPipeline=null,this.lastStencilRef=-1,this.lastVertexBufferId=-1,this.lastIndexBufferId=-1,A?$("validation-error","WebGPU backend is quarantined after an uncaptured error"):(this.lastInstancedTextureBindGroup=null,this.svgaCompactSlotStateUploadId=-1,this.svgaCompactSlotStateStorageBase=-1,this.svgaCompactSlotStateByteLength=0,ag)}errorMessage(A){return A instanceof Error?A.message:String(A)}getPerformanceSnapshot(){return{bufferWrites:this.performanceBufferWrites,bufferWriteBytes:this.performanceBufferWriteBytes,storageBufferWrites:this.performanceStorageBufferWrites,storageBufferWriteBytes:this.performanceStorageBufferWriteBytes,submittedDrawCalls:this.performanceSubmittedDrawCalls,rejectedDrawCalls:this.performanceRejectedDrawCalls,svgaDynamicUploadWrites:this.performanceSVGADynamicUploadWrites,svgaDynamicUploadBytes:this.performanceSVGADynamicUploadBytes}}resetPerformanceSnapshot(){this.performanceBufferWrites=0,this.performanceBufferWriteBytes=0,this.performanceStorageBufferWrites=0,this.performanceStorageBufferWriteBytes=0,this.performanceSubmittedDrawCalls=0,this.performanceRejectedDrawCalls=0,this.performanceSVGADynamicUploadWrites=0,this.performanceSVGADynamicUploadBytes=0}getRuntimeDiagnosticsSnapshot(){return{submittedDrawCalls:this.runtimeSubmittedDrawCalls,rejectedDrawCalls:this.runtimeRejectedDrawCalls,webgpuUncapturedErrors:this.runtimeUncapturedErrors,backendLosses:this.runtimeBackendLosses}}setRuntimeDiagnosticHandler(A){this.runtimeDiagnosticHandler=A}setDeviceLostHandler(A){this.deviceLostHandler=A}recordSubmittedDraw(){this.currentDrawResult=ag,this.currentDrawRecorded=!0,this.performanceSubmittedDrawCalls++,this.runtimeSubmittedDrawCalls++}rejectSVGAFastPathDraw(){this.currentDrawRecorded=!0,this.currentDrawResult.submitted&&(this.currentDrawResult=$("invalid-command","WebGPU draw was rejected")),this.performanceRejectedDrawCalls++,this.runtimeRejectedDrawCalls++}writeBuffer(A,g,I,B,Q,E="generic"){const e=(ArrayBuffer.isView(I),I.byteLength),i=Number(B!=null?B:0),t=Number(Q!=null?Q:Math.max(0,e-i));this.performanceBufferWrites++,this.performanceBufferWriteBytes+=t,E==="storage"&&(this.performanceStorageBufferWrites++,this.performanceStorageBufferWriteBytes+=t),this.device.queue.writeBuffer(A,g,I,B,Q)}flushUniformShadow(){if(this.uniformShadowDirtyMax<=this.uniformShadowDirtyMin)return;const A=this.uniformShadow,g=this.uniformShadowDirtyMin,I=this.uniformShadowDirtyMax;this.writeBuffer(this.uniformBuffer,g,A.buffer,A.byteOffset+g,I-g),this.uniformShadowDirtyMin=1/0,this.uniformShadowDirtyMax=0}flushInstancedStorageShadow(){const A=this.instancedStorageShadowDirtyMax;if(A<=0)return;const g=this.instancedStorageShadow;this.writeBuffer(this.ensureInstancedStorageBuffer(),0,g.buffer,g.byteOffset,A,"storage"),this.instancedStorageShadowDirtyMax=0}writeInstancedStorageShadow(A,g,I){const B=A+I;if(this.instancedStorageShadow.byteLength<B){let Q=Math.max(256,this.instancedStorageShadow.byteLength);for(;Q<B;)Q=Math.min(Hg,Q*2);const E=new Uint8Array(Q);E.set(this.instancedStorageShadow),this.instancedStorageShadow=E}this.instancedStorageShadow.set(new Uint8Array(g.buffer,g.byteOffset,I),A),B>this.instancedStorageShadowDirtyMax&&(this.instancedStorageShadowDirtyMax=B)}writeUniformShadow(A,g,I){this.uniformShadow.set(new Uint8Array(g.buffer,g.byteOffset,I),A),A<this.uniformShadowDirtyMin&&(this.uniformShadowDirtyMin=A);const B=A+I;B>this.uniformShadowDirtyMax&&(this.uniformShadowDirtyMax=B)}ensureInstancedProjection(A){if(A.length<16)return;if(this.instancedProjectionValid){let I=!0;for(let B=0;B<16;B++)if(this.instancedProjectionCache[B]!==A[B]){I=!1;break}if(I)return}const g=this.ensureInstancedProjectionBuffer();this.instancedProjectionCache.set(A.length===16?A:A.subarray(0,16)),this.instancedProjectionValid=!0,this.writeBuffer(g,0,A.buffer,A.byteOffset,64)}gpuBufferUsage(A){let g=GPUBufferUsage.COPY_DST;return A==="vertex"?g|=GPUBufferUsage.VERTEX:A==="index"?g|=GPUBufferUsage.INDEX:A==="storage"?g|=GPUBufferUsage.STORAGE:g|=GPUBufferUsage.UNIFORM,g}bufferSourceByteLength(A){return ArrayBuffer.isView(A),A.byteLength}mappedUploadView(A){if(A instanceof ArrayBuffer)return new Uint8Array(A);if(typeof SharedArrayBuffer!="undefined"&&A instanceof SharedArrayBuffer)return new Uint8Array(new Uint8Array(A));const g=A,I=new Uint8Array(g.buffer,g.byteOffset,g.byteLength);return typeof SharedArrayBuffer!="undefined"&&g.buffer instanceof SharedArrayBuffer?new Uint8Array(I):I}writeBufferSource(A,g,I){if(I instanceof ArrayBuffer){this.writeBuffer(A,g,I);return}if(typeof SharedArrayBuffer!="undefined"&&I instanceof SharedArrayBuffer){this.writeBuffer(A,g,new Uint8Array(new Uint8Array(I)));return}const B=I;if(typeof SharedArrayBuffer!="undefined"&&B.buffer instanceof SharedArrayBuffer){this.writeBuffer(A,g,new Uint8Array(new Uint8Array(B.buffer,B.byteOffset,B.byteLength)));return}this.writeBuffer(A,g,B.buffer,B.byteOffset,B.byteLength)}createSVGAFrameTable(A,g){var I,B;const Q=this.mappedUploadView(A);if(Q.byteLength<BA.SVGA_FRAME_TABLE_ROW_BYTES||Q.byteLength%BA.SVGA_FRAME_TABLE_ROW_BYTES!==0)throw new RangeError(`SVGA frame table byte length must be a positive multiple of ${BA.SVGA_FRAME_TABLE_ROW_BYTES}, got ${Q.byteLength}`);const E=Math.floor(g.spriteCount),e=Math.floor(g.frameCount),i=E*e;if(!Number.isSafeInteger(E)||!Number.isSafeInteger(e)||E<1||e<1||!Number.isSafeInteger(i)||i*BA.SVGA_FRAME_TABLE_ROW_BYTES!==Q.byteLength)throw new RangeError(`SVGA frame table dimensions do not match byte length: ${E}x${e}, ${Q.byteLength} bytes`);const t=(I=g.spriteMetadata)!=null?I:g.metadata,a=g.hybridSpriteMetadata;let o=null;if(t){const w=E*4,D=E*NI;if(t.length===w){o=new Float32Array(D);for(let y=0;y<E;y++){const R=y*4,F=y*NI;o.set(t.subarray(R,R+4),F),o[F+4]=y}}else{if(t.length!==D)throw new RangeError(`SVGA sprite metadata requires ${w} or ${D} floats, got ${t.length}`);o=t}}const s=(B=this.device.limits)==null?void 0:B.maxStorageBufferBindingSize;if(typeof s=="number"&&Number.isFinite(s)&&(Q.byteLength>s||o&&o.byteLength>s||a&&a.byteLength>s))throw new RangeError(`SVGA frame table exceeds maxStorageBufferBindingSize=${s}; use CPU/hybrid fallback`);const n=this.createBuffer(Q,"storage");let r,c;try{if(r=o?this.createBuffer(o,"storage"):void 0,a){if(a.length<ZI||a.length%ZI!==0)throw new RangeError("SVGA Hybrid sprite metadata must contain complete 12-float rows");c=this.createBuffer(a,"storage")}}catch(w){throw c&&this.deleteBuffer(c),r&&this.deleteBuffer(r),this.deleteBuffer(n),w}const h=g.atlasPageCount,l=Number.isFinite(h)&&h>0?Math.floor(h):1;return{backend:"webgpu",kind:"webgpu-buffer",buffer:n,...r?{spriteMetadataBuffer:r}:{},...c?{hybridSpriteMetadataBuffer:c}:{},spriteCount:E,frameCount:e,atlasPageCount:l,strideFloats:tE,byteLength:Q.byteLength}}deleteSVGAFrameTable(A){var g;A.backend==="webgpu"&&(A.spriteMetadataBuffer&&A.spriteMetadataBuffer.id!==A.buffer.id&&this.deleteBuffer(A.spriteMetadataBuffer),A.hybridSpriteMetadataBuffer&&A.hybridSpriteMetadataBuffer.id!==A.buffer.id&&A.hybridSpriteMetadataBuffer.id!==((g=A.spriteMetadataBuffer)==null?void 0:g.id)&&this.deleteBuffer(A.hybridSpriteMetadataBuffer),this.deleteBuffer(A.buffer))}createBuffer(A,g){const I=this.mappedUploadView(A),B=this.device.createBuffer({size:Math.max(I.byteLength,4),usage:this.gpuBufferUsage(g),mappedAtCreation:!0});new Uint8Array(B.getMappedRange()).set(I),B.unmap();const Q=this.nextId++;return this.buffers.set(Q,{buffer:B,usage:g}),{id:Q,usage:g}}updateBuffer(A,g,I=0){const B=this.buffers.get(A.id);if(!B)return;const Q=Math.max(0,Math.floor(I)),E=this.bufferSourceByteLength(g),e=Math.max(4,Q+E);e>B.buffer.size&&(B.buffer.destroy(),B.buffer=this.device.createBuffer({size:e,usage:this.gpuBufferUsage(B.usage)}),B.usage==="vertex"&&this.lastVertexBufferId===A.id&&(this.lastVertexBufferId=-1),B.usage==="index"&&this.lastIndexBufferId===A.id&&(this.lastIndexBufferId=-1)),this.writeBufferSource(B.buffer,Q,g)}deleteBuffer(A){const g=this.buffers.get(A.id);if(g){g.buffer.destroy(),this.buffers.delete(A.id),this.motionDataBindGroupCache.clear();for(const I of Array.from(this.svgaFrameTableDataBindGroupCache.keys()))I.split(":").includes(String(A.id))&&this.svgaFrameTableDataBindGroupCache.delete(I);for(const I of Array.from(this.particleDataBindGroupCache.keys()))I.split(":").includes(String(A.id))&&this.particleDataBindGroupCache.delete(I)}}copyHtmlVideoToTextureDirect(A,g,I,B){if(this.videoElementPreferCanvasBridge)return!1;try{return this.device.queue.copyExternalImageToTexture({source:B,flipY:!0},{texture:A},[g,I]),!0}catch(Q){return this.videoElementPreferCanvasBridge=!0,console.debug("[WebGPU] copyExternalImageToTexture(<video>) failed; using canvas bridge.",Q),!1}}copyVideoFrameToTextureDirect(A,g,I,B){if(this.videoFramePreferCanvasBridge)return!1;try{return this.device.queue.copyExternalImageToTexture({source:B,flipY:!0},{texture:A},[g,I]),!0}catch(Q){return this.videoFramePreferCanvasBridge=!0,console.debug("[WebGPU] copyExternalImageToTexture(VideoFrame) failed; using canvas bridge.",Q),!1}}drawVideoLikeSourceToTexture(A,g,I,B){this.videoUploadCanvas||(this.videoUploadCanvas=document.createElement("canvas"),this.videoUploadCtx=this.videoUploadCanvas.getContext("2d"));const Q=this.videoUploadCanvas,E=this.videoUploadCtx;E&&((Q.width!==g||Q.height!==I)&&(Q.width=g,Q.height=I),E.drawImage(B,0,0,g,I),this.device.queue.copyExternalImageToTexture({source:Q,flipY:!0},{texture:A},[g,I]))}copyImageSourceToTexture(A,g,I,B,Q=!1){if(typeof VideoFrame!="undefined"&&B instanceof VideoFrame){const E=B,e=E.displayWidth||E.codedWidth,i=E.displayHeight||E.codedHeight;if(!e||!i||!g||!I||this.copyVideoFrameToTextureDirect(A,g,I,E))return;this.drawVideoLikeSourceToTexture(A,g,I,E);return}if(B instanceof HTMLVideoElement){const E=B,e=E.videoWidth,i=E.videoHeight;if(E.readyState<HTMLMediaElement.HAVE_CURRENT_DATA||!e||!i||!g||!I)return;if(E.readyState<HTMLMediaElement.HAVE_ENOUGH_DATA){this.drawVideoLikeSourceToTexture(A,g,I,E);return}if(this.copyHtmlVideoToTextureDirect(A,g,I,E))return;this.drawVideoLikeSourceToTexture(A,g,I,E);return}this.device.queue.copyExternalImageToTexture({source:B},{texture:A,premultipliedAlpha:Q},[g,I])}createTexture(A,g){var I,B;const Q=(I=g.width)!=null?I:1,E=(B=g.height)!=null?B:1,e=this.device.createTexture({size:[Q,E],format:"rgba8unorm",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.RENDER_ATTACHMENT});if(A instanceof ArrayBuffer){const t=Q*4,a=Math.ceil(t/256)*256;if(a===t||E===1)this.device.queue.writeTexture({texture:e},A,{bytesPerRow:t},[Q,E]);else{const o=new Uint8Array(A),s=new Uint8Array(a*E);for(let n=0;n<E;n++)s.set(o.subarray(n*t,(n+1)*t),n*a);this.device.queue.writeTexture({texture:e},s,{bytesPerRow:a},[Q,E])}}else this.copyImageSourceToTexture(e,Q,E,A,g.premultiplyAlpha===!0);const i=this.nextId++;return this.textures.set(i,{texture:e,view:e.createView(),width:Q,height:E}),{id:i,width:Q,height:E}}createEmptyTexture(A,g,I={}){const B=Math.max(1,Math.floor(A)),Q=Math.max(1,Math.floor(g)),E=this.device.createTexture({size:[B,Q],format:"rgba8unorm",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.RENDER_ATTACHMENT}),e=this.nextId++;return this.textures.set(e,{texture:E,view:E.createView(),width:B,height:Q}),{id:e,width:B,height:Q}}updateTexture(A,g){const I=this.textures.get(A.id);I&&this.copyImageSourceToTexture(I.texture,I.width,I.height,g)}updateTextureRegion(A,g,I,B,Q,E){const e=this.textures.get(A.id);if(!e)return;const i={texture:e.texture,origin:{x:Math.floor(I),y:Math.floor(B)}};if(typeof VideoFrame!="undefined"&&g instanceof VideoFrame){const s=g,n=s.displayWidth||s.codedWidth,r=s.displayHeight||s.codedHeight;if(!n||!r)return;const c=Q!=null?Q:n,h=E!=null?E:r;if(c!==n||h!==r){this.drawVideoLikeSourceToTextureRegion(e.texture,c,h,s,i.origin.x,i.origin.y);return}if(this.copyVideoFrameToTextureRegionDirect(e.texture,n,r,s,i.origin.x,i.origin.y))return;this.drawVideoLikeSourceToTextureRegion(e.texture,n,r,s,i.origin.x,i.origin.y);return}if(g instanceof HTMLVideoElement){const s=g,n=s.videoWidth,r=s.videoHeight;if(s.readyState<HTMLMediaElement.HAVE_CURRENT_DATA||!n||!r)return;const c=Q!=null?Q:n,h=E!=null?E:r;if(c!==n||h!==r){this.drawVideoLikeSourceToTextureRegion(e.texture,c,h,s,i.origin.x,i.origin.y);return}if(s.readyState<HTMLMediaElement.HAVE_ENOUGH_DATA){this.drawVideoLikeSourceToTextureRegion(e.texture,n,r,s,i.origin.x,i.origin.y);return}if(this.copyHtmlVideoToTextureRegionDirect(e.texture,n,r,s,i.origin.x,i.origin.y))return;this.drawVideoLikeSourceToTextureRegion(e.texture,n,r,s,i.origin.x,i.origin.y);return}const t=g,a=Q!=null?Q:t.width,o=E!=null?E:t.height;if(a!==t.width||o!==t.height){this.drawVideoLikeSourceToTextureRegion(e.texture,a,o,t,i.origin.x,i.origin.y);return}this.device.queue.copyExternalImageToTexture({source:t},i,[t.width,t.height])}copyHtmlVideoToTextureRegionDirect(A,g,I,B,Q,E){if(this.videoElementPreferCanvasBridge)return!1;try{return this.device.queue.copyExternalImageToTexture({source:B,flipY:!0},{texture:A,origin:{x:Q,y:E}},[g,I]),!0}catch(e){return this.videoElementPreferCanvasBridge=!0,console.debug("[WebGPU] copyExternalImageToTexture(<video> region) failed; using canvas bridge.",e),!1}}copyVideoFrameToTextureRegionDirect(A,g,I,B,Q,E){if(this.videoFramePreferCanvasBridge)return!1;try{return this.device.queue.copyExternalImageToTexture({source:B,flipY:!0},{texture:A,origin:{x:Q,y:E}},[g,I]),!0}catch(e){return this.videoFramePreferCanvasBridge=!0,console.debug("[WebGPU] copyExternalImageToTexture(VideoFrame region) failed; using canvas bridge.",e),!1}}drawVideoLikeSourceToTextureRegion(A,g,I,B,Q,E){this.videoUploadCanvas||(this.videoUploadCanvas=document.createElement("canvas"),this.videoUploadCtx=this.videoUploadCanvas.getContext("2d"));const e=this.videoUploadCanvas,i=this.videoUploadCtx;i&&((e.width!==g||e.height!==I)&&(e.width=g,e.height=I),i.drawImage(B,0,0,g,I),this.device.queue.copyExternalImageToTexture({source:e,flipY:!0},{texture:A,origin:{x:Q,y:E}},[g,I]))}deleteTexture(A){const g=this.textures.get(A.id);if(g){g.texture.destroy(),this.textures.delete(A.id),this.texturedBindGroupCache.delete(A.id),this.dualTexturedBindGroupCache.delete(A.id);for(const[I,B]of this.dualTexturedBindGroupCache)B.delete(A.id),B.size===0&&this.dualTexturedBindGroupCache.delete(I);this.instancedTextureBindGroupCache.delete(A.id);for(const I of Array.from(this.particleDataBindGroupCache.keys()))I.endsWith(`:${A.id}`)&&this.particleDataBindGroupCache.delete(I)}}draw(A){const g=A.shader;if(this.currentDrawResult=$("invalid-command",`WebGPU rejected ${g}`),this.currentDrawRecorded=!1,this.deviceLost)return this.currentDrawResult=$("backend-lost","WebGPU device is lost"),this.rejectSVGAFastPathDraw(),this.currentDrawResult;if(!this.passEncoder)return this.rejectSVGAFastPathDraw(),this.currentDrawResult=$("invalid-command","WebGPU frame is not active"),this.currentDrawResult;if((A.stencil!=null&&A.stencil!=="none"||g==="clip-mask"||g==="clip-mask-instanced"||g==="svga-frame-table-clip-mask")&&!this.frameUsesStencil)return this.rejectSVGAFastPathDraw(),this.currentDrawResult=$("invalid-command",`WebGPU ${g} requires a depth-stencil attachment in the active frame`),this.currentDrawResult;try{this.drawInternal(A)}catch(B){return this.currentDrawResult=$("submission-error",this.errorMessage(B)),this.currentDrawRecorded||this.rejectSVGAFastPathDraw(),this.currentDrawResult}return this.currentDrawRecorded||this.rejectSVGAFastPathDraw(),this.currentDrawResult}drawInternal(A){var g,I,B,Q,E,e,i;const t=A.shader;if(t===IQ||t==="svga-timeline-instanced-premul"||t==="svga-frame-table-shape-premul"||t==="svga-frame-table-clip-mask"){this.drawSVGAFrameTableInstanced(A);return}if(A.shader==="svga-instanced-premul"){this.drawInstancedSvga(A);return}if(A.shader==="svga-motion-instanced-premul"){this.drawMotionInstancedSvga(A);return}if(A.shader==="clip-mask-instanced"){this.drawInstancedClipMask(A);return}if(A.shader==="alpha-video-instanced"){this.drawInstancedAlpha(A);return}if(A.shader==="vap-instanced"){this.drawInstancedVap(A);return}if(A.shader==="particle-instanced"||A.shader==="particle-sprite-instanced"){this.drawInstancedParticles(A);return}const a=(g=A.stencil)!=null?g:"none",o=A.shader==="clip-mask"||a==="clear"?"clip-mask:write":`${A.shader}:${a==="none"&&this.frameUsesStencil?"pass":a}`,s=this.pipelines.get(o);if(!s)return;const n=this.passEncoder,r=s.pipeline;this.lastDrawPipeline!==r&&(n.setPipeline(r),this.lastDrawPipeline=r,this.lastInstancedTextureBindGroup=null);let c=0;a==="clear"?c=0:(a==="write"||A.shader==="clip-mask"||a==="test")&&(c=1),this.frameUsesStencil&&this.lastStencilRef!==c&&(n.setStencilReference(c),this.lastStencilRef=c);const h=this.uniformSlotIndex++;if(h>=this.maxUniformSlots){console.warn("[WebGPU] uniform slot overflow; increase maxUniformSlots");return}const l=h*this.uniformSlotStride,w=A.uniforms.u_projection;if(s.textureCount>0){const d=A.uniforms.u_transform,f=d instanceof Float32Array&&d.length>=16?d:gQ,u=A.uniforms.u_atlasRemap,G=u instanceof Float32Array&&u.length>=4?u:ji,S=typeof A.uniforms.u_opacity=="number"?A.uniforms.u_opacity:1,M=typeof A.uniforms.u_rgbPremultiplied=="number"?A.uniforms.u_rgbPremultiplied:1;if(w instanceof Float32Array&&w.length>=16){const N=this.uniformScratch160;N.set(w.length===16?w:w.subarray(0,16),0),N.set(f.length===16?f:f.subarray(0,16),16),N.set(G.length===4?G:G.subarray(0,4),32),N[36]=S,N[37]=M,N[38]=0,N[39]=0,this.writeUniformShadow(l,N,160)}else{this.writeUniformShadow(l+64,f,64),this.writeUniformShadow(l+128,G,16);const N=this.uniformOpacityScratch;N[0]=S,N[1]=M,N[2]=0,N[3]=0,this.writeUniformShadow(l+144,N,N.byteLength)}}else if(w instanceof Float32Array&&w.length>=16){const d=A.uniforms.u_transform,f=d instanceof Float32Array&&d.length>=16?d:gQ,u=this.uniformScratch128;u.set(w.length===16?w:w.subarray(0,16),0),u.set(f.length===16?f:f.subarray(0,16),16),this.writeUniformShadow(l,u,128)}if(s.textureCount===1){const d=A.textures.length>0?A.textures[0]:null,f=d?this.textures.get(d.id):null,u=(I=f==null?void 0:f.view)!=null?I:this.dummyTextureView,G=(B=d==null?void 0:d.id)!=null?B:0;let S=this.texturedBindGroupCache.get(G);S||(S=this.device.createBindGroup({layout:this.texturedBindGroupLayout,entries:[{binding:0,resource:{buffer:this.uniformBuffer,offset:0,size:160}},{binding:1,resource:u},{binding:2,resource:this.sampler}]}),this.texturedBindGroupCache.set(G,S)),n.setBindGroup(0,S,[l])}else if(s.textureCount===2){const d=A.textures[0],f=A.textures[1],u=d?this.textures.get(d.id):null,G=f?this.textures.get(f.id):null,S=(Q=d==null?void 0:d.id)!=null?Q:0,M=(E=f==null?void 0:f.id)!=null?E:0;let N=this.dualTexturedBindGroupCache.get(S);N||(N=new Map,this.dualTexturedBindGroupCache.set(S,N));let U=N.get(M);U||(U=this.device.createBindGroup({layout:this.dualTexturedBindGroupLayout,entries:[{binding:0,resource:{buffer:this.uniformBuffer,offset:0,size:160}},{binding:1,resource:(e=u==null?void 0:u.view)!=null?e:this.dummyTextureView},{binding:2,resource:(i=G==null?void 0:G.view)!=null?i:this.dummyTextureView},{binding:3,resource:this.sampler}]}),N.set(M,U)),n.setBindGroup(0,U,[l])}else s.uniformOnlyBindGroup||(s.uniformOnlyBindGroup=this.device.createBindGroup({layout:s.bindGroupLayout,entries:[{binding:0,resource:{buffer:this.uniformBuffer,offset:0,size:128}}]})),n.setBindGroup(0,s.uniformOnlyBindGroup,[l]);const D=this.buffers.get(A.vertexBuffer.id),y=this.buffers.get(A.indexBuffer.id);if(!D||!y)return;const R=A.vertexBuffer.id,F=A.indexBuffer.id;this.lastVertexBufferId!==R&&(n.setVertexBuffer(0,D.buffer),this.lastVertexBufferId=R),this.lastIndexBufferId!==F&&(n.setIndexBuffer(y.buffer,"uint32"),this.lastIndexBufferId=F),n.drawIndexed(A.indexCount),this.recordSubmittedDraw()}drawInstancedSvga(A){var g,I,B;const Q=this.passEncoder,E=(g=A.instanceCount)!=null?g:0,e=A.instanceData,i=BA.SVGA_INSTANCED_STRIDE/4;if(E<1||!e||e.length<E*i)return;if(E>BA.SVGA_INSTANCED_MAX){console.warn("[WebGPU] svga-instanced-premul: instanceCount exceeds max",E);return}const t=A.stencil==="test"?"test":this.frameUsesStencil?"pass":"none",a=this.ensureInstancedSvgaPipeline(t),o=a.pipeline;this.lastDrawPipeline!==o&&(Q.setPipeline(o),this.lastDrawPipeline=o,this.lastInstancedTextureBindGroup=null);const s=t==="test"?1:0;this.frameUsesStencil&&this.lastStencilRef!==s&&(Q.setStencilReference(s),this.lastStencilRef=s);const n=A.uniforms.u_projection;if(!(n instanceof Float32Array)||n.length<16)return;const r=this.buffers.get(A.vertexBuffer.id),c=this.buffers.get(A.indexBuffer.id);if(!r||!c)return;this.ensureInstancedProjection(n);const h=E*BA.SVGA_INSTANCED_STRIDE,l=this.instancedStorageRingOffset;if(l+h>Hg){console.warn("[WebGPU] instanced SVGA storage ring full");return}this.instancedStorageRingOffset+=iI(h,this.storageBindOffsetAlign),this.writeInstancedStorageShadow(l,e,h),this.performanceSVGADynamicUploadWrites++,this.performanceSVGADynamicUploadBytes+=h;const w=A.textures[0],D=w?this.textures.get(w.id):null,y=(I=D==null?void 0:D.view)!=null?I:this.dummyTextureView,R=(B=w==null?void 0:w.id)!=null?B:0;let F=this.instancedTextureBindGroupCache.get(R);F||(F=this.device.createBindGroup({layout:this.instancedTextureBindGroupLayout,entries:[{binding:0,resource:y},{binding:1,resource:this.sampler}]}),this.instancedTextureBindGroupCache.set(R,F)),Q.setBindGroup(0,this.ensureInstancedDataBindGroup(a,h),[l]),this.lastInstancedTextureBindGroup!==F&&(Q.setBindGroup(1,F),this.lastInstancedTextureBindGroup=F);const d=A.vertexBuffer.id,f=A.indexBuffer.id;this.lastVertexBufferId!==d&&(Q.setVertexBuffer(0,r.buffer),this.lastVertexBufferId=d),this.lastIndexBufferId!==f&&(Q.setIndexBuffer(c.buffer,"uint32"),this.lastIndexBufferId=f),Q.drawIndexed(A.indexCount,E,0,0,0),this.recordSubmittedDraw()}drawInstancedClipMask(A){var g;const I=this.passEncoder,B=(g=A.instanceCount)!=null?g:0,Q=A.instanceData;if(B<1||!Q||Q.length<B*6)return;if(B>BA.CLIP_MASK_INSTANCED_MAX){console.warn("[WebGPU] clip-mask-instanced: instanceCount exceeds max",B);return}const E=this.ensureInstancedClipMaskPipeline(),e=E.pipeline;this.lastDrawPipeline!==e&&(I.setPipeline(e),this.lastDrawPipeline=e,this.lastInstancedTextureBindGroup=null);const i=A.stencil==="clear",t=i?0:1;this.lastStencilRef!==t&&(I.setStencilReference(t),this.lastStencilRef=t);const a=A.uniforms.u_projection;if(!(a instanceof Float32Array)||a.length<16)return;const o=this.buffers.get(A.vertexBuffer.id),s=this.buffers.get(A.indexBuffer.id);if(!o||!s)return;this.ensureInstancedProjection(a);const n=B*BA.CLIP_MASK_INSTANCED_STRIDE;let r=this.lastClipMaskStorageBase;if(!i||r<0||this.lastClipMaskStorageByteLength!==n){if(r=this.instancedStorageRingOffset,r+n>Hg){console.warn("[WebGPU] instanced clip-mask storage ring full");return}this.instancedStorageRingOffset+=iI(n,this.storageBindOffsetAlign),this.writeInstancedStorageShadow(r,Q,n),this.lastClipMaskStorageBase=r,this.lastClipMaskStorageByteLength=n}I.setBindGroup(0,this.ensureInstancedDataBindGroup(E,n),[r]),this.lastVertexBufferId!==A.vertexBuffer.id&&(I.setVertexBuffer(0,o.buffer),this.lastVertexBufferId=A.vertexBuffer.id),this.lastIndexBufferId!==A.indexBuffer.id&&(I.setIndexBuffer(s.buffer,"uint32"),this.lastIndexBufferId=A.indexBuffer.id),I.drawIndexed(A.indexCount,B,0,0,0),this.recordSubmittedDraw(),i&&(this.lastClipMaskStorageBase=-1,this.lastClipMaskStorageByteLength=0)}drawSVGAFrameTableInstanced(A){var g,I,B,Q,E,e,i,t,a,o,s,n,r,c,h,l;const w=this.passEncoder,D=A.shader==="svga-frame-table-shape-premul"||A.shader==="svga-frame-table-clip-mask",y=Math.floor((g=A.instanceCount)!=null?g:D?1:0);if(y<1||y>BA.SVGA_FRAME_TABLE_INSTANCE_MAX){y>BA.SVGA_FRAME_TABLE_INSTANCE_MAX&&console.warn("[WebGPU] svga-frame-table-instanced-premul: sprite count exceeds max",y);return}const R=(I=A.svgaFrameTable)!=null?I:null,F=R&&typeof R=="object"&&"backend"in R?R:null,d=(F==null?void 0:F.backend)==="webgpu"?F.buffer:R&&"id"in R?R:(Q=(B=A.svgaFrameTableBuffer)!=null?B:A.frameTableBuffer)!=null?Q:null;if(!d||d.usage!=="storage")return;const f=this.buffers.get(d.id);if(!f||f.usage!=="storage"||f.buffer.size<BA.SVGA_FRAME_TABLE_ROW_BYTES||f.buffer.size%BA.SVGA_FRAME_TABLE_ROW_BYTES!==0)return;const u=(t=(i=(e=(E=A.svgaSpriteMetadataBuffer)!=null?E:A.svgaSpriteMetadata)!=null?e:A.spriteMetadataBuffer)!=null?i:(F==null?void 0:F.backend)==="webgpu"?F.spriteMetadataBuffer:null)!=null?t:null;if(!u||u.usage!=="storage")return;const G=this.buffers.get(u.id);if(!G||G.usage!=="storage")return;const S=Math.floor((a=A.svgaSpriteMetadataStrideFloats)!=null?a:NI),M=S*Float32Array.BYTES_PER_ELEMENT;if(S<NI||S%4!==0||G.buffer.size<M||G.buffer.size%M!==0)return;const N=(o=A.svgaFrameTableFrameCount)!=null?o:A.frameTableFrameCount,U=(s=A.svgaFrameTableSpriteCount)!=null?s:A.frameTableSpriteCount,K=Math.floor(Number.isFinite(N)?N:(F==null?void 0:F.backend)==="webgpu"?F.frameCount:0),k=Math.floor(f.buffer.size/BA.SVGA_FRAME_TABLE_ROW_BYTES),m=Math.floor(Number.isFinite(U)?U:(F==null?void 0:F.backend)==="webgpu"?F.spriteCount:K>0?k/K:0);if(K<1||m<1||K*m>k||!Number.isSafeInteger(K)||!Number.isSafeInteger(m))return;const H=A.instanceData,v=A.svgaFrameTableSlotStates,j=Math.floor((n=A.svgaFrameTableSlotStateCount)!=null?n:0),T=Math.floor((r=A.svgaFrameTableSpritesPerSlot)!=null?r:0),b=v!=null&&j>0&&T>0&&j*T===y&&v.length>=j*Ag,X=!b&&H!=null&&H.length>=y*Ag,Z=this.resolveSVGAFrameTableSlotUniform(A,y,K);if(!Z)return;let EA=Z.metadataBase;if(b)EA+=T;else if(X){let hA=-1;for(let oA=0;oA<y;oA++){const rA=Math.floor((c=H[oA*Ag+kg.metadataBase])!=null?c:-1);rA>hA&&(hA=rA)}EA=hA+1}else EA+=y;if(Z.metadataBase<0||!D&&(EA<1||EA>G.buffer.size/M))return;const UA=b?v:H,cA=X||b?(b?j:y)*Ag*Float32Array.BYTES_PER_ELEMENT:Math.min(64,f.buffer.size),IA=(h=A.svgaFrameTableSlotStateUploadId)!=null?h:-1,Ig=b&&IA>=0&&IA===this.svgaCompactSlotStateUploadId&&cA===this.svgaCompactSlotStateByteLength,QA=Ig?this.svgaCompactSlotStateStorageBase:X||b?this.instancedStorageRingOffset:0;if((X||b)&&(QA<0||QA+cA>Hg))return;(X||b)&&!Ig&&(this.instancedStorageRingOffset+=iI(cA,this.storageBindOffsetAlign),this.writeInstancedStorageShadow(QA,UA,cA),this.performanceSVGADynamicUploadWrites++,this.performanceSVGADynamicUploadBytes+=cA,b&&IA>=0&&(this.svgaCompactSlotStateUploadId=IA,this.svgaCompactSlotStateStorageBase=QA,this.svgaCompactSlotStateByteLength=cA));const V=A.motionTrackIndex,YA=A.motionTrackBuffer,kA=A.motionTrackGlobalsBuffer,W=YA?this.buffers.get(YA.id):null,pA=kA?this.buffers.get(kA.id):null,LA=Math.floor((l=A.motionTrackSampleCount)!=null?l:0),og=Math.floor(V!=null?V:-1),PA=(og+1)*LA*8*4,KA=og>=0&&LA>=1&&(W==null?void 0:W.usage)==="storage"&&(pA==null?void 0:pA.usage)==="uniform"&&W.buffer.size>=PA&&pA.buffer.size>=32,vA=A.stencil==="test"?"test":A.stencil==="write"?"write":A.stencil==="clear"?"clear":this.frameUsesStencil?"pass":"none",nA=D?this.ensureSVGAFrameTableMeshPipeline(A.shader,vA):this.ensureSVGAFrameTablePipeline(vA==="test"?"test":vA==="pass"?"pass":"none");this.lastDrawPipeline!==nA.pipeline&&(w.setPipeline(nA.pipeline),this.lastDrawPipeline=nA.pipeline,this.lastInstancedTextureBindGroup=null);const L=vA==="test"||vA==="write"?1:0;this.frameUsesStencil&&this.lastStencilRef!==L&&(w.setStencilReference(L),this.lastStencilRef=L);const eA=A.uniforms.u_projection;if(!(eA instanceof Float32Array)||eA.length<16)return;const Bg=this.buffers.get(A.vertexBuffer.id),AA=this.buffers.get(A.indexBuffer.id);if(!Bg||!AA)return;const DA=A.textures[0];if(!DA)return;const gA=this.textures.get(DA.id);if(!gA)return;const Jg=this.reserveSVGAFrameTableUniform(eA,Z,K,m,y,KA?og:null,b?2:X?1:0,T,S/4);if(Jg==null)return;const Lg=KA?W.buffer:f.buffer,Cg=KA?pA.buffer:this.uniformBuffer,dA=X||b?this.ensureInstancedStorageBuffer():f.buffer;if(dA.size<cA)return;const SA=b?"slots":X?"hybrid":"direct",GA=`${d.id}:${u.id}:${KA?YA.id:0}:${KA?kA.id:0}:${SA}:${cA}`;let iA=this.svgaFrameTableDataBindGroupCache.get(GA);iA||(iA=this.device.createBindGroup({layout:nA.bindGroupLayout,entries:[{binding:0,resource:{buffer:this.uniformBuffer,offset:0,size:this.uniformSlotStride}},{binding:1,resource:{buffer:f.buffer,offset:0,size:f.buffer.size}},{binding:2,resource:{buffer:G.buffer,offset:0,size:G.buffer.size}},{binding:3,resource:{buffer:Lg,offset:0,size:Lg.size}},{binding:4,resource:{buffer:Cg,offset:0,size:32}},{binding:5,resource:{buffer:dA,offset:0,size:cA}}]}),this.svgaFrameTableDataBindGroupCache.set(GA,iA)),w.setBindGroup(0,iA,[Jg,QA]);const tA=DA.id;let aA=this.instancedTextureBindGroupCache.get(tA);aA||(aA=this.device.createBindGroup({layout:this.instancedTextureBindGroupLayout,entries:[{binding:0,resource:gA.view},{binding:1,resource:this.sampler}]}),this.instancedTextureBindGroupCache.set(tA,aA)),w.setBindGroup(1,aA),this.lastVertexBufferId!==A.vertexBuffer.id&&(w.setVertexBuffer(0,Bg.buffer),this.lastVertexBufferId=A.vertexBuffer.id),this.lastIndexBufferId!==A.indexBuffer.id&&(w.setIndexBuffer(AA.buffer,"uint32"),this.lastIndexBufferId=A.indexBuffer.id),w.drawIndexed(A.indexCount,y,0,0,0),this.recordSubmittedDraw()}resolveSVGAFrameTableSlotUniform(A,g,I){var B,Q,E,e,i,t,a,o,s,n,r,c,h,l,w,D,y,R,F,d,f,u,G,S,M,N,U,K,k,m,H,v,j,T,b,X,Z,EA,UA,FA,cA,IA,Ig,QA,V,YA,kA,W,pA,LA,og,PA,KA,vA,nA;const L=(Q=(B=A.svgaFrameTableSlotState)!=null?B:A.svgaSlotState)!=null?Q:A.uniforms.u_svgaSlotState instanceof Float32Array?A.uniforms.u_svgaSlotState:A.uniforms.u_slotState instanceof Float32Array?A.uniforms.u_slotState:null,eA=A.uniforms.u_transform,Bg=A.uniforms.u_clipRect,AA=A.svgaFrameTableParentAffine,DA=A.svgaFrameTableParentTranslate,gA=A.svgaFrameTableClipRect,Jg=A.svgaFrameIndex!=null||A.svgaFrameTableFrameIndex!=null||A.frameTableFrameIndex!=null,Lg=A.svgaFrameTableOpacity!=null||typeof A.uniforms.u_opacity=="number",Cg=A.uniforms.u_projection;if(!(Cg instanceof Float32Array)||Cg.length<16)return null;let dA=1,SA=0,GA=0,iA=1,tA=0,aA=0,hA=(E=A.svgaFrameTableOpacity)!=null?E:typeof A.uniforms.u_opacity=="number"?A.uniforms.u_opacity:1,oA=(t=(i=(e=A.svgaFrameIndex)!=null?e:A.svgaFrameTableFrameIndex)!=null?i:A.frameTableFrameIndex)!=null?t:0,rA=0,uA=0,RA=this.canvas.width,TA=this.canvas.height,Qg=0,Xg=(a=A.svgaFrameTableAtlasPage)!=null?a:-1,jA=(c=(r=(n=(s=(o=A.svgaFrameTableMetadataBase)!=null?o:A.svgaFrameTableSpriteBase)!=null?s:A.frameTableSpriteBase)!=null?n:A.svgaSpriteMetadataBase)!=null?r:A.svgaSpriteBase)!=null?c:0;if(AA&&AA.length>=4)dA=(h=AA[0])!=null?h:dA,SA=(l=AA[1])!=null?l:SA,GA=(w=AA[2])!=null?w:GA,iA=(D=AA[3])!=null?D:iA,DA&&DA.length>=2&&(tA=(y=DA[0])!=null?y:tA,aA=(R=DA[1])!=null?R:aA),gA&&gA.length>=4&&(rA=(F=gA[0])!=null?F:rA,uA=(d=gA[1])!=null?d:uA,RA=(f=gA[2])!=null?f:RA,TA=(u=gA[3])!=null?u:TA,Qg=1);else if(L&&L.length>=13)dA=(G=L[0])!=null?G:dA,SA=(S=L[1])!=null?S:SA,GA=(M=L[2])!=null?M:GA,iA=(N=L[3])!=null?N:iA,tA=(U=L[4])!=null?U:tA,aA=(K=L[5])!=null?K:aA,Lg||(hA=(k=L[6])!=null?k:hA),Jg||(oA=(m=L[7])!=null?m:oA),rA=(H=L[8])!=null?H:rA,uA=(v=L[9])!=null?v:uA,RA=(j=L[10])!=null?j:RA,TA=(T=L[11])!=null?T:TA,Qg=((b=L[12])!=null?b:0)>.5?1:0,A.svgaFrameTableMetadataBase==null&&A.svgaFrameTableSpriteBase==null&&A.frameTableSpriteBase==null&&A.svgaSpriteMetadataBase==null&&A.svgaSpriteBase==null&&L.length>=14&&(jA=(X=L[13])!=null?X:jA);else if(eA instanceof Float32Array&&eA.length>=16){dA=(Z=eA[0])!=null?Z:dA,SA=(EA=eA[1])!=null?EA:SA,GA=(UA=eA[4])!=null?UA:GA,iA=(FA=eA[5])!=null?FA:iA,tA=(cA=eA[12])!=null?cA:tA,aA=(IA=eA[13])!=null?IA:aA;const EI=Bg instanceof Float32Array&&Bg.length>=4?Bg:gA;EI&&EI.length>=4&&(rA=(Ig=EI[0])!=null?Ig:rA,uA=(QA=EI[1])!=null?QA:uA,RA=(V=EI[2])!=null?V:RA,TA=(YA=EI[3])!=null?YA:TA,Qg=typeof A.uniforms.u_clipEnabled=="number"?A.uniforms.u_clipEnabled>.5?1:0:1)}return AA&&L&&L.length>=13&&(DA||(tA=(kA=L[4])!=null?kA:tA,aA=(W=L[5])!=null?W:aA),Lg||(hA=(pA=L[6])!=null?pA:hA),Jg||(oA=(LA=L[7])!=null?LA:oA),gA||(rA=(og=L[8])!=null?og:rA,uA=(PA=L[9])!=null?PA:uA,RA=(KA=L[10])!=null?KA:RA,TA=(vA=L[11])!=null?vA:TA,Qg=((nA=L[12])!=null?nA:0)>.5?1:0)),Number.isFinite(hA)||(hA=1),Number.isFinite(oA)||(oA=0),Number.isFinite(jA)||(jA=0),Number.isFinite(Xg)||(Xg=-1),oA=Math.max(0,Math.min(I-1,Math.floor(oA))),jA=Math.max(0,Math.floor(jA)),![dA,SA,GA,iA,tA,aA,hA].every(Number.isFinite)||g<1?null:{parentA:dA,parentB:SA,parentC:GA,parentD:iA,tx:tA,ty:aA,opacity:hA,frameIndex:oA,clipX0:rA,clipY0:uA,clipX1:RA,clipY1:TA,clipEnabled:Qg,metadataBase:jA,atlasPage:Math.max(-1,Math.floor(Xg))}}reserveSVGAFrameTableUniform(A,g,I,B,Q,E,e,i=0,t=2){if(!g)return null;const a=this.uniformSlotIndex++;if(a>=this.maxUniformSlots)return console.warn("[WebGPU] uniform slot overflow; increase maxUniformSlots"),null;const o=this.svgaFrameTableUniformScratch;o.fill(0),o.set(A.length===16?A:A.subarray(0,16),0),o[16]=g.parentA,o[17]=g.parentB,o[18]=g.parentC,o[19]=g.parentD,o[20]=g.tx,o[21]=g.ty,o[22]=g.opacity,o[23]=g.frameIndex,o[24]=g.clipX0,o[25]=g.clipY0,o[26]=g.clipX1,o[27]=g.clipY1;const s=this.svgaFrameTableUniformWords;s[28]=Math.max(0,Math.floor(g.metadataBase)),s[29]=Math.max(1,Math.floor(Q)),s[30]=(g.clipEnabled>.5?1:0)|(e===1?2:0)|(e===2?4:0),s[31]=E==null?0:Math.max(1,Math.floor(E)+1),s[32]=Math.max(1,Math.floor(I)),s[33]=Math.max(1,Math.floor(B)),s[34]=3,s[35]=g.atlasPage>=0?Math.floor(g.atlasPage):4294967295,s[36]=e===2?Math.max(1,Math.floor(i)):0,s[37]=Math.max(2,Math.floor(t)),s[38]=e;const n=a*this.uniformSlotStride;return this.writeUniformShadow(n,o,WB),n}drawMotionInstancedSvga(A){var g,I,B;const Q=this.passEncoder,E=(g=A.instanceCount)!=null?g:0,e=A.instanceData,i=A.motionTrackBuffer,t=A.motionTrackGlobalsBuffer;if(!e||!i||!t||E<1)return;const a=this.buffers.get(i.id),o=this.buffers.get(t.id),s=this.buffers.get(A.vertexBuffer.id),n=this.buffers.get(A.indexBuffer.id);if(!a||!o||!s||!n)return;const r=this.ensureMotionSvgaPipeline();this.lastDrawPipeline!==r.pipeline&&(Q.setPipeline(r.pipeline),this.lastDrawPipeline=r.pipeline,this.lastInstancedTextureBindGroup=null);const c=A.uniforms.u_projection;if(!(c instanceof Float32Array)||c.length<16)return;this.ensureInstancedProjection(c);const h=E*BA.SVGA_INSTANCED_STRIDE,l=this.instancedStorageRingOffset;if(l+h>Hg)return;this.instancedStorageRingOffset+=iI(h,this.storageBindOffsetAlign),this.writeInstancedStorageShadow(l,e,h),this.performanceSVGADynamicUploadWrites++,this.performanceSVGADynamicUploadBytes+=h;const w=`${h}:${i.id}:${t.id}:${this.frameUsesStencil?1:0}`;let D=this.motionDataBindGroupCache.get(w);D||(D=this.device.createBindGroup({layout:r.bindGroupLayout,entries:[{binding:0,resource:{buffer:this.ensureInstancedProjectionBuffer(),size:64}},{binding:1,resource:{buffer:this.ensureInstancedStorageBuffer(),offset:0,size:h}},{binding:2,resource:{buffer:a.buffer,size:a.buffer.size}},{binding:3,resource:{buffer:o.buffer,size:32}}]}),this.motionDataBindGroupCache.set(w,D)),Q.setBindGroup(0,D,[l]);const y=A.textures[0],R=y?this.textures.get(y.id):null,F=(I=y==null?void 0:y.id)!=null?I:0;let d=this.instancedTextureBindGroupCache.get(F);d||(d=this.device.createBindGroup({layout:this.instancedTextureBindGroupLayout,entries:[{binding:0,resource:(B=R==null?void 0:R.view)!=null?B:this.dummyTextureView},{binding:1,resource:this.sampler}]}),this.instancedTextureBindGroupCache.set(F,d)),Q.setBindGroup(1,d),Q.setVertexBuffer(0,s.buffer),Q.setIndexBuffer(n.buffer,"uint32"),this.lastVertexBufferId=A.vertexBuffer.id,this.lastIndexBufferId=A.indexBuffer.id,Q.drawIndexed(A.indexCount,E,0,0,0),this.recordSubmittedDraw()}drawInstancedParticles(A){var g,I,B,Q;const E=this.passEncoder,e=(g=A.instanceCount)!=null?g:0,i=A.instanceBuffer;if(!i||e<1||e>BA.PARTICLE_INSTANCED_MAX)return;const t=this.buffers.get(i.id),a=this.buffers.get(A.vertexBuffer.id),o=this.buffers.get(A.indexBuffer.id);if(!t||!a||!o)return;const s=(I=A.particleBlend)!=null?I:"additive",n=A.shader==="particle-sprite-instanced",r=n?this.ensureParticleSpritePipeline(s):this.ensureParticlePipeline(s);this.lastDrawPipeline!==r.pipeline&&(E.setPipeline(r.pipeline),this.lastDrawPipeline=r.pipeline,this.lastInstancedTextureBindGroup=null);const c=A.uniforms.u_projection;if(!(c instanceof Float32Array)||c.length<16)return;this.ensureInstancedProjection(c);const h=n&&(Q=(B=A.textures[0])==null?void 0:B.id)!=null?Q:0;if(n&&!this.textures.has(h))return;const l=`${n?"sprite-v2":"ballistic-v1"}:${this.frameUsesStencil?"pass":"none"}:${s}:${i.id}:${h}`;let w=this.particleDataBindGroupCache.get(l);if(w||(w=this.device.createBindGroup({layout:r.bindGroupLayout,entries:[{binding:0,resource:{buffer:this.ensureInstancedProjectionBuffer(),offset:0,size:64}},{binding:1,resource:{buffer:t.buffer,offset:0,size:t.buffer.size}}]}),this.particleDataBindGroupCache.set(l,w)),E.setBindGroup(0,w),n){const D=this.textures.get(h);let y=this.instancedTextureBindGroupCache.get(h);y||(y=this.device.createBindGroup({layout:this.instancedTextureBindGroupLayout,entries:[{binding:0,resource:D.view},{binding:1,resource:this.sampler}]}),this.instancedTextureBindGroupCache.set(h,y)),E.setBindGroup(1,y)}this.lastVertexBufferId!==A.vertexBuffer.id&&(E.setVertexBuffer(0,a.buffer),this.lastVertexBufferId=A.vertexBuffer.id),this.lastIndexBufferId!==A.indexBuffer.id&&(E.setIndexBuffer(o.buffer,"uint32"),this.lastIndexBufferId=A.indexBuffer.id),E.drawIndexed(A.indexCount,e,0,0,0),this.recordSubmittedDraw()}drawInstancedAlpha(A){var g,I,B;const Q=this.passEncoder,E=(g=A.instanceCount)!=null?g:0,e=A.instanceData;if(E<1||!e||e.length<E*12)return;if(E>BA.ALPHA_INSTANCED_MAX){console.warn("[WebGPU] alpha-video-instanced: instanceCount exceeds max",E);return}const t=this.ensureInstancedAlphaPipeline(),a=t.pipeline;this.lastDrawPipeline!==a&&(Q.setPipeline(a),this.lastDrawPipeline=a,this.lastInstancedTextureBindGroup=null),this.frameUsesStencil&&this.lastStencilRef!==0&&(Q.setStencilReference(0),this.lastStencilRef=0);const o=A.uniforms.u_projection;if(!(o instanceof Float32Array)||o.length<16)return;const s=this.buffers.get(A.vertexBuffer.id),n=this.buffers.get(A.indexBuffer.id);if(!s||!n)return;this.ensureInstancedProjection(o);const r=E*BA.ALPHA_INSTANCED_STRIDE,c=this.instancedStorageRingOffset;if(c+r>Hg){console.warn("[WebGPU] instanced alpha storage ring full");return}this.instancedStorageRingOffset+=iI(r,this.storageBindOffsetAlign),this.writeInstancedStorageShadow(c,e,r);const h=A.textures[0],l=h?this.textures.get(h.id):null,w=(I=l==null?void 0:l.view)!=null?I:this.dummyTextureView,D=(B=h==null?void 0:h.id)!=null?B:0;let y=this.instancedTextureBindGroupCache.get(D);y||(y=this.device.createBindGroup({layout:this.instancedTextureBindGroupLayout,entries:[{binding:0,resource:w},{binding:1,resource:this.sampler}]}),this.instancedTextureBindGroupCache.set(D,y)),Q.setBindGroup(0,this.ensureInstancedDataBindGroup(t,r),[c]),this.lastInstancedTextureBindGroup!==y&&(Q.setBindGroup(1,y),this.lastInstancedTextureBindGroup=y);const R=A.vertexBuffer.id,F=A.indexBuffer.id;this.lastVertexBufferId!==R&&(Q.setVertexBuffer(0,s.buffer),this.lastVertexBufferId=R),this.lastIndexBufferId!==F&&(Q.setIndexBuffer(n.buffer,"uint32"),this.lastIndexBufferId=F),Q.drawIndexed(A.indexCount,E,0,0,0),this.recordSubmittedDraw()}drawInstancedVap(A){var g,I,B;const Q=this.passEncoder,E=(g=A.instanceCount)!=null?g:0,e=A.instanceData;if(E<1||!e||e.length<E*32)return;if(E>BA.VAP_INSTANCED_MAX){console.warn("[WebGPU] vap-instanced: instanceCount exceeds max",E);return}const t=this.ensureInstancedVapPipeline(),a=t.pipeline;this.lastDrawPipeline!==a&&(Q.setPipeline(a),this.lastDrawPipeline=a,this.lastInstancedTextureBindGroup=null),this.frameUsesStencil&&this.lastStencilRef!==0&&(Q.setStencilReference(0),this.lastStencilRef=0);const o=A.uniforms.u_projection;if(!(o instanceof Float32Array)||o.length<16)return;const s=this.buffers.get(A.vertexBuffer.id),n=this.buffers.get(A.indexBuffer.id);if(!s||!n)return;this.ensureInstancedProjection(o);const r=E*BA.VAP_INSTANCED_STRIDE,c=this.instancedStorageRingOffset;if(c+r>Hg){console.warn("[WebGPU] instanced VAP storage ring full");return}this.instancedStorageRingOffset+=iI(r,this.storageBindOffsetAlign),this.writeInstancedStorageShadow(c,e,r);const h=A.textures[0],l=h?this.textures.get(h.id):null,w=(I=l==null?void 0:l.view)!=null?I:this.dummyTextureView,D=(B=h==null?void 0:h.id)!=null?B:0;let y=this.instancedTextureBindGroupCache.get(D);y||(y=this.device.createBindGroup({layout:this.instancedTextureBindGroupLayout,entries:[{binding:0,resource:w},{binding:1,resource:this.sampler}]}),this.instancedTextureBindGroupCache.set(D,y)),Q.setBindGroup(0,this.ensureInstancedDataBindGroup(t,r),[c]),this.lastInstancedTextureBindGroup!==y&&(Q.setBindGroup(1,y),this.lastInstancedTextureBindGroup=y);const R=A.vertexBuffer.id,F=A.indexBuffer.id;this.lastVertexBufferId!==R&&(Q.setVertexBuffer(0,s.buffer),this.lastVertexBufferId=R),this.lastIndexBufferId!==F&&(Q.setIndexBuffer(n.buffer,"uint32"),this.lastIndexBufferId=F),Q.drawIndexed(A.indexCount,E,0,0,0),this.recordSubmittedDraw()}clearStencil(){}setScissor(A,g,I,B){if(!this.passEncoder)return;const Q=this.canvas.width,E=this.canvas.height,e=Math.max(0,Math.min(Q,Math.floor(A))),i=Math.max(0,Math.min(E,Math.floor(g))),t=Math.max(e,Math.min(Q,Math.ceil(A+I))),a=Math.max(i,Math.min(E,Math.ceil(g+B)));this.passEncoder.setScissorRect(e,i,t-e,a-i)}resetScissor(){this.passEncoder&&this.passEncoder.setScissorRect(0,0,this.canvas.width,this.canvas.height)}destroy(){var A,g,I,B,Q,E,e;this.particleSpritePreparationEpoch++,this.particleSpritePreparations.clear(),this.deviceLostHandler=null,this.runtimeDiagnosticHandler=null,this.device&&(this.device.onuncapturederror=null);for(const[,i]of this.buffers)i.buffer.destroy();for(const[,i]of this.textures)i.texture.destroy();(A=this.uniformBuffer)==null||A.destroy(),(g=this.instancedProjectionBuffer)==null||g.destroy(),(I=this.instancedStorageBuffer)==null||I.destroy(),(B=this.depthStencilTexture)==null||B.destroy(),(Q=this.msaaColorTexture)==null||Q.destroy(),(E=this.dummyTexture)==null||E.destroy(),(e=this.device)==null||e.destroy(),this.buffers.clear(),this.textures.clear(),this.texturedBindGroupCache.clear(),this.dualTexturedBindGroupCache.clear(),this.instancedTextureBindGroupCache.clear(),this.particleDataBindGroupCache.clear(),this.motionDataBindGroupCache.clear(),this.pipelines.clear()}};Y(hg,"SVGA_INSTANCED_MAX",2048);Y(hg,"SVGA_INSTANCED_STRIDE",52);Y(hg,"SVGA_FRAME_TABLE_INSTANCE_MAX",2048);Y(hg,"SVGA_FRAME_TABLE_ROW_BYTES",tE*Float32Array.BYTES_PER_ELEMENT);Y(hg,"CLIP_MASK_INSTANCED_MAX",2048);Y(hg,"CLIP_MASK_INSTANCED_STRIDE",24);Y(hg,"ALPHA_INSTANCED_MAX",1024);Y(hg,"ALPHA_INSTANCED_STRIDE",48);Y(hg,"VAP_INSTANCED_MAX",1024);Y(hg,"VAP_INSTANCED_STRIDE",128);Y(hg,"PARTICLE_INSTANCED_MAX",8192);let aE=hg;function BQ(C,A,g){const I=C.createShader(A);if(!I)throw new Error("Failed to create shader");if(C.shaderSource(I,g),C.compileShader(I),!C.getShaderParameter(I,C.COMPILE_STATUS)){const B=C.getShaderInfoLog(I);throw C.deleteShader(I),new Error(`Shader compile failed: ${B}`)}return I}function WA(C,A,g){const I=BQ(C,C.VERTEX_SHADER,A),B=BQ(C,C.FRAGMENT_SHADER,g),Q=C.createProgram();if(!Q)throw C.deleteShader(I),C.deleteShader(B),new Error("Failed to create program");if(C.attachShader(Q,I),C.attachShader(Q,B),C.linkProgram(Q),!C.getProgramParameter(Q,C.LINK_STATUS)){const E=C.getProgramInfoLog(Q);throw C.deleteProgram(Q),C.deleteShader(I),C.deleteShader(B),new Error(`Program link failed: ${E}`)}return C.deleteShader(I),C.deleteShader(B),Q}function CQ(C,A=C.LINEAR,g=C.CLAMP_TO_EDGE){const I=C.createTexture();if(!I)throw new Error("Failed to create texture");return C.bindTexture(C.TEXTURE_2D,I),C.texParameteri(C.TEXTURE_2D,C.TEXTURE_MIN_FILTER,A),C.texParameteri(C.TEXTURE_2D,C.TEXTURE_MAG_FILTER,A),C.texParameteri(C.TEXTURE_2D,C.TEXTURE_WRAP_S,g),C.texParameteri(C.TEXTURE_2D,C.TEXTURE_WRAP_T,g),I}function _i(C=typeof navigator!="undefined"?navigator:null){var A,g;const I=(A=C==null?void 0:C.userAgent)!=null?A:"";return/iPad|iPhone|iPod/i.test(I)||/Macintosh/i.test(I)&&((g=C==null?void 0:C.maxTouchPoints)!=null?g:0)>1}function XI(C){const A=C;return typeof A.displayWidth=="number"&&A.displayWidth>0?A.displayWidth:typeof A.codedWidth=="number"&&A.codedWidth>0?A.codedWidth:typeof A.videoWidth=="number"&&A.videoWidth>0?A.videoWidth:typeof A.naturalWidth=="number"&&A.naturalWidth>0?A.naturalWidth:typeof A.width=="number"&&A.width>0?A.width:0}function OI(C){const A=C;return typeof A.displayHeight=="number"&&A.displayHeight>0?A.displayHeight:typeof A.codedHeight=="number"&&A.codedHeight>0?A.codedHeight:typeof A.videoHeight=="number"&&A.videoHeight>0?A.videoHeight:typeof A.naturalHeight=="number"&&A.naturalHeight>0?A.naturalHeight:typeof A.height=="number"&&A.height>0?A.height:0}var $i=Object.defineProperty,At=(C,A,g)=>A in C?$i(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,x=(C,A,g)=>At(C,typeof A!="symbol"?A+"":A,g);const tB="svga-frame-table-instanced-premul",QQ=8,gt=new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]),It=new Float32Array([1,1]),fA=class bA{constructor(A,g=!0){x(this,"type","webgl2"),x(this,"supportsAtomicFrameReplay",!0),x(this,"canvas"),x(this,"maxTextureSize",4096),x(this,"antialias"),x(this,"gl"),x(this,"nextId",1),x(this,"buffers",new Map),x(this,"textures",new Map),x(this,"frameTables",new Map),x(this,"ownedFrameTableMetadataIds",new Set),x(this,"programs",new Map),x(this,"vertexArrays",new Map),x(this,"cachedDrawProgram",null),x(this,"cachedTex0Id",null),x(this,"cachedFrameTableId",null),x(this,"cachedFrameMetadataId",null),x(this,"cachedProjectionRef",null),x(this,"cachedProjectionShader",null),x(this,"videoUploadCanvas",null),x(this,"videoUploadCtx",null),x(this,"videoElementPreferCanvasBridge",_i()),x(this,"videoElementDirectUploadValidated",!1),x(this,"maxVertexTextureImageUnits",0),x(this,"svgaFrameTableSupported",!1),x(this,"instancedSvgaInstanceGLBuffer",null),x(this,"svgaSlotStateTexture",null),x(this,"svgaSlotStateTextureWidth",0),x(this,"svgaSlotStateTextureHeight",0),x(this,"svgaSlotStateUploadScratch",new Float32Array(0)),x(this,"svgaSlotStateUploadId",-1),x(this,"svgaTableInfoScratch",new Int32Array(4)),x(this,"svgaTableSizeScratch",new Int32Array(2)),x(this,"svgaMetadataSizeScratch",new Int32Array(2)),x(this,"instancedClipMaskGLBuffer",null),x(this,"instancedAlphaInstanceGLBuffer",null),x(this,"performanceBufferWrites",0),x(this,"performanceBufferWriteBytes",0),x(this,"performanceStorageBufferWrites",0),x(this,"performanceStorageBufferWriteBytes",0),x(this,"performanceSubmittedDrawCalls",0),x(this,"performanceRejectedDrawCalls",0),x(this,"performanceSVGADynamicUploadWrites",0),x(this,"performanceSVGADynamicUploadBytes",0),x(this,"runtimeSubmittedDrawCalls",0),x(this,"runtimeRejectedDrawCalls",0),x(this,"currentDrawResult",$("invalid-command","WebGL2 draw has not been submitted")),x(this,"currentDrawRecorded",!1),x(this,"runtimeBackendLosses",0),x(this,"runtimeDiagnosticHandler",null),x(this,"contextLost",!1),x(this,"deviceLostHandler",null),x(this,"onContextLost",I=>{var B,Q;I.preventDefault(),this.contextLost=!0,this.runtimeBackendLosses++,(B=this.runtimeDiagnosticHandler)==null||B.call(this,{type:"backend-lost"}),this.svgaFrameTableSupported=!1,this.buffers.clear(),this.textures.clear(),this.frameTables.clear(),this.programs.clear(),this.vertexArrays.clear(),this.ownedFrameTableMetadataIds.clear(),this.instancedSvgaInstanceGLBuffer=null,this.instancedClipMaskGLBuffer=null,this.instancedAlphaInstanceGLBuffer=null,this.instancedVapInstanceGLBuffer=null,this.svgaSlotStateTexture=null,(Q=this.deviceLostHandler)==null||Q.call(this)}),x(this,"instancedVapInstanceGLBuffer",null),this.canvas=A,this.antialias=g}async init(){const A=this.canvas.getContext("webgl2",{alpha:!0,premultipliedAlpha:!0,antialias:this.antialias,depth:!1,stencil:!0});if(!A)throw new Error("WebGL2 not available");this.gl=A,this.canvas.addEventListener("webglcontextlost",this.onContextLost),this.maxTextureSize=A.getParameter(A.MAX_TEXTURE_SIZE)||this.maxTextureSize,this.maxVertexTextureImageUnits=A.getParameter(A.MAX_VERTEX_TEXTURE_IMAGE_UNITS)||0,A.enable(A.BLEND),A.blendFunc(A.ONE,A.ONE_MINUS_SRC_ALPHA),A.clearColor(0,0,0,0),A.pixelStorei(A.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),A.pixelStorei(A.UNPACK_COLORSPACE_CONVERSION_WEBGL,A.NONE),this.initPrograms()}getPerformanceSnapshot(){return{bufferWrites:this.performanceBufferWrites,bufferWriteBytes:this.performanceBufferWriteBytes,storageBufferWrites:this.performanceStorageBufferWrites,storageBufferWriteBytes:this.performanceStorageBufferWriteBytes,submittedDrawCalls:this.performanceSubmittedDrawCalls,rejectedDrawCalls:this.performanceRejectedDrawCalls,svgaDynamicUploadWrites:this.performanceSVGADynamicUploadWrites,svgaDynamicUploadBytes:this.performanceSVGADynamicUploadBytes}}getRuntimeDiagnosticsSnapshot(){return{submittedDrawCalls:this.runtimeSubmittedDrawCalls,rejectedDrawCalls:this.runtimeRejectedDrawCalls,webgpuUncapturedErrors:0,backendLosses:this.runtimeBackendLosses}}setRuntimeDiagnosticHandler(A){this.runtimeDiagnosticHandler=A}resetPerformanceSnapshot(){this.performanceBufferWrites=0,this.performanceBufferWriteBytes=0,this.performanceStorageBufferWrites=0,this.performanceStorageBufferWriteBytes=0,this.performanceSubmittedDrawCalls=0,this.performanceRejectedDrawCalls=0,this.performanceSVGADynamicUploadWrites=0,this.performanceSVGADynamicUploadBytes=0}setDeviceLostHandler(A){this.deviceLostHandler=A}recordSubmittedDraw(){this.currentDrawResult=ag,this.currentDrawRecorded=!0,this.performanceSubmittedDrawCalls++,this.runtimeSubmittedDrawCalls++}rejectSVGAFastPathDraw(){this.currentDrawRecorded=!0,this.currentDrawResult.submitted&&(this.currentDrawResult=$("invalid-command","WebGL2 draw was rejected")),this.performanceRejectedDrawCalls++,this.runtimeRejectedDrawCalls++}initPrograms(){const A=this.gl,g=WA(A,P.svgaBatchPremul.vert,P.svgaBatchPremul.frag);this.programs.set("svga-batch-premul",this.makeProgramEntry(g,{transform:!0,opacity:!0})),this.bindProgramSamplers(g,{u_atlas:0});const I=WA(A,P.svgaInstancedPremul.vert,P.svgaInstancedPremul.frag);if(this.programs.set("svga-instanced-premul",this.makeProgramEntry(I)),this.bindProgramSamplers(I,{u_atlas:0}),this.maxVertexTextureImageUnits>=2&&this.maxTextureSize>=3)try{const n=WA(A,P.svgaFrameTableInstancedPremul.vert,P.svgaFrameTableInstancedPremul.frag);this.programs.set(tB,this.makeProgramEntry(n,{frameTable:!0,spriteMetadata:!0,tableInfo:!0,frameTableSize:!0,spriteMetadataSize:!0,spriteMetadataStride:!0,spriteBase:!0,frameIndex:!0,parentAffine:!0,parentTranslate:!0,slotOpacity:!0,atlasPage:!0,clipRect:!0,clipEnabled:!0,canvasHeight:!0,instanceStateEnabled:!0,slotStates:!0,slotStateSize:!0,compactSlotStateEnabled:!0,spritesPerSlot:!0})),this.bindProgramSamplers(n,{u_atlas:0,u_frameTable:1,u_spriteMetadata:2,u_slotStates:3});const r=WA(A,P.svgaFrameTableShape.vert,P.svgaFrameTableShape.frag);this.programs.set("svga-frame-table-shape-premul",this.makeProgramEntry(r,{frameTable:!0,tableInfo:!0,frameTableSize:!0,spriteBase:!0,frameIndex:!0,parentAffine:!0,parentTranslate:!0,slotOpacity:!0,clipRect:!0,clipEnabled:!0,canvasHeight:!0,slotStates:!0,slotStateSize:!0,compactSlotStateEnabled:!0})),this.bindProgramSamplers(r,{u_frameTable:0,u_slotStates:3});const c=WA(A,P.svgaFrameTableClipMask.vert,P.svgaFrameTableClipMask.frag);this.programs.set("svga-frame-table-clip-mask",this.makeProgramEntry(c,{frameTable:!0,tableInfo:!0,frameTableSize:!0,spriteBase:!0,frameIndex:!0,parentAffine:!0,parentTranslate:!0,clipRect:!0,clipEnabled:!0,canvasHeight:!0,slotStates:!0,slotStateSize:!0,compactSlotStateEnabled:!0})),this.bindProgramSamplers(c,{u_frameTable:0,u_slotStates:3}),this.svgaFrameTableSupported=!0}catch(n){this.svgaFrameTableSupported=!1,console.warn("[WebGL2] SVGA frame-table shader unavailable; using CPU reference path.",n)}const B=WA(A,P.vap.vert,P.vap.frag);this.programs.set("vap",this.makeProgramEntry(B,{transform:!0,atlasRemap:!0,opacity:!0,rgbPremultiplied:!0})),this.bindProgramSamplers(B,{u_video:0});const Q=WA(A,P.vapMixOverlay.vert,P.vapMixOverlay.frag);this.programs.set("vap-mix-overlay",this.makeProgramEntry(Q,{transform:!0,atlasRemap:!0,opacity:!0})),this.bindProgramSamplers(Q,{u_resource:0,u_video:1});const E=WA(A,P.alphaVideo.vert,P.alphaVideo.frag);this.programs.set("alpha-video",this.makeProgramEntry(E,{transform:!0,atlasRemap:!0,opacity:!0,rgbPremultiplied:!0})),this.bindProgramSamplers(E,{u_video:0});const e=WA(A,P.rgbaTextured.vert,P.rgbaTextured.frag);this.programs.set("rgba-textured",this.makeProgramEntry(e,{transform:!0,atlasRemap:!0,opacity:!0})),this.bindProgramSamplers(e,{u_video:0});const i=WA(A,P.alphaVideoInstanced.vert,P.alphaVideoInstanced.frag);this.programs.set("alpha-video-instanced",this.makeProgramEntry(i)),this.bindProgramSamplers(i,{u_video:0});const t=WA(A,P.vapInstanced.vert,P.vapInstanced.frag);this.programs.set("vap-instanced",this.makeProgramEntry(t)),this.bindProgramSamplers(t,{u_video:0});const a=WA(A,P.clipMask.vert,P.clipMask.frag);this.programs.set("clip-mask",this.makeProgramEntry(a,{transform:!0}));const o=WA(A,P.clipMaskInstanced.vert,P.clipMaskInstanced.frag);this.programs.set("clip-mask-instanced",this.makeProgramEntry(o));const s=WA(A,P.particleInstanced.vert,P.particleInstanced.frag);this.programs.set("particle-instanced",this.makeProgramEntry(s))}prepareParticleSpritePipelines(){if(this.contextLost)throw new Error("WebGL2 context is lost");try{this.ensureParticleSpriteProgram()}finally{this.cachedDrawProgram=null}}ensureParticleSpriteProgram(){let A=this.programs.get("particle-sprite-instanced");if(A)return A;const g=WA(this.gl,P.particleSpriteInstanced.vert,P.particleSpriteInstanced.frag);return A=this.makeProgramEntry(g,{particleSprite:!0}),this.programs.set("particle-sprite-instanced",A),this.bindProgramSamplers(g,{u_atlas:0}),A}makeProgramEntry(A,g={}){const I=this.gl;return{program:A,projLoc:I.getUniformLocation(A,"u_projection"),transformLoc:g.transform?I.getUniformLocation(A,"u_transform"):null,atlasRemapLoc:g.atlasRemap?I.getUniformLocation(A,"u_atlasRemap"):null,opacityLoc:g.opacity?I.getUniformLocation(A,"u_opacity"):null,rgbPremultipliedLoc:g.rgbPremultiplied?I.getUniformLocation(A,"u_rgbPremultiplied"):null,frameTableLoc:g.frameTable?I.getUniformLocation(A,"u_frameTable"):null,spriteMetadataLoc:g.spriteMetadata?I.getUniformLocation(A,"u_spriteMetadata"):null,tableInfoLoc:g.tableInfo?I.getUniformLocation(A,"u_tableInfo"):null,frameTableSizeLoc:g.frameTableSize?I.getUniformLocation(A,"u_frameTableSize"):null,spriteMetadataSizeLoc:g.spriteMetadataSize?I.getUniformLocation(A,"u_spriteMetadataSize"):null,spriteMetadataStrideLoc:g.spriteMetadataStride?I.getUniformLocation(A,"u_spriteMetadataTexelsPerRow"):null,spriteBaseLoc:g.spriteBase?I.getUniformLocation(A,"u_spriteBase"):null,frameIndexLoc:g.frameIndex?I.getUniformLocation(A,"u_frameIndex"):null,parentAffineLoc:g.parentAffine?I.getUniformLocation(A,"u_parentAffine"):null,parentTranslateLoc:g.parentTranslate?I.getUniformLocation(A,"u_parentTranslate"):null,slotOpacityLoc:g.slotOpacity?I.getUniformLocation(A,"u_slotOpacity"):null,atlasPageLoc:g.atlasPage?I.getUniformLocation(A,"u_atlasPage"):null,clipRectLoc:g.clipRect?I.getUniformLocation(A,"u_clipRect"):null,clipEnabledLoc:g.clipEnabled?I.getUniformLocation(A,"u_clipEnabled"):null,canvasHeightLoc:g.canvasHeight?I.getUniformLocation(A,"u_canvasHeight"):null,instanceStateEnabledLoc:g.instanceStateEnabled?I.getUniformLocation(A,"u_instanceStateEnabled"):null,slotStatesLoc:g.slotStates?I.getUniformLocation(A,"u_slotStates"):null,slotStateSizeLoc:g.slotStateSize?I.getUniformLocation(A,"u_slotStateSize"):null,compactSlotStateEnabledLoc:g.compactSlotStateEnabled?I.getUniformLocation(A,"u_compactSlotStateEnabled"):null,spritesPerSlotLoc:g.spritesPerSlot?I.getUniformLocation(A,"u_spritesPerSlot"):null,particleTimeLoc:g.particleSprite?I.getUniformLocation(A,"u_time"):null,particleGlobalAlphaLoc:g.particleSprite?I.getUniformLocation(A,"u_globalAlpha"):null,particleSizeEnvelopeLoc:g.particleSprite?I.getUniformLocation(A,"u_sizeEnvelope"):null,particleFadeModeLoc:g.particleSprite?I.getUniformLocation(A,"u_fadeMode"):null,particleCssScaleLoc:g.particleSprite?I.getUniformLocation(A,"u_cssScale"):null,lastOpacity:null,lastRgbPremultiplied:null}}applyIdentityTransform(A){A.transformLoc&&this.gl.uniformMatrix4fv(A.transformLoc,!1,gt)}bindProgramSamplers(A,g){const I=this.gl;I.useProgram(A);for(const B in g){const Q=I.getUniformLocation(A,B);Q&&I.uniform1i(Q,g[B])}}applyProjectionUniform(A,g,I){!A.projLoc||!(I instanceof Float32Array)||I.length<16||this.cachedProjectionShader===g&&this.cachedProjectionRef===I||(this.gl.uniformMatrix4fv(A.projLoc,!1,I),this.cachedProjectionShader=g,this.cachedProjectionRef=I)}applyDrawUniforms(A,g,I){const B=this.gl;if(this.applyProjectionUniform(A,g,I.uniforms.u_projection),A.transformLoc){const Q=I.uniforms.u_transform;Q instanceof Float32Array?B.uniformMatrix4fv(A.transformLoc,!1,Q):this.applyIdentityTransform(A)}if(A.atlasRemapLoc){const Q=I.uniforms.u_atlasRemap;Q instanceof Float32Array&&B.uniform4fv(A.atlasRemapLoc,Q)}if(A.opacityLoc){const Q=I.uniforms.u_opacity,E=typeof Q=="number"?Q:1;A.lastOpacity!==E&&(B.uniform1f(A.opacityLoc,E),A.lastOpacity=E)}if(A.rgbPremultipliedLoc){const Q=I.uniforms.u_rgbPremultiplied;typeof Q=="number"&&A.lastRgbPremultiplied!==Q&&(B.uniform1f(A.rgbPremultipliedLoc,Q),A.lastRgbPremultiplied=Q)}}beginFrame(A={}){const g=this.gl;if(this.contextLost)return $("backend-lost","WebGL2 context is lost");try{return g.viewport(0,0,this.canvas.width,this.canvas.height),g.colorMask(!0,!0,!0,!0),g.stencilMask(255),g.disable(g.STENCIL_TEST),g.disable(g.SCISSOR_TEST),g.clearColor(0,0,0,0),g.clearStencil(0),g.clear(g.COLOR_BUFFER_BIT|(A.stencil?g.STENCIL_BUFFER_BIT:0)),this.cachedDrawProgram=null,this.cachedTex0Id=null,this.cachedFrameTableId=null,this.cachedFrameMetadataId=null,this.cachedProjectionRef=null,this.cachedProjectionShader=null,this.svgaSlotStateUploadId=-1,ag}catch(I){return $("submission-error",this.errorMessage(I))}}endFrame(){if(this.contextLost)return $("backend-lost","WebGL2 context is lost");try{return this.gl.flush(),ag}catch(A){return $("submission-error",this.errorMessage(A))}}abortFrame(){const A=this.gl;if(this.contextLost)return $("backend-lost","WebGL2 context is lost");try{return A.colorMask(!0,!0,!0,!0),A.stencilMask(255),A.disable(A.STENCIL_TEST),A.disable(A.SCISSOR_TEST),A.clearColor(0,0,0,0),A.clearStencil(0),A.clear(A.COLOR_BUFFER_BIT|A.STENCIL_BUFFER_BIT),A.flush(),this.cachedDrawProgram=null,this.cachedTex0Id=null,this.cachedFrameTableId=null,this.cachedFrameMetadataId=null,this.cachedProjectionRef=null,this.cachedProjectionShader=null,this.svgaSlotStateUploadId=-1,ag}catch(g){return $("submission-error",this.errorMessage(g))}}errorMessage(A){return A instanceof Error?A.message:String(A)}getBufferSourceByteLength(A){return ArrayBuffer.isView(A),A.byteLength}createBuffer(A,g){const I=this.gl,B=I.createBuffer();if(!B)throw new Error("Failed to create buffer");I.bindVertexArray(null);const Q=g==="index"?I.ELEMENT_ARRAY_BUFFER:I.ARRAY_BUFFER;I.bindBuffer(Q,B),I.bufferData(Q,A,I.DYNAMIC_DRAW);const E=this.nextId++;return this.buffers.set(E,{buffer:B,usage:g,byteLength:this.getBufferSourceByteLength(A)}),{id:E,usage:g}}updateBuffer(A,g,I=0){const B=this.buffers.get(A.id);if(!B)return;const Q=this.gl;Q.bindVertexArray(null);const E=B.usage==="index"?Q.ELEMENT_ARRAY_BUFFER:Q.ARRAY_BUFFER;Q.bindBuffer(E,B.buffer);const e=this.getBufferSourceByteLength(g);I===0&&e<=B.byteLength?Q.bufferSubData(E,0,g):(Q.bufferData(E,g,Q.DYNAMIC_DRAW),B.byteLength=e)}deleteBuffer(A){const g=this.buffers.get(A.id);g&&(this.gl.bindVertexArray(null),this.deleteVertexArraysForBuffer(A.id),this.gl.deleteBuffer(g.buffer),this.buffers.delete(A.id))}uploadVideoFrameToTexture(A,g,I){const B=this.gl,Q=g.videoWidth,E=g.videoHeight;if(g.readyState<HTMLMediaElement.HAVE_CURRENT_DATA||Q<=0||E<=0)return!1;if(!this.videoElementPreferCanvasBridge){B.bindTexture(B.TEXTURE_2D,A),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,1);try{if(I?B.texImage2D(B.TEXTURE_2D,0,B.RGBA,B.RGBA,B.UNSIGNED_BYTE,g):B.texSubImage2D(B.TEXTURE_2D,0,0,0,B.RGBA,B.UNSIGNED_BYTE,g),!this.videoElementDirectUploadValidated){const t=B.getError();if(t!==B.NO_ERROR)throw new Error(`WebGL video upload error: 0x${t.toString(16)}`);this.videoElementDirectUploadValidated=!0}return!0}catch(t){this.videoElementPreferCanvasBridge=!0,console.debug("[WebGL2] direct HTMLVideo upload failed; using canvas bridge.",t)}finally{B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,0)}}this.videoUploadCanvas||(this.videoUploadCanvas=document.createElement("canvas"),this.videoUploadCtx=this.videoUploadCanvas.getContext("2d"));const e=this.videoUploadCanvas,i=this.videoUploadCtx;return i?((e.width!==Q||e.height!==E)&&(e.width=Q,e.height=E),i.drawImage(g,0,0,Q,E),B.bindTexture(B.TEXTURE_2D,A),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,1),I?B.texImage2D(B.TEXTURE_2D,0,B.RGBA,B.RGBA,B.UNSIGNED_BYTE,e):B.texSubImage2D(B.TEXTURE_2D,0,0,0,B.RGBA,B.UNSIGNED_BYTE,e),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,0),!0):!1}createTexture(A,g){var I,B;const Q=this.gl;Q.activeTexture(Q.TEXTURE0),this.cachedTex0Id=null;const E=g.filter==="nearest"?Q.NEAREST:Q.LINEAR,e=CQ(Q,E),i=g.premultiplyAlpha===!0;let t=(I=g.width)!=null?I:1,a=(B=g.height)!=null?B:1;if(A instanceof ArrayBuffer)Q.texImage2D(Q.TEXTURE_2D,0,Q.RGBA,t,a,0,Q.RGBA,Q.UNSIGNED_BYTE,new Uint8Array(A));else if(typeof VideoFrame!="undefined"&&A instanceof VideoFrame){const s=A;Q.bindTexture(Q.TEXTURE_2D,e),Q.pixelStorei(Q.UNPACK_FLIP_Y_WEBGL,1),Q.pixelStorei(Q.UNPACK_PREMULTIPLY_ALPHA_WEBGL,i?1:0),Q.texImage2D(Q.TEXTURE_2D,0,Q.RGBA,Q.RGBA,Q.UNSIGNED_BYTE,s),Q.pixelStorei(Q.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),Q.pixelStorei(Q.UNPACK_FLIP_Y_WEBGL,0),t=s.displayWidth||s.codedWidth||t,a=s.displayHeight||s.codedHeight||a}else if(A instanceof HTMLVideoElement)Q.bindTexture(Q.TEXTURE_2D,e),Q.pixelStorei(Q.UNPACK_PREMULTIPLY_ALPHA_WEBGL,i?1:0),this.uploadVideoFrameToTexture(e,A,!0),Q.pixelStorei(Q.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),t=A.videoWidth||t,a=A.videoHeight||a;else{const s=i,n=g.sourcePremultiplied===!0,r=s&&!n?1:0;Q.bindTexture(Q.TEXTURE_2D,e),Q.pixelStorei(Q.UNPACK_FLIP_Y_WEBGL,0),Q.pixelStorei(Q.UNPACK_PREMULTIPLY_ALPHA_WEBGL,r),Q.texImage2D(Q.TEXTURE_2D,0,Q.RGBA,Q.RGBA,Q.UNSIGNED_BYTE,A),Q.pixelStorei(Q.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),Q.pixelStorei(Q.UNPACK_FLIP_Y_WEBGL,0),"width"in A&&(t=A.width,a=A.height)}const o=this.nextId++;return this.textures.set(o,{texture:e,width:t,height:a}),{id:o,width:t,height:a}}canCreateSVGAFrameTable(){return this.svgaFrameTableSupported&&this.maxVertexTextureImageUnits>=2&&this.maxTextureSize>=3}assertSVGAFrameTableSupport(){if(!this.canCreateSVGAFrameTable())throw new Error(`WebGL2 SVGA frame table unsupported (vertexTextureUnits=${this.maxVertexTextureImageUnits}, maxTextureSize=${this.maxTextureSize}, shader=${this.svgaFrameTableSupported?"ready":"unavailable"})`)}createFloatTableTexture(A,g,I,B){const Q=this.gl,E=Math.floor(g),e=Math.floor(I);if(E<1||e<1||E>this.maxTextureSize||e>this.maxTextureSize)throw new RangeError(`[WebGL2] ${B} dimensions ${E}x${e} exceed MAX_TEXTURE_SIZE=${this.maxTextureSize}`);if(A.length!==E*e*4)throw new RangeError(`[WebGL2] ${B} data length ${A.length} does not match ${E}x${e} RGBA texels`);Q.activeTexture(Q.TEXTURE0),this.cachedTex0Id=null;const i=Q.createTexture();if(!i)throw new Error(`[WebGL2] failed to create ${B} texture`);Q.bindTexture(Q.TEXTURE_2D,i),Q.texParameteri(Q.TEXTURE_2D,Q.TEXTURE_MIN_FILTER,Q.NEAREST),Q.texParameteri(Q.TEXTURE_2D,Q.TEXTURE_MAG_FILTER,Q.NEAREST),Q.texParameteri(Q.TEXTURE_2D,Q.TEXTURE_WRAP_S,Q.CLAMP_TO_EDGE),Q.texParameteri(Q.TEXTURE_2D,Q.TEXTURE_WRAP_T,Q.CLAMP_TO_EDGE);const t=Q.getParameter(Q.UNPACK_ALIGNMENT);Q.pixelStorei(Q.UNPACK_ALIGNMENT,1);try{Q.texImage2D(Q.TEXTURE_2D,0,Q.RGBA32F,E,e,0,Q.RGBA,Q.FLOAT,A);const a=Q.getError();if(a!==Q.NO_ERROR)throw new Error(`GL error 0x${a.toString(16)} while uploading ${B}`)}catch(a){throw Q.deleteTexture(i),a}finally{Q.pixelStorei(Q.UNPACK_ALIGNMENT,t||4)}return{texture:i,width:E,height:e}}createLinearFloatTableTexture(A,g,I,B){const Q=Math.floor(g),E=Math.max(1,Math.floor(I));if(Q<1||A.length!==Q*4)throw new RangeError(`[WebGL2] ${B} requires ${Q*4} floats, got ${A.length}`);const e=this.maxTextureSize-this.maxTextureSize%E;if(e<E)throw new RangeError(`[WebGL2] ${B} cannot fit a ${E}-texel record in MAX_TEXTURE_SIZE=${this.maxTextureSize}`);const i=Math.max(E,Math.min(e,Q-Q%E||E)),t=Math.ceil(Q/i);if(t>this.maxTextureSize)throw new RangeError(`[WebGL2] ${B} dimensions ${i}x${t} exceed MAX_TEXTURE_SIZE=${this.maxTextureSize}`);const a=i*t===Q?A:new Float32Array(i*t*4);return a!==A&&a.set(A),this.createFloatTableTexture(a,i,t,B)}createSVGAFrameTableMetadata(A,g,I=QQ){this.assertSVGAFrameTableSupport();const B=Math.floor(g);if(B<1||!Number.isFinite(B))throw new RangeError(`[WebGL2] invalid SVGA sprite metadata count: ${g}`);const Q=Math.floor(I);if(Q<8||Q%4!==0)throw new RangeError(`[WebGL2] invalid SVGA metadata stride: ${I}`);const E=new Float32Array(B*Q);if(A.length===B*4)for(let t=0;t<B;t++){const a=t*4,o=t*Q;E.set(A.subarray(a,a+4),o),E[o+4]=t,E[o+5]=0}else if(A.length===E.length)E.set(A);else throw new RangeError(`[WebGL2] SVGA sprite metadata requires ${B*4} or ${E.length} floats, got ${A.length}`);const e=this.createLinearFloatTableTexture(E,B*(Q/4),Q/4,"SVGA sprite metadata"),i=this.nextId++;return this.textures.set(i,{texture:e.texture,width:e.width,height:e.height}),{id:i,width:e.width,height:e.height}}createSVGAFrameTable(A,g){var I,B,Q,E,e,i;this.assertSVGAFrameTableSupport();const t=Math.floor(g.spriteCount),a=Math.floor(g.frameCount);if(t<1||a<1||!Number.isFinite(t)||!Number.isFinite(a))throw new RangeError(`[WebGL2] invalid SVGA frame table dimensions ${t}x${a}`);const o=t*a;if(!Number.isSafeInteger(o)||A.length!==o*Wg)throw new RangeError(`[WebGL2] SVGA frame table requires ${o*Wg} floats, got ${A.length}`);const s=this.createLinearFloatTableTexture(A,o*3,3,"SVGA frame table"),n=this.nextId++,r={id:n,width:s.width,height:s.height};this.textures.set(n,{texture:s.texture,width:s.width,height:s.height});let c=g.metadataTexture,h;try{if(c&&!this.textures.has(c.id))throw new Error(`WebGL2 SVGA sprite metadata texture ${c.id} is not owned by this backend`);if(c=c!=null?c:((I=g.spriteMetadata)!=null?I:g.metadata)?this.createSVGAFrameTableMetadata((B=g.spriteMetadata)!=null?B:g.metadata,t):void 0,!g.metadataTexture&&c&&this.ownedFrameTableMetadataIds.add(c.id),g.hybridSpriteMetadata){const y=g.hybridSpriteMetadata.length/ZI;if(!Number.isSafeInteger(y)||y<1)throw new RangeError("SVGA Hybrid sprite metadata must contain complete 12-float rows");h=this.createSVGAFrameTableMetadata(g.hybridSpriteMetadata,y,ZI),this.ownedFrameTableMetadataIds.add(h.id)}}catch(y){this.gl.deleteTexture(s.texture),this.textures.delete(n);for(const R of[c,h]){if(!R||!this.ownedFrameTableMetadataIds.has(R.id))continue;const F=this.textures.get(R.id);F&&this.gl.deleteTexture(F.texture),this.textures.delete(R.id),this.ownedFrameTableMetadataIds.delete(R.id)}throw y}const l=g.atlasPageCount,w=Number.isFinite(l)&&l>0?Math.floor(l):1,D={backend:"webgl2",kind:"webgl2-texture",texture:r,textureWidth:s.width,textureHeight:s.height,spriteCount:t,frameCount:a,atlasPageCount:w,strideFloats:Wg,byteLength:A.byteLength,...c?{spriteMetadataTexture:c}:{},...h?{hybridSpriteMetadataTexture:h}:{}};return this.frameTables.set(n,{texture:s.texture,width:s.width,height:s.height,metadataTexture:c&&(E=(Q=this.textures.get(c.id))==null?void 0:Q.texture)!=null?E:null,metadataWidth:(e=c==null?void 0:c.width)!=null?e:0,metadataHeight:(i=c==null?void 0:c.height)!=null?i:0,metadataOwned:!g.metadataTexture&&!!c,binding:D}),D}deleteSVGAFrameTable(A){var g,I,B,Q,E;if(!A||A.backend!=="webgl2")return;const e=A.texture.id,i=this.frameTables.get(e);if(i){this.gl.deleteTexture(i.texture),this.textures.delete(e);const t=(g=i.binding.spriteMetadataTexture)==null?void 0:g.id;if(i.metadataOwned&&t!=null&&t!==e){const o=this.textures.get(t);o&&this.gl.deleteTexture(o.texture),this.textures.delete(t),this.ownedFrameTableMetadataIds.delete(t)}const a=(I=i.binding.hybridSpriteMetadataTexture)==null?void 0:I.id;if(a!=null&&a!==e){const o=this.textures.get(a);o&&this.gl.deleteTexture(o.texture),this.textures.delete(a),this.ownedFrameTableMetadataIds.delete(a)}this.frameTables.delete(e)}else{const t=this.textures.get(e);t&&(this.gl.deleteTexture(t.texture),this.textures.delete(e));const a=(B=A.spriteMetadataTexture)==null?void 0:B.id;if(a!=null&&this.ownedFrameTableMetadataIds.has(a)){const s=this.textures.get(a);s&&this.gl.deleteTexture(s.texture),this.textures.delete(a),this.ownedFrameTableMetadataIds.delete(a)}const o=(Q=A.hybridSpriteMetadataTexture)==null?void 0:Q.id;if(o!=null&&this.ownedFrameTableMetadataIds.has(o)){const s=this.textures.get(o);s&&this.gl.deleteTexture(s.texture),this.textures.delete(o),this.ownedFrameTableMetadataIds.delete(o)}}this.cachedFrameTableId===e&&(this.cachedFrameTableId=null),this.cachedFrameMetadataId===((E=A.spriteMetadataTexture)==null?void 0:E.id)&&(this.cachedFrameMetadataId=null)}createEmptyTexture(A,g,I={}){const B=this.gl;B.activeTexture(B.TEXTURE0),this.cachedTex0Id=null;const Q=I.filter==="nearest"?B.NEAREST:B.LINEAR,E=CQ(B,Q),e=Math.max(1,Math.floor(A)),i=Math.max(1,Math.floor(g));B.bindTexture(B.TEXTURE_2D,E),B.texImage2D(B.TEXTURE_2D,0,B.RGBA,e,i,0,B.RGBA,B.UNSIGNED_BYTE,null);const t=this.nextId++;return this.textures.set(t,{texture:E,width:e,height:i}),{id:t,width:e,height:i}}updateTexture(A,g){const I=this.textures.get(A.id);if(!I)return;if(this.gl.activeTexture(this.gl.TEXTURE0),this.cachedTex0Id=null,typeof VideoFrame!="undefined"&&g instanceof VideoFrame){const i=this.gl,t=XI(g),a=OI(g),o=t===I.width&&a===I.height;i.bindTexture(i.TEXTURE_2D,I.texture),i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,1),o?i.texSubImage2D(i.TEXTURE_2D,0,0,0,i.RGBA,i.UNSIGNED_BYTE,g):(i.texImage2D(i.TEXTURE_2D,0,i.RGBA,i.RGBA,i.UNSIGNED_BYTE,g),t>0&&a>0&&(I.width=t,I.height=a)),i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,0);return}if(g instanceof HTMLVideoElement){const i=g.videoWidth,t=g.videoHeight,a=i!==I.width||t!==I.height;this.uploadVideoFrameToTexture(I.texture,g,a)&&a&&(I.width=i,I.height=t);return}const B=this.gl,Q=XI(g),E=OI(g),e=Q===I.width&&E===I.height;B.bindTexture(B.TEXTURE_2D,I.texture),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,0),e?B.texSubImage2D(B.TEXTURE_2D,0,0,0,B.RGBA,B.UNSIGNED_BYTE,g):(B.texImage2D(B.TEXTURE_2D,0,B.RGBA,B.RGBA,B.UNSIGNED_BYTE,g),Q>0&&E>0&&(I.width=Q,I.height=E)),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,0)}updateTextureRegion(A,g,I,B,Q,E){const e=this.textures.get(A.id);if(!e)return;const i=this.gl;i.activeTexture(i.TEXTURE0),this.cachedTex0Id=null,i.bindTexture(i.TEXTURE_2D,e.texture);let t,a;if(typeof VideoFrame!="undefined"&&g instanceof VideoFrame)t=g.displayWidth||g.codedWidth,a=g.displayHeight||g.codedHeight;else if(g instanceof HTMLVideoElement){if(g.readyState<HTMLMediaElement.HAVE_CURRENT_DATA)return;t=g.videoWidth,a=g.videoHeight}else{const n=g;t=n.width,a=n.height}if(!t||!a)return;const o=Q!=null?Q:t,s=E!=null?E:a;if(o!==t||s!==a){this.videoUploadCanvas||(this.videoUploadCanvas=document.createElement("canvas"),this.videoUploadCtx=this.videoUploadCanvas.getContext("2d"));const n=this.videoUploadCanvas,r=this.videoUploadCtx;if(!r)return;(n.width!==o||n.height!==s)&&(n.width=o,n.height=s),r.drawImage(g,0,0,o,s),i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,1),i.texSubImage2D(i.TEXTURE_2D,0,I,B,i.RGBA,i.UNSIGNED_BYTE,n),i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,0);return}if(typeof VideoFrame!="undefined"&&g instanceof VideoFrame){i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,1),i.texSubImage2D(i.TEXTURE_2D,0,I,B,i.RGBA,i.UNSIGNED_BYTE,g),i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,0);return}if(g instanceof HTMLVideoElement){i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,1),i.texSubImage2D(i.TEXTURE_2D,0,I,B,i.RGBA,i.UNSIGNED_BYTE,g),i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,0);return}i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,0),i.texSubImage2D(i.TEXTURE_2D,0,I,B,i.RGBA,i.UNSIGNED_BYTE,g),i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,0)}deleteTexture(A){const g=this.textures.get(A.id);g&&(this.gl.deleteTexture(g.texture),this.textures.delete(A.id),this.cachedTex0Id===A.id&&(this.cachedTex0Id=null))}draw(A){var g;const I=A.shader;if(this.currentDrawResult=$("invalid-command",`WebGL2 rejected ${I}`),this.currentDrawRecorded=!1,this.contextLost)return this.currentDrawResult=$("backend-lost","WebGL2 context is lost"),this.rejectSVGAFastPathDraw(),this.currentDrawResult;try{if(I===tB||I==="svga-timeline-instanced-premul")return this.drawSVGAFrameTableGL(A),this.completeDrawResult();if(I==="svga-frame-table-shape-premul"||I==="svga-frame-table-clip-mask")return this.drawSVGAFrameTableMeshGL(A),this.completeDrawResult();if(A.shader==="svga-instanced-premul")return this.drawInstancedSvgaGL(A),this.completeDrawResult();if(A.shader==="clip-mask-instanced")return this.drawInstancedClipMaskGL(A),this.completeDrawResult();if(A.shader==="alpha-video-instanced")return this.drawInstancedAlphaGL(A),this.completeDrawResult();if(A.shader==="vap-instanced")return this.drawInstancedVapGL(A),this.completeDrawResult();if(A.shader==="particle-instanced")return this.drawInstancedParticlesGL(A),this.completeDrawResult();if(A.shader==="particle-sprite-instanced")return this.drawInstancedParticleSpritesGL(A),this.completeDrawResult();const B=this.gl,Q=(g=A.stencil)!=null?g:"none",E=A.shader==="clip-mask"||Q==="clear"?"clip-mask":A.shader,e=this.programs.get(E);if(!e)return this.rejectDrawResult("invalid-command",`WebGL2 shader unavailable: ${E}`);Q==="clear"?(B.enable(B.STENCIL_TEST),B.stencilFunc(B.ALWAYS,0,255),B.stencilOp(B.KEEP,B.KEEP,B.REPLACE),B.stencilMask(255),B.colorMask(!1,!1,!1,!1)):Q==="write"||A.shader==="clip-mask"?(B.enable(B.STENCIL_TEST),B.stencilFunc(B.ALWAYS,1,255),B.stencilOp(B.KEEP,B.KEEP,B.REPLACE),B.stencilMask(255),B.colorMask(!1,!1,!1,!1)):Q==="test"?(B.enable(B.STENCIL_TEST),B.stencilFunc(B.EQUAL,1,255),B.stencilOp(B.KEEP,B.KEEP,B.KEEP),B.stencilMask(0),B.colorMask(!0,!0,!0,!0)):(B.disable(B.STENCIL_TEST),B.colorMask(!0,!0,!0,!0)),this.cachedDrawProgram!==E&&(B.useProgram(e.program),this.cachedDrawProgram=E);for(let a=0;a<A.textures.length;a++){const o=A.textures[a].id;if(a===0&&this.cachedTex0Id===o)continue;const s=this.textures.get(o);if(!s)return this.rejectDrawResult("missing-resource",`WebGL2 texture ${o} is unavailable`);B.activeTexture(B.TEXTURE0+a),B.bindTexture(B.TEXTURE_2D,s.texture),a===0&&(this.cachedTex0Id=o)}this.applyDrawUniforms(e,E,A);const i=this.buffers.get(A.vertexBuffer.id),t=this.buffers.get(A.indexBuffer.id);return!i||!t?this.rejectDrawResult("missing-resource","WebGL2 draw buffer is unavailable"):(this.bindCachedVertexArray(E,A.vertexBuffer.id,A.indexBuffer.id)&&(B.bindBuffer(B.ARRAY_BUFFER,i.buffer),B.bindBuffer(B.ELEMENT_ARRAY_BUFFER,t.buffer),this.setupAttributes(E)),B.drawElements(B.TRIANGLES,A.indexCount,B.UNSIGNED_INT,0),this.recordSubmittedDraw(),(Q!=="none"||A.shader==="clip-mask")&&(B.disable(B.STENCIL_TEST),B.colorMask(!0,!0,!0,!0)),ag)}catch(B){return this.rejectDrawResult("submission-error",this.errorMessage(B))}}completeDrawResult(){return this.currentDrawRecorded||this.rejectSVGAFastPathDraw(),this.currentDrawResult}rejectDrawResult(A,g){return this.currentDrawResult=$(A,g),this.rejectSVGAFastPathDraw(),this.currentDrawResult}clearStencil(){const A=this.gl;A.stencilMask(255),A.clear(A.STENCIL_BUFFER_BIT)}setScissor(A,g,I,B){const Q=this.gl,E=this.canvas.width,e=this.canvas.height,i=Math.max(0,Math.min(E,Math.floor(A))),t=Math.max(0,Math.min(e,Math.floor(g))),a=Math.max(i,Math.min(E,Math.ceil(A+I))),o=Math.max(t,Math.min(e,Math.ceil(g+B)));Q.enable(Q.SCISSOR_TEST),Q.scissor(i,e-o,a-i,o-t)}resetScissor(){this.gl.disable(this.gl.SCISSOR_TEST)}setupAttributes(A){const g=this.gl;if(A===tB){g.enableVertexAttribArray(0),g.vertexAttribPointer(0,2,g.FLOAT,!1,8,0);for(let B=1;B<=9;B++)g.vertexAttribDivisor(B,0),g.disableVertexAttribArray(B)}else if(A==="svga-batch-premul"||A==="svga-frame-table-shape-premul")g.enableVertexAttribArray(0),g.vertexAttribPointer(0,3,g.FLOAT,!1,36,0),g.enableVertexAttribArray(1),g.vertexAttribPointer(1,4,g.FLOAT,!1,36,12),g.enableVertexAttribArray(2),g.vertexAttribPointer(2,2,g.FLOAT,!1,36,28);else if(A==="vap")g.enableVertexAttribArray(0),g.vertexAttribPointer(0,2,g.FLOAT,!1,24,0),g.enableVertexAttribArray(1),g.vertexAttribPointer(1,2,g.FLOAT,!1,24,8),g.enableVertexAttribArray(2),g.vertexAttribPointer(2,2,g.FLOAT,!1,24,16);else if(A==="clip-mask"||A==="svga-frame-table-clip-mask")g.enableVertexAttribArray(0),g.vertexAttribPointer(0,2,g.FLOAT,!1,8,0),g.disableVertexAttribArray(1),g.disableVertexAttribArray(2);else{g.enableVertexAttribArray(0),g.vertexAttribPointer(0,2,g.FLOAT,!1,16,0),g.enableVertexAttribArray(1),g.vertexAttribPointer(1,2,g.FLOAT,!1,16,8);for(let B=2;B<=9;B++)g.vertexAttribDivisor(B,0),g.disableVertexAttribArray(B)}}bindCachedVertexArray(A,g,I){const B=this.gl;let Q=this.vertexArrays.get(A);Q||(Q=new Map,this.vertexArrays.set(A,Q));let E=Q.get(g);E||(E=new Map,Q.set(g,E));const e=E.get(I);if(e)return B.bindVertexArray(e),!1;const i=B.createVertexArray();if(!i)throw new Error("Failed to create vertex array");return E.set(I,i),B.bindVertexArray(i),!0}deleteVertexArraysForBuffer(A){const g=this.gl;for(const[I,B]of this.vertexArrays){for(const[Q,E]of B){if(Q===A){for(const i of E.values())g.deleteVertexArray(i);B.delete(Q);continue}const e=E.get(A);e&&(g.deleteVertexArray(e),E.delete(A)),E.size===0&&B.delete(Q)}B.size===0&&this.vertexArrays.delete(I)}}deleteAllVertexArrays(){for(const A of this.vertexArrays.values())for(const g of A.values())for(const I of g.values())this.gl.deleteVertexArray(I);this.vertexArrays.clear()}ensureInstancedSvgaInstanceBuffer(){const A=this.gl;if(!this.instancedSvgaInstanceGLBuffer){const g=A.createBuffer();if(!g)throw new Error("createBuffer failed");A.bindVertexArray(null),A.bindBuffer(A.ARRAY_BUFFER,g),A.bufferData(A.ARRAY_BUFFER,bA.INST_SVGA_GL_BYTES,A.DYNAMIC_DRAW),this.instancedSvgaInstanceGLBuffer=g}return this.instancedSvgaInstanceGLBuffer}uploadSVGASlotStates(A,g,I=-1){const B=this.gl,Q=g*4;if(g<1||A.length<g*Ag||Q<1)return null;const E=Math.min(this.maxTextureSize,Math.max(4,2**Math.ceil(Math.log2(Q)))),e=Math.ceil(Q/E);if(e>this.maxTextureSize||!this.svgaSlotStateTexture&&(this.svgaSlotStateTexture=B.createTexture(),!this.svgaSlotStateTexture))return null;if(B.activeTexture(B.TEXTURE3),B.bindTexture(B.TEXTURE_2D,this.svgaSlotStateTexture),B.texParameteri(B.TEXTURE_2D,B.TEXTURE_MIN_FILTER,B.NEAREST),B.texParameteri(B.TEXTURE_2D,B.TEXTURE_MAG_FILTER,B.NEAREST),B.texParameteri(B.TEXTURE_2D,B.TEXTURE_WRAP_S,B.CLAMP_TO_EDGE),B.texParameteri(B.TEXTURE_2D,B.TEXTURE_WRAP_T,B.CLAMP_TO_EDGE),(this.svgaSlotStateTextureWidth!==E||this.svgaSlotStateTextureHeight!==e)&&(B.texImage2D(B.TEXTURE_2D,0,B.RGBA32F,E,e,0,B.RGBA,B.FLOAT,null),this.svgaSlotStateTextureWidth=E,this.svgaSlotStateTextureHeight=e),I>=0&&this.svgaSlotStateUploadId===I)return{width:E,height:e};const i=E*e*4,t=A.subarray(0,g*Ag);let a=t;return i!==t.length&&(this.svgaSlotStateUploadScratch.length<i&&(this.svgaSlotStateUploadScratch=new Float32Array(i)),this.svgaSlotStateUploadScratch.fill(0,0,i),this.svgaSlotStateUploadScratch.set(t),a=this.svgaSlotStateUploadScratch.subarray(0,i)),B.texSubImage2D(B.TEXTURE_2D,0,0,0,E,e,B.RGBA,B.FLOAT,a,0),this.performanceSVGADynamicUploadWrites++,this.performanceSVGADynamicUploadBytes+=g*Ag*Float32Array.BYTES_PER_ELEMENT,this.svgaSlotStateUploadId=I,{width:E,height:e}}resolveSVGAFrameTableSlotState(A,g){var I,B,Q,E,e,i,t,a,o,s,n,r,c,h,l,w,D,y,R,F,d,f,u,G,S,M,N,U,K,k,m,H,v,j,T,b,X,Z,EA,UA,FA,cA,IA,Ig,QA,V,YA,kA,W,pA,LA,og,PA,KA,vA;const nA=A.uniforms,L=(B=(I=A.svgaFrameTableSlotState)!=null?I:A.svgaSlotState)!=null?B:nA.u_svgaSlotState instanceof Float32Array?nA.u_svgaSlotState:nA.u_slotState instanceof Float32Array?nA.u_slotState:null,eA=nA.u_transform,Bg=nA.u_clipRect,AA=A.svgaFrameTableParentAffine,DA=A.svgaFrameTableParentTranslate,gA=A.svgaFrameTableClipRect,Jg=A.svgaFrameIndex!=null||A.svgaFrameTableFrameIndex!=null||A.frameTableFrameIndex!=null,Lg=A.svgaFrameTableOpacity!=null||typeof nA.u_opacity=="number";let Cg=1,dA=0,SA=0,GA=1,iA=0,tA=0,aA=(Q=A.svgaFrameTableOpacity)!=null?Q:typeof nA.u_opacity=="number"?nA.u_opacity:1,hA=(i=(e=(E=A.svgaFrameIndex)!=null?E:A.svgaFrameTableFrameIndex)!=null?e:A.frameTableFrameIndex)!=null?i:0,oA=0,rA=0,uA=this.canvas.width,RA=this.canvas.height,TA=0,Qg=(n=(s=(o=(a=(t=A.svgaFrameTableMetadataBase)!=null?t:A.svgaFrameTableSpriteBase)!=null?a:A.frameTableSpriteBase)!=null?o:A.svgaSpriteMetadataBase)!=null?s:A.svgaSpriteBase)!=null?n:0,Xg=(r=A.svgaFrameTableAtlasPage)!=null?r:-1;if(AA&&AA.length>=4)Cg=(c=AA[0])!=null?c:Cg,dA=(h=AA[1])!=null?h:dA,SA=(l=AA[2])!=null?l:SA,GA=(w=AA[3])!=null?w:GA,DA&&DA.length>=2&&(iA=(D=DA[0])!=null?D:iA,tA=(y=DA[1])!=null?y:tA),gA&&gA.length>=4&&(oA=(R=gA[0])!=null?R:oA,rA=(F=gA[1])!=null?F:rA,uA=(d=gA[2])!=null?d:uA,RA=(f=gA[3])!=null?f:RA,TA=1);else if(L&&L.length>=13)Cg=(u=L[0])!=null?u:Cg,dA=(G=L[1])!=null?G:dA,SA=(S=L[2])!=null?S:SA,GA=(M=L[3])!=null?M:GA,iA=(N=L[4])!=null?N:iA,tA=(U=L[5])!=null?U:tA,Lg||(aA=(K=L[6])!=null?K:aA),Jg||(hA=(k=L[7])!=null?k:hA),oA=(m=L[8])!=null?m:oA,rA=(H=L[9])!=null?H:rA,uA=(v=L[10])!=null?v:uA,RA=(j=L[11])!=null?j:RA,TA=((T=L[12])!=null?T:0)>.5?1:0,A.svgaFrameTableMetadataBase==null&&A.svgaFrameTableSpriteBase==null&&A.frameTableSpriteBase==null&&A.svgaSpriteMetadataBase==null&&A.svgaSpriteBase==null&&L.length>=14&&(Qg=(b=L[13])!=null?b:Qg);else if(eA instanceof Float32Array&&eA.length>=16){Cg=(X=eA[0])!=null?X:Cg,dA=(Z=eA[1])!=null?Z:dA,SA=(EA=eA[4])!=null?EA:SA,GA=(UA=eA[5])!=null?UA:GA,iA=(FA=eA[12])!=null?FA:iA,tA=(cA=eA[13])!=null?cA:tA;const jA=Bg instanceof Float32Array&&Bg.length>=4?Bg:gA;jA&&jA.length>=4&&(oA=(IA=jA[0])!=null?IA:oA,rA=(Ig=jA[1])!=null?Ig:rA,uA=(QA=jA[2])!=null?QA:uA,RA=(V=jA[3])!=null?V:RA,TA=typeof nA.u_clipEnabled=="number"?nA.u_clipEnabled>.5?1:0:1)}return AA&&L&&L.length>=13&&(DA||(iA=(YA=L[4])!=null?YA:iA,tA=(kA=L[5])!=null?kA:tA),Lg||(aA=(W=L[6])!=null?W:aA),Jg||(hA=(pA=L[7])!=null?pA:hA),gA||(oA=(LA=L[8])!=null?LA:oA,rA=(og=L[9])!=null?og:rA,uA=(PA=L[10])!=null?PA:uA,RA=(KA=L[11])!=null?KA:RA,TA=((vA=L[12])!=null?vA:0)>.5?1:0)),Number.isFinite(aA)||(aA=1),Number.isFinite(hA)||(hA=0),Number.isFinite(Qg)||(Qg=0),Number.isFinite(Xg)||(Xg=-1),hA=Math.max(0,Math.min(Math.max(1,g)-1,Math.floor(hA))),Qg=Math.max(0,Math.floor(Qg)),[Cg,dA,SA,GA,iA,tA,aA,oA,rA,uA,RA].every(Number.isFinite)?{parentA:Cg,parentB:dA,parentC:SA,parentD:GA,tx:iA,ty:tA,opacity:aA,frameIndex:hA,clipX0:oA,clipY0:rA,clipX1:uA,clipY1:RA,clipEnabled:TA,metadataBase:Qg,atlasPage:Math.max(-1,Math.floor(Xg))}:null}drawSVGAFrameTableGL(A){var g,I,B,Q,E,e,i,t,a,o,s,n,r,c,h,l,w,D,y,R,F,d,f,u;const G=this.gl;if(!this.svgaFrameTableSupported){this.rejectSVGAFastPathDraw();return}const S=(g=A.svgaFrameTable)!=null?g:null,M=S&&typeof S=="object"&&"backend"in S?S:null,N=(E=(Q=(B=(I=(M==null?void 0:M.backend)==="webgl2"?M.texture:null)!=null?I:S&&"id"in S?S:null)!=null?B:A.svgaFrameTableTexture)!=null?Q:A.frameTableTexture)!=null?E:null;if(!N){this.rejectSVGAFastPathDraw();return}const U=this.frameTables.get(N.id);if(!U){this.rejectSVGAFastPathDraw();return}const K=(a=(i=(e=A.svgaSpriteMetadataTexture)!=null?e:A.svgaSpriteMetadata)!=null?i:A.spriteMetadataTexture)!=null?a:(M==null?void 0:M.backend)==="webgl2"&&(t=M.spriteMetadataTexture)!=null?t:null;if(!K){this.rejectSVGAFastPathDraw();return}const k=this.textures.get(K.id);if(!k){this.rejectSVGAFastPathDraw();return}const m=(o=A.svgaFrameTableFrameCount)!=null?o:A.frameTableFrameCount,H=(s=A.svgaFrameTableSpriteCount)!=null?s:A.frameTableSpriteCount,v=Math.floor(Number.isFinite(m)?m:(M==null?void 0:M.backend)==="webgl2"?M.frameCount:0),j=Math.floor(Number.isFinite(H)?H:(M==null?void 0:M.backend)==="webgl2"?M.spriteCount:0),T=Math.floor((n=A.instanceCount)!=null?n:0),b=A.instanceData,X=A.svgaFrameTableSlotStates,Z=Math.floor((r=A.svgaFrameTableSlotStateCount)!=null?r:0),EA=Math.floor((c=A.svgaFrameTableSpritesPerSlot)!=null?c:0),UA=X!=null&&Z>0&&EA>0&&Z*EA===T&&X.length>=Z*Ag,FA=!UA&&b!=null&&b.length>=T*Ag,cA=U.width*U.height,IA=k.width*k.height,QA=Math.floor((h=A.svgaSpriteMetadataStrideFloats)!=null?h:QQ)/4,V=this.resolveSVGAFrameTableSlotState(A,v);let YA=(l=V==null?void 0:V.metadataBase)!=null?l:-1;if(V)if(UA)YA+=EA;else if(FA){let AA=-1;for(let DA=0;DA<T;DA++){const gA=Math.floor((w=b[DA*Ag+kg.metadataBase])!=null?w:-1);gA>AA&&(AA=gA)}YA=AA+1}else YA+=T;if(T<1||T>2048||v<1||j<1||!Number.isSafeInteger(v)||!Number.isSafeInteger(j)||!Number.isSafeInteger(QA)||QA<2||v*j*3>cA||!V||V.metadataBase<0||YA<1||YA*QA>IA){this.rejectSVGAFastPathDraw();return}const kA=tB,W=this.programs.get(kA);if(!W){this.rejectSVGAFastPathDraw();return}const pA=A.textures[0],LA=pA?this.textures.get(pA.id):null;if(!LA){this.rejectSVGAFastPathDraw();return}const og=(D=A.stencil)!=null?D:"none";og==="test"?(G.enable(G.STENCIL_TEST),G.stencilFunc(G.EQUAL,1,255),G.stencilOp(G.KEEP,G.KEEP,G.KEEP),G.stencilMask(0),G.colorMask(!0,!0,!0,!0)):(G.disable(G.STENCIL_TEST),G.colorMask(!0,!0,!0,!0)),this.cachedDrawProgram!==kA&&(G.useProgram(W.program),this.cachedDrawProgram=kA),G.activeTexture(G.TEXTURE0),this.cachedTex0Id!==pA.id&&(G.bindTexture(G.TEXTURE_2D,LA.texture),this.cachedTex0Id=pA.id),G.activeTexture(G.TEXTURE1),this.cachedFrameTableId!==N.id&&(G.bindTexture(G.TEXTURE_2D,U.texture),this.cachedFrameTableId=N.id),G.activeTexture(G.TEXTURE2),this.cachedFrameMetadataId!==K.id&&(G.bindTexture(G.TEXTURE_2D,k.texture),this.cachedFrameMetadataId=K.id);let PA=null;if(UA&&(PA=this.uploadSVGASlotStates(X,Z,A.svgaFrameTableSlotStateUploadId),!PA)){this.rejectSVGAFastPathDraw();return}this.applyProjectionUniform(W,kA,A.uniforms.u_projection);const KA=this.svgaTableInfoScratch;KA[0]=v,KA[1]=j,KA[2]=3,KA[3]=0;const vA=this.svgaTableSizeScratch;vA[0]=U.width,vA[1]=U.height;const nA=this.svgaMetadataSizeScratch;nA[0]=k.width,nA[1]=k.height;const L=G;if(W.tableInfoLoc&&((y=L.uniform4iv)==null||y.call(L,W.tableInfoLoc,KA)),W.frameTableSizeLoc&&((R=L.uniform2iv)==null||R.call(L,W.frameTableSizeLoc,vA)),W.spriteMetadataSizeLoc&&((F=L.uniform2iv)==null||F.call(L,W.spriteMetadataSizeLoc,nA)),W.spriteMetadataStrideLoc&&G.uniform1i(W.spriteMetadataStrideLoc,QA),W.spriteBaseLoc&&G.uniform1i(W.spriteBaseLoc,V.metadataBase),W.frameIndexLoc&&G.uniform1i(W.frameIndexLoc,V.frameIndex),W.parentAffineLoc&&G.uniform4f(W.parentAffineLoc,V.parentA,V.parentB,V.parentC,V.parentD),W.parentTranslateLoc&&G.uniform2f(W.parentTranslateLoc,V.tx,V.ty),W.slotOpacityLoc&&G.uniform1f(W.slotOpacityLoc,V.opacity),W.atlasPageLoc&&G.uniform1i(W.atlasPageLoc,V.atlasPage),W.clipRectLoc&&G.uniform4f(W.clipRectLoc,V.clipX0,V.clipY0,V.clipX1,V.clipY1),W.clipEnabledLoc&&G.uniform1f(W.clipEnabledLoc,V.clipEnabled),W.canvasHeightLoc&&G.uniform1f(W.canvasHeightLoc,this.canvas.height),W.instanceStateEnabledLoc&&G.uniform1f(W.instanceStateEnabledLoc,FA?1:0),W.compactSlotStateEnabledLoc&&G.uniform1f(W.compactSlotStateEnabledLoc,UA?1:0),W.spritesPerSlotLoc&&G.uniform1i(W.spritesPerSlotLoc,UA?EA:1),W.slotStateSizeLoc){const AA=new Int32Array([(d=PA==null?void 0:PA.width)!=null?d:1,(f=PA==null?void 0:PA.height)!=null?f:1]);(u=L.uniform2iv)==null||u.call(L,W.slotStateSizeLoc,AA)}const eA=this.buffers.get(A.vertexBuffer.id),Bg=this.buffers.get(A.indexBuffer.id);if(!eA||!Bg){this.rejectSVGAFastPathDraw();return}if(this.bindCachedVertexArray(kA,A.vertexBuffer.id,A.indexBuffer.id)&&(G.bindBuffer(G.ARRAY_BUFFER,eA.buffer),G.bindBuffer(G.ELEMENT_ARRAY_BUFFER,Bg.buffer),this.setupAttributes(kA)),FA){const AA=this.ensureInstancedSvgaInstanceBuffer();G.bindBuffer(G.ARRAY_BUFFER,AA),G.bufferSubData(G.ARRAY_BUFFER,0,b,0,T*Ag),this.performanceSVGADynamicUploadWrites++,this.performanceSVGADynamicUploadBytes+=T*Ag*Float32Array.BYTES_PER_ELEMENT;const DA=16*Float32Array.BYTES_PER_ELEMENT;for(let gA=1;gA<=4;gA++)G.enableVertexAttribArray(gA),G.vertexAttribPointer(gA,4,G.FLOAT,!1,DA,(gA-1)*4*Float32Array.BYTES_PER_ELEMENT),G.vertexAttribDivisor(gA,1)}else for(let AA=1;AA<=4;AA++)G.disableVertexAttribArray(AA),G.vertexAttribDivisor(AA,0);G.drawElementsInstanced(G.TRIANGLES,A.indexCount,G.UNSIGNED_INT,0,T),this.recordSubmittedDraw(),og!=="none"&&(G.disable(G.STENCIL_TEST),G.colorMask(!0,!0,!0,!0))}drawSVGAFrameTableMeshGL(A){var g,I,B,Q,E,e,i,t,a,o,s,n,r,c;const h=this.gl;if(!this.svgaFrameTableSupported)return;const l=(g=A.svgaFrameTable)!=null?g:null,w=l&&typeof l=="object"&&"backend"in l?l:null,D=(w==null?void 0:w.backend)==="webgl2"?w.texture:(I=A.svgaFrameTableTexture)!=null?I:null;if(!D)return;const y=this.frameTables.get(D.id);if(!y)return;const R=Math.floor((Q=(B=A.svgaFrameTableFrameCount)!=null?B:w==null?void 0:w.frameCount)!=null?Q:0),F=Math.floor((e=(E=A.svgaFrameTableSpriteCount)!=null?E:w==null?void 0:w.spriteCount)!=null?e:0),d=Math.floor((i=A.instanceCount)!=null?i:1),f=A.svgaFrameTableSlotStates,u=Math.floor((t=A.svgaFrameTableSlotStateCount)!=null?t:0),G=f!=null&&u===d&&A.svgaFrameTableSpritesPerSlot===1&&f.length>=u*Ag,S=this.resolveSVGAFrameTableSlotState(A,R);if(!S||R<1||F<1||d<1||d>2048)return;const M=A.shader,N=this.programs.get(M);if(!N)return;const U=(a=A.stencil)!=null?a:"none";U==="clear"?(h.enable(h.STENCIL_TEST),h.stencilFunc(h.ALWAYS,0,255),h.stencilOp(h.KEEP,h.KEEP,h.REPLACE),h.stencilMask(255),h.colorMask(!1,!1,!1,!1)):U==="write"?(h.enable(h.STENCIL_TEST),h.stencilFunc(h.ALWAYS,1,255),h.stencilOp(h.KEEP,h.KEEP,h.REPLACE),h.stencilMask(255),h.colorMask(!1,!1,!1,!1)):U==="test"?(h.enable(h.STENCIL_TEST),h.stencilFunc(h.EQUAL,1,255),h.stencilOp(h.KEEP,h.KEEP,h.KEEP),h.stencilMask(0),h.colorMask(!0,!0,!0,!0)):(h.disable(h.STENCIL_TEST),h.colorMask(!0,!0,!0,!0)),this.cachedDrawProgram!==M&&(h.useProgram(N.program),this.cachedDrawProgram=M),h.activeTexture(h.TEXTURE0),this.cachedTex0Id!==D.id&&(h.bindTexture(h.TEXTURE_2D,y.texture),this.cachedTex0Id=D.id),this.applyProjectionUniform(N,M,A.uniforms.u_projection),this.svgaTableInfoScratch[0]=R,this.svgaTableInfoScratch[1]=F,this.svgaTableInfoScratch[2]=3,this.svgaTableInfoScratch[3]=0,this.svgaTableSizeScratch[0]=y.width,this.svgaTableSizeScratch[1]=y.height;const K=h;N.tableInfoLoc&&((o=K.uniform4iv)==null||o.call(K,N.tableInfoLoc,this.svgaTableInfoScratch)),N.frameTableSizeLoc&&((s=K.uniform2iv)==null||s.call(K,N.frameTableSizeLoc,this.svgaTableSizeScratch)),N.spriteBaseLoc&&h.uniform1i(N.spriteBaseLoc,S.metadataBase),N.frameIndexLoc&&h.uniform1i(N.frameIndexLoc,S.frameIndex),N.parentAffineLoc&&h.uniform4f(N.parentAffineLoc,S.parentA,S.parentB,S.parentC,S.parentD),N.parentTranslateLoc&&h.uniform2f(N.parentTranslateLoc,S.tx,S.ty),N.slotOpacityLoc&&h.uniform1f(N.slotOpacityLoc,S.opacity),N.clipRectLoc&&h.uniform4f(N.clipRectLoc,S.clipX0,S.clipY0,S.clipX1,S.clipY1),N.clipEnabledLoc&&h.uniform1f(N.clipEnabledLoc,S.clipEnabled),N.canvasHeightLoc&&h.uniform1f(N.canvasHeightLoc,this.canvas.height);let k=null;if(G&&(k=this.uploadSVGASlotStates(f,u,A.svgaFrameTableSlotStateUploadId),!k))return;N.compactSlotStateEnabledLoc&&h.uniform1f(N.compactSlotStateEnabledLoc,G?1:0),N.slotStateSizeLoc&&(this.svgaTableSizeScratch[0]=(n=k==null?void 0:k.width)!=null?n:1,this.svgaTableSizeScratch[1]=(r=k==null?void 0:k.height)!=null?r:1,(c=K.uniform2iv)==null||c.call(K,N.slotStateSizeLoc,this.svgaTableSizeScratch));const m=this.buffers.get(A.vertexBuffer.id),H=this.buffers.get(A.indexBuffer.id);!m||!H||(this.bindCachedVertexArray(M,A.vertexBuffer.id,A.indexBuffer.id)&&(h.bindBuffer(h.ARRAY_BUFFER,m.buffer),h.bindBuffer(h.ELEMENT_ARRAY_BUFFER,H.buffer),this.setupAttributes(M)),h.drawElementsInstanced(h.TRIANGLES,A.indexCount,h.UNSIGNED_INT,0,d),this.recordSubmittedDraw(),U!=="none"&&(h.disable(h.STENCIL_TEST),h.colorMask(!0,!0,!0,!0)))}drawInstancedParticlesGL(A){var g;const I=this.gl,B=(g=A.instanceCount)!=null?g:0;if(B<1||!A.instanceBuffer)return;const Q=this.buffers.get(A.instanceBuffer.id),E=this.buffers.get(A.vertexBuffer.id),e=this.buffers.get(A.indexBuffer.id),i=this.programs.get("particle-instanced");if(!Q||!E||!e||!i)return;I.useProgram(i.program),this.cachedDrawProgram="particle-instanced",this.applyProjectionUniform(i,"particle-instanced",A.uniforms.u_projection);const t=A.uniforms.u_time,a=A.uniforms.u_particleSize,o=A.uniforms.u_globalAlpha;I.uniform1f(I.getUniformLocation(i.program,"u_time"),typeof t=="number"?t:0),I.uniform1f(I.getUniformLocation(i.program,"u_particleSize"),typeof a=="number"?a:8),I.uniform1f(I.getUniformLocation(i.program,"u_globalAlpha"),typeof o=="number"?o:1),I.bindVertexArray(null),I.bindBuffer(I.ARRAY_BUFFER,E.buffer),I.enableVertexAttribArray(0),I.vertexAttribPointer(0,2,I.FLOAT,!1,8,0),I.vertexAttribDivisor(0,0),I.bindBuffer(I.ARRAY_BUFFER,Q.buffer);const s=64;for(let n=1;n<=4;n++)I.enableVertexAttribArray(n),I.vertexAttribPointer(n,4,I.FLOAT,!1,s,16+(n-1)*16),I.vertexAttribDivisor(n,1);I.bindBuffer(I.ELEMENT_ARRAY_BUFFER,e.buffer),I.blendFunc(I.ONE,A.particleBlend==="additive"?I.ONE:I.ONE_MINUS_SRC_ALPHA),I.drawElementsInstanced(I.TRIANGLES,A.indexCount,I.UNSIGNED_INT,0,B),this.recordSubmittedDraw(),I.blendFunc(I.ONE,I.ONE_MINUS_SRC_ALPHA)}drawInstancedParticleSpritesGL(A){var g;const I=this.gl,B=(g=A.instanceCount)!=null?g:0;if(B<1||!A.instanceBuffer||!A.textures[0])return;const Q=this.buffers.get(A.instanceBuffer.id),E=this.buffers.get(A.vertexBuffer.id),e=this.buffers.get(A.indexBuffer.id),i=this.textures.get(A.textures[0].id);if(!Q||!E||!e||!i)return;const t=this.ensureParticleSpriteProgram();I.useProgram(t.program),this.cachedDrawProgram="particle-sprite-instanced",this.applyProjectionUniform(t,"particle-sprite-instanced",A.uniforms.u_projection);const a=A.uniforms.u_time,o=A.uniforms.u_globalAlpha,s=A.uniforms.u_sizeEnvelope,n=A.uniforms.u_fadeMode,r=A.uniforms.u_cssScale;t.particleTimeLoc&&I.uniform1f(t.particleTimeLoc,typeof a=="number"?a:0),t.particleGlobalAlphaLoc&&I.uniform1f(t.particleGlobalAlphaLoc,typeof o=="number"?o:1),t.particleSizeEnvelopeLoc&&I.uniform1f(t.particleSizeEnvelopeLoc,typeof s=="number"?s:1),t.particleFadeModeLoc&&I.uniform1f(t.particleFadeModeLoc,typeof n=="number"?n:1),t.particleCssScaleLoc&&I.uniform2fv(t.particleCssScaleLoc,r instanceof Float32Array&&r.length>=2?r:It),I.activeTexture(I.TEXTURE0),I.bindTexture(I.TEXTURE_2D,i.texture),this.cachedTex0Id=A.textures[0].id,I.bindVertexArray(null),I.bindBuffer(I.ARRAY_BUFFER,E.buffer),I.enableVertexAttribArray(0),I.vertexAttribPointer(0,2,I.FLOAT,!1,8,0),I.vertexAttribDivisor(0,0),I.bindBuffer(I.ARRAY_BUFFER,Q.buffer);const c=96;for(let h=1;h<=6;h++)I.enableVertexAttribArray(h),I.vertexAttribPointer(h,4,I.FLOAT,!1,c,32+(h-1)*16),I.vertexAttribDivisor(h,1);I.bindBuffer(I.ELEMENT_ARRAY_BUFFER,e.buffer),I.blendFunc(I.ONE,A.particleBlend==="additive"?I.ONE:I.ONE_MINUS_SRC_ALPHA),I.drawElementsInstanced(I.TRIANGLES,A.indexCount,I.UNSIGNED_INT,0,B),this.recordSubmittedDraw(),I.blendFunc(I.ONE,I.ONE_MINUS_SRC_ALPHA)}drawInstancedSvgaGL(A){var g,I;const B=this.gl,Q=(g=A.instanceCount)!=null?g:0,E=A.instanceData;if(Q<1||!E||E.length<Q*bA.INST_SVGA_GL_FLOATS)return;if(Q>bA.INST_SVGA_GL_MAX){console.warn("[WebGL2] svga-instanced-premul: instanceCount exceeds max",Q);return}const e=(I=A.stencil)!=null?I:"none";e==="test"?(B.enable(B.STENCIL_TEST),B.stencilFunc(B.EQUAL,1,255),B.stencilOp(B.KEEP,B.KEEP,B.KEEP),B.stencilMask(0),B.colorMask(!0,!0,!0,!0)):(B.disable(B.STENCIL_TEST),B.colorMask(!0,!0,!0,!0));const i="svga-instanced-premul",t=this.programs.get(i);if(!t)return;this.cachedDrawProgram!==i&&(B.useProgram(t.program),this.cachedDrawProgram=i);for(let n=0;n<A.textures.length;n++){const r=A.textures[n].id;if(n===0&&this.cachedTex0Id===r)continue;const c=this.textures.get(r);c&&(B.activeTexture(B.TEXTURE0+n),B.bindTexture(B.TEXTURE_2D,c.texture),n===0&&(this.cachedTex0Id=r))}this.applyProjectionUniform(t,i,A.uniforms.u_projection);const a=this.buffers.get(A.vertexBuffer.id),o=this.buffers.get(A.indexBuffer.id);if(!a||!o)return;const s=this.ensureInstancedSvgaInstanceBuffer();if(B.bindBuffer(B.ARRAY_BUFFER,s),B.bufferSubData(B.ARRAY_BUFFER,0,E,0,Q*bA.INST_SVGA_GL_FLOATS),this.performanceSVGADynamicUploadWrites++,this.performanceSVGADynamicUploadBytes+=Q*bA.INST_SVGA_GL_FLOATS*Float32Array.BYTES_PER_ELEMENT,this.bindCachedVertexArray(i,A.vertexBuffer.id,A.indexBuffer.id)){const n=bA.INST_SVGA_GL_STRIDE;B.bindBuffer(B.ARRAY_BUFFER,s),B.enableVertexAttribArray(1),B.vertexAttribPointer(1,4,B.FLOAT,!1,n,0),B.vertexAttribDivisor(1,1),B.enableVertexAttribArray(2),B.vertexAttribPointer(2,3,B.FLOAT,!1,n,16),B.vertexAttribDivisor(2,1),B.enableVertexAttribArray(3),B.vertexAttribPointer(3,4,B.FLOAT,!1,n,28),B.vertexAttribDivisor(3,1),B.enableVertexAttribArray(4),B.vertexAttribIPointer(4,2,B.UNSIGNED_INT,n,44),B.vertexAttribDivisor(4,1),B.bindBuffer(B.ARRAY_BUFFER,a.buffer),B.enableVertexAttribArray(0),B.vertexAttribPointer(0,2,B.FLOAT,!1,8,0),B.vertexAttribDivisor(0,0),B.bindBuffer(B.ELEMENT_ARRAY_BUFFER,o.buffer)}B.drawElementsInstanced(B.TRIANGLES,A.indexCount,B.UNSIGNED_INT,0,Q),this.recordSubmittedDraw(),e!=="none"&&(B.disable(B.STENCIL_TEST),B.colorMask(!0,!0,!0,!0))}ensureInstancedClipMaskBuffer(){const A=this.gl;if(!this.instancedClipMaskGLBuffer){const g=A.createBuffer();if(!g)throw new Error("createBuffer failed");A.bindVertexArray(null),A.bindBuffer(A.ARRAY_BUFFER,g),A.bufferData(A.ARRAY_BUFFER,bA.INST_CLIP_MASK_GL_BYTES,A.DYNAMIC_DRAW),this.instancedClipMaskGLBuffer=g}return this.instancedClipMaskGLBuffer}drawInstancedClipMaskGL(A){var g,I;const B=this.gl,Q=(g=A.instanceCount)!=null?g:0,E=A.instanceData;if(Q<1||!E||E.length<Q*bA.INST_CLIP_MASK_GL_FLOATS)return;if(Q>bA.INST_CLIP_MASK_GL_MAX){console.warn("[WebGL2] clip-mask-instanced: instanceCount exceeds max",Q);return}const e="clip-mask-instanced",i=this.programs.get(e);if(!i)return;const t=this.buffers.get(A.vertexBuffer.id),a=this.buffers.get(A.indexBuffer.id);if(!t||!a)return;const o=(I=A.stencil)!=null?I:"write";B.enable(B.STENCIL_TEST),B.stencilFunc(B.ALWAYS,o==="clear"?0:1,255),B.stencilOp(B.KEEP,B.KEEP,B.REPLACE),B.stencilMask(255),B.colorMask(!1,!1,!1,!1),this.cachedDrawProgram!==e&&(B.useProgram(i.program),this.cachedDrawProgram=e),this.applyProjectionUniform(i,e,A.uniforms.u_projection);const s=this.ensureInstancedClipMaskBuffer();if(B.bindBuffer(B.ARRAY_BUFFER,s),o!=="clear"&&B.bufferSubData(B.ARRAY_BUFFER,0,E,0,Q*bA.INST_CLIP_MASK_GL_FLOATS),this.bindCachedVertexArray(e,A.vertexBuffer.id,A.indexBuffer.id)){const n=bA.INST_CLIP_MASK_GL_STRIDE;B.bindBuffer(B.ARRAY_BUFFER,s),B.enableVertexAttribArray(1),B.vertexAttribPointer(1,4,B.FLOAT,!1,n,0),B.vertexAttribDivisor(1,1),B.enableVertexAttribArray(2),B.vertexAttribPointer(2,2,B.FLOAT,!1,n,16),B.vertexAttribDivisor(2,1),B.bindBuffer(B.ARRAY_BUFFER,t.buffer),B.enableVertexAttribArray(0),B.vertexAttribPointer(0,2,B.FLOAT,!1,8,0),B.vertexAttribDivisor(0,0),B.bindBuffer(B.ELEMENT_ARRAY_BUFFER,a.buffer)}B.drawElementsInstanced(B.TRIANGLES,A.indexCount,B.UNSIGNED_INT,0,Q),this.recordSubmittedDraw(),B.disable(B.STENCIL_TEST),B.colorMask(!0,!0,!0,!0)}ensureInstancedAlphaInstanceBuffer(){const A=this.gl;if(!this.instancedAlphaInstanceGLBuffer){const g=A.createBuffer();if(!g)throw new Error("createBuffer failed");A.bindVertexArray(null),A.bindBuffer(A.ARRAY_BUFFER,g),A.bufferData(A.ARRAY_BUFFER,bA.INST_ALPHA_GL_BYTES,A.DYNAMIC_DRAW),this.instancedAlphaInstanceGLBuffer=g}return this.instancedAlphaInstanceGLBuffer}drawInstancedAlphaGL(A){var g;const I=this.gl,B=(g=A.instanceCount)!=null?g:0,Q=A.instanceData;if(B<1||!Q||Q.length<B*12)return;if(B>bA.INST_ALPHA_GL_MAX){console.warn("[WebGL2] alpha-video-instanced: instanceCount exceeds max",B);return}I.disable(I.STENCIL_TEST),I.colorMask(!0,!0,!0,!0);const E="alpha-video-instanced",e=this.programs.get("alpha-video-instanced");if(!e)return;this.cachedDrawProgram!==E&&(I.useProgram(e.program),this.cachedDrawProgram=E);for(let o=0;o<A.textures.length;o++){const s=A.textures[o].id;if(o===0&&this.cachedTex0Id===s)continue;const n=this.textures.get(s);n&&(I.activeTexture(I.TEXTURE0+o),I.bindTexture(I.TEXTURE_2D,n.texture),o===0&&(this.cachedTex0Id=s))}this.applyProjectionUniform(e,E,A.uniforms.u_projection);const i=this.buffers.get(A.vertexBuffer.id),t=this.buffers.get(A.indexBuffer.id);if(!i||!t)return;const a=this.ensureInstancedAlphaInstanceBuffer();if(I.bindBuffer(I.ARRAY_BUFFER,a),I.bufferSubData(I.ARRAY_BUFFER,0,Q,0,B*12),this.bindCachedVertexArray(E,A.vertexBuffer.id,A.indexBuffer.id)){I.bindBuffer(I.ARRAY_BUFFER,a);for(let n=0;n<3;n++){const r=2+n;I.enableVertexAttribArray(r),I.vertexAttribPointer(r,4,I.FLOAT,!1,48,n*16),I.vertexAttribDivisor(r,1)}I.bindBuffer(I.ARRAY_BUFFER,i.buffer);const s=16;I.enableVertexAttribArray(0),I.vertexAttribPointer(0,2,I.FLOAT,!1,s,0),I.vertexAttribDivisor(0,0),I.enableVertexAttribArray(1),I.vertexAttribPointer(1,2,I.FLOAT,!1,s,8),I.vertexAttribDivisor(1,0),I.bindBuffer(I.ELEMENT_ARRAY_BUFFER,t.buffer)}I.drawElementsInstanced(I.TRIANGLES,A.indexCount,I.UNSIGNED_INT,0,B),this.recordSubmittedDraw()}ensureInstancedVapInstanceBuffer(){const A=this.gl;if(!this.instancedVapInstanceGLBuffer){const g=A.createBuffer();if(!g)throw new Error("createBuffer failed");A.bindVertexArray(null),A.bindBuffer(A.ARRAY_BUFFER,g),A.bufferData(A.ARRAY_BUFFER,bA.INST_VAP_GL_BYTES,A.DYNAMIC_DRAW),this.instancedVapInstanceGLBuffer=g}return this.instancedVapInstanceGLBuffer}drawInstancedVapGL(A){var g;const I=this.gl,B=(g=A.instanceCount)!=null?g:0,Q=A.instanceData;if(B<1||!Q||Q.length<B*32)return;if(B>bA.INST_VAP_GL_MAX){console.warn("[WebGL2] vap-instanced: instanceCount exceeds max",B);return}I.disable(I.STENCIL_TEST),I.colorMask(!0,!0,!0,!0);const E="vap-instanced",e=this.programs.get("vap-instanced");if(!e)return;this.cachedDrawProgram!==E&&(I.useProgram(e.program),this.cachedDrawProgram=E);for(let o=0;o<A.textures.length;o++){const s=A.textures[o].id;if(o===0&&this.cachedTex0Id===s)continue;const n=this.textures.get(s);n&&(I.activeTexture(I.TEXTURE0+o),I.bindTexture(I.TEXTURE_2D,n.texture),o===0&&(this.cachedTex0Id=s))}this.applyProjectionUniform(e,E,A.uniforms.u_projection);const i=this.buffers.get(A.vertexBuffer.id),t=this.buffers.get(A.indexBuffer.id);if(!i||!t)return;const a=this.ensureInstancedVapInstanceBuffer();if(I.bindBuffer(I.ARRAY_BUFFER,a),I.bufferSubData(I.ARRAY_BUFFER,0,Q,0,B*32),this.bindCachedVertexArray(E,A.vertexBuffer.id,A.indexBuffer.id)){I.bindBuffer(I.ARRAY_BUFFER,a);for(let n=0;n<8;n++){const r=2+n;I.enableVertexAttribArray(r),I.vertexAttribPointer(r,4,I.FLOAT,!1,128,n*16),I.vertexAttribDivisor(r,1)}I.bindBuffer(I.ARRAY_BUFFER,i.buffer);const s=16;I.enableVertexAttribArray(0),I.vertexAttribPointer(0,2,I.FLOAT,!1,s,0),I.vertexAttribDivisor(0,0),I.enableVertexAttribArray(1),I.vertexAttribPointer(1,2,I.FLOAT,!1,s,8),I.vertexAttribDivisor(1,0),I.bindBuffer(I.ELEMENT_ARRAY_BUFFER,t.buffer)}I.drawElementsInstanced(I.TRIANGLES,A.indexCount,I.UNSIGNED_INT,0,B),this.recordSubmittedDraw()}destroy(){this.deviceLostHandler=null,this.canvas.removeEventListener("webglcontextlost",this.onContextLost),this.runtimeDiagnosticHandler=null;const A=this.gl;A.bindVertexArray(null),this.deleteAllVertexArrays(),this.instancedSvgaInstanceGLBuffer&&(A.deleteBuffer(this.instancedSvgaInstanceGLBuffer),this.instancedSvgaInstanceGLBuffer=null),this.svgaSlotStateTexture&&(A.deleteTexture(this.svgaSlotStateTexture),this.svgaSlotStateTexture=null,this.svgaSlotStateTextureWidth=0,this.svgaSlotStateTextureHeight=0),this.instancedClipMaskGLBuffer&&(A.deleteBuffer(this.instancedClipMaskGLBuffer),this.instancedClipMaskGLBuffer=null),this.instancedAlphaInstanceGLBuffer&&(A.deleteBuffer(this.instancedAlphaInstanceGLBuffer),this.instancedAlphaInstanceGLBuffer=null),this.instancedVapInstanceGLBuffer&&(A.deleteBuffer(this.instancedVapInstanceGLBuffer),this.instancedVapInstanceGLBuffer=null);for(const[,I]of this.buffers)A.deleteBuffer(I.buffer);for(const[,I]of this.textures)A.deleteTexture(I.texture);for(const[,I]of this.programs)A.deleteProgram(I.program);this.buffers.clear(),this.frameTables.clear(),this.ownedFrameTableMetadataIds.clear(),this.textures.clear(),this.programs.clear();const g=A.getExtension("WEBGL_lose_context");g==null||g.loseContext()}};x(fA,"INST_SVGA_GL_MAX",2048);x(fA,"INST_SVGA_GL_FLOATS",13);x(fA,"INST_SVGA_GL_STRIDE",fA.INST_SVGA_GL_FLOATS*4);x(fA,"INST_SVGA_GL_BYTES",fA.INST_SVGA_GL_MAX*16*Float32Array.BYTES_PER_ELEMENT);x(fA,"INST_CLIP_MASK_GL_MAX",2048);x(fA,"INST_CLIP_MASK_GL_FLOATS",6);x(fA,"INST_CLIP_MASK_GL_STRIDE",fA.INST_CLIP_MASK_GL_FLOATS*4);x(fA,"INST_CLIP_MASK_GL_BYTES",fA.INST_CLIP_MASK_GL_MAX*fA.INST_CLIP_MASK_GL_STRIDE);x(fA,"INST_ALPHA_GL_MAX",1024);x(fA,"INST_ALPHA_GL_BYTES",fA.INST_ALPHA_GL_MAX*48);x(fA,"INST_VAP_GL_MAX",1024);x(fA,"INST_VAP_GL_BYTES",fA.INST_VAP_GL_MAX*128);let oE=fA;var Bt=Object.defineProperty,Ct=(C,A,g)=>A in C?Bt(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,mA=(C,A,g)=>Ct(C,typeof A!="symbol"?A+"":A,g);function Qt(C,A){let g=C.replace(/^#version\s+300\s+es\s*/m,"");return A==="vertex"?(g=g.replace(/layout\s*\(location\s*=\s*\d+\)\s*in\s+/g,"attribute "),g=g.replace(/\bout\s+/g,"varying ")):(g=g.replace(/\bin\s+/g,"varying "),g=g.replace(/out\s+vec4\s+fragColor\s*;\s*/g,""),g=g.replace(/\bfragColor\b/g,"gl_FragColor"),g=g.replace(/\btexture\s*\(/g,"texture2D(")),g}function EQ(C,A,g,I){const B=C.createShader(A);if(!B)throw new Error("Failed to create shader");if(C.shaderSource(B,Qt(g,I)),C.compileShader(B),!C.getShaderParameter(B,C.COMPILE_STATUS)){const Q=C.getShaderInfoLog(B);throw C.deleteShader(B),new Error(`Shader compile failed: ${Q}`)}return B}function fI(C,A,g,I){const B=EQ(C,C.VERTEX_SHADER,A,"vertex"),Q=EQ(C,C.FRAGMENT_SHADER,g,"fragment"),E=C.createProgram();if(!E)throw C.deleteShader(B),C.deleteShader(Q),new Error("Failed to create program");C.attachShader(E,B),C.attachShader(E,Q);for(const[e,i]of Object.entries(I))C.bindAttribLocation(E,i,e);if(C.linkProgram(E),!C.getProgramParameter(E,C.LINK_STATUS)){const e=C.getProgramInfoLog(E);throw C.deleteProgram(E),C.deleteShader(B),C.deleteShader(Q),new Error(`Program link failed: ${e}`)}return C.deleteShader(B),C.deleteShader(Q),E}function eQ(C,A=C.LINEAR,g=C.CLAMP_TO_EDGE){const I=C.createTexture();if(!I)throw new Error("Failed to create texture");return C.bindTexture(C.TEXTURE_2D,I),C.texParameteri(C.TEXTURE_2D,C.TEXTURE_MIN_FILTER,A),C.texParameteri(C.TEXTURE_2D,C.TEXTURE_MAG_FILTER,A),C.texParameteri(C.TEXTURE_2D,C.TEXTURE_WRAP_S,g),C.texParameteri(C.TEXTURE_2D,C.TEXTURE_WRAP_T,g),I}const Et=new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]);class lC{constructor(A,g=!0){mA(this,"type","webgl1"),mA(this,"canvas"),mA(this,"maxTextureSize",4096),mA(this,"antialias"),mA(this,"gl"),mA(this,"nextId",1),mA(this,"buffers",new Map),mA(this,"textures",new Map),mA(this,"programs",new Map),mA(this,"cachedDrawProgram",null),mA(this,"cachedTex0Id",null),mA(this,"cachedProjectionRef",null),mA(this,"cachedProjectionShader",null),mA(this,"lastDrawSubmitted",!1),mA(this,"videoUploadCanvas",null),mA(this,"videoUploadCtx",null),mA(this,"supportsUintIndices",!1),this.canvas=A,this.antialias=g}async init(){const A=this.canvas.getContext("webgl",{alpha:!0,premultipliedAlpha:!0,antialias:this.antialias,depth:!1,stencil:!0});if(!A)throw new Error("WebGL1 not available");this.gl=A,this.maxTextureSize=A.getParameter(A.MAX_TEXTURE_SIZE)||this.maxTextureSize,this.supportsUintIndices=!!A.getExtension("OES_element_index_uint"),A.enable(A.BLEND),A.blendFunc(A.ONE,A.ONE_MINUS_SRC_ALPHA),A.clearColor(0,0,0,0),A.pixelStorei(A.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),A.pixelStorei(A.UNPACK_COLORSPACE_CONVERSION_WEBGL,A.NONE),this.initPrograms()}initPrograms(){const A=this.gl,g=fI(A,P.svgaBatchPremul.vert,P.svgaBatchPremul.frag,{a_position:0,a_color:1,a_uv:2});this.programs.set("svga-batch-premul",this.makeProgramEntry(g,{transform:!0,opacity:!0})),this.bindProgramSamplers(g,{u_atlas:0});const I=fI(A,P.vap.vert,P.vap.frag,{a_position:0,a_rgbUV:1,a_alphaUV:2});this.programs.set("vap",this.makeProgramEntry(I,{transform:!0,atlasRemap:!0,opacity:!0,rgbPremultiplied:!0})),this.bindProgramSamplers(I,{u_video:0});const B=fI(A,P.alphaVideo.vert,P.alphaVideo.frag,{a_position:0,a_uv:1});this.programs.set("alpha-video",this.makeProgramEntry(B,{transform:!0,atlasRemap:!0,opacity:!0,rgbPremultiplied:!0})),this.bindProgramSamplers(B,{u_video:0});const Q=fI(A,P.rgbaTextured.vert,P.rgbaTextured.frag,{a_position:0,a_uv:1});this.programs.set("rgba-textured",this.makeProgramEntry(Q,{transform:!0,atlasRemap:!0,opacity:!0})),this.bindProgramSamplers(Q,{u_video:0});const E=fI(A,P.clipMask.vert,P.clipMask.frag,{a_position:0});this.programs.set("clip-mask",this.makeProgramEntry(E,{transform:!0}))}makeProgramEntry(A,g={}){const I=this.gl;return{program:A,projLoc:I.getUniformLocation(A,"u_projection"),transformLoc:g.transform?I.getUniformLocation(A,"u_transform"):null,atlasRemapLoc:g.atlasRemap?I.getUniformLocation(A,"u_atlasRemap"):null,opacityLoc:g.opacity?I.getUniformLocation(A,"u_opacity"):null,rgbPremultipliedLoc:g.rgbPremultiplied?I.getUniformLocation(A,"u_rgbPremultiplied"):null,lastOpacity:null,lastRgbPremultiplied:null}}applyIdentityTransform(A){A.transformLoc&&this.gl.uniformMatrix4fv(A.transformLoc,!1,Et)}bindProgramSamplers(A,g){const I=this.gl;I.useProgram(A);for(const B in g){const Q=I.getUniformLocation(A,B);Q&&I.uniform1i(Q,g[B])}}applyDrawUniforms(A,g,I){const B=this.gl,Q=I.uniforms.u_projection;if(A.projLoc&&Q instanceof Float32Array&&Q.length>=16&&(this.cachedProjectionShader!==g||this.cachedProjectionRef!==Q)&&(B.uniformMatrix4fv(A.projLoc,!1,Q),this.cachedProjectionShader=g,this.cachedProjectionRef=Q),A.transformLoc){const E=I.uniforms.u_transform;E instanceof Float32Array?B.uniformMatrix4fv(A.transformLoc,!1,E):this.applyIdentityTransform(A)}if(A.atlasRemapLoc){const E=I.uniforms.u_atlasRemap;E instanceof Float32Array&&B.uniform4fv(A.atlasRemapLoc,E)}if(A.opacityLoc){const E=I.uniforms.u_opacity,e=typeof E=="number"?E:1;A.lastOpacity!==e&&(B.uniform1f(A.opacityLoc,e),A.lastOpacity=e)}if(A.rgbPremultipliedLoc){const E=I.uniforms.u_rgbPremultiplied;typeof E=="number"&&A.lastRgbPremultiplied!==E&&(B.uniform1f(A.rgbPremultipliedLoc,E),A.lastRgbPremultiplied=E)}}beginFrame(A={}){const g=this.gl;try{return g.viewport(0,0,this.canvas.width,this.canvas.height),g.colorMask(!0,!0,!0,!0),g.stencilMask(255),g.disable(g.STENCIL_TEST),g.disable(g.SCISSOR_TEST),g.clearColor(0,0,0,0),g.clearStencil(0),g.clear(g.COLOR_BUFFER_BIT|(A.stencil?g.STENCIL_BUFFER_BIT:0)),this.cachedDrawProgram=null,this.cachedTex0Id=null,this.cachedProjectionRef=null,this.cachedProjectionShader=null,ag}catch(I){return $("submission-error",this.errorMessage(I))}}endFrame(){try{return this.gl.flush(),ag}catch(A){return $("submission-error",this.errorMessage(A))}}abortFrame(){const A=this.gl;try{return A.colorMask(!0,!0,!0,!0),A.stencilMask(255),A.disable(A.STENCIL_TEST),A.disable(A.SCISSOR_TEST),A.clearColor(0,0,0,0),A.clearStencil(0),A.clear(A.COLOR_BUFFER_BIT|A.STENCIL_BUFFER_BIT),A.flush(),this.cachedDrawProgram=null,this.cachedTex0Id=null,this.cachedProjectionRef=null,this.cachedProjectionShader=null,ag}catch(g){return $("submission-error",this.errorMessage(g))}}errorMessage(A){return A instanceof Error?A.message:String(A)}getBufferSourceByteLength(A){return ArrayBuffer.isView(A),A.byteLength}normalizeIndexSource(A){if(this.supportsUintIndices)return A;if(ArrayBuffer.isView(A)){if(A instanceof Uint16Array)return A;if("length"in A)return Uint16Array.from(A);const g=new Uint8Array(A.buffer,A.byteOffset,A.byteLength);return new Uint16Array(g.buffer.slice(g.byteOffset,g.byteOffset+g.byteLength))}return new Uint16Array(A)}createBuffer(A,g){const I=this.gl,B=I.createBuffer();if(!B)throw new Error("Failed to create buffer");const Q=g==="index"?this.normalizeIndexSource(A):A,E=g==="index"?I.ELEMENT_ARRAY_BUFFER:I.ARRAY_BUFFER;I.bindBuffer(E,B),I.bufferData(E,Q,I.DYNAMIC_DRAW);const e=this.nextId++;return this.buffers.set(e,{buffer:B,usage:g,byteLength:this.getBufferSourceByteLength(Q)}),{id:e,usage:g}}updateBuffer(A,g,I=0){const B=this.buffers.get(A.id);if(!B)return;const Q=this.gl,E=B.usage==="index"?this.normalizeIndexSource(g):g,e=B.usage==="index"?Q.ELEMENT_ARRAY_BUFFER:Q.ARRAY_BUFFER;Q.bindBuffer(e,B.buffer);const i=this.getBufferSourceByteLength(E);I===0&&i<=B.byteLength?Q.bufferSubData(e,0,E):(Q.bufferData(e,E,Q.DYNAMIC_DRAW),B.byteLength=i)}deleteBuffer(A){const g=this.buffers.get(A.id);g&&(this.gl.deleteBuffer(g.buffer),this.buffers.delete(A.id))}ensureVideoUploadCanvas(A,g){return this.videoUploadCanvas||(this.videoUploadCanvas=document.createElement("canvas"),this.videoUploadCtx=this.videoUploadCanvas.getContext("2d")),!this.videoUploadCtx||!this.videoUploadCanvas?null:((this.videoUploadCanvas.width!==A||this.videoUploadCanvas.height!==g)&&(this.videoUploadCanvas.width=A,this.videoUploadCanvas.height=g),this.videoUploadCtx)}uploadVideoFrameToTexture(A,g,I){const B=this.gl,Q=g.videoWidth,E=g.videoHeight;if(g.readyState<HTMLMediaElement.HAVE_CURRENT_DATA||Q<=0||E<=0)return!1;const e=this.ensureVideoUploadCanvas(Q,E);return!e||!this.videoUploadCanvas?!1:(e.drawImage(g,0,0,Q,E),B.bindTexture(B.TEXTURE_2D,A),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,1),I?B.texImage2D(B.TEXTURE_2D,0,B.RGBA,B.RGBA,B.UNSIGNED_BYTE,this.videoUploadCanvas):B.texSubImage2D(B.TEXTURE_2D,0,0,0,B.RGBA,B.UNSIGNED_BYTE,this.videoUploadCanvas),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,0),!0)}createTexture(A,g){var I,B;const Q=this.gl,E=g.filter==="nearest"?Q.NEAREST:Q.LINEAR,e=eQ(Q,E),i=g.premultiplyAlpha===!0;let t=(I=g.width)!=null?I:1,a=(B=g.height)!=null?B:1;if(A instanceof ArrayBuffer)Q.texImage2D(Q.TEXTURE_2D,0,Q.RGBA,t,a,0,Q.RGBA,Q.UNSIGNED_BYTE,new Uint8Array(A));else if(typeof VideoFrame!="undefined"&&A instanceof VideoFrame)Q.bindTexture(Q.TEXTURE_2D,e),Q.pixelStorei(Q.UNPACK_FLIP_Y_WEBGL,1),Q.pixelStorei(Q.UNPACK_PREMULTIPLY_ALPHA_WEBGL,i?1:0),Q.texImage2D(Q.TEXTURE_2D,0,Q.RGBA,Q.RGBA,Q.UNSIGNED_BYTE,A),Q.pixelStorei(Q.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),Q.pixelStorei(Q.UNPACK_FLIP_Y_WEBGL,0),t=A.displayWidth||A.codedWidth||t,a=A.displayHeight||A.codedHeight||a;else if(A instanceof HTMLVideoElement)Q.bindTexture(Q.TEXTURE_2D,e),Q.pixelStorei(Q.UNPACK_PREMULTIPLY_ALPHA_WEBGL,i?1:0),this.uploadVideoFrameToTexture(e,A,!0),Q.pixelStorei(Q.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),t=A.videoWidth||t,a=A.videoHeight||a;else{const s=i,n=g.sourcePremultiplied===!0,r=s&&!n?1:0;Q.bindTexture(Q.TEXTURE_2D,e),Q.pixelStorei(Q.UNPACK_FLIP_Y_WEBGL,0),Q.pixelStorei(Q.UNPACK_PREMULTIPLY_ALPHA_WEBGL,r),Q.texImage2D(Q.TEXTURE_2D,0,Q.RGBA,Q.RGBA,Q.UNSIGNED_BYTE,A),Q.pixelStorei(Q.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),Q.pixelStorei(Q.UNPACK_FLIP_Y_WEBGL,0),"width"in A&&(t=A.width,a=A.height)}const o=this.nextId++;return this.textures.set(o,{texture:e,width:t,height:a}),{id:o,width:t,height:a}}createEmptyTexture(A,g,I={}){const B=this.gl,Q=I.filter==="nearest"?B.NEAREST:B.LINEAR,E=eQ(B,Q),e=Math.max(1,Math.floor(A)),i=Math.max(1,Math.floor(g));B.bindTexture(B.TEXTURE_2D,E),B.texImage2D(B.TEXTURE_2D,0,B.RGBA,e,i,0,B.RGBA,B.UNSIGNED_BYTE,null);const t=this.nextId++;return this.textures.set(t,{texture:E,width:e,height:i}),{id:t,width:e,height:i}}updateTexture(A,g){const I=this.textures.get(A.id);if(!I)return;if(typeof VideoFrame!="undefined"&&g instanceof VideoFrame){const i=this.gl,t=XI(g),a=OI(g),o=t===I.width&&a===I.height;i.bindTexture(i.TEXTURE_2D,I.texture),i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,1),o?i.texSubImage2D(i.TEXTURE_2D,0,0,0,i.RGBA,i.UNSIGNED_BYTE,g):(i.texImage2D(i.TEXTURE_2D,0,i.RGBA,i.RGBA,i.UNSIGNED_BYTE,g),t>0&&a>0&&(I.width=t,I.height=a)),i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,0);return}if(g instanceof HTMLVideoElement){const i=g.videoWidth,t=g.videoHeight,a=i!==I.width||t!==I.height;this.uploadVideoFrameToTexture(I.texture,g,a)&&a&&(I.width=i,I.height=t);return}const B=this.gl,Q=XI(g),E=OI(g),e=Q===I.width&&E===I.height;B.bindTexture(B.TEXTURE_2D,I.texture),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,0),e?B.texSubImage2D(B.TEXTURE_2D,0,0,0,B.RGBA,B.UNSIGNED_BYTE,g):(B.texImage2D(B.TEXTURE_2D,0,B.RGBA,B.RGBA,B.UNSIGNED_BYTE,g),Q>0&&E>0&&(I.width=Q,I.height=E)),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,0)}updateTextureRegion(A,g,I,B,Q,E){const e=this.textures.get(A.id);if(!e)return;const i=this.gl;i.bindTexture(i.TEXTURE_2D,e.texture);let t,a;if(typeof VideoFrame!="undefined"&&g instanceof VideoFrame)t=g.displayWidth||g.codedWidth,a=g.displayHeight||g.codedHeight;else if(g instanceof HTMLVideoElement){if(g.readyState<HTMLMediaElement.HAVE_CURRENT_DATA)return;t=g.videoWidth,a=g.videoHeight}else{const n=g;t=n.width,a=n.height}if(!t||!a)return;const o=Q!=null?Q:t,s=E!=null?E:a;if(o!==t||s!==a){const n=this.ensureVideoUploadCanvas(o,s);if(!n||!this.videoUploadCanvas)return;n.drawImage(g,0,0,o,s),i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,1),i.texSubImage2D(i.TEXTURE_2D,0,I,B,i.RGBA,i.UNSIGNED_BYTE,this.videoUploadCanvas),i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,0);return}if(typeof VideoFrame!="undefined"&&g instanceof VideoFrame){i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,1),i.texSubImage2D(i.TEXTURE_2D,0,I,B,i.RGBA,i.UNSIGNED_BYTE,g),i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,0);return}if(g instanceof HTMLVideoElement){i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,1),i.texSubImage2D(i.TEXTURE_2D,0,I,B,i.RGBA,i.UNSIGNED_BYTE,g),i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,0);return}i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,0),i.texSubImage2D(i.TEXTURE_2D,0,I,B,i.RGBA,i.UNSIGNED_BYTE,g)}deleteTexture(A){const g=this.textures.get(A.id);g&&(this.gl.deleteTexture(g.texture),this.textures.delete(A.id),this.cachedTex0Id===A.id&&(this.cachedTex0Id=null))}draw(A){this.lastDrawSubmitted=!1;const g=A.stencil==="clear"||A.shader==="clip-mask"?"clip-mask":A.shader;if(!this.programs.has(g))return $("invalid-command",`WebGL1 shader unavailable: ${g}`);if(!this.buffers.has(A.vertexBuffer.id)||!this.buffers.has(A.indexBuffer.id))return $("missing-resource","WebGL1 draw buffer is unavailable");for(const I of A.textures)if(!this.textures.has(I.id))return $("missing-resource",`WebGL1 texture ${I.id} is unavailable`);try{this.drawInternal(A)}catch(I){return $("submission-error",this.errorMessage(I))}return this.lastDrawSubmitted?ag:$("invalid-command",`WebGL1 rejected ${A.shader}`)}drawInternal(A){var g;const I=this.gl,B=(g=A.stencil)!=null?g:"none",Q=A.shader==="clip-mask"||B==="clear"?"clip-mask":A.shader;if(Q==="svga-instanced-premul"||Q==="alpha-video-instanced"||Q==="vap-instanced")throw new Error(`WebGL1 backend does not support instanced shader: ${Q}`);const E=this.programs.get(Q);if(!E)return;B==="clear"?(I.enable(I.STENCIL_TEST),I.stencilFunc(I.ALWAYS,0,255),I.stencilOp(I.KEEP,I.KEEP,I.REPLACE),I.stencilMask(255),I.colorMask(!1,!1,!1,!1)):B==="write"||A.shader==="clip-mask"?(I.enable(I.STENCIL_TEST),I.stencilFunc(I.ALWAYS,1,255),I.stencilOp(I.KEEP,I.KEEP,I.REPLACE),I.stencilMask(255),I.colorMask(!1,!1,!1,!1)):B==="test"?(I.enable(I.STENCIL_TEST),I.stencilFunc(I.EQUAL,1,255),I.stencilOp(I.KEEP,I.KEEP,I.KEEP),I.stencilMask(0),I.colorMask(!0,!0,!0,!0)):(I.disable(I.STENCIL_TEST),I.colorMask(!0,!0,!0,!0)),this.cachedDrawProgram!==Q&&(I.useProgram(E.program),this.cachedDrawProgram=Q);for(let t=0;t<A.textures.length;t++){const a=A.textures[t].id;if(t===0&&this.cachedTex0Id===a)continue;const o=this.textures.get(a);o&&(I.activeTexture(I.TEXTURE0+t),I.bindTexture(I.TEXTURE_2D,o.texture),t===0&&(this.cachedTex0Id=a))}this.applyDrawUniforms(E,Q,A);const e=this.buffers.get(A.vertexBuffer.id),i=this.buffers.get(A.indexBuffer.id);!e||!i||(I.bindBuffer(I.ARRAY_BUFFER,e.buffer),I.bindBuffer(I.ELEMENT_ARRAY_BUFFER,i.buffer),this.setupAttributes(Q),I.drawElements(I.TRIANGLES,A.indexCount,this.supportsUintIndices?I.UNSIGNED_INT:I.UNSIGNED_SHORT,0),this.lastDrawSubmitted=!0,(B!=="none"||A.shader==="clip-mask")&&(I.disable(I.STENCIL_TEST),I.colorMask(!0,!0,!0,!0)))}clearStencil(){const A=this.gl;A.stencilMask(255),A.clear(A.STENCIL_BUFFER_BIT)}setScissor(A,g,I,B){const Q=this.gl,E=this.canvas.width,e=this.canvas.height,i=Math.max(0,Math.min(E,Math.floor(A))),t=Math.max(0,Math.min(e,Math.floor(g))),a=Math.max(i,Math.min(E,Math.ceil(A+I))),o=Math.max(t,Math.min(e,Math.ceil(g+B)));Q.enable(Q.SCISSOR_TEST),Q.scissor(i,e-o,a-i,o-t)}resetScissor(){this.gl.disable(this.gl.SCISSOR_TEST)}setupAttributes(A){const g=this.gl;g.disableVertexAttribArray(0),g.disableVertexAttribArray(1),g.disableVertexAttribArray(2),A==="svga-batch-premul"?(g.enableVertexAttribArray(0),g.vertexAttribPointer(0,3,g.FLOAT,!1,36,0),g.enableVertexAttribArray(1),g.vertexAttribPointer(1,4,g.FLOAT,!1,36,12),g.enableVertexAttribArray(2),g.vertexAttribPointer(2,2,g.FLOAT,!1,36,28)):A==="vap"?(g.enableVertexAttribArray(0),g.vertexAttribPointer(0,2,g.FLOAT,!1,24,0),g.enableVertexAttribArray(1),g.vertexAttribPointer(1,2,g.FLOAT,!1,24,8),g.enableVertexAttribArray(2),g.vertexAttribPointer(2,2,g.FLOAT,!1,24,16)):A==="clip-mask"?(g.enableVertexAttribArray(0),g.vertexAttribPointer(0,2,g.FLOAT,!1,8,0)):(g.enableVertexAttribArray(0),g.vertexAttribPointer(0,2,g.FLOAT,!1,16,0),g.enableVertexAttribArray(1),g.vertexAttribPointer(1,2,g.FLOAT,!1,16,8))}destroy(){const A=this.gl;for(const[,I]of this.buffers)A.deleteBuffer(I.buffer);for(const[,I]of this.textures)A.deleteTexture(I.texture);for(const[,I]of this.programs)A.deleteProgram(I.program);this.buffers.clear(),this.textures.clear(),this.programs.clear();const g=A.getExtension("WEBGL_lose_context");g==null||g.loseContext()}}function sE(){return typeof GPUQueue!="undefined"&&typeof GPUQueue.prototype.copyExternalImageToTexture=="function"}function et(){return typeof navigator!="undefined"&&"gpu"in navigator&&sE()}function it(){if(typeof document=="undefined")return!1;try{return document.createElement("canvas").getContext("webgl2")!==null}catch(C){return!1}}function tt(){if(typeof document=="undefined")return!1;try{return document.createElement("canvas").getContext("webgl")!==null}catch(C){return!1}}function at(){return typeof SharedArrayBuffer!="undefined"&&typeof Atomics!="undefined"&&globalThis.crossOriginIsolated===!0}function nE(){return typeof OffscreenCanvas!="undefined"}async function rE(C,A=!0,g=!0,I=!1){const B=g,Q=g;if(I){const e=new lC(C,Q);return await e.init(),e}if(A&&typeof navigator!="undefined"&&"gpu"in navigator&&sE())try{const e=await navigator.gpu.requestAdapter({powerPreference:"high-performance"});if(e){const i=new aE(C,e,B);return await i.init(),i}else console.warn("[GiftStage] WebGPU unavailable: requestAdapter returned null, fallback to WebGL2/WebGL1.")}catch(e){console.warn(`[GiftStage] WebGPU init failed: ${e instanceof Error?e.message:String(e)}, fallback to WebGL2/WebGL1.`)}else A&&typeof navigator!="undefined"&&"gpu"in navigator&&console.warn("[GiftStage] WebGPU unavailable: GPUQueue.copyExternalImageToTexture is not supported, fallback to WebGL2/WebGL1.");try{const e=new oE(C,Q);return await e.init(),e}catch(e){console.warn(`[GiftStage] WebGL2 init failed: ${e instanceof Error?e.message:String(e)}, fallback to WebGL1.`)}const E=new lC(C,Q);return await E.init(),E}const ot={width:1920,height:1080},st={width:2560,height:1440};function nt(C=typeof navigator!="undefined"?navigator:void 0){var A;if(!(C!=null&&C.userAgent))return!1;const g=C.userAgent;return!!(/Android|iPhone|iPod|Mobile/i.test(g)||/iPad/i.test(g)||/Macintosh/i.test(g)&&((A=C.maxTouchPoints)!=null?A:0)>1)}function rt(C){return nt(C)?ot:st}function ct(C,A,g){const I=C.clientWidth||C.getBoundingClientRect().width||0,B=C.clientHeight||C.getBoundingClientRect().height||0,Q=A>0&&Number.isFinite(A)?A:1;let E=Math.max(1,Math.round(I*Q)),e=Math.max(1,Math.round(B*Q));if(g!==!1){const i=g!=null?g:rt(),t=Math.max(i.width,i.height),a=Math.min(i.width,i.height);if(t>0&&a>0){const o=Math.min(1,t/Math.max(E,e),a/Math.min(E,e));o<1&&(E=Math.max(1,Math.round(E*o)),e=Math.max(1,Math.round(e*o)))}}(C.width!==E||C.height!==e)&&(C.width=E,C.height=e)}function Zg(C){const A=C.clientWidth||C.getBoundingClientRect().width||1,g=C.clientHeight||C.getBoundingClientRect().height||1;return{sx:C.width/Math.max(1,A),sy:C.height/Math.max(1,g)}}const gI=9,ht={a:1,b:0,c:0,d:1,tx:0,ty:0};function cE(C,A,g){return(C*g+A)*gI}function lt(C,A,g){var I,B;const Q=(I=C.shapesIndex[A*C.frameCount+g])!=null?I:-1;return Q<0?null:(B=C.shapesTable[Q])!=null?B:null}function hE(C,A){var g,I,B,Q,E,e,i;const t=C.length;let a=A!=null?A:0;if(a<=0)for(const D of C)a=Math.max(a,D.frames.length);const o=C.map(D=>D.imageKey),s=new Float32Array(t*a*gI),n=[],r=new Map,c=new Int32Array(t*a).fill(-1),h=[],l=new Int32Array(t*a).fill(-1);let w=!1;for(let D=0;D<t;D++){const y=C[D];let R=null,F=-1;for(let d=0;d<a;d++){const f=y.frames[d],u=cE(D,d,a);if(!f){s[u+2]=1,s[u+5]=1;continue}const G=(I=(g=f.layout)==null?void 0:g.width)!=null?I:0,S=(Q=(B=f.layout)==null?void 0:B.height)!=null?Q:0,M=(E=f.transform)!=null?E:ht;s[u]=G,s[u+1]=S,s[u+2]=M.a,s[u+3]=M.b,s[u+4]=M.c,s[u+5]=M.d,s[u+6]=M.tx,s[u+7]=M.ty,s[u+8]=f.alpha;const N=(e=f.clipPath)!=null?e:"";if(N.length>0){let k=r.get(N);k===void 0&&(k=n.length,n.push(N),r.set(N,k)),c[D*a+d]=k}const U=f.shapes;if(!U||U.length===0){R=null,F=-1;continue}if(((i=U[0])==null?void 0:i.kind)==="keep"){F>=0&&(l[D*a+d]=F,w=!0);continue}if(R!==null&&U===R&&F>=0){l[D*a+d]=F,w=!0;continue}const K=U.every(k=>k.kind!=="keep")?U:U.filter(k=>k.kind!=="keep");if(K.length===0){R=null,F=-1;continue}R=K,F=h.length,h.push(K),l[D*a+d]=F,w=!0}}return{spriteCount:t,frameCount:a,imageKeys:o,frameData:s,clipPaths:n,clipPathIndex:c,shapesTable:h,shapesIndex:l,hasAnyShapes:w}}function Tg(C,A){if(A.allFramesInsideViewBox!==void 0)return A.allFramesInsideViewBox;const g=C.viewBoxWidth,I=C.viewBoxHeight;let B=g>0&&I>0&&!A.hasAnyShapes;const Q=B?Math.max(g,I)*.001+.001:0;A:for(let E=0;B&&E<A.spriteCount;E++)for(let e=0;e<A.frameCount;e++){const i=cE(E,e,A.frameCount),t=A.frameData[i],a=A.frameData[i+1];if(t<=0||a<=0)continue;const o=A.frameData[i+2],s=A.frameData[i+3],n=A.frameData[i+4],r=A.frameData[i+5],c=A.frameData[i+6],h=A.frameData[i+7],l=o*t+c,w=s*t+h,D=o*t+n*a+c,y=s*t+r*a+h,R=n*a+c,F=r*a+h;if(Math.min(c,l,D,R)<-Q||Math.min(h,w,y,F)<-Q||Math.max(c,l,D,R)>g+Q||Math.max(h,w,y,F)>I+Q){B=!1;break A}}return A.allFramesInsideViewBox=B,B}function dB(C,A,g){const I=Math.floor(C.length/AI),B=Math.floor(A.length/(hI*fg)),Q=Math.floor(g.length/mI),E=Math.min(I,B,Q);for(let e=0;e<E;e++){const i=e*AI,t=C[i],a=C[i+1],o=C[i+2],s=C[i+3],n=C[i+4],r=C[i+5],c=C[i+6],h=C[i+7],l=C[i+8],w=C[i+9],D=C[i+10],y=C[i+11],R=C[i+12],F=c,d=h,f=o*t+c,u=s*t+h,G=o*t+n*a+c,S=s*t+r*a+h,M=n*a+c,N=r*a+h,U=e*hI*fg;A[U]=F,A[U+1]=d,A[U+2]=0,A[U+3]=1,A[U+4]=1,A[U+5]=1,A[U+6]=l,A[U+7]=w,A[U+8]=D;const K=U+fg;A[K]=f,A[K+1]=u,A[K+2]=0,A[K+3]=1,A[K+4]=1,A[K+5]=1,A[K+6]=l,A[K+7]=y,A[K+8]=D;const k=U+2*fg;A[k]=G,A[k+1]=S,A[k+2]=0,A[k+3]=1,A[k+4]=1,A[k+5]=1,A[k+6]=l,A[k+7]=y,A[k+8]=R;const m=U+3*fg;A[m]=M,A[m+1]=N,A[m+2]=0,A[m+3]=1,A[m+4]=1,A[m+5]=1,A[m+6]=l,A[m+7]=w,A[m+8]=R;const H=e*mI,v=e*hI;g[H]=v,g[H+1]=v+1,g[H+2]=v+2,g[H+3]=v,g[H+4]=v+2,g[H+5]=v+3}return E}function Dt(C,A,g){const I=tQ(C,_.__wbindgen_malloc),B=qA;var Q=tQ(A,_.__wbindgen_malloc),E=qA,e=yE(g,_.__wbindgen_malloc),i=qA;return _.build_batch_vertices(I,B,Q,E,A,e,i,g)>>>0}function wt(C){const A=qB(C,_.__wbindgen_malloc),g=qA,I=_.decode_svga(A,g);if(I[2])throw PI(I[1]);return PI(I[0])}function yt(C){const A=qB(C,_.__wbindgen_malloc),g=qA,I=_.decode_svga_payload(A,g);if(I[3])throw PI(I[2]);var B=bB(I[0],I[1]).slice();return _.__wbindgen_free(I[0],I[1]*1,1),B}function Ft(C){const A=qB(C,_.__wbindgen_malloc),g=qA,I=_.decode_svga_payload_profiled(A,g);if(I[3])throw PI(I[2]);var B=bB(I[0],I[1]).slice();return _.__wbindgen_free(I[0],I[1]*1,1),B}function dt(C){const A=qB(C,_.__wbindgen_malloc),g=qA,I=_.inflate(A,g);if(I[3])throw PI(I[2]);var B=bB(I[0],I[1]).slice();return _.__wbindgen_free(I[0],I[1]*1,1),B}function lE(){_.init()}function Gt(){return _.take_svga_payload_profile()}function ut(C,A){const g=Mt(C,_.__wbindgen_malloc),I=qA,B=yE(A,_.__wbindgen_malloc),Q=qA,E=_.triangulate_clip_polygons(g,I,B,Q);var e=Rt(E[0],E[1]).slice();return _.__wbindgen_free(E[0],E[1]*4,4),e}function DE(){return{__proto__:null,"./gift_stage_wasm_bg.js":{__proto__:null,__wbg_Error_2e59b1b37a9a34c3:function(A,g){return Error(VB(A,g))},__wbg_String_8564e559799eccda:function(A,g){const I=String(g),B=Nt(I,_.__wbindgen_malloc,_.__wbindgen_realloc),Q=qA;iQ().setInt32(A+4,Q,!0),iQ().setInt32(A+0,B,!0)},__wbg___wbindgen_copy_to_typed_array_a4db337751e0b328:function(A,g,I){new Uint8Array(I.buffer,I.byteOffset,I.byteLength).set(bB(A,g))},__wbg___wbindgen_is_string_b29b5c5a8065ba1a:function(A){return typeof A=="string"},__wbg___wbindgen_throw_81fc77679af83bc6:function(A,g){throw new Error(VB(A,g))},__wbg_new_4f9fafbb3909af72:function(){return new Object},__wbg_new_99cabae501c0a8a0:function(){return new Map},__wbg_new_f3c9df4f38f3f798:function(){return new Array},__wbg_now_008d9b84600b5c19:function(){return performance.now()},__wbg_set_08463b1df38a7e29:function(A,g,I){return A.set(g,I)},__wbg_set_6be42768c690e380:function(A,g,I){A[g]=I},__wbg_set_6c60b2e8ad0e9383:function(A,g,I){A[g>>>0]=I},__wbindgen_cast_0000000000000001:function(A){return A},__wbindgen_cast_0000000000000002:function(A,g){return VB(A,g)},__wbindgen_cast_0000000000000003:function(A){return BigInt.asUintN(64,A)},__wbindgen_init_externref_table:function(){const A=_.__wbindgen_externrefs,g=A.grow(4);A.set(0,void 0),A.set(g+0,void 0),A.set(g+1,null),A.set(g+2,!0),A.set(g+3,!1)}}}}function Rt(C,A){return C=C>>>0,wE().subarray(C/4,C/4+A)}function bB(C,A){return C=C>>>0,lI().subarray(C/1,C/1+A)}let jg=null;function iQ(){return(jg===null||jg.buffer.detached===!0||jg.buffer.detached===void 0&&jg.buffer!==_.memory.buffer)&&(jg=new DataView(_.memory.buffer)),jg}let UI=null;function ft(){return(UI===null||UI.byteLength===0)&&(UI=new Float32Array(_.memory.buffer)),UI}let kI=null;function St(){return(kI===null||kI.byteLength===0)&&(kI=new Float64Array(_.memory.buffer)),kI}function VB(C,A){return C=C>>>0,kt(C,A)}let YI=null;function wE(){return(YI===null||YI.byteLength===0)&&(YI=new Uint32Array(_.memory.buffer)),YI}let pI=null;function lI(){return(pI===null||pI.byteLength===0)&&(pI=new Uint8Array(_.memory.buffer)),pI}function yE(C,A){const g=A(C.length*4,4)>>>0;return wE().set(C,g/4),qA=C.length,g}function qB(C,A){const g=A(C.length*1,1)>>>0;return lI().set(C,g/1),qA=C.length,g}function tQ(C,A){const g=A(C.length*4,4)>>>0;return ft().set(C,g/4),qA=C.length,g}function Mt(C,A){const g=A(C.length*8,8)>>>0;return St().set(C,g/8),qA=C.length,g}function Nt(C,A,g){if(g===void 0){const e=JI.encode(C),i=A(e.length,1)>>>0;return lI().subarray(i,i+e.length).set(e),qA=e.length,i}let I=C.length,B=A(I,1)>>>0;const Q=lI();let E=0;for(;E<I;E++){const e=C.charCodeAt(E);if(e>127)break;Q[B+E]=e}if(E!==I){E!==0&&(C=C.slice(E)),B=g(B,I,I=E+C.length*3,1)>>>0;const e=lI().subarray(B+E,B+I),i=JI.encodeInto(C,e);E+=i.written,B=g(B,I,E,1)>>>0}return qA=E,B}function PI(C){const A=_.__wbindgen_externrefs.get(C);return _.__externref_table_dealloc(C),A}let GB=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0});GB.decode();const Ut=2146435072;let ZB=0;function kt(C,A){return ZB+=A,ZB>=Ut&&(GB=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}),GB.decode(),ZB=A),GB.decode(lI().subarray(C,C+A))}const JI=new TextEncoder;"encodeInto"in JI||(JI.encodeInto=function(C,A){const g=JI.encode(C);return A.set(g),{read:C.length,written:g.length}});let qA=0,_;function FE(C,A){return _=C.exports,jg=null,UI=null,kI=null,YI=null,pI=null,_.__wbindgen_start(),_}async function Yt(C,A){if(typeof Response=="function"&&C instanceof Response){if(typeof WebAssembly.instantiateStreaming=="function")try{return await WebAssembly.instantiateStreaming(C,A)}catch(B){if(C.ok&&g(C.type)&&C.headers.get("Content-Type")!=="application/wasm")console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n",B);else throw B}const I=await C.arrayBuffer();return await WebAssembly.instantiate(I,A)}else{const I=await WebAssembly.instantiate(C,A);return I instanceof WebAssembly.Instance?{instance:I,module:C}:I}function g(I){switch(I){case"basic":case"cors":case"default":return!0}return!1}}function pt(C){if(_!==void 0)return _;C!==void 0&&(Object.getPrototypeOf(C)===Object.prototype?{module:C}=C:console.warn("using deprecated parameters for `initSync()`; pass a single object instead"));const A=DE();C instanceof WebAssembly.Module||(C=new WebAssembly.Module(C));const g=new WebAssembly.Instance(C,A);return FE(g)}async function dE(C){if(_!==void 0)return _;C!==void 0&&(Object.getPrototypeOf(C)===Object.prototype?{module_or_path:C}=C:console.warn("using deprecated parameters for the initialization function; pass a single object instead")),C===void 0&&(C=new URL("data:application/wasm;base64,AGFzbQEAAAAB6gI0YAJ/fwF/YAR/f39/AGADf39/AGACf38AYAN/f38Bf2AFf39/f38AYAF/AGABfwF/YAAAYAZ/f39/f38AYAR/f39/AX9gAAR/f39/YAABb2AFf39/f38Bf2ACf38Ef39/f2ACf38Bb2AGf39/f39/AX9gAn9/AX5gAAF/YAV/f31/fwBgBX9/fn9/AGAFf398f38AYAJ9fQF9YAJ8fAF8YAADf39/YAACf39gAAF8YANvf28AYANvb28Bb2ADb29vAGACf28AYAFvAX9gA39/bwBgAXwBb2ABfgFvYAh/f39/f39/fwBgBn9/f3x8fABgCHx8fHx8fHx8AX9gA39/fgBgBn9/f31/fwBgBn9/f35/fwBgBn9/f3x/fwBgAn9/A39/f2AEf39/fwJ/f2AIf39/f29/f28Bf2AEf35/fwBgBH99f38AYAR/fH9/AGADf399AGAHf39/f39/fwBgAXwBf2ADf398AAKmBxAXLi9naWZ0X3N0YWdlX3dhc21fYmcuanMaX193Ymdfbm93XzAwOGQ5Yjg0NjAwYjVjMTkAGhcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcxpfX3diZ19zZXRfNmM2MGIyZThhZDBlOTM4MwAbFy4vZ2lmdF9zdGFnZV93YXNtX2JnLmpzGl9fd2JnX3NldF8wODQ2M2IxZGYzOGE3ZTI5ABwXLi9naWZ0X3N0YWdlX3dhc21fYmcuanMaX193Ymdfc2V0XzZiZTQyNzY4YzY5MGUzODAAHRcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcx1fX3diZ19TdHJpbmdfODU2NGU1NTk3OTllY2NkYQAeFy4vZ2lmdF9zdGFnZV93YXNtX2JnLmpzGl9fd2JnX25ld185OWNhYmFlNTAxYzBhOGEwAAwXLi9naWZ0X3N0YWdlX3dhc21fYmcuanMaX193YmdfbmV3X2YzYzlkZjRmMzhmM2Y3OTgADBcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcxpfX3diZ19uZXdfNGY5ZmFmYmIzOTA5YWY3MgAMFy4vZ2lmdF9zdGFnZV93YXNtX2JnLmpzJ19fd2JnX19fd2JpbmRnZW5fdGhyb3dfODFmYzc3Njc5YWY4M2JjNgADFy4vZ2lmdF9zdGFnZV93YXNtX2JnLmpzHF9fd2JnX0Vycm9yXzJlNTliMWIzN2E5YTM0YzMADxcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcytfX3diZ19fX3diaW5kZ2VuX2lzX3N0cmluZ19iMjliNWM1YTgwNjViYTFhAB8XLi9naWZ0X3N0YWdlX3dhc21fYmcuanM1X193YmdfX193YmluZGdlbl9jb3B5X3RvX3R5cGVkX2FycmF5X2E0ZGIzMzc3NTFlMGIzMjgAIBcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcx9fX3diaW5kZ2VuX2luaXRfZXh0ZXJucmVmX3RhYmxlAAgXLi9naWZ0X3N0YWdlX3dhc21fYmcuanMgX193YmluZGdlbl9jYXN0XzAwMDAwMDAwMDAwMDAwMDEAIRcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcyBfX3diaW5kZ2VuX2Nhc3RfMDAwMDAwMDAwMDAwMDAwMgAPFy4vZ2lmdF9zdGFnZV93YXNtX2JnLmpzIF9fd2JpbmRnZW5fY2FzdF8wMDAwMDAwMDAwMDAwMDAzACIDzgHMAQEjJAcBAgIJAAMEEAYCAgMDAQUECgAKACUREQMBBQICAAICAwQAEgMAAQIDBgABAAEABgEEAQEDBQAGCQUCCQkCBQIDAAIIASYCAwEGBQYCCQYFAQEFBQUFAQEACScoKQUBAQIEBAUBBAAAAAcCAwEBBgIAAA0AAAoABg4ODiorLBAHDQUUExUGBgEKBAEIAgYWFxcWAAADAwMDAgAwAwIxAgQCMjMFABIKAwABAQMAAAMAAAICBwcIAgQEBgwAAAgDAwAEAAMAAwcIAgQJAnABZmZvAIAIBQMBABEGCQF/AUGAgMAACwe6Ag8GbWVtb3J5AgALZGVjb2RlX3N2Z2EAjgETZGVjb2RlX3N2Z2FfcGF5bG9hZACMARxkZWNvZGVfc3ZnYV9wYXlsb2FkX3Byb2ZpbGVkAIsBGXRha2Vfc3ZnYV9wYXlsb2FkX3Byb2ZpbGUAzQEHaW5mbGF0ZQCNARRidWlsZF9iYXRjaF92ZXJ0aWNlcwCQARl0cmlhbmd1bGF0ZV9jbGlwX3BvbHlnb25zAI8BBGluaXQA2gERX193YmluZGdlbl9tYWxsb2MAgwESX193YmluZGdlbl9yZWFsbG9jAIgBFV9fd2JpbmRnZW5fZXh0ZXJucmVmcwEBGV9f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oAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIAo2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABayAKSQRAIARBoAJqIAEgCkEBQQEQTCAEKAKoAiEBCyAKBEAgBCgCpAIgAWogCSAK/AoAAAsgBCAEKAKoAiAKaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAMAQsgBSgCCCIJQQJHBEAgBCgCoAIgAUYEQCAEQaACahBhCyAEKAKkAiABakEBOgAAIAQgAUEBaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgIMQwAAAAAgCUEBcRshQSAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIEE4AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgIUQwAAAAAgBSgCEBshQSAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIEE4AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgIcQwAAAAAgBSgCGBshQSAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIEE4AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgIkQwAAAAAgBSgCIBshQSAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIEE4AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgIsQwAAAAAgBSgCKBshQSAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIEE4AAAMAQsgBSgCMCIJQQJGDQIgBCgCoAIgAUYEQCAEQaACahBhCyAEKAKkAiABakECOgAAIAQgAUEBaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgI0QwAAAAAgCUEBcRshQSAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIEE4AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgI8QwAAAAAgBSgCOBshQSAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIEE4AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgJEQwAAAAAgBSgCQBshQSAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIEE4AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgJMQwAAAAAgBSgCSBsMAQsgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJq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ZkUgLCAroiApICaiZkVyDQAgHSAHQQhqKwMAoSAJKwMAIByhoiAcIAcrAwChIAlBCGorAwAgHaGioUQAAAAAAAAAAGYNAgsgCiAPRw0ACwwGCyABIAhHDQALCwJAAkAgC0H/AXFBAWsOAgQBAAsgDEEcaiENIAEgDGohBiABIQoDQCAKIQgCQANAIAwgBigCJCIBaiEHIAYoAhBBAE4EQCAGKAIgIQogBisDACAHKwMAYgR/QQAFIAYrAwggBysDCGELDQIgBkEIaisDACIcIAogDGoiCUEIaisDAKEgBysDACAGKwMAIh2hoiAdIAkrAwChIAdBCGorAwAgHKGioUQAAAAAAAAAAGENAgsgByEGIAEgCEcNAAtBASELIAghAQwICyAGKAIcIQggBigCGCEJIAogDGoiBiABNgIkAkAgCUUNACAJIApHBEAgCSANaiAINgIADAELIAYgCDYCHAsgByAKNgIgIAgEQCAHIAggDGogASAIRhsgCTYCGAtBASELIAEgCkcNAAsMBgsgDEEkaiEYIAEgDGohCyABIQgDQCAMIAsoAiQiD2ohByAPIBhqKAIAIg0gCygCICIZRwRAIAwgGWohFiALKAIQIhBB/////wdxIRoDQAJAIAwgDSIOaiIRKAIQIgYgEHNB/////wdxRQRAIA0gGGooAgAhDQwBCyARKAIkIQ0gBkH/////B3EiFyAHKAIQQf////8HcUYNACAWKAIQQf////8HcSAXRg0AIAwgESgCIGohFCAMIA1qIRMgESsDCCEeIBErAwAhHyALKwMIIR0gCysDACEhIBAhCSALIQYDQCAJIRICQCAMIAYiCigCJGoiBigCECIJQf////8HcSIbIBdGDQAgEkH/////B3EiEiAaRiASIBdGciAaIBtGcg0AIAorAwAgCkEIaisDACAGKwMAIAZBCGorAwAgISAdIB8gHhAoDQILIAYgC0cNAAsgHyAhoSEiIB4gHaEhIwJAAkAgHSAWQQhqKwMAIhyhIiggBysDACIkICGhIieiIikgISAWKwMAIiChIiogB0EIaisDACIlIB2hIiaiIitjRQRAICMgICAfoaIgIiAcIB6homMNASAfICShICaiICcgHiAloaJjRQ0CDAELICMgJCAfoaIgIiAlIB6hoqFEAAAAAAAAAABmRSAfICChIBwgHaGiICAg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AAseACAARQRAENABAAsgACACIAMgBCAFIAEoAhARDQALIAEBf0EBIQEgACgCACIAQQFxBH8gAQUgACgCCEEBRgsLHAAgAEUEQBDQAQALIAAgAiADIAQgASgCEBEKAAscACAARQRAENABAAsgACACIAMgBCABKAIQEQEACxwAIABFBEAQ0AEACyAAIAIgAyAEIAEoAhARLQALHAAgAEUEQBDQAQALIAAgAiADIAQgASgCEBEuAAscACAARQRAENABAAsgACACIAMgBCABKAIQES8ACygBAX8gACgCACIBQYCAgIB4ckGAgICAeEcEQCAAKAIEIAFBARDEAQsLCgBBCCAAENIBAAsaACAARQRAENABAAsgACACIAMgASgCEBECAAsaACAARQRAENABAAsgACACIAMgASgCEBEEAAsYACAARQRAENABAAsgACACIAEoAhARAAALIQAgAEEANgIMIAAgAzYCCCAAIAI2AgQgAEH4scAANgIACxIAQfjQwABBOUGU0cAAEIIBAAslAQFvEAYhAxA2IgIgAyYBIABBADYCCCAAIAI2AgQgACABNgIACxoBAX8gACgCACIBBEAgACgCBCABQQEQxAELCxQAIAAgACABIAAgAV0bIAEgAVwbCxQAIAAgACABIAAgAWMbIAEgAWIbCxQAIAEgASAAIAAgAWMbIAAgAGIbCxQAIAEgASAAIAAgAV0bIAAgAFwbCx0AIAEgAC0AAEECdCIAKALMrEAgACgCtKxAELIBCx0AIAEgAC0AAEECdCIAKAKArkAgACgC6K1AELIBCx8AIABBCGpBxLTAACkCADcCACAAQby0wAApAgA3AgALHwAgAEEIakGcxsAAKQIANwIAIABBlMbAACkCADcCAAsfACAAQQhqQazGwAApAgA3AgAgAEGkxsAAKQIANwIACx8AIAAEQCAAIAEQ0gEAC0G80sAAQSNB0NLAABCCAQALEgAgACABQQF0QQFyIAIQggEACxYBAW8gACABEA4hAhA2IgAgAiYBIAALFAAgACACuxC0ATYCBCAAQQA2AgALFAAgACABtxC0ATYCBCAAQQA2AgALFQAgACABIAIQrAE2AgQgAEEANgIAC9MLAQ5/IAAhDyMAQRBrIggkACABKAIQIQcgBkH/AXFBAnQoAoi1QCEKIwBBEGsiBiQAAkACQAJAAkACQAJA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aW5kZXggwCIgb3V0IG9mIHJhbmdlIGZvciBzbGljZSBvZiBsZW5ndGggwAAQcmFuZ2UgZW5kIGluZGV4IMAiIG91dCBvZiByYW5nZSBmb3Igc2xpY2Ugb2YgbGVuZ3RoIMAAIWNhbm5vdCBhZHZhbmNlIHBhc3QgYHJlbWFpbmluZ2A6IMAEIDw9IMAAE2ludmFsaWQga2V5IHZhbHVlOiDAABlpbnZhbGlkIHdpcmUgdHlwZSB2YWx1ZTogwAASU2VyaWFsaXplIGZhaWxlZDogwAAQSW5mbGF0ZSBmYWlsZWQ6IMAAGFByb3RvYnVmIGRlY29kZSBmYWlsZWQ6IMAAwAI6IMAAc3JjXHZlcnRleC5ycwBDOlxVc2Vyc1xTYXJnZXJhc1wuY2FyZ29ccmVnaXN0cnlcc3JjXGluZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmXGJ5dGVzLTEuMTEuMVxzcmNcYnl0ZXNfbXV0LnJzAC9ydXN0Yy9lNDA4OTQ3YmZkMjAwYWY0MmRiMzIyZGFmMGZhZGZlN2UyNmQzYmQxL2xpYnJhcnkvY29yZS9zcmMvc2xpY2Uvc29ydC9zaGFyZWQvc21hbGxzb3J0LnJzAC9ydXN0Yy9lNDA4OTQ3YmZkMjAwYWY0MmRiMzIyZGFmMGZhZGZlN2UyNmQzYmQxL2xpYnJhcnkvY29yZS9zcmMvc2xpY2Uvc29ydC9zdGFibGUvcXVpY2tzb3J0LnJzAC9ydXN0Yy9lNDA4OTQ3YmZkMjAwYWY0MmRiMzIyZGFmMGZhZGZlN2UyNmQzYmQxL2xpYnJhcnkvYWxsb2Mvc3JjL2ZtdC5ycwBDOlxVc2Vyc1xTYXJnZXJhc1wuY2FyZ29ccmVnaXN0cnlcc3JjXGluZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmXGJ5dGVzLTEuMTEuMVxzcmNcYnl0ZXMucnMAL3J1c3RjL2U0MDg5NDdiZmQyMDBhZjQyZGIzMjJkYWYwZmFkZmU3ZTI2ZDNiZDEvbGlicmFyeS9zdGQvc3JjL3N5cy90aHJlYWRfbG9jYWwvbm9fdGhyZWFkcy5ycwAvcnVzdGMvZTQwODk0N2JmZDIwMGFmNDJkYjMyMmRhZjBmYWRmZTdlMjZkM2JkMS9saWJyYXJ5L2NvcmUvc3JjL3NsaWNlL2l0ZXIucnMAQzpcVXNlcnNcU2FyZ2VyYXNcLmNhcmdvXHJlZ2lzdHJ5XHNyY1xpbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3ZlxtaW5pel9veGlkZS0wLjguOVxzcmNcaW5mbGF0ZVxvdXRwdXRfYnVmZmVyLnJzAEM6XFVzZXJzXFNhcmdlcmFzXC5jYXJnb1xyZWdpc3RyeVxzcmNcaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2ZcZmxhdGUyLTEuMS45XHNyY1xidWZyZWFkZXIucnMAc3JjXGNsaXAucnMAL3J1c3RjL2U0MDg5NDdiZmQyMDBhZjQyZGIzMjJkYWYwZmFkZmU3ZTI2ZDNiZDEvbGlicmFyeS9jb3JlL3NyYy9mbXQvbnVtLnJzAEM6XFVzZXJzXFNhcmdlcmFzXC5jYXJnb1xyZWdpc3RyeVxzcmNcaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2ZcbWluaXpfb3hpZGUtMC44Ljlcc3JjXGluZmxhdGVcc3RyZWFtLnJzAHNyY1xwcm90b2J1Zi5ycwAvcnVzdGMvZTQwODk0N2JmZDIwMGFmNDJkYjMyMmRhZjBmYWRmZTdlMjZkM2JkMS9saWJyYXJ5L2NvcmUvc3JjL2lvL2JvcnJvd2VkX2J1Zi5ycwBDOlxVc2Vyc1xTYXJnZXJhc1wuY2FyZ29ccmVnaXN0cnlcc3JjXGluZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmXHdhc20tYmluZGdlbi0wLjIuMTE3XHNyY1xleHRlcm5yZWYucnMAQzpcVXNlcnNcU2FyZ2VyYXNcLmNhcmdvXHJlZ2lzdHJ5XHNyY1xpbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3ZlxtaW5pel9veGlkZS0wLjguOVxzcmNcaW5mbGF0ZVxjb3JlLnJzAC9ydXN0Yy9lNDA4OTQ3YmZkMjAwYWY0MmRiMzIyZGFmMGZhZGZlN2UyNmQzYmQxL2xpYnJhcnkvY29yZS9zcmMvdW5pY29kZS9wcmludGFibGUucnMAL3J1c3QvZGVwcy9oYXNoYnJvd24tMC4xNi4xL3NyYy9yYXcvbW9kLnJzAC9ydXN0Yy9lNDA4OTQ3YmZkMjAwYWY0MmRiMzIyZGFmMGZhZGZlN2UyNmQzYmQxL2xpYnJhcnkvY29yZS9zcmMvZm10L21vZC5ycwAvcnVzdGMvZTQwODk0N2JmZDIwMGFmNDJkYjMyMmRhZjBmYWRmZTdlMjZkM2JkMS9saWJyYXJ5L3N0ZC9zcmMvaW8vbW9kLnJzAC9ydXN0Yy9lNDA4OTQ3YmZkMjAwYWY0MmRiMzIyZGFmMGZhZGZlN2UyNmQzYmQxL2xpYnJhcnkvYWxsb2Mvc3JjL3Jhd192ZWMvbW9kLnJzAC9ydXN0L2RlcHMvZGxtYWxsb2MtMC4yLjExL3NyYy9kbG1hbGxvYy5ycwBDOlxVc2Vyc1xTYXJnZXJhc1wuY2FyZ29ccmVnaXN0cnlcc3JjXGluZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmXGVhcmN1dC0wLjQuOVxzcmNcbGliLnJzAEM6XFVzZXJzXFNhcmdlcmFzXC5jYXJnb1xyZWdpc3RyeVxzcmNcaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Zcc2VyZGUtd2FzbS1iaW5kZ2VuLTAuNi41XHNyY1xsaWIucnMAQzpcVXNlcnNcU2FyZ2VyYXNcLmNhcmdvXHJlZ2lzdHJ5XHNyY1xpbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3ZlxieXRlcy0xLjExLjFcc3JjXGxpYi5ycwDALCBjYW4ndCBiZSByZXByZXNlbnRlZCBhcyBhIEphdmFTY3JpcHQgbnVtYmVyACZjb3B5X2Zyb21fc2xpY2U6IHNvdXJjZSBzbGljZSBsZW5ndGggKMArKSBkb2VzIG5vdCBtYXRjaCBkZXN0aW5hdGlvbiBzbGljZSBsZW5ndGggKMABKQDACyAob3MgZXJyb3IgwAEpABNpbnZhbGlkIHdpcmUgdHlwZTogwAsgKGV4cGVjdGVkIMABKQDAAS7AAjogAHJlY3RlbGxpcHNlegYQAA8AAAAiAAAAEwAAAERlY29kZWRUcmFuc2Zvcm1hYmNkdHh0eURlY29kZWRTaGFwZVN0eWxlZmlsbHN0cm9rZXN0cm9rZV93aWR0aGxpbmVfY2FwbGluZV9qb2lubWl0ZXJfbGltaXRsaW5lX2Rhc2hTVkdBUGF5bG9hZFByb2ZpbGVpbnB1dEJ5dGVzb3V0cHV0Qnl0ZXNwcm9zdERlY29kZU1zbWV0YWRhdGFBbmRJbWFnZXNNc2ZyYW1lVGFibGVNc2ZpbmFsaXplTXNwYXlsb2FkQnVpbGRNc3J1c3RUb3RhbE1zaW1hZ2VCeXRlc2ltYWdlQ291bnRzcHJpdGVDb3VudGZyYW1lQ291bnRjZWxsQ291bnRjbGlwUGF0aENvdW50c2hhcGVDb3VudHNoYXBlR3JvdXBDb3VudHNoYXBlQnl0ZXN3cml0ZXJJbml0aWFsQ2FwYWNpdHl3cml0ZXJGaW5hbENhcGFjaXR5RGVjb2RlZFJlY3R4eXdpZHRoaGVpZ2h0Y29ybmVyX3JhZGl1c0RlY29kZWRBdWRpb2F1ZGlvX2tleXN0YXJ0X2ZyYW1lZW5kX2ZyYW1lc3RhcnRfdGltZXRvdGFsX3RpbWVEZWNvZGVkQ29sb3JyZ0RlY29kZWRGcmFtZWFscGhhbGF5b3V0dHJhbnNmb3JtY2xpcF9wYXRoc2hhcGVzRGVjb2RlZE1vdmlldmVyc2lvbnBhcmFtc2ltYWdlc3Nwcml0ZXNhdWRpb3NEZWNvZGVkU2hhcGVraW5kcGF0aF9kYXRhc3R5bGVEZWNvZGVkTGF5b3V0RGVjb2RlZFBhcmFtc3ZpZXdfYm94X3dpZHRodmlld19ib3hfaGVpZ2h0ZnBzZnJhbWVzRGVjb2RlZFNwcml0ZWltYWdlX2tleURlY29kZWRFbGxpcHNlcmFkaXVzX3hyYWRpdXNfeQAAAP//////////GA4QAEGwnMAAC/MDegYQAA8AAABKAwAAIwAAAHoGEAAPAAAAaQMAACkAAAB6BhAADwAAAFIDAAApAAAASwkQAF4AAACFAgAAKAAAAEsJEABeAAAAbgQAABwAAABLCRAAXgAAAN0CAAAhAAAASwkQAF4AAADpAAAAJgAAAEsJEABeAAAABgEAAB0AAABLCRAAXgAAAHoEAAAzAAAASwkQAF4AAAB7BAAAMwAAAGludmFsaWQgdGFnIHZhbHVlOiAwaW52YWxpZCB2YXJpbnRMYXlvdXR4eXdpZHRoaGVpZ2h0VHJhbnNmb3JtYWJjZHR4dHlBdWRpb0VudGl0eWF1ZGlvX2tleXN0YXJ0X2ZyYW1lZW5kX2ZyYW1lc3RhcnRfdGltZXRvdGFsX3RpbWVGcmFtZUVu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ciB1bmRlcmZsb3dpbnZhbGlkIHZhcmludHJlY3Vyc2lvbiBsaW1pdCByZWFjaGVkVmFyaW50U2l4dHlGb3VyQml0TGVuZ3RoRGVsaW1pdGVkU3RhcnRHcm91cEVuZEdyb3VwVGhpcnR5VHdvQml0TgUQAGQAAABiAAAAFQAAAAYAAAAMAAAADwAAAAoAAAAIAAAADAAAAJkWEACfFhAAqxYQALoWEADEFhAAzBYQAGFzc2VydGlvbiBmYWlsZWQ6IG4gPD0gc2VsZi5idWYuaW5pdCAtIHNlbGYuYnVmLmZpbGxlZAAAigYQAFMAAAAVAQAACQAAAIUIEABJAAAAsgEAADEAAABSZ2JhQ29sb3JyZ2JhU2hhcGVBcmdzZFNoYXBlU3R5bGVmaWxsc3Ryb2tlc3Ryb2tlX3dpZHRobGluZV9jYXBsaW5lX2pvaW5taXRlcl9saW1pdGxpbmVfZGFzaF9pbGluZV9kYXNoX2lpbGluZV9kYXNoX2lpaUVsbGlwc2VBcmdzeHlyYWRpdXNfeHJhZGl1c195UmVjdEFyZ3N3aWR0aGhlaWdodGNvcm5lcl9yYWRpdXOqCRAAagAAADUAAAAOAAAAAAAAAP//////////OBgQAEHQsMAAC80BQXR0ZW1wdGVkIHRvIGluaXRpYWxpemUgdGhyZWFkLWxvY2FsIHdoaWxlIGl0IGlzIGJlaW5nIGRyb3BwZWQAACoEEABeAAAAawAAAA0AAABjbG9zdXJlIGludm9rZWQgcmVjdXJzaXZlbHkgb3IgYWZ0ZXIgYmVpbmcgZHJvcHBlZGZhaWxlZCB0byBkZWNvZGUgUHJvdG9idWYgbWVzc2FnZTogAAAAJQAAACYAAAAnAAAAKAAAACkAAAAqAAAAKwAAACwAAAAtAAAALgBBqLLAAAvdAgEAAAAvAAAAY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZQDJAxAAYAAAADoFAAAyAAAAMAAAADEAAAAyAAAAMwAAADQAAAA1AAAANgAAADcAAAAzAAAAOAAAAMkDEABgAAAASAUAAEkAAABMYXlvdXRFcnJvcm92ZXJmbG93AFsCEABkAAAAvQIAAB0AAABbAhAAZAAAAKkCAAAVAAAAOQAAADoAAAA7AAAAPAAAAD0AAAAVChAAXgAA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bAAAAEQEAAAjAAAASwcQAGwAAABEBAAADgAAAGFzc2VydGlvbiBmYWlsZWQ6IG91dF9wb3MgKyAxIDwgb3V0X3NsaWNlLmxlbigpAEsHEABsAAAARgQAAA0AAABhc3NlcnRpb24gZmFpbGVkOiAoc291cmNlX3BvcyArIDEpICYgb3V0X2J1Zl9zaXplX21hc2sgPCBvdXRfc2xpY2UubGVuKClLBxAAbAAAAEcEAAANAAAASwcQAGwAAABIBAAAIgAAAEsHEABsAAAASAQAAA0AAABhc3NlcnRpb24gZmFpbGVkOiBvdXRfcG9zICsgMiA8IG91dF9zbGljZS5sZW4oKQBLBxAAbAAAAEwEAAANAAAAYXNzZXJ0aW9uIGZhaWxlZDogKHNvdXJjZV9wb3MgKyAyKSAmIG91dF9idWZfc2l6ZV9tYXNrIDwgb3V0X3NsaWNlLmxlbigpSwcQAGwAAABNBAAADQAAAEsHEABsAAAATgQAACIAAABLBxAAbAAAAE4EAAANAAAASwcQAGwAAABPBAAAJgAAAEsHEABsAAAATwQAAA0AAABLBxAAbAAAACwEAAAXAAAAZGVzdCBpcyBvdXQgb2YgYm91bmRzAAAACwYQAG4AAABCAQAAHAAAAAsGEABuAAAAdgEAADAAAADeBhAAbAAAAHwAAAARAAAA3gYQAGwAAACJAAAAEQAAAG1dy9YsUOtjeEGmV3Ebi7mauO6RURSWWM+WAOjSnxKKZW50aXR5IG5vdCBmb3VuZHBlcm1pc3Npb24gZGVuaWVkY29ubmVjdGlvbiByZWZ1c2VkY29ubmVjdGlvbiByZXNldGhvc3QgdW5yZWFjaGFibGVuZXR3b3JrIHVucmVhY2hhYmxlY29ubmVjdGlvbiBhYm9ydGVkbm90IGNvbm5lY3RlZGFkZHJlc3MgaW4gdXNlYWRkcmVzcyBub3QgYXZhaWxhYmxlbmV0d29yayBkb3duYnJva2VuIHBpcGVlbnRpdHkgYWxyZWFkeSBleGlzdHNvcGVyYXRpb24gd291bGQgYmxvY2tub3QgYSBkaXJlY3RvcnlpcyBhIGRpcmVjdG9yeWRpcmVjdG9yeSBub3QgZW1wdHlyZWFkLW9ubHkgZmlsZXN5c3RlbSBvciBzdG9yYWdlIG1lZGl1bWZpbGVzeXN0ZW0gbG9vcCBv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",typeof document=="undefined"?require("url").pathToFileURL(__filename).href:cI&&cI.tagName.toUpperCase()==="SCRIPT"&&cI.src||new URL("gift-stage.cjs",document.baseURI).href));const A=DE();(typeof C=="string"||typeof Request=="function"&&C instanceof Request||typeof URL=="function"&&C instanceof URL)&&(C=fetch(C));const{instance:g,module:I}=await Yt(await C,A);return FE(g)}const Kt=Object.freeze(Object.defineProperty({__proto__:null,build_batch_vertices:Dt,decode_svga:wt,decode_svga_payload:yt,decode_svga_payload_profiled:Ft,default:dE,inflate:dt,init:lE,initSync:pt,take_svga_payload_profile:Gt,triangulate_clip_polygons:ut},Symbol.toStringTag,{value:"Module"})),XB="data:application/wasm;base64,AGFzbQEAAAAB6gI0YAJ/fwF/YAR/f39/AGADf39/AGACf38AYAN/f38Bf2AFf39/f38AYAF/AGABfwF/YAAAYAZ/f39/f38AYAR/f39/AX9gAAR/f39/YAABb2AFf39/f38Bf2ACf38Ef39/f2ACf38Bb2AGf39/f39/AX9gAn9/AX5gAAF/YAV/f31/fwBgBX9/fn9/AGAFf398f38AYAJ9fQF9YAJ8fAF8YAADf39/YAACf39gAAF8YANvf28AYANvb28Bb2ADb29vAGACf28AYAFvAX9gA39/bwBgAXwBb2ABfgFvYAh/f39/f39/fwBgBn9/f3x8fABgCHx8fHx8fHx8AX9gA39/fgBgBn9/f31/fwBgBn9/f35/fwBgBn9/f3x/fwBgAn9/A39/f2AEf39/fwJ/f2AIf39/f29/f28Bf2AEf35/fwBgBH99f38AYAR/fH9/AGADf399AGAHf39/f39/fwBgAXwBf2ADf398AAKmBxAXLi9naWZ0X3N0YWdlX3dhc21fYmcuanMaX193Ymdfbm93XzAwOGQ5Yjg0NjAwYjVjMTkAGhcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcxpfX3diZ19zZXRfNmM2MGIyZThhZDBlOTM4MwAbFy4vZ2lmdF9zdGFnZV93YXNtX2JnLmpzGl9fd2JnX3NldF8wODQ2M2IxZGYzOGE3ZTI5ABwXLi9naWZ0X3N0YWdlX3dhc21fYmcuanMaX193Ymdfc2V0XzZiZTQyNzY4YzY5MGUzODAAHRcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcx1fX3diZ19TdHJpbmdfODU2NGU1NTk3OTllY2NkYQAeFy4vZ2lmdF9zdGFnZV93YXNtX2JnLmpzGl9fd2JnX25ld185OWNhYmFlNTAxYzBhOGEwAAwXLi9naWZ0X3N0YWdlX3dhc21fYmcuanMaX193YmdfbmV3X2YzYzlkZjRmMzhmM2Y3OTgADBcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcxpfX3diZ19uZXdfNGY5ZmFmYmIzOTA5YWY3MgAMFy4vZ2lmdF9zdGFnZV93YXNtX2JnLmpzJ19fd2JnX19fd2JpbmRnZW5fdGhyb3dfODFmYzc3Njc5YWY4M2JjNgADFy4vZ2lmdF9zdGFnZV93YXNtX2JnLmpzHF9fd2JnX0Vycm9yXzJlNTliMWIzN2E5YTM0YzMADxcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcytfX3diZ19fX3diaW5kZ2VuX2lzX3N0cmluZ19iMjliNWM1YTgwNjViYTFhAB8XLi9naWZ0X3N0YWdlX3dhc21fYmcuanM1X193YmdfX193YmluZGdlbl9jb3B5X3RvX3R5cGVkX2FycmF5X2E0ZGIzMzc3NTFlMGIzMjgAIBcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcx9fX3diaW5kZ2VuX2luaXRfZXh0ZXJucmVmX3RhYmxlAAgXLi9naWZ0X3N0YWdlX3dhc21fYmcuanMgX193YmluZGdlbl9jYXN0XzAwMDAwMDAwMDAwMDAwMDEAIRcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcyBfX3diaW5kZ2VuX2Nhc3RfMDAwMDAwMDAwMDAwMDAwMgAPFy4vZ2lmdF9zdGFnZV93YXNtX2JnLmpzIF9fd2JpbmRnZW5fY2FzdF8wMDAwMDAwMDAwMDAwMDAzACIDzgHMAQEjJAcBAgIJAAMEEAYCAgMDAQUECgAKACUREQMBBQICAAICAwQAEgMAAQIDBgABAAEABgEEAQEDBQAGCQUCCQkCBQIDAAIIASYCAwEGBQYCCQYFAQEFBQUFAQEACScoKQUBAQIEBAUBBAAAAAcCAwEBBgIAAA0AAAoABg4ODiorLBAHDQUUExUGBgEKBAEIAgYWFxcWAAADAwMDAgAwAwIxAgQCMjMFABIKAwABAQMAAAMAAAICBwcIAgQEBgwAAAgDAwAEAAMAAwcIAgQJAnABZmZvAIAIBQMBABEGCQF/AUGAgMAACwe6Ag8GbWVtb3J5AgALZGVjb2RlX3N2Z2EAjgETZGVjb2RlX3N2Z2FfcGF5bG9hZACMARxkZWNvZGVfc3ZnYV9wYXlsb2FkX3Byb2ZpbGVkAIsBGXRha2Vfc3ZnYV9wYXlsb2FkX3Byb2ZpbGUAzQEHaW5mbGF0ZQCNARRidWlsZF9iYXRjaF92ZXJ0aWNlcwCQARl0cmlhbmd1bGF0ZV9jbGlwX3BvbHlnb25zAI8BBGluaXQA2gERX193YmluZGdlbl9tYWxsb2MAgwESX193YmluZGdlbl9yZWFsbG9jAIgBFV9fd2JpbmRnZW5fZXh0ZXJucmVmcwEBGV9f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oAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIAo2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABayAKSQRAIARBoAJqIAEgCkEBQQEQTCAEKAKoAiEBCyAKBEAgBCgCpAIgAWogCSAK/AoAAAsgBCAEKAKoAiAKaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAMAQsgBSgCCCIJQQJHBEAgBCgCoAIgAUYEQCAEQaACahBhCyAEKAKkAiABakEBOgAAIAQgAUEBaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgIMQwAAAAAgCUEBcRshQSAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIEE4AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgIUQwAAAAAgBSgCEBshQSAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIEE4AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgIcQwAAAAAgBSgCGBshQSAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIEE4AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgIkQwAAAAAgBSgCIBshQSAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIEE4AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgIsQwAAAAAgBSgCKBshQSAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIEE4AAAMAQsgBSgCMCIJQQJGDQIgBCgCoAIgAUYEQCAEQaACahBhCyAEKAKkAiABakECOgAAIAQgAUEBaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgI0QwAAAAAgCUEBcRshQSAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIEE4AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgI8QwAAAAAgBSgCOBshQSAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIEE4AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgJEQwAAAAAgBSgCQBshQSAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIEE4AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgJMQwAAAAAgBSgCSBsMAQsgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJq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ZkUgLCAroiApICaiZkVyDQAgHSAHQQhqKwMAoSAJKwMAIByhoiAcIAcrAwChIAlBCGorAwAgHaGioUQAAAAAAAAAAGYNAgsgCiAPRw0ACwwGCyABIAhHDQALCwJAAkAgC0H/AXFBAWsOAgQBAAsgDEEcaiENIAEgDGohBiABIQoDQCAKIQgCQANAIAwgBigCJCIBaiEHIAYoAhBBAE4EQCAGKAIgIQogBisDACAHKwMAYgR/QQAFIAYrAwggBysDCGELDQIgBkEIaisDACIcIAogDGoiCUEIaisDAKEgBysDACAGKwMAIh2hoiAdIAkrAwChIAdBCGorAwAgHKGioUQAAAAAAAAAAGENAgsgByEGIAEgCEcNAAtBASELIAghAQwICyAGKAIcIQggBigCGCEJIAogDGoiBiABNgIkAkAgCUUNACAJIApHBEAgCSANaiAINgIADAELIAYgCDYCHAsgByAKNgIgIAgEQCAHIAggDGogASAIRhsgCTYCGAtBASELIAEgCkcNAAsMBgsgDEEkaiEYIAEgDGohCyABIQgDQCAMIAsoAiQiD2ohByAPIBhqKAIAIg0gCygCICIZRwRAIAwgGWohFiALKAIQIhBB/////wdxIRoDQAJAIAwgDSIOaiIRKAIQIgYgEHNB/////wdxRQRAIA0gGGooAgAhDQwBCyARKAIkIQ0gBkH/////B3EiFyAHKAIQQf////8HcUYNACAWKAIQQf////8HcSAXRg0AIAwgESgCIGohFCAMIA1qIRMgESsDCCEeIBErAwAhHyALKwMIIR0gCysDACEhIBAhCSALIQYDQCAJIRICQCAMIAYiCigCJGoiBigCECIJQf////8HcSIbIBdGDQAgEkH/////B3EiEiAaRiASIBdGciAaIBtGcg0AIAorAwAgCkEIaisDACAGKwMAIAZBCGorAwAgISAdIB8gHhAoDQILIAYgC0cNAAsgHyAhoSEiIB4gHaEhIwJAAkAgHSAWQQhqKwMAIhyhIiggBysDACIkICGhIieiIikgISAWKwMAIiChIiogB0EIaisDACIlIB2hIiaiIitjRQRAICMgICAfoaIgIiAcIB6homMNASAfICShICaiICcgHiAloaJjRQ0CDAELICMgJCAfoaIgIiAlIB6hoqFEAAAAAAAAAABmRSAfICChIBwgHaGiICAg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AAseACAARQRAENABAAsgACACIAMgBCAFIAEoAhARDQALIAEBf0EBIQEgACgCACIAQQFxBH8gAQUgACgCCEEBRgsLHAAgAEUEQBDQAQALIAAgAiADIAQgASgCEBEKAAscACAARQRAENABAAsgACACIAMgBCABKAIQEQEACxwAIABFBEAQ0AEACyAAIAIgAyAEIAEoAhARLQALHAAgAEUEQBDQAQALIAAgAiADIAQgASgCEBEuAAscACAARQRAENABAAsgACACIAMgBCABKAIQES8ACygBAX8gACgCACIBQYCAgIB4ckGAgICAeEcEQCAAKAIEIAFBARDEAQsLCgBBCCAAENIBAAsaACAARQRAENABAAsgACACIAMgASgCEBECAAsaACAARQRAENABAAsgACACIAMgASgCEBEEAAsYACAARQRAENABAAsgACACIAEoAhARAAALIQAgAEEANgIMIAAgAzYCCCAAIAI2AgQgAEH4scAANgIACxIAQfjQwABBOUGU0cAAEIIBAAslAQFvEAYhAxA2IgIgAyYBIABBADYCCCAAIAI2AgQgACABNgIACxoBAX8gACgCACIBBEAgACgCBCABQQEQxAELCxQAIAAgACABIAAgAV0bIAEgAVwbCxQAIAAgACABIAAgAWMbIAEgAWIbCxQAIAEgASAAIAAgAWMbIAAgAGIbCxQAIAEgASAAIAAgAV0bIAAgAFwbCx0AIAEgAC0AAEECdCIAKALMrEAgACgCtKxAELIBCx0AIAEgAC0AAEECdCIAKAKArkAgACgC6K1AELIBCx8AIABBCGpBxLTAACkCADcCACAAQby0wAApAgA3AgALHwAgAEEIakGcxsAAKQIANwIAIABBlMbAACkCADcCAAsfACAAQQhqQazGwAApAgA3AgAgAEGkxsAAKQIANwIACx8AIAAEQCAAIAEQ0gEAC0G80sAAQSNB0NLAABCCAQALEgAgACABQQF0QQFyIAIQggEACxYBAW8gACABEA4hAhA2IgAgAiYBIAALFAAgACACuxC0ATYCBCAAQQA2AgALFAAgACABtxC0ATYCBCAAQQA2AgALFQAgACABIAIQrAE2AgQgAEEANgIAC9MLAQ5/IAAhDyMAQRBrIggkACABKAIQIQcgBkH/AXFBAnQoAoi1QCEKIwBBEGsiBiQAAkACQAJAAkACQAJA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aW5kZXggwCIgb3V0IG9mIHJhbmdlIGZvciBzbGljZSBvZiBsZW5ndGggwAAQcmFuZ2UgZW5kIGluZGV4IMAiIG91dCBvZiByYW5nZSBmb3Igc2xpY2Ugb2YgbGVuZ3RoIMAAIWNhbm5vdCBhZHZhbmNlIHBhc3QgYHJlbWFpbmluZ2A6IMAEIDw9IMAAE2ludmFsaWQga2V5IHZhbHVlOiDAABlpbnZhbGlkIHdpcmUgdHlwZSB2YWx1ZTogwAASU2VyaWFsaXplIGZhaWxlZDogwAAQSW5mbGF0ZSBmYWlsZWQ6IMAAGFByb3RvYnVmIGRlY29kZSBmYWlsZWQ6IMAAwAI6IMAAc3JjXHZlcnRleC5ycwBDOlxVc2Vyc1xTYXJnZXJhc1wuY2FyZ29ccmVnaXN0cnlcc3JjXGluZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmXGJ5dGVzLTEuMTEuMVxzcmNcYnl0ZXNfbXV0LnJzAC9ydXN0Yy9lNDA4OTQ3YmZkMjAwYWY0MmRiMzIyZGFmMGZhZGZlN2UyNmQzYmQxL2xpYnJhcnkvY29yZS9zcmMvc2xpY2Uvc29ydC9zaGFyZWQvc21hbGxzb3J0LnJzAC9ydXN0Yy9lNDA4OTQ3YmZkMjAwYWY0MmRiMzIyZGFmMGZhZGZlN2UyNmQzYmQxL2xpYnJhcnkvY29yZS9zcmMvc2xpY2Uvc29ydC9zdGFibGUvcXVpY2tzb3J0LnJzAC9ydXN0Yy9lNDA4OTQ3YmZkMjAwYWY0MmRiMzIyZGFmMGZhZGZlN2UyNmQzYmQxL2xpYnJhcnkvYWxsb2Mvc3JjL2ZtdC5ycwBDOlxVc2Vyc1xTYXJnZXJhc1wuY2FyZ29ccmVnaXN0cnlcc3JjXGluZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmXGJ5dGVzLTEuMTEuMVxzcmNcYnl0ZXMucnMAL3J1c3RjL2U0MDg5NDdiZmQyMDBhZjQyZGIzMjJkYWYwZmFkZmU3ZTI2ZDNiZDEvbGlicmFyeS9zdGQvc3JjL3N5cy90aHJlYWRfbG9jYWwvbm9fdGhyZWFkcy5ycwAvcnVzdGMvZTQwODk0N2JmZDIwMGFmNDJkYjMyMmRhZjBmYWRmZTdlMjZkM2JkMS9saWJyYXJ5L2NvcmUvc3JjL3NsaWNlL2l0ZXIucnMAQzpcVXNlcnNcU2FyZ2VyYXNcLmNhcmdvXHJlZ2lzdHJ5XHNyY1xpbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3ZlxtaW5pel9veGlkZS0wLjguOVxzcmNcaW5mbGF0ZVxvdXRwdXRfYnVmZmVyLnJzAEM6XFVzZXJzXFNhcmdlcmFzXC5jYXJnb1xyZWdpc3RyeVxzcmNcaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2ZcZmxhdGUyLTEuMS45XHNyY1xidWZyZWFkZXIucnMAc3JjXGNsaXAucnMAL3J1c3RjL2U0MDg5NDdiZmQyMDBhZjQyZGIzMjJkYWYwZmFkZmU3ZTI2ZDNiZDEvbGlicmFyeS9jb3JlL3NyYy9mbXQvbnVtLnJzAEM6XFVzZXJzXFNhcmdlcmFzXC5jYXJnb1xyZWdpc3RyeVxzcmNcaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2ZcbWluaXpfb3hpZGUtMC44Ljlcc3JjXGluZmxhdGVcc3RyZWFtLnJzAHNyY1xwcm90b2J1Zi5ycwAvcnVzdGMvZTQwODk0N2JmZDIwMGFmNDJkYjMyMmRhZjBmYWRmZTdlMjZkM2JkMS9saWJyYXJ5L2NvcmUvc3JjL2lvL2JvcnJvd2VkX2J1Zi5ycwBDOlxVc2Vyc1xTYXJnZXJhc1wuY2FyZ29ccmVnaXN0cnlcc3JjXGluZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmXHdhc20tYmluZGdlbi0wLjIuMTE3XHNyY1xleHRlcm5yZWYucnMAQzpcVXNlcnNcU2FyZ2VyYXNcLmNhcmdvXHJlZ2lzdHJ5XHNyY1xpbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3ZlxtaW5pel9veGlkZS0wLjguOVxzcmNcaW5mbGF0ZVxjb3JlLnJzAC9ydXN0Yy9lNDA4OTQ3YmZkMjAwYWY0MmRiMzIyZGFmMGZhZGZlN2UyNmQzYmQxL2xpYnJhcnkvY29yZS9zcmMvdW5pY29kZS9wcmludGFibGUucnMAL3J1c3QvZGVwcy9oYXNoYnJvd24tMC4xNi4xL3NyYy9yYXcvbW9kLnJzAC9ydXN0Yy9lNDA4OTQ3YmZkMjAwYWY0MmRiMzIyZGFmMGZhZGZlN2UyNmQzYmQxL2xpYnJhcnkvY29yZS9zcmMvZm10L21vZC5ycwAvcnVzdGMvZTQwODk0N2JmZDIwMGFmNDJkYjMyMmRhZjBmYWRmZTdlMjZkM2JkMS9saWJyYXJ5L3N0ZC9zcmMvaW8vbW9kLnJzAC9ydXN0Yy9lNDA4OTQ3YmZkMjAwYWY0MmRiMzIyZGFmMGZhZGZlN2UyNmQzYmQxL2xpYnJhcnkvYWxsb2Mvc3JjL3Jhd192ZWMvbW9kLnJzAC9ydXN0L2RlcHMvZGxtYWxsb2MtMC4yLjExL3NyYy9kbG1hbGxvYy5ycwBDOlxVc2Vyc1xTYXJnZXJhc1wuY2FyZ29ccmVnaXN0cnlcc3JjXGluZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmXGVhcmN1dC0wLjQuOVxzcmNcbGliLnJzAEM6XFVzZXJzXFNhcmdlcmFzXC5jYXJnb1xyZWdpc3RyeVxzcmNcaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Zcc2VyZGUtd2FzbS1iaW5kZ2VuLTAuNi41XHNyY1xsaWIucnMAQzpcVXNlcnNcU2FyZ2VyYXNcLmNhcmdvXHJlZ2lzdHJ5XHNyY1xpbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3ZlxieXRlcy0xLjExLjFcc3JjXGxpYi5ycwDALCBjYW4ndCBiZSByZXByZXNlbnRlZCBhcyBhIEphdmFTY3JpcHQgbnVtYmVyACZjb3B5X2Zyb21fc2xpY2U6IHNvdXJjZSBzbGljZSBsZW5ndGggKMArKSBkb2VzIG5vdCBtYXRjaCBkZXN0aW5hdGlvbiBzbGljZSBsZW5ndGggKMABKQDACyAob3MgZXJyb3IgwAEpABNpbnZhbGlkIHdpcmUgdHlwZTogwAsgKGV4cGVjdGVkIMABKQDAAS7AAjogAHJlY3RlbGxpcHNlegYQAA8AAAAiAAAAEwAAAERlY29kZWRUcmFuc2Zvcm1hYmNkdHh0eURlY29kZWRTaGFwZVN0eWxlZmlsbHN0cm9rZXN0cm9rZV93aWR0aGxpbmVfY2FwbGluZV9qb2lubWl0ZXJfbGltaXRsaW5lX2Rhc2hTVkdBUGF5bG9hZFByb2ZpbGVpbnB1dEJ5dGVzb3V0cHV0Qnl0ZXNwcm9zdERlY29kZU1zbWV0YWRhdGFBbmRJbWFnZXNNc2ZyYW1lVGFibGVNc2ZpbmFsaXplTXNwYXlsb2FkQnVpbGRNc3J1c3RUb3RhbE1zaW1hZ2VCeXRlc2ltYWdlQ291bnRzcHJpdGVDb3VudGZyYW1lQ291bnRjZWxsQ291bnRjbGlwUGF0aENvdW50c2hhcGVDb3VudHNoYXBlR3JvdXBDb3VudHNoYXBlQnl0ZXN3cml0ZXJJbml0aWFsQ2FwYWNpdHl3cml0ZXJGaW5hbENhcGFjaXR5RGVjb2RlZFJlY3R4eXdpZHRoaGVpZ2h0Y29ybmVyX3JhZGl1c0RlY29kZWRBdWRpb2F1ZGlvX2tleXN0YXJ0X2ZyYW1lZW5kX2ZyYW1lc3RhcnRfdGltZXRvdGFsX3RpbWVEZWNvZGVkQ29sb3JyZ0RlY29kZWRGcmFtZWFscGhhbGF5b3V0dHJhbnNmb3JtY2xpcF9wYXRoc2hhcGVzRGVjb2RlZE1vdmlldmVyc2lvbnBhcmFtc2ltYWdlc3Nwcml0ZXNhdWRpb3NEZWNvZGVkU2hhcGVraW5kcGF0aF9kYXRhc3R5bGVEZWNvZGVkTGF5b3V0RGVjb2RlZFBhcmFtc3ZpZXdfYm94X3dpZHRodmlld19ib3hfaGVpZ2h0ZnBzZnJhbWVzRGVjb2RlZFNwcml0ZWltYWdlX2tleURlY29kZWRFbGxpcHNlcmFkaXVzX3hyYWRpdXNfeQAAAP//////////GA4QAEGwnMAAC/MDegYQAA8AAABKAwAAIwAAAHoGEAAPAAAAaQMAACkAAAB6BhAADwAAAFIDAAApAAAASwkQAF4AAACFAgAAKAAAAEsJEABeAAAAbgQAABwAAABLCRAAXgAAAN0CAAAhAAAASwkQAF4AAADpAAAAJgAAAEsJEABeAAAABgEAAB0AAABLCRAAXgAAAHoEAAAzAAAASwkQAF4AAAB7BAAAMwAAAGludmFsaWQgdGFnIHZhbHVlOiAwaW52YWxpZCB2YXJpbnRMYXlvdXR4eXdpZHRoaGVpZ2h0VHJhbnNmb3JtYWJjZHR4dHlBdWRpb0VudGl0eWF1ZGlvX2tleXN0YXJ0X2ZyYW1lZW5kX2ZyYW1lc3RhcnRfdGltZXRvdGFsX3RpbWVGcmFtZUVudGl0eWFscGhhbGF5b3V0dHJhbnNmb3JtY2xpcF9wYXRoc2hhcGVzTW92aWVFbnRpdHl2ZXJzaW9ucGFyYW1zaW1hZ2Vzc3ByaXRlc2F1ZGlvc01vdmllUGFyYW1zdmlld19ib3hfd2lkdGh2aWV3X2JveF9oZWlnaHRmcHNmcmFtZXNTaGFwZUVudGl0eXIjdHlwZXNoYXBlcmVjdGVsbGlwc2VzdHlsZXNTcHJpdGVFbnRpdHlpbWFnZV9rZXn//////////xgQEABBsKDAAAuDCk1hcCBrZXkgaXMgbm90IGEgc3RyaW5nIGFuZCBjYW5ub3QgYmUgYW4gb2JqZWN0IGtleWludmFsaWQgdGFnIHZhbHVlOiAwZGVsaW1pdGVkIGxlbmd0aCBleGNlZWRlZGJ1ZmZlciB1bmRlcmZsb3dyZWN1cnNpb24gbGltaXQgcmVhY2hlZHVuZXhwZWN0ZWQgZW5kIGdyb3VwIHRhZ2ludmFsaWQgdmFyaW50AAAAiQQQAE4AAABxBwAAEQAAAERhdGEgdG9vIHNob3J0IGZvciB6bGlicmVjdXJzaW9uIGxpbWl0IHJlYWNoZWQAAE0CEAANAAAAHAAAABgAAABNAhAADQAAAB0AAAAYAAAATQIQAA0AAAAeAAAAEQAAAE0CEAANAAAAHwAAABEAAABNAhAADQAAACAAAAARAAAATQIQAA0AAAAhAAAAEQAAAE0CEAANAAAAIgAAABIAAABNAhAADQAAACMAAAASAAAATQIQAA0AAAAkAAAAFQAAAE0CEAANAAAAJQAAABgAAABNAhAADQAAACYAAAAYAAAATQIQAA0AAAAnAAAAGAAAAE0CEAANAAAAKAAAABgAAABNAhAADQAAADYAAAAJAAAATQIQAA0AAAA3AAAACQAAAE0CEAANAAAAOAAAAAkAAABNAhAADQAAADkAAAAJAAAATQIQAA0AAAA6AAAACQAAAE0CEAANAAAAOwAAAAkAAABNAhAADQAAADwAAAAJAAAATQIQAA0AAAA9AAAACQAAAE0CEAANAAAAPgAAAAkAAABNAhAADQAAAEIAAAAJAAAATQIQAA0AAABDAAAACQAAAE0CEAANAAAARAAAAAkAAABNAhAADQAAAEUAAAAJAAAATQIQAA0AAABGAAAACQAAAE0CEAANAAAARwAAAAkAAABNAhAADQAAAEgAAAAJAAAATQIQAA0AAABJAAAACQAAAE0CEAANAAAASgAAAAkAAABNAhAADQAAAE4AAAAJAAAATQIQAA0AAABPAAAACQAAAE0CEAANAAAAUAAAAAkAAABNAhAADQAAAFEAAAAJAAAATQIQAA0AAABSAAAACQAAAE0CEAANAAAAUwAAAAkAAABNAhAADQAAAFQAAAAJAAAATQIQAA0AAABVAAAACQAAAE0CEAANAAAAVgAAAAkAAABNAhAADQAAAFoAAAAJAAAATQIQAA0AAABbAAAACQAAAE0CEAANAAAAXAAAAAkAAABNAhAADQAAAF0AAAAJAAAATQIQAA0AAABeAAAACQAAAE0CEAANAAAAXwAAAAkAAABNAhAADQAAAGAAAAAJAAAATQIQAA0AAABhAAAACQAAAE0CEAANAAAAYgAAAAkAAABNAhAADQAAAGYAAAAJAAAATQIQAA0AAABnAAAACQAAAE0CEAANAAAAaAAAAAkAAABNAhAADQAAAGkAAAAJAAAATQIQAA0AAABqAAAACQAAAE0CEAANAAAAawAAAAkAAAB6BhAADwAAAFoCAAASAAAAegYQAA8AAABgAgAADwAAAHoGEAAPAAAAZwIAABwAAACzBRAACwAAABsAAAAeAAAAswUQAAsAAAAdAAAAHwAAAG1pZCA+IGxlbgAAACADEABfAAAASgAAAB8AAAAgAxAAXwAAAEQAAAAXAAAAAQAAAAAAAADJAxAAYAAAAMMCAAAJAAAAAAAAAP//////////KBUQAEHAqsAAC4MGQXR0ZW1wdGVkIHRvIGluaXRpYWxpemUgdGhyZWFkLWxvY2FsIHdoaWxlIGl0IGlzIGJlaW5nIGRyb3BwZWQAACoEEABeAAAAawAAAA0AAABidWZmZXIgdW5kZXJmbG93aW52YWxpZCBzdHJpbmcgdmFsdWU6IGRhdGEgaXMgbm90IFVURi04IGVuY29kZWRpbnZhbGlkIHZhcmludGNvcnJ1cHQgZGVmbGF0ZSBzdHJlYW1WYXJpbnRTaXh0eUZvdXJCaXRMZW5ndGhEZWxpbWl0ZWRTdGFydEdyb3VwRW5kR3JvdXBUaGlydHlUd29CaXQAAAYAAAAMAAAADwAAAAoAAAAIAAAADAAAAPMVEAD5FRAABRYQABQWEAAeFhAAJhYQAGJ1ZmZlciB1bmRlcmZsb3dpbnZhbGlkIHZhcmludHJlY3Vyc2lvbiBsaW1pdCByZWFjaGVkVmFyaW50U2l4dHlGb3VyQml0TGVuZ3RoRGVsaW1pdGVkU3RhcnRHcm91cEVuZEdyb3VwVGhpcnR5VHdvQml0TgUQAGQAAABiAAAAFQAAAAYAAAAMAAAADwAAAAoAAAAIAAAADAAAAJkWEACfFhAAqxYQALoWEADEFhAAzBYQAGFzc2VydGlvbiBmYWlsZWQ6IG4gPD0gc2VsZi5idWYuaW5pdCAtIHNlbGYuYnVmLmZpbGxlZAAAigYQAFMAAAAVAQAACQAAAIUIEABJAAAAsgEAADEAAABSZ2JhQ29sb3JyZ2JhU2hhcGVBcmdzZFNoYXBlU3R5bGVmaWxsc3Ryb2tlc3Ryb2tlX3dpZHRobGluZV9jYXBsaW5lX2pvaW5taXRlcl9saW1pdGxpbmVfZGFzaF9pbGluZV9kYXNoX2lpbGluZV9kYXNoX2lpaUVsbGlwc2VBcmdzeHlyYWRpdXNfeHJhZGl1c195UmVjdEFyZ3N3aWR0aGhlaWdodGNvcm5lcl9yYWRpdXOqCRAAagAAADUAAAAOAAAAAAAAAP//////////OBgQAEHQsMAAC80BQXR0ZW1wdGVkIHRvIGluaXRpYWxpemUgdGhyZWFkLWxvY2FsIHdoaWxlIGl0IGlzIGJlaW5nIGRyb3BwZWQAACoEEABeAAAAawAAAA0AAABjbG9zdXJlIGludm9rZWQgcmVjdXJzaXZlbHkgb3IgYWZ0ZXIgYmVpbmcgZHJvcHBlZGZhaWxlZCB0byBkZWNvZGUgUHJvdG9idWYgbWVzc2FnZTogAAAAJQAAACYAAAAnAAAAKAAAACkAAAAqAAAAKwAAACwAAAAtAAAALgBBqLLAAAvdAgEAAAAvAAAAY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZQDJAxAAYAAAADoFAAAyAAAAMAAAADEAAAAyAAAAMwAAADQAAAA1AAAANgAAADcAAAAzAAAAOAAAAMkDEABgAAAASAUAAEkAAABMYXlvdXRFcnJvcm92ZXJmbG93AFsCEABkAAAAvQIAAB0AAABbAhAAZAAAAKkCAAAVAAAAOQAAADoAAAA7AAAAPAAAAD0AAAAVChAAXgAA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bAAAAEQEAAAjAAAASwcQAGwAAABEBAAADgAAAGFzc2VydGlvbiBmYWlsZWQ6IG91dF9wb3MgKyAxIDwgb3V0X3NsaWNlLmxlbigpAEsHEABsAAAARgQAAA0AAABhc3NlcnRpb24gZmFpbGVkOiAoc291cmNlX3BvcyArIDEpICYgb3V0X2J1Zl9zaXplX21hc2sgPCBvdXRfc2xpY2UubGVuKClLBxAAbAAAAEcEAAANAAAASwcQAGwAAABIBAAAIgAAAEsHEABsAAAASAQAAA0AAABhc3NlcnRpb24gZmFpbGVkOiBvdXRfcG9zICsgMiA8IG91dF9zbGljZS5sZW4oKQBLBxAAbAAAAEwEAAANAAAAYXNzZXJ0aW9uIGZhaWxlZDogKHNvdXJjZV9wb3MgKyAyKSAmIG91dF9idWZfc2l6ZV9tYXNrIDwgb3V0X3NsaWNlLmxlbigpSwcQAGwAAABNBAAADQAAAEsHEABsAAAATgQAACIAAABLBxAAbAAAAE4EAAANAAAASwcQAGwAAABPBAAAJgAAAEsHEABsAAAATwQAAA0AAABLBxAAbAAAACwEAAAXAAAAZGVzdCBpcyBvdXQgb2YgYm91bmRzAAAACwYQAG4AAABCAQAAHAAAAAsGEABuAAAAdgEAADAAAADeBhAAbAAAAHwAAAARAAAA3gYQAGwAAACJAAAAEQAAAG1dy9YsUOtjeEGmV3Ebi7mauO6RURSWWM+WAOjSnxKKZW50aXR5IG5vdCBmb3VuZHBlcm1pc3Npb24gZGVuaWVkY29ubmVjdGlvbiByZWZ1c2VkY29ubmVjdGlvbiByZXNldGhvc3QgdW5yZWFjaGFibGVuZXR3b3JrIHVucmVhY2hhYmxlY29ubmVjdGlvbiBhYm9ydGVkbm90IGNvbm5lY3RlZGFkZHJlc3MgaW4gdXNlYWRkcmVzcyBub3QgYXZhaWxhYmxlbmV0d29yayBkb3duYnJva2VuIHBpcGVlbnRpdHkgYWxyZWFkeSBleGlzdHNvcGVyYXRpb24gd291bGQgYmxvY2tub3QgYSBkaXJlY3RvcnlpcyBhIGRpcmVjdG9yeWRpcmVjdG9yeSBub3QgZW1wdHlyZWFkLW9ubHkgZmlsZXN5c3RlbSBvciBzdG9yYWdlIG1lZGl1bWZpbGVzeXN0ZW0gbG9vcCBv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";let JA=null,aB=null;function aQ(){return typeof performance!="undefined"?performance.now():Date.now()}function mt(){var C;const A=globalThis.process;return(C=A==null?void 0:A.versions)!=null&&C.node&&XB.startsWith("/")?new URL(Object.assign({})[`../..${XB}`],typeof document=="undefined"?require("url").pathToFileURL(__filename).href:cI&&cI.tagName.toUpperCase()==="SCRIPT"&&cI.src||new URL("gift-stage.cjs",document.baseURI).href):XB}function DI(){return JA!==null}async function GE(){return JA?!0:aB||(aB=(async()=>{try{return await dE({module_or_path:mt()}),lE(),JA=Kt,!0}catch(C){return console.warn("[GiftStage] WASM unavailable, using JS fallback:",C),!1}})(),aB)}function Jt(C){if(!JA)return null;try{return JA.inflate(C)}catch(A){return null}}function Lt(C){if(!JA)return null;try{return bt(JA.decode_svga(C))}catch(A){return null}}function Ht(C){if(!JA)return null;try{return JA.decode_svga_payload(C)}catch(A){return null}}function xt(C){if(!JA)return null;try{const A=aQ(),g=typeof JA.decode_svga_payload_profiled=="function"?JA.decode_svga_payload_profiled(C):JA.decode_svga_payload(C),I=aQ()-A,B=typeof JA.take_svga_payload_profile=="function"?JA.take_svga_payload_profile():null,Q=B&&typeof B=="object"?B:null;return{payload:g,profile:Q?{...Q,jsCallTotalMs:I,wasmBoundaryAndGlueMs:Math.max(0,I-Q.rustTotalMs)}:void 0}}catch(A){return null}}function OB(C,A,g){if(!JA)return null;try{return JA.build_batch_vertices(C,A,g)}catch(I){return null}}function bt(C){var A,g,I,B,Q,E,e;const i=C.params,t=i?{viewBoxWidth:(A=i.view_box_width)!=null?A:0,viewBoxHeight:(g=i.view_box_height)!=null?g:0,fps:(I=i.fps)!=null?I:20,frames:(B=i.frames)!=null?B:0}:{viewBoxWidth:0,viewBoxHeight:0,fps:20,frames:0},a=new Map,o=C.images;if(o instanceof Map)for(const[r,c]of o)a.set(r,c instanceof Uint8Array?c:new Uint8Array(c));else if(o&&typeof o=="object")for(const[r,c]of Object.entries(o))a.set(r,c instanceof Uint8Array?c:new Uint8Array(c));const s=((Q=C.sprites)!=null?Q:[]).map(qt),n=((E=C.audios)!=null?E:[]).map(r=>{var c,h,l,w,D;return{audioKey:(c=r.audio_key)!=null?c:"",startFrame:(h=r.start_frame)!=null?h:0,endFrame:(l=r.end_frame)!=null?l:0,startTime:(w=r.start_time)!=null?w:0,totalTime:(D=r.total_time)!=null?D:0}});return{version:(e=C.version)!=null?e:"",params:t,images:a,spriteTable:hE(s,t.frames),audios:n}}function qt(C){var A,g;let I=null;const B=((A=C.frames)!=null?A:[]).map(Q=>{var E,e,i,t,a,o,s,n,r,c,h;const l=Array.isArray(Q.shapes)?Q.shapes:[];let w;return l.length===0?(I=null,w=null):((E=l[0])==null?void 0:E.kind)==="keep"?w=I:(w=Wt(l),I=w),{alpha:(e=Q.alpha)!=null?e:0,layout:Q.layout?{width:(i=Q.layout.width)!=null?i:0,height:(t=Q.layout.height)!=null?t:0}:null,transform:Q.transform?{a:(a=Q.transform.a)!=null?a:1,b:(o=Q.transform.b)!=null?o:0,c:(s=Q.transform.c)!=null?s:0,d:(n=Q.transform.d)!=null?n:1,tx:(r=Q.transform.tx)!=null?r:0,ty:(c=Q.transform.ty)!=null?c:0}:null,clipPath:(h=Q.clip_path)!=null?h:"",shapes:w}});return{imageKey:(g=C.image_key)!=null?g:"",frames:B}}function oQ(C){var A,g,I,B;return C?{r:(A=C.r)!=null?A:0,g:(g=C.g)!=null?g:0,b:(I=C.b)!=null?I:0,a:(B=C.a)!=null?B:0}:null}function vt(C){var A,g,I,B,Q,E;const e=(A=C==null?void 0:C.line_dash)!=null?A:C==null?void 0:C.lineDash;return{fill:oQ(C==null?void 0:C.fill),stroke:oQ(C==null?void 0:C.stroke),strokeWidth:(I=(g=C==null?void 0:C.stroke_width)!=null?g:C==null?void 0:C.strokeWidth)!=null?I:0,lineCap:(B=C==null?void 0:C.line_cap)!=null?B:C==null?void 0:C.lineCap,lineJoin:(Q=C==null?void 0:C.line_join)!=null?Q:C==null?void 0:C.lineJoin,miterLimit:(E=C==null?void 0:C.miter_limit)!=null?E:C==null?void 0:C.miterLimit,lineDash:Array.isArray(e)&&e.length>0?e:void 0}}function Tt(C){var A,g,I,B,Q,E;return{a:(A=C==null?void 0:C.a)!=null?A:1,b:(g=C==null?void 0:C.b)!=null?g:0,c:(I=C==null?void 0:C.c)!=null?I:0,d:(B=C==null?void 0:C.d)!=null?B:1,tx:(Q=C==null?void 0:C.tx)!=null?Q:0,ty:(E=C==null?void 0:C.ty)!=null?E:0}}function Wt(C){var A,g,I,B,Q,E,e,i,t,a,o,s,n;if(!Array.isArray(C)||C.length===0)return null;const r=[];for(const c of C){const h=c==null?void 0:c.kind;if(h!=="path"&&h!=="rect"&&h!=="ellipse")continue;const l={kind:h,pathData:(A=c.path_data)!=null?A:c.pathData,rect:c.rect?{x:(g=c.rect.x)!=null?g:0,y:(I=c.rect.y)!=null?I:0,width:(B=c.rect.width)!=null?B:0,height:(Q=c.rect.height)!=null?Q:0,cornerRadius:(e=(E=c.rect.corner_radius)!=null?E:c.rect.cornerRadius)!=null?e:0}:void 0,ellipse:c.ellipse?{x:(i=c.ellipse.x)!=null?i:0,y:(t=c.ellipse.y)!=null?t:0,radiusX:(o=(a=c.ellipse.radius_x)!=null?a:c.ellipse.radiusX)!=null?o:0,radiusY:(n=(s=c.ellipse.radius_y)!=null?s:c.ellipse.radiusY)!=null?n:0}:void 0,style:vt(c.style),transform:Tt(c.transform)};r.push(l)}return r.length>0?r:null}var Vt=Object.defineProperty,Zt=(C,A,g)=>A in C?Vt(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,PB=(C,A,g)=>Zt(C,typeof A!="symbol"?A+"":A,g);class uE{constructor(){PB(this,"floatPoolA",null),PB(this,"floatPoolB",null),PB(this,"uint32Pool",null)}getFloat32(A){var g,I;if(!this.floatPoolA||this.floatPoolA.length<A){const B=Math.max(A,((I=(g=this.floatPoolA)==null?void 0:g.length)!=null?I:0)*2,1024);this.floatPoolA=new Float32Array(B)}return this.floatPoolA}getFloat32B(A){var g,I;if(!this.floatPoolB||this.floatPoolB.length<A){const B=Math.max(A,((I=(g=this.floatPoolB)==null?void 0:g.length)!=null?I:0)*2,1024);this.floatPoolB=new Float32Array(B)}return this.floatPoolB}getUint32(A){var g,I;if(!this.uint32Pool||this.uint32Pool.length<A){const B=Math.max(A,((I=(g=this.uint32Pool)==null?void 0:g.length)!=null?I:0)*2,1024);this.uint32Pool=new Uint32Array(B)}return this.uint32Pool}destroy(){this.floatPoolA=null,this.floatPoolB=null,this.uint32Pool=null}}function mg(C,A,g,I,B,Q){const E=1/(C-A),e=1/(g-I),i=1/(B-Q),t=new Float32Array(16);return t[0]=-2*E,t[5]=-2*e,t[10]=2*i,t[12]=(C+A)*E,t[13]=(I+g)*e,t[14]=(B+Q)*i,t[15]=1,t}function lg(C,A,g){return C+(A-C)*g}function uB(C,A,g){return C<A?A:C>g?g:C}let Xt=0;function mC(){return`gift_${++Xt}_${Date.now().toString(36)}`}function Ot(C){const A=C.length;if(A<3)return[];if(A===3)return[0,1,2];const g=[],I=Array.from({length:A},(e,i)=>i),Q=Pt(C)>0;let E=A*A;for(;I.length>3&&E-- >0;){let e=!1;const i=I.length;for(let t=0;t<i;t++){const a=I[(t-1+i)%i],o=I[t],s=I[(t+1)%i],n=C[a],r=C[o],c=C[s],h=(r.x-n.x)*(c.y-n.y)-(r.y-n.y)*(c.x-n.x);if(!(Q?h>0:h<0))continue;let w=!1;for(let D=0;D<i;D++)if(!(D===(t-1+i)%i||D===t||D===(t+1)%i)&&jt(C[I[D]],n,r,c)){w=!0;break}if(!w){Q?g.push(a,o,s):g.push(a,s,o),I.splice(t,1),e=!0;break}}if(!e)break}if(I.length===3){const[e,i,t]=I;Q?g.push(e,i,t):g.push(e,t,i)}return g}function Pt(C){let A=0;const g=C.length;for(let I=0;I<g;I++){const B=(I+1)%g;A+=C[I].x*C[B].y,A-=C[B].x*C[I].y}return A*.5}function jt(C,A,g,I){const B=jB(C,A,g),Q=jB(C,g,I),E=jB(C,I,A),e=B<0||Q<0||E<0,i=B>0||Q>0||E>0;return!(e&&i)}function jB(C,A,g){return(C.x-g.x)*(A.y-g.y)-(A.x-g.x)*(C.y-g.y)}const JC={x:0,y:0};function rg(C){var A;return C.scale*((A=C.motionScaleX)!=null?A:1)}function cg(C){var A;return C.scale*((A=C.motionScaleY)!=null?A:1)}function sQ(C,A,g){if(typeof C=="string"){const I=Number.parseFloat(C);return Number.isFinite(I)?A*I/100:A*.5}if(typeof C=="number"&&Number.isFinite(C)){const I=g&&g>0?A/g:1;return C*I}return A*.5}function vB(C,A={x:0,y:0}){const g=C.options.transformOrigin;return A.x=C.x+sQ(g==null?void 0:g.x,C.width,C.options.width)*rg(C),A.y=C.y+sQ(g==null?void 0:g.y,C.height,C.options.height)*cg(C),A}function nI(C,A,g,I,B,Q){const E=C.rotation||0,e=Math.cos(E),i=Math.sin(E),t=vB(C,JC),a=A-t.x,o=g-t.y;return Q[0]=e*I,Q[1]=i*I,Q[2]=0,Q[3]=0,Q[4]=-i*B,Q[5]=e*B,Q[6]=0,Q[7]=0,Q[8]=0,Q[9]=0,Q[10]=1,Q[11]=0,Q[12]=t.x+e*a-i*o,Q[13]=t.y+i*a+e*o,Q[14]=0,Q[15]=1,Q}function zt(C,A,g=A){const I=C.rotation||0;if(I===0)return g!==A&&Object.assign(g,A),g;const B=Math.cos(I),Q=Math.sin(I),E=vB(C,JC),{a:e,b:i,c:t,d:a,tx:o,ty:s}=A,n=o-E.x,r=s-E.y;return g.a=B*e-Q*i,g.b=Q*e+B*i,g.c=B*t-Q*a,g.d=Q*t+B*a,g.tx=E.x+B*n-Q*r,g.ty=E.y+Q*n+B*r,g}function Sg(C,A,g,I,B,Q={x:0,y:0,w:0,h:0}){const E=C.rotation||0;if(E===0)return Q.x=A,Q.y=g,Q.w=I,Q.h=B,Q;const e=Math.cos(E),i=Math.sin(E),t=vB(C,JC),a=A-t.x,o=g-t.y,s=a+I,n=o+B,r=t.x+e*a-i*o,c=t.y+i*a+e*o,h=t.x+e*s-i*o,l=t.y+i*s+e*o,w=t.x+e*s-i*n,D=t.y+i*s+e*n,y=t.x+e*a-i*n,R=t.y+i*a+e*n,F=Math.min(r,h,w,y),d=Math.min(c,l,D,R),f=Math.max(r,h,w,y),u=Math.max(c,l,D,R);return Q.x=F,Q.y=d,Q.w=f-F,Q.h=u-d,Q}function XA(C){var A;return(A=C.options.objectFit)!=null?A:"contain"}function Fg(C,A,g,I,B=!1){const Q=I!=null?I:{scaleX:1,scaleY:1,width:0,height:0,offsetX:0,offsetY:0},E=C.width*(B?C.scale:rg(C)),e=C.height*(B?C.scale:cg(C)),i=XA(C);if(!(A>0)||!(g>0))return Q.scaleX=1,Q.scaleY=1,Q.width=E,Q.height=e,Q.offsetX=0,Q.offsetY=0,Q;if(i==="fill")return Q.scaleX=E/A,Q.scaleY=e/g,Q.width=E,Q.height=e,Q.offsetX=0,Q.offsetY=0,Q;const t=i==="cover"?Math.max(E/A,e/g):Math.min(E/A,e/g),a=A*t,o=g*t;return Q.scaleX=t,Q.scaleY=t,Q.width=a,Q.height=o,Q.offsetX=i==="cover"?(E-a)*.5:0,Q.offsetY=i==="cover"?(e-o)*.5:0,Q}const RE=`function* YA(A) {
2239
2239
  if (!A || A.trim().length === 0) return [];
2240
2240
  const I = [];
2241
2241
  let g = [], B = 0, Q = 0, D = 0, C = 0, i = 0, G = 0;
@@ -3097,7 +3097,7 @@ BA.onmessage = (A) => {
3097
3097
  }
3098
3098
  };
3099
3099
  //# sourceMappingURL=svga-clip-worker-DMipl-rR.js.map
3100
- `,nQ=typeof self!="undefined"&&self.Blob&&new Blob(["URL.revokeObjectURL(import.meta.url);",RE],{type:"text/javascript;charset=utf-8"});function _t(C){let A;try{if(A=nQ&&(self.URL||self.webkitURL).createObjectURL(nQ),!A)throw"";const g=new Worker(A,{type:"module",name:C==null?void 0:C.name});return g.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(A)}),g}catch(g){return new Worker("data:text/javascript;charset=utf-8,"+encodeURIComponent(RE),{type:"module",name:C==null?void 0:C.name})}}let LI=null,$t=1;const uI=new Map;function LC(C){C.signal&&C.onAbort&&C.signal.removeEventListener("abort",C.onAbort)}function DC(C,A,g){LI===C&&(LI=null);try{C.terminate()}catch(I){}for(const[I,B]of uI)B.owner===C&&(uI.delete(I),LC(B),B.reject(A))}function Aa(){if(!LI){const C=new _t;LI=C,C.addEventListener("message",async A=>{var g,I;const B=A.data;if(!B||B.type!=="build-svga-clip-meshes-result")return;const Q=uI.get(B.id);if(!(!Q||Q.owner!==C)){if(uI.delete(B.id),LC(Q),B.error){Q.reject(new Error(B.error));return}try{const E=new Set(Q.paths),e=new Map;for(const i of(g=B.entries)!=null?g:[]){if(!E.has(i.path)){Q.reject(new Error(`SVGA clip worker returned unknown path: ${i.path}`));return}if(e.has(i.path)){Q.reject(new Error(`SVGA clip worker returned duplicate path: ${i.path}`));return}if(i.analysis){const o=i.analysis;if(!["empty","fillable","invalid"].includes(o.kind)||o.localRect&&![o.localRect.x0,o.localRect.y0,o.localRect.x1,o.localRect.y1].every(Number.isFinite))throw new Error("Invalid clip analysis");if((I=Q.onAnalysis)==null||I.call(Q,i.path,o),o.kind==="empty"){e.set(i.path,null);continue}}else if(Q.onAnalysis)throw new Error("Missing clip analysis");if(!i.vertices||!i.indices){Q.reject(new Error(`SVGA clip worker returned no mesh for fillable path: ${i.path}`));return}const t={vertices:i.vertices,indices:i.indices},a=await Ig(UB(t),{profile:Q.profile,frameBudgetMs:Q.frameBudgetMs,checkActive:()=>L(Q.signal)},"validation");if(a){Q.reject(new Error(`SVGA clip worker returned invalid mesh for ${i.path}: ${a}`));return}e.set(i.path,t)}for(const i of Q.paths)if(!e.has(i)){Q.reject(new Error(`SVGA clip worker omitted requested path: ${i}`));return}if(Q.profile&&B.profile){const i=Q.profile.phase("clip-prepare");i.executionMs+=B.profile.executionMs,i.workerExecutionMs+=B.profile.executionMs,i.elapsedMs+=B.profile.elapsedMs,i.maxSliceMs=Math.max(i.maxSliceMs,B.profile.maxSliceMs),i.slices+=B.profile.slices,i.bytes+=[...e.values()].reduce((t,a)=>t+(a?a.vertices.byteLength+a.indices.byteLength:0),0)}Q.resolve(e)}catch(E){Q.reject(E instanceof Error?E:new Error(String(E)))}}}),C.addEventListener("error",A=>{DC(C,new Error(A.message||"SVGA clip worker error"))}),C.addEventListener("messageerror",()=>{DC(C,new Error("SVGA clip worker message deserialization failed"))})}return LI}function fE(){return typeof Worker!="undefined"}function ga(C,A={}){if(!fE())return Promise.reject(new Error("SVGA clip worker unavailable"));if(new Set(C).size!==C.length)return Promise.reject(new Error("SVGA clip worker request contains duplicate paths"));const g=A.profile?performance.now():0;return pC(()=>{A.profile&&(A.profile.phase("worker-queue").elapsedMs+=performance.now()-g),L(A.signal,"SVGA clip worker task aborted");const I=Aa(),B=$t++;return new Promise((Q,E)=>{var e,i;const t={owner:I,onAnalysis:A.onAnalysis,frameBudgetMs:A.frameBudgetMs,profile:A.profile,signal:A.signal,paths:[...C],resolve:Q,reject:E};if(t.onAbort=()=>{uI.delete(B),LC(t);try{I.postMessage({type:"cancel-svga-clip-meshes",id:B})}catch(a){}E(QA("SVGA clip worker task aborted"))},uI.set(B,t),(e=A.signal)!=null&&e.aborted){t.onAbort();return}(i=A.signal)==null||i.addEventListener("abort",t.onAbort,{once:!0});try{I.postMessage({type:"build-svga-clip-meshes",id:B,paths:C,workerTimeSliceMs:A.workerTimeSliceMs,profile:!!A.profile})}catch(a){DC(I,a instanceof Error?a:new Error(String(a)))}})},A.signal)}var Ia=Object.defineProperty,Ba=(C,A,g)=>A in C?Ia(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,K=(C,A,g)=>Ba(C,typeof A!="symbol"?A+"":A,g);const zA=2048,rQ=13,zB=14,tI=Ag;class wI extends Error{constructor(A){super("SVGA FastPath submission rejected; replaying frame through CPU Reference"),this.entity=A,this.name="SVGAFastPathFrameReplayError"}}class _g extends Error{constructor(A){super(A),this.name="SVGAStencilTransactionError"}}class xg extends Error{constructor(){super("SVGA renderer was destroyed during frame submission"),this.name="SVGARendererDestroyedError"}}const oB=6,sB={x:0,y:0,w:1,h:1},HC=class wC{constructor(A,g,I){this.onClipMeshReady=A,this.onHybridValidationFailure=g,this.onRuntimeDiagnostic=I,K(this,"pool",new uE),K(this,"vertexBufHandles",[]),K(this,"indexBufHandles",[]),K(this,"clipSpriteVertBufHandles",[]),K(this,"clipSpriteIdxBufHandles",[]),K(this,"batchDrawCursor",0),K(this,"clipSpriteDrawCursor",0),K(this,"canvasWidth",0),K(this,"canvasHeight",0),K(this,"projCacheW",0),K(this,"projCacheH",0),K(this,"projCache",null),K(this,"clipMeshCache",new Map),K(this,"clipMeshStates",new Map),K(this,"clipMeshStateWaiters",new Map),K(this,"clipMeshGeneration",0),K(this,"clipMeshProducerController",new AbortController),K(this,"clipMeshProducerTasks",new Set),K(this,"clipResourceProducers",new Map),K(this,"destroyed",!1),K(this,"clipMeshDestroyed",!1),K(this,"clipAnalysis",new IE),K(this,"clipMeshesWithBuffers",new Set),K(this,"clipMeshRefCounts",new Map),K(this,"entityRetainedClipMeshes",new WeakMap),K(this,"pendingClipMeshPaths",new Set),K(this,"clipMeshBuildInFlight",!1),K(this,"stencilTransactionState","idle"),K(this,"clipFrameDataScratch",new Float32Array(gI)),K(this,"staticBatchCacheRowScratch",new Float32Array(gI)),K(this,"instancedFrameDataScratch",new Float32Array(zA*rQ)),K(this,"instancedFrameDataWords",new Uint32Array(this.instancedFrameDataScratch.buffer)),K(this,"timelineBatchDataScratch",new Float32Array(zA*tI)),K(this,"timelineBatchFrameScratch",new Int32Array(zA)),K(this,"timelineDirectSlotDataScratch",new Float32Array(zA*tI)),K(this,"clipSpriteVertsScratch",null),K(this,"clipSpriteIndicesScratch",null),K(this,"clipMaskBatchTransformsScratch",new Float32Array(0)),K(this,"instancedQuadVB",null),K(this,"instancedQuadIB",null),K(this,"whiteTexture",null),K(this,"shapeMeshCache",new WeakMap),K(this,"shapeMeshesWithBuffers",new Set),K(this,"shapeMeshRefCounts",new Map),K(this,"entityRetainedShapeMeshes",new WeakMap),K(this,"clipTransformMat",new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1])),K(this,"shapeTransformMat",new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1])),K(this,"slotScissor",{x:0,y:0,w:0,h:0}),K(this,"slotClipX0",0),K(this,"slotClipY0",0),K(this,"slotClipX1",0),K(this,"slotClipY1",0),K(this,"slotScissorActive",!1),K(this,"sharedClipStencilActive",!1),K(this,"layoutScratch",{scaleX:1,scaleY:1,width:0,height:0,offsetX:0,offsetY:0}),K(this,"spriteWorkPool",[]),K(this,"spriteWorkCursor",0),K(this,"batchSpritesScratch",[]),K(this,"drawGroupScratch",[]),K(this,"directSlotsScratch",[]),K(this,"hybridSlotsScratch",[]),K(this,"timelineSlotStateUploadId",0),K(this,"sharedSlotLayerWorkPool",[]),K(this,"sharedSlotLayerWorksScratch",[]),K(this,"clipLayerBatchPool",[]),K(this,"clipLayerBatchesScratch",[]),K(this,"entityHasShapesCache",new WeakMap),K(this,"entityFrameClipModeCache",new WeakMap),K(this,"gpuMotionEntityEligibilityCache",new WeakMap),K(this,"entityClipMeshArrayCache",new WeakMap),K(this,"affineScratch",{a:1,b:0,c:0,d:1,tx:0,ty:0}),K(this,"plainInstancedTexturesScratch",[]),K(this,"plainInstancedUniformsScratch",{u_projection:new Float32Array(16),u_atlas:0}),K(this,"plainInstancedDrawCommand",{shader:"svga-instanced-premul",vertexBuffer:null,indexBuffer:null,indexCount:6,textures:this.plainInstancedTexturesScratch,uniforms:this.plainInstancedUniformsScratch}),K(this,"timelineTexturesScratch",[]),K(this,"timelineUniformsScratch",{u_projection:new Float32Array(16)}),K(this,"timelineSlotStateScratch",new Float32Array(zB)),K(this,"timelineSlotStateCache",new Map),K(this,"timelineRenderableFrameCache",new Map),K(this,"timelineOriginScratch",{x:0,y:0}),K(this,"timelineDrawCommand",{shader:"svga-frame-table-instanced-premul",vertexBuffer:null,indexBuffer:null,indexCount:6,textures:this.timelineTexturesScratch,uniforms:this.timelineUniformsScratch,stencil:"none"}),K(this,"timelineShapeDrawCommand",{shader:"svga-frame-table-shape-premul",vertexBuffer:null,indexBuffer:null,indexCount:0,textures:this.timelineTexturesScratch,uniforms:this.timelineUniformsScratch,stencil:"none"}),K(this,"timelineClipDrawCommand",{shader:"svga-frame-table-clip-mask",vertexBuffer:null,indexBuffer:null,indexCount:0,textures:this.timelineTexturesScratch,uniforms:this.timelineUniformsScratch,stencil:"write"}),K(this,"plainBatchTexturesScratch",[]),K(this,"plainBatchUniformsScratch",{u_projection:new Float32Array(16),u_atlas:0}),K(this,"plainBatchDrawCommand",{shader:"svga-batch-premul",vertexBuffer:null,indexBuffer:null,indexCount:0,textures:this.plainBatchTexturesScratch,uniforms:this.plainBatchUniformsScratch}),K(this,"clipInstancedTexturesScratch",[]),K(this,"clipInstancedUniformsScratch",{u_projection:new Float32Array(16),u_atlas:0}),K(this,"clipInstancedDrawCommand",{shader:"svga-instanced-premul",vertexBuffer:null,indexBuffer:null,indexCount:6,instanceCount:1,textures:this.clipInstancedTexturesScratch,uniforms:this.clipInstancedUniformsScratch,stencil:"test"}),K(this,"clipBatchTexturesScratch",[]),K(this,"clipBatchUniformsScratch",{u_projection:new Float32Array(16),u_atlas:0}),K(this,"clipBatchDrawCommand",{shader:"svga-batch-premul",vertexBuffer:null,indexBuffer:null,indexCount:0,textures:this.clipBatchTexturesScratch,uniforms:this.clipBatchUniformsScratch,stencil:"test"}),K(this,"clipMaskTexturesScratch",[]),K(this,"clipMaskUniformsScratch",{u_projection:new Float32Array(16),u_transform:this.clipTransformMat}),K(this,"clipMaskDrawCommand",{shader:"clip-mask",vertexBuffer:null,indexBuffer:null,indexCount:0,textures:this.clipMaskTexturesScratch,uniforms:this.clipMaskUniformsScratch}),K(this,"clipMaskInstancedUniformsScratch",{u_projection:new Float32Array(16)}),K(this,"clipMaskInstancedDrawCommand",{shader:"clip-mask-instanced",vertexBuffer:null,indexBuffer:null,indexCount:0,instanceCount:1,instanceData:this.clipMaskBatchTransformsScratch,textures:this.clipMaskTexturesScratch,uniforms:this.clipMaskInstancedUniformsScratch}),K(this,"shapeTexturesScratch",[]),K(this,"shapeUniformsScratch",{u_projection:new Float32Array(16),u_transform:new Float32Array(16),u_opacity:1}),K(this,"shapeDrawCommand",{shader:"svga-batch-premul",vertexBuffer:null,indexBuffer:null,indexCount:0,textures:this.shapeTexturesScratch,uniforms:this.shapeUniformsScratch})}emitRuntimeDiagnostic(A){var g;if(this.destroyed)return!1;try{(g=this.onRuntimeDiagnostic)==null||g.call(this,A)}catch(I){console.error("[GiftStage:SVGA] runtime diagnostic observer failed",I)}return!this.destroyed}notifyClipMeshReady(){var A;if(!(this.destroyed||this.clipMeshDestroyed))try{(A=this.onClipMeshReady)==null||A.call(this)}catch(g){console.error("[GiftStage:SVGA] clip mesh ready observer failed",g)}}beginFrame(A){this.assertRendererAlive(),this.batchDrawCursor=0,this.clipSpriteDrawCursor=0,this.timelineSlotStateCache.clear(),this.timelineRenderableFrameCache.clear(),this.stencilTransactionState="idle";const g=A.canvas.width,I=A.canvas.height;this.canvasWidth=g,this.canvasHeight=I}endFrame(){if(this.assertRendererAlive(),this.stencilTransactionState!=="idle")throw new _g(`SVGA stencil transaction ended in ${this.stencilTransactionState}`)}abortFrame(){this.assertRendererAlive(),this.stencilTransactionState="idle",this.slotScissorActive=!1}flush(A,g){this.beginFrame(A),this.drawSlots(A,g.values())}drawSlot(A,g){if(g.type!=="svga"||!this.hasRenderableSVGA(g)||g.state!=="playing"&&g.state!=="fly"&&g.state!=="stopped")return;if(this.beginFrame(A),this.canUseTimelinePath(A,g,"gpu-direct")){this.drawTimelineSlot(A,g,this.getProjection())||g.videoEntity&&this.rejectFastPathFrame(g.videoEntity);return}const I=this.drawGroupScratch;I.length=0,I.push(g),this.flushGroup(A,I),I.length=0}drawSlots(A,g){var I;this.beginFrame(A);const B=this.drawGroupScratch,Q=this.directSlotsScratch,E=this.hybridSlotsScratch;B.length=0,Q.length=0,E.length=0;const e=()=>{var t;if(Q.length===0)return;const a=(t=Q[0])==null?void 0:t.videoEntity;try{this.flushDirectSlots(A,Q,this.getProjection())}catch(o){throw o instanceof wI||o instanceof xg||a&&this.rejectFastPathFrame(a),o}Q.length=0},i=()=>{var t;if(E.length===0)return;const a=(t=E[0])==null?void 0:t.videoEntity;try{this.flushHybridScheduledSlots(A,E,this.getProjection())}catch(o){throw o instanceof wI||o instanceof xg||a&&this.rejectFastPathFrame(a),o}E.length=0};for(const t of g)if(!(t.type!=="svga"||!this.hasRenderableSVGA(t))&&!(t.state!=="playing"&&t.state!=="fly"&&t.state!=="stopped")){if(this.canUseTimelinePath(A,t,"gpu-direct")){B.length>0&&(this.flushGroup(A,B),B.length=0),i(),Q.length>0&&!this.areDirectSlotsBatchCompatible(Q[0],t)&&e(),Q.push(t);continue}if(e(),this.canUseTimelinePath(A,t,"gpu-hybrid")&&((I=t.videoEntity)!=null&&I.svgaHybridCommandTable)){B.length>0&&(this.flushGroup(A,B),B.length=0),E.length>0&&!this.areHybridSlotsBatchCompatible(E[0],t)&&i(),E.push(t);continue}i(),B.push(t)}e(),i(),B.length>0&&this.flushGroup(A,B),B.length=0,Q.length=0,E.length=0}submitBackendDraw(A,g){var I;this.assertRendererAlive();const B=(I=g.stencil)!=null?I:g.shader==="clip-mask"?"write":"none";let Q=this.stencilTransactionState;if(B==="write"){if(this.stencilTransactionState==="content-tested")throw new _g("stencil write attempted after content test without clear");Q="mask-written"}else if(B==="test"){if(this.stencilTransactionState==="idle")throw new _g("stencil test attempted without a mask");Q="content-tested"}else if(B==="clear"){if(this.stencilTransactionState==="idle")throw new _g("stencil clear attempted without a mask");Q="idle"}try{const E=A.draw(g);if(E.submitted)return this.stencilTransactionState=Q,!0;const e=`${g.shader} rejected (${E.reason})${E.message?`: ${E.message}`:""}`;if(!this.emitRuntimeDiagnostic({type:"backend-operation-rejected",message:e}))throw new xg;if(g.shader==="svga-frame-table-instanced-premul"&&(E.reason==="invalid-command"||E.reason==="missing-resource")&&!this.emitRuntimeDiagnostic({type:"atlas-command-invalid",message:e}))throw new xg;if(B!=="none"&&!this.emitRuntimeDiagnostic({type:"stencil-transaction-failure",message:e}))throw new xg;return!1}catch(E){if(E instanceof _g||E instanceof xg)throw E;const e=E instanceof Error?E.message:String(E);if(!this.emitRuntimeDiagnostic({type:B==="none"?"backend-operation-rejected":"stencil-transaction-failure",message:e}))throw new xg;return!1}}assertRendererAlive(){if(this.destroyed)throw new xg}requireBackendDraw(A,g,I){if(!this.submitBackendDraw(A,g))throw new Error(`SVGA backend rejected ${I}`)}areDirectSlotsBatchCompatible(A,g){var I,B,Q,E;const e=A.videoEntity;if(!e||g.videoEntity!==e||((I=A.svgaFrameTableState)==null?void 0:I.binding)!==((B=g.svgaFrameTableState)==null?void 0:B.binding))return!1;const i=(Q=e.atlasTextureHandles)!=null&&Q.length?e.atlasTextureHandles:e.atlasTextureHandle?[e.atlasTextureHandle]:[],t=(E=e.svgaTimelineDrawRuns)!=null?E:[];return t.length!==1||t.some(a=>a.spriteBase<0||a.spriteCount<1||a.spriteBase+a.spriteCount>e.spriteTable.spriteCount||!i[a.textureIndex])?!1:this.areTimelineMotionBindingsCompatible(A,g)}areHybridSlotsBatchCompatible(A,g){var I,B,Q,E,e;return A.videoEntity!=null&&g.videoEntity===A.videoEntity&&((I=A.svgaFrameTableState)==null?void 0:I.binding)===((B=g.svgaFrameTableState)==null?void 0:B.binding)&&A.videoEntity.svgaHybridCommandTable===((Q=g.videoEntity)==null?void 0:Q.svgaHybridCommandTable)&&!((E=A.svgaSlotTextures)!=null&&E.size)&&!((e=g.svgaSlotTextures)!=null&&e.size)&&this.areTimelineMotionBindingsCompatible(A,g)}areTimelineMotionBindingsCompatible(A,g){const I=A.motionTrackBinding,B=g.motionTrackBinding;return!I&&!B?!0:!!I&&!!B&&I.buffer===B.buffer&&I.globalsBuffer===B.globalsBuffer&&I.sampleCount===B.sampleCount&&I.sampleIntervalMs===B.sampleIntervalMs&&I.currentTimeMs===B.currentTimeMs}rejectFastPathFrame(A){var g;this.assertRendererAlive();try{(g=this.onHybridValidationFailure)==null||g.call(this,A)}catch(I){console.error("[GiftStage:SVGA] runtime fallback callback failed",I)}throw this.assertRendererAlive(),new wI(A)}flushDirectSlots(A,g,I){var B,Q,E,e,i,t;const a=g[0],o=a==null?void 0:a.videoEntity,s=(B=o==null?void 0:o.spriteTable.spriteCount)!=null?B:0;if(!a||!o||s<1)return;const n=(Q=o.atlasTextureHandles)!=null&&Q.length?o.atlasTextureHandles:o.atlasTextureHandle?[o.atlasTextureHandle]:[],r=(E=o.svgaTimelineDrawRuns)!=null?E:[];if((r.length===0||r.some(D=>!n[D.textureIndex])||g.some(D=>{var y;return!((y=D.svgaFrameTableState)!=null&&y.binding)||this.resolveRenderableFrame(D,o)==null}))&&this.rejectFastPathFrame(o),!this.areDirectSlotsBatchCompatible(a,a)){for(const D of g)D.svgaDrawBatchMode="per-slot",D.svgaDrawCompatibleInstanceCount=1,this.drawTimelineSlot(A,D,I)||this.rejectFastPathFrame(o);return}const c=r[0],h=Math.max(1,Math.floor(zA/c.spriteCount));if(h<2){for(const D of g)D.svgaDrawBatchMode="per-slot",D.svgaDrawCompatibleInstanceCount=1,this.drawTimelineSlot(A,D,I)||this.rejectFastPathFrame(o);return}const l=n[c.textureIndex],w=(e=a.svgaFrameTableState)==null?void 0:e.binding;if(!(!l||!w)){this.ensureInstancedQuadBuffers(A);for(let D=0;D<g.length;D+=h){const y=Math.min(h,g.length-D),R=this.timelineDirectSlotDataScratch;let F=0;for(let G=0;G<y;G++){const S=g[D+G],M=this.resolveRenderableFrame(S,o);if(M==null)break;const N=this.resolveTimelineSlotState(S,M,c.spriteBase),U=G*tI;R.set(N.subarray(0,zB),U),R[U+Ug.atlasPage]=c.textureIndex,R[U+Ug.motionTrackPlusOne]=((t=(i=S.motionTrackBinding)==null?void 0:i.trackIndex)!=null?t:-1)+1,S.svgaFrameTableState.frameIndex=M,S.svgaDrawBatchMode="multi-slot",S.svgaDrawCompatibleInstanceCount=y,F++}if(F!==y){for(let G=0;G<y;G++){const S=g[D+G];S.svgaDrawBatchMode="per-slot",S.svgaDrawCompatibleInstanceCount=1,this.drawTimelineSlot(A,S,I)||this.rejectFastPathFrame(o)}continue}const d=this.timelineDrawCommand;d.vertexBuffer=this.instancedQuadVB,d.indexBuffer=this.instancedQuadIB,d.instanceCount=y*c.spriteCount,d.instanceData=void 0,d.svgaFrameTableSlotStates=R,d.svgaFrameTableSlotStateCount=y,d.svgaFrameTableSpritesPerSlot=c.spriteCount,d.svgaFrameTableSlotStateUploadId=++this.timelineSlotStateUploadId,d.stencil="none",d.svgaFrameTable=w,d.svgaFrameTableFrameCount=o.spriteTable.frameCount,d.svgaFrameTableSpriteCount=s,d.svgaFrameTableFrameIndex=a.currentFrame,d.svgaFrameTableSpriteBase=c.spriteBase,d.svgaFrameTableAtlasPage=c.textureIndex,d.svgaFrameTableSlotState=this.resolveTimelineSlotState(a,a.currentFrame,c.spriteBase),d.svgaSlotState=d.svgaFrameTableSlotState;const f=a.motionTrackBinding;d.motionTrackBuffer=f==null?void 0:f.buffer,d.motionTrackGlobalsBuffer=f==null?void 0:f.globalsBuffer,d.motionTrackSampleCount=f==null?void 0:f.sampleCount,d.motionTrackSampleIntervalMs=f==null?void 0:f.sampleIntervalMs,d.motionTrackTimeMs=f==null?void 0:f.currentTimeMs,d.motionTrackIndex=f==null?void 0:f.trackIndex,this.timelineTexturesScratch[0]=l,this.timelineTexturesScratch.length=1,this.timelineUniformsScratch.u_projection=I;const u=this.submitBackendDraw(A,d);d.svgaFrameTableSlotStates=void 0,d.svgaFrameTableSlotStateCount=void 0,d.svgaFrameTableSpritesPerSlot=void 0,d.svgaFrameTableSlotStateUploadId=void 0,u||this.rejectFastPathFrame(o)}A.resetScissor()}}requiresStencil(A){var g,I,B,Q,E;for(const e of A){if(e.type!=="svga"||!e.videoEntity||e.state!=="playing"&&e.state!=="fly"&&e.state!=="stopped")continue;const i=this.resolveRenderableFrame(e,e.videoEntity);if(i==null)continue;if(e.options.svgaFrameEvaluation!=="cpu"&&!((g=e.svgaSlotTextures)!=null&&g.size)&&((I=e.svgaFrameTableState)==null?void 0:I.binding)!=null&&e.svgaFrameTableState.renderInfo.selectedPath==="gpu-hybrid"){const a=e.videoEntity.svgaHybridCommandTable;if(a){const o=(B=a.frameOffsets[i])!=null?B:0,s=(Q=a.frameOffsets[i+1])!=null?Q:o;for(let n=o;n<s;n++)if(a.operations[n]===jg)return!0;continue}}if(e.opacity<.05)continue;const t=this.getFrameClipMode(e.videoEntity,i);if(t===2||t===1&&((E=e.rotation)!=null?E:0)!==0)return!0}return!1}resolveRenderableFrame(A,g){var I;if(this.timelineRenderableFrameCache.has(A))return(I=this.timelineRenderableFrameCache.get(A))!=null?I:null;const B=A.currentFrame;if(this.isFrameClipReady(g,B))return A.svgaClipReadyFrame=B,this.timelineRenderableFrameCache.set(A,B),B;const Q=A.svgaClipReadyFrame;return Q!=null&&Q>=0&&Q<g.spriteTable.frameCount&&this.isFrameClipReady(g,Q)?(this.timelineRenderableFrameCache.set(A,Q),Q):(this.timelineRenderableFrameCache.set(A,null),null)}isFrameClipReady(A,g){var I,B,Q,E;const e=A.spriteTable;if(g<0||g>=e.frameCount)return!1;const i=A.svgaHybridCommandTable;if(i){const a=(I=i.frameOffsets[g])!=null?I:0,o=(B=i.frameOffsets[g+1])!=null?B:a;let s=!0;for(let n=a;n<o;n++){if(i.operations[n]!==jg)continue;const r=(Q=i.meshReferences[n*3+1])!=null?Q:-1;this.getClipMeshByIndex(A,r)===void 0&&(s=!1)}return s}let t=!0;for(let a=0;a<e.spriteCount;a++){const o=(a*e.frameCount+g)*II;if(e.frameData[o+8]<.05)continue;const s=(E=e.clipPathIndex[a*e.frameCount+g])!=null?E:-1;if(s<0)continue;const n=e.clipPaths[s];if(!n||this.getClipGeometryKind(n)==="empty")continue;const r=this.clipMeshStates.get(n);if(!((r==null?void 0:r.status)==="valid"||(r==null?void 0:r.status)==="empty")){if((r==null?void 0:r.status)==="invalid"){this.handleInvalidClipMesh(A,n,r);continue}(r==null?void 0:r.status)!=="building"&&this.queueClipMeshBuild(n),t=!1}}return t}getFrameClipMode(A,g){const I=A.spriteTable;if(g<0||g>=I.frameCount)return 0;let B=this.entityFrameClipModeCache.get(A);(!B||B.length!==I.frameCount)&&(B=new Uint8Array(I.frameCount),B.fill(255),this.entityFrameClipModeCache.set(A,B));const Q=B[g];if(Q!==255)return Q;let E=0,e=!1;for(let i=0;i<I.spriteCount;i++){const t=(i*I.frameCount+g)*II;if(I.frameData[t+8]<.05)continue;const a=this.getClipMeshForSprite(A,i,g);if(a===void 0){E=2,e=!0;break}if(!a||a.indices.length===0)continue;if(!this.getClipRect(a)||!nB(I.frameData[t+2],I.frameData[t+3],I.frameData[t+4],I.frameData[t+5])){E=2;break}E=1}return e||(B[g]=E),E}async prewarmClipMeshes(A,g={}){const I=await Ig(this.collectClipPathsSteps(A.spriteTable),g,"clip-prepare");return I.length===0?0:this.buildMissingClipMeshes(I,g)}async prewarmClipMeshesForFrame(A,g,I={}){const B=await Ig(this.collectClipPathsSteps(A.spriteTable,g),I,"clip-prepare");return B.length===0?0:this.buildMissingClipMeshes(B,I)}prewarmShapeMeshes(A,g){const I=new Set;let B=0;for(const Q of g.spriteTable.shapesTable){if(!(Q!=null&&Q.length)||I.has(Q))continue;I.add(Q);const E=this.getShapeMesh(Q);!E||E.indices.length===0||(this.ensureShapeMeshBuffers(A,E),B++)}return B}retainHybridMeshes(A,g){var I,B,Q,E,e,i;const t=g.svgaHybridCommandTable;if(!t)throw new Error("SVGA Hybrid command table missing");if(this.entityRetainedClipMeshes.has(g)||this.entityRetainedShapeMeshes.has(g))return;const a=new Set,o=new Set;for(let s=0;s<t.operations.length;s++){const n=t.operations[s],r=s*3;if(n===jg||n===FB){const c=this.getClipMeshByIndex(g,(I=t.meshReferences[r+1])!=null?I:-1);if(!c||c.vertices.length<6||c.indices.length<3)throw new Error("SVGA Hybrid clip mesh validation failed");a.add(c)}if(n===yB){const c=(B=t.meshReferences[r])!=null?B:-1,h=g.spriteTable.shapesTable[c],l=h?this.getShapeMesh(h):null;if(!l||l.gpuVertices.length<9||l.indices.length<3)throw new Error("SVGA Hybrid shape mesh validation failed");o.add(l)}}try{for(const s of a)this.ensureClipMeshBuffers(A,s);for(const s of o)this.ensureShapeMeshBuffers(A,s)}catch(s){for(const n of a)((Q=this.clipMeshRefCounts.get(n))!=null?Q:0)>0||(n.vertexBuf&&A.deleteBuffer(n.vertexBuf),n.indexBuf&&A.deleteBuffer(n.indexBuf),n.vertexBuf=null,n.indexBuf=null,this.clipMeshesWithBuffers.delete(n));for(const n of o)((E=this.shapeMeshRefCounts.get(n))!=null?E:0)>0||(n.vertexBuf&&A.deleteBuffer(n.vertexBuf),n.indexBuf&&A.deleteBuffer(n.indexBuf),n.vertexBuf=null,n.indexBuf=null,this.shapeMeshesWithBuffers.delete(n));throw s}for(const s of a)this.clipMeshRefCounts.set(s,((e=this.clipMeshRefCounts.get(s))!=null?e:0)+1);for(const s of o)this.shapeMeshRefCounts.set(s,((i=this.shapeMeshRefCounts.get(s))!=null?i:0)+1);this.entityRetainedClipMeshes.set(g,a),this.entityRetainedShapeMeshes.set(g,o)}releaseHybridMeshes(A,g){var I,B,Q,E;const e=this.entityRetainedClipMeshes.get(g);if(e){for(const t of e){const a=Math.max(0,((I=this.clipMeshRefCounts.get(t))!=null?I:1)-1);if(a>0){this.clipMeshRefCounts.set(t,a);continue}this.clipMeshRefCounts.delete(t),t.vertexBuf&&A.deleteBuffer(t.vertexBuf),t.indexBuf&&A.deleteBuffer(t.indexBuf),t.vertexBuf=null,t.indexBuf=null,this.clipMeshesWithBuffers.delete(t);for(const[o,s]of this.clipMeshCache)s===t&&this.clipMeshCache.delete(o)}this.entityRetainedClipMeshes.delete(g),this.entityClipMeshArrayCache.delete(g)}const i=this.entityRetainedShapeMeshes.get(g);if(i){for(const t of i){const a=Math.max(0,((B=this.shapeMeshRefCounts.get(t))!=null?B:1)-1);if(a>0){this.shapeMeshRefCounts.set(t,a);continue}this.shapeMeshRefCounts.delete(t),t.vertexBuf&&A.deleteBuffer(t.vertexBuf),t.indexBuf&&A.deleteBuffer(t.indexBuf),t.vertexBuf=null,t.indexBuf=null,this.shapeMeshesWithBuffers.delete(t)}this.entityRetainedShapeMeshes.delete(g)}for(const t of g.spriteTable.shapesTable){const a=t?this.shapeMeshCache.get(t):null;!a||((Q=this.shapeMeshRefCounts.get(a))!=null?Q:0)>0||(a.vertexBuf&&A.deleteBuffer(a.vertexBuf),a.indexBuf&&A.deleteBuffer(a.indexBuf),a.vertexBuf=null,a.indexBuf=null,this.shapeMeshesWithBuffers.delete(a))}for(const t of g.spriteTable.clipPaths){const a=this.clipMeshCache.get(t);!a||((E=this.clipMeshRefCounts.get(a))!=null?E:0)>0||(a.vertexBuf&&A.deleteBuffer(a.vertexBuf),a.indexBuf&&A.deleteBuffer(a.indexBuf),a.vertexBuf=null,a.indexBuf=null,this.clipMeshesWithBuffers.delete(a),this.clipMeshCache.delete(t))}}releaseClipPreparation(A){for(const g of this.clipAnalysis.release(A.spriteTable)){this.pendingClipMeshPaths.delete(g),this.clipMeshStates.delete(g),this.clipMeshCache.delete(g);const I=this.clipMeshStateWaiters.get(g);this.clipMeshStateWaiters.delete(g);for(const B of I!=null?I:[])B.signal&&B.onAbort&&B.signal.removeEventListener("abort",B.onAbort),B.reject(QA("SVGA clip resource released"))}for(const[g,I]of this.clipResourceProducers)I.every(B=>!this.clipMeshStates.has(B))&&g.abort();this.entityClipMeshArrayCache.delete(A)}*collectClipPathsSteps(A,g){var I;if(g!=null&&(g<0||g>=A.frameCount))return[];const B=new Set,Q=g==null?A.clipPaths.length:A.spriteCount;for(let E=0;E<Q;E++){(E&127)===0&&(yield);const e=g==null?-1:E*A.frameCount+g;if(e>=0&&A.frameData[e*II+8]<.05)continue;const i=e<0?E:(I=A.clipPathIndex[e])!=null?I:-1,t=A.clipPaths[i];t&&(this.clipAnalysis.retain(A,t),B.add(t))}return Array.from(B)}async buildMissingClipMeshes(A,g={}){var I,B;if(L(g.signal,"SVGA clip prewarm aborted"),(I=g.checkActive)==null||I.call(g),this.clipMeshDestroyed)throw QA("SVGA renderer destroyed during clip prewarm");const Q=A.find(e=>{var i;return((i=this.clipMeshStates.get(e))==null?void 0:i.status)==="invalid"});if(Q){const e=this.clipMeshStates.get(Q);throw new Error(`SVGA clip mesh remains invalid for ${Q}: ${(e==null?void 0:e.status)==="invalid"?e.reason:"unknown error"}`)}const E=A.filter(e=>!this.clipMeshStates.has(e));return E.length>0&&this.startClipMeshProducer(E,{frameBudgetMs:g.frameBudgetMs,workerTimeSliceMs:g.workerTimeSliceMs,useWorker:g.useWorker,profile:g.profile}),await this.waitForClipMeshPaths(A,g.signal),L(g.signal,"SVGA clip prewarm aborted"),(B=g.checkActive)==null||B.call(g),A.reduce((e,i)=>{var t;return e+ +(((t=this.clipMeshStates.get(i))==null?void 0:t.status)==="valid")},0)}startClipMeshProducer(A,g){if(this.clipMeshDestroyed||A.length===0)return;const I=++this.clipMeshGeneration;for(const i of A)this.publishClipMeshState(i,{status:"building",requestId:I,generation:I,attempts:0});const B=new AbortController,Q=()=>B.abort();this.clipMeshProducerController.signal.addEventListener("abort",Q,{once:!0}),this.clipResourceProducers.set(B,A);const E=[],e=this.runClipMeshProducer(A,I,g,E,B.signal).catch(i=>{this.clipMeshDestroyed&&mg(i)||this.failClipMeshProducer(A,I,i,E)}).finally(()=>{this.clipMeshProducerTasks.delete(e),this.clipResourceProducers.delete(B),this.clipMeshProducerController.signal.removeEventListener("abort",Q)});this.clipMeshProducerTasks.add(e),e.catch(i=>{console.error("[GiftStage:SVGA] clip mesh producer terminalization failed",i);try{this.failClipMeshProducer(A,I,i,E)}catch(t){console.error("[GiftStage:SVGA] clip mesh producer emergency terminalization failed",t)}})}async runClipMeshProducer(A,g,I,B,Q){var E,e,i,t;if(L(Q,"SVGA clip producer aborted"),I.useWorker!==!1&&fE())try{const n=await ga(A,{workerTimeSliceMs:I.workerTimeSliceMs,signal:Q,frameBudgetMs:I.frameBudgetMs,profile:I.profile,onAnalysis:(c,h)=>{var l;!Q.aborted&&((l=this.clipMeshStates.get(c))==null?void 0:l.generation)===g&&this.clipAnalysis.set(c,h)}});L(Q,"SVGA clip producer aborted");const r=function*(){for(const c of A){yield;const h=this.clipMeshStates.get(c);if((h==null?void 0:h.status)!=="building"||h.generation!==g)continue;const l=n.get(c);if(this.getClipGeometryKind(c)==="empty"){this.publishClipMeshState(c,{status:"empty",generation:g,attempts:h.attempts+1});continue}if(!l)throw new Error(`SVGA clip worker omitted mesh after validation: ${c}`);const w=VC(l);if(w)throw new Error(`SVGA clip mesh invalid for ${c}: ${w}`);this.publishClipMeshState(c,{status:"valid",mesh:l,generation:g,attempts:h.attempts+1})}}.call(this);await Ig(r,{...I,signal:Q},"validation");return}catch(n){if(Q.aborted)throw mg(n)?n:QA("SVGA clip producer aborted");B.push({type:"clip-protocol-error",message:n instanceof Error?n.message:String(n)}),console.warn("[GiftStage:SVGA] clip mesh worker failed, using main thread",n)}const a=OA({maxBudgetMs:Math.max(1,(E=I.frameBudgetMs)!=null?E:8)});let o=0,s=null;for(const n of A){L(Q,"SVGA clip producer aborted");const r=this.clipMeshStates.get(n);if(!((r==null?void 0:r.status)!=="building"||r.generation!==g)){try{const c={signal:Q,profile:I.profile,frameBudgetMs:I.frameBudgetMs,checkActive:()=>L(Q)},h=await Ig(UC(n),c,"clip-prepare"),l=await Ig(gE(h,!n.trim()),c,"clip-prepare");if(((e=this.clipMeshStates.get(n))==null?void 0:e.generation)!==g)continue;if(this.clipAnalysis.set(n,l),l.kind==="empty"){this.publishClipMeshState(n,{status:"empty",generation:g,attempts:r.attempts+1});continue}const w=I.profile?I.profile.measure("clip-prepare",()=>ZC(h)):ZC(h),D=w?await Ig(UB(w),c,"validation"):"triangulation produced no mesh";if(!w||D)throw new Error(D||"triangulation produced no mesh");if(L(Q),((i=this.clipMeshStates.get(n))==null?void 0:i.generation)!==g)continue;this.publishClipMeshState(n,{status:"valid",mesh:w,generation:g,attempts:r.attempts+1})}catch(c){if(Q.aborted)throw QA("SVGA clip producer aborted");if(((t=this.clipMeshStates.get(n))==null?void 0:t.generation)!==g)continue;const h=c instanceof Error?c.message:String(c);this.publishClipMeshState(n,{status:"invalid",reason:h,generation:g,attempts:r.attempts+1}),B.push({type:"clip-mesh-invalid",message:`${n}: ${h}`}),s!=null||(s=new Error(`SVGA clip mesh invalid for ${n}: ${h}`))}o++,o<A.length&&a.shouldYield()&&(await a.yield(),L(Q,"SVGA clip producer aborted"))}}if(this.emitClipProducerDiagnosticsAfterTerminal(A,g,B),s)throw s;A.length>0&&console.info(`[GiftStage:SVGA] clip mesh main prewarm paths=${A.length} built=${o}`)}failClipMeshProducer(A,g,I,B=[]){if(this.clipMeshDestroyed)return;const Q=I instanceof Error?I.message:String(I),E=[];for(const e of A){const i=this.clipMeshStates.get(e);(i==null?void 0:i.status)!=="building"||i.generation!==g||(this.publishClipMeshState(e,{status:"invalid",reason:Q,generation:g,attempts:i.attempts+1}),E.push(e))}for(const e of E)B.push({type:"clip-mesh-invalid",message:`${e}: ${Q}`});this.emitClipProducerDiagnosticsAfterTerminal(A,g,B)}emitClipProducerDiagnosticsAfterTerminal(A,g,I){if(this.clipMeshDestroyed){I.length=0;return}if(A.some(Q=>{const E=this.clipMeshStates.get(Q);return(E==null?void 0:E.status)==="building"&&E.generation===g}))throw new Error(`SVGA clip producer generation ${g} emitted diagnostics before terminalization`);for(const Q of I.splice(0))this.emitRuntimeDiagnostic(Q)}publishClipMeshState(A,g){if(this.clipMeshDestroyed)return;const I=this.clipMeshStates.get(A);I&&g.generation<I.generation||(this.clipMeshStates.set(A,g),g.status==="valid"?this.clipMeshCache.set(A,g.mesh):g.status==="empty"?this.clipMeshCache.set(A,null):this.clipMeshCache.delete(A),this.entityClipMeshArrayCache=new WeakMap,this.entityFrameClipModeCache=new WeakMap,g.status!=="building"&&this.settleClipMeshStateWaiters(A,g))}async waitForClipMeshPaths(A,g){await Promise.all(A.map(I=>this.waitForClipMeshPath(I,g)))}waitForClipMeshPath(A,g){if(this.clipMeshDestroyed)return Promise.reject(QA("SVGA renderer destroyed during clip prewarm"));const I=this.clipMeshStates.get(A);return(I==null?void 0:I.status)==="valid"||(I==null?void 0:I.status)==="empty"?Promise.resolve():(I==null?void 0:I.status)==="invalid"?Promise.reject(new Error(`SVGA clip mesh invalid for ${A}: ${I.reason}`)):g!=null&&g.aborted?Promise.reject(QA("SVGA clip prewarm aborted")):new Promise((B,Q)=>{const E={resolve:B,reject:Q,signal:g};let e=this.clipMeshStateWaiters.get(A);e||(e=new Set,this.clipMeshStateWaiters.set(A,e)),E.onAbort=()=>{e.delete(E),e.size===0&&this.clipMeshStateWaiters.delete(A),Q(QA("SVGA clip prewarm aborted"))},e.add(E),g==null||g.addEventListener("abort",E.onAbort,{once:!0})})}settleClipMeshStateWaiters(A,g){const I=this.clipMeshStateWaiters.get(A);if(I){this.clipMeshStateWaiters.delete(A);for(const B of I)B.signal&&B.onAbort&&B.signal.removeEventListener("abort",B.onAbort),g.status==="invalid"?B.reject(new Error(`SVGA clip mesh invalid for ${A}: ${g.reason}`)):B.resolve()}}queueClipMeshBuild(A){if(this.clipMeshDestroyed)return;const g=this.clipMeshStates.get(A);!A||(g==null?void 0:g.status)==="valid"||(g==null?void 0:g.status)==="empty"||(g==null?void 0:g.status)==="building"||(g==null?void 0:g.status)==="invalid"||this.pendingClipMeshPaths.has(A)||(this.pendingClipMeshPaths.add(A),this.scheduleClipMeshBuildFlush())}scheduleClipMeshBuildFlush(){if(this.clipMeshDestroyed||this.clipMeshBuildInFlight)return;this.clipMeshBuildInFlight=!0,(typeof queueMicrotask=="function"?queueMicrotask:g=>setTimeout(g,0))(()=>{this.flushPendingClipMeshBuilds()})}async flushPendingClipMeshBuilds(){if(this.clipMeshDestroyed){this.pendingClipMeshPaths.clear(),this.clipMeshBuildInFlight=!1;return}const A=Array.from(this.pendingClipMeshPaths);if(this.pendingClipMeshPaths.clear(),A.length===0){this.clipMeshBuildInFlight=!1;return}try{await this.buildMissingClipMeshes(A)}catch(g){console.warn("[GiftStage:SVGA] deferred clip mesh build failed",g)}finally{if(this.clipMeshBuildInFlight=!1,this.clipMeshDestroyed){this.pendingClipMeshPaths.clear();return}this.pendingClipMeshPaths.size>0&&this.scheduleClipMeshBuildFlush(),this.notifyClipMeshReady()}}async hydrateClipMeshesCooperative(A,g={}){const I=function*(){for(const[B,Q]of A!=null?A:[]){if(yield,this.clipMeshDestroyed)throw QA("SVGA renderer destroyed");!Q||this.clipMeshStates.has(B)||(yield*UB(Q))==null&&(this.clipMeshStates.has(B)||this.publishClipMeshState(B,{status:"valid",mesh:Q,generation:++this.clipMeshGeneration,attempts:1}))}}.call(this);await Ig(I,g,"validation")}hydrateClipMeshes(A){if(!(!A||A.size===0))for(const[g,I]of A)I!=null&&I.vertices&&I.indices&&!this.clipMeshStates.has(g)&&VC(I)==null&&this.publishClipMeshState(g,{status:"valid",mesh:I,generation:++this.clipMeshGeneration,attempts:1})}snapshotClipMeshes(A){const g=new Map;for(const I of A.spriteTable.clipPaths){if(!I||g.has(I))continue;const B=this.clipMeshCache.get(I);B!=null&&B.vertices&&B.indices&&g.set(I,{vertices:new Float32Array(B.vertices),indices:new Uint32Array(B.indices)})}return g}canUseTimelinePath(A,g,I){var B;const Q=g.videoEntity,E=g.svgaFrameTableState,e=E==null?void 0:E.binding;if(!Q||!e||e.backend!==A.type||g.options.svgaFrameEvaluation==="cpu"||g.motionTrackBinding!=null&&A.type!=="webgpu"||(B=g.svgaSlotTextures)!=null&&B.size)return!1;const i=E.renderInfo.selectedPath;return I?i===I:i==="gpu-direct"||i==="gpu-hybrid"}resolveTimelineSlotState(A,g,I,B){var Q,E,e,i,t,a,o,s,n;const r=A.videoEntity,c=A.motionTrackBinding!=null,h=Fg(A,r.params.viewBoxWidth,r.params.viewBoxHeight,this.layoutScratch,c);if(c){const m=XA(A),H=A.width*A.scale,v=A.height*A.scale,j=m==="cover"?H:Math.min(h.width,H),T=m==="cover"?v:Math.min(h.height,v),b=-H/2+(m==="cover"?0:h.offsetX),X=-v/2+(m==="cover"?0:h.offsetY),Z=this.timelineSlotStateScratch;return Z[0]=h.scaleX,Z[1]=0,Z[2]=0,Z[3]=h.scaleY,Z[4]=h.offsetX-A.width*A.scale/2,Z[5]=h.offsetY-A.height*A.scale/2,Z[6]=1,Z[7]=g,Z[8]=(Q=B==null?void 0:B.x0)!=null?Q:b,Z[9]=(E=B==null?void 0:B.y0)!=null?E:X,Z[10]=(e=B==null?void 0:B.x1)!=null?e:b+j,Z[11]=(i=B==null?void 0:B.y1)!=null?i:X+T,Z[12]=1,Z[13]=I,Z}const l=XA(A),w=A.width*rg(A),D=A.height*cg(A),y=l==="cover"?w:Math.min(h.width,w),R=l==="cover"?D:Math.min(h.height,D),F=l==="cover"?A.x:A.x+h.offsetX,d=l==="cover"?A.y:A.y+h.offsetY;Sg(A,F,d,y,R,this.slotScissor);const f=(t=A.rotation)!=null?t:0,u=Math.cos(f),G=Math.sin(f),S=vB(A,this.timelineOriginScratch),M=A.x+h.offsetX,N=A.y+h.offsetY,U=M-S.x,p=N-S.y,k=this.timelineSlotStateScratch;return k[0]=u*h.scaleX,k[1]=G*h.scaleX,k[2]=-G*h.scaleY,k[3]=u*h.scaleY,k[4]=S.x+u*U-G*p,k[5]=S.y+G*U+u*p,k[6]=A.opacity,k[7]=g,k[8]=(a=B==null?void 0:B.x0)!=null?a:Math.floor(this.slotScissor.x),k[9]=(o=B==null?void 0:B.y0)!=null?o:Math.floor(this.slotScissor.y),k[10]=(s=B==null?void 0:B.x1)!=null?s:Math.ceil(this.slotScissor.x+this.slotScissor.w),k[11]=(n=B==null?void 0:B.y1)!=null?n:Math.ceil(this.slotScissor.y+this.slotScissor.h),k[12]=1,k[13]=I,k}resolveCachedTimelineSlotState(A,g){const I=this.timelineSlotStateCache.get(A);if((I==null?void 0:I.frame)===g)return I.state;const B=this.resolveTimelineSlotState(A,g,0).slice();return this.timelineSlotStateCache.set(A,{frame:g,state:B}),B}drawTimelineRange(A,g,I,B,Q,E,e,i="none",t,a,o=-1){var s;if(!this.canUseTimelinePath(A,g)||Q<1)return!1;const n=g.videoEntity,r=g.svgaFrameTableState,c=r.binding;this.ensureInstancedQuadBuffers(A);const h=this.timelineDrawCommand;h.vertexBuffer=this.instancedQuadVB,h.indexBuffer=this.instancedQuadIB,h.instanceCount=Q*((s=a==null?void 0:a.slotCount)!=null?s:1),h.instanceData=void 0,h.svgaFrameTableSlotStates=a==null?void 0:a.states,h.svgaFrameTableSlotStateCount=a==null?void 0:a.slotCount,h.svgaFrameTableSpritesPerSlot=a==null?void 0:a.spritesPerSlot,h.svgaFrameTableSlotStateUploadId=a==null?void 0:a.uploadId,h.stencil=i,h.svgaFrameTable=c,h.svgaFrameIndex=I,h.svgaSpriteBase=B,h.svgaFrameTableFrameCount=n.spriteTable.frameCount,h.svgaFrameTableSpriteCount=n.spriteTable.spriteCount,h.svgaFrameTableFrameIndex=I,h.svgaFrameTableSpriteBase=B,h.svgaFrameTableAtlasPage=o,h.svgaFrameTableSlotState=this.resolveTimelineSlotState(g,I,B,t),h.svgaSlotState=h.svgaFrameTableSlotState;const l=g.motionTrackBinding;h.motionTrackBuffer=l==null?void 0:l.buffer,h.motionTrackGlobalsBuffer=l==null?void 0:l.globalsBuffer,h.motionTrackSampleCount=l==null?void 0:l.sampleCount,h.motionTrackSampleIntervalMs=l==null?void 0:l.sampleIntervalMs,h.motionTrackTimeMs=l==null?void 0:l.currentTimeMs,h.motionTrackIndex=l==null?void 0:l.trackIndex,this.timelineTexturesScratch[0]=E,this.timelineTexturesScratch.length=1,this.timelineUniformsScratch.u_projection=e;const w=this.submitBackendDraw(A,h);return h.svgaFrameTableSlotStates=void 0,h.svgaFrameTableSlotStateCount=void 0,h.svgaFrameTableSpritesPerSlot=void 0,h.svgaFrameTableSlotStateUploadId=void 0,r.frameIndex=I,w}drawTimelineSlot(A,g,I){var B,Q;const E=g.videoEntity;if(!E||!this.canUseTimelinePath(A,g,"gpu-direct"))return!1;const e=this.resolveRenderableFrame(g,E);if(e==null)return!1;const i=(B=E.atlasTextureHandles)!=null&&B.length?E.atlasTextureHandles:E.atlasTextureHandle?[E.atlasTextureHandle]:[];let t=!1;for(const a of(Q=E.svgaTimelineDrawRuns)!=null?Q:[]){const o=i[a.textureIndex];if(!o)continue;let s=a.spriteBase,n=a.spriteCount;for(;n>0;){const r=Math.min(zA,n);if(!this.drawTimelineRange(A,g,e,s,r,o,I,"none",void 0,void 0,a.textureIndex))return!1;t=!0,s+=r,n-=r}}return A.resetScissor(),t}getClipMeshByIndex(A,g){if(g<0)return null;const I=A.spriteTable;let B=this.entityClipMeshArrayCache.get(A);(!B||B.length!==I.clipPaths.length)&&(B=new Array(I.clipPaths.length),this.entityClipMeshArrayCache.set(A,B));const Q=B[g];if(Q!==void 0)return Q;const E=I.clipPaths[g];if(!E)return null;if(this.getClipGeometryKind(E)==="empty")return this.clipMeshStates.has(E)||this.publishClipMeshState(E,{status:"empty",generation:++this.clipMeshGeneration,attempts:0}),B[g]=null,null;const e=this.clipMeshStates.get(E);if(!e){this.queueClipMeshBuild(E);return}if(e.status!=="building")return e.status==="invalid"?this.handleInvalidClipMesh(A,E,e):e.status==="empty"?(B[g]=null,null):(B[g]=e.mesh,e.mesh)}handleInvalidClipMesh(A,g,I){var B;const Q=(B=A.svgaFrameTableState)==null?void 0:B.renderInfo.selectedPath;return(Q==="gpu-direct"||Q==="gpu-hybrid")&&this.rejectFastPathFrame(A),console.error(`[GiftStage:SVGA] invalid clip mesh treated as an empty CPU clip: ${g}`,I.reason),null}drawTimelineMesh(A,g,I,B,Q,E,e,i,t,a,o){var s,n;if(!this.canUseTimelinePath(A,g,"gpu-hybrid"))return!1;const r=g.videoEntity,c=(s=g.svgaFrameTableState)==null?void 0:s.binding;if(!c)return!1;const h=i==="svga-frame-table-shape-premul"?this.timelineShapeDrawCommand:this.timelineClipDrawCommand;h.vertexBuffer=Q,h.indexBuffer=E,h.indexCount=e,h.instanceCount=(n=o==null?void 0:o.slotCount)!=null?n:1,h.instanceData=void 0,h.svgaFrameTableSlotStates=o==null?void 0:o.states,h.svgaFrameTableSlotStateCount=o==null?void 0:o.slotCount,h.svgaFrameTableSpritesPerSlot=o==null?void 0:o.spritesPerSlot,h.svgaFrameTableSlotStateUploadId=o==null?void 0:o.uploadId,h.stencil=t,h.svgaFrameTable=c,h.svgaFrameTableFrameCount=r.spriteTable.frameCount,h.svgaFrameTableSpriteCount=r.spriteTable.spriteCount,h.svgaFrameTableFrameIndex=I,h.svgaFrameTableSpriteBase=B,h.svgaFrameTableSlotState=this.resolveTimelineSlotState(g,I,B),h.svgaSlotState=h.svgaFrameTableSlotState;const l=g.motionTrackBinding;h.motionTrackBuffer=l==null?void 0:l.buffer,h.motionTrackGlobalsBuffer=l==null?void 0:l.globalsBuffer,h.motionTrackSampleCount=l==null?void 0:l.sampleCount,h.motionTrackSampleIntervalMs=l==null?void 0:l.sampleIntervalMs,h.motionTrackTimeMs=l==null?void 0:l.currentTimeMs,h.motionTrackIndex=l==null?void 0:l.trackIndex,this.timelineTexturesScratch[0]=this.getWhiteTexture(A),this.timelineTexturesScratch.length=1,this.timelineUniformsScratch.u_projection=a;const w=this.submitBackendDraw(A,h);return h.svgaFrameTableSlotStates=void 0,h.svgaFrameTableSlotStateCount=void 0,h.svgaFrameTableSpritesPerSlot=void 0,h.svgaFrameTableSlotStateUploadId=void 0,g.svgaFrameTableState.frameIndex=I,w}flushHybridScheduledSlots(A,g,I){var B,Q,E;const e=g[0],i=e==null?void 0:e.videoEntity;if(!e||!i)return;const t=this.prepareDisjointHybridSlots(g,i);if(g.length>=2&&t==null&&this.prepareDisjointHybridSlots(g,i,!0)!=null){const n=i.svgaHybridCommandTable,r=new Map;for(let c=0;c<g.length;c++){const h=this.timelineBatchFrameScratch[c],l=(B=n.frameScheduleIds[h])!=null?B:-1;let w=r.get(l);w||(w=[],r.set(l,w)),w.push(g[c])}if(r.size>1){for(const c of r.values())this.flushHybridScheduledSlots(A,c,I);return}}if(g.length<2||t==null){for(const s of g)s.svgaDrawBatchMode="hybrid-scheduled",s.svgaDrawCompatibleInstanceCount=1,this.drawHybridScheduledSlot(A,s,I)||this.rejectFastPathFrame(i);return}const a=this.timelineBatchDataScratch;for(let s=0;s<g.length;s++){const n=g[s],r=this.timelineBatchFrameScratch[s],c=this.resolveTimelineSlotState(n,r,0),h=s*tI;a.set(c.subarray(0,zB),h),a[h+Ug.atlasPage]=-1,a[h+Ug.motionTrackPlusOne]=((E=(Q=n.motionTrackBinding)==null?void 0:Q.trackIndex)!=null?E:-1)+1,n.svgaFrameTableState.frameIndex=r,n.svgaDrawBatchMode="hybrid-scheduled",n.svgaDrawCompatibleInstanceCount=g.length}const o={states:a,slotCount:g.length,spritesPerSlot:1,uploadId:++this.timelineSlotStateUploadId};this.drawHybridScheduledOperations(A,e,t,I,o)||this.rejectFastPathFrame(i)}prepareDisjointHybridSlots(A,g,I=!1){var B;if(A.length<2||A.length*tI>this.timelineBatchDataScratch.length)return null;const Q=this.sharedSlotLayerWorksScratch;Q.length=0;const E=g.svgaHybridCommandTable;if(!E)return null;let e=-1,i=-1;for(let t=0;t<A.length;t++){const a=A[t];if(a.motionTrackBinding||a.videoEntity!==g)return Q.length=0,null;const o=this.resolveRenderableFrame(a,g),s=o==null?-1:(B=E.frameScheduleIds[o])!=null?B:-1;if(o==null||s<0||!I&&i>=0&&s!==i)return Q.length=0,null;e<0&&(e=o),i=s,this.timelineBatchFrameScratch[t]=o;const n=XA(a),r=Fg(a,g.params.viewBoxWidth,g.params.viewBoxHeight,this.layoutScratch,!1),c=a.width*rg(a),h=a.height*cg(a),l=n==="cover"?c:Math.min(r.width,c),w=n==="cover"?h:Math.min(r.height,h),D=n==="cover"?a.x:a.x+r.offsetX,y=n==="cover"?a.y:a.y+r.offsetY;Sg(a,D,y,l,w,this.slotScissor),this.updateSlotClipBounds();let R=this.sharedSlotLayerWorkPool[t];R||(R={slot:a,renderFrame:o,sx:1,sy:1,offsetX:0,offsetY:0,clipX0:0,clipY0:0,clipX1:0,clipY1:0},this.sharedSlotLayerWorkPool[t]=R),R.slot=a,R.renderFrame=o,R.clipX0=this.slotClipX0,R.clipY0=this.slotClipY0,R.clipX1=this.slotClipX1,R.clipY1=this.slotClipY1;for(const F of Q)if(R.clipX1>F.clipX0&&R.clipX0<F.clipX1&&R.clipY1>F.clipY0&&R.clipY0<F.clipY1)return Q.length=0,null;Q.push(R)}return Q.length=0,e}drawHybridScheduledSlot(A,g,I){const B=g.videoEntity;if(!B)return!1;const Q=this.resolveRenderableFrame(g,B);return Q!=null?this.drawHybridScheduledOperations(A,g,Q,I):!1}drawHybridScheduledOperations(A,g,I,B,Q){var E,e,i,t,a,o,s,n,r,c,h,l,w,D,y;const R=g.videoEntity,F=R==null?void 0:R.svgaHybridCommandTable;if(!R||!F)return!1;const d=(E=F.runFrameOffsets[I])!=null?E:0,f=(e=F.runFrameOffsets[I+1])!=null?e:d,u=(i=R.atlasTextureHandles)!=null&&i.length?R.atlasTextureHandles:R.atlasTextureHandle?[R.atlasTextureHandle]:[];for(let N=d;N<f;N++){const U=(t=F.runOperationStarts[N])!=null?t:0,p=F.runTypes[N],k=U*3;if(p===jg||p===FB){const m=(a=F.meshReferences[k+1])!=null?a:-1,H=this.getClipMeshByIndex(R,m);if(!H||H.indices.length<3)return!1}else if(p===yB){const m=(o=F.meshReferences[k])!=null?o:-1,H=R.spriteTable.shapesTable[m],v=H?this.getShapeMesh(H):null;if(!v||v.indices.length<3)return!1}else if(p===rC||p===cC){const m=(s=F.meshReferences[k+2])!=null?s:-1;if(m<0||!u[m])return!1}}const G=(n=g.svgaFrameTableState)==null?void 0:n.binding,S=(G==null?void 0:G.backend)==="webgpu"?G.hybridSpriteMetadataBuffer:void 0,M=(G==null?void 0:G.backend)==="webgl2"?G.hybridSpriteMetadataTexture:void 0;this.timelineDrawCommand.svgaSpriteMetadata=S!=null?S:M,this.timelineDrawCommand.svgaSpriteMetadataBuffer=S,this.timelineDrawCommand.svgaSpriteMetadataTexture=M,this.timelineDrawCommand.svgaSpriteMetadataStrideFloats=ZI;try{Q||(g.svgaDrawBatchMode="hybrid-scheduled",g.svgaDrawCompatibleInstanceCount=1);for(let N=d;N<f;N++){const U=(r=F.runOperationStarts[N])!=null?r:0,p=F.runTypes[N],k=(c=F.runOperationCounts[N])!=null?c:1,m=(h=F.spriteIndices[U])!=null?h:0,H=U*3,v=(l=F.meshReferences[H])!=null?l:-1,j=(w=F.meshReferences[H+1])!=null?w:-1,T=(D=F.meshReferences[H+2])!=null?D:0;if(p===rC){const b=u[T],X=Math.max(1,Math.floor(zA/((y=Q==null?void 0:Q.slotCount)!=null?y:1)));for(let Z=0;Z<k;Z+=X){const EA=Math.min(X,k-Z);if(Q&&(Q.spritesPerSlot=EA),!b||!this.drawTimelineRange(A,g,I,U+Z,EA,b,B,"none",void 0,Q))return!1}continue}if(p===cC){const b=u[T];if(Q&&(Q.spritesPerSlot=1),!b||!this.drawTimelineRange(A,g,I,U,1,b,B,"test",void 0,Q))return!1}else if(p===yB){const b=R.spriteTable.shapesTable[v],X=b?this.getShapeMesh(b):null;if(!X||X.indices.length===0)return!1;const Z=this.ensureShapeMeshBuffers(A,X);if(Q&&(Q.spritesPerSlot=1),!this.drawTimelineMesh(A,g,I,m,Z.vertexBuf,Z.indexBuf,X.indices.length,"svga-frame-table-shape-premul",j>=0?"test":"none",B,Q))return!1}else if(p===jg||p===FB){const b=this.getClipMeshByIndex(R,j);if(!b||b.indices.length===0)return!1;const X=this.ensureClipMeshBuffers(A,b);if(Q&&(Q.spritesPerSlot=1),!this.drawTimelineMesh(A,g,I,m,X.vertexBuf,X.indexBuf,b.indices.length,"svga-frame-table-clip-mask",p===jg?"write":"clear",B,Q))return!1}}return!0}finally{this.timelineDrawCommand.svgaSpriteMetadata=void 0,this.timelineDrawCommand.svgaSpriteMetadataBuffer=void 0,this.timelineDrawCommand.svgaSpriteMetadataTexture=void 0,this.timelineDrawCommand.svgaSpriteMetadataStrideFloats=void 0,this.destroyed||A.resetScissor()}}flushGroup(A,g){var I,B,Q,E,e,i,t,a,o,s;if(g.length===0)return;const n=this.getProjection();if((A.type==="webgl2"||A.type==="webgpu")&&this.tryFlushDisjointSharedEntityLayers(A,g,n))return;this.spriteWorkCursor=0;const r=this.batchSpritesScratch;r.length=0;let c=null;this.slotScissorActive=!1;for(const h of g){const l=h.videoEntity,w=this.resolveRenderableFrame(h,l);if(w==null)continue;const D=l.params.viewBoxWidth,y=l.params.viewBoxHeight,R=XA(h),F=this.canUseGpuMotion(h),d=Fg(h,D,y,this.layoutScratch,F),f=d.scaleX,u=d.scaleY,G=h.width*rg(h),S=h.height*cg(h),M=R==="cover"?G:Math.min(d.width,G),N=R==="cover"?S:Math.min(d.height,S),U=R==="cover"?h.x:h.x+d.offsetX,p=R==="cover"?h.y:h.y+d.offsetY;Sg(h,U,p,M,N,this.slotScissor),this.updateSlotClipBounds();const k=(A.type==="webgl2"||A.type==="webgpu")&&!l.spriteTable.hasAnyShapes&&!((I=h.svgaSlotTextures)!=null&&I.size),m=!k&&R!=="cover"&&!h.rotation&&!((B=h.svgaSlotTextures)!=null&&B.size)&&l.spriteTable.allFramesInsideViewBox===!0;if(k||m)this.slotScissorActive&&(r.length>0&&(this.drawBatch(A,r,c,n),r.length=0,c=null),A.resetScissor(),this.slotScissorActive=!1);else{r.length>0&&(this.drawBatch(A,r,c,n),r.length=0,c=null);const b=this.slotScissor;A.setScissor(b.x,b.y,b.w,b.h),this.slotScissorActive=!0}const H=(Q=l.atlasTextureHandles)!=null&&Q.length?l.atlasTextureHandles:(E=l.atlasTextureHandle)!=null?E:null,v=(e=h.svgaSlotTextures)!=null?e:null,j=h.state==="stopped"&&!l.spriteTable.hasAnyShapes&&this.getFrameClipMode(l,w)===0;if(!j)h.svgaStaticBatchCache&&(h.svgaStaticBatchCache=null);else if(this.staticBatchCacheMatches(h.svgaStaticBatchCache,h,l,H,v,f,u,d.offsetX,d.offsetY,w)){c=this.drawFromStaticBatchCache(A,h.svgaStaticBatchCache,r,c,n);continue}let T=j?[]:null;for(let b=0;b<l.spriteTable.spriteCount;b++){const X=l.spriteTable,Z=(b*X.frameCount+w)*II;if(X.frameData[Z+8]*h.opacity<.05)continue;const EA=(i=X.clipPathIndex[b*X.frameCount+w])!=null?i:-1,UA=EA>=0?X.clipPaths[EA]:void 0;if(UA&&this.getClipGeometryKind(UA)==="empty")continue;const FA=lt(X,b,w),cA=!!FA&&FA.length>0,IA=this.acquireSpriteWork(h,b,X.frameData,Z,f,u,d.offsetX,d.offsetY),Bg=(t=X.imageKeys[b])!=null?t:"",CA=this.resolveSpriteTextureInto(h,Bg,IA);if(!CA&&!cA){this.spriteWorkCursor--;continue}const V=this.getClipMeshForSprite(l,b,w);if(EA>=0&&V===void 0)throw this.spriteWorkCursor--,T=null,new Error("SVGA clip mesh is still building; discard the complete frame");if(EA>=0&&V===null){this.spriteWorkCursor--,T=null;continue}if(cA){T=null,r.length>0&&(this.drawBatch(A,r,c,n),r.length=0,c=null),V&&V.indices.length>0?(this.drawShapeFrame(A,IA,FA,V,n),CA&&this.drawClippedSprite(A,IA,V,n)):(this.drawShapeFrame(A,IA,FA,V,n),CA&&this.drawSingleSprite(A,IA,n));continue}V&&V.indices.length>0?(T=null,r.length>0&&(this.drawBatch(A,r,c,n),r.length=0,c=null),this.drawClippedSprite(A,IA,V,n)):IA.override?(T&&T.push(this.captureStaticBatchCacheEntry(IA,!0)),r.length>0&&(this.drawBatch(A,r,c,n),r.length=0,c=null),this.drawSingleSprite(A,IA,n)):(T&&T.push(this.captureStaticBatchCacheEntry(IA,!1)),c&&c.id!==IA.handle.id&&(this.drawBatch(A,r,c,n),r.length=0,c=null),r.push(IA),c=IA.handle,r.length>=zA&&(this.drawBatch(A,r,c,n),r.length=0,c=null))}j&&(h.svgaStaticBatchCache=T?{entries:T,entity:l,atlasHandlesDep:H,svgaSlotTextures:v,currentFrame:w,opacity:h.opacity,x:h.x,y:h.y,width:h.width,height:h.height,scale:h.scale,motionScaleX:(a=h.motionScaleX)!=null?a:1,motionScaleY:(o=h.motionScaleY)!=null?o:1,rotation:(s=h.rotation)!=null?s:0,sx:f,sy:u,offsetX:d.offsetX,offsetY:d.offsetY}:null)}r.length>0&&this.drawBatch(A,r,c,n),r.length=0,this.releaseSpriteWorks(),this.slotScissorActive=!1,A.resetScissor()}tryFlushDisjointSharedEntityLayers(A,g,I){var B,Q,E,e,i;if(g.length<2)return!1;const t=(B=g[0])==null?void 0:B.videoEntity;if(!t||t.spriteTable.hasAnyShapes)return!1;const a=this.sharedSlotLayerWorksScratch;a.length=0;for(let r=0;r<g.length;r++){const c=g[r];if(c.videoEntity!==t||(Q=c.svgaSlotTextures)!=null&&Q.size)return a.length=0,!1;const h=this.resolveRenderableFrame(c,t);if(h==null)return a.length=0,!1;const l=XA(c),w=Fg(c,t.params.viewBoxWidth,t.params.viewBoxHeight,this.layoutScratch,this.canUseGpuMotion(c)),D=c.width*rg(c),y=c.height*cg(c),R=l==="cover"?D:Math.min(w.width,D),F=l==="cover"?y:Math.min(w.height,y),d=l==="cover"?c.x:c.x+w.offsetX,f=l==="cover"?c.y:c.y+w.offsetY;Sg(c,d,f,R,F,this.slotScissor),this.updateSlotClipBounds();let u=this.sharedSlotLayerWorkPool[r];u||(u={slot:c,renderFrame:h,sx:1,sy:1,offsetX:0,offsetY:0,clipX0:0,clipY0:0,clipX1:0,clipY1:0},this.sharedSlotLayerWorkPool[r]=u),u.slot=c,u.renderFrame=h,u.sx=w.scaleX,u.sy=w.scaleY,u.offsetX=w.offsetX,u.offsetY=w.offsetY,u.clipX0=this.slotClipX0,u.clipY0=this.slotClipY0,u.clipX1=this.slotClipX1,u.clipY1=this.slotClipY1;for(const G of a)if(u.clipX1>G.clipX0&&u.clipX0<G.clipX1&&u.clipY1>G.clipY0&&u.clipY0<G.clipY1)return a.length=0,!1;a.push(u)}this.spriteWorkCursor=0,this.slotScissorActive=!1;const o=this.batchSpritesScratch;o.length=0;let s=null;const n=t.spriteTable;for(let r=0;r<n.spriteCount;r++){this.resetClipLayerBatches();for(const c of a){const h=(r*n.frameCount+c.renderFrame)*II;if(n.frameData[h+8]*c.slot.opacity<.05)continue;const l=(E=n.clipPathIndex[r*n.frameCount+c.renderFrame])!=null?E:-1,w=l>=0?n.clipPaths[l]:void 0;if(w&&this.getClipGeometryKind(w)==="empty")continue;this.slotClipX0=c.clipX0,this.slotClipY0=c.clipY0,this.slotClipX1=c.clipX1,this.slotClipY1=c.clipY1;const D=this.acquireSpriteWork(c.slot,r,n.frameData,h,c.sx,c.sy,c.offsetX,c.offsetY),y=(e=n.imageKeys[r])!=null?e:"";if(!this.resolveSpriteTextureInto(c.slot,y,D)){this.spriteWorkCursor--;continue}const R=this.getClipMeshForSprite(t,r,c.renderFrame);if(l>=0&&R===void 0)throw this.spriteWorkCursor--,new Error("SVGA clip mesh is still building; discard the complete frame");if(l>=0&&R===null){this.spriteWorkCursor--;continue}if(!R||R.indices.length===0){s&&s.id!==D.handle.id&&(this.drawBatch(A,o,s,I),o.length=0),o.push(D),s=D.handle,o.length>=zA&&(this.drawBatch(A,o,s,I),o.length=0,s=null);continue}const F=this.getClipRect(R),d=this.resolveClipTransform(D);if(F&&((i=D.slot.rotation)!=null?i:0)===0&&nB(d.a,d.b,d.c,d.d)){this.intersectWorkClipRect(D,F,d.a,d.d,d.tx,d.ty)&&(s&&s.id!==D.handle.id&&(this.drawBatch(A,o,s,I),o.length=0),o.push(D),s=D.handle,o.length>=zA&&(this.drawBatch(A,o,s,I),o.length=0,s=null));continue}this.acquireClipLayerBatch(R,D.handle).works.push(D)}if(this.clipLayerBatchesScratch.length>0){o.length>0&&(this.drawBatch(A,o,s,I),o.length=0,s=null);for(const c of this.clipLayerBatchesScratch)if(c.works.length<2||!this.drawBatchedClipLayer(A,c.works,c.mesh,c.texture,I))for(const h of c.works)this.drawClippedSprite(A,h,c.mesh,I)}}return o.length>0&&this.drawBatch(A,o,s,I),o.length=0,this.resetClipLayerBatches(),a.length=0,this.releaseSpriteWorks(),A.resetScissor(),!0}resetClipLayerBatches(){for(const A of this.clipLayerBatchesScratch)A.works.length=0;this.clipLayerBatchesScratch.length=0}acquireClipLayerBatch(A,g){for(const Q of this.clipLayerBatchesScratch)if(Q.mesh===A&&Q.texture.id===g.id)return Q;const I=this.clipLayerBatchesScratch.length;let B=this.clipLayerBatchPool[I];return B||(B={mesh:A,texture:g,works:[]},this.clipLayerBatchPool[I]=B),B.mesh=A,B.texture=g,B.works.length=0,this.clipLayerBatchesScratch.push(B),B}resolveClipTransform(A){const{slot:g,sx:I,sy:B,offsetX:Q,offsetY:E,a:e,b:i,c:t,d:a,tx:o,ty:s}=A;return this.rotateTransform(g,e*I,i*B,t*I,a*B,o*I+g.x+Q,s*B+g.y+E)}intersectWorkClipRect(A,g,I,B,Q,E){const e=Math.max(A.clipX0,Math.floor(I*g.x+Q)),i=Math.max(A.clipY0,Math.floor(B*g.y+E)),t=Math.min(A.clipX1,Math.ceil(I*(g.x+g.w)+Q)),a=Math.min(A.clipY1,Math.ceil(B*(g.y+g.h)+E));return t<=e||a<=i?!1:(A.clipX0=e,A.clipY0=i,A.clipX1=t,A.clipY1=a,!0)}drawBatchedClipLayer(A,g,I,B,Q){const E=g.length;if(E<2||E>zA)return!1;const e=I.indices.length;if(I.vertices.length<6||e<3)return!1;const i=E*6;if(this.clipMaskBatchTransformsScratch.length<i){let y=Math.max(64,this.clipMaskBatchTransformsScratch.length);for(;y<i;)y*=2;this.clipMaskBatchTransformsScratch=new Float32Array(y)}const t=this.clipMaskBatchTransformsScratch,a=this.getClipMeshBounds(I);for(let y=0;y<E;y++){const R=g[y],F=this.resolveClipTransform(R),d=y*6;t[d]=F.a,t[d+1]=F.b,t[d+2]=F.c,t[d+3]=F.d,t[d+4]=F.tx,t[d+5]=F.ty;let f=1/0,u=1/0,G=-1/0,S=-1/0;for(let M=0;M<4;M++){const N=M&1?a.x1:a.x0,U=M&2?a.y1:a.y0,p=F.a*N+F.c*U+F.tx,k=F.b*N+F.d*U+F.ty;p<f&&(f=p),k<u&&(u=k),p>G&&(G=p),k>S&&(S=k)}if(f<R.clipX0||u<R.clipY0||G>R.clipX1||S>R.clipY1)return!1}const o=g.every(y=>this.canUseTimelinePath(A,y.slot,"gpu-hybrid")&&!y.override),s=o?this.prepareTimelineWorks(A,g,E,B,Q,"test"):null;if(o&&!s)return!1;let n=null;if(!o){this.ensureInstancedQuadBuffers(A);const y=this.instancedFrameDataScratch,R=A.type==="webgl2"?"webgl2":"webgpu";for(let F=0;F<E;F++)this.packInstancedFrameData(y,F,g[F],R);n=this.clipInstancedDrawCommand,n.vertexBuffer=this.instancedQuadVB,n.indexBuffer=this.instancedQuadIB,n.instanceCount=E,n.instanceData=y,this.clipInstancedTexturesScratch[0]=B,this.clipInstancedTexturesScratch.length=1,this.clipInstancedUniformsScratch.u_projection=Q}const r=this.ensureClipMeshBuffers(A,I),c=this.clipMaskInstancedDrawCommand;c.vertexBuffer=r.vertexBuf,c.indexBuffer=r.indexBuf,c.indexCount=e,c.instanceCount=E,c.instanceData=t,c.stencil="write",this.clipMaskInstancedUniformsScratch.u_projection=Q,this.requireBackendDraw(A,c,"batched stencil write");let h=!1,l;try{if(o){if(!this.submitPreparedTimelineWorks(A,s))throw new _g("batched timeline stencil test became unavailable after mask write")}else this.requireBackendDraw(A,n,"batched stencil test")}catch(y){h=!0,l=y}if(this.destroyed)throw l;let w=!1,D;try{c.stencil="clear",this.requireBackendDraw(A,c,"batched stencil clear")}catch(y){w=!0,D=y}if(h&&w)throw new AggregateError([l,D],"SVGA batched stencil test and clear both failed");if(h)throw l;if(w)throw D;return!0}acquireSpriteWork(A,g,I,B,Q,E,e,i){let t=this.spriteWorkPool[this.spriteWorkCursor];return t||(t={slot:A,spriteIndex:g,layoutW:0,layoutH:0,a:1,b:0,c:0,d:1,tx:0,ty:0,alpha:0,handle:null,rect:sB,override:null,sx:Q,sy:E,offsetX:e,offsetY:i,clipX0:0,clipY0:0,clipX1:0,clipY1:0,cachedRow:null,gpuMotion:!1},this.spriteWorkPool[this.spriteWorkCursor]=t),this.spriteWorkCursor++,t.slot=A,t.spriteIndex=g,t.layoutW=I[B],t.layoutH=I[B+1],t.a=I[B+2],t.b=I[B+3],t.c=I[B+4],t.d=I[B+5],t.tx=I[B+6],t.ty=I[B+7],t.alpha=I[B+8],t.sx=Q,t.sy=E,t.offsetX=e,t.offsetY=i,this.copyCurrentSlotClipToWork(t),t.cachedRow=null,t.gpuMotion=this.canUseGpuMotion(A),t}acquireCachedSpriteWork(A){let g=this.spriteWorkPool[this.spriteWorkCursor];return g||(g={slot:null,spriteIndex:-1,layoutW:0,layoutH:0,a:1,b:0,c:0,d:1,tx:0,ty:0,alpha:0,handle:A.handle,rect:sB,override:null,sx:1,sy:1,offsetX:0,offsetY:0,clipX0:0,clipY0:0,clipX1:0,clipY1:0,cachedRow:null,gpuMotion:!1},this.spriteWorkPool[this.spriteWorkCursor]=g),this.spriteWorkCursor++,g.handle=A.handle,g.cachedRow=A.row,this.copyCurrentSlotClipToWork(g),g}updateSlotClipBounds(){const A=this.slotScissor,g=Math.max(0,Math.min(this.canvasWidth,Math.floor(A.x))),I=Math.max(0,Math.min(this.canvasHeight,Math.floor(A.y)));this.slotClipX0=g,this.slotClipY0=I,this.slotClipX1=Math.max(g,Math.min(this.canvasWidth,Math.ceil(A.x+A.w))),this.slotClipY1=Math.max(I,Math.min(this.canvasHeight,Math.ceil(A.y+A.h)))}copyCurrentSlotClipToWork(A){A.clipX0=this.slotClipX0,A.clipY0=this.slotClipY0,A.clipX1=this.slotClipX1,A.clipY1=this.slotClipY1}releaseSpriteWorks(){for(let A=0;A<this.spriteWorkCursor;A++){const g=this.spriteWorkPool[A];g.slot=null,g.handle=null,g.rect=sB,g.override=null,g.cachedRow=null}this.spriteWorkCursor=0}staticBatchCacheMatches(A,g,I,B,Q,E,e,i,t,a){var o,s,n;return A?A.entity===I&&A.atlasHandlesDep===B&&A.svgaSlotTextures===Q&&A.currentFrame===a&&A.opacity===g.opacity&&A.x===g.x&&A.y===g.y&&A.width===g.width&&A.height===g.height&&A.scale===g.scale&&A.motionScaleX===((o=g.motionScaleX)!=null?o:1)&&A.motionScaleY===((s=g.motionScaleY)!=null?s:1)&&A.rotation===((n=g.rotation)!=null?n:0)&&A.sx===E&&A.sy===e&&A.offsetX===i&&A.offsetY===t:!1}captureStaticBatchCacheEntry(A,g){const I=this.staticBatchCacheRowScratch;return this.packFrameData(I,0,A),{row:I.slice(),handle:A.handle,isOverride:g}}drawFromStaticBatchCache(A,g,I,B,Q){for(const E of g.entries){const e=this.acquireCachedSpriteWork(E);if(E.isOverride){I.length>0&&(this.drawBatch(A,I,B,Q),I.length=0,B=null),this.drawSingleSprite(A,e,Q);continue}B&&B.id!==E.handle.id&&(this.drawBatch(A,I,B,Q),I.length=0,B=null),I.push(e),B=E.handle,I.length>=zA&&(this.drawBatch(A,I,B,Q),I.length=0,B=null)}return B}getProjection(){return this.projCache&&this.projCacheW===this.canvasWidth&&this.projCacheH===this.canvasHeight?this.projCache:(this.projCacheW=this.canvasWidth,this.projCacheH=this.canvasHeight,this.projCache=Kg(0,this.canvasWidth,this.canvasHeight,0,-1,1),this.projCache)}drawBatch(A,g,I,B){const Q=Math.min(g.length,zA);if(Q<1)return;if(A.type==="webgl2"||A.type==="webgpu"){if(this.tryDrawTimelineBatch(A,g,Q,I,B))return;this.drawBatchInstancedWebGL(A,g,Q,I,B);return}const E=this.pool.getFloat32(Q*gI);for(let w=0;w<Q;w++)this.packFrameData(E,w,g[w]);const e=Q*hI*fg,i=Q*mI,t=this.pool.getFloat32B(e),a=this.pool.getUint32(i),o=new Float32Array(E.buffer,0,Q*gI),s=new Float32Array(t.buffer,0,e),n=new Uint32Array(a.buffer,0,i);(!DI()||OB(o,s,n)===null)&&dB(o,s,n);const r=this.batchDrawCursor++,c=this.ensureVertexBuffer(A,r,s),h=this.ensureIndexBuffer(A,r,n),l=this.plainBatchDrawCommand;l.vertexBuffer=c,l.indexBuffer=h,l.indexCount=i,this.plainBatchTexturesScratch[0]=I,this.plainBatchTexturesScratch.length=1,this.plainBatchUniformsScratch.u_projection=B,this.requireBackendDraw(A,l,"CPU reference batch")}tryDrawTimelineBatch(A,g,I,B,Q){for(let i=0;i<I;i++){const t=g[i];if(t.cachedRow||t.override||t.gpuMotion||!this.canUseTimelinePath(A,t.slot,"gpu-hybrid"))return!1}const E=g[0];let e=!0;for(let i=0;i<I;i++){const t=g[i];if(t.slot!==E.slot||t.spriteIndex!==E.spriteIndex+i){e=!1;break}}if(e){const i=this.resolveRenderableFrame(E.slot,E.slot.videoEntity);return i==null?!1:this.drawTimelineRange(A,E.slot,i,E.spriteIndex,I,B,Q,"none",{x0:E.clipX0,y0:E.clipY0,x1:E.clipX1,y1:E.clipY1})}return this.drawTimelineWorks(A,g,I,B,Q)}drawTimelineWorks(A,g,I,B,Q,E="none"){const e=this.prepareTimelineWorks(A,g,I,B,Q,E);return e?this.submitPreparedTimelineWorks(A,e):!1}prepareTimelineWorks(A,g,I,B,Q,E){var e,i,t;if(I<1||I>zA)return null;const a=g[0],o=a.slot.videoEntity,s=(e=a.slot.svgaFrameTableState)==null?void 0:e.binding;if(!o||!s)return null;const n=this.timelineBatchDataScratch;for(let c=0;c<I;c++){const h=g[c];if(h.slot.videoEntity!==o||((i=h.slot.svgaFrameTableState)==null?void 0:i.binding)!==s||h.override||!this.canUseTimelinePath(A,h.slot,"gpu-hybrid"))return null;const l=this.resolveRenderableFrame(h.slot,o);if(l==null)return null;const w=this.resolveCachedTimelineSlotState(h.slot,l),D=c*tI;n.set(w.subarray(0,8),D),n[D+8]=h.clipX0,n[D+9]=h.clipY0,n[D+10]=h.clipX1,n[D+11]=h.clipY1,n[D+12]=1,n[D+Ug.metadataBase]=h.spriteIndex,n[D+Ug.atlasPage]=(t=h.rect.textureIndex)!=null?t:-1,n[D+Ug.motionTrackPlusOne]=1,h.slot.svgaFrameTableState.frameIndex=l}this.ensureInstancedQuadBuffers(A);const r=this.timelineDrawCommand;return r.vertexBuffer=this.instancedQuadVB,r.indexBuffer=this.instancedQuadIB,r.instanceCount=I,r.instanceData=n,r.stencil=E,r.svgaFrameTable=s,r.svgaFrameTableFrameCount=o.spriteTable.frameCount,r.svgaFrameTableSpriteCount=o.spriteTable.spriteCount,r.svgaFrameTableFrameIndex=a.slot.currentFrame,r.svgaFrameTableSpriteBase=0,r.svgaFrameTableSlotState=this.resolveTimelineSlotState(a.slot,a.slot.svgaFrameTableState.frameIndex,0),r.svgaSlotState=r.svgaFrameTableSlotState,r.motionTrackBuffer=void 0,r.motionTrackGlobalsBuffer=void 0,r.motionTrackSampleCount=void 0,r.motionTrackSampleIntervalMs=void 0,r.motionTrackTimeMs=void 0,r.motionTrackIndex=void 0,this.timelineTexturesScratch[0]=B,this.timelineTexturesScratch.length=1,this.timelineUniformsScratch.u_projection=Q,r}submitPreparedTimelineWorks(A,g){try{return this.submitBackendDraw(A,g)}finally{g.instanceData=void 0}}canUseGpuMotion(A){var g;const I=A.videoEntity,B=A.motionTrackBinding;if(!I||!B||I.spriteTable.hasAnyShapes||I.spriteTable.allFramesInsideViewBox!==!0||(g=A.svgaSlotTextures)!=null&&g.size||A.options.objectFit==="cover"||A.options.transformOrigin)return!1;const Q=this.gpuMotionEntityEligibilityCache.get(I);if(Q!=null)return Q;for(const E of I.spriteTable.clipPathIndex)if(E>=0)return this.gpuMotionEntityEligibilityCache.set(I,!1),!1;return this.gpuMotionEntityEligibilityCache.set(I,!0),!0}drawBatchInstancedWebGL(A,g,I,B,Q){this.ensureInstancedQuadBuffers(A);const E=this.instancedFrameDataScratch,e=A.type==="webgl2"?"webgl2":"webgpu";for(let s=0;s<I;s++)this.packInstancedFrameData(E,s,g[s],e);const i=this.plainInstancedDrawCommand,t=g[0].gpuMotion?g[0].slot.motionTrackBinding:null;i.shader=A.type==="webgpu"&&t?"svga-motion-instanced-premul":"svga-instanced-premul",i.vertexBuffer=this.instancedQuadVB,i.indexBuffer=this.instancedQuadIB,i.instanceCount=I,i.instanceData=E,i.stencil="none",i.motionTrackBuffer=t==null?void 0:t.buffer,i.motionTrackGlobalsBuffer=t==null?void 0:t.globalsBuffer,i.motionTrackSampleCount=t==null?void 0:t.sampleCount,i.motionTrackSampleIntervalMs=t==null?void 0:t.sampleIntervalMs,i.motionTrackTimeMs=t==null?void 0:t.currentTimeMs;const{sx:a,sy:o}=Zg(A.canvas);i.motionTrackCssScaleX=a,i.motionTrackCssScaleY=o,this.plainInstancedTexturesScratch[0]=B,this.plainInstancedTexturesScratch.length=1,this.plainInstancedUniformsScratch.u_projection=Q,this.requireBackendDraw(A,i,"CPU reference instanced batch")}drawClippedSprite(A,g,I,B){var Q;const{slot:E,sx:e,sy:i,offsetX:t,offsetY:a,a:o,b:s,c:n,d:r,tx:c,ty:h}=g,l=this.rotateTransform(E,o*e,s*i,n*e,r*i,c*e+E.x+t,h*i+E.y+a),{a:w,b:D,c:y,d:R,tx:F,ty:d}=l,f=this.getClipRect(I);if(f&&((Q=E.rotation)!=null?Q:0)===0&&nB(w,D,y,R)){this.applyClipRectScissor(A,f,w,R,F,d)&&this.drawSingleSprite(A,g,B),this.restoreSlotScissor(A);return}const u=this.ensureClipMeshBuffers(A,I),G=this.packClipTransform(w,D,y,R,F,d);if(this.sharedClipStencilActive){if(A.type==="webgl2"||A.type==="webgpu"){if(!this.drawTimelineStencilTest(A,g,B)){this.ensureInstancedQuadBuffers(A);const M=this.instancedFrameDataScratch;this.packInstancedFrameData(M,0,g,A.type);const N=this.clipInstancedDrawCommand;N.vertexBuffer=this.instancedQuadVB,N.indexBuffer=this.instancedQuadIB,N.instanceData=M,this.clipInstancedTexturesScratch[0]=g.handle,this.clipInstancedTexturesScratch.length=1,this.clipInstancedUniformsScratch.u_projection=B,this.requireBackendDraw(A,N,"shared stencil sprite test")}}else this.drawBatchSpriteWithStencilTest(A,g,B);this.clearSharedClipStencil(A,I,G,B);return}const S=this.clipMaskDrawCommand;if(S.vertexBuffer=u.vertexBuf,S.indexBuffer=u.indexBuf,S.indexCount=I.indices.length,S.stencil="write",this.clipMaskUniformsScratch.u_projection=B,this.clipMaskUniformsScratch.u_transform=G,this.requireBackendDraw(A,S,"stencil write"),A.type==="webgl2"||A.type==="webgpu"){if(!this.drawTimelineStencilTest(A,g,B)){this.ensureInstancedQuadBuffers(A);const M=this.instancedFrameDataScratch;this.packInstancedFrameData(M,0,g,A.type);const N=this.clipInstancedDrawCommand;N.vertexBuffer=this.instancedQuadVB,N.indexBuffer=this.instancedQuadIB,N.instanceData=M,this.clipInstancedTexturesScratch[0]=g.handle,this.clipInstancedTexturesScratch.length=1,this.clipInstancedUniformsScratch.u_projection=B,this.requireBackendDraw(A,N,"stencil sprite test")}this.clearClipStencil(A,I,u,G,B);return}this.drawBatchSpriteWithStencilTest(A,g,B),this.clearClipStencil(A,I,u,G,B)}drawTimelineStencilTest(A,g,I){if(g.override||!this.canUseTimelinePath(A,g.slot,"gpu-hybrid"))return!1;const B=g.slot.videoEntity;if(!B)return!1;const Q=this.resolveRenderableFrame(g.slot,B);return Q==null?!1:this.drawTimelineRange(A,g.slot,Q,g.spriteIndex,1,g.handle,I,"test",{x0:g.clipX0,y0:g.clipY0,x1:g.clipX1,y1:g.clipY1})}drawBatchSpriteWithStencilTest(A,g,I){const B=this.clipFrameDataScratch;this.packFrameData(B,0,g);const Q=hI*fg,E=mI;(!this.clipSpriteVertsScratch||this.clipSpriteVertsScratch.length<Q)&&(this.clipSpriteVertsScratch=new Float32Array(Q)),(!this.clipSpriteIndicesScratch||this.clipSpriteIndicesScratch.length<E)&&(this.clipSpriteIndicesScratch=new Uint32Array(E));const e=this.clipSpriteVertsScratch,i=this.clipSpriteIndicesScratch;(!DI()||OB(B,e,i)===null)&&dB(B,e,i);const t=this.clipSpriteDrawCursor++,a=this.ensureClipSpriteVertexBuffer(A,t,e.subarray(0,Q)),o=this.ensureClipSpriteIndexBuffer(A,t,i.subarray(0,E)),s=this.clipBatchDrawCommand;s.vertexBuffer=a,s.indexBuffer=o,s.indexCount=E,this.clipBatchTexturesScratch[0]=g.handle,this.clipBatchTexturesScratch.length=1,this.clipBatchUniformsScratch.u_projection=I,this.requireBackendDraw(A,s,"WebGL1 stencil sprite test")}applyClipRectScissor(A,g,I,B,Q,E){const e=I*g.x+Q,i=B*g.y+E,t=this.slotScissor,a=Math.max(e,t.x),o=Math.max(i,t.y),s=Math.min(e+I*g.w,t.x+t.w),n=Math.min(i+B*g.h,t.y+t.h);return s<=a||n<=o?!1:(A.setScissor(a,o,s-a,n-o),!0)}restoreSlotScissor(A){if(!this.slotScissorActive){A.resetScissor();return}const g=this.slotScissor;A.setScissor(g.x,g.y,g.w,g.h)}getClipRect(A){return A.rect===void 0&&(A.rect=Ca(A.vertices,A.indices)),A.rect}getClipMeshBounds(A){if(A.bounds)return A.bounds;const g=A.vertices;let I=1/0,B=1/0,Q=-1/0,E=-1/0;for(let e=0;e<g.length;e+=2){const i=g[e],t=g[e+1];i<I&&(I=i),t<B&&(B=t),i>Q&&(Q=i),t>E&&(E=t)}return A.bounds={x0:I,y0:B,x1:Q,y1:E},A.bounds}ensureClipMeshBuffers(A,g){if(!g.vertexBuf||!g.indexBuf){g.vertexBuf&&A.deleteBuffer(g.vertexBuf),g.indexBuf&&A.deleteBuffer(g.indexBuf),g.vertexBuf=null,g.indexBuf=null;const I=A.createBuffer(g.vertices,"vertex");try{const B=A.createBuffer(g.indices,"index");g.vertexBuf=I,g.indexBuf=B,this.clipMeshesWithBuffers.add(g)}catch(B){throw A.deleteBuffer(I),B}}return{vertexBuf:g.vertexBuf,indexBuf:g.indexBuf}}packClipTransform(A,g,I,B,Q,E){const e=this.clipTransformMat;return e[0]=A,e[1]=g,e[4]=I,e[5]=B,e[12]=Q,e[13]=E,e}drawSingleSprite(A,g,I){var B;if(A.type==="webgl2"||A.type==="webgpu"){const r=(B=g.slot)==null?void 0:B.videoEntity,c=r?this.resolveRenderableFrame(g.slot,r):null;if(c!=null&&this.canUseTimelinePath(A,g.slot,"gpu-hybrid")&&!g.override&&this.drawTimelineRange(A,g.slot,c,g.spriteIndex,1,g.handle,I,"none",{x0:g.clipX0,y0:g.clipY0,x1:g.clipX1,y1:g.clipY1}))return;this.ensureInstancedQuadBuffers(A);const h=this.instancedFrameDataScratch;this.packInstancedFrameData(h,0,g,A.type);const l=this.plainInstancedDrawCommand;l.vertexBuffer=this.instancedQuadVB,l.indexBuffer=this.instancedQuadIB,l.instanceCount=1,l.instanceData=h,this.plainInstancedTexturesScratch[0]=g.handle,this.plainInstancedTexturesScratch.length=1,this.plainInstancedUniformsScratch.u_projection=I,this.requireBackendDraw(A,l,"single instanced sprite");return}const Q=this.clipFrameDataScratch;this.packFrameData(Q,0,g);const E=hI*fg,e=mI;(!this.clipSpriteVertsScratch||this.clipSpriteVertsScratch.length<E)&&(this.clipSpriteVertsScratch=new Float32Array(E)),(!this.clipSpriteIndicesScratch||this.clipSpriteIndicesScratch.length<e)&&(this.clipSpriteIndicesScratch=new Uint32Array(e));const i=this.clipSpriteVertsScratch,t=this.clipSpriteIndicesScratch;(!DI()||OB(Q,i,t)===null)&&dB(Q,i,t);const a=this.clipSpriteDrawCursor++,o=this.ensureClipSpriteVertexBuffer(A,a,i.subarray(0,E)),s=this.ensureClipSpriteIndexBuffer(A,a,t.subarray(0,e)),n=this.plainBatchDrawCommand;n.vertexBuffer=o,n.indexBuffer=s,n.indexCount=e,this.plainBatchTexturesScratch[0]=g.handle,this.plainBatchTexturesScratch.length=1,this.plainBatchUniformsScratch.u_projection=I,this.requireBackendDraw(A,n,"single CPU reference sprite")}clearClipStencil(A,g,I,B,Q){const E=this.clipMaskDrawCommand;E.vertexBuffer=I.vertexBuf,E.indexBuffer=I.indexBuf,E.indexCount=g.indices.length,E.stencil="clear",this.clipMaskUniformsScratch.u_projection=Q,this.clipMaskUniformsScratch.u_transform=B,this.requireBackendDraw(A,E,"stencil clear")}rotateTransform(A,g,I,B,Q,E,e){const i=this.affineScratch;return i.a=g,i.b=I,i.c=B,i.d=Q,i.tx=E,i.ty=e,zt(A,i,i)}packFrameData(A,g,I){this.packFrameDataAt(A,g*gI,I)}packInstancedFrameData(A,g,I,B){const Q=g*rQ;this.packFrameDataAt(A,Q,I);const E=A[Q],e=A[Q+1],i=A[Q+2],t=A[Q+3],a=A[Q+4],o=A[Q+5],s=A[Q+6],n=A[Q+7],r=A[Q+8],c=A[Q+9],h=A[Q+10],l=A[Q+11],w=A[Q+12];A[Q]=i*E,A[Q+1]=t*E,A[Q+2]=a*e,A[Q+3]=o*e,A[Q+4]=s,A[Q+5]=n,A[Q+6]=r,A[Q+7]=c,A[Q+8]=h,A[Q+9]=l,A[Q+10]=w;let D=I.clipY0,y=I.clipY1;if(B==="webgl2"){const R=D;D=this.canvasHeight-y,y=this.canvasHeight-R}this.instancedFrameDataWords[Q+11]=this.packClipCoordinatePair(I.clipX0,D),this.instancedFrameDataWords[Q+12]=this.packClipCoordinatePair(I.clipX1,y),I.gpuMotion&&I.slot.motionTrackBinding&&(A[Q+11]=I.slot.motionTrackBinding.trackIndex,A[Q+12]=0)}packClipCoordinatePair(A,g){const I=Math.max(0,Math.min(65535,A))&65535,B=Math.max(0,Math.min(65535,g))&65535;return(I|B<<16)>>>0}packFrameDataAt(A,g,I){if(I.cachedRow){A.set(I.cachedRow,g);return}const{slot:B,layoutW:Q,layoutH:E,a:e,b:i,c:t,d:a,tx:o,ty:s,alpha:n,rect:r,override:c,sx:h,sy:l,offsetX:w,offsetY:D}=I;let y=Q||(c==null?void 0:c.logicalWidth)||0,R=E||(c==null?void 0:c.logicalHeight)||0,F=0,d=0;if((c==null?void 0:c.mode)==="dynamic"){const T=Q||c.logicalWidth,b=E||c.logicalHeight;y=c.logicalWidth,R=c.logicalHeight,F=Math.max(0,(T-y)*.5),d=Math.max(0,(b-R)*.5)}const f=e*h,u=i*l,G=t*h,S=a*l,M=o*h+f*F+G*d,N=s*l+u*F+S*d,U=I.gpuMotion?{a:f,b:u,c:G,d:S,tx:M+w-B.width*B.scale/2,ty:N+D-B.height*B.scale/2}:this.rotateTransform(B,f,u,G,S,M+B.x+w,N+B.y+D),{a:p,b:k,c:m,d:H,tx:v,ty:j}=U;A[g]=y,A[g+1]=R,A[g+2]=p,A[g+3]=k,A[g+4]=m,A[g+5]=H,A[g+6]=v,A[g+7]=j,A[g+8]=n*(I.gpuMotion?1:B.opacity),A[g+9]=r.x,A[g+10]=r.y,A[g+11]=r.x+r.w,A[g+12]=r.y+r.h}resolveSpriteTextureInto(A,g,I){var B,Q,E,e,i;const t=(Q=(B=A.svgaSlotTextures)==null?void 0:B.get(g))!=null?Q:null;if(t)return I.handle=t.texture,I.rect=sB,I.override=t,!0;const a=A.videoEntity,o=a.atlasRects.get(g),s=(E=o==null?void 0:o.textureIndex)!=null?E:0,n=(i=(e=a.atlasTextureHandles)==null?void 0:e[s])!=null?i:a.atlasTextureHandle;return!o||!n?!1:(I.handle=n,I.rect=o,I.override=null,!0)}drawShapeFrame(A,g,I,B,Q){var E;const e=this.getShapeMesh(I);if(!e||e.indices.length===0)return;const{slot:i,sx:t,sy:a,offsetX:o,offsetY:s,a:n,b:r,c,d:h,tx:l,ty:w,alpha:D}=g,y=this.getWhiteTexture(A),R=this.rotateTransform(i,n*t,r*a,c*t,h*a,l*t+i.x+o,w*a+i.y+s),{a:F,b:d,c:f,d:u,tx:G,ty:S}=R,M=!!B&&B.indices.length>0;let N=!1,U=null,p=null,k=!1;if(M){const v=this.getClipRect(B);if(v&&((E=i.rotation)!=null?E:0)===0&&nB(F,d,f,u)){if(!this.applyClipRectScissor(A,v,F,u,G,S)){this.restoreSlotScissor(A);return}N=!0}else{U=this.ensureClipMeshBuffers(A,B),p=this.packClipTransform(F,d,f,u,G,S);const j=this.clipMaskDrawCommand;j.vertexBuffer=U.vertexBuf,j.indexBuffer=U.indexBuf,j.indexCount=B.indices.length,j.stencil="write",this.clipMaskUniformsScratch.u_projection=Q,this.clipMaskUniformsScratch.u_transform=p,this.requireBackendDraw(A,j,"shape stencil write"),k=g.handle!=null,k&&(this.sharedClipStencilActive=!0)}}const m=this.ensureShapeMeshBuffers(A,e),H=this.shapeDrawCommand;H.vertexBuffer=m.vertexBuf,H.indexBuffer=m.indexBuf,H.indexCount=e.indices.length,H.stencil=M?"test":"none",this.shapeTexturesScratch[0]=y,this.shapeTexturesScratch.length=1,this.shapeUniformsScratch.u_projection=Q,this.shapeUniformsScratch.u_transform=this.packShapeTransform(F,d,f,u,G,S),this.shapeUniformsScratch.u_opacity=D*i.opacity,this.requireBackendDraw(A,H,"shape draw"),U&&p&&B&&!k&&this.clearClipStencil(A,B,U,p,Q),N&&this.restoreSlotScissor(A)}clearSharedClipStencil(A,g,I,B){this.sharedClipStencilActive=!1,this.clearClipStencil(A,g,this.ensureClipMeshBuffers(A,g),I,B)}ensureShapeMeshBuffers(A,g){if(!g.vertexBuf||!g.indexBuf){g.vertexBuf&&A.deleteBuffer(g.vertexBuf),g.indexBuf&&A.deleteBuffer(g.indexBuf),g.vertexBuf=null,g.indexBuf=null;const I=A.createBuffer(g.gpuVertices,"vertex");try{const B=A.createBuffer(g.indices,"index");g.vertexBuf=I,g.indexBuf=B,this.shapeMeshesWithBuffers.add(g)}catch(B){throw A.deleteBuffer(I),B}}return{vertexBuf:g.vertexBuf,indexBuf:g.indexBuf}}packShapeTransform(A,g,I,B,Q,E){const e=this.shapeTransformMat;return e[0]=A,e[1]=g,e[4]=I,e[5]=B,e[12]=Q,e[13]=E,e}hasAtlasTexture(A){var g;const I=A.videoEntity;return I?!!I.atlasTextureHandle||!!((g=I.atlasTextureHandles)!=null&&g.length):!1}hasRenderableSVGA(A){if(this.hasAtlasTexture(A))return!0;const g=A.videoEntity;if(!(g!=null&&g.spriteTable))return!1;const I=this.entityHasShapesCache.get(g);if(I!==void 0)return I;const B=g.spriteTable.hasAnyShapes;return this.entityHasShapesCache.set(g,B),B}getWhiteTexture(A){return this.whiteTexture?this.whiteTexture:(this.whiteTexture=A.createTexture(new Uint8Array([255,255,255,255]).buffer,{width:1,height:1,filter:"nearest"}),this.whiteTexture)}getShapeMesh(A){var g;if(!A||A.length===0)return null;if(this.shapeMeshCache.has(A))return(g=this.shapeMeshCache.get(A))!=null?g:null;const I=[],B=[];for(const i of A)this.appendShape(i,I,B);if(I.length===0||B.length===0)return this.shapeMeshCache.set(A,null),null;const Q=new Float32Array(I),E=new Float32Array(I.length/oB*fg);for(let i=0,t=0;i<I.length;i+=oB,t+=fg)E[t]=I[i],E[t+1]=I[i+1],E[t+3]=I[i+2],E[t+4]=I[i+3],E[t+5]=I[i+4],E[t+6]=I[i+5],E[t+7]=.5,E[t+8]=.5;const e={vertices:Q,indices:new Uint32Array(B),gpuVertices:E};return this.shapeMeshCache.set(A,e),e}appendShape(A,g,I){const B=A.style.fill,Q=A.style.stroke,E=this.buildShapeSubPaths(A);for(const e of E){if(e.length<2)continue;const i=e.map(t=>({x:A.transform.a*t.x+A.transform.c*t.y+A.transform.tx,y:A.transform.b*t.x+A.transform.d*t.y+A.transform.ty}));B&&B.a>0&&i.length>=3&&this.appendFill(i,B,g,I),Q&&Q.a>0&&A.style.strokeWidth>.01&&this.appendStroke(i,Q,A.style.strokeWidth,g,I)}}buildShapeSubPaths(A){var g;if(A.kind==="path")return fe((g=A.pathData)!=null?g:"").map(I=>this.cleanupPoints(I)).filter(I=>I.length>=2);if(A.kind==="rect"&&A.rect){const I=A.rect;return[[{x:I.x,y:I.y},{x:I.x+I.width,y:I.y},{x:I.x+I.width,y:I.y+I.height},{x:I.x,y:I.y+I.height}]]}if(A.kind==="ellipse"&&A.ellipse){const I=A.ellipse,B=[],Q=40;for(let E=0;E<Q;E++){const e=E/Q*Math.PI*2;B.push({x:I.x+Math.cos(e)*I.radiusX,y:I.y+Math.sin(e)*I.radiusY})}return[B]}return[]}appendFill(A,g,I,B){const Q=this.cleanupPoints(A);if(Q.length<3)return;const E=I.length/oB;for(const i of Q)I.push(i.x,i.y,this.clamp01(g.r),this.clamp01(g.g),this.clamp01(g.b),this.clamp01(g.a));const e=Ot(Q);if(e.length>=(Q.length-2)*3)for(const i of e)B.push(E+i);else for(let i=1;i<Q.length-1;i++)B.push(E,E+i,E+i+1)}appendStroke(A,g,I,B,Q){A=this.cleanupPoints(A);const E=I*.5;for(let e=0;e<A.length;e++){const i=A[e],t=A[(e+1)%A.length],a=t.x-i.x,o=t.y-i.y,s=Math.hypot(a,o);if(s<=1e-4)continue;const n=-o/s*E,r=a/s*E,c=B.length/oB,h=this.clamp01(g.r),l=this.clamp01(g.g),w=this.clamp01(g.b),D=this.clamp01(g.a);B.push(i.x-n,i.y-r,h,l,w,D),B.push(i.x+n,i.y+r,h,l,w,D),B.push(t.x+n,t.y+r,h,l,w,D),B.push(t.x-n,t.y-r,h,l,w,D),Q.push(c,c+1,c+2,c+2,c+3,c)}}clamp01(A){return Math.max(0,Math.min(1,Number.isFinite(A)?A:0))}cleanupPoints(A){if(A.length===0)return[];const g=[],I=1e-4;let B=null;for(const Q of A){if(B){const E=Q.x-B.x,e=Q.y-B.y;if(E*E+e*e<=I)continue}g.push(Q),B=Q}if(g.length>2){const Q=g[0],E=g[g.length-1],e=Q.x-E.x,i=Q.y-E.y;e*e+i*i<=I&&g.pop()}return g}getClipGeometryKind(A){var g;return(g=this.clipAnalysis.get(A))==null?void 0:g.kind}getClipMeshForSprite(A,g,I){var B;const Q=A.spriteTable,E=(B=Q.clipPathIndex[g*Q.frameCount+I])!=null?B:-1;if(E<0)return null;let e=this.entityClipMeshArrayCache.get(A);(!e||e.length!==Q.clipPaths.length)&&(e=new Array(Q.clipPaths.length),this.entityClipMeshArrayCache.set(A,e));const i=e[E];if(i!==void 0)return i;const t=Q.clipPaths[E];if(this.clipAnalysis.retain(Q,t),this.getClipGeometryKind(t)==="empty")return this.clipMeshStates.has(t)||this.publishClipMeshState(t,{status:"empty",generation:++this.clipMeshGeneration,attempts:0}),e[E]=null,null;const a=this.clipMeshStates.get(t);if(!a){this.queueClipMeshBuild(t);return}if(a.status!=="building")return a.status==="invalid"?this.handleInvalidClipMesh(A,t,a):a.status==="empty"?(e[E]=null,null):(e[E]=a.mesh,a.mesh)}ensureVertexBuffer(A,g,I){const B=this.vertexBufHandles[g];if(B)return A.updateBuffer(B,I),B;{const Q=A.createBuffer(I,"vertex");return this.vertexBufHandles[g]=Q,Q}}ensureIndexBuffer(A,g,I){const B=this.indexBufHandles[g];if(B)return A.updateBuffer(B,I),B;{const Q=A.createBuffer(I,"index");return this.indexBufHandles[g]=Q,Q}}ensureClipSpriteVertexBuffer(A,g,I){const B=this.clipSpriteVertBufHandles[g];if(B)return A.updateBuffer(B,I),B;{const Q=A.createBuffer(I,"vertex");return this.clipSpriteVertBufHandles[g]=Q,Q}}ensureClipSpriteIndexBuffer(A,g,I){const B=this.clipSpriteIdxBufHandles[g];if(B)return A.updateBuffer(B,I),B;{const Q=A.createBuffer(I,"index");return this.clipSpriteIdxBufHandles[g]=Q,Q}}ensureInstancedQuadBuffers(A){this.instancedQuadVB||(this.instancedQuadVB=A.createBuffer(wC.INSTANCED_QUAD_VERTS,"vertex"),this.instancedQuadIB=A.createBuffer(wC.INSTANCED_QUAD_INDICES,"index"))}destroy(A){if(!this.destroyed){this.destroyed=!0,this.clipMeshDestroyed=!0,this.clipMeshBuildInFlight=!1,this.stencilTransactionState="idle",this.slotScissorActive=!1,this.clipMeshProducerController.abort();for(const g of this.vertexBufHandles)A.deleteBuffer(g);for(const g of this.indexBufHandles)A.deleteBuffer(g);for(const g of this.clipSpriteVertBufHandles)A.deleteBuffer(g);for(const g of this.clipSpriteIdxBufHandles)A.deleteBuffer(g);for(const g of this.clipMeshesWithBuffers)g.vertexBuf&&A.deleteBuffer(g.vertexBuf),g.indexBuf&&A.deleteBuffer(g.indexBuf),g.vertexBuf=null,g.indexBuf=null;this.clipMeshesWithBuffers.clear();for(const g of this.shapeMeshesWithBuffers)g.vertexBuf&&A.deleteBuffer(g.vertexBuf),g.indexBuf&&A.deleteBuffer(g.indexBuf),g.vertexBuf=null,g.indexBuf=null;this.shapeMeshesWithBuffers.clear(),this.instancedQuadVB&&A.deleteBuffer(this.instancedQuadVB),this.instancedQuadIB&&A.deleteBuffer(this.instancedQuadIB),this.whiteTexture&&A.deleteTexture(this.whiteTexture),this.pool.destroy();for(const g of this.clipMeshStateWaiters.values())for(const I of g)I.signal&&I.onAbort&&I.signal.removeEventListener("abort",I.onAbort),I.reject(QA("SVGA renderer destroyed during clip prewarm"));this.clipMeshStateWaiters.clear(),this.clipMeshProducerTasks.clear(),this.clipMeshCache.clear(),this.clipMeshStates.clear(),this.clipAnalysis.clear(),this.pendingClipMeshPaths.clear(),this.vertexBufHandles=[],this.indexBufHandles=[],this.clipSpriteVertBufHandles=[],this.clipSpriteIdxBufHandles=[],this.instancedQuadVB=null,this.instancedQuadIB=null,this.whiteTexture=null,this.projCache=null}}};K(HC,"INSTANCED_QUAD_VERTS",new Float32Array([0,0,1,0,1,1,0,1]));K(HC,"INSTANCED_QUAD_INDICES",new Uint32Array([0,1,2,0,2,3]));let SE=HC;const cQ=1e-4;function nB(C,A,g,I){const B=Math.max(Math.abs(C),Math.abs(I));return C>0&&I>0&&Math.abs(A)<=B*cQ&&Math.abs(g)<=B*cQ}function Ca(C,A){if(C.length!==8||A.length!==6)return null;let g=1/0,I=1/0,B=-1/0,Q=-1/0;for(let a=0;a<8;a+=2){const o=C[a],s=C[a+1];o<g&&(g=o),o>B&&(B=o),s<I&&(I=s),s>Q&&(Q=s)}const E=B-g,e=Q-I;if(!(E>0&&e>0))return null;const i=Math.max(E,e)*1e-4+1e-6;let t=0;for(let a=0;a<8;a+=2){const o=C[a],s=C[a+1],n=Math.abs(o-g)<=i,r=Math.abs(o-B)<=i,c=Math.abs(s-I)<=i,h=Math.abs(s-Q)<=i;if(!n&&!r||!c&&!h)return null;t|=1<<((n?0:1)|(c?0:2))}return t!==15?null:{x:g,y:I,w:E,h:e}}var Qa=Object.defineProperty,Ea=(C,A,g)=>A in C?Qa(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,wg=(C,A,g)=>Ea(C,typeof A!="symbol"?A+"":A,g);const ea=4,ia=128*1024*1024,ta=2048*1024*1024,aa="gift-stage-resource-cache",oa=3,ug="resources",sg="resourceMeta",bg="cacheState",Pg="totalBytes",hQ="byUpdatedAt",sa=3e4;class na{constructor(A){wg(this,"maxConcurrent"),wg(this,"active",0),wg(this,"queue",[]),this.maxConcurrent=Math.max(1,A)}setMaxConcurrent(A){this.maxConcurrent=Math.max(1,A),this.drain()}async run(A){return new Promise((g,I)=>{this.queue.push(()=>{Promise.resolve().then(A).then(g,I).finally(()=>{this.active--,this.drain()})}),this.drain()})}drain(){for(;this.active<this.maxConcurrent&&this.queue.length>0;){const A=this.queue.shift();this.active++,A==null||A()}}}function ra(){return typeof indexedDB!="undefined"}function Yg(C){return C.length*2}function ca(C){var A,g,I;let B=256;const Q=C.imageBlob;if(Q)B+=Q.byteLength;else for(const e of Object.values((A=C.images)!=null?A:{}))B+=e.byteLength;for(const e of(g=C.imageEntries)!=null?g:[])B+=Yg(e.key)+16;for(const e of C.audios)B+=Yg(e.audioKey)+32;const E=C.spriteTable;(!Q||E.frameData.buffer!==Q)&&(B+=E.frameData.byteLength),(!Q||E.clipPathIndex.buffer!==Q)&&(B+=E.clipPathIndex.byteLength),(!Q||E.shapesIndex.buffer!==Q)&&(B+=E.shapesIndex.byteLength);for(const e of E.imageKeys)B+=Yg(e);for(const e of E.clipPaths)B+=Yg(e);for(const e of E.shapesTable)for(const i of e)B+=Yg((I=i.pathData)!=null?I:"")+96;return B}function ha(C){return typeof C=="string"?Yg(C):C.byteLength}class la{constructor(){wg(this,"limiter",new na(ea)),wg(this,"pending",new Map),wg(this,"memory",new Map),wg(this,"memoryBytes",0),wg(this,"maxMemoryBytes",ia),wg(this,"maxPersistentBytes",ta),wg(this,"dbPromise",null),wg(this,"persistentTrimPromise",null)}configure(A){(A==null?void 0:A.maxConcurrent)!=null&&this.limiter.setMaxConcurrent(A.maxConcurrent),(A==null?void 0:A.maxMemoryBytes)!=null&&A.maxMemoryBytes>0&&(this.maxMemoryBytes=A.maxMemoryBytes,this.trimMemory()),(A==null?void 0:A.maxPersistentBytes)!=null&&A.maxPersistentBytes>0&&(this.maxPersistentBytes=A.maxPersistentBytes,this.schedulePersistentTrim())}runLimited(A){return this.limiter.run(A)}async fetchArrayBuffer(A,g){const I=`ab:${A}`,B=this.getMemory(I,"arrayBuffer");if(B)return B.slice(0);const Q=await this.getPersistent(I,"arrayBuffer");return Q?(this.setMemory(I,"arrayBuffer",Q,Q.byteLength),Q.slice(0)):(await this.getOrCreatePending(I,()=>this.limiter.run(async()=>{const e=await fetch(A,{mode:"cors",signal:g});if(!e.ok)throw new Error(`fetch failed ${e.status}`);const i=await e.arrayBuffer();return this.setMemory(I,"arrayBuffer",i,i.byteLength),this.setPersistent(I,"arrayBuffer",i.slice(0)),i}))).slice(0)}async fetchText(A,g){const I=`text:${A}`,B=this.getMemory(I,"text");if(B!=null)return B;const Q=await this.getPersistent(I,"text");return Q!=null?(this.setMemory(I,"text",Q,Yg(Q)),Q):this.getOrCreatePending(I,()=>this.limiter.run(async()=>{const E=await fetch(A,{mode:"cors",signal:g});if(!E.ok)throw new Error(`fetch failed ${E.status}`);const e=await E.text();return this.setMemory(I,"text",e,Yg(e)),this.setPersistent(I,"text",e),e}))}async fetchJSON(A,g){const I=`json:${A}`,B=this.getMemory(I,"json");if(B!=null)return B;const Q=await this.fetchText(A,g),E=JSON.parse(Q);return this.setMemory(I,"json",E,Yg(Q)),E}getSVGAWorkerPayload(A){return this.getMemory(A,"svga-payload")}setSVGAWorkerPayload(A,g){this.setMemory(A,"svga-payload",g,ca(g))}getMemoryValue(A,g){return this.getMemory(A,g)}setMemoryValue(A,g,I,B){this.setMemory(A,g,I,B)}getPersistedArrayBuffer(A){return this.getPersistent(A,"arrayBuffer")}setPersistedArrayBuffer(A,g){return this.setPersistent(A,"arrayBuffer",g)}deletePersistedValue(A){return this.deletePersistent(A)}getOrCreatePending(A,g){const I=this.pending.get(A);if(I)return I;const B=g().finally(()=>{this.pending.delete(A)});return this.pending.set(A,B),B}getMemory(A,g){const I=this.memory.get(A);return!I||I.kind!==g?null:(this.memory.delete(A),this.memory.set(A,I),I.value)}setMemory(A,g,I,B){const Q=this.memory.get(A);Q&&(this.memoryBytes-=Q.size,this.memory.delete(A)),this.memory.set(A,{key:A,kind:g,size:Math.max(0,B),value:I}),this.memoryBytes+=Math.max(0,B),this.trimMemory()}trimMemory(){for(;this.memoryBytes>this.maxMemoryBytes&&this.memory.size>0;){const A=this.memory.keys().next().value;if(!A)break;const g=this.memory.get(A);if(!g)break;this.memoryBytes-=g.size,this.memory.delete(A)}}async openDb(){return ra()?(this.dbPromise||(this.dbPromise=new Promise(A=>{try{const g=indexedDB.open(aa,oa);g.onupgradeneeded=()=>{const I=g.result;for(const E of[ug,sg,bg])I.objectStoreNames.contains(E)&&I.deleteObjectStore(E);I.createObjectStore(ug,{keyPath:"key"}),I.createObjectStore(sg,{keyPath:"key"}).createIndex(hQ,"updatedAt",{unique:!1}),I.createObjectStore(bg,{keyPath:"key"}).put({key:Pg,totalBytes:0})},g.onsuccess=()=>A(g.result),g.onerror=()=>A(null),g.onblocked=()=>A(null)}catch(g){A(null)}})),this.dbPromise):null}async getPersistent(A,g){const I=await this.openDb();return I?new Promise(B=>{try{const Q=I.transaction([ug,sg],"readonly");Q.onerror=()=>B(null),Q.onabort=()=>B(null);const e=Q.objectStore(ug).get(A);e.onsuccess=()=>{const i=e.result;if(!i||i.kind!==g){B(null);return}const t=Q.objectStore(sg).get(A);t.onsuccess=()=>{const a=t.result;if((!a||Date.now()-a.updatedAt>=sa)&&this.touchPersistent(A,g),g==="arrayBuffer"){B(i.value);return}B(i.value)},t.onerror=()=>B(i.value)},e.onerror=()=>B(null)}catch(Q){B(null)}}):null}async setPersistent(A,g,I){const B=await this.openDb();if(!B)return;const Q=ha(I);await new Promise(E=>{try{const e=B.transaction([ug,sg,bg],"readwrite");e.oncomplete=()=>E(),e.onerror=()=>E(),e.onabort=()=>E();const i=e.objectStore(ug),t=e.objectStore(sg),a=e.objectStore(bg),o=t.get(A);o.onsuccess=()=>{const s=o.result,n=a.get(Pg);n.onsuccess=()=>{var r,c;const h=n.result,l=Math.max(0,((r=h==null?void 0:h.totalBytes)!=null?r:0)-((c=s==null?void 0:s.sizeBytes)!=null?c:0)+Q);i.put({key:A,kind:g,value:I}),t.put({key:A,kind:g,sizeBytes:Q,updatedAt:Date.now()}),a.put({key:Pg,totalBytes:l})}}}catch(e){E()}}),this.schedulePersistentTrim()}async touchPersistent(A,g){const I=await this.openDb();I&&await new Promise(B=>{try{const Q=I.transaction(sg,"readwrite");Q.oncomplete=()=>B(),Q.onerror=()=>B(),Q.onabort=()=>B();const E=Q.objectStore(sg),e=E.get(A);e.onsuccess=()=>{const i=e.result;!i||i.kind!==g||E.put({...i,updatedAt:Date.now()})}}catch(Q){B()}})}schedulePersistentTrim(){this.persistentTrimPromise||(this.persistentTrimPromise=this.trimPersistent().finally(()=>{this.persistentTrimPromise=null}))}async trimPersistent(){const A=await this.openDb();A&&await new Promise(g=>{try{const I=A.transaction([ug,sg,bg],"readwrite");I.oncomplete=()=>g(),I.onerror=()=>g(),I.onabort=()=>g();const B=I.objectStore(ug),Q=I.objectStore(sg),E=I.objectStore(bg),e=E.get(Pg);e.onsuccess=()=>{var i;const t=e.result;let a=Math.max(0,(i=t==null?void 0:t.totalBytes)!=null?i:0);if(a<=this.maxPersistentBytes)return;const o=Q.index(hQ).openCursor();o.onsuccess=()=>{const s=o.result;if(!s||a<=this.maxPersistentBytes){E.put({key:Pg,totalBytes:a});return}const n=s.value;B.delete(n.key),s.delete(),a=Math.max(0,a-n.sizeBytes),s.continue()}}}catch(I){g()}})}async deletePersistent(A){const g=await this.openDb();g&&await new Promise(I=>{try{const B=g.transaction([ug,sg,bg],"readwrite");B.oncomplete=()=>I(),B.onerror=()=>I(),B.onabort=()=>I();const Q=B.objectStore(ug),E=B.objectStore(sg),e=B.objectStore(bg),i=E.get(A);i.onsuccess=()=>{const t=i.result,a=e.get(Pg);a.onsuccess=()=>{var o,s;const n=a.result;Q.delete(A),E.delete(A),e.put({key:Pg,totalBytes:Math.max(0,((o=n==null?void 0:n.totalBytes)!=null?o:0)-((s=t==null?void 0:t.sizeBytes)!=null?s:0))})}}}catch(B){I()}})}}const dg=new la;function Da(C){dg.configure(C)}function yC(C){return dg.runLimited(C)}function EI(C,A){return dg.fetchArrayBuffer(C,A)}function wa(C,A){return dg.fetchJSON(C,A)}function xC(C){return dg.getSVGAWorkerPayload(C)}function lQ(C,A){dg.setSVGAWorkerPayload(C,A)}function ya(C,A){return dg.getMemoryValue(C,A)}function ME(C,A,g,I){dg.setMemoryValue(C,A,g,I)}function Fa(C){return dg.getPersistedArrayBuffer(C)}function da(C,A){return dg.setPersistedArrayBuffer(C,A)}function Ga(C){return dg.deletePersistedValue(C)}async function FC(C){const A=typeof C=="string"?await wa(C):C;if(!A.info)throw new Error("VAP config missing info");if(!A.info.rgbFrame||!A.info.aFrame)throw new Error("VAP config missing rgbFrame or aFrame");return A}function CI(C,A={w:0,h:0}){const[,,g,I]=C.rgbFrame,B=C.w>0?C.w:g,Q=C.h>0?C.h:I;return A.w=B>0&&Q>0?B:C.videoW,A.h=B>0&&Q>0?Q:C.videoH,A}function SI(C,A,g,I={left:0,right:0,top:0,bottom:0}){const[B,Q,E,e]=C;return I.left=B/A,I.right=(B+E)/A,I.top=(g-Q)/g,I.bottom=(g-Q-e)/g,I}var ua=Object.defineProperty,Ra=(C,A,g)=>A in C?ua(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,VA=(C,A,g)=>Ra(C,typeof A!="symbol"?A+"":A,g);class NE{constructor(A){VA(this,"onFrameAvailable"),VA(this,"frameInfo",new Map),VA(this,"pending",new Set),VA(this,"lastHandle",new Map),VA(this,"started",new Set),VA(this,"firstUploaded",new Set),VA(this,"forceTimeFallback",new Set),VA(this,"lastArmAt",new Map),VA(this,"lastCallbackAt",new Map),VA(this,"lastProgressAt",new Map),VA(this,"lastRecoveryAt",new Map),VA(this,"stallLogged",new Set),VA(this,"stagnationLogged",new Set),VA(this,"lastTimeFallback",new Map),VA(this,"healthTimers",new Map),this.onFrameAvailable=A}preUpload(A,g){const I=g.currentTime;if(typeof g.requestVideoFrameCallback!="function"||this.forceTimeFallback.has(A)){if(!this.firstUploaded.has(A))return this.firstUploaded.add(A),this.lastTimeFallback.set(A,I),this.markProgress(A),typeof g.requestVideoFrameCallback=="function"&&this.debugInfo(A,"initial upload using time fallback",g),!0;const a=this.consumeTimeAdvance(A,I);if(a)this.stagnationLogged.has(A)&&(this.stagnationLogged.delete(A),this.debugInfo(A,"time fallback progress resumed",g));else if(this.forceTimeFallback.has(A)&&!this.stagnationLogged.has(A)&&!g.paused&&!g.ended){const o=this.lastProgressAt.get(A);o!==void 0&&performance.now()-o>1e3&&(this.stagnationLogged.add(A),this.debugWarn(A,"time fallback has no progress",g,{lastProgressAgeMs:Math.round(performance.now()-o)}))}return a}this.ensureRvf(A,g);const B=performance.now(),Q=this.lastCallbackAt.get(A),E=this.lastArmAt.get(A),e=Q!=null?Q:E,i=this.lastTimeFallback.get(A),t=i!==void 0&&Math.abs(I-i)>1e-4;return this.firstUploaded.has(A)&&e!==void 0&&B-e>500&&!g.paused&&!g.ended&&(this.stallLogged.has(A)||(this.stallLogged.add(A),this.debugWarn(A,"rVFC stalled for slot",g,{stallAgeMs:Math.round(B-e),lastCallbackAgeMs:Q!==void 0?Math.round(B-Q):null,lastArmAgeMs:E!==void 0?Math.round(B-E):null,timeAdvanced:t})),this.tryRecoverStalledPlayback(A,g,I,B),this.started.delete(A),this.ensureRvf(A,g),t)?(this.forceTimeFallback.add(A),this.lastTimeFallback.set(A,I),this.markProgress(A),this.debugWarn(A,"switching slot to time fallback",g,{stallAgeMs:Math.round(B-e)}),!0):this.firstUploaded.has(A)?this.pending.has(A)?(this.pending.delete(A),this.lastTimeFallback.set(A,I),this.markProgress(A),(this.stallLogged.delete(A)||this.forceTimeFallback.delete(A))&&(this.stagnationLogged.delete(A),this.debugInfo(A,"rVFC progress resumed",g)),!0):!1:(this.firstUploaded.add(A),this.lastTimeFallback.set(A,I),this.markProgress(A),!0)}getFrameInfo(A){return this.frameInfo.get(A)}ensureRvf(A,g){if(this.started.has(A))return;this.started.add(A),this.ensureHealthTimer(A,g);const I=(B,Q)=>{var E;this.frameInfo.set(A,Q),this.lastCallbackAt.set(A,performance.now()),this.pending.add(A),(E=this.onFrameAvailable)==null||E.call(this,g);try{this.lastArmAt.set(A,performance.now());const e=g.requestVideoFrameCallback(I);this.lastHandle.set(A,e)}catch(e){this.started.delete(A),this.lastHandle.delete(A),this.debugWarn(A,"requestVideoFrameCallback re-arm failed",g)}};try{this.lastArmAt.set(A,performance.now());const B=g.requestVideoFrameCallback(I);this.lastHandle.set(A,B)}catch(B){this.started.delete(A),this.lastHandle.delete(A),this.debugWarn(A,"requestVideoFrameCallback initial arm failed",g)}}ensureHealthTimer(A,g){if(this.healthTimers.has(A))return;const I=setInterval(()=>{var B;g.paused||g.ended||(B=this.onFrameAvailable)==null||B.call(this,g)},500);this.healthTimers.set(A,I)}consumeTimeAdvance(A,g){const I=this.lastTimeFallback.get(A);return I===void 0||Math.abs(g-I)>1e-4?(this.lastTimeFallback.set(A,g),this.markProgress(A),!0):!1}markProgress(A){this.lastProgressAt.set(A,performance.now())}tryRecoverStalledPlayback(A,g,I,B){if(g.paused||g.ended||g.seeking)return;const Q=this.lastRecoveryAt.get(A);if(Q!==void 0&&B-Q<1500)return;this.lastRecoveryAt.set(A,B);const E=Number.isFinite(g.duration)?g.duration:NaN,e=Number.isFinite(E)&&E>0,i=e?Math.min(Math.max(0,E-.001),I+.001):I;try{e&&i>I&&(g.currentTime=i)}catch(t){}try{const t=g.play();t&&typeof t.catch=="function"&&t.catch(()=>{})}catch(t){}this.debugWarn(A,"attempting stalled video recovery",g,{currentTime:I,nudgedTime:i,readyState:g.readyState})}debugInfo(A,g,I,B){console.info("[GiftStage:VideoGate]",g,this.snapshot(A,I,B))}debugWarn(A,g,I,B){console.warn("[GiftStage:VideoGate]",g,this.snapshot(A,I,B))}snapshot(A,g,I){return{slotId:A,currentTime:Number(g.currentTime.toFixed(3)),readyState:g.readyState,networkState:g.networkState,paused:g.paused,ended:g.ended,seeking:g.seeking,playbackRate:g.playbackRate,forceTimeFallback:this.forceTimeFallback.has(A),pending:this.pending.has(A),...I}}release(A,g){if(!g){this.cleanup(A);return}const I=this.lastHandle.get(A);if(I!=null)try{g.cancelVideoFrameCallback(I)}catch(B){}this.cleanup(A)}cleanup(A){const g=this.healthTimers.get(A);g!=null&&clearInterval(g),this.healthTimers.delete(A),this.frameInfo.delete(A),this.lastHandle.delete(A),this.started.delete(A),this.pending.delete(A),this.firstUploaded.delete(A),this.forceTimeFallback.delete(A),this.lastArmAt.delete(A),this.lastCallbackAt.delete(A),this.lastProgressAt.delete(A),this.lastRecoveryAt.delete(A),this.stallLogged.delete(A),this.stagnationLogged.delete(A),this.lastTimeFallback.delete(A)}}const UE=new Float32Array([0,0,1,1]);function kB(C,A,g,I){const B=I!=null?I:new Float32Array(4);return!g||C<=0||A<=0?(B[0]=0,B[1]=0,B[2]=1,B[3]=1,B):(B[0]=g.x/C,B[1]=g.y/A,B[2]=g.w/C,B[3]=g.h/A,B)}const fa=3;function Sa(){return typeof document!="undefined"&&typeof document.createElement=="function"}function yI(C,A){if(!Sa())throw new Error("Canvas rendering is unavailable in this environment");const g=document.createElement("canvas");return g.width=Math.max(1,Math.round(C)),g.height=Math.max(1,Math.round(A)),g}function FI(C,A){const g=C.getContext("2d",A);if(!g)throw new Error("Failed to acquire 2D canvas context");return g}let _B=null;function Ma(){return _B||(_B=FI(yI(1,1))),_B}function kE(C){return!!C&&typeof C=="object"&&typeof C.text=="string"}function Na(C){return!!C&&typeof C=="object"&&"image"in C}function YE(C){return!!C&&typeof C=="object"&&"image"in C}function DQ(C){return!C||typeof C!="object"?!1:typeof HTMLCanvasElement!="undefined"&&C instanceof HTMLCanvasElement||typeof HTMLImageElement!="undefined"&&C instanceof HTMLImageElement||typeof ImageBitmap!="undefined"&&C instanceof ImageBitmap||typeof OffscreenCanvas!="undefined"&&C instanceof OffscreenCanvas||typeof HTMLVideoElement!="undefined"&&C instanceof HTMLVideoElement||typeof VideoFrame!="undefined"&&C instanceof VideoFrame||typeof ImageData!="undefined"&&C instanceof ImageData}function YB(C){return new Promise((A,g)=>{const I=new Image;I.crossOrigin="anonymous",I.onload=()=>A(I),I.onerror=()=>g(new Error(`Failed to load image: ${C}`)),I.src=C})}function dI(C){if(typeof HTMLImageElement!="undefined"&&C instanceof HTMLImageElement)return{width:C.naturalWidth||C.width,height:C.naturalHeight||C.height};if(typeof HTMLCanvasElement!="undefined"&&C instanceof HTMLCanvasElement)return{width:C.width,height:C.height};if(typeof OffscreenCanvas!="undefined"&&C instanceof OffscreenCanvas)return{width:C.width,height:C.height};if(typeof ImageBitmap!="undefined"&&C instanceof ImageBitmap)return{width:C.width,height:C.height};if(C&&typeof C=="object"&&"videoWidth"in C&&typeof C.videoWidth=="number")return{width:C.videoWidth,height:C.videoHeight};if(C&&typeof C=="object"&&"displayWidth"in C&&typeof C.displayWidth=="number")return{width:C.displayWidth||C.codedWidth,height:C.displayHeight||C.codedHeight};const A=C;return typeof A.width=="number"&&typeof A.height=="number"?{width:A.width,height:A.height}:{width:0,height:0}}function dC(C){if(typeof ImageData!="undefined"&&C instanceof ImageData){const A=yI(C.width,C.height);return FI(A).putImageData(C,0,0),A}return C}function Ua(C){const A=/^\[(.+)\]$/.exec(C);return A?A[1]:C}function ka(C,A,g){var I,B;return C?typeof C=="string"?{font:C,color:g}:{font:(I=C.font)!=null?I:A,color:(B=C.color)!=null?B:g}:{font:A,color:g}}function RI(C){return typeof C=="number"&&Number.isFinite(C)&&C>0}function Ya(C,A){const g=Math.max(1,Math.round(A*100)/100);return/\d+(?:\.\d+)?px\b/.test(C)?C.replace(/\d+(?:\.\d+)?px\b/,`${g}px`):`${g}px ${C}`}function pa(C){const A=typeof C=="string"?C:C==null?void 0:C.font,g=A?/(\d+(?:\.\d+)?)px\b/.exec(A):null;if(!g)return;const I=Number(g[1]);return RI(I)?I:void 0}function wQ(C,A,g,I){const B=C.measureText(A),Q=B.width/g,E=(B.actualBoundingBoxAscent||0)+(B.actualBoundingBoxDescent||0),e=E>0?E/g:I;return{width:Math.max(1,Q),height:Math.max(1,e)}}function Ka(C,A,g,I,B,Q,E,e){let i=Math.max(1,Math.min(E,e)),t=Math.max(i,e),a=i,o={width:1,height:1};for(let s=0;s<16;s++){const n=(i+t)*.5;C.font=I(n);const r=wQ(C,A,g,n);r.width<=B&&r.height<=Q?(a=n,o=r,i=n):t=n}return C.font=I(a),o=wQ(C,A,g,a),{fontSize:a,metrics:o}}function pE(C,A,g,I){var B,Q,E,e,i,t;const a=Math.max(1,I.scale||1),o=Math.max(1,Math.round(C)),s=Math.max(1,Math.round(A)),n=Ma(),r=(B=I.color)!=null?B:"#ffffff",c=Math.max(0,(Q=I.padding)!=null?Q:2),h=Math.max(1,o-c*2),l=Math.max(1,s-c*2),w=Math.max(1,(i=(e=(E=I.maxFontSize)!=null?E:I.fontSize)!=null?e:pa(I.fontStyle))!=null?i:Math.max(8,l)),D=Math.max(1,Math.min((t=I.minFontSize)!=null?t:8,w)),y=r,R=`${I.style==="b"?"bold ":""}${w*a}px Arial`,F=ka(I.fontStyle,R,y),d=N=>Ya(F.font,N*a),f=Ka(n,g,a,d,h,l,D,RI(I.fontSize)?Math.min(I.fontSize,w):w),u=I.sizing==="intrinsic"?Math.max(1,Math.min(o,Math.ceil(f.metrics.width+c*2))):o,G=I.sizing==="intrinsic"?Math.max(1,Math.min(s,Math.ceil(f.metrics.height+c*2))):s,S=yI(u*a,G*a),M=FI(S);return M.clearRect(0,0,S.width,S.height),M.textAlign="center",M.textBaseline="middle",M.font=d(f.fontSize),M.fillStyle=F.color,M.fillText(g,S.width/2,S.height/2),{canvas:S,logicalWidth:u,logicalHeight:G}}async function ma(C,A,g,I){var B,Q,E,e,i,t;const a=C.spriteTable,o=new Set(A),s=new Map;for(let c=0;c<a.imageKeys.length;c++){const h=a.imageKeys[c];o.has(h)&&s.set(h,c)}const n=new Map,{frameCount:r}=a;for(const c of A){const h=s.get(c);if(h==null){const F=C.atlasRects.get(c);n.set(c,{width:(F==null?void 0:F.w)||1,height:(F==null?void 0:F.h)||1,renderScale:1});continue}let l=0,w=0,D=Number.POSITIVE_INFINITY;for(let F=0;F<r;F++){const d=(h*r+F)*9,f=(B=a.frameData[d])!=null?B:0,u=(Q=a.frameData[d+1])!=null?Q:0,G=(E=a.frameData[d+2])!=null?E:1,S=(e=a.frameData[d+3])!=null?e:0,M=(i=a.frameData[d+4])!=null?i:0,N=(t=a.frameData[d+5])!=null?t:1;if(l=Math.max(l,f),w=Math.max(w,u),f>0&&u>0){const U=Math.abs(G)*f+Math.abs(M)*u,p=Math.abs(S)*f+Math.abs(N)*u,k=U>0?U/f:1,m=p>0?p/u:1,H=Math.min(k||1,m||1);RI(H)&&(D=Math.min(D,H))}F+1<r&&g.shouldYield()&&(await g.yield(),I==null||I())}const y=RI(D)?D:1,R=C.atlasRects.get(c);n.set(c,{width:l||(R==null?void 0:R.w)||1,height:w||(R==null?void 0:R.h)||1,renderScale:y})}return n}function $B(C,A){if(RI(C))return!RI(A)||A===1?C:C/A}async function Ja(C,A,g,I=1){var B,Q,E;if(kE(C)){const i=(B=C.mode)!=null?B:"dynamic",t=pE(A,g,C.text,{scale:(Q=C.scale)!=null?Q:fa,color:C.color,style:C.style,fontStyle:C.fontStyle,fontSize:$B(C.fontSize,I),minFontSize:$B(C.minFontSize,I),maxFontSize:$B(C.maxFontSize,I),padding:C.padding,sizing:i==="dynamic"?"intrinsic":"box"});return{source:t.canvas,mode:i,logicalWidth:t.logicalWidth,logicalHeight:t.logicalHeight}}if(Na(C)){const i=typeof C.image=="string"?await YB(C.image):C.image,t=dI(i);return{source:i,mode:(E=C.mode)!=null?E:"replace",logicalWidth:Math.max(1,t.width||A),logicalHeight:Math.max(1,t.height||g)}}if(typeof C=="string"){const i=await YB(C),t=dI(i);return{source:i,mode:"replace",logicalWidth:Math.max(1,t.width||A),logicalHeight:Math.max(1,t.height||g)}}const e=dI(C);return{source:C,mode:"replace",logicalWidth:Math.max(1,e.width||A),logicalHeight:Math.max(1,e.height||g)}}async function La(C,A,g,I={}){var B,Q,E;const e=new Map;if(!g)return e;const i=Object.entries(g),t=OA({maxBudgetMs:I.frameBudgetMs}),a=await ma(A,i.map(([o])=>o),t,I.checkActive);for(let o=0;o<i.length;o++){const[s,n]=i[o];(B=I.checkActive)==null||B.call(I);const r=(Q=a.get(s))!=null?Q:{width:1,height:1,renderScale:1},c=await Ja(n,r.width,r.height,r.renderScale),h=dI(c.source),l=h.width||r.width,w=h.height||r.height,D=C.createTexture(c.source,{width:l,height:w,filter:"linear",premultiplyAlpha:!0});e.set(s,{texture:D,mode:c.mode,logicalWidth:c.logicalWidth,logicalHeight:c.logicalHeight}),o+1<i.length&&t.shouldYield()&&(await t.yield(),(E=I.checkActive)==null||E.call(I))}return e}function Ha(C,A){var g,I;if(!A)return;const B=String(C.srcId),Q=C.srcTag,E=Ua(C.srcTag);return(I=(g=A[Q])!=null?g:A[E])!=null?I:A[B]}function xa(C,A,g){var I,B,Q,E,e,i;const t=typeof A=="string"?A:A.text,a=(I=g==null?void 0:g.width)!=null?I:C.w&&C.w>0?C.w:1,o=(B=g==null?void 0:g.height)!=null?B:C.h&&C.h>0?C.h:1,s=pE(a,o,t,{scale:typeof A=="string"?1:(Q=A.scale)!=null?Q:1,color:typeof A=="string"?C.color:(E=A.color)!=null?E:C.color,style:typeof A=="string"?C.style:(e=A.style)!=null?e:C.style,fontStyle:typeof A=="string"?C.fontStyle:(i=A.fontStyle)!=null?i:C.fontStyle,fontSize:typeof A=="string"?void 0:A.fontSize,minFontSize:typeof A=="string"?void 0:A.minFontSize,maxFontSize:typeof A=="string"?void 0:A.maxFontSize,padding:typeof A=="string"?void 0:A.padding,sizing:"box"});return{source:s.canvas,width:s.canvas.width,height:s.canvas.height}}function ba(C,A){var g;const I=String(A);let B=0,Q=0;for(const E of(g=C.frame)!=null?g:[])for(const e of E.obj){if(String(e.srcId)!==I)continue;const[,,i,t]=e.frame;B=Math.max(B,i),Q=Math.max(Q,t)}return B>0&&Q>0?{width:B,height:Q}:void 0}async function qa(C){return typeof C=="string"?YB(C):YE(C)?typeof C.image=="string"?YB(C.image):dC(C.image):dC(C)}async function va(C,A){const g=new Map;if(!C.src||C.src.length===0||!A)return g;for(const I of C.src){const B=Ha(I,A);if(B==null)continue;if(I.srcType==="txt"){if(DQ(B)){const t=dC(B),a=dI(t);g.set(String(I.srcId),{source:t,width:Math.max(1,a.width),height:Math.max(1,a.height)});continue}const i=xa(I,typeof B=="string"||kE(B)?B:String(B),ba(C,I.srcId));g.set(String(I.srcId),i);continue}const Q=DQ(B)||typeof B=="string"||YE(B)?B:null;if(!Q)continue;const E=await qa(Q),e=dI(E);g.set(String(I.srcId),{source:E,width:Math.max(1,e.width),height:Math.max(1,e.height)})}return g}function Ta(C){var A;const g=new Map;for(const I of(A=C.frame)!=null?A:[]){const B=[...I.obj].sort((Q,E)=>{var e,i;return((e=Q.z)!=null?e:0)-((i=E.z)!=null?i:0)});for(const Q of B)Q.srcKey===void 0&&(Q.srcKey=String(Q.srcId));g.set(I.i,B)}return g}function Wa(C,A){const g=yI(C,A),I=yI(C,A),B=yI(1,1);return{compositeCanvas:g,compositeCtx:FI(g),rawCanvas:I,rawCtx:FI(I),scratchCanvas:B,scratchCtx:FI(B)}}function yQ(C,A,g,I,B=!0){var Q,E;if(!C.compositeCanvas||!C.compositeCtx||!C.rawCanvas||!C.rawCtx||!C.scratchCanvas||!C.scratchCtx)throw new Error("VAP CPU compositor state is incomplete");const{info:e}=A,i=e.videoW||C.width,t=e.videoH||C.height,[a,o,s,n]=e.rgbFrame,[r,c,h,l]=e.aFrame;(C.rawCanvas.width!==i||C.rawCanvas.height!==t)&&(C.rawCanvas.width=i,C.rawCanvas.height=t),C.rawCtx.clearRect(0,0,i,t),C.rawCtx.drawImage(g,0,0,i,t);const w=C.rawCtx.getImageData(0,0,i,t).data,D=C.compositeCtx.createImageData(C.width,C.height),y=D.data;for(let F=0;F<C.height;F++){const d=Math.min(t-1,Math.max(0,o+Math.floor(F/C.height*n))),f=Math.min(t-1,Math.max(0,c+Math.floor(F/C.height*l)));for(let u=0;u<C.width;u++){const G=Math.min(i-1,Math.max(0,a+Math.floor(u/C.width*s))),S=Math.min(i-1,Math.max(0,r+Math.floor(u/C.width*h))),M=(d*i+G)*4,N=(f*i+S)*4,U=w[N]/255,p=(F*C.width+u)*4,k=B?1:U;y[p]=Math.round(w[M]*k),y[p+1]=Math.round(w[M+1]*k),y[p+2]=Math.round(w[M+2]*k),y[p+3]=Math.round(U*255)}}const R=(Q=C.frameMap.get(I))!=null?Q:[];for(const F of R){const d=(E=C.resources)==null?void 0:E.get(String(F.srcId));if(!d)continue;const[f,u,G,S]=F.frame,[M,N,U,p]=F.mFrame;if(G<=0||S<=0||U<=0||p<=0)continue;(C.scratchCanvas.width!==G||C.scratchCanvas.height!==S)&&(C.scratchCanvas.width=Math.max(1,Math.round(G)),C.scratchCanvas.height=Math.max(1,Math.round(S))),C.scratchCtx.clearRect(0,0,C.scratchCanvas.width,C.scratchCanvas.height),C.scratchCtx.drawImage(d.source,0,0,C.scratchCanvas.width,C.scratchCanvas.height);const k=C.scratchCtx.getImageData(0,0,C.scratchCanvas.width,C.scratchCanvas.height).data,m=Math.max(0,Math.floor(f)),H=Math.max(0,Math.floor(u)),v=Math.min(C.width,Math.ceil(f+G)),j=Math.min(C.height,Math.ceil(u+S));for(let T=H;T<j;T++){const b=Math.min(C.scratchCanvas.height-1,Math.max(0,Math.floor((T-u)/S*C.scratchCanvas.height))),X=Math.min(t-1,Math.max(0,N+Math.floor((T-u)/S*p)));for(let Z=m;Z<v;Z++){const EA=Math.min(C.scratchCanvas.width-1,Math.max(0,Math.floor((Z-f)/G*C.scratchCanvas.width))),UA=Math.min(i-1,Math.max(0,M+Math.floor((Z-f)/G*U))),FA=(b*C.scratchCanvas.width+EA)*4,cA=(X*i+UA)*4,IA=k[FA+3]/255,Bg=w[cA]/255,CA=IA*Bg;if(CA<=0)continue;const V=(T*C.width+Z)*4,YA=k[FA]/255*CA,kA=k[FA+1]/255*CA,W=k[FA+2]/255*CA,pA=y[V+3]/255,LA=1-CA;y[V]=Math.round((YA+y[V]/255*LA)*255),y[V+1]=Math.round((kA+y[V+1]/255*LA)*255),y[V+2]=Math.round((W+y[V+2]/255*LA)*255),y[V+3]=Math.round((CA+pA*LA)*255)}}}return C.compositeCtx.putImageData(D,0,0),C.compositeCanvas}var Va=Object.defineProperty,Za=(C,A,g)=>A in C?Va(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,O=(C,A,g)=>Za(C,typeof A!="symbol"?A+"":A,g);const AC=1024,FQ=32,AB=class Ng{constructor(A){O(this,"instancedQuadVB",null),O(this,"instancedQuadIB",null),O(this,"quadVB",null),O(this,"quadIB",null),O(this,"rgbaWebGLQuadVB",null),O(this,"rgbaTopLeftQuadVB",null),O(this,"rgbaQuadIB",null),O(this,"wcDbgFirstDraw",new Set),O(this,"wcDbgNullWarns",new Map),O(this,"htmlGate"),O(this,"lastWcFrameRef",new Map),O(this,"scratchAtlasRemap",new Float32Array(4)),O(this,"instancePackScratch",new Float32Array(AC*FQ)),O(this,"scratchTransform",new Float32Array(16)),O(this,"contentSizeScratch",{w:0,h:0}),O(this,"rgbUVScratch",{left:0,right:0,top:0,bottom:0}),O(this,"alphaUVScratch",{left:0,right:0,top:0,bottom:0}),O(this,"maskUVScratch",{left:0,right:0,top:0,bottom:0}),O(this,"processedHtmlGatesScratch",new Set),O(this,"vapVertexScratch",new Float32Array(24)),O(this,"layoutScratch",{scaleX:1,scaleY:1,width:0,height:0,offsetX:0,offsetY:0}),O(this,"clipScratch",{x:0,y:0,w:0,h:0}),O(this,"instancedListScratch",[]),O(this,"instancedByTexScratch",new Map),O(this,"instancedTexturesScratch",[]),O(this,"instancedUniformsScratch",{u_projection:new Float32Array(16),u_video:0}),O(this,"instancedDrawCommand",{shader:"vap-instanced",vertexBuffer:null,indexBuffer:null,indexCount:6,instanceCount:0,instanceData:this.instancePackScratch,textures:this.instancedTexturesScratch,uniforms:this.instancedUniformsScratch}),O(this,"geometryTexturesScratch",[]),O(this,"geometryUniformsScratch",{u_projection:new Float32Array(16),u_transform:this.scratchTransform,u_atlasRemap:this.scratchAtlasRemap,u_opacity:1,u_rgbPremultiplied:1,u_video:0}),O(this,"geometryDrawCommand",{shader:"vap",vertexBuffer:null,indexBuffer:null,indexCount:6,textures:this.geometryTexturesScratch,uniforms:this.geometryUniformsScratch}),O(this,"mixedGeometryTexturesScratch",[]),O(this,"mixedGeometryUniformsScratch",{u_projection:new Float32Array(16),u_transform:this.scratchTransform,u_atlasRemap:UE,u_opacity:1,u_video:0}),O(this,"mixedGeometryDrawCommand",{shader:"rgba-textured",vertexBuffer:null,indexBuffer:null,indexCount:6,textures:this.mixedGeometryTexturesScratch,uniforms:this.mixedGeometryUniformsScratch}),O(this,"overlayTexturesScratch",[]),O(this,"overlayUniformsScratch",{u_projection:new Float32Array(16),u_transform:this.scratchTransform,u_atlasRemap:this.scratchAtlasRemap,u_opacity:1,u_resource:0,u_video:1}),O(this,"overlayDrawCommand",{shader:"vap-mix-overlay",vertexBuffer:null,indexBuffer:null,indexCount:6,textures:this.overlayTexturesScratch,uniforms:this.overlayUniformsScratch}),O(this,"projCacheW",0),O(this,"projCacheH",0),O(this,"projCache",null),this.htmlGate=new NE(A)}syncVideoTextures(A,g){var I,B,Q,E;let e=!1;const i=this.processedHtmlGatesScratch;i.clear();for(const t of g.values()){if(t.type!=="vap"||t.paused||t.state!=="playing"&&t.state!=="fly"&&t.state!=="stopped"||!t.videoTextureHandle)continue;if(((I=t.vapMixState)==null?void 0:I.mode)==="composited"){e=this.syncMixedTexture(A,t)||e;continue}const a=t.webcodecsPlayback;if(a){const o=(B=t.wcPlaybackTime)!=null?B:0,s=a.getFrameForTime(o);if(this.wcDbgFirstDraw.has(t.id)||(this.wcDbgFirstDraw.add(t.id),console.info("[GiftStage:WC] VAP first draw",{giftId:t.id,state:t.state,t:o,hasFrame:!!s,canvasBuf:`${A.canvas.width}x${A.canvas.height}`})),s){const n=t.webcodecsSurface;if(((E=n==null?void 0:n.lastUploadedFrame)!=null?E:this.lastWcFrameRef.get(t.id))!==s){const c=t.wcAtlasRect;c?A.updateTextureRegion(t.videoTextureHandle,s,c.x,c.y,c.w,c.h):A.updateTexture(t.videoTextureHandle,s),n?n.lastUploadedFrame=s:this.lastWcFrameRef.set(t.id,s),e=!0}}else{const n=((Q=this.wcDbgNullWarns.get(t.id))!=null?Q:0)+1;this.wcDbgNullWarns.set(t.id,n),n<=5&&console.warn("[GiftStage:WC] VAP getFrameForTime null",{giftId:t.id,t:o,n})}}else if(t.videoElement){const o=this.getHtmlVideoGateId(t);if(i.has(o))continue;i.add(o),this.htmlGate.preUpload(o,t.videoElement)&&(A.updateTexture(t.videoTextureHandle,t.videoElement),e=!0)}}return e}draw(A,g){(A.type==="webgpu"||A.type==="webgl2")&&this.drawInstancedVapBatches(A,g);for(const I of g.values())if(I.type==="vap"&&!(I.state!=="playing"&&I.state!=="fly"&&I.state!=="stopped")&&!(!I.videoElement&&!I.webcodecsPlayback||!I.videoTextureHandle)){if(I.vapMixState){I.vapMixState.mode==="direct"?this.drawMixedDirectGeometry(A,I):this.drawMixedGeometry(A,I);continue}(A.type==="webgpu"||A.type==="webgl2")&&XA(I)!=="cover"||this.drawGeometry(A,I)}}drawSlot(A,g){if(g.type==="vap"&&!(g.state!=="playing"&&g.state!=="fly"&&g.state!=="stopped")&&!(!g.videoElement&&!g.webcodecsPlayback||!g.videoTextureHandle)){if(g.vapMixState){g.vapMixState.mode==="direct"?this.drawMixedDirectGeometry(A,g):this.drawMixedGeometry(A,g);return}this.drawGeometry(A,g)}}drawInstancedVapBatches(A,g){const I=this.instancedListScratch;I.length=0;for(const a of g.values())a.type!=="vap"||a.state!=="playing"&&a.state!=="fly"&&a.state!=="stopped"||a.vapMixState||!a.videoElement&&!a.webcodecsPlayback||!a.videoTextureHandle||XA(a)==="cover"||!a.vapConfig||I.push(a);if(I.length===0)return;this.instancedQuadVB||(this.instancedQuadVB=A.createBuffer(Ng.QUAD_VERTS,"vertex"),this.instancedQuadIB=A.createBuffer(Ng.QUAD_INDICES,"index"));const B=A.canvas.width,Q=A.canvas.height;let E;this.projCache&&this.projCacheW===B&&this.projCacheH===Q?E=this.projCache:(this.projCacheW=B,this.projCacheH=Q,this.projCache=Kg(0,B,Q,0,-1,1),E=this.projCache);const e=this.instancedByTexScratch;for(const a of e.values())a.length=0;for(const a of I){const o=a.videoTextureHandle.id;let s=e.get(o);s||(s=[],e.set(o,s)),s.push(a)}const i=this.instancePackScratch,t=this.instancedDrawCommand;t.vertexBuffer=this.instancedQuadVB,t.indexBuffer=this.instancedQuadIB,this.instancedUniformsScratch.u_projection=E;for(const[a,o]of e){if(o.length===0){e.delete(a);continue}for(let s=0;s<o.length;s+=AC){const n=Math.min(AC,o.length-s);for(let r=0;r<n;r++)this.fillVapInstanceData(o[s+r],i,r*FQ);t.instanceCount=n,this.instancedTexturesScratch[0]=o[s].videoTextureHandle,this.instancedTexturesScratch.length=1,vg(A.draw(t),"VAP instanced draw")}}}fillVapInstanceData(A,g,I){var B,Q,E,e;const i=A.vapConfig,{info:t}=i,a=t.videoW>0?t.videoW:(Q=(B=A.webcodecsPlayback)==null?void 0:B.videoWidth)!=null?Q:1,o=t.videoH>0?t.videoH:(e=(E=A.webcodecsPlayback)==null?void 0:E.videoHeight)!=null?e:1,s=this.scratchTransform,{w:n,h:r}=CI(t,this.contentSizeScratch),c=Fg(A,n,r,this.layoutScratch);nI(A,A.x+c.offsetX,A.y+c.offsetY,c.width,c.height,s),g.set(s,I);const h=SI(t.rgbFrame,a,o,this.rgbUVScratch),l=SI(t.aFrame,a,o,this.alphaUVScratch),w=A.videoTextureHandle,D=kB(w.width,w.height,A.wcAtlasRect,this.scratchAtlasRemap);g.set(D,I+16);const y=I+20;g[y+0]=h.left,g[y+1]=h.right,g[y+2]=h.top,g[y+3]=h.bottom,g[y+4]=l.left,g[y+5]=l.right,g[y+6]=l.top,g[y+7]=l.bottom,g[y+8]=A.opacity,g[y+9]=A.options.videoRGBAlphaMode!=="straight"?1:0,g[y+10]=0,g[y+11]=0}syncMixedTexture(A,g){var I;const B=g.vapConfig,Q=g.vapMixState;if(!B||!Q||Q.mode!=="composited"||!g.videoTextureHandle)return!1;const E=this.getMixedFrameIndex(g,B),e=g.webcodecsPlayback;if(e){const t=(I=g.wcPlaybackTime)!=null?I:0,a=e.getFrameForTime(t);if(!a||Q.lastSourceRef===a&&Q.lastFrameIndex===E)return!1;const o=Q.composer?Q.composer.render(a,E):yQ(Q,B,a,E,g.options.videoRGBAlphaMode!=="straight");return A.updateTexture(g.videoTextureHandle,o),Q.lastSourceRef=a,Q.lastFrameIndex=E,!0}if(!g.videoElement||!this.htmlGate.preUpload(g.id,g.videoElement)&&Q.lastFrameIndex===E)return!1;const i=Q.composer?Q.composer.render(g.videoElement,E):yQ(Q,B,g.videoElement,E,g.options.videoRGBAlphaMode!=="straight");return A.updateTexture(g.videoTextureHandle,i),Q.lastSourceRef=g.videoElement,Q.lastFrameIndex=E,!0}releaseHtmlVideo(A){var g;this.htmlGate.release(this.getHtmlVideoGateId(A),(g=A.videoElement)!=null?g:void 0)}clearWebCodecsFrameRef(A){this.lastWcFrameRef.delete(A),this.wcDbgFirstDraw.delete(A),this.wcDbgNullWarns.delete(A)}drawGeometry(A,g){var I,B,Q,E;const e=A.canvas.width,i=A.canvas.height;let t;this.projCache&&this.projCacheW===e&&this.projCacheH===i?t=this.projCache:(this.projCacheW=e,this.projCacheH=i,this.projCache=Kg(0,e,i,0,-1,1),t=this.projCache);const a=g.vapConfig;if(!a){console.warn("[GiftStage:WC] VAP vapConfig missing — draw skipped",{giftId:g.id});return}const{info:o}=a,s=o.videoW>0?o.videoW:(B=(I=g.webcodecsPlayback)==null?void 0:I.videoWidth)!=null?B:1,n=o.videoH>0?o.videoH:(E=(Q=g.webcodecsPlayback)==null?void 0:Q.videoHeight)!=null?E:1,r=this.scratchTransform,c=XA(g),{w:h,h:l}=CI(o,this.contentSizeScratch),w=Fg(g,h,l,this.layoutScratch);nI(g,g.x+w.offsetX,g.y+w.offsetY,w.width,w.height,r);const D=SI(o.rgbFrame,s,n,this.rgbUVScratch),y=SI(o.aFrame,s,n,this.alphaUVScratch),R=g.videoTextureHandle,F=kB(R.width,R.height,g.wcAtlasRect,this.scratchAtlasRemap),d=this.vapVertexScratch;d[0]=0,d[1]=0,d[2]=D.left,d[3]=D.top,d[4]=y.left,d[5]=y.top,d[6]=1,d[7]=0,d[8]=D.right,d[9]=D.top,d[10]=y.right,d[11]=y.top,d[12]=1,d[13]=1,d[14]=D.right,d[15]=D.bottom,d[16]=y.right,d[17]=y.bottom,d[18]=0,d[19]=1,d[20]=D.left,d[21]=D.bottom,d[22]=y.left,d[23]=y.bottom,this.quadVB=this.ensureBuffer(A,this.quadVB,d,"vertex"),this.quadIB||(this.quadIB=A.createBuffer(Ng.QUAD_INDICES,"index"));const f=this.geometryDrawCommand;if(f.vertexBuffer=this.quadVB,f.indexBuffer=this.quadIB,this.geometryTexturesScratch[0]=g.videoTextureHandle,this.geometryTexturesScratch.length=1,this.geometryUniformsScratch.u_projection=t,this.geometryUniformsScratch.u_transform=r,this.geometryUniformsScratch.u_atlasRemap=F,this.geometryUniformsScratch.u_opacity=g.opacity,this.geometryUniformsScratch.u_rgbPremultiplied=g.options.videoRGBAlphaMode!=="straight"?1:0,c==="cover"){const u=Sg(g,g.x,g.y,g.width*rg(g),g.height*cg(g),this.clipScratch);A.setScissor(u.x,u.y,u.w,u.h)}vg(A.draw(f),"VAP draw"),c==="cover"&&A.resetScissor()}drawMixedGeometry(A,g){const I=A.canvas.width,B=A.canvas.height;let Q;this.projCache&&this.projCacheW===I&&this.projCacheH===B?Q=this.projCache:(this.projCacheW=I,this.projCacheH=B,this.projCache=Kg(0,I,B,0,-1,1),Q=this.projCache);const E=g.vapConfig;if(!E||!g.vapMixState||g.vapMixState.mode!=="composited"||!g.videoTextureHandle)return;const e=this.scratchTransform,i=XA(g),{w:t,h:a}=CI(E.info,this.contentSizeScratch),o=Fg(g,t,a,this.layoutScratch);nI(g,g.x+o.offsetX,g.y+o.offsetY,o.width,o.height,e);const s=!!g.vapMixState.composer||A.type==="webgpu";let n=s?this.rgbaTopLeftQuadVB:this.rgbaWebGLQuadVB;if(n||(n=A.createBuffer(s?Ng.RGBA_QUAD_VERTS_WEBGPU:Ng.RGBA_QUAD_VERTS_WEBGL,"vertex"),s?this.rgbaTopLeftQuadVB=n:this.rgbaWebGLQuadVB=n),this.rgbaQuadIB||(this.rgbaQuadIB=A.createBuffer(Ng.QUAD_INDICES,"index")),i==="cover"){const c=Sg(g,g.x,g.y,g.width*rg(g),g.height*cg(g),this.clipScratch);A.setScissor(c.x,c.y,c.w,c.h)}const r=this.mixedGeometryDrawCommand;r.vertexBuffer=n,r.indexBuffer=this.rgbaQuadIB,this.mixedGeometryTexturesScratch[0]=g.videoTextureHandle,this.mixedGeometryTexturesScratch.length=1,this.mixedGeometryUniformsScratch.u_projection=Q,this.mixedGeometryUniformsScratch.u_transform=e,this.mixedGeometryUniformsScratch.u_opacity=g.opacity,vg(A.draw(r),"VAP mix draw"),i==="cover"&&A.resetScissor()}drawMixedDirectGeometry(A,g){var I;const B=g.vapConfig,Q=g.vapMixState,E=g.videoTextureHandle;if(!B||!Q||Q.mode!=="direct"||!Q.resourceTextures||!E)return;this.drawGeometry(A,g);const e=Q.frameMap.get(this.getMixedFrameIndex(g,B));if(!e||e.length===0)return;const i=A.canvas.width,t=A.canvas.height;let a;this.projCache&&this.projCacheW===i&&this.projCacheH===t?a=this.projCache:(this.projCacheW=i,this.projCacheH=t,this.projCache=Kg(0,i,t,0,-1,1),a=this.projCache),this.rgbaTopLeftQuadVB||(this.rgbaTopLeftQuadVB=A.createBuffer(Ng.RGBA_QUAD_VERTS_WEBGPU,"vertex")),this.rgbaQuadIB||(this.rgbaQuadIB=A.createBuffer(Ng.QUAD_INDICES,"index"));const{info:o}=B,{w:s,h:n}=CI(o,this.contentSizeScratch),r=Fg(g,s,n,this.layoutScratch);if(XA(g)==="cover"){const y=Sg(g,g.x,g.y,g.width*rg(g),g.height*cg(g),this.clipScratch);A.setScissor(y.x,y.y,y.w,y.h)}else{const y=Sg(g,g.x+r.offsetX,g.y+r.offsetY,r.width,r.height,this.clipScratch);A.setScissor(y.x,y.y,y.w,y.h)}const c=o.videoW>0?o.videoW:E.width,h=o.videoH>0?o.videoH:E.height,l=this.scratchTransform,w=this.scratchAtlasRemap,D=this.overlayDrawCommand;D.vertexBuffer=this.rgbaTopLeftQuadVB,D.indexBuffer=this.rgbaQuadIB,this.overlayUniformsScratch.u_projection=a,this.overlayUniformsScratch.u_opacity=g.opacity;for(const y of e){const R=Q.resourceTextures.get((I=y.srcKey)!=null?I:String(y.srcId));if(!R)continue;const[F,d,f,u]=y.frame,[,,G,S]=y.mFrame;if(f<=0||u<=0||G<=0||S<=0)continue;nI(g,g.x+r.offsetX+F*r.scaleX,g.y+r.offsetY+d*r.scaleY,f*r.scaleX,u*r.scaleY,l);const M=SI(y.mFrame,c,h,this.maskUVScratch);w[0]=M.left,w[1]=M.right,w[2]=M.top,w[3]=M.bottom,this.overlayTexturesScratch[0]=R,this.overlayTexturesScratch[1]=E,this.overlayTexturesScratch.length=2,vg(A.draw(D),"VAP overlay draw")}A.resetScissor()}ensureBuffer(A,g,I,B){return g?(A.updateBuffer(g,I),g):A.createBuffer(I,B)}destroy(A){this.instancedQuadVB&&A.deleteBuffer(this.instancedQuadVB),this.instancedQuadIB&&A.deleteBuffer(this.instancedQuadIB),this.quadVB&&A.deleteBuffer(this.quadVB),this.quadIB&&A.deleteBuffer(this.quadIB),this.rgbaWebGLQuadVB&&A.deleteBuffer(this.rgbaWebGLQuadVB),this.rgbaTopLeftQuadVB&&A.deleteBuffer(this.rgbaTopLeftQuadVB),this.rgbaQuadIB&&A.deleteBuffer(this.rgbaQuadIB),this.instancedQuadVB=null,this.instancedQuadIB=null,this.quadVB=null,this.quadIB=null,this.rgbaWebGLQuadVB=null,this.rgbaTopLeftQuadVB=null,this.rgbaQuadIB=null,this.lastWcFrameRef.clear(),this.processedHtmlGatesScratch.clear(),this.projCache=null,this.projCacheW=0,this.projCacheH=0}getMixedFrameIndex(A,g){var I,B,Q;if(A.webcodecsPlayback)return Math.max(0,Math.round(((I=A.wcPlaybackTime)!=null?I:0)*g.info.fps));const E=this.htmlGate.getFrameInfo(A.id),e=E==null?void 0:E.mediaTime;return typeof e=="number"&&Number.isFinite(e)&&e>=0?Math.max(0,Math.round(e*g.info.fps)):Math.max(0,Math.round(((Q=(B=A.videoElement)==null?void 0:B.currentTime)!=null?Q:0)*g.info.fps))}getHtmlVideoGateId(A){return A.releaseSharedVideoTexture&&A.videoTextureHandle?`shared:${A.videoTextureHandle.id}`:A.id}};O(AB,"QUAD_VERTS",new Float32Array([0,0,.5,1,1,0,1,1,1,1,1,0,0,1,.5,0]));O(AB,"RGBA_QUAD_VERTS_WEBGL",new Float32Array([0,0,0,1,1,0,1,1,1,1,1,0,0,1,0,0]));O(AB,"RGBA_QUAD_VERTS_WEBGPU",new Float32Array([0,0,0,0,1,0,1,0,1,1,1,1,0,1,0,1]));O(AB,"QUAD_INDICES",new Uint32Array([0,1,2,0,2,3]));let KE=AB;var Xa=Object.defineProperty,Oa=(C,A,g)=>A in C?Xa(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,sA=(C,A,g)=>Oa(C,typeof A!="symbol"?A+"":A,g);const dQ=1024,GQ=12,bC=class KI{constructor(A){sA(this,"quadVB",null),sA(this,"quadIB",null),sA(this,"instancePackScratch",new Float32Array(dQ*GQ)),sA(this,"projCacheW",0),sA(this,"projCacheH",0),sA(this,"projCache",null),sA(this,"scratchTransform",new Float32Array(16)),sA(this,"contentSizeScratch",{w:0,h:0}),sA(this,"layoutScratch",{scaleX:1,scaleY:1,width:0,height:0,offsetX:0,offsetY:0}),sA(this,"clipScratch",{x:0,y:0,w:0,h:0}),sA(this,"wcDbgFirstDraw",new Set),sA(this,"wcDbgNullWarns",new Map),sA(this,"htmlGate"),sA(this,"lastWcFrameRef",new Map),sA(this,"scratchAtlasRemap",new Float32Array(4)),sA(this,"processedHtmlGatesScratch",new Set),sA(this,"instancedTexturesScratch",[]),sA(this,"instancedUniformsScratch",{u_projection:new Float32Array(16),u_video:0}),sA(this,"instancedDrawCommand",{shader:"alpha-video-instanced",vertexBuffer:null,indexBuffer:null,indexCount:6,instanceCount:0,instanceData:this.instancePackScratch,textures:this.instancedTexturesScratch,uniforms:this.instancedUniformsScratch}),sA(this,"geometryTexturesScratch",[]),sA(this,"geometryUniformsScratch",{u_projection:new Float32Array(16),u_transform:this.scratchTransform,u_atlasRemap:this.scratchAtlasRemap,u_opacity:1,u_rgbPremultiplied:1,u_video:0}),sA(this,"geometryDrawCommand",{shader:"alpha-video",vertexBuffer:null,indexBuffer:null,indexCount:6,textures:this.geometryTexturesScratch,uniforms:this.geometryUniformsScratch}),this.htmlGate=new NE(A)}static alphaVideoContentSize(A,g){if(A.webcodecsPlayback){const E=A.webcodecsPlayback.videoWidth,e=A.webcodecsPlayback.videoHeight;return g.w=E>0?E*.5:0,g.h=e,g}const I=A.videoElement,B=I.videoWidth,Q=I.videoHeight;return g.w=B>0?B*.5:0,g.h=Q,g}syncVideoTextures(A,g){var I,B,Q;let E=!1;const e=this.processedHtmlGatesScratch;e.clear();for(const i of g.values()){if(i.type!=="alphaVideo"||i.paused||i.state!=="playing"&&i.state!=="fly"||!i.videoTextureHandle)continue;const t=i.webcodecsPlayback;if(t){const a=(I=i.wcPlaybackTime)!=null?I:0,o=t.getFrameForTime(a);if(this.wcDbgFirstDraw.has(i.id)||(this.wcDbgFirstDraw.add(i.id),console.info("[GiftStage:WC] alphaVideo first draw",{giftId:i.id,state:i.state,t:a,hasFrame:!!o,canvasBuf:`${A.canvas.width}x${A.canvas.height}`})),o){const s=i.webcodecsSurface;if(((Q=s==null?void 0:s.lastUploadedFrame)!=null?Q:this.lastWcFrameRef.get(i.id))!==o){const r=i.wcAtlasRect;r?A.updateTextureRegion(i.videoTextureHandle,o,r.x,r.y,r.w,r.h):A.updateTexture(i.videoTextureHandle,o),s?s.lastUploadedFrame=o:this.lastWcFrameRef.set(i.id,o),E=!0}}else{const s=((B=this.wcDbgNullWarns.get(i.id))!=null?B:0)+1;this.wcDbgNullWarns.set(i.id,s),s<=5&&console.warn("[GiftStage:WC] alphaVideo getFrameForTime null",{giftId:i.id,t:a,n:s})}}else if(i.videoElement){const a=this.getHtmlVideoGateId(i);if(e.has(a))continue;e.add(a),this.htmlGate.preUpload(a,i.videoElement)&&(A.updateTexture(i.videoTextureHandle,i.videoElement),E=!0)}}return E}draw(A,g){if(A.type==="webgpu"||A.type==="webgl2"){this.drawInstancedAlphaBatches(A,g);return}for(const I of g.values())I.type==="alphaVideo"&&(I.state!=="playing"&&I.state!=="fly"&&I.state!=="stopped"||!I.videoElement&&!I.webcodecsPlayback||!I.videoTextureHandle||this.drawGeometry(A,I))}drawSlot(A,g){g.type==="alphaVideo"&&(g.state!=="playing"&&g.state!=="fly"&&g.state!=="stopped"||!g.videoElement&&!g.webcodecsPlayback||!g.videoTextureHandle||this.drawGeometry(A,g))}drawInstancedAlphaBatches(A,g){var I;let B=null,Q=0,E=null;const e=this.instancePackScratch;for(const i of g.values()){if(i.type!=="alphaVideo"||i.state!=="playing"&&i.state!=="fly"&&i.state!=="stopped"||!i.videoElement&&!i.webcodecsPlayback||!i.videoTextureHandle)continue;if(XA(i)==="cover"||((I=i.rotation)!=null?I:0)!==0){B&&Q>0&&E&&(this.flushInstancedBatch(A,B,Q,E),B=null,Q=0),this.drawGeometry(A,i);continue}const t=i.videoTextureHandle;B&&B.id!==t.id&&Q>0&&E&&(this.flushInstancedBatch(A,B,Q,E),B=null,Q=0),B||(this.ensureQuadBuffers(A),E=this.getProjection(A),B=t),this.fillAlphaInstanceData(i,e,Q*GQ),Q++,Q===dQ&&(this.flushInstancedBatch(A,B,Q,E),B=null,Q=0)}B&&Q>0&&E&&this.flushInstancedBatch(A,B,Q,E)}flushInstancedBatch(A,g,I,B){const Q=this.instancedDrawCommand;Q.vertexBuffer=this.quadVB,Q.indexBuffer=this.quadIB,Q.instanceCount=I,this.instancedTexturesScratch[0]=g,this.instancedTexturesScratch.length=1,this.instancedUniformsScratch.u_projection=B,vg(A.draw(Q),"alpha-video instanced draw")}fillAlphaInstanceData(A,g,I){const B=KI.alphaVideoContentSize(A,this.contentSizeScratch),Q=Fg(A,B.w,B.h,this.layoutScratch);g[I+0]=A.x+Q.offsetX,g[I+1]=A.y+Q.offsetY,g[I+2]=Q.width,g[I+3]=Q.height;const E=A.videoTextureHandle,e=kB(E.width,E.height,A.wcAtlasRect,this.scratchAtlasRemap);g.set(e,I+4),g[I+8]=A.opacity,g[I+9]=A.options.videoRGBAlphaMode!=="straight"?1:0,g[I+10]=0,g[I+11]=0}releaseHtmlVideo(A){var g;this.htmlGate.release(this.getHtmlVideoGateId(A),(g=A.videoElement)!=null?g:void 0)}clearWebCodecsFrameRef(A){this.lastWcFrameRef.delete(A),this.wcDbgFirstDraw.delete(A),this.wcDbgNullWarns.delete(A)}getHtmlVideoGateId(A){return A.releaseSharedVideoTexture&&A.videoTextureHandle?`shared:${A.videoTextureHandle.id}`:A.id}drawGeometry(A,g){const I=this.getProjection(A),B=this.scratchTransform,Q=XA(g),E=KI.alphaVideoContentSize(g,this.contentSizeScratch),e=Fg(g,E.w,E.h,this.layoutScratch);nI(g,g.x+e.offsetX,g.y+e.offsetY,e.width,e.height,B),this.ensureQuadBuffers(A);const i=g.videoTextureHandle,t=kB(i.width,i.height,g.wcAtlasRect,this.scratchAtlasRemap),a=this.geometryDrawCommand;if(a.vertexBuffer=this.quadVB,a.indexBuffer=this.quadIB,this.geometryTexturesScratch[0]=i,this.geometryTexturesScratch.length=1,this.geometryUniformsScratch.u_projection=I,this.geometryUniformsScratch.u_transform=B,this.geometryUniformsScratch.u_atlasRemap=t,this.geometryUniformsScratch.u_opacity=g.opacity,this.geometryUniformsScratch.u_rgbPremultiplied=g.options.videoRGBAlphaMode!=="straight"?1:0,Q==="cover"){const o=Sg(g,g.x,g.y,g.width*rg(g),g.height*cg(g),this.clipScratch);A.setScissor(o.x,o.y,o.w,o.h)}vg(A.draw(a),"alpha-video draw"),Q==="cover"&&A.resetScissor()}ensureQuadBuffers(A){this.quadVB||(this.quadVB=A.createBuffer(KI.QUAD_VERTS,"vertex"),this.quadIB=A.createBuffer(KI.QUAD_INDICES,"index"))}getProjection(A){const g=A.canvas.width,I=A.canvas.height;return this.projCache&&this.projCacheW===g&&this.projCacheH===I?this.projCache:(this.projCacheW=g,this.projCacheH=I,this.projCache=Kg(0,g,I,0,-1,1),this.projCache)}destroy(A){this.quadVB&&A.deleteBuffer(this.quadVB),this.quadIB&&A.deleteBuffer(this.quadIB),this.quadVB=null,this.quadIB=null,this.projCache=null,this.projCacheW=0,this.projCacheH=0,this.lastWcFrameRef.clear(),this.processedHtmlGatesScratch.clear()}};sA(bC,"QUAD_VERTS",new Float32Array([0,0,.5,1,1,0,1,1,1,1,1,0,0,1,.5,0]));sA(bC,"QUAD_INDICES",new Uint32Array([0,1,2,0,2,3]));let mE=bC;var Pa=Object.defineProperty,ja=(C,A,g)=>A in C?Pa(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,tg=(C,A,g)=>ja(C,typeof A!="symbol"?A+"":A,g);const qC=class GC{constructor(){tg(this,"quadVB",null),tg(this,"quadIB",null),tg(this,"scratchTransform",new Float32Array(16)),tg(this,"layoutScratch",{scaleX:1,scaleY:1,width:0,height:0,offsetX:0,offsetY:0}),tg(this,"clipScratch",{x:0,y:0,w:0,h:0}),tg(this,"projCacheW",0),tg(this,"projCacheH",0),tg(this,"projCache",null),tg(this,"texturesScratch",[]),tg(this,"uniformsScratch",{u_projection:new Float32Array(16),u_transform:this.scratchTransform,u_atlasRemap:UE,u_opacity:1,u_video:0}),tg(this,"drawCommand",{shader:"rgba-textured",vertexBuffer:null,indexBuffer:null,indexCount:6,textures:this.texturesScratch,uniforms:this.uniformsScratch})}drawSlot(A,g){if(g.type!=="image"||!g.imageTextureHandle||g.state!=="playing"&&g.state!=="fly"&&g.state!=="stopped")return;const I=g.imageTextureHandle,B=Fg(g,I.width,I.height,this.layoutScratch),Q=g.x+B.offsetX,E=g.y+B.offsetY;nI(g,Q,E,B.width,B.height,this.scratchTransform);let e=this.quadVB;e||(e=A.createBuffer(GC.QUAD_VERTS,"vertex"),this.quadVB=e),this.quadIB||(this.quadIB=A.createBuffer(GC.QUAD_INDICES,"index"));const i=A.canvas.width,t=A.canvas.height;(!this.projCache||this.projCacheW!==i||this.projCacheH!==t)&&(this.projCacheW=i,this.projCacheH=t,this.projCache=Kg(0,i,t,0,-1,1));const a=XA(g)==="cover";if(a){const o=Sg(g,g.x,g.y,g.width*rg(g),g.height*cg(g),this.clipScratch);A.setScissor(o.x,o.y,o.w,o.h)}this.drawCommand.vertexBuffer=e,this.drawCommand.indexBuffer=this.quadIB,this.texturesScratch[0]=I,this.texturesScratch.length=1,this.uniformsScratch.u_projection=this.projCache,this.uniformsScratch.u_opacity=g.opacity,vg(A.draw(this.drawCommand),"image draw"),a&&A.resetScissor()}destroy(A){this.quadVB&&A.deleteBuffer(this.quadVB),this.quadIB&&A.deleteBuffer(this.quadIB),this.quadVB=null,this.quadIB=null,this.projCache=null}};tg(qC,"QUAD_VERTS",new Float32Array([0,0,0,0,1,0,1,0,1,1,1,1,0,1,0,1]));tg(qC,"QUAD_INDICES",new Uint32Array([0,1,2,0,2,3]));let JE=qC;var za=Object.defineProperty,_a=(C,A,g)=>A in C?za(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,rB=(C,A,g)=>_a(C,typeof A!="symbol"?A+"":A,g);class LE{constructor(){rB(this,"animations",new Map),rB(this,"completedScratch",[]),rB(this,"individuallyPaused",new Set),rB(this,"globallyPaused",!1)}startFly(A,g,I,B,Q,E,e,i=A.opacity,t=(a=>(a=A.rotation)!=null?a:0)()){this.startTween(A,g,I,B,Q,E,e,void 0,i,t)}startTween(A,g,I,B,Q,E,e,i,t=A.opacity,a=(o=>(o=A.rotation)!=null?o:0)()){var o;this.cancelForGift(A.id),this.animations.set(A.id,{giftId:A.id,startX:A.x,startY:A.y,startScale:A.scale,startOpacity:A.opacity,startRotation:(o=A.rotation)!=null?o:0,targetX:g,targetY:I,targetScale:B,targetOpacity:t,targetRotation:a,startTime:-1,pausedAt:this.globallyPaused||this.individuallyPaused.has(A.id)?performance.now():void 0,duration:Q,easing:E,onComplete:e,onCancel:i})}startTweenPromise(A,g,I,B,Q,E,e,i=A.opacity,t=(a=>(a=A.rotation)!=null?a:0)()){return new Promise(a=>{this.startTween(A,g,I,B,Q,E,()=>{e==null||e(),a()},a,i,t)})}startSequence(A,g){return this.cancelForGift(A.id),g.length===0?Promise.resolve():new Promise(I=>{let B=0;const Q=()=>{var E,e;const i=g[B++];if(!i){I();return}this.startTween(A,i.targetX,i.targetY,i.targetScale,i.duration,i.easing,()=>{var t;(t=i.onComplete)==null||t.call(i),Q()},void 0,i.targetOpacity,(e=(E=i.targetRotation)!=null?E:A.rotation)!=null?e:0)};Q()})}update(A){var g,I;const B=this.completedScratch;B.length=0;for(const[Q,E]of this.animations){E.startTime<0&&(E.startTime=A);const e=(g=E.pausedAt)!=null?g:A;uB((e-E.startTime)/E.duration,0,1)>=1&&(this.animations.delete(Q),B.push(E))}for(const Q of B)(I=Q.onComplete)==null||I.call(Q);B.length=0}getAnimatedState(A,g){var I;const B=this.animations.get(A);if(!B)return null;B.startTime<0&&(B.startTime=g);const Q=uB((((I=B.pausedAt)!=null?I:g)-B.startTime)/B.duration,0,1),E=B.easing(Q);return{x:lg(B.startX,B.targetX,E),y:lg(B.startY,B.targetY,E),scale:lg(B.startScale,B.targetScale,E),opacity:lg(B.startOpacity,B.targetOpacity,E),rotation:lg(B.startRotation,B.targetRotation,E)}}applyAnimatedState(A,g){var I;const B=this.animations.get(A.id);if(!B)return!1;B.startTime<0&&(B.startTime=g);const Q=uB((((I=B.pausedAt)!=null?I:g)-B.startTime)/B.duration,0,1),E=B.easing(Q);return A.x=lg(B.startX,B.targetX,E),A.y=lg(B.startY,B.targetY,E),A.scale=lg(B.startScale,B.targetScale,E),A.opacity=lg(B.startOpacity,B.targetOpacity,E),A.rotation=lg(B.startRotation,B.targetRotation,E),!0}hasAnimation(A){return this.animations.has(A)}hasActiveAnimations(){return this.animations.size>0}hasRunningAnimations(){for(const A of this.animations.values())if(A.pausedAt==null)return!0;return!1}pauseForGift(A,g=performance.now()){this.individuallyPaused.add(A);const I=this.animations.get(A);!I||I.pausedAt!=null||(I.pausedAt=g)}resumeForGift(A,g=performance.now()){if(this.individuallyPaused.delete(A),this.globallyPaused)return;const I=this.animations.get(A);!I||I.pausedAt==null||(I.startTime>=0&&(I.startTime+=g-I.pausedAt),I.pausedAt=void 0)}pauseAll(A=performance.now()){this.globallyPaused=!0;for(const g of this.animations.values())g.pausedAt==null&&(g.pausedAt=A)}resumeAll(A=performance.now()){this.globallyPaused=!1;for(const[g,I]of this.animations)this.individuallyPaused.has(g)||I.pausedAt!=null&&(I.startTime>=0&&(I.startTime+=A-I.pausedAt),I.pausedAt=void 0)}cancelForGift(A){var g;const I=this.animations.get(A);I&&(this.animations.delete(A),(g=I.onCancel)==null||g.call(I))}releaseGift(A){this.cancelForGift(A),this.individuallyPaused.delete(A)}destroy(){this.animations.clear(),this.individuallyPaused.clear(),this.globallyPaused=!1,this.completedScratch.length=0}}var $a=Object.defineProperty,Ao=(C,A,g)=>A in C?$a(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,aI=(C,A,g)=>Ao(C,typeof A!="symbol"?A+"":A,g);class HE{constructor(){aI(this,"ctx",null),aI(this,"decodedCache",new Map),aI(this,"activeSources",[]),aI(this,"globalMute",!1),aI(this,"suspended",!1),aI(this,"gainNode",null)}ensureContext(){return this.ctx||(this.ctx=new AudioContext,this.gainNode=this.ctx.createGain(),this.gainNode.connect(this.ctx.destination),this.globalMute&&(this.gainNode.gain.value=0)),this.ctx.state==="suspended"&&this.ctx.resume().catch(()=>{}),this.ctx}async decodeAudio(A,g){if(this.decodedCache.has(A))return;const I=this.ensureContext();try{const B=await I.decodeAudioData(g.slice(0));this.decodedCache.set(A,B)}catch(B){}}tickFrame(A,g){if(A.videoEntity&&!A.options.mute&&!(this.suspended||A.paused)){for(const I of A.videoEntity.audios)g===I.startFrame&&this.startAudio(A.id,I);for(let I=this.activeSources.length-1;I>=0;I--){const B=this.activeSources[I];if(B.giftId===A.id&&g>=B.endFrame){try{B.source.stop()}catch(Q){}B.source.disconnect(),this.activeSources.splice(I,1)}}}}tickFrameForKey(A,g,I){if(A.videoEntity&&!A.options.mute&&!(this.suspended||A.paused))for(const B of A.videoEntity.audios)B.audioKey===I&&g===B.startFrame&&this.startAudio(A.id,B)}syncPlaybackScopeFrame(A,g,I=!1){var B,Q;const E=A.videoEntity,e=(B=E==null?void 0:E.params.frames)!=null?B:0,i=(Q=E==null?void 0:E.params.fps)!=null?Q:0;if(!E||!(e>0)||!(i>0)||!Number.isFinite(g)||this.suspended||A.paused||A.options.mute){this.stopAllForGift(A.id);return}const t=Math.max(0,Math.floor(g/e)),a=g-t*e,o=new Map;E.audios.forEach((s,n)=>{if(a<s.startFrame||a>=s.endFrame)return;const r=`${n}:${s.audioKey}:${s.startFrame}:${s.endFrame}`;o.set(r,{audio:s,offsetMs:s.startTime+(a-s.startFrame)/i*1e3})}),I&&this.stopAllForGift(A.id);for(let s=this.activeSources.length-1;s>=0;s--){const n=this.activeSources[s];if(n.giftId===A.id){if(n.loopIndex===t&&n.scheduleKey&&o.has(n.scheduleKey)){o.delete(n.scheduleKey);continue}this.stopSourceAt(s)}}for(const[s,n]of o)this.startAudio(A.id,n.audio,n.offsetMs,s,t)}startAudio(A,g,I=g.startTime,B,Q){var E;const e=this.decodedCache.get(g.audioKey);if(!e)return;const i=this.ensureContext(),t=i.createBufferSource();t.buffer=e,t.connect((E=this.gainNode)!=null?E:i.destination);const a=Number.isFinite(e.duration)?e.duration:Number.POSITIVE_INFINITY,o=Math.max(0,I/1e3);if(o>=a){t.disconnect();return}try{t.start(0,o)}catch(s){t.disconnect();return}t.onended=()=>{t.disconnect();const s=this.activeSources.findIndex(n=>n.source===t&&n.giftId===A);s>=0&&this.activeSources.splice(s,1)},this.activeSources.push({source:t,endFrame:g.endFrame,giftId:A,scheduleKey:B,loopIndex:Q})}stopSourceAt(A){const g=this.activeSources[A];if(g){try{g.source.stop()}catch(I){}g.source.disconnect(),this.activeSources.splice(A,1)}}stopAllForGift(A){for(let g=this.activeSources.length-1;g>=0;g--)this.activeSources[g].giftId===A&&this.stopSourceAt(g)}setMute(A){this.globalMute=A,this.gainNode&&(this.gainNode.gain.value=A?0:1)}setSuspended(A){if(this.suspended=A,!!A)for(let g=this.activeSources.length-1;g>=0;g--)this.stopSourceAt(g)}destroy(){var A;for(const g of this.activeSources){try{g.source.stop()}catch(I){}g.source.disconnect()}this.activeSources=[],this.decodedCache.clear(),(A=this.ctx)==null||A.close().catch(()=>{}),this.ctx=null,this.gainNode=null}}var go=Object.defineProperty,Io=(C,A,g)=>A in C?go(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,oI=(C,A,g)=>Io(C,typeof A!="symbol"?A+"":A,g);class Bo{constructor(A,g){oI(this,"atlasW"),oI(this,"atlasH"),oI(this,"rowY",0),oI(this,"rowH",0),oI(this,"rowX",0),oI(this,"slots",new Map),this.atlasW=Math.max(64,Math.floor(A)),this.atlasH=Math.max(64,Math.floor(g))}get size(){return{w:this.atlasW,h:this.atlasH}}tryAllocate(A,g,I){const B=Math.max(1,Math.ceil(g)),Q=Math.max(1,Math.ceil(I));if(B>this.atlasW||Q>this.atlasH||(this.rowX+B>this.atlasW&&(this.rowY+=this.rowH,this.rowX=0,this.rowH=0),this.rowY+Q>this.atlasH))return null;const E={x:this.rowX,y:this.rowY,w:B,h:Q};return this.slots.set(A,E),this.rowX+=B,this.rowH=Math.max(this.rowH,Q),E}release(A){this.slots.delete(A)}getRect(A){return this.slots.get(A)}}function Co(C){const A=/^(-?\d+(?:\.\d+)?)%$/.exec(C.trim());if(!A)return null;const g=Number(A[1]);return Number.isFinite(g)?g:null}function uQ(C,A,g){if(typeof C=="number")return C;const I=Co(C);if(I==null)throw new Error(`Invalid percentage coordinate: ${C}`);return A*I/100-g/2}function xE(C,A,g,I,B,Q){return{x:uQ(C,B,g),y:uQ(A,Q,I)}}var Qo=Object.defineProperty,Eo=(C,A,g)=>A in C?Qo(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,MA=(C,A,g)=>Eo(C,typeof A!="symbol"?A+"":A,g);const RQ=16,fQ=24,eo=4,io=8,SQ=8192,to=new Float32Array([-.5,-.5,.5,-.5,.5,.5,-.5,.5]),ao=new Uint32Array([0,1,2,0,2,3]);class bE extends Error{constructor(A,g){super(g),this.group=A,this.name="ParticleBatchGroupDrawError"}}class qE{constructor(A,g){MA(this,"backend"),MA(this,"batches",new Set),MA(this,"groups",new Set),MA(this,"atlases",new Map),MA(this,"onRuntimeDiagnostic"),MA(this,"quadVB",null),MA(this,"quadIB",null),MA(this,"nextOrder",0),MA(this,"projW",0),MA(this,"projH",0),MA(this,"projection",null),MA(this,"backendLost",!1),MA(this,"destroyed",!1),MA(this,"drawOrderDirty",!0),MA(this,"behindDrawOrder",[]),MA(this,"aboveDrawOrder",[]),MA(this,"cssScaleUniform",new Float32Array([1,1])),MA(this,"uniforms",{u_projection:new Float32Array(16),u_time:0,u_particleSize:8,u_globalAlpha:1,u_sizeEnvelope:1,u_fadeMode:1,u_cssScale:new Float32Array([1,1])}),MA(this,"command",{shader:"particle-instanced",vertexBuffer:null,indexBuffer:null,indexCount:6,textures:[],uniforms:this.uniforms}),this.backend=A,this.onRuntimeDiagnostic=g}async createAtlas(A){var g,I,B;if(this.assertAvailable(),this.backend.type==="webgl1")throw new Error("ParticleAtlas requires WebGPU or WebGL2");const Q=Math.floor(A.width),E=Math.floor(A.height),e=Math.max(1,(g=this.backend.maxTextureSize)!=null?g:4096);if(!Number.isFinite(Q)||!Number.isFinite(E)||Q<1||E<1)throw new Error("ParticleAtlas dimensions must be positive integers");if(Q>e||E>e)throw new Error(`ParticleAtlas exceeds backend max texture size ${e}`);if(A.colorSpace!=="srgb"||A.alphaMode!=="premultiplied")throw new Error("ParticleAtlas requires premultiplied sRGB RGBA8 pixels");const i=Q*E*4;if(A.pixels.length!==i)throw new Error(`ParticleAtlas pixels length must be ${i}`);const t=new Uint8Array(i);t.set(A.pixels),await((B=(I=this.backend).prepareParticleSpritePipelines)==null?void 0:B.call(I)),this.assertAvailable();const a=this.backend.createTexture(t.buffer,{width:Q,height:E,format:"rgba8",filter:"linear",wrap:"clamp",sourcePremultiplied:!0}),o=this;let s;const n={width:Q,height:E,get destroyed(){return s.callerReleased},get lost(){return s.lost},destroy(){o.releaseAtlasCaller(s)}};return s={handle:n,texture:a,refs:1,callerReleased:!1,lost:!1},this.atlases.set(n,s),n}createBatch(A){this.assertAvailable(),this.validateDescriptor(A);const g=this.createGroupRecord();let I=null;try{return I=this.stageRecord(A,g),g.batches.add(I),this.groups.add(g),this.batches.add(I),this.drawOrderDirty=!0,I}catch(B){throw I&&this.disposeStagedRecord(I),g._destroyed=!0,B}}createBatchGroup(A){if(this.assertAvailable(),!Array.isArray(A)||A.length<1)throw new Error("ParticleBatchGroup requires at least one descriptor");for(const B of A)this.validateDescriptor(B);const g=this.createGroupRecord(),I=[];try{for(const B of A)I.push(this.stageRecord(B,g));for(const B of I)g.batches.add(B);this.groups.add(g);for(const B of I)this.batches.add(B);return this.drawOrderDirty=!0,g}catch(B){for(let Q=I.length-1;Q>=0;Q--)this.disposeStagedRecord(I[Q]);throw g._destroyed=!0,B}}get activeCount(){return this.batches.size}rebuildDrawOrder(){if(!this.drawOrderDirty)return;this.behindDrawOrder.length=0,this.aboveDrawOrder.length=0;for(const g of this.batches)(g.compositeLayer==="behind-media"?this.behindDrawOrder:this.aboveDrawOrder).push(g);const A=(g,I)=>g.zIndex-I.zIndex||g.order-I.order;this.behindDrawOrder.sort(A),this.aboveDrawOrder.sort(A),this.drawOrderDirty=!1}draw(A="above-media"){if(this.batches.size===0||this.backendLost||this.destroyed)return;this.quadVB||(this.quadVB=this.backend.createBuffer(to,"vertex")),this.quadIB||(this.quadIB=this.backend.createBuffer(ao,"index"));const g=this.backend.canvas.width,I=this.backend.canvas.height;(!this.projection||this.projW!==g||this.projH!==I)&&(this.projW=g,this.projH=I,this.projection=Kg(0,g,I,0,-1,1)),this.command.vertexBuffer=this.quadVB,this.command.indexBuffer=this.quadIB,this.uniforms.u_projection=this.projection,this.rebuildDrawOrder();const B=A==="behind-media"?this.behindDrawOrder:this.aboveDrawOrder;for(const Q of B)if(!(Q.destroyed||Q.group.destroyed||Q.group.faulted||Q.count<=0||Q.evaluatedOpacity<=0)){this.uniforms.u_time=Q.timeMs/1e3,this.uniforms.u_particleSize=Q.particleSize,this.uniforms.u_globalAlpha=Q.evaluatedOpacity,this.uniforms.u_sizeEnvelope=Q.format==="sprite-v2"?Q.header[2]:1,this.uniforms.u_fadeMode=Q.format==="sprite-v2"?Q.header[3]:1,this.cssScaleUniform[0]=Q.format==="sprite-v2"?Q.header[4]:1,this.cssScaleUniform[1]=Q.format==="sprite-v2"?Q.header[5]:1,this.uniforms.u_cssScale=this.cssScaleUniform,this.command.shader=Q.format==="sprite-v2"?"particle-sprite-instanced":"particle-instanced",this.command.instanceCount=Q.count,this.command.instanceBuffer=Q.instanceBuffer,this.command.particleBlend=Q.blend,this.command.textures=Q.textures;try{vg(this.backend.draw(this.command),`${Q.format} particle draw`)}catch(E){this.faultGroup(Q.group,E)}}}prepareFrame(){if(this.batches.size===0||this.backendLost||this.destroyed)return;const{sx:A,sy:g}=Zg(this.backend.canvas);for(const I of this.groups)if(!(I._destroyed||I._faulted)){for(const B of I.batches)this.syncRecordCssScale(B,A,g)&&(I.dirty=!0);if(I.dirty){for(const B of I.batches)this.updateRecordHeader(B);try{for(const B of I.batches)this.backend.updateBuffer(B.instanceBuffer,B.header,0);I.dirty=!1}catch(B){this.faultGroup(I,B)}}}}onBackendLoss(){if(!this.backendLost){this.backendLost=!0;for(const A of this.atlases.values())A.lost=!0;for(const A of this.groups)A._faulted=!0;this.quadVB=null,this.quadIB=null,this.projection=null}}destroy(){if(!this.destroyed){for(const A of Array.from(this.groups))A.destroy();this.backendLost||(this.quadVB&&this.backend.deleteBuffer(this.quadVB),this.quadIB&&this.backend.deleteBuffer(this.quadIB)),this.quadVB=null,this.quadIB=null,this.projection=null,this.destroyed=!0;for(const A of this.atlases.values())A.callerReleased=!0,A.lost||(A.lost=this.backendLost),A.refs=0,this.backendLost||this.backend.deleteTexture(A.texture);this.atlases.clear()}}assertAvailable(){if(this.destroyed)throw new Error("ParticleBatchRenderer is destroyed");if(this.backendLost)throw new Error("ParticleBatch backend is lost")}validateDescriptor(A){var g,I,B;if(this.backend.type==="webgl1")throw new Error("ParticleBatch requires WebGPU or WebGL2");const Q=Math.floor(A.count);if(!Number.isFinite(A.count)||Q!==A.count||Q<0)throw new Error("ParticleBatch count must be a non-negative integer");if(Q>SQ)throw new Error(`ParticleBatch count exceeds backend capacity ${SQ}`);const e=((g=A.format)!=null?g:"ballistic-v1")==="sprite-v2"?fQ:RQ;if(A.instances.length!==Q*e)throw new Error(`ParticleBatch instances length must be ${Q*e}`);for(const i of A.instances)if(!Number.isFinite(i))throw new Error("ParticleBatch instances must be finite");if(A.format==="sprite-v2"){const i=this.atlases.get(A.atlas);if(!i||i.callerReleased||i.lost)throw new Error("ParticleBatch sprite atlas is destroyed or lost");this.validateEnvelope((I=A.envelope)==null?void 0:I.opacity,"opacity"),this.validateEnvelope((B=A.envelope)==null?void 0:B.size,"size");for(let t=0;t<Q;t++){const a=t*fQ,o=A.instances[a+16],s=A.instances[a+17],n=A.instances[a+18],r=A.instances[a+19],c=A.instances[a+20],h=A.instances[a+21],l=A.instances[a+22],w=A.instances[a+23];if(o<0||s<0)throw new Error("sprite-v2 dimensions must be non-negative");if(n<0||n>1||r<0||r>1)throw new Error("sprite-v2 anchors must be normalized");if(c<0||h<0||l>1||w>1||!(c<l)||!(h<w))throw new Error("sprite-v2 UV rectangle is invalid")}}}validateEnvelope(A,g){if(!A)return;let I=-1/0;for(const B of A){if(![B.startMs,B.endMs,B.from,B.to].every(Number.isFinite)||!(B.endMs>B.startMs)||B.startMs<I)throw new Error(`ParticleBatch ${g} envelope is invalid`);if(B.interpolation&&B.interpolation!=="linear"&&B.interpolation!=="hold")throw new Error(`ParticleBatch ${g} envelope interpolation is invalid`);I=B.endMs}}cloneEnvelope(A){var g;return(g=A==null?void 0:A.map(I=>({...I})))!=null?g:[]}createGroupRecord(){const A=this;let g;return g={batches:new Set,_destroyed:!1,_faulted:!1,dirty:!1,diagnosticSent:!1,get count(){return g.batches.size},get destroyed(){return g._destroyed},get faulted(){return g._faulted},setTime(I){if(!g._destroyed)for(const B of g.batches)A.setRecordTime(B,I)},setOpacity(I){if(!g._destroyed)for(const B of g.batches)A.setRecordOpacity(B,I)},destroy(){A.destroyGroup(g)}},g}stageRecord(A,g){var I,B,Q,E,e,i,t,a,o,s,n;const r=(I=A.format)!=null?I:"ballistic-v1",c=r==="sprite-v2"?io:eo,h=new Float32Array(c+A.instances.length);h.set(A.instances,c);const{sx:l,sy:w}=Zg(this.backend.canvas);let D=1,y=null;if(A.format!=="sprite-v2"){for(let G=0;G<A.count;G++){const S=c+G*RQ;h[S+2]*=l,h[S+3]*=w,h[S+4]*=l,h[S+5]*=w,h[S+6]*=l,h[S+7]*=w}D=Math.max(0,(B=A.particleSize)!=null?B:8)*Math.sqrt(l*w),h[1]=D,h[2]=Math.max(0,Math.min(1,(Q=A.opacity)!=null?Q:1))}else y=this.atlases.get(A.atlas),this.retainAtlas(y),h[1]=Math.max(0,Math.min(1,(E=A.opacity)!=null?E:1)),h[2]=this.evaluateEnvelope((e=A.envelope)==null?void 0:e.size,0,1),h[3]=A.fadeMode==="none"?0:1,h[4]=l,h[5]=w,h[6]=0,h[7]=0;let R;try{R=this.backend.createBuffer(h,"storage")}catch(G){throw y&&this.releaseAtlasRetain(y),G}const F=this;let d;const f=Math.max(0,Math.min(1,(i=A.opacity)!=null?i:1)),u=A.format==="sprite-v2"?A:null;return d={count:A.count,instanceBuffer:R,format:r,atlas:y,group:g,timeMs:0,baseOpacity:f,evaluatedOpacity:f,particleSize:D,fadeMode:(u==null?void 0:u.fadeMode)==="none"?"none":"lifetime",opacityEnvelope:u?this.cloneEnvelope((t=u.envelope)==null?void 0:t.opacity):[],sizeEnvelope:u?this.cloneEnvelope((a=u.envelope)==null?void 0:a.size):[],compositeLayer:(o=A.compositeLayer)!=null?o:"above-media",zIndex:(s=A.zIndex)!=null?s:0,blend:(n=A.blend)!=null?n:"additive",order:this.nextOrder++,header:h.subarray(0,c),textures:y?[y.texture]:[],_destroyed:!1,get destroyed(){return d._destroyed},setTime(G){F.setRecordTime(d,G)},setOpacity(G){F.setRecordOpacity(d,G)},destroy(){F.destroyRecord(d)}},this.updateRecordHeader(d),d}setRecordTime(A,g){if(A._destroyed||A.group._destroyed||A.group._faulted)return;const I=Math.max(0,Number.isFinite(g)?g:0);A.timeMs!==I&&(A.timeMs=I,this.updateRecordHeader(A),A.group.dirty=!0)}setRecordOpacity(A,g){if(A._destroyed||A.group._destroyed||A.group._faulted)return;const I=Math.max(0,Math.min(1,Number.isFinite(g)?g:0));A.baseOpacity!==I&&(A.baseOpacity=I,this.updateRecordHeader(A),A.group.dirty=!0)}updateRecordHeader(A){if(A.header[0]=A.timeMs/1e3,A.format==="sprite-v2"){const g=this.evaluateEnvelope(A.opacityEnvelope,A.timeMs,1),I=this.evaluateEnvelope(A.sizeEnvelope,A.timeMs,1);A.evaluatedOpacity=Math.max(0,A.baseOpacity*g),A.header[1]=A.evaluatedOpacity,A.header[2]=Math.max(0,I),A.header[3]=A.fadeMode==="none"?0:1}else A.evaluatedOpacity=A.baseOpacity,A.header[2]=A.evaluatedOpacity}syncRecordCssScale(A,g,I){return A.format!=="sprite-v2"||A.header[4]===g&&A.header[5]===I?!1:(A.header[4]=g,A.header[5]=I,!0)}evaluateEnvelope(A,g,I){if(!(A!=null&&A.length))return I;if(g<A[0].startMs)return A[0].from;let B=A[0].from;for(const Q of A){if(g<Q.startMs)return B;if(g<Q.endMs){if(Q.interpolation==="hold")return Q.from;const E=(g-Q.startMs)/(Q.endMs-Q.startMs);return Q.from+(Q.to-Q.from)*E}B=Q.to}return B}faultGroup(A,g){var I;A._faulted=!0,A.dirty=!1;const B=g instanceof Error?g.message:String(g);if(!A.diagnosticSent){A.diagnosticSent=!0;try{(I=this.onRuntimeDiagnostic)==null||I.call(this,{type:"particle-group-failure",message:B})}catch(Q){console.error("[GiftStage] particle diagnostic observer failed",Q)}}throw new bE(A,`ParticleBatchGroup draw failed: ${B}`)}destroyGroup(A){if(!A._destroyed){A._destroyed=!0;for(const g of Array.from(A.batches))this.destroyRecord(g);this.groups.delete(A)}}destroyRecord(A){A._destroyed||(A._destroyed=!0,this.batches.delete(A),this.drawOrderDirty=!0,A.group.batches.delete(A),!this.backendLost&&!this.destroyed&&this.backend.deleteBuffer(A.instanceBuffer),A.atlas&&this.releaseAtlasRetain(A.atlas),A.group.batches.size===0&&(A.group._destroyed=!0,this.groups.delete(A.group)))}disposeStagedRecord(A){this.backendLost||this.backend.deleteBuffer(A.instanceBuffer),A.atlas&&this.releaseAtlasRetain(A.atlas),A._destroyed=!0}retainAtlas(A){if(A.callerReleased||A.lost)throw new Error("ParticleAtlas is destroyed or lost");A.refs++}releaseAtlasCaller(A){A.callerReleased||(A.callerReleased=!0,this.releaseAtlasRef(A))}releaseAtlasRetain(A){this.releaseAtlasRef(A)}releaseAtlasRef(A){A.refs=Math.max(0,A.refs-1),!(A.refs>0)&&(!A.lost&&!this.backendLost&&!this.destroyed&&this.backend.deleteTexture(A.texture),this.atlases.delete(A.handle))}}var oo=Object.defineProperty,so=(C,A,g)=>A in C?oo(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,z=(C,A,g)=>so(C,typeof A!="symbol"?A+"":A,g);class no extends Error{constructor(A,g){super(`${A} rejected (${g.reason})${g.message?`: ${g.message}`:""}`),this.operation=A,this.result=g,this.name="BackendOperationError"}}class jI{constructor(A,g,I){z(this,"backend"),z(this,"svgaBatch"),z(this,"vapRenderer"),z(this,"alphaVideoRenderer"),z(this,"imageRenderer"),z(this,"particleBatchRenderer"),z(this,"postAnimator"),z(this,"audioManager"),z(this,"slots"),z(this,"handles"),z(this,"rafId",null),z(this,"lastTime",0),z(this,"running",!1),z(this,"destroyed",!1),z(this,"globallyPaused",!1),z(this,"suspendedForHidden",!1),z(this,"forceNextDraw",!0),z(this,"pendingAtomicFrameRetry",!1),z(this,"atomicRetryUsedForGenericFailure",!1),z(this,"atomicRetryProgressEntities",new Set),z(this,"runtimeFrameAbortCount",0),z(this,"runtimeReplayFailureCount",0),z(this,"runtimeRetryFrameCount",0),z(this,"backendQuarantined",!1),z(this,"onRuntimeDiagnostic"),z(this,"onAnimationFrame",B=>{try{this.renderLoop(B)}catch(Q){if(this.destroyed)return;this.running=!1,this.rafId=null,this.lastTime=0,this.forceNextDraw=!0,this.emitRuntimeDiagnostic({type:"frame-controller-failure",message:this.runtimeErrorMessage(Q)}),console.error("[GiftStage] animation frame controller failed",Q)}}),z(this,"onHtmlVideoFrame",B=>{if(!this.destroyed&&!(this.globallyPaused||this.suspendedForHidden)){for(const Q of this.slots.values())if(Q.videoElement===B&&!Q.paused&&(Q.state==="playing"||Q.state==="fly")){this.invalidate();return}}}),z(this,"finishedSlotIdsScratch",[]),z(this,"videoRunMapScratch",new Map),z(this,"sortedSlots",[]),z(this,"visibleSlotsScratch",[]),z(this,"collapsedLayerScratch",[]),z(this,"coincidentSeenScratch",new Set),z(this,"drawRunScratch",[]),z(this,"wcAtlas",null),z(this,"wcDbgTickOnce",new Set),z(this,"advancedSharedWebCodecsScratch",new Set),z(this,"activeSharedWebCodecsScratch",new Set),z(this,"frameControllers",new Set),this.backend=A,this.onRuntimeDiagnostic=I,this.svgaBatch=new SE(()=>this.invalidate(),g,B=>this.emitRuntimeDiagnostic(B)),this.vapRenderer=new KE(this.onHtmlVideoFrame),this.alphaVideoRenderer=new mE(this.onHtmlVideoFrame),this.imageRenderer=new JE,this.particleBatchRenderer=new qE(A,B=>this.emitRuntimeDiagnostic(B)),this.postAnimator=new LE,this.audioManager=new HE,this.slots=new Map,this.handles=new Map}getRuntimeDiagnosticsSnapshot(){return{frameAbortCount:this.runtimeFrameAbortCount,replayFailureCount:this.runtimeReplayFailureCount,retryFrameCount:this.runtimeRetryFrameCount}}emitRuntimeDiagnostic(A){var g;try{(g=this.onRuntimeDiagnostic)==null||g.call(this,A)}catch(I){console.error("[GiftStage] runtime diagnostic observer failed",I)}}addSlot(A,g){this.slots.set(A.id,A),this.handles.set(A.id,g),this.insertSortedSlot(A),this.invalidate({resetClock:!0})}getHandle(A){return this.handles.get(A)}releaseSlotResources(A){var g,I,B,Q,E,e,i,t,a,o;if((g=A.loadAbortController)==null||g.abort(),A.loadAbortController=null,(I=A.detachLoadAbortSignal)==null||I.call(A),A.detachLoadAbortSignal=null,A.videoPlaybackWatchdogTimer!=null&&(clearTimeout(A.videoPlaybackWatchdogTimer),A.videoPlaybackWatchdogTimer=null),this.wcDbgTickOnce.delete(A.id),A.type==="vap"&&(this.vapRenderer.releaseHtmlVideo(A),this.vapRenderer.clearWebCodecsFrameRef(A.id),(Q=(B=A.vapMixState)==null?void 0:B.composer)==null||Q.destroy(),(E=A.vapMixState)!=null&&E.resourceTextures)){for(const s of A.vapMixState.resourceTextures.values())this.backend.deleteTexture(s);A.vapMixState.resourceTextures.clear()}if(A.type==="alphaVideo"&&(this.alphaVideoRenderer.releaseHtmlVideo(A),this.alphaVideoRenderer.clearWebCodecsFrameRef(A.id)),this.audioManager.stopAllForGift(A.id),this.postAnimator.releaseGift(A.id),A.videoEntity&&!A.releaseSharedSVGAAsset&&this.deleteSVGAAtlasTextures(A.videoEntity),A.svgaSlotTextures){for(const s of A.svgaSlotTextures.values())this.backend.deleteTexture(s.texture);A.svgaSlotTextures.clear(),A.svgaSlotTextures=void 0}A.wcAtlasRect&&!A.releaseWebCodecsSurface?(this.releaseWebCodecsAtlasAllocation(A.id),A.wcAtlasRect=void 0):A.videoTextureHandle&&!A.releaseSharedVideoTexture&&!A.releaseWebCodecsSurface&&this.backend.deleteTexture(A.videoTextureHandle),A.videoTextureHandle=null,A.imageTextureHandle&&(A.releaseSharedImageTexture?A.releaseSharedImageTexture():this.backend.deleteTexture(A.imageTextureHandle)),A.imageTextureHandle=null,A.releaseSharedImageTexture=null,(e=A.releaseWebCodecsSurface)==null||e.call(A),A.releaseWebCodecsSurface=null,A.webcodecsSurface=null,A.wcAtlasRect=void 0,A.webcodecsPlayback&&(A.releaseWebCodecsPlayback?A.releaseWebCodecsPlayback():A.webcodecsPlayback.destroy(),A.webcodecsPlayback=null),A.releaseWebCodecsPlayback=null,A.webcodecsSharedState=null,A.videoElement&&!A.releaseSharedVideoPlayback&&(A.videoElement.pause(),A.videoElement.removeAttribute("src"),A.videoElement.load(),A.videoElement.remove()),A.videoElement=null,(i=A.releaseSharedVideoPlayback)==null||i.call(A),A.releaseSharedVideoPlayback=null,(t=A.releaseSharedSVGAAsset)==null||t.call(A),A.releaseSharedSVGAAsset=null,(a=A.releaseSharedVideoTexture)==null||a.call(A),A.releaseSharedVideoTexture=null,(o=A.releaseMediaSource)==null||o.call(A),A.releaseMediaSource=null,A.vapMixState=null,A.videoEntity=null}removeSlot(A){const g=this.slots.get(A);g&&this.releaseSlotResources(g),this.slots.delete(A),this.handles.delete(A);const I=this.sortedSlots.indexOf(g);I>=0&&this.sortedSlots.splice(I,1),this.forceNextDraw=!0,!this.destroyed&&(this.slots.size===0&&!this.hasActiveFrameController()?(this.clearFrameOnce(),this.stop()):this.invalidate())}getSlot(A){return this.slots.get(A)}get activeCount(){return this.slots.size}getSlotIds(){return Array.from(this.slots.keys())}countCompatibleSVGAInstances(A){var g;let I=0;for(const B of this.slots.values())B.type==="svga"&&B.videoEntity===A&&!((g=B.svgaSlotTextures)!=null&&g.size)&&B.options.svgaFrameEvaluation!=="cpu"&&B.state!=="finished"&&I++;return I}registerFrameController(A){return this.frameControllers.add(A),this.invalidate({resetClock:!0}),()=>{this.frameControllers.delete(A),this.slots.size===0&&!this.hasActiveFrameController()&&this.stop()}}createParticleBatch(A){const g=this.particleBatchRenderer.createBatch(A);return this.invalidate(),g}async createParticleAtlas(A){return this.particleBatchRenderer.createAtlas(A)}createParticleBatchGroup(A){const g=this.particleBatchRenderer.createBatchGroup(A);return this.invalidate(),g}handleBackendLoss(){this.particleBatchRenderer.onBackendLoss()}tryAllocateWebCodecsAtlas(A,g,I,B){if(!B||B.width<=0||B.height<=0)return null;if(this.wcAtlas&&(this.wcAtlas.cfg.width!==B.width||this.wcAtlas.cfg.height!==B.height)){if(this.wcAtlas.ref>0)return null;this.backend.deleteTexture(this.wcAtlas.handle),this.wcAtlas=null}this.wcAtlas||(this.wcAtlas={cfg:{width:B.width,height:B.height},handle:this.backend.createEmptyTexture(B.width,B.height,{filter:"linear"}),alloc:new Bo(B.width,B.height),ref:0});const Q=this.wcAtlas.alloc.tryAllocate(A,g,I);return Q?(this.wcAtlas.ref++,{handle:this.wcAtlas.handle,rect:Q}):null}releaseWebCodecsAtlasAllocation(A){const g=this.wcAtlas;g&&(g.alloc.release(A),g.ref=Math.max(0,g.ref-1),g.ref<=0&&(this.backend.deleteTexture(g.handle),this.wcAtlas=null))}syncSlotLayoutFromOptions(){const{sx:A,sy:g}=Zg(this.backend.canvas);for(const I of this.slots.values()){if(this.postAnimator.hasAnimation(I.id))continue;const B=I.options,Q=xE(B.x,B.y,B.width,B.height,this.backend.canvas.clientWidth,this.backend.canvas.clientHeight);I.x=Q.x*A,I.y=Q.y*g,I.width=B.width*A,I.height=B.height*g}this.invalidate()}invalidate(A={}){this.destroyed||(this.forceNextDraw=!0,A.orderChanged&&this.sortedSlots.sort(jI.compareSlots),!(this.globallyPaused||this.suspendedForHidden||this.running)&&this.start(A.resetClock!==!1))}start(A=!0){this.destroyed||this.running||this.globallyPaused||this.suspendedForHidden||(this.running=!0,(A||this.lastTime<=0)&&(this.lastTime=performance.now()),this.rafId=requestAnimationFrame(this.onAnimationFrame))}stop(){this.running=!1,this.rafId!==null&&(cancelAnimationFrame(this.rafId),this.rafId=null)}clearFrameOnce(){this.assertBackendOperation("begin-frame",this.backend.beginFrame({stencil:!1})),this.svgaBatch.beginFrame(this.backend),this.assertBackendOperation("end-frame",this.backend.endFrame())}pause(){this.globallyPaused=!0,this.syncAudioSuspension(),this.postAnimator.pauseAll(),this.stop(),this.syncAllVideoPlayback()}resume(){this.globallyPaused=!1,this.syncAudioSuspension(),this.postAnimator.resumeAll(),(this.slots.size>0||this.hasActiveFrameController())&&this.invalidate({resetClock:!0}),this.syncAllVideoPlayback()}setHidden(A){A!==this.suspendedForHidden&&(this.suspendedForHidden=A,this.syncAudioSuspension(),A?this.stop():!this.globallyPaused&&(this.slots.size>0||this.hasActiveFrameController())&&this.invalidate({resetClock:!0}),this.syncAllVideoPlayback())}syncAllVideoPlayback(){for(const A of this.slots.values())A.videoElement&&this.syncVideoPlaybackForSlot(A)}hasActiveVideoConsumer(A,g){if(this.globallyPaused||this.suspendedForHidden)return!1;for(const I of this.slots.values())if(!(I.id===g||I.videoElement!==A)&&!I.paused&&!(I.state!=="playing"&&I.state!=="fly"))return!0;return!1}syncVideoPlaybackForSlot(A){const g=A.videoElement;if(!g)return;if(A.playbackScopeControlled){g.paused||g.pause();return}if(!this.globallyPaused&&!this.suspendedForHidden&&!A.paused&&(A.state==="playing"||A.state==="fly")){g.paused&&g.play().catch(()=>{});return}A.releaseSharedVideoPlayback&&this.hasActiveVideoConsumer(g,A.id)||g.paused||g.pause()}syncAudioSuspension(){const A=this.globallyPaused||this.suspendedForHidden;if(this.audioManager.setSuspended(A),!A)for(const g of this.slots.values()){if(g.type!=="svga"||!g.videoEntity||g.paused||g.state!=="playing"&&g.state!=="fly")continue;const I=g.videoEntity.params.fps,B=g.videoEntity.params.frames,Q=g.loopCount*B+g.currentFrame+g.accumulatedTime*I;this.audioManager.syncPlaybackScopeFrame(g,Q)}}applyPlaybackScopeMediaTime(A,g,I=!1,B=!1){var Q,E,e,i,t,a;const o=this.slots.get(A);if(!o)return;const s=Math.max(0,g)/1e3;if(o.type==="svga"&&o.videoEntity){const n=o.videoEntity.params.fps,r=o.videoEntity.params.frames;if(!(n>0)||!(r>0))return;const c=o.currentFrame,h=s*n,l=(Q=o.options.loop)!=null?Q:1;let w=!1;if(l===0){const D=Math.floor(h);o.loopCount=Math.floor(D/r),o.currentFrame=D%r,o.accumulatedTime=(h-D)/n}else{const D=Math.max(1,l)*r;if(h>=D)w=!0,o.loopCount=Math.max(1,l),o.currentFrame=r-1,o.accumulatedTime=0;else{const y=Math.floor(h);o.loopCount=Math.floor(y/r),o.currentFrame=y%r,o.accumulatedTime=(h-y)/n}}if(w?this.audioManager.stopAllForGift(o.id):this.audioManager.syncPlaybackScopeFrame(o,h,B),o.currentFrame!==c||I&&o.svgaInitialFrameEmitted!==!0){const D=this.handles.get(A);D&&((E=o.onFrame)==null||E.call(o,o.currentFrame,D)),o.svgaInitialFrameEmitted=!0}return}if(o.webcodecsPlayback){const n=o.webcodecsPlayback.duration;if(!(n>0)||!Number.isFinite(n))return;const r=(e=o.options.loop)!=null?e:1;if(r===0)o.loopCount=Math.floor(s/n),o.wcPlaybackTime=s%n;else{const c=Math.max(1,r)*n;s>=c?(o.loopCount=Math.max(1,r),o.wcPlaybackTime=Math.max(0,n-1e-6)):(o.loopCount=Math.floor(s/n),o.wcPlaybackTime=s%n)}if(o.webcodecsSharedState){const c=Math.max(0,(performance.now()-o.webcodecsSharedState.startedAtMs)/1e3);o.wcSharedTimeOffset=o.wcPlaybackTime-c}(t=(i=o.webcodecsPlayback).ensureDecodedThrough)==null||t.call(i,o.wcPlaybackTime);return}if(o.videoElement){const n=o.videoElement.duration,r=(a=o.options.loop)!=null?a:1;if(n>0&&Number.isFinite(n))if(r===0)o.loopCount=Math.floor(s/n),o.videoElement.currentTime=s%n;else{const c=Math.max(1,r)*n;s>=c?(o.loopCount=Math.max(1,r),o.videoElement.currentTime=Math.max(0,n-1e-6)):(o.loopCount=Math.floor(s/n),o.videoElement.currentTime=s%n)}else o.videoElement.currentTime=s}}releaseSVGAPreparation(A){this.svgaBatch.releaseClipPreparation(A)}get svgaClipAnalysis(){return this.svgaBatch.clipAnalysis}prewarmSVGAClipMeshes(A,g){return this.svgaBatch.prewarmClipMeshes(A,g)}prewarmSVGAClipMeshesForFrame(A,g,I){return this.svgaBatch.prewarmClipMeshesForFrame(A,g,I)}prewarmSVGAShapeMeshes(A){return this.svgaBatch.prewarmShapeMeshes(this.backend,A)}retainSVGAHybridMeshes(A){this.svgaBatch.retainHybridMeshes(this.backend,A)}releaseSVGAHybridMeshes(A){this.svgaBatch.releaseHybridMeshes(this.backend,A)}hydrateSVGAClipMeshes(A){this.svgaBatch.hydrateClipMeshes(A)}hydrateSVGAClipMeshesCooperative(A,g){return this.svgaBatch.hydrateClipMeshesCooperative(A,g)}snapshotSVGAClipMeshes(A){return this.svgaBatch.snapshotClipMeshes(A)}renderLoop(A){var g,I,B;if(this.destroyed||!this.running)return;if(this.pendingAtomicFrameRetry){if(this.pendingAtomicFrameRetry=!1,this.forceNextDraw=!1,this.lastTime=A,this.runtimeRetryFrameCount++,this.emitRuntimeDiagnostic({type:"svga-frame-retry"}),this.destroyed)return;const i=this.drawPreparedFrameWithReplay(this.getRenderOrderedSlots(),!0);if(this.destroyed)return;i&&this.resetAtomicRetryCycle(),this.scheduleNextFrame();return}const Q=Math.max(0,A-this.lastTime),E=Q/1e3;this.lastTime=A;let e=this.forceNextDraw;this.advancedSharedWebCodecsScratch.clear(),this.activeSharedWebCodecsScratch.clear();for(const i of this.frameControllers)if(i.active&&(e=i.tick(A,Q)||e),this.destroyed)return;for(const i of this.slots.values())!i.paused&&!i.playbackScopeControlled&&i.state==="playing"&&i.webcodecsPlayback&&i.webcodecsSharedState&&this.activeSharedWebCodecsScratch.add(i.webcodecsSharedState.id);for(const[i,t]of this.slots){if(t.paused||t.state==="loading"){if(t.paused&&!t.playbackScopeControlled&&t.state==="playing"&&t.webcodecsPlayback&&t.webcodecsSharedState&&this.activeSharedWebCodecsScratch.has(t.webcodecsSharedState.id)&&(this.tickSharedWebCodecs(t,A,!1),this.destroyed))return;continue}const a=this.handles.get(i);if(this.postAnimator.applyAnimatedState(t,A)&&(e=!0),this.destroyed||!t.playbackScopeControlled&&t.type==="svga"&&t.videoEntity&&t.state==="playing"&&(e=this.tickSVGA(t,E,a,A)||e,this.destroyed)||!t.playbackScopeControlled&&t.type==="image"&&t.state==="playing"&&(e=this.tickImage(t,E,a,A)||e,this.destroyed))return;if(!t.playbackScopeControlled&&(t.type==="vap"||t.type==="alphaVideo")&&t.webcodecsPlayback&&t.state==="playing"){if(t.webcodecsSharedState)this.tickSharedWebCodecs(t,A,!0);else{if(this.tickWebCodecs(t,E,a),this.destroyed)return;(B=(I=t.webcodecsPlayback).ensureDecodedThrough)==null||B.call(I,(g=t.wcPlaybackTime)!=null?g:0)}if(this.destroyed)return}}if(e=this.postAnimator.hasActiveAnimations()||e,this.postAnimator.update(A),!this.destroyed&&(e=this.removeFinished()||e,!this.destroyed&&(e=this.vapRenderer.syncVideoTextures(this.backend,this.slots)||e,!this.destroyed&&(e=this.alphaVideoRenderer.syncVideoTextures(this.backend,this.slots)||e,!this.destroyed)))){if(e){this.forceNextDraw=!1;const i=this.getRenderOrderedSlots();if(this.destroyed)return;const t=this.drawPreparedFrameWithReplay(i);if(this.destroyed)return;t&&this.resetAtomicRetryCycle()}this.scheduleNextFrame()}}drawPreparedFrameWithReplay(A,g=!1){if(this.destroyed)return!1;try{return this.drawPreparedFrame(A),!this.destroyed}catch(I){if(this.destroyed)return!1;const B=this.abortPreparedFrame(I);if(this.destroyed)return!1;if(!B)return this.recordReplayFailure(I),!1;if(!(I instanceof wI)&&!(I instanceof bE)){if(g)return this.recordReplayFailure(I),this.destroyed||console.error("[GiftStage:SVGA] scheduled atomic frame retry failed",I),!1;throw I}I instanceof wI&&this.atomicRetryProgressEntities.add(I.entity);try{return!(this.destroyed||(this.drawPreparedFrame(A),this.destroyed))}catch(Q){return this.destroyed||(this.abortPreparedFrame(Q),this.destroyed)||(this.recordReplayFailure(Q),this.destroyed)||(this.shouldScheduleAtomicRetry(Q)&&(this.pendingAtomicFrameRetry=!0,this.forceNextDraw=!0),console.error("[GiftStage:SVGA] atomic frame replay failed",Q)),!1}}}abortPreparedFrame(A){if(this.destroyed)return!1;let g=!0;if(this.svgaBatch.abortFrame(),this.destroyed||A instanceof _g&&(this.emitRuntimeDiagnostic({type:"stencil-transaction-failure",message:A.message}),this.destroyed))return!1;try{const I=this.backend.abortFrame();I.submitted||(g=!1,this.backendQuarantined=!0,this.pendingAtomicFrameRetry=!1,this.emitRuntimeDiagnostic({type:"backend-quarantined",message:`abort-frame rejected (${I.reason})${I.message?`: ${I.message}`:""}`}))}catch(I){g=!1,this.backendQuarantined=!0,this.pendingAtomicFrameRetry=!1,this.emitRuntimeDiagnostic({type:"backend-quarantined",message:this.runtimeErrorMessage(I)}),console.error("[GiftStage:SVGA] backend frame abort failed",I)}finally{this.destroyed||(this.runtimeFrameAbortCount++,this.emitRuntimeDiagnostic({type:"svga-frame-abort",message:this.runtimeErrorMessage(A)}))}return g}recordReplayFailure(A){this.runtimeReplayFailureCount++,this.emitRuntimeDiagnostic({type:"svga-frame-replay-failed",message:this.runtimeErrorMessage(A)})}shouldScheduleAtomicRetry(A){return A instanceof wI?this.atomicRetryProgressEntities.has(A.entity)?this.atomicRetryUsedForGenericFailure?!1:(this.atomicRetryUsedForGenericFailure=!0,!0):(this.atomicRetryProgressEntities.add(A.entity),!0):this.atomicRetryUsedForGenericFailure?!1:(this.atomicRetryUsedForGenericFailure=!0,!0)}resetAtomicRetryCycle(){this.pendingAtomicFrameRetry=!1,this.atomicRetryUsedForGenericFailure=!1,this.atomicRetryProgressEntities.clear()}runtimeErrorMessage(A){return A instanceof Error?A.message:String(A)}scheduleNextFrame(){if(this.destroyed){this.running=!1,this.rafId=null,this.lastTime=0;return}this.needsContinuousFrame()?this.rafId=requestAnimationFrame(this.onAnimationFrame):(this.running=!1,this.rafId=null,this.lastTime=0)}drawPreparedFrame(A){if(!this.destroyed){if(this.backendQuarantined)throw new Error("GPU backend is quarantined");this.svgaBatch.beginFrame(this.backend),!this.destroyed&&(this.assertBackendOperation("begin-frame",this.backend.beginFrame({stencil:this.svgaBatch.requiresStencil(A)})),!this.destroyed&&(this.particleBatchRenderer.prepareFrame(),!this.destroyed&&(this.particleBatchRenderer.draw("behind-media"),!this.destroyed&&(this.drawRenderLayers(A),!this.destroyed&&(this.particleBatchRenderer.draw("above-media"),!this.destroyed&&(this.svgaBatch.endFrame(),!this.destroyed&&this.assertBackendOperation("end-frame",this.backend.endFrame())))))))}}assertBackendOperation(A,g){if(!g.submitted)throw this.emitRuntimeDiagnostic({type:"backend-operation-rejected",message:`${A} rejected (${g.reason})${g.message?`: ${g.message}`:""}`}),new no(A,g)}tickSharedWebCodecs(A,g,I){var B,Q;const E=A.webcodecsSharedState;if(!E)return;const e=Math.max(E.playback.duration,1e-9),i=Math.max(0,(g-E.startedAtMs)/1e3),t=Number.isFinite(A.wcSharedTimeOffset)?A.wcSharedTimeOffset:0;if(A.wcPlaybackTime=((i+t)%e+e)%e,!!I){if(t===0){if(this.advancedSharedWebCodecsScratch.has(E.id))return;this.advancedSharedWebCodecsScratch.add(E.id)}(Q=(B=E.playback).ensureDecodedThrough)==null||Q.call(B,A.wcPlaybackTime)}}tickWebCodecs(A,g,I){var B,Q;const E=A.webcodecsPlayback;if(!E)return;const e=Math.max(E.duration,1e-9);if(!Number.isFinite(e))return;const i=(B=A.options.loop)!=null?B:1;let t=((Q=A.wcPlaybackTime)!=null?Q:0)+g;if(i===0){A.wcPlaybackTime=(t%e+e)%e,this.wcDbgLogTickOnce(A,e,A.wcPlaybackTime,i);return}const a=Math.floor(t/e);if(A.loopCount+a>=i){A.loopCount=i,A.wcPlaybackTime=e-1e-6,this.wcDbgLogTickOnce(A,e,A.wcPlaybackTime,i),this.onWebCodecsPlaybackComplete(A,I);return}A.loopCount+=a,A.wcPlaybackTime=t-a*e,this.wcDbgLogTickOnce(A,e,A.wcPlaybackTime,i)}wcDbgLogTickOnce(A,g,I,B){var Q;this.wcDbgTickOnce.has(A.id)||(this.wcDbgTickOnce.add(A.id),console.info("[GiftStage:WC] clock tick",{giftId:A.id,type:A.type,state:A.state,paused:A.paused,duration:g,wcPlaybackTime:I,loop:(Q=A.options.loop)!=null?Q:1,maxLoopsEffective:B,backend:this.backend.type,canvasCss:`${this.backend.canvas.clientWidth}x${this.backend.canvas.clientHeight}`,canvasBuf:`${this.backend.canvas.width}x${this.backend.canvas.height}`}))}onWebCodecsPlaybackComplete(A,g){var I;(I=A.onComplete)==null||I.call(A,g),A.state=A.options.clearsAfterStop===!1?"stopped":"finished"}tickSVGA(A,g,I,B){var Q,E;const e=A.videoEntity,i=e.params.fps,t=e.params.frames;if(i<=0||t<=0)return!1;const a=1/i,o=A.currentFrame;A.accumulatedTime+=g;const s=Math.floor(A.accumulatedTime/a);if(s<=0)return!1;A.accumulatedTime-=s*a;const n=(Q=A.options.loop)!=null?Q:1,r=A.loopCount*t+A.currentFrame+s;return n===0?(A.loopCount=Math.floor(r/t),A.currentFrame=r%t):r>=n*t?(A.loopCount=n,A.currentFrame=t-1,this.onGiftPlayComplete(A,I,B)):(A.loopCount=Math.floor(r/t),A.currentFrame=r%t),A.currentFrame=Math.max(0,Math.min(A.currentFrame,t-1)),A.currentFrame!==o&&(this.audioManager.tickFrame(A,A.currentFrame),(E=A.onFrame)==null||E.call(A,A.currentFrame,I),A.svgaInitialFrameEmitted=!0),A.currentFrame!==o}onGiftPlayComplete(A,g,I){var B;(B=A.onComplete)==null||B.call(A,g),A.state=A.options.clearsAfterStop===!1?"stopped":"finished"}tickImage(A,g,I,B){var Q;const E=(Q=A.options.duration)!=null?Q:0;return!(E>0)||(A.accumulatedTime+=g,A.accumulatedTime*1e3<E)?!1:(A.accumulatedTime=E/1e3,this.onGiftPlayComplete(A,I,B),!0)}removeFinished(){const A=this.finishedSlotIdsScratch;A.length=0;for(const[g,I]of this.slots)I.state==="finished"&&A.push(g);for(const g of A)this.removeSlot(g);return A.length>0}getRenderOrderedSlots(){const A=this.visibleSlotsScratch;A.length=0;for(const g of this.sortedSlots)g.state!=="playing"&&g.state!=="fly"&&g.state!=="stopped"||A.push(g);return A}drawRenderLayers(A){var g,I;let B=0;for(;B<A.length;){const Q=(g=A[B].zIndex)!=null?g:0;let E=B+1;for(;E<A.length&&((I=A[E].zIndex)!=null?I:0)===Q;)E++;this.drawLayer(this.collapseCoincidentVisualRange(A,B,E)),B=E}}collapseCoincidentVisualDuplicates(A){return this.collapseCoincidentVisualRange(A,0,A.length)}collapseCoincidentVisualRange(A,g,I){const B=this.coincidentSeenScratch,Q=this.collapsedLayerScratch;B.clear(),Q.length=0;for(let E=I-1;E>=g;E-=1){const e=A[E],i=this.getCoincidentVisualKey(e);i&&B.has(i)||(i&&B.add(i),Q.push(e))}return Q.reverse(),Q}getCoincidentVisualKey(A){var g,I,B,Q,E;if(A.motionTrackBinding||this.postAnimator.hasAnimation(A.id))return null;const e=this.getBatchKey(A);if(e.includes(":-1:")||e.endsWith(":-1")||e==="svga::0")return null;const i=A.type==="svga"?`frame=${A.currentFrame}`:A.wcAtlasRect?`rect=${A.wcAtlasRect.x},${A.wcAtlasRect.y},${A.wcAtlasRect.w},${A.wcAtlasRect.h}`:"frame=shared-texture",t=A.type==="svga"?this.getSVGASlotTextureKey(A):"",a=(g=A.options.objectFit)!=null?g:"contain",o=(B=(I=A.options.transformOrigin)==null?void 0:I.x)!=null?B:"50%",s=(E=(Q=A.options.transformOrigin)==null?void 0:Q.y)!=null?E:"50%",n=A.coincidentVisualKeyCache;if(n&&n.resourceKey===e&&n.frameKey===i&&n.svgaSlotKey===t&&n.objectFit===a&&n.x===A.x&&n.y===A.y&&n.width===A.width&&n.height===A.height&&n.scale===A.scale&&n.opacity===A.opacity&&n.rotation===A.rotation&&n.originX===o&&n.originY===s)return n.key;const r=[A.type,e,i,t,`fit=${a}`,`x=${A.x}`,`y=${A.y}`,`w=${A.width}`,`h=${A.height}`,`scale=${A.scale}`,`opacity=${A.opacity}`,`rotation=${A.rotation}`,`origin=${o},${s}`].join("|");return A.coincidentVisualKeyCache={key:r,resourceKey:e,frameKey:i,svgaSlotKey:t,objectFit:a,x:A.x,y:A.y,width:A.width,height:A.height,scale:A.scale,opacity:A.opacity,rotation:A.rotation,originX:o,originY:s},r}getSVGASlotTextureKey(A){const g=A.svgaSlotTextures;if(!g||g.size===0)return"";const I=A.svgaSlotTextureKeyCache;if(I&&I.map===g&&I.size===g.size)return I.key;const B=Array.from(g.entries()).sort(([Q],[E])=>Q.localeCompare(E)).map(([Q,E])=>`${Q}:${E.texture.id}:${E.mode}:${E.logicalWidth}x${E.logicalHeight}`).join(",");return A.svgaSlotTextureKeyCache={key:B,map:g,size:g.size},B}drawLayer(A){if(A.length===0)return;let g=A[0].type,I=this.getBatchKey(A[0]);const B=this.drawRunScratch;B.length=0;for(const Q of A){const E=this.getBatchKey(Q);(Q.type!==g||E!==I)&&B.length>0&&(this.drawSlotRun(g,B),B.length=0),g=Q.type,I=E,B.push(Q)}B.length>0&&this.drawSlotRun(g,B),B.length=0}needsContinuousFrame(){var A;if(this.backendQuarantined)return!1;if(this.pendingAtomicFrameRetry)return!0;if(this.globallyPaused)return!1;if(this.hasActiveFrameController()||this.postAnimator.hasRunningAnimations())return!0;for(const g of this.slots.values())if(!(g.paused||g.state!=="playing")&&(g.type==="svga"&&g.videoEntity||g.type==="image"&&((A=g.options.duration)!=null?A:0)>0||(g.type==="vap"||g.type==="alphaVideo")&&g.webcodecsPlayback||(g.type==="vap"||g.type==="alphaVideo")&&g.videoElement&&typeof g.videoElement.requestVideoFrameCallback!="function"))return!0;return!1}hasActiveFrameController(){for(const A of this.frameControllers)if(A.active)return!0;return!1}insertSortedSlot(A){let g=0,I=this.sortedSlots.length;for(;g<I;){const B=g+I>>>1;jI.compareSlots(this.sortedSlots[B],A)<=0?g=B+1:I=B}this.sortedSlots.splice(g,0,A)}static compareSlots(A,g){var I,B,Q,E;const e=((I=A.zIndex)!=null?I:0)-((B=g.zIndex)!=null?B:0);return e!==0?e:((Q=A.renderOrder)!=null?Q:0)-((E=g.renderOrder)!=null?E:0)}drawSlotRun(A,g){if(g.length===0)return;if(A==="svga"){this.svgaBatch.drawSlots(this.backend,g);return}if(A==="image"){for(const B of g)this.imageRenderer.drawSlot(this.backend,B);return}const I=this.videoRunMapScratch;I.clear();for(const B of g)I.set(B.id,B);A==="vap"?this.vapRenderer.draw(this.backend,I):this.alphaVideoRenderer.draw(this.backend,I)}getBatchKey(A){var g,I,B,Q,E,e,i,t,a,o,s,n;const r=A.batchKeyCache;switch(A.type){case"svga":{const c=A.videoEntity,h=(g=c==null?void 0:c.atlasTextureHandles)!=null&&g.length?c.atlasTextureHandles:(I=c==null?void 0:c.atlasTextureHandle)!=null?I:null,l=A.svgaSlotTextures&&A.svgaSlotTextures.size>0?1:0,w=(Q=(B=A.motionTrackBinding)==null?void 0:B.buffer)!=null?Q:null;if(r&&r.d0===h&&r.d1===l&&r.d2===w)return r.key;const D=((E=c==null?void 0:c.atlasTextureHandles)!=null&&E.length?c.atlasTextureHandles:c!=null&&c.atlasTextureHandle?[c.atlasTextureHandle]:[]).map(F=>F.id).join(","),y=(e=w==null?void 0:w.id)!=null?e:"none",R=`svga:${D}:${l}:motion:${y}`;return A.batchKeyCache={key:R,d0:h,d1:l,d2:w},R}case"vap":{const c=A.videoTextureHandle,h=!!A.vapMixState,l=(i=A.options.objectFit)!=null?i:"contain";if(r&&r.d0===c&&r.d1===h&&r.d2===l)return r.key;const w=`vap:${h?"mixed":"video"}:${(t=c==null?void 0:c.id)!=null?t:-1}:${l}`;return A.batchKeyCache={key:w,d0:c,d1:h,d2:l},w}case"alphaVideo":{const c=A.videoTextureHandle,h=(a=A.options.objectFit)!=null?a:"contain";if(r&&r.d0===c&&r.d1===h)return r.key;const l=`alpha:${(o=c==null?void 0:c.id)!=null?o:-1}:${h}`;return A.batchKeyCache={key:l,d0:c,d1:h,d2:null},l}case"image":{const c=A.imageTextureHandle,h=(s=A.options.objectFit)!=null?s:"contain";if(r&&r.d0===c&&r.d1===h)return r.key;const l=`image:${(n=c==null?void 0:c.id)!=null?n:-1}:${h}`;return A.batchKeyCache={key:l,d0:c,d1:h,d2:null},l}}}deleteSVGAAtlasTextures(A){var g,I,B,Q;(g=A.svgaFrameTableState)!=null&&g.binding&&((B=(I=this.backend).deleteSVGAFrameTable)==null||B.call(I,A.svgaFrameTableState.binding),A.svgaFrameTableState=null,A.svgaTimelineDrawRuns=void 0,A.svgaHybridCommandTable=void 0);const E=(Q=A.atlasTextureHandles)!=null&&Q.length?A.atlasTextureHandles:A.atlasTextureHandle?[A.atlasTextureHandle]:[],e=new Set;for(const i of E)e.has(i.id)||(e.add(i.id),this.backend.deleteTexture(i))}destroy(){if(!this.destroyed){this.destroyed=!0,this.stop(),this.resetAtomicRetryCycle();for(const A of Array.from(this.slots.keys()))this.removeSlot(A);this.svgaBatch.destroy(this.backend),this.vapRenderer.destroy(this.backend),this.alphaVideoRenderer.destroy(this.backend),this.imageRenderer.destroy(this.backend),this.particleBatchRenderer.destroy(),this.postAnimator.destroy(),this.audioManager.destroy(),this.sortedSlots.length=0,this.visibleSlotsScratch.length=0,this.collapsedLayerScratch.length=0,this.drawRunScratch.length=0,this.coincidentSeenScratch.clear(),this.frameControllers.clear(),this.backend.destroy()}}}function MQ(){return typeof DecompressionStream!="undefined"}function gg(){return typeof performance!="undefined"?performance.now():Date.now()}function vE(C){return C instanceof Error?`${C.name}: ${C.message}`:String(C)}async function ro(C,A,g){const I=g?gg():0,B=g?{inputBytes:C.byteLength,nativeAvailable:MQ(),nativeAttempts:[]}:null,Q=(e,i)=>(B&&(B.selectedPath=i,B.outputBytes=e.byteLength,B.totalMs=gg()-I,g==null||g(B)),e),E=e=>{throw B&&(B.error=vE(e),B.totalMs=gg()-I,g==null||g(B)),e};if(MQ())try{return Q(await uC(C,B!=null?B:void 0),"native")}catch(e){}try{const e=B?gg():0,i=A();return B&&(B.wasmMs=gg()-e),i?Q(i,"wasm"):Q(await uC(C,B!=null?B:void 0),"native-retry")}catch(e){return E(e)}}async function uC(C,A){if(typeof DecompressionStream!="undefined"){try{return await gC(C,"deflate",A==null?void 0:A.nativeAttempts)}catch(g){}try{return await gC(C.slice(2),"deflate-raw",A==null?void 0:A.nativeAttempts)}catch(g){}return gC(C.slice(2,-4),"deflate-raw",A==null?void 0:A.nativeAttempts)}throw new Error("No inflate implementation available (need WASM or DecompressionStream)")}async function gC(C,A,g){const I=g?gg():0,B=g?{format:A,inputBytes:C.byteLength,inputChunks:1,writerSubmitMs:0,readMs:0,concatMs:0,totalMs:0,outputChunks:0,outputBytes:0,status:"failed"}:null;try{const Q=new DecompressionStream(A),E=Q.writable.getWriter(),e=Q.readable.getReader(),i=B?gg():0,t=Promise.resolve(E.write(new Uint8Array(C.buffer,C.byteOffset,C.byteLength))),a=Promise.resolve(E.close());t.catch(()=>{}),a.catch(()=>{}),B&&(B.writerSubmitMs=gg()-i);const o=[];let s=0;const n=B?gg():0;for(;;){const{done:l,value:w}=await e.read();if(l)break;o.push(w),s+=w.length}await Promise.all([t,a]),B&&(B.readMs=gg()-n,B.outputChunks=o.length,B.outputBytes=s);const r=B?gg():0,c=new Uint8Array(s);let h=0;for(const l of o)c.set(l,h),h+=l.length;return B&&(B.concatMs=gg()-r,B.totalMs=gg()-I,B.status="success"),c}catch(Q){throw B&&(B.totalMs=gg()-I,B.error=vE(Q)),Q}finally{B&&(g==null||g.push(B))}}typeof TextEncoder!="undefined"&&new TextEncoder;const NQ=typeof TextDecoder!="undefined"?new TextDecoder:null;function TE(C){const A=C instanceof Uint8Array?C:new Uint8Array(C);return NQ?NQ.decode(A):co(A)}function co(C){let A="";for(let g=0;g<C.length;g+=1){const I=C[g];if(I<128){A+=String.fromCharCode(I);continue}if(I>=192&&I<224&&g+1<C.length){const B=(I&31)<<6|C[++g]&63;A+=String.fromCharCode(B);continue}if(I>=224&&I<240&&g+2<C.length){const B=(I&15)<<12|(C[++g]&63)<<6|C[++g]&63;A+=String.fromCharCode(B);continue}if(I>=240&&I<248&&g+3<C.length){let B=(I&7)<<18|(C[++g]&63)<<12|(C[++g]&63)<<6|C[++g]&63;B-=65536,A+=String.fromCharCode(55296+(B>>10),56320+(B&1023));continue}A+="�"}return A}var ho=Object.defineProperty,lo=(C,A,g)=>A in C?ho(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,IC=(C,A,g)=>lo(C,typeof A!="symbol"?A+"":A,g);const Do=0,wo=1,yo=2,Fo=5;class vC{constructor(A,g=0,I){IC(this,"view"),IC(this,"pos"),IC(this,"end"),this.view=new DataView(A.buffer,A.byteOffset,A.byteLength),this.pos=g,this.end=g+(I!=null?I:A.byteLength)}get remaining(){return this.end-this.pos}readVarint(){let A=0,g=0;for(;this.pos<this.end;){const I=this.view.getUint8(this.pos++);if(A|=(I&127)<<g,(I&128)===0)return A>>>0;g+=7}return A>>>0}readSignedVarint(){return this.readVarint()|0}readFloat(){const A=this.view.getFloat32(this.pos,!0);return this.pos+=4,A}readDouble(){const A=this.view.getFloat64(this.pos,!0);return this.pos+=8,A}readBytes(){const A=this.readVarint(),g=this.view.byteOffset+this.pos;this.pos+=A;const I=this.view.buffer.slice(g,g+A);return new Uint8Array(I)}readString(){const A=this.readBytes();return TE(A)}readTag(){if(this.pos>=this.end)return null;const A=this.readVarint();return{field:A>>>3,wire:A&7}}skip(A){switch(A){case Do:this.readVarint();break;case wo:this.pos+=8;break;case yo:this.pos+=this.readVarint();break;case Fo:this.pos+=4;break}}sub(A){const g=new vC(new Uint8Array(this.view.buffer,this.view.byteOffset),this.pos,A);return this.pos+=A,g}}function Go(C){const A={viewBoxWidth:0,viewBoxHeight:0,fps:20,frames:0};for(;C.remaining>0;){const g=C.readTag();if(!g)break;switch(g.field){case 1:A.viewBoxWidth=C.readFloat();break;case 2:A.viewBoxHeight=C.readFloat();break;case 3:A.fps=C.readSignedVarint();break;case 4:A.frames=C.readSignedVarint();break;default:C.skip(g.wire)}}return A}function uo(C){const A={x:0,y:0,width:0,height:0};for(;C.remaining>0;){const g=C.readTag();if(!g)break;switch(g.field){case 1:A.x=C.readFloat();break;case 2:A.y=C.readFloat();break;case 3:A.width=C.readFloat();break;case 4:A.height=C.readFloat();break;default:C.skip(g.wire)}}return A}function WE(C){const A={a:1,b:0,c:0,d:1,tx:0,ty:0};for(;C.remaining>0;){const g=C.readTag();if(!g)break;switch(g.field){case 1:A.a=C.readFloat();break;case 2:A.b=C.readFloat();break;case 3:A.c=C.readFloat();break;case 4:A.d=C.readFloat();break;case 5:A.tx=C.readFloat();break;case 6:A.ty=C.readFloat();break;default:C.skip(g.wire)}}return A}function UQ(C){const A={r:0,g:0,b:0,a:0};for(;C.remaining>0;){const g=C.readTag();if(!g)break;switch(g.field){case 1:A.r=C.readFloat();break;case 2:A.g=C.readFloat();break;case 3:A.b=C.readFloat();break;case 4:A.a=C.readFloat();break;default:C.skip(g.wire)}}return A}function Ro(C){const A={fill:null,stroke:null,strokeWidth:0},g=[];for(;C.remaining>0;){const I=C.readTag();if(!I)break;switch(I.field){case 1:{const B=C.readVarint();A.fill=UQ(C.sub(B));break}case 2:{const B=C.readVarint();A.stroke=UQ(C.sub(B));break}case 3:A.strokeWidth=C.readFloat();break;case 4:A.lineCap=C.readVarint();break;case 5:A.lineJoin=C.readVarint();break;case 6:A.miterLimit=C.readFloat();break;case 7:g[0]=C.readFloat();break;case 8:g[1]=C.readFloat();break;case 9:g[2]=C.readFloat();break;default:C.skip(I.wire)}}return g.some(I=>I>0)&&(A.lineDash=g.filter(I=>I>0)),A}function fo(C){let A="";for(;C.remaining>0;){const g=C.readTag();if(!g)break;switch(g.field){case 1:A=C.readString();break;default:C.skip(g.wire)}}return A}function So(C){const A={x:0,y:0,width:0,height:0,cornerRadius:0};for(;C.remaining>0;){const g=C.readTag();if(!g)break;switch(g.field){case 1:A.x=C.readFloat();break;case 2:A.y=C.readFloat();break;case 3:A.width=C.readFloat();break;case 4:A.height=C.readFloat();break;case 5:A.cornerRadius=C.readFloat();break;default:C.skip(g.wire)}}return A}function Mo(C){const A={x:0,y:0,radiusX:0,radiusY:0};for(;C.remaining>0;){const g=C.readTag();if(!g)break;switch(g.field){case 1:A.x=C.readFloat();break;case 2:A.y=C.readFloat();break;case 3:A.radiusX=C.readFloat();break;case 4:A.radiusY=C.readFloat();break;default:C.skip(g.wire)}}return A}function No(C){let A=0,g="",I,B,Q={fill:null,stroke:null,strokeWidth:0},E={a:1,b:0,c:0,d:1,tx:0,ty:0};for(;C.remaining>0;){const e=C.readTag();if(!e)break;switch(e.field){case 1:A=C.readVarint();break;case 2:{const i=C.readVarint();g=fo(C.sub(i));break}case 3:{const i=C.readVarint();I=So(C.sub(i));break}case 4:{const i=C.readVarint();B=Mo(C.sub(i));break}case 10:{const i=C.readVarint();Q=Ro(C.sub(i));break}case 11:{const i=C.readVarint();E=WE(C.sub(i));break}default:C.skip(e.wire)}}return A===3?{kind:"keep"}:g?{kind:"path",pathData:g,style:Q,transform:E}:I?{kind:"rect",rect:I,style:Q,transform:E}:B?{kind:"ellipse",ellipse:B,style:Q,transform:E}:null}function Uo(C){const A={alpha:0,layout:null,transform:null,clipPath:""},g=[];for(;C.remaining>0;){const I=C.readTag();if(!I)break;switch(I.field){case 1:A.alpha=C.readFloat();break;case 2:{const B=C.readVarint();A.layout=uo(C.sub(B));break}case 3:{const B=C.readVarint();A.transform=WE(C.sub(B));break}case 4:A.clipPath=C.readString();break;case 5:{const B=C.readVarint(),Q=No(C.sub(B));Q&&g.push(Q);break}default:C.skip(I.wire)}}return g.length>0&&(A.shapes=g),A}function ko(C){var A;const g={imageKey:"",frames:[]};for(;C.remaining>0;){const B=C.readTag();if(!B)break;switch(B.field){case 1:g.imageKey=C.readString();break;case 2:{const Q=C.readVarint();g.frames.push(Uo(C.sub(Q)));break}default:C.skip(B.wire)}}let I=null;for(const B of g.frames){const Q=B.shapes;if(!Q||Q.length===0){B.shapes=null,I=null;continue}if(((A=Q[0])==null?void 0:A.kind)==="keep"){B.shapes=I;continue}const E=Q.filter(e=>e.kind!=="keep");B.shapes=E.length>0?E:null,I=B.shapes}return g}function Yo(C){const A={audioKey:"",startFrame:0,endFrame:0,startTime:0,totalTime:0};for(;C.remaining>0;){const g=C.readTag();if(!g)break;switch(g.field){case 1:A.audioKey=C.readString();break;case 2:A.startFrame=C.readSignedVarint();break;case 3:A.endFrame=C.readSignedVarint();break;case 4:A.startTime=C.readSignedVarint();break;case 5:A.totalTime=C.readSignedVarint();break;default:C.skip(g.wire)}}return A}function po(C){let A="",g=new Uint8Array(0);for(;C.remaining>0;){const I=C.readTag();if(!I)break;switch(I.field){case 1:A=C.readString();break;case 2:g=C.readBytes();break;default:C.skip(I.wire)}}return{key:A,value:g}}function RC(C){const A=new vC(C),g=[],I={version:"",params:{viewBoxWidth:0,viewBoxHeight:0,fps:20,frames:0},images:new Map,audios:[]};for(;A.remaining>0;){const Q=A.readTag();if(!Q)break;switch(Q.field){case 1:I.version=A.readString();break;case 2:{const E=A.readVarint();I.params=Go(A.sub(E));break}case 3:{const E=A.readVarint(),{key:e,value:i}=po(A.sub(E));I.images.set(e,i);break}case 4:{const E=A.readVarint();g.push(ko(A.sub(E)));break}case 5:{const E=A.readVarint();I.audios.push(Yo(A.sub(E)));break}default:A.skip(Q.wire)}}const B=hE(g,I.params.frames);return Tg(I.params,B),{version:I.version,params:I.params,images:I.images,spriteTable:B,audios:I.audios}}function kQ(C,A){C.f32(A.r),C.f32(A.g),C.f32(A.b),C.f32(A.a)}function YQ(C){return{r:C.f32(),g:C.f32(),b:C.f32(),a:C.f32()}}function Ko(C,A){var g,I,B;const Q=(I=(g=A.lineDash)==null?void 0:g.filter(e=>e>0))!=null?I:[];let E=0;if(A.fill&&(E|=1),A.stroke&&(E|=2),A.lineCap!==void 0&&(E|=4),A.lineJoin!==void 0&&(E|=8),A.miterLimit!==void 0&&(E|=16),Q.length>0&&(E|=32),C.u8(E),A.fill&&kQ(C,A.fill),A.stroke&&kQ(C,A.stroke),C.f32((B=A.strokeWidth)!=null?B:0),A.lineCap!==void 0&&C.i32(A.lineCap),A.lineJoin!==void 0&&C.i32(A.lineJoin),A.miterLimit!==void 0&&C.f32(A.miterLimit),Q.length>0){C.u32(Q.length);for(const e of Q)C.f32(e)}}function mo(C){const A=C.u8(),g=A&1?YQ(C):null,I=A&2?YQ(C):null,B={fill:g,stroke:I,strokeWidth:C.f32()};if(A&4&&(B.lineCap=C.i32()),A&8&&(B.lineJoin=C.i32()),A&16&&(B.miterLimit=C.f32()),A&32){const Q=C.u32(),E=[];for(let e=0;e<Q;e++)E.push(C.f32());E.length>0&&(B.lineDash=E)}return B}async function Jo(C,A,g){var I,B,Q,E;C.u8(A.kind==="path"?0:A.kind==="rect"?1:2),await C.stringCooperative((I=A.pathData)!=null?I:"",g);const e=(B=A.rect)!=null?B:{x:0,y:0,width:0,height:0,cornerRadius:0};C.f32(e.x),C.f32(e.y),C.f32(e.width),C.f32(e.height),C.f32((Q=e.cornerRadius)!=null?Q:0);const i=(E=A.ellipse)!=null?E:{x:0,y:0,radiusX:0,radiusY:0};C.f32(i.x),C.f32(i.y),C.f32(i.radiusX),C.f32(i.radiusY),Ko(C,A.style),C.f32(A.transform.a),C.f32(A.transform.b),C.f32(A.transform.c),C.f32(A.transform.d),C.f32(A.transform.tx),C.f32(A.transform.ty)}function Lo(C){const A=C.u8();if(A===3)throw new Error("Unexpected shape keep marker in sprite table shapes group");const g=C.string(),I={x:C.f32(),y:C.f32(),width:C.f32(),height:C.f32(),cornerRadius:C.f32()},B={x:C.f32(),y:C.f32(),radiusX:C.f32(),radiusY:C.f32()},Q=mo(C),E={a:C.f32(),b:C.f32(),c:C.f32(),d:C.f32(),tx:C.f32(),ty:C.f32()};return A===0?{kind:"path",pathData:g,style:Q,transform:E}:A===1?{kind:"rect",rect:I,style:Q,transform:E}:{kind:"ellipse",ellipse:B,style:Q,transform:E}}async function Ho(C,A,g){C.u32(A.spriteCount);for(const I of A.imageKeys)await C.stringCooperative(I,g),await g();C.pad4(),C.u32(A.frameCount),await C.rawBytesCooperative(new Uint8Array(A.frameData.buffer,A.frameData.byteOffset,A.frameData.byteLength),g),C.u32(A.clipPaths.length);for(const I of A.clipPaths)await C.stringCooperative(I,g),await g();C.pad4(),await C.rawBytesCooperative(new Uint8Array(A.clipPathIndex.buffer,A.clipPathIndex.byteOffset,A.clipPathIndex.byteLength),g),C.u32(A.shapesTable.length);for(const I of A.shapesTable){C.u32(I.length);for(const B of I)await Jo(C,B,g),await g()}C.pad4(),await C.rawBytesCooperative(new Uint8Array(A.shapesIndex.buffer,A.shapesIndex.byteOffset,A.shapesIndex.byteLength),g),C.u8(A.hasAnyShapes?1:0)}async function VE(C,A){const g=C.u32(),I=[];for(let w=0;w<g;w++)I.push(C.string()),await A();C.pad4();const B=C.u32(),Q=g*B*AI;C.pad4();const E=C.position,e=new Float32Array(C.sourceBuffer(),E,Q);C.skip(Q*4),await A();const i=C.u32(),t=[];for(let w=0;w<i;w++)t.push(C.string()),await A();C.pad4();const a=g*B,o=C.position,s=new Int32Array(C.sourceBuffer(),o,a);C.skip(a*4),await A();const n=C.u32(),r=[];for(let w=0;w<n;w++){const D=C.u32(),y=[];for(let R=0;R<D;R++)y.push(Lo(C)),await A();r.push(y)}C.pad4();const c=g*B,h=C.position,l=new Int32Array(C.sourceBuffer(),h,c);return C.skip(c*4),await A(),{spriteCount:g,frameCount:B,imageKeys:I,frameData:e,clipPaths:t,clipPathIndex:s,shapesTable:r,shapesIndex:l,hasAnyShapes:C.u8()!==0}}var xo=Object.defineProperty,bo=(C,A,g)=>A in C?xo(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,BC=(C,A,g)=>bo(C,typeof A!="symbol"?A+"":A,g);const qo=1397182530,vo=2;function To(C){return C+3&-4}let Wo=class{constructor(A){this.buffer=A,BC(this,"view"),BC(this,"bytes"),BC(this,"offset",0),this.view=new DataView(A),this.bytes=new Uint8Array(A)}get position(){return this.offset}skip(A){this.offset+=A}pad4(){this.offset=To(this.offset)}u8(){const A=this.view.getUint8(this.offset);return this.offset+=1,A}u16(){const A=this.view.getUint16(this.offset,!0);return this.offset+=2,A}u32(){const A=this.view.getUint32(this.offset,!0);return this.offset+=4,A}i32(){const A=this.view.getInt32(this.offset,!0);return this.offset+=4,A}f32(){const A=this.view.getFloat32(this.offset,!0);return this.offset+=4,A}bytesValue(){const A=this.u32(),g=this.offset;return this.offset+=A,this.bytes.subarray(g,g+A)}bytesRef(){const A=this.u32(),g=this.offset;return this.offset+=A,{offset:g,length:A}}string(){return TE(this.bytesValue())}sourceBuffer(){return this.buffer}};async function ZE(C,A,g,I){const B=OA({maxBudgetMs:g}),Q=async()=>{L(I,"SVGA payload deserialization aborted"),B.shouldYield()&&await B.yield(),L(I,"SVGA payload deserialization aborted")};L(I,"SVGA payload deserialization aborted");const E=new Wo(C);if(E.u32()!==qo)throw new Error("Invalid SVGA worker payload magic");if(E.u16()!==vo)throw new Error("Unsupported SVGA worker payload version");const e=E.u16(),i=E.string(),t={viewBoxWidth:E.f32(),viewBoxHeight:E.f32(),fps:E.f32(),frames:E.u32()},a=[],o=E.u32();for(let c=0;c<o;c++)a.push({audioKey:E.string(),startFrame:E.i32(),endFrame:E.i32(),startTime:E.i32(),totalTime:E.i32()}),await Q();const s=[],n=E.u32();for(let c=0;c<n;c++){const h=E.string(),l=E.bytesRef();s.push({key:h,offset:l.offset,length:l.length}),await Q()}const r=await VE(E,Q);return(e&2)!==0&&(r.allFramesInsideViewBox=(e&1)!==0),L(I,"SVGA payload deserialization aborted"),{version:i,params:t,audios:a,spriteTable:r,images:{},imageBlob:E.sourceBuffer(),imageEntries:s,__debug:A}}const XE=`function DA() {
3100
+ `,nQ=typeof self!="undefined"&&self.Blob&&new Blob(["URL.revokeObjectURL(import.meta.url);",RE],{type:"text/javascript;charset=utf-8"});function _t(C){let A;try{if(A=nQ&&(self.URL||self.webkitURL).createObjectURL(nQ),!A)throw"";const g=new Worker(A,{type:"module",name:C==null?void 0:C.name});return g.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(A)}),g}catch(g){return new Worker("data:text/javascript;charset=utf-8,"+encodeURIComponent(RE),{type:"module",name:C==null?void 0:C.name})}}let LI=null,$t=1;const uI=new Map;function LC(C){C.signal&&C.onAbort&&C.signal.removeEventListener("abort",C.onAbort)}function DC(C,A,g){LI===C&&(LI=null);try{C.terminate()}catch(I){}for(const[I,B]of uI)B.owner===C&&(uI.delete(I),LC(B),B.reject(A))}function Aa(){if(!LI){const C=new _t;LI=C,C.addEventListener("message",async A=>{var g,I;const B=A.data;if(!B||B.type!=="build-svga-clip-meshes-result")return;const Q=uI.get(B.id);if(!(!Q||Q.owner!==C)){if(uI.delete(B.id),LC(Q),B.error){Q.reject(new Error(B.error));return}try{const E=new Set(Q.paths),e=new Map;for(const i of(g=B.entries)!=null?g:[]){if(!E.has(i.path)){Q.reject(new Error(`SVGA clip worker returned unknown path: ${i.path}`));return}if(e.has(i.path)){Q.reject(new Error(`SVGA clip worker returned duplicate path: ${i.path}`));return}if(i.analysis){const o=i.analysis;if(!["empty","fillable","invalid"].includes(o.kind)||o.localRect&&![o.localRect.x0,o.localRect.y0,o.localRect.x1,o.localRect.y1].every(Number.isFinite))throw new Error("Invalid clip analysis");if((I=Q.onAnalysis)==null||I.call(Q,i.path,o),o.kind==="empty"){e.set(i.path,null);continue}}else if(Q.onAnalysis)throw new Error("Missing clip analysis");if(!i.vertices||!i.indices){Q.reject(new Error(`SVGA clip worker returned no mesh for fillable path: ${i.path}`));return}const t={vertices:i.vertices,indices:i.indices},a=await tg(UB(t),{profile:Q.profile,frameBudgetMs:Q.frameBudgetMs,checkActive:()=>J(Q.signal)},"validation");if(a){Q.reject(new Error(`SVGA clip worker returned invalid mesh for ${i.path}: ${a}`));return}e.set(i.path,t)}for(const i of Q.paths)if(!e.has(i)){Q.reject(new Error(`SVGA clip worker omitted requested path: ${i}`));return}if(Q.profile&&B.profile){const i=Q.profile.phase("clip-prepare");i.executionMs+=B.profile.executionMs,i.workerExecutionMs+=B.profile.executionMs,i.elapsedMs+=B.profile.elapsedMs,i.maxSliceMs=Math.max(i.maxSliceMs,B.profile.maxSliceMs),i.slices+=B.profile.slices,i.bytes+=[...e.values()].reduce((t,a)=>t+(a?a.vertices.byteLength+a.indices.byteLength:0),0)}Q.resolve(e)}catch(E){Q.reject(E instanceof Error?E:new Error(String(E)))}}}),C.addEventListener("error",A=>{DC(C,new Error(A.message||"SVGA clip worker error"))}),C.addEventListener("messageerror",()=>{DC(C,new Error("SVGA clip worker message deserialization failed"))})}return LI}function fE(){return typeof Worker!="undefined"}function ga(C,A={}){if(!fE())return Promise.reject(new Error("SVGA clip worker unavailable"));if(new Set(C).size!==C.length)return Promise.reject(new Error("SVGA clip worker request contains duplicate paths"));const g=A.profile?performance.now():0;return pC(()=>{A.profile&&(A.profile.phase("worker-queue").elapsedMs+=performance.now()-g),J(A.signal,"SVGA clip worker task aborted");const I=Aa(),B=$t++;return new Promise((Q,E)=>{var e,i;const t={owner:I,onAnalysis:A.onAnalysis,frameBudgetMs:A.frameBudgetMs,profile:A.profile,signal:A.signal,paths:[...C],resolve:Q,reject:E};if(t.onAbort=()=>{uI.delete(B),LC(t);try{I.postMessage({type:"cancel-svga-clip-meshes",id:B})}catch(a){}E(CA("SVGA clip worker task aborted"))},uI.set(B,t),(e=A.signal)!=null&&e.aborted){t.onAbort();return}(i=A.signal)==null||i.addEventListener("abort",t.onAbort,{once:!0});try{I.postMessage({type:"build-svga-clip-meshes",id:B,paths:C,workerTimeSliceMs:A.workerTimeSliceMs,profile:!!A.profile})}catch(a){DC(I,a instanceof Error?a:new Error(String(a)))}})},A.signal)}var Ia=Object.defineProperty,Ba=(C,A,g)=>A in C?Ia(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,p=(C,A,g)=>Ba(C,typeof A!="symbol"?A+"":A,g);const zA=2048,rQ=13,zB=14,tI=Ag;class wI extends Error{constructor(A){super("SVGA FastPath submission rejected; replaying frame through CPU Reference"),this.entity=A,this.name="SVGAFastPathFrameReplayError"}}class zg extends Error{constructor(A){super(A),this.name="SVGAStencilTransactionError"}}class xg extends Error{constructor(){super("SVGA renderer was destroyed during frame submission"),this.name="SVGARendererDestroyedError"}}const oB=6,sB={x:0,y:0,w:1,h:1},HC=class wC{constructor(A,g,I){this.onClipMeshReady=A,this.onHybridValidationFailure=g,this.onRuntimeDiagnostic=I,p(this,"pool",new uE),p(this,"vertexBufHandles",[]),p(this,"indexBufHandles",[]),p(this,"clipSpriteVertBufHandles",[]),p(this,"clipSpriteIdxBufHandles",[]),p(this,"batchDrawCursor",0),p(this,"clipSpriteDrawCursor",0),p(this,"canvasWidth",0),p(this,"canvasHeight",0),p(this,"projCacheW",0),p(this,"projCacheH",0),p(this,"projCache",null),p(this,"clipMeshCache",new Map),p(this,"clipMeshStates",new Map),p(this,"clipMeshStateWaiters",new Map),p(this,"clipMeshGeneration",0),p(this,"clipMeshProducerController",new AbortController),p(this,"clipMeshProducerTasks",new Set),p(this,"clipResourceProducers",new Map),p(this,"clipPreparationOwners",new WeakMap),p(this,"liveClipPreparationControllers",new Set),p(this,"clipTableOwnerCounts",new WeakMap),p(this,"destroyed",!1),p(this,"clipMeshDestroyed",!1),p(this,"clipAnalysis",new IE),p(this,"clipMeshesWithBuffers",new Set),p(this,"clipMeshRefCounts",new Map),p(this,"entityRetainedClipMeshes",new WeakMap),p(this,"pendingClipMeshPaths",new Set),p(this,"clipMeshBuildInFlight",!1),p(this,"stencilTransactionState","idle"),p(this,"clipFrameDataScratch",new Float32Array(AI)),p(this,"staticBatchCacheRowScratch",new Float32Array(AI)),p(this,"instancedFrameDataScratch",new Float32Array(zA*rQ)),p(this,"instancedFrameDataWords",new Uint32Array(this.instancedFrameDataScratch.buffer)),p(this,"timelineBatchDataScratch",new Float32Array(zA*tI)),p(this,"timelineBatchFrameScratch",new Int32Array(zA)),p(this,"timelineDirectSlotDataScratch",new Float32Array(zA*tI)),p(this,"clipSpriteVertsScratch",null),p(this,"clipSpriteIndicesScratch",null),p(this,"clipMaskBatchTransformsScratch",new Float32Array(0)),p(this,"instancedQuadVB",null),p(this,"instancedQuadIB",null),p(this,"whiteTexture",null),p(this,"shapeMeshCache",new WeakMap),p(this,"shapeMeshesWithBuffers",new Set),p(this,"shapeMeshRefCounts",new Map),p(this,"entityRetainedShapeMeshes",new WeakMap),p(this,"clipTransformMat",new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1])),p(this,"shapeTransformMat",new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1])),p(this,"slotScissor",{x:0,y:0,w:0,h:0}),p(this,"slotClipX0",0),p(this,"slotClipY0",0),p(this,"slotClipX1",0),p(this,"slotClipY1",0),p(this,"slotScissorActive",!1),p(this,"sharedClipStencilActive",!1),p(this,"layoutScratch",{scaleX:1,scaleY:1,width:0,height:0,offsetX:0,offsetY:0}),p(this,"spriteWorkPool",[]),p(this,"spriteWorkCursor",0),p(this,"batchSpritesScratch",[]),p(this,"drawGroupScratch",[]),p(this,"directSlotsScratch",[]),p(this,"hybridSlotsScratch",[]),p(this,"timelineSlotStateUploadId",0),p(this,"sharedSlotLayerWorkPool",[]),p(this,"sharedSlotLayerWorksScratch",[]),p(this,"clipLayerBatchPool",[]),p(this,"clipLayerBatchesScratch",[]),p(this,"entityHasShapesCache",new WeakMap),p(this,"entityFrameClipModeCache",new WeakMap),p(this,"gpuMotionEntityEligibilityCache",new WeakMap),p(this,"entityClipMeshArrayCache",new WeakMap),p(this,"affineScratch",{a:1,b:0,c:0,d:1,tx:0,ty:0}),p(this,"plainInstancedTexturesScratch",[]),p(this,"plainInstancedUniformsScratch",{u_projection:new Float32Array(16),u_atlas:0}),p(this,"plainInstancedDrawCommand",{shader:"svga-instanced-premul",vertexBuffer:null,indexBuffer:null,indexCount:6,textures:this.plainInstancedTexturesScratch,uniforms:this.plainInstancedUniformsScratch}),p(this,"timelineTexturesScratch",[]),p(this,"timelineUniformsScratch",{u_projection:new Float32Array(16)}),p(this,"timelineSlotStateScratch",new Float32Array(zB)),p(this,"timelineSlotStateCache",new Map),p(this,"timelineRenderableFrameCache",new Map),p(this,"timelineOriginScratch",{x:0,y:0}),p(this,"timelineDrawCommand",{shader:"svga-frame-table-instanced-premul",vertexBuffer:null,indexBuffer:null,indexCount:6,textures:this.timelineTexturesScratch,uniforms:this.timelineUniformsScratch,stencil:"none"}),p(this,"timelineShapeDrawCommand",{shader:"svga-frame-table-shape-premul",vertexBuffer:null,indexBuffer:null,indexCount:0,textures:this.timelineTexturesScratch,uniforms:this.timelineUniformsScratch,stencil:"none"}),p(this,"timelineClipDrawCommand",{shader:"svga-frame-table-clip-mask",vertexBuffer:null,indexBuffer:null,indexCount:0,textures:this.timelineTexturesScratch,uniforms:this.timelineUniformsScratch,stencil:"write"}),p(this,"plainBatchTexturesScratch",[]),p(this,"plainBatchUniformsScratch",{u_projection:new Float32Array(16),u_atlas:0}),p(this,"plainBatchDrawCommand",{shader:"svga-batch-premul",vertexBuffer:null,indexBuffer:null,indexCount:0,textures:this.plainBatchTexturesScratch,uniforms:this.plainBatchUniformsScratch}),p(this,"clipInstancedTexturesScratch",[]),p(this,"clipInstancedUniformsScratch",{u_projection:new Float32Array(16),u_atlas:0}),p(this,"clipInstancedDrawCommand",{shader:"svga-instanced-premul",vertexBuffer:null,indexBuffer:null,indexCount:6,instanceCount:1,textures:this.clipInstancedTexturesScratch,uniforms:this.clipInstancedUniformsScratch,stencil:"test"}),p(this,"clipBatchTexturesScratch",[]),p(this,"clipBatchUniformsScratch",{u_projection:new Float32Array(16),u_atlas:0}),p(this,"clipBatchDrawCommand",{shader:"svga-batch-premul",vertexBuffer:null,indexBuffer:null,indexCount:0,textures:this.clipBatchTexturesScratch,uniforms:this.clipBatchUniformsScratch,stencil:"test"}),p(this,"clipMaskTexturesScratch",[]),p(this,"clipMaskUniformsScratch",{u_projection:new Float32Array(16),u_transform:this.clipTransformMat}),p(this,"clipMaskDrawCommand",{shader:"clip-mask",vertexBuffer:null,indexBuffer:null,indexCount:0,textures:this.clipMaskTexturesScratch,uniforms:this.clipMaskUniformsScratch}),p(this,"clipMaskInstancedUniformsScratch",{u_projection:new Float32Array(16)}),p(this,"clipMaskInstancedDrawCommand",{shader:"clip-mask-instanced",vertexBuffer:null,indexBuffer:null,indexCount:0,instanceCount:1,instanceData:this.clipMaskBatchTransformsScratch,textures:this.clipMaskTexturesScratch,uniforms:this.clipMaskInstancedUniformsScratch}),p(this,"shapeTexturesScratch",[]),p(this,"shapeUniformsScratch",{u_projection:new Float32Array(16),u_transform:new Float32Array(16),u_opacity:1}),p(this,"shapeDrawCommand",{shader:"svga-batch-premul",vertexBuffer:null,indexBuffer:null,indexCount:0,textures:this.shapeTexturesScratch,uniforms:this.shapeUniformsScratch})}emitRuntimeDiagnostic(A){var g;if(this.destroyed)return!1;try{(g=this.onRuntimeDiagnostic)==null||g.call(this,A)}catch(I){console.error("[GiftStage:SVGA] runtime diagnostic observer failed",I)}return!this.destroyed}notifyClipMeshReady(){var A;if(!(this.destroyed||this.clipMeshDestroyed))try{(A=this.onClipMeshReady)==null||A.call(this)}catch(g){console.error("[GiftStage:SVGA] clip mesh ready observer failed",g)}}beginFrame(A){this.assertRendererAlive(),this.batchDrawCursor=0,this.clipSpriteDrawCursor=0,this.timelineSlotStateCache.clear(),this.timelineRenderableFrameCache.clear(),this.stencilTransactionState="idle";const g=A.canvas.width,I=A.canvas.height;this.canvasWidth=g,this.canvasHeight=I}endFrame(){if(this.assertRendererAlive(),this.stencilTransactionState!=="idle")throw new zg(`SVGA stencil transaction ended in ${this.stencilTransactionState}`)}abortFrame(){this.assertRendererAlive(),this.stencilTransactionState="idle",this.slotScissorActive=!1}flush(A,g){this.beginFrame(A),this.drawSlots(A,g.values())}drawSlot(A,g){if(g.type!=="svga"||!this.hasRenderableSVGA(g)||g.state!=="playing"&&g.state!=="fly"&&g.state!=="stopped")return;if(this.beginFrame(A),this.canUseTimelinePath(A,g,"gpu-direct")){this.drawTimelineSlot(A,g,this.getProjection())||g.videoEntity&&this.rejectFastPathFrame(g.videoEntity);return}const I=this.drawGroupScratch;I.length=0,I.push(g),this.flushGroup(A,I),I.length=0}drawSlots(A,g){var I;this.beginFrame(A);const B=this.drawGroupScratch,Q=this.directSlotsScratch,E=this.hybridSlotsScratch;B.length=0,Q.length=0,E.length=0;const e=()=>{var t;if(Q.length===0)return;const a=(t=Q[0])==null?void 0:t.videoEntity;try{this.flushDirectSlots(A,Q,this.getProjection())}catch(o){throw o instanceof wI||o instanceof xg||a&&this.rejectFastPathFrame(a),o}Q.length=0},i=()=>{var t;if(E.length===0)return;const a=(t=E[0])==null?void 0:t.videoEntity;try{this.flushHybridScheduledSlots(A,E,this.getProjection())}catch(o){throw o instanceof wI||o instanceof xg||a&&this.rejectFastPathFrame(a),o}E.length=0};for(const t of g)if(!(t.type!=="svga"||!this.hasRenderableSVGA(t))&&!(t.state!=="playing"&&t.state!=="fly"&&t.state!=="stopped")){if(this.canUseTimelinePath(A,t,"gpu-direct")){B.length>0&&(this.flushGroup(A,B),B.length=0),i(),Q.length>0&&!this.areDirectSlotsBatchCompatible(Q[0],t)&&e(),Q.push(t);continue}if(e(),this.canUseTimelinePath(A,t,"gpu-hybrid")&&((I=t.videoEntity)!=null&&I.svgaHybridCommandTable)){B.length>0&&(this.flushGroup(A,B),B.length=0),E.length>0&&!this.areHybridSlotsBatchCompatible(E[0],t)&&i(),E.push(t);continue}i(),B.push(t)}e(),i(),B.length>0&&this.flushGroup(A,B),B.length=0,Q.length=0,E.length=0}submitBackendDraw(A,g){var I;this.assertRendererAlive();const B=(I=g.stencil)!=null?I:g.shader==="clip-mask"?"write":"none";let Q=this.stencilTransactionState;if(B==="write"){if(this.stencilTransactionState==="content-tested")throw new zg("stencil write attempted after content test without clear");Q="mask-written"}else if(B==="test"){if(this.stencilTransactionState==="idle")throw new zg("stencil test attempted without a mask");Q="content-tested"}else if(B==="clear"){if(this.stencilTransactionState==="idle")throw new zg("stencil clear attempted without a mask");Q="idle"}try{const E=A.draw(g);if(E.submitted)return this.stencilTransactionState=Q,!0;const e=`${g.shader} rejected (${E.reason})${E.message?`: ${E.message}`:""}`;if(!this.emitRuntimeDiagnostic({type:"backend-operation-rejected",message:e}))throw new xg;if(g.shader==="svga-frame-table-instanced-premul"&&(E.reason==="invalid-command"||E.reason==="missing-resource")&&!this.emitRuntimeDiagnostic({type:"atlas-command-invalid",message:e}))throw new xg;if(B!=="none"&&!this.emitRuntimeDiagnostic({type:"stencil-transaction-failure",message:e}))throw new xg;return!1}catch(E){if(E instanceof zg||E instanceof xg)throw E;const e=E instanceof Error?E.message:String(E);if(!this.emitRuntimeDiagnostic({type:B==="none"?"backend-operation-rejected":"stencil-transaction-failure",message:e}))throw new xg;return!1}}assertRendererAlive(){if(this.destroyed)throw new xg}requireBackendDraw(A,g,I){if(!this.submitBackendDraw(A,g))throw new Error(`SVGA backend rejected ${I}`)}areDirectSlotsBatchCompatible(A,g){var I,B,Q,E;const e=A.videoEntity;if(!e||g.videoEntity!==e||((I=A.svgaFrameTableState)==null?void 0:I.binding)!==((B=g.svgaFrameTableState)==null?void 0:B.binding))return!1;const i=(Q=e.atlasTextureHandles)!=null&&Q.length?e.atlasTextureHandles:e.atlasTextureHandle?[e.atlasTextureHandle]:[],t=(E=e.svgaTimelineDrawRuns)!=null?E:[];return t.length!==1||t.some(a=>a.spriteBase<0||a.spriteCount<1||a.spriteBase+a.spriteCount>e.spriteTable.spriteCount||!i[a.textureIndex])?!1:this.areTimelineMotionBindingsCompatible(A,g)}areHybridSlotsBatchCompatible(A,g){var I,B,Q,E,e;return A.videoEntity!=null&&g.videoEntity===A.videoEntity&&((I=A.svgaFrameTableState)==null?void 0:I.binding)===((B=g.svgaFrameTableState)==null?void 0:B.binding)&&A.videoEntity.svgaHybridCommandTable===((Q=g.videoEntity)==null?void 0:Q.svgaHybridCommandTable)&&!((E=A.svgaSlotTextures)!=null&&E.size)&&!((e=g.svgaSlotTextures)!=null&&e.size)&&this.areTimelineMotionBindingsCompatible(A,g)}areTimelineMotionBindingsCompatible(A,g){const I=A.motionTrackBinding,B=g.motionTrackBinding;return!I&&!B?!0:!!I&&!!B&&I.buffer===B.buffer&&I.globalsBuffer===B.globalsBuffer&&I.sampleCount===B.sampleCount&&I.sampleIntervalMs===B.sampleIntervalMs&&I.currentTimeMs===B.currentTimeMs}rejectFastPathFrame(A){var g;this.assertRendererAlive();try{(g=this.onHybridValidationFailure)==null||g.call(this,A)}catch(I){console.error("[GiftStage:SVGA] runtime fallback callback failed",I)}throw this.assertRendererAlive(),new wI(A)}flushDirectSlots(A,g,I){var B,Q,E,e,i,t;const a=g[0],o=a==null?void 0:a.videoEntity,s=(B=o==null?void 0:o.spriteTable.spriteCount)!=null?B:0;if(!a||!o||s<1)return;const n=(Q=o.atlasTextureHandles)!=null&&Q.length?o.atlasTextureHandles:o.atlasTextureHandle?[o.atlasTextureHandle]:[],r=(E=o.svgaTimelineDrawRuns)!=null?E:[];if((r.length===0||r.some(D=>!n[D.textureIndex])||g.some(D=>{var y;return!((y=D.svgaFrameTableState)!=null&&y.binding)||this.resolveRenderableFrame(D,o)==null}))&&this.rejectFastPathFrame(o),!this.areDirectSlotsBatchCompatible(a,a)){for(const D of g)D.svgaDrawBatchMode="per-slot",D.svgaDrawCompatibleInstanceCount=1,this.drawTimelineSlot(A,D,I)||this.rejectFastPathFrame(o);return}const c=r[0],h=Math.max(1,Math.floor(zA/c.spriteCount));if(h<2){for(const D of g)D.svgaDrawBatchMode="per-slot",D.svgaDrawCompatibleInstanceCount=1,this.drawTimelineSlot(A,D,I)||this.rejectFastPathFrame(o);return}const l=n[c.textureIndex],w=(e=a.svgaFrameTableState)==null?void 0:e.binding;if(!(!l||!w)){this.ensureInstancedQuadBuffers(A);for(let D=0;D<g.length;D+=h){const y=Math.min(h,g.length-D),R=this.timelineDirectSlotDataScratch;let F=0;for(let G=0;G<y;G++){const S=g[D+G],M=this.resolveRenderableFrame(S,o);if(M==null)break;const N=this.resolveTimelineSlotState(S,M,c.spriteBase),U=G*tI;R.set(N.subarray(0,zB),U),R[U+kg.atlasPage]=c.textureIndex,R[U+kg.motionTrackPlusOne]=((t=(i=S.motionTrackBinding)==null?void 0:i.trackIndex)!=null?t:-1)+1,S.svgaFrameTableState.frameIndex=M,S.svgaDrawBatchMode="multi-slot",S.svgaDrawCompatibleInstanceCount=y,F++}if(F!==y){for(let G=0;G<y;G++){const S=g[D+G];S.svgaDrawBatchMode="per-slot",S.svgaDrawCompatibleInstanceCount=1,this.drawTimelineSlot(A,S,I)||this.rejectFastPathFrame(o)}continue}const d=this.timelineDrawCommand;d.vertexBuffer=this.instancedQuadVB,d.indexBuffer=this.instancedQuadIB,d.instanceCount=y*c.spriteCount,d.instanceData=void 0,d.svgaFrameTableSlotStates=R,d.svgaFrameTableSlotStateCount=y,d.svgaFrameTableSpritesPerSlot=c.spriteCount,d.svgaFrameTableSlotStateUploadId=++this.timelineSlotStateUploadId,d.stencil="none",d.svgaFrameTable=w,d.svgaFrameTableFrameCount=o.spriteTable.frameCount,d.svgaFrameTableSpriteCount=s,d.svgaFrameTableFrameIndex=a.currentFrame,d.svgaFrameTableSpriteBase=c.spriteBase,d.svgaFrameTableAtlasPage=c.textureIndex,d.svgaFrameTableSlotState=this.resolveTimelineSlotState(a,a.currentFrame,c.spriteBase),d.svgaSlotState=d.svgaFrameTableSlotState;const f=a.motionTrackBinding;d.motionTrackBuffer=f==null?void 0:f.buffer,d.motionTrackGlobalsBuffer=f==null?void 0:f.globalsBuffer,d.motionTrackSampleCount=f==null?void 0:f.sampleCount,d.motionTrackSampleIntervalMs=f==null?void 0:f.sampleIntervalMs,d.motionTrackTimeMs=f==null?void 0:f.currentTimeMs,d.motionTrackIndex=f==null?void 0:f.trackIndex,this.timelineTexturesScratch[0]=l,this.timelineTexturesScratch.length=1,this.timelineUniformsScratch.u_projection=I;const u=this.submitBackendDraw(A,d);d.svgaFrameTableSlotStates=void 0,d.svgaFrameTableSlotStateCount=void 0,d.svgaFrameTableSpritesPerSlot=void 0,d.svgaFrameTableSlotStateUploadId=void 0,u||this.rejectFastPathFrame(o)}A.resetScissor()}}requiresStencil(A){var g,I,B,Q,E;for(const e of A){if(e.type!=="svga"||!e.videoEntity||e.state!=="playing"&&e.state!=="fly"&&e.state!=="stopped")continue;const i=this.resolveRenderableFrame(e,e.videoEntity);if(i==null)continue;if(e.options.svgaFrameEvaluation!=="cpu"&&!((g=e.svgaSlotTextures)!=null&&g.size)&&((I=e.svgaFrameTableState)==null?void 0:I.binding)!=null&&e.svgaFrameTableState.renderInfo.selectedPath==="gpu-hybrid"){const a=e.videoEntity.svgaHybridCommandTable;if(a){const o=(B=a.frameOffsets[i])!=null?B:0,s=(Q=a.frameOffsets[i+1])!=null?Q:o;for(let n=o;n<s;n++)if(a.operations[n]===Pg)return!0;continue}}if(e.opacity<.05)continue;const t=this.getFrameClipMode(e.videoEntity,i);if(t===2||t===1&&((E=e.rotation)!=null?E:0)!==0)return!0}return!1}resolveRenderableFrame(A,g){var I;if(this.timelineRenderableFrameCache.has(A))return(I=this.timelineRenderableFrameCache.get(A))!=null?I:null;const B=A.currentFrame;if(this.isFrameClipReady(g,B))return A.svgaClipReadyFrame=B,this.timelineRenderableFrameCache.set(A,B),B;const Q=A.svgaClipReadyFrame;return Q!=null&&Q>=0&&Q<g.spriteTable.frameCount&&this.isFrameClipReady(g,Q)?(this.timelineRenderableFrameCache.set(A,Q),Q):(this.timelineRenderableFrameCache.set(A,null),null)}isFrameClipReady(A,g){var I,B,Q,E;this.retainClipPreparation(A);const e=A.spriteTable;if(g<0||g>=e.frameCount)return!1;const i=A.svgaHybridCommandTable;if(i){const a=(I=i.frameOffsets[g])!=null?I:0,o=(B=i.frameOffsets[g+1])!=null?B:a;let s=!0;for(let n=a;n<o;n++){if(i.operations[n]!==Pg)continue;const r=(Q=i.meshReferences[n*3+1])!=null?Q:-1;this.getClipMeshByIndex(A,r)===void 0&&(s=!1)}return s}let t=!0;for(let a=0;a<e.spriteCount;a++){const o=(a*e.frameCount+g)*gI;if(e.frameData[o+8]<.05)continue;const s=(E=e.clipPathIndex[a*e.frameCount+g])!=null?E:-1;if(s<0)continue;const n=e.clipPaths[s];if(!n||(this.clipAnalysis.retain(e,n),this.getClipGeometryKind(n)==="empty"))continue;const r=this.clipMeshStates.get(n);if(!((r==null?void 0:r.status)==="valid"||(r==null?void 0:r.status)==="empty")){if((r==null?void 0:r.status)==="invalid"){this.handleInvalidClipMesh(A,n,r);continue}(r==null?void 0:r.status)!=="building"&&this.queueClipMeshBuild(n),t=!1}}return t}getFrameClipMode(A,g){const I=A.spriteTable;if(g<0||g>=I.frameCount)return 0;let B=this.entityFrameClipModeCache.get(A);(!B||B.length!==I.frameCount)&&(B=new Uint8Array(I.frameCount),B.fill(255),this.entityFrameClipModeCache.set(A,B));const Q=B[g];if(Q!==255)return Q;let E=0,e=!1;for(let i=0;i<I.spriteCount;i++){const t=(i*I.frameCount+g)*gI;if(I.frameData[t+8]<.05)continue;const a=this.getClipMeshForSprite(A,i,g);if(a===void 0){E=2,e=!0;break}if(!a||a.indices.length===0)continue;if(!this.getClipRect(a)||!nB(I.frameData[t+2],I.frameData[t+3],I.frameData[t+4],I.frameData[t+5])){E=2;break}E=1}return e||(B[g]=E),E}async prewarmClipMeshes(A,g={}){return this.prewarmEntityClipMeshes(A,void 0,g)}async prewarmClipMeshesForFrame(A,g,I={}){return this.prewarmEntityClipMeshes(A,g,I)}retainClipPreparation(A){var g;if(this.clipMeshDestroyed)throw CA("SVGA renderer destroyed during clip prewarm");let I=this.clipPreparationOwners.get(A);if(!I){I=new AbortController,this.clipPreparationOwners.set(A,I),this.liveClipPreparationControllers.add(I);const B=A.spriteTable;this.clipTableOwnerCounts.set(B,((g=this.clipTableOwnerCounts.get(B))!=null?g:0)+1)}return J(I.signal,"SVGA clip resource released"),I}async prewarmEntityClipMeshes(A,g,I){var B,Q;J(I.signal,"SVGA clip prewarm aborted"),(B=I.checkActive)==null||B.call(I);const E=this.retainClipPreparation(A),e=I.signal?new AbortController:null,i=()=>e.abort();e&&(E.signal.addEventListener("abort",i,{once:!0}),I.signal.addEventListener("abort",i,{once:!0}));const t=(Q=e==null?void 0:e.signal)!=null?Q:E.signal,a={...I,signal:t,checkActive:()=>{var o;J(t,"SVGA clip prewarm aborted"),(o=I.checkActive)==null||o.call(I),J(t,"SVGA clip prewarm aborted")}};try{const o=await tg(this.collectClipPathsSteps(A.spriteTable,g),a,"clip-prepare");return o.length===0?0:await this.buildMissingClipMeshes(o,a)}finally{e&&(E.signal.removeEventListener("abort",i),I.signal.removeEventListener("abort",i))}}prewarmShapeMeshes(A,g){const I=new Set;let B=0;for(const Q of g.spriteTable.shapesTable){if(!(Q!=null&&Q.length)||I.has(Q))continue;I.add(Q);const E=this.getShapeMesh(Q);!E||E.indices.length===0||(this.ensureShapeMeshBuffers(A,E),B++)}return B}retainHybridMeshes(A,g){var I,B,Q,E,e,i;const t=g.svgaHybridCommandTable;if(!t)throw new Error("SVGA Hybrid command table missing");if(this.entityRetainedClipMeshes.has(g)||this.entityRetainedShapeMeshes.has(g))return;const a=new Set,o=new Set;for(let s=0;s<t.operations.length;s++){const n=t.operations[s],r=s*3;if(n===Pg||n===FB){const c=this.getClipMeshByIndex(g,(I=t.meshReferences[r+1])!=null?I:-1);if(!c||c.vertices.length<6||c.indices.length<3)throw new Error("SVGA Hybrid clip mesh validation failed");a.add(c)}if(n===yB){const c=(B=t.meshReferences[r])!=null?B:-1,h=g.spriteTable.shapesTable[c],l=h?this.getShapeMesh(h):null;if(!l||l.gpuVertices.length<9||l.indices.length<3)throw new Error("SVGA Hybrid shape mesh validation failed");o.add(l)}}try{for(const s of a)this.ensureClipMeshBuffers(A,s);for(const s of o)this.ensureShapeMeshBuffers(A,s)}catch(s){for(const n of a)((Q=this.clipMeshRefCounts.get(n))!=null?Q:0)>0||(n.vertexBuf&&A.deleteBuffer(n.vertexBuf),n.indexBuf&&A.deleteBuffer(n.indexBuf),n.vertexBuf=null,n.indexBuf=null,this.clipMeshesWithBuffers.delete(n));for(const n of o)((E=this.shapeMeshRefCounts.get(n))!=null?E:0)>0||(n.vertexBuf&&A.deleteBuffer(n.vertexBuf),n.indexBuf&&A.deleteBuffer(n.indexBuf),n.vertexBuf=null,n.indexBuf=null,this.shapeMeshesWithBuffers.delete(n));throw s}for(const s of a)this.clipMeshRefCounts.set(s,((e=this.clipMeshRefCounts.get(s))!=null?e:0)+1);for(const s of o)this.shapeMeshRefCounts.set(s,((i=this.shapeMeshRefCounts.get(s))!=null?i:0)+1);this.entityRetainedClipMeshes.set(g,a),this.entityRetainedShapeMeshes.set(g,o)}releaseHybridMeshes(A,g){var I,B,Q,E;const e=this.entityRetainedClipMeshes.get(g);if(e){for(const t of e){const a=Math.max(0,((I=this.clipMeshRefCounts.get(t))!=null?I:1)-1);if(a>0){this.clipMeshRefCounts.set(t,a);continue}this.clipMeshRefCounts.delete(t),t.vertexBuf&&A.deleteBuffer(t.vertexBuf),t.indexBuf&&A.deleteBuffer(t.indexBuf),t.vertexBuf=null,t.indexBuf=null,this.clipMeshesWithBuffers.delete(t);for(const[o,s]of this.clipMeshCache)s===t&&this.clipMeshCache.delete(o)}this.entityRetainedClipMeshes.delete(g),this.entityClipMeshArrayCache.delete(g)}const i=this.entityRetainedShapeMeshes.get(g);if(i){for(const t of i){const a=Math.max(0,((B=this.shapeMeshRefCounts.get(t))!=null?B:1)-1);if(a>0){this.shapeMeshRefCounts.set(t,a);continue}this.shapeMeshRefCounts.delete(t),t.vertexBuf&&A.deleteBuffer(t.vertexBuf),t.indexBuf&&A.deleteBuffer(t.indexBuf),t.vertexBuf=null,t.indexBuf=null,this.shapeMeshesWithBuffers.delete(t)}this.entityRetainedShapeMeshes.delete(g)}for(const t of g.spriteTable.shapesTable){const a=t?this.shapeMeshCache.get(t):null;!a||((Q=this.shapeMeshRefCounts.get(a))!=null?Q:0)>0||(a.vertexBuf&&A.deleteBuffer(a.vertexBuf),a.indexBuf&&A.deleteBuffer(a.indexBuf),a.vertexBuf=null,a.indexBuf=null,this.shapeMeshesWithBuffers.delete(a))}for(const t of g.spriteTable.clipPaths){const a=this.clipMeshCache.get(t);!a||((E=this.clipMeshRefCounts.get(a))!=null?E:0)>0||(a.vertexBuf&&A.deleteBuffer(a.vertexBuf),a.indexBuf&&A.deleteBuffer(a.indexBuf),a.vertexBuf=null,a.indexBuf=null,this.clipMeshesWithBuffers.delete(a),this.clipMeshCache.delete(t))}}releaseClipPreparation(A){var g;let I=this.clipPreparationOwners.get(A);if(I!=null&&I.signal.aborted)return;const B=!!I;I||(I=new AbortController,this.clipPreparationOwners.set(A,I)),I.abort(),this.liveClipPreparationControllers.delete(I),this.entityClipMeshArrayCache.delete(A),this.entityFrameClipModeCache.delete(A);const Q=((g=this.clipTableOwnerCounts.get(A.spriteTable))!=null?g:0)-Number(B);if(Q>0){this.clipTableOwnerCounts.set(A.spriteTable,Q);return}this.clipTableOwnerCounts.delete(A.spriteTable);for(const E of this.clipAnalysis.release(A.spriteTable)){this.pendingClipMeshPaths.delete(E),this.clipMeshStates.delete(E),this.clipMeshCache.delete(E);const e=this.clipMeshStateWaiters.get(E);this.clipMeshStateWaiters.delete(E);for(const i of e!=null?e:[])i.signal&&i.onAbort&&i.signal.removeEventListener("abort",i.onAbort),i.reject(CA("SVGA clip resource released"))}for(const[E,e]of this.clipResourceProducers)e.every(i=>!this.clipMeshStates.has(i))&&E.abort()}*collectClipPathsSteps(A,g){var I;if(g!=null&&(g<0||g>=A.frameCount))return[];const B=new Set,Q=g==null?A.clipPaths.length:A.spriteCount;for(let E=0;E<Q;E++){(E&127)===0&&(yield);const e=g==null?-1:E*A.frameCount+g;if(e>=0&&A.frameData[e*gI+8]<.05)continue;const i=e<0?E:(I=A.clipPathIndex[e])!=null?I:-1,t=A.clipPaths[i];t&&(this.clipAnalysis.retain(A,t),B.add(t))}return Array.from(B)}async buildMissingClipMeshes(A,g={}){var I,B;if(J(g.signal,"SVGA clip prewarm aborted"),(I=g.checkActive)==null||I.call(g),this.clipMeshDestroyed)throw CA("SVGA renderer destroyed during clip prewarm");const Q=A.find(e=>{var i;return((i=this.clipMeshStates.get(e))==null?void 0:i.status)==="invalid"});if(Q){const e=this.clipMeshStates.get(Q);throw new Error(`SVGA clip mesh remains invalid for ${Q}: ${(e==null?void 0:e.status)==="invalid"?e.reason:"unknown error"}`)}const E=A.filter(e=>!this.clipMeshStates.has(e));return E.length>0&&this.startClipMeshProducer(E,{frameBudgetMs:g.frameBudgetMs,workerTimeSliceMs:g.workerTimeSliceMs,useWorker:g.useWorker,profile:g.profile}),await this.waitForClipMeshPaths(A,g.signal),J(g.signal,"SVGA clip prewarm aborted"),(B=g.checkActive)==null||B.call(g),A.reduce((e,i)=>{var t;return e+ +(((t=this.clipMeshStates.get(i))==null?void 0:t.status)==="valid")},0)}startClipMeshProducer(A,g){if(this.clipMeshDestroyed||A.length===0)return;const I=++this.clipMeshGeneration;for(const i of A)this.publishClipMeshState(i,{status:"building",requestId:I,generation:I,attempts:0});const B=new AbortController,Q=()=>B.abort();this.clipMeshProducerController.signal.addEventListener("abort",Q,{once:!0}),this.clipResourceProducers.set(B,A);const E=[],e=this.runClipMeshProducer(A,I,g,E,B.signal).catch(i=>{this.clipMeshDestroyed&&Mg(i)||this.failClipMeshProducer(A,I,i,E)}).finally(()=>{this.clipMeshProducerTasks.delete(e),this.clipResourceProducers.delete(B),this.clipMeshProducerController.signal.removeEventListener("abort",Q)});this.clipMeshProducerTasks.add(e),e.catch(i=>{console.error("[GiftStage:SVGA] clip mesh producer terminalization failed",i);try{this.failClipMeshProducer(A,I,i,E)}catch(t){console.error("[GiftStage:SVGA] clip mesh producer emergency terminalization failed",t)}})}async runClipMeshProducer(A,g,I,B,Q){var E,e,i,t;if(J(Q,"SVGA clip producer aborted"),I.useWorker!==!1&&fE())try{const n=await ga(A,{workerTimeSliceMs:I.workerTimeSliceMs,signal:Q,frameBudgetMs:I.frameBudgetMs,profile:I.profile,onAnalysis:(c,h)=>{var l;!Q.aborted&&((l=this.clipMeshStates.get(c))==null?void 0:l.generation)===g&&this.clipAnalysis.set(c,h)}});J(Q,"SVGA clip producer aborted");const r=function*(){for(const c of A){yield;const h=this.clipMeshStates.get(c);if((h==null?void 0:h.status)!=="building"||h.generation!==g)continue;const l=n.get(c);if(this.getClipGeometryKind(c)==="empty"){this.publishClipMeshState(c,{status:"empty",generation:g,attempts:h.attempts+1});continue}if(!l)throw new Error(`SVGA clip worker omitted mesh after validation: ${c}`);const w=VC(l);if(w)throw new Error(`SVGA clip mesh invalid for ${c}: ${w}`);this.publishClipMeshState(c,{status:"valid",mesh:l,generation:g,attempts:h.attempts+1})}}.call(this);await tg(r,{...I,signal:Q},"validation");return}catch(n){if(Q.aborted)throw Mg(n)?n:CA("SVGA clip producer aborted");B.push({type:"clip-protocol-error",message:n instanceof Error?n.message:String(n)}),console.warn("[GiftStage:SVGA] clip mesh worker failed, using main thread",n)}const a=OA({maxBudgetMs:Math.max(1,(E=I.frameBudgetMs)!=null?E:8)});let o=0,s=null;for(const n of A){J(Q,"SVGA clip producer aborted");const r=this.clipMeshStates.get(n);if(!((r==null?void 0:r.status)!=="building"||r.generation!==g)){try{const c={signal:Q,profile:I.profile,frameBudgetMs:I.frameBudgetMs,checkActive:()=>J(Q)},h=await tg(UC(n),c,"clip-prepare"),l=await tg(gE(h,!n.trim()),c,"clip-prepare");if(((e=this.clipMeshStates.get(n))==null?void 0:e.generation)!==g)continue;if(this.clipAnalysis.set(n,l),l.kind==="empty"){this.publishClipMeshState(n,{status:"empty",generation:g,attempts:r.attempts+1});continue}const w=I.profile?I.profile.measure("clip-prepare",()=>ZC(h)):ZC(h),D=w?await tg(UB(w),c,"validation"):"triangulation produced no mesh";if(!w||D)throw new Error(D||"triangulation produced no mesh");if(J(Q),((i=this.clipMeshStates.get(n))==null?void 0:i.generation)!==g)continue;this.publishClipMeshState(n,{status:"valid",mesh:w,generation:g,attempts:r.attempts+1})}catch(c){if(Q.aborted)throw CA("SVGA clip producer aborted");if(((t=this.clipMeshStates.get(n))==null?void 0:t.generation)!==g)continue;const h=c instanceof Error?c.message:String(c);this.publishClipMeshState(n,{status:"invalid",reason:h,generation:g,attempts:r.attempts+1}),B.push({type:"clip-mesh-invalid",message:`${n}: ${h}`}),s!=null||(s=new Error(`SVGA clip mesh invalid for ${n}: ${h}`))}o++,o<A.length&&a.shouldYield()&&(await a.yield(),J(Q,"SVGA clip producer aborted"))}}if(this.emitClipProducerDiagnosticsAfterTerminal(A,g,B),s)throw s;A.length>0&&console.info(`[GiftStage:SVGA] clip mesh main prewarm paths=${A.length} built=${o}`)}failClipMeshProducer(A,g,I,B=[]){if(this.clipMeshDestroyed)return;const Q=I instanceof Error?I.message:String(I),E=[];for(const e of A){const i=this.clipMeshStates.get(e);(i==null?void 0:i.status)!=="building"||i.generation!==g||(this.publishClipMeshState(e,{status:"invalid",reason:Q,generation:g,attempts:i.attempts+1}),E.push(e))}for(const e of E)B.push({type:"clip-mesh-invalid",message:`${e}: ${Q}`});this.emitClipProducerDiagnosticsAfterTerminal(A,g,B)}emitClipProducerDiagnosticsAfterTerminal(A,g,I){if(this.clipMeshDestroyed){I.length=0;return}if(A.some(Q=>{const E=this.clipMeshStates.get(Q);return(E==null?void 0:E.status)==="building"&&E.generation===g}))throw new Error(`SVGA clip producer generation ${g} emitted diagnostics before terminalization`);for(const Q of I.splice(0))this.emitRuntimeDiagnostic(Q)}publishClipMeshState(A,g){if(this.clipMeshDestroyed)return;const I=this.clipMeshStates.get(A);I&&g.generation<I.generation||(this.clipMeshStates.set(A,g),g.status==="valid"?this.clipMeshCache.set(A,g.mesh):g.status==="empty"?this.clipMeshCache.set(A,null):this.clipMeshCache.delete(A),this.entityClipMeshArrayCache=new WeakMap,this.entityFrameClipModeCache=new WeakMap,g.status!=="building"&&this.settleClipMeshStateWaiters(A,g))}async waitForClipMeshPaths(A,g){await Promise.all(A.map(I=>this.waitForClipMeshPath(I,g)))}waitForClipMeshPath(A,g){if(this.clipMeshDestroyed)return Promise.reject(CA("SVGA renderer destroyed during clip prewarm"));const I=this.clipMeshStates.get(A);return(I==null?void 0:I.status)==="valid"||(I==null?void 0:I.status)==="empty"?Promise.resolve():(I==null?void 0:I.status)==="invalid"?Promise.reject(new Error(`SVGA clip mesh invalid for ${A}: ${I.reason}`)):g!=null&&g.aborted?Promise.reject(CA("SVGA clip prewarm aborted")):new Promise((B,Q)=>{const E={resolve:B,reject:Q,signal:g};let e=this.clipMeshStateWaiters.get(A);e||(e=new Set,this.clipMeshStateWaiters.set(A,e)),E.onAbort=()=>{e.delete(E),e.size===0&&this.clipMeshStateWaiters.delete(A),Q(CA("SVGA clip prewarm aborted"))},e.add(E),g==null||g.addEventListener("abort",E.onAbort,{once:!0})})}settleClipMeshStateWaiters(A,g){const I=this.clipMeshStateWaiters.get(A);if(I){this.clipMeshStateWaiters.delete(A);for(const B of I)B.signal&&B.onAbort&&B.signal.removeEventListener("abort",B.onAbort),g.status==="invalid"?B.reject(new Error(`SVGA clip mesh invalid for ${A}: ${g.reason}`)):B.resolve()}}queueClipMeshBuild(A){if(this.clipMeshDestroyed)return;const g=this.clipMeshStates.get(A);!A||(g==null?void 0:g.status)==="valid"||(g==null?void 0:g.status)==="empty"||(g==null?void 0:g.status)==="building"||(g==null?void 0:g.status)==="invalid"||this.pendingClipMeshPaths.has(A)||(this.pendingClipMeshPaths.add(A),this.scheduleClipMeshBuildFlush())}scheduleClipMeshBuildFlush(){if(this.clipMeshDestroyed||this.clipMeshBuildInFlight)return;this.clipMeshBuildInFlight=!0,(typeof queueMicrotask=="function"?queueMicrotask:g=>setTimeout(g,0))(()=>{this.flushPendingClipMeshBuilds()})}async flushPendingClipMeshBuilds(){if(this.clipMeshDestroyed){this.pendingClipMeshPaths.clear(),this.clipMeshBuildInFlight=!1;return}const A=Array.from(this.pendingClipMeshPaths);if(this.pendingClipMeshPaths.clear(),A.length===0){this.clipMeshBuildInFlight=!1;return}try{await this.buildMissingClipMeshes(A)}catch(g){Mg(g)||console.warn("[GiftStage:SVGA] deferred clip mesh build failed",g)}finally{if(this.clipMeshBuildInFlight=!1,this.clipMeshDestroyed){this.pendingClipMeshPaths.clear();return}this.pendingClipMeshPaths.size>0&&this.scheduleClipMeshBuildFlush(),this.notifyClipMeshReady()}}async hydrateClipMeshesCooperative(A,g={}){const I=function*(){for(const[B,Q]of A!=null?A:[]){if(yield,this.clipMeshDestroyed)throw CA("SVGA renderer destroyed");!Q||this.clipMeshStates.has(B)||(yield*UB(Q))==null&&(this.clipMeshStates.has(B)||this.publishClipMeshState(B,{status:"valid",mesh:Q,generation:++this.clipMeshGeneration,attempts:1}))}}.call(this);await tg(I,g,"validation")}hydrateClipMeshes(A){if(!(!A||A.size===0))for(const[g,I]of A)I!=null&&I.vertices&&I.indices&&!this.clipMeshStates.has(g)&&VC(I)==null&&this.publishClipMeshState(g,{status:"valid",mesh:I,generation:++this.clipMeshGeneration,attempts:1})}snapshotClipMeshes(A){const g=new Map;for(const I of A.spriteTable.clipPaths){if(!I||g.has(I))continue;const B=this.clipMeshCache.get(I);B!=null&&B.vertices&&B.indices&&g.set(I,{vertices:new Float32Array(B.vertices),indices:new Uint32Array(B.indices)})}return g}canUseTimelinePath(A,g,I){var B;const Q=g.videoEntity,E=g.svgaFrameTableState,e=E==null?void 0:E.binding;if(!Q||!e||e.backend!==A.type||g.options.svgaFrameEvaluation==="cpu"||g.motionTrackBinding!=null&&A.type!=="webgpu"||(B=g.svgaSlotTextures)!=null&&B.size)return!1;const i=E.renderInfo.selectedPath;return I?i===I:i==="gpu-direct"||i==="gpu-hybrid"}resolveTimelineSlotState(A,g,I,B){var Q,E,e,i,t,a,o,s,n;const r=A.videoEntity,c=A.motionTrackBinding!=null,h=Fg(A,r.params.viewBoxWidth,r.params.viewBoxHeight,this.layoutScratch,c);if(c){const m=XA(A),H=A.width*A.scale,v=A.height*A.scale,j=m==="cover"?H:Math.min(h.width,H),T=m==="cover"?v:Math.min(h.height,v),b=-H/2+(m==="cover"?0:h.offsetX),X=-v/2+(m==="cover"?0:h.offsetY),Z=this.timelineSlotStateScratch;return Z[0]=h.scaleX,Z[1]=0,Z[2]=0,Z[3]=h.scaleY,Z[4]=h.offsetX-A.width*A.scale/2,Z[5]=h.offsetY-A.height*A.scale/2,Z[6]=1,Z[7]=g,Z[8]=(Q=B==null?void 0:B.x0)!=null?Q:b,Z[9]=(E=B==null?void 0:B.y0)!=null?E:X,Z[10]=(e=B==null?void 0:B.x1)!=null?e:b+j,Z[11]=(i=B==null?void 0:B.y1)!=null?i:X+T,Z[12]=1,Z[13]=I,Z}const l=XA(A),w=A.width*rg(A),D=A.height*cg(A),y=l==="cover"?w:Math.min(h.width,w),R=l==="cover"?D:Math.min(h.height,D),F=l==="cover"?A.x:A.x+h.offsetX,d=l==="cover"?A.y:A.y+h.offsetY;Sg(A,F,d,y,R,this.slotScissor);const f=(t=A.rotation)!=null?t:0,u=Math.cos(f),G=Math.sin(f),S=vB(A,this.timelineOriginScratch),M=A.x+h.offsetX,N=A.y+h.offsetY,U=M-S.x,K=N-S.y,k=this.timelineSlotStateScratch;return k[0]=u*h.scaleX,k[1]=G*h.scaleX,k[2]=-G*h.scaleY,k[3]=u*h.scaleY,k[4]=S.x+u*U-G*K,k[5]=S.y+G*U+u*K,k[6]=A.opacity,k[7]=g,k[8]=(a=B==null?void 0:B.x0)!=null?a:Math.floor(this.slotScissor.x),k[9]=(o=B==null?void 0:B.y0)!=null?o:Math.floor(this.slotScissor.y),k[10]=(s=B==null?void 0:B.x1)!=null?s:Math.ceil(this.slotScissor.x+this.slotScissor.w),k[11]=(n=B==null?void 0:B.y1)!=null?n:Math.ceil(this.slotScissor.y+this.slotScissor.h),k[12]=1,k[13]=I,k}resolveCachedTimelineSlotState(A,g){const I=this.timelineSlotStateCache.get(A);if((I==null?void 0:I.frame)===g)return I.state;const B=this.resolveTimelineSlotState(A,g,0).slice();return this.timelineSlotStateCache.set(A,{frame:g,state:B}),B}drawTimelineRange(A,g,I,B,Q,E,e,i="none",t,a,o=-1){var s;if(!this.canUseTimelinePath(A,g)||Q<1)return!1;const n=g.videoEntity,r=g.svgaFrameTableState,c=r.binding;this.ensureInstancedQuadBuffers(A);const h=this.timelineDrawCommand;h.vertexBuffer=this.instancedQuadVB,h.indexBuffer=this.instancedQuadIB,h.instanceCount=Q*((s=a==null?void 0:a.slotCount)!=null?s:1),h.instanceData=void 0,h.svgaFrameTableSlotStates=a==null?void 0:a.states,h.svgaFrameTableSlotStateCount=a==null?void 0:a.slotCount,h.svgaFrameTableSpritesPerSlot=a==null?void 0:a.spritesPerSlot,h.svgaFrameTableSlotStateUploadId=a==null?void 0:a.uploadId,h.stencil=i,h.svgaFrameTable=c,h.svgaFrameIndex=I,h.svgaSpriteBase=B,h.svgaFrameTableFrameCount=n.spriteTable.frameCount,h.svgaFrameTableSpriteCount=n.spriteTable.spriteCount,h.svgaFrameTableFrameIndex=I,h.svgaFrameTableSpriteBase=B,h.svgaFrameTableAtlasPage=o,h.svgaFrameTableSlotState=this.resolveTimelineSlotState(g,I,B,t),h.svgaSlotState=h.svgaFrameTableSlotState;const l=g.motionTrackBinding;h.motionTrackBuffer=l==null?void 0:l.buffer,h.motionTrackGlobalsBuffer=l==null?void 0:l.globalsBuffer,h.motionTrackSampleCount=l==null?void 0:l.sampleCount,h.motionTrackSampleIntervalMs=l==null?void 0:l.sampleIntervalMs,h.motionTrackTimeMs=l==null?void 0:l.currentTimeMs,h.motionTrackIndex=l==null?void 0:l.trackIndex,this.timelineTexturesScratch[0]=E,this.timelineTexturesScratch.length=1,this.timelineUniformsScratch.u_projection=e;const w=this.submitBackendDraw(A,h);return h.svgaFrameTableSlotStates=void 0,h.svgaFrameTableSlotStateCount=void 0,h.svgaFrameTableSpritesPerSlot=void 0,h.svgaFrameTableSlotStateUploadId=void 0,r.frameIndex=I,w}drawTimelineSlot(A,g,I){var B,Q;const E=g.videoEntity;if(!E||!this.canUseTimelinePath(A,g,"gpu-direct"))return!1;const e=this.resolveRenderableFrame(g,E);if(e==null)return!1;const i=(B=E.atlasTextureHandles)!=null&&B.length?E.atlasTextureHandles:E.atlasTextureHandle?[E.atlasTextureHandle]:[];let t=!1;for(const a of(Q=E.svgaTimelineDrawRuns)!=null?Q:[]){const o=i[a.textureIndex];if(!o)continue;let s=a.spriteBase,n=a.spriteCount;for(;n>0;){const r=Math.min(zA,n);if(!this.drawTimelineRange(A,g,e,s,r,o,I,"none",void 0,void 0,a.textureIndex))return!1;t=!0,s+=r,n-=r}}return A.resetScissor(),t}getClipMeshByIndex(A,g){if(g<0)return null;this.retainClipPreparation(A);const I=A.spriteTable;let B=this.entityClipMeshArrayCache.get(A);(!B||B.length!==I.clipPaths.length)&&(B=new Array(I.clipPaths.length),this.entityClipMeshArrayCache.set(A,B));const Q=B[g];if(Q!==void 0)return Q;const E=I.clipPaths[g];if(!E)return null;if(this.clipAnalysis.retain(I,E),this.getClipGeometryKind(E)==="empty")return this.clipMeshStates.has(E)||this.publishClipMeshState(E,{status:"empty",generation:++this.clipMeshGeneration,attempts:0}),B[g]=null,null;const e=this.clipMeshStates.get(E);if(!e){this.queueClipMeshBuild(E);return}if(e.status!=="building")return e.status==="invalid"?this.handleInvalidClipMesh(A,E,e):e.status==="empty"?(B[g]=null,null):(B[g]=e.mesh,e.mesh)}handleInvalidClipMesh(A,g,I){var B;const Q=(B=A.svgaFrameTableState)==null?void 0:B.renderInfo.selectedPath;return(Q==="gpu-direct"||Q==="gpu-hybrid")&&this.rejectFastPathFrame(A),console.error(`[GiftStage:SVGA] invalid clip mesh treated as an empty CPU clip: ${g}`,I.reason),null}drawTimelineMesh(A,g,I,B,Q,E,e,i,t,a,o){var s,n;if(!this.canUseTimelinePath(A,g,"gpu-hybrid"))return!1;const r=g.videoEntity,c=(s=g.svgaFrameTableState)==null?void 0:s.binding;if(!c)return!1;const h=i==="svga-frame-table-shape-premul"?this.timelineShapeDrawCommand:this.timelineClipDrawCommand;h.vertexBuffer=Q,h.indexBuffer=E,h.indexCount=e,h.instanceCount=(n=o==null?void 0:o.slotCount)!=null?n:1,h.instanceData=void 0,h.svgaFrameTableSlotStates=o==null?void 0:o.states,h.svgaFrameTableSlotStateCount=o==null?void 0:o.slotCount,h.svgaFrameTableSpritesPerSlot=o==null?void 0:o.spritesPerSlot,h.svgaFrameTableSlotStateUploadId=o==null?void 0:o.uploadId,h.stencil=t,h.svgaFrameTable=c,h.svgaFrameTableFrameCount=r.spriteTable.frameCount,h.svgaFrameTableSpriteCount=r.spriteTable.spriteCount,h.svgaFrameTableFrameIndex=I,h.svgaFrameTableSpriteBase=B,h.svgaFrameTableSlotState=this.resolveTimelineSlotState(g,I,B),h.svgaSlotState=h.svgaFrameTableSlotState;const l=g.motionTrackBinding;h.motionTrackBuffer=l==null?void 0:l.buffer,h.motionTrackGlobalsBuffer=l==null?void 0:l.globalsBuffer,h.motionTrackSampleCount=l==null?void 0:l.sampleCount,h.motionTrackSampleIntervalMs=l==null?void 0:l.sampleIntervalMs,h.motionTrackTimeMs=l==null?void 0:l.currentTimeMs,h.motionTrackIndex=l==null?void 0:l.trackIndex,this.timelineTexturesScratch[0]=this.getWhiteTexture(A),this.timelineTexturesScratch.length=1,this.timelineUniformsScratch.u_projection=a;const w=this.submitBackendDraw(A,h);return h.svgaFrameTableSlotStates=void 0,h.svgaFrameTableSlotStateCount=void 0,h.svgaFrameTableSpritesPerSlot=void 0,h.svgaFrameTableSlotStateUploadId=void 0,g.svgaFrameTableState.frameIndex=I,w}flushHybridScheduledSlots(A,g,I){var B,Q,E;const e=g[0],i=e==null?void 0:e.videoEntity;if(!e||!i)return;const t=this.prepareDisjointHybridSlots(g,i);if(g.length>=2&&t==null&&this.prepareDisjointHybridSlots(g,i,!0)!=null){const n=i.svgaHybridCommandTable,r=new Map;for(let c=0;c<g.length;c++){const h=this.timelineBatchFrameScratch[c],l=(B=n.frameScheduleIds[h])!=null?B:-1;let w=r.get(l);w||(w=[],r.set(l,w)),w.push(g[c])}if(r.size>1){for(const c of r.values())this.flushHybridScheduledSlots(A,c,I);return}}if(g.length<2||t==null){for(const s of g)s.svgaDrawBatchMode="hybrid-scheduled",s.svgaDrawCompatibleInstanceCount=1,this.drawHybridScheduledSlot(A,s,I)||this.rejectFastPathFrame(i);return}const a=this.timelineBatchDataScratch;for(let s=0;s<g.length;s++){const n=g[s],r=this.timelineBatchFrameScratch[s],c=this.resolveTimelineSlotState(n,r,0),h=s*tI;a.set(c.subarray(0,zB),h),a[h+kg.atlasPage]=-1,a[h+kg.motionTrackPlusOne]=((E=(Q=n.motionTrackBinding)==null?void 0:Q.trackIndex)!=null?E:-1)+1,n.svgaFrameTableState.frameIndex=r,n.svgaDrawBatchMode="hybrid-scheduled",n.svgaDrawCompatibleInstanceCount=g.length}const o={states:a,slotCount:g.length,spritesPerSlot:1,uploadId:++this.timelineSlotStateUploadId};this.drawHybridScheduledOperations(A,e,t,I,o)||this.rejectFastPathFrame(i)}prepareDisjointHybridSlots(A,g,I=!1){var B;if(A.length<2||A.length*tI>this.timelineBatchDataScratch.length)return null;const Q=this.sharedSlotLayerWorksScratch;Q.length=0;const E=g.svgaHybridCommandTable;if(!E)return null;let e=-1,i=-1;for(let t=0;t<A.length;t++){const a=A[t];if(a.motionTrackBinding||a.videoEntity!==g)return Q.length=0,null;const o=this.resolveRenderableFrame(a,g),s=o==null?-1:(B=E.frameScheduleIds[o])!=null?B:-1;if(o==null||s<0||!I&&i>=0&&s!==i)return Q.length=0,null;e<0&&(e=o),i=s,this.timelineBatchFrameScratch[t]=o;const n=XA(a),r=Fg(a,g.params.viewBoxWidth,g.params.viewBoxHeight,this.layoutScratch,!1),c=a.width*rg(a),h=a.height*cg(a),l=n==="cover"?c:Math.min(r.width,c),w=n==="cover"?h:Math.min(r.height,h),D=n==="cover"?a.x:a.x+r.offsetX,y=n==="cover"?a.y:a.y+r.offsetY;Sg(a,D,y,l,w,this.slotScissor),this.updateSlotClipBounds();let R=this.sharedSlotLayerWorkPool[t];R||(R={slot:a,renderFrame:o,sx:1,sy:1,offsetX:0,offsetY:0,clipX0:0,clipY0:0,clipX1:0,clipY1:0},this.sharedSlotLayerWorkPool[t]=R),R.slot=a,R.renderFrame=o,R.clipX0=this.slotClipX0,R.clipY0=this.slotClipY0,R.clipX1=this.slotClipX1,R.clipY1=this.slotClipY1;for(const F of Q)if(R.clipX1>F.clipX0&&R.clipX0<F.clipX1&&R.clipY1>F.clipY0&&R.clipY0<F.clipY1)return Q.length=0,null;Q.push(R)}return Q.length=0,e}drawHybridScheduledSlot(A,g,I){const B=g.videoEntity;if(!B)return!1;const Q=this.resolveRenderableFrame(g,B);return Q!=null?this.drawHybridScheduledOperations(A,g,Q,I):!1}drawHybridScheduledOperations(A,g,I,B,Q){var E,e,i,t,a,o,s,n,r,c,h,l,w,D,y;const R=g.videoEntity,F=R==null?void 0:R.svgaHybridCommandTable;if(!R||!F)return!1;const d=(E=F.runFrameOffsets[I])!=null?E:0,f=(e=F.runFrameOffsets[I+1])!=null?e:d,u=(i=R.atlasTextureHandles)!=null&&i.length?R.atlasTextureHandles:R.atlasTextureHandle?[R.atlasTextureHandle]:[];for(let N=d;N<f;N++){const U=(t=F.runOperationStarts[N])!=null?t:0,K=F.runTypes[N],k=U*3;if(K===Pg||K===FB){const m=(a=F.meshReferences[k+1])!=null?a:-1,H=this.getClipMeshByIndex(R,m);if(!H||H.indices.length<3)return!1}else if(K===yB){const m=(o=F.meshReferences[k])!=null?o:-1,H=R.spriteTable.shapesTable[m],v=H?this.getShapeMesh(H):null;if(!v||v.indices.length<3)return!1}else if(K===rC||K===cC){const m=(s=F.meshReferences[k+2])!=null?s:-1;if(m<0||!u[m])return!1}}const G=(n=g.svgaFrameTableState)==null?void 0:n.binding,S=(G==null?void 0:G.backend)==="webgpu"?G.hybridSpriteMetadataBuffer:void 0,M=(G==null?void 0:G.backend)==="webgl2"?G.hybridSpriteMetadataTexture:void 0;this.timelineDrawCommand.svgaSpriteMetadata=S!=null?S:M,this.timelineDrawCommand.svgaSpriteMetadataBuffer=S,this.timelineDrawCommand.svgaSpriteMetadataTexture=M,this.timelineDrawCommand.svgaSpriteMetadataStrideFloats=ZI;try{Q||(g.svgaDrawBatchMode="hybrid-scheduled",g.svgaDrawCompatibleInstanceCount=1);for(let N=d;N<f;N++){const U=(r=F.runOperationStarts[N])!=null?r:0,K=F.runTypes[N],k=(c=F.runOperationCounts[N])!=null?c:1,m=(h=F.spriteIndices[U])!=null?h:0,H=U*3,v=(l=F.meshReferences[H])!=null?l:-1,j=(w=F.meshReferences[H+1])!=null?w:-1,T=(D=F.meshReferences[H+2])!=null?D:0;if(K===rC){const b=u[T],X=Math.max(1,Math.floor(zA/((y=Q==null?void 0:Q.slotCount)!=null?y:1)));for(let Z=0;Z<k;Z+=X){const EA=Math.min(X,k-Z);if(Q&&(Q.spritesPerSlot=EA),!b||!this.drawTimelineRange(A,g,I,U+Z,EA,b,B,"none",void 0,Q))return!1}continue}if(K===cC){const b=u[T];if(Q&&(Q.spritesPerSlot=1),!b||!this.drawTimelineRange(A,g,I,U,1,b,B,"test",void 0,Q))return!1}else if(K===yB){const b=R.spriteTable.shapesTable[v],X=b?this.getShapeMesh(b):null;if(!X||X.indices.length===0)return!1;const Z=this.ensureShapeMeshBuffers(A,X);if(Q&&(Q.spritesPerSlot=1),!this.drawTimelineMesh(A,g,I,m,Z.vertexBuf,Z.indexBuf,X.indices.length,"svga-frame-table-shape-premul",j>=0?"test":"none",B,Q))return!1}else if(K===Pg||K===FB){const b=this.getClipMeshByIndex(R,j);if(!b||b.indices.length===0)return!1;const X=this.ensureClipMeshBuffers(A,b);if(Q&&(Q.spritesPerSlot=1),!this.drawTimelineMesh(A,g,I,m,X.vertexBuf,X.indexBuf,b.indices.length,"svga-frame-table-clip-mask",K===Pg?"write":"clear",B,Q))return!1}}return!0}finally{this.timelineDrawCommand.svgaSpriteMetadata=void 0,this.timelineDrawCommand.svgaSpriteMetadataBuffer=void 0,this.timelineDrawCommand.svgaSpriteMetadataTexture=void 0,this.timelineDrawCommand.svgaSpriteMetadataStrideFloats=void 0,this.destroyed||A.resetScissor()}}flushGroup(A,g){var I,B,Q,E,e,i,t,a,o,s;if(g.length===0)return;const n=this.getProjection();if((A.type==="webgl2"||A.type==="webgpu")&&this.tryFlushDisjointSharedEntityLayers(A,g,n))return;this.spriteWorkCursor=0;const r=this.batchSpritesScratch;r.length=0;let c=null;this.slotScissorActive=!1;for(const h of g){const l=h.videoEntity,w=this.resolveRenderableFrame(h,l);if(w==null)continue;const D=l.params.viewBoxWidth,y=l.params.viewBoxHeight,R=XA(h),F=this.canUseGpuMotion(h),d=Fg(h,D,y,this.layoutScratch,F),f=d.scaleX,u=d.scaleY,G=h.width*rg(h),S=h.height*cg(h),M=R==="cover"?G:Math.min(d.width,G),N=R==="cover"?S:Math.min(d.height,S),U=R==="cover"?h.x:h.x+d.offsetX,K=R==="cover"?h.y:h.y+d.offsetY;Sg(h,U,K,M,N,this.slotScissor),this.updateSlotClipBounds();const k=(A.type==="webgl2"||A.type==="webgpu")&&!l.spriteTable.hasAnyShapes&&!((I=h.svgaSlotTextures)!=null&&I.size),m=!k&&R!=="cover"&&!h.rotation&&!((B=h.svgaSlotTextures)!=null&&B.size)&&l.spriteTable.allFramesInsideViewBox===!0;if(k||m)this.slotScissorActive&&(r.length>0&&(this.drawBatch(A,r,c,n),r.length=0,c=null),A.resetScissor(),this.slotScissorActive=!1);else{r.length>0&&(this.drawBatch(A,r,c,n),r.length=0,c=null);const b=this.slotScissor;A.setScissor(b.x,b.y,b.w,b.h),this.slotScissorActive=!0}const H=(Q=l.atlasTextureHandles)!=null&&Q.length?l.atlasTextureHandles:(E=l.atlasTextureHandle)!=null?E:null,v=(e=h.svgaSlotTextures)!=null?e:null,j=h.state==="stopped"&&!l.spriteTable.hasAnyShapes&&this.getFrameClipMode(l,w)===0;if(!j)h.svgaStaticBatchCache&&(h.svgaStaticBatchCache=null);else if(this.staticBatchCacheMatches(h.svgaStaticBatchCache,h,l,H,v,f,u,d.offsetX,d.offsetY,w)){c=this.drawFromStaticBatchCache(A,h.svgaStaticBatchCache,r,c,n);continue}let T=j?[]:null;for(let b=0;b<l.spriteTable.spriteCount;b++){const X=l.spriteTable,Z=(b*X.frameCount+w)*gI;if(X.frameData[Z+8]*h.opacity<.05)continue;const EA=(i=X.clipPathIndex[b*X.frameCount+w])!=null?i:-1,UA=EA>=0?X.clipPaths[EA]:void 0;if(UA&&this.getClipGeometryKind(UA)==="empty")continue;const FA=lt(X,b,w),cA=!!FA&&FA.length>0,IA=this.acquireSpriteWork(h,b,X.frameData,Z,f,u,d.offsetX,d.offsetY),Ig=(t=X.imageKeys[b])!=null?t:"",QA=this.resolveSpriteTextureInto(h,Ig,IA);if(!QA&&!cA){this.spriteWorkCursor--;continue}const V=this.getClipMeshForSprite(l,b,w);if(EA>=0&&V===void 0)throw this.spriteWorkCursor--,T=null,new Error("SVGA clip mesh is still building; discard the complete frame");if(EA>=0&&V===null){this.spriteWorkCursor--,T=null;continue}if(cA){T=null,r.length>0&&(this.drawBatch(A,r,c,n),r.length=0,c=null),V&&V.indices.length>0?(this.drawShapeFrame(A,IA,FA,V,n),QA&&this.drawClippedSprite(A,IA,V,n)):(this.drawShapeFrame(A,IA,FA,V,n),QA&&this.drawSingleSprite(A,IA,n));continue}V&&V.indices.length>0?(T=null,r.length>0&&(this.drawBatch(A,r,c,n),r.length=0,c=null),this.drawClippedSprite(A,IA,V,n)):IA.override?(T&&T.push(this.captureStaticBatchCacheEntry(IA,!0)),r.length>0&&(this.drawBatch(A,r,c,n),r.length=0,c=null),this.drawSingleSprite(A,IA,n)):(T&&T.push(this.captureStaticBatchCacheEntry(IA,!1)),c&&c.id!==IA.handle.id&&(this.drawBatch(A,r,c,n),r.length=0,c=null),r.push(IA),c=IA.handle,r.length>=zA&&(this.drawBatch(A,r,c,n),r.length=0,c=null))}j&&(h.svgaStaticBatchCache=T?{entries:T,entity:l,atlasHandlesDep:H,svgaSlotTextures:v,currentFrame:w,opacity:h.opacity,x:h.x,y:h.y,width:h.width,height:h.height,scale:h.scale,motionScaleX:(a=h.motionScaleX)!=null?a:1,motionScaleY:(o=h.motionScaleY)!=null?o:1,rotation:(s=h.rotation)!=null?s:0,sx:f,sy:u,offsetX:d.offsetX,offsetY:d.offsetY}:null)}r.length>0&&this.drawBatch(A,r,c,n),r.length=0,this.releaseSpriteWorks(),this.slotScissorActive=!1,A.resetScissor()}tryFlushDisjointSharedEntityLayers(A,g,I){var B,Q,E,e,i;if(g.length<2)return!1;const t=(B=g[0])==null?void 0:B.videoEntity;if(!t||t.spriteTable.hasAnyShapes)return!1;const a=this.sharedSlotLayerWorksScratch;a.length=0;for(let r=0;r<g.length;r++){const c=g[r];if(c.videoEntity!==t||(Q=c.svgaSlotTextures)!=null&&Q.size)return a.length=0,!1;const h=this.resolveRenderableFrame(c,t);if(h==null)return a.length=0,!1;const l=XA(c),w=Fg(c,t.params.viewBoxWidth,t.params.viewBoxHeight,this.layoutScratch,this.canUseGpuMotion(c)),D=c.width*rg(c),y=c.height*cg(c),R=l==="cover"?D:Math.min(w.width,D),F=l==="cover"?y:Math.min(w.height,y),d=l==="cover"?c.x:c.x+w.offsetX,f=l==="cover"?c.y:c.y+w.offsetY;Sg(c,d,f,R,F,this.slotScissor),this.updateSlotClipBounds();let u=this.sharedSlotLayerWorkPool[r];u||(u={slot:c,renderFrame:h,sx:1,sy:1,offsetX:0,offsetY:0,clipX0:0,clipY0:0,clipX1:0,clipY1:0},this.sharedSlotLayerWorkPool[r]=u),u.slot=c,u.renderFrame=h,u.sx=w.scaleX,u.sy=w.scaleY,u.offsetX=w.offsetX,u.offsetY=w.offsetY,u.clipX0=this.slotClipX0,u.clipY0=this.slotClipY0,u.clipX1=this.slotClipX1,u.clipY1=this.slotClipY1;for(const G of a)if(u.clipX1>G.clipX0&&u.clipX0<G.clipX1&&u.clipY1>G.clipY0&&u.clipY0<G.clipY1)return a.length=0,!1;a.push(u)}this.spriteWorkCursor=0,this.slotScissorActive=!1;const o=this.batchSpritesScratch;o.length=0;let s=null;const n=t.spriteTable;for(let r=0;r<n.spriteCount;r++){this.resetClipLayerBatches();for(const c of a){const h=(r*n.frameCount+c.renderFrame)*gI;if(n.frameData[h+8]*c.slot.opacity<.05)continue;const l=(E=n.clipPathIndex[r*n.frameCount+c.renderFrame])!=null?E:-1,w=l>=0?n.clipPaths[l]:void 0;if(w&&this.getClipGeometryKind(w)==="empty")continue;this.slotClipX0=c.clipX0,this.slotClipY0=c.clipY0,this.slotClipX1=c.clipX1,this.slotClipY1=c.clipY1;const D=this.acquireSpriteWork(c.slot,r,n.frameData,h,c.sx,c.sy,c.offsetX,c.offsetY),y=(e=n.imageKeys[r])!=null?e:"";if(!this.resolveSpriteTextureInto(c.slot,y,D)){this.spriteWorkCursor--;continue}const R=this.getClipMeshForSprite(t,r,c.renderFrame);if(l>=0&&R===void 0)throw this.spriteWorkCursor--,new Error("SVGA clip mesh is still building; discard the complete frame");if(l>=0&&R===null){this.spriteWorkCursor--;continue}if(!R||R.indices.length===0){s&&s.id!==D.handle.id&&(this.drawBatch(A,o,s,I),o.length=0),o.push(D),s=D.handle,o.length>=zA&&(this.drawBatch(A,o,s,I),o.length=0,s=null);continue}const F=this.getClipRect(R),d=this.resolveClipTransform(D);if(F&&((i=D.slot.rotation)!=null?i:0)===0&&nB(d.a,d.b,d.c,d.d)){this.intersectWorkClipRect(D,F,d.a,d.d,d.tx,d.ty)&&(s&&s.id!==D.handle.id&&(this.drawBatch(A,o,s,I),o.length=0),o.push(D),s=D.handle,o.length>=zA&&(this.drawBatch(A,o,s,I),o.length=0,s=null));continue}this.acquireClipLayerBatch(R,D.handle).works.push(D)}if(this.clipLayerBatchesScratch.length>0){o.length>0&&(this.drawBatch(A,o,s,I),o.length=0,s=null);for(const c of this.clipLayerBatchesScratch)if(c.works.length<2||!this.drawBatchedClipLayer(A,c.works,c.mesh,c.texture,I))for(const h of c.works)this.drawClippedSprite(A,h,c.mesh,I)}}return o.length>0&&this.drawBatch(A,o,s,I),o.length=0,this.resetClipLayerBatches(),a.length=0,this.releaseSpriteWorks(),A.resetScissor(),!0}resetClipLayerBatches(){for(const A of this.clipLayerBatchesScratch)A.works.length=0;this.clipLayerBatchesScratch.length=0}acquireClipLayerBatch(A,g){for(const Q of this.clipLayerBatchesScratch)if(Q.mesh===A&&Q.texture.id===g.id)return Q;const I=this.clipLayerBatchesScratch.length;let B=this.clipLayerBatchPool[I];return B||(B={mesh:A,texture:g,works:[]},this.clipLayerBatchPool[I]=B),B.mesh=A,B.texture=g,B.works.length=0,this.clipLayerBatchesScratch.push(B),B}resolveClipTransform(A){const{slot:g,sx:I,sy:B,offsetX:Q,offsetY:E,a:e,b:i,c:t,d:a,tx:o,ty:s}=A;return this.rotateTransform(g,e*I,i*B,t*I,a*B,o*I+g.x+Q,s*B+g.y+E)}intersectWorkClipRect(A,g,I,B,Q,E){const e=Math.max(A.clipX0,Math.floor(I*g.x+Q)),i=Math.max(A.clipY0,Math.floor(B*g.y+E)),t=Math.min(A.clipX1,Math.ceil(I*(g.x+g.w)+Q)),a=Math.min(A.clipY1,Math.ceil(B*(g.y+g.h)+E));return t<=e||a<=i?!1:(A.clipX0=e,A.clipY0=i,A.clipX1=t,A.clipY1=a,!0)}drawBatchedClipLayer(A,g,I,B,Q){const E=g.length;if(E<2||E>zA)return!1;const e=I.indices.length;if(I.vertices.length<6||e<3)return!1;const i=E*6;if(this.clipMaskBatchTransformsScratch.length<i){let y=Math.max(64,this.clipMaskBatchTransformsScratch.length);for(;y<i;)y*=2;this.clipMaskBatchTransformsScratch=new Float32Array(y)}const t=this.clipMaskBatchTransformsScratch,a=this.getClipMeshBounds(I);for(let y=0;y<E;y++){const R=g[y],F=this.resolveClipTransform(R),d=y*6;t[d]=F.a,t[d+1]=F.b,t[d+2]=F.c,t[d+3]=F.d,t[d+4]=F.tx,t[d+5]=F.ty;let f=1/0,u=1/0,G=-1/0,S=-1/0;for(let M=0;M<4;M++){const N=M&1?a.x1:a.x0,U=M&2?a.y1:a.y0,K=F.a*N+F.c*U+F.tx,k=F.b*N+F.d*U+F.ty;K<f&&(f=K),k<u&&(u=k),K>G&&(G=K),k>S&&(S=k)}if(f<R.clipX0||u<R.clipY0||G>R.clipX1||S>R.clipY1)return!1}const o=g.every(y=>this.canUseTimelinePath(A,y.slot,"gpu-hybrid")&&!y.override),s=o?this.prepareTimelineWorks(A,g,E,B,Q,"test"):null;if(o&&!s)return!1;let n=null;if(!o){this.ensureInstancedQuadBuffers(A);const y=this.instancedFrameDataScratch,R=A.type==="webgl2"?"webgl2":"webgpu";for(let F=0;F<E;F++)this.packInstancedFrameData(y,F,g[F],R);n=this.clipInstancedDrawCommand,n.vertexBuffer=this.instancedQuadVB,n.indexBuffer=this.instancedQuadIB,n.instanceCount=E,n.instanceData=y,this.clipInstancedTexturesScratch[0]=B,this.clipInstancedTexturesScratch.length=1,this.clipInstancedUniformsScratch.u_projection=Q}const r=this.ensureClipMeshBuffers(A,I),c=this.clipMaskInstancedDrawCommand;c.vertexBuffer=r.vertexBuf,c.indexBuffer=r.indexBuf,c.indexCount=e,c.instanceCount=E,c.instanceData=t,c.stencil="write",this.clipMaskInstancedUniformsScratch.u_projection=Q,this.requireBackendDraw(A,c,"batched stencil write");let h=!1,l;try{if(o){if(!this.submitPreparedTimelineWorks(A,s))throw new zg("batched timeline stencil test became unavailable after mask write")}else this.requireBackendDraw(A,n,"batched stencil test")}catch(y){h=!0,l=y}if(this.destroyed)throw l;let w=!1,D;try{c.stencil="clear",this.requireBackendDraw(A,c,"batched stencil clear")}catch(y){w=!0,D=y}if(h&&w)throw new AggregateError([l,D],"SVGA batched stencil test and clear both failed");if(h)throw l;if(w)throw D;return!0}acquireSpriteWork(A,g,I,B,Q,E,e,i){let t=this.spriteWorkPool[this.spriteWorkCursor];return t||(t={slot:A,spriteIndex:g,layoutW:0,layoutH:0,a:1,b:0,c:0,d:1,tx:0,ty:0,alpha:0,handle:null,rect:sB,override:null,sx:Q,sy:E,offsetX:e,offsetY:i,clipX0:0,clipY0:0,clipX1:0,clipY1:0,cachedRow:null,gpuMotion:!1},this.spriteWorkPool[this.spriteWorkCursor]=t),this.spriteWorkCursor++,t.slot=A,t.spriteIndex=g,t.layoutW=I[B],t.layoutH=I[B+1],t.a=I[B+2],t.b=I[B+3],t.c=I[B+4],t.d=I[B+5],t.tx=I[B+6],t.ty=I[B+7],t.alpha=I[B+8],t.sx=Q,t.sy=E,t.offsetX=e,t.offsetY=i,this.copyCurrentSlotClipToWork(t),t.cachedRow=null,t.gpuMotion=this.canUseGpuMotion(A),t}acquireCachedSpriteWork(A){let g=this.spriteWorkPool[this.spriteWorkCursor];return g||(g={slot:null,spriteIndex:-1,layoutW:0,layoutH:0,a:1,b:0,c:0,d:1,tx:0,ty:0,alpha:0,handle:A.handle,rect:sB,override:null,sx:1,sy:1,offsetX:0,offsetY:0,clipX0:0,clipY0:0,clipX1:0,clipY1:0,cachedRow:null,gpuMotion:!1},this.spriteWorkPool[this.spriteWorkCursor]=g),this.spriteWorkCursor++,g.handle=A.handle,g.cachedRow=A.row,this.copyCurrentSlotClipToWork(g),g}updateSlotClipBounds(){const A=this.slotScissor,g=Math.max(0,Math.min(this.canvasWidth,Math.floor(A.x))),I=Math.max(0,Math.min(this.canvasHeight,Math.floor(A.y)));this.slotClipX0=g,this.slotClipY0=I,this.slotClipX1=Math.max(g,Math.min(this.canvasWidth,Math.ceil(A.x+A.w))),this.slotClipY1=Math.max(I,Math.min(this.canvasHeight,Math.ceil(A.y+A.h)))}copyCurrentSlotClipToWork(A){A.clipX0=this.slotClipX0,A.clipY0=this.slotClipY0,A.clipX1=this.slotClipX1,A.clipY1=this.slotClipY1}releaseSpriteWorks(){for(let A=0;A<this.spriteWorkCursor;A++){const g=this.spriteWorkPool[A];g.slot=null,g.handle=null,g.rect=sB,g.override=null,g.cachedRow=null}this.spriteWorkCursor=0}staticBatchCacheMatches(A,g,I,B,Q,E,e,i,t,a){var o,s,n;return A?A.entity===I&&A.atlasHandlesDep===B&&A.svgaSlotTextures===Q&&A.currentFrame===a&&A.opacity===g.opacity&&A.x===g.x&&A.y===g.y&&A.width===g.width&&A.height===g.height&&A.scale===g.scale&&A.motionScaleX===((o=g.motionScaleX)!=null?o:1)&&A.motionScaleY===((s=g.motionScaleY)!=null?s:1)&&A.rotation===((n=g.rotation)!=null?n:0)&&A.sx===E&&A.sy===e&&A.offsetX===i&&A.offsetY===t:!1}captureStaticBatchCacheEntry(A,g){const I=this.staticBatchCacheRowScratch;return this.packFrameData(I,0,A),{row:I.slice(),handle:A.handle,isOverride:g}}drawFromStaticBatchCache(A,g,I,B,Q){for(const E of g.entries){const e=this.acquireCachedSpriteWork(E);if(E.isOverride){I.length>0&&(this.drawBatch(A,I,B,Q),I.length=0,B=null),this.drawSingleSprite(A,e,Q);continue}B&&B.id!==E.handle.id&&(this.drawBatch(A,I,B,Q),I.length=0,B=null),I.push(e),B=E.handle,I.length>=zA&&(this.drawBatch(A,I,B,Q),I.length=0,B=null)}return B}getProjection(){return this.projCache&&this.projCacheW===this.canvasWidth&&this.projCacheH===this.canvasHeight?this.projCache:(this.projCacheW=this.canvasWidth,this.projCacheH=this.canvasHeight,this.projCache=mg(0,this.canvasWidth,this.canvasHeight,0,-1,1),this.projCache)}drawBatch(A,g,I,B){const Q=Math.min(g.length,zA);if(Q<1)return;if(A.type==="webgl2"||A.type==="webgpu"){if(this.tryDrawTimelineBatch(A,g,Q,I,B))return;this.drawBatchInstancedWebGL(A,g,Q,I,B);return}const E=this.pool.getFloat32(Q*AI);for(let w=0;w<Q;w++)this.packFrameData(E,w,g[w]);const e=Q*hI*fg,i=Q*mI,t=this.pool.getFloat32B(e),a=this.pool.getUint32(i),o=new Float32Array(E.buffer,0,Q*AI),s=new Float32Array(t.buffer,0,e),n=new Uint32Array(a.buffer,0,i);(!DI()||OB(o,s,n)===null)&&dB(o,s,n);const r=this.batchDrawCursor++,c=this.ensureVertexBuffer(A,r,s),h=this.ensureIndexBuffer(A,r,n),l=this.plainBatchDrawCommand;l.vertexBuffer=c,l.indexBuffer=h,l.indexCount=i,this.plainBatchTexturesScratch[0]=I,this.plainBatchTexturesScratch.length=1,this.plainBatchUniformsScratch.u_projection=B,this.requireBackendDraw(A,l,"CPU reference batch")}tryDrawTimelineBatch(A,g,I,B,Q){for(let i=0;i<I;i++){const t=g[i];if(t.cachedRow||t.override||t.gpuMotion||!this.canUseTimelinePath(A,t.slot,"gpu-hybrid"))return!1}const E=g[0];let e=!0;for(let i=0;i<I;i++){const t=g[i];if(t.slot!==E.slot||t.spriteIndex!==E.spriteIndex+i){e=!1;break}}if(e){const i=this.resolveRenderableFrame(E.slot,E.slot.videoEntity);return i==null?!1:this.drawTimelineRange(A,E.slot,i,E.spriteIndex,I,B,Q,"none",{x0:E.clipX0,y0:E.clipY0,x1:E.clipX1,y1:E.clipY1})}return this.drawTimelineWorks(A,g,I,B,Q)}drawTimelineWorks(A,g,I,B,Q,E="none"){const e=this.prepareTimelineWorks(A,g,I,B,Q,E);return e?this.submitPreparedTimelineWorks(A,e):!1}prepareTimelineWorks(A,g,I,B,Q,E){var e,i,t;if(I<1||I>zA)return null;const a=g[0],o=a.slot.videoEntity,s=(e=a.slot.svgaFrameTableState)==null?void 0:e.binding;if(!o||!s)return null;const n=this.timelineBatchDataScratch;for(let c=0;c<I;c++){const h=g[c];if(h.slot.videoEntity!==o||((i=h.slot.svgaFrameTableState)==null?void 0:i.binding)!==s||h.override||!this.canUseTimelinePath(A,h.slot,"gpu-hybrid"))return null;const l=this.resolveRenderableFrame(h.slot,o);if(l==null)return null;const w=this.resolveCachedTimelineSlotState(h.slot,l),D=c*tI;n.set(w.subarray(0,8),D),n[D+8]=h.clipX0,n[D+9]=h.clipY0,n[D+10]=h.clipX1,n[D+11]=h.clipY1,n[D+12]=1,n[D+kg.metadataBase]=h.spriteIndex,n[D+kg.atlasPage]=(t=h.rect.textureIndex)!=null?t:-1,n[D+kg.motionTrackPlusOne]=1,h.slot.svgaFrameTableState.frameIndex=l}this.ensureInstancedQuadBuffers(A);const r=this.timelineDrawCommand;return r.vertexBuffer=this.instancedQuadVB,r.indexBuffer=this.instancedQuadIB,r.instanceCount=I,r.instanceData=n,r.stencil=E,r.svgaFrameTable=s,r.svgaFrameTableFrameCount=o.spriteTable.frameCount,r.svgaFrameTableSpriteCount=o.spriteTable.spriteCount,r.svgaFrameTableFrameIndex=a.slot.currentFrame,r.svgaFrameTableSpriteBase=0,r.svgaFrameTableSlotState=this.resolveTimelineSlotState(a.slot,a.slot.svgaFrameTableState.frameIndex,0),r.svgaSlotState=r.svgaFrameTableSlotState,r.motionTrackBuffer=void 0,r.motionTrackGlobalsBuffer=void 0,r.motionTrackSampleCount=void 0,r.motionTrackSampleIntervalMs=void 0,r.motionTrackTimeMs=void 0,r.motionTrackIndex=void 0,this.timelineTexturesScratch[0]=B,this.timelineTexturesScratch.length=1,this.timelineUniformsScratch.u_projection=Q,r}submitPreparedTimelineWorks(A,g){try{return this.submitBackendDraw(A,g)}finally{g.instanceData=void 0}}canUseGpuMotion(A){var g;const I=A.videoEntity,B=A.motionTrackBinding;if(!I||!B||I.spriteTable.hasAnyShapes||I.spriteTable.allFramesInsideViewBox!==!0||(g=A.svgaSlotTextures)!=null&&g.size||A.options.objectFit==="cover"||A.options.transformOrigin)return!1;const Q=this.gpuMotionEntityEligibilityCache.get(I);if(Q!=null)return Q;for(const E of I.spriteTable.clipPathIndex)if(E>=0)return this.gpuMotionEntityEligibilityCache.set(I,!1),!1;return this.gpuMotionEntityEligibilityCache.set(I,!0),!0}drawBatchInstancedWebGL(A,g,I,B,Q){this.ensureInstancedQuadBuffers(A);const E=this.instancedFrameDataScratch,e=A.type==="webgl2"?"webgl2":"webgpu";for(let s=0;s<I;s++)this.packInstancedFrameData(E,s,g[s],e);const i=this.plainInstancedDrawCommand,t=g[0].gpuMotion?g[0].slot.motionTrackBinding:null;i.shader=A.type==="webgpu"&&t?"svga-motion-instanced-premul":"svga-instanced-premul",i.vertexBuffer=this.instancedQuadVB,i.indexBuffer=this.instancedQuadIB,i.instanceCount=I,i.instanceData=E,i.stencil="none",i.motionTrackBuffer=t==null?void 0:t.buffer,i.motionTrackGlobalsBuffer=t==null?void 0:t.globalsBuffer,i.motionTrackSampleCount=t==null?void 0:t.sampleCount,i.motionTrackSampleIntervalMs=t==null?void 0:t.sampleIntervalMs,i.motionTrackTimeMs=t==null?void 0:t.currentTimeMs;const{sx:a,sy:o}=Zg(A.canvas);i.motionTrackCssScaleX=a,i.motionTrackCssScaleY=o,this.plainInstancedTexturesScratch[0]=B,this.plainInstancedTexturesScratch.length=1,this.plainInstancedUniformsScratch.u_projection=Q,this.requireBackendDraw(A,i,"CPU reference instanced batch")}drawClippedSprite(A,g,I,B){var Q;const{slot:E,sx:e,sy:i,offsetX:t,offsetY:a,a:o,b:s,c:n,d:r,tx:c,ty:h}=g,l=this.rotateTransform(E,o*e,s*i,n*e,r*i,c*e+E.x+t,h*i+E.y+a),{a:w,b:D,c:y,d:R,tx:F,ty:d}=l,f=this.getClipRect(I);if(f&&((Q=E.rotation)!=null?Q:0)===0&&nB(w,D,y,R)){this.applyClipRectScissor(A,f,w,R,F,d)&&this.drawSingleSprite(A,g,B),this.restoreSlotScissor(A);return}const u=this.ensureClipMeshBuffers(A,I),G=this.packClipTransform(w,D,y,R,F,d);if(this.sharedClipStencilActive){if(A.type==="webgl2"||A.type==="webgpu"){if(!this.drawTimelineStencilTest(A,g,B)){this.ensureInstancedQuadBuffers(A);const M=this.instancedFrameDataScratch;this.packInstancedFrameData(M,0,g,A.type);const N=this.clipInstancedDrawCommand;N.vertexBuffer=this.instancedQuadVB,N.indexBuffer=this.instancedQuadIB,N.instanceData=M,this.clipInstancedTexturesScratch[0]=g.handle,this.clipInstancedTexturesScratch.length=1,this.clipInstancedUniformsScratch.u_projection=B,this.requireBackendDraw(A,N,"shared stencil sprite test")}}else this.drawBatchSpriteWithStencilTest(A,g,B);this.clearSharedClipStencil(A,I,G,B);return}const S=this.clipMaskDrawCommand;if(S.vertexBuffer=u.vertexBuf,S.indexBuffer=u.indexBuf,S.indexCount=I.indices.length,S.stencil="write",this.clipMaskUniformsScratch.u_projection=B,this.clipMaskUniformsScratch.u_transform=G,this.requireBackendDraw(A,S,"stencil write"),A.type==="webgl2"||A.type==="webgpu"){if(!this.drawTimelineStencilTest(A,g,B)){this.ensureInstancedQuadBuffers(A);const M=this.instancedFrameDataScratch;this.packInstancedFrameData(M,0,g,A.type);const N=this.clipInstancedDrawCommand;N.vertexBuffer=this.instancedQuadVB,N.indexBuffer=this.instancedQuadIB,N.instanceData=M,this.clipInstancedTexturesScratch[0]=g.handle,this.clipInstancedTexturesScratch.length=1,this.clipInstancedUniformsScratch.u_projection=B,this.requireBackendDraw(A,N,"stencil sprite test")}this.clearClipStencil(A,I,u,G,B);return}this.drawBatchSpriteWithStencilTest(A,g,B),this.clearClipStencil(A,I,u,G,B)}drawTimelineStencilTest(A,g,I){if(g.override||!this.canUseTimelinePath(A,g.slot,"gpu-hybrid"))return!1;const B=g.slot.videoEntity;if(!B)return!1;const Q=this.resolveRenderableFrame(g.slot,B);return Q==null?!1:this.drawTimelineRange(A,g.slot,Q,g.spriteIndex,1,g.handle,I,"test",{x0:g.clipX0,y0:g.clipY0,x1:g.clipX1,y1:g.clipY1})}drawBatchSpriteWithStencilTest(A,g,I){const B=this.clipFrameDataScratch;this.packFrameData(B,0,g);const Q=hI*fg,E=mI;(!this.clipSpriteVertsScratch||this.clipSpriteVertsScratch.length<Q)&&(this.clipSpriteVertsScratch=new Float32Array(Q)),(!this.clipSpriteIndicesScratch||this.clipSpriteIndicesScratch.length<E)&&(this.clipSpriteIndicesScratch=new Uint32Array(E));const e=this.clipSpriteVertsScratch,i=this.clipSpriteIndicesScratch;(!DI()||OB(B,e,i)===null)&&dB(B,e,i);const t=this.clipSpriteDrawCursor++,a=this.ensureClipSpriteVertexBuffer(A,t,e.subarray(0,Q)),o=this.ensureClipSpriteIndexBuffer(A,t,i.subarray(0,E)),s=this.clipBatchDrawCommand;s.vertexBuffer=a,s.indexBuffer=o,s.indexCount=E,this.clipBatchTexturesScratch[0]=g.handle,this.clipBatchTexturesScratch.length=1,this.clipBatchUniformsScratch.u_projection=I,this.requireBackendDraw(A,s,"WebGL1 stencil sprite test")}applyClipRectScissor(A,g,I,B,Q,E){const e=I*g.x+Q,i=B*g.y+E,t=this.slotScissor,a=Math.max(e,t.x),o=Math.max(i,t.y),s=Math.min(e+I*g.w,t.x+t.w),n=Math.min(i+B*g.h,t.y+t.h);return s<=a||n<=o?!1:(A.setScissor(a,o,s-a,n-o),!0)}restoreSlotScissor(A){if(!this.slotScissorActive){A.resetScissor();return}const g=this.slotScissor;A.setScissor(g.x,g.y,g.w,g.h)}getClipRect(A){return A.rect===void 0&&(A.rect=Ca(A.vertices,A.indices)),A.rect}getClipMeshBounds(A){if(A.bounds)return A.bounds;const g=A.vertices;let I=1/0,B=1/0,Q=-1/0,E=-1/0;for(let e=0;e<g.length;e+=2){const i=g[e],t=g[e+1];i<I&&(I=i),t<B&&(B=t),i>Q&&(Q=i),t>E&&(E=t)}return A.bounds={x0:I,y0:B,x1:Q,y1:E},A.bounds}ensureClipMeshBuffers(A,g){if(!g.vertexBuf||!g.indexBuf){g.vertexBuf&&A.deleteBuffer(g.vertexBuf),g.indexBuf&&A.deleteBuffer(g.indexBuf),g.vertexBuf=null,g.indexBuf=null;const I=A.createBuffer(g.vertices,"vertex");try{const B=A.createBuffer(g.indices,"index");g.vertexBuf=I,g.indexBuf=B,this.clipMeshesWithBuffers.add(g)}catch(B){throw A.deleteBuffer(I),B}}return{vertexBuf:g.vertexBuf,indexBuf:g.indexBuf}}packClipTransform(A,g,I,B,Q,E){const e=this.clipTransformMat;return e[0]=A,e[1]=g,e[4]=I,e[5]=B,e[12]=Q,e[13]=E,e}drawSingleSprite(A,g,I){var B;if(A.type==="webgl2"||A.type==="webgpu"){const r=(B=g.slot)==null?void 0:B.videoEntity,c=r?this.resolveRenderableFrame(g.slot,r):null;if(c!=null&&this.canUseTimelinePath(A,g.slot,"gpu-hybrid")&&!g.override&&this.drawTimelineRange(A,g.slot,c,g.spriteIndex,1,g.handle,I,"none",{x0:g.clipX0,y0:g.clipY0,x1:g.clipX1,y1:g.clipY1}))return;this.ensureInstancedQuadBuffers(A);const h=this.instancedFrameDataScratch;this.packInstancedFrameData(h,0,g,A.type);const l=this.plainInstancedDrawCommand;l.vertexBuffer=this.instancedQuadVB,l.indexBuffer=this.instancedQuadIB,l.instanceCount=1,l.instanceData=h,this.plainInstancedTexturesScratch[0]=g.handle,this.plainInstancedTexturesScratch.length=1,this.plainInstancedUniformsScratch.u_projection=I,this.requireBackendDraw(A,l,"single instanced sprite");return}const Q=this.clipFrameDataScratch;this.packFrameData(Q,0,g);const E=hI*fg,e=mI;(!this.clipSpriteVertsScratch||this.clipSpriteVertsScratch.length<E)&&(this.clipSpriteVertsScratch=new Float32Array(E)),(!this.clipSpriteIndicesScratch||this.clipSpriteIndicesScratch.length<e)&&(this.clipSpriteIndicesScratch=new Uint32Array(e));const i=this.clipSpriteVertsScratch,t=this.clipSpriteIndicesScratch;(!DI()||OB(Q,i,t)===null)&&dB(Q,i,t);const a=this.clipSpriteDrawCursor++,o=this.ensureClipSpriteVertexBuffer(A,a,i.subarray(0,E)),s=this.ensureClipSpriteIndexBuffer(A,a,t.subarray(0,e)),n=this.plainBatchDrawCommand;n.vertexBuffer=o,n.indexBuffer=s,n.indexCount=e,this.plainBatchTexturesScratch[0]=g.handle,this.plainBatchTexturesScratch.length=1,this.plainBatchUniformsScratch.u_projection=I,this.requireBackendDraw(A,n,"single CPU reference sprite")}clearClipStencil(A,g,I,B,Q){const E=this.clipMaskDrawCommand;E.vertexBuffer=I.vertexBuf,E.indexBuffer=I.indexBuf,E.indexCount=g.indices.length,E.stencil="clear",this.clipMaskUniformsScratch.u_projection=Q,this.clipMaskUniformsScratch.u_transform=B,this.requireBackendDraw(A,E,"stencil clear")}rotateTransform(A,g,I,B,Q,E,e){const i=this.affineScratch;return i.a=g,i.b=I,i.c=B,i.d=Q,i.tx=E,i.ty=e,zt(A,i,i)}packFrameData(A,g,I){this.packFrameDataAt(A,g*AI,I)}packInstancedFrameData(A,g,I,B){const Q=g*rQ;this.packFrameDataAt(A,Q,I);const E=A[Q],e=A[Q+1],i=A[Q+2],t=A[Q+3],a=A[Q+4],o=A[Q+5],s=A[Q+6],n=A[Q+7],r=A[Q+8],c=A[Q+9],h=A[Q+10],l=A[Q+11],w=A[Q+12];A[Q]=i*E,A[Q+1]=t*E,A[Q+2]=a*e,A[Q+3]=o*e,A[Q+4]=s,A[Q+5]=n,A[Q+6]=r,A[Q+7]=c,A[Q+8]=h,A[Q+9]=l,A[Q+10]=w;let D=I.clipY0,y=I.clipY1;if(B==="webgl2"){const R=D;D=this.canvasHeight-y,y=this.canvasHeight-R}this.instancedFrameDataWords[Q+11]=this.packClipCoordinatePair(I.clipX0,D),this.instancedFrameDataWords[Q+12]=this.packClipCoordinatePair(I.clipX1,y),I.gpuMotion&&I.slot.motionTrackBinding&&(A[Q+11]=I.slot.motionTrackBinding.trackIndex,A[Q+12]=0)}packClipCoordinatePair(A,g){const I=Math.max(0,Math.min(65535,A))&65535,B=Math.max(0,Math.min(65535,g))&65535;return(I|B<<16)>>>0}packFrameDataAt(A,g,I){if(I.cachedRow){A.set(I.cachedRow,g);return}const{slot:B,layoutW:Q,layoutH:E,a:e,b:i,c:t,d:a,tx:o,ty:s,alpha:n,rect:r,override:c,sx:h,sy:l,offsetX:w,offsetY:D}=I;let y=Q||(c==null?void 0:c.logicalWidth)||0,R=E||(c==null?void 0:c.logicalHeight)||0,F=0,d=0;if((c==null?void 0:c.mode)==="dynamic"){const T=Q||c.logicalWidth,b=E||c.logicalHeight;y=c.logicalWidth,R=c.logicalHeight,F=Math.max(0,(T-y)*.5),d=Math.max(0,(b-R)*.5)}const f=e*h,u=i*l,G=t*h,S=a*l,M=o*h+f*F+G*d,N=s*l+u*F+S*d,U=I.gpuMotion?{a:f,b:u,c:G,d:S,tx:M+w-B.width*B.scale/2,ty:N+D-B.height*B.scale/2}:this.rotateTransform(B,f,u,G,S,M+B.x+w,N+B.y+D),{a:K,b:k,c:m,d:H,tx:v,ty:j}=U;A[g]=y,A[g+1]=R,A[g+2]=K,A[g+3]=k,A[g+4]=m,A[g+5]=H,A[g+6]=v,A[g+7]=j,A[g+8]=n*(I.gpuMotion?1:B.opacity),A[g+9]=r.x,A[g+10]=r.y,A[g+11]=r.x+r.w,A[g+12]=r.y+r.h}resolveSpriteTextureInto(A,g,I){var B,Q,E,e,i;const t=(Q=(B=A.svgaSlotTextures)==null?void 0:B.get(g))!=null?Q:null;if(t)return I.handle=t.texture,I.rect=sB,I.override=t,!0;const a=A.videoEntity,o=a.atlasRects.get(g),s=(E=o==null?void 0:o.textureIndex)!=null?E:0,n=(i=(e=a.atlasTextureHandles)==null?void 0:e[s])!=null?i:a.atlasTextureHandle;return!o||!n?!1:(I.handle=n,I.rect=o,I.override=null,!0)}drawShapeFrame(A,g,I,B,Q){var E;const e=this.getShapeMesh(I);if(!e||e.indices.length===0)return;const{slot:i,sx:t,sy:a,offsetX:o,offsetY:s,a:n,b:r,c,d:h,tx:l,ty:w,alpha:D}=g,y=this.getWhiteTexture(A),R=this.rotateTransform(i,n*t,r*a,c*t,h*a,l*t+i.x+o,w*a+i.y+s),{a:F,b:d,c:f,d:u,tx:G,ty:S}=R,M=!!B&&B.indices.length>0;let N=!1,U=null,K=null,k=!1;if(M){const v=this.getClipRect(B);if(v&&((E=i.rotation)!=null?E:0)===0&&nB(F,d,f,u)){if(!this.applyClipRectScissor(A,v,F,u,G,S)){this.restoreSlotScissor(A);return}N=!0}else{U=this.ensureClipMeshBuffers(A,B),K=this.packClipTransform(F,d,f,u,G,S);const j=this.clipMaskDrawCommand;j.vertexBuffer=U.vertexBuf,j.indexBuffer=U.indexBuf,j.indexCount=B.indices.length,j.stencil="write",this.clipMaskUniformsScratch.u_projection=Q,this.clipMaskUniformsScratch.u_transform=K,this.requireBackendDraw(A,j,"shape stencil write"),k=g.handle!=null,k&&(this.sharedClipStencilActive=!0)}}const m=this.ensureShapeMeshBuffers(A,e),H=this.shapeDrawCommand;H.vertexBuffer=m.vertexBuf,H.indexBuffer=m.indexBuf,H.indexCount=e.indices.length,H.stencil=M?"test":"none",this.shapeTexturesScratch[0]=y,this.shapeTexturesScratch.length=1,this.shapeUniformsScratch.u_projection=Q,this.shapeUniformsScratch.u_transform=this.packShapeTransform(F,d,f,u,G,S),this.shapeUniformsScratch.u_opacity=D*i.opacity,this.requireBackendDraw(A,H,"shape draw"),U&&K&&B&&!k&&this.clearClipStencil(A,B,U,K,Q),N&&this.restoreSlotScissor(A)}clearSharedClipStencil(A,g,I,B){this.sharedClipStencilActive=!1,this.clearClipStencil(A,g,this.ensureClipMeshBuffers(A,g),I,B)}ensureShapeMeshBuffers(A,g){if(!g.vertexBuf||!g.indexBuf){g.vertexBuf&&A.deleteBuffer(g.vertexBuf),g.indexBuf&&A.deleteBuffer(g.indexBuf),g.vertexBuf=null,g.indexBuf=null;const I=A.createBuffer(g.gpuVertices,"vertex");try{const B=A.createBuffer(g.indices,"index");g.vertexBuf=I,g.indexBuf=B,this.shapeMeshesWithBuffers.add(g)}catch(B){throw A.deleteBuffer(I),B}}return{vertexBuf:g.vertexBuf,indexBuf:g.indexBuf}}packShapeTransform(A,g,I,B,Q,E){const e=this.shapeTransformMat;return e[0]=A,e[1]=g,e[4]=I,e[5]=B,e[12]=Q,e[13]=E,e}hasAtlasTexture(A){var g;const I=A.videoEntity;return I?!!I.atlasTextureHandle||!!((g=I.atlasTextureHandles)!=null&&g.length):!1}hasRenderableSVGA(A){if(this.hasAtlasTexture(A))return!0;const g=A.videoEntity;if(!(g!=null&&g.spriteTable))return!1;const I=this.entityHasShapesCache.get(g);if(I!==void 0)return I;const B=g.spriteTable.hasAnyShapes;return this.entityHasShapesCache.set(g,B),B}getWhiteTexture(A){return this.whiteTexture?this.whiteTexture:(this.whiteTexture=A.createTexture(new Uint8Array([255,255,255,255]).buffer,{width:1,height:1,filter:"nearest"}),this.whiteTexture)}getShapeMesh(A){var g;if(!A||A.length===0)return null;if(this.shapeMeshCache.has(A))return(g=this.shapeMeshCache.get(A))!=null?g:null;const I=[],B=[];for(const i of A)this.appendShape(i,I,B);if(I.length===0||B.length===0)return this.shapeMeshCache.set(A,null),null;const Q=new Float32Array(I),E=new Float32Array(I.length/oB*fg);for(let i=0,t=0;i<I.length;i+=oB,t+=fg)E[t]=I[i],E[t+1]=I[i+1],E[t+3]=I[i+2],E[t+4]=I[i+3],E[t+5]=I[i+4],E[t+6]=I[i+5],E[t+7]=.5,E[t+8]=.5;const e={vertices:Q,indices:new Uint32Array(B),gpuVertices:E};return this.shapeMeshCache.set(A,e),e}appendShape(A,g,I){const B=A.style.fill,Q=A.style.stroke,E=this.buildShapeSubPaths(A);for(const e of E){if(e.length<2)continue;const i=e.map(t=>({x:A.transform.a*t.x+A.transform.c*t.y+A.transform.tx,y:A.transform.b*t.x+A.transform.d*t.y+A.transform.ty}));B&&B.a>0&&i.length>=3&&this.appendFill(i,B,g,I),Q&&Q.a>0&&A.style.strokeWidth>.01&&this.appendStroke(i,Q,A.style.strokeWidth,g,I)}}buildShapeSubPaths(A){var g;if(A.kind==="path")return fe((g=A.pathData)!=null?g:"").map(I=>this.cleanupPoints(I)).filter(I=>I.length>=2);if(A.kind==="rect"&&A.rect){const I=A.rect;return[[{x:I.x,y:I.y},{x:I.x+I.width,y:I.y},{x:I.x+I.width,y:I.y+I.height},{x:I.x,y:I.y+I.height}]]}if(A.kind==="ellipse"&&A.ellipse){const I=A.ellipse,B=[],Q=40;for(let E=0;E<Q;E++){const e=E/Q*Math.PI*2;B.push({x:I.x+Math.cos(e)*I.radiusX,y:I.y+Math.sin(e)*I.radiusY})}return[B]}return[]}appendFill(A,g,I,B){const Q=this.cleanupPoints(A);if(Q.length<3)return;const E=I.length/oB;for(const i of Q)I.push(i.x,i.y,this.clamp01(g.r),this.clamp01(g.g),this.clamp01(g.b),this.clamp01(g.a));const e=Ot(Q);if(e.length>=(Q.length-2)*3)for(const i of e)B.push(E+i);else for(let i=1;i<Q.length-1;i++)B.push(E,E+i,E+i+1)}appendStroke(A,g,I,B,Q){A=this.cleanupPoints(A);const E=I*.5;for(let e=0;e<A.length;e++){const i=A[e],t=A[(e+1)%A.length],a=t.x-i.x,o=t.y-i.y,s=Math.hypot(a,o);if(s<=1e-4)continue;const n=-o/s*E,r=a/s*E,c=B.length/oB,h=this.clamp01(g.r),l=this.clamp01(g.g),w=this.clamp01(g.b),D=this.clamp01(g.a);B.push(i.x-n,i.y-r,h,l,w,D),B.push(i.x+n,i.y+r,h,l,w,D),B.push(t.x+n,t.y+r,h,l,w,D),B.push(t.x-n,t.y-r,h,l,w,D),Q.push(c,c+1,c+2,c+2,c+3,c)}}clamp01(A){return Math.max(0,Math.min(1,Number.isFinite(A)?A:0))}cleanupPoints(A){if(A.length===0)return[];const g=[],I=1e-4;let B=null;for(const Q of A){if(B){const E=Q.x-B.x,e=Q.y-B.y;if(E*E+e*e<=I)continue}g.push(Q),B=Q}if(g.length>2){const Q=g[0],E=g[g.length-1],e=Q.x-E.x,i=Q.y-E.y;e*e+i*i<=I&&g.pop()}return g}getClipGeometryKind(A){var g;return(g=this.clipAnalysis.get(A))==null?void 0:g.kind}getClipMeshForSprite(A,g,I){var B;const Q=A.spriteTable,E=(B=Q.clipPathIndex[g*Q.frameCount+I])!=null?B:-1;if(E<0)return null;this.retainClipPreparation(A);let e=this.entityClipMeshArrayCache.get(A);(!e||e.length!==Q.clipPaths.length)&&(e=new Array(Q.clipPaths.length),this.entityClipMeshArrayCache.set(A,e));const i=e[E];if(i!==void 0)return i;const t=Q.clipPaths[E];if(this.clipAnalysis.retain(Q,t),this.getClipGeometryKind(t)==="empty")return this.clipMeshStates.has(t)||this.publishClipMeshState(t,{status:"empty",generation:++this.clipMeshGeneration,attempts:0}),e[E]=null,null;const a=this.clipMeshStates.get(t);if(!a){this.queueClipMeshBuild(t);return}if(a.status!=="building")return a.status==="invalid"?this.handleInvalidClipMesh(A,t,a):a.status==="empty"?(e[E]=null,null):(e[E]=a.mesh,a.mesh)}ensureVertexBuffer(A,g,I){const B=this.vertexBufHandles[g];if(B)return A.updateBuffer(B,I),B;{const Q=A.createBuffer(I,"vertex");return this.vertexBufHandles[g]=Q,Q}}ensureIndexBuffer(A,g,I){const B=this.indexBufHandles[g];if(B)return A.updateBuffer(B,I),B;{const Q=A.createBuffer(I,"index");return this.indexBufHandles[g]=Q,Q}}ensureClipSpriteVertexBuffer(A,g,I){const B=this.clipSpriteVertBufHandles[g];if(B)return A.updateBuffer(B,I),B;{const Q=A.createBuffer(I,"vertex");return this.clipSpriteVertBufHandles[g]=Q,Q}}ensureClipSpriteIndexBuffer(A,g,I){const B=this.clipSpriteIdxBufHandles[g];if(B)return A.updateBuffer(B,I),B;{const Q=A.createBuffer(I,"index");return this.clipSpriteIdxBufHandles[g]=Q,Q}}ensureInstancedQuadBuffers(A){this.instancedQuadVB||(this.instancedQuadVB=A.createBuffer(wC.INSTANCED_QUAD_VERTS,"vertex"),this.instancedQuadIB=A.createBuffer(wC.INSTANCED_QUAD_INDICES,"index"))}destroy(A){if(!this.destroyed){this.destroyed=!0,this.clipMeshDestroyed=!0,this.clipMeshBuildInFlight=!1,this.stencilTransactionState="idle",this.slotScissorActive=!1,this.clipMeshProducerController.abort();for(const g of this.vertexBufHandles)A.deleteBuffer(g);for(const g of this.indexBufHandles)A.deleteBuffer(g);for(const g of this.clipSpriteVertBufHandles)A.deleteBuffer(g);for(const g of this.clipSpriteIdxBufHandles)A.deleteBuffer(g);for(const g of this.clipMeshesWithBuffers)g.vertexBuf&&A.deleteBuffer(g.vertexBuf),g.indexBuf&&A.deleteBuffer(g.indexBuf),g.vertexBuf=null,g.indexBuf=null;this.clipMeshesWithBuffers.clear();for(const g of this.shapeMeshesWithBuffers)g.vertexBuf&&A.deleteBuffer(g.vertexBuf),g.indexBuf&&A.deleteBuffer(g.indexBuf),g.vertexBuf=null,g.indexBuf=null;this.shapeMeshesWithBuffers.clear(),this.instancedQuadVB&&A.deleteBuffer(this.instancedQuadVB),this.instancedQuadIB&&A.deleteBuffer(this.instancedQuadIB),this.whiteTexture&&A.deleteTexture(this.whiteTexture),this.pool.destroy();for(const g of this.clipMeshStateWaiters.values())for(const I of g)I.signal&&I.onAbort&&I.signal.removeEventListener("abort",I.onAbort),I.reject(CA("SVGA renderer destroyed during clip prewarm"));this.clipMeshStateWaiters.clear(),this.clipMeshProducerTasks.clear(),this.clipMeshCache.clear(),this.clipMeshStates.clear();for(const g of this.liveClipPreparationControllers)g.abort();this.liveClipPreparationControllers.clear(),this.clipTableOwnerCounts=new WeakMap,this.clipAnalysis.clear(),this.pendingClipMeshPaths.clear(),this.vertexBufHandles=[],this.indexBufHandles=[],this.clipSpriteVertBufHandles=[],this.clipSpriteIdxBufHandles=[],this.instancedQuadVB=null,this.instancedQuadIB=null,this.whiteTexture=null,this.projCache=null}}};p(HC,"INSTANCED_QUAD_VERTS",new Float32Array([0,0,1,0,1,1,0,1]));p(HC,"INSTANCED_QUAD_INDICES",new Uint32Array([0,1,2,0,2,3]));let SE=HC;const cQ=1e-4;function nB(C,A,g,I){const B=Math.max(Math.abs(C),Math.abs(I));return C>0&&I>0&&Math.abs(A)<=B*cQ&&Math.abs(g)<=B*cQ}function Ca(C,A){if(C.length!==8||A.length!==6)return null;let g=1/0,I=1/0,B=-1/0,Q=-1/0;for(let a=0;a<8;a+=2){const o=C[a],s=C[a+1];o<g&&(g=o),o>B&&(B=o),s<I&&(I=s),s>Q&&(Q=s)}const E=B-g,e=Q-I;if(!(E>0&&e>0))return null;const i=Math.max(E,e)*1e-4+1e-6;let t=0;for(let a=0;a<8;a+=2){const o=C[a],s=C[a+1],n=Math.abs(o-g)<=i,r=Math.abs(o-B)<=i,c=Math.abs(s-I)<=i,h=Math.abs(s-Q)<=i;if(!n&&!r||!c&&!h)return null;t|=1<<((n?0:1)|(c?0:2))}return t!==15?null:{x:g,y:I,w:E,h:e}}var Qa=Object.defineProperty,Ea=(C,A,g)=>A in C?Qa(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,wg=(C,A,g)=>Ea(C,typeof A!="symbol"?A+"":A,g);const ea=4,ia=128*1024*1024,ta=2048*1024*1024,aa="gift-stage-resource-cache",oa=3,ug="resources",sg="resourceMeta",bg="cacheState",Og="totalBytes",hQ="byUpdatedAt",sa=3e4;class na{constructor(A){wg(this,"maxConcurrent"),wg(this,"active",0),wg(this,"queue",[]),this.maxConcurrent=Math.max(1,A)}setMaxConcurrent(A){this.maxConcurrent=Math.max(1,A),this.drain()}async run(A){return new Promise((g,I)=>{this.queue.push(()=>{Promise.resolve().then(A).then(g,I).finally(()=>{this.active--,this.drain()})}),this.drain()})}drain(){for(;this.active<this.maxConcurrent&&this.queue.length>0;){const A=this.queue.shift();this.active++,A==null||A()}}}function ra(){return typeof indexedDB!="undefined"}function pg(C){return C.length*2}function ca(C){var A,g,I;let B=256;const Q=C.imageBlob;if(Q)B+=Q.byteLength;else for(const e of Object.values((A=C.images)!=null?A:{}))B+=e.byteLength;for(const e of(g=C.imageEntries)!=null?g:[])B+=pg(e.key)+16;for(const e of C.audios)B+=pg(e.audioKey)+32;const E=C.spriteTable;(!Q||E.frameData.buffer!==Q)&&(B+=E.frameData.byteLength),(!Q||E.clipPathIndex.buffer!==Q)&&(B+=E.clipPathIndex.byteLength),(!Q||E.shapesIndex.buffer!==Q)&&(B+=E.shapesIndex.byteLength);for(const e of E.imageKeys)B+=pg(e);for(const e of E.clipPaths)B+=pg(e);for(const e of E.shapesTable)for(const i of e)B+=pg((I=i.pathData)!=null?I:"")+96;return B}function ha(C){return typeof C=="string"?pg(C):C.byteLength}class la{constructor(){wg(this,"limiter",new na(ea)),wg(this,"pending",new Map),wg(this,"memory",new Map),wg(this,"memoryBytes",0),wg(this,"maxMemoryBytes",ia),wg(this,"maxPersistentBytes",ta),wg(this,"dbPromise",null),wg(this,"persistentTrimPromise",null)}configure(A){(A==null?void 0:A.maxConcurrent)!=null&&this.limiter.setMaxConcurrent(A.maxConcurrent),(A==null?void 0:A.maxMemoryBytes)!=null&&A.maxMemoryBytes>0&&(this.maxMemoryBytes=A.maxMemoryBytes,this.trimMemory()),(A==null?void 0:A.maxPersistentBytes)!=null&&A.maxPersistentBytes>0&&(this.maxPersistentBytes=A.maxPersistentBytes,this.schedulePersistentTrim())}runLimited(A){return this.limiter.run(A)}async fetchArrayBuffer(A,g){const I=`ab:${A}`,B=this.getMemory(I,"arrayBuffer");if(B)return B.slice(0);const Q=await this.getPersistent(I,"arrayBuffer");return Q?(this.setMemory(I,"arrayBuffer",Q,Q.byteLength),Q.slice(0)):(await this.getOrCreatePending(I,()=>this.limiter.run(async()=>{const e=await fetch(A,{mode:"cors",signal:g});if(!e.ok)throw new Error(`fetch failed ${e.status}`);const i=await e.arrayBuffer();return this.setMemory(I,"arrayBuffer",i,i.byteLength),this.setPersistent(I,"arrayBuffer",i.slice(0)),i}))).slice(0)}async fetchText(A,g){const I=`text:${A}`,B=this.getMemory(I,"text");if(B!=null)return B;const Q=await this.getPersistent(I,"text");return Q!=null?(this.setMemory(I,"text",Q,pg(Q)),Q):this.getOrCreatePending(I,()=>this.limiter.run(async()=>{const E=await fetch(A,{mode:"cors",signal:g});if(!E.ok)throw new Error(`fetch failed ${E.status}`);const e=await E.text();return this.setMemory(I,"text",e,pg(e)),this.setPersistent(I,"text",e),e}))}async fetchJSON(A,g){const I=`json:${A}`,B=this.getMemory(I,"json");if(B!=null)return B;const Q=await this.fetchText(A,g),E=JSON.parse(Q);return this.setMemory(I,"json",E,pg(Q)),E}getSVGAWorkerPayload(A){return this.getMemory(A,"svga-payload")}setSVGAWorkerPayload(A,g){this.setMemory(A,"svga-payload",g,ca(g))}getMemoryValue(A,g){return this.getMemory(A,g)}setMemoryValue(A,g,I,B){this.setMemory(A,g,I,B)}getPersistedArrayBuffer(A){return this.getPersistent(A,"arrayBuffer")}setPersistedArrayBuffer(A,g){return this.setPersistent(A,"arrayBuffer",g)}deletePersistedValue(A){return this.deletePersistent(A)}getOrCreatePending(A,g){const I=this.pending.get(A);if(I)return I;const B=g().finally(()=>{this.pending.delete(A)});return this.pending.set(A,B),B}getMemory(A,g){const I=this.memory.get(A);return!I||I.kind!==g?null:(this.memory.delete(A),this.memory.set(A,I),I.value)}setMemory(A,g,I,B){const Q=this.memory.get(A);Q&&(this.memoryBytes-=Q.size,this.memory.delete(A)),this.memory.set(A,{key:A,kind:g,size:Math.max(0,B),value:I}),this.memoryBytes+=Math.max(0,B),this.trimMemory()}trimMemory(){for(;this.memoryBytes>this.maxMemoryBytes&&this.memory.size>0;){const A=this.memory.keys().next().value;if(!A)break;const g=this.memory.get(A);if(!g)break;this.memoryBytes-=g.size,this.memory.delete(A)}}async openDb(){return ra()?(this.dbPromise||(this.dbPromise=new Promise(A=>{try{const g=indexedDB.open(aa,oa);g.onupgradeneeded=()=>{const I=g.result;for(const E of[ug,sg,bg])I.objectStoreNames.contains(E)&&I.deleteObjectStore(E);I.createObjectStore(ug,{keyPath:"key"}),I.createObjectStore(sg,{keyPath:"key"}).createIndex(hQ,"updatedAt",{unique:!1}),I.createObjectStore(bg,{keyPath:"key"}).put({key:Og,totalBytes:0})},g.onsuccess=()=>A(g.result),g.onerror=()=>A(null),g.onblocked=()=>A(null)}catch(g){A(null)}})),this.dbPromise):null}async getPersistent(A,g){const I=await this.openDb();return I?new Promise(B=>{try{const Q=I.transaction([ug,sg],"readonly");Q.onerror=()=>B(null),Q.onabort=()=>B(null);const e=Q.objectStore(ug).get(A);e.onsuccess=()=>{const i=e.result;if(!i||i.kind!==g){B(null);return}const t=Q.objectStore(sg).get(A);t.onsuccess=()=>{const a=t.result;if((!a||Date.now()-a.updatedAt>=sa)&&this.touchPersistent(A,g),g==="arrayBuffer"){B(i.value);return}B(i.value)},t.onerror=()=>B(i.value)},e.onerror=()=>B(null)}catch(Q){B(null)}}):null}async setPersistent(A,g,I){const B=await this.openDb();if(!B)return;const Q=ha(I);await new Promise(E=>{try{const e=B.transaction([ug,sg,bg],"readwrite");e.oncomplete=()=>E(),e.onerror=()=>E(),e.onabort=()=>E();const i=e.objectStore(ug),t=e.objectStore(sg),a=e.objectStore(bg),o=t.get(A);o.onsuccess=()=>{const s=o.result,n=a.get(Og);n.onsuccess=()=>{var r,c;const h=n.result,l=Math.max(0,((r=h==null?void 0:h.totalBytes)!=null?r:0)-((c=s==null?void 0:s.sizeBytes)!=null?c:0)+Q);i.put({key:A,kind:g,value:I}),t.put({key:A,kind:g,sizeBytes:Q,updatedAt:Date.now()}),a.put({key:Og,totalBytes:l})}}}catch(e){E()}}),this.schedulePersistentTrim()}async touchPersistent(A,g){const I=await this.openDb();I&&await new Promise(B=>{try{const Q=I.transaction(sg,"readwrite");Q.oncomplete=()=>B(),Q.onerror=()=>B(),Q.onabort=()=>B();const E=Q.objectStore(sg),e=E.get(A);e.onsuccess=()=>{const i=e.result;!i||i.kind!==g||E.put({...i,updatedAt:Date.now()})}}catch(Q){B()}})}schedulePersistentTrim(){this.persistentTrimPromise||(this.persistentTrimPromise=this.trimPersistent().finally(()=>{this.persistentTrimPromise=null}))}async trimPersistent(){const A=await this.openDb();A&&await new Promise(g=>{try{const I=A.transaction([ug,sg,bg],"readwrite");I.oncomplete=()=>g(),I.onerror=()=>g(),I.onabort=()=>g();const B=I.objectStore(ug),Q=I.objectStore(sg),E=I.objectStore(bg),e=E.get(Og);e.onsuccess=()=>{var i;const t=e.result;let a=Math.max(0,(i=t==null?void 0:t.totalBytes)!=null?i:0);if(a<=this.maxPersistentBytes)return;const o=Q.index(hQ).openCursor();o.onsuccess=()=>{const s=o.result;if(!s||a<=this.maxPersistentBytes){E.put({key:Og,totalBytes:a});return}const n=s.value;B.delete(n.key),s.delete(),a=Math.max(0,a-n.sizeBytes),s.continue()}}}catch(I){g()}})}async deletePersistent(A){const g=await this.openDb();g&&await new Promise(I=>{try{const B=g.transaction([ug,sg,bg],"readwrite");B.oncomplete=()=>I(),B.onerror=()=>I(),B.onabort=()=>I();const Q=B.objectStore(ug),E=B.objectStore(sg),e=B.objectStore(bg),i=E.get(A);i.onsuccess=()=>{const t=i.result,a=e.get(Og);a.onsuccess=()=>{var o,s;const n=a.result;Q.delete(A),E.delete(A),e.put({key:Og,totalBytes:Math.max(0,((o=n==null?void 0:n.totalBytes)!=null?o:0)-((s=t==null?void 0:t.sizeBytes)!=null?s:0))})}}}catch(B){I()}})}}const dg=new la;function Da(C){dg.configure(C)}function yC(C){return dg.runLimited(C)}function QI(C,A){return dg.fetchArrayBuffer(C,A)}function wa(C,A){return dg.fetchJSON(C,A)}function xC(C){return dg.getSVGAWorkerPayload(C)}function lQ(C,A){dg.setSVGAWorkerPayload(C,A)}function ya(C,A){return dg.getMemoryValue(C,A)}function ME(C,A,g,I){dg.setMemoryValue(C,A,g,I)}function Fa(C){return dg.getPersistedArrayBuffer(C)}function da(C,A){return dg.setPersistedArrayBuffer(C,A)}function Ga(C){return dg.deletePersistedValue(C)}async function FC(C){const A=typeof C=="string"?await wa(C):C;if(!A.info)throw new Error("VAP config missing info");if(!A.info.rgbFrame||!A.info.aFrame)throw new Error("VAP config missing rgbFrame or aFrame");return A}function BI(C,A={w:0,h:0}){const[,,g,I]=C.rgbFrame,B=C.w>0?C.w:g,Q=C.h>0?C.h:I;return A.w=B>0&&Q>0?B:C.videoW,A.h=B>0&&Q>0?Q:C.videoH,A}function SI(C,A,g,I={left:0,right:0,top:0,bottom:0}){const[B,Q,E,e]=C;return I.left=B/A,I.right=(B+E)/A,I.top=(g-Q)/g,I.bottom=(g-Q-e)/g,I}var ua=Object.defineProperty,Ra=(C,A,g)=>A in C?ua(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,VA=(C,A,g)=>Ra(C,typeof A!="symbol"?A+"":A,g);class NE{constructor(A){VA(this,"onFrameAvailable"),VA(this,"frameInfo",new Map),VA(this,"pending",new Set),VA(this,"lastHandle",new Map),VA(this,"started",new Set),VA(this,"firstUploaded",new Set),VA(this,"forceTimeFallback",new Set),VA(this,"lastArmAt",new Map),VA(this,"lastCallbackAt",new Map),VA(this,"lastProgressAt",new Map),VA(this,"lastRecoveryAt",new Map),VA(this,"stallLogged",new Set),VA(this,"stagnationLogged",new Set),VA(this,"lastTimeFallback",new Map),VA(this,"healthTimers",new Map),this.onFrameAvailable=A}preUpload(A,g){const I=g.currentTime;if(typeof g.requestVideoFrameCallback!="function"||this.forceTimeFallback.has(A)){if(!this.firstUploaded.has(A))return this.firstUploaded.add(A),this.lastTimeFallback.set(A,I),this.markProgress(A),typeof g.requestVideoFrameCallback=="function"&&this.debugInfo(A,"initial upload using time fallback",g),!0;const a=this.consumeTimeAdvance(A,I);if(a)this.stagnationLogged.has(A)&&(this.stagnationLogged.delete(A),this.debugInfo(A,"time fallback progress resumed",g));else if(this.forceTimeFallback.has(A)&&!this.stagnationLogged.has(A)&&!g.paused&&!g.ended){const o=this.lastProgressAt.get(A);o!==void 0&&performance.now()-o>1e3&&(this.stagnationLogged.add(A),this.debugWarn(A,"time fallback has no progress",g,{lastProgressAgeMs:Math.round(performance.now()-o)}))}return a}this.ensureRvf(A,g);const B=performance.now(),Q=this.lastCallbackAt.get(A),E=this.lastArmAt.get(A),e=Q!=null?Q:E,i=this.lastTimeFallback.get(A),t=i!==void 0&&Math.abs(I-i)>1e-4;return this.firstUploaded.has(A)&&e!==void 0&&B-e>500&&!g.paused&&!g.ended&&(this.stallLogged.has(A)||(this.stallLogged.add(A),this.debugWarn(A,"rVFC stalled for slot",g,{stallAgeMs:Math.round(B-e),lastCallbackAgeMs:Q!==void 0?Math.round(B-Q):null,lastArmAgeMs:E!==void 0?Math.round(B-E):null,timeAdvanced:t})),this.tryRecoverStalledPlayback(A,g,I,B),this.started.delete(A),this.ensureRvf(A,g),t)?(this.forceTimeFallback.add(A),this.lastTimeFallback.set(A,I),this.markProgress(A),this.debugWarn(A,"switching slot to time fallback",g,{stallAgeMs:Math.round(B-e)}),!0):this.firstUploaded.has(A)?this.pending.has(A)?(this.pending.delete(A),this.lastTimeFallback.set(A,I),this.markProgress(A),(this.stallLogged.delete(A)||this.forceTimeFallback.delete(A))&&(this.stagnationLogged.delete(A),this.debugInfo(A,"rVFC progress resumed",g)),!0):!1:(this.firstUploaded.add(A),this.lastTimeFallback.set(A,I),this.markProgress(A),!0)}getFrameInfo(A){return this.frameInfo.get(A)}ensureRvf(A,g){if(this.started.has(A))return;this.started.add(A),this.ensureHealthTimer(A,g);const I=(B,Q)=>{var E;this.frameInfo.set(A,Q),this.lastCallbackAt.set(A,performance.now()),this.pending.add(A),(E=this.onFrameAvailable)==null||E.call(this,g);try{this.lastArmAt.set(A,performance.now());const e=g.requestVideoFrameCallback(I);this.lastHandle.set(A,e)}catch(e){this.started.delete(A),this.lastHandle.delete(A),this.debugWarn(A,"requestVideoFrameCallback re-arm failed",g)}};try{this.lastArmAt.set(A,performance.now());const B=g.requestVideoFrameCallback(I);this.lastHandle.set(A,B)}catch(B){this.started.delete(A),this.lastHandle.delete(A),this.debugWarn(A,"requestVideoFrameCallback initial arm failed",g)}}ensureHealthTimer(A,g){if(this.healthTimers.has(A))return;const I=setInterval(()=>{var B;g.paused||g.ended||(B=this.onFrameAvailable)==null||B.call(this,g)},500);this.healthTimers.set(A,I)}consumeTimeAdvance(A,g){const I=this.lastTimeFallback.get(A);return I===void 0||Math.abs(g-I)>1e-4?(this.lastTimeFallback.set(A,g),this.markProgress(A),!0):!1}markProgress(A){this.lastProgressAt.set(A,performance.now())}tryRecoverStalledPlayback(A,g,I,B){if(g.paused||g.ended||g.seeking)return;const Q=this.lastRecoveryAt.get(A);if(Q!==void 0&&B-Q<1500)return;this.lastRecoveryAt.set(A,B);const E=Number.isFinite(g.duration)?g.duration:NaN,e=Number.isFinite(E)&&E>0,i=e?Math.min(Math.max(0,E-.001),I+.001):I;try{e&&i>I&&(g.currentTime=i)}catch(t){}try{const t=g.play();t&&typeof t.catch=="function"&&t.catch(()=>{})}catch(t){}this.debugWarn(A,"attempting stalled video recovery",g,{currentTime:I,nudgedTime:i,readyState:g.readyState})}debugInfo(A,g,I,B){console.info("[GiftStage:VideoGate]",g,this.snapshot(A,I,B))}debugWarn(A,g,I,B){console.warn("[GiftStage:VideoGate]",g,this.snapshot(A,I,B))}snapshot(A,g,I){return{slotId:A,currentTime:Number(g.currentTime.toFixed(3)),readyState:g.readyState,networkState:g.networkState,paused:g.paused,ended:g.ended,seeking:g.seeking,playbackRate:g.playbackRate,forceTimeFallback:this.forceTimeFallback.has(A),pending:this.pending.has(A),...I}}release(A,g){if(!g){this.cleanup(A);return}const I=this.lastHandle.get(A);if(I!=null)try{g.cancelVideoFrameCallback(I)}catch(B){}this.cleanup(A)}cleanup(A){const g=this.healthTimers.get(A);g!=null&&clearInterval(g),this.healthTimers.delete(A),this.frameInfo.delete(A),this.lastHandle.delete(A),this.started.delete(A),this.pending.delete(A),this.firstUploaded.delete(A),this.forceTimeFallback.delete(A),this.lastArmAt.delete(A),this.lastCallbackAt.delete(A),this.lastProgressAt.delete(A),this.lastRecoveryAt.delete(A),this.stallLogged.delete(A),this.stagnationLogged.delete(A),this.lastTimeFallback.delete(A)}}const UE=new Float32Array([0,0,1,1]);function kB(C,A,g,I){const B=I!=null?I:new Float32Array(4);return!g||C<=0||A<=0?(B[0]=0,B[1]=0,B[2]=1,B[3]=1,B):(B[0]=g.x/C,B[1]=g.y/A,B[2]=g.w/C,B[3]=g.h/A,B)}const fa=3;function Sa(){return typeof document!="undefined"&&typeof document.createElement=="function"}function yI(C,A){if(!Sa())throw new Error("Canvas rendering is unavailable in this environment");const g=document.createElement("canvas");return g.width=Math.max(1,Math.round(C)),g.height=Math.max(1,Math.round(A)),g}function FI(C,A){const g=C.getContext("2d",A);if(!g)throw new Error("Failed to acquire 2D canvas context");return g}let _B=null;function Ma(){return _B||(_B=FI(yI(1,1))),_B}function kE(C){return!!C&&typeof C=="object"&&typeof C.text=="string"}function Na(C){return!!C&&typeof C=="object"&&"image"in C}function YE(C){return!!C&&typeof C=="object"&&"image"in C}function DQ(C){return!C||typeof C!="object"?!1:typeof HTMLCanvasElement!="undefined"&&C instanceof HTMLCanvasElement||typeof HTMLImageElement!="undefined"&&C instanceof HTMLImageElement||typeof ImageBitmap!="undefined"&&C instanceof ImageBitmap||typeof OffscreenCanvas!="undefined"&&C instanceof OffscreenCanvas||typeof HTMLVideoElement!="undefined"&&C instanceof HTMLVideoElement||typeof VideoFrame!="undefined"&&C instanceof VideoFrame||typeof ImageData!="undefined"&&C instanceof ImageData}function YB(C){return new Promise((A,g)=>{const I=new Image;I.crossOrigin="anonymous",I.onload=()=>A(I),I.onerror=()=>g(new Error(`Failed to load image: ${C}`)),I.src=C})}function dI(C){if(typeof HTMLImageElement!="undefined"&&C instanceof HTMLImageElement)return{width:C.naturalWidth||C.width,height:C.naturalHeight||C.height};if(typeof HTMLCanvasElement!="undefined"&&C instanceof HTMLCanvasElement)return{width:C.width,height:C.height};if(typeof OffscreenCanvas!="undefined"&&C instanceof OffscreenCanvas)return{width:C.width,height:C.height};if(typeof ImageBitmap!="undefined"&&C instanceof ImageBitmap)return{width:C.width,height:C.height};if(C&&typeof C=="object"&&"videoWidth"in C&&typeof C.videoWidth=="number")return{width:C.videoWidth,height:C.videoHeight};if(C&&typeof C=="object"&&"displayWidth"in C&&typeof C.displayWidth=="number")return{width:C.displayWidth||C.codedWidth,height:C.displayHeight||C.codedHeight};const A=C;return typeof A.width=="number"&&typeof A.height=="number"?{width:A.width,height:A.height}:{width:0,height:0}}function dC(C){if(typeof ImageData!="undefined"&&C instanceof ImageData){const A=yI(C.width,C.height);return FI(A).putImageData(C,0,0),A}return C}function Ua(C){const A=/^\[(.+)\]$/.exec(C);return A?A[1]:C}function ka(C,A,g){var I,B;return C?typeof C=="string"?{font:C,color:g}:{font:(I=C.font)!=null?I:A,color:(B=C.color)!=null?B:g}:{font:A,color:g}}function RI(C){return typeof C=="number"&&Number.isFinite(C)&&C>0}function Ya(C,A){const g=Math.max(1,Math.round(A*100)/100);return/\d+(?:\.\d+)?px\b/.test(C)?C.replace(/\d+(?:\.\d+)?px\b/,`${g}px`):`${g}px ${C}`}function pa(C){const A=typeof C=="string"?C:C==null?void 0:C.font,g=A?/(\d+(?:\.\d+)?)px\b/.exec(A):null;if(!g)return;const I=Number(g[1]);return RI(I)?I:void 0}function wQ(C,A,g,I){const B=C.measureText(A),Q=B.width/g,E=(B.actualBoundingBoxAscent||0)+(B.actualBoundingBoxDescent||0),e=E>0?E/g:I;return{width:Math.max(1,Q),height:Math.max(1,e)}}function Ka(C,A,g,I,B,Q,E,e){let i=Math.max(1,Math.min(E,e)),t=Math.max(i,e),a=i,o={width:1,height:1};for(let s=0;s<16;s++){const n=(i+t)*.5;C.font=I(n);const r=wQ(C,A,g,n);r.width<=B&&r.height<=Q?(a=n,o=r,i=n):t=n}return C.font=I(a),o=wQ(C,A,g,a),{fontSize:a,metrics:o}}function pE(C,A,g,I){var B,Q,E,e,i,t;const a=Math.max(1,I.scale||1),o=Math.max(1,Math.round(C)),s=Math.max(1,Math.round(A)),n=Ma(),r=(B=I.color)!=null?B:"#ffffff",c=Math.max(0,(Q=I.padding)!=null?Q:2),h=Math.max(1,o-c*2),l=Math.max(1,s-c*2),w=Math.max(1,(i=(e=(E=I.maxFontSize)!=null?E:I.fontSize)!=null?e:pa(I.fontStyle))!=null?i:Math.max(8,l)),D=Math.max(1,Math.min((t=I.minFontSize)!=null?t:8,w)),y=r,R=`${I.style==="b"?"bold ":""}${w*a}px Arial`,F=ka(I.fontStyle,R,y),d=N=>Ya(F.font,N*a),f=Ka(n,g,a,d,h,l,D,RI(I.fontSize)?Math.min(I.fontSize,w):w),u=I.sizing==="intrinsic"?Math.max(1,Math.min(o,Math.ceil(f.metrics.width+c*2))):o,G=I.sizing==="intrinsic"?Math.max(1,Math.min(s,Math.ceil(f.metrics.height+c*2))):s,S=yI(u*a,G*a),M=FI(S);return M.clearRect(0,0,S.width,S.height),M.textAlign="center",M.textBaseline="middle",M.font=d(f.fontSize),M.fillStyle=F.color,M.fillText(g,S.width/2,S.height/2),{canvas:S,logicalWidth:u,logicalHeight:G}}async function ma(C,A,g,I){var B,Q,E,e,i,t;const a=C.spriteTable,o=new Set(A),s=new Map;for(let c=0;c<a.imageKeys.length;c++){const h=a.imageKeys[c];o.has(h)&&s.set(h,c)}const n=new Map,{frameCount:r}=a;for(const c of A){const h=s.get(c);if(h==null){const F=C.atlasRects.get(c);n.set(c,{width:(F==null?void 0:F.w)||1,height:(F==null?void 0:F.h)||1,renderScale:1});continue}let l=0,w=0,D=Number.POSITIVE_INFINITY;for(let F=0;F<r;F++){const d=(h*r+F)*9,f=(B=a.frameData[d])!=null?B:0,u=(Q=a.frameData[d+1])!=null?Q:0,G=(E=a.frameData[d+2])!=null?E:1,S=(e=a.frameData[d+3])!=null?e:0,M=(i=a.frameData[d+4])!=null?i:0,N=(t=a.frameData[d+5])!=null?t:1;if(l=Math.max(l,f),w=Math.max(w,u),f>0&&u>0){const U=Math.abs(G)*f+Math.abs(M)*u,K=Math.abs(S)*f+Math.abs(N)*u,k=U>0?U/f:1,m=K>0?K/u:1,H=Math.min(k||1,m||1);RI(H)&&(D=Math.min(D,H))}F+1<r&&g.shouldYield()&&(await g.yield(),I==null||I())}const y=RI(D)?D:1,R=C.atlasRects.get(c);n.set(c,{width:l||(R==null?void 0:R.w)||1,height:w||(R==null?void 0:R.h)||1,renderScale:y})}return n}function $B(C,A){if(RI(C))return!RI(A)||A===1?C:C/A}async function Ja(C,A,g,I=1){var B,Q,E;if(kE(C)){const i=(B=C.mode)!=null?B:"dynamic",t=pE(A,g,C.text,{scale:(Q=C.scale)!=null?Q:fa,color:C.color,style:C.style,fontStyle:C.fontStyle,fontSize:$B(C.fontSize,I),minFontSize:$B(C.minFontSize,I),maxFontSize:$B(C.maxFontSize,I),padding:C.padding,sizing:i==="dynamic"?"intrinsic":"box"});return{source:t.canvas,mode:i,logicalWidth:t.logicalWidth,logicalHeight:t.logicalHeight}}if(Na(C)){const i=typeof C.image=="string"?await YB(C.image):C.image,t=dI(i);return{source:i,mode:(E=C.mode)!=null?E:"replace",logicalWidth:Math.max(1,t.width||A),logicalHeight:Math.max(1,t.height||g)}}if(typeof C=="string"){const i=await YB(C),t=dI(i);return{source:i,mode:"replace",logicalWidth:Math.max(1,t.width||A),logicalHeight:Math.max(1,t.height||g)}}const e=dI(C);return{source:C,mode:"replace",logicalWidth:Math.max(1,e.width||A),logicalHeight:Math.max(1,e.height||g)}}async function La(C,A,g,I={}){var B,Q,E;const e=new Map;if(!g)return e;const i=Object.entries(g),t=OA({maxBudgetMs:I.frameBudgetMs}),a=await ma(A,i.map(([o])=>o),t,I.checkActive);for(let o=0;o<i.length;o++){const[s,n]=i[o];(B=I.checkActive)==null||B.call(I);const r=(Q=a.get(s))!=null?Q:{width:1,height:1,renderScale:1},c=await Ja(n,r.width,r.height,r.renderScale),h=dI(c.source),l=h.width||r.width,w=h.height||r.height,D=C.createTexture(c.source,{width:l,height:w,filter:"linear",premultiplyAlpha:!0});e.set(s,{texture:D,mode:c.mode,logicalWidth:c.logicalWidth,logicalHeight:c.logicalHeight}),o+1<i.length&&t.shouldYield()&&(await t.yield(),(E=I.checkActive)==null||E.call(I))}return e}function Ha(C,A){var g,I;if(!A)return;const B=String(C.srcId),Q=C.srcTag,E=Ua(C.srcTag);return(I=(g=A[Q])!=null?g:A[E])!=null?I:A[B]}function xa(C,A,g){var I,B,Q,E,e,i;const t=typeof A=="string"?A:A.text,a=(I=g==null?void 0:g.width)!=null?I:C.w&&C.w>0?C.w:1,o=(B=g==null?void 0:g.height)!=null?B:C.h&&C.h>0?C.h:1,s=pE(a,o,t,{scale:typeof A=="string"?1:(Q=A.scale)!=null?Q:1,color:typeof A=="string"?C.color:(E=A.color)!=null?E:C.color,style:typeof A=="string"?C.style:(e=A.style)!=null?e:C.style,fontStyle:typeof A=="string"?C.fontStyle:(i=A.fontStyle)!=null?i:C.fontStyle,fontSize:typeof A=="string"?void 0:A.fontSize,minFontSize:typeof A=="string"?void 0:A.minFontSize,maxFontSize:typeof A=="string"?void 0:A.maxFontSize,padding:typeof A=="string"?void 0:A.padding,sizing:"box"});return{source:s.canvas,width:s.canvas.width,height:s.canvas.height}}function ba(C,A){var g;const I=String(A);let B=0,Q=0;for(const E of(g=C.frame)!=null?g:[])for(const e of E.obj){if(String(e.srcId)!==I)continue;const[,,i,t]=e.frame;B=Math.max(B,i),Q=Math.max(Q,t)}return B>0&&Q>0?{width:B,height:Q}:void 0}async function qa(C){return typeof C=="string"?YB(C):YE(C)?typeof C.image=="string"?YB(C.image):dC(C.image):dC(C)}async function va(C,A){const g=new Map;if(!C.src||C.src.length===0||!A)return g;for(const I of C.src){const B=Ha(I,A);if(B==null)continue;if(I.srcType==="txt"){if(DQ(B)){const t=dC(B),a=dI(t);g.set(String(I.srcId),{source:t,width:Math.max(1,a.width),height:Math.max(1,a.height)});continue}const i=xa(I,typeof B=="string"||kE(B)?B:String(B),ba(C,I.srcId));g.set(String(I.srcId),i);continue}const Q=DQ(B)||typeof B=="string"||YE(B)?B:null;if(!Q)continue;const E=await qa(Q),e=dI(E);g.set(String(I.srcId),{source:E,width:Math.max(1,e.width),height:Math.max(1,e.height)})}return g}function Ta(C){var A;const g=new Map;for(const I of(A=C.frame)!=null?A:[]){const B=[...I.obj].sort((Q,E)=>{var e,i;return((e=Q.z)!=null?e:0)-((i=E.z)!=null?i:0)});for(const Q of B)Q.srcKey===void 0&&(Q.srcKey=String(Q.srcId));g.set(I.i,B)}return g}function Wa(C,A){const g=yI(C,A),I=yI(C,A),B=yI(1,1);return{compositeCanvas:g,compositeCtx:FI(g),rawCanvas:I,rawCtx:FI(I),scratchCanvas:B,scratchCtx:FI(B)}}function yQ(C,A,g,I,B=!0){var Q,E;if(!C.compositeCanvas||!C.compositeCtx||!C.rawCanvas||!C.rawCtx||!C.scratchCanvas||!C.scratchCtx)throw new Error("VAP CPU compositor state is incomplete");const{info:e}=A,i=e.videoW||C.width,t=e.videoH||C.height,[a,o,s,n]=e.rgbFrame,[r,c,h,l]=e.aFrame;(C.rawCanvas.width!==i||C.rawCanvas.height!==t)&&(C.rawCanvas.width=i,C.rawCanvas.height=t),C.rawCtx.clearRect(0,0,i,t),C.rawCtx.drawImage(g,0,0,i,t);const w=C.rawCtx.getImageData(0,0,i,t).data,D=C.compositeCtx.createImageData(C.width,C.height),y=D.data;for(let F=0;F<C.height;F++){const d=Math.min(t-1,Math.max(0,o+Math.floor(F/C.height*n))),f=Math.min(t-1,Math.max(0,c+Math.floor(F/C.height*l)));for(let u=0;u<C.width;u++){const G=Math.min(i-1,Math.max(0,a+Math.floor(u/C.width*s))),S=Math.min(i-1,Math.max(0,r+Math.floor(u/C.width*h))),M=(d*i+G)*4,N=(f*i+S)*4,U=w[N]/255,K=(F*C.width+u)*4,k=B?1:U;y[K]=Math.round(w[M]*k),y[K+1]=Math.round(w[M+1]*k),y[K+2]=Math.round(w[M+2]*k),y[K+3]=Math.round(U*255)}}const R=(Q=C.frameMap.get(I))!=null?Q:[];for(const F of R){const d=(E=C.resources)==null?void 0:E.get(String(F.srcId));if(!d)continue;const[f,u,G,S]=F.frame,[M,N,U,K]=F.mFrame;if(G<=0||S<=0||U<=0||K<=0)continue;(C.scratchCanvas.width!==G||C.scratchCanvas.height!==S)&&(C.scratchCanvas.width=Math.max(1,Math.round(G)),C.scratchCanvas.height=Math.max(1,Math.round(S))),C.scratchCtx.clearRect(0,0,C.scratchCanvas.width,C.scratchCanvas.height),C.scratchCtx.drawImage(d.source,0,0,C.scratchCanvas.width,C.scratchCanvas.height);const k=C.scratchCtx.getImageData(0,0,C.scratchCanvas.width,C.scratchCanvas.height).data,m=Math.max(0,Math.floor(f)),H=Math.max(0,Math.floor(u)),v=Math.min(C.width,Math.ceil(f+G)),j=Math.min(C.height,Math.ceil(u+S));for(let T=H;T<j;T++){const b=Math.min(C.scratchCanvas.height-1,Math.max(0,Math.floor((T-u)/S*C.scratchCanvas.height))),X=Math.min(t-1,Math.max(0,N+Math.floor((T-u)/S*K)));for(let Z=m;Z<v;Z++){const EA=Math.min(C.scratchCanvas.width-1,Math.max(0,Math.floor((Z-f)/G*C.scratchCanvas.width))),UA=Math.min(i-1,Math.max(0,M+Math.floor((Z-f)/G*U))),FA=(b*C.scratchCanvas.width+EA)*4,cA=(X*i+UA)*4,IA=k[FA+3]/255,Ig=w[cA]/255,QA=IA*Ig;if(QA<=0)continue;const V=(T*C.width+Z)*4,YA=k[FA]/255*QA,kA=k[FA+1]/255*QA,W=k[FA+2]/255*QA,pA=y[V+3]/255,LA=1-QA;y[V]=Math.round((YA+y[V]/255*LA)*255),y[V+1]=Math.round((kA+y[V+1]/255*LA)*255),y[V+2]=Math.round((W+y[V+2]/255*LA)*255),y[V+3]=Math.round((QA+pA*LA)*255)}}}return C.compositeCtx.putImageData(D,0,0),C.compositeCanvas}var Va=Object.defineProperty,Za=(C,A,g)=>A in C?Va(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,O=(C,A,g)=>Za(C,typeof A!="symbol"?A+"":A,g);const AC=1024,FQ=32,AB=class Ug{constructor(A){O(this,"instancedQuadVB",null),O(this,"instancedQuadIB",null),O(this,"quadVB",null),O(this,"quadIB",null),O(this,"rgbaWebGLQuadVB",null),O(this,"rgbaTopLeftQuadVB",null),O(this,"rgbaQuadIB",null),O(this,"wcDbgFirstDraw",new Set),O(this,"wcDbgNullWarns",new Map),O(this,"htmlGate"),O(this,"lastWcFrameRef",new Map),O(this,"scratchAtlasRemap",new Float32Array(4)),O(this,"instancePackScratch",new Float32Array(AC*FQ)),O(this,"scratchTransform",new Float32Array(16)),O(this,"contentSizeScratch",{w:0,h:0}),O(this,"rgbUVScratch",{left:0,right:0,top:0,bottom:0}),O(this,"alphaUVScratch",{left:0,right:0,top:0,bottom:0}),O(this,"maskUVScratch",{left:0,right:0,top:0,bottom:0}),O(this,"processedHtmlGatesScratch",new Set),O(this,"vapVertexScratch",new Float32Array(24)),O(this,"layoutScratch",{scaleX:1,scaleY:1,width:0,height:0,offsetX:0,offsetY:0}),O(this,"clipScratch",{x:0,y:0,w:0,h:0}),O(this,"instancedListScratch",[]),O(this,"instancedByTexScratch",new Map),O(this,"instancedTexturesScratch",[]),O(this,"instancedUniformsScratch",{u_projection:new Float32Array(16),u_video:0}),O(this,"instancedDrawCommand",{shader:"vap-instanced",vertexBuffer:null,indexBuffer:null,indexCount:6,instanceCount:0,instanceData:this.instancePackScratch,textures:this.instancedTexturesScratch,uniforms:this.instancedUniformsScratch}),O(this,"geometryTexturesScratch",[]),O(this,"geometryUniformsScratch",{u_projection:new Float32Array(16),u_transform:this.scratchTransform,u_atlasRemap:this.scratchAtlasRemap,u_opacity:1,u_rgbPremultiplied:1,u_video:0}),O(this,"geometryDrawCommand",{shader:"vap",vertexBuffer:null,indexBuffer:null,indexCount:6,textures:this.geometryTexturesScratch,uniforms:this.geometryUniformsScratch}),O(this,"mixedGeometryTexturesScratch",[]),O(this,"mixedGeometryUniformsScratch",{u_projection:new Float32Array(16),u_transform:this.scratchTransform,u_atlasRemap:UE,u_opacity:1,u_video:0}),O(this,"mixedGeometryDrawCommand",{shader:"rgba-textured",vertexBuffer:null,indexBuffer:null,indexCount:6,textures:this.mixedGeometryTexturesScratch,uniforms:this.mixedGeometryUniformsScratch}),O(this,"overlayTexturesScratch",[]),O(this,"overlayUniformsScratch",{u_projection:new Float32Array(16),u_transform:this.scratchTransform,u_atlasRemap:this.scratchAtlasRemap,u_opacity:1,u_resource:0,u_video:1}),O(this,"overlayDrawCommand",{shader:"vap-mix-overlay",vertexBuffer:null,indexBuffer:null,indexCount:6,textures:this.overlayTexturesScratch,uniforms:this.overlayUniformsScratch}),O(this,"projCacheW",0),O(this,"projCacheH",0),O(this,"projCache",null),this.htmlGate=new NE(A)}syncVideoTextures(A,g){var I,B,Q,E;let e=!1;const i=this.processedHtmlGatesScratch;i.clear();for(const t of g.values()){if(t.type!=="vap"||t.paused||t.state!=="playing"&&t.state!=="fly"&&t.state!=="stopped"||!t.videoTextureHandle)continue;if(((I=t.vapMixState)==null?void 0:I.mode)==="composited"){e=this.syncMixedTexture(A,t)||e;continue}const a=t.webcodecsPlayback;if(a){const o=(B=t.wcPlaybackTime)!=null?B:0,s=a.getFrameForTime(o);if(this.wcDbgFirstDraw.has(t.id)||(this.wcDbgFirstDraw.add(t.id),console.info("[GiftStage:WC] VAP first draw",{giftId:t.id,state:t.state,t:o,hasFrame:!!s,canvasBuf:`${A.canvas.width}x${A.canvas.height}`})),s){const n=t.webcodecsSurface;if(((E=n==null?void 0:n.lastUploadedFrame)!=null?E:this.lastWcFrameRef.get(t.id))!==s){const c=t.wcAtlasRect;c?A.updateTextureRegion(t.videoTextureHandle,s,c.x,c.y,c.w,c.h):A.updateTexture(t.videoTextureHandle,s),n?n.lastUploadedFrame=s:this.lastWcFrameRef.set(t.id,s),e=!0}}else{const n=((Q=this.wcDbgNullWarns.get(t.id))!=null?Q:0)+1;this.wcDbgNullWarns.set(t.id,n),n<=5&&console.warn("[GiftStage:WC] VAP getFrameForTime null",{giftId:t.id,t:o,n})}}else if(t.videoElement){const o=this.getHtmlVideoGateId(t);if(i.has(o))continue;i.add(o),this.htmlGate.preUpload(o,t.videoElement)&&(A.updateTexture(t.videoTextureHandle,t.videoElement),e=!0)}}return e}draw(A,g){(A.type==="webgpu"||A.type==="webgl2")&&this.drawInstancedVapBatches(A,g);for(const I of g.values())if(I.type==="vap"&&!(I.state!=="playing"&&I.state!=="fly"&&I.state!=="stopped")&&!(!I.videoElement&&!I.webcodecsPlayback||!I.videoTextureHandle)){if(I.vapMixState){I.vapMixState.mode==="direct"?this.drawMixedDirectGeometry(A,I):this.drawMixedGeometry(A,I);continue}(A.type==="webgpu"||A.type==="webgl2")&&XA(I)!=="cover"||this.drawGeometry(A,I)}}drawSlot(A,g){if(g.type==="vap"&&!(g.state!=="playing"&&g.state!=="fly"&&g.state!=="stopped")&&!(!g.videoElement&&!g.webcodecsPlayback||!g.videoTextureHandle)){if(g.vapMixState){g.vapMixState.mode==="direct"?this.drawMixedDirectGeometry(A,g):this.drawMixedGeometry(A,g);return}this.drawGeometry(A,g)}}drawInstancedVapBatches(A,g){const I=this.instancedListScratch;I.length=0;for(const a of g.values())a.type!=="vap"||a.state!=="playing"&&a.state!=="fly"&&a.state!=="stopped"||a.vapMixState||!a.videoElement&&!a.webcodecsPlayback||!a.videoTextureHandle||XA(a)==="cover"||!a.vapConfig||I.push(a);if(I.length===0)return;this.instancedQuadVB||(this.instancedQuadVB=A.createBuffer(Ug.QUAD_VERTS,"vertex"),this.instancedQuadIB=A.createBuffer(Ug.QUAD_INDICES,"index"));const B=A.canvas.width,Q=A.canvas.height;let E;this.projCache&&this.projCacheW===B&&this.projCacheH===Q?E=this.projCache:(this.projCacheW=B,this.projCacheH=Q,this.projCache=mg(0,B,Q,0,-1,1),E=this.projCache);const e=this.instancedByTexScratch;for(const a of e.values())a.length=0;for(const a of I){const o=a.videoTextureHandle.id;let s=e.get(o);s||(s=[],e.set(o,s)),s.push(a)}const i=this.instancePackScratch,t=this.instancedDrawCommand;t.vertexBuffer=this.instancedQuadVB,t.indexBuffer=this.instancedQuadIB,this.instancedUniformsScratch.u_projection=E;for(const[a,o]of e){if(o.length===0){e.delete(a);continue}for(let s=0;s<o.length;s+=AC){const n=Math.min(AC,o.length-s);for(let r=0;r<n;r++)this.fillVapInstanceData(o[s+r],i,r*FQ);t.instanceCount=n,this.instancedTexturesScratch[0]=o[s].videoTextureHandle,this.instancedTexturesScratch.length=1,vg(A.draw(t),"VAP instanced draw")}}}fillVapInstanceData(A,g,I){var B,Q,E,e;const i=A.vapConfig,{info:t}=i,a=t.videoW>0?t.videoW:(Q=(B=A.webcodecsPlayback)==null?void 0:B.videoWidth)!=null?Q:1,o=t.videoH>0?t.videoH:(e=(E=A.webcodecsPlayback)==null?void 0:E.videoHeight)!=null?e:1,s=this.scratchTransform,{w:n,h:r}=BI(t,this.contentSizeScratch),c=Fg(A,n,r,this.layoutScratch);nI(A,A.x+c.offsetX,A.y+c.offsetY,c.width,c.height,s),g.set(s,I);const h=SI(t.rgbFrame,a,o,this.rgbUVScratch),l=SI(t.aFrame,a,o,this.alphaUVScratch),w=A.videoTextureHandle,D=kB(w.width,w.height,A.wcAtlasRect,this.scratchAtlasRemap);g.set(D,I+16);const y=I+20;g[y+0]=h.left,g[y+1]=h.right,g[y+2]=h.top,g[y+3]=h.bottom,g[y+4]=l.left,g[y+5]=l.right,g[y+6]=l.top,g[y+7]=l.bottom,g[y+8]=A.opacity,g[y+9]=A.options.videoRGBAlphaMode!=="straight"?1:0,g[y+10]=0,g[y+11]=0}syncMixedTexture(A,g){var I;const B=g.vapConfig,Q=g.vapMixState;if(!B||!Q||Q.mode!=="composited"||!g.videoTextureHandle)return!1;const E=this.getMixedFrameIndex(g,B),e=g.webcodecsPlayback;if(e){const t=(I=g.wcPlaybackTime)!=null?I:0,a=e.getFrameForTime(t);if(!a||Q.lastSourceRef===a&&Q.lastFrameIndex===E)return!1;const o=Q.composer?Q.composer.render(a,E):yQ(Q,B,a,E,g.options.videoRGBAlphaMode!=="straight");return A.updateTexture(g.videoTextureHandle,o),Q.lastSourceRef=a,Q.lastFrameIndex=E,!0}if(!g.videoElement||!this.htmlGate.preUpload(g.id,g.videoElement)&&Q.lastFrameIndex===E)return!1;const i=Q.composer?Q.composer.render(g.videoElement,E):yQ(Q,B,g.videoElement,E,g.options.videoRGBAlphaMode!=="straight");return A.updateTexture(g.videoTextureHandle,i),Q.lastSourceRef=g.videoElement,Q.lastFrameIndex=E,!0}releaseHtmlVideo(A){var g;this.htmlGate.release(this.getHtmlVideoGateId(A),(g=A.videoElement)!=null?g:void 0)}clearWebCodecsFrameRef(A){this.lastWcFrameRef.delete(A),this.wcDbgFirstDraw.delete(A),this.wcDbgNullWarns.delete(A)}drawGeometry(A,g){var I,B,Q,E;const e=A.canvas.width,i=A.canvas.height;let t;this.projCache&&this.projCacheW===e&&this.projCacheH===i?t=this.projCache:(this.projCacheW=e,this.projCacheH=i,this.projCache=mg(0,e,i,0,-1,1),t=this.projCache);const a=g.vapConfig;if(!a){console.warn("[GiftStage:WC] VAP vapConfig missing — draw skipped",{giftId:g.id});return}const{info:o}=a,s=o.videoW>0?o.videoW:(B=(I=g.webcodecsPlayback)==null?void 0:I.videoWidth)!=null?B:1,n=o.videoH>0?o.videoH:(E=(Q=g.webcodecsPlayback)==null?void 0:Q.videoHeight)!=null?E:1,r=this.scratchTransform,c=XA(g),{w:h,h:l}=BI(o,this.contentSizeScratch),w=Fg(g,h,l,this.layoutScratch);nI(g,g.x+w.offsetX,g.y+w.offsetY,w.width,w.height,r);const D=SI(o.rgbFrame,s,n,this.rgbUVScratch),y=SI(o.aFrame,s,n,this.alphaUVScratch),R=g.videoTextureHandle,F=kB(R.width,R.height,g.wcAtlasRect,this.scratchAtlasRemap),d=this.vapVertexScratch;d[0]=0,d[1]=0,d[2]=D.left,d[3]=D.top,d[4]=y.left,d[5]=y.top,d[6]=1,d[7]=0,d[8]=D.right,d[9]=D.top,d[10]=y.right,d[11]=y.top,d[12]=1,d[13]=1,d[14]=D.right,d[15]=D.bottom,d[16]=y.right,d[17]=y.bottom,d[18]=0,d[19]=1,d[20]=D.left,d[21]=D.bottom,d[22]=y.left,d[23]=y.bottom,this.quadVB=this.ensureBuffer(A,this.quadVB,d,"vertex"),this.quadIB||(this.quadIB=A.createBuffer(Ug.QUAD_INDICES,"index"));const f=this.geometryDrawCommand;if(f.vertexBuffer=this.quadVB,f.indexBuffer=this.quadIB,this.geometryTexturesScratch[0]=g.videoTextureHandle,this.geometryTexturesScratch.length=1,this.geometryUniformsScratch.u_projection=t,this.geometryUniformsScratch.u_transform=r,this.geometryUniformsScratch.u_atlasRemap=F,this.geometryUniformsScratch.u_opacity=g.opacity,this.geometryUniformsScratch.u_rgbPremultiplied=g.options.videoRGBAlphaMode!=="straight"?1:0,c==="cover"){const u=Sg(g,g.x,g.y,g.width*rg(g),g.height*cg(g),this.clipScratch);A.setScissor(u.x,u.y,u.w,u.h)}vg(A.draw(f),"VAP draw"),c==="cover"&&A.resetScissor()}drawMixedGeometry(A,g){const I=A.canvas.width,B=A.canvas.height;let Q;this.projCache&&this.projCacheW===I&&this.projCacheH===B?Q=this.projCache:(this.projCacheW=I,this.projCacheH=B,this.projCache=mg(0,I,B,0,-1,1),Q=this.projCache);const E=g.vapConfig;if(!E||!g.vapMixState||g.vapMixState.mode!=="composited"||!g.videoTextureHandle)return;const e=this.scratchTransform,i=XA(g),{w:t,h:a}=BI(E.info,this.contentSizeScratch),o=Fg(g,t,a,this.layoutScratch);nI(g,g.x+o.offsetX,g.y+o.offsetY,o.width,o.height,e);const s=!!g.vapMixState.composer||A.type==="webgpu";let n=s?this.rgbaTopLeftQuadVB:this.rgbaWebGLQuadVB;if(n||(n=A.createBuffer(s?Ug.RGBA_QUAD_VERTS_WEBGPU:Ug.RGBA_QUAD_VERTS_WEBGL,"vertex"),s?this.rgbaTopLeftQuadVB=n:this.rgbaWebGLQuadVB=n),this.rgbaQuadIB||(this.rgbaQuadIB=A.createBuffer(Ug.QUAD_INDICES,"index")),i==="cover"){const c=Sg(g,g.x,g.y,g.width*rg(g),g.height*cg(g),this.clipScratch);A.setScissor(c.x,c.y,c.w,c.h)}const r=this.mixedGeometryDrawCommand;r.vertexBuffer=n,r.indexBuffer=this.rgbaQuadIB,this.mixedGeometryTexturesScratch[0]=g.videoTextureHandle,this.mixedGeometryTexturesScratch.length=1,this.mixedGeometryUniformsScratch.u_projection=Q,this.mixedGeometryUniformsScratch.u_transform=e,this.mixedGeometryUniformsScratch.u_opacity=g.opacity,vg(A.draw(r),"VAP mix draw"),i==="cover"&&A.resetScissor()}drawMixedDirectGeometry(A,g){var I;const B=g.vapConfig,Q=g.vapMixState,E=g.videoTextureHandle;if(!B||!Q||Q.mode!=="direct"||!Q.resourceTextures||!E)return;this.drawGeometry(A,g);const e=Q.frameMap.get(this.getMixedFrameIndex(g,B));if(!e||e.length===0)return;const i=A.canvas.width,t=A.canvas.height;let a;this.projCache&&this.projCacheW===i&&this.projCacheH===t?a=this.projCache:(this.projCacheW=i,this.projCacheH=t,this.projCache=mg(0,i,t,0,-1,1),a=this.projCache),this.rgbaTopLeftQuadVB||(this.rgbaTopLeftQuadVB=A.createBuffer(Ug.RGBA_QUAD_VERTS_WEBGPU,"vertex")),this.rgbaQuadIB||(this.rgbaQuadIB=A.createBuffer(Ug.QUAD_INDICES,"index"));const{info:o}=B,{w:s,h:n}=BI(o,this.contentSizeScratch),r=Fg(g,s,n,this.layoutScratch);if(XA(g)==="cover"){const y=Sg(g,g.x,g.y,g.width*rg(g),g.height*cg(g),this.clipScratch);A.setScissor(y.x,y.y,y.w,y.h)}else{const y=Sg(g,g.x+r.offsetX,g.y+r.offsetY,r.width,r.height,this.clipScratch);A.setScissor(y.x,y.y,y.w,y.h)}const c=o.videoW>0?o.videoW:E.width,h=o.videoH>0?o.videoH:E.height,l=this.scratchTransform,w=this.scratchAtlasRemap,D=this.overlayDrawCommand;D.vertexBuffer=this.rgbaTopLeftQuadVB,D.indexBuffer=this.rgbaQuadIB,this.overlayUniformsScratch.u_projection=a,this.overlayUniformsScratch.u_opacity=g.opacity;for(const y of e){const R=Q.resourceTextures.get((I=y.srcKey)!=null?I:String(y.srcId));if(!R)continue;const[F,d,f,u]=y.frame,[,,G,S]=y.mFrame;if(f<=0||u<=0||G<=0||S<=0)continue;nI(g,g.x+r.offsetX+F*r.scaleX,g.y+r.offsetY+d*r.scaleY,f*r.scaleX,u*r.scaleY,l);const M=SI(y.mFrame,c,h,this.maskUVScratch);w[0]=M.left,w[1]=M.right,w[2]=M.top,w[3]=M.bottom,this.overlayTexturesScratch[0]=R,this.overlayTexturesScratch[1]=E,this.overlayTexturesScratch.length=2,vg(A.draw(D),"VAP overlay draw")}A.resetScissor()}ensureBuffer(A,g,I,B){return g?(A.updateBuffer(g,I),g):A.createBuffer(I,B)}destroy(A){this.instancedQuadVB&&A.deleteBuffer(this.instancedQuadVB),this.instancedQuadIB&&A.deleteBuffer(this.instancedQuadIB),this.quadVB&&A.deleteBuffer(this.quadVB),this.quadIB&&A.deleteBuffer(this.quadIB),this.rgbaWebGLQuadVB&&A.deleteBuffer(this.rgbaWebGLQuadVB),this.rgbaTopLeftQuadVB&&A.deleteBuffer(this.rgbaTopLeftQuadVB),this.rgbaQuadIB&&A.deleteBuffer(this.rgbaQuadIB),this.instancedQuadVB=null,this.instancedQuadIB=null,this.quadVB=null,this.quadIB=null,this.rgbaWebGLQuadVB=null,this.rgbaTopLeftQuadVB=null,this.rgbaQuadIB=null,this.lastWcFrameRef.clear(),this.processedHtmlGatesScratch.clear(),this.projCache=null,this.projCacheW=0,this.projCacheH=0}getMixedFrameIndex(A,g){var I,B,Q;if(A.webcodecsPlayback)return Math.max(0,Math.round(((I=A.wcPlaybackTime)!=null?I:0)*g.info.fps));const E=this.htmlGate.getFrameInfo(A.id),e=E==null?void 0:E.mediaTime;return typeof e=="number"&&Number.isFinite(e)&&e>=0?Math.max(0,Math.round(e*g.info.fps)):Math.max(0,Math.round(((Q=(B=A.videoElement)==null?void 0:B.currentTime)!=null?Q:0)*g.info.fps))}getHtmlVideoGateId(A){return A.releaseSharedVideoTexture&&A.videoTextureHandle?`shared:${A.videoTextureHandle.id}`:A.id}};O(AB,"QUAD_VERTS",new Float32Array([0,0,.5,1,1,0,1,1,1,1,1,0,0,1,.5,0]));O(AB,"RGBA_QUAD_VERTS_WEBGL",new Float32Array([0,0,0,1,1,0,1,1,1,1,1,0,0,1,0,0]));O(AB,"RGBA_QUAD_VERTS_WEBGPU",new Float32Array([0,0,0,0,1,0,1,0,1,1,1,1,0,1,0,1]));O(AB,"QUAD_INDICES",new Uint32Array([0,1,2,0,2,3]));let KE=AB;var Xa=Object.defineProperty,Oa=(C,A,g)=>A in C?Xa(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,sA=(C,A,g)=>Oa(C,typeof A!="symbol"?A+"":A,g);const dQ=1024,GQ=12,bC=class KI{constructor(A){sA(this,"quadVB",null),sA(this,"quadIB",null),sA(this,"instancePackScratch",new Float32Array(dQ*GQ)),sA(this,"projCacheW",0),sA(this,"projCacheH",0),sA(this,"projCache",null),sA(this,"scratchTransform",new Float32Array(16)),sA(this,"contentSizeScratch",{w:0,h:0}),sA(this,"layoutScratch",{scaleX:1,scaleY:1,width:0,height:0,offsetX:0,offsetY:0}),sA(this,"clipScratch",{x:0,y:0,w:0,h:0}),sA(this,"wcDbgFirstDraw",new Set),sA(this,"wcDbgNullWarns",new Map),sA(this,"htmlGate"),sA(this,"lastWcFrameRef",new Map),sA(this,"scratchAtlasRemap",new Float32Array(4)),sA(this,"processedHtmlGatesScratch",new Set),sA(this,"instancedTexturesScratch",[]),sA(this,"instancedUniformsScratch",{u_projection:new Float32Array(16),u_video:0}),sA(this,"instancedDrawCommand",{shader:"alpha-video-instanced",vertexBuffer:null,indexBuffer:null,indexCount:6,instanceCount:0,instanceData:this.instancePackScratch,textures:this.instancedTexturesScratch,uniforms:this.instancedUniformsScratch}),sA(this,"geometryTexturesScratch",[]),sA(this,"geometryUniformsScratch",{u_projection:new Float32Array(16),u_transform:this.scratchTransform,u_atlasRemap:this.scratchAtlasRemap,u_opacity:1,u_rgbPremultiplied:1,u_video:0}),sA(this,"geometryDrawCommand",{shader:"alpha-video",vertexBuffer:null,indexBuffer:null,indexCount:6,textures:this.geometryTexturesScratch,uniforms:this.geometryUniformsScratch}),this.htmlGate=new NE(A)}static alphaVideoContentSize(A,g){if(A.webcodecsPlayback){const E=A.webcodecsPlayback.videoWidth,e=A.webcodecsPlayback.videoHeight;return g.w=E>0?E*.5:0,g.h=e,g}const I=A.videoElement,B=I.videoWidth,Q=I.videoHeight;return g.w=B>0?B*.5:0,g.h=Q,g}syncVideoTextures(A,g){var I,B,Q;let E=!1;const e=this.processedHtmlGatesScratch;e.clear();for(const i of g.values()){if(i.type!=="alphaVideo"||i.paused||i.state!=="playing"&&i.state!=="fly"||!i.videoTextureHandle)continue;const t=i.webcodecsPlayback;if(t){const a=(I=i.wcPlaybackTime)!=null?I:0,o=t.getFrameForTime(a);if(this.wcDbgFirstDraw.has(i.id)||(this.wcDbgFirstDraw.add(i.id),console.info("[GiftStage:WC] alphaVideo first draw",{giftId:i.id,state:i.state,t:a,hasFrame:!!o,canvasBuf:`${A.canvas.width}x${A.canvas.height}`})),o){const s=i.webcodecsSurface;if(((Q=s==null?void 0:s.lastUploadedFrame)!=null?Q:this.lastWcFrameRef.get(i.id))!==o){const r=i.wcAtlasRect;r?A.updateTextureRegion(i.videoTextureHandle,o,r.x,r.y,r.w,r.h):A.updateTexture(i.videoTextureHandle,o),s?s.lastUploadedFrame=o:this.lastWcFrameRef.set(i.id,o),E=!0}}else{const s=((B=this.wcDbgNullWarns.get(i.id))!=null?B:0)+1;this.wcDbgNullWarns.set(i.id,s),s<=5&&console.warn("[GiftStage:WC] alphaVideo getFrameForTime null",{giftId:i.id,t:a,n:s})}}else if(i.videoElement){const a=this.getHtmlVideoGateId(i);if(e.has(a))continue;e.add(a),this.htmlGate.preUpload(a,i.videoElement)&&(A.updateTexture(i.videoTextureHandle,i.videoElement),E=!0)}}return E}draw(A,g){if(A.type==="webgpu"||A.type==="webgl2"){this.drawInstancedAlphaBatches(A,g);return}for(const I of g.values())I.type==="alphaVideo"&&(I.state!=="playing"&&I.state!=="fly"&&I.state!=="stopped"||!I.videoElement&&!I.webcodecsPlayback||!I.videoTextureHandle||this.drawGeometry(A,I))}drawSlot(A,g){g.type==="alphaVideo"&&(g.state!=="playing"&&g.state!=="fly"&&g.state!=="stopped"||!g.videoElement&&!g.webcodecsPlayback||!g.videoTextureHandle||this.drawGeometry(A,g))}drawInstancedAlphaBatches(A,g){var I;let B=null,Q=0,E=null;const e=this.instancePackScratch;for(const i of g.values()){if(i.type!=="alphaVideo"||i.state!=="playing"&&i.state!=="fly"&&i.state!=="stopped"||!i.videoElement&&!i.webcodecsPlayback||!i.videoTextureHandle)continue;if(XA(i)==="cover"||((I=i.rotation)!=null?I:0)!==0){B&&Q>0&&E&&(this.flushInstancedBatch(A,B,Q,E),B=null,Q=0),this.drawGeometry(A,i);continue}const t=i.videoTextureHandle;B&&B.id!==t.id&&Q>0&&E&&(this.flushInstancedBatch(A,B,Q,E),B=null,Q=0),B||(this.ensureQuadBuffers(A),E=this.getProjection(A),B=t),this.fillAlphaInstanceData(i,e,Q*GQ),Q++,Q===dQ&&(this.flushInstancedBatch(A,B,Q,E),B=null,Q=0)}B&&Q>0&&E&&this.flushInstancedBatch(A,B,Q,E)}flushInstancedBatch(A,g,I,B){const Q=this.instancedDrawCommand;Q.vertexBuffer=this.quadVB,Q.indexBuffer=this.quadIB,Q.instanceCount=I,this.instancedTexturesScratch[0]=g,this.instancedTexturesScratch.length=1,this.instancedUniformsScratch.u_projection=B,vg(A.draw(Q),"alpha-video instanced draw")}fillAlphaInstanceData(A,g,I){const B=KI.alphaVideoContentSize(A,this.contentSizeScratch),Q=Fg(A,B.w,B.h,this.layoutScratch);g[I+0]=A.x+Q.offsetX,g[I+1]=A.y+Q.offsetY,g[I+2]=Q.width,g[I+3]=Q.height;const E=A.videoTextureHandle,e=kB(E.width,E.height,A.wcAtlasRect,this.scratchAtlasRemap);g.set(e,I+4),g[I+8]=A.opacity,g[I+9]=A.options.videoRGBAlphaMode!=="straight"?1:0,g[I+10]=0,g[I+11]=0}releaseHtmlVideo(A){var g;this.htmlGate.release(this.getHtmlVideoGateId(A),(g=A.videoElement)!=null?g:void 0)}clearWebCodecsFrameRef(A){this.lastWcFrameRef.delete(A),this.wcDbgFirstDraw.delete(A),this.wcDbgNullWarns.delete(A)}getHtmlVideoGateId(A){return A.releaseSharedVideoTexture&&A.videoTextureHandle?`shared:${A.videoTextureHandle.id}`:A.id}drawGeometry(A,g){const I=this.getProjection(A),B=this.scratchTransform,Q=XA(g),E=KI.alphaVideoContentSize(g,this.contentSizeScratch),e=Fg(g,E.w,E.h,this.layoutScratch);nI(g,g.x+e.offsetX,g.y+e.offsetY,e.width,e.height,B),this.ensureQuadBuffers(A);const i=g.videoTextureHandle,t=kB(i.width,i.height,g.wcAtlasRect,this.scratchAtlasRemap),a=this.geometryDrawCommand;if(a.vertexBuffer=this.quadVB,a.indexBuffer=this.quadIB,this.geometryTexturesScratch[0]=i,this.geometryTexturesScratch.length=1,this.geometryUniformsScratch.u_projection=I,this.geometryUniformsScratch.u_transform=B,this.geometryUniformsScratch.u_atlasRemap=t,this.geometryUniformsScratch.u_opacity=g.opacity,this.geometryUniformsScratch.u_rgbPremultiplied=g.options.videoRGBAlphaMode!=="straight"?1:0,Q==="cover"){const o=Sg(g,g.x,g.y,g.width*rg(g),g.height*cg(g),this.clipScratch);A.setScissor(o.x,o.y,o.w,o.h)}vg(A.draw(a),"alpha-video draw"),Q==="cover"&&A.resetScissor()}ensureQuadBuffers(A){this.quadVB||(this.quadVB=A.createBuffer(KI.QUAD_VERTS,"vertex"),this.quadIB=A.createBuffer(KI.QUAD_INDICES,"index"))}getProjection(A){const g=A.canvas.width,I=A.canvas.height;return this.projCache&&this.projCacheW===g&&this.projCacheH===I?this.projCache:(this.projCacheW=g,this.projCacheH=I,this.projCache=mg(0,g,I,0,-1,1),this.projCache)}destroy(A){this.quadVB&&A.deleteBuffer(this.quadVB),this.quadIB&&A.deleteBuffer(this.quadIB),this.quadVB=null,this.quadIB=null,this.projCache=null,this.projCacheW=0,this.projCacheH=0,this.lastWcFrameRef.clear(),this.processedHtmlGatesScratch.clear()}};sA(bC,"QUAD_VERTS",new Float32Array([0,0,.5,1,1,0,1,1,1,1,1,0,0,1,.5,0]));sA(bC,"QUAD_INDICES",new Uint32Array([0,1,2,0,2,3]));let mE=bC;var Pa=Object.defineProperty,ja=(C,A,g)=>A in C?Pa(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,ig=(C,A,g)=>ja(C,typeof A!="symbol"?A+"":A,g);const qC=class GC{constructor(){ig(this,"quadVB",null),ig(this,"quadIB",null),ig(this,"scratchTransform",new Float32Array(16)),ig(this,"layoutScratch",{scaleX:1,scaleY:1,width:0,height:0,offsetX:0,offsetY:0}),ig(this,"clipScratch",{x:0,y:0,w:0,h:0}),ig(this,"projCacheW",0),ig(this,"projCacheH",0),ig(this,"projCache",null),ig(this,"texturesScratch",[]),ig(this,"uniformsScratch",{u_projection:new Float32Array(16),u_transform:this.scratchTransform,u_atlasRemap:UE,u_opacity:1,u_video:0}),ig(this,"drawCommand",{shader:"rgba-textured",vertexBuffer:null,indexBuffer:null,indexCount:6,textures:this.texturesScratch,uniforms:this.uniformsScratch})}drawSlot(A,g){if(g.type!=="image"||!g.imageTextureHandle||g.state!=="playing"&&g.state!=="fly"&&g.state!=="stopped")return;const I=g.imageTextureHandle,B=Fg(g,I.width,I.height,this.layoutScratch),Q=g.x+B.offsetX,E=g.y+B.offsetY;nI(g,Q,E,B.width,B.height,this.scratchTransform);let e=this.quadVB;e||(e=A.createBuffer(GC.QUAD_VERTS,"vertex"),this.quadVB=e),this.quadIB||(this.quadIB=A.createBuffer(GC.QUAD_INDICES,"index"));const i=A.canvas.width,t=A.canvas.height;(!this.projCache||this.projCacheW!==i||this.projCacheH!==t)&&(this.projCacheW=i,this.projCacheH=t,this.projCache=mg(0,i,t,0,-1,1));const a=XA(g)==="cover";if(a){const o=Sg(g,g.x,g.y,g.width*rg(g),g.height*cg(g),this.clipScratch);A.setScissor(o.x,o.y,o.w,o.h)}this.drawCommand.vertexBuffer=e,this.drawCommand.indexBuffer=this.quadIB,this.texturesScratch[0]=I,this.texturesScratch.length=1,this.uniformsScratch.u_projection=this.projCache,this.uniformsScratch.u_opacity=g.opacity,vg(A.draw(this.drawCommand),"image draw"),a&&A.resetScissor()}destroy(A){this.quadVB&&A.deleteBuffer(this.quadVB),this.quadIB&&A.deleteBuffer(this.quadIB),this.quadVB=null,this.quadIB=null,this.projCache=null}};ig(qC,"QUAD_VERTS",new Float32Array([0,0,0,0,1,0,1,0,1,1,1,1,0,1,0,1]));ig(qC,"QUAD_INDICES",new Uint32Array([0,1,2,0,2,3]));let JE=qC;var za=Object.defineProperty,_a=(C,A,g)=>A in C?za(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,rB=(C,A,g)=>_a(C,typeof A!="symbol"?A+"":A,g);class LE{constructor(){rB(this,"animations",new Map),rB(this,"completedScratch",[]),rB(this,"individuallyPaused",new Set),rB(this,"globallyPaused",!1)}startFly(A,g,I,B,Q,E,e,i=A.opacity,t=(a=>(a=A.rotation)!=null?a:0)()){this.startTween(A,g,I,B,Q,E,e,void 0,i,t)}startTween(A,g,I,B,Q,E,e,i,t=A.opacity,a=(o=>(o=A.rotation)!=null?o:0)()){var o;this.cancelForGift(A.id),this.animations.set(A.id,{giftId:A.id,startX:A.x,startY:A.y,startScale:A.scale,startOpacity:A.opacity,startRotation:(o=A.rotation)!=null?o:0,targetX:g,targetY:I,targetScale:B,targetOpacity:t,targetRotation:a,startTime:-1,pausedAt:this.globallyPaused||this.individuallyPaused.has(A.id)?performance.now():void 0,duration:Q,easing:E,onComplete:e,onCancel:i})}startTweenPromise(A,g,I,B,Q,E,e,i=A.opacity,t=(a=>(a=A.rotation)!=null?a:0)()){return new Promise(a=>{this.startTween(A,g,I,B,Q,E,()=>{e==null||e(),a()},a,i,t)})}startSequence(A,g){return this.cancelForGift(A.id),g.length===0?Promise.resolve():new Promise(I=>{let B=0;const Q=()=>{var E,e;const i=g[B++];if(!i){I();return}this.startTween(A,i.targetX,i.targetY,i.targetScale,i.duration,i.easing,()=>{var t;(t=i.onComplete)==null||t.call(i),Q()},void 0,i.targetOpacity,(e=(E=i.targetRotation)!=null?E:A.rotation)!=null?e:0)};Q()})}update(A){var g,I;const B=this.completedScratch;B.length=0;for(const[Q,E]of this.animations){E.startTime<0&&(E.startTime=A);const e=(g=E.pausedAt)!=null?g:A;uB((e-E.startTime)/E.duration,0,1)>=1&&(this.animations.delete(Q),B.push(E))}for(const Q of B)(I=Q.onComplete)==null||I.call(Q);B.length=0}getAnimatedState(A,g){var I;const B=this.animations.get(A);if(!B)return null;B.startTime<0&&(B.startTime=g);const Q=uB((((I=B.pausedAt)!=null?I:g)-B.startTime)/B.duration,0,1),E=B.easing(Q);return{x:lg(B.startX,B.targetX,E),y:lg(B.startY,B.targetY,E),scale:lg(B.startScale,B.targetScale,E),opacity:lg(B.startOpacity,B.targetOpacity,E),rotation:lg(B.startRotation,B.targetRotation,E)}}applyAnimatedState(A,g){var I;const B=this.animations.get(A.id);if(!B)return!1;B.startTime<0&&(B.startTime=g);const Q=uB((((I=B.pausedAt)!=null?I:g)-B.startTime)/B.duration,0,1),E=B.easing(Q);return A.x=lg(B.startX,B.targetX,E),A.y=lg(B.startY,B.targetY,E),A.scale=lg(B.startScale,B.targetScale,E),A.opacity=lg(B.startOpacity,B.targetOpacity,E),A.rotation=lg(B.startRotation,B.targetRotation,E),!0}hasAnimation(A){return this.animations.has(A)}hasActiveAnimations(){return this.animations.size>0}hasRunningAnimations(){for(const A of this.animations.values())if(A.pausedAt==null)return!0;return!1}pauseForGift(A,g=performance.now()){this.individuallyPaused.add(A);const I=this.animations.get(A);!I||I.pausedAt!=null||(I.pausedAt=g)}resumeForGift(A,g=performance.now()){if(this.individuallyPaused.delete(A),this.globallyPaused)return;const I=this.animations.get(A);!I||I.pausedAt==null||(I.startTime>=0&&(I.startTime+=g-I.pausedAt),I.pausedAt=void 0)}pauseAll(A=performance.now()){this.globallyPaused=!0;for(const g of this.animations.values())g.pausedAt==null&&(g.pausedAt=A)}resumeAll(A=performance.now()){this.globallyPaused=!1;for(const[g,I]of this.animations)this.individuallyPaused.has(g)||I.pausedAt!=null&&(I.startTime>=0&&(I.startTime+=A-I.pausedAt),I.pausedAt=void 0)}cancelForGift(A){var g;const I=this.animations.get(A);I&&(this.animations.delete(A),(g=I.onCancel)==null||g.call(I))}releaseGift(A){this.cancelForGift(A),this.individuallyPaused.delete(A)}destroy(){this.animations.clear(),this.individuallyPaused.clear(),this.globallyPaused=!1,this.completedScratch.length=0}}var $a=Object.defineProperty,Ao=(C,A,g)=>A in C?$a(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,aI=(C,A,g)=>Ao(C,typeof A!="symbol"?A+"":A,g);class HE{constructor(){aI(this,"ctx",null),aI(this,"decodedCache",new Map),aI(this,"activeSources",[]),aI(this,"globalMute",!1),aI(this,"suspended",!1),aI(this,"gainNode",null)}ensureContext(){return this.ctx||(this.ctx=new AudioContext,this.gainNode=this.ctx.createGain(),this.gainNode.connect(this.ctx.destination),this.globalMute&&(this.gainNode.gain.value=0)),this.ctx.state==="suspended"&&this.ctx.resume().catch(()=>{}),this.ctx}async decodeAudio(A,g){if(this.decodedCache.has(A))return;const I=this.ensureContext();try{const B=await I.decodeAudioData(g.slice(0));this.decodedCache.set(A,B)}catch(B){}}tickFrame(A,g){if(A.videoEntity&&!A.options.mute&&!(this.suspended||A.paused)){for(const I of A.videoEntity.audios)g===I.startFrame&&this.startAudio(A.id,I);for(let I=this.activeSources.length-1;I>=0;I--){const B=this.activeSources[I];if(B.giftId===A.id&&g>=B.endFrame){try{B.source.stop()}catch(Q){}B.source.disconnect(),this.activeSources.splice(I,1)}}}}tickFrameForKey(A,g,I){if(A.videoEntity&&!A.options.mute&&!(this.suspended||A.paused))for(const B of A.videoEntity.audios)B.audioKey===I&&g===B.startFrame&&this.startAudio(A.id,B)}syncPlaybackScopeFrame(A,g,I=!1){var B,Q;const E=A.videoEntity,e=(B=E==null?void 0:E.params.frames)!=null?B:0,i=(Q=E==null?void 0:E.params.fps)!=null?Q:0;if(!E||!(e>0)||!(i>0)||!Number.isFinite(g)||this.suspended||A.paused||A.options.mute){this.stopAllForGift(A.id);return}const t=Math.max(0,Math.floor(g/e)),a=g-t*e,o=new Map;E.audios.forEach((s,n)=>{if(a<s.startFrame||a>=s.endFrame)return;const r=`${n}:${s.audioKey}:${s.startFrame}:${s.endFrame}`;o.set(r,{audio:s,offsetMs:s.startTime+(a-s.startFrame)/i*1e3})}),I&&this.stopAllForGift(A.id);for(let s=this.activeSources.length-1;s>=0;s--){const n=this.activeSources[s];if(n.giftId===A.id){if(n.loopIndex===t&&n.scheduleKey&&o.has(n.scheduleKey)){o.delete(n.scheduleKey);continue}this.stopSourceAt(s)}}for(const[s,n]of o)this.startAudio(A.id,n.audio,n.offsetMs,s,t)}startAudio(A,g,I=g.startTime,B,Q){var E;const e=this.decodedCache.get(g.audioKey);if(!e)return;const i=this.ensureContext(),t=i.createBufferSource();t.buffer=e,t.connect((E=this.gainNode)!=null?E:i.destination);const a=Number.isFinite(e.duration)?e.duration:Number.POSITIVE_INFINITY,o=Math.max(0,I/1e3);if(o>=a){t.disconnect();return}try{t.start(0,o)}catch(s){t.disconnect();return}t.onended=()=>{t.disconnect();const s=this.activeSources.findIndex(n=>n.source===t&&n.giftId===A);s>=0&&this.activeSources.splice(s,1)},this.activeSources.push({source:t,endFrame:g.endFrame,giftId:A,scheduleKey:B,loopIndex:Q})}stopSourceAt(A){const g=this.activeSources[A];if(g){try{g.source.stop()}catch(I){}g.source.disconnect(),this.activeSources.splice(A,1)}}stopAllForGift(A){for(let g=this.activeSources.length-1;g>=0;g--)this.activeSources[g].giftId===A&&this.stopSourceAt(g)}setMute(A){this.globalMute=A,this.gainNode&&(this.gainNode.gain.value=A?0:1)}setSuspended(A){if(this.suspended=A,!!A)for(let g=this.activeSources.length-1;g>=0;g--)this.stopSourceAt(g)}destroy(){var A;for(const g of this.activeSources){try{g.source.stop()}catch(I){}g.source.disconnect()}this.activeSources=[],this.decodedCache.clear(),(A=this.ctx)==null||A.close().catch(()=>{}),this.ctx=null,this.gainNode=null}}var go=Object.defineProperty,Io=(C,A,g)=>A in C?go(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,oI=(C,A,g)=>Io(C,typeof A!="symbol"?A+"":A,g);class Bo{constructor(A,g){oI(this,"atlasW"),oI(this,"atlasH"),oI(this,"rowY",0),oI(this,"rowH",0),oI(this,"rowX",0),oI(this,"slots",new Map),this.atlasW=Math.max(64,Math.floor(A)),this.atlasH=Math.max(64,Math.floor(g))}get size(){return{w:this.atlasW,h:this.atlasH}}tryAllocate(A,g,I){const B=Math.max(1,Math.ceil(g)),Q=Math.max(1,Math.ceil(I));if(B>this.atlasW||Q>this.atlasH||(this.rowX+B>this.atlasW&&(this.rowY+=this.rowH,this.rowX=0,this.rowH=0),this.rowY+Q>this.atlasH))return null;const E={x:this.rowX,y:this.rowY,w:B,h:Q};return this.slots.set(A,E),this.rowX+=B,this.rowH=Math.max(this.rowH,Q),E}release(A){this.slots.delete(A)}getRect(A){return this.slots.get(A)}}function Co(C){const A=/^(-?\d+(?:\.\d+)?)%$/.exec(C.trim());if(!A)return null;const g=Number(A[1]);return Number.isFinite(g)?g:null}function uQ(C,A,g){if(typeof C=="number")return C;const I=Co(C);if(I==null)throw new Error(`Invalid percentage coordinate: ${C}`);return A*I/100-g/2}function xE(C,A,g,I,B,Q){return{x:uQ(C,B,g),y:uQ(A,Q,I)}}var Qo=Object.defineProperty,Eo=(C,A,g)=>A in C?Qo(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,MA=(C,A,g)=>Eo(C,typeof A!="symbol"?A+"":A,g);const RQ=16,fQ=24,eo=4,io=8,SQ=8192,to=new Float32Array([-.5,-.5,.5,-.5,.5,.5,-.5,.5]),ao=new Uint32Array([0,1,2,0,2,3]);class bE extends Error{constructor(A,g){super(g),this.group=A,this.name="ParticleBatchGroupDrawError"}}class qE{constructor(A,g){MA(this,"backend"),MA(this,"batches",new Set),MA(this,"groups",new Set),MA(this,"atlases",new Map),MA(this,"onRuntimeDiagnostic"),MA(this,"quadVB",null),MA(this,"quadIB",null),MA(this,"nextOrder",0),MA(this,"projW",0),MA(this,"projH",0),MA(this,"projection",null),MA(this,"backendLost",!1),MA(this,"destroyed",!1),MA(this,"drawOrderDirty",!0),MA(this,"behindDrawOrder",[]),MA(this,"aboveDrawOrder",[]),MA(this,"cssScaleUniform",new Float32Array([1,1])),MA(this,"uniforms",{u_projection:new Float32Array(16),u_time:0,u_particleSize:8,u_globalAlpha:1,u_sizeEnvelope:1,u_fadeMode:1,u_cssScale:new Float32Array([1,1])}),MA(this,"command",{shader:"particle-instanced",vertexBuffer:null,indexBuffer:null,indexCount:6,textures:[],uniforms:this.uniforms}),this.backend=A,this.onRuntimeDiagnostic=g}async createAtlas(A){var g,I,B;if(this.assertAvailable(),this.backend.type==="webgl1")throw new Error("ParticleAtlas requires WebGPU or WebGL2");const Q=Math.floor(A.width),E=Math.floor(A.height),e=Math.max(1,(g=this.backend.maxTextureSize)!=null?g:4096);if(!Number.isFinite(Q)||!Number.isFinite(E)||Q<1||E<1)throw new Error("ParticleAtlas dimensions must be positive integers");if(Q>e||E>e)throw new Error(`ParticleAtlas exceeds backend max texture size ${e}`);if(A.colorSpace!=="srgb"||A.alphaMode!=="premultiplied")throw new Error("ParticleAtlas requires premultiplied sRGB RGBA8 pixels");const i=Q*E*4;if(A.pixels.length!==i)throw new Error(`ParticleAtlas pixels length must be ${i}`);const t=new Uint8Array(i);t.set(A.pixels),await((B=(I=this.backend).prepareParticleSpritePipelines)==null?void 0:B.call(I)),this.assertAvailable();const a=this.backend.createTexture(t.buffer,{width:Q,height:E,format:"rgba8",filter:"linear",wrap:"clamp",sourcePremultiplied:!0}),o=this;let s;const n={width:Q,height:E,get destroyed(){return s.callerReleased},get lost(){return s.lost},destroy(){o.releaseAtlasCaller(s)}};return s={handle:n,texture:a,refs:1,callerReleased:!1,lost:!1},this.atlases.set(n,s),n}createBatch(A){this.assertAvailable(),this.validateDescriptor(A);const g=this.createGroupRecord();let I=null;try{return I=this.stageRecord(A,g),g.batches.add(I),this.groups.add(g),this.batches.add(I),this.drawOrderDirty=!0,I}catch(B){throw I&&this.disposeStagedRecord(I),g._destroyed=!0,B}}createBatchGroup(A){if(this.assertAvailable(),!Array.isArray(A)||A.length<1)throw new Error("ParticleBatchGroup requires at least one descriptor");for(const B of A)this.validateDescriptor(B);const g=this.createGroupRecord(),I=[];try{for(const B of A)I.push(this.stageRecord(B,g));for(const B of I)g.batches.add(B);this.groups.add(g);for(const B of I)this.batches.add(B);return this.drawOrderDirty=!0,g}catch(B){for(let Q=I.length-1;Q>=0;Q--)this.disposeStagedRecord(I[Q]);throw g._destroyed=!0,B}}get activeCount(){return this.batches.size}rebuildDrawOrder(){if(!this.drawOrderDirty)return;this.behindDrawOrder.length=0,this.aboveDrawOrder.length=0;for(const g of this.batches)(g.compositeLayer==="behind-media"?this.behindDrawOrder:this.aboveDrawOrder).push(g);const A=(g,I)=>g.zIndex-I.zIndex||g.order-I.order;this.behindDrawOrder.sort(A),this.aboveDrawOrder.sort(A),this.drawOrderDirty=!1}draw(A="above-media"){if(this.batches.size===0||this.backendLost||this.destroyed)return;this.quadVB||(this.quadVB=this.backend.createBuffer(to,"vertex")),this.quadIB||(this.quadIB=this.backend.createBuffer(ao,"index"));const g=this.backend.canvas.width,I=this.backend.canvas.height;(!this.projection||this.projW!==g||this.projH!==I)&&(this.projW=g,this.projH=I,this.projection=mg(0,g,I,0,-1,1)),this.command.vertexBuffer=this.quadVB,this.command.indexBuffer=this.quadIB,this.uniforms.u_projection=this.projection,this.rebuildDrawOrder();const B=A==="behind-media"?this.behindDrawOrder:this.aboveDrawOrder;for(const Q of B)if(!(Q.destroyed||Q.group.destroyed||Q.group.faulted||Q.count<=0||Q.evaluatedOpacity<=0)){this.uniforms.u_time=Q.timeMs/1e3,this.uniforms.u_particleSize=Q.particleSize,this.uniforms.u_globalAlpha=Q.evaluatedOpacity,this.uniforms.u_sizeEnvelope=Q.format==="sprite-v2"?Q.header[2]:1,this.uniforms.u_fadeMode=Q.format==="sprite-v2"?Q.header[3]:1,this.cssScaleUniform[0]=Q.format==="sprite-v2"?Q.header[4]:1,this.cssScaleUniform[1]=Q.format==="sprite-v2"?Q.header[5]:1,this.uniforms.u_cssScale=this.cssScaleUniform,this.command.shader=Q.format==="sprite-v2"?"particle-sprite-instanced":"particle-instanced",this.command.instanceCount=Q.count,this.command.instanceBuffer=Q.instanceBuffer,this.command.particleBlend=Q.blend,this.command.textures=Q.textures;try{vg(this.backend.draw(this.command),`${Q.format} particle draw`)}catch(E){this.faultGroup(Q.group,E)}}}prepareFrame(){if(this.batches.size===0||this.backendLost||this.destroyed)return;const{sx:A,sy:g}=Zg(this.backend.canvas);for(const I of this.groups)if(!(I._destroyed||I._faulted)){for(const B of I.batches)this.syncRecordCssScale(B,A,g)&&(I.dirty=!0);if(I.dirty){for(const B of I.batches)this.updateRecordHeader(B);try{for(const B of I.batches)this.backend.updateBuffer(B.instanceBuffer,B.header,0);I.dirty=!1}catch(B){this.faultGroup(I,B)}}}}onBackendLoss(){if(!this.backendLost){this.backendLost=!0;for(const A of this.atlases.values())A.lost=!0;for(const A of this.groups)A._faulted=!0;this.quadVB=null,this.quadIB=null,this.projection=null}}destroy(){if(!this.destroyed){for(const A of Array.from(this.groups))A.destroy();this.backendLost||(this.quadVB&&this.backend.deleteBuffer(this.quadVB),this.quadIB&&this.backend.deleteBuffer(this.quadIB)),this.quadVB=null,this.quadIB=null,this.projection=null,this.destroyed=!0;for(const A of this.atlases.values())A.callerReleased=!0,A.lost||(A.lost=this.backendLost),A.refs=0,this.backendLost||this.backend.deleteTexture(A.texture);this.atlases.clear()}}assertAvailable(){if(this.destroyed)throw new Error("ParticleBatchRenderer is destroyed");if(this.backendLost)throw new Error("ParticleBatch backend is lost")}validateDescriptor(A){var g,I,B;if(this.backend.type==="webgl1")throw new Error("ParticleBatch requires WebGPU or WebGL2");const Q=Math.floor(A.count);if(!Number.isFinite(A.count)||Q!==A.count||Q<0)throw new Error("ParticleBatch count must be a non-negative integer");if(Q>SQ)throw new Error(`ParticleBatch count exceeds backend capacity ${SQ}`);const e=((g=A.format)!=null?g:"ballistic-v1")==="sprite-v2"?fQ:RQ;if(A.instances.length!==Q*e)throw new Error(`ParticleBatch instances length must be ${Q*e}`);for(const i of A.instances)if(!Number.isFinite(i))throw new Error("ParticleBatch instances must be finite");if(A.format==="sprite-v2"){const i=this.atlases.get(A.atlas);if(!i||i.callerReleased||i.lost)throw new Error("ParticleBatch sprite atlas is destroyed or lost");this.validateEnvelope((I=A.envelope)==null?void 0:I.opacity,"opacity"),this.validateEnvelope((B=A.envelope)==null?void 0:B.size,"size");for(let t=0;t<Q;t++){const a=t*fQ,o=A.instances[a+16],s=A.instances[a+17],n=A.instances[a+18],r=A.instances[a+19],c=A.instances[a+20],h=A.instances[a+21],l=A.instances[a+22],w=A.instances[a+23];if(o<0||s<0)throw new Error("sprite-v2 dimensions must be non-negative");if(n<0||n>1||r<0||r>1)throw new Error("sprite-v2 anchors must be normalized");if(c<0||h<0||l>1||w>1||!(c<l)||!(h<w))throw new Error("sprite-v2 UV rectangle is invalid")}}}validateEnvelope(A,g){if(!A)return;let I=-1/0;for(const B of A){if(![B.startMs,B.endMs,B.from,B.to].every(Number.isFinite)||!(B.endMs>B.startMs)||B.startMs<I)throw new Error(`ParticleBatch ${g} envelope is invalid`);if(B.interpolation&&B.interpolation!=="linear"&&B.interpolation!=="hold")throw new Error(`ParticleBatch ${g} envelope interpolation is invalid`);I=B.endMs}}cloneEnvelope(A){var g;return(g=A==null?void 0:A.map(I=>({...I})))!=null?g:[]}createGroupRecord(){const A=this;let g;return g={batches:new Set,_destroyed:!1,_faulted:!1,dirty:!1,diagnosticSent:!1,get count(){return g.batches.size},get destroyed(){return g._destroyed},get faulted(){return g._faulted},setTime(I){if(!g._destroyed)for(const B of g.batches)A.setRecordTime(B,I)},setOpacity(I){if(!g._destroyed)for(const B of g.batches)A.setRecordOpacity(B,I)},destroy(){A.destroyGroup(g)}},g}stageRecord(A,g){var I,B,Q,E,e,i,t,a,o,s,n;const r=(I=A.format)!=null?I:"ballistic-v1",c=r==="sprite-v2"?io:eo,h=new Float32Array(c+A.instances.length);h.set(A.instances,c);const{sx:l,sy:w}=Zg(this.backend.canvas);let D=1,y=null;if(A.format!=="sprite-v2"){for(let G=0;G<A.count;G++){const S=c+G*RQ;h[S+2]*=l,h[S+3]*=w,h[S+4]*=l,h[S+5]*=w,h[S+6]*=l,h[S+7]*=w}D=Math.max(0,(B=A.particleSize)!=null?B:8)*Math.sqrt(l*w),h[1]=D,h[2]=Math.max(0,Math.min(1,(Q=A.opacity)!=null?Q:1))}else y=this.atlases.get(A.atlas),this.retainAtlas(y),h[1]=Math.max(0,Math.min(1,(E=A.opacity)!=null?E:1)),h[2]=this.evaluateEnvelope((e=A.envelope)==null?void 0:e.size,0,1),h[3]=A.fadeMode==="none"?0:1,h[4]=l,h[5]=w,h[6]=0,h[7]=0;let R;try{R=this.backend.createBuffer(h,"storage")}catch(G){throw y&&this.releaseAtlasRetain(y),G}const F=this;let d;const f=Math.max(0,Math.min(1,(i=A.opacity)!=null?i:1)),u=A.format==="sprite-v2"?A:null;return d={count:A.count,instanceBuffer:R,format:r,atlas:y,group:g,timeMs:0,baseOpacity:f,evaluatedOpacity:f,particleSize:D,fadeMode:(u==null?void 0:u.fadeMode)==="none"?"none":"lifetime",opacityEnvelope:u?this.cloneEnvelope((t=u.envelope)==null?void 0:t.opacity):[],sizeEnvelope:u?this.cloneEnvelope((a=u.envelope)==null?void 0:a.size):[],compositeLayer:(o=A.compositeLayer)!=null?o:"above-media",zIndex:(s=A.zIndex)!=null?s:0,blend:(n=A.blend)!=null?n:"additive",order:this.nextOrder++,header:h.subarray(0,c),textures:y?[y.texture]:[],_destroyed:!1,get destroyed(){return d._destroyed},setTime(G){F.setRecordTime(d,G)},setOpacity(G){F.setRecordOpacity(d,G)},destroy(){F.destroyRecord(d)}},this.updateRecordHeader(d),d}setRecordTime(A,g){if(A._destroyed||A.group._destroyed||A.group._faulted)return;const I=Math.max(0,Number.isFinite(g)?g:0);A.timeMs!==I&&(A.timeMs=I,this.updateRecordHeader(A),A.group.dirty=!0)}setRecordOpacity(A,g){if(A._destroyed||A.group._destroyed||A.group._faulted)return;const I=Math.max(0,Math.min(1,Number.isFinite(g)?g:0));A.baseOpacity!==I&&(A.baseOpacity=I,this.updateRecordHeader(A),A.group.dirty=!0)}updateRecordHeader(A){if(A.header[0]=A.timeMs/1e3,A.format==="sprite-v2"){const g=this.evaluateEnvelope(A.opacityEnvelope,A.timeMs,1),I=this.evaluateEnvelope(A.sizeEnvelope,A.timeMs,1);A.evaluatedOpacity=Math.max(0,A.baseOpacity*g),A.header[1]=A.evaluatedOpacity,A.header[2]=Math.max(0,I),A.header[3]=A.fadeMode==="none"?0:1}else A.evaluatedOpacity=A.baseOpacity,A.header[2]=A.evaluatedOpacity}syncRecordCssScale(A,g,I){return A.format!=="sprite-v2"||A.header[4]===g&&A.header[5]===I?!1:(A.header[4]=g,A.header[5]=I,!0)}evaluateEnvelope(A,g,I){if(!(A!=null&&A.length))return I;if(g<A[0].startMs)return A[0].from;let B=A[0].from;for(const Q of A){if(g<Q.startMs)return B;if(g<Q.endMs){if(Q.interpolation==="hold")return Q.from;const E=(g-Q.startMs)/(Q.endMs-Q.startMs);return Q.from+(Q.to-Q.from)*E}B=Q.to}return B}faultGroup(A,g){var I;A._faulted=!0,A.dirty=!1;const B=g instanceof Error?g.message:String(g);if(!A.diagnosticSent){A.diagnosticSent=!0;try{(I=this.onRuntimeDiagnostic)==null||I.call(this,{type:"particle-group-failure",message:B})}catch(Q){console.error("[GiftStage] particle diagnostic observer failed",Q)}}throw new bE(A,`ParticleBatchGroup draw failed: ${B}`)}destroyGroup(A){if(!A._destroyed){A._destroyed=!0;for(const g of Array.from(A.batches))this.destroyRecord(g);this.groups.delete(A)}}destroyRecord(A){A._destroyed||(A._destroyed=!0,this.batches.delete(A),this.drawOrderDirty=!0,A.group.batches.delete(A),!this.backendLost&&!this.destroyed&&this.backend.deleteBuffer(A.instanceBuffer),A.atlas&&this.releaseAtlasRetain(A.atlas),A.group.batches.size===0&&(A.group._destroyed=!0,this.groups.delete(A.group)))}disposeStagedRecord(A){this.backendLost||this.backend.deleteBuffer(A.instanceBuffer),A.atlas&&this.releaseAtlasRetain(A.atlas),A._destroyed=!0}retainAtlas(A){if(A.callerReleased||A.lost)throw new Error("ParticleAtlas is destroyed or lost");A.refs++}releaseAtlasCaller(A){A.callerReleased||(A.callerReleased=!0,this.releaseAtlasRef(A))}releaseAtlasRetain(A){this.releaseAtlasRef(A)}releaseAtlasRef(A){A.refs=Math.max(0,A.refs-1),!(A.refs>0)&&(!A.lost&&!this.backendLost&&!this.destroyed&&this.backend.deleteTexture(A.texture),this.atlases.delete(A.handle))}}var oo=Object.defineProperty,so=(C,A,g)=>A in C?oo(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,z=(C,A,g)=>so(C,typeof A!="symbol"?A+"":A,g);class no extends Error{constructor(A,g){super(`${A} rejected (${g.reason})${g.message?`: ${g.message}`:""}`),this.operation=A,this.result=g,this.name="BackendOperationError"}}class jI{constructor(A,g,I){z(this,"backend"),z(this,"svgaBatch"),z(this,"vapRenderer"),z(this,"alphaVideoRenderer"),z(this,"imageRenderer"),z(this,"particleBatchRenderer"),z(this,"postAnimator"),z(this,"audioManager"),z(this,"slots"),z(this,"handles"),z(this,"rafId",null),z(this,"lastTime",0),z(this,"running",!1),z(this,"destroyed",!1),z(this,"globallyPaused",!1),z(this,"suspendedForHidden",!1),z(this,"forceNextDraw",!0),z(this,"pendingAtomicFrameRetry",!1),z(this,"atomicRetryUsedForGenericFailure",!1),z(this,"atomicRetryProgressEntities",new Set),z(this,"runtimeFrameAbortCount",0),z(this,"runtimeReplayFailureCount",0),z(this,"runtimeRetryFrameCount",0),z(this,"backendQuarantined",!1),z(this,"onRuntimeDiagnostic"),z(this,"onAnimationFrame",B=>{try{this.renderLoop(B)}catch(Q){if(this.destroyed)return;this.running=!1,this.rafId=null,this.lastTime=0,this.forceNextDraw=!0,this.emitRuntimeDiagnostic({type:"frame-controller-failure",message:this.runtimeErrorMessage(Q)}),console.error("[GiftStage] animation frame controller failed",Q)}}),z(this,"onHtmlVideoFrame",B=>{if(!this.destroyed&&!(this.globallyPaused||this.suspendedForHidden)){for(const Q of this.slots.values())if(Q.videoElement===B&&!Q.paused&&(Q.state==="playing"||Q.state==="fly")){this.invalidate();return}}}),z(this,"finishedSlotIdsScratch",[]),z(this,"videoRunMapScratch",new Map),z(this,"sortedSlots",[]),z(this,"visibleSlotsScratch",[]),z(this,"collapsedLayerScratch",[]),z(this,"coincidentSeenScratch",new Set),z(this,"drawRunScratch",[]),z(this,"wcAtlas",null),z(this,"wcDbgTickOnce",new Set),z(this,"advancedSharedWebCodecsScratch",new Set),z(this,"activeSharedWebCodecsScratch",new Set),z(this,"frameControllers",new Set),this.backend=A,this.onRuntimeDiagnostic=I,this.svgaBatch=new SE(()=>this.invalidate(),g,B=>this.emitRuntimeDiagnostic(B)),this.vapRenderer=new KE(this.onHtmlVideoFrame),this.alphaVideoRenderer=new mE(this.onHtmlVideoFrame),this.imageRenderer=new JE,this.particleBatchRenderer=new qE(A,B=>this.emitRuntimeDiagnostic(B)),this.postAnimator=new LE,this.audioManager=new HE,this.slots=new Map,this.handles=new Map}getRuntimeDiagnosticsSnapshot(){return{frameAbortCount:this.runtimeFrameAbortCount,replayFailureCount:this.runtimeReplayFailureCount,retryFrameCount:this.runtimeRetryFrameCount}}emitRuntimeDiagnostic(A){var g;try{(g=this.onRuntimeDiagnostic)==null||g.call(this,A)}catch(I){console.error("[GiftStage] runtime diagnostic observer failed",I)}}addSlot(A,g){this.slots.set(A.id,A),this.handles.set(A.id,g),this.insertSortedSlot(A),this.invalidate({resetClock:!0})}getHandle(A){return this.handles.get(A)}releaseSlotResources(A){var g,I,B,Q,E,e,i,t,a,o;if((g=A.loadAbortController)==null||g.abort(),A.loadAbortController=null,(I=A.detachLoadAbortSignal)==null||I.call(A),A.detachLoadAbortSignal=null,A.videoPlaybackWatchdogTimer!=null&&(clearTimeout(A.videoPlaybackWatchdogTimer),A.videoPlaybackWatchdogTimer=null),this.wcDbgTickOnce.delete(A.id),A.type==="vap"&&(this.vapRenderer.releaseHtmlVideo(A),this.vapRenderer.clearWebCodecsFrameRef(A.id),(Q=(B=A.vapMixState)==null?void 0:B.composer)==null||Q.destroy(),(E=A.vapMixState)!=null&&E.resourceTextures)){for(const s of A.vapMixState.resourceTextures.values())this.backend.deleteTexture(s);A.vapMixState.resourceTextures.clear()}if(A.type==="alphaVideo"&&(this.alphaVideoRenderer.releaseHtmlVideo(A),this.alphaVideoRenderer.clearWebCodecsFrameRef(A.id)),this.audioManager.stopAllForGift(A.id),this.postAnimator.releaseGift(A.id),A.videoEntity&&!A.releaseSharedSVGAAsset&&this.deleteSVGAAtlasTextures(A.videoEntity),A.svgaSlotTextures){for(const s of A.svgaSlotTextures.values())this.backend.deleteTexture(s.texture);A.svgaSlotTextures.clear(),A.svgaSlotTextures=void 0}A.wcAtlasRect&&!A.releaseWebCodecsSurface?(this.releaseWebCodecsAtlasAllocation(A.id),A.wcAtlasRect=void 0):A.videoTextureHandle&&!A.releaseSharedVideoTexture&&!A.releaseWebCodecsSurface&&this.backend.deleteTexture(A.videoTextureHandle),A.videoTextureHandle=null,A.imageTextureHandle&&(A.releaseSharedImageTexture?A.releaseSharedImageTexture():this.backend.deleteTexture(A.imageTextureHandle)),A.imageTextureHandle=null,A.releaseSharedImageTexture=null,(e=A.releaseWebCodecsSurface)==null||e.call(A),A.releaseWebCodecsSurface=null,A.webcodecsSurface=null,A.wcAtlasRect=void 0,A.webcodecsPlayback&&(A.releaseWebCodecsPlayback?A.releaseWebCodecsPlayback():A.webcodecsPlayback.destroy(),A.webcodecsPlayback=null),A.releaseWebCodecsPlayback=null,A.webcodecsSharedState=null,A.videoElement&&!A.releaseSharedVideoPlayback&&(A.videoElement.pause(),A.videoElement.removeAttribute("src"),A.videoElement.load(),A.videoElement.remove()),A.videoElement=null,(i=A.releaseSharedVideoPlayback)==null||i.call(A),A.releaseSharedVideoPlayback=null,(t=A.releaseSharedSVGAAsset)==null||t.call(A),A.releaseSharedSVGAAsset=null,(a=A.releaseSharedVideoTexture)==null||a.call(A),A.releaseSharedVideoTexture=null,(o=A.releaseMediaSource)==null||o.call(A),A.releaseMediaSource=null,A.vapMixState=null,A.videoEntity=null}removeSlot(A){const g=this.slots.get(A);g&&this.releaseSlotResources(g),this.slots.delete(A),this.handles.delete(A);const I=this.sortedSlots.indexOf(g);I>=0&&this.sortedSlots.splice(I,1),this.forceNextDraw=!0,!this.destroyed&&(this.slots.size===0&&!this.hasActiveFrameController()?(this.clearFrameOnce(),this.stop()):this.invalidate())}getSlot(A){return this.slots.get(A)}get activeCount(){return this.slots.size}getSlotIds(){return Array.from(this.slots.keys())}countCompatibleSVGAInstances(A){var g;let I=0;for(const B of this.slots.values())B.type==="svga"&&B.videoEntity===A&&!((g=B.svgaSlotTextures)!=null&&g.size)&&B.options.svgaFrameEvaluation!=="cpu"&&B.state!=="finished"&&I++;return I}registerFrameController(A){return this.frameControllers.add(A),this.invalidate({resetClock:!0}),()=>{this.frameControllers.delete(A),this.slots.size===0&&!this.hasActiveFrameController()&&this.stop()}}createParticleBatch(A){const g=this.particleBatchRenderer.createBatch(A);return this.invalidate(),g}async createParticleAtlas(A){return this.particleBatchRenderer.createAtlas(A)}createParticleBatchGroup(A){const g=this.particleBatchRenderer.createBatchGroup(A);return this.invalidate(),g}handleBackendLoss(){this.particleBatchRenderer.onBackendLoss()}tryAllocateWebCodecsAtlas(A,g,I,B){if(!B||B.width<=0||B.height<=0)return null;if(this.wcAtlas&&(this.wcAtlas.cfg.width!==B.width||this.wcAtlas.cfg.height!==B.height)){if(this.wcAtlas.ref>0)return null;this.backend.deleteTexture(this.wcAtlas.handle),this.wcAtlas=null}this.wcAtlas||(this.wcAtlas={cfg:{width:B.width,height:B.height},handle:this.backend.createEmptyTexture(B.width,B.height,{filter:"linear"}),alloc:new Bo(B.width,B.height),ref:0});const Q=this.wcAtlas.alloc.tryAllocate(A,g,I);return Q?(this.wcAtlas.ref++,{handle:this.wcAtlas.handle,rect:Q}):null}releaseWebCodecsAtlasAllocation(A){const g=this.wcAtlas;g&&(g.alloc.release(A),g.ref=Math.max(0,g.ref-1),g.ref<=0&&(this.backend.deleteTexture(g.handle),this.wcAtlas=null))}syncSlotLayoutFromOptions(){const{sx:A,sy:g}=Zg(this.backend.canvas);for(const I of this.slots.values()){if(this.postAnimator.hasAnimation(I.id))continue;const B=I.options,Q=xE(B.x,B.y,B.width,B.height,this.backend.canvas.clientWidth,this.backend.canvas.clientHeight);I.x=Q.x*A,I.y=Q.y*g,I.width=B.width*A,I.height=B.height*g}this.invalidate()}invalidate(A={}){this.destroyed||(this.forceNextDraw=!0,A.orderChanged&&this.sortedSlots.sort(jI.compareSlots),!(this.globallyPaused||this.suspendedForHidden||this.running)&&this.start(A.resetClock!==!1))}start(A=!0){this.destroyed||this.running||this.globallyPaused||this.suspendedForHidden||(this.running=!0,(A||this.lastTime<=0)&&(this.lastTime=performance.now()),this.rafId=requestAnimationFrame(this.onAnimationFrame))}stop(){this.running=!1,this.rafId!==null&&(cancelAnimationFrame(this.rafId),this.rafId=null)}clearFrameOnce(){this.assertBackendOperation("begin-frame",this.backend.beginFrame({stencil:!1})),this.svgaBatch.beginFrame(this.backend),this.assertBackendOperation("end-frame",this.backend.endFrame())}pause(){this.globallyPaused=!0,this.syncAudioSuspension(),this.postAnimator.pauseAll(),this.stop(),this.syncAllVideoPlayback()}resume(){this.globallyPaused=!1,this.syncAudioSuspension(),this.postAnimator.resumeAll(),(this.slots.size>0||this.hasActiveFrameController())&&this.invalidate({resetClock:!0}),this.syncAllVideoPlayback()}setHidden(A){A!==this.suspendedForHidden&&(this.suspendedForHidden=A,this.syncAudioSuspension(),A?this.stop():!this.globallyPaused&&(this.slots.size>0||this.hasActiveFrameController())&&this.invalidate({resetClock:!0}),this.syncAllVideoPlayback())}syncAllVideoPlayback(){for(const A of this.slots.values())A.videoElement&&this.syncVideoPlaybackForSlot(A)}hasActiveVideoConsumer(A,g){if(this.globallyPaused||this.suspendedForHidden)return!1;for(const I of this.slots.values())if(!(I.id===g||I.videoElement!==A)&&!I.paused&&!(I.state!=="playing"&&I.state!=="fly"))return!0;return!1}syncVideoPlaybackForSlot(A){const g=A.videoElement;if(!g)return;if(A.playbackScopeControlled){g.paused||g.pause();return}if(!this.globallyPaused&&!this.suspendedForHidden&&!A.paused&&(A.state==="playing"||A.state==="fly")){g.paused&&g.play().catch(()=>{});return}A.releaseSharedVideoPlayback&&this.hasActiveVideoConsumer(g,A.id)||g.paused||g.pause()}syncAudioSuspension(){const A=this.globallyPaused||this.suspendedForHidden;if(this.audioManager.setSuspended(A),!A)for(const g of this.slots.values()){if(g.type!=="svga"||!g.videoEntity||g.paused||g.state!=="playing"&&g.state!=="fly")continue;const I=g.videoEntity.params.fps,B=g.videoEntity.params.frames,Q=g.loopCount*B+g.currentFrame+g.accumulatedTime*I;this.audioManager.syncPlaybackScopeFrame(g,Q)}}applyPlaybackScopeMediaTime(A,g,I=!1,B=!1){var Q,E,e,i,t,a;const o=this.slots.get(A);if(!o)return;const s=Math.max(0,g)/1e3;if(o.type==="svga"&&o.videoEntity){const n=o.videoEntity.params.fps,r=o.videoEntity.params.frames;if(!(n>0)||!(r>0))return;const c=o.currentFrame,h=s*n,l=(Q=o.options.loop)!=null?Q:1;let w=!1;if(l===0){const D=Math.floor(h);o.loopCount=Math.floor(D/r),o.currentFrame=D%r,o.accumulatedTime=(h-D)/n}else{const D=Math.max(1,l)*r;if(h>=D)w=!0,o.loopCount=Math.max(1,l),o.currentFrame=r-1,o.accumulatedTime=0;else{const y=Math.floor(h);o.loopCount=Math.floor(y/r),o.currentFrame=y%r,o.accumulatedTime=(h-y)/n}}if(w?this.audioManager.stopAllForGift(o.id):this.audioManager.syncPlaybackScopeFrame(o,h,B),o.currentFrame!==c||I&&o.svgaInitialFrameEmitted!==!0){const D=this.handles.get(A);D&&((E=o.onFrame)==null||E.call(o,o.currentFrame,D)),o.svgaInitialFrameEmitted=!0}return}if(o.webcodecsPlayback){const n=o.webcodecsPlayback.duration;if(!(n>0)||!Number.isFinite(n))return;const r=(e=o.options.loop)!=null?e:1;if(r===0)o.loopCount=Math.floor(s/n),o.wcPlaybackTime=s%n;else{const c=Math.max(1,r)*n;s>=c?(o.loopCount=Math.max(1,r),o.wcPlaybackTime=Math.max(0,n-1e-6)):(o.loopCount=Math.floor(s/n),o.wcPlaybackTime=s%n)}if(o.webcodecsSharedState){const c=Math.max(0,(performance.now()-o.webcodecsSharedState.startedAtMs)/1e3);o.wcSharedTimeOffset=o.wcPlaybackTime-c}(t=(i=o.webcodecsPlayback).ensureDecodedThrough)==null||t.call(i,o.wcPlaybackTime);return}if(o.videoElement){const n=o.videoElement.duration,r=(a=o.options.loop)!=null?a:1;if(n>0&&Number.isFinite(n))if(r===0)o.loopCount=Math.floor(s/n),o.videoElement.currentTime=s%n;else{const c=Math.max(1,r)*n;s>=c?(o.loopCount=Math.max(1,r),o.videoElement.currentTime=Math.max(0,n-1e-6)):(o.loopCount=Math.floor(s/n),o.videoElement.currentTime=s%n)}else o.videoElement.currentTime=s}}releaseSVGAPreparation(A){this.svgaBatch.releaseClipPreparation(A)}get svgaClipAnalysis(){return this.svgaBatch.clipAnalysis}prewarmSVGAClipMeshes(A,g){return this.svgaBatch.prewarmClipMeshes(A,g)}prewarmSVGAClipMeshesForFrame(A,g,I){return this.svgaBatch.prewarmClipMeshesForFrame(A,g,I)}prewarmSVGAShapeMeshes(A){return this.svgaBatch.prewarmShapeMeshes(this.backend,A)}retainSVGAHybridMeshes(A){this.svgaBatch.retainHybridMeshes(this.backend,A)}releaseSVGAHybridMeshes(A){this.svgaBatch.releaseHybridMeshes(this.backend,A)}hydrateSVGAClipMeshes(A){this.svgaBatch.hydrateClipMeshes(A)}hydrateSVGAClipMeshesCooperative(A,g){return this.svgaBatch.hydrateClipMeshesCooperative(A,g)}snapshotSVGAClipMeshes(A){return this.svgaBatch.snapshotClipMeshes(A)}renderLoop(A){var g,I,B;if(this.destroyed||!this.running)return;if(this.pendingAtomicFrameRetry){if(this.pendingAtomicFrameRetry=!1,this.forceNextDraw=!1,this.lastTime=A,this.runtimeRetryFrameCount++,this.emitRuntimeDiagnostic({type:"svga-frame-retry"}),this.destroyed)return;const i=this.drawPreparedFrameWithReplay(this.getRenderOrderedSlots(),!0);if(this.destroyed)return;i&&this.resetAtomicRetryCycle(),this.scheduleNextFrame();return}const Q=Math.max(0,A-this.lastTime),E=Q/1e3;this.lastTime=A;let e=this.forceNextDraw;this.advancedSharedWebCodecsScratch.clear(),this.activeSharedWebCodecsScratch.clear();for(const i of this.frameControllers)if(i.active&&(e=i.tick(A,Q)||e),this.destroyed)return;for(const i of this.slots.values())!i.paused&&!i.playbackScopeControlled&&i.state==="playing"&&i.webcodecsPlayback&&i.webcodecsSharedState&&this.activeSharedWebCodecsScratch.add(i.webcodecsSharedState.id);for(const[i,t]of this.slots){if(t.paused||t.state==="loading"){if(t.paused&&!t.playbackScopeControlled&&t.state==="playing"&&t.webcodecsPlayback&&t.webcodecsSharedState&&this.activeSharedWebCodecsScratch.has(t.webcodecsSharedState.id)&&(this.tickSharedWebCodecs(t,A,!1),this.destroyed))return;continue}const a=this.handles.get(i);if(this.postAnimator.applyAnimatedState(t,A)&&(e=!0),this.destroyed||!t.playbackScopeControlled&&t.type==="svga"&&t.videoEntity&&t.state==="playing"&&(e=this.tickSVGA(t,E,a,A)||e,this.destroyed)||!t.playbackScopeControlled&&t.type==="image"&&t.state==="playing"&&(e=this.tickImage(t,E,a,A)||e,this.destroyed))return;if(!t.playbackScopeControlled&&(t.type==="vap"||t.type==="alphaVideo")&&t.webcodecsPlayback&&t.state==="playing"){if(t.webcodecsSharedState)this.tickSharedWebCodecs(t,A,!0);else{if(this.tickWebCodecs(t,E,a),this.destroyed)return;(B=(I=t.webcodecsPlayback).ensureDecodedThrough)==null||B.call(I,(g=t.wcPlaybackTime)!=null?g:0)}if(this.destroyed)return}}if(e=this.postAnimator.hasActiveAnimations()||e,this.postAnimator.update(A),!this.destroyed&&(e=this.removeFinished()||e,!this.destroyed&&(e=this.vapRenderer.syncVideoTextures(this.backend,this.slots)||e,!this.destroyed&&(e=this.alphaVideoRenderer.syncVideoTextures(this.backend,this.slots)||e,!this.destroyed)))){if(e){this.forceNextDraw=!1;const i=this.getRenderOrderedSlots();if(this.destroyed)return;const t=this.drawPreparedFrameWithReplay(i);if(this.destroyed)return;t&&this.resetAtomicRetryCycle()}this.scheduleNextFrame()}}drawPreparedFrameWithReplay(A,g=!1){if(this.destroyed)return!1;try{return this.drawPreparedFrame(A),!this.destroyed}catch(I){if(this.destroyed)return!1;const B=this.abortPreparedFrame(I);if(this.destroyed)return!1;if(!B)return this.recordReplayFailure(I),!1;if(!(I instanceof wI)&&!(I instanceof bE)){if(g)return this.recordReplayFailure(I),this.destroyed||console.error("[GiftStage:SVGA] scheduled atomic frame retry failed",I),!1;throw I}I instanceof wI&&this.atomicRetryProgressEntities.add(I.entity);try{return!(this.destroyed||(this.drawPreparedFrame(A),this.destroyed))}catch(Q){return this.destroyed||(this.abortPreparedFrame(Q),this.destroyed)||(this.recordReplayFailure(Q),this.destroyed)||(this.shouldScheduleAtomicRetry(Q)&&(this.pendingAtomicFrameRetry=!0,this.forceNextDraw=!0),console.error("[GiftStage:SVGA] atomic frame replay failed",Q)),!1}}}abortPreparedFrame(A){if(this.destroyed)return!1;let g=!0;if(this.svgaBatch.abortFrame(),this.destroyed||A instanceof zg&&(this.emitRuntimeDiagnostic({type:"stencil-transaction-failure",message:A.message}),this.destroyed))return!1;try{const I=this.backend.abortFrame();I.submitted||(g=!1,this.backendQuarantined=!0,this.pendingAtomicFrameRetry=!1,this.emitRuntimeDiagnostic({type:"backend-quarantined",message:`abort-frame rejected (${I.reason})${I.message?`: ${I.message}`:""}`}))}catch(I){g=!1,this.backendQuarantined=!0,this.pendingAtomicFrameRetry=!1,this.emitRuntimeDiagnostic({type:"backend-quarantined",message:this.runtimeErrorMessage(I)}),console.error("[GiftStage:SVGA] backend frame abort failed",I)}finally{this.destroyed||(this.runtimeFrameAbortCount++,this.emitRuntimeDiagnostic({type:"svga-frame-abort",message:this.runtimeErrorMessage(A)}))}return g}recordReplayFailure(A){this.runtimeReplayFailureCount++,this.emitRuntimeDiagnostic({type:"svga-frame-replay-failed",message:this.runtimeErrorMessage(A)})}shouldScheduleAtomicRetry(A){return A instanceof wI?this.atomicRetryProgressEntities.has(A.entity)?this.atomicRetryUsedForGenericFailure?!1:(this.atomicRetryUsedForGenericFailure=!0,!0):(this.atomicRetryProgressEntities.add(A.entity),!0):this.atomicRetryUsedForGenericFailure?!1:(this.atomicRetryUsedForGenericFailure=!0,!0)}resetAtomicRetryCycle(){this.pendingAtomicFrameRetry=!1,this.atomicRetryUsedForGenericFailure=!1,this.atomicRetryProgressEntities.clear()}runtimeErrorMessage(A){return A instanceof Error?A.message:String(A)}scheduleNextFrame(){if(this.destroyed){this.running=!1,this.rafId=null,this.lastTime=0;return}this.needsContinuousFrame()?this.rafId=requestAnimationFrame(this.onAnimationFrame):(this.running=!1,this.rafId=null,this.lastTime=0)}drawPreparedFrame(A){if(!this.destroyed){if(this.backendQuarantined)throw new Error("GPU backend is quarantined");this.svgaBatch.beginFrame(this.backend),!this.destroyed&&(this.assertBackendOperation("begin-frame",this.backend.beginFrame({stencil:this.svgaBatch.requiresStencil(A)})),!this.destroyed&&(this.particleBatchRenderer.prepareFrame(),!this.destroyed&&(this.particleBatchRenderer.draw("behind-media"),!this.destroyed&&(this.drawRenderLayers(A),!this.destroyed&&(this.particleBatchRenderer.draw("above-media"),!this.destroyed&&(this.svgaBatch.endFrame(),!this.destroyed&&this.assertBackendOperation("end-frame",this.backend.endFrame())))))))}}assertBackendOperation(A,g){if(!g.submitted)throw this.emitRuntimeDiagnostic({type:"backend-operation-rejected",message:`${A} rejected (${g.reason})${g.message?`: ${g.message}`:""}`}),new no(A,g)}tickSharedWebCodecs(A,g,I){var B,Q;const E=A.webcodecsSharedState;if(!E)return;const e=Math.max(E.playback.duration,1e-9),i=Math.max(0,(g-E.startedAtMs)/1e3),t=Number.isFinite(A.wcSharedTimeOffset)?A.wcSharedTimeOffset:0;if(A.wcPlaybackTime=((i+t)%e+e)%e,!!I){if(t===0){if(this.advancedSharedWebCodecsScratch.has(E.id))return;this.advancedSharedWebCodecsScratch.add(E.id)}(Q=(B=E.playback).ensureDecodedThrough)==null||Q.call(B,A.wcPlaybackTime)}}tickWebCodecs(A,g,I){var B,Q;const E=A.webcodecsPlayback;if(!E)return;const e=Math.max(E.duration,1e-9);if(!Number.isFinite(e))return;const i=(B=A.options.loop)!=null?B:1;let t=((Q=A.wcPlaybackTime)!=null?Q:0)+g;if(i===0){A.wcPlaybackTime=(t%e+e)%e,this.wcDbgLogTickOnce(A,e,A.wcPlaybackTime,i);return}const a=Math.floor(t/e);if(A.loopCount+a>=i){A.loopCount=i,A.wcPlaybackTime=e-1e-6,this.wcDbgLogTickOnce(A,e,A.wcPlaybackTime,i),this.onWebCodecsPlaybackComplete(A,I);return}A.loopCount+=a,A.wcPlaybackTime=t-a*e,this.wcDbgLogTickOnce(A,e,A.wcPlaybackTime,i)}wcDbgLogTickOnce(A,g,I,B){var Q;this.wcDbgTickOnce.has(A.id)||(this.wcDbgTickOnce.add(A.id),console.info("[GiftStage:WC] clock tick",{giftId:A.id,type:A.type,state:A.state,paused:A.paused,duration:g,wcPlaybackTime:I,loop:(Q=A.options.loop)!=null?Q:1,maxLoopsEffective:B,backend:this.backend.type,canvasCss:`${this.backend.canvas.clientWidth}x${this.backend.canvas.clientHeight}`,canvasBuf:`${this.backend.canvas.width}x${this.backend.canvas.height}`}))}onWebCodecsPlaybackComplete(A,g){var I;(I=A.onComplete)==null||I.call(A,g),A.state=A.options.clearsAfterStop===!1?"stopped":"finished"}tickSVGA(A,g,I,B){var Q,E;const e=A.videoEntity,i=e.params.fps,t=e.params.frames;if(i<=0||t<=0)return!1;const a=1/i,o=A.currentFrame;A.accumulatedTime+=g;const s=Math.floor(A.accumulatedTime/a);if(s<=0)return!1;A.accumulatedTime-=s*a;const n=(Q=A.options.loop)!=null?Q:1,r=A.loopCount*t+A.currentFrame+s;return n===0?(A.loopCount=Math.floor(r/t),A.currentFrame=r%t):r>=n*t?(A.loopCount=n,A.currentFrame=t-1,this.onGiftPlayComplete(A,I,B)):(A.loopCount=Math.floor(r/t),A.currentFrame=r%t),A.currentFrame=Math.max(0,Math.min(A.currentFrame,t-1)),A.currentFrame!==o&&(this.audioManager.tickFrame(A,A.currentFrame),(E=A.onFrame)==null||E.call(A,A.currentFrame,I),A.svgaInitialFrameEmitted=!0),A.currentFrame!==o}onGiftPlayComplete(A,g,I){var B;(B=A.onComplete)==null||B.call(A,g),A.state=A.options.clearsAfterStop===!1?"stopped":"finished"}tickImage(A,g,I,B){var Q;const E=(Q=A.options.duration)!=null?Q:0;return!(E>0)||(A.accumulatedTime+=g,A.accumulatedTime*1e3<E)?!1:(A.accumulatedTime=E/1e3,this.onGiftPlayComplete(A,I,B),!0)}removeFinished(){const A=this.finishedSlotIdsScratch;A.length=0;for(const[g,I]of this.slots)I.state==="finished"&&A.push(g);for(const g of A)this.removeSlot(g);return A.length>0}getRenderOrderedSlots(){const A=this.visibleSlotsScratch;A.length=0;for(const g of this.sortedSlots)g.state!=="playing"&&g.state!=="fly"&&g.state!=="stopped"||A.push(g);return A}drawRenderLayers(A){var g,I;let B=0;for(;B<A.length;){const Q=(g=A[B].zIndex)!=null?g:0;let E=B+1;for(;E<A.length&&((I=A[E].zIndex)!=null?I:0)===Q;)E++;this.drawLayer(this.collapseCoincidentVisualRange(A,B,E)),B=E}}collapseCoincidentVisualDuplicates(A){return this.collapseCoincidentVisualRange(A,0,A.length)}collapseCoincidentVisualRange(A,g,I){const B=this.coincidentSeenScratch,Q=this.collapsedLayerScratch;B.clear(),Q.length=0;for(let E=I-1;E>=g;E-=1){const e=A[E],i=this.getCoincidentVisualKey(e);i&&B.has(i)||(i&&B.add(i),Q.push(e))}return Q.reverse(),Q}getCoincidentVisualKey(A){var g,I,B,Q,E;if(A.motionTrackBinding||this.postAnimator.hasAnimation(A.id))return null;const e=this.getBatchKey(A);if(e.includes(":-1:")||e.endsWith(":-1")||e==="svga::0")return null;const i=A.type==="svga"?`frame=${A.currentFrame}`:A.wcAtlasRect?`rect=${A.wcAtlasRect.x},${A.wcAtlasRect.y},${A.wcAtlasRect.w},${A.wcAtlasRect.h}`:"frame=shared-texture",t=A.type==="svga"?this.getSVGASlotTextureKey(A):"",a=(g=A.options.objectFit)!=null?g:"contain",o=(B=(I=A.options.transformOrigin)==null?void 0:I.x)!=null?B:"50%",s=(E=(Q=A.options.transformOrigin)==null?void 0:Q.y)!=null?E:"50%",n=A.coincidentVisualKeyCache;if(n&&n.resourceKey===e&&n.frameKey===i&&n.svgaSlotKey===t&&n.objectFit===a&&n.x===A.x&&n.y===A.y&&n.width===A.width&&n.height===A.height&&n.scale===A.scale&&n.opacity===A.opacity&&n.rotation===A.rotation&&n.originX===o&&n.originY===s)return n.key;const r=[A.type,e,i,t,`fit=${a}`,`x=${A.x}`,`y=${A.y}`,`w=${A.width}`,`h=${A.height}`,`scale=${A.scale}`,`opacity=${A.opacity}`,`rotation=${A.rotation}`,`origin=${o},${s}`].join("|");return A.coincidentVisualKeyCache={key:r,resourceKey:e,frameKey:i,svgaSlotKey:t,objectFit:a,x:A.x,y:A.y,width:A.width,height:A.height,scale:A.scale,opacity:A.opacity,rotation:A.rotation,originX:o,originY:s},r}getSVGASlotTextureKey(A){const g=A.svgaSlotTextures;if(!g||g.size===0)return"";const I=A.svgaSlotTextureKeyCache;if(I&&I.map===g&&I.size===g.size)return I.key;const B=Array.from(g.entries()).sort(([Q],[E])=>Q.localeCompare(E)).map(([Q,E])=>`${Q}:${E.texture.id}:${E.mode}:${E.logicalWidth}x${E.logicalHeight}`).join(",");return A.svgaSlotTextureKeyCache={key:B,map:g,size:g.size},B}drawLayer(A){if(A.length===0)return;let g=A[0].type,I=this.getBatchKey(A[0]);const B=this.drawRunScratch;B.length=0;for(const Q of A){const E=this.getBatchKey(Q);(Q.type!==g||E!==I)&&B.length>0&&(this.drawSlotRun(g,B),B.length=0),g=Q.type,I=E,B.push(Q)}B.length>0&&this.drawSlotRun(g,B),B.length=0}needsContinuousFrame(){var A;if(this.backendQuarantined)return!1;if(this.pendingAtomicFrameRetry)return!0;if(this.globallyPaused)return!1;if(this.hasActiveFrameController()||this.postAnimator.hasRunningAnimations())return!0;for(const g of this.slots.values())if(!(g.paused||g.state!=="playing")&&(g.type==="svga"&&g.videoEntity||g.type==="image"&&((A=g.options.duration)!=null?A:0)>0||(g.type==="vap"||g.type==="alphaVideo")&&g.webcodecsPlayback||(g.type==="vap"||g.type==="alphaVideo")&&g.videoElement&&typeof g.videoElement.requestVideoFrameCallback!="function"))return!0;return!1}hasActiveFrameController(){for(const A of this.frameControllers)if(A.active)return!0;return!1}insertSortedSlot(A){let g=0,I=this.sortedSlots.length;for(;g<I;){const B=g+I>>>1;jI.compareSlots(this.sortedSlots[B],A)<=0?g=B+1:I=B}this.sortedSlots.splice(g,0,A)}static compareSlots(A,g){var I,B,Q,E;const e=((I=A.zIndex)!=null?I:0)-((B=g.zIndex)!=null?B:0);return e!==0?e:((Q=A.renderOrder)!=null?Q:0)-((E=g.renderOrder)!=null?E:0)}drawSlotRun(A,g){if(g.length===0)return;if(A==="svga"){this.svgaBatch.drawSlots(this.backend,g);return}if(A==="image"){for(const B of g)this.imageRenderer.drawSlot(this.backend,B);return}const I=this.videoRunMapScratch;I.clear();for(const B of g)I.set(B.id,B);A==="vap"?this.vapRenderer.draw(this.backend,I):this.alphaVideoRenderer.draw(this.backend,I)}getBatchKey(A){var g,I,B,Q,E,e,i,t,a,o,s,n;const r=A.batchKeyCache;switch(A.type){case"svga":{const c=A.videoEntity,h=(g=c==null?void 0:c.atlasTextureHandles)!=null&&g.length?c.atlasTextureHandles:(I=c==null?void 0:c.atlasTextureHandle)!=null?I:null,l=A.svgaSlotTextures&&A.svgaSlotTextures.size>0?1:0,w=(Q=(B=A.motionTrackBinding)==null?void 0:B.buffer)!=null?Q:null;if(r&&r.d0===h&&r.d1===l&&r.d2===w)return r.key;const D=((E=c==null?void 0:c.atlasTextureHandles)!=null&&E.length?c.atlasTextureHandles:c!=null&&c.atlasTextureHandle?[c.atlasTextureHandle]:[]).map(F=>F.id).join(","),y=(e=w==null?void 0:w.id)!=null?e:"none",R=`svga:${D}:${l}:motion:${y}`;return A.batchKeyCache={key:R,d0:h,d1:l,d2:w},R}case"vap":{const c=A.videoTextureHandle,h=!!A.vapMixState,l=(i=A.options.objectFit)!=null?i:"contain";if(r&&r.d0===c&&r.d1===h&&r.d2===l)return r.key;const w=`vap:${h?"mixed":"video"}:${(t=c==null?void 0:c.id)!=null?t:-1}:${l}`;return A.batchKeyCache={key:w,d0:c,d1:h,d2:l},w}case"alphaVideo":{const c=A.videoTextureHandle,h=(a=A.options.objectFit)!=null?a:"contain";if(r&&r.d0===c&&r.d1===h)return r.key;const l=`alpha:${(o=c==null?void 0:c.id)!=null?o:-1}:${h}`;return A.batchKeyCache={key:l,d0:c,d1:h,d2:null},l}case"image":{const c=A.imageTextureHandle,h=(s=A.options.objectFit)!=null?s:"contain";if(r&&r.d0===c&&r.d1===h)return r.key;const l=`image:${(n=c==null?void 0:c.id)!=null?n:-1}:${h}`;return A.batchKeyCache={key:l,d0:c,d1:h,d2:null},l}}}deleteSVGAAtlasTextures(A){var g,I,B,Q;(g=A.svgaFrameTableState)!=null&&g.binding&&((B=(I=this.backend).deleteSVGAFrameTable)==null||B.call(I,A.svgaFrameTableState.binding),A.svgaFrameTableState=null,A.svgaTimelineDrawRuns=void 0,A.svgaHybridCommandTable=void 0);const E=(Q=A.atlasTextureHandles)!=null&&Q.length?A.atlasTextureHandles:A.atlasTextureHandle?[A.atlasTextureHandle]:[],e=new Set;for(const i of E)e.has(i.id)||(e.add(i.id),this.backend.deleteTexture(i))}destroy(){if(!this.destroyed){this.destroyed=!0,this.stop(),this.resetAtomicRetryCycle();for(const A of Array.from(this.slots.keys()))this.removeSlot(A);this.svgaBatch.destroy(this.backend),this.vapRenderer.destroy(this.backend),this.alphaVideoRenderer.destroy(this.backend),this.imageRenderer.destroy(this.backend),this.particleBatchRenderer.destroy(),this.postAnimator.destroy(),this.audioManager.destroy(),this.sortedSlots.length=0,this.visibleSlotsScratch.length=0,this.collapsedLayerScratch.length=0,this.drawRunScratch.length=0,this.coincidentSeenScratch.clear(),this.frameControllers.clear(),this.backend.destroy()}}}function MQ(){return typeof DecompressionStream!="undefined"}function gg(){return typeof performance!="undefined"?performance.now():Date.now()}function vE(C){return C instanceof Error?`${C.name}: ${C.message}`:String(C)}async function ro(C,A,g){const I=g?gg():0,B=g?{inputBytes:C.byteLength,nativeAvailable:MQ(),nativeAttempts:[]}:null,Q=(e,i)=>(B&&(B.selectedPath=i,B.outputBytes=e.byteLength,B.totalMs=gg()-I,g==null||g(B)),e),E=e=>{throw B&&(B.error=vE(e),B.totalMs=gg()-I,g==null||g(B)),e};if(MQ())try{return Q(await uC(C,B!=null?B:void 0),"native")}catch(e){}try{const e=B?gg():0,i=A();return B&&(B.wasmMs=gg()-e),i?Q(i,"wasm"):Q(await uC(C,B!=null?B:void 0),"native-retry")}catch(e){return E(e)}}async function uC(C,A){if(typeof DecompressionStream!="undefined"){try{return await gC(C,"deflate",A==null?void 0:A.nativeAttempts)}catch(g){}try{return await gC(C.slice(2),"deflate-raw",A==null?void 0:A.nativeAttempts)}catch(g){}return gC(C.slice(2,-4),"deflate-raw",A==null?void 0:A.nativeAttempts)}throw new Error("No inflate implementation available (need WASM or DecompressionStream)")}async function gC(C,A,g){const I=g?gg():0,B=g?{format:A,inputBytes:C.byteLength,inputChunks:1,writerSubmitMs:0,readMs:0,concatMs:0,totalMs:0,outputChunks:0,outputBytes:0,status:"failed"}:null;try{const Q=new DecompressionStream(A),E=Q.writable.getWriter(),e=Q.readable.getReader(),i=B?gg():0,t=Promise.resolve(E.write(new Uint8Array(C.buffer,C.byteOffset,C.byteLength))),a=Promise.resolve(E.close());t.catch(()=>{}),a.catch(()=>{}),B&&(B.writerSubmitMs=gg()-i);const o=[];let s=0;const n=B?gg():0;for(;;){const{done:l,value:w}=await e.read();if(l)break;o.push(w),s+=w.length}await Promise.all([t,a]),B&&(B.readMs=gg()-n,B.outputChunks=o.length,B.outputBytes=s);const r=B?gg():0,c=new Uint8Array(s);let h=0;for(const l of o)c.set(l,h),h+=l.length;return B&&(B.concatMs=gg()-r,B.totalMs=gg()-I,B.status="success"),c}catch(Q){throw B&&(B.totalMs=gg()-I,B.error=vE(Q)),Q}finally{B&&(g==null||g.push(B))}}typeof TextEncoder!="undefined"&&new TextEncoder;const NQ=typeof TextDecoder!="undefined"?new TextDecoder:null;function TE(C){const A=C instanceof Uint8Array?C:new Uint8Array(C);return NQ?NQ.decode(A):co(A)}function co(C){let A="";for(let g=0;g<C.length;g+=1){const I=C[g];if(I<128){A+=String.fromCharCode(I);continue}if(I>=192&&I<224&&g+1<C.length){const B=(I&31)<<6|C[++g]&63;A+=String.fromCharCode(B);continue}if(I>=224&&I<240&&g+2<C.length){const B=(I&15)<<12|(C[++g]&63)<<6|C[++g]&63;A+=String.fromCharCode(B);continue}if(I>=240&&I<248&&g+3<C.length){let B=(I&7)<<18|(C[++g]&63)<<12|(C[++g]&63)<<6|C[++g]&63;B-=65536,A+=String.fromCharCode(55296+(B>>10),56320+(B&1023));continue}A+="�"}return A}var ho=Object.defineProperty,lo=(C,A,g)=>A in C?ho(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,IC=(C,A,g)=>lo(C,typeof A!="symbol"?A+"":A,g);const Do=0,wo=1,yo=2,Fo=5;class vC{constructor(A,g=0,I){IC(this,"view"),IC(this,"pos"),IC(this,"end"),this.view=new DataView(A.buffer,A.byteOffset,A.byteLength),this.pos=g,this.end=g+(I!=null?I:A.byteLength)}get remaining(){return this.end-this.pos}readVarint(){let A=0,g=0;for(;this.pos<this.end;){const I=this.view.getUint8(this.pos++);if(A|=(I&127)<<g,(I&128)===0)return A>>>0;g+=7}return A>>>0}readSignedVarint(){return this.readVarint()|0}readFloat(){const A=this.view.getFloat32(this.pos,!0);return this.pos+=4,A}readDouble(){const A=this.view.getFloat64(this.pos,!0);return this.pos+=8,A}readBytes(){const A=this.readVarint(),g=this.view.byteOffset+this.pos;this.pos+=A;const I=this.view.buffer.slice(g,g+A);return new Uint8Array(I)}readString(){const A=this.readBytes();return TE(A)}readTag(){if(this.pos>=this.end)return null;const A=this.readVarint();return{field:A>>>3,wire:A&7}}skip(A){switch(A){case Do:this.readVarint();break;case wo:this.pos+=8;break;case yo:this.pos+=this.readVarint();break;case Fo:this.pos+=4;break}}sub(A){const g=new vC(new Uint8Array(this.view.buffer,this.view.byteOffset),this.pos,A);return this.pos+=A,g}}function Go(C){const A={viewBoxWidth:0,viewBoxHeight:0,fps:20,frames:0};for(;C.remaining>0;){const g=C.readTag();if(!g)break;switch(g.field){case 1:A.viewBoxWidth=C.readFloat();break;case 2:A.viewBoxHeight=C.readFloat();break;case 3:A.fps=C.readSignedVarint();break;case 4:A.frames=C.readSignedVarint();break;default:C.skip(g.wire)}}return A}function uo(C){const A={x:0,y:0,width:0,height:0};for(;C.remaining>0;){const g=C.readTag();if(!g)break;switch(g.field){case 1:A.x=C.readFloat();break;case 2:A.y=C.readFloat();break;case 3:A.width=C.readFloat();break;case 4:A.height=C.readFloat();break;default:C.skip(g.wire)}}return A}function WE(C){const A={a:1,b:0,c:0,d:1,tx:0,ty:0};for(;C.remaining>0;){const g=C.readTag();if(!g)break;switch(g.field){case 1:A.a=C.readFloat();break;case 2:A.b=C.readFloat();break;case 3:A.c=C.readFloat();break;case 4:A.d=C.readFloat();break;case 5:A.tx=C.readFloat();break;case 6:A.ty=C.readFloat();break;default:C.skip(g.wire)}}return A}function UQ(C){const A={r:0,g:0,b:0,a:0};for(;C.remaining>0;){const g=C.readTag();if(!g)break;switch(g.field){case 1:A.r=C.readFloat();break;case 2:A.g=C.readFloat();break;case 3:A.b=C.readFloat();break;case 4:A.a=C.readFloat();break;default:C.skip(g.wire)}}return A}function Ro(C){const A={fill:null,stroke:null,strokeWidth:0},g=[];for(;C.remaining>0;){const I=C.readTag();if(!I)break;switch(I.field){case 1:{const B=C.readVarint();A.fill=UQ(C.sub(B));break}case 2:{const B=C.readVarint();A.stroke=UQ(C.sub(B));break}case 3:A.strokeWidth=C.readFloat();break;case 4:A.lineCap=C.readVarint();break;case 5:A.lineJoin=C.readVarint();break;case 6:A.miterLimit=C.readFloat();break;case 7:g[0]=C.readFloat();break;case 8:g[1]=C.readFloat();break;case 9:g[2]=C.readFloat();break;default:C.skip(I.wire)}}return g.some(I=>I>0)&&(A.lineDash=g.filter(I=>I>0)),A}function fo(C){let A="";for(;C.remaining>0;){const g=C.readTag();if(!g)break;switch(g.field){case 1:A=C.readString();break;default:C.skip(g.wire)}}return A}function So(C){const A={x:0,y:0,width:0,height:0,cornerRadius:0};for(;C.remaining>0;){const g=C.readTag();if(!g)break;switch(g.field){case 1:A.x=C.readFloat();break;case 2:A.y=C.readFloat();break;case 3:A.width=C.readFloat();break;case 4:A.height=C.readFloat();break;case 5:A.cornerRadius=C.readFloat();break;default:C.skip(g.wire)}}return A}function Mo(C){const A={x:0,y:0,radiusX:0,radiusY:0};for(;C.remaining>0;){const g=C.readTag();if(!g)break;switch(g.field){case 1:A.x=C.readFloat();break;case 2:A.y=C.readFloat();break;case 3:A.radiusX=C.readFloat();break;case 4:A.radiusY=C.readFloat();break;default:C.skip(g.wire)}}return A}function No(C){let A=0,g="",I,B,Q={fill:null,stroke:null,strokeWidth:0},E={a:1,b:0,c:0,d:1,tx:0,ty:0};for(;C.remaining>0;){const e=C.readTag();if(!e)break;switch(e.field){case 1:A=C.readVarint();break;case 2:{const i=C.readVarint();g=fo(C.sub(i));break}case 3:{const i=C.readVarint();I=So(C.sub(i));break}case 4:{const i=C.readVarint();B=Mo(C.sub(i));break}case 10:{const i=C.readVarint();Q=Ro(C.sub(i));break}case 11:{const i=C.readVarint();E=WE(C.sub(i));break}default:C.skip(e.wire)}}return A===3?{kind:"keep"}:g?{kind:"path",pathData:g,style:Q,transform:E}:I?{kind:"rect",rect:I,style:Q,transform:E}:B?{kind:"ellipse",ellipse:B,style:Q,transform:E}:null}function Uo(C){const A={alpha:0,layout:null,transform:null,clipPath:""},g=[];for(;C.remaining>0;){const I=C.readTag();if(!I)break;switch(I.field){case 1:A.alpha=C.readFloat();break;case 2:{const B=C.readVarint();A.layout=uo(C.sub(B));break}case 3:{const B=C.readVarint();A.transform=WE(C.sub(B));break}case 4:A.clipPath=C.readString();break;case 5:{const B=C.readVarint(),Q=No(C.sub(B));Q&&g.push(Q);break}default:C.skip(I.wire)}}return g.length>0&&(A.shapes=g),A}function ko(C){var A;const g={imageKey:"",frames:[]};for(;C.remaining>0;){const B=C.readTag();if(!B)break;switch(B.field){case 1:g.imageKey=C.readString();break;case 2:{const Q=C.readVarint();g.frames.push(Uo(C.sub(Q)));break}default:C.skip(B.wire)}}let I=null;for(const B of g.frames){const Q=B.shapes;if(!Q||Q.length===0){B.shapes=null,I=null;continue}if(((A=Q[0])==null?void 0:A.kind)==="keep"){B.shapes=I;continue}const E=Q.filter(e=>e.kind!=="keep");B.shapes=E.length>0?E:null,I=B.shapes}return g}function Yo(C){const A={audioKey:"",startFrame:0,endFrame:0,startTime:0,totalTime:0};for(;C.remaining>0;){const g=C.readTag();if(!g)break;switch(g.field){case 1:A.audioKey=C.readString();break;case 2:A.startFrame=C.readSignedVarint();break;case 3:A.endFrame=C.readSignedVarint();break;case 4:A.startTime=C.readSignedVarint();break;case 5:A.totalTime=C.readSignedVarint();break;default:C.skip(g.wire)}}return A}function po(C){let A="",g=new Uint8Array(0);for(;C.remaining>0;){const I=C.readTag();if(!I)break;switch(I.field){case 1:A=C.readString();break;case 2:g=C.readBytes();break;default:C.skip(I.wire)}}return{key:A,value:g}}function RC(C){const A=new vC(C),g=[],I={version:"",params:{viewBoxWidth:0,viewBoxHeight:0,fps:20,frames:0},images:new Map,audios:[]};for(;A.remaining>0;){const Q=A.readTag();if(!Q)break;switch(Q.field){case 1:I.version=A.readString();break;case 2:{const E=A.readVarint();I.params=Go(A.sub(E));break}case 3:{const E=A.readVarint(),{key:e,value:i}=po(A.sub(E));I.images.set(e,i);break}case 4:{const E=A.readVarint();g.push(ko(A.sub(E)));break}case 5:{const E=A.readVarint();I.audios.push(Yo(A.sub(E)));break}default:A.skip(Q.wire)}}const B=hE(g,I.params.frames);return Tg(I.params,B),{version:I.version,params:I.params,images:I.images,spriteTable:B,audios:I.audios}}function kQ(C,A){C.f32(A.r),C.f32(A.g),C.f32(A.b),C.f32(A.a)}function YQ(C){return{r:C.f32(),g:C.f32(),b:C.f32(),a:C.f32()}}function Ko(C,A){var g,I,B;const Q=(I=(g=A.lineDash)==null?void 0:g.filter(e=>e>0))!=null?I:[];let E=0;if(A.fill&&(E|=1),A.stroke&&(E|=2),A.lineCap!==void 0&&(E|=4),A.lineJoin!==void 0&&(E|=8),A.miterLimit!==void 0&&(E|=16),Q.length>0&&(E|=32),C.u8(E),A.fill&&kQ(C,A.fill),A.stroke&&kQ(C,A.stroke),C.f32((B=A.strokeWidth)!=null?B:0),A.lineCap!==void 0&&C.i32(A.lineCap),A.lineJoin!==void 0&&C.i32(A.lineJoin),A.miterLimit!==void 0&&C.f32(A.miterLimit),Q.length>0){C.u32(Q.length);for(const e of Q)C.f32(e)}}function mo(C){const A=C.u8(),g=A&1?YQ(C):null,I=A&2?YQ(C):null,B={fill:g,stroke:I,strokeWidth:C.f32()};if(A&4&&(B.lineCap=C.i32()),A&8&&(B.lineJoin=C.i32()),A&16&&(B.miterLimit=C.f32()),A&32){const Q=C.u32(),E=[];for(let e=0;e<Q;e++)E.push(C.f32());E.length>0&&(B.lineDash=E)}return B}async function Jo(C,A,g){var I,B,Q,E;C.u8(A.kind==="path"?0:A.kind==="rect"?1:2),await C.stringCooperative((I=A.pathData)!=null?I:"",g);const e=(B=A.rect)!=null?B:{x:0,y:0,width:0,height:0,cornerRadius:0};C.f32(e.x),C.f32(e.y),C.f32(e.width),C.f32(e.height),C.f32((Q=e.cornerRadius)!=null?Q:0);const i=(E=A.ellipse)!=null?E:{x:0,y:0,radiusX:0,radiusY:0};C.f32(i.x),C.f32(i.y),C.f32(i.radiusX),C.f32(i.radiusY),Ko(C,A.style),C.f32(A.transform.a),C.f32(A.transform.b),C.f32(A.transform.c),C.f32(A.transform.d),C.f32(A.transform.tx),C.f32(A.transform.ty)}function Lo(C){const A=C.u8();if(A===3)throw new Error("Unexpected shape keep marker in sprite table shapes group");const g=C.string(),I={x:C.f32(),y:C.f32(),width:C.f32(),height:C.f32(),cornerRadius:C.f32()},B={x:C.f32(),y:C.f32(),radiusX:C.f32(),radiusY:C.f32()},Q=mo(C),E={a:C.f32(),b:C.f32(),c:C.f32(),d:C.f32(),tx:C.f32(),ty:C.f32()};return A===0?{kind:"path",pathData:g,style:Q,transform:E}:A===1?{kind:"rect",rect:I,style:Q,transform:E}:{kind:"ellipse",ellipse:B,style:Q,transform:E}}async function Ho(C,A,g){C.u32(A.spriteCount);for(const I of A.imageKeys)await C.stringCooperative(I,g),await g();C.pad4(),C.u32(A.frameCount),await C.rawBytesCooperative(new Uint8Array(A.frameData.buffer,A.frameData.byteOffset,A.frameData.byteLength),g),C.u32(A.clipPaths.length);for(const I of A.clipPaths)await C.stringCooperative(I,g),await g();C.pad4(),await C.rawBytesCooperative(new Uint8Array(A.clipPathIndex.buffer,A.clipPathIndex.byteOffset,A.clipPathIndex.byteLength),g),C.u32(A.shapesTable.length);for(const I of A.shapesTable){C.u32(I.length);for(const B of I)await Jo(C,B,g),await g()}C.pad4(),await C.rawBytesCooperative(new Uint8Array(A.shapesIndex.buffer,A.shapesIndex.byteOffset,A.shapesIndex.byteLength),g),C.u8(A.hasAnyShapes?1:0)}async function VE(C,A){const g=C.u32(),I=[];for(let w=0;w<g;w++)I.push(C.string()),await A();C.pad4();const B=C.u32(),Q=g*B*$g;C.pad4();const E=C.position,e=new Float32Array(C.sourceBuffer(),E,Q);C.skip(Q*4),await A();const i=C.u32(),t=[];for(let w=0;w<i;w++)t.push(C.string()),await A();C.pad4();const a=g*B,o=C.position,s=new Int32Array(C.sourceBuffer(),o,a);C.skip(a*4),await A();const n=C.u32(),r=[];for(let w=0;w<n;w++){const D=C.u32(),y=[];for(let R=0;R<D;R++)y.push(Lo(C)),await A();r.push(y)}C.pad4();const c=g*B,h=C.position,l=new Int32Array(C.sourceBuffer(),h,c);return C.skip(c*4),await A(),{spriteCount:g,frameCount:B,imageKeys:I,frameData:e,clipPaths:t,clipPathIndex:s,shapesTable:r,shapesIndex:l,hasAnyShapes:C.u8()!==0}}var xo=Object.defineProperty,bo=(C,A,g)=>A in C?xo(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,BC=(C,A,g)=>bo(C,typeof A!="symbol"?A+"":A,g);const qo=1397182530,vo=2;function To(C){return C+3&-4}let Wo=class{constructor(A){this.buffer=A,BC(this,"view"),BC(this,"bytes"),BC(this,"offset",0),this.view=new DataView(A),this.bytes=new Uint8Array(A)}get position(){return this.offset}skip(A){this.offset+=A}pad4(){this.offset=To(this.offset)}u8(){const A=this.view.getUint8(this.offset);return this.offset+=1,A}u16(){const A=this.view.getUint16(this.offset,!0);return this.offset+=2,A}u32(){const A=this.view.getUint32(this.offset,!0);return this.offset+=4,A}i32(){const A=this.view.getInt32(this.offset,!0);return this.offset+=4,A}f32(){const A=this.view.getFloat32(this.offset,!0);return this.offset+=4,A}bytesValue(){const A=this.u32(),g=this.offset;return this.offset+=A,this.bytes.subarray(g,g+A)}bytesRef(){const A=this.u32(),g=this.offset;return this.offset+=A,{offset:g,length:A}}string(){return TE(this.bytesValue())}sourceBuffer(){return this.buffer}};async function ZE(C,A,g,I){const B=OA({maxBudgetMs:g}),Q=async()=>{J(I,"SVGA payload deserialization aborted"),B.shouldYield()&&await B.yield(),J(I,"SVGA payload deserialization aborted")};J(I,"SVGA payload deserialization aborted");const E=new Wo(C);if(E.u32()!==qo)throw new Error("Invalid SVGA worker payload magic");if(E.u16()!==vo)throw new Error("Unsupported SVGA worker payload version");const e=E.u16(),i=E.string(),t={viewBoxWidth:E.f32(),viewBoxHeight:E.f32(),fps:E.f32(),frames:E.u32()},a=[],o=E.u32();for(let c=0;c<o;c++)a.push({audioKey:E.string(),startFrame:E.i32(),endFrame:E.i32(),startTime:E.i32(),totalTime:E.i32()}),await Q();const s=[],n=E.u32();for(let c=0;c<n;c++){const h=E.string(),l=E.bytesRef();s.push({key:h,offset:l.offset,length:l.length}),await Q()}const r=await VE(E,Q);return(e&2)!==0&&(r.allFramesInsideViewBox=(e&1)!==0),J(I,"SVGA payload deserialization aborted"),{version:i,params:t,audios:a,spriteTable:r,images:{},imageBlob:E.sourceBuffer(),imageEntries:s,__debug:A}}const XE=`function DA() {
3101
3101
  return typeof DecompressionStream != "undefined";
3102
3102
  }
3103
3103
  function c() {
@@ -4573,7 +4573,7 @@ v.onmessage = (A) => {
4573
4573
  !I || I.type !== "parse-svga" || Bg.push(() => Qg(I));
4574
4574
  };
4575
4575
  //# sourceMappingURL=parser-worker-B5UzEFVT.js.map
4576
- `,pQ=typeof self!="undefined"&&self.Blob&&new Blob(["URL.revokeObjectURL(import.meta.url);",XE],{type:"text/javascript;charset=utf-8"});function Vo(C){let A;try{if(A=pQ&&(self.URL||self.webkitURL).createObjectURL(pQ),!A)throw"";const g=new Worker(A,{type:"module",name:C==null?void 0:C.name});return g.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(A)}),g}catch(g){return new Worker("data:text/javascript;charset=utf-8,"+encodeURIComponent(XE),{type:"module",name:C==null?void 0:C.name})}}let HI=null,Zo=1;const yg=new Map;function KQ(){return typeof performance!="undefined"?performance.now():Date.now()}function sI(C){C.signal&&C.onAbort&&C.signal.removeEventListener("abort",C.onAbort)}function pB(C,A,g){HI===C&&(HI=null);try{C.terminate()}catch(I){}for(const[I,B]of yg)B.owner===C&&(yg.delete(I),sI(B),B.reject(g==null||I===g?A:new Error("SVGA parser worker restarted after another request was canceled")))}function Xo(){if(!HI){const C=new Vo;HI=C,C.addEventListener("message",A=>{const g=A.data;if(!g||g.type!=="parse-svga-result"||g.id==null)return;const I=yg.get(g.id);if(!(!I||I.owner!==C))if(g.error)yg.delete(g.id),sI(I),I.reject(new Error(g.error));else if(g.result){const B=g.result;if(B.buffer&&Object.prototype.toString.call(B.buffer)==="[object ArrayBuffer]"){const Q=B.debug?KQ():0;ZE(B.buffer,B.debug,I.mainThreadFrameBudgetMs,I.signal).then(E=>{var e;if(yg.get(g.id)!==I)return;yg.delete(g.id),sI(I);const i=(e=E.__debug)==null?void 0:e.parser;i&&typeof i=="object"&&!Array.isArray(i)&&(i.payloadDeserializeMs=KQ()-Q),I.resolve(E)},E=>{yg.get(g.id)===I&&(yg.delete(g.id),sI(I),I.reject(E instanceof Error?E:new Error(String(E))))})}else yg.delete(g.id),sI(I),I.resolve(g.result)}else yg.delete(g.id),sI(I),I.reject(new Error("SVGA worker: empty result"))}),C.addEventListener("error",A=>{pB(C,new Error(A.message||"SVGA parser worker error"))}),C.addEventListener("messageerror",()=>{pB(C,new Error("SVGA parser worker message deserialization failed"))})}return HI}function Oo(C,A={}){return pC(()=>{L(A.signal,"SVGA parser worker task aborted");const g=Xo(),I=Zo++;return new Promise((B,Q)=>{var E,e;const i={owner:g,mainThreadFrameBudgetMs:A.mainThreadFrameBudgetMs,signal:A.signal,resolve:B,reject:Q};if(i.onAbort=()=>{pB(g,QA("SVGA parser worker task aborted"),I)},yg.set(I,i),(E=A.signal)!=null&&E.aborted){i.onAbort();return}(e=A.signal)==null||e.addEventListener("abort",i.onAbort,{once:!0});try{g.postMessage({type:"parse-svga",id:I,data:C,profile:A.profile===!0,workerTimeSliceMs:A.workerTimeSliceMs},[C])}catch(t){pB(g,t instanceof Error?t:new Error(String(t)))}})},A.signal)}function Po(C){var A;const g=new Map;if(C.imageBlob&&C.imageEntries)for(const I of C.imageEntries)g.set(I.key,new Uint8Array(C.imageBlob,I.offset,I.length));else for(const[I,B]of Object.entries((A=C.images)!=null?A:{}))g.set(I,new Uint8Array(B));return{version:C.version,params:C.params,spriteTable:C.spriteTable,audios:C.audios,images:g}}const OE=`var M = Object.defineProperty, b = (e, t, n) => t in e ? M(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n, c = (e, t, n) => b(e, typeof t != "symbol" ? t + "" : t, n);
4576
+ `,pQ=typeof self!="undefined"&&self.Blob&&new Blob(["URL.revokeObjectURL(import.meta.url);",XE],{type:"text/javascript;charset=utf-8"});function Vo(C){let A;try{if(A=pQ&&(self.URL||self.webkitURL).createObjectURL(pQ),!A)throw"";const g=new Worker(A,{type:"module",name:C==null?void 0:C.name});return g.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(A)}),g}catch(g){return new Worker("data:text/javascript;charset=utf-8,"+encodeURIComponent(XE),{type:"module",name:C==null?void 0:C.name})}}let HI=null,Zo=1;const yg=new Map;function KQ(){return typeof performance!="undefined"?performance.now():Date.now()}function sI(C){C.signal&&C.onAbort&&C.signal.removeEventListener("abort",C.onAbort)}function pB(C,A,g){HI===C&&(HI=null);try{C.terminate()}catch(I){}for(const[I,B]of yg)B.owner===C&&(yg.delete(I),sI(B),B.reject(g==null||I===g?A:new Error("SVGA parser worker restarted after another request was canceled")))}function Xo(){if(!HI){const C=new Vo;HI=C,C.addEventListener("message",A=>{const g=A.data;if(!g||g.type!=="parse-svga-result"||g.id==null)return;const I=yg.get(g.id);if(!(!I||I.owner!==C))if(g.error)yg.delete(g.id),sI(I),I.reject(new Error(g.error));else if(g.result){const B=g.result;if(B.buffer&&Object.prototype.toString.call(B.buffer)==="[object ArrayBuffer]"){const Q=B.debug?KQ():0;ZE(B.buffer,B.debug,I.mainThreadFrameBudgetMs,I.signal).then(E=>{var e;if(yg.get(g.id)!==I)return;yg.delete(g.id),sI(I);const i=(e=E.__debug)==null?void 0:e.parser;i&&typeof i=="object"&&!Array.isArray(i)&&(i.payloadDeserializeMs=KQ()-Q),I.resolve(E)},E=>{yg.get(g.id)===I&&(yg.delete(g.id),sI(I),I.reject(E instanceof Error?E:new Error(String(E))))})}else yg.delete(g.id),sI(I),I.resolve(g.result)}else yg.delete(g.id),sI(I),I.reject(new Error("SVGA worker: empty result"))}),C.addEventListener("error",A=>{pB(C,new Error(A.message||"SVGA parser worker error"))}),C.addEventListener("messageerror",()=>{pB(C,new Error("SVGA parser worker message deserialization failed"))})}return HI}function Oo(C,A={}){return pC(()=>{J(A.signal,"SVGA parser worker task aborted");const g=Xo(),I=Zo++;return new Promise((B,Q)=>{var E,e;const i={owner:g,mainThreadFrameBudgetMs:A.mainThreadFrameBudgetMs,signal:A.signal,resolve:B,reject:Q};if(i.onAbort=()=>{pB(g,CA("SVGA parser worker task aborted"),I)},yg.set(I,i),(E=A.signal)!=null&&E.aborted){i.onAbort();return}(e=A.signal)==null||e.addEventListener("abort",i.onAbort,{once:!0});try{g.postMessage({type:"parse-svga",id:I,data:C,profile:A.profile===!0,workerTimeSliceMs:A.workerTimeSliceMs},[C])}catch(t){pB(g,t instanceof Error?t:new Error(String(t)))}})},A.signal)}function Po(C){var A;const g=new Map;if(C.imageBlob&&C.imageEntries)for(const I of C.imageEntries)g.set(I.key,new Uint8Array(C.imageBlob,I.offset,I.length));else for(const[I,B]of Object.entries((A=C.images)!=null?A:{}))g.set(I,new Uint8Array(B));return{version:C.version,params:C.params,spriteTable:C.spriteTable,audios:C.audios,images:g}}const OE=`var M = Object.defineProperty, b = (e, t, n) => t in e ? M(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n, c = (e, t, n) => b(e, typeof t != "symbol" ? t + "" : t, n);
4577
4577
  function o() {
4578
4578
  return typeof performance != "undefined" ? performance.now() : Date.now();
4579
4579
  }
@@ -4655,7 +4655,7 @@ p.onmessage = (e) => {
4655
4655
  !t || t.type !== "decode-batch" || P.push(() => T(t));
4656
4656
  };
4657
4657
  //# sourceMappingURL=svga-image-decode-worker-CQ1mbNml.js.map
4658
- `,mQ=typeof self!="undefined"&&self.Blob&&new Blob(["URL.revokeObjectURL(import.meta.url);",OE],{type:"text/javascript;charset=utf-8"});function jo(C){let A;try{if(A=mQ&&(self.URL||self.webkitURL).createObjectURL(mQ),!A)throw"";const g=new Worker(A,{type:"module",name:C==null?void 0:C.name});return g.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(A)}),g}catch(g){return new Worker("data:text/javascript;charset=utf-8,"+encodeURIComponent(OE),{type:"module",name:C==null?void 0:C.name})}}let xI=null,zo=1;const zI=new Map;function PE(C){C.signal&&C.onAbort&&C.signal.removeEventListener("abort",C.onAbort)}function KB(C,A,g){xI===C&&(xI=null);try{C.terminate()}catch(I){}for(const[I,B]of zI)B.owner===C&&(zI.delete(I),PE(B),B.reject(g==null||I===g?A:new Error("SVGA image decode worker restarted after another request was canceled")))}function _o(){if(!xI){const C=new jo;xI=C,C.addEventListener("message",A=>{var g,I;const B=A.data;if(!B||B.type!=="decode-batch-result")return;const Q=zI.get(B.id);if(!Q||Q.owner!==C){for(const E of(g=B.results)!=null?g:[])(I=E.bitmap)==null||I.close();return}zI.delete(B.id),PE(Q),Q.resolve(B)}),C.addEventListener("error",A=>{KB(C,new Error(A.message||"SVGA image decode worker error"))}),C.addEventListener("messageerror",()=>{KB(C,new Error("SVGA image decode worker message deserialization failed"))})}return xI}function $o(){return typeof Worker!="undefined"&&typeof createImageBitmap=="function"}async function As(C,A,g){const I=OA({maxBudgetMs:A}),B=new Uint8Array(C.byteLength),Q=64*1024;L(g,"SVGA image decode aborted");for(let E=0;E<C.byteLength;E+=Q){const e=Math.min(E+Q,C.byteLength);B.set(C.subarray(E,e),E),e<C.byteLength&&I.shouldYield()&&await I.yield(),L(g,"SVGA image decode aborted")}return B.buffer}async function gs(C,A,g={}){return pC(async()=>{L(g.signal,"SVGA image decode aborted");const I=_o(),B=new Map,Q=Math.max(1,Math.min(256,Math.floor(A)));try{for(let E=0;E<C.length;E+=Q){L(g.signal,"SVGA image decode aborted");const e=C.slice(E,E+Q),i=[],t=[];for(const[s,n]of e){const r=await As(n,g.mainThreadFrameBudgetMs,g.signal);i.push({key:s,data:r}),t.push(r)}const a=zo++,o=await new Promise((s,n)=>{var r,c;const h={owner:I,signal:g.signal,resolve:s,reject:n};if(h.onAbort=()=>{KB(I,QA("SVGA image decode aborted"),a)},zI.set(a,h),(r=g.signal)!=null&&r.aborted){h.onAbort();return}(c=g.signal)==null||c.addEventListener("abort",h.onAbort,{once:!0});const l={type:"decode-batch",id:a,items:i,workerTimeSliceMs:g.workerTimeSliceMs,maxConcurrency:g.maxConcurrency};try{I.postMessage(l,t)}catch(w){KB(I,w instanceof Error?w:new Error(String(w)))}});L(g.signal,"SVGA image decode aborted");for(const s of o.results)s.bitmap&&B.set(s.key,s.bitmap)}return B}catch(E){for(const e of B.values())e.close();throw E}},g.signal)}const CC=[73,68,51],Is=128,QC=12,Bs=8,cB=new Map,RB=new WeakMap,hB=new WeakMap;function HA(){return typeof performance!="undefined"?performance.now():Date.now()}function JQ(C,A){C!==!0||!A.__debug||console.info("[GiftStage:SVGA:Profile]",A.__debug)}function Cs(C,A){return!!(C.startsWith("audio")||A.length>=3&&A[0]===CC[0]&&A[1]===CC[1]&&A[2]===CC[2])}async function mB(C,A,g){const I=OA({maxBudgetMs:A}),B=new Uint8Array(C.byteLength),Q=64*1024;L(g,"SVGA parse aborted");for(let E=0;E<C.byteLength;E+=Q){const e=Math.min(E+Q,C.byteLength);B.set(C.subarray(E,e),E),e<C.byteLength&&I.shouldYield()&&await I.yield(),L(g,"SVGA parse aborted")}return B.buffer}async function Qs(C,A,g){const I=[],B=new Map,Q=OA({maxBudgetMs:A});for(const[E,e]of C.images){if(L(g,"SVGA image collection aborted"),Cs(E,e)){B.set(E,await mB(e,A,g));continue}e.length!==0&&(I.push([E,e]),Q.shouldYield()&&await Q.yield(),L(g,"SVGA image collection aborted"))}return{imageEntries:I,audioBlobs:B}}async function LQ(C,A,g,I){const B=new Map,Q=Math.max(2,Math.min(32,Math.floor(A))),E=OA({maxBudgetMs:Math.max(2,g)});try{for(let e=0;e<C.length;e+=Q){L(I,"SVGA image decode aborted");const i=C.slice(e,e+Q);await Promise.all(i.map(async([t,a])=>{try{const o=await createImageBitmap(new Blob([new Uint8Array(a)]),{premultiplyAlpha:"none"});if(I!=null&&I.aborted)throw o.close(),QA("SVGA image decode aborted");B.set(t,o)}catch(o){if(mg(o))throw o}})),e+Q<C.length&&E.shouldYield()&&await E.yield()}return B}catch(e){for(const i of B.values())i.close();throw e}}async function HQ(C,A,g){const I=new Map;if(C.length===0)return I;let B=4;const Q=2,E=24,e=OA({maxBudgetMs:Math.max(2,A)});try{for(let i=0;i<C.length;){L(g,"SVGA image decode aborted");const t=typeof performance!="undefined"?performance.now():0,a=Math.min(i+B,C.length),o=C.slice(i,a);await Promise.all(o.map(async([r,c])=>{try{const h=await createImageBitmap(new Blob([new Uint8Array(c)]),{premultiplyAlpha:"none"});if(g!=null&&g.aborted)throw h.close(),QA("SVGA image decode aborted");I.set(r,h)}catch(h){if(mg(h))throw h}}));const s=e.budgetMs,n=typeof performance!="undefined"?performance.now()-t:s*.5;n<s*.45&&B<E?B=Math.min(E,B+2):n>s*1.4&&B>Q&&(B=Math.max(Q,B-2)),i=a,i<C.length&&e.shouldYield()&&await e.yield()}return I}catch(i){for(const t of I.values())t.close();throw i}}function Es(C){var A,g,I,B,Q,E,e;const i=(C==null?void 0:C.svgaLoadFrameBudgetMs)==null?(A=C==null?void 0:C.imageDecodeFrameBudgetMs)!=null?A:QC:Math.min(C.svgaLoadFrameBudgetMs,(g=C.imageDecodeFrameBudgetMs)!=null?g:QC);return{useImageBitmapDecodeWorker:(C==null?void 0:C.useImageBitmapDecodeWorker)!==!1,imageDecodeWorkerChunkSize:(I=C==null?void 0:C.imageDecodeWorkerChunkSize)!=null?I:Is,imageDecodeAdaptiveOnMainThread:(C==null?void 0:C.imageDecodeAdaptiveOnMainThread)!==!1,imageDecodeFrameBudgetMs:i,imageDecodeFixedBatchSize:(B=C==null?void 0:C.imageDecodeFixedBatchSize)!=null?B:Bs,svgaLoadFrameBudgetMs:(Q=C==null?void 0:C.svgaLoadFrameBudgetMs)!=null?Q:QC,svgaWorkerFrameBudgetMs:(E=C==null?void 0:C.svgaWorkerFrameBudgetMs)!=null?E:4,svgaWorkerImageDecodeConcurrency:(e=C==null?void 0:C.svgaWorkerImageDecodeConcurrency)!=null?e:2}}async function es(C,A){var g;const I=Es(A),{imageEntries:B,audioBlobs:Q}=await Qs(C,I.svgaLoadFrameBudgetMs,A==null?void 0:A.signal);let E;if(I.useImageBitmapDecodeWorker&&$o()&&B.length>0)try{E=await gs(B,I.imageDecodeWorkerChunkSize,{workerTimeSliceMs:I.svgaWorkerFrameBudgetMs,maxConcurrency:I.svgaWorkerImageDecodeConcurrency,mainThreadFrameBudgetMs:I.svgaLoadFrameBudgetMs,signal:A==null?void 0:A.signal})}catch(i){if(mg(i))throw i;console.warn("[GiftStage:SVGA] image decode worker failed, using main thread",i),E=I.imageDecodeAdaptiveOnMainThread?await HQ(B,I.imageDecodeFrameBudgetMs,A==null?void 0:A.signal):await LQ(B,I.imageDecodeFixedBatchSize,I.imageDecodeFrameBudgetMs,A==null?void 0:A.signal)}else E=I.imageDecodeAdaptiveOnMainThread?await HQ(B,I.imageDecodeFrameBudgetMs,A==null?void 0:A.signal):await LQ(B,I.imageDecodeFixedBatchSize,I.imageDecodeFrameBudgetMs,A==null?void 0:A.signal);if((g=A==null?void 0:A.signal)!=null&&g.aborted){for(const i of E.values())i.close();throw QA("SVGA parse aborted")}return{movie:C,imageBitmaps:E,audioBlobs:Q}}async function xQ(C,A){return es(Po(C),A)}async function bQ(C,A,g){const I={};for(const[B,Q]of C.images)I[B]=await mB(Q,A,g);return{version:C.version,params:C.params,spriteTable:C.spriteTable,audios:C.audios,images:I}}function EC(C,A){return C.consumers++,new Promise((g,I)=>{let B=!1;const Q=e=>{B||(B=!0,A==null||A.removeEventListener("abort",E),C.consumers=Math.max(0,C.consumers-1),C.consumers===0&&!C.settled&&C.controller.abort(),e())},E=()=>{Q(()=>I(QA("SVGA parse aborted")))};if(A!=null&&A.aborted){E();return}A==null||A.addEventListener("abort",E,{once:!0}),C.promise.then(e=>Q(()=>g(e)),e=>Q(()=>I(e)))})}async function jE(C,A,g,I,B){if(L(B==null?void 0:B.signal,"SVGA parse aborted"),!A){const t=RB.get(C);if(t)return Tg(t.params,t.spriteTable),t;const a=hB.get(C);if(a)return EC(a,B==null?void 0:B.signal)}if(A){const t=xC(A);if(t)return Tg(t.params,t.spriteTable),t;const a=cB.get(A);if(a)return EC(a,B==null?void 0:B.signal)}const Q=new AbortController,E=Q.signal,e=yC(async()=>{var t;if(L(E,"SVGA parse aborted"),I)try{const w=typeof C=="string"&&g.byteOffset===0&&g.byteLength===g.buffer.byteLength?g.buffer:await mB(g,B==null?void 0:B.svgaLoadFrameBudgetMs,E),D=await Oo(w,{profile:B==null?void 0:B.svgaParseProfile,workerTimeSliceMs:B==null?void 0:B.svgaWorkerFrameBudgetMs,mainThreadFrameBudgetMs:B==null?void 0:B.svgaLoadFrameBudgetMs,signal:E});return L(E,"SVGA parse aborted"),Tg(D.params,D.spriteTable),JQ(B==null?void 0:B.svgaParseProfile,D),A?lQ(A,D):RB.set(C,D),D}catch(l){if(mg(l))throw l;console.warn("[GiftStage:SVGA] worker parse failed, using main thread",l),g=typeof C=="string"?new Uint8Array(await EI(C)):new Uint8Array(C)}L(E,"SVGA parse aborted");const a=B!=null&&B.svgaParseProfile?HA():0;let o;const s=await ro(g,()=>DI()&&Jt(g),B!=null&&B.svgaParseProfile?l=>{o=l}:void 0);L(E,"SVGA parse aborted");let n,r,c,h;if(DI()){const l=B!=null&&B.svgaParseProfile?HA():0,w=B!=null&&B.svgaParseProfile?xt(s):null,D=(t=w==null?void 0:w.payload)!=null?t:Ht(s);if(L(E,"SVGA parse aborted"),D){B!=null&&B.svgaParseProfile&&(r={path:"wasmDecodeSVGAPayload",operation:"protobufDecodeAndPayloadBuild",inputBytes:s.byteLength,outputBytes:D.byteLength,totalMs:HA()-l,wasm:w==null?void 0:w.profile});const y=B!=null&&B.svgaParseProfile?HA():0,R=D.byteOffset===0&&D.byteLength===D.buffer.byteLength?D.buffer:await mB(D,B==null?void 0:B.svgaLoadFrameBudgetMs,E);n=await ZE(R,void 0,B==null?void 0:B.svgaLoadFrameBudgetMs,E),B!=null&&B.svgaParseProfile&&(h=HA()-y)}else{const y=B!=null&&B.svgaParseProfile?HA():0;let R=Lt(s);if(L(E,"SVGA parse aborted"),B!=null&&B.svgaParseProfile&&R)r={path:"wasmDecodeSVGA",operation:"protobufDecodeAndObjectConvert",inputBytes:s.byteLength,totalMs:HA()-y,fallbackFrom:["wasmDecodeSVGAPayload-returned-null"]};else{const d=B!=null&&B.svgaParseProfile?HA():0;R=RC(s),L(E,"SVGA parse aborted"),B!=null&&B.svgaParseProfile&&(r={path:"jsDecodeSVGAProto",operation:"protobufDecode",inputBytes:s.byteLength,totalMs:HA()-d,fallbackFrom:["wasmDecodeSVGAPayload-returned-null","wasmDecodeSVGA-returned-null"]})}const F=B!=null&&B.svgaParseProfile?HA():0;n=await bQ(R,B==null?void 0:B.svgaLoadFrameBudgetMs,E),B!=null&&B.svgaParseProfile&&(c=HA()-F)}}else{const l=B!=null&&B.svgaParseProfile?HA():0,w=RC(s);L(E,"SVGA parse aborted"),B!=null&&B.svgaParseProfile&&(r={path:"jsDecodeSVGAProto",operation:"protobufDecode",inputBytes:s.byteLength,totalMs:HA()-l});const D=B!=null&&B.svgaParseProfile?HA():0;n=await bQ(w,B==null?void 0:B.svgaLoadFrameBudgetMs,E),B!=null&&B.svgaParseProfile&&(c=HA()-D)}return Tg(n.params,n.spriteTable),B!=null&&B.svgaParseProfile&&(n.__debug={parser:{execution:"main",rawBytes:g.byteLength,inflatedBytes:s.byteLength,totalMs:HA()-a,inflate:o,protobuf:r,payloadSerializeMs:c,payloadDeserializeMs:h}},JQ(!0,n)),L(E,"SVGA parse aborted"),A?lQ(A,n):RB.set(C,n),n}),i={controller:Q,consumers:0,settled:!1,promise:null};return i.promise=e.finally(()=>{i.settled=!0,A?cB.get(A)===i&&cB.delete(A):hB.get(C)===i&&hB.delete(C)}),A?cB.set(A,i):hB.set(C,i),EC(i,B==null?void 0:B.signal)}async function is(C,A){L(A==null?void 0:A.signal,"SVGA parse aborted");let g;const I=typeof C=="string"?`svga-payload:${C}`:null;if(typeof C=="string"){if(g=new Uint8Array(await EI(C)),L(A==null?void 0:A.signal,"SVGA parse aborted"),I){const E=xC(I);if(E)return E.params}}else{g=new Uint8Array(C);const E=RB.get(C);if(E)return E.params}const B=(A==null?void 0:A.useWorker)!==!1&&typeof Worker!="undefined";return YC(A==null?void 0:A.svgaWorkerTaskConcurrency),(await jE(C,I,g,B,A)).params}async function fB(C,A){L(A==null?void 0:A.signal,"SVGA parse aborted");let g;const I=typeof C=="string"?`svga-payload:${C}`:null;if(typeof C=="string"){if(g=new Uint8Array(await EI(C)),L(A==null?void 0:A.signal,"SVGA parse aborted"),I){const E=xC(I);if(E)return yC(async()=>xQ(E,A))}}else g=new Uint8Array(C);const B=(A==null?void 0:A.useWorker)!==!1&&typeof Worker!="undefined";YC(A==null?void 0:A.svgaWorkerTaskConcurrency);const Q=await jE(C,I,g,B,A);return yC(async()=>xQ(Q,A))}function ts(){return{rects:[],cursorX:0,shelfY:0,shelfH:0,usedW:0,usedH:0}}function qQ(C){return C--,C|=C>>1,C|=C>>2,C|=C>>4,C|=C>>8,C|=C>>16,C+1}function as(C,A,g,I,B,Q){const E=Math.max(1,B-I),e=Math.min(1,Q,E/Math.max(A,g));return{key:C,width:A,height:g,packedWidth:Math.max(1,Math.floor(A*e)),packedHeight:Math.max(1,Math.floor(g*e)),scale:e}}function fC(C,A,g,I,B){const Q=A.packedWidth+I,E=A.packedHeight+I;if(C.cursorX+Q<=B&&C.shelfY+Math.max(C.shelfH,E)<=B)return C.rects.push({key:A.key,pageIndex:g,x:C.cursorX,y:C.shelfY,w:A.packedWidth,h:A.packedHeight}),C.cursorX+=Q,C.shelfH=Math.max(C.shelfH,E),C.usedW=Math.max(C.usedW,C.cursorX),C.usedH=Math.max(C.usedH,C.shelfY+C.shelfH),!0;const e=C.shelfY+C.shelfH;return e+E>B?!1:(C.shelfY=e,C.shelfH=0,C.cursorX=0,fC(C,A,g,I,B))}async function eC(C,A,g,I,B){const Q=[];for(const e of C)Q.push(as(e.key,e.width,e.height,A,g,I)),await B();Q.sort((e,i)=>i.packedHeight-e.packedHeight||i.packedWidth-e.packedWidth),await B();const E=[];for(const e of Q){let i=!1;for(let t=0;t<E.length;t++){if(fC(E[t],e,t,A,g)){i=!0;break}await B()}if(!i){const t=ts(),a=E.length;if(!fC(t,e,a,A,g))throw new Error(`SVGA atlas image too large: ${e.key} ${e.width}x${e.height}, max texture size ${g}`);E.push(t)}await B()}return E}async function vQ(C,A,g){const I=[];for(const B of C)I.push({rects:B.rects,atlasW:Math.min(A,qQ(Math.max(1,B.usedW))),atlasH:Math.min(A,qQ(Math.max(1,B.usedH)))}),await g();return I}async function os(C,A,g){let I=1;for(const B of C)I=Math.max(I,B.width,B.height),await g();return Math.max(1/Math.max(I,A),1e-4)}async function ss(C,A,g,I,B){const Q=Math.max(1,Math.floor(I)),E=await eC(C,A,g,1,B);if(E.length<=Q)return vQ(E,g,B);let e=await os(C,g,B),i=1,t=await eC(C,A,g,e,B);if(t.length>Q)throw new Error(`SVGA atlas needs ${t.length} pages even at minimum scale, max pages ${Q}`);for(let a=0;a<16;a++){const o=(e+i)*.5,s=await eC(C,A,g,o,B);s.length<=Q?(t=s,e=o):i=o,await B()}return vQ(t,g,B)}function ns(C,A,g,I,B,Q){if(g.w<=0||g.h<=0||Q<=0)return;const E=Math.max(1,Math.floor(Q*.5)),e=g.x,i=g.y,t=g.w,a=g.h,o=Math.min(E,e),s=Math.min(E,i),n=Math.min(E,I-(e+t)),r=Math.min(E,B-(i+a)),c=A.imageSmoothingEnabled;A.imageSmoothingEnabled=!1,o>0&&A.drawImage(C,e,i,1,a,e-o,i,o,a),n>0&&A.drawImage(C,e+t-1,i,1,a,e+t,i,n,a),s>0&&A.drawImage(C,e,i,t,1,e,i-s,t,s),r>0&&A.drawImage(C,e,i+a-1,t,1,e,i+a,t,r),o>0&&s>0&&A.drawImage(C,e,i,1,1,e-o,i-s,o,s),n>0&&s>0&&A.drawImage(C,e+t-1,i,1,1,e+t,i-s,n,s),o>0&&r>0&&A.drawImage(C,e,i+a-1,1,1,e-o,i+a,o,r),n>0&&r>0&&A.drawImage(C,e+t-1,i+a-1,1,1,e+t,i+a,n,r),A.imageSmoothingEnabled=c}const zE=`function x() {
4658
+ `,mQ=typeof self!="undefined"&&self.Blob&&new Blob(["URL.revokeObjectURL(import.meta.url);",OE],{type:"text/javascript;charset=utf-8"});function jo(C){let A;try{if(A=mQ&&(self.URL||self.webkitURL).createObjectURL(mQ),!A)throw"";const g=new Worker(A,{type:"module",name:C==null?void 0:C.name});return g.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(A)}),g}catch(g){return new Worker("data:text/javascript;charset=utf-8,"+encodeURIComponent(OE),{type:"module",name:C==null?void 0:C.name})}}let xI=null,zo=1;const zI=new Map;function PE(C){C.signal&&C.onAbort&&C.signal.removeEventListener("abort",C.onAbort)}function KB(C,A,g){xI===C&&(xI=null);try{C.terminate()}catch(I){}for(const[I,B]of zI)B.owner===C&&(zI.delete(I),PE(B),B.reject(g==null||I===g?A:new Error("SVGA image decode worker restarted after another request was canceled")))}function _o(){if(!xI){const C=new jo;xI=C,C.addEventListener("message",A=>{var g,I;const B=A.data;if(!B||B.type!=="decode-batch-result")return;const Q=zI.get(B.id);if(!Q||Q.owner!==C){for(const E of(g=B.results)!=null?g:[])(I=E.bitmap)==null||I.close();return}zI.delete(B.id),PE(Q),Q.resolve(B)}),C.addEventListener("error",A=>{KB(C,new Error(A.message||"SVGA image decode worker error"))}),C.addEventListener("messageerror",()=>{KB(C,new Error("SVGA image decode worker message deserialization failed"))})}return xI}function $o(){return typeof Worker!="undefined"&&typeof createImageBitmap=="function"}async function As(C,A,g){const I=OA({maxBudgetMs:A}),B=new Uint8Array(C.byteLength),Q=64*1024;J(g,"SVGA image decode aborted");for(let E=0;E<C.byteLength;E+=Q){const e=Math.min(E+Q,C.byteLength);B.set(C.subarray(E,e),E),e<C.byteLength&&I.shouldYield()&&await I.yield(),J(g,"SVGA image decode aborted")}return B.buffer}async function gs(C,A,g={}){return pC(async()=>{J(g.signal,"SVGA image decode aborted");const I=_o(),B=new Map,Q=Math.max(1,Math.min(256,Math.floor(A)));try{for(let E=0;E<C.length;E+=Q){J(g.signal,"SVGA image decode aborted");const e=C.slice(E,E+Q),i=[],t=[];for(const[s,n]of e){const r=await As(n,g.mainThreadFrameBudgetMs,g.signal);i.push({key:s,data:r}),t.push(r)}const a=zo++,o=await new Promise((s,n)=>{var r,c;const h={owner:I,signal:g.signal,resolve:s,reject:n};if(h.onAbort=()=>{KB(I,CA("SVGA image decode aborted"),a)},zI.set(a,h),(r=g.signal)!=null&&r.aborted){h.onAbort();return}(c=g.signal)==null||c.addEventListener("abort",h.onAbort,{once:!0});const l={type:"decode-batch",id:a,items:i,workerTimeSliceMs:g.workerTimeSliceMs,maxConcurrency:g.maxConcurrency};try{I.postMessage(l,t)}catch(w){KB(I,w instanceof Error?w:new Error(String(w)))}});J(g.signal,"SVGA image decode aborted");for(const s of o.results)s.bitmap&&B.set(s.key,s.bitmap)}return B}catch(E){for(const e of B.values())e.close();throw E}},g.signal)}const CC=[73,68,51],Is=128,QC=12,Bs=8,cB=new Map,RB=new WeakMap,hB=new WeakMap;function HA(){return typeof performance!="undefined"?performance.now():Date.now()}function JQ(C,A){C!==!0||!A.__debug||console.info("[GiftStage:SVGA:Profile]",A.__debug)}function Cs(C,A){return!!(C.startsWith("audio")||A.length>=3&&A[0]===CC[0]&&A[1]===CC[1]&&A[2]===CC[2])}async function mB(C,A,g){const I=OA({maxBudgetMs:A}),B=new Uint8Array(C.byteLength),Q=64*1024;J(g,"SVGA parse aborted");for(let E=0;E<C.byteLength;E+=Q){const e=Math.min(E+Q,C.byteLength);B.set(C.subarray(E,e),E),e<C.byteLength&&I.shouldYield()&&await I.yield(),J(g,"SVGA parse aborted")}return B.buffer}async function Qs(C,A,g){const I=[],B=new Map,Q=OA({maxBudgetMs:A});for(const[E,e]of C.images){if(J(g,"SVGA image collection aborted"),Cs(E,e)){B.set(E,await mB(e,A,g));continue}e.length!==0&&(I.push([E,e]),Q.shouldYield()&&await Q.yield(),J(g,"SVGA image collection aborted"))}return{imageEntries:I,audioBlobs:B}}async function LQ(C,A,g,I){const B=new Map,Q=Math.max(2,Math.min(32,Math.floor(A))),E=OA({maxBudgetMs:Math.max(2,g)});try{for(let e=0;e<C.length;e+=Q){J(I,"SVGA image decode aborted");const i=C.slice(e,e+Q);await Promise.all(i.map(async([t,a])=>{try{const o=await createImageBitmap(new Blob([new Uint8Array(a)]),{premultiplyAlpha:"none"});if(I!=null&&I.aborted)throw o.close(),CA("SVGA image decode aborted");B.set(t,o)}catch(o){if(Mg(o))throw o}})),e+Q<C.length&&E.shouldYield()&&await E.yield()}return B}catch(e){for(const i of B.values())i.close();throw e}}async function HQ(C,A,g){const I=new Map;if(C.length===0)return I;let B=4;const Q=2,E=24,e=OA({maxBudgetMs:Math.max(2,A)});try{for(let i=0;i<C.length;){J(g,"SVGA image decode aborted");const t=typeof performance!="undefined"?performance.now():0,a=Math.min(i+B,C.length),o=C.slice(i,a);await Promise.all(o.map(async([r,c])=>{try{const h=await createImageBitmap(new Blob([new Uint8Array(c)]),{premultiplyAlpha:"none"});if(g!=null&&g.aborted)throw h.close(),CA("SVGA image decode aborted");I.set(r,h)}catch(h){if(Mg(h))throw h}}));const s=e.budgetMs,n=typeof performance!="undefined"?performance.now()-t:s*.5;n<s*.45&&B<E?B=Math.min(E,B+2):n>s*1.4&&B>Q&&(B=Math.max(Q,B-2)),i=a,i<C.length&&e.shouldYield()&&await e.yield()}return I}catch(i){for(const t of I.values())t.close();throw i}}function Es(C){var A,g,I,B,Q,E,e;const i=(C==null?void 0:C.svgaLoadFrameBudgetMs)==null?(A=C==null?void 0:C.imageDecodeFrameBudgetMs)!=null?A:QC:Math.min(C.svgaLoadFrameBudgetMs,(g=C.imageDecodeFrameBudgetMs)!=null?g:QC);return{useImageBitmapDecodeWorker:(C==null?void 0:C.useImageBitmapDecodeWorker)!==!1,imageDecodeWorkerChunkSize:(I=C==null?void 0:C.imageDecodeWorkerChunkSize)!=null?I:Is,imageDecodeAdaptiveOnMainThread:(C==null?void 0:C.imageDecodeAdaptiveOnMainThread)!==!1,imageDecodeFrameBudgetMs:i,imageDecodeFixedBatchSize:(B=C==null?void 0:C.imageDecodeFixedBatchSize)!=null?B:Bs,svgaLoadFrameBudgetMs:(Q=C==null?void 0:C.svgaLoadFrameBudgetMs)!=null?Q:QC,svgaWorkerFrameBudgetMs:(E=C==null?void 0:C.svgaWorkerFrameBudgetMs)!=null?E:4,svgaWorkerImageDecodeConcurrency:(e=C==null?void 0:C.svgaWorkerImageDecodeConcurrency)!=null?e:2}}async function es(C,A){var g;const I=Es(A),{imageEntries:B,audioBlobs:Q}=await Qs(C,I.svgaLoadFrameBudgetMs,A==null?void 0:A.signal);let E;if(I.useImageBitmapDecodeWorker&&$o()&&B.length>0)try{E=await gs(B,I.imageDecodeWorkerChunkSize,{workerTimeSliceMs:I.svgaWorkerFrameBudgetMs,maxConcurrency:I.svgaWorkerImageDecodeConcurrency,mainThreadFrameBudgetMs:I.svgaLoadFrameBudgetMs,signal:A==null?void 0:A.signal})}catch(i){if(Mg(i))throw i;console.warn("[GiftStage:SVGA] image decode worker failed, using main thread",i),E=I.imageDecodeAdaptiveOnMainThread?await HQ(B,I.imageDecodeFrameBudgetMs,A==null?void 0:A.signal):await LQ(B,I.imageDecodeFixedBatchSize,I.imageDecodeFrameBudgetMs,A==null?void 0:A.signal)}else E=I.imageDecodeAdaptiveOnMainThread?await HQ(B,I.imageDecodeFrameBudgetMs,A==null?void 0:A.signal):await LQ(B,I.imageDecodeFixedBatchSize,I.imageDecodeFrameBudgetMs,A==null?void 0:A.signal);if((g=A==null?void 0:A.signal)!=null&&g.aborted){for(const i of E.values())i.close();throw CA("SVGA parse aborted")}return{movie:C,imageBitmaps:E,audioBlobs:Q}}async function xQ(C,A){return es(Po(C),A)}async function bQ(C,A,g){const I={};for(const[B,Q]of C.images)I[B]=await mB(Q,A,g);return{version:C.version,params:C.params,spriteTable:C.spriteTable,audios:C.audios,images:I}}function EC(C,A){return C.consumers++,new Promise((g,I)=>{let B=!1;const Q=e=>{B||(B=!0,A==null||A.removeEventListener("abort",E),C.consumers=Math.max(0,C.consumers-1),C.consumers===0&&!C.settled&&C.controller.abort(),e())},E=()=>{Q(()=>I(CA("SVGA parse aborted")))};if(A!=null&&A.aborted){E();return}A==null||A.addEventListener("abort",E,{once:!0}),C.promise.then(e=>Q(()=>g(e)),e=>Q(()=>I(e)))})}async function jE(C,A,g,I,B){if(J(B==null?void 0:B.signal,"SVGA parse aborted"),!A){const t=RB.get(C);if(t)return Tg(t.params,t.spriteTable),t;const a=hB.get(C);if(a)return EC(a,B==null?void 0:B.signal)}if(A){const t=xC(A);if(t)return Tg(t.params,t.spriteTable),t;const a=cB.get(A);if(a)return EC(a,B==null?void 0:B.signal)}const Q=new AbortController,E=Q.signal,e=yC(async()=>{var t;if(J(E,"SVGA parse aborted"),I)try{const w=typeof C=="string"&&g.byteOffset===0&&g.byteLength===g.buffer.byteLength?g.buffer:await mB(g,B==null?void 0:B.svgaLoadFrameBudgetMs,E),D=await Oo(w,{profile:B==null?void 0:B.svgaParseProfile,workerTimeSliceMs:B==null?void 0:B.svgaWorkerFrameBudgetMs,mainThreadFrameBudgetMs:B==null?void 0:B.svgaLoadFrameBudgetMs,signal:E});return J(E,"SVGA parse aborted"),Tg(D.params,D.spriteTable),JQ(B==null?void 0:B.svgaParseProfile,D),A?lQ(A,D):RB.set(C,D),D}catch(l){if(Mg(l))throw l;console.warn("[GiftStage:SVGA] worker parse failed, using main thread",l),g=typeof C=="string"?new Uint8Array(await QI(C)):new Uint8Array(C)}J(E,"SVGA parse aborted");const a=B!=null&&B.svgaParseProfile?HA():0;let o;const s=await ro(g,()=>DI()&&Jt(g),B!=null&&B.svgaParseProfile?l=>{o=l}:void 0);J(E,"SVGA parse aborted");let n,r,c,h;if(DI()){const l=B!=null&&B.svgaParseProfile?HA():0,w=B!=null&&B.svgaParseProfile?xt(s):null,D=(t=w==null?void 0:w.payload)!=null?t:Ht(s);if(J(E,"SVGA parse aborted"),D){B!=null&&B.svgaParseProfile&&(r={path:"wasmDecodeSVGAPayload",operation:"protobufDecodeAndPayloadBuild",inputBytes:s.byteLength,outputBytes:D.byteLength,totalMs:HA()-l,wasm:w==null?void 0:w.profile});const y=B!=null&&B.svgaParseProfile?HA():0,R=D.byteOffset===0&&D.byteLength===D.buffer.byteLength?D.buffer:await mB(D,B==null?void 0:B.svgaLoadFrameBudgetMs,E);n=await ZE(R,void 0,B==null?void 0:B.svgaLoadFrameBudgetMs,E),B!=null&&B.svgaParseProfile&&(h=HA()-y)}else{const y=B!=null&&B.svgaParseProfile?HA():0;let R=Lt(s);if(J(E,"SVGA parse aborted"),B!=null&&B.svgaParseProfile&&R)r={path:"wasmDecodeSVGA",operation:"protobufDecodeAndObjectConvert",inputBytes:s.byteLength,totalMs:HA()-y,fallbackFrom:["wasmDecodeSVGAPayload-returned-null"]};else{const d=B!=null&&B.svgaParseProfile?HA():0;R=RC(s),J(E,"SVGA parse aborted"),B!=null&&B.svgaParseProfile&&(r={path:"jsDecodeSVGAProto",operation:"protobufDecode",inputBytes:s.byteLength,totalMs:HA()-d,fallbackFrom:["wasmDecodeSVGAPayload-returned-null","wasmDecodeSVGA-returned-null"]})}const F=B!=null&&B.svgaParseProfile?HA():0;n=await bQ(R,B==null?void 0:B.svgaLoadFrameBudgetMs,E),B!=null&&B.svgaParseProfile&&(c=HA()-F)}}else{const l=B!=null&&B.svgaParseProfile?HA():0,w=RC(s);J(E,"SVGA parse aborted"),B!=null&&B.svgaParseProfile&&(r={path:"jsDecodeSVGAProto",operation:"protobufDecode",inputBytes:s.byteLength,totalMs:HA()-l});const D=B!=null&&B.svgaParseProfile?HA():0;n=await bQ(w,B==null?void 0:B.svgaLoadFrameBudgetMs,E),B!=null&&B.svgaParseProfile&&(c=HA()-D)}return Tg(n.params,n.spriteTable),B!=null&&B.svgaParseProfile&&(n.__debug={parser:{execution:"main",rawBytes:g.byteLength,inflatedBytes:s.byteLength,totalMs:HA()-a,inflate:o,protobuf:r,payloadSerializeMs:c,payloadDeserializeMs:h}},JQ(!0,n)),J(E,"SVGA parse aborted"),A?lQ(A,n):RB.set(C,n),n}),i={controller:Q,consumers:0,settled:!1,promise:null};return i.promise=e.finally(()=>{i.settled=!0,A?cB.get(A)===i&&cB.delete(A):hB.get(C)===i&&hB.delete(C)}),A?cB.set(A,i):hB.set(C,i),EC(i,B==null?void 0:B.signal)}async function is(C,A){J(A==null?void 0:A.signal,"SVGA parse aborted");let g;const I=typeof C=="string"?`svga-payload:${C}`:null;if(typeof C=="string"){if(g=new Uint8Array(await QI(C)),J(A==null?void 0:A.signal,"SVGA parse aborted"),I){const E=xC(I);if(E)return E.params}}else{g=new Uint8Array(C);const E=RB.get(C);if(E)return E.params}const B=(A==null?void 0:A.useWorker)!==!1&&typeof Worker!="undefined";return YC(A==null?void 0:A.svgaWorkerTaskConcurrency),(await jE(C,I,g,B,A)).params}async function fB(C,A){J(A==null?void 0:A.signal,"SVGA parse aborted");let g;const I=typeof C=="string"?`svga-payload:${C}`:null;if(typeof C=="string"){if(g=new Uint8Array(await QI(C)),J(A==null?void 0:A.signal,"SVGA parse aborted"),I){const E=xC(I);if(E)return yC(async()=>xQ(E,A))}}else g=new Uint8Array(C);const B=(A==null?void 0:A.useWorker)!==!1&&typeof Worker!="undefined";YC(A==null?void 0:A.svgaWorkerTaskConcurrency);const Q=await jE(C,I,g,B,A);return yC(async()=>xQ(Q,A))}function ts(){return{rects:[],cursorX:0,shelfY:0,shelfH:0,usedW:0,usedH:0}}function qQ(C){return C--,C|=C>>1,C|=C>>2,C|=C>>4,C|=C>>8,C|=C>>16,C+1}function as(C,A,g,I,B,Q){const E=Math.max(1,B-I),e=Math.min(1,Q,E/Math.max(A,g));return{key:C,width:A,height:g,packedWidth:Math.max(1,Math.floor(A*e)),packedHeight:Math.max(1,Math.floor(g*e)),scale:e}}function fC(C,A,g,I,B){const Q=A.packedWidth+I,E=A.packedHeight+I;if(C.cursorX+Q<=B&&C.shelfY+Math.max(C.shelfH,E)<=B)return C.rects.push({key:A.key,pageIndex:g,x:C.cursorX,y:C.shelfY,w:A.packedWidth,h:A.packedHeight}),C.cursorX+=Q,C.shelfH=Math.max(C.shelfH,E),C.usedW=Math.max(C.usedW,C.cursorX),C.usedH=Math.max(C.usedH,C.shelfY+C.shelfH),!0;const e=C.shelfY+C.shelfH;return e+E>B?!1:(C.shelfY=e,C.shelfH=0,C.cursorX=0,fC(C,A,g,I,B))}async function eC(C,A,g,I,B){const Q=[];for(const e of C)Q.push(as(e.key,e.width,e.height,A,g,I)),await B();Q.sort((e,i)=>i.packedHeight-e.packedHeight||i.packedWidth-e.packedWidth),await B();const E=[];for(const e of Q){let i=!1;for(let t=0;t<E.length;t++){if(fC(E[t],e,t,A,g)){i=!0;break}await B()}if(!i){const t=ts(),a=E.length;if(!fC(t,e,a,A,g))throw new Error(`SVGA atlas image too large: ${e.key} ${e.width}x${e.height}, max texture size ${g}`);E.push(t)}await B()}return E}async function vQ(C,A,g){const I=[];for(const B of C)I.push({rects:B.rects,atlasW:Math.min(A,qQ(Math.max(1,B.usedW))),atlasH:Math.min(A,qQ(Math.max(1,B.usedH)))}),await g();return I}async function os(C,A,g){let I=1;for(const B of C)I=Math.max(I,B.width,B.height),await g();return Math.max(1/Math.max(I,A),1e-4)}async function ss(C,A,g,I,B){const Q=Math.max(1,Math.floor(I)),E=await eC(C,A,g,1,B);if(E.length<=Q)return vQ(E,g,B);let e=await os(C,g,B),i=1,t=await eC(C,A,g,e,B);if(t.length>Q)throw new Error(`SVGA atlas needs ${t.length} pages even at minimum scale, max pages ${Q}`);for(let a=0;a<16;a++){const o=(e+i)*.5,s=await eC(C,A,g,o,B);s.length<=Q?(t=s,e=o):i=o,await B()}return vQ(t,g,B)}function ns(C,A,g,I,B,Q){if(g.w<=0||g.h<=0||Q<=0)return;const E=Math.max(1,Math.floor(Q*.5)),e=g.x,i=g.y,t=g.w,a=g.h,o=Math.min(E,e),s=Math.min(E,i),n=Math.min(E,I-(e+t)),r=Math.min(E,B-(i+a)),c=A.imageSmoothingEnabled;A.imageSmoothingEnabled=!1,o>0&&A.drawImage(C,e,i,1,a,e-o,i,o,a),n>0&&A.drawImage(C,e+t-1,i,1,a,e+t,i,n,a),s>0&&A.drawImage(C,e,i,t,1,e,i-s,t,s),r>0&&A.drawImage(C,e,i+a-1,t,1,e,i+a,t,r),o>0&&s>0&&A.drawImage(C,e,i,1,1,e-o,i-s,o,s),n>0&&s>0&&A.drawImage(C,e+t-1,i,1,1,e+t,i-s,n,s),o>0&&r>0&&A.drawImage(C,e,i+a-1,1,1,e-o,i+a,o,r),n>0&&r>0&&A.drawImage(C,e+t-1,i+a-1,1,1,e+t,i+a,n,r),A.imageSmoothingEnabled=c}const zE=`function x() {
4659
4659
  return {
4660
4660
  rects: [],
4661
4661
  cursorX: 0,
@@ -4918,7 +4918,7 @@ m.onmessage = (t) => {
4918
4918
  !e || e.type !== "build-svga-atlas" || Y.push(() => $(e));
4919
4919
  };
4920
4920
  //# sourceMappingURL=svga-atlas-worker-CkVFsaPa.js.map
4921
- `,TQ=typeof self!="undefined"&&self.Blob&&new Blob(["URL.revokeObjectURL(import.meta.url);",zE],{type:"text/javascript;charset=utf-8"});function rs(C){let A;try{if(A=TQ&&(self.URL||self.webkitURL).createObjectURL(TQ),!A)throw"";const g=new Worker(A,{type:"module",name:C==null?void 0:C.name});return g.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(A)}),g}catch(g){return new Worker("data:text/javascript;charset=utf-8,"+encodeURIComponent(zE),{type:"module",name:C==null?void 0:C.name})}}class Vg extends Error{constructor(A,g){super(A,g),this.name="SVGAAtlasWorkerBuildError"}}let bI=null,cs=1;const _I=new Map,qI=new Map;function vI(C){C.signal&&C.onAbort&&C.signal.removeEventListener("abort",C.onAbort)}function JB(C,A,g){bI===C&&(bI=null);try{C.terminate()}catch(I){}for(const[I,B]of _I)B.owner===C&&(_I.delete(I),vI(B),B.releaseGate(),B.reject(g==null||I===g?A:new Vg("SVGA atlas worker restarted after another request was canceled")));for(const[I,B]of qI)if(B.owner===C){qI.delete(I),vI(B),B.releaseGate();for(const Q of B.resolve)Q(null)}}function hs(){if(!bI){const C=new rs;bI=C,C.addEventListener("message",A=>{var g,I,B;const Q=A.data;if(!Q)return;if(Q.type==="build-svga-atlas-png-result"){const t=qI.get(Q.id);if(!t||t.owner!==C)return;const a=t.resolve[Q.pageIndex];if(!a)return;a(Q.pngBytes),t.remaining--,t.remaining<=0&&(qI.delete(Q.id),vI(t),t.releaseGate());return}if(Q.type!=="build-svga-atlas-result")return;const E=_I.get(Q.id);if(!E||E.owner!==C){for(const t of(g=Q.pages)!=null?g:[])t.bitmap.close();return}if(_I.delete(Q.id),Q.error){vI(E),E.releaseGate(),E.reject(new Vg(Q.error));return}const e=(I=Q.pages)!=null?I:[];let i;if(E.captureEncodedPng&&e.length>0){const t=[];i=e.map(()=>new Promise(a=>{t.push(a)})),qI.set(Q.id,{owner:C,remaining:e.length,releaseGate:E.releaseGate,signal:E.signal,onAbort:E.onAbort,resolve:t})}else vI(E),E.releaseGate();E.resolve({pages:e.map((t,a)=>({...t,pngBytesPromise:i==null?void 0:i[a]})),rects:(B=Q.rects)!=null?B:[]})}),C.addEventListener("error",A=>{JB(C,new Vg(A.message||"SVGA atlas worker error"))}),C.addEventListener("messageerror",()=>{JB(C,new Vg("SVGA atlas worker message deserialization failed"))})}return bI}function _E(){return typeof Worker!="undefined"&&nE()&&typeof createImageBitmap=="function"}async function ls(C,A){if(!_E())return Promise.reject(new Error("SVGA atlas worker unavailable"));const g=await iE(A.signal);try{L(A.signal,"SVGA atlas worker task aborted");const I=[],B=[];for(const[e,i]of C)I.push(e),B.push(i);let Q;try{Q=hs()}catch(e){throw g(),new Vg("SVGA atlas worker creation failed",{cause:e})}const E=cs++;return await new Promise((e,i)=>{var t,a;const o={owner:Q,captureEncodedPng:A.captureEncodedPng,releaseGate:g,signal:A.signal,resolve:e,reject:i};if(o.onAbort=()=>{JB(Q,new Vg("SVGA atlas worker task aborted",{cause:QA("SVGA atlas worker task aborted")}),E)},_I.set(E,o),(t=A.signal)!=null&&t.aborted){o.onAbort();return}(a=A.signal)==null||a.addEventListener("abort",o.onAbort,{once:!0});try{Q.postMessage({type:"build-svga-atlas",id:E,keys:I,bitmaps:B,maxSize:A.maxSize,padding:A.padding,maxPages:A.maxPages,captureEncodedPng:A.captureEncodedPng,workerTimeSliceMs:A.workerTimeSliceMs},B)}catch(s){JB(Q,new Vg("SVGA atlas worker postMessage failed",{cause:s}))}})}catch(I){throw g(),I}}function Ds(C,A){if(nE())return new OffscreenCanvas(C,A);if(typeof document=="undefined")throw new Error("Atlas compose needs OffscreenCanvas or DOM (document)");const g=document.createElement("canvas");return g.width=C,g.height=A,g}function ws(C){return C.getContext("2d")}async function ys(C){if(typeof OffscreenCanvas!="undefined"&&C instanceof OffscreenCanvas){if(typeof C.convertToBlob=="function")try{return await(await C.convertToBlob({type:"image/png"})).arrayBuffer()}catch(g){return null}return null}const A=C;return new Promise(g=>{try{A.toBlob(I=>{if(!I){g(null);return}I.arrayBuffer().then(g).catch(()=>g(null))},"image/png")}catch(I){g(null)}})}function $E(C,A){const g=C.map(Q=>Q.textureHandle),I=C.map(Q=>Q.encodedPngBytesPromise).filter(Q=>!!Q),B=C[0];return{textureHandle:B.textureHandle,textureHandles:g,pages:C,rects:A,atlasWidth:B.atlasWidth,atlasHeight:B.atlasHeight,encodedPngBytesPromise:B.encodedPngBytesPromise,encodedPngBytesPromises:I.length>0?I:void 0}}async function Fs(C,A,g,I,B){var Q;const E=OA({maxBudgetMs:B==null?void 0:B.mainThreadFrameBudgetMs}),e=async()=>{L(B==null?void 0:B.signal,"SVGA atlas build aborted"),E.shouldYield()&&await E.yield(),L(B==null?void 0:B.signal,"SVGA atlas build aborted")};L(B==null?void 0:B.signal,"SVGA atlas build aborted");const i=[];for(const[s,n]of C)i.push({key:s,width:n.width,height:n.height}),await e();const t=await ss(i,I,g,(Q=B==null?void 0:B.maxPages)!=null?Q:4,e);if(t.length===0)throw new Error("No atlas pages built");const a=new Map,o=[];try{for(let s=0;s<t.length;s++){L(B==null?void 0:B.signal,"SVGA atlas build aborted");const n=t[s],r=Ds(n.atlasW,n.atlasH),c=ws(r);if(!c)throw new Error("Atlas: 2d context unavailable");c.clearRect(0,0,n.atlasW,n.atlasH);for(let w=0;w<n.rects.length;w++){const D=n.rects[w],y=C.get(D.key);c.drawImage(y,D.x,D.y,D.w,D.h),ns(r,c,D,n.atlasW,n.atlasH,I),w+1<n.rects.length&&E.shouldYield()&&await E.yield(),L(B==null?void 0:B.signal,"SVGA atlas build aborted")}const h=(B==null?void 0:B.captureEncodedPng)===!0?ys(r):void 0;L(B==null?void 0:B.signal,"SVGA atlas build aborted");const l=A.createTexture(r,{width:n.atlasW,height:n.atlasH,filter:"linear",premultiplyAlpha:!0});for(const w of n.rects)a.set(w.key,{x:w.x/n.atlasW,y:w.y/n.atlasH,w:w.w/n.atlasW,h:w.h/n.atlasH,textureIndex:s});o.push({textureHandle:l,atlasWidth:n.atlasW,atlasHeight:n.atlasH,encodedPngBytesPromise:h})}}catch(s){for(const n of o)A.deleteTexture(n.textureHandle);throw s}return $E(o,a)}async function ds(C,A,g,I,B){var Q;const E=await ls(C,{maxSize:g,padding:I,maxPages:(Q=B==null?void 0:B.maxPages)!=null?Q:4,captureEncodedPng:(B==null?void 0:B.captureEncodedPng)===!0,workerTimeSliceMs:B==null?void 0:B.workerTimeSliceMs,signal:B==null?void 0:B.signal}),e=new Map;for(const a of E.rects)e.set(a.key,{x:a.x,y:a.y,w:a.w,h:a.h,textureIndex:a.textureIndex});const i=[],t=OA({maxBudgetMs:B==null?void 0:B.mainThreadFrameBudgetMs});try{for(let a=0;a<E.pages.length;a++){L(B==null?void 0:B.signal,"SVGA atlas upload aborted");const o=E.pages[a],s=A.createTexture(o.bitmap,{width:o.width,height:o.height,filter:"linear",premultiplyAlpha:!0,sourcePremultiplied:!0});try{o.bitmap.close()}catch(n){}i.push({textureHandle:s,atlasWidth:o.width,atlasHeight:o.height,encodedPngBytesPromise:(B==null?void 0:B.captureEncodedPng)===!0?o.pngBytesPromise:void 0}),a+1<E.pages.length&&t.shouldYield()&&await t.yield(),L(B==null?void 0:B.signal,"SVGA atlas upload aborted")}}catch(a){for(const o of E.pages)try{o.bitmap.close()}catch(s){}for(const o of i)A.deleteTexture(o.textureHandle);throw a}return $E(i,e)}async function Ae(C,A,g=4096,I=2,B){var Q;if(C.size===0)throw new Error("No images to build atlas from");const E=Math.max(64,Math.min(g,(Q=A.maxTextureSize)!=null?Q:g));return(B==null?void 0:B.useWorker)!==!1&&_E()?ds(C,A,E,I,B):Fs(C,A,E,I,B)}function Gs(C){return C}function us(C){return C*C}function Rs(C){return C*(2-C)}function fs(C){return C<.5?2*C*C:-1+(4-2*C)*C}function ge(C){const A=C-1;return A*A*A+1}function Ss(C){return C<.5?4*C*C*C:(C-1)*(2*C-2)*(2*C-2)+1}function Ms(C){return 1+2.70158*Math.pow(C-1,3)+1.70158*Math.pow(C-1,2)}let lB=null;function Ie(){return lB||(lB=Promise.resolve().then(()=>require("./mp4box.all-DH-U-29f.cjs")).catch(C=>{throw lB=null,C})),lB}var Ns=Object.defineProperty,Us=(C,A,g)=>A in C?Ns(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,eg=(C,A,g)=>Us(C,typeof A!="symbol"?A+"":A,g);const ks=800;function Ys(C){return C.startsWith("avc1")||C.startsWith("avc3")}function ps(C){const A=new Uint8Array(C);if(A.byteLength<8)return C;const g=A[4],I=A[5],B=A[6],Q=A[7];return g===97&&I===118&&B===99&&Q===67?C.slice(8):C}async function Ks(C){const A=C.avcC;if(!A)return;const{DataStream:g}=await Ie(),I=new g;A.write(I);const B=I.byteLength;if(B<=0)return;const Q=I.buffer.slice(0,B);return ps(Q)}async function ms(C){const{createFile:A}=await Ie();return new Promise((g,I)=>{const B=A(),Q=C.slice(0);Q.fileStart=0,B.onError=E=>{I(new Error(`mp4box: ${E}`))},B.onReady=E=>{var e,i,t,a,o,s,n;const r=(e=E.videoTracks)==null?void 0:e[0];if(!r){I(new Error("mp4box: no video track"));return}if(!Ys(r.codec)){I(new Error(`mp4box: unsupported video codec ${r.codec}`));return}if(r.nb_samples>ks){I(new Error(`mp4box: too many samples (${r.nb_samples})`));return}const c=[];B.onSamples=(l,w,D)=>{c.push(...D)},B.setExtractionOptions(r.id,null,{nbSamples:Math.max(r.nb_samples,1)}),B.start();const h=r.timescale>0?r.duration/r.timescale:E.duration/(E.timescale||1);if(c.length===0){I(new Error("mp4box: extraction produced no samples"));return}g({codec:r.codec,timescale:r.timescale,durationSec:Number.isFinite(h)?h:0,videoWidth:(a=(t=(i=r.video)==null?void 0:i.width)!=null?t:r.track_width)!=null?a:0,videoHeight:(n=(s=(o=r.video)==null?void 0:o.height)!=null?s:r.track_height)!=null?n:0,samples:c})},B.appendBuffer(Q),B.flush()})}const WQ=25e3;async function Js(C,A,g){const I=performance.now();let B=0;for(;C.decodeQueueSize>0;)if(await new Promise(Q=>queueMicrotask(Q)),B++,B%120===0&&await new Promise(Q=>setTimeout(Q,0)),performance.now()-I>g){console.warn("[GiftStage:WC] decodeQueue drain gave up",{label:A,decodeQueueSize:C.decodeQueueSize,spins:B});break}}async function Ls(C,A){console.info("[GiftStage:WC] VideoDecoder.flush…",A);try{await Promise.race([C.flush(),new Promise((g,I)=>{setTimeout(()=>I(new Error(`VideoDecoder.flush() timed out after ${WQ}ms (${JSON.stringify(A)})`)),WQ)})])}catch(g){try{C.close()}catch(I){}throw g}}class Hs{constructor(A,g,I,B,Q,E,e,i){this.decodeOrder=A,this.presTimes=g,this.timescale=I,this.codec=B,this.description=Q,this.duration=E,this.callbacks=e,eg(this,"decoder",null),eg(this,"nextChunk",0),eg(this,"chunksFed",0),eg(this,"targetNeedIdx"),eg(this,"lastPostedMax",-1),eg(this,"minPosted",Number.POSITIVE_INFINITY),eg(this,"playbackNeedFloor"),eg(this,"freeSlots",0),eg(this,"eosClosed",!1),eg(this,"pumpScheduled",!1),eg(this,"pumping",!1),eg(this,"destroyed",!1),eg(this,"onDecoderDequeue",()=>this.schedulePump()),this.targetNeedIdx=i,this.playbackNeedFloor=rI(g,E,0),this.freeSlots=Math.max(1,i-this.playbackNeedFloor+1),this.schedulePump()}ensure(A,g){this.destroyed||(this.targetNeedIdx=Math.max(this.targetNeedIdx,A),this.freeSlots=Math.max(0,g),this.schedulePump())}rewind(){this.destroyed||this.doRewind()}destroy(){var A,g;if(this.destroyed=!0,this.decoder&&this.decoder.state!=="closed"){(g=(A=this.decoder).removeEventListener)==null||g.call(A,"dequeue",this.onDecoderDequeue);try{this.decoder.close()}catch(I){}}this.decoder=null}schedulePump(){this.pumpScheduled||this.destroyed||(this.pumpScheduled=!0,queueMicrotask(()=>{this.pumpScheduled=!1,this.runPump()}))}async doRewind(){var A,g;if(this.decoder&&this.decoder.state!=="closed"){(g=(A=this.decoder).removeEventListener)==null||g.call(A,"dequeue",this.onDecoderDequeue);try{this.decoder.close()}catch(B){}}this.decoder=null,this.nextChunk=Ts(this.decodeOrder),this.chunksFed=0,this.lastPostedMax=-1,this.minPosted=Number.POSITIVE_INFINITY,this.eosClosed=!1;const I=rI(this.presTimes,this.duration,0);this.playbackNeedFloor=I,this.targetNeedIdx=Math.max(this.targetNeedIdx,Math.min(this.presTimes.length-1,Math.max(0,I))),this.freeSlots=1,this.schedulePump()}async openDecoder(){var A;if(this.decoder&&this.decoder.state!=="closed")return;const g=await Ws(this.codec,this.description),I=new VideoDecoder({output:B=>{var Q,E,e,i;if((E=(Q=this.callbacks).onDecoded)==null||E.call(Q),this.destroyed){try{B.close()}catch(o){}return}const t=vs(this.presTimes,B.timestamp),a=Number.isFinite(this.minPosted)&&this.minPosted<=this.playbackNeedFloor;if(this.freeSlots<=0&&a){try{B.close()}catch(o){}(i=(e=this.callbacks).onDropped)==null||i.call(e),this.schedulePump();return}this.lastPostedMax=Math.max(this.lastPostedMax,t),this.minPosted=Math.min(this.minPosted,t),this.freeSlots>0&&this.freeSlots--,this.callbacks.onFrame(t,B),this.schedulePump()},error:B=>{this.callbacks.onError?this.callbacks.onError(B):console.error("[GiftStage:WC] IncrementalH264Decoder VideoDecoder error",B)}});I.configure(g),(A=I.addEventListener)==null||A.call(I,"dequeue",this.onDecoderDequeue),this.decoder=I}feedOneChunk(){var A,g;const I=this.decoder,B=this.nextChunk;if(B>=this.decodeOrder.length)return;const Q=this.decodeOrder[B];this.nextChunk=B+1;const E=Q.data;if(!E||E.byteLength===0)return;const e=(g=(A=Q.cts)!=null?A:Q.dts)!=null?g:0,i=Math.round(e/this.timescale*1e6),t=Q.duration&&this.timescale>0?Math.round(Q.duration/this.timescale*1e6):void 0,a=new Uint8Array(E.byteLength);a.set(E);const o=new EncodedVideoChunk({type:Q.is_sync?"key":"delta",timestamp:i,duration:t,data:a});I.decode(o),this.chunksFed++}async finalizeEos(){var A,g,I;if(!this.decoder||this.eosClosed)return;const B=this.decoder;await Js(B,"before flush",1e4);const Q=B.decodeQueueSize;await Ls(B,{chunksDecoded:this.chunksFed,outputsBeforeFlush:this.lastPostedMax+1,queueBeforeFlush:Q});try{(A=B.removeEventListener)==null||A.call(B,"dequeue",this.onDecoderDequeue),B.close()}catch(E){}this.decoder=null,this.eosClosed=!0,(I=(g=this.callbacks).onEos)==null||I.call(g)}async runPump(){if(!(this.destroyed||this.pumping)){this.pumping=!0;try{for(;!this.destroyed;){if(this.eosClosed)return;const A=this.nextChunk<this.decodeOrder.length,g=Number.isFinite(this.minPosted)&&this.minPosted<=this.playbackNeedFloor;if(!A&&!this.eosClosed){await this.finalizeEos();continue}if(this.lastPostedMax>=this.targetNeedIdx&&g||this.freeSlots<=0&&g)return;await this.openDecoder();const I=this.freeSlots>0?this.freeSlots:1,B=Math.max(1,Math.min(2,I));if(this.decoder.decodeQueueSize>=B)return;this.feedOneChunk(),this.chunksFed%2===0&&await new Promise(Q=>setTimeout(Q,0))}}finally{this.pumping=!1}}}}function rI(C,A,g){if(C.length===0)return 0;const I=C.length;if(g<=C[0])return 0;const B=C[I-1];if(g>=A||g>=B)return I-1;let Q=0,E=I-1;for(;Q+1<E;){const e=Q+E>>>1;C[e]<=g?Q=e:E=e}return Q}function xs(C,A){if(A.length===0)return 1e-6;const g=A.length,I=g-1,B=A[I],Q=g>=2?A[I]-A[I-1]:1/30,E=B+Q;let e=C>0?C:E;if(!(e>0)&&g>=2){const i=(A[g-1]-A[0])/(g-1);e=A[g-1]+(i>0?i:1/30)}return e>0||(e=Math.max(E,1/30)),e}function bs(C,A){var g,I;if(C.length===0)return new Float64Array(0);const B=C.map((E,e)=>e);B.sort((E,e)=>{var i,t,a,o;const s=C[E],n=C[e],r=(t=(i=s.cts)!=null?i:s.dts)!=null?t:0,c=(o=(a=n.cts)!=null?a:n.dts)!=null?o:0;return r!==c?r-c:E-e});const Q=new Float64Array(B.length);for(let E=0;E<B.length;E++){const e=C[B[E]];Q[E]=((I=(g=e.cts)!=null?g:e.dts)!=null?I:0)/A}return Q}function qs(C){return[...C].sort((A,g)=>{var I,B,Q,E;const e=((B=(I=A.dts)!=null?I:A.cts)!=null?B:0)-((E=(Q=g.dts)!=null?Q:g.cts)!=null?E:0);return e!==0?e:0})}function vs(C,A){if(C.length===0)return 0;const g=A/1e6;let I=0,B=1/0;for(let Q=0;Q<C.length;Q++){const E=Math.abs(C[Q]-g);E<B&&(B=E,I=Q)}return I}function Ts(C){for(let A=0;A<C.length;A++)if(C[A].is_sync)return A;return 0}async function Ws(C,A){var g;const I={codec:C,hardwareAcceleration:"prefer-software",...A&&A.byteLength>0?{description:A}:{}};let B=await VideoDecoder.isConfigSupported(I),Q=I;if(!B.supported){const E={codec:C,...A&&A.byteLength>0?{description:A}:{}};if(B=await VideoDecoder.isConfigSupported(E),!B.supported)throw new Error(`WebCodecs: unsupported config ${C}`);Q=E}return(g=B.config)!=null?g:Q}function Vs(C){return new Worker(""+(typeof document=="undefined"?require("url").pathToFileURL(__dirname+"/assets/webcodecs-mp4.worker-DeS4ARzq.js").href:new URL("assets/webcodecs-mp4.worker-DeS4ARzq.js",document.currentScript&&document.currentScript.tagName.toUpperCase()==="SCRIPT"&&document.currentScript.src||document.baseURI).href),{type:"module",name:C==null?void 0:C.name})}var Zs=Object.defineProperty,Xs=(C,A,g)=>A in C?Zs(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,NA=(C,A,g)=>Xs(C,typeof A!="symbol"?A+"":A,g);const Os=28,Ps=8,$A={decodedFrames:0,postedFrames:0,closedFrames:0,residentPeak:0,workerMessages:0};class VQ{constructor(A){NA(this,"maxSize"),NA(this,"map",new Map),NA(this,"playbackHint",0),this.maxSize=Math.max(4,A)}setPlaybackHint(A){Number.isFinite(A)&&A>=0&&(this.playbackHint=A,this.evictConsumedFrames())}evictConsumedFrames(){const A=Math.max(4,Math.floor(this.maxSize*.35)),g=this.playbackHint-A;if(!(g<=0))for(const I of this.map.keys())I<g&&this.closeKey(I)}minKey(){let A;for(const g of this.map.keys())(A===void 0||g<A)&&(A=g);return A}set(A,g){const I=this.map.get(A);if(I&&I!==g)try{I.close()}catch(B){}this.map.set(A,g),$A.residentPeak=Math.max($A.residentPeak,this.map.size),this.evictDownToCapacity()}evictDownToCapacity(){var A;const g=Math.max(4,Math.floor(this.maxSize*.35)),I=Math.max(4,this.maxSize-g-2);for(;this.map.size>this.maxSize;){const B=this.playbackHint;let Q,E,e,i=-1;for(const a of this.map.keys()){a<B-g&&(Q===void 0||a<Q)&&(Q=a),a>B+I&&(E===void 0||a>E)&&(E=a);const o=Math.abs(a-B);o>=i&&(i=o,e=a)}const t=(A=Q!=null?Q:E)!=null?A:e;if(t===void 0)return;this.closeKey(t)}}closeKey(A){const g=this.map.get(A);this.map.delete(A);try{g==null||g.close(),g&&$A.closedFrames++}catch(I){}}bestAtOrBefore(A){let g=-1;for(const I of this.map.keys())I<=A&&I>g&&(g=I);return g<0?null:this.map.get(g)}frameForDisplay(A){var g;let I=-1,B=Number.POSITIVE_INFINITY,Q=-1;for(const e of this.map.keys())e<=A&&e>I&&(I=e),e>=A&&e<B&&(B=e),e>Q&&(Q=e);const E=I>=0?I:Number.isFinite(B)?B:Q;return E>=0&&(g=this.map.get(E))!=null?g:null}clear(){for(const A of this.map.values())try{A.close()}catch(g){}this.map.clear()}get size(){return this.map.size}}function iC(C,A,g){return new Promise((I,B)=>{const Q=performance.now(),E=()=>{try{if(C()){I();return}if(performance.now()-Q>A){B(new Error(`WebCodecs: timeout waiting for ${g}`));return}setTimeout(E,0)}catch(e){B(e instanceof Error?e:new Error(String(e)))}};setTimeout(E,0)})}let js=1;class QI{constructor(A,g,I,B,Q,E,e,i,t,a,o,s=null){NA(this,"duration"),NA(this,"videoWidth"),NA(this,"videoHeight"),NA(this,"timesSec"),NA(this,"worker"),NA(this,"workerMsgId"),NA(this,"mainThreadDecoder"),NA(this,"streaming"),NA(this,"ring"),NA(this,"frames"),NA(this,"maxDecodedFrames"),NA(this,"decodeAheadFrames"),NA(this,"lastWrapped",-1),NA(this,"lastEnsureNeedIdx",-1),NA(this,"lastEnsureFreeSlots",-1),NA(this,"destroyed",!1),this.duration=A,this.videoWidth=g,this.videoHeight=I,this.timesSec=B,this.worker=Q,this.workerMsgId=E,this.streaming=e,this.ring=i,this.frames=t,this.maxDecodedFrames=a,this.decodeAheadFrames=o,this.mainThreadDecoder=s}static async create(A,g,I){var B,Q;if(typeof VideoDecoder=="undefined")throw new Error("WebCodecs VideoDecoder not available");const E=(I==null?void 0:I.useWorker)!==!1,e=(B=I==null?void 0:I.maxDecodedFrames)!=null?B:Os,i=(Q=I==null?void 0:I.decodeAheadFrames)!=null?Q:Ps;let t;if(typeof A=="string"?t=await zs(A,g):t=A,E&&typeof Worker!="undefined"){const a=t.slice(0);try{return await QI.createViaWorker(a,e,i)}catch(o){console.warn("[GiftStage:WC] Worker decode failed, falling back to main thread",o)}}return QI.createOnMainThread(t,e,i)}static async createViaWorker(A,g,I){const B=new Vs,Q=js++,E=new VQ(g);let e=0,i=0,t=0,a=new Float64Array(0),o=!1,s=null;const n=w=>{const D=w.data;if(!(!D||D.id!==Q)){if($A.workerMessages++,D.type==="meta"){e=D.duration,i=D.videoWidth,t=D.videoHeight;const y=D.timesSec;a=new Float64Array(y.buffer,y.byteOffset,y.length),o=!0;return}if(D.type==="frame"){$A.decodedFrames++,$A.postedFrames++,E.set(D.index,D.frame);return}D.type!=="eos"&&D.type==="error"&&(s=new Error(D.message))}},r=w=>{s=new Error(w.message||"Worker error")};B.addEventListener("message",n),B.addEventListener("error",r);const c=A;B.postMessage({type:"init",id:Q,buffer:c,maxDecodedFrames:g,decodeAheadFrames:I},[c]),$A.workerMessages++;try{if(await iC(()=>o||s!=null,6e4,"meta"),s)throw s;const w=e>0?e:1e-6,D=rI(a,w,0);if(await iC(()=>s!=null||E.bestAtOrBefore(D)!=null,6e4,"first frame"),s)throw s}catch(w){throw B.removeEventListener("message",n),B.removeEventListener("error",r),B.terminate(),E.clear(),w instanceof Error?w:new Error(String(w))}const h=a.length>0?a[0]:0,l=a.length>0?a[a.length-1]:0;return console.info(`[GiftStage:WC] worker streaming ready frames=${a.length} duration=${e.toFixed(4)}s size=${i}x${t} times=[${h.toFixed(4)} … ${l.toFixed(4)}] ring=${g}`),new QI(e,i,t,a,B,Q,!0,E,null,g,I)}static async createOnMainThread(A,g,I){console.info("[GiftStage:WC] mp4box demux (main thread)…");const B=await ms(A);if(B.samples.length===0)throw new Error("mp4box: no samples");const E=B.samples[0].description,e=E?await Ks(E):void 0,i=qs(B.samples),t=bs(B.samples,B.timescale),a=xs(B.durationSec,t),o=B.videoWidth||0,s=B.videoHeight||0,n=new VQ(g);let r=null;console.info("[GiftStage:WC] VideoDecoder incremental decode (main thread)…");const c=rI(t,a,0),h=Math.min(t.length-1,Math.max(0,c+Math.max(0,I))),l=new Hs(i,t,B.timescale,B.codec,e,a,{onFrame:(y,R)=>{$A.postedFrames++,n.set(y,R)},onDecoded:()=>{$A.decodedFrames++},onDropped:()=>{$A.closedFrames++},onError:y=>{r=y instanceof Error?y:new Error(String(y))}},h);try{if(await iC(()=>r!=null||n.bestAtOrBefore(c)!=null,6e4,"first frame (main thread)"),r)throw r}catch(y){throw l.destroy(),n.clear(),y instanceof Error?y:new Error(String(y))}const w=t.length>0?t[0]:0,D=t.length>0?t[t.length-1]:0;return console.info(`[GiftStage:WC] main incremental decode ready frames=${t.length} duration=${a.toFixed(4)}s size=${o}x${s} times=[${w.toFixed(4)} … ${D.toFixed(4)}] ring=${g}`),new QI(a,o,s,t,null,0,!0,n,null,g,I,l)}sendRewind(){var A;this.worker?(this.worker.postMessage({type:"rewind",id:this.workerMsgId}),$A.workerMessages++):(A=this.mainThreadDecoder)==null||A.rewind()}sendEnsure(A,g){var I;this.worker?(this.worker.postMessage({type:"ensure",id:this.workerMsgId,needIdx:A,freeSlots:g}),$A.workerMessages++):(I=this.mainThreadDecoder)==null||I.ensure(A,g)}ensureDecodedThrough(A){var g,I,B,Q,E;if(this.destroyed||!this.streaming||!this.worker&&!this.mainThreadDecoder)return;const e=this.duration>0?this.duration:1e-6;if(!Number.isFinite(A)||!Number.isFinite(e))return;const i=(A%e+e)%e;if(this.lastWrapped>=0&&i<this.lastWrapped-.001&&this.lastWrapped>e*.1&&((g=this.ring)==null||g.clear(),this.lastEnsureNeedIdx=-1,this.lastEnsureFreeSlots=-1,this.sendRewind()),this.lastWrapped=i,this.timesSec.length===0)return;const t=rI(this.timesSec,e,i);(I=this.ring)==null||I.setPlaybackHint(t);const a=(B=this.ring)==null?void 0:B.minKey(),o=Math.max(4,this.decodeAheadFrames);this.ring&&a!==void 0&&a>t+o&&(this.ring.clear(),this.lastEnsureNeedIdx=-1,this.lastEnsureFreeSlots=-1,this.sendRewind());const s=Math.min(this.timesSec.length-1,Math.max(0,t+Math.max(0,this.decodeAheadFrames))),n=Math.max(0,this.maxDecodedFrames-((E=(Q=this.ring)==null?void 0:Q.size)!=null?E:0));s===this.lastEnsureNeedIdx&&n===this.lastEnsureFreeSlots||(this.lastEnsureNeedIdx=s,this.lastEnsureFreeSlots=n,this.sendEnsure(s,n))}getFrameForTime(A){var g,I,B;if(this.timesSec.length===0)return null;const Q=this.duration>0?this.duration:1e-6;if(!Number.isFinite(A)||!Number.isFinite(Q))return console.warn("[GiftStage:WC] getFrameForTime bad input",{tSec:A,clip:Q,frames:this.timesSec.length}),this.streaming&&this.ring?this.ring.frameForDisplay(0):(I=(g=this.frames)==null?void 0:g[0])!=null?I:null;const E=(A%Q+Q)%Q,e=rI(this.timesSec,Q,E);if(this.streaming&&this.ring){this.ring.setPlaybackHint(e);const t=this.ring.frameForDisplay(e);return t||console.warn("[GiftStage:WC] getFrameForTime no frame in ring",{idx:e,wrapped:E,clip:Q}),t}const i=(B=this.frames)==null?void 0:B[e];return i||console.warn("[GiftStage:WC] getFrameForTime missing frame at index",{idx:e,wrapped:E,clip:Q}),i!=null?i:null}destroy(){var A,g;if(!this.destroyed){if(this.destroyed=!0,this.worker){try{this.worker.postMessage({type:"destroy",id:this.workerMsgId}),$A.workerMessages++}catch(I){}try{this.worker.terminate()}catch(I){}}if((A=this.mainThreadDecoder)==null||A.destroy(),(g=this.ring)==null||g.clear(),this.frames){for(const I of this.frames)try{I==null||I.close(),I&&$A.closedFrames++}catch(B){}this.frames.length=0}}}}async function zs(C,A){return EI(C,A)}function ZQ(C,A,g,I,B){const Q=Math.max(1,Math.floor(A)),E=Math.max(1,Math.floor(g)),e=Math.max(1,C.width*rg(C)),i=Math.max(1,C.height*cg(C));let t;const a=XA(C);if(a==="contain"||a==="cover"){let o,s;if(I==="alphaVideo")o=Q*.5,s=E;else{if(!B)return t=Math.min(1,e/Q,i/E),tC(Q,E,t);({w:o,h:s}=CI(B.info))}if(!(o>0)||!(s>0))return t=Math.min(1,e/Q,i/E),tC(Q,E,t);const n=a==="cover"?Math.max(e/o,i/s):Math.min(e/o,i/s);t=Math.min(1,n)}else t=Math.min(1,e/Q,i/E);return tC(Q,E,t)}function tC(C,A,g){const I=Math.max(1,Math.min(C,Math.ceil(C*g))),B=Math.max(1,Math.min(A,Math.ceil(A*g)));return{w:I,h:B}}var _s=Object.defineProperty,$s=(C,A,g)=>A in C?_s(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,ig=(C,A,g)=>$s(C,typeof A!="symbol"?A+"":A,g);const $I=9;function An(C,A){if(typeof document=="undefined"||typeof document.createElement!="function")throw new Error("VAP mixed rendering requires DOM canvas support");const g=document.createElement("canvas");return g.width=Math.max(1,Math.round(C)),g.height=Math.max(1,Math.round(A)),g}function LB(C,A,g,I,B,Q){return[C/B,(C+g)/B,(Q-A-I)/Q,(Q-A)/Q]}function XQ(C,A,g){const I=C.createShader(A);if(!I)throw new Error("Failed to create VAP mix shader");if(C.shaderSource(I,g),C.compileShader(I),!C.getShaderParameter(I,C.COMPILE_STATUS)){const B=C.getShaderInfoLog(I)||"unknown shader compile error";throw C.deleteShader(I),new Error(`Failed to compile VAP mix shader: ${B}`)}return I}function gn(C,A,g){const I=XQ(C,C.VERTEX_SHADER,A),B=XQ(C,C.FRAGMENT_SHADER,g),Q=C.createProgram();if(!Q)throw C.deleteShader(I),C.deleteShader(B),new Error("Failed to create VAP mix program");if(C.attachShader(Q,I),C.attachShader(Q,B),C.linkProgram(Q),!C.getProgramParameter(Q,C.LINK_STATUS)){const E=C.getProgramInfoLog(Q)||"unknown program link error";throw C.deleteProgram(Q),C.deleteShader(I),C.deleteShader(B),new Error(`Failed to link VAP mix program: ${E}`)}return C.useProgram(Q),{program:Q,vertexShader:I,fragmentShader:B}}function OQ(C,A,g,I=!1){const B=C.createTexture();if(!B)throw new Error("Failed to create VAP mix texture");return C.activeTexture(C.TEXTURE0+A),C.bindTexture(C.TEXTURE_2D,B),C.texParameteri(C.TEXTURE_2D,C.TEXTURE_MIN_FILTER,C.LINEAR),C.texParameteri(C.TEXTURE_2D,C.TEXTURE_MAG_FILTER,C.LINEAR),C.texParameteri(C.TEXTURE_2D,C.TEXTURE_WRAP_S,C.CLAMP_TO_EDGE),C.texParameteri(C.TEXTURE_2D,C.TEXTURE_WRAP_T,C.CLAMP_TO_EDGE),g?(C.pixelStorei(C.UNPACK_FLIP_Y_WEBGL,I?1:0),C.texImage2D(C.TEXTURE_2D,0,C.RGBA,C.RGBA,C.UNSIGNED_BYTE,g),C.pixelStorei(C.UNPACK_FLIP_Y_WEBGL,0)):C.texImage2D(C.TEXTURE_2D,0,C.RGBA,1,1,0,C.RGBA,C.UNSIGNED_BYTE,null),B}function In(C){const[A,g,I,B]=C.rgbFrame,[Q,E,e,i]=C.aFrame,t=LB(A,g,I,B,C.videoW,C.videoH),a=LB(Q,E,e,i,C.videoW,C.videoH);return new Float32Array([-1,1,t[0],t[3],a[0],a[3],1,1,t[1],t[3],a[1],a[3],-1,-1,t[0],t[2],a[0],a[2],1,-1,t[1],t[2],a[1],a[2]])}function Bn(C,A,g){const I=Math.max(1,A)*$I,B=[],Q=[],E=g?"texture":"texture2D";for(let i=0;i<C;i++)B.push(`uniform sampler2D u_image${i+1};`),Q.push(`if (ndx == ${i+1}) { color = ${E}(u_image${i+1}, uv); }`);const e=g?"fragColor":"gl_FragColor";return`${g?"#version 300 es":""}
4921
+ `,TQ=typeof self!="undefined"&&self.Blob&&new Blob(["URL.revokeObjectURL(import.meta.url);",zE],{type:"text/javascript;charset=utf-8"});function rs(C){let A;try{if(A=TQ&&(self.URL||self.webkitURL).createObjectURL(TQ),!A)throw"";const g=new Worker(A,{type:"module",name:C==null?void 0:C.name});return g.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(A)}),g}catch(g){return new Worker("data:text/javascript;charset=utf-8,"+encodeURIComponent(zE),{type:"module",name:C==null?void 0:C.name})}}class Vg extends Error{constructor(A,g){super(A,g),this.name="SVGAAtlasWorkerBuildError"}}let bI=null,cs=1;const _I=new Map,qI=new Map;function vI(C){C.signal&&C.onAbort&&C.signal.removeEventListener("abort",C.onAbort)}function JB(C,A,g){bI===C&&(bI=null);try{C.terminate()}catch(I){}for(const[I,B]of _I)B.owner===C&&(_I.delete(I),vI(B),B.releaseGate(),B.reject(g==null||I===g?A:new Vg("SVGA atlas worker restarted after another request was canceled")));for(const[I,B]of qI)if(B.owner===C){qI.delete(I),vI(B),B.releaseGate();for(const Q of B.resolve)Q(null)}}function hs(){if(!bI){const C=new rs;bI=C,C.addEventListener("message",A=>{var g,I,B;const Q=A.data;if(!Q)return;if(Q.type==="build-svga-atlas-png-result"){const t=qI.get(Q.id);if(!t||t.owner!==C)return;const a=t.resolve[Q.pageIndex];if(!a)return;a(Q.pngBytes),t.remaining--,t.remaining<=0&&(qI.delete(Q.id),vI(t),t.releaseGate());return}if(Q.type!=="build-svga-atlas-result")return;const E=_I.get(Q.id);if(!E||E.owner!==C){for(const t of(g=Q.pages)!=null?g:[])t.bitmap.close();return}if(_I.delete(Q.id),Q.error){vI(E),E.releaseGate(),E.reject(new Vg(Q.error));return}const e=(I=Q.pages)!=null?I:[];let i;if(E.captureEncodedPng&&e.length>0){const t=[];i=e.map(()=>new Promise(a=>{t.push(a)})),qI.set(Q.id,{owner:C,remaining:e.length,releaseGate:E.releaseGate,signal:E.signal,onAbort:E.onAbort,resolve:t})}else vI(E),E.releaseGate();E.resolve({pages:e.map((t,a)=>({...t,pngBytesPromise:i==null?void 0:i[a]})),rects:(B=Q.rects)!=null?B:[]})}),C.addEventListener("error",A=>{JB(C,new Vg(A.message||"SVGA atlas worker error"))}),C.addEventListener("messageerror",()=>{JB(C,new Vg("SVGA atlas worker message deserialization failed"))})}return bI}function _E(){return typeof Worker!="undefined"&&nE()&&typeof createImageBitmap=="function"}async function ls(C,A){if(!_E())return Promise.reject(new Error("SVGA atlas worker unavailable"));const g=await iE(A.signal);try{J(A.signal,"SVGA atlas worker task aborted");const I=[],B=[];for(const[e,i]of C)I.push(e),B.push(i);let Q;try{Q=hs()}catch(e){throw g(),new Vg("SVGA atlas worker creation failed",{cause:e})}const E=cs++;return await new Promise((e,i)=>{var t,a;const o={owner:Q,captureEncodedPng:A.captureEncodedPng,releaseGate:g,signal:A.signal,resolve:e,reject:i};if(o.onAbort=()=>{JB(Q,new Vg("SVGA atlas worker task aborted",{cause:CA("SVGA atlas worker task aborted")}),E)},_I.set(E,o),(t=A.signal)!=null&&t.aborted){o.onAbort();return}(a=A.signal)==null||a.addEventListener("abort",o.onAbort,{once:!0});try{Q.postMessage({type:"build-svga-atlas",id:E,keys:I,bitmaps:B,maxSize:A.maxSize,padding:A.padding,maxPages:A.maxPages,captureEncodedPng:A.captureEncodedPng,workerTimeSliceMs:A.workerTimeSliceMs},B)}catch(s){JB(Q,new Vg("SVGA atlas worker postMessage failed",{cause:s}))}})}catch(I){throw g(),I}}function Ds(C,A){if(nE())return new OffscreenCanvas(C,A);if(typeof document=="undefined")throw new Error("Atlas compose needs OffscreenCanvas or DOM (document)");const g=document.createElement("canvas");return g.width=C,g.height=A,g}function ws(C){return C.getContext("2d")}async function ys(C){if(typeof OffscreenCanvas!="undefined"&&C instanceof OffscreenCanvas){if(typeof C.convertToBlob=="function")try{return await(await C.convertToBlob({type:"image/png"})).arrayBuffer()}catch(g){return null}return null}const A=C;return new Promise(g=>{try{A.toBlob(I=>{if(!I){g(null);return}I.arrayBuffer().then(g).catch(()=>g(null))},"image/png")}catch(I){g(null)}})}function $E(C,A){const g=C.map(Q=>Q.textureHandle),I=C.map(Q=>Q.encodedPngBytesPromise).filter(Q=>!!Q),B=C[0];return{textureHandle:B.textureHandle,textureHandles:g,pages:C,rects:A,atlasWidth:B.atlasWidth,atlasHeight:B.atlasHeight,encodedPngBytesPromise:B.encodedPngBytesPromise,encodedPngBytesPromises:I.length>0?I:void 0}}async function Fs(C,A,g,I,B){var Q;const E=OA({maxBudgetMs:B==null?void 0:B.mainThreadFrameBudgetMs}),e=async()=>{J(B==null?void 0:B.signal,"SVGA atlas build aborted"),E.shouldYield()&&await E.yield(),J(B==null?void 0:B.signal,"SVGA atlas build aborted")};J(B==null?void 0:B.signal,"SVGA atlas build aborted");const i=[];for(const[s,n]of C)i.push({key:s,width:n.width,height:n.height}),await e();const t=await ss(i,I,g,(Q=B==null?void 0:B.maxPages)!=null?Q:4,e);if(t.length===0)throw new Error("No atlas pages built");const a=new Map,o=[];try{for(let s=0;s<t.length;s++){J(B==null?void 0:B.signal,"SVGA atlas build aborted");const n=t[s],r=Ds(n.atlasW,n.atlasH),c=ws(r);if(!c)throw new Error("Atlas: 2d context unavailable");c.clearRect(0,0,n.atlasW,n.atlasH);for(let w=0;w<n.rects.length;w++){const D=n.rects[w],y=C.get(D.key);c.drawImage(y,D.x,D.y,D.w,D.h),ns(r,c,D,n.atlasW,n.atlasH,I),w+1<n.rects.length&&E.shouldYield()&&await E.yield(),J(B==null?void 0:B.signal,"SVGA atlas build aborted")}const h=(B==null?void 0:B.captureEncodedPng)===!0?ys(r):void 0;J(B==null?void 0:B.signal,"SVGA atlas build aborted");const l=A.createTexture(r,{width:n.atlasW,height:n.atlasH,filter:"linear",premultiplyAlpha:!0});for(const w of n.rects)a.set(w.key,{x:w.x/n.atlasW,y:w.y/n.atlasH,w:w.w/n.atlasW,h:w.h/n.atlasH,textureIndex:s});o.push({textureHandle:l,atlasWidth:n.atlasW,atlasHeight:n.atlasH,encodedPngBytesPromise:h})}}catch(s){for(const n of o)A.deleteTexture(n.textureHandle);throw s}return $E(o,a)}async function ds(C,A,g,I,B){var Q;const E=await ls(C,{maxSize:g,padding:I,maxPages:(Q=B==null?void 0:B.maxPages)!=null?Q:4,captureEncodedPng:(B==null?void 0:B.captureEncodedPng)===!0,workerTimeSliceMs:B==null?void 0:B.workerTimeSliceMs,signal:B==null?void 0:B.signal}),e=new Map;for(const a of E.rects)e.set(a.key,{x:a.x,y:a.y,w:a.w,h:a.h,textureIndex:a.textureIndex});const i=[],t=OA({maxBudgetMs:B==null?void 0:B.mainThreadFrameBudgetMs});try{for(let a=0;a<E.pages.length;a++){J(B==null?void 0:B.signal,"SVGA atlas upload aborted");const o=E.pages[a],s=A.createTexture(o.bitmap,{width:o.width,height:o.height,filter:"linear",premultiplyAlpha:!0,sourcePremultiplied:!0});try{o.bitmap.close()}catch(n){}i.push({textureHandle:s,atlasWidth:o.width,atlasHeight:o.height,encodedPngBytesPromise:(B==null?void 0:B.captureEncodedPng)===!0?o.pngBytesPromise:void 0}),a+1<E.pages.length&&t.shouldYield()&&await t.yield(),J(B==null?void 0:B.signal,"SVGA atlas upload aborted")}}catch(a){for(const o of E.pages)try{o.bitmap.close()}catch(s){}for(const o of i)A.deleteTexture(o.textureHandle);throw a}return $E(i,e)}async function Ae(C,A,g=4096,I=2,B){var Q;if(C.size===0)throw new Error("No images to build atlas from");const E=Math.max(64,Math.min(g,(Q=A.maxTextureSize)!=null?Q:g));return(B==null?void 0:B.useWorker)!==!1&&_E()?ds(C,A,E,I,B):Fs(C,A,E,I,B)}function Gs(C){return C}function us(C){return C*C}function Rs(C){return C*(2-C)}function fs(C){return C<.5?2*C*C:-1+(4-2*C)*C}function ge(C){const A=C-1;return A*A*A+1}function Ss(C){return C<.5?4*C*C*C:(C-1)*(2*C-2)*(2*C-2)+1}function Ms(C){return 1+2.70158*Math.pow(C-1,3)+1.70158*Math.pow(C-1,2)}let lB=null;function Ie(){return lB||(lB=Promise.resolve().then(()=>require("./mp4box.all-DH-U-29f.cjs")).catch(C=>{throw lB=null,C})),lB}var Ns=Object.defineProperty,Us=(C,A,g)=>A in C?Ns(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,Eg=(C,A,g)=>Us(C,typeof A!="symbol"?A+"":A,g);const ks=800;function Ys(C){return C.startsWith("avc1")||C.startsWith("avc3")}function ps(C){const A=new Uint8Array(C);if(A.byteLength<8)return C;const g=A[4],I=A[5],B=A[6],Q=A[7];return g===97&&I===118&&B===99&&Q===67?C.slice(8):C}async function Ks(C){const A=C.avcC;if(!A)return;const{DataStream:g}=await Ie(),I=new g;A.write(I);const B=I.byteLength;if(B<=0)return;const Q=I.buffer.slice(0,B);return ps(Q)}async function ms(C){const{createFile:A}=await Ie();return new Promise((g,I)=>{const B=A(),Q=C.slice(0);Q.fileStart=0,B.onError=E=>{I(new Error(`mp4box: ${E}`))},B.onReady=E=>{var e,i,t,a,o,s,n;const r=(e=E.videoTracks)==null?void 0:e[0];if(!r){I(new Error("mp4box: no video track"));return}if(!Ys(r.codec)){I(new Error(`mp4box: unsupported video codec ${r.codec}`));return}if(r.nb_samples>ks){I(new Error(`mp4box: too many samples (${r.nb_samples})`));return}const c=[];B.onSamples=(l,w,D)=>{c.push(...D)},B.setExtractionOptions(r.id,null,{nbSamples:Math.max(r.nb_samples,1)}),B.start();const h=r.timescale>0?r.duration/r.timescale:E.duration/(E.timescale||1);if(c.length===0){I(new Error("mp4box: extraction produced no samples"));return}g({codec:r.codec,timescale:r.timescale,durationSec:Number.isFinite(h)?h:0,videoWidth:(a=(t=(i=r.video)==null?void 0:i.width)!=null?t:r.track_width)!=null?a:0,videoHeight:(n=(s=(o=r.video)==null?void 0:o.height)!=null?s:r.track_height)!=null?n:0,samples:c})},B.appendBuffer(Q),B.flush()})}const WQ=25e3;async function Js(C,A,g){const I=performance.now();let B=0;for(;C.decodeQueueSize>0;)if(await new Promise(Q=>queueMicrotask(Q)),B++,B%120===0&&await new Promise(Q=>setTimeout(Q,0)),performance.now()-I>g){console.warn("[GiftStage:WC] decodeQueue drain gave up",{label:A,decodeQueueSize:C.decodeQueueSize,spins:B});break}}async function Ls(C,A){console.info("[GiftStage:WC] VideoDecoder.flush…",A);try{await Promise.race([C.flush(),new Promise((g,I)=>{setTimeout(()=>I(new Error(`VideoDecoder.flush() timed out after ${WQ}ms (${JSON.stringify(A)})`)),WQ)})])}catch(g){try{C.close()}catch(I){}throw g}}class Hs{constructor(A,g,I,B,Q,E,e,i){this.decodeOrder=A,this.presTimes=g,this.timescale=I,this.codec=B,this.description=Q,this.duration=E,this.callbacks=e,Eg(this,"decoder",null),Eg(this,"nextChunk",0),Eg(this,"chunksFed",0),Eg(this,"targetNeedIdx"),Eg(this,"lastPostedMax",-1),Eg(this,"minPosted",Number.POSITIVE_INFINITY),Eg(this,"playbackNeedFloor"),Eg(this,"freeSlots",0),Eg(this,"eosClosed",!1),Eg(this,"pumpScheduled",!1),Eg(this,"pumping",!1),Eg(this,"destroyed",!1),Eg(this,"onDecoderDequeue",()=>this.schedulePump()),this.targetNeedIdx=i,this.playbackNeedFloor=rI(g,E,0),this.freeSlots=Math.max(1,i-this.playbackNeedFloor+1),this.schedulePump()}ensure(A,g){this.destroyed||(this.targetNeedIdx=Math.max(this.targetNeedIdx,A),this.freeSlots=Math.max(0,g),this.schedulePump())}rewind(){this.destroyed||this.doRewind()}destroy(){var A,g;if(this.destroyed=!0,this.decoder&&this.decoder.state!=="closed"){(g=(A=this.decoder).removeEventListener)==null||g.call(A,"dequeue",this.onDecoderDequeue);try{this.decoder.close()}catch(I){}}this.decoder=null}schedulePump(){this.pumpScheduled||this.destroyed||(this.pumpScheduled=!0,queueMicrotask(()=>{this.pumpScheduled=!1,this.runPump()}))}async doRewind(){var A,g;if(this.decoder&&this.decoder.state!=="closed"){(g=(A=this.decoder).removeEventListener)==null||g.call(A,"dequeue",this.onDecoderDequeue);try{this.decoder.close()}catch(B){}}this.decoder=null,this.nextChunk=Ts(this.decodeOrder),this.chunksFed=0,this.lastPostedMax=-1,this.minPosted=Number.POSITIVE_INFINITY,this.eosClosed=!1;const I=rI(this.presTimes,this.duration,0);this.playbackNeedFloor=I,this.targetNeedIdx=Math.max(this.targetNeedIdx,Math.min(this.presTimes.length-1,Math.max(0,I))),this.freeSlots=1,this.schedulePump()}async openDecoder(){var A;if(this.decoder&&this.decoder.state!=="closed")return;const g=await Ws(this.codec,this.description),I=new VideoDecoder({output:B=>{var Q,E,e,i;if((E=(Q=this.callbacks).onDecoded)==null||E.call(Q),this.destroyed){try{B.close()}catch(o){}return}const t=vs(this.presTimes,B.timestamp),a=Number.isFinite(this.minPosted)&&this.minPosted<=this.playbackNeedFloor;if(this.freeSlots<=0&&a){try{B.close()}catch(o){}(i=(e=this.callbacks).onDropped)==null||i.call(e),this.schedulePump();return}this.lastPostedMax=Math.max(this.lastPostedMax,t),this.minPosted=Math.min(this.minPosted,t),this.freeSlots>0&&this.freeSlots--,this.callbacks.onFrame(t,B),this.schedulePump()},error:B=>{this.callbacks.onError?this.callbacks.onError(B):console.error("[GiftStage:WC] IncrementalH264Decoder VideoDecoder error",B)}});I.configure(g),(A=I.addEventListener)==null||A.call(I,"dequeue",this.onDecoderDequeue),this.decoder=I}feedOneChunk(){var A,g;const I=this.decoder,B=this.nextChunk;if(B>=this.decodeOrder.length)return;const Q=this.decodeOrder[B];this.nextChunk=B+1;const E=Q.data;if(!E||E.byteLength===0)return;const e=(g=(A=Q.cts)!=null?A:Q.dts)!=null?g:0,i=Math.round(e/this.timescale*1e6),t=Q.duration&&this.timescale>0?Math.round(Q.duration/this.timescale*1e6):void 0,a=new Uint8Array(E.byteLength);a.set(E);const o=new EncodedVideoChunk({type:Q.is_sync?"key":"delta",timestamp:i,duration:t,data:a});I.decode(o),this.chunksFed++}async finalizeEos(){var A,g,I;if(!this.decoder||this.eosClosed)return;const B=this.decoder;await Js(B,"before flush",1e4);const Q=B.decodeQueueSize;await Ls(B,{chunksDecoded:this.chunksFed,outputsBeforeFlush:this.lastPostedMax+1,queueBeforeFlush:Q});try{(A=B.removeEventListener)==null||A.call(B,"dequeue",this.onDecoderDequeue),B.close()}catch(E){}this.decoder=null,this.eosClosed=!0,(I=(g=this.callbacks).onEos)==null||I.call(g)}async runPump(){if(!(this.destroyed||this.pumping)){this.pumping=!0;try{for(;!this.destroyed;){if(this.eosClosed)return;const A=this.nextChunk<this.decodeOrder.length,g=Number.isFinite(this.minPosted)&&this.minPosted<=this.playbackNeedFloor;if(!A&&!this.eosClosed){await this.finalizeEos();continue}if(this.lastPostedMax>=this.targetNeedIdx&&g||this.freeSlots<=0&&g)return;await this.openDecoder();const I=this.freeSlots>0?this.freeSlots:1,B=Math.max(1,Math.min(2,I));if(this.decoder.decodeQueueSize>=B)return;this.feedOneChunk(),this.chunksFed%2===0&&await new Promise(Q=>setTimeout(Q,0))}}finally{this.pumping=!1}}}}function rI(C,A,g){if(C.length===0)return 0;const I=C.length;if(g<=C[0])return 0;const B=C[I-1];if(g>=A||g>=B)return I-1;let Q=0,E=I-1;for(;Q+1<E;){const e=Q+E>>>1;C[e]<=g?Q=e:E=e}return Q}function xs(C,A){if(A.length===0)return 1e-6;const g=A.length,I=g-1,B=A[I],Q=g>=2?A[I]-A[I-1]:1/30,E=B+Q;let e=C>0?C:E;if(!(e>0)&&g>=2){const i=(A[g-1]-A[0])/(g-1);e=A[g-1]+(i>0?i:1/30)}return e>0||(e=Math.max(E,1/30)),e}function bs(C,A){var g,I;if(C.length===0)return new Float64Array(0);const B=C.map((E,e)=>e);B.sort((E,e)=>{var i,t,a,o;const s=C[E],n=C[e],r=(t=(i=s.cts)!=null?i:s.dts)!=null?t:0,c=(o=(a=n.cts)!=null?a:n.dts)!=null?o:0;return r!==c?r-c:E-e});const Q=new Float64Array(B.length);for(let E=0;E<B.length;E++){const e=C[B[E]];Q[E]=((I=(g=e.cts)!=null?g:e.dts)!=null?I:0)/A}return Q}function qs(C){return[...C].sort((A,g)=>{var I,B,Q,E;const e=((B=(I=A.dts)!=null?I:A.cts)!=null?B:0)-((E=(Q=g.dts)!=null?Q:g.cts)!=null?E:0);return e!==0?e:0})}function vs(C,A){if(C.length===0)return 0;const g=A/1e6;let I=0,B=1/0;for(let Q=0;Q<C.length;Q++){const E=Math.abs(C[Q]-g);E<B&&(B=E,I=Q)}return I}function Ts(C){for(let A=0;A<C.length;A++)if(C[A].is_sync)return A;return 0}async function Ws(C,A){var g;const I={codec:C,hardwareAcceleration:"prefer-software",...A&&A.byteLength>0?{description:A}:{}};let B=await VideoDecoder.isConfigSupported(I),Q=I;if(!B.supported){const E={codec:C,...A&&A.byteLength>0?{description:A}:{}};if(B=await VideoDecoder.isConfigSupported(E),!B.supported)throw new Error(`WebCodecs: unsupported config ${C}`);Q=E}return(g=B.config)!=null?g:Q}function Vs(C){return new Worker(""+(typeof document=="undefined"?require("url").pathToFileURL(__dirname+"/assets/webcodecs-mp4.worker-DeS4ARzq.js").href:new URL("assets/webcodecs-mp4.worker-DeS4ARzq.js",document.currentScript&&document.currentScript.tagName.toUpperCase()==="SCRIPT"&&document.currentScript.src||document.baseURI).href),{type:"module",name:C==null?void 0:C.name})}var Zs=Object.defineProperty,Xs=(C,A,g)=>A in C?Zs(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,NA=(C,A,g)=>Xs(C,typeof A!="symbol"?A+"":A,g);const Os=28,Ps=8,$A={decodedFrames:0,postedFrames:0,closedFrames:0,residentPeak:0,workerMessages:0};class VQ{constructor(A){NA(this,"maxSize"),NA(this,"map",new Map),NA(this,"playbackHint",0),this.maxSize=Math.max(4,A)}setPlaybackHint(A){Number.isFinite(A)&&A>=0&&(this.playbackHint=A,this.evictConsumedFrames())}evictConsumedFrames(){const A=Math.max(4,Math.floor(this.maxSize*.35)),g=this.playbackHint-A;if(!(g<=0))for(const I of this.map.keys())I<g&&this.closeKey(I)}minKey(){let A;for(const g of this.map.keys())(A===void 0||g<A)&&(A=g);return A}set(A,g){const I=this.map.get(A);if(I&&I!==g)try{I.close()}catch(B){}this.map.set(A,g),$A.residentPeak=Math.max($A.residentPeak,this.map.size),this.evictDownToCapacity()}evictDownToCapacity(){var A;const g=Math.max(4,Math.floor(this.maxSize*.35)),I=Math.max(4,this.maxSize-g-2);for(;this.map.size>this.maxSize;){const B=this.playbackHint;let Q,E,e,i=-1;for(const a of this.map.keys()){a<B-g&&(Q===void 0||a<Q)&&(Q=a),a>B+I&&(E===void 0||a>E)&&(E=a);const o=Math.abs(a-B);o>=i&&(i=o,e=a)}const t=(A=Q!=null?Q:E)!=null?A:e;if(t===void 0)return;this.closeKey(t)}}closeKey(A){const g=this.map.get(A);this.map.delete(A);try{g==null||g.close(),g&&$A.closedFrames++}catch(I){}}bestAtOrBefore(A){let g=-1;for(const I of this.map.keys())I<=A&&I>g&&(g=I);return g<0?null:this.map.get(g)}frameForDisplay(A){var g;let I=-1,B=Number.POSITIVE_INFINITY,Q=-1;for(const e of this.map.keys())e<=A&&e>I&&(I=e),e>=A&&e<B&&(B=e),e>Q&&(Q=e);const E=I>=0?I:Number.isFinite(B)?B:Q;return E>=0&&(g=this.map.get(E))!=null?g:null}clear(){for(const A of this.map.values())try{A.close()}catch(g){}this.map.clear()}get size(){return this.map.size}}function iC(C,A,g){return new Promise((I,B)=>{const Q=performance.now(),E=()=>{try{if(C()){I();return}if(performance.now()-Q>A){B(new Error(`WebCodecs: timeout waiting for ${g}`));return}setTimeout(E,0)}catch(e){B(e instanceof Error?e:new Error(String(e)))}};setTimeout(E,0)})}let js=1;class CI{constructor(A,g,I,B,Q,E,e,i,t,a,o,s=null){NA(this,"duration"),NA(this,"videoWidth"),NA(this,"videoHeight"),NA(this,"timesSec"),NA(this,"worker"),NA(this,"workerMsgId"),NA(this,"mainThreadDecoder"),NA(this,"streaming"),NA(this,"ring"),NA(this,"frames"),NA(this,"maxDecodedFrames"),NA(this,"decodeAheadFrames"),NA(this,"lastWrapped",-1),NA(this,"lastEnsureNeedIdx",-1),NA(this,"lastEnsureFreeSlots",-1),NA(this,"destroyed",!1),this.duration=A,this.videoWidth=g,this.videoHeight=I,this.timesSec=B,this.worker=Q,this.workerMsgId=E,this.streaming=e,this.ring=i,this.frames=t,this.maxDecodedFrames=a,this.decodeAheadFrames=o,this.mainThreadDecoder=s}static async create(A,g,I){var B,Q;if(typeof VideoDecoder=="undefined")throw new Error("WebCodecs VideoDecoder not available");const E=(I==null?void 0:I.useWorker)!==!1,e=(B=I==null?void 0:I.maxDecodedFrames)!=null?B:Os,i=(Q=I==null?void 0:I.decodeAheadFrames)!=null?Q:Ps;let t;if(typeof A=="string"?t=await zs(A,g):t=A,E&&typeof Worker!="undefined"){const a=t.slice(0);try{return await CI.createViaWorker(a,e,i)}catch(o){console.warn("[GiftStage:WC] Worker decode failed, falling back to main thread",o)}}return CI.createOnMainThread(t,e,i)}static async createViaWorker(A,g,I){const B=new Vs,Q=js++,E=new VQ(g);let e=0,i=0,t=0,a=new Float64Array(0),o=!1,s=null;const n=w=>{const D=w.data;if(!(!D||D.id!==Q)){if($A.workerMessages++,D.type==="meta"){e=D.duration,i=D.videoWidth,t=D.videoHeight;const y=D.timesSec;a=new Float64Array(y.buffer,y.byteOffset,y.length),o=!0;return}if(D.type==="frame"){$A.decodedFrames++,$A.postedFrames++,E.set(D.index,D.frame);return}D.type!=="eos"&&D.type==="error"&&(s=new Error(D.message))}},r=w=>{s=new Error(w.message||"Worker error")};B.addEventListener("message",n),B.addEventListener("error",r);const c=A;B.postMessage({type:"init",id:Q,buffer:c,maxDecodedFrames:g,decodeAheadFrames:I},[c]),$A.workerMessages++;try{if(await iC(()=>o||s!=null,6e4,"meta"),s)throw s;const w=e>0?e:1e-6,D=rI(a,w,0);if(await iC(()=>s!=null||E.bestAtOrBefore(D)!=null,6e4,"first frame"),s)throw s}catch(w){throw B.removeEventListener("message",n),B.removeEventListener("error",r),B.terminate(),E.clear(),w instanceof Error?w:new Error(String(w))}const h=a.length>0?a[0]:0,l=a.length>0?a[a.length-1]:0;return console.info(`[GiftStage:WC] worker streaming ready frames=${a.length} duration=${e.toFixed(4)}s size=${i}x${t} times=[${h.toFixed(4)} … ${l.toFixed(4)}] ring=${g}`),new CI(e,i,t,a,B,Q,!0,E,null,g,I)}static async createOnMainThread(A,g,I){console.info("[GiftStage:WC] mp4box demux (main thread)…");const B=await ms(A);if(B.samples.length===0)throw new Error("mp4box: no samples");const E=B.samples[0].description,e=E?await Ks(E):void 0,i=qs(B.samples),t=bs(B.samples,B.timescale),a=xs(B.durationSec,t),o=B.videoWidth||0,s=B.videoHeight||0,n=new VQ(g);let r=null;console.info("[GiftStage:WC] VideoDecoder incremental decode (main thread)…");const c=rI(t,a,0),h=Math.min(t.length-1,Math.max(0,c+Math.max(0,I))),l=new Hs(i,t,B.timescale,B.codec,e,a,{onFrame:(y,R)=>{$A.postedFrames++,n.set(y,R)},onDecoded:()=>{$A.decodedFrames++},onDropped:()=>{$A.closedFrames++},onError:y=>{r=y instanceof Error?y:new Error(String(y))}},h);try{if(await iC(()=>r!=null||n.bestAtOrBefore(c)!=null,6e4,"first frame (main thread)"),r)throw r}catch(y){throw l.destroy(),n.clear(),y instanceof Error?y:new Error(String(y))}const w=t.length>0?t[0]:0,D=t.length>0?t[t.length-1]:0;return console.info(`[GiftStage:WC] main incremental decode ready frames=${t.length} duration=${a.toFixed(4)}s size=${o}x${s} times=[${w.toFixed(4)} … ${D.toFixed(4)}] ring=${g}`),new CI(a,o,s,t,null,0,!0,n,null,g,I,l)}sendRewind(){var A;this.worker?(this.worker.postMessage({type:"rewind",id:this.workerMsgId}),$A.workerMessages++):(A=this.mainThreadDecoder)==null||A.rewind()}sendEnsure(A,g){var I;this.worker?(this.worker.postMessage({type:"ensure",id:this.workerMsgId,needIdx:A,freeSlots:g}),$A.workerMessages++):(I=this.mainThreadDecoder)==null||I.ensure(A,g)}ensureDecodedThrough(A){var g,I,B,Q,E;if(this.destroyed||!this.streaming||!this.worker&&!this.mainThreadDecoder)return;const e=this.duration>0?this.duration:1e-6;if(!Number.isFinite(A)||!Number.isFinite(e))return;const i=(A%e+e)%e;if(this.lastWrapped>=0&&i<this.lastWrapped-.001&&this.lastWrapped>e*.1&&((g=this.ring)==null||g.clear(),this.lastEnsureNeedIdx=-1,this.lastEnsureFreeSlots=-1,this.sendRewind()),this.lastWrapped=i,this.timesSec.length===0)return;const t=rI(this.timesSec,e,i);(I=this.ring)==null||I.setPlaybackHint(t);const a=(B=this.ring)==null?void 0:B.minKey(),o=Math.max(4,this.decodeAheadFrames);this.ring&&a!==void 0&&a>t+o&&(this.ring.clear(),this.lastEnsureNeedIdx=-1,this.lastEnsureFreeSlots=-1,this.sendRewind());const s=Math.min(this.timesSec.length-1,Math.max(0,t+Math.max(0,this.decodeAheadFrames))),n=Math.max(0,this.maxDecodedFrames-((E=(Q=this.ring)==null?void 0:Q.size)!=null?E:0));s===this.lastEnsureNeedIdx&&n===this.lastEnsureFreeSlots||(this.lastEnsureNeedIdx=s,this.lastEnsureFreeSlots=n,this.sendEnsure(s,n))}getFrameForTime(A){var g,I,B;if(this.timesSec.length===0)return null;const Q=this.duration>0?this.duration:1e-6;if(!Number.isFinite(A)||!Number.isFinite(Q))return console.warn("[GiftStage:WC] getFrameForTime bad input",{tSec:A,clip:Q,frames:this.timesSec.length}),this.streaming&&this.ring?this.ring.frameForDisplay(0):(I=(g=this.frames)==null?void 0:g[0])!=null?I:null;const E=(A%Q+Q)%Q,e=rI(this.timesSec,Q,E);if(this.streaming&&this.ring){this.ring.setPlaybackHint(e);const t=this.ring.frameForDisplay(e);return t||console.warn("[GiftStage:WC] getFrameForTime no frame in ring",{idx:e,wrapped:E,clip:Q}),t}const i=(B=this.frames)==null?void 0:B[e];return i||console.warn("[GiftStage:WC] getFrameForTime missing frame at index",{idx:e,wrapped:E,clip:Q}),i!=null?i:null}destroy(){var A,g;if(!this.destroyed){if(this.destroyed=!0,this.worker){try{this.worker.postMessage({type:"destroy",id:this.workerMsgId}),$A.workerMessages++}catch(I){}try{this.worker.terminate()}catch(I){}}if((A=this.mainThreadDecoder)==null||A.destroy(),(g=this.ring)==null||g.clear(),this.frames){for(const I of this.frames)try{I==null||I.close(),I&&$A.closedFrames++}catch(B){}this.frames.length=0}}}}async function zs(C,A){return QI(C,A)}function ZQ(C,A,g,I,B){const Q=Math.max(1,Math.floor(A)),E=Math.max(1,Math.floor(g)),e=Math.max(1,C.width*rg(C)),i=Math.max(1,C.height*cg(C));let t;const a=XA(C);if(a==="contain"||a==="cover"){let o,s;if(I==="alphaVideo")o=Q*.5,s=E;else{if(!B)return t=Math.min(1,e/Q,i/E),tC(Q,E,t);({w:o,h:s}=BI(B.info))}if(!(o>0)||!(s>0))return t=Math.min(1,e/Q,i/E),tC(Q,E,t);const n=a==="cover"?Math.max(e/o,i/s):Math.min(e/o,i/s);t=Math.min(1,n)}else t=Math.min(1,e/Q,i/E);return tC(Q,E,t)}function tC(C,A,g){const I=Math.max(1,Math.min(C,Math.ceil(C*g))),B=Math.max(1,Math.min(A,Math.ceil(A*g)));return{w:I,h:B}}var _s=Object.defineProperty,$s=(C,A,g)=>A in C?_s(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,eg=(C,A,g)=>$s(C,typeof A!="symbol"?A+"":A,g);const $I=9;function An(C,A){if(typeof document=="undefined"||typeof document.createElement!="function")throw new Error("VAP mixed rendering requires DOM canvas support");const g=document.createElement("canvas");return g.width=Math.max(1,Math.round(C)),g.height=Math.max(1,Math.round(A)),g}function LB(C,A,g,I,B,Q){return[C/B,(C+g)/B,(Q-A-I)/Q,(Q-A)/Q]}function XQ(C,A,g){const I=C.createShader(A);if(!I)throw new Error("Failed to create VAP mix shader");if(C.shaderSource(I,g),C.compileShader(I),!C.getShaderParameter(I,C.COMPILE_STATUS)){const B=C.getShaderInfoLog(I)||"unknown shader compile error";throw C.deleteShader(I),new Error(`Failed to compile VAP mix shader: ${B}`)}return I}function gn(C,A,g){const I=XQ(C,C.VERTEX_SHADER,A),B=XQ(C,C.FRAGMENT_SHADER,g),Q=C.createProgram();if(!Q)throw C.deleteShader(I),C.deleteShader(B),new Error("Failed to create VAP mix program");if(C.attachShader(Q,I),C.attachShader(Q,B),C.linkProgram(Q),!C.getProgramParameter(Q,C.LINK_STATUS)){const E=C.getProgramInfoLog(Q)||"unknown program link error";throw C.deleteProgram(Q),C.deleteShader(I),C.deleteShader(B),new Error(`Failed to link VAP mix program: ${E}`)}return C.useProgram(Q),{program:Q,vertexShader:I,fragmentShader:B}}function OQ(C,A,g,I=!1){const B=C.createTexture();if(!B)throw new Error("Failed to create VAP mix texture");return C.activeTexture(C.TEXTURE0+A),C.bindTexture(C.TEXTURE_2D,B),C.texParameteri(C.TEXTURE_2D,C.TEXTURE_MIN_FILTER,C.LINEAR),C.texParameteri(C.TEXTURE_2D,C.TEXTURE_MAG_FILTER,C.LINEAR),C.texParameteri(C.TEXTURE_2D,C.TEXTURE_WRAP_S,C.CLAMP_TO_EDGE),C.texParameteri(C.TEXTURE_2D,C.TEXTURE_WRAP_T,C.CLAMP_TO_EDGE),g?(C.pixelStorei(C.UNPACK_FLIP_Y_WEBGL,I?1:0),C.texImage2D(C.TEXTURE_2D,0,C.RGBA,C.RGBA,C.UNSIGNED_BYTE,g),C.pixelStorei(C.UNPACK_FLIP_Y_WEBGL,0)):C.texImage2D(C.TEXTURE_2D,0,C.RGBA,1,1,0,C.RGBA,C.UNSIGNED_BYTE,null),B}function In(C){const[A,g,I,B]=C.rgbFrame,[Q,E,e,i]=C.aFrame,t=LB(A,g,I,B,C.videoW,C.videoH),a=LB(Q,E,e,i,C.videoW,C.videoH);return new Float32Array([-1,1,t[0],t[3],a[0],a[3],1,1,t[1],t[3],a[1],a[3],-1,-1,t[0],t[2],a[0],a[2],1,-1,t[1],t[2],a[1],a[2]])}function Bn(C,A,g){const I=Math.max(1,A)*$I,B=[],Q=[],E=g?"texture":"texture2D";for(let i=0;i<C;i++)B.push(`uniform sampler2D u_image${i+1};`),Q.push(`if (ndx == ${i+1}) { color = ${E}(u_image${i+1}, uv); }`);const e=g?"fragColor":"gl_FragColor";return`${g?"#version 300 es":""}
4922
4922
  precision lowp float;
4923
4923
  ${g?"in":"varying"} vec2 v_texcoord;
4924
4924
  ${g?"in":"varying"} vec2 v_alpha_texCoord;
@@ -4991,5 +4991,5 @@ m.onmessage = (t) => {
4991
4991
  v_texcoord = a_texCoord;
4992
4992
  v_alpha_texCoord = a_alpha_texCoord;
4993
4993
  }
4994
- `}function Qn(C,A,g){return{vertex:Cn(g),fragment:Bn(C,A,g)}}function En(C,A,g,I,B=new Float32Array(g.size*$I)){B.fill(0);const Q=A.get(I);if(!Q||Q.length===0)return B;const[E,e]=C.info.rgbFrame;let i=0;for(const t of Q){const a=g.get(String(t.srcId));if(!a)continue;if(i+$I>B.length)break;const[o,s,n,r]=t.frame,[c,h,l,w]=t.mFrame,D=LB(o+E,s+e,n,r,C.info.videoW,C.info.videoH),y=LB(c,h,l,w,C.info.videoW,C.info.videoH);B[i++]=a,B[i++]=D[0],B[i++]=D[1],B[i++]=D[2],B[i++]=D[3],B[i++]=y[0],B[i++]=y[1],B[i++]=y[2],B[i++]=y[3]}return B}class en{constructor(A,g,I,B,Q,E=!0){this.config=A,this.frameMap=g,ig(this,"canvas"),ig(this,"gl"),ig(this,"program"),ig(this,"vertexShader"),ig(this,"fragmentShader"),ig(this,"vertexBuffer"),ig(this,"videoTexture"),ig(this,"imagePosLoc"),ig(this,"imagePositionsScratch"),ig(this,"resourceEntries"),ig(this,"textureUnitBySrcId",new Map),ig(this,"videoTextureWidth",1),ig(this,"videoTextureHeight",1);var e;if(I.size===0)throw new Error("VAP mix composer requires at least one slot resource");this.canvas=An(B,Q);const i={alpha:!0,antialias:!1,depth:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,stencil:!1};let t=!0,a=this.canvas.getContext("webgl2",i);if(a||(t=!1,a=this.canvas.getContext("webgl",i)||this.canvas.getContext("experimental-webgl",i)),!a)throw new Error("VAP mixed rendering requires WebGL support");this.gl=a;const o=Math.max(1,a.getParameter(a.MAX_TEXTURE_IMAGE_UNITS)),s=Math.max(0,o-1),n=[];let r=1;for(const u of(e=A.src)!=null?e:[]){const G=I.get(String(u.srcId));if(!G)continue;if(r>s){console.warn("[GiftStage] VAP mixed resources exceed texture unit limit, skipping",{srcId:u.srcId,srcTag:u.srcTag,maxUnits:o});continue}const S=OQ(a,r,G.source,!0),M={srcId:String(u.srcId),unit:r,texture:S};n.push(M),this.textureUnitBySrcId.set(M.srcId,M.unit),r++}if(n.length===0)throw new Error("VAP mixed rendering could not bind any slot resources");this.resourceEntries=n;let c=1;for(const u of g.values())c=Math.max(c,u.length);this.imagePositionsScratch=new Float32Array(c*$I);const h=Qn(this.resourceEntries.length,c,t),l=gn(a,h.vertex,h.fragment);this.program=l.program,this.vertexShader=l.vertexShader,this.fragmentShader=l.fragmentShader,this.imagePosLoc=a.getUniformLocation(this.program,"image_pos"),this.videoTexture=OQ(a,0);const w=a.getUniformLocation(this.program,"u_image_video");w!==null&&a.uniform1i(w,0);const D=a.getUniformLocation(this.program,"u_rgbPremultiplied");D!==null&&a.uniform1f(D,E?1:0);for(const u of this.resourceEntries){const G=a.getUniformLocation(this.program,`u_image${u.unit}`);G!==null&&a.uniform1i(G,u.unit)}const y=a.createBuffer();if(!y)throw new Error("Failed to create VAP mix vertex buffer");this.vertexBuffer=y,a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,In(A.info),a.STATIC_DRAW);const R=6*Float32Array.BYTES_PER_ELEMENT,F=a.getAttribLocation(this.program,"a_position"),d=a.getAttribLocation(this.program,"a_texCoord"),f=a.getAttribLocation(this.program,"a_alpha_texCoord");a.enableVertexAttribArray(F),a.vertexAttribPointer(F,2,a.FLOAT,!1,R,0),a.enableVertexAttribArray(d),a.vertexAttribPointer(d,2,a.FLOAT,!1,R,2*Float32Array.BYTES_PER_ELEMENT),a.enableVertexAttribArray(f),a.vertexAttribPointer(f,2,a.FLOAT,!1,R,4*Float32Array.BYTES_PER_ELEMENT),a.viewport(0,0,this.canvas.width,this.canvas.height),a.disable(a.BLEND),a.disable(a.DEPTH_TEST),a.clearColor(0,0,0,0),a.pixelStorei(a.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),a.pixelStorei(a.UNPACK_COLORSPACE_CONVERSION_WEBGL,a.NONE)}render(A,g){const I=this.gl;I.useProgram(this.program),I.activeTexture(I.TEXTURE0),I.bindTexture(I.TEXTURE_2D,this.videoTexture),I.pixelStorei(I.UNPACK_FLIP_Y_WEBGL,1);const B=XI(A),Q=OI(A);B>0&&Q>0&&B===this.videoTextureWidth&&Q===this.videoTextureHeight?I.texSubImage2D(I.TEXTURE_2D,0,0,0,I.RGBA,I.UNSIGNED_BYTE,A):(I.texImage2D(I.TEXTURE_2D,0,I.RGBA,I.RGBA,I.UNSIGNED_BYTE,A),B>0&&Q>0&&(this.videoTextureWidth=B,this.videoTextureHeight=Q)),I.pixelStorei(I.UNPACK_FLIP_Y_WEBGL,0);const E=En(this.config,this.frameMap,this.textureUnitBySrcId,g,this.imagePositionsScratch);return this.imagePosLoc!==null&&I.uniform1fv(this.imagePosLoc,E),I.clear(I.COLOR_BUFFER_BIT),I.drawArrays(I.TRIANGLE_STRIP,0,4),this.canvas}destroy(){const A=this.gl;for(const I of this.resourceEntries)A.deleteTexture(I.texture);A.deleteTexture(this.videoTexture),A.deleteBuffer(this.vertexBuffer),A.deleteProgram(this.program),A.deleteShader(this.vertexShader),A.deleteShader(this.fragmentShader);const g=A.getExtension("WEBGL_lose_context");g==null||g.loseContext()}}var tn=Object.defineProperty,an=(C,A,g)=>A in C?tn(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,pg=(C,A,g)=>an(C,typeof A!="symbol"?A+"":A,g);const Be=1397178947,Ce=14,on=8,kg=64*1024;function Qe(C){return C+3&-4}class sn{constructor(A=1024){pg(this,"buffer"),pg(this,"view"),pg(this,"bytes"),pg(this,"offset",0),pg(this,"encoder",new TextEncoder),this.buffer=new ArrayBuffer(A),this.view=new DataView(this.buffer),this.bytes=new Uint8Array(this.buffer)}ensure(A){const g=this.offset+A;if(g<=this.buffer.byteLength)return;let I=this.buffer.byteLength;for(;I<g;)I*=2;const B=new ArrayBuffer(I);new Uint8Array(B).set(this.bytes.subarray(0,this.offset)),this.buffer=B,this.view=new DataView(this.buffer),this.bytes=new Uint8Array(this.buffer)}async ensureCooperative(A,g){const I=this.offset+A;if(I<=this.buffer.byteLength)return;let B=this.buffer.byteLength;for(;B<I;)B*=2;const Q=new ArrayBuffer(B),E=new Uint8Array(Q);for(let e=0;e<this.offset;e+=kg){const i=Math.min(e+kg,this.offset);E.set(this.bytes.subarray(e,i),e),i<this.offset&&await(g==null?void 0:g())}this.buffer=Q,this.view=new DataView(this.buffer),this.bytes=E}u8(A){this.ensure(1),this.view.setUint8(this.offset,A),this.offset+=1}u16(A){this.ensure(2),this.view.setUint16(this.offset,A,!0),this.offset+=2}u32(A){this.ensure(4),this.view.setUint32(this.offset,A,!0),this.offset+=4}i32(A){this.ensure(4),this.view.setInt32(this.offset,A|0,!0),this.offset+=4}f32(A){this.ensure(4),this.view.setFloat32(this.offset,A,!0),this.offset+=4}bytesValue(A){this.u32(A.byteLength),this.ensure(A.byteLength),this.bytes.set(A,this.offset),this.offset+=A.byteLength}rawBytes(A){this.ensure(A.byteLength),this.bytes.set(A,this.offset),this.offset+=A.byteLength}async bytesValueCooperative(A,g){await this.ensureCooperative(4+A.byteLength,g),this.u32(A.byteLength),await this.rawBytesCooperative(A,g)}async rawBytesCooperative(A,g){await this.ensureCooperative(A.byteLength,g);for(let I=0;I<A.byteLength;I+=kg){const B=Math.min(I+kg,A.byteLength);this.bytes.set(A.subarray(I,B),this.offset),this.offset+=B-I,B<A.byteLength&&await(g==null?void 0:g())}}async stringCooperative(A,g){await this.bytesValueCooperative(this.encoder.encode(A),g)}string(A){this.bytesValue(this.encoder.encode(A))}pad4(){const A=Qe(this.offset)-this.offset;for(let g=0;g<A;g++)this.u8(0)}finish(){return this.buffer.slice(0,this.offset)}async finishCooperative(A){const g=new Uint8Array(this.offset),I=this.bytes.subarray(0,this.offset);for(let B=0;B<I.byteLength;B+=kg){const Q=Math.min(B+kg,I.byteLength);g.set(I.subarray(B,Q),B),Q<I.byteLength&&A.shouldYield()&&await A.yield()}return g.buffer}}class nn{constructor(A){this.buffer=A,pg(this,"view"),pg(this,"bytes"),pg(this,"offset",0),pg(this,"decoder",new TextDecoder),this.view=new DataView(A),this.bytes=new Uint8Array(A)}get position(){return this.offset}skip(A){this.offset+=A}pad4(){this.offset=Qe(this.offset)}u8(){const A=this.view.getUint8(this.offset);return this.offset+=1,A}u16(){const A=this.view.getUint16(this.offset,!0);return this.offset+=2,A}u32(){const A=this.view.getUint32(this.offset,!0);return this.offset+=4,A}i32(){const A=this.view.getInt32(this.offset,!0);return this.offset+=4,A}f32(){const A=this.view.getFloat32(this.offset,!0);return this.offset+=4,A}bytesValue(){const A=this.u32(),g=this.bytes.slice(this.offset,this.offset+A);return this.offset+=A,g}async ownedBytesValueCooperative(A){const g=this.u32(),I=this.bytes.subarray(this.offset,this.offset+g);this.offset+=g;const B=new Uint8Array(g);for(let Q=0;Q<g;Q+=kg){const E=Math.min(Q+kg,g);B.set(I.subarray(Q,E),Q),E<g&&A.shouldYield()&&await A.yield()}return B.buffer}string(){return this.decoder.decode(this.bytesValue())}sourceBuffer(){return this.buffer}}function Ee(C){var A,g;let I=0;for(const Q of C.atlasPages)I+=Q.imageBytes.byteLength;for(const[Q,E]of C.audioBlobs)I+=Q.length*2+E.byteLength;for(const[Q]of C.atlasRects)I+=Q.length*2+20;if(C.clipMeshes)for(const[Q,E]of C.clipMeshes)I+=Q.length*2+E.vertices.byteLength+E.indices.byteLength;const B=C.spriteTable;I+=B.frameData.byteLength,I+=B.clipPathIndex.byteLength,I+=B.shapesIndex.byteLength;for(const Q of B.imageKeys)I+=Q.length*2;for(const Q of B.clipPaths)I+=Q.length*2;for(const Q of B.shapesTable)for(const E of Q)I+=((g=(A=E.pathData)==null?void 0:A.length)!=null?g:0)*2+96;return I}async function ng(C){C.shouldYield()&&await C.yield()}async function rn(C,A){var g,I,B;const Q=C.spriteTable,E=OA({maxBudgetMs:A}),e=()=>ng(E),i=new sn(on+Ee(C)+kg);i.u32(Be),i.u16(Ce),i.u16(Q.allFramesInsideViewBox===void 0?0:2|(Q.allFramesInsideViewBox?1:0)),i.f32(C.params.viewBoxWidth),i.f32(C.params.viewBoxHeight),i.f32(C.params.fps),i.u32(C.params.frames),i.u32(C.atlasPages.length);for(const t of C.atlasPages)i.u32(t.width),i.u32(t.height),await i.bytesValueCooperative(new Uint8Array(t.imageBytes),e),await ng(E);i.u32(C.atlasRects.size);for(const[t,a]of C.atlasRects)await i.stringCooperative(t,e),i.u32((g=a.textureIndex)!=null?g:0),i.f32(a.x),i.f32(a.y),i.f32(a.w),i.f32(a.h),await ng(E);i.u32(C.audios.length);for(const t of C.audios)await i.stringCooperative(t.audioKey,e),i.u32(t.startFrame),i.u32(t.endFrame),i.f32(t.startTime),i.f32(t.totalTime),await ng(E);i.u32(C.audioBlobs.size);for(const[t,a]of C.audioBlobs)await i.stringCooperative(t,e),await i.bytesValueCooperative(new Uint8Array(a),e),await ng(E);if(await Ho(i,Q,e),i.u32((B=(I=C.clipMeshes)==null?void 0:I.size)!=null?B:0),C.clipMeshes)for(const[t,a]of C.clipMeshes)await i.stringCooperative(t,e),await i.bytesValueCooperative(new Uint8Array(a.vertices.buffer,a.vertices.byteOffset,a.vertices.byteLength),e),await i.bytesValueCooperative(new Uint8Array(a.indices.buffer,a.indices.byteOffset,a.indices.byteLength),e),await ng(E);return i.finishCooperative(E)}async function cn(C,A){const g=OA({maxBudgetMs:A}),I=new nn(C);if(I.u32()!==Be)throw new Error("Invalid SVGA cache binary magic");if(I.u16()!==Ce)throw new Error("Unsupported SVGA cache binary version");const B=I.u16(),Q={viewBoxWidth:I.f32(),viewBoxHeight:I.f32(),fps:I.f32(),frames:I.u32()},E=I.u32(),e=[];for(let l=0;l<E;l++){const w=I.u32(),D=I.u32(),y=await I.ownedBytesValueCooperative(g);e.push({width:w,height:D,imageBytes:y}),await ng(g)}const i=I.u32(),t=new Map;for(let l=0;l<i;l++){const w=I.string(),D=I.u32();t.set(w,{textureIndex:D,x:I.f32(),y:I.f32(),w:I.f32(),h:I.f32()}),await ng(g)}const a=I.u32(),o=[];for(let l=0;l<a;l++)o.push({audioKey:I.string(),startFrame:I.u32(),endFrame:I.u32(),startTime:I.f32(),totalTime:I.f32()}),await ng(g);const s=I.u32(),n=new Map;for(let l=0;l<s;l++){const w=I.string();n.set(w,await I.ownedBytesValueCooperative(g)),await ng(g)}const r=await VE(I,()=>ng(g));(B&2)!==0&&(r.allFramesInsideViewBox=(B&1)!==0),Tg(Q,r);const c=I.u32(),h=new Map;for(let l=0;l<c;l++){const w=I.string(),D=new Float32Array(await I.ownedBytesValueCooperative(g)),y=new Uint32Array(await I.ownedBytesValueCooperative(g));w&&D.length>=6&&y.length>=3&&h.set(w,{vertices:D,indices:y}),await ng(g)}return{params:Q,spriteTable:r,audios:o,audioBlobs:n,atlasRects:t,atlasPages:e,clipMeshes:h}}function SC(C){return`svga-asset:${C}`}function MC(C){return`svga-asset-bin:${C}`}async function hn(C,A={}){const g=ya(SC(C),"svga-asset");if(g)return Tg(g.params,g.spriteTable),g;const I=await Fa(MC(C));if(!I)return null;try{const B=await cn(I,A.frameBudgetMs);return ME(SC(C),"svga-asset",B,I.byteLength),B}catch(B){return Ga(MC(C)),null}}async function DB(C,A,g={}){Tg(A.params,A.spriteTable);const I=await rn(A,g.frameBudgetMs);ME(SC(C),"svga-asset",A,Math.max(I.byteLength,Ee(A))),await da(MC(C),I)}function qg(C){return typeof C=="number"&&Number.isFinite(C)&&C>0}function ln(C,A){const g=qg(C)?C*.5:0,I=qg(A)?A:0;return{width:g,height:I}}function Dn(C,A,g,I){const B=qg(A.width)?A.width:void 0,Q=qg(A.height)?A.height:void 0,E=qg(C.width)?C.width:void 0,e=qg(C.height)?C.height:void 0,i=C.useOriginalSize===!0;if(E&&e)return{width:E,height:e};if(E)return B&&Q?{width:E,height:E*Q/B}:{width:E,height:E};if(e)return B&&Q?{width:e*B/Q,height:e}:{width:e,height:e};let t=B!=null?B:0,a=Q!=null?Q:0;if(t>0&&a>0&&qg(g)&&qg(I)&&(!i||t>g||a>I)){const o=Math.min(g/t,I/a);t*=o,a*=o}return{width:t,height:a}}function wn(C,A){var g,I,B;if(typeof C=="string"){const E=(g=/^data:(image\/[a-z0-9.+-]+)/i.exec(C))==null?void 0:g[1];if(E)return E;const e=(B=(I=C.split(/[?#]/,1)[0])==null?void 0:I.toLowerCase())!=null?B:"";if(e.endsWith(".svg"))return"image/svg+xml";if(e.endsWith(".png"))return"image/png";if(e.endsWith(".jpg")||e.endsWith(".jpeg"))return"image/jpeg";if(e.endsWith(".webp"))return"image/webp";if(e.endsWith(".gif"))return"image/gif";if(e.endsWith(".avif"))return"image/avif"}if(A[0]===137&&A[1]===80&&A[2]===78&&A[3]===71)return"image/png";if(A[0]===255&&A[1]===216&&A[2]===255)return"image/jpeg";if(A[0]===71&&A[1]===73&&A[2]===70)return"image/gif";if(A[0]===82&&A[1]===73&&A[2]===70&&A[3]===70&&A[8]===87&&A[9]===69&&A[10]===66&&A[11]===80)return"image/webp";const Q=new TextDecoder().decode(A.subarray(0,Math.min(A.length,256)));return/^\s*(?:<\?xml[^>]*>\s*)?<svg[\s>]/i.test(Q)?"image/svg+xml":""}function PQ(C,A){return new Promise((g,I)=>{const B=URL.createObjectURL(C),Q=new Image;Q.crossOrigin="anonymous";const E=()=>{A==null||A.removeEventListener("abort",i),Q.onload=null,Q.onerror=null},e=t=>{E(),URL.revokeObjectURL(B),I(t)},i=()=>e(QA("Image decoding aborted"));Q.onload=()=>{E();const t=Q.naturalWidth||Q.width,a=Q.naturalHeight||Q.height;if(t<=0||a<=0){URL.revokeObjectURL(B),I(new Error("Decoded image has invalid dimensions"));return}g({source:Q,width:t,height:a,sourcePremultiplied:!1,dispose:()=>URL.revokeObjectURL(B)})},Q.onerror=()=>e(new Error("Failed to decode image")),A==null||A.addEventListener("abort",i,{once:!0}),Q.src=B})}async function aC(C,A){L(A,"Image loading aborted");const g=typeof C=="string"?await EI(C,A):C;L(A,"Image loading aborted");const I=new Uint8Array(g),B=new Blob([I],{type:wn(C,I)});if(typeof createImageBitmap=="function"){let Q=null;try{Q=await createImageBitmap(B,{premultiplyAlpha:"premultiply"})}catch(E){L(A,"Image decoding aborted");try{Q=await createImageBitmap(B)}catch(e){return L(A,"Image decoding aborted"),PQ(B,A)}}if(A!=null&&A.aborted)throw Q.close(),QA("Image decoding aborted");if(Q.width<=0||Q.height<=0)throw Q.close(),new Error("Decoded image has invalid dimensions");return{source:Q,width:Q.width,height:Q.height,sourcePremultiplied:!0,dispose:()=>Q.close()}}return PQ(B,A)}function GI(C){return C!=null&&Number.isInteger(C)&&C>=0}function jQ(C,A){return GI(C)?C:A}function ee(C,A,g){const I=C*A*g;return Number.isSafeInteger(I)?I:Number.POSITIVE_INFINITY}function ie(C,A){var g;if(C.length%AI!==0)throw new RangeError(`SVGA frameData length must be a multiple of ${AI}, got ${C.length}`);const I=C.length/AI,B=I*Wg,Q=A!=null?A:new Float32Array(B);if(Q.length<B)throw new RangeError(`SVGA packed output is too small: need ${B} floats, got ${Q.length}`);for(let E=0;E<I;E++){const e=E*AI,i=E*Wg;for(let t=0;t<AI;t++)Q[i+t]=(g=C[e+t])!=null?g:0;Q[i+9]=0,Q[i+10]=0,Q[i+11]=0}return Q}function yn(C,A){return ie(C,A)}function gB(C,A,g=Wg){const I=GI(C)?C:0,B=GI(A)?A:0,Q=GI(g)?g:Wg;return ee(I,B,Q)*Float32Array.BYTES_PER_ELEMENT}function Fn(C,A,g=xB){return Number.isFinite(g)&&g>=0&&gB(C,A)<=g}function dn(C,A,g,I=xB){const B=gB(A,g);return Number.isFinite(C)&&C>=0&&Number.isFinite(I)&&I>=0&&Number.isFinite(B)&&C+B<=I}const te=1;function ae(C,A,g={}){const I=new Float32Array(C.length*hC);for(let B=0;B<C.length;B++){const Q=B*hC,E=A.get(C[B]);if(I[Q+4]=B,!E){I[Q+6]=te;continue}const e=Number.isInteger(E.textureIndex)&&E.textureIndex>=0?E.textureIndex:0;I[Q]=E.x,I[Q+1]=E.y,I[Q+2]=E.x+E.w,I[Q+3]=E.y+E.h,I[Q+5]=e}return I}function Gn(C,A){var g,I;let B=-1;for(const Q of C){const E=(I=(g=A.get(Q))==null?void 0:g.textureIndex)!=null?I:0;Number.isInteger(E)&&E>=0&&(B=Math.max(B,E))}return B+1}function un(C){if(C.hasClipPaths!=null)return C.hasClipPaths;const A=C.spriteTable;if(!A)return!1;for(const g of A.clipPathIndex)if(g>=0)return!0;return A.clipPaths.length>0&&A.clipPathIndex.length===0}function Rg(C,A,g,I,B,Q,E,e){var i;const t=(i=E.strategy)!=null?i:"auto",a=GI(E.compatibleInstanceCount)?E.compatibleInstanceCount:0,o=GI(E.atlasPageCount)?E.atlasPageCount:E.hasAtlas===!1?0:1;return{path:C,eligible:C!=="cpu-reference",selectedPath:C,backend:A,requested:t,requestedStrategy:t,spriteCount:g,frameCount:I,compatibleInstanceCount:a,atlasPageCount:o,tableBytes:B,frameTableBytes:B,commandTableBytes:0,budgetBytes:Q,pathState:e==="table-preparing"?"preparing":C==="cpu-reference"?"fallback":"settled",drawBatchMode:C==="gpu-hybrid"?"hybrid-scheduled":"per-slot",drawCompatibleInstanceCount:a,fallbackReasons:e?[e]:[],...e?{fallbackReason:e}:{}}}function NC(C){var A,g,I,B,Q,E,e;const i=C.spriteTable,t=jQ(C.spriteCount,(A=i==null?void 0:i.spriteCount)!=null?A:0),a=jQ(C.frameCount,(g=i==null?void 0:i.frameCount)!=null?g:0),o=(I=C.budgetBytes)!=null?I:xB,s=gB(t,a),n=(B=C.strategy)!=null?B:"auto",r=(E=(Q=C.hasAnyShapes)!=null?Q:i==null?void 0:i.hasAnyShapes)!=null?E:!1;if(n==="cpu")return Rg("cpu-reference",C.backend,t,a,s,o,C,"policy-disabled");if(C.backend==="webgl1")return Rg("cpu-reference",C.backend,t,a,s,o,C,"device-capability");const c=(e=C.frameDataLength)!=null?e:i==null?void 0:i.frameData.length,h=ee(t,a,AI);if(t<=0||a<=0||!Number.isFinite(h)||c!=null&&c!==h)return Rg("cpu-reference",C.backend,t,a,s,o,C,"validation-failed");if(!Number.isFinite(o)||o<0||s>o)return Rg("cpu-reference",C.backend,t,a,s,o,C,"table-too-large-or-budget");if(C.hasAtlas===!1&&!r)return Rg("cpu-reference",C.backend,t,a,s,o,C,"plan-not-ready-or-unsupported");if(C.tablePreparing)return Rg("cpu-reference",C.backend,t,a,s,o,C,"table-preparing");if(C.uploadFailed)return Rg("cpu-reference",C.backend,t,a,s,o,C,"upload-failed");const l=un(C);return C.hasSlotTextureOverride===!0?Rg("cpu-reference",C.backend,t,a,s,o,C,"slot-overrides"):Rg(r||l?"gpu-hybrid":"gpu-direct",C.backend,t,a,s,o,C)}const Dg=8;var Rn=Object.defineProperty,fn=(C,A,g)=>A in C?Rn(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,ZA=(C,A,g)=>fn(C,typeof A!="symbol"?A+"":A,g);function zQ(C,A){return Number.isFinite(C)?C:A}class Sn{constructor(A,g,I){ZA(this,"data"),ZA(this,"stride"),ZA(this,"gpuBuffer"),ZA(this,"backend"),ZA(this,"_released",!1),this.backend=A,this.data=g,this.stride=I,this.gpuBuffer=A&&A.type==="webgpu"?A.createBuffer(g,"storage"):null}get released(){return this._released}release(){var A;this._released||(this._released=!0,this.gpuBuffer&&((A=this.backend)==null||A.deleteBuffer(this.gpuBuffer)),this.backend=null)}}class SB{constructor(A,g){ZA(this,"trackCount"),ZA(this,"sampleCount"),ZA(this,"sampleIntervalMs"),ZA(this,"durationMs"),ZA(this,"table"),ZA(this,"gpuGlobalsBuffer"),ZA(this,"backend"),ZA(this,"gpuGlobals",new Float32Array(8)),ZA(this,"scratch",new Float32Array(Dg)),ZA(this,"_released",!1);var I;this.backend=A,this.trackCount=Math.max(1,Math.floor(g.trackCount)),this.sampleCount=Math.max(1,Math.floor(g.sampleCount)),this.sampleIntervalMs=Math.max(.001,zQ(g.sampleIntervalMs,1e3/60));const B=this.trackCount*this.sampleCount*Dg;if(g.samples.length!==B)throw new Error(`MotionTrack samples length must be ${B}, got ${g.samples.length}`);this.durationMs=Math.max(0,zQ((I=g.durationMs)!=null?I:(this.sampleCount-1)*this.sampleIntervalMs,0)),this.table=new Sn(A,new Float32Array(g.samples),Dg),this.gpuGlobals[1]=this.sampleIntervalMs,this.gpuGlobals[2]=this.sampleCount,this.gpuGlobalsBuffer=(A==null?void 0:A.type)==="webgpu"?A.createBuffer(this.gpuGlobals,"uniform"):null}get released(){return this._released}sample(A,g,I=this.scratch){if(this._released)throw new Error("MotionTrack is released");if(!Number.isInteger(A)||A<0||A>=this.trackCount)throw new RangeError(`MotionTrack index out of range: ${A}`);if(I.length<Dg)throw new RangeError(`MotionTrack output requires ${Dg} floats`);const B=Math.max(0,Math.min(this.sampleCount-1,g/this.sampleIntervalMs)),Q=Math.floor(B),E=Math.min(this.sampleCount-1,Q+1),e=A*this.sampleCount*Dg,i=e+Q*Dg,t=e+E*Dg,a=this.table.data,s=Q!==E&&a[i+7]>.5?B-Q:0;for(let n=0;n<Dg;n++){const r=a[i+n];I[n]=n>=6||s<=0?r:r+(a[t+n]-r)*s}return I}updateGpuGlobals(A,g,I){!this.gpuGlobalsBuffer||!this.backend||(this.gpuGlobals[0]=A,this.gpuGlobals[3]=g,this.gpuGlobals[4]=I,this.backend.updateBuffer(this.gpuGlobalsBuffer,this.gpuGlobals,0))}release(){var A;this._released||(this._released=!0,this.gpuGlobalsBuffer&&((A=this.backend)==null||A.deleteBuffer(this.gpuGlobalsBuffer)),this.table.release())}}var Mn=Object.defineProperty,Nn=(C,A,g)=>A in C?Mn(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,xA=(C,A,g)=>Nn(C,typeof A!="symbol"?A+"":A,g);class oe{constructor(A,g=`scope-${mC()}`){xA(this,"id"),xA(this,"host"),xA(this,"controller",new AbortController),xA(this,"gifts",new Map),xA(this,"tracks",new Set),xA(this,"bindings",new Set),xA(this,"particleBatches",new Set),xA(this,"particleBatchGroups",new Set),xA(this,"frameListeners",new Set),xA(this,"finishListeners",new Set),xA(this,"unregisterController"),xA(this,"_state","idle"),xA(this,"_currentTimeMs",0),xA(this,"durationMs",0),xA(this,"lastTickAtMs",0),xA(this,"playbackRevision",0),this.host=A,this.id=g,this.unregisterController=A.registerFrameController(this)}get signal(){return this.controller.signal}get state(){return this._state}get currentTimeMs(){return this._currentTimeMs}get active(){return this._state==="playing"}async addGift(A){this.assertAlive();const g=await this.host.addGift({...A,startPaused:!0,playbackScopeControlled:!0,signal:this.signal});if(this.signal.aborted)throw g.destroy(),new DOMException("Playback scope was destroyed","AbortError");return this.gifts.set(g.id,g),g}createMotionTrack(A){this.assertAlive();const g=new SB(this.host.backend,A);this.tracks.add(g);const I=g.release.bind(g);return g.release=()=>{I(),this.tracks.delete(g)},g}createParticleBatch(A){this.assertAlive();const g=this.host.createParticleBatch(A);return this.particleBatches.add(g),g.setTime(this._currentTimeMs),g}createParticleBatchGroup(A){if(this.assertAlive(),!this.host.createParticleBatchGroup)throw new Error("ParticleBatchGroup is not supported by this host");const g=this.host.createParticleBatchGroup(A);try{return g.setTime(this._currentTimeMs),this.particleBatchGroups.add(g),g}catch(I){throw g.destroy(),I}}bindMotion(A,g,I,B={}){var Q;if(this.assertAlive(),!this.gifts.has(A.id))throw new Error("Gift does not belong to this playback scope");if(!this.tracks.has(g))throw new Error("MotionTrack does not belong to this playback scope");const E={gift:A,track:g,trackIndex:I,center:B.center!==!1,gpuDriven:!1,scratch:new Float32Array(8)};this.bindings.add(E);const e=this.host.getSlot(A.id);e&&B.center!==!1&&g instanceof SB&&g.table.gpuBuffer&&g.gpuGlobalsBuffer&&this.host.backendType==="webgpu"&&e.type==="svga"&&e.videoEntity&&!((Q=e.svgaSlotTextures)!=null&&Q.size)&&e.options.objectFit!=="cover"&&!e.options.transformOrigin&&(E.gpuDriven=!0,e.motionTrackBinding={buffer:g.table.gpuBuffer,globalsBuffer:g.gpuGlobalsBuffer,trackIndex:I,sampleCount:g.sampleCount,sampleIntervalMs:g.sampleIntervalMs,currentTimeMs:this._currentTimeMs},e.x=0,e.y=0,e.motionScaleX=1,e.motionScaleY=1,e.rotation=0,e.opacity=1),E.gpuDriven||this.applyBinding(E,this._currentTimeMs);const i=E.gpuDriven?e==null?void 0:e.motionTrackBinding:null;return this.host.invalidate(),()=>{this.bindings.delete(E);const t=this.host.getSlot(A.id);E.gpuDriven&&t&&t.motionTrackBinding===i&&(t.motionTrackBinding=null,this.host.invalidate())}}onFrame(A){return this.frameListeners.add(A),()=>this.frameListeners.delete(A)}onFinish(A){return this.finishListeners.add(A),()=>this.finishListeners.delete(A)}start(A){var g;this.assertAlive(),this.playbackRevision++,this.durationMs=Math.max(0,A.durationMs),this._currentTimeMs=Math.max(0,Math.min(this.durationMs,(g=A.fromMs)!=null?g:0)),this.lastTickAtMs=performance.now(),this._state="playing";for(const I of this.gifts.values())I.resume();this.applyMediaTime(this._currentTimeMs,!0,!0),this.applyAll(this._currentTimeMs),this.applyParticleTime(this._currentTimeMs),this.host.invalidate(!0)}pause(){if(this._state==="playing"){this.playbackRevision++,this._state="paused";for(const A of this.gifts.values())A.pause()}}resume(){if(this._state==="paused"){this.playbackRevision++,this.lastTickAtMs=performance.now(),this._state="playing";for(const A of this.gifts.values())A.resume();this.applyMediaTime(this._currentTimeMs,!1,!0),this.host.invalidate(!0)}}seek(A){this.assertAlive(),this.playbackRevision++,this._currentTimeMs=Math.max(0,Math.min(this.durationMs,A)),this._state==="playing"&&(this.lastTickAtMs=performance.now()),this.applyAll(this._currentTimeMs),this.applyParticleTime(this._currentTimeMs),this.applyMediaTime(this._currentTimeMs,!1,!0),this.emitFrame(0),this.host.invalidate()}stop(){if(!(this._state==="destroyed"||this._state==="stopped")){this.playbackRevision++,this._state="stopped";for(const A of this.gifts.values())A.pause();this.host.invalidate()}}tick(A,g){if(this._state!=="playing")return!1;const I=this.playbackRevision,B=Math.max(0,g),Q=this.lastTickAtMs>0?Math.max(0,A-this.lastTickAtMs):B,E=Math.min(B,Q);if(this.lastTickAtMs=A,this._currentTimeMs=Math.min(this.durationMs,this._currentTimeMs+E),this.applyAll(this._currentTimeMs),this.applyParticleTime(this._currentTimeMs),this.applyMediaTime(this._currentTimeMs),I!==this.playbackRevision||(this.emitFrame(E),I!==this.playbackRevision))return!0;if(this._currentTimeMs>=this.durationMs){this._state="stopped";for(const e of this.gifts.values())e.pause();for(const e of this.finishListeners)e()}return!0}destroy(){var A;if(this._state!=="destroyed"){this.playbackRevision++,this._state="destroyed",this.controller.abort(),(A=this.unregisterController)==null||A.call(this),this.unregisterController=null;for(const g of this.bindings)this.bindings.delete(g);for(const g of this.gifts.values())this.host.removeGift(g.id);this.gifts.clear();for(const g of this.tracks)g.release();this.tracks.clear();for(const g of this.particleBatches)g.destroy();this.particleBatches.clear();for(const g of this.particleBatchGroups)g.destroy();this.particleBatchGroups.clear(),this.frameListeners.clear(),this.finishListeners.clear()}}applyAll(A){const g=this.host.backend;if(g){const{sx:I,sy:B}=Zg(g.canvas);for(const Q of this.tracks)Q instanceof SB&&Q.updateGpuGlobals(A,I,B)}for(const I of this.bindings)I.gpuDriven||this.applyBinding(I,A)}applyParticleTime(A){for(const g of this.particleBatches)g.setTime(A);for(const g of this.particleBatchGroups)g.setTime(A)}applyBinding(A,g){const I=this.host.getSlot(A.gift.id);if(!I)return;I.motionTrackBinding&&(I.motionTrackBinding.currentTimeMs=g);const B=A.track.sample(A.trackIndex,g,A.scratch),Q=this.host.backend;if(!Q)return;const{sx:E,sy:e}=Zg(Q.canvas),i=Number.isFinite(B[2])?B[2]:1,t=Number.isFinite(B[3])?B[3]:1;I.motionScaleX=i,I.motionScaleY=t,I.rotation=Number.isFinite(B[4])?B[4]:0,I.opacity=B[6]>.5?Math.max(0,Math.min(1,B[5])):0;const a=B[0]*E,o=B[1]*e;I.x=A.center?a-I.width*i/2:a,I.y=A.center?o-I.height*t/2:o,I.batchKeyCache=void 0,I.coincidentVisualKeyCache=void 0,I.svgaStaticBatchCache=null}applyMediaTime(A,g=!1,I=!1){for(const B of this.gifts.values())this.host.applyMediaTime(B.id,A,g,I)}emitFrame(A){const g={nowMs:this._currentTimeMs,deltaMs:A,progress:this.durationMs>0?this._currentTimeMs/this.durationMs:1};for(const I of this.frameListeners)I(g)}assertAlive(){if(this._state==="destroyed")throw new Error("Playback scope is destroyed")}}var Un=Object.defineProperty,kn=(C,A,g)=>A in C?Un(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,q=(C,A,g)=>kn(C,typeof A!="symbol"?A+"":A,g);function _Q(C){return Number.isFinite(C)?Math.max(0,Math.min(1,C)):1}function Yn(C){return"delayMs"in C}const lA="GiftStage load canceled";class $Q extends Error{}function Mg(C){let A=!1;return()=>{A||(A=!0,C())}}function pn(C,A=typeof navigator!="undefined"?navigator.hardwareConcurrency:void 0){if(C!=null)return Math.max(1,Math.floor(Number.isFinite(C)?C:1));const g=A!=null&&Number.isFinite(A)&&A>0?Math.floor(A):4;return Math.max(1,Math.min(4,Math.floor(g/2)))}const Gg=class _A{constructor(A){q(this,"sharedSVGAEntities",new Map),q(this,"pendingSharedSVGAEntities",new Map),q(this,"svgaFullClipPrewarmPromises",new WeakMap),q(this,"svgaPersistentCacheWriters",new WeakMap),q(this,"svgaPersistentCacheWritePromises",new WeakMap),q(this,"sharedVideoSources",new Map),q(this,"sharedHtmlVideos",new Map),q(this,"sharedVideoTextures",new Map),q(this,"pendingSharedHtmlVideos",new Map),q(this,"sharedImageTextures",new Map),q(this,"pendingSharedImageTextures",new Map),q(this,"sharedWebCodecsPlaybacks",new Map),q(this,"pendingSharedWebCodecsPlaybacks",new Map),q(this,"sharedWebCodecsSurfaces",new Map),q(this,"completedPlaybackSlots",new Set),q(this,"playbackCompleteWaiters",new Map),q(this,"canvas"),q(this,"backend",null),q(this,"manager",null),q(this,"options"),q(this,"ready"),q(this,"destroyed",!1),q(this,"resizeObserver",null),q(this,"nextRenderOrder",0),q(this,"nextSharedWebCodecsPlaybackId",1),q(this,"nextSharedWebCodecsSurfaceId",1),q(this,"playbackScopes",new Set),q(this,"mountedPlugins",new Set),q(this,"svgaReportedPathKeys",new WeakMap),q(this,"svgaFrameTablePromises",new WeakMap),q(this,"svgaFrameTableResidentBytes",new WeakMap),q(this,"svgaFrameTableReservedBytes",new WeakMap),q(this,"releasedSVGATimelineEntities",new WeakSet),q(this,"activeSVGAGpuFrameTableBytes",0),q(this,"reservedSVGAGpuFrameTableBytes",0),q(this,"svgaBackendLost",!1),q(this,"svgaPreparingEntities",new Set),q(this,"svgaCommandControllers",new WeakMap),q(this,"svgaPreparationSequence",0),q(this,"svgaPreparationProfiles",new WeakMap),q(this,"activeSVGATimelineEntities",new Set),q(this,"svgaEntitySources",new WeakMap),q(this,"runtimeFallbackCount",0),q(this,"runtimeObserverErrorCount",0),q(this,"lastRuntimeDiagnostic",null),q(this,"playbackPaused",!1),q(this,"onWindowLayout",()=>{this.destroyed||this.syncCanvasSize()}),q(this,"onVisibilityChange",()=>{var g;this.destroyed||((g=this.manager)==null||g.setHidden(document.hidden),document.hidden?this.clearAllHtmlVideoPlaybackWatchdogs():this.rearmHtmlVideoPlaybackWatchdogs())}),this.options=A,this.canvas=document.createElement("canvas"),this.canvas.style.cssText="position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:9999;",A.container.appendChild(this.canvas),document.addEventListener("visibilitychange",this.onVisibilityChange),this.ready=this.init()}backingStoreDpr(){const A=this.options.resolution;if(A!=null&&A>0&&Number.isFinite(A))return A;const g=typeof window!="undefined"&&window.devicePixelRatio>0?window.devicePixelRatio:1;return Math.min(g,2)}syncCanvasSize(){var A;ct(this.canvas,this.backingStoreDpr(),this.options.maxRenderSize),(A=this.manager)==null||A.syncSlotLayoutFromOptions()}resourcePipelineConcurrency(){return pn(this.options.maxConcurrentParse)}async init(){var A,g,I,B;this.syncCanvasSize(),document.hidden||await new Promise(t=>requestAnimationFrame(()=>t())),this.syncCanvasSize(),Da({maxConcurrent:this.resourcePipelineConcurrency(),maxMemoryBytes:_A.DEFAULT_RESOURCE_CACHE_MEMORY_BYTES,maxPersistentBytes:_A.DEFAULT_RESOURCE_CACHE_PERSISTENT_BYTES}),YC((A=this.options.svgaWorkerTaskConcurrency)!=null?A:1);const Q=(g=this.options.preferWebGPU)!=null?g:!0,E=this.options.antialias,[e]=await Promise.all([rE(this.canvas,Q,E,this.options.forceWebGL1===!0),GE()]);this.backend=e;const i=e;(I=e.setRuntimeDiagnosticHandler)==null||I.call(e,t=>{this.emitRuntimeDiagnostic({type:t.type,...t.message?{message:t.message}:{}})}),(B=i.setDeviceLostHandler)==null||B.call(i,()=>this.handleSVGABackendLoss()),this.manager=new jI(this.backend,t=>{this.fallbackSVGAFrameTable(t,"validation-failed")},t=>{this.emitRuntimeDiagnostic(t)}),this.manager.setHidden(document.hidden),this.resizeObserver=new ResizeObserver(()=>{this.destroyed||this.syncCanvasSize()}),this.resizeObserver.observe(this.canvas),window.addEventListener("resize",this.onWindowLayout),window.addEventListener("orientationchange",this.onWindowLayout)}svgaParseOptions(A){return{useWorker:this.options.svgaParseInWorker!==!1,svgaLoadFrameBudgetMs:this.options.svgaLoadFrameBudgetMs,svgaWorkerFrameBudgetMs:this.options.svgaWorkerFrameBudgetMs,svgaWorkerTaskConcurrency:this.options.svgaWorkerTaskConcurrency,svgaWorkerImageDecodeConcurrency:this.options.svgaWorkerImageDecodeConcurrency,svgaParseProfile:this.options.svgaParseProfile,signal:A}}svgaAtlasFrameBudgetMs(){const A=this.options.svgaLoadFrameBudgetMs,g=this.options.svgaAtlasFrameBudgetMs;return A==null?g:g==null?A:Math.min(A,g)}svgaClipFrameBudgetMs(){var A;const g=(A=this.options.svgaClipPrewarmFrameBudgetMs)!=null?A:8,I=this.options.svgaLoadFrameBudgetMs;return I==null?g:Math.min(I,g)}isSlotLoadActive(A){var g,I;return!this.destroyed&&((g=A.loadAbortController)==null?void 0:g.signal.aborted)!==!0&&((I=this.manager)==null?void 0:I.getSlot(A.id))===A}assertSlotLoadActive(A){if(!this.isSlotLoadActive(A))throw new Error(lA)}isLoadCanceled(A){return mg(A)||A instanceof Error&&A.message===lA}currentCanvasCssSize(){const A=this.canvas.clientWidth||this.options.container.clientWidth||window.innerWidth||0,g=this.canvas.clientHeight||this.options.container.clientHeight||window.innerHeight||0;return{width:A,height:g}}async resolveGiftIntrinsicSize(A,g){switch(A.type){case"svga":{const I=await is(A.source,this.svgaParseOptions(g));return{width:I.viewBoxWidth,height:I.viewBoxHeight}}case"vap":{if(!A.config)throw new Error("VAP requires config");const I=await FC(A.config),B=CI(I.info);return{width:B.w,height:B.h}}case"alphaVideo":return this.probeVideoNaturalSize(A.source,"alphaVideo");case"image":{const I=await aC(A.source,g);try{return{width:I.width,height:I.height}}finally{I.dispose()}}}}async normalizeAddGiftOptions(A,g){if(A.width!=null&&A.height!=null)return A;const I=this.currentCanvasCssSize();if(A.objectFit==="cover"&&A.width==null&&A.height==null&&I.width>0&&I.height>0)return{...A,width:I.width,height:I.height};const B=g!=null?g:await this.resolveGiftIntrinsicSize(A,A.signal),Q=Dn({width:A.width,height:A.height,useOriginalSize:A.useOriginalSize},B,I.width,I.height);return{...A,width:Q.width,height:Q.height}}resolveAnimationStepTarget(A,g){var I,B,Q,E,e,i;const{sx:t,sy:a}=Zg(this.canvas),o=(I=g.scaleTo)!=null?I:A.scale,s=g.flyTo!=null?g.flyTo.x*t:A.x+A.width*A.scale/2,n=g.flyTo!=null?g.flyTo.y*a:A.y+A.height*A.scale/2;return{targetX:s-A.width*o/2,targetY:n-A.height*o/2,targetScale:o,targetOpacity:_Q((B=g.opacity)!=null?B:A.opacity),targetRotation:(E=(Q=g.rotationTo)!=null?Q:A.rotation)!=null?E:0,duration:Math.max(1,(e=g.duration)!=null?e:600),easing:(i=g.easing)!=null?i:ge}}runGiftAnimationStep(A,g,I){const B=this.resolveAnimationStepTarget(A,I),Q=this.manager.postAnimator.startTweenPromise(A,B.targetX,B.targetY,B.targetScale,B.duration,B.easing,()=>{var E;return(E=I.onComplete)==null?void 0:E.call(I,g)},B.targetOpacity,B.targetRotation);return this.manager.invalidate({resetClock:!0}),Q}createGiftAnimationChain(A,g,I){const B=Array.isArray(I)?[...I]:I?[I]:[],Q=[];let E=!1,e=!1,i=null,t=null;const a=s=>new Promise(n=>{if(e){n();return}t=n,i=setTimeout(()=>{i=null,t=null,n()},Math.max(0,s))}),o={to:s=>{if(E)throw new Error("Gift animation chain has already started");return B.push(s),o},then:s=>{if(E)throw new Error("Gift animation chain has already started");return B.push(s),o},delay:s=>{if(E)throw new Error("Gift animation chain has already started");return B.push({delayMs:Math.max(0,s)}),o},onComplete:s=>{if(E)throw new Error("Gift animation chain has already started");return Q.push(s),o},start:async(s="immediate")=>{var n,r;E=!0;const c=(n=this.manager)==null?void 0:n.getSlot(A.id);if(!c||c.state==="finished")return g;s==="afterGiftComplete"&&await this.waitForGiftPlaybackComplete(A.id);let h=!1;for(const l of B){if(e||!((r=this.manager)!=null&&r.getSlot(A.id))||A.state==="finished"){h=!0;break}Yn(l)?await a(l.delayMs):await this.runGiftAnimationStep(A,g,l)}if(!h&&!e)for(const l of Q)l(g);return g},cancel:()=>{var s;e=!0,i!=null&&(clearTimeout(i),i=null),t==null||t(),t=null,(s=this.manager)==null||s.postAnimator.cancelForGift(A.id)}};return o}getGiftRenderInfo(A){var g,I,B,Q,E,e,i,t,a,o,s,n,r,c,h,l,w,D,y,R,F,d,f,u,G,S;if(A.type!=="svga")return null;const M=A.videoEntity,N=(I=(g=A.svgaFrameTableState)!=null?g:M==null?void 0:M.svgaFrameTableState)!=null?I:null,U=M==null?void 0:M.spriteTable,p=M?(Q=(B=M.atlasTextureHandles)==null?void 0:B.length)!=null?Q:M.atlasTextureHandle?1:0:0,k=M&&(i=(e=(E=this.manager)==null?void 0:E.countCompatibleSVGAInstances)==null?void 0:e.call(E,M))!=null?i:0;if(N){const m=N.renderInfo.selectedPath,H=m==="cpu-reference",v=(t=N.renderInfo.frameTableBytes)!=null?t:N.renderInfo.tableBytes,j=(s=(o=(a=M==null?void 0:M.svgaHybridCommandTable)==null?void 0:a.byteLength)!=null?o:N.renderInfo.commandTableBytes)!=null?s:0;return{selectedPath:m,svgaFramePath:m,parentMotionMode:A.motionTrackBinding&&((n=this.backend)==null?void 0:n.type)==="webgpu"?"gpu-table":A.motionTrackBinding?"cpu-reference":void 0,backend:N.renderInfo.backend,requested:(c=(r=A.options.svgaFrameEvaluation)!=null?r:this.options.svgaFrameEvaluation)!=null?c:"auto",spriteCount:(h=U==null?void 0:U.spriteCount)!=null?h:N.renderInfo.spriteCount,frameCount:(l=U==null?void 0:U.frameCount)!=null?l:N.renderInfo.frameCount,compatibleInstanceCount:k,atlasPageCount:p,tableBytes:N.renderInfo.tableBytes,frameTableBytes:v,commandTableBytes:j,budgetBytes:N.renderInfo.budgetBytes,pathState:(w=N.renderInfo.pathState)!=null?w:N.renderInfo.fallbackReasons.includes("table-preparing")?"preparing":m==="cpu-reference"?"fallback":"settled",drawBatchMode:H?"per-slot":(D=A.svgaDrawBatchMode)!=null?D:m==="gpu-hybrid"?"hybrid-scheduled":"per-slot",drawCompatibleInstanceCount:H?1:(y=A.svgaDrawCompatibleInstanceCount)!=null?y:k,fallbackReasons:[...N.renderInfo.fallbackReasons],...N.renderInfo.fallbackReason?{fallbackReason:N.renderInfo.fallbackReason}:{}}}return{selectedPath:"cpu-reference",svgaFramePath:"cpu-reference",parentMotionMode:A.motionTrackBinding?"cpu-reference":void 0,backend:(F=(R=this.backend)==null?void 0:R.type)!=null?F:"webgl2",requested:(f=(d=A.options.svgaFrameEvaluation)!=null?d:this.options.svgaFrameEvaluation)!=null?f:"auto",spriteCount:(u=U==null?void 0:U.spriteCount)!=null?u:0,frameCount:(G=U==null?void 0:U.frameCount)!=null?G:0,compatibleInstanceCount:k,atlasPageCount:p,tableBytes:0,frameTableBytes:0,commandTableBytes:0,budgetBytes:(S=this.options.svgaGpuFrameTableBudgetBytes)!=null?S:32*1024*1024,pathState:"preparing",drawBatchMode:"per-slot",drawCompatibleInstanceCount:k,fallbackReasons:[A.options.svgaFrameEvaluation==="cpu"||this.options.svgaFrameEvaluation==="cpu"?"policy-disabled":"table-preparing"]}}reportSVGARenderPath(A){var g,I;this.ensureSVGATimelineBookkeeping();const B=this.getGiftRenderInfo(A);if(!B)return;const Q=`${B.selectedPath}|${B.pathState}|${B.drawBatchMode}|${B.drawCompatibleInstanceCount}|${B.fallbackReasons.join(",")}|${B.tableBytes}|${B.commandTableBytes}`;if(this.svgaReportedPathKeys.get(A)!==Q){this.svgaReportedPathKeys.set(A,Q);try{(I=(g=this.options).onSVGARenderPathChange)==null||I.call(g,{giftId:A.id,...B})}catch(E){this.recordObserverError("onSVGARenderPathChange",E)}}}async addGift(A){var g,I,B,Q,E,e,i,t,a,o,s,n;if(console.info("[GiftStage] addGift await ready…",A.type),await this.ready,L(A.signal,lA),console.info("[GiftStage] addGift ready, loading…",A.type),this.destroyed)throw new Error("GiftStage is destroyed");let r=null;A.type==="image"&&(r=await this.acquireImageTexture(A.source,A.signal));let c;try{c=await this.normalizeAddGiftOptions(A,r?{width:r.width,height:r.height}:void 0)}catch(u){throw r==null||r.release(),u}if(this.destroyed)throw r==null||r.release(),new Error("GiftStage is destroyed");const h=mC(),l=new AbortController,w=()=>l.abort();(g=A.signal)!=null&&g.aborted?w():(I=A.signal)==null||I.addEventListener("abort",w,{once:!0});const{sx:D,sy:y}=Zg(this.canvas),R=xE(c.x,c.y,c.width,c.height,this.canvas.clientWidth,this.canvas.clientHeight),F={id:h,type:c.type,state:"loading",options:c,zIndex:(B=c.zIndex)!=null?B:0,renderOrder:this.nextRenderOrder++,x:R.x*D,y:R.y*y,width:c.width*D,height:c.height*y,scale:1,opacity:_Q((Q=c.opacity)!=null?Q:1),rotation:Number.isFinite(c.rotation)?c.rotation:0,paused:c.startPaused===!0,playbackScopeControlled:c.playbackScopeControlled===!0,svgaInitialFrameEmitted:!1,currentFrame:0,accumulatedTime:0,lastTickTime:0,loopCount:0,svgaClipReadyFrame:null,videoEntity:null,loadAbortController:l,detachLoadAbortSignal:A.signal?()=>{var u;return(u=A.signal)==null?void 0:u.removeEventListener("abort",w)}:null,videoPlaybackWatchdogTimer:null,videoPlaybackCompletionStarted:!1,svgaSlotTextures:void 0,videoElement:null,releaseMediaSource:null,releaseSharedSVGAAsset:null,releaseSharedVideoPlayback:null,releaseSharedVideoTexture:null,webcodecsPlayback:null,webcodecsSharedState:null,releaseWebCodecsPlayback:null,wcPlaybackTime:0,videoTextureHandle:null,imageTextureHandle:(E=r==null?void 0:r.texture)!=null?E:null,releaseSharedImageTexture:(e=r==null?void 0:r.release)!=null?e:null,webcodecsSurface:null,releaseWebCodecsSurface:null,vapMixState:null,onFrame:c.onFrame,onComplete:void 0};let d;d={id:h,type:c.type,pause:()=>{var u,G,S,M;F.paused=!0,F.type==="svga"&&((u=this.manager)==null||u.audioManager.stopAllForGift(F.id)),this.clearHtmlVideoPlaybackWatchdog(F),(G=this.manager)==null||G.postAnimator.pauseForGift(F.id),(S=this.manager)==null||S.invalidate(),(M=this.manager)==null||M.syncVideoPlaybackForSlot(F)},resume:()=>{var u,G,S,M,N;if(F.paused=!1,(u=this.manager)==null||u.postAnimator.resumeForGift(F.id),(G=this.manager)==null||G.invalidate({resetClock:!0}),(S=this.manager)==null||S.syncVideoPlaybackForSlot(F),F.type==="svga"&&F.videoEntity&&!F.playbackScopeControlled){const U=F.videoEntity.params.fps,p=F.videoEntity.params.frames,k=F.loopCount*p+F.currentFrame+F.accumulatedTime*U;(M=this.manager)==null||M.audioManager.syncPlaybackScopeFrame(F,k),F.svgaInitialFrameEmitted!==!0&&((N=F.onFrame)==null||N.call(F,F.currentFrame,d),F.svgaInitialFrameEmitted=!0)}F.videoElement&&!F.releaseSharedVideoPlayback&&this.armHtmlVideoPlaybackWatchdog(F,F.videoElement)},destroy:()=>{this.removeGift(h)},getRenderInfo:()=>this.getGiftRenderInfo(F),animate:u=>this.createGiftAnimationChain(F,d,u)};const f=c.onComplete;F.onComplete=u=>{this.markGiftPlaybackComplete(F.id),f==null||f(u)},this.manager.addSlot(F,d);try{switch(c.type){case"svga":await this.loadSVGA(F);break;case"vap":await this.loadVAP(F,c);break;case"alphaVideo":await this.loadAlphaVideo(F,c);break;case"image":break}this.assertSlotLoadActive(F),c.type==="svga"&&F.state==="playing"||(F.state="playing",this.manager.invalidate({resetClock:!0}),c.type==="svga"&&F.videoEntity&&!F.paused&&!F.playbackScopeControlled&&(this.manager.audioManager.tickFrame(F,F.currentFrame),(i=F.onFrame)==null||i.call(F,F.currentFrame,d),F.svgaInitialFrameEmitted=!0)),this.manager.syncVideoPlaybackForSlot(F),F.webcodecsPlayback&&console.info("[GiftStage:WC] gift playing",{giftId:F.id,type:F.type,layoutBufPx:{x:F.x,y:F.y,w:F.width,h:F.height}}),c.type==="image"&&!(c.duration>0)&&this.markGiftPlaybackComplete(F.id)}catch(u){if(this.isLoadCanceled(u))return((t=this.manager)==null?void 0:t.getSlot(F.id))===F?this.manager.removeSlot(F.id):(a=this.manager)==null||a.releaseSlotResources(F),d;F.state="finished",(o=this.manager)==null||o.invalidate(),(n=(s=this.options).onError)==null||n.call(s,u instanceof Error?u:new Error(String(u)))}return d}async loadSVGA(A){var g,I,B,Q;const E=typeof A.options.source=="string"?A.options.source:null,e=(g=A.loadAbortController)==null?void 0:g.signal;if(E){const n=await this.acquireSharedSVGAEntity(E,e);if(!this.isSlotLoadActive(A))throw n.release(),new Error(lA);A.releaseSharedSVGAAsset=n.release,await this.finishLoadSVGA(A,n.entity,n.audioBlobs),this.assertSlotLoadActive(A);return}const{movie:i,imageBitmaps:t,audioBlobs:a}=await fB(A.options.source,this.svgaParseOptions(e));let o=null,s=!1;try{this.assertSlotLoadActive(A),o=await this.buildSVGAAtlasIfNeeded(t,!!E,!0,e),this.assertSlotLoadActive(A);const n={params:i.params,spriteTable:i.spriteTable,audios:i.audios,atlasTextureHandle:(I=o==null?void 0:o.textureHandle)!=null?I:null,atlasTextureHandles:(B=o==null?void 0:o.textureHandles)!=null?B:[],atlasRects:(Q=o==null?void 0:o.rects)!=null?Q:new Map,audioBuffers:new Map};await this.finishLoadSVGA(A,n,a),A.releaseSharedSVGAAsset=Mg(()=>this.deleteSVGAAtlasTextures(n)),s=!0,this.assertSlotLoadActive(A),E&&(o!=null&&o.encodedPngBytesPromises)&&Promise.all(o.encodedPngBytesPromises).then(r=>{r.some(c=>!c)||DB(E,{params:i.params,spriteTable:i.spriteTable,audios:i.audios,audioBlobs:a,atlasRects:o.rects,atlasPages:o.pages.map((c,h)=>({width:c.atlasWidth,height:c.atlasHeight,imageBytes:r[h]}))},{frameBudgetMs:this.options.svgaLoadFrameBudgetMs})})}catch(n){throw s||this.deleteSVGAAtlasResultTextures(o),n}finally{for(const n of t.values())n.close()}}async acquireSharedSVGAEntity(A,g){const I=A,B=this.sharedSVGAEntities.get(I);if(B)return B.refs++,{entity:B.entity,audioBlobs:B.audioBlobs,release:()=>this.releaseSharedSVGAEntity(I)};let Q=this.pendingSharedSVGAEntities.get(I);if(!Q){const i=new AbortController;Q={cacheKey:I,controller:i,consumers:0,settled:!1,promise:null};const t=Q;Q.promise=this.buildSharedSVGAEntity(A,i.signal).finally(()=>{t.settled=!0,this.pendingSharedSVGAEntities.get(I)===t&&this.pendingSharedSVGAEntities.delete(I)}),this.pendingSharedSVGAEntities.set(I,Q)}let E;try{E=await this.waitForPendingSharedSVGAEntity(Q,g)}catch(i){throw i}let e=this.sharedSVGAEntities.get(I);return e?e.refs++:(e={refs:1,entity:E.entity,audioBlobs:E.audioBlobs},this.sharedSVGAEntities.set(I,e)),{entity:e.entity,audioBlobs:e.audioBlobs,release:()=>this.releaseSharedSVGAEntity(I)}}waitForPendingSharedSVGAEntity(A,g){return A.consumers++,new Promise((I,B)=>{let Q=!1;const E=i=>{Q||(Q=!0,g==null||g.removeEventListener("abort",e),A.consumers=Math.max(0,A.consumers-1),A.consumers===0&&!A.settled&&A.controller.abort(),i())},e=()=>{E(()=>B(QA(lA)))};if(g!=null&&g.aborted){e();return}g==null||g.addEventListener("abort",e,{once:!0}),A.promise.then(i=>E(()=>I(i)),i=>E(()=>B(i)))})}async buildSharedSVGAEntity(A,g){var I,B,Q,E,e,i;const t=await hn(A,{frameBudgetMs:this.options.svgaLoadFrameBudgetMs});if(L(g,lA),t){const s=await this.createCachedSVGAAtlasTextures(t.atlasPages,g);try{await((I=this.manager)==null?void 0:I.hydrateSVGAClipMeshesCooperative(t.clipMeshes,{frameBudgetMs:this.options.svgaLoadFrameBudgetMs,signal:g}))}catch(r){for(const c of s)(B=this.backend)==null||B.deleteTexture(c);throw r}const n={params:t.params,spriteTable:t.spriteTable,audios:t.audios,atlasTextureHandle:(Q=s[0])!=null?Q:null,atlasTextureHandles:s,atlasRects:t.atlasRects,audioBuffers:new Map};return this.svgaPersistentCacheWriters.set(n,async r=>{await DB(A,{params:t.params,spriteTable:t.spriteTable,audios:t.audios,audioBlobs:t.audioBlobs,atlasRects:t.atlasRects,atlasPages:t.atlasPages,clipMeshes:r},{frameBudgetMs:this.options.svgaLoadFrameBudgetMs})}),{entity:n,audioBlobs:t.audioBlobs}}let a=await fB(A,this.svgaParseOptions(g)),o=null;try{try{o=await this.buildSVGAAtlasIfNeeded(a.imageBitmaps,!0,!0,g)}catch(c){if(mg(c)||!(c instanceof Vg))throw c;for(const h of a.imageBitmaps.values())h.close();a=await fB(A,this.svgaParseOptions(g)),o=await this.buildSVGAAtlasIfNeeded(a.imageBitmaps,!0,!1,g)}const{movie:s,audioBlobs:n}=a,r={params:s.params,spriteTable:s.spriteTable,audios:s.audios,atlasTextureHandle:(E=o==null?void 0:o.textureHandle)!=null?E:null,atlasTextureHandles:(e=o==null?void 0:o.textureHandles)!=null?e:[],atlasRects:(i=o==null?void 0:o.rects)!=null?i:new Map,audioBuffers:new Map};if(L(g,lA),o&&o.encodedPngBytesPromises){const c=o,h=o.encodedPngBytesPromises;this.svgaPersistentCacheWriters.set(r,async l=>{const w=await Promise.all(h);w.some(D=>!D)||await DB(A,{params:s.params,spriteTable:s.spriteTable,audios:s.audios,audioBlobs:n,atlasRects:c.rects,atlasPages:c.pages.map((D,y)=>({width:D.atlasWidth,height:D.atlasHeight,imageBytes:w[y]})),clipMeshes:l},{frameBudgetMs:this.options.svgaLoadFrameBudgetMs})})}else o||this.svgaPersistentCacheWriters.set(r,async c=>{await DB(A,{params:s.params,spriteTable:s.spriteTable,audios:s.audios,audioBlobs:n,atlasRects:new Map,atlasPages:[],clipMeshes:c},{frameBudgetMs:this.options.svgaLoadFrameBudgetMs})});return L(g,lA),{entity:r,audioBlobs:n}}catch(s){throw this.deleteSVGAAtlasResultTextures(o),s}finally{for(const s of a.imageBitmaps.values())s.close()}}releaseSharedSVGAEntity(A){const g=this.sharedSVGAEntities.get(A);g&&(g.refs=Math.max(0,g.refs-1),!(g.refs>0)&&(this.deleteSVGAAtlasTextures(g.entity),this.sharedSVGAEntities.delete(A)))}async createCachedSVGAAtlasTextures(A,g){var I;const B=[],Q=OA({maxBudgetMs:this.svgaAtlasFrameBudgetMs()}),E=A.map(e=>createImageBitmap(new Blob([e.imageBytes],{type:"image/png"}),{premultiplyAlpha:"premultiply"}));try{for(let e=0;e<A.length;e++){L(g,lA);const i=A[e],t=await E[e];try{if(this.destroyed||!this.backend)throw new Error(lA);const a=this.backend.createTexture(t,{width:i.width,height:i.height,filter:"linear",premultiplyAlpha:!0,sourcePremultiplied:!0});B.push(a)}finally{t.close()}e+1<A.length&&Q.shouldYield()&&await Q.yield(),L(g,lA)}return B}catch(e){for(const i of B)(I=this.backend)==null||I.deleteTexture(i);for(const i of E)i.then(t=>t.close()).catch(()=>{});throw e}}svgaGpuFrameTableBudgetBytes(){const A=this.options.svgaGpuFrameTableBudgetBytes;return Number.isFinite(A)&&A>=0?Math.floor(A):KC}getSVGAPreparationProfile(A){if(!this.options.onSVGAPreparationProfile)return;this.svgaPreparationProfiles||(this.svgaPreparationProfiles=new WeakMap);let g=this.svgaPreparationProfiles.get(A);return g||(g=new Pe(this.svgaPreparationSequence=(this.svgaPreparationSequence||0)+1),this.svgaPreparationProfiles.set(A,g)),g}ensureSVGATimelineBookkeeping(){var A;this.svgaReportedPathKeys||(this.svgaReportedPathKeys=new WeakMap),this.svgaFrameTablePromises||(this.svgaFrameTablePromises=new WeakMap),this.svgaFrameTableResidentBytes||(this.svgaFrameTableResidentBytes=new WeakMap),this.svgaFrameTableReservedBytes||(this.svgaFrameTableReservedBytes=new WeakMap),this.releasedSVGATimelineEntities||(this.releasedSVGATimelineEntities=new WeakSet),this.svgaPreparingEntities||(this.svgaPreparingEntities=new Set),this.svgaCommandControllers||(this.svgaCommandControllers=new WeakMap),this.svgaFullClipPrewarmPromises||(this.svgaFullClipPrewarmPromises=new WeakMap),this.activeSVGATimelineEntities||(this.activeSVGATimelineEntities=new Set),this.svgaEntitySources||(this.svgaEntitySources=new WeakMap),Number.isFinite(this.activeSVGAGpuFrameTableBytes)||(this.activeSVGAGpuFrameTableBytes=0),Number.isFinite(this.reservedSVGAGpuFrameTableBytes)||(this.reservedSVGAGpuFrameTableBytes=0),Number.isFinite(this.runtimeFallbackCount)||(this.runtimeFallbackCount=0),Number.isFinite(this.runtimeObserverErrorCount)||(this.runtimeObserverErrorCount=0),(A=this.lastRuntimeDiagnostic)!=null||(this.lastRuntimeDiagnostic=null)}emitRuntimeDiagnostic(A){var g,I,B,Q,E,e;const i={...A,timestampMs:typeof performance!="undefined"?performance.now():Date.now(),backend:(I=(g=this.backend)==null?void 0:g.type)!=null?I:"webgl2",...A.giftIds?{giftIds:[...A.giftIds]}:{}};this.lastRuntimeDiagnostic=i;try{(Q=(B=this.options).onRuntimeDiagnostic)==null||Q.call(B,{...i,...i.giftIds?{giftIds:[...i.giftIds]}:{}})}catch(t){this.runtimeObserverErrorCount++,this.lastRuntimeDiagnostic={type:"observer-error",timestampMs:typeof performance!="undefined"?performance.now():Date.now(),backend:(e=(E=this.backend)==null?void 0:E.type)!=null?e:"webgl2",message:`onRuntimeDiagnostic: ${this.runtimeErrorMessage(t)}`},console.error("[GiftStage] onRuntimeDiagnostic observer failed",t)}}recordObserverError(A,g){this.runtimeObserverErrorCount++,console.error(`[GiftStage] ${A} observer failed`,g),this.emitRuntimeDiagnostic({type:"observer-error",message:`${A}: ${this.runtimeErrorMessage(g)}`})}runtimeErrorMessage(A){return A instanceof Error?A.message:String(A)}handleSVGABackendLoss(){var A,g;if(this.svgaBackendLost)return;this.svgaBackendLost=!0;for(const B of this.svgaPreparingEntities)(A=this.svgaCommandControllers.get(B))==null||A.abort();(g=this.manager)==null||g.handleBackendLoss();const I=new Set([...this.svgaPreparingEntities,...this.activeSVGATimelineEntities]);for(const B of I)this.fallbackSVGAFrameTable(B,"validation-failed")}reserveSVGAFrameTableBytes(A,g){if(this.svgaFrameTableReservedBytes.has(A))return!0;const I=this.svgaGpuFrameTableBudgetBytes();return!Number.isFinite(g)||g<0||this.activeSVGAGpuFrameTableBytes+this.reservedSVGAGpuFrameTableBytes+g>I?!1:(this.svgaFrameTableReservedBytes.set(A,g),this.reservedSVGAGpuFrameTableBytes+=g,!0)}rollbackSVGAFrameTableReservation(A){var g;const I=(g=this.svgaFrameTableReservedBytes.get(A))!=null?g:0;I<=0||(this.svgaFrameTableReservedBytes.delete(A),this.reservedSVGAGpuFrameTableBytes=Math.max(0,this.reservedSVGAGpuFrameTableBytes-I))}commitSVGAFrameTableReservation(A){var g;const I=(g=this.svgaFrameTableReservedBytes.get(A))!=null?g:0;this.rollbackSVGAFrameTableReservation(A),!(I<=0)&&(this.svgaFrameTableResidentBytes.set(A,I),this.activeSVGAGpuFrameTableBytes+=I)}buildSVGATimelineDrawPlan(A){var g,I,B;const Q=A.spriteTable,E=ae(Q.imageKeys,A.atlasRects),e=(g=A.atlasTextureHandles)!=null&&g.length?A.atlasTextureHandles:A.atlasTextureHandle?[A.atlasTextureHandle]:[],i=[];let t=null;for(let a=0;a<Q.spriteCount;a++){const o=A.atlasRects.get((I=Q.imageKeys[a])!=null?I:""),s=(B=o==null?void 0:o.textureIndex)!=null?B:0;if(!(!!o&&!!e[s])){t=null;continue}t&&t.textureIndex===s&&t.spriteBase+t.spriteCount===a?t.spriteCount++:(t={spriteBase:a,spriteCount:1,textureIndex:s},i.push(t))}return{metadata:E,runs:i,atlasPageCount:e.length}}createSVGATimelineState(A,g={}){var I,B,Q,E,e;const i=A.spriteTable,t=(I=A.atlasTextureHandles)!=null&&I.length?A.atlasTextureHandles.length:A.atlasTextureHandle?1:0;return{binding:null,renderInfo:NC({backend:(Q=(B=this.backend)==null?void 0:B.type)!=null?Q:"webgl2",spriteTable:i,hasAtlas:t>0,hasSlotTextureOverride:g.hasSlotTextureOverride,strategy:(e=(E=g.strategy)!=null?E:this.options.svgaFrameEvaluation)!=null?e:"auto",budgetBytes:this.svgaGpuFrameTableBudgetBytes(),tablePreparing:g.preparing,uploadFailed:g.uploadFailed,compatibleInstanceCount:g.compatibleInstanceCount,atlasPageCount:t}),currentTimeMs:0,frameIndex:0}}ensureSVGAFrameTable(A,g=!1){var I,B,Q;this.ensureSVGATimelineBookkeeping();const E=this.svgaFrameTablePromises.get(A);if(E)return E;const e=this.backend,i=(I=this.options.svgaFrameEvaluation)!=null?I:"auto",t=!!(e!=null&&e.createSVGAFrameTable)&&e.type!=="webgl1"&&e.supportsAtomicFrameReplay===!0&&typeof e.abortFrame=="function",a=e,o=!this.svgaBackendLost&&t&&((Q=(B=a.canCreateSVGAFrameTable)==null?void 0:B.call(a))!=null?Q:!0),s=this.createSVGATimelineState(A,{preparing:i!=="cpu"&&o,strategy:i});if(!o&&i!=="cpu"&&(s.renderInfo={...s.renderInfo,path:"cpu-reference",selectedPath:"cpu-reference",pathState:"fallback",drawBatchMode:"per-slot",drawCompatibleInstanceCount:1,fallbackReason:"device-capability",fallbackReasons:["device-capability"]}),A.svgaFrameTableState=s,i==="cpu"||!o||!e){const h=Promise.resolve();return this.svgaFrameTablePromises.set(A,h),h}this.svgaPreparingEntities.add(A);const n=new AbortController;this.svgaCommandControllers.set(A,n);const r=this.getSVGAPreparationProfile(A),c=new Promise(h=>{if(g&&typeof requestAnimationFrame=="function"){requestAnimationFrame(()=>setTimeout(h,0));return}setTimeout(h,0)}).then(async()=>{var h,l,w,D,y,R,F,d;if(this.destroyed||this.svgaBackendLost||this.releasedSVGATimelineEntities.has(A))return;let f=null;try{const u=A.spriteTable,G=this.buildSVGATimelineDrawPlan(A),S=gB(u.spriteCount,u.frameCount),M=u.clipPathIndex.some(b=>b>=0);M&&((h=this.manager)!=null&&h.prewarmSVGAClipMeshes)&&await this.ensureSVGAFullClipPrewarm(A);const N=await ei(A,u.hasAnyShapes||M,{frameBudgetMs:this.options.svgaLoadFrameBudgetMs,workerTimeSliceMs:this.options.svgaWorkerFrameBudgetMs,useWorker:this.options.svgaCommandTableInWorker!==!1,clipAnalysis:(l=this.manager)==null?void 0:l.svgaClipAnalysis,signal:n.signal,checkActive:()=>this.assertSVGAFrameTableActive(A),profile:r}),U=N.commandTable;this.assertSVGAFrameTableActive(A);const p=S+G.metadata.byteLength,k=(w=U==null?void 0:U.byteLength)!=null?w:0,m=p+k,H=this.svgaGpuFrameTableBudgetBytes();if(!Number.isFinite(m)||!G.runs.length&&!u.hasAnyShapes){const b=!G.runs.length&&!u.hasAnyShapes?"validation-failed":"table-too-large-or-budget";s.renderInfo={...s.renderInfo,path:"cpu-reference",selectedPath:"cpu-reference",pathState:"fallback",drawBatchMode:"per-slot",drawCompatibleInstanceCount:1,tableBytes:m,fallbackReason:b,fallbackReasons:[b]};return}if(!this.reserveSVGAFrameTableBytes(A,m)){s.renderInfo={...s.renderInfo,path:"cpu-reference",selectedPath:"cpu-reference",pathState:"fallback",drawBatchMode:"per-slot",drawCompatibleInstanceCount:1,tableBytes:m,fallbackReason:"table-too-large-or-budget",fallbackReasons:["table-too-large-or-budget"]};return}const v=N.packed;if(this.destroyed||this.svgaBackendLost||this.releasedSVGATimelineEntities.has(A))return;const j=()=>e.createSVGAFrameTable(v,{spriteCount:u.spriteCount,frameCount:u.frameCount,spriteMetadata:G.metadata,hybridSpriteMetadata:U==null?void 0:U.spriteMetadata,atlasPageCount:G.atlasPageCount,label:"giftstage-svga-frame-table"});if(f=r?r.measure("gpu-submit",j):j(),r&&(r.phase("gpu-submit").bytes=m),this.destroyed||this.svgaBackendLost||this.releasedSVGATimelineEntities.has(A)){(D=e.deleteSVGAFrameTable)==null||D.call(e,f),this.rollbackSVGAFrameTableReservation(A);return}const T=NC({backend:e.type,spriteTable:u,hasAtlas:G.atlasPageCount>0,strategy:"auto",budgetBytes:H,atlasPageCount:G.atlasPageCount});if(T.tableBytes=m,T.frameTableBytes=p,T.commandTableBytes=k,T.selectedPath==="gpu-hybrid"&&(A.svgaHybridCommandTable=U,await this.ensureSVGAHybridSchedulePrepared(A),this.destroyed||this.svgaBackendLost||this.releasedSVGATimelineEntities.has(A))){(y=e.deleteSVGAFrameTable)==null||y.call(e,f),this.rollbackSVGAFrameTableReservation(A);return}if(T.selectedPath!=="gpu-direct"&&T.selectedPath!=="gpu-hybrid"){(R=e.deleteSVGAFrameTable)==null||R.call(e,f),this.rollbackSVGAFrameTableReservation(A);return}this.commitSVGAFrameTableReservation(A),this.activeSVGATimelineEntities.add(A),A.svgaTimelineDrawRuns=G.runs,s.binding=f,s.renderInfo=T}catch(u){if(f&&((F=e.deleteSVGAFrameTable)==null||F.call(e,f)),this.rollbackSVGAFrameTableReservation(A),this.isLoadCanceled(u)||n.signal.aborted)return;(d=this.manager)==null||d.releaseSVGAHybridMeshes(A);const G=u instanceof $Q?"validation-failed":u instanceof RangeError?"table-too-large-or-budget":"upload-failed";s.binding=null,A.svgaHybridCommandTable=void 0,s.renderInfo={...s.renderInfo,path:"cpu-reference",selectedPath:"cpu-reference",pathState:"fallback",drawBatchMode:"per-slot",drawCompatibleInstanceCount:1,fallbackReason:G,fallbackReasons:[G]},console.warn("[GiftStage:SVGA] GPU frame table unavailable; using CPU reference",u)}}).finally(()=>{var h,l;if(this.svgaCommandControllers.delete(A),r){const w=n.signal.aborted||this.destroyed||this.svgaBackendLost||this.releasedSVGATimelineEntities.has(A)?"canceled":s.binding?"complete":"failed";try{(l=(h=this.options).onSVGAPreparationProfile)==null||l.call(h,r.finish(w))}catch(D){this.recordObserverError("onSVGAPreparationProfile",D)}}this.svgaPreparingEntities.delete(A),this.rollbackSVGAFrameTableReservation(A),this.refreshSVGATimelineSlots(A)});return this.svgaFrameTablePromises.set(A,c),c}assertSVGAFrameTableActive(A){if(this.destroyed||this.svgaBackendLost||this.releasedSVGATimelineEntities.has(A))throw new Error(lA)}refreshSVGATimelineSlots(A,g){if(!this.manager)return;const I=[];for(const B of this.manager.getSlotIds()){const Q=this.manager.getSlot(B);!Q||Q.videoEntity!==A||I.push(Q)}for(const B of I)this.assignSVGATimelineStateToSlot(B,A);this.manager.invalidate(),g==null||g();for(const B of I)this.reportSVGARenderPath(B)}assignSVGATimelineStateToSlot(A,g){var I,B,Q,E,e,i,t,a;const o=(B=(I=A.options.svgaFrameEvaluation)!=null?I:this.options.svgaFrameEvaluation)!=null?B:"auto";if(o==="cpu"||(Q=A.svgaSlotTextures)!=null&&Q.size){A.svgaFrameTableState=this.createSVGATimelineState(g,{strategy:o,hasSlotTextureOverride:!!((E=A.svgaSlotTextures)!=null&&E.size),compatibleInstanceCount:(t=(i=(e=this.manager)==null?void 0:e.countCompatibleSVGAInstances)==null?void 0:i.call(e,g))!=null?t:0}),A.svgaDrawBatchMode="per-slot",A.svgaDrawCompatibleInstanceCount=1;return}const s=g.svgaFrameTableState;A.svgaFrameTableState=s?{binding:s.binding,renderInfo:s.renderInfo,currentTimeMs:0,frameIndex:A.currentFrame}:null,((a=A.svgaFrameTableState)==null?void 0:a.renderInfo.selectedPath)==="cpu-reference"&&(A.svgaDrawBatchMode="per-slot",A.svgaDrawCompatibleInstanceCount=1)}releaseSVGAFrameTable(A){var g,I,B,Q,E,e,i,t;this.ensureSVGATimelineBookkeeping(),this.releasedSVGATimelineEntities.add(A),(g=this.svgaCommandControllers.get(A))==null||g.abort();const a=(I=A.svgaFrameTableState)==null?void 0:I.binding;a&&((Q=(B=this.backend)==null?void 0:B.deleteSVGAFrameTable)==null||Q.call(B,a)),this.rollbackSVGAFrameTableReservation(A),(E=this.manager)==null||E.releaseSVGAHybridMeshes(A),(i=(e=this.manager)==null?void 0:e.releaseSVGAPreparation)==null||i.call(e,A),this.activeSVGATimelineEntities.delete(A),this.svgaPreparingEntities.delete(A);const o=(t=this.svgaFrameTableResidentBytes.get(A))!=null?t:0;this.activeSVGAGpuFrameTableBytes=Math.max(0,this.activeSVGAGpuFrameTableBytes-o),this.svgaFrameTableResidentBytes.delete(A),A.svgaFrameTableState=null,A.svgaTimelineDrawRuns=void 0,A.svgaHybridCommandTable=void 0}fallbackSVGAFrameTable(A,g){var I,B,Q,E;this.ensureSVGATimelineBookkeeping();const e=A.svgaFrameTableState;if(!e||e.renderInfo.selectedPath==="cpu-reference"&&!e.renderInfo.fallbackReasons.includes("table-preparing"))return;const i=this.getSVGAEntityDiagnosticContext(A);e.binding&&((B=(I=this.backend)==null?void 0:I.deleteSVGAFrameTable)==null||B.call(I,e.binding)),this.rollbackSVGAFrameTableReservation(A),(Q=this.manager)==null||Q.releaseSVGAHybridMeshes(A),this.activeSVGATimelineEntities.delete(A);const t=(E=this.svgaFrameTableResidentBytes.get(A))!=null?E:0;this.activeSVGAGpuFrameTableBytes=Math.max(0,this.activeSVGAGpuFrameTableBytes-t),this.svgaFrameTableResidentBytes.delete(A),e.binding=null,e.renderInfo={...e.renderInfo,path:"cpu-reference",selectedPath:"cpu-reference",pathState:"fallback",fallbackReason:g,fallbackReasons:[g],drawBatchMode:"per-slot",drawCompatibleInstanceCount:1},A.svgaHybridCommandTable=void 0,this.refreshSVGATimelineSlots(A,()=>{this.runtimeFallbackCount++,this.emitRuntimeDiagnostic({type:"svga-runtime-fallback",source:i.source,giftIds:i.giftIds,reason:g})})}getSVGAEntityDiagnosticContext(A){var g;this.ensureSVGATimelineBookkeeping();const I=[];let B=(g=this.svgaEntitySources.get(A))!=null?g:null;if(this.manager)for(const Q of this.manager.getSlotIds()){const E=this.manager.getSlot(Q);!E||E.videoEntity!==A||(I.push(E.id),B==null&&typeof E.options.source=="string"&&(B=E.options.source))}return{source:B,giftIds:I}}deleteSVGAAtlasTextures(A){var g,I;this.releaseSVGAFrameTable(A);const B=(g=A.atlasTextureHandles)!=null&&g.length?A.atlasTextureHandles:A.atlasTextureHandle?[A.atlasTextureHandle]:[],Q=new Set;for(const E of B)Q.has(E.id)||(Q.add(E.id),(I=this.backend)==null||I.deleteTexture(E))}deleteSVGAAtlasResultTextures(A){var g,I;if(!A)return;const B=(g=A.textureHandles)!=null&&g.length?A.textureHandles:A.textureHandle?[A.textureHandle]:[],Q=new Set;for(const E of B)Q.has(E.id)||(Q.add(E.id),(I=this.backend)==null||I.deleteTexture(E))}async finishLoadSVGA(A,g,I){var B,Q,E;this.assertSlotLoadActive(A),this.ensureSVGATimelineBookkeeping(),this.svgaEntitySources.set(g,typeof A.options.source=="string"?A.options.source:null),A.videoEntity=g;const e=this.manager.prewarmSVGAClipMeshesForFrame(g,0,{frameBudgetMs:this.svgaClipFrameBudgetMs(),workerTimeSliceMs:this.options.svgaWorkerFrameBudgetMs,useWorker:this.options.svgaClipPrewarmInWorker!==!1,profile:this.getSVGAPreparationProfile(g),checkActive:()=>this.assertSlotLoadActive(A),signal:(B=A.loadAbortController)==null?void 0:B.signal}),i=A.options.svgaSlots?La(this.backend,g,A.options.svgaSlots,{frameBudgetMs:this.options.svgaLoadFrameBudgetMs,checkActive:()=>this.assertSlotLoadActive(A)}):Promise.resolve(void 0),[,t]=await Promise.all([e,i]);this.assertSlotLoadActive(A),A.svgaSlotTextures=t,A.svgaClipReadyFrame=0;const a=(E=(Q=A.options.svgaFrameEvaluation)!=null?Q:this.options.svgaFrameEvaluation)!=null?E:"auto";this.primeSVGAFirstFrame(A);const o=a==="cpu"?Promise.resolve():this.ensureSVGAFrameTable(g,!0);if(this.assignSVGATimelineStateToSlot(A,g),this.reportSVGARenderPath(A),o.catch(()=>{}),this.decodeSVGAAudioInBackground(A,I),this.options.svgaPrewarmClipMeshes!==!1){const s=this.ensureSVGAFullClipPrewarm(g,!0);s.catch(n=>{this.isLoadCanceled(n)||console.warn("[GiftStage:SVGA] background clip mesh prewarm failed",n)}),this.queueSVGAPersistentCacheWrite(g,s)}else this.queueSVGAPersistentCacheWrite(g,Promise.resolve(0))}primeSVGAFirstFrame(A){var g;if(A.state==="loading"&&(A.state="playing",this.manager.invalidate({resetClock:!0}),!A.paused&&!A.playbackScopeControlled)){this.manager.audioManager.tickFrame(A,A.currentFrame);const I=this.manager.getHandle(A.id);I&&((g=A.onFrame)==null||g.call(A,A.currentFrame,I)),A.svgaInitialFrameEmitted=!0}}async decodeSVGAAudioInBackground(A,g){var I,B,Q,E;if(g.size===0)return;const e=OA({maxBudgetMs:this.options.svgaLoadFrameBudgetMs});try{let i=0;for(const[t,a]of g){if(await this.manager.audioManager.decodeAudio(t,a),this.assertSlotLoadActive(A),A.playbackScopeControlled){const o=(B=(I=A.videoEntity)==null?void 0:I.params.fps)!=null?B:0,s=(E=(Q=A.videoEntity)==null?void 0:Q.params.frames)!=null?E:0,n=A.loopCount*s+A.currentFrame+A.accumulatedTime*o;this.manager.audioManager.syncPlaybackScopeFrame(A,n)}else A.paused||this.manager.audioManager.tickFrameForKey(A,A.currentFrame,t);i++,i<g.size&&e.shouldYield()&&(await e.yield(),this.assertSlotLoadActive(A))}}catch(i){this.isLoadCanceled(i)||console.warn("[GiftStage:SVGA] background audio decode failed",i)}}ensureSVGAFullClipPrewarm(A,g=!1){this.ensureSVGATimelineBookkeeping();const I=this.svgaFullClipPrewarmPromises.get(A);if(I)return I;const Q=(g&&typeof requestAnimationFrame=="function"?new Promise(E=>requestAnimationFrame(()=>setTimeout(E,0))):Promise.resolve()).then(()=>(this.assertSVGAFrameTableActive(A),this.manager.prewarmSVGAClipMeshes(A,{frameBudgetMs:this.svgaClipFrameBudgetMs(),workerTimeSliceMs:this.options.svgaWorkerFrameBudgetMs,useWorker:this.options.svgaClipPrewarmInWorker!==!1,profile:this.getSVGAPreparationProfile(A)}))).then(E=>{var e;return(e=this.manager)==null||e.invalidate(),E});return this.svgaFullClipPrewarmPromises.set(A,Q),Q}async ensureSVGAHybridSchedulePrepared(A){var g;if((g=A.svgaHybridCommandTable)!=null||(A.svgaHybridCommandTable=await ze(A,{frameBudgetMs:this.options.svgaLoadFrameBudgetMs,checkActive:()=>this.assertSVGAFrameTableActive(A)})),A.spriteTable.clipPathIndex.some(Q=>Q>=0)){const Q=this.ensureSVGAFullClipPrewarm(A);await Q,this.queueSVGAPersistentCacheWrite(A,Q)}const I=this.getSVGAPreparationProfile(A),B=()=>{var Q,E;(Q=this.manager)==null||Q.prewarmSVGAShapeMeshes(A),(E=this.manager)==null||E.retainSVGAHybridMeshes(A)};try{this.assertSVGAFrameTableActive(A),I?I.measure("gpu-submit",B):B()}catch(Q){throw new $Q(Q instanceof Error?Q.message:"SVGA Hybrid mesh validation failed")}}queueSVGAPersistentCacheWrite(A,g){var I,B;const Q=(I=this.svgaPersistentCacheWriters)==null?void 0:I.get(A);if(!Q||(B=this.svgaPersistentCacheWritePromises)!=null&&B.has(A))return;const E=g.then(()=>Q(this.manager.snapshotSVGAClipMeshes(A))).catch(e=>{console.warn("[GiftStage:SVGA] persistent cache write failed",e)});this.svgaPersistentCacheWritePromises.set(A,E)}svgaAtlasMaxSize(){var A,g,I;const B=(A=this.options.svgaAtlasMaxSize)!=null?A:_A.SVGA_ATLAS_MAX_SIZE,Q=(I=(g=this.backend)==null?void 0:g.maxTextureSize)!=null?I:B;return Math.max(64,Math.min(Q,B))}async buildSVGAAtlasIfNeeded(A,g,I=!0,B){if(A.size===0)return null;if(this.destroyed||!this.backend)throw new Error(lA);return Ae(A,this.backend,this.svgaAtlasMaxSize(),_A.SVGA_ATLAS_PADDING,{captureEncodedPng:g,maxPages:this.svgaAtlasMaxPages(),mainThreadFrameBudgetMs:this.svgaAtlasFrameBudgetMs(),workerTimeSliceMs:this.options.svgaWorkerFrameBudgetMs,useWorker:I,signal:B})}svgaAtlasMaxPages(){var A;return Math.max(1,Math.floor((A=this.options.svgaAtlasMaxPages)!=null?A:4))}shouldTryWebCodecs(A){return(A==null?void 0:A.mute)!==!1&&this.options.preferWebCodecs===!0&&typeof VideoDecoder!="undefined"}logPlaybackBackend(A,g,I){const B=g==="webcodecs"?"WebCodecs (mp4box decode)":"HTMLVideoElement",Q=I?` — ${I}`:"";console.info(`[GiftStage] ${A.type} [${A.id}]: ${B}${Q}`)}async tryWebCodecsPlayback(A,g){if(!this.shouldTryWebCodecs())return null;try{const I=typeof A=="string"?await EI(A,g):A;if(g!=null&&g.aborted)throw new Error(lA);return await QI.create(I,g,{useWorker:this.options.webCodecsDecodeInWorker!==!1,maxDecodedFrames:this.options.webCodecsMaxDecodedFrames,decodeAheadFrames:this.options.webCodecsDecodeAheadFrames})}catch(I){if(this.isLoadCanceled(I)||g!=null&&g.aborted)throw new Error(lA);const B=I instanceof Error?I.message:String(I);return console.warn(`[GiftStage] WebCodecs path failed, falling back to <video>: ${B}`),null}}async acquireWebCodecsPlayback(A,g){if(!this.shouldTryWebCodecs(A))return null;if(this.options.shareIdenticalVideoPlayback!==!1&&A.loop===0&&A.startPaused!==!0&&A.playbackScopeControlled!==!0&&typeof A.source=="string"){const B=this.normalizeSharedVideoSourceKey(A.source);if(B)return this.acquireSharedWebCodecsPlayback(B,g)}const I=await this.tryWebCodecsPlayback(A.source,g);return I?{playback:I,sharedState:null,release:Mg(()=>I.destroy())}:null}async acquireSharedWebCodecsPlayback(A,g){var I;const B=performance.now(),Q=Math.max(0,(I=this.options.sharedVideoPlaybackWindowMs)!=null?I:_A.DEFAULT_SHARED_VIDEO_PLAYBACK_WINDOW_MS),E=this.sharedWebCodecsPlaybacks.get(A);if(E){for(const t of E)if(!(t.refs<=0||B-t.startedAtMs>Q))return t.refs++,{playback:t.playback,sharedState:t,release:Mg(()=>this.releaseSharedWebCodecsPlayback(t))}}let e=this.pendingSharedWebCodecsPlaybacks.get(A);e||(e=this.createPendingSharedWebCodecsPlayback(A),this.pendingSharedWebCodecsPlaybacks.set(A,e));const i=await this.waitForPendingSharedWebCodecsPlayback(e,g);return i?(i.refs++,{playback:i.playback,sharedState:i,release:Mg(()=>this.releaseSharedWebCodecsPlayback(i))}):null}createPendingSharedWebCodecsPlayback(A){const g=new AbortController,I={cacheKey:A,controller:g,consumers:0,settled:!1,promise:null};return I.promise=this.tryWebCodecsPlayback(A,g.signal).then(B=>{if(I.settled=!0,this.pendingSharedWebCodecsPlaybacks.get(A)===I&&this.pendingSharedWebCodecsPlaybacks.delete(A),!B)return null;if(I.consumers===0||this.destroyed)return B.destroy(),null;const Q={id:this.nextSharedWebCodecsPlaybackId++,cacheKey:A,refs:0,playback:B,startedAtMs:performance.now()};let E=this.sharedWebCodecsPlaybacks.get(A);return E||(E=new Set,this.sharedWebCodecsPlaybacks.set(A,E)),E.add(Q),Q},B=>{throw I.settled=!0,this.pendingSharedWebCodecsPlaybacks.get(A)===I&&this.pendingSharedWebCodecsPlaybacks.delete(A),B}),I}waitForPendingSharedWebCodecsPlayback(A,g){return A.consumers++,new Promise((I,B)=>{let Q=!1;const E=i=>{Q||(Q=!0,g==null||g.removeEventListener("abort",e),A.consumers=Math.max(0,A.consumers-1),A.consumers===0&&!A.settled&&A.controller.abort(),i())},e=()=>{E(()=>B(new Error(lA)))};if(g!=null&&g.aborted){e();return}g==null||g.addEventListener("abort",e,{once:!0}),A.promise.then(i=>E(()=>I(i)),i=>E(()=>B(i)))})}releaseSharedWebCodecsPlayback(A){if(A.refs=Math.max(0,A.refs-1),A.refs>0)return;A.playback.destroy();const g=this.sharedWebCodecsPlaybacks.get(A.cacheKey);g==null||g.delete(A),(g==null?void 0:g.size)===0&&this.sharedWebCodecsPlaybacks.delete(A.cacheKey)}attachWebCodecsPlayback(A,g){var I,B,Q;A.webcodecsPlayback=g.playback,A.webcodecsSharedState=g.sharedState,A.releaseWebCodecsPlayback=g.release;const E=Math.max(g.playback.duration,1e-9);return A.wcPlaybackTime=g.sharedState?Math.max(0,(performance.now()-g.sharedState.startedAtMs)/1e3)%E:0,A.wcSharedTimeOffset=0,(B=(I=g.playback).ensureDecodedThrough)==null||B.call(I,A.wcPlaybackTime),(Q=g.playback.getFrameForTime(A.wcPlaybackTime))!=null?Q:g.playback.getFrameForTime(0)}releaseAttachedWebCodecsPlayback(A){var g;A.releaseWebCodecsPlayback?A.releaseWebCodecsPlayback():(g=A.webcodecsPlayback)==null||g.destroy(),A.releaseWebCodecsPlayback=null,A.webcodecsSharedState=null,A.webcodecsPlayback=null}acquireSharedWebCodecsSurface(A,g,I,B,Q,E,e){const i=A.webcodecsSharedState;if(!i)return null;const t=e?this.options.webCodecsVideoAtlas:void 0;if(t&&t.width>0&&t.height>0){const r=`${i.id}:atlas:${t.width}x${t.height}:${Q}x${E}`,c=this.retainSharedWebCodecsSurface(r);if(c)return c;const h=this.nextSharedWebCodecsSurfaceId++,l=`wc-shared-surface:${h}`,w=this.manager.tryAllocateWebCodecsAtlas(l,Q,E,t);if(w){try{this.backend.updateTextureRegion(w.handle,g,w.rect.x,w.rect.y,w.rect.w,w.rect.h)}catch(D){throw this.manager.releaseWebCodecsAtlasAllocation(l),D}return this.createSharedWebCodecsSurface(r,h,w.handle,g,w.rect,l)}}const a=`${i.id}:full:${I}x${B}`,o=this.retainSharedWebCodecsSurface(a);if(o)return o;const s=this.nextSharedWebCodecsSurfaceId++,n=this.backend.createTexture(g,{width:I,height:B,filter:"linear"});return this.createSharedWebCodecsSurface(a,s,n,g,void 0,null)}retainSharedWebCodecsSurface(A){const g=this.sharedWebCodecsSurfaces.get(A);return g?(g.refs++,{surface:g.surface,release:Mg(()=>this.releaseSharedWebCodecsSurface(g))}):null}createSharedWebCodecsSurface(A,g,I,B,Q,E){const e={key:A,refs:1,atlasAllocationId:E,surface:{id:g,texture:I,atlasRect:Q,lastUploadedFrame:B}};return this.sharedWebCodecsSurfaces.set(A,e),{surface:e.surface,release:Mg(()=>this.releaseSharedWebCodecsSurface(e))}}releaseSharedWebCodecsSurface(A){var g,I;A.refs=Math.max(0,A.refs-1),!(A.refs>0)&&(this.sharedWebCodecsSurfaces.delete(A.key),A.atlasAllocationId?(g=this.manager)==null||g.releaseWebCodecsAtlasAllocation(A.atlasAllocationId):(I=this.backend)==null||I.deleteTexture(A.surface.texture),A.surface.lastUploadedFrame=null)}attachSharedWebCodecsSurface(A,g){A.webcodecsSurface=g.surface,A.releaseWebCodecsSurface=g.release,A.videoTextureHandle=g.surface.texture,A.wcAtlasRect=g.surface.atlasRect}async loadVAP(A,g){var I,B,Q,E;if(!g.config)throw new Error("VAP requires config");const e=g.config,i=(I=A.loadAbortController)==null?void 0:I.signal,t=(async()=>{const D=await FC(e);this.assertSlotLoadActive(A);const y=await va(D,g.vapSlots);return this.assertSlotLoadActive(A),{config:D,vapResources:y}})();console.info("[GiftStage:WC] loadVAP: try WebCodecs / video…");const a=this.acquireWebCodecsPlayback(g,i),[o,s]=await Promise.allSettled([t,a]);if(!this.isSlotLoadActive(A)||o.status==="rejected"||s.status==="rejected")throw s.status==="fulfilled"&&((B=s.value)==null||B.release()),o.status==="rejected"?o.reason:s.status==="rejected"?s.reason:new Error(lA);const{config:n,vapResources:r}=o.value,c=s.value;if(A.vapConfig=n,r.size>0){const D=CI(n.info),y=Ta(n);let R=null;if(this.backend.type==="webgpu"||this.backend.type==="webgl2")try{R=this.createVAPMixResourceTextures(r)}catch(F){console.warn("[GiftStage] VAP main-context mixed textures failed; falling back to compositor",F)}if(R)A.vapMixState={mode:"direct",width:D.w,height:D.h,resourceTextures:R,frameMap:y,lastFrameIndex:-1,lastSourceRef:null};else{let F=null,d=null;try{F=new en(n,y,r,D.w,D.h,g.videoRGBAlphaMode!=="straight")}catch(u){console.warn("[GiftStage] VAP mixed rendering fell back to CPU compositor",u),d=Wa(D.w,D.h)}const f=this.backend.createEmptyTexture(D.w,D.h,{filter:"linear"});A.vapMixState={mode:"composited",texture:f,width:D.w,height:D.h,composer:F,frameMap:y,resources:F?void 0:r,lastFrameIndex:-1,lastSourceRef:null,...d!=null?d:{}},A.videoTextureHandle=f}}if(c){const D=this.attachWebCodecsPlayback(A,c);if(!D)throw this.releaseAttachedWebCodecsPlayback(A),new Error("WebCodecs: missing first frame");if(!A.vapMixState||A.vapMixState.mode==="direct"){const R=D.displayWidth||D.codedWidth,F=D.displayHeight||D.codedHeight,d=!A.vapMixState,{w:f,h:u}=ZQ(A,R,F,"vap",n),G=this.acquireSharedWebCodecsSurface(A,D,R,F,f,u,d);if(G)this.attachSharedWebCodecsSurface(A,G);else{const S=d?this.manager.tryAllocateWebCodecsAtlas(A.id,f,u,this.options.webCodecsVideoAtlas):null;S?(A.videoTextureHandle=S.handle,A.wcAtlasRect=S.rect,this.backend.updateTextureRegion(S.handle,D,S.rect.x,S.rect.y,f,u)):A.videoTextureHandle=this.backend.createTexture(D,{width:R,height:F,filter:"linear"})}}A.videoElement=null;const y=A.videoTextureHandle;console.info("[GiftStage:WC] VAP texture",{giftId:A.id,atlas:!!A.wcAtlasRect&&!A.vapMixState,mixed:!!A.vapMixState,tex:`${y.width}x${y.height}`,frame0:`${D.displayWidth}x${D.displayHeight}`,atlasCell:A.wcAtlasRect?`${A.wcAtlasRect.w}x${A.wcAtlasRect.h}`:void 0}),this.logPlaybackBackend(A,"webcodecs");return}const l=await this.tryAcquireSharedHtmlVideo(A,g);if(!this.isSlotLoadActive(A))throw l==null||l.release(),new Error(lA);if(l)A.videoElement=l.video,A.releaseSharedVideoPlayback=l.release;else{const D=await this.acquireVideoPlaybackSource(g.source);if(!this.isSlotLoadActive(A))throw(Q=D.release)==null||Q.call(D),new Error(lA);A.releaseMediaSource=(E=D.release)!=null?E:null;const y=this.createVideo(D.src,g.loop===0,g.mute!==!1);A.videoElement=y}const w=A.videoElement;if(l){await l.ready,this.assertSlotLoadActive(A);const D=this.acquireSharedVideoTexture(l.cacheKey,w);A.videoTextureHandle=D.texture,A.releaseSharedVideoTexture=D.release}else await this.waitVideoReady(w),this.assertSlotLoadActive(A),(!A.vapMixState||A.vapMixState.mode==="direct")&&(A.videoTextureHandle=this.backend.createTexture(w,{width:w.videoWidth,height:w.videoHeight,filter:"linear"}));!A.releaseSharedVideoPlayback&&!A.playbackScopeControlled&&this.bindVideoLoopOnEnded(A,w),this.logPlaybackBackend(A,"video",g.mute===!1?"WebCodecs disabled for audible playback":this.shouldTryWebCodecs(g)?"fallback after WebCodecs unavailable or failed":"preferWebCodecs off or no VideoDecoder")}createVAPMixResourceTextures(A){const g=new Map;try{for(const[I,B]of A)g.set(I,this.backend.createTexture(B.source,{width:B.width,height:B.height,filter:"linear",premultiplyAlpha:!1}));return g}catch(I){for(const B of g.values())this.backend.deleteTexture(B);throw I}}async loadAlphaVideo(A,g){var I,B,Q;const E=(I=A.loadAbortController)==null?void 0:I.signal;console.info("[GiftStage:WC] loadAlphaVideo: try WebCodecs / video…");const e=await this.acquireWebCodecsPlayback(g,E);if(!this.isSlotLoadActive(A))throw e==null||e.release(),new Error(lA);if(e){const a=this.attachWebCodecsPlayback(A,e);if(!a)throw this.releaseAttachedWebCodecsPlayback(A),new Error("WebCodecs: missing first frame");const o=a.displayWidth||a.codedWidth,s=a.displayHeight||a.codedHeight,{w:n,h:r}=ZQ(A,o,s,"alphaVideo",void 0),c=this.acquireSharedWebCodecsSurface(A,a,o,s,n,r,!0);if(c)this.attachSharedWebCodecsSurface(A,c);else{const l=this.manager.tryAllocateWebCodecsAtlas(A.id,n,r,this.options.webCodecsVideoAtlas);l?(A.videoTextureHandle=l.handle,A.wcAtlasRect=l.rect,this.backend.updateTextureRegion(l.handle,a,l.rect.x,l.rect.y,n,r)):A.videoTextureHandle=this.backend.createTexture(a,{width:o,height:s,filter:"linear"})}A.videoElement=null;const h=A.videoTextureHandle;console.info("[GiftStage:WC] alphaVideo texture",{giftId:A.id,atlas:!!A.wcAtlasRect,tex:`${h.width}x${h.height}`,frame0:`${a.displayWidth}x${a.displayHeight}`,atlasCell:A.wcAtlasRect?`${A.wcAtlasRect.w}x${A.wcAtlasRect.h}`:void 0}),this.logPlaybackBackend(A,"webcodecs");return}const i=await this.tryAcquireSharedHtmlVideo(A,g);if(!this.isSlotLoadActive(A))throw i==null||i.release(),new Error(lA);if(i)A.videoElement=i.video,A.releaseSharedVideoPlayback=i.release;else{const a=await this.acquireVideoPlaybackSource(g.source);if(!this.isSlotLoadActive(A))throw(B=a.release)==null||B.call(a),new Error(lA);A.releaseMediaSource=(Q=a.release)!=null?Q:null;const o=this.createVideo(a.src,g.loop===0,g.mute!==!1);A.videoElement=o}const t=A.videoElement;if(i){await i.ready,this.assertSlotLoadActive(A);const a=this.acquireSharedVideoTexture(i.cacheKey,t);A.videoTextureHandle=a.texture,A.releaseSharedVideoTexture=a.release}else await this.waitVideoReady(t),this.assertSlotLoadActive(A),A.videoTextureHandle=this.backend.createTexture(t,{width:t.videoWidth,height:t.videoHeight,filter:"linear"});!A.releaseSharedVideoPlayback&&!A.playbackScopeControlled&&this.bindVideoLoopOnEnded(A,t),this.logPlaybackBackend(A,"video",g.mute===!1?"WebCodecs disabled for audible playback":this.shouldTryWebCodecs(g)?"fallback after WebCodecs unavailable or failed":"preferWebCodecs off or no VideoDecoder")}bindVideoLoopOnEnded(A,g){g.addEventListener("ended",()=>{var I;if(A.state!=="playing")return;const B=(I=A.options.loop)!=null?I:1;if(B===0){g.currentTime=0,g.play();return}if(A.loopCount++,A.loopCount>=B){this.completeHtmlVideoPlayback(A);return}g.currentTime=0,g.play().catch(()=>{})}),this.armHtmlVideoPlaybackWatchdog(A,g)}clearHtmlVideoPlaybackWatchdog(A){A.videoPlaybackWatchdogTimer!=null&&(clearTimeout(A.videoPlaybackWatchdogTimer),A.videoPlaybackWatchdogTimer=null)}clearAllHtmlVideoPlaybackWatchdogs(){if(this.manager)for(const A of this.manager.getSlotIds()){const g=this.manager.getSlot(A);g&&this.clearHtmlVideoPlaybackWatchdog(g)}}rearmHtmlVideoPlaybackWatchdogs(){if(!(!this.manager||this.playbackPaused||document.hidden))for(const A of this.manager.getSlotIds()){const g=this.manager.getSlot(A);g!=null&&g.videoElement&&!g.releaseSharedVideoPlayback&&!g.playbackScopeControlled&&!g.paused&&g.state==="playing"&&this.armHtmlVideoPlaybackWatchdog(g,g.videoElement)}}completeHtmlVideoPlayback(A){var g,I;if(A.state!=="playing"||A.videoPlaybackCompletionStarted)return;A.videoPlaybackCompletionStarted=!0,this.clearHtmlVideoPlaybackWatchdog(A);let B;B={id:A.id,type:A.type,pause:()=>{},resume:()=>{},destroy:()=>this.removeGift(A.id),getRenderInfo:()=>this.getGiftRenderInfo(A),animate:Q=>this.createGiftAnimationChain(A,B,Q)};try{(g=A.onComplete)==null||g.call(A,B)}finally{A.state=A.options.clearsAfterStop===!1?"stopped":"finished",(I=this.manager)==null||I.invalidate()}}armHtmlVideoPlaybackWatchdog(A,g){var I;if(this.clearHtmlVideoPlaybackWatchdog(A),A.playbackScopeControlled||A.paused||this.playbackPaused||document.hidden)return;const B=(I=A.options.loop)!=null?I:1,Q=g.duration;if(B<=0||!Number.isFinite(Q)||Q<=0)return;const E=Math.max(1,Math.ceil(B)),e=Q*E*1e3;if(!Number.isFinite(e))return;const i=Math.min(_A.HTML_VIDEO_WATCHDOG_MAX_GRACE_MS,Math.max(_A.HTML_VIDEO_WATCHDOG_MIN_GRACE_MS,e*_A.HTML_VIDEO_WATCHDOG_GRACE_RATIO)),t=performance.now()+e+i,a=()=>{if(A.state==="finished"||A.state==="stopped"){A.videoPlaybackWatchdogTimer=null;return}const o=t-performance.now();if(o>0){A.videoPlaybackWatchdogTimer=setTimeout(a,Math.min(o,_A.MAX_TIMER_DELAY_MS));return}A.videoPlaybackWatchdogTimer=null,A.state==="playing"&&(console.warn("[GiftStage] HTMLVideo playback timed out; completing gift",{giftId:A.id,type:A.type,duration:Q,loop:E}),this.completeHtmlVideoPlayback(A))};A.videoPlaybackWatchdogTimer=setTimeout(a,Math.min(e+i,_A.MAX_TIMER_DELAY_MS))}createVideo(A,g,I=!0){const B=document.createElement("video");return B.crossOrigin="anonymous",B.autoplay=!0,B.preload="auto",B.muted=I,B.defaultMuted=I,B.playsInline=!0,B.setAttribute("playsinline",""),B.setAttribute("webkit-playsinline","true"),B.loop=g,B.style.cssText="display:none;",B.src=A,document.body.appendChild(B),B.load(),B}waitVideoMetadata(A){return new Promise((g,I)=>{let B=!1,Q=null;const E=()=>{A.removeEventListener("loadedmetadata",i),A.removeEventListener("error",t),Q!=null&&clearTimeout(Q),Q=null},e=a=>{B||(B=!0,E(),a())},i=()=>{e(g)},t=()=>{e(()=>I(new Error("Video metadata load failed")))};A.addEventListener("loadedmetadata",i),A.addEventListener("error",t),Q=setTimeout(()=>e(()=>I(new Error("Video metadata load timed out"))),_A.HTML_VIDEO_READY_TIMEOUT_MS),A.readyState>=HTMLMediaElement.HAVE_METADATA&&e(g)})}async probeVideoNaturalSize(A,g="video"){var I;const B=await this.acquireVideoPlaybackSource(A),Q=document.createElement("video");Q.crossOrigin="anonymous",Q.preload="metadata",Q.muted=!0,Q.playsInline=!0,Q.setAttribute("playsinline",""),Q.setAttribute("webkit-playsinline","true"),Q.style.cssText="display:none;",Q.src=B.src,document.body.appendChild(Q),Q.load();try{return await this.waitVideoMetadata(Q),g==="alphaVideo"?ln(Q.videoWidth,Q.videoHeight):{width:Q.videoWidth,height:Q.videoHeight}}finally{try{Q.pause(),Q.removeAttribute("src"),Q.load(),Q.remove()}catch(E){}(I=B.release)==null||I.call(B)}}async acquireVideoPlaybackSource(A){if(typeof A!="string"){const B=URL.createObjectURL(new Blob([A]));return{src:B,release:()=>URL.revokeObjectURL(B)}}const g=this.normalizeSharedVideoSourceKey(A);if(!g)return{src:A};let I=this.sharedVideoSources.get(g);I||(I={refs:0,objectUrl:null,promise:this.fetchSharedVideoSource(g)},this.sharedVideoSources.set(g,I)),I.refs++;try{return{src:await I.promise,release:()=>this.releaseSharedVideoSource(g)}}catch(B){return this.releaseSharedVideoSource(g),console.warn("[GiftStage] shared video prefetch failed, using original url",B),{src:A}}}normalizeSharedVideoSourceKey(A){try{const g=new URL(A,window.location.href);return g.protocol==="blob:"||g.protocol==="data:"?null:g.href}catch(g){return null}}async fetchSharedVideoSource(A){const g=new Blob([await EI(A)]),I=this.sharedVideoSources.get(A),B=URL.createObjectURL(g);return I&&(I.objectUrl=B,I.refs===0&&(URL.revokeObjectURL(B),this.sharedVideoSources.delete(A))),B}releaseSharedVideoSource(A){const g=this.sharedVideoSources.get(A);g&&(g.refs=Math.max(0,g.refs-1),g.refs===0&&g.objectUrl&&(URL.revokeObjectURL(g.objectUrl),this.sharedVideoSources.delete(A)))}async tryAcquireSharedHtmlVideo(A,g){var I,B;if(this.options.shareIdenticalVideoPlayback===!1||g.startPaused===!0||g.playbackScopeControlled===!0||g.loop!==0||typeof g.source!="string"||A.type==="vap"&&A.vapMixState)return null;const Q=this.normalizeSharedVideoSourceKey(g.source);if(!Q)return null;const E=`${Q}::muted=${g.mute!==!1?1:0}`,e=(I=this.options.sharedVideoPlaybackWindowMs)!=null?I:_A.DEFAULT_SHARED_VIDEO_PLAYBACK_WINDOW_MS,i=Math.max(0,e)/1e3,t=this.sharedHtmlVideos.get(E);if(t)return t.video.currentTime>i?null:(t.refs++,{cacheKey:E,video:t.video,ready:t.ready,release:()=>this.releaseSharedHtmlVideo(E)});let a=this.pendingSharedHtmlVideos.get(E);a||(a=(async()=>{var n;const r=await this.acquireVideoPlaybackSource(g.source),c=this.createVideo(r.src,!0,g.mute!==!1),h=this.waitVideoReady(c);return{video:c,ready:h,releaseSource:(n=r.release)!=null?n:null}})(),this.pendingSharedHtmlVideos.set(E,a));let o;try{o=await a}catch(n){throw this.pendingSharedHtmlVideos.delete(E),n}let s=this.sharedHtmlVideos.get(E);return s?s.refs++:(s={refs:1,video:o.video,ready:o.ready,releaseSource:(B=o.releaseSource)!=null?B:null},this.sharedHtmlVideos.set(E,s)),this.pendingSharedHtmlVideos.delete(E),{cacheKey:E,video:s.video,ready:s.ready,release:()=>this.releaseSharedHtmlVideo(E)}}acquireSharedVideoTexture(A,g){const I=this.sharedVideoTextures.get(A);if(I)return I.refs++,{texture:I.texture,release:()=>this.releaseSharedVideoTexture(A)};const B=this.backend.createTexture(g,{width:g.videoWidth,height:g.videoHeight,filter:"linear"});return this.sharedVideoTextures.set(A,{refs:1,texture:B}),{texture:B,release:()=>this.releaseSharedVideoTexture(A)}}async acquireImageTexture(A,g){if(typeof A!="string"){const E=await aC(A,g);try{if(L(g,"Image loading aborted"),this.destroyed||!this.backend)throw new Error("GiftStage is destroyed");const e=this.backend.createTexture(E.source,{width:E.width,height:E.height,filter:"linear",premultiplyAlpha:!0,sourcePremultiplied:E.sourcePremultiplied});return{texture:e,width:E.width,height:E.height,release:Mg(()=>{var i;return(i=this.backend)==null?void 0:i.deleteTexture(e)})}}finally{E.dispose()}}const I=this.sharedImageTextures.get(A);if(I)return I.refs++,{texture:I.texture,width:I.width,height:I.height,release:Mg(()=>this.releaseSharedImageTexture(A))};let B=this.pendingSharedImageTextures.get(A);if(!B){B=(async()=>{const e=await aC(A);try{if(this.destroyed||!this.backend)throw new Error("GiftStage is destroyed");const t={refs:0,texture:this.backend.createTexture(e.source,{width:e.width,height:e.height,filter:"linear",premultiplyAlpha:!0,sourcePremultiplied:e.sourcePremultiplied}),width:e.width,height:e.height};return this.sharedImageTextures.set(A,t),t}finally{e.dispose()}})(),this.pendingSharedImageTextures.set(A,B);const E=()=>{this.pendingSharedImageTextures.get(A)===B&&this.pendingSharedImageTextures.delete(A),queueMicrotask(()=>{var e;const i=this.sharedImageTextures.get(A);(i==null?void 0:i.refs)===0&&((e=this.backend)==null||e.deleteTexture(i.texture),this.sharedImageTextures.delete(A))})};B.then(E,E)}const Q=await B;return L(g,"Image loading aborted"),Q.refs++,{texture:Q.texture,width:Q.width,height:Q.height,release:Mg(()=>this.releaseSharedImageTexture(A))}}releaseSharedImageTexture(A){var g;const I=this.sharedImageTextures.get(A);I&&(I.refs=Math.max(0,I.refs-1),!(I.refs>0)&&((g=this.backend)==null||g.deleteTexture(I.texture),this.sharedImageTextures.delete(A)))}releaseSharedVideoTexture(A){var g;const I=this.sharedVideoTextures.get(A);I&&(I.refs=Math.max(0,I.refs-1),!(I.refs>0)&&((g=this.backend)==null||g.deleteTexture(I.texture),this.sharedVideoTextures.delete(A)))}releaseSharedHtmlVideo(A){var g;const I=this.sharedHtmlVideos.get(A);if(I&&(I.refs=Math.max(0,I.refs-1),!(I.refs>0))){try{I.video.pause(),I.video.removeAttribute("src"),I.video.load(),I.video.remove()}catch(B){}(g=I.releaseSource)==null||g.call(I),this.sharedHtmlVideos.delete(A)}}waitForFirstVideoFrame(A){return new Promise(g=>{typeof A.requestVideoFrameCallback=="function"?A.requestVideoFrameCallback(()=>g()):requestAnimationFrame(()=>g())})}waitVideoReady(A){return new Promise((g,I)=>{let B=!1,Q=!1,E=null;const e=()=>{A.removeEventListener("canplay",a),A.removeEventListener("error",o),E!=null&&clearTimeout(E),E=null},i=s=>{B||(B=!0,e(),s())},t=async()=>{if(!(Q||B)){Q=!0;try{try{await A.play()}catch(s){if(A.muted)throw s;console.warn("[GiftStage] audible HTMLVideo autoplay was blocked; retrying muted",s),A.muted=!0,A.defaultMuted=!0,await A.play()}await this.waitForFirstVideoFrame(A),i(g)}catch(s){i(()=>I(s))}}},a=()=>{t()},o=()=>{i(()=>I(new Error("Video load failed")))};A.addEventListener("canplay",a),A.addEventListener("error",o),E=setTimeout(()=>i(()=>I(new Error("Video ready timed out"))),_A.HTML_VIDEO_READY_TIMEOUT_MS),A.readyState>=HTMLMediaElement.HAVE_FUTURE_DATA&&t()})}get capabilities(){var A,g,I,B,Q,E,e;const i=(g=(A=this.backend)==null?void 0:A.type)!=null?g:"webgl2",t=this.backend,a=i!=="webgl1"&&!!(t!=null&&t.createSVGAFrameTable)&&((B=(I=t.canCreateSVGAFrameTable)==null?void 0:I.call(t))!=null?B:!0),o=a?i==="webgpu"?"storage-buffer":"float-texture":"unavailable",s=this.svgaGpuFrameTableBudgetBytes();return{backend:i,sharedTimeline:!0,scopedPlayback:!0,assetLeases:!0,motionTrack:{mode:i==="webgpu"?"gpu-table":"cpu-reference",gpuMediaTypes:i==="webgpu"?["svga"]:[],cpuReferenceFallback:!0,nonUniformScale:!0,sampleFloats:Dg},particles:{backend:i==="webgpu"||i==="webgl2"?i:"unavailable",canvas2D:!1,formats:i==="webgpu"||i==="webgl2"?["ballistic-v1","sprite-v2"]:[],...i==="webgpu"||i==="webgl2"?{spriteAtlas:{source:"rgba8-premultiplied",maxSize:(E=(Q=this.backend)==null?void 0:Q.maxTextureSize)!=null?E:4096},compositeLayers:["behind-media","above-media"],batchEnvelope:!0,atomicBatchGroup:!0,maxInstancesPerBatch:8192}:{}},svgaFrameTimeline:{transport:o,direct:a,hybrid:a,maxTableBytes:s,supportedPaths:a?["gpu-direct","gpu-hybrid","cpu-reference"]:["cpu-reference"],defaultEvaluation:(e=this.options.svgaFrameEvaluation)!=null?e:"auto",gpuDirect:a,gpuHybrid:a,cpuReference:!0,tableBudgetBytes:s}}}async preload(A,g,I){var B,Q;if(await this.ready,L(I,"GiftStage preload canceled"),this.destroyed)throw new Error("GiftStage is destroyed");let E=!1;if(A==="svga"){if(typeof g!="string")throw new Error("SVGA preload lease currently requires a URL source");const i=await this.acquireSharedSVGAEntity(g,I),{entity:t}=i;await this.ensureSVGAFrameTable(t),L(I,"GiftStage preload canceled");const a=t.spriteTable;return{metadata:{type:A,width:t.params.viewBoxWidth,height:t.params.viewBoxHeight,fps:t.params.fps,frameCount:t.params.frames,spriteCount:a.spriteCount,atlasPageCount:(Q=(B=t.atlasTextureHandles)==null?void 0:B.length)!=null?Q:t.atlasTextureHandle?1:0,hasShapes:a.hasAnyShapes,hasClipPaths:a.clipPathIndex.some(o=>o>=0),allFramesInsideViewBox:a.allFramesInsideViewBox===!0},get released(){return E},release:()=>{E||(E=!0,i.release())}}}const e=await this.acquireImageTexture(g,I);return{metadata:{type:A,width:e.width,height:e.height},get released(){return E},release:()=>{E||(E=!0,e.release())}}}async createParticleAtlas(A){if(await this.ready,this.destroyed)throw new Error("GiftStage is destroyed");if(!this.manager)throw new Error("GiftStage is not ready");return this.manager.createParticleAtlas(A)}createPlaybackScope(A){if(this.destroyed)throw new Error("GiftStage is destroyed");const g=this,I={get backendType(){return g.backendType},get backend(){return g.backend},getSlot:E=>{var e;return(e=this.manager)==null?void 0:e.getSlot(E)},addGift:E=>this.addGift(E),removeGift:E=>this.removeGift(E),applyMediaTime:(E,e,i,t)=>{var a;(a=this.manager)==null||a.applyPlaybackScopeMediaTime(E,e,i,t)},invalidate:E=>{var e;return(e=this.manager)==null?void 0:e.invalidate({resetClock:E})},registerFrameController:E=>{if(!this.manager)throw new Error("GiftStage is not ready");return this.manager.registerFrameController(E)},createParticleBatch:E=>{if(!this.manager)throw new Error("GiftStage is not ready");return this.manager.createParticleBatch(E)},createParticleBatchGroup:E=>{if(!this.manager)throw new Error("GiftStage is not ready");return this.manager.createParticleBatchGroup(E)}},B=new oe(I,A);this.playbackScopes.add(B);const Q=B.destroy.bind(B);return B.destroy=()=>{Q(),this.playbackScopes.delete(B)},B}async mount(A){if(await this.ready,this.destroyed)throw new Error("GiftStage is destroyed");const g=new Set,I=new Set,B={stage:this,capabilities:this.capabilities,getViewport:()=>this.currentCanvasCssSize(),preload:(i,t,a)=>this.preload(i,t,a),createParticleAtlas:async i=>{const t=await this.createParticleAtlas(i);I.add(t);const a=t.destroy.bind(t);return t.destroy=()=>{try{a()}finally{I.delete(t)}},t},createPlaybackScope:i=>{const t=this.createPlaybackScope(i);g.add(t);const a=t.destroy.bind(t);return t.destroy=()=>{try{a()}finally{g.delete(t)}},t}},Q=await A.setup(B);let E=!1;const e={name:A.name,api:Q,get destroyed(){return E},destroy:()=>{var i;if(!E){E=!0;for(const t of g)t.destroy();g.clear(),(i=Q==null?void 0:Q.destroy)==null||i.call(Q);for(const t of I)t.destroy();I.clear(),this.mountedPlugins.delete(e)}}};return this.mountedPlugins.add(e),e}removeGift(A){var g;this.resolveGiftPlaybackWaiters(A),this.completedPlaybackSlots.delete(A),this.playbackCompleteWaiters.delete(A),(g=this.manager)==null||g.removeSlot(A)}removeAll(){if(this.manager)for(const A of this.manager.getSlotIds())this.manager.removeSlot(A)}pause(){var A;this.playbackPaused=!0,this.clearAllHtmlVideoPlaybackWatchdogs(),(A=this.manager)==null||A.pause()}resume(){var A;this.playbackPaused=!1,(A=this.manager)==null||A.resume(),this.rearmHtmlVideoPlaybackWatchdogs()}get activeCount(){var A,g;return(g=(A=this.manager)==null?void 0:A.activeCount)!=null?g:0}get backendType(){var A,g;return(g=(A=this.backend)==null?void 0:A.type)!=null?g:"webgl2"}getDiagnostics(){var A,g,I,B,Q,E;this.ensureSVGATimelineBookkeeping();const e=(I=(g=(A=this.manager)==null?void 0:A.getRuntimeDiagnosticsSnapshot)==null?void 0:g.call(A))!=null?I:{frameAbortCount:0,replayFailureCount:0,retryFrameCount:0},i=(E=(Q=(B=this.backend)==null?void 0:B.getRuntimeDiagnosticsSnapshot)==null?void 0:Q.call(B))!=null?E:{submittedDrawCalls:0,rejectedDrawCalls:0,webgpuUncapturedErrors:0,backendLosses:0},t=this.lastRuntimeDiagnostic?{...this.lastRuntimeDiagnostic,...this.lastRuntimeDiagnostic.giftIds?{giftIds:[...this.lastRuntimeDiagnostic.giftIds]}:{}}:null;return{backend:this.backendType,frameAbortCount:e.frameAbortCount,replayFailureCount:e.replayFailureCount,retryFrameCount:e.retryFrameCount,runtimeFallbackCount:this.runtimeFallbackCount,submittedDrawCalls:i.submittedDrawCalls,rejectedDrawCalls:i.rejectedDrawCalls,webgpuUncapturedErrorCount:i.webgpuUncapturedErrors,backendLossCount:i.backendLosses,observerErrorCount:this.runtimeObserverErrorCount,lastEvent:t}}destroy(){var A,g,I,B,Q,E,e,i,t;if(this.destroyed)return;this.destroyed=!0;for(const o of(A=this.svgaPreparingEntities)!=null?A:[])(I=(g=this.svgaCommandControllers)==null?void 0:g.get(o))==null||I.abort();for(const o of Array.from(this.mountedPlugins))o.destroy();this.mountedPlugins.clear();for(const o of Array.from(this.playbackScopes))o.destroy();this.playbackScopes.clear();for(const o of this.pendingSharedSVGAEntities.values())o.controller.abort();for(const o of this.pendingSharedWebCodecsPlaybacks.values())o.controller.abort();this.pendingSharedWebCodecsPlaybacks.clear(),(B=this.resizeObserver)==null||B.disconnect(),this.resizeObserver=null,window.removeEventListener("resize",this.onWindowLayout),window.removeEventListener("orientationchange",this.onWindowLayout),document.removeEventListener("visibilitychange",this.onVisibilityChange);for(const o of this.sharedImageTextures.values())(Q=this.backend)==null||Q.deleteTexture(o.texture);this.sharedImageTextures.clear(),this.pendingSharedImageTextures.clear(),(e=(E=this.backend)==null?void 0:E.setRuntimeDiagnosticHandler)==null||e.call(E,null);const a=this.backend;(i=a==null?void 0:a.setDeviceLostHandler)==null||i.call(a,null),(t=this.manager)==null||t.destroy();for(const[o]of this.sharedHtmlVideos)this.releaseSharedHtmlVideo(o);for(const[o]of this.sharedSVGAEntities)this.releaseSharedSVGAEntity(o);for(const[o]of this.sharedVideoTextures)this.releaseSharedVideoTexture(o);this.pendingSharedSVGAEntities.clear(),this.pendingSharedHtmlVideos.clear();for(const o of this.sharedWebCodecsPlaybacks.values())for(const s of o)s.playback.destroy();this.sharedWebCodecsPlaybacks.clear(),this.sharedWebCodecsSurfaces.clear(),this.completedPlaybackSlots.clear(),this.playbackCompleteWaiters.clear();for(const[o,s]of this.sharedVideoSources)s.objectUrl&&URL.revokeObjectURL(s.objectUrl),this.sharedVideoSources.delete(o);this.canvas.remove(),this.backend=null,this.manager=null}markGiftPlaybackComplete(A){this.completedPlaybackSlots.add(A),this.resolveGiftPlaybackWaiters(A)}resolveGiftPlaybackWaiters(A){const g=this.playbackCompleteWaiters.get(A);if(!(!g||g.size===0)){for(const I of g)I();this.playbackCompleteWaiters.delete(A)}}waitForGiftPlaybackComplete(A){var g;return this.completedPlaybackSlots.has(A)||!((g=this.manager)!=null&&g.getSlot(A))?Promise.resolve():new Promise(I=>{let B=this.playbackCompleteWaiters.get(A);B||(B=new Set,this.playbackCompleteWaiters.set(A,B)),B.add(I)})}};q(Gg,"SVGA_ATLAS_MAX_SIZE",2048);q(Gg,"SVGA_ATLAS_PADDING",2);q(Gg,"DEFAULT_SHARED_VIDEO_PLAYBACK_WINDOW_MS",100);q(Gg,"HTML_VIDEO_READY_TIMEOUT_MS",15e3);q(Gg,"HTML_VIDEO_WATCHDOG_MIN_GRACE_MS",2e3);q(Gg,"HTML_VIDEO_WATCHDOG_MAX_GRACE_MS",1e4);q(Gg,"HTML_VIDEO_WATCHDOG_GRACE_RATIO",.2);q(Gg,"MAX_TIMER_DELAY_MS",2147e6);q(Gg,"DEFAULT_RESOURCE_CACHE_MEMORY_BYTES",128*1024*1024);q(Gg,"DEFAULT_RESOURCE_CACHE_PERSISTENT_BYTES",2048*1024*1024);let Kn=Gg;exports.AlphaVideoRenderer=mE;exports.AudioManager=HE;exports.BufferPool=uE;exports.GiftStage=Kn;exports.ImageRenderer=JE;exports.MOTION_TRACK_SAMPLE_FLOATS=Dg;exports.MotionTrackLeaseImpl=SB;exports.ParticleBatchRenderer=qE;exports.PlaybackScopeImpl=oe;exports.PostAnimator=LE;exports.RenderManager=jI;exports.SVGABatchRenderer=SE;exports.SVGA_FRAME_TABLE_BUDGET_BYTES=xB;exports.SVGA_FRAME_TABLE_FLOATS=Wg;exports.SVGA_GPU_FRAME_TABLE_BUDGET_BYTES=KC;exports.SVGA_HYBRID_OP_CLIP_CLEAR=FB;exports.SVGA_HYBRID_OP_CLIP_TEST=cC;exports.SVGA_HYBRID_OP_CLIP_WRITE=jg;exports.SVGA_HYBRID_OP_SHAPE=yB;exports.SVGA_HYBRID_OP_TEXTURE=rC;exports.SVGA_SPRITE_METADATA_FLAG_MISSING_RECT=te;exports.SVGA_SPRITE_METADATA_FLOATS=hC;exports.VAPRenderer=KE;exports.WebCodecsMp4Playback=QI;exports.WebGL1Backend=lC;exports.WebGL2Backend=oE;exports.WebGPUBackend=aE;exports.analyzeSVGAFrameTimelineEligibility=NC;exports.buildAtlas=Ae;exports.buildBatchVerticesJS=dB;exports.buildSVGAHybridCommandTable=je;exports.canSharedArrayBuffer=at;exports.canWebGL1=tt;exports.canWebGL2=it;exports.canWebGPU=et;exports.clamp=uB;exports.countSVGASpriteAtlasPages=Gn;exports.createBackend=rE;exports.decodeSVGAProto=RC;exports.easeInOutCubic=Ss;exports.easeInOutQuad=fs;exports.easeInQuad=us;exports.easeOutBack=Ms;exports.easeOutCubic=ge;exports.easeOutQuad=Rs;exports.estimateSVGAFrameTableBytes=gB;exports.generateId=mC;exports.inflateJS=uC;exports.initWasm=GE;exports.isSVGAFrameTableBudgetAvailable=dn;exports.isSVGAFrameTableWithinBudget=Fn;exports.isWasmReady=DI;exports.lerp=lg;exports.linear=Gs;exports.ortho=Kg;exports.packSVGAFrameDataToVec4=yn;exports.packSVGAFrameTable=ie;exports.packSVGASpriteMetadata=ae;exports.parseSVGA=fB;exports.parseVAPConfig=FC;
4994
+ `}function Qn(C,A,g){return{vertex:Cn(g),fragment:Bn(C,A,g)}}function En(C,A,g,I,B=new Float32Array(g.size*$I)){B.fill(0);const Q=A.get(I);if(!Q||Q.length===0)return B;const[E,e]=C.info.rgbFrame;let i=0;for(const t of Q){const a=g.get(String(t.srcId));if(!a)continue;if(i+$I>B.length)break;const[o,s,n,r]=t.frame,[c,h,l,w]=t.mFrame,D=LB(o+E,s+e,n,r,C.info.videoW,C.info.videoH),y=LB(c,h,l,w,C.info.videoW,C.info.videoH);B[i++]=a,B[i++]=D[0],B[i++]=D[1],B[i++]=D[2],B[i++]=D[3],B[i++]=y[0],B[i++]=y[1],B[i++]=y[2],B[i++]=y[3]}return B}class en{constructor(A,g,I,B,Q,E=!0){this.config=A,this.frameMap=g,eg(this,"canvas"),eg(this,"gl"),eg(this,"program"),eg(this,"vertexShader"),eg(this,"fragmentShader"),eg(this,"vertexBuffer"),eg(this,"videoTexture"),eg(this,"imagePosLoc"),eg(this,"imagePositionsScratch"),eg(this,"resourceEntries"),eg(this,"textureUnitBySrcId",new Map),eg(this,"videoTextureWidth",1),eg(this,"videoTextureHeight",1);var e;if(I.size===0)throw new Error("VAP mix composer requires at least one slot resource");this.canvas=An(B,Q);const i={alpha:!0,antialias:!1,depth:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,stencil:!1};let t=!0,a=this.canvas.getContext("webgl2",i);if(a||(t=!1,a=this.canvas.getContext("webgl",i)||this.canvas.getContext("experimental-webgl",i)),!a)throw new Error("VAP mixed rendering requires WebGL support");this.gl=a;const o=Math.max(1,a.getParameter(a.MAX_TEXTURE_IMAGE_UNITS)),s=Math.max(0,o-1),n=[];let r=1;for(const u of(e=A.src)!=null?e:[]){const G=I.get(String(u.srcId));if(!G)continue;if(r>s){console.warn("[GiftStage] VAP mixed resources exceed texture unit limit, skipping",{srcId:u.srcId,srcTag:u.srcTag,maxUnits:o});continue}const S=OQ(a,r,G.source,!0),M={srcId:String(u.srcId),unit:r,texture:S};n.push(M),this.textureUnitBySrcId.set(M.srcId,M.unit),r++}if(n.length===0)throw new Error("VAP mixed rendering could not bind any slot resources");this.resourceEntries=n;let c=1;for(const u of g.values())c=Math.max(c,u.length);this.imagePositionsScratch=new Float32Array(c*$I);const h=Qn(this.resourceEntries.length,c,t),l=gn(a,h.vertex,h.fragment);this.program=l.program,this.vertexShader=l.vertexShader,this.fragmentShader=l.fragmentShader,this.imagePosLoc=a.getUniformLocation(this.program,"image_pos"),this.videoTexture=OQ(a,0);const w=a.getUniformLocation(this.program,"u_image_video");w!==null&&a.uniform1i(w,0);const D=a.getUniformLocation(this.program,"u_rgbPremultiplied");D!==null&&a.uniform1f(D,E?1:0);for(const u of this.resourceEntries){const G=a.getUniformLocation(this.program,`u_image${u.unit}`);G!==null&&a.uniform1i(G,u.unit)}const y=a.createBuffer();if(!y)throw new Error("Failed to create VAP mix vertex buffer");this.vertexBuffer=y,a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,In(A.info),a.STATIC_DRAW);const R=6*Float32Array.BYTES_PER_ELEMENT,F=a.getAttribLocation(this.program,"a_position"),d=a.getAttribLocation(this.program,"a_texCoord"),f=a.getAttribLocation(this.program,"a_alpha_texCoord");a.enableVertexAttribArray(F),a.vertexAttribPointer(F,2,a.FLOAT,!1,R,0),a.enableVertexAttribArray(d),a.vertexAttribPointer(d,2,a.FLOAT,!1,R,2*Float32Array.BYTES_PER_ELEMENT),a.enableVertexAttribArray(f),a.vertexAttribPointer(f,2,a.FLOAT,!1,R,4*Float32Array.BYTES_PER_ELEMENT),a.viewport(0,0,this.canvas.width,this.canvas.height),a.disable(a.BLEND),a.disable(a.DEPTH_TEST),a.clearColor(0,0,0,0),a.pixelStorei(a.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),a.pixelStorei(a.UNPACK_COLORSPACE_CONVERSION_WEBGL,a.NONE)}render(A,g){const I=this.gl;I.useProgram(this.program),I.activeTexture(I.TEXTURE0),I.bindTexture(I.TEXTURE_2D,this.videoTexture),I.pixelStorei(I.UNPACK_FLIP_Y_WEBGL,1);const B=XI(A),Q=OI(A);B>0&&Q>0&&B===this.videoTextureWidth&&Q===this.videoTextureHeight?I.texSubImage2D(I.TEXTURE_2D,0,0,0,I.RGBA,I.UNSIGNED_BYTE,A):(I.texImage2D(I.TEXTURE_2D,0,I.RGBA,I.RGBA,I.UNSIGNED_BYTE,A),B>0&&Q>0&&(this.videoTextureWidth=B,this.videoTextureHeight=Q)),I.pixelStorei(I.UNPACK_FLIP_Y_WEBGL,0);const E=En(this.config,this.frameMap,this.textureUnitBySrcId,g,this.imagePositionsScratch);return this.imagePosLoc!==null&&I.uniform1fv(this.imagePosLoc,E),I.clear(I.COLOR_BUFFER_BIT),I.drawArrays(I.TRIANGLE_STRIP,0,4),this.canvas}destroy(){const A=this.gl;for(const I of this.resourceEntries)A.deleteTexture(I.texture);A.deleteTexture(this.videoTexture),A.deleteBuffer(this.vertexBuffer),A.deleteProgram(this.program),A.deleteShader(this.vertexShader),A.deleteShader(this.fragmentShader);const g=A.getExtension("WEBGL_lose_context");g==null||g.loseContext()}}var tn=Object.defineProperty,an=(C,A,g)=>A in C?tn(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,Kg=(C,A,g)=>an(C,typeof A!="symbol"?A+"":A,g);const Be=1397178947,Ce=14,on=8,Yg=64*1024;function Qe(C){return C+3&-4}class sn{constructor(A=1024){Kg(this,"buffer"),Kg(this,"view"),Kg(this,"bytes"),Kg(this,"offset",0),Kg(this,"encoder",new TextEncoder),this.buffer=new ArrayBuffer(A),this.view=new DataView(this.buffer),this.bytes=new Uint8Array(this.buffer)}ensure(A){const g=this.offset+A;if(g<=this.buffer.byteLength)return;let I=this.buffer.byteLength;for(;I<g;)I*=2;const B=new ArrayBuffer(I);new Uint8Array(B).set(this.bytes.subarray(0,this.offset)),this.buffer=B,this.view=new DataView(this.buffer),this.bytes=new Uint8Array(this.buffer)}async ensureCooperative(A,g){const I=this.offset+A;if(I<=this.buffer.byteLength)return;let B=this.buffer.byteLength;for(;B<I;)B*=2;const Q=new ArrayBuffer(B),E=new Uint8Array(Q);for(let e=0;e<this.offset;e+=Yg){const i=Math.min(e+Yg,this.offset);E.set(this.bytes.subarray(e,i),e),i<this.offset&&await(g==null?void 0:g())}this.buffer=Q,this.view=new DataView(this.buffer),this.bytes=E}u8(A){this.ensure(1),this.view.setUint8(this.offset,A),this.offset+=1}u16(A){this.ensure(2),this.view.setUint16(this.offset,A,!0),this.offset+=2}u32(A){this.ensure(4),this.view.setUint32(this.offset,A,!0),this.offset+=4}i32(A){this.ensure(4),this.view.setInt32(this.offset,A|0,!0),this.offset+=4}f32(A){this.ensure(4),this.view.setFloat32(this.offset,A,!0),this.offset+=4}bytesValue(A){this.u32(A.byteLength),this.ensure(A.byteLength),this.bytes.set(A,this.offset),this.offset+=A.byteLength}rawBytes(A){this.ensure(A.byteLength),this.bytes.set(A,this.offset),this.offset+=A.byteLength}async bytesValueCooperative(A,g){await this.ensureCooperative(4+A.byteLength,g),this.u32(A.byteLength),await this.rawBytesCooperative(A,g)}async rawBytesCooperative(A,g){await this.ensureCooperative(A.byteLength,g);for(let I=0;I<A.byteLength;I+=Yg){const B=Math.min(I+Yg,A.byteLength);this.bytes.set(A.subarray(I,B),this.offset),this.offset+=B-I,B<A.byteLength&&await(g==null?void 0:g())}}async stringCooperative(A,g){await this.bytesValueCooperative(this.encoder.encode(A),g)}string(A){this.bytesValue(this.encoder.encode(A))}pad4(){const A=Qe(this.offset)-this.offset;for(let g=0;g<A;g++)this.u8(0)}finish(){return this.buffer.slice(0,this.offset)}async finishCooperative(A){const g=new Uint8Array(this.offset),I=this.bytes.subarray(0,this.offset);for(let B=0;B<I.byteLength;B+=Yg){const Q=Math.min(B+Yg,I.byteLength);g.set(I.subarray(B,Q),B),Q<I.byteLength&&A.shouldYield()&&await A.yield()}return g.buffer}}class nn{constructor(A){this.buffer=A,Kg(this,"view"),Kg(this,"bytes"),Kg(this,"offset",0),Kg(this,"decoder",new TextDecoder),this.view=new DataView(A),this.bytes=new Uint8Array(A)}get position(){return this.offset}skip(A){this.offset+=A}pad4(){this.offset=Qe(this.offset)}u8(){const A=this.view.getUint8(this.offset);return this.offset+=1,A}u16(){const A=this.view.getUint16(this.offset,!0);return this.offset+=2,A}u32(){const A=this.view.getUint32(this.offset,!0);return this.offset+=4,A}i32(){const A=this.view.getInt32(this.offset,!0);return this.offset+=4,A}f32(){const A=this.view.getFloat32(this.offset,!0);return this.offset+=4,A}bytesValue(){const A=this.u32(),g=this.bytes.slice(this.offset,this.offset+A);return this.offset+=A,g}async ownedBytesValueCooperative(A){const g=this.u32(),I=this.bytes.subarray(this.offset,this.offset+g);this.offset+=g;const B=new Uint8Array(g);for(let Q=0;Q<g;Q+=Yg){const E=Math.min(Q+Yg,g);B.set(I.subarray(Q,E),Q),E<g&&A.shouldYield()&&await A.yield()}return B.buffer}string(){return this.decoder.decode(this.bytesValue())}sourceBuffer(){return this.buffer}}function Ee(C){var A,g;let I=0;for(const Q of C.atlasPages)I+=Q.imageBytes.byteLength;for(const[Q,E]of C.audioBlobs)I+=Q.length*2+E.byteLength;for(const[Q]of C.atlasRects)I+=Q.length*2+20;if(C.clipMeshes)for(const[Q,E]of C.clipMeshes)I+=Q.length*2+E.vertices.byteLength+E.indices.byteLength;const B=C.spriteTable;I+=B.frameData.byteLength,I+=B.clipPathIndex.byteLength,I+=B.shapesIndex.byteLength;for(const Q of B.imageKeys)I+=Q.length*2;for(const Q of B.clipPaths)I+=Q.length*2;for(const Q of B.shapesTable)for(const E of Q)I+=((g=(A=E.pathData)==null?void 0:A.length)!=null?g:0)*2+96;return I}async function ng(C){C.shouldYield()&&await C.yield()}async function rn(C,A){var g,I,B;const Q=C.spriteTable,E=OA({maxBudgetMs:A}),e=()=>ng(E),i=new sn(on+Ee(C)+Yg);i.u32(Be),i.u16(Ce),i.u16(Q.allFramesInsideViewBox===void 0?0:2|(Q.allFramesInsideViewBox?1:0)),i.f32(C.params.viewBoxWidth),i.f32(C.params.viewBoxHeight),i.f32(C.params.fps),i.u32(C.params.frames),i.u32(C.atlasPages.length);for(const t of C.atlasPages)i.u32(t.width),i.u32(t.height),await i.bytesValueCooperative(new Uint8Array(t.imageBytes),e),await ng(E);i.u32(C.atlasRects.size);for(const[t,a]of C.atlasRects)await i.stringCooperative(t,e),i.u32((g=a.textureIndex)!=null?g:0),i.f32(a.x),i.f32(a.y),i.f32(a.w),i.f32(a.h),await ng(E);i.u32(C.audios.length);for(const t of C.audios)await i.stringCooperative(t.audioKey,e),i.u32(t.startFrame),i.u32(t.endFrame),i.f32(t.startTime),i.f32(t.totalTime),await ng(E);i.u32(C.audioBlobs.size);for(const[t,a]of C.audioBlobs)await i.stringCooperative(t,e),await i.bytesValueCooperative(new Uint8Array(a),e),await ng(E);if(await Ho(i,Q,e),i.u32((B=(I=C.clipMeshes)==null?void 0:I.size)!=null?B:0),C.clipMeshes)for(const[t,a]of C.clipMeshes)await i.stringCooperative(t,e),await i.bytesValueCooperative(new Uint8Array(a.vertices.buffer,a.vertices.byteOffset,a.vertices.byteLength),e),await i.bytesValueCooperative(new Uint8Array(a.indices.buffer,a.indices.byteOffset,a.indices.byteLength),e),await ng(E);return i.finishCooperative(E)}async function cn(C,A){const g=OA({maxBudgetMs:A}),I=new nn(C);if(I.u32()!==Be)throw new Error("Invalid SVGA cache binary magic");if(I.u16()!==Ce)throw new Error("Unsupported SVGA cache binary version");const B=I.u16(),Q={viewBoxWidth:I.f32(),viewBoxHeight:I.f32(),fps:I.f32(),frames:I.u32()},E=I.u32(),e=[];for(let l=0;l<E;l++){const w=I.u32(),D=I.u32(),y=await I.ownedBytesValueCooperative(g);e.push({width:w,height:D,imageBytes:y}),await ng(g)}const i=I.u32(),t=new Map;for(let l=0;l<i;l++){const w=I.string(),D=I.u32();t.set(w,{textureIndex:D,x:I.f32(),y:I.f32(),w:I.f32(),h:I.f32()}),await ng(g)}const a=I.u32(),o=[];for(let l=0;l<a;l++)o.push({audioKey:I.string(),startFrame:I.u32(),endFrame:I.u32(),startTime:I.f32(),totalTime:I.f32()}),await ng(g);const s=I.u32(),n=new Map;for(let l=0;l<s;l++){const w=I.string();n.set(w,await I.ownedBytesValueCooperative(g)),await ng(g)}const r=await VE(I,()=>ng(g));(B&2)!==0&&(r.allFramesInsideViewBox=(B&1)!==0),Tg(Q,r);const c=I.u32(),h=new Map;for(let l=0;l<c;l++){const w=I.string(),D=new Float32Array(await I.ownedBytesValueCooperative(g)),y=new Uint32Array(await I.ownedBytesValueCooperative(g));w&&D.length>=6&&y.length>=3&&h.set(w,{vertices:D,indices:y}),await ng(g)}return{params:Q,spriteTable:r,audios:o,audioBlobs:n,atlasRects:t,atlasPages:e,clipMeshes:h}}function SC(C){return`svga-asset:${C}`}function MC(C){return`svga-asset-bin:${C}`}async function hn(C,A={}){const g=ya(SC(C),"svga-asset");if(g)return Tg(g.params,g.spriteTable),g;const I=await Fa(MC(C));if(!I)return null;try{const B=await cn(I,A.frameBudgetMs);return ME(SC(C),"svga-asset",B,I.byteLength),B}catch(B){return Ga(MC(C)),null}}async function DB(C,A,g={}){Tg(A.params,A.spriteTable);const I=await rn(A,g.frameBudgetMs);ME(SC(C),"svga-asset",A,Math.max(I.byteLength,Ee(A))),await da(MC(C),I)}function qg(C){return typeof C=="number"&&Number.isFinite(C)&&C>0}function ln(C,A){const g=qg(C)?C*.5:0,I=qg(A)?A:0;return{width:g,height:I}}function Dn(C,A,g,I){const B=qg(A.width)?A.width:void 0,Q=qg(A.height)?A.height:void 0,E=qg(C.width)?C.width:void 0,e=qg(C.height)?C.height:void 0,i=C.useOriginalSize===!0;if(E&&e)return{width:E,height:e};if(E)return B&&Q?{width:E,height:E*Q/B}:{width:E,height:E};if(e)return B&&Q?{width:e*B/Q,height:e}:{width:e,height:e};let t=B!=null?B:0,a=Q!=null?Q:0;if(t>0&&a>0&&qg(g)&&qg(I)&&(!i||t>g||a>I)){const o=Math.min(g/t,I/a);t*=o,a*=o}return{width:t,height:a}}function wn(C,A){var g,I,B;if(typeof C=="string"){const E=(g=/^data:(image\/[a-z0-9.+-]+)/i.exec(C))==null?void 0:g[1];if(E)return E;const e=(B=(I=C.split(/[?#]/,1)[0])==null?void 0:I.toLowerCase())!=null?B:"";if(e.endsWith(".svg"))return"image/svg+xml";if(e.endsWith(".png"))return"image/png";if(e.endsWith(".jpg")||e.endsWith(".jpeg"))return"image/jpeg";if(e.endsWith(".webp"))return"image/webp";if(e.endsWith(".gif"))return"image/gif";if(e.endsWith(".avif"))return"image/avif"}if(A[0]===137&&A[1]===80&&A[2]===78&&A[3]===71)return"image/png";if(A[0]===255&&A[1]===216&&A[2]===255)return"image/jpeg";if(A[0]===71&&A[1]===73&&A[2]===70)return"image/gif";if(A[0]===82&&A[1]===73&&A[2]===70&&A[3]===70&&A[8]===87&&A[9]===69&&A[10]===66&&A[11]===80)return"image/webp";const Q=new TextDecoder().decode(A.subarray(0,Math.min(A.length,256)));return/^\s*(?:<\?xml[^>]*>\s*)?<svg[\s>]/i.test(Q)?"image/svg+xml":""}function PQ(C,A){return new Promise((g,I)=>{const B=URL.createObjectURL(C),Q=new Image;Q.crossOrigin="anonymous";const E=()=>{A==null||A.removeEventListener("abort",i),Q.onload=null,Q.onerror=null},e=t=>{E(),URL.revokeObjectURL(B),I(t)},i=()=>e(CA("Image decoding aborted"));Q.onload=()=>{E();const t=Q.naturalWidth||Q.width,a=Q.naturalHeight||Q.height;if(t<=0||a<=0){URL.revokeObjectURL(B),I(new Error("Decoded image has invalid dimensions"));return}g({source:Q,width:t,height:a,sourcePremultiplied:!1,dispose:()=>URL.revokeObjectURL(B)})},Q.onerror=()=>e(new Error("Failed to decode image")),A==null||A.addEventListener("abort",i,{once:!0}),Q.src=B})}async function aC(C,A){J(A,"Image loading aborted");const g=typeof C=="string"?await QI(C,A):C;J(A,"Image loading aborted");const I=new Uint8Array(g),B=new Blob([I],{type:wn(C,I)});if(typeof createImageBitmap=="function"){let Q=null;try{Q=await createImageBitmap(B,{premultiplyAlpha:"premultiply"})}catch(E){J(A,"Image decoding aborted");try{Q=await createImageBitmap(B)}catch(e){return J(A,"Image decoding aborted"),PQ(B,A)}}if(A!=null&&A.aborted)throw Q.close(),CA("Image decoding aborted");if(Q.width<=0||Q.height<=0)throw Q.close(),new Error("Decoded image has invalid dimensions");return{source:Q,width:Q.width,height:Q.height,sourcePremultiplied:!0,dispose:()=>Q.close()}}return PQ(B,A)}function GI(C){return C!=null&&Number.isInteger(C)&&C>=0}function jQ(C,A){return GI(C)?C:A}function ee(C,A,g){const I=C*A*g;return Number.isSafeInteger(I)?I:Number.POSITIVE_INFINITY}function ie(C,A){var g;if(C.length%$g!==0)throw new RangeError(`SVGA frameData length must be a multiple of ${$g}, got ${C.length}`);const I=C.length/$g,B=I*Wg,Q=A!=null?A:new Float32Array(B);if(Q.length<B)throw new RangeError(`SVGA packed output is too small: need ${B} floats, got ${Q.length}`);for(let E=0;E<I;E++){const e=E*$g,i=E*Wg;for(let t=0;t<$g;t++)Q[i+t]=(g=C[e+t])!=null?g:0;Q[i+9]=0,Q[i+10]=0,Q[i+11]=0}return Q}function yn(C,A){return ie(C,A)}function gB(C,A,g=Wg){const I=GI(C)?C:0,B=GI(A)?A:0,Q=GI(g)?g:Wg;return ee(I,B,Q)*Float32Array.BYTES_PER_ELEMENT}function Fn(C,A,g=xB){return Number.isFinite(g)&&g>=0&&gB(C,A)<=g}function dn(C,A,g,I=xB){const B=gB(A,g);return Number.isFinite(C)&&C>=0&&Number.isFinite(I)&&I>=0&&Number.isFinite(B)&&C+B<=I}const te=1;function ae(C,A,g={}){const I=new Float32Array(C.length*hC);for(let B=0;B<C.length;B++){const Q=B*hC,E=A.get(C[B]);if(I[Q+4]=B,!E){I[Q+6]=te;continue}const e=Number.isInteger(E.textureIndex)&&E.textureIndex>=0?E.textureIndex:0;I[Q]=E.x,I[Q+1]=E.y,I[Q+2]=E.x+E.w,I[Q+3]=E.y+E.h,I[Q+5]=e}return I}function Gn(C,A){var g,I;let B=-1;for(const Q of C){const E=(I=(g=A.get(Q))==null?void 0:g.textureIndex)!=null?I:0;Number.isInteger(E)&&E>=0&&(B=Math.max(B,E))}return B+1}function un(C){if(C.hasClipPaths!=null)return C.hasClipPaths;const A=C.spriteTable;if(!A)return!1;for(const g of A.clipPathIndex)if(g>=0)return!0;return A.clipPaths.length>0&&A.clipPathIndex.length===0}function Rg(C,A,g,I,B,Q,E,e){var i;const t=(i=E.strategy)!=null?i:"auto",a=GI(E.compatibleInstanceCount)?E.compatibleInstanceCount:0,o=GI(E.atlasPageCount)?E.atlasPageCount:E.hasAtlas===!1?0:1;return{path:C,eligible:C!=="cpu-reference",selectedPath:C,backend:A,requested:t,requestedStrategy:t,spriteCount:g,frameCount:I,compatibleInstanceCount:a,atlasPageCount:o,tableBytes:B,frameTableBytes:B,commandTableBytes:0,budgetBytes:Q,pathState:e==="table-preparing"?"preparing":C==="cpu-reference"?"fallback":"settled",drawBatchMode:C==="gpu-hybrid"?"hybrid-scheduled":"per-slot",drawCompatibleInstanceCount:a,fallbackReasons:e?[e]:[],...e?{fallbackReason:e}:{}}}function NC(C){var A,g,I,B,Q,E,e;const i=C.spriteTable,t=jQ(C.spriteCount,(A=i==null?void 0:i.spriteCount)!=null?A:0),a=jQ(C.frameCount,(g=i==null?void 0:i.frameCount)!=null?g:0),o=(I=C.budgetBytes)!=null?I:xB,s=gB(t,a),n=(B=C.strategy)!=null?B:"auto",r=(E=(Q=C.hasAnyShapes)!=null?Q:i==null?void 0:i.hasAnyShapes)!=null?E:!1;if(n==="cpu")return Rg("cpu-reference",C.backend,t,a,s,o,C,"policy-disabled");if(C.backend==="webgl1")return Rg("cpu-reference",C.backend,t,a,s,o,C,"device-capability");const c=(e=C.frameDataLength)!=null?e:i==null?void 0:i.frameData.length,h=ee(t,a,$g);if(t<=0||a<=0||!Number.isFinite(h)||c!=null&&c!==h)return Rg("cpu-reference",C.backend,t,a,s,o,C,"validation-failed");if(!Number.isFinite(o)||o<0||s>o)return Rg("cpu-reference",C.backend,t,a,s,o,C,"table-too-large-or-budget");if(C.hasAtlas===!1&&!r)return Rg("cpu-reference",C.backend,t,a,s,o,C,"plan-not-ready-or-unsupported");if(C.tablePreparing)return Rg("cpu-reference",C.backend,t,a,s,o,C,"table-preparing");if(C.uploadFailed)return Rg("cpu-reference",C.backend,t,a,s,o,C,"upload-failed");const l=un(C);return C.hasSlotTextureOverride===!0?Rg("cpu-reference",C.backend,t,a,s,o,C,"slot-overrides"):Rg(r||l?"gpu-hybrid":"gpu-direct",C.backend,t,a,s,o,C)}const Dg=8;var Rn=Object.defineProperty,fn=(C,A,g)=>A in C?Rn(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,ZA=(C,A,g)=>fn(C,typeof A!="symbol"?A+"":A,g);function zQ(C,A){return Number.isFinite(C)?C:A}class Sn{constructor(A,g,I){ZA(this,"data"),ZA(this,"stride"),ZA(this,"gpuBuffer"),ZA(this,"backend"),ZA(this,"_released",!1),this.backend=A,this.data=g,this.stride=I,this.gpuBuffer=A&&A.type==="webgpu"?A.createBuffer(g,"storage"):null}get released(){return this._released}release(){var A;this._released||(this._released=!0,this.gpuBuffer&&((A=this.backend)==null||A.deleteBuffer(this.gpuBuffer)),this.backend=null)}}class SB{constructor(A,g){ZA(this,"trackCount"),ZA(this,"sampleCount"),ZA(this,"sampleIntervalMs"),ZA(this,"durationMs"),ZA(this,"table"),ZA(this,"gpuGlobalsBuffer"),ZA(this,"backend"),ZA(this,"gpuGlobals",new Float32Array(8)),ZA(this,"scratch",new Float32Array(Dg)),ZA(this,"_released",!1);var I;this.backend=A,this.trackCount=Math.max(1,Math.floor(g.trackCount)),this.sampleCount=Math.max(1,Math.floor(g.sampleCount)),this.sampleIntervalMs=Math.max(.001,zQ(g.sampleIntervalMs,1e3/60));const B=this.trackCount*this.sampleCount*Dg;if(g.samples.length!==B)throw new Error(`MotionTrack samples length must be ${B}, got ${g.samples.length}`);this.durationMs=Math.max(0,zQ((I=g.durationMs)!=null?I:(this.sampleCount-1)*this.sampleIntervalMs,0)),this.table=new Sn(A,new Float32Array(g.samples),Dg),this.gpuGlobals[1]=this.sampleIntervalMs,this.gpuGlobals[2]=this.sampleCount,this.gpuGlobalsBuffer=(A==null?void 0:A.type)==="webgpu"?A.createBuffer(this.gpuGlobals,"uniform"):null}get released(){return this._released}sample(A,g,I=this.scratch){if(this._released)throw new Error("MotionTrack is released");if(!Number.isInteger(A)||A<0||A>=this.trackCount)throw new RangeError(`MotionTrack index out of range: ${A}`);if(I.length<Dg)throw new RangeError(`MotionTrack output requires ${Dg} floats`);const B=Math.max(0,Math.min(this.sampleCount-1,g/this.sampleIntervalMs)),Q=Math.floor(B),E=Math.min(this.sampleCount-1,Q+1),e=A*this.sampleCount*Dg,i=e+Q*Dg,t=e+E*Dg,a=this.table.data,s=Q!==E&&a[i+7]>.5?B-Q:0;for(let n=0;n<Dg;n++){const r=a[i+n];I[n]=n>=6||s<=0?r:r+(a[t+n]-r)*s}return I}updateGpuGlobals(A,g,I){!this.gpuGlobalsBuffer||!this.backend||(this.gpuGlobals[0]=A,this.gpuGlobals[3]=g,this.gpuGlobals[4]=I,this.backend.updateBuffer(this.gpuGlobalsBuffer,this.gpuGlobals,0))}release(){var A;this._released||(this._released=!0,this.gpuGlobalsBuffer&&((A=this.backend)==null||A.deleteBuffer(this.gpuGlobalsBuffer)),this.table.release())}}var Mn=Object.defineProperty,Nn=(C,A,g)=>A in C?Mn(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,xA=(C,A,g)=>Nn(C,typeof A!="symbol"?A+"":A,g);class oe{constructor(A,g=`scope-${mC()}`){xA(this,"id"),xA(this,"host"),xA(this,"controller",new AbortController),xA(this,"gifts",new Map),xA(this,"tracks",new Set),xA(this,"bindings",new Set),xA(this,"particleBatches",new Set),xA(this,"particleBatchGroups",new Set),xA(this,"frameListeners",new Set),xA(this,"finishListeners",new Set),xA(this,"unregisterController"),xA(this,"_state","idle"),xA(this,"_currentTimeMs",0),xA(this,"durationMs",0),xA(this,"lastTickAtMs",0),xA(this,"playbackRevision",0),this.host=A,this.id=g,this.unregisterController=A.registerFrameController(this)}get signal(){return this.controller.signal}get state(){return this._state}get currentTimeMs(){return this._currentTimeMs}get active(){return this._state==="playing"}async addGift(A){this.assertAlive();const g=await this.host.addGift({...A,startPaused:!0,playbackScopeControlled:!0,signal:this.signal});if(this.signal.aborted)throw g.destroy(),new DOMException("Playback scope was destroyed","AbortError");return this.gifts.set(g.id,g),g}createMotionTrack(A){this.assertAlive();const g=new SB(this.host.backend,A);this.tracks.add(g);const I=g.release.bind(g);return g.release=()=>{I(),this.tracks.delete(g)},g}createParticleBatch(A){this.assertAlive();const g=this.host.createParticleBatch(A);return this.particleBatches.add(g),g.setTime(this._currentTimeMs),g}createParticleBatchGroup(A){if(this.assertAlive(),!this.host.createParticleBatchGroup)throw new Error("ParticleBatchGroup is not supported by this host");const g=this.host.createParticleBatchGroup(A);try{return g.setTime(this._currentTimeMs),this.particleBatchGroups.add(g),g}catch(I){throw g.destroy(),I}}bindMotion(A,g,I,B={}){var Q;if(this.assertAlive(),!this.gifts.has(A.id))throw new Error("Gift does not belong to this playback scope");if(!this.tracks.has(g))throw new Error("MotionTrack does not belong to this playback scope");const E={gift:A,track:g,trackIndex:I,center:B.center!==!1,gpuDriven:!1,scratch:new Float32Array(8)};this.bindings.add(E);const e=this.host.getSlot(A.id);e&&B.center!==!1&&g instanceof SB&&g.table.gpuBuffer&&g.gpuGlobalsBuffer&&this.host.backendType==="webgpu"&&e.type==="svga"&&e.videoEntity&&!((Q=e.svgaSlotTextures)!=null&&Q.size)&&e.options.objectFit!=="cover"&&!e.options.transformOrigin&&(E.gpuDriven=!0,e.motionTrackBinding={buffer:g.table.gpuBuffer,globalsBuffer:g.gpuGlobalsBuffer,trackIndex:I,sampleCount:g.sampleCount,sampleIntervalMs:g.sampleIntervalMs,currentTimeMs:this._currentTimeMs},e.x=0,e.y=0,e.motionScaleX=1,e.motionScaleY=1,e.rotation=0,e.opacity=1),E.gpuDriven||this.applyBinding(E,this._currentTimeMs);const i=E.gpuDriven?e==null?void 0:e.motionTrackBinding:null;return this.host.invalidate(),()=>{this.bindings.delete(E);const t=this.host.getSlot(A.id);E.gpuDriven&&t&&t.motionTrackBinding===i&&(t.motionTrackBinding=null,this.host.invalidate())}}onFrame(A){return this.frameListeners.add(A),()=>this.frameListeners.delete(A)}onFinish(A){return this.finishListeners.add(A),()=>this.finishListeners.delete(A)}start(A){var g;this.assertAlive(),this.playbackRevision++,this.durationMs=Math.max(0,A.durationMs),this._currentTimeMs=Math.max(0,Math.min(this.durationMs,(g=A.fromMs)!=null?g:0)),this.lastTickAtMs=performance.now(),this._state="playing";for(const I of this.gifts.values())I.resume();this.applyMediaTime(this._currentTimeMs,!0,!0),this.applyAll(this._currentTimeMs),this.applyParticleTime(this._currentTimeMs),this.host.invalidate(!0)}pause(){if(this._state==="playing"){this.playbackRevision++,this._state="paused";for(const A of this.gifts.values())A.pause()}}resume(){if(this._state==="paused"){this.playbackRevision++,this.lastTickAtMs=performance.now(),this._state="playing";for(const A of this.gifts.values())A.resume();this.applyMediaTime(this._currentTimeMs,!1,!0),this.host.invalidate(!0)}}seek(A){this.assertAlive(),this.playbackRevision++,this._currentTimeMs=Math.max(0,Math.min(this.durationMs,A)),this._state==="playing"&&(this.lastTickAtMs=performance.now()),this.applyAll(this._currentTimeMs),this.applyParticleTime(this._currentTimeMs),this.applyMediaTime(this._currentTimeMs,!1,!0),this.emitFrame(0),this.host.invalidate()}stop(){if(!(this._state==="destroyed"||this._state==="stopped")){this.playbackRevision++,this._state="stopped";for(const A of this.gifts.values())A.pause();this.host.invalidate()}}tick(A,g){if(this._state!=="playing")return!1;const I=this.playbackRevision,B=Math.max(0,g),Q=this.lastTickAtMs>0?Math.max(0,A-this.lastTickAtMs):B,E=Math.min(B,Q);if(this.lastTickAtMs=A,this._currentTimeMs=Math.min(this.durationMs,this._currentTimeMs+E),this.applyAll(this._currentTimeMs),this.applyParticleTime(this._currentTimeMs),this.applyMediaTime(this._currentTimeMs),I!==this.playbackRevision||(this.emitFrame(E),I!==this.playbackRevision))return!0;if(this._currentTimeMs>=this.durationMs){this._state="stopped";for(const e of this.gifts.values())e.pause();for(const e of this.finishListeners)e()}return!0}destroy(){var A;if(this._state!=="destroyed"){this.playbackRevision++,this._state="destroyed",this.controller.abort(),(A=this.unregisterController)==null||A.call(this),this.unregisterController=null;for(const g of this.bindings)this.bindings.delete(g);for(const g of this.gifts.values())this.host.removeGift(g.id);this.gifts.clear();for(const g of this.tracks)g.release();this.tracks.clear();for(const g of this.particleBatches)g.destroy();this.particleBatches.clear();for(const g of this.particleBatchGroups)g.destroy();this.particleBatchGroups.clear(),this.frameListeners.clear(),this.finishListeners.clear()}}applyAll(A){const g=this.host.backend;if(g){const{sx:I,sy:B}=Zg(g.canvas);for(const Q of this.tracks)Q instanceof SB&&Q.updateGpuGlobals(A,I,B)}for(const I of this.bindings)I.gpuDriven||this.applyBinding(I,A)}applyParticleTime(A){for(const g of this.particleBatches)g.setTime(A);for(const g of this.particleBatchGroups)g.setTime(A)}applyBinding(A,g){const I=this.host.getSlot(A.gift.id);if(!I)return;I.motionTrackBinding&&(I.motionTrackBinding.currentTimeMs=g);const B=A.track.sample(A.trackIndex,g,A.scratch),Q=this.host.backend;if(!Q)return;const{sx:E,sy:e}=Zg(Q.canvas),i=Number.isFinite(B[2])?B[2]:1,t=Number.isFinite(B[3])?B[3]:1;I.motionScaleX=i,I.motionScaleY=t,I.rotation=Number.isFinite(B[4])?B[4]:0,I.opacity=B[6]>.5?Math.max(0,Math.min(1,B[5])):0;const a=B[0]*E,o=B[1]*e;I.x=A.center?a-I.width*i/2:a,I.y=A.center?o-I.height*t/2:o,I.batchKeyCache=void 0,I.coincidentVisualKeyCache=void 0,I.svgaStaticBatchCache=null}applyMediaTime(A,g=!1,I=!1){for(const B of this.gifts.values())this.host.applyMediaTime(B.id,A,g,I)}emitFrame(A){const g={nowMs:this._currentTimeMs,deltaMs:A,progress:this.durationMs>0?this._currentTimeMs/this.durationMs:1};for(const I of this.frameListeners)I(g)}assertAlive(){if(this._state==="destroyed")throw new Error("Playback scope is destroyed")}}var Un=Object.defineProperty,kn=(C,A,g)=>A in C?Un(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,q=(C,A,g)=>kn(C,typeof A!="symbol"?A+"":A,g);function _Q(C){return Number.isFinite(C)?Math.max(0,Math.min(1,C)):1}function Yn(C){return"delayMs"in C}const lA="GiftStage load canceled";class $Q extends Error{}function Ng(C){let A=!1;return()=>{A||(A=!0,C())}}function pn(C,A=typeof navigator!="undefined"?navigator.hardwareConcurrency:void 0){if(C!=null)return Math.max(1,Math.floor(Number.isFinite(C)?C:1));const g=A!=null&&Number.isFinite(A)&&A>0?Math.floor(A):4;return Math.max(1,Math.min(4,Math.floor(g/2)))}const Gg=class _A{constructor(A){q(this,"sharedSVGAEntities",new Map),q(this,"pendingSharedSVGAEntities",new Map),q(this,"svgaFullClipPrewarmPromises",new WeakMap),q(this,"svgaPersistentCacheWriters",new WeakMap),q(this,"svgaPersistentCacheWritePromises",new WeakMap),q(this,"sharedVideoSources",new Map),q(this,"sharedHtmlVideos",new Map),q(this,"sharedVideoTextures",new Map),q(this,"pendingSharedHtmlVideos",new Map),q(this,"sharedImageTextures",new Map),q(this,"pendingSharedImageTextures",new Map),q(this,"sharedWebCodecsPlaybacks",new Map),q(this,"pendingSharedWebCodecsPlaybacks",new Map),q(this,"sharedWebCodecsSurfaces",new Map),q(this,"completedPlaybackSlots",new Set),q(this,"playbackCompleteWaiters",new Map),q(this,"canvas"),q(this,"backend",null),q(this,"manager",null),q(this,"options"),q(this,"ready"),q(this,"destroyed",!1),q(this,"resizeObserver",null),q(this,"nextRenderOrder",0),q(this,"nextSharedWebCodecsPlaybackId",1),q(this,"nextSharedWebCodecsSurfaceId",1),q(this,"playbackScopes",new Set),q(this,"mountedPlugins",new Set),q(this,"svgaReportedPathKeys",new WeakMap),q(this,"svgaFrameTablePromises",new WeakMap),q(this,"svgaFrameTableResidentBytes",new WeakMap),q(this,"svgaFrameTableReservedBytes",new WeakMap),q(this,"releasedSVGATimelineEntities",new WeakSet),q(this,"activeSVGAGpuFrameTableBytes",0),q(this,"reservedSVGAGpuFrameTableBytes",0),q(this,"svgaBackendLost",!1),q(this,"svgaPreparingEntities",new Set),q(this,"svgaCommandControllers",new WeakMap),q(this,"svgaPreparationSequence",0),q(this,"svgaPreparationProfiles",new WeakMap),q(this,"activeSVGATimelineEntities",new Set),q(this,"svgaEntitySources",new WeakMap),q(this,"runtimeFallbackCount",0),q(this,"runtimeObserverErrorCount",0),q(this,"lastRuntimeDiagnostic",null),q(this,"playbackPaused",!1),q(this,"onWindowLayout",()=>{this.destroyed||this.syncCanvasSize()}),q(this,"onVisibilityChange",()=>{var g;this.destroyed||((g=this.manager)==null||g.setHidden(document.hidden),document.hidden?this.clearAllHtmlVideoPlaybackWatchdogs():this.rearmHtmlVideoPlaybackWatchdogs())}),this.options=A,this.canvas=document.createElement("canvas"),this.canvas.style.cssText="position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:9999;",A.container.appendChild(this.canvas),document.addEventListener("visibilitychange",this.onVisibilityChange),this.ready=this.init()}backingStoreDpr(){const A=this.options.resolution;if(A!=null&&A>0&&Number.isFinite(A))return A;const g=typeof window!="undefined"&&window.devicePixelRatio>0?window.devicePixelRatio:1;return Math.min(g,2)}syncCanvasSize(){var A;ct(this.canvas,this.backingStoreDpr(),this.options.maxRenderSize),(A=this.manager)==null||A.syncSlotLayoutFromOptions()}resourcePipelineConcurrency(){return pn(this.options.maxConcurrentParse)}async init(){var A,g,I,B;this.syncCanvasSize(),document.hidden||await new Promise(t=>requestAnimationFrame(()=>t())),this.syncCanvasSize(),Da({maxConcurrent:this.resourcePipelineConcurrency(),maxMemoryBytes:_A.DEFAULT_RESOURCE_CACHE_MEMORY_BYTES,maxPersistentBytes:_A.DEFAULT_RESOURCE_CACHE_PERSISTENT_BYTES}),YC((A=this.options.svgaWorkerTaskConcurrency)!=null?A:1);const Q=(g=this.options.preferWebGPU)!=null?g:!0,E=this.options.antialias,[e]=await Promise.all([rE(this.canvas,Q,E,this.options.forceWebGL1===!0),GE()]);this.backend=e;const i=e;(I=e.setRuntimeDiagnosticHandler)==null||I.call(e,t=>{this.emitRuntimeDiagnostic({type:t.type,...t.message?{message:t.message}:{}})}),(B=i.setDeviceLostHandler)==null||B.call(i,()=>this.handleSVGABackendLoss()),this.manager=new jI(this.backend,t=>{this.fallbackSVGAFrameTable(t,"validation-failed")},t=>{this.emitRuntimeDiagnostic(t)}),this.manager.setHidden(document.hidden),this.resizeObserver=new ResizeObserver(()=>{this.destroyed||this.syncCanvasSize()}),this.resizeObserver.observe(this.canvas),window.addEventListener("resize",this.onWindowLayout),window.addEventListener("orientationchange",this.onWindowLayout)}svgaParseOptions(A){return{useWorker:this.options.svgaParseInWorker!==!1,svgaLoadFrameBudgetMs:this.options.svgaLoadFrameBudgetMs,svgaWorkerFrameBudgetMs:this.options.svgaWorkerFrameBudgetMs,svgaWorkerTaskConcurrency:this.options.svgaWorkerTaskConcurrency,svgaWorkerImageDecodeConcurrency:this.options.svgaWorkerImageDecodeConcurrency,svgaParseProfile:this.options.svgaParseProfile,signal:A}}svgaAtlasFrameBudgetMs(){const A=this.options.svgaLoadFrameBudgetMs,g=this.options.svgaAtlasFrameBudgetMs;return A==null?g:g==null?A:Math.min(A,g)}svgaClipFrameBudgetMs(){var A;const g=(A=this.options.svgaClipPrewarmFrameBudgetMs)!=null?A:8,I=this.options.svgaLoadFrameBudgetMs;return I==null?g:Math.min(I,g)}isSlotLoadActive(A){var g,I;return!this.destroyed&&((g=A.loadAbortController)==null?void 0:g.signal.aborted)!==!0&&((I=this.manager)==null?void 0:I.getSlot(A.id))===A}assertSlotLoadActive(A){if(!this.isSlotLoadActive(A))throw new Error(lA)}isLoadCanceled(A){return Mg(A)||A instanceof Error&&A.message===lA}currentCanvasCssSize(){const A=this.canvas.clientWidth||this.options.container.clientWidth||window.innerWidth||0,g=this.canvas.clientHeight||this.options.container.clientHeight||window.innerHeight||0;return{width:A,height:g}}async resolveGiftIntrinsicSize(A,g){switch(A.type){case"svga":{const I=await is(A.source,this.svgaParseOptions(g));return{width:I.viewBoxWidth,height:I.viewBoxHeight}}case"vap":{if(!A.config)throw new Error("VAP requires config");const I=await FC(A.config),B=BI(I.info);return{width:B.w,height:B.h}}case"alphaVideo":return this.probeVideoNaturalSize(A.source,"alphaVideo");case"image":{const I=await aC(A.source,g);try{return{width:I.width,height:I.height}}finally{I.dispose()}}}}async normalizeAddGiftOptions(A,g){if(A.width!=null&&A.height!=null)return A;const I=this.currentCanvasCssSize();if(A.objectFit==="cover"&&A.width==null&&A.height==null&&I.width>0&&I.height>0)return{...A,width:I.width,height:I.height};const B=g!=null?g:await this.resolveGiftIntrinsicSize(A,A.signal),Q=Dn({width:A.width,height:A.height,useOriginalSize:A.useOriginalSize},B,I.width,I.height);return{...A,width:Q.width,height:Q.height}}resolveAnimationStepTarget(A,g){var I,B,Q,E,e,i;const{sx:t,sy:a}=Zg(this.canvas),o=(I=g.scaleTo)!=null?I:A.scale,s=g.flyTo!=null?g.flyTo.x*t:A.x+A.width*A.scale/2,n=g.flyTo!=null?g.flyTo.y*a:A.y+A.height*A.scale/2;return{targetX:s-A.width*o/2,targetY:n-A.height*o/2,targetScale:o,targetOpacity:_Q((B=g.opacity)!=null?B:A.opacity),targetRotation:(E=(Q=g.rotationTo)!=null?Q:A.rotation)!=null?E:0,duration:Math.max(1,(e=g.duration)!=null?e:600),easing:(i=g.easing)!=null?i:ge}}runGiftAnimationStep(A,g,I){const B=this.resolveAnimationStepTarget(A,I),Q=this.manager.postAnimator.startTweenPromise(A,B.targetX,B.targetY,B.targetScale,B.duration,B.easing,()=>{var E;return(E=I.onComplete)==null?void 0:E.call(I,g)},B.targetOpacity,B.targetRotation);return this.manager.invalidate({resetClock:!0}),Q}createGiftAnimationChain(A,g,I){const B=Array.isArray(I)?[...I]:I?[I]:[],Q=[];let E=!1,e=!1,i=null,t=null;const a=s=>new Promise(n=>{if(e){n();return}t=n,i=setTimeout(()=>{i=null,t=null,n()},Math.max(0,s))}),o={to:s=>{if(E)throw new Error("Gift animation chain has already started");return B.push(s),o},then:s=>{if(E)throw new Error("Gift animation chain has already started");return B.push(s),o},delay:s=>{if(E)throw new Error("Gift animation chain has already started");return B.push({delayMs:Math.max(0,s)}),o},onComplete:s=>{if(E)throw new Error("Gift animation chain has already started");return Q.push(s),o},start:async(s="immediate")=>{var n,r;E=!0;const c=(n=this.manager)==null?void 0:n.getSlot(A.id);if(!c||c.state==="finished")return g;s==="afterGiftComplete"&&await this.waitForGiftPlaybackComplete(A.id);let h=!1;for(const l of B){if(e||!((r=this.manager)!=null&&r.getSlot(A.id))||A.state==="finished"){h=!0;break}Yn(l)?await a(l.delayMs):await this.runGiftAnimationStep(A,g,l)}if(!h&&!e)for(const l of Q)l(g);return g},cancel:()=>{var s;e=!0,i!=null&&(clearTimeout(i),i=null),t==null||t(),t=null,(s=this.manager)==null||s.postAnimator.cancelForGift(A.id)}};return o}getGiftRenderInfo(A){var g,I,B,Q,E,e,i,t,a,o,s,n,r,c,h,l,w,D,y,R,F,d,f,u,G,S;if(A.type!=="svga")return null;const M=A.videoEntity,N=(I=(g=A.svgaFrameTableState)!=null?g:M==null?void 0:M.svgaFrameTableState)!=null?I:null,U=M==null?void 0:M.spriteTable,K=M?(Q=(B=M.atlasTextureHandles)==null?void 0:B.length)!=null?Q:M.atlasTextureHandle?1:0:0,k=M&&(i=(e=(E=this.manager)==null?void 0:E.countCompatibleSVGAInstances)==null?void 0:e.call(E,M))!=null?i:0;if(N){const m=N.renderInfo.selectedPath,H=m==="cpu-reference",v=(t=N.renderInfo.frameTableBytes)!=null?t:N.renderInfo.tableBytes,j=(s=(o=(a=M==null?void 0:M.svgaHybridCommandTable)==null?void 0:a.byteLength)!=null?o:N.renderInfo.commandTableBytes)!=null?s:0;return{selectedPath:m,svgaFramePath:m,parentMotionMode:A.motionTrackBinding&&((n=this.backend)==null?void 0:n.type)==="webgpu"?"gpu-table":A.motionTrackBinding?"cpu-reference":void 0,backend:N.renderInfo.backend,requested:(c=(r=A.options.svgaFrameEvaluation)!=null?r:this.options.svgaFrameEvaluation)!=null?c:"auto",spriteCount:(h=U==null?void 0:U.spriteCount)!=null?h:N.renderInfo.spriteCount,frameCount:(l=U==null?void 0:U.frameCount)!=null?l:N.renderInfo.frameCount,compatibleInstanceCount:k,atlasPageCount:K,tableBytes:N.renderInfo.tableBytes,frameTableBytes:v,commandTableBytes:j,budgetBytes:N.renderInfo.budgetBytes,pathState:(w=N.renderInfo.pathState)!=null?w:N.renderInfo.fallbackReasons.includes("table-preparing")?"preparing":m==="cpu-reference"?"fallback":"settled",drawBatchMode:H?"per-slot":(D=A.svgaDrawBatchMode)!=null?D:m==="gpu-hybrid"?"hybrid-scheduled":"per-slot",drawCompatibleInstanceCount:H?1:(y=A.svgaDrawCompatibleInstanceCount)!=null?y:k,fallbackReasons:[...N.renderInfo.fallbackReasons],...N.renderInfo.fallbackReason?{fallbackReason:N.renderInfo.fallbackReason}:{}}}return{selectedPath:"cpu-reference",svgaFramePath:"cpu-reference",parentMotionMode:A.motionTrackBinding?"cpu-reference":void 0,backend:(F=(R=this.backend)==null?void 0:R.type)!=null?F:"webgl2",requested:(f=(d=A.options.svgaFrameEvaluation)!=null?d:this.options.svgaFrameEvaluation)!=null?f:"auto",spriteCount:(u=U==null?void 0:U.spriteCount)!=null?u:0,frameCount:(G=U==null?void 0:U.frameCount)!=null?G:0,compatibleInstanceCount:k,atlasPageCount:K,tableBytes:0,frameTableBytes:0,commandTableBytes:0,budgetBytes:(S=this.options.svgaGpuFrameTableBudgetBytes)!=null?S:32*1024*1024,pathState:"preparing",drawBatchMode:"per-slot",drawCompatibleInstanceCount:k,fallbackReasons:[A.options.svgaFrameEvaluation==="cpu"||this.options.svgaFrameEvaluation==="cpu"?"policy-disabled":"table-preparing"]}}reportSVGARenderPath(A){var g,I;this.ensureSVGATimelineBookkeeping();const B=this.getGiftRenderInfo(A);if(!B)return;const Q=`${B.selectedPath}|${B.pathState}|${B.drawBatchMode}|${B.drawCompatibleInstanceCount}|${B.fallbackReasons.join(",")}|${B.tableBytes}|${B.commandTableBytes}`;if(this.svgaReportedPathKeys.get(A)!==Q){this.svgaReportedPathKeys.set(A,Q);try{(I=(g=this.options).onSVGARenderPathChange)==null||I.call(g,{giftId:A.id,...B})}catch(E){this.recordObserverError("onSVGARenderPathChange",E)}}}async addGift(A){var g,I,B,Q,E,e,i,t,a,o,s,n;if(console.info("[GiftStage] addGift await ready…",A.type),await this.ready,J(A.signal,lA),console.info("[GiftStage] addGift ready, loading…",A.type),this.destroyed)throw new Error("GiftStage is destroyed");let r=null;A.type==="image"&&(r=await this.acquireImageTexture(A.source,A.signal));let c;try{c=await this.normalizeAddGiftOptions(A,r?{width:r.width,height:r.height}:void 0)}catch(u){throw r==null||r.release(),u}if(this.destroyed)throw r==null||r.release(),new Error("GiftStage is destroyed");const h=mC(),l=new AbortController,w=()=>l.abort();(g=A.signal)!=null&&g.aborted?w():(I=A.signal)==null||I.addEventListener("abort",w,{once:!0});const{sx:D,sy:y}=Zg(this.canvas),R=xE(c.x,c.y,c.width,c.height,this.canvas.clientWidth,this.canvas.clientHeight),F={id:h,type:c.type,state:"loading",options:c,zIndex:(B=c.zIndex)!=null?B:0,renderOrder:this.nextRenderOrder++,x:R.x*D,y:R.y*y,width:c.width*D,height:c.height*y,scale:1,opacity:_Q((Q=c.opacity)!=null?Q:1),rotation:Number.isFinite(c.rotation)?c.rotation:0,paused:c.startPaused===!0,playbackScopeControlled:c.playbackScopeControlled===!0,svgaInitialFrameEmitted:!1,currentFrame:0,accumulatedTime:0,lastTickTime:0,loopCount:0,svgaClipReadyFrame:null,videoEntity:null,loadAbortController:l,detachLoadAbortSignal:A.signal?()=>{var u;return(u=A.signal)==null?void 0:u.removeEventListener("abort",w)}:null,videoPlaybackWatchdogTimer:null,videoPlaybackCompletionStarted:!1,svgaSlotTextures:void 0,videoElement:null,releaseMediaSource:null,releaseSharedSVGAAsset:null,releaseSharedVideoPlayback:null,releaseSharedVideoTexture:null,webcodecsPlayback:null,webcodecsSharedState:null,releaseWebCodecsPlayback:null,wcPlaybackTime:0,videoTextureHandle:null,imageTextureHandle:(E=r==null?void 0:r.texture)!=null?E:null,releaseSharedImageTexture:(e=r==null?void 0:r.release)!=null?e:null,webcodecsSurface:null,releaseWebCodecsSurface:null,vapMixState:null,onFrame:c.onFrame,onComplete:void 0};let d;d={id:h,type:c.type,pause:()=>{var u,G,S,M;F.paused=!0,F.type==="svga"&&((u=this.manager)==null||u.audioManager.stopAllForGift(F.id)),this.clearHtmlVideoPlaybackWatchdog(F),(G=this.manager)==null||G.postAnimator.pauseForGift(F.id),(S=this.manager)==null||S.invalidate(),(M=this.manager)==null||M.syncVideoPlaybackForSlot(F)},resume:()=>{var u,G,S,M,N;if(F.paused=!1,(u=this.manager)==null||u.postAnimator.resumeForGift(F.id),(G=this.manager)==null||G.invalidate({resetClock:!0}),(S=this.manager)==null||S.syncVideoPlaybackForSlot(F),F.type==="svga"&&F.videoEntity&&!F.playbackScopeControlled){const U=F.videoEntity.params.fps,K=F.videoEntity.params.frames,k=F.loopCount*K+F.currentFrame+F.accumulatedTime*U;(M=this.manager)==null||M.audioManager.syncPlaybackScopeFrame(F,k),F.svgaInitialFrameEmitted!==!0&&((N=F.onFrame)==null||N.call(F,F.currentFrame,d),F.svgaInitialFrameEmitted=!0)}F.videoElement&&!F.releaseSharedVideoPlayback&&this.armHtmlVideoPlaybackWatchdog(F,F.videoElement)},destroy:()=>{this.removeGift(h)},getRenderInfo:()=>this.getGiftRenderInfo(F),animate:u=>this.createGiftAnimationChain(F,d,u)};const f=c.onComplete;F.onComplete=u=>{this.markGiftPlaybackComplete(F.id),f==null||f(u)},this.manager.addSlot(F,d);try{switch(c.type){case"svga":await this.loadSVGA(F);break;case"vap":await this.loadVAP(F,c);break;case"alphaVideo":await this.loadAlphaVideo(F,c);break;case"image":break}this.assertSlotLoadActive(F),c.type==="svga"&&F.state==="playing"||(F.state="playing",this.manager.invalidate({resetClock:!0}),c.type==="svga"&&F.videoEntity&&!F.paused&&!F.playbackScopeControlled&&(this.manager.audioManager.tickFrame(F,F.currentFrame),(i=F.onFrame)==null||i.call(F,F.currentFrame,d),F.svgaInitialFrameEmitted=!0)),this.manager.syncVideoPlaybackForSlot(F),F.webcodecsPlayback&&console.info("[GiftStage:WC] gift playing",{giftId:F.id,type:F.type,layoutBufPx:{x:F.x,y:F.y,w:F.width,h:F.height}}),c.type==="image"&&!(c.duration>0)&&this.markGiftPlaybackComplete(F.id)}catch(u){if(this.isLoadCanceled(u))return((t=this.manager)==null?void 0:t.getSlot(F.id))===F?this.manager.removeSlot(F.id):(a=this.manager)==null||a.releaseSlotResources(F),d;F.state="finished",(o=this.manager)==null||o.invalidate(),(n=(s=this.options).onError)==null||n.call(s,u instanceof Error?u:new Error(String(u)))}return d}async loadSVGA(A){var g,I,B,Q;const E=typeof A.options.source=="string"?A.options.source:null,e=(g=A.loadAbortController)==null?void 0:g.signal;if(E){const n=await this.acquireSharedSVGAEntity(E,e);if(!this.isSlotLoadActive(A))throw n.release(),new Error(lA);A.releaseSharedSVGAAsset=n.release,await this.finishLoadSVGA(A,n.entity,n.audioBlobs),this.assertSlotLoadActive(A);return}const{movie:i,imageBitmaps:t,audioBlobs:a}=await fB(A.options.source,this.svgaParseOptions(e));let o=null,s=!1;try{this.assertSlotLoadActive(A),o=await this.buildSVGAAtlasIfNeeded(t,!!E,!0,e),this.assertSlotLoadActive(A);const n={params:i.params,spriteTable:i.spriteTable,audios:i.audios,atlasTextureHandle:(I=o==null?void 0:o.textureHandle)!=null?I:null,atlasTextureHandles:(B=o==null?void 0:o.textureHandles)!=null?B:[],atlasRects:(Q=o==null?void 0:o.rects)!=null?Q:new Map,audioBuffers:new Map};await this.finishLoadSVGA(A,n,a),A.releaseSharedSVGAAsset=Ng(()=>this.deleteSVGAAtlasTextures(n)),s=!0,this.assertSlotLoadActive(A),E&&(o!=null&&o.encodedPngBytesPromises)&&Promise.all(o.encodedPngBytesPromises).then(r=>{r.some(c=>!c)||DB(E,{params:i.params,spriteTable:i.spriteTable,audios:i.audios,audioBlobs:a,atlasRects:o.rects,atlasPages:o.pages.map((c,h)=>({width:c.atlasWidth,height:c.atlasHeight,imageBytes:r[h]}))},{frameBudgetMs:this.options.svgaLoadFrameBudgetMs})})}catch(n){throw s||this.deleteSVGAAtlasResultTextures(o),n}finally{for(const n of t.values())n.close()}}async acquireSharedSVGAEntity(A,g){const I=A,B=this.sharedSVGAEntities.get(I);if(B)return B.refs++,{entity:B.entity,audioBlobs:B.audioBlobs,release:()=>this.releaseSharedSVGAEntity(I)};let Q=this.pendingSharedSVGAEntities.get(I);if(!Q){const i=new AbortController;Q={cacheKey:I,controller:i,consumers:0,settled:!1,promise:null};const t=Q;Q.promise=this.buildSharedSVGAEntity(A,i.signal).finally(()=>{t.settled=!0,this.pendingSharedSVGAEntities.get(I)===t&&this.pendingSharedSVGAEntities.delete(I)}),this.pendingSharedSVGAEntities.set(I,Q)}let E;try{E=await this.waitForPendingSharedSVGAEntity(Q,g)}catch(i){throw i}let e=this.sharedSVGAEntities.get(I);return e?e.refs++:(e={refs:1,entity:E.entity,audioBlobs:E.audioBlobs},this.sharedSVGAEntities.set(I,e)),{entity:e.entity,audioBlobs:e.audioBlobs,release:()=>this.releaseSharedSVGAEntity(I)}}waitForPendingSharedSVGAEntity(A,g){return A.consumers++,new Promise((I,B)=>{let Q=!1;const E=i=>{Q||(Q=!0,g==null||g.removeEventListener("abort",e),A.consumers=Math.max(0,A.consumers-1),A.consumers===0&&!A.settled&&A.controller.abort(),i())},e=()=>{E(()=>B(CA(lA)))};if(g!=null&&g.aborted){e();return}g==null||g.addEventListener("abort",e,{once:!0}),A.promise.then(i=>E(()=>I(i)),i=>E(()=>B(i)))})}async buildSharedSVGAEntity(A,g){var I,B,Q,E,e,i;const t=await hn(A,{frameBudgetMs:this.options.svgaLoadFrameBudgetMs});if(J(g,lA),t){const s=await this.createCachedSVGAAtlasTextures(t.atlasPages,g);try{await((I=this.manager)==null?void 0:I.hydrateSVGAClipMeshesCooperative(t.clipMeshes,{frameBudgetMs:this.options.svgaLoadFrameBudgetMs,signal:g}))}catch(r){for(const c of s)(B=this.backend)==null||B.deleteTexture(c);throw r}const n={params:t.params,spriteTable:t.spriteTable,audios:t.audios,atlasTextureHandle:(Q=s[0])!=null?Q:null,atlasTextureHandles:s,atlasRects:t.atlasRects,audioBuffers:new Map};return this.svgaPersistentCacheWriters.set(n,async r=>{await DB(A,{params:t.params,spriteTable:t.spriteTable,audios:t.audios,audioBlobs:t.audioBlobs,atlasRects:t.atlasRects,atlasPages:t.atlasPages,clipMeshes:r},{frameBudgetMs:this.options.svgaLoadFrameBudgetMs})}),{entity:n,audioBlobs:t.audioBlobs}}let a=await fB(A,this.svgaParseOptions(g)),o=null;try{try{o=await this.buildSVGAAtlasIfNeeded(a.imageBitmaps,!0,!0,g)}catch(c){if(Mg(c)||!(c instanceof Vg))throw c;for(const h of a.imageBitmaps.values())h.close();a=await fB(A,this.svgaParseOptions(g)),o=await this.buildSVGAAtlasIfNeeded(a.imageBitmaps,!0,!1,g)}const{movie:s,audioBlobs:n}=a,r={params:s.params,spriteTable:s.spriteTable,audios:s.audios,atlasTextureHandle:(E=o==null?void 0:o.textureHandle)!=null?E:null,atlasTextureHandles:(e=o==null?void 0:o.textureHandles)!=null?e:[],atlasRects:(i=o==null?void 0:o.rects)!=null?i:new Map,audioBuffers:new Map};if(J(g,lA),o&&o.encodedPngBytesPromises){const c=o,h=o.encodedPngBytesPromises;this.svgaPersistentCacheWriters.set(r,async l=>{const w=await Promise.all(h);w.some(D=>!D)||await DB(A,{params:s.params,spriteTable:s.spriteTable,audios:s.audios,audioBlobs:n,atlasRects:c.rects,atlasPages:c.pages.map((D,y)=>({width:D.atlasWidth,height:D.atlasHeight,imageBytes:w[y]})),clipMeshes:l},{frameBudgetMs:this.options.svgaLoadFrameBudgetMs})})}else o||this.svgaPersistentCacheWriters.set(r,async c=>{await DB(A,{params:s.params,spriteTable:s.spriteTable,audios:s.audios,audioBlobs:n,atlasRects:new Map,atlasPages:[],clipMeshes:c},{frameBudgetMs:this.options.svgaLoadFrameBudgetMs})});return J(g,lA),{entity:r,audioBlobs:n}}catch(s){throw this.deleteSVGAAtlasResultTextures(o),s}finally{for(const s of a.imageBitmaps.values())s.close()}}releaseSharedSVGAEntity(A){const g=this.sharedSVGAEntities.get(A);g&&(g.refs=Math.max(0,g.refs-1),!(g.refs>0)&&(this.deleteSVGAAtlasTextures(g.entity),this.sharedSVGAEntities.delete(A)))}async createCachedSVGAAtlasTextures(A,g){var I;const B=[],Q=OA({maxBudgetMs:this.svgaAtlasFrameBudgetMs()}),E=A.map(e=>createImageBitmap(new Blob([e.imageBytes],{type:"image/png"}),{premultiplyAlpha:"premultiply"}));try{for(let e=0;e<A.length;e++){J(g,lA);const i=A[e],t=await E[e];try{if(this.destroyed||!this.backend)throw new Error(lA);const a=this.backend.createTexture(t,{width:i.width,height:i.height,filter:"linear",premultiplyAlpha:!0,sourcePremultiplied:!0});B.push(a)}finally{t.close()}e+1<A.length&&Q.shouldYield()&&await Q.yield(),J(g,lA)}return B}catch(e){for(const i of B)(I=this.backend)==null||I.deleteTexture(i);for(const i of E)i.then(t=>t.close()).catch(()=>{});throw e}}svgaGpuFrameTableBudgetBytes(){const A=this.options.svgaGpuFrameTableBudgetBytes;return Number.isFinite(A)&&A>=0?Math.floor(A):KC}getSVGAPreparationProfile(A){if(!this.options.onSVGAPreparationProfile)return;this.svgaPreparationProfiles||(this.svgaPreparationProfiles=new WeakMap);let g=this.svgaPreparationProfiles.get(A);return g||(g=new Pe(this.svgaPreparationSequence=(this.svgaPreparationSequence||0)+1),this.svgaPreparationProfiles.set(A,g)),g}ensureSVGATimelineBookkeeping(){var A;this.svgaReportedPathKeys||(this.svgaReportedPathKeys=new WeakMap),this.svgaFrameTablePromises||(this.svgaFrameTablePromises=new WeakMap),this.svgaFrameTableResidentBytes||(this.svgaFrameTableResidentBytes=new WeakMap),this.svgaFrameTableReservedBytes||(this.svgaFrameTableReservedBytes=new WeakMap),this.releasedSVGATimelineEntities||(this.releasedSVGATimelineEntities=new WeakSet),this.svgaPreparingEntities||(this.svgaPreparingEntities=new Set),this.svgaCommandControllers||(this.svgaCommandControllers=new WeakMap),this.svgaFullClipPrewarmPromises||(this.svgaFullClipPrewarmPromises=new WeakMap),this.activeSVGATimelineEntities||(this.activeSVGATimelineEntities=new Set),this.svgaEntitySources||(this.svgaEntitySources=new WeakMap),Number.isFinite(this.activeSVGAGpuFrameTableBytes)||(this.activeSVGAGpuFrameTableBytes=0),Number.isFinite(this.reservedSVGAGpuFrameTableBytes)||(this.reservedSVGAGpuFrameTableBytes=0),Number.isFinite(this.runtimeFallbackCount)||(this.runtimeFallbackCount=0),Number.isFinite(this.runtimeObserverErrorCount)||(this.runtimeObserverErrorCount=0),(A=this.lastRuntimeDiagnostic)!=null||(this.lastRuntimeDiagnostic=null)}emitRuntimeDiagnostic(A){var g,I,B,Q,E,e;const i={...A,timestampMs:typeof performance!="undefined"?performance.now():Date.now(),backend:(I=(g=this.backend)==null?void 0:g.type)!=null?I:"webgl2",...A.giftIds?{giftIds:[...A.giftIds]}:{}};this.lastRuntimeDiagnostic=i;try{(Q=(B=this.options).onRuntimeDiagnostic)==null||Q.call(B,{...i,...i.giftIds?{giftIds:[...i.giftIds]}:{}})}catch(t){this.runtimeObserverErrorCount++,this.lastRuntimeDiagnostic={type:"observer-error",timestampMs:typeof performance!="undefined"?performance.now():Date.now(),backend:(e=(E=this.backend)==null?void 0:E.type)!=null?e:"webgl2",message:`onRuntimeDiagnostic: ${this.runtimeErrorMessage(t)}`},console.error("[GiftStage] onRuntimeDiagnostic observer failed",t)}}recordObserverError(A,g){this.runtimeObserverErrorCount++,console.error(`[GiftStage] ${A} observer failed`,g),this.emitRuntimeDiagnostic({type:"observer-error",message:`${A}: ${this.runtimeErrorMessage(g)}`})}runtimeErrorMessage(A){return A instanceof Error?A.message:String(A)}handleSVGABackendLoss(){var A,g;if(this.svgaBackendLost)return;this.svgaBackendLost=!0;for(const B of this.svgaPreparingEntities)(A=this.svgaCommandControllers.get(B))==null||A.abort();(g=this.manager)==null||g.handleBackendLoss();const I=new Set([...this.svgaPreparingEntities,...this.activeSVGATimelineEntities]);for(const B of I)this.fallbackSVGAFrameTable(B,"validation-failed")}reserveSVGAFrameTableBytes(A,g){if(this.svgaFrameTableReservedBytes.has(A))return!0;const I=this.svgaGpuFrameTableBudgetBytes();return!Number.isFinite(g)||g<0||this.activeSVGAGpuFrameTableBytes+this.reservedSVGAGpuFrameTableBytes+g>I?!1:(this.svgaFrameTableReservedBytes.set(A,g),this.reservedSVGAGpuFrameTableBytes+=g,!0)}rollbackSVGAFrameTableReservation(A){var g;const I=(g=this.svgaFrameTableReservedBytes.get(A))!=null?g:0;I<=0||(this.svgaFrameTableReservedBytes.delete(A),this.reservedSVGAGpuFrameTableBytes=Math.max(0,this.reservedSVGAGpuFrameTableBytes-I))}commitSVGAFrameTableReservation(A){var g;const I=(g=this.svgaFrameTableReservedBytes.get(A))!=null?g:0;this.rollbackSVGAFrameTableReservation(A),!(I<=0)&&(this.svgaFrameTableResidentBytes.set(A,I),this.activeSVGAGpuFrameTableBytes+=I)}buildSVGATimelineDrawPlan(A){var g,I,B;const Q=A.spriteTable,E=ae(Q.imageKeys,A.atlasRects),e=(g=A.atlasTextureHandles)!=null&&g.length?A.atlasTextureHandles:A.atlasTextureHandle?[A.atlasTextureHandle]:[],i=[];let t=null;for(let a=0;a<Q.spriteCount;a++){const o=A.atlasRects.get((I=Q.imageKeys[a])!=null?I:""),s=(B=o==null?void 0:o.textureIndex)!=null?B:0;if(!(!!o&&!!e[s])){t=null;continue}t&&t.textureIndex===s&&t.spriteBase+t.spriteCount===a?t.spriteCount++:(t={spriteBase:a,spriteCount:1,textureIndex:s},i.push(t))}return{metadata:E,runs:i,atlasPageCount:e.length}}createSVGATimelineState(A,g={}){var I,B,Q,E,e;const i=A.spriteTable,t=(I=A.atlasTextureHandles)!=null&&I.length?A.atlasTextureHandles.length:A.atlasTextureHandle?1:0;return{binding:null,renderInfo:NC({backend:(Q=(B=this.backend)==null?void 0:B.type)!=null?Q:"webgl2",spriteTable:i,hasAtlas:t>0,hasSlotTextureOverride:g.hasSlotTextureOverride,strategy:(e=(E=g.strategy)!=null?E:this.options.svgaFrameEvaluation)!=null?e:"auto",budgetBytes:this.svgaGpuFrameTableBudgetBytes(),tablePreparing:g.preparing,uploadFailed:g.uploadFailed,compatibleInstanceCount:g.compatibleInstanceCount,atlasPageCount:t}),currentTimeMs:0,frameIndex:0}}ensureSVGAFrameTable(A,g=!1){var I,B,Q;this.ensureSVGATimelineBookkeeping();const E=this.svgaFrameTablePromises.get(A);if(E)return E;const e=this.backend,i=(I=this.options.svgaFrameEvaluation)!=null?I:"auto",t=!!(e!=null&&e.createSVGAFrameTable)&&e.type!=="webgl1"&&e.supportsAtomicFrameReplay===!0&&typeof e.abortFrame=="function",a=e,o=!this.svgaBackendLost&&t&&((Q=(B=a.canCreateSVGAFrameTable)==null?void 0:B.call(a))!=null?Q:!0),s=this.createSVGATimelineState(A,{preparing:i!=="cpu"&&o,strategy:i});if(!o&&i!=="cpu"&&(s.renderInfo={...s.renderInfo,path:"cpu-reference",selectedPath:"cpu-reference",pathState:"fallback",drawBatchMode:"per-slot",drawCompatibleInstanceCount:1,fallbackReason:"device-capability",fallbackReasons:["device-capability"]}),A.svgaFrameTableState=s,i==="cpu"||!o||!e){const h=Promise.resolve();return this.svgaFrameTablePromises.set(A,h),h}this.svgaPreparingEntities.add(A);const n=new AbortController;this.svgaCommandControllers.set(A,n);const r=this.getSVGAPreparationProfile(A),c=new Promise(h=>{if(g&&typeof requestAnimationFrame=="function"){requestAnimationFrame(()=>setTimeout(h,0));return}setTimeout(h,0)}).then(async()=>{var h,l,w,D,y,R,F,d;if(this.destroyed||this.svgaBackendLost||this.releasedSVGATimelineEntities.has(A))return;let f=null;try{const u=A.spriteTable,G=this.buildSVGATimelineDrawPlan(A),S=gB(u.spriteCount,u.frameCount),M=u.clipPathIndex.some(b=>b>=0);M&&((h=this.manager)!=null&&h.prewarmSVGAClipMeshes)&&await this.ensureSVGAFullClipPrewarm(A);const N=await ei(A,u.hasAnyShapes||M,{frameBudgetMs:this.options.svgaLoadFrameBudgetMs,workerTimeSliceMs:this.options.svgaWorkerFrameBudgetMs,useWorker:this.options.svgaCommandTableInWorker!==!1,clipAnalysis:(l=this.manager)==null?void 0:l.svgaClipAnalysis,signal:n.signal,checkActive:()=>this.assertSVGAFrameTableActive(A),profile:r}),U=N.commandTable;this.assertSVGAFrameTableActive(A);const K=S+G.metadata.byteLength,k=(w=U==null?void 0:U.byteLength)!=null?w:0,m=K+k,H=this.svgaGpuFrameTableBudgetBytes();if(!Number.isFinite(m)||!G.runs.length&&!u.hasAnyShapes){const b=!G.runs.length&&!u.hasAnyShapes?"validation-failed":"table-too-large-or-budget";s.renderInfo={...s.renderInfo,path:"cpu-reference",selectedPath:"cpu-reference",pathState:"fallback",drawBatchMode:"per-slot",drawCompatibleInstanceCount:1,tableBytes:m,fallbackReason:b,fallbackReasons:[b]};return}if(!this.reserveSVGAFrameTableBytes(A,m)){s.renderInfo={...s.renderInfo,path:"cpu-reference",selectedPath:"cpu-reference",pathState:"fallback",drawBatchMode:"per-slot",drawCompatibleInstanceCount:1,tableBytes:m,fallbackReason:"table-too-large-or-budget",fallbackReasons:["table-too-large-or-budget"]};return}const v=N.packed;if(this.destroyed||this.svgaBackendLost||this.releasedSVGATimelineEntities.has(A))return;const j=()=>e.createSVGAFrameTable(v,{spriteCount:u.spriteCount,frameCount:u.frameCount,spriteMetadata:G.metadata,hybridSpriteMetadata:U==null?void 0:U.spriteMetadata,atlasPageCount:G.atlasPageCount,label:"giftstage-svga-frame-table"});if(f=r?r.measure("gpu-submit",j):j(),r&&(r.phase("gpu-submit").bytes=m),this.destroyed||this.svgaBackendLost||this.releasedSVGATimelineEntities.has(A)){(D=e.deleteSVGAFrameTable)==null||D.call(e,f),this.rollbackSVGAFrameTableReservation(A);return}const T=NC({backend:e.type,spriteTable:u,hasAtlas:G.atlasPageCount>0,strategy:"auto",budgetBytes:H,atlasPageCount:G.atlasPageCount});if(T.tableBytes=m,T.frameTableBytes=K,T.commandTableBytes=k,T.selectedPath==="gpu-hybrid"&&(A.svgaHybridCommandTable=U,await this.ensureSVGAHybridSchedulePrepared(A),this.destroyed||this.svgaBackendLost||this.releasedSVGATimelineEntities.has(A))){(y=e.deleteSVGAFrameTable)==null||y.call(e,f),this.rollbackSVGAFrameTableReservation(A);return}if(T.selectedPath!=="gpu-direct"&&T.selectedPath!=="gpu-hybrid"){(R=e.deleteSVGAFrameTable)==null||R.call(e,f),this.rollbackSVGAFrameTableReservation(A);return}this.commitSVGAFrameTableReservation(A),this.activeSVGATimelineEntities.add(A),A.svgaTimelineDrawRuns=G.runs,s.binding=f,s.renderInfo=T}catch(u){if(f&&((F=e.deleteSVGAFrameTable)==null||F.call(e,f)),this.rollbackSVGAFrameTableReservation(A),this.isLoadCanceled(u)||n.signal.aborted)return;(d=this.manager)==null||d.releaseSVGAHybridMeshes(A);const G=u instanceof $Q?"validation-failed":u instanceof RangeError?"table-too-large-or-budget":"upload-failed";s.binding=null,A.svgaHybridCommandTable=void 0,s.renderInfo={...s.renderInfo,path:"cpu-reference",selectedPath:"cpu-reference",pathState:"fallback",drawBatchMode:"per-slot",drawCompatibleInstanceCount:1,fallbackReason:G,fallbackReasons:[G]},console.warn("[GiftStage:SVGA] GPU frame table unavailable; using CPU reference",u)}}).finally(()=>{var h,l;if(this.svgaCommandControllers.delete(A),r){const w=n.signal.aborted||this.destroyed||this.svgaBackendLost||this.releasedSVGATimelineEntities.has(A)?"canceled":s.binding?"complete":"failed";try{(l=(h=this.options).onSVGAPreparationProfile)==null||l.call(h,r.finish(w))}catch(D){this.recordObserverError("onSVGAPreparationProfile",D)}}this.svgaPreparingEntities.delete(A),this.rollbackSVGAFrameTableReservation(A),this.refreshSVGATimelineSlots(A)});return this.svgaFrameTablePromises.set(A,c),c}assertSVGAFrameTableActive(A){if(this.destroyed||this.svgaBackendLost||this.releasedSVGATimelineEntities.has(A))throw new Error(lA)}refreshSVGATimelineSlots(A,g){if(!this.manager)return;const I=[];for(const B of this.manager.getSlotIds()){const Q=this.manager.getSlot(B);!Q||Q.videoEntity!==A||I.push(Q)}for(const B of I)this.assignSVGATimelineStateToSlot(B,A);this.manager.invalidate(),g==null||g();for(const B of I)this.reportSVGARenderPath(B)}assignSVGATimelineStateToSlot(A,g){var I,B,Q,E,e,i,t,a;const o=(B=(I=A.options.svgaFrameEvaluation)!=null?I:this.options.svgaFrameEvaluation)!=null?B:"auto";if(o==="cpu"||(Q=A.svgaSlotTextures)!=null&&Q.size){A.svgaFrameTableState=this.createSVGATimelineState(g,{strategy:o,hasSlotTextureOverride:!!((E=A.svgaSlotTextures)!=null&&E.size),compatibleInstanceCount:(t=(i=(e=this.manager)==null?void 0:e.countCompatibleSVGAInstances)==null?void 0:i.call(e,g))!=null?t:0}),A.svgaDrawBatchMode="per-slot",A.svgaDrawCompatibleInstanceCount=1;return}const s=g.svgaFrameTableState;A.svgaFrameTableState=s?{binding:s.binding,renderInfo:s.renderInfo,currentTimeMs:0,frameIndex:A.currentFrame}:null,((a=A.svgaFrameTableState)==null?void 0:a.renderInfo.selectedPath)==="cpu-reference"&&(A.svgaDrawBatchMode="per-slot",A.svgaDrawCompatibleInstanceCount=1)}releaseSVGAFrameTable(A){var g,I,B,Q,E,e,i,t;this.ensureSVGATimelineBookkeeping(),this.releasedSVGATimelineEntities.add(A),(g=this.svgaCommandControllers.get(A))==null||g.abort();const a=(I=A.svgaFrameTableState)==null?void 0:I.binding;a&&((Q=(B=this.backend)==null?void 0:B.deleteSVGAFrameTable)==null||Q.call(B,a)),this.rollbackSVGAFrameTableReservation(A),(E=this.manager)==null||E.releaseSVGAHybridMeshes(A),(i=(e=this.manager)==null?void 0:e.releaseSVGAPreparation)==null||i.call(e,A),this.activeSVGATimelineEntities.delete(A),this.svgaPreparingEntities.delete(A);const o=(t=this.svgaFrameTableResidentBytes.get(A))!=null?t:0;this.activeSVGAGpuFrameTableBytes=Math.max(0,this.activeSVGAGpuFrameTableBytes-o),this.svgaFrameTableResidentBytes.delete(A),A.svgaFrameTableState=null,A.svgaTimelineDrawRuns=void 0,A.svgaHybridCommandTable=void 0}fallbackSVGAFrameTable(A,g){var I,B,Q,E;this.ensureSVGATimelineBookkeeping();const e=A.svgaFrameTableState;if(!e||e.renderInfo.selectedPath==="cpu-reference"&&!e.renderInfo.fallbackReasons.includes("table-preparing"))return;const i=this.getSVGAEntityDiagnosticContext(A);e.binding&&((B=(I=this.backend)==null?void 0:I.deleteSVGAFrameTable)==null||B.call(I,e.binding)),this.rollbackSVGAFrameTableReservation(A),(Q=this.manager)==null||Q.releaseSVGAHybridMeshes(A),this.activeSVGATimelineEntities.delete(A);const t=(E=this.svgaFrameTableResidentBytes.get(A))!=null?E:0;this.activeSVGAGpuFrameTableBytes=Math.max(0,this.activeSVGAGpuFrameTableBytes-t),this.svgaFrameTableResidentBytes.delete(A),e.binding=null,e.renderInfo={...e.renderInfo,path:"cpu-reference",selectedPath:"cpu-reference",pathState:"fallback",fallbackReason:g,fallbackReasons:[g],drawBatchMode:"per-slot",drawCompatibleInstanceCount:1},A.svgaHybridCommandTable=void 0,this.refreshSVGATimelineSlots(A,()=>{this.runtimeFallbackCount++,this.emitRuntimeDiagnostic({type:"svga-runtime-fallback",source:i.source,giftIds:i.giftIds,reason:g})})}getSVGAEntityDiagnosticContext(A){var g;this.ensureSVGATimelineBookkeeping();const I=[];let B=(g=this.svgaEntitySources.get(A))!=null?g:null;if(this.manager)for(const Q of this.manager.getSlotIds()){const E=this.manager.getSlot(Q);!E||E.videoEntity!==A||(I.push(E.id),B==null&&typeof E.options.source=="string"&&(B=E.options.source))}return{source:B,giftIds:I}}deleteSVGAAtlasTextures(A){var g,I;this.releaseSVGAFrameTable(A);const B=(g=A.atlasTextureHandles)!=null&&g.length?A.atlasTextureHandles:A.atlasTextureHandle?[A.atlasTextureHandle]:[],Q=new Set;for(const E of B)Q.has(E.id)||(Q.add(E.id),(I=this.backend)==null||I.deleteTexture(E))}deleteSVGAAtlasResultTextures(A){var g,I;if(!A)return;const B=(g=A.textureHandles)!=null&&g.length?A.textureHandles:A.textureHandle?[A.textureHandle]:[],Q=new Set;for(const E of B)Q.has(E.id)||(Q.add(E.id),(I=this.backend)==null||I.deleteTexture(E))}async finishLoadSVGA(A,g,I){var B,Q,E;this.assertSlotLoadActive(A),this.ensureSVGATimelineBookkeeping(),this.svgaEntitySources.set(g,typeof A.options.source=="string"?A.options.source:null),A.videoEntity=g;const e=this.manager.prewarmSVGAClipMeshesForFrame(g,0,{frameBudgetMs:this.svgaClipFrameBudgetMs(),workerTimeSliceMs:this.options.svgaWorkerFrameBudgetMs,useWorker:this.options.svgaClipPrewarmInWorker!==!1,profile:this.getSVGAPreparationProfile(g),checkActive:()=>this.assertSlotLoadActive(A),signal:(B=A.loadAbortController)==null?void 0:B.signal}),i=A.options.svgaSlots?La(this.backend,g,A.options.svgaSlots,{frameBudgetMs:this.options.svgaLoadFrameBudgetMs,checkActive:()=>this.assertSlotLoadActive(A)}):Promise.resolve(void 0),[,t]=await Promise.all([e,i]);this.assertSlotLoadActive(A),A.svgaSlotTextures=t,A.svgaClipReadyFrame=0;const a=(E=(Q=A.options.svgaFrameEvaluation)!=null?Q:this.options.svgaFrameEvaluation)!=null?E:"auto";this.primeSVGAFirstFrame(A);const o=a==="cpu"?Promise.resolve():this.ensureSVGAFrameTable(g,!0);if(this.assignSVGATimelineStateToSlot(A,g),this.reportSVGARenderPath(A),o.catch(()=>{}),this.decodeSVGAAudioInBackground(A,I),this.options.svgaPrewarmClipMeshes!==!1){const s=this.ensureSVGAFullClipPrewarm(g,!0);s.catch(n=>{this.isLoadCanceled(n)||console.warn("[GiftStage:SVGA] background clip mesh prewarm failed",n)}),this.queueSVGAPersistentCacheWrite(g,s)}else this.queueSVGAPersistentCacheWrite(g,Promise.resolve(0))}primeSVGAFirstFrame(A){var g;if(A.state==="loading"&&(A.state="playing",this.manager.invalidate({resetClock:!0}),!A.paused&&!A.playbackScopeControlled)){this.manager.audioManager.tickFrame(A,A.currentFrame);const I=this.manager.getHandle(A.id);I&&((g=A.onFrame)==null||g.call(A,A.currentFrame,I)),A.svgaInitialFrameEmitted=!0}}async decodeSVGAAudioInBackground(A,g){var I,B,Q,E;if(g.size===0)return;const e=OA({maxBudgetMs:this.options.svgaLoadFrameBudgetMs});try{let i=0;for(const[t,a]of g){if(await this.manager.audioManager.decodeAudio(t,a),this.assertSlotLoadActive(A),A.playbackScopeControlled){const o=(B=(I=A.videoEntity)==null?void 0:I.params.fps)!=null?B:0,s=(E=(Q=A.videoEntity)==null?void 0:Q.params.frames)!=null?E:0,n=A.loopCount*s+A.currentFrame+A.accumulatedTime*o;this.manager.audioManager.syncPlaybackScopeFrame(A,n)}else A.paused||this.manager.audioManager.tickFrameForKey(A,A.currentFrame,t);i++,i<g.size&&e.shouldYield()&&(await e.yield(),this.assertSlotLoadActive(A))}}catch(i){this.isLoadCanceled(i)||console.warn("[GiftStage:SVGA] background audio decode failed",i)}}ensureSVGAFullClipPrewarm(A,g=!1){this.ensureSVGATimelineBookkeeping();const I=this.svgaFullClipPrewarmPromises.get(A);if(I)return I;const Q=(g&&typeof requestAnimationFrame=="function"?new Promise(E=>requestAnimationFrame(()=>setTimeout(E,0))):Promise.resolve()).then(()=>(this.assertSVGAFrameTableActive(A),this.manager.prewarmSVGAClipMeshes(A,{frameBudgetMs:this.svgaClipFrameBudgetMs(),workerTimeSliceMs:this.options.svgaWorkerFrameBudgetMs,useWorker:this.options.svgaClipPrewarmInWorker!==!1,profile:this.getSVGAPreparationProfile(A)}))).then(E=>{var e;return(e=this.manager)==null||e.invalidate(),E});return this.svgaFullClipPrewarmPromises.set(A,Q),Q}async ensureSVGAHybridSchedulePrepared(A){var g;if((g=A.svgaHybridCommandTable)!=null||(A.svgaHybridCommandTable=await ze(A,{frameBudgetMs:this.options.svgaLoadFrameBudgetMs,checkActive:()=>this.assertSVGAFrameTableActive(A)})),A.spriteTable.clipPathIndex.some(Q=>Q>=0)){const Q=this.ensureSVGAFullClipPrewarm(A);await Q,this.queueSVGAPersistentCacheWrite(A,Q)}const I=this.getSVGAPreparationProfile(A),B=()=>{var Q,E;(Q=this.manager)==null||Q.prewarmSVGAShapeMeshes(A),(E=this.manager)==null||E.retainSVGAHybridMeshes(A)};try{this.assertSVGAFrameTableActive(A),I?I.measure("gpu-submit",B):B()}catch(Q){throw new $Q(Q instanceof Error?Q.message:"SVGA Hybrid mesh validation failed")}}queueSVGAPersistentCacheWrite(A,g){var I,B;const Q=(I=this.svgaPersistentCacheWriters)==null?void 0:I.get(A);if(!Q||(B=this.svgaPersistentCacheWritePromises)!=null&&B.has(A))return;const E=g.then(()=>(this.assertSVGAFrameTableActive(A),Q(this.manager.snapshotSVGAClipMeshes(A)))).catch(e=>{this.isLoadCanceled(e)||console.warn("[GiftStage:SVGA] persistent cache write failed",e)});this.svgaPersistentCacheWritePromises.set(A,E)}svgaAtlasMaxSize(){var A,g,I;const B=(A=this.options.svgaAtlasMaxSize)!=null?A:_A.SVGA_ATLAS_MAX_SIZE,Q=(I=(g=this.backend)==null?void 0:g.maxTextureSize)!=null?I:B;return Math.max(64,Math.min(Q,B))}async buildSVGAAtlasIfNeeded(A,g,I=!0,B){if(A.size===0)return null;if(this.destroyed||!this.backend)throw new Error(lA);return Ae(A,this.backend,this.svgaAtlasMaxSize(),_A.SVGA_ATLAS_PADDING,{captureEncodedPng:g,maxPages:this.svgaAtlasMaxPages(),mainThreadFrameBudgetMs:this.svgaAtlasFrameBudgetMs(),workerTimeSliceMs:this.options.svgaWorkerFrameBudgetMs,useWorker:I,signal:B})}svgaAtlasMaxPages(){var A;return Math.max(1,Math.floor((A=this.options.svgaAtlasMaxPages)!=null?A:4))}shouldTryWebCodecs(A){return(A==null?void 0:A.mute)!==!1&&this.options.preferWebCodecs===!0&&typeof VideoDecoder!="undefined"}logPlaybackBackend(A,g,I){const B=g==="webcodecs"?"WebCodecs (mp4box decode)":"HTMLVideoElement",Q=I?` — ${I}`:"";console.info(`[GiftStage] ${A.type} [${A.id}]: ${B}${Q}`)}async tryWebCodecsPlayback(A,g){if(!this.shouldTryWebCodecs())return null;try{const I=typeof A=="string"?await QI(A,g):A;if(g!=null&&g.aborted)throw new Error(lA);return await CI.create(I,g,{useWorker:this.options.webCodecsDecodeInWorker!==!1,maxDecodedFrames:this.options.webCodecsMaxDecodedFrames,decodeAheadFrames:this.options.webCodecsDecodeAheadFrames})}catch(I){if(this.isLoadCanceled(I)||g!=null&&g.aborted)throw new Error(lA);const B=I instanceof Error?I.message:String(I);return console.warn(`[GiftStage] WebCodecs path failed, falling back to <video>: ${B}`),null}}async acquireWebCodecsPlayback(A,g){if(!this.shouldTryWebCodecs(A))return null;if(this.options.shareIdenticalVideoPlayback!==!1&&A.loop===0&&A.startPaused!==!0&&A.playbackScopeControlled!==!0&&typeof A.source=="string"){const B=this.normalizeSharedVideoSourceKey(A.source);if(B)return this.acquireSharedWebCodecsPlayback(B,g)}const I=await this.tryWebCodecsPlayback(A.source,g);return I?{playback:I,sharedState:null,release:Ng(()=>I.destroy())}:null}async acquireSharedWebCodecsPlayback(A,g){var I;const B=performance.now(),Q=Math.max(0,(I=this.options.sharedVideoPlaybackWindowMs)!=null?I:_A.DEFAULT_SHARED_VIDEO_PLAYBACK_WINDOW_MS),E=this.sharedWebCodecsPlaybacks.get(A);if(E){for(const t of E)if(!(t.refs<=0||B-t.startedAtMs>Q))return t.refs++,{playback:t.playback,sharedState:t,release:Ng(()=>this.releaseSharedWebCodecsPlayback(t))}}let e=this.pendingSharedWebCodecsPlaybacks.get(A);e||(e=this.createPendingSharedWebCodecsPlayback(A),this.pendingSharedWebCodecsPlaybacks.set(A,e));const i=await this.waitForPendingSharedWebCodecsPlayback(e,g);return i?(i.refs++,{playback:i.playback,sharedState:i,release:Ng(()=>this.releaseSharedWebCodecsPlayback(i))}):null}createPendingSharedWebCodecsPlayback(A){const g=new AbortController,I={cacheKey:A,controller:g,consumers:0,settled:!1,promise:null};return I.promise=this.tryWebCodecsPlayback(A,g.signal).then(B=>{if(I.settled=!0,this.pendingSharedWebCodecsPlaybacks.get(A)===I&&this.pendingSharedWebCodecsPlaybacks.delete(A),!B)return null;if(I.consumers===0||this.destroyed)return B.destroy(),null;const Q={id:this.nextSharedWebCodecsPlaybackId++,cacheKey:A,refs:0,playback:B,startedAtMs:performance.now()};let E=this.sharedWebCodecsPlaybacks.get(A);return E||(E=new Set,this.sharedWebCodecsPlaybacks.set(A,E)),E.add(Q),Q},B=>{throw I.settled=!0,this.pendingSharedWebCodecsPlaybacks.get(A)===I&&this.pendingSharedWebCodecsPlaybacks.delete(A),B}),I}waitForPendingSharedWebCodecsPlayback(A,g){return A.consumers++,new Promise((I,B)=>{let Q=!1;const E=i=>{Q||(Q=!0,g==null||g.removeEventListener("abort",e),A.consumers=Math.max(0,A.consumers-1),A.consumers===0&&!A.settled&&A.controller.abort(),i())},e=()=>{E(()=>B(new Error(lA)))};if(g!=null&&g.aborted){e();return}g==null||g.addEventListener("abort",e,{once:!0}),A.promise.then(i=>E(()=>I(i)),i=>E(()=>B(i)))})}releaseSharedWebCodecsPlayback(A){if(A.refs=Math.max(0,A.refs-1),A.refs>0)return;A.playback.destroy();const g=this.sharedWebCodecsPlaybacks.get(A.cacheKey);g==null||g.delete(A),(g==null?void 0:g.size)===0&&this.sharedWebCodecsPlaybacks.delete(A.cacheKey)}attachWebCodecsPlayback(A,g){var I,B,Q;A.webcodecsPlayback=g.playback,A.webcodecsSharedState=g.sharedState,A.releaseWebCodecsPlayback=g.release;const E=Math.max(g.playback.duration,1e-9);return A.wcPlaybackTime=g.sharedState?Math.max(0,(performance.now()-g.sharedState.startedAtMs)/1e3)%E:0,A.wcSharedTimeOffset=0,(B=(I=g.playback).ensureDecodedThrough)==null||B.call(I,A.wcPlaybackTime),(Q=g.playback.getFrameForTime(A.wcPlaybackTime))!=null?Q:g.playback.getFrameForTime(0)}releaseAttachedWebCodecsPlayback(A){var g;A.releaseWebCodecsPlayback?A.releaseWebCodecsPlayback():(g=A.webcodecsPlayback)==null||g.destroy(),A.releaseWebCodecsPlayback=null,A.webcodecsSharedState=null,A.webcodecsPlayback=null}acquireSharedWebCodecsSurface(A,g,I,B,Q,E,e){const i=A.webcodecsSharedState;if(!i)return null;const t=e?this.options.webCodecsVideoAtlas:void 0;if(t&&t.width>0&&t.height>0){const r=`${i.id}:atlas:${t.width}x${t.height}:${Q}x${E}`,c=this.retainSharedWebCodecsSurface(r);if(c)return c;const h=this.nextSharedWebCodecsSurfaceId++,l=`wc-shared-surface:${h}`,w=this.manager.tryAllocateWebCodecsAtlas(l,Q,E,t);if(w){try{this.backend.updateTextureRegion(w.handle,g,w.rect.x,w.rect.y,w.rect.w,w.rect.h)}catch(D){throw this.manager.releaseWebCodecsAtlasAllocation(l),D}return this.createSharedWebCodecsSurface(r,h,w.handle,g,w.rect,l)}}const a=`${i.id}:full:${I}x${B}`,o=this.retainSharedWebCodecsSurface(a);if(o)return o;const s=this.nextSharedWebCodecsSurfaceId++,n=this.backend.createTexture(g,{width:I,height:B,filter:"linear"});return this.createSharedWebCodecsSurface(a,s,n,g,void 0,null)}retainSharedWebCodecsSurface(A){const g=this.sharedWebCodecsSurfaces.get(A);return g?(g.refs++,{surface:g.surface,release:Ng(()=>this.releaseSharedWebCodecsSurface(g))}):null}createSharedWebCodecsSurface(A,g,I,B,Q,E){const e={key:A,refs:1,atlasAllocationId:E,surface:{id:g,texture:I,atlasRect:Q,lastUploadedFrame:B}};return this.sharedWebCodecsSurfaces.set(A,e),{surface:e.surface,release:Ng(()=>this.releaseSharedWebCodecsSurface(e))}}releaseSharedWebCodecsSurface(A){var g,I;A.refs=Math.max(0,A.refs-1),!(A.refs>0)&&(this.sharedWebCodecsSurfaces.delete(A.key),A.atlasAllocationId?(g=this.manager)==null||g.releaseWebCodecsAtlasAllocation(A.atlasAllocationId):(I=this.backend)==null||I.deleteTexture(A.surface.texture),A.surface.lastUploadedFrame=null)}attachSharedWebCodecsSurface(A,g){A.webcodecsSurface=g.surface,A.releaseWebCodecsSurface=g.release,A.videoTextureHandle=g.surface.texture,A.wcAtlasRect=g.surface.atlasRect}async loadVAP(A,g){var I,B,Q,E;if(!g.config)throw new Error("VAP requires config");const e=g.config,i=(I=A.loadAbortController)==null?void 0:I.signal,t=(async()=>{const D=await FC(e);this.assertSlotLoadActive(A);const y=await va(D,g.vapSlots);return this.assertSlotLoadActive(A),{config:D,vapResources:y}})();console.info("[GiftStage:WC] loadVAP: try WebCodecs / video…");const a=this.acquireWebCodecsPlayback(g,i),[o,s]=await Promise.allSettled([t,a]);if(!this.isSlotLoadActive(A)||o.status==="rejected"||s.status==="rejected")throw s.status==="fulfilled"&&((B=s.value)==null||B.release()),o.status==="rejected"?o.reason:s.status==="rejected"?s.reason:new Error(lA);const{config:n,vapResources:r}=o.value,c=s.value;if(A.vapConfig=n,r.size>0){const D=BI(n.info),y=Ta(n);let R=null;if(this.backend.type==="webgpu"||this.backend.type==="webgl2")try{R=this.createVAPMixResourceTextures(r)}catch(F){console.warn("[GiftStage] VAP main-context mixed textures failed; falling back to compositor",F)}if(R)A.vapMixState={mode:"direct",width:D.w,height:D.h,resourceTextures:R,frameMap:y,lastFrameIndex:-1,lastSourceRef:null};else{let F=null,d=null;try{F=new en(n,y,r,D.w,D.h,g.videoRGBAlphaMode!=="straight")}catch(u){console.warn("[GiftStage] VAP mixed rendering fell back to CPU compositor",u),d=Wa(D.w,D.h)}const f=this.backend.createEmptyTexture(D.w,D.h,{filter:"linear"});A.vapMixState={mode:"composited",texture:f,width:D.w,height:D.h,composer:F,frameMap:y,resources:F?void 0:r,lastFrameIndex:-1,lastSourceRef:null,...d!=null?d:{}},A.videoTextureHandle=f}}if(c){const D=this.attachWebCodecsPlayback(A,c);if(!D)throw this.releaseAttachedWebCodecsPlayback(A),new Error("WebCodecs: missing first frame");if(!A.vapMixState||A.vapMixState.mode==="direct"){const R=D.displayWidth||D.codedWidth,F=D.displayHeight||D.codedHeight,d=!A.vapMixState,{w:f,h:u}=ZQ(A,R,F,"vap",n),G=this.acquireSharedWebCodecsSurface(A,D,R,F,f,u,d);if(G)this.attachSharedWebCodecsSurface(A,G);else{const S=d?this.manager.tryAllocateWebCodecsAtlas(A.id,f,u,this.options.webCodecsVideoAtlas):null;S?(A.videoTextureHandle=S.handle,A.wcAtlasRect=S.rect,this.backend.updateTextureRegion(S.handle,D,S.rect.x,S.rect.y,f,u)):A.videoTextureHandle=this.backend.createTexture(D,{width:R,height:F,filter:"linear"})}}A.videoElement=null;const y=A.videoTextureHandle;console.info("[GiftStage:WC] VAP texture",{giftId:A.id,atlas:!!A.wcAtlasRect&&!A.vapMixState,mixed:!!A.vapMixState,tex:`${y.width}x${y.height}`,frame0:`${D.displayWidth}x${D.displayHeight}`,atlasCell:A.wcAtlasRect?`${A.wcAtlasRect.w}x${A.wcAtlasRect.h}`:void 0}),this.logPlaybackBackend(A,"webcodecs");return}const l=await this.tryAcquireSharedHtmlVideo(A,g);if(!this.isSlotLoadActive(A))throw l==null||l.release(),new Error(lA);if(l)A.videoElement=l.video,A.releaseSharedVideoPlayback=l.release;else{const D=await this.acquireVideoPlaybackSource(g.source);if(!this.isSlotLoadActive(A))throw(Q=D.release)==null||Q.call(D),new Error(lA);A.releaseMediaSource=(E=D.release)!=null?E:null;const y=this.createVideo(D.src,g.loop===0,g.mute!==!1);A.videoElement=y}const w=A.videoElement;if(l){await l.ready,this.assertSlotLoadActive(A);const D=this.acquireSharedVideoTexture(l.cacheKey,w);A.videoTextureHandle=D.texture,A.releaseSharedVideoTexture=D.release}else await this.waitVideoReady(w),this.assertSlotLoadActive(A),(!A.vapMixState||A.vapMixState.mode==="direct")&&(A.videoTextureHandle=this.backend.createTexture(w,{width:w.videoWidth,height:w.videoHeight,filter:"linear"}));!A.releaseSharedVideoPlayback&&!A.playbackScopeControlled&&this.bindVideoLoopOnEnded(A,w),this.logPlaybackBackend(A,"video",g.mute===!1?"WebCodecs disabled for audible playback":this.shouldTryWebCodecs(g)?"fallback after WebCodecs unavailable or failed":"preferWebCodecs off or no VideoDecoder")}createVAPMixResourceTextures(A){const g=new Map;try{for(const[I,B]of A)g.set(I,this.backend.createTexture(B.source,{width:B.width,height:B.height,filter:"linear",premultiplyAlpha:!1}));return g}catch(I){for(const B of g.values())this.backend.deleteTexture(B);throw I}}async loadAlphaVideo(A,g){var I,B,Q;const E=(I=A.loadAbortController)==null?void 0:I.signal;console.info("[GiftStage:WC] loadAlphaVideo: try WebCodecs / video…");const e=await this.acquireWebCodecsPlayback(g,E);if(!this.isSlotLoadActive(A))throw e==null||e.release(),new Error(lA);if(e){const a=this.attachWebCodecsPlayback(A,e);if(!a)throw this.releaseAttachedWebCodecsPlayback(A),new Error("WebCodecs: missing first frame");const o=a.displayWidth||a.codedWidth,s=a.displayHeight||a.codedHeight,{w:n,h:r}=ZQ(A,o,s,"alphaVideo",void 0),c=this.acquireSharedWebCodecsSurface(A,a,o,s,n,r,!0);if(c)this.attachSharedWebCodecsSurface(A,c);else{const l=this.manager.tryAllocateWebCodecsAtlas(A.id,n,r,this.options.webCodecsVideoAtlas);l?(A.videoTextureHandle=l.handle,A.wcAtlasRect=l.rect,this.backend.updateTextureRegion(l.handle,a,l.rect.x,l.rect.y,n,r)):A.videoTextureHandle=this.backend.createTexture(a,{width:o,height:s,filter:"linear"})}A.videoElement=null;const h=A.videoTextureHandle;console.info("[GiftStage:WC] alphaVideo texture",{giftId:A.id,atlas:!!A.wcAtlasRect,tex:`${h.width}x${h.height}`,frame0:`${a.displayWidth}x${a.displayHeight}`,atlasCell:A.wcAtlasRect?`${A.wcAtlasRect.w}x${A.wcAtlasRect.h}`:void 0}),this.logPlaybackBackend(A,"webcodecs");return}const i=await this.tryAcquireSharedHtmlVideo(A,g);if(!this.isSlotLoadActive(A))throw i==null||i.release(),new Error(lA);if(i)A.videoElement=i.video,A.releaseSharedVideoPlayback=i.release;else{const a=await this.acquireVideoPlaybackSource(g.source);if(!this.isSlotLoadActive(A))throw(B=a.release)==null||B.call(a),new Error(lA);A.releaseMediaSource=(Q=a.release)!=null?Q:null;const o=this.createVideo(a.src,g.loop===0,g.mute!==!1);A.videoElement=o}const t=A.videoElement;if(i){await i.ready,this.assertSlotLoadActive(A);const a=this.acquireSharedVideoTexture(i.cacheKey,t);A.videoTextureHandle=a.texture,A.releaseSharedVideoTexture=a.release}else await this.waitVideoReady(t),this.assertSlotLoadActive(A),A.videoTextureHandle=this.backend.createTexture(t,{width:t.videoWidth,height:t.videoHeight,filter:"linear"});!A.releaseSharedVideoPlayback&&!A.playbackScopeControlled&&this.bindVideoLoopOnEnded(A,t),this.logPlaybackBackend(A,"video",g.mute===!1?"WebCodecs disabled for audible playback":this.shouldTryWebCodecs(g)?"fallback after WebCodecs unavailable or failed":"preferWebCodecs off or no VideoDecoder")}bindVideoLoopOnEnded(A,g){g.addEventListener("ended",()=>{var I;if(A.state!=="playing")return;const B=(I=A.options.loop)!=null?I:1;if(B===0){g.currentTime=0,g.play();return}if(A.loopCount++,A.loopCount>=B){this.completeHtmlVideoPlayback(A);return}g.currentTime=0,g.play().catch(()=>{})}),this.armHtmlVideoPlaybackWatchdog(A,g)}clearHtmlVideoPlaybackWatchdog(A){A.videoPlaybackWatchdogTimer!=null&&(clearTimeout(A.videoPlaybackWatchdogTimer),A.videoPlaybackWatchdogTimer=null)}clearAllHtmlVideoPlaybackWatchdogs(){if(this.manager)for(const A of this.manager.getSlotIds()){const g=this.manager.getSlot(A);g&&this.clearHtmlVideoPlaybackWatchdog(g)}}rearmHtmlVideoPlaybackWatchdogs(){if(!(!this.manager||this.playbackPaused||document.hidden))for(const A of this.manager.getSlotIds()){const g=this.manager.getSlot(A);g!=null&&g.videoElement&&!g.releaseSharedVideoPlayback&&!g.playbackScopeControlled&&!g.paused&&g.state==="playing"&&this.armHtmlVideoPlaybackWatchdog(g,g.videoElement)}}completeHtmlVideoPlayback(A){var g,I;if(A.state!=="playing"||A.videoPlaybackCompletionStarted)return;A.videoPlaybackCompletionStarted=!0,this.clearHtmlVideoPlaybackWatchdog(A);let B;B={id:A.id,type:A.type,pause:()=>{},resume:()=>{},destroy:()=>this.removeGift(A.id),getRenderInfo:()=>this.getGiftRenderInfo(A),animate:Q=>this.createGiftAnimationChain(A,B,Q)};try{(g=A.onComplete)==null||g.call(A,B)}finally{A.state=A.options.clearsAfterStop===!1?"stopped":"finished",(I=this.manager)==null||I.invalidate()}}armHtmlVideoPlaybackWatchdog(A,g){var I;if(this.clearHtmlVideoPlaybackWatchdog(A),A.playbackScopeControlled||A.paused||this.playbackPaused||document.hidden)return;const B=(I=A.options.loop)!=null?I:1,Q=g.duration;if(B<=0||!Number.isFinite(Q)||Q<=0)return;const E=Math.max(1,Math.ceil(B)),e=Q*E*1e3;if(!Number.isFinite(e))return;const i=Math.min(_A.HTML_VIDEO_WATCHDOG_MAX_GRACE_MS,Math.max(_A.HTML_VIDEO_WATCHDOG_MIN_GRACE_MS,e*_A.HTML_VIDEO_WATCHDOG_GRACE_RATIO)),t=performance.now()+e+i,a=()=>{if(A.state==="finished"||A.state==="stopped"){A.videoPlaybackWatchdogTimer=null;return}const o=t-performance.now();if(o>0){A.videoPlaybackWatchdogTimer=setTimeout(a,Math.min(o,_A.MAX_TIMER_DELAY_MS));return}A.videoPlaybackWatchdogTimer=null,A.state==="playing"&&(console.warn("[GiftStage] HTMLVideo playback timed out; completing gift",{giftId:A.id,type:A.type,duration:Q,loop:E}),this.completeHtmlVideoPlayback(A))};A.videoPlaybackWatchdogTimer=setTimeout(a,Math.min(e+i,_A.MAX_TIMER_DELAY_MS))}createVideo(A,g,I=!0){const B=document.createElement("video");return B.crossOrigin="anonymous",B.autoplay=!0,B.preload="auto",B.muted=I,B.defaultMuted=I,B.playsInline=!0,B.setAttribute("playsinline",""),B.setAttribute("webkit-playsinline","true"),B.loop=g,B.style.cssText="display:none;",B.src=A,document.body.appendChild(B),B.load(),B}waitVideoMetadata(A){return new Promise((g,I)=>{let B=!1,Q=null;const E=()=>{A.removeEventListener("loadedmetadata",i),A.removeEventListener("error",t),Q!=null&&clearTimeout(Q),Q=null},e=a=>{B||(B=!0,E(),a())},i=()=>{e(g)},t=()=>{e(()=>I(new Error("Video metadata load failed")))};A.addEventListener("loadedmetadata",i),A.addEventListener("error",t),Q=setTimeout(()=>e(()=>I(new Error("Video metadata load timed out"))),_A.HTML_VIDEO_READY_TIMEOUT_MS),A.readyState>=HTMLMediaElement.HAVE_METADATA&&e(g)})}async probeVideoNaturalSize(A,g="video"){var I;const B=await this.acquireVideoPlaybackSource(A),Q=document.createElement("video");Q.crossOrigin="anonymous",Q.preload="metadata",Q.muted=!0,Q.playsInline=!0,Q.setAttribute("playsinline",""),Q.setAttribute("webkit-playsinline","true"),Q.style.cssText="display:none;",Q.src=B.src,document.body.appendChild(Q),Q.load();try{return await this.waitVideoMetadata(Q),g==="alphaVideo"?ln(Q.videoWidth,Q.videoHeight):{width:Q.videoWidth,height:Q.videoHeight}}finally{try{Q.pause(),Q.removeAttribute("src"),Q.load(),Q.remove()}catch(E){}(I=B.release)==null||I.call(B)}}async acquireVideoPlaybackSource(A){if(typeof A!="string"){const B=URL.createObjectURL(new Blob([A]));return{src:B,release:()=>URL.revokeObjectURL(B)}}const g=this.normalizeSharedVideoSourceKey(A);if(!g)return{src:A};let I=this.sharedVideoSources.get(g);I||(I={refs:0,objectUrl:null,promise:this.fetchSharedVideoSource(g)},this.sharedVideoSources.set(g,I)),I.refs++;try{return{src:await I.promise,release:()=>this.releaseSharedVideoSource(g)}}catch(B){return this.releaseSharedVideoSource(g),console.warn("[GiftStage] shared video prefetch failed, using original url",B),{src:A}}}normalizeSharedVideoSourceKey(A){try{const g=new URL(A,window.location.href);return g.protocol==="blob:"||g.protocol==="data:"?null:g.href}catch(g){return null}}async fetchSharedVideoSource(A){const g=new Blob([await QI(A)]),I=this.sharedVideoSources.get(A),B=URL.createObjectURL(g);return I&&(I.objectUrl=B,I.refs===0&&(URL.revokeObjectURL(B),this.sharedVideoSources.delete(A))),B}releaseSharedVideoSource(A){const g=this.sharedVideoSources.get(A);g&&(g.refs=Math.max(0,g.refs-1),g.refs===0&&g.objectUrl&&(URL.revokeObjectURL(g.objectUrl),this.sharedVideoSources.delete(A)))}async tryAcquireSharedHtmlVideo(A,g){var I,B;if(this.options.shareIdenticalVideoPlayback===!1||g.startPaused===!0||g.playbackScopeControlled===!0||g.loop!==0||typeof g.source!="string"||A.type==="vap"&&A.vapMixState)return null;const Q=this.normalizeSharedVideoSourceKey(g.source);if(!Q)return null;const E=`${Q}::muted=${g.mute!==!1?1:0}`,e=(I=this.options.sharedVideoPlaybackWindowMs)!=null?I:_A.DEFAULT_SHARED_VIDEO_PLAYBACK_WINDOW_MS,i=Math.max(0,e)/1e3,t=this.sharedHtmlVideos.get(E);if(t)return t.video.currentTime>i?null:(t.refs++,{cacheKey:E,video:t.video,ready:t.ready,release:()=>this.releaseSharedHtmlVideo(E)});let a=this.pendingSharedHtmlVideos.get(E);a||(a=(async()=>{var n;const r=await this.acquireVideoPlaybackSource(g.source),c=this.createVideo(r.src,!0,g.mute!==!1),h=this.waitVideoReady(c);return{video:c,ready:h,releaseSource:(n=r.release)!=null?n:null}})(),this.pendingSharedHtmlVideos.set(E,a));let o;try{o=await a}catch(n){throw this.pendingSharedHtmlVideos.delete(E),n}let s=this.sharedHtmlVideos.get(E);return s?s.refs++:(s={refs:1,video:o.video,ready:o.ready,releaseSource:(B=o.releaseSource)!=null?B:null},this.sharedHtmlVideos.set(E,s)),this.pendingSharedHtmlVideos.delete(E),{cacheKey:E,video:s.video,ready:s.ready,release:()=>this.releaseSharedHtmlVideo(E)}}acquireSharedVideoTexture(A,g){const I=this.sharedVideoTextures.get(A);if(I)return I.refs++,{texture:I.texture,release:()=>this.releaseSharedVideoTexture(A)};const B=this.backend.createTexture(g,{width:g.videoWidth,height:g.videoHeight,filter:"linear"});return this.sharedVideoTextures.set(A,{refs:1,texture:B}),{texture:B,release:()=>this.releaseSharedVideoTexture(A)}}async acquireImageTexture(A,g){if(typeof A!="string"){const E=await aC(A,g);try{if(J(g,"Image loading aborted"),this.destroyed||!this.backend)throw new Error("GiftStage is destroyed");const e=this.backend.createTexture(E.source,{width:E.width,height:E.height,filter:"linear",premultiplyAlpha:!0,sourcePremultiplied:E.sourcePremultiplied});return{texture:e,width:E.width,height:E.height,release:Ng(()=>{var i;return(i=this.backend)==null?void 0:i.deleteTexture(e)})}}finally{E.dispose()}}const I=this.sharedImageTextures.get(A);if(I)return I.refs++,{texture:I.texture,width:I.width,height:I.height,release:Ng(()=>this.releaseSharedImageTexture(A))};let B=this.pendingSharedImageTextures.get(A);if(!B){B=(async()=>{const e=await aC(A);try{if(this.destroyed||!this.backend)throw new Error("GiftStage is destroyed");const t={refs:0,texture:this.backend.createTexture(e.source,{width:e.width,height:e.height,filter:"linear",premultiplyAlpha:!0,sourcePremultiplied:e.sourcePremultiplied}),width:e.width,height:e.height};return this.sharedImageTextures.set(A,t),t}finally{e.dispose()}})(),this.pendingSharedImageTextures.set(A,B);const E=()=>{this.pendingSharedImageTextures.get(A)===B&&this.pendingSharedImageTextures.delete(A),queueMicrotask(()=>{var e;const i=this.sharedImageTextures.get(A);(i==null?void 0:i.refs)===0&&((e=this.backend)==null||e.deleteTexture(i.texture),this.sharedImageTextures.delete(A))})};B.then(E,E)}const Q=await B;return J(g,"Image loading aborted"),Q.refs++,{texture:Q.texture,width:Q.width,height:Q.height,release:Ng(()=>this.releaseSharedImageTexture(A))}}releaseSharedImageTexture(A){var g;const I=this.sharedImageTextures.get(A);I&&(I.refs=Math.max(0,I.refs-1),!(I.refs>0)&&((g=this.backend)==null||g.deleteTexture(I.texture),this.sharedImageTextures.delete(A)))}releaseSharedVideoTexture(A){var g;const I=this.sharedVideoTextures.get(A);I&&(I.refs=Math.max(0,I.refs-1),!(I.refs>0)&&((g=this.backend)==null||g.deleteTexture(I.texture),this.sharedVideoTextures.delete(A)))}releaseSharedHtmlVideo(A){var g;const I=this.sharedHtmlVideos.get(A);if(I&&(I.refs=Math.max(0,I.refs-1),!(I.refs>0))){try{I.video.pause(),I.video.removeAttribute("src"),I.video.load(),I.video.remove()}catch(B){}(g=I.releaseSource)==null||g.call(I),this.sharedHtmlVideos.delete(A)}}waitForFirstVideoFrame(A){return new Promise(g=>{typeof A.requestVideoFrameCallback=="function"?A.requestVideoFrameCallback(()=>g()):requestAnimationFrame(()=>g())})}waitVideoReady(A){return new Promise((g,I)=>{let B=!1,Q=!1,E=null;const e=()=>{A.removeEventListener("canplay",a),A.removeEventListener("error",o),E!=null&&clearTimeout(E),E=null},i=s=>{B||(B=!0,e(),s())},t=async()=>{if(!(Q||B)){Q=!0;try{try{await A.play()}catch(s){if(A.muted)throw s;console.warn("[GiftStage] audible HTMLVideo autoplay was blocked; retrying muted",s),A.muted=!0,A.defaultMuted=!0,await A.play()}await this.waitForFirstVideoFrame(A),i(g)}catch(s){i(()=>I(s))}}},a=()=>{t()},o=()=>{i(()=>I(new Error("Video load failed")))};A.addEventListener("canplay",a),A.addEventListener("error",o),E=setTimeout(()=>i(()=>I(new Error("Video ready timed out"))),_A.HTML_VIDEO_READY_TIMEOUT_MS),A.readyState>=HTMLMediaElement.HAVE_FUTURE_DATA&&t()})}get capabilities(){var A,g,I,B,Q,E,e;const i=(g=(A=this.backend)==null?void 0:A.type)!=null?g:"webgl2",t=this.backend,a=i!=="webgl1"&&!!(t!=null&&t.createSVGAFrameTable)&&((B=(I=t.canCreateSVGAFrameTable)==null?void 0:I.call(t))!=null?B:!0),o=a?i==="webgpu"?"storage-buffer":"float-texture":"unavailable",s=this.svgaGpuFrameTableBudgetBytes();return{backend:i,sharedTimeline:!0,scopedPlayback:!0,assetLeases:!0,motionTrack:{mode:i==="webgpu"?"gpu-table":"cpu-reference",gpuMediaTypes:i==="webgpu"?["svga"]:[],cpuReferenceFallback:!0,nonUniformScale:!0,sampleFloats:Dg},particles:{backend:i==="webgpu"||i==="webgl2"?i:"unavailable",canvas2D:!1,formats:i==="webgpu"||i==="webgl2"?["ballistic-v1","sprite-v2"]:[],...i==="webgpu"||i==="webgl2"?{spriteAtlas:{source:"rgba8-premultiplied",maxSize:(E=(Q=this.backend)==null?void 0:Q.maxTextureSize)!=null?E:4096},compositeLayers:["behind-media","above-media"],batchEnvelope:!0,atomicBatchGroup:!0,maxInstancesPerBatch:8192}:{}},svgaFrameTimeline:{transport:o,direct:a,hybrid:a,maxTableBytes:s,supportedPaths:a?["gpu-direct","gpu-hybrid","cpu-reference"]:["cpu-reference"],defaultEvaluation:(e=this.options.svgaFrameEvaluation)!=null?e:"auto",gpuDirect:a,gpuHybrid:a,cpuReference:!0,tableBudgetBytes:s}}}async preload(A,g,I){var B,Q;if(await this.ready,J(I,"GiftStage preload canceled"),this.destroyed)throw new Error("GiftStage is destroyed");let E=!1;if(A==="svga"){if(typeof g!="string")throw new Error("SVGA preload lease currently requires a URL source");const i=await this.acquireSharedSVGAEntity(g,I),{entity:t}=i;await this.ensureSVGAFrameTable(t),J(I,"GiftStage preload canceled");const a=t.spriteTable;return{metadata:{type:A,width:t.params.viewBoxWidth,height:t.params.viewBoxHeight,fps:t.params.fps,frameCount:t.params.frames,spriteCount:a.spriteCount,atlasPageCount:(Q=(B=t.atlasTextureHandles)==null?void 0:B.length)!=null?Q:t.atlasTextureHandle?1:0,hasShapes:a.hasAnyShapes,hasClipPaths:a.clipPathIndex.some(o=>o>=0),allFramesInsideViewBox:a.allFramesInsideViewBox===!0},get released(){return E},release:()=>{E||(E=!0,i.release())}}}const e=await this.acquireImageTexture(g,I);return{metadata:{type:A,width:e.width,height:e.height},get released(){return E},release:()=>{E||(E=!0,e.release())}}}async createParticleAtlas(A){if(await this.ready,this.destroyed)throw new Error("GiftStage is destroyed");if(!this.manager)throw new Error("GiftStage is not ready");return this.manager.createParticleAtlas(A)}createPlaybackScope(A){if(this.destroyed)throw new Error("GiftStage is destroyed");const g=this,I={get backendType(){return g.backendType},get backend(){return g.backend},getSlot:E=>{var e;return(e=this.manager)==null?void 0:e.getSlot(E)},addGift:E=>this.addGift(E),removeGift:E=>this.removeGift(E),applyMediaTime:(E,e,i,t)=>{var a;(a=this.manager)==null||a.applyPlaybackScopeMediaTime(E,e,i,t)},invalidate:E=>{var e;return(e=this.manager)==null?void 0:e.invalidate({resetClock:E})},registerFrameController:E=>{if(!this.manager)throw new Error("GiftStage is not ready");return this.manager.registerFrameController(E)},createParticleBatch:E=>{if(!this.manager)throw new Error("GiftStage is not ready");return this.manager.createParticleBatch(E)},createParticleBatchGroup:E=>{if(!this.manager)throw new Error("GiftStage is not ready");return this.manager.createParticleBatchGroup(E)}},B=new oe(I,A);this.playbackScopes.add(B);const Q=B.destroy.bind(B);return B.destroy=()=>{Q(),this.playbackScopes.delete(B)},B}async mount(A){if(await this.ready,this.destroyed)throw new Error("GiftStage is destroyed");const g=new Set,I=new Set,B={stage:this,capabilities:this.capabilities,getViewport:()=>this.currentCanvasCssSize(),preload:(i,t,a)=>this.preload(i,t,a),createParticleAtlas:async i=>{const t=await this.createParticleAtlas(i);I.add(t);const a=t.destroy.bind(t);return t.destroy=()=>{try{a()}finally{I.delete(t)}},t},createPlaybackScope:i=>{const t=this.createPlaybackScope(i);g.add(t);const a=t.destroy.bind(t);return t.destroy=()=>{try{a()}finally{g.delete(t)}},t}},Q=await A.setup(B);let E=!1;const e={name:A.name,api:Q,get destroyed(){return E},destroy:()=>{var i;if(!E){E=!0;for(const t of g)t.destroy();g.clear(),(i=Q==null?void 0:Q.destroy)==null||i.call(Q);for(const t of I)t.destroy();I.clear(),this.mountedPlugins.delete(e)}}};return this.mountedPlugins.add(e),e}removeGift(A){var g;this.resolveGiftPlaybackWaiters(A),this.completedPlaybackSlots.delete(A),this.playbackCompleteWaiters.delete(A),(g=this.manager)==null||g.removeSlot(A)}removeAll(){if(this.manager)for(const A of this.manager.getSlotIds())this.manager.removeSlot(A)}pause(){var A;this.playbackPaused=!0,this.clearAllHtmlVideoPlaybackWatchdogs(),(A=this.manager)==null||A.pause()}resume(){var A;this.playbackPaused=!1,(A=this.manager)==null||A.resume(),this.rearmHtmlVideoPlaybackWatchdogs()}get activeCount(){var A,g;return(g=(A=this.manager)==null?void 0:A.activeCount)!=null?g:0}get backendType(){var A,g;return(g=(A=this.backend)==null?void 0:A.type)!=null?g:"webgl2"}getDiagnostics(){var A,g,I,B,Q,E;this.ensureSVGATimelineBookkeeping();const e=(I=(g=(A=this.manager)==null?void 0:A.getRuntimeDiagnosticsSnapshot)==null?void 0:g.call(A))!=null?I:{frameAbortCount:0,replayFailureCount:0,retryFrameCount:0},i=(E=(Q=(B=this.backend)==null?void 0:B.getRuntimeDiagnosticsSnapshot)==null?void 0:Q.call(B))!=null?E:{submittedDrawCalls:0,rejectedDrawCalls:0,webgpuUncapturedErrors:0,backendLosses:0},t=this.lastRuntimeDiagnostic?{...this.lastRuntimeDiagnostic,...this.lastRuntimeDiagnostic.giftIds?{giftIds:[...this.lastRuntimeDiagnostic.giftIds]}:{}}:null;return{backend:this.backendType,frameAbortCount:e.frameAbortCount,replayFailureCount:e.replayFailureCount,retryFrameCount:e.retryFrameCount,runtimeFallbackCount:this.runtimeFallbackCount,submittedDrawCalls:i.submittedDrawCalls,rejectedDrawCalls:i.rejectedDrawCalls,webgpuUncapturedErrorCount:i.webgpuUncapturedErrors,backendLossCount:i.backendLosses,observerErrorCount:this.runtimeObserverErrorCount,lastEvent:t}}destroy(){var A,g,I,B,Q,E,e,i,t;if(this.destroyed)return;this.destroyed=!0;for(const o of(A=this.svgaPreparingEntities)!=null?A:[])(I=(g=this.svgaCommandControllers)==null?void 0:g.get(o))==null||I.abort();for(const o of Array.from(this.mountedPlugins))o.destroy();this.mountedPlugins.clear();for(const o of Array.from(this.playbackScopes))o.destroy();this.playbackScopes.clear();for(const o of this.pendingSharedSVGAEntities.values())o.controller.abort();for(const o of this.pendingSharedWebCodecsPlaybacks.values())o.controller.abort();this.pendingSharedWebCodecsPlaybacks.clear(),(B=this.resizeObserver)==null||B.disconnect(),this.resizeObserver=null,window.removeEventListener("resize",this.onWindowLayout),window.removeEventListener("orientationchange",this.onWindowLayout),document.removeEventListener("visibilitychange",this.onVisibilityChange);for(const o of this.sharedImageTextures.values())(Q=this.backend)==null||Q.deleteTexture(o.texture);this.sharedImageTextures.clear(),this.pendingSharedImageTextures.clear(),(e=(E=this.backend)==null?void 0:E.setRuntimeDiagnosticHandler)==null||e.call(E,null);const a=this.backend;(i=a==null?void 0:a.setDeviceLostHandler)==null||i.call(a,null),(t=this.manager)==null||t.destroy();for(const[o]of this.sharedHtmlVideos)this.releaseSharedHtmlVideo(o);for(const[o]of this.sharedSVGAEntities)this.releaseSharedSVGAEntity(o);for(const[o]of this.sharedVideoTextures)this.releaseSharedVideoTexture(o);this.pendingSharedSVGAEntities.clear(),this.pendingSharedHtmlVideos.clear();for(const o of this.sharedWebCodecsPlaybacks.values())for(const s of o)s.playback.destroy();this.sharedWebCodecsPlaybacks.clear(),this.sharedWebCodecsSurfaces.clear(),this.completedPlaybackSlots.clear(),this.playbackCompleteWaiters.clear();for(const[o,s]of this.sharedVideoSources)s.objectUrl&&URL.revokeObjectURL(s.objectUrl),this.sharedVideoSources.delete(o);this.canvas.remove(),this.backend=null,this.manager=null}markGiftPlaybackComplete(A){this.completedPlaybackSlots.add(A),this.resolveGiftPlaybackWaiters(A)}resolveGiftPlaybackWaiters(A){const g=this.playbackCompleteWaiters.get(A);if(!(!g||g.size===0)){for(const I of g)I();this.playbackCompleteWaiters.delete(A)}}waitForGiftPlaybackComplete(A){var g;return this.completedPlaybackSlots.has(A)||!((g=this.manager)!=null&&g.getSlot(A))?Promise.resolve():new Promise(I=>{let B=this.playbackCompleteWaiters.get(A);B||(B=new Set,this.playbackCompleteWaiters.set(A,B)),B.add(I)})}};q(Gg,"SVGA_ATLAS_MAX_SIZE",2048);q(Gg,"SVGA_ATLAS_PADDING",2);q(Gg,"DEFAULT_SHARED_VIDEO_PLAYBACK_WINDOW_MS",100);q(Gg,"HTML_VIDEO_READY_TIMEOUT_MS",15e3);q(Gg,"HTML_VIDEO_WATCHDOG_MIN_GRACE_MS",2e3);q(Gg,"HTML_VIDEO_WATCHDOG_MAX_GRACE_MS",1e4);q(Gg,"HTML_VIDEO_WATCHDOG_GRACE_RATIO",.2);q(Gg,"MAX_TIMER_DELAY_MS",2147e6);q(Gg,"DEFAULT_RESOURCE_CACHE_MEMORY_BYTES",128*1024*1024);q(Gg,"DEFAULT_RESOURCE_CACHE_PERSISTENT_BYTES",2048*1024*1024);let Kn=Gg;exports.AlphaVideoRenderer=mE;exports.AudioManager=HE;exports.BufferPool=uE;exports.GiftStage=Kn;exports.ImageRenderer=JE;exports.MOTION_TRACK_SAMPLE_FLOATS=Dg;exports.MotionTrackLeaseImpl=SB;exports.ParticleBatchRenderer=qE;exports.PlaybackScopeImpl=oe;exports.PostAnimator=LE;exports.RenderManager=jI;exports.SVGABatchRenderer=SE;exports.SVGA_FRAME_TABLE_BUDGET_BYTES=xB;exports.SVGA_FRAME_TABLE_FLOATS=Wg;exports.SVGA_GPU_FRAME_TABLE_BUDGET_BYTES=KC;exports.SVGA_HYBRID_OP_CLIP_CLEAR=FB;exports.SVGA_HYBRID_OP_CLIP_TEST=cC;exports.SVGA_HYBRID_OP_CLIP_WRITE=Pg;exports.SVGA_HYBRID_OP_SHAPE=yB;exports.SVGA_HYBRID_OP_TEXTURE=rC;exports.SVGA_SPRITE_METADATA_FLAG_MISSING_RECT=te;exports.SVGA_SPRITE_METADATA_FLOATS=hC;exports.VAPRenderer=KE;exports.WebCodecsMp4Playback=CI;exports.WebGL1Backend=lC;exports.WebGL2Backend=oE;exports.WebGPUBackend=aE;exports.analyzeSVGAFrameTimelineEligibility=NC;exports.buildAtlas=Ae;exports.buildBatchVerticesJS=dB;exports.buildSVGAHybridCommandTable=je;exports.canSharedArrayBuffer=at;exports.canWebGL1=tt;exports.canWebGL2=it;exports.canWebGPU=et;exports.clamp=uB;exports.countSVGASpriteAtlasPages=Gn;exports.createBackend=rE;exports.decodeSVGAProto=RC;exports.easeInOutCubic=Ss;exports.easeInOutQuad=fs;exports.easeInQuad=us;exports.easeOutBack=Ms;exports.easeOutCubic=ge;exports.easeOutQuad=Rs;exports.estimateSVGAFrameTableBytes=gB;exports.generateId=mC;exports.inflateJS=uC;exports.initWasm=GE;exports.isSVGAFrameTableBudgetAvailable=dn;exports.isSVGAFrameTableWithinBudget=Fn;exports.isWasmReady=DI;exports.lerp=lg;exports.linear=Gs;exports.ortho=mg;exports.packSVGAFrameDataToVec4=yn;exports.packSVGAFrameTable=ie;exports.packSVGASpriteMetadata=ae;exports.parseSVGA=fB;exports.parseVAPConfig=FC;
4995
4995
  //# sourceMappingURL=gift-stage.cjs.map