@splinetool/loader 1.10.88 → 1.10.89
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/SplineLoader.cjs +153 -153
- package/build/SplineLoader.js +155 -155
- package/package.json +1 -1
package/build/SplineLoader.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
var
|
|
2
|
-
`,"\r"],!1,!1),C=0,ne=0,Ne=[{line:1,column:1}],Ve=0,_e=[],Pe=0,St;if("startRule"in t){if(!(t.startRule in r))throw new Error(`Can't start parsing from rule "`+t.startRule+'".');o=r[t.startRule]}function Me(){return i.substring(ne,C)}function bt(){return ki(ne,C)}function wt(x,P){throw P=P!==void 0?P:ki(ne,C),mr([jd(x)],i.substring(ne,C),P)}function Ui(x,P){throw P=P!==void 0?P:ki(ne,C),Ud(x,P)}function it(x,P){return{type:"literal",text:x,ignoreCase:P}}function Ke(x,P,L){return{type:"class",parts:x,inverted:P,ignoreCase:L}}function Er(){return{type:"any"}}function Fd(){return{type:"end"}}function jd(x){return{type:"other",description:x}}function zl(x){var P=Ne[x],L;if(P)return P;for(L=x-1;!Ne[L];)L--;for(P=Ne[L],P={line:P.line,column:P.column};L<x;)i.charCodeAt(L)===10?(P.line++,P.column=1):P.column++,L++;return Ne[x]=P,P}function ki(x,P){var L=zl(x),A=zl(P);return{start:{offset:x,line:L.line,column:L.column},end:{offset:P,line:A.line,column:A.column}}}function ut(x){C<Ve||(C>Ve&&(Ve=C,_e=[]),_e.push(x))}function Ud(x,P){return new Sn(x,null,null,P)}function mr(x,P,L){return new Sn(Sn.buildMessage(x,P),x,P,L)}function Cs(){var x,P,L,A,z;for(x=C,P=[],L=ze();L!==e;)P.push(L),L=ze();if(P!==e)if(L=Ht(),L===e&&(L=null),L!==e){for(A=[],z=ze();z!==e;)A.push(z),z=ze();A!==e?(ne=x,P=n(L),x=P):(C=x,x=e)}else C=x,x=e;else C=x,x=e;return x}function Ht(){var x,P,L,A,z,oe;if(x=C,P=Hi(),P!==e){for(L=[],A=C,z=[],oe=ze();oe!==e;)z.push(oe),oe=ze();for(z!==e?(oe=Hi(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);A!==e;){for(L.push(A),A=C,z=[],oe=ze();oe!==e;)z.push(oe),oe=ze();z!==e?(oe=Hi(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e)}L!==e?(ne=x,P=a(P,L),x=P):(C=x,x=e)}else C=x,x=e;return x}function Hi(){var x,P,L,A,z,oe;if(x=C,P=Tn(),P!==e){for(L=[],A=C,z=[],oe=ze();oe!==e;)z.push(oe),oe=ze();for(z!==e?(oe=Gl(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);A!==e;){for(L.push(A),A=C,z=[],oe=ze();oe!==e;)z.push(oe),oe=ze();z!==e?(oe=Gl(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e)}L!==e?(ne=x,P=a(P,L),x=P):(C=x,x=e)}else C=x,x=e;return x}function Gl(){var x;return x=WS(),x===e&&(x=qS(),x===e&&(x=$S(),x===e&&(x=XS(),x===e&&(x=YS(),x===e&&(x=QS(),x===e&&(x=JS(),x===e&&(x=tw(),x===e&&(x=ow())))))))),x}function Tn(){var x,P,L,A,z,oe,Mn;if(x=C,s.test(i.charAt(C))?(P=i.charAt(C),C++):(P=e,Pe===0&&ut(l)),P!==e){for(L=[],A=ze();A!==e;)L.push(A),A=ze();L!==e?(A=qt(),A!==e?(z=C,oe=tt(),oe===e&&(oe=null),oe!==e?(Mn=cm(),Mn!==e?(oe=[oe,Mn],z=oe):(C=z,z=e)):(C=z,z=e),z===e&&(z=null),z!==e?(ne=x,P=c(P,A,z),x=P):(C=x,x=e)):(C=x,x=e)):(C=x,x=e)}else C=x,x=e;return x}function WS(){var x,P;return x=C,u.test(i.charAt(C))?(P=i.charAt(C),C++):(P=e,Pe===0&&ut(p)),P!==e&&(ne=x,P=d()),x=P,x}function qS(){var x,P,L,A;if(x=C,f.test(i.charAt(C))?(P=i.charAt(C),C++):(P=e,Pe===0&&ut(h)),P!==e){for(L=[],A=ze();A!==e;)L.push(A),A=ze();L!==e?(A=cm(),A!==e?(ne=x,P=m(P,A),x=P):(C=x,x=e)):(C=x,x=e)}else C=x,x=e;return x}function cm(){var x,P,L,A,z,oe;if(x=C,P=qt(),P!==e){for(L=[],A=C,z=tt(),z===e&&(z=null),z!==e?(oe=qt(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);A!==e;)L.push(A),A=C,z=tt(),z===e&&(z=null),z!==e?(oe=qt(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);L!==e?(ne=x,P=a(P,L),x=P):(C=x,x=e)}else C=x,x=e;return x}function $S(){var x,P,L,A;if(x=C,y.test(i.charAt(C))?(P=i.charAt(C),C++):(P=e,Pe===0&&ut(b)),P!==e){for(L=[],A=ze();A!==e;)L.push(A),A=ze();L!==e?(A=um(),A!==e?(ne=x,P=v(P,A),x=P):(C=x,x=e)):(C=x,x=e)}else C=x,x=e;return x}function um(){var x,P,L,A,z,oe;if(x=C,P=Cn(),P!==e){for(L=[],A=C,z=tt(),z===e&&(z=null),z!==e?(oe=Cn(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);A!==e;)L.push(A),A=C,z=tt(),z===e&&(z=null),z!==e?(oe=Cn(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);L!==e?(ne=x,P=a(P,L),x=P):(C=x,x=e)}else C=x,x=e;return x}function XS(){var x,P,L,A;if(x=C,w.test(i.charAt(C))?(P=i.charAt(C),C++):(P=e,Pe===0&&ut(O)),P!==e){for(L=[],A=ze();A!==e;)L.push(A),A=ze();L!==e?(A=um(),A!==e?(ne=x,P=S(P,A),x=P):(C=x,x=e)):(C=x,x=e)}else C=x,x=e;return x}function YS(){var x,P,L,A;if(x=C,T.test(i.charAt(C))?(P=i.charAt(C),C++):(P=e,Pe===0&&ut(M)),P!==e){for(L=[],A=ze();A!==e;)L.push(A),A=ze();L!==e?(A=KS(),A!==e?(ne=x,P=m(P,A),x=P):(C=x,x=e)):(C=x,x=e)}else C=x,x=e;return x}function KS(){var x,P,L,A,z,oe;if(x=C,P=kd(),P!==e){for(L=[],A=C,z=tt(),z===e&&(z=null),z!==e?(oe=kd(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);A!==e;)L.push(A),A=C,z=tt(),z===e&&(z=null),z!==e?(oe=kd(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);L!==e?(ne=x,P=a(P,L),x=P):(C=x,x=e)}else C=x,x=e;return x}function kd(){var x,P,L,A,z,oe;return x=C,P=qt(),P!==e?(L=tt(),L===e&&(L=null),L!==e?(A=qt(),A!==e?(z=tt(),z===e&&(z=null),z!==e?(oe=qt(),oe!==e?(ne=x,P=g(P,A,oe),x=P):(C=x,x=e)):(C=x,x=e)):(C=x,x=e)):(C=x,x=e)):(C=x,x=e),x}function QS(){var x,P,L,A;if(x=C,D.test(i.charAt(C))?(P=i.charAt(C),C++):(P=e,Pe===0&&ut(E)),P!==e){for(L=[],A=ze();A!==e;)L.push(A),A=ze();L!==e?(A=ZS(),A!==e?(ne=x,P=m(P,A),x=P):(C=x,x=e)):(C=x,x=e)}else C=x,x=e;return x}function ZS(){var x,P,L,A,z,oe;if(x=C,P=Hd(),P!==e){for(L=[],A=C,z=tt(),z===e&&(z=null),z!==e?(oe=Hd(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);A!==e;)L.push(A),A=C,z=tt(),z===e&&(z=null),z!==e?(oe=Hd(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);L!==e?(ne=x,P=a(P,L),x=P):(C=x,x=e)}else C=x,x=e;return x}function Hd(){var x,P,L,A;return x=C,P=qt(),P!==e?(L=tt(),L===e&&(L=null),L!==e?(A=qt(),A!==e?(ne=x,P=I(P,A),x=P):(C=x,x=e)):(C=x,x=e)):(C=x,x=e),x}function JS(){var x,P,L,A;if(x=C,N.test(i.charAt(C))?(P=i.charAt(C),C++):(P=e,Pe===0&&ut(_)),P!==e){for(L=[],A=ze();A!==e;)L.push(A),A=ze();L!==e?(A=ew(),A!==e?(ne=x,P=m(P,A),x=P):(C=x,x=e)):(C=x,x=e)}else C=x,x=e;return x}function ew(){var x,P,L,A,z,oe;if(x=C,P=Wd(),P!==e){for(L=[],A=C,z=tt(),z===e&&(z=null),z!==e?(oe=Wd(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);A!==e;)L.push(A),A=C,z=tt(),z===e&&(z=null),z!==e?(oe=Wd(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);L!==e?(ne=x,P=a(P,L),x=P):(C=x,x=e)}else C=x,x=e;return x}function Wd(){var x,P,L,A;return x=C,P=qt(),P!==e?(L=tt(),L===e&&(L=null),L!==e?(A=qt(),A!==e?(ne=x,P=R(P,A),x=P):(C=x,x=e)):(C=x,x=e)):(C=x,x=e),x}function tw(){var x,P,L,A;if(x=C,V.test(i.charAt(C))?(P=i.charAt(C),C++):(P=e,Pe===0&&ut(U)),P!==e){for(L=[],A=ze();A!==e;)L.push(A),A=ze();L!==e?(A=rw(),A!==e?(ne=x,P=m(P,A),x=P):(C=x,x=e)):(C=x,x=e)}else C=x,x=e;return x}function rw(){var x,P,L,A,z,oe;if(x=C,P=qt(),P!==e){for(L=[],A=C,z=tt(),z===e&&(z=null),z!==e?(oe=qt(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);A!==e;)L.push(A),A=C,z=tt(),z===e&&(z=null),z!==e?(oe=qt(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);L!==e?(ne=x,P=a(P,L),x=P):(C=x,x=e)}else C=x,x=e;return x}function ow(){var x,P,L,A;if(x=C,B.test(i.charAt(C))?(P=i.charAt(C),C++):(P=e,Pe===0&&ut(q)),P!==e){for(L=[],A=ze();A!==e;)L.push(A),A=ze();L!==e?(A=iw(),A!==e?(ne=x,P=m(P,A),x=P):(C=x,x=e)):(C=x,x=e)}else C=x,x=e;return x}function iw(){var x,P,L,A,z,oe;if(x=C,P=qd(),P!==e){for(L=[],A=C,z=tt(),z===e&&(z=null),z!==e?(oe=qd(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);A!==e;)L.push(A),A=C,z=tt(),z===e&&(z=null),z!==e?(oe=qd(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);L!==e?(ne=x,P=a(P,L),x=P):(C=x,x=e)}else C=x,x=e;return x}function qd(){var x,P,L,A,z,oe,Mn,Xd,jl,Yd,Ul,Kd;return x=C,P=dm(),P!==e?(L=tt(),L===e&&(L=null),L!==e?(A=dm(),A!==e?(z=tt(),z===e&&(z=null),z!==e?(oe=Cn(),oe!==e?(Mn=tt(),Mn!==e?(Xd=pm(),Xd!==e?(jl=tt(),jl===e&&(jl=null),jl!==e?(Yd=pm(),Yd!==e?(Ul=tt(),Ul===e&&(Ul=null),Ul!==e?(Kd=qt(),Kd!==e?(ne=x,P=j(P,A,oe,Xd,Yd,Kd),x=P):(C=x,x=e)):(C=x,x=e)):(C=x,x=e)):(C=x,x=e)):(C=x,x=e)):(C=x,x=e)):(C=x,x=e)):(C=x,x=e)):(C=x,x=e)):(C=x,x=e)):(C=x,x=e),x}function qt(){var x,P,L,A;return x=C,P=Cn(),P!==e?(L=tt(),L===e&&(L=null),L!==e?(A=Cn(),A!==e?(ne=x,P=F(P,A),x=P):(C=x,x=e)):(C=x,x=e)):(C=x,x=e),x}function dm(){var x,P;return x=C,P=hm(),P===e&&(P=Wi()),P!==e&&(ne=x,P=H(P)),x=P,x}function Cn(){var x,P,L,A;return x=C,P=C,L=$d(),L===e&&(L=null),L!==e?(A=hm(),A!==e?(L=[L,A],P=L):(C=P,P=e)):(C=P,P=e),P===e&&(P=C,L=$d(),L===e&&(L=null),L!==e?(A=Wi(),A!==e?(L=[L,A],P=L):(C=P,P=e)):(C=P,P=e)),P!==e&&(ne=x,P=W(P)),x=P,x}function pm(){var x,P;return x=C,ee.test(i.charAt(C))?(P=i.charAt(C),C++):(P=e,Pe===0&&ut(te)),P!==e&&(ne=x,P=Y(P)),x=P,x}function tt(){var x,P,L,A,z;if(x=C,P=[],L=ze(),L!==e)for(;L!==e;)P.push(L),L=ze();else P=e;if(P!==e)if(L=fm(),L===e&&(L=null),L!==e){for(A=[],z=ze();z!==e;)A.push(z),z=ze();A!==e?(P=[P,L,A],x=P):(C=x,x=e)}else C=x,x=e;else C=x,x=e;if(x===e){if(x=C,P=C,L=fm(),L!==e){for(A=[],z=ze();z!==e;)A.push(z),z=ze();A!==e?(L=[L,A],P=L):(C=P,P=e)}else C=P,P=e;P!==e&&(ne=x,P=re()),x=P}return x}function fm(){var x;return i.charCodeAt(C)===44?(x=K,C++):(x=e,Pe===0&&ut(Z)),x}function hm(){var x,P,L,A;return x=C,P=C,L=nw(),L!==e?(A=mm(),A===e&&(A=null),A!==e?(L=[L,A],P=L):(C=P,P=e)):(C=P,P=e),P===e&&(P=C,L=Wi(),L!==e?(A=mm(),A!==e?(L=[L,A],P=L):(C=P,P=e)):(C=P,P=e)),P!==e&&(ne=x,P=Q(P)),x=P,x}function nw(){var x,P,L,A,z;return x=C,P=C,L=Wi(),L===e&&(L=null),L!==e?(i.charCodeAt(C)===46?(A=$,C++):(A=e,Pe===0&&ut(de)),A!==e?(z=Wi(),z!==e?(L=[L,A,z],P=L):(C=P,P=e)):(C=P,P=e)):(C=P,P=e),P===e&&(P=C,L=Wi(),L!==e?(i.charCodeAt(C)===46?(A=$,C++):(A=e,Pe===0&&ut(de)),A!==e?(L=[L,A],P=L):(C=P,P=e)):(C=P,P=e)),P!==e&&(ne=x,P=Q(P)),x=P,x}function mm(){var x,P,L,A,z;return x=C,P=C,le.test(i.charAt(C))?(L=i.charAt(C),C++):(L=e,Pe===0&&ut(ie)),L!==e?(A=$d(),A===e&&(A=null),A!==e?(z=Wi(),z!==e?(L=[L,A,z],P=L):(C=P,P=e)):(C=P,P=e)):(C=P,P=e),P!==e&&(ne=x,P=Q(P)),x=P,x}function $d(){var x;return ce.test(i.charAt(C))?(x=i.charAt(C),C++):(x=e,Pe===0&&ut(ae)),x}function Wi(){var x,P,L;if(x=C,P=[],me.test(i.charAt(C))?(L=i.charAt(C),C++):(L=e,Pe===0&&ut(fe)),L!==e)for(;L!==e;)P.push(L),me.test(i.charAt(C))?(L=i.charAt(C),C++):(L=e,Pe===0&&ut(fe));else P=e;return P!==e&&(ne=x,P=he(P)),x=P,x}function ze(){var x,P;return x=C,xe.test(i.charAt(C))?(P=i.charAt(C),C++):(P=e,Pe===0&&ut(ye)),P!==e&&(ne=x,P=re()),x=P,x}function aw(x,P){if(!P)return[x];for(var L=[x],A=0,z=P.length;A<z;A++)L[A+1]=P[A][1];return L}var Fl={m:"moveto",l:"lineto",h:"horizontal lineto",v:"vertical lineto",c:"curveto",s:"smooth curveto",q:"quadratic curveto",t:"smooth quadratic curveto",a:"elliptical arc",z:"closepath"};for(var ym in Fl)Fl[ym.toUpperCase()]=Fl[ym];function An(x,P){P||(P=[{}]);for(var L=P.length;L--;){var A={code:x,command:Fl[x]};x==x.toLowerCase()&&(A.relative=!0);for(var z in P[L])A[z]=P[L][z];P[L]=A}return P}if(St=o(),St!==e&&C===i.length)return St;throw St!==e&&C<i.length&&ut(Fd()),mr(_e,Ve<i.length?i.charAt(Ve):null,Ve<i.length?ki(Ve,Ve+1):ki(Ve,Ve))}O1.exports={SyntaxError:Sn,parse:s_}});var Bh=As((Qle,C1)=>{var xd=T1().parse;xd.parseSVG=xd;xd.makeAbsolute=l_;C1.exports=xd;function l_(i){var t,e={x:0,y:0},r={x:"x0",y:"y0",x1:"x0",y1:"y0",x2:"x0",y2:"y0"};return i.forEach(function(o){o.command==="moveto"&&(t=o),o.x0=e.x,o.y0=e.y;for(var n in r)n in o&&(o[n]+=o.relative?o[r[n]]:0);"x"in o||(o.x=e.x),"y"in o||(o.y=e.y),o.relative=!1,o.code=o.code.toUpperCase(),o.command=="closepath"&&(o.x=t.x,o.y=t.y),e=o}),i}});var US=As((xye,jS)=>{jS.exports=function(t,e){for(var r=t.split("."),o=e.split("."),n=0;n<3;n++){var a=Number(r[n]),s=Number(o[n]);if(a>s)return 1;if(s>a)return-1;if(!isNaN(a)&&isNaN(s))return 1;if(isNaN(a)&&!isNaN(s))return-1}return 0}});import{FileLoader as uL,Loader as dL}from"three";function Hl(i){for(let t of Object.keys(i))i[t]===void 0&&delete i[t];return i}function Pt(i,t){return Object.setPrototypeOf(i,t),i}function Wl(i){return Array.isArray(i)?i:[i]}function ql(i,t){let e=0;for(;e<i.length&&e<t.length;){if(i[e]<t[e])return-1;if(i[e]>t[e])return 1;e+=1}return e!==t.length?-1:e!==i.length?1:0}var mw=typeof global=="object"&&global&&global.Object===Object&&global,$l=mw;var yw=typeof self=="object"&&self&&self.Object===Object&&self,gw=$l||yw||Function("return this")(),dt=gw;var xw=dt.Symbol,Et=xw;var gm=Object.prototype,bw=gm.hasOwnProperty,vw=gm.toString,Is=Et?Et.toStringTag:void 0;function Sw(i){var t=bw.call(i,Is),e=i[Is];try{i[Is]=void 0;var r=!0}catch{}var o=vw.call(i);return r&&(t?i[Is]=e:delete i[Is]),o}var xm=Sw;var ww=Object.prototype,Pw=ww.toString;function Ow(i){return Pw.call(i)}var bm=Ow;var Tw="[object Null]",Cw="[object Undefined]",vm=Et?Et.toStringTag:void 0;function Aw(i){return i==null?i===void 0?Cw:Tw:vm&&vm in Object(i)?xm(i):bm(i)}var lr=Aw;function Mw(i){return i!=null&&typeof i=="object"}var Vt=Mw;var Iw="[object Symbol]";function Ew(i){return typeof i=="symbol"||Vt(i)&&lr(i)==Iw}var ei=Ew;function Nw(i,t){for(var e=-1,r=i==null?0:i.length,o=Array(r);++e<r;)o[e]=t(i[e],e,i);return o}var Xl=Nw;var Dw=Array.isArray,pt=Dw;var _w=1/0,Sm=Et?Et.prototype:void 0,wm=Sm?Sm.toString:void 0;function Pm(i){if(typeof i=="string")return i;if(pt(i))return Xl(i,Pm)+"";if(ei(i))return wm?wm.call(i):"";var t=i+"";return t=="0"&&1/i==-_w?"-0":t}var Om=Pm;var Rw=/\s/;function Lw(i){for(var t=i.length;t--&&Rw.test(i.charAt(t)););return t}var Tm=Lw;var Bw=/^\s+/;function Vw(i){return i&&i.slice(0,Tm(i)+1).replace(Bw,"")}var Cm=Vw;function zw(i){var t=typeof i;return i!=null&&(t=="object"||t=="function")}var ft=zw;var Am=0/0,Gw=/^[-+]0x[0-9a-f]+$/i,Fw=/^0b[01]+$/i,jw=/^0o[0-7]+$/i,Uw=parseInt;function kw(i){if(typeof i=="number")return i;if(ei(i))return Am;if(ft(i)){var t=typeof i.valueOf=="function"?i.valueOf():i;i=ft(t)?t+"":t}if(typeof i!="string")return i===0?i:+i;i=Cm(i);var e=Fw.test(i);return e||jw.test(i)?Uw(i.slice(2),e?2:8):Gw.test(i)?Am:+i}var Qd=kw;function Hw(i){return i}var Mm=Hw;var Ww="[object AsyncFunction]",qw="[object Function]",$w="[object GeneratorFunction]",Xw="[object Proxy]";function Yw(i){if(!ft(i))return!1;var t=lr(i);return t==qw||t==$w||t==Ww||t==Xw}var Yl=Yw;var Kw=dt["__core-js_shared__"],Kl=Kw;var Im=function(){var i=/[^.]+$/.exec(Kl&&Kl.keys&&Kl.keys.IE_PROTO||"");return i?"Symbol(src)_1."+i:""}();function Qw(i){return!!Im&&Im in i}var Em=Qw;var Zw=Function.prototype,Jw=Zw.toString;function e2(i){if(i!=null){try{return Jw.call(i)}catch{}try{return i+""}catch{}}return""}var To=e2;var t2=/[\\^$.*+?()[\]{}|]/g,r2=/^\[object .+?Constructor\]$/,o2=Function.prototype,i2=Object.prototype,n2=o2.toString,a2=i2.hasOwnProperty,s2=RegExp("^"+n2.call(a2).replace(t2,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function l2(i){if(!ft(i)||Em(i))return!1;var t=Yl(i)?s2:r2;return t.test(To(i))}var Nm=l2;function c2(i,t){return i?.[t]}var Dm=c2;function u2(i,t){var e=Dm(i,t);return Nm(e)?e:void 0}var Zt=u2;var d2=Zt(dt,"WeakMap"),Ql=d2;var _m=Object.create,p2=function(){function i(){}return function(t){if(!ft(t))return{};if(_m)return _m(t);i.prototype=t;var e=new i;return i.prototype=void 0,e}}(),Rm=p2;function f2(i,t,e){switch(e.length){case 0:return i.call(t);case 1:return i.call(t,e[0]);case 2:return i.call(t,e[0],e[1]);case 3:return i.call(t,e[0],e[1],e[2])}return i.apply(t,e)}var Lm=f2;function h2(i,t){var e=-1,r=i.length;for(t||(t=Array(r));++e<r;)t[e]=i[e];return t}var Bm=h2;var m2=800,y2=16,g2=Date.now;function x2(i){var t=0,e=0;return function(){var r=g2(),o=y2-(r-e);if(e=r,o>0){if(++t>=m2)return arguments[0]}else t=0;return i.apply(void 0,arguments)}}var Vm=x2;function b2(i){return function(){return i}}var zm=b2;var v2=function(){try{var i=Zt(Object,"defineProperty");return i({},"",{}),i}catch{}}(),In=v2;var S2=In?function(i,t){return In(i,"toString",{configurable:!0,enumerable:!1,value:zm(t),writable:!0})}:Mm,Gm=S2;var w2=Vm(Gm),Fm=w2;function P2(i,t){for(var e=-1,r=i==null?0:i.length;++e<r&&t(i[e],e,i)!==!1;);return i}var jm=P2;var O2=9007199254740991,T2=/^(?:0|[1-9]\d*)$/;function C2(i,t){var e=typeof i;return t=t??O2,!!t&&(e=="number"||e!="symbol"&&T2.test(i))&&i>-1&&i%1==0&&i<t}var En=C2;function A2(i,t,e){t=="__proto__"&&In?In(i,t,{configurable:!0,enumerable:!0,value:e,writable:!0}):i[t]=e}var Zl=A2;function M2(i,t){return i===t||i!==i&&t!==t}var Nn=M2;var I2=Object.prototype,E2=I2.hasOwnProperty;function N2(i,t,e){var r=i[t];(!(E2.call(i,t)&&Nn(r,e))||e===void 0&&!(t in i))&&Zl(i,t,e)}var Dn=N2;function D2(i,t,e,r){var o=!e;e||(e={});for(var n=-1,a=t.length;++n<a;){var s=t[n],l=r?r(e[s],i[s],s,e,i):void 0;l===void 0&&(l=i[s]),o?Zl(e,s,l):Dn(e,s,l)}return e}var Yr=D2;var Um=Math.max;function _2(i,t,e){return t=Um(t===void 0?i.length-1:t,0),function(){for(var r=arguments,o=-1,n=Um(r.length-t,0),a=Array(n);++o<n;)a[o]=r[t+o];o=-1;for(var s=Array(t+1);++o<t;)s[o]=r[o];return s[t]=e(a),Lm(i,this,s)}}var km=_2;var R2=9007199254740991;function L2(i){return typeof i=="number"&&i>-1&&i%1==0&&i<=R2}var _n=L2;function B2(i){return i!=null&&_n(i.length)&&!Yl(i)}var Jl=B2;var V2=Object.prototype;function z2(i){var t=i&&i.constructor,e=typeof t=="function"&&t.prototype||V2;return i===e}var Rn=z2;function G2(i,t){for(var e=-1,r=Array(i);++e<i;)r[e]=t(e);return r}var Hm=G2;var F2="[object Arguments]";function j2(i){return Vt(i)&&lr(i)==F2}var Zd=j2;var Wm=Object.prototype,U2=Wm.hasOwnProperty,k2=Wm.propertyIsEnumerable,H2=Zd(function(){return arguments}())?Zd:function(i){return Vt(i)&&U2.call(i,"callee")&&!k2.call(i,"callee")},Ln=H2;function W2(){return!1}var qm=W2;var Ym=typeof exports=="object"&&exports&&!exports.nodeType&&exports,$m=Ym&&typeof module=="object"&&module&&!module.nodeType&&module,q2=$m&&$m.exports===Ym,Xm=q2?dt.Buffer:void 0,$2=Xm?Xm.isBuffer:void 0,X2=$2||qm,$i=X2;var Y2="[object Arguments]",K2="[object Array]",Q2="[object Boolean]",Z2="[object Date]",J2="[object Error]",eP="[object Function]",tP="[object Map]",rP="[object Number]",oP="[object Object]",iP="[object RegExp]",nP="[object Set]",aP="[object String]",sP="[object WeakMap]",lP="[object ArrayBuffer]",cP="[object DataView]",uP="[object Float32Array]",dP="[object Float64Array]",pP="[object Int8Array]",fP="[object Int16Array]",hP="[object Int32Array]",mP="[object Uint8Array]",yP="[object Uint8ClampedArray]",gP="[object Uint16Array]",xP="[object Uint32Array]",rt={};rt[uP]=rt[dP]=rt[pP]=rt[fP]=rt[hP]=rt[mP]=rt[yP]=rt[gP]=rt[xP]=!0;rt[Y2]=rt[K2]=rt[lP]=rt[Q2]=rt[cP]=rt[Z2]=rt[J2]=rt[eP]=rt[tP]=rt[rP]=rt[oP]=rt[iP]=rt[nP]=rt[aP]=rt[sP]=!1;function bP(i){return Vt(i)&&_n(i.length)&&!!rt[lr(i)]}var Km=bP;function vP(i){return function(t){return i(t)}}var Bn=vP;var Qm=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Es=Qm&&typeof module=="object"&&module&&!module.nodeType&&module,SP=Es&&Es.exports===Qm,Jd=SP&&$l.process,wP=function(){try{var i=Es&&Es.require&&Es.require("util").types;return i||Jd&&Jd.binding&&Jd.binding("util")}catch{}}(),Co=wP;var Zm=Co&&Co.isTypedArray,PP=Zm?Bn(Zm):Km,ec=PP;var OP=Object.prototype,TP=OP.hasOwnProperty;function CP(i,t){var e=pt(i),r=!e&&Ln(i),o=!e&&!r&&$i(i),n=!e&&!r&&!o&&ec(i),a=e||r||o||n,s=a?Hm(i.length,String):[],l=s.length;for(var c in i)(t||TP.call(i,c))&&!(a&&(c=="length"||o&&(c=="offset"||c=="parent")||n&&(c=="buffer"||c=="byteLength"||c=="byteOffset")||En(c,l)))&&s.push(c);return s}var tc=CP;function AP(i,t){return function(e){return i(t(e))}}var rc=AP;var MP=rc(Object.keys,Object),Jm=MP;var IP=Object.prototype,EP=IP.hasOwnProperty;function NP(i){if(!Rn(i))return Jm(i);var t=[];for(var e in Object(i))EP.call(i,e)&&e!="constructor"&&t.push(e);return t}var ey=NP;function DP(i){return Jl(i)?tc(i):ey(i)}var Vn=DP;function _P(i){var t=[];if(i!=null)for(var e in Object(i))t.push(e);return t}var ty=_P;var RP=Object.prototype,LP=RP.hasOwnProperty;function BP(i){if(!ft(i))return ty(i);var t=Rn(i),e=[];for(var r in i)r=="constructor"&&(t||!LP.call(i,r))||e.push(r);return e}var ry=BP;function VP(i){return Jl(i)?tc(i,!0):ry(i)}var zn=VP;var zP=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,GP=/^\w*$/;function FP(i,t){if(pt(i))return!1;var e=typeof i;return e=="number"||e=="symbol"||e=="boolean"||i==null||ei(i)?!0:GP.test(i)||!zP.test(i)||t!=null&&i in Object(t)}var oy=FP;var jP=Zt(Object,"create"),Ao=jP;function UP(){this.__data__=Ao?Ao(null):{},this.size=0}var iy=UP;function kP(i){var t=this.has(i)&&delete this.__data__[i];return this.size-=t?1:0,t}var ny=kP;var HP="__lodash_hash_undefined__",WP=Object.prototype,qP=WP.hasOwnProperty;function $P(i){var t=this.__data__;if(Ao){var e=t[i];return e===HP?void 0:e}return qP.call(t,i)?t[i]:void 0}var ay=$P;var XP=Object.prototype,YP=XP.hasOwnProperty;function KP(i){var t=this.__data__;return Ao?t[i]!==void 0:YP.call(t,i)}var sy=KP;var QP="__lodash_hash_undefined__";function ZP(i,t){var e=this.__data__;return this.size+=this.has(i)?0:1,e[i]=Ao&&t===void 0?QP:t,this}var ly=ZP;function Gn(i){var t=-1,e=i==null?0:i.length;for(this.clear();++t<e;){var r=i[t];this.set(r[0],r[1])}}Gn.prototype.clear=iy;Gn.prototype.delete=ny;Gn.prototype.get=ay;Gn.prototype.has=sy;Gn.prototype.set=ly;var ep=Gn;function JP(){this.__data__=[],this.size=0}var cy=JP;function eO(i,t){for(var e=i.length;e--;)if(Nn(i[e][0],t))return e;return-1}var ti=eO;var tO=Array.prototype,rO=tO.splice;function oO(i){var t=this.__data__,e=ti(t,i);if(e<0)return!1;var r=t.length-1;return e==r?t.pop():rO.call(t,e,1),--this.size,!0}var uy=oO;function iO(i){var t=this.__data__,e=ti(t,i);return e<0?void 0:t[e][1]}var dy=iO;function nO(i){return ti(this.__data__,i)>-1}var py=nO;function aO(i,t){var e=this.__data__,r=ti(e,i);return r<0?(++this.size,e.push([i,t])):e[r][1]=t,this}var fy=aO;function Fn(i){var t=-1,e=i==null?0:i.length;for(this.clear();++t<e;){var r=i[t];this.set(r[0],r[1])}}Fn.prototype.clear=cy;Fn.prototype.delete=uy;Fn.prototype.get=dy;Fn.prototype.has=py;Fn.prototype.set=fy;var ri=Fn;var sO=Zt(dt,"Map"),oi=sO;function lO(){this.size=0,this.__data__={hash:new ep,map:new(oi||ri),string:new ep}}var hy=lO;function cO(i){var t=typeof i;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?i!=="__proto__":i===null}var my=cO;function uO(i,t){var e=i.__data__;return my(t)?e[typeof t=="string"?"string":"hash"]:e.map}var ii=uO;function dO(i){var t=ii(this,i).delete(i);return this.size-=t?1:0,t}var yy=dO;function pO(i){return ii(this,i).get(i)}var gy=pO;function fO(i){return ii(this,i).has(i)}var xy=fO;function hO(i,t){var e=ii(this,i),r=e.size;return e.set(i,t),this.size+=e.size==r?0:1,this}var by=hO;function jn(i){var t=-1,e=i==null?0:i.length;for(this.clear();++t<e;){var r=i[t];this.set(r[0],r[1])}}jn.prototype.clear=hy;jn.prototype.delete=yy;jn.prototype.get=gy;jn.prototype.has=xy;jn.prototype.set=by;var Xi=jn;var mO="Expected a function";function tp(i,t){if(typeof i!="function"||t!=null&&typeof t!="function")throw new TypeError(mO);var e=function(){var r=arguments,o=t?t.apply(this,r):r[0],n=e.cache;if(n.has(o))return n.get(o);var a=i.apply(this,r);return e.cache=n.set(o,a)||n,a};return e.cache=new(tp.Cache||Xi),e}tp.Cache=Xi;var vy=tp;var yO=500;function gO(i){var t=vy(i,function(r){return e.size===yO&&e.clear(),r}),e=t.cache;return t}var Sy=gO;var xO=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,bO=/\\(\\)?/g,vO=Sy(function(i){var t=[];return i.charCodeAt(0)===46&&t.push(""),i.replace(xO,function(e,r,o,n){t.push(o?n.replace(bO,"$1"):r||e)}),t}),wy=vO;function SO(i){return i==null?"":Om(i)}var Py=SO;function wO(i,t){return pt(i)?i:oy(i,t)?[i]:wy(Py(i))}var yr=wO;var PO=1/0;function OO(i){if(typeof i=="string"||ei(i))return i;var t=i+"";return t=="0"&&1/i==-PO?"-0":t}var ni=OO;function TO(i,t){t=yr(t,i);for(var e=0,r=t.length;i!=null&&e<r;)i=i[ni(t[e++])];return e&&e==r?i:void 0}var oc=TO;function CO(i,t){for(var e=-1,r=t.length,o=i.length;++e<r;)i[o+e]=t[e];return i}var Un=CO;var Oy=Et?Et.isConcatSpreadable:void 0;function AO(i){return pt(i)||Ln(i)||!!(Oy&&i&&i[Oy])}var Ty=AO;function Cy(i,t,e,r,o){var n=-1,a=i.length;for(e||(e=Ty),o||(o=[]);++n<a;){var s=i[n];t>0&&e(s)?t>1?Cy(s,t-1,e,r,o):Un(o,s):r||(o[o.length]=s)}return o}var Ay=Cy;function MO(i){var t=i==null?0:i.length;return t?Ay(i,1):[]}var My=MO;function IO(i){return Fm(km(i,void 0,My),i+"")}var ic=IO;var EO=rc(Object.getPrototypeOf,Object),kn=EO;var NO="[object Object]",DO=Function.prototype,_O=Object.prototype,Iy=DO.toString,RO=_O.hasOwnProperty,LO=Iy.call(Object);function BO(i){if(!Vt(i)||lr(i)!=NO)return!1;var t=kn(i);if(t===null)return!0;var e=RO.call(t,"constructor")&&t.constructor;return typeof e=="function"&&e instanceof e&&Iy.call(e)==LO}var Ey=BO;function VO(i,t,e){var r=-1,o=i.length;t<0&&(t=-t>o?0:o+t),e=e>o?o:e,e<0&&(e+=o),o=t>e?0:e-t>>>0,t>>>=0;for(var n=Array(o);++r<o;)n[r]=i[r+t];return n}var Ny=VO;function zO(){this.__data__=new ri,this.size=0}var Dy=zO;function GO(i){var t=this.__data__,e=t.delete(i);return this.size=t.size,e}var _y=GO;function FO(i){return this.__data__.get(i)}var Ry=FO;function jO(i){return this.__data__.has(i)}var Ly=jO;var UO=200;function kO(i,t){var e=this.__data__;if(e instanceof ri){var r=e.__data__;if(!oi||r.length<UO-1)return r.push([i,t]),this.size=++e.size,this;e=this.__data__=new Xi(r)}return e.set(i,t),this.size=e.size,this}var By=kO;function Hn(i){var t=this.__data__=new ri(i);this.size=t.size}Hn.prototype.clear=Dy;Hn.prototype.delete=_y;Hn.prototype.get=Ry;Hn.prototype.has=Ly;Hn.prototype.set=By;var Wn=Hn;function HO(i,t){return i&&Yr(t,Vn(t),i)}var Vy=HO;function WO(i,t){return i&&Yr(t,zn(t),i)}var zy=WO;var Uy=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Gy=Uy&&typeof module=="object"&&module&&!module.nodeType&&module,qO=Gy&&Gy.exports===Uy,Fy=qO?dt.Buffer:void 0,jy=Fy?Fy.allocUnsafe:void 0;function $O(i,t){if(t)return i.slice();var e=i.length,r=jy?jy(e):new i.constructor(e);return i.copy(r),r}var ky=$O;function XO(i,t){for(var e=-1,r=i==null?0:i.length,o=0,n=[];++e<r;){var a=i[e];t(a,e,i)&&(n[o++]=a)}return n}var Hy=XO;function YO(){return[]}var nc=YO;var KO=Object.prototype,QO=KO.propertyIsEnumerable,Wy=Object.getOwnPropertySymbols,ZO=Wy?function(i){return i==null?[]:(i=Object(i),Hy(Wy(i),function(t){return QO.call(i,t)}))}:nc,qn=ZO;function JO(i,t){return Yr(i,qn(i),t)}var qy=JO;var eT=Object.getOwnPropertySymbols,tT=eT?function(i){for(var t=[];i;)Un(t,qn(i)),i=kn(i);return t}:nc,ac=tT;function rT(i,t){return Yr(i,ac(i),t)}var $y=rT;function oT(i,t,e){var r=t(i);return pt(i)?r:Un(r,e(i))}var sc=oT;function iT(i){return sc(i,Vn,qn)}var Ns=iT;function nT(i){return sc(i,zn,ac)}var lc=nT;var aT=Zt(dt,"DataView"),cc=aT;var sT=Zt(dt,"Promise"),uc=sT;var lT=Zt(dt,"Set"),dc=lT;var Xy="[object Map]",cT="[object Object]",Yy="[object Promise]",Ky="[object Set]",Qy="[object WeakMap]",Zy="[object DataView]",uT=To(cc),dT=To(oi),pT=To(uc),fT=To(dc),hT=To(Ql),Yi=lr;(cc&&Yi(new cc(new ArrayBuffer(1)))!=Zy||oi&&Yi(new oi)!=Xy||uc&&Yi(uc.resolve())!=Yy||dc&&Yi(new dc)!=Ky||Ql&&Yi(new Ql)!=Qy)&&(Yi=function(i){var t=lr(i),e=t==cT?i.constructor:void 0,r=e?To(e):"";if(r)switch(r){case uT:return Zy;case dT:return Xy;case pT:return Yy;case fT:return Ky;case hT:return Qy}return t});var Mo=Yi;var mT=Object.prototype,yT=mT.hasOwnProperty;function gT(i){var t=i.length,e=new i.constructor(t);return t&&typeof i[0]=="string"&&yT.call(i,"index")&&(e.index=i.index,e.input=i.input),e}var Jy=gT;var xT=dt.Uint8Array,$n=xT;function bT(i){var t=new i.constructor(i.byteLength);return new $n(t).set(new $n(i)),t}var Xn=bT;function vT(i,t){var e=t?Xn(i.buffer):i.buffer;return new i.constructor(e,i.byteOffset,i.byteLength)}var eg=vT;var ST=/\w*$/;function wT(i){var t=new i.constructor(i.source,ST.exec(i));return t.lastIndex=i.lastIndex,t}var tg=wT;var rg=Et?Et.prototype:void 0,og=rg?rg.valueOf:void 0;function PT(i){return og?Object(og.call(i)):{}}var ig=PT;function OT(i,t){var e=t?Xn(i.buffer):i.buffer;return new i.constructor(e,i.byteOffset,i.length)}var ng=OT;var TT="[object Boolean]",CT="[object Date]",AT="[object Map]",MT="[object Number]",IT="[object RegExp]",ET="[object Set]",NT="[object String]",DT="[object Symbol]",_T="[object ArrayBuffer]",RT="[object DataView]",LT="[object Float32Array]",BT="[object Float64Array]",VT="[object Int8Array]",zT="[object Int16Array]",GT="[object Int32Array]",FT="[object Uint8Array]",jT="[object Uint8ClampedArray]",UT="[object Uint16Array]",kT="[object Uint32Array]";function HT(i,t,e){var r=i.constructor;switch(t){case _T:return Xn(i);case TT:case CT:return new r(+i);case RT:return eg(i,e);case LT:case BT:case VT:case zT:case GT:case FT:case jT:case UT:case kT:return ng(i,e);case AT:return new r;case MT:case NT:return new r(i);case IT:return tg(i);case ET:return new r;case DT:return ig(i)}}var ag=HT;function WT(i){return typeof i.constructor=="function"&&!Rn(i)?Rm(kn(i)):{}}var sg=WT;var qT="[object Map]";function $T(i){return Vt(i)&&Mo(i)==qT}var lg=$T;var cg=Co&&Co.isMap,XT=cg?Bn(cg):lg,ug=XT;var YT="[object Set]";function KT(i){return Vt(i)&&Mo(i)==YT}var dg=KT;var pg=Co&&Co.isSet,QT=pg?Bn(pg):dg,fg=QT;var ZT=1,JT=2,eC=4,hg="[object Arguments]",tC="[object Array]",rC="[object Boolean]",oC="[object Date]",iC="[object Error]",mg="[object Function]",nC="[object GeneratorFunction]",aC="[object Map]",sC="[object Number]",yg="[object Object]",lC="[object RegExp]",cC="[object Set]",uC="[object String]",dC="[object Symbol]",pC="[object WeakMap]",fC="[object ArrayBuffer]",hC="[object DataView]",mC="[object Float32Array]",yC="[object Float64Array]",gC="[object Int8Array]",xC="[object Int16Array]",bC="[object Int32Array]",vC="[object Uint8Array]",SC="[object Uint8ClampedArray]",wC="[object Uint16Array]",PC="[object Uint32Array]",Je={};Je[hg]=Je[tC]=Je[fC]=Je[hC]=Je[rC]=Je[oC]=Je[mC]=Je[yC]=Je[gC]=Je[xC]=Je[bC]=Je[aC]=Je[sC]=Je[yg]=Je[lC]=Je[cC]=Je[uC]=Je[dC]=Je[vC]=Je[SC]=Je[wC]=Je[PC]=!0;Je[iC]=Je[mg]=Je[pC]=!1;function pc(i,t,e,r,o,n){var a,s=t&ZT,l=t&JT,c=t&eC;if(e&&(a=o?e(i,r,o,n):e(i)),a!==void 0)return a;if(!ft(i))return i;var u=pt(i);if(u){if(a=Jy(i),!s)return Bm(i,a)}else{var p=Mo(i),d=p==mg||p==nC;if($i(i))return ky(i,s);if(p==yg||p==hg||d&&!o){if(a=l||d?{}:sg(i),!s)return l?$y(i,zy(a,i)):qy(i,Vy(a,i))}else{if(!Je[p])return o?i:{};a=ag(i,p,s)}}n||(n=new Wn);var f=n.get(i);if(f)return f;n.set(i,a),fg(i)?i.forEach(function(y){a.add(pc(y,t,e,y,i,n))}):ug(i)&&i.forEach(function(y,b){a.set(b,pc(y,t,e,b,i,n))});var h=c?l?lc:Ns:l?zn:Vn,m=u?void 0:h(i);return jm(m||i,function(y,b){m&&(b=y,y=i[b]),Dn(a,b,pc(y,t,e,b,i,n))}),a}var fc=pc;var OC=1,TC=4;function CC(i){return fc(i,OC|TC)}var Io=CC;var AC="__lodash_hash_undefined__";function MC(i){return this.__data__.set(i,AC),this}var gg=MC;function IC(i){return this.__data__.has(i)}var xg=IC;function hc(i){var t=-1,e=i==null?0:i.length;for(this.__data__=new Xi;++t<e;)this.add(i[t])}hc.prototype.add=hc.prototype.push=gg;hc.prototype.has=xg;var bg=hc;function EC(i,t){for(var e=-1,r=i==null?0:i.length;++e<r;)if(t(i[e],e,i))return!0;return!1}var vg=EC;function NC(i,t){return i.has(t)}var Sg=NC;var DC=1,_C=2;function RC(i,t,e,r,o,n){var a=e&DC,s=i.length,l=t.length;if(s!=l&&!(a&&l>s))return!1;var c=n.get(i),u=n.get(t);if(c&&u)return c==t&&u==i;var p=-1,d=!0,f=e&_C?new bg:void 0;for(n.set(i,t),n.set(t,i);++p<s;){var h=i[p],m=t[p];if(r)var y=a?r(m,h,p,t,i,n):r(h,m,p,i,t,n);if(y!==void 0){if(y)continue;d=!1;break}if(f){if(!vg(t,function(b,v){if(!Sg(f,v)&&(h===b||o(h,b,e,r,n)))return f.push(v)})){d=!1;break}}else if(!(h===m||o(h,m,e,r,n))){d=!1;break}}return n.delete(i),n.delete(t),d}var mc=RC;function LC(i){var t=-1,e=Array(i.size);return i.forEach(function(r,o){e[++t]=[o,r]}),e}var wg=LC;function BC(i){var t=-1,e=Array(i.size);return i.forEach(function(r){e[++t]=r}),e}var Pg=BC;var VC=1,zC=2,GC="[object Boolean]",FC="[object Date]",jC="[object Error]",UC="[object Map]",kC="[object Number]",HC="[object RegExp]",WC="[object Set]",qC="[object String]",$C="[object Symbol]",XC="[object ArrayBuffer]",YC="[object DataView]",Og=Et?Et.prototype:void 0,rp=Og?Og.valueOf:void 0;function KC(i,t,e,r,o,n,a){switch(e){case YC:if(i.byteLength!=t.byteLength||i.byteOffset!=t.byteOffset)return!1;i=i.buffer,t=t.buffer;case XC:return!(i.byteLength!=t.byteLength||!n(new $n(i),new $n(t)));case GC:case FC:case kC:return Nn(+i,+t);case jC:return i.name==t.name&&i.message==t.message;case HC:case qC:return i==t+"";case UC:var s=wg;case WC:var l=r&VC;if(s||(s=Pg),i.size!=t.size&&!l)return!1;var c=a.get(i);if(c)return c==t;r|=zC,a.set(i,t);var u=mc(s(i),s(t),r,o,n,a);return a.delete(i),u;case $C:if(rp)return rp.call(i)==rp.call(t)}return!1}var Tg=KC;var QC=1,ZC=Object.prototype,JC=ZC.hasOwnProperty;function eA(i,t,e,r,o,n){var a=e&QC,s=Ns(i),l=s.length,c=Ns(t),u=c.length;if(l!=u&&!a)return!1;for(var p=l;p--;){var d=s[p];if(!(a?d in t:JC.call(t,d)))return!1}var f=n.get(i),h=n.get(t);if(f&&h)return f==t&&h==i;var m=!0;n.set(i,t),n.set(t,i);for(var y=a;++p<l;){d=s[p];var b=i[d],v=t[d];if(r)var w=a?r(v,b,d,t,i,n):r(b,v,d,i,t,n);if(!(w===void 0?b===v||o(b,v,e,r,n):w)){m=!1;break}y||(y=d=="constructor")}if(m&&!y){var O=i.constructor,S=t.constructor;O!=S&&"constructor"in i&&"constructor"in t&&!(typeof O=="function"&&O instanceof O&&typeof S=="function"&&S instanceof S)&&(m=!1)}return n.delete(i),n.delete(t),m}var Cg=eA;var tA=1,Ag="[object Arguments]",Mg="[object Array]",yc="[object Object]",rA=Object.prototype,Ig=rA.hasOwnProperty;function oA(i,t,e,r,o,n){var a=pt(i),s=pt(t),l=a?Mg:Mo(i),c=s?Mg:Mo(t);l=l==Ag?yc:l,c=c==Ag?yc:c;var u=l==yc,p=c==yc,d=l==c;if(d&&$i(i)){if(!$i(t))return!1;a=!0,u=!1}if(d&&!u)return n||(n=new Wn),a||ec(i)?mc(i,t,e,r,o,n):Tg(i,t,l,e,r,o,n);if(!(e&tA)){var f=u&&Ig.call(i,"__wrapped__"),h=p&&Ig.call(t,"__wrapped__");if(f||h){var m=f?i.value():i,y=h?t.value():t;return n||(n=new Wn),o(m,y,e,r,n)}}return d?(n||(n=new Wn),Cg(i,t,e,r,o,n)):!1}var Eg=oA;function Ng(i,t,e,r,o){return i===t?!0:i==null||t==null||!Vt(i)&&!Vt(t)?i!==i&&t!==t:Eg(i,t,e,r,Ng,o)}var Dg=Ng;function iA(i,t){return i!=null&&t in Object(i)}var _g=iA;function nA(i,t,e){t=yr(t,i);for(var r=-1,o=t.length,n=!1;++r<o;){var a=ni(t[r]);if(!(n=i!=null&&e(i,a)))break;i=i[a]}return n||++r!=o?n:(o=i==null?0:i.length,!!o&&_n(o)&&En(a,o)&&(pt(i)||Ln(i)))}var Rg=nA;function aA(i,t){return i!=null&&Rg(i,t,_g)}var Lg=aA;var sA=function(){return dt.Date.now()},gc=sA;var lA="Expected a function",cA=Math.max,uA=Math.min;function dA(i,t,e){var r,o,n,a,s,l,c=0,u=!1,p=!1,d=!0;if(typeof i!="function")throw new TypeError(lA);t=Qd(t)||0,ft(e)&&(u=!!e.leading,p="maxWait"in e,n=p?cA(Qd(e.maxWait)||0,t):n,d="trailing"in e?!!e.trailing:d);function f(T){var M=r,g=o;return r=o=void 0,c=T,a=i.apply(g,M),a}function h(T){return c=T,s=setTimeout(b,t),u?f(T):a}function m(T){var M=T-l,g=T-c,D=t-M;return p?uA(D,n-g):D}function y(T){var M=T-l,g=T-c;return l===void 0||M>=t||M<0||p&&g>=n}function b(){var T=gc();if(y(T))return v(T);s=setTimeout(b,m(T))}function v(T){return s=void 0,d&&r?f(T):(r=o=void 0,a)}function w(){s!==void 0&&clearTimeout(s),c=0,r=l=o=s=void 0}function O(){return s===void 0?a:v(gc())}function S(){var T=gc(),M=y(T);if(r=arguments,o=this,l=T,M){if(s===void 0)return h(l);if(p)return clearTimeout(s),s=setTimeout(b,t),f(l)}return s===void 0&&(s=setTimeout(b,t)),a}return S.cancel=w,S.flush=O,S}var xc=dA;function pA(i){var t=i==null?0:i.length;return t?i[t-1]:void 0}var Bg=pA;function fA(i,t){return t.length<2?i:oc(i,Ny(t,0,-1))}var Vg=fA;function hA(i,t){return Dg(i,t)}var op=hA;function mA(i,t){return t=yr(t,i),i=Vg(i,t),i==null||delete i[ni(Bg(t))]}var zg=mA;function yA(i){return Ey(i)?void 0:i}var Gg=yA;var gA=1,xA=2,bA=4,vA=ic(function(i,t){var e={};if(i==null)return e;var r=!1;t=Xl(t,function(n){return n=yr(n,i),r||(r=n.length>1),n}),Yr(i,lc(i),e),r&&(e=fc(e,gA|xA|bA,Gg));for(var o=t.length;o--;)zg(e,t[o]);return e}),Yn=vA;function SA(i,t,e,r){if(!ft(i))return i;t=yr(t,i);for(var o=-1,n=t.length,a=n-1,s=i;s!=null&&++o<n;){var l=ni(t[o]),c=e;if(l==="__proto__"||l==="constructor"||l==="prototype")return i;if(o!=a){var u=s[l];c=r?r(u,l,s):void 0,c===void 0&&(c=ft(u)?u:En(t[o+1])?[]:{})}Dn(s,l,c),s=s[l]}return i}var Fg=SA;function wA(i,t,e){for(var r=-1,o=t.length,n={};++r<o;){var a=t[r],s=oc(i,a);e(s,a)&&Fg(n,yr(a,i),s)}return n}var jg=wA;function PA(i,t){return jg(i,t,function(e,r){return Lg(i,r)})}var Ug=PA;var OA=ic(function(i,t){return i==null?{}:Ug(i,t)}),Nr=OA;var ue=class{modifyById(t,e){let r=this;if(r[t]===void 0)throw new Error("not expected");{let n={...r,[t]:e};return Object.setPrototypeOf(n,ue.prototype),n}}add(t,e){return this.runOp({type:1,id:t,data:e})?.data??this}runOp(t){let e=this;if(t.type===1){let r=e[t.id],o;r===void 0?o={type:2,id:t.id}:o={type:1,id:t.id,data:r};let{id:n,data:a}=t,s={...e,[n]:a};return Object.setPrototypeOf(s,ue.prototype),{data:s,actual:t,reverse:o}}else if(t.type===2){let{id:r}=t,o=e[r];if(o===void 0)return null;{let n={...e};return Object.setPrototypeOf(n,ue.prototype),delete n[r],{data:n,actual:t,reverse:{type:1,id:r,data:o}}}}return null}};function Ds(i){if(i.deepFreeze!==void 0){i.deepFreeze(i);return}let t=Object.getOwnPropertyNames(i);for(let e of t){let r=i[e];r&&typeof r=="object"&&Ds(r)}return Object.freeze(i)}function kg(i,t){let e=0;for(;e<i.length&&e<t.length;){if(i[e]<t[e])return-1;if(i[e]>t[e])return 1;e+=1}return e!==t.length?-1:e!==i.length?1:0}var Kn=class extends Error{};function bc(i){let t={...i};return Object.setPrototypeOf(t,Object.getPrototypeOf(i)),t}function Kr(i,t,e){if(i===void 0?t===void 0?(i=0,t=10):i=t-10:t===void 0&&(t=i+10),i>t){let n=i;i=t,t=n}let r=[],o=1/(e+1);for(let n=0;n<e;n++){let a=i+(t-i)*(n+.75+Math.random()*.5)*o;r.push(a)}return r}function Qn(i){return i instanceof Uint8Array||i instanceof Uint16Array||i instanceof Uint32Array||i instanceof Int8Array||i instanceof Int16Array||i instanceof Int32Array||i instanceof Float32Array||i instanceof Float64Array}function Hg(){return typeof process<"u"}function Wg(i,t){for(let e of i)t(e.id,e.data)!==!0&&Wg(e.children,t)}function qg(i,t){if(t(i.id,i.data)!==!0)for(let e of i.children)qg(e,t)}var Qe=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Qe.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Ds(this[e]),e++}fillCaches0(e,r){this.objCaches.set(e.id,e),this.parentCaches.set(e.id,r);for(let o of e.children)this.fillCaches0(o,e.id)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,this.parentCaches=new Map;for(let e of this)this.fillCaches0(e,null)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}nonExistOrDescendantOf(e,r){if(!this.has(e))return!0;for(;e;){let o=this.parent(e);if(o===r)return!0;e=o}return!1}rootAcestor(e){for(;e;){let r=this.parent(e);if(r)e=r;else return e}return e}isDescendantOf(e,r){for(;e;){let o=this.parent(e);if(o===r)return!0;e=o}return!1}data(e){return this.get(e)?.data}has(e){return this.childrenOf(e)!==void 0}get(e){return this.fillCaches(),this.objCaches.get(e)}childrenOf(e){return e===null?this:this.get(e)?.children}traverseFrom(e,r){if(e===null)this.traverse(r);else{let o=this.get(e);o&&qg(o,r)}}traverse(e){Wg(this,e)}totalSize(){return this.fillCaches(),this.objCaches.size}parent(e){return this.fillCaches(),this.parentCaches.get(e)}childrenArray(e){return e===null?this:this.get(e).children}modifyById(e,r){if(this.get(e)===void 0)throw new Error("not expected");{let n=this.parent(e),a=this.childrenArray(n),s=a.findIndex(u=>u.id===e);if(s<0)throw new Error("not expected");let l=a[s];return a=[...a],a[s]={...l,data:r},this.modifyArrayBy(n,a)}}modifyArrayBy(e,r){let o=e,n=r;for(;o!==null;){let s=n,l=o;if(o=this.parent(o),o===void 0)throw new Error;n=this.childrenArray(o);let c=n.findIndex(u=>u.id===l);if(c<0)throw new Error;n=[...n],n[c]={...n[c],children:s}}Object.setPrototypeOf(n,Qe.prototype);let a=n;return a.fillCaches(),a}runOp(e){switch(e.type){case 7:return this.addOp(e);case 8:return this.deleteOp(e);case 9:return this.moveOp(e)}return null}checkDuplicatedIdRec({id:e,children:r}){if(this.get(e)!==void 0)return!0;for(let o of r)if(this.checkDuplicatedIdRec(o))return!0;return!1}addOp(e){let{parent:r,fi:o,id:n,data:a,children:s}=e;if(r!==null&&this.get(r)===void 0)return null;if(this.checkDuplicatedIdRec(e))return null;{let l=r,c=this.childrenArray(l),u={fi:o,id:n,data:a,children:s};return c=[...c,u],c.sort((d,f)=>d.fi-f.fi),e.localIndex=c.indexOf(u),{data:this.modifyArrayBy(l,c),actual:e,reverse:{type:8,id:n}}}}deleteOp(e){let{id:r}=e;if(this.get(r)===null)return null;{let o=this.parent(r);if(o===void 0)return null;let n=this.childrenArray(o),a=n.findIndex(c=>c.id===r);e.localIndex=a,n=[...n];let s=n.splice(a,1)[0];return{data:this.modifyArrayBy(o,n),actual:e,reverse:{type:7,...s,parent:o}}}}moveOp(e){let{parent:r,fi:o,id:n}=e;if(r!==null&&this.get(r)===void 0)return this.deleteOp({type:8,id:n});if(r!==null){let f=r;for(;f!==null;){if(f===void 0)throw new Error;if(f===n)throw new Kn("cyclic tree");f=this.parent(f)}}let a=this.parent(n);if(a===void 0)return null;let s=a,l=this.childrenArray(a),c=l.findIndex(f=>f.id===n);l=[...l];let u=l.splice(c,1)[0],p=this.modifyArrayBy(a,l);a=r,l=p.childrenArray(a);let d=u.fi;return u={...u,fi:o},l=[...l,u],l.sort((f,h)=>f.fi-h.fi),e.localIndex=l.indexOf(u),p=p.modifyArrayBy(a,l),{data:p,actual:e,reverse:{type:9,parent:s,fi:d,id:n}}}previous(e,r){if(r===null){let n=this.childrenArray(e);return n.length===0?null:n[n.length-1].id}let o=null;for(let n of this.childrenArray(e)){if(n.id===r)return o;o=n.id}return null}traverseSortNext(e){let r=this.parent(e);if(r!==void 0){let o=this.childrenArray(r),n=o.findIndex(a=>a.id===e)+1;if(n<o.length)return o[n].id;if(r)return this.traverseSortNext(r)}}sortNext(e){let r=this.childrenArray(e);return r.length>0?r[0].id:this.traverseSortNext(e)}traverseSortPrevious(e){let r=this.childrenArray(e);return r.length>0?this.traverseSortPrevious(r[r.length-1].id):e}sortPrevious(e){let r=this.parent(e);if(r!==void 0){let o=this.childrenArray(r),n=o.findIndex(a=>a.id===e)-1;return n>=0?this.traverseSortPrevious(o[n].id):r}}getAllSorted(e){let r=[];for(let o of e){let n=this.getWithSortKey(o.id);n!==void 0&&r.push({...o,...n})}r.sort((o,n)=>kg(o.sortKey,n.sortKey));for(let o of r)delete o.sortKey;return r}getWithSortKey(e){var r=e;let o=[],n=this.get(r),a=n;if(n!==void 0){for(;r;)o.splice(0,0,n.fi),r=this.parent(r),r!==null&&(n=this.get(r));return{...a,sortKey:o}}}insertBeforeHelper(e,r,o){return this.insertAfterHelper(e,this.previous(e,r),o)}insertAfterHelper(e,r,o){let n=this.childrenArray(e);if(r===null){if(n.length===0)return Kr(0,o,o);{let a=n[0].fi;return Kr(a-o,a,o)}}else{let a=this.get(r);if(a===void 0||this.parent(r)!==e)throw new Error("illegal args");let s=n.find(l=>l.fi>a.fi);if(s===void 0){let l=n[n.length-1].fi;return Kr(l,l+o,o)}else return Kr(a.fi,s.fi,o)}}};var Zn;(t=>{function i(e,r){if(r.type!==0)return null;if(Array.isArray(e)){let o=r.props,n={},a=[...e],s=!1;if(o)for(let l of Object.keys(o)){let c=parseInt(l);if(isNaN(c))throw new Error("wrong index");n[l]=a[c],a[c]=o[l],s=!0}return s?{data:a,actual:r,reverse:{type:0,props:n}}:null}else{let o=r.props,n={},a={...e},s=!1;if(o)for(let l of Object.keys(o)){n[l]=a[l];let c=o[l];c===void 0?delete a[l]:a[l]=c,s=!0}return s?{data:a,actual:r,reverse:{type:0,props:n}}:null}}t.runOp=i})(Zn||(Zn={}));var be=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,be.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Ds(this[e]),e++}fillCaches0(e){this.objCaches.set(e.id,e)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,Object.getOwnPropertyDescriptor(this,"objCaches").enumerable=!1;for(let e of this)this.fillCaches0(e)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}data(e){return this.get(e)?.data}get(e){return this.fillCaches(),this.objCaches.get(e)}modifyById(e,r){if(this.get(e)===void 0)throw new Error("not expected");{let n=this,a=n.findIndex(c=>c.id===e);if(a<0)throw new Error("not expected");let s=n[a];return n=[...n],n[a]={...s,data:r},this.modifyArrayBy(n)}}modifyArrayBy(e){Object.setPrototypeOf(e,be.prototype);let r=e;return Hg()||r.fillCaches(),r}runOp(e){switch(e.type){case 4:return this.addOp(e);case 5:return this.deleteOp(e);case 6:return this.moveOp(e)}return null}addOp(e){let{fi:r,id:o,data:n}=e,a=this,s={fi:r,id:o,data:n};return a=[...a,s],a.sort((c,u)=>c.fi-u.fi),e.localIndex=a.indexOf(s),{data:this.modifyArrayBy(a),actual:e,reverse:{type:5,id:o}}}deleteOp(e){let{id:r}=e,o=this,n=o.findIndex(l=>l.id===r);if(n===-1)return null;e.localIndex=n,o=[...o];let a=o.splice(n,1)[0];return{data:this.modifyArrayBy(o),actual:e,reverse:{type:4,...a}}}moveOp(e){let{fi:r,id:o}=e,n=this;n=[...n];let a=n.findIndex(u=>u.id===o);if(a===-1)return null;let s=n[a].fi,l={...n[a],fi:r};return n[a]=l,n.sort((u,p)=>u.fi-p.fi),e.localIndex=n.indexOf(l),{data:this.modifyArrayBy(n),actual:e,reverse:{type:6,fi:s,id:o}}}previous(e){if(e===null)return this.length===0?null:this[this.length-1].id;let r=null;for(let o of this){if(o.id===e)return r;r=o.id}return null}insertBeforeHelper(e,r){return this.insertAfterHelper(this.previous(e),r)}insertAfterHelper(e,r){let o=this;if(e===null){if(o.length===0)return Kr(0,r,r);{let n=o[0].fi;return Kr(n-r,n,r)}}else{let n=this.get(e);if(n===void 0)throw new Error("illegal args");let a=o.find(s=>s.fi>n.fi);if(a===void 0){let s=o[o.length-1].fi;return Kr(s,s+r,r)}else return Kr(n.fi,a.fi,r)}}};function Jn(i){return i&&typeof i=="object"&&i instanceof He}var He=class{unusedFunOverridesTable(t){}runOp(t){let e=[],r=this,o=0,n={};for(;o<t.path.length;){if(e.push(r),r=r===void 0?void 0:r[t.path[o]],r!==void 0&&!Jn(r))return null;o+=1}r=r?bc(r):new He;for(let[l,c]of Object.entries(t.props)){let u=r[l];n[l]=u,c===void 0?delete r[l]:r[l]=c}for(;o>0;){if(Object.keys(r).length===0){let l=e[o-1];l&&(r=bc(l),delete r[t.path[o-1]])}else{let l=e[o-1];if(l){let c=bc(l);c[t.path[o-1]]=r,r=c}else{let c=new He;c[t.path[o-1]]=r,r=c}}o-=1}let a=Object.setPrototypeOf(r,He.prototype),s={...t,props:n};return{data:a,actual:t,reverse:s}}},Qr;(r=>{function i(o,n){return _s(o,n)??o}r.apply=i;function t(o,n){return np(o,n)}r.merge=t;function e(o,n){let a=0,s=n.path,l=o;for(;a<s.length&&l!==void 0;){if(l=Ze.zoomOnce(l,s[a]),l===void 0)return n;if(!Jn(l))return;a+=1}if(l===void 0)return n;if(!!Jn(l))if(n.type===0){let c={...n.props};for(let u of Object.keys(l))delete c[u];return{...n,props:c}}else if(n.type===1||n.type===4||n.type===7){let c=ip([n],l);return c?c[0]:n}else return n}r.filterOp=e})(Qr||(Qr={}));function ip(i,t){if(t===void 0)return;let e=!1,r=i.map(o=>{let n=o.id,a=_s(o.data,t[n]);if(e=e||a!==void 0,a===void 0&&(a=o.data),o.children){let s=ip(o.children,t);return s!==void 0?e=!0:s=o.children,{...o,id:n,data:a,children:s}}else return{...o,id:n,data:a}});if(e)return r}function TA(i,t){if(t===void 0)return;let e=!1,r=i.map(o=>{let n=o.id,a=_s(o.data,t[n]);return e=e||a!==void 0,a===void 0&&(a=o.data),{...o,id:n,data:a}});if(e)return Object.setPrototypeOf(r,Object.getPrototypeOf(i)),r}function _s(i,t){if(!Jn(t))return t;if(i instanceof Qe){let e=ip(i,t);return e!==void 0&&Object.setPrototypeOf(e,Object.getPrototypeOf(i)),e}else{if(i instanceof be)return TA(i,t);if(Array.isArray(i)){let e=!1,r=i.map((o,n)=>{let a=_s(o,t[n]);return e=e||a!==void 0,a===void 0&&(a=o),a});return e?(Object.setPrototypeOf(r,Object.getPrototypeOf(i)),r):void 0}else{if(i instanceof He)return np(i,t);if(i&&typeof i=="object"){let e={},r=!1;for(let[o,n]of Object.entries(i)){let a=_s(n,t[o]);r=r||a!==void 0,a===void 0&&(a=n),e[o]=a}return r?(Object.setPrototypeOf(e,Object.getPrototypeOf(i)),e):void 0}}}}function np(i,t){if(i===void 0)return t;if(t===void 0)return i;if(!Jn(t))return t;if(!Jn(i))return Qr.apply(i,t);let e=new Set;for(let o of Object.keys(i))e.add(o);for(let o of Object.keys(t))e.add(o);let r=new He;for(let o of e){let n=np(i===void 0?void 0:i[o],t===void 0?void 0:t[o]);r[o]=n}return r}function $g(i,t){let e={cur:[],result:[],len:0};return i=Rs(i,t,e)??i,[i,e.result]}function vc(i,t){return i===null?null:(i.cur[i.len]=t,i.len+=1,i)}function Sc(i){i&&(i.len-=1)}function CA(i){if(i===null)return null;i.result.push(i.cur.slice(0,i.len))}function Xg(i,t,e){let r=!1,o=i.map(n=>{let a=n.id,s=t[a];if(s!==void 0&&typeof s=="string"&&(r=!0,a=s,e!==null))throw new Error("not supported");let l=Rs(n.data,t,vc(e,a));Sc(e),r=r||l!==void 0,l===void 0&&(l=n.data);let c=Xg(n.children,t,e);return c!==void 0?r=!0:c=n.children,{...n,id:a,data:l,children:c}});if(r)return o}function AA(i,t,e){let r=!1,o=i.map(n=>{let a=n.id,s=t[a];if(s!==void 0&&typeof s=="string"&&(r=!0,a=s,e!==null))throw new Error("not supported");let l=Rs(n.data,t,vc(e,a));return Sc(e),r=r||l!==void 0,l===void 0&&(l=n.data),{...n,id:a,data:l}});if(r)return Object.setPrototypeOf(o,Object.getPrototypeOf(i)),o}function Rs(i,t,e){if(i instanceof Qe){let r=Xg(i,t,e);return r!==void 0&&Object.setPrototypeOf(r,Object.getPrototypeOf(i)),r}else{if(i instanceof be)return AA(i,t,e);if(Array.isArray(i)){let r=!1,o=i.map((n,a)=>{let s=Rs(n,t,vc(e,a));return Sc(e),r=r||s!==void 0,s===void 0&&(s=n),s});return r?(Object.setPrototypeOf(o,Object.getPrototypeOf(i)),o):void 0}else if(i&&typeof i=="object"&&!Qn(i)){let r={},o=!1;for(let[n,a]of Object.entries(i))if(n!=="name"&&n!=="variableId"){let s=t[n];if(typeof s=="string"){if(e!==null)throw new Error("not supported");o=!0,n=s}let l=Rs(a,t,vc(e,n));Sc(e),o=o||l!==void 0,l===void 0&&(l=a),r[n]=l}else r[n]=a;return o?(Object.setPrototypeOf(r,Object.getPrototypeOf(i)),r):void 0}else if(typeof i=="string"){let r=t[i];return r!==void 0&&CA(e),r}else return}}var ea;(t=>{function i(e,r){let o=Ze.zoom(r,e.path);if(typeof o=="object"){let n={};for(let a of Object.keys(e.props))n[a]=o[a];return{...e,props:n}}else return{...e,props:{}}}t.replaceProps=i})(ea||(ea={}));var nt;(s=>{function i(l,c){return{...l,path:l.path.slice(c)}}s.drop=i;function t(l,c){return e(l,c)?.data??l}s.applySimple=t;function e(l,c){let u=c.path;for(var p=[];;){let d;if(l instanceof He&&c.type===0&&(d=l.runOp({...c,path:u.slice(p.length)}),d===null&&(d=void 0)),d===void 0&&p.length===u.length&&(l instanceof Qe||l instanceof be||l instanceof ue?d=l.runOp(c):d=Zn.runOp(l,c)),d!==void 0)if(d!==null){let m=d.data;for(let y=p.length-1;y>=0;y--){let b=u[y],v=p[y];if(v instanceof Qe){if(typeof b=="number")throw new Error("illegal arg");m=v.modifyById(b,m)}else if(v instanceof be){if(typeof b=="number")throw new Error("illegal arg");m=v.modifyById(b,m)}else if(v instanceof ue){if(typeof b=="number")throw new Error("illegal arg");m=v.modifyById(b,m)}else if(v instanceof He){let w={...v,[b]:m};m=Object.setPrototypeOf(w,He.prototype)}else if(typeof v=="object")if(Array.isArray(v)){if(typeof b=="string"&&(b=parseInt(b),isNaN(b)))throw new Error("Invalid path");let w=m;m=[...v],m[b]=w}else m={...v,[b]:m};else return null}return{data:m,actual:{...d.actual,path:u},reverse:{...d.reverse,path:u}}}else return null;let f=u[p.length],h;if(l instanceof Qe){if(typeof f=="number")throw new Error("");h=l.get(f)?.data}else if(l instanceof be){if(typeof f=="number")throw new Error("");h=l.get(f)?.data}else l!==null&&(h=l[f]);if(h!==void 0)p.push(l),l=h;else return null}}s.apply=e;function r(l,c){for(let u=0;u<l.length&&u<c.length;u++)if(l[u]!==c[u])return!0;return!1}s.pathDisjoint=r;function o(l,c){if(l.length!==c.length)return!1;for(let u=0;u<l.length;u++)if(l[u]!==c[u])return!1;return!0}s.pathEq=o;function n(l,c){return r(l.path,c.path)}s.commutative=n;function a(l,c){return l.type===0&&c.type===0&&o(l.path,c.path)?Object.keys(l.props).every(u=>c.props[u]!==void 0):!1}s.subsumed=a})(nt||(nt={}));var Ls;(l=>{function i(){return[]}l.empty=i;function t(c,u){let p=[];for(let d of c){let[f,...h]=d.path;f===u&&p.push({...d,path:h})}return p}l.removePrefix=t;function e(c,u){return c.map(p=>({...p,path:[u,...p.path]}))}l.addPrefix=e;function r(c,u){return[...c,...u]}l.concat=r;function o(c,u){return[...c.filter(d=>!u.some(f=>nt.subsumed(d,f))),...u]}l.compress=o;function n(c,u){return c.every(p=>u.every(d=>nt.commutative(p,d)))}l.commutative=n;function a(c,u){for(let p of u){let d=s(c,p);d!==null&&(c=d.data)}return c}l.applyAll=a;function s(c,u){var p=c;let d=[],f=[];for(let h of u)try{if(h.type===3||h.type===5&&h.path[h.path.length-1]==="variables"){let m,y,b;if(h.type===3?(m=Ze.zoom(p,[...h.path,h.id]),b=nt.apply(p,{...h,type:2})):(m=Ze.zoom(p,[...h.path,h.id,"value"]),b=nt.apply(p,h)),b!==null){p=b.data;let[v,w]=$g(p,{[h.id]:m});p=v;for(let O=0;O<w.length;O++){let S=w[O],T=S.pop();if(typeof T=="number"){let M=[T];for(let D=O+1;D<w.length;D++){let E=w[D],I=E[E.length-1];if(typeof I=="number"&&Ze.equal(S,E.slice(0,E.length-1)))M.push(I),w.splice(D,1);else break}let g=Ze.zoom(p,S);y=g.map((D,E)=>M.includes(E)?h.id:D),m=g,T=S.pop()}else{if(T==="alphaOverride"||T==="alpha"){m/=100;let M=m,g=Ze.zoom(p,S.slice(0,S.length-2)),D=g.layers.map(E=>E.id===S[S.length-1]?{...E,data:{...E.data,[T]:M}}:E);Object.setPrototypeOf(D,Object.getPrototypeOf(g.layers)),g.layers=D}y=h.id}d.push({type:0,path:S,props:{[T]:m}}),f.push({type:0,path:S,props:{[T]:y}})}f.push(b.reverse),d.push(b.actual)}}else{let m=nt.apply(p,h);m!==null&&(d.push(m.actual),p=m.data,f.push(m.reverse))}}catch(m){if(m instanceof Kn)return null;throw m}return{data:p,actual:d,reverse:f.reverse()}}l.apply=s})(Ls||(Ls={}));var Yg=Symbol(),MA=Symbol(),Pc=Symbol(),Ki=class{reportOp(t,e,r=[]){let o=this;if(e===null)return;o._current=e.data;let n=r;for(;!(o instanceof wc);){let a=o._path,s=o._current;if(a!==""&&n.splice(0,0,a),o=o._parent,o===null)return;o.update(a,s)}o.push(n,t,e.actual,e.reverse)}deleteChildren(t){if(this._children){let e=this._children[t];if(e){let r=e[Pc];r&&r(),delete this._children[t]}}}},sp=class extends Ki{constructor(t,e,r){super(),this._parent=t,this._path=e,this._current=r}update(t,e){if(Array.isArray(this._current)){if(typeof t=="string"&&(t=parseInt(t),isNaN(t)))throw new Error("Invalid path");this._current=[...this._current],this._current[t]=e}else if(this._current instanceof He){let r={...this._current,[t]:e};this._current=Object.setPrototypeOf(r,He.prototype)}else this._current={...this._current,[t]:e}}runOp(t){this.reportOp(t,Zn.runOp(this._current,t),t.path)}},lp=class extends Ki{constructor(t,e,r){super(),this._parent=t,this._path=e,this._current=r}update(t,e){this._current={...this._current,[t]:e},Object.setPrototypeOf(this._current,ue.prototype)}runOp(t){this.reportOp(t,this._current.runOp(t))}},Kg={get(i,t){if(t===Pc)return()=>{i._parent=null};if(t===Yg)return i._current;if(t===MA)return i;let{_current:e,_children:r}=i;if(t==="push"&&Array.isArray(e))throw new Error("not supported to expand array");let o=r===void 0?void 0:r[t];if(o!==void 0)return o;let n=e[t],a=Oc(i,t,n);return a!==n?(r===void 0&&(r={},i._children=r),r[t]=a,a):n},has(i,t){return t in i._current},ownKeys(i){return Reflect.ownKeys(i._current)},defineProperty(){throw Error("not supported")},getPrototypeOf(i){return Object.getPrototypeOf(i._current)},setPrototypeOf(){throw Error("not supported")},getOwnPropertyDescriptor(i,t){let e=i._current,r=Reflect.getOwnPropertyDescriptor(e,t);return r&&{writable:!0,configurable:!0,enumerable:r.enumerable,value:e[t]}}},IA={...Kg,set(i,t,e){let r={type:0,props:{[t]:at(e)??e}};return i.deleteChildren(t),i.runOp(r),!0},deleteProperty(i,t){let e={type:0,props:{[t]:void 0}};return i.deleteChildren(t),i.runOp(e),!0}},EA={...Kg,set(i,t,e){return e===void 0?this.deleteProperty(i,t):(i.deleteChildren(t),i.runOp({type:1,id:t,data:e})),!0},deleteProperty(i,t){return i.runOp({type:2,id:t}),!0}},ta=class extends Ki{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[Pc]=()=>{this._parent=null}}unproxy(){return this._current}update(t,e){this._current=this._current.modifyById(t,e)}runOp(t){this.reportOp(t,this._current.runOp(t))}randomId(){return this._current.randomId()}isDescendantOf(t,e){return this._current.isDescendantOf(t,e)}childrenOf(t){return this._current.childrenOf(t)}traverse(t){return this._current.traverse(t)}get(t){return this._current.get(t)}parent(t){return this._current.parent(t)}traverse(t){this._current.traverse((e,r)=>{t(e,this.data(e))})}data(t){let{_current:e,_children:r}=this,o=r===void 0?void 0:r[t];if(o!==void 0)return o;let n=e.get(t)?.data,a=Oc(this,t,n);return a!==n?(r===void 0&&(r={},this._children=r),r[t]=a,a):n}add(t,e,r,o,n){this.runOp({type:7,parent:t,fi:e,id:r,data:o,children:n})}move(t,e,r){this.runOp({type:9,parent:t,fi:e,id:r})}insertAfter(t,e,r){let o=this._current.insertAfterHelper(t,e,r.length);for(let n=0;n<r.length;n++){let a=r[n];this.add(t,o[n],a.id,a.data,a.children)}}insertBefore(t,e,r){let o=this._current.insertBeforeHelper(t,e,r.length);for(let n=0;n<r.length;n++){let a=r[n];this.add(t,o[n],a.id,a.data,a.children)}}moveAfter(t,e,r){let o=this._current.insertAfterHelper(t,e,r.length);for(let n=0;n<r.length;n++){let a=r[n];this.move(t,o[n],a)}}moveBefore(t,e,r){let o=this._current.insertBeforeHelper(t,e,r.length);for(let n=0;n<r.length;n++){let a=r[n];this.move(t,o[n],a)}}delete(t){this.deleteChildren(t),this.runOp({type:8,id:t})}sortNext(t){return this._current.sortNext(t)}sortPrevious(t){return this._current.sortPrevious(t)}getAllSorted(t){return this._current.getAllSorted(t)}},ra=class extends Ki{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[Pc]=()=>{this._parent=null}}unproxy(){return this._current}get length(){return this._current.length}forEach(t){let e=this.length;for(let r=0;r<e;r++){let o=this._current[r].id,n=this._current[r].fi;t(this.data(this._current[r].id),o,n)}}find(t){let e=this.length;for(let r=0;r<e;r++){let o=this._current[r].id;if(t(this.data(o),o))return this.get(o)}}update(t,e){this._current=this._current.modifyById(t,e)}randomId(){return this._current.randomId()}get(t){return{...this._current.get(t),data:this.data(t)}}data(t){let{_current:e,_children:r}=this,o=r===void 0?void 0:r[t];if(o!==void 0)return o;let n=e.get(t)?.data,a=Oc(this,t,n);return a!==n?(r===void 0&&(r={},this._children=r),r[t]=a,a):n}runOp(t){this.reportOp(t,this._current.runOp(t))}add(t,e,r){this.runOp({type:4,fi:t,id:e,data:r})}move(t,e){this.runOp({type:6,fi:t,id:e})}insertAfter(t,e){let r=this._current.insertAfterHelper(t,e.length);for(let o=0;o<e.length;o++){let n=e[o];this.add(r[o],n.id,n.data)}}insertBefore(t,e){let r=this._current.insertBeforeHelper(t,e.length);for(let o=0;o<e.length;o++){let n=e[o];this.add(r[o],n.id,n.data)}}moveAfter(t,e){let r=this._current.insertAfterHelper(t,e.length);for(let o=0;o<e.length;o++){let n=e[o];this.move(r[o],n)}}moveBefore(t,e){let r=this._current.insertBeforeHelper(t,e.length);for(let o=0;o<e.length;o++){let n=e[o];this.move(r[o],n)}}delete(t){this.deleteChildren(t),this.runOp({type:5,id:t})}};function ap(i,t,e){if(i.length>0){let r=i[i.length-1];if(r.type===0&&t.type===0&&Ze.equal(r.path,e)){Object.assign(r.props,t.props);return}}i.push({...t,path:e})}var wc=class extends Ki{constructor(t){super(),this.ts=[],this.actual=[],this.reverse=[],this._current=t}update(t,e){if(t!=="")throw new Error("");this._current=e}push(t,e,r,o){ap(this.ts,e,t),ap(this.actual,r,t),ap(this.reverse,o,t)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function Oc(i,t,e){return e instanceof Qe?new ta(i,t,e):e instanceof be?new ra(i,t,e):e instanceof ue?new Proxy(new lp(i,t,e),EA):e!==null&&typeof e=="object"?Qn(e)?e:new Proxy(new sp(i,t,e),IA):e}function cp(i){let t=new wc(i);return[Oc(t,"",i),t]}function ai(i,t){let[e,r]=cp(i);return t(e),r.result()}function at(i){return i instanceof ta||i instanceof ra?i._current:i!==null&&typeof i=="object"?i[Yg]:i}var Ze;(o=>{function i(n,a){if(a.length===n.length)for(var s=0;s<n.length;){if(n[s]!==a[s])return!1;s+=1}else return!1;return!0}o.equal=i;function t(n,a,s){let l=r(s,n);if(l!==void 0&&typeof l=="object"&&l!==null){let c={...a};return Object.keys(l).forEach(u=>{delete c[u]}),c}else return a}o.removeOverridden=t;function e(n,a){if((n instanceof Qe||n instanceof ta)&&typeof a=="string")return n.data(a);if((n instanceof be||n instanceof ra)&&typeof a=="string")return n.data(a);if(typeof a=="number"&&Array.isArray(n))return n[a];if(typeof a=="string"&&typeof n=="object"&&n!==null)return n[a]}o.zoomOnce=e;function r(n,a,s=0){for(;s<a.length&&n!==void 0;)n=e(n,a[s]),s+=1;return n}o.zoom=r})(Ze||(Ze={}));function Qg(i,t){let e=[];if(t.length===i.length)for(var r=0;r<i.length;){if(t[r]==="*")e.push(i[r]);else if(i[r]!==t[r])return null;r+=1}else return null;return e}function Le(i,t){let e=[];if(t.length<=i.length)for(var r=0;r<t.length;){if(t[r]==="*")e.push(i[r]);else if(i[r]!==t[r])return null;r+=1}else return null;return e}var Tc=class{},Bs=class extends Tc{constructor(e){super();this.id=e}},Vs=class extends Tc{constructor(e){super();this.data=e}};var dp;try{dp=new TextDecoder}catch{}var pe,li,G=0;var n0=[],pp=n0,fp=0,Jt={},ke,si,gr=0,Zr=0,cr,Eo,$t=[],qe,Zg={useRecords:!1,mapsAsObjects:!0},zs=class{},mp=new zs;mp.name="MessagePack 0xC1";var oa=!1,Jr=class{constructor(t){t&&(t.useRecords===!1&&t.mapsAsObjects===void 0&&(t.mapsAsObjects=!0),t.structures?t.structures.sharedLength=t.structures.length:t.getStructures&&((t.structures=[]).uninitialized=!0,t.structures.sharedLength=0)),Object.assign(this,t)}unpack(t,e){if(pe)return u0(()=>(Ac(),this?this.unpack(t,e):Jr.prototype.unpack.call(Zg,t,e)));li=e>-1?e:t.length,G=0,fp=0,Zr=0,si=null,pp=n0,cr=null,pe=t;try{qe=t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))}catch(r){throw pe=null,t instanceof Uint8Array?r:new Error("Source must be a Uint8Array or Buffer but was a "+(t&&typeof t=="object"?t.constructor.name:typeof t))}if(this instanceof Jr){if(Jt=this,this.structures)return ke=this.structures,Cc();(!ke||ke.length>0)&&(ke=[])}else Jt=Zg,(!ke||ke.length>0)&&(ke=[]);return Cc()}unpackMultiple(t,e){let r,o=0;try{oa=!0;let n=t.length,a=this?this.unpack(t,n):Ec.unpack(t,n);if(e){for(e(a);G<n;)if(o=G,e(Cc())===!1)return}else{for(r=[a];G<n;)o=G,r.push(Cc());return r}}catch(n){throw n.lastPosition=o,n.values=r,n}finally{oa=!1,Ac()}}_mergeStructures(t,e){t=t||[];for(let r=0,o=t.length;r<o;r++){let n=t[r];n&&(n.isShared=!0,r>=32&&(n.highByte=r-32>>5))}t.sharedLength=t.length;for(let r in e||[])if(r>=0){let o=t[r],n=e[r];n&&(o&&((t.restoreStructures||(t.restoreStructures=[]))[r]=o),t[r]=n)}return this.structures=t}decode(t,e){return this.unpack(t,e)}};function Cc(){try{if(!Jt.trusted&&!oa){let t=ke.sharedLength||0;t<ke.length&&(ke.length=t)}let i=ht();if(G==li)ke.restoreStructures&&Jg(),ke=null,pe=null,Eo&&(Eo=null);else if(G>li){let t=new Error("Unexpected end of MessagePack data");throw t.incomplete=!0,t}else if(!oa)throw new Error("Data read, but end of buffer not reached");return i}catch(i){throw ke.restoreStructures&&Jg(),Ac(),(i instanceof RangeError||i.message.startsWith("Unexpected end of buffer"))&&(i.incomplete=!0),i}}function Jg(){for(let i in ke.restoreStructures)ke[i]=ke.restoreStructures[i];ke.restoreStructures=null}function ht(){let i=pe[G++];if(i<160)if(i<128){if(i<64)return i;{let t=ke[i&63]||Jt.getStructures&&a0()[i&63];return t?(t.read||(t.read=yp(t,i&63)),t.read()):i}}else if(i<144)if(i-=128,Jt.mapsAsObjects){let t={};for(let e=0;e<i;e++)t[l0()]=ht();return t}else{let t=new Map;for(let e=0;e<i;e++)t.set(ht(),ht());return t}else{i-=144;let t=new Array(i);for(let e=0;e<i;e++)t[e]=ht();return t}else if(i<192){let t=i-160;if(Zr>=G)return si.slice(G-gr,(G+=t)-gr);if(Zr==0&&li<140){let e=t<16?gp(t):s0(t);if(e!=null)return e}return hp(t)}else{let t;switch(i){case 192:return null;case 193:return cr?(t=ht(),t>0?cr[1].slice(cr.position1,cr.position1+=t):cr[0].slice(cr.position0,cr.position0-=t)):mp;case 194:return!1;case 195:return!0;case 196:return up(pe[G++]);case 197:return t=qe.getUint16(G),G+=2,up(t);case 198:return t=qe.getUint32(G),G+=4,up(t);case 199:return Qi(pe[G++]);case 200:return t=qe.getUint16(G),G+=2,Qi(t);case 201:return t=qe.getUint32(G),G+=4,Qi(t);case 202:if(t=qe.getFloat32(G),Jt.useFloat32>2){let e=Ic[(pe[G]&127)<<1|pe[G+1]>>7];return G+=4,(e*t+(t>0?.5:-.5)>>0)/e}return G+=4,t;case 203:return t=qe.getFloat64(G),G+=8,t;case 204:return pe[G++];case 205:return t=qe.getUint16(G),G+=2,t;case 206:return t=qe.getUint32(G),G+=4,t;case 207:return Jt.int64AsNumber?(t=qe.getUint32(G)*4294967296,t+=qe.getUint32(G+4)):t=qe.getBigUint64(G),G+=8,t;case 208:return qe.getInt8(G++);case 209:return t=qe.getInt16(G),G+=2,t;case 210:return t=qe.getInt32(G),G+=4,t;case 211:return Jt.int64AsNumber?(t=qe.getInt32(G)*4294967296,t+=qe.getUint32(G+4)):t=qe.getBigInt64(G),G+=8,t;case 212:if(t=pe[G++],t==114)return i0(pe[G++]&63);{let e=$t[t];if(e)return e.read?(G++,e.read(ht())):e.noBuffer?(G++,e()):e(pe.subarray(G,++G));throw new Error("Unknown extension "+t)}case 213:return t=pe[G],t==114?(G++,i0(pe[G++]&63,pe[G++])):Qi(2);case 214:return Qi(4);case 215:return Qi(8);case 216:return Qi(16);case 217:return t=pe[G++],Zr>=G?si.slice(G-gr,(G+=t)-gr):DA(t);case 218:return t=qe.getUint16(G),G+=2,Zr>=G?si.slice(G-gr,(G+=t)-gr):_A(t);case 219:return t=qe.getUint32(G),G+=4,Zr>=G?si.slice(G-gr,(G+=t)-gr):RA(t);case 220:return t=qe.getUint16(G),G+=2,t0(t);case 221:return t=qe.getUint32(G),G+=4,t0(t);case 222:return t=qe.getUint16(G),G+=2,r0(t);case 223:return t=qe.getUint32(G),G+=4,r0(t);default:if(i>=224)return i-256;if(i===void 0){let e=new Error("Unexpected end of MessagePack data");throw e.incomplete=!0,e}throw new Error("Unknown MessagePack token "+i)}}}var NA=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function yp(i,t){function e(){if(e.count++>2){let o=i.read=new Function("r","return function(){return {"+i.map(n=>NA.test(n)?n+":r()":"["+JSON.stringify(n)+"]:r()").join(",")+"}}")(ht);return i.highByte===0&&(i.read=e0(t,i.read)),o()}let r={};for(let o=0,n=i.length;o<n;o++){let a=i[o];r[a]=ht()}return r}return e.count=0,i.highByte===0?e0(t,e):e}var e0=(i,t)=>function(){let e=pe[G++];if(e===0)return t();let r=i<32?-(i+(e<<5)):i+(e<<5),o=ke[r]||a0()[r];if(!o)throw new Error("Record id is not defined for "+r);return o.read||(o.read=yp(o,i)),o.read()};function a0(){let i=u0(()=>(pe=null,Jt.getStructures()));return ke=Jt._mergeStructures(i,ke)}var hp=Mc,DA=Mc,_A=Mc,RA=Mc;function Mc(i){let t;if(i<16&&(t=gp(i)))return t;if(i>64&&dp)return dp.decode(pe.subarray(G,G+=i));let e=G+i,r=[];for(t="";G<e;){let o=pe[G++];if((o&128)===0)r.push(o);else if((o&224)===192){let n=pe[G++]&63;r.push((o&31)<<6|n)}else if((o&240)===224){let n=pe[G++]&63,a=pe[G++]&63;r.push((o&31)<<12|n<<6|a)}else if((o&248)===240){let n=pe[G++]&63,a=pe[G++]&63,s=pe[G++]&63,l=(o&7)<<18|n<<12|a<<6|s;l>65535&&(l-=65536,r.push(l>>>10&1023|55296),l=56320|l&1023),r.push(l)}else r.push(o);r.length>=4096&&(t+=Nt.apply(String,r),r.length=0)}return r.length>0&&(t+=Nt.apply(String,r)),t}function t0(i){let t=new Array(i);for(let e=0;e<i;e++)t[e]=ht();return t}function r0(i){if(Jt.mapsAsObjects){let t={};for(let e=0;e<i;e++)t[l0()]=ht();return t}else{let t=new Map;for(let e=0;e<i;e++)t.set(ht(),ht());return t}}var Nt=String.fromCharCode;function s0(i){let t=G,e=new Array(i);for(let r=0;r<i;r++){let o=pe[G++];if((o&128)>0){G=t;return}e[r]=o}return Nt.apply(String,e)}function gp(i){if(i<4)if(i<2){if(i===0)return"";{let t=pe[G++];if((t&128)>1){G-=1;return}return Nt(t)}}else{let t=pe[G++],e=pe[G++];if((t&128)>0||(e&128)>0){G-=2;return}if(i<3)return Nt(t,e);let r=pe[G++];if((r&128)>0){G-=3;return}return Nt(t,e,r)}else{let t=pe[G++],e=pe[G++],r=pe[G++],o=pe[G++];if((t&128)>0||(e&128)>0||(r&128)>0||(o&128)>0){G-=4;return}if(i<6){if(i===4)return Nt(t,e,r,o);{let n=pe[G++];if((n&128)>0){G-=5;return}return Nt(t,e,r,o,n)}}else if(i<8){let n=pe[G++],a=pe[G++];if((n&128)>0||(a&128)>0){G-=6;return}if(i<7)return Nt(t,e,r,o,n,a);let s=pe[G++];if((s&128)>0){G-=7;return}return Nt(t,e,r,o,n,a,s)}else{let n=pe[G++],a=pe[G++],s=pe[G++],l=pe[G++];if((n&128)>0||(a&128)>0||(s&128)>0||(l&128)>0){G-=8;return}if(i<10){if(i===8)return Nt(t,e,r,o,n,a,s,l);{let c=pe[G++];if((c&128)>0){G-=9;return}return Nt(t,e,r,o,n,a,s,l,c)}}else if(i<12){let c=pe[G++],u=pe[G++];if((c&128)>0||(u&128)>0){G-=10;return}if(i<11)return Nt(t,e,r,o,n,a,s,l,c,u);let p=pe[G++];if((p&128)>0){G-=11;return}return Nt(t,e,r,o,n,a,s,l,c,u,p)}else{let c=pe[G++],u=pe[G++],p=pe[G++],d=pe[G++];if((c&128)>0||(u&128)>0||(p&128)>0||(d&128)>0){G-=12;return}if(i<14){if(i===12)return Nt(t,e,r,o,n,a,s,l,c,u,p,d);{let f=pe[G++];if((f&128)>0){G-=13;return}return Nt(t,e,r,o,n,a,s,l,c,u,p,d,f)}}else{let f=pe[G++],h=pe[G++];if((f&128)>0||(h&128)>0){G-=14;return}if(i<15)return Nt(t,e,r,o,n,a,s,l,c,u,p,d,f,h);let m=pe[G++];if((m&128)>0){G-=15;return}return Nt(t,e,r,o,n,a,s,l,c,u,p,d,f,h,m)}}}}}function up(i){return Jt.copyBuffers?Uint8Array.prototype.slice.call(pe,G,G+=i):pe.subarray(G,G+=i)}function Qi(i){let t=pe[G++];if($t[t])return $t[t](pe.subarray(G,G+=i));throw new Error("Unknown extension type "+t)}var o0=new Array(4096);function l0(){let i=pe[G++];if(i>=160&&i<192){if(i=i-160,Zr>=G)return si.slice(G-gr,(G+=i)-gr);if(!(Zr==0&&li<180))return hp(i)}else return G--,ht();let t=(i<<5^(i>1?qe.getUint16(G):i>0?pe[G]:0))&4095,e=o0[t],r=G,o=G+i-3,n,a=0;if(e&&e.bytes==i){for(;r<o;){if(n=qe.getUint32(r),n!=e[a++]){r=1879048192;break}r+=4}for(o+=3;r<o;)if(n=pe[r++],n!=e[a++]){r=1879048192;break}if(r===o)return G=r,e.string;o-=3,r=G}for(e=[],o0[t]=e,e.bytes=i;r<o;)n=qe.getUint32(r),e.push(n),r+=4;for(o+=3;r<o;)n=pe[r++],e.push(n);let s=i<16?gp(i):s0(i);return s!=null?e.string=s:e.string=hp(i)}var i0=(i,t)=>{var e=ht();let r=i;t!==void 0&&(i=i<32?-((t<<5)+i):(t<<5)+i,e.highByte=t);let o=ke[i];return o&&o.isShared&&((ke.restoreStructures||(ke.restoreStructures=[]))[i]=o),ke[i]=e,e.read=yp(e,r),e.read()},c0=typeof self=="object"?self:global;$t[0]=()=>{};$t[0].noBuffer=!0;$t[101]=()=>{let i=ht();return(c0[i[0]]||Error)(i[1])};$t[105]=i=>{let t=qe.getUint32(G-4);Eo||(Eo=new Map);let e=pe[G],r;e>=144&&e<160||e==220||e==221?r=[]:r={};let o={target:r};Eo.set(t,o);let n=ht();return o.used?Object.assign(r,n):(o.target=n,n)};$t[112]=i=>{let t=qe.getUint32(G-4),e=Eo.get(t);return e.used=!0,e.target};$t[115]=()=>new Set(ht());var xp=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(i=>i+"Array");$t[116]=i=>{let t=i[0],e=xp[t];if(!e)throw new Error("Could not find typed array for code "+t);return new c0[e](Uint8Array.prototype.slice.call(i,1).buffer)};$t[120]=()=>{let i=ht();return new RegExp(i[0],i[1])};$t[98]=i=>{let t=(i[0]<<24)+(i[1]<<16)+(i[2]<<8)+i[3],e=G;G+=t-4,cr=[ht(),ht()],cr.position0=0,cr.position1=0;let r=G;G=e;try{return ht()}finally{G=r}};$t[255]=i=>i.length==4?new Date((i[0]*16777216+(i[1]<<16)+(i[2]<<8)+i[3])*1e3):i.length==8?new Date(((i[0]<<22)+(i[1]<<14)+(i[2]<<6)+(i[3]>>2))/1e6+((i[3]&3)*4294967296+i[4]*16777216+(i[5]<<16)+(i[6]<<8)+i[7])*1e3):i.length==12?new Date(((i[0]<<24)+(i[1]<<16)+(i[2]<<8)+i[3])/1e6+((i[4]&128?-281474976710656:0)+i[6]*1099511627776+i[7]*4294967296+i[8]*16777216+(i[9]<<16)+(i[10]<<8)+i[11])*1e3):new Date("invalid");function u0(i){let t=li,e=G,r=fp,o=gr,n=Zr,a=si,s=pp,l=Eo,c=cr,u=new Uint8Array(pe.slice(0,li)),p=ke,d=ke.slice(0,ke.length),f=Jt,h=oa,m=i();return li=t,G=e,fp=r,gr=o,Zr=n,si=a,pp=s,Eo=l,cr=c,pe=u,oa=h,ke=p,ke.splice(0,ke.length,...d),Jt=f,qe=new DataView(pe.buffer,pe.byteOffset,pe.byteLength),m}function Ac(){pe=null,Eo=null,ke=null}function d0(i){i.unpack?$t[i.type]=i.unpack:$t[i.type]=i}var Ic=new Array(147);for(let i=0;i<256;i++)Ic[i]=+("1e"+Math.floor(45.15-i*.30103));var Ec=new Jr({useRecords:!1}),LA=Ec.unpack,BA=Ec.unpackMultiple,VA=Ec.unpack,Nc={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},zA=new Float32Array(1),q4=new Uint8Array(zA.buffer,0,4);var Dc;try{Dc=new TextEncoder}catch{}var _c,vp,Rc=typeof Buffer<"u",bp=Rc?Buffer.allocUnsafeSlow:Uint8Array,m0=Rc?Buffer:Uint8Array,p0=Rc?4294967296:2144337920,X,mt,k=0,eo,to=null,GA=/[\u0080-\uFFFF]/,Gs=Symbol("record-id"),Zi=class extends Jr{constructor(t){super(t),this.offset=0;let e,r,o,n,a,s,l=0,c=m0.prototype.utf8Write?function(g,D,E){return X.utf8Write(g,D,E)}:Dc&&Dc.encodeInto?function(g,D){return Dc.encodeInto(g,X.subarray(D)).written}:!1,u=this;t||(t={});let p=t&&t.sequential,d=t.structures||t.saveStructures,f=t.maxSharedStructures;if(f==null&&(f=d?32:0),f>8160)throw new Error("Maximum maxSharedStructure is 8160");let h=t.maxOwnStructures;h==null&&(h=d?32:64),p&&!t.saveStructures&&(this.structures=[]);let m=f>32||h+f>64,y=f+64,b=f+h+64;if(b>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let v=[],w=0,O=0;this.pack=this.encode=function(g,D){if(X||(X=new bp(8192),mt=new DataView(X.buffer,0,8192),k=0),eo=X.length-10,eo-k<2048?(X=new bp(X.length),mt=new DataView(X.buffer,0,X.length),eo=X.length-10,k=0):k=k+7&2147483640,r=k,s=u.structuredClone?new Map:null,u.bundleStrings?(to=["",""],X[k++]=214,X[k++]=98,to.position=k-r,k+=4):to=null,o=u.structures,o){o.uninitialized&&(o=u._mergeStructures(u.getStructures()));let E=o.sharedLength||0;if(E>f)throw new Error("Shared structures is larger than maximum shared structures, try increasing maxSharedStructures to "+o.sharedLength);if(!o.transitions){o.transitions=Object.create(null);for(let I=0;I<E;I++){let N=o[I];if(!N)continue;let _,R=o.transitions;for(let V=0,U=N.length;V<U;V++){let B=N[V];_=R[B],_||(_=R[B]=Object.create(null)),R=_}R[Gs]=I+64}l=E}p||(o.nextId=E+64)}n&&(n=!1),a=o||[];try{if(S(g),to){mt.setUint32(to.position+r,k-to.position-r);let E=to;to=null,S(E[0]),S(E[1])}if(u.offset=k,s&&s.idsToInsert){k+=s.idsToInsert.length*6,k>eo&&M(k),u.offset=k;let E=jA(X.subarray(r,k),s.idsToInsert);return s=null,E}return D&g0?(X.start=r,X.end=k,X):X.subarray(r,k)}finally{if(o){if(O<10&&O++,w>1e4)o.transitions=null,O=0,w=0,v.length>0&&(v=[]);else if(v.length>0&&!p){for(let E=0,I=v.length;E<I;E++)v[E][Gs]=0;v=[]}if(n&&u.saveStructures){let E=o.sharedLength||f;o.length>E&&(o=o.slice(0,E));let I=X.subarray(r,k);return u.saveStructures(o,l)===!1?(u._mergeStructures(u.getStructures()),u.pack(g)):(l=E,I)}}D&XA&&(k=r)}};let S=g=>{k>eo&&(X=M(k));var D=typeof g,E;if(D==="string"){let I=g.length;if(to&&I>=8&&I<4096){let R=GA.test(g);to[R?0:1]+=g,X[k++]=193,S(R?-I:I);return}let N;I<32?N=1:I<256?N=2:I<65536?N=3:N=5;let _=I*3;if(k+_>eo&&(X=M(k+_)),I<64||!c){let R,V,U,B=k+N;for(R=0;R<I;R++)V=g.charCodeAt(R),V<128?X[B++]=V:V<2048?(X[B++]=V>>6|192,X[B++]=V&63|128):(V&64512)===55296&&((U=g.charCodeAt(R+1))&64512)===56320?(V=65536+((V&1023)<<10)+(U&1023),R++,X[B++]=V>>18|240,X[B++]=V>>12&63|128,X[B++]=V>>6&63|128,X[B++]=V&63|128):(X[B++]=V>>12|224,X[B++]=V>>6&63|128,X[B++]=V&63|128);E=B-k-N}else E=c(g,k+N,_);E<32?X[k++]=160|E:E<256?(N<2&&X.copyWithin(k+2,k+1,k+1+E),X[k++]=217,X[k++]=E):E<65536?(N<3&&X.copyWithin(k+3,k+2,k+2+E),X[k++]=218,X[k++]=E>>8,X[k++]=E&255):(N<5&&X.copyWithin(k+5,k+3,k+3+E),X[k++]=219,mt.setUint32(k,E),k+=4),k+=E}else if(D==="number")if(g>>>0===g)g<64?X[k++]=g:g<256?(X[k++]=204,X[k++]=g):g<65536?(X[k++]=205,X[k++]=g>>8,X[k++]=g&255):(X[k++]=206,mt.setUint32(k,g),k+=4);else if(g>>0===g)g>=-32?X[k++]=256+g:g>=-128?(X[k++]=208,X[k++]=g+256):g>=-32768?(X[k++]=209,mt.setInt16(k,g),k+=2):(X[k++]=210,mt.setInt32(k,g),k+=4);else{let I;if((I=this.useFloat32)>0&&g<4294967296&&g>=-2147483648){X[k++]=202,mt.setFloat32(k,g);let N;if(I<4||(N=g*Ic[(X[k]&127)<<1|X[k+1]>>7])>>0===N){k+=4;return}else k--}X[k++]=203,mt.setFloat64(k,g),k+=8}else if(D==="object")if(!g)X[k++]=192;else{if(s){let N=s.get(g);if(N){if(!N.id){let _=s.idsToInsert||(s.idsToInsert=[]);N.id=_.push(N)}X[k++]=214,X[k++]=112,mt.setUint32(k,N.id),k+=4;return}else s.set(g,{offset:k-r})}let I=g.constructor;if(I===Object)T(g,!0);else if(I===Array){E=g.length,E<16?X[k++]=144|E:E<65536?(X[k++]=220,X[k++]=E>>8,X[k++]=E&255):(X[k++]=221,mt.setUint32(k,E),k+=4);for(let N=0;N<E;N++)S(g[N])}else if(I===Map){E=g.size,E<16?X[k++]=128|E:E<65536?(X[k++]=222,X[k++]=E>>8,X[k++]=E&255):(X[k++]=223,mt.setUint32(k,E),k+=4);for(let[N,_]of g)S(N),S(_)}else{for(let N=0,_=_c.length;N<_;N++){let R=vp[N];if(g instanceof R){let V=_c[N];if(V.write){V.type&&(X[k++]=212,X[k++]=V.type,X[k++]=0),S(V.write.call(this,g));return}let U=X,B=mt,q=k;X=null;let j;try{j=V.pack.call(this,g,F=>(X=U,U=null,k+=F,k>eo&&M(k),{target:X,targetView:mt,position:k-F}),S)}finally{U&&(X=U,mt=B,k=q,eo=X.length-10)}j&&(j.length+k>eo&&M(j.length+k),k=FA(j,X,k,V.type));return}}T(g,!g.hasOwnProperty)}}else if(D==="boolean")X[k++]=g?195:194;else if(D==="bigint"){if(g<BigInt(1)<<BigInt(63)&&g>=-(BigInt(1)<<BigInt(63)))X[k++]=211,mt.setBigInt64(k,g);else if(g<BigInt(1)<<BigInt(64)&&g>0)X[k++]=207,mt.setBigUint64(k,g);else if(this.largeBigIntToFloat)X[k++]=203,mt.setFloat64(k,Number(g));else throw new RangeError(g+" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64");k+=8}else if(D==="undefined")this.encodeUndefinedAsNil?X[k++]=192:(X[k++]=212,X[k++]=0,X[k++]=0);else if(D==="function")S(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+D)},T=this.useRecords===!1?this.variableMapSize?g=>{let D=Object.keys(g),E=D.length;E<16?X[k++]=128|E:E<65536?(X[k++]=222,X[k++]=E>>8,X[k++]=E&255):(X[k++]=223,mt.setUint32(k,E),k+=4);let I;for(let N=0;N<E;N++)S(I=D[N]),S(g[I])}:(g,D)=>{X[k++]=222;let E=k-r;k+=2;let I=0;for(let N in g)(D||g.hasOwnProperty(N))&&(S(N),S(g[N]),I++);X[E+++r]=I>>8,X[E+r]=I&255}:g=>{let D=Object.keys(g),E,I=a.transitions||(a.transitions=Object.create(null)),N=0;for(let R=0,V=D.length;R<V;R++){let U=D[R];E=I[U],E||(E=I[U]=Object.create(null),N++),I=E}let _=I[Gs];if(_)_>=96&&m?(X[k++]=((_-=96)&31)+96,X[k++]=_>>5):X[k++]=_;else{_=a.nextId,_||(_=64),_<y&&this.shouldShareStructure&&!this.shouldShareStructure(D)?(_=a.nextOwnId,_<b||(_=y),a.nextOwnId=_+1):(_>=b&&(_=y),a.nextId=_+1);let R=D.highByte=_>=96&&m?_-96>>5:-1;I[Gs]=_,a[_-64]=D,_<y?(D.isShared=!0,a.sharedLength=_-63,n=!0,R>=0?(X[k++]=(_&31)+96,X[k++]=R):X[k++]=_):(R>=0?(X[k++]=213,X[k++]=114,X[k++]=(_&31)+96,X[k++]=R):(X[k++]=212,X[k++]=114,X[k++]=_),N&&(w+=O*N),v.length>=h&&(v.shift()[Gs]=0),v.push(I),S(D))}for(let R=0,V=D.length;R<V;R++)S(g[D[R]])},M=g=>{let D;if(g>16777216){if(g-r>p0)throw new Error("Packed buffer would be larger than maximum buffer size");D=Math.min(p0,Math.round(Math.max((g-r)*(g>67108864?1.25:2),4194304)/4096)*4096)}else D=(Math.max(g-r<<2,X.length-1)>>12)+1<<12;let E=new bp(D);return mt=new DataView(E.buffer,0,D),X.copy?X.copy(E,0,r,g):E.set(X.slice(r,g)),k-=r,r=0,eo=E.length-10,X=E}}useBuffer(t){X=t,mt=new DataView(X.buffer,X.byteOffset,X.byteLength),k=0}};vp=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,zs];_c=[{pack(i,t,e){let r=i.getTime()/1e3;if((this.useTimestamp32||i.getMilliseconds()===0)&&r>=0&&r<4294967296){let{target:o,targetView:n,position:a}=t(6);o[a++]=214,o[a++]=255,n.setUint32(a,r)}else if(r>0&&r<17179869184){let{target:o,targetView:n,position:a}=t(10);o[a++]=215,o[a++]=255,n.setUint32(a,i.getMilliseconds()*4e6+(r/1e3/4294967296>>0)),n.setUint32(a+4,r)}else if(isNaN(r)){if(this.onInvalidDate)return t(0),e(this.onInvalidDate());let{target:o,targetView:n,position:a}=t(3);o[a++]=212,o[a++]=255,o[a++]=255}else{let{target:o,targetView:n,position:a}=t(15);o[a++]=199,o[a++]=12,o[a++]=255,n.setUint32(a,i.getMilliseconds()*1e6),n.setBigInt64(a+4,BigInt(Math.floor(r)))}}},{pack(i,t,e){let r=Array.from(i),{target:o,position:n}=t(this.structuredClone?3:0);this.structuredClone&&(o[n++]=212,o[n++]=115,o[n++]=0),e(r)}},{pack(i,t,e){let{target:r,position:o}=t(this.structuredClone?3:0);this.structuredClone&&(r[o++]=212,r[o++]=101,r[o++]=0),e([i.name,i.message])}},{pack(i,t,e){let{target:r,position:o}=t(this.structuredClone?3:0);this.structuredClone&&(r[o++]=212,r[o++]=120,r[o++]=0),e([i.source,i.flags])}},{pack(i,t){this.structuredClone?f0(i,16,t):h0(Rc?Buffer.from(i):new Uint8Array(i),t)}},{pack(i,t){let e=i.constructor;e!==m0&&this.structuredClone?f0(i,xp.indexOf(e.name),t):h0(i,t)}},{pack(i,t){let{target:e,position:r}=t(1);e[r]=193}}];function f0(i,t,e,r){let o=i.byteLength;if(o+1<256){var{target:n,position:a}=e(4+o);n[a++]=199,n[a++]=o+1}else if(o+1<65536){var{target:n,position:a}=e(5+o);n[a++]=200,n[a++]=o+1>>8,n[a++]=o+1&255}else{var{target:n,position:a,targetView:s}=e(7+o);n[a++]=201,s.setUint32(a,o+1),a+=4}n[a++]=116,n[a++]=t,n.set(new Uint8Array(i.buffer,i.byteOffset,i.byteLength),a)}function h0(i,t){let e=i.byteLength;var r,o;if(e<256){var{target:r,position:o}=t(e+2);r[o++]=196,r[o++]=e}else if(e<65536){var{target:r,position:o}=t(e+3);r[o++]=197,r[o++]=e>>8,r[o++]=e&255}else{var{target:r,position:o,targetView:n}=t(e+5);r[o++]=198,n.setUint32(o,e),o+=4}r.set(i,o)}function FA(i,t,e,r){let o=i.length;switch(o){case 1:t[e++]=212;break;case 2:t[e++]=213;break;case 4:t[e++]=214;break;case 8:t[e++]=215;break;case 16:t[e++]=216;break;default:o<256?(t[e++]=199,t[e++]=o):o<65536?(t[e++]=200,t[e++]=o>>8,t[e++]=o&255):(t[e++]=201,t[e++]=o>>24,t[e++]=o>>16&255,t[e++]=o>>8&255,t[e++]=o&255)}return t[e++]=r,t.set(i,e),e+=o,e}function jA(i,t){let e,r=t.length*6,o=i.length-r;for(t.sort((n,a)=>n.offset>a.offset?1:-1);e=t.pop();){let n=e.offset,a=e.id;i.copyWithin(n+r,n,o),r-=6;let s=n+r;i[s++]=214,i[s++]=105,i[s++]=a>>24,i[s++]=a>>16&255,i[s++]=a>>8&255,i[s++]=a&255,o=n}return i}function ci(i){if(i.Class){if(!i.pack&&!i.write)throw new Error("Extension has no pack or write function");if(i.pack&&!i.type)throw new Error("Extension has no type (numeric code to identify the extension)");vp.unshift(i.Class),_c.unshift(i)}d0(i)}var y0=new Zi({useRecords:!1}),UA=y0.pack,kA=y0.pack;var{NEVER:HA,ALWAYS:WA,DECIMAL_ROUND:qA,DECIMAL_FIT:$A}=Nc,g0=512,XA=1024;var x0=new Zi({structuredClone:!0});ci({Class:ue.prototype.constructor,type:1,write(i){return{...i}},read(i){return Object.setPrototypeOf(i,ue.prototype),i}});ci({Class:be.prototype.constructor,type:2,write(i){return[...i]},read(i){return Object.setPrototypeOf(i,be.prototype),i}});ci({Class:Qe.prototype.constructor,type:3,write(i){return[...i]},read(i){return Object.setPrototypeOf(i,Qe.prototype),i}});ci({Class:Bs.prototype.constructor,type:4,write(i){return i.id},read(i){return new Bs(i)}});ci({Class:Vs.prototype.constructor,type:5,write(i){return i.data},read(i){return new Vs(i)}});ci({Class:He.prototype.constructor,type:6,write(i){return{...i}},read(i){return Object.setPrototypeOf(i,He.prototype),i}});function YA(i){var t=0;if(i.length===0)return t;for(let e=0;e<i.length;e++){let r=i[e];t=(t<<5)-t+r,t=t&t}return t}function Sp(i){if(Qn(i))return i;if(Array.isArray(i))return i.map(Sp);if(typeof i=="object"&&i!==null){let t={};for(let e of Object.keys(i).sort())t[e]=Sp(i[e]);return Object.setPrototypeOf(t,Object.getPrototypeOf(i)),t}else return i}var Lc;(r=>{function i(o){return x0.pack(o)}r.serialize=i;function t(o){return x0.unpack(o)}r.deserialize=t;function e(o){return YA(i(Sp(o))).toString()}r.checksum=e})(Lc||(Lc={}));var pi="personal camera",fi="a218fcc3-276b-49b9-b485-49037fd14f5f",O0=2960946,yt=5526619;var ia;(f=>{function i(h,m){return h[0]===m[0]&&h[1]===m[1]}f.isEqual=i;function t(h,m,y){return[h[0]+(m[0]-h[0])*y,h[1]+(m[1]-h[1])*y]}f.lerp=t;function e(h,m){return[h[0]+m[0],h[1]+m[1]]}f.add=e;function r(h,m){return[h[0]-m[0],h[1]-m[1]]}f.sub=r;function o(h,m){return[h[0]*m[0],h[1]*m[1]]}f.multiply=o;function n(h,m){return[h[0]/m[0],h[1]/m[1]]}f.divide=n;function a(h,m){return Math.pow(m[0]-h[0],2)+Math.pow(m[1]-h[1],2)}f.distanceSquared=a;function s(h,m){return Math.sqrt(a(h,m))}f.distance=s;function l(h,m){return h[0]*m[0]+h[1]*m[1]}f.dot=l;function c(h,m){return[h[0]*m,h[1]*m]}f.scalarMultiply=c;function u(h,m,y){let b=f.sub(m,h),v=f.sub(y,h),w=f.dot(b,v)/f.dot(b,b),O=f.scalarMultiply(b,w);return f.add(h,O)}f.projectionOnto=u;function p(h,m,y){return s(h,u(h,m,y))}f.projectionOntoDistance=p;function d(h,m){return[(h[0]+m[0])*.5,(h[1]+m[1])*.5]}f.center=d})(ia||(ia={}));var ui;(s=>{function i(l,c){return l[0]===c[0]&&l[1]===c[1]&&l[2]===c[2]}s.isEqual=i;function t(l,c){return[l[0]+c[0],l[1]+c[1],l[2]+c[2]]}s.add=t;function e(l,c){return[l[0]-c[0],l[1]-c[1],l[2]-c[2]]}s.sub=e;function r(l,c){return[l[0]/c[0],l[1]/c[1],l[2]/c[2]]}s.div=r;function o(l,c){return[l[0]*c[0],l[1]*c[1],l[2]*c[2]]}s.mul=o;function n(l,c){return Math.hypot(l[0]-c[0],l[1]-c[1],l[2]-c[2])}s.dist=n;function a(l,c,u){return[l[0]+(c[0]-l[0])*u,l[1]+(c[1]-l[1])*u,l[2]+(c[2]-l[2])*u]}s.lerp=a})(ui||(ui={}));var b0;(e=>{function i(r,o){return r[0]===o[0]&&r[1]===o[1]&&r[2]===o[2]&&r[3]===o[3]}e.isEqual=i;function t(r,o,n){return[r[0]+(o[0]-r[0])*n,r[1]+(o[1]-r[1])*n,r[2]+(o[2]-r[2])*n,r[3]+(o[3]-r[3])*n]}e.lerp=t})(b0||(b0={}));var v0;(a=>{let i=180/Math.PI,t=Math.PI/180;function e(s){return typeof s=="number"?s*i:s}function r(s){return typeof s=="number"?s*t:s}function o(s){return[e(s[0]),e(s[1]),e(s[2])]}a.radToDeg=o;function n(s){return[r(s[0]),r(s[1]),r(s[2])]}a.degToRad=n})(v0||(v0={}));var di;(o=>{o.identity=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function t(n,a){for(let s=0;s<16;s++)if(n[s]!==a[s])return!1;return!0}o.isEqual=t;function e(n){return n??o.identity}o.simplify=e;function r(n,a){let s=a.slice(0);for(var l=0,c=a.length;l<c;l+=3){let u=n[3]*a[l]+n[7]*a[l+1]+n[11]*a[l+2]+n[15];s[l]=(n[0]*a[l]+n[4]*a[l+1]+n[8]*a[l+2]+n[12])/u,s[l+1]=(n[1]*a[l]+n[5]*a[l+1]+n[9]*a[l+2]+n[13])/u,s[l+2]=(n[2]*a[l]+n[6]*a[l+1]+n[10]*a[l+2]+n[14])/u}return s}o.applyMatrix4=r})(di||(di={}));var Ot;(d=>{function i(f){return typeof f=="object"&&typeof f.r=="number"&&typeof f.g=="number"&&typeof f.b=="number"}d.isRGB=i,d.white={r:1,g:1,b:1},d.red={r:1,g:0,b:0},d.black={r:0,g:0,b:0};function o(f){return{r:Math.round(f.r*255),g:Math.round(f.g*255),b:Math.round(f.b*255),a:1}}d.toRgb255a1=o;function n(f){return{r:f.r,g:f.g,b:f.b}}d.clone=n;function a(f){return f=Math.floor(f),{r:(f>>16&255)/255,g:(f>>8&255)/255,b:(f&255)/255}}d.fromHex=a;function s(f){return Math.round(f.r*255)*65536+Math.round(f.g*255)*256+Math.round(f.b*255)}d.toHex=s;function l(f,h){return f.r===h.r&&f.g===h.g&&f.b===h.b}d.equals=l;function c(f,h){return f.r.toFixed(2)===h.r.toFixed(2)&&f.g.toFixed(2)===h.g.toFixed(2)&&f.b.toFixed(2)===h.b.toFixed(2)}d.equalsFixed=c;function u(f,h,m){return{r:f.r+(h.r-f.r)*m,g:f.g+(h.g-f.g)*m,b:f.b+(h.b-f.b)*m}}d.lerp=u;function p(f){return ft(f)?"r"in f&&"g"in f&&"b"in f&&!("a"in f):!1}d.is=p})(Ot||(Ot={}));var Ie;(u=>{u.white={...Ot.white,a:1};function t(p){return ft(p)?"r"in p&&"g"in p&&"b"in p&&"a"in p:!1}u.is=t,u.transparent={...Ot.white,a:0};function r(p){return{r:p[0],g:p[1],b:p[2],a:p[3]}}u.from0to1=r;function o(p,d){return{...Ot.fromHex(p),a:d}}u.fromHexAndA=o;function n(p){return{r:Math.round(p.r*255),g:Math.round(p.g*255),b:Math.round(p.b*255),a:p.a}}u.toRgb255a1=n;function a(p,d){return Ot.equals(p,d)&&p.a===d.a}u.equals=a;function s(p,d){return Ot.equalsFixed(p,d)&&p.a.toFixed(2)===d.a.toFixed(2)}u.equalsFixed=s;function l(p,d,f){return{r:p.r+(d.r-p.r)*f,g:p.g+(d.g-p.g)*f,b:p.b+(d.b-p.b)*f,a:p.a+(d.a-p.a)*f}}u.lerp=l;function c({r:p,g:d,b:f,a:h}=u.white){return`rgba(${p*255}, ${d*255}, ${f*255}, ${h})`}u.toStyle=c})(Ie||(Ie={}));var Bc;(t=>t.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(Bc||(Bc={}));var S0;(t=>t.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(S0||(S0={}));var w0;(t=>t.defaultData={control1:[.5,0],control2:[.5,1]})(w0||(w0={}));var P0;(n=>(n.linear=[0,0,1,1],n.ease=[.25,.1,.25,1],n.easeIn=[.42,0,1,1],n.easeOut=[0,0,.58,1],n.easeInOut=[.42,0,.58,1]))(P0||(P0={}));function wp(i){return typeof i=="string"&&i.length===36?/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(i):!1}var Dr;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function t(r){return e.all.includes(r)}e.is=t})(Dr||(Dr={}));var hi;(o=>{o.DefaultUp=[0,1,0],o.DefaultTargetOffset=1e3,o.defaultData={far:1e5,type:"OrthographicCamera",perspective:{near:70,fov:45,zoom:1},orthographic:{near:-1e5,zoom:1},up:o.DefaultUp,isUpVectorFlipped:!1,targetOffset:o.DefaultTargetOffset};function r(n){return n.type==="PerspectiveCamera"?n.perspective?.zoom??1:n.orthographic?.zoom??1}o.getZoom=r})(hi||(hi={}));var ro;(r=>{function i(o,n=.1){return{disabled:!1,type:"linear",hideBase:!1,count:3,radial:{radius:Math.max(o[0],o[1])*2,start:0,end:360,alignment:!1,axis:"y",scale:[1,1,1],rotation:[0,0,0],position:[0,0,0]},toObject:{object:"",spreadType:"random",scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],axis:"x",seed:0,count:99,align:"normal"},linear:{scale:[1,1,1],rotation:[0,0,0],position:[o[0]+o[0]*n,0,0]},grid:{count:[2,2,2],size:o.map(a=>a*(1+n)),useCenter:!0},randomness:!1,randomnessObject:{strength:100,scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],movement:1,seed:0,freqScale:10,noiseType:"perlin"}}}r.defaultData=i;function t(o,n){let a={...o};if(KA.forEach(s=>{Object.assign(a,{[s]:n[s]??o[s]})}),a.radial={...o.radial},n.radial){let s=o.radial,l=n.radial;QA.forEach(c=>{Object.assign(a.radial,{[c]:l[c]??s[c]})})}if(a.linear={...o.linear},n.linear){let s=o.linear,l=n.linear;ZA.forEach(c=>{Object.assign(a.linear,{[c]:l[c]??s[c]})})}if(a.grid={...o.grid},n.grid){let s=o.grid,l=n.grid;JA.forEach(c=>{Object.assign(a.grid,{[c]:l[c]??s[c]})})}if(a.toObject={...o.toObject},n.toObject){let s=o.toObject,l=n.toObject;eM.forEach(c=>{Object.assign(a.toObject,{[c]:l[c]??s[c]})})}if(a.randomnessObject={...o.randomnessObject},n.randomnessObject){let s=o.randomnessObject,l=n.randomnessObject;tM.forEach(c=>{Object.assign(a.randomnessObject,{[c]:l[c]??s[c]})})}return a}r.merge=t;function e(o){return!!(o.randomnessObject||o.toObject)}r.isPartial=e})(ro||(ro={}));var Vc;(r=>{r.defaultData={radial:{},linear:{},grid:{},toObject:{},randomnessObject:{}};let t=["radial","linear","grid","toObject","randomnessObject"];function e(o,n){let a=[];o.count!==void 0&&a.push({type:0,path:n,props:{count:o.count}});for(let s of t){let l=o[s];l&&Object.keys(l).length>0&&a.push({type:0,path:[...n,s],props:l})}return a}r.toOps=e})(Vc||(Vc={}));var KA=["count"],QA=["radius","start","end","position","scale","rotation"],ZA=["position","scale","rotation"],JA=["count","size"],eM=["count","position","scale","rotation"],tM=["strength","scale","rotation","position","movement","seed","freqScale"];var zc;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function t(r){return e.all.includes(r)}e.is=t})(zc||(zc={}));var Gc;(e=>{function i(r){return t(r)}e.defaultData=i;function t(r){if(r==="PointLight")return{type:r,color:Ie.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,penumbraSize:.5,depth:1e5};if(r==="SpotLight")return{type:r,color:Ie.white,intensity:1,distance:2e3,decay:1,shadows:!0,penumbra:0,angle:30/180*Math.PI,depth:1e5,penumbraSize:.5,shadowResolution:1024,shadowRadius:1};if(r==="DirectionalLight")return{type:r,color:Ie.white,intensity:1,shadows:!0,size:2e3,depth:1e5,penumbraSize:.5,shadowResolution:1024,shadowRadius:1};throw new Error("not implemented")}})(Gc||(Gc={}));var na;(r=>(r.defaultShapeData={type:"PlaneEmitterShape",size:[100,100,100]},r.defaultCollisionData={colliderEntityId:null,collisionBounce:.75},r.defaultData={renderMaterial:{type:"particleMaterial",color:{r:1,g:.2,b:.545,a:1},color2:{r:.945,g:.714,b:.184,a:1},coloring:"gradient",ease:"linearFadeOut",easeSize:"linearFadeOut",transparent:!0,size:[40,40],texture:"pt_default_particle",spriteRotation:[0,0]},birthRatePerSec:50,gravity:1,noiseStrength:0,noiseScale:0,noiseSeed:1,noiseType:"curl",randomRotation:0,randomScale:.2,randomMass:.5,rootObjectType:"instancedMesh",life:1,direction:[0,0,0],directionMode:"axis",speed:10,shape:r.defaultShapeData,autoPlay:!0,emitTimeDelay:0,emitTimeCycle:"infinity",emitTimeDuration:1,...r.defaultCollisionData}))(na||(na={}));var mi;(t=>t.defaultData={enabled:"visibility",fusedBody:!0,rigidBody:"positioned",density:1,pointMass:0,gravityScale:1,friction:.5,damping:0,restitution:.2,colliderType:"convex",enabledRotation:[!0,!0,!0],enabledTranslation:[!0,!0,!0]})(mi||(mi={}));var Pp;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function t(r,o){return r.castShadow===o.castShadow&&r.receiveShadow===o.receiveShadow}e.equals=t})(Pp||(Pp={}));var Op;(e=>{e.defaultData={flatShading:!1,wireframe:!1,side:0};function t(r,o){return r.flatShading===o.flatShading&&r.side===o.side&&r.wireframe===o.wireframe}e.equals=t})(Op||(Op={}));var Fc;(t=>t.defaultData={...Op.defaultData,...Pp.defaultData})(Fc||(Fc={}));var T0;(t=>{function i(e,r){let o=[];if("material"in e){let n=typeof e.material=="string"?r.materials[e.material]??r.lib.materials[e.material]?.asset:e.material;n&&o.push(n)}else if("materials"in e)for(let n of e.materials){let a=typeof n=="string"?r.materials[n]??r.lib.materials[n]?.asset:n;a&&o.push(a)}return o}t.getMaterialData=i})(T0||(T0={}));var aa;(e=>(e.defaultVideo={data:"",thumb:"/_assets/_videos/catThumb.png",type:"video",name:"Cat video"},e.maxSize=3e7))(aa||(aa={}));var C0;(t=>{function i(e){return e==="texture"||e==="video"||e==="color"||e==="depth"||e==="normal"||e==="gradient"||e==="noise"||e==="fresnel"||e==="rainbow"||e==="toon"||e==="outline"||e==="particle"||e==="transmission"||e==="matcap"||e==="displace"||e==="pattern"||e==="light"}t.is=i})(C0||(C0={}));function M0(i){return i.type!=="displace"}var A0;(t=>{function i(e){return e==="phong"||e==="toon"||e==="lambert"||e==="physical"}t.is=i})(A0||(A0={}));var I0=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],E0=["wrapping","image","video","name","minFilter","magFilter"],vt;(o=>{function i(n,a){let{texture:s,...l}=a;if(Object.assign(n,l),s){let c=n.texture;c&&Object.assign(c,s)}}o.patch=i;function t(n,a){return n==="light"&&a?e(a):r(n)}o.defaultData=t;function e(n){let a={mode:0,isMask:!1,visible:!0,bumpMap:void 0,bumpMapIntensity:5,roughnessMap:void 0,alphaOverride:1};switch(n){case"phong":return{...a,category:"phong",specular:{r:.2,g:.2,b:.2},shininess:5,type:"light",visible:!0,mode:0,occlusion:!0,alpha:.6};case"toon":return{...a,category:"toon",specular:{r:.2,g:.2,b:.2},shininess:10,type:"light",alpha:1};case"lambert":return{...a,category:"lambert",emissive:{r:0,g:0,b:0},type:"light",alpha:1,visible:!0,mode:0,occlusion:!0};case"physical":return{...a,category:"physical",roughness:.2,metalness:.2,reflectivity:.2,type:"light",alpha:1,visible:!0,mode:0,occlusion:!0}}}function r(n){let a={alpha:1,mode:0,isMask:!1,visible:!0};switch(n){case"texture":return{...a,type:"texture",size:[128,128],blending:0,axis:"x",side:2,projection:0,texture:{image:"image_0",wrapping:1e3,repeat:[1,1],offset:[0,0],rotation:0,minFilter:1008,magFilter:1006},crop:!1};case"video":return{...a,type:"video",size:[128,128],blending:0,axis:"x",side:2,projection:0,texture:{video:aa.defaultVideo,wrapping:1001,repeat:[1,1],offset:[0,0],rotation:0,minFilter:1008,magFilter:1006},crop:!1};case"color":return{...a,type:"color",color:Ot.fromHex(yt)};case"depth":return{...a,type:"depth",gradientType:1,smooth:!1,isVector:!0,isWorldSpace:!1,origin:[0,0,0],direction:[1,0,0],colors:[[1,1,1,1],[0,0,0,1]],steps:[0,1],near:50,far:200};case"normal":return{...a,type:"normal",cnormal:[1,1,1]};case"gradient":return{...a,type:"gradient",gradientType:0,smooth:!1,colors:[[0,0,0,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,1,1,1,1,1,1,1,1,1],num:2,angle:0,offset:[0,0],morph:[0,0]};case"noise":return{...a,type:"noise",size:[100,100,100],noiseType:0,scale:1,move:1,colorA:{...Ot.fromHex(6710886),a:1},colorB:{...Ot.fromHex(6710886),a:1},colorC:{...Ot.fromHex(16777215),a:1},colorD:{...Ot.fromHex(16777215),a:1},distortion:[1,1],fA:[1.7,9.2],fB:[8.3,2.8],voronoiStyle:0,highCut:1,lowCut:0,smoothness:.3,seed:0,quality:1};case"fresnel":return{...a,type:"fresnel",color:Ie.fromHexAndA(16777215,1),bias:.1,scale:1,intensity:2,factor:1};case"rainbow":return{...a,type:"rainbow",filmThickness:30,movement:0,wavelengths:[0,0,0],noiseStrength:0,noiseScale:1,offset:[0,0,0]};case"toon":return{...a,type:"toon",positioning:2,colors:[[0,0,0,1],[.5,.5,.5,1],[.5,.5,.5,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,.475,.525,1,1,1,1,1,1,1],num:4,source:[0,1e3,0],isWorldSpace:!0,noiseStrength:0,noiseScale:1,shadowColor:Ie.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{...a,type:"outline",outlineColor:Ie.fromHexAndA(0,1),contourColor:Ie.fromHexAndA(0,1),outlineWidth:2,contourWidth:5,outlineThreshold:.4,contourThreshold:0,outlineSmoothing:0,contourFrequency:10,contourDirection:[0,1,0],positionalLines:!1,compensation:!0};case"matcap":return{...a,type:"matcap",texture:{image:"matcap_0",wrapping:1001,repeat:[1,1],offset:[0,0],rotation:0,minFilter:1008,magFilter:1006}};case"transmission":return{...a,type:"transmission",thickness:10,ior:1.5,roughness:1};case"displace":return{visible:!0,type:"displace",displacementType:"noise",noiseType:0,scale:10,movement:1,offset:[0,0,0],intensity:8,voronoiStyle:0,smoothness:.3,seed:0,highCut:1,lowCut:0,quality:1};case"pattern":return{...a,type:"pattern",style:0,projection:0,axis:"y",blending:0,offset:[0,0],colorA:{...Ot.fromHex(0),a:1},colorB:{...Ot.fromHex(16777215),a:1},frequency:[10,10],size:.5,variation:0,smoothness:.5,zigzag:0,rotation:0,vertical:[0,1],horizontal:[0,1],sides:6}}}})(vt||(vt={}));var Tt;(c=>{function i(u){return!u.layers.some(d=>d.data.type==="texture"&&d.data.projection!==0||d.data.type==="depth"&&!d.data.isWorldSpace||d.data.type==="noise"||d.data.type==="displace")}c.isMergable=i;function t(u){let p="";return u.layers.forEach(d=>{Object.entries(d.data).forEach(([f,h])=>{p+=`${f}${h}`,Array.isArray(h)?h.forEach(m=>p+=`${m}`):typeof h=="object"?Object.values(h).forEach(m=>{typeof m=="number"?p+=`${m.toFixed(4)}`:p+=`${m}`}):p+=`${h}`})}),p}c.getHash=t;function e(){return{layers:new be}}c.defaultEmptyData=e;function r(u="layer1",p="layer2"){return n("phong",u,p)}c.defaultData=r;function o(u,p){return{...u,name:p}}c.withName=o;function n(u,p="layer1",d="layer2"){let f=new be;return f.push({fi:0,data:vt.defaultData("light",u),id:p}),f.push({fi:1,data:vt.defaultData("color"),id:d}),{layers:f}}c.defaultTwoLayerData=n;function a(u){let p=vt.defaultData("texture");u&&Object.assign(p.texture,{image:u});let d=new be;return d.push({fi:0,data:p,id:"layer1"}),d.push({fi:1,data:{...vt.defaultData("transmission"),alpha:1},id:"layer2"}),d.push({fi:2,data:{...vt.defaultData("light","lambert"),alpha:0},id:"layer3"}),{layers:d}}c.defaultUIObjectMaterial=a;function s(u,p="phong",d="layer1",f="layer2"){let h=vt.defaultData("texture");Object.assign(h.texture,{image:u});let m=new be;return m.push({fi:0,data:h,id:d}),m.push({fi:1,data:vt.defaultData("light",p),id:f}),{layers:m}}c.defaultTwoLayerTextureData=s;function l(u,p="phong",d="layer1",f="layer2"){let h=vt.defaultData("video");Object.assign(h.texture,{video:u});let m=new be;return m.push({fi:0,data:h,id:d}),m.push({fi:1,data:vt.defaultData("light",p),id:f}),{layers:m}}c.defaultTwoLayerVideoTextureData=l})(Tt||(Tt={}));var sa;(t=>{function i(){return{points:new be,roundness:0,shapeHoles:[],isClosed:!1}}t.defaultData=i})(sa||(sa={}));var la;(t=>{function i(){return{points:new be,lastInsertionPlane:null,subdivisions:12,isClosed:!1}}t.defaultData=i})(la||(la={}));var Tp={type:"Ellipse",width:50,height:50,spikes:16,angle:360,innerRadius:0};var jc;(t=>{function i(e,r){let o={...e};return rM.forEach(n=>{Object.assign(o,{[n]:r[n]??e[n]})}),o}t.merge=i})(jc||(jc={}));var Uc={shape:Tp,depth:1,offset:0,bevel:50,bevelSides:6,angle:0,twist:0,startScale:1,endScale:1,capType:"flat"},rM=["depth","offset","angle","twist","startScale","endScale"];var Fs;(r=>{function i(o){return o==="PolygonGeometry"||o==="RectangleGeometry"||o==="StarGeometry"||o==="TriangleGeometry"||o==="EllipseGeometry"||o==="UIGeometry"}r.is2DParametricMesh=i;function t(o){return o==="PolygonGeometry"||o==="RectangleGeometry"||o==="StarGeometry"||o==="TriangleGeometry"||o==="EllipseGeometry"||o==="PathGeometry"||o==="VectorGeometry"||o==="ConeGeometry"||o==="CubeGeometry"||o==="CylinderGeometry"||o==="DodecahedronGeometry"||o==="HelixGeometry"||o==="IcosahedronGeometry"||o==="LatheGeometry"||o==="PyramidGeometry"||o==="SphereGeometry"||o==="PlaneGeometry"||o==="BackdropGeometry"||o==="TorusGeometry"||o==="TorusKnotGeometry"||o==="BooleanGeometry"||o==="TextGeometry"||o==="InputGeometry"}r.isParametricMesh=t;function e(o){return o==="PolygonGeometry"||o==="RectangleGeometry"||o==="StarGeometry"||o==="TriangleGeometry"||o==="EllipseGeometry"||o==="PathGeometry"||o==="VectorGeometry"||o==="ConeGeometry"||o==="CubeGeometry"||o==="CylinderGeometry"||o==="DodecahedronGeometry"||o==="HelixGeometry"||o==="IcosahedronGeometry"||o==="LatheGeometry"||o==="PyramidGeometry"||o==="SphereGeometry"||o==="PlaneGeometry"||o==="BackdropGeometry"||o==="TorusGeometry"||o==="TorusKnotGeometry"||o==="TextGeometry"||o==="SubdivGeometry"||o==="NonParametricGeometry"}r.isSwappableGeometry=e})(Fs||(Fs={}));var kc;(t=>{function i(e,r){let o={...e};return Object.assign(o,r),o.type==="PathGeometry"&&"extrusion"in r&&r.extrusion&&(o.extrusion={...e.extrusion},Object.assign(o.extrusion,jc.merge(o.extrusion,r.extrusion))),o}t.merge=i})(kc||(kc={}));var oo;(t=>{function i(e){if(e==="RectangleGeometry")return{width:320,height:320,type:e,cornerRadius:[0,0,0,0],cornerType:0,depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="UIGeometry")return{type:e,frame:"",cornerRadius:[0,0,0,0],cornerType:0,width:1,height:1};if(e==="PathGeometry")return{type:e,width:1,height:1,depth:1,path:la.defaultData(),extrusion:Uc};if(e==="VectorGeometry")return{width:1,height:1,type:e,subdivisions:12,shape:sa.defaultData(),depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="BooleanGeometry")return{type:e,operation:2,width:0,height:0,depth:0,phongAngle:35};if(e==="ShapeBlendGeometry")return{type:e,width:0,height:0,depth:0,resolutionLevel:6,blendRange:100,useChildrenColors:!1};if(e==="TextGeometry")return{type:e,width:100,height:100,depth:0,horizontalAlign:1,verticalAlign:1,fontSize:16,lineHeight:1.2,letterSpacing:0,text:{textValue:""},textTransform:1,font:"Roboto_regular",editable:!1,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="InputGeometry")return{...t.defaultData("TextGeometry"),type:e,editable:!0};if(e==="SphereGeometry")return{type:"SphereGeometry",width:100,height:100,depth:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:180};throw new Error("not implemented")}t.defaultData=i})(oo||(oo={}));var Hc;(t=>t.defaultData={enabled:!1,useBackgroundColor:!1,color:Ot.white,near:.1,far:2e3})(Hc||(Hc={}));var Wc;(e=>{let i={opacity:1,blendFunction:13,enabled:!1};e.defaultData={enabled:!1,pixelation:{...i,blendFunction:16,granularity:15},bloom:{...i,blendFunction:16,intensity:1,blurScale:1,luminanceThreshold:.25,luminanceSmoothing:.025,kernelSize:3},chromaticAberration:{...i,offset:[2,2]},vignette:{...i,darkness:1,offset:0},hueSaturation:{...i,hue:3,saturation:0},brightnessContrast:{...i,brightness:.25,contrast:0},depthOfField:{...i,focusDistance:100,focalLength:20,bokehScale:5},noise:{...i,blendFunction:16}}})(Wc||(Wc={}));var Cp;(t=>t.defaultData={softShadowQuality:"low"})(Cp||(Cp={}));var Ap;(t=>t.defaultData={enabled:!0,color:{r:.8274509803921568,g:.8274509803921568,b:.8274509803921568},intensity:.75})(Ap||(Ap={}));var Mp;(t=>t.defaultData={occlusion:!1,aoFullRes:!1,radius:256,bias:.5,aoColor:{r:.19607843137254902,g:.19607843137254902,b:.19607843137254902}})(Mp||(Mp={}));var js;(t=>t.defaultData={usePhysics:!1,gravity:-10})(js||(js={}));var Ip;(t=>t.defaultData={playCamera:pi,gameControlObject:null})(Ip||(Ip={}));var qc;(t=>t.defaultData={backgroundColor:Ie.fromHexAndA(O0,1),postprocessing:Wc.defaultData,fog:Hc.defaultData,globalPhysics:js.defaultData,ambient:Ap.defaultData,ao:Mp.defaultData,shadow:Cp.defaultData,publish:Ip.defaultData})(qc||(qc={}));var $c;(t=>t.defaultData={colliderType:"box",size:[100,100,100],colliderHelperVisible:!0,forceType:"collider",forceRange:"global",forceIntensity:.5,forceDambing:.95})($c||($c={}));var N0;(e=>{function i(r){return r==="Component"||r==="Instance"}e.isComponentRelated=i;function t(r){return r==="Empty"||r==="Instance"}e.isEmptyOrComponent=t})(N0||(N0={}));var ca;(o=>{o.identity={...Bc.identity,hiddenMatrix:di.identity};function t(n){return{position:n.position,rotation:n.rotation,scale:n.scale,hiddenMatrix:n.hiddenMatrix}}o.fromObject=t;function e(n,a){return{position:a?.position||n.position,rotation:a?.rotation||n.rotation,scale:a?.scale||n.scale,hiddenMatrix:a?.hiddenMatrix||n.hiddenMatrix}}o.merge=e;function r(n,a){return Hl({position:ui.isEqual(n.position,a.position)?void 0:a.position,rotation:ui.isEqual(n.rotation,a.rotation)?void 0:a.rotation,scale:ui.isEqual(n.scale,a.scale)?null:a.scale,hiddenMatrix:di.isEqual(n.hiddenMatrix,a.hiddenMatrix)?void 0:a.hiddenMatrix})}o.diff=r})(ca||(ca={}));var gt;(t=>t.defaultData={states:new be,events:new be,timelineAnimations:new ue,visible:!0,raycastLock:!1,physics:mi.defaultData,pathSnapping:{pathId:null,slide:0,offset:0,orientation:"tangential"},...ca.identity,cloner:null})(gt||(gt={}));var Xc;(t=>t.defaultData={type:"Empty",...gt.defaultData})(Xc||(Xc={}));var D0;(t=>t.defaultData={type:"ParticleCollider",...$c.defaultData,...gt.defaultData})(D0||(D0={}));var _0;(t=>t.defaultData={type:"Component",...gt.defaultData})(_0||(_0={}));var R0;(t=>t.defaultData={type:"Particle",...gt.defaultData,...na.defaultData})(R0||(R0={}));var No;(t=>t.defaultData={type:"Mesh",...gt.defaultData,...Fc.defaultData})(No||(No={}));var Ji;(t=>t.defaultData={...gt.defaultData,...ca.identity,position:[0,0,hi.DefaultTargetOffset],...hi.defaultData})(Ji||(Ji={}));var Yc;(e=>{function i(r){return{...gt.defaultData,...Gc.defaultData(r)}}e.defaultData=i,e.defaultDirectionalLightData={...e.defaultData("DirectionalLight"),position:[200,300,300],name:"Directional Light",intensity:.7}})(Yc||(Yc={}));var ua;(e=>{function i(r,o,n=0){for(;n<o.length;){let a=r?r[o[n]]:void 0;if(o.length===n+1)return a;if(a)r=a.descendants,n+=1;else return}}e.resolveWithDes=i;function t(r,o,n=0){let a=i(r,o,n);if(a){let s=Object.keys(a);if(s.length===1&&s[0]==="descendants")return}return a}e.resolve=t})(ua||(ua={}));var io;(n=>{n.rootOverrideProps=["physics","events"],n.compositeNonOptionalOverrideProps=["geometry"],n.compositeEntireOverrideOverrideProps=["material"];function r(a,s){return{...gt.defaultData,...s,component:a,overrides:new He,physics:void 0,events:void 0,type:"Instance"}}n.ofComponent=r;function o(a){let s=ca.fromObject(a.data);return r(a.id,s)}n.fromComponentData=o})(io||(io={}));var Do;(e=>{e.defaultData={type:"Page",...gt.defaultData,physics:{...mi.defaultData,fusedBody:!1},...qc.defaultData,camera:Ji.defaultData};function t(r){return r.uiScene!==void 0}e.isUIPage=t})(Do||(Do={}));var Kc;(s=>(s.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:di.identity,name:"Play Camera",visible:!0,raycastLock:!1,physics:mi.defaultData,states:new be,events:new be,timelineAnimations:new ue,cloner:null,pathSnapping:{pathId:null,orientation:"tangential",slide:0,offset:0},...hi.defaultData},s.KeysByResetCategory={States:["states"],Events:["events"],Material:["material","materials"],Geometry:["geometry"],Position:["position"],Rotation:["rotation"],Scale:["scale"],Transform:["position","scale","rotation","hiddenMatrix"],Name:["name"],Visibility:["visible","raycastLock","flatShading","wireframe","side"],Shadows:["castShadow","receiveShadow"],Cloner:["cloner"],Physics:["physics"]},s.defaultMeshObject={name:"Rectangle",...gt.defaultData,...No.defaultData,geometry:oo.defaultData("RectangleGeometry"),material:Tt.defaultTwoLayerData("phong","layer1","layer2")},s.defaultBooleanObject={name:"Boolean",...gt.defaultData,...No.defaultData,geometry:oo.defaultData("BooleanGeometry"),material:Tt.defaultTwoLayerData("phong","layer1","layer2")},s.defaultShapeBlendObject={name:"Shape Blend",...gt.defaultData,...No.defaultData,geometry:oo.defaultData("ShapeBlendGeometry"),material:Tt.defaultTwoLayerData("phong","layer1","layer2")},s.defaultTextObject={name:"Text",...gt.defaultData,...No.defaultData,geometry:oo.defaultData("TextGeometry"),material:Tt.defaultTwoLayerData("phong","layer1","layer2")},s.defaultInputObject={name:"Input",...gt.defaultData,...No.defaultData,geometry:oo.defaultData("InputGeometry"),material:Tt.defaultTwoLayerData("phong","layer1","layer2")}))(Kc||(Kc={}));var en;(o=>{function i(n,a){let s={name:a};return n.type==="Mesh"?(s.geometry={},"material"in n&&(s.material={layers:new He}),"materials"in n&&(s.materials=n.materials.map(l=>({layers:new He})))):Dr.is(n.type)&&(s.perspective={},s.orthographic={}),s}o.newEmpty=i;function t(n,a){if(a===void 0)return n;let s={...n};return"material"in s&&"material"in a&&a.material&&(s.material=ai(s.material,l=>{if(typeof l!="string")for(let[c,u]of Object.entries(a.material.layers)){let p=l.layers.data(c);p&&vt.patch(p,u)}}).data),s.materials&&a.materials&&(s.materials=ai(s.materials,l=>{for(let c=0;c<s.materials.length;c++){let u=a.materials[c];if(typeof u!="string")for(let[p,d]of Object.entries(u.layers)){let f=l[c]?.layers?.data(p);f&&vt.patch(f,d)}}}).data),s}function e(n,a){let s,l=[],c={orthographic:0,perspective:0,geometry:0};function u(p,d){for(let[f,h]of Object.entries(d.layers)){let{texture:m,...y}=h;if(m!==void 0&&Object.keys(m).length>0){let b={path:[...p,"layers",f,"texture"],props:m,type:0};l.push(b)}if(Object.keys(y).length>0){let b={path:[...p,"layers",f],props:y,type:0};l.push(b)}}}for(let[p,d]of Object.entries(a))if(p!=="name")if(p==="cloner")l.push(...Vc.toOps(d,["cloner"]));else if(p==="pathSnapping")l.push({path:[p],props:{slide:d.slide,offset:d.offset},type:0});else if(p==="material")u(["material"],d);else if(p==="materials")for(let[f,h]of Object.entries(d))u(["materials",f],h);else if(c[p]===0){if(p==="geometry"&&d.extrusion!==void 0){let f={path:[p,"extrusion"],props:d.extrusion,type:0};l.push(f),d={...d},delete d.extrusion}if(Object.keys(d).length>0){let f={path:[p],props:d,type:0};l.push(f)}}else s===void 0&&(s={path:[],props:{},type:0},l.push(s)),s.props[p]=d;return l}o.toOps=e;function r(n,a){if(a===void 0)return n;let s={...n};if(Object.assign(s,ca.merge(s,a)),Object.assign(s,{pathSnapping:Object.assign({},s.pathSnapping,{slide:a.pathSnapping?.slide??s.pathSnapping?.slide??0,offset:a.pathSnapping?.offset??s.pathSnapping?.offset??0})}),Dr.is(n.type)){s.orthographic={...s.orthographic},s.perspective={...s.perspective};let l=a;l.orthographic?.zoom!==void 0&&(s.orthographic.zoom=l.orthographic.zoom),l.perspective?.zoom!==void 0&&(s.perspective.zoom=l.perspective.zoom),l.isUpVectorFlipped!==void 0&&(s.isUpVectorFlipped=l.isUpVectorFlipped),l.targetOffset!==void 0&&(s.targetOffset=l.targetOffset)}else if(n.type==="Mesh")"geometry"in a&&Object.assign(s,{geometry:kc.merge(s.geometry,a.geometry)}),(a.material||a.materials)&&(s=t(s,a)),s.cloner&&"cloner"in a&&Object.assign(s,{cloner:ro.merge(s.cloner,a.cloner)});else if(n.type==="Empty")s.cloner&&"cloner"in a&&Object.assign(s,{cloner:ro.merge(s.cloner,a.cloner)});else if(zc.is(n.type)){let l=a;l.intensity!==void 0&&(s.intensity=l.intensity),l.color!==void 0&&(typeof l.color=="string"?s.color=l.color:s.color=Ot.clone(l.color))}return s}o.patch=r})(en||(en={}));var da;(t=>t.defaultData={enablePan:!0,enableZoom:!0,enableRotate:!0,enableDamping:!0,rotationLimitsMode:0,rotationVerticalOffset:{min:Math.PI/4,max:Math.PI/4},rotationHorizontalOffset:{min:Math.PI/4,max:Math.PI/4},rotationSoftLimit:2,panLimitsMode:0,panVerticalOffset:{min:250,max:250},panHorizontalOffset:{min:250,max:250},panSoftLimit:2,zoomLimitsEnabled:!1,zoomLimits:{min:.1,max:2},autoRotate:!1,autoRotateSpeed:2,autoRotateClockwise:!0,hoverRotatePanMode:0,hoverRotatePanStrength:20,hoverRotateDamping:.125,isTouchZoom:!0,orbitTouches:2,panTouches:3,resetHoverEffectOnPointerLeave:!0})(da||(da={}));var br;(t=>t.defaultData={orbitControls:da.defaultData,playPage:fi,withBackground:!0,preventScroll:!1,preventTouchScroll:!1,hideCursor:!1,mouseEventTarget:"canvas",joystickSizeAndXYOffset:Array(12).fill(0).map((e,r)=>{let o=0,n=0;return r<5?n=-30:r<10&&(n=30),r===0||r===10||r===5?o=30:(r===4||r===11||r===9)&&(o=-30),[120,[o,n],"show"]}),settings:{image:{format:"jpg",ratio:1},videoStatic:{fps:60,mbps:150,ratio:1,duration:1e3,activeTimeline:null},video:{format:"mp4",imageFormat:"jpg",fps:30,mbps:80,ratio:Math.max(1,typeof window<"u"?Math.floor(window.devicePixelRatio):1),stopMode:"manual",duration:5e3},web:{logo:!0,compress:!0,preset:1,preload:!0,hint:!1,imageQuality:70,pixelRatioMobile:0,pixelRatioDesktop:0}},stopRaycast:!0,hdTransmission:!1})(br||(br={}));var Ep;(t=>t.defaultData={id:"basic",label:"Basic",style:"None",prompt:""})(Ep||(Ep={}));var Np;(t=>t.defaultData={weather:0,shadows:0,lightOrigin:0,temperature:0,sun:0,camera:0,environment:0,particles:0,nature:0,floor:0})(Np||(Np={}));var _o;(e=>(e.defaultData=()=>({mode:"line-art-both",prompt:"",negativePrompt:"",style:{...Ep.defaultData},isRandomSeed:!0,seed:e.generateSeed(),guessMode:!1,advanced:!1,steps:20,guidanceScale:7.5,controlNetScale:1,modifiers:Np.defaultData}),e.generateSeed=()=>Math.round(Math.random()*1e5)))(_o||(_o={}));var L0;(e=>{function i(r){return r.find(o=>o.data.type==="Page"&&o.data.globalPhysics.usePhysics)!==void 0}e.physicsEnabled=i;function t(r,o,n){r.scene.objects.traverseFrom(o,(a,s)=>{if(s.type==="Instance"){let l=pa.getComponentData(r,s.component)?.data;l&&n(a,s,l.events)}else n(a,s,s.events)})}e.traverseModuleInstances=t})(L0||(L0={}));var Ro;(c=>{c.TRASH_CAN_ID="830a2708-8ed9-49cf-a68e-085299892222",c.defaultLight={fi:-1,data:Yc.defaultDirectionalLightData,id:"830a2708-8ed9-49cf-a68e-085299899103",children:[]};function e(u=!0,p=[]){let d=[],f=Kc.defaultMeshObject;u&&(d.push({...c.defaultLight}),d.push({fi:1,id:"7ba78968-2a55-48f2-b14c-5191da3e075e",data:f,children:[]})),d.push(...p);let h=new Qe;return h.push({fi:1,id:fi,data:{...Do.defaultData,name:"Scene 1"},children:d}),h}c.createDefaultObjectTreeWithPage=e,c.defaultData={objects:e(),publish:br.defaultData,styles:_o.defaultData()},c.emptyDataWithoutPage=function(){return{objects:new Qe,publish:br.defaultData,styles:_o.defaultData()}},c.emptyDataWithPage=function(u=!0){return{objects:e(u),publish:br.defaultData,styles:_o.defaultData()}},c.emptyData=function(){return{objects:new Qe,publish:{...br.defaultData},styles:_o.defaultData()}};function s(u){return{...c.defaultData,objects:Pt(u,Qe.prototype)}}c.withObjs=s;function l(u,p){return s([{id:u,data:p,children:[],fi:0}])}c.withObj=l})(Ro||(Ro={}));var fa;(t=>t.defaultData={preset:"fullscreen",allowResponsive:!1,size:[512,512],coords:[0,0],sceneScale:1,color:{r:0,g:0,b:0,a:.5}})(fa||(fa={}));var Qc;(e=>(e.defaultData=r=>({url:r,name:"New Webhook",parametersSchemas:new be}),e.defaultParameterValueByType=r=>r==="number"?0:r==="boolean"?!1:""))(Qc||(Qc={}));var B0;(t=>t.defaultData=(e,r="GET")=>({url:e,method:r,name:"New API",headers:new be,queries:new be,autoStart:!0}))(B0||(B0={}));var yi;(n=>{function i(a){return a.textValue!==void 0}n.isTextValue=i;function t(a){return typeof a=="number"}n.isNumber=t;function e(a){return typeof a=="boolean"}n.isBoolean=e;function r(a){return i(a)?"string":e(a)?"boolean":"number"}n.typeOfVariable=r;function o(a){return n.isTextValue(a)?Array.isArray(a.textValue)?a.textValue.map(s=>s.toString().padStart(a.padding??2,"0")).join(a.deliminator??":")+(a.suffix!==void 0?" "+a.suffix:""):a.textValue.toString():n.isBoolean(a)?a?"True":"False":n.isNumber(a)?parseFloat(a.toFixed(3)).toString():a.toString()}n.getDisplayedValue=o})(yi||(yi={}));var Dp;(t=>t.all=["images","videos","colors","audios","particles","fonts","materials","variables"])(Dp||(Dp={}));var V0;(t=>t.all=[...Dp.all,"components"])(V0||(V0={}));var z0;(t=>{function i(){return{images:new ue,videos:new ue,colors:new ue,audios:new ue,particles:new ue,fonts:new ue,materials:new ue,components:new ue,variables:new ue,userAPIs:new ue,userWebhooks:new ue,timelineAnimations:new ue}}t.defaultData=i})(z0||(z0={}));var _r;(t=>{function i(){return{images:new ue,videos:new ue,colors:new ue,audios:new ue,particles:new ue,fonts:new ue,materials:new ue,components:new ue,variables:new ue,userAPIs:new ue,userWebhooks:new ue,timelineAnimations:new ue}}t.defaultData=i})(_r||(_r={}));var vr;(n=>{function i(){let a={};return a["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},Pt(a,ue.prototype)}n.defaultColors=i;function t(){return Pt({},ue.prototype)}n.defaultImages=t;function e(){return{catelogs:new ue,materials:new ue,images:new ue,videos:new ue,colors:new ue,timelineAnimations:new ue,audios:new ue,particles:new ue,fonts:new ue,variables:new be,userAPIs:new ue,userWebhooks:new ue,lib:_r.defaultData()}}n.emptyData=e;function r(a){switch(a){case"number":return{value:0,name:"Number"};case"boolean":return{value:!1,name:"Boolean"};case"string":return{value:{textValue:"String value"},name:"String"};case"time":let s=[0,0,0];return{name:"Time",value:{textValue:s,deliminator:":",padding:2,suffix:"AM"},dynamicVariableType:"time",format:"HH:mm:ss",format12h24h:"12ampm",timeZone:null,hasEnd:!1,endValue:{textValue:s,deliminator:":",padding:2,suffix:"AM"},autoStart:!0,repeat:!1};case"counter":return{name:"Counter",value:0,dynamicVariableType:"counter",updateInterval:1e3,increment:1,autoStart:!0,hasEnd:!0,endValue:60,repeat:!0,randomStart:!1,range:[0,100],decimals:0};case"random":return{name:"Random",value:0,dynamicVariableType:"random",updateInterval:1e3,increment:1,autoStart:!0,isStatic:!1,hasEnd:!0,endValue:60,repeat:!0,min:0,max:100,decimals:0};default:console.error("Unknown variable type",a)}}n.defaultVariables=r;function o(a,s){if(s.format==="HH:mm:ss"){let l=Math.floor(a/3600),c=Math.floor((a-l*3600)/60),u=Math.round(a-l*3600-c*60);return{textValue:[l,c,u]}}else if(s.format==="mm:ss"){let l=Math.floor(a/60),c=Math.round(a-l*60);return{textValue:[l,c]}}else return s.format==="number"?a=Math.round(a):a=Math.round(a*1e3)/1e3,a}n.getFormattedTimerTime=o})(vr||(vr={}));import{MathUtils as eu}from"three";var Zc;(t=>t.list=["idle","move","jump","run"])(Zc||(Zc={}));var Jc;(e=>(e.defaultColliderData={type:"capsule",height:200,radius:50,position:[0,0,0],rotation:[0,0,0]},e.defaultDataThirdPerson={moveMode:"walk",forwardDirection:"+z",speedTranslate:1e3,speedRotate:100,runMultiplier:2,rotationMode:"normal",rotBy:"keys",rotByTouch:"drag",delayPos:[.3,.3],delayRot:[.3,.3],keyAssignments:[["moveNegZ","W"],["moveNegX","A"],["movePosZ","S"],["movePosX","D"],["rotPosX","\u25B2"],["rotPosY","\u25C0"],["rotNegX","\u25BC"],["rotNegY","\u25B6"],["jump","Space"],["run","\u21E7"],["none","Ctrl"]],touchControl:!0,joystickPosLoc:5,joystickRotLoc:11,jumpTouchButtonLoc:9,collider:e.defaultColliderData,colliderHelperVisible:!0,collisionEnabled:!0,jumpPower:100,resetYPosition:3e3,alignToGround:!1,autoOrientMove:!0,orientWith:"camera",orientMode:"radial",delayPosCamera:.3,delayRotCamera:.3,camera:"",cameraXAxis:"Limit",cameraYAxis:"Free",cameraRotXLimits:[0,Math.PI/2],cameraRotYLimits:[-Math.PI/2,Math.PI/2],gameActions:{idle:new be,move:new be,jump:new be,run:new be},navmesh:{enabled:!1,ch:6,cs:6,walkableClimb:5,walkableHeight:1,walkableRadius:0,zones:"all",objects:[],helperVisible:!0,destinationHelperRadius:0,destinationHelperColor:Ie.fromHexAndA(3728051,1)}}))(Jc||(Jc={}));function G0(i){i.layers.forEach(t=>{if(t.type==="depth"&&t.colorA!==void 0){let e=t.colorA,r=t.colorB,o=[[e.r,e.g,e.b,e.a],[r.r,r.g,r.b,r.a]],n=[0,1];for(let s=2;s<10;s++)o.push(o[1]),n.push(1);let a={...Nr(at(t),"type","visible","isVector","isWorldSpace","origin","alpha","mode"),near:Math.max(0,t.near),far:Math.max(0,t.far),colors:o,steps:n,num:2,direction:[1,0,0],smooth:!1,gradientType:1};Object.assign(t,a)}else if(t.type==="depth"&&t.gradientType===1&&(t.near<0||t.far<0)){let e={...at(t),near:Math.max(t.near,0),far:Math.max(t.far,0)};Object.assign(t,e)}})}function Lo(i,t){Object.values(i.shared.materials).forEach(e=>t(e))}function Bo(i,t){i.scene.objects.traverse((e,r)=>{"materials"in r?r.materials.forEach((o,n)=>{o===void 0&&(r.materials[n]=Tt.defaultData(),o=r.materials[n]),typeof o!="string"&&t(o)}):"material"in r?typeof r.material!="string"&&(r.material===void 0&&(r.material=Tt.defaultData()),t(r.material)):r.type==="Mesh"&&(r.material===void 0&&(r.material=Tt.defaultData()),t(r.material)),"overrides"in r&&Object.values(r.overrides).forEach(o=>{o.material&&typeof o.material!="string"&&Object.getPrototypeOf(o.material)!==He.prototype&&t(o.material)})})}function oM(i){Object.assign(i.scene.publish,{orbitControls:{...da.defaultData,...at(i.scene.publish.orbitControls)}})}function iM(i){Object.assign(i.scene.publish.settings,{video:{...br.defaultData.settings.video,...at(i.scene.publish.settings.video)}})}function nM(i){function t(e){if(e.layers){for(let r of Object.values(e.layers))if(r){for(let[o,n]of Object.entries(r))if((I0.includes(o)||typeof n=="boolean")&&delete r[o],o==="texture")for(let[a,s]of Object.entries(n))(E0.includes(a)||typeof s=="boolean")&&delete n[a]}}}i.scene.objects.traverse((e,r)=>{r.states.forEach(o=>{let n=o;n.material?t(n.material):n.materials&&n.materials.forEach(a=>{t(a)})})})}function aM(i){i.scene.publish.withBackground=!0}function sM(i){i.scene.publish.settings.web={compress:!0,preload:!0,preset:1,logo:!0,hint:!1}}function lM(i){i.scene.objects.traverse((t,e)=>{let r=e.cloner;r&&(r.radial.scale=r.radial.scale.map(o=>o+1),r.linear.scale=r.linear.scale.map(o=>o+1))})}function cM(i){i.scene.objects.traverse((t,e)=>{let r=e.geometry;r&&(r.type==="DodecahedronGeometry"||r.type==="IcosahedronGeometry")&&(r.detail=Math.round(r.detail))})}function uM(i){i.scene.objects.traverse((t,e)=>{let r=i.scene.objects.unproxy().parent(t);if(r){let o=at(i.scene.objects.data(r));o&&o.type==="Mesh"&&o.geometry.type==="BooleanGeometry"&&e.type==="Mesh"&&(e.visible=at(e).booleanExclude!==!0)}})}function dM(i){i.scene.objects.traverse((t,e)=>{if(e.type==="Mesh"){let r=e;e.geometry.type==="NonParametricGeometry"?r.material!==void 0&&delete r.material:r.materials!==void 0&&delete r.materials}})}function pM(i){function t(r){Object.setPrototypeOf(r,He.prototype),r.texture&&Object.setPrototypeOf(r.texture,He.prototype)}function e(r){Object.setPrototypeOf(r,He.prototype);for(let o in r)t(r[o])}i.scene.objects.traverse((r,o)=>{o.states.forEach(n=>{let a=n;if(a.material){let s=at(a.material).layers;e(s),a.material.layers=s}if(a.materials)for(let s=0;s<a.materials.length;s++){let l=a.materials[s],c=at(l).layers;e(c),l.layers=c}})})}function F0(i){i.layers===void 0&&Object.assign(i,Tt.defaultTwoLayerData("lambert"))}function _p(i){!i.layers||i.layers.forEach(t=>{if(t.type==="depth"&&t.colors.length===10){let e=[...t.colors];e.push(t.colors[9]);let r=[...t.steps];r.push(t.steps[9]);let o={...at(t),colors:e,steps:r};Object.assign(t,o)}})}function fM(i){i.scene.objects.traverse((t,e)=>{e.type==="Mesh"&&(e.geometry.type==="BooleanGeometry"||e.geometry.type==="SubdivGeometry")&&(e.geometry.phongAngle=35)})}function j0(i){i.scene.objects.traverse((t,e)=>{"materials"in e?e.materials.forEach(r=>{typeof r!="string"&&_p(r)}):"material"in e&&typeof e.material!="string"&&_p(e.material)}),Object.values(i.shared.materials).forEach(t=>_p(t))}function hM(i){i.scene.environment.ambientLight.softShadows=!1,i.scene.environment.ambientLight.softShadowQuality="low",i.scene.objects.traverse((t,e)=>{(e.type==="DirectionalLight"||e.type==="SpotLight")&&(e.shadowResolution=1024,e.shadowRadius=1,e.depth=1e5)}),i.shared.penumbraSize=new Array(5).fill(.5)}function mM(i){i.shared.audios=Pt({},ue.prototype)}function yM(i){i.shared.videos=Pt({},ue.prototype)}function gM(i){let t=i.shared.materials;Object.entries(t).forEach(([e,r])=>{if(!r.layers){let o={name:"Untitled Material",layers:[{fi:0,data:{type:"light",category:"phong",alpha:.6,visible:!0,mode:0,specular:{r:.2,g:.2,b:.2},shininess:5},id:"layer1"},{fi:1,data:{type:"color",alpha:1,visible:!0,mode:0,color:{r:.2823529411764706,g:.2823529411764706,b:.30196078431372547}},id:"layer2"}]};Object.assign(t,{[e]:o})}})}function xM(i){Object.entries(at(i.shared.images)).filter(r=>r[1].asset===!1).map(r=>r[0]).forEach(r=>{delete i.shared.images[r]}),Object.entries(at(i.shared.audios)).filter(r=>r[1].asset===!1).map(r=>r[0]).forEach(r=>{delete i.shared.audios[r]})}function bM(i){i.scene.publish.settings.web.preload=!1}function U0(i){i.layers&&i.layers.forEach(t=>{t.type==="depth"&&t.num!==void 0&&(t.colors=t.colors.slice(0,t.num),t.steps=t.steps.slice(0,t.num),delete t.num)})}function k0(i){i.layers&&i.layers.forEach(t=>{M0(t)&&t.isMask===void 0&&(t.isMask=!1),(t.type==="texture"||t.type==="video")&&t.blending===void 0&&(t.blending=0),(t.type==="noise"||t.type==="displace"&&t.displacementType==="noise")&&(t.voronoiStyle===void 0&&(t.voronoiStyle=0),t.highCut===void 0&&(t.highCut=1),t.lowCut===void 0&&(t.lowCut=0),t.smoothness===void 0&&(t.smoothness=.3),t.seed===void 0&&(t.seed=0),t.quality===void 0&&(t.quality=1))})}function vM(i){i.shared.fonts=Pt({},ue.prototype)}function SM(i){return i.replace(".typeface","").replace(/optimer/gi,"open sans").replace("space_mono","space mono").replace(/alma_mono/gi,"varela round").replace(/droid_sans_mono/gi,"noto sans mono").replace(/droid_sans|gentilis|gnomon_(simple|foreground)|helvetiker/gi,"roboto").replace(/droid_serif/gi,"roboto slab").replace("_sans"," sans").replace("crimson_text","crimson text").replace("medium_medium","medium").replace("fatface_fatface","fatface").replace("100hairline","thin").replace("200thin","extralight").replace("300light","light").replace("500medium","medium").replace("600semi","semibold").replace("800heavy","extrabold").replace("900black","black").replace(/bodoni_(11|16|24|36|48|72|96)([^_])/gi,"bodoni_$1_$2").replace(/bodoni_(11|16|24|36|48|72|96)/gi,"bodoni moda").replace(/(thin|hairline)(_regular)?/gi,"100").replace(/(extra|ultra)light(_regular)?/gi,"200").replace(/light(_regular)?/gi,"300").replace(/_book|_normal|_roman/gi,"_regular").replace(/medium(_regular)?/gi,"500").replace(/(semi|demi)bold(_regular)?/gi,"600").replace(/(extra|ultra)bold(_regular)?/gi,"800").replace(/bold(_regular)?/gi,"700").replace(/(black|heavy|fatface)(_regular)?/gi,"900").replace(/([1-9]00)_italic/gi,"$1italic").replace(/regularitalic/gi,"italic").replace(/regularitalic/gi,"italic").split(" ").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" ")}function wM(i){let t=[];i.scene.objects.traverse((e,r)=>{let o=r;if(o.type==="TextFrame"){let n=Tt.defaultTwoLayerData("phong"),a=typeof o.color=="string"?i.shared.colors[o.color]:o.color;n.layers[1].data.color={r:a.r,g:a.g,b:a.b},n.layers[1].data.alpha=o.alpha;let s=SM(o.font);i.shared.fonts[s]===void 0&&(i.shared.fonts[s]={name:s});let l={name:o.name,...gt.defaultData,...No.defaultData,flatShading:!1,wireframe:!1,geometry:{...oo.defaultData("TextGeometry"),width:o.width,height:o.height,font:s,depth:0,horizontalAlign:o.horizontalAlign,verticalAlign:o.verticalAlign,fontSize:o.fontSize*1.40625,lineHeight:o.lineHeight/1.40625,letterSpacing:o.letterSpacing-1,text:o.text,textTransform:o.textTransform,extrudeBevelSize:0,extrudeBevelSegments:1},material:n,states:at(o.states),events:at(o.events),visible:o.visible,raycastLock:o.raycastLock,position:o.position,rotation:o.rotation,scale:o.scale,hiddenMatrix:o.hiddenMatrix},c=at(i.scene.objects).parent(e);i.scene.objects.insertAfter(c??null,e,[{id:e+"new",data:l,children:[]}]),t.push(e)}}),t.forEach(e=>{i.scene.objects.delete(e)})}function PM(i){let t={0:"MouseDown",1:"MouseUp",2:"MouseHover",5:"KeyDown",6:"KeyUp",7:"Start",9:"LookAt",10:"Follow",11:"Scroll",12:"Audio",13:"GameControl"};i.scene.objects.traverse((e,r)=>{r.events.forEach(o=>{if(!!t[Number(o.type)])if(Object.assign(o,{type:t[Number(o.type)]}),o.type==="Audio"&&"audioEvent"in o&&(Object.assign(o,{playAudio:o.audioEvent}),delete o.audioEvent),o.type==="GameControl")Object.assign(o,{gameActions:{idle:new be,move:new be,jump:new be}});else{let n=new be;Object.assign(o,{actions:n}),(o.type==="MouseDown"||o.type==="MouseUp"||o.type==="KeyDown"||o.type==="KeyUp")&&"url"in o&&n.push({fi:0,id:eu.generateUUID(),data:{type:"Link",url:o.url,delay:0}}),"targets"in o&&(o.targets.forEach((a,s,l)=>{let c={state:void 0,repeat:0,delay:0,delayDirection:void 0,direction:"normal",duration:0,easing:4},u={easing:a.easing,duration:a.duration};a.easing===6?Object.assign(u,Nr(a,"mass","stiffness","damping","velocity")):a.easing===5&&Object.assign(u,{control1:{...a.control1},control2:{...a.control2}});let p={repeat:a.repeat?-1:0,delay:a.delay,delayDirection:a.delayDirection,direction:a.cycle&&a.rewind?"pingpong-rewind":a.cycle?"pingpong":"normal"},d={state:a.state,...p,...u},f={allowSlerp:!0,type:"Transition",object:a.object,repeat:0,delay:0,delayDirection:void 0,direction:"normal",tweens:new be({fi:0,id:eu.generateUUID(),data:c},{fi:1,id:eu.generateUUID(),data:d})};n.push({fi:l,id:s,data:f})}),delete o.targets)}})})}function OM(i){i.scene.objects.traverse((t,e)=>{function r(o,n){let a=new be,s=[];if(e.events.forEach((l,c,u)=>{if(l.type==="Audio"&&l.trigger===n){let p;s.push(c),l.interaction==="play"?p={...Nr(l,"interaction","audio","delay","volume","loop"),triggerAfter:"after"in l?l.after:void 0,toggle:"after"in l?l.toggle:void 0,type:"Audio"}:(l.interaction==="pause"||l.interaction==="stop")&&(p={...Nr(l,"interaction","delay","object","playAudio"),type:"Audio"}),p&&a.push({fi:u,id:c,data:p})}}),s.forEach(l=>e.events.delete(l)),a.length){let l=e.events.find(c=>c.type===o)?.data;l?"actions"in l&&l.actions.insertBefore(null,a):e.events.insertBefore(null,[{id:eu.generateUUID(),data:{type:o,actions:a}}])}}r("Start","start"),r("MouseDown","mouseDown"),r("MouseUp","mouseUp"),r("KeyDown","keyDown"),r("KeyUp","keyUp")})}function H0(i){let t=i.layers.find(e=>e.type==="light")?.data;if(t?.category==="basic"){let e=vt.defaultData("light","phong"),r=t;Object.assign(r,e),r.visible=!1}}function W0(i){Lo(i,H0),Bo(i,H0)}function TM(i){i.scene.objects.traverse((t,e)=>{e.type==="Mesh"&&e.geometry.type==="SubdivGeometry"&&(e.geometry.scaleBaked||(e.geometry.scaleBaked=[1,1,1]))})}function CM(i){i.scene.objects.traverse((t,e)=>{(e.type==="Empty"||e.type==="Mesh")&&e.cloner&&!e.cloner.randomnessObject&&!e.cloner.toObject&&!e.cloner.randomness&&(e.cloner={...e.cloner,toObject:{object:"",spreadType:"random",scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],axis:"x",seed:0,count:99,align:"normal"},randomness:!1,randomnessObject:{strength:100,scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],movement:1,seed:0,freqScale:10,noiseType:"perlin"}})})}function AM(i){i.scene.objects.traverse((t,e)=>{e.type==="Mesh"&&e.geometry.type==="NonParametricGeometry"&&!("material"in e)&&!("materials"in e)&&(e.material=Tt.defaultTwoLayerData("phong"))})}function MM(i){i.scene.publish.orbitControls.autoZoom===void 0&&(i.scene.publish.orbitControls.autoZoom=!1),i.scene.objects.traverse((t,e)=>{(e.type==="OrthographicCamera"||e.type==="PerspectiveCamera")&&(e.orthographic.autoZoom===void 0&&(e.orthographic.autoZoom=!1),e.orthographic.autoZoomFrustumSize===void 0&&(e.orthographic.autoZoomFrustumSize=790))})}function IM(i){i.scene.objects.traverse((t,e)=>{e.pathSnapping===void 0&&(e.pathSnapping={pathId:null,slide:0,offset:0,orientation:"tangential"}),e.pathSnapping.offset===void 0&&(e.pathSnapping.offset=0)})}function EM(i){i.scene.publish.mouseEventTarget===void 0&&(i.scene.publish.mouseEventTarget="canvas"),i.scene.publish.settings.web.hint===void 0&&(i.scene.publish.settings.web.hint=!1)}function NM(i){let{video:t}=i.scene.publish.settings;t.format==="gif"&&t.fps>48&&(t.fps=15)}function DM(i){i.scene.objects.traverse((t,e)=>{e.events.forEach(r=>{r.type==="GameControl"&&(r.resetYPosition=Math.abs(r.resetYPosition-e.position[1]))})})}function _M(i){let t=i.scene.environment.usePhysics;i.scene.objects.traverse((e,r)=>{t&&r.physics===null?r.collision=!1:r.collision="visibility"})}function RM(i){i.scene.objects.traverse((t,e)=>{e.events.forEach(r=>{r.type==="GameControl"&&(r.navmesh=Jc.defaultDataThirdPerson.navmesh)})})}function LM(i){i.scene.styles||(i.scene.styles=_o.defaultData())}function q0(i){i.layers.forEach(t=>{t.type==="light"&&t.category!=="toon"&&t.occlusion===void 0&&(t.occlusion=!0)})}function BM(i){i.scene.environment.ambientLight.occlusion===void 0&&(i.scene.environment.ambientLight.occlusion=!1),i.scene.environment.ambientLight.aoFullRes===void 0&&(i.scene.environment.ambientLight.aoFullRes=!1),i.scene.environment.ambientLight.radius===void 0&&(i.scene.environment.ambientLight.radius=256),i.scene.environment.ambientLight.bias===void 0&&(i.scene.environment.ambientLight.bias=.5),i.scene.environment.ambientLight.aoColor===void 0&&(i.scene.environment.ambientLight.aoColor={r:.19607843137254902,g:.19607843137254902,b:.19607843137254902}),Bo(i,q0),Lo(i,q0)}function VM(i){i.scene.objects.traverse((t,e)=>{e.events.forEach(r=>{r.type==="GameControl"&&Object.assign(r.gameActions,{run:new be})})})}function zM(i){i.scene.objects.traverse((t,e)=>{e.events.forEach(r=>{r.type==="GameControl"&&(r.keyAssignments=[...r.keyAssignments,["run","\u21E7"],["none","Ctrl"]])})})}function $0(i){i.layers&&i.layers.forEach(t=>{t.type==="light"&&t.bumpMapIntensity===void 0&&(t.bumpMapIntensity=5)})}function X0(i,t){if(t<1&&(Bo(i,G0),Lo(i,G0),i.schema=1),t<2&&(oM(i),i.schema=2),t<3&&(nM(i),i.schema=3),t<4&&(aM(i),i.schema=4),t<5&&(sM(i),i.schema=5),t<6&&(lM(i),i.schema=6),t<7&&(cM(i),i.schema=7),t<8&&(i.schema=8),t<9&&(j0(i),i.schema=9),t<10&&(fM(i),i.schema=10),t<11&&(hM(i),i.schema=11),t<12&&(j0(i),i.schema=12),t<13&&(mM(i),i.schema=13),t<14&&(gM(i),i.schema=14),t<15&&(xM(i),i.schema=15),t<16&&(bM(i),i.schema=16),t<17&&(Bo(i,U0),Lo(i,U0),i.schema=17),t<18&&(Bo(i,F0),Lo(i,F0),i.schema=18),t<19&&(iM(i),i.schema=19),t<20&&(vM(i),wM(i),i.schema=20),t<21&&(PM(i),OM(i),i.schema=21),t<22&&(W0(i),i.schema=22),t<23&&(TM(i),i.schema=23),t<24&&(CM(i),i.schema=24),(t<25||i.shared.videos===void 0)&&(yM(i),t<25&&(i.schema=25)),t<26&&(uM(i),i.schema=26),t<27&&(dM(i),i.schema=27),t<28&&(W0(i),i.schema=28),t<29&&(pM(i),i.schema=29),t<30&&(AM(i),i.schema=30),t<31&&(MM(i),i.schema=31),t<33&&(IM(i),i.schema=33),t<34&&(EM(i),i.schema=34),t<35&&(NM(i),i.schema=35),t<36&&(DM(i),i.schema=36),t<37&&(_M(i),i.schema=37),t<38&&(Bo(i,k0),Lo(i,k0),i.schema=38),t<39&&(RM(i),i.schema=39),t<40&&(LM(i),i.schema=40),t<41&&(BM(i),i.schema=41),t<42&&(VM(i),i.schema=42),t<43&&(zM(i),i.schema=43),t<99){Bo(i,$0),Lo(i,$0),i.scene.publish.playCamera===null&&(i.scene.publish.playCamera=pi);let e=at(i.scene.objects),r=i.scene.objects;i.scene.publish.playPage=fi,r.insertBefore(null,null,[{id:fi,data:{...Do.defaultData,backgroundColor:i.scene.backgroundColor,fog:i.scene.fog,postprocessing:i.scene.postprocessing,ao:Nr(i.scene.environment.ambientLight,"occlusion","aoFullRes","radius","bias","aoColor"),publish:{playCamera:i.scene.publish.playCamera,gameControlObject:i.scene.publish.gameControlObject},shadow:Nr(i.scene.environment.ambientLight,"softShadowQuality"),globalPhysics:{...js.defaultData,...Nr(i.scene.environment,"usePhysics","gravity")},camera:at(i.scene.ownerCamera)??Do.defaultData.camera,name:"Scene"},children:[]}]);for(let a of e)a.id!==Ro.TRASH_CAN_ID&&r.move(fi,a.fi,a.id);let o=0,n=0;i.shared.penumbraSize&&i.scene.objects.traverse((a,s)=>{s.type==="DirectionalLight"?(s.penumbraSize=i.shared.penumbraSize[Math.min(o,2)],o+=1):s.type==="SpotLight"&&(s.penumbraSize=i.shared.penumbraSize[3+Math.min(n,1)],n+=1),(s.physics===void 0||s.physics===null)&&s.type!=="Instance"&&(s.physics={},Object.assign(s.physics,mi.defaultData)),s.physics!==void 0&&s.physics!==null&&(s.physics.enabled=s.collision??"visibility",delete s.collision)}),i.schema=99}}function Y0(i){i.layers&&i.layers.forEach(t=>{t.type==="light"&&t.alphaOverride===void 0&&(t.alphaOverride=1)})}function GM(i){i.scene.objects.traverse((t,e)=>{let r=e.geometry;r&&r.type==="PathGeometry"&&(r.extrusion.capType="flat",r.extrusion.bevel=50,r.extrusion.bevelSides=6,r.extrusion.shape.type==="Custom"&&(r.extrusion.shape.shapeQuality="low"))})}function FM(i){Array.isArray(at(i.events))&&i.events?.forEach(t=>{"disabled"in t||(t.disabled=!1),(t.type==="MouseDown"||t.type==="MouseUp"||t.type==="MousePress")&&(t.mode=t.mode||"Object")})}var ha=180/Math.PI;function K0(i){i.rotation=i.rotation.slice(0,3).map(t=>t*ha)}function Q0(i){K0(i),i.type==="Page"&&K0(i.camera),i.states?.forEach(e=>{e.rotation===void 0||e.rotation===null||(e.rotation=e.rotation.slice(0,3).map(r=>r*ha))});let t=i.geometry;t&&t.type==="SphereGeometry"&&(t.thetaLength=(t.thetaLength??180)*ha),t&&t.type==="TorusGeometry"&&(t.arc=t.arc*ha),t&&t.type==="PathGeometry"&&(t.extrusion.angle*=ha,t.extrusion.twist*=ha),i.type==="Mesh"&&i.geometry.type==="TextGeometry"&&(i.geometry.text={textValue:i.geometry.text}),Array.isArray(at(i.events))&&i.events?.forEach(e=>{(e.type==="MouseDown"||e.type==="MouseUp"||e.type==="MousePress"||e.type==="KeyDown"||e.type==="KeyUp"||e.type==="KeyPress"||e.type==="Collision"||e.type==="Trigger")&&(e.runMode=e.toggle?"Toggle":"Repeat")})}function jM(i){i.shared.variables=Pt({},ue.prototype)}function UM(i){let t=at(i.shared.variables);i.shared.variables=Pt(Object.entries(t??{}).map(([e,r],o)=>({fi:o,id:e,data:r})),be.prototype)}var no=118;function Rp(i,t){t(i.data);for(let e of i.children)Rp(e,t)}function kM(i){let t=i.schema??104;t!==no&&(t<105&&(Rp(i.asset,Q0),i.schema=105),t<118&&(Rp(i.asset,Z0),i.schema=118))}function HM(i){i.shared.particles=Pt({},ue.prototype),i.shared.lib&&(i.shared.lib.particles=_r.defaultData().particles)}function WM(i){i.scene.objects.traverse((t,e)=>{e.type==="Particle"&&typeof e.renderMaterial.size=="number"&&Object.assign(e.renderMaterial,{size:[e.renderMaterial.size,e.renderMaterial.size]})})}function qM(i){i.scene.objects.traverse((t,e)=>{e.type==="Page"&&(e.postprocessing.depthOfField.focusDistance=100,e.postprocessing.depthOfField.focalLength=20,e.postprocessing.depthOfField.bokehScale=5)})}function $M(i){i.scene.objects.traverse((t,e)=>{Array.isArray(at(e.events))!==!1&&e.events?.forEach(r=>{let o=r.runMode;r.type==="MouseDown"||r.type==="MouseUp"||r.type==="KeyDown"||r.type==="KeyUp"||r.type==="Collision"||r.type==="Trigger"?r.actions?.forEach(n=>{n.type==="Transition"&&(n.runMode=o??"Repeat"),(n.type==="Animation"||n.type==="SwitchCamera")&&(n.runMode=o==="Toggle"?"Toggle":"Normal")}):r.type==="MouseHover"||r.type==="MousePress"||r.type==="KeyPress"?r.actions?.forEach(n=>{(n.type==="Transition"||n.type==="Animation"||n.type==="SwitchCamera")&&(n.runMode="Toggle")}):r.type==="GameControl"?(delete r.actions,Object.keys(r.gameActions).forEach(a=>{r.gameActions[a]?.forEach(s=>{s.type==="Transition"&&(s.runMode="Repeat"),s.type==="Animation"&&(s.runMode="Normal")})})):r.type==="DragDrop"?(delete r.actions,r.dragDropActions?.drag?.forEach(n=>{(n.type==="Transition"||n.type==="Animation"||n.type==="SwitchCamera")&&(n.runMode="Toggle")}),r.dragDropActions?.drop?.forEach(n=>{(n.type==="Transition"||n.type==="Animation"||n.type==="SwitchCamera")&&(n.runMode="Toggle")})):r.type==="Resize"?(delete r.actions,r.breakpoints?.forEach(n=>{n.actions?.forEach(a=>{(a.type==="Transition"||a.type==="Animation"||a.type==="SwitchCamera")&&(a.runMode="Toggle")})})):r.type==="Start"?r.actions?.forEach(n=>{n.type==="Transition"&&(n.runMode="Once"),(n.type==="Animation"||n.type==="SwitchCamera")&&(n.runMode="Normal")}):r.type==="VariableChange"||r.type==="Scroll"?r.actions?.forEach(n=>{n.type==="Transition"&&(n.runMode="Repeat"),(n.type==="Animation"||n.type==="SwitchCamera")&&(n.runMode="Normal")}):r.type==="Conditional"&&(delete r.actions,r.inActions?.forEach(n=>{n.type==="Transition"&&(n.runMode="Repeat"),(n.type==="Animation"||n.type==="SwitchCamera")&&(n.runMode="Normal")}),r.outActions?.forEach(n=>{n.type==="Transition"&&(n.runMode="Repeat"),(n.type==="Animation"||n.type==="SwitchCamera")&&(n.runMode="Normal")}))})})}function XM(i){i.shared.userAPIs=Pt({},ue.prototype),i.shared.userWebhooks=Pt({},ue.prototype),i.shared.lib&&(i.shared.lib.userAPIs=_r.defaultData().userAPIs,i.shared.lib.userWebhooks=_r.defaultData().userWebhooks)}function YM(i){i.scene.publish.settings.videoStatic===void 0&&(i.scene.publish.settings.videoStatic=br.defaultData.settings.videoStatic)}function Z0(i){i.timelineAnimations=Pt({},ue.prototype)}function tu(i){let t=i.schema??0;if(t!==no){console.warn("updating from ",t,"to ",no),X0(i,t),t<100&&(i.scene.publish.joystickSizeAndXYOffset===void 0&&(i.scene.publish.joystickSizeAndXYOffset=br.defaultData.joystickSizeAndXYOffset),i.schema=100),t<101&&(Bo(i,Y0),Lo(i,Y0),i.schema=101),t<102&&(GM(i),i.schema=102),t<104&&(i.shared.catelogs=new ue,i.shared.lib=_r.defaultData(),i.schema=104),t<105&&(jM(i),i.scene.objects.traverse((e,r)=>{Q0(r)}),i.schema=105);for(let e of Object.values(i.shared.lib.components))kM(e);t<106&&(UM(i),i.schema=106),t<107&&(i.shared.lib.variables=_r.defaultData().variables,i.schema=107),t<109&&(HM(i),i.schema=109),t<110&&(WM(i),i.schema=110),t<111&&(i.scene.objects.traverse((e,r)=>{FM(r)}),i.schema=111),t<112&&(qM(i),i.schema=112),t<113&&($M(i),i.schema=113),t<114&&(i.scene.publish.settings.web.imageQuality===void 0&&(i.scene.publish.settings.web.imageQuality=70),i.schema=114),t<115&&(XM(i),i.schema=115),t<116&&(YM(i),i.schema=116),t<117&&(i.scene.publish.settings.web.pixelRatioMobile===void 0&&(i.scene.publish.settings.web.pixelRatioMobile=0),i.scene.publish.settings.web.pixelRatioDesktop===void 0&&(i.scene.publish.settings.web.pixelRatioDesktop=0),i.schema=117),t<118&&(i.shared.timelineAnimations=Pt({},ue.prototype),i.scene.objects.traverse((e,r)=>{Z0(r)}),i.schema=118)}}var pa;(c=>{c.defaultData={schema:no,scene:Ro.defaultData,frames:new ue().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",fa.defaultData),shared:{...vr.emptyData(),colors:vr.defaultColors()}},c.emptyDataForImports=function(){let u=Ro.emptyDataWithPage();return{schema:no,scene:u,frames:new ue().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",fa.defaultData),shared:{...vr.emptyData(),colors:vr.defaultColors(),images:vr.defaultImages()}}},c.emptyData=function(){return{schema:no,scene:Ro.emptyDataWithPage(),frames:new ue().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",fa.defaultData),shared:vr.emptyData()}},c.clipboard2dData=function(){return{schema:no,scene:Ro.emptyData(),frames:new ue,shared:vr.emptyData()}},c.collabHelper={...Ls,updateSchema(u){return(u.schema??0)<no?ai(u,tu):(u.schema??0)-no}};function n(u){let p=c.collabHelper.updateSchema(u);return typeof p=="number"?p===0?u:null:p.data}c.updateSchemaDirectly=n;function a(u){return{...u,shared:{...u.shared,lib:_r.defaultData()}}}c.withoutLib=a;function s(u,p){let d=u.scene.objects.get(p);if(d&&d.data.type==="Component")return d;{let f=u.shared.lib.components[p];if(f)return f.asset}}c.getComponentData=s;function l(u){let p=Object.values(u.shared.userAPIs);for(let d of p){let f=d.headers;for(let h of f)if(h.data.key.toLowerCase()==="authorization"&&h.data.value!=="")return!0}return!1}c.hasSensitiveData=l})(pa||(pa={}));var ru;(t=>t.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII=",name:"empty"})(ru||(ru={}));var J0;(t=>{function i(e){return!0}t.is=i})(J0||(J0={}));var ou;(r=>{r.defaultData={position:[0,0],scale:[1,1],rotation:0,shear:[0,0]};function t(o,n){return{position:n?.position??o.position,rotation:n?.rotation??o.rotation,scale:n?.scale??o.scale,shear:n?.shear??o.shear}}r.merge=t;function e(o,n){return Hl({position:ia.isEqual(o.position,n.position)?void 0:n.position,rotation:o.rotation===n.rotation?void 0:n.rotation,scale:ia.isEqual(o.scale,n.scale)?void 0:n.scale,shear:o.shear&&n.shear&&ia.isEqual(o.shear,n.shear)?void 0:n.shear})}r.diff=e})(ou||(ou={}));var Lp;(t=>t.defaultData={horizontalConstraint:0,verticalConstraint:0})(Lp||(Lp={}));var ex;(t=>t.defaultData={direction:"row",wrap:"unwrap",align:"top-left",gap:10,rowGap:10,autoGap:!1,autoRowGap:!1,leftPadding:8,rightPadding:8,topPadding:8,bottomPadding:8})(ex||(ex={}));var iu;(t=>t.defaultData={opacity:1,fill:{color:Ie.fromHexAndA(yt,1),enabled:!0},stroke:{color:Ie.from0to1([0,0,0,1]),thickness:1,enabled:!1,mode:"inside"},layerBlur:{radius:2,enabled:!1},backgroundBlur:{radius:2,enabled:!1},dropShadow:{offset:[10,10],blurRadius:10,color:Ie.from0to1([0,0,0,1]),enabled:!1,spread:0},innerShadow:{offset:[10,10],blurRadius:10,color:Ie.from0to1([0,0,0,1]),enabled:!1,spread:0}})(iu||(iu={}));var tn;(n=>{function i(a,s){return{name:s}}n.newEmpty=i;function t(a,s){if(s===void 0)return a;let l={...a},c=["width","height","cornerRadius"];for(let u of c)u in l&&u in s&&s[u]!==void 0&&Object.assign(l,{[u]:s[u]});return l}function e(a,s){if(s===void 0)return a;let l={...a};return"fill"in l&&"fill"in s&&s.fill!==void 0&&Object.assign(l,{fill:{...l.fill,...s.fill}}),"stroke"in l&&"stroke"in s&&s.stroke!==void 0&&Object.assign(l,{stroke:{...l.stroke,...s.stroke}}),"layerBlur"in l&&"layerBlur"in s&&s.layerBlur!==void 0&&Object.assign(l,{layerBlur:{...l.layerBlur,...s.layerBlur}}),"backgroundBlur"in l&&"backgroundBlur"in s&&s.backgroundBlur!==void 0&&Object.assign(l,{backgroundBlur:{...l.backgroundBlur,...s.backgroundBlur}}),"dropShadow"in l&&"dropShadow"in s&&s.dropShadow!==void 0&&Object.assign(l,{dropShadow:{...l.dropShadow,...s.dropShadow}}),"innerShadow"in l&&"innerShadow"in s&&s.innerShadow!==void 0&&Object.assign(l,{innerShadow:{...l.innerShadow,...s.innerShadow}}),l}function r(a,s){if(s===void 0)return a;let l={...a};return Object.assign(l,ou.merge(l,s)),l=t(l,s),l=e(l,s),l}n.patch=r;function o(a,s){let l,c=[];for(let[u,p]of Object.entries(s))u!=="name"&&(l===void 0&&(l={path:[],props:{},type:0},c.push(l)),l.props[u]=p);return c}n.toOps=o})(tn||(tn={}));var Us;(t=>t.defaultData={...ou.defaultData,...Lp.defaultData,states:new be,events:new be,visible:!0,raycastLock:!1})(Us||(Us={}));var ma;(t=>t.defaultData={...Us.defaultData,...iu.defaultData})(ma||(ma={}));var nu;(t=>t.defaultData={cornerRadius:[0,0,0,0]})(nu||(nu={}));var Bp;(t=>t.defaultData={...ma.defaultData,type:"ellipse2d",width:100,height:100,name:"Ellipse"})(Bp||(Bp={}));var ya;(t=>t.defaultData={...ma.defaultData,...nu.defaultData,type:"rectangle2d",width:100,height:100,name:"Rectangle"})(ya||(ya={}));var Vp;(t=>t.defaultData={...ma.defaultData,type:"text2d",width:100,height:100,fontSize:12,lineHeight:1.2,letterSpacing:0,text:{textValue:"Hello world"},horizontalAlign:1,verticalAlign:1,textTransform:1,font:"Roboto_regular",name:"Text"})(Vp||(Vp={}));var zp;(t=>t.defaultData={...ma.defaultData,type:"path2d",path:"",name:"Path"})(zp||(zp={}));var tx;(t=>{function i(e){return e.type==="ellipse2d"||e.type==="rectangle2d"||e.type==="text2d"||e.type==="vector2d"||e.type==="path2d"}t.is=i})(tx||(tx={}));var ks;(t=>t.defaultData={...Us.defaultData,name:"Group",type:"group2d"})(ks||(ks={}));var Gp;(t=>t.defaultData=()=>({...Us.defaultData,...nu.defaultData,...iu.defaultData,name:"Frame",type:"frame2d",clipped:!0,width:200,height:200,fill:{color:Ie.fromHexAndA(4737101,1),enabled:!0},stroke:{color:Ie.fromHexAndA(0,1),thickness:1,enabled:!1,mode:"inside"},backgroundBlur:{radius:2,enabled:!1},layerBlur:{radius:2,enabled:!1}}))(Gp||(Gp={}));var Vo;(n=>{function i(a){switch(a){case"rectangle2d":return{...ya.defaultData};case"ellipse2d":return{...Bp.defaultData};case"text2d":return{...Vp.defaultData};case"vector2d":return{...ya.defaultData};case"path2d":return{...zp.defaultData};case"frame2d":return{...Gp.defaultData()};case"group2d":return{...ks.defaultData}}}n.defaultData=i;function t(a){return"width"in a&&"height"in a?[typeof a.width=="number"?a.width*.5:0,typeof a.height=="number"?a.height*.5:0]:[0,0]}n.getPivot=t;function e(a){return a.type==="rectangle2d"||a.type==="ellipse2d"||a.type==="text2d"||a.type==="frame2d"}n.isResizeable=e;function r(a){return a.type==="frame2d"&&a.autoLayout!==void 0}n.isAutoLayoutable=r;function o(a){return a.type==="rectangle2d"||a.type==="frame2d"}n.hasCorners=o})(Vo||(Vo={}));var au;(e=>(e.defaultData={name:"UI",type:"scene2d",objects:new Qe},e.emptyData=function(){return{type:"scene2d",objects:new Qe}}))(au||(au={}));import{Color as KM}from"three";var Ct=class extends KM{constructor(e,r,o,n){super(e,r,o);this.isColorA=!0;this.a=n}setRGBA(e,r,o,n){super.setRGB(e,r,o),this.a=n}copy(e){return super.copy(e),this.a="a"in e?e.a:1,this}clone(){return new this.constructor(this.r,this.g,this.b,this.a)}equals(e){return super.equals(e)&&this.a===e.a}setStyle(e,r="srgb"){let o;if(e==="transparent")return this.setRGBA(0,0,0,0),this;if(o=/^((?:rgb|hsl)a?)\(([^)]*)\)/.exec(e)){let n,a=o[1],s=o[2];switch(a){case"rgb":case"rgba":if(n=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return this.a=a==="rgba"?parseFloat(n[4]):1,super.setStyle(e,r);break;case"hsl":case"hsla":if(n=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)%\s*,\s*(\d*\.?\d+)%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return this.a=a==="hsla"?parseFloat(n[4]):1,super.setStyle(e,r);break}}return super.setStyle(e,r)}get x(){return this.r}get y(){return this.g}get z(){return this.b}get w(){return this.a}set x(e){this.r=e}set y(e){this.g=e}set z(e){this.b=e}set w(e){this.a=e}};var nd=Ms(ox());import{Object3D as pD,Vector3 as fr,Euler as Sh,MathUtils as jv,Matrix4 as vn}from"three";var QM=.5*(Math.sqrt(3)-1),Hs=(3-Math.sqrt(3))/6,ZM=1/3,ao=1/6,F6=(Math.sqrt(5)-1)/4,j6=(5-Math.sqrt(5))/20,Ws=i=>Math.floor(i)|0,ix=new Float64Array([1,1,-1,1,1,-1,-1,-1,1,0,-1,0,1,0,-1,0,0,1,0,-1,0,1,0,-1]),jp=new Float64Array([1,1,0,-1,1,0,1,-1,0,-1,-1,0,1,0,1,-1,0,1,1,0,-1,-1,0,-1,0,1,1,0,-1,1,0,1,-1,0,-1,-1]);function nx(i=Math.random){let t=sx(i),e=new Float64Array(t).map(o=>ix[o%12*2]),r=new Float64Array(t).map(o=>ix[o%12*2+1]);return function(n,a){let s=0,l=0,c=0,u=(n+a)*QM,p=Ws(n+u),d=Ws(a+u),f=(p+d)*Hs,h=p-f,m=d-f,y=n-h,b=a-m,v,w;y>b?(v=1,w=0):(v=0,w=1);let O=y-v+Hs,S=b-w+Hs,T=y-1+2*Hs,M=b-1+2*Hs,g=p&255,D=d&255,E=.5-y*y-b*b;if(E>=0){let _=g+t[D],R=e[_],V=r[_];E*=E,s=E*E*(R*y+V*b)}let I=.5-O*O-S*S;if(I>=0){let _=g+v+t[D+w],R=e[_],V=r[_];I*=I,l=I*I*(R*O+V*S)}let N=.5-T*T-M*M;if(N>=0){let _=g+1+t[D+1],R=e[_],V=r[_];N*=N,c=N*N*(R*T+V*M)}return 70*(s+l+c)}}function ax(i=Math.random){let t=sx(i),e=new Float64Array(t).map(n=>jp[n%12*3]),r=new Float64Array(t).map(n=>jp[n%12*3+1]),o=new Float64Array(t).map(n=>jp[n%12*3+2]);return function(a,s,l){let c,u,p,d,f=(a+s+l)*ZM,h=Ws(a+f),m=Ws(s+f),y=Ws(l+f),b=(h+m+y)*ao,v=h-b,w=m-b,O=y-b,S=a-v,T=s-w,M=l-O,g,D,E,I,N,_;S>=T?T>=M?(g=1,D=0,E=0,I=1,N=1,_=0):S>=M?(g=1,D=0,E=0,I=1,N=0,_=1):(g=0,D=0,E=1,I=1,N=0,_=1):T<M?(g=0,D=0,E=1,I=0,N=1,_=1):S<M?(g=0,D=1,E=0,I=0,N=1,_=1):(g=0,D=1,E=0,I=1,N=1,_=0);let R=S-g+ao,V=T-D+ao,U=M-E+ao,B=S-I+2*ao,q=T-N+2*ao,j=M-_+2*ao,F=S-1+3*ao,H=T-1+3*ao,W=M-1+3*ao,ee=h&255,te=m&255,Y=y&255,re=.6-S*S-T*T-M*M;if(re<0)c=0;else{let $=ee+t[te+t[Y]];re*=re,c=re*re*(e[$]*S+r[$]*T+o[$]*M)}let K=.6-R*R-V*V-U*U;if(K<0)u=0;else{let $=ee+g+t[te+D+t[Y+E]];K*=K,u=K*K*(e[$]*R+r[$]*V+o[$]*U)}let Z=.6-B*B-q*q-j*j;if(Z<0)p=0;else{let $=ee+I+t[te+N+t[Y+_]];Z*=Z,p=Z*Z*(e[$]*B+r[$]*q+o[$]*j)}let Q=.6-F*F-H*H-W*W;if(Q<0)d=0;else{let $=ee+1+t[te+1+t[Y+1]];Q*=Q,d=Q*Q*(e[$]*F+r[$]*H+o[$]*W)}return 32*(c+u+p+d)}}function sx(i){let e=new Uint8Array(512);for(let r=0;r<512/2;r++)e[r]=r;for(let r=0;r<512/2-1;r++){let o=r+~~(i()*(256-r)),n=e[r];e[r]=e[o],e[o]=n}for(let r=256;r<512;r++)e[r]=e[r-256];return e}import{Triangle as JM}from"three";var Rr=new JM,su=class{constructor(t){this.weightAttribute=null;let e=t.geometry;if(!e.isBufferGeometry||e.attributes.position.itemSize!==3)throw new Error("THREE.MeshSurfaceSampler: Requires BufferGeometry triangle mesh.");e.index&&(e=e.toNonIndexed()),this.geometry=e,this.randomFunction=Math.random,this.positionAttribute=this.geometry.getAttribute("position"),this.distribution=null}build(){let t=this.positionAttribute,e=new Float32Array(t.count/3);for(let o=0;o<t.count;o+=3){let n=1;Rr.a.fromBufferAttribute(t,o),Rr.b.fromBufferAttribute(t,o+1),Rr.c.fromBufferAttribute(t,o+2),n*=Rr.getArea(),e[o/3]=n}this.distribution=new Float32Array(t.count/3);let r=0;for(let o=0;o<e.length;o++)r+=e[o],this.distribution[o]=r;return this}setRandomGenerator(t){return this.randomFunction=t,this}sample(t,e){if(this.distribution){let r=this.distribution[this.distribution.length-1],o=this.binarySearch(this.randomFunction()*r);return this.sampleFace(o,t,e)}}binarySearch(t){if(!this.distribution)return 0;let e=this.distribution,r=0,o=e.length-1,n=-1;for(;r<=o;){let a=Math.ceil((r+o)/2);if(a===0||e[a-1]<=t&&e[a]>t){n=a;break}else t<e[a]?o=a-1:r=a+1}return n}sampleFace(t,e,r){let o=this.randomFunction(),n=this.randomFunction();return o+n>1&&(o=1-o,n=1-n),Rr.a.fromBufferAttribute(this.positionAttribute,t*3),Rr.b.fromBufferAttribute(this.positionAttribute,t*3+1),Rr.c.fromBufferAttribute(this.positionAttribute,t*3+2),e.set(0,0,0).addScaledVector(Rr.a,o).addScaledVector(Rr.b,n).addScaledVector(Rr.c,1-(o+n)),Rr.getNormal(r),this}};import{Object3D as iI}from"three";var ux=Ms(cx());import{Object3D as eI,Matrix4 as so}from"three";var tI=new so,rI=new so,oI=new so,zo;(t=>{function i(e){return e&&e.__isSPEObject}t.is=i})(zo||(zo={}));var ga=i=>class extends i{constructor(){super(...arguments);this.previousModelViewMatrix=new so;this.copyPreviousMatrix=!0;this.hiddenMatrix=new so;this.matrixWorldRigid=new so;this.shearScale=new so;this.shearScaleInv=new so}get __isSPEObject(){return!0}isDescendantOf(r){r instanceof eI&&(r=r.uuid);let o=this;for(;o.parent;){if(o.parent.uuid===r)return!0;o=o.parent}return!1}updateMatrixWorld(r){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||r)&&(this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),this.matrixWorldNeedsUpdate=!1,r=!0);for(let o of this.children)o.updateMatrixWorld(r)}updateWorldMatrix(r,o){let n=this.parent;if(r&&n!==null&&n.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),o)for(let a of this.children)a.updateWorldMatrix(!1,!0)}traverseChildren(r,o=0){for(let n of this.children)zo.is(n)&&n.traverseObject(r,o+1)}traverseObject(r,o=0){if(r(this,o)!==!0)for(let a of this.children)zo.is(a)&&a.traverseObject(r,o+1)}updateMatrixWorldSVD(){let r=this.matrixWorld.elements,o=[[r[0],r[4],r[8]],[r[1],r[5],r[9]],[r[2],r[6],r[10]]],{u:n,v:a,q:s}=(0,ux.SVD)(o),l=tI.set(n[0][0],n[0][1],n[0][2],0,n[1][0],n[1][1],n[1][2],0,n[2][0],n[2][1],n[2][2],0,0,0,0,1),c=rI.set(a[0][0],a[0][1],a[0][2],0,a[1][0],a[1][1],a[1][2],0,a[2][0],a[2][1],a[2][2],0,0,0,0,1),u=oI.copy(c).transpose();this.shearScale.makeScale(s[0],s[1],s[2]).multiply(u).premultiply(c),this.shearScaleInv.copy(this.shearScale).invert(),this.matrixWorldRigid.multiplyMatrices(l,u).copyPosition(this.matrixWorld),s.every(p=>Math.abs(s[0]-p)<.01)?this.hasNonUniformScale=!1:this.hasNonUniformScale=!0}attach(r,o){this.updateWorldMatrix(!0,!1);let n=new so().copy(this.matrixWorld).invert();return r.parent!==null&&(r.parent.updateWorldMatrix(!0,!1),n.multiply(r.parent.matrixWorld)),"hiddenMatrix"in r&&r.hiddenMatrix instanceof so?r.hiddenMatrix.premultiply(n):r.applyMatrix4(n),r.updateWorldMatrix(!1,!1),this.add(r),o!==void 0&&(this.children.pop(),this.children.splice(o,0,r)),this}copy(r,o=!1){return super.copy(r,o),this.hasNonUniformScale=r.hasNonUniformScale,this}onAfterRender(r,o,n,a,s,l){this.copyPreviousMatrix&&this.previousModelViewMatrix.copy(this.modelViewMatrix)}};var Up=class extends ga(iI){},nI=i=>i.type==="Mesh",Lr=class extends Up{constructor(e){super();this.object=e;this.matrixAutoUpdate=!1,this.hasNonUniformScale=e.hasNonUniformScale}raycast(e,r){}expand(){let e=0,r=this.object.entityChildren(e);for(;r;){let o=this.children[e];o?.object!==r&&(o&&this.remove(o),o=new Lr(r),this.add(o),this.children.splice(e,0,this.children.pop()),o.matrixWorldNeedsUpdate=!0,o.matrixAutoUpdate=!1,o.matrix=r.matrix,o.hiddenMatrix=r.hiddenMatrix),o.expand(),e+=1,r=this.object.entityChildren(e)}for(;this.children.length>e;)this.remove(this.children[e])}get visible(){return this.playModeVisible!==void 0?this.playModeVisible:this.object.visible||this.object.dataPatched.visible&&this.object.dataPatched.cloner?.hideBase===!0}set visible(e){}get castShadow(){return this.object.castShadow}set castShadow(e){}get receiveShadow(){return this.object.receiveShadow}set receiveShadow(e){}get isMesh(){return nI(this.object)}get isLight(){return this.object.isLight}get layers(){return this.object.layers}set layers(e){}get isCamera(){return!1}get geometry(){if(this.object.geometry)return this.object.geometry}get material(){if(this.object.material)return this.object.material}get morphTargetInfluences(){if(this.object.morphTargetInfluences)return this.object.morphTargetInfluences}set morphTargetInfluences(e){}};import{Box3 as AE,BufferGeometry as ME,MeshBasicMaterial as IE}from"three";import{Matrix4 as TE,Mesh as CE}from"three";import{Matrix4 as uu,Vector3 as fx,Euler as dI,MathUtils as $s}from"three";import{Box3 as aI,Line3 as sI,Matrix4 as kp,Vector3 as ur}from"three";var rn=new ur,on=new ur,xa=new kp,px=[new ur(-1,1,1),new ur(-1,-1,1),new ur(1,-1,1),new ur(1,1,1),new ur(-1,1,-1),new ur(-1,-1,-1),new ur(1,-1,-1),new ur(1,1,-1)],lI=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],cI=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]],dx=(i,t,e)=>{i.updateEntityBoxSize(rn,on),xa.copy(t).multiply(i.matrixWorld),on.x===0&&on.y===0&&on.z===0?e.push(new ur(rn.x,rn.y,rn.z).applyMatrix4(xa)):px.forEach(r=>{e.push(r.clone().multiply(on).add(rn).applyMatrix4(xa))})},qs=class extends aI{constructor(){super(...arguments);this.matrix=new kp;this.vertices=[];this.faces=[];this.edges=[];this.centerEdges=[]}copy(e){return super.copy(e),this.matrix.copy(e.matrix),this.vertices=e.vertices.map(r=>r.clone()),this.faces=e.faces.map(r=>r.clone()),this.edges=e.edges.map(r=>r.clone()),this.centerEdges=e.centerEdges.map(r=>r.clone()),this}setFromObjectSize(e,r=!1){e.updateWorldMatrix(!1,r),this.makeEmpty(),this.matrix.copy(e.matrixWorld);let o=new kp().copy(e.matrixWorld).invert();return this.expandByObjectSize(e,o,r)}expandByObjectSize(e,r,o=!1){let n=[];return o===!0?e.traverseEntity(a=>{if(a.visible||a.cloner&&a.data.visible){if(!("geometry"in a)){n.push(new ur);return}dx(a,r,n)}}):dx(e,r,n),this.setFromPoints(n)}getCenter(e){return e=super.getCenter(e),e.applyMatrix4(this.matrix),e}getPositionToCenter(e){return e=super.getCenter(e),e.applyMatrix4(xa.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(on).multiplyScalar(.5),this.getCenter(rn),xa.copy(this.matrix).setPosition(rn),this.vertices=px.map(e=>e.clone().multiply(on).applyMatrix4(xa))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=lI.map(([e,r])=>new sI(this.vertices[e],this.vertices[r])),this.centerEdges=this.edges.map(e=>e.getCenter(new ur))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=cI.map(([e,r])=>this.vertices[e].clone().add(this.vertices[r]).multiplyScalar(.5))}};var Br={Cloner:()=>{},changeEntityProptotype:()=>{},createEntity:()=>{}};import{CurvePath as uI,CubicBezierCurve3 as Hp,Vector3 as Vr}from"three";var qp=class extends uI{constructor(){super()}getPoints(t=12){let e=[],r,o=this.getCurveLengths(),a=o[o.length-1]/o.length;for(let s=0,l=this.curves;s<l.length;s++){let c=l[s],u=s===0?o[s]:o[s]-o[s-1],p=Math.ceil(t*u/a),d=c.getPoints(p);for(let f=0;f<d.length;f++){let h=d[f];r&&r.equals(h)||(e.push(h),r=h)}}return this.autoClose&&e.length>1&&!e[e.length-1].equals(e[0])&&e.push(e[0]),e}};var $p=.001;function Xp(i,t,e){return t.clone().sub(i).cross(t.clone().sub(e)).length()<=$p}function Wp(i,t){let e=new Vr(...i.position),r=new Vr(...i.controlNext.position),o=new Vr(...t.controlPrevious.position),n=new Vr(...t.position);return Xp(e,r,n)&&Xp(e,o,n)}function cu(i){let t=i.points.map(u=>new Vr(...u.data.position)),e=[i.points[0]],r=new Vr(...e[0].data.position);for(let u=0;u<i.points.length-1;u++)Xp(r,t[u],t[u+1])||(e.push(i.points[u]),r=t[u]);e.push(i.points[i.points.length-1]);let o=i.isClosed,n=e.length-(o?0:1),a=e.length,s=[];for(let u=0;u<a;u++){let p=e[u].data,d=new Vr(...p.position),f=new Vr(...p.controlPrevious.position),h=new Vr(...p.controlNext.position),m={position:d,baseRoundness:p.roundness,controlPrevious:f,controlNext:h};if(p.roundness===0||!i.isClosed&&(u===0||u===a-1)){s[u]={...m,removedLength:0};continue}let y=o&&u==0?a-1:u-1,b=o&&u==a-1?0:u+1,v=e[y].data,w=e[b].data,O=new Vr(...v.position),S=new Vr(...w.position),T=O.clone().sub(d).normalize(),M=S.clone().sub(d).normalize();Object.assign(m,{prevDir:T,nextDir:M});let g=Wp(v,p),D=Wp(p,w);if(!g||!D)s[u]={...m,removedLength:0};else{let E=T.clone().add(M).normalize(),I=E.clone().cross(T).length()/T.dot(E);s[u]={...m,tan:I,removedLength:p.roundness/I}}}for(let u=0;u<n;u++){let p=u,d=o&&u===a-1?0:u+1,f=s[p],h=s[d];if(f.removedLength!==0||h.removedLength!==0){let m=f.position.distanceTo(h.position);f.removedLength=Math.min(f.removedLength,m/2),h.removedLength=Math.min(h.removedLength,m/2)}}let l=[];for(let u=0;u<n;u++){let p=u,d=o&&u===a-1?0:u+1,f=s[p],h=s[d],m=null;if(!Wp(e[p].data,e[d].data))f.position.distanceTo(h.position)>$p&&(m=new Hp(f.position,f.controlNext,h.controlPrevious,h.position));else{let y=f.position.clone(),b=h.position.clone();(f.removedLength!==0||h.removedLength!==0)&&(f.nextDir&&y.add(f.nextDir.clone().setLength(f.removedLength)),h.prevDir&&b.add(h.prevDir.clone().setLength(h.removedLength))),y.distanceTo(b)>$p&&(m=new Hp(y,y.clone().lerp(b,.3),b.clone().lerp(y,.3),b))}l[2*u+1]=m}for(let u=0;u<a;u++){let p=s[u];if(p.removedLength===0){l[2*u]=null;continue}let d=p.position,f=p.prevDir.clone().multiplyScalar(p.removedLength).add(d),h=p.nextDir.clone().multiplyScalar(p.removedLength).add(d),m=p.tan*p.removedLength,y=p.prevDir.clone().add(p.nextDir).normalize(),b=f.clone().lerp(h,.5),v=f.distanceTo(h)/2,w=y.clone().multiplyScalar(Math.sqrt(Math.pow(m,2)-Math.pow(v,2))).add(b),O=y.clone().multiplyScalar(-m).add(w),S=d.distanceTo(O)/d.distanceTo(b),T=p.prevDir.clone().multiplyScalar(S*d.distanceTo(f)).add(d),M=T.clone().lerp(O,2),g=f.clone().lerp(T,4/3),D=h.clone().lerp(M,4/3);l[2*u]=new Hp(f,g,D,h)}let c=new qp;return l.forEach(u=>{u&&c.add(u)}),c}var De;(t=>{function i(e){return e&&e.__isEntity}t.is=i})(De||(De={}));var ba=i=>De.is(i),pI={type:"completeState",isfromEntity:!0},fI=["x","y","z"],Yp=new fx,hI=new fx().set(0,1,0),va=i=>class extends ga(i){constructor(){super(...arguments);this.raycastLock=!1;this.scaleLock=!1;this.disposed=!1;this.stateSelection=null;this.destroyedInAction=!1;this.instances=[];this.prevState=null;this.currentState=null;this.currentAnimationAction=null;this.reversibleToState=null;this.currentTransitionEvent=null;this.previousAction=null;this._singleBBox=new qs;this._recursiveBBox=new qs;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this._needApplyPathSnapping=!0;this.attachedPaths=new Set}get __isEntity(){return!0}entityChildren(r){let o=this.children[r];if(De.is(o))return o}entityChildrenCount(){let r=this.children.length;for(;r--;)if(De.is(this.children[r]))return r+1;return 0}get isConcreteEntity(){return typeof this.identity=="string"}get isVirtualEntity(){return typeof this.identity!="string"}get isInstanceRoot(){return this.isConcreteEntity&&this.data.type==="Instance"}nearestInstanceSelfOrParent(){let r=this;for(;r.data.type!=="Instance";){let o=r.parent;if(De.is(o))r=o;else return}return r}forInstancesRec(r){this.instances.forEach(o=>{o.disposed||r(o),o.forInstancesRec(r)})}super_Entity(r,o){typeof r=="string"&&(this.uuid=r),this.identity=r,this.data=o,this.matrixAutoUpdate=!1,this.dataPatched=this.data}changeSelectedState(r,o,n=!1){if(!(this.data.states.length===0&&!n)){for(let a of this.data.states)en.toOps(this.data,a.data).forEach(l=>{let c=ea.replaceProps(l,this.data);this.dataPatched=this.data,this.updateByPatchedOp(c,this.data,o)});if(r!==null){let a=this.data.states.data(r);a&&(this.dataPatched=en.patch(this.data,a),en.toOps(this.data,a).forEach(l=>{this.updateByPatchedOp(l,this.dataPatched,o)}))}n&&this.updateTransformState(this.dataPatched,o),this.stateSelection=r,this.updatePathSnapping(this.dataPatched.pathSnapping)}}get singleBBox(){return this.singleBBoxNeedsUpdate&&(this.singleBBoxNeedsUpdate=!1,this._singleBBox.setFromObjectSize(this,!1),this._singleBBox.computeVertices(),this._singleBBox.computeEdges(),this._singleBBox.computeFaces()),this._singleBBox}get recursiveBBox(){return this.recursiveBBoxNeedsUpdate&&(this.recursiveBBoxNeedsUpdate=!1,this._recursiveBBox.setFromObjectSize(this,!0),this._recursiveBBox.computeVertices(),this._recursiveBBox.computeEdges(),this._recursiveBBox.computeFaces()),this._recursiveBBox}updateEntityBoxSize(r,o){r.setScalar(0),o.setScalar(0)}resetBBoxNeedsUpdateSelf(){this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0}resetBBoxNeedsUpdate(){this.resetBBoxNeedsUpdateSelf(),this.traverseAncestors(r=>{ba(r)&&r.resetBBoxNeedsUpdateSelf()}),this.traverseEntity(r=>{r.resetBBoxNeedsUpdateSelf()})}find(r){let o;return this.traverseEntity(n=>{n.uuid===r&&(o=n)}),o}traverseSortNextHelper(){let r=this.parent;if(r){let o=r.children,n=o.indexOf(this)+1;if(De.is(o[n]))return o[n];if(De.is(r))return r.traverseSortNextHelper()}}sortNext(){let r=this.children;return this.children.length>0&&De.is(this.children[0])?r[0]:this.traverseSortNextHelper()}goUp(r){let o=this;for(;r>0&&o!==null;)o=o.parent,r-=1;return o}hasAnccestorOrSelf(r){return this===r||this.hasAnccestor(r)}hasAnccestor(r){let o=this.parent;for(;o;){if(r===o)return!0;o=o.parent}return!1}countToAccestor(r){let o=0,n=this;for(;n!==r;){if(n===null)return-1;n=n.parent,o+=1}return o}forEachEntity(r){for(let o of this.children)ba(o)&&r(o)}traverseEntityAncestors(r){this.traverseAncestors(o=>{De.is(o)&&r(o)})}traverseConcreteEntity(r,o=0){if(r(this,o)!==!0)for(let a of this.children)ba(a)&&a.isConcreteEntity&&a.traverseEntity(r,o+1)}traverseEntity(r,o=0){if(r(this,o)!==!0)for(let a of this.children)ba(a)&&a.traverseEntity(r,o+1)}traverseVisibleEntity(r){r(this);for(let o of this.children)ba(o)&&o.visible&&o.traverseVisibleEntity(r)}updateMatrix(){super.updateMatrix(),this.cloner&&this.cloner.onObjUpdateMatrix(),this.dispatchEvent({type:"updateMatrix"})}updateMatrixWorld(r){super.updateMatrixWorld(r),this.dispatchEvent({type:"updateMatrixWorld"})}copy(r,o=!1){return super.copy(r,o),this.dataPatched=r.dataPatched,this.raycastLock=r.raycastLock,this.scaleLock=r.scaleLock,this.hiddenMatrix.copy(r.hiddenMatrix),this}hasEntityChild(){return this.children.some(r=>ba(r))}isAncestorOf(r){if(this.uuid===r)return!1;let o=!1;return this.traverseEntity(n=>{n.uuid===r&&(o=!0)}),o}toObjectTransformState(r=[]){this.updateWorldMatrix(!0,!1);let o={position:this.position.toArray(),rotation:[this.rotation.x*$s.RAD2DEG,this.rotation.y*$s.RAD2DEG,this.rotation.z*$s.RAD2DEG],scale:this.scale.toArray(),hiddenMatrix:this.hiddenMatrix.toArray()};return Yn(o,r)}getTransformValues(r,o,n){return o[r].map((a,s)=>n?.shared.getVariable(a,[this.uuid,r,fI[s]])??a)}updateTransformState(r,o){let n=!1;return r.position&&(this.position.fromArray(this.getTransformValues("position",r,o)),n=!0),r.rotation&&(Yp.fromArray(this.getTransformValues("rotation",r,o)).multiplyScalar($s.DEG2RAD),this.rotation.setFromVector3(Yp),n=!0),r.scale&&(this.scale.fromArray(this.getTransformValues("scale",r,o)),n=!0),r.hiddenMatrix!==void 0&&(n=!0,this.hiddenMatrix.fromArray(r.hiddenMatrix??di.identity)),n&&(this.updateMatrix(),this.resetBBoxNeedsUpdate(),this.invalidateClonerTransform(this),this.traverseEntityAncestors(a=>{a.invalidateClonerTransform(this)})),r.position&&r.rotation&&r.scale&&r.hiddenMatrix!==void 0&&this.updateWorldMatrix(!1,!0),n}onVariableUpdate(r=!1){if(r){this.resetBBoxNeedsUpdate();return}this.updateMatrix(),this.resetBBoxNeedsUpdate(),this.invalidateClonerTransform(this),this.traverseEntityAncestors(o=>{o.invalidateClonerTransform(this)})}dispose(){this.disposed=!0,this.cloner&&(this.cloner.removeFromParent(),this.cloner=void 0)}disposeChildrenRecursively(){for(let r of this.children)De.is(r)&&r.disposeRecursively()}disposeRecursively(){this.dispose(),this.children.forEach(r=>{De.is(r)&&r.disposeRecursively()})}toState(r=[]){let o={name:this.name,visible:this.visible,raycastLock:this.raycastLock,...this.toObjectTransformState(r)};return Yn(o,r)}updateByObjUpdateOp(r,o){r!==void 0&&this.updateByOp({type:0,props:r,path:[]},{...this.data,...r},o,!1)}updateByOp(r,o,n,a){let s=this.data;this.data=o;let l=r,c=Le(r.path,["states","*"]);if(c!==null){if(r.type===0){let[u]=c;if(this?.stateSelection===u){let p={...r.props};if(delete p.name,Object.values(r.props).some(d=>d===void 0)){let d=this.data;if(d!==void 0){let f=Ze.zoom(d,r.path.slice(2));if(f)for(let h in r.props)r.props[h]===void 0&&h in f&&(p[h]=f[h])}}l={...r,props:p,path:r.path.slice(2)}}}}else if(r.type===0){let u=this.stateSelection?this.data.states.data(this.stateSelection):void 0;if(u!==void 0){if(r.props.name!==void 0&&u.name){let{name:d,...f}=u;u=f}if(r.props.material!==void 0&&"material"in u){let{material:d,...f}=u;u=f}let p=Ze.removeOverridden(r.path,r.props,u);l={...r,props:p}}}if(this.updateByPatchedOpBase(l,en.patch(this.data,this.stateSelection?this.data.states.data(this.stateSelection):void 0),n),Le(r.path,["overrides"])){let u=[],p=[...r.path];for(u.push(p[1]),p.splice(0,2);p.length>0&&p[0]==="descendants";)u.push(p[1]),p.splice(0,2);if(u[u.length-1]===void 0){if(r.type===0)for(let d of Object.keys(r.props)){u[u.length-1]=d;let f=n.scene.findInstance([this.uuid,...u]);f&&(f.overrideData=r.props[d],f.updateState(Qr.apply(f.component.data,f.overrideData),n))}}else{let d=n.scene.findInstance([this.uuid,...u]);if(d){let f=Ze.zoom(d.component.data,p);if(r={...r,path:p},r.type===0){let h=r.props;if(f)for(let[m,y]of Object.entries(r.props))y===void 0&&(h===r.props&&(h={...r.props}),h[m]=f[m]);r={...r,props:h}}d.overrideData=ua.resolve(o.overrides,u),d.updateByOp(r,nt.applySimple(d.data,r),n,!1)}}}else if(this.instances.length>0){let u;if(r.path.length===0&&r.type===0){let p;for(let d of io.rootOverrideProps)d in r.props&&(p===void 0&&(p={}),p[d]=r.props[d]);p&&(u={...r,props:p})}else for(let p of io.rootOverrideProps)if(Le(r.path,[p])){u=r;break}u!==void 0&&this.instances.forEach(p=>{if(p.isInstanceRoot){let d=Qr.filterOp(p.overrideData,u);d&&p.updateByOp(d,nt.applySimple(p.data,d),n,!0)}}),this.instances.forEach(p=>{if(!p.isInstanceRoot){let d=Qr.filterOp(p.overrideData,r);if(d){let f;s===p.data&&r===d?f=o:f=nt.applySimple(p.data,d),p.updateByOp(d,f,n,!0)}}})}}updateByPatchedOpBase(r,o,n){if(this.dataPatched=o,r.path.length===0&&r.type===0)r.props.type!==void 0&&!Dr.is(r.props.type)&&Br.changeEntityProptotype(this,o,n);else if(r.path.length===1&&r.path[0]==="geometry"&&r.type===0&&"type"in r.props){Br.changeEntityProptotype(this,o,n);for(let a of this.children)De.is(a)&&a.updateVisible(n.scene)}this.updateByPatchedOp(r,o,n)}updateByPatchedOp(r,o,n){if(r.path.length===0&&r.type===0?this.updateState(r.props,n):r.type===0&&("resolutionLevel"in r.props||"useChildrenColors"in r.props)&&this.updateState(o,n),r.path[0]==="morphTargetInfluences"&&r.type===0){let s=o.morphTargetInfluences.get(r.path[1])?.data.name;s&&this.updateMorphInfluences(s,n.shared.getVariable(r.props.value,[this.uuid,"morphTargetInfluences",s]))}if(Le(r.path,["pathSnapping"])!==null&&this.updatePathSnapping(o.pathSnapping),Le(r.path,["cloner"])!==null){let a=nt.drop(r,1);a.path.length===0&&a.type===0&&a.props.disabled===!0?this.setFromClonerState(null,n):this.cloner?this.cloner.updateState(o.cloner,n.scene):(this.setFromClonerState(o.cloner,n),this.expandCloner(n.scene)),this.updateVisible(n.scene)}}updatePathSnapping(r=this.dataPatched.pathSnapping){this._updatedPathSnapping=r,this._needApplyPathSnapping=!0}get updatedPathSnapping(){return this._updatedPathSnapping}applyPathSnapping(r){let o=this._updatedPathSnapping?.pathId??this.dataPatched.pathSnapping.pathId,n=this._updatedPathSnapping?.slide??this.dataPatched.pathSnapping.slide??0,a=this._updatedPathSnapping?.offset??this.dataPatched.pathSnapping.offset??0,s=this._updatedPathSnapping?.orientation??this.dataPatched.pathSnapping.orientation;if(o===null)return;let l=r.find(o);if(!l||this._needApplyPathSnapping===!1)return;this._needApplyPathSnapping=!1;let c=l.data;if(c.geometry.path.points.length<=1)return;let u=cu(c.geometry.path),p=(n+a)%1;n+a===1&&p===0&&(p=1);let d=null;try{d=u.curves.length?u.getPointAt(p):null}catch(y){!1&&(console.warn(`The aligned path on ${this.name} is invalid. (${l.name})`),console.error(y))}if(d===null)return;let f=this.parent?this.parent?.matrixWorld:new uu;l.updateMatrixWorld();let h=new uu().multiplyMatrices(f.clone().invert(),l.matrixWorld);d.applyMatrix4(h);let m={position:d.toArray(),rotation:c.rotation};if(s==="tangential"){let y=new uu().extractRotation(l.matrixWorld),b=u.getTangentAt(p).applyMatrix4(y).add(d),v=new uu().lookAt(d,b,hI),w=Yp.setFromEuler(new dI().setFromRotationMatrix(v)).multiplyScalar($s.RAD2DEG);m={...m,rotation:w.toArray()}}this.updateTransformState(m),this.traverseEntity(y=>{y._cameraType&&y.dispatchEvent(pI)})}updateVisible(r){if(this.visible=this.dataPatched.visible&&(!this.dataPatched.cloner||(this.dataPatched.cloner.disabled??!1)||this.dataPatched.cloner?.hideBase!==!0),!r)return;let o=!1;this.traverseEntity(n=>{if(n.data.type==="Splat")return o=!0,!0}),o&&r.reloadSplats()}updateState_Entity(r,o){r.name!==void 0&&(this.name=r.name),r.raycastLock!==void 0&&(this.raycastLock=r.raycastLock),r.visible!==void 0&&(this.updateVisible(o?.scene),this.resetBBoxNeedsUpdate()),o&&"cloner"in r&&r.cloner!==void 0&&(this.setFromClonerState(r.cloner,o),this.updateVisible(o.scene)),this.updateTransformState(r,o)}get attachedSurfaceCloners(){return this.children.filter(r=>r instanceof Br.Cloner&&r.parameters.type==="toObject")}setFromClonerState(r,o){this.disposed||(r===null||r.disabled?(this.cloner&&this.cloner.removeFromParent(),this.cloner=void 0):this.cloner===void 0?(this.cloner=new Br.Cloner(this,r),o.scene.addPendingExpandCloner(this)):this.cloner.updateState(r,o.scene))}expandCloner(r){!this.disposed&&this.cloner&&this.cloner.expandClones(r)}invalidateClonerTransform(r){this.cloner&&this.cloner.invalidateTransform(r)}requestRender(){this.dispatchEvent({type:"requestRender"})}};import{BufferGeometry as gI,ConeGeometry as xI,Float32BufferAttribute as bI,MathUtils as vI}from"three";import{BufferGeometry as mx,CylinderGeometry as mI,Float32BufferAttribute as pu,MathUtils as yI,Vector2 as zr,Vector3 as du}from"three";var yx=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=i.parameters?.radiusTop,r=i.parameters?.radiusBottom,o=Object.assign({},t?.parameters??{width:100,radialSegments:64,heightSegments:1,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadius:8,cornerSegments:8,hollow:0},i.parameters);o.thetaLength=yI.clamp(o.thetaLength,0,360);let n=o.width/2,a=o.radiusTop??n,s=o.radiusBottom??n;if(a===s?(a=n,s=n):a>s?(a=n,s=s*n/a):(a=a*n/s,s=n),o.shapeBlendNode){a=e??n,s=r??n;let l=Math.max(a,s)*2;o.width=l,o.depth=l}return{parameters:Object.assign(o,{width:Math.abs(o.width),height:Math.abs(o.height??o.width),depth:Math.abs(o.depth??o.width),radiusTop:a,radiusBottom:s})}}static build(i){let{width:t,depth:e,height:r,radialSegments:o,heightSegments:n,openEnded:a,thetaStart:s,thetaLength:l,radiusTop:c,radiusBottom:u,cornerRadius:p,cornerSegments:d,hollow:f}=i.parameters,h;return l===0?(h=new mx,h.setAttribute("position",new pu([],3))):p||f?h=new Xs(c,u,r,o,n,a,s,l*Math.PI/180,p,p,d,f):h=new mI(c,u,r,o,n,a,s,l*Math.PI/180),h.scale(1,1,e/t),Object.assign(h,{userData:{...i,type:"CylinderGeometry"}})}};function gi(i,t,e){e.x=i.x*t.x,e.y=i.y,e.z=i.x*t.y}function hx(i){return new zr(i.y,-i.x)}var Xs=class extends mx{constructor(t,e,r,o,n,a,s,l,c,u,p,d,f=!1){super(),this.type="RoundedCylinderBufferGeometry",t=t!==void 0?t:1,e=e!==void 0?e:1,r=r||1,o=Math.floor(o)||8,n=Math.floor(n)||1,a=a!==void 0?a:!1,s=s!==void 0?s:0,l=l!==void 0?l:Math.PI*2,a&&(c=0,u=0);let h=[],m=[],y=[],b=[],v=0,w=r/2,O=new du,S=new du;f&&t==0&&(t=c),f&&e==0&&(e=u);let T=new zr(t,w),M=new zr(e,-w),g=null,D=null,E=null,I=null,N=T.clone().sub(M),_=0,R=0,V=0;d>0&&(_=Math.min(t,e)*(1-d),R=t-_,V=e-_);let U=T.clone();U.x-=_;let B=Math.PI-N.angle(),q=N.angle(),j=Math.tan(q/2),F=Math.tan(B/2),H=j+F,W=d?H:F,ee=d?H:j;if(c=Math.min(c,(t-R)/W,N.length()/H),u=Math.min(u,(e-V)/ee,N.length()/H),c>0){let Q=c/j;g=T.clone().sub(new zr(Q,c)),d&&(E=g.clone(),E.x-=_-H*c),T.sub(N.clone().setLength(Q))}if(u>0){let Q=u/F;D=M.clone().sub(new zr(Q,-u)),M.add(N.clone().setLength(Q)),d&&(I=D.clone(),I.x-=_-H*u,U.sub(N.clone().setLength(Q)))}N=T.clone().sub(M);let te=N.length()<.5,Y=[];for(let Q=0;Q<=o;Q++){let $=[],de=Q/o,le=de*l+s,ie=new zr(Math.sin(le),Math.cos(le));I&&D?(re($,de,ie,B,u,I,-1,!0),re($,de,ie,q,u,D,-1,!1)):D?(K($,ie,D.x,0,-1),re($,de,ie,q,u,D,-1,!1)):a||K($,ie,e,V,-1);let ce=hx(N).normalize();if(gi(ce,ie,O),!te)for(let ae=0;ae<=n;ae++){let me=ae/n,fe=N.clone().multiplyScalar(me).add(M);gi(fe,ie,S),m.push(S.x,S.y,S.z),y.push(O.x,O.y,O.z),b.push(de,.5+S.y/r),$.push(v++)}if(E&&g?(re($,de,ie,B,c,g,1,!1),re($,de,ie,q,c,E,1,!0)):g?(re($,de,ie,B,c,g,1,!1),K($,ie,g.x,0,1)):a||K($,ie,t,R,1),d&&!te){let ae=hx(N).multiplyScalar(-1).normalize();gi(ae,ie,O);for(let me=0;me<=n;me++){let fe=me/n,he=N.clone().multiplyScalar(-fe).add(U);gi(he,ie,S),m.push(S.x,S.y,S.z),y.push(O.x,O.y,O.z),b.push(de,.5+S.y/r),$.push(v++)}}d&&!a&&$.push($[0]),Y.push($)}for(let Q=0;Q<Y.length-1;Q++)for(let $=0;$<Y[0].length-1;$++){if(a&&d&&$==n)continue;let de=Y[Q][$],le=Y[Q+1][$],ie=Y[Q+1][$+1],ce=Y[Q][$+1],ae=m[ie*3+0],me=m[ie*3+2];h.push(de,le,ce),(ae!=0||me!=0)&&h.push(le,ie,ce)}l<Math.PI*2&&(Z(-1,Y[0],s),Z(1,Y[Y.length-1],s+l)),this.setIndex(h),this.setAttribute("position",new pu(m,3)),this.setAttribute("normal",new pu(y,3)),this.setAttribute("uv",new pu(b,2));function re(Q,$,de,le,ie,ce,ae,me){for(let fe=0;fe<p+1;fe++){let he=fe/p,xe=ae<0?he:1-he;me&&(xe-=1),xe*=le;let ye=new zr(Math.sin(xe),Math.cos(xe)*ae),C=ye.clone().multiplyScalar(ie).add(ce);gi(C,de,S),m.push(S.x,S.y,S.z),gi(ye,de,O),y.push(O.x,O.y,O.z),b.push($,.5+S.y/r),Q.push(v++)}}function K(Q,$,de,le,ie){let ce=new du,ae=new zr,me=[de,le];ie<0&&me.reverse();for(let fe of me)ae.set(fe,w*ie),gi(ae,$,ce),m.push(ce.x,ce.y,ce.z),y.push(0,ie,0),b.push(.5,.5),Q.push(v++)}function Z(Q,$,de){let le=new zr(Math.sin(de),Math.cos(de)),ie=new zr(-Math.cos(de),Math.sin(de)),ce=new du,ae=Q<0?(he,xe,ye)=>h.push(he,xe,ye):(he,xe,ye)=>h.push(he,ye,xe),me=new zr((t+e+R+V)/4,0);gi(me,le,ce),m.push(ce.x,ce.y,ce.z),y.push(ie.x,0,ie.y),b.push(.5,.5);let fe=v++;for(let he of $){let xe=m.slice(he*3,he*3+3);m.push(...xe),y.push(ie.x,0,ie.y);let ye=b.slice(he*2,he*2+2);b.push(...ye),v++}for(let he=fe+1;he<v-1;he++)ae(fe,he,he+1);ae(fe,v-1,fe+1)}}};var gx=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:32,heightSegments:8,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadiusTop:8,cornerRadiusBottom:8,cornerSegments:8},i.parameters);return e.thetaLength=vI.clamp(e.thetaLength,0,360),{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t,depth:e,height:r,radialSegments:o,heightSegments:n,openEnded:a,thetaStart:s,thetaLength:l,cornerRadiusTop:c,cornerRadiusBottom:u,cornerSegments:p}=i.parameters,d;return l===0?(d=new gI,d.setAttribute("position",new bI([],3))):c>0||u>0||l<360?d=new Xs(0,t/2,r,o,n,a,s,l*Math.PI/180,c,u,p,0,!0):d=new xI(t/2,r,o,n,a),d.scale(1,1,e/t),Object.assign(d,{userData:{...i,type:"ConeGeometry"}})}};import{BoxGeometry as SI,BufferGeometry as wI,Float32BufferAttribute as Kp,Vector3 as Ys}from"three";var xx=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,widthSegments:1,heightSegments:1,depthSegments:1,cornerRadius:8,cornerSegments:8},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t,height:e,depth:r,widthSegments:o,heightSegments:n,depthSegments:a,cornerRadius:s,cornerSegments:l}=i.parameters,c;return s===0?c=new SI(t,e,r,o,n,a):c=new Zp(t,e,r,o,n,a,s,l),Object.assign(c,{userData:{...i,type:"CubeGeometry"}})}},Qp=Math.PI/2,Zp=class extends wI{constructor(t=1,e=1,r=1,o=1,n=1,a=1,s=0,l=4){super(),this.type="BoxGeometry",o=Math.floor(o),n=Math.floor(n),a=Math.floor(a),l=Math.floor(l),s=Math.min(s,t/2,e/2,r/2);let c=[],u=[],p=[],d=[],f=0;h("z","y","x",-1,-1,r,e,t,a,n),h("z","y","x",1,-1,r,e,-t,a,n),h("x","z","y",1,1,t,r,e,o,a),h("x","z","y",1,-1,t,r,-e,o,a),h("x","y","z",1,-1,t,e,r,o,n),h("x","y","z",-1,-1,t,e,-r,o,n),s>0&&(m("z","y","x",-1,-1,1,r,e,t,a),m("z","y","x",1,-1,-1,r,e,t,a),m("z","y","x",-1,1,-1,r,e,t,a),m("z","y","x",1,1,1,r,e,t,a),m("x","y","z",-1,-1,-1,t,e,r,o),m("x","y","z",1,-1,1,t,e,r,o),m("x","y","z",-1,1,1,t,e,r,o),m("x","y","z",1,1,-1,t,e,r,o),m("y","x","z",-1,-1,1,e,t,r,n),m("y","x","z",1,-1,-1,e,t,r,n),m("y","x","z",1,1,1,e,t,r,n),m("y","x","z",-1,1,-1,e,t,r,n),y(1,1,1),y(-1,1,1),y(1,-1,1),y(-1,-1,1),y(1,1,-1),y(-1,1,-1),y(1,-1,-1),y(-1,-1,-1)),this.setIndex(c),this.setAttribute("position",new Kp(u,3)),this.setAttribute("normal",new Kp(p,3)),this.setAttribute("uv",new Kp(d,2));function h(b,v,w,O,S,T,M,g,D,E){let I=(T-2*s)/D,N=(M-2*s)/E,_=T/2-s,R=M/2-s,V=g/2,U=D+1,B=E+1,q=0,j=new Ys;for(let F=0;F<B;F++){let H=F*N-R;for(let W=0;W<U;W++){let ee=W*I-_;j[b]=ee*O,j[v]=H*S,j[w]=V,u.push(j.x,j.y,j.z),j[b]=0,j[v]=0,j[w]=g>0?1:-1,p.push(j.x,j.y,j.z),d.push(W/D),d.push(1-F/E),q+=1}}for(let F=0;F<E;F++)for(let H=0;H<D;H++){let W=f+H+U*F,ee=f+H+U*(F+1),te=f+(H+1)+U*(F+1),Y=f+(H+1)+U*F;c.push(W,ee,Y),c.push(ee,te,Y)}f+=q}function m(b,v,w,O,S,T,M,g,D,E){let I=(M-2*s)/E,N=M/2-s,_=g/2-s,R=D/2,V=E+1,U=0,B=new Ys,q=new Ys;for(let j=0;j<l+1;j++){let F=j/l*Qp,H=Math.sin(F)*s,W=(1-Math.cos(F))*s,ee=Math.sin(F),te=Math.cos(F);B[v]=(_+H)*S,B[w]=(R-W)*T,q[b]=0,q[v]=ee*Math.sign(B[v]),q[w]=te*Math.sign(B[w]);for(let Y=0;Y<V;Y++){let re=Y*I-N;B[b]=re*O,u.push(B.x,B.y,B.z),p.push(q.x,q.y,q.z),d.push(Y/E),d.push(0),U+=1}}for(let j=0;j<l;j++)for(let F=0;F<E;F++){let H=f+F+V*j,W=f+F+V*(j+1),ee=f+(F+1)+V*(j+1),te=f+(F+1)+V*j;c.push(H,W,te),c.push(W,ee,te)}f+=U}function y(b,v,w){let O=new Ys,S=new Ys(t/2,e/2,r/2);S.subScalar(s);let T=[],M=b*v*w>0?(D,E,I)=>c.push(D,E,I):(D,E,I)=>c.push(D,I,E);for(let D=0;D<=l;D++){let E=[],I=Qp*(1-D/l),N=Math.cos(I),_=Math.sin(I),R=0;for(let V=0;V<=D;V++){let U=Math.cos(R),B=Math.sin(R);O.x=N*U,O.y=_,O.z=N*B;let q=S.clone().addScaledVector(O,s);u.push(b*q.x,v*q.y,w*q.z),p.push(b*O.x,v*O.y,w*O.z),d.push(0,0),E.push(f++),R+=Qp/D}T.push(E)}let g=T.length-1;for(let D=0;D<g;D++){let E=T[D],I=T[D+1],N=E.length-1;M(E[0],I[1],I[0]);for(let _=1;_<=N;_++)M(E[_-1],E[_],I[_]),M(E[_],I[_+1],I[_])}}}};import{BufferGeometry as PI,Float32BufferAttribute as Jp,Triangle as OI,Vector3 as Go,Vector2 as ef}from"three";var xi=class extends PI{constructor(t=[],e=[],r="",o=1,n=.2,a=4){super(),this.type="PolyhedronGeometryRound";let s=[],l=[],c=[];u(),p(),this.setAttribute("position",new Jp(s,3)),this.setAttribute("normal",new Jp(c,3)),this.setAttribute("uv",new Jp(l,2));return;function u(){n=Math.min(1-1e-5,n),n==0&&(a=0);let f={IcosahedronGeometry:5,DodecahedronGeometry:3,HexahedronGeometry:3,OctahedronGeometry:4,TetrahedronGeometry:3}[r],h=new Go,m=h.clone(),y=new OI,b=n*o,v=o-b,w=a+1,O=new Go,S=(j,F)=>O.subVectors(j,F).normalize(),T=(j,F)=>Array(j).fill(void 0).map(F),M=T(t.length/3,(j,F)=>new Go().fromArray(t,F*3).setLength(o)),g=[],D=1e6;for(let j=0;j<M.length;j++){let F=M[j],H=[],W,ee,te,Y=1e10,re=-1;for(;(re=e.indexOf(j,re+1))!=-1;){let $=re-re%3;W=e[$+(re+1)%3],ee=e[$+(re+2)%3],te=F.distanceToSquared(M[W]),Y=Math.min(Y,te),H.push([W,ee,te])}Y+=1e-6;let K=[],Z=0,Q=H.length;for(let $=0;$<Q;$++){[W,ee,te]=H[Z];let de=g[W]?.includes(j)==!0;te<=Y&&K.push(W+ +de*D),Z=H.findIndex(le=>le[0]==ee)}g.push(K)}let E=[];{let j=0,F=0,H,W,ee=f==3;for(let te=0;te<=a;te++){H=te*(te+1)/2,W=(te+1)*(te+2)/2;for(let Y=0;Y<a-te;Y++)[j,F]=[H+Y+te+2,W+Y+te+3],E.push(H,W,...ee?[F,H]:[j,W],F,j),[H,W]=[j,F];E.push(H,W,H+a+2)}}let I=h.clone(),N=h.clone(),_=h.clone(),R=h.clone(),V=h.clone(),U=[],B=T(M.length,()=>T(f,()=>h.clone()));for(let j=0;j<M.length;j++){h.copy(M[j]).normalize(),I.copy(h).multiplyScalar(v);let F=g[j];for(let K=0;K<F.length;K++){let Z=F[K],Q=F[(K+1)%f];y.setFromPointsAndIndices(M,j,Z%D,Q%D),y.b.sub(y.a).setLength(1e10).add(y.a),y.c.sub(y.a).setLength(1e10).add(y.a),y.closestPointToPoint(I,B[j][K])}let H=[],W=[],ee=[],te=new Go;a==0&&[...B[j]].reduce((K,Z)=>K.add(Z),te).multiplyScalar(1/f);for(let K=0;K<f;K++){let Z=[],Q=(K-1+f)%f,$=B[j][Q],de=B[j][K];h.copy($).sub(I),m.copy(de).sub(I);let le=I.angleTo(h),ie=h.angleTo(m),ce=Math.cos(le)*b;a==0?N.copy(te):N.copy(I).setLength(v+ce),W.push(ce);let ae=[N,$,de];for(let me=0;me<2;me++){let fe=ae[me],he=ae[me+1];R.subVectors(fe,I),V.subVectors(he,I),_.crossVectors(R,V).normalize();for(let xe=0;xe<w;xe++){let ye=[le,ie][me]*xe/w;h.copy(R).applyAxisAngle(_,ye).add(I),H.push(h.clone()),me&&(S(h,I),Z.push([xe==0?fe:h.clone(),O.clone()]))}me&&(S(he,I),Z.push([he,O.clone()]))}ee.push(Z)}U.push(ee);let Y=2*w,re=2;for(let K=0;K<f;K++){let Z=Y*K,Q=Y*((K+1)%f),$=[H[Z]];for(let le=1;le<w;le++){R=H[Z+le],V=H[Q+le],$.push(R);for(let ie=1,ce=le-re+1;ie<=ce;ie++)h.lerpVectors(R,V,ie/(ce+1)),h.sub(I).setLength(W[K]).add(I),$.push(h.clone());$.push(V)}for(let le=0;le<w;le++)$.push(H[le+w+Z]);$.push(H[Q+w]);let de=E.map(le=>$[le]);s.push(...de.map(le=>[le.x,le.y,le.z]).flat()),c.push(...de.map(le=>(S(le,I),[O.x,O.y,O.z])).flat())}}let q=[];for(let j=0;j<g.length;j++)for(let F=0;F<f;F++){let H=g[j][F];if(H<D){let W=g[H].findIndex(Y=>Y%D==j),ee=U[j][F],te=U[H][W];for(let Y=0;Y<w;Y++){let re=ee[Y],K=te[w-Y],Z=ee[Y+1],Q=te[w-(Y+1)];[re,K,Z,Z,K,Q].forEach($=>{s.push($[0].x,$[0].y,$[0].z),c.push($[1].x,$[1].y,$[1].z)})}q.push(ee[0][0],te[w][0],ee[w][0],te[0][0])}}for(;q.length;){let j,F,H,W;[j,F]=q.splice(0,2);let ee=[j];for(;j!=F;)ee.push(F),H=q.indexOf(F),W=H%2,F=q.splice(H-W,2)[1-W];O.subVectors(ee[0],ee[1]).cross(h.subVectors(ee[0],ee[2])).normalize();let te=O.dot(ee[0])<0;te&&O.negate();for(let Y=1;Y<=ee.length-2;Y++)[ee[Y+ +te],ee[Y+1-+te],ee[0]].forEach(re=>{s.push(re.x,re.y,re.z),c.push(O.x,O.y,O.z)})}}function p(){let d=new Go;for(let M=0;M<s.length;M+=3){d.x=s[M+0],d.y=s[M+1],d.z=s[M+2];let g=S(d)/2/Math.PI+.5,D=T(d)/Math.PI+.5;l.push(g,1-D)}let f=new Go,h=new Go,m=new Go,y=new Go,b=new ef,v=new ef,w=new ef,O=(M,g,D,E)=>{E<0&&M.x===1&&(l[g]=M.x-1),D.x===0&&D.z===0&&(l[g]=E/2/Math.PI+.5)};for(let M=0,g=0;M<s.length;M+=9,g+=6){f.set(s[M+0],s[M+1],s[M+2]),h.set(s[M+3],s[M+4],s[M+5]),m.set(s[M+6],s[M+7],s[M+8]),b.set(l[g+0],l[g+1]),v.set(l[g+2],l[g+3]),w.set(l[g+4],l[g+5]),y.copy(f).add(h).add(m).divideScalar(3);let D=S(y);O(b,g+0,f,D),O(v,g+2,h,D),O(w,g+4,m,D)}for(let M=0;M<l.length;M+=6){let g=l[M+0],D=l[M+2],E=l[M+4],I=Math.max(g,D,E),N=Math.min(g,D,E);I>.9&&N<.1&&(g<.2&&(l[M+0]+=1),D<.2&&(l[M+2]+=1),E<.2&&(l[M+4]+=1))}function S(M){return Math.atan2(M.z,-M.x)}function T(M){return Math.atan2(-M.y,Math.sqrt(M.x*M.x+M.z*M.z))}}}static fromJSON(t){return new xi(t.vertices,t.indices,t.radius,t.corner,t.cornerSides)}};import{DodecahedronGeometry as TI}from"three";var bx=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,detail:0,corner:0,cornerSides:4},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t,height:e,depth:r,detail:o,corner:n,cornerSides:a}=i.parameters,s=o===0&&n!==0?new Ks(t*.5,n,a):new TI(t*.5,o);return s.scale(1,e/t,r/t),Object.assign(s,{userData:{...i,type:"DodecahedronGeometry"}})}},Ks=class extends xi{constructor(t=1,e=.2,r=4){let o=(1+Math.sqrt(5))/2,n=1/o,a=[-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,0,-n,-o,0,-n,o,0,n,-o,0,n,o,-n,-o,0,-n,o,0,n,-o,0,n,o,0,-o,0,-n,o,0,-n,-o,0,n,o,0,n],s=[3,11,7,3,7,15,3,15,13,7,19,17,7,17,6,7,6,15,17,4,8,17,8,10,17,10,6,8,0,16,8,16,2,8,2,10,0,12,1,0,1,18,0,18,16,6,10,2,6,2,13,6,13,15,2,16,18,2,18,3,2,3,13,18,1,9,18,9,11,18,11,3,4,14,12,4,12,0,4,0,8,11,9,5,11,5,19,11,19,7,19,5,14,19,14,4,19,4,17,1,12,14,1,14,5,1,5,9],l="DodecahedronGeometry";super(a,s,l,t,e,r),this.type=l}static fromJSON(t){return new Ks(t.radius,t.corner,t.cornerSides)}};import{Plane as BI,Shape as Rx,Vector2 as Fo,Vector3 as VI,MathUtils as lf,LineCurve as cf,QuadraticBezierCurve as Lx,CubicBezierCurve as yu}from"three";import{CubicBezierCurve as fu,EllipseCurve as CI,LineCurve as hu,LineCurve3 as AI,MathUtils as MI,QuadraticBezierCurve as rf,SplineCurve as II,Vector2 as Wt,Vector3 as wx}from"three";var Qs=1e-12,Sa=class{constructor(t){this.position=new Wt;this.startPosition=new Wt;this.uuid=MI.generateUUID();this.position=t.clone()}start(){this.reset()}reset(){this.startPosition.copy(this.position)}applyOffset(t){this.position.copy(this.startPosition).add(t)}copy(t){return this.position.copy(t.position),this.startPosition.copy(t.startPosition),this}clone(){return new Sa(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},wa=class extends Sa{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new wa(this.parent).copy(this)}},Gr=class extends Sa{constructor(e,r){super(r);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new wa(this),new wa(this))}static create(e,r){let o=new Gr(e,new Wt(...r.position));return o.controls[0].position.set(...r.controlPrevious.position),o.controls[1].position.set(...r.controlNext.position),o.roundness=r.roundness,o.areControlsDirectionsMirrored=r.areControlsDirectionsMirrored,o}getOppositeControl(e){let r=this.controls.indexOf(e);return r===0?this.controls[1]:r===1?this.controls[0]:null}applyOffsetToControls(e,r=1){for(let o=0,n=this.controls.length;o<n;o++){let a=this.controls[o];this.position.distanceTo(a.position)<=r?a.position.copy(this.position):a.applyOffset(e)}}controlsMoved(){return!(this.position.equals(this.controls[0].position)&&this.position.equals(this.controls[1].position))}copy(e){return super.copy(e),this.controls[0].copy(e.controls[0]),this.controls[1].copy(e.controls[1]),this.roundness=e.roundness,this.uuid=e.uuid,this}clone(){return new Gr(this.uuid,this.position).copy(this)}toJSON(){return super.toJSON().concat(this.controls[0].toJSON(),this.controls[1].toJSON(),[this.roundness])}computeTangents(){let e=this.curveBefore?.getTangentAt(1),r=this.curveAfter?.getTangentAt(0);return[e,r]}computeNormals(e=new Wt,r=new Wt){let[o,n]=this.computeTangents();return o&&n&&(vx(o,e),vx(n,r)),[e,r]}computeTangent(e=new Wt){let[r,o]=this.computeTangents();return r&&o&&e.copy(r).add(o).normalize(),e}computeNormal(e=new Wt){let[r,o]=this.computeNormals();return e.copy(r).add(o).normalize(),e}};function vx(i,t=new Wt){let e=i.length();return t.set(-i.y/e,i.x/e)}var of=i=>i,Pa=new Wt,mu=new Wt,EI=new Wt,NI=new Wt,DI=new Wt,_I=new Wt,Px=new wx,Ox=new wx;function Tx(i){let t=new Wt;t.addVectors(i.v0,Pa.subVectors(i.v1,i.v0).multiplyScalar(2/3));let e=new Wt;return e.addVectors(i.v2,mu.subVectors(i.v1,i.v2).multiplyScalar(2/3)),new fu(i.v0,t,e,i.v2)}function Zs(i,t,e=Number.EPSILON){return Math.abs(i-t)<e}function RI(i,t,e=Number.EPSILON){return i.distanceTo(t)<e}function LI(i,t,e=Number.EPSILON){return i.distanceTo(t)<e}function nf(i,t,e){let r=Math.sqrt(Math.pow(t.x-i.x,2)+Math.pow(t.y-i.y,2)),o=Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2)),n=Math.sqrt(Math.pow(e.x-i.x,2)+Math.pow(e.y-i.y,2));return Math.acos((o*o+r*r-n*n)/(2*o*r))}function Cx(i,t,e){return Sx(i,t)&&Sx(t,e)&&tf(i.position,t.position,e.position)}function tf(i,t,e){return Pa.copy(t).sub(i).cross(mu.copy(e).sub(i))===0}function Ax(i,t,e,r,o){let n=Math.sqrt(Math.pow(t.x-i.x,2)+Math.pow(t.y-i.y,2)),a=(i.y+t.y)/2,s=(i.x+t.x)/2,l=Math.sqrt(Math.pow(e,2)-Math.pow(n/2,2))*(i.y-t.y)/n,c=Math.sqrt(Math.pow(e,2)-Math.pow(n/2,2))*(t.x-i.x)/n;return r.set(s+l,a+c),o.set(s-l,a-c),[r,o]}function Mx(i,t,e){let r=i.distanceTo(e),o=t.distanceTo(e);return r<o?t:i}function Ix(i,t,e,r,o,n){let a=t.x-i.x,s=t.y-i.y,l=e.x-i.x,c=e.y-i.y,u=Math.sqrt((a+l)*(a+l)+(s+c)*(s+c)),p;return nf(t,i,e)>Math.PI&&(u*=-1),Zs(c,s)?p=(s+c)*(r/u-.5)*8/3/(a-l):p=(a+l)*(r/u-.5)*8/3/(c-s),o.set(t.x-p*s,t.y+p*a),n.set(e.x+p*c,e.y-p*l),[o,n]}function af(i,t){return i.position.equals(i.controls[1].position)&&t.position.equals(t.controls[0].position)}function Sx(i,t){return tf(i.position,i.controls[1].position,t.position)&&tf(i.position,t.controls[0].position,t.position)}function Ex(i,t,e,r,o=.5){let n=Pa.subVectors(t,i).multiplyScalar(o).add(i),a=mu.subVectors(e,t).multiplyScalar(o).add(t),s=EI.subVectors(r,e).multiplyScalar(o).add(e),l=n,c=NI.subVectors(a,n).multiplyScalar(o).add(n),u=DI.subVectors(s,a).multiplyScalar(o).add(a),p=s,d=_I.subVectors(u,c).multiplyScalar(o).add(c);return[i.x,i.y,l.x,l.y,c.x,c.y,d.x,d.y,u.x,u.y,p.x,p.y,r.x,r.y]}function Nx(i,t,e=12,r=!0){let o=Ox.set(0,0,0),n,a=0,s=[];for(let l=0;l<t.length;l++){let c=of(t[l]),u=Pa,p=bi(c,e);s.push(p);for(let d=0;d<=p;d++)if(c instanceof fu||c instanceof rf||c instanceof hu){if(c.getPoint(d/p,u),o.set(u.x,u.y,0),n!==void 0&&LI(n,o))continue;n===void 0&&(n=Px),n.copy(o),i.setXYZ(a,o.x,o.y,o.z),a++}}return r&&a>1&&!(i.getX(a-1)===i.getX(0)&&i.getY(a-1)===i.getY(0)&&i.getZ(a-1)===i.getZ(0))&&(i.setXYZ(a,i.getX(0),i.getY(0),i.getZ(0)),a++),i}function Dx(i,t,e,r=12,o=!0){let n=Ox.set(0,0,0),a=0,s=[];for(let l=0;l<t.length;l++){if(e[l]===!1)continue;let c,u=of(t[l]),p=Pa,d=bi(u,r);s.push(d);for(let f=0;f<=d;f++)if(u instanceof fu||u instanceof rf||u instanceof hu){if(u.getPoint(f/d,p),n.set(p.x,p.y,0),c?.equals(n))continue;c===void 0?c=Px:(i.setXYZ(a,c.x,c.y,c.z),a++,i.setXYZ(a,n.x,n.y,n.z),a++),c.copy(n)}}return o&&a>1&&!(i.getX(a-1)===i.getX(0)&&i.getY(a-1)===i.getY(0)&&i.getZ(a-1)===i.getZ(0))&&(i.setXYZ(a,i.getX(0),i.getY(0),i.getZ(0)),a++),s}function sf(i,t=12,e=!1){let r=[];for(let o=0,n=i.length;o<n;o++){let a=i[o],s=0;if(e&&a.roundedCurveCorner!==void 0){let l=bi(a.roundedCurveCorner,t)*.5;o>0&&(r[o-1]+=l),s+=l}a.curveAfter!==void 0&&(s+=bi(a.curveAfter,t)),r.push(s)}return i.length>0&&e&&i[0].roundedCurveCorner!==void 0&&(r[i.length-1]+=bi(i[0].roundedCurveCorner,t)*.5),r}function bi(i,t=12){return i&&i instanceof CI?t*2:i&&(i instanceof hu||i instanceof AI)?1:i&&i instanceof II?t*i.points.length:t}function _x(i,t,e=12,r=!0){let o,n=0;for(let a=0;a<t.length;a++){let s=of(t[a]),l=bi(s,e),c=Pa;for(let u=0;u<=l;u++)if(s instanceof fu||s instanceof rf||s instanceof hu){if(s.getPoint(u/l,c),o!==void 0&&RI(o,c,Qs))continue;o===void 0&&(o=mu),o.copy(c),i.push(c.x,c.y),n++}}return Zs(i[0],i[i.length-2],Qs)&&Zs(i[1],i[i.length-1],Qs)&&(i.pop(),i.pop()),r&&n>1&&!(Zs(i[n-1],i[1],Qs)&&Zs(i[n-2],i[0],Qs))&&(i.push(i[0],i[1]),n++),i}var uf=new Fo,zI=new Fo,GI=new Fo,FI=new Fo,jI=new Fo,UI=new Fo,je=class extends Rx{constructor(e=100,r=100){super();this.points=[];this.shapeHoles=[];this.plane=new BI(new VI(0,0,-1));this.subdivision=0;this.controlSnapDistance=4;this.pointIDs=0;this.isMesh2D=!1;this.isText=!1;this._roundness=0;this.isClosed=!1;this.useCubicForRoundedCorners=!0;this.uuid=lf.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=r}static createFromState(e,r,o){let n=new je;return n.isClosed=e.isClosed,n.points=e.points.map(a=>Gr.create(a.id,a.data)),typeof e.roundness=="number"&&(n.roundness=e.roundness),n.shapeHoles=e.shapeHoles.map(a=>je.createFromState(a)),r!==void 0&&o!==void 0&&n.applySize(r,o),n.update(),n}get width(){return this._width}get height(){return this._height}get roundness(){return this._roundness}set roundness(e){if(this._roundness!==e){this._roundness=e;for(let r=0,o=this.points.length;r<o;r++)this.points[r].roundness=e;this.needsUpdate=!0}}getPointsIndexesByIds(e){return e.map(r=>this.getPointIndexById(r)).filter(r=>r>=0)}getPointIndexById(e){let r=this.points.length,o=this.points.findIndex(n=>n.uuid===e);if(o<0){let n=r;for(let a=0,s=this.shapeHoles.length;a<s;a++){let l=this.shapeHoles[a],c=l.points.length,u=l.getPointIndexById(e);if(u<0)n+=c;else return u+n}}return o}getLineIndexById(e){return this.getPointIndexById(e)}getBezierPoint(e){if(e<=this.points.length-1)return this.points[e];if(this.shapeHoles.length>0){let r=this.points.length;for(let o=0,n=this.shapeHoles.length;o<n;o++){let a=this.shapeHoles[o],s=e-r;if(s<=a.points.length-1)return a.points[s];r+=a.points.length}}throw new Error("This shape does not have a point for this index: "+e)}getBezierPointIndex(e){let r=this.points.indexOf(e);if(r>=0)return r;if(r=this.points.length,this.shapeHoles.length>0)for(let o=0,n=this.shapeHoles.length;o<n;o++){let a=this.shapeHoles[o],s=a.points.indexOf(e);if(s>=0)return r+s;r+=a.points.length}return-1}getAllPoints(){let e=[].concat(...this.shapeHoles.map(r=>r.points));return[...this.points,...e]}applySize(e,r){e===0&&(e=.001),r===0&&(r=.001),this._width=e,this._height=r}applyScale(e,r){let o=uf.set(e,r);for(let n=0,a=this.points.length;n<a;n++){let s=this.points[n];s.position.multiply(o),s.controls[0].position.multiply(o),s.controls[1].position.multiply(o)}for(let n=0,a=this.shapeHoles.length;n<a;n++)this.shapeHoles[n].applyScale(e,r);this._update()}createPoint(e,r=0,o=lf.generateUUID()){let n;e instanceof Fo?n=e:n=new Fo(e,r);let a=new Gr(o,n);return a.roundness=this.roundness,a}addPoint(e){this.points.push(e),this.needsUpdate=!0}addPointAt(e,r){this.points.splice(r,0,e),this.needsUpdate=!0}getPointByUuid(e){for(let r=0,o=this.points.length;r<o;r++){let n=this.points[r];if(n.uuid===e)return n}for(let r=0,o=this.shapeHoles.length;r<o;r++){let a=this.shapeHoles[r].getPointByUuid(e);if(a)return a}}getFirstPoint(){return this.points[0]}getLastPoint(){return this.points[this.points.length-1]}removePoint(e){let r=this.points.indexOf(e);r>=0&&this.points.splice(r,1),this.needsUpdate=!0}removePointById(e){let r=this.points.find(o=>o.uuid===e);r&&this.removePoint(r)}update(){for(let e=0,r=this.shapeHoles.length;e<r;e++)this.shapeHoles[e].update();this._update()}extractShapePointsToBuffer(e,r=12,o=!1){this.subdivision=r,this.curveDivisions===void 0&&this.computeCurveDivisions(r);let n=o?this.roundedCurveDivisions:this.curveDivisions;return Nx(e,o?this.roundedCurves:this.curves,r,this.autoClose),n.reduce((a,s)=>a+s,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=sf(this.points,e,!1),this.roundedCurveDivisions=sf(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,r,o=12){return Dx(e,this.curves,r,o,this.autoClose).reduce((a,s)=>a+s,0)*2}extractShapePointsToFlatArray(e,r=12){return this.subdivision=r,this.curveDivisions===void 0&&this.computeCurveDivisions(r),_x(e,this.roundedCurves,r,this.autoClose)}getCurveIndexFromVertexId(e,r=!1){let o=0;this.curveDivisions===void 0&&this.computeCurveDivisions(this.subdivision);let n=r?this.roundedCurveDivisions:this.curveDivisions,a=0;r&&this.points[0].roundedCurveCorner!==void 0&&(a=bi(this.points[0].roundedCurveCorner,this.subdivision)*.5);let s=e-a;s<0&&(s+=n.reduce((l,c)=>l+c,0));for(let l=0,c=n.length;l<c;l++){let u=n[l];if(s<o+u)return[l,(s-o+1)/u];o+=u}return[0,1]}getCurveT(e,r,o){let n=this.points[e],a=this.points[e>=this.points.length-1?0:e+1],s=this.curveDivisions,l=s[e];if(af(n,a)){let p=n.position.distanceTo(a.position);return n.position.distanceTo(uf.set(o.x,o.y))/p}let c=0;for(let p=0;p<e;p++)c+=s[p];return(r-c)/l}dispose(){}_applyCurveForPoint(e,r){af(r,e)?this.lineTo(e.position.x,e.position.y):this.bezierCurveTo(r.controls[1].position.x,r.controls[1].position.y,e.controls[0].position.x,e.controls[0].position.y,e.position.x,e.position.y);let o=this.curves[this.curves.length-1];e.curveBefore=o,r.curveAfter=o;let n=o.clone();e.roundedCurveBefore=n,r.roundedCurveAfter=n,e.roundedCurveCorner=void 0,this.roundedCurves.push(n)}_update(){if(this.curves=[],this.roundedCurves=[],!this.points.length)return;for(let r=0,o=this.points.length;r<o;r++){let n=this.points[r];if(r===0)this.moveTo(n.position.x,n.position.y);else{let a=this.points[r-1];this._applyCurveForPoint(n,a)}}let e=this.getLastPoint();if(e?.curveAfter&&(e.curveAfter=void 0),this.isClosed){let r=this.points[0],o=this.points[this.points.length-1];this._applyCurveForPoint(r,o)}if(this.points.length>2){let r=0;for(let o=0,n=this.points.length;o<n;o++){let a=this.points[o],s=this.points[o-1]??this.points[this.points.length-1],l=this.points[o+1]??this.points[0],c=a.roundness,u=s&&l&&Cx(s,a,l);if(!a.controlsMoved()&&c>0&&!u){let p=a.curveBefore,d=a.curveAfter;if(p===void 0||d===void 0)continue;let f=a.roundedCurveBefore,h=a.roundedCurveAfter,m=p.getLength(),y=d.getLength(),b=Math.min(c,m*.499),v=Math.min(c,y*.499),w=Math.min(b,v),O=1-w/m,S=w/y,T=p.getPointAt(O,uf),M=d.getPointAt(S,zI);this._subSplitCurve(p,f,O,T,void 0),this._subSplitCurve(d,h,S,void 0,M);let g;if(this.useCubicForRoundedCorners){let D=nf(T,a.position,M)/2,E=Math.tan(D)*T.distanceTo(a.position),[I,N]=Ax(T,M,E,GI,FI),_=Mx(I,N,a.position),[R,V]=Ix(_,T,M,E,jI,UI);g=new yu(T.clone(),R.clone(),V.clone(),M.clone())}else g=new Lx(T.clone(),a.position.clone(),M.clone());a.roundedCurveCorner=g,this.roundedCurves.splice(o+r,0,g),r++}}}}_subSplitCurve(e,r,o,n,a){if(e instanceof cf)n!==void 0&&r.v2.copy(n),a!==void 0&&r.v1.copy(a);else{let s=e,l=r,c=s.getUtoTmapping(o,0),u=Ex(s.v0,s.v1,s.v2,s.v3,c);return n!==void 0&&(l.v0.set(u[0],u[1]),l.v1.set(u[2],u[3]),l.v2.set(u[4],u[5]),l.v3.set(u[6],u[7])),a!==void 0&&(l.v0.set(u[6],u[7]),l.v1.set(u[8],u[9]),l.v2.set(u[10],u[11]),l.v3.set(u[12],u[13])),l}return r}clone(){let e=new je(this._width,this._height);return e.points=this.points.map(r=>r.clone()),e.isClosed=this.isClosed,e.roundness=this.roundness,e.isMesh2D=this.isMesh2D,e.shapeHoles=this.shapeHoles.map(r=>r.clone()),e}toJSON(){return{points:this.points.reduce((e,r)=>e.concat(r.toJSON()),[]),shapeHoles:this.shapeHoles.map(e=>e.toJSON()),isClosed:this.isClosed,roundness:this.roundness}}fromJSON(e){this.points=[],this.pointIDs=0;let r=e.points.length/7;for(let o=0;o<r;o++){let n=o*7,a=e.points[n+0],s=e.points[n+1],l=e.points[n+2],c=e.points[n+3],u=e.points[n+4],p=e.points[n+5],d=e.points[n+6],f=new Gr(lf.generateUUID(),new Fo(a,s));f.controls[0].position.set(l,c),f.controls[1].position.set(u,p),f.roundness=d,this.points.push(f)}return this.shapeHoles=e.shapeHoles?.length?e.shapeHoles.map(o=>{let n=new je;return n.fromJSON(o),n}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e,r=!1){this.isText=r;let o=(a,s)=>{s instanceof yu&&s.v3.equals(a.position)&&a.controls[0].position.copy(s.v2)},n=a=>{let s=[],l,c;for(l=0,c=a.length;l<c;l++)a[l]instanceof Lx&&(a[l]=Tx(a[l]));for(l=0,c=a.length;l<c;l++){let d=a[l],f=l>0?a[l-1]:null,h;d instanceof yu?(h=this.createPoint(d.v0),h.controls[1].position.copy(d.v1)):d instanceof cf&&(h=this.createPoint(d.v1)),h!==void 0&&(f!==null&&o(h,f),s.push(h))}let u=a[a.length-1],p=!1;return u instanceof yu?u.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(u.v2),p=!0):u instanceof cf&&u.v2.equals(s[0].position)&&(p=!0),this.isClosed=p,s};return this.points=n(e.curves),e instanceof Rx&&(this.shapeHoles=e.holes.map(a=>{let s=new je;return s.fromShape(a),s})),this.update(),this}updatePoint(e,r){let o=this.getPointByUuid(e);o&&(r.position!==void 0&&o.position.fromArray(r.position),r.roundness!==void 0&&(o.roundness=r.roundness),r.areControlsDirectionsMirrored!==void 0&&(o.areControlsDirectionsMirrored=r.areControlsDirectionsMirrored),this.needsUpdate=!0)}updatePreviousControl(e,r){let n=this.getPointByUuid(e)?.controls[0];n&&(r.position&&n.position.fromArray(r.position),this.needsUpdate=!0)}updateNextControl(e,r){let n=this.getPointByUuid(e)?.controls[1];n&&(r.position&&n.position.fromArray(r.position),this.needsUpdate=!0)}};var pf=Math.PI*2;function df({x:i,y:t},e,r,o,n){return{x:i*e+o,y:t*r+n}}function kI(i,t){let e=t===1.5707963267948966?.551915024494:t===-1.5707963267948966?-.551915024494:1.3333333333333333*Math.tan(t/4),r=Math.cos(i),o=Math.sin(i),n=Math.cos(i+t),a=Math.sin(i+t);return[{x:r-o*e,y:o+r*e},{x:n+a*e,y:a-n*e},{x:n,y:a}]}function Bx(i,t,e,r){let o=i*r-t*e<0?-1:1,n=Math.min(1,Math.max(-1,i*e+t*r));return o*Math.acos(n)}function HI(i,t,e,r,o,n,a,s,l,c){let u=Math.pow(o,2),p=Math.pow(n,2),d=Math.pow(a,2),f=Math.pow(s,2),h=u*p-u*f-p*d;h<0&&(h=0),h/=u*f+p*d,h=Math.sqrt(h)*(l===c?-1:1);let m=h*o/n*s,y=h*-n/o*a,b=m+(i+e)/2,v=y+(t+r)/2,w=(a-m)/o,O=(s-y)/n,S=(-a-m)/o,T=(-s-y)/n,M=Bx(1,0,w,O),g=Bx(w,O,S,T);return!c&&g>0&&(g-=pf),c&&g<0&&(g+=pf),{centerx:b,centery:v,ang1:M,ang2:g}}function Vx({px:i,py:t,cx:e,cy:r,rx:o,ry:n,largeArcFlag:a,sweepFlag:s}){let l=[];if(o===0||n===0)return[];let c=(i-e)/2,u=(t-r)/2;if(c===0&&u===0)return[];o=Math.abs(o),n=Math.abs(n);let p=Math.pow(c,2)/Math.pow(o,2)+Math.pow(u,2)/Math.pow(n,2);p>1&&(o*=Math.sqrt(p),n*=Math.sqrt(p));let d=HI(i,t,e,r,o,n,c,u,a,s),{ang1:f,ang2:h}=d,{centerx:m,centery:y}=d,b=Math.abs(h)/(pf/4);Math.abs(1-b)<1e-7&&(b=1);let v=Math.max(Math.ceil(b),1);h/=v;for(let w=0;w<v;w++)l.push(kI(f,h)),f+=h;return l.map(w=>{let{x:O,y:S}=df(w[0],o,n,m,y),{x:T,y:M}=df(w[1],o,n,m,y),{x:g,y:D}=df(w[2],o,n,m,y);return{x1:O,y1:S,x2:T,y2:M,x:g,y:D}})}import{BufferAttribute as Su,BufferGeometry as t3}from"three";var Fe;(function(i){i[i.ODD=0]="ODD",i[i.NONZERO=1]="NONZERO",i[i.POSITIVE=2]="POSITIVE",i[i.NEGATIVE=3]="NEGATIVE",i[i.ABS_GEQ_TWO=4]="ABS_GEQ_TWO"})(Fe||(Fe={}));var st;(function(i){i[i.POLYGONS=0]="POLYGONS",i[i.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",i[i.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(st||(st={}));function we(i,t){if(!i)throw t||"Assertion Failed!"}var ve=function(){function i(){}return i.vertEq=function(t,e){return t.s===e.s&&t.t===e.t},i.vertLeq=function(t,e){return t.s<e.s||t.s===e.s&&t.t<=e.t},i.transLeq=function(t,e){return t.t<e.t||t.t===e.t&&t.s<=e.s},i.edgeGoesLeft=function(t){return i.vertLeq(t.Dst,t.Org)},i.edgeGoesRight=function(t){return i.vertLeq(t.Org,t.Dst)},i.vertL1dist=function(t,e){return Math.abs(t.s-e.s)+Math.abs(t.t-e.t)},i.edgeEval=function(t,e,r){we(i.vertLeq(t,e)&&i.vertLeq(e,r));var o=e.s-t.s,n=r.s-e.s;return o+n>0?o<n?e.t-t.t+(t.t-r.t)*(o/(o+n)):e.t-r.t+(r.t-t.t)*(n/(o+n)):0},i.edgeSign=function(t,e,r){we(i.vertLeq(t,e)&&i.vertLeq(e,r));var o=e.s-t.s,n=r.s-e.s;return o+n>0?(e.t-r.t)*o+(e.t-t.t)*n:0},i.transEval=function(t,e,r){we(i.transLeq(t,e)&&i.transLeq(e,r));var o=e.t-t.t,n=r.t-e.t;return o+n>0?o<n?e.s-t.s+(t.s-r.s)*(o/(o+n)):e.s-r.s+(r.s-t.s)*(n/(o+n)):0},i.transSign=function(t,e,r){we(i.transLeq(t,e)&&i.transLeq(e,r));var o=e.t-t.t,n=r.t-e.t;return o+n>0?(e.s-r.s)*o+(e.s-t.s)*n:0},i.vertCCW=function(t,e,r){return t.s*(e.t-r.t)+e.s*(r.t-t.t)+r.s*(t.t-e.t)>=0},i.interpolate=function(t,e,r,o){return t=t<0?0:t,r=r<0?0:r,t<=r?r===0?(e+o)/2:e+(o-e)*(t/(t+r)):o+(e-o)*(r/(t+r))},i.intersect=function(t,e,r,o,n){var a,s,l;i.vertLeq(t,e)||(l=t,t=e,e=l),i.vertLeq(r,o)||(l=r,r=o,o=l),i.vertLeq(t,r)||(l=t,t=r,r=l,l=e,e=o,o=l),i.vertLeq(r,e)?i.vertLeq(e,o)?(a=i.edgeEval(t,r,e),s=i.edgeEval(r,e,o),a+s<0&&(a=-a,s=-s),n.s=i.interpolate(a,r.s,s,e.s)):(a=i.edgeSign(t,r,e),s=-i.edgeSign(t,o,e),a+s<0&&(a=-a,s=-s),n.s=i.interpolate(a,r.s,s,o.s)):n.s=(r.s+e.s)/2,i.transLeq(t,e)||(l=t,t=e,e=l),i.transLeq(r,o)||(l=r,r=o,o=l),i.transLeq(t,r)||(l=t,t=r,r=l,l=e,e=o,o=l),i.transLeq(r,e)?i.transLeq(e,o)?(a=i.transEval(t,r,e),s=i.transEval(r,e,o),a+s<0&&(a=-a,s=-s),n.t=i.interpolate(a,r.t,s,e.t)):(a=i.transSign(t,r,e),s=-i.transSign(t,o,e),a+s<0&&(a=-a,s=-s),n.t=i.interpolate(a,r.t,s,o.t)):n.t=(r.t+e.t)/2},i}(),Js=function(){function i(){this.next=null,this.prev=null,this.anEdge=null,this.trail=null,this.n=0,this.marked=!1,this.inside=!1}return i}(),gu=function(){function i(t){this.side=t,this.next=null,this.Org=null,this.Sym=null,this.Onext=null,this.Lnext=null,this.Lface=null,this.activeRegion=null,this.winding=0}return Object.defineProperty(i.prototype,"Rface",{get:function(){return this.Sym.Lface},set:function(t){this.Sym.Lface=t},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"Dst",{get:function(){return this.Sym.Org},set:function(t){this.Sym.Org=t},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"Oprev",{get:function(){return this.Sym.Lnext},set:function(t){this.Sym.Lnext=t},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"Lprev",{get:function(){return this.Onext.Sym},set:function(t){this.Onext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"Dprev",{get:function(){return this.Lnext.Sym},set:function(t){this.Lnext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"Rprev",{get:function(){return this.Sym.Onext},set:function(t){this.Sym.Onext=t},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"Dnext",{get:function(){return this.Sym.Onext.Sym},set:function(t){this.Sym.Onext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"Rnext",{get:function(){return this.Sym.Lnext.Sym},set:function(t){this.Sym.Lnext.Sym=t},enumerable:!0,configurable:!0}),i}(),Oa=function(){function i(){this.next=null,this.prev=null,this.anEdge=null,this.coords=[0,0,0],this.s=0,this.t=0,this.pqHandle=0,this.n=0,this.idx=0}return i}(),zx=function(){function i(){var t=new Oa,e=new Js,r=new gu(0),o=new gu(1);t.next=t.prev=t,t.anEdge=null,e.next=e.prev=e,r.next=r,r.Sym=o,o.next=o,o.Sym=r,this.vHead=t,this.fHead=e,this.eHead=r,this.eHeadSym=o}return i.prototype.makeEdge_=function(t){var e=new gu(0),r=new gu(1);t.Sym.side<t.side&&(t=t.Sym);var o=t.Sym.next;return r.next=o,o.Sym.next=e,e.next=t,t.Sym.next=r,e.Sym=r,e.Onext=e,e.Lnext=r,e.Org=null,e.Lface=null,e.winding=0,e.activeRegion=null,r.Sym=e,r.Onext=r,r.Lnext=e,r.Org=null,r.Lface=null,r.winding=0,r.activeRegion=null,e},i.prototype.splice_=function(t,e){var r=t.Onext,o=e.Onext;r.Sym.Lnext=e,o.Sym.Lnext=t,t.Onext=o,e.Onext=r},i.prototype.makeVertex_=function(t,e,r){var o=t;we(o,"Vertex can't be null!");var n=r.prev;o.prev=n,n.next=o,o.next=r,r.prev=o,o.anEdge=e;var a=e;do a.Org=o,a=a.Onext;while(a!==e)},i.prototype.makeFace_=function(t,e,r){var o=t;we(o,"Face can't be null");var n=r.prev;o.prev=n,n.next=o,o.next=r,r.prev=o,o.anEdge=e,o.trail=null,o.marked=!1,o.inside=r.inside;var a=e;do a.Lface=o,a=a.Lnext;while(a!==e)},i.prototype.killEdge_=function(t){t.Sym.side<t.side&&(t=t.Sym);var e=t.next,r=t.Sym.next;e.Sym.next=r,r.Sym.next=e},i.prototype.killVertex_=function(t,e){var r=t.anEdge,o=r;do o.Org=e,o=o.Onext;while(o!==r);var n=t.prev,a=t.next;a.prev=n,n.next=a},i.prototype.killFace_=function(t,e){var r=t.anEdge,o=r;do o.Lface=e,o=o.Lnext;while(o!==r);var n=t.prev,a=t.next;a.prev=n,n.next=a},i.prototype.makeEdge=function(){var t=new Oa,e=new Oa,r=new Js,o=this.makeEdge_(this.eHead);return this.makeVertex_(t,o,this.vHead),this.makeVertex_(e,o.Sym,this.vHead),this.makeFace_(r,o,this.fHead),o},i.prototype.splice=function(t,e){var r=!1,o=!1;if(t!==e){if(e.Org!==t.Org&&(o=!0,this.killVertex_(e.Org,t.Org)),e.Lface!==t.Lface&&(r=!0,this.killFace_(e.Lface,t.Lface)),this.splice_(e,t),!o){var n=new Oa;this.makeVertex_(n,e,t.Org),t.Org.anEdge=t}if(!r){var a=new Js;this.makeFace_(a,e,t.Lface),t.Lface.anEdge=t}}},i.prototype.delete=function(t){var e=t.Sym,r=!1;if(t.Lface!==t.Rface&&(r=!0,this.killFace_(t.Lface,t.Rface)),t.Onext===t)this.killVertex_(t.Org,null);else if(t.Rface.anEdge=t.Oprev,t.Org.anEdge=t.Onext,this.splice_(t,t.Oprev),!r){var o=new Js;this.makeFace_(o,t,t.Lface)}e.Onext===e?(this.killVertex_(e.Org,null),this.killFace_(e.Lface,null)):(t.Lface.anEdge=e.Oprev,e.Org.anEdge=e.Onext,this.splice_(e,e.Oprev)),this.killEdge_(t)},i.prototype.addEdgeVertex=function(t){var e=this.makeEdge_(t),r=e.Sym;this.splice_(e,t.Lnext),e.Org=t.Dst;var o=new Oa;return this.makeVertex_(o,r,e.Org),e.Lface=r.Lface=t.Lface,e},i.prototype.splitEdge=function(t){var e=this.addEdgeVertex(t),r=e.Sym;return this.splice_(t.Sym,t.Sym.Oprev),this.splice_(t.Sym,r),t.Dst=r.Org,r.Dst.anEdge=r.Sym,r.Rface=t.Rface,r.winding=t.winding,r.Sym.winding=t.Sym.winding,r.idx=t.idx,r.Sym.idx=t.Sym.idx,r},i.prototype.connect=function(t,e){var r=!1,o=this.makeEdge_(t),n=o.Sym;if(e.Lface!==t.Lface&&(r=!0,this.killFace_(e.Lface,t.Lface)),this.splice_(o,t.Lnext),this.splice_(n,e),o.Org=t.Dst,n.Org=e.Org,o.Lface=n.Lface=t.Lface,t.Lface.anEdge=n,!r){var a=new Js;this.makeFace_(a,o,t.Lface)}return o},i.prototype.zapFace=function(t){var e=t.anEdge,r,o,n,a,s;o=e.Lnext;do r=o,o=r.Lnext,r.Lface=null,r.Rface===null&&(r.Onext===r?this.killVertex_(r.Org,null):(r.Org.anEdge=r.Onext,this.splice_(r,r.Oprev)),n=r.Sym,n.Onext===n?this.killVertex_(n.Org,null):(n.Org.anEdge=n.Onext,this.splice_(n,n.Oprev)),this.killEdge_(r));while(r!=e);a=t.prev,s=t.next,s.prev=a,a.next=s},i.prototype.countFaceVerts_=function(t){var e=t.anEdge,r=0;do r++,e=e.Lnext;while(e!==t.anEdge);return r},i.prototype.mergeConvexFaces=function(t){var e,r,o,n,a,s,l;for(e=this.fHead.next;e!==this.fHead;e=e.next)if(!!e.inside)for(r=e.anEdge,a=r.Org;o=r.Lnext,n=r.Sym,n&&n.Lface&&n.Lface.inside&&(s=this.countFaceVerts_(e),l=this.countFaceVerts_(n.Lface),s+l-2<=t&&ve.vertCCW(r.Lprev.Org,r.Org,n.Lnext.Lnext.Org)&&ve.vertCCW(n.Lprev.Org,n.Org,r.Lnext.Lnext.Org)&&(o=n.Lnext,this.delete(n),r=null,n=null)),!(r&&r.Lnext.Org===a);)r=o;return!0},i.prototype.check=function(){var t=this.fHead,e=this.vHead,r=this.eHead,o,n,a,s,l,c;for(n=t,n=t;(o=n.next)!==t;n=o){we(o.prev===n),l=o.anEdge;do we(l.Sym!==l),we(l.Sym.Sym===l),we(l.Lnext.Onext.Sym===l),we(l.Onext.Sym.Lnext===l),we(l.Lface===o),l=l.Lnext;while(l!==o.anEdge)}for(we(o.prev===n&&o.anEdge===null),s=e,s=e;(a=s.next)!==e;s=a){we(a.prev===s),l=a.anEdge;do we(l.Sym!==l),we(l.Sym.Sym===l),we(l.Lnext.Onext.Sym===l),we(l.Onext.Sym.Lnext===l),we(l.Org===a),l=l.Onext;while(l!==a.anEdge)}for(we(a.prev===s&&a.anEdge===null),c=r,c=r;(l=c.next)!==r;c=l)we(l.Sym.next===c.Sym),we(l.Sym!==l),we(l.Sym.Sym===l),we(l.Org!==null),we(l.Dst!==null),we(l.Lnext.Onext.Sym===l),we(l.Onext.Sym.Lnext===l);we(l.Sym.next===c.Sym&&l.Sym===this.eHeadSym&&l.Sym.Sym===l&&l.Org===null&&l.Dst===null&&l.Lface===null&&l.Rface===null)},i}(),Gx=function(){function i(){this.handle=null}return i}(),Fx=function(){function i(){this.key=null,this.node=0}return i}(),WI=function(){function i(t,e){this.leq=e,this.max=0,this.nodes=[],this.handles=[],this.initialized=!1,this.freeList=0,this.size=0,this.max=t,this.nodes=[],this.handles=[];for(var r=0;r<t+1;r++)this.nodes[r]=new Gx,this.handles[r]=new Fx;this.initialized=!1,this.nodes[1].handle=1,this.handles[1].key=null}return i.prototype.floatDown_=function(t){var e=this.nodes,r=this.handles,o,n,a;for(o=e[t].handle;;){if(a=t<<1,a<this.size&&this.leq(r[e[a+1].handle].key,r[e[a].handle].key)&&++a,we(a<=this.max),n=e[a].handle,a>this.size||this.leq(r[o].key,r[n].key)){e[t].handle=o,r[o].node=t;break}e[t].handle=n,r[n].node=t,t=a}},i.prototype.floatUp_=function(t){var e=this.nodes,r=this.handles,o,n,a;for(o=e[t].handle;;){if(a=t>>1,n=e[a].handle,a===0||this.leq(r[n].key,r[o].key)){e[t].handle=o,r[o].node=t;break}e[t].handle=n,r[n].node=t,t=a}},i.prototype.init=function(){for(var t=this.size;t>=1;--t)this.floatDown_(t);this.initialized=!0},i.prototype.min=function(){return this.handles[this.nodes[1].handle].key},i.prototype.insert=function(t){var e,r;if(e=++this.size,e*2>this.max){this.max*=2;var o,n;for(n=this.nodes.length,this.nodes.length=this.max+1,o=n;o<this.nodes.length;o++)this.nodes[o]=new Gx;for(n=this.handles.length,this.handles.length=this.max+1,o=n;o<this.handles.length;o++)this.handles[o]=new Fx}return this.freeList===0?r=e:(r=this.freeList,this.freeList=this.handles[r].node),this.nodes[e].handle=r,this.handles[r].node=e,this.handles[r].key=t,this.initialized&&this.floatUp_(e),r},i.prototype.extractMin=function(){var t=this.nodes,e=this.handles,r=t[1].handle,o=e[r].key;return this.size>0&&(t[1].handle=t[this.size].handle,e[t[1].handle].node=1,e[r].key=null,e[r].node=this.freeList,this.freeList=r,--this.size,this.size>0&&this.floatDown_(1)),o},i.prototype.delete=function(t){var e=this.nodes,r=this.handles,o;we(t>=1&&t<=this.max&&r[t].key!==null),o=r[t].node,e[o].handle=e[this.size].handle,r[e[o].handle].node=o,--this.size,o<=this.size&&(o<=1||this.leq(r[e[o>>1].handle].key,r[e[o].handle].key)?this.floatDown_(o):this.floatUp_(o)),r[t].key=null,r[t].node=this.freeList,this.freeList=t},i}(),ff=function(){function i(){this.eUp=null,this.nodeUp=null,this.windingNumber=0,this.inside=!1,this.sentinel=!1,this.dirty=!1,this.fixUpperEdge=!1}return i}(),jx=function(){function i(){this.key=null,this.next=null,this.prev=null}return i}(),qI=function(){function i(t,e){this.frame=t,this.leq=e,this.head=new jx,this.head.next=this.head,this.head.prev=this.head}return i.prototype.min=function(){return this.head.next},i.prototype.max=function(){return this.head.prev},i.prototype.insert=function(t){return this.insertBefore(this.head,t)},i.prototype.search=function(t){var e=this.head;do e=e.next;while(e.key!==null&&!this.leq(this.frame,t,e.key));return e},i.prototype.insertBefore=function(t,e){do t=t.prev;while(t.key!==null&&!this.leq(this.frame,t.key,e));var r=new jx;return r.key=e,r.next=t.next,t.next.prev=r,r.prev=t,t.next=r,r},i.prototype.delete=function(t){t.next.prev=t.prev,t.prev.next=t.next},i}(),$I=function(){function i(){}return i.regionBelow=function(t){return t.nodeUp.prev.key},i.regionAbove=function(t){return t.nodeUp.next.key},i.debugEvent=function(t){},i.addWinding=function(t,e){t.winding+=e.winding,t.Sym.winding+=e.Sym.winding},i.edgeLeq=function(t,e,r){var o=t.event,n=e.eUp,a=r.eUp;if(n.Dst===o)return a.Dst===o?ve.vertLeq(n.Org,a.Org)?ve.edgeSign(a.Dst,n.Org,a.Org)<=0:ve.edgeSign(n.Dst,a.Org,n.Org)>=0:ve.edgeSign(a.Dst,o,a.Org)<=0;if(a.Dst===o)return ve.edgeSign(n.Dst,o,n.Org)>=0;var s=ve.edgeEval(n.Dst,o,n.Org),l=ve.edgeEval(a.Dst,o,a.Org);return s>=l},i.deleteRegion=function(t,e){e.fixUpperEdge&&we(e.eUp.winding===0),e.eUp.activeRegion=null,t.dict.delete(e.nodeUp)},i.fixUpperEdge=function(t,e,r){we(e.fixUpperEdge),t.mesh.delete(e.eUp),e.fixUpperEdge=!1,e.eUp=r,r.activeRegion=e},i.topLeftRegion=function(t,e){var r=e.eUp.Org,o;do e=i.regionAbove(e);while(e.eUp.Org===r);if(e.fixUpperEdge){if(o=t.mesh.connect(i.regionBelow(e).eUp.Sym,e.eUp.Lnext),o===null)return null;i.fixUpperEdge(t,e,o),e=i.regionAbove(e)}return e},i.topRightRegion=function(t){var e=t.eUp.Dst;do t=i.regionAbove(t);while(t.eUp.Dst===e);return t},i.addRegionBelow=function(t,e,r){var o=new ff;return o.eUp=r,o.nodeUp=t.dict.insertBefore(e.nodeUp,o),o.fixUpperEdge=!1,o.sentinel=!1,o.dirty=!1,r.activeRegion=o,o},i.isWindingInside=function(t,e){switch(t.windingRule){case Fe.ODD:return(e&1)!==0;case Fe.NONZERO:return e!==0;case Fe.POSITIVE:return e>0;case Fe.NEGATIVE:return e<0;case Fe.ABS_GEQ_TWO:return e>=2||e<=-2}throw new Error("Invalid winding rulle")},i.computeWinding=function(t,e){e.windingNumber=i.regionAbove(e).windingNumber+e.eUp.winding,e.inside=i.isWindingInside(t,e.windingNumber)},i.finishRegion=function(t,e){var r=e.eUp,o=r.Lface;o.inside=e.inside,o.anEdge=r,i.deleteRegion(t,e)},i.finishLeftRegions=function(t,e,r){for(var o,n=null,a=e,s=e.eUp;a!==r;){if(a.fixUpperEdge=!1,n=i.regionBelow(a),o=n.eUp,o.Org!=s.Org){if(!n.fixUpperEdge){i.finishRegion(t,a);break}o=t.mesh.connect(s.Lprev,o.Sym),i.fixUpperEdge(t,n,o)}s.Onext!==o&&(t.mesh.splice(o.Oprev,o),t.mesh.splice(s,o)),i.finishRegion(t,a),s=n.eUp,a=n}return s},i.addRightEdges=function(t,e,r,o,n,a){var s,l,c,u,p=!0;c=r;do we(ve.vertLeq(c.Org,c.Dst)),i.addRegionBelow(t,e,c.Sym),c=c.Onext;while(c!==o);for(n===null&&(n=i.regionBelow(e).eUp.Rprev),l=e,u=n;s=i.regionBelow(l),c=s.eUp.Sym,c.Org===u.Org;)c.Onext!==u&&(t.mesh.splice(c.Oprev,c),t.mesh.splice(u.Oprev,c)),s.windingNumber=l.windingNumber-c.winding,s.inside=i.isWindingInside(t,s.windingNumber),l.dirty=!0,!p&&i.checkForRightSplice(t,l)&&(i.addWinding(c,u),i.deleteRegion(t,l),t.mesh.delete(u)),p=!1,l=s,u=c;l.dirty=!0,we(l.windingNumber-c.winding===s.windingNumber),a&&i.walkDirtyRegions(t,l)},i.spliceMergeVertices=function(t,e,r){t.mesh.splice(e,r)},i.vertexWeights=function(t,e,r){var o=ve.vertL1dist(e,t),n=ve.vertL1dist(r,t),a=.5*n/(o+n),s=.5*o/(o+n);t.coords[0]+=a*e.coords[0]+s*r.coords[0],t.coords[1]+=a*e.coords[1]+s*r.coords[1],t.coords[2]+=a*e.coords[2]+s*r.coords[2]},i.getIntersectData=function(t,e,r,o,n,a){e.coords[0]=e.coords[1]=e.coords[2]=0,e.idx=-1,i.vertexWeights(e,r,o),i.vertexWeights(e,n,a)},i.checkForRightSplice=function(t,e){var r=i.regionBelow(e),o=e.eUp,n=r.eUp;if(ve.vertLeq(o.Org,n.Org)){if(ve.edgeSign(n.Dst,o.Org,n.Org)>0)return!1;ve.vertEq(o.Org,n.Org)?o.Org!==n.Org&&(t.pq.delete(o.Org.pqHandle),i.spliceMergeVertices(t,n.Oprev,o)):(t.mesh.splitEdge(n.Sym),t.mesh.splice(o,n.Oprev),e.dirty=r.dirty=!0)}else{if(ve.edgeSign(o.Dst,n.Org,o.Org)<0)return!1;i.regionAbove(e).dirty=e.dirty=!0,t.mesh.splitEdge(o.Sym),t.mesh.splice(n.Oprev,o)}return!0},i.checkForLeftSplice=function(t,e){var r=i.regionBelow(e),o=e.eUp,n=r.eUp,a;if(we(!ve.vertEq(o.Dst,n.Dst)),ve.vertLeq(o.Dst,n.Dst)){if(ve.edgeSign(o.Dst,n.Dst,o.Org)<0)return!1;i.regionAbove(e).dirty=e.dirty=!0,a=t.mesh.splitEdge(o),t.mesh.splice(n.Sym,a),a.Lface.inside=e.inside}else{if(ve.edgeSign(n.Dst,o.Dst,n.Org)>0)return!1;e.dirty=r.dirty=!0,a=t.mesh.splitEdge(n),t.mesh.splice(o.Lnext,n.Sym),a.Rface.inside=e.inside}return!0},i.checkForIntersect=function(t,e){var r=i.regionBelow(e),o=e.eUp,n=r.eUp,a=o.Org,s=n.Org,l=o.Dst,c=n.Dst,u,p,d=new Oa,f,h;if(we(!ve.vertEq(c,l)),we(ve.edgeSign(l,t.event,a)<=0),we(ve.edgeSign(c,t.event,s)>=0),we(a!==t.event&&s!==t.event),we(!e.fixUpperEdge&&!r.fixUpperEdge),a===s||(u=Math.min(a.t,l.t),p=Math.max(s.t,c.t),u>p))return!1;if(ve.vertLeq(a,s)){if(ve.edgeSign(c,a,s)>0)return!1}else if(ve.edgeSign(l,s,a)<0)return!1;return i.debugEvent(t),ve.intersect(l,a,c,s,d),we(Math.min(a.t,l.t)<=d.t),we(d.t<=Math.max(s.t,c.t)),we(Math.min(c.s,l.s)<=d.s),we(d.s<=Math.max(s.s,a.s)),ve.vertLeq(d,t.event)&&(d.s=t.event.s,d.t=t.event.t),f=ve.vertLeq(a,s)?a:s,ve.vertLeq(f,d)&&(d.s=f.s,d.t=f.t),ve.vertEq(d,a)||ve.vertEq(d,s)?(i.checkForRightSplice(t,e),!1):!ve.vertEq(l,t.event)&&ve.edgeSign(l,t.event,d)>=0||!ve.vertEq(c,t.event)&&ve.edgeSign(c,t.event,d)<=0?c===t.event?(t.mesh.splitEdge(o.Sym),t.mesh.splice(n.Sym,o),e=i.topLeftRegion(t,e),o=i.regionBelow(e).eUp,i.finishLeftRegions(t,i.regionBelow(e),r),i.addRightEdges(t,e,o.Oprev,o,o,!0),!0):l===t.event?(t.mesh.splitEdge(n.Sym),t.mesh.splice(o.Lnext,n.Oprev),r=e,e=i.topRightRegion(e),h=i.regionBelow(e).eUp.Rprev,r.eUp=n.Oprev,n=i.finishLeftRegions(t,r,null),i.addRightEdges(t,e,n.Onext,o.Rprev,h,!0),!0):(ve.edgeSign(l,t.event,d)>=0&&(i.regionAbove(e).dirty=e.dirty=!0,t.mesh.splitEdge(o.Sym),o.Org.s=t.event.s,o.Org.t=t.event.t),ve.edgeSign(c,t.event,d)<=0&&(e.dirty=r.dirty=!0,t.mesh.splitEdge(n.Sym),n.Org.s=t.event.s,n.Org.t=t.event.t),!1):(t.mesh.splitEdge(o.Sym),t.mesh.splitEdge(n.Sym),t.mesh.splice(n.Oprev,o),o.Org.s=d.s,o.Org.t=d.t,o.Org.pqHandle=t.pq.insert(o.Org),i.getIntersectData(t,o.Org,a,l,s,c),i.regionAbove(e).dirty=e.dirty=r.dirty=!0,!1)},i.walkDirtyRegions=function(t,e){for(var r=i.regionBelow(e),o,n;;){for(;r.dirty;)e=r,r=i.regionBelow(r);if(!e.dirty&&(r=e,e=i.regionAbove(e),e===null||!e.dirty))return;if(e.dirty=!1,o=e.eUp,n=r.eUp,o.Dst!==n.Dst&&i.checkForLeftSplice(t,e)&&(r.fixUpperEdge?(i.deleteRegion(t,r),t.mesh.delete(n),r=i.regionBelow(e),n=r.eUp):e.fixUpperEdge&&(i.deleteRegion(t,e),t.mesh.delete(o),e=i.regionAbove(r),o=e.eUp)),o.Org!==n.Org)if(o.Dst!==n.Dst&&!e.fixUpperEdge&&!r.fixUpperEdge&&(o.Dst===t.event||n.Dst===t.event)){if(i.checkForIntersect(t,e))return}else i.checkForRightSplice(t,e);o.Org===n.Org&&o.Dst===n.Dst&&(i.addWinding(n,o),i.deleteRegion(t,e),t.mesh.delete(o),e=i.regionAbove(r))}},i.connectRightVertex=function(t,e,r){var o,n=r.Onext,a=i.regionBelow(e),s=e.eUp,l=a.eUp,c=!1;if(s.Dst!==l.Dst&&i.checkForIntersect(t,e),ve.vertEq(s.Org,t.event)&&(t.mesh.splice(n.Oprev,s),e=i.topLeftRegion(t,e),n=i.regionBelow(e).eUp,i.finishLeftRegions(t,i.regionBelow(e),a),c=!0),ve.vertEq(l.Org,t.event)&&(t.mesh.splice(r,l.Oprev),r=i.finishLeftRegions(t,a,null),c=!0),c){i.addRightEdges(t,e,r.Onext,n,n,!0);return}ve.vertLeq(l.Org,s.Org)?o=l.Oprev:o=s,o=t.mesh.connect(r.Lprev,o),i.addRightEdges(t,e,o,o.Onext,o.Onext,!1),o.Sym.activeRegion.fixUpperEdge=!0,i.walkDirtyRegions(t,e)},i.connectLeftDegenerate=function(t,e,r){var o,n,a,s,l;if(o=e.eUp,ve.vertEq(o.Org,r)){we(!1),i.spliceMergeVertices(t,o,r.anEdge);return}if(!ve.vertEq(o.Dst,r)){t.mesh.splitEdge(o.Sym),e.fixUpperEdge&&(t.mesh.delete(o.Onext),e.fixUpperEdge=!1),t.mesh.splice(r.anEdge,o),i.sweepEvent(t,r);return}we(!1),e=i.topRightRegion(e),l=i.regionBelow(e),a=l.eUp.Sym,n=s=a.Onext,l.fixUpperEdge&&(we(n!==a),i.deleteRegion(t,l),t.mesh.delete(a),a=n.Oprev),t.mesh.splice(r.anEdge,a),ve.edgeGoesLeft(n)||(n=null),i.addRightEdges(t,e,a.Onext,s,n,!0)},i.connectLeftVertex=function(t,e){var r,o,n,a,s,l,c=new ff;if(c.eUp=e.anEdge.Sym,r=t.dict.search(c).key,o=i.regionBelow(r),!!o){if(a=r.eUp,s=o.eUp,ve.edgeSign(a.Dst,e,a.Org)===0){i.connectLeftDegenerate(t,r,e);return}if(n=ve.vertLeq(s.Dst,a.Dst)?r:o,r.inside||n.fixUpperEdge){if(n===r)l=t.mesh.connect(e.anEdge.Sym,a.Lnext);else{var u=t.mesh.connect(s.Dnext,e.anEdge);l=u.Sym}n.fixUpperEdge?i.fixUpperEdge(t,n,l):i.computeWinding(t,i.addRegionBelow(t,r,l)),i.sweepEvent(t,e)}else i.addRightEdges(t,r,e.anEdge,e.anEdge,null,!0)}},i.sweepEvent=function(t,e){t.event=e,i.debugEvent(t);for(var r=e.anEdge;r.activeRegion===null;)if(r=r.Onext,r===e.anEdge){i.connectLeftVertex(t,e);return}var o=i.topLeftRegion(t,r.activeRegion);we(o!==null);var n=i.regionBelow(o),a=n.eUp,s=i.finishLeftRegions(t,n,null);s.Onext===a?i.connectRightVertex(t,o,s):i.addRightEdges(t,o,s.Onext,a,a,!0)},i.addSentinel=function(t,e,r,o){var n=new ff,a=t.mesh.makeEdge();a.Org.s=r,a.Org.t=o,a.Dst.s=e,a.Dst.t=o,t.event=a.Dst,n.eUp=a,n.windingNumber=0,n.inside=!1,n.fixUpperEdge=!1,n.sentinel=!0,n.dirty=!1,n.nodeUp=t.dict.insert(n)},i.initEdgeDict=function(t){t.dict=new qI(t,i.edgeLeq);var e=t.bmax[0]-t.bmin[0],r=t.bmax[1]-t.bmin[1],o=t.bmin[0]-e,n=t.bmax[0]+e,a=t.bmin[1]-r,s=t.bmax[1]+r;i.addSentinel(t,o,n,a),i.addSentinel(t,o,n,s)},i.doneEdgeDict=function(t){for(var e,r=0;(e=t.dict.min().key)!==null;)e.sentinel||(we(e.fixUpperEdge),we(++r===1)),we(e.windingNumber===0),i.deleteRegion(t,e)},i.removeDegenerateEdges=function(t){var e,r,o,n=t.mesh.eHead;for(e=n.next;e!==n;e=r)r=e.next,o=e.Lnext,ve.vertEq(e.Org,e.Dst)&&e.Lnext.Lnext!==e&&(i.spliceMergeVertices(t,o,e),t.mesh.delete(e),e=o,o=e.Lnext),o.Lnext===e&&(o!==e&&((o===r||o===r.Sym)&&(r=r.next),t.mesh.delete(o)),(e===r||e===r.Sym)&&(r=r.next),t.mesh.delete(e))},i.initPriorityQ=function(t){var e,r,o,n=0;for(o=t.mesh.vHead,r=o.next;r!==o;r=r.next)n++;for(n+=8,e=t.pq=new WI(n,ve.vertLeq),o=t.mesh.vHead,r=o.next;r!==o;r=r.next)r.pqHandle=e.insert(r);return r!==o?!1:(e.init(),!0)},i.donePriorityQ=function(t){t.pq=null},i.removeDegenerateFaces=function(t,e){var r,o,n;for(r=e.fHead.next;r!==e.fHead;r=o)o=r.next,n=r.anEdge,we(n.Lnext!==n),n.Lnext.Lnext===n&&(i.addWinding(n.Onext,n),t.mesh.delete(n));return!0},i.computeInterior=function(t,e){e===void 0&&(e=!0);var r,o;if(i.removeDegenerateEdges(t),!i.initPriorityQ(t))return!1;for(i.initEdgeDict(t);(r=t.pq.extractMin())!==null;){for(;o=t.pq.min(),!(o===null||!ve.vertEq(o,r));)o=t.pq.extractMin(),i.spliceMergeVertices(t,r.anEdge,o.anEdge);i.sweepEvent(t,r)}return t.event=t.dict.min().key.eUp.Org,i.debugEvent(t),i.doneEdgeDict(t),i.donePriorityQ(t),i.removeDegenerateFaces(t,t.mesh)?(e&&t.mesh.check(),!0):!1},i}(),XI=function(){function i(){this.mesh=new zx,this.normal=[0,0,0],this.sUnit=[0,0,0],this.tUnit=[0,0,0],this.bmin=[0,0],this.bmax=[0,0],this.windingRule=Fe.ODD,this.dict=null,this.pq=null,this.event=null,this.vertexIndexCounter=0,this.vertices=[],this.vertexIndices=[],this.vertexCount=0,this.elements=[],this.elementCount=0}return i.prototype.dot_=function(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]},i.prototype.normalize_=function(t){var e=t[0]*t[0]+t[1]*t[1]+t[2]*t[2];if(!e)throw"Zero-size vector!";e=Math.sqrt(e),t[0]/=e,t[1]/=e,t[2]/=e},i.prototype.longAxis_=function(t){var e=0;return Math.abs(t[1])>Math.abs(t[0])&&(e=1),Math.abs(t[2])>Math.abs(t[e])&&(e=2),e},i.prototype.computeNormal_=function(t){var e,r,o,n,a,s,l=[0,0,0],c=[0,0,0],u=[0,0,0],p=[0,0,0],d=[0,0,0],f=[null,null,null],h=[null,null,null],m=this.mesh.vHead;e=m.next;for(var y=0;y<3;++y)n=e.coords[y],c[y]=n,h[y]=e,l[y]=n,f[y]=e;for(e=m.next;e!==m;e=e.next)for(var b=0;b<3;++b)n=e.coords[b],n<c[b]&&(c[b]=n,h[b]=e),n>l[b]&&(l[b]=n,f[b]=e);var v=0;if(l[1]-c[1]>l[0]-c[0]&&(v=1),l[2]-c[2]>l[v]-c[v]&&(v=2),c[v]>=l[v]){t[0]=0,t[1]=0,t[2]=1;return}for(s=0,r=h[v],o=f[v],u[0]=r.coords[0]-o.coords[0],u[1]=r.coords[1]-o.coords[1],u[2]=r.coords[2]-o.coords[2],e=m.next;e!==m;e=e.next)p[0]=e.coords[0]-o.coords[0],p[1]=e.coords[1]-o.coords[1],p[2]=e.coords[2]-o.coords[2],d[0]=u[1]*p[2]-u[2]*p[1],d[1]=u[2]*p[0]-u[0]*p[2],d[2]=u[0]*p[1]-u[1]*p[0],a=d[0]*d[0]+d[1]*d[1]+d[2]*d[2],a>s&&(s=a,t[0]=d[0],t[1]=d[1],t[2]=d[2]);s<=0&&(t[0]=t[1]=t[2]=0,t[this.longAxis_(u)]=1)},i.prototype.checkOrientation_=function(){for(var t=this.mesh.fHead,e,r=this.mesh.vHead,o,n=0,a=t.next;a!==t;a=a.next)if(o=a.anEdge,!(o.winding<=0))do n+=(o.Org.s-o.Dst.s)*(o.Org.t+o.Dst.t),o=o.Lnext;while(o!==a.anEdge);if(n<0){for(e=r.next;e!==r;e=e.next)e.t=-e.t;this.tUnit[0]=-this.tUnit[0],this.tUnit[1]=-this.tUnit[1],this.tUnit[2]=-this.tUnit[2]}},i.prototype.projectPolygon_=function(){var t=this.mesh.vHead,e=[0,0,0],r,o,n=!1;e[0]=this.normal[0],e[1]=this.normal[1],e[2]=this.normal[2],!e[0]&&!e[1]&&!e[2]&&(this.computeNormal_(e),n=!0),r=this.sUnit,o=this.tUnit;var a=this.longAxis_(e);r[a]=0,r[(a+1)%3]=1,r[(a+2)%3]=0,o[a]=0,o[(a+1)%3]=0,o[(a+2)%3]=e[a]>0?1:-1;for(var s=t.next;s!==t;s=s.next)s.s=this.dot_(s.coords,r),s.t=this.dot_(s.coords,o);n&&this.checkOrientation_();for(var l=!0,c=t.next;c!==t;c=c.next)l?(this.bmin[0]=this.bmax[0]=c.s,this.bmin[1]=this.bmax[1]=c.t,l=!1):(c.s<this.bmin[0]&&(this.bmin[0]=c.s),c.s>this.bmax[0]&&(this.bmax[0]=c.s),c.t<this.bmin[1]&&(this.bmin[1]=c.t),c.t>this.bmax[1]&&(this.bmax[1]=c.t))},i.prototype.addWinding_=function(t,e){t.winding+=e.winding,t.Sym.winding+=e.Sym.winding},i.prototype.tessellateMonoRegion_=function(t,e){var r,o;if(r=e.anEdge,!(r.Lnext!==r&&r.Lnext.Lnext!==r))throw"Mono region invalid";for(;ve.vertLeq(r.Dst,r.Org);r=r.Lprev);for(;ve.vertLeq(r.Org,r.Dst);r=r.Lnext);o=r.Lprev;for(var n=void 0;r.Lnext!==o;)if(ve.vertLeq(r.Dst,o.Org)){for(;o.Lnext!==r&&(ve.edgeGoesLeft(o.Lnext)||ve.edgeSign(o.Org,o.Dst,o.Lnext.Dst)<=0);)n=t.connect(o.Lnext,o),o=n.Sym;o=o.Lprev}else{for(;o.Lnext!==r&&(ve.edgeGoesRight(r.Lprev)||ve.edgeSign(r.Dst,r.Org,r.Lprev.Org)>=0);)n=t.connect(r,r.Lprev),r=n.Sym;r=r.Lnext}if(o.Lnext===r)throw"Mono region invalid";for(;o.Lnext.Lnext!==r;)n=t.connect(o.Lnext,o),o=n.Sym;return!0},i.prototype.tessellateInterior_=function(t){for(var e,r=t.fHead.next;r!==t.fHead;r=e)if(e=r.next,r.inside&&!this.tessellateMonoRegion_(t,r))return!1;return!0},i.prototype.discardExterior_=function(t){for(var e,r=t.fHead.next;r!==t.fHead;r=e)e=r.next,r.inside||t.zapFace(r)},i.prototype.setWindingNumber_=function(t,e,r){for(var o,n=t.eHead.next;n!==t.eHead;n=o)o=n.next,n.Rface.inside!==n.Lface.inside?n.winding=n.Lface.inside?e:-e:r?t.delete(n):n.winding=0},i.prototype.getNeighbourFace_=function(t){return!t.Rface||!t.Rface.inside?-1:t.Rface.n},i.prototype.outputPolymesh_=function(t,e,r,o){var n,a=0,s=0,l;r>3&&t.mergeConvexFaces(r);for(var c=t.vHead.next;c!==t.vHead;c=c.next)c.n=-1;for(var u=t.fHead.next;u!==t.fHead;u=u.next)if(u.n=-1,!!u.inside){n=u.anEdge,l=0;do{var c=n.Org;c.n===-1&&(c.n=s,s++),l++,n=n.Lnext}while(n!==u.anEdge);if(l>r)throw"Face vertex greater that support polygon";u.n=a,++a}this.elementCount=a,e===st.CONNECTED_POLYGONS&&(a*=2),this.elements=[],this.elements.length=a*r,this.vertexCount=s,this.vertices=[],this.vertices.length=s*o,this.vertexIndices=[],this.vertexIndices.length=s;for(var c=t.vHead.next;c!==t.vHead;c=c.next)if(c.n!==-1){var p=c.n*o;this.vertices[p+0]=c.coords[0],this.vertices[p+1]=c.coords[1],o>2&&(this.vertices[p+2]=c.coords[2]),this.vertexIndices[c.n]=c.idx}for(var d=0,u=t.fHead.next;u!==t.fHead;u=u.next)if(!!u.inside){n=u.anEdge,l=0;do{var c=n.Org;this.elements[d++]=c.n,l++,n=n.Lnext}while(n!==u.anEdge);for(var f=l;f<r;++f)this.elements[d++]=-1;if(e===st.CONNECTED_POLYGONS){n=u.anEdge;do this.elements[d++]=this.getNeighbourFace_(n),n=n.Lnext;while(n!==u.anEdge);for(var h=l;h<r;++h)this.elements[d++]=-1}}},i.prototype.outputContours_=function(t,e){var r,o,n=0,a=0;this.vertexCount=0,this.elementCount=0;for(var s=t.fHead.next;s!==t.fHead;s=s.next)if(!!s.inside){o=r=s.anEdge;do this.vertexCount++,r=r.Lnext;while(r!==o);this.elementCount++}this.elements=[],this.elements.length=this.elementCount*2,this.vertices=[],this.vertices.length=this.vertexCount*e,this.vertexIndices=[],this.vertexIndices.length=this.vertexCount;var l=0,c=0,u=0;n=0;for(var s=t.fHead.next;s!==t.fHead;s=s.next)if(!!s.inside){a=0,o=r=s.anEdge;do this.vertices[l++]=r.Org.coords[0],this.vertices[l++]=r.Org.coords[1],e>2&&(this.vertices[l++]=r.Org.coords[2]),this.vertexIndices[c++]=this.vertexIdCallback?this.vertexIdCallback(r):r.Org.idx,a++,r=r.Lnext;while(r!==o);this.elements[u++]=n,this.elements[u++]=a,n+=a}},i.prototype.addContour=function(t,e){this.mesh===null&&(this.mesh=new zx),t<2&&(t=2),t>3&&(t=3);for(var r=null,o=0;o<e.length;o+=t)r===null?(r=this.mesh.makeEdge(),this.mesh.splice(r,r.Sym)):(this.mesh.splitEdge(r),r=r.Lnext),r.Org.coords[0]=e[o+0],r.Org.coords[1]=e[o+1],t>2?r.Org.coords[2]=e[o+2]:r.Org.coords[2]=0,r.Org.idx=this.vertexIndexCounter++,this.edgeCreateCallback&&this.edgeCreateCallback(r),r.winding=1,r.Sym.winding=-1},i.prototype.tesselate=function(t,e,r,o,n,a){if(t===void 0&&(t=Fe.ODD),e===void 0&&(e=st.POLYGONS),a===void 0&&(a=!0),this.vertices=[],this.elements=[],this.vertexIndices=[],this.vertexIndexCounter=0,n&&(this.normal[0]=n[0],this.normal[1]=n[1],this.normal[2]=n[2]),this.windingRule=t,o<2&&(o=2),o>3&&(o=3),!this.mesh)return!1;this.projectPolygon_(),$I.computeInterior(this,a);var s=this.mesh;return e===st.BOUNDARY_CONTOURS?this.setWindingNumber_(s,1,!0):this.tessellateInterior_(s),a&&s.check(),e===st.BOUNDARY_CONTOURS?this.outputContours_(s,o):this.outputPolymesh_(s,e,r,o),!0},i}();function Fr(i){var t=i.windingRule,e=t===void 0?Fe.ODD:t,r=i.elementType,o=r===void 0?st.POLYGONS:r,n=i.polySize,a=n===void 0?3:n,s=i.vertexSize,l=s===void 0?2:s,c=i.normal,u=c===void 0?[0,0,1]:c,p=i.contours,d=p===void 0?[]:p,f=i.strict,h=f===void 0?!0:f,m=i.debug,y=m===void 0?!1:m;if(!d&&h)throw new Error("Contours can't be empty");if(!!d){var b=new XI;i.edgeCreateCallback&&(b.edgeCreateCallback=i.edgeCreateCallback),i.vertexIdCallback&&(b.vertexIdCallback=i.vertexIdCallback);for(var v=0;v<d.length;v++)b.addContour(l||2,d[v]);return b.tesselate(e,o,a,l,u,h),{vertices:b.vertices,vertexIndices:b.vertexIndices,vertexCount:b.vertexCount,elements:b.elements,elementCount:b.elementCount,mesh:y?b.mesh:void 0}}}var gq=Fe.ODD,xq=Fe.NONZERO,bq=Fe.POSITIVE,vq=Fe.NEGATIVE,Sq=Fe.ABS_GEQ_TWO,wq=st.POLYGONS,Pq=st.CONNECTED_POLYGONS,Oq=st.BOUNDARY_CONTOURS;import{Box2 as ZI,BufferAttribute as vu,BufferGeometry as JI,Vector2 as e3}from"three";var xu=class{constructor(t=256,e=!1){this.capacity=t,this.size=0,this.debug=e,this.debug&&console.log(`allocating with cap ${t}`);let r=t*xu.eSize;this.buffer=new ArrayBuffer(r);let o=Float32Array.BYTES_PER_ELEMENT,n=0;this.positions=new Float32Array(this.buffer,n*o,3*t),n+=3*t,this.normals=new Float32Array(this.buffer,n*o,3*t),n+=3*t,this.uvs=new Float32Array(this.buffer,n*o,2*t)}realloc(t,e=!1){if(t<this.size)throw Error("cannot shrink buffer");if(t<=this.capacity&&!e)return;this.debug&&console.log(`resizing from ${this.capacity} \u2192 ${t}`);let r=t*xu.eSize,o=new ArrayBuffer(r),n=Float32Array.BYTES_PER_ELEMENT,a=0,s=new Float32Array(o,a*n,3*t);a+=3*t;let l=new Float32Array(o,a*n,3*t);a+=3*t;let c=new Float32Array(o,a*n,2*t);e?(s.set(this.positions.subarray(0,this.size*3)),l.set(this.normals.subarray(0,this.size*3)),c.set(this.uvs.subarray(0,this.size*2))):(s.set(this.positions),l.set(this.normals),c.set(this.uvs)),this.buffer=o,this.positions=s,this.normals=l,this.uvs=c,this.capacity=t}get(t=1){let e=this.size+t;if(e>this.capacity){let o=this.capacity;for(;e>o;)o*=2;this.realloc(o)}let r=this.size;return this.size=e,r}reserve(t){let e=this.size+t;e>this.capacity&&this.realloc(e)}shrink(){this.debug&&console.log(`shrinking ${this.capacity} \u2192 ${this.size}`),this.realloc(this.size,!0)}},el=xu;el.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var tl=class{constructor(t=[],e=(r,o)=>r<o?-1:r>o?1:0){if(this.data=t,this.length=this.data.length,this.compare=e,this.length>0)for(let r=(this.length>>1)-1;r>=0;r--)this._down(r)}push(t){this.data.push(t),this._up(this.length++)}pop(){if(this.length===0)return;let t=this.data[0],e=this.data.pop();return--this.length>0&&(this.data[0]=e,this._down(0)),t}peek(){return this.data[0]}_up(t){let{data:e,compare:r}=this,o=e[t];for(;t>0;){let n=t-1>>1,a=e[n];if(r(o,a)>=0)break;e[t]=a,t=n}e[t]=o}_down(t){let{data:e,compare:r}=this,o=this.length>>1,n=e[t];for(;t<o;){let a=(t<<1)+1,s=a+1;if(s<this.length&&r(e[s],e[a])<0&&(a=s),r(e[a],n)>=0)break;e[t]=e[a],t=a}e[t]=n}};function hf(i,t,e=1,r=!1){let o=1/0,n=1/0,a=-1/0,s=-1/0;for(let[v,w]of i[0])v<o&&(o=v),w<n&&(n=w),v>a&&(a=v),w>s&&(s=w);let l=a-o,c=s-n,u=Math.max(e,Math.min(l,c));if(u===e){let v=[o,n];return v.distance=0,v.distance}let p=new tl([],(v,w)=>w.max-v.max),d=KI(i),f=new bu(o+l/2,n+c/2,0,i);f.d>d.d&&(d=f);let h=2;function m(v,w,O){let S=new bu(v,w,O,i);if(h++,S.max>d.d+e&&p.push(S),S.d>d.d&&(d=S,r&&console.log(`found best ${Math.round(1e4*S.d)/1e4} after ${h} probes`),d.d>t))return t}let y=u/2;for(let v=o;v<a;v+=u)for(let w=n;w<s;w+=u)m(v+y,w+y,y);for(;p.length;){let{max:v,x:w,y:O,h:S}=p.pop();if(v-d.d<=e)break;y=S/2,m(w-y,O-y,y),m(w+y,O-y,y),m(w-y,O+y,y),m(w+y,O+y,y)}r&&console.log(`num probes: ${h}
|
|
3
|
-
best distance: ${d.d}`);let b=[d.x,d.y];return b.distance=d.d,b.distance}function bu(i,t,e,r){this.x=i,this.y=t,this.h=e,this.d=YI(i,t,r),this.max=this.d+this.h*Math.SQRT2}function YI(i,t,e){let r=!1,o=1/0;for(let n of e)for(let a=0,s=n.length,l=s-1;a<s;l=a++){let c=n[a],u=n[l];c[1]>t!=u[1]>t&&i<(u[0]-c[0])*(t-c[1])/(u[1]-c[1])+c[0]&&(r=!r),o=Math.min(o,QI(i,t,c,u))}return o===0?0:(r?1:-1)*Math.sqrt(o)}function KI(i){let t=0,e=0,r=0,o=i[0];for(let a=0,s=o.length,l=s-1;a<s;l=a++){let c=o[a],u=o[l],p=c[0]*u[1]-u[0]*c[1];e+=(c[0]+u[0])*p,r+=(c[1]+u[1])*p,t+=p*3}let n=new bu(e/t,r/t,0,i);return t===0||n.d<0?new bu(o[0][0],o[0][1],0,i):n}function QI(i,t,e,r){let o=e[0],n=e[1],a=r[0]-o,s=r[1]-n;if(a!==0||s!==0){let l=((i-o)*a+(t-n)*s)/(a*a+s*s);l>1?(o=r[0],n=r[1]):l>0&&(o+=a*l,n+=s*l)}return a=i-o,s=t-n,a*a+s*s}var rl={vertices:[160,160,-160,160,-160,-160,160,-160],vertexIndices:[1,0,3,2],vertexCount:4,elements:[0,4],elementCount:1,mesh:void 0},yf={vertices:[],vertexIndices:[],vertexCount:0,elements:[],elementCount:0,mesh:void 0},gf={vertices:[-160,160,160,-160,160,160,-160,-160],vertexIndices:[1,3,0,2],vertexCount:4,elements:[0,1,2,1,0,3],elementCount:2,mesh:void 0},mf=(i,t)=>([e,r])=>(r<e&&(r+=t),(i>=e?i:i+t)<=r),vi=class extends JI{constructor(e,r,o=0,n=12,a=3,s=Fe.ODD,l=!1){super();this.forPathBevel=l;this.type="ShapeGeometry";this.vertexCache={};this._shape=e,this._depth=r,this._curveSegments=n,this._bevelSegmentsInput=a;let c=this._shape.extractShapePointsToFlatArray([],n),u=this._shape.shapeHoles.map(I=>{let N=I.extractShapePointsToFlatArray([],n),_=[];for(let R=N.length-1;R>=1;R-=2){let V=N[R-1],U=N[R-0];_.push(V,U)}return _}),p=[],d=[];for(let I=0;I<c.length;I+=2)d.push([c[I],c[I+1]]);p.push(d);for(let I=0;I<u.length;I++){let N=u[I],_=[];for(let R=0;R<N.length;R+=2)_.push([N[R],N[R+1]]);p.push(_)}let f;e.isText?f=new ZI().setFromPoints(e.points.map(N=>N.position)).getSize(new e3).length()*.1:p[0].length===0?f=o:o>0?f=hf(p,o):f=1e-5,o<=0?(this._bevel=0,this._bevelSegments=0):(this._bevel=Math.min(o,f,r/2),this._bevelSegments=Math.floor(a));let h;try{h=Fr({windingRule:s,elementType:st.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[c]})}catch{h=rl}let m;try{m=Fr({windingRule:Fe.ODD,elementType:st.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...u]})}catch{m=yf}if(!h)throw new Error("error generating geometry");let y=h.elementCount;if(m){h.elementCount+=m.elementCount;for(let I=0;I<m.elements.length;I++){let N=m.elements[I],_=I%2===0?h.vertexCount:0;h.elements.push(N+_)}for(let I=0;I<m.vertexIndices.length;I++){let N=m.vertexIndices[I],_=h.vertexCount;h.vertexIndices.push(N+_)}for(let I=0;I<m.vertices.length;I++){let N=m.vertices[I];h.vertices.push(N)}}let b=1/0,v=-1/0,w=1/0,O=-1/0;for(let I=0,N=h.vertexCount;I<N;I++){let _=I*2,R=h.vertices[_+0],V=h.vertices[_+1];R<b&&(b=R),R>v&&(v=R),V<w&&(w=V),V>O&&(O=V)}this._minX=b,this._minY=w,this._width=v-b,this._height=O-w,this._buffer=new el(this._computeBufferEstimatedSize(h));let S=[],T=[];for(let I=h.elementCount-1;I>=0;I--){let N=I>=y,_=I*2,R=h.elements[_+0],V=h.elements[_+1],U=R+V,B={start:R,count:V,normals:[],continuous:[],concave:[]},q=R,j=U-1,F=R+1,H=this._shape.roundedCurves.length;do{let re=q-R,K=h.vertices[j*2+0],Z=h.vertices[j*2+1],Q=h.vertices[q*2+0],$=h.vertices[q*2+1],de=h.vertices[F*2+0],le=h.vertices[F*2+1],ie=Q-K,ce=$-Z,ae=Math.sqrt(ie*ie+ce*ce);ie/=ae,ce/=ae;let me=Q-de,fe=$-le,he=Math.sqrt(me*me+fe*fe);me/=he,fe/=he,B.normals[re*2+0]=-fe,B.normals[re*2+1]=me,B.concave[re]=ie*fe-ce*me>0;let xe=h.vertexIndices[q];if(Array.isArray(xe))B.continuous[re]=!1;else{let[ye,C]=this._shape.getCurveIndexFromVertexId(xe-1,!0);if(C>0&&C<1)B.continuous[re]=!0;else{let ne=C===1?ye+1:ye-1;ne=(ne+H)%H;let Ne=C===1?0:1,Ve=this._shape.roundedCurves[ye].getTangent(C),_e=this._shape.roundedCurves[ne].getTangent(Ne);B.continuous[re]=Ve.dot(_e)>.95}}N&&(B.normals[re*2+0]*=-1,B.normals[re*2+1]*=-1),[j,q,F]=[q,F,F+1],F>=U&&(F-=V)}while(F!==R+1);let W=[];W.push({bevelI:0,angle:0,size:0,boundary:{vertices:h.vertices.slice(R*2,U*2),vertexCount:V,vertexIndices:new Array(V).fill(!0).map((re,K)=>[K,K]),elements:[0,V],elementCount:1,mesh:null},reverseMap:[],insetPoints:h.vertices.slice(R*2,U*2)});let ee=0;for(let re=1;re<=this._bevelSegments;re++){let K=re/this._bevelSegments*Math.PI/2,Z=(1-Math.cos(K))*this._bevel,Q=[],$=[],de=[],le=[],ie=0;for(let ae=0;ae<V;ae++){let me=ae*2,fe=(ae-1+V)%V*2,he=h.vertices[B.start*2+me+0],xe=h.vertices[B.start*2+me+1],ye=-B.normals[fe+0]*Z,C=-B.normals[fe+1]*Z,ne=-B.normals[me+0]*Z,Ne=-B.normals[me+1]*Z;if(B.concave[ae]||!B.concave[ae]&&N){let Ve=Math.atan2(C,ye),_e=Math.atan2(Ne,ne);_e>Ve&&(_e-=Math.PI*2);let Pe=_e-Ve;if(B.continuous[ae]||N){let St=Ve+Pe/2,Me=Math.cos(St)*Z,bt=Math.sin(St)*Z;Q[2*ie+0]=he+Me*(N?-1:1),Q[2*ie+1]=xe+bt*(N?-1:1),le[ie]=ae,ie++}else{let St=Math.max(1,Math.floor(n/4*Math.abs(Pe)/Math.PI));for(let Me=0;Me<=St;Me++){let bt=Ve+Pe*(Me/St),wt=Math.cos(bt)*Z,Ui=Math.sin(bt)*Z;Q[2*ie+0]=he+wt,Q[2*ie+1]=xe+Ui,le[ie]=ae,ie++}}}else Q[2*ie+0]=he+ye,Q[2*ie+1]=xe+C,le[ie]=ae,$[ae]=ie,ie++,Q[2*ie+0]=he,Q[2*ie+1]=xe,le[ie]=ae,ie++,Q[2*ie+0]=he+ne,Q[2*ie+1]=xe+Ne,le[ie]=ae,de[ae]=ie,ie++}let ce=Fr({windingRule:Fe.POSITIVE,elementType:st.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[Q],edgeCreateCallback:ae=>{let fe=ae.Org.idx,he=le[fe],xe=le[(fe+1)%le.length];ae.idx=[he,xe],ae.Sym.idx=[xe,he]},vertexIdCallback:ae=>{let me=ae.Lprev.idx;return[me?me[1]:0,ae.idx?ae.idx[0]:0]}});if(!ce)throw console.log("Error"),new Error(`error generating bevel geometry for ${re}'th loop`);if(!ce.vertexCount){let ae=(re-1)/this._bevelSegments*Math.PI/2;ee=(1-Math.sin(ae))*this._bevel;break}for(let ae=0;ae<ce.vertexIndices.length;ae++){let[me,fe]=ce.vertexIndices[ae];if(me===fe)continue;let he=fe;fe<me&&(he+=V);for(let xe=me;xe<he;xe++){let ye=xe%V,C=(xe+1)%V;if(!B.continuous[ye]||!B.continuous[C]){ce.vertexIndices[ae]=[me,ye],ce.vertexIndices.splice(ae+1,0,[C,fe]),ce.vertices.splice((ae+1)*2,0,ce.vertices[ae*2],ce.vertices[ae*2+1]);break}}}W.push({bevelI:re,angle:K,size:Z,boundary:ce,reverseMap:le,insetPoints:Q})}let te=(re,K,Z)=>{let Q=0,$=re.boundary.vertexIndices.length;for(;Q<$&&Z(re.boundary.vertexIndices[K]);)K=(K+1)%$,Q++;return Q},Y=S.length;for(let re=1;re<W.length;re++){let K=W[re-1],Z=W[re],Q=K.boundary.vertexIndices.length,$=Z.boundary.vertexIndices.length;if(!Q||!$)break;let de=B.concave.length,le=0,ie=mf(le,V);for(;!K.boundary.vertexIndices.filter(ie).length||!Z.boundary.vertexIndices.filter(ie).length;)le++,ie=mf(le,V);let ce=K.boundary.vertexIndices.findIndex(ie),ae=Z.boundary.vertexIndices.findIndex(ie);do ce=(ce+1)%Q;while(ie(K.boundary.vertexIndices[ce]));do ae=(ae+1)%$;while(ie(Z.boundary.vertexIndices[ae]));le=(le+1)%V;let me=le,fe=0,he=this._buildBevelVert(B,K,(ce-1+Q)%Q,void 0,fe),xe=this._buildBevelVert(B,Z,(ae-1+$)%$,void 0,fe),ye=he,C=xe,ne,Ne,Ve=!1;do{fe=(le||de)/de,ie=mf(le,V);let _e=te(K,ce,ie),Pe=te(Z,ae,ie),St=Ve;if(Ve=!1,_e&&!Pe){for(let Me=0;Me<_e;Me++)ne=this._buildBevelVert(B,K,(ce+Me)%Q,Me/(_e-1),fe),S.push(ye.topN,ne.topP,C.topN),l===!1&&S.push(ne.bottomP,ye.bottomN,C.bottomN),ye=ne;Ve=!0}else if(!_e&&Pe)for(let Me=0;Me<Pe;Me++)Ne=this._buildBevelVert(B,Z,(ae+Me)%$,Me/(Pe-1),fe),S.push(C.topN,ye.topP,Ne.topP),l===!1&&S.push(ye.bottomP,C.bottomN,Ne.bottomP),C=Ne;else if(_e&&Pe)if(ne=this._buildBevelVert(B,K,ce,0,fe),Ne=this._buildBevelVert(B,Z,ae,0,fe),St?(S.push(ye.topN,Ne.topP,C.topN),S.push(ye.topN,ne.topP,Ne.topP),l===!1&&(S.push(Ne.bottomP,ye.bottomN,C.bottomN),S.push(Ne.bottomP,ne.bottomP,ye.bottomN))):(S.push(C.topN,ye.topN,ne.topP),S.push(C.topN,ne.topP,Ne.topP),l===!1&&(S.push(ne.bottomP,ye.bottomN,C.bottomN),S.push(ne.bottomP,C.bottomN,Ne.bottomP))),ye=ne,C=Ne,_e===Pe)for(let Me=1;Me<_e;Me++)ne=this._buildBevelVert(B,K,(ce+Me)%Q,Me/(_e-1),fe),Ne=this._buildBevelVert(B,Z,(ae+Me)%$,Me/(Pe-1),fe),S.push(ye.topN,ne.topP,C.topN),S.push(C.topN,ne.topP,Ne.topP),l===!1&&(S.push(ne.bottomP,ye.bottomN,C.bottomN),S.push(ne.bottomP,C.bottomN,Ne.bottomP)),ye=ne,C=Ne;else if(_e>Pe){let Me=_e/Pe,bt=0;for(let wt=1;wt<_e;wt++)ne=this._buildBevelVert(B,K,(ce+wt)%Q,wt/(_e-1),fe),S.push(ye.topN,ne.topP,C.topN),l===!1&&S.push(ne.bottomP,ye.bottomN,C.bottomN),ye=ne,wt>(bt+1)*Me&&(bt++,Ne=this._buildBevelVert(B,Z,(ae+bt)%$,bt/(Pe-1),fe),S.push(C.topN,ne.topP,Ne.topP),l===!1&&S.push(ne.bottomP,C.bottomN,Ne.bottomP),C=Ne)}else{let Me=Pe/_e,bt=0;for(let wt=1;wt<Pe;wt++)Ne=this._buildBevelVert(B,Z,(ae+wt)%$,wt/(Pe-1),fe),S.push(C.topN,ne.topP,Ne.topP),l===!1&&S.push(ne.bottomP,C.bottomN,Ne.bottomP),C=Ne,wt>(bt+1)*Me&&(bt++,ne=this._buildBevelVert(B,K,(ce+bt)%Q,bt/(_e-1),fe),S.push(ye.topN,ne.topP,C.topN),l===!1&&S.push(ne.bottomP,ye.bottomN,C.bottomN),ye=ne)}ce=(ce+_e)%Q,ae=(ae+Pe)%$,le=(le+1)%de}while(le!==me)}if(l===!1&&this._depth>this._bevel*2&&this._buildWall(W,B,S),N){let re=[];for(let K=S.length-1;K>=Y+2;K-=3){let Z=S[K-2],Q=S[K-1],$=S[K-0];re.push($,Q,Z)}S.splice(Y,S.length-Y,...re)}if(N){let re=[];for(let K=W[W.length-1].boundary.vertices.length-1;K>=1;K-=2){let Z=W[W.length-1].boundary.vertices[K-1],Q=W[W.length-1].boundary.vertices[K-0];re.push(Z,Q)}T.push(re)}if(!N){let re=W[W.length-1],K;try{K=Fr({windingRule:W.length>1?Fe.POSITIVE:Fe.ODD,elementType:st.POLYGONS,vertexSize:2,strict:!0,contours:[re.insetPoints,...T]})}catch{K=gf}if(!K)throw new Error("Error generating geometry for surface");u.length===0&&this._bevel<f&&Object.assign(this,{useNgonForTopBottomFaceDuringBake:!0});for(let Z=0;Z<K.elementCount*3;Z+=3){let Q=this._buildSurfaceVert(K,K.elements[Z+0],ee),$=this._buildSurfaceVert(K,K.elements[Z+1],ee),de=this._buildSurfaceVert(K,K.elements[Z+2],ee);S.push(Q.top,$.top,de.top),l===!1&&S.push(de.bottom,$.bottom,Q.bottom)}}this.vertexCache={}}this._buffer.shrink();let M=new vu(Uint32Array.from(S),1),g=new vu(this._buffer.positions,3),D=new vu(this._buffer.normals,3),E=new vu(this._buffer.uvs,2);g.needsUpdate=!0,D.needsUpdate=!0,E.needsUpdate=!0,M.needsUpdate=!0,this.setAttribute("position",g),this.setAttribute("normal",D),this.setAttribute("uv",E),this.setIndex(M)}_computeBufferEstimatedSize(e){return e.vertexCount*2*(2+this._bevelSegments)}_buildWall(e,r,o){let n=e[0];for(let a=0,s=n.boundary.vertexCount;a<s;a++){let l=this._buildBevelVert(r,n,a),c=this._buildBevelVert(r,n,(a+1)%s);o.push(c.topP,l.topN,l.bottomN),o.push(c.topP,l.bottomN,c.bottomP)}}_buildSurfaceVert(e,r,o){let n=r.toString();if(n in this.vertexCache)return this.vertexCache[n];let a=e.vertices[r*2+0],s=e.vertices[r*2+1],l=(a-this._minX)/this._width,c=(s-this._minY)/this._height;this.forPathBevel&&(c=1);let u=this._buffer.get(this.forPathBevel?1:2),p=u*3,d=u*2,f={top:u+0,bottom:u+1};return this._buffer.positions[p+0]=a,this._buffer.positions[p+1]=s,this._buffer.positions[p+2]=this.forPathBevel?this._bevel:this._depth-o,this._buffer.normals[p+0]=0,this._buffer.normals[p+1]=0,this._buffer.normals[p+2]=1,this._buffer.uvs[d+0]=l,this._buffer.uvs[d+1]=c,this.forPathBevel===!1&&(this._buffer.positions[p+3]=a,this._buffer.positions[p+4]=s,this._buffer.positions[p+5]=o,this._buffer.normals[p+3]=0,this._buffer.normals[p+4]=0,this._buffer.normals[p+5]=-1,this._buffer.uvs[d+2]=l,this._buffer.uvs[d+3]=c),this.vertexCache[n]=f,f}_buildBevelVert(e,r,o,n=1,a){let s=`${r.bevelI}:${o}`;if(s in this.vertexCache&&a!==0&&a!==1&&(!a||a===this.vertexCache[s].pathBevelUCoord))return this.vertexCache[s];let[l,c]=r.boundary.vertexIndices[o],u,p,d,f;l!==c?(p=l,u=c,f=!1,d=e.continuous[p]&&e.continuous[u]):(u=l,p=(u-1+e.count)%e.count,f=e.concave[u]&&r.bevelI>0,d=e.continuous[u]||f);let h=Math.cos(r.angle),m=Math.sin(r.angle),y=o*2,b=u*2,v=p*2,w=r.boundary.vertices[y+0],O=r.boundary.vertices[y+1],S=(1-m)*this._bevel,T=(w-this._minX)/this._width,M=(O-this._minY)/this._height;this.forPathBevel&&(a!==void 0&&(T=a),M=1);let g=e.normals[b+0],D=e.normals[b+1],E=e.normals[v+0],I=e.normals[v+1];if(f){let U=E-g,B=I-D;g=g+U*(1-n),D=D+B*(1-n);let q=Math.sqrt(g*g+D*D);g/=q,D/=q}let N=this.forPathBevel?this._buffer.get(d?1:2):this._buffer.get(d?2:4),_=N*3,R=N*2,V={i:o,fi:u,topP:N+0,topN:N+0,bottomP:N+1,bottomN:N+1,pathBevelUCoord:a};return this._buffer.positions[_+0]=w,this._buffer.positions[_+1]=O,this._buffer.positions[_+2]=(this.forPathBevel?this._bevel:this._depth)-S,this._buffer.normals[_+0]=g*h,this._buffer.normals[_+1]=D*h,this._buffer.normals[_+2]=m,this._buffer.uvs[R+0]=T,this._buffer.uvs[R+1]=M,this.forPathBevel===!1&&(this._buffer.positions[_+3]=w,this._buffer.positions[_+4]=O,this._buffer.positions[_+5]=S,this._buffer.normals[_+3]=g*h,this._buffer.normals[_+4]=D*h,this._buffer.normals[_+5]=-m,this._buffer.uvs[R+2]=M,this._buffer.uvs[R+3]=T),d||(this.forPathBevel?(N+=1,_+=3,R+=2):(N+=2,_+=6,R+=4),V.topP=N+0,V.bottomP=N+1,this._buffer.positions[_+0]=w,this._buffer.positions[_+1]=O,this._buffer.positions[_+2]=(this.forPathBevel?this._bevel:this._depth)-S,this._buffer.normals[_+0]=E*h,this._buffer.normals[_+1]=I*h,this._buffer.normals[_+2]=m,this._buffer.uvs[R+0]=T,this._buffer.uvs[R+1]=M,this.forPathBevel===!1&&(this._buffer.positions[_+3]=w,this._buffer.positions[_+4]=O,this._buffer.positions[_+5]=S,this._buffer.normals[_+3]=E*h,this._buffer.normals[_+4]=I*h,this._buffer.normals[_+5]=-m,this._buffer.uvs[R+2]=M,this._buffer.uvs[R+3]=T)),this.vertexCache[s]=V,V}clone(){let e=new vi(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=Io(this.userData),e}};var Ta=class extends t3{constructor(e,r=12,o={}){super();this.type="ShapeGeometry";this.windingRule=Fe.ODD;this.elementType=st.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=r,this._triangulationOptions=Object.assign({windingRule:Fe.ODD,elementType:st.POLYGONS,polySize:3,vertexSize:2,strict:!0},o);let n=this._shape.extractShapePointsToFlatArray([],this._curveSegments),a=this._shape.shapeHoles.map(h=>h.extractShapePointsToFlatArray([],this._curveSegments)),s,l=!0,c=!0,u,p;for(let h=0,m=n.length/2;h<m;h++){let y=h*2,b=n[y+0],v=n[y+1];if(u!==void 0&&b!==u&&(l=!1),p!==void 0&&v!==p&&(c=!1),u=b,p=v,!l&&!c)break}if(!l&&!c)try{s=Fr({contours:[n,...a],windingRule:this._triangulationOptions.windingRule,elementType:this._triangulationOptions.elementType,polySize:this._triangulationOptions.polySize,vertexSize:this._triangulationOptions.vertexSize,strict:this._triangulationOptions.strict})}catch{s=rl}let d=s?.vertexCount??1,f=s?.elementCount??1;if(this._positionAttribute=new Su(new Float32Array(d*3),3),this._normalAttribute=new Su(new Float32Array(d*3),3),this._uvAttribute=new Su(new Float32Array(d*2),2),this._indexAttribute=new Su(new Uint32Array(f*3),1),s){let h=1/0,m=-1/0,y=1/0,b=-1/0;for(let O=0,S=d;O<S;O++){let T=O*2,M=s.vertices[T+0],g=s.vertices[T+1];M<h&&(h=M),M>m&&(m=M),g<y&&(y=g),g>b&&(b=g)}let v=m-h,w=b-y;for(let O=0,S=d;O<S;O++){let T=O*2,M=s.vertices[T+0],g=s.vertices[T+1],D=(M-h)/v,E=(g-y)/w;this._positionAttribute.setXYZ(O,M,g,0),this._normalAttribute.setXYZ(O,0,0,1),this._uvAttribute.setXY(O,D,E)}for(let O=0,S=f;O<S;O++){let T=O*3,M=s.elements[T+0],g=s.elements[T+1],D=s.elements[T+2];this._indexAttribute.setX(T+0,M),this._indexAttribute.setX(T+1,g),this._indexAttribute.setX(T+2,D)}}this.setAttribute("position",this._positionAttribute),this.setAttribute("normal",this._normalAttribute),this.setAttribute("uv",this._uvAttribute),this.setIndex(this._indexAttribute),this.setDrawRange(0,(s?.elementCount??1)*3)}clone(){let e=new Ta(this._shape,this._curveSegments);return e.userData=Io(this.userData),e}};var Ca=class extends vi{constructor(e,r,o=0,n=12,a=3,s=Fe.ODD){super(e,r,o,n,a,s);this.type="ShapeGeometry"}_computeBufferEstimatedSize(e){return e.vertexCount*2*(2+this._bevelSegments)}_buildWall(e,r,o){let n=e[0];for(let a=0,s=n.boundary.vertexCount;a<s;a++){let l=this._buildBevelVert(r,n,a),c=this._buildBevelVert(r,n,(a+1)%s);o.push(c.topP,l.topN,l.bottomN),o.push(c.topP,l.bottomN,c.bottomP)}}clone(){let e=new Ca(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=Io(this.userData),e}};var er=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,subdivisions:40,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3,windingRule:Fe.ODD},i.parameters),r=Math.abs(e.width),o=Math.abs(e.height??e.width),n=Math.abs(e.depth??0),a=i.shape??t?.shape,s=a?.roundness??e.roundness;a!==void 0&&(a instanceof je?(a.width!==r||a.height!==o)&&a.applySize(r,o):a=new je(r,o).fromJSON(a),i.parameters?.roundness!==void 0&&i.parameters?.roundness>0&&a.update());let l=a??new je(r,o);return{parameters:Object.assign(e,{width:r,height:o,depth:n,roundness:s}),shape:l}}static build(i){let{depth:t,extrudeBevelSize:e,extrudeBevelSegments:r,subdivisions:o,roundness:n,windingRule:a}=i.parameters;i.shape.roundness=n;let s;return t<=0?s=new Ta(i.shape,o,{windingRule:a}):s=new Ca(i.shape,t,e,o,r,a),Object.assign(s,{userData:{...i,type:"VectorGeometry"}})}};import{BufferGeometry as r3,Float32BufferAttribute as o3,MathUtils as xf,Vector2 as kx}from"three";var Hx=Math.PI*2,Ma=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:64,angle:360,innerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1},i.parameters);return e.angle=xf.clamp(e.angle,0,360),{shape:i.shape&&i.shape instanceof je?i.shape:new je,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(i){let{width:t,height:e,spikes:r,angle:o,innerRadius:n,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}=i.parameters,c=i.shape,u=t*.5,p=e*.5,d=i3(c,u,p,o*Math.PI/180,r,n);c.isClosed=!0,c.update();let f;return o===0?(f=new r3,f.setAttribute("position",new o3([],3))):f=er.create({shape:c,parameters:{subdivisions:d,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}}),Object.assign(f,{userData:{...i,type:"EllipseGeometry"}})}};function i3(i,t,e,r,o,n){if(r>=Hx)return o>30||o%4===0?(a3(i,t,e,n),Math.round(o/4)):Ux(i,r,o,t,e,n);r=Math.max(r,.001);let a={x:0,y:e},s=r+Math.PI*.5,l={x:Math.cos(s)*t,y:Math.sin(s)*e},c=Vx({px:a.x,py:a.y,cx:l.x,cy:l.y,rx:t,ry:e,largeArcFlag:r>Math.PI,sweepFlag:!0});return o>30||o%c.length===0?n3(i,a.x,a.y,c,o,t,e,n):Ux(i,r,o,t,e,n)}function n3(i,t,e,r,o,n,a,s){let l=Math.round(o/r.length);i.addPoint(Aa(t,e));for(let c=0,u=r.length;c<u;c++){let p=r[c],d=i.points[c],f=Aa(p.x,p.y);d.controls[1].position.set(p.x1,p.y1),f.controls[0].position.set(p.x2,p.y2),i.addPoint(f)}return s>0?Wx(i,n,a,s):i.addPoint(Aa(0,0)),l}function Ux(i,t,e,r,o,n){let a=-t/e;for(let s=0;s<=e;s++){let l=a*s,c=Math.sin(l)*r,u=Math.cos(l)*o;i.addPoint(Aa(c,u))}return t<Hx?n>0?Wx(i,r,o,n):i.addPoint(Aa(0,0)):(i.removePoint(i.points[i.points.length-1]),n>0&&qx(i,r,o,n)),1}function a3(i,t,e,r=0,o=0,n=0){let a=.5522847498,s=t*a,l=e*a;i.addPoint(wu(o-t,n,o-t,n-l,o-t,n+l)),i.addPoint(wu(o,n+e,o-s,n+e,o+s,n+e)),i.addPoint(wu(o+t,n,o+t,n+l,o+t,n-l)),i.addPoint(wu(o,n-e,o+s,n-e,o-s,n-e)),r>0&&qx(i,t,e,r)}function Aa(i,t){return new Gr(xf.generateUUID(),new kx(i,t))}function wu(i,t,e,r,o,n){let a=Aa(i,t);return a.controls[0].position.set(e,r),a.controls[1].position.set(o,n),a}function Wx(i,t,e,r){$x(i,t,e,r).forEach(n=>i.addPoint(n))}function qx(i,t,e,r){let o=$x(i,t,e,r),n=new je;o.forEach(a=>n.addPoint(a)),n.isClosed=!0,i.shapeHoles.push(n)}function $x(i,t,e,r){let o=r*t/100,n=o*(Math.abs(e)/Math.abs(t)),a=new kx(o/t,n/e),s=i.points.map(l=>{let c=l.clone();return c.uuid=xf.generateUUID(),c}).reverse();return s.forEach(l=>{l.position.multiply(a);let c=l.controls[0].position.clone().multiply(a),u=l.controls[1].position.clone().multiply(a);l.controls[0].position.copy(u),l.controls[1].position.copy(c)}),s}import{BufferGeometry as s3,Float32BufferAttribute as bf,Uint32BufferAttribute as l3,Vector3 as Xx}from"three";var Yx=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,revolutions:2,segments:40,pathRadius:10,pathType:0,pathSegments:30,cornerRadius:30,cornerSegments:4},i.parameters),r=Math.abs(e.width),o=Math.abs(e.height??r),n=Math.abs(e.depth??r),a=Math.abs(Math.min(r,n))/2;return{parameters:Object.assign(e,{width:r,height:o,depth:n,radius:a,segments:Math.round(e.segments),pathSegments:Math.round(e.pathSegments),cornerSegments:Math.round(e.cornerSegments)})}}static build(i){let{width:t,height:e,depth:r,radius:o,revolutions:n,segments:a,pathRadius:s,pathType:l,pathSegments:c,cornerRadius:u,cornerSegments:p}=i.parameters,d=new ol(!1,t,e,r,o,n,a,s,l,c,u,p);return Object.assign(d,{userData:{...i,type:"HelixGeometry"}})}},vf=new l3([0,0,0],1),ol=class extends s3{constructor(t=!0,e=1,r=1,o=1,n=1,a=1,s=1,l=1,c=1,u=1,p=1,d=1){if(super(),a===0)return;let f=t&&a===1;f&&(d=0),p>100&&(p=100),p===0&&(d=0);let h=()=>new Xx,m=new Xx,y=h(),b=h(),v=h(),w,O,S,T,M,g,D,E,I=h(),N=h(),_=h(),R=h(),V=h(),U=h(),B=h(),q=h(),j=r-2*l+.001,F=j/a,H=Math.ceil(s*a),W=H+1,ee=j/H,te=-j/2,Y=u+1,re=2*Math.PI/u,K=Math.PI/2/d,Z=.01,Q=Math.min((1-p/100)*l,l-Z),$=l-Q,de=0,le=2,ie=d*le+le,ce=Y*ie/le,ae=ce+Y*W,me=Math.max(0,Y*(W+ie)),[fe,he,xe]=[3,3,2].map(it=>Array(me*it).fill(0)),ye=[],C=n-l;function ne(it,Ke){let Er=Math.PI/2;g=Ke*ee,E=2*Math.PI*(g%F)/F+Er,g+=te,D=Math.sin(E)*C,M=Math.cos(E)*C,t?it.set(M,D,g):it.set(M,g,D)}ne(m,-1e-10),ne(y,0),I.copy(m),ne(m,1);let Ne=m.distanceTo(y),Ve=f?0:$+Q,_e=Ne*H+2*Ve,Pe=Q,St=_e-Ve;for(let it=0;it<=H;it++){ne(b,it),q.subVectors(b,I).normalize(),I.copy(b),U.copy(b).setComponent(+t+1,0).normalize(),B.crossVectors(q,U).normalize();let Ke=it===0,Er=it===H,Fd=Ke?3*Math.PI/2:K,jd=Ke?Pe:St,zl=Ke?Y:ae,ki=Ke?0:me-Y,ut=q.clone().multiplyScalar(Ke?-$:$).add(b),Ud=q.clone().multiplyScalar(Ke?-1:1).normalize();for(let mr=0;mr<Y;mr++){let Cs=mr*re;if(N.addVectors(m.copy(U).multiplyScalar(l*Math.cos(Cs)),y.copy(B).multiplyScalar(l*Math.sin(Cs))),_.copy(N).normalize(),Ke||Er){f||(de=ki+mr,[0,1,2].forEach(Ht=>{fe[de*3+Ht]=ut.getComponent(Ht),he[de*3+Ht]=Ud.getComponent(Ht)}),xe[de*2]=+Er,xe[de*2+1]=mr/u),y.copy(_).multiplyScalar(Q),v.addVectors(b,y);for(let Ht=0;Ht<d;Ht++){let Hi=Ht*K+Fd;R.addVectors(m.copy(q).multiplyScalar($*Math.sin(Hi)),y.copy(_).multiplyScalar($*Math.cos(Hi))),V.copy(R).normalize(),y.addVectors(v,R),R.normalize(),de=zl+Ht*Y+mr,[0,1,2].forEach(Tn=>{fe[de*3+Tn]=y.getComponent(Tn),he[de*3+Tn]=V.getComponent(Tn)});let Gl=+Ke+Math.sin(Hi);xe[de*2]=(jd+$*Gl)/_e,xe[de*2+1]=mr/u}}y.addVectors(b,N),de=ce+it*Y+mr,[0,1,2].forEach(Ht=>{fe[de*3+Ht]=y.getComponent(Ht),he[de*3+Ht]=_.getComponent(Ht)}),xe[de*2]=(Ve+it*Ne)/_e,xe[de*2+1]=mr/u}}let Me=W+2*d+le,bt=1,[wt,Ui]=[+f,Me-1];for(let it=wt;it<=Ui-1;it++){let Ke=f&&it===Ui-1;for(let Er=0;Er<Y-1;Er++)w=it*Y+Er,O=w+1,S=(Ke?Er:w)+Y,T=(Ke?Er+1:O)+Y,it===0?ye.push(O,T,S):it===Me-2?ye.push(w,O,S):ye.push(w,O,S,O,T,S)}this.setIndex(ye),this.setAttribute("position",new bf(fe,3)),this.setAttribute("normal",new bf(he,3)),this.setAttribute("uv",new bf(xe,2))}getClosedTorusIndicesForBooleanOrSubdiv(){let t=this.userData.parameters,e=Math.ceil(t.tubularSegments),r=t.radialSegments+1,o=Array.from(this.getIndex().array),n,a,s,l,c=6*(e-1)*t.radialSegments,u=e,p=u===e;for(let d=0;d<t.radialSegments;d++)n=u*r+d,a=n+1,s=(p?d:n)+r,l=(p?d+1:a)+r,o[c++]=n,o[c++]=a,o[c++]=s,o[c++]=a,o[c++]=l,o[c++]=s;return o.length=c,vf.array=o,vf.count=o.length,vf}};import{IcosahedronGeometry as c3}from"three";var Kx=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,detail:0,corner:0,cornerSides:4},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t,height:e,depth:r,detail:o,corner:n,cornerSides:a}=i.parameters,s=o===0&&n!==0?new il(t*.5,n,a):new c3(t*.5,o);return s.scale(1,e/t,r/t),Object.assign(s,{userData:{...i,type:"IcosahedronGeometry"}})}},il=class extends xi{constructor(t=1,e=.2,r=4){let o=(1+Math.sqrt(5))/2,n=[-1,o,0,1,o,0,-1,-o,0,1,-o,0,0,-1,o,0,1,o,0,-1,-o,0,1,-o,o,0,-1,o,0,1,-o,0,-1,-o,0,1],a=[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1],s="IcosahedronGeometry";super(n,a,s,t,e,r),this.type=s}static fromJSON(t){return new il(t.radius,t.corner,t.cornerSides)}};import{LatheGeometry as u3,Shape as d3}from"three";var Qx=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){(i.parameters?.points??[]).forEach(r=>{Array.isArray(r)&&(r.x=r[0],r.y=r[1])});let e=Object.assign({},t?.parameters??{width:100,segments:64,verticalSegments:64,points:[{x:0,y:-50,id:0},{x:50,y:-50,id:1},{x:50,y:50,id:2},{x:0,y:50,id:3}]},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{points:t,segments:e,verticalSegments:r}=i.parameters,o=new d3;o.moveTo(t[0].x,t[0].y),o.bezierCurveTo(t[1].x,t[1].y,t[2].x,t[2].y,t[3].x,t[3].y);let n=new u3(o.extractPoints(r).shape,e);return n.rotateZ(Math.PI),Object.assign(n,{userData:{...i,type:"LatheGeometry"}})}};import{BufferGeometry as nb,BufferGeometryLoader as P3,Vector3 as O3,BoxGeometry as ab}from"three";import{BufferGeometry as b3,Vector2 as Of,Vector3 as ib}from"three";import{Box3 as p3,BufferAttribute as nl,BufferGeometry as Zx,Color as Pf,EventDispatcher as f3,Float32BufferAttribute as Ia,Matrix3 as Jx,Matrix4 as ob,MathUtils as h3,Object3D as m3,Sphere as y3,Vector2 as dr,Vector3 as zt,Vector4 as g3}from"three";var lo=new ob,Sf=new m3,Pu=new zt,Si=class extends f3{constructor(){super(),this.uuid=h3.generateUUID(),this.name="",this.type="Geometry",this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.elementsNeedUpdate=!1,this.verticesNeedUpdate=!1,this.uvsNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.lineDistancesNeedUpdate=!1,this.groupsNeedUpdate=!1}applyMatrix4(t){let e=new Jx().getNormalMatrix(t);for(let r=0,o=this.vertices.length;r<o;r++)this.vertices[r].applyMatrix4(t);for(let r=0,o=this.faces.length;r<o;r++){let n=this.faces[r];n.normal.applyMatrix3(e).normalize();for(let a=0,s=n.vertexNormals.length;a<s;a++)n.vertexNormals[a].applyMatrix3(e).normalize()}return this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this.verticesNeedUpdate=!0,this.normalsNeedUpdate=!0,this}rotateX(t){return lo.makeRotationX(t),this.applyMatrix4(lo),this}rotateY(t){return lo.makeRotationY(t),this.applyMatrix4(lo),this}rotateZ(t){return lo.makeRotationZ(t),this.applyMatrix4(lo),this}translate(t,e,r){return lo.makeTranslation(t,e,r),this.applyMatrix4(lo),this}scale(t,e,r){return lo.makeScale(t,e,r),this.applyMatrix4(lo),this}lookAt(t){return Sf.lookAt(t),Sf.updateMatrix(),this.applyMatrix4(Sf.matrix),this}fromBufferGeometry(t){let e=this,r=t.index!==null?t.index:void 0,o=t.attributes;if(o.position===void 0)return console.error("THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion."),this;let n=o.position,a=o.normal,s=o.color,l=o.uv,c=o.uv2;c!==void 0&&(this.faceVertexUvs[1]=[]);for(let d=0;d<n.count;d++)e.vertices.push(new zt().fromBufferAttribute(n,d)),s!==void 0&&e.colors.push(new Pf().fromBufferAttribute(s,d));function u(d,f,h,m){let y=s===void 0?[]:[e.colors[d].clone(),e.colors[f].clone(),e.colors[h].clone()],b=a===void 0?[]:[new zt().fromBufferAttribute(a,d),new zt().fromBufferAttribute(a,f),new zt().fromBufferAttribute(a,h)],v=new Ea(d,f,h,b,y,m);e.faces.push(v),l!==void 0&&e.faceVertexUvs[0].push([new dr().fromBufferAttribute(l,d),new dr().fromBufferAttribute(l,f),new dr().fromBufferAttribute(l,h)]),c!==void 0&&e.faceVertexUvs[1].push([new dr().fromBufferAttribute(c,d),new dr().fromBufferAttribute(c,f),new dr().fromBufferAttribute(c,h)])}let p=t.groups;if(p.length>0)for(let d=0;d<p.length;d++){let f=p[d],h=f.start,m=f.count;for(let y=h,b=h+m;y<b;y+=3)r!==void 0?u(r.getX(y),r.getX(y+1),r.getX(y+2),f.materialIndex):u(y,y+1,y+2,f.materialIndex)}else if(r!==void 0)for(let d=0;d<r.count;d+=3)u(r.getX(d),r.getX(d+1),r.getX(d+2));else for(let d=0;d<n.count;d+=3)u(d,d+1,d+2);return this.computeFaceNormals(),t.boundingBox!==null&&(this.boundingBox=t.boundingBox.clone()),t.boundingSphere!==null&&(this.boundingSphere=t.boundingSphere.clone()),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(Pu).negate(),this.translate(Pu.x,Pu.y,Pu.z),this}normalize(){this.computeBoundingSphere();let t=this.boundingSphere.center,e=this.boundingSphere.radius,r=e===0?1:1/e,o=new ob;return o.set(r,0,0,-r*t.x,0,r,0,-r*t.y,0,0,r,-r*t.z,0,0,0,1),this.applyMatrix4(o),this}computeFaceNormals(){let t=new zt,e=new zt;for(let r=0,o=this.faces.length;r<o;r++){let n=this.faces[r],a=this.vertices[n.a],s=this.vertices[n.b],l=this.vertices[n.c];t.subVectors(l,s),e.subVectors(a,s),t.cross(e),t.normalize(),n.normal.copy(t)}}computeVertexNormals(t=!0){let e=new Array(this.vertices.length);for(let r=0,o=this.vertices.length;r<o;r++)e[r]=new zt;if(t){let r=new zt,o=new zt;for(let n=0,a=this.faces.length;n<a;n++){let s=this.faces[n],l=this.vertices[s.a],c=this.vertices[s.b],u=this.vertices[s.c];r.subVectors(u,c),o.subVectors(l,c),r.cross(o),e[s.a].add(r),e[s.b].add(r),e[s.c].add(r)}}else{this.computeFaceNormals();for(let r=0,o=this.faces.length;r<o;r++){let n=this.faces[r];e[n.a].add(n.normal),e[n.b].add(n.normal),e[n.c].add(n.normal)}}for(let r=0,o=this.vertices.length;r<o;r++)e[r].normalize();for(let r=0,o=this.faces.length;r<o;r++){let n=this.faces[r],a=n.vertexNormals;a.length===3?(a[0].copy(e[n.a]),a[1].copy(e[n.b]),a[2].copy(e[n.c])):(a[0]=e[n.a].clone(),a[1]=e[n.b].clone(),a[2]=e[n.c].clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeFlatVertexNormals(){this.computeFaceNormals();for(let t=0,e=this.faces.length;t<e;t++){let r=this.faces[t],o=r.vertexNormals;o.length===3?(o[0].copy(r.normal),o[1].copy(r.normal),o[2].copy(r.normal)):(o[0]=r.normal.clone(),o[1]=r.normal.clone(),o[2]=r.normal.clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeMorphNormals(){for(let e=0,r=this.faces.length;e<r;e++){let o=this.faces[e];o.__originalFaceNormal?o.__originalFaceNormal.copy(o.normal):o.__originalFaceNormal=o.normal.clone(),o.__originalVertexNormals||(o.__originalVertexNormals=[]);for(let n=0,a=o.vertexNormals.length;n<a;n++)o.__originalVertexNormals[n]?o.__originalVertexNormals[n].copy(o.vertexNormals[n]):o.__originalVertexNormals[n]=o.vertexNormals[n].clone()}let t=new Si;t.faces=this.faces;for(let e=0,r=this.morphTargets.length;e<r;e++){if(!this.morphNormals[e]){this.morphNormals[e]={},this.morphNormals[e].faceNormals=[],this.morphNormals[e].vertexNormals=[];let n=this.morphNormals[e].faceNormals,a=this.morphNormals[e].vertexNormals;for(let s=0,l=this.faces.length;s<l;s++){let c=new zt,u={a:new zt,b:new zt,c:new zt};n.push(c),a.push(u)}}let o=this.morphNormals[e];t.vertices=this.morphTargets[e].vertices,t.computeFaceNormals(),t.computeVertexNormals();for(let n=0,a=this.faces.length;n<a;n++){let s=this.faces[n],l=o.faceNormals[n],c=o.vertexNormals[n];l.copy(s.normal),c.a.copy(s.vertexNormals[0]),c.b.copy(s.vertexNormals[1]),c.c.copy(s.vertexNormals[2])}}for(let e=0,r=this.faces.length;e<r;e++){let o=this.faces[e];o.normal=o.__originalFaceNormal,o.vertexNormals=o.__originalVertexNormals}}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new p3),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new y3),this.boundingSphere.setFromPoints(this.vertices)}merge(t,e,r=0){if(!(t&&t.isGeometry)){console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",t);return}let o,n=this.vertices.length,a=this.vertices,s=t.vertices,l=this.faces,c=t.faces,u=this.colors,p=t.colors;e!==void 0&&(o=new Jx().getNormalMatrix(e));for(let d=0,f=s.length;d<f;d++){let m=s[d].clone();e!==void 0&&m.applyMatrix4(e),a.push(m)}for(let d=0,f=p.length;d<f;d++)u.push(p[d].clone());for(let d=0,f=c.length;d<f;d++){let h=c[d],m,y,b=h.vertexNormals,v=h.vertexColors,w=new Ea(h.a+n,h.b+n,h.c+n);w.normal.copy(h.normal),o!==void 0&&w.normal.applyMatrix3(o).normalize();for(let O=0,S=b.length;O<S;O++)m=b[O].clone(),o!==void 0&&m.applyMatrix3(o).normalize(),w.vertexNormals.push(m);w.color.copy(h.color);for(let O=0,S=v.length;O<S;O++)y=v[O],w.vertexColors.push(y.clone());w.materialIndex=h.materialIndex+r,l.push(w)}for(let d=0,f=t.faceVertexUvs.length;d<f;d++){let h=t.faceVertexUvs[d];this.faceVertexUvs[d]===void 0&&(this.faceVertexUvs[d]=[]);for(let m=0,y=h.length;m<y;m++){let b=h[m],v=[];for(let w=0,O=b.length;w<O;w++)v.push(b[w].clone());this.faceVertexUvs[d].push(v)}}}mergeMesh(t){if(!(t&&t.isMesh)){console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",t);return}t.matrixAutoUpdate&&t.updateMatrix(),this.merge(t.geometry,t.matrix)}mergeVertices(t=4){let e={},r=[],o=[],n=Math.pow(10,t);for(let l=0,c=this.vertices.length;l<c;l++){let u=this.vertices[l],p=Math.round(u.x*n)+"_"+Math.round(u.y*n)+"_"+Math.round(u.z*n);e[p]===void 0?(e[p]=l,r.push(this.vertices[l]),o[l]=r.length-1):o[l]=o[e[p]]}let a=[];for(let l=0,c=this.faces.length;l<c;l++){let u=this.faces[l];u.a=o[u.a],u.b=o[u.b],u.c=o[u.c];let p=[u.a,u.b,u.c];for(let d=0;d<3;d++)if(p[d]===p[(d+1)%3]){a.push(l);break}}for(let l=a.length-1;l>=0;l--){let c=a[l];this.faces.splice(c,1);for(let u=0,p=this.faceVertexUvs.length;u<p;u++)this.faceVertexUvs[u].splice(c,1)}let s=this.vertices.length-r.length;return this.vertices=r,s}setFromPoints(t){this.vertices=[];for(let e=0,r=t.length;e<r;e++){let o=t[e];this.vertices.push(new zt(o.x,o.y,o.z||0))}return this}sortFacesByMaterialIndex(){let t=this.faces,e=t.length;for(let l=0;l<e;l++)t[l]._id=l;function r(l,c){return l.materialIndex-c.materialIndex}t.sort(r);let o=this.faceVertexUvs[0],n=this.faceVertexUvs[1],a,s;o&&o.length===e&&(a=[]),n&&n.length===e&&(s=[]);for(let l=0;l<e;l++){let c=t[l]._id;a&&a.push(o[c]),s&&s.push(n[c])}a&&(this.faceVertexUvs[0]=a),s&&(this.faceVertexUvs[1]=s)}toJSON(){let t={metadata:{version:4.5,type:"Geometry",generator:"Geometry.toJSON"}};if(t.uuid=this.uuid,t.type=this.type,this.name!==""&&(t.name=this.name),this.parameters!==void 0){let h=this.parameters;for(let m in h)h[m]!==void 0&&(t[m]=h[m]);return t}let e=[];for(let h=0;h<this.vertices.length;h++){let m=this.vertices[h];e.push(m.x,m.y,m.z)}let r=[],o=[],n={},a=[],s={},l=[],c={};for(let h=0;h<this.faces.length;h++){let m=this.faces[h],y=!0,b=!1,v=this.faceVertexUvs[0][h]!==void 0,w=m.normal.length()>0,O=m.vertexNormals.length>0,S=m.color.r!==1||m.color.g!==1||m.color.b!==1,T=m.vertexColors.length>0,M=0;if(M=u(M,0,0),M=u(M,1,y),M=u(M,2,b),M=u(M,3,v),M=u(M,4,w),M=u(M,5,O),M=u(M,6,S),M=u(M,7,T),r.push(M),r.push(m.a,m.b,m.c),r.push(m.materialIndex),v){let g=this.faceVertexUvs[0][h];r.push(f(g[0]),f(g[1]),f(g[2]))}if(w&&r.push(p(m.normal)),O){let g=m.vertexNormals;r.push(p(g[0]),p(g[1]),p(g[2]))}if(S&&r.push(d(m.color)),T){let g=m.vertexColors;r.push(d(g[0]),d(g[1]),d(g[2]))}}function u(h,m,y){return y?h|1<<m:h&~(1<<m)}function p(h){let m=h.x.toString()+h.y.toString()+h.z.toString();return n[m]!==void 0||(n[m]=o.length/3,o.push(h.x,h.y,h.z)),n[m]}function d(h){let m=h.r.toString()+h.g.toString()+h.b.toString();return s[m]!==void 0||(s[m]=a.length,a.push(h.getHex())),s[m]}function f(h){let m=h.x.toString()+h.y.toString();return c[m]!==void 0||(c[m]=l.length/2,l.push(h.x,h.y)),c[m]}return t.data={},t.data.vertices=e,t.data.normals=o,a.length>0&&(t.data.colors=a),l.length>0&&(t.data.uvs=[l]),t.data.faces=r,t}clone(){return new Si().copy(this)}copy(t){this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.name=t.name;let e=t.vertices;for(let d=0,f=e.length;d<f;d++)this.vertices.push(e[d].clone());let r=t.colors;for(let d=0,f=r.length;d<f;d++)this.colors.push(r[d].clone());let o=t.faces;for(let d=0,f=o.length;d<f;d++)this.faces.push(o[d].clone());for(let d=0,f=t.faceVertexUvs.length;d<f;d++){let h=t.faceVertexUvs[d];this.faceVertexUvs[d]===void 0&&(this.faceVertexUvs[d]=[]);for(let m=0,y=h.length;m<y;m++){let b=h[m],v=[];for(let w=0,O=b.length;w<O;w++){let S=b[w];v.push(S.clone())}this.faceVertexUvs[d].push(v)}}let n=t.morphTargets;for(let d=0,f=n.length;d<f;d++){let h={};if(h.name=n[d].name,n[d].vertices!==void 0){h.vertices=[];for(let m=0,y=n[d].vertices.length;m<y;m++)h.vertices.push(n[d].vertices[m].clone())}if(n[d].normals!==void 0){h.normals=[];for(let m=0,y=n[d].normals.length;m<y;m++)h.normals.push(n[d].normals[m].clone())}this.morphTargets.push(h)}let a=t.morphNormals;for(let d=0,f=a.length;d<f;d++){let h={};if(a[d].vertexNormals!==void 0){h.vertexNormals=[];for(let m=0,y=a[d].vertexNormals.length;m<y;m++){let b=a[d].vertexNormals[m],v={};v.a=b.a.clone(),v.b=b.b.clone(),v.c=b.c.clone(),h.vertexNormals.push(v)}}if(a[d].faceNormals!==void 0){h.faceNormals=[];for(let m=0,y=a[d].faceNormals.length;m<y;m++)h.faceNormals.push(a[d].faceNormals[m].clone())}this.morphNormals.push(h)}let s=t.skinWeights;for(let d=0,f=s.length;d<f;d++)this.skinWeights.push(s[d].clone());let l=t.skinIndices;for(let d=0,f=l.length;d<f;d++)this.skinIndices.push(l[d].clone());let c=t.lineDistances;for(let d=0,f=c.length;d<f;d++)this.lineDistances.push(c[d]);let u=t.boundingBox;u!==null&&(this.boundingBox=u.clone());let p=t.boundingSphere;return p!==null&&(this.boundingSphere=p.clone()),this.elementsNeedUpdate=t.elementsNeedUpdate,this.verticesNeedUpdate=t.verticesNeedUpdate,this.uvsNeedUpdate=t.uvsNeedUpdate,this.normalsNeedUpdate=t.normalsNeedUpdate,this.colorsNeedUpdate=t.colorsNeedUpdate,this.lineDistancesNeedUpdate=t.lineDistancesNeedUpdate,this.groupsNeedUpdate=t.groupsNeedUpdate,this}toBufferGeometry(){let t=new wf().fromGeometry(this),e=new Zx,r=new Float32Array(t.vertices.length*3);if(e.setAttribute("position",Ou.call(new nl(r,3),t.vertices)),t.normals.length>0){let o=new Float32Array(t.normals.length*3);e.setAttribute("normal",Ou.call(new nl(o,3),t.normals))}if(t.colors.length>0){let o=new Float32Array(t.colors.length*3);e.setAttribute("color",eb.call(new nl(o,3),t.colors))}if(t.uvs.length>0){let o=new Float32Array(t.uvs.length*2);e.setAttribute("uv",tb.call(new nl(o,2),t.uvs))}if(t.uvs2.length>0){let o=new Float32Array(t.uvs2.length*2);e.setAttribute("uv2",tb.call(new nl(o,2),t.uvs2))}e.groups=t.groups;for(let o in t.morphTargets){let n=[],a=t.morphTargets[o];for(let s=0,l=a.length;s<l;s++){let c=a[s],u=new Ia(c.data.length*3,3);u.name=c.name,n.push(Ou.call(u,c.data))}e.morphAttributes[o]=n}if(t.skinIndices.length>0){let o=new Ia(t.skinIndices.length*4,4);e.setAttribute("skinIndex",rb.call(o,t.skinIndices))}if(t.skinWeights.length>0){let o=new Ia(t.skinWeights.length*4,4);e.setAttribute("skinWeight",rb.call(o,t.skinWeights))}return t.boundingSphere!==null&&(e.boundingSphere=t.boundingSphere.clone()),t.boundingBox!==null&&(e.boundingBox=t.boundingBox.clone()),e}computeTangents(){console.error("THREE.Geometry: .computeTangents() has been removed.")}computeLineDistances(){console.error("THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.")}applyMatrix(t){return console.warn("THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(t)}dispose(){this.dispatchEvent({type:"dispose"})}static createBufferGeometryFromObject(t){let e=new Zx,r=t.geometry;if(t.isPoints||t.isLine){let o=new Ia(r.vertices.length*3,3),n=new Ia(r.colors.length*3,3);if(e.setAttribute("position",Ou.call(o,r.vertices)),e.setAttribute("color",eb.call(n,r.colors)),r.lineDistances&&r.lineDistances.length===r.vertices.length){let a=new Ia(r.lineDistances.length,1);e.setAttribute("lineDistance",x3.call(a,r.lineDistances))}r.boundingSphere!==null&&(e.boundingSphere=r.boundingSphere.clone()),r.boundingBox!==null&&(e.boundingBox=r.boundingBox.clone())}else t.isMesh&&(e=r.toBufferGeometry());return e}};Si.prototype.isGeometry=!0;var wf=class{constructor(){this.vertices=[],this.normals=[],this.colors=[],this.uvs=[],this.uvs2=[],this.groups=[],this.morphTargets={},this.skinWeights=[],this.skinIndices=[],this.boundingBox=null,this.boundingSphere=null,this.verticesNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.uvsNeedUpdate=!1,this.groupsNeedUpdate=!1}computeGroups(t){let e=[],r,o,n,a=t.faces;for(o=0;o<a.length;o++){let s=a[o];s.materialIndex!==n&&(n=s.materialIndex,r!==void 0&&(r.count=o*3-r.start,e.push(r)),r={start:o*3,materialIndex:n})}r!==void 0&&(r.count=o*3-r.start,e.push(r)),this.groups=e}fromGeometry(t){let e=t.faces,r=t.vertices,o=t.faceVertexUvs,n=o[0]&&o[0].length>0,a=o[1]&&o[1].length>0,s=t.morphTargets,l=s.length,c;if(l>0){c=[];for(let b=0;b<l;b++)c[b]={name:s[b].name,data:[]};this.morphTargets.position=c}let u=t.morphNormals,p=u.length,d;if(p>0){d=[];for(let b=0;b<p;b++)d[b]={name:u[b].name,data:[]};this.morphTargets.normal=d}let f=t.skinIndices,h=t.skinWeights,m=f.length===r.length,y=h.length===r.length;r.length>0&&e.length===0&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(let b=0;b<e.length;b++){let v=e[b];this.vertices.push(r[v.a],r[v.b],r[v.c]);let w=v.vertexNormals;if(w.length===3)this.normals.push(w[0],w[1],w[2]);else{let S=v.normal;this.normals.push(S,S,S)}let O=v.vertexColors;if(O.length===3)this.colors.push(O[0],O[1],O[2]);else{let S=v.color;this.colors.push(S,S,S)}if(n===!0){let S=o[0][b];S!==void 0?this.uvs.push(S[0],S[1],S[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",b),this.uvs.push(new dr,new dr,new dr))}if(a===!0){let S=o[1][b];S!==void 0?this.uvs2.push(S[0],S[1],S[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",b),this.uvs2.push(new dr,new dr,new dr))}for(let S=0;S<l;S++){let T=s[S].vertices;c[S].data.push(T[v.a],T[v.b],T[v.c])}for(let S=0;S<p;S++){let T=u[S].vertexNormals[b];d[S].data.push(T.a,T.b,T.c)}m&&this.skinIndices.push(f[v.a],f[v.b],f[v.c]),y&&this.skinWeights.push(h[v.a],h[v.b],h[v.c])}return this.computeGroups(t),this.verticesNeedUpdate=t.verticesNeedUpdate,this.normalsNeedUpdate=t.normalsNeedUpdate,this.colorsNeedUpdate=t.colorsNeedUpdate,this.uvsNeedUpdate=t.uvsNeedUpdate,this.groupsNeedUpdate=t.groupsNeedUpdate,t.boundingSphere!==null&&(this.boundingSphere=t.boundingSphere.clone()),t.boundingBox!==null&&(this.boundingBox=t.boundingBox.clone()),this}},Ea=class{constructor(t,e,r,o,n,a=0){this.a=t,this.b=e,this.c=r,this.normal=o&&o.isVector3?o:new zt,this.vertexNormals=Array.isArray(o)?o:[],this.color=n&&n.isColor?n:new Pf,this.vertexColors=Array.isArray(n)?n:[],this.materialIndex=a}clone(){return new this.constructor().copy(this)}copy(t){this.a=t.a,this.b=t.b,this.c=t.c,this.normal.copy(t.normal),this.color.copy(t.color),this.materialIndex=t.materialIndex;for(let e=0,r=t.vertexNormals.length;e<r;e++)this.vertexNormals[e]=t.vertexNormals[e].clone();for(let e=0,r=t.vertexColors.length;e<r;e++)this.vertexColors[e]=t.vertexColors[e].clone();return this}};function x3(i){return this.array.set(i),this}function eb(i){let t=this.array,e=0;for(let r=0,o=i.length;r<o;r++){let n=i[r];n===void 0&&(console.warn("THREE.BufferAttribute.copyColorsArray(): color is undefined",r),n=new Pf),t[e++]=n.r,t[e++]=n.g,t[e++]=n.b}return this}function tb(i){let t=this.array,e=0;for(let r=0,o=i.length;r<o;r++){let n=i[r];n===void 0&&(console.warn("THREE.BufferAttribute.copyVector2sArray(): vector is undefined",r),n=new dr),t[e++]=n.x,t[e++]=n.y}return this}function Ou(i){let t=this.array,e=0;for(let r=0,o=i.length;r<o;r++){let n=i[r];n===void 0&&(console.warn("THREE.BufferAttribute.copyVector3sArray(): vector is undefined",r),n=new zt),t[e++]=n.x,t[e++]=n.y,t[e++]=n.z}return this}function rb(i){let t=this.array,e=0;for(let r=0,o=i.length;r<o;r++){let n=i[r];n===void 0&&(console.warn("THREE.BufferAttribute.copyVector4sArray(): vector is undefined",r),n=new g3),t[e++]=n.x,t[e++]=n.y,t[e++]=n.z,t[e++]=n.w}return this}var v3=["a","b","c"];function S3(i,t){switch(t){case"c":return i.c;case"b":return i.b;case"a":default:return i.a}}function Tf(i,t,e){let r=Math.min(i,t),o=Math.max(i,t),n=r+"_"+o;return e.get(n)}function Cf(i,t,e,r,o,n){let a=Math.min(i,t),s=Math.max(i,t),l=a+"_"+s,c;if(r.has(l))c=r.get(l);else{let u=e[a],p=e[s];c={a:u,b:p,newEdge:null,faces:[]},r.set(l,c)}c.faces.push(o),n[i].edges.push(c),n[t].edges.push(c)}function w3(i,t,e,r){let o,n,a;for(o=0,n=i.length;o<n;o++)e[o]={edges:[]};for(o=0,n=t.length;o<n;o++)a=t[o],Cf(a.a,a.b,i,r,a,e),Cf(a.b,a.c,i,r,a,e),Cf(a.c,a.a,i,r,a,e)}function Tu(i,t,e,r,o){i.push(new Ea(t,e,r,void 0,void 0,o))}function Na(i,t){return Math.abs(t-i)/2+Math.min(i,t)}function Cu(i,t,e,r){i.push([t.clone(),e.clone(),r.clone()])}var Au=class{constructor(t=1){this.subdivisions=t}modify(t){t instanceof b3?t=new Si().fromBufferGeometry(t):t=t.clone(),t.mergeVertices();let e=this.subdivisions;for(;e-- >0;)this._smooth(t);return t.computeFaceNormals(),t.computeVertexNormals(),t}_smooth(t){let e=new ib,r,o,n,a,s,l=t.vertices,c=t.faces,u=t.faceVertexUvs[0],p=u!==void 0&&u.length>0,d=[],f=new Map;w3(l,c,d,f);let h=[],m,y,b,v,w,O,S;for(let Z of Array.from(f.keys())){for(y=f.get(Z),b=new ib,w=3/8,O=1/8,S=y.faces.length,S!=2&&(w=.5,O=0,S!=1),b.addVectors(y.a,y.b).multiplyScalar(w),e.set(0,0,0),a=0;a<S;a++){for(v=y.faces[a],s=0;s<3&&(m=l[S3(v,v3[s])],!(m!==y.a&&m!==y.b));s++);m&&e.add(m)}e.multiplyScalar(O),b.add(e),y.newEdge=h.length,h.push(b)}let T,M,g,D,E,I,N,_=[];for(o=0,n=l.length;o<n;o++){for(I=l[o],E=d[o].edges,r=E.length,r==3?T=3/16:r>3&&(T=3/(8*r)),M=1-r*Number(T),g=T,r<=2&&(r==2?(M=3/4,g=1/8):r==1||r==0),N=I.clone().multiplyScalar(M),e.set(0,0,0),a=0;a<r;a++)D=E[a],m=D.a!==I?D.a:D.b,e.add(m);e.multiplyScalar(Number(g)),N.add(e),_.push(N)}let R=_.concat(h),V=_.length,U,B,q,j=[],F=[],H,W,ee,te,Y=new Of,re=new Of,K=new Of;for(o=0,n=c.length;o<n;o++)v=c[o],U=Number(Tf(v.a,v.b,f).newEdge)+V,B=Number(Tf(v.b,v.c,f).newEdge)+V,q=Number(Tf(v.c,v.a,f).newEdge)+V,Tu(j,U,B,q,v.materialIndex),Tu(j,v.a,U,q,v.materialIndex),Tu(j,v.b,B,U,v.materialIndex),Tu(j,v.c,q,B,v.materialIndex),p&&(H=u[o],W=H[0],ee=H[1],te=H[2],Y.set(Na(W.x,ee.x),Na(W.y,ee.y)),re.set(Na(ee.x,te.x),Na(ee.y,te.y)),K.set(Na(W.x,te.x),Na(W.y,te.y)),Cu(F,Y,re,K),Cu(F,W,Y,K),Cu(F,ee,re,Y),Cu(F,te,K,re));t.vertices=R,t.faces=j,p&&(t.faceVertexUvs[0]=F)}};var At=new O3,sb=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=i.geometry??t?.geometry??new nb().copy(new ab(100,100,100)),r;t===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(At),r={width:At.x,height:At.y,depth:At.z,subdivisions:0}):r=t.parameters;let o={...r,...i.parameters};return{parameters:{width:Math.abs(o.width),height:Math.abs(o.height),depth:Math.abs(o.depth),subdivisions:Math.abs(o.subdivisions)},geometry:e}}static build(i){let{width:t,height:e,depth:r,subdivisions:o}=i.parameters,n=i.geometry??new nb().copy(new ab(100,100,100)),a=n.userData.parameters;a===void 0?(n.computeBoundingBox(),n.boundingBox.getSize(At)):At.set(a.width,a.height,a.depth),(t!==At.x||e!==At.y||r!==At.z)&&n.scale(At.x===0?1:t/At.x,At.y===0?1:e/At.y,At.z===0?1:r/At.z);let s=n.originalGeometry;try{o>0?(s===void 0||a?.subdivisions!==o)&&(s===void 0&&(s=n),n=new Au(o).modify(s).toBufferGeometry()):(s!==void 0&&(n=s),s=void 0,n.getAttribute("normal")===void 0&&n.computeVertexNormals())}catch{s!==void 0&&(n=s),s=void 0,n.getAttribute("normal")===void 0&&n.computeVertexNormals()}return s!==void 0&&Object.assign(n,{originalGeometry:s}),delete i.geometry,Object.assign(n,{userData:{...i,type:"NonParametricGeometry"}})}static loadFromUrl(i,t,e){new P3(e).load(i,o=>{let n=this.normalizeInputs({geometry:o});o.boundingBox.getSize(At);let a=100/At.x;Object.assign(n.parameters,{width:100,height:At.y*a,depth:At.z*a}),t(this.build(n))})}};var Mu=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:3},i.parameters);return{shape:i.shape&&i.shape instanceof je?i.shape:new je,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(i){let{width:t,height:e,spikes:r,cornerRadius:o,depth:n,extrudeBevelSize:a,extrudeBevelSegments:s}=i.parameters,l=i.shape,c=t*.5,u=e*.5,p=0,d=0,f=2*Math.PI/r;for(let m=0;m<r;m++){let y=f*m,b=p+Math.sin(y)*c,v=d+Math.cos(y)*u;l.addPoint(l.createPoint(b,v))}l.isClosed=!0;for(let m=0,y=l.points.length;m<y;m++)l.points[m].roundness=o;l.roundness=o,l.update();let h=er.create({shape:l,parameters:{roundness:o,depth:n,extrudeBevelSize:a,extrudeBevelSegments:s}});return Object.assign(h,{userData:{...i,type:"PolygonGeometry"}})}};import{BufferGeometry as T3,Float32BufferAttribute as Af,Vector2 as co,Vector3 as Dt}from"three";var lb=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:4,heightSegments:1,cornerRadius:0,cornerSegments:8,openEnded:!1},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t,height:e,depth:r,radialSegments:o,heightSegments:n,openEnded:a,cornerRadius:s,cornerSegments:l}=i.parameters,c=new If(t*.5,e,o,n,a,s,l);return c.scale(1,1,r/t),Object.assign(c,{userData:{...i,type:"PyramidGeometry"}})}};function al(i,t,e){e.x=i.x*t.x,e.y=i.y,e.z=i.x*t.y}function Mf(i,t,e,r,o,n){let a=t.clone().sub(i),s=e.clone().sub(i),l=a.angleTo(s);if(a.normalize(),s.normalize(),r===o){let c=a.add(s).normalize();n.copy(i).addScaledVector(c,r/Math.sin(l/2))}else{let c=a.angleTo(s);n.copy(i),n.addScaledVector(a,o/Math.sin(c)),n.addScaledVector(s,r/Math.sin(c))}}function C3(i,t,e){let r=i.clone().sub(t),o=e.clone().sub(t);return r.projectOnVector(o),r.add(t)}var If=class extends T3{constructor(t=.5,e=1,r=4,o=1,n=!1,a=0,s=4){super(),r=Math.floor(Math.max(3,r)),o=Math.floor(o),s=Math.floor(s);let l=[],c=[],u=[],p=[],d=0,f=e/2,h=Math.PI/r,m=t*Math.cos(Math.PI/r),y=2*Math.PI/r,b=(r-2)*Math.PI/r,v=Math.PI-b,w=new Dt(0,-f,0),O=new Dt(0,f,0),S=new co(t,-f),T=new co(m,-f),M=new co(0,O.y).sub(T),g=new co(0,O.y).sub(S),D=new co(M.y,-M.x).normalize(),E=new co(g.y,-g.x).normalize(),N=t*Math.cos(Math.PI/r)*Math.tan((Math.PI-M.angle())/2)-1e-8;a=Math.min(a,N);let _;{let F=new Dt(D.x,D.y,0),H=new Dt(Math.cos(y)*F.x,F.y,Math.sin(y)*F.x);_=F.angleTo(H)}let R=a/Math.tan((Math.PI-M.angle())/2),V=a/Math.tan((Math.PI-_)/2),U=new Dt;if(!n){c.push(w.x,w.y,w.z),u.push(0,-1,0),p.push(0,0);let F=d++,H=[],W=S.clone(),ee=R/Math.cos(Math.PI/r);W.x-=ee;for(let te=0;te<r;te++){let Y=te/r*Math.PI*2+h,re=new co(Math.sin(Y),Math.cos(Y));al(W,re,U),c.push(U.x,U.y,U.z),u.push(0,-1,0),p.push(0,0),H.push(d++)}for(let te=0;te<H.length;te++)l.push(H[te],F,H[(te+1)%H.length])}let B=[];{let F=new Dt,H=new Dt,W=new Dt,ee=new Dt,te=new Dt,Y=new Dt;for(let re=0;re<r;re++){let K=re/r*Math.PI*2+h,Z=(re+.5)/r*Math.PI*2+h,Q=(re+1)/r*Math.PI*2+h,$=new co(Math.sin(K),Math.cos(K)),de=new co(Math.sin(Z),Math.cos(Z)),le=new co(Math.sin(Q),Math.cos(Q));al(S,$,H),al(S,le,W),al(D,de,F),Mf(O,H,W,V,V,ee),c.push(ee.x,ee.y,ee.z),Mf(H,O,W,V,R,te),c.push(te.x,te.y,te.z),Mf(W,H,O,R,V,Y),c.push(Y.x,Y.y,Y.z),u.push(F.x,F.y,F.z),u.push(F.x,F.y,F.z),u.push(F.x,F.y,F.z),p.push(0,0),p.push(0,0),p.push(0,0);let ie=d++,ce=d++,ae=d++;if(l.push(ie,ce,ae),a>0){{let he=H.clone().add(W).multiplyScalar(.5),xe=O.clone().sub(he).normalize(),C=w.clone().sub(he).normalize().add(xe).normalize().multiplyScalar(-1),ne=Y.clone().sub(te);q(he,ne,C,M.angle())}let me,fe;{let he=new Dt;al(E,le,he);let xe=Y.clone().add(ee).multiplyScalar(.5);xe=C3(xe,W,O);let ye=Y.clone().sub(ee);[me,fe]=q(xe,ye,he,_,ee.y)}{let he=me,xe=he.clone().setY(0).normalize(),ye=new Dt(0,-1,0),C=xe.clone().cross(ye);j(he,xe,ye,C)}B.concat(fe);{let he=M.angle(),xe=Math.PI-he,ye=O.clone();ye.y-=a/Math.sin(he-Math.PI/2);let C=new Dt,ne=[];for(let Ve=0;Ve<s;Ve++){let _e=[],Pe=Math.PI/2-xe*Ve/s,St=Math.cos(Pe),Me=Math.sin(Pe),bt=Z;for(let wt=0;wt<=Ve;wt++){let Ui=Math.cos(bt),it=Math.sin(bt);F.x=St*it,F.y=Me,F.z=St*Ui,C.copy(ye).addScaledVector(F,a),c.push(C.x,C.y,C.z),u.push(F.x,F.y,F.z),p.push(0,0),_e.push(d++),bt+=Math.PI*2/Ve/r}ne.push(_e)}fe.reverse(),ne.push(fe);let Ne=ne.length-1;for(let Ve=0;Ve<Ne;Ve++){let _e=ne[Ve],Pe=ne[Ve+1],St=_e.length-1;l.push(Pe[1],_e[0],Pe[0]);for(let Me=1;Me<=St;Me++)l.push(_e[Me],_e[Me-1],Pe[Me]),l.push(Pe[Me+1],_e[Me],Pe[Me])}}}}}this.setIndex(l),this.setAttribute("position",new Af(c,3)),this.setAttribute("normal",new Af(u,3)),this.setAttribute("uv",new Af(p,2));function q(F,H,W,ee,te){let Y=-ee/2,re=(Math.PI-ee)/2,K=H.clone().normalize().cross(W);F.addScaledVector(W,-a/Math.sin(re));let Z=new Dt,Q=new Dt,$=1,de=d,le=[];for(let ie=0;ie<=s;ie++){let ce=Y+ie/s*ee;Q.set(0,0,0),Q.addScaledVector(K,Math.sin(ce)),Q.addScaledVector(W,Math.cos(ce));for(let ae=0;ae<=$;ae++){let me=ae/$-.5;if(Z.copy(F),Z.addScaledVector(H,me),Z.addScaledVector(Q,a),te!=null){let fe=Math.max(0,Z.y-te);Z.addScaledVector(H,-fe/H.y)}c.push(Z.x,Z.y,Z.z),u.push(Q.x,Q.y,Q.z),p.push(0,0),ae===0&&le.push(d),d++}}for(let ie=0;ie<s;ie++)for(let ce=0;ce<$;ce++){let ae=de+ce+($+1)*ie,me=ae+($+1),fe=me+1,he=ae+1;l.push(ae,me,he),l.push(me,fe,he)}return[F.clone().addScaledVector(H,.5),le]}function j(F,H,W,ee){let te=Math.PI/2,Y=g.angle()-te,re=[],K=new Dt,Z=new Dt;for(let $=0;$<=s;$++){let de=[],le=$/s;for(let ie=0;ie<=$;ie++){let ae=(($?ie/$:0)-.5)*v,me=Math.cos(ae),fe=Math.sin(ae),he=Math.atan(Math.tan(Y)*me),xe=(te+he)*le,ye=Math.cos(xe),C=Math.sin(xe);K.set(0,0,0),K.addScaledVector(H,C*me),K.addScaledVector(W,ye),K.addScaledVector(ee,C*fe),Z.copy(F).addScaledVector(K,a),c.push(Z.x,Z.y,Z.z),u.push(K.x,K.y,K.z),p.push(0,0),de.push(d++)}re.push(de)}let Q=re.length-1;for(let $=0;$<Q;$++){let de=re[$],le=re[$+1],ie=de.length-1;l.push(de[0],le[1],le[0]);for(let ce=1;ce<=ie;ce++)l.push(de[ce-1],de[ce],le[ce]),l.push(de[ce],le[ce+1],le[ce])}}}};var Da=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,cornerRadius:[0,0,0,0],cornerType:1,extrudeBevelSize:0,extrudeBevelSegments:1},i.parameters),r=Object.assign(t?.ui??{enabledIndieCorners:!1},i.ui);return{shape:i.shape&&i.shape instanceof je?i.shape:new je,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)}),ui:r}}static build(i){let t=i.shape,{width:e,height:r,cornerRadius:o,cornerType:n,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}=i.parameters,c={x:e*.5,y:r*.5},u={x:-c.x,y:-c.y},p={x:c.x,y:c.y};function d(O,S,T){return S>e&&T>r?Math.min(O*e/S,O*r/T):S>e?O*e/S:T>r?O*r/T:O}let f=[];f[0]=o[0]===0?0:d(o[0],o[0]+o[3],o[0]+o[1]),f[1]=o[1]===0?0:d(o[1],o[1]+o[2],o[1]+o[0]),f[2]=o[2]===0?0:d(o[2],o[2]+o[1],o[2]+o[3]),f[3]=o[3]===0?0:d(o[3],o[3]+o[0],o[3]+o[2]);let h=u.x,m=p.x,y=p.y,b=u.y;t.addPoint(t.createPoint(h,y)),t.addPoint(t.createPoint(m,y)),t.addPoint(t.createPoint(m,b)),t.addPoint(t.createPoint(h,b)),t.isClosed=!0;let v=!0;for(let O=0,S=t.points.length;O<S;O++)t.points[O].roundness=f[O],O>0&&f[O]!==f[O-1]&&(v=!1);v&&(t.roundness=f[0]),t.useCubicForRoundedCorners=n!==1,t.update();let w=er.create({shape:t,parameters:{depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}});return Object.assign(w,{userData:{...i,type:"RectangleGeometry"}})}};import{BufferGeometry as A3,Float32BufferAttribute as M3,MathUtils as cb,SphereGeometry as I3}from"three";var ub=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:180},i.parameters);return e.thetaLength=cb.clamp(e.thetaLength,0,180),{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t=100,height:e=t,depth:r=t,widthSegments:o=64,heightSegments:n=64,phiStart:a,phiLength:s,thetaStart:l,thetaLength:c}=i.parameters,u;return c===0?(u=new A3,u.setAttribute("position",new M3([],3))):u=new I3(.5*t,o,n,a,s,l,c*cb.DEG2RAD),u.scale(1,e/t,r/t),Object.assign(u,{userData:{...i,type:"SphereGeometry"}})}};import{PlaneGeometry as E3}from"three";var db=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,widthSegments:8,heightSegments:8},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:0})}}static build(i){let{width:t=100,height:e=t,widthSegments:r=8,heightSegments:o=8}=i.parameters,n=new E3(t,e,r,o);return n.scale(1,1,1),Object.assign(n,{userData:{...i,type:"PlaneGeometry"}})}};import{BufferGeometry as N3,Float32BufferAttribute as Ef,Vector3 as D3}from"three";var pb=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,angle:90,cornerRadius:24,cornerSegments:8},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t,height:e,depth:r,angle:o,cornerRadius:n,cornerSegments:a}=i.parameters,s=new Nf(t,e,r,o,n,a);return Object.assign(s,{userData:{...i,type:"BackdropGeometry"}})}},Nf=class extends N3{constructor(t=1,e=1,r=1,o=90,n=10,a=24){super(),this.type="BackdropGeometry";let s=[],l=[],c=[],u=.001;n==0&&(a=1),a=Math.max(1,Math.floor(a)),n=Math.min(n,100),o=Math.min(180-u,o),o*=Math.PI/180;let p=[],d=Math.PI/2,f=(Z=0,Q=0,$=0)=>new D3(Z,Q,$),h=f(),m=f(),[y,b,v]=[e/2,t/2,r/2],w=-b,O=+b,[S,T,M]=[f(w,-y,+v),f(w,-y,-v),f(w,+y,-v)],g=(Z,Q=!1)=>Math.sin(Z-Math.PI/(1+ +Q)),D=(Z,Q=!1)=>Math.cos(Z-Math.PI/(1+ +Q));M.y=Math.sin(o)*e-y;let E=Math.cos(o)*e-v,I=S.z-u;o<=d?(M.z=Math.min(E,I),M.z==I&&(M.y-=(E-I)/Math.tan(d-o))):T.z=Math.min(T.z-E-v,S.z-u),h.subVectors(S,T),m.subVectors(M,T);let N=Math.min(h.length(),m.length())*n/100,_=N*Math.tan(o/2),R=N/Math.cos(o/2),V=h.clone().normalize().add(m.normalize()).setLength(R).add(T);h.set(0,g(o,!0),D(o,!0)),p.push([M,h.clone()]);let U=(Math.PI-o)/a;for(let Z=0;Z<=a;Z++){let Q=d+o+Z*U;h.set(0,Math.sin(Q)*_,Math.cos(Q)*_),h.add(V),m.set(0,g(Q),D(Q)),p.push([h.clone(),m.clone()])}p.push([S,f(0,1,0)]);let B=Math.sin(U/2)*_*2,q=p.length-1,j=p[0][0].distanceTo(p[1][0]),F=p[q-1][0].distanceTo(p[q][0]),H=j+B*a+F;p[0].push(1);for(let Z=0;Z<=a;Z++)p[Z+1].push(1-(j+Z*B)/H);p[q].push(0);let[W,ee,te]=p[0],Y,re,K;for(let Z=1;Z<p.length;Z++)[Y,re,K]=p[Z],s.push(w,W.y,W.z,w,Y.y,Y.z,O,W.y,W.z,O,W.y,W.z,w,Y.y,Y.z,O,Y.y,Y.z),l.push(0,ee.y,ee.z,0,re.y,re.z,0,ee.y,ee.z,0,ee.y,ee.z,0,re.y,re.z,0,re.y,re.z),c.push(0,te,0,K,1,te,1,te,0,K,1,K),[W,ee,te]=[Y,re,K];this.setAttribute("position",new Ef(s,3)),this.setAttribute("normal",new Ef(l,3)),this.setAttribute("uv",new Ef(c,2))}};var Iu=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,innerRadiusPercent:38.19,spikes:5,cornerRadius:0,angle:360,extrudeBevelSize:0,extrudeBevelSegments:1},i.parameters);return{shape:i.shape&&i.shape instanceof je?i.shape:new je,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(i){let{width:t,height:e,innerRadiusPercent:r,spikes:o,cornerRadius:n,angle:a,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}=i.parameters,u=i.shape,p=t*.5,d=e*.5,f=0,h=0,m=a*Math.PI/360/o,y=Math.PI/2*3*-1,b=p*r/100,v=d*r/100;if(o===3&&r===50){m=2*Math.PI/o;for(let O=0;O<o;O++){let S=m*O,T=f+Math.sin(S)*p,M=h+Math.cos(S)*d;u.addPoint(u.createPoint(T,M))}}else for(let O=0;O<o;O++){let S=f+Math.cos(y)*p,T=h+Math.sin(y)*d;u.addPoint(u.createPoint(S,T)),y+=m,S=f+Math.cos(y)*b,T=h+Math.sin(y)*v,O<=o,u.addPoint(u.createPoint(S,T)),y+=m}u.isClosed=!0;for(let O=0,S=u.points.length;O<S;O++)u.points[O].roundness=n;u.roundness=n,u.update();let w=er.create({shape:u,parameters:{roundness:n,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(w,{userData:{...i,type:"StarGeometry"}})}};import{PlaneGeometry as _3}from"three";var fb=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(i){let{width:t,height:e}=i.parameters,r=new _3(t,e);return Object.assign(r,{userData:{...i,type:"TextFrameGeometry"}})}};import{BufferGeometry as R3,Float32BufferAttribute as L3,MathUtils as B3}from"three";var hb=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:32,tubularSegments:64,arc:360,cornerRadius:30,cornerSegments:8},i.parameters),r=Math.abs(e.width),o=Math.abs(e.height??e.width);e.shapeBlendNode&&(o=r);let n=Math.round(Math.abs(e.depth??e.width*.25));return{parameters:Object.assign(e,{width:r,height:o,depth:n})}}static build(i){let{width:t,height:e,depth:r,radialSegments:o,tubularSegments:n,arc:a,cornerRadius:s,cornerSegments:l}=i.parameters,c=V3(t,e,r,t*.5,a,n,0,0,o,s,l);return c.scale(1,e/t,1),Object.assign(c,{userData:{...i,type:"TorusGeometry"}})}};function V3(i,t,e,r,o,n,a,s,l,c,u){[t,e]=[e,t],a=t/2;let p=B3.clamp(o/360,0,1);if(p===0){let d=new R3;return d.setAttribute("position",new L3([],3)),d}return p===1&&(c=0),new ol(!0,i,t,e,r,p,n,a,s,l,c,u)}import{TorusKnotGeometry as z3}from"three";var mb=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,tubularSegments:64,radialSegments:32,p:2,q:3},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width),tube:e.tube??e.width*.125})}}static build(i){let{width:t,tube:e,tubularSegments:r,radialSegments:o,p:n,q:a}=i.parameters,s=t*.5;s!==e&&(s-=e);let l=new z3(s,e,r,o,n,a);return Object.assign(l,{userData:{...i,type:"TorusKnotGeometry"}})}};var yb=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1,isRect:!1},i.parameters);return{shape:i.shape&&i.shape instanceof je?i.shape:new je,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width*(e.isRect?1:Math.sqrt(3)/2)),depth:Math.abs(e.depth??0)})}}static build(i){let{width:t=100,height:e,cornerRadius:r,depth:o,extrudeBevelSize:n,extrudeBevelSegments:a,isRect:s}=i.parameters,l=i.shape,c=t*.5,u=e*.5;s?(l.addPoint(l.createPoint(-c,u)),l.addPoint(l.createPoint(c,-u)),l.addPoint(l.createPoint(-c,-u))):(l.addPoint(l.createPoint(0,u)),l.addPoint(l.createPoint(c,-u)),l.addPoint(l.createPoint(-c,-u))),l.isClosed=!0;for(let d=0,f=l.points.length;d<f;d++)l.points[d].roundness=r;l.roundness=r,l.update();let p=er.create({shape:l,parameters:{roundness:r,depth:o,extrudeBevelSize:n,extrudeBevelSegments:a}});return Object.assign(p,{userData:{...i,type:"TriangleGeometry"}})}};import{Vector2 as vb,Vector3 as _t,Matrix3 as Q3,Matrix4 as nn,BufferGeometry as Sb,BufferAttribute as _a,MathUtils as Nu}from"three";function gb(i,t){let e=2*Math.PI;return(i%e+e)%e===(t%e+e)%e}function G3(i){return/^(rgba)?\(\s*(\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d+(?:\.\d+)?))?\s*\)$/.exec(i.toLowerCase())}function F3(i,t,e){let r,o,n,a=Math.floor(i*6),s=i*6-a,l=e*(1-t),c=e*(1-s*t),u=e*(1-(1-s)*t);switch(a%6){case 0:r=e,o=u,n=l;break;case 1:r=c,o=e,n=l;break;case 2:r=l,o=e,n=u;break;case 3:r=l,o=c,n=e;break;case 4:r=u,o=l,n=e;break;case 5:default:r=e,o=l,n=c;break}return{r:r*255,g:o*255,b:n*255}}function j3(i,t,e){i/=255,t/=255,e/=255;let r=Math.max(i,t,e),o=Math.min(i,t,e),n=r,a=r-o,s=r==0?0:a/r,l;if(r==o)l=0;else{switch(r){case i:l=(t-e)/a+(t<e?6:0);break;case t:l=(e-i)/a+2;break;case e:default:l=(i-t)/a+4;break}l/=6}return{h:l,s,v:n}}function U3(i){return i=Math.floor(i),{r:i>>16&255,g:i>>8&255,b:i&255}}function k3(i,t,e){return(i<<16)+(t<<8)+e}function H3(i,t,e){return i=Math.round(i),t=Math.round(t),e=Math.round(e),"#"+[i,t,e].map(r=>r.toString(16).padStart(2,"0")).join("").toUpperCase()}function W3(i){let t=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;i=i.replace(t,(r,o,n,a)=>String(o+o+n+n+a+a));let e=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(i);return e?{r:parseInt(e[1],16),g:parseInt(e[2],16),b:parseInt(e[3],16)}:null}var xb={parseRgba:G3,hsvToRgb:F3,rgbToHsv:j3,hexToRgb:U3,rgbToHex:k3,rgbToHexString:H3,hexStringToRgb:W3};function jo(i){return{all:i=i||new Map,on:function(t,e){var r=i.get(t);r?r.push(e):i.set(t,[e])},off:function(t,e){var r=i.get(t);r&&(e?r.splice(r.indexOf(e)>>>0,1):i.set(t,[]))},emit:function(t,e){var r=i.get(t);r&&r.slice().map(function(o){o(e)}),(r=i.get("*"))&&r.slice().map(function(o){o(t,e)})}}}var Eu=class{constructor(t,e,r){this.id=t;this.userAPI=e;this.result=void 0;this.error="null";this.isPrefetched=!1;this.isLoading=!1;this.isLoaded=!1;this.prefetchPromise=new Promise(t=>t());this.emitter=jo();this._innerCallUserAPI=async t=>{this.emitter.emit("start",{userAPIId:this.id}),this.isLoading=!0,this.isLoading=!1;try{this.result=await K3(this.userAPI,t),this.error="null",this.emitter.emit("success",{userAPIId:this.id})}catch(e){let r=e.message?.split("_:_")?.[0]?.replace("status:","")??"null";this.error=r,this.result=null,this.emitter.emit("error",{userAPIId:this.id})}this.isLoading=!1,this.isPrefetched=!0,this.isLoaded=!0};e?.integration?.type==="OpenAI"?this.result={content:""}:e.method==="GET"&&e.url!==""&&(this.prefetchPromise=this.prefetch(r)),this._debouncedCallUserAPI=this._innerCallUserAPI,this._updateDebouncedCallUserAPI(),this._debouncedPrefetch=xc(this.prefetch,1e3,{trailing:!0})}_updateDebouncedCallUserAPI(){this._debouncedCallUserAPI=this.userAPI.debounce!==void 0&&this.userAPI.debounce>0?xc(this._innerCallUserAPI,this.userAPI.debounce,{leading:!0,trailing:!0}):this._innerCallUserAPI}async prefetch(t){await this.callUserAPI(t)}async callUserAPI(t){await this._debouncedCallUserAPI(t)}update(t,e,r=!0){this.userAPI=t,this._updateDebouncedCallUserAPI(),this.userAPI.url!==""&&this.userAPI.method==="GET"&&r&&this._debouncedPrefetch(e)}retrieveValue(t){if(this.result)try{return Ze.zoom(this.result,t)}catch(e){console.error(e)}}retrieveZoomedKeyValues(t){if(this.result){let e=t&&t.length?Ze.zoom(this.result,t):this.result;if(Y3(e))return Object.entries(e);if(X3(e))return e.map((r,o)=>[o.toString(),r]);throw $3(e)?new Error("This path points to a value, use retrieveValue() instead. "+t?.join(".")):new Error("Path error"+t?.join("."))}}dispose(){}on(t,e){this.emitter.on(t,e)}off(t,e){this.emitter.off(t,e)}get autostart(){return this.userAPI.autoStart}};function q3(i){let t=new Headers;return i.headers.forEach(e=>{e.data.key!==""&&t.append(e.data.key,e.data.value)}),t}function $3(i){return typeof i=="string"||typeof i=="number"||typeof i=="boolean"||i===null}function X3(i){return Array.isArray(i)}function Y3(i){return typeof i=="object"&&i!==null}async function K3(i,t,e=new AbortController){let r,o=i.url,n=i.proxy?.enabled??!1,a;if(i.integration?.type==="OpenAI"){let l=sl(i.integration.prompt===""?[]:JSON.parse(i.integration.prompt),t),c=i.integration.behavior===""?[]:sl(JSON.parse(i.integration.behavior),t);a=`{
|
|
1
|
+
var lw=Object.create;var Hl=Object.defineProperty;var cw=Object.getOwnPropertyDescriptor;var uw=Object.getOwnPropertyNames;var dw=Object.getPrototypeOf,pw=Object.prototype.hasOwnProperty;var fw=(i,t,e)=>t in i?Hl(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e;var Ms=(i,t)=>()=>(t||i((t={exports:{}}).exports,t),t.exports),hw=(i,t)=>{for(var e in t)Hl(i,e,{get:t[e],enumerable:!0})},mw=(i,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of uw(t))!pw.call(i,o)&&o!==e&&Hl(i,o,{get:()=>t[o],enumerable:!(r=cw(t,o))||r.enumerable});return i};var Is=(i,t,e)=>(e=i!=null?lw(dw(i)):{},mw(t||!i||!i.__esModule?Hl(e,"default",{value:i,enumerable:!0}):e,i));var $i=(i,t,e)=>(fw(i,typeof t!="symbol"?t+"":t,e),e);var ix=Ms((jp,ox)=>{(function(i,t){typeof jp=="object"?ox.exports=t():typeof define=="function"&&define.amd?define(t):i.Alea=t()})(jp,function(){"use strict";return i.importState=function(e){var r=new i;return r.importState(e),r},i;function i(){return function(e){var r=0,o=0,n=0,a=1;e.length==0&&(e=[+new Date]);var s=t();r=s(" "),o=s(" "),n=s(" ");for(var l=0;l<e.length;l++)r-=s(e[l]),r<0&&(r+=1),o-=s(e[l]),o<0&&(o+=1),n-=s(e[l]),n<0&&(n+=1);s=null;var c=function(){var u=2091639*r+a*23283064365386963e-26;return r=o,o=n,n=u-(a=u|0)};return c.next=c,c.uint32=function(){return c()*4294967296},c.fract53=function(){return c()+(c()*2097152|0)*11102230246251565e-32},c.version="Alea 0.9",c.args=e,c.exportState=function(){return[r,o,n,a]},c.importState=function(u){r=+u[0]||0,o=+u[1]||0,n=+u[2]||0,a=+u[3]||0},c}(Array.prototype.slice.call(arguments))}function t(){var e=4022871197,r=function(o){o=o.toString();for(var n=0;n<o.length;n++){e+=o.charCodeAt(n);var a=.02519603282416938*e;e=a>>>0,a-=e,a*=e,e=a>>>0,a-=e,e+=a*4294967296}return(e>>>0)*23283064365386963e-26};return r.version="Mash 0.9",r}})});var ux=Ms((cu,cx)=>{(function(i,t){typeof cu=="object"&&typeof cx<"u"?t(cu):typeof define=="function"&&define.amd?define(["exports"],t):t((i=typeof globalThis<"u"?globalThis:i||self).SVDJS={})})(cu,function(i){"use strict";i.SVD=function(t,e,r,o,n){if(e=e===void 0||e,r=r===void 0||r,n=1e-64/(o=o||Math.pow(2,-52)),!t)throw new TypeError("Matrix a is not defined");var a,s,l,c,u,d,p,f,h,m,y,x,v=t[0].length,w=t.length;if(w<v)throw new TypeError("Invalid matrix: m < n");for(var O=[],S=[],T=[],M=e==="f"?w:v,g=m=p=0;g<w;g++)S[g]=new Array(M).fill(0);for(g=0;g<v;g++)T[g]=new Array(v).fill(0);var D,E=new Array(v).fill(0);for(g=0;g<w;g++)for(a=0;a<v;a++)S[g][a]=t[g][a];for(g=0;g<v;g++){for(O[g]=p,h=0,l=g+1,a=g;a<w;a++)h+=Math.pow(S[a][g],2);if(h<n)p=0;else for(f=(d=S[g][g])*(p=d<0?Math.sqrt(h):-Math.sqrt(h))-h,S[g][g]=d-p,a=l;a<v;a++){for(h=0,s=g;s<w;s++)h+=S[s][g]*S[s][a];for(d=h/f,s=g;s<w;s++)S[s][a]=S[s][a]+d*S[s][g]}for(E[g]=p,h=0,a=l;a<v;a++)h+=Math.pow(S[g][a],2);if(h<n)p=0;else{for(f=(d=S[g][g+1])*(p=d<0?Math.sqrt(h):-Math.sqrt(h))-h,S[g][g+1]=d-p,a=l;a<v;a++)O[a]=S[g][a]/f;for(a=l;a<w;a++){for(h=0,s=l;s<v;s++)h+=S[a][s]*S[g][s];for(s=l;s<v;s++)S[a][s]=S[a][s]+h*O[s]}}m<(y=Math.abs(E[g])+Math.abs(O[g]))&&(m=y)}if(r)for(g=v-1;0<=g;g--){if(p!==0){for(f=S[g][g+1]*p,a=l;a<v;a++)T[a][g]=S[g][a]/f;for(a=l;a<v;a++){for(h=0,s=l;s<v;s++)h+=S[g][s]*T[s][a];for(s=l;s<v;s++)T[s][a]=T[s][a]+h*T[s][g]}}for(a=l;a<v;a++)T[g][a]=0,T[a][g]=0;T[g][g]=1,p=O[g],l=g}if(e){if(e==="f")for(g=v;g<w;g++){for(a=v;a<w;a++)S[g][a]=0;S[g][g]=1}for(g=v-1;0<=g;g--){for(l=g+1,p=E[g],a=l;a<M;a++)S[g][a]=0;if(p!==0){for(f=S[g][g]*p,a=l;a<M;a++){for(h=0,s=l;s<w;s++)h+=S[s][g]*S[s][a];for(d=h/f,s=g;s<w;s++)S[s][a]=S[s][a]+d*S[s][g]}for(a=g;a<w;a++)S[a][g]=S[a][g]/p}else for(a=g;a<w;a++)S[a][g]=0;S[g][g]=S[g][g]+1}}for(o*=m,s=v-1;0<=s;s--)for(var I=0;I<50;I++){for(D=!1,l=s;0<=l;l--){if(Math.abs(O[l])<=o){D=!0;break}if(Math.abs(E[l-1])<=o)break}if(!D){for(u=0,c=l-(h=1),g=l;g<s+1&&(d=h*O[g],O[g]=u*O[g],!(Math.abs(d)<=o));g++)if(p=E[g],E[g]=Math.sqrt(d*d+p*p),u=p/(f=E[g]),h=-d/f,e)for(a=0;a<w;a++)y=S[a][c],x=S[a][g],S[a][c]=y*u+x*h,S[a][g]=-y*h+x*u}if(x=E[s],l===s){if(x<0&&(E[s]=-x,r))for(a=0;a<v;a++)T[a][s]=-T[a][s];break}for(m=E[l],d=(((y=E[s-1])-x)*(y+x)+((p=O[s-1])-(f=O[s]))*(p+f))/(2*f*y),p=Math.sqrt(d*d+1),d=((m-x)*(m+x)+f*(y/(d<0?d-p:d+p)-f))/m,g=l+(h=u=1);g<s+1;g++){if(p=O[g],y=E[g],f=h*p,p*=u,x=Math.sqrt(d*d+f*f),d=m*(u=d/(O[g-1]=x))+p*(h=f/x),p=-m*h+p*u,f=y*h,y*=u,r)for(a=0;a<v;a++)m=T[a][g-1],x=T[a][g],T[a][g-1]=m*u+x*h,T[a][g]=-m*h+x*u;if(x=Math.sqrt(d*d+f*f),d=(u=d/(E[g-1]=x))*p+(h=f/x)*y,m=-h*p+u*y,e)for(a=0;a<w;a++)y=S[a][g-1],x=S[a][g],S[a][g-1]=y*u+x*h,S[a][g]=-y*h+x*u}O[l]=0,O[s]=d,E[s]=m}for(g=0;g<v;g++)E[g]<o&&(E[g]=0);return{u:S,q:E,v:T}},i.VERSION="1.1.1",Object.defineProperty(i,"__esModule",{value:!0})})});var C1=Ms((tce,T1)=>{"use strict";function s_(i,t){function e(){this.constructor=i}e.prototype=t.prototype,i.prototype=new e}function wn(i,t,e,r){this.message=i,this.expected=t,this.found=e,this.location=r,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,wn)}s_(wn,Error);wn.buildMessage=function(i,t){var e={literal:function(c){return'"'+o(c.text)+'"'},class:function(c){var u="",d;for(d=0;d<c.parts.length;d++)u+=c.parts[d]instanceof Array?n(c.parts[d][0])+"-"+n(c.parts[d][1]):n(c.parts[d]);return"["+(c.inverted?"^":"")+u+"]"},any:function(c){return"any character"},end:function(c){return"end of input"},other:function(c){return c.description}};function r(c){return c.charCodeAt(0).toString(16).toUpperCase()}function o(c){return c.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(u){return"\\x0"+r(u)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(u){return"\\x"+r(u)})}function n(c){return c.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replace(/\^/g,"\\^").replace(/-/g,"\\-").replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(u){return"\\x0"+r(u)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(u){return"\\x"+r(u)})}function a(c){return e[c.type](c)}function s(c){var u=new Array(c.length),d,p;for(d=0;d<c.length;d++)u[d]=a(c[d]);if(u.sort(),u.length>0){for(d=1,p=1;d<u.length;d++)u[d-1]!==u[d]&&(u[p]=u[d],p++);u.length=p}switch(u.length){case 1:return u[0];case 2:return u[0]+" or "+u[1];default:return u.slice(0,-1).join(", ")+", or "+u[u.length-1]}}function l(c){return c?'"'+o(c)+'"':"end of input"}return"Expected "+s(i)+" but "+l(t)+" found."};function l_(i,t){t=t!==void 0?t:{};var e={},r={svg_path:As},o=As,n=function(b){if(!b)return[];for(var P=[],L=0;L<b.length;L++)P=P.concat.apply(P,b[L]);var A=P[0];return A&&A.code=="m"&&(delete A.relative,A.code="M"),P},a=function(b,P){return sw(b,P)},s=/^[Mm]/,l=Ke(["M","m"],!1,!1),c=function(b,P,L){var A=Mn(b,[P]);return L&&(A=A.concat(Mn(b=="M"?"L":"l",L[1]))),A},u=/^[Zz]/,d=Ke(["Z","z"],!1,!1),p=function(){return Mn("Z")},f=/^[Ll]/,h=Ke(["L","l"],!1,!1),m=function(b,P){return Mn(b,P)},y=/^[Hh]/,x=Ke(["H","h"],!1,!1),v=function(b,P){return Mn(b,P.map(function(L){return{x:L}}))},w=/^[Vv]/,O=Ke(["V","v"],!1,!1),S=function(b,P){return Mn(b,P.map(function(L){return{y:L}}))},T=/^[Cc]/,M=Ke(["C","c"],!1,!1),g=function(b,P,L){return{x1:b.x,y1:b.y,x2:P.x,y2:P.y,x:L.x,y:L.y}},D=/^[Ss]/,E=Ke(["S","s"],!1,!1),I=function(b,P){return{x2:b.x,y2:b.y,x:P.x,y:P.y}},N=/^[Qq]/,_=Ke(["Q","q"],!1,!1),R=function(b,P){return{x1:b.x,y1:b.y,x:P.x,y:P.y}},V=/^[Tt]/,U=Ke(["T","t"],!1,!1),B=/^[Aa]/,q=Ke(["A","a"],!1,!1),j=function(b,P,L,A,z,oe){return{rx:b,ry:P,xAxisRotation:L,largeArc:A,sweep:z,x:oe.x,y:oe.y}},F=function(b,P){return{x:b,y:P}},H=function(b){return b*1},W=function(b){return b.join("")*1},ee=/^[01]/,te=Ke(["0","1"],!1,!1),Y=function(b){return b=="1"},re=function(){return""},K=",",Z=it(",",!1),Q=function(b){return b.join("")},$=".",de=it(".",!1),le=/^[eE]/,ie=Ke(["e","E"],!1,!1),ce=/^[+\-]/,ae=Ke(["+","-"],!1,!1),me=/^[0-9]/,fe=Ke([["0","9"]],!1,!1),he=function(b){return b.join("")},xe=/^[ \t\n\r]/,ye=Ke([" "," ",`
|
|
2
|
+
`,"\r"],!1,!1),C=0,ne=0,Ne=[{line:1,column:1}],Ve=0,_e=[],Pe=0,St;if("startRule"in t){if(!(t.startRule in r))throw new Error(`Can't start parsing from rule "`+t.startRule+'".');o=r[t.startRule]}function Me(){return i.substring(ne,C)}function bt(){return Hi(ne,C)}function wt(b,P){throw P=P!==void 0?P:Hi(ne,C),yr([Ud(b)],i.substring(ne,C),P)}function ki(b,P){throw P=P!==void 0?P:Hi(ne,C),kd(b,P)}function it(b,P){return{type:"literal",text:b,ignoreCase:P}}function Ke(b,P,L){return{type:"class",parts:b,inverted:P,ignoreCase:L}}function Nr(){return{type:"any"}}function jd(){return{type:"end"}}function Ud(b){return{type:"other",description:b}}function Gl(b){var P=Ne[b],L;if(P)return P;for(L=b-1;!Ne[L];)L--;for(P=Ne[L],P={line:P.line,column:P.column};L<b;)i.charCodeAt(L)===10?(P.line++,P.column=1):P.column++,L++;return Ne[b]=P,P}function Hi(b,P){var L=Gl(b),A=Gl(P);return{start:{offset:b,line:L.line,column:L.column},end:{offset:P,line:A.line,column:A.column}}}function ut(b){C<Ve||(C>Ve&&(Ve=C,_e=[]),_e.push(b))}function kd(b,P){return new wn(b,null,null,P)}function yr(b,P,L){return new wn(wn.buildMessage(b,P),b,P,L)}function As(){var b,P,L,A,z;for(b=C,P=[],L=ze();L!==e;)P.push(L),L=ze();if(P!==e)if(L=Wt(),L===e&&(L=null),L!==e){for(A=[],z=ze();z!==e;)A.push(z),z=ze();A!==e?(ne=b,P=n(L),b=P):(C=b,b=e)}else C=b,b=e;else C=b,b=e;return b}function Wt(){var b,P,L,A,z,oe;if(b=C,P=Wi(),P!==e){for(L=[],A=C,z=[],oe=ze();oe!==e;)z.push(oe),oe=ze();for(z!==e?(oe=Wi(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);A!==e;){for(L.push(A),A=C,z=[],oe=ze();oe!==e;)z.push(oe),oe=ze();z!==e?(oe=Wi(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e)}L!==e?(ne=b,P=a(P,L),b=P):(C=b,b=e)}else C=b,b=e;return b}function Wi(){var b,P,L,A,z,oe;if(b=C,P=Cn(),P!==e){for(L=[],A=C,z=[],oe=ze();oe!==e;)z.push(oe),oe=ze();for(z!==e?(oe=Fl(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);A!==e;){for(L.push(A),A=C,z=[],oe=ze();oe!==e;)z.push(oe),oe=ze();z!==e?(oe=Fl(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e)}L!==e?(ne=b,P=a(P,L),b=P):(C=b,b=e)}else C=b,b=e;return b}function Fl(){var b;return b=qS(),b===e&&(b=$S(),b===e&&(b=XS(),b===e&&(b=YS(),b===e&&(b=KS(),b===e&&(b=ZS(),b===e&&(b=ew(),b===e&&(b=rw(),b===e&&(b=iw())))))))),b}function Cn(){var b,P,L,A,z,oe,In;if(b=C,s.test(i.charAt(C))?(P=i.charAt(C),C++):(P=e,Pe===0&&ut(l)),P!==e){for(L=[],A=ze();A!==e;)L.push(A),A=ze();L!==e?(A=$t(),A!==e?(z=C,oe=tt(),oe===e&&(oe=null),oe!==e?(In=um(),In!==e?(oe=[oe,In],z=oe):(C=z,z=e)):(C=z,z=e),z===e&&(z=null),z!==e?(ne=b,P=c(P,A,z),b=P):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function qS(){var b,P;return b=C,u.test(i.charAt(C))?(P=i.charAt(C),C++):(P=e,Pe===0&&ut(d)),P!==e&&(ne=b,P=p()),b=P,b}function $S(){var b,P,L,A;if(b=C,f.test(i.charAt(C))?(P=i.charAt(C),C++):(P=e,Pe===0&&ut(h)),P!==e){for(L=[],A=ze();A!==e;)L.push(A),A=ze();L!==e?(A=um(),A!==e?(ne=b,P=m(P,A),b=P):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function um(){var b,P,L,A,z,oe;if(b=C,P=$t(),P!==e){for(L=[],A=C,z=tt(),z===e&&(z=null),z!==e?(oe=$t(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);A!==e;)L.push(A),A=C,z=tt(),z===e&&(z=null),z!==e?(oe=$t(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);L!==e?(ne=b,P=a(P,L),b=P):(C=b,b=e)}else C=b,b=e;return b}function XS(){var b,P,L,A;if(b=C,y.test(i.charAt(C))?(P=i.charAt(C),C++):(P=e,Pe===0&&ut(x)),P!==e){for(L=[],A=ze();A!==e;)L.push(A),A=ze();L!==e?(A=dm(),A!==e?(ne=b,P=v(P,A),b=P):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function dm(){var b,P,L,A,z,oe;if(b=C,P=An(),P!==e){for(L=[],A=C,z=tt(),z===e&&(z=null),z!==e?(oe=An(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);A!==e;)L.push(A),A=C,z=tt(),z===e&&(z=null),z!==e?(oe=An(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);L!==e?(ne=b,P=a(P,L),b=P):(C=b,b=e)}else C=b,b=e;return b}function YS(){var b,P,L,A;if(b=C,w.test(i.charAt(C))?(P=i.charAt(C),C++):(P=e,Pe===0&&ut(O)),P!==e){for(L=[],A=ze();A!==e;)L.push(A),A=ze();L!==e?(A=dm(),A!==e?(ne=b,P=S(P,A),b=P):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function KS(){var b,P,L,A;if(b=C,T.test(i.charAt(C))?(P=i.charAt(C),C++):(P=e,Pe===0&&ut(M)),P!==e){for(L=[],A=ze();A!==e;)L.push(A),A=ze();L!==e?(A=QS(),A!==e?(ne=b,P=m(P,A),b=P):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function QS(){var b,P,L,A,z,oe;if(b=C,P=Hd(),P!==e){for(L=[],A=C,z=tt(),z===e&&(z=null),z!==e?(oe=Hd(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);A!==e;)L.push(A),A=C,z=tt(),z===e&&(z=null),z!==e?(oe=Hd(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);L!==e?(ne=b,P=a(P,L),b=P):(C=b,b=e)}else C=b,b=e;return b}function Hd(){var b,P,L,A,z,oe;return b=C,P=$t(),P!==e?(L=tt(),L===e&&(L=null),L!==e?(A=$t(),A!==e?(z=tt(),z===e&&(z=null),z!==e?(oe=$t(),oe!==e?(ne=b,P=g(P,A,oe),b=P):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e),b}function ZS(){var b,P,L,A;if(b=C,D.test(i.charAt(C))?(P=i.charAt(C),C++):(P=e,Pe===0&&ut(E)),P!==e){for(L=[],A=ze();A!==e;)L.push(A),A=ze();L!==e?(A=JS(),A!==e?(ne=b,P=m(P,A),b=P):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function JS(){var b,P,L,A,z,oe;if(b=C,P=Wd(),P!==e){for(L=[],A=C,z=tt(),z===e&&(z=null),z!==e?(oe=Wd(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);A!==e;)L.push(A),A=C,z=tt(),z===e&&(z=null),z!==e?(oe=Wd(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);L!==e?(ne=b,P=a(P,L),b=P):(C=b,b=e)}else C=b,b=e;return b}function Wd(){var b,P,L,A;return b=C,P=$t(),P!==e?(L=tt(),L===e&&(L=null),L!==e?(A=$t(),A!==e?(ne=b,P=I(P,A),b=P):(C=b,b=e)):(C=b,b=e)):(C=b,b=e),b}function ew(){var b,P,L,A;if(b=C,N.test(i.charAt(C))?(P=i.charAt(C),C++):(P=e,Pe===0&&ut(_)),P!==e){for(L=[],A=ze();A!==e;)L.push(A),A=ze();L!==e?(A=tw(),A!==e?(ne=b,P=m(P,A),b=P):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function tw(){var b,P,L,A,z,oe;if(b=C,P=qd(),P!==e){for(L=[],A=C,z=tt(),z===e&&(z=null),z!==e?(oe=qd(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);A!==e;)L.push(A),A=C,z=tt(),z===e&&(z=null),z!==e?(oe=qd(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);L!==e?(ne=b,P=a(P,L),b=P):(C=b,b=e)}else C=b,b=e;return b}function qd(){var b,P,L,A;return b=C,P=$t(),P!==e?(L=tt(),L===e&&(L=null),L!==e?(A=$t(),A!==e?(ne=b,P=R(P,A),b=P):(C=b,b=e)):(C=b,b=e)):(C=b,b=e),b}function rw(){var b,P,L,A;if(b=C,V.test(i.charAt(C))?(P=i.charAt(C),C++):(P=e,Pe===0&&ut(U)),P!==e){for(L=[],A=ze();A!==e;)L.push(A),A=ze();L!==e?(A=ow(),A!==e?(ne=b,P=m(P,A),b=P):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function ow(){var b,P,L,A,z,oe;if(b=C,P=$t(),P!==e){for(L=[],A=C,z=tt(),z===e&&(z=null),z!==e?(oe=$t(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);A!==e;)L.push(A),A=C,z=tt(),z===e&&(z=null),z!==e?(oe=$t(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);L!==e?(ne=b,P=a(P,L),b=P):(C=b,b=e)}else C=b,b=e;return b}function iw(){var b,P,L,A;if(b=C,B.test(i.charAt(C))?(P=i.charAt(C),C++):(P=e,Pe===0&&ut(q)),P!==e){for(L=[],A=ze();A!==e;)L.push(A),A=ze();L!==e?(A=nw(),A!==e?(ne=b,P=m(P,A),b=P):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function nw(){var b,P,L,A,z,oe;if(b=C,P=$d(),P!==e){for(L=[],A=C,z=tt(),z===e&&(z=null),z!==e?(oe=$d(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);A!==e;)L.push(A),A=C,z=tt(),z===e&&(z=null),z!==e?(oe=$d(),oe!==e?(z=[z,oe],A=z):(C=A,A=e)):(C=A,A=e);L!==e?(ne=b,P=a(P,L),b=P):(C=b,b=e)}else C=b,b=e;return b}function $d(){var b,P,L,A,z,oe,In,Yd,Ul,Kd,kl,Qd;return b=C,P=pm(),P!==e?(L=tt(),L===e&&(L=null),L!==e?(A=pm(),A!==e?(z=tt(),z===e&&(z=null),z!==e?(oe=An(),oe!==e?(In=tt(),In!==e?(Yd=fm(),Yd!==e?(Ul=tt(),Ul===e&&(Ul=null),Ul!==e?(Kd=fm(),Kd!==e?(kl=tt(),kl===e&&(kl=null),kl!==e?(Qd=$t(),Qd!==e?(ne=b,P=j(P,A,oe,Yd,Kd,Qd),b=P):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e),b}function $t(){var b,P,L,A;return b=C,P=An(),P!==e?(L=tt(),L===e&&(L=null),L!==e?(A=An(),A!==e?(ne=b,P=F(P,A),b=P):(C=b,b=e)):(C=b,b=e)):(C=b,b=e),b}function pm(){var b,P;return b=C,P=mm(),P===e&&(P=qi()),P!==e&&(ne=b,P=H(P)),b=P,b}function An(){var b,P,L,A;return b=C,P=C,L=Xd(),L===e&&(L=null),L!==e?(A=mm(),A!==e?(L=[L,A],P=L):(C=P,P=e)):(C=P,P=e),P===e&&(P=C,L=Xd(),L===e&&(L=null),L!==e?(A=qi(),A!==e?(L=[L,A],P=L):(C=P,P=e)):(C=P,P=e)),P!==e&&(ne=b,P=W(P)),b=P,b}function fm(){var b,P;return b=C,ee.test(i.charAt(C))?(P=i.charAt(C),C++):(P=e,Pe===0&&ut(te)),P!==e&&(ne=b,P=Y(P)),b=P,b}function tt(){var b,P,L,A,z;if(b=C,P=[],L=ze(),L!==e)for(;L!==e;)P.push(L),L=ze();else P=e;if(P!==e)if(L=hm(),L===e&&(L=null),L!==e){for(A=[],z=ze();z!==e;)A.push(z),z=ze();A!==e?(P=[P,L,A],b=P):(C=b,b=e)}else C=b,b=e;else C=b,b=e;if(b===e){if(b=C,P=C,L=hm(),L!==e){for(A=[],z=ze();z!==e;)A.push(z),z=ze();A!==e?(L=[L,A],P=L):(C=P,P=e)}else C=P,P=e;P!==e&&(ne=b,P=re()),b=P}return b}function hm(){var b;return i.charCodeAt(C)===44?(b=K,C++):(b=e,Pe===0&&ut(Z)),b}function mm(){var b,P,L,A;return b=C,P=C,L=aw(),L!==e?(A=ym(),A===e&&(A=null),A!==e?(L=[L,A],P=L):(C=P,P=e)):(C=P,P=e),P===e&&(P=C,L=qi(),L!==e?(A=ym(),A!==e?(L=[L,A],P=L):(C=P,P=e)):(C=P,P=e)),P!==e&&(ne=b,P=Q(P)),b=P,b}function aw(){var b,P,L,A,z;return b=C,P=C,L=qi(),L===e&&(L=null),L!==e?(i.charCodeAt(C)===46?(A=$,C++):(A=e,Pe===0&&ut(de)),A!==e?(z=qi(),z!==e?(L=[L,A,z],P=L):(C=P,P=e)):(C=P,P=e)):(C=P,P=e),P===e&&(P=C,L=qi(),L!==e?(i.charCodeAt(C)===46?(A=$,C++):(A=e,Pe===0&&ut(de)),A!==e?(L=[L,A],P=L):(C=P,P=e)):(C=P,P=e)),P!==e&&(ne=b,P=Q(P)),b=P,b}function ym(){var b,P,L,A,z;return b=C,P=C,le.test(i.charAt(C))?(L=i.charAt(C),C++):(L=e,Pe===0&&ut(ie)),L!==e?(A=Xd(),A===e&&(A=null),A!==e?(z=qi(),z!==e?(L=[L,A,z],P=L):(C=P,P=e)):(C=P,P=e)):(C=P,P=e),P!==e&&(ne=b,P=Q(P)),b=P,b}function Xd(){var b;return ce.test(i.charAt(C))?(b=i.charAt(C),C++):(b=e,Pe===0&&ut(ae)),b}function qi(){var b,P,L;if(b=C,P=[],me.test(i.charAt(C))?(L=i.charAt(C),C++):(L=e,Pe===0&&ut(fe)),L!==e)for(;L!==e;)P.push(L),me.test(i.charAt(C))?(L=i.charAt(C),C++):(L=e,Pe===0&&ut(fe));else P=e;return P!==e&&(ne=b,P=he(P)),b=P,b}function ze(){var b,P;return b=C,xe.test(i.charAt(C))?(P=i.charAt(C),C++):(P=e,Pe===0&&ut(ye)),P!==e&&(ne=b,P=re()),b=P,b}function sw(b,P){if(!P)return[b];for(var L=[b],A=0,z=P.length;A<z;A++)L[A+1]=P[A][1];return L}var jl={m:"moveto",l:"lineto",h:"horizontal lineto",v:"vertical lineto",c:"curveto",s:"smooth curveto",q:"quadratic curveto",t:"smooth quadratic curveto",a:"elliptical arc",z:"closepath"};for(var gm in jl)jl[gm.toUpperCase()]=jl[gm];function Mn(b,P){P||(P=[{}]);for(var L=P.length;L--;){var A={code:b,command:jl[b]};b==b.toLowerCase()&&(A.relative=!0);for(var z in P[L])A[z]=P[L][z];P[L]=A}return P}if(St=o(),St!==e&&C===i.length)return St;throw St!==e&&C<i.length&&ut(jd()),yr(_e,Ve<i.length?i.charAt(Ve):null,Ve<i.length?Hi(Ve,Ve+1):Hi(Ve,Ve))}T1.exports={SyntaxError:wn,parse:l_}});var Vh=Ms((rce,A1)=>{var bd=C1().parse;bd.parseSVG=bd;bd.makeAbsolute=c_;A1.exports=bd;function c_(i){var t,e={x:0,y:0},r={x:"x0",y:"y0",x1:"x0",y1:"y0",x2:"x0",y2:"y0"};return i.forEach(function(o){o.command==="moveto"&&(t=o),o.x0=e.x,o.y0=e.y;for(var n in r)n in o&&(o[n]+=o.relative?o[r[n]]:0);"x"in o||(o.x=e.x),"y"in o||(o.y=e.y),o.relative=!1,o.code=o.code.toUpperCase(),o.command=="closepath"&&(o.x=t.x,o.y=t.y),e=o}),i}});var kS=Ms((Pye,US)=>{US.exports=function(t,e){for(var r=t.split("."),o=e.split("."),n=0;n<3;n++){var a=Number(r[n]),s=Number(o[n]);if(a>s)return 1;if(s>a)return-1;if(!isNaN(a)&&isNaN(s))return 1;if(isNaN(a)&&!isNaN(s))return-1}return 0}});import{FileLoader as dL,Loader as pL}from"three";function Wl(i){for(let t of Object.keys(i))i[t]===void 0&&delete i[t];return i}function Pt(i,t){return Object.setPrototypeOf(i,t),i}function ql(i){return Array.isArray(i)?i:[i]}function $l(i,t){let e=0;for(;e<i.length&&e<t.length;){if(i[e]<t[e])return-1;if(i[e]>t[e])return 1;e+=1}return e!==t.length?-1:e!==i.length?1:0}var yw=typeof global=="object"&&global&&global.Object===Object&&global,Xl=yw;var gw=typeof self=="object"&&self&&self.Object===Object&&self,xw=Xl||gw||Function("return this")(),dt=xw;var bw=dt.Symbol,Et=bw;var xm=Object.prototype,vw=xm.hasOwnProperty,Sw=xm.toString,Es=Et?Et.toStringTag:void 0;function ww(i){var t=vw.call(i,Es),e=i[Es];try{i[Es]=void 0;var r=!0}catch{}var o=Sw.call(i);return r&&(t?i[Es]=e:delete i[Es]),o}var bm=ww;var Pw=Object.prototype,Ow=Pw.toString;function Tw(i){return Ow.call(i)}var vm=Tw;var Cw="[object Null]",Aw="[object Undefined]",Sm=Et?Et.toStringTag:void 0;function Mw(i){return i==null?i===void 0?Aw:Cw:Sm&&Sm in Object(i)?bm(i):vm(i)}var cr=Mw;function Iw(i){return i!=null&&typeof i=="object"}var zt=Iw;var Ew="[object Symbol]";function Nw(i){return typeof i=="symbol"||zt(i)&&cr(i)==Ew}var ti=Nw;function Dw(i,t){for(var e=-1,r=i==null?0:i.length,o=Array(r);++e<r;)o[e]=t(i[e],e,i);return o}var Yl=Dw;var _w=Array.isArray,pt=_w;var Rw=1/0,wm=Et?Et.prototype:void 0,Pm=wm?wm.toString:void 0;function Om(i){if(typeof i=="string")return i;if(pt(i))return Yl(i,Om)+"";if(ti(i))return Pm?Pm.call(i):"";var t=i+"";return t=="0"&&1/i==-Rw?"-0":t}var Tm=Om;var Lw=/\s/;function Bw(i){for(var t=i.length;t--&&Lw.test(i.charAt(t)););return t}var Cm=Bw;var Vw=/^\s+/;function zw(i){return i&&i.slice(0,Cm(i)+1).replace(Vw,"")}var Am=zw;function Gw(i){var t=typeof i;return i!=null&&(t=="object"||t=="function")}var ft=Gw;var Mm=0/0,Fw=/^[-+]0x[0-9a-f]+$/i,jw=/^0b[01]+$/i,Uw=/^0o[0-7]+$/i,kw=parseInt;function Hw(i){if(typeof i=="number")return i;if(ti(i))return Mm;if(ft(i)){var t=typeof i.valueOf=="function"?i.valueOf():i;i=ft(t)?t+"":t}if(typeof i!="string")return i===0?i:+i;i=Am(i);var e=jw.test(i);return e||Uw.test(i)?kw(i.slice(2),e?2:8):Fw.test(i)?Mm:+i}var Zd=Hw;function Ww(i){return i}var Im=Ww;var qw="[object AsyncFunction]",$w="[object Function]",Xw="[object GeneratorFunction]",Yw="[object Proxy]";function Kw(i){if(!ft(i))return!1;var t=cr(i);return t==$w||t==Xw||t==qw||t==Yw}var Kl=Kw;var Qw=dt["__core-js_shared__"],Ql=Qw;var Em=function(){var i=/[^.]+$/.exec(Ql&&Ql.keys&&Ql.keys.IE_PROTO||"");return i?"Symbol(src)_1."+i:""}();function Zw(i){return!!Em&&Em in i}var Nm=Zw;var Jw=Function.prototype,e2=Jw.toString;function t2(i){if(i!=null){try{return e2.call(i)}catch{}try{return i+""}catch{}}return""}var Co=t2;var r2=/[\\^$.*+?()[\]{}|]/g,o2=/^\[object .+?Constructor\]$/,i2=Function.prototype,n2=Object.prototype,a2=i2.toString,s2=n2.hasOwnProperty,l2=RegExp("^"+a2.call(s2).replace(r2,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function c2(i){if(!ft(i)||Nm(i))return!1;var t=Kl(i)?l2:o2;return t.test(Co(i))}var Dm=c2;function u2(i,t){return i?.[t]}var _m=u2;function d2(i,t){var e=_m(i,t);return Dm(e)?e:void 0}var Jt=d2;var p2=Jt(dt,"WeakMap"),Zl=p2;var Rm=Object.create,f2=function(){function i(){}return function(t){if(!ft(t))return{};if(Rm)return Rm(t);i.prototype=t;var e=new i;return i.prototype=void 0,e}}(),Lm=f2;function h2(i,t,e){switch(e.length){case 0:return i.call(t);case 1:return i.call(t,e[0]);case 2:return i.call(t,e[0],e[1]);case 3:return i.call(t,e[0],e[1],e[2])}return i.apply(t,e)}var Bm=h2;function m2(i,t){var e=-1,r=i.length;for(t||(t=Array(r));++e<r;)t[e]=i[e];return t}var Vm=m2;var y2=800,g2=16,x2=Date.now;function b2(i){var t=0,e=0;return function(){var r=x2(),o=g2-(r-e);if(e=r,o>0){if(++t>=y2)return arguments[0]}else t=0;return i.apply(void 0,arguments)}}var zm=b2;function v2(i){return function(){return i}}var Gm=v2;var S2=function(){try{var i=Jt(Object,"defineProperty");return i({},"",{}),i}catch{}}(),En=S2;var w2=En?function(i,t){return En(i,"toString",{configurable:!0,enumerable:!1,value:Gm(t),writable:!0})}:Im,Fm=w2;var P2=zm(Fm),jm=P2;function O2(i,t){for(var e=-1,r=i==null?0:i.length;++e<r&&t(i[e],e,i)!==!1;);return i}var Um=O2;var T2=9007199254740991,C2=/^(?:0|[1-9]\d*)$/;function A2(i,t){var e=typeof i;return t=t??T2,!!t&&(e=="number"||e!="symbol"&&C2.test(i))&&i>-1&&i%1==0&&i<t}var Nn=A2;function M2(i,t,e){t=="__proto__"&&En?En(i,t,{configurable:!0,enumerable:!0,value:e,writable:!0}):i[t]=e}var Jl=M2;function I2(i,t){return i===t||i!==i&&t!==t}var Dn=I2;var E2=Object.prototype,N2=E2.hasOwnProperty;function D2(i,t,e){var r=i[t];(!(N2.call(i,t)&&Dn(r,e))||e===void 0&&!(t in i))&&Jl(i,t,e)}var _n=D2;function _2(i,t,e,r){var o=!e;e||(e={});for(var n=-1,a=t.length;++n<a;){var s=t[n],l=r?r(e[s],i[s],s,e,i):void 0;l===void 0&&(l=i[s]),o?Jl(e,s,l):_n(e,s,l)}return e}var Kr=_2;var km=Math.max;function R2(i,t,e){return t=km(t===void 0?i.length-1:t,0),function(){for(var r=arguments,o=-1,n=km(r.length-t,0),a=Array(n);++o<n;)a[o]=r[t+o];o=-1;for(var s=Array(t+1);++o<t;)s[o]=r[o];return s[t]=e(a),Bm(i,this,s)}}var Hm=R2;var L2=9007199254740991;function B2(i){return typeof i=="number"&&i>-1&&i%1==0&&i<=L2}var Rn=B2;function V2(i){return i!=null&&Rn(i.length)&&!Kl(i)}var ec=V2;var z2=Object.prototype;function G2(i){var t=i&&i.constructor,e=typeof t=="function"&&t.prototype||z2;return i===e}var Ln=G2;function F2(i,t){for(var e=-1,r=Array(i);++e<i;)r[e]=t(e);return r}var Wm=F2;var j2="[object Arguments]";function U2(i){return zt(i)&&cr(i)==j2}var Jd=U2;var qm=Object.prototype,k2=qm.hasOwnProperty,H2=qm.propertyIsEnumerable,W2=Jd(function(){return arguments}())?Jd:function(i){return zt(i)&&k2.call(i,"callee")&&!H2.call(i,"callee")},Bn=W2;function q2(){return!1}var $m=q2;var Km=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Xm=Km&&typeof module=="object"&&module&&!module.nodeType&&module,$2=Xm&&Xm.exports===Km,Ym=$2?dt.Buffer:void 0,X2=Ym?Ym.isBuffer:void 0,Y2=X2||$m,Xi=Y2;var K2="[object Arguments]",Q2="[object Array]",Z2="[object Boolean]",J2="[object Date]",eP="[object Error]",tP="[object Function]",rP="[object Map]",oP="[object Number]",iP="[object Object]",nP="[object RegExp]",aP="[object Set]",sP="[object String]",lP="[object WeakMap]",cP="[object ArrayBuffer]",uP="[object DataView]",dP="[object Float32Array]",pP="[object Float64Array]",fP="[object Int8Array]",hP="[object Int16Array]",mP="[object Int32Array]",yP="[object Uint8Array]",gP="[object Uint8ClampedArray]",xP="[object Uint16Array]",bP="[object Uint32Array]",rt={};rt[dP]=rt[pP]=rt[fP]=rt[hP]=rt[mP]=rt[yP]=rt[gP]=rt[xP]=rt[bP]=!0;rt[K2]=rt[Q2]=rt[cP]=rt[Z2]=rt[uP]=rt[J2]=rt[eP]=rt[tP]=rt[rP]=rt[oP]=rt[iP]=rt[nP]=rt[aP]=rt[sP]=rt[lP]=!1;function vP(i){return zt(i)&&Rn(i.length)&&!!rt[cr(i)]}var Qm=vP;function SP(i){return function(t){return i(t)}}var Vn=SP;var Zm=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Ns=Zm&&typeof module=="object"&&module&&!module.nodeType&&module,wP=Ns&&Ns.exports===Zm,ep=wP&&Xl.process,PP=function(){try{var i=Ns&&Ns.require&&Ns.require("util").types;return i||ep&&ep.binding&&ep.binding("util")}catch{}}(),Ao=PP;var Jm=Ao&&Ao.isTypedArray,OP=Jm?Vn(Jm):Qm,tc=OP;var TP=Object.prototype,CP=TP.hasOwnProperty;function AP(i,t){var e=pt(i),r=!e&&Bn(i),o=!e&&!r&&Xi(i),n=!e&&!r&&!o&&tc(i),a=e||r||o||n,s=a?Wm(i.length,String):[],l=s.length;for(var c in i)(t||CP.call(i,c))&&!(a&&(c=="length"||o&&(c=="offset"||c=="parent")||n&&(c=="buffer"||c=="byteLength"||c=="byteOffset")||Nn(c,l)))&&s.push(c);return s}var rc=AP;function MP(i,t){return function(e){return i(t(e))}}var oc=MP;var IP=oc(Object.keys,Object),ey=IP;var EP=Object.prototype,NP=EP.hasOwnProperty;function DP(i){if(!Ln(i))return ey(i);var t=[];for(var e in Object(i))NP.call(i,e)&&e!="constructor"&&t.push(e);return t}var ty=DP;function _P(i){return ec(i)?rc(i):ty(i)}var zn=_P;function RP(i){var t=[];if(i!=null)for(var e in Object(i))t.push(e);return t}var ry=RP;var LP=Object.prototype,BP=LP.hasOwnProperty;function VP(i){if(!ft(i))return ry(i);var t=Ln(i),e=[];for(var r in i)r=="constructor"&&(t||!BP.call(i,r))||e.push(r);return e}var oy=VP;function zP(i){return ec(i)?rc(i,!0):oy(i)}var Gn=zP;var GP=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,FP=/^\w*$/;function jP(i,t){if(pt(i))return!1;var e=typeof i;return e=="number"||e=="symbol"||e=="boolean"||i==null||ti(i)?!0:FP.test(i)||!GP.test(i)||t!=null&&i in Object(t)}var iy=jP;var UP=Jt(Object,"create"),Mo=UP;function kP(){this.__data__=Mo?Mo(null):{},this.size=0}var ny=kP;function HP(i){var t=this.has(i)&&delete this.__data__[i];return this.size-=t?1:0,t}var ay=HP;var WP="__lodash_hash_undefined__",qP=Object.prototype,$P=qP.hasOwnProperty;function XP(i){var t=this.__data__;if(Mo){var e=t[i];return e===WP?void 0:e}return $P.call(t,i)?t[i]:void 0}var sy=XP;var YP=Object.prototype,KP=YP.hasOwnProperty;function QP(i){var t=this.__data__;return Mo?t[i]!==void 0:KP.call(t,i)}var ly=QP;var ZP="__lodash_hash_undefined__";function JP(i,t){var e=this.__data__;return this.size+=this.has(i)?0:1,e[i]=Mo&&t===void 0?ZP:t,this}var cy=JP;function Fn(i){var t=-1,e=i==null?0:i.length;for(this.clear();++t<e;){var r=i[t];this.set(r[0],r[1])}}Fn.prototype.clear=ny;Fn.prototype.delete=ay;Fn.prototype.get=sy;Fn.prototype.has=ly;Fn.prototype.set=cy;var tp=Fn;function eO(){this.__data__=[],this.size=0}var uy=eO;function tO(i,t){for(var e=i.length;e--;)if(Dn(i[e][0],t))return e;return-1}var ri=tO;var rO=Array.prototype,oO=rO.splice;function iO(i){var t=this.__data__,e=ri(t,i);if(e<0)return!1;var r=t.length-1;return e==r?t.pop():oO.call(t,e,1),--this.size,!0}var dy=iO;function nO(i){var t=this.__data__,e=ri(t,i);return e<0?void 0:t[e][1]}var py=nO;function aO(i){return ri(this.__data__,i)>-1}var fy=aO;function sO(i,t){var e=this.__data__,r=ri(e,i);return r<0?(++this.size,e.push([i,t])):e[r][1]=t,this}var hy=sO;function jn(i){var t=-1,e=i==null?0:i.length;for(this.clear();++t<e;){var r=i[t];this.set(r[0],r[1])}}jn.prototype.clear=uy;jn.prototype.delete=dy;jn.prototype.get=py;jn.prototype.has=fy;jn.prototype.set=hy;var oi=jn;var lO=Jt(dt,"Map"),ii=lO;function cO(){this.size=0,this.__data__={hash:new tp,map:new(ii||oi),string:new tp}}var my=cO;function uO(i){var t=typeof i;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?i!=="__proto__":i===null}var yy=uO;function dO(i,t){var e=i.__data__;return yy(t)?e[typeof t=="string"?"string":"hash"]:e.map}var ni=dO;function pO(i){var t=ni(this,i).delete(i);return this.size-=t?1:0,t}var gy=pO;function fO(i){return ni(this,i).get(i)}var xy=fO;function hO(i){return ni(this,i).has(i)}var by=hO;function mO(i,t){var e=ni(this,i),r=e.size;return e.set(i,t),this.size+=e.size==r?0:1,this}var vy=mO;function Un(i){var t=-1,e=i==null?0:i.length;for(this.clear();++t<e;){var r=i[t];this.set(r[0],r[1])}}Un.prototype.clear=my;Un.prototype.delete=gy;Un.prototype.get=xy;Un.prototype.has=by;Un.prototype.set=vy;var Yi=Un;var yO="Expected a function";function rp(i,t){if(typeof i!="function"||t!=null&&typeof t!="function")throw new TypeError(yO);var e=function(){var r=arguments,o=t?t.apply(this,r):r[0],n=e.cache;if(n.has(o))return n.get(o);var a=i.apply(this,r);return e.cache=n.set(o,a)||n,a};return e.cache=new(rp.Cache||Yi),e}rp.Cache=Yi;var Sy=rp;var gO=500;function xO(i){var t=Sy(i,function(r){return e.size===gO&&e.clear(),r}),e=t.cache;return t}var wy=xO;var bO=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,vO=/\\(\\)?/g,SO=wy(function(i){var t=[];return i.charCodeAt(0)===46&&t.push(""),i.replace(bO,function(e,r,o,n){t.push(o?n.replace(vO,"$1"):r||e)}),t}),Py=SO;function wO(i){return i==null?"":Tm(i)}var Oy=wO;function PO(i,t){return pt(i)?i:iy(i,t)?[i]:Py(Oy(i))}var gr=PO;var OO=1/0;function TO(i){if(typeof i=="string"||ti(i))return i;var t=i+"";return t=="0"&&1/i==-OO?"-0":t}var ai=TO;function CO(i,t){t=gr(t,i);for(var e=0,r=t.length;i!=null&&e<r;)i=i[ai(t[e++])];return e&&e==r?i:void 0}var ic=CO;function AO(i,t){for(var e=-1,r=t.length,o=i.length;++e<r;)i[o+e]=t[e];return i}var kn=AO;var Ty=Et?Et.isConcatSpreadable:void 0;function MO(i){return pt(i)||Bn(i)||!!(Ty&&i&&i[Ty])}var Cy=MO;function Ay(i,t,e,r,o){var n=-1,a=i.length;for(e||(e=Cy),o||(o=[]);++n<a;){var s=i[n];t>0&&e(s)?t>1?Ay(s,t-1,e,r,o):kn(o,s):r||(o[o.length]=s)}return o}var My=Ay;function IO(i){var t=i==null?0:i.length;return t?My(i,1):[]}var Iy=IO;function EO(i){return jm(Hm(i,void 0,Iy),i+"")}var nc=EO;var NO=oc(Object.getPrototypeOf,Object),Hn=NO;var DO="[object Object]",_O=Function.prototype,RO=Object.prototype,Ey=_O.toString,LO=RO.hasOwnProperty,BO=Ey.call(Object);function VO(i){if(!zt(i)||cr(i)!=DO)return!1;var t=Hn(i);if(t===null)return!0;var e=LO.call(t,"constructor")&&t.constructor;return typeof e=="function"&&e instanceof e&&Ey.call(e)==BO}var Ny=VO;function zO(i,t,e){var r=-1,o=i.length;t<0&&(t=-t>o?0:o+t),e=e>o?o:e,e<0&&(e+=o),o=t>e?0:e-t>>>0,t>>>=0;for(var n=Array(o);++r<o;)n[r]=i[r+t];return n}var Dy=zO;function GO(){this.__data__=new oi,this.size=0}var _y=GO;function FO(i){var t=this.__data__,e=t.delete(i);return this.size=t.size,e}var Ry=FO;function jO(i){return this.__data__.get(i)}var Ly=jO;function UO(i){return this.__data__.has(i)}var By=UO;var kO=200;function HO(i,t){var e=this.__data__;if(e instanceof oi){var r=e.__data__;if(!ii||r.length<kO-1)return r.push([i,t]),this.size=++e.size,this;e=this.__data__=new Yi(r)}return e.set(i,t),this.size=e.size,this}var Vy=HO;function Wn(i){var t=this.__data__=new oi(i);this.size=t.size}Wn.prototype.clear=_y;Wn.prototype.delete=Ry;Wn.prototype.get=Ly;Wn.prototype.has=By;Wn.prototype.set=Vy;var qn=Wn;function WO(i,t){return i&&Kr(t,zn(t),i)}var zy=WO;function qO(i,t){return i&&Kr(t,Gn(t),i)}var Gy=qO;var ky=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Fy=ky&&typeof module=="object"&&module&&!module.nodeType&&module,$O=Fy&&Fy.exports===ky,jy=$O?dt.Buffer:void 0,Uy=jy?jy.allocUnsafe:void 0;function XO(i,t){if(t)return i.slice();var e=i.length,r=Uy?Uy(e):new i.constructor(e);return i.copy(r),r}var Hy=XO;function YO(i,t){for(var e=-1,r=i==null?0:i.length,o=0,n=[];++e<r;){var a=i[e];t(a,e,i)&&(n[o++]=a)}return n}var Wy=YO;function KO(){return[]}var ac=KO;var QO=Object.prototype,ZO=QO.propertyIsEnumerable,qy=Object.getOwnPropertySymbols,JO=qy?function(i){return i==null?[]:(i=Object(i),Wy(qy(i),function(t){return ZO.call(i,t)}))}:ac,$n=JO;function eT(i,t){return Kr(i,$n(i),t)}var $y=eT;var tT=Object.getOwnPropertySymbols,rT=tT?function(i){for(var t=[];i;)kn(t,$n(i)),i=Hn(i);return t}:ac,sc=rT;function oT(i,t){return Kr(i,sc(i),t)}var Xy=oT;function iT(i,t,e){var r=t(i);return pt(i)?r:kn(r,e(i))}var lc=iT;function nT(i){return lc(i,zn,$n)}var Ds=nT;function aT(i){return lc(i,Gn,sc)}var cc=aT;var sT=Jt(dt,"DataView"),uc=sT;var lT=Jt(dt,"Promise"),dc=lT;var cT=Jt(dt,"Set"),pc=cT;var Yy="[object Map]",uT="[object Object]",Ky="[object Promise]",Qy="[object Set]",Zy="[object WeakMap]",Jy="[object DataView]",dT=Co(uc),pT=Co(ii),fT=Co(dc),hT=Co(pc),mT=Co(Zl),Ki=cr;(uc&&Ki(new uc(new ArrayBuffer(1)))!=Jy||ii&&Ki(new ii)!=Yy||dc&&Ki(dc.resolve())!=Ky||pc&&Ki(new pc)!=Qy||Zl&&Ki(new Zl)!=Zy)&&(Ki=function(i){var t=cr(i),e=t==uT?i.constructor:void 0,r=e?Co(e):"";if(r)switch(r){case dT:return Jy;case pT:return Yy;case fT:return Ky;case hT:return Qy;case mT:return Zy}return t});var Io=Ki;var yT=Object.prototype,gT=yT.hasOwnProperty;function xT(i){var t=i.length,e=new i.constructor(t);return t&&typeof i[0]=="string"&&gT.call(i,"index")&&(e.index=i.index,e.input=i.input),e}var eg=xT;var bT=dt.Uint8Array,Xn=bT;function vT(i){var t=new i.constructor(i.byteLength);return new Xn(t).set(new Xn(i)),t}var Yn=vT;function ST(i,t){var e=t?Yn(i.buffer):i.buffer;return new i.constructor(e,i.byteOffset,i.byteLength)}var tg=ST;var wT=/\w*$/;function PT(i){var t=new i.constructor(i.source,wT.exec(i));return t.lastIndex=i.lastIndex,t}var rg=PT;var og=Et?Et.prototype:void 0,ig=og?og.valueOf:void 0;function OT(i){return ig?Object(ig.call(i)):{}}var ng=OT;function TT(i,t){var e=t?Yn(i.buffer):i.buffer;return new i.constructor(e,i.byteOffset,i.length)}var ag=TT;var CT="[object Boolean]",AT="[object Date]",MT="[object Map]",IT="[object Number]",ET="[object RegExp]",NT="[object Set]",DT="[object String]",_T="[object Symbol]",RT="[object ArrayBuffer]",LT="[object DataView]",BT="[object Float32Array]",VT="[object Float64Array]",zT="[object Int8Array]",GT="[object Int16Array]",FT="[object Int32Array]",jT="[object Uint8Array]",UT="[object Uint8ClampedArray]",kT="[object Uint16Array]",HT="[object Uint32Array]";function WT(i,t,e){var r=i.constructor;switch(t){case RT:return Yn(i);case CT:case AT:return new r(+i);case LT:return tg(i,e);case BT:case VT:case zT:case GT:case FT:case jT:case UT:case kT:case HT:return ag(i,e);case MT:return new r;case IT:case DT:return new r(i);case ET:return rg(i);case NT:return new r;case _T:return ng(i)}}var sg=WT;function qT(i){return typeof i.constructor=="function"&&!Ln(i)?Lm(Hn(i)):{}}var lg=qT;var $T="[object Map]";function XT(i){return zt(i)&&Io(i)==$T}var cg=XT;var ug=Ao&&Ao.isMap,YT=ug?Vn(ug):cg,dg=YT;var KT="[object Set]";function QT(i){return zt(i)&&Io(i)==KT}var pg=QT;var fg=Ao&&Ao.isSet,ZT=fg?Vn(fg):pg,hg=ZT;var JT=1,eC=2,tC=4,mg="[object Arguments]",rC="[object Array]",oC="[object Boolean]",iC="[object Date]",nC="[object Error]",yg="[object Function]",aC="[object GeneratorFunction]",sC="[object Map]",lC="[object Number]",gg="[object Object]",cC="[object RegExp]",uC="[object Set]",dC="[object String]",pC="[object Symbol]",fC="[object WeakMap]",hC="[object ArrayBuffer]",mC="[object DataView]",yC="[object Float32Array]",gC="[object Float64Array]",xC="[object Int8Array]",bC="[object Int16Array]",vC="[object Int32Array]",SC="[object Uint8Array]",wC="[object Uint8ClampedArray]",PC="[object Uint16Array]",OC="[object Uint32Array]",Je={};Je[mg]=Je[rC]=Je[hC]=Je[mC]=Je[oC]=Je[iC]=Je[yC]=Je[gC]=Je[xC]=Je[bC]=Je[vC]=Je[sC]=Je[lC]=Je[gg]=Je[cC]=Je[uC]=Je[dC]=Je[pC]=Je[SC]=Je[wC]=Je[PC]=Je[OC]=!0;Je[nC]=Je[yg]=Je[fC]=!1;function fc(i,t,e,r,o,n){var a,s=t&JT,l=t&eC,c=t&tC;if(e&&(a=o?e(i,r,o,n):e(i)),a!==void 0)return a;if(!ft(i))return i;var u=pt(i);if(u){if(a=eg(i),!s)return Vm(i,a)}else{var d=Io(i),p=d==yg||d==aC;if(Xi(i))return Hy(i,s);if(d==gg||d==mg||p&&!o){if(a=l||p?{}:lg(i),!s)return l?Xy(i,Gy(a,i)):$y(i,zy(a,i))}else{if(!Je[d])return o?i:{};a=sg(i,d,s)}}n||(n=new qn);var f=n.get(i);if(f)return f;n.set(i,a),hg(i)?i.forEach(function(y){a.add(fc(y,t,e,y,i,n))}):dg(i)&&i.forEach(function(y,x){a.set(x,fc(y,t,e,x,i,n))});var h=c?l?cc:Ds:l?Gn:zn,m=u?void 0:h(i);return Um(m||i,function(y,x){m&&(x=y,y=i[x]),_n(a,x,fc(y,t,e,x,i,n))}),a}var hc=fc;var TC=1,CC=4;function AC(i){return hc(i,TC|CC)}var Eo=AC;var MC="__lodash_hash_undefined__";function IC(i){return this.__data__.set(i,MC),this}var xg=IC;function EC(i){return this.__data__.has(i)}var bg=EC;function mc(i){var t=-1,e=i==null?0:i.length;for(this.__data__=new Yi;++t<e;)this.add(i[t])}mc.prototype.add=mc.prototype.push=xg;mc.prototype.has=bg;var vg=mc;function NC(i,t){for(var e=-1,r=i==null?0:i.length;++e<r;)if(t(i[e],e,i))return!0;return!1}var Sg=NC;function DC(i,t){return i.has(t)}var wg=DC;var _C=1,RC=2;function LC(i,t,e,r,o,n){var a=e&_C,s=i.length,l=t.length;if(s!=l&&!(a&&l>s))return!1;var c=n.get(i),u=n.get(t);if(c&&u)return c==t&&u==i;var d=-1,p=!0,f=e&RC?new vg:void 0;for(n.set(i,t),n.set(t,i);++d<s;){var h=i[d],m=t[d];if(r)var y=a?r(m,h,d,t,i,n):r(h,m,d,i,t,n);if(y!==void 0){if(y)continue;p=!1;break}if(f){if(!Sg(t,function(x,v){if(!wg(f,v)&&(h===x||o(h,x,e,r,n)))return f.push(v)})){p=!1;break}}else if(!(h===m||o(h,m,e,r,n))){p=!1;break}}return n.delete(i),n.delete(t),p}var yc=LC;function BC(i){var t=-1,e=Array(i.size);return i.forEach(function(r,o){e[++t]=[o,r]}),e}var Pg=BC;function VC(i){var t=-1,e=Array(i.size);return i.forEach(function(r){e[++t]=r}),e}var Og=VC;var zC=1,GC=2,FC="[object Boolean]",jC="[object Date]",UC="[object Error]",kC="[object Map]",HC="[object Number]",WC="[object RegExp]",qC="[object Set]",$C="[object String]",XC="[object Symbol]",YC="[object ArrayBuffer]",KC="[object DataView]",Tg=Et?Et.prototype:void 0,op=Tg?Tg.valueOf:void 0;function QC(i,t,e,r,o,n,a){switch(e){case KC:if(i.byteLength!=t.byteLength||i.byteOffset!=t.byteOffset)return!1;i=i.buffer,t=t.buffer;case YC:return!(i.byteLength!=t.byteLength||!n(new Xn(i),new Xn(t)));case FC:case jC:case HC:return Dn(+i,+t);case UC:return i.name==t.name&&i.message==t.message;case WC:case $C:return i==t+"";case kC:var s=Pg;case qC:var l=r&zC;if(s||(s=Og),i.size!=t.size&&!l)return!1;var c=a.get(i);if(c)return c==t;r|=GC,a.set(i,t);var u=yc(s(i),s(t),r,o,n,a);return a.delete(i),u;case XC:if(op)return op.call(i)==op.call(t)}return!1}var Cg=QC;var ZC=1,JC=Object.prototype,eA=JC.hasOwnProperty;function tA(i,t,e,r,o,n){var a=e&ZC,s=Ds(i),l=s.length,c=Ds(t),u=c.length;if(l!=u&&!a)return!1;for(var d=l;d--;){var p=s[d];if(!(a?p in t:eA.call(t,p)))return!1}var f=n.get(i),h=n.get(t);if(f&&h)return f==t&&h==i;var m=!0;n.set(i,t),n.set(t,i);for(var y=a;++d<l;){p=s[d];var x=i[p],v=t[p];if(r)var w=a?r(v,x,p,t,i,n):r(x,v,p,i,t,n);if(!(w===void 0?x===v||o(x,v,e,r,n):w)){m=!1;break}y||(y=p=="constructor")}if(m&&!y){var O=i.constructor,S=t.constructor;O!=S&&"constructor"in i&&"constructor"in t&&!(typeof O=="function"&&O instanceof O&&typeof S=="function"&&S instanceof S)&&(m=!1)}return n.delete(i),n.delete(t),m}var Ag=tA;var rA=1,Mg="[object Arguments]",Ig="[object Array]",gc="[object Object]",oA=Object.prototype,Eg=oA.hasOwnProperty;function iA(i,t,e,r,o,n){var a=pt(i),s=pt(t),l=a?Ig:Io(i),c=s?Ig:Io(t);l=l==Mg?gc:l,c=c==Mg?gc:c;var u=l==gc,d=c==gc,p=l==c;if(p&&Xi(i)){if(!Xi(t))return!1;a=!0,u=!1}if(p&&!u)return n||(n=new qn),a||tc(i)?yc(i,t,e,r,o,n):Cg(i,t,l,e,r,o,n);if(!(e&rA)){var f=u&&Eg.call(i,"__wrapped__"),h=d&&Eg.call(t,"__wrapped__");if(f||h){var m=f?i.value():i,y=h?t.value():t;return n||(n=new qn),o(m,y,e,r,n)}}return p?(n||(n=new qn),Ag(i,t,e,r,o,n)):!1}var Ng=iA;function Dg(i,t,e,r,o){return i===t?!0:i==null||t==null||!zt(i)&&!zt(t)?i!==i&&t!==t:Ng(i,t,e,r,Dg,o)}var _g=Dg;function nA(i,t){return i!=null&&t in Object(i)}var Rg=nA;function aA(i,t,e){t=gr(t,i);for(var r=-1,o=t.length,n=!1;++r<o;){var a=ai(t[r]);if(!(n=i!=null&&e(i,a)))break;i=i[a]}return n||++r!=o?n:(o=i==null?0:i.length,!!o&&Rn(o)&&Nn(a,o)&&(pt(i)||Bn(i)))}var Lg=aA;function sA(i,t){return i!=null&&Lg(i,t,Rg)}var Bg=sA;var lA=function(){return dt.Date.now()},xc=lA;var cA="Expected a function",uA=Math.max,dA=Math.min;function pA(i,t,e){var r,o,n,a,s,l,c=0,u=!1,d=!1,p=!0;if(typeof i!="function")throw new TypeError(cA);t=Zd(t)||0,ft(e)&&(u=!!e.leading,d="maxWait"in e,n=d?uA(Zd(e.maxWait)||0,t):n,p="trailing"in e?!!e.trailing:p);function f(T){var M=r,g=o;return r=o=void 0,c=T,a=i.apply(g,M),a}function h(T){return c=T,s=setTimeout(x,t),u?f(T):a}function m(T){var M=T-l,g=T-c,D=t-M;return d?dA(D,n-g):D}function y(T){var M=T-l,g=T-c;return l===void 0||M>=t||M<0||d&&g>=n}function x(){var T=xc();if(y(T))return v(T);s=setTimeout(x,m(T))}function v(T){return s=void 0,p&&r?f(T):(r=o=void 0,a)}function w(){s!==void 0&&clearTimeout(s),c=0,r=l=o=s=void 0}function O(){return s===void 0?a:v(xc())}function S(){var T=xc(),M=y(T);if(r=arguments,o=this,l=T,M){if(s===void 0)return h(l);if(d)return clearTimeout(s),s=setTimeout(x,t),f(l)}return s===void 0&&(s=setTimeout(x,t)),a}return S.cancel=w,S.flush=O,S}var bc=pA;function fA(i){var t=i==null?0:i.length;return t?i[t-1]:void 0}var Vg=fA;function hA(i,t){return t.length<2?i:ic(i,Dy(t,0,-1))}var zg=hA;function mA(i,t){return _g(i,t)}var ip=mA;function yA(i,t){return t=gr(t,i),i=zg(i,t),i==null||delete i[ai(Vg(t))]}var Gg=yA;function gA(i){return Ny(i)?void 0:i}var Fg=gA;var xA=1,bA=2,vA=4,SA=nc(function(i,t){var e={};if(i==null)return e;var r=!1;t=Yl(t,function(n){return n=gr(n,i),r||(r=n.length>1),n}),Kr(i,cc(i),e),r&&(e=hc(e,xA|bA|vA,Fg));for(var o=t.length;o--;)Gg(e,t[o]);return e}),Kn=SA;function wA(i,t,e,r){if(!ft(i))return i;t=gr(t,i);for(var o=-1,n=t.length,a=n-1,s=i;s!=null&&++o<n;){var l=ai(t[o]),c=e;if(l==="__proto__"||l==="constructor"||l==="prototype")return i;if(o!=a){var u=s[l];c=r?r(u,l,s):void 0,c===void 0&&(c=ft(u)?u:Nn(t[o+1])?[]:{})}_n(s,l,c),s=s[l]}return i}var jg=wA;function PA(i,t,e){for(var r=-1,o=t.length,n={};++r<o;){var a=t[r],s=ic(i,a);e(s,a)&&jg(n,gr(a,i),s)}return n}var Ug=PA;function OA(i,t){return Ug(i,t,function(e,r){return Bg(i,r)})}var kg=OA;var TA=nc(function(i,t){return i==null?{}:kg(i,t)}),Dr=TA;var ue=class{modifyById(t,e){let r=this;if(r[t]===void 0)throw new Error("not expected");{let n={...r,[t]:e};return Object.setPrototypeOf(n,ue.prototype),n}}add(t,e){return this.runOp({type:1,id:t,data:e})?.data??this}runOp(t){let e=this;if(t.type===1){let r=e[t.id],o;r===void 0?o={type:2,id:t.id}:o={type:1,id:t.id,data:r};let{id:n,data:a}=t,s={...e,[n]:a};return Object.setPrototypeOf(s,ue.prototype),{data:s,actual:t,reverse:o}}else if(t.type===2){let{id:r}=t,o=e[r];if(o===void 0)return null;{let n={...e};return Object.setPrototypeOf(n,ue.prototype),delete n[r],{data:n,actual:t,reverse:{type:1,id:r,data:o}}}}return null}};function _s(i){if(i.deepFreeze!==void 0){i.deepFreeze(i);return}let t=Object.getOwnPropertyNames(i);for(let e of t){let r=i[e];r&&typeof r=="object"&&_s(r)}return Object.freeze(i)}function Hg(i,t){let e=0;for(;e<i.length&&e<t.length;){if(i[e]<t[e])return-1;if(i[e]>t[e])return 1;e+=1}return e!==t.length?-1:e!==i.length?1:0}var Qn=class extends Error{};function vc(i){let t={...i};return Object.setPrototypeOf(t,Object.getPrototypeOf(i)),t}function Qr(i,t,e){if(i===void 0?t===void 0?(i=0,t=10):i=t-10:t===void 0&&(t=i+10),i>t){let n=i;i=t,t=n}let r=[],o=1/(e+1);for(let n=0;n<e;n++){let a=i+(t-i)*(n+.75+Math.random()*.5)*o;r.push(a)}return r}function Zn(i){return i instanceof Uint8Array||i instanceof Uint16Array||i instanceof Uint32Array||i instanceof Int8Array||i instanceof Int16Array||i instanceof Int32Array||i instanceof Float32Array||i instanceof Float64Array}function Wg(){return typeof process<"u"}function qg(i,t){for(let e of i)t(e.id,e.data)!==!0&&qg(e.children,t)}function $g(i,t){if(t(i.id,i.data)!==!0)for(let e of i.children)$g(e,t)}var Qe=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Qe.prototype)}deepFreeze(){let e=0;for(;e<this.length;)_s(this[e]),e++}fillCaches0(e,r){this.objCaches.set(e.id,e),this.parentCaches.set(e.id,r);for(let o of e.children)this.fillCaches0(o,e.id)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,this.parentCaches=new Map;for(let e of this)this.fillCaches0(e,null)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}nonExistOrDescendantOf(e,r){if(!this.has(e))return!0;for(;e;){let o=this.parent(e);if(o===r)return!0;e=o}return!1}rootAcestor(e){for(;e;){let r=this.parent(e);if(r)e=r;else return e}return e}isDescendantOf(e,r){for(;e;){let o=this.parent(e);if(o===r)return!0;e=o}return!1}data(e){return this.get(e)?.data}has(e){return this.childrenOf(e)!==void 0}get(e){return this.fillCaches(),this.objCaches.get(e)}childrenOf(e){return e===null?this:this.get(e)?.children}traverseFrom(e,r){if(e===null)this.traverse(r);else{let o=this.get(e);o&&$g(o,r)}}traverse(e){qg(this,e)}totalSize(){return this.fillCaches(),this.objCaches.size}parent(e){return this.fillCaches(),this.parentCaches.get(e)}childrenArray(e){return e===null?this:this.get(e).children}modifyById(e,r){if(this.get(e)===void 0)throw new Error("not expected");{let n=this.parent(e),a=this.childrenArray(n),s=a.findIndex(u=>u.id===e);if(s<0)throw new Error("not expected");let l=a[s];return a=[...a],a[s]={...l,data:r},this.modifyArrayBy(n,a)}}modifyArrayBy(e,r){let o=e,n=r;for(;o!==null;){let s=n,l=o;if(o=this.parent(o),o===void 0)throw new Error;n=this.childrenArray(o);let c=n.findIndex(u=>u.id===l);if(c<0)throw new Error;n=[...n],n[c]={...n[c],children:s}}Object.setPrototypeOf(n,Qe.prototype);let a=n;return a.fillCaches(),a}runOp(e){switch(e.type){case 7:return this.addOp(e);case 8:return this.deleteOp(e);case 9:return this.moveOp(e)}return null}checkDuplicatedIdRec({id:e,children:r}){if(this.get(e)!==void 0)return!0;for(let o of r)if(this.checkDuplicatedIdRec(o))return!0;return!1}addOp(e){let{parent:r,fi:o,id:n,data:a,children:s}=e;if(r!==null&&this.get(r)===void 0)return null;if(this.checkDuplicatedIdRec(e))return null;{let l=r,c=this.childrenArray(l),u={fi:o,id:n,data:a,children:s};return c=[...c,u],c.sort((p,f)=>p.fi-f.fi),e.localIndex=c.indexOf(u),{data:this.modifyArrayBy(l,c),actual:e,reverse:{type:8,id:n}}}}deleteOp(e){let{id:r}=e;if(this.get(r)===null)return null;{let o=this.parent(r);if(o===void 0)return null;let n=this.childrenArray(o),a=n.findIndex(c=>c.id===r);e.localIndex=a,n=[...n];let s=n.splice(a,1)[0];return{data:this.modifyArrayBy(o,n),actual:e,reverse:{type:7,...s,parent:o}}}}moveOp(e){let{parent:r,fi:o,id:n}=e;if(r!==null&&this.get(r)===void 0)return this.deleteOp({type:8,id:n});if(r!==null){let f=r;for(;f!==null;){if(f===void 0)throw new Error;if(f===n)throw new Qn("cyclic tree");f=this.parent(f)}}let a=this.parent(n);if(a===void 0)return null;let s=a,l=this.childrenArray(a),c=l.findIndex(f=>f.id===n);l=[...l];let u=l.splice(c,1)[0],d=this.modifyArrayBy(a,l);a=r,l=d.childrenArray(a);let p=u.fi;return u={...u,fi:o},l=[...l,u],l.sort((f,h)=>f.fi-h.fi),e.localIndex=l.indexOf(u),d=d.modifyArrayBy(a,l),{data:d,actual:e,reverse:{type:9,parent:s,fi:p,id:n}}}previous(e,r){if(r===null){let n=this.childrenArray(e);return n.length===0?null:n[n.length-1].id}let o=null;for(let n of this.childrenArray(e)){if(n.id===r)return o;o=n.id}return null}traverseSortNext(e){let r=this.parent(e);if(r!==void 0){let o=this.childrenArray(r),n=o.findIndex(a=>a.id===e)+1;if(n<o.length)return o[n].id;if(r)return this.traverseSortNext(r)}}sortNext(e){let r=this.childrenArray(e);return r.length>0?r[0].id:this.traverseSortNext(e)}traverseSortPrevious(e){let r=this.childrenArray(e);return r.length>0?this.traverseSortPrevious(r[r.length-1].id):e}sortPrevious(e){let r=this.parent(e);if(r!==void 0){let o=this.childrenArray(r),n=o.findIndex(a=>a.id===e)-1;return n>=0?this.traverseSortPrevious(o[n].id):r}}getAllSorted(e){let r=[];for(let o of e){let n=this.getWithSortKey(o.id);n!==void 0&&r.push({...o,...n})}r.sort((o,n)=>Hg(o.sortKey,n.sortKey));for(let o of r)delete o.sortKey;return r}getWithSortKey(e){var r=e;let o=[],n=this.get(r),a=n;if(n!==void 0){for(;r;)o.splice(0,0,n.fi),r=this.parent(r),r!==null&&(n=this.get(r));return{...a,sortKey:o}}}insertBeforeHelper(e,r,o){return this.insertAfterHelper(e,this.previous(e,r),o)}insertAfterHelper(e,r,o){let n=this.childrenArray(e);if(r===null){if(n.length===0)return Qr(0,o,o);{let a=n[0].fi;return Qr(a-o,a,o)}}else{let a=this.get(r);if(a===void 0||this.parent(r)!==e)throw new Error("illegal args");let s=n.find(l=>l.fi>a.fi);if(s===void 0){let l=n[n.length-1].fi;return Qr(l,l+o,o)}else return Qr(a.fi,s.fi,o)}}};var Jn;(t=>{function i(e,r){if(r.type!==0)return null;if(Array.isArray(e)){let o=r.props,n={},a=[...e],s=!1;if(o)for(let l of Object.keys(o)){let c=parseInt(l);if(isNaN(c))throw new Error("wrong index");n[l]=a[c],a[c]=o[l],s=!0}return s?{data:a,actual:r,reverse:{type:0,props:n}}:null}else{let o=r.props,n={},a={...e},s=!1;if(o)for(let l of Object.keys(o)){n[l]=a[l];let c=o[l];c===void 0?delete a[l]:a[l]=c,s=!0}return s?{data:a,actual:r,reverse:{type:0,props:n}}:null}}t.runOp=i})(Jn||(Jn={}));var be=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,be.prototype)}deepFreeze(){let e=0;for(;e<this.length;)_s(this[e]),e++}fillCaches0(e){this.objCaches.set(e.id,e)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,Object.getOwnPropertyDescriptor(this,"objCaches").enumerable=!1;for(let e of this)this.fillCaches0(e)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}data(e){return this.get(e)?.data}get(e){return this.fillCaches(),this.objCaches.get(e)}modifyById(e,r){if(this.get(e)===void 0)throw new Error("not expected");{let n=this,a=n.findIndex(c=>c.id===e);if(a<0)throw new Error("not expected");let s=n[a];return n=[...n],n[a]={...s,data:r},this.modifyArrayBy(n)}}modifyArrayBy(e){Object.setPrototypeOf(e,be.prototype);let r=e;return Wg()||r.fillCaches(),r}runOp(e){switch(e.type){case 4:return this.addOp(e);case 5:return this.deleteOp(e);case 6:return this.moveOp(e)}return null}addOp(e){let{fi:r,id:o,data:n}=e,a=this,s={fi:r,id:o,data:n};return a=[...a,s],a.sort((c,u)=>c.fi-u.fi),e.localIndex=a.indexOf(s),{data:this.modifyArrayBy(a),actual:e,reverse:{type:5,id:o}}}deleteOp(e){let{id:r}=e,o=this,n=o.findIndex(l=>l.id===r);if(n===-1)return null;e.localIndex=n,o=[...o];let a=o.splice(n,1)[0];return{data:this.modifyArrayBy(o),actual:e,reverse:{type:4,...a}}}moveOp(e){let{fi:r,id:o}=e,n=this;n=[...n];let a=n.findIndex(u=>u.id===o);if(a===-1)return null;let s=n[a].fi,l={...n[a],fi:r};return n[a]=l,n.sort((u,d)=>u.fi-d.fi),e.localIndex=n.indexOf(l),{data:this.modifyArrayBy(n),actual:e,reverse:{type:6,fi:s,id:o}}}previous(e){if(e===null)return this.length===0?null:this[this.length-1].id;let r=null;for(let o of this){if(o.id===e)return r;r=o.id}return null}insertBeforeHelper(e,r){return this.insertAfterHelper(this.previous(e),r)}insertAfterHelper(e,r){let o=this;if(e===null){if(o.length===0)return Qr(0,r,r);{let n=o[0].fi;return Qr(n-r,n,r)}}else{let n=this.get(e);if(n===void 0)throw new Error("illegal args");let a=o.find(s=>s.fi>n.fi);if(a===void 0){let s=o[o.length-1].fi;return Qr(s,s+r,r)}else return Qr(n.fi,a.fi,r)}}};function ea(i){return i&&typeof i=="object"&&i instanceof He}var He=class{unusedFunOverridesTable(t){}runOp(t){let e=[],r=this,o=0,n={};for(;o<t.path.length;){if(e.push(r),r=r===void 0?void 0:r[t.path[o]],r!==void 0&&!ea(r))return null;o+=1}r=r?vc(r):new He;for(let[l,c]of Object.entries(t.props)){let u=r[l];n[l]=u,c===void 0?delete r[l]:r[l]=c}for(;o>0;){if(Object.keys(r).length===0){let l=e[o-1];l&&(r=vc(l),delete r[t.path[o-1]])}else{let l=e[o-1];if(l){let c=vc(l);c[t.path[o-1]]=r,r=c}else{let c=new He;c[t.path[o-1]]=r,r=c}}o-=1}let a=Object.setPrototypeOf(r,He.prototype),s={...t,props:n};return{data:a,actual:t,reverse:s}}},Zr;(r=>{function i(o,n){return Rs(o,n)??o}r.apply=i;function t(o,n){return ap(o,n)}r.merge=t;function e(o,n){let a=0,s=n.path,l=o;for(;a<s.length&&l!==void 0;){if(l=Ze.zoomOnce(l,s[a]),l===void 0)return n;if(!ea(l))return;a+=1}if(l===void 0)return n;if(!!ea(l))if(n.type===0){let c={...n.props};for(let u of Object.keys(l))delete c[u];return{...n,props:c}}else if(n.type===1||n.type===4||n.type===7){let c=np([n],l);return c?c[0]:n}else return n}r.filterOp=e})(Zr||(Zr={}));function np(i,t){if(t===void 0)return;let e=!1,r=i.map(o=>{let n=o.id,a=Rs(o.data,t[n]);if(e=e||a!==void 0,a===void 0&&(a=o.data),o.children){let s=np(o.children,t);return s!==void 0?e=!0:s=o.children,{...o,id:n,data:a,children:s}}else return{...o,id:n,data:a}});if(e)return r}function CA(i,t){if(t===void 0)return;let e=!1,r=i.map(o=>{let n=o.id,a=Rs(o.data,t[n]);return e=e||a!==void 0,a===void 0&&(a=o.data),{...o,id:n,data:a}});if(e)return Object.setPrototypeOf(r,Object.getPrototypeOf(i)),r}function Rs(i,t){if(!ea(t))return t;if(i instanceof Qe){let e=np(i,t);return e!==void 0&&Object.setPrototypeOf(e,Object.getPrototypeOf(i)),e}else{if(i instanceof be)return CA(i,t);if(Array.isArray(i)){let e=!1,r=i.map((o,n)=>{let a=Rs(o,t[n]);return e=e||a!==void 0,a===void 0&&(a=o),a});return e?(Object.setPrototypeOf(r,Object.getPrototypeOf(i)),r):void 0}else{if(i instanceof He)return ap(i,t);if(i&&typeof i=="object"){let e={},r=!1;for(let[o,n]of Object.entries(i)){let a=Rs(n,t[o]);r=r||a!==void 0,a===void 0&&(a=n),e[o]=a}return r?(Object.setPrototypeOf(e,Object.getPrototypeOf(i)),e):void 0}}}}function ap(i,t){if(i===void 0)return t;if(t===void 0)return i;if(!ea(t))return t;if(!ea(i))return Zr.apply(i,t);let e=new Set;for(let o of Object.keys(i))e.add(o);for(let o of Object.keys(t))e.add(o);let r=new He;for(let o of e){let n=ap(i===void 0?void 0:i[o],t===void 0?void 0:t[o]);r[o]=n}return r}function Xg(i,t){let e={cur:[],result:[],len:0};return i=Ls(i,t,e)??i,[i,e.result]}function Sc(i,t){return i===null?null:(i.cur[i.len]=t,i.len+=1,i)}function wc(i){i&&(i.len-=1)}function AA(i){if(i===null)return null;i.result.push(i.cur.slice(0,i.len))}function Yg(i,t,e){let r=!1,o=i.map(n=>{let a=n.id,s=t[a];if(s!==void 0&&typeof s=="string"&&(r=!0,a=s,e!==null))throw new Error("not supported");let l=Ls(n.data,t,Sc(e,a));wc(e),r=r||l!==void 0,l===void 0&&(l=n.data);let c=Yg(n.children,t,e);return c!==void 0?r=!0:c=n.children,{...n,id:a,data:l,children:c}});if(r)return o}function MA(i,t,e){let r=!1,o=i.map(n=>{let a=n.id,s=t[a];if(s!==void 0&&typeof s=="string"&&(r=!0,a=s,e!==null))throw new Error("not supported");let l=Ls(n.data,t,Sc(e,a));return wc(e),r=r||l!==void 0,l===void 0&&(l=n.data),{...n,id:a,data:l}});if(r)return Object.setPrototypeOf(o,Object.getPrototypeOf(i)),o}function Ls(i,t,e){if(i instanceof Qe){let r=Yg(i,t,e);return r!==void 0&&Object.setPrototypeOf(r,Object.getPrototypeOf(i)),r}else{if(i instanceof be)return MA(i,t,e);if(Array.isArray(i)){let r=!1,o=i.map((n,a)=>{let s=Ls(n,t,Sc(e,a));return wc(e),r=r||s!==void 0,s===void 0&&(s=n),s});return r?(Object.setPrototypeOf(o,Object.getPrototypeOf(i)),o):void 0}else if(i&&typeof i=="object"&&!Zn(i)){let r={},o=!1;for(let[n,a]of Object.entries(i))if(n!=="name"&&n!=="variableId"){let s=t[n];if(typeof s=="string"){if(e!==null)throw new Error("not supported");o=!0,n=s}let l=Ls(a,t,Sc(e,n));wc(e),o=o||l!==void 0,l===void 0&&(l=a),r[n]=l}else r[n]=a;return o?(Object.setPrototypeOf(r,Object.getPrototypeOf(i)),r):void 0}else if(typeof i=="string"){let r=t[i];return r!==void 0&&AA(e),r}else return}}var ta;(t=>{function i(e,r){let o=Ze.zoom(r,e.path);if(typeof o=="object"){let n={};for(let a of Object.keys(e.props))n[a]=o[a];return{...e,props:n}}else return{...e,props:{}}}t.replaceProps=i})(ta||(ta={}));var nt;(s=>{function i(l,c){return{...l,path:l.path.slice(c)}}s.drop=i;function t(l,c){return e(l,c)?.data??l}s.applySimple=t;function e(l,c){let u=c.path;for(var d=[];;){let p;if(l instanceof He&&c.type===0&&(p=l.runOp({...c,path:u.slice(d.length)}),p===null&&(p=void 0)),p===void 0&&d.length===u.length&&(l instanceof Qe||l instanceof be||l instanceof ue?p=l.runOp(c):p=Jn.runOp(l,c)),p!==void 0)if(p!==null){let m=p.data;for(let y=d.length-1;y>=0;y--){let x=u[y],v=d[y];if(v instanceof Qe){if(typeof x=="number")throw new Error("illegal arg");m=v.modifyById(x,m)}else if(v instanceof be){if(typeof x=="number")throw new Error("illegal arg");m=v.modifyById(x,m)}else if(v instanceof ue){if(typeof x=="number")throw new Error("illegal arg");m=v.modifyById(x,m)}else if(v instanceof He){let w={...v,[x]:m};m=Object.setPrototypeOf(w,He.prototype)}else if(typeof v=="object")if(Array.isArray(v)){if(typeof x=="string"&&(x=parseInt(x),isNaN(x)))throw new Error("Invalid path");let w=m;m=[...v],m[x]=w}else m={...v,[x]:m};else return null}return{data:m,actual:{...p.actual,path:u},reverse:{...p.reverse,path:u}}}else return null;let f=u[d.length],h;if(l instanceof Qe){if(typeof f=="number")throw new Error("");h=l.get(f)?.data}else if(l instanceof be){if(typeof f=="number")throw new Error("");h=l.get(f)?.data}else l!==null&&(h=l[f]);if(h!==void 0)d.push(l),l=h;else return null}}s.apply=e;function r(l,c){for(let u=0;u<l.length&&u<c.length;u++)if(l[u]!==c[u])return!0;return!1}s.pathDisjoint=r;function o(l,c){if(l.length!==c.length)return!1;for(let u=0;u<l.length;u++)if(l[u]!==c[u])return!1;return!0}s.pathEq=o;function n(l,c){return r(l.path,c.path)}s.commutative=n;function a(l,c){return l.type===0&&c.type===0&&o(l.path,c.path)?Object.keys(l.props).every(u=>c.props[u]!==void 0):!1}s.subsumed=a})(nt||(nt={}));var Bs;(l=>{function i(){return[]}l.empty=i;function t(c,u){let d=[];for(let p of c){let[f,...h]=p.path;f===u&&d.push({...p,path:h})}return d}l.removePrefix=t;function e(c,u){return c.map(d=>({...d,path:[u,...d.path]}))}l.addPrefix=e;function r(c,u){return[...c,...u]}l.concat=r;function o(c,u){return[...c.filter(p=>!u.some(f=>nt.subsumed(p,f))),...u]}l.compress=o;function n(c,u){return c.every(d=>u.every(p=>nt.commutative(d,p)))}l.commutative=n;function a(c,u){for(let d of u){let p=s(c,d);p!==null&&(c=p.data)}return c}l.applyAll=a;function s(c,u){var d=c;let p=[],f=[];for(let h of u)try{if(h.type===3||h.type===5&&h.path[h.path.length-1]==="variables"){let m,y,x;if(h.type===3?(m=Ze.zoom(d,[...h.path,h.id]),x=nt.apply(d,{...h,type:2})):(m=Ze.zoom(d,[...h.path,h.id,"value"]),x=nt.apply(d,h)),x!==null){d=x.data;let[v,w]=Xg(d,{[h.id]:m});d=v;for(let O=0;O<w.length;O++){let S=w[O],T=S.pop();if(typeof T=="number"){let M=[T];for(let D=O+1;D<w.length;D++){let E=w[D],I=E[E.length-1];if(typeof I=="number"&&Ze.equal(S,E.slice(0,E.length-1)))M.push(I),w.splice(D,1);else break}let g=Ze.zoom(d,S);y=g.map((D,E)=>M.includes(E)?h.id:D),m=g,T=S.pop()}else{if(T==="alphaOverride"||T==="alpha"){m/=100;let M=m,g=Ze.zoom(d,S.slice(0,S.length-2)),D=g.layers.map(E=>E.id===S[S.length-1]?{...E,data:{...E.data,[T]:M}}:E);Object.setPrototypeOf(D,Object.getPrototypeOf(g.layers)),g.layers=D}y=h.id}p.push({type:0,path:S,props:{[T]:m}}),f.push({type:0,path:S,props:{[T]:y}})}f.push(x.reverse),p.push(x.actual)}}else{let m=nt.apply(d,h);m!==null&&(p.push(m.actual),d=m.data,f.push(m.reverse))}}catch(m){if(m instanceof Qn)return null;throw m}return{data:d,actual:p,reverse:f.reverse()}}l.apply=s})(Bs||(Bs={}));var Kg=Symbol(),IA=Symbol(),Oc=Symbol(),Qi=class{reportOp(t,e,r=[]){let o=this;if(e===null)return;o._current=e.data;let n=r;for(;!(o instanceof Pc);){let a=o._path,s=o._current;if(a!==""&&n.splice(0,0,a),o=o._parent,o===null)return;o.update(a,s)}o.push(n,t,e.actual,e.reverse)}deleteChildren(t){if(this._children){let e=this._children[t];if(e){let r=e[Oc];r&&r(),delete this._children[t]}}}},lp=class extends Qi{constructor(t,e,r){super(),this._parent=t,this._path=e,this._current=r}update(t,e){if(Array.isArray(this._current)){if(typeof t=="string"&&(t=parseInt(t),isNaN(t)))throw new Error("Invalid path");this._current=[...this._current],this._current[t]=e}else if(this._current instanceof He){let r={...this._current,[t]:e};this._current=Object.setPrototypeOf(r,He.prototype)}else this._current={...this._current,[t]:e}}runOp(t){this.reportOp(t,Jn.runOp(this._current,t),t.path)}},cp=class extends Qi{constructor(t,e,r){super(),this._parent=t,this._path=e,this._current=r}update(t,e){this._current={...this._current,[t]:e},Object.setPrototypeOf(this._current,ue.prototype)}runOp(t){this.reportOp(t,this._current.runOp(t))}},Qg={get(i,t){if(t===Oc)return()=>{i._parent=null};if(t===Kg)return i._current;if(t===IA)return i;let{_current:e,_children:r}=i;if(t==="push"&&Array.isArray(e))throw new Error("not supported to expand array");let o=r===void 0?void 0:r[t];if(o!==void 0)return o;let n=e[t],a=Tc(i,t,n);return a!==n?(r===void 0&&(r={},i._children=r),r[t]=a,a):n},has(i,t){return t in i._current},ownKeys(i){return Reflect.ownKeys(i._current)},defineProperty(){throw Error("not supported")},getPrototypeOf(i){return Object.getPrototypeOf(i._current)},setPrototypeOf(){throw Error("not supported")},getOwnPropertyDescriptor(i,t){let e=i._current,r=Reflect.getOwnPropertyDescriptor(e,t);return r&&{writable:!0,configurable:!0,enumerable:r.enumerable,value:e[t]}}},EA={...Qg,set(i,t,e){let r={type:0,props:{[t]:at(e)??e}};return i.deleteChildren(t),i.runOp(r),!0},deleteProperty(i,t){let e={type:0,props:{[t]:void 0}};return i.deleteChildren(t),i.runOp(e),!0}},NA={...Qg,set(i,t,e){return e===void 0?this.deleteProperty(i,t):(i.deleteChildren(t),i.runOp({type:1,id:t,data:e})),!0},deleteProperty(i,t){return i.runOp({type:2,id:t}),!0}},ra=class extends Qi{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[Oc]=()=>{this._parent=null}}unproxy(){return this._current}update(t,e){this._current=this._current.modifyById(t,e)}runOp(t){this.reportOp(t,this._current.runOp(t))}randomId(){return this._current.randomId()}isDescendantOf(t,e){return this._current.isDescendantOf(t,e)}childrenOf(t){return this._current.childrenOf(t)}traverse(t){return this._current.traverse(t)}get(t){return this._current.get(t)}parent(t){return this._current.parent(t)}traverse(t){this._current.traverse((e,r)=>{t(e,this.data(e))})}data(t){let{_current:e,_children:r}=this,o=r===void 0?void 0:r[t];if(o!==void 0)return o;let n=e.get(t)?.data,a=Tc(this,t,n);return a!==n?(r===void 0&&(r={},this._children=r),r[t]=a,a):n}add(t,e,r,o,n){this.runOp({type:7,parent:t,fi:e,id:r,data:o,children:n})}move(t,e,r){this.runOp({type:9,parent:t,fi:e,id:r})}insertAfter(t,e,r){let o=this._current.insertAfterHelper(t,e,r.length);for(let n=0;n<r.length;n++){let a=r[n];this.add(t,o[n],a.id,a.data,a.children)}}insertBefore(t,e,r){let o=this._current.insertBeforeHelper(t,e,r.length);for(let n=0;n<r.length;n++){let a=r[n];this.add(t,o[n],a.id,a.data,a.children)}}moveAfter(t,e,r){let o=this._current.insertAfterHelper(t,e,r.length);for(let n=0;n<r.length;n++){let a=r[n];this.move(t,o[n],a)}}moveBefore(t,e,r){let o=this._current.insertBeforeHelper(t,e,r.length);for(let n=0;n<r.length;n++){let a=r[n];this.move(t,o[n],a)}}delete(t){this.deleteChildren(t),this.runOp({type:8,id:t})}sortNext(t){return this._current.sortNext(t)}sortPrevious(t){return this._current.sortPrevious(t)}getAllSorted(t){return this._current.getAllSorted(t)}},oa=class extends Qi{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[Oc]=()=>{this._parent=null}}unproxy(){return this._current}get length(){return this._current.length}forEach(t){let e=this.length;for(let r=0;r<e;r++){let o=this._current[r].id,n=this._current[r].fi;t(this.data(this._current[r].id),o,n)}}find(t){let e=this.length;for(let r=0;r<e;r++){let o=this._current[r].id;if(t(this.data(o),o))return this.get(o)}}update(t,e){this._current=this._current.modifyById(t,e)}randomId(){return this._current.randomId()}get(t){return{...this._current.get(t),data:this.data(t)}}data(t){let{_current:e,_children:r}=this,o=r===void 0?void 0:r[t];if(o!==void 0)return o;let n=e.get(t)?.data,a=Tc(this,t,n);return a!==n?(r===void 0&&(r={},this._children=r),r[t]=a,a):n}runOp(t){this.reportOp(t,this._current.runOp(t))}add(t,e,r){this.runOp({type:4,fi:t,id:e,data:r})}move(t,e){this.runOp({type:6,fi:t,id:e})}insertAfter(t,e){let r=this._current.insertAfterHelper(t,e.length);for(let o=0;o<e.length;o++){let n=e[o];this.add(r[o],n.id,n.data)}}insertBefore(t,e){let r=this._current.insertBeforeHelper(t,e.length);for(let o=0;o<e.length;o++){let n=e[o];this.add(r[o],n.id,n.data)}}moveAfter(t,e){let r=this._current.insertAfterHelper(t,e.length);for(let o=0;o<e.length;o++){let n=e[o];this.move(r[o],n)}}moveBefore(t,e){let r=this._current.insertBeforeHelper(t,e.length);for(let o=0;o<e.length;o++){let n=e[o];this.move(r[o],n)}}delete(t){this.deleteChildren(t),this.runOp({type:5,id:t})}};function sp(i,t,e){if(i.length>0){let r=i[i.length-1];if(r.type===0&&t.type===0&&Ze.equal(r.path,e)){Object.assign(r.props,t.props);return}}i.push({...t,path:e})}var Pc=class extends Qi{constructor(t){super(),this.ts=[],this.actual=[],this.reverse=[],this._current=t}update(t,e){if(t!=="")throw new Error("");this._current=e}push(t,e,r,o){sp(this.ts,e,t),sp(this.actual,r,t),sp(this.reverse,o,t)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function Tc(i,t,e){return e instanceof Qe?new ra(i,t,e):e instanceof be?new oa(i,t,e):e instanceof ue?new Proxy(new cp(i,t,e),NA):e!==null&&typeof e=="object"?Zn(e)?e:new Proxy(new lp(i,t,e),EA):e}function up(i){let t=new Pc(i);return[Tc(t,"",i),t]}function si(i,t){let[e,r]=up(i);return t(e),r.result()}function at(i){return i instanceof ra||i instanceof oa?i._current:i!==null&&typeof i=="object"?i[Kg]:i}var Ze;(o=>{function i(n,a){if(a.length===n.length)for(var s=0;s<n.length;){if(n[s]!==a[s])return!1;s+=1}else return!1;return!0}o.equal=i;function t(n,a,s){let l=r(s,n);if(l!==void 0&&typeof l=="object"&&l!==null){let c={...a};return Object.keys(l).forEach(u=>{delete c[u]}),c}else return a}o.removeOverridden=t;function e(n,a){if((n instanceof Qe||n instanceof ra)&&typeof a=="string")return n.data(a);if((n instanceof be||n instanceof oa)&&typeof a=="string")return n.data(a);if(typeof a=="number"&&Array.isArray(n))return n[a];if(typeof a=="string"&&typeof n=="object"&&n!==null)return n[a]}o.zoomOnce=e;function r(n,a,s=0){for(;s<a.length&&n!==void 0;)n=e(n,a[s]),s+=1;return n}o.zoom=r})(Ze||(Ze={}));function Zg(i,t){let e=[];if(t.length===i.length)for(var r=0;r<i.length;){if(t[r]==="*")e.push(i[r]);else if(i[r]!==t[r])return null;r+=1}else return null;return e}function Le(i,t){let e=[];if(t.length<=i.length)for(var r=0;r<t.length;){if(t[r]==="*")e.push(i[r]);else if(i[r]!==t[r])return null;r+=1}else return null;return e}var Cc=class{},Vs=class extends Cc{constructor(e){super();this.id=e}},zs=class extends Cc{constructor(e){super();this.data=e}};var pp;try{pp=new TextDecoder}catch{}var pe,ci,G=0;var a0=[],fp=a0,hp=0,er={},ke,li,xr=0,Jr=0,ur,No,Xt=[],qe,Jg={useRecords:!1,mapsAsObjects:!0},Gs=class{},yp=new Gs;yp.name="MessagePack 0xC1";var ia=!1,eo=class{constructor(t){t&&(t.useRecords===!1&&t.mapsAsObjects===void 0&&(t.mapsAsObjects=!0),t.structures?t.structures.sharedLength=t.structures.length:t.getStructures&&((t.structures=[]).uninitialized=!0,t.structures.sharedLength=0)),Object.assign(this,t)}unpack(t,e){if(pe)return d0(()=>(Mc(),this?this.unpack(t,e):eo.prototype.unpack.call(Jg,t,e)));ci=e>-1?e:t.length,G=0,hp=0,Jr=0,li=null,fp=a0,ur=null,pe=t;try{qe=t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))}catch(r){throw pe=null,t instanceof Uint8Array?r:new Error("Source must be a Uint8Array or Buffer but was a "+(t&&typeof t=="object"?t.constructor.name:typeof t))}if(this instanceof eo){if(er=this,this.structures)return ke=this.structures,Ac();(!ke||ke.length>0)&&(ke=[])}else er=Jg,(!ke||ke.length>0)&&(ke=[]);return Ac()}unpackMultiple(t,e){let r,o=0;try{ia=!0;let n=t.length,a=this?this.unpack(t,n):Nc.unpack(t,n);if(e){for(e(a);G<n;)if(o=G,e(Ac())===!1)return}else{for(r=[a];G<n;)o=G,r.push(Ac());return r}}catch(n){throw n.lastPosition=o,n.values=r,n}finally{ia=!1,Mc()}}_mergeStructures(t,e){t=t||[];for(let r=0,o=t.length;r<o;r++){let n=t[r];n&&(n.isShared=!0,r>=32&&(n.highByte=r-32>>5))}t.sharedLength=t.length;for(let r in e||[])if(r>=0){let o=t[r],n=e[r];n&&(o&&((t.restoreStructures||(t.restoreStructures=[]))[r]=o),t[r]=n)}return this.structures=t}decode(t,e){return this.unpack(t,e)}};function Ac(){try{if(!er.trusted&&!ia){let t=ke.sharedLength||0;t<ke.length&&(ke.length=t)}let i=ht();if(G==ci)ke.restoreStructures&&e0(),ke=null,pe=null,No&&(No=null);else if(G>ci){let t=new Error("Unexpected end of MessagePack data");throw t.incomplete=!0,t}else if(!ia)throw new Error("Data read, but end of buffer not reached");return i}catch(i){throw ke.restoreStructures&&e0(),Mc(),(i instanceof RangeError||i.message.startsWith("Unexpected end of buffer"))&&(i.incomplete=!0),i}}function e0(){for(let i in ke.restoreStructures)ke[i]=ke.restoreStructures[i];ke.restoreStructures=null}function ht(){let i=pe[G++];if(i<160)if(i<128){if(i<64)return i;{let t=ke[i&63]||er.getStructures&&s0()[i&63];return t?(t.read||(t.read=gp(t,i&63)),t.read()):i}}else if(i<144)if(i-=128,er.mapsAsObjects){let t={};for(let e=0;e<i;e++)t[c0()]=ht();return t}else{let t=new Map;for(let e=0;e<i;e++)t.set(ht(),ht());return t}else{i-=144;let t=new Array(i);for(let e=0;e<i;e++)t[e]=ht();return t}else if(i<192){let t=i-160;if(Jr>=G)return li.slice(G-xr,(G+=t)-xr);if(Jr==0&&ci<140){let e=t<16?xp(t):l0(t);if(e!=null)return e}return mp(t)}else{let t;switch(i){case 192:return null;case 193:return ur?(t=ht(),t>0?ur[1].slice(ur.position1,ur.position1+=t):ur[0].slice(ur.position0,ur.position0-=t)):yp;case 194:return!1;case 195:return!0;case 196:return dp(pe[G++]);case 197:return t=qe.getUint16(G),G+=2,dp(t);case 198:return t=qe.getUint32(G),G+=4,dp(t);case 199:return Zi(pe[G++]);case 200:return t=qe.getUint16(G),G+=2,Zi(t);case 201:return t=qe.getUint32(G),G+=4,Zi(t);case 202:if(t=qe.getFloat32(G),er.useFloat32>2){let e=Ec[(pe[G]&127)<<1|pe[G+1]>>7];return G+=4,(e*t+(t>0?.5:-.5)>>0)/e}return G+=4,t;case 203:return t=qe.getFloat64(G),G+=8,t;case 204:return pe[G++];case 205:return t=qe.getUint16(G),G+=2,t;case 206:return t=qe.getUint32(G),G+=4,t;case 207:return er.int64AsNumber?(t=qe.getUint32(G)*4294967296,t+=qe.getUint32(G+4)):t=qe.getBigUint64(G),G+=8,t;case 208:return qe.getInt8(G++);case 209:return t=qe.getInt16(G),G+=2,t;case 210:return t=qe.getInt32(G),G+=4,t;case 211:return er.int64AsNumber?(t=qe.getInt32(G)*4294967296,t+=qe.getUint32(G+4)):t=qe.getBigInt64(G),G+=8,t;case 212:if(t=pe[G++],t==114)return n0(pe[G++]&63);{let e=Xt[t];if(e)return e.read?(G++,e.read(ht())):e.noBuffer?(G++,e()):e(pe.subarray(G,++G));throw new Error("Unknown extension "+t)}case 213:return t=pe[G],t==114?(G++,n0(pe[G++]&63,pe[G++])):Zi(2);case 214:return Zi(4);case 215:return Zi(8);case 216:return Zi(16);case 217:return t=pe[G++],Jr>=G?li.slice(G-xr,(G+=t)-xr):_A(t);case 218:return t=qe.getUint16(G),G+=2,Jr>=G?li.slice(G-xr,(G+=t)-xr):RA(t);case 219:return t=qe.getUint32(G),G+=4,Jr>=G?li.slice(G-xr,(G+=t)-xr):LA(t);case 220:return t=qe.getUint16(G),G+=2,r0(t);case 221:return t=qe.getUint32(G),G+=4,r0(t);case 222:return t=qe.getUint16(G),G+=2,o0(t);case 223:return t=qe.getUint32(G),G+=4,o0(t);default:if(i>=224)return i-256;if(i===void 0){let e=new Error("Unexpected end of MessagePack data");throw e.incomplete=!0,e}throw new Error("Unknown MessagePack token "+i)}}}var DA=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function gp(i,t){function e(){if(e.count++>2){let o=i.read=new Function("r","return function(){return {"+i.map(n=>DA.test(n)?n+":r()":"["+JSON.stringify(n)+"]:r()").join(",")+"}}")(ht);return i.highByte===0&&(i.read=t0(t,i.read)),o()}let r={};for(let o=0,n=i.length;o<n;o++){let a=i[o];r[a]=ht()}return r}return e.count=0,i.highByte===0?t0(t,e):e}var t0=(i,t)=>function(){let e=pe[G++];if(e===0)return t();let r=i<32?-(i+(e<<5)):i+(e<<5),o=ke[r]||s0()[r];if(!o)throw new Error("Record id is not defined for "+r);return o.read||(o.read=gp(o,i)),o.read()};function s0(){let i=d0(()=>(pe=null,er.getStructures()));return ke=er._mergeStructures(i,ke)}var mp=Ic,_A=Ic,RA=Ic,LA=Ic;function Ic(i){let t;if(i<16&&(t=xp(i)))return t;if(i>64&&pp)return pp.decode(pe.subarray(G,G+=i));let e=G+i,r=[];for(t="";G<e;){let o=pe[G++];if((o&128)===0)r.push(o);else if((o&224)===192){let n=pe[G++]&63;r.push((o&31)<<6|n)}else if((o&240)===224){let n=pe[G++]&63,a=pe[G++]&63;r.push((o&31)<<12|n<<6|a)}else if((o&248)===240){let n=pe[G++]&63,a=pe[G++]&63,s=pe[G++]&63,l=(o&7)<<18|n<<12|a<<6|s;l>65535&&(l-=65536,r.push(l>>>10&1023|55296),l=56320|l&1023),r.push(l)}else r.push(o);r.length>=4096&&(t+=Nt.apply(String,r),r.length=0)}return r.length>0&&(t+=Nt.apply(String,r)),t}function r0(i){let t=new Array(i);for(let e=0;e<i;e++)t[e]=ht();return t}function o0(i){if(er.mapsAsObjects){let t={};for(let e=0;e<i;e++)t[c0()]=ht();return t}else{let t=new Map;for(let e=0;e<i;e++)t.set(ht(),ht());return t}}var Nt=String.fromCharCode;function l0(i){let t=G,e=new Array(i);for(let r=0;r<i;r++){let o=pe[G++];if((o&128)>0){G=t;return}e[r]=o}return Nt.apply(String,e)}function xp(i){if(i<4)if(i<2){if(i===0)return"";{let t=pe[G++];if((t&128)>1){G-=1;return}return Nt(t)}}else{let t=pe[G++],e=pe[G++];if((t&128)>0||(e&128)>0){G-=2;return}if(i<3)return Nt(t,e);let r=pe[G++];if((r&128)>0){G-=3;return}return Nt(t,e,r)}else{let t=pe[G++],e=pe[G++],r=pe[G++],o=pe[G++];if((t&128)>0||(e&128)>0||(r&128)>0||(o&128)>0){G-=4;return}if(i<6){if(i===4)return Nt(t,e,r,o);{let n=pe[G++];if((n&128)>0){G-=5;return}return Nt(t,e,r,o,n)}}else if(i<8){let n=pe[G++],a=pe[G++];if((n&128)>0||(a&128)>0){G-=6;return}if(i<7)return Nt(t,e,r,o,n,a);let s=pe[G++];if((s&128)>0){G-=7;return}return Nt(t,e,r,o,n,a,s)}else{let n=pe[G++],a=pe[G++],s=pe[G++],l=pe[G++];if((n&128)>0||(a&128)>0||(s&128)>0||(l&128)>0){G-=8;return}if(i<10){if(i===8)return Nt(t,e,r,o,n,a,s,l);{let c=pe[G++];if((c&128)>0){G-=9;return}return Nt(t,e,r,o,n,a,s,l,c)}}else if(i<12){let c=pe[G++],u=pe[G++];if((c&128)>0||(u&128)>0){G-=10;return}if(i<11)return Nt(t,e,r,o,n,a,s,l,c,u);let d=pe[G++];if((d&128)>0){G-=11;return}return Nt(t,e,r,o,n,a,s,l,c,u,d)}else{let c=pe[G++],u=pe[G++],d=pe[G++],p=pe[G++];if((c&128)>0||(u&128)>0||(d&128)>0||(p&128)>0){G-=12;return}if(i<14){if(i===12)return Nt(t,e,r,o,n,a,s,l,c,u,d,p);{let f=pe[G++];if((f&128)>0){G-=13;return}return Nt(t,e,r,o,n,a,s,l,c,u,d,p,f)}}else{let f=pe[G++],h=pe[G++];if((f&128)>0||(h&128)>0){G-=14;return}if(i<15)return Nt(t,e,r,o,n,a,s,l,c,u,d,p,f,h);let m=pe[G++];if((m&128)>0){G-=15;return}return Nt(t,e,r,o,n,a,s,l,c,u,d,p,f,h,m)}}}}}function dp(i){return er.copyBuffers?Uint8Array.prototype.slice.call(pe,G,G+=i):pe.subarray(G,G+=i)}function Zi(i){let t=pe[G++];if(Xt[t])return Xt[t](pe.subarray(G,G+=i));throw new Error("Unknown extension type "+t)}var i0=new Array(4096);function c0(){let i=pe[G++];if(i>=160&&i<192){if(i=i-160,Jr>=G)return li.slice(G-xr,(G+=i)-xr);if(!(Jr==0&&ci<180))return mp(i)}else return G--,ht();let t=(i<<5^(i>1?qe.getUint16(G):i>0?pe[G]:0))&4095,e=i0[t],r=G,o=G+i-3,n,a=0;if(e&&e.bytes==i){for(;r<o;){if(n=qe.getUint32(r),n!=e[a++]){r=1879048192;break}r+=4}for(o+=3;r<o;)if(n=pe[r++],n!=e[a++]){r=1879048192;break}if(r===o)return G=r,e.string;o-=3,r=G}for(e=[],i0[t]=e,e.bytes=i;r<o;)n=qe.getUint32(r),e.push(n),r+=4;for(o+=3;r<o;)n=pe[r++],e.push(n);let s=i<16?xp(i):l0(i);return s!=null?e.string=s:e.string=mp(i)}var n0=(i,t)=>{var e=ht();let r=i;t!==void 0&&(i=i<32?-((t<<5)+i):(t<<5)+i,e.highByte=t);let o=ke[i];return o&&o.isShared&&((ke.restoreStructures||(ke.restoreStructures=[]))[i]=o),ke[i]=e,e.read=gp(e,r),e.read()},u0=typeof self=="object"?self:global;Xt[0]=()=>{};Xt[0].noBuffer=!0;Xt[101]=()=>{let i=ht();return(u0[i[0]]||Error)(i[1])};Xt[105]=i=>{let t=qe.getUint32(G-4);No||(No=new Map);let e=pe[G],r;e>=144&&e<160||e==220||e==221?r=[]:r={};let o={target:r};No.set(t,o);let n=ht();return o.used?Object.assign(r,n):(o.target=n,n)};Xt[112]=i=>{let t=qe.getUint32(G-4),e=No.get(t);return e.used=!0,e.target};Xt[115]=()=>new Set(ht());var bp=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(i=>i+"Array");Xt[116]=i=>{let t=i[0],e=bp[t];if(!e)throw new Error("Could not find typed array for code "+t);return new u0[e](Uint8Array.prototype.slice.call(i,1).buffer)};Xt[120]=()=>{let i=ht();return new RegExp(i[0],i[1])};Xt[98]=i=>{let t=(i[0]<<24)+(i[1]<<16)+(i[2]<<8)+i[3],e=G;G+=t-4,ur=[ht(),ht()],ur.position0=0,ur.position1=0;let r=G;G=e;try{return ht()}finally{G=r}};Xt[255]=i=>i.length==4?new Date((i[0]*16777216+(i[1]<<16)+(i[2]<<8)+i[3])*1e3):i.length==8?new Date(((i[0]<<22)+(i[1]<<14)+(i[2]<<6)+(i[3]>>2))/1e6+((i[3]&3)*4294967296+i[4]*16777216+(i[5]<<16)+(i[6]<<8)+i[7])*1e3):i.length==12?new Date(((i[0]<<24)+(i[1]<<16)+(i[2]<<8)+i[3])/1e6+((i[4]&128?-281474976710656:0)+i[6]*1099511627776+i[7]*4294967296+i[8]*16777216+(i[9]<<16)+(i[10]<<8)+i[11])*1e3):new Date("invalid");function d0(i){let t=ci,e=G,r=hp,o=xr,n=Jr,a=li,s=fp,l=No,c=ur,u=new Uint8Array(pe.slice(0,ci)),d=ke,p=ke.slice(0,ke.length),f=er,h=ia,m=i();return ci=t,G=e,hp=r,xr=o,Jr=n,li=a,fp=s,No=l,ur=c,pe=u,ia=h,ke=d,ke.splice(0,ke.length,...p),er=f,qe=new DataView(pe.buffer,pe.byteOffset,pe.byteLength),m}function Mc(){pe=null,No=null,ke=null}function p0(i){i.unpack?Xt[i.type]=i.unpack:Xt[i.type]=i}var Ec=new Array(147);for(let i=0;i<256;i++)Ec[i]=+("1e"+Math.floor(45.15-i*.30103));var Nc=new eo({useRecords:!1}),BA=Nc.unpack,VA=Nc.unpackMultiple,zA=Nc.unpack,Dc={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},GA=new Float32Array(1),$4=new Uint8Array(GA.buffer,0,4);var _c;try{_c=new TextEncoder}catch{}var Rc,Sp,Lc=typeof Buffer<"u",vp=Lc?Buffer.allocUnsafeSlow:Uint8Array,y0=Lc?Buffer:Uint8Array,f0=Lc?4294967296:2144337920,X,mt,k=0,to,ro=null,FA=/[\u0080-\uFFFF]/,Fs=Symbol("record-id"),Ji=class extends eo{constructor(t){super(t),this.offset=0;let e,r,o,n,a,s,l=0,c=y0.prototype.utf8Write?function(g,D,E){return X.utf8Write(g,D,E)}:_c&&_c.encodeInto?function(g,D){return _c.encodeInto(g,X.subarray(D)).written}:!1,u=this;t||(t={});let d=t&&t.sequential,p=t.structures||t.saveStructures,f=t.maxSharedStructures;if(f==null&&(f=p?32:0),f>8160)throw new Error("Maximum maxSharedStructure is 8160");let h=t.maxOwnStructures;h==null&&(h=p?32:64),d&&!t.saveStructures&&(this.structures=[]);let m=f>32||h+f>64,y=f+64,x=f+h+64;if(x>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let v=[],w=0,O=0;this.pack=this.encode=function(g,D){if(X||(X=new vp(8192),mt=new DataView(X.buffer,0,8192),k=0),to=X.length-10,to-k<2048?(X=new vp(X.length),mt=new DataView(X.buffer,0,X.length),to=X.length-10,k=0):k=k+7&2147483640,r=k,s=u.structuredClone?new Map:null,u.bundleStrings?(ro=["",""],X[k++]=214,X[k++]=98,ro.position=k-r,k+=4):ro=null,o=u.structures,o){o.uninitialized&&(o=u._mergeStructures(u.getStructures()));let E=o.sharedLength||0;if(E>f)throw new Error("Shared structures is larger than maximum shared structures, try increasing maxSharedStructures to "+o.sharedLength);if(!o.transitions){o.transitions=Object.create(null);for(let I=0;I<E;I++){let N=o[I];if(!N)continue;let _,R=o.transitions;for(let V=0,U=N.length;V<U;V++){let B=N[V];_=R[B],_||(_=R[B]=Object.create(null)),R=_}R[Fs]=I+64}l=E}d||(o.nextId=E+64)}n&&(n=!1),a=o||[];try{if(S(g),ro){mt.setUint32(ro.position+r,k-ro.position-r);let E=ro;ro=null,S(E[0]),S(E[1])}if(u.offset=k,s&&s.idsToInsert){k+=s.idsToInsert.length*6,k>to&&M(k),u.offset=k;let E=UA(X.subarray(r,k),s.idsToInsert);return s=null,E}return D&x0?(X.start=r,X.end=k,X):X.subarray(r,k)}finally{if(o){if(O<10&&O++,w>1e4)o.transitions=null,O=0,w=0,v.length>0&&(v=[]);else if(v.length>0&&!d){for(let E=0,I=v.length;E<I;E++)v[E][Fs]=0;v=[]}if(n&&u.saveStructures){let E=o.sharedLength||f;o.length>E&&(o=o.slice(0,E));let I=X.subarray(r,k);return u.saveStructures(o,l)===!1?(u._mergeStructures(u.getStructures()),u.pack(g)):(l=E,I)}}D&YA&&(k=r)}};let S=g=>{k>to&&(X=M(k));var D=typeof g,E;if(D==="string"){let I=g.length;if(ro&&I>=8&&I<4096){let R=FA.test(g);ro[R?0:1]+=g,X[k++]=193,S(R?-I:I);return}let N;I<32?N=1:I<256?N=2:I<65536?N=3:N=5;let _=I*3;if(k+_>to&&(X=M(k+_)),I<64||!c){let R,V,U,B=k+N;for(R=0;R<I;R++)V=g.charCodeAt(R),V<128?X[B++]=V:V<2048?(X[B++]=V>>6|192,X[B++]=V&63|128):(V&64512)===55296&&((U=g.charCodeAt(R+1))&64512)===56320?(V=65536+((V&1023)<<10)+(U&1023),R++,X[B++]=V>>18|240,X[B++]=V>>12&63|128,X[B++]=V>>6&63|128,X[B++]=V&63|128):(X[B++]=V>>12|224,X[B++]=V>>6&63|128,X[B++]=V&63|128);E=B-k-N}else E=c(g,k+N,_);E<32?X[k++]=160|E:E<256?(N<2&&X.copyWithin(k+2,k+1,k+1+E),X[k++]=217,X[k++]=E):E<65536?(N<3&&X.copyWithin(k+3,k+2,k+2+E),X[k++]=218,X[k++]=E>>8,X[k++]=E&255):(N<5&&X.copyWithin(k+5,k+3,k+3+E),X[k++]=219,mt.setUint32(k,E),k+=4),k+=E}else if(D==="number")if(g>>>0===g)g<64?X[k++]=g:g<256?(X[k++]=204,X[k++]=g):g<65536?(X[k++]=205,X[k++]=g>>8,X[k++]=g&255):(X[k++]=206,mt.setUint32(k,g),k+=4);else if(g>>0===g)g>=-32?X[k++]=256+g:g>=-128?(X[k++]=208,X[k++]=g+256):g>=-32768?(X[k++]=209,mt.setInt16(k,g),k+=2):(X[k++]=210,mt.setInt32(k,g),k+=4);else{let I;if((I=this.useFloat32)>0&&g<4294967296&&g>=-2147483648){X[k++]=202,mt.setFloat32(k,g);let N;if(I<4||(N=g*Ec[(X[k]&127)<<1|X[k+1]>>7])>>0===N){k+=4;return}else k--}X[k++]=203,mt.setFloat64(k,g),k+=8}else if(D==="object")if(!g)X[k++]=192;else{if(s){let N=s.get(g);if(N){if(!N.id){let _=s.idsToInsert||(s.idsToInsert=[]);N.id=_.push(N)}X[k++]=214,X[k++]=112,mt.setUint32(k,N.id),k+=4;return}else s.set(g,{offset:k-r})}let I=g.constructor;if(I===Object)T(g,!0);else if(I===Array){E=g.length,E<16?X[k++]=144|E:E<65536?(X[k++]=220,X[k++]=E>>8,X[k++]=E&255):(X[k++]=221,mt.setUint32(k,E),k+=4);for(let N=0;N<E;N++)S(g[N])}else if(I===Map){E=g.size,E<16?X[k++]=128|E:E<65536?(X[k++]=222,X[k++]=E>>8,X[k++]=E&255):(X[k++]=223,mt.setUint32(k,E),k+=4);for(let[N,_]of g)S(N),S(_)}else{for(let N=0,_=Rc.length;N<_;N++){let R=Sp[N];if(g instanceof R){let V=Rc[N];if(V.write){V.type&&(X[k++]=212,X[k++]=V.type,X[k++]=0),S(V.write.call(this,g));return}let U=X,B=mt,q=k;X=null;let j;try{j=V.pack.call(this,g,F=>(X=U,U=null,k+=F,k>to&&M(k),{target:X,targetView:mt,position:k-F}),S)}finally{U&&(X=U,mt=B,k=q,to=X.length-10)}j&&(j.length+k>to&&M(j.length+k),k=jA(j,X,k,V.type));return}}T(g,!g.hasOwnProperty)}}else if(D==="boolean")X[k++]=g?195:194;else if(D==="bigint"){if(g<BigInt(1)<<BigInt(63)&&g>=-(BigInt(1)<<BigInt(63)))X[k++]=211,mt.setBigInt64(k,g);else if(g<BigInt(1)<<BigInt(64)&&g>0)X[k++]=207,mt.setBigUint64(k,g);else if(this.largeBigIntToFloat)X[k++]=203,mt.setFloat64(k,Number(g));else throw new RangeError(g+" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64");k+=8}else if(D==="undefined")this.encodeUndefinedAsNil?X[k++]=192:(X[k++]=212,X[k++]=0,X[k++]=0);else if(D==="function")S(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+D)},T=this.useRecords===!1?this.variableMapSize?g=>{let D=Object.keys(g),E=D.length;E<16?X[k++]=128|E:E<65536?(X[k++]=222,X[k++]=E>>8,X[k++]=E&255):(X[k++]=223,mt.setUint32(k,E),k+=4);let I;for(let N=0;N<E;N++)S(I=D[N]),S(g[I])}:(g,D)=>{X[k++]=222;let E=k-r;k+=2;let I=0;for(let N in g)(D||g.hasOwnProperty(N))&&(S(N),S(g[N]),I++);X[E+++r]=I>>8,X[E+r]=I&255}:g=>{let D=Object.keys(g),E,I=a.transitions||(a.transitions=Object.create(null)),N=0;for(let R=0,V=D.length;R<V;R++){let U=D[R];E=I[U],E||(E=I[U]=Object.create(null),N++),I=E}let _=I[Fs];if(_)_>=96&&m?(X[k++]=((_-=96)&31)+96,X[k++]=_>>5):X[k++]=_;else{_=a.nextId,_||(_=64),_<y&&this.shouldShareStructure&&!this.shouldShareStructure(D)?(_=a.nextOwnId,_<x||(_=y),a.nextOwnId=_+1):(_>=x&&(_=y),a.nextId=_+1);let R=D.highByte=_>=96&&m?_-96>>5:-1;I[Fs]=_,a[_-64]=D,_<y?(D.isShared=!0,a.sharedLength=_-63,n=!0,R>=0?(X[k++]=(_&31)+96,X[k++]=R):X[k++]=_):(R>=0?(X[k++]=213,X[k++]=114,X[k++]=(_&31)+96,X[k++]=R):(X[k++]=212,X[k++]=114,X[k++]=_),N&&(w+=O*N),v.length>=h&&(v.shift()[Fs]=0),v.push(I),S(D))}for(let R=0,V=D.length;R<V;R++)S(g[D[R]])},M=g=>{let D;if(g>16777216){if(g-r>f0)throw new Error("Packed buffer would be larger than maximum buffer size");D=Math.min(f0,Math.round(Math.max((g-r)*(g>67108864?1.25:2),4194304)/4096)*4096)}else D=(Math.max(g-r<<2,X.length-1)>>12)+1<<12;let E=new vp(D);return mt=new DataView(E.buffer,0,D),X.copy?X.copy(E,0,r,g):E.set(X.slice(r,g)),k-=r,r=0,to=E.length-10,X=E}}useBuffer(t){X=t,mt=new DataView(X.buffer,X.byteOffset,X.byteLength),k=0}};Sp=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,Gs];Rc=[{pack(i,t,e){let r=i.getTime()/1e3;if((this.useTimestamp32||i.getMilliseconds()===0)&&r>=0&&r<4294967296){let{target:o,targetView:n,position:a}=t(6);o[a++]=214,o[a++]=255,n.setUint32(a,r)}else if(r>0&&r<17179869184){let{target:o,targetView:n,position:a}=t(10);o[a++]=215,o[a++]=255,n.setUint32(a,i.getMilliseconds()*4e6+(r/1e3/4294967296>>0)),n.setUint32(a+4,r)}else if(isNaN(r)){if(this.onInvalidDate)return t(0),e(this.onInvalidDate());let{target:o,targetView:n,position:a}=t(3);o[a++]=212,o[a++]=255,o[a++]=255}else{let{target:o,targetView:n,position:a}=t(15);o[a++]=199,o[a++]=12,o[a++]=255,n.setUint32(a,i.getMilliseconds()*1e6),n.setBigInt64(a+4,BigInt(Math.floor(r)))}}},{pack(i,t,e){let r=Array.from(i),{target:o,position:n}=t(this.structuredClone?3:0);this.structuredClone&&(o[n++]=212,o[n++]=115,o[n++]=0),e(r)}},{pack(i,t,e){let{target:r,position:o}=t(this.structuredClone?3:0);this.structuredClone&&(r[o++]=212,r[o++]=101,r[o++]=0),e([i.name,i.message])}},{pack(i,t,e){let{target:r,position:o}=t(this.structuredClone?3:0);this.structuredClone&&(r[o++]=212,r[o++]=120,r[o++]=0),e([i.source,i.flags])}},{pack(i,t){this.structuredClone?h0(i,16,t):m0(Lc?Buffer.from(i):new Uint8Array(i),t)}},{pack(i,t){let e=i.constructor;e!==y0&&this.structuredClone?h0(i,bp.indexOf(e.name),t):m0(i,t)}},{pack(i,t){let{target:e,position:r}=t(1);e[r]=193}}];function h0(i,t,e,r){let o=i.byteLength;if(o+1<256){var{target:n,position:a}=e(4+o);n[a++]=199,n[a++]=o+1}else if(o+1<65536){var{target:n,position:a}=e(5+o);n[a++]=200,n[a++]=o+1>>8,n[a++]=o+1&255}else{var{target:n,position:a,targetView:s}=e(7+o);n[a++]=201,s.setUint32(a,o+1),a+=4}n[a++]=116,n[a++]=t,n.set(new Uint8Array(i.buffer,i.byteOffset,i.byteLength),a)}function m0(i,t){let e=i.byteLength;var r,o;if(e<256){var{target:r,position:o}=t(e+2);r[o++]=196,r[o++]=e}else if(e<65536){var{target:r,position:o}=t(e+3);r[o++]=197,r[o++]=e>>8,r[o++]=e&255}else{var{target:r,position:o,targetView:n}=t(e+5);r[o++]=198,n.setUint32(o,e),o+=4}r.set(i,o)}function jA(i,t,e,r){let o=i.length;switch(o){case 1:t[e++]=212;break;case 2:t[e++]=213;break;case 4:t[e++]=214;break;case 8:t[e++]=215;break;case 16:t[e++]=216;break;default:o<256?(t[e++]=199,t[e++]=o):o<65536?(t[e++]=200,t[e++]=o>>8,t[e++]=o&255):(t[e++]=201,t[e++]=o>>24,t[e++]=o>>16&255,t[e++]=o>>8&255,t[e++]=o&255)}return t[e++]=r,t.set(i,e),e+=o,e}function UA(i,t){let e,r=t.length*6,o=i.length-r;for(t.sort((n,a)=>n.offset>a.offset?1:-1);e=t.pop();){let n=e.offset,a=e.id;i.copyWithin(n+r,n,o),r-=6;let s=n+r;i[s++]=214,i[s++]=105,i[s++]=a>>24,i[s++]=a>>16&255,i[s++]=a>>8&255,i[s++]=a&255,o=n}return i}function ui(i){if(i.Class){if(!i.pack&&!i.write)throw new Error("Extension has no pack or write function");if(i.pack&&!i.type)throw new Error("Extension has no type (numeric code to identify the extension)");Sp.unshift(i.Class),Rc.unshift(i)}p0(i)}var g0=new Ji({useRecords:!1}),kA=g0.pack,HA=g0.pack;var{NEVER:WA,ALWAYS:qA,DECIMAL_ROUND:$A,DECIMAL_FIT:XA}=Dc,x0=512,YA=1024;var b0=new Ji({structuredClone:!0});ui({Class:ue.prototype.constructor,type:1,write(i){return{...i}},read(i){return Object.setPrototypeOf(i,ue.prototype),i}});ui({Class:be.prototype.constructor,type:2,write(i){return[...i]},read(i){return Object.setPrototypeOf(i,be.prototype),i}});ui({Class:Qe.prototype.constructor,type:3,write(i){return[...i]},read(i){return Object.setPrototypeOf(i,Qe.prototype),i}});ui({Class:Vs.prototype.constructor,type:4,write(i){return i.id},read(i){return new Vs(i)}});ui({Class:zs.prototype.constructor,type:5,write(i){return i.data},read(i){return new zs(i)}});ui({Class:He.prototype.constructor,type:6,write(i){return{...i}},read(i){return Object.setPrototypeOf(i,He.prototype),i}});function KA(i){var t=0;if(i.length===0)return t;for(let e=0;e<i.length;e++){let r=i[e];t=(t<<5)-t+r,t=t&t}return t}function wp(i){if(Zn(i))return i;if(Array.isArray(i))return i.map(wp);if(typeof i=="object"&&i!==null){let t={};for(let e of Object.keys(i).sort())t[e]=wp(i[e]);return Object.setPrototypeOf(t,Object.getPrototypeOf(i)),t}else return i}var Bc;(r=>{function i(o){return b0.pack(o)}r.serialize=i;function t(o){return b0.unpack(o)}r.deserialize=t;function e(o){return KA(i(wp(o))).toString()}r.checksum=e})(Bc||(Bc={}));var fi="personal camera",hi="a218fcc3-276b-49b9-b485-49037fd14f5f",T0=2960946,yt=5526619;var na;(f=>{function i(h,m){return h[0]===m[0]&&h[1]===m[1]}f.isEqual=i;function t(h,m,y){return[h[0]+(m[0]-h[0])*y,h[1]+(m[1]-h[1])*y]}f.lerp=t;function e(h,m){return[h[0]+m[0],h[1]+m[1]]}f.add=e;function r(h,m){return[h[0]-m[0],h[1]-m[1]]}f.sub=r;function o(h,m){return[h[0]*m[0],h[1]*m[1]]}f.multiply=o;function n(h,m){return[h[0]/m[0],h[1]/m[1]]}f.divide=n;function a(h,m){return Math.pow(m[0]-h[0],2)+Math.pow(m[1]-h[1],2)}f.distanceSquared=a;function s(h,m){return Math.sqrt(a(h,m))}f.distance=s;function l(h,m){return h[0]*m[0]+h[1]*m[1]}f.dot=l;function c(h,m){return[h[0]*m,h[1]*m]}f.scalarMultiply=c;function u(h,m,y){let x=f.sub(m,h),v=f.sub(y,h),w=f.dot(x,v)/f.dot(x,x),O=f.scalarMultiply(x,w);return f.add(h,O)}f.projectionOnto=u;function d(h,m,y){return s(h,u(h,m,y))}f.projectionOntoDistance=d;function p(h,m){return[(h[0]+m[0])*.5,(h[1]+m[1])*.5]}f.center=p})(na||(na={}));var di;(s=>{function i(l,c){return l[0]===c[0]&&l[1]===c[1]&&l[2]===c[2]}s.isEqual=i;function t(l,c){return[l[0]+c[0],l[1]+c[1],l[2]+c[2]]}s.add=t;function e(l,c){return[l[0]-c[0],l[1]-c[1],l[2]-c[2]]}s.sub=e;function r(l,c){return[l[0]/c[0],l[1]/c[1],l[2]/c[2]]}s.div=r;function o(l,c){return[l[0]*c[0],l[1]*c[1],l[2]*c[2]]}s.mul=o;function n(l,c){return Math.hypot(l[0]-c[0],l[1]-c[1],l[2]-c[2])}s.dist=n;function a(l,c,u){return[l[0]+(c[0]-l[0])*u,l[1]+(c[1]-l[1])*u,l[2]+(c[2]-l[2])*u]}s.lerp=a})(di||(di={}));var v0;(e=>{function i(r,o){return r[0]===o[0]&&r[1]===o[1]&&r[2]===o[2]&&r[3]===o[3]}e.isEqual=i;function t(r,o,n){return[r[0]+(o[0]-r[0])*n,r[1]+(o[1]-r[1])*n,r[2]+(o[2]-r[2])*n,r[3]+(o[3]-r[3])*n]}e.lerp=t})(v0||(v0={}));var S0;(a=>{let i=180/Math.PI,t=Math.PI/180;function e(s){return typeof s=="number"?s*i:s}function r(s){return typeof s=="number"?s*t:s}function o(s){return[e(s[0]),e(s[1]),e(s[2])]}a.radToDeg=o;function n(s){return[r(s[0]),r(s[1]),r(s[2])]}a.degToRad=n})(S0||(S0={}));var pi;(o=>{o.identity=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function t(n,a){for(let s=0;s<16;s++)if(n[s]!==a[s])return!1;return!0}o.isEqual=t;function e(n){return n??o.identity}o.simplify=e;function r(n,a){let s=a.slice(0);for(var l=0,c=a.length;l<c;l+=3){let u=n[3]*a[l]+n[7]*a[l+1]+n[11]*a[l+2]+n[15];s[l]=(n[0]*a[l]+n[4]*a[l+1]+n[8]*a[l+2]+n[12])/u,s[l+1]=(n[1]*a[l]+n[5]*a[l+1]+n[9]*a[l+2]+n[13])/u,s[l+2]=(n[2]*a[l]+n[6]*a[l+1]+n[10]*a[l+2]+n[14])/u}return s}o.applyMatrix4=r})(pi||(pi={}));var Ot;(p=>{function i(f){return typeof f=="object"&&typeof f.r=="number"&&typeof f.g=="number"&&typeof f.b=="number"}p.isRGB=i,p.white={r:1,g:1,b:1},p.red={r:1,g:0,b:0},p.black={r:0,g:0,b:0};function o(f){return{r:Math.round(f.r*255),g:Math.round(f.g*255),b:Math.round(f.b*255),a:1}}p.toRgb255a1=o;function n(f){return{r:f.r,g:f.g,b:f.b}}p.clone=n;function a(f){return f=Math.floor(f),{r:(f>>16&255)/255,g:(f>>8&255)/255,b:(f&255)/255}}p.fromHex=a;function s(f){return Math.round(f.r*255)*65536+Math.round(f.g*255)*256+Math.round(f.b*255)}p.toHex=s;function l(f,h){return f.r===h.r&&f.g===h.g&&f.b===h.b}p.equals=l;function c(f,h){return f.r.toFixed(2)===h.r.toFixed(2)&&f.g.toFixed(2)===h.g.toFixed(2)&&f.b.toFixed(2)===h.b.toFixed(2)}p.equalsFixed=c;function u(f,h,m){return{r:f.r+(h.r-f.r)*m,g:f.g+(h.g-f.g)*m,b:f.b+(h.b-f.b)*m}}p.lerp=u;function d(f){return ft(f)?"r"in f&&"g"in f&&"b"in f&&!("a"in f):!1}p.is=d})(Ot||(Ot={}));var Ie;(u=>{u.white={...Ot.white,a:1};function t(d){return ft(d)?"r"in d&&"g"in d&&"b"in d&&"a"in d:!1}u.is=t,u.transparent={...Ot.white,a:0};function r(d){return{r:d[0],g:d[1],b:d[2],a:d[3]}}u.from0to1=r;function o(d,p){return{...Ot.fromHex(d),a:p}}u.fromHexAndA=o;function n(d){return{r:Math.round(d.r*255),g:Math.round(d.g*255),b:Math.round(d.b*255),a:d.a}}u.toRgb255a1=n;function a(d,p){return Ot.equals(d,p)&&d.a===p.a}u.equals=a;function s(d,p){return Ot.equalsFixed(d,p)&&d.a.toFixed(2)===p.a.toFixed(2)}u.equalsFixed=s;function l(d,p,f){return{r:d.r+(p.r-d.r)*f,g:d.g+(p.g-d.g)*f,b:d.b+(p.b-d.b)*f,a:d.a+(p.a-d.a)*f}}u.lerp=l;function c({r:d,g:p,b:f,a:h}=u.white){return`rgba(${d*255}, ${p*255}, ${f*255}, ${h})`}u.toStyle=c})(Ie||(Ie={}));var Vc;(t=>t.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(Vc||(Vc={}));var w0;(t=>t.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(w0||(w0={}));var P0;(t=>t.defaultData={control1:[.5,0],control2:[.5,1]})(P0||(P0={}));var O0;(n=>(n.linear=[0,0,1,1],n.ease=[.25,.1,.25,1],n.easeIn=[.42,0,1,1],n.easeOut=[0,0,.58,1],n.easeInOut=[.42,0,.58,1]))(O0||(O0={}));function Pp(i){return typeof i=="string"&&i.length===36?/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(i):!1}var _r;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function t(r){return e.all.includes(r)}e.is=t})(_r||(_r={}));var mi;(o=>{o.DefaultUp=[0,1,0],o.DefaultTargetOffset=1e3,o.defaultData={far:1e5,type:"OrthographicCamera",perspective:{near:70,fov:45,zoom:1},orthographic:{near:-1e5,zoom:1},up:o.DefaultUp,isUpVectorFlipped:!1,targetOffset:o.DefaultTargetOffset};function r(n){return n.type==="PerspectiveCamera"?n.perspective?.zoom??1:n.orthographic?.zoom??1}o.getZoom=r})(mi||(mi={}));var oo;(r=>{function i(o,n=.1){return{disabled:!1,type:"linear",hideBase:!1,count:3,radial:{radius:Math.max(o[0],o[1])*2,start:0,end:360,alignment:!1,axis:"y",scale:[1,1,1],rotation:[0,0,0],position:[0,0,0]},toObject:{object:"",spreadType:"random",scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],axis:"x",seed:0,count:99,align:"normal"},linear:{scale:[1,1,1],rotation:[0,0,0],position:[o[0]+o[0]*n,0,0]},grid:{count:[2,2,2],size:o.map(a=>a*(1+n)),useCenter:!0},randomness:!1,randomnessObject:{strength:100,scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],movement:1,seed:0,freqScale:10,noiseType:"perlin"}}}r.defaultData=i;function t(o,n){let a={...o};if(QA.forEach(s=>{Object.assign(a,{[s]:n[s]??o[s]})}),a.radial={...o.radial},n.radial){let s=o.radial,l=n.radial;ZA.forEach(c=>{Object.assign(a.radial,{[c]:l[c]??s[c]})})}if(a.linear={...o.linear},n.linear){let s=o.linear,l=n.linear;JA.forEach(c=>{Object.assign(a.linear,{[c]:l[c]??s[c]})})}if(a.grid={...o.grid},n.grid){let s=o.grid,l=n.grid;eM.forEach(c=>{Object.assign(a.grid,{[c]:l[c]??s[c]})})}if(a.toObject={...o.toObject},n.toObject){let s=o.toObject,l=n.toObject;tM.forEach(c=>{Object.assign(a.toObject,{[c]:l[c]??s[c]})})}if(a.randomnessObject={...o.randomnessObject},n.randomnessObject){let s=o.randomnessObject,l=n.randomnessObject;rM.forEach(c=>{Object.assign(a.randomnessObject,{[c]:l[c]??s[c]})})}return a}r.merge=t;function e(o){return!!(o.randomnessObject||o.toObject)}r.isPartial=e})(oo||(oo={}));var zc;(r=>{r.defaultData={radial:{},linear:{},grid:{},toObject:{},randomnessObject:{}};let t=["radial","linear","grid","toObject","randomnessObject"];function e(o,n){let a=[];o.count!==void 0&&a.push({type:0,path:n,props:{count:o.count}});for(let s of t){let l=o[s];l&&Object.keys(l).length>0&&a.push({type:0,path:[...n,s],props:l})}return a}r.toOps=e})(zc||(zc={}));var QA=["count"],ZA=["radius","start","end","position","scale","rotation"],JA=["position","scale","rotation"],eM=["count","size"],tM=["count","position","scale","rotation"],rM=["strength","scale","rotation","position","movement","seed","freqScale"];var Gc;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function t(r){return e.all.includes(r)}e.is=t})(Gc||(Gc={}));var Fc;(e=>{function i(r){return t(r)}e.defaultData=i;function t(r){if(r==="PointLight")return{type:r,color:Ie.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,penumbraSize:.5,depth:1e5};if(r==="SpotLight")return{type:r,color:Ie.white,intensity:1,distance:2e3,decay:1,shadows:!0,penumbra:0,angle:30/180*Math.PI,depth:1e5,penumbraSize:.5,shadowResolution:1024,shadowRadius:1};if(r==="DirectionalLight")return{type:r,color:Ie.white,intensity:1,shadows:!0,size:2e3,depth:1e5,penumbraSize:.5,shadowResolution:1024,shadowRadius:1};throw new Error("not implemented")}})(Fc||(Fc={}));var aa;(r=>(r.defaultShapeData={type:"PlaneEmitterShape",size:[100,100,100]},r.defaultCollisionData={colliderEntityId:null,collisionBounce:.75},r.defaultData={renderMaterial:{type:"particleMaterial",color:{r:1,g:.2,b:.545,a:1},color2:{r:.945,g:.714,b:.184,a:1},coloring:"gradient",ease:"linearFadeOut",easeSize:"linearFadeOut",transparent:!0,size:[40,40],texture:"pt_default_particle",spriteRotation:[0,0]},birthRatePerSec:50,gravity:1,noiseStrength:0,noiseScale:0,noiseSeed:1,noiseType:"curl",randomRotation:0,randomScale:.2,randomMass:.5,rootObjectType:"instancedMesh",life:1,direction:[0,0,0],directionMode:"axis",speed:10,shape:r.defaultShapeData,autoPlay:!0,emitTimeDelay:0,emitTimeCycle:"infinity",emitTimeDuration:1,...r.defaultCollisionData}))(aa||(aa={}));var yi;(t=>t.defaultData={enabled:"visibility",fusedBody:!0,rigidBody:"positioned",density:1,pointMass:0,gravityScale:1,friction:.5,damping:0,restitution:.2,colliderType:"convex",enabledRotation:[!0,!0,!0],enabledTranslation:[!0,!0,!0]})(yi||(yi={}));var Op;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function t(r,o){return r.castShadow===o.castShadow&&r.receiveShadow===o.receiveShadow}e.equals=t})(Op||(Op={}));var Tp;(e=>{e.defaultData={flatShading:!1,wireframe:!1,side:0};function t(r,o){return r.flatShading===o.flatShading&&r.side===o.side&&r.wireframe===o.wireframe}e.equals=t})(Tp||(Tp={}));var jc;(t=>t.defaultData={...Tp.defaultData,...Op.defaultData})(jc||(jc={}));var C0;(t=>{function i(e,r){let o=[];if("material"in e){let n=typeof e.material=="string"?r.materials[e.material]??r.lib.materials[e.material]?.asset:e.material;n&&o.push(n)}else if("materials"in e)for(let n of e.materials){let a=typeof n=="string"?r.materials[n]??r.lib.materials[n]?.asset:n;a&&o.push(a)}return o}t.getMaterialData=i})(C0||(C0={}));var sa;(e=>(e.defaultVideo={data:"",thumb:"/_assets/_videos/catThumb.png",type:"video",name:"Cat video"},e.maxSize=3e7))(sa||(sa={}));var A0;(t=>{function i(e){return e==="texture"||e==="video"||e==="color"||e==="depth"||e==="normal"||e==="gradient"||e==="noise"||e==="fresnel"||e==="rainbow"||e==="toon"||e==="outline"||e==="particle"||e==="transmission"||e==="matcap"||e==="displace"||e==="pattern"||e==="light"}t.is=i})(A0||(A0={}));function I0(i){return i.type!=="displace"}var M0;(t=>{function i(e){return e==="phong"||e==="toon"||e==="lambert"||e==="physical"}t.is=i})(M0||(M0={}));var E0=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],N0=["wrapping","image","video","name","minFilter","magFilter"],vt;(o=>{function i(n,a){let{texture:s,...l}=a;if(Object.assign(n,l),s){let c=n.texture;c&&Object.assign(c,s)}}o.patch=i;function t(n,a){return n==="light"&&a?e(a):r(n)}o.defaultData=t;function e(n){let a={mode:0,isMask:!1,visible:!0,bumpMap:void 0,bumpMapIntensity:5,roughnessMap:void 0,alphaOverride:1};switch(n){case"phong":return{...a,category:"phong",specular:{r:.2,g:.2,b:.2},shininess:5,type:"light",visible:!0,mode:0,occlusion:!0,alpha:.6};case"toon":return{...a,category:"toon",specular:{r:.2,g:.2,b:.2},shininess:10,type:"light",alpha:1};case"lambert":return{...a,category:"lambert",emissive:{r:0,g:0,b:0},type:"light",alpha:1,visible:!0,mode:0,occlusion:!0};case"physical":return{...a,category:"physical",roughness:.2,metalness:.2,reflectivity:.2,type:"light",alpha:1,visible:!0,mode:0,occlusion:!0}}}function r(n){let a={alpha:1,mode:0,isMask:!1,visible:!0};switch(n){case"texture":return{...a,type:"texture",size:[128,128],blending:0,axis:"x",side:2,projection:0,texture:{image:"image_0",wrapping:1e3,repeat:[1,1],offset:[0,0],rotation:0,minFilter:1008,magFilter:1006},crop:!1};case"video":return{...a,type:"video",size:[128,128],blending:0,axis:"x",side:2,projection:0,texture:{video:sa.defaultVideo,wrapping:1001,repeat:[1,1],offset:[0,0],rotation:0,minFilter:1008,magFilter:1006},crop:!1};case"color":return{...a,type:"color",color:Ot.fromHex(yt)};case"depth":return{...a,type:"depth",gradientType:1,smooth:!1,isVector:!0,isWorldSpace:!1,origin:[0,0,0],direction:[1,0,0],colors:[[1,1,1,1],[0,0,0,1]],steps:[0,1],near:50,far:200};case"normal":return{...a,type:"normal",cnormal:[1,1,1]};case"gradient":return{...a,type:"gradient",gradientType:0,smooth:!1,colors:[[0,0,0,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,1,1,1,1,1,1,1,1,1],num:2,angle:0,offset:[0,0],morph:[0,0]};case"noise":return{...a,type:"noise",size:[100,100,100],noiseType:0,scale:1,move:1,colorA:{...Ot.fromHex(6710886),a:1},colorB:{...Ot.fromHex(6710886),a:1},colorC:{...Ot.fromHex(16777215),a:1},colorD:{...Ot.fromHex(16777215),a:1},distortion:[1,1],fA:[1.7,9.2],fB:[8.3,2.8],voronoiStyle:0,highCut:1,lowCut:0,smoothness:.3,seed:0,quality:1};case"fresnel":return{...a,type:"fresnel",color:Ie.fromHexAndA(16777215,1),bias:.1,scale:1,intensity:2,factor:1};case"rainbow":return{...a,type:"rainbow",filmThickness:30,movement:0,wavelengths:[0,0,0],noiseStrength:0,noiseScale:1,offset:[0,0,0]};case"toon":return{...a,type:"toon",positioning:2,colors:[[0,0,0,1],[.5,.5,.5,1],[.5,.5,.5,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,.475,.525,1,1,1,1,1,1,1],num:4,source:[0,1e3,0],isWorldSpace:!0,noiseStrength:0,noiseScale:1,shadowColor:Ie.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{...a,type:"outline",outlineColor:Ie.fromHexAndA(0,1),contourColor:Ie.fromHexAndA(0,1),outlineWidth:2,contourWidth:5,outlineThreshold:.4,contourThreshold:0,outlineSmoothing:0,contourFrequency:10,contourDirection:[0,1,0],positionalLines:!1,compensation:!0};case"matcap":return{...a,type:"matcap",texture:{image:"matcap_0",wrapping:1001,repeat:[1,1],offset:[0,0],rotation:0,minFilter:1008,magFilter:1006}};case"transmission":return{...a,type:"transmission",thickness:10,ior:1.5,roughness:1};case"displace":return{visible:!0,type:"displace",displacementType:"noise",noiseType:0,scale:10,movement:1,offset:[0,0,0],intensity:8,voronoiStyle:0,smoothness:.3,seed:0,highCut:1,lowCut:0,quality:1};case"pattern":return{...a,type:"pattern",style:0,projection:0,axis:"y",blending:0,offset:[0,0],colorA:{...Ot.fromHex(0),a:1},colorB:{...Ot.fromHex(16777215),a:1},frequency:[10,10],size:.5,variation:0,smoothness:.5,zigzag:0,rotation:0,vertical:[0,1],horizontal:[0,1],sides:6}}}})(vt||(vt={}));var Tt;(c=>{function i(u){return!u.layers.some(p=>p.data.type==="texture"&&p.data.projection!==0||p.data.type==="depth"&&!p.data.isWorldSpace||p.data.type==="noise"||p.data.type==="displace")}c.isMergable=i;function t(u){let d="";return u.layers.forEach(p=>{Object.entries(p.data).forEach(([f,h])=>{d+=`${f}${h}`,Array.isArray(h)?h.forEach(m=>d+=`${m}`):typeof h=="object"?Object.values(h).forEach(m=>{typeof m=="number"?d+=`${m.toFixed(4)}`:d+=`${m}`}):d+=`${h}`})}),d}c.getHash=t;function e(){return{layers:new be}}c.defaultEmptyData=e;function r(u="layer1",d="layer2"){return n("phong",u,d)}c.defaultData=r;function o(u,d){return{...u,name:d}}c.withName=o;function n(u,d="layer1",p="layer2"){let f=new be;return f.push({fi:0,data:vt.defaultData("light",u),id:d}),f.push({fi:1,data:vt.defaultData("color"),id:p}),{layers:f}}c.defaultTwoLayerData=n;function a(u){let d=vt.defaultData("texture");u&&Object.assign(d.texture,{image:u});let p=new be;return p.push({fi:0,data:d,id:"layer1"}),p.push({fi:1,data:{...vt.defaultData("transmission"),alpha:1},id:"layer2"}),p.push({fi:2,data:{...vt.defaultData("light","lambert"),alpha:0},id:"layer3"}),{layers:p}}c.defaultUIObjectMaterial=a;function s(u,d="phong",p="layer1",f="layer2"){let h=vt.defaultData("texture");Object.assign(h.texture,{image:u});let m=new be;return m.push({fi:0,data:h,id:p}),m.push({fi:1,data:vt.defaultData("light",d),id:f}),{layers:m}}c.defaultTwoLayerTextureData=s;function l(u,d="phong",p="layer1",f="layer2"){let h=vt.defaultData("video");Object.assign(h.texture,{video:u});let m=new be;return m.push({fi:0,data:h,id:p}),m.push({fi:1,data:vt.defaultData("light",d),id:f}),{layers:m}}c.defaultTwoLayerVideoTextureData=l})(Tt||(Tt={}));var la;(t=>{function i(){return{points:new be,roundness:0,shapeHoles:[],isClosed:!1}}t.defaultData=i})(la||(la={}));var ca;(t=>{function i(){return{points:new be,lastInsertionPlane:null,subdivisions:12,isClosed:!1}}t.defaultData=i})(ca||(ca={}));var Cp={type:"Ellipse",width:50,height:50,spikes:16,angle:360,innerRadius:0};var Uc;(t=>{function i(e,r){let o={...e};return oM.forEach(n=>{Object.assign(o,{[n]:r[n]??e[n]})}),o}t.merge=i})(Uc||(Uc={}));var kc={shape:Cp,depth:1,offset:0,bevel:50,bevelSides:6,angle:0,twist:0,startScale:1,endScale:1,capType:"flat"},oM=["depth","offset","angle","twist","startScale","endScale"];var js;(r=>{function i(o){return o==="PolygonGeometry"||o==="RectangleGeometry"||o==="StarGeometry"||o==="TriangleGeometry"||o==="EllipseGeometry"||o==="UIGeometry"}r.is2DParametricMesh=i;function t(o){return o==="PolygonGeometry"||o==="RectangleGeometry"||o==="StarGeometry"||o==="TriangleGeometry"||o==="EllipseGeometry"||o==="PathGeometry"||o==="VectorGeometry"||o==="ConeGeometry"||o==="CubeGeometry"||o==="CylinderGeometry"||o==="DodecahedronGeometry"||o==="HelixGeometry"||o==="IcosahedronGeometry"||o==="LatheGeometry"||o==="PyramidGeometry"||o==="SphereGeometry"||o==="PlaneGeometry"||o==="BackdropGeometry"||o==="TorusGeometry"||o==="TorusKnotGeometry"||o==="BooleanGeometry"||o==="TextGeometry"||o==="InputGeometry"}r.isParametricMesh=t;function e(o){return o==="PolygonGeometry"||o==="RectangleGeometry"||o==="StarGeometry"||o==="TriangleGeometry"||o==="EllipseGeometry"||o==="PathGeometry"||o==="VectorGeometry"||o==="ConeGeometry"||o==="CubeGeometry"||o==="CylinderGeometry"||o==="DodecahedronGeometry"||o==="HelixGeometry"||o==="IcosahedronGeometry"||o==="LatheGeometry"||o==="PyramidGeometry"||o==="SphereGeometry"||o==="PlaneGeometry"||o==="BackdropGeometry"||o==="TorusGeometry"||o==="TorusKnotGeometry"||o==="TextGeometry"||o==="SubdivGeometry"||o==="NonParametricGeometry"}r.isSwappableGeometry=e})(js||(js={}));var Hc;(t=>{function i(e,r){let o={...e};return Object.assign(o,r),o.type==="PathGeometry"&&"extrusion"in r&&r.extrusion&&(o.extrusion={...e.extrusion},Object.assign(o.extrusion,Uc.merge(o.extrusion,r.extrusion))),o}t.merge=i})(Hc||(Hc={}));var io;(t=>{function i(e){if(e==="RectangleGeometry")return{width:320,height:320,type:e,cornerRadius:[0,0,0,0],cornerType:0,depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="UIGeometry")return{type:e,frame:"",cornerRadius:[0,0,0,0],cornerType:0,width:1,height:1};if(e==="PathGeometry")return{type:e,width:1,height:1,depth:1,path:ca.defaultData(),extrusion:kc};if(e==="VectorGeometry")return{width:1,height:1,type:e,subdivisions:12,shape:la.defaultData(),depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="BooleanGeometry")return{type:e,operation:2,width:0,height:0,depth:0,phongAngle:35};if(e==="ShapeBlendGeometry")return{type:e,width:0,height:0,depth:0,resolutionLevel:6,blendRange:100,useChildrenColors:!1};if(e==="TextGeometry")return{type:e,width:100,height:100,depth:0,horizontalAlign:1,verticalAlign:1,fontSize:16,lineHeight:1.2,letterSpacing:0,text:{textValue:""},textTransform:1,font:"Roboto_regular",editable:!1,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="InputGeometry")return{...t.defaultData("TextGeometry"),type:e,editable:!0};if(e==="SphereGeometry")return{type:"SphereGeometry",width:100,height:100,depth:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:180};throw new Error("not implemented")}t.defaultData=i})(io||(io={}));var Wc;(t=>t.defaultData={enabled:!1,useBackgroundColor:!1,color:Ot.white,near:.1,far:2e3})(Wc||(Wc={}));var qc;(e=>{let i={opacity:1,blendFunction:13,enabled:!1};e.defaultData={enabled:!1,pixelation:{...i,blendFunction:16,granularity:15},bloom:{...i,blendFunction:16,intensity:1,blurScale:1,luminanceThreshold:.25,luminanceSmoothing:.025,kernelSize:3},chromaticAberration:{...i,offset:[2,2]},vignette:{...i,darkness:1,offset:0},hueSaturation:{...i,hue:3,saturation:0},brightnessContrast:{...i,brightness:.25,contrast:0},depthOfField:{...i,focusDistance:100,focalLength:20,bokehScale:5},noise:{...i,blendFunction:16}}})(qc||(qc={}));var Ap;(t=>t.defaultData={softShadowQuality:"low"})(Ap||(Ap={}));var Mp;(t=>t.defaultData={enabled:!0,color:{r:.8274509803921568,g:.8274509803921568,b:.8274509803921568},intensity:.75})(Mp||(Mp={}));var Ip;(t=>t.defaultData={occlusion:!1,aoFullRes:!1,radius:256,bias:.5,aoColor:{r:.19607843137254902,g:.19607843137254902,b:.19607843137254902}})(Ip||(Ip={}));var Us;(t=>t.defaultData={usePhysics:!1,gravity:-10})(Us||(Us={}));var Ep;(t=>t.defaultData={playCamera:fi,gameControlObject:null})(Ep||(Ep={}));var $c;(t=>t.defaultData={backgroundColor:Ie.fromHexAndA(T0,1),postprocessing:qc.defaultData,fog:Wc.defaultData,globalPhysics:Us.defaultData,ambient:Mp.defaultData,ao:Ip.defaultData,shadow:Ap.defaultData,publish:Ep.defaultData})($c||($c={}));var Xc;(t=>t.defaultData={colliderType:"box",size:[100,100,100],colliderHelperVisible:!0,forceType:"collider",forceRange:"global",forceIntensity:.5,forceDambing:.95})(Xc||(Xc={}));var D0;(e=>{function i(r){return r==="Component"||r==="Instance"}e.isComponentRelated=i;function t(r){return r==="Empty"||r==="Instance"}e.isEmptyOrComponent=t})(D0||(D0={}));var ua;(o=>{o.identity={...Vc.identity,hiddenMatrix:pi.identity};function t(n){return{position:n.position,rotation:n.rotation,scale:n.scale,hiddenMatrix:n.hiddenMatrix}}o.fromObject=t;function e(n,a){return{position:a?.position||n.position,rotation:a?.rotation||n.rotation,scale:a?.scale||n.scale,hiddenMatrix:a?.hiddenMatrix||n.hiddenMatrix}}o.merge=e;function r(n,a){return Wl({position:di.isEqual(n.position,a.position)?void 0:a.position,rotation:di.isEqual(n.rotation,a.rotation)?void 0:a.rotation,scale:di.isEqual(n.scale,a.scale)?null:a.scale,hiddenMatrix:pi.isEqual(n.hiddenMatrix,a.hiddenMatrix)?void 0:a.hiddenMatrix})}o.diff=r})(ua||(ua={}));var gt;(t=>t.defaultData={states:new be,events:new be,timelineAnimations:new ue,visible:!0,raycastLock:!1,physics:yi.defaultData,pathSnapping:{pathId:null,slide:0,offset:0,orientation:"tangential"},...ua.identity,cloner:null})(gt||(gt={}));var Yc;(t=>t.defaultData={type:"Empty",...gt.defaultData})(Yc||(Yc={}));var _0;(t=>t.defaultData={type:"ParticleCollider",...Xc.defaultData,...gt.defaultData})(_0||(_0={}));var R0;(t=>t.defaultData={type:"Component",...gt.defaultData})(R0||(R0={}));var L0;(t=>t.defaultData={type:"Particle",...gt.defaultData,...aa.defaultData})(L0||(L0={}));var Do;(t=>t.defaultData={type:"Mesh",...gt.defaultData,...jc.defaultData})(Do||(Do={}));var en;(t=>t.defaultData={...gt.defaultData,...ua.identity,position:[0,0,mi.DefaultTargetOffset],...mi.defaultData})(en||(en={}));var Kc;(e=>{function i(r){return{...gt.defaultData,...Fc.defaultData(r)}}e.defaultData=i,e.defaultDirectionalLightData={...e.defaultData("DirectionalLight"),position:[200,300,300],name:"Directional Light",intensity:.7}})(Kc||(Kc={}));var da;(e=>{function i(r,o,n=0){for(;n<o.length;){let a=r?r[o[n]]:void 0;if(o.length===n+1)return a;if(a)r=a.descendants,n+=1;else return}}e.resolveWithDes=i;function t(r,o,n=0){let a=i(r,o,n);if(a){let s=Object.keys(a);if(s.length===1&&s[0]==="descendants")return}return a}e.resolve=t})(da||(da={}));var no;(n=>{n.rootOverrideProps=["physics","events"],n.compositeNonOptionalOverrideProps=["geometry"],n.compositeEntireOverrideOverrideProps=["material"];function r(a,s){return{...gt.defaultData,...s,component:a,overrides:new He,physics:void 0,events:void 0,type:"Instance"}}n.ofComponent=r;function o(a){let s=ua.fromObject(a.data);return r(a.id,s)}n.fromComponentData=o})(no||(no={}));var _o;(e=>{e.defaultData={type:"Page",...gt.defaultData,physics:{...yi.defaultData,fusedBody:!1},...$c.defaultData,camera:en.defaultData};function t(r){return r.uiScene!==void 0}e.isUIPage=t})(_o||(_o={}));var Qc;(s=>(s.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:pi.identity,name:"Play Camera",visible:!0,raycastLock:!1,physics:yi.defaultData,states:new be,events:new be,timelineAnimations:new ue,cloner:null,pathSnapping:{pathId:null,orientation:"tangential",slide:0,offset:0},...mi.defaultData},s.KeysByResetCategory={States:["states"],Events:["events"],Material:["material","materials"],Geometry:["geometry"],Position:["position"],Rotation:["rotation"],Scale:["scale"],Transform:["position","scale","rotation","hiddenMatrix"],Name:["name"],Visibility:["visible","raycastLock","flatShading","wireframe","side"],Shadows:["castShadow","receiveShadow"],Cloner:["cloner"],Physics:["physics"]},s.defaultMeshObject={name:"Rectangle",...gt.defaultData,...Do.defaultData,geometry:io.defaultData("RectangleGeometry"),material:Tt.defaultTwoLayerData("phong","layer1","layer2")},s.defaultBooleanObject={name:"Boolean",...gt.defaultData,...Do.defaultData,geometry:io.defaultData("BooleanGeometry"),material:Tt.defaultTwoLayerData("phong","layer1","layer2")},s.defaultShapeBlendObject={name:"Shape Blend",...gt.defaultData,...Do.defaultData,geometry:io.defaultData("ShapeBlendGeometry"),material:Tt.defaultTwoLayerData("phong","layer1","layer2")},s.defaultTextObject={name:"Text",...gt.defaultData,...Do.defaultData,geometry:io.defaultData("TextGeometry"),material:Tt.defaultTwoLayerData("phong","layer1","layer2")},s.defaultInputObject={name:"Input",...gt.defaultData,...Do.defaultData,geometry:io.defaultData("InputGeometry"),material:Tt.defaultTwoLayerData("phong","layer1","layer2")}))(Qc||(Qc={}));var tn;(o=>{function i(n,a){let s={name:a};return n.type==="Mesh"?(s.geometry={},"material"in n&&(s.material={layers:new He}),"materials"in n&&(s.materials=n.materials.map(l=>({layers:new He})))):_r.is(n.type)&&(s.perspective={},s.orthographic={}),s}o.newEmpty=i;function t(n,a){if(a===void 0)return n;let s={...n};return"material"in s&&"material"in a&&a.material&&(s.material=si(s.material,l=>{if(typeof l!="string")for(let[c,u]of Object.entries(a.material.layers)){let d=l.layers.data(c);d&&vt.patch(d,u)}}).data),s.materials&&a.materials&&(s.materials=si(s.materials,l=>{for(let c=0;c<s.materials.length;c++){let u=a.materials[c];if(typeof u!="string")for(let[d,p]of Object.entries(u.layers)){let f=l[c]?.layers?.data(d);f&&vt.patch(f,p)}}}).data),s}function e(n,a){let s,l=[],c={orthographic:0,perspective:0,geometry:0};function u(d,p){for(let[f,h]of Object.entries(p.layers)){let{texture:m,...y}=h;if(m!==void 0&&Object.keys(m).length>0){let x={path:[...d,"layers",f,"texture"],props:m,type:0};l.push(x)}if(Object.keys(y).length>0){let x={path:[...d,"layers",f],props:y,type:0};l.push(x)}}}for(let[d,p]of Object.entries(a))if(d!=="name")if(d==="cloner")l.push(...zc.toOps(p,["cloner"]));else if(d==="pathSnapping")l.push({path:[d],props:{slide:p.slide,offset:p.offset},type:0});else if(d==="material")u(["material"],p);else if(d==="materials")for(let[f,h]of Object.entries(p))u(["materials",f],h);else if(c[d]===0){if(d==="geometry"&&p.extrusion!==void 0){let f={path:[d,"extrusion"],props:p.extrusion,type:0};l.push(f),p={...p},delete p.extrusion}if(Object.keys(p).length>0){let f={path:[d],props:p,type:0};l.push(f)}}else s===void 0&&(s={path:[],props:{},type:0},l.push(s)),s.props[d]=p;return l}o.toOps=e;function r(n,a){if(a===void 0)return n;let s={...n};if(Object.assign(s,ua.merge(s,a)),Object.assign(s,{pathSnapping:Object.assign({},s.pathSnapping,{slide:a.pathSnapping?.slide??s.pathSnapping?.slide??0,offset:a.pathSnapping?.offset??s.pathSnapping?.offset??0})}),_r.is(n.type)){s.orthographic={...s.orthographic},s.perspective={...s.perspective};let l=a;l.orthographic?.zoom!==void 0&&(s.orthographic.zoom=l.orthographic.zoom),l.perspective?.zoom!==void 0&&(s.perspective.zoom=l.perspective.zoom),l.isUpVectorFlipped!==void 0&&(s.isUpVectorFlipped=l.isUpVectorFlipped),l.targetOffset!==void 0&&(s.targetOffset=l.targetOffset)}else if(n.type==="Mesh")"geometry"in a&&Object.assign(s,{geometry:Hc.merge(s.geometry,a.geometry)}),(a.material||a.materials)&&(s=t(s,a)),s.cloner&&"cloner"in a&&Object.assign(s,{cloner:oo.merge(s.cloner,a.cloner)});else if(n.type==="Empty")s.cloner&&"cloner"in a&&Object.assign(s,{cloner:oo.merge(s.cloner,a.cloner)});else if(Gc.is(n.type)){let l=a;l.intensity!==void 0&&(s.intensity=l.intensity),l.color!==void 0&&(typeof l.color=="string"?s.color=l.color:s.color=Ot.clone(l.color))}return s}o.patch=r})(tn||(tn={}));var pa;(t=>t.defaultData={enablePan:!0,enableZoom:!0,enableRotate:!0,enableDamping:!0,rotationLimitsMode:0,rotationVerticalOffset:{min:Math.PI/4,max:Math.PI/4},rotationHorizontalOffset:{min:Math.PI/4,max:Math.PI/4},rotationSoftLimit:2,panLimitsMode:0,panVerticalOffset:{min:250,max:250},panHorizontalOffset:{min:250,max:250},panSoftLimit:2,zoomLimitsEnabled:!1,zoomLimits:{min:.1,max:2},autoRotate:!1,autoRotateSpeed:2,autoRotateClockwise:!0,hoverRotatePanMode:0,hoverRotatePanStrength:20,hoverRotateDamping:.125,isTouchZoom:!0,orbitTouches:2,panTouches:3,resetHoverEffectOnPointerLeave:!0})(pa||(pa={}));var vr;(t=>t.defaultData={orbitControls:pa.defaultData,playPage:hi,withBackground:!0,preventScroll:!1,preventTouchScroll:!1,hideCursor:!1,mouseEventTarget:"canvas",joystickSizeAndXYOffset:Array(12).fill(0).map((e,r)=>{let o=0,n=0;return r<5?n=-30:r<10&&(n=30),r===0||r===10||r===5?o=30:(r===4||r===11||r===9)&&(o=-30),[120,[o,n],"show"]}),settings:{image:{format:"jpg",ratio:1},videoStatic:{fps:60,mbps:150,ratio:1,duration:1e3,activeTimeline:null},video:{format:"mp4",imageFormat:"jpg",fps:30,mbps:80,ratio:Math.max(1,typeof window<"u"?Math.floor(window.devicePixelRatio):1),stopMode:"manual",duration:5e3},web:{logo:!0,compress:!0,preset:1,preload:!0,hint:!1,imageQuality:70,pixelRatioMobile:0,pixelRatioDesktop:0}},stopRaycast:!0,hdTransmission:!1})(vr||(vr={}));var Np;(t=>t.defaultData={id:"basic",label:"Basic",style:"None",prompt:""})(Np||(Np={}));var Dp;(t=>t.defaultData={weather:0,shadows:0,lightOrigin:0,temperature:0,sun:0,camera:0,environment:0,particles:0,nature:0,floor:0})(Dp||(Dp={}));var Ro;(e=>(e.defaultData=()=>({mode:"line-art-both",prompt:"",negativePrompt:"",style:{...Np.defaultData},isRandomSeed:!0,seed:e.generateSeed(),guessMode:!1,advanced:!1,steps:20,guidanceScale:7.5,controlNetScale:1,modifiers:Dp.defaultData}),e.generateSeed=()=>Math.round(Math.random()*1e5)))(Ro||(Ro={}));var B0;(e=>{function i(r){return r.find(o=>o.data.type==="Page"&&o.data.globalPhysics.usePhysics)!==void 0}e.physicsEnabled=i;function t(r,o,n){r.scene.objects.traverseFrom(o,(a,s)=>{if(s.type==="Instance"){let l=fa.getComponentData(r,s.component)?.data;l&&n(a,s,l.events)}else n(a,s,s.events)})}e.traverseModuleInstances=t})(B0||(B0={}));var Lo;(c=>{c.TRASH_CAN_ID="830a2708-8ed9-49cf-a68e-085299892222",c.defaultLight={fi:-1,data:Kc.defaultDirectionalLightData,id:"830a2708-8ed9-49cf-a68e-085299899103",children:[]};function e(u=!0,d=[]){let p=[],f=Qc.defaultMeshObject;u&&(p.push({...c.defaultLight}),p.push({fi:1,id:"7ba78968-2a55-48f2-b14c-5191da3e075e",data:f,children:[]})),p.push(...d);let h=new Qe;return h.push({fi:1,id:hi,data:{..._o.defaultData,name:"Scene 1"},children:p}),h}c.createDefaultObjectTreeWithPage=e,c.defaultData={objects:e(),publish:vr.defaultData,styles:Ro.defaultData()},c.emptyDataWithoutPage=function(){return{objects:new Qe,publish:vr.defaultData,styles:Ro.defaultData()}},c.emptyDataWithPage=function(u=!0){return{objects:e(u),publish:vr.defaultData,styles:Ro.defaultData()}},c.emptyData=function(){return{objects:new Qe,publish:{...vr.defaultData},styles:Ro.defaultData()}};function s(u){return{...c.defaultData,objects:Pt(u,Qe.prototype)}}c.withObjs=s;function l(u,d){return s([{id:u,data:d,children:[],fi:0}])}c.withObj=l})(Lo||(Lo={}));var ha;(t=>t.defaultData={preset:"fullscreen",allowResponsive:!1,size:[512,512],coords:[0,0],sceneScale:1,color:{r:0,g:0,b:0,a:.5}})(ha||(ha={}));var Zc;(e=>(e.defaultData=r=>({url:r,name:"New Webhook",parametersSchemas:new be}),e.defaultParameterValueByType=r=>r==="number"?0:r==="boolean"?!1:""))(Zc||(Zc={}));var V0;(t=>t.defaultData=(e,r="GET")=>({url:e,method:r,name:"New API",headers:new be,queries:new be,autoStart:!0}))(V0||(V0={}));var gi;(n=>{function i(a){return a.textValue!==void 0}n.isTextValue=i;function t(a){return typeof a=="number"}n.isNumber=t;function e(a){return typeof a=="boolean"}n.isBoolean=e;function r(a){return i(a)?"string":e(a)?"boolean":"number"}n.typeOfVariable=r;function o(a){return n.isTextValue(a)?Array.isArray(a.textValue)?a.textValue.map(s=>s.toString().padStart(a.padding??2,"0")).join(a.deliminator??":")+(a.suffix!==void 0?" "+a.suffix:""):a.textValue.toString():n.isBoolean(a)?a?"True":"False":n.isNumber(a)?parseFloat(a.toFixed(3)).toString():a.toString()}n.getDisplayedValue=o})(gi||(gi={}));var _p;(t=>t.all=["images","videos","colors","audios","particles","fonts","materials","variables"])(_p||(_p={}));var z0;(t=>t.all=[..._p.all,"components"])(z0||(z0={}));var G0;(t=>{function i(){return{images:new ue,videos:new ue,colors:new ue,audios:new ue,particles:new ue,fonts:new ue,materials:new ue,components:new ue,variables:new ue,userAPIs:new ue,userWebhooks:new ue,timelineAnimations:new ue}}t.defaultData=i})(G0||(G0={}));var Rr;(t=>{function i(){return{images:new ue,videos:new ue,colors:new ue,audios:new ue,particles:new ue,fonts:new ue,materials:new ue,components:new ue,variables:new ue,userAPIs:new ue,userWebhooks:new ue,timelineAnimations:new ue}}t.defaultData=i})(Rr||(Rr={}));var Sr;(n=>{function i(){let a={};return a["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},Pt(a,ue.prototype)}n.defaultColors=i;function t(){return Pt({},ue.prototype)}n.defaultImages=t;function e(){return{catelogs:new ue,materials:new ue,images:new ue,videos:new ue,colors:new ue,timelineAnimations:new ue,audios:new ue,particles:new ue,fonts:new ue,variables:new be,userAPIs:new ue,userWebhooks:new ue,lib:Rr.defaultData()}}n.emptyData=e;function r(a){switch(a){case"number":return{value:0,name:"Number"};case"boolean":return{value:!1,name:"Boolean"};case"string":return{value:{textValue:"String value"},name:"String"};case"time":let s=[0,0,0];return{name:"Time",value:{textValue:s,deliminator:":",padding:2,suffix:"AM"},dynamicVariableType:"time",format:"HH:mm:ss",format12h24h:"12ampm",timeZone:null,hasEnd:!1,endValue:{textValue:s,deliminator:":",padding:2,suffix:"AM"},autoStart:!0,repeat:!1};case"counter":return{name:"Counter",value:0,dynamicVariableType:"counter",updateInterval:1e3,increment:1,autoStart:!0,hasEnd:!0,endValue:60,repeat:!0,randomStart:!1,range:[0,100],decimals:0};case"random":return{name:"Random",value:0,dynamicVariableType:"random",updateInterval:1e3,increment:1,autoStart:!0,isStatic:!1,hasEnd:!0,endValue:60,repeat:!0,min:0,max:100,decimals:0};default:console.error("Unknown variable type",a)}}n.defaultVariables=r;function o(a,s){if(s.format==="HH:mm:ss"){let l=Math.floor(a/3600),c=Math.floor((a-l*3600)/60),u=Math.round(a-l*3600-c*60);return{textValue:[l,c,u]}}else if(s.format==="mm:ss"){let l=Math.floor(a/60),c=Math.round(a-l*60);return{textValue:[l,c]}}else return s.format==="number"?a=Math.round(a):a=Math.round(a*1e3)/1e3,a}n.getFormattedTimerTime=o})(Sr||(Sr={}));import{MathUtils as tu}from"three";var Jc;(t=>t.list=["idle","move","jump","run"])(Jc||(Jc={}));var eu;(e=>(e.defaultColliderData={type:"capsule",height:200,radius:50,position:[0,0,0],rotation:[0,0,0]},e.defaultDataThirdPerson={moveMode:"walk",forwardDirection:"+z",speedTranslate:1e3,speedRotate:100,runMultiplier:2,rotationMode:"normal",rotBy:"keys",rotByTouch:"drag",delayPos:[.3,.3],delayRot:[.3,.3],keyAssignments:[["moveNegZ","W"],["moveNegX","A"],["movePosZ","S"],["movePosX","D"],["rotPosX","\u25B2"],["rotPosY","\u25C0"],["rotNegX","\u25BC"],["rotNegY","\u25B6"],["jump","Space"],["run","\u21E7"],["none","Ctrl"]],touchControl:!0,joystickPosLoc:5,joystickRotLoc:11,jumpTouchButtonLoc:9,collider:e.defaultColliderData,colliderHelperVisible:!0,collisionEnabled:!0,jumpPower:100,resetYPosition:3e3,alignToGround:!1,autoOrientMove:!0,orientWith:"camera",orientMode:"radial",delayPosCamera:.3,delayRotCamera:.3,camera:"",cameraXAxis:"Limit",cameraYAxis:"Free",cameraRotXLimits:[0,Math.PI/2],cameraRotYLimits:[-Math.PI/2,Math.PI/2],gameActions:{idle:new be,move:new be,jump:new be,run:new be},navmesh:{enabled:!1,ch:6,cs:6,walkableClimb:5,walkableHeight:1,walkableRadius:0,zones:"all",objects:[],helperVisible:!0,destinationHelperRadius:0,destinationHelperColor:Ie.fromHexAndA(3728051,1)}}))(eu||(eu={}));function F0(i){i.layers.forEach(t=>{if(t.type==="depth"&&t.colorA!==void 0){let e=t.colorA,r=t.colorB,o=[[e.r,e.g,e.b,e.a],[r.r,r.g,r.b,r.a]],n=[0,1];for(let s=2;s<10;s++)o.push(o[1]),n.push(1);let a={...Dr(at(t),"type","visible","isVector","isWorldSpace","origin","alpha","mode"),near:Math.max(0,t.near),far:Math.max(0,t.far),colors:o,steps:n,num:2,direction:[1,0,0],smooth:!1,gradientType:1};Object.assign(t,a)}else if(t.type==="depth"&&t.gradientType===1&&(t.near<0||t.far<0)){let e={...at(t),near:Math.max(t.near,0),far:Math.max(t.far,0)};Object.assign(t,e)}})}function Bo(i,t){Object.values(i.shared.materials).forEach(e=>t(e))}function Vo(i,t){i.scene.objects.traverse((e,r)=>{"materials"in r?r.materials.forEach((o,n)=>{o===void 0&&(r.materials[n]=Tt.defaultData(),o=r.materials[n]),typeof o!="string"&&t(o)}):"material"in r?typeof r.material!="string"&&(r.material===void 0&&(r.material=Tt.defaultData()),t(r.material)):r.type==="Mesh"&&(r.material===void 0&&(r.material=Tt.defaultData()),t(r.material)),"overrides"in r&&Object.values(r.overrides).forEach(o=>{o.material&&typeof o.material!="string"&&Object.getPrototypeOf(o.material)!==He.prototype&&t(o.material)})})}function iM(i){Object.assign(i.scene.publish,{orbitControls:{...pa.defaultData,...at(i.scene.publish.orbitControls)}})}function nM(i){Object.assign(i.scene.publish.settings,{video:{...vr.defaultData.settings.video,...at(i.scene.publish.settings.video)}})}function aM(i){function t(e){if(e.layers){for(let r of Object.values(e.layers))if(r){for(let[o,n]of Object.entries(r))if((E0.includes(o)||typeof n=="boolean")&&delete r[o],o==="texture")for(let[a,s]of Object.entries(n))(N0.includes(a)||typeof s=="boolean")&&delete n[a]}}}i.scene.objects.traverse((e,r)=>{r.states.forEach(o=>{let n=o;n.material?t(n.material):n.materials&&n.materials.forEach(a=>{t(a)})})})}function sM(i){i.scene.publish.withBackground=!0}function lM(i){i.scene.publish.settings.web={compress:!0,preload:!0,preset:1,logo:!0,hint:!1}}function cM(i){i.scene.objects.traverse((t,e)=>{let r=e.cloner;r&&(r.radial.scale=r.radial.scale.map(o=>o+1),r.linear.scale=r.linear.scale.map(o=>o+1))})}function uM(i){i.scene.objects.traverse((t,e)=>{let r=e.geometry;r&&(r.type==="DodecahedronGeometry"||r.type==="IcosahedronGeometry")&&(r.detail=Math.round(r.detail))})}function dM(i){i.scene.objects.traverse((t,e)=>{let r=i.scene.objects.unproxy().parent(t);if(r){let o=at(i.scene.objects.data(r));o&&o.type==="Mesh"&&o.geometry.type==="BooleanGeometry"&&e.type==="Mesh"&&(e.visible=at(e).booleanExclude!==!0)}})}function pM(i){i.scene.objects.traverse((t,e)=>{if(e.type==="Mesh"){let r=e;e.geometry.type==="NonParametricGeometry"?r.material!==void 0&&delete r.material:r.materials!==void 0&&delete r.materials}})}function fM(i){function t(r){Object.setPrototypeOf(r,He.prototype),r.texture&&Object.setPrototypeOf(r.texture,He.prototype)}function e(r){Object.setPrototypeOf(r,He.prototype);for(let o in r)t(r[o])}i.scene.objects.traverse((r,o)=>{o.states.forEach(n=>{let a=n;if(a.material){let s=at(a.material).layers;e(s),a.material.layers=s}if(a.materials)for(let s=0;s<a.materials.length;s++){let l=a.materials[s],c=at(l).layers;e(c),l.layers=c}})})}function j0(i){i.layers===void 0&&Object.assign(i,Tt.defaultTwoLayerData("lambert"))}function Rp(i){!i.layers||i.layers.forEach(t=>{if(t.type==="depth"&&t.colors.length===10){let e=[...t.colors];e.push(t.colors[9]);let r=[...t.steps];r.push(t.steps[9]);let o={...at(t),colors:e,steps:r};Object.assign(t,o)}})}function hM(i){i.scene.objects.traverse((t,e)=>{e.type==="Mesh"&&(e.geometry.type==="BooleanGeometry"||e.geometry.type==="SubdivGeometry")&&(e.geometry.phongAngle=35)})}function U0(i){i.scene.objects.traverse((t,e)=>{"materials"in e?e.materials.forEach(r=>{typeof r!="string"&&Rp(r)}):"material"in e&&typeof e.material!="string"&&Rp(e.material)}),Object.values(i.shared.materials).forEach(t=>Rp(t))}function mM(i){i.scene.environment.ambientLight.softShadows=!1,i.scene.environment.ambientLight.softShadowQuality="low",i.scene.objects.traverse((t,e)=>{(e.type==="DirectionalLight"||e.type==="SpotLight")&&(e.shadowResolution=1024,e.shadowRadius=1,e.depth=1e5)}),i.shared.penumbraSize=new Array(5).fill(.5)}function yM(i){i.shared.audios=Pt({},ue.prototype)}function gM(i){i.shared.videos=Pt({},ue.prototype)}function xM(i){let t=i.shared.materials;Object.entries(t).forEach(([e,r])=>{if(!r.layers){let o={name:"Untitled Material",layers:[{fi:0,data:{type:"light",category:"phong",alpha:.6,visible:!0,mode:0,specular:{r:.2,g:.2,b:.2},shininess:5},id:"layer1"},{fi:1,data:{type:"color",alpha:1,visible:!0,mode:0,color:{r:.2823529411764706,g:.2823529411764706,b:.30196078431372547}},id:"layer2"}]};Object.assign(t,{[e]:o})}})}function bM(i){Object.entries(at(i.shared.images)).filter(r=>r[1].asset===!1).map(r=>r[0]).forEach(r=>{delete i.shared.images[r]}),Object.entries(at(i.shared.audios)).filter(r=>r[1].asset===!1).map(r=>r[0]).forEach(r=>{delete i.shared.audios[r]})}function vM(i){i.scene.publish.settings.web.preload=!1}function k0(i){i.layers&&i.layers.forEach(t=>{t.type==="depth"&&t.num!==void 0&&(t.colors=t.colors.slice(0,t.num),t.steps=t.steps.slice(0,t.num),delete t.num)})}function H0(i){i.layers&&i.layers.forEach(t=>{I0(t)&&t.isMask===void 0&&(t.isMask=!1),(t.type==="texture"||t.type==="video")&&t.blending===void 0&&(t.blending=0),(t.type==="noise"||t.type==="displace"&&t.displacementType==="noise")&&(t.voronoiStyle===void 0&&(t.voronoiStyle=0),t.highCut===void 0&&(t.highCut=1),t.lowCut===void 0&&(t.lowCut=0),t.smoothness===void 0&&(t.smoothness=.3),t.seed===void 0&&(t.seed=0),t.quality===void 0&&(t.quality=1))})}function SM(i){i.shared.fonts=Pt({},ue.prototype)}function wM(i){return i.replace(".typeface","").replace(/optimer/gi,"open sans").replace("space_mono","space mono").replace(/alma_mono/gi,"varela round").replace(/droid_sans_mono/gi,"noto sans mono").replace(/droid_sans|gentilis|gnomon_(simple|foreground)|helvetiker/gi,"roboto").replace(/droid_serif/gi,"roboto slab").replace("_sans"," sans").replace("crimson_text","crimson text").replace("medium_medium","medium").replace("fatface_fatface","fatface").replace("100hairline","thin").replace("200thin","extralight").replace("300light","light").replace("500medium","medium").replace("600semi","semibold").replace("800heavy","extrabold").replace("900black","black").replace(/bodoni_(11|16|24|36|48|72|96)([^_])/gi,"bodoni_$1_$2").replace(/bodoni_(11|16|24|36|48|72|96)/gi,"bodoni moda").replace(/(thin|hairline)(_regular)?/gi,"100").replace(/(extra|ultra)light(_regular)?/gi,"200").replace(/light(_regular)?/gi,"300").replace(/_book|_normal|_roman/gi,"_regular").replace(/medium(_regular)?/gi,"500").replace(/(semi|demi)bold(_regular)?/gi,"600").replace(/(extra|ultra)bold(_regular)?/gi,"800").replace(/bold(_regular)?/gi,"700").replace(/(black|heavy|fatface)(_regular)?/gi,"900").replace(/([1-9]00)_italic/gi,"$1italic").replace(/regularitalic/gi,"italic").replace(/regularitalic/gi,"italic").split(" ").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" ")}function PM(i){let t=[];i.scene.objects.traverse((e,r)=>{let o=r;if(o.type==="TextFrame"){let n=Tt.defaultTwoLayerData("phong"),a=typeof o.color=="string"?i.shared.colors[o.color]:o.color;n.layers[1].data.color={r:a.r,g:a.g,b:a.b},n.layers[1].data.alpha=o.alpha;let s=wM(o.font);i.shared.fonts[s]===void 0&&(i.shared.fonts[s]={name:s});let l={name:o.name,...gt.defaultData,...Do.defaultData,flatShading:!1,wireframe:!1,geometry:{...io.defaultData("TextGeometry"),width:o.width,height:o.height,font:s,depth:0,horizontalAlign:o.horizontalAlign,verticalAlign:o.verticalAlign,fontSize:o.fontSize*1.40625,lineHeight:o.lineHeight/1.40625,letterSpacing:o.letterSpacing-1,text:o.text,textTransform:o.textTransform,extrudeBevelSize:0,extrudeBevelSegments:1},material:n,states:at(o.states),events:at(o.events),visible:o.visible,raycastLock:o.raycastLock,position:o.position,rotation:o.rotation,scale:o.scale,hiddenMatrix:o.hiddenMatrix},c=at(i.scene.objects).parent(e);i.scene.objects.insertAfter(c??null,e,[{id:e+"new",data:l,children:[]}]),t.push(e)}}),t.forEach(e=>{i.scene.objects.delete(e)})}function OM(i){let t={0:"MouseDown",1:"MouseUp",2:"MouseHover",5:"KeyDown",6:"KeyUp",7:"Start",9:"LookAt",10:"Follow",11:"Scroll",12:"Audio",13:"GameControl"};i.scene.objects.traverse((e,r)=>{r.events.forEach(o=>{if(!!t[Number(o.type)])if(Object.assign(o,{type:t[Number(o.type)]}),o.type==="Audio"&&"audioEvent"in o&&(Object.assign(o,{playAudio:o.audioEvent}),delete o.audioEvent),o.type==="GameControl")Object.assign(o,{gameActions:{idle:new be,move:new be,jump:new be}});else{let n=new be;Object.assign(o,{actions:n}),(o.type==="MouseDown"||o.type==="MouseUp"||o.type==="KeyDown"||o.type==="KeyUp")&&"url"in o&&n.push({fi:0,id:tu.generateUUID(),data:{type:"Link",url:o.url,delay:0}}),"targets"in o&&(o.targets.forEach((a,s,l)=>{let c={state:void 0,repeat:0,delay:0,delayDirection:void 0,direction:"normal",duration:0,easing:4},u={easing:a.easing,duration:a.duration};a.easing===6?Object.assign(u,Dr(a,"mass","stiffness","damping","velocity")):a.easing===5&&Object.assign(u,{control1:{...a.control1},control2:{...a.control2}});let d={repeat:a.repeat?-1:0,delay:a.delay,delayDirection:a.delayDirection,direction:a.cycle&&a.rewind?"pingpong-rewind":a.cycle?"pingpong":"normal"},p={state:a.state,...d,...u},f={allowSlerp:!0,type:"Transition",object:a.object,repeat:0,delay:0,delayDirection:void 0,direction:"normal",tweens:new be({fi:0,id:tu.generateUUID(),data:c},{fi:1,id:tu.generateUUID(),data:p})};n.push({fi:l,id:s,data:f})}),delete o.targets)}})})}function TM(i){i.scene.objects.traverse((t,e)=>{function r(o,n){let a=new be,s=[];if(e.events.forEach((l,c,u)=>{if(l.type==="Audio"&&l.trigger===n){let d;s.push(c),l.interaction==="play"?d={...Dr(l,"interaction","audio","delay","volume","loop"),triggerAfter:"after"in l?l.after:void 0,toggle:"after"in l?l.toggle:void 0,type:"Audio"}:(l.interaction==="pause"||l.interaction==="stop")&&(d={...Dr(l,"interaction","delay","object","playAudio"),type:"Audio"}),d&&a.push({fi:u,id:c,data:d})}}),s.forEach(l=>e.events.delete(l)),a.length){let l=e.events.find(c=>c.type===o)?.data;l?"actions"in l&&l.actions.insertBefore(null,a):e.events.insertBefore(null,[{id:tu.generateUUID(),data:{type:o,actions:a}}])}}r("Start","start"),r("MouseDown","mouseDown"),r("MouseUp","mouseUp"),r("KeyDown","keyDown"),r("KeyUp","keyUp")})}function W0(i){let t=i.layers.find(e=>e.type==="light")?.data;if(t?.category==="basic"){let e=vt.defaultData("light","phong"),r=t;Object.assign(r,e),r.visible=!1}}function q0(i){Bo(i,W0),Vo(i,W0)}function CM(i){i.scene.objects.traverse((t,e)=>{e.type==="Mesh"&&e.geometry.type==="SubdivGeometry"&&(e.geometry.scaleBaked||(e.geometry.scaleBaked=[1,1,1]))})}function AM(i){i.scene.objects.traverse((t,e)=>{(e.type==="Empty"||e.type==="Mesh")&&e.cloner&&!e.cloner.randomnessObject&&!e.cloner.toObject&&!e.cloner.randomness&&(e.cloner={...e.cloner,toObject:{object:"",spreadType:"random",scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],axis:"x",seed:0,count:99,align:"normal"},randomness:!1,randomnessObject:{strength:100,scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],movement:1,seed:0,freqScale:10,noiseType:"perlin"}})})}function MM(i){i.scene.objects.traverse((t,e)=>{e.type==="Mesh"&&e.geometry.type==="NonParametricGeometry"&&!("material"in e)&&!("materials"in e)&&(e.material=Tt.defaultTwoLayerData("phong"))})}function IM(i){i.scene.publish.orbitControls.autoZoom===void 0&&(i.scene.publish.orbitControls.autoZoom=!1),i.scene.objects.traverse((t,e)=>{(e.type==="OrthographicCamera"||e.type==="PerspectiveCamera")&&(e.orthographic.autoZoom===void 0&&(e.orthographic.autoZoom=!1),e.orthographic.autoZoomFrustumSize===void 0&&(e.orthographic.autoZoomFrustumSize=790))})}function EM(i){i.scene.objects.traverse((t,e)=>{e.pathSnapping===void 0&&(e.pathSnapping={pathId:null,slide:0,offset:0,orientation:"tangential"}),e.pathSnapping.offset===void 0&&(e.pathSnapping.offset=0)})}function NM(i){i.scene.publish.mouseEventTarget===void 0&&(i.scene.publish.mouseEventTarget="canvas"),i.scene.publish.settings.web.hint===void 0&&(i.scene.publish.settings.web.hint=!1)}function DM(i){let{video:t}=i.scene.publish.settings;t.format==="gif"&&t.fps>48&&(t.fps=15)}function _M(i){i.scene.objects.traverse((t,e)=>{e.events.forEach(r=>{r.type==="GameControl"&&(r.resetYPosition=Math.abs(r.resetYPosition-e.position[1]))})})}function RM(i){let t=i.scene.environment.usePhysics;i.scene.objects.traverse((e,r)=>{t&&r.physics===null?r.collision=!1:r.collision="visibility"})}function LM(i){i.scene.objects.traverse((t,e)=>{e.events.forEach(r=>{r.type==="GameControl"&&(r.navmesh=eu.defaultDataThirdPerson.navmesh)})})}function BM(i){i.scene.styles||(i.scene.styles=Ro.defaultData())}function $0(i){i.layers.forEach(t=>{t.type==="light"&&t.category!=="toon"&&t.occlusion===void 0&&(t.occlusion=!0)})}function VM(i){i.scene.environment.ambientLight.occlusion===void 0&&(i.scene.environment.ambientLight.occlusion=!1),i.scene.environment.ambientLight.aoFullRes===void 0&&(i.scene.environment.ambientLight.aoFullRes=!1),i.scene.environment.ambientLight.radius===void 0&&(i.scene.environment.ambientLight.radius=256),i.scene.environment.ambientLight.bias===void 0&&(i.scene.environment.ambientLight.bias=.5),i.scene.environment.ambientLight.aoColor===void 0&&(i.scene.environment.ambientLight.aoColor={r:.19607843137254902,g:.19607843137254902,b:.19607843137254902}),Vo(i,$0),Bo(i,$0)}function zM(i){i.scene.objects.traverse((t,e)=>{e.events.forEach(r=>{r.type==="GameControl"&&Object.assign(r.gameActions,{run:new be})})})}function GM(i){i.scene.objects.traverse((t,e)=>{e.events.forEach(r=>{r.type==="GameControl"&&(r.keyAssignments=[...r.keyAssignments,["run","\u21E7"],["none","Ctrl"]])})})}function X0(i){i.layers&&i.layers.forEach(t=>{t.type==="light"&&t.bumpMapIntensity===void 0&&(t.bumpMapIntensity=5)})}function Y0(i,t){if(t<1&&(Vo(i,F0),Bo(i,F0),i.schema=1),t<2&&(iM(i),i.schema=2),t<3&&(aM(i),i.schema=3),t<4&&(sM(i),i.schema=4),t<5&&(lM(i),i.schema=5),t<6&&(cM(i),i.schema=6),t<7&&(uM(i),i.schema=7),t<8&&(i.schema=8),t<9&&(U0(i),i.schema=9),t<10&&(hM(i),i.schema=10),t<11&&(mM(i),i.schema=11),t<12&&(U0(i),i.schema=12),t<13&&(yM(i),i.schema=13),t<14&&(xM(i),i.schema=14),t<15&&(bM(i),i.schema=15),t<16&&(vM(i),i.schema=16),t<17&&(Vo(i,k0),Bo(i,k0),i.schema=17),t<18&&(Vo(i,j0),Bo(i,j0),i.schema=18),t<19&&(nM(i),i.schema=19),t<20&&(SM(i),PM(i),i.schema=20),t<21&&(OM(i),TM(i),i.schema=21),t<22&&(q0(i),i.schema=22),t<23&&(CM(i),i.schema=23),t<24&&(AM(i),i.schema=24),(t<25||i.shared.videos===void 0)&&(gM(i),t<25&&(i.schema=25)),t<26&&(dM(i),i.schema=26),t<27&&(pM(i),i.schema=27),t<28&&(q0(i),i.schema=28),t<29&&(fM(i),i.schema=29),t<30&&(MM(i),i.schema=30),t<31&&(IM(i),i.schema=31),t<33&&(EM(i),i.schema=33),t<34&&(NM(i),i.schema=34),t<35&&(DM(i),i.schema=35),t<36&&(_M(i),i.schema=36),t<37&&(RM(i),i.schema=37),t<38&&(Vo(i,H0),Bo(i,H0),i.schema=38),t<39&&(LM(i),i.schema=39),t<40&&(BM(i),i.schema=40),t<41&&(VM(i),i.schema=41),t<42&&(zM(i),i.schema=42),t<43&&(GM(i),i.schema=43),t<99){Vo(i,X0),Bo(i,X0),i.scene.publish.playCamera===null&&(i.scene.publish.playCamera=fi);let e=at(i.scene.objects),r=i.scene.objects;i.scene.publish.playPage=hi,r.insertBefore(null,null,[{id:hi,data:{..._o.defaultData,backgroundColor:i.scene.backgroundColor,fog:i.scene.fog,postprocessing:i.scene.postprocessing,ao:Dr(i.scene.environment.ambientLight,"occlusion","aoFullRes","radius","bias","aoColor"),publish:{playCamera:i.scene.publish.playCamera,gameControlObject:i.scene.publish.gameControlObject},shadow:Dr(i.scene.environment.ambientLight,"softShadowQuality"),globalPhysics:{...Us.defaultData,...Dr(i.scene.environment,"usePhysics","gravity")},camera:at(i.scene.ownerCamera)??_o.defaultData.camera,name:"Scene"},children:[]}]);for(let a of e)a.id!==Lo.TRASH_CAN_ID&&r.move(hi,a.fi,a.id);let o=0,n=0;i.shared.penumbraSize&&i.scene.objects.traverse((a,s)=>{s.type==="DirectionalLight"?(s.penumbraSize=i.shared.penumbraSize[Math.min(o,2)],o+=1):s.type==="SpotLight"&&(s.penumbraSize=i.shared.penumbraSize[3+Math.min(n,1)],n+=1),(s.physics===void 0||s.physics===null)&&s.type!=="Instance"&&(s.physics={},Object.assign(s.physics,yi.defaultData)),s.physics!==void 0&&s.physics!==null&&(s.physics.enabled=s.collision??"visibility",delete s.collision)}),i.schema=99}}function K0(i){i.layers&&i.layers.forEach(t=>{t.type==="light"&&t.alphaOverride===void 0&&(t.alphaOverride=1)})}function FM(i){i.scene.objects.traverse((t,e)=>{let r=e.geometry;r&&r.type==="PathGeometry"&&(r.extrusion.capType="flat",r.extrusion.bevel=50,r.extrusion.bevelSides=6,r.extrusion.shape.type==="Custom"&&(r.extrusion.shape.shapeQuality="low"))})}function jM(i){Array.isArray(at(i.events))&&i.events?.forEach(t=>{"disabled"in t||(t.disabled=!1),(t.type==="MouseDown"||t.type==="MouseUp"||t.type==="MousePress")&&(t.mode=t.mode||"Object")})}var ma=180/Math.PI;function Q0(i){i.rotation=i.rotation.slice(0,3).map(t=>t*ma)}function Z0(i){Q0(i),i.type==="Page"&&Q0(i.camera),i.states?.forEach(e=>{e.rotation===void 0||e.rotation===null||(e.rotation=e.rotation.slice(0,3).map(r=>r*ma))});let t=i.geometry;t&&t.type==="SphereGeometry"&&(t.thetaLength=(t.thetaLength??180)*ma),t&&t.type==="TorusGeometry"&&(t.arc=t.arc*ma),t&&t.type==="PathGeometry"&&(t.extrusion.angle*=ma,t.extrusion.twist*=ma),i.type==="Mesh"&&i.geometry.type==="TextGeometry"&&(i.geometry.text={textValue:i.geometry.text}),Array.isArray(at(i.events))&&i.events?.forEach(e=>{(e.type==="MouseDown"||e.type==="MouseUp"||e.type==="MousePress"||e.type==="KeyDown"||e.type==="KeyUp"||e.type==="KeyPress"||e.type==="Collision"||e.type==="Trigger")&&(e.runMode=e.toggle?"Toggle":"Repeat")})}function UM(i){i.shared.variables=Pt({},ue.prototype)}function kM(i){let t=at(i.shared.variables);i.shared.variables=Pt(Object.entries(t??{}).map(([e,r],o)=>({fi:o,id:e,data:r})),be.prototype)}var ao=118;function Lp(i,t){t(i.data);for(let e of i.children)Lp(e,t)}function HM(i){let t=i.schema??104;t!==ao&&(t<105&&(Lp(i.asset,Z0),i.schema=105),t<118&&(Lp(i.asset,J0),i.schema=118))}function WM(i){i.shared.particles=Pt({},ue.prototype),i.shared.lib&&(i.shared.lib.particles=Rr.defaultData().particles)}function qM(i){i.scene.objects.traverse((t,e)=>{e.type==="Particle"&&typeof e.renderMaterial.size=="number"&&Object.assign(e.renderMaterial,{size:[e.renderMaterial.size,e.renderMaterial.size]})})}function $M(i){i.scene.objects.traverse((t,e)=>{e.type==="Page"&&(e.postprocessing.depthOfField.focusDistance=100,e.postprocessing.depthOfField.focalLength=20,e.postprocessing.depthOfField.bokehScale=5)})}function XM(i){i.scene.objects.traverse((t,e)=>{Array.isArray(at(e.events))!==!1&&e.events?.forEach(r=>{let o=r.runMode;r.type==="MouseDown"||r.type==="MouseUp"||r.type==="KeyDown"||r.type==="KeyUp"||r.type==="Collision"||r.type==="Trigger"?r.actions?.forEach(n=>{n.type==="Transition"&&(n.runMode=o??"Repeat"),(n.type==="Animation"||n.type==="SwitchCamera")&&(n.runMode=o==="Toggle"?"Toggle":"Normal")}):r.type==="MouseHover"||r.type==="MousePress"||r.type==="KeyPress"?r.actions?.forEach(n=>{(n.type==="Transition"||n.type==="Animation"||n.type==="SwitchCamera")&&(n.runMode="Toggle")}):r.type==="GameControl"?(delete r.actions,Object.keys(r.gameActions).forEach(a=>{r.gameActions[a]?.forEach(s=>{s.type==="Transition"&&(s.runMode="Repeat"),s.type==="Animation"&&(s.runMode="Normal")})})):r.type==="DragDrop"?(delete r.actions,r.dragDropActions?.drag?.forEach(n=>{(n.type==="Transition"||n.type==="Animation"||n.type==="SwitchCamera")&&(n.runMode="Toggle")}),r.dragDropActions?.drop?.forEach(n=>{(n.type==="Transition"||n.type==="Animation"||n.type==="SwitchCamera")&&(n.runMode="Toggle")})):r.type==="Resize"?(delete r.actions,r.breakpoints?.forEach(n=>{n.actions?.forEach(a=>{(a.type==="Transition"||a.type==="Animation"||a.type==="SwitchCamera")&&(a.runMode="Toggle")})})):r.type==="Start"?r.actions?.forEach(n=>{n.type==="Transition"&&(n.runMode="Once"),(n.type==="Animation"||n.type==="SwitchCamera")&&(n.runMode="Normal")}):r.type==="VariableChange"||r.type==="Scroll"?r.actions?.forEach(n=>{n.type==="Transition"&&(n.runMode="Repeat"),(n.type==="Animation"||n.type==="SwitchCamera")&&(n.runMode="Normal")}):r.type==="Conditional"&&(delete r.actions,r.inActions?.forEach(n=>{n.type==="Transition"&&(n.runMode="Repeat"),(n.type==="Animation"||n.type==="SwitchCamera")&&(n.runMode="Normal")}),r.outActions?.forEach(n=>{n.type==="Transition"&&(n.runMode="Repeat"),(n.type==="Animation"||n.type==="SwitchCamera")&&(n.runMode="Normal")}))})})}function YM(i){i.shared.userAPIs=Pt({},ue.prototype),i.shared.userWebhooks=Pt({},ue.prototype),i.shared.lib&&(i.shared.lib.userAPIs=Rr.defaultData().userAPIs,i.shared.lib.userWebhooks=Rr.defaultData().userWebhooks)}function KM(i){i.scene.publish.settings.videoStatic===void 0&&(i.scene.publish.settings.videoStatic=vr.defaultData.settings.videoStatic)}function J0(i){i.timelineAnimations=Pt({},ue.prototype)}function ru(i){let t=i.schema??0;if(t!==ao){console.warn("updating from ",t,"to ",ao),Y0(i,t),t<100&&(i.scene.publish.joystickSizeAndXYOffset===void 0&&(i.scene.publish.joystickSizeAndXYOffset=vr.defaultData.joystickSizeAndXYOffset),i.schema=100),t<101&&(Vo(i,K0),Bo(i,K0),i.schema=101),t<102&&(FM(i),i.schema=102),t<104&&(i.shared.catelogs=new ue,i.shared.lib=Rr.defaultData(),i.schema=104),t<105&&(UM(i),i.scene.objects.traverse((e,r)=>{Z0(r)}),i.schema=105);for(let e of Object.values(i.shared.lib.components))HM(e);t<106&&(kM(i),i.schema=106),t<107&&(i.shared.lib.variables=Rr.defaultData().variables,i.schema=107),t<109&&(WM(i),i.schema=109),t<110&&(qM(i),i.schema=110),t<111&&(i.scene.objects.traverse((e,r)=>{jM(r)}),i.schema=111),t<112&&($M(i),i.schema=112),t<113&&(XM(i),i.schema=113),t<114&&(i.scene.publish.settings.web.imageQuality===void 0&&(i.scene.publish.settings.web.imageQuality=70),i.schema=114),t<115&&(YM(i),i.schema=115),t<116&&(KM(i),i.schema=116),t<117&&(i.scene.publish.settings.web.pixelRatioMobile===void 0&&(i.scene.publish.settings.web.pixelRatioMobile=0),i.scene.publish.settings.web.pixelRatioDesktop===void 0&&(i.scene.publish.settings.web.pixelRatioDesktop=0),i.schema=117),t<118&&(i.shared.timelineAnimations=Pt({},ue.prototype),i.scene.objects.traverse((e,r)=>{J0(r)}),i.schema=118)}}var fa;(c=>{c.defaultData={schema:ao,scene:Lo.defaultData,frames:new ue().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",ha.defaultData),shared:{...Sr.emptyData(),colors:Sr.defaultColors()}},c.emptyDataForImports=function(){let u=Lo.emptyDataWithPage();return{schema:ao,scene:u,frames:new ue().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",ha.defaultData),shared:{...Sr.emptyData(),colors:Sr.defaultColors(),images:Sr.defaultImages()}}},c.emptyData=function(){return{schema:ao,scene:Lo.emptyDataWithPage(),frames:new ue().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",ha.defaultData),shared:Sr.emptyData()}},c.clipboard2dData=function(){return{schema:ao,scene:Lo.emptyData(),frames:new ue,shared:Sr.emptyData()}},c.collabHelper={...Bs,updateSchema(u){return(u.schema??0)<ao?si(u,ru):(u.schema??0)-ao}};function n(u){let d=c.collabHelper.updateSchema(u);return typeof d=="number"?d===0?u:null:d.data}c.updateSchemaDirectly=n;function a(u){return{...u,shared:{...u.shared,lib:Rr.defaultData()}}}c.withoutLib=a;function s(u,d){let p=u.scene.objects.get(d);if(p&&p.data.type==="Component")return p;{let f=u.shared.lib.components[d];if(f)return f.asset}}c.getComponentData=s;function l(u){let d=Object.values(u.shared.userAPIs);for(let p of d){let f=p.headers;for(let h of f)if(h.data.key.toLowerCase()==="authorization"&&h.data.value!=="")return!0}return!1}c.hasSensitiveData=l})(fa||(fa={}));var ou;(t=>t.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII=",name:"empty"})(ou||(ou={}));var ex;(t=>{function i(e){return!0}t.is=i})(ex||(ex={}));var iu;(r=>{r.defaultData={position:[0,0],scale:[1,1],rotation:0,shear:[0,0]};function t(o,n){return{position:n?.position??o.position,rotation:n?.rotation??o.rotation,scale:n?.scale??o.scale,shear:n?.shear??o.shear}}r.merge=t;function e(o,n){return Wl({position:na.isEqual(o.position,n.position)?void 0:n.position,rotation:o.rotation===n.rotation?void 0:n.rotation,scale:na.isEqual(o.scale,n.scale)?void 0:n.scale,shear:o.shear&&n.shear&&na.isEqual(o.shear,n.shear)?void 0:n.shear})}r.diff=e})(iu||(iu={}));var Bp;(t=>t.defaultData={horizontalConstraint:0,verticalConstraint:0})(Bp||(Bp={}));var tx;(t=>t.defaultData={direction:"row",wrap:"unwrap",align:"top-left",gap:10,rowGap:10,autoGap:!1,autoRowGap:!1,leftPadding:8,rightPadding:8,topPadding:8,bottomPadding:8})(tx||(tx={}));var nu;(t=>t.defaultData={opacity:1,fill:{color:Ie.fromHexAndA(yt,1),enabled:!0},stroke:{color:Ie.from0to1([0,0,0,1]),thickness:1,enabled:!1,mode:"inside"},layerBlur:{radius:2,enabled:!1},backgroundBlur:{radius:2,enabled:!1},dropShadow:{offset:[10,10],blurRadius:10,color:Ie.from0to1([0,0,0,1]),enabled:!1,spread:0},innerShadow:{offset:[10,10],blurRadius:10,color:Ie.from0to1([0,0,0,1]),enabled:!1,spread:0}})(nu||(nu={}));var rn;(n=>{function i(a,s){return{name:s}}n.newEmpty=i;function t(a,s){if(s===void 0)return a;let l={...a},c=["width","height","cornerRadius"];for(let u of c)u in l&&u in s&&s[u]!==void 0&&Object.assign(l,{[u]:s[u]});return l}function e(a,s){if(s===void 0)return a;let l={...a};return"fill"in l&&"fill"in s&&s.fill!==void 0&&Object.assign(l,{fill:{...l.fill,...s.fill}}),"stroke"in l&&"stroke"in s&&s.stroke!==void 0&&Object.assign(l,{stroke:{...l.stroke,...s.stroke}}),"layerBlur"in l&&"layerBlur"in s&&s.layerBlur!==void 0&&Object.assign(l,{layerBlur:{...l.layerBlur,...s.layerBlur}}),"backgroundBlur"in l&&"backgroundBlur"in s&&s.backgroundBlur!==void 0&&Object.assign(l,{backgroundBlur:{...l.backgroundBlur,...s.backgroundBlur}}),"dropShadow"in l&&"dropShadow"in s&&s.dropShadow!==void 0&&Object.assign(l,{dropShadow:{...l.dropShadow,...s.dropShadow}}),"innerShadow"in l&&"innerShadow"in s&&s.innerShadow!==void 0&&Object.assign(l,{innerShadow:{...l.innerShadow,...s.innerShadow}}),l}function r(a,s){if(s===void 0)return a;let l={...a};return Object.assign(l,iu.merge(l,s)),l=t(l,s),l=e(l,s),l}n.patch=r;function o(a,s){let l,c=[];for(let[u,d]of Object.entries(s))u!=="name"&&(l===void 0&&(l={path:[],props:{},type:0},c.push(l)),l.props[u]=d);return c}n.toOps=o})(rn||(rn={}));var ks;(t=>t.defaultData={...iu.defaultData,...Bp.defaultData,states:new be,events:new be,visible:!0,raycastLock:!1})(ks||(ks={}));var ya;(t=>t.defaultData={...ks.defaultData,...nu.defaultData})(ya||(ya={}));var au;(t=>t.defaultData={cornerRadius:[0,0,0,0]})(au||(au={}));var Vp;(t=>t.defaultData={...ya.defaultData,type:"ellipse2d",width:100,height:100,name:"Ellipse"})(Vp||(Vp={}));var ga;(t=>t.defaultData={...ya.defaultData,...au.defaultData,type:"rectangle2d",width:100,height:100,name:"Rectangle"})(ga||(ga={}));var zp;(t=>t.defaultData={...ya.defaultData,type:"text2d",width:100,height:100,fontSize:12,lineHeight:1.2,letterSpacing:0,text:{textValue:"Hello world"},horizontalAlign:1,verticalAlign:1,textTransform:1,font:"Roboto_regular",name:"Text"})(zp||(zp={}));var Gp;(t=>t.defaultData={...ya.defaultData,type:"path2d",path:"",name:"Path"})(Gp||(Gp={}));var rx;(t=>{function i(e){return e.type==="ellipse2d"||e.type==="rectangle2d"||e.type==="text2d"||e.type==="vector2d"||e.type==="path2d"}t.is=i})(rx||(rx={}));var Hs;(t=>t.defaultData={...ks.defaultData,name:"Group",type:"group2d"})(Hs||(Hs={}));var Fp;(t=>t.defaultData=()=>({...ks.defaultData,...au.defaultData,...nu.defaultData,name:"Frame",type:"frame2d",clipped:!0,width:200,height:200,fill:{color:Ie.fromHexAndA(4737101,1),enabled:!0},stroke:{color:Ie.fromHexAndA(0,1),thickness:1,enabled:!1,mode:"inside"},backgroundBlur:{radius:2,enabled:!1},layerBlur:{radius:2,enabled:!1}}))(Fp||(Fp={}));var zo;(n=>{function i(a){switch(a){case"rectangle2d":return{...ga.defaultData};case"ellipse2d":return{...Vp.defaultData};case"text2d":return{...zp.defaultData};case"vector2d":return{...ga.defaultData};case"path2d":return{...Gp.defaultData};case"frame2d":return{...Fp.defaultData()};case"group2d":return{...Hs.defaultData}}}n.defaultData=i;function t(a){return"width"in a&&"height"in a?[typeof a.width=="number"?a.width*.5:0,typeof a.height=="number"?a.height*.5:0]:[0,0]}n.getPivot=t;function e(a){return a.type==="rectangle2d"||a.type==="ellipse2d"||a.type==="text2d"||a.type==="frame2d"}n.isResizeable=e;function r(a){return a.type==="frame2d"&&a.autoLayout!==void 0}n.isAutoLayoutable=r;function o(a){return a.type==="rectangle2d"||a.type==="frame2d"}n.hasCorners=o})(zo||(zo={}));var su;(e=>(e.defaultData={name:"UI",type:"scene2d",objects:new Qe},e.emptyData=function(){return{type:"scene2d",objects:new Qe}}))(su||(su={}));import{Color as QM}from"three";var Ct=class extends QM{constructor(e,r,o,n){super(e,r,o);this.isColorA=!0;this.a=n}setRGBA(e,r,o,n){super.setRGB(e,r,o),this.a=n}copy(e){return super.copy(e),this.a="a"in e?e.a:1,this}clone(){return new this.constructor(this.r,this.g,this.b,this.a)}equals(e){return super.equals(e)&&this.a===e.a}setStyle(e,r="srgb"){let o;if(e==="transparent")return this.setRGBA(0,0,0,0),this;if(o=/^((?:rgb|hsl)a?)\(([^)]*)\)/.exec(e)){let n,a=o[1],s=o[2];switch(a){case"rgb":case"rgba":if(n=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return this.a=a==="rgba"?parseFloat(n[4]):1,super.setStyle(e,r);break;case"hsl":case"hsla":if(n=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)%\s*,\s*(\d*\.?\d+)%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return this.a=a==="hsla"?parseFloat(n[4]):1,super.setStyle(e,r);break}}return super.setStyle(e,r)}get x(){return this.r}get y(){return this.g}get z(){return this.b}get w(){return this.a}set x(e){this.r=e}set y(e){this.g=e}set z(e){this.b=e}set w(e){this.a=e}};var ad=Is(ix());import{Object3D as fD,Vector3 as hr,Euler as wh,MathUtils as Uv,Matrix4 as Sn}from"three";var ZM=.5*(Math.sqrt(3)-1),Ws=(3-Math.sqrt(3))/6,JM=1/3,so=1/6,j6=(Math.sqrt(5)-1)/4,U6=(5-Math.sqrt(5))/20,qs=i=>Math.floor(i)|0,nx=new Float64Array([1,1,-1,1,1,-1,-1,-1,1,0,-1,0,1,0,-1,0,0,1,0,-1,0,1,0,-1]),Up=new Float64Array([1,1,0,-1,1,0,1,-1,0,-1,-1,0,1,0,1,-1,0,1,1,0,-1,-1,0,-1,0,1,1,0,-1,1,0,1,-1,0,-1,-1]);function ax(i=Math.random){let t=lx(i),e=new Float64Array(t).map(o=>nx[o%12*2]),r=new Float64Array(t).map(o=>nx[o%12*2+1]);return function(n,a){let s=0,l=0,c=0,u=(n+a)*ZM,d=qs(n+u),p=qs(a+u),f=(d+p)*Ws,h=d-f,m=p-f,y=n-h,x=a-m,v,w;y>x?(v=1,w=0):(v=0,w=1);let O=y-v+Ws,S=x-w+Ws,T=y-1+2*Ws,M=x-1+2*Ws,g=d&255,D=p&255,E=.5-y*y-x*x;if(E>=0){let _=g+t[D],R=e[_],V=r[_];E*=E,s=E*E*(R*y+V*x)}let I=.5-O*O-S*S;if(I>=0){let _=g+v+t[D+w],R=e[_],V=r[_];I*=I,l=I*I*(R*O+V*S)}let N=.5-T*T-M*M;if(N>=0){let _=g+1+t[D+1],R=e[_],V=r[_];N*=N,c=N*N*(R*T+V*M)}return 70*(s+l+c)}}function sx(i=Math.random){let t=lx(i),e=new Float64Array(t).map(n=>Up[n%12*3]),r=new Float64Array(t).map(n=>Up[n%12*3+1]),o=new Float64Array(t).map(n=>Up[n%12*3+2]);return function(a,s,l){let c,u,d,p,f=(a+s+l)*JM,h=qs(a+f),m=qs(s+f),y=qs(l+f),x=(h+m+y)*so,v=h-x,w=m-x,O=y-x,S=a-v,T=s-w,M=l-O,g,D,E,I,N,_;S>=T?T>=M?(g=1,D=0,E=0,I=1,N=1,_=0):S>=M?(g=1,D=0,E=0,I=1,N=0,_=1):(g=0,D=0,E=1,I=1,N=0,_=1):T<M?(g=0,D=0,E=1,I=0,N=1,_=1):S<M?(g=0,D=1,E=0,I=0,N=1,_=1):(g=0,D=1,E=0,I=1,N=1,_=0);let R=S-g+so,V=T-D+so,U=M-E+so,B=S-I+2*so,q=T-N+2*so,j=M-_+2*so,F=S-1+3*so,H=T-1+3*so,W=M-1+3*so,ee=h&255,te=m&255,Y=y&255,re=.6-S*S-T*T-M*M;if(re<0)c=0;else{let $=ee+t[te+t[Y]];re*=re,c=re*re*(e[$]*S+r[$]*T+o[$]*M)}let K=.6-R*R-V*V-U*U;if(K<0)u=0;else{let $=ee+g+t[te+D+t[Y+E]];K*=K,u=K*K*(e[$]*R+r[$]*V+o[$]*U)}let Z=.6-B*B-q*q-j*j;if(Z<0)d=0;else{let $=ee+I+t[te+N+t[Y+_]];Z*=Z,d=Z*Z*(e[$]*B+r[$]*q+o[$]*j)}let Q=.6-F*F-H*H-W*W;if(Q<0)p=0;else{let $=ee+1+t[te+1+t[Y+1]];Q*=Q,p=Q*Q*(e[$]*F+r[$]*H+o[$]*W)}return 32*(c+u+d+p)}}function lx(i){let e=new Uint8Array(512);for(let r=0;r<512/2;r++)e[r]=r;for(let r=0;r<512/2-1;r++){let o=r+~~(i()*(256-r)),n=e[r];e[r]=e[o],e[o]=n}for(let r=256;r<512;r++)e[r]=e[r-256];return e}import{Triangle as eI}from"three";var Lr=new eI,lu=class{constructor(t){this.weightAttribute=null;let e=t.geometry;if(!e.isBufferGeometry||e.attributes.position.itemSize!==3)throw new Error("THREE.MeshSurfaceSampler: Requires BufferGeometry triangle mesh.");e.index&&(e=e.toNonIndexed()),this.geometry=e,this.randomFunction=Math.random,this.positionAttribute=this.geometry.getAttribute("position"),this.distribution=null}build(){let t=this.positionAttribute,e=new Float32Array(t.count/3);for(let o=0;o<t.count;o+=3){let n=1;Lr.a.fromBufferAttribute(t,o),Lr.b.fromBufferAttribute(t,o+1),Lr.c.fromBufferAttribute(t,o+2),n*=Lr.getArea(),e[o/3]=n}this.distribution=new Float32Array(t.count/3);let r=0;for(let o=0;o<e.length;o++)r+=e[o],this.distribution[o]=r;return this}setRandomGenerator(t){return this.randomFunction=t,this}sample(t,e){if(this.distribution){let r=this.distribution[this.distribution.length-1],o=this.binarySearch(this.randomFunction()*r);return this.sampleFace(o,t,e)}}binarySearch(t){if(!this.distribution)return 0;let e=this.distribution,r=0,o=e.length-1,n=-1;for(;r<=o;){let a=Math.ceil((r+o)/2);if(a===0||e[a-1]<=t&&e[a]>t){n=a;break}else t<e[a]?o=a-1:r=a+1}return n}sampleFace(t,e,r){let o=this.randomFunction(),n=this.randomFunction();return o+n>1&&(o=1-o,n=1-n),Lr.a.fromBufferAttribute(this.positionAttribute,t*3),Lr.b.fromBufferAttribute(this.positionAttribute,t*3+1),Lr.c.fromBufferAttribute(this.positionAttribute,t*3+2),e.set(0,0,0).addScaledVector(Lr.a,o).addScaledVector(Lr.b,n).addScaledVector(Lr.c,1-(o+n)),Lr.getNormal(r),this}};import{Object3D as nI}from"three";var dx=Is(ux());import{Object3D as tI,Matrix4 as lo}from"three";var rI=new lo,oI=new lo,iI=new lo,Go;(t=>{function i(e){return e&&e.__isSPEObject}t.is=i})(Go||(Go={}));var xa=i=>class extends i{constructor(){super(...arguments);this.previousModelViewMatrix=new lo;this.copyPreviousMatrix=!0;this.hiddenMatrix=new lo;this.matrixWorldRigid=new lo;this.shearScale=new lo;this.shearScaleInv=new lo}get __isSPEObject(){return!0}isDescendantOf(r){r instanceof tI&&(r=r.uuid);let o=this;for(;o.parent;){if(o.parent.uuid===r)return!0;o=o.parent}return!1}updateMatrixWorld(r){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||r)&&(this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),this.matrixWorldNeedsUpdate=!1,r=!0);for(let o of this.children)o.updateMatrixWorld(r)}updateWorldMatrix(r,o){let n=this.parent;if(r&&n!==null&&n.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),o)for(let a of this.children)a.updateWorldMatrix(!1,!0)}traverseChildren(r,o=0){for(let n of this.children)Go.is(n)&&n.traverseObject(r,o+1)}traverseObject(r,o=0){if(r(this,o)!==!0)for(let a of this.children)Go.is(a)&&a.traverseObject(r,o+1)}updateMatrixWorldSVD(){let r=this.matrixWorld.elements,o=[[r[0],r[4],r[8]],[r[1],r[5],r[9]],[r[2],r[6],r[10]]],{u:n,v:a,q:s}=(0,dx.SVD)(o),l=rI.set(n[0][0],n[0][1],n[0][2],0,n[1][0],n[1][1],n[1][2],0,n[2][0],n[2][1],n[2][2],0,0,0,0,1),c=oI.set(a[0][0],a[0][1],a[0][2],0,a[1][0],a[1][1],a[1][2],0,a[2][0],a[2][1],a[2][2],0,0,0,0,1),u=iI.copy(c).transpose();this.shearScale.makeScale(s[0],s[1],s[2]).multiply(u).premultiply(c),this.shearScaleInv.copy(this.shearScale).invert(),this.matrixWorldRigid.multiplyMatrices(l,u).copyPosition(this.matrixWorld),s.every(d=>Math.abs(s[0]-d)<.01)?this.hasNonUniformScale=!1:this.hasNonUniformScale=!0}attach(r,o){this.updateWorldMatrix(!0,!1);let n=new lo().copy(this.matrixWorld).invert();return r.parent!==null&&(r.parent.updateWorldMatrix(!0,!1),n.multiply(r.parent.matrixWorld)),"hiddenMatrix"in r&&r.hiddenMatrix instanceof lo?r.hiddenMatrix.premultiply(n):r.applyMatrix4(n),r.updateWorldMatrix(!1,!1),this.add(r),o!==void 0&&(this.children.pop(),this.children.splice(o,0,r)),this}copy(r,o=!1){return super.copy(r,o),this.hasNonUniformScale=r.hasNonUniformScale,this}onAfterRender(r,o,n,a,s,l){this.copyPreviousMatrix&&this.previousModelViewMatrix.copy(this.modelViewMatrix)}};var kp=class extends xa(nI){},aI=i=>i.type==="Mesh",Br=class extends kp{constructor(e){super();this.object=e;this.matrixAutoUpdate=!1,this.hasNonUniformScale=e.hasNonUniformScale}raycast(e,r){}expand(){let e=0,r=this.object.entityChildren(e);for(;r;){let o=this.children[e];o?.object!==r&&(o&&this.remove(o),o=new Br(r),this.add(o),this.children.splice(e,0,this.children.pop()),o.matrixWorldNeedsUpdate=!0,o.matrixAutoUpdate=!1,o.matrix=r.matrix,o.hiddenMatrix=r.hiddenMatrix),o.expand(),e+=1,r=this.object.entityChildren(e)}for(;this.children.length>e;)this.remove(this.children[e])}get visible(){return this.playModeVisible!==void 0?this.playModeVisible:this.object.visible||this.object.dataPatched.visible&&this.object.dataPatched.cloner?.hideBase===!0}set visible(e){}get castShadow(){return this.object.castShadow}set castShadow(e){}get receiveShadow(){return this.object.receiveShadow}set receiveShadow(e){}get isMesh(){return aI(this.object)}get isLight(){return this.object.isLight}get layers(){return this.object.layers}set layers(e){}get isCamera(){return!1}get geometry(){if(this.object.geometry)return this.object.geometry}get material(){if(this.object.material)return this.object.material}get morphTargetInfluences(){if(this.object.morphTargetInfluences)return this.object.morphTargetInfluences}set morphTargetInfluences(e){}};import{Box3 as ME,BufferGeometry as IE,MeshBasicMaterial as EE}from"three";import{Matrix4 as CE,Mesh as AE}from"three";import{Matrix4 as du,Vector3 as hx,Euler as pI,MathUtils as Xs}from"three";import{Box3 as sI,Line3 as lI,Matrix4 as Hp,Vector3 as dr}from"three";var on=new dr,nn=new dr,ba=new Hp,fx=[new dr(-1,1,1),new dr(-1,-1,1),new dr(1,-1,1),new dr(1,1,1),new dr(-1,1,-1),new dr(-1,-1,-1),new dr(1,-1,-1),new dr(1,1,-1)],cI=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],uI=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]],px=(i,t,e)=>{i.updateEntityBoxSize(on,nn),ba.copy(t).multiply(i.matrixWorld),nn.x===0&&nn.y===0&&nn.z===0?e.push(new dr(on.x,on.y,on.z).applyMatrix4(ba)):fx.forEach(r=>{e.push(r.clone().multiply(nn).add(on).applyMatrix4(ba))})},$s=class extends sI{constructor(){super(...arguments);this.matrix=new Hp;this.vertices=[];this.faces=[];this.edges=[];this.centerEdges=[]}copy(e){return super.copy(e),this.matrix.copy(e.matrix),this.vertices=e.vertices.map(r=>r.clone()),this.faces=e.faces.map(r=>r.clone()),this.edges=e.edges.map(r=>r.clone()),this.centerEdges=e.centerEdges.map(r=>r.clone()),this}setFromObjectSize(e,r=!1){e.updateWorldMatrix(!1,r),this.makeEmpty(),this.matrix.copy(e.matrixWorld);let o=new Hp().copy(e.matrixWorld).invert();return this.expandByObjectSize(e,o,r)}expandByObjectSize(e,r,o=!1){let n=[];return o===!0?e.traverseEntity(a=>{if(a.visible||a.cloner&&a.data.visible){if(!("geometry"in a)){n.push(new dr);return}px(a,r,n)}}):px(e,r,n),this.setFromPoints(n)}getCenter(e){return e=super.getCenter(e),e.applyMatrix4(this.matrix),e}getPositionToCenter(e){return e=super.getCenter(e),e.applyMatrix4(ba.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(nn).multiplyScalar(.5),this.getCenter(on),ba.copy(this.matrix).setPosition(on),this.vertices=fx.map(e=>e.clone().multiply(nn).applyMatrix4(ba))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=cI.map(([e,r])=>new lI(this.vertices[e],this.vertices[r])),this.centerEdges=this.edges.map(e=>e.getCenter(new dr))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=uI.map(([e,r])=>this.vertices[e].clone().add(this.vertices[r]).multiplyScalar(.5))}};var Vr={Cloner:()=>{},changeEntityProptotype:()=>{},createEntity:()=>{}};import{CurvePath as dI,CubicBezierCurve3 as Wp,Vector3 as zr}from"three";var $p=class extends dI{constructor(){super()}getPoints(t=12){let e=[],r,o=this.getCurveLengths(),a=o[o.length-1]/o.length;for(let s=0,l=this.curves;s<l.length;s++){let c=l[s],u=s===0?o[s]:o[s]-o[s-1],d=Math.ceil(t*u/a),p=c.getPoints(d);for(let f=0;f<p.length;f++){let h=p[f];r&&r.equals(h)||(e.push(h),r=h)}}return this.autoClose&&e.length>1&&!e[e.length-1].equals(e[0])&&e.push(e[0]),e}};var Xp=.001;function Yp(i,t,e){return t.clone().sub(i).cross(t.clone().sub(e)).length()<=Xp}function qp(i,t){let e=new zr(...i.position),r=new zr(...i.controlNext.position),o=new zr(...t.controlPrevious.position),n=new zr(...t.position);return Yp(e,r,n)&&Yp(e,o,n)}function uu(i){let t=i.points.map(u=>new zr(...u.data.position)),e=[i.points[0]],r=new zr(...e[0].data.position);for(let u=0;u<i.points.length-1;u++)Yp(r,t[u],t[u+1])||(e.push(i.points[u]),r=t[u]);e.push(i.points[i.points.length-1]);let o=i.isClosed,n=e.length-(o?0:1),a=e.length,s=[];for(let u=0;u<a;u++){let d=e[u].data,p=new zr(...d.position),f=new zr(...d.controlPrevious.position),h=new zr(...d.controlNext.position),m={position:p,baseRoundness:d.roundness,controlPrevious:f,controlNext:h};if(d.roundness===0||!i.isClosed&&(u===0||u===a-1)){s[u]={...m,removedLength:0};continue}let y=o&&u==0?a-1:u-1,x=o&&u==a-1?0:u+1,v=e[y].data,w=e[x].data,O=new zr(...v.position),S=new zr(...w.position),T=O.clone().sub(p).normalize(),M=S.clone().sub(p).normalize();Object.assign(m,{prevDir:T,nextDir:M});let g=qp(v,d),D=qp(d,w);if(!g||!D)s[u]={...m,removedLength:0};else{let E=T.clone().add(M).normalize(),I=E.clone().cross(T).length()/T.dot(E);s[u]={...m,tan:I,removedLength:d.roundness/I}}}for(let u=0;u<n;u++){let d=u,p=o&&u===a-1?0:u+1,f=s[d],h=s[p];if(f.removedLength!==0||h.removedLength!==0){let m=f.position.distanceTo(h.position);f.removedLength=Math.min(f.removedLength,m/2),h.removedLength=Math.min(h.removedLength,m/2)}}let l=[];for(let u=0;u<n;u++){let d=u,p=o&&u===a-1?0:u+1,f=s[d],h=s[p],m=null;if(!qp(e[d].data,e[p].data))f.position.distanceTo(h.position)>Xp&&(m=new Wp(f.position,f.controlNext,h.controlPrevious,h.position));else{let y=f.position.clone(),x=h.position.clone();(f.removedLength!==0||h.removedLength!==0)&&(f.nextDir&&y.add(f.nextDir.clone().setLength(f.removedLength)),h.prevDir&&x.add(h.prevDir.clone().setLength(h.removedLength))),y.distanceTo(x)>Xp&&(m=new Wp(y,y.clone().lerp(x,.3),x.clone().lerp(y,.3),x))}l[2*u+1]=m}for(let u=0;u<a;u++){let d=s[u];if(d.removedLength===0){l[2*u]=null;continue}let p=d.position,f=d.prevDir.clone().multiplyScalar(d.removedLength).add(p),h=d.nextDir.clone().multiplyScalar(d.removedLength).add(p),m=d.tan*d.removedLength,y=d.prevDir.clone().add(d.nextDir).normalize(),x=f.clone().lerp(h,.5),v=f.distanceTo(h)/2,w=y.clone().multiplyScalar(Math.sqrt(Math.pow(m,2)-Math.pow(v,2))).add(x),O=y.clone().multiplyScalar(-m).add(w),S=p.distanceTo(O)/p.distanceTo(x),T=d.prevDir.clone().multiplyScalar(S*p.distanceTo(f)).add(p),M=T.clone().lerp(O,2),g=f.clone().lerp(T,4/3),D=h.clone().lerp(M,4/3);l[2*u]=new Wp(f,g,D,h)}let c=new $p;return l.forEach(u=>{u&&c.add(u)}),c}var De;(t=>{function i(e){return e&&e.__isEntity}t.is=i})(De||(De={}));var va=i=>De.is(i),fI={type:"completeState",isfromEntity:!0},hI=["x","y","z"],Kp=new hx,mI=new hx().set(0,1,0),Sa=i=>class extends xa(i){constructor(){super(...arguments);this.raycastLock=!1;this.scaleLock=!1;this.disposed=!1;this.stateSelection=null;this.destroyedInAction=!1;this.instances=[];this.prevState=null;this.currentState=null;this.currentAnimationAction=null;this.reversibleToState=null;this.currentTransitionEvent=null;this.previousAction=null;this._singleBBox=new $s;this._recursiveBBox=new $s;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this._needApplyPathSnapping=!0;this.attachedPaths=new Set}get __isEntity(){return!0}entityChildren(r){let o=this.children[r];if(De.is(o))return o}entityChildrenCount(){let r=this.children.length;for(;r--;)if(De.is(this.children[r]))return r+1;return 0}get isConcreteEntity(){return typeof this.identity=="string"}get isVirtualEntity(){return typeof this.identity!="string"}get isInstanceRoot(){return this.isConcreteEntity&&this.data.type==="Instance"}nearestInstanceSelfOrParent(){let r=this;for(;r.data.type!=="Instance";){let o=r.parent;if(De.is(o))r=o;else return}return r}forInstancesRec(r){this.instances.forEach(o=>{o.disposed||r(o),o.forInstancesRec(r)})}super_Entity(r,o){typeof r=="string"&&(this.uuid=r),this.identity=r,this.data=o,this.matrixAutoUpdate=!1,this.dataPatched=this.data}changeSelectedState(r,o,n=!1){if(!(this.data.states.length===0&&!n)){for(let a of this.data.states)tn.toOps(this.data,a.data).forEach(l=>{let c=ta.replaceProps(l,this.data);this.dataPatched=this.data,this.updateByPatchedOp(c,this.data,o)});if(r!==null){let a=this.data.states.data(r);a&&(this.dataPatched=tn.patch(this.data,a),tn.toOps(this.data,a).forEach(l=>{this.updateByPatchedOp(l,this.dataPatched,o)}))}n&&this.updateTransformState(this.dataPatched,o),this.stateSelection=r,this.updatePathSnapping(this.dataPatched.pathSnapping)}}get singleBBox(){return this.singleBBoxNeedsUpdate&&(this.singleBBoxNeedsUpdate=!1,this._singleBBox.setFromObjectSize(this,!1),this._singleBBox.computeVertices(),this._singleBBox.computeEdges(),this._singleBBox.computeFaces()),this._singleBBox}get recursiveBBox(){return this.recursiveBBoxNeedsUpdate&&(this.recursiveBBoxNeedsUpdate=!1,this._recursiveBBox.setFromObjectSize(this,!0),this._recursiveBBox.computeVertices(),this._recursiveBBox.computeEdges(),this._recursiveBBox.computeFaces()),this._recursiveBBox}updateEntityBoxSize(r,o){r.setScalar(0),o.setScalar(0)}resetBBoxNeedsUpdateSelf(){this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0}resetBBoxNeedsUpdate(){this.resetBBoxNeedsUpdateSelf(),this.traverseAncestors(r=>{va(r)&&r.resetBBoxNeedsUpdateSelf()}),this.traverseEntity(r=>{r.resetBBoxNeedsUpdateSelf()})}find(r){let o;return this.traverseEntity(n=>{n.uuid===r&&(o=n)}),o}traverseSortNextHelper(){let r=this.parent;if(r){let o=r.children,n=o.indexOf(this)+1;if(De.is(o[n]))return o[n];if(De.is(r))return r.traverseSortNextHelper()}}sortNext(){let r=this.children;return this.children.length>0&&De.is(this.children[0])?r[0]:this.traverseSortNextHelper()}goUp(r){let o=this;for(;r>0&&o!==null;)o=o.parent,r-=1;return o}hasAnccestorOrSelf(r){return this===r||this.hasAnccestor(r)}hasAnccestor(r){let o=this.parent;for(;o;){if(r===o)return!0;o=o.parent}return!1}countToAccestor(r){let o=0,n=this;for(;n!==r;){if(n===null)return-1;n=n.parent,o+=1}return o}forEachEntity(r){for(let o of this.children)va(o)&&r(o)}traverseEntityAncestors(r){this.traverseAncestors(o=>{De.is(o)&&r(o)})}traverseConcreteEntity(r,o=0){if(r(this,o)!==!0)for(let a of this.children)va(a)&&a.isConcreteEntity&&a.traverseEntity(r,o+1)}traverseEntity(r,o=0){if(r(this,o)!==!0)for(let a of this.children)va(a)&&a.traverseEntity(r,o+1)}traverseVisibleEntity(r){r(this);for(let o of this.children)va(o)&&o.visible&&o.traverseVisibleEntity(r)}updateMatrix(){super.updateMatrix(),this.cloner&&this.cloner.onObjUpdateMatrix(),this.dispatchEvent({type:"updateMatrix"})}updateMatrixWorld(r){super.updateMatrixWorld(r),this.dispatchEvent({type:"updateMatrixWorld"})}copy(r,o=!1){return super.copy(r,o),this.dataPatched=r.dataPatched,this.raycastLock=r.raycastLock,this.scaleLock=r.scaleLock,this.hiddenMatrix.copy(r.hiddenMatrix),this}hasEntityChild(){return this.children.some(r=>va(r))}isAncestorOf(r){if(this.uuid===r)return!1;let o=!1;return this.traverseEntity(n=>{n.uuid===r&&(o=!0)}),o}toObjectTransformState(r=[]){this.updateWorldMatrix(!0,!1);let o={position:this.position.toArray(),rotation:[this.rotation.x*Xs.RAD2DEG,this.rotation.y*Xs.RAD2DEG,this.rotation.z*Xs.RAD2DEG],scale:this.scale.toArray(),hiddenMatrix:this.hiddenMatrix.toArray()};return Kn(o,r)}getTransformValues(r,o,n){return o[r].map((a,s)=>n?.shared.getVariable(a,[this.uuid,r,hI[s]])??a)}updateTransformState(r,o){let n=!1;return r.position&&(this.position.fromArray(this.getTransformValues("position",r,o)),n=!0),r.rotation&&(Kp.fromArray(this.getTransformValues("rotation",r,o)).multiplyScalar(Xs.DEG2RAD),this.rotation.setFromVector3(Kp),n=!0),r.scale&&(this.scale.fromArray(this.getTransformValues("scale",r,o)),n=!0),r.hiddenMatrix!==void 0&&(n=!0,this.hiddenMatrix.fromArray(r.hiddenMatrix??pi.identity)),n&&(this.updateMatrix(),this.resetBBoxNeedsUpdate(),this.invalidateClonerTransform(this),this.traverseEntityAncestors(a=>{a.invalidateClonerTransform(this)})),r.position&&r.rotation&&r.scale&&r.hiddenMatrix!==void 0&&this.updateWorldMatrix(!1,!0),n}onVariableUpdate(r=!1){if(r){this.resetBBoxNeedsUpdate();return}this.updateMatrix(),this.resetBBoxNeedsUpdate(),this.invalidateClonerTransform(this),this.traverseEntityAncestors(o=>{o.invalidateClonerTransform(this)})}dispose(){this.disposed=!0,this.cloner&&(this.cloner.removeFromParent(),this.cloner=void 0)}disposeChildrenRecursively(){for(let r of this.children)De.is(r)&&r.disposeRecursively()}disposeRecursively(){this.dispose(),this.children.forEach(r=>{De.is(r)&&r.disposeRecursively()})}toState(r=[]){let o={name:this.name,visible:this.visible,raycastLock:this.raycastLock,...this.toObjectTransformState(r)};return Kn(o,r)}updateByObjUpdateOp(r,o){r!==void 0&&this.updateByOp({type:0,props:r,path:[]},{...this.data,...r},o,!1)}updateByOp(r,o,n,a){let s=this.data;this.data=o;let l=r,c=Le(r.path,["states","*"]);if(c!==null){if(r.type===0){let[u]=c;if(this?.stateSelection===u){let d={...r.props};if(delete d.name,Object.values(r.props).some(p=>p===void 0)){let p=this.data;if(p!==void 0){let f=Ze.zoom(p,r.path.slice(2));if(f)for(let h in r.props)r.props[h]===void 0&&h in f&&(d[h]=f[h])}}l={...r,props:d,path:r.path.slice(2)}}}}else if(r.type===0){let u=this.stateSelection?this.data.states.data(this.stateSelection):void 0;if(u!==void 0){if(r.props.name!==void 0&&u.name){let{name:p,...f}=u;u=f}if(r.props.material!==void 0&&"material"in u){let{material:p,...f}=u;u=f}let d=Ze.removeOverridden(r.path,r.props,u);l={...r,props:d}}}if(this.updateByPatchedOpBase(l,tn.patch(this.data,this.stateSelection?this.data.states.data(this.stateSelection):void 0),n),Le(r.path,["overrides"])){let u=[],d=[...r.path];for(u.push(d[1]),d.splice(0,2);d.length>0&&d[0]==="descendants";)u.push(d[1]),d.splice(0,2);if(u[u.length-1]===void 0){if(r.type===0)for(let p of Object.keys(r.props)){u[u.length-1]=p;let f=n.scene.findInstance([this.uuid,...u]);f&&(f.overrideData=r.props[p],f.updateState(Zr.apply(f.component.data,f.overrideData),n))}}else{let p=n.scene.findInstance([this.uuid,...u]);if(p){let f=Ze.zoom(p.component.data,d);if(r={...r,path:d},r.type===0){let h=r.props;if(f)for(let[m,y]of Object.entries(r.props))y===void 0&&(h===r.props&&(h={...r.props}),h[m]=f[m]);r={...r,props:h}}p.overrideData=da.resolve(o.overrides,u),p.updateByOp(r,nt.applySimple(p.data,r),n,!1)}}}else if(this.instances.length>0){let u;if(r.path.length===0&&r.type===0){let d;for(let p of no.rootOverrideProps)p in r.props&&(d===void 0&&(d={}),d[p]=r.props[p]);d&&(u={...r,props:d})}else for(let d of no.rootOverrideProps)if(Le(r.path,[d])){u=r;break}u!==void 0&&this.instances.forEach(d=>{if(d.isInstanceRoot){let p=Zr.filterOp(d.overrideData,u);p&&d.updateByOp(p,nt.applySimple(d.data,p),n,!0)}}),this.instances.forEach(d=>{if(!d.isInstanceRoot){let p=Zr.filterOp(d.overrideData,r);if(p){let f;s===d.data&&r===p?f=o:f=nt.applySimple(d.data,p),d.updateByOp(p,f,n,!0)}}})}}updateByPatchedOpBase(r,o,n){if(this.dataPatched=o,r.path.length===0&&r.type===0)r.props.type!==void 0&&!_r.is(r.props.type)&&Vr.changeEntityProptotype(this,o,n);else if(r.path.length===1&&r.path[0]==="geometry"&&r.type===0&&"type"in r.props){Vr.changeEntityProptotype(this,o,n);for(let a of this.children)De.is(a)&&a.updateVisible(n.scene)}this.updateByPatchedOp(r,o,n)}updateByPatchedOp(r,o,n){if(r.path.length===0&&r.type===0?this.updateState(r.props,n):r.type===0&&("resolutionLevel"in r.props||"useChildrenColors"in r.props)&&this.updateState(o,n),r.path[0]==="morphTargetInfluences"&&r.type===0){let s=o.morphTargetInfluences.get(r.path[1])?.data.name;s&&this.updateMorphInfluences(s,n.shared.getVariable(r.props.value,[this.uuid,"morphTargetInfluences",s]))}if(Le(r.path,["pathSnapping"])!==null&&this.updatePathSnapping(o.pathSnapping),Le(r.path,["cloner"])!==null){let a=nt.drop(r,1);a.path.length===0&&a.type===0&&a.props.disabled===!0?this.setFromClonerState(null,n):this.cloner?this.cloner.updateState(o.cloner,n.scene):(this.setFromClonerState(o.cloner,n),this.expandCloner(n.scene)),this.updateVisible(n.scene)}}updatePathSnapping(r=this.dataPatched.pathSnapping){this._updatedPathSnapping=r,this._needApplyPathSnapping=!0}get updatedPathSnapping(){return this._updatedPathSnapping}applyPathSnapping(r){let o=this._updatedPathSnapping?.pathId??this.dataPatched.pathSnapping.pathId,n=this._updatedPathSnapping?.slide??this.dataPatched.pathSnapping.slide??0,a=this._updatedPathSnapping?.offset??this.dataPatched.pathSnapping.offset??0,s=this._updatedPathSnapping?.orientation??this.dataPatched.pathSnapping.orientation;if(o===null)return;let l=r.find(o);if(!l||this._needApplyPathSnapping===!1)return;this._needApplyPathSnapping=!1;let c=l.data;if(c.geometry.path.points.length<=1)return;let u=uu(c.geometry.path),d=(n+a)%1;n+a===1&&d===0&&(d=1);let p=null;try{p=u.curves.length?u.getPointAt(d):null}catch(y){!1&&(console.warn(`The aligned path on ${this.name} is invalid. (${l.name})`),console.error(y))}if(p===null)return;let f=this.parent?this.parent?.matrixWorld:new du;l.updateMatrixWorld();let h=new du().multiplyMatrices(f.clone().invert(),l.matrixWorld);p.applyMatrix4(h);let m={position:p.toArray(),rotation:c.rotation};if(s==="tangential"){let y=new du().extractRotation(l.matrixWorld),x=u.getTangentAt(d).applyMatrix4(y).add(p),v=new du().lookAt(p,x,mI),w=Kp.setFromEuler(new pI().setFromRotationMatrix(v)).multiplyScalar(Xs.RAD2DEG);m={...m,rotation:w.toArray()}}this.updateTransformState(m),this.traverseEntity(y=>{y._cameraType&&y.dispatchEvent(fI)})}updateVisible(r){if(this.visible=this.dataPatched.visible&&(!this.dataPatched.cloner||(this.dataPatched.cloner.disabled??!1)||this.dataPatched.cloner?.hideBase!==!0),!r)return;let o=!1;this.traverseEntity(n=>{if(n.data.type==="Splat")return o=!0,!0}),o&&r.reloadSplats()}updateState_Entity(r,o){r.name!==void 0&&(this.name=r.name),r.raycastLock!==void 0&&(this.raycastLock=r.raycastLock),r.visible!==void 0&&(this.updateVisible(o?.scene),this.resetBBoxNeedsUpdate()),o&&"cloner"in r&&r.cloner!==void 0&&(this.setFromClonerState(r.cloner,o),this.updateVisible(o.scene)),this.updateTransformState(r,o)}get attachedSurfaceCloners(){return this.children.filter(r=>r instanceof Vr.Cloner&&r.parameters.type==="toObject")}setFromClonerState(r,o){this.disposed||(r===null||r.disabled?(this.cloner&&this.cloner.removeFromParent(),this.cloner=void 0):this.cloner===void 0?(this.cloner=new Vr.Cloner(this,r),o.scene.addPendingExpandCloner(this)):this.cloner.updateState(r,o.scene))}expandCloner(r){!this.disposed&&this.cloner&&this.cloner.expandClones(r)}invalidateClonerTransform(r){this.cloner&&this.cloner.invalidateTransform(r)}requestRender(){this.dispatchEvent({type:"requestRender"})}};import{BufferGeometry as xI,ConeGeometry as bI,Float32BufferAttribute as vI,MathUtils as SI}from"three";import{BufferGeometry as yx,CylinderGeometry as yI,Float32BufferAttribute as fu,MathUtils as gI,Vector2 as Gr,Vector3 as pu}from"three";var gx=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=i.parameters?.radiusTop,r=i.parameters?.radiusBottom,o=Object.assign({},t?.parameters??{width:100,radialSegments:64,heightSegments:1,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadius:8,cornerSegments:8,hollow:0},i.parameters);o.thetaLength=gI.clamp(o.thetaLength,0,360);let n=o.width/2,a=o.radiusTop??n,s=o.radiusBottom??n;if(a===s?(a=n,s=n):a>s?(a=n,s=s*n/a):(a=a*n/s,s=n),o.shapeBlendNode){a=e??n,s=r??n;let l=Math.max(a,s)*2;o.width=l,o.depth=l}return{parameters:Object.assign(o,{width:Math.abs(o.width),height:Math.abs(o.height??o.width),depth:Math.abs(o.depth??o.width),radiusTop:a,radiusBottom:s})}}static build(i){let{width:t,depth:e,height:r,radialSegments:o,heightSegments:n,openEnded:a,thetaStart:s,thetaLength:l,radiusTop:c,radiusBottom:u,cornerRadius:d,cornerSegments:p,hollow:f}=i.parameters,h;return l===0?(h=new yx,h.setAttribute("position",new fu([],3))):d||f?h=new Ys(c,u,r,o,n,a,s,l*Math.PI/180,d,d,p,f):h=new yI(c,u,r,o,n,a,s,l*Math.PI/180),h.scale(1,1,e/t),Object.assign(h,{userData:{...i,type:"CylinderGeometry"}})}};function xi(i,t,e){e.x=i.x*t.x,e.y=i.y,e.z=i.x*t.y}function mx(i){return new Gr(i.y,-i.x)}var Ys=class extends yx{constructor(t,e,r,o,n,a,s,l,c,u,d,p,f=!1){super(),this.type="RoundedCylinderBufferGeometry",t=t!==void 0?t:1,e=e!==void 0?e:1,r=r||1,o=Math.floor(o)||8,n=Math.floor(n)||1,a=a!==void 0?a:!1,s=s!==void 0?s:0,l=l!==void 0?l:Math.PI*2,a&&(c=0,u=0);let h=[],m=[],y=[],x=[],v=0,w=r/2,O=new pu,S=new pu;f&&t==0&&(t=c),f&&e==0&&(e=u);let T=new Gr(t,w),M=new Gr(e,-w),g=null,D=null,E=null,I=null,N=T.clone().sub(M),_=0,R=0,V=0;p>0&&(_=Math.min(t,e)*(1-p),R=t-_,V=e-_);let U=T.clone();U.x-=_;let B=Math.PI-N.angle(),q=N.angle(),j=Math.tan(q/2),F=Math.tan(B/2),H=j+F,W=p?H:F,ee=p?H:j;if(c=Math.min(c,(t-R)/W,N.length()/H),u=Math.min(u,(e-V)/ee,N.length()/H),c>0){let Q=c/j;g=T.clone().sub(new Gr(Q,c)),p&&(E=g.clone(),E.x-=_-H*c),T.sub(N.clone().setLength(Q))}if(u>0){let Q=u/F;D=M.clone().sub(new Gr(Q,-u)),M.add(N.clone().setLength(Q)),p&&(I=D.clone(),I.x-=_-H*u,U.sub(N.clone().setLength(Q)))}N=T.clone().sub(M);let te=N.length()<.5,Y=[];for(let Q=0;Q<=o;Q++){let $=[],de=Q/o,le=de*l+s,ie=new Gr(Math.sin(le),Math.cos(le));I&&D?(re($,de,ie,B,u,I,-1,!0),re($,de,ie,q,u,D,-1,!1)):D?(K($,ie,D.x,0,-1),re($,de,ie,q,u,D,-1,!1)):a||K($,ie,e,V,-1);let ce=mx(N).normalize();if(xi(ce,ie,O),!te)for(let ae=0;ae<=n;ae++){let me=ae/n,fe=N.clone().multiplyScalar(me).add(M);xi(fe,ie,S),m.push(S.x,S.y,S.z),y.push(O.x,O.y,O.z),x.push(de,.5+S.y/r),$.push(v++)}if(E&&g?(re($,de,ie,B,c,g,1,!1),re($,de,ie,q,c,E,1,!0)):g?(re($,de,ie,B,c,g,1,!1),K($,ie,g.x,0,1)):a||K($,ie,t,R,1),p&&!te){let ae=mx(N).multiplyScalar(-1).normalize();xi(ae,ie,O);for(let me=0;me<=n;me++){let fe=me/n,he=N.clone().multiplyScalar(-fe).add(U);xi(he,ie,S),m.push(S.x,S.y,S.z),y.push(O.x,O.y,O.z),x.push(de,.5+S.y/r),$.push(v++)}}p&&!a&&$.push($[0]),Y.push($)}for(let Q=0;Q<Y.length-1;Q++)for(let $=0;$<Y[0].length-1;$++){if(a&&p&&$==n)continue;let de=Y[Q][$],le=Y[Q+1][$],ie=Y[Q+1][$+1],ce=Y[Q][$+1],ae=m[ie*3+0],me=m[ie*3+2];h.push(de,le,ce),(ae!=0||me!=0)&&h.push(le,ie,ce)}l<Math.PI*2&&(Z(-1,Y[0],s),Z(1,Y[Y.length-1],s+l)),this.setIndex(h),this.setAttribute("position",new fu(m,3)),this.setAttribute("normal",new fu(y,3)),this.setAttribute("uv",new fu(x,2));function re(Q,$,de,le,ie,ce,ae,me){for(let fe=0;fe<d+1;fe++){let he=fe/d,xe=ae<0?he:1-he;me&&(xe-=1),xe*=le;let ye=new Gr(Math.sin(xe),Math.cos(xe)*ae),C=ye.clone().multiplyScalar(ie).add(ce);xi(C,de,S),m.push(S.x,S.y,S.z),xi(ye,de,O),y.push(O.x,O.y,O.z),x.push($,.5+S.y/r),Q.push(v++)}}function K(Q,$,de,le,ie){let ce=new pu,ae=new Gr,me=[de,le];ie<0&&me.reverse();for(let fe of me)ae.set(fe,w*ie),xi(ae,$,ce),m.push(ce.x,ce.y,ce.z),y.push(0,ie,0),x.push(.5,.5),Q.push(v++)}function Z(Q,$,de){let le=new Gr(Math.sin(de),Math.cos(de)),ie=new Gr(-Math.cos(de),Math.sin(de)),ce=new pu,ae=Q<0?(he,xe,ye)=>h.push(he,xe,ye):(he,xe,ye)=>h.push(he,ye,xe),me=new Gr((t+e+R+V)/4,0);xi(me,le,ce),m.push(ce.x,ce.y,ce.z),y.push(ie.x,0,ie.y),x.push(.5,.5);let fe=v++;for(let he of $){let xe=m.slice(he*3,he*3+3);m.push(...xe),y.push(ie.x,0,ie.y);let ye=x.slice(he*2,he*2+2);x.push(...ye),v++}for(let he=fe+1;he<v-1;he++)ae(fe,he,he+1);ae(fe,v-1,fe+1)}}};var xx=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:32,heightSegments:8,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadiusTop:8,cornerRadiusBottom:8,cornerSegments:8},i.parameters);return e.thetaLength=SI.clamp(e.thetaLength,0,360),{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t,depth:e,height:r,radialSegments:o,heightSegments:n,openEnded:a,thetaStart:s,thetaLength:l,cornerRadiusTop:c,cornerRadiusBottom:u,cornerSegments:d}=i.parameters,p;return l===0?(p=new xI,p.setAttribute("position",new vI([],3))):c>0||u>0||l<360?p=new Ys(0,t/2,r,o,n,a,s,l*Math.PI/180,c,u,d,0,!0):p=new bI(t/2,r,o,n,a),p.scale(1,1,e/t),Object.assign(p,{userData:{...i,type:"ConeGeometry"}})}};import{BoxGeometry as wI,BufferGeometry as PI,Float32BufferAttribute as Qp,Vector3 as Ks}from"three";var bx=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,widthSegments:1,heightSegments:1,depthSegments:1,cornerRadius:8,cornerSegments:8},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t,height:e,depth:r,widthSegments:o,heightSegments:n,depthSegments:a,cornerRadius:s,cornerSegments:l}=i.parameters,c;return s===0?c=new wI(t,e,r,o,n,a):c=new Jp(t,e,r,o,n,a,s,l),Object.assign(c,{userData:{...i,type:"CubeGeometry"}})}},Zp=Math.PI/2,Jp=class extends PI{constructor(t=1,e=1,r=1,o=1,n=1,a=1,s=0,l=4){super(),this.type="BoxGeometry",o=Math.floor(o),n=Math.floor(n),a=Math.floor(a),l=Math.floor(l),s=Math.min(s,t/2,e/2,r/2);let c=[],u=[],d=[],p=[],f=0;h("z","y","x",-1,-1,r,e,t,a,n),h("z","y","x",1,-1,r,e,-t,a,n),h("x","z","y",1,1,t,r,e,o,a),h("x","z","y",1,-1,t,r,-e,o,a),h("x","y","z",1,-1,t,e,r,o,n),h("x","y","z",-1,-1,t,e,-r,o,n),s>0&&(m("z","y","x",-1,-1,1,r,e,t,a),m("z","y","x",1,-1,-1,r,e,t,a),m("z","y","x",-1,1,-1,r,e,t,a),m("z","y","x",1,1,1,r,e,t,a),m("x","y","z",-1,-1,-1,t,e,r,o),m("x","y","z",1,-1,1,t,e,r,o),m("x","y","z",-1,1,1,t,e,r,o),m("x","y","z",1,1,-1,t,e,r,o),m("y","x","z",-1,-1,1,e,t,r,n),m("y","x","z",1,-1,-1,e,t,r,n),m("y","x","z",1,1,1,e,t,r,n),m("y","x","z",-1,1,-1,e,t,r,n),y(1,1,1),y(-1,1,1),y(1,-1,1),y(-1,-1,1),y(1,1,-1),y(-1,1,-1),y(1,-1,-1),y(-1,-1,-1)),this.setIndex(c),this.setAttribute("position",new Qp(u,3)),this.setAttribute("normal",new Qp(d,3)),this.setAttribute("uv",new Qp(p,2));function h(x,v,w,O,S,T,M,g,D,E){let I=(T-2*s)/D,N=(M-2*s)/E,_=T/2-s,R=M/2-s,V=g/2,U=D+1,B=E+1,q=0,j=new Ks;for(let F=0;F<B;F++){let H=F*N-R;for(let W=0;W<U;W++){let ee=W*I-_;j[x]=ee*O,j[v]=H*S,j[w]=V,u.push(j.x,j.y,j.z),j[x]=0,j[v]=0,j[w]=g>0?1:-1,d.push(j.x,j.y,j.z),p.push(W/D),p.push(1-F/E),q+=1}}for(let F=0;F<E;F++)for(let H=0;H<D;H++){let W=f+H+U*F,ee=f+H+U*(F+1),te=f+(H+1)+U*(F+1),Y=f+(H+1)+U*F;c.push(W,ee,Y),c.push(ee,te,Y)}f+=q}function m(x,v,w,O,S,T,M,g,D,E){let I=(M-2*s)/E,N=M/2-s,_=g/2-s,R=D/2,V=E+1,U=0,B=new Ks,q=new Ks;for(let j=0;j<l+1;j++){let F=j/l*Zp,H=Math.sin(F)*s,W=(1-Math.cos(F))*s,ee=Math.sin(F),te=Math.cos(F);B[v]=(_+H)*S,B[w]=(R-W)*T,q[x]=0,q[v]=ee*Math.sign(B[v]),q[w]=te*Math.sign(B[w]);for(let Y=0;Y<V;Y++){let re=Y*I-N;B[x]=re*O,u.push(B.x,B.y,B.z),d.push(q.x,q.y,q.z),p.push(Y/E),p.push(0),U+=1}}for(let j=0;j<l;j++)for(let F=0;F<E;F++){let H=f+F+V*j,W=f+F+V*(j+1),ee=f+(F+1)+V*(j+1),te=f+(F+1)+V*j;c.push(H,W,te),c.push(W,ee,te)}f+=U}function y(x,v,w){let O=new Ks,S=new Ks(t/2,e/2,r/2);S.subScalar(s);let T=[],M=x*v*w>0?(D,E,I)=>c.push(D,E,I):(D,E,I)=>c.push(D,I,E);for(let D=0;D<=l;D++){let E=[],I=Zp*(1-D/l),N=Math.cos(I),_=Math.sin(I),R=0;for(let V=0;V<=D;V++){let U=Math.cos(R),B=Math.sin(R);O.x=N*U,O.y=_,O.z=N*B;let q=S.clone().addScaledVector(O,s);u.push(x*q.x,v*q.y,w*q.z),d.push(x*O.x,v*O.y,w*O.z),p.push(0,0),E.push(f++),R+=Zp/D}T.push(E)}let g=T.length-1;for(let D=0;D<g;D++){let E=T[D],I=T[D+1],N=E.length-1;M(E[0],I[1],I[0]);for(let _=1;_<=N;_++)M(E[_-1],E[_],I[_]),M(E[_],I[_+1],I[_])}}}};import{BufferGeometry as OI,Float32BufferAttribute as ef,Triangle as TI,Vector3 as Fo,Vector2 as tf}from"three";var bi=class extends OI{constructor(t=[],e=[],r="",o=1,n=.2,a=4){super(),this.type="PolyhedronGeometryRound";let s=[],l=[],c=[];u(),d(),this.setAttribute("position",new ef(s,3)),this.setAttribute("normal",new ef(c,3)),this.setAttribute("uv",new ef(l,2));return;function u(){n=Math.min(1-1e-5,n),n==0&&(a=0);let f={IcosahedronGeometry:5,DodecahedronGeometry:3,HexahedronGeometry:3,OctahedronGeometry:4,TetrahedronGeometry:3}[r],h=new Fo,m=h.clone(),y=new TI,x=n*o,v=o-x,w=a+1,O=new Fo,S=(j,F)=>O.subVectors(j,F).normalize(),T=(j,F)=>Array(j).fill(void 0).map(F),M=T(t.length/3,(j,F)=>new Fo().fromArray(t,F*3).setLength(o)),g=[],D=1e6;for(let j=0;j<M.length;j++){let F=M[j],H=[],W,ee,te,Y=1e10,re=-1;for(;(re=e.indexOf(j,re+1))!=-1;){let $=re-re%3;W=e[$+(re+1)%3],ee=e[$+(re+2)%3],te=F.distanceToSquared(M[W]),Y=Math.min(Y,te),H.push([W,ee,te])}Y+=1e-6;let K=[],Z=0,Q=H.length;for(let $=0;$<Q;$++){[W,ee,te]=H[Z];let de=g[W]?.includes(j)==!0;te<=Y&&K.push(W+ +de*D),Z=H.findIndex(le=>le[0]==ee)}g.push(K)}let E=[];{let j=0,F=0,H,W,ee=f==3;for(let te=0;te<=a;te++){H=te*(te+1)/2,W=(te+1)*(te+2)/2;for(let Y=0;Y<a-te;Y++)[j,F]=[H+Y+te+2,W+Y+te+3],E.push(H,W,...ee?[F,H]:[j,W],F,j),[H,W]=[j,F];E.push(H,W,H+a+2)}}let I=h.clone(),N=h.clone(),_=h.clone(),R=h.clone(),V=h.clone(),U=[],B=T(M.length,()=>T(f,()=>h.clone()));for(let j=0;j<M.length;j++){h.copy(M[j]).normalize(),I.copy(h).multiplyScalar(v);let F=g[j];for(let K=0;K<F.length;K++){let Z=F[K],Q=F[(K+1)%f];y.setFromPointsAndIndices(M,j,Z%D,Q%D),y.b.sub(y.a).setLength(1e10).add(y.a),y.c.sub(y.a).setLength(1e10).add(y.a),y.closestPointToPoint(I,B[j][K])}let H=[],W=[],ee=[],te=new Fo;a==0&&[...B[j]].reduce((K,Z)=>K.add(Z),te).multiplyScalar(1/f);for(let K=0;K<f;K++){let Z=[],Q=(K-1+f)%f,$=B[j][Q],de=B[j][K];h.copy($).sub(I),m.copy(de).sub(I);let le=I.angleTo(h),ie=h.angleTo(m),ce=Math.cos(le)*x;a==0?N.copy(te):N.copy(I).setLength(v+ce),W.push(ce);let ae=[N,$,de];for(let me=0;me<2;me++){let fe=ae[me],he=ae[me+1];R.subVectors(fe,I),V.subVectors(he,I),_.crossVectors(R,V).normalize();for(let xe=0;xe<w;xe++){let ye=[le,ie][me]*xe/w;h.copy(R).applyAxisAngle(_,ye).add(I),H.push(h.clone()),me&&(S(h,I),Z.push([xe==0?fe:h.clone(),O.clone()]))}me&&(S(he,I),Z.push([he,O.clone()]))}ee.push(Z)}U.push(ee);let Y=2*w,re=2;for(let K=0;K<f;K++){let Z=Y*K,Q=Y*((K+1)%f),$=[H[Z]];for(let le=1;le<w;le++){R=H[Z+le],V=H[Q+le],$.push(R);for(let ie=1,ce=le-re+1;ie<=ce;ie++)h.lerpVectors(R,V,ie/(ce+1)),h.sub(I).setLength(W[K]).add(I),$.push(h.clone());$.push(V)}for(let le=0;le<w;le++)$.push(H[le+w+Z]);$.push(H[Q+w]);let de=E.map(le=>$[le]);s.push(...de.map(le=>[le.x,le.y,le.z]).flat()),c.push(...de.map(le=>(S(le,I),[O.x,O.y,O.z])).flat())}}let q=[];for(let j=0;j<g.length;j++)for(let F=0;F<f;F++){let H=g[j][F];if(H<D){let W=g[H].findIndex(Y=>Y%D==j),ee=U[j][F],te=U[H][W];for(let Y=0;Y<w;Y++){let re=ee[Y],K=te[w-Y],Z=ee[Y+1],Q=te[w-(Y+1)];[re,K,Z,Z,K,Q].forEach($=>{s.push($[0].x,$[0].y,$[0].z),c.push($[1].x,$[1].y,$[1].z)})}q.push(ee[0][0],te[w][0],ee[w][0],te[0][0])}}for(;q.length;){let j,F,H,W;[j,F]=q.splice(0,2);let ee=[j];for(;j!=F;)ee.push(F),H=q.indexOf(F),W=H%2,F=q.splice(H-W,2)[1-W];O.subVectors(ee[0],ee[1]).cross(h.subVectors(ee[0],ee[2])).normalize();let te=O.dot(ee[0])<0;te&&O.negate();for(let Y=1;Y<=ee.length-2;Y++)[ee[Y+ +te],ee[Y+1-+te],ee[0]].forEach(re=>{s.push(re.x,re.y,re.z),c.push(O.x,O.y,O.z)})}}function d(){let p=new Fo;for(let M=0;M<s.length;M+=3){p.x=s[M+0],p.y=s[M+1],p.z=s[M+2];let g=S(p)/2/Math.PI+.5,D=T(p)/Math.PI+.5;l.push(g,1-D)}let f=new Fo,h=new Fo,m=new Fo,y=new Fo,x=new tf,v=new tf,w=new tf,O=(M,g,D,E)=>{E<0&&M.x===1&&(l[g]=M.x-1),D.x===0&&D.z===0&&(l[g]=E/2/Math.PI+.5)};for(let M=0,g=0;M<s.length;M+=9,g+=6){f.set(s[M+0],s[M+1],s[M+2]),h.set(s[M+3],s[M+4],s[M+5]),m.set(s[M+6],s[M+7],s[M+8]),x.set(l[g+0],l[g+1]),v.set(l[g+2],l[g+3]),w.set(l[g+4],l[g+5]),y.copy(f).add(h).add(m).divideScalar(3);let D=S(y);O(x,g+0,f,D),O(v,g+2,h,D),O(w,g+4,m,D)}for(let M=0;M<l.length;M+=6){let g=l[M+0],D=l[M+2],E=l[M+4],I=Math.max(g,D,E),N=Math.min(g,D,E);I>.9&&N<.1&&(g<.2&&(l[M+0]+=1),D<.2&&(l[M+2]+=1),E<.2&&(l[M+4]+=1))}function S(M){return Math.atan2(M.z,-M.x)}function T(M){return Math.atan2(-M.y,Math.sqrt(M.x*M.x+M.z*M.z))}}}static fromJSON(t){return new bi(t.vertices,t.indices,t.radius,t.corner,t.cornerSides)}};import{DodecahedronGeometry as CI}from"three";var vx=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,detail:0,corner:0,cornerSides:4},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t,height:e,depth:r,detail:o,corner:n,cornerSides:a}=i.parameters,s=o===0&&n!==0?new Qs(t*.5,n,a):new CI(t*.5,o);return s.scale(1,e/t,r/t),Object.assign(s,{userData:{...i,type:"DodecahedronGeometry"}})}},Qs=class extends bi{constructor(t=1,e=.2,r=4){let o=(1+Math.sqrt(5))/2,n=1/o,a=[-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,0,-n,-o,0,-n,o,0,n,-o,0,n,o,-n,-o,0,-n,o,0,n,-o,0,n,o,0,-o,0,-n,o,0,-n,-o,0,n,o,0,n],s=[3,11,7,3,7,15,3,15,13,7,19,17,7,17,6,7,6,15,17,4,8,17,8,10,17,10,6,8,0,16,8,16,2,8,2,10,0,12,1,0,1,18,0,18,16,6,10,2,6,2,13,6,13,15,2,16,18,2,18,3,2,3,13,18,1,9,18,9,11,18,11,3,4,14,12,4,12,0,4,0,8,11,9,5,11,5,19,11,19,7,19,5,14,19,14,4,19,4,17,1,12,14,1,14,5,1,5,9],l="DodecahedronGeometry";super(a,s,l,t,e,r),this.type=l}static fromJSON(t){return new Qs(t.radius,t.corner,t.cornerSides)}};import{Plane as VI,Shape as Lx,Vector2 as jo,Vector3 as zI,MathUtils as cf,LineCurve as uf,QuadraticBezierCurve as Bx,CubicBezierCurve as gu}from"three";import{CubicBezierCurve as hu,EllipseCurve as AI,LineCurve as mu,LineCurve3 as MI,MathUtils as II,QuadraticBezierCurve as of,SplineCurve as EI,Vector2 as qt,Vector3 as Px}from"three";var Zs=1e-12,wa=class{constructor(t){this.position=new qt;this.startPosition=new qt;this.uuid=II.generateUUID();this.position=t.clone()}start(){this.reset()}reset(){this.startPosition.copy(this.position)}applyOffset(t){this.position.copy(this.startPosition).add(t)}copy(t){return this.position.copy(t.position),this.startPosition.copy(t.startPosition),this}clone(){return new wa(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},Pa=class extends wa{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new Pa(this.parent).copy(this)}},Fr=class extends wa{constructor(e,r){super(r);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new Pa(this),new Pa(this))}static create(e,r){let o=new Fr(e,new qt(...r.position));return o.controls[0].position.set(...r.controlPrevious.position),o.controls[1].position.set(...r.controlNext.position),o.roundness=r.roundness,o.areControlsDirectionsMirrored=r.areControlsDirectionsMirrored,o}getOppositeControl(e){let r=this.controls.indexOf(e);return r===0?this.controls[1]:r===1?this.controls[0]:null}applyOffsetToControls(e,r=1){for(let o=0,n=this.controls.length;o<n;o++){let a=this.controls[o];this.position.distanceTo(a.position)<=r?a.position.copy(this.position):a.applyOffset(e)}}controlsMoved(){return!(this.position.equals(this.controls[0].position)&&this.position.equals(this.controls[1].position))}copy(e){return super.copy(e),this.controls[0].copy(e.controls[0]),this.controls[1].copy(e.controls[1]),this.roundness=e.roundness,this.uuid=e.uuid,this}clone(){return new Fr(this.uuid,this.position).copy(this)}toJSON(){return super.toJSON().concat(this.controls[0].toJSON(),this.controls[1].toJSON(),[this.roundness])}computeTangents(){let e=this.curveBefore?.getTangentAt(1),r=this.curveAfter?.getTangentAt(0);return[e,r]}computeNormals(e=new qt,r=new qt){let[o,n]=this.computeTangents();return o&&n&&(Sx(o,e),Sx(n,r)),[e,r]}computeTangent(e=new qt){let[r,o]=this.computeTangents();return r&&o&&e.copy(r).add(o).normalize(),e}computeNormal(e=new qt){let[r,o]=this.computeNormals();return e.copy(r).add(o).normalize(),e}};function Sx(i,t=new qt){let e=i.length();return t.set(-i.y/e,i.x/e)}var nf=i=>i,Oa=new qt,yu=new qt,NI=new qt,DI=new qt,_I=new qt,RI=new qt,Ox=new Px,Tx=new Px;function Cx(i){let t=new qt;t.addVectors(i.v0,Oa.subVectors(i.v1,i.v0).multiplyScalar(2/3));let e=new qt;return e.addVectors(i.v2,yu.subVectors(i.v1,i.v2).multiplyScalar(2/3)),new hu(i.v0,t,e,i.v2)}function Js(i,t,e=Number.EPSILON){return Math.abs(i-t)<e}function LI(i,t,e=Number.EPSILON){return i.distanceTo(t)<e}function BI(i,t,e=Number.EPSILON){return i.distanceTo(t)<e}function af(i,t,e){let r=Math.sqrt(Math.pow(t.x-i.x,2)+Math.pow(t.y-i.y,2)),o=Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2)),n=Math.sqrt(Math.pow(e.x-i.x,2)+Math.pow(e.y-i.y,2));return Math.acos((o*o+r*r-n*n)/(2*o*r))}function Ax(i,t,e){return wx(i,t)&&wx(t,e)&&rf(i.position,t.position,e.position)}function rf(i,t,e){return Oa.copy(t).sub(i).cross(yu.copy(e).sub(i))===0}function Mx(i,t,e,r,o){let n=Math.sqrt(Math.pow(t.x-i.x,2)+Math.pow(t.y-i.y,2)),a=(i.y+t.y)/2,s=(i.x+t.x)/2,l=Math.sqrt(Math.pow(e,2)-Math.pow(n/2,2))*(i.y-t.y)/n,c=Math.sqrt(Math.pow(e,2)-Math.pow(n/2,2))*(t.x-i.x)/n;return r.set(s+l,a+c),o.set(s-l,a-c),[r,o]}function Ix(i,t,e){let r=i.distanceTo(e),o=t.distanceTo(e);return r<o?t:i}function Ex(i,t,e,r,o,n){let a=t.x-i.x,s=t.y-i.y,l=e.x-i.x,c=e.y-i.y,u=Math.sqrt((a+l)*(a+l)+(s+c)*(s+c)),d;return af(t,i,e)>Math.PI&&(u*=-1),Js(c,s)?d=(s+c)*(r/u-.5)*8/3/(a-l):d=(a+l)*(r/u-.5)*8/3/(c-s),o.set(t.x-d*s,t.y+d*a),n.set(e.x+d*c,e.y-d*l),[o,n]}function sf(i,t){return i.position.equals(i.controls[1].position)&&t.position.equals(t.controls[0].position)}function wx(i,t){return rf(i.position,i.controls[1].position,t.position)&&rf(i.position,t.controls[0].position,t.position)}function Nx(i,t,e,r,o=.5){let n=Oa.subVectors(t,i).multiplyScalar(o).add(i),a=yu.subVectors(e,t).multiplyScalar(o).add(t),s=NI.subVectors(r,e).multiplyScalar(o).add(e),l=n,c=DI.subVectors(a,n).multiplyScalar(o).add(n),u=_I.subVectors(s,a).multiplyScalar(o).add(a),d=s,p=RI.subVectors(u,c).multiplyScalar(o).add(c);return[i.x,i.y,l.x,l.y,c.x,c.y,p.x,p.y,u.x,u.y,d.x,d.y,r.x,r.y]}function Dx(i,t,e=12,r=!0){let o=Tx.set(0,0,0),n,a=0,s=[];for(let l=0;l<t.length;l++){let c=nf(t[l]),u=Oa,d=vi(c,e);s.push(d);for(let p=0;p<=d;p++)if(c instanceof hu||c instanceof of||c instanceof mu){if(c.getPoint(p/d,u),o.set(u.x,u.y,0),n!==void 0&&BI(n,o))continue;n===void 0&&(n=Ox),n.copy(o),i.setXYZ(a,o.x,o.y,o.z),a++}}return r&&a>1&&!(i.getX(a-1)===i.getX(0)&&i.getY(a-1)===i.getY(0)&&i.getZ(a-1)===i.getZ(0))&&(i.setXYZ(a,i.getX(0),i.getY(0),i.getZ(0)),a++),i}function _x(i,t,e,r=12,o=!0){let n=Tx.set(0,0,0),a=0,s=[];for(let l=0;l<t.length;l++){if(e[l]===!1)continue;let c,u=nf(t[l]),d=Oa,p=vi(u,r);s.push(p);for(let f=0;f<=p;f++)if(u instanceof hu||u instanceof of||u instanceof mu){if(u.getPoint(f/p,d),n.set(d.x,d.y,0),c?.equals(n))continue;c===void 0?c=Ox:(i.setXYZ(a,c.x,c.y,c.z),a++,i.setXYZ(a,n.x,n.y,n.z),a++),c.copy(n)}}return o&&a>1&&!(i.getX(a-1)===i.getX(0)&&i.getY(a-1)===i.getY(0)&&i.getZ(a-1)===i.getZ(0))&&(i.setXYZ(a,i.getX(0),i.getY(0),i.getZ(0)),a++),s}function lf(i,t=12,e=!1){let r=[];for(let o=0,n=i.length;o<n;o++){let a=i[o],s=0;if(e&&a.roundedCurveCorner!==void 0){let l=vi(a.roundedCurveCorner,t)*.5;o>0&&(r[o-1]+=l),s+=l}a.curveAfter!==void 0&&(s+=vi(a.curveAfter,t)),r.push(s)}return i.length>0&&e&&i[0].roundedCurveCorner!==void 0&&(r[i.length-1]+=vi(i[0].roundedCurveCorner,t)*.5),r}function vi(i,t=12){return i&&i instanceof AI?t*2:i&&(i instanceof mu||i instanceof MI)?1:i&&i instanceof EI?t*i.points.length:t}function Rx(i,t,e=12,r=!0){let o,n=0;for(let a=0;a<t.length;a++){let s=nf(t[a]),l=vi(s,e),c=Oa;for(let u=0;u<=l;u++)if(s instanceof hu||s instanceof of||s instanceof mu){if(s.getPoint(u/l,c),o!==void 0&&LI(o,c,Zs))continue;o===void 0&&(o=yu),o.copy(c),i.push(c.x,c.y),n++}}return Js(i[0],i[i.length-2],Zs)&&Js(i[1],i[i.length-1],Zs)&&(i.pop(),i.pop()),r&&n>1&&!(Js(i[n-1],i[1],Zs)&&Js(i[n-2],i[0],Zs))&&(i.push(i[0],i[1]),n++),i}var df=new jo,GI=new jo,FI=new jo,jI=new jo,UI=new jo,kI=new jo,je=class extends Lx{constructor(e=100,r=100){super();this.points=[];this.shapeHoles=[];this.plane=new VI(new zI(0,0,-1));this.subdivision=0;this.controlSnapDistance=4;this.pointIDs=0;this.isMesh2D=!1;this.isText=!1;this._roundness=0;this.isClosed=!1;this.useCubicForRoundedCorners=!0;this.uuid=cf.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=r}static createFromState(e,r,o){let n=new je;return n.isClosed=e.isClosed,n.points=e.points.map(a=>Fr.create(a.id,a.data)),typeof e.roundness=="number"&&(n.roundness=e.roundness),n.shapeHoles=e.shapeHoles.map(a=>je.createFromState(a)),r!==void 0&&o!==void 0&&n.applySize(r,o),n.update(),n}get width(){return this._width}get height(){return this._height}get roundness(){return this._roundness}set roundness(e){if(this._roundness!==e){this._roundness=e;for(let r=0,o=this.points.length;r<o;r++)this.points[r].roundness=e;this.needsUpdate=!0}}getPointsIndexesByIds(e){return e.map(r=>this.getPointIndexById(r)).filter(r=>r>=0)}getPointIndexById(e){let r=this.points.length,o=this.points.findIndex(n=>n.uuid===e);if(o<0){let n=r;for(let a=0,s=this.shapeHoles.length;a<s;a++){let l=this.shapeHoles[a],c=l.points.length,u=l.getPointIndexById(e);if(u<0)n+=c;else return u+n}}return o}getLineIndexById(e){return this.getPointIndexById(e)}getBezierPoint(e){if(e<=this.points.length-1)return this.points[e];if(this.shapeHoles.length>0){let r=this.points.length;for(let o=0,n=this.shapeHoles.length;o<n;o++){let a=this.shapeHoles[o],s=e-r;if(s<=a.points.length-1)return a.points[s];r+=a.points.length}}throw new Error("This shape does not have a point for this index: "+e)}getBezierPointIndex(e){let r=this.points.indexOf(e);if(r>=0)return r;if(r=this.points.length,this.shapeHoles.length>0)for(let o=0,n=this.shapeHoles.length;o<n;o++){let a=this.shapeHoles[o],s=a.points.indexOf(e);if(s>=0)return r+s;r+=a.points.length}return-1}getAllPoints(){let e=[].concat(...this.shapeHoles.map(r=>r.points));return[...this.points,...e]}applySize(e,r){e===0&&(e=.001),r===0&&(r=.001),this._width=e,this._height=r}applyScale(e,r){let o=df.set(e,r);for(let n=0,a=this.points.length;n<a;n++){let s=this.points[n];s.position.multiply(o),s.controls[0].position.multiply(o),s.controls[1].position.multiply(o)}for(let n=0,a=this.shapeHoles.length;n<a;n++)this.shapeHoles[n].applyScale(e,r);this._update()}createPoint(e,r=0,o=cf.generateUUID()){let n;e instanceof jo?n=e:n=new jo(e,r);let a=new Fr(o,n);return a.roundness=this.roundness,a}addPoint(e){this.points.push(e),this.needsUpdate=!0}addPointAt(e,r){this.points.splice(r,0,e),this.needsUpdate=!0}getPointByUuid(e){for(let r=0,o=this.points.length;r<o;r++){let n=this.points[r];if(n.uuid===e)return n}for(let r=0,o=this.shapeHoles.length;r<o;r++){let a=this.shapeHoles[r].getPointByUuid(e);if(a)return a}}getFirstPoint(){return this.points[0]}getLastPoint(){return this.points[this.points.length-1]}removePoint(e){let r=this.points.indexOf(e);r>=0&&this.points.splice(r,1),this.needsUpdate=!0}removePointById(e){let r=this.points.find(o=>o.uuid===e);r&&this.removePoint(r)}update(){for(let e=0,r=this.shapeHoles.length;e<r;e++)this.shapeHoles[e].update();this._update()}extractShapePointsToBuffer(e,r=12,o=!1){this.subdivision=r,this.curveDivisions===void 0&&this.computeCurveDivisions(r);let n=o?this.roundedCurveDivisions:this.curveDivisions;return Dx(e,o?this.roundedCurves:this.curves,r,this.autoClose),n.reduce((a,s)=>a+s,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=lf(this.points,e,!1),this.roundedCurveDivisions=lf(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,r,o=12){return _x(e,this.curves,r,o,this.autoClose).reduce((a,s)=>a+s,0)*2}extractShapePointsToFlatArray(e,r=12){return this.subdivision=r,this.curveDivisions===void 0&&this.computeCurveDivisions(r),Rx(e,this.roundedCurves,r,this.autoClose)}getCurveIndexFromVertexId(e,r=!1){let o=0;this.curveDivisions===void 0&&this.computeCurveDivisions(this.subdivision);let n=r?this.roundedCurveDivisions:this.curveDivisions,a=0;r&&this.points[0].roundedCurveCorner!==void 0&&(a=vi(this.points[0].roundedCurveCorner,this.subdivision)*.5);let s=e-a;s<0&&(s+=n.reduce((l,c)=>l+c,0));for(let l=0,c=n.length;l<c;l++){let u=n[l];if(s<o+u)return[l,(s-o+1)/u];o+=u}return[0,1]}getCurveT(e,r,o){let n=this.points[e],a=this.points[e>=this.points.length-1?0:e+1],s=this.curveDivisions,l=s[e];if(sf(n,a)){let d=n.position.distanceTo(a.position);return n.position.distanceTo(df.set(o.x,o.y))/d}let c=0;for(let d=0;d<e;d++)c+=s[d];return(r-c)/l}dispose(){}_applyCurveForPoint(e,r){sf(r,e)?this.lineTo(e.position.x,e.position.y):this.bezierCurveTo(r.controls[1].position.x,r.controls[1].position.y,e.controls[0].position.x,e.controls[0].position.y,e.position.x,e.position.y);let o=this.curves[this.curves.length-1];e.curveBefore=o,r.curveAfter=o;let n=o.clone();e.roundedCurveBefore=n,r.roundedCurveAfter=n,e.roundedCurveCorner=void 0,this.roundedCurves.push(n)}_update(){if(this.curves=[],this.roundedCurves=[],!this.points.length)return;for(let r=0,o=this.points.length;r<o;r++){let n=this.points[r];if(r===0)this.moveTo(n.position.x,n.position.y);else{let a=this.points[r-1];this._applyCurveForPoint(n,a)}}let e=this.getLastPoint();if(e?.curveAfter&&(e.curveAfter=void 0),this.isClosed){let r=this.points[0],o=this.points[this.points.length-1];this._applyCurveForPoint(r,o)}if(this.points.length>2){let r=0;for(let o=0,n=this.points.length;o<n;o++){let a=this.points[o],s=this.points[o-1]??this.points[this.points.length-1],l=this.points[o+1]??this.points[0],c=a.roundness,u=s&&l&&Ax(s,a,l);if(!a.controlsMoved()&&c>0&&!u){let d=a.curveBefore,p=a.curveAfter;if(d===void 0||p===void 0)continue;let f=a.roundedCurveBefore,h=a.roundedCurveAfter,m=d.getLength(),y=p.getLength(),x=Math.min(c,m*.499),v=Math.min(c,y*.499),w=Math.min(x,v),O=1-w/m,S=w/y,T=d.getPointAt(O,df),M=p.getPointAt(S,GI);this._subSplitCurve(d,f,O,T,void 0),this._subSplitCurve(p,h,S,void 0,M);let g;if(this.useCubicForRoundedCorners){let D=af(T,a.position,M)/2,E=Math.tan(D)*T.distanceTo(a.position),[I,N]=Mx(T,M,E,FI,jI),_=Ix(I,N,a.position),[R,V]=Ex(_,T,M,E,UI,kI);g=new gu(T.clone(),R.clone(),V.clone(),M.clone())}else g=new Bx(T.clone(),a.position.clone(),M.clone());a.roundedCurveCorner=g,this.roundedCurves.splice(o+r,0,g),r++}}}}_subSplitCurve(e,r,o,n,a){if(e instanceof uf)n!==void 0&&r.v2.copy(n),a!==void 0&&r.v1.copy(a);else{let s=e,l=r,c=s.getUtoTmapping(o,0),u=Nx(s.v0,s.v1,s.v2,s.v3,c);return n!==void 0&&(l.v0.set(u[0],u[1]),l.v1.set(u[2],u[3]),l.v2.set(u[4],u[5]),l.v3.set(u[6],u[7])),a!==void 0&&(l.v0.set(u[6],u[7]),l.v1.set(u[8],u[9]),l.v2.set(u[10],u[11]),l.v3.set(u[12],u[13])),l}return r}clone(){let e=new je(this._width,this._height);return e.points=this.points.map(r=>r.clone()),e.isClosed=this.isClosed,e.roundness=this.roundness,e.isMesh2D=this.isMesh2D,e.shapeHoles=this.shapeHoles.map(r=>r.clone()),e}toJSON(){return{points:this.points.reduce((e,r)=>e.concat(r.toJSON()),[]),shapeHoles:this.shapeHoles.map(e=>e.toJSON()),isClosed:this.isClosed,roundness:this.roundness}}fromJSON(e){this.points=[],this.pointIDs=0;let r=e.points.length/7;for(let o=0;o<r;o++){let n=o*7,a=e.points[n+0],s=e.points[n+1],l=e.points[n+2],c=e.points[n+3],u=e.points[n+4],d=e.points[n+5],p=e.points[n+6],f=new Fr(cf.generateUUID(),new jo(a,s));f.controls[0].position.set(l,c),f.controls[1].position.set(u,d),f.roundness=p,this.points.push(f)}return this.shapeHoles=e.shapeHoles?.length?e.shapeHoles.map(o=>{let n=new je;return n.fromJSON(o),n}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e,r=!1){this.isText=r;let o=(a,s)=>{s instanceof gu&&s.v3.equals(a.position)&&a.controls[0].position.copy(s.v2)},n=a=>{let s=[],l,c;for(l=0,c=a.length;l<c;l++)a[l]instanceof Bx&&(a[l]=Cx(a[l]));for(l=0,c=a.length;l<c;l++){let p=a[l],f=l>0?a[l-1]:null,h;p instanceof gu?(h=this.createPoint(p.v0),h.controls[1].position.copy(p.v1)):p instanceof uf&&(h=this.createPoint(p.v1)),h!==void 0&&(f!==null&&o(h,f),s.push(h))}let u=a[a.length-1],d=!1;return u instanceof gu?u.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(u.v2),d=!0):u instanceof uf&&u.v2.equals(s[0].position)&&(d=!0),this.isClosed=d,s};return this.points=n(e.curves),e instanceof Lx&&(this.shapeHoles=e.holes.map(a=>{let s=new je;return s.fromShape(a),s})),this.update(),this}updatePoint(e,r){let o=this.getPointByUuid(e);o&&(r.position!==void 0&&o.position.fromArray(r.position),r.roundness!==void 0&&(o.roundness=r.roundness),r.areControlsDirectionsMirrored!==void 0&&(o.areControlsDirectionsMirrored=r.areControlsDirectionsMirrored),this.needsUpdate=!0)}updatePreviousControl(e,r){let n=this.getPointByUuid(e)?.controls[0];n&&(r.position&&n.position.fromArray(r.position),this.needsUpdate=!0)}updateNextControl(e,r){let n=this.getPointByUuid(e)?.controls[1];n&&(r.position&&n.position.fromArray(r.position),this.needsUpdate=!0)}};var ff=Math.PI*2;function pf({x:i,y:t},e,r,o,n){return{x:i*e+o,y:t*r+n}}function HI(i,t){let e=t===1.5707963267948966?.551915024494:t===-1.5707963267948966?-.551915024494:1.3333333333333333*Math.tan(t/4),r=Math.cos(i),o=Math.sin(i),n=Math.cos(i+t),a=Math.sin(i+t);return[{x:r-o*e,y:o+r*e},{x:n+a*e,y:a-n*e},{x:n,y:a}]}function Vx(i,t,e,r){let o=i*r-t*e<0?-1:1,n=Math.min(1,Math.max(-1,i*e+t*r));return o*Math.acos(n)}function WI(i,t,e,r,o,n,a,s,l,c){let u=Math.pow(o,2),d=Math.pow(n,2),p=Math.pow(a,2),f=Math.pow(s,2),h=u*d-u*f-d*p;h<0&&(h=0),h/=u*f+d*p,h=Math.sqrt(h)*(l===c?-1:1);let m=h*o/n*s,y=h*-n/o*a,x=m+(i+e)/2,v=y+(t+r)/2,w=(a-m)/o,O=(s-y)/n,S=(-a-m)/o,T=(-s-y)/n,M=Vx(1,0,w,O),g=Vx(w,O,S,T);return!c&&g>0&&(g-=ff),c&&g<0&&(g+=ff),{centerx:x,centery:v,ang1:M,ang2:g}}function zx({px:i,py:t,cx:e,cy:r,rx:o,ry:n,largeArcFlag:a,sweepFlag:s}){let l=[];if(o===0||n===0)return[];let c=(i-e)/2,u=(t-r)/2;if(c===0&&u===0)return[];o=Math.abs(o),n=Math.abs(n);let d=Math.pow(c,2)/Math.pow(o,2)+Math.pow(u,2)/Math.pow(n,2);d>1&&(o*=Math.sqrt(d),n*=Math.sqrt(d));let p=WI(i,t,e,r,o,n,c,u,a,s),{ang1:f,ang2:h}=p,{centerx:m,centery:y}=p,x=Math.abs(h)/(ff/4);Math.abs(1-x)<1e-7&&(x=1);let v=Math.max(Math.ceil(x),1);h/=v;for(let w=0;w<v;w++)l.push(HI(f,h)),f+=h;return l.map(w=>{let{x:O,y:S}=pf(w[0],o,n,m,y),{x:T,y:M}=pf(w[1],o,n,m,y),{x:g,y:D}=pf(w[2],o,n,m,y);return{x1:O,y1:S,x2:T,y2:M,x:g,y:D}})}import{BufferAttribute as wu,BufferGeometry as r3}from"three";var Fe;(function(i){i[i.ODD=0]="ODD",i[i.NONZERO=1]="NONZERO",i[i.POSITIVE=2]="POSITIVE",i[i.NEGATIVE=3]="NEGATIVE",i[i.ABS_GEQ_TWO=4]="ABS_GEQ_TWO"})(Fe||(Fe={}));var st;(function(i){i[i.POLYGONS=0]="POLYGONS",i[i.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",i[i.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(st||(st={}));function we(i,t){if(!i)throw t||"Assertion Failed!"}var ve=function(){function i(){}return i.vertEq=function(t,e){return t.s===e.s&&t.t===e.t},i.vertLeq=function(t,e){return t.s<e.s||t.s===e.s&&t.t<=e.t},i.transLeq=function(t,e){return t.t<e.t||t.t===e.t&&t.s<=e.s},i.edgeGoesLeft=function(t){return i.vertLeq(t.Dst,t.Org)},i.edgeGoesRight=function(t){return i.vertLeq(t.Org,t.Dst)},i.vertL1dist=function(t,e){return Math.abs(t.s-e.s)+Math.abs(t.t-e.t)},i.edgeEval=function(t,e,r){we(i.vertLeq(t,e)&&i.vertLeq(e,r));var o=e.s-t.s,n=r.s-e.s;return o+n>0?o<n?e.t-t.t+(t.t-r.t)*(o/(o+n)):e.t-r.t+(r.t-t.t)*(n/(o+n)):0},i.edgeSign=function(t,e,r){we(i.vertLeq(t,e)&&i.vertLeq(e,r));var o=e.s-t.s,n=r.s-e.s;return o+n>0?(e.t-r.t)*o+(e.t-t.t)*n:0},i.transEval=function(t,e,r){we(i.transLeq(t,e)&&i.transLeq(e,r));var o=e.t-t.t,n=r.t-e.t;return o+n>0?o<n?e.s-t.s+(t.s-r.s)*(o/(o+n)):e.s-r.s+(r.s-t.s)*(n/(o+n)):0},i.transSign=function(t,e,r){we(i.transLeq(t,e)&&i.transLeq(e,r));var o=e.t-t.t,n=r.t-e.t;return o+n>0?(e.s-r.s)*o+(e.s-t.s)*n:0},i.vertCCW=function(t,e,r){return t.s*(e.t-r.t)+e.s*(r.t-t.t)+r.s*(t.t-e.t)>=0},i.interpolate=function(t,e,r,o){return t=t<0?0:t,r=r<0?0:r,t<=r?r===0?(e+o)/2:e+(o-e)*(t/(t+r)):o+(e-o)*(r/(t+r))},i.intersect=function(t,e,r,o,n){var a,s,l;i.vertLeq(t,e)||(l=t,t=e,e=l),i.vertLeq(r,o)||(l=r,r=o,o=l),i.vertLeq(t,r)||(l=t,t=r,r=l,l=e,e=o,o=l),i.vertLeq(r,e)?i.vertLeq(e,o)?(a=i.edgeEval(t,r,e),s=i.edgeEval(r,e,o),a+s<0&&(a=-a,s=-s),n.s=i.interpolate(a,r.s,s,e.s)):(a=i.edgeSign(t,r,e),s=-i.edgeSign(t,o,e),a+s<0&&(a=-a,s=-s),n.s=i.interpolate(a,r.s,s,o.s)):n.s=(r.s+e.s)/2,i.transLeq(t,e)||(l=t,t=e,e=l),i.transLeq(r,o)||(l=r,r=o,o=l),i.transLeq(t,r)||(l=t,t=r,r=l,l=e,e=o,o=l),i.transLeq(r,e)?i.transLeq(e,o)?(a=i.transEval(t,r,e),s=i.transEval(r,e,o),a+s<0&&(a=-a,s=-s),n.t=i.interpolate(a,r.t,s,e.t)):(a=i.transSign(t,r,e),s=-i.transSign(t,o,e),a+s<0&&(a=-a,s=-s),n.t=i.interpolate(a,r.t,s,o.t)):n.t=(r.t+e.t)/2},i}(),el=function(){function i(){this.next=null,this.prev=null,this.anEdge=null,this.trail=null,this.n=0,this.marked=!1,this.inside=!1}return i}(),xu=function(){function i(t){this.side=t,this.next=null,this.Org=null,this.Sym=null,this.Onext=null,this.Lnext=null,this.Lface=null,this.activeRegion=null,this.winding=0}return Object.defineProperty(i.prototype,"Rface",{get:function(){return this.Sym.Lface},set:function(t){this.Sym.Lface=t},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"Dst",{get:function(){return this.Sym.Org},set:function(t){this.Sym.Org=t},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"Oprev",{get:function(){return this.Sym.Lnext},set:function(t){this.Sym.Lnext=t},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"Lprev",{get:function(){return this.Onext.Sym},set:function(t){this.Onext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"Dprev",{get:function(){return this.Lnext.Sym},set:function(t){this.Lnext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"Rprev",{get:function(){return this.Sym.Onext},set:function(t){this.Sym.Onext=t},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"Dnext",{get:function(){return this.Sym.Onext.Sym},set:function(t){this.Sym.Onext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"Rnext",{get:function(){return this.Sym.Lnext.Sym},set:function(t){this.Sym.Lnext.Sym=t},enumerable:!0,configurable:!0}),i}(),Ta=function(){function i(){this.next=null,this.prev=null,this.anEdge=null,this.coords=[0,0,0],this.s=0,this.t=0,this.pqHandle=0,this.n=0,this.idx=0}return i}(),Gx=function(){function i(){var t=new Ta,e=new el,r=new xu(0),o=new xu(1);t.next=t.prev=t,t.anEdge=null,e.next=e.prev=e,r.next=r,r.Sym=o,o.next=o,o.Sym=r,this.vHead=t,this.fHead=e,this.eHead=r,this.eHeadSym=o}return i.prototype.makeEdge_=function(t){var e=new xu(0),r=new xu(1);t.Sym.side<t.side&&(t=t.Sym);var o=t.Sym.next;return r.next=o,o.Sym.next=e,e.next=t,t.Sym.next=r,e.Sym=r,e.Onext=e,e.Lnext=r,e.Org=null,e.Lface=null,e.winding=0,e.activeRegion=null,r.Sym=e,r.Onext=r,r.Lnext=e,r.Org=null,r.Lface=null,r.winding=0,r.activeRegion=null,e},i.prototype.splice_=function(t,e){var r=t.Onext,o=e.Onext;r.Sym.Lnext=e,o.Sym.Lnext=t,t.Onext=o,e.Onext=r},i.prototype.makeVertex_=function(t,e,r){var o=t;we(o,"Vertex can't be null!");var n=r.prev;o.prev=n,n.next=o,o.next=r,r.prev=o,o.anEdge=e;var a=e;do a.Org=o,a=a.Onext;while(a!==e)},i.prototype.makeFace_=function(t,e,r){var o=t;we(o,"Face can't be null");var n=r.prev;o.prev=n,n.next=o,o.next=r,r.prev=o,o.anEdge=e,o.trail=null,o.marked=!1,o.inside=r.inside;var a=e;do a.Lface=o,a=a.Lnext;while(a!==e)},i.prototype.killEdge_=function(t){t.Sym.side<t.side&&(t=t.Sym);var e=t.next,r=t.Sym.next;e.Sym.next=r,r.Sym.next=e},i.prototype.killVertex_=function(t,e){var r=t.anEdge,o=r;do o.Org=e,o=o.Onext;while(o!==r);var n=t.prev,a=t.next;a.prev=n,n.next=a},i.prototype.killFace_=function(t,e){var r=t.anEdge,o=r;do o.Lface=e,o=o.Lnext;while(o!==r);var n=t.prev,a=t.next;a.prev=n,n.next=a},i.prototype.makeEdge=function(){var t=new Ta,e=new Ta,r=new el,o=this.makeEdge_(this.eHead);return this.makeVertex_(t,o,this.vHead),this.makeVertex_(e,o.Sym,this.vHead),this.makeFace_(r,o,this.fHead),o},i.prototype.splice=function(t,e){var r=!1,o=!1;if(t!==e){if(e.Org!==t.Org&&(o=!0,this.killVertex_(e.Org,t.Org)),e.Lface!==t.Lface&&(r=!0,this.killFace_(e.Lface,t.Lface)),this.splice_(e,t),!o){var n=new Ta;this.makeVertex_(n,e,t.Org),t.Org.anEdge=t}if(!r){var a=new el;this.makeFace_(a,e,t.Lface),t.Lface.anEdge=t}}},i.prototype.delete=function(t){var e=t.Sym,r=!1;if(t.Lface!==t.Rface&&(r=!0,this.killFace_(t.Lface,t.Rface)),t.Onext===t)this.killVertex_(t.Org,null);else if(t.Rface.anEdge=t.Oprev,t.Org.anEdge=t.Onext,this.splice_(t,t.Oprev),!r){var o=new el;this.makeFace_(o,t,t.Lface)}e.Onext===e?(this.killVertex_(e.Org,null),this.killFace_(e.Lface,null)):(t.Lface.anEdge=e.Oprev,e.Org.anEdge=e.Onext,this.splice_(e,e.Oprev)),this.killEdge_(t)},i.prototype.addEdgeVertex=function(t){var e=this.makeEdge_(t),r=e.Sym;this.splice_(e,t.Lnext),e.Org=t.Dst;var o=new Ta;return this.makeVertex_(o,r,e.Org),e.Lface=r.Lface=t.Lface,e},i.prototype.splitEdge=function(t){var e=this.addEdgeVertex(t),r=e.Sym;return this.splice_(t.Sym,t.Sym.Oprev),this.splice_(t.Sym,r),t.Dst=r.Org,r.Dst.anEdge=r.Sym,r.Rface=t.Rface,r.winding=t.winding,r.Sym.winding=t.Sym.winding,r.idx=t.idx,r.Sym.idx=t.Sym.idx,r},i.prototype.connect=function(t,e){var r=!1,o=this.makeEdge_(t),n=o.Sym;if(e.Lface!==t.Lface&&(r=!0,this.killFace_(e.Lface,t.Lface)),this.splice_(o,t.Lnext),this.splice_(n,e),o.Org=t.Dst,n.Org=e.Org,o.Lface=n.Lface=t.Lface,t.Lface.anEdge=n,!r){var a=new el;this.makeFace_(a,o,t.Lface)}return o},i.prototype.zapFace=function(t){var e=t.anEdge,r,o,n,a,s;o=e.Lnext;do r=o,o=r.Lnext,r.Lface=null,r.Rface===null&&(r.Onext===r?this.killVertex_(r.Org,null):(r.Org.anEdge=r.Onext,this.splice_(r,r.Oprev)),n=r.Sym,n.Onext===n?this.killVertex_(n.Org,null):(n.Org.anEdge=n.Onext,this.splice_(n,n.Oprev)),this.killEdge_(r));while(r!=e);a=t.prev,s=t.next,s.prev=a,a.next=s},i.prototype.countFaceVerts_=function(t){var e=t.anEdge,r=0;do r++,e=e.Lnext;while(e!==t.anEdge);return r},i.prototype.mergeConvexFaces=function(t){var e,r,o,n,a,s,l;for(e=this.fHead.next;e!==this.fHead;e=e.next)if(!!e.inside)for(r=e.anEdge,a=r.Org;o=r.Lnext,n=r.Sym,n&&n.Lface&&n.Lface.inside&&(s=this.countFaceVerts_(e),l=this.countFaceVerts_(n.Lface),s+l-2<=t&&ve.vertCCW(r.Lprev.Org,r.Org,n.Lnext.Lnext.Org)&&ve.vertCCW(n.Lprev.Org,n.Org,r.Lnext.Lnext.Org)&&(o=n.Lnext,this.delete(n),r=null,n=null)),!(r&&r.Lnext.Org===a);)r=o;return!0},i.prototype.check=function(){var t=this.fHead,e=this.vHead,r=this.eHead,o,n,a,s,l,c;for(n=t,n=t;(o=n.next)!==t;n=o){we(o.prev===n),l=o.anEdge;do we(l.Sym!==l),we(l.Sym.Sym===l),we(l.Lnext.Onext.Sym===l),we(l.Onext.Sym.Lnext===l),we(l.Lface===o),l=l.Lnext;while(l!==o.anEdge)}for(we(o.prev===n&&o.anEdge===null),s=e,s=e;(a=s.next)!==e;s=a){we(a.prev===s),l=a.anEdge;do we(l.Sym!==l),we(l.Sym.Sym===l),we(l.Lnext.Onext.Sym===l),we(l.Onext.Sym.Lnext===l),we(l.Org===a),l=l.Onext;while(l!==a.anEdge)}for(we(a.prev===s&&a.anEdge===null),c=r,c=r;(l=c.next)!==r;c=l)we(l.Sym.next===c.Sym),we(l.Sym!==l),we(l.Sym.Sym===l),we(l.Org!==null),we(l.Dst!==null),we(l.Lnext.Onext.Sym===l),we(l.Onext.Sym.Lnext===l);we(l.Sym.next===c.Sym&&l.Sym===this.eHeadSym&&l.Sym.Sym===l&&l.Org===null&&l.Dst===null&&l.Lface===null&&l.Rface===null)},i}(),Fx=function(){function i(){this.handle=null}return i}(),jx=function(){function i(){this.key=null,this.node=0}return i}(),qI=function(){function i(t,e){this.leq=e,this.max=0,this.nodes=[],this.handles=[],this.initialized=!1,this.freeList=0,this.size=0,this.max=t,this.nodes=[],this.handles=[];for(var r=0;r<t+1;r++)this.nodes[r]=new Fx,this.handles[r]=new jx;this.initialized=!1,this.nodes[1].handle=1,this.handles[1].key=null}return i.prototype.floatDown_=function(t){var e=this.nodes,r=this.handles,o,n,a;for(o=e[t].handle;;){if(a=t<<1,a<this.size&&this.leq(r[e[a+1].handle].key,r[e[a].handle].key)&&++a,we(a<=this.max),n=e[a].handle,a>this.size||this.leq(r[o].key,r[n].key)){e[t].handle=o,r[o].node=t;break}e[t].handle=n,r[n].node=t,t=a}},i.prototype.floatUp_=function(t){var e=this.nodes,r=this.handles,o,n,a;for(o=e[t].handle;;){if(a=t>>1,n=e[a].handle,a===0||this.leq(r[n].key,r[o].key)){e[t].handle=o,r[o].node=t;break}e[t].handle=n,r[n].node=t,t=a}},i.prototype.init=function(){for(var t=this.size;t>=1;--t)this.floatDown_(t);this.initialized=!0},i.prototype.min=function(){return this.handles[this.nodes[1].handle].key},i.prototype.insert=function(t){var e,r;if(e=++this.size,e*2>this.max){this.max*=2;var o,n;for(n=this.nodes.length,this.nodes.length=this.max+1,o=n;o<this.nodes.length;o++)this.nodes[o]=new Fx;for(n=this.handles.length,this.handles.length=this.max+1,o=n;o<this.handles.length;o++)this.handles[o]=new jx}return this.freeList===0?r=e:(r=this.freeList,this.freeList=this.handles[r].node),this.nodes[e].handle=r,this.handles[r].node=e,this.handles[r].key=t,this.initialized&&this.floatUp_(e),r},i.prototype.extractMin=function(){var t=this.nodes,e=this.handles,r=t[1].handle,o=e[r].key;return this.size>0&&(t[1].handle=t[this.size].handle,e[t[1].handle].node=1,e[r].key=null,e[r].node=this.freeList,this.freeList=r,--this.size,this.size>0&&this.floatDown_(1)),o},i.prototype.delete=function(t){var e=this.nodes,r=this.handles,o;we(t>=1&&t<=this.max&&r[t].key!==null),o=r[t].node,e[o].handle=e[this.size].handle,r[e[o].handle].node=o,--this.size,o<=this.size&&(o<=1||this.leq(r[e[o>>1].handle].key,r[e[o].handle].key)?this.floatDown_(o):this.floatUp_(o)),r[t].key=null,r[t].node=this.freeList,this.freeList=t},i}(),hf=function(){function i(){this.eUp=null,this.nodeUp=null,this.windingNumber=0,this.inside=!1,this.sentinel=!1,this.dirty=!1,this.fixUpperEdge=!1}return i}(),Ux=function(){function i(){this.key=null,this.next=null,this.prev=null}return i}(),$I=function(){function i(t,e){this.frame=t,this.leq=e,this.head=new Ux,this.head.next=this.head,this.head.prev=this.head}return i.prototype.min=function(){return this.head.next},i.prototype.max=function(){return this.head.prev},i.prototype.insert=function(t){return this.insertBefore(this.head,t)},i.prototype.search=function(t){var e=this.head;do e=e.next;while(e.key!==null&&!this.leq(this.frame,t,e.key));return e},i.prototype.insertBefore=function(t,e){do t=t.prev;while(t.key!==null&&!this.leq(this.frame,t.key,e));var r=new Ux;return r.key=e,r.next=t.next,t.next.prev=r,r.prev=t,t.next=r,r},i.prototype.delete=function(t){t.next.prev=t.prev,t.prev.next=t.next},i}(),XI=function(){function i(){}return i.regionBelow=function(t){return t.nodeUp.prev.key},i.regionAbove=function(t){return t.nodeUp.next.key},i.debugEvent=function(t){},i.addWinding=function(t,e){t.winding+=e.winding,t.Sym.winding+=e.Sym.winding},i.edgeLeq=function(t,e,r){var o=t.event,n=e.eUp,a=r.eUp;if(n.Dst===o)return a.Dst===o?ve.vertLeq(n.Org,a.Org)?ve.edgeSign(a.Dst,n.Org,a.Org)<=0:ve.edgeSign(n.Dst,a.Org,n.Org)>=0:ve.edgeSign(a.Dst,o,a.Org)<=0;if(a.Dst===o)return ve.edgeSign(n.Dst,o,n.Org)>=0;var s=ve.edgeEval(n.Dst,o,n.Org),l=ve.edgeEval(a.Dst,o,a.Org);return s>=l},i.deleteRegion=function(t,e){e.fixUpperEdge&&we(e.eUp.winding===0),e.eUp.activeRegion=null,t.dict.delete(e.nodeUp)},i.fixUpperEdge=function(t,e,r){we(e.fixUpperEdge),t.mesh.delete(e.eUp),e.fixUpperEdge=!1,e.eUp=r,r.activeRegion=e},i.topLeftRegion=function(t,e){var r=e.eUp.Org,o;do e=i.regionAbove(e);while(e.eUp.Org===r);if(e.fixUpperEdge){if(o=t.mesh.connect(i.regionBelow(e).eUp.Sym,e.eUp.Lnext),o===null)return null;i.fixUpperEdge(t,e,o),e=i.regionAbove(e)}return e},i.topRightRegion=function(t){var e=t.eUp.Dst;do t=i.regionAbove(t);while(t.eUp.Dst===e);return t},i.addRegionBelow=function(t,e,r){var o=new hf;return o.eUp=r,o.nodeUp=t.dict.insertBefore(e.nodeUp,o),o.fixUpperEdge=!1,o.sentinel=!1,o.dirty=!1,r.activeRegion=o,o},i.isWindingInside=function(t,e){switch(t.windingRule){case Fe.ODD:return(e&1)!==0;case Fe.NONZERO:return e!==0;case Fe.POSITIVE:return e>0;case Fe.NEGATIVE:return e<0;case Fe.ABS_GEQ_TWO:return e>=2||e<=-2}throw new Error("Invalid winding rulle")},i.computeWinding=function(t,e){e.windingNumber=i.regionAbove(e).windingNumber+e.eUp.winding,e.inside=i.isWindingInside(t,e.windingNumber)},i.finishRegion=function(t,e){var r=e.eUp,o=r.Lface;o.inside=e.inside,o.anEdge=r,i.deleteRegion(t,e)},i.finishLeftRegions=function(t,e,r){for(var o,n=null,a=e,s=e.eUp;a!==r;){if(a.fixUpperEdge=!1,n=i.regionBelow(a),o=n.eUp,o.Org!=s.Org){if(!n.fixUpperEdge){i.finishRegion(t,a);break}o=t.mesh.connect(s.Lprev,o.Sym),i.fixUpperEdge(t,n,o)}s.Onext!==o&&(t.mesh.splice(o.Oprev,o),t.mesh.splice(s,o)),i.finishRegion(t,a),s=n.eUp,a=n}return s},i.addRightEdges=function(t,e,r,o,n,a){var s,l,c,u,d=!0;c=r;do we(ve.vertLeq(c.Org,c.Dst)),i.addRegionBelow(t,e,c.Sym),c=c.Onext;while(c!==o);for(n===null&&(n=i.regionBelow(e).eUp.Rprev),l=e,u=n;s=i.regionBelow(l),c=s.eUp.Sym,c.Org===u.Org;)c.Onext!==u&&(t.mesh.splice(c.Oprev,c),t.mesh.splice(u.Oprev,c)),s.windingNumber=l.windingNumber-c.winding,s.inside=i.isWindingInside(t,s.windingNumber),l.dirty=!0,!d&&i.checkForRightSplice(t,l)&&(i.addWinding(c,u),i.deleteRegion(t,l),t.mesh.delete(u)),d=!1,l=s,u=c;l.dirty=!0,we(l.windingNumber-c.winding===s.windingNumber),a&&i.walkDirtyRegions(t,l)},i.spliceMergeVertices=function(t,e,r){t.mesh.splice(e,r)},i.vertexWeights=function(t,e,r){var o=ve.vertL1dist(e,t),n=ve.vertL1dist(r,t),a=.5*n/(o+n),s=.5*o/(o+n);t.coords[0]+=a*e.coords[0]+s*r.coords[0],t.coords[1]+=a*e.coords[1]+s*r.coords[1],t.coords[2]+=a*e.coords[2]+s*r.coords[2]},i.getIntersectData=function(t,e,r,o,n,a){e.coords[0]=e.coords[1]=e.coords[2]=0,e.idx=-1,i.vertexWeights(e,r,o),i.vertexWeights(e,n,a)},i.checkForRightSplice=function(t,e){var r=i.regionBelow(e),o=e.eUp,n=r.eUp;if(ve.vertLeq(o.Org,n.Org)){if(ve.edgeSign(n.Dst,o.Org,n.Org)>0)return!1;ve.vertEq(o.Org,n.Org)?o.Org!==n.Org&&(t.pq.delete(o.Org.pqHandle),i.spliceMergeVertices(t,n.Oprev,o)):(t.mesh.splitEdge(n.Sym),t.mesh.splice(o,n.Oprev),e.dirty=r.dirty=!0)}else{if(ve.edgeSign(o.Dst,n.Org,o.Org)<0)return!1;i.regionAbove(e).dirty=e.dirty=!0,t.mesh.splitEdge(o.Sym),t.mesh.splice(n.Oprev,o)}return!0},i.checkForLeftSplice=function(t,e){var r=i.regionBelow(e),o=e.eUp,n=r.eUp,a;if(we(!ve.vertEq(o.Dst,n.Dst)),ve.vertLeq(o.Dst,n.Dst)){if(ve.edgeSign(o.Dst,n.Dst,o.Org)<0)return!1;i.regionAbove(e).dirty=e.dirty=!0,a=t.mesh.splitEdge(o),t.mesh.splice(n.Sym,a),a.Lface.inside=e.inside}else{if(ve.edgeSign(n.Dst,o.Dst,n.Org)>0)return!1;e.dirty=r.dirty=!0,a=t.mesh.splitEdge(n),t.mesh.splice(o.Lnext,n.Sym),a.Rface.inside=e.inside}return!0},i.checkForIntersect=function(t,e){var r=i.regionBelow(e),o=e.eUp,n=r.eUp,a=o.Org,s=n.Org,l=o.Dst,c=n.Dst,u,d,p=new Ta,f,h;if(we(!ve.vertEq(c,l)),we(ve.edgeSign(l,t.event,a)<=0),we(ve.edgeSign(c,t.event,s)>=0),we(a!==t.event&&s!==t.event),we(!e.fixUpperEdge&&!r.fixUpperEdge),a===s||(u=Math.min(a.t,l.t),d=Math.max(s.t,c.t),u>d))return!1;if(ve.vertLeq(a,s)){if(ve.edgeSign(c,a,s)>0)return!1}else if(ve.edgeSign(l,s,a)<0)return!1;return i.debugEvent(t),ve.intersect(l,a,c,s,p),we(Math.min(a.t,l.t)<=p.t),we(p.t<=Math.max(s.t,c.t)),we(Math.min(c.s,l.s)<=p.s),we(p.s<=Math.max(s.s,a.s)),ve.vertLeq(p,t.event)&&(p.s=t.event.s,p.t=t.event.t),f=ve.vertLeq(a,s)?a:s,ve.vertLeq(f,p)&&(p.s=f.s,p.t=f.t),ve.vertEq(p,a)||ve.vertEq(p,s)?(i.checkForRightSplice(t,e),!1):!ve.vertEq(l,t.event)&&ve.edgeSign(l,t.event,p)>=0||!ve.vertEq(c,t.event)&&ve.edgeSign(c,t.event,p)<=0?c===t.event?(t.mesh.splitEdge(o.Sym),t.mesh.splice(n.Sym,o),e=i.topLeftRegion(t,e),o=i.regionBelow(e).eUp,i.finishLeftRegions(t,i.regionBelow(e),r),i.addRightEdges(t,e,o.Oprev,o,o,!0),!0):l===t.event?(t.mesh.splitEdge(n.Sym),t.mesh.splice(o.Lnext,n.Oprev),r=e,e=i.topRightRegion(e),h=i.regionBelow(e).eUp.Rprev,r.eUp=n.Oprev,n=i.finishLeftRegions(t,r,null),i.addRightEdges(t,e,n.Onext,o.Rprev,h,!0),!0):(ve.edgeSign(l,t.event,p)>=0&&(i.regionAbove(e).dirty=e.dirty=!0,t.mesh.splitEdge(o.Sym),o.Org.s=t.event.s,o.Org.t=t.event.t),ve.edgeSign(c,t.event,p)<=0&&(e.dirty=r.dirty=!0,t.mesh.splitEdge(n.Sym),n.Org.s=t.event.s,n.Org.t=t.event.t),!1):(t.mesh.splitEdge(o.Sym),t.mesh.splitEdge(n.Sym),t.mesh.splice(n.Oprev,o),o.Org.s=p.s,o.Org.t=p.t,o.Org.pqHandle=t.pq.insert(o.Org),i.getIntersectData(t,o.Org,a,l,s,c),i.regionAbove(e).dirty=e.dirty=r.dirty=!0,!1)},i.walkDirtyRegions=function(t,e){for(var r=i.regionBelow(e),o,n;;){for(;r.dirty;)e=r,r=i.regionBelow(r);if(!e.dirty&&(r=e,e=i.regionAbove(e),e===null||!e.dirty))return;if(e.dirty=!1,o=e.eUp,n=r.eUp,o.Dst!==n.Dst&&i.checkForLeftSplice(t,e)&&(r.fixUpperEdge?(i.deleteRegion(t,r),t.mesh.delete(n),r=i.regionBelow(e),n=r.eUp):e.fixUpperEdge&&(i.deleteRegion(t,e),t.mesh.delete(o),e=i.regionAbove(r),o=e.eUp)),o.Org!==n.Org)if(o.Dst!==n.Dst&&!e.fixUpperEdge&&!r.fixUpperEdge&&(o.Dst===t.event||n.Dst===t.event)){if(i.checkForIntersect(t,e))return}else i.checkForRightSplice(t,e);o.Org===n.Org&&o.Dst===n.Dst&&(i.addWinding(n,o),i.deleteRegion(t,e),t.mesh.delete(o),e=i.regionAbove(r))}},i.connectRightVertex=function(t,e,r){var o,n=r.Onext,a=i.regionBelow(e),s=e.eUp,l=a.eUp,c=!1;if(s.Dst!==l.Dst&&i.checkForIntersect(t,e),ve.vertEq(s.Org,t.event)&&(t.mesh.splice(n.Oprev,s),e=i.topLeftRegion(t,e),n=i.regionBelow(e).eUp,i.finishLeftRegions(t,i.regionBelow(e),a),c=!0),ve.vertEq(l.Org,t.event)&&(t.mesh.splice(r,l.Oprev),r=i.finishLeftRegions(t,a,null),c=!0),c){i.addRightEdges(t,e,r.Onext,n,n,!0);return}ve.vertLeq(l.Org,s.Org)?o=l.Oprev:o=s,o=t.mesh.connect(r.Lprev,o),i.addRightEdges(t,e,o,o.Onext,o.Onext,!1),o.Sym.activeRegion.fixUpperEdge=!0,i.walkDirtyRegions(t,e)},i.connectLeftDegenerate=function(t,e,r){var o,n,a,s,l;if(o=e.eUp,ve.vertEq(o.Org,r)){we(!1),i.spliceMergeVertices(t,o,r.anEdge);return}if(!ve.vertEq(o.Dst,r)){t.mesh.splitEdge(o.Sym),e.fixUpperEdge&&(t.mesh.delete(o.Onext),e.fixUpperEdge=!1),t.mesh.splice(r.anEdge,o),i.sweepEvent(t,r);return}we(!1),e=i.topRightRegion(e),l=i.regionBelow(e),a=l.eUp.Sym,n=s=a.Onext,l.fixUpperEdge&&(we(n!==a),i.deleteRegion(t,l),t.mesh.delete(a),a=n.Oprev),t.mesh.splice(r.anEdge,a),ve.edgeGoesLeft(n)||(n=null),i.addRightEdges(t,e,a.Onext,s,n,!0)},i.connectLeftVertex=function(t,e){var r,o,n,a,s,l,c=new hf;if(c.eUp=e.anEdge.Sym,r=t.dict.search(c).key,o=i.regionBelow(r),!!o){if(a=r.eUp,s=o.eUp,ve.edgeSign(a.Dst,e,a.Org)===0){i.connectLeftDegenerate(t,r,e);return}if(n=ve.vertLeq(s.Dst,a.Dst)?r:o,r.inside||n.fixUpperEdge){if(n===r)l=t.mesh.connect(e.anEdge.Sym,a.Lnext);else{var u=t.mesh.connect(s.Dnext,e.anEdge);l=u.Sym}n.fixUpperEdge?i.fixUpperEdge(t,n,l):i.computeWinding(t,i.addRegionBelow(t,r,l)),i.sweepEvent(t,e)}else i.addRightEdges(t,r,e.anEdge,e.anEdge,null,!0)}},i.sweepEvent=function(t,e){t.event=e,i.debugEvent(t);for(var r=e.anEdge;r.activeRegion===null;)if(r=r.Onext,r===e.anEdge){i.connectLeftVertex(t,e);return}var o=i.topLeftRegion(t,r.activeRegion);we(o!==null);var n=i.regionBelow(o),a=n.eUp,s=i.finishLeftRegions(t,n,null);s.Onext===a?i.connectRightVertex(t,o,s):i.addRightEdges(t,o,s.Onext,a,a,!0)},i.addSentinel=function(t,e,r,o){var n=new hf,a=t.mesh.makeEdge();a.Org.s=r,a.Org.t=o,a.Dst.s=e,a.Dst.t=o,t.event=a.Dst,n.eUp=a,n.windingNumber=0,n.inside=!1,n.fixUpperEdge=!1,n.sentinel=!0,n.dirty=!1,n.nodeUp=t.dict.insert(n)},i.initEdgeDict=function(t){t.dict=new $I(t,i.edgeLeq);var e=t.bmax[0]-t.bmin[0],r=t.bmax[1]-t.bmin[1],o=t.bmin[0]-e,n=t.bmax[0]+e,a=t.bmin[1]-r,s=t.bmax[1]+r;i.addSentinel(t,o,n,a),i.addSentinel(t,o,n,s)},i.doneEdgeDict=function(t){for(var e,r=0;(e=t.dict.min().key)!==null;)e.sentinel||(we(e.fixUpperEdge),we(++r===1)),we(e.windingNumber===0),i.deleteRegion(t,e)},i.removeDegenerateEdges=function(t){var e,r,o,n=t.mesh.eHead;for(e=n.next;e!==n;e=r)r=e.next,o=e.Lnext,ve.vertEq(e.Org,e.Dst)&&e.Lnext.Lnext!==e&&(i.spliceMergeVertices(t,o,e),t.mesh.delete(e),e=o,o=e.Lnext),o.Lnext===e&&(o!==e&&((o===r||o===r.Sym)&&(r=r.next),t.mesh.delete(o)),(e===r||e===r.Sym)&&(r=r.next),t.mesh.delete(e))},i.initPriorityQ=function(t){var e,r,o,n=0;for(o=t.mesh.vHead,r=o.next;r!==o;r=r.next)n++;for(n+=8,e=t.pq=new qI(n,ve.vertLeq),o=t.mesh.vHead,r=o.next;r!==o;r=r.next)r.pqHandle=e.insert(r);return r!==o?!1:(e.init(),!0)},i.donePriorityQ=function(t){t.pq=null},i.removeDegenerateFaces=function(t,e){var r,o,n;for(r=e.fHead.next;r!==e.fHead;r=o)o=r.next,n=r.anEdge,we(n.Lnext!==n),n.Lnext.Lnext===n&&(i.addWinding(n.Onext,n),t.mesh.delete(n));return!0},i.computeInterior=function(t,e){e===void 0&&(e=!0);var r,o;if(i.removeDegenerateEdges(t),!i.initPriorityQ(t))return!1;for(i.initEdgeDict(t);(r=t.pq.extractMin())!==null;){for(;o=t.pq.min(),!(o===null||!ve.vertEq(o,r));)o=t.pq.extractMin(),i.spliceMergeVertices(t,r.anEdge,o.anEdge);i.sweepEvent(t,r)}return t.event=t.dict.min().key.eUp.Org,i.debugEvent(t),i.doneEdgeDict(t),i.donePriorityQ(t),i.removeDegenerateFaces(t,t.mesh)?(e&&t.mesh.check(),!0):!1},i}(),YI=function(){function i(){this.mesh=new Gx,this.normal=[0,0,0],this.sUnit=[0,0,0],this.tUnit=[0,0,0],this.bmin=[0,0],this.bmax=[0,0],this.windingRule=Fe.ODD,this.dict=null,this.pq=null,this.event=null,this.vertexIndexCounter=0,this.vertices=[],this.vertexIndices=[],this.vertexCount=0,this.elements=[],this.elementCount=0}return i.prototype.dot_=function(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]},i.prototype.normalize_=function(t){var e=t[0]*t[0]+t[1]*t[1]+t[2]*t[2];if(!e)throw"Zero-size vector!";e=Math.sqrt(e),t[0]/=e,t[1]/=e,t[2]/=e},i.prototype.longAxis_=function(t){var e=0;return Math.abs(t[1])>Math.abs(t[0])&&(e=1),Math.abs(t[2])>Math.abs(t[e])&&(e=2),e},i.prototype.computeNormal_=function(t){var e,r,o,n,a,s,l=[0,0,0],c=[0,0,0],u=[0,0,0],d=[0,0,0],p=[0,0,0],f=[null,null,null],h=[null,null,null],m=this.mesh.vHead;e=m.next;for(var y=0;y<3;++y)n=e.coords[y],c[y]=n,h[y]=e,l[y]=n,f[y]=e;for(e=m.next;e!==m;e=e.next)for(var x=0;x<3;++x)n=e.coords[x],n<c[x]&&(c[x]=n,h[x]=e),n>l[x]&&(l[x]=n,f[x]=e);var v=0;if(l[1]-c[1]>l[0]-c[0]&&(v=1),l[2]-c[2]>l[v]-c[v]&&(v=2),c[v]>=l[v]){t[0]=0,t[1]=0,t[2]=1;return}for(s=0,r=h[v],o=f[v],u[0]=r.coords[0]-o.coords[0],u[1]=r.coords[1]-o.coords[1],u[2]=r.coords[2]-o.coords[2],e=m.next;e!==m;e=e.next)d[0]=e.coords[0]-o.coords[0],d[1]=e.coords[1]-o.coords[1],d[2]=e.coords[2]-o.coords[2],p[0]=u[1]*d[2]-u[2]*d[1],p[1]=u[2]*d[0]-u[0]*d[2],p[2]=u[0]*d[1]-u[1]*d[0],a=p[0]*p[0]+p[1]*p[1]+p[2]*p[2],a>s&&(s=a,t[0]=p[0],t[1]=p[1],t[2]=p[2]);s<=0&&(t[0]=t[1]=t[2]=0,t[this.longAxis_(u)]=1)},i.prototype.checkOrientation_=function(){for(var t=this.mesh.fHead,e,r=this.mesh.vHead,o,n=0,a=t.next;a!==t;a=a.next)if(o=a.anEdge,!(o.winding<=0))do n+=(o.Org.s-o.Dst.s)*(o.Org.t+o.Dst.t),o=o.Lnext;while(o!==a.anEdge);if(n<0){for(e=r.next;e!==r;e=e.next)e.t=-e.t;this.tUnit[0]=-this.tUnit[0],this.tUnit[1]=-this.tUnit[1],this.tUnit[2]=-this.tUnit[2]}},i.prototype.projectPolygon_=function(){var t=this.mesh.vHead,e=[0,0,0],r,o,n=!1;e[0]=this.normal[0],e[1]=this.normal[1],e[2]=this.normal[2],!e[0]&&!e[1]&&!e[2]&&(this.computeNormal_(e),n=!0),r=this.sUnit,o=this.tUnit;var a=this.longAxis_(e);r[a]=0,r[(a+1)%3]=1,r[(a+2)%3]=0,o[a]=0,o[(a+1)%3]=0,o[(a+2)%3]=e[a]>0?1:-1;for(var s=t.next;s!==t;s=s.next)s.s=this.dot_(s.coords,r),s.t=this.dot_(s.coords,o);n&&this.checkOrientation_();for(var l=!0,c=t.next;c!==t;c=c.next)l?(this.bmin[0]=this.bmax[0]=c.s,this.bmin[1]=this.bmax[1]=c.t,l=!1):(c.s<this.bmin[0]&&(this.bmin[0]=c.s),c.s>this.bmax[0]&&(this.bmax[0]=c.s),c.t<this.bmin[1]&&(this.bmin[1]=c.t),c.t>this.bmax[1]&&(this.bmax[1]=c.t))},i.prototype.addWinding_=function(t,e){t.winding+=e.winding,t.Sym.winding+=e.Sym.winding},i.prototype.tessellateMonoRegion_=function(t,e){var r,o;if(r=e.anEdge,!(r.Lnext!==r&&r.Lnext.Lnext!==r))throw"Mono region invalid";for(;ve.vertLeq(r.Dst,r.Org);r=r.Lprev);for(;ve.vertLeq(r.Org,r.Dst);r=r.Lnext);o=r.Lprev;for(var n=void 0;r.Lnext!==o;)if(ve.vertLeq(r.Dst,o.Org)){for(;o.Lnext!==r&&(ve.edgeGoesLeft(o.Lnext)||ve.edgeSign(o.Org,o.Dst,o.Lnext.Dst)<=0);)n=t.connect(o.Lnext,o),o=n.Sym;o=o.Lprev}else{for(;o.Lnext!==r&&(ve.edgeGoesRight(r.Lprev)||ve.edgeSign(r.Dst,r.Org,r.Lprev.Org)>=0);)n=t.connect(r,r.Lprev),r=n.Sym;r=r.Lnext}if(o.Lnext===r)throw"Mono region invalid";for(;o.Lnext.Lnext!==r;)n=t.connect(o.Lnext,o),o=n.Sym;return!0},i.prototype.tessellateInterior_=function(t){for(var e,r=t.fHead.next;r!==t.fHead;r=e)if(e=r.next,r.inside&&!this.tessellateMonoRegion_(t,r))return!1;return!0},i.prototype.discardExterior_=function(t){for(var e,r=t.fHead.next;r!==t.fHead;r=e)e=r.next,r.inside||t.zapFace(r)},i.prototype.setWindingNumber_=function(t,e,r){for(var o,n=t.eHead.next;n!==t.eHead;n=o)o=n.next,n.Rface.inside!==n.Lface.inside?n.winding=n.Lface.inside?e:-e:r?t.delete(n):n.winding=0},i.prototype.getNeighbourFace_=function(t){return!t.Rface||!t.Rface.inside?-1:t.Rface.n},i.prototype.outputPolymesh_=function(t,e,r,o){var n,a=0,s=0,l;r>3&&t.mergeConvexFaces(r);for(var c=t.vHead.next;c!==t.vHead;c=c.next)c.n=-1;for(var u=t.fHead.next;u!==t.fHead;u=u.next)if(u.n=-1,!!u.inside){n=u.anEdge,l=0;do{var c=n.Org;c.n===-1&&(c.n=s,s++),l++,n=n.Lnext}while(n!==u.anEdge);if(l>r)throw"Face vertex greater that support polygon";u.n=a,++a}this.elementCount=a,e===st.CONNECTED_POLYGONS&&(a*=2),this.elements=[],this.elements.length=a*r,this.vertexCount=s,this.vertices=[],this.vertices.length=s*o,this.vertexIndices=[],this.vertexIndices.length=s;for(var c=t.vHead.next;c!==t.vHead;c=c.next)if(c.n!==-1){var d=c.n*o;this.vertices[d+0]=c.coords[0],this.vertices[d+1]=c.coords[1],o>2&&(this.vertices[d+2]=c.coords[2]),this.vertexIndices[c.n]=c.idx}for(var p=0,u=t.fHead.next;u!==t.fHead;u=u.next)if(!!u.inside){n=u.anEdge,l=0;do{var c=n.Org;this.elements[p++]=c.n,l++,n=n.Lnext}while(n!==u.anEdge);for(var f=l;f<r;++f)this.elements[p++]=-1;if(e===st.CONNECTED_POLYGONS){n=u.anEdge;do this.elements[p++]=this.getNeighbourFace_(n),n=n.Lnext;while(n!==u.anEdge);for(var h=l;h<r;++h)this.elements[p++]=-1}}},i.prototype.outputContours_=function(t,e){var r,o,n=0,a=0;this.vertexCount=0,this.elementCount=0;for(var s=t.fHead.next;s!==t.fHead;s=s.next)if(!!s.inside){o=r=s.anEdge;do this.vertexCount++,r=r.Lnext;while(r!==o);this.elementCount++}this.elements=[],this.elements.length=this.elementCount*2,this.vertices=[],this.vertices.length=this.vertexCount*e,this.vertexIndices=[],this.vertexIndices.length=this.vertexCount;var l=0,c=0,u=0;n=0;for(var s=t.fHead.next;s!==t.fHead;s=s.next)if(!!s.inside){a=0,o=r=s.anEdge;do this.vertices[l++]=r.Org.coords[0],this.vertices[l++]=r.Org.coords[1],e>2&&(this.vertices[l++]=r.Org.coords[2]),this.vertexIndices[c++]=this.vertexIdCallback?this.vertexIdCallback(r):r.Org.idx,a++,r=r.Lnext;while(r!==o);this.elements[u++]=n,this.elements[u++]=a,n+=a}},i.prototype.addContour=function(t,e){this.mesh===null&&(this.mesh=new Gx),t<2&&(t=2),t>3&&(t=3);for(var r=null,o=0;o<e.length;o+=t)r===null?(r=this.mesh.makeEdge(),this.mesh.splice(r,r.Sym)):(this.mesh.splitEdge(r),r=r.Lnext),r.Org.coords[0]=e[o+0],r.Org.coords[1]=e[o+1],t>2?r.Org.coords[2]=e[o+2]:r.Org.coords[2]=0,r.Org.idx=this.vertexIndexCounter++,this.edgeCreateCallback&&this.edgeCreateCallback(r),r.winding=1,r.Sym.winding=-1},i.prototype.tesselate=function(t,e,r,o,n,a){if(t===void 0&&(t=Fe.ODD),e===void 0&&(e=st.POLYGONS),a===void 0&&(a=!0),this.vertices=[],this.elements=[],this.vertexIndices=[],this.vertexIndexCounter=0,n&&(this.normal[0]=n[0],this.normal[1]=n[1],this.normal[2]=n[2]),this.windingRule=t,o<2&&(o=2),o>3&&(o=3),!this.mesh)return!1;this.projectPolygon_(),XI.computeInterior(this,a);var s=this.mesh;return e===st.BOUNDARY_CONTOURS?this.setWindingNumber_(s,1,!0):this.tessellateInterior_(s),a&&s.check(),e===st.BOUNDARY_CONTOURS?this.outputContours_(s,o):this.outputPolymesh_(s,e,r,o),!0},i}();function jr(i){var t=i.windingRule,e=t===void 0?Fe.ODD:t,r=i.elementType,o=r===void 0?st.POLYGONS:r,n=i.polySize,a=n===void 0?3:n,s=i.vertexSize,l=s===void 0?2:s,c=i.normal,u=c===void 0?[0,0,1]:c,d=i.contours,p=d===void 0?[]:d,f=i.strict,h=f===void 0?!0:f,m=i.debug,y=m===void 0?!1:m;if(!p&&h)throw new Error("Contours can't be empty");if(!!p){var x=new YI;i.edgeCreateCallback&&(x.edgeCreateCallback=i.edgeCreateCallback),i.vertexIdCallback&&(x.vertexIdCallback=i.vertexIdCallback);for(var v=0;v<p.length;v++)x.addContour(l||2,p[v]);return x.tesselate(e,o,a,l,u,h),{vertices:x.vertices,vertexIndices:x.vertexIndices,vertexCount:x.vertexCount,elements:x.elements,elementCount:x.elementCount,mesh:y?x.mesh:void 0}}}var xq=Fe.ODD,bq=Fe.NONZERO,vq=Fe.POSITIVE,Sq=Fe.NEGATIVE,wq=Fe.ABS_GEQ_TWO,Pq=st.POLYGONS,Oq=st.CONNECTED_POLYGONS,Tq=st.BOUNDARY_CONTOURS;import{Box2 as JI,BufferAttribute as Su,BufferGeometry as e3,Vector2 as t3}from"three";var bu=class{constructor(t=256,e=!1){this.capacity=t,this.size=0,this.debug=e,this.debug&&console.log(`allocating with cap ${t}`);let r=t*bu.eSize;this.buffer=new ArrayBuffer(r);let o=Float32Array.BYTES_PER_ELEMENT,n=0;this.positions=new Float32Array(this.buffer,n*o,3*t),n+=3*t,this.normals=new Float32Array(this.buffer,n*o,3*t),n+=3*t,this.uvs=new Float32Array(this.buffer,n*o,2*t)}realloc(t,e=!1){if(t<this.size)throw Error("cannot shrink buffer");if(t<=this.capacity&&!e)return;this.debug&&console.log(`resizing from ${this.capacity} \u2192 ${t}`);let r=t*bu.eSize,o=new ArrayBuffer(r),n=Float32Array.BYTES_PER_ELEMENT,a=0,s=new Float32Array(o,a*n,3*t);a+=3*t;let l=new Float32Array(o,a*n,3*t);a+=3*t;let c=new Float32Array(o,a*n,2*t);e?(s.set(this.positions.subarray(0,this.size*3)),l.set(this.normals.subarray(0,this.size*3)),c.set(this.uvs.subarray(0,this.size*2))):(s.set(this.positions),l.set(this.normals),c.set(this.uvs)),this.buffer=o,this.positions=s,this.normals=l,this.uvs=c,this.capacity=t}get(t=1){let e=this.size+t;if(e>this.capacity){let o=this.capacity;for(;e>o;)o*=2;this.realloc(o)}let r=this.size;return this.size=e,r}reserve(t){let e=this.size+t;e>this.capacity&&this.realloc(e)}shrink(){this.debug&&console.log(`shrinking ${this.capacity} \u2192 ${this.size}`),this.realloc(this.size,!0)}},tl=bu;tl.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var rl=class{constructor(t=[],e=(r,o)=>r<o?-1:r>o?1:0){if(this.data=t,this.length=this.data.length,this.compare=e,this.length>0)for(let r=(this.length>>1)-1;r>=0;r--)this._down(r)}push(t){this.data.push(t),this._up(this.length++)}pop(){if(this.length===0)return;let t=this.data[0],e=this.data.pop();return--this.length>0&&(this.data[0]=e,this._down(0)),t}peek(){return this.data[0]}_up(t){let{data:e,compare:r}=this,o=e[t];for(;t>0;){let n=t-1>>1,a=e[n];if(r(o,a)>=0)break;e[t]=a,t=n}e[t]=o}_down(t){let{data:e,compare:r}=this,o=this.length>>1,n=e[t];for(;t<o;){let a=(t<<1)+1,s=a+1;if(s<this.length&&r(e[s],e[a])<0&&(a=s),r(e[a],n)>=0)break;e[t]=e[a],t=a}e[t]=n}};function mf(i,t,e=1,r=!1){let o=1/0,n=1/0,a=-1/0,s=-1/0;for(let[v,w]of i[0])v<o&&(o=v),w<n&&(n=w),v>a&&(a=v),w>s&&(s=w);let l=a-o,c=s-n,u=Math.max(e,Math.min(l,c));if(u===e){let v=[o,n];return v.distance=0,v.distance}let d=new rl([],(v,w)=>w.max-v.max),p=QI(i),f=new vu(o+l/2,n+c/2,0,i);f.d>p.d&&(p=f);let h=2;function m(v,w,O){let S=new vu(v,w,O,i);if(h++,S.max>p.d+e&&d.push(S),S.d>p.d&&(p=S,r&&console.log(`found best ${Math.round(1e4*S.d)/1e4} after ${h} probes`),p.d>t))return t}let y=u/2;for(let v=o;v<a;v+=u)for(let w=n;w<s;w+=u)m(v+y,w+y,y);for(;d.length;){let{max:v,x:w,y:O,h:S}=d.pop();if(v-p.d<=e)break;y=S/2,m(w-y,O-y,y),m(w+y,O-y,y),m(w-y,O+y,y),m(w+y,O+y,y)}r&&console.log(`num probes: ${h}
|
|
3
|
+
best distance: ${p.d}`);let x=[p.x,p.y];return x.distance=p.d,x.distance}function vu(i,t,e,r){this.x=i,this.y=t,this.h=e,this.d=KI(i,t,r),this.max=this.d+this.h*Math.SQRT2}function KI(i,t,e){let r=!1,o=1/0;for(let n of e)for(let a=0,s=n.length,l=s-1;a<s;l=a++){let c=n[a],u=n[l];c[1]>t!=u[1]>t&&i<(u[0]-c[0])*(t-c[1])/(u[1]-c[1])+c[0]&&(r=!r),o=Math.min(o,ZI(i,t,c,u))}return o===0?0:(r?1:-1)*Math.sqrt(o)}function QI(i){let t=0,e=0,r=0,o=i[0];for(let a=0,s=o.length,l=s-1;a<s;l=a++){let c=o[a],u=o[l],d=c[0]*u[1]-u[0]*c[1];e+=(c[0]+u[0])*d,r+=(c[1]+u[1])*d,t+=d*3}let n=new vu(e/t,r/t,0,i);return t===0||n.d<0?new vu(o[0][0],o[0][1],0,i):n}function ZI(i,t,e,r){let o=e[0],n=e[1],a=r[0]-o,s=r[1]-n;if(a!==0||s!==0){let l=((i-o)*a+(t-n)*s)/(a*a+s*s);l>1?(o=r[0],n=r[1]):l>0&&(o+=a*l,n+=s*l)}return a=i-o,s=t-n,a*a+s*s}var ol={vertices:[160,160,-160,160,-160,-160,160,-160],vertexIndices:[1,0,3,2],vertexCount:4,elements:[0,4],elementCount:1,mesh:void 0},gf={vertices:[],vertexIndices:[],vertexCount:0,elements:[],elementCount:0,mesh:void 0},xf={vertices:[-160,160,160,-160,160,160,-160,-160],vertexIndices:[1,3,0,2],vertexCount:4,elements:[0,1,2,1,0,3],elementCount:2,mesh:void 0},yf=(i,t)=>([e,r])=>(r<e&&(r+=t),(i>=e?i:i+t)<=r),Si=class extends e3{constructor(e,r,o=0,n=12,a=3,s=Fe.ODD,l=!1){super();this.forPathBevel=l;this.type="ShapeGeometry";this.vertexCache={};this._shape=e,this._depth=r,this._curveSegments=n,this._bevelSegmentsInput=a;let c=this._shape.extractShapePointsToFlatArray([],n),u=this._shape.shapeHoles.map(I=>{let N=I.extractShapePointsToFlatArray([],n),_=[];for(let R=N.length-1;R>=1;R-=2){let V=N[R-1],U=N[R-0];_.push(V,U)}return _}),d=[],p=[];for(let I=0;I<c.length;I+=2)p.push([c[I],c[I+1]]);d.push(p);for(let I=0;I<u.length;I++){let N=u[I],_=[];for(let R=0;R<N.length;R+=2)_.push([N[R],N[R+1]]);d.push(_)}let f;e.isText?f=new JI().setFromPoints(e.points.map(N=>N.position)).getSize(new t3).length()*.1:d[0].length===0?f=o:o>0?f=mf(d,o):f=1e-5,o<=0?(this._bevel=0,this._bevelSegments=0):(this._bevel=Math.min(o,f,r/2),this._bevelSegments=Math.floor(a));let h;try{h=jr({windingRule:s,elementType:st.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[c]})}catch{h=ol}let m;try{m=jr({windingRule:Fe.ODD,elementType:st.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...u]})}catch{m=gf}if(!h)throw new Error("error generating geometry");let y=h.elementCount;if(m){h.elementCount+=m.elementCount;for(let I=0;I<m.elements.length;I++){let N=m.elements[I],_=I%2===0?h.vertexCount:0;h.elements.push(N+_)}for(let I=0;I<m.vertexIndices.length;I++){let N=m.vertexIndices[I],_=h.vertexCount;h.vertexIndices.push(N+_)}for(let I=0;I<m.vertices.length;I++){let N=m.vertices[I];h.vertices.push(N)}}let x=1/0,v=-1/0,w=1/0,O=-1/0;for(let I=0,N=h.vertexCount;I<N;I++){let _=I*2,R=h.vertices[_+0],V=h.vertices[_+1];R<x&&(x=R),R>v&&(v=R),V<w&&(w=V),V>O&&(O=V)}this._minX=x,this._minY=w,this._width=v-x,this._height=O-w,this._buffer=new tl(this._computeBufferEstimatedSize(h));let S=[],T=[];for(let I=h.elementCount-1;I>=0;I--){let N=I>=y,_=I*2,R=h.elements[_+0],V=h.elements[_+1],U=R+V,B={start:R,count:V,normals:[],continuous:[],concave:[]},q=R,j=U-1,F=R+1,H=this._shape.roundedCurves.length;do{let re=q-R,K=h.vertices[j*2+0],Z=h.vertices[j*2+1],Q=h.vertices[q*2+0],$=h.vertices[q*2+1],de=h.vertices[F*2+0],le=h.vertices[F*2+1],ie=Q-K,ce=$-Z,ae=Math.sqrt(ie*ie+ce*ce);ie/=ae,ce/=ae;let me=Q-de,fe=$-le,he=Math.sqrt(me*me+fe*fe);me/=he,fe/=he,B.normals[re*2+0]=-fe,B.normals[re*2+1]=me,B.concave[re]=ie*fe-ce*me>0;let xe=h.vertexIndices[q];if(Array.isArray(xe))B.continuous[re]=!1;else{let[ye,C]=this._shape.getCurveIndexFromVertexId(xe-1,!0);if(C>0&&C<1)B.continuous[re]=!0;else{let ne=C===1?ye+1:ye-1;ne=(ne+H)%H;let Ne=C===1?0:1,Ve=this._shape.roundedCurves[ye].getTangent(C),_e=this._shape.roundedCurves[ne].getTangent(Ne);B.continuous[re]=Ve.dot(_e)>.95}}N&&(B.normals[re*2+0]*=-1,B.normals[re*2+1]*=-1),[j,q,F]=[q,F,F+1],F>=U&&(F-=V)}while(F!==R+1);let W=[];W.push({bevelI:0,angle:0,size:0,boundary:{vertices:h.vertices.slice(R*2,U*2),vertexCount:V,vertexIndices:new Array(V).fill(!0).map((re,K)=>[K,K]),elements:[0,V],elementCount:1,mesh:null},reverseMap:[],insetPoints:h.vertices.slice(R*2,U*2)});let ee=0;for(let re=1;re<=this._bevelSegments;re++){let K=re/this._bevelSegments*Math.PI/2,Z=(1-Math.cos(K))*this._bevel,Q=[],$=[],de=[],le=[],ie=0;for(let ae=0;ae<V;ae++){let me=ae*2,fe=(ae-1+V)%V*2,he=h.vertices[B.start*2+me+0],xe=h.vertices[B.start*2+me+1],ye=-B.normals[fe+0]*Z,C=-B.normals[fe+1]*Z,ne=-B.normals[me+0]*Z,Ne=-B.normals[me+1]*Z;if(B.concave[ae]||!B.concave[ae]&&N){let Ve=Math.atan2(C,ye),_e=Math.atan2(Ne,ne);_e>Ve&&(_e-=Math.PI*2);let Pe=_e-Ve;if(B.continuous[ae]||N){let St=Ve+Pe/2,Me=Math.cos(St)*Z,bt=Math.sin(St)*Z;Q[2*ie+0]=he+Me*(N?-1:1),Q[2*ie+1]=xe+bt*(N?-1:1),le[ie]=ae,ie++}else{let St=Math.max(1,Math.floor(n/4*Math.abs(Pe)/Math.PI));for(let Me=0;Me<=St;Me++){let bt=Ve+Pe*(Me/St),wt=Math.cos(bt)*Z,ki=Math.sin(bt)*Z;Q[2*ie+0]=he+wt,Q[2*ie+1]=xe+ki,le[ie]=ae,ie++}}}else Q[2*ie+0]=he+ye,Q[2*ie+1]=xe+C,le[ie]=ae,$[ae]=ie,ie++,Q[2*ie+0]=he,Q[2*ie+1]=xe,le[ie]=ae,ie++,Q[2*ie+0]=he+ne,Q[2*ie+1]=xe+Ne,le[ie]=ae,de[ae]=ie,ie++}let ce=jr({windingRule:Fe.POSITIVE,elementType:st.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[Q],edgeCreateCallback:ae=>{let fe=ae.Org.idx,he=le[fe],xe=le[(fe+1)%le.length];ae.idx=[he,xe],ae.Sym.idx=[xe,he]},vertexIdCallback:ae=>{let me=ae.Lprev.idx;return[me?me[1]:0,ae.idx?ae.idx[0]:0]}});if(!ce)throw console.log("Error"),new Error(`error generating bevel geometry for ${re}'th loop`);if(!ce.vertexCount){let ae=(re-1)/this._bevelSegments*Math.PI/2;ee=(1-Math.sin(ae))*this._bevel;break}for(let ae=0;ae<ce.vertexIndices.length;ae++){let[me,fe]=ce.vertexIndices[ae];if(me===fe)continue;let he=fe;fe<me&&(he+=V);for(let xe=me;xe<he;xe++){let ye=xe%V,C=(xe+1)%V;if(!B.continuous[ye]||!B.continuous[C]){ce.vertexIndices[ae]=[me,ye],ce.vertexIndices.splice(ae+1,0,[C,fe]),ce.vertices.splice((ae+1)*2,0,ce.vertices[ae*2],ce.vertices[ae*2+1]);break}}}W.push({bevelI:re,angle:K,size:Z,boundary:ce,reverseMap:le,insetPoints:Q})}let te=(re,K,Z)=>{let Q=0,$=re.boundary.vertexIndices.length;for(;Q<$&&Z(re.boundary.vertexIndices[K]);)K=(K+1)%$,Q++;return Q},Y=S.length;for(let re=1;re<W.length;re++){let K=W[re-1],Z=W[re],Q=K.boundary.vertexIndices.length,$=Z.boundary.vertexIndices.length;if(!Q||!$)break;let de=B.concave.length,le=0,ie=yf(le,V);for(;!K.boundary.vertexIndices.filter(ie).length||!Z.boundary.vertexIndices.filter(ie).length;)le++,ie=yf(le,V);let ce=K.boundary.vertexIndices.findIndex(ie),ae=Z.boundary.vertexIndices.findIndex(ie);do ce=(ce+1)%Q;while(ie(K.boundary.vertexIndices[ce]));do ae=(ae+1)%$;while(ie(Z.boundary.vertexIndices[ae]));le=(le+1)%V;let me=le,fe=0,he=this._buildBevelVert(B,K,(ce-1+Q)%Q,void 0,fe),xe=this._buildBevelVert(B,Z,(ae-1+$)%$,void 0,fe),ye=he,C=xe,ne,Ne,Ve=!1;do{fe=(le||de)/de,ie=yf(le,V);let _e=te(K,ce,ie),Pe=te(Z,ae,ie),St=Ve;if(Ve=!1,_e&&!Pe){for(let Me=0;Me<_e;Me++)ne=this._buildBevelVert(B,K,(ce+Me)%Q,Me/(_e-1),fe),S.push(ye.topN,ne.topP,C.topN),l===!1&&S.push(ne.bottomP,ye.bottomN,C.bottomN),ye=ne;Ve=!0}else if(!_e&&Pe)for(let Me=0;Me<Pe;Me++)Ne=this._buildBevelVert(B,Z,(ae+Me)%$,Me/(Pe-1),fe),S.push(C.topN,ye.topP,Ne.topP),l===!1&&S.push(ye.bottomP,C.bottomN,Ne.bottomP),C=Ne;else if(_e&&Pe)if(ne=this._buildBevelVert(B,K,ce,0,fe),Ne=this._buildBevelVert(B,Z,ae,0,fe),St?(S.push(ye.topN,Ne.topP,C.topN),S.push(ye.topN,ne.topP,Ne.topP),l===!1&&(S.push(Ne.bottomP,ye.bottomN,C.bottomN),S.push(Ne.bottomP,ne.bottomP,ye.bottomN))):(S.push(C.topN,ye.topN,ne.topP),S.push(C.topN,ne.topP,Ne.topP),l===!1&&(S.push(ne.bottomP,ye.bottomN,C.bottomN),S.push(ne.bottomP,C.bottomN,Ne.bottomP))),ye=ne,C=Ne,_e===Pe)for(let Me=1;Me<_e;Me++)ne=this._buildBevelVert(B,K,(ce+Me)%Q,Me/(_e-1),fe),Ne=this._buildBevelVert(B,Z,(ae+Me)%$,Me/(Pe-1),fe),S.push(ye.topN,ne.topP,C.topN),S.push(C.topN,ne.topP,Ne.topP),l===!1&&(S.push(ne.bottomP,ye.bottomN,C.bottomN),S.push(ne.bottomP,C.bottomN,Ne.bottomP)),ye=ne,C=Ne;else if(_e>Pe){let Me=_e/Pe,bt=0;for(let wt=1;wt<_e;wt++)ne=this._buildBevelVert(B,K,(ce+wt)%Q,wt/(_e-1),fe),S.push(ye.topN,ne.topP,C.topN),l===!1&&S.push(ne.bottomP,ye.bottomN,C.bottomN),ye=ne,wt>(bt+1)*Me&&(bt++,Ne=this._buildBevelVert(B,Z,(ae+bt)%$,bt/(Pe-1),fe),S.push(C.topN,ne.topP,Ne.topP),l===!1&&S.push(ne.bottomP,C.bottomN,Ne.bottomP),C=Ne)}else{let Me=Pe/_e,bt=0;for(let wt=1;wt<Pe;wt++)Ne=this._buildBevelVert(B,Z,(ae+wt)%$,wt/(Pe-1),fe),S.push(C.topN,ne.topP,Ne.topP),l===!1&&S.push(ne.bottomP,C.bottomN,Ne.bottomP),C=Ne,wt>(bt+1)*Me&&(bt++,ne=this._buildBevelVert(B,K,(ce+bt)%Q,bt/(_e-1),fe),S.push(ye.topN,ne.topP,C.topN),l===!1&&S.push(ne.bottomP,ye.bottomN,C.bottomN),ye=ne)}ce=(ce+_e)%Q,ae=(ae+Pe)%$,le=(le+1)%de}while(le!==me)}if(l===!1&&this._depth>this._bevel*2&&this._buildWall(W,B,S),N){let re=[];for(let K=S.length-1;K>=Y+2;K-=3){let Z=S[K-2],Q=S[K-1],$=S[K-0];re.push($,Q,Z)}S.splice(Y,S.length-Y,...re)}if(N){let re=[];for(let K=W[W.length-1].boundary.vertices.length-1;K>=1;K-=2){let Z=W[W.length-1].boundary.vertices[K-1],Q=W[W.length-1].boundary.vertices[K-0];re.push(Z,Q)}T.push(re)}if(!N){let re=W[W.length-1],K;try{K=jr({windingRule:W.length>1?Fe.POSITIVE:Fe.ODD,elementType:st.POLYGONS,vertexSize:2,strict:!0,contours:[re.insetPoints,...T]})}catch{K=xf}if(!K)throw new Error("Error generating geometry for surface");u.length===0&&this._bevel<f&&Object.assign(this,{useNgonForTopBottomFaceDuringBake:!0});for(let Z=0;Z<K.elementCount*3;Z+=3){let Q=this._buildSurfaceVert(K,K.elements[Z+0],ee),$=this._buildSurfaceVert(K,K.elements[Z+1],ee),de=this._buildSurfaceVert(K,K.elements[Z+2],ee);S.push(Q.top,$.top,de.top),l===!1&&S.push(de.bottom,$.bottom,Q.bottom)}}this.vertexCache={}}this._buffer.shrink();let M=new Su(Uint32Array.from(S),1),g=new Su(this._buffer.positions,3),D=new Su(this._buffer.normals,3),E=new Su(this._buffer.uvs,2);g.needsUpdate=!0,D.needsUpdate=!0,E.needsUpdate=!0,M.needsUpdate=!0,this.setAttribute("position",g),this.setAttribute("normal",D),this.setAttribute("uv",E),this.setIndex(M)}_computeBufferEstimatedSize(e){return e.vertexCount*2*(2+this._bevelSegments)}_buildWall(e,r,o){let n=e[0];for(let a=0,s=n.boundary.vertexCount;a<s;a++){let l=this._buildBevelVert(r,n,a),c=this._buildBevelVert(r,n,(a+1)%s);o.push(c.topP,l.topN,l.bottomN),o.push(c.topP,l.bottomN,c.bottomP)}}_buildSurfaceVert(e,r,o){let n=r.toString();if(n in this.vertexCache)return this.vertexCache[n];let a=e.vertices[r*2+0],s=e.vertices[r*2+1],l=(a-this._minX)/this._width,c=(s-this._minY)/this._height;this.forPathBevel&&(c=1);let u=this._buffer.get(this.forPathBevel?1:2),d=u*3,p=u*2,f={top:u+0,bottom:u+1};return this._buffer.positions[d+0]=a,this._buffer.positions[d+1]=s,this._buffer.positions[d+2]=this.forPathBevel?this._bevel:this._depth-o,this._buffer.normals[d+0]=0,this._buffer.normals[d+1]=0,this._buffer.normals[d+2]=1,this._buffer.uvs[p+0]=l,this._buffer.uvs[p+1]=c,this.forPathBevel===!1&&(this._buffer.positions[d+3]=a,this._buffer.positions[d+4]=s,this._buffer.positions[d+5]=o,this._buffer.normals[d+3]=0,this._buffer.normals[d+4]=0,this._buffer.normals[d+5]=-1,this._buffer.uvs[p+2]=l,this._buffer.uvs[p+3]=c),this.vertexCache[n]=f,f}_buildBevelVert(e,r,o,n=1,a){let s=`${r.bevelI}:${o}`;if(s in this.vertexCache&&a!==0&&a!==1&&(!a||a===this.vertexCache[s].pathBevelUCoord))return this.vertexCache[s];let[l,c]=r.boundary.vertexIndices[o],u,d,p,f;l!==c?(d=l,u=c,f=!1,p=e.continuous[d]&&e.continuous[u]):(u=l,d=(u-1+e.count)%e.count,f=e.concave[u]&&r.bevelI>0,p=e.continuous[u]||f);let h=Math.cos(r.angle),m=Math.sin(r.angle),y=o*2,x=u*2,v=d*2,w=r.boundary.vertices[y+0],O=r.boundary.vertices[y+1],S=(1-m)*this._bevel,T=(w-this._minX)/this._width,M=(O-this._minY)/this._height;this.forPathBevel&&(a!==void 0&&(T=a),M=1);let g=e.normals[x+0],D=e.normals[x+1],E=e.normals[v+0],I=e.normals[v+1];if(f){let U=E-g,B=I-D;g=g+U*(1-n),D=D+B*(1-n);let q=Math.sqrt(g*g+D*D);g/=q,D/=q}let N=this.forPathBevel?this._buffer.get(p?1:2):this._buffer.get(p?2:4),_=N*3,R=N*2,V={i:o,fi:u,topP:N+0,topN:N+0,bottomP:N+1,bottomN:N+1,pathBevelUCoord:a};return this._buffer.positions[_+0]=w,this._buffer.positions[_+1]=O,this._buffer.positions[_+2]=(this.forPathBevel?this._bevel:this._depth)-S,this._buffer.normals[_+0]=g*h,this._buffer.normals[_+1]=D*h,this._buffer.normals[_+2]=m,this._buffer.uvs[R+0]=T,this._buffer.uvs[R+1]=M,this.forPathBevel===!1&&(this._buffer.positions[_+3]=w,this._buffer.positions[_+4]=O,this._buffer.positions[_+5]=S,this._buffer.normals[_+3]=g*h,this._buffer.normals[_+4]=D*h,this._buffer.normals[_+5]=-m,this._buffer.uvs[R+2]=M,this._buffer.uvs[R+3]=T),p||(this.forPathBevel?(N+=1,_+=3,R+=2):(N+=2,_+=6,R+=4),V.topP=N+0,V.bottomP=N+1,this._buffer.positions[_+0]=w,this._buffer.positions[_+1]=O,this._buffer.positions[_+2]=(this.forPathBevel?this._bevel:this._depth)-S,this._buffer.normals[_+0]=E*h,this._buffer.normals[_+1]=I*h,this._buffer.normals[_+2]=m,this._buffer.uvs[R+0]=T,this._buffer.uvs[R+1]=M,this.forPathBevel===!1&&(this._buffer.positions[_+3]=w,this._buffer.positions[_+4]=O,this._buffer.positions[_+5]=S,this._buffer.normals[_+3]=E*h,this._buffer.normals[_+4]=I*h,this._buffer.normals[_+5]=-m,this._buffer.uvs[R+2]=M,this._buffer.uvs[R+3]=T)),this.vertexCache[s]=V,V}clone(){let e=new Si(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=Eo(this.userData),e}};var Ca=class extends r3{constructor(e,r=12,o={}){super();this.type="ShapeGeometry";this.windingRule=Fe.ODD;this.elementType=st.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=r,this._triangulationOptions=Object.assign({windingRule:Fe.ODD,elementType:st.POLYGONS,polySize:3,vertexSize:2,strict:!0},o);let n=this._shape.extractShapePointsToFlatArray([],this._curveSegments),a=this._shape.shapeHoles.map(h=>h.extractShapePointsToFlatArray([],this._curveSegments)),s,l=!0,c=!0,u,d;for(let h=0,m=n.length/2;h<m;h++){let y=h*2,x=n[y+0],v=n[y+1];if(u!==void 0&&x!==u&&(l=!1),d!==void 0&&v!==d&&(c=!1),u=x,d=v,!l&&!c)break}if(!l&&!c)try{s=jr({contours:[n,...a],windingRule:this._triangulationOptions.windingRule,elementType:this._triangulationOptions.elementType,polySize:this._triangulationOptions.polySize,vertexSize:this._triangulationOptions.vertexSize,strict:this._triangulationOptions.strict})}catch{s=ol}let p=s?.vertexCount??1,f=s?.elementCount??1;if(this._positionAttribute=new wu(new Float32Array(p*3),3),this._normalAttribute=new wu(new Float32Array(p*3),3),this._uvAttribute=new wu(new Float32Array(p*2),2),this._indexAttribute=new wu(new Uint32Array(f*3),1),s){let h=1/0,m=-1/0,y=1/0,x=-1/0;for(let O=0,S=p;O<S;O++){let T=O*2,M=s.vertices[T+0],g=s.vertices[T+1];M<h&&(h=M),M>m&&(m=M),g<y&&(y=g),g>x&&(x=g)}let v=m-h,w=x-y;for(let O=0,S=p;O<S;O++){let T=O*2,M=s.vertices[T+0],g=s.vertices[T+1],D=(M-h)/v,E=(g-y)/w;this._positionAttribute.setXYZ(O,M,g,0),this._normalAttribute.setXYZ(O,0,0,1),this._uvAttribute.setXY(O,D,E)}for(let O=0,S=f;O<S;O++){let T=O*3,M=s.elements[T+0],g=s.elements[T+1],D=s.elements[T+2];this._indexAttribute.setX(T+0,M),this._indexAttribute.setX(T+1,g),this._indexAttribute.setX(T+2,D)}}this.setAttribute("position",this._positionAttribute),this.setAttribute("normal",this._normalAttribute),this.setAttribute("uv",this._uvAttribute),this.setIndex(this._indexAttribute),this.setDrawRange(0,(s?.elementCount??1)*3)}clone(){let e=new Ca(this._shape,this._curveSegments);return e.userData=Eo(this.userData),e}};var Aa=class extends Si{constructor(e,r,o=0,n=12,a=3,s=Fe.ODD){super(e,r,o,n,a,s);this.type="ShapeGeometry"}_computeBufferEstimatedSize(e){return e.vertexCount*2*(2+this._bevelSegments)}_buildWall(e,r,o){let n=e[0];for(let a=0,s=n.boundary.vertexCount;a<s;a++){let l=this._buildBevelVert(r,n,a),c=this._buildBevelVert(r,n,(a+1)%s);o.push(c.topP,l.topN,l.bottomN),o.push(c.topP,l.bottomN,c.bottomP)}}clone(){let e=new Aa(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=Eo(this.userData),e}};var tr=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,subdivisions:40,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3,windingRule:Fe.ODD},i.parameters),r=Math.abs(e.width),o=Math.abs(e.height??e.width),n=Math.abs(e.depth??0),a=i.shape??t?.shape,s=a?.roundness??e.roundness;a!==void 0&&(a instanceof je?(a.width!==r||a.height!==o)&&a.applySize(r,o):a=new je(r,o).fromJSON(a),i.parameters?.roundness!==void 0&&i.parameters?.roundness>0&&a.update());let l=a??new je(r,o);return{parameters:Object.assign(e,{width:r,height:o,depth:n,roundness:s}),shape:l}}static build(i){let{depth:t,extrudeBevelSize:e,extrudeBevelSegments:r,subdivisions:o,roundness:n,windingRule:a}=i.parameters;i.shape.roundness=n;let s;return t<=0?s=new Ca(i.shape,o,{windingRule:a}):s=new Aa(i.shape,t,e,o,r,a),Object.assign(s,{userData:{...i,type:"VectorGeometry"}})}};import{BufferGeometry as o3,Float32BufferAttribute as i3,MathUtils as bf,Vector2 as Hx}from"three";var Wx=Math.PI*2,Ia=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:64,angle:360,innerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1},i.parameters);return e.angle=bf.clamp(e.angle,0,360),{shape:i.shape&&i.shape instanceof je?i.shape:new je,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(i){let{width:t,height:e,spikes:r,angle:o,innerRadius:n,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}=i.parameters,c=i.shape,u=t*.5,d=e*.5,p=n3(c,u,d,o*Math.PI/180,r,n);c.isClosed=!0,c.update();let f;return o===0?(f=new o3,f.setAttribute("position",new i3([],3))):f=tr.create({shape:c,parameters:{subdivisions:p,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}}),Object.assign(f,{userData:{...i,type:"EllipseGeometry"}})}};function n3(i,t,e,r,o,n){if(r>=Wx)return o>30||o%4===0?(s3(i,t,e,n),Math.round(o/4)):kx(i,r,o,t,e,n);r=Math.max(r,.001);let a={x:0,y:e},s=r+Math.PI*.5,l={x:Math.cos(s)*t,y:Math.sin(s)*e},c=zx({px:a.x,py:a.y,cx:l.x,cy:l.y,rx:t,ry:e,largeArcFlag:r>Math.PI,sweepFlag:!0});return o>30||o%c.length===0?a3(i,a.x,a.y,c,o,t,e,n):kx(i,r,o,t,e,n)}function a3(i,t,e,r,o,n,a,s){let l=Math.round(o/r.length);i.addPoint(Ma(t,e));for(let c=0,u=r.length;c<u;c++){let d=r[c],p=i.points[c],f=Ma(d.x,d.y);p.controls[1].position.set(d.x1,d.y1),f.controls[0].position.set(d.x2,d.y2),i.addPoint(f)}return s>0?qx(i,n,a,s):i.addPoint(Ma(0,0)),l}function kx(i,t,e,r,o,n){let a=-t/e;for(let s=0;s<=e;s++){let l=a*s,c=Math.sin(l)*r,u=Math.cos(l)*o;i.addPoint(Ma(c,u))}return t<Wx?n>0?qx(i,r,o,n):i.addPoint(Ma(0,0)):(i.removePoint(i.points[i.points.length-1]),n>0&&$x(i,r,o,n)),1}function s3(i,t,e,r=0,o=0,n=0){let a=.5522847498,s=t*a,l=e*a;i.addPoint(Pu(o-t,n,o-t,n-l,o-t,n+l)),i.addPoint(Pu(o,n+e,o-s,n+e,o+s,n+e)),i.addPoint(Pu(o+t,n,o+t,n+l,o+t,n-l)),i.addPoint(Pu(o,n-e,o+s,n-e,o-s,n-e)),r>0&&$x(i,t,e,r)}function Ma(i,t){return new Fr(bf.generateUUID(),new Hx(i,t))}function Pu(i,t,e,r,o,n){let a=Ma(i,t);return a.controls[0].position.set(e,r),a.controls[1].position.set(o,n),a}function qx(i,t,e,r){Xx(i,t,e,r).forEach(n=>i.addPoint(n))}function $x(i,t,e,r){let o=Xx(i,t,e,r),n=new je;o.forEach(a=>n.addPoint(a)),n.isClosed=!0,i.shapeHoles.push(n)}function Xx(i,t,e,r){let o=r*t/100,n=o*(Math.abs(e)/Math.abs(t)),a=new Hx(o/t,n/e),s=i.points.map(l=>{let c=l.clone();return c.uuid=bf.generateUUID(),c}).reverse();return s.forEach(l=>{l.position.multiply(a);let c=l.controls[0].position.clone().multiply(a),u=l.controls[1].position.clone().multiply(a);l.controls[0].position.copy(u),l.controls[1].position.copy(c)}),s}import{BufferGeometry as l3,Float32BufferAttribute as vf,Uint32BufferAttribute as c3,Vector3 as Yx}from"three";var Kx=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,revolutions:2,segments:40,pathRadius:10,pathType:0,pathSegments:30,cornerRadius:30,cornerSegments:4},i.parameters),r=Math.abs(e.width),o=Math.abs(e.height??r),n=Math.abs(e.depth??r),a=Math.abs(Math.min(r,n))/2;return{parameters:Object.assign(e,{width:r,height:o,depth:n,radius:a,segments:Math.round(e.segments),pathSegments:Math.round(e.pathSegments),cornerSegments:Math.round(e.cornerSegments)})}}static build(i){let{width:t,height:e,depth:r,radius:o,revolutions:n,segments:a,pathRadius:s,pathType:l,pathSegments:c,cornerRadius:u,cornerSegments:d}=i.parameters,p=new il(!1,t,e,r,o,n,a,s,l,c,u,d);return Object.assign(p,{userData:{...i,type:"HelixGeometry"}})}},Sf=new c3([0,0,0],1),il=class extends l3{constructor(t=!0,e=1,r=1,o=1,n=1,a=1,s=1,l=1,c=1,u=1,d=1,p=1){if(super(),a===0)return;let f=t&&a===1;f&&(p=0),d>100&&(d=100),d===0&&(p=0);let h=()=>new Yx,m=new Yx,y=h(),x=h(),v=h(),w,O,S,T,M,g,D,E,I=h(),N=h(),_=h(),R=h(),V=h(),U=h(),B=h(),q=h(),j=r-2*l+.001,F=j/a,H=Math.ceil(s*a),W=H+1,ee=j/H,te=-j/2,Y=u+1,re=2*Math.PI/u,K=Math.PI/2/p,Z=.01,Q=Math.min((1-d/100)*l,l-Z),$=l-Q,de=0,le=2,ie=p*le+le,ce=Y*ie/le,ae=ce+Y*W,me=Math.max(0,Y*(W+ie)),[fe,he,xe]=[3,3,2].map(it=>Array(me*it).fill(0)),ye=[],C=n-l;function ne(it,Ke){let Nr=Math.PI/2;g=Ke*ee,E=2*Math.PI*(g%F)/F+Nr,g+=te,D=Math.sin(E)*C,M=Math.cos(E)*C,t?it.set(M,D,g):it.set(M,g,D)}ne(m,-1e-10),ne(y,0),I.copy(m),ne(m,1);let Ne=m.distanceTo(y),Ve=f?0:$+Q,_e=Ne*H+2*Ve,Pe=Q,St=_e-Ve;for(let it=0;it<=H;it++){ne(x,it),q.subVectors(x,I).normalize(),I.copy(x),U.copy(x).setComponent(+t+1,0).normalize(),B.crossVectors(q,U).normalize();let Ke=it===0,Nr=it===H,jd=Ke?3*Math.PI/2:K,Ud=Ke?Pe:St,Gl=Ke?Y:ae,Hi=Ke?0:me-Y,ut=q.clone().multiplyScalar(Ke?-$:$).add(x),kd=q.clone().multiplyScalar(Ke?-1:1).normalize();for(let yr=0;yr<Y;yr++){let As=yr*re;if(N.addVectors(m.copy(U).multiplyScalar(l*Math.cos(As)),y.copy(B).multiplyScalar(l*Math.sin(As))),_.copy(N).normalize(),Ke||Nr){f||(de=Hi+yr,[0,1,2].forEach(Wt=>{fe[de*3+Wt]=ut.getComponent(Wt),he[de*3+Wt]=kd.getComponent(Wt)}),xe[de*2]=+Nr,xe[de*2+1]=yr/u),y.copy(_).multiplyScalar(Q),v.addVectors(x,y);for(let Wt=0;Wt<p;Wt++){let Wi=Wt*K+jd;R.addVectors(m.copy(q).multiplyScalar($*Math.sin(Wi)),y.copy(_).multiplyScalar($*Math.cos(Wi))),V.copy(R).normalize(),y.addVectors(v,R),R.normalize(),de=Gl+Wt*Y+yr,[0,1,2].forEach(Cn=>{fe[de*3+Cn]=y.getComponent(Cn),he[de*3+Cn]=V.getComponent(Cn)});let Fl=+Ke+Math.sin(Wi);xe[de*2]=(Ud+$*Fl)/_e,xe[de*2+1]=yr/u}}y.addVectors(x,N),de=ce+it*Y+yr,[0,1,2].forEach(Wt=>{fe[de*3+Wt]=y.getComponent(Wt),he[de*3+Wt]=_.getComponent(Wt)}),xe[de*2]=(Ve+it*Ne)/_e,xe[de*2+1]=yr/u}}let Me=W+2*p+le,bt=1,[wt,ki]=[+f,Me-1];for(let it=wt;it<=ki-1;it++){let Ke=f&&it===ki-1;for(let Nr=0;Nr<Y-1;Nr++)w=it*Y+Nr,O=w+1,S=(Ke?Nr:w)+Y,T=(Ke?Nr+1:O)+Y,it===0?ye.push(O,T,S):it===Me-2?ye.push(w,O,S):ye.push(w,O,S,O,T,S)}this.setIndex(ye),this.setAttribute("position",new vf(fe,3)),this.setAttribute("normal",new vf(he,3)),this.setAttribute("uv",new vf(xe,2))}getClosedTorusIndicesForBooleanOrSubdiv(){let t=this.userData.parameters,e=Math.ceil(t.tubularSegments),r=t.radialSegments+1,o=Array.from(this.getIndex().array),n,a,s,l,c=6*(e-1)*t.radialSegments,u=e,d=u===e;for(let p=0;p<t.radialSegments;p++)n=u*r+p,a=n+1,s=(d?p:n)+r,l=(d?p+1:a)+r,o[c++]=n,o[c++]=a,o[c++]=s,o[c++]=a,o[c++]=l,o[c++]=s;return o.length=c,Sf.array=o,Sf.count=o.length,Sf}};import{IcosahedronGeometry as u3}from"three";var Qx=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,detail:0,corner:0,cornerSides:4},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t,height:e,depth:r,detail:o,corner:n,cornerSides:a}=i.parameters,s=o===0&&n!==0?new nl(t*.5,n,a):new u3(t*.5,o);return s.scale(1,e/t,r/t),Object.assign(s,{userData:{...i,type:"IcosahedronGeometry"}})}},nl=class extends bi{constructor(t=1,e=.2,r=4){let o=(1+Math.sqrt(5))/2,n=[-1,o,0,1,o,0,-1,-o,0,1,-o,0,0,-1,o,0,1,o,0,-1,-o,0,1,-o,o,0,-1,o,0,1,-o,0,-1,-o,0,1],a=[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1],s="IcosahedronGeometry";super(n,a,s,t,e,r),this.type=s}static fromJSON(t){return new nl(t.radius,t.corner,t.cornerSides)}};import{LatheGeometry as d3,Shape as p3}from"three";var Zx=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){(i.parameters?.points??[]).forEach(r=>{Array.isArray(r)&&(r.x=r[0],r.y=r[1])});let e=Object.assign({},t?.parameters??{width:100,segments:64,verticalSegments:64,points:[{x:0,y:-50,id:0},{x:50,y:-50,id:1},{x:50,y:50,id:2},{x:0,y:50,id:3}]},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{points:t,segments:e,verticalSegments:r}=i.parameters,o=new p3;o.moveTo(t[0].x,t[0].y),o.bezierCurveTo(t[1].x,t[1].y,t[2].x,t[2].y,t[3].x,t[3].y);let n=new d3(o.extractPoints(r).shape,e);return n.rotateZ(Math.PI),Object.assign(n,{userData:{...i,type:"LatheGeometry"}})}};import{BufferGeometry as ab,BufferGeometryLoader as O3,Vector3 as T3,BoxGeometry as sb}from"three";import{BufferGeometry as v3,Vector2 as Tf,Vector3 as nb}from"three";import{Box3 as f3,BufferAttribute as al,BufferGeometry as Jx,Color as Of,EventDispatcher as h3,Float32BufferAttribute as Ea,Matrix3 as eb,Matrix4 as ib,MathUtils as m3,Object3D as y3,Sphere as g3,Vector2 as pr,Vector3 as Gt,Vector4 as x3}from"three";var co=new ib,wf=new y3,Ou=new Gt,wi=class extends h3{constructor(){super(),this.uuid=m3.generateUUID(),this.name="",this.type="Geometry",this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.elementsNeedUpdate=!1,this.verticesNeedUpdate=!1,this.uvsNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.lineDistancesNeedUpdate=!1,this.groupsNeedUpdate=!1}applyMatrix4(t){let e=new eb().getNormalMatrix(t);for(let r=0,o=this.vertices.length;r<o;r++)this.vertices[r].applyMatrix4(t);for(let r=0,o=this.faces.length;r<o;r++){let n=this.faces[r];n.normal.applyMatrix3(e).normalize();for(let a=0,s=n.vertexNormals.length;a<s;a++)n.vertexNormals[a].applyMatrix3(e).normalize()}return this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this.verticesNeedUpdate=!0,this.normalsNeedUpdate=!0,this}rotateX(t){return co.makeRotationX(t),this.applyMatrix4(co),this}rotateY(t){return co.makeRotationY(t),this.applyMatrix4(co),this}rotateZ(t){return co.makeRotationZ(t),this.applyMatrix4(co),this}translate(t,e,r){return co.makeTranslation(t,e,r),this.applyMatrix4(co),this}scale(t,e,r){return co.makeScale(t,e,r),this.applyMatrix4(co),this}lookAt(t){return wf.lookAt(t),wf.updateMatrix(),this.applyMatrix4(wf.matrix),this}fromBufferGeometry(t){let e=this,r=t.index!==null?t.index:void 0,o=t.attributes;if(o.position===void 0)return console.error("THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion."),this;let n=o.position,a=o.normal,s=o.color,l=o.uv,c=o.uv2;c!==void 0&&(this.faceVertexUvs[1]=[]);for(let p=0;p<n.count;p++)e.vertices.push(new Gt().fromBufferAttribute(n,p)),s!==void 0&&e.colors.push(new Of().fromBufferAttribute(s,p));function u(p,f,h,m){let y=s===void 0?[]:[e.colors[p].clone(),e.colors[f].clone(),e.colors[h].clone()],x=a===void 0?[]:[new Gt().fromBufferAttribute(a,p),new Gt().fromBufferAttribute(a,f),new Gt().fromBufferAttribute(a,h)],v=new Na(p,f,h,x,y,m);e.faces.push(v),l!==void 0&&e.faceVertexUvs[0].push([new pr().fromBufferAttribute(l,p),new pr().fromBufferAttribute(l,f),new pr().fromBufferAttribute(l,h)]),c!==void 0&&e.faceVertexUvs[1].push([new pr().fromBufferAttribute(c,p),new pr().fromBufferAttribute(c,f),new pr().fromBufferAttribute(c,h)])}let d=t.groups;if(d.length>0)for(let p=0;p<d.length;p++){let f=d[p],h=f.start,m=f.count;for(let y=h,x=h+m;y<x;y+=3)r!==void 0?u(r.getX(y),r.getX(y+1),r.getX(y+2),f.materialIndex):u(y,y+1,y+2,f.materialIndex)}else if(r!==void 0)for(let p=0;p<r.count;p+=3)u(r.getX(p),r.getX(p+1),r.getX(p+2));else for(let p=0;p<n.count;p+=3)u(p,p+1,p+2);return this.computeFaceNormals(),t.boundingBox!==null&&(this.boundingBox=t.boundingBox.clone()),t.boundingSphere!==null&&(this.boundingSphere=t.boundingSphere.clone()),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(Ou).negate(),this.translate(Ou.x,Ou.y,Ou.z),this}normalize(){this.computeBoundingSphere();let t=this.boundingSphere.center,e=this.boundingSphere.radius,r=e===0?1:1/e,o=new ib;return o.set(r,0,0,-r*t.x,0,r,0,-r*t.y,0,0,r,-r*t.z,0,0,0,1),this.applyMatrix4(o),this}computeFaceNormals(){let t=new Gt,e=new Gt;for(let r=0,o=this.faces.length;r<o;r++){let n=this.faces[r],a=this.vertices[n.a],s=this.vertices[n.b],l=this.vertices[n.c];t.subVectors(l,s),e.subVectors(a,s),t.cross(e),t.normalize(),n.normal.copy(t)}}computeVertexNormals(t=!0){let e=new Array(this.vertices.length);for(let r=0,o=this.vertices.length;r<o;r++)e[r]=new Gt;if(t){let r=new Gt,o=new Gt;for(let n=0,a=this.faces.length;n<a;n++){let s=this.faces[n],l=this.vertices[s.a],c=this.vertices[s.b],u=this.vertices[s.c];r.subVectors(u,c),o.subVectors(l,c),r.cross(o),e[s.a].add(r),e[s.b].add(r),e[s.c].add(r)}}else{this.computeFaceNormals();for(let r=0,o=this.faces.length;r<o;r++){let n=this.faces[r];e[n.a].add(n.normal),e[n.b].add(n.normal),e[n.c].add(n.normal)}}for(let r=0,o=this.vertices.length;r<o;r++)e[r].normalize();for(let r=0,o=this.faces.length;r<o;r++){let n=this.faces[r],a=n.vertexNormals;a.length===3?(a[0].copy(e[n.a]),a[1].copy(e[n.b]),a[2].copy(e[n.c])):(a[0]=e[n.a].clone(),a[1]=e[n.b].clone(),a[2]=e[n.c].clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeFlatVertexNormals(){this.computeFaceNormals();for(let t=0,e=this.faces.length;t<e;t++){let r=this.faces[t],o=r.vertexNormals;o.length===3?(o[0].copy(r.normal),o[1].copy(r.normal),o[2].copy(r.normal)):(o[0]=r.normal.clone(),o[1]=r.normal.clone(),o[2]=r.normal.clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeMorphNormals(){for(let e=0,r=this.faces.length;e<r;e++){let o=this.faces[e];o.__originalFaceNormal?o.__originalFaceNormal.copy(o.normal):o.__originalFaceNormal=o.normal.clone(),o.__originalVertexNormals||(o.__originalVertexNormals=[]);for(let n=0,a=o.vertexNormals.length;n<a;n++)o.__originalVertexNormals[n]?o.__originalVertexNormals[n].copy(o.vertexNormals[n]):o.__originalVertexNormals[n]=o.vertexNormals[n].clone()}let t=new wi;t.faces=this.faces;for(let e=0,r=this.morphTargets.length;e<r;e++){if(!this.morphNormals[e]){this.morphNormals[e]={},this.morphNormals[e].faceNormals=[],this.morphNormals[e].vertexNormals=[];let n=this.morphNormals[e].faceNormals,a=this.morphNormals[e].vertexNormals;for(let s=0,l=this.faces.length;s<l;s++){let c=new Gt,u={a:new Gt,b:new Gt,c:new Gt};n.push(c),a.push(u)}}let o=this.morphNormals[e];t.vertices=this.morphTargets[e].vertices,t.computeFaceNormals(),t.computeVertexNormals();for(let n=0,a=this.faces.length;n<a;n++){let s=this.faces[n],l=o.faceNormals[n],c=o.vertexNormals[n];l.copy(s.normal),c.a.copy(s.vertexNormals[0]),c.b.copy(s.vertexNormals[1]),c.c.copy(s.vertexNormals[2])}}for(let e=0,r=this.faces.length;e<r;e++){let o=this.faces[e];o.normal=o.__originalFaceNormal,o.vertexNormals=o.__originalVertexNormals}}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new f3),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new g3),this.boundingSphere.setFromPoints(this.vertices)}merge(t,e,r=0){if(!(t&&t.isGeometry)){console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",t);return}let o,n=this.vertices.length,a=this.vertices,s=t.vertices,l=this.faces,c=t.faces,u=this.colors,d=t.colors;e!==void 0&&(o=new eb().getNormalMatrix(e));for(let p=0,f=s.length;p<f;p++){let m=s[p].clone();e!==void 0&&m.applyMatrix4(e),a.push(m)}for(let p=0,f=d.length;p<f;p++)u.push(d[p].clone());for(let p=0,f=c.length;p<f;p++){let h=c[p],m,y,x=h.vertexNormals,v=h.vertexColors,w=new Na(h.a+n,h.b+n,h.c+n);w.normal.copy(h.normal),o!==void 0&&w.normal.applyMatrix3(o).normalize();for(let O=0,S=x.length;O<S;O++)m=x[O].clone(),o!==void 0&&m.applyMatrix3(o).normalize(),w.vertexNormals.push(m);w.color.copy(h.color);for(let O=0,S=v.length;O<S;O++)y=v[O],w.vertexColors.push(y.clone());w.materialIndex=h.materialIndex+r,l.push(w)}for(let p=0,f=t.faceVertexUvs.length;p<f;p++){let h=t.faceVertexUvs[p];this.faceVertexUvs[p]===void 0&&(this.faceVertexUvs[p]=[]);for(let m=0,y=h.length;m<y;m++){let x=h[m],v=[];for(let w=0,O=x.length;w<O;w++)v.push(x[w].clone());this.faceVertexUvs[p].push(v)}}}mergeMesh(t){if(!(t&&t.isMesh)){console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",t);return}t.matrixAutoUpdate&&t.updateMatrix(),this.merge(t.geometry,t.matrix)}mergeVertices(t=4){let e={},r=[],o=[],n=Math.pow(10,t);for(let l=0,c=this.vertices.length;l<c;l++){let u=this.vertices[l],d=Math.round(u.x*n)+"_"+Math.round(u.y*n)+"_"+Math.round(u.z*n);e[d]===void 0?(e[d]=l,r.push(this.vertices[l]),o[l]=r.length-1):o[l]=o[e[d]]}let a=[];for(let l=0,c=this.faces.length;l<c;l++){let u=this.faces[l];u.a=o[u.a],u.b=o[u.b],u.c=o[u.c];let d=[u.a,u.b,u.c];for(let p=0;p<3;p++)if(d[p]===d[(p+1)%3]){a.push(l);break}}for(let l=a.length-1;l>=0;l--){let c=a[l];this.faces.splice(c,1);for(let u=0,d=this.faceVertexUvs.length;u<d;u++)this.faceVertexUvs[u].splice(c,1)}let s=this.vertices.length-r.length;return this.vertices=r,s}setFromPoints(t){this.vertices=[];for(let e=0,r=t.length;e<r;e++){let o=t[e];this.vertices.push(new Gt(o.x,o.y,o.z||0))}return this}sortFacesByMaterialIndex(){let t=this.faces,e=t.length;for(let l=0;l<e;l++)t[l]._id=l;function r(l,c){return l.materialIndex-c.materialIndex}t.sort(r);let o=this.faceVertexUvs[0],n=this.faceVertexUvs[1],a,s;o&&o.length===e&&(a=[]),n&&n.length===e&&(s=[]);for(let l=0;l<e;l++){let c=t[l]._id;a&&a.push(o[c]),s&&s.push(n[c])}a&&(this.faceVertexUvs[0]=a),s&&(this.faceVertexUvs[1]=s)}toJSON(){let t={metadata:{version:4.5,type:"Geometry",generator:"Geometry.toJSON"}};if(t.uuid=this.uuid,t.type=this.type,this.name!==""&&(t.name=this.name),this.parameters!==void 0){let h=this.parameters;for(let m in h)h[m]!==void 0&&(t[m]=h[m]);return t}let e=[];for(let h=0;h<this.vertices.length;h++){let m=this.vertices[h];e.push(m.x,m.y,m.z)}let r=[],o=[],n={},a=[],s={},l=[],c={};for(let h=0;h<this.faces.length;h++){let m=this.faces[h],y=!0,x=!1,v=this.faceVertexUvs[0][h]!==void 0,w=m.normal.length()>0,O=m.vertexNormals.length>0,S=m.color.r!==1||m.color.g!==1||m.color.b!==1,T=m.vertexColors.length>0,M=0;if(M=u(M,0,0),M=u(M,1,y),M=u(M,2,x),M=u(M,3,v),M=u(M,4,w),M=u(M,5,O),M=u(M,6,S),M=u(M,7,T),r.push(M),r.push(m.a,m.b,m.c),r.push(m.materialIndex),v){let g=this.faceVertexUvs[0][h];r.push(f(g[0]),f(g[1]),f(g[2]))}if(w&&r.push(d(m.normal)),O){let g=m.vertexNormals;r.push(d(g[0]),d(g[1]),d(g[2]))}if(S&&r.push(p(m.color)),T){let g=m.vertexColors;r.push(p(g[0]),p(g[1]),p(g[2]))}}function u(h,m,y){return y?h|1<<m:h&~(1<<m)}function d(h){let m=h.x.toString()+h.y.toString()+h.z.toString();return n[m]!==void 0||(n[m]=o.length/3,o.push(h.x,h.y,h.z)),n[m]}function p(h){let m=h.r.toString()+h.g.toString()+h.b.toString();return s[m]!==void 0||(s[m]=a.length,a.push(h.getHex())),s[m]}function f(h){let m=h.x.toString()+h.y.toString();return c[m]!==void 0||(c[m]=l.length/2,l.push(h.x,h.y)),c[m]}return t.data={},t.data.vertices=e,t.data.normals=o,a.length>0&&(t.data.colors=a),l.length>0&&(t.data.uvs=[l]),t.data.faces=r,t}clone(){return new wi().copy(this)}copy(t){this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.name=t.name;let e=t.vertices;for(let p=0,f=e.length;p<f;p++)this.vertices.push(e[p].clone());let r=t.colors;for(let p=0,f=r.length;p<f;p++)this.colors.push(r[p].clone());let o=t.faces;for(let p=0,f=o.length;p<f;p++)this.faces.push(o[p].clone());for(let p=0,f=t.faceVertexUvs.length;p<f;p++){let h=t.faceVertexUvs[p];this.faceVertexUvs[p]===void 0&&(this.faceVertexUvs[p]=[]);for(let m=0,y=h.length;m<y;m++){let x=h[m],v=[];for(let w=0,O=x.length;w<O;w++){let S=x[w];v.push(S.clone())}this.faceVertexUvs[p].push(v)}}let n=t.morphTargets;for(let p=0,f=n.length;p<f;p++){let h={};if(h.name=n[p].name,n[p].vertices!==void 0){h.vertices=[];for(let m=0,y=n[p].vertices.length;m<y;m++)h.vertices.push(n[p].vertices[m].clone())}if(n[p].normals!==void 0){h.normals=[];for(let m=0,y=n[p].normals.length;m<y;m++)h.normals.push(n[p].normals[m].clone())}this.morphTargets.push(h)}let a=t.morphNormals;for(let p=0,f=a.length;p<f;p++){let h={};if(a[p].vertexNormals!==void 0){h.vertexNormals=[];for(let m=0,y=a[p].vertexNormals.length;m<y;m++){let x=a[p].vertexNormals[m],v={};v.a=x.a.clone(),v.b=x.b.clone(),v.c=x.c.clone(),h.vertexNormals.push(v)}}if(a[p].faceNormals!==void 0){h.faceNormals=[];for(let m=0,y=a[p].faceNormals.length;m<y;m++)h.faceNormals.push(a[p].faceNormals[m].clone())}this.morphNormals.push(h)}let s=t.skinWeights;for(let p=0,f=s.length;p<f;p++)this.skinWeights.push(s[p].clone());let l=t.skinIndices;for(let p=0,f=l.length;p<f;p++)this.skinIndices.push(l[p].clone());let c=t.lineDistances;for(let p=0,f=c.length;p<f;p++)this.lineDistances.push(c[p]);let u=t.boundingBox;u!==null&&(this.boundingBox=u.clone());let d=t.boundingSphere;return d!==null&&(this.boundingSphere=d.clone()),this.elementsNeedUpdate=t.elementsNeedUpdate,this.verticesNeedUpdate=t.verticesNeedUpdate,this.uvsNeedUpdate=t.uvsNeedUpdate,this.normalsNeedUpdate=t.normalsNeedUpdate,this.colorsNeedUpdate=t.colorsNeedUpdate,this.lineDistancesNeedUpdate=t.lineDistancesNeedUpdate,this.groupsNeedUpdate=t.groupsNeedUpdate,this}toBufferGeometry(){let t=new Pf().fromGeometry(this),e=new Jx,r=new Float32Array(t.vertices.length*3);if(e.setAttribute("position",Tu.call(new al(r,3),t.vertices)),t.normals.length>0){let o=new Float32Array(t.normals.length*3);e.setAttribute("normal",Tu.call(new al(o,3),t.normals))}if(t.colors.length>0){let o=new Float32Array(t.colors.length*3);e.setAttribute("color",tb.call(new al(o,3),t.colors))}if(t.uvs.length>0){let o=new Float32Array(t.uvs.length*2);e.setAttribute("uv",rb.call(new al(o,2),t.uvs))}if(t.uvs2.length>0){let o=new Float32Array(t.uvs2.length*2);e.setAttribute("uv2",rb.call(new al(o,2),t.uvs2))}e.groups=t.groups;for(let o in t.morphTargets){let n=[],a=t.morphTargets[o];for(let s=0,l=a.length;s<l;s++){let c=a[s],u=new Ea(c.data.length*3,3);u.name=c.name,n.push(Tu.call(u,c.data))}e.morphAttributes[o]=n}if(t.skinIndices.length>0){let o=new Ea(t.skinIndices.length*4,4);e.setAttribute("skinIndex",ob.call(o,t.skinIndices))}if(t.skinWeights.length>0){let o=new Ea(t.skinWeights.length*4,4);e.setAttribute("skinWeight",ob.call(o,t.skinWeights))}return t.boundingSphere!==null&&(e.boundingSphere=t.boundingSphere.clone()),t.boundingBox!==null&&(e.boundingBox=t.boundingBox.clone()),e}computeTangents(){console.error("THREE.Geometry: .computeTangents() has been removed.")}computeLineDistances(){console.error("THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.")}applyMatrix(t){return console.warn("THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(t)}dispose(){this.dispatchEvent({type:"dispose"})}static createBufferGeometryFromObject(t){let e=new Jx,r=t.geometry;if(t.isPoints||t.isLine){let o=new Ea(r.vertices.length*3,3),n=new Ea(r.colors.length*3,3);if(e.setAttribute("position",Tu.call(o,r.vertices)),e.setAttribute("color",tb.call(n,r.colors)),r.lineDistances&&r.lineDistances.length===r.vertices.length){let a=new Ea(r.lineDistances.length,1);e.setAttribute("lineDistance",b3.call(a,r.lineDistances))}r.boundingSphere!==null&&(e.boundingSphere=r.boundingSphere.clone()),r.boundingBox!==null&&(e.boundingBox=r.boundingBox.clone())}else t.isMesh&&(e=r.toBufferGeometry());return e}};wi.prototype.isGeometry=!0;var Pf=class{constructor(){this.vertices=[],this.normals=[],this.colors=[],this.uvs=[],this.uvs2=[],this.groups=[],this.morphTargets={},this.skinWeights=[],this.skinIndices=[],this.boundingBox=null,this.boundingSphere=null,this.verticesNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.uvsNeedUpdate=!1,this.groupsNeedUpdate=!1}computeGroups(t){let e=[],r,o,n,a=t.faces;for(o=0;o<a.length;o++){let s=a[o];s.materialIndex!==n&&(n=s.materialIndex,r!==void 0&&(r.count=o*3-r.start,e.push(r)),r={start:o*3,materialIndex:n})}r!==void 0&&(r.count=o*3-r.start,e.push(r)),this.groups=e}fromGeometry(t){let e=t.faces,r=t.vertices,o=t.faceVertexUvs,n=o[0]&&o[0].length>0,a=o[1]&&o[1].length>0,s=t.morphTargets,l=s.length,c;if(l>0){c=[];for(let x=0;x<l;x++)c[x]={name:s[x].name,data:[]};this.morphTargets.position=c}let u=t.morphNormals,d=u.length,p;if(d>0){p=[];for(let x=0;x<d;x++)p[x]={name:u[x].name,data:[]};this.morphTargets.normal=p}let f=t.skinIndices,h=t.skinWeights,m=f.length===r.length,y=h.length===r.length;r.length>0&&e.length===0&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(let x=0;x<e.length;x++){let v=e[x];this.vertices.push(r[v.a],r[v.b],r[v.c]);let w=v.vertexNormals;if(w.length===3)this.normals.push(w[0],w[1],w[2]);else{let S=v.normal;this.normals.push(S,S,S)}let O=v.vertexColors;if(O.length===3)this.colors.push(O[0],O[1],O[2]);else{let S=v.color;this.colors.push(S,S,S)}if(n===!0){let S=o[0][x];S!==void 0?this.uvs.push(S[0],S[1],S[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",x),this.uvs.push(new pr,new pr,new pr))}if(a===!0){let S=o[1][x];S!==void 0?this.uvs2.push(S[0],S[1],S[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",x),this.uvs2.push(new pr,new pr,new pr))}for(let S=0;S<l;S++){let T=s[S].vertices;c[S].data.push(T[v.a],T[v.b],T[v.c])}for(let S=0;S<d;S++){let T=u[S].vertexNormals[x];p[S].data.push(T.a,T.b,T.c)}m&&this.skinIndices.push(f[v.a],f[v.b],f[v.c]),y&&this.skinWeights.push(h[v.a],h[v.b],h[v.c])}return this.computeGroups(t),this.verticesNeedUpdate=t.verticesNeedUpdate,this.normalsNeedUpdate=t.normalsNeedUpdate,this.colorsNeedUpdate=t.colorsNeedUpdate,this.uvsNeedUpdate=t.uvsNeedUpdate,this.groupsNeedUpdate=t.groupsNeedUpdate,t.boundingSphere!==null&&(this.boundingSphere=t.boundingSphere.clone()),t.boundingBox!==null&&(this.boundingBox=t.boundingBox.clone()),this}},Na=class{constructor(t,e,r,o,n,a=0){this.a=t,this.b=e,this.c=r,this.normal=o&&o.isVector3?o:new Gt,this.vertexNormals=Array.isArray(o)?o:[],this.color=n&&n.isColor?n:new Of,this.vertexColors=Array.isArray(n)?n:[],this.materialIndex=a}clone(){return new this.constructor().copy(this)}copy(t){this.a=t.a,this.b=t.b,this.c=t.c,this.normal.copy(t.normal),this.color.copy(t.color),this.materialIndex=t.materialIndex;for(let e=0,r=t.vertexNormals.length;e<r;e++)this.vertexNormals[e]=t.vertexNormals[e].clone();for(let e=0,r=t.vertexColors.length;e<r;e++)this.vertexColors[e]=t.vertexColors[e].clone();return this}};function b3(i){return this.array.set(i),this}function tb(i){let t=this.array,e=0;for(let r=0,o=i.length;r<o;r++){let n=i[r];n===void 0&&(console.warn("THREE.BufferAttribute.copyColorsArray(): color is undefined",r),n=new Of),t[e++]=n.r,t[e++]=n.g,t[e++]=n.b}return this}function rb(i){let t=this.array,e=0;for(let r=0,o=i.length;r<o;r++){let n=i[r];n===void 0&&(console.warn("THREE.BufferAttribute.copyVector2sArray(): vector is undefined",r),n=new pr),t[e++]=n.x,t[e++]=n.y}return this}function Tu(i){let t=this.array,e=0;for(let r=0,o=i.length;r<o;r++){let n=i[r];n===void 0&&(console.warn("THREE.BufferAttribute.copyVector3sArray(): vector is undefined",r),n=new Gt),t[e++]=n.x,t[e++]=n.y,t[e++]=n.z}return this}function ob(i){let t=this.array,e=0;for(let r=0,o=i.length;r<o;r++){let n=i[r];n===void 0&&(console.warn("THREE.BufferAttribute.copyVector4sArray(): vector is undefined",r),n=new x3),t[e++]=n.x,t[e++]=n.y,t[e++]=n.z,t[e++]=n.w}return this}var S3=["a","b","c"];function w3(i,t){switch(t){case"c":return i.c;case"b":return i.b;case"a":default:return i.a}}function Cf(i,t,e){let r=Math.min(i,t),o=Math.max(i,t),n=r+"_"+o;return e.get(n)}function Af(i,t,e,r,o,n){let a=Math.min(i,t),s=Math.max(i,t),l=a+"_"+s,c;if(r.has(l))c=r.get(l);else{let u=e[a],d=e[s];c={a:u,b:d,newEdge:null,faces:[]},r.set(l,c)}c.faces.push(o),n[i].edges.push(c),n[t].edges.push(c)}function P3(i,t,e,r){let o,n,a;for(o=0,n=i.length;o<n;o++)e[o]={edges:[]};for(o=0,n=t.length;o<n;o++)a=t[o],Af(a.a,a.b,i,r,a,e),Af(a.b,a.c,i,r,a,e),Af(a.c,a.a,i,r,a,e)}function Cu(i,t,e,r,o){i.push(new Na(t,e,r,void 0,void 0,o))}function Da(i,t){return Math.abs(t-i)/2+Math.min(i,t)}function Au(i,t,e,r){i.push([t.clone(),e.clone(),r.clone()])}var Mu=class{constructor(t=1){this.subdivisions=t}modify(t){t instanceof v3?t=new wi().fromBufferGeometry(t):t=t.clone(),t.mergeVertices();let e=this.subdivisions;for(;e-- >0;)this._smooth(t);return t.computeFaceNormals(),t.computeVertexNormals(),t}_smooth(t){let e=new nb,r,o,n,a,s,l=t.vertices,c=t.faces,u=t.faceVertexUvs[0],d=u!==void 0&&u.length>0,p=[],f=new Map;P3(l,c,p,f);let h=[],m,y,x,v,w,O,S;for(let Z of Array.from(f.keys())){for(y=f.get(Z),x=new nb,w=3/8,O=1/8,S=y.faces.length,S!=2&&(w=.5,O=0,S!=1),x.addVectors(y.a,y.b).multiplyScalar(w),e.set(0,0,0),a=0;a<S;a++){for(v=y.faces[a],s=0;s<3&&(m=l[w3(v,S3[s])],!(m!==y.a&&m!==y.b));s++);m&&e.add(m)}e.multiplyScalar(O),x.add(e),y.newEdge=h.length,h.push(x)}let T,M,g,D,E,I,N,_=[];for(o=0,n=l.length;o<n;o++){for(I=l[o],E=p[o].edges,r=E.length,r==3?T=3/16:r>3&&(T=3/(8*r)),M=1-r*Number(T),g=T,r<=2&&(r==2?(M=3/4,g=1/8):r==1||r==0),N=I.clone().multiplyScalar(M),e.set(0,0,0),a=0;a<r;a++)D=E[a],m=D.a!==I?D.a:D.b,e.add(m);e.multiplyScalar(Number(g)),N.add(e),_.push(N)}let R=_.concat(h),V=_.length,U,B,q,j=[],F=[],H,W,ee,te,Y=new Tf,re=new Tf,K=new Tf;for(o=0,n=c.length;o<n;o++)v=c[o],U=Number(Cf(v.a,v.b,f).newEdge)+V,B=Number(Cf(v.b,v.c,f).newEdge)+V,q=Number(Cf(v.c,v.a,f).newEdge)+V,Cu(j,U,B,q,v.materialIndex),Cu(j,v.a,U,q,v.materialIndex),Cu(j,v.b,B,U,v.materialIndex),Cu(j,v.c,q,B,v.materialIndex),d&&(H=u[o],W=H[0],ee=H[1],te=H[2],Y.set(Da(W.x,ee.x),Da(W.y,ee.y)),re.set(Da(ee.x,te.x),Da(ee.y,te.y)),K.set(Da(W.x,te.x),Da(W.y,te.y)),Au(F,Y,re,K),Au(F,W,Y,K),Au(F,ee,re,Y),Au(F,te,K,re));t.vertices=R,t.faces=j,d&&(t.faceVertexUvs[0]=F)}};var At=new T3,lb=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=i.geometry??t?.geometry??new ab().copy(new sb(100,100,100)),r;t===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(At),r={width:At.x,height:At.y,depth:At.z,subdivisions:0}):r=t.parameters;let o={...r,...i.parameters};return{parameters:{width:Math.abs(o.width),height:Math.abs(o.height),depth:Math.abs(o.depth),subdivisions:Math.abs(o.subdivisions)},geometry:e}}static build(i){let{width:t,height:e,depth:r,subdivisions:o}=i.parameters,n=i.geometry??new ab().copy(new sb(100,100,100)),a=n.userData.parameters;a===void 0?(n.computeBoundingBox(),n.boundingBox.getSize(At)):At.set(a.width,a.height,a.depth),(t!==At.x||e!==At.y||r!==At.z)&&n.scale(At.x===0?1:t/At.x,At.y===0?1:e/At.y,At.z===0?1:r/At.z);let s=n.originalGeometry;try{o>0?(s===void 0||a?.subdivisions!==o)&&(s===void 0&&(s=n),n=new Mu(o).modify(s).toBufferGeometry()):(s!==void 0&&(n=s),s=void 0,n.getAttribute("normal")===void 0&&n.computeVertexNormals())}catch{s!==void 0&&(n=s),s=void 0,n.getAttribute("normal")===void 0&&n.computeVertexNormals()}return s!==void 0&&Object.assign(n,{originalGeometry:s}),delete i.geometry,Object.assign(n,{userData:{...i,type:"NonParametricGeometry"}})}static loadFromUrl(i,t,e){new O3(e).load(i,o=>{let n=this.normalizeInputs({geometry:o});o.boundingBox.getSize(At);let a=100/At.x;Object.assign(n.parameters,{width:100,height:At.y*a,depth:At.z*a}),t(this.build(n))})}};var Iu=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:3},i.parameters);return{shape:i.shape&&i.shape instanceof je?i.shape:new je,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(i){let{width:t,height:e,spikes:r,cornerRadius:o,depth:n,extrudeBevelSize:a,extrudeBevelSegments:s}=i.parameters,l=i.shape,c=t*.5,u=e*.5,d=0,p=0,f=2*Math.PI/r;for(let m=0;m<r;m++){let y=f*m,x=d+Math.sin(y)*c,v=p+Math.cos(y)*u;l.addPoint(l.createPoint(x,v))}l.isClosed=!0;for(let m=0,y=l.points.length;m<y;m++)l.points[m].roundness=o;l.roundness=o,l.update();let h=tr.create({shape:l,parameters:{roundness:o,depth:n,extrudeBevelSize:a,extrudeBevelSegments:s}});return Object.assign(h,{userData:{...i,type:"PolygonGeometry"}})}};import{BufferGeometry as C3,Float32BufferAttribute as Mf,Vector2 as uo,Vector3 as Dt}from"three";var cb=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:4,heightSegments:1,cornerRadius:0,cornerSegments:8,openEnded:!1},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t,height:e,depth:r,radialSegments:o,heightSegments:n,openEnded:a,cornerRadius:s,cornerSegments:l}=i.parameters,c=new Ef(t*.5,e,o,n,a,s,l);return c.scale(1,1,r/t),Object.assign(c,{userData:{...i,type:"PyramidGeometry"}})}};function sl(i,t,e){e.x=i.x*t.x,e.y=i.y,e.z=i.x*t.y}function If(i,t,e,r,o,n){let a=t.clone().sub(i),s=e.clone().sub(i),l=a.angleTo(s);if(a.normalize(),s.normalize(),r===o){let c=a.add(s).normalize();n.copy(i).addScaledVector(c,r/Math.sin(l/2))}else{let c=a.angleTo(s);n.copy(i),n.addScaledVector(a,o/Math.sin(c)),n.addScaledVector(s,r/Math.sin(c))}}function A3(i,t,e){let r=i.clone().sub(t),o=e.clone().sub(t);return r.projectOnVector(o),r.add(t)}var Ef=class extends C3{constructor(t=.5,e=1,r=4,o=1,n=!1,a=0,s=4){super(),r=Math.floor(Math.max(3,r)),o=Math.floor(o),s=Math.floor(s);let l=[],c=[],u=[],d=[],p=0,f=e/2,h=Math.PI/r,m=t*Math.cos(Math.PI/r),y=2*Math.PI/r,x=(r-2)*Math.PI/r,v=Math.PI-x,w=new Dt(0,-f,0),O=new Dt(0,f,0),S=new uo(t,-f),T=new uo(m,-f),M=new uo(0,O.y).sub(T),g=new uo(0,O.y).sub(S),D=new uo(M.y,-M.x).normalize(),E=new uo(g.y,-g.x).normalize(),N=t*Math.cos(Math.PI/r)*Math.tan((Math.PI-M.angle())/2)-1e-8;a=Math.min(a,N);let _;{let F=new Dt(D.x,D.y,0),H=new Dt(Math.cos(y)*F.x,F.y,Math.sin(y)*F.x);_=F.angleTo(H)}let R=a/Math.tan((Math.PI-M.angle())/2),V=a/Math.tan((Math.PI-_)/2),U=new Dt;if(!n){c.push(w.x,w.y,w.z),u.push(0,-1,0),d.push(0,0);let F=p++,H=[],W=S.clone(),ee=R/Math.cos(Math.PI/r);W.x-=ee;for(let te=0;te<r;te++){let Y=te/r*Math.PI*2+h,re=new uo(Math.sin(Y),Math.cos(Y));sl(W,re,U),c.push(U.x,U.y,U.z),u.push(0,-1,0),d.push(0,0),H.push(p++)}for(let te=0;te<H.length;te++)l.push(H[te],F,H[(te+1)%H.length])}let B=[];{let F=new Dt,H=new Dt,W=new Dt,ee=new Dt,te=new Dt,Y=new Dt;for(let re=0;re<r;re++){let K=re/r*Math.PI*2+h,Z=(re+.5)/r*Math.PI*2+h,Q=(re+1)/r*Math.PI*2+h,$=new uo(Math.sin(K),Math.cos(K)),de=new uo(Math.sin(Z),Math.cos(Z)),le=new uo(Math.sin(Q),Math.cos(Q));sl(S,$,H),sl(S,le,W),sl(D,de,F),If(O,H,W,V,V,ee),c.push(ee.x,ee.y,ee.z),If(H,O,W,V,R,te),c.push(te.x,te.y,te.z),If(W,H,O,R,V,Y),c.push(Y.x,Y.y,Y.z),u.push(F.x,F.y,F.z),u.push(F.x,F.y,F.z),u.push(F.x,F.y,F.z),d.push(0,0),d.push(0,0),d.push(0,0);let ie=p++,ce=p++,ae=p++;if(l.push(ie,ce,ae),a>0){{let he=H.clone().add(W).multiplyScalar(.5),xe=O.clone().sub(he).normalize(),C=w.clone().sub(he).normalize().add(xe).normalize().multiplyScalar(-1),ne=Y.clone().sub(te);q(he,ne,C,M.angle())}let me,fe;{let he=new Dt;sl(E,le,he);let xe=Y.clone().add(ee).multiplyScalar(.5);xe=A3(xe,W,O);let ye=Y.clone().sub(ee);[me,fe]=q(xe,ye,he,_,ee.y)}{let he=me,xe=he.clone().setY(0).normalize(),ye=new Dt(0,-1,0),C=xe.clone().cross(ye);j(he,xe,ye,C)}B.concat(fe);{let he=M.angle(),xe=Math.PI-he,ye=O.clone();ye.y-=a/Math.sin(he-Math.PI/2);let C=new Dt,ne=[];for(let Ve=0;Ve<s;Ve++){let _e=[],Pe=Math.PI/2-xe*Ve/s,St=Math.cos(Pe),Me=Math.sin(Pe),bt=Z;for(let wt=0;wt<=Ve;wt++){let ki=Math.cos(bt),it=Math.sin(bt);F.x=St*it,F.y=Me,F.z=St*ki,C.copy(ye).addScaledVector(F,a),c.push(C.x,C.y,C.z),u.push(F.x,F.y,F.z),d.push(0,0),_e.push(p++),bt+=Math.PI*2/Ve/r}ne.push(_e)}fe.reverse(),ne.push(fe);let Ne=ne.length-1;for(let Ve=0;Ve<Ne;Ve++){let _e=ne[Ve],Pe=ne[Ve+1],St=_e.length-1;l.push(Pe[1],_e[0],Pe[0]);for(let Me=1;Me<=St;Me++)l.push(_e[Me],_e[Me-1],Pe[Me]),l.push(Pe[Me+1],_e[Me],Pe[Me])}}}}}this.setIndex(l),this.setAttribute("position",new Mf(c,3)),this.setAttribute("normal",new Mf(u,3)),this.setAttribute("uv",new Mf(d,2));function q(F,H,W,ee,te){let Y=-ee/2,re=(Math.PI-ee)/2,K=H.clone().normalize().cross(W);F.addScaledVector(W,-a/Math.sin(re));let Z=new Dt,Q=new Dt,$=1,de=p,le=[];for(let ie=0;ie<=s;ie++){let ce=Y+ie/s*ee;Q.set(0,0,0),Q.addScaledVector(K,Math.sin(ce)),Q.addScaledVector(W,Math.cos(ce));for(let ae=0;ae<=$;ae++){let me=ae/$-.5;if(Z.copy(F),Z.addScaledVector(H,me),Z.addScaledVector(Q,a),te!=null){let fe=Math.max(0,Z.y-te);Z.addScaledVector(H,-fe/H.y)}c.push(Z.x,Z.y,Z.z),u.push(Q.x,Q.y,Q.z),d.push(0,0),ae===0&&le.push(p),p++}}for(let ie=0;ie<s;ie++)for(let ce=0;ce<$;ce++){let ae=de+ce+($+1)*ie,me=ae+($+1),fe=me+1,he=ae+1;l.push(ae,me,he),l.push(me,fe,he)}return[F.clone().addScaledVector(H,.5),le]}function j(F,H,W,ee){let te=Math.PI/2,Y=g.angle()-te,re=[],K=new Dt,Z=new Dt;for(let $=0;$<=s;$++){let de=[],le=$/s;for(let ie=0;ie<=$;ie++){let ae=(($?ie/$:0)-.5)*v,me=Math.cos(ae),fe=Math.sin(ae),he=Math.atan(Math.tan(Y)*me),xe=(te+he)*le,ye=Math.cos(xe),C=Math.sin(xe);K.set(0,0,0),K.addScaledVector(H,C*me),K.addScaledVector(W,ye),K.addScaledVector(ee,C*fe),Z.copy(F).addScaledVector(K,a),c.push(Z.x,Z.y,Z.z),u.push(K.x,K.y,K.z),d.push(0,0),de.push(p++)}re.push(de)}let Q=re.length-1;for(let $=0;$<Q;$++){let de=re[$],le=re[$+1],ie=de.length-1;l.push(de[0],le[1],le[0]);for(let ce=1;ce<=ie;ce++)l.push(de[ce-1],de[ce],le[ce]),l.push(de[ce],le[ce+1],le[ce])}}}};var _a=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,cornerRadius:[0,0,0,0],cornerType:1,extrudeBevelSize:0,extrudeBevelSegments:1},i.parameters),r=Object.assign(t?.ui??{enabledIndieCorners:!1},i.ui);return{shape:i.shape&&i.shape instanceof je?i.shape:new je,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)}),ui:r}}static build(i){let t=i.shape,{width:e,height:r,cornerRadius:o,cornerType:n,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}=i.parameters,c={x:e*.5,y:r*.5},u={x:-c.x,y:-c.y},d={x:c.x,y:c.y};function p(O,S,T){return S>e&&T>r?Math.min(O*e/S,O*r/T):S>e?O*e/S:T>r?O*r/T:O}let f=[];f[0]=o[0]===0?0:p(o[0],o[0]+o[3],o[0]+o[1]),f[1]=o[1]===0?0:p(o[1],o[1]+o[2],o[1]+o[0]),f[2]=o[2]===0?0:p(o[2],o[2]+o[1],o[2]+o[3]),f[3]=o[3]===0?0:p(o[3],o[3]+o[0],o[3]+o[2]);let h=u.x,m=d.x,y=d.y,x=u.y;t.addPoint(t.createPoint(h,y)),t.addPoint(t.createPoint(m,y)),t.addPoint(t.createPoint(m,x)),t.addPoint(t.createPoint(h,x)),t.isClosed=!0;let v=!0;for(let O=0,S=t.points.length;O<S;O++)t.points[O].roundness=f[O],O>0&&f[O]!==f[O-1]&&(v=!1);v&&(t.roundness=f[0]),t.useCubicForRoundedCorners=n!==1,t.update();let w=tr.create({shape:t,parameters:{depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}});return Object.assign(w,{userData:{...i,type:"RectangleGeometry"}})}};import{BufferGeometry as M3,Float32BufferAttribute as I3,MathUtils as ub,SphereGeometry as E3}from"three";var db=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:180},i.parameters);return e.thetaLength=ub.clamp(e.thetaLength,0,180),{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t=100,height:e=t,depth:r=t,widthSegments:o=64,heightSegments:n=64,phiStart:a,phiLength:s,thetaStart:l,thetaLength:c}=i.parameters,u;return c===0?(u=new M3,u.setAttribute("position",new I3([],3))):u=new E3(.5*t,o,n,a,s,l,c*ub.DEG2RAD),u.scale(1,e/t,r/t),Object.assign(u,{userData:{...i,type:"SphereGeometry"}})}};import{PlaneGeometry as N3}from"three";var pb=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,widthSegments:8,heightSegments:8},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:0})}}static build(i){let{width:t=100,height:e=t,widthSegments:r=8,heightSegments:o=8}=i.parameters,n=new N3(t,e,r,o);return n.scale(1,1,1),Object.assign(n,{userData:{...i,type:"PlaneGeometry"}})}};import{BufferGeometry as D3,Float32BufferAttribute as Nf,Vector3 as _3}from"three";var fb=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,angle:90,cornerRadius:24,cornerSegments:8},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t,height:e,depth:r,angle:o,cornerRadius:n,cornerSegments:a}=i.parameters,s=new Df(t,e,r,o,n,a);return Object.assign(s,{userData:{...i,type:"BackdropGeometry"}})}},Df=class extends D3{constructor(t=1,e=1,r=1,o=90,n=10,a=24){super(),this.type="BackdropGeometry";let s=[],l=[],c=[],u=.001;n==0&&(a=1),a=Math.max(1,Math.floor(a)),n=Math.min(n,100),o=Math.min(180-u,o),o*=Math.PI/180;let d=[],p=Math.PI/2,f=(Z=0,Q=0,$=0)=>new _3(Z,Q,$),h=f(),m=f(),[y,x,v]=[e/2,t/2,r/2],w=-x,O=+x,[S,T,M]=[f(w,-y,+v),f(w,-y,-v),f(w,+y,-v)],g=(Z,Q=!1)=>Math.sin(Z-Math.PI/(1+ +Q)),D=(Z,Q=!1)=>Math.cos(Z-Math.PI/(1+ +Q));M.y=Math.sin(o)*e-y;let E=Math.cos(o)*e-v,I=S.z-u;o<=p?(M.z=Math.min(E,I),M.z==I&&(M.y-=(E-I)/Math.tan(p-o))):T.z=Math.min(T.z-E-v,S.z-u),h.subVectors(S,T),m.subVectors(M,T);let N=Math.min(h.length(),m.length())*n/100,_=N*Math.tan(o/2),R=N/Math.cos(o/2),V=h.clone().normalize().add(m.normalize()).setLength(R).add(T);h.set(0,g(o,!0),D(o,!0)),d.push([M,h.clone()]);let U=(Math.PI-o)/a;for(let Z=0;Z<=a;Z++){let Q=p+o+Z*U;h.set(0,Math.sin(Q)*_,Math.cos(Q)*_),h.add(V),m.set(0,g(Q),D(Q)),d.push([h.clone(),m.clone()])}d.push([S,f(0,1,0)]);let B=Math.sin(U/2)*_*2,q=d.length-1,j=d[0][0].distanceTo(d[1][0]),F=d[q-1][0].distanceTo(d[q][0]),H=j+B*a+F;d[0].push(1);for(let Z=0;Z<=a;Z++)d[Z+1].push(1-(j+Z*B)/H);d[q].push(0);let[W,ee,te]=d[0],Y,re,K;for(let Z=1;Z<d.length;Z++)[Y,re,K]=d[Z],s.push(w,W.y,W.z,w,Y.y,Y.z,O,W.y,W.z,O,W.y,W.z,w,Y.y,Y.z,O,Y.y,Y.z),l.push(0,ee.y,ee.z,0,re.y,re.z,0,ee.y,ee.z,0,ee.y,ee.z,0,re.y,re.z,0,re.y,re.z),c.push(0,te,0,K,1,te,1,te,0,K,1,K),[W,ee,te]=[Y,re,K];this.setAttribute("position",new Nf(s,3)),this.setAttribute("normal",new Nf(l,3)),this.setAttribute("uv",new Nf(c,2))}};var Eu=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,innerRadiusPercent:38.19,spikes:5,cornerRadius:0,angle:360,extrudeBevelSize:0,extrudeBevelSegments:1},i.parameters);return{shape:i.shape&&i.shape instanceof je?i.shape:new je,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(i){let{width:t,height:e,innerRadiusPercent:r,spikes:o,cornerRadius:n,angle:a,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}=i.parameters,u=i.shape,d=t*.5,p=e*.5,f=0,h=0,m=a*Math.PI/360/o,y=Math.PI/2*3*-1,x=d*r/100,v=p*r/100;if(o===3&&r===50){m=2*Math.PI/o;for(let O=0;O<o;O++){let S=m*O,T=f+Math.sin(S)*d,M=h+Math.cos(S)*p;u.addPoint(u.createPoint(T,M))}}else for(let O=0;O<o;O++){let S=f+Math.cos(y)*d,T=h+Math.sin(y)*p;u.addPoint(u.createPoint(S,T)),y+=m,S=f+Math.cos(y)*x,T=h+Math.sin(y)*v,O<=o,u.addPoint(u.createPoint(S,T)),y+=m}u.isClosed=!0;for(let O=0,S=u.points.length;O<S;O++)u.points[O].roundness=n;u.roundness=n,u.update();let w=tr.create({shape:u,parameters:{roundness:n,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(w,{userData:{...i,type:"StarGeometry"}})}};import{PlaneGeometry as R3}from"three";var hb=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(i){let{width:t,height:e}=i.parameters,r=new R3(t,e);return Object.assign(r,{userData:{...i,type:"TextFrameGeometry"}})}};import{BufferGeometry as L3,Float32BufferAttribute as B3,MathUtils as V3}from"three";var mb=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:32,tubularSegments:64,arc:360,cornerRadius:30,cornerSegments:8},i.parameters),r=Math.abs(e.width),o=Math.abs(e.height??e.width);e.shapeBlendNode&&(o=r);let n=Math.round(Math.abs(e.depth??e.width*.25));return{parameters:Object.assign(e,{width:r,height:o,depth:n})}}static build(i){let{width:t,height:e,depth:r,radialSegments:o,tubularSegments:n,arc:a,cornerRadius:s,cornerSegments:l}=i.parameters,c=z3(t,e,r,t*.5,a,n,0,0,o,s,l);return c.scale(1,e/t,1),Object.assign(c,{userData:{...i,type:"TorusGeometry"}})}};function z3(i,t,e,r,o,n,a,s,l,c,u){[t,e]=[e,t],a=t/2;let d=V3.clamp(o/360,0,1);if(d===0){let p=new L3;return p.setAttribute("position",new B3([],3)),p}return d===1&&(c=0),new il(!0,i,t,e,r,d,n,a,s,l,c,u)}import{TorusKnotGeometry as G3}from"three";var yb=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,tubularSegments:64,radialSegments:32,p:2,q:3},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width),tube:e.tube??e.width*.125})}}static build(i){let{width:t,tube:e,tubularSegments:r,radialSegments:o,p:n,q:a}=i.parameters,s=t*.5;s!==e&&(s-=e);let l=new G3(s,e,r,o,n,a);return Object.assign(l,{userData:{...i,type:"TorusKnotGeometry"}})}};var gb=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1,isRect:!1},i.parameters);return{shape:i.shape&&i.shape instanceof je?i.shape:new je,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width*(e.isRect?1:Math.sqrt(3)/2)),depth:Math.abs(e.depth??0)})}}static build(i){let{width:t=100,height:e,cornerRadius:r,depth:o,extrudeBevelSize:n,extrudeBevelSegments:a,isRect:s}=i.parameters,l=i.shape,c=t*.5,u=e*.5;s?(l.addPoint(l.createPoint(-c,u)),l.addPoint(l.createPoint(c,-u)),l.addPoint(l.createPoint(-c,-u))):(l.addPoint(l.createPoint(0,u)),l.addPoint(l.createPoint(c,-u)),l.addPoint(l.createPoint(-c,-u))),l.isClosed=!0;for(let p=0,f=l.points.length;p<f;p++)l.points[p].roundness=r;l.roundness=r,l.update();let d=tr.create({shape:l,parameters:{roundness:r,depth:o,extrudeBevelSize:n,extrudeBevelSegments:a}});return Object.assign(d,{userData:{...i,type:"TriangleGeometry"}})}};import{Vector2 as Sb,Vector3 as _t,Matrix3 as Z3,Matrix4 as an,BufferGeometry as wb,BufferAttribute as Ra,MathUtils as Du}from"three";function xb(i,t){let e=2*Math.PI;return(i%e+e)%e===(t%e+e)%e}function F3(i){return/^(rgba)?\(\s*(\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d+(?:\.\d+)?))?\s*\)$/.exec(i.toLowerCase())}function j3(i,t,e){let r,o,n,a=Math.floor(i*6),s=i*6-a,l=e*(1-t),c=e*(1-s*t),u=e*(1-(1-s)*t);switch(a%6){case 0:r=e,o=u,n=l;break;case 1:r=c,o=e,n=l;break;case 2:r=l,o=e,n=u;break;case 3:r=l,o=c,n=e;break;case 4:r=u,o=l,n=e;break;case 5:default:r=e,o=l,n=c;break}return{r:r*255,g:o*255,b:n*255}}function U3(i,t,e){i/=255,t/=255,e/=255;let r=Math.max(i,t,e),o=Math.min(i,t,e),n=r,a=r-o,s=r==0?0:a/r,l;if(r==o)l=0;else{switch(r){case i:l=(t-e)/a+(t<e?6:0);break;case t:l=(e-i)/a+2;break;case e:default:l=(i-t)/a+4;break}l/=6}return{h:l,s,v:n}}function k3(i){return i=Math.floor(i),{r:i>>16&255,g:i>>8&255,b:i&255}}function H3(i,t,e){return(i<<16)+(t<<8)+e}function W3(i,t,e){return i=Math.round(i),t=Math.round(t),e=Math.round(e),"#"+[i,t,e].map(r=>r.toString(16).padStart(2,"0")).join("").toUpperCase()}function q3(i){let t=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;i=i.replace(t,(r,o,n,a)=>String(o+o+n+n+a+a));let e=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(i);return e?{r:parseInt(e[1],16),g:parseInt(e[2],16),b:parseInt(e[3],16)}:null}var bb={parseRgba:F3,hsvToRgb:j3,rgbToHsv:U3,hexToRgb:k3,rgbToHex:H3,rgbToHexString:W3,hexStringToRgb:q3};function Uo(i){return{all:i=i||new Map,on:function(t,e){var r=i.get(t);r?r.push(e):i.set(t,[e])},off:function(t,e){var r=i.get(t);r&&(e?r.splice(r.indexOf(e)>>>0,1):i.set(t,[]))},emit:function(t,e){var r=i.get(t);r&&r.slice().map(function(o){o(e)}),(r=i.get("*"))&&r.slice().map(function(o){o(t,e)})}}}var Nu=class{constructor(t,e,r){this.id=t;this.userAPI=e;this.result=void 0;this.error="null";this.isPrefetched=!1;this.isLoading=!1;this.isLoaded=!1;this.prefetchPromise=new Promise(t=>t());this.emitter=Uo();this._innerCallUserAPI=async t=>{this.emitter.emit("start",{userAPIId:this.id}),this.isLoading=!0,this.isLoading=!1;try{this.result=await Q3(this.userAPI,t),this.error="null",this.emitter.emit("success",{userAPIId:this.id})}catch(e){let r=e.message?.split("_:_")?.[0]?.replace("status:","")??"null";this.error=r,this.result=null,this.emitter.emit("error",{userAPIId:this.id})}this.isLoading=!1,this.isPrefetched=!0,this.isLoaded=!0};e?.integration?.type==="OpenAI"?this.result={content:""}:e.method==="GET"&&e.url!==""&&(this.prefetchPromise=this.prefetch(r)),this._debouncedCallUserAPI=this._innerCallUserAPI,this._updateDebouncedCallUserAPI(),this._debouncedPrefetch=bc(this.prefetch,1e3,{trailing:!0})}_updateDebouncedCallUserAPI(){this._debouncedCallUserAPI=this.userAPI.debounce!==void 0&&this.userAPI.debounce>0?bc(this._innerCallUserAPI,this.userAPI.debounce,{leading:!0,trailing:!0}):this._innerCallUserAPI}async prefetch(t){await this.callUserAPI(t)}async callUserAPI(t){await this._debouncedCallUserAPI(t)}update(t,e,r=!0){this.userAPI=t,this._updateDebouncedCallUserAPI(),this.userAPI.url!==""&&this.userAPI.method==="GET"&&r&&this._debouncedPrefetch(e)}retrieveValue(t){if(this.result)try{return Ze.zoom(this.result,t)}catch(e){console.error(e)}}retrieveZoomedKeyValues(t){if(this.result){let e=t&&t.length?Ze.zoom(this.result,t):this.result;if(K3(e))return Object.entries(e);if(Y3(e))return e.map((r,o)=>[o.toString(),r]);throw X3(e)?new Error("This path points to a value, use retrieveValue() instead. "+t?.join(".")):new Error("Path error"+t?.join("."))}}dispose(){}on(t,e){this.emitter.on(t,e)}off(t,e){this.emitter.off(t,e)}get autostart(){return this.userAPI.autoStart}};function $3(i){let t=new Headers;return i.headers.forEach(e=>{e.data.key!==""&&t.append(e.data.key,e.data.value)}),t}function X3(i){return typeof i=="string"||typeof i=="number"||typeof i=="boolean"||i===null}function Y3(i){return Array.isArray(i)}function K3(i){return typeof i=="object"&&i!==null}async function Q3(i,t,e=new AbortController){let r,o=i.url,n=i.proxy?.enabled??!1,a;if(i.integration?.type==="OpenAI"){let l=ll(i.integration.prompt===""?[]:JSON.parse(i.integration.prompt),t),c=i.integration.behavior===""?[]:ll(JSON.parse(i.integration.behavior),t);a=`{
|
|
4
4
|
"model": "${i.integration.model}",
|
|
5
5
|
"messages": [${i.integration.useBehavior?`
|
|
6
6
|
{
|
|
@@ -12,14 +12,14 @@ best distance: ${d.d}`);let b=[d.x,d.y];return b.distance=d.d,b.distance}functio
|
|
|
12
12
|
"content": "${l}"
|
|
13
13
|
}
|
|
14
14
|
]
|
|
15
|
-
}`}if(n){o=`${!1&&window.location.search.includes("api-dev")?"https://api-dev.spline.design/":"https://apis.spline.design/"}file/${i.proxy.fileId}/external-api/request?uuidexternalapi=${i.proxy.proxyId}`;let u;a!==void 0?u=a:i.method==="POST"&&i.body&&(u=
|
|
16
|
-
`:"")+sl(e.children,t);if(e.type==="variable"){let o=t.getVariable(e.variableId);if(o!==void 0)return bb(o,t)}}return""}).join("");var Z3=new nn,J3=new nn;function eE(i,t,e){let r=[new _t,new _t,new _t],o=[new _t,new _t,new _t];return i.extractBasis(r[0],r[1],r[2]),t.extractBasis(o[0],o[1],o[2]),r.forEach((n,a)=>{let s=o[a],l=Nu.lerp(n.length(),s.length(),e);n.lerp(s,e).setLength(l)}),new nn().makeBasis(r[0],r[1],r[2])}var wb=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,height:100,depth:1,subdivisions:12,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3},i.parameters),r=Math.abs(e.width),o=Math.abs(e.height??e.width),n=Math.abs(e.depth??0),a=t?.shapeData??Ma.create({parameters:Tp}).userData.shape;return{path:i.path??la.defaultData(),parameters:Object.assign(e,{width:r,height:o,depth:n,extrusion:{...Uc,...e.extrusion}}),shapeData:a}}static build(i){if(i.path.points.length>=2){let e=new Df(i);return Object.assign(e,{userData:{...i,type:"PathGeometry"}})}else return Object.assign(new Sb,{userData:{...i,type:"PathGeometry"}})}},Df=class extends Sb{constructor(e){super();this.type="PathExtrusionGeometry",this.inputs=e,this.build()}_isGeometryClosed(){return this.inputs.path.isClosed&&this.inputs.parameters.extrusion.depth===1}_isOpenEnded(){let e=this.inputs.parameters.extrusion;return!(this.inputs.path.isClosed&&e.depth===1)||!gb(e.twist,0)||e.startScale!==e.endScale}build(){let e=this._extractPathPoints();if(e.length<2)return;let r=this._computeBasisMatrices(e),{depth:o,offset:n}=this.inputs.parameters.extrusion;o=Math.max(0,Math.min(o,1)),n=Math.max(0,Math.min(n,1));let a=this.inputs.path.isClosed?e.length:e.length-1,s=Math.floor(n*a),l=this.inputs.path.isClosed?Math.ceil((o+n)*a):Math.ceil(Math.min(1,o+n)*a),c=Math.min(Math.max(2,l-s+1),a+2),u=[],p=[];for(let j=0;j<c;j++){let F=this.inputs.path.isClosed?(j+s)%e.length:Math.min(j+s,e.length-1);u.push(e[F].clone()),p.push(r[F].clone())}let d=(j,F,H)=>{u[j]=u[j].clone().lerp(u[F],H),p[j]=eE(p[j],p[F],H)},f=0,h=n*a%1;(!this.inputs.path.isClosed||o<=1)&&(h||n===0)&&(f=h,d(0,1,f));let m=0,y=(n+o)*a%1;if((this.inputs.path.isClosed&&o<=1||!this.inputs.path.isClosed&&n+o<1)&&y&&(m=y,d(u.length-1,u.length-2,1-m)),o===0){let j=u.length-1;u[j].copy(u[0]),p[j].copy(p[0])}this._applyPathModifiers(p,f,m);let{bevel:b,bevelSides:v}=this.inputs.parameters.extrusion,w=b>0?this.inputs.parameters.extrusion.capType:"flat",O=5;this.inputs.parameters.extrusion.shape.type==="Custom"&&(O=this.inputs.parameters.extrusion.shape.shapeQuality==="low"?5:12);let{regions:S,infos:T,vertices:M}=this._computeShapePoints(O),g=0,D;w==="round"&&(D=new vi(this.inputs.shapeData,2*b,b,O,v,void 0,!0),g=D.getAttribute("position").count);let E=0,I=0;T.sort((j,F)=>j.start-F.start),T.forEach(j=>{j.verticesStart=E,j.verticesCount=j.continuous.reduce((F,H,W)=>F+(W===0||!H?2:1),0),I+=j.verticesCount,E=I});let N=I*c,_,R=0;if(this._isOpenEnded()&&w==="flat"){try{_=Fr({windingRule:Fe.ODD,elementType:st.POLYGONS,polySize:3,vertexSize:2,strict:!0,contours:S})}catch{_=gf}R=_.vertexCount}let V=N+2*R+g*2,U=N+2*R,B={positions:new Float32Array(V*3),normals:new Float32Array(V*3),uvs:new Float32Array(V*2)},q=[];if(T.forEach(j=>{this._extrudeRegion(j,M,p,u,B,q,this._isGeometryClosed()&&!this._isOpenEnded())}),_&&(this._closeEnd(_,N,q,B,p[0],u[0],!1),this._closeEnd(_,N+R,q,B,p[p.length-1],u[u.length-1],!0)),D){B.positions.set(D.getAttribute("position").array,U*3),B.normals.set(D.getAttribute("normal").array,U*3),B.uvs.set(D.getAttribute("uv").array,U*2);for(let W=U;W<U+g;W++)B.uvs[W*2+1]=1e-4;let j=q.length;q.push(...D.getIndex().array.map(W=>W+U)),U+=g,B.positions.set(D.getAttribute("position").array,U*3),B.normals.set(D.getAttribute("normal").array,U*3),B.uvs.set(D.getAttribute("uv").array,U*2);let F=q.length;q.push(...D.getIndex().array.map(W=>W+U)),this.setAttribute("position",new _a(B.positions,3)),this.setAttribute("normal",new _a(B.normals,3)),this.setAttribute("uv",new _a(B.uvs,2)),this.setIndex(q);let H=Z3;H.copy(p[p.length-1]).setPosition(u[u.length-1]),this.applyMatrix4OnRange(H,U,V),H.copy(p[0]).setPosition(u[0]).multiply(J3.makeScale(1,1,-1)),this.applyMatrix4OnRange(H,U-g,U),this.reverseIndicesOnRange(j,F)}else this.setAttribute("position",new _a(B.positions,3)),this.setAttribute("normal",new _a(B.normals,3)),this.setAttribute("uv",new _a(B.uvs,2)),this.setIndex(q)}_extractPathPoints(){let r=cu(this.inputs.path).getPoints(this.inputs.path.subdivisions);if(r.length<2)return[];let o=[r[0]];return r.forEach(a=>{o[o.length-1].distanceToSquared(a)>.001&&o.push(a)}),this.inputs.path.isClosed&&o[o.length-1].distanceTo(o[0])<.001&&o.pop(),o}_computeBasisMatrices(e){let r=[],o=e.length,n=this.inputs.path.isClosed,a=new _t,s=new _t,l=new _t,c=new _t,u=new _t(0,1,0);for(let y=0;y<o;y++){let b=e[y],v;y===0?v=n?e[e.length-2]:b.clone().multiplyScalar(2).sub(e[1]):v=e[y-1];let w;y===o-1?w=n?e[1]:b.clone().multiplyScalar(2).sub(e[y-1]):w=e[y+1];let O=b.clone().sub(v).normalize(),S=w.clone().sub(b).normalize(),T=O.clone().add(S).normalize();l.copy(T),y===0&&(T.equals(u)||T.clone().negate().equals(u))&&u.set(0,0,1);let M=u.clone().cross(T).normalize(),g=T.clone().cross(M).normalize();u.copy(g),c.copy(M),y===0&&(a.copy(g),s.copy(T));let D=new nn().makeBasis(M,g,T);r.push(D)}let p=n?s:l,d=n?a:new _t(0,1,0),f=p.clone().cross(c).normalize(),h=Math.acos(d.dot(f));if(isNaN(h))return r;let m=d.clone().cross(f);p.dot(m)>0&&(h*=-1);for(let y=1;y<r.length;y++){let b=new nn().makeRotationZ(h*y/r.length);r[y].multiply(b)}return r}_applyPathModifiers(e,r,o){let n=e.length,{angle:a,twist:s,startScale:l,endScale:c}=this.inputs.parameters.extrusion,u=new nn,p=new nn;return e.forEach((d,f)=>{let h=f===0?0:f===n-1?1:(f-r)/(n-(o===0?0:1)-(r+(1-o)));u.makeRotationZ(Nu.lerp(a,a+s,h)*Nu.DEG2RAD);let m=Nu.lerp(l,c,h);p.makeScale(m,m,m),d.multiply(u).multiply(p)}),e}_computeShapePoints(e=12,r=Fe.ODD){let o=this.inputs.shapeData,n=o.extractShapePointsToFlatArray([],e),a=o.shapeHoles.map(m=>{let y=m.extractShapePointsToFlatArray([],e),b=[];for(let v=y.length-1;v>=1;v-=2){let w=y[v-1],O=y[v-0];b.push(w,O)}return b}),s;try{s=Fr({windingRule:r,elementType:st.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[n]})}catch{s=rl}let l;try{l=Fr({windingRule:Fe.ODD,elementType:st.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...a]})}catch{l=yf}if(!s)throw new Error("error generating geometry");let c=s.elementCount;if(l){s.elementCount+=l.elementCount;for(let m=0;m<l.elements.length;m++){let y=l.elements[m],b=m%2===0?s.vertexCount:0;s.elements.push(y+b)}for(let m=0;m<l.vertexIndices.length;m++){let y=l.vertexIndices[m],b=s.vertexCount;s.vertexIndices.push(y+b)}for(let m=0;m<l.vertices.length;m++){let y=l.vertices[m];s.vertices.push(y)}}let u=1/0,p=-1/0,d=1/0,f=-1/0;for(let m=0,y=s.vertexCount;m<y;m++){let b=m*2,v=s.vertices[b+0],w=s.vertices[b+1];v<u&&(u=v),v>p&&(p=v),w<d&&(d=w),w>f&&(f=w)}let h=[];for(let m=s.elementCount-1;m>=0;m--){let y=m>=c,b=m*2,v=s.elements[b+0],w=s.elements[b+1],O=v+w,S={start:v,count:w,normals:[],isHole:y,continuous:[],verticesStart:0,verticesCount:0};h.push(S);let T=v,M=O-1,g=v+1,D=o.roundedCurves.length;do{let E=T-v,I=s.vertices[M*2+0],N=s.vertices[M*2+1],_=s.vertices[T*2+0],R=s.vertices[T*2+1],V=s.vertices[g*2+0],U=s.vertices[g*2+1],B=_-I,q=R-N,j=Math.sqrt(B*B+q*q);B/=j,q/=j;let F=_-V,H=R-U,W=Math.sqrt(F*F+H*H);F/=W,H/=W,S.normals[E*2+0]=-H,S.normals[E*2+1]=F;let ee=s.vertexIndices[T];if(Array.isArray(ee))S.continuous[E]=!1;else{let[te,Y]=o.getCurveIndexFromVertexId(ee-1,!0);if(Y>0&&Y<1)S.continuous[E]=!0;else{let re=Y===1?te+1:te-1;re=(re+D)%D;let K=Y===1?0:1,Z=o.roundedCurves[te].getTangent(Y),Q=o.roundedCurves[re].getTangent(K);S.continuous[E]=Z.dot(Q)>.95}}y&&(S.normals[E*2+0]*=-1,S.normals[E*2+1]*=-1),[M,T,g]=[T,g,g+1],g>=O&&(g-=w)}while(g!==v+1)}return{regions:[n,...a],infos:h,vertices:s.vertices}}_insertVertex(e,r,o,n,a){let s=r*2,l=r*3;e.positions[l+0]=o.x,e.positions[l+1]=o.y,e.positions[l+2]=o.z,e.normals[l+0]=n.x,e.normals[l+1]=n.y,e.normals[l+2]=n.z,e.uvs[s+0]=a.x,e.uvs[s+1]=a.y}_extrudeRegion(e,r,o,n,a,s,l){let c=new _t,u=new _t,p=new _t,d=new _t,f=new vb;o.forEach((m,y)=>{let b=n[y],v=e.verticesStart*o.length+e.verticesCount*y;for(let w=0;w<e.count;w++){let O=(e.start+w)*2;if(c.set(r[O+0],r[O+1],0),p.copy(c).applyMatrix4(m).add(b),e.continuous[w])d.set(e.normals[w*2+0],e.normals[w*2+1],0);else{let S=w===0?(e.start+e.count-1)*2:O-2;u.set(r[S+0],r[S+1],0),d.copy(c).sub(u),d.set(-d.y,d.x,0),e.isHole||d.negate()}if(d.applyMatrix4(m).normalize(),f.set(w===0?1:w/e.count,y/(o.length-1)),this._insertVertex(a,v,p,d,f),v++,!e.continuous[w]||w===0){if(w===0)d.set(e.normals[w*2+0],e.normals[w*2+1],0),f.set(0,y/(o.length-1));else{let S=w===e.count-1?e.start*2:O+2;u.set(r[S+0],r[S+1],0),d.copy(u).sub(c),d.set(-d.y,d.x,0),e.isHole||d.negate()}d.applyMatrix4(m).normalize(),this._insertVertex(a,v,p,d,f),v++}}});let h=o.length-1;for(let m=0;m<h;m++){let y=e.verticesStart*o.length+e.verticesCount*m,b=e.verticesStart*o.length+e.verticesCount*(m+1),v=0;for(let w=0;w<e.count;w++){(!e.continuous[w]||w===0)&&v++;let O=w===e.count-1?0:v+1,S=y+v,T=y+O,M=b+O,g=b+v;e.isHole?s.push(S,M,T,S,g,M):s.push(S,T,M,S,M,g),v++}}}_closeEnd(e,r,o,n,a,s,l){let c=e.vertexCount,u=new _t(0,0,l?-1:1).applyMatrix4(a),p=new _t,d=new vb;for(let h=0;h<c;h++){let m=2*h;p.set(e.vertices[m+0],e.vertices[m+1],0).applyMatrix4(a).add(s),this._insertVertex(n,r+h,p,u,d)}let f=e.elements;for(let h=0;h<e.elementCount;h++){let m=3*h,y=f[m+0]+r,b=f[m+(l?1:2)]+r,v=f[m+(l?2:1)]+r;o.push(y,b,v)}}applyMatrix4OnRange(e,r,o){let n=e.elements,a=new Q3().getNormalMatrix(e).elements,s,l,c,u,p=this.attributes.position,d=this.attributes.normal;if(!p||!d)return;let f=p.array,h=d.array,m=p.itemSize;for(let y=r*m,b=o*m;y<b;y+=m){if(y===r)debugger;s=f[y+0],l=f[y+1],c=f[y+2],u=1/(n[3]*s+n[7]*l+n[11]*c+n[15]),f[y+0]=(n[0]*s+n[4]*l+n[8]*c+n[12])*u,f[y+1]=(n[1]*s+n[5]*l+n[9]*c+n[13])*u,f[y+2]=(n[2]*s+n[6]*l+n[10]*c+n[14])*u,s=h[y+0],l=h[y+1],c=h[y+2],h[y+0]=a[0]*s+a[3]*l+a[6]*c,h[y+1]=a[1]*s+a[4]*l+a[7]*c,h[y+2]=a[2]*s+a[5]*l+a[8]*c}p.needsUpdate=!0,d.needsUpdate=!0}reverseIndicesOnRange(e,r){let o=this.index;if(o){for(let n=e;n<r;n+=3){let a=o.getX(n),s=o.getX(n+1),l=o.getX(n+2);o.setXYZ(n,l,s,a)}o.needsUpdate=!0}}};import{BufferAttribute as Pb,BufferGeometry as _f}from"three";import{mergeBufferGeometries as rE}from"three/examples/jsm/utils/BufferGeometryUtils.js";function Ob(){let i=new _f;return i.setAttribute("position",new Pb(new Float32Array([]),3)),i.setIndex(new Pb(new Uint16Array([]),1)),i}var oE=Ob().attributes,iE=12,nE=1,an=class extends _f{constructor(e,r){super();this.charWidths=[];this.charCoords=[];this.wrappedText=[];this.isLowResolution=!1;this.vectorShapes=[];Object.assign(this.attributes,oE),this.userData={parameters:e,type:"TextGeometry"};let o=r.getFont(e.font);o?.isLoaded?(this.font=o,this.update(e,r)):this.updateFont(e.font,r).then(()=>{this.update(e,r),r?.requestRender()})}async updateFont(e,r){let o=r.getFont(e);o&&(this.font=o,await o.loadingPromise)}update(e,r){let o=this.font;if(this.userData={parameters:e,type:"TextGeometry"},!o?.isLoaded){console.warn("Cannot update text because its font is not loaded");return}let{width:n,height:a,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c,text:u,textTransform:p}=e,d=yi.getDisplayedValue(u),f=p===2?d.toUpperCase():p===3?d.toLowerCase():d,h=aE(e,o,f,r),{shapes:m,charWidths:y,charCoords:b}=o.generateShapes(h,e,r),v=(typeof n=="number"?n:Number(r.getVariable(n)))*.5,w=(typeof a=="number"?a:Number(r.getVariable(a)))*.5,O=m.map(M=>new je().fromShape(M,!0));this.vectorShapes=O;let S=O.map(M=>er.create({shape:M,parameters:{depth:s,extrudeBevelSegments:c,extrudeBevelSize:l,windingRule:s<=0?Fe.NONZERO:Fe.ODD,subdivisions:this.isLowResolution&&s>0?nE:iE}})),T=S.length?rE(S):Ob();T.translate(-v,w,0),this.dispose(),this.wrappedText=h,this.charCoords=b,this.charWidths=y,this.deleteAttribute("extrudeNormal"),Object.entries(T.attributes).forEach(([M,g])=>{this.setAttribute(M,g)}),this.setIndex(T.index),this.computeBoundingSphere()}clone(){let e=Pt(new _f,an.prototype);return e.copy(this),console.log("CloneGeometry",this,e),e}copy(e){return Object.entries(e.attributes).forEach(([r,o])=>{this.setAttribute(r,o)}),this.setIndex(e.index),this.userData={parameters:{...e.userData.parameters},type:"TextGeometry"},this}async setText(e,r){this.font&&await this.font.loadingPromise,await this.update({...this.userData.parameters,text:{textValue:e}},r)}get text(){return this.userData.parameters.text??""}};function aE(i,t,e,r){let o=typeof i.width=="string"?Number(r.getVariable(i.width)):i.width,n=[""],a="";for(let s of e)a+=s,s===" "||s===`
|
|
15
|
+
}`}if(n){o=`${!1&&window.location.search.includes("api-dev")?"https://api-dev.spline.design/":"https://apis.spline.design/"}file/${i.proxy.fileId}/external-api/request?uuidexternalapi=${i.proxy.proxyId}`;let u;a!==void 0?u=a:i.method==="POST"&&i.body&&(u=ll(JSON.parse(i.body),t)),u!==void 0&&(o+=`&data=${encodeURIComponent(u.replace(/(\r\n|\n|\r|\t)/gm,""))}`)}else i.integration?.type==="OpenAI"?r=a:i.method==="POST"&&i.body&&(r=ll(JSON.parse(i.body),t));let s=await fetch(o,{method:n?"GET":i.method,headers:n?void 0:$3(i),signal:e.signal,body:r});if(!s.ok)throw new Error("status:"+s.status+"_:_"+s.statusText);if(i.integration?.type==="OpenAI"){let l=await s.json();return n&&(l=l.response),{content:l.choices[0].message.content}}else{let l=await s.json();return n&&(l=l.response),l}}var vb=(i,t)=>{if(typeof i=="string"){let e=t.getVariable(i);if(e)return vb(e,t)}return gi.isBoolean(i)?gi.getDisplayedValue(i).toLowerCase():gi.getDisplayedValue(i)},ll=(i,t)=>i.map((e,r)=>{if("text"in e)return e.text;if("type"in e){if(e.type==="paragraph")return(r>0?`
|
|
16
|
+
`:"")+ll(e.children,t);if(e.type==="variable"){let o=t.getVariable(e.variableId);if(o!==void 0)return vb(o,t)}}return""}).join("");var J3=new an,eE=new an;function tE(i,t,e){let r=[new _t,new _t,new _t],o=[new _t,new _t,new _t];return i.extractBasis(r[0],r[1],r[2]),t.extractBasis(o[0],o[1],o[2]),r.forEach((n,a)=>{let s=o[a],l=Du.lerp(n.length(),s.length(),e);n.lerp(s,e).setLength(l)}),new an().makeBasis(r[0],r[1],r[2])}var Pb=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,height:100,depth:1,subdivisions:12,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3},i.parameters),r=Math.abs(e.width),o=Math.abs(e.height??e.width),n=Math.abs(e.depth??0),a=t?.shapeData??Ia.create({parameters:Cp}).userData.shape;return{path:i.path??ca.defaultData(),parameters:Object.assign(e,{width:r,height:o,depth:n,extrusion:{...kc,...e.extrusion}}),shapeData:a}}static build(i){if(i.path.points.length>=2){let e=new _f(i);return Object.assign(e,{userData:{...i,type:"PathGeometry"}})}else return Object.assign(new wb,{userData:{...i,type:"PathGeometry"}})}},_f=class extends wb{constructor(e){super();this.type="PathExtrusionGeometry",this.inputs=e,this.build()}_isGeometryClosed(){return this.inputs.path.isClosed&&this.inputs.parameters.extrusion.depth===1}_isOpenEnded(){let e=this.inputs.parameters.extrusion;return!(this.inputs.path.isClosed&&e.depth===1)||!xb(e.twist,0)||e.startScale!==e.endScale}build(){let e=this._extractPathPoints();if(e.length<2)return;let r=this._computeBasisMatrices(e),{depth:o,offset:n}=this.inputs.parameters.extrusion;o=Math.max(0,Math.min(o,1)),n=Math.max(0,Math.min(n,1));let a=this.inputs.path.isClosed?e.length:e.length-1,s=Math.floor(n*a),l=this.inputs.path.isClosed?Math.ceil((o+n)*a):Math.ceil(Math.min(1,o+n)*a),c=Math.min(Math.max(2,l-s+1),a+2),u=[],d=[];for(let j=0;j<c;j++){let F=this.inputs.path.isClosed?(j+s)%e.length:Math.min(j+s,e.length-1);u.push(e[F].clone()),d.push(r[F].clone())}let p=(j,F,H)=>{u[j]=u[j].clone().lerp(u[F],H),d[j]=tE(d[j],d[F],H)},f=0,h=n*a%1;(!this.inputs.path.isClosed||o<=1)&&(h||n===0)&&(f=h,p(0,1,f));let m=0,y=(n+o)*a%1;if((this.inputs.path.isClosed&&o<=1||!this.inputs.path.isClosed&&n+o<1)&&y&&(m=y,p(u.length-1,u.length-2,1-m)),o===0){let j=u.length-1;u[j].copy(u[0]),d[j].copy(d[0])}this._applyPathModifiers(d,f,m);let{bevel:x,bevelSides:v}=this.inputs.parameters.extrusion,w=x>0?this.inputs.parameters.extrusion.capType:"flat",O=5;this.inputs.parameters.extrusion.shape.type==="Custom"&&(O=this.inputs.parameters.extrusion.shape.shapeQuality==="low"?5:12);let{regions:S,infos:T,vertices:M}=this._computeShapePoints(O),g=0,D;w==="round"&&(D=new Si(this.inputs.shapeData,2*x,x,O,v,void 0,!0),g=D.getAttribute("position").count);let E=0,I=0;T.sort((j,F)=>j.start-F.start),T.forEach(j=>{j.verticesStart=E,j.verticesCount=j.continuous.reduce((F,H,W)=>F+(W===0||!H?2:1),0),I+=j.verticesCount,E=I});let N=I*c,_,R=0;if(this._isOpenEnded()&&w==="flat"){try{_=jr({windingRule:Fe.ODD,elementType:st.POLYGONS,polySize:3,vertexSize:2,strict:!0,contours:S})}catch{_=xf}R=_.vertexCount}let V=N+2*R+g*2,U=N+2*R,B={positions:new Float32Array(V*3),normals:new Float32Array(V*3),uvs:new Float32Array(V*2)},q=[];if(T.forEach(j=>{this._extrudeRegion(j,M,d,u,B,q,this._isGeometryClosed()&&!this._isOpenEnded())}),_&&(this._closeEnd(_,N,q,B,d[0],u[0],!1),this._closeEnd(_,N+R,q,B,d[d.length-1],u[u.length-1],!0)),D){B.positions.set(D.getAttribute("position").array,U*3),B.normals.set(D.getAttribute("normal").array,U*3),B.uvs.set(D.getAttribute("uv").array,U*2);for(let W=U;W<U+g;W++)B.uvs[W*2+1]=1e-4;let j=q.length;q.push(...D.getIndex().array.map(W=>W+U)),U+=g,B.positions.set(D.getAttribute("position").array,U*3),B.normals.set(D.getAttribute("normal").array,U*3),B.uvs.set(D.getAttribute("uv").array,U*2);let F=q.length;q.push(...D.getIndex().array.map(W=>W+U)),this.setAttribute("position",new Ra(B.positions,3)),this.setAttribute("normal",new Ra(B.normals,3)),this.setAttribute("uv",new Ra(B.uvs,2)),this.setIndex(q);let H=J3;H.copy(d[d.length-1]).setPosition(u[u.length-1]),this.applyMatrix4OnRange(H,U,V),H.copy(d[0]).setPosition(u[0]).multiply(eE.makeScale(1,1,-1)),this.applyMatrix4OnRange(H,U-g,U),this.reverseIndicesOnRange(j,F)}else this.setAttribute("position",new Ra(B.positions,3)),this.setAttribute("normal",new Ra(B.normals,3)),this.setAttribute("uv",new Ra(B.uvs,2)),this.setIndex(q)}_extractPathPoints(){let r=uu(this.inputs.path).getPoints(this.inputs.path.subdivisions);if(r.length<2)return[];let o=[r[0]];return r.forEach(a=>{o[o.length-1].distanceToSquared(a)>.001&&o.push(a)}),this.inputs.path.isClosed&&o[o.length-1].distanceTo(o[0])<.001&&o.pop(),o}_computeBasisMatrices(e){let r=[],o=e.length,n=this.inputs.path.isClosed,a=new _t,s=new _t,l=new _t,c=new _t,u=new _t(0,1,0);for(let y=0;y<o;y++){let x=e[y],v;y===0?v=n?e[e.length-2]:x.clone().multiplyScalar(2).sub(e[1]):v=e[y-1];let w;y===o-1?w=n?e[1]:x.clone().multiplyScalar(2).sub(e[y-1]):w=e[y+1];let O=x.clone().sub(v).normalize(),S=w.clone().sub(x).normalize(),T=O.clone().add(S).normalize();l.copy(T),y===0&&(T.equals(u)||T.clone().negate().equals(u))&&u.set(0,0,1);let M=u.clone().cross(T).normalize(),g=T.clone().cross(M).normalize();u.copy(g),c.copy(M),y===0&&(a.copy(g),s.copy(T));let D=new an().makeBasis(M,g,T);r.push(D)}let d=n?s:l,p=n?a:new _t(0,1,0),f=d.clone().cross(c).normalize(),h=Math.acos(p.dot(f));if(isNaN(h))return r;let m=p.clone().cross(f);d.dot(m)>0&&(h*=-1);for(let y=1;y<r.length;y++){let x=new an().makeRotationZ(h*y/r.length);r[y].multiply(x)}return r}_applyPathModifiers(e,r,o){let n=e.length,{angle:a,twist:s,startScale:l,endScale:c}=this.inputs.parameters.extrusion,u=new an,d=new an;return e.forEach((p,f)=>{let h=f===0?0:f===n-1?1:(f-r)/(n-(o===0?0:1)-(r+(1-o)));u.makeRotationZ(Du.lerp(a,a+s,h)*Du.DEG2RAD);let m=Du.lerp(l,c,h);d.makeScale(m,m,m),p.multiply(u).multiply(d)}),e}_computeShapePoints(e=12,r=Fe.ODD){let o=this.inputs.shapeData,n=o.extractShapePointsToFlatArray([],e),a=o.shapeHoles.map(m=>{let y=m.extractShapePointsToFlatArray([],e),x=[];for(let v=y.length-1;v>=1;v-=2){let w=y[v-1],O=y[v-0];x.push(w,O)}return x}),s;try{s=jr({windingRule:r,elementType:st.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[n]})}catch{s=ol}let l;try{l=jr({windingRule:Fe.ODD,elementType:st.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...a]})}catch{l=gf}if(!s)throw new Error("error generating geometry");let c=s.elementCount;if(l){s.elementCount+=l.elementCount;for(let m=0;m<l.elements.length;m++){let y=l.elements[m],x=m%2===0?s.vertexCount:0;s.elements.push(y+x)}for(let m=0;m<l.vertexIndices.length;m++){let y=l.vertexIndices[m],x=s.vertexCount;s.vertexIndices.push(y+x)}for(let m=0;m<l.vertices.length;m++){let y=l.vertices[m];s.vertices.push(y)}}let u=1/0,d=-1/0,p=1/0,f=-1/0;for(let m=0,y=s.vertexCount;m<y;m++){let x=m*2,v=s.vertices[x+0],w=s.vertices[x+1];v<u&&(u=v),v>d&&(d=v),w<p&&(p=w),w>f&&(f=w)}let h=[];for(let m=s.elementCount-1;m>=0;m--){let y=m>=c,x=m*2,v=s.elements[x+0],w=s.elements[x+1],O=v+w,S={start:v,count:w,normals:[],isHole:y,continuous:[],verticesStart:0,verticesCount:0};h.push(S);let T=v,M=O-1,g=v+1,D=o.roundedCurves.length;do{let E=T-v,I=s.vertices[M*2+0],N=s.vertices[M*2+1],_=s.vertices[T*2+0],R=s.vertices[T*2+1],V=s.vertices[g*2+0],U=s.vertices[g*2+1],B=_-I,q=R-N,j=Math.sqrt(B*B+q*q);B/=j,q/=j;let F=_-V,H=R-U,W=Math.sqrt(F*F+H*H);F/=W,H/=W,S.normals[E*2+0]=-H,S.normals[E*2+1]=F;let ee=s.vertexIndices[T];if(Array.isArray(ee))S.continuous[E]=!1;else{let[te,Y]=o.getCurveIndexFromVertexId(ee-1,!0);if(Y>0&&Y<1)S.continuous[E]=!0;else{let re=Y===1?te+1:te-1;re=(re+D)%D;let K=Y===1?0:1,Z=o.roundedCurves[te].getTangent(Y),Q=o.roundedCurves[re].getTangent(K);S.continuous[E]=Z.dot(Q)>.95}}y&&(S.normals[E*2+0]*=-1,S.normals[E*2+1]*=-1),[M,T,g]=[T,g,g+1],g>=O&&(g-=w)}while(g!==v+1)}return{regions:[n,...a],infos:h,vertices:s.vertices}}_insertVertex(e,r,o,n,a){let s=r*2,l=r*3;e.positions[l+0]=o.x,e.positions[l+1]=o.y,e.positions[l+2]=o.z,e.normals[l+0]=n.x,e.normals[l+1]=n.y,e.normals[l+2]=n.z,e.uvs[s+0]=a.x,e.uvs[s+1]=a.y}_extrudeRegion(e,r,o,n,a,s,l){let c=new _t,u=new _t,d=new _t,p=new _t,f=new Sb;o.forEach((m,y)=>{let x=n[y],v=e.verticesStart*o.length+e.verticesCount*y;for(let w=0;w<e.count;w++){let O=(e.start+w)*2;if(c.set(r[O+0],r[O+1],0),d.copy(c).applyMatrix4(m).add(x),e.continuous[w])p.set(e.normals[w*2+0],e.normals[w*2+1],0);else{let S=w===0?(e.start+e.count-1)*2:O-2;u.set(r[S+0],r[S+1],0),p.copy(c).sub(u),p.set(-p.y,p.x,0),e.isHole||p.negate()}if(p.applyMatrix4(m).normalize(),f.set(w===0?1:w/e.count,y/(o.length-1)),this._insertVertex(a,v,d,p,f),v++,!e.continuous[w]||w===0){if(w===0)p.set(e.normals[w*2+0],e.normals[w*2+1],0),f.set(0,y/(o.length-1));else{let S=w===e.count-1?e.start*2:O+2;u.set(r[S+0],r[S+1],0),p.copy(u).sub(c),p.set(-p.y,p.x,0),e.isHole||p.negate()}p.applyMatrix4(m).normalize(),this._insertVertex(a,v,d,p,f),v++}}});let h=o.length-1;for(let m=0;m<h;m++){let y=e.verticesStart*o.length+e.verticesCount*m,x=e.verticesStart*o.length+e.verticesCount*(m+1),v=0;for(let w=0;w<e.count;w++){(!e.continuous[w]||w===0)&&v++;let O=w===e.count-1?0:v+1,S=y+v,T=y+O,M=x+O,g=x+v;e.isHole?s.push(S,M,T,S,g,M):s.push(S,T,M,S,M,g),v++}}}_closeEnd(e,r,o,n,a,s,l){let c=e.vertexCount,u=new _t(0,0,l?-1:1).applyMatrix4(a),d=new _t,p=new Sb;for(let h=0;h<c;h++){let m=2*h;d.set(e.vertices[m+0],e.vertices[m+1],0).applyMatrix4(a).add(s),this._insertVertex(n,r+h,d,u,p)}let f=e.elements;for(let h=0;h<e.elementCount;h++){let m=3*h,y=f[m+0]+r,x=f[m+(l?1:2)]+r,v=f[m+(l?2:1)]+r;o.push(y,x,v)}}applyMatrix4OnRange(e,r,o){let n=e.elements,a=new Z3().getNormalMatrix(e).elements,s,l,c,u,d=this.attributes.position,p=this.attributes.normal;if(!d||!p)return;let f=d.array,h=p.array,m=d.itemSize;for(let y=r*m,x=o*m;y<x;y+=m){if(y===r)debugger;s=f[y+0],l=f[y+1],c=f[y+2],u=1/(n[3]*s+n[7]*l+n[11]*c+n[15]),f[y+0]=(n[0]*s+n[4]*l+n[8]*c+n[12])*u,f[y+1]=(n[1]*s+n[5]*l+n[9]*c+n[13])*u,f[y+2]=(n[2]*s+n[6]*l+n[10]*c+n[14])*u,s=h[y+0],l=h[y+1],c=h[y+2],h[y+0]=a[0]*s+a[3]*l+a[6]*c,h[y+1]=a[1]*s+a[4]*l+a[7]*c,h[y+2]=a[2]*s+a[5]*l+a[8]*c}d.needsUpdate=!0,p.needsUpdate=!0}reverseIndicesOnRange(e,r){let o=this.index;if(o){for(let n=e;n<r;n+=3){let a=o.getX(n),s=o.getX(n+1),l=o.getX(n+2);o.setXYZ(n,l,s,a)}o.needsUpdate=!0}}};import{BufferAttribute as Ob,BufferGeometry as Rf}from"three";import{mergeBufferGeometries as oE}from"three/examples/jsm/utils/BufferGeometryUtils.js";function Tb(){let i=new Rf;return i.setAttribute("position",new Ob(new Float32Array([]),3)),i.setIndex(new Ob(new Uint16Array([]),1)),i}var iE=Tb().attributes,nE=12,aE=1,sn=class extends Rf{constructor(e,r){super();this.charWidths=[];this.charCoords=[];this.wrappedText=[];this.isLowResolution=!1;this.vectorShapes=[];Object.assign(this.attributes,iE),this.userData={parameters:e,type:"TextGeometry"};let o=r.getFont(e.font);o?.isLoaded?(this.font=o,this.update(e,r)):this.updateFont(e.font,r).then(()=>{this.update(e,r),r?.requestRender()})}async updateFont(e,r){let o=r.getFont(e);o&&(this.font=o,await o.loadingPromise)}update(e,r){let o=this.font;if(this.userData={parameters:e,type:"TextGeometry"},!o?.isLoaded){console.warn("Cannot update text because its font is not loaded");return}let{width:n,height:a,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c,text:u,textTransform:d}=e,p=gi.getDisplayedValue(u),f=d===2?p.toUpperCase():d===3?p.toLowerCase():p,h=sE(e,o,f,r),{shapes:m,charWidths:y,charCoords:x}=o.generateShapes(h,e,r),v=(typeof n=="number"?n:Number(r.getVariable(n)))*.5,w=(typeof a=="number"?a:Number(r.getVariable(a)))*.5,O=m.map(M=>new je().fromShape(M,!0));this.vectorShapes=O;let S=O.map(M=>tr.create({shape:M,parameters:{depth:s,extrudeBevelSegments:c,extrudeBevelSize:l,windingRule:s<=0?Fe.NONZERO:Fe.ODD,subdivisions:this.isLowResolution&&s>0?aE:nE}})),T=S.length?oE(S):Tb();T.translate(-v,w,0),this.dispose(),this.wrappedText=h,this.charCoords=x,this.charWidths=y,this.deleteAttribute("extrudeNormal"),Object.entries(T.attributes).forEach(([M,g])=>{this.setAttribute(M,g)}),this.setIndex(T.index),this.computeBoundingSphere()}clone(){let e=Pt(new Rf,sn.prototype);return e.copy(this),console.log("CloneGeometry",this,e),e}copy(e){return Object.entries(e.attributes).forEach(([r,o])=>{this.setAttribute(r,o)}),this.setIndex(e.index),this.userData={parameters:{...e.userData.parameters},type:"TextGeometry"},this}async setText(e,r){this.font&&await this.font.loadingPromise,await this.update({...this.userData.parameters,text:{textValue:e}},r)}get text(){return this.userData.parameters.text??""}};function sE(i,t,e,r){let o=typeof i.width=="string"?Number(r.getVariable(i.width)):i.width,n=[""],a="";for(let s of e)a+=s,s===" "||s===`
|
|
17
17
|
`?(n[n.length-1]+=a,a="",s===`
|
|
18
|
-
`&&n.push("")):t.getTextWidth(n[n.length-1]+a,i)>o&&(n[n.length-1].length&&n.push(""),t.getTextWidth(n[n.length-1]+a,i)>o&&(a.length===1?(n[n.length-1]+=a,a=""):(n[n.length-1]+=a.slice(0,-1),a=a[a.length-1],n.push(""))));return n[n.length-1]+=a,n}import{BufferGeometry as Lf,BufferAttribute as Mb,Uint32BufferAttribute as Bf,Float32BufferAttribute as Vf,Matrix4 as dE,Vector3 as cl,Sphere as pE,Box3 as fE,BoxGeometry as hE}from"three";var Cb,_u=new Promise(i=>{Cb=i}),Tb=!1;var Du;function Ab(i){if(Tb)return;if(Du)return Du;async function t(){let r=i??(!1?".":"https://unpkg.com/@splinetool/modelling-wasm@1.10.88/build"),n=import("./process.js"),[a,s]=await Promise.all([n,fetch(`${r}/process.wasm`).then(u=>u.arrayBuffer())]),l=a.default,c=await l({wasmBinary:s});Cb(c),Tb=!0}return Du=t(),Du}import{BufferGeometryLoader as sE}from"three";var lE=["font"];function uo(i,t,e,r){let o,n,a;i.type==="PathGeometry"?(n=JSON.parse(JSON.stringify(i)),a=[[],["extrusion"]]):(n={...i},a=[[]]);for(let c of a){let u=n;for(let p of c)u=u[p];for(o in u){let p=u[o];wp(p)&&!lE.includes(o)&&(u[o]=t.getVariable(p,[r.uuid,"geometry",...c,o]),wp(u[o])&&(u[o]=1))}}let s={parameters:n,type:n.type};if(n.type==="PathGeometry")s.path=n.path;else if(n.type==="VectorGeometry"){let c=je.createFromState(n.shape,n.width,n.height);s.shape=c}else if(n.type==="NonParametricGeometry"){if(n.data.groups&&n.data.groups?.forEach(c=>c.materialIndex=Math.max(c.materialIndex??0,0)),s.geometry=new sE().parse(n),s.geometry.groups.length===0){let c=s.geometry;c.addGroup(0,Math.max(c.getIndex()?.count??0,c.getAttribute("position").count),0)}}else if(n.type==="SubdivGeometry"){let c=new xt(n,e);return c.data=i,c}else{if(n.type==="TextGeometry")return new an(n,t);if(n.type==="InputGeometry")return new an(n,t);if(n.type==="UIGeometry")return Da.create({parameters:{width:n.width,height:n.height,cornerRadius:n.cornerRadius,cornerType:n.cornerType}})}let l;try{l=Rf(s)}catch(c){console.error(c),console.error(`Error generating geometry with inputs: ${s}`);let u=je.createFromState(sa.defaultData(),100,100);s.shape=u,s.type="VectorGeometry",l=Rf(s)}return l}import{Matrix4 as cE}from"three";var uE=new cE;function ll(i,t,e,r){let o=i.position.array,n=i.normal.array,a=uE.makeScale(t,e,r).invert().elements,s,l,c;for(var u=0,p=o.length;u<p;u+=3)o[u]*=t,o[u+1]*=e,o[u+2]*=r,s=n[u],l=n[u+1],c=n[u+2],n[u]=a[0]*s+a[4]*l+a[8]*c,n[u+1]=a[1]*s+a[5]*l+a[9]*c,n[u+2]=a[2]*s+a[6]*l+a[10]*c;i.position.needsUpdate=!0,i.normal.needsUpdate=!0}var Ru=new fE,Ra=new cl,Se;_u.then(i=>{Se=i});var Ib=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),Eb=new Uint32Array([0,1,2,3]),Nb=new Uint8Array([4]),xt=class extends Lf{constructor(e,r){super();this.data=e;this.flatShading=r;this.subdivPointer=0;this.rebuild(),this.freeSubdivPointer()}mutateDirectlyScaleBaked(e,r){this.freeSubdivPointer();let o=this.data.scaleBaked,n=ui.div(r,o);if(n.every(l=>l===1))return;this.subdividedGeometry&&ll(this.subdividedGeometry.attributes,...n),this.originalGeometry&&ll(this.originalGeometry.attributes,...n),this.data=e;let a=this.userData.parameters;this.userData.parameters={width:a.width*n[0],height:a.height*n[1],depth:a.depth*n[2]},this.originalGeometry.boundingSphere.center.multiply(Ra.fromArray(n));let s=Ra.set(a.width,a.height,a.depth).length();this.originalGeometry.boundingSphere.radius=s/2}ensureSubdivPointer(){return this.subdivPointer===0&&this.rebuild(),this.subdivPointer}rebuild(){let e,r,o;try{({originalGeometry:e,subdividedGeometry:r,subdivPointer:o}=xt.build(this.data,void 0,!this.flatShading,void 0))}catch{e=new hE(100,100,100),o=0}this.subdivPointer=o,this.originalGeometry=e,this.subdividedGeometry=r??void 0;let n=this.subdividedGeometry??this.originalGeometry;Object.assign(this,n),this.calcBoundingBox()}freeSubdivPointer(){this.subdivPointer&&(xt.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0)}dispose(){super.dispose(),this.freeSubdivPointer()}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new pE,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let r=e.attributes.position,o=e.boundingSphere.center;Ru.setFromBufferAttribute(r),Ru.getCenter(o),e.boundingSphere.radius=o.distanceTo(Ru.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),Ru.getSize(Ra);let n={width:Ra.x,height:Ra.y,depth:Ra.z};return this.userData.parameters=n,n}static build(e,r,o,n){let a,s,l,c=e?.phongAngle??35;o===!1&&(c=-1),r&&(Se.free_bvh(r),Se.free_subdivision_surface(r));try{a=xt.allocate(e,n)}catch(u){console.error(u,e),a=xt.allocate({positionWASM:Ib,indexWASM:Eb,verticesPerFaceWASM:Nb},n)}if(Se.set_destination_refinement_level(a,0),s=xt.buildLevel(a,!0,c),e.subdivisions>0)try{Se.set_destination_refinement_level(a,e.subdivisions),l=xt.buildLevel(a,!1,c)}catch{try{Se.set_destination_refinement_level(a,e.subdivisions-1),l=xt.buildLevel(a,!1,c)}catch{l=null}}else l=null;return{subdivPointer:a,originalGeometry:s,subdividedGeometry:l}}static primitiveToQuads(e,r,o){e.widthSegments>16&&(e.widthSegments=16),e.heightSegments>16&&(e.heightSegments=16),e.depthSegments>16&&(e.depthSegments=16),e.radialSegments>16&&(e.radialSegments=16),e.type==="DodecahedronGeometry"&&(e.detail=0);let n=e.shape!==void 0||e.path!==void 0?r.geometry:uo(e,o,!1,r),a;e.type==="TorusGeometry"&&e.arc===Math.PI*2?a=n.getClosedTorusIndicesForBooleanOrSubdiv():a=n.getIndex();let s,l,c,u;({positions:s,triIndices:u}=jf(n.getAttribute("position"),a));let p;if(e.type==="CylinderGeometry"&&e.cornerRadius===0&&e.hollow===0&&e.openEnded===!1){let d=e.radialSegments*e.heightSegments*3*2,f=d+e.radialSegments*3;p=[d,f]}return{indices:l,verticesPerFace:c}=Uf(s,u,n,p),{positions:s,indices:l,verticesPerFace:c}}static allocate(e,r){let o,n,a,s=[],l=[];e.positionWASM&&e.positionWASM.length>0?(o=e.positionWASM,n=e.indexWASM,a=e.verticesPerFaceWASM):(o=Ib,n=Eb,a=Nb);let c=o.length,u=n.length,p=a.length,d=o.length+s.length+l.length,f=n.length+a.length,h=d*Float32Array.BYTES_PER_ELEMENT+f*Uint32Array.BYTES_PER_ELEMENT,m=d*Float32Array.BYTES_PER_ELEMENT,y=f*Uint32Array.BYTES_PER_ELEMENT,b=Se._malloc(h),v=new Float32Array(Se.HEAPF32.buffer,b,d),w=new Uint32Array(Se.HEAPU32.buffer,b+m,f);v.set(o,0),v.set(s,o.length),v.set(l,o.length+s.length),w.set(n,0),w.set(a,n.length);let O;e?.scaleBaked?.some(T=>T!==1)&&(O=new dE().makeScale(...e.scaleBaked)),r&&(O?O.premultiply(r):O=r);let S=O?Se.alloc_subdivision_surface2(b,c,b+m,u,b+m+n.length*Uint32Array.BYTES_PER_ELEMENT,p,O.elements):Se.alloc_subdivision_surface(b,c,b+m,u,b+m+n.length*Uint32Array.BYTES_PER_ELEMENT,p);return Se._free(b),S}static buildLevel(e,r,o,n,a){let s=a?Se.get_mesh_data2(e,r?Se.Level.CONTROL:Se.Level.REFINED,o,a.elements):Se.get_mesh_data(e,r?Se.Level.CONTROL:Se.Level.REFINED,o),l=8,c=Se.HEAPU32.subarray(s>>2,(s>>2)+l),u=c.subarray(4,4+4),p=0,d=Se.HEAPU32[c[p]>>2],f=Se.HEAPF32.subarray(d>>2,(d>>2)+u[p]);p++;let h=Se.HEAPU32[c[p]>>2],m=Se.HEAPF32.subarray(h>>2,(h>>2)+u[p]);p++;let y=Se.HEAPU32[c[p]>>2],b=Se.HEAPU32.subarray(y>>2,(y>>2)+u[p]);p++;let v=Se.HEAPU32[c[p]>>2],w=Se.HEAPU32.subarray(v>>2,(v>>2)+u[p]);if(p++,n===void 0){let O=new Lf;if(O.setIndex(new Bf(w,1)),O.setAttribute("position",new Vf(f,3)),O.setAttribute("normal",new Vf(m,3)),r){O.setAttribute("faceMap",new Bf(b,1));let S=new Float32Array(m.length/3*4).fill(0);O.setAttribute("color",new Mb(S,4))}return Se.free_mesh_data(s),O.userData.type="SubdivGeometry",O}n.getAttribute("position").copyArray(f),n.getAttribute("normal").copyArray(m),n.attributes.position.needsUpdate=!0,n.attributes.normal.needsUpdate=!0,Se.free_mesh_data(s)}static freeSubdivPointer(e){Se.free_bvh(e),Se.free_subdivision_surface(e)}static buildControlCageWireframe(e,r,o){let n=Se.get_wireframe_data_for_base_level(e),a=4,s=Se.HEAPU32.subarray(n>>2,(n>>2)+a),l=s.subarray(2,2+2),c=0,u=Se.HEAPU32[s[c]>>2],p=Se.HEAPF32.subarray(u>>2,(u>>2)+l[c]);c++;let d=Se.HEAPU32[s[c]>>2],f=Se.HEAPU32.subarray(d>>2,(d>>2)+l[c]);if(r===void 0){let h=new Lf;h.setAttribute("position",new Vf(p,3));let m=new Float32Array(p.length);for(let y=0,b=p.length;y<b;)m[y++]=o.r,m[y++]=o.g,m[y++]=o.b;return h.setAttribute("color",new Mb(m,3)),h.setIndex(new Bf(f,1)),Se.free_wireframe_data_for_base_level(n),h}r.getAttribute("position").copyArray(p),r.attributes.position.needsUpdate=!0,Se.free_wireframe_data_for_base_level(n)}static updateCollabMesh(e,r,o){let n=r===0;n||Se.set_destination_refinement_level(e,r);let a=o?Se.get_topological_data2(e,n?Se.Level.CONTROL:Se.Level.REFINED,o.elements):Se.get_topological_data(e,n?Se.Level.CONTROL:Se.Level.REFINED),s=6,l=Se.HEAPU32.subarray(a>>2,(a>>2)+s),c=l.subarray(3,3+3),u=0,p=Se.HEAPU32[l[u]>>2],d=new Float32Array(Se.HEAPF32.subarray(p>>2,(p>>2)+c[u]));u++;let f=Se.HEAPU32[l[u]>>2],h=new Uint32Array(Se.HEAPU32.subarray(f>>2,(f>>2)+c[u]));u++;let m=Se.HEAPU32[l[u]>>2],y=new Uint8Array(Se.HEAPU32.subarray(m>>2,(m>>2)+c[u]));return Se.free_topological_data(a),{positions:d,indices:h,verticesPerFace:y}}};var Db=["getX","getY","getZ"];function jf(i,t){let e={},r=t?t.count:i.count,o=0,n=[],a=[],s=1e4;for(let c=0;c<r;c++){let u=t?t.getX(c):c,p="";for(let d=0;d<3;d++)p+=`${~~(i[Db[d]](u)*s)},`;if(p in e)n.push(e[p]);else{for(let d=0;d<3;d++)a.push(i[Db[d]](u));e[p]=o,n.push(o),o++}}let l=[];for(let c=0;c<n.length;c+=3)n[c]===n[c+1]||n[c]===n[c+2]||n[c+1]===n[c+2]||l.push(n[c],n[c+1],n[c+2]);return{positions:a,triIndices:l}}var Lu=new cl,zf=new cl,Gf=new cl,Ff=new cl;function Uf(i,t,e,r){let o=[],n=[];if(e.userData.shape!==void 0&&e.userData.parameters.depth===0&&e.userData.shape.shapeHoles.length===0){let l=e.userData.shape.extractShapePointsToFlatArray([]),c=e.userData.parameters.spikes;if(e.userData.type==="EllipseGeometry"&&c<=24&&c%4===0&&e.userData.parameters.angle>=360){let d=l.length/2/c;l=l.filter((f,h)=>Math.floor(h/2)%d===0)}let u=0;for(let d=0;d<l.length;d+=2)u+=(l[d]-l[(d===0?l.length:d)-2])*(l[d+1]+l[(d===0?l.length:d)-1]);i.length=0;let p=0;if(u<0)for(let d=0;d<l.length;d+=2)i.push(l[d],l[d+1],0),o.push(p++);else for(let d=l.length-2;d>=0;d-=2)i.push(l[d],l[d+1],0),o.push(p++);return n.push(p),{indices:o,verticesPerFace:n}}let a=new Float32Array([e.userData.parameters.depth])[0],s=0;for(;s<t.length;){if(e.useNgonForTopBottomFaceDuringBake){let l=0;if((i[t[s]*3+2]===a||i[t[s]*3+2]===0)&&l++,(i[t[s+1]*3+2]===a||i[t[s+1]*3+2]===0)&&l++,(i[t[s+2]*3+2]===a||i[t[s+2]*3+2]===0)&&l++,l===3)break}if(t[s+1]===t[s+3]&&t[s+2]===t[s+5]||t[s+0]===t[s+3]&&t[s+2]===t[s+4]){Lu.set(i[t[s]*3],i[t[s]*3+1],i[t[s]*3+2]),zf.set(i[t[s+1]*3],i[t[s+1]*3+1],i[t[s+1]*3+2]),Gf.set(i[t[s+4]*3],i[t[s+4]*3+1],i[t[s+4]*3+2]),Ff.set(i[t[s+5]*3],i[t[s+5]*3+1],i[t[s+5]*3+2]),zf.sub(Lu).normalize(),Gf.sub(Lu).normalize(),Ff.sub(Lu).normalize();let l=zf.cross(Gf).dot(Ff);Math.abs(l)>.005||r&&r.some((c,u)=>u%2===1?!1:s>=r[u]&&s<r[u+1])?(o.push(t[s],t[s+1],t[s+2]),n.push(3),s+=3):(o.push(t[s],t[s+1],t[s+4],t[s+5]),n.push(4),s+=6)}else o.push(t[s],t[s+1],t[s+2]),n.push(3),s+=3}if(e.useNgonForTopBottomFaceDuringBake){let l=[],c=[],u=0;for(let p=0,d=0;p<i.length;p+=3,d++)i[p+2]===0&&(l.push(d),u++),i[p+2]===a&&c.push(d);if(e.userData.parameters.extrudeBevelSize===0){let p=c[0];c[0]=c[1],c[1]=p}l.reverse(),o.push(...l,...c),n.push(u,u)}return{indices:o,verticesPerFace:n}}var wr={};fw(wr,{calcBoolean:()=>bE,calcBooleanTopological:()=>xE,freeMeshSet:()=>PE,getMeshSet:()=>vE,hasOpenEdges:()=>SE,transformMeshSet:()=>wE});var mE,_b=new Promise(i=>{mE=i});import{Float32BufferAttribute as Rb,Sphere as yE}from"three";var Be,La;_b.then(i=>Be=i);function gE(i,t,e){let r,o;i.userData.parameters.type==="TorusGeometry"&&i.userData.parameters.arc===Math.PI*2?o=i.getClosedTorusIndicesForBooleanOrSubdiv():o=i.getIndex();let{positions:n,triIndices:a}=jf(i.getAttribute("position"),o),s;if(t&&e){let{indices:l,verticesPerFace:c}=Uf(n,a,i);s=c.length,r=[];for(let u=0,p=0;u<s;u++){r.push(c[u]);for(let d=0;d<c[u];d++)r.push(l[p++])}}else{let l=a.length;r=Array(l+l/3),s=0;for(let c=0,u=0;u<r.length;)r[u++]=3,s++,r[u++]=a[c++],r[u++]=a[c++],r[u++]=a[c++]}return{positions:n,faceIndices:r,nFaces:s}}function Lb(i){let t=i.length,e=t*Uint32Array.BYTES_PER_ELEMENT,r=t*Float32Array.BYTES_PER_ELEMENT,o=Number.isInteger(i[0])?e:r,n=Be._malloc(o);return(Number.isInteger(i[0])?new Uint32Array(Be.HEAPU32.buffer,n,t):new Float32Array(Be.HEAPF32.buffer,n,t)).set(i,0),n}function Bb(i){switch(i){case 0:return Be.OP.UNION;case 1:return Be.OP.INTERSECTION;case 2:return Be.OP.A_MINUS_B;default:throw new Error("Unknown boolean operation "+i)}}function xE(i,t){La===void 0&&(La=Be.init_csg());let e=Lb(i),r=Be.csg_calc_topological(La,e,i.length,Bb(t));Be._free(e);let o=6,n=Be.HEAPU32.subarray(r>>2,(r>>2)+o),a=n.subarray(3,3+3),s=0,l=Be.HEAPU32[n[s]>>2],c=new Float32Array(Be.HEAPF32.subarray(l>>2,(l>>2)+a[s]));s++;let u=Be.HEAPU32[n[s]>>2],p=new Uint32Array(Be.HEAPU32.subarray(u>>2,(u>>2)+a[s]));s++;let d=Be.HEAPU32[n[s]>>2],f=new Uint8Array(Be.HEAPU32.subarray(d>>2,(d>>2)+a[s]));return Be.free_mesh_data(r),{positions:c,indices:p,verticesPerFace:f}}function bE(i,t,e,r){La===void 0&&(La=Be.init_csg());let o=Lb(i),n=Be.csg_calc(La,o,i.length,r,Bb(t));Be._free(o);let a=5,s=Be.HEAPU32.subarray(n>>2,(n>>2)+a),l=s.subarray(2,2+3),c=0,u=Be.HEAPU32[s[c]>>2],p=Be.HEAPF32.subarray(u>>2,(u>>2)+l[c]);c++;let d=Be.HEAPU32[s[c]>>2],f=Be.HEAPF32.subarray(d>>2,(d>>2)+l[c]);c++;let h=l[c];e.setAttribute("position",new Rb(p,3)),e.setAttribute("normal",new Rb(f,3));let m=Be.HEAPF32.subarray((n>>2)+5,(n>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new yE),e.boundingSphere.center.set(m[0],m[1],m[2]),e.boundingSphere.radius=(m[3]**2+m[4]**2+m[5]**2)**.5,e.userData.parameters={width:m[3]*2,height:m[4]*2,depth:m[5]*2},Be.free_mesh_data(n),h}function vE(i,t,e){if(Be===void 0)return-1;let r,o,n;if(t&&i.userData.positions!==void 0){let b=i.userData;n=b.verticesPerFace.length,r=b.positions,o=Array(b.verticesPerFace.reduce((v,w)=>v+w,0)+n);for(let v=0,w=0,O=0;v<b.verticesPerFace.length;v++){o[O++]=b.verticesPerFace[v];for(let S=0;S<b.verticesPerFace[v];S++)o[O++]=b.indices[w++]}}else({positions:r,faceIndices:o,nFaces:n}=gE(i,t,e));let a=r.length,s=o.length,l=r.length,c=o.length,u=l*Float32Array.BYTES_PER_ELEMENT+c*Uint32Array.BYTES_PER_ELEMENT,p=l*Float32Array.BYTES_PER_ELEMENT,d=c*Uint32Array.BYTES_PER_ELEMENT,f=Be._malloc(u),h=new Float32Array(Be.HEAPF32.buffer,f,l),m=new Uint32Array(Be.HEAPU32.buffer,f+p,c);h.set(r,0),m.set(o,0);let y=Be.get_csg_mesh(f,a,f+p,s,n);return Be._free(f),y}function SE(i){return Be.has_open_edges(i)}function wE(i,t){Be.transform_csg_mesh(i,t.elements)}function PE(i){Be.free_csg_mesh(i)}var OE={ConeGeometry:gx,CubeGeometry:xx,CylinderGeometry:yx,DodecahedronGeometry:bx,EllipseGeometry:Ma,HelixGeometry:Yx,IcosahedronGeometry:Kx,LatheGeometry:Qx,NonParametricGeometry:sb,PolygonGeometry:Mu,PyramidGeometry:lb,RectangleGeometry:Da,SphereGeometry:ub,PlaneGeometry:db,BackdropGeometry:pb,StarGeometry:Iu,TextFrameGeometry:fb,TorusGeometry:hb,TorusKnotGeometry:mb,TriangleGeometry:yb,PathGeometry:wb,VectorGeometry:er},Rf=i=>OE[i.type].create(i);function Ba(i){return i!==null&&"booleanOp"in i}var Va=class extends va(CE){constructor(){super(...arguments);this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new TE}updateVisible(e){super.updateVisible(e),this.visible=!Ba(this.parent)&&this.visible,Ba(this.parent)&&this.parent.invalidateDownstreamBooleanData()}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(wr.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),Ba(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)e instanceof Va&&(e.freeBooleanPointer(),Ba(e)&&e.invalidateUpstreamBooleanData())}updateTransformState(e,r){let o=super.updateTransformState(e,r);return o&&Ba(this.parent)&&this.invalidateDownstreamBooleanData(!0),o}onVariableUpdate(e=!1){super.onVariableUpdate(e),Ba(this.parent)&&this.invalidateDownstreamBooleanData(!0)}};var Bu=new AE;function ul(i,t=0,e=i.count,r,o){let n=1/0,a=1/0,s=1/0,l=-1/0,c=-1/0,u=-1/0;for(let p=t;p<e;p++){let d=i.getX(p),f=i.getY(p),h=i.getZ(p);d<n&&(n=d),f<a&&(a=f),h<s&&(s=h),d>l&&(l=d),f>c&&(c=f),h>u&&(u=h)}Bu.min.set(n,a,s),Bu.max.set(l,c,u),Bu.getCenter(r),Bu.getSize(o).multiplyScalar(.5)}var EE=new ME,NE=new IE,Mt=class extends Va{constructor(t,e){super(EE,NE),this.super_Entity(t,e)}updateState(t,e){this.updateState_Entity(t,e)}updateEntityBoxSize(t,e){let r=this.geometry.getAttribute("position");r!==void 0?ul(r,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:r.count,t,e):super.updateEntityBoxSize(t,e)}};import{Box3 as JN,Matrix4 as eD,Sphere as Iv,Vector3 as tD}from"three";import{BufferAttribute as KN,Float32BufferAttribute as Mv,MathUtils as gh,Vector3 as xh}from"three";import{ShaderMaterial as MN}from"three";var Uo=class{constructor(t){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};if(Uo.uuidContext===null)throw new Error("plz startContext");Uo.uuidContext===Uo.globalContext?this.uuid="_gid"+Uo.uuidContext.nodeContextUuid++:this.uuid="_uid"+Uo.uuidContext.nodeContextUuid++,this.type=t,this.name=""}static startContext(t){this.uuidContext===null||this.uuidContext===Uo.globalContext?this.uuidContext=t:console.error("Can't start context twice")}static endContext(t){this.uuidContext!==t&&console.error("Can't end context twice"),this.uuidContext=null}analyze(t,e){e=e??{},t.analyzing=!0,this.build(t.addFlow(e.slot,e.cache,e.context),"v4"),t.clearVertexNodeCode(),t.clearFragmentNodeCode(),t.removeFlow(),t.analyzing=!1}analyzeAndFlow(t,e,r){return r=r??{},this.analyze(t,r),this.flow(t,e,r)}flow(t,e,r){r=r??{},t.addFlow(r.slot,r.cache,r.context);let o={result:this.build(t,e),code:t.clearNodeCode(),extra:t.context.extra};return t.removeFlow(),o}build(t,e,r){e=e??this.getType(t,e);let o=t.getNodeData(r??this);return t.analyzing&&this.appendDepsNode(t,o,e),t.nodes.indexOf(this)===-1&&t.nodes.push(this),this.updateFrame!==void 0&&t.updaters.indexOf(this)===-1&&t.updaters.push(this),this.generate(t,e,r)}updateFrame(t){}generateReadonly(t,e,r,o,n,a){return""}generate(t,e,r,o,n){return""}parse(t,e,r,o){}appendDepsNode(t,e,r){e.deps=(e.deps||0)+1;let o=t.getTypeLength(r);(o>(e.outputMax||0)||this.getType(t,r))&&(e.outputMax=o,e.output=r)}setName(t){this.name=t}getName(){return this.name}getType(t,e){return e==="sampler2D"||e==="samplerCube"?e:this.type}},$e=Uo;$e.globalContext={nodeContextUuid:0},$e.uuidContext=Uo.globalContext;import{CubeReflectionMapping as jE,CubeRefractionMapping as UE,CubeUVReflectionMapping as kE,LinearEncoding as qb,sRGBEncoding as HE}from"three";var dl=class{constructor(t){t=t??{},this.name=t.name,this.type=t.type,this.node=t.node,this.size=t.size,this.needsUpdate=t.needsUpdate}get value(){return this.node.value}set value(t){this.node.value=t}};var kf=class{constructor(){this.nodes={};this.keywords={}}add(t){this.nodes[t.name]=t}addKeyword(t,e,r){r=r!==void 0?r:!0,this.keywords[t]={callback:e,cache:r}}remove(t){delete this.nodes[t.name]}removeKeyword(t){delete this.keywords[t]}get(t){return this.nodes[t]}getKeyword(t,e){return this.keywords[t].callback(e)}getKeywordData(t){return this.keywords[t]}contains(t){return this.nodes[t]!==void 0}containsKeyword(t){return this.keywords[t]!==void 0}},It=new kf;import{Vector2 as Vb}from"three";import{MathUtils as DE}from"three";var ge=class extends $e{constructor(e,r){super(e);this.scope="";r=r??{},this.shared=r.shared!==void 0?r.shared:!0,this.unique=r.unique!==void 0?r.unique:!1}build(e,r,o,n){if(r=r??this.getType(e),this.getShared(e,r)){let a=this.getUnique(e,r);a&&this.uuid===void 0&&(this.uuid=DE.generateUUID()),o=e.getUUID(o??this.getUUID(),!a);let s=e.getNodeData(o),l=s.output||this.getType(e);if(e.analyzing)return(s.deps||0)>0||this.getLabel()?(this.appendDepsNode(e,s,r),this.generate(e,r,o)):super.build(e,r,o);if(a)return s.name=s.name||super.build(e,r,o),s.name;if(!this.getLabel()&&(!this.getShared(e,l)||e.context.ignoreCache||s.deps===1))return super.build(e,r,o);o=this.getUUID(!1);let c=this.getTemp(e,o);if(c)return e.format(c,l,r);{c=super.generate(e,r,o,s.output,n);let u=this.generate(e,l,o);return e.addNodeCode(c+" = "+u+";"),e.format(c,l,r)}}return super.build(e,r,o)}getShared(e,r){return r!=="sampler2D"&&r!=="samplerCube"&&this.shared}getUnique(e,r){return this.unique}setLabel(e){return this.label=e,this}getLabel(){return this.label}getUUID(e){let r=this.uuid;return typeof this.scope=="string"&&(r=this.scope+"-"+r),r}getTemp(e,r){r=r||this.uuid;let o=e.getVars()[r];return o?o.name:void 0}generate(e,r,o,n,a){return this.getShared(e,r)||console.error("TempNode is not shared"),o=o??this.uuid,e.getTempVar(o,n??this.getType(e),a,this.getLabel()).name}};var Xe=class extends ge{constructor(e,r){r=r??{},r.shared=r.shared!==void 0?r.shared:!1;super(e,r);this.readonly=!1}setReadonly(e){return this.readonly=e,this.hashProperties=this.readonly?["value"]:void 0,this}getReadonly(){return this.readonly}generate(e,r,o,n,a,s){o=e.getUUID(o??this.getUUID()),n=n??this.getType(e);let l=e.getNodeData(o);return this.getReadonly()&&this.generateReadonly!==void 0?this.generateReadonly(e,r,o,n,a,s):e.isShader("vertex")?(l.vertex||(l.vertex=e.createVertexUniform(n,this,a,s,this.getLabel())),e.format(l.vertex.name,n,r)):(l.fragment||(l.fragment=e.createFragmentUniform(n,this,a,s,this.getLabel())),e.format(l.fragment.name,n,r))}};var lt=class extends Xe{constructor(e=0,r){super("v2");this.nodeType="Vector2";this.value=e instanceof Vb?e:new Vb(e,r)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}generateReadonly(e,r,o,n,a,s){return e.format("vec2("+this.value.x+", "+this.value.y+")",n,r)}};import{Vector3 as zb}from"three";var Gt=class extends Xe{constructor(e=0,r,o){super("v3");this.nodeType="Vector3";this.value=e instanceof zb?e:new zb(e,r,o)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}get z(){return this.value.z}set z(e){this.value.z=e}generateReadonly(e,r,o,n,a,s){return e.format("vec3("+this.value.x+", "+this.value.y+", "+this.value.z+")",n,r)}};var tr=class extends Xe{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof Ct?e:new Ct(e.r,e.g,e.b,e.a)}generateReadonly(e,r,o,n,a,s){return e.format("vec4("+this.value.r+", "+this.value.g+", "+this.value.b+", "+this.value.a+")",n,r)}};var _E=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,Gb=/[a-z_0-9]+/gi,J=class extends ge{constructor(e,r,o,n,a){super(a);this.src="";this.nodeType="Function";this.useKeywords=!0;this.includes=[];this.extensions={};this.keywords={};this.isMethod=a===void 0,this.isInterface=!1,this.parse(e,r,o,n)}getShared(e,r){return!this.isMethod}getType(e){return e.getTypeByFormat(this.type)}getInputByName(e){if(this.inputs){let r=this.inputs.length;for(;r--;)if(this.inputs[r].name===e)return this.inputs[r]}}getIncludeByName(e){if(this.includes){let r=this.includes.length;for(;r--;)if(this.includes[r].name===e)return this.includes[r]}}generate(e,r,o,n,a){let s,l=0,c=this.src;if(this.includes)for(let p=0;p<this.includes.length;p++)e.include(this.includes[p],this);for(let p in this.extensions)e.extensions[p]=!0;let u=[];for(;s=Gb.exec(this.src);)u.push(s);for(let p=0;p<u.length;p++){let d=u[p],f=d[0],h=this.isMethod?!this.getInputByName(f):!0,m=f;if(this.keywords[f]||this.useKeywords&&h&&It.containsKeyword(f)){let y=this.keywords[f];if(!y){let b=It.getKeywordData(f);b.cache&&(y=e.keywords[f]),y=y||It.getKeyword(f,e),b.cache&&(e.keywords[f]=y)}m=y.build(e)}f!==m&&c[d.index+l-1]!=="."&&(c=c.substring(0,d.index+l)+m+c.substring(d.index+f.length+l),l+=m.length-f.length),this.getIncludeByName(m)===void 0&&It.contains(m)&&e.include(It.get(m))}return r==="source"?c:this.isMethod?(this.isInterface||e.include(this,void 0,c),this.name):e.format("( "+c+" )",this.getType(e),r)}parse(e,r,o,n){if(this.src=e||"",this.includes=r??[],this.extensions=o??{},this.keywords=n??{},this.isMethod){let a=_E.exec(this.src);if(this.inputs=[],a&&a.length==4){this.type=a[1],this.name=a[2];let s=a[3].match(Gb);if(s){let l=0;for(;l<s.length;){let c=s[l++],u;c==="in"||c==="out"||c==="inout"?u=s[l++]:(u=c,c="");let p=s[l++];this.inputs.push({name:p,type:u,qualifier:c})}}this.isInterface=this.src.indexOf("{")===-1}else this.type="",this.name=""}}};var RE=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,Hf=class extends ge{constructor(e="",r){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||Hf.PI,void 0,void 0,void 0,r)}getType(e){return e.getTypeByFormat(this.type)}parse(e,r,o,n,a){this.src=e||"";let s,l,c="",u=RE.exec(e);this.useDefine=a??this.src.charAt(0)==="#",u&&u.length>1?(l=u[1],s=u[2],c=u[3]):(s=this.src,l="f"),this.name=s,this.type=l,this.value=c}build(e,r){if(r==="source"){if(this.value)return this.useDefine?"#define "+this.name+" "+this.value:"const "+this.type+" "+this.name+" = "+this.value+";";if(this.useDefine)return this.src}return e.include(this),e.format(this.name,this.getType(e),r)}generate(e,r,o,n,a){return e.format(this.name,this.getType(e),r)}},Ge=Hf;Ge.PI="PI",Ge.PI2="PI2",Ge.RECIPROCAL_PI="RECIPROCAL_PI",Ge.RECIPROCAL_PI2="RECIPROCAL_PI2",Ge.LOG2="LOG2",Ge.EPSILON="EPSILON";var LE=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
|
|
19
|
-
)*?)}`,"gim"),
|
|
18
|
+
`&&n.push("")):t.getTextWidth(n[n.length-1]+a,i)>o&&(n[n.length-1].length&&n.push(""),t.getTextWidth(n[n.length-1]+a,i)>o&&(a.length===1?(n[n.length-1]+=a,a=""):(n[n.length-1]+=a.slice(0,-1),a=a[a.length-1],n.push(""))));return n[n.length-1]+=a,n}import{BufferGeometry as Bf,BufferAttribute as Ib,Uint32BufferAttribute as Vf,Float32BufferAttribute as zf,Matrix4 as pE,Vector3 as ul,Sphere as fE,Box3 as hE,BoxGeometry as mE}from"three";var Ab,Ru=new Promise(i=>{Ab=i}),Cb=!1;var _u;function Mb(i){if(Cb)return;if(_u)return _u;async function t(){let r=i??(!1?".":"https://unpkg.com/@splinetool/modelling-wasm@1.10.89/build"),n=import("./process.js"),[a,s]=await Promise.all([n,fetch(`${r}/process.wasm`).then(u=>u.arrayBuffer())]),l=a.default,c=await l({wasmBinary:s});Ab(c),Cb=!0}return _u=t(),_u}import{BufferGeometryLoader as lE}from"three";var cE=["font"];function po(i,t,e,r){let o,n,a;i.type==="PathGeometry"?(n=JSON.parse(JSON.stringify(i)),a=[[],["extrusion"]]):(n={...i},a=[[]]);for(let c of a){let u=n;for(let d of c)u=u[d];for(o in u){let d=u[o];Pp(d)&&!cE.includes(o)&&(u[o]=t.getVariable(d,[r.uuid,"geometry",...c,o]),Pp(u[o])&&(u[o]=1))}}let s={parameters:n,type:n.type};if(n.type==="PathGeometry")s.path=n.path;else if(n.type==="VectorGeometry"){let c=je.createFromState(n.shape,n.width,n.height);s.shape=c}else if(n.type==="NonParametricGeometry"){if(n.data.groups&&n.data.groups?.forEach(c=>c.materialIndex=Math.max(c.materialIndex??0,0)),s.geometry=new lE().parse(n),s.geometry.groups.length===0){let c=s.geometry;c.addGroup(0,Math.max(c.getIndex()?.count??0,c.getAttribute("position").count),0)}}else if(n.type==="SubdivGeometry"){let c=new xt(n,e);return c.data=i,c}else{if(n.type==="TextGeometry")return new sn(n,t);if(n.type==="InputGeometry")return new sn(n,t);if(n.type==="UIGeometry")return _a.create({parameters:{width:n.width,height:n.height,cornerRadius:n.cornerRadius,cornerType:n.cornerType}})}let l;try{l=Lf(s)}catch(c){console.error(c),console.error(`Error generating geometry with inputs: ${s}`);let u=je.createFromState(la.defaultData(),100,100);s.shape=u,s.type="VectorGeometry",l=Lf(s)}return l}import{Matrix4 as uE}from"three";var dE=new uE;function cl(i,t,e,r){let o=i.position.array,n=i.normal.array,a=dE.makeScale(t,e,r).invert().elements,s,l,c;for(var u=0,d=o.length;u<d;u+=3)o[u]*=t,o[u+1]*=e,o[u+2]*=r,s=n[u],l=n[u+1],c=n[u+2],n[u]=a[0]*s+a[4]*l+a[8]*c,n[u+1]=a[1]*s+a[5]*l+a[9]*c,n[u+2]=a[2]*s+a[6]*l+a[10]*c;i.position.needsUpdate=!0,i.normal.needsUpdate=!0}var Lu=new hE,La=new ul,Se;Ru.then(i=>{Se=i});var Eb=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),Nb=new Uint32Array([0,1,2,3]),Db=new Uint8Array([4]),xt=class extends Bf{constructor(e,r){super();this.data=e;this.flatShading=r;this.subdivPointer=0;this.rebuild(),this.freeSubdivPointer()}mutateDirectlyScaleBaked(e,r){this.freeSubdivPointer();let o=this.data.scaleBaked,n=di.div(r,o);if(n.every(l=>l===1))return;this.subdividedGeometry&&cl(this.subdividedGeometry.attributes,...n),this.originalGeometry&&cl(this.originalGeometry.attributes,...n),this.data=e;let a=this.userData.parameters;this.userData.parameters={width:a.width*n[0],height:a.height*n[1],depth:a.depth*n[2]},this.originalGeometry.boundingSphere.center.multiply(La.fromArray(n));let s=La.set(a.width,a.height,a.depth).length();this.originalGeometry.boundingSphere.radius=s/2}ensureSubdivPointer(){return this.subdivPointer===0&&this.rebuild(),this.subdivPointer}rebuild(){let e,r,o;try{({originalGeometry:e,subdividedGeometry:r,subdivPointer:o}=xt.build(this.data,void 0,!this.flatShading,void 0))}catch{e=new mE(100,100,100),o=0}this.subdivPointer=o,this.originalGeometry=e,this.subdividedGeometry=r??void 0;let n=this.subdividedGeometry??this.originalGeometry;Object.assign(this,n),this.calcBoundingBox()}freeSubdivPointer(){this.subdivPointer&&(xt.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0)}dispose(){super.dispose(),this.freeSubdivPointer()}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new fE,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let r=e.attributes.position,o=e.boundingSphere.center;Lu.setFromBufferAttribute(r),Lu.getCenter(o),e.boundingSphere.radius=o.distanceTo(Lu.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),Lu.getSize(La);let n={width:La.x,height:La.y,depth:La.z};return this.userData.parameters=n,n}static build(e,r,o,n){let a,s,l,c=e?.phongAngle??35;o===!1&&(c=-1),r&&(Se.free_bvh(r),Se.free_subdivision_surface(r));try{a=xt.allocate(e,n)}catch(u){console.error(u,e),a=xt.allocate({positionWASM:Eb,indexWASM:Nb,verticesPerFaceWASM:Db},n)}if(Se.set_destination_refinement_level(a,0),s=xt.buildLevel(a,!0,c),e.subdivisions>0)try{Se.set_destination_refinement_level(a,e.subdivisions),l=xt.buildLevel(a,!1,c)}catch{try{Se.set_destination_refinement_level(a,e.subdivisions-1),l=xt.buildLevel(a,!1,c)}catch{l=null}}else l=null;return{subdivPointer:a,originalGeometry:s,subdividedGeometry:l}}static primitiveToQuads(e,r,o){e.widthSegments>16&&(e.widthSegments=16),e.heightSegments>16&&(e.heightSegments=16),e.depthSegments>16&&(e.depthSegments=16),e.radialSegments>16&&(e.radialSegments=16),e.type==="DodecahedronGeometry"&&(e.detail=0);let n=e.shape!==void 0||e.path!==void 0?r.geometry:po(e,o,!1,r),a;e.type==="TorusGeometry"&&e.arc===Math.PI*2?a=n.getClosedTorusIndicesForBooleanOrSubdiv():a=n.getIndex();let s,l,c,u;({positions:s,triIndices:u}=Uf(n.getAttribute("position"),a));let d;if(e.type==="CylinderGeometry"&&e.cornerRadius===0&&e.hollow===0&&e.openEnded===!1){let p=e.radialSegments*e.heightSegments*3*2,f=p+e.radialSegments*3;d=[p,f]}return{indices:l,verticesPerFace:c}=kf(s,u,n,d),{positions:s,indices:l,verticesPerFace:c}}static allocate(e,r){let o,n,a,s=[],l=[];e.positionWASM&&e.positionWASM.length>0?(o=e.positionWASM,n=e.indexWASM,a=e.verticesPerFaceWASM):(o=Eb,n=Nb,a=Db);let c=o.length,u=n.length,d=a.length,p=o.length+s.length+l.length,f=n.length+a.length,h=p*Float32Array.BYTES_PER_ELEMENT+f*Uint32Array.BYTES_PER_ELEMENT,m=p*Float32Array.BYTES_PER_ELEMENT,y=f*Uint32Array.BYTES_PER_ELEMENT,x=Se._malloc(h),v=new Float32Array(Se.HEAPF32.buffer,x,p),w=new Uint32Array(Se.HEAPU32.buffer,x+m,f);v.set(o,0),v.set(s,o.length),v.set(l,o.length+s.length),w.set(n,0),w.set(a,n.length);let O;e?.scaleBaked?.some(T=>T!==1)&&(O=new pE().makeScale(...e.scaleBaked)),r&&(O?O.premultiply(r):O=r);let S=O?Se.alloc_subdivision_surface2(x,c,x+m,u,x+m+n.length*Uint32Array.BYTES_PER_ELEMENT,d,O.elements):Se.alloc_subdivision_surface(x,c,x+m,u,x+m+n.length*Uint32Array.BYTES_PER_ELEMENT,d);return Se._free(x),S}static buildLevel(e,r,o,n,a){let s=a?Se.get_mesh_data2(e,r?Se.Level.CONTROL:Se.Level.REFINED,o,a.elements):Se.get_mesh_data(e,r?Se.Level.CONTROL:Se.Level.REFINED,o),l=8,c=Se.HEAPU32.subarray(s>>2,(s>>2)+l),u=c.subarray(4,4+4),d=0,p=Se.HEAPU32[c[d]>>2],f=Se.HEAPF32.subarray(p>>2,(p>>2)+u[d]);d++;let h=Se.HEAPU32[c[d]>>2],m=Se.HEAPF32.subarray(h>>2,(h>>2)+u[d]);d++;let y=Se.HEAPU32[c[d]>>2],x=Se.HEAPU32.subarray(y>>2,(y>>2)+u[d]);d++;let v=Se.HEAPU32[c[d]>>2],w=Se.HEAPU32.subarray(v>>2,(v>>2)+u[d]);if(d++,n===void 0){let O=new Bf;if(O.setIndex(new Vf(w,1)),O.setAttribute("position",new zf(f,3)),O.setAttribute("normal",new zf(m,3)),r){O.setAttribute("faceMap",new Vf(x,1));let S=new Float32Array(m.length/3*4).fill(0);O.setAttribute("color",new Ib(S,4))}return Se.free_mesh_data(s),O.userData.type="SubdivGeometry",O}n.getAttribute("position").copyArray(f),n.getAttribute("normal").copyArray(m),n.attributes.position.needsUpdate=!0,n.attributes.normal.needsUpdate=!0,Se.free_mesh_data(s)}static freeSubdivPointer(e){Se.free_bvh(e),Se.free_subdivision_surface(e)}static buildControlCageWireframe(e,r,o){let n=Se.get_wireframe_data_for_base_level(e),a=4,s=Se.HEAPU32.subarray(n>>2,(n>>2)+a),l=s.subarray(2,2+2),c=0,u=Se.HEAPU32[s[c]>>2],d=Se.HEAPF32.subarray(u>>2,(u>>2)+l[c]);c++;let p=Se.HEAPU32[s[c]>>2],f=Se.HEAPU32.subarray(p>>2,(p>>2)+l[c]);if(r===void 0){let h=new Bf;h.setAttribute("position",new zf(d,3));let m=new Float32Array(d.length);for(let y=0,x=d.length;y<x;)m[y++]=o.r,m[y++]=o.g,m[y++]=o.b;return h.setAttribute("color",new Ib(m,3)),h.setIndex(new Vf(f,1)),Se.free_wireframe_data_for_base_level(n),h}r.getAttribute("position").copyArray(d),r.attributes.position.needsUpdate=!0,Se.free_wireframe_data_for_base_level(n)}static updateCollabMesh(e,r,o){let n=r===0;n||Se.set_destination_refinement_level(e,r);let a=o?Se.get_topological_data2(e,n?Se.Level.CONTROL:Se.Level.REFINED,o.elements):Se.get_topological_data(e,n?Se.Level.CONTROL:Se.Level.REFINED),s=6,l=Se.HEAPU32.subarray(a>>2,(a>>2)+s),c=l.subarray(3,3+3),u=0,d=Se.HEAPU32[l[u]>>2],p=new Float32Array(Se.HEAPF32.subarray(d>>2,(d>>2)+c[u]));u++;let f=Se.HEAPU32[l[u]>>2],h=new Uint32Array(Se.HEAPU32.subarray(f>>2,(f>>2)+c[u]));u++;let m=Se.HEAPU32[l[u]>>2],y=new Uint8Array(Se.HEAPU32.subarray(m>>2,(m>>2)+c[u]));return Se.free_topological_data(a),{positions:p,indices:h,verticesPerFace:y}}};var _b=["getX","getY","getZ"];function Uf(i,t){let e={},r=t?t.count:i.count,o=0,n=[],a=[],s=1e4;for(let c=0;c<r;c++){let u=t?t.getX(c):c,d="";for(let p=0;p<3;p++)d+=`${~~(i[_b[p]](u)*s)},`;if(d in e)n.push(e[d]);else{for(let p=0;p<3;p++)a.push(i[_b[p]](u));e[d]=o,n.push(o),o++}}let l=[];for(let c=0;c<n.length;c+=3)n[c]===n[c+1]||n[c]===n[c+2]||n[c+1]===n[c+2]||l.push(n[c],n[c+1],n[c+2]);return{positions:a,triIndices:l}}var Bu=new ul,Gf=new ul,Ff=new ul,jf=new ul;function kf(i,t,e,r){let o=[],n=[];if(e.userData.shape!==void 0&&e.userData.parameters.depth===0&&e.userData.shape.shapeHoles.length===0){let l=e.userData.shape.extractShapePointsToFlatArray([]),c=e.userData.parameters.spikes;if(e.userData.type==="EllipseGeometry"&&c<=24&&c%4===0&&e.userData.parameters.angle>=360){let p=l.length/2/c;l=l.filter((f,h)=>Math.floor(h/2)%p===0)}let u=0;for(let p=0;p<l.length;p+=2)u+=(l[p]-l[(p===0?l.length:p)-2])*(l[p+1]+l[(p===0?l.length:p)-1]);i.length=0;let d=0;if(u<0)for(let p=0;p<l.length;p+=2)i.push(l[p],l[p+1],0),o.push(d++);else for(let p=l.length-2;p>=0;p-=2)i.push(l[p],l[p+1],0),o.push(d++);return n.push(d),{indices:o,verticesPerFace:n}}let a=new Float32Array([e.userData.parameters.depth])[0],s=0;for(;s<t.length;){if(e.useNgonForTopBottomFaceDuringBake){let l=0;if((i[t[s]*3+2]===a||i[t[s]*3+2]===0)&&l++,(i[t[s+1]*3+2]===a||i[t[s+1]*3+2]===0)&&l++,(i[t[s+2]*3+2]===a||i[t[s+2]*3+2]===0)&&l++,l===3)break}if(t[s+1]===t[s+3]&&t[s+2]===t[s+5]||t[s+0]===t[s+3]&&t[s+2]===t[s+4]){Bu.set(i[t[s]*3],i[t[s]*3+1],i[t[s]*3+2]),Gf.set(i[t[s+1]*3],i[t[s+1]*3+1],i[t[s+1]*3+2]),Ff.set(i[t[s+4]*3],i[t[s+4]*3+1],i[t[s+4]*3+2]),jf.set(i[t[s+5]*3],i[t[s+5]*3+1],i[t[s+5]*3+2]),Gf.sub(Bu).normalize(),Ff.sub(Bu).normalize(),jf.sub(Bu).normalize();let l=Gf.cross(Ff).dot(jf);Math.abs(l)>.005||r&&r.some((c,u)=>u%2===1?!1:s>=r[u]&&s<r[u+1])?(o.push(t[s],t[s+1],t[s+2]),n.push(3),s+=3):(o.push(t[s],t[s+1],t[s+4],t[s+5]),n.push(4),s+=6)}else o.push(t[s],t[s+1],t[s+2]),n.push(3),s+=3}if(e.useNgonForTopBottomFaceDuringBake){let l=[],c=[],u=0;for(let d=0,p=0;d<i.length;d+=3,p++)i[d+2]===0&&(l.push(p),u++),i[d+2]===a&&c.push(p);if(e.userData.parameters.extrudeBevelSize===0){let d=c[0];c[0]=c[1],c[1]=d}l.reverse(),o.push(...l,...c),n.push(u,u)}return{indices:o,verticesPerFace:n}}var Pr={};hw(Pr,{calcBoolean:()=>vE,calcBooleanTopological:()=>bE,freeMeshSet:()=>OE,getMeshSet:()=>SE,hasOpenEdges:()=>wE,transformMeshSet:()=>PE});var yE,Rb=new Promise(i=>{yE=i});import{Float32BufferAttribute as Lb,Sphere as gE}from"three";var Be,Ba;Rb.then(i=>Be=i);function xE(i,t,e){let r,o;i.userData.parameters.type==="TorusGeometry"&&i.userData.parameters.arc===Math.PI*2?o=i.getClosedTorusIndicesForBooleanOrSubdiv():o=i.getIndex();let{positions:n,triIndices:a}=Uf(i.getAttribute("position"),o),s;if(t&&e){let{indices:l,verticesPerFace:c}=kf(n,a,i);s=c.length,r=[];for(let u=0,d=0;u<s;u++){r.push(c[u]);for(let p=0;p<c[u];p++)r.push(l[d++])}}else{let l=a.length;r=Array(l+l/3),s=0;for(let c=0,u=0;u<r.length;)r[u++]=3,s++,r[u++]=a[c++],r[u++]=a[c++],r[u++]=a[c++]}return{positions:n,faceIndices:r,nFaces:s}}function Bb(i){let t=i.length,e=t*Uint32Array.BYTES_PER_ELEMENT,r=t*Float32Array.BYTES_PER_ELEMENT,o=Number.isInteger(i[0])?e:r,n=Be._malloc(o);return(Number.isInteger(i[0])?new Uint32Array(Be.HEAPU32.buffer,n,t):new Float32Array(Be.HEAPF32.buffer,n,t)).set(i,0),n}function Vb(i){switch(i){case 0:return Be.OP.UNION;case 1:return Be.OP.INTERSECTION;case 2:return Be.OP.A_MINUS_B;default:throw new Error("Unknown boolean operation "+i)}}function bE(i,t){Ba===void 0&&(Ba=Be.init_csg());let e=Bb(i),r=Be.csg_calc_topological(Ba,e,i.length,Vb(t));Be._free(e);let o=6,n=Be.HEAPU32.subarray(r>>2,(r>>2)+o),a=n.subarray(3,3+3),s=0,l=Be.HEAPU32[n[s]>>2],c=new Float32Array(Be.HEAPF32.subarray(l>>2,(l>>2)+a[s]));s++;let u=Be.HEAPU32[n[s]>>2],d=new Uint32Array(Be.HEAPU32.subarray(u>>2,(u>>2)+a[s]));s++;let p=Be.HEAPU32[n[s]>>2],f=new Uint8Array(Be.HEAPU32.subarray(p>>2,(p>>2)+a[s]));return Be.free_mesh_data(r),{positions:c,indices:d,verticesPerFace:f}}function vE(i,t,e,r){Ba===void 0&&(Ba=Be.init_csg());let o=Bb(i),n=Be.csg_calc(Ba,o,i.length,r,Vb(t));Be._free(o);let a=5,s=Be.HEAPU32.subarray(n>>2,(n>>2)+a),l=s.subarray(2,2+3),c=0,u=Be.HEAPU32[s[c]>>2],d=Be.HEAPF32.subarray(u>>2,(u>>2)+l[c]);c++;let p=Be.HEAPU32[s[c]>>2],f=Be.HEAPF32.subarray(p>>2,(p>>2)+l[c]);c++;let h=l[c];e.setAttribute("position",new Lb(d,3)),e.setAttribute("normal",new Lb(f,3));let m=Be.HEAPF32.subarray((n>>2)+5,(n>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new gE),e.boundingSphere.center.set(m[0],m[1],m[2]),e.boundingSphere.radius=(m[3]**2+m[4]**2+m[5]**2)**.5,e.userData.parameters={width:m[3]*2,height:m[4]*2,depth:m[5]*2},Be.free_mesh_data(n),h}function SE(i,t,e){if(Be===void 0)return-1;let r,o,n;if(t&&i.userData.positions!==void 0){let x=i.userData;n=x.verticesPerFace.length,r=x.positions,o=Array(x.verticesPerFace.reduce((v,w)=>v+w,0)+n);for(let v=0,w=0,O=0;v<x.verticesPerFace.length;v++){o[O++]=x.verticesPerFace[v];for(let S=0;S<x.verticesPerFace[v];S++)o[O++]=x.indices[w++]}}else({positions:r,faceIndices:o,nFaces:n}=xE(i,t,e));let a=r.length,s=o.length,l=r.length,c=o.length,u=l*Float32Array.BYTES_PER_ELEMENT+c*Uint32Array.BYTES_PER_ELEMENT,d=l*Float32Array.BYTES_PER_ELEMENT,p=c*Uint32Array.BYTES_PER_ELEMENT,f=Be._malloc(u),h=new Float32Array(Be.HEAPF32.buffer,f,l),m=new Uint32Array(Be.HEAPU32.buffer,f+d,c);h.set(r,0),m.set(o,0);let y=Be.get_csg_mesh(f,a,f+d,s,n);return Be._free(f),y}function wE(i){return Be.has_open_edges(i)}function PE(i,t){Be.transform_csg_mesh(i,t.elements)}function OE(i){Be.free_csg_mesh(i)}var TE={ConeGeometry:xx,CubeGeometry:bx,CylinderGeometry:gx,DodecahedronGeometry:vx,EllipseGeometry:Ia,HelixGeometry:Kx,IcosahedronGeometry:Qx,LatheGeometry:Zx,NonParametricGeometry:lb,PolygonGeometry:Iu,PyramidGeometry:cb,RectangleGeometry:_a,SphereGeometry:db,PlaneGeometry:pb,BackdropGeometry:fb,StarGeometry:Eu,TextFrameGeometry:hb,TorusGeometry:mb,TorusKnotGeometry:yb,TriangleGeometry:gb,PathGeometry:Pb,VectorGeometry:tr},Lf=i=>TE[i.type].create(i);function Va(i){return i!==null&&"booleanOp"in i}var za=class extends Sa(AE){constructor(){super(...arguments);this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new CE}updateVisible(e){super.updateVisible(e),this.visible=!Va(this.parent)&&this.visible,Va(this.parent)&&this.parent.invalidateDownstreamBooleanData()}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(Pr.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),Va(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)e instanceof za&&(e.freeBooleanPointer(),Va(e)&&e.invalidateUpstreamBooleanData())}updateTransformState(e,r){let o=super.updateTransformState(e,r);return o&&Va(this.parent)&&this.invalidateDownstreamBooleanData(!0),o}onVariableUpdate(e=!1){super.onVariableUpdate(e),Va(this.parent)&&this.invalidateDownstreamBooleanData(!0)}};var Vu=new ME;function dl(i,t=0,e=i.count,r,o){let n=1/0,a=1/0,s=1/0,l=-1/0,c=-1/0,u=-1/0;for(let d=t;d<e;d++){let p=i.getX(d),f=i.getY(d),h=i.getZ(d);p<n&&(n=p),f<a&&(a=f),h<s&&(s=h),p>l&&(l=p),f>c&&(c=f),h>u&&(u=h)}Vu.min.set(n,a,s),Vu.max.set(l,c,u),Vu.getCenter(r),Vu.getSize(o).multiplyScalar(.5)}var NE=new IE,DE=new EE,Mt=class extends za{constructor(t,e){super(NE,DE),this.super_Entity(t,e)}updateState(t,e){this.updateState_Entity(t,e)}updateEntityBoxSize(t,e){let r=this.geometry.getAttribute("position");r!==void 0?dl(r,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:r.count,t,e):super.updateEntityBoxSize(t,e)}};import{Box3 as eD,Matrix4 as tD,Sphere as Ev,Vector3 as rD}from"three";import{BufferAttribute as QN,Float32BufferAttribute as Iv,MathUtils as xh,Vector3 as bh}from"three";import{ShaderMaterial as IN}from"three";var ko=class{constructor(t){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};if(ko.uuidContext===null)throw new Error("plz startContext");ko.uuidContext===ko.globalContext?this.uuid="_gid"+ko.uuidContext.nodeContextUuid++:this.uuid="_uid"+ko.uuidContext.nodeContextUuid++,this.type=t,this.name=""}static startContext(t){this.uuidContext===null||this.uuidContext===ko.globalContext?this.uuidContext=t:console.error("Can't start context twice")}static endContext(t){this.uuidContext!==t&&console.error("Can't end context twice"),this.uuidContext=null}analyze(t,e){e=e??{},t.analyzing=!0,this.build(t.addFlow(e.slot,e.cache,e.context),"v4"),t.clearVertexNodeCode(),t.clearFragmentNodeCode(),t.removeFlow(),t.analyzing=!1}analyzeAndFlow(t,e,r){return r=r??{},this.analyze(t,r),this.flow(t,e,r)}flow(t,e,r){r=r??{},t.addFlow(r.slot,r.cache,r.context);let o={result:this.build(t,e),code:t.clearNodeCode(),extra:t.context.extra};return t.removeFlow(),o}build(t,e,r){e=e??this.getType(t,e);let o=t.getNodeData(r??this);return t.analyzing&&this.appendDepsNode(t,o,e),t.nodes.indexOf(this)===-1&&t.nodes.push(this),this.updateFrame!==void 0&&t.updaters.indexOf(this)===-1&&t.updaters.push(this),this.generate(t,e,r)}updateFrame(t){}generateReadonly(t,e,r,o,n,a){return""}generate(t,e,r,o,n){return""}parse(t,e,r,o){}appendDepsNode(t,e,r){e.deps=(e.deps||0)+1;let o=t.getTypeLength(r);(o>(e.outputMax||0)||this.getType(t,r))&&(e.outputMax=o,e.output=r)}setName(t){this.name=t}getName(){return this.name}getType(t,e){return e==="sampler2D"||e==="samplerCube"?e:this.type}},$e=ko;$e.globalContext={nodeContextUuid:0},$e.uuidContext=ko.globalContext;import{CubeReflectionMapping as UE,CubeRefractionMapping as kE,CubeUVReflectionMapping as HE,LinearEncoding as $b,sRGBEncoding as WE}from"three";var pl=class{constructor(t){t=t??{},this.name=t.name,this.type=t.type,this.node=t.node,this.size=t.size,this.needsUpdate=t.needsUpdate}get value(){return this.node.value}set value(t){this.node.value=t}};var Hf=class{constructor(){this.nodes={};this.keywords={}}add(t){this.nodes[t.name]=t}addKeyword(t,e,r){r=r!==void 0?r:!0,this.keywords[t]={callback:e,cache:r}}remove(t){delete this.nodes[t.name]}removeKeyword(t){delete this.keywords[t]}get(t){return this.nodes[t]}getKeyword(t,e){return this.keywords[t].callback(e)}getKeywordData(t){return this.keywords[t]}contains(t){return this.nodes[t]!==void 0}containsKeyword(t){return this.keywords[t]!==void 0}},It=new Hf;import{Vector2 as zb}from"three";import{MathUtils as _E}from"three";var ge=class extends $e{constructor(e,r){super(e);this.scope="";r=r??{},this.shared=r.shared!==void 0?r.shared:!0,this.unique=r.unique!==void 0?r.unique:!1}build(e,r,o,n){if(r=r??this.getType(e),this.getShared(e,r)){let a=this.getUnique(e,r);a&&this.uuid===void 0&&(this.uuid=_E.generateUUID()),o=e.getUUID(o??this.getUUID(),!a);let s=e.getNodeData(o),l=s.output||this.getType(e);if(e.analyzing)return(s.deps||0)>0||this.getLabel()?(this.appendDepsNode(e,s,r),this.generate(e,r,o)):super.build(e,r,o);if(a)return s.name=s.name||super.build(e,r,o),s.name;if(!this.getLabel()&&(!this.getShared(e,l)||e.context.ignoreCache||s.deps===1))return super.build(e,r,o);o=this.getUUID(!1);let c=this.getTemp(e,o);if(c)return e.format(c,l,r);{c=super.generate(e,r,o,s.output,n);let u=this.generate(e,l,o);return e.addNodeCode(c+" = "+u+";"),e.format(c,l,r)}}return super.build(e,r,o)}getShared(e,r){return r!=="sampler2D"&&r!=="samplerCube"&&this.shared}getUnique(e,r){return this.unique}setLabel(e){return this.label=e,this}getLabel(){return this.label}getUUID(e){let r=this.uuid;return typeof this.scope=="string"&&(r=this.scope+"-"+r),r}getTemp(e,r){r=r||this.uuid;let o=e.getVars()[r];return o?o.name:void 0}generate(e,r,o,n,a){return this.getShared(e,r)||console.error("TempNode is not shared"),o=o??this.uuid,e.getTempVar(o,n??this.getType(e),a,this.getLabel()).name}};var Xe=class extends ge{constructor(e,r){r=r??{},r.shared=r.shared!==void 0?r.shared:!1;super(e,r);this.readonly=!1}setReadonly(e){return this.readonly=e,this.hashProperties=this.readonly?["value"]:void 0,this}getReadonly(){return this.readonly}generate(e,r,o,n,a,s){o=e.getUUID(o??this.getUUID()),n=n??this.getType(e);let l=e.getNodeData(o);return this.getReadonly()&&this.generateReadonly!==void 0?this.generateReadonly(e,r,o,n,a,s):e.isShader("vertex")?(l.vertex||(l.vertex=e.createVertexUniform(n,this,a,s,this.getLabel())),e.format(l.vertex.name,n,r)):(l.fragment||(l.fragment=e.createFragmentUniform(n,this,a,s,this.getLabel())),e.format(l.fragment.name,n,r))}};var lt=class extends Xe{constructor(e=0,r){super("v2");this.nodeType="Vector2";this.value=e instanceof zb?e:new zb(e,r)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}generateReadonly(e,r,o,n,a,s){return e.format("vec2("+this.value.x+", "+this.value.y+")",n,r)}};import{Vector3 as Gb}from"three";var Ft=class extends Xe{constructor(e=0,r,o){super("v3");this.nodeType="Vector3";this.value=e instanceof Gb?e:new Gb(e,r,o)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}get z(){return this.value.z}set z(e){this.value.z=e}generateReadonly(e,r,o,n,a,s){return e.format("vec3("+this.value.x+", "+this.value.y+", "+this.value.z+")",n,r)}};var rr=class extends Xe{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof Ct?e:new Ct(e.r,e.g,e.b,e.a)}generateReadonly(e,r,o,n,a,s){return e.format("vec4("+this.value.r+", "+this.value.g+", "+this.value.b+", "+this.value.a+")",n,r)}};var RE=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,Fb=/[a-z_0-9]+/gi,J=class extends ge{constructor(e,r,o,n,a){super(a);this.src="";this.nodeType="Function";this.useKeywords=!0;this.includes=[];this.extensions={};this.keywords={};this.isMethod=a===void 0,this.isInterface=!1,this.parse(e,r,o,n)}getShared(e,r){return!this.isMethod}getType(e){return e.getTypeByFormat(this.type)}getInputByName(e){if(this.inputs){let r=this.inputs.length;for(;r--;)if(this.inputs[r].name===e)return this.inputs[r]}}getIncludeByName(e){if(this.includes){let r=this.includes.length;for(;r--;)if(this.includes[r].name===e)return this.includes[r]}}generate(e,r,o,n,a){let s,l=0,c=this.src;if(this.includes)for(let d=0;d<this.includes.length;d++)e.include(this.includes[d],this);for(let d in this.extensions)e.extensions[d]=!0;let u=[];for(;s=Fb.exec(this.src);)u.push(s);for(let d=0;d<u.length;d++){let p=u[d],f=p[0],h=this.isMethod?!this.getInputByName(f):!0,m=f;if(this.keywords[f]||this.useKeywords&&h&&It.containsKeyword(f)){let y=this.keywords[f];if(!y){let x=It.getKeywordData(f);x.cache&&(y=e.keywords[f]),y=y||It.getKeyword(f,e),x.cache&&(e.keywords[f]=y)}m=y.build(e)}f!==m&&c[p.index+l-1]!=="."&&(c=c.substring(0,p.index+l)+m+c.substring(p.index+f.length+l),l+=m.length-f.length),this.getIncludeByName(m)===void 0&&It.contains(m)&&e.include(It.get(m))}return r==="source"?c:this.isMethod?(this.isInterface||e.include(this,void 0,c),this.name):e.format("( "+c+" )",this.getType(e),r)}parse(e,r,o,n){if(this.src=e||"",this.includes=r??[],this.extensions=o??{},this.keywords=n??{},this.isMethod){let a=RE.exec(this.src);if(this.inputs=[],a&&a.length==4){this.type=a[1],this.name=a[2];let s=a[3].match(Fb);if(s){let l=0;for(;l<s.length;){let c=s[l++],u;c==="in"||c==="out"||c==="inout"?u=s[l++]:(u=c,c="");let d=s[l++];this.inputs.push({name:d,type:u,qualifier:c})}}this.isInterface=this.src.indexOf("{")===-1}else this.type="",this.name=""}}};var LE=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,Wf=class extends ge{constructor(e="",r){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||Wf.PI,void 0,void 0,void 0,r)}getType(e){return e.getTypeByFormat(this.type)}parse(e,r,o,n,a){this.src=e||"";let s,l,c="",u=LE.exec(e);this.useDefine=a??this.src.charAt(0)==="#",u&&u.length>1?(l=u[1],s=u[2],c=u[3]):(s=this.src,l="f"),this.name=s,this.type=l,this.value=c}build(e,r){if(r==="source"){if(this.value)return this.useDefine?"#define "+this.name+" "+this.value:"const "+this.type+" "+this.name+" = "+this.value+";";if(this.useDefine)return this.src}return e.include(this),e.format(this.name,this.getType(e),r)}generate(e,r,o,n,a){return e.format(this.name,this.getType(e),r)}},Ge=Wf;Ge.PI="PI",Ge.PI2="PI2",Ge.RECIPROCAL_PI="RECIPROCAL_PI",Ge.RECIPROCAL_PI2="RECIPROCAL_PI2",Ge.LOG2="LOG2",Ge.EPSILON="EPSILON";var BE=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
|
|
19
|
+
)*?)}`,"gim"),VE=new RegExp("s*(w*?)s*(w*?)(=|;)","gim"),Ga=class extends ge{constructor(e=""){super();this.inputs=[];this.src="";this.nodeType="Struct";this.parse(e)}getType(e){return e.getTypeByFormat(this.name)}getInputByName(e){let r=this.inputs.length;for(;r--;)if(this.inputs[r].name===e)return this.inputs[r]}generate(e,r,o,n,a){return r==="source"?this.src+";":e.format("( "+this.src+" )",this.getType(e),r)}parse(e=""){this.src=e,this.inputs=[];let r=BE.exec(e);if(r){let o=r[2],n;for(;n=VE.exec(o);)this.inputs.push({type:n[1],name:n[2]});this.name=r[1]}else this.name="";this.type=this.name}};var Fa=class extends ge{constructor(e){super("v2",{shared:!1});this.nodeType="UV";this.index=e??0}generate(e,r){e.requires.uv[this.index]=!0;let o=this.index>0?this.index+1:"",n=e.isShader("vertex")?"uv"+o:"vUv"+o;return e.format(n,this.getType(e),r)}};It.addKeyword("uv",function(){return new Fa});It.addKeyword("uv2",function(){return new Fa(1)});import{LinearEncoding as zE,sRGBEncoding as GE}from"three";var ln=class extends ge{constructor(e,r){super("v4");this.nodeType="ColorSpace";this.input=e,this.method=r??ln.LINEAR_TO_LINEAR,this.hashProperties=["method"]}static getEncodingComponents(e){switch(e){case zE:return["Linear"];case GE:return["sRGB"];default:return[]}}generate(e,r){let o=this.input.build(e,"v4"),n=this.getType(e),a=ln.Nodes[this.method],s=e.include(a);if(s===ln.LINEAR_TO_LINEAR)return e.format(o,n,r);if(a.inputs?.length===2){let l=this.factor.build(e,"f");return e.format(s+"( "+o+", "+l+" )",n,r)}else return e.format(s+"( "+o+" )",n,r)}fromEncoding(e){let r=ln.getEncodingComponents(e);this.method="LinearTo"+r[0],this.factor=r[1]}fromDecoding(e){let r=ln.getEncodingComponents(e);this.method=r[0]+"ToLinear",this.factor=r[1]}},Yt=ln;Yt.Nodes={LinearToLinear:new J(["vec4 LinearToLinear( in vec4 value ) {"," return value;","}"].join(`
|
|
20
20
|
`)),sRGBToLinear:new J(["vec4 sRGBToLinear( in vec4 value ) {"," return vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.w );","}"].join(`
|
|
21
21
|
`)),LinearTosRGB:new J(["vec4 LinearTosRGB( in vec4 value ) {"," return vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.w );","}"].join(`
|
|
22
|
-
`))},
|
|
22
|
+
`))},Yt.LINEAR_TO_LINEAR="LinearToLinear",Yt.SRGB_TO_LINEAR="sRGBToLinear",Yt.LINEAR_TO_SRGB="LinearTosRGB";var Ue=class extends J{constructor(e="",r,o,n,a){super(e,a,n,o,r);this.nodeType="Expression"}};import{Texture as FE}from"three";var Kt=class extends Xe{constructor(e=new FE,r,o,n){super("v4",{shared:!0});this.nodeType="Texture";this.value=e,this.uv=r??new Fa,this.bias=o,this.project=n!==void 0?n:!1}getTexture(e,r){return super.generate(e,r,this.value.uuid,"t")}generate(e,r){if(r==="sampler2D")return this.getTexture(e,r);let o=this.getTexture(e,r),n=this.uv.build(e,this.project?"v4":"v2"),a=this.bias?this.bias.build(e,"f"):void 0;a===void 0&&e.context.bias&&(a=e.context.bias.setTexture(this).build(e,"f"));let s,l;this.project?s="texture2DProj":s=a?"tex2DBias":"tex2D",a?l=s+"( "+o+", "+n+", "+a+" )":l=s+"( "+o+", "+n+" )";let c={include:e.isShader("vertex"),ignoreCache:!0},u=this.getType(e);return e.addContext(c),this.colorSpace=this.colorSpace??new Yt(new Ue("",u)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(l),l=this.colorSpace.build(e,u),e.removeContext(),e.format(l,u,r)}};var se=class extends Xe{constructor(e){super("f");this.nodeType="Float";this.value=e??0}generateReadonly(e,r,o,n,a,s){return e.format(this.value+(this.value%1?"":".0"),n,r)}};var fl=class extends ge{constructor(e,r){super();this.inputs=[];this.nodeType="FunctionCall";this.value=e,this.inputs=r??[]}getFunction(){return this.value}getType(e){return this.value.getType(e)}generate(e,r,o,n,a){n=this.getType(e);let s=this.value,l=s.build(e,r)+"( ",c=[];if(s.inputs){for(let u=0;u<s.inputs.length;u++){let d=s.inputs[u],p=this.inputs[u]||this.inputs[d.name];c.push(p.build(e,e.getTypeByFormat(d.type)))}l+=c.join(", ")+" )"}return e.format(l,n,r)}};var qf=class extends ge{constructor(e,r,o=qf.ADD){super();this.nodeType="Operator";this.type=e.type,this.a=e,this.b=r,this.op=o}getType(e){let r=this.a.getType(e),o=this.b.getType(e);return e.isTypeMatrix(r)?"v4":e.getTypeLength(o)>e.getTypeLength(r)?o:r}generate(e,r){let o=this.getType(e);this.type=o;let n=this.a.build(e,o),a=this.b.build(e,o);return e.format("( "+n+" "+this.op+" "+a+" )",o,r)}},Rt=qf;Rt.ADD="+",Rt.SUB="-",Rt.MUL="*",Rt.DIV="/";var Ye=class extends ge{constructor(e,r=Ye.ABS,o,n){super();this.nodeType="Math";this.a=e,typeof r!="string"?this.b=r:n=r,typeof o!="string"?this.c=o:n=o,this.method=n,this.hashProperties=["method"]}getNumInputs(e){switch(this.method){case Ye.MIX:case Ye.CLAMP:case Ye.REFRACT:case Ye.SMOOTHSTEP:case Ye.FACEFORWARD:return 3;case Ye.MIN:case Ye.MAX:case Ye.MOD:case Ye.STEP:case Ye.REFLECT:case Ye.DISTANCE:case Ye.DOT:case Ye.CROSS:case Ye.POW:return 2;default:return 1}}getInputType(e){let r=e.getTypeLength(this.a.getType(e)),o=this.b?e.getTypeLength(this.b.getType(e)):0,n=this.c?e.getTypeLength(this.c.getType(e)):0;return r>o&&r>n?this.a.getType(e):o>n?this.b.getType(e):this.c.getType(e)}getType(e){switch(this.method){case Ye.LENGTH:case Ye.DISTANCE:case Ye.DOT:return"f";case Ye.CROSS:return"v3"}return this.getInputType(e)}generate(e,r){let o,n,a,s=this.a?e.getTypeLength(this.a.getType(e)):0,l=this.b?e.getTypeLength(this.b.getType(e)):0,c=this.c?e.getTypeLength(this.c.getType(e)):0,u=this.getInputType(e),d=this.getType(e);switch(this.type=d,this.method){case Ye.NEGATE:return e.format("( -"+this.a.build(e,u)+" )",u,r);case Ye.INVERT:return e.format("( 1.0 - "+this.a.build(e,u)+" )",u,r);case Ye.CROSS:o=this.a.build(e,"v3"),n=this.b.build(e,"v3");break;case Ye.STEP:o=this.a.build(e,s===1?"f":u),n=this.b.build(e,u);break;case Ye.MIN:case Ye.MAX:case Ye.MOD:o=this.a.build(e,u),n=this.b.build(e,l===1?"f":u);break;case Ye.REFRACT:o=this.a.build(e,u),n=this.b.build(e,u),a=this.c.build(e,"f");break;case Ye.MIX:o=this.a.build(e,u),n=this.b.build(e,u),a=this.c.build(e,c===1?"f":u);break;default:o=this.a.build(e,u),this.b&&(n=this.b.build(e,u)),this.c&&(a=this.c.build(e,u));break}let p=[];p.push(o),n&&p.push(n),a&&p.push(a);let f=this.getNumInputs(e);if(p.length!==f)throw Error(`Arguments not match used in "${this.method}". Require ${f}, currently ${p.length}.`);return e.format(this.method+"( "+p.join(", ")+" )",d,r)}},Oe=Ye;Oe.RAD="radians",Oe.DEG="degrees",Oe.EXP="exp",Oe.EXP2="exp2",Oe.LOG="log",Oe.LOG2="log2",Oe.SQRT="sqrt",Oe.INV_SQRT="inversesqrt",Oe.FLOOR="floor",Oe.CEIL="ceil",Oe.NORMALIZE="normalize",Oe.FRACT="fract",Oe.SATURATE="saturate",Oe.SIN="sin",Oe.COS="cos",Oe.TAN="tan",Oe.ASIN="asin",Oe.ACOS="acos",Oe.ARCTAN="atan",Oe.ABS="abs",Oe.SIGN="sign",Oe.LENGTH="length",Oe.NEGATE="negate",Oe.INVERT="invert",Oe.MIN="min",Oe.MAX="max",Oe.MOD="mod",Oe.STEP="step",Oe.REFLECT="reflect",Oe.DISTANCE="distance",Oe.DOT="dot",Oe.CROSS="cross",Oe.POW="pow",Oe.MIX="mix",Oe.CLAMP="clamp",Oe.REFRACT="refract",Oe.SMOOTHSTEP="smoothstep",Oe.FACEFORWARD="faceforward";var ja=class extends ge{constructor(e,r,o){super("v4");this.nodeType="TextureCubeUV";this.value=e,this.uv=r,this.bias=o}bilinearCubeUV(e,r,o,n){let a=new fl(ja.Nodes.bilinearCubeUV,[r,o,n]);this.colorSpaceTL=this.colorSpaceTL??new Yt(new Ue("","v4")),this.colorSpaceTL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTL.input.parse(a.build(e)+".tl"),this.colorSpaceTR=this.colorSpaceTR??new Yt(new Ue("","v4")),this.colorSpaceTR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTR.input.parse(a.build(e)+".tr"),this.colorSpaceBL=this.colorSpaceBL??new Yt(new Ue("","v4")),this.colorSpaceBL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBL.input.parse(a.build(e)+".bl"),this.colorSpaceBR=this.colorSpaceBR??new Yt(new Ue("","v4")),this.colorSpaceBR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBR.input.parse(a.build(e)+".br");let s={include:e.isShader("vertex"),ignoreCache:!0};e.addContext(s),this.colorSpaceTLExp=new Ue(this.colorSpaceTL.build(e,"v4"),"v4"),this.colorSpaceTRExp=new Ue(this.colorSpaceTR.build(e,"v4"),"v4"),this.colorSpaceBLExp=new Ue(this.colorSpaceBL.build(e,"v4"),"v4"),this.colorSpaceBRExp=new Ue(this.colorSpaceBR.build(e,"v4"),"v4"),e.removeContext();let l=new Ue("mix( mix( cubeUV_TL, cubeUV_TR, cubeUV.f.x ), mix( cubeUV_BL, cubeUV_BR, cubeUV.f.x ), cubeUV.f.y )","v4");return l.keywords.cubeUV_TL=this.colorSpaceTLExp,l.keywords.cubeUV_TR=this.colorSpaceTRExp,l.keywords.cubeUV_BL=this.colorSpaceBLExp,l.keywords.cubeUV_BR=this.colorSpaceBRExp,l.keywords.cubeUV=a,l}generate(e,r){if(e.isShader("fragment")){let o=this.uv,n=this.bias||e.context.roughness,a=new fl(ja.Nodes.roughnessToMip,[n]),s=new Oe(a,ja.Nodes.m0,ja.Nodes.cubeUV_maxMipLevel,Oe.CLAMP),l=new Oe(s,Oe.FLOOR),c=new Oe(s,Oe.FRACT),u=this.bilinearCubeUV(e,this.value,o,l),d=this.bilinearCubeUV(e,this.value,o,new Rt(l,new se(1).setReadonly(!0),Rt.ADD)),p=new Oe(u,d,c,Oe.MIX);return e.format(p.build(e),"v4",r)}else return console.warn("TextureCubeUVNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),r)}},Ua=ja;Ua.Nodes=function(){let e=new Ga(`struct TextureCubeUVData {
|
|
23
23
|
vec4 tl;
|
|
24
24
|
vec4 tr;
|
|
25
25
|
vec4 br;
|
|
@@ -84,7 +84,7 @@ best distance: ${d.d}`);let b=[d.x,d.y];return b.distance=d.d,b.distance}functio
|
|
|
84
84
|
uv.x -= texelSize;
|
|
85
85
|
vec4 bl = texture2D(envMap, uv);
|
|
86
86
|
return TextureCubeUVData( tl, tr, br, bl, f );
|
|
87
|
-
}`,[e,s,l,r,o,n,a]);c.useKeywords=!1;let u=new Ge("float r0 1.0",!0),
|
|
87
|
+
}`,[e,s,l,r,o,n,a]);c.useKeywords=!1;let u=new Ge("float r0 1.0",!0),d=new Ge("float v0 0.339",!0),p=new Ge("float m0 -2.0",!0),f=new Ge("float r1 0.8",!0),h=new Ge("float v1 0.276",!0),m=new Ge("float m1 -1.0",!0),y=new Ge("float r4 0.4",!0),x=new Ge("float v4 0.046",!0),v=new Ge("float m4 2.0",!0),w=new Ge("float r5 0.305",!0),O=new Ge("float v5 0.016",!0),S=new Ge("float m5 3.0",!0),T=new Ge("float r6 0.21",!0),M=new Ge("float v6 0.0038",!0),g=new Ge("float m6 4.0",!0),D=[u,d,p,f,h,m,y,x,v,w,O,S,T,M,g],E=new J(`float roughnessToMip(float roughness) {
|
|
88
88
|
float mip = 0.0;
|
|
89
89
|
if (roughness >= r1) {
|
|
90
90
|
mip = (r0 - roughness) * (m1 - m0) / (r0 - r1) + m0;
|
|
@@ -98,7 +98,7 @@ best distance: ${d.d}`);let b=[d.x,d.y];return b.distance=d.d,b.distance}functio
|
|
|
98
98
|
mip = -2.0 * log2(1.16 * roughness);// 1.16 = 1.79^0.25
|
|
99
99
|
}
|
|
100
100
|
return mip;
|
|
101
|
-
}`,D);return{bilinearCubeUV:c,roughnessToMip:E,m0:
|
|
101
|
+
}`,D);return{bilinearCubeUV:c,roughnessToMip:E,m0:p,cubeUV_maxMipLevel:r}}();var cn=class extends ge{constructor(e){super("v3");this.nodeType="Normal";this.scope=e??cn.VIEW}getShared(){return this.scope===cn.WORLD}build(e,r,o,n){let a=e.context[this.scope+"Normal"];return a?a.build(e,r,o,n):super.build(e,r,o)}generate(e,r,o,n,a){let s;switch(this.scope){case cn.VIEW:e.isShader("vertex")?s="transformedNormal":s="geometryNormal";break;case cn.LOCAL:e.isShader("vertex")?s="objectNormal":(e.requires.normal=!0,s="vObjectNormal");break;case cn.WORLD:e.isShader("vertex")?s="inverseTransformDirection( transformedNormal, viewMatrix ).xyz":(e.requires.worldNormal=!0,s="vWNormal");break}return e.format(s,this.getType(e),r)}},Lt=cn;Lt.LOCAL="local",Lt.WORLD="world",Lt.VIEW="view",Lt.NORMAL="normal";It.addKeyword("viewNormal",function(){return new Lt(Lt.VIEW)});It.addKeyword("localNormal",function(){return new Lt(Lt.NORMAL)});It.addKeyword("worldNormal",function(){return new Lt(Lt.WORLD)});var fo=class extends ge{constructor(e){super("v3");this.nodeType="Position";this.scope=e??fo.LOCAL}getType(){switch(this.scope){case fo.PROJECTION:return"v4"}return this.type}getShader(){switch(this.scope){case fo.LOCAL:case fo.WORLD:return!1}return!0}generate(e,r,o,n,a){let s;switch(this.scope){case fo.LOCAL:e.isShader("vertex")?s="transformed":(e.requires.position=!0,s="vPosition");break;case fo.WORLD:if(e.isShader("vertex"))return"( modelMatrix * vec4( transformed, 1.0 ) ).xyz";e.requires.worldPosition=!0,s="vWPosition";break;case fo.VIEW:s=e.isShader("vertex")?"-mvPosition.xyz":"vViewPosition";break;case fo.PROJECTION:s=e.isShader("vertex")?"( projectionMatrix * modelViewMatrix * vec4( position, 1.0 ) )":"vec4( 0.0 )";break}return e.format(s,this.getType(),r)}},or=fo;or.LOCAL="local",or.WORLD="world",or.VIEW="view",or.PROJECTION="projection";It.addKeyword("position",function(){return new or});It.addKeyword("worldPosition",function(){return new or(or.WORLD)});It.addKeyword("viewPosition",function(){return new or(or.VIEW)});var Ur=class extends ge{constructor(e){super("v3");this.nodeType="Reflect";this.scope=e??Ur.CUBE}getUnique(e){return!e.context.viewNormal}getType(){switch(this.scope){case Ur.SPHERE:return"v2"}return this.type}generate(e,r){let o=this.getUnique(e);if(e.isShader("fragment")){let n;switch(this.scope){case Ur.VECTOR:{let a=new Lt(Lt.VIEW),s=e.context.roughness,l=a.build(e,"v3"),c=new or(or.VIEW).build(e,"v3"),u=s?s.build(e,"f"):void 0,d=`reflect( -normalize( ${c} ), ${l} )`;u&&(d=`normalize( mix( ${d}, ${l}, ${u} * ${u} ) )`);let p=`inverseTransformDirection( ${d}, viewMatrix )`;o?(e.addNodeCode(`vec3 reflectVec = ${p};`),n="reflectVec"):n=p;break}case Ur.CUBE:{let a=new Ur(Ur.VECTOR).build(e,"v3"),s="vec3( -"+a+".x, "+a+".yz )";o?(e.addNodeCode(`vec3 reflectCubeVec = ${s};`),n="reflectCubeVec"):n=s;break}case Ur.SPHERE:{let s="normalize( ( viewMatrix * vec4( "+new Ur(Ur.VECTOR).build(e,"v3")+", 0.0 ) ).xyz + vec3( 0.0, 0.0, 1.0 ) ).xy * 0.5 + 0.5";o?(e.addNodeCode(`vec2 reflectSphereVec = ${s};`),n="reflectSphereVec"):n=s;break}}return e.format(n,this.getType(),r)}else return console.warn("ReflectNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.type,r)}},ho=Ur;ho.CUBE="cube",ho.SPHERE="sphere",ho.VECTOR="vector";var zu=class extends ge{constructor(e=new Kt,r,o){super("v4");this.nodeType="TextureCube";this.value=e,this.radianceNode=new Ua(this.value,r??new ho(ho.VECTOR),o),this.irradianceNode=new Ua(this.value,new Lt(Lt.WORLD),new se(1).setReadonly(!0))}generate(e,r){return e.isShader("fragment")?(e.require("irradiance"),e.context.bias&&e.context.bias.setTexture(this.value),(e.slot==="irradiance"?this.irradianceNode:this.radianceNode).build(e,r)):(console.warn("TextureCubeNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),r))}};import{CubeTexture as jE}from"three";var Gu=class extends Xe{constructor(e=new jE,r,o){super("v4",{shared:!0});this.nodeType="CubeTexture";this.value=e,this.uv=r??new ho,this.bias=o}getTexture(e,r){return super.generate(e,r,this.value.uuid,"tc")}generate(e,r){if(r==="samplerCube")return this.getTexture(e,r);let o=this.getTexture(e,r),n=this.uv?.build(e,"v3"),a=this.bias?this.bias.build(e,"f"):void 0;a===void 0&&e.context.bias&&(a=e.context.bias.setTexture(this).build(e,"f"));let s;a?s="texCubeBias( "+o+", "+n+", "+a+" )":s="texCube( "+o+", "+n+" )";let l={include:e.isShader("vertex"),ignoreCache:!0},c=this.getType(e);return e.addContext(l),this.colorSpace=this.colorSpace??new Yt(new Ue("",c)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(s),s=this.colorSpace.build(e,c),e.removeContext(),e.format(s,c,r)}};var jb=`
|
|
102
102
|
uniform int frameIndex;
|
|
103
103
|
uniform vec2 resolution;
|
|
104
104
|
uniform mat4 previousModelViewMatrix;
|
|
@@ -106,7 +106,7 @@ uniform mat4 previousProjectionMatrix;
|
|
|
106
106
|
|
|
107
107
|
varying vec4 vCurrentPosition;
|
|
108
108
|
varying vec4 vPreviousPosition;
|
|
109
|
-
`,
|
|
109
|
+
`,Ub=`
|
|
110
110
|
layout(location = 1) out vec4 gVelocity;
|
|
111
111
|
|
|
112
112
|
uniform int frameIndex;
|
|
@@ -148,7 +148,7 @@ float getNoiseInterleavedGradient(vec2 screenPos) {
|
|
|
148
148
|
return fract(magic.z * fract(dot(screenPos, magic.xy)));
|
|
149
149
|
}
|
|
150
150
|
|
|
151
|
-
`,
|
|
151
|
+
`,kb=`
|
|
152
152
|
// TODO: This could be generated CPU side and passed to the shader every frame
|
|
153
153
|
const vec2 haltonSequence[16] = vec2[16](
|
|
154
154
|
vec2( 0.000000,-0.333334),
|
|
@@ -185,7 +185,7 @@ vPreviousPosition.xy += OUTLINE_COMPENSATION;
|
|
|
185
185
|
#endif
|
|
186
186
|
gl_Position = currentPositionJittered;
|
|
187
187
|
|
|
188
|
-
`,
|
|
188
|
+
`,Hb=`
|
|
189
189
|
vec2 oldPos = vPreviousPosition.xy;
|
|
190
190
|
oldPos /= vPreviousPosition.w;
|
|
191
191
|
oldPos.xy = (oldPos.xy+1.)/2.0;
|
|
@@ -200,14 +200,14 @@ vec2 velocity = (newPos - oldPos);
|
|
|
200
200
|
if (gl_FragColor.a <= 0.0) discard;
|
|
201
201
|
|
|
202
202
|
gVelocity = vec4(velocity, 0.0, 1.0);
|
|
203
|
-
`,Hb=`
|
|
204
|
-
layout(location = 1) out vec4 gVelocity;
|
|
205
203
|
`,Wb=`
|
|
204
|
+
layout(location = 1) out vec4 gVelocity;
|
|
205
|
+
`,qb=`
|
|
206
206
|
// Discard fully transparent pixels
|
|
207
207
|
if (gl_FragColor.a <= 0.0) discard;
|
|
208
208
|
|
|
209
209
|
gVelocity = vec4(0.0, 0.0, 0.0, 1.0);
|
|
210
|
-
`;var
|
|
210
|
+
`;var Xb=["x","y","z","w"],qE=["float","vec2","vec3","vec4"],$E={float:"f",vec2:"v2",vec3:"v3",vec4:"v4",mat4:"v4",int:"i",bool:"b","float[]":"f[]","vec4[]":"v4[]"},XE={t:"sampler2D",tc:"samplerCube",b:"bool",i:"int",f:"float",c:"vec3",v2:"vec2",v3:"vec3",v4:"vec4",m3:"mat3",m4:"mat4","f[]":"float[]","v4[]":"vec4[]"},ka=class{constructor(){this.includes={consts:{},functions:{},structs:{}};this.cache="";this.slot="";this.shader="";this.context={};this.needsJitter=!0;this.getIncludesCode=function(){function t(e,r){return e.deps.length-r.deps.length}return function(r,o){let n=this.getIncludes(r,o);if(!n)return"";let a="";n=n.sort(t);for(let s=0;s<n.length;s++)n[s].src&&(a+=n[s].src+`
|
|
211
211
|
`);return a}}();this.slots=[],this.caches=[],this.contexts=[],this.keywords={},this.nodeData={},this.fragmentVariables={},this.fragmentParsVariables={},this.vertexParsVariables={},this.requires={uv:[],color:[],transparent:!1,irradiance:!1,position:!1,worldPosition:!1,normal:!1,worldNormal:!1,vWorldViewDir:!1,modelMatrix:!1,viewMatrix:!1,projectionMatrix:!1},this.includes={consts:[],functions:[],structs:[]},this.attributes={},this.prefixCode=["#ifdef TEXTURE_LOD_EXT"," #define texCube(a, b) textureCube(a, b)"," #define texCubeBias(a, b, c) textureCubeLodEXT(a, b, c)"," #define tex2D(a, b) texture2D(a, b)"," #define tex2DBias(a, b, c) texture2DLodEXT(a, b, c)","#else"," #define texCube(a, b) textureCube(a, b)"," #define texCubeBias(a, b, c) textureCube(a, b, c)"," #define tex2D(a, b) texture2D(a, b)"," #define tex2DBias(a, b, c) texture2D(a, b, c)","#endif",`
|
|
212
212
|
// NOTE: Include Spline's blending modes. This could be part of BlendNode
|
|
213
213
|
#define SPE_BLENDING_NORMAL 0
|
|
@@ -245,26 +245,26 @@ layout(location = 1) out vec4 gVelocity;
|
|
|
245
245
|
`),fragment:["float accumAlpha = 0.0;",`void accumulateAlpha(float alpha) {
|
|
246
246
|
accumAlpha += (1.0 - accumAlpha) * alpha;
|
|
247
247
|
}`,""].join(`
|
|
248
|
-
`)},this.code={vertex:"",fragment:""},this.nodeCode={vertex:"",fragment:""},this.resultCode={vertex:"",fragment:""},this.finalCode={vertex:"",fragment:""},this.inputs={uniforms:{list:[],vertex:[],fragment:[]},arrayUniforms:{list:[],vertex:[],fragment:[]},vars:{varying:[],vertex:[],fragment:[]}},this.defines={},this.uniforms={},this.extensions={derivatives:!1,fragDepth:!1,drawBuffers:!1,shaderTextureLOD:!1},this.updaters=[],this.nodes=[],this.analyzing=!1}build(t,e){this.addVertexParsCode(
|
|
248
|
+
`)},this.code={vertex:"",fragment:""},this.nodeCode={vertex:"",fragment:""},this.resultCode={vertex:"",fragment:""},this.finalCode={vertex:"",fragment:""},this.inputs={uniforms:{list:[],vertex:[],fragment:[]},arrayUniforms:{list:[],vertex:[],fragment:[]},vars:{varying:[],vertex:[],fragment:[]}},this.defines={},this.uniforms={},this.extensions={derivatives:!1,fragDepth:!1,drawBuffers:!1,shaderTextureLOD:!1},this.updaters=[],this.nodes=[],this.analyzing=!1}build(t,e){this.addVertexParsCode(jb),this.addFragmentParsCode(Ub),this.buildShader("vertex",t),this.buildShader("fragment",e);for(let r=0;r<this.requires.uv.length;r++)if(this.requires.uv[r]){let o=r>0?r+1:"";this.addVaryCode("varying vec2 vUv"+o+";"),r>0&&this.addVertexParsCode("attribute vec2 uv"+o+";"),this.addVertexFinalCode("vUv"+o+" = uv"+o+";")}return this.requires.color[0]&&(this.addVaryCode("varying vec4 vColor;"),this.addVertexParsCode("attribute vec4 color;"),this.addVertexFinalCode("vColor = color;")),this.requires.color[1]&&(this.addVaryCode("varying vec4 vColor2;"),this.addVertexParsCode("attribute vec4 color2;"),this.addVertexFinalCode("vColor2 = color2;")),this.requires.position&&(this.addVaryCode("varying vec3 vPosition;"),this.addVertexFinalCode("vPosition = transformed;")),this.requires.worldPosition,this.requires.normal&&(this.addVaryCode("varying vec3 vObjectNormal;"),this.addVertexFinalCode(`
|
|
249
249
|
#ifndef SHAPEBLEND
|
|
250
250
|
vObjectNormal = normal;
|
|
251
251
|
#else
|
|
252
252
|
vObjectNormal = objectNormal;
|
|
253
253
|
#endif
|
|
254
|
-
`)),this.requires.modelMatrix&&this.addFragmentParsCode("uniform mat4 modelMatrix;"),this.requires.viewMatrix&&this.addFragmentParsCode("uniform mat4 viewMatrix;"),this.requires.projectionMatrix&&this.addFragmentParsCode("uniform mat4 projectionMatrix;"),this.requires.worldNormal&&(this.addVaryCode("varying vec3 vWNormal;"),this.addVertexFinalCode("vWNormal = inverseTransformDirection( transformedNormal, viewMatrix ).xyz;")),this.requires.vWorldViewDir&&(this.addVaryCode("varying vec3 vWorldViewDir;"),this.addVertexFinalCode("vWorldViewDir = isPerspectiveMatrix( projectionMatrix ) ? ( (modelMatrix * vec4(position, 1.0)).xyz - cameraPosition ) : vec3( -viewMatrix[0][2], -viewMatrix[1][2], -viewMatrix[2][2] );")),this.needsJitter&&(this.addVertexFinalCode(
|
|
254
|
+
`)),this.requires.modelMatrix&&this.addFragmentParsCode("uniform mat4 modelMatrix;"),this.requires.viewMatrix&&this.addFragmentParsCode("uniform mat4 viewMatrix;"),this.requires.projectionMatrix&&this.addFragmentParsCode("uniform mat4 projectionMatrix;"),this.requires.worldNormal&&(this.addVaryCode("varying vec3 vWNormal;"),this.addVertexFinalCode("vWNormal = inverseTransformDirection( transformedNormal, viewMatrix ).xyz;")),this.requires.vWorldViewDir&&(this.addVaryCode("varying vec3 vWorldViewDir;"),this.addVertexFinalCode("vWorldViewDir = isPerspectiveMatrix( projectionMatrix ) ? ( (modelMatrix * vec4(position, 1.0)).xyz - cameraPosition ) : vec3( -viewMatrix[0][2], -viewMatrix[1][2], -viewMatrix[2][2] );")),this.needsJitter&&(this.addVertexFinalCode(kb),this.addFragmentFinalCode(Hb)),this}buildShader(t,e){this.resultCode[t]=e.build(this.setShader(t),"v4")}setMaterial(t,e){return this.defines={},this}addFlow(t,e,r){return this.addSlot(t).addCache(e).addContext(r)}removeFlow(){return this.removeSlot().removeCache().removeContext()}addCache(t){return this.cache=t??"",this.caches.push(this.cache),this}removeCache(){return this.caches.pop(),this.cache=this.caches[this.caches.length-1]||"",this}addContext(t){return this.context=Object.assign({},this.context,t),this.context.extra=this.context.extra||{},this.contexts.push(this.context),this}removeContext(){return this.contexts.pop(),this.context=this.contexts[this.contexts.length-1]||{},this}addSlot(t){return this.slot=t||"",this.slots.push(this.slot),this}removeSlot(){return this.slots.pop(),this.slot=this.slots[this.slots.length-1]||"",this}addFragmentVariable(t,e){this.fragmentVariables[t]===void 0&&(this.addFragmentCode(`${e} ${t};`),this.fragmentVariables[t]="")}addFragmentParsVariable(t,e){this.fragmentParsVariables[t]===void 0&&(this.addFragmentParsCode(`${e} ${t};`),this.fragmentParsVariables[t]="")}addVertexParsVariable(t,e){this.vertexParsVariables[t]===void 0&&(this.addVertexParsCode(`${e} ${t};`),this.vertexParsVariables[t]="")}addVertexCode(t){this.addCode(t,"vertex")}addFragmentCode(t){this.addCode(t,"fragment")}addCode(t,e){this.code[e??this.shader]+=t+`
|
|
255
255
|
`}addVertexNodeCode(t){this.addNodeCode(t,"vertex")}addFragmentNodeCode(t){this.addNodeCode(t,"fragment")}addNodeCode(t,e){this.nodeCode[e??this.shader]+=t+`
|
|
256
256
|
`}clearNodeCode(t){t=t??this.shader;let e=this.nodeCode[t];return this.nodeCode[t]="",e}clearVertexNodeCode(){return this.clearNodeCode("vertex")}clearFragmentNodeCode(){return this.clearNodeCode("fragment")}addVertexFinalCode(t){this.addFinalCode(t,"vertex")}addFragmentFinalCode(t){this.addFinalCode(t,"fragment")}addFinalCode(t,e){this.finalCode[e??this.shader]+=t+`
|
|
257
257
|
`}addVertexParsCode(t){this.addParsCode(t,"vertex")}addFragmentParsCode(t){this.addParsCode(t,"fragment")}addParsCode(t,e){this.parsCode[e??this.shader]+=t+`
|
|
258
258
|
`}addVaryCode(t){this.addVertexParsCode(t),this.addFragmentParsCode(t)}isCache(t){return this.caches.indexOf(t)!==-1}isSlot(t){return this.slots.indexOf(t)!==-1}define(t,e){this.defines[t]=e===void 0?1:e}require(t){this.requires[t]=!0}isDefined(t){return this.defines[t]!==void 0}getVar(t,e,r,o="varying",n="V",a=""){let s=this.getVars(o),l=s[t];if(!l){let c=s.length;l={name:r||"node"+n+c+(a?"_"+a:""),type:e},s.push(l),s[t]=l}return l}getTempVar(t,e,r,o){return this.getVar(t,e,r,this.shader,"T",o)}getAttribute(t,e){if(!this.attributes[t]){let r=this.getVar(t,e);this.addVertexParsCode("attribute "+e+" "+t+";"),this.addVertexFinalCode(r.name+" = "+t+";"),this.attributes[t]={varying:r,name:t,type:e}}return this.attributes[t]}getCode(t){return[this.prefixCode,this.parsCode[t],this.getVarListCode(this.getVars("varying"),"varying"),this.getVarListCode(this.inputs.uniforms[t],"uniform"),this.getVarListCode(this.inputs.arrayUniforms[t],"uniform"),this.getIncludesCode("consts",t),this.getIncludesCode("structs",t),this.getIncludesCode("functions",t),"void main() {",this.getVarListCode(this.getVars(t)),this.code[t],this.resultCode[t],this.finalCode[t],"}"].join(`
|
|
259
259
|
`)}getVarListCode(t,e){e=e??"";let r="";for(let o=0,n=t.length;o<n;++o){let a=t[o],s=a.type,l=a.name,c=a.size,u=this.getFormatByType(s);if(u===void 0)throw new Error("Node pars "+u+" not found.");u.includes("[]")?r+=e+" "+u.substring(0,u.length-2)+" "+l+`[${c}];
|
|
260
260
|
`:r+=e+" "+u+" "+l+`;
|
|
261
|
-
`}return r}getVars(t){return this.inputs.vars[t??this.shader]}getNodeData(t){let e=t instanceof $e?t.uuid:t;return this.nodeData[e]=this.nodeData[e]||{}}createUniform(t,e,r,o,n,a){if(e.includes("[]")){let s=this.inputs.arrayUniforms,l=s.list.length,c=new
|
|
261
|
+
`}return r}getVars(t){return this.inputs.vars[t??this.shader]}getNodeData(t){let e=t instanceof $e?t.uuid:t;return this.nodeData[e]=this.nodeData[e]||{}}createUniform(t,e,r,o,n,a){if(e.includes("[]")){let s=this.inputs.arrayUniforms,l=s.list.length,c=new pl({type:e,size:r.size,name:o||"nodeUA"+l+(a?"_"+a:""),node:r,needsUpdate:n});return s.list.push(c),s[t].push(c),s[t][c.name]=c,this.uniforms[c.name]=c,c}else{let s=this.inputs.uniforms,l=s.list.length,c=new pl({type:e,name:o||"nodeU"+l+(a?"_"+a:""),node:r,needsUpdate:n});return s.list.push(c),s[t].push(c),s[t][c.name]=c,this.uniforms[c.name]=c,c}}createVertexUniform(t,e,r,o,n){return this.createUniform("vertex",t,e,r,o,n)}createFragmentUniform(t,e,r,o,n){return this.createUniform("fragment",t,e,r,o,n)}include(t,e,r){let o;if(t=typeof t=="string"?It.get(t):t,this.context.include===!1)return t.name;t instanceof J?o=this.includes.functions:t instanceof Ge?o=this.includes.consts:t instanceof Ga&&(o=this.includes.structs);let n=o[this.shader]=o[this.shader]||[];if(t){let a=n[t.name];if(a||(a=n[t.name]={node:t,deps:[]},n.push(a),a.src=t.build(this,"source")),t instanceof J&&e&&n[e.name]&&n[e.name].deps.indexOf(t)===-1&&(n[e.name].deps.push(t),t.includes?.length)){let s=0;do this.include(t.includes[s++],e);while(s<t.includes.length)}return r&&(a.src=r),t.name}else throw new Error("Include not found.")}colorToVectorProperties(t){return t.replace("r","x").replace("g","y").replace("b","z").replace("a","w")}colorToVector(t){return t.replace(/c/g,"v3")}getIncludes(t,e){return this.includes[t][e||this.shader]}getConstructorFromLength(t){return qE[t-1]}isTypeMatrix(t){return/^m/.test(t)}getTypeLength(t){return t==="f"?1:parseInt(this.colorToVector(t).substr(1))}getTypeFromLength(t){return t===1?"f":"v"+t}findNode(...t){for(let e=0;e<arguments.length;e++){let r=t[e];if(r?.isNode)return r}}resolve(...t){for(let e=0;e<arguments.length;e++){let r=t[e];if(r!==void 0){if(r.isNode)return r;if(r.isTexture)switch(r.mapping){case UE:case kE:return new Gu(r);case HE:return new zu(new Kt(r));default:return new Kt(r)}else{if(r.isVector2)return new lt(r);if(r.isVector3)return new Ft(r);if(r.isVector4)return new rr(r)}}}}format(t,e,r){switch(this.colorToVector(r+" <- "+e)){case"f <- v2":return t+".x";case"f <- v3":return t+".x";case"f <- v4":return t+".x";case"f <- i":case"f <- b":return"float( "+t+" )";case"v2 <- f":return"vec2( "+t+" )";case"v2 <- v3":return t+".xy";case"v2 <- v4":return t+".xy";case"v2 <- i":case"v2 <- b":return"vec2( float( "+t+" ) )";case"v3 <- f":return"vec3( "+t+" )";case"v3 <- v2":return"vec3( "+t+", 0.0 )";case"v3 <- v4":return t+".xyz";case"v3 <- i":case"v3 <- b":return"vec2( float( "+t+" ) )";case"v4 <- f":return"vec4( "+t+" )";case"v4 <- v2":return"vec4( "+t+", 0.0, 1.0 )";case"v4 <- v3":return"vec4( "+t+", 1.0 )";case"v4 <- i":case"v4 <- b":return"vec4( float( "+t+" ) )";case"i <- f":case"i <- b":return"int( "+t+" )";case"i <- v2":return"int( "+t+".x )";case"i <- v3":return"int( "+t+".x )";case"i <- v4":return"int( "+t+".x )";case"b <- f":return"( "+t+" != 0.0 )";case"b <- v2":return"( "+t+" != vec2( 0.0 ) )";case"b <- v3":return"( "+t+" != vec3( 0.0 ) )";case"b <- v4":return"( "+t+" != vec4( 0.0 ) )";case"b <- i":return"( "+t+" != 0 )"}return t}getTypeByFormat(t){return $E[t]||t}getFormatByType(t){return XE[t]||t}getUUID(t,e){return e=e!==void 0?e:!0,e&&this.cache&&(t=this.cache+"-"+t),t}getElementByIndex(t){return Xb[t]}getIndexByElement(t){return Xb.indexOf(t)}isShader(t){return this.shader===t}setShader(t){return this.shader=t,this}mergeDefines(t){for(let e in t)this.defines[e]=t[e];return this.defines}mergeUniform(t){for(let e in t)this.uniforms[e]=t[e];return this.uniforms}getTextureEncodingFromMap(t){let e;return t?t.isTexture&&(e=t.encoding):e=$b,e===$b&&this.context.gamma&&(e=WE),e}};import{MathUtils as TN,Vector2 as qr,Vector3 as go,Vector4 as as}from"three";var We=class extends Xe{constructor(e=0,r,o,n){super("c");this.nodeType="Color";this.value=e instanceof Ct?e:new Ct(e||0,r,o,n)}setRGBA(e){this.value.setRGBA(e.r,e.g,e.b,e.a)}generate(e,r,o,n,a,s){o=e.getUUID(o??this.getUUID()),n=n??this.getType(e);let l=e.getNodeData(o),c=this.getReadonly()&&this.generateReadonly!==void 0;if(this.alpha){let u=this.alpha.build(e,"f");e.addFragmentNodeCode(`accumAlpha += ( 1.0 - accumAlpha ) * ${u};`)}return c?this.generateReadonly(e,r,o,n,a,s):e.isShader("vertex")?(l.vertex||(l.vertex=e.createVertexUniform(n,this,a,s,this.getLabel())),e.format(l.vertex.name,n,r)):(l.fragment||(l.fragment=e.createFragmentUniform(n,this,a,s,this.getLabel())),e.format(l.fragment.name,n,r))}generateReadonly(e,r,o,n,a,s){return e.format("vec3("+this.value.r+", "+this.value.g+", "+this.value.b+")",n,r)}};var Re=class extends Xe{constructor(e){super("i");this.nodeType="Int";this.value=Math.floor(e??0)}generateReadonly(e,r,o,n,a,s){return e.format(this.value.toString(),n,r)}};import{UniformsLib as eN,UniformsUtils as tN}from"three";var ct=class extends Xe{constructor(e){super("b");this.nodeType="Bool";this.value=e??!1}generateReadonly(e,r,o,n){return e.format(this.value?"true":"false",n,r)}};var kr=class extends Xe{constructor(e=1,r){super("f[]");this.nodeType="FloatArray";this.size=e,this.value=Array.isArray(r)?r:typeof r=="number"?new Array(e).fill(r):new Array(e).fill(0)}};import{Vector3 as YE}from"three";var Pi=class extends Xe{};var Fu=class extends Pi{constructor(e){super("v3");this.image=e;this._value=new YE}get value(){return this._value.x=this.image.isVideo?this.image.img.videoWidth??0:this.image.img.width,this._value.y=this.image.isVideo?this.image.img.videoHeight??0:this.image.img.height,this._value}};var un=class extends Pi{constructor(e,r,o=1008,n=1006){super("t");this.image=e;this.wrap=r;this.minFilter=o;this.magFilter=n}get value(){return this.image.getTexture(this.wrap,this.minFilter,this.magFilter)}};import{Matrix3 as KE}from"three";var Ha=class extends Xe{constructor(e){super("m3");this.nodeType="Matrix3";this.value=e??new KE}generateReadonly(e,r,o,n,a,s){return e.format("mat3("+this.value.elements.join(", ")+")",n,r)}get elements(){return this.value.elements}set elements(e){this.value.fromArray(e)}};import{Matrix4 as QE}from"three";var jt=class extends Xe{constructor(e){super("m4");this.nodeType="Matrix4";this.value=e??new QE}generateReadonly(e,r,o,n,a,s){return e.format("mat4("+this.value.elements.join(", ")+")",n,r)}get elements(){return this.value.elements}set elements(e){this.value.fromArray(e)}};import{MathUtils as ZE,Matrix3 as Kb}from"three";function Yb(i,t,e,r=0){i.setUvTransform(e[0],e[1],t[0],t[1],0,0,0).premultiply(new Kb().makeRotation(r*ZE.DEG2RAD))}var ju=class extends Ha{constructor(e,r,o=0){super(new Kb);this.repeat=e;this.offset=r;this.rotation=o;Yb(this.value,e,r,o)}updateMatrix(){Yb(this.value,this.repeat,this.offset,this.rotation)}};import{Vector4 as Qb}from"three";var Hr=class extends Xe{constructor(e=1,r){super("v4[]");this.nodeType="Vector4Array";this.size=e,this.value=Array.isArray(r)?r:r instanceof Qb?new Array(e).fill(r):new Array(e).fill(new Qb(0))}};var Wa=class extends ge{constructor(e,r,o,n){super("v3");this.nodeType="Blend";this.a=e,this.b=r,this.alpha=o,this.mode=n}generate(e,r){if(e.isShader("fragment")){let o=[];return o.push(this.a.build(e,"c")),o.push(this.b.build(e,"c")),o.push(this.alpha.build(e,"f")),o.push(this.mode.build(e,"i")),e.format("spe_blend("+o.join(",")+")",this.getType(e),r)}else return console.warn("BlendNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}};var $f=class extends ge{constructor(e,r){super("v3");this.nodeType="CustomColor";this.color=e,this.alpha=r,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.isShader("fragment")){let o=e.include($f.Nodes.customColor);e.addFragmentVariable(this.calpha,"float");let n=[];return n.push(this.color.build(e,"v3")),n.push(this.mask?`luminance(${this.mask.build(e,"v3")})`:"1.0"),n.push(this.alpha.build(e,"f")),n.push(this.calpha),e.format(o+"("+n.join(",")+")",this.getType(e),r)}else return console.warn("CustomColorNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},dn=$f;dn.Nodes=function(){return{customColor:new J(`vec3 customColor(vec3 color, float mask, float alpha, out float calpha) {
|
|
262
262
|
float lalpha = alpha * mask;
|
|
263
263
|
calpha = lalpha / clamp(lalpha + accumAlpha, 0.00001, 1.0);
|
|
264
264
|
accumAlpha += (1.0 - accumAlpha) * lalpha;
|
|
265
265
|
|
|
266
266
|
return color;
|
|
267
|
-
}`)}}();var
|
|
267
|
+
}`)}}();var Xf=class extends ge{constructor(e,r){super("v3");this.nodeType="CustomNormal";this.cnormal=e,this.alpha=r,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.isShader("fragment")){let o=e.include(Xf.Nodes.customNormal);e.addFragmentVariable(this.calpha,"float");let n=[];return n.push(this.cnormal.build(e,"v3")),n.push("normal"),n.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),n.push(this.alpha.build(e,"f")),n.push(this.calpha),e.format(o+"("+n.join(",")+")",this.getType(e),r)}else return console.warn("CustomNormalNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},qa=Xf;qa.Nodes=function(){return{customNormal:new J(`vec3 customNormal(vec3 cnormal, vec3 norm, float mask, float alpha, out float calpha) {
|
|
268
268
|
vec3 normal = packNormalToRGB( norm ).rgb;
|
|
269
269
|
normal *= step( vec3(0.5), cnormal );
|
|
270
270
|
|
|
@@ -273,7 +273,7 @@ layout(location = 1) out vec4 gVelocity;
|
|
|
273
273
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
274
274
|
|
|
275
275
|
return normal;
|
|
276
|
-
}`)}}();var
|
|
276
|
+
}`)}}();var $a=class extends ge{constructor(e,r,o,n,a,s,l,c,u,d,p,f){super("v3");this.nodeType="CustomTexture";this.texture=e,this.textureSize=r,this.crop=o,this.projection=n,this.axis=a,this.side=s,this.size=l,this.blending=c,this.mat=u,this.isMask=f,this.alpha=d,this.mode=p,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){e.require("position"),e.require("normal"),e.require("uv"),e.requires.uv=[!0],e.extensions.shaderTextureLOD=!0,e.extensions.derivatives=!0;let o=`g${this.uuid.toString().replace(/-/g,"")}`,n;switch(this.projection.value){case 3:n=e.include($a.Nodes.cylindrical);break;case 2:n=e.include($a.Nodes.spherical);break;case 1:let s=["vec3(1.0, 0.0, 0.0)","vec3(0.0, 1.0, 0.0)","vec3(0.0, 0.0, 1.0)"][this.axis.value],l=["zy","xz","xy"][this.axis.value],c=new J(`
|
|
277
277
|
vec3 ${o}_planarTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float blending, bool isMask, float mask, float alpha, int mode, out float calpha, out vec2 writeUv) {
|
|
278
278
|
vec2 projected = (1. + (position.${l})) / 2.;
|
|
279
279
|
vec2 uvs = ( mat * vec3( (projected * 2. - 1.) / (size * .5), 1. ) / 2. + 0.5 ).xy;
|
|
@@ -297,7 +297,7 @@ layout(location = 1) out vec4 gVelocity;
|
|
|
297
297
|
accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
|
|
298
298
|
|
|
299
299
|
return col;
|
|
300
|
-
}`);n=e.include(c);break;case 4:n=e.include(
|
|
300
|
+
}`);n=e.include(c);break;case 4:n=e.include($a.Nodes.triplanar);break;default:n=e.include($a.Nodes.uv);break}e.addFragmentVariable(this.calpha,"float");let a=[];if(a.push("normal"),a.push(this.texture.generate(e,"t")),a.push(this.textureSize.build(e,"v2")),a.push(this.crop.build(e,"f")),a.push(this.mat.build(e,"mat3")),a.push(this.size.build(e,"v2")),a.push(this.blending.build(e,"f")),a.push(this.isMask.build(e,"b")),a.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),a.push(this.alpha.build(e,"f")),a.push(this.mode.build(e,"i")),a.push(this.calpha),this.projection.value===4){let s=`${o}_writeUvs`,l=s+"0",c=s+"1",u=s+"2",d=`${o}_triplanarWeights`;e.addFragmentVariable(l,"vec2"),e.addFragmentVariable(c,"vec2"),e.addFragmentVariable(u,"vec2"),e.addFragmentVariable(d,"vec3"),a.push(l),a.push(c),a.push(u),a.push(d)}else{let s=`${o}_writeUvs`;e.addFragmentVariable(s,"vec2"),a.push(s)}return e.format(n+"("+a.join(",")+")",this.getType(e),r)}},Oi=$a;Oi.Nodes=function(){let e=new J(`
|
|
301
301
|
vec3 cylindricalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float blending, bool isMask, float mask, float alpha, int mode, out float calpha, out vec2 writeUv) {
|
|
302
302
|
vec3 posN = normalize(position);
|
|
303
303
|
float u = 0.5 + atan(posN.z, posN.x) / (2.*3.1415);
|
|
@@ -452,7 +452,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
452
452
|
|
|
453
453
|
return col;//n * 0.5 + 0.5;
|
|
454
454
|
}
|
|
455
|
-
`);return{cylindrical:e,spherical:r,uv:o,triplanar:n}}();var
|
|
455
|
+
`);return{cylindrical:e,spherical:r,uv:o,triplanar:n}}();var Xa=class extends ge{constructor(e,r,o,n,a,s,l,c,u,d,p,f){super("v3");this.nodeType="Depth";this.gradientType=e,this.smooth=r,this.near=o,this.far=n,this.isVector=a,this.isWorldSpace=s,this.origin=l,this.direction=c,this.colors=u,this.steps=d,this.isMask=f,this.alpha=p,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){let o=`g${this.uuid.toString().replace(/-/g,"")}`,n=new J(`vec3 ${o}_sdepth(float near, float far, vec3 origin, vec3 direction, vec4 colors[${o}_MAX_COLORS], float steps[${o}_MAX_COLORS], bool isMask, float mask, float alpha, out float calpha) {
|
|
456
456
|
vec4 color = colors[0];
|
|
457
457
|
#ifdef ${o}_IS_VECTOR
|
|
458
458
|
#ifdef ${o}_LINEAR
|
|
@@ -492,7 +492,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
492
492
|
accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
|
|
493
493
|
|
|
494
494
|
return color.rgb;
|
|
495
|
-
}`,[
|
|
495
|
+
}`,[Xa.Nodes.vectorLinearWorldSpaceDepth,Xa.Nodes.vectorLinearObjectSpaceDepth,Xa.Nodes.vectorSphericalObjectSpaceDepth,Xa.Nodes.vectorSphericalWorldSpaceDepth]);if(e.isShader("fragment")){e.define(`${o}_MAX_COLORS`,this.colors.value.length),this.smooth.value&&e.define(`${o}_SMOOTH`),this.isVector.value>.5&&e.define(`${o}_IS_VECTOR`),this.gradientType.value===0&&e.define(`${o}_LINEAR`),this.isWorldSpace.value>.5&&e.define(`${o}_WORLDSPACE`),e.require("worldPosition"),e.addFragmentVariable(this.calpha,"float");let a=e.include(n),s=[];return s.push(this.near.build(e,"f")),s.push(this.far.build(e,"f")),s.push(this.origin.build(e,"v3")),s.push(this.direction.build(e,"v3")),s.push(this.colors.build(e,"v4[]")),s.push(this.steps.build(e,"f[]")),s.push(this.isMask.build(e,"b")),s.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),s.push(this.alpha.build(e,"f")),s.push(this.calpha),e.format(a+"("+s.join(",")+")",this.getType(e),r)}else return console.warn("DepthNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},Ya=Xa;Ya.Nodes=function(){let e=new J(`float vectorLinearWorldSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
|
|
496
496
|
vec3 n = normalize(direction);
|
|
497
497
|
float dist = (n.x*(vWPosition.x - origin.x) + n.y*(vWPosition.y - origin.y) + n.z*(vWPosition.z - origin.z));
|
|
498
498
|
return ( dist - near ) / ( far - near );
|
|
@@ -506,7 +506,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
506
506
|
}`),n=new J(`float vectorSphericalObjectSpaceDepth(vec3 origin, float near, float far) {
|
|
507
507
|
float dist = length(position - origin);
|
|
508
508
|
return ( dist - near ) / ( far - near );
|
|
509
|
-
}`);return{vectorLinearWorldSpaceDepth:e,vectorLinearObjectSpaceDepth:r,vectorSphericalWorldSpaceDepth:o,vectorSphericalObjectSpaceDepth:n}}();var
|
|
509
|
+
}`);return{vectorLinearWorldSpaceDepth:e,vectorLinearObjectSpaceDepth:r,vectorSphericalWorldSpaceDepth:o,vectorSphericalObjectSpaceDepth:n}}();var hl=class extends ge{constructor(e,r,o,n,a,s,l,c){super("v3");this.nodeType="Fresnel";this.color=e,this.bias=r,this.scale=o,this.intensity=n,this.factor=a,this.isMask=c,this.alpha=s,this.mode=l,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.require("vWorldViewDir"),e.require("worldNormal"),e.isShader("fragment")){e.addFragmentVariable(this.calpha,"float");let o=new J(`vec3 fresnel(vec3 color, float bias, float scale, float intensity, float factor, bool isMask, float mask, float alpha, int mode, out float calpha) {
|
|
510
510
|
float fresnel = bias + scale * pow( abs( factor + dot( normalize( vWorldViewDir ), normalize( vWNormal ) ) ), intensity );
|
|
511
511
|
|
|
512
512
|
float lalpha = clamp(fresnel, 0.0, 1.0) * alpha * mask;
|
|
@@ -514,7 +514,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
514
514
|
accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
|
|
515
515
|
|
|
516
516
|
return color;
|
|
517
|
-
}`),n=e.include(o),a=[];return a.push(this.color.build(e,"c")),a.push(this.bias.build(e,"f")),a.push(this.scale.build(e,"f")),a.push(this.intensity.build(e,"f")),a.push(this.factor.build(e,"f")),a.push(this.isMask.build(e,"b")),a.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),a.push(this.alpha.build(e,"f")),a.push(this.mode.build(e,"i")),a.push(this.calpha),e.format(n+"("+a.join(",")+")",this.getType(e),r)}else return console.warn("FresnelNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}};var
|
|
517
|
+
}`),n=e.include(o),a=[];return a.push(this.color.build(e,"c")),a.push(this.bias.build(e,"f")),a.push(this.scale.build(e,"f")),a.push(this.intensity.build(e,"f")),a.push(this.factor.build(e,"f")),a.push(this.isMask.build(e,"b")),a.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),a.push(this.alpha.build(e,"f")),a.push(this.mode.build(e,"i")),a.push(this.calpha),e.format(n+"("+a.join(",")+")",this.getType(e),r)}else return console.warn("FresnelNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}};var Yf=class extends ge{constructor(e,r,o,n,a,s,l,c,u){super("v3");this.nodeType="Gradient";this.gradientType=e,this.smooth=r,this.colors=o,this.steps=n,this.offset=a,this.morph=s,this.angle=l,this.isMask=u,this.alpha=c,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.isShader("fragment")){e.define("GRAD_MAX",10),e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(Yf.Nodes.gradient),n=[];return n.push(this.gradientType.build(e,"i")),n.push(this.smooth.build(e,"b")),n.push(this.colors.build(e,"v4[]")),n.push(this.steps.build(e,"f[]")),n.push(this.offset.build(e,"v2")),n.push(this.morph.build(e,"v2")),n.push(this.angle.build(e,"f")),n.push(this.isMask.build(e,"b")),n.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),n.push(this.alpha.build(e,"f")),n.push(this.calpha),e.format(o+"("+n.join(",")+")",this.getType(e),r)}else return console.warn("GradientNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},Ka=Yf;Ka.Nodes=function(){return{gradient:new J(`vec3 gradient(int gradientType, bool smoothed, vec4 colors[GRAD_MAX], float steps[GRAD_MAX], vec2 offset, vec2 morph, float angle, bool isMask, float mask, float alpha, out float calpha) {
|
|
518
518
|
vec4 color = colors[0];
|
|
519
519
|
vec2 m = morph / vUv.xy;
|
|
520
520
|
vec2 rot = vec2( 0.5 + m.x, m.y );
|
|
@@ -556,7 +556,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
556
556
|
accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
|
|
557
557
|
|
|
558
558
|
return color.xyz;
|
|
559
|
-
}`)}}();var
|
|
559
|
+
}`)}}();var Kf=class extends ge{constructor(e,r,o,n,a){super("v3");this.nodeType="Matcap";this.texture=e,this.isMask=n,this.alpha=r,this.mode=o,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`,this.rotation=a}generate(e,r){if(e.isShader("fragment")){e.addFragmentVariable(this.calpha,"float");let o=e.include(Kf.Nodes.matcap);e.require("normal"),e.requires.normal=!0;let n=[];return n.push(this.texture.generate(e,"t")),n.push("normal"),n.push(this.isMask.build(e,"b")),n.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),n.push(this.alpha.build(e,"f")),n.push(this.mode.build(e,"i")),n.push(this.calpha),n.push(this.rotation.build(e,"f")),e.format(o+"("+n.join(",")+")",this.getType(e),r)}else return console.warn("MatcapNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},Qa=Kf;Qa.Nodes=function(){return{matcap:new J(`vec3 matcap(sampler2D matcapTex, vec3 normal, bool isMask, float mask, float alpha, int mode, out float calpha, float rotation) {
|
|
560
560
|
vec3 viewDir = normalize( vViewPosition );
|
|
561
561
|
vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );
|
|
562
562
|
vec3 y = cross( viewDir, x );
|
|
@@ -710,7 +710,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
710
710
|
vec4 o3 = o2 * d.z + o1 * (1.0 - d.z);
|
|
711
711
|
vec2 o4 = o3.yw * d.x + o3.xz * (1.0 - d.x);
|
|
712
712
|
return o4.y * d.y + o4.x * (1.0 - d.y);
|
|
713
|
-
}`,[c]),
|
|
713
|
+
}`,[c]),d=new J(`float fbm(vec3 x) {
|
|
714
714
|
float v = 0.0;
|
|
715
715
|
float a = 0.5;
|
|
716
716
|
vec3 shift = vec3(100);
|
|
@@ -720,7 +720,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
720
720
|
a *= 0.5;
|
|
721
721
|
}
|
|
722
722
|
return v;
|
|
723
|
-
}`,[u]);
|
|
723
|
+
}`,[u]);d.keywords.NUM_OCTAVES=new Ge(`int NUM_OCTAVES ${5}`);let p=new J("vec3 fade(vec3 t) {return t*t*t*(t*(t*6.0-15.0)+10.0);}"),f=new J(`float perlin(vec3 P){
|
|
724
724
|
vec3 Pi0 = floor(P);
|
|
725
725
|
vec3 Pi1 = Pi0 + vec3(1.0);
|
|
726
726
|
Pi0 = mod(Pi0, 289.0);
|
|
@@ -779,7 +779,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
779
779
|
vec2 n_yz = mix(n_z.xy, n_z.zw, fade_xyz.y);
|
|
780
780
|
float n_xyz = mix(n_yz.x, n_yz.y, fade_xyz.x);
|
|
781
781
|
return 2.2 * n_xyz;
|
|
782
|
-
}`,[n,a,
|
|
782
|
+
}`,[n,a,p]),h=new J(`float hashwithoutsine13(vec3 p3)
|
|
783
783
|
{
|
|
784
784
|
p3 = fract(p3 * .1031);
|
|
785
785
|
p3 += dot(p3, p3.yzx + 33.33);
|
|
@@ -797,7 +797,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
797
797
|
// Chebyshev
|
|
798
798
|
// vec3 a = abs(p);
|
|
799
799
|
// return max(a.x, max(a.y, a.z));
|
|
800
|
-
}`),
|
|
800
|
+
}`),x=new J(`float smin( float a, float b, float k )
|
|
801
801
|
{
|
|
802
802
|
float h = smoothstep(0.0, 1.0, 0.5 + 0.5 * (b - a) / k);
|
|
803
803
|
float correction = k * h * (1.0 - h);
|
|
@@ -955,7 +955,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
955
955
|
return hashwithoutsine13(vec3(p + mb) + seed);
|
|
956
956
|
}
|
|
957
957
|
}
|
|
958
|
-
`,[h,m,y,
|
|
958
|
+
`,[h,m,y,x,v,w]);return{simplexFast:e,simplexPrecise:r,simplexFractal:o,simplexAshima:s,fbm:d,perlin:f,voronoi:O}}();var Za=class extends ge{constructor(e,r,o,n,a,s,l,c,u,d,p,f,h,m,y,x,v,w,O){super("v3");this.nodeType="Noise";this.scale=e,this.size=r,this.move=o,this.fA=n,this.fB=a,this.distortion=s,this.colorA=l,this.colorB=c,this.colorC=u,this.colorD=d,this.noiseType=f,this.voronoiStyle=m,this.highCut=y,this.lowCut=x,this.smoothness=v,this.seed=w,this.quality=O,this.isMask=h,this.alpha=p,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r,o,n,a){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let l=["simplexFast","simplexFractal","simplexAshima","fbm","perlin","voronoi"][this.noiseType.value],c=l=="voronoi"?`
|
|
959
959
|
float v = ${l}(st + move, voronoiStyle, smoothness, seed, quality);
|
|
960
960
|
|
|
961
961
|
// Apply clipping to colors
|
|
@@ -992,7 +992,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
992
992
|
accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
|
|
993
993
|
|
|
994
994
|
return clamp(color, 0.0, 1.0).rgb;
|
|
995
|
-
}`,[Bt.simplexFast,Bt.simplexFractal,Bt.simplexAshima,Bt.fbm,Bt.perlin,Bt.voronoi]),
|
|
995
|
+
}`,[Bt.simplexFast,Bt.simplexFractal,Bt.simplexAshima,Bt.fbm,Bt.perlin,Bt.voronoi]),d=e.include(u),p=[];return p.push(this.scale.build(e,"f")),p.push(this.size.build(e,"v3")),p.push(this.move.build(e,"f")),p.push(this.fA.build(e,"v2")),p.push(this.fB.build(e,"v2")),p.push(this.distortion.build(e,"v2")),p.push(this.colorA.build(e,"v4")),p.push(this.colorB.build(e,"v4")),p.push(this.colorC.build(e,"v4")),p.push(this.colorD.build(e,"v4")),p.push(this.voronoiStyle.build(e,"i")),p.push(this.highCut.build(e,"f")),p.push(this.lowCut.build(e,"f")),p.push(this.smoothness.build(e,"f")),p.push(this.seed.build(e,"f")),p.push(this.quality.build(e,"i")),p.push(this.isMask.build(e,"b")),p.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),p.push(this.alpha.build(e,"f")),p.push(this.calpha),e.format(d+"("+p.join(",")+")",this.getType(e),r)}};Za.numOctaves=5;var Qf=class extends ge{constructor(e,r,o,n,a,s,l,c,u,d,p,f,h,m,y,x){super("v3");this.nodeType="Outline";this.firstTime=!0,this.outlineColor=e,this.contourColor=r,this.outlineWidth=o,this.contourWidth=n,this.contourThreshold=a,this.outlineThreshold=s,this.contourFrequency=l,this.outlineSmoothing=c,this.contourDirection=u,this.positionalLines=d,this.compensation=p,this.resolution=f,this.normalMap=h,this.depthMap=m,this.pixelRatio=y,this.alpha=x,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){let o=`g${this.uuid.toString().replace(/-/g,"")}`;if(e.require("vWorldViewDir"),e.require("worldNormal"),e.extensions.derivatives=!0,this.compensation.value&&e.define("OUTLINE_COMPENSATION",`${o}_offset`),this.firstTime){let n=this.outlineWidth.build(e,"f"),a=this.resolution.build(e,"v2"),s=this.compensation.build(e,"b"),l=this.pixelRatio.build(e,"f");e.addVertexParsVariable("randomColor","attribute vec3"),e.addVertexParsVariable("extrudeNormal","attribute vec3"),e.addVertexParsVariable(n,"uniform float"),e.addVertexParsVariable(a,"uniform vec2"),e.addVertexParsVariable(s,"uniform bool"),e.addVertexParsVariable(l,"uniform float"),e.addVertexParsVariable("vID","flat out float"),e.addFragmentParsVariable("vID","flat in float"),e.addVertexFinalCode(`
|
|
996
996
|
vID = randomColor.r;
|
|
997
997
|
vec2 ${o}_offset = vec2(0.0);
|
|
998
998
|
if (${s}) {
|
|
@@ -1007,7 +1007,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
1007
1007
|
// if this offset is the biggest of all the potential offsets
|
|
1008
1008
|
gl_Position = ${o}_clipPosition;
|
|
1009
1009
|
}
|
|
1010
|
-
`)}if(e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let n=e.include(
|
|
1010
|
+
`)}if(e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let n=e.include(Qf.Nodes.outline),a=[];return a.push(this.outlineColor.build(e,"c")),a.push(this.contourColor.build(e,"c")),a.push(this.outlineWidth.build(e,"f")),a.push(this.contourWidth.build(e,"f")),a.push(this.contourThreshold.build(e,"f")),a.push(this.outlineThreshold.build(e,"f")),a.push(this.contourFrequency.build(e,"f")),a.push(this.outlineSmoothing.build(e,"f")),a.push(this.contourDirection.build(e,"v3")),a.push(this.positionalLines.build(e,"b")),a.push(this.resolution.build(e,"v2")),a.push(this.normalMap.getTexture(e,"t")),a.push(this.depthMap.getTexture(e,"t")),a.push(this.pixelRatio.build(e,"f")),a.push(this.compensation.build(e,"b")),a.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),a.push(this.alpha.build(e,"f")),a.push(this.calpha),this.firstTime=!this.firstTime,e.format(n+"("+a.join(",")+")",this.getType(e),r)}else return console.warn("OutlineNode is not compatible with "+e.shader+" shader."),""}},Ja=Qf;Ja.Nodes=function(){let e=new J(`
|
|
1011
1011
|
float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outlineWidth, float pixelRatio)
|
|
1012
1012
|
{
|
|
1013
1013
|
vec2 halton = haltonSequence[frameIndex];
|
|
@@ -1156,7 +1156,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1156
1156
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
1157
1157
|
|
|
1158
1158
|
return result;
|
|
1159
|
-
}`,[e])}}();var
|
|
1159
|
+
}`,[e])}}();var mo=class extends ge{constructor(e,r,o,n,a,s,l,c,u,d,p,f,h,m,y,x,v,w){super("v3");this.nodeType="Pattern";this.style=e,this.projection=r,this.axis=o,this.blending=n,this.offset=a,this.colorA=s,this.colorB=l,this.frequency=c,this.size=u,this.variation=d,this.smoothness=p,this.zigzag=f,this.rotation=h,this.vertical=m,this.horizontal=y,this.sides=x,this.isMask=w,this.alpha=v,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.isShader("fragment")){e.require("position"),e.require("uv"),e.requires.uv=[!0],e.require("normal"),e.requires.normal=!0,e.addFragmentVariable(this.calpha,"float");let o;switch(this.style.value){case 0:o="circle";break;case 1:o="ring";break;case 2:o="polygon";break;case 3:o="xcross";break;case 4:o="diamond";break;case 5:o="checkerboard";break;case 6:o="line";break;case 7:o="wave";break;default:o="circle";break}let n=`g${this.uuid.toString().replace(/-/g,"")}`,a=new J(`float hashwithoutsine12(vec2 p)
|
|
1160
1160
|
{
|
|
1161
1161
|
vec3 p3 = fract(vec3(p.xyx) * .1031);
|
|
1162
1162
|
p3 += dot(p3, p3.yzx + 33.33);
|
|
@@ -1170,7 +1170,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1170
1170
|
cos(radians) * (uv.y - mid) - sin(radians) * (uv.x - mid) + mid
|
|
1171
1171
|
);
|
|
1172
1172
|
return repeat ? fract(rotated): rotated;
|
|
1173
|
-
}`),l="";if(this.projection.value===4){let
|
|
1173
|
+
}`),l="";if(this.projection.value===4){let p=this.style.value===2?`${o}(uv0, frequency, size, variation, smoothness_remapped, zigzag, rotation, sides)`:`${o}(uv0, frequency, size, variation, smoothness_remapped, zigzag, rotation)`,f=this.style.value===2?`${o}(uv1, frequency, size, variation, smoothness_remapped, zigzag, rotation, sides)`:`${o}(uv1, frequency, size, variation, smoothness_remapped, zigzag, rotation)`,h=this.style.value===2?`${o}(uv2, frequency, size, variation, smoothness_remapped, zigzag, rotation, sides)`:`${o}(uv2, frequency, size, variation, smoothness_remapped, zigzag, rotation)`;l=`
|
|
1174
1174
|
vec3 p = position;
|
|
1175
1175
|
float factor = 0.0125;
|
|
1176
1176
|
vec2 uv0 = fract(p.xy * factor);
|
|
@@ -1181,7 +1181,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1181
1181
|
uv1 = rotate_uv(uv1 + offset, rotation, true);
|
|
1182
1182
|
uv2 = rotate_uv(uv2 + offset, rotation, true);
|
|
1183
1183
|
|
|
1184
|
-
float d0 = ${
|
|
1184
|
+
float d0 = ${p};
|
|
1185
1185
|
float d1 = ${f};
|
|
1186
1186
|
float d2 = ${h};
|
|
1187
1187
|
|
|
@@ -1198,7 +1198,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1198
1198
|
float draw = d0 + d1 + d2;
|
|
1199
1199
|
|
|
1200
1200
|
vec2 custom_uv = uv0 * weights.z + uv1 * weights.x + uv2 * weights.y;
|
|
1201
|
-
`}else{let
|
|
1201
|
+
`}else{let p=this.style.value===2?`${o}(custom_uv, frequency, size, variation, smoothness_remapped, zigzag, rotation, sides)`:`${o}(custom_uv, frequency, size, variation, smoothness_remapped, zigzag, rotation)`,f="";this.axis.value===0?f=`float radius = length(p);
|
|
1202
1202
|
float theta = atan(p.y, p.z);
|
|
1203
1203
|
float phi = acos(p.x / radius);`:this.axis.value===1?f=`float radius = length(p);
|
|
1204
1204
|
float theta = atan(p.x, p.z);
|
|
@@ -1217,7 +1217,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1217
1217
|
custom_uv = fract(custom_uv);
|
|
1218
1218
|
custom_uv = rotate_uv(custom_uv, rotation, true);
|
|
1219
1219
|
|
|
1220
|
-
float draw = ${
|
|
1220
|
+
float draw = ${p};
|
|
1221
1221
|
`}let c=new J(`vec3 ${n}_pattern(vec3 normal, float blending, int style, vec2 offset, vec4 colorA, vec4 colorB, vec2 frequency, float size, float variation, float smoothness, float zigzag, float rotation, vec2 vertical, vec2 horizontal, int sides, bool isMask, float mask, float alpha, out float calpha) {
|
|
1222
1222
|
const float TWO_PI = PI * 2.0;
|
|
1223
1223
|
float smoothness_remapped = pow(smoothness, 5.0);
|
|
@@ -1242,7 +1242,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1242
1242
|
accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
|
|
1243
1243
|
|
|
1244
1244
|
return clamp(color, 0.0, 1.0).rgb;
|
|
1245
|
-
}`,[s,a,
|
|
1245
|
+
}`,[s,a,mo.DrawFunctions.circle,mo.DrawFunctions.ring,mo.DrawFunctions.polygon,mo.DrawFunctions.cross,mo.DrawFunctions.diamond,mo.DrawFunctions.checkerboard,mo.DrawFunctions.line,mo.DrawFunctions.wave]),u=e.include(c),d=[];return d.push("normal"),d.push(this.blending.build(e,"f")),d.push(this.style.build(e,"i")),d.push(this.offset.build(e,"v2")),d.push(this.colorA.build(e,"v4")),d.push(this.colorB.build(e,"v4")),d.push(this.frequency.build(e,"v2")),d.push(this.size.build(e,"f")),d.push(this.variation.build(e,"f")),d.push(this.smoothness.build(e,"f")),d.push(this.zigzag.build(e,"f")),d.push(this.rotation.build(e,"f")),d.push(this.vertical.build(e,"v2")),d.push(this.horizontal.build(e,"v2")),d.push(this.sides.build(e,"i")),d.push(this.isMask.build(e,"b")),d.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),d.push(this.alpha.build(e,"f")),d.push(this.calpha),e.format(u+"("+d.join(",")+")",this.getType(e),r)}else return console.warn("PatterNode is not compatible with "+e.shader+" shader."),e.format("vec3(0.0)",this.getType(e),r)}},es=mo;es.DrawFunctions=function(){let e=new J(`float hashwithoutsine12(vec2 p) {
|
|
1246
1246
|
vec3 p3 = fract(vec3(p.xyx) * 0.1031);
|
|
1247
1247
|
p3 += dot(p3, p3.yzx + 33.33);
|
|
1248
1248
|
return fract((p3.x + p3.y) * p3.z);
|
|
@@ -1358,7 +1358,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1358
1358
|
s + smoothness,
|
|
1359
1359
|
abs(f.y)
|
|
1360
1360
|
);
|
|
1361
|
-
}`,[r]),
|
|
1361
|
+
}`,[r]),d=new J(`// Uses bisection
|
|
1362
1362
|
float udf_cos(in vec2 p, in float a, in float b, in float c, in float d) {
|
|
1363
1363
|
// Convert all data to a primitive cosine wave
|
|
1364
1364
|
p = c * (p - vec2(d, a));
|
|
@@ -1407,7 +1407,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1407
1407
|
float s = mix(size, size * rand, variation);
|
|
1408
1408
|
|
|
1409
1409
|
return smoothstep(-smoothness, smoothness, distance_estimate - s * 0.5);
|
|
1410
|
-
}`);return{tileAndCenter:r,circle:o,ring:n,polygon:a,cross:s,diamond:l,checkerboard:c,line:u,wave:
|
|
1410
|
+
}`);return{tileAndCenter:r,circle:o,ring:n,polygon:a,cross:s,diamond:l,checkerboard:c,line:u,wave:d}}();var Zf=class extends ge{constructor(e,r,o,n,a,s,l,c){super("v3");this.nodeType="Rainbow";this.filmThickness=e,this.movement=r,this.wavelengths=o,this.noiseStrength=n,this.noiseScale=a,this.offset=s,this.isMask=c,this.alpha=l,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.require("vWorldViewDir"),e.require("worldNormal"),e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(Zf.Nodes.rainbow),n=[];return n.push(this.filmThickness.build(e,"f")),n.push(this.movement.build(e,"f")),n.push(this.wavelengths.build(e,"v3")),n.push(this.noiseStrength.build(e,"f")),n.push(this.noiseScale.build(e,"f")),n.push(this.offset.build(e,"v3")),n.push(this.isMask.build(e,"b")),n.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),n.push(this.alpha.build(e,"f")),n.push(this.calpha),e.format(o+"("+n.join(",")+")",this.getType(e),r)}else return console.warn("RainbowNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},ts=Zf;ts.Nodes=function(){let e=new J(`vec3 attenuation(vec3 wavelengths, float filmThickness, float movement, float noiseStrength, float noiseScale, vec3 offset) {
|
|
1411
1411
|
float f = 0.0;
|
|
1412
1412
|
|
|
1413
1413
|
if (noiseStrength != 0.0) {
|
|
@@ -1431,7 +1431,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1431
1431
|
accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
|
|
1432
1432
|
|
|
1433
1433
|
return res;
|
|
1434
|
-
}`,[e])}}();var
|
|
1434
|
+
}`,[e])}}();var Jf=class extends ge{constructor(e,r,o,n,a,s,l,c,u,d){super("v3");this.nodeType="Toon";this.positioning=e,this.colors=r,this.steps=o,this.source=n,this.isWorldSpace=a,this.noiseStrength=s,this.noiseScale=l,this.shadowColor=c,this.offset=u,this.alpha=d,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.require("worldNormal"),e.require("worldPosition"),e.isShader("fragment")){e.define("COLORS_MAX",10),e.addFragmentVariable(this.calpha,"float");let o=e.include(Jf.Nodes.toon),n=[];return n.push(this.positioning.build(e,"i")),n.push(this.colors.build(e,"v4[]")),n.push(this.steps.build(e,"f[]")),n.push(this.source.build(e,"v3")),n.push(this.isWorldSpace.build(e,"b")),n.push(this.noiseStrength.build(e,"f")),n.push(this.noiseScale.build(e,"f")),n.push(this.shadowColor.build(e,"v4")),n.push(this.offset.build(e,"v3")),n.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),n.push(this.alpha.build(e,"f")),n.push(this.calpha),e.format(o+"("+n.join(",")+")",this.getType(e),r)}else return console.warn("ToonNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},rs=Jf;rs.Nodes=function(){let e=new J(`float rand(float n) {
|
|
1435
1435
|
return fract(sin(n) * 43758.5453123);
|
|
1436
1436
|
}`),r=new J(`float hash1(float p) {
|
|
1437
1437
|
p = fract(p * 0.011);
|
|
@@ -1667,7 +1667,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1667
1667
|
|
|
1668
1668
|
return color.xyz;
|
|
1669
1669
|
|
|
1670
|
-
}`,[Bt.simplexFast,e,o,a])}}();import{Vector2 as
|
|
1670
|
+
}`,[Bt.simplexFast,e,o,a])}}();import{Vector2 as Jb}from"three";var Zb=function(){return{textureBicubic:new J(`float w0( float a ) {
|
|
1671
1671
|
return ( 1.0 / 6.0 ) * ( a * ( a * ( - a + 3.0 ) - 3.0 ) + 1.0 );
|
|
1672
1672
|
}
|
|
1673
1673
|
|
|
@@ -1731,7 +1731,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1731
1731
|
vec4 fSample = bicubic( sampler, uv, vec4( fLodSizeInv, fLodSize ), floor( lod ) );
|
|
1732
1732
|
vec4 cSample = bicubic( sampler, uv, vec4( cLodSizeInv, cLodSize ), ceil( lod ) );
|
|
1733
1733
|
return mix( fSample, cSample, fract( lod ) );
|
|
1734
|
-
}`)}}();function
|
|
1734
|
+
}`)}}();function ev(i,t){return i>=t?new Jb(t/i,1):new Jb(1,i/t)}var eh=class extends ge{constructor(e,r,o,n,a,s,l,c){super("v3");this.nodeType="Transmission";this.thickness=e,this.ior=r,this.roughness=o,this.transmissionSamplerSize=n,this.transmissionSamplerMap=a,this.transmissionDepthMap=s,this.aspectRatio=l,this.alpha=c,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.extensions.shaderTextureLOD=!0,e.extensions.derivatives=!0,e.isShader("fragment")){e.define("NUM_SAMPLES",6),e.define("BLUR_SLOD",Math.pow(2,Ae.transmissionLod.value)),e.require("worldPosition"),e.requires.worldNormal=!0,e.requires.modelMatrix=!0,e.requires.projectionMatrix=!0,e.addFragmentVariable(this.calpha,"float");let o=e.include(eh.Nodes.transmission),n=[];return n.push(this.thickness.build(e,"f")),n.push(this.ior.build(e,"f")),n.push(this.roughness.build(e,"f")),n.push(this.transmissionSamplerSize.build(e,"v2")),n.push(this.transmissionSamplerMap.getTexture(e,"t")),n.push(this.transmissionDepthMap.getTexture(e,"t")),n.push(this.aspectRatio.build(e,"v2")),n.push("normal"),n.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),n.push(this.alpha.build(e,"f")),n.push(this.calpha),e.format(o+"("+n.join(",")+")",this.getType(e),r)}else return console.warn("TransmissionNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},os=eh;os.Nodes=function(){let e=new J(`vec3 blur(sampler2D sp, vec2 U, vec2 scale, float lod, sampler2D dm, vec2 unrefractedU, vec2 aspectRatio) {
|
|
1735
1735
|
// Slightly modified version of this:
|
|
1736
1736
|
// https://www.shadertoy.com/view/ltScRG
|
|
1737
1737
|
|
|
@@ -1791,7 +1791,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1791
1791
|
float lod = applyIorToRoughness(roughness, ior);
|
|
1792
1792
|
return blur(transmissionSamplerMap, fragCoord, vec2(lod), min(framebufferLod / 5.5, 8.5), transmissionDepthMap, unrefractedCoords, aspectRatio);
|
|
1793
1793
|
#endif
|
|
1794
|
-
}`,[
|
|
1794
|
+
}`,[Zb.textureBicubic,o,e]),a=new J(`vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat4 modelMatrix, mat4 viewMatrix, mat4 projMatrix, float ior, float thickness, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 aspectRatio ) {
|
|
1795
1795
|
vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );
|
|
1796
1796
|
vec3 refractedRayExit = position + transmissionRay;
|
|
1797
1797
|
|
|
@@ -1822,7 +1822,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1822
1822
|
accumAlpha += ( 1.0 - accumAlpha ) * alpha;
|
|
1823
1823
|
|
|
1824
1824
|
return transmission;
|
|
1825
|
-
}`,[a])}}();var
|
|
1825
|
+
}`,[a])}}();var th=(e=>(e.NOISE="noise",e.MAP="map",e))(th||{}),rh=class extends ge{constructor(e,r,o,n,a,s,l,c,u,d,p){super("v3");this.displacementTypeIndex=new Re(0);this.nodeType="VertexDisplacement";this.intensity=e,this.movementOrTexture=r,Object.values(th)[this.displacementTypeIndex.value]==="map"&&(this.mat=new Ha(this.movementOrTexture.value.matrix)),this.cropOrOffset=o,this.scale=d,this.noiseFunctionIndex=p,this.voronoiStyle=n,this.smoothness=a,this.seed=s,this.highCut=l,this.lowCut=c,this.quality=u}generate(e,r){if(e.isShader("vertex")){e.define("USE_LAYER_DISPLACE");let o,n=[];switch(n.push("displaced_position"),n.push("displaced_normal"),Object.values(th)[this.displacementTypeIndex.value]){case"map":{o=e.include(rh.Nodes.map),n.push(this.movementOrTexture.getTexture(e,"t")),n.push("uv"),n.push(this.cropOrOffset.build(e,"f")),this.mat&&n.push(this.mat.build(e,"mat3"));break}case"noise":{let l=["simplexPrecise","simplexFractal","simplexAshima","fbm","perlin","voronoi"][this.noiseFunctionIndex.value],c=new J(`vec3 orthogonal(vec3 v) {
|
|
1826
1826
|
return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
|
|
1827
1827
|
}`),u=l=="voronoi"?`
|
|
1828
1828
|
float v = ${l}((p + offset) * scale * 0.001 + neighbour_offset + (movement * 0.1), voronoiStyle, smoothness, seed, quality);
|
|
@@ -1833,9 +1833,9 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1833
1833
|
return p + n * v * intensity;
|
|
1834
1834
|
`:`
|
|
1835
1835
|
return p + n * ${l}((p + offset) * scale * 0.001 + neighbour_offset + (movement * 0.1)) * intensity;
|
|
1836
|
-
`,
|
|
1836
|
+
`,d=new J(`vec3 distorted(vec3 p, vec3 n, float scale, float intensity, vec3 offset, float neighbour_offset, float movement, int voronoiStyle, float smoothness, float seed, float highCut, float lowCut, int quality) {
|
|
1837
1837
|
${u}
|
|
1838
|
-
}`,[Bt.simplexPrecise,Bt.simplexFractal,Bt.simplexAshima,Bt.fbm,Bt.perlin,Bt.voronoi]),
|
|
1838
|
+
}`,[Bt.simplexPrecise,Bt.simplexFractal,Bt.simplexAshima,Bt.fbm,Bt.perlin,Bt.voronoi]),p=new J(`vec3 vertexDisplacementNoise(vec3 position, vec3 normal, float scale, vec3 offset, float movement, int voronoiStyle, float smoothness, float seed, float highCut, float lowCut, int quality, float intensity, out vec3 displaced_normal) {
|
|
1839
1839
|
vec3 displaced_position = distorted(position, normal, scale, intensity, offset, neighbor_offset, movement, voronoiStyle, smoothness, seed, highCut, lowCut, quality);
|
|
1840
1840
|
vec3 tangent1 = orthogonal(normal);
|
|
1841
1841
|
vec3 tangent2 = normalize(cross(normal, tangent1));
|
|
@@ -1851,7 +1851,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1851
1851
|
vec3 distorted2 = distorted(nearby2, normal, scale, intensity, offset, neighbor_offset, movement, voronoiStyle, smoothness, seed, highCut, lowCut, quality);
|
|
1852
1852
|
displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
|
|
1853
1853
|
return displaced_position;
|
|
1854
|
-
}`,[
|
|
1854
|
+
}`,[d,c]);o=e.include(p),n.push(this.scale.build(e,"f")),n.push(this.cropOrOffset.build(e,"v3")),n.push(this.movementOrTexture.build(e,"f")),n.push(this.voronoiStyle.build(e,"i")),n.push(this.smoothness.build(e,"f")),n.push(this.seed.build(e,"f")),n.push(this.highCut.build(e,"f")),n.push(this.lowCut.build(e,"f")),n.push(this.quality.build(e,"i"));break}}return n.push(this.intensity.build(e,"f")),n.push("displaced_normal"),e.format(o+"("+n.join(",")+")",this.getType(e),r)}else return console.warn("VertexDisplacementNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},is=rh;is.Nodes=function(){let e=new J(`vec3 orthogonal(vec3 v) {
|
|
1855
1855
|
return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
|
|
1856
1856
|
}`),r=new J(`float displacementMapTexture(sampler2D tex, float crop, vec2 uv, mat3 mat, vec2 offset) {
|
|
1857
1857
|
vec2 uvs = (mat * vec3(uv * 2.0 - 1.0, 1.0) / 2.0 + 0.5).xy + offset;
|
|
@@ -1873,7 +1873,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1873
1873
|
vec3 distorted2 = nearby2 + normal * displacementMapTexture(tex, crop, uv, mat, vec2(neighbor_offset)) * intensity;
|
|
1874
1874
|
displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
|
|
1875
1875
|
return displaced_position;
|
|
1876
|
-
}`,[e,r])}}();var Ae={normalRenderTarget:new
|
|
1876
|
+
}`,[e,r])}}();var Ae={normalRenderTarget:new Kt,normalRenderTargetDepth:new Kt,transmissionRenderTarget:new Kt,aspectRatio:new lt,transmissionSize:new lt(2048,2048),transmissionRenderTargetDepth:new Kt,aoRenderTarget:new Kt,aoEnabled:new ct,pixelRatioNode:new se(1),resolution:new lt,penumbraSize:new kr(5,.5),frameIndex:new Re(0),transmissionLod:new Re(2),taaEnabled:new ct(!0)};for(let i of Object.values(Ae))i.isRenderGlobal=!0;var tv={skiaWasmUrl:"https://unpkg.com/@splinetool/ui-wasm@1.10.89/build/ui.wasm"};var Ho=class extends $e{constructor(){super("basic");this.nodeType="Basic";this.color=new We(yt),this.shadingAlpha=new se(1),this.shadingBlend=new Re(0),this.previousModelViewMatrix=new jt,this.previouseProjectionMatrix=new jt}get category(){return"phong"}generate(e){let r;if(e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:Ae.frameIndex}),e.mergeUniform({resolution:Ae.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(tN.merge([eN.fog])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <skinning_pars_vertex>","#include <normal_pars_vertex>","#include <morphtarget_pars_vertex>"].join(`
|
|
1877
1877
|
`));let n=["#include <beginnormal_vertex>","#include <morphnormal_vertex>",`
|
|
1878
1878
|
#include <skinbase_vertex>
|
|
1879
1879
|
#include <skinnormal_vertex>
|
|
@@ -1895,7 +1895,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1895
1895
|
`];o&&n.push(o.code,o.result?"displaced_position = "+o.result+";":""),n.push("transformed = displaced_position;","#include <morphtarget_vertex>","#include <skinning_vertex>","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),n.push("#include <project_vertex>","#include <fog_vertex>","#include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;","#include <worldpos_vertex>"),n.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),r=n.join(`
|
|
1896
1896
|
`)}else{this.color===void 0&&(this.color=new We(yt)),this.color.analyze(e,{slot:"color"}),this.alpha&&this.alpha.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"});let o=this.color.flow(e,"c",{slot:"color"}),n=this.alpha?this.alpha.flow(e,"f"):void 0,a=this.alphaOverride?this.alphaOverride.flow(e,"f"):void 0,s=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0;e.requires.transparent=n!==void 0,e.addParsCode(["varying vec3 vWPosition;","#include <fog_pars_fragment>","#include <dithering_pars_fragment>","varying vec3 vViewPosition;","#include <normal_pars_fragment>"].join(`
|
|
1897
1897
|
`));let l=["#include <normal_fragment_begin>",o.code];n&&l.push(n.code,"#ifdef ALPHATEST"," if ( "+n.result+" <= ALPHATEST ) discard;","#endif"),s?l.push(s.code,`vec3 outgoingLight = ${o.result};`,`vec3 finalColor = spe_blend(outgoingLight, ${s.result}, 1.0, SPE_BLENDING_NORMAL);`):l.push(`vec3 finalColor = ${o.result};`);let c="1.0";this.mask&&(this.mask.analyze(e),c=`luminance(${this.mask.flow(e,"v3").result})`),n?l.push(`gl_FragColor = vec4( finalColor, accumAlpha * ${n.result} * ${c} );`):l.push("gl_FragColor = vec4("+o.result+", 1.0 );"),a&&l.push(`gl_FragColor.a *= ${a.result};`),l.push("#include <fog_fragment>","#include <dithering_fragment>"),r=l.join(`
|
|
1898
|
-
`)}return r}};import{UniformsLib as
|
|
1898
|
+
`)}return r}};import{UniformsLib as rv,UniformsUtils as rN}from"three";var ml=class extends $e{constructor(){super("lambert");this.nodeType="Lambert";this.color=new We(yt),this.emissive=new We(0),this.emissiveIntensity=new se(1),this.previousModelViewMatrix=new jt,this.previouseProjectionMatrix=new jt,this.shadingAlpha=new se(1),this.shadingBlend=new Re(0),this.occlusion=new ct(!0)}get category(){return"lambert"}build(e){let r;if(e.define("LAMBERT"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:Ae.frameIndex}),e.mergeUniform({resolution:Ae.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(rN.merge([rv.fog,rv.lights])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","varying vec3 vLightFront;","varying vec3 vIndirectFront;","#ifndef DOUBLE_SIDED"," #define DOUBLE_SIDED","#endif","#ifdef DOUBLE_SIDED"," varying vec3 vLightBack;"," varying vec3 vIndirectBack;","#endif","#include <bsdfs>","#include <lights_pars_begin>","#include <color_pars_vertex>","#include <fog_pars_vertex>","#include <skinning_pars_vertex>","#include <normal_pars_vertex>","#include <morphtarget_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
|
|
1899
1899
|
`));let n=["#include <beginnormal_vertex>","#include <morphnormal_vertex>",`
|
|
1900
1900
|
#include <skinbase_vertex>
|
|
1901
1901
|
#include <skinnormal_vertex>
|
|
@@ -1990,14 +1990,14 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1990
1990
|
#pragma unroll_loop_end
|
|
1991
1991
|
#endif
|
|
1992
1992
|
`," #include <shadowmap_vertex>"," #include <fog_vertex>"),n.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),r=n.join(`
|
|
1993
|
-
`)}else{e.mergeUniform({penumbraSize:Ae.penumbraSize}),e.mergeUniform({frameIndex:Ae.frameIndex}),e.mergeUniform({aoMap:Ae.aoRenderTarget}),e.mergeUniform({aoEnabled:Ae.aoEnabled}),this.color===void 0&&(this.color=new We(yt)),this.color.analyze(e,{slot:"color"}),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e);let o=this.color.flow(e,"c",{slot:"color"}),n=this.emissive.flow(e,"c",{slot:"emissive"}),a=this.emissiveIntensity.flow(e,"f",{slot:"emissive"}),s=this.occlusion.flow(e,"b",{slot:"occlusion"}),l=this.shadingAlpha.flow(e,"f"),c=this.shadingBlend.flow(e,"i"),u=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,
|
|
1993
|
+
`)}else{e.mergeUniform({penumbraSize:Ae.penumbraSize}),e.mergeUniform({frameIndex:Ae.frameIndex}),e.mergeUniform({aoMap:Ae.aoRenderTarget}),e.mergeUniform({aoEnabled:Ae.aoEnabled}),this.color===void 0&&(this.color=new We(yt)),this.color.analyze(e,{slot:"color"}),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e);let o=this.color.flow(e,"c",{slot:"color"}),n=this.emissive.flow(e,"c",{slot:"emissive"}),a=this.emissiveIntensity.flow(e,"f",{slot:"emissive"}),s=this.occlusion.flow(e,"b",{slot:"occlusion"}),l=this.shadingAlpha.flow(e,"f"),c=this.shadingBlend.flow(e,"i"),u=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,d=this.alpha?this.alpha.flow(e,"f"):void 0,p=this.alphaOverride?this.alphaOverride.flow(e,"f"):void 0;e.requires.transparent=d!==void 0,e.addParsCode([`uniform float penumbraSize[${5}];`,"uniform sampler2D aoMap;","uniform bool aoEnabled;","varying vec3 vViewPosition;","varying vec3 vWPosition;","varying vec3 vLightFront;","varying vec3 vIndirectFront;","#ifndef DOUBLE_SIDED"," #define DOUBLE_SIDED","#endif","#include <normal_pars_fragment>","#ifdef DOUBLE_SIDED"," varying vec3 vLightBack;"," varying vec3 vIndirectBack;","#endif","#include <bsdfs>","#include <lights_pars_begin>","#include <fog_pars_fragment>","#include <shadowmap_pars_fragment>","#include <shadowmask_pars_fragment>","#include <clipping_planes_pars_fragment>","#include <dithering_pars_fragment>"].join(`
|
|
1994
1994
|
`));let f=["#include <normal_fragment_begin>",`
|
|
1995
1995
|
// NOTE: gl_FrontFacing alternative using face normal estimation.
|
|
1996
1996
|
vec3 viewdx = dFdx(vViewPosition);
|
|
1997
1997
|
vec3 viewdy = dFdy(vViewPosition);
|
|
1998
1998
|
vec3 faceNormal = normalize(cross(viewdx, viewdy));
|
|
1999
1999
|
bool isFrontFacing = (dot(normal, faceNormal) >= 0.0);
|
|
2000
|
-
`,"#include <clipping_planes_fragment>"];f.push(o.code,"vec3 diffuseColor = "+o.result+";","ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );"),
|
|
2000
|
+
`,"#include <clipping_planes_fragment>"];f.push(o.code,"vec3 diffuseColor = "+o.result+";","ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );"),d&&f.push(d.code,"#ifdef ALPHATEST","if ( "+d.result+" <= ALPHATEST ) discard;","#endif"),f.push("#ifdef DOUBLE_SIDED"," reflectedLight.indirectDiffuse += ( isFrontFacing ) ? vIndirectFront : vIndirectBack;","#else"," reflectedLight.indirectDiffuse += vIndirectFront;","#endif","#include <lightmap_fragment>","reflectedLight.indirectDiffuse *= BRDF_Lambert( diffuseColor.rgb );","#ifdef DOUBLE_SIDED"," reflectedLight.directDiffuse = ( isFrontFacing ) ? vLightFront : vLightBack;","#else"," reflectedLight.directDiffuse = vLightFront;","#endif","reflectedLight.directDiffuse *= BRDF_Lambert( diffuseColor.rgb ) * getShadowMask();"),n&&f.push(n.code,"reflectedLight.directDiffuse += "+n.result+" * "+a.result+";"),f.push("vec3 ao = aoEnabled && "+s.result+" ? tex2D(aoMap, gl_FragCoord.xy / resolution).rgb : vec3(1.0);","vec3 outgoingLight = (reflectedLight.directDiffuse + reflectedLight.indirectDiffuse) ;");let h="1.0";this.mask&&(this.mask.analyze(e),h=`luminance(${this.mask.flow(e,"v3").result})`),f.push(`
|
|
2001
2001
|
if (outgoingLight != diffuseColor) {
|
|
2002
2002
|
float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
|
|
2003
2003
|
accumAlpha += ( 1.0 - accumAlpha ) * ${l.result} * ${h} * lightAccu;
|
|
@@ -2005,8 +2005,8 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2005
2005
|
|
|
2006
2006
|
outgoingLight *= ao;
|
|
2007
2007
|
}
|
|
2008
|
-
`),u&&f.push(u.code,`outgoingLight = spe_blend(outgoingLight, ${u.result}, 1.0, SPE_BLENDING_NORMAL);`),
|
|
2009
|
-
`)}return r}};import{UniformsLib as
|
|
2008
|
+
`),u&&f.push(u.code,`outgoingLight = spe_blend(outgoingLight, ${u.result}, 1.0, SPE_BLENDING_NORMAL);`),d?f.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${d.result} );`):f.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),p&&f.push(`gl_FragColor.a *= ${p.result};`),f.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=f.join(`
|
|
2009
|
+
`)}return r}};import{UniformsLib as ov,UniformsUtils as oN}from"three";var Wo=function(){let i=new J(`vec2 dHdxy(sampler2D bumpMap, vec2 bumpMapUv, float bumpScale) {
|
|
2010
2010
|
|
|
2011
2011
|
// Gradient of UVs w.r.t. X coordinate (in screen-space)
|
|
2012
2012
|
vec2 dSTdx = dFdx(bumpMapUv);
|
|
@@ -2037,7 +2037,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2037
2037
|
|
|
2038
2038
|
vec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );
|
|
2039
2039
|
return normalize( abs( fDet ) * vN - vGrad );
|
|
2040
|
-
}`);return{dHdxy:i,perturbNormalArb:t}}();var
|
|
2040
|
+
}`);return{dHdxy:i,perturbNormalArb:t}}();var yl=class extends $e{constructor(){super("phong");this.nodeType="Phong";this.color=new We(yt),this.specular=new We(1118481),this.shininess=new se(30),this.previousModelViewMatrix=new jt,this.previouseProjectionMatrix=new jt,this.shadingAlpha=new se(1),this.shadingBlend=new Re(0),this.occlusion=new ct(!0)}get category(){return"phong"}build(e){let r;if(e.define("PHONG"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:Ae.frameIndex}),e.mergeUniform({resolution:Ae.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(oN.merge([ov.fog,ov.lights])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <skinning_pars_vertex>","#include <normal_pars_vertex>","#include <morphtarget_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
|
|
2041
2041
|
`));let n=["#include <beginnormal_vertex>","#include <morphnormal_vertex>",`
|
|
2042
2042
|
#include <skinbase_vertex>
|
|
2043
2043
|
#include <skinnormal_vertex>
|
|
@@ -2057,7 +2057,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2057
2057
|
#include <begin_vertex>
|
|
2058
2058
|
#endif
|
|
2059
2059
|
`];o&&n.push(o.code,o.result?"displaced_position = "+o.result+";":""),n.push("transformed = displaced_position;","#include <morphtarget_vertex>","#include <skinning_vertex>","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),n.push(" #include <project_vertex>"," #include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;"," #include <worldpos_vertex>"," #include <shadowmap_vertex>"," #include <fog_vertex>"),n.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),r=n.join(`
|
|
2060
|
-
`)}else{e.mergeUniform({penumbraSize:Ae.penumbraSize}),e.mergeUniform({frameIndex:Ae.frameIndex}),e.mergeUniform({aoMap:Ae.aoRenderTarget}),e.mergeUniform({aoEnabled:Ae.aoEnabled}),this.color===void 0&&(this.color=new We(yt)),this.color.analyze(e,{slot:"color"}),this.specular.analyze(e),this.shininess.analyze(e);let o=this.occlusion.flow(e,"b",{slot:"occlusion"});this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e);let n=this.color.flow(e,"c",{slot:"color"}),a=this.specular.flow(e,"c"),s=this.shininess.flow(e,"f"),l=this.shadingAlpha.flow(e,"f"),c=this.shadingBlend.flow(e,"i"),u=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,
|
|
2060
|
+
`)}else{e.mergeUniform({penumbraSize:Ae.penumbraSize}),e.mergeUniform({frameIndex:Ae.frameIndex}),e.mergeUniform({aoMap:Ae.aoRenderTarget}),e.mergeUniform({aoEnabled:Ae.aoEnabled}),this.color===void 0&&(this.color=new We(yt)),this.color.analyze(e,{slot:"color"}),this.specular.analyze(e),this.shininess.analyze(e);let o=this.occlusion.flow(e,"b",{slot:"occlusion"});this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e);let n=this.color.flow(e,"c",{slot:"color"}),a=this.specular.flow(e,"c"),s=this.shininess.flow(e,"f"),l=this.shadingAlpha.flow(e,"f"),c=this.shadingBlend.flow(e,"i"),u=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,d=this.alpha?this.alpha.flow(e,"f"):void 0,p=this.alphaOverride?this.alphaOverride.flow(e,"f"):void 0;e.requires.transparent=d!==void 0,e.addParsCode(["varying vec3 vWPosition;","uniform vec3 emissive;",`uniform float penumbraSize[${5}];`,"uniform sampler2D aoMap;","uniform bool aoEnabled;","#include <normal_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <lights_phong_pars_fragment>","#include <shadowmap_pars_fragment>","#include <dithering_pars_fragment>"].join(`
|
|
2061
2061
|
`));let f=["#include <normal_fragment_begin>",`
|
|
2062
2062
|
// NOTE: gl_FrontFacing alternative using face normal estimation.
|
|
2063
2063
|
vec3 viewdx = dFdx(vViewPosition);
|
|
@@ -2066,7 +2066,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2066
2066
|
if (dot(normal, faceNormal) < 0.0) {
|
|
2067
2067
|
normal *= -1.0;
|
|
2068
2068
|
}
|
|
2069
|
-
`," BlinnPhongMaterial material;"];if(this.bumpMap){e.include(
|
|
2069
|
+
`," BlinnPhongMaterial material;"];if(this.bumpMap){e.include(Wo.dHdxy),e.include(Wo.perturbNormalArb);let m=this.bumpMap.texture.flow(e,"t"),y=this.bumpMap.flow(e,"v3"),x=this.bumpMapIntensity?this.bumpMapIntensity.flow(e,"f").result:"1.0",v="";this.bumpMap.projection.value===4?v=`
|
|
2070
2070
|
vec3 bumpNormal = vec3(0.0);
|
|
2071
2071
|
{
|
|
2072
2072
|
vec2 uv0 = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs0;
|
|
@@ -2074,13 +2074,13 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2074
2074
|
vec2 uv2 = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs2;
|
|
2075
2075
|
vec3 weights = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_triplanarWeights;
|
|
2076
2076
|
|
|
2077
|
-
vec2 grad0 = dHdxy(${m.result}, uv0, ${
|
|
2077
|
+
vec2 grad0 = dHdxy(${m.result}, uv0, ${x});
|
|
2078
2078
|
vec3 n0 = perturbNormalArb(-vViewPosition, normal, grad0, faceDirection);
|
|
2079
2079
|
|
|
2080
|
-
vec2 grad1 = dHdxy(${m.result}, uv1, ${
|
|
2080
|
+
vec2 grad1 = dHdxy(${m.result}, uv1, ${x});
|
|
2081
2081
|
vec3 n1 = perturbNormalArb(-vViewPosition, normal, grad1, faceDirection);
|
|
2082
2082
|
|
|
2083
|
-
vec2 grad2 = dHdxy(${m.result}, uv2, ${
|
|
2083
|
+
vec2 grad2 = dHdxy(${m.result}, uv2, ${x});
|
|
2084
2084
|
vec3 n2 = perturbNormalArb(-vViewPosition, normal, grad2, faceDirection);
|
|
2085
2085
|
|
|
2086
2086
|
bumpNormal = n0 * weights.z + n1 * weights.x + n2 * weights.y;
|
|
@@ -2090,12 +2090,12 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2090
2090
|
normal = bumpNormal;
|
|
2091
2091
|
`:v=`
|
|
2092
2092
|
vec2 bumpMapCachedUv = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs;
|
|
2093
|
-
vec2 grad = dHdxy(${m.result}, bumpMapCachedUv, ${
|
|
2093
|
+
vec2 grad = dHdxy(${m.result}, bumpMapCachedUv, ${x});
|
|
2094
2094
|
normal = perturbNormalArb( - vViewPosition, normal, grad, faceDirection );
|
|
2095
2095
|
`,f.push(`// Call the Texture Layer's function once here so that it writes out its procedural UV coordinates
|
|
2096
2096
|
${y.result};
|
|
2097
2097
|
${v}
|
|
2098
|
-
`)}f.push(n.code," vec3 diffuseColor = "+n.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );"," vec3 totalEmissiveRadiance = emissive;",a.code," vec3 specular = "+a.result+";",s.code," float shininess = max( 0.0001, "+s.result+" );"," float specularStrength = 1.0;"),
|
|
2098
|
+
`)}f.push(n.code," vec3 diffuseColor = "+n.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );"," vec3 totalEmissiveRadiance = emissive;",a.code," vec3 specular = "+a.result+";",s.code," float shininess = max( 0.0001, "+s.result+" );"," float specularStrength = 1.0;"),d&&f.push(d.code,"#ifdef ALPHATEST","if ( "+d.result+" <= ALPHATEST ) discard;","#endif"),f.push("material.diffuseColor = diffuseColor;"),f.push("material.specularColor = specular;","material.specularShininess = shininess;","material.specularStrength = specularStrength;","#include <lights_fragment_begin>","#include <lights_fragment_end>"),f.push("vec3 ao = aoEnabled && "+o.result+" ? tex2D(aoMap, gl_FragCoord.xy / resolution).rgb : vec3(1.0);","vec3 outgoingLight = ((reflectedLight.directDiffuse + reflectedLight.indirectDiffuse)) + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;");let h="1.0";this.mask&&(this.mask.analyze(e),h=`luminance(${this.mask.flow(e,"v3").result})`),f.push(`
|
|
2099
2099
|
if (outgoingLight != diffuseColor) {
|
|
2100
2100
|
float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
|
|
2101
2101
|
accumAlpha += ( 1.0 - accumAlpha ) * ${l.result} * ${h} * lightAccu;
|
|
@@ -2103,8 +2103,8 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2103
2103
|
|
|
2104
2104
|
outgoingLight *= ao;
|
|
2105
2105
|
}
|
|
2106
|
-
`),u&&f.push(u.code,`outgoingLight = spe_blend(outgoingLight, ${u.result}, 1.0, SPE_BLENDING_NORMAL);`),
|
|
2107
|
-
`)}return r}};import{UniformsLib as
|
|
2106
|
+
`),u&&f.push(u.code,`outgoingLight = spe_blend(outgoingLight, ${u.result}, 1.0, SPE_BLENDING_NORMAL);`),d?f.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${d.result});`):f.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),p&&f.push(`gl_FragColor.a *= ${p.result};`),f.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=f.join(`
|
|
2107
|
+
`)}return r}};import{UniformsLib as oh,UniformsUtils as iN}from"three";var gl=class extends $e{constructor(){super("standard");this.nodeType="Standard";this.color=new We(yt),this.roughness=new se(.3),this.metalness=new se(0),this.reflectivity=new se(.5),this.previousModelViewMatrix=new jt,this.previouseProjectionMatrix=new jt,this.shadingAlpha=new se(1),this.shadingBlend=new Re(0),this.occlusion=new ct(!0)}get category(){return"physical"}build(e){let r;if(e.define("STANDARD"),e.requires.lights=!0,e.extensions.derivatives=!0,e.extensions.shaderTextureLOD=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:Ae.frameIndex}),e.mergeUniform({resolution:Ae.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(iN.merge([oh.fog,oh.lights])),oh.LTC_1&&(e.uniforms.ltc_1={value:void 0},e.uniforms.ltc_2={value:void 0}),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <skinning_pars_vertex>","#include <normal_pars_vertex>","#include <morphtarget_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
|
|
2108
2108
|
`));let n=["#include <beginnormal_vertex>","#include <morphnormal_vertex>",`
|
|
2109
2109
|
#include <skinbase_vertex>
|
|
2110
2110
|
#include <skinnormal_vertex>
|
|
@@ -2124,7 +2124,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2124
2124
|
#include <begin_vertex>
|
|
2125
2125
|
#endif /* !USE_LAYER_DISPLACE */
|
|
2126
2126
|
`];o&&n.push(o.code,o.result?"displaced_position = "+o.result+";":""),n.push("transformed = displaced_position;","#include <morphtarget_vertex>","#include <skinning_vertex>","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),n.push("#include <project_vertex>","#include <fog_vertex>","#include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;","#include <worldpos_vertex>","#include <shadowmap_vertex>"),n.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),r=n.join(`
|
|
2127
|
-
`)}else{e.mergeUniform({penumbraSize:Ae.penumbraSize}),e.mergeUniform({frameIndex:Ae.frameIndex}),e.mergeUniform({aoMap:Ae.aoRenderTarget}),e.mergeUniform({aoEnabled:Ae.aoEnabled});let o={gamma:!0};this.color===void 0&&(this.color=new We(yt)),this.color.analyze(e,{slot:"color",context:o}),this.roughness.analyze(e),this.metalness.analyze(e);let n=this.occlusion.flow(e,"b",{slot:"occlusion"});this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e),this.reflectivity&&this.reflectivity.analyze(e);let a=this.color.flow(e,"c",{slot:"color",context:o}),s=this.roughness.flow(e,"f"),l=this.metalness.flow(e,"f"),c=this.shadingAlpha.flow(e,"f"),u=this.shadingBlend.flow(e,"i"),
|
|
2127
|
+
`)}else{e.mergeUniform({penumbraSize:Ae.penumbraSize}),e.mergeUniform({frameIndex:Ae.frameIndex}),e.mergeUniform({aoMap:Ae.aoRenderTarget}),e.mergeUniform({aoEnabled:Ae.aoEnabled});let o={gamma:!0};this.color===void 0&&(this.color=new We(yt)),this.color.analyze(e,{slot:"color",context:o}),this.roughness.analyze(e),this.metalness.analyze(e);let n=this.occlusion.flow(e,"b",{slot:"occlusion"});this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e),this.reflectivity&&this.reflectivity.analyze(e);let a=this.color.flow(e,"c",{slot:"color",context:o}),s=this.roughness.flow(e,"f"),l=this.metalness.flow(e,"f"),c=this.shadingAlpha.flow(e,"f"),u=this.shadingBlend.flow(e,"i"),d=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,p=this.alpha?this.alpha.flow(e,"f"):void 0,f=this.alphaOverride?this.alphaOverride.flow(e,"f"):void 0,h=this.reflectivity?this.reflectivity.flow(e,"f"):void 0;e.requires.transparent=p!==void 0,e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;",`uniform float penumbraSize[${5}];`,"uniform sampler2D aoMap;","uniform bool aoEnabled;","#include <normal_pars_fragment>","#include <dithering_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <lights_physical_pars_fragment>","#include <shadowmap_pars_fragment>"].join(`
|
|
2128
2128
|
`));let m=["#include <clipping_planes_fragment>"," #include <normal_fragment_begin>",`
|
|
2129
2129
|
// NOTE: gl_FrontFacing alternative using face normal estimation.
|
|
2130
2130
|
vec3 viewdx = dFdx(vViewPosition);
|
|
@@ -2133,7 +2133,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2133
2133
|
if (dot(normal, faceNormal) < 0.0) {
|
|
2134
2134
|
normal *= -1.0;
|
|
2135
2135
|
}
|
|
2136
|
-
`," PhysicalMaterial material;"," material.diffuseColor = vec3( 1.0 );"];if(this.bumpMap){e.include(
|
|
2136
|
+
`," PhysicalMaterial material;"," material.diffuseColor = vec3( 1.0 );"];if(this.bumpMap){e.include(Wo.dHdxy),e.include(Wo.perturbNormalArb);let x=this.bumpMap.texture.flow(e,"t"),v=this.bumpMap.flow(e,"v3"),w=this.bumpMapIntensity?this.bumpMapIntensity.flow(e,"f").result:"1.0",O="";this.bumpMap.projection.value===4?O=`
|
|
2137
2137
|
vec3 bumpNormal = vec3(0.0);
|
|
2138
2138
|
{
|
|
2139
2139
|
vec2 uv0 = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs0;
|
|
@@ -2141,13 +2141,13 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2141
2141
|
vec2 uv2 = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs2;
|
|
2142
2142
|
vec3 weights = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_triplanarWeights;
|
|
2143
2143
|
|
|
2144
|
-
vec2 grad0 = dHdxy(${
|
|
2144
|
+
vec2 grad0 = dHdxy(${x.result}, uv0, ${w});
|
|
2145
2145
|
vec3 n0 = perturbNormalArb(-vViewPosition, normal, grad0, faceDirection);
|
|
2146
2146
|
|
|
2147
|
-
vec2 grad1 = dHdxy(${
|
|
2147
|
+
vec2 grad1 = dHdxy(${x.result}, uv1, ${w});
|
|
2148
2148
|
vec3 n1 = perturbNormalArb(-vViewPosition, normal, grad1, faceDirection);
|
|
2149
2149
|
|
|
2150
|
-
vec2 grad2 = dHdxy(${
|
|
2150
|
+
vec2 grad2 = dHdxy(${x.result}, uv2, ${w});
|
|
2151
2151
|
vec3 n2 = perturbNormalArb(-vViewPosition, normal, grad2, faceDirection);
|
|
2152
2152
|
|
|
2153
2153
|
bumpNormal = n0 * weights.z + n1 * weights.x + n2 * weights.y;
|
|
@@ -2157,12 +2157,12 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2157
2157
|
normal = bumpNormal;
|
|
2158
2158
|
`:O=`
|
|
2159
2159
|
vec2 bumpMapCachedUv = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs;
|
|
2160
|
-
vec2 grad = dHdxy(${
|
|
2160
|
+
vec2 grad = dHdxy(${x.result}, bumpMapCachedUv, ${w});
|
|
2161
2161
|
normal = perturbNormalArb( - vViewPosition, normal, grad, faceDirection );
|
|
2162
2162
|
`,m.push(`// Call the Texture Layer's function once here so that it writes out its procedural UV coordinates
|
|
2163
2163
|
${v.result};
|
|
2164
2164
|
${O}
|
|
2165
|
-
`)}if(m.push(a.code," vec3 diffuseColor = "+a.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );",l.code," float metalnessFactor = "+l.result+";"),this.roughnessMap){let
|
|
2165
|
+
`)}if(m.push(a.code," vec3 diffuseColor = "+a.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );",l.code," float metalnessFactor = "+l.result+";"),this.roughnessMap){let x=this.roughnessMap.texture.flow(e,"t"),v=this.roughnessMap.flow(e,"v3"),w="";this.roughnessMap.projection.value===4?w=`
|
|
2166
2166
|
float roughnessChange = 1.0;
|
|
2167
2167
|
{
|
|
2168
2168
|
vec2 uv0 = g${this.roughnessMap.uuid.toString().replace(/-/g,"")}_writeUvs0;
|
|
@@ -2170,9 +2170,9 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2170
2170
|
vec2 uv2 = g${this.roughnessMap.uuid.toString().replace(/-/g,"")}_writeUvs2;
|
|
2171
2171
|
vec3 weights = g${this.roughnessMap.uuid.toString().replace(/-/g,"")}_triplanarWeights;
|
|
2172
2172
|
|
|
2173
|
-
float r0 = luminance(texture(${
|
|
2174
|
-
float r1 = luminance(texture(${
|
|
2175
|
-
float r2 = luminance(texture(${
|
|
2173
|
+
float r0 = luminance(texture(${x.result}, uv0).rgb) * roughnessScale;
|
|
2174
|
+
float r1 = luminance(texture(${x.result}, uv1).rgb) * roughnessScale;
|
|
2175
|
+
float r2 = luminance(texture(${x.result}, uv2).rgb) * roughnessScale;
|
|
2176
2176
|
|
|
2177
2177
|
roughnessChange = (r0 * weights.z + r1 * weights.x + r2 * weights.y);
|
|
2178
2178
|
}
|
|
@@ -2180,7 +2180,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2180
2180
|
`:w=`
|
|
2181
2181
|
vec2 roughnessMapCachedUv = g${this.roughnessMap.uuid.toString().replace(/-/g,"")}_writeUvs;
|
|
2182
2182
|
|
|
2183
|
-
vec4 vals = texture(${
|
|
2183
|
+
vec4 vals = texture(${x.result}, roughnessMapCachedUv);
|
|
2184
2184
|
float roughnessFactor = luminance(vals.rgb) * ${s.result};
|
|
2185
2185
|
`,m.push(`// Call the Texture Layer's function once here so that it writes out its procedural UV coordinates
|
|
2186
2186
|
${v.result};
|
|
@@ -2188,7 +2188,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2188
2188
|
const float roughnessScale = 1.0;
|
|
2189
2189
|
|
|
2190
2190
|
${w}
|
|
2191
|
-
`)}else m.push(s.code," float roughnessFactor = "+s.result+";");
|
|
2191
|
+
`)}else m.push(s.code," float roughnessFactor = "+s.result+";");p&&m.push(p.code,"#ifdef ALPHATEST"," if ( "+p.result+" <= ALPHATEST ) discard;","#endif"),m.push("vec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );","float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );"),m.push("material.diffuseColor = diffuseColor * ( 1.0 - metalnessFactor );","material.roughness = max( roughnessFactor, 0.0525 );","material.roughness += geometryRoughness;","material.roughness = min( material.roughness, 1.0 );","material.roughness = clamp( roughnessFactor, 0.04, 1.0 );"),h?m.push(h.code,"material.specularColor = mix( vec3( 0.16 * pow2( "+h.result+" ) ), diffuseColor, metalnessFactor );"):m.push("material.specularColor = mix( vec3( 0.04 ), diffuseColor, metalnessFactor );"),m.push("#include <lights_fragment_begin>"),m.push("#include <lights_fragment_end>"),m.push("vec3 ao = aoEnabled && "+n.result+" ? tex2D(aoMap, gl_FragCoord.xy / resolution).rgb : vec3(1.0);","vec3 outgoingLight = ((reflectedLight.directDiffuse + reflectedLight.indirectDiffuse)) + reflectedLight.directSpecular + reflectedLight.indirectSpecular;");let y="1.0";this.mask&&(this.mask.analyze(e),y=`luminance(${this.mask.flow(e,"v3").result})`),m.push(`
|
|
2192
2192
|
if (outgoingLight != diffuseColor) {
|
|
2193
2193
|
float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
|
|
2194
2194
|
accumAlpha += ( 1.0 - accumAlpha ) * ${c.result} * ${y} * lightAccu;
|
|
@@ -2196,8 +2196,8 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2196
2196
|
|
|
2197
2197
|
outgoingLight *= ao;
|
|
2198
2198
|
}
|
|
2199
|
-
`),
|
|
2200
|
-
`)}return r}};import{UniformsLib as
|
|
2199
|
+
`),d&&m.push(d.code,`outgoingLight = spe_blend(outgoingLight, ${d.result}, 1.0, SPE_BLENDING_NORMAL);`),p?m.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${p.result} );`):m.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),f&&m.push(`gl_FragColor.a *= ${f.result};`),m.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=m.join(`
|
|
2200
|
+
`)}return r}};import{UniformsLib as iv,UniformsUtils as nN}from"three";var xl=class extends $e{constructor(){super("toon");this.nodeType="Toon";this.color=new We(yt),this.specular=new We(1118481),this.shininess=new se(30),this.previousModelViewMatrix=new jt,this.previouseProjectionMatrix=new jt,this.shadingAlpha=new se(1),this.shadingBlend=new Re(0)}get category(){return"toon"}build(e){let r;if(e.define("TOON"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:Ae.frameIndex}),e.mergeUniform({resolution:Ae.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(nN.merge([iv.fog,iv.lights])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <skinning_pars_vertex>","#include <normal_pars_vertex>","#include <morphtarget_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
|
|
2201
2201
|
`));let n=["#include <beginnormal_vertex>","#include <morphnormal_vertex>",`
|
|
2202
2202
|
#include <skinbase_vertex>
|
|
2203
2203
|
#include <skinnormal_vertex>
|
|
@@ -2217,7 +2217,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2217
2217
|
#include <begin_vertex>
|
|
2218
2218
|
#endif
|
|
2219
2219
|
`];o&&n.push(o.code,o.result?"displaced_position = "+o.result+";":""),n.push("transformed = displaced_position;","#include <morphtarget_vertex>","#include <skinning_vertex>","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),n.push(" #include <project_vertex>"," #include <fog_vertex>"," #include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;"," #include <worldpos_vertex>"," #include <shadowmap_vertex>"," #include <fog_vertex>"),n.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),r=n.join(`
|
|
2220
|
-
`)}else{e.mergeUniform({penumbraSize:Ae.penumbraSize}),e.mergeUniform({frameIndex:Ae.frameIndex}),e.mergeUniform({aoMap:Ae.aoRenderTarget}),e.mergeUniform({aoEnabled:Ae.aoEnabled}),this.color===void 0&&(this.color=new We(yt)),this.color.analyze(e,{slot:"color"}),this.specular.analyze(e),this.shininess.analyze(e),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e);let o=this.color.flow(e,"c",{slot:"color"}),n=this.specular.flow(e,"c"),a=this.shininess.flow(e,"f"),s=this.shadingAlpha.flow(e,"f"),l=this.shadingBlend.flow(e,"i"),c=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,u=this.alpha?this.alpha.flow(e,"f"):void 0,
|
|
2220
|
+
`)}else{e.mergeUniform({penumbraSize:Ae.penumbraSize}),e.mergeUniform({frameIndex:Ae.frameIndex}),e.mergeUniform({aoMap:Ae.aoRenderTarget}),e.mergeUniform({aoEnabled:Ae.aoEnabled}),this.color===void 0&&(this.color=new We(yt)),this.color.analyze(e,{slot:"color"}),this.specular.analyze(e),this.shininess.analyze(e),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e);let o=this.color.flow(e,"c",{slot:"color"}),n=this.specular.flow(e,"c"),a=this.shininess.flow(e,"f"),s=this.shadingAlpha.flow(e,"f"),l=this.shadingBlend.flow(e,"i"),c=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,u=this.alpha?this.alpha.flow(e,"f"):void 0,d=this.alphaOverride?this.alphaOverride.flow(e,"f"):void 0;e.requires.transparent=u!==void 0,e.addParsCode([`uniform float penumbraSize[${5}];`,"uniform sampler2D aoMap;","uniform bool aoEnabled;","varying vec3 vWPosition;","#include <normal_pars_fragment>","#include <gradientmap_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <dithering_pars_fragment>",`
|
|
2221
2221
|
varying vec3 vViewPosition;
|
|
2222
2222
|
struct ToonMaterial {
|
|
2223
2223
|
vec3 diffuseColor;
|
|
@@ -2238,7 +2238,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2238
2238
|
#define RE_IndirectDiffuse RE_IndirectDiffuse_Toon
|
|
2239
2239
|
#define Material_LightProbeLOD( material ) (0)
|
|
2240
2240
|
`,"#include <shadowmap_pars_fragment>","#include <bumpmap_pars_fragment>","#include <normalmap_pars_fragment>"].join(`
|
|
2241
|
-
`));let
|
|
2241
|
+
`));let p=["#include <normal_fragment_begin>",`
|
|
2242
2242
|
// NOTE: gl_FrontFacing alternative using face normal estimation.
|
|
2243
2243
|
vec3 viewdx = dFdx(vViewPosition);
|
|
2244
2244
|
vec3 viewdy = dFdy(vViewPosition);
|
|
@@ -2246,7 +2246,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2246
2246
|
if (dot(normal, faceNormal) < 0.0) {
|
|
2247
2247
|
normal *= -1.0;
|
|
2248
2248
|
}
|
|
2249
|
-
`," ToonMaterial material;"];if(this.bumpMap){e.include(
|
|
2249
|
+
`," ToonMaterial material;"];if(this.bumpMap){e.include(Wo.dHdxy),e.include(Wo.perturbNormalArb);let h=this.bumpMap.texture.flow(e,"t"),m=this.bumpMap.flow(e,"v3"),y=this.bumpMapIntensity?this.bumpMapIntensity.flow(e,"f").result:"1.0",x="";this.bumpMap.projection.value===4?x=`
|
|
2250
2250
|
vec3 bumpNormal = vec3(0.0);
|
|
2251
2251
|
{
|
|
2252
2252
|
vec2 uv0 = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs0;
|
|
@@ -2268,25 +2268,25 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2268
2268
|
}
|
|
2269
2269
|
|
|
2270
2270
|
normal = bumpNormal;
|
|
2271
|
-
`:
|
|
2271
|
+
`:x=`
|
|
2272
2272
|
vec2 bumpMapCachedUv = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs;
|
|
2273
2273
|
vec2 grad = dHdxy(${h.result}, bumpMapCachedUv, ${y});
|
|
2274
2274
|
normal = perturbNormalArb( - vViewPosition, normal, grad, faceDirection );
|
|
2275
|
-
`,
|
|
2275
|
+
`,p.push(`// Call the Texture Layer's function once here so that it writes out its procedural UV coordinates
|
|
2276
2276
|
${m.result};
|
|
2277
|
-
${
|
|
2278
|
-
`)}
|
|
2277
|
+
${x}
|
|
2278
|
+
`)}p.push(o.code," vec3 diffuseColor = "+o.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );",n.code," vec3 specular = "+n.result+";",a.code," float shininess = max( 0.0001, "+a.result+" );"," float specularStrength = 1.0;"),u&&p.push(u.code,"#ifdef ALPHATEST","if ( "+u.result+" <= ALPHATEST ) discard;","#endif"),p.push("material.diffuseColor = diffuseColor;"),p.push("material.specularColor = specular;","material.specularShininess = shininess;","material.specularStrength = specularStrength;","#include <lights_fragment_begin>","#include <lights_fragment_end>"),p.push("vec3 ao = aoEnabled ? tex2D(aoMap, gl_FragCoord.xy / resolution).rgb : vec3(1.0);","vec3 outgoingLight = ((reflectedLight.directDiffuse + reflectedLight.indirectDiffuse) * ao) + reflectedLight.directSpecular;");let f="1.0";this.mask&&(this.mask.analyze(e),f=`luminance(${this.mask.flow(e,"v3").result})`),p.push(`
|
|
2279
2279
|
if (outgoingLight != diffuseColor) {
|
|
2280
2280
|
float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
|
|
2281
2281
|
accumAlpha += ( 1.0 - accumAlpha ) * ${s.result} * ${f} * lightAccu;
|
|
2282
2282
|
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${s.result} * ${f}, ${l.result} );
|
|
2283
2283
|
}
|
|
2284
|
-
`),c&&
|
|
2285
|
-
`)}return r}};import{VideoTexture as nN,Texture as aN}from"three";var ju=class{constructor(t=1e3*10){this.timeout=t;this.cache=new Map;this.head={data:null,time:0,src:null,next:null,prev:null};this.tail={data:null,time:1/0,src:null,next:null,prev:null};this.hasClean=!1;this.head.next=this.tail,this.tail.prev=this.head}log(...t){}remove(t){let e=this.cache.get(t);e&&(this.dispose(t,e.data),this.cache.delete(t),e.prev.next=e.next,e.next.prev=e.prev)}scheduleCleanup(){this.hasClean||(this.log("scheduled cleanup"),this.hasClean=!0,setTimeout(()=>{this.hasClean=!1,this.log("cleaning");let t=Date.now(),e=this.head.next;for(;e.time<t-this.timeout;)this.dispose(e.src,e.data),this.cache.delete(e.src),e=e.next,e.prev=this.head,this.head.next=e;this.head.next!==this.tail?this.scheduleCleanup():this.log("no more cleanup")},this.timeout+1e3))}has(t){return this.cache.get(t)?.data}load(t){let e=Date.now(),r=this.cache.get(t);return r===void 0?(r={data:this.create(t),src:t,time:e,next:null,prev:null},this.cache.set(t,r)):(r.time=e,r.prev.next=r.next,r.next.prev=r.prev),r.prev=this.tail.prev,r.next=this.tail,this.tail.prev.next=r,this.tail.prev=r,this.scheduleCleanup(),r.data}};var ih=class extends ju{create(t){return URL.createObjectURL(new Blob([t]))}dispose(t,e){URL.revokeObjectURL(e)}},oh;function iv(i){return typeof i=="string"?i:(oh||(oh=new ih),oh.load(i))}var Uu=class{constructor(t,e){this.data=t;this.cache=e;this.refCount=0}deref(){if(this.refCount===0&&!1)throw new Error("ref count -1?");this.refCount-=1,this.refCount===0&&(this.cache.remove(this),this.dispose())}dispose(){if(this.refCount!==0&&!1)throw new Error("ref count is not 0")}},ku=class{constructor(){this.cache=new Map}remove(t){if(this.cache.delete(t.data)===!1&&!1)throw new Error("ref count remove non-exists")}load(t){let e=this.cache.get(t);return e===void 0&&(e=this.create(t),this.cache.set(t,e)),e.refCount+=1,e}};var is=class extends Uu{constructor(e,r){super(e,r.imageHolderCache);this.data=e;this.shared=r;this.loaded=!1;this.isVideo=!1;this.isBuffer=!1;this._cache={[1e3]:{},[1001]:{},[1002]:{}};this.isVideo=e.type==="video",this.isBuffer=e.isWebGLRenderTarget===!0,this.loadPromise=this.updateSrc(this.isBuffer?e:e.data)}async updateSrc(e){if(typeof document>"u")return;this.disposeTextures(),this.loaded=!1;let r=()=>{this.loaded=!0;for(let n of Object.values(this._cache))for(let a of Object.values(n))for(let s of Object.values(a))s&&(s.image=this.img,s.needsUpdate=!0);this.shared.requestRender()};if(this.isBuffer)this.img=e,this.loaded=!0;else if(this.isVideo){if(this.img=document.createElement("video"),this.img.preload="auto",this.img.playsInline=!0,this.img.currentTime=.01,typeof e!="string"){var o=new FileReader;o.readAsDataURL(new Blob([e],{type:"video/mp4"}));let n;await new Promise(a=>{o.onloadend=s=>{n=s.target?.result,a(null)}}),this.img.src=n}else this.img.src=e;this.img.onloadeddata=()=>{r()}}else this.img=new Image,this.img.src=iv(e),this.img.onload=r,await new Promise(n=>{this.img.onload=()=>{r(),n(null)}})}getTexture(e,r=1008,o=1006){let n=this._cache[e]?.[r]?.[o];if(n)return n;{let a;return this.isBuffer?a=this.img.texture:this.isVideo?a=new nN(this.img,void 0,e,e):a=new aN(this.img,void 0,e,e,o,r),this.loaded&&(a.needsUpdate=!0),this._cache[e]===void 0&&(this._cache[e]={}),this._cache[e][r]===void 0&&(this._cache[e][r]={}),this._cache[e][r][o]=a,a}}setNeedsUpdate(e){for(let r of Object.values(this._cache))for(let o of Object.values(r))for(let n of Object.values(o))n&&(n.needsUpdate=e)}disposeTextures(){for(let[e,r]of Object.entries(this._cache))for(let[o,n]of Object.entries(r))for(let[a,s]of Object.entries(n))s?.dispose(),this._cache[e]!==void 0&&this._cache[e][o]!==void 0&&(this._cache[e][o][a]=void 0)}dispose(){super.dispose(),this.disposeTextures()}};var pr=class extends is{};import{Vector2 as Wo,Vector3 as mo,Vector4 as Hu}from"three";function jt(i,t){return t.color(i)}function nv(i,t){switch(i.type){case"fresnel":return cN(i,t);case"gradient":return uN(i,t);case"depth":return dN(i,t);case"normal":return pN(i,t);case"noise":return fN(i,t);case"rainbow":return hN(i,t);case"toon":return mN(i,t);case"outline":return yN(i,t);case"transmission":return gN(i,t);case"color":return lN(i,t);case"pattern":return xN(i,t)}}function sN(i){return{type:i.type}}function Hr(i,t){let{alpha:e,mode:r,isMask:o}=i,n=typeof e=="string"?(Number(t.getVariable(e))??100)/100:e;return{...sN(i),alpha:n,mode:r,isMask:o}}function lN(i,t){return{...Hr(i,t),color:jt(i.color,t)}}function cN(i,t){let{bias:e,scale:r,intensity:o,factor:n,color:a}=i;return{...Hr(i,t),color:jt(a,t),bias:e,scale:r,intensity:o,factor:n}}function uN(i,t){let{gradientType:e,smooth:r,colors:o,steps:n,angle:a,offset:s,morph:l}=i;return{...Hr(i,t),gradientType:e,smooth:r,colors:o.map(c=>new Hu(c[0],c[1],c[2],c[3])),num:o.length,steps:n,offset:new Wo(...s),morph:new Wo(...l),angle:a}}function dN(i,t){let{gradientType:e,near:r,far:o,isVector:n,isWorldSpace:a,origin:s,direction:l,colors:c,steps:u,smooth:p}=i;return{...Hr(i,t),gradientType:e,near:r,far:o,isVector:n,isWorldSpace:a,origin:new mo(...s),direction:l?new mo(...l):new mo(1,0,0),colors:c.map(d=>d!==void 0?new Hu(d[0],d[1],d[2],d[3]):new Hu(0,0,0,0)),steps:u.slice(0,c.length),smooth:p}}function pN(i,t){let{cnormal:e}=i;return{...Hr(i,t),cnormal:new mo(e[0],e[1],e[2])}}function fN(i,t){return{...Hr(i,t),scale:i.scale,move:i.move,fA:new Wo(...i.fA),fB:new Wo(...i.fB),size:new mo(...i.size),distortion:new Wo(...i.distortion),colorA:jt(i.colorA,t),colorB:jt(i.colorB,t),colorC:jt(i.colorC,t),colorD:jt(i.colorD,t),noiseType:i.noiseType,voronoiStyle:i.voronoiStyle,highCut:i.highCut,lowCut:i.lowCut,smoothness:i.smoothness,seed:i.seed,quality:i.quality}}function hN(i,t){return{...Hr(i,t),filmThickness:i.filmThickness,movement:i.movement,wavelengths:new mo(...i.wavelengths),noiseStrength:i.noiseStrength,noiseScale:i.noiseScale,offset:new mo(...i.offset)}}function mN(i,t){return{...Hr(i,t),positioning:i.positioning,colors:i.colors.map(e=>new Hu(e[0],e[1],e[2],e[3])),num:i.colors.length,steps:i.steps,source:new mo(...i.source),isWorldSpace:i.isWorldSpace,noiseStrength:i.noiseStrength,noiseScale:i.noiseScale,shadowColor:jt(i.shadowColor,t),offset:new mo(...i.offset)}}function yN(i,t){return{...Hr(i,t),outlineColor:jt(i.outlineColor,t),contourColor:jt(i.contourColor,t),outlineWidth:i.outlineWidth,contourWidth:i.contourWidth,outlineThreshold:i.outlineThreshold,contourThreshold:i.contourThreshold,outlineSmoothing:i.outlineSmoothing,contourFrequency:i.contourFrequency,contourDirection:new mo(...i.contourDirection),positionalLines:i.positionalLines,compensation:i.compensation}}function gN(i,t){return{...Hr(i,t),thickness:i.thickness,ior:i.ior,roughness:i.roughness}}function xN(i,t){return{...Hr(i,t),style:i.style,projection:i.projection,axis:i.axis,blending:i.blending,offset:new Wo(...i.offset),colorA:jt(i.colorA,t),colorB:jt(i.colorB,t),frequency:new Wo(...i.frequency),size:i.size,variation:i.variation,smoothness:i.smoothness,zigzag:i.zigzag,rotation:i.rotation,vertical:new Wo(...i.vertical),horizontal:new Wo(...i.horizontal),sides:i.sides}}var Oi=class extends Ct{};import{MathUtils as bN,Vector4 as vN}from"three";var SN={noise:["noiseType"],texture:["projection","axis","side"],video:["projection","axis","side"],displace:["noiseType"],light:["roughnessMap","bumpMap"],depth:["smooth","isWorldSpace","gradientType","isVector"],pattern:["style","projection","axis"]},wN={depth:["colors"]};function PN(i,t,e){if(t==="isMask")return!0;let r=SN[i.type],o=wN[i.type];if(o!==void 0){let n=i.color;if(o.includes(t)){let a=n[t]?.value?.length;if(a!==void 0&&a!==e.length)return!0}}return r!==void 0?r.includes(t):!1}function nh(i,t,e){let r=e.uniforms[`f${e.id}_texture`];if(!r)return!1;let o=!1,n=i;if("image"in n){let a=n.image,s=t.image(a),l=r;l.image instanceof pr||l.image.deref(),l.image=s}if("video"in n){let a=n.video,s=t.video(a),l=r;l.image instanceof pr||l.image.deref(),l.image=s}if("wrapping"in n){let a=r;a.wrap=n.wrapping}if("minFilter"in n){let a=r;a.minFilter=n.minFilter}if("magFilter"in n){let a=r;a.magFilter=n.magFilter}if("rotation"in n&&e.uniforms[`f${e.id}_rotation`])return e.uniforms[`f${e.id}_rotation`].value=(n.rotation??0)*bN.DEG2RAD,o;if("repeat"in n||"offset"in n||"rotation"in n){let a="mat",s=e.uniforms[`f${e.id}_${a}`];"repeat"in n&&(s.repeat=n.repeat),"offset"in n&&(s.offset=n.offset),"rotation"in n&&(s.rotation=n.rotation??0),s.updateMatrix()}return o}function av(i,t,e,r){let o=!1;for(let[n,a]of Object.entries(i)){if(n==="bumpMap"||n==="roughnessMap"){o=!0;continue}if(!n||a===void 0)continue;if(ah(n,e,r,t)){n==="visible"&&e.type==="light"&&(o=!0);continue}e.visible=r.visible;let s=e.uniforms[`f${e.id}_${n}`];if(!!s&&!(s instanceof wi))switch(o=o||PN(e,n,a),s.constructor){case We:if(typeof a=="string"){let l=t.getColor(a);l&&(s.value=l);break}else{let l=a;s.value instanceof Oi?s.value=new Ct(l.r,l.g,l.b,l.a):s.setRGBA(l);break}case tr:if(typeof a=="string"){let l=t.getColor(a);l&&(s.value=l);break}else{let l=a;s.value instanceof Oi?s.value=new Ct(l.r,l.g,l.b,l.a):s.value.setRGBA(l.r,l.g,l.b,l.a);break}case lt:{let l=a;s.value.setX(l[0]),s.value.setY(l[1]);break}case Gt:{let l=a;s.value.setX(l[0]),s.value.setY(l[1]),s.value.setZ(l[2]);break}case Yt:{nh(a,t,e);break}case kr:{s.value=a.map(l=>new vN(...l));break}default:{s.value=a;break}}}return o}var Ti=(i,t,e)=>Math.max(0,Math.min(1,Number(t.getVariable(typeof i=="number"?i*100:i,e)??100)/100))??1,Ci=class{constructor(t,e,r,o,n){this.id=t;this.uuid=e;this.data=r;this.uniforms={};for(let a in o)this.uniforms[`f${this.id}_${a}`]=o[a];for(let a in r)ah(a,this,r,n)}get type(){return this.data.type}static create(t,e,r,o){if(r.type==="light")return Kt.createLightLayer(t,e,r,o);if(r.type==="texture"||r.type==="video"){let n=r.type==="texture"?o.uiBuffer(r.texture.image)??o.image(r.texture.image):o.video(r.texture.video),a=new cn(n,r.texture.wrapping,r.texture.minFilter??1008,r.texture.magFilter??1006),s=new Gu(n),l=new Fu(r.texture.repeat,r.texture.offset,r.texture.rotation??0),c=new se(r.crop?1:0),u=new Re(r.projection??0),p=new Re(["x","y","z"].indexOf(r.axis)??0),d=new Re(r.side??0),f=new lt(r.size?new Wr(r.size[0],r.size[1]):new Wr(100,100)),h=new se(r.blending??0),m=new se(Ti(r.alpha,o)),y=new Re(r.mode??0),b=new ct(r.isMask??!1),v=new Pi(a,s,c,u,p,d,f,h,l,m,y,b),w=new Ue(v.calpha,"f");return new ot(t,e,r,{texture:a,textureSize:s,crop:c,projection:u,axis:p,side:d,size:f,blending:h,mat:l,alpha:m,mode:y,isMask:b},v,y,w,b,o)}else if(r.type==="matcap"){let n=o.image(r.texture.image),a=new cn(n,r.texture.wrapping,r.texture.minFilter??1008,r.texture.magFilter??1006),s=new se(Ti(r.alpha,o)),l=new Re(r.mode??0),c=new ct(r.isMask??!1),u=new se((r.texture.rotation??0)*ON.DEG2RAD),p=new Ka(a,s,l,c,u),d=new Ue(p.calpha,"f");return new ot(t,e,r,{texture:a,alpha:s,mode:l,isMask:c,rotation:u},p,l,d,c,o)}else if(r.type==="displace")if(r.displacementType==="noise"){let n=new Gt(new yo(...r.offset)),a=new se(r.scale??10),s=new se(r.intensity??8),l=new se(r.movement??1),c=new Re(r.noiseType??0),u=new Re(r.voronoiStyle??0),p=new se(r.smoothness??.5),d=new se(r.seed??0),f=new se(r.highCut??1),h=new se(r.lowCut??0),m=new Re(r.quality??1),y=new os(s,l,n,u,p,d,f,h,m,a,c);return new xl(t,e,r,{offset:n,scale:a,intensity:s,movement:l,noiseType:c,voronoiStyle:u,smoothness:p,seed:d,highCut:f,lowCut:h,quality:m},y,o)}else throw new Error;else return AN(t,e,r,o)}updateByOp(t,e,r){let o=t;if(o.path[0]===void 0){if(o.type===0)return"type"in o.props||"category"in o.props||"visible"in o.props||"noiseType"in o.props?(r.scene.markNeedsUpdateRendererDirty(),!0):av(o.props,r.shared,this,e)}else if(o.path[0]==="texture")return"texture"in e||"video"in e?nh(o.props,r.shared,this):!0;return!1}dispose(){if(TN(this)){let t=this.uniforms[`f${this.id}_texture`];if(!t)return!1;let e=t;e.image instanceof pr||e.image.deref()}}hasValueByKey(t){return this.uniforms[t]!==void 0}hasValue(t){return this.hasValueByKey(`f${this.id}_${t}`)}setValue(t,e){let r=`f${this.id}_${t}`;this.hasValueByKey(r)&&e!==void 0&&(this.uniforms[r].value=e)}getNode(t){let e=`f${this.id}_${t}`;if(this.hasValueByKey(e))return this.uniforms[e]}getValue(t){let e=`f${this.id}_${t}`;if(this.hasValueByKey(e))return this.uniforms[e].value}getName(t){let r=/f\d+_(.*)/.exec(t);if(r&&r.length>1)return r[1];console.log(`Layer.getName: error ${t}`)}getNames(){let t=[];for(let e in this.uniforms){let r=this.getName(e);r&&t.push(r)}return t}},ot=class extends Ci{constructor(e,r,o,n,a,s,l,c,u){super(e,r,o,n,u);this.params=n;this.color=a;this.mode=s;this.alpha=l;this.isMask=c}},xl=class extends Ci{constructor(e,r,o,n,a,s){super(e,r,o,n,s);this.position=a}},Kt=class extends Ci{constructor(e,r,o,n,a,s){super(e,r,o,a,s);this.node=n}static createLightLayer(e,r,o,n){let a,s=new se(Ti(o.alpha,n)),l=new Re(o.mode),c=new se(o.bumpMapIntensity),u=new se(Ti(o.alphaOverride,n)),p;if(!o.visible)a=new ko,p={};else if(o.category==="lambert"){a=new hl;let d=new We(n.color(o.emissive)??0),f=new ct(o.occlusion??!0);p={emissive:d,occlusion:f},a.emissive=d,a.occlusion=f}else if(o.category==="toon"){a=new gl;let d=new se(o.shininess??30),f=new We(n.color(o.specular)??1118481);p={shininess:d,specular:f},a.shininess=d,a.specular=f}else if(o.category==="physical"){a=new yl;let d=new se(o.roughness??.3),f=new se(o.metalness??0),h=new se(o.reflectivity??.5),m=new ct(o.occlusion??!0);p={roughness:d,metalness:f,reflectivity:h,occlusion:m},a.roughness=d,a.metalness=f,a.reflectivity=h,a.occlusion=m}else{a=new ml;let d=new se(o.shininess??30),f=new We(o.specular!==void 0?n.color(o.specular)??1118481:1118481),h=new ct(o.occlusion??!0);p={shininess:d,specular:f,occlusion:h},a.shininess=d,a.specular=f,a.occlusion=h}return a.alpha=new se(1),a.shadingAlpha=s,a.shadingBlend=l,a.bumpMapIntensity=c,a.alphaOverride=u,p.alpha=a.shadingAlpha,p.mode=a.shadingBlend,p.bumpMapIntensity=a.bumpMapIntensity,p.alphaOverride=a.alphaOverride,new Kt(e,r,o,a,p,n)}get category(){return this.node.category}};function TN(i){let t=i instanceof Ci?i.type:i;return t==="texture"||t==="video"||t==="displace_map"||t==="matcap"}function Pr(i){return{alpha:new se(i.alpha??1),mode:new Re(i.mode??0),isMask:new ct(i.isMask??!1)}}function CN(i,t,e,r,o){switch(i.type){case"color":{let n=new We(r.color??yt),a=Pr(r),s=new un(n,a.alpha),l=new Ue(s.calpha,"f");return new ot(t,e,i,{color:n,...a},s,a.mode,l,a.isMask,o)}case"fresnel":{let n=new We(r.color??16777215),a=new se(r.bias??.1),s=new se(r.scale??1),l=new se(r.intensity??2),c=new se(r.factor??1),u=Pr(r),p=new fl(n,a,s,l,c,u.alpha,u.mode,u.isMask),d=new Ue(p.calpha,"f");return new ot(t,e,i,{color:n,bias:a,scale:s,intensity:l,factor:c,...u},p,u.mode,d,u.isMask,o)}case"rainbow":{let n=new se(r.filmThickness??30),a=new se(r.movement??0),s=new Gt(r.wavelengths??new yo(0,0,0)),l=new se(r.noiseStrength??0),c=new se(r.noiseScale??1),u=new Gt(r.offset??new yo(0,0,0)),p=Pr(r),d=new es(n,a,s,l,c,u,p.alpha,p.isMask),f=new Ue(d.calpha,"f");return new ot(t,e,i,{filmThickness:n,movement:a,wavelengths:s,noiseStrength:l,noiseScale:c,offset:u,...p},d,p.mode,f,p.isMask,o)}case"transmission":{let n=new se(r.thickness??10),a=new se(r.ior??1.5),s=new se(r.roughness??.5),l=Ae.transmissionSize,c=Ae.transmissionRenderTarget,u=Ae.transmissionRenderTargetDepth,p=window.innerWidth,d=window.innerHeight,f=p>=d?new lt(d/p,1):new lt(1,p/d),h=Pr(r),m=new rs(n,a,s,l,c,u,f,h.alpha),y=new Ue(m.calpha,"f");return new ot(t,e,i,{thickness:n,ior:a,roughness:s,aspectRatio:f,...h},m,h.mode,y,h.isMask,o)}case"toon":{let n=new Re(r.positioning??0),a;r.colors?a=new kr(r.colors.length,r.colors):(a=new kr(10,new ns(0,0,0,1)),a.value[1]=new ns(1,1,1,1));let s;r.steps?s=new Ur(r.steps.length,r.steps):(s=new Ur(10,1),s.value[0]=0);let l=new Gt(r.source??new yo(0,0,0)),c=new ct(r.isWorldSpace??!0),u=new se(r.noiseStrength??0),p=new se(r.noiseScale??1),d=new tr(r.shadowColor),f=new Gt(r.offset??new yo(0,0,0)),h=Pr(r),m=new ts(n,a,s,l,c,u,p,d,f,h.alpha),y=new Ue(m.calpha,"f");return new ot(t,e,i,{positioning:n,colors:a,steps:s,source:l,isWorldSpace:c,noiseStrength:u,noiseScale:p,shadowColor:d,offset:f,...h},m,h.mode,y,h.isMask,o)}case"outline":{let n=new We(r.outlineColor??16777215),a=new We(r.contourColor??16777215),s=new se(r.outlineWidth??.1),l=new se(r.contourWidth??.1),c=new se(r.outlineThreshold??.1),u=new se(r.contourThreshold??.1),p=new se(r.outlineSmoothing??.1),d=new se(r.contourFrequency??.1),f=new Gt(r.contourDirection??new yo(0,1,0)),h=new ct(r.positionalLines??!1),m=new ct(r.compensation??!0),y=Ae.normalRenderTarget,b=Ae.normalRenderTargetDepth,v=Ae.pixelRatioNode,w=Ae.resolution,O=Pr(r),S=new Za(n,a,s,l,c,u,p,d,f,h,m,w,y,b,v,O.alpha),T=new Ue(S.calpha,"f");return new ot(t,e,i,{outlineColor:n,contourColor:a,outlineWidth:s,contourWidth:l,outlineThreshold:c,contourThreshold:u,outlineSmoothing:p,contourFrequency:d,contourDirection:f,positionalLines:h,compensation:m,...O},S,O.mode,T,O.isMask,o)}case"depth":{let n=new Re(r.gradientType??0),a=new ct(r.smooth??!1),s=new se(r.near??50),l=new se(r.far??200),c=new se(r.isVector??1),u=new se(r.isWorldSpace??0),p=new Gt(r.origin??new yo),d=new Gt(r.direction??new yo),f;r.colors?f=new kr(r.colors.length,r.colors):(f=new kr(2,new ns(0,0,0,1)),f.value[1]=new ns(1,1,1,1));let h;r.steps?h=new Ur(r.steps.length,r.steps):(h=new Ur(2,1),h.value[0]=0);let m=Pr(r),y=new Xa(n,a,s,l,c,u,p,d,f,h,m.alpha,m.isMask),b=new Ue(y.calpha,"f");return new ot(t,e,i,{gradientType:n,smooth:a,near:s,far:l,isVector:c,isWorldSpace:u,origin:p,direction:d,colors:f,steps:h,...m},y,m.mode,b,m.isMask,o)}case"noise":{let n=new se(r.scale??1),a=new Gt(r.size??new yo(100,100,100)),s=new se(r.move??1),l=new lt(r.fA??new Wr(1.7,9.2)),c=new lt(r.fB??new Wr(8.3,2.8)),u=new lt(r.distortion??new Wr(1,1)),p=new tr(r.colorA),d=new tr(r.colorB),f=new tr(r.colorC),h=new tr(r.colorD),m=new Re(r.noiseType??0),y=new Re(r.voronoiStyle??0),b=new se(r.highCut??1),v=new se(r.lowCut??0),w=new se(r.smoothness??.5),O=new se(r.seed??.5),S=new Re(r.quality??1),T=Pr(r),M=new Qa(n,a,s,l,c,u,p,d,f,h,T.alpha,m,T.isMask,y,b,v,w,O,S),g=new Ue(M.calpha,"f");return new ot(t,e,i,{scale:n,size:a,move:s,fA:l,fB:c,distortion:u,colorA:p,colorB:d,colorC:f,colorD:h,noiseType:m,...T,voronoiStyle:y,highCut:b,lowCut:v,smoothness:w,seed:O,quality:S},M,T.mode,g,T.isMask,o)}case"normal":{let n=new Gt(r.cnormal??new yo(1,1,1)),a=Pr(r),s=new Wa(n,a.alpha),l=new Ue(s.calpha,"f");return new ot(t,e,i,{cnormal:n,...a},s,a.mode,l,a.isMask,o)}case"gradient":{let n=new Re(r.gradientType??0),a=new ct(r.smooth??!1),s;r.colors?s=new kr(r.colors.length,r.colors):(s=new kr(10,new ns(0,0,0,1)),s.value[1]=new ns(1,1,1,1));let l;r.steps?l=new Ur(r.steps.length,r.steps):(l=new Ur(10,1),l.value[0]=0);let c=new lt(r.offset??new Wr(0,0)),u=new lt(r.morph??new Wr(0,0)),p=new se(r.angle??0),d=Pr(r),f=new Ya(n,a,s,l,c,u,p,d.alpha,d.isMask),h=new Ue(f.calpha,"f");return new ot(t,e,i,{gradientType:n,smooth:a,colors:s,steps:l,offset:c,morph:u,angle:p,...d},f,d.mode,h,d.isMask,o)}case"pattern":{let n=new Re(r.style??0),a=new Re(r.projection??0),s=new Re(["x","y","z"].indexOf(r.axis)??0),l=new se(r.blending??0),c=new lt(r.offset??new Wr(0,0)),u=new tr(r.colorA),p=new tr(r.colorB),d=new lt(r.frequency??new Wr(10,10)),f=new se(r.size??.5),h=new se(r.variation??0),m=new se(r.smoothness??.5),y=new se(r.zigzag??0),b=new se(r.rotation??0),v=new lt(r.vertical??new Wr(0,1)),w=new lt(r.horizontal??new Wr(0,1)),O=new Re(r.sides??6),S=Pr(r),T=new Ja(n,a,s,l,c,u,p,d,f,h,m,y,b,v,w,O,S.alpha,S.isMask),M=new Ue(T.calpha,"f");return new ot(t,e,i,{style:n,projection:a,axis:s,blending:l,offset:c,colorA:u,colorB:p,frequency:d,size:f,variation:h,smoothness:m,zigzag:y,rotation:b,vertical:v,horizontal:w,sides:O,...S},T,S.mode,M,S.isMask,o)}default:{let n=new We(1,0,0,1),a=Pr(r),s=new un(n,a.alpha),l=new Ue(s.calpha,"f");return new ot(t,e,i,{color:n,...a},s,a.mode,l,a.isMask,o)}}}function AN(i,t,e,r){let o=nv(e,r);return CN(e,i,t,o,r)}function ah(i,t,e,r){if(e.type==="displace"&&(i==="intensity"||i==="visible")){let o=t.uniforms[`f${t.id}_intensity`];return o?(o.value=e.intensity*(e.visible?1:0),o):void 0}if(e.type!=="displace"&&(i==="alpha"||i==="visible")){let o=t.uniforms[`f${t.id}_alpha`];if(!o)return;if(o.value=Ti(e.alpha,r)*(e.visible?1:0),e.type==="outline"&&i==="visible"){let n=t.uniforms[`f${t.id}_compensation`];n&&(n.value=e.compensation&&e.visible)}return o}}function Wu(i,t){let e=0,r=i.layers.find(o=>o.data.type==="light");if(r){let o=r.data,n=Number(t.getVariable(o.alphaOverride));if((typeof o.alphaOverride=="string"?n/100:o.alphaOverride)<1)return!0}for(let o of i.layers){if(o.data.type!=="displace"&&o.data.isMask)return!0;if(o.data.type!=="displace"&&"alpha"in o.data&&o.data.type!=="light"&&o.data.type!=="fresnel"&&o.data.type!=="texture"&&o.data.type!=="matcap"&&o.data.type!=="rainbow"&&o.data.type!=="outline"&&o.data.type!=="pattern"){let n=o.data.visible?o.data.alpha:0;if(typeof n=="string"&&(n=Math.max(0,Math.min(1,Number(t.getVariable(n)??100)/100))),n===1&&o.data.type==="depth"||o.data.type==="gradient"){for(let a of o.data.colors)if(a[3]<1){n=a[3];break}}else if(n===1&&o.data.type==="noise"){let a=t.color(o.data.colorA).a,s=t.color(o.data.colorB).a,l=t.color(o.data.colorC).a,c=t.color(o.data.colorD).a,u=Math.min(a,Math.min(s,Math.min(l,c)));u<1&&(n=u)}e+=(1-e)*n}}return e<1}var or=class extends MN{constructor(){super(void 0);this.flatShading=!1;this.needsJitter=!0;this.shadersPatchedForShapeBlend=!1;this.nodeContextUuid=0;this.fog=!0,this.dithering=!0,this.vertexColors=!0,this.transparent=!0}customProgramCacheKey(){return""}},qu=class extends or{constructor(e,r,o,n){super();this.flatShading=e;this.side=r;this.wireframe=o;this.root=n}updateAfterBuild(){let e=this.root;this.lights=e.lights,this.vertexShader=e.vertexShader,this.fragmentShader=e.fragmentShader,Object.assign(this.defines,e.defines),Object.assign(this.uniforms,e.uniforms),this.extensions=e.extensions,this.transparent=e.transparent,this.cacheKey=e.customProgramCacheKey()+"flat"+this.flatShading+this.side}onBeforeCompile(e,r){this.root.onBeforeCompile(e)}get data(){return this.root.data}get category(){return this.root.category}get hasAO(){return this.root.hasAO}getFlavor(e,r,o,n){return this.root.getFlavor(e,r,o,n)}get layers(){return this.root.layers}get fragment(){return this.root.fragment}getLayersOfType(e){return this.root.getLayersOfType(e)}getLayerByUuid(e){return this.root.getLayerByUuid(e)}updateByOp(e,r,o){this.root.updateByOp(e,r,o)}nodeMaterialDispose(){this.root.nodeMaterialDispose()}},pn=class extends or{constructor(e,r,o=!0){super();this.data=e;this.allowVariableSaves=o;this.layerIdGen=0;this.flavors=[];this.masks={};this.type="NodeMaterial";this.updaters=[],this.needsJitter=r.shared.needsJitter,$e.startContext(this),this.reset0(e,r),$e.endContext(this)}get nodeMaterial(){return this}getFlavor(e,r,o,n){let a=o?6:(e?3:0)+r;if(a+=((n?.resolutionLevel??0)-(n?.useChildrenColors?4:0))*7,a===0)return this;this.flavors===void 0&&(this.flavors=[]),a-=1;let s=this.flavors[a];return s===void 0&&(s=new qu(e,r,o,this),s.needsJitter=this.needsJitter,this.flavors[a]=s,s.flatShading=e,s.side=r,s.updateAfterBuild(),n&&(s.defines.SHAPEBLEND=n.resolutionLevel,s.defines.SHAPEBLEND_C=n.useChildrenColors?1:0)),s}get fragment(){return this.lightLayer.node}get category(){return this.lightLayer.category}get hasAO(){return this.lightLayer.getNode("occlusion")?.value??!1}reset(e,r,o=!1){$e.startContext(this),(this.data!==e||o)&&this.reset0(e,r),$e.endContext(this)}reset0(e,r){this.data=e;let o=e.layers??Tt.defaultTwoLayerData("phong").layers;try{this.layers=o.map(n=>Ci.create(this.layerIdGen++,n.id,n.data,r.shared))}catch{this.layers=[]}this.layers.reverse(),this.name=e.name??"Untitled Material",this.onUpdate(r.shared),this.transparent=Wu(e,r.shared),this.saveVariableLocations(r)}onVariableUpdate(e,r,o){if(e[0]==="alphaOverride")this.transparent=Wu(this.data,o.shared),this.lightLayer.setValue("alphaOverride",Math.max(0,Math.min(Number(r)/100,1)));else if(e[0]==="layer"){let n=e[1],a=e[2];if(n&&a){let s=this.layers.find(l=>l.uuid===n);s?.hasValue(a)&&(a==="alpha"?(this.transparent=Wu(this.data,o.shared),s.setValue(a,Math.max(0,Math.min(Number(r)/100,1)))):s.setValue(a,r))}}}saveVariableLocations(e){if(!this.allowVariableSaves)return;let r=this.data.layers.find(o=>o.data.type==="light");r&&e.shared.getVariable(r.data.alphaOverride,["material",this.uuid,"alphaOverride"]),this.data.layers.forEach(o=>{"alpha"in o.data&&typeof o.data.alpha=="string"&&e.shared.getVariable(o.data.alpha,["material",this.uuid,"layer",o.id,"alpha"])})}getLayersOfType(e){return this.layers.filter(r=>r.type===e)}getLayerByUuid(e){return this.layers.find(r=>r.uuid===e)}onUpdate(e){this.lightLayer=this.layers.find(r=>r instanceof Kt),this.lightLayer===void 0&&(this.lightLayer=new Kt(0,"",{...vt.defaultData("light","phong"),visible:!1},new ko,{},e)),this.dispose();for(let r of this.flavors)r&&r.dispose();this.applyTextureMaps(),this.applyMasks(),this.blendColors(),this.blendAfterColors(),this.blendPositions(),this.build(),this.nodeContextUuid=0}applyTextureMaps(){let e=this.layers.find(a=>a instanceof Kt);if(!e)return;let r=e.data,o=r.bumpMap,n=r.roughnessMap;e.node.bumpMap=void 0,e.node.roughnessMap=void 0;for(let a=0;a<this.layers.length;++a){let s=this.layers[a];s instanceof ot&&s.color instanceof Pi&&(s.uuid===o&&(e.node.bumpMap=s.color),s.uuid===n&&(e.node.roughnessMap=s.color))}}updateByOp(e,r,o){if($e.startContext(this),r!==void 0?this.data=r:r=this.data,this.transparent=Wu(r,o.shared),e.path[0]==="layers"){let n=o.shared,a=e.path[1];if(a===void 0)o.scene.markNeedsUpdateRendererDirty(),this.reset0(r,o);else{e.type===0&&e.props.occlusion!==void 0&&o.scene.markNeedsUpdateRendererDirty();let s=this.layers.find(l=>l.uuid===a);if(s){let l=r.layers.data(a),c;e.type===0&&("alpha"in e.props||"alphaOverride"in e.props)&&("alpha"in e.props?c={...e.props,alpha:Ti(e.props.alpha,n,["material",this.uuid,"layer",a,"alpha"])}:c={...e.props,alphaOverride:Ti(e.props.alphaOverride,n,["material",this.uuid,"alphaOverride"])}),s.updateByOp({...e,...c?{props:c}:{},path:e.path.slice(2)},l,o)&&this.reset0(r,o)}}}else this.reset0(r,o);$e.endContext(this)}applyMasks(){for(let e=0;e<this.layers.length;++e){let r=this.layers[e];r instanceof ot?r.color.mask=void 0:r instanceof Kt&&(r.node.mask=void 0)}for(let e=0;e<this.layers.length;++e){let r=this.layers[e];if(r instanceof ot&&r.isMask.value&&r.data.visible&&e>0){let o=e-1,n=this.layers[o];n instanceof Kt?n.node.mask=new Rt(r.color,r.alpha,Rt.MUL):n instanceof ot&&(n.isMask.value||(n.color.mask=new Rt(r.color,r.alpha,Rt.MUL)))}}}blendColors(){let e=this.layers.findIndex(o=>o instanceof ot),r=this.layers.findIndex(o=>o instanceof Kt);if(e!==-1&&e<r){let o=this.layers[e].color;for(let n=e+1;n<r;++n){let a=this.layers[n];if(a instanceof ot){if(a.isMask.value)continue;o=new Ha(o,a.color,a.alpha,a.mode)}}this.fragment.color=o}else this.fragment.color=void 0}blendAfterColors(){let e=new Ue("outgoingLight","f"),r=this.layers.findIndex(o=>o instanceof Kt);if(this.layers.length>r+1){for(let o=r+1;o<this.layers.length;++o){let n=this.layers[o];if(n instanceof ot){if(n.isMask.value)continue;e=new Ha(e,n.color,n.alpha,n.mode)}}this.fragment.afterColor=e}else this.fragment.afterColor=void 0}blendPositions(){let e=this.layers.filter(r=>r instanceof xl);if(e.length>0){let r=e[0].position;for(let o=1;o<e.length;++o)e[o]&&(r=new Rt(r,e[o].position,Rt.ADD),r=new Rt(r,new se(.5).setReadonly(!0),Rt.MUL));this.fragment.position=r}else this.fragment.position=void 0}getDefines(){return this.defines}getUniforms(){return this.uniforms}getVertexShader(){return this.vertexShader}getFragmentShader(){return this.fragmentShader}onBeforeCompile(e){this.shapeBlendhack&&this.shapeBlendhack(this),e.uniforms=this.uniforms,e.vertexShader=this.vertexShader,e.fragmentShader=this.fragmentShader,e.extensionDerivatives=this.extensions.derivatives===!0,e.extensionFragDepth=this.extensions.fragDepth===!0,e.extensionDrawBuffers=this.extensions.drawBuffers===!0,e.extensionShaderTextureLOD=this.extensions.shaderTextureLOD===!0}clampUniformsForPreview(e,r){let o=(n,a,s)=>Math.min(Math.max(n,a),s);for(let n of this.layers)if(n.type==="displace"){let a=o(n.uniforms[`f${n.id}_intensity`].value,e,r);n.uniforms[`f${n.id}_intensity`].value=a}}updateFrame(e){for(let r=0;r<this.updaters.length;++r)e.updateNode(this.updaters[r])}build(){let e=new Ua;e.needsJitter=this.needsJitter,this.lights=this.lightLayer.data.visible,e.build(this.fragment,this.fragment),this.vertexShader=e.getCode("vertex"),this.fragmentShader=e.getCode("fragment"),this.defines=e.defines,this.uniforms=e.uniforms,this.extensions=e.extensions,this.updaters=e.updaters;for(let r of this.flavors)r&&r.updateAfterBuild();return this.shadersPatchedForShapeBlend=!1,this}nodeMaterialDispose(){this.layers.forEach(e=>e.dispose()),super.dispose();for(let e of this.flavors)e&&e.dispose()}assetsLoaded(){for(let e of this.layers)if(e instanceof ot){let r=e.params.texture;if(r instanceof cn&&!r.image.loaded)return!1}return!0}};Object.defineProperties(or.prototype,{properties:{get:function(){return this.fragment.properties}}});var fn=class extends pn{constructor(t,e,r){super(t,e,!1),this.uuid=r,this.allowVariableSaves=!0,this.saveVariableLocations(e)}};var sv=new Map;function lv(i){if(typeof i=="string")return i;let t=sv.get(i);return t||(t={url:URL.createObjectURL(new Blob([i]))},sv.set(i,t)),t.url}var IN,cv=new Promise(i=>{IN=i});var uv;cv.then(i=>uv=i);var hn=class{constructor({src:t,volume:e,delay:r,loop:o}){this._volume=1;this.delay=0;this._loop=1;this.loopsRemaining=0;this._status="stopped";this.onEnd=()=>{this.loopsRemaining===1/0?this.replay():this.loopsRemaining>1?(this.replay(),this.loopsRemaining--):(this._status="stopped",this.loopsRemaining=this._loop)};let n;typeof t=="string"?n={src:t}:n={src:lv(t),format:"wav"},this.sound=new uv.Howl(n),this.sound.on("end",this.onEnd),this.src=t,e!==void 0&&(this.volume=e),r!==void 0&&(this.delay=r),o!==void 0&&(this.loop=o)}get status(){return this._status}get volume(){return this._volume}set volume(t){this._volume=t,this.sound.volume(t)}get loop(){return this._loop}set loop(t){this._loop=t,this.loopsRemaining=t}replay(){this.clearDelay(),this.delayTimerId=window.setTimeout(()=>{this.sound.play(),this.clearDelay()},this.delay)}fade(t,e=1e3){t?(this.sound.volume(this._volume),this.clearFade(),this.fadeTimerId=window.setTimeout(()=>{this.sound.fade(this._volume,0,e),this.clearFade()},t)):this.sound.fade(this._volume,0,e)}on(t,e,r){this.sound.on(t,e,r)}off(t,e,r){this.sound.off(t,e,r)}play(){this._status==="playing"||this.sound.playing()||(this._status==="paused"?(this.sound.seek()===0?this.replay():this.sound.play(),this._status="playing"):this._status==="stopped"&&(this.replay(),this._status="playing"))}pause(){this._status==="playing"&&(this.sound.pause(),this.clearFade(),this.clearDelay(),this._status="paused")}stop(){this.sound.stop(),this.loopsRemaining=this._loop,this.clearFade(),this.clearDelay(),this._status="stopped"}clearFade(){this.fadeTimerId&&(clearTimeout(this.fadeTimerId),delete this.fadeTimerId)}clearDelay(){this.delayTimerId&&(clearTimeout(this.delayTimerId),delete this.delayTimerId)}dispose(t=!1){this.off(),this.stop(),this.clearFade(),this.clearDelay()}};import{Box2 as EN,Vector2 as mn,Path as dv,Shape as NN,ShapeUtils as DN,Color as _N}from"three";var $u=class{constructor(){this.type="ShapePath";this.color=new _N;this.subPaths=[];this.currentPath=null}moveTo(t,e){return this.currentPath=new dv,this.subPaths.push(this.currentPath),this.currentPath.moveTo(t,e),this}lineTo(t,e){return this.currentPath?.lineTo(t,e),this}quadraticCurveTo(t,e,r,o){return this.currentPath?.quadraticCurveTo(t,e,r,o),this}bezierCurveTo(t,e,r,o,n,a){return this.currentPath?.bezierCurveTo(t,e,r,o,n,a),this}splineThru(t){return this.currentPath?.splineThru(t),this}toShapes(){let e={ORIGIN:0,DESTINATION:1,BETWEEN:2,LEFT:3,RIGHT:4,BEHIND:5,BEYOND:6},r={loc:e.ORIGIN,t:0};function o(m,y,b,v){let w=m.x,O=y.x,S=b.x,T=v.x,M=m.y,g=y.y,D=b.y,E=v.y,I=(T-S)*(M-D)-(E-D)*(w-S),N=(O-w)*(M-D)-(g-M)*(w-S),_=(E-D)*(O-w)-(T-S)*(g-M),R=I/_,V=N/_;if(_===0&&I!==0||R<=0||R>=1||V<0||V>1)return null;if(I===0&&_===0){for(let U=0;U<2;U++)if(n(U===0?b:v,m,y),r.loc===e.ORIGIN){let B=U===0?b:v;return{x:B.x,y:B.y,t:r.t}}else if(r.loc===e.BETWEEN){let B=+(w+r.t*(O-w)).toPrecision(10),q=+(M+r.t*(g-M)).toPrecision(10);return{x:B,y:q,t:r.t}}return null}else{for(let q=0;q<2;q++)if(n(q===0?b:v,m,y),r.loc===e.ORIGIN){let j=q===0?b:v;return{x:j.x,y:j.y,t:r.t}}let U=+(w+R*(O-w)).toPrecision(10),B=+(M+R*(g-M)).toPrecision(10);return{x:U,y:B,t:R}}}function n(m,y,b){let v=b.x-y.x,w=b.y-y.y,O=m.x-y.x,S=m.y-y.y,T=v*S-O*w;if(m.x===y.x&&m.y===y.y){r.loc=e.ORIGIN,r.t=0;return}if(m.x===b.x&&m.y===b.y){r.loc=e.DESTINATION,r.t=1;return}if(T<-Number.EPSILON){r.loc=e.LEFT;return}if(T>Number.EPSILON){r.loc=e.RIGHT;return}if(v*O<0||w*S<0){r.loc=e.BEHIND;return}if(Math.sqrt(v*v+w*w)<Math.sqrt(O*O+S*S)){r.loc=e.BEYOND;return}let M;v!==0?M=O/v:M=S/w,r.loc=e.BETWEEN,r.t=M}function a(m,y){let b=[],v=[];for(let w=1;w<m.length;w++){let O=m[w-1],S=m[w];for(let T=1;T<y.length;T++){let M=y[T-1],g=y[T],D=o(O,S,M,g);D!==null&&b.find(E=>E.t<=D.t+Number.EPSILON&&E.t>=D.t-Number.EPSILON)===void 0&&(b.push(D),v.push(new mn(D.x,D.y)))}}return v}function s(m,y,b){let v=new mn;y.getCenter(v);let w=[];return b.forEach(O=>{O.boundingBox.containsPoint(v)&&a(m,O.points).forEach(T=>{w.push({identifier:O.identifier,isCW:O.isCW,point:T})})}),w.sort((O,S)=>O.point.x-S.point.x),w}function l(m,y,b,v,w){(w==null||w==="")&&(w="nonzero");let O=new mn;m.boundingBox.getCenter(O);let S=[new mn(b,O.y),new mn(v,O.y)],T=s(S,m.boundingBox,y);T.sort((N,_)=>N.point.x-_.point.x);let M=[],g=[];T.forEach(N=>{N.identifier===m.identifier?M.push(N):g.push(N)});let D=M[0].point.x,E=[],I=0;for(;I<g.length&&g[I].point.x<D;)E.length>0&&E[E.length-1]===g[I].identifier?E.pop():E.push(g[I].identifier),I++;if(E.push(m.identifier),w==="evenodd"){let N=E.length%2===0,_=E[E.length-2];return{identifier:m.identifier,isHole:N,for:_}}else if(w==="nonzero"){let N=!0,_=null,R=null;for(let V=0;V<E.length;V++){let U=E[V];y[U]&&(N?(R=y[U].isCW,N=!1,_=U):R!==y[U].isCW&&(R=y[U].isCW,N=!0))}return{identifier:m.identifier,isHole:N,for:_}}else console.warn('fill-rule: "'+w+'" is currently not implemented.')}let c=0,u=999999999,p=-999999999,d=[];this.subPaths.forEach(m=>{let y=m.getPoints(),b=-999999999,v=999999999,w=-999999999,O=999999999;for(let S=0;S<y.length;S++){let T=y[S];T.y>b&&(b=T.y),T.y<v&&(v=T.y),T.x>w&&(w=T.x),T.x<O&&(O=T.x)}p<=w&&(p=w+1),u>=O&&(u=O-1),y.length&&d.push({curves:m.curves,points:y,isCW:DN.isClockWise(y),identifier:c++,boundingBox:new EN(new mn(O,v),new mn(w,b))})});let f=d.map(m=>l(m,d,u,p,this.userData?.style.fillRule)),h=[];return d.forEach(m=>{let y=f[m.identifier];if(y&&!y.isHole){let b=new NN;b.curves=m.curves,f.filter(w=>w?.isHole&&w.for===m.identifier).forEach(w=>{if(w){let O=d[w.identifier],S=new dv;S.curves=O.curves,b.holes.push(S)}}),h.push(b)}}),h}};var sh=!1,fv,lh=new Promise(i=>{fv=i}),pv=!1;var Xu;function hv(){if(sh=!0,pv)return;if(Xu)return Xu;async function i(){let e=await import("./opentype.js");fv(e),pv=!0}return Xu=i(),Xu}var bl=class{async load(t,e,r=()=>{}){let{load:o}=await lh;o(t,(n,a)=>{n||!a?r(n??"Something went wrong"):e(a)})}async parse(t){let{parse:e,Bidi:r}=await lh;try{let o=e(t),n=new r,a=s=>o.charToGlyphIndex(s.char);return n.registerModifier("glyphIndex",null,a),n.applyFeatures(o,o.defaultRenderOptions.features),{font:o,bidi:n}}catch(o){console.error(o)}}};async function RN(i){return await(await fetch(i)).arrayBuffer()}var LN=new bl;async function ch(i){let t,e,r=!1;if(i.url?(t=await RN(i.url),e=i.url,r=i.url.startsWith("/")):i.data&&(t=i.data.buffer.slice(i.data.byteOffset,i.data.byteOffset+i.data.byteLength)),t)if(sh){let o=await LN.parse(t);if(o)return{font:o.font,url:e,intercepted:r,arr:t,bidi:o.bidi}}else return{font:void 0,url:e,intercepted:r,arr:t,bidi:null}}import{CubicBezierCurve as BN,LineCurve as VN,QuadraticBezierCurve as zN}from"three";function GN(i,t){return t.state.glyphIndex===i||t.state.fina===i||t.state.medi===i||t.state.init===i}var Yu=class{constructor(t){this._arrayBuffer=new ArrayBuffer(1);this._isLoaded=!1;this._intercepted=!1;this._isUserFont=t.isUserFont??!1,this._loadingPromise=ch(t).then(e=>{e&&(this._arrayBuffer=e.arr,this._url=e.url,this.font=e.font,this._intercepted=e.intercepted,this._isLoaded=!0,this._bidi=e.bidi)})}update(t){this._isLoaded=!1,this._isUserFont=t.isUserFont??!1,this._loadingPromise=ch(t).then(e=>{e&&(this._arrayBuffer=e.arr,this._url=e.url,this.font=e.font,this._intercepted=e.intercepted,this._isLoaded=!0,this._bidi=e.bidi)})}get url(){return this._url}get intercepted(){return this._intercepted}get isLoaded(){return this._isLoaded}get loadingPromise(){return this._loadingPromise}reverseLigaturesTable(t,e,r){if(!this._bidi)return[];let o=this._bidi;o.getTextGlyphs(e);let n=o.tokenizer.tokens,a=[],s=0,l=r.length===n.length;for(let c=0;c<r.length;c++){let u=r[c].index,p=String.fromCharCode(r[c].unicode),d=n[s];if(GN(u,d)||l)a.push({char:p,index:u,replacements:[d.state.glyphIndex],replacementChars:[d.char]}),s++;else{let f=d.char,h="",m=[d.state.glyphIndex],y=[],b=!1;for(;!b;)s++,h=e.charAt(s),f+=h,m.push(t.charToGlyphIndex(h)),y=t.stringToGlyphs(f),y.length===1&&y[0].index===u&&(b=!0),s>e.length&&(b=!0);a.push({char:p,index:u,replacements:m,replacementChars:Array.from(f)}),s++}}return a}generateShapes(t,e,r){if(!this._isLoaded)return;let o=this.font,n=e.fontSize/this.unitsPerEm,a=e.fontSize*e.lineHeight,s=t.map(v=>this.getTextWidth(v,e)),l=typeof e.width=="string"?Number(r.getVariable(e.width)):e.width,c=typeof e.height=="string"?Number(r.getVariable(e.height)):e.height,u=this.getCharWidth(`
|
|
2286
|
-
`,e),
|
|
2284
|
+
`),c&&p.push(c.code,`outgoingLight = spe_blend(outgoingLight, ${c.result}, 1.0, SPE_BLENDING_NORMAL);`),u?p.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${u.result} );`):p.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),d&&p.push(`gl_FragColor.a *= ${d.result};`),p.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=p.join(`
|
|
2285
|
+
`)}return r}};import{VideoTexture as aN,Texture as sN}from"three";var Uu=class{constructor(t=1e3*10){this.timeout=t;this.cache=new Map;this.head={data:null,time:0,src:null,next:null,prev:null};this.tail={data:null,time:1/0,src:null,next:null,prev:null};this.hasClean=!1;this.head.next=this.tail,this.tail.prev=this.head}log(...t){}remove(t){let e=this.cache.get(t);e&&(this.dispose(t,e.data),this.cache.delete(t),e.prev.next=e.next,e.next.prev=e.prev)}scheduleCleanup(){this.hasClean||(this.log("scheduled cleanup"),this.hasClean=!0,setTimeout(()=>{this.hasClean=!1,this.log("cleaning");let t=Date.now(),e=this.head.next;for(;e.time<t-this.timeout;)this.dispose(e.src,e.data),this.cache.delete(e.src),e=e.next,e.prev=this.head,this.head.next=e;this.head.next!==this.tail?this.scheduleCleanup():this.log("no more cleanup")},this.timeout+1e3))}has(t){return this.cache.get(t)?.data}load(t){let e=Date.now(),r=this.cache.get(t);return r===void 0?(r={data:this.create(t),src:t,time:e,next:null,prev:null},this.cache.set(t,r)):(r.time=e,r.prev.next=r.next,r.next.prev=r.prev),r.prev=this.tail.prev,r.next=this.tail,this.tail.prev.next=r,this.tail.prev=r,this.scheduleCleanup(),r.data}};var nh=class extends Uu{create(t){return URL.createObjectURL(new Blob([t]))}dispose(t,e){URL.revokeObjectURL(e)}},ih;function nv(i){return typeof i=="string"?i:(ih||(ih=new nh),ih.load(i))}var ku=class{constructor(t,e){this.data=t;this.cache=e;this.refCount=0}deref(){if(this.refCount===0&&!1)throw new Error("ref count -1?");this.refCount-=1,this.refCount===0&&(this.cache.remove(this),this.dispose())}dispose(){if(this.refCount!==0&&!1)throw new Error("ref count is not 0")}},Hu=class{constructor(){this.cache=new Map}remove(t){if(this.cache.delete(t.data)===!1&&!1)throw new Error("ref count remove non-exists")}load(t){let e=this.cache.get(t);return e===void 0&&(e=this.create(t),this.cache.set(t,e)),e.refCount+=1,e}};var ns=class extends ku{constructor(e,r){super(e,r.imageHolderCache);this.data=e;this.shared=r;this.loaded=!1;this.isVideo=!1;this.isBuffer=!1;this._cache={[1e3]:{},[1001]:{},[1002]:{}};this.isVideo=e.type==="video",this.isBuffer=e.isWebGLRenderTarget===!0,this.loadPromise=this.updateSrc(this.isBuffer?e:e.data)}async updateSrc(e){if(typeof document>"u")return;this.disposeTextures(),this.loaded=!1;let r=()=>{this.loaded=!0;for(let n of Object.values(this._cache))for(let a of Object.values(n))for(let s of Object.values(a))s&&(s.image=this.img,s.needsUpdate=!0);this.shared.requestRender()};if(this.isBuffer)this.img=e,this.loaded=!0;else if(this.isVideo){if(this.img=document.createElement("video"),this.img.preload="auto",this.img.playsInline=!0,this.img.currentTime=.01,typeof e!="string"){var o=new FileReader;o.readAsDataURL(new Blob([e],{type:"video/mp4"}));let n;await new Promise(a=>{o.onloadend=s=>{n=s.target?.result,a(null)}}),this.img.src=n}else this.img.src=e;this.img.onloadeddata=()=>{r()}}else this.img=new Image,this.img.src=nv(e),this.img.onload=r,await new Promise(n=>{this.img.onload=()=>{r(),n(null)}})}getTexture(e,r=1008,o=1006){let n=this._cache[e]?.[r]?.[o];if(n)return n;{let a;return this.isBuffer?a=this.img.texture:this.isVideo?a=new aN(this.img,void 0,e,e):a=new sN(this.img,void 0,e,e,o,r),this.loaded&&(a.needsUpdate=!0),this._cache[e]===void 0&&(this._cache[e]={}),this._cache[e][r]===void 0&&(this._cache[e][r]={}),this._cache[e][r][o]=a,a}}setNeedsUpdate(e){for(let r of Object.values(this._cache))for(let o of Object.values(r))for(let n of Object.values(o))n&&(n.needsUpdate=e)}disposeTextures(){for(let[e,r]of Object.entries(this._cache))for(let[o,n]of Object.entries(r))for(let[a,s]of Object.entries(n))s?.dispose(),this._cache[e]!==void 0&&this._cache[e][o]!==void 0&&(this._cache[e][o][a]=void 0)}dispose(){super.dispose(),this.disposeTextures()}};var fr=class extends ns{};import{Vector2 as qo,Vector3 as yo,Vector4 as Wu}from"three";function Ut(i,t){return t.color(i)}function av(i,t){switch(i.type){case"fresnel":return uN(i,t);case"gradient":return dN(i,t);case"depth":return pN(i,t);case"normal":return fN(i,t);case"noise":return hN(i,t);case"rainbow":return mN(i,t);case"toon":return yN(i,t);case"outline":return gN(i,t);case"transmission":return xN(i,t);case"color":return cN(i,t);case"pattern":return bN(i,t)}}function lN(i){return{type:i.type}}function Wr(i,t){let{alpha:e,mode:r,isMask:o}=i,n=typeof e=="string"?(Number(t.getVariable(e))??100)/100:e;return{...lN(i),alpha:n,mode:r,isMask:o}}function cN(i,t){return{...Wr(i,t),color:Ut(i.color,t)}}function uN(i,t){let{bias:e,scale:r,intensity:o,factor:n,color:a}=i;return{...Wr(i,t),color:Ut(a,t),bias:e,scale:r,intensity:o,factor:n}}function dN(i,t){let{gradientType:e,smooth:r,colors:o,steps:n,angle:a,offset:s,morph:l}=i;return{...Wr(i,t),gradientType:e,smooth:r,colors:o.map(c=>new Wu(c[0],c[1],c[2],c[3])),num:o.length,steps:n,offset:new qo(...s),morph:new qo(...l),angle:a}}function pN(i,t){let{gradientType:e,near:r,far:o,isVector:n,isWorldSpace:a,origin:s,direction:l,colors:c,steps:u,smooth:d}=i;return{...Wr(i,t),gradientType:e,near:r,far:o,isVector:n,isWorldSpace:a,origin:new yo(...s),direction:l?new yo(...l):new yo(1,0,0),colors:c.map(p=>p!==void 0?new Wu(p[0],p[1],p[2],p[3]):new Wu(0,0,0,0)),steps:u.slice(0,c.length),smooth:d}}function fN(i,t){let{cnormal:e}=i;return{...Wr(i,t),cnormal:new yo(e[0],e[1],e[2])}}function hN(i,t){return{...Wr(i,t),scale:i.scale,move:i.move,fA:new qo(...i.fA),fB:new qo(...i.fB),size:new yo(...i.size),distortion:new qo(...i.distortion),colorA:Ut(i.colorA,t),colorB:Ut(i.colorB,t),colorC:Ut(i.colorC,t),colorD:Ut(i.colorD,t),noiseType:i.noiseType,voronoiStyle:i.voronoiStyle,highCut:i.highCut,lowCut:i.lowCut,smoothness:i.smoothness,seed:i.seed,quality:i.quality}}function mN(i,t){return{...Wr(i,t),filmThickness:i.filmThickness,movement:i.movement,wavelengths:new yo(...i.wavelengths),noiseStrength:i.noiseStrength,noiseScale:i.noiseScale,offset:new yo(...i.offset)}}function yN(i,t){return{...Wr(i,t),positioning:i.positioning,colors:i.colors.map(e=>new Wu(e[0],e[1],e[2],e[3])),num:i.colors.length,steps:i.steps,source:new yo(...i.source),isWorldSpace:i.isWorldSpace,noiseStrength:i.noiseStrength,noiseScale:i.noiseScale,shadowColor:Ut(i.shadowColor,t),offset:new yo(...i.offset)}}function gN(i,t){return{...Wr(i,t),outlineColor:Ut(i.outlineColor,t),contourColor:Ut(i.contourColor,t),outlineWidth:i.outlineWidth,contourWidth:i.contourWidth,outlineThreshold:i.outlineThreshold,contourThreshold:i.contourThreshold,outlineSmoothing:i.outlineSmoothing,contourFrequency:i.contourFrequency,contourDirection:new yo(...i.contourDirection),positionalLines:i.positionalLines,compensation:i.compensation}}function xN(i,t){return{...Wr(i,t),thickness:i.thickness,ior:i.ior,roughness:i.roughness}}function bN(i,t){return{...Wr(i,t),style:i.style,projection:i.projection,axis:i.axis,blending:i.blending,offset:new qo(...i.offset),colorA:Ut(i.colorA,t),colorB:Ut(i.colorB,t),frequency:new qo(...i.frequency),size:i.size,variation:i.variation,smoothness:i.smoothness,zigzag:i.zigzag,rotation:i.rotation,vertical:new qo(...i.vertical),horizontal:new qo(...i.horizontal),sides:i.sides}}var Ti=class extends Ct{};import{MathUtils as vN,Vector4 as SN}from"three";var wN={noise:["noiseType"],texture:["projection","axis","side"],video:["projection","axis","side"],displace:["noiseType"],light:["roughnessMap","bumpMap"],depth:["smooth","isWorldSpace","gradientType","isVector"],pattern:["style","projection","axis"]},PN={depth:["colors"]};function ON(i,t,e){if(t==="isMask")return!0;let r=wN[i.type],o=PN[i.type];if(o!==void 0){let n=i.color;if(o.includes(t)){let a=n[t]?.value?.length;if(a!==void 0&&a!==e.length)return!0}}return r!==void 0?r.includes(t):!1}function ah(i,t,e){let r=e.uniforms[`f${e.id}_texture`];if(!r)return!1;let o=!1,n=i;if("image"in n){let a=n.image,s=t.image(a),l=r;l.image instanceof fr||l.image.deref(),l.image=s}if("video"in n){let a=n.video,s=t.video(a),l=r;l.image instanceof fr||l.image.deref(),l.image=s}if("wrapping"in n){let a=r;a.wrap=n.wrapping}if("minFilter"in n){let a=r;a.minFilter=n.minFilter}if("magFilter"in n){let a=r;a.magFilter=n.magFilter}if("rotation"in n&&e.uniforms[`f${e.id}_rotation`])return e.uniforms[`f${e.id}_rotation`].value=(n.rotation??0)*vN.DEG2RAD,o;if("repeat"in n||"offset"in n||"rotation"in n){let a="mat",s=e.uniforms[`f${e.id}_${a}`];"repeat"in n&&(s.repeat=n.repeat),"offset"in n&&(s.offset=n.offset),"rotation"in n&&(s.rotation=n.rotation??0),s.updateMatrix()}return o}function sv(i,t,e,r){let o=!1;for(let[n,a]of Object.entries(i)){if(n==="bumpMap"||n==="roughnessMap"){o=!0;continue}if(!n||a===void 0)continue;if(sh(n,e,r,t)){n==="visible"&&e.type==="light"&&(o=!0);continue}e.visible=r.visible;let s=e.uniforms[`f${e.id}_${n}`];if(!!s&&!(s instanceof Pi))switch(o=o||ON(e,n,a),s.constructor){case We:if(typeof a=="string"){let l=t.getColor(a);l&&(s.value=l);break}else{let l=a;s.value instanceof Ti?s.value=new Ct(l.r,l.g,l.b,l.a):s.setRGBA(l);break}case rr:if(typeof a=="string"){let l=t.getColor(a);l&&(s.value=l);break}else{let l=a;s.value instanceof Ti?s.value=new Ct(l.r,l.g,l.b,l.a):s.value.setRGBA(l.r,l.g,l.b,l.a);break}case lt:{let l=a;s.value.setX(l[0]),s.value.setY(l[1]);break}case Ft:{let l=a;s.value.setX(l[0]),s.value.setY(l[1]),s.value.setZ(l[2]);break}case Kt:{ah(a,t,e);break}case Hr:{s.value=a.map(l=>new SN(...l));break}default:{s.value=a;break}}}return o}var Ci=(i,t,e)=>Math.max(0,Math.min(1,Number(t.getVariable(typeof i=="number"?i*100:i,e)??100)/100))??1,Vt=(i,t,e)=>typeof i=="number"?i:t.getVariable(i,e),Ai=class{constructor(t,e,r,o,n){this.id=t;this.uuid=e;this.data=r;this.uniforms={};for(let a in o)this.uniforms[`f${this.id}_${a}`]=o[a];for(let a in r)sh(a,this,r,n)}get type(){return this.data.type}static create(t,e,r,o){if(r.type==="light")return Qt.createLightLayer(t,e,r,o);if(r.type==="texture"||r.type==="video"){let n=r.type==="texture"?o.uiBuffer(r.texture.image)??o.image(r.texture.image):o.video(r.texture.video),a=new un(n,r.texture.wrapping,r.texture.minFilter??1008,r.texture.magFilter??1006),s=new Fu(n),l=new ju(r.texture.repeat,r.texture.offset,r.texture.rotation??0),c=new se(r.crop?1:0),u=new Re(r.projection??0),d=new Re(["x","y","z"].indexOf(r.axis)??0),p=new Re(r.side??0),f=new lt(r.size?new qr(r.size[0],r.size[1]):new qr(100,100)),h=new se(r.blending??0),m=new se(Ci(r.alpha,o)),y=new Re(r.mode??0),x=new ct(r.isMask??!1),v=new Oi(a,s,c,u,d,p,f,h,l,m,y,x),w=new Ue(v.calpha,"f");return new ot(t,e,r,{texture:a,textureSize:s,crop:c,projection:u,axis:d,side:p,size:f,blending:h,mat:l,alpha:m,mode:y,isMask:x},v,y,w,x,o)}else if(r.type==="matcap"){let n=o.image(r.texture.image),a=new un(n,r.texture.wrapping,r.texture.minFilter??1008,r.texture.magFilter??1006),s=new se(Ci(r.alpha,o)),l=new Re(r.mode??0),c=new ct(r.isMask??!1),u=new se((r.texture.rotation??0)*TN.DEG2RAD),d=new Qa(a,s,l,c,u),p=new Ue(d.calpha,"f");return new ot(t,e,r,{texture:a,alpha:s,mode:l,isMask:c,rotation:u},d,l,p,c,o)}else if(r.type==="displace")if(r.displacementType==="noise"){let n=new Ft(new go(...r.offset.map(x=>Vt(x,o)??0))),a=new se(Vt(r.scale,o)??10),s=new se(Vt(r.intensity,o)??8),l=new se(Vt(r.movement,o)??1),c=new Re(r.noiseType??0),u=new Re(r.voronoiStyle??0),d=new se(Vt(r.smoothness,o)??.5),p=new se(Vt(r.seed,o)??0),f=new se(Vt(r.highCut,o)??1),h=new se(Vt(r.lowCut,o)??0),m=new Re(Vt(r.quality,o)??1),y=new is(s,l,n,u,d,p,f,h,m,a,c);return new bl(t,e,r,{offset:n,scale:a,intensity:s,movement:l,noiseType:c,voronoiStyle:u,smoothness:d,seed:p,highCut:f,lowCut:h,quality:m},y,o)}else throw new Error;else return MN(t,e,r,o)}updateByOp(t,e,r){let o=t,n=!1;if(o.path[0]===void 0){for(let a of Object.keys(o.props))try{let s=this.data[a],l=e[a];if(Array.isArray(s)&&Array.isArray(l)){for(let[c,u]of l.entries()){let d=s[c];if(typeof u=="string"||typeof u=="number"&&typeof d=="string"){n=!0;break}}if(n)break}else if(typeof l=="string"&&typeof s=="number"||typeof l=="number"&&typeof s=="string"||typeof l=="string"&&typeof s=="string"&&l!==s){n=!0;break}}catch(s){console.error(s)}if(o.type===0)return"type"in o.props||"category"in o.props||"visible"in o.props||"noiseType"in o.props?(r.scene.markNeedsUpdateRendererDirty(),!0):sv(o.props,r.shared,this,e)||n}else if(o.path[0]==="texture")return"texture"in e||"video"in e?ah(o.props,r.shared,this)||n:!0;return n}dispose(){if(CN(this)){let t=this.uniforms[`f${this.id}_texture`];if(!t)return!1;let e=t;e.image instanceof fr||e.image.deref()}}hasValueByKey(t){return this.uniforms[t]!==void 0}hasValue(t){return this.hasValueByKey(`f${this.id}_${t}`)}setValue(t,e){let r=`f${this.id}_${t}`;this.hasValueByKey(r)&&e!==void 0&&(this.uniforms[r].value=e)}getNode(t){let e=`f${this.id}_${t}`;if(this.hasValueByKey(e))return this.uniforms[e]}getValue(t){let e=`f${this.id}_${t}`;if(this.hasValueByKey(e))return this.uniforms[e].value}getName(t){let r=/f\d+_(.*)/.exec(t);if(r&&r.length>1)return r[1];console.log(`Layer.getName: error ${t}`)}getNames(){let t=[];for(let e in this.uniforms){let r=this.getName(e);r&&t.push(r)}return t}},ot=class extends Ai{constructor(e,r,o,n,a,s,l,c,u){super(e,r,o,n,u);this.params=n;this.color=a;this.mode=s;this.alpha=l;this.isMask=c}},bl=class extends Ai{constructor(e,r,o,n,a,s){super(e,r,o,n,s);this.position=a}},Qt=class extends Ai{constructor(e,r,o,n,a,s){super(e,r,o,a,s);this.node=n}static createLightLayer(e,r,o,n){let a,s=new se(Ci(o.alpha,n)),l=new Re(o.mode),c=new se(o.bumpMapIntensity),u=new se(Ci(o.alphaOverride,n)),d;if(!o.visible)a=new Ho,d={};else if(o.category==="lambert"){a=new ml;let p=new We(n.color(o.emissive)??0),f=new ct(o.occlusion??!0);d={emissive:p,occlusion:f},a.emissive=p,a.occlusion=f}else if(o.category==="toon"){a=new xl;let p=new se(o.shininess??30),f=new We(n.color(o.specular)??1118481);d={shininess:p,specular:f},a.shininess=p,a.specular=f}else if(o.category==="physical"){a=new gl;let p=new se(o.roughness??.3),f=new se(o.metalness??0),h=new se(o.reflectivity??.5),m=new ct(o.occlusion??!0);d={roughness:p,metalness:f,reflectivity:h,occlusion:m},a.roughness=p,a.metalness=f,a.reflectivity=h,a.occlusion=m}else{a=new yl;let p=new se(o.shininess??30),f=new We(o.specular!==void 0?n.color(o.specular)??1118481:1118481),h=new ct(o.occlusion??!0);d={shininess:p,specular:f,occlusion:h},a.shininess=p,a.specular=f,a.occlusion=h}return a.alpha=new se(1),a.shadingAlpha=s,a.shadingBlend=l,a.bumpMapIntensity=c,a.alphaOverride=u,d.alpha=a.shadingAlpha,d.mode=a.shadingBlend,d.bumpMapIntensity=a.bumpMapIntensity,d.alphaOverride=a.alphaOverride,new Qt(e,r,o,a,d,n)}get category(){return this.node.category}};function CN(i){let t=i instanceof Ai?i.type:i;return t==="texture"||t==="video"||t==="displace_map"||t==="matcap"}function Or(i){return{alpha:new se(i.alpha??1),mode:new Re(i.mode??0),isMask:new ct(i.isMask??!1)}}function AN(i,t,e,r,o){switch(i.type){case"color":{let n=new We(r.color??yt),a=Or(r),s=new dn(n,a.alpha),l=new Ue(s.calpha,"f");return new ot(t,e,i,{color:n,...a},s,a.mode,l,a.isMask,o)}case"fresnel":{let n=new We(r.color??16777215),a=new se(r.bias??.1),s=new se(r.scale??1),l=new se(r.intensity??2),c=new se(r.factor??1),u=Or(r),d=new hl(n,a,s,l,c,u.alpha,u.mode,u.isMask),p=new Ue(d.calpha,"f");return new ot(t,e,i,{color:n,bias:a,scale:s,intensity:l,factor:c,...u},d,u.mode,p,u.isMask,o)}case"rainbow":{let n=new se(r.filmThickness??30),a=new se(r.movement??0),s=new Ft(r.wavelengths??new go(0,0,0)),l=new se(r.noiseStrength??0),c=new se(r.noiseScale??1),u=new Ft(r.offset??new go(0,0,0)),d=Or(r),p=new ts(n,a,s,l,c,u,d.alpha,d.isMask),f=new Ue(p.calpha,"f");return new ot(t,e,i,{filmThickness:n,movement:a,wavelengths:s,noiseStrength:l,noiseScale:c,offset:u,...d},p,d.mode,f,d.isMask,o)}case"transmission":{let n=new se(r.thickness??10),a=new se(r.ior??1.5),s=new se(r.roughness??.5),l=Ae.transmissionSize,c=Ae.transmissionRenderTarget,u=Ae.transmissionRenderTargetDepth,d=window.innerWidth,p=window.innerHeight,f=d>=p?new lt(p/d,1):new lt(1,d/p),h=Or(r),m=new os(n,a,s,l,c,u,f,h.alpha),y=new Ue(m.calpha,"f");return new ot(t,e,i,{thickness:n,ior:a,roughness:s,aspectRatio:f,...h},m,h.mode,y,h.isMask,o)}case"toon":{let n=new Re(r.positioning??0),a;r.colors?a=new Hr(r.colors.length,r.colors):(a=new Hr(10,new as(0,0,0,1)),a.value[1]=new as(1,1,1,1));let s;r.steps?s=new kr(r.steps.length,r.steps):(s=new kr(10,1),s.value[0]=0);let l=new Ft(r.source??new go(0,0,0)),c=new ct(r.isWorldSpace??!0),u=new se(r.noiseStrength??0),d=new se(r.noiseScale??1),p=new rr(r.shadowColor),f=new Ft(r.offset??new go(0,0,0)),h=Or(r),m=new rs(n,a,s,l,c,u,d,p,f,h.alpha),y=new Ue(m.calpha,"f");return new ot(t,e,i,{positioning:n,colors:a,steps:s,source:l,isWorldSpace:c,noiseStrength:u,noiseScale:d,shadowColor:p,offset:f,...h},m,h.mode,y,h.isMask,o)}case"outline":{let n=new We(r.outlineColor??16777215),a=new We(r.contourColor??16777215),s=new se(r.outlineWidth??.1),l=new se(r.contourWidth??.1),c=new se(r.outlineThreshold??.1),u=new se(r.contourThreshold??.1),d=new se(r.outlineSmoothing??.1),p=new se(r.contourFrequency??.1),f=new Ft(r.contourDirection??new go(0,1,0)),h=new ct(r.positionalLines??!1),m=new ct(r.compensation??!0),y=Ae.normalRenderTarget,x=Ae.normalRenderTargetDepth,v=Ae.pixelRatioNode,w=Ae.resolution,O=Or(r),S=new Ja(n,a,s,l,c,u,d,p,f,h,m,w,y,x,v,O.alpha),T=new Ue(S.calpha,"f");return new ot(t,e,i,{outlineColor:n,contourColor:a,outlineWidth:s,contourWidth:l,outlineThreshold:c,contourThreshold:u,outlineSmoothing:d,contourFrequency:p,contourDirection:f,positionalLines:h,compensation:m,...O},S,O.mode,T,O.isMask,o)}case"depth":{let n=new Re(r.gradientType??0),a=new ct(r.smooth??!1),s=new se(Vt(r.near,o)??50),l=new se(Vt(r.far,o)??200),c=new se(r.isVector??1),u=new se(r.isWorldSpace??0),d=r.origin??new go;d.x=Vt(d.x,o)??0,d.y=Vt(d.y,o)??0,d.z=Vt(d.z,o)??0;let p=new Ft(d),f=r.direction??new go;f.x=Vt(f.x,o)??0,f.y=Vt(f.y,o)??0,f.z=Vt(f.z,o)??0;let h=new Ft(f),m;r.colors?m=new Hr(r.colors.length,r.colors):(m=new Hr(2,new as(0,0,0,1)),m.value[1]=new as(1,1,1,1));let y;r.steps?y=new kr(r.steps.length,r.steps):(y=new kr(2,1),y.value[0]=0);let x=Or(r),v=new Ya(n,a,s,l,c,u,p,h,m,y,x.alpha,x.isMask),w=new Ue(v.calpha,"f");return new ot(t,e,i,{gradientType:n,smooth:a,near:s,far:l,isVector:c,isWorldSpace:u,origin:p,direction:h,colors:m,steps:y,...x},v,x.mode,w,x.isMask,o)}case"noise":{let n=new se(r.scale??1),a=new Ft(r.size??new go(100,100,100)),s=new se(r.move??1),l=new lt(r.fA??new qr(1.7,9.2)),c=new lt(r.fB??new qr(8.3,2.8)),u=new lt(r.distortion??new qr(1,1)),d=new rr(r.colorA),p=new rr(r.colorB),f=new rr(r.colorC),h=new rr(r.colorD),m=new Re(r.noiseType??0),y=new Re(r.voronoiStyle??0),x=new se(r.highCut??1),v=new se(r.lowCut??0),w=new se(r.smoothness??.5),O=new se(r.seed??.5),S=new Re(r.quality??1),T=Or(r),M=new Za(n,a,s,l,c,u,d,p,f,h,T.alpha,m,T.isMask,y,x,v,w,O,S),g=new Ue(M.calpha,"f");return new ot(t,e,i,{scale:n,size:a,move:s,fA:l,fB:c,distortion:u,colorA:d,colorB:p,colorC:f,colorD:h,noiseType:m,...T,voronoiStyle:y,highCut:x,lowCut:v,smoothness:w,seed:O,quality:S},M,T.mode,g,T.isMask,o)}case"normal":{let n=new Ft(r.cnormal??new go(1,1,1)),a=Or(r),s=new qa(n,a.alpha),l=new Ue(s.calpha,"f");return new ot(t,e,i,{cnormal:n,...a},s,a.mode,l,a.isMask,o)}case"gradient":{let n=new Re(r.gradientType??0),a=new ct(r.smooth??!1),s;r.colors?s=new Hr(r.colors.length,r.colors):(s=new Hr(10,new as(0,0,0,1)),s.value[1]=new as(1,1,1,1));let l;r.steps?l=new kr(r.steps.length,r.steps):(l=new kr(10,1),l.value[0]=0);let c=new lt(r.offset??new qr(0,0)),u=new lt(r.morph??new qr(0,0)),d=new se(r.angle??0),p=Or(r),f=new Ka(n,a,s,l,c,u,d,p.alpha,p.isMask),h=new Ue(f.calpha,"f");return new ot(t,e,i,{gradientType:n,smooth:a,colors:s,steps:l,offset:c,morph:u,angle:d,...p},f,p.mode,h,p.isMask,o)}case"pattern":{let n=new Re(r.style??0),a=new Re(r.projection??0),s=new Re(["x","y","z"].indexOf(r.axis)??0),l=new se(r.blending??0),c=new lt(r.offset??new qr(0,0)),u=new rr(r.colorA),d=new rr(r.colorB),p=new lt(r.frequency??new qr(10,10)),f=new se(r.size??.5),h=new se(r.variation??0),m=new se(r.smoothness??.5),y=new se(r.zigzag??0),x=new se(r.rotation??0),v=new lt(r.vertical??new qr(0,1)),w=new lt(r.horizontal??new qr(0,1)),O=new Re(r.sides??6),S=Or(r),T=new es(n,a,s,l,c,u,d,p,f,h,m,y,x,v,w,O,S.alpha,S.isMask),M=new Ue(T.calpha,"f");return new ot(t,e,i,{style:n,projection:a,axis:s,blending:l,offset:c,colorA:u,colorB:d,frequency:p,size:f,variation:h,smoothness:m,zigzag:y,rotation:x,vertical:v,horizontal:w,sides:O,...S},T,S.mode,M,S.isMask,o)}default:{let n=new We(1,0,0,1),a=Or(r),s=new dn(n,a.alpha),l=new Ue(s.calpha,"f");return new ot(t,e,i,{color:n,...a},s,a.mode,l,a.isMask,o)}}}function MN(i,t,e,r){let o=av(e,r);return AN(e,i,t,o,r)}function sh(i,t,e,r){if(e.type==="displace"&&(i==="intensity"||i==="visible")){let o=t.uniforms[`f${t.id}_intensity`];return o?(o.value=(Vt(e.intensity,r)??1)*(e.visible?1:0),o):void 0}if(e.type!=="displace"&&(i==="alpha"||i==="visible")){let o=t.uniforms[`f${t.id}_alpha`];if(!o)return;if(o.value=Ci(e.alpha,r)*(e.visible?1:0),e.type==="outline"&&i==="visible"){let n=t.uniforms[`f${t.id}_compensation`];n&&(n.value=e.compensation&&e.visible)}return o}}function qu(i,t){let e=0,r=i.layers.find(o=>o.data.type==="light");if(r){let o=r.data,n=Number(t.getVariable(o.alphaOverride));if((typeof o.alphaOverride=="string"?n/100:o.alphaOverride)<1)return!0}for(let o of i.layers){if(o.data.type!=="displace"&&o.data.isMask)return!0;if(o.data.type!=="displace"&&"alpha"in o.data&&o.data.type!=="light"&&o.data.type!=="fresnel"&&o.data.type!=="texture"&&o.data.type!=="matcap"&&o.data.type!=="rainbow"&&o.data.type!=="outline"&&o.data.type!=="pattern"){let n=o.data.visible?o.data.alpha:0;if(typeof n=="string"&&(n=Math.max(0,Math.min(1,Number(t.getVariable(n)??100)/100))),n===1&&o.data.type==="depth"||o.data.type==="gradient"){for(let a of o.data.colors)if(a[3]<1){n=a[3];break}}else if(n===1&&o.data.type==="noise"){let a=t.color(o.data.colorA).a,s=t.color(o.data.colorB).a,l=t.color(o.data.colorC).a,c=t.color(o.data.colorD).a,u=Math.min(a,Math.min(s,Math.min(l,c)));u<1&&(n=u)}e+=(1-e)*n}}return e<1}var ir=class extends IN{constructor(){super(void 0);this.flatShading=!1;this.needsJitter=!0;this.shadersPatchedForShapeBlend=!1;this.nodeContextUuid=0;this.fog=!0,this.dithering=!0,this.vertexColors=!0,this.transparent=!0}customProgramCacheKey(){return""}},$u=class extends ir{constructor(e,r,o,n){super();this.flatShading=e;this.side=r;this.wireframe=o;this.root=n}updateAfterBuild(){let e=this.root;this.lights=e.lights,this.vertexShader=e.vertexShader,this.fragmentShader=e.fragmentShader,Object.assign(this.defines,e.defines),Object.assign(this.uniforms,e.uniforms),this.extensions=e.extensions,this.transparent=e.transparent,this.cacheKey=e.customProgramCacheKey()+"flat"+this.flatShading+this.side}onBeforeCompile(e,r){this.root.onBeforeCompile(e)}get data(){return this.root.data}get category(){return this.root.category}get hasAO(){return this.root.hasAO}getFlavor(e,r,o,n){return this.root.getFlavor(e,r,o,n)}get layers(){return this.root.layers}get fragment(){return this.root.fragment}getLayersOfType(e){return this.root.getLayersOfType(e)}getLayerByUuid(e){return this.root.getLayerByUuid(e)}updateByOp(e,r,o){this.root.updateByOp(e,r,o)}nodeMaterialDispose(){this.root.nodeMaterialDispose()}},fn=class extends ir{constructor(e,r,o=!0){super();this.data=e;this.allowVariableSaves=o;this.layerIdGen=0;this.flavors=[];this.masks={};this.type="NodeMaterial";this.updaters=[],this.needsJitter=r.shared.needsJitter,$e.startContext(this),this.reset0(e,r),$e.endContext(this)}get nodeMaterial(){return this}getFlavor(e,r,o,n){let a=o?6:(e?3:0)+r;if(a+=((n?.resolutionLevel??0)-(n?.useChildrenColors?4:0))*7,a===0)return this;this.flavors===void 0&&(this.flavors=[]),a-=1;let s=this.flavors[a];return s===void 0&&(s=new $u(e,r,o,this),s.needsJitter=this.needsJitter,this.flavors[a]=s,s.flatShading=e,s.side=r,s.updateAfterBuild(),n&&(s.defines.SHAPEBLEND=n.resolutionLevel,s.defines.SHAPEBLEND_C=n.useChildrenColors?1:0)),s}get fragment(){return this.lightLayer.node}get category(){return this.lightLayer.category}get hasAO(){return this.lightLayer.getNode("occlusion")?.value??!1}reset(e,r,o=!1){$e.startContext(this),(this.data!==e||o)&&this.reset0(e,r),$e.endContext(this)}reset0(e,r){this.data=e;let o=e.layers??Tt.defaultTwoLayerData("phong").layers;try{this.layers=o.map(n=>Ai.create(this.layerIdGen++,n.id,n.data,r.shared))}catch{this.layers=[]}this.layers.reverse(),this.name=e.name??"Untitled Material",this.onUpdate(r.shared),this.transparent=qu(e,r.shared),this.saveVariableLocations(r)}onVariableUpdate(e,r,o){if(e[0]==="alphaOverride")this.transparent=qu(this.data,o.shared),this.lightLayer.setValue("alphaOverride",Math.max(0,Math.min(Number(r)/100,1)));else if(e[0]==="layer"){let n=e[1],a=e[2];if(n&&a){let s=this.layers.find(l=>l.uuid===n);if(s?.hasValue(a))if(a==="alpha")this.transparent=qu(this.data,o.shared),s.setValue(a,Math.max(0,Math.min(Number(r)/100,1)));else{let l=s.getValue(a),c=e[3];(c==="x"||c==="y"||c==="z")&&l.isVector3?l[c]=Number(r):s.setValue(a,r)}}}}saveVariableLocations(e){if(!this.allowVariableSaves)return;let r=this.data.layers.find(o=>o.data.type==="light");r&&e.shared.getVariable(r.data.alphaOverride,["material",this.uuid,"alphaOverride"]),this.data.layers.forEach(o=>{if("alpha"in o.data&&typeof o.data.alpha=="string"&&e.shared.getVariable(o.data.alpha,["material",this.uuid,"layer",o.id,"alpha"]),o.data.type==="displace"){let n=["intensity","scale","movement","smoothness","seed","highCut","lowCut"];for(let a of n)a in o.data&&e.shared.getVariable(o.data[a],["material",this.uuid,"layer",o.id,a]);"offset"in o.data&&o.data.offset.forEach((a,s)=>{e.shared.getVariable(a,["material",this.uuid,"layer",o.id,"offset",s===0?"x":s===1?"y":"z"])})}else if(o.data.type==="depth"){let n=["near","far"];for(let a of n)a in o.data&&e.shared.getVariable(o.data[a],["material",this.uuid,"layer",o.id,a]);o.data.origin.forEach((a,s)=>{e.shared.getVariable(a,["material",this.uuid,"layer",o.id,"origin",s===0?"x":s===1?"y":"z"])}),o.data.direction.forEach((a,s)=>{e.shared.getVariable(a,["material",this.uuid,"layer",o.id,"direction",s===0?"x":s===1?"y":"z"])})}})}getLayersOfType(e){return this.layers.filter(r=>r.type===e)}getLayerByUuid(e){return this.layers.find(r=>r.uuid===e)}onUpdate(e){this.lightLayer=this.layers.find(r=>r instanceof Qt),this.lightLayer===void 0&&(this.lightLayer=new Qt(0,"",{...vt.defaultData("light","phong"),visible:!1},new Ho,{},e)),this.dispose();for(let r of this.flavors)r&&r.dispose();this.applyTextureMaps(),this.applyMasks(),this.blendColors(),this.blendAfterColors(),this.blendPositions(),this.build(),this.nodeContextUuid=0}applyTextureMaps(){let e=this.layers.find(a=>a instanceof Qt);if(!e)return;let r=e.data,o=r.bumpMap,n=r.roughnessMap;e.node.bumpMap=void 0,e.node.roughnessMap=void 0;for(let a=0;a<this.layers.length;++a){let s=this.layers[a];s instanceof ot&&s.color instanceof Oi&&(s.uuid===o&&(e.node.bumpMap=s.color),s.uuid===n&&(e.node.roughnessMap=s.color))}}updateByOp(e,r,o){if($e.startContext(this),r!==void 0?this.data=r:r=this.data,this.transparent=qu(r,o.shared),e.path[0]==="layers"){let n=o.shared,a=e.path[1];if(a===void 0)o.scene.markNeedsUpdateRendererDirty(),this.reset0(r,o);else{e.type===0&&e.props.occlusion!==void 0&&o.scene.markNeedsUpdateRendererDirty();let s=this.layers.find(l=>l.uuid===a);if(s){let l=r.layers.data(a),c;e.type===0&&("alpha"in e.props||"alphaOverride"in e.props)&&("alpha"in e.props?c={...e.props,alpha:Ci(e.props.alpha,n,["material",this.uuid,"layer",a,"alpha"])}:c={...e.props,alphaOverride:Ci(e.props.alphaOverride,n,["material",this.uuid,"alphaOverride"])}),s.updateByOp({...e,...c?{props:c}:{},path:e.path.slice(2)},l,o)&&this.reset0(r,o)}}}else this.reset0(r,o);$e.endContext(this)}applyMasks(){for(let e=0;e<this.layers.length;++e){let r=this.layers[e];r instanceof ot?r.color.mask=void 0:r instanceof Qt&&(r.node.mask=void 0)}for(let e=0;e<this.layers.length;++e){let r=this.layers[e];if(r instanceof ot&&r.isMask.value&&r.data.visible&&e>0){let o=e-1,n=this.layers[o];n instanceof Qt?n.node.mask=new Rt(r.color,r.alpha,Rt.MUL):n instanceof ot&&(n.isMask.value||(n.color.mask=new Rt(r.color,r.alpha,Rt.MUL)))}}}blendColors(){let e=this.layers.findIndex(o=>o instanceof ot),r=this.layers.findIndex(o=>o instanceof Qt);if(e!==-1&&e<r){let o=this.layers[e].color;for(let n=e+1;n<r;++n){let a=this.layers[n];if(a instanceof ot){if(a.isMask.value)continue;o=new Wa(o,a.color,a.alpha,a.mode)}}this.fragment.color=o}else this.fragment.color=void 0}blendAfterColors(){let e=new Ue("outgoingLight","f"),r=this.layers.findIndex(o=>o instanceof Qt);if(this.layers.length>r+1){for(let o=r+1;o<this.layers.length;++o){let n=this.layers[o];if(n instanceof ot){if(n.isMask.value)continue;e=new Wa(e,n.color,n.alpha,n.mode)}}this.fragment.afterColor=e}else this.fragment.afterColor=void 0}blendPositions(){let e=this.layers.filter(r=>r instanceof bl);if(e.length>0){let r=e[0].position;for(let o=1;o<e.length;++o)e[o]&&(r=new Rt(r,e[o].position,Rt.ADD),r=new Rt(r,new se(.5).setReadonly(!0),Rt.MUL));this.fragment.position=r}else this.fragment.position=void 0}getDefines(){return this.defines}getUniforms(){return this.uniforms}getVertexShader(){return this.vertexShader}getFragmentShader(){return this.fragmentShader}onBeforeCompile(e){this.shapeBlendhack&&this.shapeBlendhack(this),e.uniforms=this.uniforms,e.vertexShader=this.vertexShader,e.fragmentShader=this.fragmentShader,e.extensionDerivatives=this.extensions.derivatives===!0,e.extensionFragDepth=this.extensions.fragDepth===!0,e.extensionDrawBuffers=this.extensions.drawBuffers===!0,e.extensionShaderTextureLOD=this.extensions.shaderTextureLOD===!0}clampUniformsForPreview(e,r){let o=(n,a,s)=>Math.min(Math.max(n,a),s);for(let n of this.layers)if(n.type==="displace"){let a=o(n.uniforms[`f${n.id}_intensity`].value,e,r);n.uniforms[`f${n.id}_intensity`].value=a}}updateFrame(e){for(let r=0;r<this.updaters.length;++r)e.updateNode(this.updaters[r])}build(){let e=new ka;e.needsJitter=this.needsJitter,this.lights=this.lightLayer.data.visible,e.build(this.fragment,this.fragment),this.vertexShader=e.getCode("vertex"),this.fragmentShader=e.getCode("fragment"),this.defines=e.defines,this.uniforms=e.uniforms,this.extensions=e.extensions,this.updaters=e.updaters;for(let r of this.flavors)r&&r.updateAfterBuild();return this.shadersPatchedForShapeBlend=!1,this}nodeMaterialDispose(){this.layers.forEach(e=>e.dispose()),super.dispose();for(let e of this.flavors)e&&e.dispose()}assetsLoaded(){for(let e of this.layers)if(e instanceof ot){let r=e.params.texture;if(r instanceof un&&!r.image.loaded)return!1}return!0}};Object.defineProperties(ir.prototype,{properties:{get:function(){return this.fragment.properties}}});var hn=class extends fn{constructor(t,e,r){super(t,e,!1),this.uuid=r,this.allowVariableSaves=!0,this.saveVariableLocations(e)}};var lv=new Map;function cv(i){if(typeof i=="string")return i;let t=lv.get(i);return t||(t={url:URL.createObjectURL(new Blob([i]))},lv.set(i,t)),t.url}var EN,uv=new Promise(i=>{EN=i});var dv;uv.then(i=>dv=i);var mn=class{constructor({src:t,volume:e,delay:r,loop:o}){this._volume=1;this.delay=0;this._loop=1;this.loopsRemaining=0;this._status="stopped";this.onEnd=()=>{this.loopsRemaining===1/0?this.replay():this.loopsRemaining>1?(this.replay(),this.loopsRemaining--):(this._status="stopped",this.loopsRemaining=this._loop)};let n;typeof t=="string"?n={src:t}:n={src:cv(t),format:"wav"},this.sound=new dv.Howl(n),this.sound.on("end",this.onEnd),this.src=t,e!==void 0&&(this.volume=e),r!==void 0&&(this.delay=r),o!==void 0&&(this.loop=o)}get status(){return this._status}get volume(){return this._volume}set volume(t){this._volume=t,this.sound.volume(t)}get loop(){return this._loop}set loop(t){this._loop=t,this.loopsRemaining=t}replay(){this.clearDelay(),this.delayTimerId=window.setTimeout(()=>{this.sound.play(),this.clearDelay()},this.delay)}fade(t,e=1e3){t?(this.sound.volume(this._volume),this.clearFade(),this.fadeTimerId=window.setTimeout(()=>{this.sound.fade(this._volume,0,e),this.clearFade()},t)):this.sound.fade(this._volume,0,e)}on(t,e,r){this.sound.on(t,e,r)}off(t,e,r){this.sound.off(t,e,r)}play(){this._status==="playing"||this.sound.playing()||(this._status==="paused"?(this.sound.seek()===0?this.replay():this.sound.play(),this._status="playing"):this._status==="stopped"&&(this.replay(),this._status="playing"))}pause(){this._status==="playing"&&(this.sound.pause(),this.clearFade(),this.clearDelay(),this._status="paused")}stop(){this.sound.stop(),this.loopsRemaining=this._loop,this.clearFade(),this.clearDelay(),this._status="stopped"}clearFade(){this.fadeTimerId&&(clearTimeout(this.fadeTimerId),delete this.fadeTimerId)}clearDelay(){this.delayTimerId&&(clearTimeout(this.delayTimerId),delete this.delayTimerId)}dispose(t=!1){this.off(),this.stop(),this.clearFade(),this.clearDelay()}};import{Box2 as NN,Vector2 as yn,Path as pv,Shape as DN,ShapeUtils as _N,Color as RN}from"three";var Xu=class{constructor(){this.type="ShapePath";this.color=new RN;this.subPaths=[];this.currentPath=null}moveTo(t,e){return this.currentPath=new pv,this.subPaths.push(this.currentPath),this.currentPath.moveTo(t,e),this}lineTo(t,e){return this.currentPath?.lineTo(t,e),this}quadraticCurveTo(t,e,r,o){return this.currentPath?.quadraticCurveTo(t,e,r,o),this}bezierCurveTo(t,e,r,o,n,a){return this.currentPath?.bezierCurveTo(t,e,r,o,n,a),this}splineThru(t){return this.currentPath?.splineThru(t),this}toShapes(){let e={ORIGIN:0,DESTINATION:1,BETWEEN:2,LEFT:3,RIGHT:4,BEHIND:5,BEYOND:6},r={loc:e.ORIGIN,t:0};function o(m,y,x,v){let w=m.x,O=y.x,S=x.x,T=v.x,M=m.y,g=y.y,D=x.y,E=v.y,I=(T-S)*(M-D)-(E-D)*(w-S),N=(O-w)*(M-D)-(g-M)*(w-S),_=(E-D)*(O-w)-(T-S)*(g-M),R=I/_,V=N/_;if(_===0&&I!==0||R<=0||R>=1||V<0||V>1)return null;if(I===0&&_===0){for(let U=0;U<2;U++)if(n(U===0?x:v,m,y),r.loc===e.ORIGIN){let B=U===0?x:v;return{x:B.x,y:B.y,t:r.t}}else if(r.loc===e.BETWEEN){let B=+(w+r.t*(O-w)).toPrecision(10),q=+(M+r.t*(g-M)).toPrecision(10);return{x:B,y:q,t:r.t}}return null}else{for(let q=0;q<2;q++)if(n(q===0?x:v,m,y),r.loc===e.ORIGIN){let j=q===0?x:v;return{x:j.x,y:j.y,t:r.t}}let U=+(w+R*(O-w)).toPrecision(10),B=+(M+R*(g-M)).toPrecision(10);return{x:U,y:B,t:R}}}function n(m,y,x){let v=x.x-y.x,w=x.y-y.y,O=m.x-y.x,S=m.y-y.y,T=v*S-O*w;if(m.x===y.x&&m.y===y.y){r.loc=e.ORIGIN,r.t=0;return}if(m.x===x.x&&m.y===x.y){r.loc=e.DESTINATION,r.t=1;return}if(T<-Number.EPSILON){r.loc=e.LEFT;return}if(T>Number.EPSILON){r.loc=e.RIGHT;return}if(v*O<0||w*S<0){r.loc=e.BEHIND;return}if(Math.sqrt(v*v+w*w)<Math.sqrt(O*O+S*S)){r.loc=e.BEYOND;return}let M;v!==0?M=O/v:M=S/w,r.loc=e.BETWEEN,r.t=M}function a(m,y){let x=[],v=[];for(let w=1;w<m.length;w++){let O=m[w-1],S=m[w];for(let T=1;T<y.length;T++){let M=y[T-1],g=y[T],D=o(O,S,M,g);D!==null&&x.find(E=>E.t<=D.t+Number.EPSILON&&E.t>=D.t-Number.EPSILON)===void 0&&(x.push(D),v.push(new yn(D.x,D.y)))}}return v}function s(m,y,x){let v=new yn;y.getCenter(v);let w=[];return x.forEach(O=>{O.boundingBox.containsPoint(v)&&a(m,O.points).forEach(T=>{w.push({identifier:O.identifier,isCW:O.isCW,point:T})})}),w.sort((O,S)=>O.point.x-S.point.x),w}function l(m,y,x,v,w){(w==null||w==="")&&(w="nonzero");let O=new yn;m.boundingBox.getCenter(O);let S=[new yn(x,O.y),new yn(v,O.y)],T=s(S,m.boundingBox,y);T.sort((N,_)=>N.point.x-_.point.x);let M=[],g=[];T.forEach(N=>{N.identifier===m.identifier?M.push(N):g.push(N)});let D=M[0].point.x,E=[],I=0;for(;I<g.length&&g[I].point.x<D;)E.length>0&&E[E.length-1]===g[I].identifier?E.pop():E.push(g[I].identifier),I++;if(E.push(m.identifier),w==="evenodd"){let N=E.length%2===0,_=E[E.length-2];return{identifier:m.identifier,isHole:N,for:_}}else if(w==="nonzero"){let N=!0,_=null,R=null;for(let V=0;V<E.length;V++){let U=E[V];y[U]&&(N?(R=y[U].isCW,N=!1,_=U):R!==y[U].isCW&&(R=y[U].isCW,N=!0))}return{identifier:m.identifier,isHole:N,for:_}}else console.warn('fill-rule: "'+w+'" is currently not implemented.')}let c=0,u=999999999,d=-999999999,p=[];this.subPaths.forEach(m=>{let y=m.getPoints(),x=-999999999,v=999999999,w=-999999999,O=999999999;for(let S=0;S<y.length;S++){let T=y[S];T.y>x&&(x=T.y),T.y<v&&(v=T.y),T.x>w&&(w=T.x),T.x<O&&(O=T.x)}d<=w&&(d=w+1),u>=O&&(u=O-1),y.length&&p.push({curves:m.curves,points:y,isCW:_N.isClockWise(y),identifier:c++,boundingBox:new NN(new yn(O,v),new yn(w,x))})});let f=p.map(m=>l(m,p,u,d,this.userData?.style.fillRule)),h=[];return p.forEach(m=>{let y=f[m.identifier];if(y&&!y.isHole){let x=new DN;x.curves=m.curves,f.filter(w=>w?.isHole&&w.for===m.identifier).forEach(w=>{if(w){let O=p[w.identifier],S=new pv;S.curves=O.curves,x.holes.push(S)}}),h.push(x)}}),h}};var lh=!1,hv,ch=new Promise(i=>{hv=i}),fv=!1;var Yu;function mv(){if(lh=!0,fv)return;if(Yu)return Yu;async function i(){let e=await import("./opentype.js");hv(e),fv=!0}return Yu=i(),Yu}var vl=class{async load(t,e,r=()=>{}){let{load:o}=await ch;o(t,(n,a)=>{n||!a?r(n??"Something went wrong"):e(a)})}async parse(t){let{parse:e,Bidi:r}=await ch;try{let o=e(t),n=new r,a=s=>o.charToGlyphIndex(s.char);return n.registerModifier("glyphIndex",null,a),n.applyFeatures(o,o.defaultRenderOptions.features),{font:o,bidi:n}}catch(o){console.error(o)}}};async function LN(i){return await(await fetch(i)).arrayBuffer()}var BN=new vl;async function uh(i){let t,e,r=!1;if(i.url?(t=await LN(i.url),e=i.url,r=i.url.startsWith("/")):i.data&&(t=i.data.buffer.slice(i.data.byteOffset,i.data.byteOffset+i.data.byteLength)),t)if(lh){let o=await BN.parse(t);if(o)return{font:o.font,url:e,intercepted:r,arr:t,bidi:o.bidi}}else return{font:void 0,url:e,intercepted:r,arr:t,bidi:null}}import{CubicBezierCurve as VN,LineCurve as zN,QuadraticBezierCurve as GN}from"three";function FN(i,t){return t.state.glyphIndex===i||t.state.fina===i||t.state.medi===i||t.state.init===i}var Ku=class{constructor(t){this._arrayBuffer=new ArrayBuffer(1);this._isLoaded=!1;this._intercepted=!1;this._isUserFont=t.isUserFont??!1,this._loadingPromise=uh(t).then(e=>{e&&(this._arrayBuffer=e.arr,this._url=e.url,this.font=e.font,this._intercepted=e.intercepted,this._isLoaded=!0,this._bidi=e.bidi)})}update(t){this._isLoaded=!1,this._isUserFont=t.isUserFont??!1,this._loadingPromise=uh(t).then(e=>{e&&(this._arrayBuffer=e.arr,this._url=e.url,this.font=e.font,this._intercepted=e.intercepted,this._isLoaded=!0,this._bidi=e.bidi)})}get url(){return this._url}get intercepted(){return this._intercepted}get isLoaded(){return this._isLoaded}get loadingPromise(){return this._loadingPromise}reverseLigaturesTable(t,e,r){if(!this._bidi)return[];let o=this._bidi;o.getTextGlyphs(e);let n=o.tokenizer.tokens,a=[],s=0,l=r.length===n.length;for(let c=0;c<r.length;c++){let u=r[c].index,d=String.fromCharCode(r[c].unicode),p=n[s];if(FN(u,p)||l)a.push({char:d,index:u,replacements:[p.state.glyphIndex],replacementChars:[p.char]}),s++;else{let f=p.char,h="",m=[p.state.glyphIndex],y=[],x=!1;for(;!x;)s++,h=e.charAt(s),f+=h,m.push(t.charToGlyphIndex(h)),y=t.stringToGlyphs(f),y.length===1&&y[0].index===u&&(x=!0),s>e.length&&(x=!0);a.push({char:d,index:u,replacements:m,replacementChars:Array.from(f)}),s++}}return a}generateShapes(t,e,r){if(!this._isLoaded)return;let o=this.font,n=e.fontSize/this.unitsPerEm,a=e.fontSize*e.lineHeight,s=t.map(v=>this.getTextWidth(v,e)),l=typeof e.width=="string"?Number(r.getVariable(e.width)):e.width,c=typeof e.height=="string"?Number(r.getVariable(e.height)):e.height,u=this.getCharWidth(`
|
|
2286
|
+
`,e),d=e.horizontalAlign===1?u:0,p=this.getLineInitialOffsetX(s[0],l,e.horizontalAlign,t[0],u),f=this.getLineInitialOffsetY(a,t.length,c,n,e.verticalAlign),h=[],m=t.map(v=>[]),y=t.map(v=>[]);for(let v=0;v<t.length;v++){let w=t[v],O={features:{liga:!0},letterSpacing:e.letterSpacing},S=[];try{S=o.stringToGlyphs(w,O)}catch(E){console.warn(E)}p=this.getLineInitialOffsetX(s[v],l,e.horizontalAlign,w,u);let T=[];try{T=this.reverseLigaturesTable(o,w,S)}catch(E){console.warn(E)}let M=this.computeSpaceWidthForLine(t,v,e,r),g=0,D=S[0];D&&e.horizontalAlign===2&&D.leftSideBearing!==void 0&&(p-=D.leftSideBearing*n),this.font?.forEachGlyph(w,p,f,e.fontSize,O,(E,I,N,_,R)=>{let V=E.index===0?`
|
|
2287
2287
|
`:E.unicode?String.fromCharCode(E.unicode):void 0,U=T[g],B=0;if(V===`
|
|
2288
|
-
`)B=
|
|
2289
|
-
`)>=0&&(t-=n),r===3?e*.5-t*.5:r===2?e-t:0}getLineInitialOffsetY(t,e,r,o,n){let a=e*t,s=Math.abs(this.ascender-this.descender)*o,l=t-s,c=-this.ascender*o-l/2;return n===3?-(r-a-c):n===2?-(r*.5-a*.5-c):c}createPath(t,e,r,o,n){let a=t.getPath(r,-o,n.fontSize,{kerning:!1,letterSpacing:n.letterSpacing});if(!a){console.error('THREE.Font: character "'+t+'" does not exists in font family '+this.familyName+".");return}let s=new $u,l=(t.advanceWidth??1)*e;if(t)for(let c of a.commands){let u=s.currentPath?.currentPoint;if(!(u&&c.type!=="Z"&&u.x===c.x&&-u.y===c.y))switch(c.type){case"M":s.moveTo(c.x,-c.y);break;case"L":s.lineTo(c.x,-c.y);break;case"Q":s.quadraticCurveTo(c.x1,-c.y1,c.x,-c.y);break;case"C":s.bezierCurveTo(c.x1,-c.y1,c.x2,-c.y2,c.x,-c.y);break}}return s.subPaths.forEach(c=>{let u=FN(c.curves);u!==void 0&&c.currentPoint.distanceTo(u)>0&&c.lineTo(u.x,u.y)}),{offsetX:l,path:s}}getCharWidth(t,e){return this.font?.getAdvanceWidth(t,e.fontSize,{kerning:!0,letterSpacing:e.letterSpacing})??0}getTextWidth(t,e){return this.font?.getAdvanceWidth(t,e.fontSize,{kerning:!0,letterSpacing:e.letterSpacing})??0}computeSpaceWidthForLine(t,e,r,o){let n=this.getCharWidth(" ",r),a=t[e];if(a){let s=this.countSpaces(a.trimEnd());if(r.horizontalAlign===4&&e<t.length-1&&s){let l=typeof r.width=="string"?Number(o.getVariable(r.width)):r.width,c=this.getTextWidth(a,r);return(l-(c-s*n))/s}}return n}countSpaces(t){return(t.match(/ /g)||[]).length}};function FN(i){if(i.length){let t=i[0];if(t instanceof VN)return t.v1;if(t instanceof BN||t instanceof zN)return t.v0}}var uh=class{constructor(){this.objects=new Map;this.unreachable=new Set}getCached(t){return this.objects.get(t)}get size(){return this.objects.size}get(t,e,r){let o=this.objects.get(t);return o===void 0?(o=this.createObject(t,e,r),this.objects.set(t,o)):o.isShared=!0,o}forceDelete(t){let e=this.objects.get(t);e&&(this.disposeObject(e),this.objects.delete(t))}mutateIfUnique(t,e){let r=this.objects.get(t);if(r&&r.isShared!==!0)return this.objects.delete(t),this.objects.set(e,r),r}startGc(){this.unreachable=new Set(this.objects.keys())}markAsReachable(t,e){let r=this.objects.get(t);e===r?this.unreachable.delete(t):!1&&console.warn("Reachable but deleted",t)}endGc(){this.unreachable.forEach(t=>{this.disposeObject(this.objects.get(t)),this.objects.delete(t)}),this.unreachable.clear()}dispose(){this.objects.forEach(t=>{this.disposeObject(t)}),this.objects.clear()}},vl=class extends uh{constructor(e){super();this.flatShading=e}disposeObject(e){e.dispose()}createObject(e,r,o){let n=uo(e,r,this.flatShading,o);return n.computeBoundingSphere(),n}};var mv={markNeedsUpdateRendererDirty:()=>{}};import{MathUtils as vv}from"three";var Ku=1e3,yv=512*Ku;function jN(i,t){let e=typeof i;return!!((t==="string"||t==="number")&&e===t||t==="boolean"&&(i==="true"||i==="false"||i===!0||i===!1)||t==="image"&&e==="string"&&i.startsWith("http"))}var gv="https://hooks.spline.design",UN=`${gv}/events?hashFile=`,Fre=`${gv}/`,Qu=class{constructor(t,e){this.id=t;this.userWebhook=e;this.result=void 0;this._connected=!1;this.emitter=jo();this.reconnectWaitFor=Ku;this._onError=t=>{this.eventSource?.removeEventListener("message",this._onMessage),this.eventSource?.removeEventListener("error",this._onError),this.eventSource?.removeEventListener("open",this._onConnected),this._scheduleReconnect()};this._onConnected=t=>{clearTimeout(this.scheduledReconnectHandle),this.reconnectWaitFor=Ku,this._connected=!0};this._onDisconnected=()=>{clearTimeout(this.scheduledReconnectHandle),this.reconnectWaitFor=Ku,this._connected=!1};this._onMessage=t=>{let e=t.data,r;try{r=JSON.parse(e)}catch(o){console.error("Error parsing webhook message",o)}if(r){let o=!1;this.userWebhook.parametersSchemas.forEach(({data:n})=>{r[n.name]!==void 0&&jN(r[n.name],n.type)&&(this.result===void 0&&(this.result={}),this.result[n.name]=r[n.name],o=!0)}),o&&this.emitter.emit("message",{userWebhookId:this.id})}}}connect(){clearTimeout(this.scheduledReconnectHandle),this.userWebhook.url&&(this.eventSource=new EventSource(UN+this.userWebhook.url),this.eventSource.addEventListener("message",this._onMessage),this.eventSource.addEventListener("error",this._onError),this.eventSource.addEventListener("open",this._onConnected))}disconnect(){this.eventSource?.removeEventListener("message",this._onMessage),this.eventSource?.removeEventListener("error",this._onError),this.eventSource?.removeEventListener("open",this._onConnected),this.eventSource?.close(),this._onDisconnected(),clearTimeout(this.scheduledReconnectHandle)}_scheduleReconnect(){this.reconnectWaitFor*=2,this.reconnectWaitFor>yv&&(this.reconnectWaitFor=yv),clearTimeout(this.scheduledReconnectHandle),this.scheduledReconnectHandle=setTimeout(()=>{this.scheduledReconnectHandle=void 0,this.connect()},this.reconnectWaitFor)}update(t){this.userWebhook=t}dispose(){this._connected&&this.disconnect()}get connected(){return this._connected}on(t,e){this.emitter.on(t,e)}off(t,e){this.emitter.off(t,e)}getParametersKeys(){return this.userWebhook.parametersSchemas.map(t=>t.data.name)}getParameterValue(t){if(this.getParametersKeys().includes(t)){if(this.result)return this.result?.[t];for(let r of this.userWebhook.parametersSchemas)if(r.data.name===t)return Qc.defaultParameterValueByType(r.data.type)}}};var xv=[4186.01,4434.92,4698.63,4978.03,5274.04,5587.65,5919.91,6271.93,6644.88,7040,7458.62,7902.13],kN=["C","C#","D","D#","E","F","F#","G","G#","A","A#","B"],qo=[],Ju=[];for(let i=1;i<=8;i++)for(let t=0;t<xv.length;t++){let e=xv[t];qo.push(e/Math.pow(2,8-i)),Ju.push(kN[t]+i)}var Zu=[32,2e3],dh=qo.filter((i,t)=>qo[t]>Zu[0]&&qo[t]<Zu[1]),bv=Ju.filter((i,t)=>qo[t]>Zu[0]&&qo[t]<Zu[1]);var ed=class{static getFrequencies(t,e,r,o="frequency",n=-100,a=-30){r||(r=new Float32Array(t.frequencyBinCount),t.getFloatFrequencyData(r));let s=e/2,l=1/r.length*s,c,u,p;if(o==="music"||o==="voice"){let h=o==="voice"?dh:qo,m=Array(h.length).fill(n);for(let y=0;y<r.length;y++){let b=y*l,v=r[y];for(let w=h.length-1;w>=0;w--)if(b>h[w]){m[w]=Math.max(m[w],v);break}}c=m,u=o==="voice"?dh:qo,p=o==="voice"?bv:Ju}else c=Array.from(r),u=c.map((h,m)=>l*m),p=u.map(h=>`${h.toFixed(2)} Hz`);let d=c.map(h=>Math.max(0,Math.min((h-n)/(a-n),1)));return{values:new Float32Array(d),frequencies:u,labels:p}}};var HN="gpt-4o-realtime-preview-2024-12-17",WN=()=>!1&&window.location.search.includes("api-dev")?"https://relayserver-dev.spline.design/":"https://relayserver.spline.design/";async function qN(i){try{return(await(await fetch(WN()+"session?uuidfile="+i)).json()).token}catch(t){console.error("Token generation error:",t)}}var ph=class{constructor(t){this.value=0;this.frequencies=new Float32Array(0);let e=new AudioContext;this.source=e.createMediaStreamSource(t),this.analyser=e.createAnalyser(),this.source.connect(this.analyser),this.analyser.fftSize=8192,this.analyser.smoothingTimeConstant=.1}getFrequencies(t=-100,e=-30){if(!this.analyser)throw new Error("Not connected, please call .connect() first");return ed.getFrequencies(this.analyser,44100,void 0,"voice",t,e)}update(){let t=this.getFrequencies(),e=t.values.reduce((r,o)=>r+o,0)/t.values.length;this.value=e,this.frequencies=t.values}disconnect(){this.source.disconnect(),this.analyser.disconnect()}},Sl=class{constructor(t,e,r){this.data=t;this.id=e;this.shared=r;this.emitter=jo();this.rafId=0;this.voice=0;this.frequencies=new Float32Array([0]);this.events=[];this.isConnected=!1;this.isToolsAdded=!1;this.tools=[];this.onMessage=t=>{let e=JSON.parse(t.data);if(this.appendEvent(e),e.type==="session.created"&&this.onSessionCreated(),e.type==="response.done"&&e.response?.output){for(let r of e.response.output)if(r.type==="function_call")for(let[o,n]of this.tools)r.name===o.name&&(n(JSON.parse(r.arguments)),setTimeout(()=>{this.sendClientEvent({type:"response.create",response:{instructions:"notice the user about what you just did"}})}))}};this.onSessionCreated=()=>{this.isToolsAdded||this.registerTools()};this.onOpen=()=>{this.events=[],this.isConnected=!0,this.sendClientEvent({type:"response.create",response:{instructions:"Say hi"}})};this.animate=()=>{if(this.rafId=requestAnimationFrame(this.animate),this.isConnected&&this.analyser){this.analyser.update();let t=this.analyser.value,e=this.analyser.frequencies;this.voice=t,this.frequencies=e,this.emitter.emit("voice",{value:t,frequencies:e})}}}update(t){this.data=t}setColorByName(t,e){let r=this.shared.getColorByName(t);if(r){let{id:o}=r,{r:n,g:a,b:s}=xb.hexStringToRgb(e)??{r:0,g:0,b:0};this.shared.updateColor(o,{r:n/255,g:a/255,b:s/255})}}async connect(){if(this.isConnected)return;let t=await qN(this.data.integration.hash);this.pc=new RTCPeerConnection,this.audioElement=document.createElement("audio"),this.audioElement.autoplay=!0,this.pc.ontrack=l=>{let c=l.streams[0];this.audioElement.srcObject=c,this.analyser=new ph(c)};let e=await navigator.mediaDevices.getUserMedia({audio:!0});this.pc.addTrack(e.getTracks()[0]),this.dc=this.pc.createDataChannel("oai-events"),this.dc.addEventListener("message",this.onMessage),this.dc.addEventListener("open",this.onOpen);let r=await this.pc.createOffer();await this.pc.setLocalDescription(r);let s={type:"answer",sdp:await(await fetch(`https://api.openai.com/v1/realtime?model=${HN}`,{method:"POST",body:r.sdp,headers:{Authorization:`Bearer ${t}`,"Content-Type":"application/sdp"}})).text()};await this.pc.setRemoteDescription(s),this.animate()}appendEvent(t){this.events=[t,...this.events]}sendClientEvent(t){this.dc?(t.event_id=t.event_id||crypto.randomUUID(),this.dc.send(JSON.stringify(t)),this.appendEvent(t)):console.error("Failed to send message - no data channel available",t)}registerTools(){this.isToolsAdded=!0,this.registerTool({type:"function",name:"set_personality_color",description:"returns a color based on the voice personality of the ai assistant. This should be called by the voice assistant each time it is asks to speak differently. If a color cannot be associated to the personality, the color should be a neutral color.",parameters:{type:"object",properties:{color:{type:"string",description:"css hex color string, reflecting the personality"},personality:{type:"string",description:"the personality of the voice assistant"}},required:["color","personality"]}},({color:n})=>{this.setColorByName("Voice Assistant Color",n)});let t=this.shared.getVariablesNames().join(", ");this.registerTool({type:"function",name:"set_variable",description:"Sets a Spline variable value when asked by the user.",parameters:{type:"object",properties:{name:{type:"string",description:`The name of the variable that needs to be set. Here's a list of available variables: ${t}. It the variable does not exist, don't call the function and warn the user about it.`},value:{type:"string",description:"The new value for this variable, should always be a string even for number and boolean variables, assume that the value will be cast to the proper type afterwards."}},required:["name","value","type"]}},({name:n,value:a})=>{let s=this.shared.getVariableByName(n);if(s){let l=this.shared.getVariable(s.id),c;typeof l=="number"?c=parseFloat(a):typeof l=="boolean"?c=a.toLowerCase()==="true":c={textValue:a},this.shared.updateVariable(s.id,c)}});let e=this.shared.getColorNames().join(", ");this.registerTool({type:"function",name:"set_color",description:"Sets a Spline color asset value when asked by the user.",parameters:{type:"object",properties:{name:{type:"string",description:`The name of the color asset that needs to be set. Here's a list of available color assets: ${e}. It the color asset does not exist, don't call the function and warn the user about it.`},value:{type:"string",description:"css hex color string"}},required:["name","value"]}},({name:n,value:a})=>{this.setColorByName(n,a)});let r=this.shared.scene,o=[];r.traverseEntity(n=>{n.data.events.forEach(a=>{if(a.data.type==="AIAssistantTrigger"){let{description:s}=a.data;o.push(s)}})}),this.registerTool({type:"function",name:"trigger_event",description:"Trigger an event by name, here are the available events, please match what the user is asking for to one of these if it applies, otherwise don't call the function and warn the user.",parameters:{type:"object",properties:{description:{type:"string",description:`The name of the event that needs to be triggered. Here's a list of available events: ${JSON.stringify(o)}.`},direction:{type:"string",description:"default is forward, but can be forward or backward. Always set to forward unless the user ask to reverse or cancel the event, then set to backward."}},required:["description","direction"]}},({description:n,direction:a})=>{this.emitter.emit("trigger_event",{description:n,direction:a})}),this.sendClientEvent({type:"session.update",session:{tools:this.tools.map(([n])=>n)}})}registerTool(t,e){this.tools.push([t,e])}disconnect(){cancelAnimationFrame(this.rafId),this.analyser?.disconnect(),this.voice=0,this.isConnected=!1,this.isToolsAdded=!1,this.dc?.removeEventListener("message",this.onMessage),this.dc?.removeEventListener("open",this.onOpen),this.dc?.close(),this.pc?.getSenders().forEach(t=>{t.track&&t.track.stop()}),this.pc?.close(),this.pc=void 0}computeAnalysisForListenerEvent(t){if(t.analysis==="range"){let e=this.frequencies.slice(...t.analysisRange);return e.reduce((r,o)=>r+o,0)/e.length}return t.analysis==="single"?this.frequencies[t.analysisSingle]:this.voice}on(t,e){this.emitter.on(t,e)}off(t,e){this.emitter.off(t,e)}};function Sv(i){return"variable_"+i}var fh=class extends ku{constructor(e){super();this.shared=e}create(e){return new is(e,this.shared)}},yn=class{constructor(t,e={},r=!0,o=!1){this.data=t;this.needsJitter=r;this.enableLocalStorageForPersistentVariables=o;this.geometryCache=new vl(!0);this.geometryCache2=new vl(!1);this.imageHolderCache=new fh(this);this.thisContext={scene:mv,shared:this};this.deletedMaterial=new fn(Tt.defaultTwoLayerData("phong"),this.thisContext,"");this.deletedImage=new pr(ru.emptyImage,this);this.deletedVideo=new pr(aa.defaultVideo,this);this.materials={};this.images={};this.uiBuffers={};this.videos={};this.colors={};this.audios={};this.particles={};this.fonts={};this.timelineAnimations={};this.variables={};this.userAPIs={};this.userWebhooks={};this.mouseProperty=null;this.raycastProperty=null;this.requestRender=()=>{this._requestRender&&this._requestRender()};if(e.images)for(let[n,a]of Object.entries(e.images))this.addImage(n,a);if(e.videos)for(let[n,a]of Object.entries(e.videos))this.addVideo(n,a);if(e.audios)for(let[n,a]of Object.entries(e.audios))this.addAudio(n,a);if(e.particles)for(let[n,a]of Object.entries(e.particles))this.addParticle(n,a);this.reset(t)}setRequestRender(t){this._requestRender=t}getImageLoadPromises(){return Object.values(this.images).map(t=>t.loadPromise)}setEntityOpContext(t){this.entityOpContext=t}reset(t,e=!1,r=!1){this.data=t,this.resetLib(t.lib);for(let{id:o,data:n}of t.variables)this.addVariableHolder(o,n),e&&this.updateVariableHolder(o,n);for(let[o,n]of Object.entries(t.userAPIs))this.addUserAPI(o,n);for(let[o,n]of Object.entries(t.userWebhooks))this.addUserWebhook(o,n);if(!r){for(let[o,n]of Object.entries(t.images))this.addImage(o,n);for(let[o,n]of Object.entries(t.videos))this.addVideo(o,n)}for(let[o,n]of Object.entries(t.colors))this.addColor(o,n);for(let[o,n]of Object.entries(t.materials))this.addMaterial(o,n);for(let[o,n]of Object.entries(t.audios))this.addAudio(o,n);for(let[o,n]of Object.entries(t.particles))this.addParticle(o,n);for(let[o,n]of Object.entries(t.fonts))this.addFont(o,n);for(let[o,n]of Object.entries(t.timelineAnimations??{}))this.addAnimation(o,n)}addMaterial(t,e){if(this.materials[t]){let r=this.materials[t];r.reset(e,this.thisContext),r.dispose()}else{let r=new fn(e,this.thisContext,t);this.materials[t]=r}}deleteMaterial(t){this.materials[t]&&(this.materials[t].nodeMaterialDispose(),delete this.materials[t])}getMaterial(t){let e=this.materials[t];return e}getMaterialOrDeletedPlaceholder(t){return this.materials[t]??this.deletedMaterial}material(t){return typeof t=="string"?this.getMaterialOrDeletedPlaceholder(t):t==null?(console.error("material is undefined or null"),this.deletedMaterial):new pn(t,this.thisContext)}getMaterials(){return this.materials}addImage(t,e){return this.images[t]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),this.images[t].updateSrc(e.data),!0):(this.images[t]=new pr(e,this),!1)}deleteImage(t){let e=this.images[t];e&&(e.dispose(),delete this.images[t])}getDefaultImage(){return this.images.image_0}getImage(t){return this.images[t]??this.deletedImage}image(t){return typeof t=="string"?this.getImage(t):this.imageHolderCache.load(t)}addUIBuffer(t,e){return this.uiBuffers[t]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),this.uiBuffers[t].updateSrc(e),!0):(this.uiBuffers[t]=new pr(e,this),!1)}uiBuffer(t){return this.uiBuffers[t]}addVideo(t,e){return this.videos[t]?(this.videos[t].updateSrc(e.data),!0):(this.videos[t]=new pr(e,this),!1)}deleteVideo(t){let e=this.videos[t];e&&(e.dispose(),delete this.videos[t])}getVideo(t){return this.videos[t]??this.deletedVideo}video(t){return typeof t=="string"?this.getVideo(t):this.imageHolderCache.load(t)}addColor(t,e){return this.colors[t]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),"a"in e?this.colors[t].setRGBA(e.r,e.g,e.b,e.a):this.colors[t].setRGBA(e.r,e.g,e.b,1),!0):("a"in e?this.colors[t]=new Oi(e.r,e.g,e.b,e.a):this.colors[t]=new Oi(e.r,e.g,e.b,1),!1)}updateColor(t,e){if(this.colors[t]){this.onColorOrImageUpdate&&this.onColorOrImageUpdate();let r=this.colors[t];return this.colors[t].r=e.r??r.r,this.colors[t].g=e.g??r.g,this.colors[t].b=e.b??r.b,this.colors[t].a=e.a??r.a,!0}return!1}deleteColor(t){this.colors[t]&&delete this.colors[t]}getColor(t){return this.colors[t]}getColorNames(){return Object.values(this.data.colors).map(t=>t.name)}getColorByName(t){for(let e in this.data.colors)if(this.data.colors[e].name===t)return{color:this.colors[e],id:e}}color(t){let e;if(typeof t=="string"){let r=this.getColor(t);r?e=r:(console.warn("Tried to create color layer params with a color key that does not exist in the assets manager"),e=new Ct(0,0,0,0))}else return"a"in t?new Ct(t.r,t.g,t.b,t.a):new Ct(t.r,t.g,t.b,1);return e}addAudio(t,e){this.audios[t]=e}getAudio(t){let e=this.audios[t];if(e instanceof hn)return e;{let r=new hn({src:e.data});return this.audios[t]=r,r}}addParticle(t,e){this.particles[t]=e}getParticle(t){return this.particles[t]}deleteParticle(t){this.particles[t]&&delete this.particles[t]}deleteAudio(t){let e=this.audios[t];e&&(e instanceof hn&&e.dispose(),delete this.audios[t])}addFont(t,e){this.fonts[t]=new Yu(e),this.fonts[t].loadingPromise.then(()=>this.requestRender())}getFont(t){return this.fonts[t]}deleteFont(t){this.fonts[t]&&delete this.fonts[t]}addAnimation(t,e){this.timelineAnimations[t]=e}getAnimation(t){return this.timelineAnimations[t]}deleteAniamtion(t){this.timelineAnimations[t]&&delete this.timelineAnimations[t]}dispose(){Object.keys(this.materials).forEach(e=>this.deleteMaterial(e)),this._requestRender=void 0,Object.values(this.audios).forEach(e=>{e instanceof hn&&e.dispose()}),this.audios={},this.particles={},this.geometryCache.dispose(),this.geometryCache2.dispose()}addVariableHolder(t,e){if(this.variables[t]===void 0){let r=e.value;if(this.enableLocalStorageForPersistentVariables&&e.persistent){let o=localStorage.getItem(Sv(t));r=o!==null?JSON.parse(o):e.value}return this.variables[t]={value:r,locations:[],persistent:e.persistent},"dynamicVariableType"in e&&(this.variables[t].dynamicVariablePlayState="Playing",this.variables[t].dynamicVariableToggleIsForward=void 0),!0}return this.variables[t].value=e.value,!1}resetDynamicVariablePlayState(){for(let t in this.variables)this.variables[t].dynamicVariablePlayState!==void 0&&(this.variables[t].dynamicVariablePlayState="Playing",this.variables[t].dynamicVariableToggleIsForward=void 0)}updateVariableHolder(t,e){this.updateVariable(t,e.value)}updateVariable(t,e){if(this.variables[t]===void 0)return!1;this.variables[t].value=e,this.enableLocalStorageForPersistentVariables&&this.variables[t].persistent&&localStorage.setItem(Sv(t),JSON.stringify(e));let r=e;for(;typeof r=="string";)r=this.variables[r].value;let o=this.entityOpContext.scene;for(let n=this.variables[t].locations.length-1;n>=0;n--){let a=this.variables[t].locations[n];if(a[0]==="material"){let s=a[1],l=r,c={scene:o,shared:this},u=a.slice(2);o.traverseMaterial(d=>{let f=d.root??d;f.uuid===s&&f.onVariableUpdate(u,l,c)});let p=this.materials[s];p&&p.onVariableUpdate(u,l,c)}else{let s=o.find(a[0]);if(s===void 0){this.variables[t].locations.splice(n,1);continue}if(a[1]!=="geometry"&&a[1]!=="particles"){for(let l=1;l<a.length-1;l++)s=s[a[l]];a[1]==="rotation"?s[a[a.length-1]]=r*vv.DEG2RAD:s[a[a.length-1]]=r}if(s=o.find(a[0]),s.type==="ParticleEmitter"&&s.updateVariableState(r,a),De.is(s))if(a[1]==="position"||a[1]==="rotation"||a[1]==="scale")s.onVariableUpdate();else if(a[1]==="geometry"){let l=s;s.component&&(l=s.component);let c=l.dataPatched;l.chooseGeoemtryCache(this).forceDelete(c.geometry),l.createGeometryDelayed(this.entityOpContext),l.onVariableUpdate(!0),l.invalidateDownstreamBooleanData(),l.instances.forEach(u=>{let p=u.dataPatched;u.chooseGeoemtryCache(this).forceDelete(p.geometry),u.createGeometryDelayed(this.entityOpContext),u.onVariableUpdate(!0),u.invalidateDownstreamBooleanData()})}else a[1]==="morphTargetInfluences"&&s.updateMorphInfluences(a[2],r)}}return this.requestRender(),!0}deleteVariable(t){this.variables[t]&&delete this.variables[t]}getVariable(t,e){if(Array.isArray(t)){if(t[0]==="mouse")return this.mouseProperty?.[t[1]]??0;if(t[0]==="raycast")return this.raycastProperty?.[t[1]]??0;let r=this.entityOpContext.scene.find(t[0]);if(t[1]==="width"||t[1]==="height"||t[1]==="depth")return r.geometry.userData.parameters[t[1]];for(let o=1;o<t.length;o++)r=r[t[o]];return t[1]==="rotation"&&(r*=vv.RAD2DEG),r}for(let r in this.variables){if(e===void 0)break;let o=this.variables[r],n=o.locations?.findIndex(a=>Ze.equal(a,e));n!==void 0&&n!==-1&&o.locations.splice(n,1)}if(typeof t=="string"){let r=t,o=t;do{if(o=r,this.variables[r]===void 0)break;let n=this.variables[r].value;e&&this.variables[o]!==void 0&&this.variables[o].locations.push(e),r=n}while(typeof r=="string");return r}else return t}getVariables(){return this.variables}getVariablesNames(){return this.data.variables.map(t=>t.data.name)}getVariableByName(t){for(let e of this.data.variables)if(e.data.name===t)return{variable:e.data,id:e.id}}getDynamicVariablePlayState(t){return this.variables[t]?.dynamicVariablePlayState}setDynamicVariablePlayState(t,e){this.variables[t]!==void 0&&(this.variables[t].dynamicVariablePlayState=e)}getDynamicVariableToggleIsForward(t){return this.variables[t]?.dynamicVariableToggleIsForward}setDynamicVariableToggleIsForward(t,e){this.variables[t]!==void 0&&(this.variables[t].dynamicVariableToggleIsForward=e)}resetLib(t){for(let[e,r]of Object.entries(t.images))this.addImage(e,r.asset);for(let[e,r]of Object.entries(t.audios))this.addAudio(e,r.asset);for(let[e,r]of Object.entries(t.particles))this.addParticle(e,r.asset);for(let[e,r]of Object.entries(t.colors))this.addColor(e,r.asset);for(let[e,r]of Object.entries(t.fonts))this.addFont(e,r.asset);for(let[e,r]of Object.entries(t.materials))this.addMaterial(e,r.asset);for(let[e,r]of Object.entries(t.videos))this.addVideo(e,r.asset);for(let[e,r]of Object.entries(t.variables))this.addVariableHolder(e,r.asset)}updateLibByOp(t,e){t.path[0]==="images"?t.path.length===1&&t.type===1?this.addImage(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteImage(t.id):t.path[0]==="videos"?t.path.length===1&&t.type===1?this.addVideo(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteVideo(t.id):t.path[0]==="audios"?t.path.length===1&&t.type===1?this.addAudio(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteAudio(t.id):t.path[0]==="particles"?t.path.length===1&&t.type===1?this.addParticle(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteParticle(t.id):t.path[0]==="colors"?t.path.length===1&&t.type===1?this.addColor(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteColor(t.id):t.path[0]==="materials"?t.path.length===1&&t.type===1?this.addMaterial(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteMaterial(t.id):t.path[0]==="fonts"?t.path.length===1&&t.type===1?this.addFont(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteFont(t.id):t.path[0]==="variables"?t.path.length===1&&t.type===1?this.addVariableHolder(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteVariable(t.id):t.path[0]==="components"&&e.updateByLibOp(t,this)}updateByOp(t,e,r){if(this.data=e,t.path[0]==="images")t.path.length===2&&t.type===0?t.props.data&&this.getImage(t.path[1]).updateSrc(t.props.data):t.path.length===1&&t.type===1?this.addImage(t.id,t.data):t.path.length===1&&t.type===2&&this.deleteImage(t.id);else if(t.path[0]==="videos")t.path.length===2&&t.type===0?t.props.data&&this.getVideo(t.path[1]).updateSrc(t.props.data):t.path.length===1&&t.type===1?this.addVideo(t.id,t.data):t.path.length===1&&t.type===2&&this.deleteVideo(t.id);else if(t.path[0]==="audios")t.path.length===2&&t.type===0?t.props.data&&this.addAudio(t.path[1],e.audios[t.path[1]]):t.path.length===1&&t.type===1?this.addAudio(t.id,t.data):t.path.length===1&&t.type===2&&this.deleteAudio(t.id);else if(t.path[0]==="particles")t.path.length===2&&t.type===0?t.props.data&&this.addParticle(t.path[1],e.particles[t.path[1]]):t.path.length===1&&t.type===1?this.addParticle(t.id,t.data):t.path.length===1&&t.type===2&&this.deleteParticle(t.id);else if(t.path[0]==="colors")t.path.length===2&&t.type===0?this.updateColor(t.path[1],t.props):t.path.length===1&&t.type===1?this.addColor(t.id,t.data):t.path.length===1&&t.type===2&&this.deleteColor(t.id);else if(t.path[0]==="materials")t.path.length===1&&t.type===1?this.addMaterial(t.id,t.data):t.path.length===1&&t.type===2?this.deleteMaterial(t.id):t.path.length>1&&this.getMaterial(t.path[1]).updateByOp(nt.drop(t,2),e.materials[t.path[1]],{shared:this,scene:r});else if(t.path[0]==="fonts")t.path.length===2&&t.type===0?this.updateFont(t.path[1],t,r):t.path.length===1&&t.type===1?this.addFont(t.id,t.data):t.path.length===1&&t.type===2&&this.deleteFont(t.id);else if(t.path[0]==="variables")t.path.length===2&&t.type===0?"value"in t.props?this.updateVariable(t.path[1],t.props.value):"persistent"in t.props&&(this.variables[t.path[1]].persistent=t.props.persistent):t.path.length===1&&t.type===4?this.addVariableHolder(t.id,t.data):t.path.length===1&&t.type===5&&this.deleteVariable(t.id);else if(t.path[0]==="userAPIs"){if(t.path.length===1&&t.type===1)this.addUserAPI(t.id,t.data);else if(t.path.length===1&&t.type===2)this.deleteUserAPI(t.id);else if(typeof t.path[1]=="string"){let o=e.userAPIs[t.path[1]];if(o){let n=t.type===0&&t.props.debounce===void 0,a=this.getUserAPI(t.path[1]);a instanceof Sl?a.update(o):a?.update(o,this,n)}}}else if(t.path[0]==="userWebhooks"){if(t.path.length===1&&t.type===1)this.addUserWebhook(t.id,t.data);else if(t.path.length===1&&t.type===2)this.deleteUserWebhook(t.id);else if(typeof t.path[1]=="string"){let o=e.userWebhooks[t.path[1]];o&&this.getUserWebhook(t.path[1])?.update(o)}}else t.path[0]==="lib"&&this.updateLibByOp(nt.drop(t,1),r)}updateFont(t,e,r){if(e.props.url){let o=this.getFont(t),n={...this.data.fonts[t],url:e.props.url};o.update(n),o.loadingPromise.then(()=>this.requestRender()),r.updateFont(t,this)}}addUserAPI(t,e){return this.userAPIs[t]?(this.userAPIs[t].update(e,this),!0):this.openAIRealtime?.id===t?(this.openAIRealtime.update(e),!0):e.integration?.type==="VoiceAssistant"?(this.openAIRealtime=new Sl(e,t,this),!1):(this.userAPIs[t]=new Eu(t,e,this),!1)}getUserAPI(t){return this.openAIRealtime?.id===t?this.openAIRealtime:this.userAPIs[t]}getUserAPIs(){return this.userAPIs}deleteUserAPI(t){let e=this.userAPIs[t];e&&(e.dispose(),delete this.userAPIs[t])}addUserWebhook(t,e){return this.userWebhooks[t]?(this.userWebhooks[t].update(e),!0):(this.userWebhooks[t]=new Qu(t,e),!1)}getUserWebhook(t){return this.userWebhooks[t]}getUserWebhooks(){return this.userWebhooks}deleteUserWebhook(t){let e=this.userWebhooks[t];e&&(e.dispose(),delete this.userWebhooks[t])}get scene(){return this.entityOpContext.scene}},wv=new yn(vr.emptyData());var ir=class extends Mt{updateByPatchedOp(e,r,o){if(super.updateByPatchedOp(e,r,o),Qg(e.path,["materials"])!==null&&e.type===0&&Array.isArray(this.material))for(let[n,a]of Object.entries(e.props)){let s=o.shared.material(a);this.material[Number(n)]=s}else if(Le(e.path,["material"])&&this.material instanceof or)"material"in r&&typeof r.material!="string"&&this.material.updateByOp(nt.drop(e,1),r.material,o);else if(Le(e.path,["materials","*"])&&Array.isArray(this.material)){let n=e.path[1];if("materials"in r&&n<this.material.length){let a=r.materials[n];typeof a!="string"&&this.material[n].updateByOp(nt.drop(e,2),a,o)}}}get needsAO(){return this.material!==void 0?(Array.isArray(this.material)?this.material[0]:this.material).hasAO:!1}updateState(e,r){super.updateState(e,r),e.castShadow!==void 0&&(this.castShadow=e.castShadow),e.receiveShadow!==void 0&&(this.receiveShadow=e.receiveShadow);let o=this.dataPatched;this.dataPatched.type==="Mesh"&&!!this.dataPatched.geometry.shapeBlendNode&&this.layers.set(9);let a;this.dataPatched.type==="Mesh"&&this.dataPatched.geometry.type==="ShapeBlendGeometry"&&(a={resolutionLevel:this.dataPatched.geometry.resolutionLevel,useChildrenColors:this.dataPatched.geometry.useChildrenColors}),e.geometry?.type!=="NonParametricGeometry"&&"material"in e&&e.material!==void 0&&(this.disposeMaterial(),this.material=r.shared.material(e.material).getFlavor(o.flatShading,o.side,o.wireframe,a),r.scene.markNeedsUpdateRendererDirty()),(e.geometry?.type==="NonParametricGeometry"||"materials"in e)&&("materials"in e&&e.materials!==void 0?(this.disposeMaterial(),this.material=e.materials.map(l=>r.shared.material(l).getFlavor(o.flatShading,o.side,o.wireframe)),r.scene.markNeedsUpdateRendererDirty()):"material"in e&&e.material!==void 0&&(this.disposeMaterial(),this.material=[r.shared.material(e.material).getFlavor(o.flatShading,o.side,o.wireframe)],r.scene.markNeedsUpdateRendererDirty()));let s=this.data;if(s.geometry?.type!=="NonParametricGeometry"&&"materials"in s&&s.materials!==void 0&&(this.disposeMaterial(),this.material=r.shared.material(s.materials[0]).getFlavor(o.flatShading,o.side,o.wireframe)),e.flatShading!==void 0||e.wireframe!==void 0||e.side!==void 0)if(Array.isArray(this.material))for(let l=0;l<this.material.length;l++)this.material[l]=this.material[l].getFlavor(o.flatShading,o.side,o.wireframe);else this.material=this.material.getFlavor(o.flatShading,o.side,o.wireframe,a)}disposeMaterial(){this.material&&Wl(this.material).forEach(e=>{e instanceof or&&(e instanceof fn||e.nodeMaterialDispose())})}dispose(){this.disposeMaterial(),super.dispose()}};import{BufferGeometry as XN,Matrix4 as mh,Vector3 as Av,Vector4 as yh}from"three";var Pv=new Av,Ov=new yh,Tv=new yh,YN=new Av,Cv=new mh,et=class extends ir{constructor(e,r,o){super(e,r);this.data=r;this.isSkinnedMesh=!1;this.localGeometry=void 0,r.bindMode&&r.bindMatrix&&(this.bindMode=r.bindMode,this.bindMatrix=new mh().fromArray(r.bindMatrix),this.bindMatrixInverse=new mh)}chooseGeoemtryCache(e){return e.geometryCache}markGeometryAsReachable(e){this.geometryCreateDeleyed instanceof XN&&this.chooseGeoemtryCache(e).markAsReachable(this.dataPatched.geometry,this.geometryCreateDeleyed)}get geometry(){if(this.localGeometry!==void 0)return this.localGeometry;if(this.geometryCreateDeleyed instanceof yn){let e=this.geometryCreateDeleyed,r=this.chooseGeoemtryCache(e);this.geometryCreateDeleyed=r.get(this.dataPatched.geometry,e,this)}return this.geometryCreateDeleyed}set geometry(e){this.localGeometry=e}get is2DAndNoDepth(){let e=this.dataPatched.geometry;return Fs.is2DParametricMesh(e.type)&&e.depth===0}get is2DType(){return Fs.is2DParametricMesh(this.geometry.userData.type)}get isNonParametric(){return this.geometry.userData.type==="NonParametricGeometry"}updateByPatchedOp(e,r,o){super.updateByPatchedOp(e,r,o),Le(e.path,["geometry"])&&this.updateByPatchedOpGeometry(nt.drop(e,1),r.geometry,o)}removeInteractionGeometry(e){this.localGeometry?.dispose(),this.localGeometry=void 0}updateGeometryInteractions(e,r){this.invalidateDownstreamBooleanData();let o=this.data.geometry.type;if(o==="NonParametricGeometry"||o==="SubdivGeometry"){let n=e;if(this.localGeometry===void 0){let u={...this.data.geometry,...n};this.localGeometry=uo(u,r,this.data.flatShading,this)}let a,s,l;n.scaleBaked?[a,s,l]=n.scaleBaked:{width:a,height:s,depth:l}=n;let c=this.localGeometry.userData;c.sxPrev!==void 0&&ll(this.localGeometry.attributes,a/c.sxPrev,s/c.syPrev,l/c.szPrev),c.sxPrev=a,c.syPrev=s,c.szPrev=l}else{let n={...this.data.geometry,...e};this.localGeometry?.dispose(),this.localGeometry=uo(n,r,this.data.flatShading,this)}}refreshAttachedClonersInteractions(){for(let e of this.attachedSurfaceCloners)e.update()}refreshAttachedCloners(e){for(let r of this.attachedSurfaceCloners)e.scene.addPendingUpdateCloner(r.object)}refreshAttachedPaths(e){for(let r of this.attachedPaths)e.scene.addPendingCommand(()=>r.updateShape())}createGeometryDelayed(e){this.geometryCreateDeleyed=e.shared,this.refreshAttachedCloners(e),this.refreshAttachedPaths(e)}updateByPatchedOpGeometry(e,r,o){let n=!1;e.type===0&&e.path.length===0&&Object.keys(e.props).includes("scaleBaked")&&this.geometryCreateDeleyed instanceof xt&&this.chooseGeoemtryCache(o.shared).mutateIfUnique(this.geometryCreateDeleyed.data,r)===this.geometryCreateDeleyed&&(n=!0,this.geometryCreateDeleyed.mutateDirectlyScaleBaked(r,e.props.scaleBaked),this.refreshAttachedCloners(o),this.refreshAttachedPaths(o)),n||(o.scene?.markGeometryCacheDirty(),this.createGeometryDelayed(o)),this.resetBBoxNeedsUpdate(),this.invalidateDownstreamBooleanData()}updateGeometryOnStateUpdate(e,r){this.createGeometryDelayed(r)}updateState(e,r){e.geometry!==void 0&&this.updateGeometryOnStateUpdate(e.geometry,r);let o=e.morphTargetInfluences;if(o){this.updateMorphTargets(),this.geometry.morphTargetsRelative=!0;for(let{data:{name:n,value:a}}of o)this.updateMorphInfluences(n,r.shared.getVariable(a,[this.uuid,"morphTargetInfluences",n]))}super.updateState(e,r)}updateMorphInfluences(e,r){if(this.morphTargetDictionary===void 0)return;let o=this.morphTargetDictionary[e];o!==void 0&&(this.morphTargetInfluences[o]=r)}updateGeometryGroupsIfNeeded(){Array.isArray(this.material)&&this.geometry.groups.length===0&&this.geometry.addGroup(0,Math.max(this.geometry.getIndex()?.count??0,this.geometry.getAttribute("position").count),0)}updateEntityBoxSize(e,r){let o=this.geometry.userData.parameters;this.is2DType?e.set(0,0,o.depth*.5):this.isNonParametric?(e.setScalar(0),this.geometry.boundingSphere&&e.copy(this.geometry.boundingSphere.center),r.set(o.width,o.height,o.depth??0).multiplyScalar(.5)):o.centerOffset?e.fromArray(o.centerOffset):e.setScalar(0),r.set(o.width,o.height,o.depth??0).multiplyScalar(.5)}updateMatrixWorld(e){super.updateMatrixWorld(e),this.bindMode==="attached"?this.bindMatrixInverse.copy(this.matrixWorld).invert():this.bindMode==="detached"&&this.bindMatrixInverse.copy(this.bindMatrix).invert()}bind(e,r){this.skeleton=e,this.isSkinnedMesh=!0,r===void 0&&(this.updateMatrixWorld(!0),this.skeleton.calculateInverses(),r=this.matrixWorld),this.bindMatrix.copy(r),this.bindMatrixInverse.copy(r).invert()}pose(){this.skeleton.pose()}normalizeSkinWeights(e){let r=new yh,o=this.geometry.attributes.skinWeight;for(let n=0,a=o.count;n<a;n++){r.fromBufferAttribute(o,n);let s=1/r.manhattanLength();s!==1/0?r.multiplyScalar(s):r.set(1,0,0,0),o.setXYZW(n,r.x,r.y,r.z,r.w)}}boneTransform(e,r){let o=this.skeleton;if(o===void 0)return;let n=this.geometry;Ov.fromBufferAttribute(n.attributes.skinIndex,e),Tv.fromBufferAttribute(n.attributes.skinWeight,e),Pv.copy(r).applyMatrix4(this.bindMatrix),r.set(0,0,0);for(let a=0;a<4;a++){let s=Tv.getComponent(a);if(s!==0){let l=Ov.getComponent(a);Cv.multiplyMatrices(o.bones[l].matrixWorld,o.boneInverses[l]),r.addScaledVector(YN.copy(Pv).applyMatrix4(Cv),s)}}return r.applyMatrix4(this.bindMatrixInverse)}};function QN(i){if(i.geometry.attributes.extrudeNormal||!i.geometry.attributes.position||!i.geometry.attributes.normal)return;let t=new Map,e=i.geometry.attributes,r=e.position.array,o=e.normal.array,n=new Float32Array(r.length);for(let a=0;a<r.length;a+=3){let s=`${r[a]}_${r[a+1]}_${r[a+2]}`,l=new xh(o[a],o[a+1],o[a+2]);t.has(s)?t.get(s)?.normals.push(l):t.set(s,{normals:[l],result:new xh})}t.forEach((a,s)=>{for(let l of a.normals)a.result.add(l);a.result.divideScalar(a.normals.length)});for(let a=0;a<r.length;a+=3){let s=`${r[a]}_${r[a+1]}_${r[a+2]}`,l=t.get(s)?.result;l&&(n[a]=l.x,n[a+1]=l.y,n[a+2]=l.z)}i.geometry.setAttribute("extrudeNormal",new Mv(n,3))}function ZN(i){if(i.geometry.attributes.extrudeNormals||!i.geometry.attributes.position)return;let e=i.geometry.attributes.position.array,r=new Float32Array(e.length),o=new xh;for(let n=0;n<e.length;n+=3)o.set(e[n],e[n+1],e[n+2]).normalize(),r[n]=o.x,r[n+1]=o.y,r[n+2]=o.z;i.geometry.setAttribute("extrudeNormal",new Mv(r,3))}function as(i){if(Array.isArray(i.material)){for(let t of i.material)if(t.getLayersOfType("outline").length===0)return}else if(!(i.material instanceof or)||i.material.getLayersOfType("outline").length===0)return;i instanceof et&&i.is2DAndNoDepth?ZN(i):QN(i)}function ss(i){if(!i.geometry.attributes.position)return;let e=i.geometry.attributes.position.array,r=new Float32Array(e.length),o=parseInt(i.uuid.replace(/\D/g,"")),n=[gh.seededRandom(o),gh.seededRandom(o+1e4),gh.seededRandom(o+2e4)];for(let a=0;a<e.length;a++)r[a]=n[a%3];i.geometry.setAttribute("randomColor",new KN(r,3))}var go=new JN,wl=new tD;function Ev(i){let t=!1;return i.scene.objects.traverse((e,r)=>{r.type==="Mesh"&&r.geometry.type==="SubdivGeometry"&&(t=!0)}),t}var gn=class extends et{constructor(e,r,o){super(e,r,o);this.data=r;this.hiddenMatrixOld=new eD;this.smoothShading=!0;this.skipReactionUpdate=!1}chooseGeoemtryCache(e){return this.dataPatched.flatShading?e.geometryCache:e.geometryCache2}get subdivPointerNew(){return this.localGeometry!==void 0?this.subdivPointer:this.geometry.ensureSubdivPointer()}get originalGeometryNew(){return this.localGeometry!==void 0?this.originalGeometry:this.geometry.originalGeometry}get phongAngle(){return this.data.geometry.phongAngle??45}updateEntityBoxSize(e,r){let o=this.geometry.userData.parameters;e.copy(this.originalGeometryNew.boundingSphere.center),r.set(o.width,o.height,o.depth??0).multiplyScalar(.5)}createGeometryByControls(e){if(this.skipReactionUpdate===!0)return;let r=this.localGeometry?.uuid,{originalGeometry:o,subdividedGeometry:n,subdivPointer:a}=xt.build(e,this.subdivPointer,this.smoothShading,this.hasNonUniformScale?this.shearScale:void 0);this.subdivPointer=a,o!==void 0&&(this.originalGeometry?.dispose(),this.originalGeometry=o),n!==void 0&&(this.subdividedGeometry?.dispose(),this.subdividedGeometry=n??void 0),this.localGeometry=this.subdividedGeometry??this.originalGeometry,as(this),ss(this),this.calcBoundingBox(),r&&(this.localGeometry.uuid=r)}updateState(e,r){if(super.updateState(e,r),e.flatShading!==void 0){let o=this.material;this.material=Array.isArray(o)?o.map(n=>n.getFlavor(!1,n.side,n.wireframe)):o.getFlavor(!1,o.side,o.wireframe),this.smoothShading=!e.flatShading,this.createGeometryDelayed(r)}}updateMesh(e=!1){xt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0),this.subdividedGeometry&&xt.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0)}updateTopology(){this.originalGeometry.dispose(),this.originalGeometry=xt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=xt.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1)),this.localGeometry=this.subdividedGeometry??this.originalGeometry}raycast(e,r){let o=this.localGeometry;this.localGeometry=this.originalGeometryNew,Mt.prototype.raycast.call(this,e,r),this.localGeometry=o}activateSVDCompensation(){!this.hasNonUniformScale||(this.matrix.copy(this.matrixWorldRigid),this.hiddenMatrixOld.copy(this.hiddenMatrix),this.hiddenMatrix.copy(this.parent.matrixWorld).invert())}deactivateSVDCompensation(){!this.hasNonUniformScale||(this.updateMatrix(),this.hasNonUniformScale=void 0,this.hiddenMatrix.copy(this.hiddenMatrixOld))}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new Iv,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let r=e.attributes.position,o=e.boundingSphere.center;go.setFromBufferAttribute(r),go.getCenter(o),e.boundingSphere.radius=o.distanceTo(go.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),go.getSize(wl),this.hasNonUniformScale&&wl.divide(this.scale);let n={width:wl.x,height:wl.y,depth:wl.z};return this.geometry.userData.parameters=n,n}updateBoundingSphere(e){let r=this.originalGeometry;go.min.set(e[0],e[2],e[4]),go.max.set(e[1],e[3],e[5]),this.hasNonUniformScale&&(go.min.applyMatrix4(this.shearScaleInv),go.max.applyMatrix4(this.shearScaleInv)),r.boundingSphere===null&&(r.boundingSphere=new Iv);let o=r.boundingSphere.center;go.getCenter(o),r.boundingSphere.radius=o.distanceTo(go.max)}freeSubdivPointer(){this.subdivPointer&&(xt.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0),this.localGeometry=void 0,this.originalGeometry?.dispose(),this.subdividedGeometry?.dispose()}dispose(){super.dispose(),this.freeSubdivPointer()}updateByPatchedOpGeometry(e,r,o){super.updateByPatchedOpGeometry(e,r,o),this.localGeometry&&this.createGeometryByControls(r)}};import{Triangle as rD,Vector3 as bn}from"three";var Nv=-1,oD=1,Dv={x:[1,0,0],"-x":[-1,0,0],y:[0,1,0],"-y":[0,-1,0],z:[0,0,1],"-z":[0,0,-1]},_v={polygon_center:0,edge:1,vertex:2},Pl=(i,t)=>(e,r)=>!t||e===0||i===0?0:i*r/100,Ce=(i,t)=>{let e=Math.abs(t),r=e*-1;return(i-Nv)*(e-r)/(oD-Nv)+r},iD=new bn,td=new bn,nD=new bn,aD=new bn;function ls(i,t){let e=nD.fromArray(i),r=aD.fromArray(t);td.copy(r).sub(e);let o=td.length();return td.normalize().multiplyScalar(o*.5),iD.copy(e).add(td).toArray()}var Or=new rD,rd=new bn,od=new bn,xn=new bn;function Rv(i){let t=[];for(let e=0;e<=i.index.count;e++)if(rd.fromArray(i.index.array,e*3),Or.setFromAttributeAndIndices(i.attributes.position,rd.x,rd.y,rd.z),Or.getNormal(od),Or.getMidpoint(xn),!(isNaN(xn.x)||isNaN(xn.y)||isNaN(xn.z))){let{a:r,b:o,c:n}=Or,a=r.toArray(),s=o.toArray(),l=n.toArray(),c=r.distanceTo(o),u=o.distanceTo(n),p=n.distanceTo(r),d=ls(a,s),f=ls(s,l),h=ls(l,a),m=[c,u,p],y=Math.max(...m),b=m.filter(O=>Math.round(O)===Math.round(y)).length>1,v=[],w=Or.getMidpoint(xn).toArray();y===c&&!b&&(v=[f,h,h],w=d),y===u&&!b&&(v=[d,h,h],w=f),y===p&&!b&&(v=[d,f,f],w=h),b&&(v=[d,f,h]),t.push({vertices:[a,s,l],faceCenters:v,midpoint:w,norm:Or.getNormal(od).toArray()})}return t}function Lv(i){let t=[],{position:e}=i.attributes;for(let r=0;r<e.count;r++){Or.setFromAttributeAndIndices(e,r*3,r*3+1,r*3+2),Or.getNormal(od),Or.getMidpoint(xn);let o=Or.a.toArray(),n=Or.b.toArray(),a=Or.c.toArray();t.push({vertices:[o,n,a],faceCenters:[ls(o,n),ls(n,a),ls(a,o)],midpoint:xn.toArray(),norm:od.toArray()})}return t}var sD=4,lD=.5,bh=i=>.5*(1-Math.cos(i*Math.PI)),vh=class{constructor(){this.perlin=new Array(4095+1)}noise(t,e=0,r=0){if(this.perlin==null){this.perlin=new Array(4095+1);for(let b=0;b<4095+1;b++)this.perlin[b]=Math.random()}t<0&&(t=-t),e<0&&(e=-e),r<0&&(r=-r);let o=Math.floor(t),n=Math.floor(e),a=Math.floor(r),s=t-o,l=e-n,c=r-a,u,p,d=0,f=.5,h,m,y;for(let b=0;b<sD;b++){let v=o+(n<<4)+(a<<8);u=bh(s),p=bh(l),h=this.perlin[v&4095],h+=u*(this.perlin[v+1&4095]-h),m=this.perlin[v+16&4095],m+=u*(this.perlin[v+16+1&4095]-m),h+=p*(m-h),v+=256,m=this.perlin[v&4095],m+=u*(this.perlin[v+1&4095]-m),y=this.perlin[v+16&4095],y+=u*(this.perlin[v+16+1&4095]-y),m+=p*(y-m),h+=bh(c)*(m-h),d+=h*f,f*=lD,o<<=1,s*=2,n<<=1,l*=2,a<<=1,c*=2,s>=1&&(o++,s--),l>=1&&(n++,l--),c>=1&&(a++,c--)}return d}noiseSeed(t){let e=(()=>{let a,s;return{setSeed(l){s=a=(l??Math.random()*4294967296)>>>0},getSeed(){return a},rand(){return s=(1664525*s+1013904223)%4294967296,s/4294967296}}})();e.setSeed(t),this.perlin=new Array(4095+1);for(let r=0;r<4095+1;r++)this.perlin[r]=e.rand()}},Bv=vh;import{Vector3 as cD,Matrix4 as uD,Ray as dD}from"three";var Vv=new cD,zv=new uD,Gv=new dD;function Fv(i){let t=!1;return i.scene.objects.traverse((e,r)=>{r.type==="Mesh"&&(r.geometry.type==="TextGeometry"||r.geometry.type==="InputGeometry")&&(t=!0)}),t}var Ai=class extends et{constructor(e,r,o){super(e,r,o);this.data=r}get textGeometry(){return this.geometry}get charWidths(){return this.textGeometry.charWidths}get charCoords(){return this.textGeometry.charCoords}get wrappedText(){return this.textGeometry.wrappedText}get font(){return this.textGeometry.font}get initialOffsetY(){let e=this.dataPatched;return this.font?.getLineInitialOffsetY(this.lineHeight,this.wrappedText.length,e.geometry.height,this.fontScale,e.geometry.verticalAlign)??0}get fontScale(){let e=this.dataPatched;return this.font?e.geometry.fontSize/this.font.unitsPerEm:1}get AD(){return Math.abs(this.ascender-this.descender)}get ascender(){return(this.font?.ascender??1)*this.fontScale}get descender(){return(this.font?.descender??1)*this.fontScale}get lineHeight(){let e=this.dataPatched;return e.geometry.fontSize*e.geometry.lineHeight}raycast(e,r){let{matrixWorld:o}=this;if(!(isNaN(e.ray.origin.x)||this.scale.x===0||this.scale.y===0||this.scale.z===0)&&(zv.copy(o).invert(),Gv.copy(e.ray).applyMatrix4(zv),Gv.intersectBox(this.singleBBox,Vv))){let n=Vv.applyMatrix4(o),a=e.ray.origin.distanceTo(n);r.push({distance:a,point:n.clone(),object:this})}}};var Qt=1e-4,xo,Hv,Wv,qv,Uv=new fr,kv=new fr;_u.then(i=>{xo=i,Hv=[xo.get_face_center,xo.get_edge_midpoint,xo.get_vertex_position],Wv=[xo.get_face_normal,xo.get_edge_normal,xo.get_vertex_normal],qv=[xo.face_count,xo.edge_count,xo.vertex_count]});var fD=new vn,hD=new vn,Mi=new fr,id=new fr,Ol=new fr,wh=new fr,mD=new fr,yD=new fr;var Ph=class{constructor(t,e){this.data=t;this.is3D=e;this.perlin=new Bv;t.noiseType==="perlin"?(this.perlin.noiseSeed(t.seed),e?this.noise=(o,n,a)=>this.perlin.noise(o,n,a):this.noise=o=>this.perlin.noise(o)):e?this.noise=ax((0,nd.default)(t.seed)):this.noise=nx((0,nd.default)(t.seed))}},Ii=class extends ga(pD){constructor(e,r){super();this.parameters=r;this.objectForSample=void 0;this._pendingMediaLoad=!1;this.random=null;this.object=e}resetOnMove(){this.removeFromParent(),this.parent=null}expandClones(e){if(this.parent===null)this.updateState(this.parameters,e);else for(let r of this.children)r instanceof Lr&&r.expand()}invalidateTransform(e){this.matrixWorldNeedsUpdate=!0,this.traverse(r=>{r instanceof Lr&&r.object===e&&(r.matrixWorldNeedsUpdate=!0)})}onObjUpdateMatrix(){this.parameters.type!=="toObject"&&(this.matrixWorldNeedsUpdate=!0)}update(){switch(this._updateCount(),this.parameters.type){case"radial":this._updateRadial(this.parameters);break;case"linear":this._updateLinear(this.parameters);break;case"grid":this._updateGrid(this.parameters);break;case"toObject":this._updateToObject(this.parameters)}for(let e of this.children)e.updateMatrix(),e.hasNonUniformScale&&(e.updateMatrixWorld(),e.updateMatrixWorldSVD())}_updateCount(e){let r;if(e!==void 0?r=e:r=this.parameters.type==="grid"?Math.round(this.parameters.grid.count[0])*Math.round(this.parameters.grid.count[1])*Math.round(this.parameters.grid.count[2]):this.parameters.count,this.parameters.type==="toObject"){if(!this.parameters.toObject.object)r=0;else if(e===void 0&&this.parameters.toObject.spreadType!=="random")return}if(this.parameters.type==="toObject"&&this.objectForSample){let o=this.children;if(o.length===r)return;if(o.length<r)for(let n=0,a=r-o.length;n<a;++n){let s=new Lr(this.object);s.expand(),this.add(s)}else for(let n=0,a=o.length-r;n<a;++n)this.remove(o[n])}else{if(this.children.length===r)return;if(this.children.length<r)for(let o=0,n=r-this.children.length;o<n;++o){let a=new Lr(this.object);a.expand(),this.add(a)}else for(let o=0,n=this.children.length-r;o<n;++o)this.remove(this.children[o])}}getRandom(e,r=!1){return(this.random===null||this.random.data.seed!==e.seed||this.random.is3D!==r)&&(this.random=new Ph(e,r)),this.random}_updateRadial(e){let r=e.radial,o=r.start*jv.DEG2RAD,n=r.end*jv.DEG2RAD,a=o-n,s=new Sh(r.rotation[0],r.rotation[1],r.rotation[2]),l;switch(r.axis){case"z":l=new fr(0,0,1);break;case"y":l=new fr(0,1,0);break;default:case"x":l=new fr(1,0,0);break}let c=e.randomnessObject??ro.defaultData([1,1,1]).randomnessObject,u=this.getRandom(c),p=Pl(c.strength,this.parameters.randomness);for(let[d,f]of this.children.entries()){let h=d*(c.freqScale/10)+c.movement,m=u.noise(h,h,h),y=d+1;f.scale.x=r.scale[0]+p(y,Ce(m,c.scale[0]))||Qt,f.scale.y=r.scale[1]+p(y,Ce(m,c.scale[1]))||Qt,f.scale.z=r.scale[2]+p(y,Ce(m,c.scale[2]))||Qt,f.position.setScalar(0);let b=a/e.count*d-o;switch(r.axis){case"x":f.rotation.set(0,b,0);break;case"y":f.rotation.set(0,0,b);break;case"z":f.rotation.set(b,0,0);break}f.translateOnAxis(l,r.radius),f.position.x+=r.position[0]+p(y,Ce(m,c.position[0])),f.position.y+=r.position[1]+p(y,Ce(m,c.position[1])),f.position.z+=r.position[2]+p(y,Ce(m,c.position[2]));let v=p(y,Ce(m,c.rotation[0])),w=p(y,Ce(m,c.rotation[1])),O=p(y,Ce(m,c.rotation[2]));r.alignment===!0?(f.rotation.x+=s.x+v,f.rotation.y+=s.y+w,f.rotation.z+=s.z+O):f.rotation.set(s.x+v,s.y+w,s.z+O)}}_updateLinear(e){if(e.type!=="linear")throw new Error;let r=e.linear,o=new Sh(r.rotation[0],r.rotation[1],r.rotation[2]),n=e.randomnessObject??ro.defaultData([1,1,1]).randomnessObject,a=this.getRandom(n),s=Pl(n.strength,this.parameters.randomness);for(let[l,c]of this.children.entries()){let u=l*(n.freqScale/10)+n.movement,p=a.noise(u,u,u),d=l+1,f=s(d,Ce(p,n.rotation[0])),h=s(d,Ce(p,n.rotation[1])),m=s(d,Ce(p,n.rotation[2]));c.scale.x=1+(r.scale[0]-1)*l+s(d,Ce(p,n.scale[0]))||Qt,c.scale.y=1+(r.scale[1]-1)*l+s(d,Ce(p,n.scale[1]))||Qt,c.scale.z=1+(r.scale[2]-1)*l+s(d,Ce(p,n.scale[2]))||Qt,c.rotation.x=o.x*l+f,c.rotation.y=o.y*l+h,c.rotation.z=o.z*l+m,c.position.x=r.position[0]*l+s(d,Ce(p,n.position[0])),c.position.y=r.position[1]*l+s(d,Ce(p,n.position[1])),c.position.z=r.position[2]*l+s(d,Ce(p,n.position[2]))}}_updateGrid(e){let r=0,o=e.grid,n=e.randomnessObject??ro.defaultData([1,1,1]).randomnessObject,a=this.getRandom(n,!0),s=Pl(n.strength,this.parameters.randomness);if(o.useCenter===!0){let l={x:o.count[0]%2===0?2:1,y:o.count[1]%2===0?2:1,z:o.count[2]%2===0?2:1},c=new fr(o.size[0]*(o.count[0]-l.x)*.5,o.size[1]*(o.count[1]-l.y)*.5,o.size[2]*(o.count[2]-l.z)*.5);for(let u=0;u<o.count[0];u++)for(let p=0;p<o.count[1];p++)for(let d=0;d<o.count[2];d++){let f=a.noise((u+1)*(n.freqScale/10)+n.movement,(p+1)*(n.freqScale/10)+n.movement,(d+1)*(n.freqScale/10)+n.movement),h=this.children[r++];h.scale.x=1+s(r,Ce(f,n.scale[0]))||Qt,h.scale.y=1+s(r,Ce(f,n.scale[1]))||Qt,h.scale.z=1+s(r,Ce(f,n.scale[2]))||Qt;let m=s(r,Ce(f,n.rotation[0])),y=s(r,Ce(f,n.rotation[1])),b=s(r,Ce(f,n.rotation[2]));h.rotation.set(m,y,b),h.position.x=o.size[0]*u-c.x+s(r,Ce(f,n.position[0])),h.position.y=o.size[1]*p-c.y+s(r,Ce(f,n.position[1])),h.position.z=o.size[2]*d-c.z+s(r,Ce(f,n.position[2]))}}else for(let l=0;l<o.count[0];l++)for(let c=0;c<o.count[1];c++)for(let u=0;u<o.count[2];u++){let p=a.noise((l+1)*(n.freqScale/10)+n.movement,(c+1)*(n.freqScale/10)+n.movement,(u+1)*(n.freqScale/10)+n.movement),d=this.children[r++];d.scale.x=1+s(r,Ce(p,n.scale[0]))||Qt,d.scale.y=1+s(r,Ce(p,n.scale[1]))||Qt,d.scale.z=1+s(r,Ce(p,n.scale[2]))||Qt;let f=s(r,Ce(p,n.rotation[0])),h=s(r,Ce(p,n.rotation[1])),m=s(r,Ce(p,n.rotation[2]));d.rotation.set(f,h,m),d.position.x=o.size[0]*l+s(r,Ce(p,n.position[0])),d.position.y=-o.size[1]*c+s(r,Ce(p,n.position[1])),d.position.z=-o.size[2]*u+s(r,Ce(p,n.position[2]))}}_updateToObject(e){if(e.type!=="toObject")throw new Error;let{toObject:r}=e,o=new Sh(r.rotation[0],r.rotation[1],r.rotation[2]),n=e.randomnessObject??ro.defaultData([1,1,1]).randomnessObject,a=this.getRandom(n),s=Pl(n.strength,this.parameters.randomness);if(!r.object){for(let[,d]of this.children.entries())d.position.set(0,0,0),d.scale.setScalar(1),d.rotation.set(0,0,0);this.objectForSample=void 0;return}if(!this.objectForSample)return;if(this.objectForSample instanceof Ai)if(!this.objectForSample.font?.isLoaded||this.objectForSample.geometry.attributes.position===void 0){this._pendingMediaLoad=!0;return}else this._pendingMediaLoad=!1;if(this.objectForSample.geometry===void 0&&this.objectForSample.isAncestorOf(this.object.uuid)){console.warn(`Oh no! The object "${this.object.name}" (${this.object.uuid}) seem to be a child/descendant of the object it's being cloned to. Please re-parent it so that they are siblings instead.`);return}let l=this.getSubdivData();if(l.length>0){let d=Math.round(l.length*r.count/100);this._updateCount(d)}else{let d=this.objectForSample.geometry.getAttribute("position");if(!d||isNaN(d.count)||d.count===0){console.warn(`Oh no! The object "${this.object.name}" (${this.object.uuid}) cannot be cloned on the surface of "${this.objectForSample.name}" (${this.objectForSample.uuid}) because the latter does not have a valid geometry.`);return}}this.objectForSample.updateMatrixWorld();let c=new su(this.objectForSample).build(),u=Dv[r.axis],p=this.children;c.setRandomGenerator((0,nd.default)(this.object.uuid+r.seed));for(let[d,f]of p.entries()){let h=d*(n.freqScale/10)+n.movement,m=a.noise(h,h,h),y=d+1,b=s(y,Ce(m,n.rotation[0])),v=s(y,Ce(m,n.rotation[1])),w=s(y,Ce(m,n.rotation[2]));r.spreadType==="random"?c.sample(Ol,wh):(l.length&&(Ol.fromArray(l[d].pos),wh.fromArray(l[d].norm)),this.objectForSample instanceof gn&&Ol.applyMatrix4(fD.copy(this.objectForSample.matrixWorld).invert())),Ol.applyMatrix4(this.object.hiddenMatrix.clone().invert()),f.position.copy(Ol),Mi.fromArray(u);let O=r.align==="normal"?wh:this.object.getWorldDirection(yD),S=id.fromArray(r.position);id.x+=s(y,Ce(m,n.position[0])),id.y+=s(y,Ce(m,n.position[1])),id.z+=s(y,Ce(m,n.position[2]));let T=Math.acos(O.dot(Mi)),M=mD.crossVectors(Mi,O).normalize(),g=hD.makeRotationAxis(M,T),D=O.clone().cross(this.object.up).normalize(),E=D.clone().cross(O).normalize(),I=new vn().makeBasis(D,O,E),N=new fr(Mi.y,Mi.z,Mi.x).normalize(),_=N.clone().cross(Mi).normalize(),R=new vn().makeBasis(N,Mi,_).invert(),V=new vn().multiplyMatrices(I,R);f.rotation.setFromRotationMatrix(V),S.applyMatrix4(g),f.position.add(S),f.rotation.x=f.rotation.x+o.x+b,f.rotation.y=f.rotation.y+o.y+v,f.rotation.z=f.rotation.z+o.z+w,f.scale.setScalar(1),f.scale.x=f.scale.x+r.scale[0]+s(y,Ce(m,n.scale[0]))||Qt,f.scale.y=f.scale.y+r.scale[1]+s(y,Ce(m,n.scale[1]))||Qt,f.scale.z=f.scale.z+r.scale[2]+s(y,Ce(m,n.scale[2]))||Qt,f.scale.multiply(this.object.scale),f.hiddenMatrix=this.object.hiddenMatrix}}getSubdivData(){if(!this.objectForSample)return[];let e=this.parameters.toObject.spreadType,r=new Map,o=(a,s)=>{let l=Math.round(a[0]*1e4)+"_"+Math.round(a[1]*1e4)+"_"+Math.round(a[2]*1e4),c=r.get(l);c?(c.pos[0]+=a[0],c.pos[1]+=a[1],c.pos[2]+=a[2],c.norm[0]+=s[0],c.norm[1]+=s[1],c.norm[2]+=s[2],c.count+=1):r.set(l,{pos:[...a],norm:[...s],count:1})};if(e==="random")return[];if(this.objectForSample instanceof gn){let a=this.objectForSample,s=_v[e],l=qv[s],c=Hv[s],u=Wv[s],p=l(a.subdivPointerNew);for(let d=0;d<=p-1;d++){let f=c(a.subdivPointerNew,d),h=u(a.subdivPointerNew,d);Uv.fromArray(f).applyMatrix4(a.matrixWorld),kv.fromArray(h),o(Uv.toArray(),kv.toArray())}}else(this.objectForSample.geometry.index?Rv(this.objectForSample.geometry):Lv(this.objectForSample.geometry)).forEach((s,l)=>{e==="polygon_center"&&o(s.midpoint,s.norm),e==="vertex"&&(o(s.vertices[0],s.norm),o(s.vertices[1],s.norm),o(s.vertices[2],s.norm)),e==="edge"&&(o(s.faceCenters[0],s.norm),o(s.faceCenters[1],s.norm),o(s.faceCenters[2],s.norm))});let n=Array.from(r.values());for(let a of n)a.pos[0]/=a.count,a.pos[1]/=a.count,a.pos[2]/=a.count,a.norm[0]/=a.count,a.norm[1]/=a.count,a.norm[2]/=a.count;return n}updateState(e,r){if(this.parameters=Io(e),this.parameters.type!=="toObject")(this.parent===null||this.parent!==this.object)&&(this.removeFromParent(),this.object.parent?.add(this),this.matrix=this.object.matrix,this.hiddenMatrix=this.object.hiddenMatrix,this.matrixWorldNeedsUpdate=!0,this.matrixAutoUpdate=!1);else if(this.parent===null||this.parent.uuid!==this.parameters.toObject.object){this.removeFromParent();let o=r.find(this.parameters.toObject.object);o instanceof Mt?this.objectForSample=o:this.objectForSample=void 0,this.matrix=new vn,this.hiddenMatrix=new vn,this.matrixWorldNeedsUpdate=!0,this.matrixAutoUpdate=!1,o&&o.add(this)}this.update()}get pendingMediaLoad(){return this._pendingMediaLoad}};import{Scene as QR,Vector3 as ZR,Matrix4 as JR,Box3 as eL,MeshBasicMaterial as tL,Skeleton as rL}from"three";import{Camera as MD,OrthographicCamera as ID,PerspectiveCamera as ED,Vector3 as $r,Object3D as Kv,Quaternion as ND,Matrix4 as DD}from"three";import{Camera as wD,LineSegments as PD,BufferGeometry as OD,LineBasicMaterial as TD,Color as Th,Vector3 as CD,Float32BufferAttribute as Xv}from"three";import{BoxGeometry as gD}from"three";var bo=i=>{var t;return t=class extends i{},t.geometryHelper=new gD(30,30,30),t};import{Ray as xD,Sphere as bD,Matrix4 as vD,Vector3 as $o}from"three";var ad=new xD,Oh=new bD,$v=new vD,vo=(i,t,e,r,o=!1,n=i)=>{let a=t,s=n.matrixWorld;if(a.boundingSphere===null&&a.computeBoundingSphere(),Oh.copy(a.boundingSphere),Oh.applyMatrix4(s),e.ray.intersectsSphere(Oh)===!1||($v.copy(s).invert(),ad.copy(e.ray).applyMatrix4($v),a.boundingBox!==null&&ad.intersectsBox(a.boundingBox)===!1))return;let l,c,u,p,d=a.index,f=a.attributes.position,h=a.drawRange,m,y;if(o===!1){let v=Math.max(0,h.start),w=Math.min(d.count,h.start+h.count);for(m=v,y=w;m<y;m+=3)if(c=d.getX(m),u=d.getX(m+1),p=d.getX(m+2),l=b(i,e,ad,f,c,u,p),l){l.faceIndex=Math.floor(m/3),r.push(l);return}}else{let w=a.attributes.position,O=new $o,S=new $o,T=new $o,M=new $o,g=2,E=1/((n.scale.x+n.scale.y+n.scale.z)/3),I=E*E,N=Math.max(0,h.start),_=Math.min(w.count,h.start+h.count);for(let R=N,V=_-1;R<V;R+=g){if(O.fromBufferAttribute(w,R),S.fromBufferAttribute(w,R+1),ad.distanceSqToSegment(O,S,M,T)>I)continue;M.applyMatrix4(n.matrixWorld);let B=e.ray.origin.distanceTo(M);B<e.near||B>e.far||r.push({distance:B,point:T.clone().applyMatrix4(n.matrixWorld),object:i})}}function b(v,w,O,S,T,M,g){let D=new $o,E=new $o,I=new $o,N=new $o,_=new $o;if(D.fromBufferAttribute(S,T),E.fromBufferAttribute(S,M),I.fromBufferAttribute(S,g),O.intersectTriangle(D,E,I,!1,N)===null)return null;_.copy(N),_.applyMatrix4(v.matrixWorld);let V=w.ray.origin.distanceTo(_);return V<w.near||V>w.far?null:{faceIndex:1,distance:V,point:_.clone(),object:v}}};var sd=new CD,Tr=new wD,Ch=class extends PD{constructor(e){let r=new OD,o=new TD({color:16777215,vertexColors:!0,toneMapped:!1}),n=[],a=[],s={},l=new Th(15711266),c=new Th(15711266),u=new Th(2857471);p("n1","n2",l),p("n2","n4",l),p("n4","n3",l),p("n3","n1",l),p("f1","f2",l),p("f2","f4",l),p("f4","f3",l),p("f3","f1",l),p("n1","f1",l),p("n2","f2",l),p("n3","f3",l),p("n4","f4",l),p("p","n1",c),p("p","n2",c),p("p","n3",c),p("p","n4",c),p("u1","u2",u),p("u2","u3",u),p("u3","u1",u);function p(f,h,m){d(f,m),d(h,m)}function d(f,h){n.push(0,0,0),a.push(h.r,h.g,h.b),s[f]===void 0&&(s[f]=[]),s[f].push(n.length/3-1)}r.setAttribute("position",new Xv(n,3)),r.setAttribute("color",new Xv(a,3));super(r,o);this.type="CameraHelper",this.camera=e,this.camera.updateProjectionMatrix&&this.camera.updateProjectionMatrix(),this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.pointMap=s,this.update()}update(){let e=this.geometry,r=this.pointMap,o=!0;Tr.projectionMatrixInverse.elements=[.5112609807824982,-0,-0,-0,-0,.41421356237309503,-0,-0,-0,-0,-0,-.099999,-0,-0,-1.0000000000000002,.100001];let n=1,a=1,s=o?.8:1e-4;qr("n1",r,e,Tr,-n,-a,s),qr("n2",r,e,Tr,n,-a,s),qr("n3",r,e,Tr,-n,a,s),qr("n4",r,e,Tr,n,a,s);let l=s;qr("f1",r,e,Tr,-n,-a,l),qr("f2",r,e,Tr,n,-a,l),qr("f3",r,e,Tr,-n,a,l),qr("f4",r,e,Tr,n,a,l);let c=l,u=.5;qr("u1",r,e,Tr,n*.7*u,a*1.1,c),qr("u2",r,e,Tr,-n*.7*u,a*1.1,c),qr("u3",r,e,Tr,0,a*(1.1+.9*u),c),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function qr(i,t,e,r,o,n,a){sd.set(o,n,a).unproject(r);let s=t[i];if(s!==void 0){let l=e.getAttribute("position");for(let c=0,u=s.length;c<u;c++)l.setXYZ(s[c],sd.x,sd.y,sd.z)}}var ld=class extends bo(Ch){constructor(e){super(e);this.object=e;this.object=e,this.name=`CombinedCameraHelper: ${e.uuid}`}updateMatrixWorld(e){super.updateMatrixWorld(e),this.updateTarget()}updateTarget(){let e=this.object.getTarget();this.updateWorldMatrix(!0,!1),this.worldToLocal(e)}raycast(e,r){vo(this.object,this.geometry,e,r,!0)}};import{Box3Helper as Yv,BoxGeometry as AD}from"three";var cd;(t=>t.is=e=>"objectHelper"in e)(cd||(cd={}));var Cr=(i,t)=>class extends va(i){constructor(){super(...arguments);this.objectHelper=new t(this);this.gizmos={}}get geometryHelper(){return t.geometryHelper}raycast(o,n){this.objectHelper.raycast(o,n)}showGizmos(){for(let o in this.gizmos){let n=this.gizmos[o];n instanceof Yv&&(n.visible=!0)}}updateEntityBoxSize(o,n){this.objectHelper.visible&&this.geometryHelper instanceof AD?(o.setScalar(0),n.set(this.geometryHelper.parameters.width,this.geometryHelper.parameters.height,this.geometryHelper.parameters.height).multiplyScalar(.5)):super.updateEntityBoxSize(o,n)}hideGizmos(){for(let o in this.gizmos){let n=this.gizmos[o];n instanceof Yv&&(n.visible=!1)}}};var ud=790,cs=new $r,Ah=new $r,Mh=new ND,Ih=new $r,Tl=new $r,Eh=new $r,Xo=class extends Cr(MD,ld){constructor(e="",r={...Ji.defaultData,name:""}){super();this._cameraType="OrthographicCamera";this.targetOffset=hi.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.wasMovedByUser=!1;this.wasMovedBySwitchCameraAction=!1;this.super_Entity(e,r),this.previousProjectionMatrix=new DD,this.matrixAutoUpdate=!0,this.width=window.innerWidth,this.height=window.innerHeight;let o=this.width,n=this.height;this.orthoCamera=new ID(o*-.5,o*.5,n*.5,n*-.5,-5e4,1e4),this.perspCamera=new ED(45,o/n,50,1e4),this.left=this.orthoCamera.left,this.right=this.orthoCamera.right,this.top=this.orthoCamera.top,this.bottom=this.orthoCamera.bottom,this.far=this.orthoCamera.far,this.view=this.orthoCamera.view,this.aspect=this.perspCamera.aspect,this.focus=this.perspCamera.focus,this.filmGauge=this.perspCamera.filmGauge,this.filmOffset=this.perspCamera.filmOffset,this.objectHelper.update()}get isPerspectiveCamera(){return this.cameraType==="PerspectiveCamera"}get isOrthographicCamera(){return!this.isPerspectiveCamera}get cameraType(){return this._cameraType}set fov(e){this.perspCamera.fov=e}get fov(){return this.perspCamera.fov}setNear(e,r){e==="PerspectiveCamera"?this.perspCamera.near=r:this.orthoCamera.near=r}setZoom(e,r){r>=0&&(e==="PerspectiveCamera"?this.perspCamera.zoom=r:this.orthoCamera.zoom=r)}set cameraType(e){e==="PerspectiveCamera"?this.toPerspective():e==="OrthographicCamera"&&this.toOrthographic()}get near(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.near:this.orthoCamera.near}set near(e){this._cameraType==="PerspectiveCamera"?this.perspCamera.near=e:this.orthoCamera.near=e}get zoom(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom:this.orthoCamera.zoom}set zoom(e){e>=0&&(this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom=e:this.orthoCamera.zoom=e)}lookAt(e,r,o){typeof e=="number"&&(e=new $r(e,r,o)),super.lookAt(e),this.getWorldPosition(cs),this.targetOffset=cs.distanceTo(e)}getTarget(e=new $r){return this.getWorldDirection(Ah),this.getWorldPosition(cs),Ah.multiplyScalar(this.targetOffset),e.copy(cs).add(Ah),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(cs),cs.distanceTo(e)}updateUp(){this.getWorldQuaternion(Mh),Ih.set(0,0,1).applyQuaternion(Mh),Tl.copy(Kv.DEFAULT_UP),this.isUpVectorFlipped&&Tl.negate(),Tl.applyQuaternion(Mh),Eh.copy(Kv.DEFAULT_UP).projectOnPlane(Ih),this.angleOffsetFromUp=Eh.angleTo(Tl),this.angleOffsetFromUp*=Eh.cross(Tl).dot(Ih)>=0?1:-1}updateTransformState(e,r){let o=super.updateTransformState(e,r);return e.isUpVectorFlipped!==void 0&&(this.isUpVectorFlipped=e.isUpVectorFlipped),this.updateUp(),o}getViewFrontToObject(e){let r=e.getWorldPosition(new $r),n=e.getWorldDirection(new $r).multiplyScalar(this.targetOffset);return{position:r.clone().add(n),target:r}}getViewToTarget(e){let o=this.getWorldDirection(new $r).multiplyScalar(this.targetOffset);return{position:e.clone().sub(o),target:e}}getViewToObject(e){let r=new $r,o=e.getWorldPosition(r);return this.getViewToTarget(r)}setViewplaneSize(e,r,o=!1){if(this.aspect=e/r,o){let n=e>r?this.aspect:1,a=e>r?1:this.aspect;this.left=-ud*.5*n,this.right=ud*.5*n,this.top=ud*.5*(1/a),this.bottom=-ud*.5*(1/a)}else this.left=-e*.5,this.right=e*.5,this.top=r*.5,this.bottom=-r*.5;this.updateProjectionMatrix()}copyViewPlaneSize(e){this.aspect=e.aspect,this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.updateProjectionMatrix()}toOrthographic(){this.orthoCamera.left=this.left,this.orthoCamera.right=this.right,this.orthoCamera.top=this.top,this.orthoCamera.bottom=this.bottom,this.orthoCamera.view=this.view,this.orthoCamera.far=this.far,this.orthoCamera.updateProjectionMatrix(),this.projectionMatrix=this.orthoCamera.projectionMatrix,this.projectionMatrixInverse=this.orthoCamera.projectionMatrixInverse,this._cameraType="OrthographicCamera",this.objectHelper&&this.objectHelper.update()}toPerspective(){this.perspCamera.aspect=this.aspect,this.perspCamera.fov=this.fov,this.perspCamera.view=this.view,this.perspCamera.far=this.far,this.perspCamera.updateProjectionMatrix(),this.projectionMatrix=this.perspCamera.projectionMatrix,this.projectionMatrixInverse=this.perspCamera.projectionMatrixInverse,this._cameraType="PerspectiveCamera",this.objectHelper&&this.objectHelper.update()}setFocalLength(e){this.perspCamera.setFocalLength(e),this.toPerspective()}getFocalLength(){return this.perspCamera.getFocalLength()}getEffectiveFOV(){return this.perspCamera.getEffectiveFOV()}getFilmWidth(){return this.perspCamera.getFilmWidth()}getFilmHeight(){return this.perspCamera.getFilmHeight()}setViewOffset(e,r,o,n,a,s){this._cameraType==="PerspectiveCamera"?this.perspCamera.setViewOffset(e,r,o,n,a,s):this.orthoCamera.setViewOffset(e,r,o,n,a,s)}clearViewOffset(){this._cameraType==="PerspectiveCamera"?(this.perspCamera.clearViewOffset(),this.toPerspective()):(this.orthoCamera.clearViewOffset(),this.toOrthographic())}copyHistory(){this.previousProjectionMatrix&&this.previousProjectionMatrix.copy(this.projectionMatrix)}updateProjectionMatrix(){this._cameraType==="PerspectiveCamera"?this.toPerspective():this._cameraType==="OrthographicCamera"&&this.toOrthographic()}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(e,r){super.updateWorldMatrix(e,r),this.matrixWorldInverse.copy(this.matrixWorld).invert()}copy(e,r){return super.copy(e,r),this.parent=e.parent,this.orthoCamera.copy(e.orthoCamera),this.perspCamera.copy(e.perspCamera),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.far=e.far,this.view=e.view===null?null:Object.assign({},e.view),this._cameraType=e._cameraType,this.aspect=e.aspect,this.fov=e.fov,this.focus=e.focus,this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this.targetOffset=e.targetOffset,this.updateProjectionMatrix(),this}toCameraState(e=[]){let r={type:this.cameraType,far:this.far,orthographic:{near:this.orthoCamera.near,zoom:this.orthoCamera.zoom},perspective:{near:this.perspCamera.near,fov:this.perspCamera.fov,zoom:this.perspCamera.zoom},up:this.up.toArray(),targetOffset:this.targetOffset,isUpVectorFlipped:this.isUpVectorFlipped};return Yn(r,e)}updateCameraSubtype(e,r){let o=e==="perspective"?"PerspectiveCamera":"OrthographicCamera";r.zoom!==void 0&&this.setZoom(o,r.zoom),r.near!==void 0&&this.setNear(o,r.near),r.fov!==void 0&&o==="PerspectiveCamera"&&(this.fov=r.fov)}updateState(e,r){this.updateCameraState(e,r)}updateCameraState(e,r){this.updateState_Entity(e,r),e.far!==void 0&&(this.far=e.far),e.orthographic!==void 0&&this.updateCameraSubtype("orthographic",e.orthographic),e.perspective!==void 0&&this.updateCameraSubtype("perspective",e.perspective),e.type!==void 0&&(this.cameraType=e.type),e.up!==void 0&&this.up.fromArray(e.up),e.targetOffset!==void 0&&(this.targetOffset=e.targetOffset),e.isUpVectorFlipped!==void 0&&(this.isUpVectorFlipped=e.isUpVectorFlipped),this.updateProjectionMatrix()}updateByPatchedOp(e,r,o){super.updateByPatchedOp(e,r,o),e.path.length===1&&e.type===0&&this.updateCameraSubtype(e.path[0],e.props)}toState(e){return{...super.toState(e),...this.toCameraState(e),type:this.cameraType}}};import{MathUtils as nae}from"three";import{BufferGeometry as Qv,Matrix4 as Zv,Float32BufferAttribute as _D}from"three";var us=new Zv,RD=new Zv;var nr=class extends ir{constructor(e,r,o){super(e,r);this.data=r;this.meshSetAddresses=[];this.needsTransformForDownstream=!1;this.geometry=new Qv;this.onAfterRender=(e,r,o,n,a,s)=>{super.onAfterRender(e,r,o,n,a,s),this.recomputeBoolean()};this.geometry.userData.parameters={width:0,height:0,depth:0}}get booleanOp(){return this.data.geometry.operation}get phongAngle(){return this.data.geometry.phongAngle??45}get isLOD(){return this.recomputeBoolean(),!1}updateByPatchedOp(e,r,o){super.updateByPatchedOp(e,r,o),e.path.length===1&&e.path[0]==="geometry"&&e.type===0&&e.props.operation!==void 0&&(this.freeBooleanPointer(),this.resetBBoxNeedsUpdate())}freeBooleanPointer(){super.freeBooleanPointer(),this.geometry.dispose()}recomputeBoolean(e,r=!0){if(this.booleanMeshSetAddress!==-1&&!e)return;for(let n=0;n<this.children.length;n++){let a=this.children[n];a instanceof nr&&a.dataPatched.visible===!0&&a.recomputeBoolean(e===!0,r)}this.meshSetAddresses=[];for(let n=0;n<this.children.length;n++){let a=this.children[n];if(a instanceof Mt&&a.dataPatched.visible===!0&&a.geometry.attributes.position?.count>0&&a.geometry.drawRange.count>0&&a.booleanMeshSetAddress!==0){us.multiplyMatrices(a.hiddenMatrix,a.matrix);try{if(a.booleanMeshSetAddress===-1){if((a.geometry.index??a.geometry.getAttribute("position")).count/3<15e5&&(a.booleanMeshSetAddress=wr.getMeshSet(a.geometry,e===!0,r)),a.booleanMeshSetAddress===-1)return;wr.transformMeshSet(a.booleanMeshSetAddress,us),a.booleanMatrixInvOld.copy(us).invert(),a.booleanWasTransformed=!1}else a instanceof nr&&a.needsTransformForDownstream===!0?(wr.transformMeshSet(a.booleanMeshSetAddress,us),a.needsTransformForDownstream=!1):a.booleanWasTransformed===!0&&(wr.transformMeshSet(a.booleanMeshSetAddress,RD.multiplyMatrices(us,a.booleanMatrixInvOld)),a.booleanMatrixInvOld.copy(us).invert(),a.booleanWasTransformed=!1)}catch(s){console.error(s),a.booleanMeshSetAddress=0,a.geometry.userData.booleanOperationDidFail=!0;continue}wr.hasOpenEdges(a.booleanMeshSetAddress)===!1||n===this.children.length-1&&this.booleanOp===2?(this.meshSetAddresses.push(a.booleanMeshSetAddress),a.geometry.userData.booleanOperationDidFail=!1):a.geometry.userData.booleanOperationDidFail="openEdges"}}if(this.meshSetAddresses.length===0){this.geometry.setAttribute("position",new _D([],0)),this.geometry.setDrawRange(0,0);return}if(e===!0)return wr.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let o=this.geometry;o.dispose(),this.geometry=new Qv,this.geometry.userData=o.userData,this.geometry.boundingSphere=o.boundingSphere;try{this.booleanMeshSetAddress=wr.calcBoolean(this.meshSetAddresses,this.booleanOp,this.geometry,this.phongAngle)}catch(n){this.booleanMeshSetAddress=0,this.geometry.userData.booleanOperationDidFail=!0,console.error(n)}this.booleanMatrixInvOld.copy(this.matrix).invert(),this.needsTransformForDownstream=!0,as(this),ss(this)}dispose(){super.dispose(),this.geometry.dispose()}};import{Light as LD}from"three";var Jv;(t=>{function i(e){return De.is(e)&&e instanceof LD}t.is=i})(Jv||(Jv={}));var ds=(i,t)=>class extends Cr(i,t){updateState_Light(r,o){this.updateState_Entity(r,o),r.color!==void 0&&(this.color=o.shared.color(r.color)),r.intensity!==void 0&&(this.intensity=r.intensity),r.depth!==void 0&&(this.shadow.camera.far=r.depth,this.shadow.needsUpdate=!0),r.shadows!==void 0&&(this.castShadow=r.shadows)}};var Ei=i=>i instanceof Mt,Cl=i=>i!==null&&i instanceof nr;var Al=i=>cd.is(i);import{Group as jD}from"three";import{AxesHelper as BD,Group as VD,Quaternion as zD,Vector3 as Nh}from"three";var GD=new Nh(1,1,1),e1=new Nh,FD=new Nh,t1=new zD,Ar=class extends bo(BD){constructor(e,r=15){super(r);this.object=e;this.dummy=new VD;this.object.updateMatrixWorld(),this.name=`EmptyObjectHelper: ${e.uuid}`,this.matrix=this.dummy.matrixWorld,this.matrixAutoUpdate=!1,this.object.isBone&&(this.visible=!1)}raycast(e,r){vo(this.object,Ar.geometryHelper,e,r,!1,this.dummy)}update(){}updateMatrix(){}updateMatrixWorld(e){this.object.matrixWorld.decompose(e1,t1,FD),this.matrix.compose(e1,t1,GD),super.updateMatrixWorld(e)}updateWorldMatrix(e,r){}};var Ni=class extends Cr(jD,Ar){constructor(t,e){super(),this.super_Entity(t,e),this.objectHelper.update()}updateState(t,e){this.updateState_Entity(t,e),"buffer"in t&&Object.keys(t).length===1&&e.scene.reloadSplats()}};import{Group as UD}from"three";var ps=class extends Cr(UD,Ar){constructor(e,r,o){super();this.super_Entity(e,r),this.context=o,this.objectHelper.update()}updateState(e,r){this.updateState_Entity(e,r)}};import{Color as E_,Fog as N_,HemisphereLight as D_}from"three";import{ShaderChunk as Ml}from"three";var kD=i=>`
|
|
2288
|
+
`)B=d;else if(V===" ")B=M;else{let q=this.createPath(E,n,I,N,e);q&&(B=q.offsetX,h.push(q.path))}if(U.replacements.length===1)y[v].push([I,N]),m[v].push(B);else{let q=U.replacements.map(W=>(o.glyphs.get(W).advanceWidth??0)*n),j=q.reduce((W,ee)=>W+=ee,0),F=q.map(W=>W/j),H=I;for(let W=0;W<F.length;W++){let ee=B*F[W];y[v].push([H,N]),m[v].push(ee),H+=ee}}g++}),f-=a}let x=[];for(let v=0,w=h.length;v<w;v++)x.push(...h[v].toShapes());return{shapes:x,charWidths:m,lineWidths:s,charCoords:y}}get isUserFont(){return this._isUserFont}get arrayBuffer(){return this._arrayBuffer}get ascender(){return this.font?.ascender??0}get descender(){return this.font?.descender??0}get familyName(){return this.font?.names.fontFamily??""}get subfamilyName(){return this.font?.names.fontSubfamily??""}get unitsPerEm(){return this.font?.unitsPerEm??1}getLineInitialOffsetX(t,e,r,o,n){return(r===3||r===2)&&o.indexOf(`
|
|
2289
|
+
`)>=0&&(t-=n),r===3?e*.5-t*.5:r===2?e-t:0}getLineInitialOffsetY(t,e,r,o,n){let a=e*t,s=Math.abs(this.ascender-this.descender)*o,l=t-s,c=-this.ascender*o-l/2;return n===3?-(r-a-c):n===2?-(r*.5-a*.5-c):c}createPath(t,e,r,o,n){let a=t.getPath(r,-o,n.fontSize,{kerning:!1,letterSpacing:n.letterSpacing});if(!a){console.error('THREE.Font: character "'+t+'" does not exists in font family '+this.familyName+".");return}let s=new Xu,l=(t.advanceWidth??1)*e;if(t)for(let c of a.commands){let u=s.currentPath?.currentPoint;if(!(u&&c.type!=="Z"&&u.x===c.x&&-u.y===c.y))switch(c.type){case"M":s.moveTo(c.x,-c.y);break;case"L":s.lineTo(c.x,-c.y);break;case"Q":s.quadraticCurveTo(c.x1,-c.y1,c.x,-c.y);break;case"C":s.bezierCurveTo(c.x1,-c.y1,c.x2,-c.y2,c.x,-c.y);break}}return s.subPaths.forEach(c=>{let u=jN(c.curves);u!==void 0&&c.currentPoint.distanceTo(u)>0&&c.lineTo(u.x,u.y)}),{offsetX:l,path:s}}getCharWidth(t,e){return this.font?.getAdvanceWidth(t,e.fontSize,{kerning:!0,letterSpacing:e.letterSpacing})??0}getTextWidth(t,e){return this.font?.getAdvanceWidth(t,e.fontSize,{kerning:!0,letterSpacing:e.letterSpacing})??0}computeSpaceWidthForLine(t,e,r,o){let n=this.getCharWidth(" ",r),a=t[e];if(a){let s=this.countSpaces(a.trimEnd());if(r.horizontalAlign===4&&e<t.length-1&&s){let l=typeof r.width=="string"?Number(o.getVariable(r.width)):r.width,c=this.getTextWidth(a,r);return(l-(c-s*n))/s}}return n}countSpaces(t){return(t.match(/ /g)||[]).length}};function jN(i){if(i.length){let t=i[0];if(t instanceof zN)return t.v1;if(t instanceof VN||t instanceof GN)return t.v0}}var dh=class{constructor(){this.objects=new Map;this.unreachable=new Set}getCached(t){return this.objects.get(t)}get size(){return this.objects.size}get(t,e,r){let o=this.objects.get(t);return o===void 0?(o=this.createObject(t,e,r),this.objects.set(t,o)):o.isShared=!0,o}forceDelete(t){let e=this.objects.get(t);e&&(this.disposeObject(e),this.objects.delete(t))}mutateIfUnique(t,e){let r=this.objects.get(t);if(r&&r.isShared!==!0)return this.objects.delete(t),this.objects.set(e,r),r}startGc(){this.unreachable=new Set(this.objects.keys())}markAsReachable(t,e){let r=this.objects.get(t);e===r?this.unreachable.delete(t):!1&&console.warn("Reachable but deleted",t)}endGc(){this.unreachable.forEach(t=>{this.disposeObject(this.objects.get(t)),this.objects.delete(t)}),this.unreachable.clear()}dispose(){this.objects.forEach(t=>{this.disposeObject(t)}),this.objects.clear()}},Sl=class extends dh{constructor(e){super();this.flatShading=e}disposeObject(e){e.dispose()}createObject(e,r,o){let n=po(e,r,this.flatShading,o);return n.computeBoundingSphere(),n}};var yv={markNeedsUpdateRendererDirty:()=>{}};import{MathUtils as Sv}from"three";var Qu=1e3,gv=512*Qu;function UN(i,t){let e=typeof i;return!!((t==="string"||t==="number")&&e===t||t==="boolean"&&(i==="true"||i==="false"||i===!0||i===!1)||t==="image"&&e==="string"&&i.startsWith("http"))}var xv="https://hooks.spline.design",kN=`${xv}/events?hashFile=`,Wre=`${xv}/`,Zu=class{constructor(t,e){this.id=t;this.userWebhook=e;this.result=void 0;this._connected=!1;this.emitter=Uo();this.reconnectWaitFor=Qu;this._onError=t=>{this.eventSource?.removeEventListener("message",this._onMessage),this.eventSource?.removeEventListener("error",this._onError),this.eventSource?.removeEventListener("open",this._onConnected),this._scheduleReconnect()};this._onConnected=t=>{clearTimeout(this.scheduledReconnectHandle),this.reconnectWaitFor=Qu,this._connected=!0};this._onDisconnected=()=>{clearTimeout(this.scheduledReconnectHandle),this.reconnectWaitFor=Qu,this._connected=!1};this._onMessage=t=>{let e=t.data,r;try{r=JSON.parse(e)}catch(o){console.error("Error parsing webhook message",o)}if(r){let o=!1;this.userWebhook.parametersSchemas.forEach(({data:n})=>{r[n.name]!==void 0&&UN(r[n.name],n.type)&&(this.result===void 0&&(this.result={}),this.result[n.name]=r[n.name],o=!0)}),o&&this.emitter.emit("message",{userWebhookId:this.id})}}}connect(){clearTimeout(this.scheduledReconnectHandle),this.userWebhook.url&&(this.eventSource=new EventSource(kN+this.userWebhook.url),this.eventSource.addEventListener("message",this._onMessage),this.eventSource.addEventListener("error",this._onError),this.eventSource.addEventListener("open",this._onConnected))}disconnect(){this.eventSource?.removeEventListener("message",this._onMessage),this.eventSource?.removeEventListener("error",this._onError),this.eventSource?.removeEventListener("open",this._onConnected),this.eventSource?.close(),this._onDisconnected(),clearTimeout(this.scheduledReconnectHandle)}_scheduleReconnect(){this.reconnectWaitFor*=2,this.reconnectWaitFor>gv&&(this.reconnectWaitFor=gv),clearTimeout(this.scheduledReconnectHandle),this.scheduledReconnectHandle=setTimeout(()=>{this.scheduledReconnectHandle=void 0,this.connect()},this.reconnectWaitFor)}update(t){this.userWebhook=t}dispose(){this._connected&&this.disconnect()}get connected(){return this._connected}on(t,e){this.emitter.on(t,e)}off(t,e){this.emitter.off(t,e)}getParametersKeys(){return this.userWebhook.parametersSchemas.map(t=>t.data.name)}getParameterValue(t){if(this.getParametersKeys().includes(t)){if(this.result)return this.result?.[t];for(let r of this.userWebhook.parametersSchemas)if(r.data.name===t)return Zc.defaultParameterValueByType(r.data.type)}}};var bv=[4186.01,4434.92,4698.63,4978.03,5274.04,5587.65,5919.91,6271.93,6644.88,7040,7458.62,7902.13],HN=["C","C#","D","D#","E","F","F#","G","G#","A","A#","B"],$o=[],ed=[];for(let i=1;i<=8;i++)for(let t=0;t<bv.length;t++){let e=bv[t];$o.push(e/Math.pow(2,8-i)),ed.push(HN[t]+i)}var Ju=[32,2e3],ph=$o.filter((i,t)=>$o[t]>Ju[0]&&$o[t]<Ju[1]),vv=ed.filter((i,t)=>$o[t]>Ju[0]&&$o[t]<Ju[1]);var td=class{static getFrequencies(t,e,r,o="frequency",n=-100,a=-30){r||(r=new Float32Array(t.frequencyBinCount),t.getFloatFrequencyData(r));let s=e/2,l=1/r.length*s,c,u,d;if(o==="music"||o==="voice"){let h=o==="voice"?ph:$o,m=Array(h.length).fill(n);for(let y=0;y<r.length;y++){let x=y*l,v=r[y];for(let w=h.length-1;w>=0;w--)if(x>h[w]){m[w]=Math.max(m[w],v);break}}c=m,u=o==="voice"?ph:$o,d=o==="voice"?vv:ed}else c=Array.from(r),u=c.map((h,m)=>l*m),d=u.map(h=>`${h.toFixed(2)} Hz`);let p=c.map(h=>Math.max(0,Math.min((h-n)/(a-n),1)));return{values:new Float32Array(p),frequencies:u,labels:d}}};var WN="gpt-4o-realtime-preview-2024-12-17",qN=()=>!1&&window.location.search.includes("api-dev")?"https://relayserver-dev.spline.design/":"https://relayserver.spline.design/";async function $N(i){try{return(await(await fetch(qN()+"session?uuidfile="+i)).json()).token}catch(t){console.error("Token generation error:",t)}}var fh=class{constructor(t){this.value=0;this.frequencies=new Float32Array(0);let e=new AudioContext;this.source=e.createMediaStreamSource(t),this.analyser=e.createAnalyser(),this.source.connect(this.analyser),this.analyser.fftSize=8192,this.analyser.smoothingTimeConstant=.1}getFrequencies(t=-100,e=-30){if(!this.analyser)throw new Error("Not connected, please call .connect() first");return td.getFrequencies(this.analyser,44100,void 0,"voice",t,e)}update(){let t=this.getFrequencies(),e=t.values.reduce((r,o)=>r+o,0)/t.values.length;this.value=e,this.frequencies=t.values}disconnect(){this.source.disconnect(),this.analyser.disconnect()}},wl=class{constructor(t,e,r){this.data=t;this.id=e;this.shared=r;this.emitter=Uo();this.rafId=0;this.voice=0;this.frequencies=new Float32Array([0]);this.events=[];this.isConnected=!1;this.isToolsAdded=!1;this.tools=[];this.onMessage=t=>{let e=JSON.parse(t.data);if(this.appendEvent(e),e.type==="session.created"&&this.onSessionCreated(),e.type==="response.done"&&e.response?.output){for(let r of e.response.output)if(r.type==="function_call")for(let[o,n]of this.tools)r.name===o.name&&(n(JSON.parse(r.arguments)),setTimeout(()=>{this.sendClientEvent({type:"response.create",response:{instructions:"notice the user about what you just did"}})}))}};this.onSessionCreated=()=>{this.isToolsAdded||this.registerTools()};this.onOpen=()=>{this.events=[],this.isConnected=!0,this.sendClientEvent({type:"response.create",response:{instructions:"Say hi"}})};this.animate=()=>{if(this.rafId=requestAnimationFrame(this.animate),this.isConnected&&this.analyser){this.analyser.update();let t=this.analyser.value,e=this.analyser.frequencies;this.voice=t,this.frequencies=e,this.emitter.emit("voice",{value:t,frequencies:e})}}}update(t){this.data=t}setColorByName(t,e){let r=this.shared.getColorByName(t);if(r){let{id:o}=r,{r:n,g:a,b:s}=bb.hexStringToRgb(e)??{r:0,g:0,b:0};this.shared.updateColor(o,{r:n/255,g:a/255,b:s/255})}}async connect(){if(this.isConnected)return;let t=await $N(this.data.integration.hash);this.pc=new RTCPeerConnection,this.audioElement=document.createElement("audio"),this.audioElement.autoplay=!0,this.pc.ontrack=l=>{let c=l.streams[0];this.audioElement.srcObject=c,this.analyser=new fh(c)};let e=await navigator.mediaDevices.getUserMedia({audio:!0});this.pc.addTrack(e.getTracks()[0]),this.dc=this.pc.createDataChannel("oai-events"),this.dc.addEventListener("message",this.onMessage),this.dc.addEventListener("open",this.onOpen);let r=await this.pc.createOffer();await this.pc.setLocalDescription(r);let s={type:"answer",sdp:await(await fetch(`https://api.openai.com/v1/realtime?model=${WN}`,{method:"POST",body:r.sdp,headers:{Authorization:`Bearer ${t}`,"Content-Type":"application/sdp"}})).text()};await this.pc.setRemoteDescription(s),this.animate()}appendEvent(t){this.events=[t,...this.events]}sendClientEvent(t){this.dc?(t.event_id=t.event_id||crypto.randomUUID(),this.dc.send(JSON.stringify(t)),this.appendEvent(t)):console.error("Failed to send message - no data channel available",t)}registerTools(){this.isToolsAdded=!0,this.registerTool({type:"function",name:"set_personality_color",description:"returns a color based on the voice personality of the ai assistant. This should be called by the voice assistant each time it is asks to speak differently. If a color cannot be associated to the personality, the color should be a neutral color.",parameters:{type:"object",properties:{color:{type:"string",description:"css hex color string, reflecting the personality"},personality:{type:"string",description:"the personality of the voice assistant"}},required:["color","personality"]}},({color:n})=>{this.setColorByName("Voice Assistant Color",n)});let t=this.shared.getVariablesNames().join(", ");this.registerTool({type:"function",name:"set_variable",description:"Sets a Spline variable value when asked by the user.",parameters:{type:"object",properties:{name:{type:"string",description:`The name of the variable that needs to be set. Here's a list of available variables: ${t}. It the variable does not exist, don't call the function and warn the user about it.`},value:{type:"string",description:"The new value for this variable, should always be a string even for number and boolean variables, assume that the value will be cast to the proper type afterwards."}},required:["name","value","type"]}},({name:n,value:a})=>{let s=this.shared.getVariableByName(n);if(s){let l=this.shared.getVariable(s.id),c;typeof l=="number"?c=parseFloat(a):typeof l=="boolean"?c=a.toLowerCase()==="true":c={textValue:a},this.shared.updateVariable(s.id,c)}});let e=this.shared.getColorNames().join(", ");this.registerTool({type:"function",name:"set_color",description:"Sets a Spline color asset value when asked by the user.",parameters:{type:"object",properties:{name:{type:"string",description:`The name of the color asset that needs to be set. Here's a list of available color assets: ${e}. It the color asset does not exist, don't call the function and warn the user about it.`},value:{type:"string",description:"css hex color string"}},required:["name","value"]}},({name:n,value:a})=>{this.setColorByName(n,a)});let r=this.shared.scene,o=[];r.traverseEntity(n=>{n.data.events.forEach(a=>{if(a.data.type==="AIAssistantTrigger"){let{description:s}=a.data;o.push(s)}})}),this.registerTool({type:"function",name:"trigger_event",description:"Trigger an event by name, here are the available events, please match what the user is asking for to one of these if it applies, otherwise don't call the function and warn the user.",parameters:{type:"object",properties:{description:{type:"string",description:`The name of the event that needs to be triggered. Here's a list of available events: ${JSON.stringify(o)}.`},direction:{type:"string",description:"default is forward, but can be forward or backward. Always set to forward unless the user ask to reverse or cancel the event, then set to backward."}},required:["description","direction"]}},({description:n,direction:a})=>{this.emitter.emit("trigger_event",{description:n,direction:a})}),this.sendClientEvent({type:"session.update",session:{tools:this.tools.map(([n])=>n)}})}registerTool(t,e){this.tools.push([t,e])}disconnect(){cancelAnimationFrame(this.rafId),this.analyser?.disconnect(),this.voice=0,this.isConnected=!1,this.isToolsAdded=!1,this.dc?.removeEventListener("message",this.onMessage),this.dc?.removeEventListener("open",this.onOpen),this.dc?.close(),this.pc?.getSenders().forEach(t=>{t.track&&t.track.stop()}),this.pc?.close(),this.pc=void 0}computeAnalysisForListenerEvent(t){if(t.analysis==="range"){let e=this.frequencies.slice(...t.analysisRange);return e.reduce((r,o)=>r+o,0)/e.length}return t.analysis==="single"?this.frequencies[t.analysisSingle]:this.voice}on(t,e){this.emitter.on(t,e)}off(t,e){this.emitter.off(t,e)}};function wv(i){return"variable_"+i}var hh=class extends Hu{constructor(e){super();this.shared=e}create(e){return new ns(e,this.shared)}},gn=class{constructor(t,e={},r=!0,o=!1){this.data=t;this.needsJitter=r;this.enableLocalStorageForPersistentVariables=o;this.geometryCache=new Sl(!0);this.geometryCache2=new Sl(!1);this.imageHolderCache=new hh(this);this.thisContext={scene:yv,shared:this};this.deletedMaterial=new hn(Tt.defaultTwoLayerData("phong"),this.thisContext,"");this.deletedImage=new fr(ou.emptyImage,this);this.deletedVideo=new fr(sa.defaultVideo,this);this.materials={};this.images={};this.uiBuffers={};this.videos={};this.colors={};this.audios={};this.particles={};this.fonts={};this.timelineAnimations={};this.variables={};this.userAPIs={};this.userWebhooks={};this.mouseProperty=null;this.raycastProperty=null;this.requestRender=()=>{this._requestRender&&this._requestRender()};if(e.images)for(let[n,a]of Object.entries(e.images))this.addImage(n,a);if(e.videos)for(let[n,a]of Object.entries(e.videos))this.addVideo(n,a);if(e.audios)for(let[n,a]of Object.entries(e.audios))this.addAudio(n,a);if(e.particles)for(let[n,a]of Object.entries(e.particles))this.addParticle(n,a);this.reset(t)}setRequestRender(t){this._requestRender=t}getImageLoadPromises(){return Object.values(this.images).map(t=>t.loadPromise)}setEntityOpContext(t){this.entityOpContext=t}reset(t,e=!1,r=!1){this.data=t,this.resetLib(t.lib);for(let{id:o,data:n}of t.variables)this.addVariableHolder(o,n),e&&this.updateVariableHolder(o,n);for(let[o,n]of Object.entries(t.userAPIs))this.addUserAPI(o,n);for(let[o,n]of Object.entries(t.userWebhooks))this.addUserWebhook(o,n);if(!r){for(let[o,n]of Object.entries(t.images))this.addImage(o,n);for(let[o,n]of Object.entries(t.videos))this.addVideo(o,n)}for(let[o,n]of Object.entries(t.colors))this.addColor(o,n);for(let[o,n]of Object.entries(t.materials))this.addMaterial(o,n);for(let[o,n]of Object.entries(t.audios))this.addAudio(o,n);for(let[o,n]of Object.entries(t.particles))this.addParticle(o,n);for(let[o,n]of Object.entries(t.fonts))this.addFont(o,n);for(let[o,n]of Object.entries(t.timelineAnimations??{}))this.addAnimation(o,n)}addMaterial(t,e){if(this.materials[t]){let r=this.materials[t];r.reset(e,this.thisContext),r.dispose()}else{let r=new hn(e,this.thisContext,t);this.materials[t]=r}}deleteMaterial(t){this.materials[t]&&(this.materials[t].nodeMaterialDispose(),delete this.materials[t])}getMaterial(t){let e=this.materials[t];return e}getMaterialOrDeletedPlaceholder(t){return this.materials[t]??this.deletedMaterial}material(t){return typeof t=="string"?this.getMaterialOrDeletedPlaceholder(t):t==null?(console.error("material is undefined or null"),this.deletedMaterial):new fn(t,this.thisContext)}getMaterials(){return this.materials}addImage(t,e){return this.images[t]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),this.images[t].updateSrc(e.data),!0):(this.images[t]=new fr(e,this),!1)}deleteImage(t){let e=this.images[t];e&&(e.dispose(),delete this.images[t])}getDefaultImage(){return this.images.image_0}getImage(t){return this.images[t]??this.deletedImage}image(t){return typeof t=="string"?this.getImage(t):this.imageHolderCache.load(t)}addUIBuffer(t,e){return this.uiBuffers[t]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),this.uiBuffers[t].updateSrc(e),!0):(this.uiBuffers[t]=new fr(e,this),!1)}uiBuffer(t){return this.uiBuffers[t]}addVideo(t,e){return this.videos[t]?(this.videos[t].updateSrc(e.data),!0):(this.videos[t]=new fr(e,this),!1)}deleteVideo(t){let e=this.videos[t];e&&(e.dispose(),delete this.videos[t])}getVideo(t){return this.videos[t]??this.deletedVideo}video(t){return typeof t=="string"?this.getVideo(t):this.imageHolderCache.load(t)}addColor(t,e){return this.colors[t]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),"a"in e?this.colors[t].setRGBA(e.r,e.g,e.b,e.a):this.colors[t].setRGBA(e.r,e.g,e.b,1),!0):("a"in e?this.colors[t]=new Ti(e.r,e.g,e.b,e.a):this.colors[t]=new Ti(e.r,e.g,e.b,1),!1)}updateColor(t,e){if(this.colors[t]){this.onColorOrImageUpdate&&this.onColorOrImageUpdate();let r=this.colors[t];return this.colors[t].r=e.r??r.r,this.colors[t].g=e.g??r.g,this.colors[t].b=e.b??r.b,this.colors[t].a=e.a??r.a,!0}return!1}deleteColor(t){this.colors[t]&&delete this.colors[t]}getColor(t){return this.colors[t]}getColorNames(){return Object.values(this.data.colors).map(t=>t.name)}getColorByName(t){for(let e in this.data.colors)if(this.data.colors[e].name===t)return{color:this.colors[e],id:e}}color(t){let e;if(typeof t=="string"){let r=this.getColor(t);r?e=r:(console.warn("Tried to create color layer params with a color key that does not exist in the assets manager"),e=new Ct(0,0,0,0))}else return"a"in t?new Ct(t.r,t.g,t.b,t.a):new Ct(t.r,t.g,t.b,1);return e}addAudio(t,e){this.audios[t]=e}getAudio(t){let e=this.audios[t];if(e instanceof mn)return e;{let r=new mn({src:e.data});return this.audios[t]=r,r}}addParticle(t,e){this.particles[t]=e}getParticle(t){return this.particles[t]}deleteParticle(t){this.particles[t]&&delete this.particles[t]}deleteAudio(t){let e=this.audios[t];e&&(e instanceof mn&&e.dispose(),delete this.audios[t])}addFont(t,e){this.fonts[t]=new Ku(e),this.fonts[t].loadingPromise.then(()=>this.requestRender())}getFont(t){return this.fonts[t]}deleteFont(t){this.fonts[t]&&delete this.fonts[t]}addAnimation(t,e){this.timelineAnimations[t]=e}getAnimation(t){return this.timelineAnimations[t]}deleteAniamtion(t){this.timelineAnimations[t]&&delete this.timelineAnimations[t]}dispose(){Object.keys(this.materials).forEach(e=>this.deleteMaterial(e)),this._requestRender=void 0,Object.values(this.audios).forEach(e=>{e instanceof mn&&e.dispose()}),this.audios={},this.particles={},this.geometryCache.dispose(),this.geometryCache2.dispose()}addVariableHolder(t,e){if(this.variables[t]===void 0){let r=e.value;if(this.enableLocalStorageForPersistentVariables&&e.persistent){let o=localStorage.getItem(wv(t));r=o!==null?JSON.parse(o):e.value}return this.variables[t]={value:r,locations:[],persistent:e.persistent},"dynamicVariableType"in e&&(this.variables[t].dynamicVariablePlayState="Playing",this.variables[t].dynamicVariableToggleIsForward=void 0),!0}return this.variables[t].value=e.value,!1}resetDynamicVariablePlayState(){for(let t in this.variables)this.variables[t].dynamicVariablePlayState!==void 0&&(this.variables[t].dynamicVariablePlayState="Playing",this.variables[t].dynamicVariableToggleIsForward=void 0)}updateVariableHolder(t,e){this.updateVariable(t,e.value)}updateVariable(t,e){if(this.variables[t]===void 0)return!1;this.variables[t].value=e,this.enableLocalStorageForPersistentVariables&&this.variables[t].persistent&&localStorage.setItem(wv(t),JSON.stringify(e));let r=e;for(;typeof r=="string";)r=this.variables[r].value;let o=this.entityOpContext.scene;for(let n=this.variables[t].locations.length-1;n>=0;n--){let a=this.variables[t].locations[n];if(a[0]==="material"){let s=a[1],l=r,c={scene:o,shared:this},u=a.slice(2);o.traverseMaterial(p=>{let f=p.root??p;f.uuid===s&&f.onVariableUpdate(u,l,c)});let d=this.materials[s];d&&d.onVariableUpdate(u,l,c)}else{let s=o.find(a[0]);if(s===void 0){this.variables[t].locations.splice(n,1);continue}if(a[1]!=="geometry"&&a[1]!=="particles"){for(let l=1;l<a.length-1;l++)s=s[a[l]];a[1]==="rotation"?s[a[a.length-1]]=r*Sv.DEG2RAD:s[a[a.length-1]]=r}if(s=o.find(a[0]),s.type==="ParticleEmitter"&&s.updateVariableState(r,a),De.is(s))if(a[1]==="position"||a[1]==="rotation"||a[1]==="scale")s.onVariableUpdate();else if(a[1]==="geometry"){let l=s;s.component&&(l=s.component);let c=l.dataPatched;l.chooseGeoemtryCache(this).forceDelete(c.geometry),l.createGeometryDelayed(this.entityOpContext),l.onVariableUpdate(!0),l.invalidateDownstreamBooleanData(),l.instances.forEach(u=>{let d=u.dataPatched;u.chooseGeoemtryCache(this).forceDelete(d.geometry),u.createGeometryDelayed(this.entityOpContext),u.onVariableUpdate(!0),u.invalidateDownstreamBooleanData()})}else a[1]==="morphTargetInfluences"&&s.updateMorphInfluences(a[2],r)}}return this.requestRender(),!0}deleteVariable(t){this.variables[t]&&delete this.variables[t]}getVariable(t,e){if(Array.isArray(t)){if(t[0]==="mouse")return this.mouseProperty?.[t[1]]??0;if(t[0]==="raycast")return this.raycastProperty?.[t[1]]??0;let r=this.entityOpContext.scene.find(t[0]);if(t[1]==="width"||t[1]==="height"||t[1]==="depth")return r.geometry.userData.parameters[t[1]];for(let o=1;o<t.length;o++)r=r[t[o]];return t[1]==="rotation"&&(r*=Sv.RAD2DEG),r}for(let r in this.variables){if(e===void 0)break;let o=this.variables[r],n=o.locations?.findIndex(a=>Ze.equal(a,e));n!==void 0&&n!==-1&&o.locations.splice(n,1)}if(typeof t=="string"){let r=t,o=t;do{if(o=r,this.variables[r]===void 0)break;let n=this.variables[r].value;e&&this.variables[o]!==void 0&&this.variables[o].locations.push(e),r=n}while(typeof r=="string");return r}else return t}getVariables(){return this.variables}getVariablesNames(){return this.data.variables.map(t=>t.data.name)}getVariableByName(t){for(let e of this.data.variables)if(e.data.name===t)return{variable:e.data,id:e.id}}getDynamicVariablePlayState(t){return this.variables[t]?.dynamicVariablePlayState}setDynamicVariablePlayState(t,e){this.variables[t]!==void 0&&(this.variables[t].dynamicVariablePlayState=e)}getDynamicVariableToggleIsForward(t){return this.variables[t]?.dynamicVariableToggleIsForward}setDynamicVariableToggleIsForward(t,e){this.variables[t]!==void 0&&(this.variables[t].dynamicVariableToggleIsForward=e)}resetLib(t){for(let[e,r]of Object.entries(t.images))this.addImage(e,r.asset);for(let[e,r]of Object.entries(t.audios))this.addAudio(e,r.asset);for(let[e,r]of Object.entries(t.particles))this.addParticle(e,r.asset);for(let[e,r]of Object.entries(t.colors))this.addColor(e,r.asset);for(let[e,r]of Object.entries(t.fonts))this.addFont(e,r.asset);for(let[e,r]of Object.entries(t.materials))this.addMaterial(e,r.asset);for(let[e,r]of Object.entries(t.videos))this.addVideo(e,r.asset);for(let[e,r]of Object.entries(t.variables))this.addVariableHolder(e,r.asset)}updateLibByOp(t,e){t.path[0]==="images"?t.path.length===1&&t.type===1?this.addImage(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteImage(t.id):t.path[0]==="videos"?t.path.length===1&&t.type===1?this.addVideo(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteVideo(t.id):t.path[0]==="audios"?t.path.length===1&&t.type===1?this.addAudio(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteAudio(t.id):t.path[0]==="particles"?t.path.length===1&&t.type===1?this.addParticle(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteParticle(t.id):t.path[0]==="colors"?t.path.length===1&&t.type===1?this.addColor(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteColor(t.id):t.path[0]==="materials"?t.path.length===1&&t.type===1?this.addMaterial(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteMaterial(t.id):t.path[0]==="fonts"?t.path.length===1&&t.type===1?this.addFont(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteFont(t.id):t.path[0]==="variables"?t.path.length===1&&t.type===1?this.addVariableHolder(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteVariable(t.id):t.path[0]==="components"&&e.updateByLibOp(t,this)}updateByOp(t,e,r){if(this.data=e,t.path[0]==="images")t.path.length===2&&t.type===0?t.props.data&&this.getImage(t.path[1]).updateSrc(t.props.data):t.path.length===1&&t.type===1?this.addImage(t.id,t.data):t.path.length===1&&t.type===2&&this.deleteImage(t.id);else if(t.path[0]==="videos")t.path.length===2&&t.type===0?t.props.data&&this.getVideo(t.path[1]).updateSrc(t.props.data):t.path.length===1&&t.type===1?this.addVideo(t.id,t.data):t.path.length===1&&t.type===2&&this.deleteVideo(t.id);else if(t.path[0]==="audios")t.path.length===2&&t.type===0?t.props.data&&this.addAudio(t.path[1],e.audios[t.path[1]]):t.path.length===1&&t.type===1?this.addAudio(t.id,t.data):t.path.length===1&&t.type===2&&this.deleteAudio(t.id);else if(t.path[0]==="particles")t.path.length===2&&t.type===0?t.props.data&&this.addParticle(t.path[1],e.particles[t.path[1]]):t.path.length===1&&t.type===1?this.addParticle(t.id,t.data):t.path.length===1&&t.type===2&&this.deleteParticle(t.id);else if(t.path[0]==="colors")t.path.length===2&&t.type===0?this.updateColor(t.path[1],t.props):t.path.length===1&&t.type===1?this.addColor(t.id,t.data):t.path.length===1&&t.type===2&&this.deleteColor(t.id);else if(t.path[0]==="materials")t.path.length===1&&t.type===1?this.addMaterial(t.id,t.data):t.path.length===1&&t.type===2?this.deleteMaterial(t.id):t.path.length>1&&this.getMaterial(t.path[1]).updateByOp(nt.drop(t,2),e.materials[t.path[1]],{shared:this,scene:r});else if(t.path[0]==="fonts")t.path.length===2&&t.type===0?this.updateFont(t.path[1],t,r):t.path.length===1&&t.type===1?this.addFont(t.id,t.data):t.path.length===1&&t.type===2&&this.deleteFont(t.id);else if(t.path[0]==="variables")t.path.length===2&&t.type===0?"value"in t.props?this.updateVariable(t.path[1],t.props.value):"persistent"in t.props&&(this.variables[t.path[1]].persistent=t.props.persistent):t.path.length===1&&t.type===4?this.addVariableHolder(t.id,t.data):t.path.length===1&&t.type===5&&this.deleteVariable(t.id);else if(t.path[0]==="userAPIs"){if(t.path.length===1&&t.type===1)this.addUserAPI(t.id,t.data);else if(t.path.length===1&&t.type===2)this.deleteUserAPI(t.id);else if(typeof t.path[1]=="string"){let o=e.userAPIs[t.path[1]];if(o){let n=t.type===0&&t.props.debounce===void 0,a=this.getUserAPI(t.path[1]);a instanceof wl?a.update(o):a?.update(o,this,n)}}}else if(t.path[0]==="userWebhooks"){if(t.path.length===1&&t.type===1)this.addUserWebhook(t.id,t.data);else if(t.path.length===1&&t.type===2)this.deleteUserWebhook(t.id);else if(typeof t.path[1]=="string"){let o=e.userWebhooks[t.path[1]];o&&this.getUserWebhook(t.path[1])?.update(o)}}else t.path[0]==="lib"&&this.updateLibByOp(nt.drop(t,1),r)}updateFont(t,e,r){if(e.props.url){let o=this.getFont(t),n={...this.data.fonts[t],url:e.props.url};o.update(n),o.loadingPromise.then(()=>this.requestRender()),r.updateFont(t,this)}}addUserAPI(t,e){return this.userAPIs[t]?(this.userAPIs[t].update(e,this),!0):this.openAIRealtime?.id===t?(this.openAIRealtime.update(e),!0):e.integration?.type==="VoiceAssistant"?(this.openAIRealtime=new wl(e,t,this),!1):(this.userAPIs[t]=new Nu(t,e,this),!1)}getUserAPI(t){return this.openAIRealtime?.id===t?this.openAIRealtime:this.userAPIs[t]}getUserAPIs(){return this.userAPIs}deleteUserAPI(t){let e=this.userAPIs[t];e&&(e.dispose(),delete this.userAPIs[t])}addUserWebhook(t,e){return this.userWebhooks[t]?(this.userWebhooks[t].update(e),!0):(this.userWebhooks[t]=new Zu(t,e),!1)}getUserWebhook(t){return this.userWebhooks[t]}getUserWebhooks(){return this.userWebhooks}deleteUserWebhook(t){let e=this.userWebhooks[t];e&&(e.dispose(),delete this.userWebhooks[t])}get scene(){return this.entityOpContext.scene}},Pv=new gn(Sr.emptyData());var nr=class extends Mt{updateByPatchedOp(e,r,o){if(super.updateByPatchedOp(e,r,o),Zg(e.path,["materials"])!==null&&e.type===0&&Array.isArray(this.material))for(let[n,a]of Object.entries(e.props)){let s=o.shared.material(a);this.material[Number(n)]=s}else if(Le(e.path,["material"])&&this.material instanceof ir)"material"in r&&typeof r.material!="string"&&this.material.updateByOp(nt.drop(e,1),r.material,o);else if(Le(e.path,["materials","*"])&&Array.isArray(this.material)){let n=e.path[1];if("materials"in r&&n<this.material.length){let a=r.materials[n];typeof a!="string"&&this.material[n].updateByOp(nt.drop(e,2),a,o)}}}get needsAO(){return this.material!==void 0?(Array.isArray(this.material)?this.material[0]:this.material).hasAO:!1}updateState(e,r){super.updateState(e,r),e.castShadow!==void 0&&(this.castShadow=e.castShadow),e.receiveShadow!==void 0&&(this.receiveShadow=e.receiveShadow);let o=this.dataPatched;this.dataPatched.type==="Mesh"&&!!this.dataPatched.geometry.shapeBlendNode&&this.layers.set(9);let a;this.dataPatched.type==="Mesh"&&this.dataPatched.geometry.type==="ShapeBlendGeometry"&&(a={resolutionLevel:this.dataPatched.geometry.resolutionLevel,useChildrenColors:this.dataPatched.geometry.useChildrenColors}),e.geometry?.type!=="NonParametricGeometry"&&"material"in e&&e.material!==void 0&&(this.disposeMaterial(),this.material=r.shared.material(e.material).getFlavor(o.flatShading,o.side,o.wireframe,a),r.scene.markNeedsUpdateRendererDirty()),(e.geometry?.type==="NonParametricGeometry"||"materials"in e)&&("materials"in e&&e.materials!==void 0?(this.disposeMaterial(),this.material=e.materials.map(l=>r.shared.material(l).getFlavor(o.flatShading,o.side,o.wireframe)),r.scene.markNeedsUpdateRendererDirty()):"material"in e&&e.material!==void 0&&(this.disposeMaterial(),this.material=[r.shared.material(e.material).getFlavor(o.flatShading,o.side,o.wireframe)],r.scene.markNeedsUpdateRendererDirty()));let s=this.data;if(s.geometry?.type!=="NonParametricGeometry"&&"materials"in s&&s.materials!==void 0&&(this.disposeMaterial(),this.material=r.shared.material(s.materials[0]).getFlavor(o.flatShading,o.side,o.wireframe)),e.flatShading!==void 0||e.wireframe!==void 0||e.side!==void 0)if(Array.isArray(this.material))for(let l=0;l<this.material.length;l++)this.material[l]=this.material[l].getFlavor(o.flatShading,o.side,o.wireframe);else this.material=this.material.getFlavor(o.flatShading,o.side,o.wireframe,a)}disposeMaterial(){this.material&&ql(this.material).forEach(e=>{e instanceof ir&&(e instanceof hn||e.nodeMaterialDispose())})}dispose(){this.disposeMaterial(),super.dispose()}};import{BufferGeometry as YN,Matrix4 as yh,Vector3 as Mv,Vector4 as gh}from"three";var Ov=new Mv,Tv=new gh,Cv=new gh,KN=new Mv,Av=new yh,et=class extends nr{constructor(e,r,o){super(e,r);this.data=r;this.isSkinnedMesh=!1;this.localGeometry=void 0,r.bindMode&&r.bindMatrix&&(this.bindMode=r.bindMode,this.bindMatrix=new yh().fromArray(r.bindMatrix),this.bindMatrixInverse=new yh)}chooseGeoemtryCache(e){return e.geometryCache}markGeometryAsReachable(e){this.geometryCreateDeleyed instanceof YN&&this.chooseGeoemtryCache(e).markAsReachable(this.dataPatched.geometry,this.geometryCreateDeleyed)}get geometry(){if(this.localGeometry!==void 0)return this.localGeometry;if(this.geometryCreateDeleyed instanceof gn){let e=this.geometryCreateDeleyed,r=this.chooseGeoemtryCache(e);this.geometryCreateDeleyed=r.get(this.dataPatched.geometry,e,this)}return this.geometryCreateDeleyed}set geometry(e){this.localGeometry=e}get is2DAndNoDepth(){let e=this.dataPatched.geometry;return js.is2DParametricMesh(e.type)&&e.depth===0}get is2DType(){return js.is2DParametricMesh(this.geometry.userData.type)}get isNonParametric(){return this.geometry.userData.type==="NonParametricGeometry"}updateByPatchedOp(e,r,o){super.updateByPatchedOp(e,r,o),Le(e.path,["geometry"])&&this.updateByPatchedOpGeometry(nt.drop(e,1),r.geometry,o)}removeInteractionGeometry(e){this.localGeometry?.dispose(),this.localGeometry=void 0}updateGeometryInteractions(e,r){this.invalidateDownstreamBooleanData();let o=this.data.geometry.type;if(o==="NonParametricGeometry"||o==="SubdivGeometry"){let n=e;if(this.localGeometry===void 0){let u={...this.data.geometry,...n};this.localGeometry=po(u,r,this.data.flatShading,this)}let a,s,l;n.scaleBaked?[a,s,l]=n.scaleBaked:{width:a,height:s,depth:l}=n;let c=this.localGeometry.userData;c.sxPrev!==void 0&&cl(this.localGeometry.attributes,a/c.sxPrev,s/c.syPrev,l/c.szPrev),c.sxPrev=a,c.syPrev=s,c.szPrev=l}else{let n={...this.data.geometry,...e};this.localGeometry?.dispose(),this.localGeometry=po(n,r,this.data.flatShading,this)}}refreshAttachedClonersInteractions(){for(let e of this.attachedSurfaceCloners)e.update()}refreshAttachedCloners(e){for(let r of this.attachedSurfaceCloners)e.scene.addPendingUpdateCloner(r.object)}refreshAttachedPaths(e){for(let r of this.attachedPaths)e.scene.addPendingCommand(()=>r.updateShape())}createGeometryDelayed(e){this.geometryCreateDeleyed=e.shared,this.refreshAttachedCloners(e),this.refreshAttachedPaths(e)}updateByPatchedOpGeometry(e,r,o){let n=!1;e.type===0&&e.path.length===0&&Object.keys(e.props).includes("scaleBaked")&&this.geometryCreateDeleyed instanceof xt&&this.chooseGeoemtryCache(o.shared).mutateIfUnique(this.geometryCreateDeleyed.data,r)===this.geometryCreateDeleyed&&(n=!0,this.geometryCreateDeleyed.mutateDirectlyScaleBaked(r,e.props.scaleBaked),this.refreshAttachedCloners(o),this.refreshAttachedPaths(o)),n||(o.scene?.markGeometryCacheDirty(),this.createGeometryDelayed(o)),this.resetBBoxNeedsUpdate(),this.invalidateDownstreamBooleanData()}updateGeometryOnStateUpdate(e,r){this.createGeometryDelayed(r)}updateState(e,r){e.geometry!==void 0&&this.updateGeometryOnStateUpdate(e.geometry,r);let o=e.morphTargetInfluences;if(o){this.updateMorphTargets(),this.geometry.morphTargetsRelative=!0;for(let{data:{name:n,value:a}}of o)this.updateMorphInfluences(n,r.shared.getVariable(a,[this.uuid,"morphTargetInfluences",n]))}super.updateState(e,r)}updateMorphInfluences(e,r){if(this.morphTargetDictionary===void 0)return;let o=this.morphTargetDictionary[e];o!==void 0&&(this.morphTargetInfluences[o]=r)}updateGeometryGroupsIfNeeded(){Array.isArray(this.material)&&this.geometry.groups.length===0&&this.geometry.addGroup(0,Math.max(this.geometry.getIndex()?.count??0,this.geometry.getAttribute("position").count),0)}updateEntityBoxSize(e,r){let o=this.geometry.userData.parameters;this.is2DType?e.set(0,0,o.depth*.5):this.isNonParametric?(e.setScalar(0),this.geometry.boundingSphere&&e.copy(this.geometry.boundingSphere.center),r.set(o.width,o.height,o.depth??0).multiplyScalar(.5)):o.centerOffset?e.fromArray(o.centerOffset):e.setScalar(0),r.set(o.width,o.height,o.depth??0).multiplyScalar(.5)}updateMatrixWorld(e){super.updateMatrixWorld(e),this.bindMode==="attached"?this.bindMatrixInverse.copy(this.matrixWorld).invert():this.bindMode==="detached"&&this.bindMatrixInverse.copy(this.bindMatrix).invert()}bind(e,r){this.skeleton=e,this.isSkinnedMesh=!0,r===void 0&&(this.updateMatrixWorld(!0),this.skeleton.calculateInverses(),r=this.matrixWorld),this.bindMatrix.copy(r),this.bindMatrixInverse.copy(r).invert()}pose(){this.skeleton.pose()}normalizeSkinWeights(e){let r=new gh,o=this.geometry.attributes.skinWeight;for(let n=0,a=o.count;n<a;n++){r.fromBufferAttribute(o,n);let s=1/r.manhattanLength();s!==1/0?r.multiplyScalar(s):r.set(1,0,0,0),o.setXYZW(n,r.x,r.y,r.z,r.w)}}boneTransform(e,r){let o=this.skeleton;if(o===void 0)return;let n=this.geometry;Tv.fromBufferAttribute(n.attributes.skinIndex,e),Cv.fromBufferAttribute(n.attributes.skinWeight,e),Ov.copy(r).applyMatrix4(this.bindMatrix),r.set(0,0,0);for(let a=0;a<4;a++){let s=Cv.getComponent(a);if(s!==0){let l=Tv.getComponent(a);Av.multiplyMatrices(o.bones[l].matrixWorld,o.boneInverses[l]),r.addScaledVector(KN.copy(Ov).applyMatrix4(Av),s)}}return r.applyMatrix4(this.bindMatrixInverse)}};function ZN(i){if(i.geometry.attributes.extrudeNormal||!i.geometry.attributes.position||!i.geometry.attributes.normal)return;let t=new Map,e=i.geometry.attributes,r=e.position.array,o=e.normal.array,n=new Float32Array(r.length);for(let a=0;a<r.length;a+=3){let s=`${r[a]}_${r[a+1]}_${r[a+2]}`,l=new bh(o[a],o[a+1],o[a+2]);t.has(s)?t.get(s)?.normals.push(l):t.set(s,{normals:[l],result:new bh})}t.forEach((a,s)=>{for(let l of a.normals)a.result.add(l);a.result.divideScalar(a.normals.length)});for(let a=0;a<r.length;a+=3){let s=`${r[a]}_${r[a+1]}_${r[a+2]}`,l=t.get(s)?.result;l&&(n[a]=l.x,n[a+1]=l.y,n[a+2]=l.z)}i.geometry.setAttribute("extrudeNormal",new Iv(n,3))}function JN(i){if(i.geometry.attributes.extrudeNormals||!i.geometry.attributes.position)return;let e=i.geometry.attributes.position.array,r=new Float32Array(e.length),o=new bh;for(let n=0;n<e.length;n+=3)o.set(e[n],e[n+1],e[n+2]).normalize(),r[n]=o.x,r[n+1]=o.y,r[n+2]=o.z;i.geometry.setAttribute("extrudeNormal",new Iv(r,3))}function ss(i){if(Array.isArray(i.material)){for(let t of i.material)if(t.getLayersOfType("outline").length===0)return}else if(!(i.material instanceof ir)||i.material.getLayersOfType("outline").length===0)return;i instanceof et&&i.is2DAndNoDepth?JN(i):ZN(i)}function ls(i){if(!i.geometry.attributes.position)return;let e=i.geometry.attributes.position.array,r=new Float32Array(e.length),o=parseInt(i.uuid.replace(/\D/g,"")),n=[xh.seededRandom(o),xh.seededRandom(o+1e4),xh.seededRandom(o+2e4)];for(let a=0;a<e.length;a++)r[a]=n[a%3];i.geometry.setAttribute("randomColor",new QN(r,3))}var xo=new eD,Pl=new rD;function Nv(i){let t=!1;return i.scene.objects.traverse((e,r)=>{r.type==="Mesh"&&r.geometry.type==="SubdivGeometry"&&(t=!0)}),t}var xn=class extends et{constructor(e,r,o){super(e,r,o);this.data=r;this.hiddenMatrixOld=new tD;this.smoothShading=!0;this.skipReactionUpdate=!1}chooseGeoemtryCache(e){return this.dataPatched.flatShading?e.geometryCache:e.geometryCache2}get subdivPointerNew(){return this.localGeometry!==void 0?this.subdivPointer:this.geometry.ensureSubdivPointer()}get originalGeometryNew(){return this.localGeometry!==void 0?this.originalGeometry:this.geometry.originalGeometry}get phongAngle(){return this.data.geometry.phongAngle??45}updateEntityBoxSize(e,r){let o=this.geometry.userData.parameters;e.copy(this.originalGeometryNew.boundingSphere.center),r.set(o.width,o.height,o.depth??0).multiplyScalar(.5)}createGeometryByControls(e){if(this.skipReactionUpdate===!0)return;let r=this.localGeometry?.uuid,{originalGeometry:o,subdividedGeometry:n,subdivPointer:a}=xt.build(e,this.subdivPointer,this.smoothShading,this.hasNonUniformScale?this.shearScale:void 0);this.subdivPointer=a,o!==void 0&&(this.originalGeometry?.dispose(),this.originalGeometry=o),n!==void 0&&(this.subdividedGeometry?.dispose(),this.subdividedGeometry=n??void 0),this.localGeometry=this.subdividedGeometry??this.originalGeometry,ss(this),ls(this),this.calcBoundingBox(),r&&(this.localGeometry.uuid=r)}updateState(e,r){if(super.updateState(e,r),e.flatShading!==void 0){let o=this.material;this.material=Array.isArray(o)?o.map(n=>n.getFlavor(!1,n.side,n.wireframe)):o.getFlavor(!1,o.side,o.wireframe),this.smoothShading=!e.flatShading,this.createGeometryDelayed(r)}}updateMesh(e=!1){xt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0),this.subdividedGeometry&&xt.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0)}updateTopology(){this.originalGeometry.dispose(),this.originalGeometry=xt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=xt.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1)),this.localGeometry=this.subdividedGeometry??this.originalGeometry}raycast(e,r){let o=this.localGeometry;this.localGeometry=this.originalGeometryNew,Mt.prototype.raycast.call(this,e,r),this.localGeometry=o}activateSVDCompensation(){!this.hasNonUniformScale||(this.matrix.copy(this.matrixWorldRigid),this.hiddenMatrixOld.copy(this.hiddenMatrix),this.hiddenMatrix.copy(this.parent.matrixWorld).invert())}deactivateSVDCompensation(){!this.hasNonUniformScale||(this.updateMatrix(),this.hasNonUniformScale=void 0,this.hiddenMatrix.copy(this.hiddenMatrixOld))}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new Ev,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let r=e.attributes.position,o=e.boundingSphere.center;xo.setFromBufferAttribute(r),xo.getCenter(o),e.boundingSphere.radius=o.distanceTo(xo.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),xo.getSize(Pl),this.hasNonUniformScale&&Pl.divide(this.scale);let n={width:Pl.x,height:Pl.y,depth:Pl.z};return this.geometry.userData.parameters=n,n}updateBoundingSphere(e){let r=this.originalGeometry;xo.min.set(e[0],e[2],e[4]),xo.max.set(e[1],e[3],e[5]),this.hasNonUniformScale&&(xo.min.applyMatrix4(this.shearScaleInv),xo.max.applyMatrix4(this.shearScaleInv)),r.boundingSphere===null&&(r.boundingSphere=new Ev);let o=r.boundingSphere.center;xo.getCenter(o),r.boundingSphere.radius=o.distanceTo(xo.max)}freeSubdivPointer(){this.subdivPointer&&(xt.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0),this.localGeometry=void 0,this.originalGeometry?.dispose(),this.subdividedGeometry?.dispose()}dispose(){super.dispose(),this.freeSubdivPointer()}updateByPatchedOpGeometry(e,r,o){super.updateByPatchedOpGeometry(e,r,o),this.localGeometry&&this.createGeometryByControls(r)}};import{Triangle as oD,Vector3 as vn}from"three";var Dv=-1,iD=1,_v={x:[1,0,0],"-x":[-1,0,0],y:[0,1,0],"-y":[0,-1,0],z:[0,0,1],"-z":[0,0,-1]},Rv={polygon_center:0,edge:1,vertex:2},Ol=(i,t)=>(e,r)=>!t||e===0||i===0?0:i*r/100,Ce=(i,t)=>{let e=Math.abs(t),r=e*-1;return(i-Dv)*(e-r)/(iD-Dv)+r},nD=new vn,rd=new vn,aD=new vn,sD=new vn;function cs(i,t){let e=aD.fromArray(i),r=sD.fromArray(t);rd.copy(r).sub(e);let o=rd.length();return rd.normalize().multiplyScalar(o*.5),nD.copy(e).add(rd).toArray()}var Tr=new oD,od=new vn,id=new vn,bn=new vn;function Lv(i){let t=[];for(let e=0;e<=i.index.count;e++)if(od.fromArray(i.index.array,e*3),Tr.setFromAttributeAndIndices(i.attributes.position,od.x,od.y,od.z),Tr.getNormal(id),Tr.getMidpoint(bn),!(isNaN(bn.x)||isNaN(bn.y)||isNaN(bn.z))){let{a:r,b:o,c:n}=Tr,a=r.toArray(),s=o.toArray(),l=n.toArray(),c=r.distanceTo(o),u=o.distanceTo(n),d=n.distanceTo(r),p=cs(a,s),f=cs(s,l),h=cs(l,a),m=[c,u,d],y=Math.max(...m),x=m.filter(O=>Math.round(O)===Math.round(y)).length>1,v=[],w=Tr.getMidpoint(bn).toArray();y===c&&!x&&(v=[f,h,h],w=p),y===u&&!x&&(v=[p,h,h],w=f),y===d&&!x&&(v=[p,f,f],w=h),x&&(v=[p,f,h]),t.push({vertices:[a,s,l],faceCenters:v,midpoint:w,norm:Tr.getNormal(id).toArray()})}return t}function Bv(i){let t=[],{position:e}=i.attributes;for(let r=0;r<e.count;r++){Tr.setFromAttributeAndIndices(e,r*3,r*3+1,r*3+2),Tr.getNormal(id),Tr.getMidpoint(bn);let o=Tr.a.toArray(),n=Tr.b.toArray(),a=Tr.c.toArray();t.push({vertices:[o,n,a],faceCenters:[cs(o,n),cs(n,a),cs(a,o)],midpoint:bn.toArray(),norm:id.toArray()})}return t}var lD=4,cD=.5,vh=i=>.5*(1-Math.cos(i*Math.PI)),Sh=class{constructor(){this.perlin=new Array(4095+1)}noise(t,e=0,r=0){if(this.perlin==null){this.perlin=new Array(4095+1);for(let x=0;x<4095+1;x++)this.perlin[x]=Math.random()}t<0&&(t=-t),e<0&&(e=-e),r<0&&(r=-r);let o=Math.floor(t),n=Math.floor(e),a=Math.floor(r),s=t-o,l=e-n,c=r-a,u,d,p=0,f=.5,h,m,y;for(let x=0;x<lD;x++){let v=o+(n<<4)+(a<<8);u=vh(s),d=vh(l),h=this.perlin[v&4095],h+=u*(this.perlin[v+1&4095]-h),m=this.perlin[v+16&4095],m+=u*(this.perlin[v+16+1&4095]-m),h+=d*(m-h),v+=256,m=this.perlin[v&4095],m+=u*(this.perlin[v+1&4095]-m),y=this.perlin[v+16&4095],y+=u*(this.perlin[v+16+1&4095]-y),m+=d*(y-m),h+=vh(c)*(m-h),p+=h*f,f*=cD,o<<=1,s*=2,n<<=1,l*=2,a<<=1,c*=2,s>=1&&(o++,s--),l>=1&&(n++,l--),c>=1&&(a++,c--)}return p}noiseSeed(t){let e=(()=>{let a,s;return{setSeed(l){s=a=(l??Math.random()*4294967296)>>>0},getSeed(){return a},rand(){return s=(1664525*s+1013904223)%4294967296,s/4294967296}}})();e.setSeed(t),this.perlin=new Array(4095+1);for(let r=0;r<4095+1;r++)this.perlin[r]=e.rand()}},Vv=Sh;import{Vector3 as uD,Matrix4 as dD,Ray as pD}from"three";var zv=new uD,Gv=new dD,Fv=new pD;function jv(i){let t=!1;return i.scene.objects.traverse((e,r)=>{r.type==="Mesh"&&(r.geometry.type==="TextGeometry"||r.geometry.type==="InputGeometry")&&(t=!0)}),t}var Mi=class extends et{constructor(e,r,o){super(e,r,o);this.data=r}get textGeometry(){return this.geometry}get charWidths(){return this.textGeometry.charWidths}get charCoords(){return this.textGeometry.charCoords}get wrappedText(){return this.textGeometry.wrappedText}get font(){return this.textGeometry.font}get initialOffsetY(){let e=this.dataPatched;return this.font?.getLineInitialOffsetY(this.lineHeight,this.wrappedText.length,e.geometry.height,this.fontScale,e.geometry.verticalAlign)??0}get fontScale(){let e=this.dataPatched;return this.font?e.geometry.fontSize/this.font.unitsPerEm:1}get AD(){return Math.abs(this.ascender-this.descender)}get ascender(){return(this.font?.ascender??1)*this.fontScale}get descender(){return(this.font?.descender??1)*this.fontScale}get lineHeight(){let e=this.dataPatched;return e.geometry.fontSize*e.geometry.lineHeight}raycast(e,r){let{matrixWorld:o}=this;if(!(isNaN(e.ray.origin.x)||this.scale.x===0||this.scale.y===0||this.scale.z===0)&&(Gv.copy(o).invert(),Fv.copy(e.ray).applyMatrix4(Gv),Fv.intersectBox(this.singleBBox,zv))){let n=zv.applyMatrix4(o),a=e.ray.origin.distanceTo(n);r.push({distance:a,point:n.clone(),object:this})}}};var Zt=1e-4,bo,Wv,qv,$v,kv=new hr,Hv=new hr;Ru.then(i=>{bo=i,Wv=[bo.get_face_center,bo.get_edge_midpoint,bo.get_vertex_position],qv=[bo.get_face_normal,bo.get_edge_normal,bo.get_vertex_normal],$v=[bo.face_count,bo.edge_count,bo.vertex_count]});var hD=new Sn,mD=new Sn,Ii=new hr,nd=new hr,Tl=new hr,Ph=new hr,yD=new hr,gD=new hr;var Oh=class{constructor(t,e){this.data=t;this.is3D=e;this.perlin=new Vv;t.noiseType==="perlin"?(this.perlin.noiseSeed(t.seed),e?this.noise=(o,n,a)=>this.perlin.noise(o,n,a):this.noise=o=>this.perlin.noise(o)):e?this.noise=sx((0,ad.default)(t.seed)):this.noise=ax((0,ad.default)(t.seed))}},Ei=class extends xa(fD){constructor(e,r){super();this.parameters=r;this.objectForSample=void 0;this._pendingMediaLoad=!1;this.random=null;this.object=e}resetOnMove(){this.removeFromParent(),this.parent=null}expandClones(e){if(this.parent===null)this.updateState(this.parameters,e);else for(let r of this.children)r instanceof Br&&r.expand()}invalidateTransform(e){this.matrixWorldNeedsUpdate=!0,this.traverse(r=>{r instanceof Br&&r.object===e&&(r.matrixWorldNeedsUpdate=!0)})}onObjUpdateMatrix(){this.parameters.type!=="toObject"&&(this.matrixWorldNeedsUpdate=!0)}update(){switch(this._updateCount(),this.parameters.type){case"radial":this._updateRadial(this.parameters);break;case"linear":this._updateLinear(this.parameters);break;case"grid":this._updateGrid(this.parameters);break;case"toObject":this._updateToObject(this.parameters)}for(let e of this.children)e.updateMatrix(),e.hasNonUniformScale&&(e.updateMatrixWorld(),e.updateMatrixWorldSVD())}_updateCount(e){let r;if(e!==void 0?r=e:r=this.parameters.type==="grid"?Math.round(this.parameters.grid.count[0])*Math.round(this.parameters.grid.count[1])*Math.round(this.parameters.grid.count[2]):this.parameters.count,this.parameters.type==="toObject"){if(!this.parameters.toObject.object)r=0;else if(e===void 0&&this.parameters.toObject.spreadType!=="random")return}if(this.parameters.type==="toObject"&&this.objectForSample){let o=this.children;if(o.length===r)return;if(o.length<r)for(let n=0,a=r-o.length;n<a;++n){let s=new Br(this.object);s.expand(),this.add(s)}else for(let n=0,a=o.length-r;n<a;++n)this.remove(o[n])}else{if(this.children.length===r)return;if(this.children.length<r)for(let o=0,n=r-this.children.length;o<n;++o){let a=new Br(this.object);a.expand(),this.add(a)}else for(let o=0,n=this.children.length-r;o<n;++o)this.remove(this.children[o])}}getRandom(e,r=!1){return(this.random===null||this.random.data.seed!==e.seed||this.random.is3D!==r)&&(this.random=new Oh(e,r)),this.random}_updateRadial(e){let r=e.radial,o=r.start*Uv.DEG2RAD,n=r.end*Uv.DEG2RAD,a=o-n,s=new wh(r.rotation[0],r.rotation[1],r.rotation[2]),l;switch(r.axis){case"z":l=new hr(0,0,1);break;case"y":l=new hr(0,1,0);break;default:case"x":l=new hr(1,0,0);break}let c=e.randomnessObject??oo.defaultData([1,1,1]).randomnessObject,u=this.getRandom(c),d=Ol(c.strength,this.parameters.randomness);for(let[p,f]of this.children.entries()){let h=p*(c.freqScale/10)+c.movement,m=u.noise(h,h,h),y=p+1;f.scale.x=r.scale[0]+d(y,Ce(m,c.scale[0]))||Zt,f.scale.y=r.scale[1]+d(y,Ce(m,c.scale[1]))||Zt,f.scale.z=r.scale[2]+d(y,Ce(m,c.scale[2]))||Zt,f.position.setScalar(0);let x=a/e.count*p-o;switch(r.axis){case"x":f.rotation.set(0,x,0);break;case"y":f.rotation.set(0,0,x);break;case"z":f.rotation.set(x,0,0);break}f.translateOnAxis(l,r.radius),f.position.x+=r.position[0]+d(y,Ce(m,c.position[0])),f.position.y+=r.position[1]+d(y,Ce(m,c.position[1])),f.position.z+=r.position[2]+d(y,Ce(m,c.position[2]));let v=d(y,Ce(m,c.rotation[0])),w=d(y,Ce(m,c.rotation[1])),O=d(y,Ce(m,c.rotation[2]));r.alignment===!0?(f.rotation.x+=s.x+v,f.rotation.y+=s.y+w,f.rotation.z+=s.z+O):f.rotation.set(s.x+v,s.y+w,s.z+O)}}_updateLinear(e){if(e.type!=="linear")throw new Error;let r=e.linear,o=new wh(r.rotation[0],r.rotation[1],r.rotation[2]),n=e.randomnessObject??oo.defaultData([1,1,1]).randomnessObject,a=this.getRandom(n),s=Ol(n.strength,this.parameters.randomness);for(let[l,c]of this.children.entries()){let u=l*(n.freqScale/10)+n.movement,d=a.noise(u,u,u),p=l+1,f=s(p,Ce(d,n.rotation[0])),h=s(p,Ce(d,n.rotation[1])),m=s(p,Ce(d,n.rotation[2]));c.scale.x=1+(r.scale[0]-1)*l+s(p,Ce(d,n.scale[0]))||Zt,c.scale.y=1+(r.scale[1]-1)*l+s(p,Ce(d,n.scale[1]))||Zt,c.scale.z=1+(r.scale[2]-1)*l+s(p,Ce(d,n.scale[2]))||Zt,c.rotation.x=o.x*l+f,c.rotation.y=o.y*l+h,c.rotation.z=o.z*l+m,c.position.x=r.position[0]*l+s(p,Ce(d,n.position[0])),c.position.y=r.position[1]*l+s(p,Ce(d,n.position[1])),c.position.z=r.position[2]*l+s(p,Ce(d,n.position[2]))}}_updateGrid(e){let r=0,o=e.grid,n=e.randomnessObject??oo.defaultData([1,1,1]).randomnessObject,a=this.getRandom(n,!0),s=Ol(n.strength,this.parameters.randomness);if(o.useCenter===!0){let l={x:o.count[0]%2===0?2:1,y:o.count[1]%2===0?2:1,z:o.count[2]%2===0?2:1},c=new hr(o.size[0]*(o.count[0]-l.x)*.5,o.size[1]*(o.count[1]-l.y)*.5,o.size[2]*(o.count[2]-l.z)*.5);for(let u=0;u<o.count[0];u++)for(let d=0;d<o.count[1];d++)for(let p=0;p<o.count[2];p++){let f=a.noise((u+1)*(n.freqScale/10)+n.movement,(d+1)*(n.freqScale/10)+n.movement,(p+1)*(n.freqScale/10)+n.movement),h=this.children[r++];h.scale.x=1+s(r,Ce(f,n.scale[0]))||Zt,h.scale.y=1+s(r,Ce(f,n.scale[1]))||Zt,h.scale.z=1+s(r,Ce(f,n.scale[2]))||Zt;let m=s(r,Ce(f,n.rotation[0])),y=s(r,Ce(f,n.rotation[1])),x=s(r,Ce(f,n.rotation[2]));h.rotation.set(m,y,x),h.position.x=o.size[0]*u-c.x+s(r,Ce(f,n.position[0])),h.position.y=o.size[1]*d-c.y+s(r,Ce(f,n.position[1])),h.position.z=o.size[2]*p-c.z+s(r,Ce(f,n.position[2]))}}else for(let l=0;l<o.count[0];l++)for(let c=0;c<o.count[1];c++)for(let u=0;u<o.count[2];u++){let d=a.noise((l+1)*(n.freqScale/10)+n.movement,(c+1)*(n.freqScale/10)+n.movement,(u+1)*(n.freqScale/10)+n.movement),p=this.children[r++];p.scale.x=1+s(r,Ce(d,n.scale[0]))||Zt,p.scale.y=1+s(r,Ce(d,n.scale[1]))||Zt,p.scale.z=1+s(r,Ce(d,n.scale[2]))||Zt;let f=s(r,Ce(d,n.rotation[0])),h=s(r,Ce(d,n.rotation[1])),m=s(r,Ce(d,n.rotation[2]));p.rotation.set(f,h,m),p.position.x=o.size[0]*l+s(r,Ce(d,n.position[0])),p.position.y=-o.size[1]*c+s(r,Ce(d,n.position[1])),p.position.z=-o.size[2]*u+s(r,Ce(d,n.position[2]))}}_updateToObject(e){if(e.type!=="toObject")throw new Error;let{toObject:r}=e,o=new wh(r.rotation[0],r.rotation[1],r.rotation[2]),n=e.randomnessObject??oo.defaultData([1,1,1]).randomnessObject,a=this.getRandom(n),s=Ol(n.strength,this.parameters.randomness);if(!r.object){for(let[,p]of this.children.entries())p.position.set(0,0,0),p.scale.setScalar(1),p.rotation.set(0,0,0);this.objectForSample=void 0;return}if(!this.objectForSample)return;if(this.objectForSample instanceof Mi)if(!this.objectForSample.font?.isLoaded||this.objectForSample.geometry.attributes.position===void 0){this._pendingMediaLoad=!0;return}else this._pendingMediaLoad=!1;if(this.objectForSample.geometry===void 0&&this.objectForSample.isAncestorOf(this.object.uuid)){console.warn(`Oh no! The object "${this.object.name}" (${this.object.uuid}) seem to be a child/descendant of the object it's being cloned to. Please re-parent it so that they are siblings instead.`);return}let l=this.getSubdivData();if(l.length>0){let p=Math.round(l.length*r.count/100);this._updateCount(p)}else{let p=this.objectForSample.geometry.getAttribute("position");if(!p||isNaN(p.count)||p.count===0){console.warn(`Oh no! The object "${this.object.name}" (${this.object.uuid}) cannot be cloned on the surface of "${this.objectForSample.name}" (${this.objectForSample.uuid}) because the latter does not have a valid geometry.`);return}}this.objectForSample.updateMatrixWorld();let c=new lu(this.objectForSample).build(),u=_v[r.axis],d=this.children;c.setRandomGenerator((0,ad.default)(this.object.uuid+r.seed));for(let[p,f]of d.entries()){let h=p*(n.freqScale/10)+n.movement,m=a.noise(h,h,h),y=p+1,x=s(y,Ce(m,n.rotation[0])),v=s(y,Ce(m,n.rotation[1])),w=s(y,Ce(m,n.rotation[2]));r.spreadType==="random"?c.sample(Tl,Ph):(l.length&&(Tl.fromArray(l[p].pos),Ph.fromArray(l[p].norm)),this.objectForSample instanceof xn&&Tl.applyMatrix4(hD.copy(this.objectForSample.matrixWorld).invert())),Tl.applyMatrix4(this.object.hiddenMatrix.clone().invert()),f.position.copy(Tl),Ii.fromArray(u);let O=r.align==="normal"?Ph:this.object.getWorldDirection(gD),S=nd.fromArray(r.position);nd.x+=s(y,Ce(m,n.position[0])),nd.y+=s(y,Ce(m,n.position[1])),nd.z+=s(y,Ce(m,n.position[2]));let T=Math.acos(O.dot(Ii)),M=yD.crossVectors(Ii,O).normalize(),g=mD.makeRotationAxis(M,T),D=O.clone().cross(this.object.up).normalize(),E=D.clone().cross(O).normalize(),I=new Sn().makeBasis(D,O,E),N=new hr(Ii.y,Ii.z,Ii.x).normalize(),_=N.clone().cross(Ii).normalize(),R=new Sn().makeBasis(N,Ii,_).invert(),V=new Sn().multiplyMatrices(I,R);f.rotation.setFromRotationMatrix(V),S.applyMatrix4(g),f.position.add(S),f.rotation.x=f.rotation.x+o.x+x,f.rotation.y=f.rotation.y+o.y+v,f.rotation.z=f.rotation.z+o.z+w,f.scale.setScalar(1),f.scale.x=f.scale.x+r.scale[0]+s(y,Ce(m,n.scale[0]))||Zt,f.scale.y=f.scale.y+r.scale[1]+s(y,Ce(m,n.scale[1]))||Zt,f.scale.z=f.scale.z+r.scale[2]+s(y,Ce(m,n.scale[2]))||Zt,f.scale.multiply(this.object.scale),f.hiddenMatrix=this.object.hiddenMatrix}}getSubdivData(){if(!this.objectForSample)return[];let e=this.parameters.toObject.spreadType,r=new Map,o=(a,s)=>{let l=Math.round(a[0]*1e4)+"_"+Math.round(a[1]*1e4)+"_"+Math.round(a[2]*1e4),c=r.get(l);c?(c.pos[0]+=a[0],c.pos[1]+=a[1],c.pos[2]+=a[2],c.norm[0]+=s[0],c.norm[1]+=s[1],c.norm[2]+=s[2],c.count+=1):r.set(l,{pos:[...a],norm:[...s],count:1})};if(e==="random")return[];if(this.objectForSample instanceof xn){let a=this.objectForSample,s=Rv[e],l=$v[s],c=Wv[s],u=qv[s],d=l(a.subdivPointerNew);for(let p=0;p<=d-1;p++){let f=c(a.subdivPointerNew,p),h=u(a.subdivPointerNew,p);kv.fromArray(f).applyMatrix4(a.matrixWorld),Hv.fromArray(h),o(kv.toArray(),Hv.toArray())}}else(this.objectForSample.geometry.index?Lv(this.objectForSample.geometry):Bv(this.objectForSample.geometry)).forEach((s,l)=>{e==="polygon_center"&&o(s.midpoint,s.norm),e==="vertex"&&(o(s.vertices[0],s.norm),o(s.vertices[1],s.norm),o(s.vertices[2],s.norm)),e==="edge"&&(o(s.faceCenters[0],s.norm),o(s.faceCenters[1],s.norm),o(s.faceCenters[2],s.norm))});let n=Array.from(r.values());for(let a of n)a.pos[0]/=a.count,a.pos[1]/=a.count,a.pos[2]/=a.count,a.norm[0]/=a.count,a.norm[1]/=a.count,a.norm[2]/=a.count;return n}updateState(e,r){if(this.parameters=Eo(e),this.parameters.type!=="toObject")(this.parent===null||this.parent!==this.object)&&(this.removeFromParent(),this.object.parent?.add(this),this.matrix=this.object.matrix,this.hiddenMatrix=this.object.hiddenMatrix,this.matrixWorldNeedsUpdate=!0,this.matrixAutoUpdate=!1);else if(this.parent===null||this.parent.uuid!==this.parameters.toObject.object){this.removeFromParent();let o=r.find(this.parameters.toObject.object);o instanceof Mt?this.objectForSample=o:this.objectForSample=void 0,this.matrix=new Sn,this.hiddenMatrix=new Sn,this.matrixWorldNeedsUpdate=!0,this.matrixAutoUpdate=!1,o&&o.add(this)}this.update()}get pendingMediaLoad(){return this._pendingMediaLoad}};import{Scene as ZR,Vector3 as JR,Matrix4 as eL,Box3 as tL,MeshBasicMaterial as rL,Skeleton as oL}from"three";import{Camera as ID,OrthographicCamera as ED,PerspectiveCamera as ND,Vector3 as Xr,Object3D as Qv,Quaternion as DD,Matrix4 as _D}from"three";import{Camera as PD,LineSegments as OD,BufferGeometry as TD,LineBasicMaterial as CD,Color as Ch,Vector3 as AD,Float32BufferAttribute as Yv}from"three";import{BoxGeometry as xD}from"three";var vo=i=>{var t;return t=class extends i{},t.geometryHelper=new xD(30,30,30),t};import{Ray as bD,Sphere as vD,Matrix4 as SD,Vector3 as Xo}from"three";var sd=new bD,Th=new vD,Xv=new SD,So=(i,t,e,r,o=!1,n=i)=>{let a=t,s=n.matrixWorld;if(a.boundingSphere===null&&a.computeBoundingSphere(),Th.copy(a.boundingSphere),Th.applyMatrix4(s),e.ray.intersectsSphere(Th)===!1||(Xv.copy(s).invert(),sd.copy(e.ray).applyMatrix4(Xv),a.boundingBox!==null&&sd.intersectsBox(a.boundingBox)===!1))return;let l,c,u,d,p=a.index,f=a.attributes.position,h=a.drawRange,m,y;if(o===!1){let v=Math.max(0,h.start),w=Math.min(p.count,h.start+h.count);for(m=v,y=w;m<y;m+=3)if(c=p.getX(m),u=p.getX(m+1),d=p.getX(m+2),l=x(i,e,sd,f,c,u,d),l){l.faceIndex=Math.floor(m/3),r.push(l);return}}else{let w=a.attributes.position,O=new Xo,S=new Xo,T=new Xo,M=new Xo,g=2,E=1/((n.scale.x+n.scale.y+n.scale.z)/3),I=E*E,N=Math.max(0,h.start),_=Math.min(w.count,h.start+h.count);for(let R=N,V=_-1;R<V;R+=g){if(O.fromBufferAttribute(w,R),S.fromBufferAttribute(w,R+1),sd.distanceSqToSegment(O,S,M,T)>I)continue;M.applyMatrix4(n.matrixWorld);let B=e.ray.origin.distanceTo(M);B<e.near||B>e.far||r.push({distance:B,point:T.clone().applyMatrix4(n.matrixWorld),object:i})}}function x(v,w,O,S,T,M,g){let D=new Xo,E=new Xo,I=new Xo,N=new Xo,_=new Xo;if(D.fromBufferAttribute(S,T),E.fromBufferAttribute(S,M),I.fromBufferAttribute(S,g),O.intersectTriangle(D,E,I,!1,N)===null)return null;_.copy(N),_.applyMatrix4(v.matrixWorld);let V=w.ray.origin.distanceTo(_);return V<w.near||V>w.far?null:{faceIndex:1,distance:V,point:_.clone(),object:v}}};var ld=new AD,Cr=new PD,Ah=class extends OD{constructor(e){let r=new TD,o=new CD({color:16777215,vertexColors:!0,toneMapped:!1}),n=[],a=[],s={},l=new Ch(15711266),c=new Ch(15711266),u=new Ch(2857471);d("n1","n2",l),d("n2","n4",l),d("n4","n3",l),d("n3","n1",l),d("f1","f2",l),d("f2","f4",l),d("f4","f3",l),d("f3","f1",l),d("n1","f1",l),d("n2","f2",l),d("n3","f3",l),d("n4","f4",l),d("p","n1",c),d("p","n2",c),d("p","n3",c),d("p","n4",c),d("u1","u2",u),d("u2","u3",u),d("u3","u1",u);function d(f,h,m){p(f,m),p(h,m)}function p(f,h){n.push(0,0,0),a.push(h.r,h.g,h.b),s[f]===void 0&&(s[f]=[]),s[f].push(n.length/3-1)}r.setAttribute("position",new Yv(n,3)),r.setAttribute("color",new Yv(a,3));super(r,o);this.type="CameraHelper",this.camera=e,this.camera.updateProjectionMatrix&&this.camera.updateProjectionMatrix(),this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.pointMap=s,this.update()}update(){let e=this.geometry,r=this.pointMap,o=!0;Cr.projectionMatrixInverse.elements=[.5112609807824982,-0,-0,-0,-0,.41421356237309503,-0,-0,-0,-0,-0,-.099999,-0,-0,-1.0000000000000002,.100001];let n=1,a=1,s=o?.8:1e-4;$r("n1",r,e,Cr,-n,-a,s),$r("n2",r,e,Cr,n,-a,s),$r("n3",r,e,Cr,-n,a,s),$r("n4",r,e,Cr,n,a,s);let l=s;$r("f1",r,e,Cr,-n,-a,l),$r("f2",r,e,Cr,n,-a,l),$r("f3",r,e,Cr,-n,a,l),$r("f4",r,e,Cr,n,a,l);let c=l,u=.5;$r("u1",r,e,Cr,n*.7*u,a*1.1,c),$r("u2",r,e,Cr,-n*.7*u,a*1.1,c),$r("u3",r,e,Cr,0,a*(1.1+.9*u),c),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function $r(i,t,e,r,o,n,a){ld.set(o,n,a).unproject(r);let s=t[i];if(s!==void 0){let l=e.getAttribute("position");for(let c=0,u=s.length;c<u;c++)l.setXYZ(s[c],ld.x,ld.y,ld.z)}}var cd=class extends vo(Ah){constructor(e){super(e);this.object=e;this.object=e,this.name=`CombinedCameraHelper: ${e.uuid}`}updateMatrixWorld(e){super.updateMatrixWorld(e),this.updateTarget()}updateTarget(){let e=this.object.getTarget();this.updateWorldMatrix(!0,!1),this.worldToLocal(e)}raycast(e,r){So(this.object,this.geometry,e,r,!0)}};import{Box3Helper as Kv,BoxGeometry as MD}from"three";var ud;(t=>t.is=e=>"objectHelper"in e)(ud||(ud={}));var Ar=(i,t)=>class extends Sa(i){constructor(){super(...arguments);this.objectHelper=new t(this);this.gizmos={}}get geometryHelper(){return t.geometryHelper}raycast(o,n){this.objectHelper.raycast(o,n)}showGizmos(){for(let o in this.gizmos){let n=this.gizmos[o];n instanceof Kv&&(n.visible=!0)}}updateEntityBoxSize(o,n){this.objectHelper.visible&&this.geometryHelper instanceof MD?(o.setScalar(0),n.set(this.geometryHelper.parameters.width,this.geometryHelper.parameters.height,this.geometryHelper.parameters.height).multiplyScalar(.5)):super.updateEntityBoxSize(o,n)}hideGizmos(){for(let o in this.gizmos){let n=this.gizmos[o];n instanceof Kv&&(n.visible=!1)}}};var dd=790,us=new Xr,Mh=new Xr,Ih=new DD,Eh=new Xr,Cl=new Xr,Nh=new Xr,Yo=class extends Ar(ID,cd){constructor(e="",r={...en.defaultData,name:""}){super();this._cameraType="OrthographicCamera";this.targetOffset=mi.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.wasMovedByUser=!1;this.wasMovedBySwitchCameraAction=!1;this.super_Entity(e,r),this.previousProjectionMatrix=new _D,this.matrixAutoUpdate=!0,this.width=window.innerWidth,this.height=window.innerHeight;let o=this.width,n=this.height;this.orthoCamera=new ED(o*-.5,o*.5,n*.5,n*-.5,-5e4,1e4),this.perspCamera=new ND(45,o/n,50,1e4),this.left=this.orthoCamera.left,this.right=this.orthoCamera.right,this.top=this.orthoCamera.top,this.bottom=this.orthoCamera.bottom,this.far=this.orthoCamera.far,this.view=this.orthoCamera.view,this.aspect=this.perspCamera.aspect,this.focus=this.perspCamera.focus,this.filmGauge=this.perspCamera.filmGauge,this.filmOffset=this.perspCamera.filmOffset,this.objectHelper.update()}get isPerspectiveCamera(){return this.cameraType==="PerspectiveCamera"}get isOrthographicCamera(){return!this.isPerspectiveCamera}get cameraType(){return this._cameraType}set fov(e){this.perspCamera.fov=e}get fov(){return this.perspCamera.fov}setNear(e,r){e==="PerspectiveCamera"?this.perspCamera.near=r:this.orthoCamera.near=r}setZoom(e,r){r>=0&&(e==="PerspectiveCamera"?this.perspCamera.zoom=r:this.orthoCamera.zoom=r)}set cameraType(e){e==="PerspectiveCamera"?this.toPerspective():e==="OrthographicCamera"&&this.toOrthographic()}get near(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.near:this.orthoCamera.near}set near(e){this._cameraType==="PerspectiveCamera"?this.perspCamera.near=e:this.orthoCamera.near=e}get zoom(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom:this.orthoCamera.zoom}set zoom(e){e>=0&&(this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom=e:this.orthoCamera.zoom=e)}lookAt(e,r,o){typeof e=="number"&&(e=new Xr(e,r,o)),super.lookAt(e),this.getWorldPosition(us),this.targetOffset=us.distanceTo(e)}getTarget(e=new Xr){return this.getWorldDirection(Mh),this.getWorldPosition(us),Mh.multiplyScalar(this.targetOffset),e.copy(us).add(Mh),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(us),us.distanceTo(e)}updateUp(){this.getWorldQuaternion(Ih),Eh.set(0,0,1).applyQuaternion(Ih),Cl.copy(Qv.DEFAULT_UP),this.isUpVectorFlipped&&Cl.negate(),Cl.applyQuaternion(Ih),Nh.copy(Qv.DEFAULT_UP).projectOnPlane(Eh),this.angleOffsetFromUp=Nh.angleTo(Cl),this.angleOffsetFromUp*=Nh.cross(Cl).dot(Eh)>=0?1:-1}updateTransformState(e,r){let o=super.updateTransformState(e,r);return e.isUpVectorFlipped!==void 0&&(this.isUpVectorFlipped=e.isUpVectorFlipped),this.updateUp(),o}getViewFrontToObject(e){let r=e.getWorldPosition(new Xr),n=e.getWorldDirection(new Xr).multiplyScalar(this.targetOffset);return{position:r.clone().add(n),target:r}}getViewToTarget(e){let o=this.getWorldDirection(new Xr).multiplyScalar(this.targetOffset);return{position:e.clone().sub(o),target:e}}getViewToObject(e){let r=new Xr,o=e.getWorldPosition(r);return this.getViewToTarget(r)}setViewplaneSize(e,r,o=!1){if(this.aspect=e/r,o){let n=e>r?this.aspect:1,a=e>r?1:this.aspect;this.left=-dd*.5*n,this.right=dd*.5*n,this.top=dd*.5*(1/a),this.bottom=-dd*.5*(1/a)}else this.left=-e*.5,this.right=e*.5,this.top=r*.5,this.bottom=-r*.5;this.updateProjectionMatrix()}copyViewPlaneSize(e){this.aspect=e.aspect,this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.updateProjectionMatrix()}toOrthographic(){this.orthoCamera.left=this.left,this.orthoCamera.right=this.right,this.orthoCamera.top=this.top,this.orthoCamera.bottom=this.bottom,this.orthoCamera.view=this.view,this.orthoCamera.far=this.far,this.orthoCamera.updateProjectionMatrix(),this.projectionMatrix=this.orthoCamera.projectionMatrix,this.projectionMatrixInverse=this.orthoCamera.projectionMatrixInverse,this._cameraType="OrthographicCamera",this.objectHelper&&this.objectHelper.update()}toPerspective(){this.perspCamera.aspect=this.aspect,this.perspCamera.fov=this.fov,this.perspCamera.view=this.view,this.perspCamera.far=this.far,this.perspCamera.updateProjectionMatrix(),this.projectionMatrix=this.perspCamera.projectionMatrix,this.projectionMatrixInverse=this.perspCamera.projectionMatrixInverse,this._cameraType="PerspectiveCamera",this.objectHelper&&this.objectHelper.update()}setFocalLength(e){this.perspCamera.setFocalLength(e),this.toPerspective()}getFocalLength(){return this.perspCamera.getFocalLength()}getEffectiveFOV(){return this.perspCamera.getEffectiveFOV()}getFilmWidth(){return this.perspCamera.getFilmWidth()}getFilmHeight(){return this.perspCamera.getFilmHeight()}setViewOffset(e,r,o,n,a,s){this._cameraType==="PerspectiveCamera"?this.perspCamera.setViewOffset(e,r,o,n,a,s):this.orthoCamera.setViewOffset(e,r,o,n,a,s)}clearViewOffset(){this._cameraType==="PerspectiveCamera"?(this.perspCamera.clearViewOffset(),this.toPerspective()):(this.orthoCamera.clearViewOffset(),this.toOrthographic())}copyHistory(){this.previousProjectionMatrix&&this.previousProjectionMatrix.copy(this.projectionMatrix)}updateProjectionMatrix(){this._cameraType==="PerspectiveCamera"?this.toPerspective():this._cameraType==="OrthographicCamera"&&this.toOrthographic()}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(e,r){super.updateWorldMatrix(e,r),this.matrixWorldInverse.copy(this.matrixWorld).invert()}copy(e,r){return super.copy(e,r),this.parent=e.parent,this.orthoCamera.copy(e.orthoCamera),this.perspCamera.copy(e.perspCamera),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.far=e.far,this.view=e.view===null?null:Object.assign({},e.view),this._cameraType=e._cameraType,this.aspect=e.aspect,this.fov=e.fov,this.focus=e.focus,this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this.targetOffset=e.targetOffset,this.updateProjectionMatrix(),this}toCameraState(e=[]){let r={type:this.cameraType,far:this.far,orthographic:{near:this.orthoCamera.near,zoom:this.orthoCamera.zoom},perspective:{near:this.perspCamera.near,fov:this.perspCamera.fov,zoom:this.perspCamera.zoom},up:this.up.toArray(),targetOffset:this.targetOffset,isUpVectorFlipped:this.isUpVectorFlipped};return Kn(r,e)}updateCameraSubtype(e,r){let o=e==="perspective"?"PerspectiveCamera":"OrthographicCamera";r.zoom!==void 0&&this.setZoom(o,r.zoom),r.near!==void 0&&this.setNear(o,r.near),r.fov!==void 0&&o==="PerspectiveCamera"&&(this.fov=r.fov)}updateState(e,r){this.updateCameraState(e,r)}updateCameraState(e,r){this.updateState_Entity(e,r),e.far!==void 0&&(this.far=e.far),e.orthographic!==void 0&&this.updateCameraSubtype("orthographic",e.orthographic),e.perspective!==void 0&&this.updateCameraSubtype("perspective",e.perspective),e.type!==void 0&&(this.cameraType=e.type),e.up!==void 0&&this.up.fromArray(e.up),e.targetOffset!==void 0&&(this.targetOffset=e.targetOffset),e.isUpVectorFlipped!==void 0&&(this.isUpVectorFlipped=e.isUpVectorFlipped),this.updateProjectionMatrix()}updateByPatchedOp(e,r,o){super.updateByPatchedOp(e,r,o),e.path.length===1&&e.type===0&&this.updateCameraSubtype(e.path[0],e.props)}toState(e){return{...super.toState(e),...this.toCameraState(e),type:this.cameraType}}};import{MathUtils as uae}from"three";import{BufferGeometry as Zv,Matrix4 as Jv,Float32BufferAttribute as RD}from"three";var ds=new Jv,LD=new Jv;var ar=class extends nr{constructor(e,r,o){super(e,r);this.data=r;this.meshSetAddresses=[];this.needsTransformForDownstream=!1;this.geometry=new Zv;this.onAfterRender=(e,r,o,n,a,s)=>{super.onAfterRender(e,r,o,n,a,s),this.recomputeBoolean()};this.geometry.userData.parameters={width:0,height:0,depth:0}}get booleanOp(){return this.data.geometry.operation}get phongAngle(){return this.data.geometry.phongAngle??45}get isLOD(){return this.recomputeBoolean(),!1}updateByPatchedOp(e,r,o){super.updateByPatchedOp(e,r,o),e.path.length===1&&e.path[0]==="geometry"&&e.type===0&&e.props.operation!==void 0&&(this.freeBooleanPointer(),this.resetBBoxNeedsUpdate())}freeBooleanPointer(){super.freeBooleanPointer(),this.geometry.dispose()}recomputeBoolean(e,r=!0){if(this.booleanMeshSetAddress!==-1&&!e)return;for(let n=0;n<this.children.length;n++){let a=this.children[n];a instanceof ar&&a.dataPatched.visible===!0&&a.recomputeBoolean(e===!0,r)}this.meshSetAddresses=[];for(let n=0;n<this.children.length;n++){let a=this.children[n];if(a instanceof Mt&&a.dataPatched.visible===!0&&a.geometry.attributes.position?.count>0&&a.geometry.drawRange.count>0&&a.booleanMeshSetAddress!==0){ds.multiplyMatrices(a.hiddenMatrix,a.matrix);try{if(a.booleanMeshSetAddress===-1){if((a.geometry.index??a.geometry.getAttribute("position")).count/3<15e5&&(a.booleanMeshSetAddress=Pr.getMeshSet(a.geometry,e===!0,r)),a.booleanMeshSetAddress===-1)return;Pr.transformMeshSet(a.booleanMeshSetAddress,ds),a.booleanMatrixInvOld.copy(ds).invert(),a.booleanWasTransformed=!1}else a instanceof ar&&a.needsTransformForDownstream===!0?(Pr.transformMeshSet(a.booleanMeshSetAddress,ds),a.needsTransformForDownstream=!1):a.booleanWasTransformed===!0&&(Pr.transformMeshSet(a.booleanMeshSetAddress,LD.multiplyMatrices(ds,a.booleanMatrixInvOld)),a.booleanMatrixInvOld.copy(ds).invert(),a.booleanWasTransformed=!1)}catch(s){console.error(s),a.booleanMeshSetAddress=0,a.geometry.userData.booleanOperationDidFail=!0;continue}Pr.hasOpenEdges(a.booleanMeshSetAddress)===!1||n===this.children.length-1&&this.booleanOp===2?(this.meshSetAddresses.push(a.booleanMeshSetAddress),a.geometry.userData.booleanOperationDidFail=!1):a.geometry.userData.booleanOperationDidFail="openEdges"}}if(this.meshSetAddresses.length===0){this.geometry.setAttribute("position",new RD([],0)),this.geometry.setDrawRange(0,0);return}if(e===!0)return Pr.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let o=this.geometry;o.dispose(),this.geometry=new Zv,this.geometry.userData=o.userData,this.geometry.boundingSphere=o.boundingSphere;try{this.booleanMeshSetAddress=Pr.calcBoolean(this.meshSetAddresses,this.booleanOp,this.geometry,this.phongAngle)}catch(n){this.booleanMeshSetAddress=0,this.geometry.userData.booleanOperationDidFail=!0,console.error(n)}this.booleanMatrixInvOld.copy(this.matrix).invert(),this.needsTransformForDownstream=!0,ss(this),ls(this)}dispose(){super.dispose(),this.geometry.dispose()}};import{Light as BD}from"three";var e1;(t=>{function i(e){return De.is(e)&&e instanceof BD}t.is=i})(e1||(e1={}));var ps=(i,t)=>class extends Ar(i,t){updateState_Light(r,o){this.updateState_Entity(r,o),r.color!==void 0&&(this.color=o.shared.color(r.color)),r.intensity!==void 0&&(this.intensity=r.intensity),r.depth!==void 0&&(this.shadow.camera.far=r.depth,this.shadow.needsUpdate=!0),r.shadows!==void 0&&(this.castShadow=r.shadows)}};var Ni=i=>i instanceof Mt,Al=i=>i!==null&&i instanceof ar;var Ml=i=>ud.is(i);import{Group as UD}from"three";import{AxesHelper as VD,Group as zD,Quaternion as GD,Vector3 as Dh}from"three";var FD=new Dh(1,1,1),t1=new Dh,jD=new Dh,r1=new GD,Mr=class extends vo(VD){constructor(e,r=15){super(r);this.object=e;this.dummy=new zD;this.object.updateMatrixWorld(),this.name=`EmptyObjectHelper: ${e.uuid}`,this.matrix=this.dummy.matrixWorld,this.matrixAutoUpdate=!1,this.object.isBone&&(this.visible=!1)}raycast(e,r){So(this.object,Mr.geometryHelper,e,r,!1,this.dummy)}update(){}updateMatrix(){}updateMatrixWorld(e){this.object.matrixWorld.decompose(t1,r1,jD),this.matrix.compose(t1,r1,FD),super.updateMatrixWorld(e)}updateWorldMatrix(e,r){}};var Di=class extends Ar(UD,Mr){constructor(t,e){super(),this.super_Entity(t,e),this.objectHelper.update()}updateState(t,e){this.updateState_Entity(t,e),"buffer"in t&&Object.keys(t).length===1&&e.scene.reloadSplats()}};import{Group as kD}from"three";var fs=class extends Ar(kD,Mr){constructor(e,r,o){super();this.super_Entity(e,r),this.context=o,this.objectHelper.update()}updateState(e,r){this.updateState_Entity(e,r)}};import{Color as N_,Fog as D_,HemisphereLight as __}from"three";import{ShaderChunk as Il}from"three";var HD=i=>`
|
|
2290
2290
|
|
|
2291
2291
|
// PCSS implementation based on:
|
|
2292
2292
|
// https://www.gamedev.net/articles/programming/graphics/contact-hardening-soft-shadows-made-fast-r4906/
|
|
@@ -2660,18 +2660,18 @@ float vogelShadow(int index, sampler2D shadowMap, vec2 uv, float texelSize, floa
|
|
|
2660
2660
|
}
|
|
2661
2661
|
|
|
2662
2662
|
#endif
|
|
2663
|
-
`,HD=Ml.lights_fragment_begin,WD=Ml.shadowmask_pars_fragment,r1=null,qD=i=>{switch(i){case"low":return 8;case"medium":return 16;case"high":return 32;default:return 16}},o1=(i="medium")=>{if(r1===i)return!1;r1=i;let t=qD(i);Ml.shadowmap_pars_fragment=kD(t);let e=HD.slice();e=e.replace("getShadow( spotShadowMap[ i ]",`getShadow( UNROLLED_LOOP_INDEX + ${3}, spotShadowMap[ i ]`),e=e.replace("getShadow( directionalShadowMap[ i ]","getShadow( UNROLLED_LOOP_INDEX, directionalShadowMap[ i ]"),Ml.lights_fragment_begin=e;let r=WD.slice();return r=r.replaceAll("getShadow(","getShadow( UNROLLED_LOOP_INDEX, "),Ml.shadowmask_pars_fragment=r,!0};import{DirectionalLight as QD,CameraHelper as i1}from"three";import{DirectionalLightHelper as $D}from"three";var fs=class extends bo($D){constructor(e,r=15,o=10066329){super(e,r,o);this.object=e;this.added=!1;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,r){vo(this.object,fs.geometryHelper,e,r)}};import{PointLightHelper as XD}from"three";var hs=class extends bo(XD){constructor(e,r=15,o=6710886){super(e,r,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,r){vo(this.object,hs.geometryHelper,e,r)}};import{SpotLightHelper as YD,Vector3 as KD}from"three";var dd=class extends bo(YD){constructor(e,r=6710886){super(e,r);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,r){vo(this.object,dd.geometryHelper,e,r)}update(){if(this.object!==void 0){let e=dd._vector,r=this.object.distance?this.object.distance:1e3,o=r*Math.tan(this.object.angle);this.cone.scale.set(o,o,r),e.setFromMatrixPosition(this.object.target.matrixWorld),this.cone.lookAt(e);let n=this.color!==void 0?this.color:this.light.color;if(this.cone.material instanceof Array)for(let a=0,s=this.cone.material.length;a<s;a++)this.cone.material[a].color.set(n);else this.cone.material.color.set(n)}}},Il=dd;Il._vector=new KD;function ZD(i,t){i.shadow.camera.right=t/2,i.shadow.camera.left=-t/2,i.shadow.camera.top=t/2,i.shadow.camera.bottom=-t/2,i.shadow.needsUpdate=!0}var ms=class extends ds(QD,fs){constructor(t,e,r){super(),this.super_Entity(t,e),this.castShadow=!0,this.shadow.mapSize.width=2048,this.shadow.mapSize.height=2048,this.shadow.normalBias=1,this.layers.enable(3);let n=this.shadow.camera;n.top=1250,n.bottom=-1250,n.right=1250,n.left=-1250,n.near=-1e4,n.far=2500;let a=new i1(this.shadow.camera);a.visible=!1,this.gizmos.shadowmap=a}update(){this.shadow.camera.updateProjectionMatrix();for(let t in this.gizmos){let e=this.gizmos[t];e instanceof i1&&e.update()}}updateMatrixWorld(t){super.updateMatrixWorld(t),this.objectHelper&&this.objectHelper.update()}updateState(t,e){this.updateState_Light(t,e);let r=t.depth!==void 0&&t.depth!==this.shadow.camera.far||t.size!==void 0&&t.size/2!==this.shadow.camera.right;t.size!==void 0&&ZD(this,t.size),t.shadowRadius!==void 0&&(this.shadow.radius=t.shadowRadius),t.shadowResolution!==void 0&&(this.shadow.mapSize.set(t.shadowResolution,t.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),t.penumbraSize!==void 0&&e.scene.markPenumbraSizeDirty(),r&&this.update()}};import{Scene as __}from"three";import{SpotLight as JD,CameraHelper as n1,MathUtils as e_,Vector3 as c1,Quaternion as t_}from"three";var a1=new c1,s1=new c1,l1=new t_,ys=class extends ds(JD,Il){constructor(t,e,r){super(),this.super_Entity(t,e),this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1,this.layers.enable(3);let n=this.shadow.camera;n.fov=e_.RAD2DEG*2*this.angle,n.aspect=1,n.near=100,n.far=2500;let a=new n1(this.shadow.camera);a.visible=!1,this.gizmos.shadowmap=a,this.update()}update(){this.shadow.camera.updateProjectionMatrix();for(let t in this.gizmos){let e=this.gizmos[t];e instanceof n1&&e.update()}}updateMatrixWorld(t){super.updateMatrixWorld(t),s1.setFromMatrixPosition(this.matrixWorld),l1.setFromRotationMatrix(this.matrixWorld),a1.copy(this.up).applyQuaternion(l1).negate().multiplyScalar(this.distance),this.target.position.copy(s1).add(a1),this.target.updateMatrixWorld(),this.objectHelper&&this.objectHelper.update()}updateState(t,e){this.updateState_Light(t,e),t.distance!==void 0&&(this.distance=t.distance),t.decay!==void 0&&(this.decay=t.decay),t.angle!==void 0&&(this.angle=t.angle),t.penumbra!==void 0&&(this.penumbra=t.penumbra),t.shadowRadius!==void 0&&(this.shadow.radius=t.shadowRadius),t.penumbraSize!==void 0&&e.scene.markPenumbraSizeDirty(),t.shadowResolution!==void 0&&(this.shadow.mapSize.set(t.shadowResolution,t.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null))}};function r_(i){let t=(i[0][0]+i[1][1])/2,e=(i[0][0]-i[1][1])/2,r=(i[1][0]+i[0][1])/2,o=(i[1][0]-i[0][1])/2,n=Math.sqrt(t*t+o*o),a=Math.sqrt(e*e+r*r),s=n+a,l=n-a,c=Math.atan2(r,e),u=Math.atan2(o,t),p=(u-c)/2,d=(u+c)/2,f=[[Math.cos(d),Math.sin(d)],[-Math.sin(d),Math.cos(d)]],h=[[s,0],[0,l]],m=[[Math.cos(p),Math.sin(p)],[-Math.sin(p),Math.cos(p)]];return f[0][0]*=-1,f[0][1]*=-1,m[0][0]*=-1,m[1][0]*=-1,[f,h,m]}function pd(i,t){return[[i[0][0]*t[0][0]+i[0][1]*t[1][0],i[0][0]*t[0][1]+i[0][1]*t[1][1]],[i[1][0]*t[0][0]+i[1][1]*t[1][0],i[1][0]*t[0][1]+i[1][1]*t[1][1]]]}function u1(i){return[[i[0][0],i[1][0]],[i[0][1],i[1][1]]]}function d1(i){let[t,e,r]=r_(i),o=pd(t,u1(r)),n=pd(pd(r,e),u1(r)),a=Math.atan2(o[1][0],o[0][0]),s=[n[0][0],n[1][1]],l=[n[0][1]/n[1][1],n[1][0]/n[0][0]];return{rotation:a,scale:s,shear:l}}function p1({rotation:i,scale:t,shear:e}){let r=Math.cos(i),o=Math.sin(i),n=[[r,-o],[o,r]],a=[[t[0],e[0]*t[1]],[e[1]*t[0],t[1]]],s=pd(n,a);return[s[0][0],s[1][0],s[0][1],s[1][1]]}var Ee;(S=>{function i(){return[1,0,0,0,1,0,0,0,1]}S.identity=i;function t(T,M=S.identity()){for(let g=0,D=T.length;g<D;g++)M[g]=T[g];return M}S.copy=t;function e(T,M,g,D,E,I){return S.setAbcdef(S.identity(),T,M,g,D,E,I)}S.create=e;function r(T,M,g,D,E,I,N){return T[0]=M,T[1]=D,T[2]=I,T[3]=g,T[4]=E,T[5]=N,T}S.setAbcdef=r;function o(T,M){let[g,D,E,I,N,_]=a(T),[R,V,U,B,q,j]=a(M),F=R*g+V*E,H=R*D+V*I,W=U*g+B*E,ee=U*D+B*I,te=q*g+j*E+N,Y=q*D+j*I+_;return S.create(F,H,W,ee,te,Y)}S.append=o;function n(T,M){let[g,D,E,I,N,_]=a(T),[R,V,U,B,q,j]=a(M),F=g,H=D,W=E,ee=I;(R!==1||V!==0||U!==0||B!==1)&&(F=g*R+D*U,H=g*V+D*B,W=E*R+I*U,ee=E*V+I*B);let te=N*R+_*U+q,Y=N*V+_*B+j;return S.create(F,H,W,ee,te,Y)}S.prepend=n;function a(T){return[T[0],T[3],T[1],T[4],T[2],T[5]]}S.getAbcdef=a;function s(T){let[M,g,D,E,I,N]=S.getAbcdef(T),_=M*E-g*D,R=E/_,V=-g/_,U=-D/_,B=M/_,q=(D*N-E*I)/_,j=-(M*N-g*I)/_;return S.create(R,V,U,B,q,j)}S.invert=s;function l([T,M],g){let[D,E,I,N,_,R]=S.getAbcdef(g);return[D*T+I*M+_,E*T+N*M+R]}S.apply=l;function c(T,M){let[g,D,E,I,N,_]=S.getAbcdef(M),R=1/(g*I+E*-D),[V,U]=T;return[I*R*V+-E*R*U+(_*E-N*I)*R,g*R*U+-D*R*V+(-_*g+N*D)*R]}S.applyInverse=c;function u(T,M,g=M){let[D,E,I,N,_,R]=S.getAbcdef(T);return S.setAbcdef(T,D*M,E*g,I*M,N*g,_*M,R*g),T}S.scale=u;function p(T,M){let g=Math.cos(M),D=Math.sin(M),[E,I,N,_,R,V]=S.getAbcdef(T);return S.setAbcdef(T,E*g-I*D,E*D+I*g,N*g-_*D,N*D+_*g,R*g-V*D,R*D+V*g),T}S.rotate=p;function d(T,M,g){let[D,E]=g,I=S.translate(T,-D,-E);return I=S.rotate(I,M),I=S.translate(I,D,E),I}S.rotateAround=d;function f(T,M,g){let[D,E,I,N,_,R]=S.getAbcdef(T);return S.setAbcdef(T,D,E,I,N,_+M,R+g),T}S.translate=f;function h(T,M,g){let[D,E,I,N]=S.getAbcdef(T);return S.setAbcdef(T,D,E,I,N,M,g),T}S.setTranslate=h;function m(T,M,g){let[D,E,I,N]=S.getAbcdef(T);return S.setAbcdef(T,D,E,I,N,M,g),T}S.setPosition=m;function y(T){let[M,g,D,E]=S.getAbcdef(T),I=Math.sqrt(M*M+g*g),N=Math.sqrt(D*D+E*E);return[I,N]}S.getScale=y;function b(T){let[,,,,M,g]=S.getAbcdef(T);return[M,g]}S.getPosition=b;function v(T,M){return S.decompose(T,M).rotation}S.getRotation=v;function w(T,M){let[g,D,E,I,N,_]=S.getAbcdef(T),{rotation:R,scale:V,shear:U}=d1([[g,E],[D,I]]);return{position:[N+(M[0]*g+M[1]*E)-M[0],_+(M[0]*D+M[1]*I)-M[1]],scale:V,rotation:R,shear:U,pivot:M}}S.decompose=w;function O(T,M,g,D,E=[0,0]){let[I,N]=T,[_,R]=D,[V,U,B,q]=p1({rotation:g,scale:M,shear:E}),j=I-(_*V+R*B)+_,F=N-(_*U+R*q)+R;return S.create(V,U,B,q,j,F)}S.compose=O})(Ee||(Ee={}));var o_=Math.PI/180,mse=180/Math.PI;function f1(i,t,e,r,o,n){let a=i-e,s=t-r;return a*a/(o*o)+s*s/(n*n)<=1}function h1(i){return i*o_}var Yo=class{constructor(t,e,r){this.uuid=t;this.data=e;this.localMatrix=Ee.identity();this.worldMatrix=Ee.identity();this.ignoreCameraZoom=!1;this.visible=!0;this._singleBBox=new Di;this._recursiveBBox=new Di;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this.stateSelection=null;this.prevState=null;this.currentState=null;this.reversibleToState=null;this.currentTransitionEvent=null;this.previousAction=null;this.name="";this.position=[0,0];this.scale=[1,1];this.rotation=0;this.shear=[0,0];this.emitter=jo();this.dpr=r.dpr??1,this.dataPatched=e}project(t,e){let r=this.worldMatrix;return e&&(r=Ee.append(e.worldMatrix,r)),Ee.applyInverse(t,r)}intersects(t,e,r,o=!1){return this.visible&&!this.data.raycastLock&&this.intersectsInLocalSpace(...this.project([t,e],r),o)}intersectsInLocalSpace(t,e,r=!1){let{min:o,max:n}=r?this.recursiveBBox:this.singleBBox;return t>=o[0]&&t<=n[0]&&e>=o[1]&&e<=n[1]}applyTransforms(t){t.setTransform(this.worldMatrix,this.ignoreCameraZoom)}get singleBBox(){return this.singleBBoxNeedsUpdate&&(this.singleBBoxNeedsUpdate=!1,this._singleBBox.setFromObjectSize(this,!1),this._singleBBox.computeVertices(),this._singleBBox.computeEdges()),this._singleBBox}get recursiveBBox(){return this.recursiveBBoxNeedsUpdate&&(this.recursiveBBoxNeedsUpdate=!1,this._recursiveBBox.setFromObjectSize(this,!0),this._recursiveBBox.computeVertices(),this._recursiveBBox.computeEdges()),this._recursiveBBox}updateLocalMatrix(){this.localMatrix=Ee.compose(this.position,this.scale,h1(this.rotation),Vo.getPivot(this.dataPatched),this.shear)}updateWorldMatrix(t,e,r){let o=this.parent;e&&o!==null&&o!==void 0&&o.updateWorldMatrix(t,!0,!1),t&&this.updateLocalMatrix(),this.parent?this.worldMatrix=Ee.append(this.parent.worldMatrix,this.localMatrix):this.worldMatrix=Ee.copy(this.localMatrix),this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0}get pivot(){return Vo.getPivot(this.data)}getCenter(){return[0,0]}getHalfSize(){return[0,0]}get id(){return this.uuid}resetBBoxNeedsUpdateSelf(){this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0}resetBBoxNeedsUpdate(){this.resetBBoxNeedsUpdateSelf(),this.traverseAncestors(t=>{t.resetBBoxNeedsUpdateSelf()})}updateTransformState(t){let e=!1;t.position!==void 0&&(e=!0,this.position=t.position),t.rotation!==void 0&&(e=!0,this.rotation=t.rotation),t.scale!==void 0&&(e=!0,this.scale=t.scale),t.shear!==void 0&&(e=!0,this.shear=t.shear),e&&(this.updateWorldMatrix(!0,!1,!0),this.resetBBoxNeedsUpdate())}updateByOp(t,e,r){t.type===0&&t.props.visible!==void 0&&(this.visible=t.props.visible),this.data=e,this.data=e;let o=t,n=Le(t.path,["states","*"]);if(n!==null){if(t.type===0){let[a]=n;if(this?.stateSelection===a){let s={...t.props};if(delete s.name,Object.values(t.props).some(l=>l===void 0)){let l=this.data;if(l!==void 0){let c=Ze.zoom(l,t.path.slice(2));if(c)for(let u in t.props)t.props[u]===void 0&&u in c&&(s[u]=c[u])}}o={...t,props:s,path:t.path.slice(2)}}}}else if(t.type===0){let a=this.stateSelection?this.data.states.data(this.stateSelection):void 0;if(a!==void 0){if(t.props.name!==void 0&&a.name){let{name:l,...c}=a;a=c}let s=Ze.removeOverridden(t.path,t.props,a);o={...t,props:s}}}this.updateByPatchedOpBase(o,tn.patch(this.data,this.stateSelection?this.data.states.data(this.stateSelection):void 0),r)}changeSelectedState(t,e,r=!1){if(!(this.data.states.length===0&&!r)){for(let o of this.data.states)tn.toOps(this.data,o.data).forEach(a=>{let s=ea.replaceProps(a,this.data);this.dataPatched=this.data,this.updateByPatchedOp(s,this.data,e)});if(t!==null){let o=this.data.states.data(t);o&&(this.dataPatched=tn.patch(this.data,o),tn.toOps(this.data,o).forEach(a=>{this.updateByPatchedOp(a,this.dataPatched,e)}))}r&&this.updateTransformState(this.dataPatched),this.stateSelection=t}}updateState(t,e){t.name!==void 0&&(this.name=t.name),t.visible!==void 0&&(this.visible=t.visible),this.updateTransformState(t)}updateByPatchedOpBase(t,e,r){this.dataPatched=e,this.updateByPatchedOp(t,e,r)}updateByPatchedOp(t,e,r){t.path.length===0&&t.type===0&&this.updateState(t.props,r),this.requestRender()}traverseFrameAncestors(t){this.traverseAncestors(e=>{e.data.type==="frame2d"&&t(e)})}traverseAncestors(t){let e=this.parent;for(;e;)t(e),e=e.parent}requestRender(){this.traverseFrameAncestors(t=>{t.requestRender()})}clone(t){let e=new Yo(this.uuid,this.data,t);return e.parent=void 0,e}addEventListener(t,e){this.emitter.on(t,e)}removeEventListener(t,e){this.emitter.off(t,e)}dispatchEvent(t){this.emitter.emit(t.type,{...t,target:t.target??this})}traverseSortNextHelper(){let t=this.parent;if(t){let e=t.children;if(e){let r=e.indexOf(this)+1;return e[r]?e[r]:t.traverseSortNextHelper()}}}sortNext(){let t=this.children;return t&&t.length>0&&t[0]?t[0]:this.traverseSortNextHelper()}isDescendantOf(t){t instanceof Yo&&(t=t.uuid);let e=this;for(;e.parent;){if(e.parent.uuid===t)return!0;e=e.parent}return!1}};var Ut=class extends Yo{constructor(e,r,o){super(e,r,o);this.uuid=e;this.data=r;this.context=o;this.children=[]}add(e){e.parent&&e.parent instanceof Ut&&e.parent.remove(e),this.children.push(e),e.parent=this}remove(e){let r=this.children.indexOf(e);r>=0&&(this.children.splice(r,1),e.parent=void 0)}traverse(e){let r=e(this);if(r!==!0)for(let o of this.children)o instanceof Ut?o.traverse(e):r=e(o)}intersectsChildrenHelper(e,r,o,n,a){for(let s of this.children)if(s.intersects(e,r,o,!1)&&(a.push(s),n)||s instanceof Ut&&s.intersectsChildrenHelper(e,r,o,n,a))return!0;return!1}intersectsChildren(e,r,o,n=!1,a=[],s=!1){return this.intersectsChildrenHelper(e,r,o,n,a),a}intersectsChildrenHelperReverse(e,r,o,n,a){for(let s of this.children)if(s instanceof Ut&&s.intersectsChildrenHelperReverse(e,r,o,n,a)||s.intersects(e,r,o,!1)&&(a.push(s),n))return!0;return!1}intersectsChildrenReverse(e,r,o,n=!1,a=[],s=!1){return this.intersectsChildrenHelperReverse(e,r,o,n,a),a}updateWorldMatrix(e,r,o){if(super.updateWorldMatrix(e,r,o),o&&this.children)for(let n of this.children)n.updateWorldMatrix(e,!1,!0)}find(e){let r;return this.traverse(o=>{o.uuid===e&&(r=o)}),r}innerDrawChildren(e){for(let r=this.children.length-1;r>=0;r--)this.children[r].draw(e)}resetBBoxNeedsUpdate(){super.resetBBoxNeedsUpdate(),this.traverse(e=>{e.resetBBoxNeedsUpdateSelf()})}clone(e){let r=new Ut(this.uuid,this.data,e);r.parent=void 0;for(let o of this.children)r.add(o.clone(e));return r}},ar=class extends Ut{constructor(e,r,o){super(e,r,o);this.uuid=e;this.data=r;this.updateState(r,o)}draw(e){!this.visible||(e.save(),this.applyTransforms(e),this.innerDrawChildren(e),e.restore())}clone(e){let r=new ar(this.uuid,this.data,e);r.parent=void 0;for(let o of this.children)r.add(o.clone(e));return r}};function i_(i,t){let[[e,r],[o,n]]=i,[[a,s],[l,c]]=t,u=(e-o)*(s-c)-(r-n)*(a-l);if(u===0)return!1;let p=((e-a)*(s-c)-(r-s)*(a-l))/u,d=-((e-o)*(r-s)-(r-n)*(e-a))/u;return p>=0&&p<=1&&d>=0&&d<=1}var y1=[[-1,1],[-1,-1],[1,-1],[1,1]],m1=(i,t,e)=>{let r=i.getCenter(),o=i.getHalfSize(),n=Ee.append(t,i.worldMatrix);o[0]===0&&o[1]===0?e.push(Ee.apply(r,n)):y1.forEach(a=>{let s=[a[0]*o[0]+r[0],a[1]*o[1]+r[1]];e.push(Ee.apply(s,n))})},Di=class{constructor(){this.matrix=Ee.identity();this.min=[1/0,1/0];this.max=[-1/0,-1/0];this.vertices=[];this.edges=[]}setFromObjectSize(t,e=!1){t.updateWorldMatrix(),this.makeEmpty(),Ee.copy(t.worldMatrix,this.matrix);let r=Ee.invert(t.worldMatrix);this.expandByObjectSize(t,r,e)}expandByObjectSize(t,e,r=!1){let o=[];r===!0&&t instanceof Ut?t.traverse(n=>{n.visible&&m1(n,e,o)}):m1(t,e,o),this.setFromPoints(o)}setFromSize(t,e,r){this.makeEmpty(),Ee.copy(r,this.matrix),this.expandBySize(t,e,r)}expandBySize(t,e,r){[Ee.apply([0,0],r),Ee.apply([0,e],r),Ee.apply([t,e],r),Ee.apply([t,0],r)].forEach(n=>this.expandByPoint(n))}getCenter(){let[t,e]=this.min,[r,o]=this.getHalfSize();return Ee.apply([t+r,e+o],this.matrix)}getSize(){return[this.max[0]-this.min[0],this.max[1]-this.min[1]]}getHalfSize(){return[(this.max[0]-this.min[0])*.5,(this.max[1]-this.min[1])*.5]}makeEmpty(){this.min=[1/0,1/0],this.max=[-1/0,-1/0]}setFromPoints(t){this.makeEmpty();for(let e of t)this.expandByPoint(e)}expandByPoint(t){this.min=[Math.min(this.min[0],t[0]),Math.min(this.min[1],t[1])],this.max=[Math.max(this.max[0],t[0]),Math.max(this.max[1],t[1])]}computeVertices(){let[t,e]=this.getHalfSize(),r=this.getCenter(),[o,n,a,s]=Ee.getAbcdef(this.matrix),l=Ee.create(o,n,a,s,r[0],r[1]);this.vertices=y1.map(([c,u])=>Ee.apply([c*t,u*e],l))}computeEdges(){this.edges=[];for(let t=0,e=this.vertices.length;t<e;++t)this.edges.push([this.vertices[t],this.vertices[(t+1)%e]])}project(t,e){let r=this.matrix;return e&&(r=Ee.append(e.worldMatrix,r)),Ee.applyInverse(t,r)}intersects(t,e,r){return this.intersectsInLocalSpace(...this.project([t,e],r))}intersectsInLocalSpace(t,e){let{min:r,max:o}=this;return t>=r[0]&&t<=o[0]&&e>=r[1]&&e<=o[1]}containsPoint(t){let[e,r]=t,[o,n]=this.min,[a,s]=this.max;return e>=o&&e<=a&&r>=n&&r<=s}intersectsBBox2D(t){for(let e=0,r=this.edges.length;e<r;e++){let o=this.edges[e];for(let n=0,a=t.edges.length;n<a;n++){let s=t.edges[n];if(i_(o,s))return!0}}for(let e=0,r=t.vertices.length;e<r;e++){let o=t.vertices[e];if(this.containsPoint(o))return!0}return!1}ensureMinMax(){let t=this.min,e=this.max;this.min=[Math.min(t[0],e[0]),Math.min(t[1],e[1])],this.max=[Math.max(t[0],e[0]),Math.max(t[1],e[1])]}copy(t){this.min=[...t.min],this.max=[...t.max],Ee.copy(t.matrix,this.matrix),this.computeVertices(),this.computeEdges()}clone(){let t=new Di;return t.copy(this),t}};var x1,b1=new Promise(i=>{x1=i}),g1=!1;var fd;function v1(){if(g1)return;if(fd)return fd;async function i(){let e=await import("./ui.js");x1(e.default??e),g1=!0}return fd=i(),fd}function P1(i){let t=!1;return i.scene.objects.traverse((e,r)=>{(r.type==="Mesh"&&r.geometry.type==="UIGeometry"||r.type==="Page"&&r.uiFrame!==void 0)&&(t=!0)}),t}var Te,_h;async function n_(i){let t=await b1;Te||(_h||(_h=t({locateFile:()=>i})),Te=await _h)}var S1=Ee.identity(),Nl=class{constructor(t,e=1){this.canvas=t;this._dpr=e;this._width=0;this._height=0;this._strokeMode="inside";this._layerBlur=0;this._backgroundBlur=0;this._dropShadowBlur=0;this._dropShadowOffsetX=0;this._dropShadowOffsetY=0;this._dropShadowColor=Ie.transparent;this._innerShadowBlur=0;this._innerShadowOffsetX=0;this._innerShadowOffsetY=0;this._innerShadowSpread=0;this._innerShadowColor=Ie.transparent;this._fonts=new Map;this._isSizeDirty=!1;try{let r=t.getBoundingClientRect();t.width=r.width*e,t.height=r.height*e}catch{console.log(t.width,e)}this._currentM3Transform=S1,this._currentTransform=new Float32Array(S1)}get dpr(){return this._dpr}set dpr(t){this._dpr=t,this._isSizeDirty=!0}async init(){if(!this.wasmURL)throw Error("Your must set the wasm binary url with renderer.wasmURL = ... before you can call renderer.init");await n_(this.wasmURL),this._surface=Te.MakeWebGLCanvasSurface(this.canvas),this.ctx=this._surface?.getCanvas(),this._paint=new Te.Paint,this._paint.setAntiAlias(!0),this._paintFill=this._paint.copy(),this._paintFill.setStyle(Te.PaintStyle.Fill),this._paintStroke=this._paint.copy(),this._paintStroke.setStyle(Te.PaintStyle.Stroke),this.ctx?.scale(this.dpr,this.dpr)}get currentTransform(){return this._currentM3Transform}get currentTransformBuffer(){return this._currentTransform}set currentTransform(t){this._currentM3Transform=t,this._currentTransform.set(t)}async loadFont(t,e){let r=await(await fetch(t)).arrayBuffer();this.registerFont(r,e)}registerFont(t,e){if(this._fonts.has(e))return;let r=Te.FontMgr.FromData(t);if(r)this._fonts.set(e,r);else throw new Error("Invalid font data for "+e)}get width(){return this._width}get height(){return this._height}set strokeColor(t){this._paintStroke&&this._paintStroke.setColor(hd(t),Te.ColorSpace.DISPLAY_P3)}set fillColor(t){this._paintFill&&this._paintFill.setColor(hd(t),Te.ColorSpace.DISPLAY_P3)}set lineWidth(t){this._paintStroke&&this._paintStroke.setStrokeWidth(this._strokeMode==="center"?t:t*2)}set strokeMode(t){this._strokeMode=t}set dropShadowBlur(t){this._dropShadowBlur=t}set dropShadowColor(t){this._dropShadowColor=t}set dropShadowOffsetX(t){this._dropShadowOffsetX=t}set dropShadowOffsetY(t){this._dropShadowOffsetY=t}set innerShadowBlur(t){this._innerShadowBlur=t}set innerShadowColor(t){this._innerShadowColor=t}set innerShadowOffsetX(t){this._innerShadowOffsetX=t}set innerShadowOffsetY(t){this._innerShadowOffsetY=t}set innerShadowSpread(t){this._innerShadowSpread=t}set layerBlur(t){this._layerBlur=t}set backgroundBlur(t){this._backgroundBlur=t}clear(){this.ctx?.clear(Te.TRANSPARENT)}save(){this.ctx?.save()}restore(){this.ctx?.restore()}beginPath(){this._currentPath?.delete(),this._currentPath=new Te.Path}closePath(){let t=this._currentPath;if(t){if(t.isEmpty())return;let e=t.getBounds();(e[3]-e[1]||e[2]-e[0])&&t.close()}}fill(){this._paintInner(this._paintFill,!0)}stroke(){this._paintInner(this._paintStroke,!1)}clipRect(t,e,r,o,n=0,a=0,s=0,l=0){let c=Te.XYWHRect(t,e,r,o);if(n===0&&a===0&&l===0&&s===0)this.ctx?.clipRect(c,Te.ClipOp.Intersect,!0);else{let u=Te.RRectXY(c,n,n);u[4]=u[5]=n,u[6]=u[7]=a,u[8]=u[9]=s,u[10]=u[11]=l,this.ctx?.clipRRect(u,Te.ClipOp.Intersect,!0)}}_applyShadowOffsetMatrix(){if(this.ctx){let t=Ee.invert(this.currentTransform);this.ctx.concat(t);let e=Ee.translate(Ee.identity(),this._dropShadowOffsetX,this._dropShadowOffsetY);this.ctx.concat(e),this.ctx.concat(this._currentTransform)}}_applyEffectsToPaint(t,e,r=!0){if(this.ctx&&this._currentPath){let o,n=!1;if(r&&this._hasDropShadow()){let a=t.copy();a.setColor(hd(this._dropShadowColor));let s;this._dropShadowBlur>0&&(s=Te.MaskFilter.MakeBlur(Te.BlurStyle.Normal,this._dropShadowBlur*this.dpr*(this.camera?.scale??1),!1),a.setMaskFilter(s)),this.ctx.save(),this.ctx.clipPath(this._currentPath,Te.ClipOp.Difference,!0),this._applyShadowOffsetMatrix(),e(a),this.ctx.restore(),a.delete(),s?.delete()}if(this._backgroundBlur>0&&r){this.ctx.save(),this.ctx.clipPath(this._currentPath,Te.ClipOp.Intersect,!0);let a=Te.ImageFilter.MakeBlur(this._backgroundBlur,this._backgroundBlur,Te.TileMode.Clamp,null),s=t.copy();s.setImageFilter(a),s.setAlphaf(1);let l=this._currentPath.computeTightBounds();this.ctx.saveLayer(s,l,null,Te.SaveLayerInitWithPrevious),this.ctx.drawColor(t.getColor()),this.ctx.restore(),this.ctx.restore(),s.delete(),a.delete(),n=!0}if(this._layerBlur>0){let a=t.copy();o=Te.MaskFilter.MakeBlur(Te.BlurStyle.Normal,this._layerBlur*this.dpr*(this.camera?.scale??1),!1),a.setMaskFilter(o),e(a),a.delete(),o.delete(),n=!0}if(n||e(t),r&&this._hasInnerShadow()){let a=new Te.Paint;a.setAntiAlias(!0),a.setStyle(Te.PaintStyle.Fill),a.setColor(hd(this._innerShadowColor));let s;this._innerShadowBlur>0&&(s=Te.MaskFilter.MakeBlur(Te.BlurStyle.Normal,this._innerShadowBlur*this.dpr*(this.camera?.scale??1),!1),a.setMaskFilter(s));let l=this._currentPath.computeTightBounds(),[c,u,p,d]=l,f=p-c,h=d-u;this.ctx.save(),this.ctx.clipPath(this._currentPath,Te.ClipOp.Intersect,!0),this.ctx.saveLayer(a,l,null,Te.SaveLayerInitWithPrevious),this.ctx?.translate(this._innerShadowOffsetX,this._innerShadowOffsetY),this.ctx.drawRect(Te.XYWHRect(-1e3-this._innerShadowOffsetX,-1e3-this._innerShadowOffsetY,2e3+f+Math.abs(this._innerShadowOffsetX*2),2e3+h+Math.abs(this._innerShadowOffsetY*2)),a),a.setBlendMode(Te.BlendMode.Clear),this.ctx.drawPath(this._currentPath,a),this.ctx.restore(),this.ctx.restore(),a.delete(),s?.delete()}}}_paintInner(t,e=!0){if(this.ctx&&this._currentPath&&t){let r=this.ctx,o=this._currentPath;this._applyEffectsToPaint(t,n=>{let a=!1;!e&&this._strokeMode!=="center"&&(r.save(),r.clipPath(o,this._strokeMode==="outside"?Te.ClipOp.Difference:Te.ClipOp.Intersect,!0),a=!0),r.drawPath(o,n),a&&r.restore()},e)}}_hasDropShadow(){return this._dropShadowColor?.a>0}_hasInnerShadow(){return this._innerShadowColor?.a>0}path(t){this._currentPath?.addPath(Te.Path.MakeFromSVGString(t))}ellipse(t,e,r,o,n,a,s,l){if(!w1([t,e,r,o])||!this._currentPath)return;if(r<0||o<0)throw Error("radii cannot be negative");let c=Te.XYWHRect(t-r,e-o,r*2,o*2);this._currentPath?.addOval(c)}rect(t,e,r,o,n=0,a=0,s=0,l=0){let c=Te.XYWHRect(t,e,r,o);if(!!w1(c))if(n===0&&a===0&&l===0&&s===0)this._currentPath?.addRect(c);else{let u=Te.RRectXY(c,n,n);u[4]=u[5]=n,u[6]=u[7]=a,u[8]=u[9]=s,u[10]=u[11]=l,this._currentPath?.addRRect(u)}}getHorizontalAlign(t){switch(t){case 2:return Te.TextAlign.Right;case 3:return Te.TextAlign.Center;case 4:return Te.TextAlign.Justify;case 1:default:return Te.TextAlign.Left}}drawTextInner(t,e,r,[o,n,a,s],l,c,u=!0){let p=0,{ctx:d}=this;if(!d)return p;let f=c.copy(),h=c.copy();return h.setAlphaf(0),this._applyEffectsToPaint(f,m=>{e.pushPaintStyle(r,m,h),e.addText(t);let y=e.build();y.layout(a);let b=n;l===2?b+=(s-y.getHeight())/2:l===3&&(b+=s-y.getHeight()),d.drawParagraph(y,o,b),p=y.getHeight(),e.reset(),y.delete()},u),f.delete(),h.delete(),p}drawText(t,e){let r=0,o=this._fonts.get(e.font),{ctx:n,_paintFill:a,_paintStroke:s}=this;if(o&&n){let l=new Te.TextStyle({fontFamilies:[e.font],fontSize:e.fontSize,heightMultiplier:e.lineHeight,letterSpacing:e.letterSpacing}),c=new Te.ParagraphStyle({textStyle:l,textAlign:this.getHorizontalAlign(e.horizontalAlign)}),u=Te.XYWHRect(e.x,e.y,e.width,e.height),p=Te.ParagraphBuilder.Make(c,o);a&&(r=this.drawTextInner(t,p,l,u,e.verticalAlign,a,!0)),s&&(r=this.drawTextInner(t,p,l,u,e.verticalAlign,s,!1)),p.delete()}return{height:r}}render(){this._surface?.flush()}moveTo(t,e){this._currentPath?.moveTo(t,e)}lineTo(t,e){this._currentPath?.lineTo(t,e)}bezierCurveTo(t,e,r,o,n,a){this._currentPath?.cubicTo(t,e,r,o,n,a)}quadraticCurveTo(t,e,r,o){this._currentPath?.quadTo(t,e,r,o)}setTransform(t,e=!1){if(!this.ctx)return;let r=this.ctx.getTotalMatrix(),o=Ee.invert(r);if(o&&this.ctx.concat(o),this.ctx?.scale(this.dpr,this.dpr),this.camera?.enabled&&(this.ctx?.concat(this.camera.worldMatrix),e)){let n=Ee.getScale(this.camera.worldMatrix);this.ctx?.scale(1/n[0],1/n[1])}this.ctx?.concat(t),this.currentTransform=t}transform(t){this.ctx?.concat(t)}setSize(t,e){!this._isSizeDirty&&t===this._width&&e===this._height||(this._isSizeDirty=!1,this._width=t,this._height=e,this.canvas.style.width=t+"px",this.canvas.style.height=e+"px",this.canvas.width=t*this.dpr,this.canvas.height=e*this.dpr,this._surface&&(this._surface=Te.MakeWebGLCanvasSurface(this.canvas),this.ctx=this._surface?.getCanvas()))}};function w1(i){for(let t=0;t<i.length;t++)if(i[t]!==void 0&&!Number.isFinite(i[t]))return!1;return!0}function hd({r:i,g:t,b:e,a:r}){return Te.Color4f(i,t,e,r)}var Dl=class{constructor(t,e,r){this.uuid=t;this.data=e;this.enabled=!1;this.color=Ie.transparent;this.blurRadius=0;this.offset=[0,0];this.spread=0;this.update(e)}update(t){t.color!==void 0&&(this.color=t.color),t.enabled!==void 0&&(this.enabled=t.enabled),t.blurRadius!==void 0&&(this.blurRadius=t.blurRadius),t.offset!==void 0&&(this.offset=t.offset),t.spread!==void 0&&(this.spread=t.spread)}};var _l=class{constructor(t,e,r){this.uuid=t;this.data=e;this.enabled=!1;this.radius=0;this.update(e)}update(t){t.enabled!==void 0&&(this.enabled=t.enabled),t.radius!==void 0&&(this.radius=t.radius)}};var md=class{constructor(t,e,r){this.uuid=t;this.data=e;this.enabled=!1;this.color=Ie.transparent;this.update(e)}update(t){t.enabled!==void 0&&(this.enabled=t.enabled),t.color!==void 0&&(this.color=t.color)}};var yd=class{constructor(t,e,r){this.uuid=t;this.data=e;this.enabled=!1;this.color=Ie.transparent;this.thickness=0;this.mode="inside";this.update(e)}update(t){t.enabled!==void 0&&(this.enabled=t.enabled),t.color!==void 0&&(this.color=t.color),t.thickness!==void 0&&(this.thickness=t.thickness),t.mode!==void 0&&(this.mode=t.mode)}};var sr=class extends Yo{constructor(e,r,o){super(e,r,o);this.uuid=e;this.data=r;this.autoClose=!0;this.fill=new md(e+"-fill",r.fill,o),this.stroke=new yd(e+"-stroke",r.stroke,o),this.dropShadow=new Dl(e+"-dropShadow",r.dropShadow,o),this.innerShadow=new Dl(e+"-innerShadow",r.innerShadow,o),this.backgroundBlur=new _l(e+"-backgroundBlur",r.backgroundBlur,o),this.layerBlur=new _l(e+"-layerBlur",r.layerBlur,o)}applyFillStroke(e){e.fillColor=this.fill.enabled?this.fill.color:Ie.transparent,e.strokeColor=this.stroke.enabled&&this.stroke.thickness>0?this.stroke.color:Ie.transparent,e.strokeMode=this.stroke.mode,e.lineWidth=this.stroke.thickness}applyFilters(e){this.layerBlur.enabled?e.layerBlur=this.layerBlur.radius*5:e.layerBlur=0,this.backgroundBlur.enabled?e.backgroundBlur=this.backgroundBlur.radius*5:e.backgroundBlur=0,this.dropShadow.enabled?(e.dropShadowBlur=this.dropShadow.blurRadius*5,e.dropShadowColor=this.dropShadow.color,e.dropShadowOffsetX=this.dropShadow.offset[0],e.dropShadowOffsetY=this.dropShadow.offset[1]):e.dropShadowColor=Ie.transparent,this.innerShadow.enabled?(e.innerShadowSpread=this.innerShadow.spread,e.innerShadowBlur=this.innerShadow.blurRadius*5,e.innerShadowColor=this.innerShadow.color,e.innerShadowOffsetX=this.innerShadow.offset[0],e.innerShadowOffsetY=this.innerShadow.offset[1]):e.innerShadowColor=Ie.transparent}innerDraw(e){}draw(e){!this.visible||(e.save(),this.applyTransforms(e),this.applyFilters(e),this.applyFillStroke(e),e.beginPath(),this.innerDraw(e),this.autoClose&&e.closePath(),this.fill.enabled&&e.fill(),this.stroke.enabled&&e.stroke(),e.restore())}updateByPatchedOp(e,r,o){super.updateByPatchedOp(e,r,o),e.type===0&&(Le(e.path,["fill"])?this.fill.update(e.props):Le(e.path,["stroke"])?this.stroke.update(e.props):Le(e.path,["dropShadow"])?this.dropShadow.update(e.props):Le(e.path,["innerShadow"])?this.innerShadow.update(e.props):Le(e.path,["layerBlur"])?this.layerBlur.update(e.props):Le(e.path,["backgroundBlur"])?this.backgroundBlur.update(e.props):this.resetBBoxNeedsUpdate())}updateState(e,r){super.updateState(e,r),e.fill!==void 0&&this.fill.update(e.fill),e.stroke!==void 0&&this.stroke.update(e.stroke),e.dropShadow!==void 0&&this.dropShadow.update(e.dropShadow),e.innerShadow!==void 0&&this.innerShadow.update(e.innerShadow),e.layerBlur!==void 0&&this.layerBlur.update(e.layerBlur),e.backgroundBlur!==void 0&&this.backgroundBlur.update(e.backgroundBlur)}clone(e){let r=new sr(this.uuid,this.data,e);return r.parent=void 0,r}};var _i=class extends sr{constructor(e,r,o){super(e,r,o);this.uuid=e;this.data=r;this.width=0;this.height=0;this.updateState(r,o)}innerDraw(e){e.ellipse(this.width*.5,this.height*.5,this.width*.5,this.height*.5,0,0,Math.PI*2)}intersectsInLocalSpace(e,r){return f1(e,r,this.width*.5,this.height*.5,this.width*.5,this.height*.5)}getCenter(){return[this.width*.5,this.height*.5]}getHalfSize(){return[this.width*.5,this.height*.5]}updateSizeState(e){let r=!1;e.width!==void 0&&(this.width=typeof e.width=="number"?e.width:this.width,r=!0),e.height!==void 0&&(this.height=typeof e.height=="number"?e.height:this.height,r=!0),r&&this.updateWorldMatrix(!0,!1,!0)}updateState(e,r){super.updateState(e,r),this.updateSizeState(e)}clone(e){let r=new _i(this.uuid,this.data,e);return r.parent=void 0,r}};var So=class extends sr{constructor(e,r,o){super(e,r,o);this.uuid=e;this.data=r;this.width=0;this.height=0;this.cornerRadius=[0,0,0,0];this.updateState(r,o)}innerDraw(e){e.rect(0,0,this.width,this.height,...this.cornerRadius)}getCenter(){return[this.width*.5,this.height*.5]}getHalfSize(){return[this.width*.5,this.height*.5]}updateCornerState(e){e.cornerRadius!==void 0&&(this.cornerRadius=e.cornerRadius)}updateSizeState(e){let r=!1;e.width!==void 0&&(this.width=typeof e.width=="number"?e.width:this.width,r=!0),e.height!==void 0&&(this.height=typeof e.height=="number"?e.height:this.height,r=!0),r&&this.updateWorldMatrix(!0,!1,!0)}updateState(e,r){super.updateState(e,r),this.updateSizeState(e),this.updateCornerState(e)}clone(e){let r=new So(this.uuid,this.data,e);return r.parent=void 0,r}};var Ri=class extends sr{constructor(e,r,o){super(e,r,o);this.uuid=e;this.data=r;this._textHeight=0;this._textHeightDirty=!0;this.width=0;this.height=0;this.updateState(r,o)}get textHeight(){return this._textHeight}applyFillStroke(e){e.fillColor=this.fill.enabled?this.fill.color:Ie.transparent,e.strokeColor=this.stroke.enabled&&this.stroke.thickness>0?this.stroke.color:Ie.transparent,e.strokeMode="center",e.lineWidth=this.stroke.thickness}innerDraw(e){this._fontHolder?.arrayBuffer&&this._fontHolder.arrayBuffer.byteLength>1&&this.data.font&&e.registerFont(this._fontHolder.arrayBuffer,this.data.font);let r=this.data.textTransform,o=this.data.text.textValue.toString(),n=r===2?o.toUpperCase():r===3?o.toLowerCase():o,{height:a}=e.drawText(n,{x:0,y:0,width:this.width,height:this.height,fontSize:this.data.fontSize,lineHeight:this.data.lineHeight??1,letterSpacing:this.data.letterSpacing??0,horizontalAlign:this.data.horizontalAlign,verticalAlign:this.data.verticalAlign,font:this.data.font});this._textHeight=a}getCenter(){return[this.width*.5,this.height*.5]}getHalfSize(){return[this.width*.5,this.height*.5]}updateSizeState(e){let r=!1;e.width!==void 0&&(this.width=typeof e.width=="number"?e.width:this.width,r=!0),e.height!==void 0&&(this.height=typeof e.height=="number"?e.height:this.height,r=!0),r&&this.updateWorldMatrix(!0,!1,!0)}updateFontState(e,{shared:r}){e.font!==void 0&&(this._fontHolder=r.getFont(e.font),this._fontHolder&&!this._fontHolder.isLoaded&&this._fontHolder.loadingPromise.then(()=>{this.requestRender()}))}updateState(e,r){super.updateState(e,r),this.updateSizeState(e),this.updateFontState(e,r)}clone(e){let r=new Ri(this.uuid,this.data,e);return r.parent=void 0,r}};var gs=class extends sr{constructor(e,r,o){super(e,r,o);this.uuid=e;this.data=r;this.curves=[];this.extremasBBox={min:[0,0],max:[0,0]};this.updateState(r,o)}computeExtremas(){this.curves.length===0&&this.computeCurves();let e=this.curves.map(n=>gd.extremas(n)),r=[1/0,1/0],o=[-1/0,-1/0];for(let n=0,a=e.length;n<a;n++){let s=e[n];s[0][0]<r[0]&&(r[0]=s[0][0]),s[0][1]<r[1]&&(r[1]=s[0][1]),s[1][0]>o[0]&&(o[0]=s[1][0]),s[1][1]>o[1]&&(o[1]=s[1][1])}return this.extremasBBox.min=[r[0],r[1]],this.extremasBBox.max=[o[0],o[1]],this.extremasBBox}computeCurves(){this.curves=[];for(let o=1,n=this.data.points.length;o<n;o++){let a=this.data.points[o].data,s=this.data.points[o-1].data,l={start:s.position,cp1:s.controlNext.position,cp2:a.controlPrevious.position,end:a.position};this.curves.push(l)}let e=this.data.points[0].data,r=this.data.points[this.data.points.length-1].data;if(this.data.isClosed){let o={start:r.position,cp1:r.controlNext.position,cp2:e.controlPrevious.position,end:e.position};this.curves.push(o)}}getCenter(){let[e,r]=this.extremasBBox.min,[o,n]=this.getHalfSize();return[e+o,r+n]}getHalfSize(){let{min:e,max:r}=this.extremasBBox;return[(r[0]-e[0])*.5,(r[1]-e[1])*.5]}innerDraw(e){for(let n=0,a=this.data.points.length;n<a;n++){let s=this.data.points[n].data;if(n===0){let[l,c]=s.position;e.moveTo(l,c)}else{let l=this.data.points[n-1].data,[c,u]=l.controlNext.position,[p,d]=s.controlPrevious.position,[f,h]=s.position,m={start:l.position,cp1:l.controlNext.position,cp2:s.controlPrevious.position,end:s.position};gd.derive(m),e.bezierCurveTo(c,u,p,d,f,h)}}let r=this.data.points[0].data,o=this.data.points[this.data.points.length-1].data;if(this.data.isClosed){let[n,a]=o.controlNext.position,[s,l]=r.controlPrevious.position,[c,u]=r.position;e.bezierCurveTo(n,a,s,l,c,u)}}updateState(e,r){super.updateState(e,r),this.computeExtremas()}clone(e){let r=new gs(this.uuid,this.data,e);return r.parent=void 0,r}},gd;(n=>{function i(a){let s=a.start,l=a.cp1,c=a.cp2,u=a.end,p=[3*(l[0]-s[0]),3*(l[1]-s[1])],d=[3*(c[0]-l[0]),3*(c[1]-l[1])],f=[3*(u[0]-c[0]),3*(u[1]-c[1])],h={start:p,cp:d,end:f};return a.derivative=h,h.derivative=Rh.derive(h),h}n.derive=i;function t(a,s,l,c=!1){let u=a-2*s+l;if(u!==0){let p=-Math.sqrt(Math.abs(s*s-a*l)),d=-a+s,f=-(p+d)/u,h=-(-p+d)/u;return[f,h]}else if(s!==l&&u===0)return[(2*s-l)/(2*(s-l))];return[]}function e(a){let s=a.derivative??n.derive(a),l=s.start,c=s.cp,u=s.end;return[t(l[0],c[0],u[0]),t(l[1],c[1],u[1])]}n.droot=e;function r(a){let[s,l]=n.droot(a),c=[a.start[0],a.end[0]],u=[a.start[1],a.end[1]];for(let p of s)c.push(n.compute(a,Math.min(1,Math.max(0,p)))[0]);for(let p of l)u.push(n.compute(a,Math.min(1,Math.max(0,p)))[1]);return c.sort((p,d)=>p-d),u.sort((p,d)=>p-d),[[c[0],u[0]],[c[c.length-1],u[u.length-1]]]}n.extremas=r;function o(a,s){if(s===0)return[...a.start];if(s===1)return[...a.end];let l=1-s,c=l*l,u=s*s,p=c*l,d=c*s*3,f=l*u*3,h=s*u;return[p*a.start[0]+d*a.cp1[0]+f*a.cp2[0]+h*a.end[0],p*a.start[1]+d*a.cp1[1]+f*a.cp2[1]+h*a.end[1]]}n.compute=o})(gd||(gd={}));var Rh;(r=>{function i(o){let n=o.start,a=o.cp,s=o.end,l=[2*(a[0]-n[0]),2*(a[1]-n[1])],c=[2*(s[0]-a[0]),2*(s[1]-a[1])],u={start:l,end:c};return u.derivative=Lh.derive(u),o.derivative=u,u}r.derive=i;function t(o){let n=o.derivative??r.derive(o),a=n.start,s=n.end;return[a[0]!==s[0]?a[0]/(a[0]-s[0]):0,a[1]!==s[1]?a[1]/(a[1]-s[1]):0]}r.droot=t;function e(o,n){if(n===0)return[...o.start];if(n===1)return[...o.end];let a=1-n,s=a*a,l=n*n,c=s,u=a*n*2,p=l;return[c*o.start[0]+u*o.cp[0]+p*o.end[0],c*o.start[1]+u*o.cp[1]+p*o.end[1]]}r.compute=e})(Rh||(Rh={}));var Lh;(e=>{function i(r){let o=r.start,n=r.end,a=[n[0]-o[0],n[1]-o[1]];return r.derivative=a,r.derivative}e.derive=i;function t(r,o){if(o===0)return[...r.start];if(o===1)return[...r.end];let n=r.start,a=r.end;return[n[0]+(a[0]-n[0])*o,n[1]+(a[1]-n[1])*o]}e.compute=t})(Lh||(Lh={}));var hr=class extends Ut{constructor(e,r,o){super(e,r,o);this.uuid=e;this.width=0;this.height=0;this.clipped=!0;this.background=new So(e+"-background",ya.defaultData,o),this.background.parent=this,this.updateState(r,o)}get fill(){return this.background.fill}get stroke(){return this.background.stroke}get backgroundBlur(){return this.background.backgroundBlur}get layerBlur(){return this.background.layerBlur}get dropShadow(){return this.background.dropShadow}get innerShadow(){return this.background.innerShadow}get cornerRadius(){return this.background.cornerRadius}set cornerRadius(e){this.background.cornerRadius=e}updateLocalMatrix(){super.updateLocalMatrix(),this.background?.updateLocalMatrix()}updateWorldMatrix(e,r,o){super.updateWorldMatrix(e,r,o),this.background?.updateWorldMatrix(e,r,o)}draw(e){if(!this.visible)return;e.save();let r=this.width,o=this.height;this.applyTransforms(e),this.background.width=r,this.background.height=o,this.background.draw(e),this.clipped&&e.clipRect(0,0,r,o,...this.cornerRadius),this.innerDrawChildren(e),e.restore()}getCenter(){return[this.width*.5,this.height*.5]}getHalfSize(){return[this.width*.5,this.height*.5]}updateCornerState(e){e.cornerRadius!==void 0&&(this.cornerRadius=e.cornerRadius)}updateSizeState(e){let r=!1;e.width!==void 0&&(this.width=typeof e.width=="number"?e.width:this.width,r=!0),e.height!==void 0&&(this.height=typeof e.height=="number"?e.height:this.height,r=!0),r&&this.updateWorldMatrix(!0,!1,!0)}updateState(e,r){super.updateState(e,r),this.updateSizeState(e),this.updateCornerState(e),e.fill!==void 0&&this.fill.update(e.fill),e.stroke!==void 0&&this.stroke.update(e.stroke),e.dropShadow!==void 0&&this.dropShadow.update(e.dropShadow),e.innerShadow!==void 0&&this.innerShadow.update(e.innerShadow),e.layerBlur!==void 0&&this.layerBlur.update(e.layerBlur),e.backgroundBlur!==void 0&&this.backgroundBlur.update(e.backgroundBlur),e.clipped!==void 0&&(this.clipped=e.clipped)}requestRender(){super.requestRender(),this.dispatchEvent({type:"render"})}dispose(){this.removeEventListener("render")}updateByPatchedOp(e,r,o){super.updateByPatchedOp(e,r,o),e.type===0&&(Le(e.path,["fill"])?this.fill.update(e.props):Le(e.path,["stroke"])?this.stroke.update(e.props):Le(e.path,["dropShadow"])?this.dropShadow.update(e.props):Le(e.path,["innerShadow"])?this.innerShadow.update(e.props):Le(e.path,["layerBlur"])?this.layerBlur.update(e.props):Le(e.path,["backgroundBlur"])?this.backgroundBlur.update(e.props):this.resetBBoxNeedsUpdate())}clone(e){let r=new hr(this.uuid,this.data,e);r.parent=void 0;for(let o of this.children)r.add(o.clone(e));return r}};var A1=Ms(Bh(),1),Ko=class extends sr{constructor(e,r,o){super(e,r,o);this.uuid=e;this.data=r;this._pathBBox=new DOMRect;this.path="";this.updateState(r,o),this.autoClose=!1,this.computeSVGBBox()}computeSVGBBox(){let e=this.path;M1(this.path)&&(console.warn("Invalid SVG path",this.uuid),e="");let r=document.createElementNS("http://www.w3.org/2000/svg","svg"),o=document.createElementNS("http://www.w3.org/2000/svg","path");document.body.appendChild(r),o.setAttribute("d",e),r.appendChild(o),this._pathBBox=o.getBBox(),r.remove()}innerDraw(e){e.path(this.path)}intersectsInLocalSpace(e,r){return e>=this._pathBBox.x&&e<=this._pathBBox.x+this._pathBBox.width&&r>=this._pathBBox.y&&r<=this._pathBBox.y+this._pathBBox.height}getCenter(){return[(this._pathBBox.x+this._pathBBox.width)/2,(this._pathBBox.y+this._pathBBox.height)/2]}getHalfSize(){return[(this._pathBBox.x+this._pathBBox.width)/2,(this._pathBBox.y+this._pathBBox.height)/2]}updateState(e,r){super.updateState(e,r),e.path!==void 0&&(this.path=e.path,this.computeSVGBBox())}clone(e){let r=new Ko(this.uuid,this.data,e);return r.parent=void 0,r}};function M1(i){return/NaN/.test(i)}function I1(i,t=1,e=1){if(t<=0||e<=0)return i;if(M1(i))return console.warn("Cannot scale invalid path",i),bd([]);try{let o=(0,A1.parseSVG)(i).map(n=>{let a={...n};return"x"in a&&(a.x=a.x*t),"y"in a&&(a.y=a.y*e),"x1"in a&&(a.x1=a.x1*t),"x2"in a&&(a.x2=a.x2*t),"y1"in a&&(a.y1=a.y1*e),"y2"in a&&(a.y2=a.y2*e),"rx"in a&&(a.rx=a.rx*t),"ry"in a&&(a.ry=a.ry*e),a});return bd(o)}catch(r){return console.warn("Error parsing SVG path",r),bd([])}}function bd(i){let t=["rx","ry","xAxisRotation","largeArc","sweep","x1","y1","x2","y2","x","y"],e;return i.map(r=>{let o=[];t.forEach(a=>{if(a in r){let s=r[a]*1;o.length&&s>=0&&o.push(","),o.push(s)}});let n=(e===r.code?o[0]<0?"":",":r.code)+o.join("");return e=r.code,n}).join("")}function E1(i,t,e){switch(t.type){case"ellipse2d":return new _i(i,t,e);case"rectangle2d":return new So(i,t,e);case"text2d":return new Ri(i,t,e);case"vector2d":return new gs(i,t,e);case"path2d":return new Ko(i,t,e);case"frame2d":return new hr(i,t,e);case"group2d":default:return new ar(i,t,e)}}var Vh=class{constructor(t,e,r){this.uuid=t;this.data=e;this.group=new ar(Vh.GROUP_ID,{...ks.defaultData},r),this.createChildrenObjects(e.objects,this.group,r)}createObject(t,e,r,o,n,a){let s=E1(t,e,a);s&&(o.add(s),o.children.splice(n,0,o.children.pop()),s.updateWorldMatrix(),r.length>0&&(s instanceof ar||s instanceof hr)&&this.createChildrenObjects(r,s,a))}createChildrenObjects(t,e,r){let o=0;for(let n of t)this.createObject(n.id,n.data,n.children,e,o,r),o+=1}draw(t){this.group.draw(t)}updateEntityByOp(t,e,r,o){let n=this.find(t);if(n)try{n.updateByOp(e,r,{shared:o})}catch(a){console.error(a)}}updateTreeByOp(t,e){if(t.path.length===0&&t.type===7){let r=t.parent===null?this.group:this.find(t.parent);r!==void 0&&r instanceof Ut&&(this.createObject(t.id,t.data,t.children,r,t.localIndex,e),r.requestRender())}else if(t.path.length===0&&t.type===8){let r=this.find(t.id);if(r!==void 0&&r.parent!==void 0&&r.parent instanceof Ut){let o=r.parent;r.resetBBoxNeedsUpdate(),o?.remove(r),o?.requestRender()}}else if(t.path.length===0&&t.type===9){let r=this.find(t.id);if(r!==void 0){let o=r.parent,n=t.parent===null?this:this.find(t.parent);if(n===void 0&&!1&&console.error("unexpected",n,t),n instanceof Ut||n===this){n.add(r);let a=t.localIndex;n.children.splice(a,0,n.children.pop()),r.updateWorldMatrix(!0,!1,!0),o?.requestRender(),r.requestRender()}r.resetBBoxNeedsUpdate()}}}add(t){this.group.add(t)}remove(t){this.group.remove(t)}traverse(t){this.group.traverse(e=>{e!==this.group&&t(e)})}intersectsChildren(t,e,r,o=!1,n=[]){return this.group.intersectsChildren(t,e,r,o,n,!0)}intersectsChildrenReverse(t,e,r,o=!1,n=[]){return this.group.intersectsChildrenReverse(t,e,r,o,n,!0)}find(t){return this.group.find(t)}get children(){return this.group.children}project(t,e){return this.group.project(t,e)}getWithSortKey(t){let e=this.find(t);if(e===void 0)return;let r=[],o=e;for(;o!==this.group;){let n=o;o=o.parent;let a=o.children.indexOf(n);r.splice(0,0,a)}return{entity:e,sortKey:r}}getAllSorted(t){let e=[];for(let r of t){let o=this.getWithSortKey(r.id);o!==void 0&&e.push(o)}return e.sort((r,o)=>ql(r.sortKey,o.sortKey)),e.map(r=>r.entity)}},wn=Vh;wn.GROUP_ID="scene2d";function zh({constraints:i,newParentWidth:t,newParentHeight:e,initialParentWidth:r,initialParentHeight:o,objectInitialWidth:n,objectInitialHeight:a,objectInitialPosition:s}){let{horizontalConstraint:l,verticalConstraint:c}=i,u=t-r,p=e-o,d=n,f=a,h=s[0],m=s[1];if(l!==0){if(l===1)h+=u;else if(l===3)h+=u/2;else if(l===2)d=Math.max(1,d+u);else if(l===4){let y=t/r;d*=y,h*=y}}if(c!==0){if(c===1)m+=p;else if(c===3)m+=p/2;else if(c===2)f=Math.max(1,f+p);else if(c===4){let y=e/o;f*=y,m*=y}}return{width:d,height:f,position:[h,m]}}var c_=Ms(Bh(),1);var Hce={mm:{mm:1,cm:.1,in:1/25.4,pt:72/25.4,pc:6/25.4,px:-1},cm:{mm:10,cm:1,in:1/2.54,pt:72/2.54,pc:6/2.54,px:-1},in:{mm:25.4,cm:2.54,in:1,pt:72,pc:6,px:-1},pt:{mm:25.4/72,cm:2.54/72,in:1/72,pt:1,pc:6/72,px:-1},pc:{mm:25.4/6,cm:2.54/6,in:1/6,pt:72/6,pc:1,px:-1},px:{mm:1,px:1,cm:1,in:1,pt:1,pc:1}};import{BufferGeometry as u_,CanvasTexture as d_,Float32BufferAttribute as N1,HalfFloatType as p_,MathUtils as f_,Mesh as h_,OrthographicCamera as m_,ShaderMaterial as y_,Uniform as g_,WebGLRenderTarget as x_}from"three";var b_=`
|
|
2663
|
+
`,WD=Il.lights_fragment_begin,qD=Il.shadowmask_pars_fragment,o1=null,$D=i=>{switch(i){case"low":return 8;case"medium":return 16;case"high":return 32;default:return 16}},i1=(i="medium")=>{if(o1===i)return!1;o1=i;let t=$D(i);Il.shadowmap_pars_fragment=HD(t);let e=WD.slice();e=e.replace("getShadow( spotShadowMap[ i ]",`getShadow( UNROLLED_LOOP_INDEX + ${3}, spotShadowMap[ i ]`),e=e.replace("getShadow( directionalShadowMap[ i ]","getShadow( UNROLLED_LOOP_INDEX, directionalShadowMap[ i ]"),Il.lights_fragment_begin=e;let r=qD.slice();return r=r.replaceAll("getShadow(","getShadow( UNROLLED_LOOP_INDEX, "),Il.shadowmask_pars_fragment=r,!0};import{DirectionalLight as ZD,CameraHelper as n1}from"three";import{DirectionalLightHelper as XD}from"three";var hs=class extends vo(XD){constructor(e,r=15,o=10066329){super(e,r,o);this.object=e;this.added=!1;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,r){So(this.object,hs.geometryHelper,e,r)}};import{PointLightHelper as YD}from"three";var ms=class extends vo(YD){constructor(e,r=15,o=6710886){super(e,r,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,r){So(this.object,ms.geometryHelper,e,r)}};import{SpotLightHelper as KD,Vector3 as QD}from"three";var pd=class extends vo(KD){constructor(e,r=6710886){super(e,r);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,r){So(this.object,pd.geometryHelper,e,r)}update(){if(this.object!==void 0){let e=pd._vector,r=this.object.distance?this.object.distance:1e3,o=r*Math.tan(this.object.angle);this.cone.scale.set(o,o,r),e.setFromMatrixPosition(this.object.target.matrixWorld),this.cone.lookAt(e);let n=this.color!==void 0?this.color:this.light.color;if(this.cone.material instanceof Array)for(let a=0,s=this.cone.material.length;a<s;a++)this.cone.material[a].color.set(n);else this.cone.material.color.set(n)}}},El=pd;El._vector=new QD;function JD(i,t){i.shadow.camera.right=t/2,i.shadow.camera.left=-t/2,i.shadow.camera.top=t/2,i.shadow.camera.bottom=-t/2,i.shadow.needsUpdate=!0}var ys=class extends ps(ZD,hs){constructor(t,e,r){super(),this.super_Entity(t,e),this.castShadow=!0,this.shadow.mapSize.width=2048,this.shadow.mapSize.height=2048,this.shadow.normalBias=1,this.layers.enable(3);let n=this.shadow.camera;n.top=1250,n.bottom=-1250,n.right=1250,n.left=-1250,n.near=-1e4,n.far=2500;let a=new n1(this.shadow.camera);a.visible=!1,this.gizmos.shadowmap=a}update(){this.shadow.camera.updateProjectionMatrix();for(let t in this.gizmos){let e=this.gizmos[t];e instanceof n1&&e.update()}}updateMatrixWorld(t){super.updateMatrixWorld(t),this.objectHelper&&this.objectHelper.update()}updateState(t,e){this.updateState_Light(t,e);let r=t.depth!==void 0&&t.depth!==this.shadow.camera.far||t.size!==void 0&&t.size/2!==this.shadow.camera.right;t.size!==void 0&&JD(this,t.size),t.shadowRadius!==void 0&&(this.shadow.radius=t.shadowRadius),t.shadowResolution!==void 0&&(this.shadow.mapSize.set(t.shadowResolution,t.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),t.penumbraSize!==void 0&&e.scene.markPenumbraSizeDirty(),r&&this.update()}};import{Scene as R_}from"three";import{SpotLight as e_,CameraHelper as a1,MathUtils as t_,Vector3 as u1,Quaternion as r_}from"three";var s1=new u1,l1=new u1,c1=new r_,gs=class extends ps(e_,El){constructor(t,e,r){super(),this.super_Entity(t,e),this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1,this.layers.enable(3);let n=this.shadow.camera;n.fov=t_.RAD2DEG*2*this.angle,n.aspect=1,n.near=100,n.far=2500;let a=new a1(this.shadow.camera);a.visible=!1,this.gizmos.shadowmap=a,this.update()}update(){this.shadow.camera.updateProjectionMatrix();for(let t in this.gizmos){let e=this.gizmos[t];e instanceof a1&&e.update()}}updateMatrixWorld(t){super.updateMatrixWorld(t),l1.setFromMatrixPosition(this.matrixWorld),c1.setFromRotationMatrix(this.matrixWorld),s1.copy(this.up).applyQuaternion(c1).negate().multiplyScalar(this.distance),this.target.position.copy(l1).add(s1),this.target.updateMatrixWorld(),this.objectHelper&&this.objectHelper.update()}updateState(t,e){this.updateState_Light(t,e),t.distance!==void 0&&(this.distance=t.distance),t.decay!==void 0&&(this.decay=t.decay),t.angle!==void 0&&(this.angle=t.angle),t.penumbra!==void 0&&(this.penumbra=t.penumbra),t.shadowRadius!==void 0&&(this.shadow.radius=t.shadowRadius),t.penumbraSize!==void 0&&e.scene.markPenumbraSizeDirty(),t.shadowResolution!==void 0&&(this.shadow.mapSize.set(t.shadowResolution,t.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null))}};function o_(i){let t=(i[0][0]+i[1][1])/2,e=(i[0][0]-i[1][1])/2,r=(i[1][0]+i[0][1])/2,o=(i[1][0]-i[0][1])/2,n=Math.sqrt(t*t+o*o),a=Math.sqrt(e*e+r*r),s=n+a,l=n-a,c=Math.atan2(r,e),u=Math.atan2(o,t),d=(u-c)/2,p=(u+c)/2,f=[[Math.cos(p),Math.sin(p)],[-Math.sin(p),Math.cos(p)]],h=[[s,0],[0,l]],m=[[Math.cos(d),Math.sin(d)],[-Math.sin(d),Math.cos(d)]];return f[0][0]*=-1,f[0][1]*=-1,m[0][0]*=-1,m[1][0]*=-1,[f,h,m]}function fd(i,t){return[[i[0][0]*t[0][0]+i[0][1]*t[1][0],i[0][0]*t[0][1]+i[0][1]*t[1][1]],[i[1][0]*t[0][0]+i[1][1]*t[1][0],i[1][0]*t[0][1]+i[1][1]*t[1][1]]]}function d1(i){return[[i[0][0],i[1][0]],[i[0][1],i[1][1]]]}function p1(i){let[t,e,r]=o_(i),o=fd(t,d1(r)),n=fd(fd(r,e),d1(r)),a=Math.atan2(o[1][0],o[0][0]),s=[n[0][0],n[1][1]],l=[n[0][1]/n[1][1],n[1][0]/n[0][0]];return{rotation:a,scale:s,shear:l}}function f1({rotation:i,scale:t,shear:e}){let r=Math.cos(i),o=Math.sin(i),n=[[r,-o],[o,r]],a=[[t[0],e[0]*t[1]],[e[1]*t[0],t[1]]],s=fd(n,a);return[s[0][0],s[1][0],s[0][1],s[1][1]]}var Ee;(S=>{function i(){return[1,0,0,0,1,0,0,0,1]}S.identity=i;function t(T,M=S.identity()){for(let g=0,D=T.length;g<D;g++)M[g]=T[g];return M}S.copy=t;function e(T,M,g,D,E,I){return S.setAbcdef(S.identity(),T,M,g,D,E,I)}S.create=e;function r(T,M,g,D,E,I,N){return T[0]=M,T[1]=D,T[2]=I,T[3]=g,T[4]=E,T[5]=N,T}S.setAbcdef=r;function o(T,M){let[g,D,E,I,N,_]=a(T),[R,V,U,B,q,j]=a(M),F=R*g+V*E,H=R*D+V*I,W=U*g+B*E,ee=U*D+B*I,te=q*g+j*E+N,Y=q*D+j*I+_;return S.create(F,H,W,ee,te,Y)}S.append=o;function n(T,M){let[g,D,E,I,N,_]=a(T),[R,V,U,B,q,j]=a(M),F=g,H=D,W=E,ee=I;(R!==1||V!==0||U!==0||B!==1)&&(F=g*R+D*U,H=g*V+D*B,W=E*R+I*U,ee=E*V+I*B);let te=N*R+_*U+q,Y=N*V+_*B+j;return S.create(F,H,W,ee,te,Y)}S.prepend=n;function a(T){return[T[0],T[3],T[1],T[4],T[2],T[5]]}S.getAbcdef=a;function s(T){let[M,g,D,E,I,N]=S.getAbcdef(T),_=M*E-g*D,R=E/_,V=-g/_,U=-D/_,B=M/_,q=(D*N-E*I)/_,j=-(M*N-g*I)/_;return S.create(R,V,U,B,q,j)}S.invert=s;function l([T,M],g){let[D,E,I,N,_,R]=S.getAbcdef(g);return[D*T+I*M+_,E*T+N*M+R]}S.apply=l;function c(T,M){let[g,D,E,I,N,_]=S.getAbcdef(M),R=1/(g*I+E*-D),[V,U]=T;return[I*R*V+-E*R*U+(_*E-N*I)*R,g*R*U+-D*R*V+(-_*g+N*D)*R]}S.applyInverse=c;function u(T,M,g=M){let[D,E,I,N,_,R]=S.getAbcdef(T);return S.setAbcdef(T,D*M,E*g,I*M,N*g,_*M,R*g),T}S.scale=u;function d(T,M){let g=Math.cos(M),D=Math.sin(M),[E,I,N,_,R,V]=S.getAbcdef(T);return S.setAbcdef(T,E*g-I*D,E*D+I*g,N*g-_*D,N*D+_*g,R*g-V*D,R*D+V*g),T}S.rotate=d;function p(T,M,g){let[D,E]=g,I=S.translate(T,-D,-E);return I=S.rotate(I,M),I=S.translate(I,D,E),I}S.rotateAround=p;function f(T,M,g){let[D,E,I,N,_,R]=S.getAbcdef(T);return S.setAbcdef(T,D,E,I,N,_+M,R+g),T}S.translate=f;function h(T,M,g){let[D,E,I,N]=S.getAbcdef(T);return S.setAbcdef(T,D,E,I,N,M,g),T}S.setTranslate=h;function m(T,M,g){let[D,E,I,N]=S.getAbcdef(T);return S.setAbcdef(T,D,E,I,N,M,g),T}S.setPosition=m;function y(T){let[M,g,D,E]=S.getAbcdef(T),I=Math.sqrt(M*M+g*g),N=Math.sqrt(D*D+E*E);return[I,N]}S.getScale=y;function x(T){let[,,,,M,g]=S.getAbcdef(T);return[M,g]}S.getPosition=x;function v(T,M){return S.decompose(T,M).rotation}S.getRotation=v;function w(T,M){let[g,D,E,I,N,_]=S.getAbcdef(T),{rotation:R,scale:V,shear:U}=p1([[g,E],[D,I]]);return{position:[N+(M[0]*g+M[1]*E)-M[0],_+(M[0]*D+M[1]*I)-M[1]],scale:V,rotation:R,shear:U,pivot:M}}S.decompose=w;function O(T,M,g,D,E=[0,0]){let[I,N]=T,[_,R]=D,[V,U,B,q]=f1({rotation:g,scale:M,shear:E}),j=I-(_*V+R*B)+_,F=N-(_*U+R*q)+R;return S.create(V,U,B,q,j,F)}S.compose=O})(Ee||(Ee={}));var i_=Math.PI/180,vse=180/Math.PI;function h1(i,t,e,r,o,n){let a=i-e,s=t-r;return a*a/(o*o)+s*s/(n*n)<=1}function m1(i){return i*i_}var Ko=class{constructor(t,e,r){this.uuid=t;this.data=e;this.localMatrix=Ee.identity();this.worldMatrix=Ee.identity();this.ignoreCameraZoom=!1;this.visible=!0;this._singleBBox=new _i;this._recursiveBBox=new _i;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this.stateSelection=null;this.prevState=null;this.currentState=null;this.reversibleToState=null;this.currentTransitionEvent=null;this.previousAction=null;this.name="";this.position=[0,0];this.scale=[1,1];this.rotation=0;this.shear=[0,0];this.emitter=Uo();this.dpr=r.dpr??1,this.dataPatched=e}project(t,e){let r=this.worldMatrix;return e&&(r=Ee.append(e.worldMatrix,r)),Ee.applyInverse(t,r)}intersects(t,e,r,o=!1){return this.visible&&!this.data.raycastLock&&this.intersectsInLocalSpace(...this.project([t,e],r),o)}intersectsInLocalSpace(t,e,r=!1){let{min:o,max:n}=r?this.recursiveBBox:this.singleBBox;return t>=o[0]&&t<=n[0]&&e>=o[1]&&e<=n[1]}applyTransforms(t){t.setTransform(this.worldMatrix,this.ignoreCameraZoom)}get singleBBox(){return this.singleBBoxNeedsUpdate&&(this.singleBBoxNeedsUpdate=!1,this._singleBBox.setFromObjectSize(this,!1),this._singleBBox.computeVertices(),this._singleBBox.computeEdges()),this._singleBBox}get recursiveBBox(){return this.recursiveBBoxNeedsUpdate&&(this.recursiveBBoxNeedsUpdate=!1,this._recursiveBBox.setFromObjectSize(this,!0),this._recursiveBBox.computeVertices(),this._recursiveBBox.computeEdges()),this._recursiveBBox}updateLocalMatrix(){this.localMatrix=Ee.compose(this.position,this.scale,m1(this.rotation),zo.getPivot(this.dataPatched),this.shear)}updateWorldMatrix(t,e,r){let o=this.parent;e&&o!==null&&o!==void 0&&o.updateWorldMatrix(t,!0,!1),t&&this.updateLocalMatrix(),this.parent?this.worldMatrix=Ee.append(this.parent.worldMatrix,this.localMatrix):this.worldMatrix=Ee.copy(this.localMatrix),this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0}get pivot(){return zo.getPivot(this.data)}getCenter(){return[0,0]}getHalfSize(){return[0,0]}get id(){return this.uuid}resetBBoxNeedsUpdateSelf(){this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0}resetBBoxNeedsUpdate(){this.resetBBoxNeedsUpdateSelf(),this.traverseAncestors(t=>{t.resetBBoxNeedsUpdateSelf()})}updateTransformState(t){let e=!1;t.position!==void 0&&(e=!0,this.position=t.position),t.rotation!==void 0&&(e=!0,this.rotation=t.rotation),t.scale!==void 0&&(e=!0,this.scale=t.scale),t.shear!==void 0&&(e=!0,this.shear=t.shear),e&&(this.updateWorldMatrix(!0,!1,!0),this.resetBBoxNeedsUpdate())}updateByOp(t,e,r){t.type===0&&t.props.visible!==void 0&&(this.visible=t.props.visible),this.data=e,this.data=e;let o=t,n=Le(t.path,["states","*"]);if(n!==null){if(t.type===0){let[a]=n;if(this?.stateSelection===a){let s={...t.props};if(delete s.name,Object.values(t.props).some(l=>l===void 0)){let l=this.data;if(l!==void 0){let c=Ze.zoom(l,t.path.slice(2));if(c)for(let u in t.props)t.props[u]===void 0&&u in c&&(s[u]=c[u])}}o={...t,props:s,path:t.path.slice(2)}}}}else if(t.type===0){let a=this.stateSelection?this.data.states.data(this.stateSelection):void 0;if(a!==void 0){if(t.props.name!==void 0&&a.name){let{name:l,...c}=a;a=c}let s=Ze.removeOverridden(t.path,t.props,a);o={...t,props:s}}}this.updateByPatchedOpBase(o,rn.patch(this.data,this.stateSelection?this.data.states.data(this.stateSelection):void 0),r)}changeSelectedState(t,e,r=!1){if(!(this.data.states.length===0&&!r)){for(let o of this.data.states)rn.toOps(this.data,o.data).forEach(a=>{let s=ta.replaceProps(a,this.data);this.dataPatched=this.data,this.updateByPatchedOp(s,this.data,e)});if(t!==null){let o=this.data.states.data(t);o&&(this.dataPatched=rn.patch(this.data,o),rn.toOps(this.data,o).forEach(a=>{this.updateByPatchedOp(a,this.dataPatched,e)}))}r&&this.updateTransformState(this.dataPatched),this.stateSelection=t}}updateState(t,e){t.name!==void 0&&(this.name=t.name),t.visible!==void 0&&(this.visible=t.visible),this.updateTransformState(t)}updateByPatchedOpBase(t,e,r){this.dataPatched=e,this.updateByPatchedOp(t,e,r)}updateByPatchedOp(t,e,r){t.path.length===0&&t.type===0&&this.updateState(t.props,r),this.requestRender()}traverseFrameAncestors(t){this.traverseAncestors(e=>{e.data.type==="frame2d"&&t(e)})}traverseAncestors(t){let e=this.parent;for(;e;)t(e),e=e.parent}requestRender(){this.traverseFrameAncestors(t=>{t.requestRender()})}clone(t){let e=new Ko(this.uuid,this.data,t);return e.parent=void 0,e}addEventListener(t,e){this.emitter.on(t,e)}removeEventListener(t,e){this.emitter.off(t,e)}dispatchEvent(t){this.emitter.emit(t.type,{...t,target:t.target??this})}traverseSortNextHelper(){let t=this.parent;if(t){let e=t.children;if(e){let r=e.indexOf(this)+1;return e[r]?e[r]:t.traverseSortNextHelper()}}}sortNext(){let t=this.children;return t&&t.length>0&&t[0]?t[0]:this.traverseSortNextHelper()}isDescendantOf(t){t instanceof Ko&&(t=t.uuid);let e=this;for(;e.parent;){if(e.parent.uuid===t)return!0;e=e.parent}return!1}};var kt=class extends Ko{constructor(e,r,o){super(e,r,o);this.uuid=e;this.data=r;this.context=o;this.children=[]}add(e){e.parent&&e.parent instanceof kt&&e.parent.remove(e),this.children.push(e),e.parent=this}remove(e){let r=this.children.indexOf(e);r>=0&&(this.children.splice(r,1),e.parent=void 0)}traverse(e){let r=e(this);if(r!==!0)for(let o of this.children)o instanceof kt?o.traverse(e):r=e(o)}intersectsChildrenHelper(e,r,o,n,a){for(let s of this.children)if(s.intersects(e,r,o,!1)&&(a.push(s),n)||s instanceof kt&&s.intersectsChildrenHelper(e,r,o,n,a))return!0;return!1}intersectsChildren(e,r,o,n=!1,a=[],s=!1){return this.intersectsChildrenHelper(e,r,o,n,a),a}intersectsChildrenHelperReverse(e,r,o,n,a){for(let s of this.children)if(s instanceof kt&&s.intersectsChildrenHelperReverse(e,r,o,n,a)||s.intersects(e,r,o,!1)&&(a.push(s),n))return!0;return!1}intersectsChildrenReverse(e,r,o,n=!1,a=[],s=!1){return this.intersectsChildrenHelperReverse(e,r,o,n,a),a}updateWorldMatrix(e,r,o){if(super.updateWorldMatrix(e,r,o),o&&this.children)for(let n of this.children)n.updateWorldMatrix(e,!1,!0)}find(e){let r;return this.traverse(o=>{o.uuid===e&&(r=o)}),r}innerDrawChildren(e){for(let r=this.children.length-1;r>=0;r--)this.children[r].draw(e)}resetBBoxNeedsUpdate(){super.resetBBoxNeedsUpdate(),this.traverse(e=>{e.resetBBoxNeedsUpdateSelf()})}clone(e){let r=new kt(this.uuid,this.data,e);r.parent=void 0;for(let o of this.children)r.add(o.clone(e));return r}},sr=class extends kt{constructor(e,r,o){super(e,r,o);this.uuid=e;this.data=r;this.updateState(r,o)}draw(e){!this.visible||(e.save(),this.applyTransforms(e),this.innerDrawChildren(e),e.restore())}clone(e){let r=new sr(this.uuid,this.data,e);r.parent=void 0;for(let o of this.children)r.add(o.clone(e));return r}};function n_(i,t){let[[e,r],[o,n]]=i,[[a,s],[l,c]]=t,u=(e-o)*(s-c)-(r-n)*(a-l);if(u===0)return!1;let d=((e-a)*(s-c)-(r-s)*(a-l))/u,p=-((e-o)*(r-s)-(r-n)*(e-a))/u;return d>=0&&d<=1&&p>=0&&p<=1}var g1=[[-1,1],[-1,-1],[1,-1],[1,1]],y1=(i,t,e)=>{let r=i.getCenter(),o=i.getHalfSize(),n=Ee.append(t,i.worldMatrix);o[0]===0&&o[1]===0?e.push(Ee.apply(r,n)):g1.forEach(a=>{let s=[a[0]*o[0]+r[0],a[1]*o[1]+r[1]];e.push(Ee.apply(s,n))})},_i=class{constructor(){this.matrix=Ee.identity();this.min=[1/0,1/0];this.max=[-1/0,-1/0];this.vertices=[];this.edges=[]}setFromObjectSize(t,e=!1){t.updateWorldMatrix(),this.makeEmpty(),Ee.copy(t.worldMatrix,this.matrix);let r=Ee.invert(t.worldMatrix);this.expandByObjectSize(t,r,e)}expandByObjectSize(t,e,r=!1){let o=[];r===!0&&t instanceof kt?t.traverse(n=>{n.visible&&y1(n,e,o)}):y1(t,e,o),this.setFromPoints(o)}setFromSize(t,e,r){this.makeEmpty(),Ee.copy(r,this.matrix),this.expandBySize(t,e,r)}expandBySize(t,e,r){[Ee.apply([0,0],r),Ee.apply([0,e],r),Ee.apply([t,e],r),Ee.apply([t,0],r)].forEach(n=>this.expandByPoint(n))}getCenter(){let[t,e]=this.min,[r,o]=this.getHalfSize();return Ee.apply([t+r,e+o],this.matrix)}getSize(){return[this.max[0]-this.min[0],this.max[1]-this.min[1]]}getHalfSize(){return[(this.max[0]-this.min[0])*.5,(this.max[1]-this.min[1])*.5]}makeEmpty(){this.min=[1/0,1/0],this.max=[-1/0,-1/0]}setFromPoints(t){this.makeEmpty();for(let e of t)this.expandByPoint(e)}expandByPoint(t){this.min=[Math.min(this.min[0],t[0]),Math.min(this.min[1],t[1])],this.max=[Math.max(this.max[0],t[0]),Math.max(this.max[1],t[1])]}computeVertices(){let[t,e]=this.getHalfSize(),r=this.getCenter(),[o,n,a,s]=Ee.getAbcdef(this.matrix),l=Ee.create(o,n,a,s,r[0],r[1]);this.vertices=g1.map(([c,u])=>Ee.apply([c*t,u*e],l))}computeEdges(){this.edges=[];for(let t=0,e=this.vertices.length;t<e;++t)this.edges.push([this.vertices[t],this.vertices[(t+1)%e]])}project(t,e){let r=this.matrix;return e&&(r=Ee.append(e.worldMatrix,r)),Ee.applyInverse(t,r)}intersects(t,e,r){return this.intersectsInLocalSpace(...this.project([t,e],r))}intersectsInLocalSpace(t,e){let{min:r,max:o}=this;return t>=r[0]&&t<=o[0]&&e>=r[1]&&e<=o[1]}containsPoint(t){let[e,r]=t,[o,n]=this.min,[a,s]=this.max;return e>=o&&e<=a&&r>=n&&r<=s}intersectsBBox2D(t){for(let e=0,r=this.edges.length;e<r;e++){let o=this.edges[e];for(let n=0,a=t.edges.length;n<a;n++){let s=t.edges[n];if(n_(o,s))return!0}}for(let e=0,r=t.vertices.length;e<r;e++){let o=t.vertices[e];if(this.containsPoint(o))return!0}return!1}ensureMinMax(){let t=this.min,e=this.max;this.min=[Math.min(t[0],e[0]),Math.min(t[1],e[1])],this.max=[Math.max(t[0],e[0]),Math.max(t[1],e[1])]}copy(t){this.min=[...t.min],this.max=[...t.max],Ee.copy(t.matrix,this.matrix),this.computeVertices(),this.computeEdges()}clone(){let t=new _i;return t.copy(this),t}};var b1,v1=new Promise(i=>{b1=i}),x1=!1;var hd;function S1(){if(x1)return;if(hd)return hd;async function i(){let e=await import("./ui.js");b1(e.default??e),x1=!0}return hd=i(),hd}function O1(i){let t=!1;return i.scene.objects.traverse((e,r)=>{(r.type==="Mesh"&&r.geometry.type==="UIGeometry"||r.type==="Page"&&r.uiFrame!==void 0)&&(t=!0)}),t}var Te,Rh;async function a_(i){let t=await v1;Te||(Rh||(Rh=t({locateFile:()=>i})),Te=await Rh)}var w1=Ee.identity(),Dl=class{constructor(t,e=1){this.canvas=t;this._dpr=e;this._width=0;this._height=0;this._strokeMode="inside";this._layerBlur=0;this._backgroundBlur=0;this._dropShadowBlur=0;this._dropShadowOffsetX=0;this._dropShadowOffsetY=0;this._dropShadowColor=Ie.transparent;this._innerShadowBlur=0;this._innerShadowOffsetX=0;this._innerShadowOffsetY=0;this._innerShadowSpread=0;this._innerShadowColor=Ie.transparent;this._fonts=new Map;this._isSizeDirty=!1;try{let r=t.getBoundingClientRect();t.width=r.width*e,t.height=r.height*e}catch{console.log(t.width,e)}this._currentM3Transform=w1,this._currentTransform=new Float32Array(w1)}get dpr(){return this._dpr}set dpr(t){this._dpr=t,this._isSizeDirty=!0}async init(){if(!this.wasmURL)throw Error("Your must set the wasm binary url with renderer.wasmURL = ... before you can call renderer.init");await a_(this.wasmURL),this._surface=Te.MakeWebGLCanvasSurface(this.canvas),this.ctx=this._surface?.getCanvas(),this._paint=new Te.Paint,this._paint.setAntiAlias(!0),this._paintFill=this._paint.copy(),this._paintFill.setStyle(Te.PaintStyle.Fill),this._paintStroke=this._paint.copy(),this._paintStroke.setStyle(Te.PaintStyle.Stroke),this.ctx?.scale(this.dpr,this.dpr)}get currentTransform(){return this._currentM3Transform}get currentTransformBuffer(){return this._currentTransform}set currentTransform(t){this._currentM3Transform=t,this._currentTransform.set(t)}async loadFont(t,e){let r=await(await fetch(t)).arrayBuffer();this.registerFont(r,e)}registerFont(t,e){if(this._fonts.has(e))return;let r=Te.FontMgr.FromData(t);if(r)this._fonts.set(e,r);else throw new Error("Invalid font data for "+e)}get width(){return this._width}get height(){return this._height}set strokeColor(t){this._paintStroke&&this._paintStroke.setColor(md(t),Te.ColorSpace.DISPLAY_P3)}set fillColor(t){this._paintFill&&this._paintFill.setColor(md(t),Te.ColorSpace.DISPLAY_P3)}set lineWidth(t){this._paintStroke&&this._paintStroke.setStrokeWidth(this._strokeMode==="center"?t:t*2)}set strokeMode(t){this._strokeMode=t}set dropShadowBlur(t){this._dropShadowBlur=t}set dropShadowColor(t){this._dropShadowColor=t}set dropShadowOffsetX(t){this._dropShadowOffsetX=t}set dropShadowOffsetY(t){this._dropShadowOffsetY=t}set innerShadowBlur(t){this._innerShadowBlur=t}set innerShadowColor(t){this._innerShadowColor=t}set innerShadowOffsetX(t){this._innerShadowOffsetX=t}set innerShadowOffsetY(t){this._innerShadowOffsetY=t}set innerShadowSpread(t){this._innerShadowSpread=t}set layerBlur(t){this._layerBlur=t}set backgroundBlur(t){this._backgroundBlur=t}clear(){this.ctx?.clear(Te.TRANSPARENT)}save(){this.ctx?.save()}restore(){this.ctx?.restore()}beginPath(){this._currentPath?.delete(),this._currentPath=new Te.Path}closePath(){let t=this._currentPath;if(t){if(t.isEmpty())return;let e=t.getBounds();(e[3]-e[1]||e[2]-e[0])&&t.close()}}fill(){this._paintInner(this._paintFill,!0)}stroke(){this._paintInner(this._paintStroke,!1)}clipRect(t,e,r,o,n=0,a=0,s=0,l=0){let c=Te.XYWHRect(t,e,r,o);if(n===0&&a===0&&l===0&&s===0)this.ctx?.clipRect(c,Te.ClipOp.Intersect,!0);else{let u=Te.RRectXY(c,n,n);u[4]=u[5]=n,u[6]=u[7]=a,u[8]=u[9]=s,u[10]=u[11]=l,this.ctx?.clipRRect(u,Te.ClipOp.Intersect,!0)}}_applyShadowOffsetMatrix(){if(this.ctx){let t=Ee.invert(this.currentTransform);this.ctx.concat(t);let e=Ee.translate(Ee.identity(),this._dropShadowOffsetX,this._dropShadowOffsetY);this.ctx.concat(e),this.ctx.concat(this._currentTransform)}}_applyEffectsToPaint(t,e,r=!0){if(this.ctx&&this._currentPath){let o,n=!1;if(r&&this._hasDropShadow()){let a=t.copy();a.setColor(md(this._dropShadowColor));let s;this._dropShadowBlur>0&&(s=Te.MaskFilter.MakeBlur(Te.BlurStyle.Normal,this._dropShadowBlur*this.dpr*(this.camera?.scale??1),!1),a.setMaskFilter(s)),this.ctx.save(),this.ctx.clipPath(this._currentPath,Te.ClipOp.Difference,!0),this._applyShadowOffsetMatrix(),e(a),this.ctx.restore(),a.delete(),s?.delete()}if(this._backgroundBlur>0&&r){this.ctx.save(),this.ctx.clipPath(this._currentPath,Te.ClipOp.Intersect,!0);let a=Te.ImageFilter.MakeBlur(this._backgroundBlur,this._backgroundBlur,Te.TileMode.Clamp,null),s=t.copy();s.setImageFilter(a),s.setAlphaf(1);let l=this._currentPath.computeTightBounds();this.ctx.saveLayer(s,l,null,Te.SaveLayerInitWithPrevious),this.ctx.drawColor(t.getColor()),this.ctx.restore(),this.ctx.restore(),s.delete(),a.delete(),n=!0}if(this._layerBlur>0){let a=t.copy();o=Te.MaskFilter.MakeBlur(Te.BlurStyle.Normal,this._layerBlur*this.dpr*(this.camera?.scale??1),!1),a.setMaskFilter(o),e(a),a.delete(),o.delete(),n=!0}if(n||e(t),r&&this._hasInnerShadow()){let a=new Te.Paint;a.setAntiAlias(!0),a.setStyle(Te.PaintStyle.Fill),a.setColor(md(this._innerShadowColor));let s;this._innerShadowBlur>0&&(s=Te.MaskFilter.MakeBlur(Te.BlurStyle.Normal,this._innerShadowBlur*this.dpr*(this.camera?.scale??1),!1),a.setMaskFilter(s));let l=this._currentPath.computeTightBounds(),[c,u,d,p]=l,f=d-c,h=p-u;this.ctx.save(),this.ctx.clipPath(this._currentPath,Te.ClipOp.Intersect,!0),this.ctx.saveLayer(a,l,null,Te.SaveLayerInitWithPrevious),this.ctx?.translate(this._innerShadowOffsetX,this._innerShadowOffsetY),this.ctx.drawRect(Te.XYWHRect(-1e3-this._innerShadowOffsetX,-1e3-this._innerShadowOffsetY,2e3+f+Math.abs(this._innerShadowOffsetX*2),2e3+h+Math.abs(this._innerShadowOffsetY*2)),a),a.setBlendMode(Te.BlendMode.Clear),this.ctx.drawPath(this._currentPath,a),this.ctx.restore(),this.ctx.restore(),a.delete(),s?.delete()}}}_paintInner(t,e=!0){if(this.ctx&&this._currentPath&&t){let r=this.ctx,o=this._currentPath;this._applyEffectsToPaint(t,n=>{let a=!1;!e&&this._strokeMode!=="center"&&(r.save(),r.clipPath(o,this._strokeMode==="outside"?Te.ClipOp.Difference:Te.ClipOp.Intersect,!0),a=!0),r.drawPath(o,n),a&&r.restore()},e)}}_hasDropShadow(){return this._dropShadowColor?.a>0}_hasInnerShadow(){return this._innerShadowColor?.a>0}path(t){this._currentPath?.addPath(Te.Path.MakeFromSVGString(t))}ellipse(t,e,r,o,n,a,s,l){if(!P1([t,e,r,o])||!this._currentPath)return;if(r<0||o<0)throw Error("radii cannot be negative");let c=Te.XYWHRect(t-r,e-o,r*2,o*2);this._currentPath?.addOval(c)}rect(t,e,r,o,n=0,a=0,s=0,l=0){let c=Te.XYWHRect(t,e,r,o);if(!!P1(c))if(n===0&&a===0&&l===0&&s===0)this._currentPath?.addRect(c);else{let u=Te.RRectXY(c,n,n);u[4]=u[5]=n,u[6]=u[7]=a,u[8]=u[9]=s,u[10]=u[11]=l,this._currentPath?.addRRect(u)}}getHorizontalAlign(t){switch(t){case 2:return Te.TextAlign.Right;case 3:return Te.TextAlign.Center;case 4:return Te.TextAlign.Justify;case 1:default:return Te.TextAlign.Left}}drawTextInner(t,e,r,[o,n,a,s],l,c,u=!0){let d=0,{ctx:p}=this;if(!p)return d;let f=c.copy(),h=c.copy();return h.setAlphaf(0),this._applyEffectsToPaint(f,m=>{e.pushPaintStyle(r,m,h),e.addText(t);let y=e.build();y.layout(a);let x=n;l===2?x+=(s-y.getHeight())/2:l===3&&(x+=s-y.getHeight()),p.drawParagraph(y,o,x),d=y.getHeight(),e.reset(),y.delete()},u),f.delete(),h.delete(),d}drawText(t,e){let r=0,o=this._fonts.get(e.font),{ctx:n,_paintFill:a,_paintStroke:s}=this;if(o&&n){let l=new Te.TextStyle({fontFamilies:[e.font],fontSize:e.fontSize,heightMultiplier:e.lineHeight,letterSpacing:e.letterSpacing}),c=new Te.ParagraphStyle({textStyle:l,textAlign:this.getHorizontalAlign(e.horizontalAlign)}),u=Te.XYWHRect(e.x,e.y,e.width,e.height),d=Te.ParagraphBuilder.Make(c,o);a&&(r=this.drawTextInner(t,d,l,u,e.verticalAlign,a,!0)),s&&(r=this.drawTextInner(t,d,l,u,e.verticalAlign,s,!1)),d.delete()}return{height:r}}render(){this._surface?.flush()}moveTo(t,e){this._currentPath?.moveTo(t,e)}lineTo(t,e){this._currentPath?.lineTo(t,e)}bezierCurveTo(t,e,r,o,n,a){this._currentPath?.cubicTo(t,e,r,o,n,a)}quadraticCurveTo(t,e,r,o){this._currentPath?.quadTo(t,e,r,o)}setTransform(t,e=!1){if(!this.ctx)return;let r=this.ctx.getTotalMatrix(),o=Ee.invert(r);if(o&&this.ctx.concat(o),this.ctx?.scale(this.dpr,this.dpr),this.camera?.enabled&&(this.ctx?.concat(this.camera.worldMatrix),e)){let n=Ee.getScale(this.camera.worldMatrix);this.ctx?.scale(1/n[0],1/n[1])}this.ctx?.concat(t),this.currentTransform=t}transform(t){this.ctx?.concat(t)}setSize(t,e){!this._isSizeDirty&&t===this._width&&e===this._height||(this._isSizeDirty=!1,this._width=t,this._height=e,this.canvas.style.width=t+"px",this.canvas.style.height=e+"px",this.canvas.width=t*this.dpr,this.canvas.height=e*this.dpr,this._surface&&(this._surface=Te.MakeWebGLCanvasSurface(this.canvas),this.ctx=this._surface?.getCanvas()))}};function P1(i){for(let t=0;t<i.length;t++)if(i[t]!==void 0&&!Number.isFinite(i[t]))return!1;return!0}function md({r:i,g:t,b:e,a:r}){return Te.Color4f(i,t,e,r)}var _l=class{constructor(t,e,r){this.uuid=t;this.data=e;this.enabled=!1;this.color=Ie.transparent;this.blurRadius=0;this.offset=[0,0];this.spread=0;this.update(e)}update(t){t.color!==void 0&&(this.color=t.color),t.enabled!==void 0&&(this.enabled=t.enabled),t.blurRadius!==void 0&&(this.blurRadius=t.blurRadius),t.offset!==void 0&&(this.offset=t.offset),t.spread!==void 0&&(this.spread=t.spread)}};var Rl=class{constructor(t,e,r){this.uuid=t;this.data=e;this.enabled=!1;this.radius=0;this.update(e)}update(t){t.enabled!==void 0&&(this.enabled=t.enabled),t.radius!==void 0&&(this.radius=t.radius)}};var yd=class{constructor(t,e,r){this.uuid=t;this.data=e;this.enabled=!1;this.color=Ie.transparent;this.update(e)}update(t){t.enabled!==void 0&&(this.enabled=t.enabled),t.color!==void 0&&(this.color=t.color)}};var gd=class{constructor(t,e,r){this.uuid=t;this.data=e;this.enabled=!1;this.color=Ie.transparent;this.thickness=0;this.mode="inside";this.update(e)}update(t){t.enabled!==void 0&&(this.enabled=t.enabled),t.color!==void 0&&(this.color=t.color),t.thickness!==void 0&&(this.thickness=t.thickness),t.mode!==void 0&&(this.mode=t.mode)}};var lr=class extends Ko{constructor(e,r,o){super(e,r,o);this.uuid=e;this.data=r;this.autoClose=!0;this.fill=new yd(e+"-fill",r.fill,o),this.stroke=new gd(e+"-stroke",r.stroke,o),this.dropShadow=new _l(e+"-dropShadow",r.dropShadow,o),this.innerShadow=new _l(e+"-innerShadow",r.innerShadow,o),this.backgroundBlur=new Rl(e+"-backgroundBlur",r.backgroundBlur,o),this.layerBlur=new Rl(e+"-layerBlur",r.layerBlur,o)}applyFillStroke(e){e.fillColor=this.fill.enabled?this.fill.color:Ie.transparent,e.strokeColor=this.stroke.enabled&&this.stroke.thickness>0?this.stroke.color:Ie.transparent,e.strokeMode=this.stroke.mode,e.lineWidth=this.stroke.thickness}applyFilters(e){this.layerBlur.enabled?e.layerBlur=this.layerBlur.radius*5:e.layerBlur=0,this.backgroundBlur.enabled?e.backgroundBlur=this.backgroundBlur.radius*5:e.backgroundBlur=0,this.dropShadow.enabled?(e.dropShadowBlur=this.dropShadow.blurRadius*5,e.dropShadowColor=this.dropShadow.color,e.dropShadowOffsetX=this.dropShadow.offset[0],e.dropShadowOffsetY=this.dropShadow.offset[1]):e.dropShadowColor=Ie.transparent,this.innerShadow.enabled?(e.innerShadowSpread=this.innerShadow.spread,e.innerShadowBlur=this.innerShadow.blurRadius*5,e.innerShadowColor=this.innerShadow.color,e.innerShadowOffsetX=this.innerShadow.offset[0],e.innerShadowOffsetY=this.innerShadow.offset[1]):e.innerShadowColor=Ie.transparent}innerDraw(e){}draw(e){!this.visible||(e.save(),this.applyTransforms(e),this.applyFilters(e),this.applyFillStroke(e),e.beginPath(),this.innerDraw(e),this.autoClose&&e.closePath(),this.fill.enabled&&e.fill(),this.stroke.enabled&&e.stroke(),e.restore())}updateByPatchedOp(e,r,o){super.updateByPatchedOp(e,r,o),e.type===0&&(Le(e.path,["fill"])?this.fill.update(e.props):Le(e.path,["stroke"])?this.stroke.update(e.props):Le(e.path,["dropShadow"])?this.dropShadow.update(e.props):Le(e.path,["innerShadow"])?this.innerShadow.update(e.props):Le(e.path,["layerBlur"])?this.layerBlur.update(e.props):Le(e.path,["backgroundBlur"])?this.backgroundBlur.update(e.props):this.resetBBoxNeedsUpdate())}updateState(e,r){super.updateState(e,r),e.fill!==void 0&&this.fill.update(e.fill),e.stroke!==void 0&&this.stroke.update(e.stroke),e.dropShadow!==void 0&&this.dropShadow.update(e.dropShadow),e.innerShadow!==void 0&&this.innerShadow.update(e.innerShadow),e.layerBlur!==void 0&&this.layerBlur.update(e.layerBlur),e.backgroundBlur!==void 0&&this.backgroundBlur.update(e.backgroundBlur)}clone(e){let r=new lr(this.uuid,this.data,e);return r.parent=void 0,r}};var Ri=class extends lr{constructor(e,r,o){super(e,r,o);this.uuid=e;this.data=r;this.width=0;this.height=0;this.updateState(r,o)}innerDraw(e){e.ellipse(this.width*.5,this.height*.5,this.width*.5,this.height*.5,0,0,Math.PI*2)}intersectsInLocalSpace(e,r){return h1(e,r,this.width*.5,this.height*.5,this.width*.5,this.height*.5)}getCenter(){return[this.width*.5,this.height*.5]}getHalfSize(){return[this.width*.5,this.height*.5]}updateSizeState(e){let r=!1;e.width!==void 0&&(this.width=typeof e.width=="number"?e.width:this.width,r=!0),e.height!==void 0&&(this.height=typeof e.height=="number"?e.height:this.height,r=!0),r&&this.updateWorldMatrix(!0,!1,!0)}updateState(e,r){super.updateState(e,r),this.updateSizeState(e)}clone(e){let r=new Ri(this.uuid,this.data,e);return r.parent=void 0,r}};var wo=class extends lr{constructor(e,r,o){super(e,r,o);this.uuid=e;this.data=r;this.width=0;this.height=0;this.cornerRadius=[0,0,0,0];this.updateState(r,o)}innerDraw(e){e.rect(0,0,this.width,this.height,...this.cornerRadius)}getCenter(){return[this.width*.5,this.height*.5]}getHalfSize(){return[this.width*.5,this.height*.5]}updateCornerState(e){e.cornerRadius!==void 0&&(this.cornerRadius=e.cornerRadius)}updateSizeState(e){let r=!1;e.width!==void 0&&(this.width=typeof e.width=="number"?e.width:this.width,r=!0),e.height!==void 0&&(this.height=typeof e.height=="number"?e.height:this.height,r=!0),r&&this.updateWorldMatrix(!0,!1,!0)}updateState(e,r){super.updateState(e,r),this.updateSizeState(e),this.updateCornerState(e)}clone(e){let r=new wo(this.uuid,this.data,e);return r.parent=void 0,r}};var Li=class extends lr{constructor(e,r,o){super(e,r,o);this.uuid=e;this.data=r;this._textHeight=0;this._textHeightDirty=!0;this.width=0;this.height=0;this.updateState(r,o)}get textHeight(){return this._textHeight}applyFillStroke(e){e.fillColor=this.fill.enabled?this.fill.color:Ie.transparent,e.strokeColor=this.stroke.enabled&&this.stroke.thickness>0?this.stroke.color:Ie.transparent,e.strokeMode="center",e.lineWidth=this.stroke.thickness}innerDraw(e){this._fontHolder?.arrayBuffer&&this._fontHolder.arrayBuffer.byteLength>1&&this.data.font&&e.registerFont(this._fontHolder.arrayBuffer,this.data.font);let r=this.data.textTransform,o=this.data.text.textValue.toString(),n=r===2?o.toUpperCase():r===3?o.toLowerCase():o,{height:a}=e.drawText(n,{x:0,y:0,width:this.width,height:this.height,fontSize:this.data.fontSize,lineHeight:this.data.lineHeight??1,letterSpacing:this.data.letterSpacing??0,horizontalAlign:this.data.horizontalAlign,verticalAlign:this.data.verticalAlign,font:this.data.font});this._textHeight=a}getCenter(){return[this.width*.5,this.height*.5]}getHalfSize(){return[this.width*.5,this.height*.5]}updateSizeState(e){let r=!1;e.width!==void 0&&(this.width=typeof e.width=="number"?e.width:this.width,r=!0),e.height!==void 0&&(this.height=typeof e.height=="number"?e.height:this.height,r=!0),r&&this.updateWorldMatrix(!0,!1,!0)}updateFontState(e,{shared:r}){e.font!==void 0&&(this._fontHolder=r.getFont(e.font),this._fontHolder&&!this._fontHolder.isLoaded&&this._fontHolder.loadingPromise.then(()=>{this.requestRender()}))}updateState(e,r){super.updateState(e,r),this.updateSizeState(e),this.updateFontState(e,r)}clone(e){let r=new Li(this.uuid,this.data,e);return r.parent=void 0,r}};var xs=class extends lr{constructor(e,r,o){super(e,r,o);this.uuid=e;this.data=r;this.curves=[];this.extremasBBox={min:[0,0],max:[0,0]};this.updateState(r,o)}computeExtremas(){this.curves.length===0&&this.computeCurves();let e=this.curves.map(n=>xd.extremas(n)),r=[1/0,1/0],o=[-1/0,-1/0];for(let n=0,a=e.length;n<a;n++){let s=e[n];s[0][0]<r[0]&&(r[0]=s[0][0]),s[0][1]<r[1]&&(r[1]=s[0][1]),s[1][0]>o[0]&&(o[0]=s[1][0]),s[1][1]>o[1]&&(o[1]=s[1][1])}return this.extremasBBox.min=[r[0],r[1]],this.extremasBBox.max=[o[0],o[1]],this.extremasBBox}computeCurves(){this.curves=[];for(let o=1,n=this.data.points.length;o<n;o++){let a=this.data.points[o].data,s=this.data.points[o-1].data,l={start:s.position,cp1:s.controlNext.position,cp2:a.controlPrevious.position,end:a.position};this.curves.push(l)}let e=this.data.points[0].data,r=this.data.points[this.data.points.length-1].data;if(this.data.isClosed){let o={start:r.position,cp1:r.controlNext.position,cp2:e.controlPrevious.position,end:e.position};this.curves.push(o)}}getCenter(){let[e,r]=this.extremasBBox.min,[o,n]=this.getHalfSize();return[e+o,r+n]}getHalfSize(){let{min:e,max:r}=this.extremasBBox;return[(r[0]-e[0])*.5,(r[1]-e[1])*.5]}innerDraw(e){for(let n=0,a=this.data.points.length;n<a;n++){let s=this.data.points[n].data;if(n===0){let[l,c]=s.position;e.moveTo(l,c)}else{let l=this.data.points[n-1].data,[c,u]=l.controlNext.position,[d,p]=s.controlPrevious.position,[f,h]=s.position,m={start:l.position,cp1:l.controlNext.position,cp2:s.controlPrevious.position,end:s.position};xd.derive(m),e.bezierCurveTo(c,u,d,p,f,h)}}let r=this.data.points[0].data,o=this.data.points[this.data.points.length-1].data;if(this.data.isClosed){let[n,a]=o.controlNext.position,[s,l]=r.controlPrevious.position,[c,u]=r.position;e.bezierCurveTo(n,a,s,l,c,u)}}updateState(e,r){super.updateState(e,r),this.computeExtremas()}clone(e){let r=new xs(this.uuid,this.data,e);return r.parent=void 0,r}},xd;(n=>{function i(a){let s=a.start,l=a.cp1,c=a.cp2,u=a.end,d=[3*(l[0]-s[0]),3*(l[1]-s[1])],p=[3*(c[0]-l[0]),3*(c[1]-l[1])],f=[3*(u[0]-c[0]),3*(u[1]-c[1])],h={start:d,cp:p,end:f};return a.derivative=h,h.derivative=Lh.derive(h),h}n.derive=i;function t(a,s,l,c=!1){let u=a-2*s+l;if(u!==0){let d=-Math.sqrt(Math.abs(s*s-a*l)),p=-a+s,f=-(d+p)/u,h=-(-d+p)/u;return[f,h]}else if(s!==l&&u===0)return[(2*s-l)/(2*(s-l))];return[]}function e(a){let s=a.derivative??n.derive(a),l=s.start,c=s.cp,u=s.end;return[t(l[0],c[0],u[0]),t(l[1],c[1],u[1])]}n.droot=e;function r(a){let[s,l]=n.droot(a),c=[a.start[0],a.end[0]],u=[a.start[1],a.end[1]];for(let d of s)c.push(n.compute(a,Math.min(1,Math.max(0,d)))[0]);for(let d of l)u.push(n.compute(a,Math.min(1,Math.max(0,d)))[1]);return c.sort((d,p)=>d-p),u.sort((d,p)=>d-p),[[c[0],u[0]],[c[c.length-1],u[u.length-1]]]}n.extremas=r;function o(a,s){if(s===0)return[...a.start];if(s===1)return[...a.end];let l=1-s,c=l*l,u=s*s,d=c*l,p=c*s*3,f=l*u*3,h=s*u;return[d*a.start[0]+p*a.cp1[0]+f*a.cp2[0]+h*a.end[0],d*a.start[1]+p*a.cp1[1]+f*a.cp2[1]+h*a.end[1]]}n.compute=o})(xd||(xd={}));var Lh;(r=>{function i(o){let n=o.start,a=o.cp,s=o.end,l=[2*(a[0]-n[0]),2*(a[1]-n[1])],c=[2*(s[0]-a[0]),2*(s[1]-a[1])],u={start:l,end:c};return u.derivative=Bh.derive(u),o.derivative=u,u}r.derive=i;function t(o){let n=o.derivative??r.derive(o),a=n.start,s=n.end;return[a[0]!==s[0]?a[0]/(a[0]-s[0]):0,a[1]!==s[1]?a[1]/(a[1]-s[1]):0]}r.droot=t;function e(o,n){if(n===0)return[...o.start];if(n===1)return[...o.end];let a=1-n,s=a*a,l=n*n,c=s,u=a*n*2,d=l;return[c*o.start[0]+u*o.cp[0]+d*o.end[0],c*o.start[1]+u*o.cp[1]+d*o.end[1]]}r.compute=e})(Lh||(Lh={}));var Bh;(e=>{function i(r){let o=r.start,n=r.end,a=[n[0]-o[0],n[1]-o[1]];return r.derivative=a,r.derivative}e.derive=i;function t(r,o){if(o===0)return[...r.start];if(o===1)return[...r.end];let n=r.start,a=r.end;return[n[0]+(a[0]-n[0])*o,n[1]+(a[1]-n[1])*o]}e.compute=t})(Bh||(Bh={}));var mr=class extends kt{constructor(e,r,o){super(e,r,o);this.uuid=e;this.width=0;this.height=0;this.clipped=!0;this.background=new wo(e+"-background",ga.defaultData,o),this.background.parent=this,this.updateState(r,o)}get fill(){return this.background.fill}get stroke(){return this.background.stroke}get backgroundBlur(){return this.background.backgroundBlur}get layerBlur(){return this.background.layerBlur}get dropShadow(){return this.background.dropShadow}get innerShadow(){return this.background.innerShadow}get cornerRadius(){return this.background.cornerRadius}set cornerRadius(e){this.background.cornerRadius=e}updateLocalMatrix(){super.updateLocalMatrix(),this.background?.updateLocalMatrix()}updateWorldMatrix(e,r,o){super.updateWorldMatrix(e,r,o),this.background?.updateWorldMatrix(e,r,o)}draw(e){if(!this.visible)return;e.save();let r=this.width,o=this.height;this.applyTransforms(e),this.background.width=r,this.background.height=o,this.background.draw(e),this.clipped&&e.clipRect(0,0,r,o,...this.cornerRadius),this.innerDrawChildren(e),e.restore()}getCenter(){return[this.width*.5,this.height*.5]}getHalfSize(){return[this.width*.5,this.height*.5]}updateCornerState(e){e.cornerRadius!==void 0&&(this.cornerRadius=e.cornerRadius)}updateSizeState(e){let r=!1;e.width!==void 0&&(this.width=typeof e.width=="number"?e.width:this.width,r=!0),e.height!==void 0&&(this.height=typeof e.height=="number"?e.height:this.height,r=!0),r&&this.updateWorldMatrix(!0,!1,!0)}updateState(e,r){super.updateState(e,r),this.updateSizeState(e),this.updateCornerState(e),e.fill!==void 0&&this.fill.update(e.fill),e.stroke!==void 0&&this.stroke.update(e.stroke),e.dropShadow!==void 0&&this.dropShadow.update(e.dropShadow),e.innerShadow!==void 0&&this.innerShadow.update(e.innerShadow),e.layerBlur!==void 0&&this.layerBlur.update(e.layerBlur),e.backgroundBlur!==void 0&&this.backgroundBlur.update(e.backgroundBlur),e.clipped!==void 0&&(this.clipped=e.clipped)}requestRender(){super.requestRender(),this.dispatchEvent({type:"render"})}dispose(){this.removeEventListener("render")}updateByPatchedOp(e,r,o){super.updateByPatchedOp(e,r,o),e.type===0&&(Le(e.path,["fill"])?this.fill.update(e.props):Le(e.path,["stroke"])?this.stroke.update(e.props):Le(e.path,["dropShadow"])?this.dropShadow.update(e.props):Le(e.path,["innerShadow"])?this.innerShadow.update(e.props):Le(e.path,["layerBlur"])?this.layerBlur.update(e.props):Le(e.path,["backgroundBlur"])?this.backgroundBlur.update(e.props):this.resetBBoxNeedsUpdate())}clone(e){let r=new mr(this.uuid,this.data,e);r.parent=void 0;for(let o of this.children)r.add(o.clone(e));return r}};var M1=Is(Vh(),1),Qo=class extends lr{constructor(e,r,o){super(e,r,o);this.uuid=e;this.data=r;this._pathBBox=new DOMRect;this.path="";this.updateState(r,o),this.autoClose=!1,this.computeSVGBBox()}computeSVGBBox(){let e=this.path;I1(this.path)&&(console.warn("Invalid SVG path",this.uuid),e="");let r=document.createElementNS("http://www.w3.org/2000/svg","svg"),o=document.createElementNS("http://www.w3.org/2000/svg","path");document.body.appendChild(r),o.setAttribute("d",e),r.appendChild(o),this._pathBBox=o.getBBox(),r.remove()}innerDraw(e){e.path(this.path)}intersectsInLocalSpace(e,r){return e>=this._pathBBox.x&&e<=this._pathBBox.x+this._pathBBox.width&&r>=this._pathBBox.y&&r<=this._pathBBox.y+this._pathBBox.height}getCenter(){return[(this._pathBBox.x+this._pathBBox.width)/2,(this._pathBBox.y+this._pathBBox.height)/2]}getHalfSize(){return[(this._pathBBox.x+this._pathBBox.width)/2,(this._pathBBox.y+this._pathBBox.height)/2]}updateState(e,r){super.updateState(e,r),e.path!==void 0&&(this.path=e.path,this.computeSVGBBox())}clone(e){let r=new Qo(this.uuid,this.data,e);return r.parent=void 0,r}};function I1(i){return/NaN/.test(i)}function E1(i,t=1,e=1){if(t<=0||e<=0)return i;if(I1(i))return console.warn("Cannot scale invalid path",i),vd([]);try{let o=(0,M1.parseSVG)(i).map(n=>{let a={...n};return"x"in a&&(a.x=a.x*t),"y"in a&&(a.y=a.y*e),"x1"in a&&(a.x1=a.x1*t),"x2"in a&&(a.x2=a.x2*t),"y1"in a&&(a.y1=a.y1*e),"y2"in a&&(a.y2=a.y2*e),"rx"in a&&(a.rx=a.rx*t),"ry"in a&&(a.ry=a.ry*e),a});return vd(o)}catch(r){return console.warn("Error parsing SVG path",r),vd([])}}function vd(i){let t=["rx","ry","xAxisRotation","largeArc","sweep","x1","y1","x2","y2","x","y"],e;return i.map(r=>{let o=[];t.forEach(a=>{if(a in r){let s=r[a]*1;o.length&&s>=0&&o.push(","),o.push(s)}});let n=(e===r.code?o[0]<0?"":",":r.code)+o.join("");return e=r.code,n}).join("")}function N1(i,t,e){switch(t.type){case"ellipse2d":return new Ri(i,t,e);case"rectangle2d":return new wo(i,t,e);case"text2d":return new Li(i,t,e);case"vector2d":return new xs(i,t,e);case"path2d":return new Qo(i,t,e);case"frame2d":return new mr(i,t,e);case"group2d":default:return new sr(i,t,e)}}var zh=class{constructor(t,e,r){this.uuid=t;this.data=e;this.group=new sr(zh.GROUP_ID,{...Hs.defaultData},r),this.createChildrenObjects(e.objects,this.group,r)}createObject(t,e,r,o,n,a){let s=N1(t,e,a);s&&(o.add(s),o.children.splice(n,0,o.children.pop()),s.updateWorldMatrix(),r.length>0&&(s instanceof sr||s instanceof mr)&&this.createChildrenObjects(r,s,a))}createChildrenObjects(t,e,r){let o=0;for(let n of t)this.createObject(n.id,n.data,n.children,e,o,r),o+=1}draw(t){this.group.draw(t)}updateEntityByOp(t,e,r,o){let n=this.find(t);if(n)try{n.updateByOp(e,r,{shared:o})}catch(a){console.error(a)}}updateTreeByOp(t,e){if(t.path.length===0&&t.type===7){let r=t.parent===null?this.group:this.find(t.parent);r!==void 0&&r instanceof kt&&(this.createObject(t.id,t.data,t.children,r,t.localIndex,e),r.requestRender())}else if(t.path.length===0&&t.type===8){let r=this.find(t.id);if(r!==void 0&&r.parent!==void 0&&r.parent instanceof kt){let o=r.parent;r.resetBBoxNeedsUpdate(),o?.remove(r),o?.requestRender()}}else if(t.path.length===0&&t.type===9){let r=this.find(t.id);if(r!==void 0){let o=r.parent,n=t.parent===null?this:this.find(t.parent);if(n===void 0&&!1&&console.error("unexpected",n,t),n instanceof kt||n===this){n.add(r);let a=t.localIndex;n.children.splice(a,0,n.children.pop()),r.updateWorldMatrix(!0,!1,!0),o?.requestRender(),r.requestRender()}r.resetBBoxNeedsUpdate()}}}add(t){this.group.add(t)}remove(t){this.group.remove(t)}traverse(t){this.group.traverse(e=>{e!==this.group&&t(e)})}intersectsChildren(t,e,r,o=!1,n=[]){return this.group.intersectsChildren(t,e,r,o,n,!0)}intersectsChildrenReverse(t,e,r,o=!1,n=[]){return this.group.intersectsChildrenReverse(t,e,r,o,n,!0)}find(t){return this.group.find(t)}get children(){return this.group.children}project(t,e){return this.group.project(t,e)}getWithSortKey(t){let e=this.find(t);if(e===void 0)return;let r=[],o=e;for(;o!==this.group;){let n=o;o=o.parent;let a=o.children.indexOf(n);r.splice(0,0,a)}return{entity:e,sortKey:r}}getAllSorted(t){let e=[];for(let r of t){let o=this.getWithSortKey(r.id);o!==void 0&&e.push(o)}return e.sort((r,o)=>$l(r.sortKey,o.sortKey)),e.map(r=>r.entity)}},Pn=zh;Pn.GROUP_ID="scene2d";function Gh({constraints:i,newParentWidth:t,newParentHeight:e,initialParentWidth:r,initialParentHeight:o,objectInitialWidth:n,objectInitialHeight:a,objectInitialPosition:s}){let{horizontalConstraint:l,verticalConstraint:c}=i,u=t-r,d=e-o,p=n,f=a,h=s[0],m=s[1];if(l!==0){if(l===1)h+=u;else if(l===3)h+=u/2;else if(l===2)p=Math.max(1,p+u);else if(l===4){let y=t/r;p*=y,h*=y}}if(c!==0){if(c===1)m+=d;else if(c===3)m+=d/2;else if(c===2)f=Math.max(1,f+d);else if(c===4){let y=e/o;f*=y,m*=y}}return{width:p,height:f,position:[h,m]}}var u_=Is(Vh(),1);var Yce={mm:{mm:1,cm:.1,in:1/25.4,pt:72/25.4,pc:6/25.4,px:-1},cm:{mm:10,cm:1,in:1/2.54,pt:72/2.54,pc:6/2.54,px:-1},in:{mm:25.4,cm:2.54,in:1,pt:72,pc:6,px:-1},pt:{mm:25.4/72,cm:2.54/72,in:1/72,pt:1,pc:6/72,px:-1},pc:{mm:25.4/6,cm:2.54/6,in:1/6,pt:72/6,pc:1,px:-1},px:{mm:1,px:1,cm:1,in:1,pt:1,pc:1}};import{BufferGeometry as d_,CanvasTexture as p_,Float32BufferAttribute as D1,HalfFloatType as f_,MathUtils as h_,Mesh as m_,OrthographicCamera as y_,ShaderMaterial as g_,Uniform as x_,WebGLRenderTarget as b_}from"three";var v_=`
|
|
2664
2664
|
varying vec2 vUv;
|
|
2665
2665
|
void main() {
|
|
2666
2666
|
vUv = uv;
|
|
2667
2667
|
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
|
|
2668
|
-
}`,
|
|
2668
|
+
}`,S_=`
|
|
2669
2669
|
uniform sampler2D tDiffuse;
|
|
2670
2670
|
varying vec2 vUv;
|
|
2671
2671
|
void main() {
|
|
2672
2672
|
vec4 texel = texture2D( tDiffuse, vUv );
|
|
2673
2673
|
gl_FragColor = texel;
|
|
2674
|
-
}`,S_=new m_(-1,1,1,-1,0,1),jh=class extends u_{constructor(){super(),this.setAttribute("position",new N1([-1,3,0,-1,-1,0,3,-1,0],3)),this.setAttribute("uv",new N1([0,2,0,0,2,0],2))}},w_=new jh,Uh=class{constructor(t){this._mesh=new h_(w_,t)}dispose(){this._mesh.geometry.dispose()}render(t){t.render(this._mesh,S_)}get material(){return this._mesh.material}set material(t){this._mesh.material=t}},D1=new y_({defines:{},uniforms:{tDiffuse:new g_(null)},vertexShader:b_,fragmentShader:v_}),P_=new Uh(D1),Gh=null,Fh=null,O_=()=>(Gh===null&&(Gh=document.createElement("canvas")),Gh),T_=i=>(Fh===null&&(Fh=new Nl(i)),Fh),C_=Ee.identity(),xs=class{constructor(t,e,r,o){this.uuid=t;this.width=e;this.height=r;this.context=o;this.enabled=!0;this.isScreenSpace=!1;this.dpr=window.devicePixelRatio;this.isFrameDirty=!1;this.onRenderRequestedDownstream=()=>{this.isFrameDirty=!0,this.context.shared.requestRender()};this._innerApplySize=()=>{let t=this.width,e=this.height,r=this.dpr;this.renderer.dpr=this.isScreenSpace?r:Math.floor(2048/Math.max(t,e)),this.renderer.setSize(t,e)};this.onFrameOverrideObjectEvent=t=>{if(t.target?.uuid!==void 0){let e=this.frameRoot?.find(t.target.uuid);e&&e.dispatchEvent({...t,target:e})}};this.scene2d=new wn(f_.generateUUID(),au.defaultData,{dpr:window.devicePixelRatio,shared:o.shared}),this.canvas=O_(),this.renderer=T_(this.canvas),this.promise=this.init(),this.renderTarget=new x_(1,1,{type:p_,stencilBuffer:!1,depthBuffer:!1}),o.shared.addUIBuffer(this.uuid,this.renderTarget),this.textureHolder=o.shared.uiBuffer(this.uuid)}get canvasTexture(){return this._canvasTexture||(this._canvasTexture=new d_(this.canvas)),this._canvasTexture}async init(){this.renderer instanceof Nl&&(this.renderer.wasmURL=ev.skiaWasmUrl),await this.renderer.init()}render(t){if(this.isFrameDirty){this.isFrameDirty=!1,this._innerApplySize(),this.renderer.clear(),this.frameOverride?.draw(this.renderer),this.renderer.render(),D1.uniforms.tDiffuse.value=this.canvasTexture,this.canvasTexture.needsUpdate=!0;let e=t.getRenderTarget();t.setRenderTarget(this.renderTarget),t.clear(),P_.render(t),t.setRenderTarget(e),this.textureHolder?.setNeedsUpdate(!0)}}updateEntity2DByOp(t,e,r,o){this.scene2d.updateEntityByOp(t,e,r,o),this.applySize()}updateTreeByOp(t,e){this.scene2d.updateTreeByOp(t,e),this.applySize()}applyOverrides(t){if(this.frameOverride&&this.frameRoot){this.frameOverride.position=[0,0],this.frameOverride.rotation=0;let e=t?.width??this.width,r=t?.height??this.height;this.frameOverride.width=e,this.frameOverride.height=r,this.frameOverride.localMatrix=C_,this.isScreenSpace&&(this.frameOverride.fill.color=Ie.from0to1([0,0,0,0])),this.frameOverride.data={...this.frameOverride.data,width:e,height:r},_1({objectOverride:this.frameOverride,objectRoot:this.frameRoot,newParentWidth:this.frameOverride.width,newParentHeight:this.frameOverride.height,initialParentWidth:this.frameRoot.width,initialParentHeight:this.frameRoot.height}),this.frameOverride.updateWorldMatrix(!0,!1,!0)}}applySize(t,e=window.devicePixelRatio){let r=Math.max(1,t?.width??this.width),o=Math.max(1,t?.height??this.height);this.dpr=e,this.width=r,this.height=o,this._innerApplySize();let n=1,a=512,s=512;(r*e<a||o*e<s)&&(n=Math.max(a/(r*e),s/(o*e))),this.renderTarget.setSize(r*e*n,o*e*n),this._canvasTexture?.dispose(),this._canvasTexture=void 0,this.applyOverrides(t),this.frameOverride?.requestRender()}applyFrame(t){let e=this.context.scene.find2D(t);if(!(!e||!(e instanceof hr)))return this.disposeFrameOverride(),this.frameRoot=e,this.frameOverride=e.clone({dpr:this.renderer.dpr,shared:this.context.shared}),this.scene2d.add(this.frameOverride),this.applySize(),this.frame?.addEventListener("render",this.onRenderRequestedDownstream),this.frameOverride.traverse(r=>{r.addEventListener("beginState",this.onFrameOverrideObjectEvent)}),this.frameOverride.traverse(r=>{r.addEventListener("completeState",this.onFrameOverrideObjectEvent)}),this.frame?.requestRender(),e}get frame(){return this.frameOverride}get frameId(){return this.frame?.uuid}find(t){return this.scene2d.find(t)}get texture(){return this.textureHolder?.getTexture(1001)}disposeFrameOverride(){this.frameOverride?.removeEventListener("render",this.onRenderRequestedDownstream),this.frameOverride?.traverse(t=>{t.removeEventListener("beginStateChange",this.onFrameOverrideObjectEvent)}),this.frameOverride?.traverse(t=>{t.removeEventListener("completeState",this.onFrameOverrideObjectEvent)}),this.frameOverride&&this.scene2d.remove(this.frameOverride)}};function _1({objectOverride:i,objectRoot:t,newParentWidth:e,newParentHeight:r,initialParentWidth:o,initialParentHeight:n}){if(i instanceof hr&&t instanceof hr||i instanceof ar&&t instanceof ar)for(let a=0,s=i.children.length;a<s;a++){let l=i.children[a],c=t.children[a];l&&c&&l.uuid===c.uuid&&M_({objectOverride:l,objectRoot:c,newParentWidth:e,newParentHeight:r,initialParentWidth:o,initialParentHeight:n})}}function A_(i){if(kh(i))return[i.width,i.height];if(i instanceof Ko){let[t,e]=i.getHalfSize();return[t*2,e*2]}else if(i instanceof ar){let[t,e]=i.recursiveBBox.getHalfSize();return[t*2,e*2]}return[0,0]}function M_({objectOverride:i,objectRoot:t,newParentWidth:e,newParentHeight:r,initialParentWidth:o,initialParentHeight:n}){let[a,s]=A_(t),{width:l,height:c,position:u}=zh({constraints:i.data,newParentWidth:e,newParentHeight:r,initialParentWidth:o,initialParentHeight:n,objectInitialWidth:a,objectInitialHeight:s,objectInitialPosition:t.position});if(i.position=u,i.data={...i.data,position:u},i.states)for(let p in i.states)I_({stateId:p,objectOverride:i,objectRoot:t,newParentWidth:e,newParentHeight:r,initialParentWidth:o,initialParentHeight:n});if(kh(i)||i instanceof ar)kh(i)&&(i.width=l,i.height=c,i.data={...i.data,width:l,height:c}),_1({objectOverride:i,objectRoot:t,newParentWidth:l,newParentHeight:c,initialParentWidth:a,initialParentHeight:s});else if(i instanceof Ko){let p=t,d=a!==0?l/a:1,f=s!==0?c/s:1;i.path=I1(p.path,d,f),i.data={...i.data,path:i.path}}}function I_({stateId:i,objectOverride:t,objectRoot:e,newParentWidth:r,newParentHeight:o,initialParentWidth:n,initialParentHeight:a}){let s=t.states?.[i],l=e.states?.[i];if(s&&l){let{width:c,height:u,position:p}=zh({constraints:t.data,newParentWidth:r,newParentHeight:o,initialParentWidth:n,initialParentHeight:a,objectInitialWidth:Vo.isResizeable(l)?l.width:0,objectInitialHeight:Vo.isResizeable(l)?l.height:0,objectInitialPosition:l.position});Object.assign(t.states[i],{position:p}),Vo.isResizeable(s)&&Object.assign(t.states[i],{width:c,height:u})}}function kh(i){return i instanceof So||i instanceof hr||i instanceof _i||i instanceof Ri}var Mr=class extends va(__){constructor(e,r,o){super();this.data=r;this.bgColor=new Ct(1,1,1,1);this.fog=null;this.backupFog=new N_(16777215,.1,2e3);this.fogUseBGColor=!1;this.isActive=!1;this.aoColor=new E_;this.penumbraSizeArrayCache=null;this.super_Entity(e,r),this.personalCamera=new Xo(pi,{...Ji.defaultData,...r.camera,name:"Personal Camera"}),this.personalCamera.objectHelper.visible=!1,this.add(this.personalCamera),this.activeCamera=this.personalCamera,this.ambientLight=new D_(13882323,8553090,.75),this.ambientLight.name="Default Ambient Light",this.ambientLight.layers.enable(3),this.ambientLight.removeFromParent(),this.add(this.ambientLight),r.uiScene?this.uiScene=new wn((Array.isArray(e)?e[0]:e)+"-ui",r.uiScene,{dpr:window.devicePixelRatio,shared:o.shared}):r.uiFrame&&this.createUICanvas(r.uiFrame,o)}get scene(){return this.parent}get postprocessing(){return this.data.postprocessing}get frameId(){return this.data.uiFrame}get frame(){return this.uiCanvas?.frame}createUICanvas(e,r){this.uiCanvas=new xs(this.uuid+"-uiscreen",window.innerWidth,window.innerHeight,r),this.uiCanvas.isScreenSpace=!0,this.uiCanvas.promise.then(()=>{this.uiCanvas?.applyFrame(e),this.uiCanvas?.applySize()})}updateVisible(){}setBackgroundColor(e){this.bgColor=e,this.fogUseBGColor===!0&&(this.backupFog.color=e)}entityChildrenCount(){return this.uiScene?this.uiScene.children.length:super.entityChildrenCount()}updateAmbientLight(e,r){e.color!==void 0&&(this.ambientLight.color=jt(e.color,r)),e.intensity!==void 0&&(this.ambientLight.intensity=e.intensity),e.enabled!==void 0&&(e.enabled?this.add(this.ambientLight):this.remove(this.ambientLight))}onDeactive(){this.isActive=!1}onActive(e){this.isActive=!0,e.fog=this.fog,this.traverseEntity(r=>{r instanceof nr&&r.recomputeBoolean()}),this.updateShadow(this.data.shadow)}forceMaterialsUpdate(){this.traverseEntity(e=>{if(e instanceof ir)if(Array.isArray(e.material))for(let r of e.material)r.needsUpdate=!0;else e.material.needsUpdate=!0,e.material.dispose()})}updateShadow(e){e.softShadowQuality!==void 0&&this.isActive&&o1(e.softShadowQuality)&&this.forceMaterialsUpdate()}updateFog(e,r){if(e.enabled?this.fog=this.backupFog:this.fog=null,this.isActive){let o=this.scene;o.fog=this.fog}this.fogUseBGColor=e.useBackgroundColor,e.useBackgroundColor?this.backupFog.color.set(this.bgColor):this.backupFog.color=jt(e.color,r),this.backupFog.near=e.near,this.backupFog.far=e.far}updateAo(e,r){e.aoColor!==void 0&&(this.aoColor=jt(e.aoColor,r))}updateByOp(e,r,o,n){let a=this.data.uiFrame;super.updateByOp(e,r,o,n);let s=r;Le(e.path,["fog"])?this.updateFog(s.fog,o.shared):Le(e.path,["ao"])?this.updateAo(s.ao,o.shared):Le(e.path,["ambient"])?this.updateAmbientLight(s.ambient,o.shared):Le(e.path,["shadow"])?this.updateShadow(s.shadow):e.type===0&&e.path.length===0&&(e.props.uiFrame!==void 0||a!==s.uiFrame)&&this.updateUIFrame(e.props.uiFrame,o)}updateUIFrame(e,r){e?(this.uiCanvas||this.createUICanvas(e,r),this.uiCanvas.enabled=!0,this.uiCanvas.applyFrame(e)):this.uiCanvas&&(this.uiCanvas.enabled=!1)}updateState(e,r){this.updateState_Entity(e,r),e.backgroundColor!==void 0&&this.setBackgroundColor(jt(e.backgroundColor,r.shared)),e.fog!==void 0&&this.updateFog(e.fog,r.shared),e.ambient!==void 0&&this.updateAmbientLight(e.ambient,r.shared),e.ao!==void 0&&this.updateAo(e.ao,r.shared),e.shadow!==void 0&&this.updateShadow(e.shadow)}createFrame(e,r){}raycast(e,r){super.raycast(e,r)}switchActiveCamera(e){e&&e.isDescendantOf(this)&&(this.activeCamera!==this.personalCamera&&(this.activeCamera.objectHelper.visible=!0),this.activeCamera=e,e.objectHelper.visible=!1)}get playCamera(){return this.scene?.find(this.data.publish.playCamera)??this.personalCamera}switchToPlayCamera(){this.switchActiveCamera(this.playCamera)}get penumbraSizeArray(){return this.penumbraSizeArrayCache===null&&this.updatePenumbraSizeArray(),this.penumbraSizeArrayCache}updatePenumbraSizeArray(){this.penumbraSizeArrayCache=new Array(5).fill(.5);let e=0,r=0;this.traverseEntity(o=>{if(!o.visible)return!0;o instanceof ms&&o.visible&&e<3&&(this.penumbraSizeArrayCache[e]=o.data.penumbraSize??.5,e+=1),o instanceof ys&&o.visible&&e<5-3&&(this.penumbraSizeArrayCache[3+r]=o.data.penumbraSize??.5,r+=1)})}raycastWithClones(e){let r=[],o=n=>{for(let a of n.children){let s=a.cloner;De.is(a)&&(a.visible||s?.object.data.visible)&&((Ei(a)||Al(a)&&this.scene.enableHelpers&&a.objectHelper.visible)&&(e.intersectObject(a,!1,r),Rl(a,e,r,!0)),o(a))}};return o(this),r}updateEntity2DByOp(e,r,o,n){this.uiCanvas?.updateEntity2DByOp(e,r,o,n)}};import{PointLight as R_,Vector3 as vd,Box3 as L_,Box3Helper as R1,Color as B_}from"three";var Sd=class extends ds(R_,hs){constructor(t,e,r){super(),this.super_Entity(t,e),this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1,this.layers.enable(3);let n=this.shadow.camera;n.fov=90,n.aspect=1,n.near=100,n.far=2500;let a=new vd(-n.far+this.position.x,-n.far+this.position.y,-n.far+this.position.z),s=new vd(n.far+this.position.x,n.far+this.position.y,n.far+this.position.z),l=new L_(a,s),c=new R1(l,new B_(16755200));c.visible=!1,this.gizmos.shadowmap=c,this.update()}update(){if(this.shadow&&(this.shadow.camera.updateProjectionMatrix(),this.gizmos))for(let t in this.gizmos){let e=this.gizmos[t];if(e instanceof R1){let r=this.shadow.camera,o=new vd(-r.far+this.position.x,-r.far+this.position.y,-r.far+this.position.z),n=new vd(r.far+this.position.x,r.far+this.position.y,r.far+this.position.z);e.box.set(o,n),e.updateMatrixWorld(!0)}}}updateMatrixWorld(t){super.updateMatrixWorld(t),this.objectHelper&&this.objectHelper.update()}updateState(t,e){this.updateState_Light(t,e),t.distance!==void 0&&(this.distance=t.distance),t.decay!==void 0&&(this.decay=t.decay),t.shadowRadius!==void 0&&(this.shadow.radius=t.shadowRadius),t.shadowResolution!==void 0&&(this.shadow.mapSize.set(t.shadowResolution,t.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null))}};var wd=class extends et{get forceComputeSize(){return!0}get shape(){return this.geometry.userData.shape}updateEntityBoxSize(t,e){let r=this.geometry.getAttribute("position");r!==void 0?ul(r,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:r.count,t,e):super.updateEntityBoxSize(t,e)}};var bs=class extends et{constructor(e,r,o){super(e,r,o);this._shapeId=null;this._context=o}updateState(e,r){super.updateState(e,r),this.updateShape(),this.refreshAttachedCloners(r)}updateShape(){let e={...this.data.geometry.extrusion.shape};for(let n in e)typeof e[n]=="string"&&(e[n]=this._context.shared.getVariable(e[n],[this.uuid,"geometry","extrusion","shape",n]));let r;if(e.type==="Custom"){let n=e.shapeId;if(n!==this._shapeId&&this.detachShape(),n){this._shapeId=n;let a=this._context.scene.find(n);a?.data&&(a.attachedPaths.add(this),r=a.geometry.userData?.shape),r||this._context.scene.addPendingCommand(()=>this.updateShape())}}else{let n;switch(e.type){case"Rectangle":n=Da;break;case"Ellipse":n=Ma;break;case"Polygon":n=Mu;break;case"Star":n=Iu;break;default:throw new Error(`Unknown shape type: ${e.type}`)}r=n.create({parameters:e}).userData.shape}let o=this.geometry;r&&o.inputs&&(o.inputs.shapeData=r,o.build())}detachShape(){this._shapeId!==null&&this._context.scene.find(this._shapeId)?.attachedPaths.delete(this)}createGeometryDelayed(e){this.geometryCreateDeleyed=e.shared,this.updateShape(),this.refreshAttachedPaths(e)}updateTransformState(e,r){return super.updateTransformState(e,r)}updateGeometryInteractions(e,r){super.updateGeometryInteractions(e,r),this.updateShape()}updateEntityBoxSize(e,r){let o=this.geometry.getAttribute("position");o!==void 0?ul(o,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:o.count,e,r):super.updateEntityBoxSize(e,r)}};var Pd=class extends Ai{constructor(e,r,o){super(e,r,o);this.data=r}};import{Group as V_,Matrix4 as z_,Skeleton as G_}from"three";var Qo=class extends Cr(V_,Ar){constructor(e,r,o){super();r.type==="Instance"&&typeof e=="string"&&(r=this.transformAssignData(r,o)),this.super_Entity(e,r),this.objectHelper.update()}get isComponentRoot(){return this.data.type==="Component"&&typeof this.identity=="string"}get isInstanceRoot(){return this.data.type==="Instance"&&typeof this.identity=="string"}transformAssignData(e,r){let o=pa.getComponentData({scene:r.scene.data,shared:r.shared.data},e.component);if(o){let n,a;for(let s of io.rootOverrideProps)e[s]===void 0?(n===void 0&&(n={...e}),n[s]=o.data[s]):(a===void 0&&(a={}),a[s]=e[s],n===void 0&&(n={...e}),n[s]=Qr.apply(o.data[s],e[s]));return this.overrideData=a,n}else return{...gt.defaultData,...e,...Nr(gt.defaultData,io.rootOverrideProps)}}updateByOp(e,r,o,n){let a;if(this.isInstanceRoot&&!n){if(r=this.transformAssignData(r,o),e.type===0&&e.path.length===0&&this.component)for(let s of io.rootOverrideProps)s in e.props&&e.props[s]===void 0&&(a===void 0&&(a={...e,props:{...e.props}}),a.props[s]=this.component.data[s]);else if(e.type===0&&e.path.length>0&&io.rootOverrideProps.includes(e.path[0])){let s=e.path[0];a===void 0&&(a={...e,path:[],props:{[s]:r[s]}})}}super.updateByOp(a??e,r,o,n)}updateState(e,r){this.updateState_Entity(e,r)}expandInstanceChildren(e){let r=this.data;if(this.component===void 0){let o=e.scene.find(r.component)??null,n=!1;if(o!==this.oldComponent){if(this.oldComponent){let a=0;for(let s of this.children)if(De.is(s))e.scene.disposeAndUnregisterEntityRecursivelyIfNotReregistered(s),Od(s),a+=1;else break;this.children.splice(0,a)}n=!0}if(o){let a={};B1(e,[this.uuid],r.overrides,this,o,o,0,n,a);for(let s of this.children)if(De.is(s)){let l=s.data;l.type==="Empty"&&l.animations&&s.traverseEntity(c=>{let u=c.dataPatched;if(c instanceof et&&u.bones&&u.boneInverses){let p=c.dataPatched;if(p.bones&&p.boneInverses){let d=p.bones.map(m=>e.scene.find(a[m])),f=p.boneInverses.map(m=>new z_().fromArray(m)),h=new G_(d,f);c.bind(h,c.bindMatrix)}}else c.matrixAutoUpdate=!0})}}this.oldComponent=this.component}}};function Od(i){if(i.component){let t=i.component.instances.indexOf(i);t>=0&&i.component.instances.splice(t,1);for(let e of i.children)De.is(e)&&Od(e)}}function L1(i,t,e,r){return i.component===t&&op(i.identity,r)?i.overrideData===e?2:1:0}function B1(i,t,e,r,o,n,a,s,l){if(a>50)return!1;if(r.component!==o){if(r.component){let u=r.component.instances.indexOf(r);u>=0&&r.component.instances.splice(u,1)}o.instances.find(u=>u===r)||o.instances.push(r),r.component=o}o instanceof Qo&&o.isInstanceRoot&&o.expandInstanceChildren(i);let c=0;for(let u of o.children)if(De.is(u)){let p=[...t,...typeof u.identity=="string"?[u.identity]:u.identity],d=ua.resolve(e,p,1);if(d!=null&&!(d instanceof He)){if(!1)debugger;Object.setPrototypeOf(d,He.prototype),console.error("wrong prototype")}let f=null,h;if(!s){let m=r.children[c];if(f=De.is(m)?m:null,f!==null){let y=L1(f,u,d,p);h=y>=1?f.stateSelection:void 0,y!==2&&(f=null)}if(f===null&&(f=i.scene.findInstance(p)??null,f!==null)){let y=L1(f,u,d,p);if(h=y>=1?f.stateSelection:void 0,y!==2)f=null;else{let b=f.parent.children.indexOf(f);f.parent.children.splice(b,1),r.children.splice(c,0,f),f.parent===r?(b<=c&&console.error("not possible"),void 0):(f.parent=r,f.matrixWorldNeedsUpdate=!0,f.resetBBoxNeedsUpdate(),f.updateVisible(),i.pendingDeletes.delete(f),void 0)}}}if(f===null){let m=d?Qr.apply(u.data,d):u.data;Dr.is(m.type)&&(m={...m,type:"Empty"}),f=Br.createEntity(p,m,i),f.overrideData=d,r.add(f),r.children.splice(r.children.length-1,1),r.children.splice(c,0,f),f.updateState(f.data,i),h&&f.changeSelectedState(h,i),i.scene.registerInstanceAndSetUuid(f)}if(f.isBone){let m=f.identity[f.identity.length-1];l[m]=f.uuid}c+=1,B1(i,t,e,f,u,n,a+1,s,l)}if(!s){let u=c;for(;;){let p=r.children[c];if(De.is(p))i.pendingDeletes.add(p);else break;c+=1}r.children.splice(u,c-u)}return!0}import{Bone as F_}from"three";var Td=class extends Cr(F_,Ar){constructor(t,e){super(),this.super_Entity(t,e),this.objectHelper.update(),this.matrixAutoUpdate=!0}updateState(t,e){this.updateState_Entity(t,e)}};var Pn=class extends et{constructor(e,r,o){super(e,r,o);this.onBeforeRender=e=>{this.uiCanvas.render(e)};this.uiCanvas=new xs(e+"-canvas",r.geometry.width,r.geometry.height,o),this.uiCanvas.promise.then(()=>{this.applyFrame(this.dataPatched.geometry.frame,o.shared)})}updateByPatchedOpGeometry(e,r,o){super.updateByPatchedOpGeometry(e,r,o),e.type===0&&(e.props.frame!==void 0&&this.applyFrame(e.props.frame,o.shared),(e.props.width!==void 0||e.props.height!==void 0)&&this.applySize(e.props,o.shared))}applySize(e,r){let o=e?.width??this.dataPatched.geometry.width,n=e?.height??this.dataPatched.geometry.height;this.uiCanvas.applySize({width:o,height:n}),this.applyGeometryParametersFromFrame(r)}applyFrame(e,r){this.uiCanvas.applyFrame(e),this.applyGeometryParametersFromFrame(r),this.applyMaterialParametersFromFrame({shared:r})}applyGeometryParametersFromFrame(e){let r=this.frame;r&&(Object.assign(this.data,{geometry:Object.assign(this.data.geometry,{cornerRadius:r.cornerRadius,cornerType:0})}),Object.assign(this.dataPatched,{geometry:Object.assign(this.dataPatched.geometry,{cornerRadius:r.cornerRadius,cornerType:0})}),this.localGeometry?.dispose(),this.localGeometry=uo(this.dataPatched.geometry,e,this.data.flatShading,this))}applyMaterialParametersFromFrame(e){let r=this.frame;if(r){let o=r.data.backgroundBlur;Object.assign(this.data.material.layers[0].data.texture,{image:this.uiCanvas.uuid}),Object.assign(this.data.material.layers[1].data,{roughness:o.radius,alpha:o.enabled?1:0}),Object.assign(this.dataPatched.material.layers[0].data.texture,{image:this.uiCanvas.uuid}),Object.assign(this.dataPatched.material.layers[1].data,{roughness:o.radius,alpha:o.enabled?1:0}),this.material.reset?.(this.dataPatched.material,e,!0)}}updateEntity2DByOp(e,r,o,n){this.uiCanvas.updateEntity2DByOp(e,r,o,n),e===this.frameId&&r.type===0&&(r.props.cornerRadius!==void 0?this.applyGeometryParametersFromFrame(n):Le(r.path,["backgroundBlur"])&&this.applyMaterialParametersFromFrame({shared:n}))}get frame(){return this.uiCanvas.frame}get frameId(){return this.frame?.uuid}removeInteractionGeometry(e){super.removeInteractionGeometry(e),this.applySize({},e)}updateGeometryInteractions(e,r){super.updateGeometryInteractions(e,r),this.applySize({width:e.width,height:e.height},r);let o={...this.data.geometry,...e};this.localGeometry?.dispose(),this.localGeometry=uo(o,r,this.data.flatShading,this)}};import{Object3D as Q_,Vector3 as Ir,InstancedMesh as Z_,InstancedBufferAttribute as J_,PlaneGeometry as eR,Vector4 as Ll,Quaternion as oS,TextureLoader as tR,Texture as iS,Euler as rR,MathUtils as Kh}from"three";import{GPUComputationRenderer as oR}from"three/examples/jsm/misc/GPUComputationRenderer.js";import{Vector3 as V1,FloatType as Hh,DataTexture as Wh,RGBAFormat as qh,Mesh as j_,Euler as Rde,Matrix4 as Lde}from"three";import{MeshSurfaceSampler as U_}from"three/examples/jsm/math/MeshSurfaceSampler.js";function z1(i){let t=new Float32Array(i*i*2);for(let e=0;e<i;e++)for(let r=0;r<i;r++){let o=e*i+r;t[o*2+0]=e/(i-1),t[o*2+1]=r/(i-1)}return t}function G1(i){let t=Math.ceil(Math.sqrt(i));return Math.max(t,1)}function F1(i,t){let e=new j_(i.geometry,i.material),r=[],o=[],n=new V1,a=new V1;e.geometry.index!==null&&(e.geometry=e.geometry.toNonIndexed());let s=new U_(e).build();for(let u=0;u<t;u++)s.sample(n,a),r.push(n.x,n.y,n.z),o.push(a.x,a.y,a.z);let l=new Float32Array(r),c=new Float32Array(o);return{positions:l,normals:c}}function $h(i,t){let e=i,r=new Float32Array(4*t*t);for(let n=0;n<t*t;n++)r[4*n]=e[3*n],r[4*n+1]=e[3*n+1],r[4*n+2]=e[3*n+2],r[4*n+3]=0;let o=new Wh(r,t,t,qh,Hh);return o.needsUpdate=!0,o}function j1({size:i}){let t=new Float32Array(4*i*i);for(let r=0;r<i*i;r++)t[4*r]=r,t[4*r+1]=0,t[4*r+2]=0,t[4*r+3]=0;let e=new Wh(t,i,i,qh,Hh);return e.needsUpdate=!0,e}function U1(i){let t=new Float32Array(4*i*i);for(let r=0;r<i*i;r++)t[4*r]=0,t[4*r+1]=0,t[4*r+2]=0,t[4*r+3]=0;let e=new Wh(t,i,i,qh,Hh);return e.needsUpdate=!0,e}var k1=`
|
|
2674
|
+
}`,w_=new y_(-1,1,1,-1,0,1),Uh=class extends d_{constructor(){super(),this.setAttribute("position",new D1([-1,3,0,-1,-1,0,3,-1,0],3)),this.setAttribute("uv",new D1([0,2,0,0,2,0],2))}},P_=new Uh,kh=class{constructor(t){this._mesh=new m_(P_,t)}dispose(){this._mesh.geometry.dispose()}render(t){t.render(this._mesh,w_)}get material(){return this._mesh.material}set material(t){this._mesh.material=t}},_1=new g_({defines:{},uniforms:{tDiffuse:new x_(null)},vertexShader:v_,fragmentShader:S_}),O_=new kh(_1),Fh=null,jh=null,T_=()=>(Fh===null&&(Fh=document.createElement("canvas")),Fh),C_=i=>(jh===null&&(jh=new Dl(i)),jh),A_=Ee.identity(),bs=class{constructor(t,e,r,o){this.uuid=t;this.width=e;this.height=r;this.context=o;this.enabled=!0;this.isScreenSpace=!1;this.dpr=window.devicePixelRatio;this.isFrameDirty=!1;this.onRenderRequestedDownstream=()=>{this.isFrameDirty=!0,this.context.shared.requestRender()};this._innerApplySize=()=>{let t=this.width,e=this.height,r=this.dpr;this.renderer.dpr=this.isScreenSpace?r:Math.floor(2048/Math.max(t,e)),this.renderer.setSize(t,e)};this.onFrameOverrideObjectEvent=t=>{if(t.target?.uuid!==void 0){let e=this.frameRoot?.find(t.target.uuid);e&&e.dispatchEvent({...t,target:e})}};this.scene2d=new Pn(h_.generateUUID(),su.defaultData,{dpr:window.devicePixelRatio,shared:o.shared}),this.canvas=T_(),this.renderer=C_(this.canvas),this.promise=this.init(),this.renderTarget=new b_(1,1,{type:f_,stencilBuffer:!1,depthBuffer:!1}),o.shared.addUIBuffer(this.uuid,this.renderTarget),this.textureHolder=o.shared.uiBuffer(this.uuid)}get canvasTexture(){return this._canvasTexture||(this._canvasTexture=new p_(this.canvas)),this._canvasTexture}async init(){this.renderer instanceof Dl&&(this.renderer.wasmURL=tv.skiaWasmUrl),await this.renderer.init()}render(t){if(this.isFrameDirty){this.isFrameDirty=!1,this._innerApplySize(),this.renderer.clear(),this.frameOverride?.draw(this.renderer),this.renderer.render(),_1.uniforms.tDiffuse.value=this.canvasTexture,this.canvasTexture.needsUpdate=!0;let e=t.getRenderTarget();t.setRenderTarget(this.renderTarget),t.clear(),O_.render(t),t.setRenderTarget(e),this.textureHolder?.setNeedsUpdate(!0)}}updateEntity2DByOp(t,e,r,o){this.scene2d.updateEntityByOp(t,e,r,o),this.applySize()}updateTreeByOp(t,e){this.scene2d.updateTreeByOp(t,e),this.applySize()}applyOverrides(t){if(this.frameOverride&&this.frameRoot){this.frameOverride.position=[0,0],this.frameOverride.rotation=0;let e=t?.width??this.width,r=t?.height??this.height;this.frameOverride.width=e,this.frameOverride.height=r,this.frameOverride.localMatrix=A_,this.isScreenSpace&&(this.frameOverride.fill.color=Ie.from0to1([0,0,0,0])),this.frameOverride.data={...this.frameOverride.data,width:e,height:r},R1({objectOverride:this.frameOverride,objectRoot:this.frameRoot,newParentWidth:this.frameOverride.width,newParentHeight:this.frameOverride.height,initialParentWidth:this.frameRoot.width,initialParentHeight:this.frameRoot.height}),this.frameOverride.updateWorldMatrix(!0,!1,!0)}}applySize(t,e=window.devicePixelRatio){let r=Math.max(1,t?.width??this.width),o=Math.max(1,t?.height??this.height);this.dpr=e,this.width=r,this.height=o,this._innerApplySize();let n=1,a=512,s=512;(r*e<a||o*e<s)&&(n=Math.max(a/(r*e),s/(o*e))),this.renderTarget.setSize(r*e*n,o*e*n),this._canvasTexture?.dispose(),this._canvasTexture=void 0,this.applyOverrides(t),this.frameOverride?.requestRender()}applyFrame(t){let e=this.context.scene.find2D(t);if(!(!e||!(e instanceof mr)))return this.disposeFrameOverride(),this.frameRoot=e,this.frameOverride=e.clone({dpr:this.renderer.dpr,shared:this.context.shared}),this.scene2d.add(this.frameOverride),this.applySize(),this.frame?.addEventListener("render",this.onRenderRequestedDownstream),this.frameOverride.traverse(r=>{r.addEventListener("beginState",this.onFrameOverrideObjectEvent)}),this.frameOverride.traverse(r=>{r.addEventListener("completeState",this.onFrameOverrideObjectEvent)}),this.frame?.requestRender(),e}get frame(){return this.frameOverride}get frameId(){return this.frame?.uuid}find(t){return this.scene2d.find(t)}get texture(){return this.textureHolder?.getTexture(1001)}disposeFrameOverride(){this.frameOverride?.removeEventListener("render",this.onRenderRequestedDownstream),this.frameOverride?.traverse(t=>{t.removeEventListener("beginStateChange",this.onFrameOverrideObjectEvent)}),this.frameOverride?.traverse(t=>{t.removeEventListener("completeState",this.onFrameOverrideObjectEvent)}),this.frameOverride&&this.scene2d.remove(this.frameOverride)}};function R1({objectOverride:i,objectRoot:t,newParentWidth:e,newParentHeight:r,initialParentWidth:o,initialParentHeight:n}){if(i instanceof mr&&t instanceof mr||i instanceof sr&&t instanceof sr)for(let a=0,s=i.children.length;a<s;a++){let l=i.children[a],c=t.children[a];l&&c&&l.uuid===c.uuid&&I_({objectOverride:l,objectRoot:c,newParentWidth:e,newParentHeight:r,initialParentWidth:o,initialParentHeight:n})}}function M_(i){if(Hh(i))return[i.width,i.height];if(i instanceof Qo){let[t,e]=i.getHalfSize();return[t*2,e*2]}else if(i instanceof sr){let[t,e]=i.recursiveBBox.getHalfSize();return[t*2,e*2]}return[0,0]}function I_({objectOverride:i,objectRoot:t,newParentWidth:e,newParentHeight:r,initialParentWidth:o,initialParentHeight:n}){let[a,s]=M_(t),{width:l,height:c,position:u}=Gh({constraints:i.data,newParentWidth:e,newParentHeight:r,initialParentWidth:o,initialParentHeight:n,objectInitialWidth:a,objectInitialHeight:s,objectInitialPosition:t.position});if(i.position=u,i.data={...i.data,position:u},i.states)for(let d in i.states)E_({stateId:d,objectOverride:i,objectRoot:t,newParentWidth:e,newParentHeight:r,initialParentWidth:o,initialParentHeight:n});if(Hh(i)||i instanceof sr)Hh(i)&&(i.width=l,i.height=c,i.data={...i.data,width:l,height:c}),R1({objectOverride:i,objectRoot:t,newParentWidth:l,newParentHeight:c,initialParentWidth:a,initialParentHeight:s});else if(i instanceof Qo){let d=t,p=a!==0?l/a:1,f=s!==0?c/s:1;i.path=E1(d.path,p,f),i.data={...i.data,path:i.path}}}function E_({stateId:i,objectOverride:t,objectRoot:e,newParentWidth:r,newParentHeight:o,initialParentWidth:n,initialParentHeight:a}){let s=t.states?.[i],l=e.states?.[i];if(s&&l){let{width:c,height:u,position:d}=Gh({constraints:t.data,newParentWidth:r,newParentHeight:o,initialParentWidth:n,initialParentHeight:a,objectInitialWidth:zo.isResizeable(l)?l.width:0,objectInitialHeight:zo.isResizeable(l)?l.height:0,objectInitialPosition:l.position});Object.assign(t.states[i],{position:d}),zo.isResizeable(s)&&Object.assign(t.states[i],{width:c,height:u})}}function Hh(i){return i instanceof wo||i instanceof mr||i instanceof Ri||i instanceof Li}var Ir=class extends Sa(R_){constructor(e,r,o){super();this.data=r;this.bgColor=new Ct(1,1,1,1);this.fog=null;this.backupFog=new D_(16777215,.1,2e3);this.fogUseBGColor=!1;this.isActive=!1;this.aoColor=new N_;this.penumbraSizeArrayCache=null;this.super_Entity(e,r),this.personalCamera=new Yo(fi,{...en.defaultData,...r.camera,name:"Personal Camera"}),this.personalCamera.objectHelper.visible=!1,this.add(this.personalCamera),this.activeCamera=this.personalCamera,this.ambientLight=new __(13882323,8553090,.75),this.ambientLight.name="Default Ambient Light",this.ambientLight.layers.enable(3),this.ambientLight.removeFromParent(),this.add(this.ambientLight),r.uiScene?this.uiScene=new Pn((Array.isArray(e)?e[0]:e)+"-ui",r.uiScene,{dpr:window.devicePixelRatio,shared:o.shared}):r.uiFrame&&this.createUICanvas(r.uiFrame,o)}get scene(){return this.parent}get postprocessing(){return this.data.postprocessing}get frameId(){return this.data.uiFrame}get frame(){return this.uiCanvas?.frame}createUICanvas(e,r){this.uiCanvas=new bs(this.uuid+"-uiscreen",window.innerWidth,window.innerHeight,r),this.uiCanvas.isScreenSpace=!0,this.uiCanvas.promise.then(()=>{this.uiCanvas?.applyFrame(e),this.uiCanvas?.applySize()})}updateVisible(){}setBackgroundColor(e){this.bgColor=e,this.fogUseBGColor===!0&&(this.backupFog.color=e)}entityChildrenCount(){return this.uiScene?this.uiScene.children.length:super.entityChildrenCount()}updateAmbientLight(e,r){e.color!==void 0&&(this.ambientLight.color=Ut(e.color,r)),e.intensity!==void 0&&(this.ambientLight.intensity=e.intensity),e.enabled!==void 0&&(e.enabled?this.add(this.ambientLight):this.remove(this.ambientLight))}onDeactive(){this.isActive=!1}onActive(e){this.isActive=!0,e.fog=this.fog,this.traverseEntity(r=>{r instanceof ar&&r.recomputeBoolean()}),this.updateShadow(this.data.shadow)}forceMaterialsUpdate(){this.traverseEntity(e=>{if(e instanceof nr)if(Array.isArray(e.material))for(let r of e.material)r.needsUpdate=!0;else e.material.needsUpdate=!0,e.material.dispose()})}updateShadow(e){e.softShadowQuality!==void 0&&this.isActive&&i1(e.softShadowQuality)&&this.forceMaterialsUpdate()}updateFog(e,r){if(e.enabled?this.fog=this.backupFog:this.fog=null,this.isActive){let o=this.scene;o.fog=this.fog}this.fogUseBGColor=e.useBackgroundColor,e.useBackgroundColor?this.backupFog.color.set(this.bgColor):this.backupFog.color=Ut(e.color,r),this.backupFog.near=e.near,this.backupFog.far=e.far}updateAo(e,r){e.aoColor!==void 0&&(this.aoColor=Ut(e.aoColor,r))}updateByOp(e,r,o,n){let a=this.data.uiFrame;super.updateByOp(e,r,o,n);let s=r;Le(e.path,["fog"])?this.updateFog(s.fog,o.shared):Le(e.path,["ao"])?this.updateAo(s.ao,o.shared):Le(e.path,["ambient"])?this.updateAmbientLight(s.ambient,o.shared):Le(e.path,["shadow"])?this.updateShadow(s.shadow):e.type===0&&e.path.length===0&&(e.props.uiFrame!==void 0||a!==s.uiFrame)&&this.updateUIFrame(e.props.uiFrame,o)}updateUIFrame(e,r){e?(this.uiCanvas||this.createUICanvas(e,r),this.uiCanvas.enabled=!0,this.uiCanvas.applyFrame(e)):this.uiCanvas&&(this.uiCanvas.enabled=!1)}updateState(e,r){this.updateState_Entity(e,r),e.backgroundColor!==void 0&&this.setBackgroundColor(Ut(e.backgroundColor,r.shared)),e.fog!==void 0&&this.updateFog(e.fog,r.shared),e.ambient!==void 0&&this.updateAmbientLight(e.ambient,r.shared),e.ao!==void 0&&this.updateAo(e.ao,r.shared),e.shadow!==void 0&&this.updateShadow(e.shadow)}createFrame(e,r){}raycast(e,r){super.raycast(e,r)}switchActiveCamera(e){e&&e.isDescendantOf(this)&&(this.activeCamera!==this.personalCamera&&(this.activeCamera.objectHelper.visible=!0),this.activeCamera=e,e.objectHelper.visible=!1)}get playCamera(){return this.scene?.find(this.data.publish.playCamera)??this.personalCamera}switchToPlayCamera(){this.switchActiveCamera(this.playCamera)}get penumbraSizeArray(){return this.penumbraSizeArrayCache===null&&this.updatePenumbraSizeArray(),this.penumbraSizeArrayCache}updatePenumbraSizeArray(){this.penumbraSizeArrayCache=new Array(5).fill(.5);let e=0,r=0;this.traverseEntity(o=>{if(!o.visible)return!0;o instanceof ys&&o.visible&&e<3&&(this.penumbraSizeArrayCache[e]=o.data.penumbraSize??.5,e+=1),o instanceof gs&&o.visible&&e<5-3&&(this.penumbraSizeArrayCache[3+r]=o.data.penumbraSize??.5,r+=1)})}raycastWithClones(e){let r=[],o=n=>{for(let a of n.children){let s=a.cloner;De.is(a)&&(a.visible||s?.object.data.visible)&&((Ni(a)||Ml(a)&&this.scene.enableHelpers&&a.objectHelper.visible)&&(e.intersectObject(a,!1,r),Ll(a,e,r,!0)),o(a))}};return o(this),r}updateEntity2DByOp(e,r,o,n){this.uiCanvas?.updateEntity2DByOp(e,r,o,n)}};import{PointLight as L_,Vector3 as Sd,Box3 as B_,Box3Helper as L1,Color as V_}from"three";var wd=class extends ps(L_,ms){constructor(t,e,r){super(),this.super_Entity(t,e),this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1,this.layers.enable(3);let n=this.shadow.camera;n.fov=90,n.aspect=1,n.near=100,n.far=2500;let a=new Sd(-n.far+this.position.x,-n.far+this.position.y,-n.far+this.position.z),s=new Sd(n.far+this.position.x,n.far+this.position.y,n.far+this.position.z),l=new B_(a,s),c=new L1(l,new V_(16755200));c.visible=!1,this.gizmos.shadowmap=c,this.update()}update(){if(this.shadow&&(this.shadow.camera.updateProjectionMatrix(),this.gizmos))for(let t in this.gizmos){let e=this.gizmos[t];if(e instanceof L1){let r=this.shadow.camera,o=new Sd(-r.far+this.position.x,-r.far+this.position.y,-r.far+this.position.z),n=new Sd(r.far+this.position.x,r.far+this.position.y,r.far+this.position.z);e.box.set(o,n),e.updateMatrixWorld(!0)}}}updateMatrixWorld(t){super.updateMatrixWorld(t),this.objectHelper&&this.objectHelper.update()}updateState(t,e){this.updateState_Light(t,e),t.distance!==void 0&&(this.distance=t.distance),t.decay!==void 0&&(this.decay=t.decay),t.shadowRadius!==void 0&&(this.shadow.radius=t.shadowRadius),t.shadowResolution!==void 0&&(this.shadow.mapSize.set(t.shadowResolution,t.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null))}};var Pd=class extends et{get forceComputeSize(){return!0}get shape(){return this.geometry.userData.shape}updateEntityBoxSize(t,e){let r=this.geometry.getAttribute("position");r!==void 0?dl(r,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:r.count,t,e):super.updateEntityBoxSize(t,e)}};var vs=class extends et{constructor(e,r,o){super(e,r,o);this._shapeId=null;this._context=o}updateState(e,r){super.updateState(e,r),this.updateShape(),this.refreshAttachedCloners(r)}updateShape(){let e={...this.data.geometry.extrusion.shape};for(let n in e)typeof e[n]=="string"&&(e[n]=this._context.shared.getVariable(e[n],[this.uuid,"geometry","extrusion","shape",n]));let r;if(e.type==="Custom"){let n=e.shapeId;if(n!==this._shapeId&&this.detachShape(),n){this._shapeId=n;let a=this._context.scene.find(n);a?.data&&(a.attachedPaths.add(this),r=a.geometry.userData?.shape),r||this._context.scene.addPendingCommand(()=>this.updateShape())}}else{let n;switch(e.type){case"Rectangle":n=_a;break;case"Ellipse":n=Ia;break;case"Polygon":n=Iu;break;case"Star":n=Eu;break;default:throw new Error(`Unknown shape type: ${e.type}`)}r=n.create({parameters:e}).userData.shape}let o=this.geometry;r&&o.inputs&&(o.inputs.shapeData=r,o.build())}detachShape(){this._shapeId!==null&&this._context.scene.find(this._shapeId)?.attachedPaths.delete(this)}createGeometryDelayed(e){this.geometryCreateDeleyed=e.shared,this.updateShape(),this.refreshAttachedPaths(e)}updateTransformState(e,r){return super.updateTransformState(e,r)}updateGeometryInteractions(e,r){super.updateGeometryInteractions(e,r),this.updateShape()}updateEntityBoxSize(e,r){let o=this.geometry.getAttribute("position");o!==void 0?dl(o,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:o.count,e,r):super.updateEntityBoxSize(e,r)}};var Od=class extends Mi{constructor(e,r,o){super(e,r,o);this.data=r}};import{Group as z_,Matrix4 as G_,Skeleton as F_}from"three";var Zo=class extends Ar(z_,Mr){constructor(e,r,o){super();r.type==="Instance"&&typeof e=="string"&&(r=this.transformAssignData(r,o)),this.super_Entity(e,r),this.objectHelper.update()}get isComponentRoot(){return this.data.type==="Component"&&typeof this.identity=="string"}get isInstanceRoot(){return this.data.type==="Instance"&&typeof this.identity=="string"}transformAssignData(e,r){let o=fa.getComponentData({scene:r.scene.data,shared:r.shared.data},e.component);if(o){let n,a;for(let s of no.rootOverrideProps)e[s]===void 0?(n===void 0&&(n={...e}),n[s]=o.data[s]):(a===void 0&&(a={}),a[s]=e[s],n===void 0&&(n={...e}),n[s]=Zr.apply(o.data[s],e[s]));return this.overrideData=a,n}else return{...gt.defaultData,...e,...Dr(gt.defaultData,no.rootOverrideProps)}}updateByOp(e,r,o,n){let a;if(this.isInstanceRoot&&!n){if(r=this.transformAssignData(r,o),e.type===0&&e.path.length===0&&this.component)for(let s of no.rootOverrideProps)s in e.props&&e.props[s]===void 0&&(a===void 0&&(a={...e,props:{...e.props}}),a.props[s]=this.component.data[s]);else if(e.type===0&&e.path.length>0&&no.rootOverrideProps.includes(e.path[0])){let s=e.path[0];a===void 0&&(a={...e,path:[],props:{[s]:r[s]}})}}super.updateByOp(a??e,r,o,n)}updateState(e,r){this.updateState_Entity(e,r)}expandInstanceChildren(e){let r=this.data;if(this.component===void 0){let o=e.scene.find(r.component)??null,n=!1;if(o!==this.oldComponent){if(this.oldComponent){let a=0;for(let s of this.children)if(De.is(s))e.scene.disposeAndUnregisterEntityRecursivelyIfNotReregistered(s),Td(s),a+=1;else break;this.children.splice(0,a)}n=!0}if(o){let a={};V1(e,[this.uuid],r.overrides,this,o,o,0,n,a);for(let s of this.children)if(De.is(s)){let l=s.data;l.type==="Empty"&&l.animations&&s.traverseEntity(c=>{let u=c.dataPatched;if(c instanceof et&&u.bones&&u.boneInverses){let d=c.dataPatched;if(d.bones&&d.boneInverses){let p=d.bones.map(m=>e.scene.find(a[m])),f=d.boneInverses.map(m=>new G_().fromArray(m)),h=new F_(p,f);c.bind(h,c.bindMatrix)}}else c.matrixAutoUpdate=!0})}}this.oldComponent=this.component}}};function Td(i){if(i.component){let t=i.component.instances.indexOf(i);t>=0&&i.component.instances.splice(t,1);for(let e of i.children)De.is(e)&&Td(e)}}function B1(i,t,e,r){return i.component===t&&ip(i.identity,r)?i.overrideData===e?2:1:0}function V1(i,t,e,r,o,n,a,s,l){if(a>50)return!1;if(r.component!==o){if(r.component){let u=r.component.instances.indexOf(r);u>=0&&r.component.instances.splice(u,1)}o.instances.find(u=>u===r)||o.instances.push(r),r.component=o}o instanceof Zo&&o.isInstanceRoot&&o.expandInstanceChildren(i);let c=0;for(let u of o.children)if(De.is(u)){let d=[...t,...typeof u.identity=="string"?[u.identity]:u.identity],p=da.resolve(e,d,1);if(p!=null&&!(p instanceof He)){if(!1)debugger;Object.setPrototypeOf(p,He.prototype),console.error("wrong prototype")}let f=null,h;if(!s){let m=r.children[c];if(f=De.is(m)?m:null,f!==null){let y=B1(f,u,p,d);h=y>=1?f.stateSelection:void 0,y!==2&&(f=null)}if(f===null&&(f=i.scene.findInstance(d)??null,f!==null)){let y=B1(f,u,p,d);if(h=y>=1?f.stateSelection:void 0,y!==2)f=null;else{let x=f.parent.children.indexOf(f);f.parent.children.splice(x,1),r.children.splice(c,0,f),f.parent===r?(x<=c&&console.error("not possible"),void 0):(f.parent=r,f.matrixWorldNeedsUpdate=!0,f.resetBBoxNeedsUpdate(),f.updateVisible(),i.pendingDeletes.delete(f),void 0)}}}if(f===null){let m=p?Zr.apply(u.data,p):u.data;_r.is(m.type)&&(m={...m,type:"Empty"}),f=Vr.createEntity(d,m,i),f.overrideData=p,r.add(f),r.children.splice(r.children.length-1,1),r.children.splice(c,0,f),f.updateState(f.data,i),h&&f.changeSelectedState(h,i),i.scene.registerInstanceAndSetUuid(f)}if(f.isBone){let m=f.identity[f.identity.length-1];l[m]=f.uuid}c+=1,V1(i,t,e,f,u,n,a+1,s,l)}if(!s){let u=c;for(;;){let d=r.children[c];if(De.is(d))i.pendingDeletes.add(d);else break;c+=1}r.children.splice(u,c-u)}return!0}import{Bone as j_}from"three";var Cd=class extends Ar(j_,Mr){constructor(t,e){super(),this.super_Entity(t,e),this.objectHelper.update(),this.matrixAutoUpdate=!0}updateState(t,e){this.updateState_Entity(t,e)}};var On=class extends et{constructor(e,r,o){super(e,r,o);this.onBeforeRender=e=>{this.uiCanvas.render(e)};this.uiCanvas=new bs(e+"-canvas",r.geometry.width,r.geometry.height,o),this.uiCanvas.promise.then(()=>{this.applyFrame(this.dataPatched.geometry.frame,o.shared)})}updateByPatchedOpGeometry(e,r,o){super.updateByPatchedOpGeometry(e,r,o),e.type===0&&(e.props.frame!==void 0&&this.applyFrame(e.props.frame,o.shared),(e.props.width!==void 0||e.props.height!==void 0)&&this.applySize(e.props,o.shared))}applySize(e,r){let o=e?.width??this.dataPatched.geometry.width,n=e?.height??this.dataPatched.geometry.height;this.uiCanvas.applySize({width:o,height:n}),this.applyGeometryParametersFromFrame(r)}applyFrame(e,r){this.uiCanvas.applyFrame(e),this.applyGeometryParametersFromFrame(r),this.applyMaterialParametersFromFrame({shared:r})}applyGeometryParametersFromFrame(e){let r=this.frame;r&&(Object.assign(this.data,{geometry:Object.assign(this.data.geometry,{cornerRadius:r.cornerRadius,cornerType:0})}),Object.assign(this.dataPatched,{geometry:Object.assign(this.dataPatched.geometry,{cornerRadius:r.cornerRadius,cornerType:0})}),this.localGeometry?.dispose(),this.localGeometry=po(this.dataPatched.geometry,e,this.data.flatShading,this))}applyMaterialParametersFromFrame(e){let r=this.frame;if(r){let o=r.data.backgroundBlur;Object.assign(this.data.material.layers[0].data.texture,{image:this.uiCanvas.uuid}),Object.assign(this.data.material.layers[1].data,{roughness:o.radius,alpha:o.enabled?1:0}),Object.assign(this.dataPatched.material.layers[0].data.texture,{image:this.uiCanvas.uuid}),Object.assign(this.dataPatched.material.layers[1].data,{roughness:o.radius,alpha:o.enabled?1:0}),this.material.reset?.(this.dataPatched.material,e,!0)}}updateEntity2DByOp(e,r,o,n){this.uiCanvas.updateEntity2DByOp(e,r,o,n),e===this.frameId&&r.type===0&&(r.props.cornerRadius!==void 0?this.applyGeometryParametersFromFrame(n):Le(r.path,["backgroundBlur"])&&this.applyMaterialParametersFromFrame({shared:n}))}get frame(){return this.uiCanvas.frame}get frameId(){return this.frame?.uuid}removeInteractionGeometry(e){super.removeInteractionGeometry(e),this.applySize({},e)}updateGeometryInteractions(e,r){super.updateGeometryInteractions(e,r),this.applySize({width:e.width,height:e.height},r);let o={...this.data.geometry,...e};this.localGeometry?.dispose(),this.localGeometry=po(o,r,this.data.flatShading,this)}};import{Object3D as Z_,Vector3 as Er,InstancedMesh as J_,InstancedBufferAttribute as eR,PlaneGeometry as tR,Vector4 as Bl,Quaternion as iS,TextureLoader as rR,Texture as nS,Euler as oR,MathUtils as Qh}from"three";import{GPUComputationRenderer as iR}from"three/examples/jsm/misc/GPUComputationRenderer.js";import{Vector3 as z1,FloatType as Wh,DataTexture as qh,RGBAFormat as $h,Mesh as U_,Euler as Gde,Matrix4 as Fde}from"three";import{MeshSurfaceSampler as k_}from"three/examples/jsm/math/MeshSurfaceSampler.js";function G1(i){let t=new Float32Array(i*i*2);for(let e=0;e<i;e++)for(let r=0;r<i;r++){let o=e*i+r;t[o*2+0]=e/(i-1),t[o*2+1]=r/(i-1)}return t}function F1(i){let t=Math.ceil(Math.sqrt(i));return Math.max(t,1)}function j1(i,t){let e=new U_(i.geometry,i.material),r=[],o=[],n=new z1,a=new z1;e.geometry.index!==null&&(e.geometry=e.geometry.toNonIndexed());let s=new k_(e).build();for(let u=0;u<t;u++)s.sample(n,a),r.push(n.x,n.y,n.z),o.push(a.x,a.y,a.z);let l=new Float32Array(r),c=new Float32Array(o);return{positions:l,normals:c}}function Xh(i,t){let e=i,r=new Float32Array(4*t*t);for(let n=0;n<t*t;n++)r[4*n]=e[3*n],r[4*n+1]=e[3*n+1],r[4*n+2]=e[3*n+2],r[4*n+3]=0;let o=new qh(r,t,t,$h,Wh);return o.needsUpdate=!0,o}function U1({size:i}){let t=new Float32Array(4*i*i);for(let r=0;r<i*i;r++)t[4*r]=r,t[4*r+1]=0,t[4*r+2]=0,t[4*r+3]=0;let e=new qh(t,i,i,$h,Wh);return e.needsUpdate=!0,e}function k1(i){let t=new Float32Array(4*i*i);for(let r=0;r<i*i;r++)t[4*r]=0,t[4*r+1]=0,t[4*r+2]=0,t[4*r+3]=0;let e=new qh(t,i,i,$h,Wh);return e.needsUpdate=!0,e}var H1=`
|
|
2675
2675
|
// uniform sampler2D uCurrentPosition; // Pass in the variable from GPGPU
|
|
2676
2676
|
// uniform sampler2D uCurrentVelocity; // Pass in the variable from GPGPU
|
|
2677
2677
|
// uniform sampler2D uCurrentEmissionRate; // Pass in the variable from GPGPU
|
|
@@ -2740,7 +2740,7 @@ void main() {
|
|
|
2740
2740
|
gl_FragColor = mix(vec4(0.0), activeColor, isActive);
|
|
2741
2741
|
|
|
2742
2742
|
}
|
|
2743
|
-
`;var
|
|
2743
|
+
`;var W1=`
|
|
2744
2744
|
|
|
2745
2745
|
vec3 mod289(vec3 x) {
|
|
2746
2746
|
return x - floor(x * (1.0 / 289.0)) * 289.0;
|
|
@@ -2942,7 +2942,7 @@ vec3 fbm_vec3(vec3 p, float frequency, float offset)
|
|
|
2942
2942
|
);
|
|
2943
2943
|
}
|
|
2944
2944
|
|
|
2945
|
-
`;var
|
|
2945
|
+
`;var q1=`
|
|
2946
2946
|
#ifdef USE_COLLIDER
|
|
2947
2947
|
float restitution = max(uBounce * 2., .01); // Energy Loss
|
|
2948
2948
|
// SPHERE COLLIDER
|
|
@@ -3010,7 +3010,7 @@ vec3 fbm_vec3(vec3 p, float frequency, float offset)
|
|
|
3010
3010
|
#endif
|
|
3011
3011
|
#endif
|
|
3012
3012
|
// END COLLIDER
|
|
3013
|
-
`;var
|
|
3013
|
+
`;var $1=`
|
|
3014
3014
|
#ifdef USE_ATTRACTOR
|
|
3015
3015
|
|
|
3016
3016
|
#ifdef USE_SPHERE_COLLIDER
|
|
@@ -3084,7 +3084,7 @@ vec3 fbm_vec3(vec3 p, float frequency, float offset)
|
|
|
3084
3084
|
velocity *= uForceDamping;
|
|
3085
3085
|
#endif
|
|
3086
3086
|
#endif
|
|
3087
|
-
`;var
|
|
3087
|
+
`;var X1=`
|
|
3088
3088
|
#ifdef USE_VORTEX
|
|
3089
3089
|
// Box dimensions
|
|
3090
3090
|
vec3 boxHalfSize = uColliderSize / 2.0;
|
|
@@ -3123,7 +3123,7 @@ vec3 fbm_vec3(vec3 p, float frequency, float offset)
|
|
|
3123
3123
|
velocity += applyForce( originDirection * uSpeed * (1. - uForceDamping) , mass * .5);
|
|
3124
3124
|
}
|
|
3125
3125
|
#endif
|
|
3126
|
-
`;var
|
|
3126
|
+
`;var Y1=`
|
|
3127
3127
|
// uniform sampler2D uCurrentPosition; // Pass in the variable from GPGPU
|
|
3128
3128
|
// uniform sampler2D uCurrentVelocity; // Pass in the variable from GPGPU
|
|
3129
3129
|
// uniform sampler2D uCurrentEmissionRate; // Pass in the variable from GPGPU
|
|
@@ -3149,7 +3149,7 @@ uniform float uForceDamping;
|
|
|
3149
3149
|
uniform float uForceIntensity;
|
|
3150
3150
|
|
|
3151
3151
|
|
|
3152
|
-
`+
|
|
3152
|
+
`+W1+`
|
|
3153
3153
|
float rand(vec2 co){
|
|
3154
3154
|
return fract(sin(dot(co, vec2(12.9898, 78.233))) * 43758.5453);
|
|
3155
3155
|
}
|
|
@@ -3225,11 +3225,11 @@ void main() {
|
|
|
3225
3225
|
#endif
|
|
3226
3226
|
|
|
3227
3227
|
// COLLIDER
|
|
3228
|
-
${
|
|
3228
|
+
${q1}
|
|
3229
3229
|
// ATTRACTION
|
|
3230
|
-
${
|
|
3230
|
+
${$1}
|
|
3231
3231
|
// VORTEX
|
|
3232
|
-
${
|
|
3232
|
+
${X1}
|
|
3233
3233
|
}
|
|
3234
3234
|
// End isActive
|
|
3235
3235
|
|
|
@@ -3247,7 +3247,7 @@ void main() {
|
|
|
3247
3247
|
|
|
3248
3248
|
gl_FragColor = vec4(velocity, collisionFlag);
|
|
3249
3249
|
}
|
|
3250
|
-
`;import{ShaderMaterial as
|
|
3250
|
+
`;import{ShaderMaterial as H_}from"three";var Yh=`
|
|
3251
3251
|
|
|
3252
3252
|
// Linear Fade In
|
|
3253
3253
|
float linearFadeIn(float t) {
|
|
@@ -3280,7 +3280,7 @@ void main() {
|
|
|
3280
3280
|
float constant(float t) {
|
|
3281
3281
|
return 1.0;
|
|
3282
3282
|
}
|
|
3283
|
-
`;var
|
|
3283
|
+
`;var K1=`
|
|
3284
3284
|
|
|
3285
3285
|
float rand(vec3 co){
|
|
3286
3286
|
return fract(sin(dot(co.xy ,vec2(12.9898,78.233))) * 43758.5453);
|
|
@@ -3295,7 +3295,7 @@ vec3 applyForce(vec3 force, float mass) {
|
|
|
3295
3295
|
|
|
3296
3296
|
return acceleration;
|
|
3297
3297
|
}
|
|
3298
|
-
`;var
|
|
3298
|
+
`;var Q1=`
|
|
3299
3299
|
vec3 rgb2xyz (in vec3 rgb) {
|
|
3300
3300
|
float r = rgb.r;
|
|
3301
3301
|
float g = rgb.g;
|
|
@@ -3386,7 +3386,7 @@ vec3 lab2rgb (in vec3 lab) {
|
|
|
3386
3386
|
return(rgb);
|
|
3387
3387
|
}
|
|
3388
3388
|
|
|
3389
|
-
`;var
|
|
3389
|
+
`;var Z1=`
|
|
3390
3390
|
uniform sampler2D uPosition;
|
|
3391
3391
|
uniform float uSize;
|
|
3392
3392
|
uniform float uSizeEnd;
|
|
@@ -3407,9 +3407,9 @@ vec3 lab2rgb (in vec3 lab) {
|
|
|
3407
3407
|
varying vec2 vUv;
|
|
3408
3408
|
varying vec2 vRef;
|
|
3409
3409
|
|
|
3410
|
-
${
|
|
3411
|
-
${
|
|
3412
|
-
`,
|
|
3410
|
+
${K1}
|
|
3411
|
+
${Yh}
|
|
3412
|
+
`,J1=({easeSize:i="linearFadeOut"})=>`
|
|
3413
3413
|
vUv = uv;
|
|
3414
3414
|
vRef = ref;
|
|
3415
3415
|
// Normalized LifeTime 1 to 0
|
|
@@ -3461,7 +3461,7 @@ vec3 lab2rgb (in vec3 lab) {
|
|
|
3461
3461
|
mvPosition = modelViewMatrix * instanceMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );
|
|
3462
3462
|
mvPosition.xy += rotatedPosition;
|
|
3463
3463
|
gl_Position = projectionMatrix * mvPosition;
|
|
3464
|
-
`,
|
|
3464
|
+
`,eS=`
|
|
3465
3465
|
uniform vec4 uColor; // start color
|
|
3466
3466
|
uniform vec4 uColor2; // end color
|
|
3467
3467
|
uniform sampler2D uTexture; // texture
|
|
@@ -3472,10 +3472,10 @@ vec3 lab2rgb (in vec3 lab) {
|
|
|
3472
3472
|
float random(vec2 co) {
|
|
3473
3473
|
return fract(sin(dot(co.xy, vec2(12.9898, 78.233))) * 43758.5453);
|
|
3474
3474
|
}
|
|
3475
|
-
`+
|
|
3476
|
-
${
|
|
3475
|
+
`+Yh+`
|
|
3476
|
+
${Q1}
|
|
3477
3477
|
|
|
3478
|
-
`,
|
|
3478
|
+
`,tS=({easeOpacity:i="linearFadeOut"})=>`
|
|
3479
3479
|
// if Particle is dead, hide it
|
|
3480
3480
|
if (v_LifeLeft <= 0.005 ) {
|
|
3481
3481
|
discard;
|
|
@@ -3496,7 +3496,7 @@ vec3 lab2rgb (in vec3 lab) {
|
|
|
3496
3496
|
|
|
3497
3497
|
gl_FragColor = vec4(finalColor, finalAlpha);
|
|
3498
3498
|
|
|
3499
|
-
`;var
|
|
3499
|
+
`;var Ad=class extends H_{constructor(e,r){super();this.needsJitter=!0;this.type="ParticleMaterial";this.easeOpacity="linearFadeIn";this.easeSize="linearFadeIn";this.useSizeEnd=!1;this.isColoringRandom=!1;this.init(e,r),this.context=r}reset(){}init(e,r){this.transparent=!0,this.depthTest=!0,this.depthWrite=!1,this.easeOpacity=e.ease,this.easeSize=e.easeSize,this.layers=[],$e.startContext($e.globalContext),this.lightLayer=new Qt(0,"",{...vt.defaultData("light","phong"),visible:!1},new Ho,{},r.shared),$e.endContext($e.globalContext),this.build()}updateState(e){e.coloring!==void 0&&(this.isColoringRandom=e.coloring==="random"),e.color!==void 0&&(e.color instanceof Array?this.uniforms.uColor.value=e.color:this.uniforms.uColor.value=this.context.shared.color(e.color)),e.color2!==void 0&&(e.color2 instanceof Array?this.uniforms.uColor2.value=e.color2:this.uniforms.uColor2.value=this.context.shared.color(e.color2)),e.size!==void 0&&(this.uniforms.uSize.value=e.size[0],this.uniforms.uSizeEnd.value=e.size[1],e.size[0]!==e.size[1]?this.useSizeEnd=!0:this.useSizeEnd=!1),e.ease!==void 0&&(this.easeOpacity=e.ease,this.build()),e.easeSize!==void 0&&(this.easeSize=e.easeSize,this.build()),this.needsUpdate=!0}onBeforeCompile(e){this.build(),e.defines=this.defines,e.uniforms=this.uniforms,e.vertexShader=this.vertexShader,e.fragmentShader=this.fragmentShader}build(){let e=new ka;return e.needsJitter=this.needsJitter,e.addFragmentParsCode(Wb),e.buildShader("vertex",this.fragment),e.buildShader("fragment",this.fragment),e.addFragmentFinalCode(qb),this.isColoringRandom&&e.define("USE_RANDOM_COLORING"),this.useSizeEnd&&e.define("USE_SIZE_END"),e.addVertexParsCode(Z1),e.addFragmentParsCode(eS),e.addVertexFinalCode(J1({easeSize:this.easeSize})),e.addFragmentFinalCode(tS({easeOpacity:this.easeOpacity})),this.vertexShader=e.getCode("vertex"),this.fragmentShader=e.getCode("fragment"),this.defines=e.defines,this.uniforms={...e.uniforms,...this.uniforms},this.extensions=e.extensions,this}get nodeMaterial(){return this}get fragment(){return this.lightLayer.node}getDefines(){return this.defines}nodeMaterialDispose(){this.layers.forEach(e=>e.dispose()),super.dispose()}};import{BoxGeometry as W_,ConeGeometry as q_,MeshBasicMaterial as $_,SphereGeometry as Kh,Vector3 as X_}from"three";import{Mesh as Y_}from"three";import{TorusGeometry as K_}from"three";import{PlaneGeometry as Q_}from"three";var Ss=class{constructor(t,e,r,o){this.type="SphereEmitterShape";this.targetMesh=void 0;this.size=t,this.type=r,this.textureSize=F1(e);let n=1;this.targetMesh=o?.geometry.type==="BufferGeometry"||o?.type==="Mesh"&&o&&o.geometry.hasAttribute("position")&&o.geometry.hasAttribute("normal")?o:this.getMesh(r,n);let{positions:a,dataTexture:s,dataTextureNormals:l}=this.createPositions(this.textureSize,this.targetMesh??this.getMesh(r,n));this.positionsTexture=s,this.positionsAttribute=a,this.directionsTexture=l}createPositions(t,e){let{positions:r,normals:o}=j1(e,t*t),n=Xh(r,t),a=Xh(o,t);return{dataTexture:n,positions:r,dataTextureNormals:a}}getMesh(t,e){let r=null;switch(t){case"SphereEmitterShape":{r=new Kh(e*.5,32,32);break}case"TorusEmitterShape":{r=new K_(e*.5,.3,15,40);break}case"ConeEmitterShape":{r=new q_(e,e,15);break}case"BoxEmitterShape":{r=new W_(e,e,e);break}case"PlaneEmitterShape":{r=new Q_(e,e),r.rotateX(-Math.PI/2);break}case"MeshEmitterShape":{r=new Kh(e,32,32);break}default:{r=new Kh(e,32,32);break}}return new Y_(r,new $_({color:16711680}))}applyToShader(t,e){this.size=new X_().fromArray(e.size),t.uEmitterSize.value=this.size}dispose(){this.positionsTexture.dispose(),this.directionsTexture.dispose(),this.positionsAttribute=new Float32Array}};function Bi(i){let t={...i},e=aa.defaultData;t.forceFieldObjectId&&(t.colliderEntityId=t.forceFieldObjectId);let r={...e.shape,...t.shape},o={...e.renderMaterial,...t.renderMaterial};return{...e,...t,shape:r,renderMaterial:o}}var rS=`
|
|
3500
3500
|
// uniform sampler2D uCurrentPosition; // Pass in the variable from GPGPU
|
|
3501
3501
|
// uniform sampler2D uCurrentVelocity; // Pass in the variable from GPGPU
|
|
3502
3502
|
// uniform sampler2D uCurrentEmissionRate; // Pass in the variable from GPGPU
|
|
@@ -3543,19 +3543,19 @@ void main() {
|
|
|
3543
3543
|
|
|
3544
3544
|
|
|
3545
3545
|
}
|
|
3546
|
-
`;var Qh=10,Ad=class extends Q_{constructor(e,r){super();this.type="ParticleEmitter";this.debugMode=!1;this.worldSpace=!0;this.rootObject=null;this.gpuCompute=null;this.positionSimRT=null;this.velocitySimRT=null;this.emissionRateSimRT=null;this.emitterShape=void 0;this.isEmitting=!1;this.hasBeenReset=!1;this.emittedParticlesAmount=0;this.lastEmitTime=0;this.globalTime=0;this.targetFPS=60;this.previousRatio=1;this.lerpFactor=.4;this.particlesAmount=0;this.noiseStrength=0;this.noiseScale=0;this.isBillboardBased=!0;this.simFeaturesDefinition={USE_COLLIDER:!1,USE_ATTRACTOR:!1,USE_VORTEX:!1,USE_SPHERE_COLLIDER:!1,USE_BOX_COLLIDER:!1,USE_FORCE_LOCAL_SPACE:!1,USE_NORMALS:!1,USE_CURL_NOISE:!0,USE_SIMPLEX_NOISE:!1,USE_FBM_NOISE:!1};this.textureLoader=new tR;this.currentWorldPosition=new Ir;this.systemQuaternion=new oS;this.worldGravity=new Ir(0,0,0);this.directionAxis=new Ir(0,0,0);this.colliderV3=new Ir(0,0,0);this.colliderQuaternion=new oS(0,0,0,1);this.matrixAutoUpdate=!0,this.renderer=e,this.system=r,this.shared=r.context.shared;let o=r.data;this.material=new Cd(o.renderMaterial,r.context),this.material.uniforms={uSize:{value:0},uSizeEnd:{value:0},uColor:{value:o.renderMaterial.color},uColor2:{value:o.renderMaterial.color2},uPosition:{value:new Ir(0,0,0)},uEmissionData:{value:new Ir(0,0,0)},uTexture:{value:this.defaultTexture},uWorldOffset:{value:new Ir(0,0,0)},uWorldQuaternion:{value:new Ll(0,0,0,1)},uRandScaleFactor:{value:o.randomScale??0},uRandRotationFactor:{value:o.randomRotation??0},uRotation:{value:o.renderMaterial.spriteRotation[0]??0},uRotationEnd:{value:o.renderMaterial.spriteRotation[1]??0}},this.setTexture(this.material.uniforms,o.renderMaterial.texture),this.init(o)}setTexture(e,r){let o=r.data;if(typeof r=="string"){let n=this.shared.image(r),a=new iS(n.img);a.needsUpdate=!0,e.uTexture.value=a;return}if(typeof o!="string"){let n=new Image;n.onload=()=>{let l=new iS(n);l.needsUpdate=!0,e.uTexture.value=l};let a=new Blob([o],{type:"image/*"}),s=URL.createObjectURL(a);n.src=s}}updateGeometryAttributes(e,r){let o=z1(r);!this.emitterShape?.positionsAttribute||e.geometry.setAttribute("ref",new J_(o,2))}applyWorldSpace(){if(!this.system.started||!this.worldSpace||!this.positionSimRT||!this.velocitySimRT)return;let e=this.system;e.getWorldQuaternion(this.systemQuaternion),this.systemQuaternion.invert(),e.getWorldPosition(this.currentWorldPosition),this.material.uniforms.uWorldOffset.value=this.currentWorldPosition,this.material.uniforms.uWorldQuaternion.value.copy(this.systemQuaternion.normalize()),this.positionSimRT.material.uniforms.uWorldOffset.value=this.currentWorldPosition,this.systemQuaternion.invert(),this.positionSimRT.material.uniforms.uWorldQuaternion.value.copy(this.systemQuaternion.normalize()),this.velocitySimRT.material.uniforms.uWorldQuaternion.value.copy(this.systemQuaternion.normalize())}update(e,r){if(!this.gpuCompute||!this.positionSimRT||!this.velocitySimRT||!this.emissionRateSimRT||this.hasBeenReset)return;if(this.checkIfAllParticlesAreDead()&&!this.hasBeenReset){this.reset();return}this.applyWorldSpace(),this.globalTime=e,this.positionSimRT.material.uniforms.uTime.value=e,this.emissionRateSimRT.material.uniforms.uTime.value=e;let o=1e3/r,n=this.targetFPS/o,a=this.previousRatio+(n-this.previousRatio)*this.lerpFactor;this.positionSimRT.material.uniforms.uFPSRatio.value=a,this.previousRatio=a;let s=this.isEmitting?this.GoEmitSomeParticles(e,this.system.data.birthRatePerSec):0;this.emissionRateSimRT.material.uniforms.uLastIndexEmitted.value=this.emittedParticlesAmount,this.emissionRateSimRT.material.uniforms.uParticlesToEmit.value=s,this.material.uniforms.uPosition.value=this.gpuCompute.getCurrentRenderTarget(this.positionSimRT)?.texture,this.system.colliderEntities.length>0&&this.renderColliders(),this.gpuCompute.compute()}renderColliders(){if(!this.velocitySimRT)return;let e=this.system.colliderEntities[0],r=this.simFeaturesDefinition.USE_COLLIDER||this.simFeaturesDefinition.USE_ATTRACTOR||this.simFeaturesDefinition.USE_VORTEX;if(e.destroyedInAction&&r&&this.init(Li({...this.system.data,colliderEntityId:null})),!e||e.destroyedInAction)return;e.getWorldPosition(this.colliderV3),this.colliderV3.y===0&&(this.colliderV3.y=1e-4),this.velocitySimRT.material.uniforms.uColliderPos.value.copy(this.colliderV3);let o=e.data.size;this.colliderV3.fromArray(o),this.velocitySimRT.material.uniforms.uColliderSize.value.copy(this.simFeaturesDefinition.USE_SPHERE_COLLIDER?this.colliderV3.multiplyScalar(.5):this.colliderV3),e.getWorldQuaternion(this.colliderQuaternion),this.velocitySimRT.material.uniforms.uColliderQuaternion.value.copy(this.colliderQuaternion.normalize()),this.velocitySimRT.material.uniforms.uColliderQuaternionInvert.value.copy(this.colliderQuaternion.normalize().invert())}updateState(e){!this.velocitySimRT||!this.positionSimRT||(e.renderMaterial&&this.updateMaterialState(e.renderMaterial),this.updateParticleState(e))}updateVariableState(e,r){if(!this.velocitySimRT||!this.positionSimRT)return;r[2]==="size"&&this.material.updateState({size:[e,this.material.uniforms.uSizeEnd.value]}),r[2]==="sizeEnd"&&this.material.updateState({size:[this.material.uniforms.uSize.value,e]});let o=(n,a)=>{let s=[...this.system.data.shape.size];s[n]=a,this.updateParticleState({shape:{...this.system.data.shape,size:s}})};r[2]==="shape_size_0"&&o(0,e),r[2]==="shape_size_1"&&o(1,e),r[2]==="shape_size_2"&&o(2,e),r[2]==="speed"&&(this.velocitySimRT.material.uniforms.uSpeed.value=e/Qh),r[2]==="gravity"&&this.worldGravity.set(0,e/100,0),r[2]==="noiseStrength"&&(this.noiseStrength=e,this.velocitySimRT.material.uniforms.uNoiseStrength.value=this.noiseStrength),r[2]==="noiseScale"&&(this.noiseScale=e,this.velocitySimRT.material.uniforms.uNoiseScale.value=this.noiseScale),r[2]==="direction_x"&&(this.directionAxis=this.getDirectionAxis([Number(e),this.system.data.direction[1],this.system.data.direction[2]])),r[2]==="direction_y"&&(this.directionAxis=this.getDirectionAxis([this.system.data.direction[0],Number(e),this.system.data.direction[2]])),r[2]==="direction_z"&&(this.directionAxis=this.getDirectionAxis([this.system.data.direction[0],this.system.data.direction[1],Number(e)]))}updateMaterialState(e){this.material.updateState({...e,size:e.size?[Number(this.shared.getVariable(e.size[0],[this.uuid,"particles","size"])),Number(this.shared.getVariable(e.size[1],[this.uuid,"particles","sizeEnd"]))]:[0,0]}),e.texture&&(this.setTexture(this.material.uniforms,e.texture),this.material.needsUpdate=!0)}updateParticleState(e){if(!(!this.positionSimRT||!this.velocitySimRT)){if(this.shouldReInitGPUCompute(e)&&this.init(Li(this.system.data)),e.life!==void 0&&(this.positionSimRT.material.uniforms.uMaxLifeTime.value=e.life),e.speed!==void 0&&(this.velocitySimRT.material.uniforms.uSpeed.value=Number(this.shared.getVariable(e.speed,[this.uuid,"particles","speed"]))/Qh),e.collisionBounce!==void 0&&(this.velocitySimRT.material.uniforms.uBounce.value=e.collisionBounce),e.noiseStrength!==void 0&&(this.noiseStrength=Number(this.shared.getVariable(e.noiseStrength,[this.uuid,"particles","noiseStrength"])),this.velocitySimRT.material.uniforms.uNoiseStrength.value=this.noiseStrength),e.noiseScale!==void 0&&(this.noiseScale=Number(this.shared.getVariable(e.noiseScale,[this.uuid,"particles","noiseScale"])),this.velocitySimRT.material.uniforms.uNoiseScale.value=this.noiseScale),e.noiseSeed!==void 0&&(this.velocitySimRT.material.uniforms.uNoiseSeed.value=e.noiseSeed),e.randomMass!==void 0&&(this.velocitySimRT.material.uniforms.uRandomMassFactor.value=e.randomMass),e.renderMaterial?.size!==void 0){let r=this.shared.getVariable(e.renderMaterial.size[0],[this.uuid,"particles","size"]);this.velocitySimRT.material.uniforms.particleSize.value=Number(r)}if(e.renderMaterial?.spriteRotation!==void 0&&(this.material.uniforms.uRotation.value=e.renderMaterial.spriteRotation[0],this.material.uniforms.uRotationEnd.value=e.renderMaterial.spriteRotation[1]),e.shape!==void 0){let r=e.shape.size??this.system.data.shape.size,o=[Number(this.shared.getVariable(r[0],[this.uuid,"particles","shape_size_0"])),Number(this.shared.getVariable(r[1],[this.uuid,"particles","shape_size_1"])),Number(this.shared.getVariable(r[2],[this.uuid,"particles","shape_size_2"]))],n={...Li(this.system.data).shape,size:o};this.emitterShape?.applyToShader(this.positionSimRT.material.uniforms,n)}if(e.gravity!==void 0&&(this.worldGravity.set(0,Number(this.shared.getVariable(this.system.data.gravity,[this.uuid,"particles","gravity"]))/100,0),this.velocitySimRT.material.uniforms.uGravity={value:this.worldGravity}),e.direction!==void 0){let r=this.getDirectionFromVariable(e.direction);this.directionAxis=this.getDirectionAxis(r),this.velocitySimRT.material.uniforms.uDirectionsAxis.value=this.directionAxis}e.randomRotation!==void 0&&(this.material.uniforms.uRandRotationFactor.value=e.randomRotation),e.randomScale!==void 0&&(this.material.uniforms.uRandScaleFactor.value=e.randomScale)}}updateForceFieldParameters(e){!this.velocitySimRT||(e.forceIntensity!==void 0&&(this.velocitySimRT.material.uniforms.uForceIntensity.value=e.forceIntensity),e.forceDambing!==void 0&&(this.velocitySimRT.material.uniforms.uForceDamping.value=e.forceDambing))}getDirectionAxis(e){let r=[Number(e[0])*Kh.DEG2RAD,Number(e[1])*Kh.DEG2RAD,Number(e[2])*Kh.DEG2RAD],o=new rR(r[0],r[1],r[2],"XYZ");return this.directionAxis.set(0,1,0).applyEuler(o).normalize(),this.velocitySimRT&&(this.velocitySimRT.material.uniforms.uDirectionsAxis.value=this.directionAxis),this.directionAxis}shouldReInitGPUCompute(e){let{birthRatePerSec:r,rootObjectType:o,colliderEntityId:n,shape:a,emitTimeDuration:s,emitTimeCycle:l,life:c,directionMode:u,noiseType:p}=e;return r!==void 0||o!==void 0||(n||n===null)||l!==void 0||a!==void 0||c!==void 0||s!==void 0||u!==void 0||p!==void 0}init(e){this.dispose(),this.particlesAmount=this.getMaxParticlesAmount({birthRatePerSecond:e.birthRatePerSec,particleMaxLifeTime:e.life,loopDuration:e.emitTimeCycle==="infinity"?0:e.emitTimeDuration}),this.particlesAmount>1e5&&(console.warn(`The maximum number of particles is limited to ${1e5}.`),this.particlesAmount=1e5),this.emitterShape=this.createShape(e.shape,this.particlesAmount);let r=setInterval(()=>{if(!!this.emitterShape)if(isNaN(this.emitterShape.positionsTexture.source.data.data[0])){this.init(e);return}else clearInterval(r)},100);if(!this.emitterShape)return;let o=new oR(this.emitterShape.textureSize,this.emitterShape.textureSize,this.renderer),n=this.updateSimulationDefinition(e),a=o.addVariable("uCurrentPosition",n+k1,this.emitterShape.positionsTexture),s=o.addVariable("uCurrentVelocity",n+X1,this.emitterShape.directionsTexture),l=o.addVariable("uCurrentEmissionRate",tS,U1(this.emitterShape.textureSize));o.setVariableDependencies(a,[a,s,l]),o.setVariableDependencies(s,[a,s,l]),o.setVariableDependencies(l,[a,s,l]);let c=j1({size:this.emitterShape.textureSize}),u={uOriginalPosition:{value:this.emitterShape.positionsTexture},uWorldOffset:{value:new Ir(0,0,0)},uWorldQuaternion:{value:new Ll(0,0,0,1)},uTime:{value:0},uFPSRatio:{value:1},uMaxLifeTime:{value:e.life},uEmitterSize:{value:new Ir(Number(this.shared.getVariable(e.shape.size[0],[this.uuid,"particles","shape_size_0"])),Number(this.shared.getVariable(e.shape.size[1],[this.uuid,"particles","shape_size_1"])),Number(this.shared.getVariable(e.shape.size[2],[this.uuid,"particles","shape_size_2"])))},particleSize:{value:0}};a.material.uniforms=u;let p=this.getDirectionFromVariable(e.direction);this.directionAxis=this.getDirectionAxis(p),this.worldGravity.set(0,Number(this.shared.getVariable(this.system.data.gravity,[this.uuid,"particles","gravity"]))/100,0),this.noiseStrength=Number(this.shared.getVariable(e.noiseStrength,[this.uuid,"particles","noiseStrength"])),this.noiseScale=Number(this.shared.getVariable(e.noiseScale,[this.uuid,"particles","noiseScale"]));let d=e.colliderEntityId&&this.system.getColliderData(e.colliderEntityId),f={uOriginalPosition:{value:this.emitterShape.positionsTexture},uDirections:{value:this.emitterShape.directionsTexture},uDirectionsAxis:{value:this.directionAxis},uWorldQuaternion:{value:new Ll(0,0,0,1)},uColliderPos:{value:new Ir(0,0,0)},uColliderSize:{value:new Ir(0,0,0)},uForceIntensity:{value:d?d.forceIntensity:0},uForceDamping:{value:d?d.forceDambing:0},uColliderQuaternion:{value:new Ll(0,0,0,1)},uColliderQuaternionInvert:{value:new Ll(0,0,0,1)},particleSize:{value:0},uGravity:{value:this.worldGravity},uNoiseStrength:{value:this.noiseStrength},uNoiseScale:{value:this.noiseScale},uNoiseSeed:{value:e.noiseSeed},uRandomMassFactor:{value:e.randomMass},uBounce:{value:e.collisionBounce},uSpeed:{value:Number(this.shared.getVariable(e.speed,[this.uuid,"particles","speed"]))/Qh}};s.material.uniforms=f;let h={uIndex:{value:c},uTime:{value:0},uLastIndexEmitted:{value:0},uParticlesToEmit:{value:0}};l.material.uniforms=h;let m=[Number(this.shared.getVariable(e.shape.size[0],[this.uuid,"particles","shape_size_0"])),Number(this.shared.getVariable(e.shape.size[1],[this.uuid,"particles","shape_size_1"])),Number(this.shared.getVariable(e.shape.size[2],[this.uuid,"particles","shape_size_2"]))],y={...Li(this.system.data).shape,size:m};this.emitterShape.applyToShader(a.material.uniforms,y),o.init(),this.gpuCompute=o,this.positionSimRT=a,this.velocitySimRT=s,this.emissionRateSimRT=l,this.rootObject=this.createPrimaryEmitter(this.emitterShape.textureSize),this.add(this.rootObject),this.material.needsUpdate=!0}getDirectionFromVariable(e){let r=Number(this.shared.getVariable(e[0],[this.uuid,"particles","direction_x"])),o=Number(this.shared.getVariable(e[1],[this.uuid,"particles","direction_y"])),n=Number(this.shared.getVariable(e[2],[this.uuid,"particles","direction_z"]));return[r,o,n]}updateSimulationDefinition(e){if(this.simFeaturesDefinition.USE_COLLIDER=!1,this.simFeaturesDefinition.USE_ATTRACTOR=!1,this.simFeaturesDefinition.USE_VORTEX=!1,this.simFeaturesDefinition.USE_SPHERE_COLLIDER=!1,this.simFeaturesDefinition.USE_BOX_COLLIDER=!1,this.simFeaturesDefinition.USE_FORCE_LOCAL_SPACE=!1,this.simFeaturesDefinition.USE_NORMALS=!1,this.simFeaturesDefinition.USE_CURL_NOISE=!1,this.simFeaturesDefinition.USE_SIMPLEX_NOISE=!1,this.simFeaturesDefinition.USE_FBM_NOISE=!1,e.colliderEntityId&&this.system.colliderEntities.length>0){let o=this.system.getColliderData(e.colliderEntityId);switch(o?.forceType){case"attractor":this.simFeaturesDefinition.USE_ATTRACTOR=!0;break;case"collider":this.simFeaturesDefinition.USE_COLLIDER=!0;break;case"vortex":this.simFeaturesDefinition.USE_VORTEX=!0;break}let n=o?.colliderType;n==="sphere"&&(this.simFeaturesDefinition.USE_SPHERE_COLLIDER=!0),n==="box"&&(this.simFeaturesDefinition.USE_BOX_COLLIDER=!0),o?.forceRange==="helper"&&(this.simFeaturesDefinition.USE_FORCE_LOCAL_SPACE=!0)}e.directionMode==="normals"&&(this.simFeaturesDefinition.USE_NORMALS=!0),e.noiseType==="curl"&&(this.simFeaturesDefinition.USE_CURL_NOISE=!0),e.noiseType==="simplex"&&(this.simFeaturesDefinition.USE_SIMPLEX_NOISE=!0),e.noiseType==="fbm"&&(this.simFeaturesDefinition.USE_FBM_NOISE=!0);let r="";for(let[o,n]of Object.entries(this.simFeaturesDefinition))n&&(r+=`#define ${o}
|
|
3547
|
-
`);return r}createShape(e,r){this.emitterShape&&this.emitterShape.dispose();let o=new
|
|
3546
|
+
`;var Zh=10,Md=class extends Z_{constructor(e,r){super();this.type="ParticleEmitter";this.debugMode=!1;this.worldSpace=!0;this.rootObject=null;this.gpuCompute=null;this.positionSimRT=null;this.velocitySimRT=null;this.emissionRateSimRT=null;this.emitterShape=void 0;this.isEmitting=!1;this.hasBeenReset=!1;this.emittedParticlesAmount=0;this.lastEmitTime=0;this.globalTime=0;this.targetFPS=60;this.previousRatio=1;this.lerpFactor=.4;this.particlesAmount=0;this.noiseStrength=0;this.noiseScale=0;this.isBillboardBased=!0;this.simFeaturesDefinition={USE_COLLIDER:!1,USE_ATTRACTOR:!1,USE_VORTEX:!1,USE_SPHERE_COLLIDER:!1,USE_BOX_COLLIDER:!1,USE_FORCE_LOCAL_SPACE:!1,USE_NORMALS:!1,USE_CURL_NOISE:!0,USE_SIMPLEX_NOISE:!1,USE_FBM_NOISE:!1};this.textureLoader=new rR;this.currentWorldPosition=new Er;this.systemQuaternion=new iS;this.worldGravity=new Er(0,0,0);this.directionAxis=new Er(0,0,0);this.colliderV3=new Er(0,0,0);this.colliderQuaternion=new iS(0,0,0,1);this.matrixAutoUpdate=!0,this.renderer=e,this.system=r,this.shared=r.context.shared;let o=r.data;this.material=new Ad(o.renderMaterial,r.context),this.material.uniforms={uSize:{value:0},uSizeEnd:{value:0},uColor:{value:o.renderMaterial.color},uColor2:{value:o.renderMaterial.color2},uPosition:{value:new Er(0,0,0)},uEmissionData:{value:new Er(0,0,0)},uTexture:{value:this.defaultTexture},uWorldOffset:{value:new Er(0,0,0)},uWorldQuaternion:{value:new Bl(0,0,0,1)},uRandScaleFactor:{value:o.randomScale??0},uRandRotationFactor:{value:o.randomRotation??0},uRotation:{value:o.renderMaterial.spriteRotation[0]??0},uRotationEnd:{value:o.renderMaterial.spriteRotation[1]??0}},this.setTexture(this.material.uniforms,o.renderMaterial.texture),this.init(o)}setTexture(e,r){let o=r.data;if(typeof r=="string"){let n=this.shared.image(r),a=new nS(n.img);a.needsUpdate=!0,e.uTexture.value=a;return}if(typeof o!="string"){let n=new Image;n.onload=()=>{let l=new nS(n);l.needsUpdate=!0,e.uTexture.value=l};let a=new Blob([o],{type:"image/*"}),s=URL.createObjectURL(a);n.src=s}}updateGeometryAttributes(e,r){let o=G1(r);!this.emitterShape?.positionsAttribute||e.geometry.setAttribute("ref",new eR(o,2))}applyWorldSpace(){if(!this.system.started||!this.worldSpace||!this.positionSimRT||!this.velocitySimRT)return;let e=this.system;e.getWorldQuaternion(this.systemQuaternion),this.systemQuaternion.invert(),e.getWorldPosition(this.currentWorldPosition),this.material.uniforms.uWorldOffset.value=this.currentWorldPosition,this.material.uniforms.uWorldQuaternion.value.copy(this.systemQuaternion.normalize()),this.positionSimRT.material.uniforms.uWorldOffset.value=this.currentWorldPosition,this.systemQuaternion.invert(),this.positionSimRT.material.uniforms.uWorldQuaternion.value.copy(this.systemQuaternion.normalize()),this.velocitySimRT.material.uniforms.uWorldQuaternion.value.copy(this.systemQuaternion.normalize())}update(e,r){if(!this.gpuCompute||!this.positionSimRT||!this.velocitySimRT||!this.emissionRateSimRT||this.hasBeenReset)return;if(this.checkIfAllParticlesAreDead()&&!this.hasBeenReset){this.reset();return}this.applyWorldSpace(),this.globalTime=e,this.positionSimRT.material.uniforms.uTime.value=e,this.emissionRateSimRT.material.uniforms.uTime.value=e;let o=1e3/r,n=this.targetFPS/o,a=this.previousRatio+(n-this.previousRatio)*this.lerpFactor;this.positionSimRT.material.uniforms.uFPSRatio.value=a,this.previousRatio=a;let s=this.isEmitting?this.GoEmitSomeParticles(e,this.system.data.birthRatePerSec):0;this.emissionRateSimRT.material.uniforms.uLastIndexEmitted.value=this.emittedParticlesAmount,this.emissionRateSimRT.material.uniforms.uParticlesToEmit.value=s,this.material.uniforms.uPosition.value=this.gpuCompute.getCurrentRenderTarget(this.positionSimRT)?.texture,this.system.colliderEntities.length>0&&this.renderColliders(),this.gpuCompute.compute()}renderColliders(){if(!this.velocitySimRT)return;let e=this.system.colliderEntities[0],r=this.simFeaturesDefinition.USE_COLLIDER||this.simFeaturesDefinition.USE_ATTRACTOR||this.simFeaturesDefinition.USE_VORTEX;if(e.destroyedInAction&&r&&this.init(Bi({...this.system.data,colliderEntityId:null})),!e||e.destroyedInAction)return;e.getWorldPosition(this.colliderV3),this.colliderV3.y===0&&(this.colliderV3.y=1e-4),this.velocitySimRT.material.uniforms.uColliderPos.value.copy(this.colliderV3);let o=e.data.size;this.colliderV3.fromArray(o),this.velocitySimRT.material.uniforms.uColliderSize.value.copy(this.simFeaturesDefinition.USE_SPHERE_COLLIDER?this.colliderV3.multiplyScalar(.5):this.colliderV3),e.getWorldQuaternion(this.colliderQuaternion),this.velocitySimRT.material.uniforms.uColliderQuaternion.value.copy(this.colliderQuaternion.normalize()),this.velocitySimRT.material.uniforms.uColliderQuaternionInvert.value.copy(this.colliderQuaternion.normalize().invert())}updateState(e){!this.velocitySimRT||!this.positionSimRT||(e.renderMaterial&&this.updateMaterialState(e.renderMaterial),this.updateParticleState(e))}updateVariableState(e,r){if(!this.velocitySimRT||!this.positionSimRT)return;r[2]==="size"&&this.material.updateState({size:[e,this.material.uniforms.uSizeEnd.value]}),r[2]==="sizeEnd"&&this.material.updateState({size:[this.material.uniforms.uSize.value,e]});let o=(n,a)=>{let s=[...this.system.data.shape.size];s[n]=a,this.updateParticleState({shape:{...this.system.data.shape,size:s}})};r[2]==="shape_size_0"&&o(0,e),r[2]==="shape_size_1"&&o(1,e),r[2]==="shape_size_2"&&o(2,e),r[2]==="speed"&&(this.velocitySimRT.material.uniforms.uSpeed.value=e/Zh),r[2]==="gravity"&&this.worldGravity.set(0,e/100,0),r[2]==="noiseStrength"&&(this.noiseStrength=e,this.velocitySimRT.material.uniforms.uNoiseStrength.value=this.noiseStrength),r[2]==="noiseScale"&&(this.noiseScale=e,this.velocitySimRT.material.uniforms.uNoiseScale.value=this.noiseScale),r[2]==="direction_x"&&(this.directionAxis=this.getDirectionAxis([Number(e),this.system.data.direction[1],this.system.data.direction[2]])),r[2]==="direction_y"&&(this.directionAxis=this.getDirectionAxis([this.system.data.direction[0],Number(e),this.system.data.direction[2]])),r[2]==="direction_z"&&(this.directionAxis=this.getDirectionAxis([this.system.data.direction[0],this.system.data.direction[1],Number(e)]))}updateMaterialState(e){this.material.updateState({...e,size:e.size?[Number(this.shared.getVariable(e.size[0],[this.uuid,"particles","size"])),Number(this.shared.getVariable(e.size[1],[this.uuid,"particles","sizeEnd"]))]:[0,0]}),e.texture&&(this.setTexture(this.material.uniforms,e.texture),this.material.needsUpdate=!0)}updateParticleState(e){if(!(!this.positionSimRT||!this.velocitySimRT)){if(this.shouldReInitGPUCompute(e)&&this.init(Bi(this.system.data)),e.life!==void 0&&(this.positionSimRT.material.uniforms.uMaxLifeTime.value=e.life),e.speed!==void 0&&(this.velocitySimRT.material.uniforms.uSpeed.value=Number(this.shared.getVariable(e.speed,[this.uuid,"particles","speed"]))/Zh),e.collisionBounce!==void 0&&(this.velocitySimRT.material.uniforms.uBounce.value=e.collisionBounce),e.noiseStrength!==void 0&&(this.noiseStrength=Number(this.shared.getVariable(e.noiseStrength,[this.uuid,"particles","noiseStrength"])),this.velocitySimRT.material.uniforms.uNoiseStrength.value=this.noiseStrength),e.noiseScale!==void 0&&(this.noiseScale=Number(this.shared.getVariable(e.noiseScale,[this.uuid,"particles","noiseScale"])),this.velocitySimRT.material.uniforms.uNoiseScale.value=this.noiseScale),e.noiseSeed!==void 0&&(this.velocitySimRT.material.uniforms.uNoiseSeed.value=e.noiseSeed),e.randomMass!==void 0&&(this.velocitySimRT.material.uniforms.uRandomMassFactor.value=e.randomMass),e.renderMaterial?.size!==void 0){let r=this.shared.getVariable(e.renderMaterial.size[0],[this.uuid,"particles","size"]);this.velocitySimRT.material.uniforms.particleSize.value=Number(r)}if(e.renderMaterial?.spriteRotation!==void 0&&(this.material.uniforms.uRotation.value=e.renderMaterial.spriteRotation[0],this.material.uniforms.uRotationEnd.value=e.renderMaterial.spriteRotation[1]),e.shape!==void 0){let r=e.shape.size??this.system.data.shape.size,o=[Number(this.shared.getVariable(r[0],[this.uuid,"particles","shape_size_0"])),Number(this.shared.getVariable(r[1],[this.uuid,"particles","shape_size_1"])),Number(this.shared.getVariable(r[2],[this.uuid,"particles","shape_size_2"]))],n={...Bi(this.system.data).shape,size:o};this.emitterShape?.applyToShader(this.positionSimRT.material.uniforms,n)}if(e.gravity!==void 0&&(this.worldGravity.set(0,Number(this.shared.getVariable(this.system.data.gravity,[this.uuid,"particles","gravity"]))/100,0),this.velocitySimRT.material.uniforms.uGravity={value:this.worldGravity}),e.direction!==void 0){let r=this.getDirectionFromVariable(e.direction);this.directionAxis=this.getDirectionAxis(r),this.velocitySimRT.material.uniforms.uDirectionsAxis.value=this.directionAxis}e.randomRotation!==void 0&&(this.material.uniforms.uRandRotationFactor.value=e.randomRotation),e.randomScale!==void 0&&(this.material.uniforms.uRandScaleFactor.value=e.randomScale)}}updateForceFieldParameters(e){!this.velocitySimRT||(e.forceIntensity!==void 0&&(this.velocitySimRT.material.uniforms.uForceIntensity.value=e.forceIntensity),e.forceDambing!==void 0&&(this.velocitySimRT.material.uniforms.uForceDamping.value=e.forceDambing))}getDirectionAxis(e){let r=[Number(e[0])*Qh.DEG2RAD,Number(e[1])*Qh.DEG2RAD,Number(e[2])*Qh.DEG2RAD],o=new oR(r[0],r[1],r[2],"XYZ");return this.directionAxis.set(0,1,0).applyEuler(o).normalize(),this.velocitySimRT&&(this.velocitySimRT.material.uniforms.uDirectionsAxis.value=this.directionAxis),this.directionAxis}shouldReInitGPUCompute(e){let{birthRatePerSec:r,rootObjectType:o,colliderEntityId:n,shape:a,emitTimeDuration:s,emitTimeCycle:l,life:c,directionMode:u,noiseType:d}=e;return r!==void 0||o!==void 0||(n||n===null)||l!==void 0||a!==void 0||c!==void 0||s!==void 0||u!==void 0||d!==void 0}init(e){this.dispose(),this.particlesAmount=this.getMaxParticlesAmount({birthRatePerSecond:e.birthRatePerSec,particleMaxLifeTime:e.life,loopDuration:e.emitTimeCycle==="infinity"?0:e.emitTimeDuration}),this.particlesAmount>1e5&&(console.warn(`The maximum number of particles is limited to ${1e5}.`),this.particlesAmount=1e5),this.emitterShape=this.createShape(e.shape,this.particlesAmount);let r=setInterval(()=>{if(!!this.emitterShape)if(isNaN(this.emitterShape.positionsTexture.source.data.data[0])){this.init(e);return}else clearInterval(r)},100);if(!this.emitterShape)return;let o=new iR(this.emitterShape.textureSize,this.emitterShape.textureSize,this.renderer),n=this.updateSimulationDefinition(e),a=o.addVariable("uCurrentPosition",n+H1,this.emitterShape.positionsTexture),s=o.addVariable("uCurrentVelocity",n+Y1,this.emitterShape.directionsTexture),l=o.addVariable("uCurrentEmissionRate",rS,k1(this.emitterShape.textureSize));o.setVariableDependencies(a,[a,s,l]),o.setVariableDependencies(s,[a,s,l]),o.setVariableDependencies(l,[a,s,l]);let c=U1({size:this.emitterShape.textureSize}),u={uOriginalPosition:{value:this.emitterShape.positionsTexture},uWorldOffset:{value:new Er(0,0,0)},uWorldQuaternion:{value:new Bl(0,0,0,1)},uTime:{value:0},uFPSRatio:{value:1},uMaxLifeTime:{value:e.life},uEmitterSize:{value:new Er(Number(this.shared.getVariable(e.shape.size[0],[this.uuid,"particles","shape_size_0"])),Number(this.shared.getVariable(e.shape.size[1],[this.uuid,"particles","shape_size_1"])),Number(this.shared.getVariable(e.shape.size[2],[this.uuid,"particles","shape_size_2"])))},particleSize:{value:0}};a.material.uniforms=u;let d=this.getDirectionFromVariable(e.direction);this.directionAxis=this.getDirectionAxis(d),this.worldGravity.set(0,Number(this.shared.getVariable(this.system.data.gravity,[this.uuid,"particles","gravity"]))/100,0),this.noiseStrength=Number(this.shared.getVariable(e.noiseStrength,[this.uuid,"particles","noiseStrength"])),this.noiseScale=Number(this.shared.getVariable(e.noiseScale,[this.uuid,"particles","noiseScale"]));let p=e.colliderEntityId&&this.system.getColliderData(e.colliderEntityId),f={uOriginalPosition:{value:this.emitterShape.positionsTexture},uDirections:{value:this.emitterShape.directionsTexture},uDirectionsAxis:{value:this.directionAxis},uWorldQuaternion:{value:new Bl(0,0,0,1)},uColliderPos:{value:new Er(0,0,0)},uColliderSize:{value:new Er(0,0,0)},uForceIntensity:{value:p?p.forceIntensity:0},uForceDamping:{value:p?p.forceDambing:0},uColliderQuaternion:{value:new Bl(0,0,0,1)},uColliderQuaternionInvert:{value:new Bl(0,0,0,1)},particleSize:{value:0},uGravity:{value:this.worldGravity},uNoiseStrength:{value:this.noiseStrength},uNoiseScale:{value:this.noiseScale},uNoiseSeed:{value:e.noiseSeed},uRandomMassFactor:{value:e.randomMass},uBounce:{value:e.collisionBounce},uSpeed:{value:Number(this.shared.getVariable(e.speed,[this.uuid,"particles","speed"]))/Zh}};s.material.uniforms=f;let h={uIndex:{value:c},uTime:{value:0},uLastIndexEmitted:{value:0},uParticlesToEmit:{value:0}};l.material.uniforms=h;let m=[Number(this.shared.getVariable(e.shape.size[0],[this.uuid,"particles","shape_size_0"])),Number(this.shared.getVariable(e.shape.size[1],[this.uuid,"particles","shape_size_1"])),Number(this.shared.getVariable(e.shape.size[2],[this.uuid,"particles","shape_size_2"]))],y={...Bi(this.system.data).shape,size:m};this.emitterShape.applyToShader(a.material.uniforms,y),o.init(),this.gpuCompute=o,this.positionSimRT=a,this.velocitySimRT=s,this.emissionRateSimRT=l,this.rootObject=this.createPrimaryEmitter(this.emitterShape.textureSize),this.add(this.rootObject),this.material.needsUpdate=!0}getDirectionFromVariable(e){let r=Number(this.shared.getVariable(e[0],[this.uuid,"particles","direction_x"])),o=Number(this.shared.getVariable(e[1],[this.uuid,"particles","direction_y"])),n=Number(this.shared.getVariable(e[2],[this.uuid,"particles","direction_z"]));return[r,o,n]}updateSimulationDefinition(e){if(this.simFeaturesDefinition.USE_COLLIDER=!1,this.simFeaturesDefinition.USE_ATTRACTOR=!1,this.simFeaturesDefinition.USE_VORTEX=!1,this.simFeaturesDefinition.USE_SPHERE_COLLIDER=!1,this.simFeaturesDefinition.USE_BOX_COLLIDER=!1,this.simFeaturesDefinition.USE_FORCE_LOCAL_SPACE=!1,this.simFeaturesDefinition.USE_NORMALS=!1,this.simFeaturesDefinition.USE_CURL_NOISE=!1,this.simFeaturesDefinition.USE_SIMPLEX_NOISE=!1,this.simFeaturesDefinition.USE_FBM_NOISE=!1,e.colliderEntityId&&this.system.colliderEntities.length>0){let o=this.system.getColliderData(e.colliderEntityId);switch(o?.forceType){case"attractor":this.simFeaturesDefinition.USE_ATTRACTOR=!0;break;case"collider":this.simFeaturesDefinition.USE_COLLIDER=!0;break;case"vortex":this.simFeaturesDefinition.USE_VORTEX=!0;break}let n=o?.colliderType;n==="sphere"&&(this.simFeaturesDefinition.USE_SPHERE_COLLIDER=!0),n==="box"&&(this.simFeaturesDefinition.USE_BOX_COLLIDER=!0),o?.forceRange==="helper"&&(this.simFeaturesDefinition.USE_FORCE_LOCAL_SPACE=!0)}e.directionMode==="normals"&&(this.simFeaturesDefinition.USE_NORMALS=!0),e.noiseType==="curl"&&(this.simFeaturesDefinition.USE_CURL_NOISE=!0),e.noiseType==="simplex"&&(this.simFeaturesDefinition.USE_SIMPLEX_NOISE=!0),e.noiseType==="fbm"&&(this.simFeaturesDefinition.USE_FBM_NOISE=!0);let r="";for(let[o,n]of Object.entries(this.simFeaturesDefinition))n&&(r+=`#define ${o}
|
|
3547
|
+
`);return r}createShape(e,r){this.emitterShape&&this.emitterShape.dispose();let o=new Er(Number(this.shared.getVariable(e.size[0],[this.uuid,"particles","shape_size_0"])),Number(this.shared.getVariable(e.size[1],[this.uuid,"particles","shape_size_1"])),Number(this.shared.getVariable(e.size[2],[this.uuid,"particles","shape_size_2"])));if(e.type==="MeshEmitterShape"){let n=null;return this.system.context.scene.traverseEntity(a=>{a.uuid===e.fromMeshId&&(n=a)}),n?new Ss(o,r,e.type,n):new Ss(o,r,"SphereEmitterShape")}else return new Ss(o,r,e.type)}createPrimaryEmitter(e){let r,o=e*e;return r=new J_(new tR(1,1,1),this.material,o),this.updateGeometryAttributes(r,e),this.material.needsUpdate=!0,r.onBeforeRender=()=>{this.applyWorldSpace()},r}getMaxParticlesAmount({birthRatePerSecond:e,particleMaxLifeTime:r,loopDuration:o=0}){return Math.ceil(e*(r+o))}dispose(){!this.gpuCompute||(this.rootObject?.parent?.remove(this.rootObject),this.gpuCompute.dispose(),this.material.nodeMaterialDispose(),this.emitterShape?.dispose())}GoEmitSomeParticles(e,r){let o=e-this.lastEmitTime,n=1/r;if(o>=n){let a=Math.max(1,Math.floor(o/n));return this.lastEmitTime=e,this.emittedParticlesAmount+a>this.particlesAmount&&(this.emittedParticlesAmount=0),this.emittedParticlesAmount+=a,a}return 0}checkIfAllParticlesAreDead(){return this.lastEmitTime+this.system.data.life+1<this.globalTime}reset(){this.hasBeenReset=!0,this.lastEmitTime=0,this.emittedParticlesAmount=0,this.gpuCompute&&this.init(Bi(this.system.data))}startEmitting(e){this.isEmitting=!0,this.hasBeenReset=!1,this.lastEmitTime=e}stopEmitting(){this.isEmitting=!1}};import{BufferGeometry as nR,Float32BufferAttribute as aR,MeshBasicMaterial as sR}from"three";var ws=class extends Mt{constructor(e,r,o){super(e,r);this.type="ParticleSystem";this.geometry=new nR;this.actualTime=0;this.currentLoopTime=0;this.started=!1;this.stopped=!1;this.timeoutId=void 0;this.isFrozen=!1;this.isIdle=!0;this.emitter=null;this.colliderEntities=[];this.renderer=null;this.isPreWarm=!1;this._hasOnAfterRenderBeenCalled=!1;this.onAfterRender=e=>{this._hasOnAfterRenderBeenCalled||(this._hasOnAfterRenderBeenCalled=!0,this.init(e))};this.context=o,this.data={...r,...Bi(r)},this.geometry.setAttribute("position",new aR([],3)),this.material=new sR({colorWrite:!1}),this.frustumCulled=!1}init(e){this.renderer=e,this.emitter=new Md(e,this),this.add(this.emitter),this.updateParticleState(this.data)}update(e){if(!this.isReady||!this.started||this.isFrozen||this.isIdle)return;this.actualTime+=e,this.stopped||(this.currentLoopTime+=e);let r=this.data.emitTimeCycle==="one_time";if((this.data.emitTimeCycle==="loop"||r)&&this.currentLoopTime>this.data.emitTimeDuration*1e3&&(this.stopped||(this.stop(),r||this.start(this.data.emitTimeDelay*1e3))),this.emitter&&this.started){let n=this.actualTime/1e3;this.emitter.update(n,e)}this.scale.set(1,1,1),this.updateMatrix()}isReady(){return!!this.emitter}hasCollider(e){return this.colliderEntities.some(r=>r.identity===e)}getColliderData(e){let r=this.colliderEntities.find(o=>o.identity===e);return r?r.data:null}updateByPatchedOp(e,r,o){super.updateByPatchedOp(e,r,o),Le(e.path,["renderMaterial"])&&this.updateParticleState({renderMaterial:{...this.data.renderMaterial,...nt.drop(e,1).props}}),Le(e.path,["shape"])&&this.updateParticleState({shape:{...this.data.shape,...nt.drop(e,1).props}})}updateState(e,r){super.updateState(e,r),this.updateParticleState(e)}updateParticleState(e){if(!!this.emitter){if(e.colliderEntityId!==void 0&&e.colliderEntityId!==null){let r=this.context.scene.find(e.colliderEntityId);this.colliderEntities=r?[r]:[]}e.colliderEntityId===null&&(this.colliderEntities=[]),this.emitter.updateState(e),e.emitTimeCycle&&this.started&&this.start()}}updateFromColliderEntity(e){!this.emitter||(this.emitter.updateForceFieldParameters(e),this.stop(),this.start())}start(e=0){if(this.currentLoopTime=0,e){this.timeoutId=window.setTimeout(()=>{this.start(0)},e);return}this.started=!0,this.stopped=!1,this.isFrozen=!1,this.emitter?.startEmitting(this.actualTime/1e3)}froze(){this.isFrozen=!0}unFroze(){this.isFrozen=!1}stop(){this.stopped=!0,this.currentLoopTime=0,this.emitter?.stopEmitting(),clearTimeout(this.timeoutId)}reset(){this.started=!1,this.stopped=!1,this.emitter?.reset()}wakeUp(){this.isIdle=!1}sleep(){this.isIdle=!0,this.reset()}};function lR(){try{let i=window.location.href;if(i.includes("reducesubdiv=")){let t=i.indexOf("reducesubdiv=")+13;return parseInt(i.slice(t,t+1))}}catch{}}var Jh=lR();function cR(i,t,e){Jh!==void 0&&(t?.geometry?.subdivisions??0)>Jh&&(console.log("reducing subdivisions",t.name,t.geometry.subdivisions),t.geometry.subdivisions=Jh);let r;return t.geometry.type==="TextGeometry"?new Mi(i,t,e):t.geometry.type==="InputGeometry"?new Od(i,t,e):(t.geometry.type==="SubdivGeometry"?r=new xn(i,t,e):t.geometry.type==="PathGeometry"?r=new vs(i,t,e):t.geometry.type==="VectorGeometry"?r=new Pd(i,t,e):t.geometry.type==="BooleanGeometry"?r=new ar(i,t,e):t.geometry.type==="ShapeBlendGeometry"?r=new Vi(i,t,e):t.geometry.type==="UIGeometry"?r=new On(i,t,e):r=new et(i,t,e),r)}function Id(i,t,e){return console.assert(t.type!==void 0),t.type==="Mesh"?cR(i,t,e):t.type==="Empty"?new Di(i,t):t.type==="Particle"?new ws(i,t,e):t.type==="ParticleCollider"?new fs(i,t,e):t.type==="Splat"?new Di(i,t):t.type==="Bone"?new Cd(i,t):t.type==="Page"?new Ir(i,t,e):t.type==="PointLight"?new wd(i,t,e):t.type==="SpotLight"?new gs(i,t,e):t.type==="DirectionalLight"?new ys(i,t,e):t.type==="Component"||t.type==="Instance"?new Zo(i,t,e):_r.is(t.type)?new Yo(i,t):(console.error(t),new Di(i,t))}Vr.createEntity=Id;function uR(i,t,e){let r=Id(i.identity,t,e),o=i.children,n=i.attachedPaths,a=i.parent,s=i.component,l=i.instances,c=i.overrideData,u=i.uuid,d=i.stateSelection;i.dispose();for(let p of Object.keys(i))delete i[p];Object.setPrototypeOf(i,Object.getPrototypeOf(r));for(let p of Object.keys(r))i[p]=r[p];i.children=[...i.children,...o],i.attachedPaths=n,i.parent=a,i.component=s,i.instances=l,i.uuid=u,i.overrideData=c,i.updateState(i.data,e),d&&i.changeSelectedState(d,e),i.resetBBoxNeedsUpdate()}Vr.changeEntityProptotype=uR;Vr.Cloner=Ei;function aS(i,t,e,r){i.updateByOp(t,e,r,!1)}import{BufferAttribute as lS,BufferGeometry as cS,DataTexture as im,FloatType as ei,Matrix4 as dS,Mesh as em,NearestFilter as Po,PlaneGeometry as vR,Quaternion as pS,RedFormat as tm,RGBAFormat as Ts,Scene as rm,ShaderMaterial as uS,Vector2 as om,Vector3 as _d,WebGLMultipleRenderTargets as SR,WebGLRenderTarget as Nd}from"three";import{Box2 as dR,BufferAttribute as pR,BufferGeometry as fR,Camera as hR,GLSL3 as mR,Mesh as yR,RawShaderMaterial as gR,Scene as xR,Vector4 as bR}from"three";var zi=5,Ps=new fR;Ps.setAttribute("position",new pR(new Float32Array([-1,-1,0,3,-1,0,-1,3,0]),3));var Tn=class extends gR{constructor(t){super({...t,depthTest:!1,depthWrite:!1,glslVersion:mR,vertexShader:`
|
|
3548
3548
|
precision highp float;
|
|
3549
3549
|
in vec3 position;
|
|
3550
3550
|
void main() {
|
|
3551
3551
|
gl_Position = vec4(position, 1);
|
|
3552
3552
|
}
|
|
3553
|
-
`})}customProgramCacheKey(){return""}};function
|
|
3554
|
-
const float posRowCoord = ${.5/
|
|
3555
|
-
const float quatRowCoord = ${1.5/
|
|
3556
|
-
const float param1RowCoord = ${2.5/
|
|
3557
|
-
const float param2RowCoord = ${3.5/
|
|
3558
|
-
const float colorRowCoord = ${4.5/
|
|
3553
|
+
`})}customProgramCacheKey(){return""}};function sS(){return{shapeInput:()=>`
|
|
3554
|
+
const float posRowCoord = ${.5/zi}; // vec4: px py pz opType
|
|
3555
|
+
const float quatRowCoord = ${1.5/zi}; // vec4: qx qy qz qw
|
|
3556
|
+
const float param1RowCoord = ${2.5/zi};// vec4: type param1 param2 param3
|
|
3557
|
+
const float param2RowCoord = ${3.5/zi};// vec4: blendRange roundness scale param4
|
|
3558
|
+
const float colorRowCoord = ${4.5/zi}; // vec4: r g b a
|
|
3559
3559
|
uniform sampler2D shapesDataTexture;
|
|
3560
3560
|
vec4 shapePos(float iin) {
|
|
3561
3561
|
vec4 r = texture(shapesDataTexture, vec2(iin, posRowCoord));
|
|
@@ -3603,7 +3603,7 @@ void main() {
|
|
|
3603
3603
|
a = t;
|
|
3604
3604
|
return r;
|
|
3605
3605
|
}
|
|
3606
|
-
`,triTable:new Float32Array([-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,8,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,9,1,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,8,1,1,8,9,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,10,2,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,8,0,10,2,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,10,2,9,9,2,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,8,2,8,10,2,8,9,10,-1,-1,-1,-1,-1,-1,-1,2,11,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2,11,0,0,11,8,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,9,1,11,3,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2,11,1,11,9,1,11,8,9,-1,-1,-1,-1,-1,-1,-1,1,10,3,3,10,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,10,0,10,8,0,10,11,8,-1,-1,-1,-1,-1,-1,-1,0,9,3,9,11,3,9,10,11,-1,-1,-1,-1,-1,-1,-1,10,8,9,11,8,10,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,7,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,3,4,4,3,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,9,1,0,7,4,8,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,9,1,4,1,7,4,1,3,7,-1,-1,-1,-1,-1,-1,-1,10,2,1,7,4,8,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7,4,3,4,0,3,10,2,1,-1,-1,-1,-1,-1,-1,-1,10,2,9,2,0,9,7,4,8,-1,-1,-1,-1,-1,-1,-1,9,10,2,7,9,2,3,7,2,4,9,7,-1,-1,-1,-1,7,4,8,2,11,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7,4,11,4,2,11,4,0,2,-1,-1,-1,-1,-1,-1,-1,1,0,9,7,4,8,11,3,2,-1,-1,-1,-1,-1,-1,-1,11,7,4,11,4,9,2,11,9,1,2,9,-1,-1,-1,-1,1,10,3,10,11,3,4,8,7,-1,-1,-1,-1,-1,-1,-1,10,11,1,11,4,1,4,0,1,4,11,7,-1,-1,-1,-1,8,7,4,11,0,9,10,11,9,3,0,11,-1,-1,-1,-1,11,7,4,9,11,4,10,11,9,-1,-1,-1,-1,-1,-1,-1,4,5,9,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,5,9,3,8,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,5,0,0,5,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,5,8,5,3,8,5,1,3,-1,-1,-1,-1,-1,-1,-1,10,2,1,4,5,9,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,0,3,10,2,1,5,9,4,-1,-1,-1,-1,-1,-1,-1,10,2,5,2,4,5,2,0,4,-1,-1,-1,-1,-1,-1,-1,5,10,2,5,2,3,4,5,3,8,4,3,-1,-1,-1,-1,4,5,9,11,3,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2,11,0,11,8,0,5,9,4,-1,-1,-1,-1,-1,-1,-1,4,5,0,5,1,0,11,3,2,-1,-1,-1,-1,-1,-1,-1,5,1,2,8,5,2,11,8,2,5,8,4,-1,-1,-1,-1,11,3,10,3,1,10,4,5,9,-1,-1,-1,-1,-1,-1,-1,5,9,4,1,8,0,1,10,8,10,11,8,-1,-1,-1,-1,0,4,5,11,0,5,10,11,5,3,0,11,-1,-1,-1,-1,8,4,5,10,8,5,11,8,10,-1,-1,-1,-1,-1,-1,-1,8,7,9,9,7,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,3,9,3,5,9,3,7,5,-1,-1,-1,-1,-1,-1,-1,8,7,0,7,1,0,7,5,1,-1,-1,-1,-1,-1,-1,-1,3,5,1,7,5,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,7,9,7,5,9,2,1,10,-1,-1,-1,-1,-1,-1,-1,2,1,10,0,5,9,0,3,5,3,7,5,-1,-1,-1,-1,2,0,8,5,2,8,7,5,8,2,5,10,-1,-1,-1,-1,5,10,2,3,5,2,7,5,3,-1,-1,-1,-1,-1,-1,-1,5,9,7,9,8,7,2,11,3,-1,-1,-1,-1,-1,-1,-1,7,5,9,2,7,9,0,2,9,11,7,2,-1,-1,-1,-1,11,3,2,8,1,0,8,7,1,7,5,1,-1,-1,-1,-1,1,2,11,7,1,11,5,1,7,-1,-1,-1,-1,-1,-1,-1,8,5,9,7,5,8,3,1,10,11,3,10,-1,-1,-1,-1,0,7,5,9,0,5,0,11,7,10,0,1,0,10,11,-1,0,10,11,3,0,11,0,5,10,7,0,8,0,7,5,-1,5,10,11,5,11,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5,6,10,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,8,0,6,10,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,0,9,6,10,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,8,1,8,9,1,6,10,5,-1,-1,-1,-1,-1,-1,-1,5,6,1,1,6,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5,6,1,6,2,1,8,0,3,-1,-1,-1,-1,-1,-1,-1,5,6,9,6,0,9,6,2,0,-1,-1,-1,-1,-1,-1,-1,8,9,5,2,8,5,6,2,5,8,2,3,-1,-1,-1,-1,11,3,2,5,6,10,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,0,11,0,2,11,5,6,10,-1,-1,-1,-1,-1,-1,-1,9,1,0,11,3,2,6,10,5,-1,-1,-1,-1,-1,-1,-1,6,10,5,2,9,1,2,11,9,11,8,9,-1,-1,-1,-1,11,3,6,3,5,6,3,1,5,-1,-1,-1,-1,-1,-1,-1,11,8,0,5,11,0,1,5,0,6,11,5,-1,-1,-1,-1,6,11,3,6,3,0,5,6,0,9,5,0,-1,-1,-1,-1,9,5,6,11,9,6,8,9,11,-1,-1,-1,-1,-1,-1,-1,6,10,5,8,7,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,3,4,3,7,4,10,5,6,-1,-1,-1,-1,-1,-1,-1,0,9,1,6,10,5,7,4,8,-1,-1,-1,-1,-1,-1,-1,5,6,10,7,9,1,3,7,1,4,9,7,-1,-1,-1,-1,2,1,6,1,5,6,8,7,4,-1,-1,-1,-1,-1,-1,-1,5,2,1,6,2,5,4,0,3,7,4,3,-1,-1,-1,-1,7,4,8,5,0,9,5,6,0,6,2,0,-1,-1,-1,-1,9,3,7,4,9,7,9,2,3,6,9,5,9,6,2,-1,2,11,3,4,8,7,5,6,10,-1,-1,-1,-1,-1,-1,-1,6,10,5,2,7,4,0,2,4,11,7,2,-1,-1,-1,-1,9,1,0,8,7,4,11,3,2,6,10,5,-1,-1,-1,-1,1,2,9,2,11,9,11,4,9,4,11,7,6,10,5,-1,7,4,8,5,11,3,1,5,3,6,11,5,-1,-1,-1,-1,11,1,5,6,11,5,11,0,1,4,11,7,11,4,0,-1,9,5,0,5,6,0,6,3,0,3,6,11,7,4,8,-1,9,5,6,11,9,6,9,7,4,9,11,7,-1,-1,-1,-1,9,4,10,10,4,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6,10,4,10,9,4,3,8,0,-1,-1,-1,-1,-1,-1,-1,1,0,10,0,6,10,0,4,6,-1,-1,-1,-1,-1,-1,-1,1,3,8,6,1,8,4,6,8,10,1,6,-1,-1,-1,-1,9,4,1,4,2,1,4,6,2,-1,-1,-1,-1,-1,-1,-1,8,0,3,9,2,1,9,4,2,4,6,2,-1,-1,-1,-1,4,2,0,6,2,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2,3,8,4,2,8,6,2,4,-1,-1,-1,-1,-1,-1,-1,9,4,10,4,6,10,3,2,11,-1,-1,-1,-1,-1,-1,-1,2,8,0,11,8,2,10,9,4,6,10,4,-1,-1,-1,-1,2,11,3,6,1,0,4,6,0,10,1,6,-1,-1,-1,-1,1,4,6,10,1,6,1,8,4,11,1,2,1,11,8,-1,4,6,9,6,3,9,3,1,9,3,6,11,-1,-1,-1,-1,1,11,8,0,1,8,1,6,11,4,1,9,1,4,6,-1,6,11,3,0,6,3,4,6,0,-1,-1,-1,-1,-1,-1,-1,8,4,6,8,6,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6,10,7,10,8,7,10,9,8,-1,-1,-1,-1,-1,-1,-1,3,7,0,7,10,0,10,9,0,10,7,6,-1,-1,-1,-1,7,6,10,7,10,1,8,7,1,0,8,1,-1,-1,-1,-1,7,6,10,1,7,10,3,7,1,-1,-1,-1,-1,-1,-1,-1,6,2,1,8,6,1,9,8,1,7,6,8,-1,-1,-1,-1,9,6,2,1,9,2,9,7,6,3,9,0,9,3,7,-1,0,8,7,6,0,7,2,0,6,-1,-1,-1,-1,-1,-1,-1,2,3,7,2,7,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,11,3,2,8,6,10,9,8,10,7,6,8,-1,-1,-1,-1,7,0,2,11,7,2,7,9,0,10,7,6,7,10,9,-1,0,8,1,8,7,1,7,10,1,10,7,6,11,3,2,-1,1,2,11,7,1,11,1,6,10,1,7,6,-1,-1,-1,-1,6,9,8,7,6,8,6,1,9,3,6,11,6,3,1,-1,1,9,0,7,6,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,8,7,6,0,7,0,11,3,0,6,11,-1,-1,-1,-1,6,11,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,11,6,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,0,3,6,7,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,9,1,0,6,7,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,9,1,8,1,3,8,6,7,11,-1,-1,-1,-1,-1,-1,-1,2,1,10,7,11,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,10,2,1,8,0,3,7,11,6,-1,-1,-1,-1,-1,-1,-1,0,9,2,9,10,2,7,11,6,-1,-1,-1,-1,-1,-1,-1,7,11,6,3,10,2,3,8,10,8,9,10,-1,-1,-1,-1,3,2,7,7,2,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,0,7,0,6,7,0,2,6,-1,-1,-1,-1,-1,-1,-1,6,7,2,7,3,2,9,1,0,-1,-1,-1,-1,-1,-1,-1,2,6,1,6,8,1,8,9,1,6,7,8,-1,-1,-1,-1,6,7,10,7,1,10,7,3,1,-1,-1,-1,-1,-1,-1,-1,6,7,10,10,7,1,7,8,1,8,0,1,-1,-1,-1,-1,7,3,0,10,7,0,9,10,0,7,10,6,-1,-1,-1,-1,10,6,7,8,10,7,9,10,8,-1,-1,-1,-1,-1,-1,-1,4,8,6,6,8,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,11,6,3,6,0,3,6,4,0,-1,-1,-1,-1,-1,-1,-1,11,6,8,6,4,8,1,0,9,-1,-1,-1,-1,-1,-1,-1,6,4,9,3,6,9,1,3,9,6,3,11,-1,-1,-1,-1,4,8,6,8,11,6,1,10,2,-1,-1,-1,-1,-1,-1,-1,10,2,1,11,0,3,11,6,0,6,4,0,-1,-1,-1,-1,8,11,4,11,6,4,9,2,0,9,10,2,-1,-1,-1,-1,3,9,10,2,3,10,3,4,9,6,3,11,3,6,4,-1,3,2,8,2,4,8,2,6,4,-1,-1,-1,-1,-1,-1,-1,2,4,0,2,6,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,9,1,4,3,2,6,4,2,8,3,4,-1,-1,-1,-1,4,9,1,2,4,1,6,4,2,-1,-1,-1,-1,-1,-1,-1,3,1,8,1,6,8,6,4,8,1,10,6,-1,-1,-1,-1,0,1,10,6,0,10,4,0,6,-1,-1,-1,-1,-1,-1,-1,3,6,4,8,3,4,3,10,6,9,3,0,3,9,10,-1,4,9,10,4,10,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5,9,4,11,6,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,8,0,5,9,4,6,7,11,-1,-1,-1,-1,-1,-1,-1,1,0,5,0,4,5,11,6,7,-1,-1,-1,-1,-1,-1,-1,6,7,11,4,3,8,4,5,3,5,1,3,-1,-1,-1,-1,4,5,9,2,1,10,11,6,7,-1,-1,-1,-1,-1,-1,-1,7,11,6,10,2,1,3,8,0,5,9,4,-1,-1,-1,-1,11,6,7,10,4,5,10,2,4,2,0,4,-1,-1,-1,-1,8,4,3,4,5,3,5,2,3,2,5,10,6,7,11,-1,3,2,7,2,6,7,9,4,5,-1,-1,-1,-1,-1,-1,-1,4,5,9,6,8,0,2,6,0,7,8,6,-1,-1,-1,-1,2,6,3,6,7,3,0,5,1,0,4,5,-1,-1,-1,-1,8,2,6,7,8,6,8,1,2,5,8,4,8,5,1,-1,4,5,9,6,1,10,6,7,1,7,3,1,-1,-1,-1,-1,10,6,1,6,7,1,7,0,1,0,7,8,4,5,9,-1,10,0,4,5,10,4,10,3,0,7,10,6,10,7,3,-1,10,6,7,8,10,7,10,4,5,10,8,4,-1,-1,-1,-1,5,9,6,9,11,6,9,8,11,-1,-1,-1,-1,-1,-1,-1,11,6,3,3,6,0,6,5,0,5,9,0,-1,-1,-1,-1,8,11,0,11,5,0,5,1,0,11,6,5,-1,-1,-1,-1,3,11,6,5,3,6,1,3,5,-1,-1,-1,-1,-1,-1,-1,10,2,1,11,5,9,8,11,9,6,5,11,-1,-1,-1,-1,3,11,0,11,6,0,6,9,0,9,6,5,10,2,1,-1,5,8,11,6,5,11,5,0,8,2,5,10,5,2,0,-1,3,11,6,5,3,6,3,10,2,3,5,10,-1,-1,-1,-1,9,8,5,8,2,5,2,6,5,2,8,3,-1,-1,-1,-1,6,5,9,0,6,9,2,6,0,-1,-1,-1,-1,-1,-1,-1,8,5,1,0,8,1,8,6,5,2,8,3,8,2,6,-1,6,5,1,6,1,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6,3,1,10,6,1,6,8,3,9,6,5,6,9,8,-1,0,1,10,6,0,10,0,5,9,0,6,5,-1,-1,-1,-1,8,3,0,10,6,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6,5,10,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,10,5,11,11,5,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,10,5,11,5,7,11,0,3,8,-1,-1,-1,-1,-1,-1,-1,7,11,5,11,10,5,0,9,1,-1,-1,-1,-1,-1,-1,-1,5,7,10,7,11,10,1,8,9,1,3,8,-1,-1,-1,-1,2,1,11,1,7,11,1,5,7,-1,-1,-1,-1,-1,-1,-1,3,8,0,7,2,1,5,7,1,11,2,7,-1,-1,-1,-1,5,7,9,7,2,9,2,0,9,7,11,2,-1,-1,-1,-1,2,5,7,11,2,7,2,9,5,8,2,3,2,8,9,-1,10,5,2,5,3,2,5,7,3,-1,-1,-1,-1,-1,-1,-1,0,2,8,2,5,8,5,7,8,5,2,10,-1,-1,-1,-1,1,0,9,3,10,5,7,3,5,2,10,3,-1,-1,-1,-1,2,8,9,1,2,9,2,7,8,5,2,10,2,5,7,-1,5,3,1,5,7,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7,8,0,1,7,0,5,7,1,-1,-1,-1,-1,-1,-1,-1,3,0,9,5,3,9,7,3,5,-1,-1,-1,-1,-1,-1,-1,7,8,9,7,9,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,8,5,8,10,5,8,11,10,-1,-1,-1,-1,-1,-1,-1,4,0,5,0,11,5,11,10,5,0,3,11,-1,-1,-1,-1,9,1,0,10,4,8,11,10,8,5,4,10,-1,-1,-1,-1,4,11,10,5,4,10,4,3,11,1,4,9,4,1,3,-1,1,5,2,5,8,2,8,11,2,8,5,4,-1,-1,-1,-1,11,4,0,3,11,0,11,5,4,1,11,2,11,1,5,-1,5,2,0,9,5,0,5,11,2,8,5,4,5,8,11,-1,5,4,9,3,11,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,10,5,2,2,5,3,5,4,3,4,8,3,-1,-1,-1,-1,2,10,5,4,2,5,0,2,4,-1,-1,-1,-1,-1,-1,-1,2,10,3,10,5,3,5,8,3,8,5,4,9,1,0,-1,2,10,5,4,2,5,2,9,1,2,4,9,-1,-1,-1,-1,5,4,8,3,5,8,1,5,3,-1,-1,-1,-1,-1,-1,-1,5,4,0,5,0,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5,4,8,3,5,8,5,0,9,5,3,0,-1,-1,-1,-1,5,4,9,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7,11,4,11,9,4,11,10,9,-1,-1,-1,-1,-1,-1,-1,3,8,0,7,9,4,7,11,9,11,10,9,-1,-1,-1,-1,11,10,1,4,11,1,0,4,1,11,4,7,-1,-1,-1,-1,4,1,3,8,4,3,4,10,1,11,4,7,4,11,10,-1,7,11,4,4,11,9,11,2,9,2,1,9,-1,-1,-1,-1,4,7,9,7,11,9,11,1,9,1,11,2,3,8,0,-1,4,7,11,2,4,11,0,4,2,-1,-1,-1,-1,-1,-1,-1,4,7,11,2,4,11,4,3,8,4,2,3,-1,-1,-1,-1,10,9,2,9,7,2,7,3,2,9,4,7,-1,-1,-1,-1,7,10,9,4,7,9,7,2,10,0,7,8,7,0,2,-1,10,7,3,2,10,3,10,4,7,0,10,1,10,0,4,-1,2,10,1,4,7,8,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,9,4,7,1,4,3,1,7,-1,-1,-1,-1,-1,-1,-1,1,9,4,7,1,4,1,8,0,1,7,8,-1,-1,-1,-1,3,0,4,3,4,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7,8,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,10,9,8,11,10,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,9,0,3,11,9,3,10,9,11,-1,-1,-1,-1,-1,-1,-1,10,1,0,8,10,0,11,10,8,-1,-1,-1,-1,-1,-1,-1,10,1,3,10,3,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,11,2,1,9,11,1,8,11,9,-1,-1,-1,-1,-1,-1,-1,9,0,3,11,9,3,9,2,1,9,11,2,-1,-1,-1,-1,11,2,0,11,0,8,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,11,2,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,3,2,10,8,2,9,8,10,-1,-1,-1,-1,-1,-1,-1,2,10,9,2,9,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,3,2,10,8,2,8,1,0,8,10,1,-1,-1,-1,-1,2,10,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,3,1,8,1,9,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,9,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,3,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]),numTrisTable:new Float32Array([0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,2,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,3,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,3,2,3,3,2,3,4,4,3,3,4,4,3,4,5,5,2,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,3,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,4,2,3,3,4,3,4,2,3,3,4,4,5,4,5,3,2,3,4,4,3,4,5,3,2,4,5,5,4,5,2,4,1,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,3,2,3,3,4,3,4,4,5,3,2,4,3,4,3,5,2,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,4,3,4,4,3,4,5,5,4,4,3,5,2,5,4,2,1,2,3,3,4,3,4,4,5,3,4,4,5,2,3,3,2,3,4,4,5,4,5,5,2,4,3,5,4,3,2,4,1,3,4,4,5,4,5,3,4,4,5,5,2,3,4,2,1,2,3,3,2,3,4,2,1,3,2,4,1,2,1,1,0])}}var Bl=new fR,Id=class{constructor(){this.pyramidPassScene=new gR;this.pyramidPassMaterial=new On({name:"PyramidPass"});this.pyramidPassUniforms={inputTexture:{value:void 0},inputWidth:{value:0},inputHeight:{value:0},inputShiftX:{value:0},outputShiftX:{value:0}};this.pyramidTopLevelReadPixelBuffer=new Float32Array(4);let t=`
|
|
3606
|
+
`,triTable:new Float32Array([-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,8,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,9,1,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,8,1,1,8,9,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,10,2,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,8,0,10,2,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,10,2,9,9,2,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,8,2,8,10,2,8,9,10,-1,-1,-1,-1,-1,-1,-1,2,11,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2,11,0,0,11,8,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,9,1,11,3,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2,11,1,11,9,1,11,8,9,-1,-1,-1,-1,-1,-1,-1,1,10,3,3,10,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,10,0,10,8,0,10,11,8,-1,-1,-1,-1,-1,-1,-1,0,9,3,9,11,3,9,10,11,-1,-1,-1,-1,-1,-1,-1,10,8,9,11,8,10,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,7,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,3,4,4,3,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,9,1,0,7,4,8,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,9,1,4,1,7,4,1,3,7,-1,-1,-1,-1,-1,-1,-1,10,2,1,7,4,8,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7,4,3,4,0,3,10,2,1,-1,-1,-1,-1,-1,-1,-1,10,2,9,2,0,9,7,4,8,-1,-1,-1,-1,-1,-1,-1,9,10,2,7,9,2,3,7,2,4,9,7,-1,-1,-1,-1,7,4,8,2,11,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7,4,11,4,2,11,4,0,2,-1,-1,-1,-1,-1,-1,-1,1,0,9,7,4,8,11,3,2,-1,-1,-1,-1,-1,-1,-1,11,7,4,11,4,9,2,11,9,1,2,9,-1,-1,-1,-1,1,10,3,10,11,3,4,8,7,-1,-1,-1,-1,-1,-1,-1,10,11,1,11,4,1,4,0,1,4,11,7,-1,-1,-1,-1,8,7,4,11,0,9,10,11,9,3,0,11,-1,-1,-1,-1,11,7,4,9,11,4,10,11,9,-1,-1,-1,-1,-1,-1,-1,4,5,9,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,5,9,3,8,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,5,0,0,5,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,5,8,5,3,8,5,1,3,-1,-1,-1,-1,-1,-1,-1,10,2,1,4,5,9,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,0,3,10,2,1,5,9,4,-1,-1,-1,-1,-1,-1,-1,10,2,5,2,4,5,2,0,4,-1,-1,-1,-1,-1,-1,-1,5,10,2,5,2,3,4,5,3,8,4,3,-1,-1,-1,-1,4,5,9,11,3,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2,11,0,11,8,0,5,9,4,-1,-1,-1,-1,-1,-1,-1,4,5,0,5,1,0,11,3,2,-1,-1,-1,-1,-1,-1,-1,5,1,2,8,5,2,11,8,2,5,8,4,-1,-1,-1,-1,11,3,10,3,1,10,4,5,9,-1,-1,-1,-1,-1,-1,-1,5,9,4,1,8,0,1,10,8,10,11,8,-1,-1,-1,-1,0,4,5,11,0,5,10,11,5,3,0,11,-1,-1,-1,-1,8,4,5,10,8,5,11,8,10,-1,-1,-1,-1,-1,-1,-1,8,7,9,9,7,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,3,9,3,5,9,3,7,5,-1,-1,-1,-1,-1,-1,-1,8,7,0,7,1,0,7,5,1,-1,-1,-1,-1,-1,-1,-1,3,5,1,7,5,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,7,9,7,5,9,2,1,10,-1,-1,-1,-1,-1,-1,-1,2,1,10,0,5,9,0,3,5,3,7,5,-1,-1,-1,-1,2,0,8,5,2,8,7,5,8,2,5,10,-1,-1,-1,-1,5,10,2,3,5,2,7,5,3,-1,-1,-1,-1,-1,-1,-1,5,9,7,9,8,7,2,11,3,-1,-1,-1,-1,-1,-1,-1,7,5,9,2,7,9,0,2,9,11,7,2,-1,-1,-1,-1,11,3,2,8,1,0,8,7,1,7,5,1,-1,-1,-1,-1,1,2,11,7,1,11,5,1,7,-1,-1,-1,-1,-1,-1,-1,8,5,9,7,5,8,3,1,10,11,3,10,-1,-1,-1,-1,0,7,5,9,0,5,0,11,7,10,0,1,0,10,11,-1,0,10,11,3,0,11,0,5,10,7,0,8,0,7,5,-1,5,10,11,5,11,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5,6,10,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,8,0,6,10,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,0,9,6,10,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,8,1,8,9,1,6,10,5,-1,-1,-1,-1,-1,-1,-1,5,6,1,1,6,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5,6,1,6,2,1,8,0,3,-1,-1,-1,-1,-1,-1,-1,5,6,9,6,0,9,6,2,0,-1,-1,-1,-1,-1,-1,-1,8,9,5,2,8,5,6,2,5,8,2,3,-1,-1,-1,-1,11,3,2,5,6,10,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,0,11,0,2,11,5,6,10,-1,-1,-1,-1,-1,-1,-1,9,1,0,11,3,2,6,10,5,-1,-1,-1,-1,-1,-1,-1,6,10,5,2,9,1,2,11,9,11,8,9,-1,-1,-1,-1,11,3,6,3,5,6,3,1,5,-1,-1,-1,-1,-1,-1,-1,11,8,0,5,11,0,1,5,0,6,11,5,-1,-1,-1,-1,6,11,3,6,3,0,5,6,0,9,5,0,-1,-1,-1,-1,9,5,6,11,9,6,8,9,11,-1,-1,-1,-1,-1,-1,-1,6,10,5,8,7,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,3,4,3,7,4,10,5,6,-1,-1,-1,-1,-1,-1,-1,0,9,1,6,10,5,7,4,8,-1,-1,-1,-1,-1,-1,-1,5,6,10,7,9,1,3,7,1,4,9,7,-1,-1,-1,-1,2,1,6,1,5,6,8,7,4,-1,-1,-1,-1,-1,-1,-1,5,2,1,6,2,5,4,0,3,7,4,3,-1,-1,-1,-1,7,4,8,5,0,9,5,6,0,6,2,0,-1,-1,-1,-1,9,3,7,4,9,7,9,2,3,6,9,5,9,6,2,-1,2,11,3,4,8,7,5,6,10,-1,-1,-1,-1,-1,-1,-1,6,10,5,2,7,4,0,2,4,11,7,2,-1,-1,-1,-1,9,1,0,8,7,4,11,3,2,6,10,5,-1,-1,-1,-1,1,2,9,2,11,9,11,4,9,4,11,7,6,10,5,-1,7,4,8,5,11,3,1,5,3,6,11,5,-1,-1,-1,-1,11,1,5,6,11,5,11,0,1,4,11,7,11,4,0,-1,9,5,0,5,6,0,6,3,0,3,6,11,7,4,8,-1,9,5,6,11,9,6,9,7,4,9,11,7,-1,-1,-1,-1,9,4,10,10,4,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6,10,4,10,9,4,3,8,0,-1,-1,-1,-1,-1,-1,-1,1,0,10,0,6,10,0,4,6,-1,-1,-1,-1,-1,-1,-1,1,3,8,6,1,8,4,6,8,10,1,6,-1,-1,-1,-1,9,4,1,4,2,1,4,6,2,-1,-1,-1,-1,-1,-1,-1,8,0,3,9,2,1,9,4,2,4,6,2,-1,-1,-1,-1,4,2,0,6,2,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2,3,8,4,2,8,6,2,4,-1,-1,-1,-1,-1,-1,-1,9,4,10,4,6,10,3,2,11,-1,-1,-1,-1,-1,-1,-1,2,8,0,11,8,2,10,9,4,6,10,4,-1,-1,-1,-1,2,11,3,6,1,0,4,6,0,10,1,6,-1,-1,-1,-1,1,4,6,10,1,6,1,8,4,11,1,2,1,11,8,-1,4,6,9,6,3,9,3,1,9,3,6,11,-1,-1,-1,-1,1,11,8,0,1,8,1,6,11,4,1,9,1,4,6,-1,6,11,3,0,6,3,4,6,0,-1,-1,-1,-1,-1,-1,-1,8,4,6,8,6,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6,10,7,10,8,7,10,9,8,-1,-1,-1,-1,-1,-1,-1,3,7,0,7,10,0,10,9,0,10,7,6,-1,-1,-1,-1,7,6,10,7,10,1,8,7,1,0,8,1,-1,-1,-1,-1,7,6,10,1,7,10,3,7,1,-1,-1,-1,-1,-1,-1,-1,6,2,1,8,6,1,9,8,1,7,6,8,-1,-1,-1,-1,9,6,2,1,9,2,9,7,6,3,9,0,9,3,7,-1,0,8,7,6,0,7,2,0,6,-1,-1,-1,-1,-1,-1,-1,2,3,7,2,7,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,11,3,2,8,6,10,9,8,10,7,6,8,-1,-1,-1,-1,7,0,2,11,7,2,7,9,0,10,7,6,7,10,9,-1,0,8,1,8,7,1,7,10,1,10,7,6,11,3,2,-1,1,2,11,7,1,11,1,6,10,1,7,6,-1,-1,-1,-1,6,9,8,7,6,8,6,1,9,3,6,11,6,3,1,-1,1,9,0,7,6,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,8,7,6,0,7,0,11,3,0,6,11,-1,-1,-1,-1,6,11,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,11,6,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,0,3,6,7,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,9,1,0,6,7,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,9,1,8,1,3,8,6,7,11,-1,-1,-1,-1,-1,-1,-1,2,1,10,7,11,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,10,2,1,8,0,3,7,11,6,-1,-1,-1,-1,-1,-1,-1,0,9,2,9,10,2,7,11,6,-1,-1,-1,-1,-1,-1,-1,7,11,6,3,10,2,3,8,10,8,9,10,-1,-1,-1,-1,3,2,7,7,2,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,0,7,0,6,7,0,2,6,-1,-1,-1,-1,-1,-1,-1,6,7,2,7,3,2,9,1,0,-1,-1,-1,-1,-1,-1,-1,2,6,1,6,8,1,8,9,1,6,7,8,-1,-1,-1,-1,6,7,10,7,1,10,7,3,1,-1,-1,-1,-1,-1,-1,-1,6,7,10,10,7,1,7,8,1,8,0,1,-1,-1,-1,-1,7,3,0,10,7,0,9,10,0,7,10,6,-1,-1,-1,-1,10,6,7,8,10,7,9,10,8,-1,-1,-1,-1,-1,-1,-1,4,8,6,6,8,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,11,6,3,6,0,3,6,4,0,-1,-1,-1,-1,-1,-1,-1,11,6,8,6,4,8,1,0,9,-1,-1,-1,-1,-1,-1,-1,6,4,9,3,6,9,1,3,9,6,3,11,-1,-1,-1,-1,4,8,6,8,11,6,1,10,2,-1,-1,-1,-1,-1,-1,-1,10,2,1,11,0,3,11,6,0,6,4,0,-1,-1,-1,-1,8,11,4,11,6,4,9,2,0,9,10,2,-1,-1,-1,-1,3,9,10,2,3,10,3,4,9,6,3,11,3,6,4,-1,3,2,8,2,4,8,2,6,4,-1,-1,-1,-1,-1,-1,-1,2,4,0,2,6,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,9,1,4,3,2,6,4,2,8,3,4,-1,-1,-1,-1,4,9,1,2,4,1,6,4,2,-1,-1,-1,-1,-1,-1,-1,3,1,8,1,6,8,6,4,8,1,10,6,-1,-1,-1,-1,0,1,10,6,0,10,4,0,6,-1,-1,-1,-1,-1,-1,-1,3,6,4,8,3,4,3,10,6,9,3,0,3,9,10,-1,4,9,10,4,10,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5,9,4,11,6,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,8,0,5,9,4,6,7,11,-1,-1,-1,-1,-1,-1,-1,1,0,5,0,4,5,11,6,7,-1,-1,-1,-1,-1,-1,-1,6,7,11,4,3,8,4,5,3,5,1,3,-1,-1,-1,-1,4,5,9,2,1,10,11,6,7,-1,-1,-1,-1,-1,-1,-1,7,11,6,10,2,1,3,8,0,5,9,4,-1,-1,-1,-1,11,6,7,10,4,5,10,2,4,2,0,4,-1,-1,-1,-1,8,4,3,4,5,3,5,2,3,2,5,10,6,7,11,-1,3,2,7,2,6,7,9,4,5,-1,-1,-1,-1,-1,-1,-1,4,5,9,6,8,0,2,6,0,7,8,6,-1,-1,-1,-1,2,6,3,6,7,3,0,5,1,0,4,5,-1,-1,-1,-1,8,2,6,7,8,6,8,1,2,5,8,4,8,5,1,-1,4,5,9,6,1,10,6,7,1,7,3,1,-1,-1,-1,-1,10,6,1,6,7,1,7,0,1,0,7,8,4,5,9,-1,10,0,4,5,10,4,10,3,0,7,10,6,10,7,3,-1,10,6,7,8,10,7,10,4,5,10,8,4,-1,-1,-1,-1,5,9,6,9,11,6,9,8,11,-1,-1,-1,-1,-1,-1,-1,11,6,3,3,6,0,6,5,0,5,9,0,-1,-1,-1,-1,8,11,0,11,5,0,5,1,0,11,6,5,-1,-1,-1,-1,3,11,6,5,3,6,1,3,5,-1,-1,-1,-1,-1,-1,-1,10,2,1,11,5,9,8,11,9,6,5,11,-1,-1,-1,-1,3,11,0,11,6,0,6,9,0,9,6,5,10,2,1,-1,5,8,11,6,5,11,5,0,8,2,5,10,5,2,0,-1,3,11,6,5,3,6,3,10,2,3,5,10,-1,-1,-1,-1,9,8,5,8,2,5,2,6,5,2,8,3,-1,-1,-1,-1,6,5,9,0,6,9,2,6,0,-1,-1,-1,-1,-1,-1,-1,8,5,1,0,8,1,8,6,5,2,8,3,8,2,6,-1,6,5,1,6,1,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6,3,1,10,6,1,6,8,3,9,6,5,6,9,8,-1,0,1,10,6,0,10,0,5,9,0,6,5,-1,-1,-1,-1,8,3,0,10,6,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6,5,10,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,10,5,11,11,5,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,10,5,11,5,7,11,0,3,8,-1,-1,-1,-1,-1,-1,-1,7,11,5,11,10,5,0,9,1,-1,-1,-1,-1,-1,-1,-1,5,7,10,7,11,10,1,8,9,1,3,8,-1,-1,-1,-1,2,1,11,1,7,11,1,5,7,-1,-1,-1,-1,-1,-1,-1,3,8,0,7,2,1,5,7,1,11,2,7,-1,-1,-1,-1,5,7,9,7,2,9,2,0,9,7,11,2,-1,-1,-1,-1,2,5,7,11,2,7,2,9,5,8,2,3,2,8,9,-1,10,5,2,5,3,2,5,7,3,-1,-1,-1,-1,-1,-1,-1,0,2,8,2,5,8,5,7,8,5,2,10,-1,-1,-1,-1,1,0,9,3,10,5,7,3,5,2,10,3,-1,-1,-1,-1,2,8,9,1,2,9,2,7,8,5,2,10,2,5,7,-1,5,3,1,5,7,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7,8,0,1,7,0,5,7,1,-1,-1,-1,-1,-1,-1,-1,3,0,9,5,3,9,7,3,5,-1,-1,-1,-1,-1,-1,-1,7,8,9,7,9,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,8,5,8,10,5,8,11,10,-1,-1,-1,-1,-1,-1,-1,4,0,5,0,11,5,11,10,5,0,3,11,-1,-1,-1,-1,9,1,0,10,4,8,11,10,8,5,4,10,-1,-1,-1,-1,4,11,10,5,4,10,4,3,11,1,4,9,4,1,3,-1,1,5,2,5,8,2,8,11,2,8,5,4,-1,-1,-1,-1,11,4,0,3,11,0,11,5,4,1,11,2,11,1,5,-1,5,2,0,9,5,0,5,11,2,8,5,4,5,8,11,-1,5,4,9,3,11,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,10,5,2,2,5,3,5,4,3,4,8,3,-1,-1,-1,-1,2,10,5,4,2,5,0,2,4,-1,-1,-1,-1,-1,-1,-1,2,10,3,10,5,3,5,8,3,8,5,4,9,1,0,-1,2,10,5,4,2,5,2,9,1,2,4,9,-1,-1,-1,-1,5,4,8,3,5,8,1,5,3,-1,-1,-1,-1,-1,-1,-1,5,4,0,5,0,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5,4,8,3,5,8,5,0,9,5,3,0,-1,-1,-1,-1,5,4,9,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7,11,4,11,9,4,11,10,9,-1,-1,-1,-1,-1,-1,-1,3,8,0,7,9,4,7,11,9,11,10,9,-1,-1,-1,-1,11,10,1,4,11,1,0,4,1,11,4,7,-1,-1,-1,-1,4,1,3,8,4,3,4,10,1,11,4,7,4,11,10,-1,7,11,4,4,11,9,11,2,9,2,1,9,-1,-1,-1,-1,4,7,9,7,11,9,11,1,9,1,11,2,3,8,0,-1,4,7,11,2,4,11,0,4,2,-1,-1,-1,-1,-1,-1,-1,4,7,11,2,4,11,4,3,8,4,2,3,-1,-1,-1,-1,10,9,2,9,7,2,7,3,2,9,4,7,-1,-1,-1,-1,7,10,9,4,7,9,7,2,10,0,7,8,7,0,2,-1,10,7,3,2,10,3,10,4,7,0,10,1,10,0,4,-1,2,10,1,4,7,8,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,9,4,7,1,4,3,1,7,-1,-1,-1,-1,-1,-1,-1,1,9,4,7,1,4,1,8,0,1,7,8,-1,-1,-1,-1,3,0,4,3,4,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7,8,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,10,9,8,11,10,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,9,0,3,11,9,3,10,9,11,-1,-1,-1,-1,-1,-1,-1,10,1,0,8,10,0,11,10,8,-1,-1,-1,-1,-1,-1,-1,10,1,3,10,3,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,11,2,1,9,11,1,8,11,9,-1,-1,-1,-1,-1,-1,-1,9,0,3,11,9,3,9,2,1,9,11,2,-1,-1,-1,-1,11,2,0,11,0,8,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,11,2,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,3,2,10,8,2,9,8,10,-1,-1,-1,-1,-1,-1,-1,2,10,9,2,9,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,3,2,10,8,2,8,1,0,8,10,1,-1,-1,-1,-1,2,10,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,3,1,8,1,9,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,9,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,3,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]),numTrisTable:new Float32Array([0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,2,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,3,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,3,2,3,3,2,3,4,4,3,3,4,4,3,4,5,5,2,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,3,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,4,2,3,3,4,3,4,2,3,3,4,4,5,4,5,3,2,3,4,4,3,4,5,3,2,4,5,5,4,5,2,4,1,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,3,2,3,3,4,3,4,4,5,3,2,4,3,4,3,5,2,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,4,3,4,4,3,4,5,5,4,4,3,5,2,5,4,2,1,2,3,3,4,3,4,4,5,3,4,4,5,2,3,3,2,3,4,4,5,4,5,5,2,4,3,5,4,3,2,4,1,3,4,4,5,4,5,3,4,4,5,5,2,3,4,2,1,2,3,3,2,3,4,2,1,3,2,4,1,2,1,1,0])}}var Vl=new hR,Ed=class{constructor(){this.pyramidPassScene=new xR;this.pyramidPassMaterial=new Tn({name:"PyramidPass"});this.pyramidPassUniforms={inputTexture:{value:void 0},inputWidth:{value:0},inputHeight:{value:0},inputShiftX:{value:0},outputShiftX:{value:0}};this.pyramidTopLevelReadPixelBuffer=new Float32Array(4);let t=`
|
|
3607
3607
|
precision highp float;
|
|
3608
3608
|
precision highp sampler2D;
|
|
3609
3609
|
layout(location = 0) out vec4 pc_FragColor;
|
|
@@ -3643,13 +3643,13 @@ void main() {
|
|
|
3643
3643
|
pc_FragColor.g = pc_FragColor.b + tr;
|
|
3644
3644
|
pc_FragColor.r = pc_FragColor.g + tl;
|
|
3645
3645
|
}
|
|
3646
|
-
`;this.pyramidPassMaterial.fragmentShader=t,this.pyramidPassMaterial.uniforms=this.pyramidPassUniforms,this.pyramidPassMaterial.depthTest=!1,this.pyramidPassMaterial.depthWrite=!1;let e=new
|
|
3646
|
+
`;this.pyramidPassMaterial.fragmentShader=t,this.pyramidPassMaterial.uniforms=this.pyramidPassUniforms,this.pyramidPassMaterial.depthTest=!1,this.pyramidPassMaterial.depthWrite=!1;let e=new yR(Ps,this.pyramidPassMaterial);e.frustumCulled=!1,this.pyramidPassScene.add(e)}renderPyramid(t,e,r,o,n){new dR().min.setScalar(0);let s=e.length-1,l=new bR;r.getViewport(l),this.pyramidPassUniforms.inputShiftX.value=0,this.pyramidPassUniforms.outputShiftX.value=0;let c=s-1;for(let d=c;d>=0;d--){let p=d%2===c%2?n[0]:n[1],f=d===c?o:d%2===c%2?n[1]:n[0];this.pyramidPassUniforms.inputTexture.value=Array.isArray(f.texture)?f.texture[1]:f.texture,this.pyramidPassUniforms.inputWidth.value=f.width,this.pyramidPassUniforms.inputHeight.value=f.height,r.setRenderTarget(p);let h=e[d],m=r.getPixelRatio();r.setViewport(this.pyramidPassUniforms.outputShiftX.value/m,0,h/m,h/m),d===2&&t%2!==0&&r.setViewport(this.pyramidPassUniforms.outputShiftX.value/m,0,3/m,3/m),r.render(this.pyramidPassScene,Vl);let y=this.pyramidPassUniforms.inputShiftX.value;this.pyramidPassUniforms.inputShiftX.value=this.pyramidPassUniforms.outputShiftX.value,this.pyramidPassUniforms.outputShiftX.value=y,d<c&&(this.pyramidPassUniforms.outputShiftX.value+=e[d+1])}r.setViewport(l);let u=e.length%2===0?0:1;return r.readRenderTargetPixelsAsync(n[u],n[u].width-1,0,1,1,this.pyramidTopLevelReadPixelBuffer).then(()=>this.pyramidTopLevelReadPixelBuffer[0])}};var Yr=24,Ht=96,Oo=sS(),Jo=2,nm=class extends et{constructor(e,r,o){super(e,r,o);this.data=r;this.needsRebuild=!0;this.customDepthMaterialNeedsUpdate=!1;this._npart=-1;this.spatialn=1;this.drawRangeNeedsForceUpdate=!0;this._resolutionLevel=-1;this.resolution=64;this.spatialDivisions=25;this.zLayersPerRow=8;this.basePyramidSize=512;this.pyramidTexture1Width=341;this.pyramidTexture1Height=256;this.pyramidTexture2Width=170;this.pyramidTexture2Height=128;this.numLevels=9;this.pyramidLevelSizes=[1,2,4,8,16,32,64,128,256,512];this.bboxSize=0;this.bboxOffset=0;this.shapesDataTexture={value:void 0};this.spatialscene=new rm;this.potentialPassScene=new rm;this.voxelPassScene=new rm;this._spatialPassRenderTargets=[];this._potentialPassRenderTargets=[];this._voxelPassRenderTargets=[];this._pyramidRenderTargets=[];this.geometry=new cS,this.geometry.drawRange.count=0,this.spatialPassUniforms={span:{value:-1},shapesDataTexture:this.shapesDataTexture,npart:{value:this.npart},spatialn:{value:this.spatialn}},this.spatialMesh=new em(Ps,this.spatialPassMaterial()),this.spatialMesh.frustumCulled=!1,this.spatialscene.add(this.spatialMesh);let n=new im(Oo.triTable,16,256,tm,ei);n.needsUpdate=!0;let a=new im(Oo.numTrisTable,256,1,tm,ei);a.needsUpdate=!0,this.voxelPassUniforms={potentialPassTexture:{value:void 0},numTrisTable:{value:a}},this.voxelMesh=new em(Ps,this.voxelPassMaterial()),this.voxelMesh.frustumCulled=!1,this.voxelPassScene.add(this.voxelMesh),this.potentialPassUniforms={shapesDataTexture:this.shapesDataTexture,spatialPassTexture:{value:void 0},npart:{value:this.npart},spatialn:{value:this.spatialn}},this.potentialMesh=new em(Ps,this.potentialPassMaterial()),this.potentialMesh.frustumCulled=!1,this.potentialPassScene.add(this.potentialMesh),this.marchPassUniforms={triTable:{value:n},potentialPassTexture:{value:void 0},voxelPassTexture:{value:void 0},pyramidTexture1:{value:void 0},pyramidTexture1Size:{value:void 0},pyramidTexture2:{value:void 0},pyramidTexture2Size:{value:void 0}},this.frustumCulled=!1,this.onBeforeShadowPass=s=>{if(CR.call(this),this.npart===0){this.geometry.drawRange.count=0;return}let l=this.material.root;if(!l.shadersPatchedForShapeBlend)this.patchVertexShaderForShapeBlend(l),l.shadersPatchedForShapeBlend=!0,this.customDepthMaterialNeedsUpdate=!0;else if(this.customDepthMaterialNeedsUpdate){this.customDepthMaterialNeedsUpdate=!1,this.customDepthMaterial=new uS({vertexShader:l.vertexShader,fragmentShader:`
|
|
3647
3647
|
#include <packing>
|
|
3648
3648
|
void main()
|
|
3649
3649
|
{
|
|
3650
3650
|
gl_FragColor = packDepthToRGBA(gl_FragCoord.z);
|
|
3651
3651
|
}
|
|
3652
|
-
`,uniforms:l.uniforms,defines:this.material.defines}),this.isMeshDepthMaterial=!0,this.customDistanceMaterial=new
|
|
3652
|
+
`,uniforms:l.uniforms,defines:this.material.defines}),this.isMeshDepthMaterial=!0,this.customDistanceMaterial=new uS({vertexShader:l.vertexShader,fragmentShader:`
|
|
3653
3653
|
#include <common>
|
|
3654
3654
|
#include <packing>
|
|
3655
3655
|
uniform vec3 referencePosition;
|
|
@@ -3664,14 +3664,14 @@ void main() {
|
|
|
3664
3664
|
dist = saturate(dist);
|
|
3665
3665
|
// Required by Three.js for this to work
|
|
3666
3666
|
gl_FragColor = packDepthToRGBA( dist );
|
|
3667
|
-
}`,uniforms:{nearDistance:{value:0},farDistance:{value:0},referencePosition:{value:new
|
|
3667
|
+
}`,uniforms:{nearDistance:{value:0},farDistance:{value:0},referencePosition:{value:new _d},opacity:{value:0},...l.uniforms},defines:this.material.defines});let d=this.customDistanceMaterial;d.referencePosition=new _d,d.nearDistance=0,d.farDistance=0,d.opacity=1,d.isMeshDistanceMaterial=!0}if(this.spatialPassUniforms.npart.value=this.npart,this.spatialPassUniforms.spatialn.value=this.spatialn,this.potentialPassUniforms.npart.value=this.npart,this.potentialPassUniforms.spatialn.value=this.spatialn,this.needsRebuild){this.needsRebuild=!1,this.spatialMesh.material.defines.RES=this.resolutionLevel,this.spatialMesh.material.needsUpdate=!0,this.potentialMesh.material.defines.RES=this.resolutionLevel,this.potentialPassUniforms.spatialPassTexture.value=this.spatialPassRenderTarget.texture,this.potentialMesh.material.needsUpdate=!0,this.voxelMesh.material.defines.RES=this.resolutionLevel,this.voxelMesh.material.needsUpdate=!0,this.voxelPassUniforms.potentialPassTexture.value=this.potentialPassRenderTarget.texture,this.marchPassUniforms.potentialPassTexture.value=this.potentialPassRenderTarget.texture,this.marchPassUniforms.voxelPassTexture.value=this.voxelPassRenderTarget.texture[0],this.material.defines.RES=this.resolutionLevel,this.material.defines.LEVELS=this.pyramidLevelSizes.length,this.material.defines.LOOP=this.pyramidLevelSizes.length%2===0?this.pyramidLevelSizes.length-3:this.pyramidLevelSizes.length-2,this.material.defines.HALF=this.pyramidLevelSizes.length%2===0?1:0,this.material.needsUpdate=!0;let d=this.pyramidLevelSizes.length%2===0?0:1,p=this.pyramidLevelSizes.length%2===0?1:0;this.marchPassUniforms.pyramidTexture2.value=this.pyramidRenderTarget[d].texture,this.marchPassUniforms.pyramidTexture2Size.value=new om(this.pyramidRenderTarget[d].width,this.pyramidRenderTarget[d].height),this.marchPassUniforms.pyramidTexture1.value=this.pyramidRenderTarget[p].texture,this.marchPassUniforms.pyramidTexture1Size.value=new om(this.pyramidRenderTarget[p].width,this.pyramidRenderTarget[p].height),Object.assign(this.material.uniforms,this.marchPassUniforms)}let c=s.shadowMap.enabled;s.shadowMap.enabled=!1;let u=s.getRenderTarget();s.setRenderTarget(this.spatialPassRenderTarget),s.render(this.spatialscene,Vl),s.setRenderTarget(this.potentialPassRenderTarget),s.render(this.potentialPassScene,Vl),s.setRenderTarget(this.voxelPassRenderTarget),s.render(this.voxelPassScene,Vl),nm.streamCompaction.renderPyramid(this.resolutionLevel,this.pyramidLevelSizes,s,this.voxelPassRenderTarget,this.pyramidRenderTarget).then(d=>{this.material.wireframe&&(d*3>this.geometry.attributes.position.count||this.drawRangeNeedsForceUpdate)&&(this.geometry.dispose(),this.geometry=new cS,this.geometry.userData.parameters={width:this.bboxSize,height:this.bboxSize,depth:this.bboxSize,centerOffset:[this.bboxOffset,this.bboxOffset,this.bboxOffset]},this.geometry.attributes.position=new lS(new Float32Array(d*3*2),3)),(d*3>this.geometry.drawRange.count||this.drawRangeNeedsForceUpdate)&&(this.geometry.drawRange.count=Math.floor(d*1.2)*3),this.drawRangeNeedsForceUpdate=!1}),s.shadowMap.enabled=c,s.setRenderTarget(u)}}set npart(e){e!==this._npart&&(this.drawRangeNeedsForceUpdate=!0,this._npart=e,this.spatialn=Math.ceil(e/(4*Yr)))}get npart(){return this._npart}set resolutionLevel(e){let r=Math.min(8,Math.max(5,e));if(r!==this._resolutionLevel){switch(this._resolutionLevel=r,this.resolution=Math.pow(2,r),this.resolutionLevel){case 5:this.pyramidLevelSizes=[1,2,4,6,12,24,48,96,192],this.bboxSize=31*8*Jo,this.bboxOffset=8*Jo*-1/2;break;case 6:this.pyramidLevelSizes=[1,2,4,8,16,32,64,128,256,512],this.bboxSize=63*4*Jo,this.bboxOffset=4*Jo*-1/2;break;case 7:this.pyramidLevelSizes=[1,2,4,6,12,24,48,96,192,384,768,1536],this.bboxSize=127*2*Jo,this.bboxOffset=2*Jo*-1/2;break;case 8:this.pyramidLevelSizes=[1,2,4,8,16,32,64,128,256,512,1024,2048,4096],this.bboxSize=255*Jo,this.bboxOffset=Jo*-1/2;break}this.pyramidTexture1Width=0,this.pyramidTexture2Width=0,this.pyramidTexture1Height=this.pyramidLevelSizes[this.pyramidLevelSizes.length-2],this.pyramidTexture2Height=this.pyramidLevelSizes[this.pyramidLevelSizes.length-3];for(let o=this.pyramidLevelSizes.length-2;o>=0;o--)(this.pyramidLevelSizes.length-2)%2===o%2?this.pyramidTexture1Width+=this.pyramidLevelSizes[o]:this.pyramidTexture2Width+=this.pyramidLevelSizes[o];this.basePyramidSize=this.pyramidLevelSizes[this.pyramidLevelSizes.length-1],this.zLayersPerRow=this.basePyramidSize/this.resolution,this.numLevels=this.pyramidLevelSizes.length-1,this.geometry.userData.parameters={width:this.bboxSize,height:this.bboxSize,depth:this.bboxSize,centerOffset:[this.bboxOffset,this.bboxOffset,this.bboxOffset]},this.needsRebuild=!0,this.customDepthMaterialNeedsUpdate=!0}}get resolutionLevel(){return this._resolutionLevel}get spatialPassRenderTarget(){let e=this._spatialPassRenderTargets[this.resolutionLevel];return e||(e=new Nd(this.spatialDivisions*this.spatialn,this.spatialDivisions**2,{format:Ts,type:ei,stencilBuffer:!1,depthBuffer:!1,generateMipmaps:!1,minFilter:Po,magFilter:Po}),this._spatialPassRenderTargets[this.resolutionLevel]=e),e}get potentialPassRenderTarget(){let e=this._potentialPassRenderTargets[this.resolutionLevel];return e||(e=new Nd(this.basePyramidSize,this.basePyramidSize,{format:Ts,type:ei,stencilBuffer:!1,depthBuffer:!1,generateMipmaps:!1,minFilter:Po,magFilter:Po}),this._potentialPassRenderTargets[this.resolutionLevel]=e),e}get voxelPassRenderTarget(){let e=this._voxelPassRenderTargets[this.resolutionLevel];return e||(e=new SR(this.basePyramidSize,this.basePyramidSize,2,{stencilBuffer:!1,depthBuffer:!1,generateMipmaps:!1,minFilter:Po,magFilter:Po}),e.texture[0].format=Ts,e.texture[0].type=ei,e.texture[1].format=tm,e.texture[1].type=ei,this._voxelPassRenderTargets[this.resolutionLevel]=e),e}get pyramidRenderTarget(){let e=this._pyramidRenderTargets[this.resolutionLevel];if(!e){let r=new Nd(this.pyramidTexture1Width,this.pyramidTexture1Height,{format:Ts,type:ei,stencilBuffer:!1,depthBuffer:!1,magFilter:Po,minFilter:Po}),o=new Nd(this.pyramidTexture2Width,this.pyramidTexture2Height,{format:Ts,type:ei,stencilBuffer:!1,depthBuffer:!1,magFilter:Po,minFilter:Po});e=[r,o],this._pyramidRenderTargets[this.resolutionLevel]=e}return e}updateState(e,r){let o=this.material;super.updateState(e,r),o!==this.material&&(this.needsRebuild=!0),e.geometry&&(this.resolutionLevel=e.geometry.resolutionLevel,this.geometry.userData.parameters={width:this.bboxSize,height:this.bboxSize,depth:this.bboxSize,centerOffset:[this.bboxOffset,this.bboxOffset,this.bboxOffset]}),e.wireframe&&!this.geometry.getAttribute("position")?this.geometry.setAttribute("position",new lS(new Float32Array(this.geometry.drawRange.count*3),3)):!e.wireframe&&this.geometry.getAttribute("position")&&this.geometry.deleteAttribute("position")}spatialPassMaterial(){let e=`
|
|
3668
3668
|
precision highp float;
|
|
3669
3669
|
out vec4 pc_FragColor;
|
|
3670
3670
|
const float spatialDivisions = ${this.spatialDivisions}.;
|
|
3671
3671
|
uniform float span;
|
|
3672
3672
|
uniform float npart;
|
|
3673
3673
|
uniform float spatialn;
|
|
3674
|
-
${
|
|
3674
|
+
${Oo.shapeInput()}
|
|
3675
3675
|
|
|
3676
3676
|
vec3 low, high; // range of current div; subset of -1 .. 1 with span border
|
|
3677
3677
|
|
|
@@ -3680,9 +3680,9 @@ void main() {
|
|
|
3680
3680
|
// gives a key to which spheres from lowi..lowi+23 are active within given div (low..high)
|
|
3681
3681
|
float spatialKey(float lowi) {
|
|
3682
3682
|
float t = 0.;
|
|
3683
|
-
for (float ii = ${
|
|
3683
|
+
for (float ii = ${Yr-1}.; ii >= 0.; ii--) {
|
|
3684
3684
|
float i = ii + lowi;
|
|
3685
|
-
float iin = (i + 0.5) / ${
|
|
3685
|
+
float iin = (i + 0.5) / ${Ht}.;
|
|
3686
3686
|
vec4 shape = shapePos(iin);
|
|
3687
3687
|
vec3 d = shape.xyz;
|
|
3688
3688
|
float op = shape.w;
|
|
@@ -3698,7 +3698,7 @@ void main() {
|
|
|
3698
3698
|
return t;
|
|
3699
3699
|
}
|
|
3700
3700
|
|
|
3701
|
-
${
|
|
3701
|
+
${Oo.getpart}
|
|
3702
3702
|
|
|
3703
3703
|
void main() { // spatialial fragment shader
|
|
3704
3704
|
// find active div
|
|
@@ -3709,7 +3709,7 @@ void main() {
|
|
|
3709
3709
|
div.z = yz; // getpart(yz, spatialDivisions.z); // what's left, should be the same as getpart
|
|
3710
3710
|
|
|
3711
3711
|
float lx = float(gl_FragCoord.x - 0.5); // contains x, lowi faster moving
|
|
3712
|
-
float lowi = getpart(lx, spatialn) * ${4*
|
|
3712
|
+
float lowi = getpart(lx, spatialn) * ${4*Yr}.;
|
|
3713
3713
|
div.x = lx;
|
|
3714
3714
|
|
|
3715
3715
|
low = div / spatialDivisions * 2. - 1. - span;
|
|
@@ -3717,15 +3717,15 @@ void main() {
|
|
|
3717
3717
|
|
|
3718
3718
|
// find active range of spheres
|
|
3719
3719
|
pc_FragColor.x = spatialKey(lowi);
|
|
3720
|
-
pc_FragColor.y = spatialKey(lowi+${
|
|
3721
|
-
pc_FragColor.z = spatialKey(lowi+${2*
|
|
3722
|
-
pc_FragColor.w = spatialKey(lowi+${3*
|
|
3720
|
+
pc_FragColor.y = spatialKey(lowi+${Yr}.);
|
|
3721
|
+
pc_FragColor.z = spatialKey(lowi+${2*Yr}.);
|
|
3722
|
+
pc_FragColor.w = spatialKey(lowi+${3*Yr}.);
|
|
3723
3723
|
}
|
|
3724
|
-
`;return new
|
|
3724
|
+
`;return new Tn({name:"Spatial Pass",fragmentShader:e,uniforms:this.spatialPassUniforms})}potentialPassMaterial(){let e=`
|
|
3725
3725
|
precision highp float;
|
|
3726
3726
|
out vec4 pc_FragColor;
|
|
3727
3727
|
|
|
3728
|
-
${
|
|
3728
|
+
${Oo.shapeInput()}
|
|
3729
3729
|
uniform sampler2D spatialPassTexture;
|
|
3730
3730
|
|
|
3731
3731
|
const float res = float(RES);
|
|
@@ -3740,7 +3740,7 @@ void main() {
|
|
|
3740
3740
|
const float spatialDivisions2 = spatialDivisions * spatialDivisions;
|
|
3741
3741
|
const float spatialDivisionsSub1 = spatialDivisions - 1.;
|
|
3742
3742
|
|
|
3743
|
-
${
|
|
3743
|
+
${Oo.getpart}
|
|
3744
3744
|
|
|
3745
3745
|
vec3 packRGBAToVec3(vec4 color) {
|
|
3746
3746
|
uint r = uint(color.r * 255.);
|
|
@@ -3836,12 +3836,12 @@ void main() {
|
|
|
3836
3836
|
inout float colorDivisor,
|
|
3837
3837
|
inout vec4 trackColor
|
|
3838
3838
|
) {
|
|
3839
|
-
for (float i = 0.; i < ${
|
|
3839
|
+
for (float i = 0.; i < ${Yr}.; i++) {
|
|
3840
3840
|
if (activeKey < 1.) break; // activeKey exhausted, no more active spheres
|
|
3841
3841
|
activeKey *= 0.5;
|
|
3842
3842
|
if (fract(activeKey) < 0.5) continue;
|
|
3843
3843
|
|
|
3844
|
-
float iin = (i + ii + 0.5) * ${1/
|
|
3844
|
+
float iin = (i + ii + 0.5) * ${1/Ht};
|
|
3845
3845
|
vec4 shape = shapePos(iin);
|
|
3846
3846
|
vec4 quat = shapeQuat(iin);
|
|
3847
3847
|
vec4 params1 = shapeParams1(iin);
|
|
@@ -3897,13 +3897,13 @@ void main() {
|
|
|
3897
3897
|
// spatialPassTexture holds x=> lowi, x faster moving and y=> z, y faster moving
|
|
3898
3898
|
float divyz = (div.y + div.z * spatialDivisions + 0.5) / (spatialDivisions2);
|
|
3899
3899
|
for (float ii = 0.; ii < spatialn; ii++) {
|
|
3900
|
-
float i = ii * ${4*
|
|
3900
|
+
float i = ii * ${4*Yr}.;
|
|
3901
3901
|
|
|
3902
3902
|
vec4 activeKey = texture(spatialPassTexture, vec2((div.x * spatialn + ii + 0.5)/(spatialn * spatialDivisions), divyz));
|
|
3903
3903
|
fillSpatialInner(i, activeKey.x, corner, sdf, colorDivisor, trackColor);
|
|
3904
|
-
fillSpatialInner(i+${
|
|
3905
|
-
fillSpatialInner(i+${2*
|
|
3906
|
-
fillSpatialInner(i+${3*
|
|
3904
|
+
fillSpatialInner(i+${Yr}., activeKey.y, corner, sdf, colorDivisor, trackColor);
|
|
3905
|
+
fillSpatialInner(i+${2*Yr}., activeKey.z, corner, sdf, colorDivisor, trackColor);
|
|
3906
|
+
fillSpatialInner(i+${3*Yr}., activeKey.w, corner, sdf, colorDivisor, trackColor);
|
|
3907
3907
|
}
|
|
3908
3908
|
|
|
3909
3909
|
trackColor /= colorDivisor;
|
|
@@ -3911,7 +3911,7 @@ void main() {
|
|
|
3911
3911
|
}
|
|
3912
3912
|
|
|
3913
3913
|
void main() {
|
|
3914
|
-
${
|
|
3914
|
+
${Oo.getxyzi} // get xi yi zi from 2d position
|
|
3915
3915
|
|
|
3916
3916
|
vec3 xyzi = vec3(xi,yi,zi);
|
|
3917
3917
|
vec3 corner = xyzi / VOXEL_RESOLUTION_SUB1 * 2. - 1.; // -1..1 coords
|
|
@@ -3923,7 +3923,7 @@ void main() {
|
|
|
3923
3923
|
|
|
3924
3924
|
pc_FragColor = vec4(t, packRGBAToVec3(c)); // RGB texture
|
|
3925
3925
|
}
|
|
3926
|
-
`;return new
|
|
3926
|
+
`;return new Tn({name:"PotentialPass",fragmentShader:e,uniforms:this.potentialPassUniforms})}voxelPassMaterial(){let e=`
|
|
3927
3927
|
precision highp float;
|
|
3928
3928
|
layout(location = 0) out vec4 pc_FragColor;
|
|
3929
3929
|
layout(location = 1) out vec4 numTris;
|
|
@@ -3946,7 +3946,7 @@ void main() {
|
|
|
3946
3946
|
(float(f111 < 0.) * 64.);
|
|
3947
3947
|
}
|
|
3948
3948
|
|
|
3949
|
-
${
|
|
3949
|
+
${Oo.lookup}
|
|
3950
3950
|
|
|
3951
3951
|
vec3 compNormi(float xi, float yi, float zi) {
|
|
3952
3952
|
float dx = look(xi + 1., yi, zi, potentialPassTexture).r - look(xi - 1., yi, zi, potentialPassTexture).r;
|
|
@@ -3961,7 +3961,7 @@ void main() {
|
|
|
3961
3961
|
}
|
|
3962
3962
|
|
|
3963
3963
|
void main() {
|
|
3964
|
-
${
|
|
3964
|
+
${Oo.getxyzi} // get xi yi zi from 2d
|
|
3965
3965
|
|
|
3966
3966
|
vec3 normal = compNormi(xi, yi, zi); // even if our key is -1 this may be needed by a neighbouring voxel
|
|
3967
3967
|
|
|
@@ -3986,7 +3986,7 @@ void main() {
|
|
|
3986
3986
|
|
|
3987
3987
|
numTris = texture(numTrisTable, vec2((key + 0.5) / 256., 0.5));
|
|
3988
3988
|
}
|
|
3989
|
-
`;return new
|
|
3989
|
+
`;return new Tn({name:"VoxelPass",fragmentShader:e,uniforms:this.voxelPassUniforms})}patchVertexShaderForShapeBlend(e){let r=`
|
|
3990
3990
|
#ifdef SHAPEBLEND
|
|
3991
3991
|
precision highp sampler2D;
|
|
3992
3992
|
|
|
@@ -4009,7 +4009,7 @@ void main() {
|
|
|
4009
4009
|
const float Z_LAYERS_PER_ROW = ceil(pow(2., res / 2.));
|
|
4010
4010
|
const float INV_VOXEL_RESOLUTION = 1.0 / VOXEL_RESOLUTION;
|
|
4011
4011
|
|
|
4012
|
-
const float scale_factor = ${
|
|
4012
|
+
const float scale_factor = ${Jo}.;
|
|
4013
4013
|
|
|
4014
4014
|
#if SHAPEBLEND == 5
|
|
4015
4015
|
const float levelShiftX[7] = float[7](4., 6., 12., 24., 48., 96., 192.);
|
|
@@ -4029,7 +4029,7 @@ void main() {
|
|
|
4029
4029
|
const vec3 originOffset = vec3(32.);
|
|
4030
4030
|
#endif
|
|
4031
4031
|
|
|
4032
|
-
${
|
|
4032
|
+
${Oo.lookup}
|
|
4033
4033
|
|
|
4034
4034
|
const vec3 offsets[24] = vec3[](
|
|
4035
4035
|
vec3(0., 0., 0.), vec3(1., 0., 0.),
|
|
@@ -4198,7 +4198,7 @@ void main() {
|
|
|
4198
4198
|
${n[0]}
|
|
4199
4199
|
#endif
|
|
4200
4200
|
`;e.fragmentShader=`in vec4 marchColor;
|
|
4201
|
-
`+e.fragmentShader.replace(n[0],s),Object.assign(e.uniforms,this.marchPassUniforms)}initDebugPass(e){console.log("fboToDebug.width",e.width,e.height),this.geometry=new
|
|
4201
|
+
`+e.fragmentShader.replace(n[0],s),Object.assign(e.uniforms,this.marchPassUniforms)}initDebugPass(e){console.log("fboToDebug.width",e.width,e.height),this.geometry=new vR(e.width,e.height),this.geometry.userData={parameters:{width:4,height:4}};let r={inputTexture:{value:Array.isArray(e.texture)?e.texture[1]:e.texture},pyramidTextureSize:{value:void 0}},o=n=>{n.vertexShader=`
|
|
4202
4202
|
precision highp float;
|
|
4203
4203
|
|
|
4204
4204
|
varying vec2 vUv;
|
|
@@ -4222,7 +4222,7 @@ void main() {
|
|
|
4222
4222
|
gl_FragColor = texture(inputTexture, vUv);
|
|
4223
4223
|
gVelocity = vec4(0.0);
|
|
4224
4224
|
}
|
|
4225
|
-
`,r.pyramidTextureSize.value=new rm(this.pyramidRenderTarget.width,this.pyramidRenderTarget.height),Object.assign(n.uniforms,r)};this.material.shapeBlendhack=o,this.material.root.shapeBlendhack=o}},Bi=im;Bi.streamCompaction=new Id;var SR=new uS,wR=new uS,Ps=new dS,zi=new Dd,Nd=new Dd,PR=new dS;function OR(i,t=0){let e=this.children.length;for(;e--;){let r=this.children[e];zo.is(r)&&pS.call(r,i,t+1)}}function pS(i,t=0){if(i(this,t)!==!0){let r=this.children.length;for(;r--;){let o=this.children[r];zo.is(o)&&pS.call(o,i,t+1)}}}function TR(){if(this.shapesDataTexture.value===void 0){let a=new om(new Float32Array(4*kt*Vi),kt,Vi,Os,Jo);this.shapesDataTexture.value=a}let i=this.shapesDataTexture.value,t=i.image.data;i.needsUpdate=!0;let e=0,r=this.data.geometry.blendRange,o=SR.copy(this.matrixWorld).invert(),n=0;OR.call(this,a=>{if(a.visible===!1)return!0;let s;if(a instanceof Ii)return;if(a instanceof ps||a instanceof Ss)return;a instanceof Lr?s=a.object:s=a;let l=a.data?.cloner;if(De.is(a)&&l&&!l.hideBase&&l.type!=="radial"&&l.disabled!==!0||!(s instanceof et))return;let c=s.geometry.userData.parameters,u=c.shapeBlendNode;if(u===void 0)return;if(wR.multiplyMatrices(o,a.matrixWorld).decompose(Nd,Ps,zi),c.type==="TorusGeometry"&&c.arc!==360){let v=c.arc*Math.PI/180;v=v/4,Ps.multiply(PR.set(0,0,Math.sin(v),Math.cos(v)))}let d=u.overrideGlobalBlend?u.blendRange:r;d=d/this.bboxSize*2,t[n*4]=(Nd.x-this.bboxOffset)/this.bboxSize*2,t[n*4+1]=(Nd.y-this.bboxOffset)/this.bboxSize*2,t[n*4+2]=(Nd.z-this.bboxOffset)/this.bboxSize*2,t[n*4+3]=u.operation===0?1:u.operation===2?-1:-2,t[kt*4+n*4]=-Ps.x,t[kt*4+n*4+1]=-Ps.y,t[kt*4+n*4+2]=-Ps.z,t[kt*4+n*4+3]=Ps.w;let f=new Float32Array(4),h=0;if(c.type==="SphereGeometry")c.width===c.height&&c.width===c.depth?f[0]=0:f[0]=1,f[1]=c.width/this.bboxSize,f[2]=c.height/this.bboxSize,f[3]=c.depth/this.bboxSize,e=Math.max(e,f[1]*zi.x+d,f[2]*zi.x+d,f[3]*zi.x+d);else if(c.type==="CubeGeometry"){h=c.cornerRadius;let v=c.width,w=c.height,O=c.depth;f[0]=2,f[1]=(v-2*h)/this.bboxSize,f[2]=(w-2*h)/this.bboxSize,f[3]=(O-2*h)/this.bboxSize,e=Math.max(e,Math.sqrt(v**2+w**2+O**2)/this.bboxSize*zi.x+d)}else if(c.type==="CylinderGeometry"){h=c.cornerRadius;let v=c.height,w=c.radiusBottom,O=c.radiusTop;if(O>=w){let S=Math.atan2(O-w,v),T=(Math.PI/2-S)/2;O-=h/Math.tan(T),w-=h*Math.tan(T)}else if(w>O){let S=Math.atan2(w-O,v),T=(Math.PI/2-S)/2;O-=h*Math.tan(T),w-=h/Math.tan(T)}f[1]=(c.height-2*h)/this.bboxSize,w===O?(f[0]=3,f[2]=w/this.bboxSize*2):(f[0]=4,f[2]=w/this.bboxSize*2,f[3]=O/this.bboxSize*2),e=Math.max(e,f[1]*4*zi.x+d)}else if(c.type==="TorusGeometry"){if(f[0]=5,f[1]=(c.width-c.depth)/this.bboxSize,f[2]=c.depth/this.bboxSize,c.arc!==360){f[0]=6,f[3]=f[1],t[kt*12+n*4+3]=f[2];let v=2*Math.atan2(f[2]/2,f[1]),w=c.arc*Math.PI/180/2-v;f[1]=Math.sin(w),f[2]=Math.cos(w)}e=Math.max(e,c.width*zi.x/this.bboxSize+d)}t.set(f,kt*8+n*4),t[kt*12+n*4]=d,t[kt*12+n*4+1]=h/this.bboxSize*2,t[kt*12+n*4+2]=zi.x;let m=s.material,y=m.uniforms.nodeU0.node.value,b=m.uniforms.nodeU1.value;u.operation!==0&&!u.useColor&&(b=-1),t[kt*16+n*4]=y.r,t[kt*16+n*4+1]=y.g,t[kt*16+n*4+2]=y.b,t[kt*16+n*4+3]=b,b<1&&this.material.defines.SHAPEBLEND_C===1&&(this.material.transparent=!0),n++}),this.npart=n,this.spatialPassUniforms.span.value=e*1.4}import{Matrix4 as MR,Ray as IR,Raycaster as ER}from"three";var mS=1<<9;function fS(i,t){let e=!1,r=i.layers.mask&mS,o=t.getLayersOfType("transmission"),n=t.getLayersOfType("outline");return n.length>0&&(i.layers.set(8),o.length>0&&i.layers.enable(3),e=!0,ss(i),as(i)),o.length===0&&n.length===0&&i.layers.set(0),r&&i.layers.set(9),i instanceof ir&&i.needsAO&&i.layers.enable(5),e}function hS(i,t){if(!t.layers)return!1;let e=i.layers.mask&mS,r=!1,o=t.getLayersOfType("transmission").filter(a=>a.data.visible),n=t.getLayersOfType("outline").filter(a=>a.data.visible);return o.length>0&&(i.layers.set(3),n.length>0&&i.layers.enable(8),r=!0),o.length===0&&n.length===0&&i.layers.set(0),e&&i.layers.set(9),i.needsAO&&i.layers.enable(5),r}function yS(i){let t=!1;return i.traverseEntity(e=>{if(e instanceof ir)if(Array.isArray(e.material))for(let r=0;r<e.material.length;r++)fS(e,e.material[r])&&(t=!0);else fS(e,e.material)&&(t=!0)}),t}function gS(i){let t=!1;return i.traverseEntity(e=>{if(e instanceof ir)if(Array.isArray(e.material))for(let r=0;r<e.material.length;r++)hS(e,e.material[r])&&(t=!0);else hS(e,e.material)&&(t=!0)}),t}var NR=new ER,DR=new MR,_R=new IR;function Rl(i,t,e,r=!1){let o=i.cloner;if(o)for(let n of o.children){let a=DR.copy(n.matrixWorld).invert(),s=_R.copy(t.ray).applyMatrix4(a),l=i.matrixWorld;s.applyMatrix4(l);let c=NR;c.set(s.origin,s.direction),c.near=t.near,c.far=t.far;let u=c.intersectObject(i,!1);u.length>0&&e.push({...u[0],object:r?n:i})}}var _d=class{constructor(){this._constraints=new Map}setConstraint(t,e){e===null?this._constraints.delete(t):this._constraints.set(t,e)}removeDependencies(t){this._constraints.delete(t)}applyConstraints(t){let e=new Set;this._constraints.forEach((r,o)=>{let n=[o,r],a=r;for(;this._constraints.has(a);){if(a=this._constraints.get(a),n.includes(a)){console.warn(`circular dependency detected: ${n.join(" -> ")}`);break}e.has(a)||n.push(a)}for(let s=n.length-2;s>=0;s--)if(!e.has(n[s])){let l=t.find(n[s]);l?l.applyPathSnapping(t):console.warn(`missing entity ${n[s]}`),e.add(n[s])}})}findDependency(t,e){let r=t;for(;this._constraints.has(r);)if(r=this._constraints.get(r),r===e)return!0;return!1}};var xS="AGFzbQEAAAAADwhkeWxpbmsuMAEEAAAAAAETA2AAAGAIf39/f39/f38AYAABfwISAQNlbnYGbWVtb3J5AgMAgIAEAwQDAAECBzkDEV9fd2FzbV9jYWxsX2N0b3JzAAALc29ydEluZGV4ZXMAARNlbXNjcmlwdGVuX3Rsc19pbml0AAIK3gMDAwABC9IDAwF/BnwBfgJAIAdFDQAgAysDUCEMIAMrAzAhDSADKwMQIQ5BACEDRP///////+9/IQtEAAAAAAAAEAAhCgNAIAIgA0ECdGoCfyAOIAEgA0EMbGoiCCoCALuiIA0gCCoCBLuioCAMIAgqAgi7oqBEAAAAAAAAsECiIgmZRAAAAAAAAOBBYwRAIAmqDAELQYCAgIB4CzYCACAJIAsgCSALYxshCyAJIAogCSAKZBshCiADQQFqIgMgB0cNAAsgB0UNACAGuCAKIAuhoyEJQQAhAwNAAn8gCSACIANBAnRqIgEoAgC3IAuhoiIKmUQAAAAAAADgQWMEQCAKqgwBC0GAgICAeAshCCABIAg2AgAgBCAIQQJ0aiIBIAEoAgBBAWo2AgAgA0EBaiIDIAdHDQALCyAGQQJPBEAgBCgCACEIQQEhAwNAIAQgA0ECdGoiASABKAIAIAhqIgg2AgAgA0EBaiIDIAZHDQALCyAHQQFrIgGtIQ8DQCAEIAIgD6dBAnQiA2ooAgBBAnRqIgcgBygCAEEBayIHNgIAIAUgASAHa0ECdGogACADaigCADYCACAPUCEDIA9CAX0hDyADRQ0ACyAGBEAgBEEAIAZBAnT8CwALCwQAQQAL";var Oo=class{};qi(Oo,"DepthMapRange",1<<16),qi(Oo,"MemoryPageSize",65536),qi(Oo,"BytesPerFloat",4),qi(Oo,"BytesPerInt",4);function RR(i){let t,e,r,o,n,a,s,l,c,u,p,d,f,h,m,y;function b(I){let N=new Float64Array(u,a,16);for(let R=0;R<16;R++)N[R]=I[R];let _;if(r>1){t.exports.sortIndexes(o,n,c,a,s,l,d.DepthMapRange,r);let R=new Uint32Array(r);_=R.buffer,R.set(new Uint32Array(u,l,r))}else if(r===1){let R=new Uint32Array(r);R[0]=new Uint32Array(u,o,e)[0],_=R.buffer}else _=new ArrayBuffer(0);i.postMessage({sortDone:!0,indexesBuffer:_},[_])}function v(I,N,_){let R=new Float32Array(u,n,e*3);r=0;let V=new Uint32Array(u,o,e);for(let U=0;U<_.length-1;U++){let B=N[U],q=I[U].elements,j=B.filter(H=>H.enabled&&H.mode==="Include").map(H=>H.type==="Box"?T(H):D(H)),F=B.filter(H=>H.enabled&&H.mode==="Exclude").map(H=>H.type==="Box"?T(H):D(H));for(let H=_[U];H<_[U+1];H++){let W=f[H*3],ee=f[H*3+1],te=f[H*3+2];if((j.length===0||O(W,ee,te,j))&&(F.length===0||!O(W,ee,te,F))){let Y=1/(q[3]*W+q[7]*ee+q[11]*te+q[15]);R[r*3]=(q[0]*W+q[4]*ee+q[8]*te+q[12])*Y,R[r*3+1]=(q[1]*W+q[5]*ee+q[9]*te+q[13])*Y,R[r*3+2]=(q[2]*W+q[6]*ee+q[10]*te+q[14])*Y,V[r]=H,r++}}}}function w(I,N){let _=[],R=N.filter(B=>B.enabled&&B.mode==="Include").map(B=>B.type==="Box"?T(B):D(B)),V=N.filter(B=>B.enabled&&B.mode==="Exclude").map(B=>B.type==="Box"?T(B):D(B)),U=I.length;for(let B=0;B<U;B+=3){let q=I[B],j=I[B+1],F=I[B+2];(R.length===0||O(q,j,F,R))&&(V.length===0||!O(q,j,F,V))||_.push(B/3)}return _}function O(I,N,_,R,V){return R[V==="Intersect"?"every":"some"](U=>{let B=S(I,N,_,U.invRotationMatrix,U.cropCenter);return Array.isArray(U)?g(B.x,B.y,B.z,U):E(B.x,B.y,B.z,U)})}function S(I,N,_,R,V){let U=I-V[0],B=N-V[1],q=_-V[2],j=1/(R[3]*U+R[7]*B+R[11]*q+R[15]);return{x:(R[0]*U+R[4]*B+R[8]*q+R[12])*j+V[0],y:(R[1]*U+R[5]*B+R[9]*q+R[13])*j+V[1],z:(R[2]*U+R[6]*B+R[10]*q+R[14])*j+V[2]}}function T(I){let N=I.cropSize[0]/2,_=I.cropSize[1]/2,R=I.cropSize[2]/2,V=[I.cropCenter[0]-N,I.cropCenter[1]-_,I.cropCenter[2]-R,I.cropCenter[0]+N,I.cropCenter[1]+_,I.cropCenter[2]+R],U=M(I.cropRotation);return Object.assign(V,{invRotationMatrix:U,cropCenter:I.cropCenter})}function M(I){let N=[],_=I[0]*Math.PI/180,R=I[1]*Math.PI/180,V=I[2]*Math.PI/180,U=Math.cos(_),B=Math.sin(_),q=Math.cos(R),j=Math.sin(R),F=Math.cos(V),H=Math.sin(V),W=U*F,ee=U*H,te=B*F,Y=B*H;return N[0]=q*F,N[1]=-q*H,N[2]=j,N[4]=ee+te*j,N[5]=W-Y*j,N[6]=-B*q,N[8]=Y-W*j,N[9]=te+ee*j,N[10]=U*q,N[12]=0,N[13]=0,N[14]=0,N[3]=0,N[7]=0,N[11]=0,N[15]=1,N}function g(I,N,_,R){return I>=R[0]&&I<=R[3]&&N>=R[1]&&N<=R[4]&&_>=R[2]&&_<=R[5]}function D(I){let N=2/I.cropSize[0],_=2/I.cropSize[1],R=2/I.cropSize[2],V=M(I.cropRotation);return{invRadiusX:N,invRadiusY:_,invRadiusZ:R,cropCenter:I.cropCenter,invRotationMatrix:V}}function E(I,N,_,R){let V=(I-R.cropCenter[0])*R.invRadiusX,U=(N-R.cropCenter[1])*R.invRadiusY,B=(_-R.cropCenter[2])*R.invRadiusZ;return V*V+U*U+B*B<=1}i.onmessage=I=>{if(I.data.getCroppedIndexes){let N=new Uint32Array(w(new Float32Array(I.data.positions),I.data.crops)).buffer;i.postMessage({outOfBoundsIndexes:N},[N])}else if(I.data.positions)p=I.data.positions,f=new Float32Array(p),m=I.data.meshMatrixWorlds,y=I.data.cropsArray,h=I.data.meshIndexIntervals,v(m,y,h),i.postMessage({sortSetupComplete:!0});else if(I.data.sort||I.data.newMatrixWorlds||I.data.newCropsArray)(I.data.newMatrixWorlds||I.data.newCropsArray)&&(y=I.data.newCropsArray||y,m=I.data.newMatrixWorlds||m,v(m,y,h)),b(I.data.sort.view,I.data.sort.cameraPosition);else if(I.data.init){d=I.data.init.Constants,e=I.data.init.splatCount;let N=d.BytesPerInt,_=d.BytesPerFloat*3,R=new Uint8Array(I.data.init.sorterWasmBytes),V=N+_,U=e*V,B=e*d.BytesPerInt*2+d.DepthMapRange*d.BytesPerInt*2,q=d.MemoryPageSize*32,j=U+B+q,F=Math.floor(j/d.MemoryPageSize)+1,H={module:{},env:{memory:new WebAssembly.Memory({initial:F*2,maximum:F*3,shared:!0})}};WebAssembly.compile(R).then(W=>WebAssembly.instantiate(W,H)).then(W=>{t=W,o=0,n=e*N,a=n+e*_,c=a+16*d.BytesPerFloat*2,s=c+e*d.BytesPerInt,l=s+d.DepthMapRange*d.BytesPerInt,u=H.env.memory.buffer,i.postMessage({sortSetupPhase1Complete:!0})})}}}function bS(i){let t=new Worker(URL.createObjectURL(new Blob(["(",RR.toString(),")(self)"],{type:"application/javascript"}))),e=atob(xS),r=new Uint8Array(e.length);for(let o=0;o<e.length;o++)r[o]=e.charCodeAt(o);return t.postMessage({init:{sorterWasmBytes:r.buffer,splatCount:i,Constants:{BytesPerFloat:Oo.BytesPerFloat,BytesPerInt:Oo.BytesPerInt,DepthMapRange:Oo.DepthMapRange,MemoryPageSize:Oo.MemoryPageSize}}}),t}import{Matrix4 as TS,Quaternion as CS,Vector2 as KR,Vector3 as Ts}from"three";import{BufferAttribute as LR,BufferGeometry as BR,Color as VR,DataTexture as Ld,DataUtils as zR,DoubleSide as GR,DynamicDrawUsage as FR,FloatType as SS,HalfFloatType as jR,InstancedBufferAttribute as UR,InstancedBufferGeometry as kR,Mesh as HR,NormalBlending as WR,RGBAFormat as qR,RGBAIntegerFormat as $R,RGFormat as wS,ShaderMaterial as XR,UnsignedIntType as YR,Vector2 as Gi}from"three";var Rd=function(){let i=new Float32Array(1),t=new Int32Array(i.buffer);return function(e){return i[0]=e,t[0]}}(),vS=function(i,t,e,r){return i+(t<<8)+(e<<16)+(r<<24)};var Bd=new Gi;function Vd(i){let t=!1;return i.scene.objects.traverse((e,r)=>{if(r.visible===!1)return!0;r.type==="Splat"&&(t=!0)}),t}var Fi=class extends HR{constructor(e,r,o,n,a=!1,s=1,l,c){super(o,n);this.splatCount=r,this.meshIndexIntervals=l,this.meshMatrixWorlds=c,this.splatBuffers=e,this.geometry=o,this.material=n,this.splatDataTextures=null,this.halfPrecisionCovariancesOnGPU=a,this.devicePixelRatio=s,this.resetLocalSplatDataAndTexturesFromSplatBuffer()}static buildMesh(e,r,o=!1,n=1,a,s){let l=Fi.buildGeomtery(r),c=Fi.buildMaterial(a);return new Fi(e,r,l,c,o,n,a,s)}static buildMaterial(e){let r=`
|
|
4225
|
+
`,r.pyramidTextureSize.value=new om(this.pyramidRenderTarget.width,this.pyramidRenderTarget.height),Object.assign(n.uniforms,r)};this.material.shapeBlendhack=o,this.material.root.shapeBlendhack=o}},Vi=nm;Vi.streamCompaction=new Ed;var wR=new dS,PR=new dS,Os=new pS,Gi=new _d,Dd=new _d,OR=new pS;function TR(i,t=0){let e=this.children.length;for(;e--;){let r=this.children[e];Go.is(r)&&fS.call(r,i,t+1)}}function fS(i,t=0){if(i(this,t)!==!0){let r=this.children.length;for(;r--;){let o=this.children[r];Go.is(o)&&fS.call(o,i,t+1)}}}function CR(){if(this.shapesDataTexture.value===void 0){let a=new im(new Float32Array(4*Ht*zi),Ht,zi,Ts,ei);this.shapesDataTexture.value=a}let i=this.shapesDataTexture.value,t=i.image.data;i.needsUpdate=!0;let e=0,r=this.data.geometry.blendRange,o=wR.copy(this.matrixWorld).invert(),n=0;TR.call(this,a=>{if(a.visible===!1)return!0;let s;if(a instanceof Ei)return;if(a instanceof fs||a instanceof ws)return;a instanceof Br?s=a.object:s=a;let l=a.data?.cloner;if(De.is(a)&&l&&!l.hideBase&&l.type!=="radial"&&l.disabled!==!0||!(s instanceof et))return;let c=s.geometry.userData.parameters,u=c.shapeBlendNode;if(u===void 0)return;if(PR.multiplyMatrices(o,a.matrixWorld).decompose(Dd,Os,Gi),c.type==="TorusGeometry"&&c.arc!==360){let v=c.arc*Math.PI/180;v=v/4,Os.multiply(OR.set(0,0,Math.sin(v),Math.cos(v)))}let p=u.overrideGlobalBlend?u.blendRange:r;p=p/this.bboxSize*2,t[n*4]=(Dd.x-this.bboxOffset)/this.bboxSize*2,t[n*4+1]=(Dd.y-this.bboxOffset)/this.bboxSize*2,t[n*4+2]=(Dd.z-this.bboxOffset)/this.bboxSize*2,t[n*4+3]=u.operation===0?1:u.operation===2?-1:-2,t[Ht*4+n*4]=-Os.x,t[Ht*4+n*4+1]=-Os.y,t[Ht*4+n*4+2]=-Os.z,t[Ht*4+n*4+3]=Os.w;let f=new Float32Array(4),h=0;if(c.type==="SphereGeometry")c.width===c.height&&c.width===c.depth?f[0]=0:f[0]=1,f[1]=c.width/this.bboxSize,f[2]=c.height/this.bboxSize,f[3]=c.depth/this.bboxSize,e=Math.max(e,f[1]*Gi.x+p,f[2]*Gi.x+p,f[3]*Gi.x+p);else if(c.type==="CubeGeometry"){h=c.cornerRadius;let v=c.width,w=c.height,O=c.depth;f[0]=2,f[1]=(v-2*h)/this.bboxSize,f[2]=(w-2*h)/this.bboxSize,f[3]=(O-2*h)/this.bboxSize,e=Math.max(e,Math.sqrt(v**2+w**2+O**2)/this.bboxSize*Gi.x+p)}else if(c.type==="CylinderGeometry"){h=c.cornerRadius;let v=c.height,w=c.radiusBottom,O=c.radiusTop;if(O>=w){let S=Math.atan2(O-w,v),T=(Math.PI/2-S)/2;O-=h/Math.tan(T),w-=h*Math.tan(T)}else if(w>O){let S=Math.atan2(w-O,v),T=(Math.PI/2-S)/2;O-=h*Math.tan(T),w-=h/Math.tan(T)}f[1]=(c.height-2*h)/this.bboxSize,w===O?(f[0]=3,f[2]=w/this.bboxSize*2):(f[0]=4,f[2]=w/this.bboxSize*2,f[3]=O/this.bboxSize*2),e=Math.max(e,f[1]*4*Gi.x+p)}else if(c.type==="TorusGeometry"){if(f[0]=5,f[1]=(c.width-c.depth)/this.bboxSize,f[2]=c.depth/this.bboxSize,c.arc!==360){f[0]=6,f[3]=f[1],t[Ht*12+n*4+3]=f[2];let v=2*Math.atan2(f[2]/2,f[1]),w=c.arc*Math.PI/180/2-v;f[1]=Math.sin(w),f[2]=Math.cos(w)}e=Math.max(e,c.width*Gi.x/this.bboxSize+p)}t.set(f,Ht*8+n*4),t[Ht*12+n*4]=p,t[Ht*12+n*4+1]=h/this.bboxSize*2,t[Ht*12+n*4+2]=Gi.x;let m=s.material,y=m.uniforms.nodeU0.node.value,x=m.uniforms.nodeU1.value;u.operation!==0&&!u.useColor&&(x=-1),t[Ht*16+n*4]=y.r,t[Ht*16+n*4+1]=y.g,t[Ht*16+n*4+2]=y.b,t[Ht*16+n*4+3]=x,x<1&&this.material.defines.SHAPEBLEND_C===1&&(this.material.transparent=!0),n++}),this.npart=n,this.spatialPassUniforms.span.value=e*1.4}import{Matrix4 as IR,Ray as ER,Raycaster as NR}from"three";var yS=1<<9;function hS(i,t){let e=!1,r=i.layers.mask&yS,o=t.getLayersOfType("transmission"),n=t.getLayersOfType("outline");return n.length>0&&(i.layers.set(8),o.length>0&&i.layers.enable(3),e=!0,ls(i),ss(i)),o.length===0&&n.length===0&&i.layers.set(0),r&&i.layers.set(9),i instanceof nr&&i.needsAO&&i.layers.enable(5),e}function mS(i,t){if(!t.layers)return!1;let e=i.layers.mask&yS,r=!1,o=t.getLayersOfType("transmission").filter(a=>a.data.visible),n=t.getLayersOfType("outline").filter(a=>a.data.visible);return o.length>0&&(i.layers.set(3),n.length>0&&i.layers.enable(8),r=!0),o.length===0&&n.length===0&&i.layers.set(0),e&&i.layers.set(9),i.needsAO&&i.layers.enable(5),r}function gS(i){let t=!1;return i.traverseEntity(e=>{if(e instanceof nr)if(Array.isArray(e.material))for(let r=0;r<e.material.length;r++)hS(e,e.material[r])&&(t=!0);else hS(e,e.material)&&(t=!0)}),t}function xS(i){let t=!1;return i.traverseEntity(e=>{if(e instanceof nr)if(Array.isArray(e.material))for(let r=0;r<e.material.length;r++)mS(e,e.material[r])&&(t=!0);else mS(e,e.material)&&(t=!0)}),t}var DR=new NR,_R=new IR,RR=new ER;function Ll(i,t,e,r=!1){let o=i.cloner;if(o)for(let n of o.children){let a=_R.copy(n.matrixWorld).invert(),s=RR.copy(t.ray).applyMatrix4(a),l=i.matrixWorld;s.applyMatrix4(l);let c=DR;c.set(s.origin,s.direction),c.near=t.near,c.far=t.far;let u=c.intersectObject(i,!1);u.length>0&&e.push({...u[0],object:r?n:i})}}var Rd=class{constructor(){this._constraints=new Map}setConstraint(t,e){e===null?this._constraints.delete(t):this._constraints.set(t,e)}removeDependencies(t){this._constraints.delete(t)}applyConstraints(t){let e=new Set;this._constraints.forEach((r,o)=>{let n=[o,r],a=r;for(;this._constraints.has(a);){if(a=this._constraints.get(a),n.includes(a)){console.warn(`circular dependency detected: ${n.join(" -> ")}`);break}e.has(a)||n.push(a)}for(let s=n.length-2;s>=0;s--)if(!e.has(n[s])){let l=t.find(n[s]);l?l.applyPathSnapping(t):console.warn(`missing entity ${n[s]}`),e.add(n[s])}})}findDependency(t,e){let r=t;for(;this._constraints.has(r);)if(r=this._constraints.get(r),r===e)return!0;return!1}};var bS="AGFzbQEAAAAADwhkeWxpbmsuMAEEAAAAAAETA2AAAGAIf39/f39/f38AYAABfwISAQNlbnYGbWVtb3J5AgMAgIAEAwQDAAECBzkDEV9fd2FzbV9jYWxsX2N0b3JzAAALc29ydEluZGV4ZXMAARNlbXNjcmlwdGVuX3Rsc19pbml0AAIK3gMDAwABC9IDAwF/BnwBfgJAIAdFDQAgAysDUCEMIAMrAzAhDSADKwMQIQ5BACEDRP///////+9/IQtEAAAAAAAAEAAhCgNAIAIgA0ECdGoCfyAOIAEgA0EMbGoiCCoCALuiIA0gCCoCBLuioCAMIAgqAgi7oqBEAAAAAAAAsECiIgmZRAAAAAAAAOBBYwRAIAmqDAELQYCAgIB4CzYCACAJIAsgCSALYxshCyAJIAogCSAKZBshCiADQQFqIgMgB0cNAAsgB0UNACAGuCAKIAuhoyEJQQAhAwNAAn8gCSACIANBAnRqIgEoAgC3IAuhoiIKmUQAAAAAAADgQWMEQCAKqgwBC0GAgICAeAshCCABIAg2AgAgBCAIQQJ0aiIBIAEoAgBBAWo2AgAgA0EBaiIDIAdHDQALCyAGQQJPBEAgBCgCACEIQQEhAwNAIAQgA0ECdGoiASABKAIAIAhqIgg2AgAgA0EBaiIDIAZHDQALCyAHQQFrIgGtIQ8DQCAEIAIgD6dBAnQiA2ooAgBBAnRqIgcgBygCAEEBayIHNgIAIAUgASAHa0ECdGogACADaigCADYCACAPUCEDIA9CAX0hDyADRQ0ACyAGBEAgBEEAIAZBAnT8CwALCwQAQQAL";var To=class{};$i(To,"DepthMapRange",1<<16),$i(To,"MemoryPageSize",65536),$i(To,"BytesPerFloat",4),$i(To,"BytesPerInt",4);function LR(i){let t,e,r,o,n,a,s,l,c,u,d,p,f,h,m,y;function x(I){let N=new Float64Array(u,a,16);for(let R=0;R<16;R++)N[R]=I[R];let _;if(r>1){t.exports.sortIndexes(o,n,c,a,s,l,p.DepthMapRange,r);let R=new Uint32Array(r);_=R.buffer,R.set(new Uint32Array(u,l,r))}else if(r===1){let R=new Uint32Array(r);R[0]=new Uint32Array(u,o,e)[0],_=R.buffer}else _=new ArrayBuffer(0);i.postMessage({sortDone:!0,indexesBuffer:_},[_])}function v(I,N,_){let R=new Float32Array(u,n,e*3);r=0;let V=new Uint32Array(u,o,e);for(let U=0;U<_.length-1;U++){let B=N[U],q=I[U].elements,j=B.filter(H=>H.enabled&&H.mode==="Include").map(H=>H.type==="Box"?T(H):D(H)),F=B.filter(H=>H.enabled&&H.mode==="Exclude").map(H=>H.type==="Box"?T(H):D(H));for(let H=_[U];H<_[U+1];H++){let W=f[H*3],ee=f[H*3+1],te=f[H*3+2];if((j.length===0||O(W,ee,te,j))&&(F.length===0||!O(W,ee,te,F))){let Y=1/(q[3]*W+q[7]*ee+q[11]*te+q[15]);R[r*3]=(q[0]*W+q[4]*ee+q[8]*te+q[12])*Y,R[r*3+1]=(q[1]*W+q[5]*ee+q[9]*te+q[13])*Y,R[r*3+2]=(q[2]*W+q[6]*ee+q[10]*te+q[14])*Y,V[r]=H,r++}}}}function w(I,N){let _=[],R=N.filter(B=>B.enabled&&B.mode==="Include").map(B=>B.type==="Box"?T(B):D(B)),V=N.filter(B=>B.enabled&&B.mode==="Exclude").map(B=>B.type==="Box"?T(B):D(B)),U=I.length;for(let B=0;B<U;B+=3){let q=I[B],j=I[B+1],F=I[B+2];(R.length===0||O(q,j,F,R))&&(V.length===0||!O(q,j,F,V))||_.push(B/3)}return _}function O(I,N,_,R,V){return R[V==="Intersect"?"every":"some"](U=>{let B=S(I,N,_,U.invRotationMatrix,U.cropCenter);return Array.isArray(U)?g(B.x,B.y,B.z,U):E(B.x,B.y,B.z,U)})}function S(I,N,_,R,V){let U=I-V[0],B=N-V[1],q=_-V[2],j=1/(R[3]*U+R[7]*B+R[11]*q+R[15]);return{x:(R[0]*U+R[4]*B+R[8]*q+R[12])*j+V[0],y:(R[1]*U+R[5]*B+R[9]*q+R[13])*j+V[1],z:(R[2]*U+R[6]*B+R[10]*q+R[14])*j+V[2]}}function T(I){let N=I.cropSize[0]/2,_=I.cropSize[1]/2,R=I.cropSize[2]/2,V=[I.cropCenter[0]-N,I.cropCenter[1]-_,I.cropCenter[2]-R,I.cropCenter[0]+N,I.cropCenter[1]+_,I.cropCenter[2]+R],U=M(I.cropRotation);return Object.assign(V,{invRotationMatrix:U,cropCenter:I.cropCenter})}function M(I){let N=[],_=I[0]*Math.PI/180,R=I[1]*Math.PI/180,V=I[2]*Math.PI/180,U=Math.cos(_),B=Math.sin(_),q=Math.cos(R),j=Math.sin(R),F=Math.cos(V),H=Math.sin(V),W=U*F,ee=U*H,te=B*F,Y=B*H;return N[0]=q*F,N[1]=-q*H,N[2]=j,N[4]=ee+te*j,N[5]=W-Y*j,N[6]=-B*q,N[8]=Y-W*j,N[9]=te+ee*j,N[10]=U*q,N[12]=0,N[13]=0,N[14]=0,N[3]=0,N[7]=0,N[11]=0,N[15]=1,N}function g(I,N,_,R){return I>=R[0]&&I<=R[3]&&N>=R[1]&&N<=R[4]&&_>=R[2]&&_<=R[5]}function D(I){let N=2/I.cropSize[0],_=2/I.cropSize[1],R=2/I.cropSize[2],V=M(I.cropRotation);return{invRadiusX:N,invRadiusY:_,invRadiusZ:R,cropCenter:I.cropCenter,invRotationMatrix:V}}function E(I,N,_,R){let V=(I-R.cropCenter[0])*R.invRadiusX,U=(N-R.cropCenter[1])*R.invRadiusY,B=(_-R.cropCenter[2])*R.invRadiusZ;return V*V+U*U+B*B<=1}i.onmessage=I=>{if(I.data.getCroppedIndexes){let N=new Uint32Array(w(new Float32Array(I.data.positions),I.data.crops)).buffer;i.postMessage({outOfBoundsIndexes:N},[N])}else if(I.data.positions)d=I.data.positions,f=new Float32Array(d),m=I.data.meshMatrixWorlds,y=I.data.cropsArray,h=I.data.meshIndexIntervals,v(m,y,h),i.postMessage({sortSetupComplete:!0});else if(I.data.sort||I.data.newMatrixWorlds||I.data.newCropsArray)(I.data.newMatrixWorlds||I.data.newCropsArray)&&(y=I.data.newCropsArray||y,m=I.data.newMatrixWorlds||m,v(m,y,h)),x(I.data.sort.view,I.data.sort.cameraPosition);else if(I.data.init){p=I.data.init.Constants,e=I.data.init.splatCount;let N=p.BytesPerInt,_=p.BytesPerFloat*3,R=new Uint8Array(I.data.init.sorterWasmBytes),V=N+_,U=e*V,B=e*p.BytesPerInt*2+p.DepthMapRange*p.BytesPerInt*2,q=p.MemoryPageSize*32,j=U+B+q,F=Math.floor(j/p.MemoryPageSize)+1,H={module:{},env:{memory:new WebAssembly.Memory({initial:F*2,maximum:F*3,shared:!0})}};WebAssembly.compile(R).then(W=>WebAssembly.instantiate(W,H)).then(W=>{t=W,o=0,n=e*N,a=n+e*_,c=a+16*p.BytesPerFloat*2,s=c+e*p.BytesPerInt,l=s+p.DepthMapRange*p.BytesPerInt,u=H.env.memory.buffer,i.postMessage({sortSetupPhase1Complete:!0})})}}}function vS(i){let t=new Worker(URL.createObjectURL(new Blob(["(",LR.toString(),")(self)"],{type:"application/javascript"}))),e=atob(bS),r=new Uint8Array(e.length);for(let o=0;o<e.length;o++)r[o]=e.charCodeAt(o);return t.postMessage({init:{sorterWasmBytes:r.buffer,splatCount:i,Constants:{BytesPerFloat:To.BytesPerFloat,BytesPerInt:To.BytesPerInt,DepthMapRange:To.DepthMapRange,MemoryPageSize:To.MemoryPageSize}}}),t}import{Matrix4 as CS,Quaternion as AS,Vector2 as QR,Vector3 as Cs}from"three";import{BufferAttribute as BR,BufferGeometry as VR,Color as zR,DataTexture as Bd,DataUtils as GR,DoubleSide as FR,DynamicDrawUsage as jR,FloatType as wS,HalfFloatType as UR,InstancedBufferAttribute as kR,InstancedBufferGeometry as HR,Mesh as WR,NormalBlending as qR,RGBAFormat as $R,RGBAIntegerFormat as XR,RGFormat as PS,ShaderMaterial as YR,UnsignedIntType as KR,Vector2 as Fi}from"three";var Ld=function(){let i=new Float32Array(1),t=new Int32Array(i.buffer);return function(e){return i[0]=e,t[0]}}(),SS=function(i,t,e,r){return i+(t<<8)+(e<<16)+(r<<24)};var Vd=new Fi;function zd(i){let t=!1;return i.scene.objects.traverse((e,r)=>{if(r.visible===!1)return!0;r.type==="Splat"&&(t=!0)}),t}var ji=class extends WR{constructor(e,r,o,n,a=!1,s=1,l,c){super(o,n);this.splatCount=r,this.meshIndexIntervals=l,this.meshMatrixWorlds=c,this.splatBuffers=e,this.geometry=o,this.material=n,this.splatDataTextures=null,this.halfPrecisionCovariancesOnGPU=a,this.devicePixelRatio=s,this.resetLocalSplatDataAndTexturesFromSplatBuffer()}static buildMesh(e,r,o=!1,n=1,a,s){let l=ji.buildGeomtery(r),c=ji.buildMaterial(a);return new ji(e,r,l,c,o,n,a,s)}static buildMaterial(e){let r=`
|
|
4226
4226
|
precision highp float;
|
|
4227
4227
|
#include <common>
|
|
4228
4228
|
|
|
@@ -4376,4 +4376,4 @@ void main() {
|
|
|
4376
4376
|
A = exp(A) * vColor.a;
|
|
4377
4377
|
gl_FragColor = vec4(color.rgb, A);
|
|
4378
4378
|
gVelocity = vec4(0.0); // so it is ignored by TAA
|
|
4379
|
-
}`,n={covariancesTexture:{type:"t",value:null},centersColorsTexture:{type:"t",value:null},meshIndexIntervals:{value:e},meshMatrixWorldsTexture:{type:"t",value:null},focal:{type:"v2",value:new Gi},viewport:{type:"v2",value:new Gi},basisViewport:{type:"v2",value:new Gi},debugColor:{type:"v3",value:new VR},covariancesTextureSize:{type:"v2",value:new Gi(1024,1024)},centersColorsTextureSize:{type:"v2",value:new Gi(1024,1024)},orthoZoom:{type:"f",value:-1}};return new XR({uniforms:n,vertexShader:r,fragmentShader:o,transparent:!0,alphaTest:1,blending:WR,depthTest:!0,depthWrite:!1,side:GR})}static buildGeomtery(e){let r=new BR;r.setIndex([0,1,2,0,2,3]);let o=new Float32Array(4*3),n=new LR(o,3);r.setAttribute("position",n),n.setXYZ(0,-1,-1,0),n.setXYZ(1,-1,1,0),n.setXYZ(2,1,1,0),n.setXYZ(3,1,-1,0),n.needsUpdate=!0;let a=new kR().copy(r),s=new Uint32Array(e),l=new UR(s,1,!1);return l.setUsage(FR),a.setAttribute("splatIndex",l),a.instanceCount=e,a}resetLocalSplatDataAndTexturesFromSplatBuffer(){this.updateLocalSplatDataFromSplatBuffer(),this.allocateAndStoreLocalSplatDataInTextures()}updateLocalSplatDataFromSplatBuffer(){this.splatBuffers.forEach(n=>n.buildPreComputedBuffers()),this.covariances=new Float32Array(this.splatCount*6),this.colors=new Uint8Array(this.splatCount*4),this.centers=new Float32Array(this.splatCount*3);let e=0,r=0,o=0;for(let n of this.splatBuffers){let a=n.nsplats;this.colors.subarray(e,e+a*4).set(n.colorsA),e+=a*4,this.centers.subarray(r,r+a*3).set(n.decoded.xyz.denormDequant().data),r+=a*3,this.covariances.subarray(o,o+a*6).set(new Float32Array(n.precomputedCovarianceBufferData)),o+=a*6}}allocateAndStoreLocalSplatDataInTextures(){let o=this.splatCount,n=new Gi(4096,1024);for(;n.x*n.y*2<o*6;)n.y*=2;let a=new Gi(4096,1024);for(;a.x*a.y*4<o*4;)a.y*=2;let s,l;if(this.halfPrecisionCovariancesOnGPU){l=new Uint16Array(n.x*n.y*2);for(let h=0;h<this.covariances.length;h++)l[h]=zR.toHalfFloat(this.covariances[h]);s=new Ld(l,n.x,n.y,wS,jR)}else l=new Float32Array(n.x*n.y*2),l.set(this.covariances),s=new Ld(l,n.x,n.y,wS,SS);s.needsUpdate=!0,this.material.uniforms.covariancesTexture.value=s,this.material.uniforms.covariancesTextureSize.value.copy(n);let c=new Uint32Array(a.x*a.y*4);for(let h=0;h<o;h++){let m=h*4,y=h*3,b=h*4;c[b]=vS(this.colors[m],this.colors[m+1],this.colors[m+2],this.colors[m+3]),c[b+1]=Rd(this.centers[y]),c[b+2]=Rd(this.centers[y+1]),c[b+3]=Rd(this.centers[y+2])}let u=new Ld(c,a.x,a.y,$R,YR);u.internalFormat="RGBA32UI",u.needsUpdate=!0,this.material.uniforms.centersColorsTexture.value=u,this.material.uniforms.centersColorsTextureSize.value.copy(a);let p=256*4,d=new Float32Array(256*16);for(let h=0;h<this.meshMatrixWorlds.length;h++)d.set(this.meshMatrixWorlds[h].elements,h*16);let f=new Ld(d,p,1,qR,SS);f.needsUpdate=!0,this.material.uniforms.meshMatrixWorldsTexture.value=f,this.material.uniformsNeedUpdate=!0,this.splatDataTextures={covariances:{data:l,texture:s,size:n},centerColors:{data:c,texture:u,size:a},meshMatrixWorlds:{data:d,texture:f}}}updateIndexes(e){let r=this.geometry;r.attributes.splatIndex.set(e),r.attributes.splatIndex.needsUpdate=!0,r.instanceCount=e.length}updateUniforms(e,r,o,n){this.splatCount>0&&(Bd.set(e.x*this.devicePixelRatio,e.y*this.devicePixelRatio),this.material.uniforms.viewport.value.copy(Bd),this.material.uniforms.basisViewport.value.set(2/Bd.x,2/Bd.y),this.material.uniforms.focal.value.set(r,o),this.material.uniforms.orthoZoom.value=n,this.material.uniformsNeedUpdate=!0)}getSplatDataTextures(){return this.splatDataTextures}getSplatCount(){return this.splatCount}getCenters(){return this.centers}getColors(){return this.colors}getCovariances(){return this.covariances}dispose(){this.geometry.dispose(),this.material.dispose(),this.splatDataTextures&&(this.splatDataTextures.covariances.texture.dispose(),this.splatDataTextures.centerColors.texture.dispose(),this.splatDataTextures.meshMatrixWorlds.texture.dispose()),this.removeFromParent()}};var OS,nm=new Promise(i=>{OS=i}),PS=!1;var zd;function am(){if(PS)return;if(zd)return zd;async function i(){let e=await import("./gaussian-splat-compression.js");OS(e),PS=!0}return zd=i(),zd}var AS;nm.then(i=>AS=i);var Vl=class{constructor(t={}){qi(this,"updateView",function(){let t=new TS,e=[],r=new Ts(0,0,-1),o=new Ts(0,0,-1),n=new Ts,a=new Ts;return function(s=!1,l){let c=this.updateMatrixWorldsInWorkerIfNeeded(),u=this.cropsChanged();if(!s){o.set(0,0,-1).applyQuaternion(l.quaternion);let d=!1,f=!1;if(o.dot(r)<=.95&&(d=!0),a.copy(l.position).sub(n).length()>=1&&(f=!0),!d&&!f&&!c&&!u&&!this.needsInitialRender)return}this.needsInitialRender=!1,n.copy(l.position),r.copy(o),t.copy(l.matrixWorld).invert(),t.premultiply(this.dummyPerspectiveMatrix),e[0]=l.position.x,e[1]=l.position.y,e[2]=l.position.z;let p={sort:{view:t.elements,cameraPosition:e,splatRenderCount:this.splatRenderCount,splatSortCount:this.splatRenderCount},...c?{newMatrixWorlds:this.meshMatrixWorlds}:{},...u?{newCropsArray:this.cropsArray}:{}};this.sortRunning?this.queuedMessage=p:(this.queuedMessage=null,this.sortRunning=!0,this.sortWorker.postMessage(p))}}());this.scene=t.scene,this.currentPage=null,this.devicePixelRatio=window.devicePixelRatio,this.sortWorker=null,this.splatRenderCount=0,this.splatSortCount=0,this.splatMesh=null,this.sortRunning=!1,this.meshMatrixWorlds=null,this.meshMatrixWorldsOld=null,this.cropsArray=null,this.splatEntries=null,this.queuedMessage=null,this.needsInitialRender=!0,this.dummyPerspectiveMatrix=new TS().makePerspective(-1,1,-1,1,.1,1e3)}updateSplatMeshUniforms(t,e){let r=new KR;if(this.splatMesh===null)return;this.splatMesh.getSplatCount()>0&&(t.getSize(r),this.cameraFocalLengthX=e.projectionMatrix.elements[0]*this.devicePixelRatio*r.x*.45,this.cameraFocalLengthY=e.projectionMatrix.elements[5]*this.devicePixelRatio*r.y*.45,this.splatMesh.updateUniforms(r,this.cameraFocalLengthX,this.cameraFocalLengthY,e.isPerspectiveCamera?-1:e.zoom*this.devicePixelRatio))}loadSplat(t={}){this.activePage=this.scene.activePage,t.position&&(t.position=new Ts().fromArray(t.position)),t.orientation&&(t.orientation=new CS().fromArray(t.orientation)),t.halfPrecisionCovariances=!!t.halfPrecisionCovariances;let e=[];if(this.splatEntries=e,this.activePage.traverseVisibleEntity(a=>{a.data.type==="Splat"&&e.push(a)}),this.splatMesh&&this.splatMesh.dispose(),e.length===0)return this.splatMesh=null,!1;this.meshMatrixWorlds=e.map(a=>a.matrixWorld),this.meshMatrixWorldsOld=e.map(a=>a.matrixWorld.clone()),this.cropsArray=e.map(a=>a.data.crops.map(s=>s.data));let r=e.map(a=>new AS.GSplineBuffer(new Uint8Array(a.data.buffer).buffer)),o=0,n=[0];for(let a of r)o+=a.getSplatCount(),n.push(o);return this.setupSplatMesh(r,o,t.position,t.orientation,t.halfPrecisionCovariances,this.devicePixelRatio,n,this.meshMatrixWorlds),this.setupSortWorker(o),!0}updateMatrixWorldsInWorkerIfNeeded(){let t=this.splatDataTextures.meshMatrixWorlds.data;for(let e=0;e<this.meshMatrixWorlds.length;e++)t.set(this.meshMatrixWorlds[e].elements,e*16);return this.splatDataTextures.meshMatrixWorlds.texture.needsUpdate=!0,this.meshMatrixWorlds.every((e,r)=>e.equals(this.meshMatrixWorldsOld[r]))?!1:(this.meshMatrixWorldsOld=this.meshMatrixWorlds.map(e=>e.clone()),!0)}cropsChanged(){let t=!1;return this.splatEntries.forEach((e,r)=>{e.data.crops.forEach((o,n)=>{this.cropsArray[r][n]===void 0?(t=!0,this.cropsArray[r][n]=o.data):Object.entries(o.data).forEach(([a,s])=>{Array.isArray(s)&&s.some((l,c)=>l!==this.cropsArray[r][n][a][c])?(t=!0,this.cropsArray[r][n][a]=s):s!==this.cropsArray[r][n]?.[a]&&(t=!0,this.cropsArray[r][n][a]=s)})}),e.data.crops.length!==this.cropsArray[r]?.length&&(this.cropsArray[r].length=e.data.crops.length,t=!0)}),t}setupSplatMesh(t,e,r=new Ts,o=new CS,n=!1,a=1,s,l){this.splatMesh=Fi.buildMesh(t,e,n,a,s,l),this.splatMesh.position.copy(r),this.splatMesh.quaternion.copy(o),this.splatMesh.frustumCulled=!1,this.splatMesh.renderOrder=99999,this.splatRenderCount=e,this.splatMesh.onBeforeRender=(c,u,p)=>this.update(c,p)}setupSortWorker(t){this.sortWorker=bS(t),this.sortWorker.onmessage=e=>{e.data.sortDone?(this.sortRunning=!1,this.splatMesh?.updateIndexes(new Uint32Array(e.data.indexesBuffer)),this.lastSortTime=e.data.sortTime,this.queuedMessage&&(this.sortWorker.postMessage(this.queuedMessage),this.queuedMessage=null)):e.data.sortCanceled?this.sortRunning=!1:e.data.sortSetupPhase1Complete?this.sortWorker.postMessage({positions:this.splatMesh.getCenters().buffer,meshMatrixWorlds:this.splatMesh.meshMatrixWorlds,meshIndexIntervals:this.splatMesh.meshIndexIntervals,cropsArray:this.cropsArray}):e.data.sortSetupComplete&&(this.splatDataTextures=this.splatMesh.getSplatDataTextures(),this.scene.activePage.add(this.splatMesh),this.needsInitialRender=!0)}}update(t,e){this.splatMesh!==null&&(this.updateSplatMeshUniforms(t,e),this.updateView(!1,e))}getSplatMesh(){return this.splatMesh}};var oL=new tL;oL.wireframe=!0;var MS=new ZR,Gd=class extends QR{constructor(e,r){super();this.data=e;this.sharedAssets=r;this.enableHelpers=!1;this.wireframeState=!1;this.needsTransmissionDirty=!0;this.needsNormalDirty=!0;this._needsTransmission=!1;this._needsNormal=!1;this.geometryCacheChanged=!1;this.splatViewer=null;this.shapeBlendIntances=[];this.entityByUuid={};this.entityIdentityToEntity={};this.toExpandCloner=new Set;this.toUpdateCloner=new Set;this.pendingCommands=[];this.pathConstraints=new _d;this.invisibleObjects=new Ni("jflkdsafjasdifjaslk",{...Xc.defaultData,visible:!1,name:"buildin invisible"});this.needsRecomputeInstances=!1;this.init(e,r),this.matrixAutoUpdate=!1,this.errorPage=new Mr("fdasfa",{...Do.defaultData,name:""},{shared:r,scene:this})}markGeometryCacheDirty(){this.geometryCacheChanged=!0}markNeedsUpdateRendererDirty(){this.needsTransmissionDirty=!0,this.needsNormalDirty=!0}needsTransmission(){return this.needsTransmissionDirty&&(this._needsTransmission=gS(this),this.needsTransmissionDirty=!1),this._needsTransmission}needsNormal(){return this.needsNormalDirty&&(this._needsNormal=yS(this),this.needsNormalDirty=!1),this._needsNormal}registerInstanceAndSetUuid(e){let r=e.identity.join("-"),o=this.entityIdentityToEntity[r];o&&(e.uuid=o.uuid),this.entityIdentityToEntity[r]=e,this.entityByUuid[e.uuid]=e}markPenumbraSizeDirty(){for(let e of this.children)e instanceof Mr&&(e.penumbraSizeArrayCache=null)}findInstance(e){return this.entityIdentityToEntity[e.join("-")]}get bgColor(){return this.activePage.bgColor}get postprocessing(){return this.activePage.data.postprocessing}getWithSortKey(e){let r=this.find(e);if(r===void 0)return;let o=[],n=r;for(;n!==this;){let a=n;n=n.parent;let s=n.children.indexOf(a);o.splice(0,0,s)}return{entity:r,sortKey:o}}getAllSorted(e){let r=[];for(let o of e){let n=this.getWithSortKey(o.id);n!==void 0&&r.push(n)}return r.sort((o,n)=>ql(o.sortKey,n.sortKey)),r.map(o=>o.entity)}nonExistOrDescendantOf(e,r){let o=this.find(e);if(o===void 0)return!0;for(;o;){if(o.uuid===r)return!0;o=o.parent}return!1}find(e){if(this.activePage&&this.activePage.personalCamera.parent){if(e==="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera")return this.activePage.personalCamera;if(e===pi)return this.activePage.personalCamera}if(e===""||e===void 0)return;let r=this.entityByUuid[e];return r===void 0?this.getObjectByProperty("uuid",e):r}find2D(e){for(let r of this.children)if(r instanceof Mr&&r.uiScene){let o=r.uiScene.find(e);if(o)return o}}findScene2DfromObject2D(e){for(let r of this.children)if(r instanceof Mr&&r.uiScene&&r.uiScene.find(e))return r.uiScene}find2DInUIObjects(e){let r;return this.traverseEntity(o=>{r===void 0&&o instanceof Pn&&(r=o.uiCanvas.find(e))}),r}traverse2D(e){for(let r of this.children)r instanceof Mr&&r.uiScene&&r.uiScene.traverse(e)}debugEnsureEntity(e){let r=this.find(e);if(r){if(Array.isArray(r.identity)&&this.findInstance(r.identity)===void 0){console.error("not found instance");debugger}}else{console.error("not found");debugger}}addPendingExpandCloner(e){this.toExpandCloner.add(e)}addPendingUpdateCloner(e){this.toUpdateCloner.add(e)}markToExpandCloner(e){this.toExpandCloner.add(e),e.traverseEntityAncestors(r=>{this.toExpandCloner.add(r)})}doPendingExpandCloner(){this.toExpandCloner.forEach(e=>{e.expandCloner(this)}),this.toExpandCloner.clear()}doPendingUpdateCloner(){this.toUpdateCloner.forEach(e=>{e.cloner?.update()}),this.toUpdateCloner.clear()}doPendingUpdates(){this.doPendingExpandCloner(),this.doPendingUpdateCloner(),this.applyPendingCommands()}addPendingCommand(e){this.pendingCommands.push(e)}applyPendingCommands(){this.pendingCommands.forEach(e=>e()),this.pendingCommands.length=0}updateByLibOp(e,r){e.path.length===1&&e.path[0]==="components"&&e.type===1&&this.createChildrenObjects([{...e.data.asset,id:e.id}],this.invisibleObjects,r)}updateTreeByOp(e,r){if(e.path.length===0&&e.type===7){let o=e.parent===null?this:this.find(e.parent);if(o===void 0)throw new Error("unexpected");let n=this.createObject(e.id,e.data,e.children,o,e.localIndex,r);n.updateVisible(this),n.resetBBoxNeedsUpdate(),Ei(n)&&Cl(n.parent)&&(n.invalidateUpstreamBooleanData(),n.parent.invalidateDownstreamBooleanData().recomputeBoolean()),this.markNeedsRecomputeInstancesForAncessors(o),this.markNeedsRecomputeInstancesForChildren(n),this.markToExpandCloner(n),this.markPenumbraSizeDirty(),n.updatePathSnapping()}else if(e.path.length===0&&e.type===8){let o=this.find(e.id);if(o===void 0)throw new Error("unexpected");o.traverseEntity(a=>{a instanceof Bi&&(this.shapeBlendIntances=this.shapeBlendIntances.filter(s=>s!==a))}),this.markToExpandCloner(o),o.resetBBoxNeedsUpdate(),this.unregisterObject(o);let n=o.parent;this.markNeedsRecomputeInstancesForAncessors(n),this.markNeedsRecomputeInstancesForChildren(o),this.markPenumbraSizeDirty(),o.parent.remove(o),Cl(o.parent)&&(o.parent.invalidateUpstreamBooleanData(),o.parent.invalidateDownstreamBooleanData().recomputeBoolean()),Ei(o)&&(o.freeBooleanPointer(),n instanceof nr&&n.invalidateDownstreamBooleanData().recomputeBoolean()),o instanceof bs&&o.detachShape(),this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(o),this.pathConstraints.removeDependencies(o.uuid),o.updatePathSnapping()}else if(e.path.length===0&&e.type===9){let o=this.find(e.id);if(o===void 0)throw new Error("unexpected");this.markNeedsRecomputeInstancesForChildren(o);let n=o.parent;this.markNeedsRecomputeInstancesForAncessors(n),o.cloner?.resetOnMove(),this.markToExpandCloner(o);let a=e.parent===null?this:this.find(e.parent);if(a===void 0)throw new Error("unexpected");a.add(o),this.markNeedsRecomputeInstancesForAncessors(a),this.markToExpandCloner(o),o.invalidateClonerTransform(o),o.updateVisible(this),o.resetBBoxNeedsUpdate(),this.markPenumbraSizeDirty();let s=e.localIndex;a.children.splice(s,0,a.children.pop()),Ei(o)&&(o.invalidateUpstreamBooleanData(),Cl(o.parent)?o.parent.invalidateDownstreamBooleanData().recomputeBoolean():n instanceof nr&&n.invalidateDownstreamBooleanData().recomputeBoolean()),o.updatePathSnapping()}this.markNeedsUpdateRendererDirty(),this.markGeometryCacheDirty()}get playPage(){return this.find(this.data.publish.playPage)??this.errorPage}updatePage(e){this.activePage&&this.activePage.onDeactive(),this.activePage=this.errorPage;for(let r of this.children)r instanceof Mr&&(r.visible=r.uuid===e,r.visible&&(this.activePage=r,this.activePage.onActive(this)));this.activePage!==this.splatViewer?.activePage&&this.reloadSplats()}updateEntityByOp(e,r,o,n){if(r.type===0){if(("overrides"in r.props||"component"in r.props)&&this.markNeedsRecomputeInstances(),"visible"in r.props&&this.markPenumbraSizeDirty(),r.path.includes("overrides")&&"states"in r.props){let{rest:s}=r.props;r={...r,props:s},this.markNeedsRecomputeInstances()}r.path[0]==="pathSnapping"&&r.props.pathId!==void 0&&this.pathConstraints.setConstraint(e,r.props.pathId)}let a=this.find(e);if(a)try{nS(a,r,o,{scene:this,shared:n}),a instanceof et&&a.updateGeometryGroupsIfNeeded()}catch(s){console.error(s)}}updateEntity2DByOp(e,r,o,n,a,s=[]){e.updateEntityByOp(r,o,n,a),this.traverseEntity(l=>{(l instanceof Pn||l instanceof Mr)&&(s.includes(l.frameId??"")||l.frameId===r)&&l.updateEntity2DByOp(r,o,n,a)})}get activeCamera(){return this.activePage.activeCamera}switchActiveCamera(e){this.activePage.switchActiveCamera(e)}isInvisibleObjects(e){return e===this.invisibleObjects||e.hasAnccestor(this.invisibleObjects)}init(e,r){let o=Object.entries(r.data.lib.components).map((n,a)=>({data:n[1].asset.data,children:n[1].asset.children,id:n[0],fi:a}));this.invisibleObjects.updateState(this.invisibleObjects.data,{scene:this,shared:r}),this.add(this.invisibleObjects),this.createChildrenObjects(o,this.invisibleObjects,r),this.createChildrenObjects(e.objects,this,r),this.updatePage(e.publish.playPage),this.activePage.switchToPlayCamera(),this.expandInstances(r,!0),this.traverseEntity(n=>{n instanceof Xo&&n.updateUp()}),this.doPendingExpandCloner(),this.applyPendingCommands()}markNeedsRecomputeInstances(){this.needsRecomputeInstances=!0}markNeedsRecomputeInstancesForChildren(e){e.traverseEntity(r=>{(r.data.type==="Component"||r.data.type==="Instance")&&this.markNeedsRecomputeInstances()})}markNeedsRecomputeInstancesForAncessors(e){De.is(e)&&(e.data.type==="Component"&&this.markNeedsRecomputeInstances(),e.traverseAncestors(r=>{De.is(r)&&r.data.type==="Component"&&this.markNeedsRecomputeInstances()}))}relativeizeInner(e,r,o,n,a,s,l){if(e){let c=n.find(e);c&&c!==n&&a.forInstancesRec(u=>{u.data=ai(u.data,p=>{let d=p.events.data(l.id),f=u.goUp(s);if(f){let h=[...Wl(f.identity),e].join("-"),m=this.entityIdentityToEntity[h];if(m){let y=m.uuid,b=Ze.zoom(d,r);b[o]=y}else{if(!1)debugger;console.warn("cannot find instance")}}}).data})}}rewriteActions(e,r,o,n,a,s){e.forEach(l=>{l.data.type==="Transition"?this.relativeizeInner(l.data.object,[...r,l.id],"object",o,n,a,s):l.data.type==="Animation"?this.relativeizeInner(l.data.object,[...r,l.id],"object",o,n,a,s):l.data.type==="Conditional"&&(this.rewriteActions(l.data.ifActions,[...r,l.id,"ifActions"],o,n,a,s),this.rewriteActions(l.data.elseActions,[...r,l.id,"elseActions"],o,n,a,s))})}rewriteEventsBeforeGoToPlayMode(){this.traverseEntity(e=>{if(e instanceof Qo&&typeof e.identity=="string"&&e.data.type==="Component")return e.traverseEntity((r,o)=>{r.data.events.forEach(n=>{if(n.data.type==="GameControl"){let a=!1;if(r.forInstancesRec(s=>{s.data=ai(s.data,l=>{s.isInstanceRoot||(l.events.delete(n.id),a=!0)}).data}),a===!1)for(let s of Zc.list)this.rewriteActions(n.data.gameActions[s],["gameActions",s],e,r,o,n)}else n.data.type==="Conditional"?(n.data.condition.type==="Distance"?(this.relativeizeInner(n.data.condition.fromObject,["condition"],"fromObject",e,r,o,n),this.relativeizeInner(n.data.condition.toObject,["condition"],"toObject",e,r,o,n)):n.data.condition.type==="State"?this.relativeizeInner(n.data.condition.object,["condition"],"object",e,r,o,n):n.data.condition.type==="Comparison"&&(n.data.condition.lOperand.type==="Property"&&this.relativeizeInner(n.data.condition.lOperand.value[0],["condition","lOperand","value"],0,e,r,o,n),n.data.condition.rOperand.type==="Property"&&this.relativeizeInner(n.data.condition.rOperand.value[0],["condition","rOperand","value"],0,e,r,o,n)),this.rewriteActions(n.data.inActions,["inActions"],e,r,o,n),this.rewriteActions(n.data.outActions,["outActions"],e,r,o,n)):"actions"in n.data&&this.rewriteActions(n.data.actions,["actions"],e,r,o,n)})}),!0})}expandInstances(e,r,o){let n=new Set;this.traverseEntity(a=>{if(a instanceof Qo&&a.isInstanceRoot)return a.expandInstanceChildren({scene:this,shared:e,pendingDeletes:n}),r||a.resetBBoxNeedsUpdate(),o&&a.traverseEntity(s=>{o.addClip(s)}),!0});for(let a of n)this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(a),Od(a)}recomputeInstances(e,r){this.needsRecomputeInstances&&(this.needsRecomputeInstances=!1,this.traverseEntity(o=>{o instanceof Qo&&o.isInstanceRoot&&(o.component=void 0)}),this.expandInstances(e,!1,r))}disposeAndUnregisterEntityRecursivelyIfNotReregistered(e){e.traverseEntity(r=>{let o=typeof r.identity=="string"?r.identity:r.identity.join("-");this.entityIdentityToEntity[o]===r&&(delete this.entityByUuid[r.uuid],delete this.entityIdentityToEntity[o]),r.dispose()})}clearScene(){for(let e of this.children)De.is(e)&&e.disposeRecursively();this.children.length=0}resetAfterClear(e,r){this.init(e,r)}raycast(e){return this.raycast1(e,!1)}raycast1(e,r){let o=[],n=a=>{for(let s of a.children){let l=s.cloner;if(De.is(s)&&!s.raycastLock&&(s.visible||l?.object.data.visible))if(r===!0&&s.isInstanceRoot){let c=[];if(e.intersectObject(s,!0,c),c.length){let u=c[0];u.object=s,u.point.applyMatrix4(u.object.matrixWorld);let p=s.matrixWorld.clone().invert();u.point.applyMatrix4(p),o.push(u)}}else(Ei(s)||Al(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,o),Rl(s,e,o)),n(s)}};return n(this.activePage),o}raycastWithClones(e){let r=[],o=n=>{for(let a of n.children){let s=a.cloner;De.is(a)&&(a.visible||s?.object.data.visible)&&((Ei(a)||Al(a)&&this.enableHelpers&&a.objectHelper.visible)&&(e.intersectObject(a,!1,r),Rl(a,e,r,!0)),o(a))}};return o(this),r}forEachEntity(e){for(let r of this.children)De.is(r)&&e(r)}traverseConcreteEntity(e){for(let r of this.children)De.is(r)&&r.isConcreteEntity&&r.traverseEntity(e)}traverseEntity(e){for(let r of this.children)De.is(r)&&r.traverseEntity(e)}updateFont(e,r){this.traverseEntity(o=>{if(o instanceof et&&o.data.type==="Mesh"&&(o.data.geometry.type==="TextGeometry"||o.data.geometry.type==="InputGeometry")&&o.data.geometry.font===e){let n=o.geometry,a=o.data.geometry;n.updateFont(e,r).then(()=>{n.update(a,r);let s=o.invalidateDownstreamBooleanData();Cl(s)&&s.recomputeBoolean()})}})}traverseObject(e){for(let r of this.children)zo.is(r)&&r.traverseObject(e)}traverseVisibleEntity(e){for(let r of this.children)De.is(r)&&r.visible&&r.traverseVisibleEntity(e)}dispose(){this.clearScene()}createChildrenObjects(e,r,o){let n=0;for(let a of e)this.createObject(a.id,a.data,a.children,r,n,o),n+=1}registerObjectCreatedInLegacy(e){this.entityByUuid[e.uuid]=e}unregisterObject(e){delete this.entityByUuid[e.uuid];for(let r of e.children)this.unregisterObject(r)}createObject(e,r,o,n,a,s){let l={scene:this,shared:s},c=Md(e,r,l);return c instanceof Bi&&this.shapeBlendIntances.push(c),c&&(this.entityByUuid[e]=c,n.add(c),n.children.splice(a,0,n.children.pop()),o.length>0&&(c.isInstanceRoot?console.error("instance should not have children!"):this.createChildrenObjects(o,c,s)),c.updateState(r,l),c instanceof et&&c.updateGeometryGroupsIfNeeded(),c.updateVisible(this),c.cloner&&this.toExpandCloner.add(c),r.pathSnapping?.pathId&&this.pathConstraints.setConstraint(e,r.pathSnapping.pathId)),r.type==="Empty"&&r.animations&&c.traverseEntity(u=>{let p=u.dataPatched;if(u instanceof et&&p.bones&&p.boneInverses){let d=p.bones.map(m=>this.find(m)),f=p.boneInverses.map(m=>new JR().fromArray(m)),h=new rL(d,f);u.bind(h,u.bindMatrix)}else u.matrixAutoUpdate=!0}),c}getCenter(e){let r=[];for(let n=0,a=e.length;n<a;++n){let{id:s,recursive:l}=e[n],c=this.find(s),u=l?c.recursiveBBox:c.singleBBox;r.push(...u.vertices)}let o=new eL;return o.setFromPoints(r),o.getCenter(MS),MS}copyMatrixWorld(e,r){if(e===null){r.identity();return}let o=this.find(e);o?r.copy(o.matrixWorld):r.identity()}copyParentMatrixWorld(e,r){if(e===null){r.identity();return}let o=this.find(e)?.parent;o?r.copy(o.matrixWorld):r.identity()}traverseMaterial(e){this.traverseEntity(r=>{if(r instanceof Mt)if(Array.isArray(r.material))for(let o=0;o<r.material.length;o++)r.material[o]instanceof or&&e(r.material[o]);else r.material instanceof or&&e(r.material)})}updateViewPlaneSize(e,r,o=!1){this.traverseConcreteEntity(n=>{n instanceof Xo&&n.setViewplaneSize(e,r,o)})}initializeSplatViewer(){this.splatViewer=new Vl({scene:this}),this.reloadSplats()}reloadSplats(){this.splatViewer?.loadSplat()}};import{DRACOLoader as iL}from"three/examples/jsm/loaders/DRACOLoader.js";var ji;function IS(i){return ji||(ji=new iL,ji.setDecoderPath(i?`${i}/`:"https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),ji.decoderPending}async function nL(i){if(ji){let t={attributeIDs:ji.defaultAttributeIDs,attributeTypes:ji.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await ji.decodeGeometry(new Int8Array(i).buffer,t)}catch(r){console.error(r)}if(e)return{index:e.index?{array:e.index.array}:void 0,attributes:Object.entries(e.attributes).map(([r,o])=>({name:r,itemSize:o.itemSize,array:o.array}))}}return null}async function ES(i,t){let[e,r]=cp(Lc.deserialize(new Uint8Array(i)));return tu(e),t&&t(e),r.result().data}function NS(i){let t=[];return i.scene.objects.traverse((e,r)=>{r.type==="Mesh"&&r.geometry.type==="NonParametricGeometry"&&r.geometry.data.draco!==void 0&&t.push(r)}),t}async function DS(i){for(let t of i){let e=await nL(t.geometry.data.draco);if(e){let r=t.geometry.data;e.index&&(r.index={array:e.index.array,itemSize:1,normalized:!1,type:"Uint32Array"});let o={};e.attributes.forEach(({name:n,array:a,itemSize:s})=>{o[n]={array:a,itemSize:s,type:"Float32Array",normalized:!1}}),r.attributes=o,r.draco=void 0}}}import{Mesh as gme}from"three";import{mergeBufferGeometries as vme}from"three/examples/jsm/utils/BufferGeometryUtils.js";function _S(i){let t;if(!!i.index)for(let e=0;e<i.index.array.length;e+=3)t=i.index.array[e],i.index.array[e]=i.index.array[e+2],i.index.array[e+2]=t}import{Color as RS,ShaderLib as aL}from"three";function LS(i){let t=new Set;return i.traverse(e=>{if(e instanceof ir)if(pt(e.material))e.material.forEach(r=>{let o=r;t.has(o)||t.add(o)});else{let r=e.material;t.has(r)||t.add(r)}}),t.forEach(e=>{if(e instanceof Array)return;let r=e.onBeforeCompile.bind(e);if(sL(e)){Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new RS,specularColor:new RS});let o=0;e.onBeforeCompile=(n,a)=>{r&&r(n,a),n.uniforms=Object.assign({},aL.physical.uniforms,n.uniforms),e.getLayersOfType("transmission").forEach(s=>{if(n.uniforms.transmissionSamplerMap.value){let l=s.color;l&&(l.transmissionSamplerMap.value=n.uniforms.transmissionSamplerMap.value,l.transmissionSamplerSize.value=n.uniforms.transmissionSamplerSize.value,l.aspectRatio.value=Jb(window.innerWidth,window.innerHeight),e.defines.IS_THREEJS_EXPORT=!0)}else o++,o<2&&(e.needsUpdate=!0)})}}else lL(e)||(e.onBeforeCompile=(o,n)=>{r&&r(o,n),e.transparent=!1})}),i}function sL(i){return i.getLayersOfType("transmission").length>0}function lL(i){let t=0;for(let e of i.layers){if(e.data.type!=="displace"&&e.data.isMask)return!0;if(e.type!=="light"&&e.type!=="fresnel"){let o=e.uniforms["f"+e.id+"_alpha"];o&&(t+=(1-t)*o.value)}}return t<1}function BS(i){return i.traverse(t=>{if(t.type==="Camera"){let e=t;e.type=e.cameraType}}),i}function VS(i){let t=[],e=(r,o=0)=>{let n=o>0?r+o:r;return t.includes(n)?e(r,o+1):n};return i.traverse(r=>{if(t.includes(r.name)){let o=r.name,n=e(r.name);if(r.name=n,r.isMesh){let a=r;a.material instanceof Array?a.material.forEach(s=>{s.name=s.name.replace(o,n)}):a.material.isAsset||(a.material.name=a.material.name.replace(o,n))}}t.push(r.name)}),i}import{mergeBufferGeometries as cL}from"three/examples/jsm/utils/BufferGeometryUtils.js";function zS(i){let t=[];return i.traverse(e=>{e instanceof Ii&&t.push(e)}),t.forEach(e=>{let r=e.object,a=[...e.children.map(s=>{s.updateMatrix();let l;if(s.geometry!==void 0)try{l=s.geometry.clone().applyMatrix4(s.matrix)}catch(c){console.error(c)}return l!==void 0&&s.matrix.determinant()<0&&_S(l),l}).filter(s=>s!==void 0)];if(!e.parameters.hideBase&&r instanceof Mt&&a.unshift(r.geometry),a.length){let s=cL(a);r instanceof Mt&&(r.geometry=s)}e.removeFromParent(),r.setFromClonerState(null,{scene:i,shared:wv})}),i}function GS(i){return i.traverse(t=>{t.matrixAutoUpdate=!0}),i}function FS(i){Object.values(i.shared.materials).forEach(t=>{sm(t)}),i.scene.objects.traverse((t,e)=>{"material"in e?sm(e.material):"materials"in e&&e.materials.forEach(r=>{sm(r)})})}function sm(i){if(typeof i=="string")return;let t=[];i.layers.forEach((e,r)=>{e.type==="outline"&&t.push(r)}),t.reverse().forEach(e=>{i.layers.delete(e)}),t.length&&console.warn("The Spline Loader currently does not support the outline layer.")}var HS=Ms(US(),1);var kS="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",lm=class extends dL{load(t,e,r,o=console.error){let n=new uL(this.manager);n.setPath(this.path),n.setResponseType("arraybuffer"),n.setRequestHeader(this.requestHeader),n.setWithCredentials(this.withCredentials),t.endsWith(".spline")?console.warn(kS+" The .spline files are only meant to be used by the Editor."):t.endsWith(".splinecode")||console.warn(kS),n.load(t,async a=>{try{if(typeof a=="string")throw new Error("The .spline file is not binary!");let s=await this.parse(a);e(s)}catch(s){o(s)}},r,o)}async parse(t){let e=await ES(t,FS),r=NS(e);e.version&&(0,HS.default)(e.version,"1.10.88")>0&&console.warn("Your .splinecode file is more recent than the library. Please upgrade @splinetool/loader to the latest version."),await Promise.allSettled([r.length&&IS(),Ev(e)&&Ab(),Fv(e)&&hv(),P1(e)&&v1(),Vd(e)&&am()].filter(Boolean)),r.length&&await DS(r);let o=!1,n=new yn(e.shared,{},o);Object.values(n.getMaterials()).forEach(l=>Object.assign(l,{isAsset:!0}));let a=new Gd(e.scene,n);Vd(e)&&a.initializeSplatViewer();let s=a.activeCamera;return s&&Object.assign(s,{makeDefault:!0}),a=zS(a),a=LS(a),a=BS(a),a=VS(a),a=GS(a),a}};export{lm as default};
|
|
4379
|
+
}`,n={covariancesTexture:{type:"t",value:null},centersColorsTexture:{type:"t",value:null},meshIndexIntervals:{value:e},meshMatrixWorldsTexture:{type:"t",value:null},focal:{type:"v2",value:new Fi},viewport:{type:"v2",value:new Fi},basisViewport:{type:"v2",value:new Fi},debugColor:{type:"v3",value:new zR},covariancesTextureSize:{type:"v2",value:new Fi(1024,1024)},centersColorsTextureSize:{type:"v2",value:new Fi(1024,1024)},orthoZoom:{type:"f",value:-1}};return new YR({uniforms:n,vertexShader:r,fragmentShader:o,transparent:!0,alphaTest:1,blending:qR,depthTest:!0,depthWrite:!1,side:FR})}static buildGeomtery(e){let r=new VR;r.setIndex([0,1,2,0,2,3]);let o=new Float32Array(4*3),n=new BR(o,3);r.setAttribute("position",n),n.setXYZ(0,-1,-1,0),n.setXYZ(1,-1,1,0),n.setXYZ(2,1,1,0),n.setXYZ(3,1,-1,0),n.needsUpdate=!0;let a=new HR().copy(r),s=new Uint32Array(e),l=new kR(s,1,!1);return l.setUsage(jR),a.setAttribute("splatIndex",l),a.instanceCount=e,a}resetLocalSplatDataAndTexturesFromSplatBuffer(){this.updateLocalSplatDataFromSplatBuffer(),this.allocateAndStoreLocalSplatDataInTextures()}updateLocalSplatDataFromSplatBuffer(){this.splatBuffers.forEach(n=>n.buildPreComputedBuffers()),this.covariances=new Float32Array(this.splatCount*6),this.colors=new Uint8Array(this.splatCount*4),this.centers=new Float32Array(this.splatCount*3);let e=0,r=0,o=0;for(let n of this.splatBuffers){let a=n.nsplats;this.colors.subarray(e,e+a*4).set(n.colorsA),e+=a*4,this.centers.subarray(r,r+a*3).set(n.decoded.xyz.denormDequant().data),r+=a*3,this.covariances.subarray(o,o+a*6).set(new Float32Array(n.precomputedCovarianceBufferData)),o+=a*6}}allocateAndStoreLocalSplatDataInTextures(){let o=this.splatCount,n=new Fi(4096,1024);for(;n.x*n.y*2<o*6;)n.y*=2;let a=new Fi(4096,1024);for(;a.x*a.y*4<o*4;)a.y*=2;let s,l;if(this.halfPrecisionCovariancesOnGPU){l=new Uint16Array(n.x*n.y*2);for(let h=0;h<this.covariances.length;h++)l[h]=GR.toHalfFloat(this.covariances[h]);s=new Bd(l,n.x,n.y,PS,UR)}else l=new Float32Array(n.x*n.y*2),l.set(this.covariances),s=new Bd(l,n.x,n.y,PS,wS);s.needsUpdate=!0,this.material.uniforms.covariancesTexture.value=s,this.material.uniforms.covariancesTextureSize.value.copy(n);let c=new Uint32Array(a.x*a.y*4);for(let h=0;h<o;h++){let m=h*4,y=h*3,x=h*4;c[x]=SS(this.colors[m],this.colors[m+1],this.colors[m+2],this.colors[m+3]),c[x+1]=Ld(this.centers[y]),c[x+2]=Ld(this.centers[y+1]),c[x+3]=Ld(this.centers[y+2])}let u=new Bd(c,a.x,a.y,XR,KR);u.internalFormat="RGBA32UI",u.needsUpdate=!0,this.material.uniforms.centersColorsTexture.value=u,this.material.uniforms.centersColorsTextureSize.value.copy(a);let d=256*4,p=new Float32Array(256*16);for(let h=0;h<this.meshMatrixWorlds.length;h++)p.set(this.meshMatrixWorlds[h].elements,h*16);let f=new Bd(p,d,1,$R,wS);f.needsUpdate=!0,this.material.uniforms.meshMatrixWorldsTexture.value=f,this.material.uniformsNeedUpdate=!0,this.splatDataTextures={covariances:{data:l,texture:s,size:n},centerColors:{data:c,texture:u,size:a},meshMatrixWorlds:{data:p,texture:f}}}updateIndexes(e){let r=this.geometry;r.attributes.splatIndex.set(e),r.attributes.splatIndex.needsUpdate=!0,r.instanceCount=e.length}updateUniforms(e,r,o,n){this.splatCount>0&&(Vd.set(e.x*this.devicePixelRatio,e.y*this.devicePixelRatio),this.material.uniforms.viewport.value.copy(Vd),this.material.uniforms.basisViewport.value.set(2/Vd.x,2/Vd.y),this.material.uniforms.focal.value.set(r,o),this.material.uniforms.orthoZoom.value=n,this.material.uniformsNeedUpdate=!0)}getSplatDataTextures(){return this.splatDataTextures}getSplatCount(){return this.splatCount}getCenters(){return this.centers}getColors(){return this.colors}getCovariances(){return this.covariances}dispose(){this.geometry.dispose(),this.material.dispose(),this.splatDataTextures&&(this.splatDataTextures.covariances.texture.dispose(),this.splatDataTextures.centerColors.texture.dispose(),this.splatDataTextures.meshMatrixWorlds.texture.dispose()),this.removeFromParent()}};var TS,am=new Promise(i=>{TS=i}),OS=!1;var Gd;function sm(){if(OS)return;if(Gd)return Gd;async function i(){let e=await import("./gaussian-splat-compression.js");TS(e),OS=!0}return Gd=i(),Gd}var MS;am.then(i=>MS=i);var zl=class{constructor(t={}){$i(this,"updateView",function(){let t=new CS,e=[],r=new Cs(0,0,-1),o=new Cs(0,0,-1),n=new Cs,a=new Cs;return function(s=!1,l){let c=this.updateMatrixWorldsInWorkerIfNeeded(),u=this.cropsChanged();if(!s){o.set(0,0,-1).applyQuaternion(l.quaternion);let p=!1,f=!1;if(o.dot(r)<=.95&&(p=!0),a.copy(l.position).sub(n).length()>=1&&(f=!0),!p&&!f&&!c&&!u&&!this.needsInitialRender)return}this.needsInitialRender=!1,n.copy(l.position),r.copy(o),t.copy(l.matrixWorld).invert(),t.premultiply(this.dummyPerspectiveMatrix),e[0]=l.position.x,e[1]=l.position.y,e[2]=l.position.z;let d={sort:{view:t.elements,cameraPosition:e,splatRenderCount:this.splatRenderCount,splatSortCount:this.splatRenderCount},...c?{newMatrixWorlds:this.meshMatrixWorlds}:{},...u?{newCropsArray:this.cropsArray}:{}};this.sortRunning?this.queuedMessage=d:(this.queuedMessage=null,this.sortRunning=!0,this.sortWorker.postMessage(d))}}());this.scene=t.scene,this.currentPage=null,this.devicePixelRatio=window.devicePixelRatio,this.sortWorker=null,this.splatRenderCount=0,this.splatSortCount=0,this.splatMesh=null,this.sortRunning=!1,this.meshMatrixWorlds=null,this.meshMatrixWorldsOld=null,this.cropsArray=null,this.splatEntries=null,this.queuedMessage=null,this.needsInitialRender=!0,this.dummyPerspectiveMatrix=new CS().makePerspective(-1,1,-1,1,.1,1e3)}updateSplatMeshUniforms(t,e){let r=new QR;if(this.splatMesh===null)return;this.splatMesh.getSplatCount()>0&&(t.getSize(r),this.cameraFocalLengthX=e.projectionMatrix.elements[0]*this.devicePixelRatio*r.x*.45,this.cameraFocalLengthY=e.projectionMatrix.elements[5]*this.devicePixelRatio*r.y*.45,this.splatMesh.updateUniforms(r,this.cameraFocalLengthX,this.cameraFocalLengthY,e.isPerspectiveCamera?-1:e.zoom*this.devicePixelRatio))}loadSplat(t={}){this.activePage=this.scene.activePage,t.position&&(t.position=new Cs().fromArray(t.position)),t.orientation&&(t.orientation=new AS().fromArray(t.orientation)),t.halfPrecisionCovariances=!!t.halfPrecisionCovariances;let e=[];if(this.splatEntries=e,this.activePage.traverseVisibleEntity(a=>{a.data.type==="Splat"&&e.push(a)}),this.splatMesh&&this.splatMesh.dispose(),e.length===0)return this.splatMesh=null,!1;this.meshMatrixWorlds=e.map(a=>a.matrixWorld),this.meshMatrixWorldsOld=e.map(a=>a.matrixWorld.clone()),this.cropsArray=e.map(a=>a.data.crops.map(s=>s.data));let r=e.map(a=>new MS.GSplineBuffer(new Uint8Array(a.data.buffer).buffer)),o=0,n=[0];for(let a of r)o+=a.getSplatCount(),n.push(o);return this.setupSplatMesh(r,o,t.position,t.orientation,t.halfPrecisionCovariances,this.devicePixelRatio,n,this.meshMatrixWorlds),this.setupSortWorker(o),!0}updateMatrixWorldsInWorkerIfNeeded(){let t=this.splatDataTextures.meshMatrixWorlds.data;for(let e=0;e<this.meshMatrixWorlds.length;e++)t.set(this.meshMatrixWorlds[e].elements,e*16);return this.splatDataTextures.meshMatrixWorlds.texture.needsUpdate=!0,this.meshMatrixWorlds.every((e,r)=>e.equals(this.meshMatrixWorldsOld[r]))?!1:(this.meshMatrixWorldsOld=this.meshMatrixWorlds.map(e=>e.clone()),!0)}cropsChanged(){let t=!1;return this.splatEntries.forEach((e,r)=>{e.data.crops.forEach((o,n)=>{this.cropsArray[r][n]===void 0?(t=!0,this.cropsArray[r][n]=o.data):Object.entries(o.data).forEach(([a,s])=>{Array.isArray(s)&&s.some((l,c)=>l!==this.cropsArray[r][n][a][c])?(t=!0,this.cropsArray[r][n][a]=s):s!==this.cropsArray[r][n]?.[a]&&(t=!0,this.cropsArray[r][n][a]=s)})}),e.data.crops.length!==this.cropsArray[r]?.length&&(this.cropsArray[r].length=e.data.crops.length,t=!0)}),t}setupSplatMesh(t,e,r=new Cs,o=new AS,n=!1,a=1,s,l){this.splatMesh=ji.buildMesh(t,e,n,a,s,l),this.splatMesh.position.copy(r),this.splatMesh.quaternion.copy(o),this.splatMesh.frustumCulled=!1,this.splatMesh.renderOrder=99999,this.splatRenderCount=e,this.splatMesh.onBeforeRender=(c,u,d)=>this.update(c,d)}setupSortWorker(t){this.sortWorker=vS(t),this.sortWorker.onmessage=e=>{e.data.sortDone?(this.sortRunning=!1,this.splatMesh?.updateIndexes(new Uint32Array(e.data.indexesBuffer)),this.lastSortTime=e.data.sortTime,this.queuedMessage&&(this.sortWorker.postMessage(this.queuedMessage),this.queuedMessage=null)):e.data.sortCanceled?this.sortRunning=!1:e.data.sortSetupPhase1Complete?this.sortWorker.postMessage({positions:this.splatMesh.getCenters().buffer,meshMatrixWorlds:this.splatMesh.meshMatrixWorlds,meshIndexIntervals:this.splatMesh.meshIndexIntervals,cropsArray:this.cropsArray}):e.data.sortSetupComplete&&(this.splatDataTextures=this.splatMesh.getSplatDataTextures(),this.scene.activePage.add(this.splatMesh),this.needsInitialRender=!0)}}update(t,e){this.splatMesh!==null&&(this.updateSplatMeshUniforms(t,e),this.updateView(!1,e))}getSplatMesh(){return this.splatMesh}};var iL=new rL;iL.wireframe=!0;var IS=new JR,Fd=class extends ZR{constructor(e,r){super();this.data=e;this.sharedAssets=r;this.enableHelpers=!1;this.wireframeState=!1;this.needsTransmissionDirty=!0;this.needsNormalDirty=!0;this._needsTransmission=!1;this._needsNormal=!1;this.geometryCacheChanged=!1;this.splatViewer=null;this.shapeBlendIntances=[];this.entityByUuid={};this.entityIdentityToEntity={};this.toExpandCloner=new Set;this.toUpdateCloner=new Set;this.pendingCommands=[];this.pathConstraints=new Rd;this.invisibleObjects=new Di("jflkdsafjasdifjaslk",{...Yc.defaultData,visible:!1,name:"buildin invisible"});this.needsRecomputeInstances=!1;this.init(e,r),this.matrixAutoUpdate=!1,this.errorPage=new Ir("fdasfa",{..._o.defaultData,name:""},{shared:r,scene:this})}markGeometryCacheDirty(){this.geometryCacheChanged=!0}markNeedsUpdateRendererDirty(){this.needsTransmissionDirty=!0,this.needsNormalDirty=!0}needsTransmission(){return this.needsTransmissionDirty&&(this._needsTransmission=xS(this),this.needsTransmissionDirty=!1),this._needsTransmission}needsNormal(){return this.needsNormalDirty&&(this._needsNormal=gS(this),this.needsNormalDirty=!1),this._needsNormal}registerInstanceAndSetUuid(e){let r=e.identity.join("-"),o=this.entityIdentityToEntity[r];o&&(e.uuid=o.uuid),this.entityIdentityToEntity[r]=e,this.entityByUuid[e.uuid]=e}markPenumbraSizeDirty(){for(let e of this.children)e instanceof Ir&&(e.penumbraSizeArrayCache=null)}findInstance(e){return this.entityIdentityToEntity[e.join("-")]}get bgColor(){return this.activePage.bgColor}get postprocessing(){return this.activePage.data.postprocessing}getWithSortKey(e){let r=this.find(e);if(r===void 0)return;let o=[],n=r;for(;n!==this;){let a=n;n=n.parent;let s=n.children.indexOf(a);o.splice(0,0,s)}return{entity:r,sortKey:o}}getAllSorted(e){let r=[];for(let o of e){let n=this.getWithSortKey(o.id);n!==void 0&&r.push(n)}return r.sort((o,n)=>$l(o.sortKey,n.sortKey)),r.map(o=>o.entity)}nonExistOrDescendantOf(e,r){let o=this.find(e);if(o===void 0)return!0;for(;o;){if(o.uuid===r)return!0;o=o.parent}return!1}find(e){if(this.activePage&&this.activePage.personalCamera.parent){if(e==="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera")return this.activePage.personalCamera;if(e===fi)return this.activePage.personalCamera}if(e===""||e===void 0)return;let r=this.entityByUuid[e];return r===void 0?this.getObjectByProperty("uuid",e):r}find2D(e){for(let r of this.children)if(r instanceof Ir&&r.uiScene){let o=r.uiScene.find(e);if(o)return o}}findScene2DfromObject2D(e){for(let r of this.children)if(r instanceof Ir&&r.uiScene&&r.uiScene.find(e))return r.uiScene}find2DInUIObjects(e){let r;return this.traverseEntity(o=>{r===void 0&&o instanceof On&&(r=o.uiCanvas.find(e))}),r}traverse2D(e){for(let r of this.children)r instanceof Ir&&r.uiScene&&r.uiScene.traverse(e)}debugEnsureEntity(e){let r=this.find(e);if(r){if(Array.isArray(r.identity)&&this.findInstance(r.identity)===void 0){console.error("not found instance");debugger}}else{console.error("not found");debugger}}addPendingExpandCloner(e){this.toExpandCloner.add(e)}addPendingUpdateCloner(e){this.toUpdateCloner.add(e)}markToExpandCloner(e){this.toExpandCloner.add(e),e.traverseEntityAncestors(r=>{this.toExpandCloner.add(r)})}doPendingExpandCloner(){this.toExpandCloner.forEach(e=>{e.expandCloner(this)}),this.toExpandCloner.clear()}doPendingUpdateCloner(){this.toUpdateCloner.forEach(e=>{e.cloner?.update()}),this.toUpdateCloner.clear()}doPendingUpdates(){this.doPendingExpandCloner(),this.doPendingUpdateCloner(),this.applyPendingCommands()}addPendingCommand(e){this.pendingCommands.push(e)}applyPendingCommands(){this.pendingCommands.forEach(e=>e()),this.pendingCommands.length=0}updateByLibOp(e,r){e.path.length===1&&e.path[0]==="components"&&e.type===1&&this.createChildrenObjects([{...e.data.asset,id:e.id}],this.invisibleObjects,r)}updateTreeByOp(e,r){if(e.path.length===0&&e.type===7){let o=e.parent===null?this:this.find(e.parent);if(o===void 0)throw new Error("unexpected");let n=this.createObject(e.id,e.data,e.children,o,e.localIndex,r);n.updateVisible(this),n.resetBBoxNeedsUpdate(),Ni(n)&&Al(n.parent)&&(n.invalidateUpstreamBooleanData(),n.parent.invalidateDownstreamBooleanData().recomputeBoolean()),this.markNeedsRecomputeInstancesForAncessors(o),this.markNeedsRecomputeInstancesForChildren(n),this.markToExpandCloner(n),this.markPenumbraSizeDirty(),n.updatePathSnapping()}else if(e.path.length===0&&e.type===8){let o=this.find(e.id);if(o===void 0)throw new Error("unexpected");o.traverseEntity(a=>{a instanceof Vi&&(this.shapeBlendIntances=this.shapeBlendIntances.filter(s=>s!==a))}),this.markToExpandCloner(o),o.resetBBoxNeedsUpdate(),this.unregisterObject(o);let n=o.parent;this.markNeedsRecomputeInstancesForAncessors(n),this.markNeedsRecomputeInstancesForChildren(o),this.markPenumbraSizeDirty(),o.parent.remove(o),Al(o.parent)&&(o.parent.invalidateUpstreamBooleanData(),o.parent.invalidateDownstreamBooleanData().recomputeBoolean()),Ni(o)&&(o.freeBooleanPointer(),n instanceof ar&&n.invalidateDownstreamBooleanData().recomputeBoolean()),o instanceof vs&&o.detachShape(),this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(o),this.pathConstraints.removeDependencies(o.uuid),o.updatePathSnapping()}else if(e.path.length===0&&e.type===9){let o=this.find(e.id);if(o===void 0)throw new Error("unexpected");this.markNeedsRecomputeInstancesForChildren(o);let n=o.parent;this.markNeedsRecomputeInstancesForAncessors(n),o.cloner?.resetOnMove(),this.markToExpandCloner(o);let a=e.parent===null?this:this.find(e.parent);if(a===void 0)throw new Error("unexpected");a.add(o),this.markNeedsRecomputeInstancesForAncessors(a),this.markToExpandCloner(o),o.invalidateClonerTransform(o),o.updateVisible(this),o.resetBBoxNeedsUpdate(),this.markPenumbraSizeDirty();let s=e.localIndex;a.children.splice(s,0,a.children.pop()),Ni(o)&&(o.invalidateUpstreamBooleanData(),Al(o.parent)?o.parent.invalidateDownstreamBooleanData().recomputeBoolean():n instanceof ar&&n.invalidateDownstreamBooleanData().recomputeBoolean()),o.updatePathSnapping()}this.markNeedsUpdateRendererDirty(),this.markGeometryCacheDirty()}get playPage(){return this.find(this.data.publish.playPage)??this.errorPage}updatePage(e){this.activePage&&this.activePage.onDeactive(),this.activePage=this.errorPage;for(let r of this.children)r instanceof Ir&&(r.visible=r.uuid===e,r.visible&&(this.activePage=r,this.activePage.onActive(this)));this.activePage!==this.splatViewer?.activePage&&this.reloadSplats()}updateEntityByOp(e,r,o,n){if(r.type===0){if(("overrides"in r.props||"component"in r.props)&&this.markNeedsRecomputeInstances(),"visible"in r.props&&this.markPenumbraSizeDirty(),r.path.includes("overrides")&&"states"in r.props){let{rest:s}=r.props;r={...r,props:s},this.markNeedsRecomputeInstances()}r.path[0]==="pathSnapping"&&r.props.pathId!==void 0&&this.pathConstraints.setConstraint(e,r.props.pathId)}let a=this.find(e);if(a)try{aS(a,r,o,{scene:this,shared:n}),a instanceof et&&a.updateGeometryGroupsIfNeeded()}catch(s){console.error(s)}}updateEntity2DByOp(e,r,o,n,a,s=[]){e.updateEntityByOp(r,o,n,a),this.traverseEntity(l=>{(l instanceof On||l instanceof Ir)&&(s.includes(l.frameId??"")||l.frameId===r)&&l.updateEntity2DByOp(r,o,n,a)})}get activeCamera(){return this.activePage.activeCamera}switchActiveCamera(e){this.activePage.switchActiveCamera(e)}isInvisibleObjects(e){return e===this.invisibleObjects||e.hasAnccestor(this.invisibleObjects)}init(e,r){let o=Object.entries(r.data.lib.components).map((n,a)=>({data:n[1].asset.data,children:n[1].asset.children,id:n[0],fi:a}));this.invisibleObjects.updateState(this.invisibleObjects.data,{scene:this,shared:r}),this.add(this.invisibleObjects),this.createChildrenObjects(o,this.invisibleObjects,r),this.createChildrenObjects(e.objects,this,r),this.updatePage(e.publish.playPage),this.activePage.switchToPlayCamera(),this.expandInstances(r,!0),this.traverseEntity(n=>{n instanceof Yo&&n.updateUp()}),this.doPendingExpandCloner(),this.applyPendingCommands()}markNeedsRecomputeInstances(){this.needsRecomputeInstances=!0}markNeedsRecomputeInstancesForChildren(e){e.traverseEntity(r=>{(r.data.type==="Component"||r.data.type==="Instance")&&this.markNeedsRecomputeInstances()})}markNeedsRecomputeInstancesForAncessors(e){De.is(e)&&(e.data.type==="Component"&&this.markNeedsRecomputeInstances(),e.traverseAncestors(r=>{De.is(r)&&r.data.type==="Component"&&this.markNeedsRecomputeInstances()}))}relativeizeInner(e,r,o,n,a,s,l){if(e){let c=n.find(e);c&&c!==n&&a.forInstancesRec(u=>{u.data=si(u.data,d=>{let p=d.events.data(l.id),f=u.goUp(s);if(f){let h=[...ql(f.identity),e].join("-"),m=this.entityIdentityToEntity[h];if(m){let y=m.uuid,x=Ze.zoom(p,r);x[o]=y}else{if(!1)debugger;console.warn("cannot find instance")}}}).data})}}rewriteActions(e,r,o,n,a,s){e.forEach(l=>{l.data.type==="Transition"?this.relativeizeInner(l.data.object,[...r,l.id],"object",o,n,a,s):l.data.type==="Animation"?this.relativeizeInner(l.data.object,[...r,l.id],"object",o,n,a,s):l.data.type==="Conditional"&&(this.rewriteActions(l.data.ifActions,[...r,l.id,"ifActions"],o,n,a,s),this.rewriteActions(l.data.elseActions,[...r,l.id,"elseActions"],o,n,a,s))})}rewriteEventsBeforeGoToPlayMode(){this.traverseEntity(e=>{if(e instanceof Zo&&typeof e.identity=="string"&&e.data.type==="Component")return e.traverseEntity((r,o)=>{r.data.events.forEach(n=>{if(n.data.type==="GameControl"){let a=!1;if(r.forInstancesRec(s=>{s.data=si(s.data,l=>{s.isInstanceRoot||(l.events.delete(n.id),a=!0)}).data}),a===!1)for(let s of Jc.list)this.rewriteActions(n.data.gameActions[s],["gameActions",s],e,r,o,n)}else n.data.type==="Conditional"?(n.data.condition.type==="Distance"?(this.relativeizeInner(n.data.condition.fromObject,["condition"],"fromObject",e,r,o,n),this.relativeizeInner(n.data.condition.toObject,["condition"],"toObject",e,r,o,n)):n.data.condition.type==="State"?this.relativeizeInner(n.data.condition.object,["condition"],"object",e,r,o,n):n.data.condition.type==="Comparison"&&(n.data.condition.lOperand.type==="Property"&&this.relativeizeInner(n.data.condition.lOperand.value[0],["condition","lOperand","value"],0,e,r,o,n),n.data.condition.rOperand.type==="Property"&&this.relativeizeInner(n.data.condition.rOperand.value[0],["condition","rOperand","value"],0,e,r,o,n)),this.rewriteActions(n.data.inActions,["inActions"],e,r,o,n),this.rewriteActions(n.data.outActions,["outActions"],e,r,o,n)):"actions"in n.data&&this.rewriteActions(n.data.actions,["actions"],e,r,o,n)})}),!0})}expandInstances(e,r,o){let n=new Set;this.traverseEntity(a=>{if(a instanceof Zo&&a.isInstanceRoot)return a.expandInstanceChildren({scene:this,shared:e,pendingDeletes:n}),r||a.resetBBoxNeedsUpdate(),o&&a.traverseEntity(s=>{o.addClip(s)}),!0});for(let a of n)this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(a),Td(a)}recomputeInstances(e,r){this.needsRecomputeInstances&&(this.needsRecomputeInstances=!1,this.traverseEntity(o=>{o instanceof Zo&&o.isInstanceRoot&&(o.component=void 0)}),this.expandInstances(e,!1,r))}disposeAndUnregisterEntityRecursivelyIfNotReregistered(e){e.traverseEntity(r=>{let o=typeof r.identity=="string"?r.identity:r.identity.join("-");this.entityIdentityToEntity[o]===r&&(delete this.entityByUuid[r.uuid],delete this.entityIdentityToEntity[o]),r.dispose()})}clearScene(){for(let e of this.children)De.is(e)&&e.disposeRecursively();this.children.length=0}resetAfterClear(e,r){this.init(e,r)}raycast(e){return this.raycast1(e,!1)}raycast1(e,r){let o=[],n=a=>{for(let s of a.children){let l=s.cloner;if(De.is(s)&&!s.raycastLock&&(s.visible||l?.object.data.visible))if(r===!0&&s.isInstanceRoot){let c=[];if(e.intersectObject(s,!0,c),c.length){let u=c[0];u.object=s,u.point.applyMatrix4(u.object.matrixWorld);let d=s.matrixWorld.clone().invert();u.point.applyMatrix4(d),o.push(u)}}else(Ni(s)||Ml(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,o),Ll(s,e,o)),n(s)}};return n(this.activePage),o}raycastWithClones(e){let r=[],o=n=>{for(let a of n.children){let s=a.cloner;De.is(a)&&(a.visible||s?.object.data.visible)&&((Ni(a)||Ml(a)&&this.enableHelpers&&a.objectHelper.visible)&&(e.intersectObject(a,!1,r),Ll(a,e,r,!0)),o(a))}};return o(this),r}forEachEntity(e){for(let r of this.children)De.is(r)&&e(r)}traverseConcreteEntity(e){for(let r of this.children)De.is(r)&&r.isConcreteEntity&&r.traverseEntity(e)}traverseEntity(e){for(let r of this.children)De.is(r)&&r.traverseEntity(e)}updateFont(e,r){this.traverseEntity(o=>{if(o instanceof et&&o.data.type==="Mesh"&&(o.data.geometry.type==="TextGeometry"||o.data.geometry.type==="InputGeometry")&&o.data.geometry.font===e){let n=o.geometry,a=o.data.geometry;n.updateFont(e,r).then(()=>{n.update(a,r);let s=o.invalidateDownstreamBooleanData();Al(s)&&s.recomputeBoolean()})}})}traverseObject(e){for(let r of this.children)Go.is(r)&&r.traverseObject(e)}traverseVisibleEntity(e){for(let r of this.children)De.is(r)&&r.visible&&r.traverseVisibleEntity(e)}dispose(){this.clearScene()}createChildrenObjects(e,r,o){let n=0;for(let a of e)this.createObject(a.id,a.data,a.children,r,n,o),n+=1}registerObjectCreatedInLegacy(e){this.entityByUuid[e.uuid]=e}unregisterObject(e){delete this.entityByUuid[e.uuid];for(let r of e.children)this.unregisterObject(r)}createObject(e,r,o,n,a,s){let l={scene:this,shared:s},c=Id(e,r,l);return c instanceof Vi&&this.shapeBlendIntances.push(c),c&&(this.entityByUuid[e]=c,n.add(c),n.children.splice(a,0,n.children.pop()),o.length>0&&(c.isInstanceRoot?console.error("instance should not have children!"):this.createChildrenObjects(o,c,s)),c.updateState(r,l),c instanceof et&&c.updateGeometryGroupsIfNeeded(),c.updateVisible(this),c.cloner&&this.toExpandCloner.add(c),r.pathSnapping?.pathId&&this.pathConstraints.setConstraint(e,r.pathSnapping.pathId)),r.type==="Empty"&&r.animations&&c.traverseEntity(u=>{let d=u.dataPatched;if(u instanceof et&&d.bones&&d.boneInverses){let p=d.bones.map(m=>this.find(m)),f=d.boneInverses.map(m=>new eL().fromArray(m)),h=new oL(p,f);u.bind(h,u.bindMatrix)}else u.matrixAutoUpdate=!0}),c}getCenter(e){let r=[];for(let n=0,a=e.length;n<a;++n){let{id:s,recursive:l}=e[n],c=this.find(s),u=l?c.recursiveBBox:c.singleBBox;r.push(...u.vertices)}let o=new tL;return o.setFromPoints(r),o.getCenter(IS),IS}copyMatrixWorld(e,r){if(e===null){r.identity();return}let o=this.find(e);o?r.copy(o.matrixWorld):r.identity()}copyParentMatrixWorld(e,r){if(e===null){r.identity();return}let o=this.find(e)?.parent;o?r.copy(o.matrixWorld):r.identity()}traverseMaterial(e){this.traverseEntity(r=>{if(r instanceof Mt)if(Array.isArray(r.material))for(let o=0;o<r.material.length;o++)r.material[o]instanceof ir&&e(r.material[o]);else r.material instanceof ir&&e(r.material)})}updateViewPlaneSize(e,r,o=!1){this.traverseConcreteEntity(n=>{n instanceof Yo&&n.setViewplaneSize(e,r,o)})}initializeSplatViewer(){this.splatViewer=new zl({scene:this}),this.reloadSplats()}reloadSplats(){this.splatViewer?.loadSplat()}};import{DRACOLoader as nL}from"three/examples/jsm/loaders/DRACOLoader.js";var Ui;function ES(i){return Ui||(Ui=new nL,Ui.setDecoderPath(i?`${i}/`:"https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),Ui.decoderPending}async function aL(i){if(Ui){let t={attributeIDs:Ui.defaultAttributeIDs,attributeTypes:Ui.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await Ui.decodeGeometry(new Int8Array(i).buffer,t)}catch(r){console.error(r)}if(e)return{index:e.index?{array:e.index.array}:void 0,attributes:Object.entries(e.attributes).map(([r,o])=>({name:r,itemSize:o.itemSize,array:o.array}))}}return null}async function NS(i,t){let[e,r]=up(Bc.deserialize(new Uint8Array(i)));return ru(e),t&&t(e),r.result().data}function DS(i){let t=[];return i.scene.objects.traverse((e,r)=>{r.type==="Mesh"&&r.geometry.type==="NonParametricGeometry"&&r.geometry.data.draco!==void 0&&t.push(r)}),t}async function _S(i){for(let t of i){let e=await aL(t.geometry.data.draco);if(e){let r=t.geometry.data;e.index&&(r.index={array:e.index.array,itemSize:1,normalized:!1,type:"Uint32Array"});let o={};e.attributes.forEach(({name:n,array:a,itemSize:s})=>{o[n]={array:a,itemSize:s,type:"Float32Array",normalized:!1}}),r.attributes=o,r.draco=void 0}}}import{Mesh as wme}from"three";import{mergeBufferGeometries as Tme}from"three/examples/jsm/utils/BufferGeometryUtils.js";function RS(i){let t;if(!!i.index)for(let e=0;e<i.index.array.length;e+=3)t=i.index.array[e],i.index.array[e]=i.index.array[e+2],i.index.array[e+2]=t}import{Color as LS,ShaderLib as sL}from"three";function BS(i){let t=new Set;return i.traverse(e=>{if(e instanceof nr)if(pt(e.material))e.material.forEach(r=>{let o=r;t.has(o)||t.add(o)});else{let r=e.material;t.has(r)||t.add(r)}}),t.forEach(e=>{if(e instanceof Array)return;let r=e.onBeforeCompile.bind(e);if(lL(e)){Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new LS,specularColor:new LS});let o=0;e.onBeforeCompile=(n,a)=>{r&&r(n,a),n.uniforms=Object.assign({},sL.physical.uniforms,n.uniforms),e.getLayersOfType("transmission").forEach(s=>{if(n.uniforms.transmissionSamplerMap.value){let l=s.color;l&&(l.transmissionSamplerMap.value=n.uniforms.transmissionSamplerMap.value,l.transmissionSamplerSize.value=n.uniforms.transmissionSamplerSize.value,l.aspectRatio.value=ev(window.innerWidth,window.innerHeight),e.defines.IS_THREEJS_EXPORT=!0)}else o++,o<2&&(e.needsUpdate=!0)})}}else cL(e)||(e.onBeforeCompile=(o,n)=>{r&&r(o,n),e.transparent=!1})}),i}function lL(i){return i.getLayersOfType("transmission").length>0}function cL(i){let t=0;for(let e of i.layers){if(e.data.type!=="displace"&&e.data.isMask)return!0;if(e.type!=="light"&&e.type!=="fresnel"){let o=e.uniforms["f"+e.id+"_alpha"];o&&(t+=(1-t)*o.value)}}return t<1}function VS(i){return i.traverse(t=>{if(t.type==="Camera"){let e=t;e.type=e.cameraType}}),i}function zS(i){let t=[],e=(r,o=0)=>{let n=o>0?r+o:r;return t.includes(n)?e(r,o+1):n};return i.traverse(r=>{if(t.includes(r.name)){let o=r.name,n=e(r.name);if(r.name=n,r.isMesh){let a=r;a.material instanceof Array?a.material.forEach(s=>{s.name=s.name.replace(o,n)}):a.material.isAsset||(a.material.name=a.material.name.replace(o,n))}}t.push(r.name)}),i}import{mergeBufferGeometries as uL}from"three/examples/jsm/utils/BufferGeometryUtils.js";function GS(i){let t=[];return i.traverse(e=>{e instanceof Ei&&t.push(e)}),t.forEach(e=>{let r=e.object,a=[...e.children.map(s=>{s.updateMatrix();let l;if(s.geometry!==void 0)try{l=s.geometry.clone().applyMatrix4(s.matrix)}catch(c){console.error(c)}return l!==void 0&&s.matrix.determinant()<0&&RS(l),l}).filter(s=>s!==void 0)];if(!e.parameters.hideBase&&r instanceof Mt&&a.unshift(r.geometry),a.length){let s=uL(a);r instanceof Mt&&(r.geometry=s)}e.removeFromParent(),r.setFromClonerState(null,{scene:i,shared:Pv})}),i}function FS(i){return i.traverse(t=>{t.matrixAutoUpdate=!0}),i}function jS(i){Object.values(i.shared.materials).forEach(t=>{lm(t)}),i.scene.objects.traverse((t,e)=>{"material"in e?lm(e.material):"materials"in e&&e.materials.forEach(r=>{lm(r)})})}function lm(i){if(typeof i=="string")return;let t=[];i.layers.forEach((e,r)=>{e.type==="outline"&&t.push(r)}),t.reverse().forEach(e=>{i.layers.delete(e)}),t.length&&console.warn("The Spline Loader currently does not support the outline layer.")}var WS=Is(kS(),1);var HS="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",cm=class extends pL{load(t,e,r,o=console.error){let n=new dL(this.manager);n.setPath(this.path),n.setResponseType("arraybuffer"),n.setRequestHeader(this.requestHeader),n.setWithCredentials(this.withCredentials),t.endsWith(".spline")?console.warn(HS+" The .spline files are only meant to be used by the Editor."):t.endsWith(".splinecode")||console.warn(HS),n.load(t,async a=>{try{if(typeof a=="string")throw new Error("The .spline file is not binary!");let s=await this.parse(a);e(s)}catch(s){o(s)}},r,o)}async parse(t){let e=await NS(t,jS),r=DS(e);e.version&&(0,WS.default)(e.version,"1.10.89")>0&&console.warn("Your .splinecode file is more recent than the library. Please upgrade @splinetool/loader to the latest version."),await Promise.allSettled([r.length&&ES(),Nv(e)&&Mb(),jv(e)&&mv(),O1(e)&&S1(),zd(e)&&sm()].filter(Boolean)),r.length&&await _S(r);let o=!1,n=new gn(e.shared,{},o);Object.values(n.getMaterials()).forEach(l=>Object.assign(l,{isAsset:!0}));let a=new Fd(e.scene,n);zd(e)&&a.initializeSplatViewer();let s=a.activeCamera;return s&&Object.assign(s,{makeDefault:!0}),a=GS(a),a=BS(a),a=VS(a),a=zS(a),a=FS(a),a}};export{cm as default};
|