@splinetool/loader 1.1.6 → 1.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,17 +1,17 @@
1
- "use strict";var RS=Object.create;var js=Object.defineProperty;var VS=Object.getOwnPropertyDescriptor;var zS=Object.getOwnPropertyNames;var GS=Object.getPrototypeOf,jS=Object.prototype.hasOwnProperty;var FS=(n,r,e)=>r in n?js(n,r,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[r]=e;var Zn=(n,r)=>()=>(r||n((r={exports:{}}).exports,r),r.exports),Ch=(n,r)=>{for(var e in r)js(n,e,{get:r[e],enumerable:!0})},Th=(n,r,e,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of zS(r))!jS.call(n,o)&&o!==e&&js(n,o,{get:()=>r[o],enumerable:!(t=VS(r,o))||t.enumerable});return n};var _i=(n,r,e)=>(e=n!=null?RS(GS(n)):{},Th(r||!n||!n.__esModule?js(e,"default",{value:n,enumerable:!0}):e,n)),US=n=>Th(js({},"__esModule",{value:!0}),n);var Jn=(n,r,e)=>(FS(n,typeof r!="symbol"?r+"":r,e),e);var sx=Zn((Ep,ax)=>{(function(n,r){typeof Ep=="object"?ax.exports=r():typeof define=="function"&&define.amd?define(r):n.Alea=r()})(Ep,function(){"use strict";return n.importState=function(e){var t=new n;return t.importState(e),t},n;function n(){return function(e){var t=0,o=0,i=0,a=1;e.length==0&&(e=[+new Date]);var s=r();t=s(" "),o=s(" "),i=s(" ");for(var l=0;l<e.length;l++)t-=s(e[l]),t<0&&(t+=1),o-=s(e[l]),o<0&&(o+=1),i-=s(e[l]),i<0&&(i+=1);s=null;var c=function(){var u=2091639*t+a*23283064365386963e-26;return t=o,o=i,i=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[t,o,i,a]},c.importState=function(u){t=+u[0]||0,o=+u[1]||0,i=+u[2]||0,a=+u[3]||0},c}(Array.prototype.slice.call(arguments))}function r(){var e=4022871197,t=function(o){o=o.toString();for(var i=0;i<o.length;i++){e+=o.charCodeAt(i);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 t.version="Mash 0.9",t}})});var fx=Zn((gu,px)=>{(function(n,r){typeof gu=="object"&&typeof px<"u"?r(gu):typeof define=="function"&&define.amd?define(["exports"],r):r((n=typeof globalThis<"u"?globalThis:n||self).SVDJS={})})(gu,function(n){"use strict";n.SVD=function(r,e,t,o,i){if(e=e===void 0||e,t=t===void 0||t,i=1e-64/(o=o||Math.pow(2,-52)),!r)throw new TypeError("Matrix a is not defined");var a,s,l,c,u,p,d,h,f,m,y,g,v=r[0].length,O=r.length;if(O<v)throw new TypeError("Invalid matrix: m < n");for(var P=[],S=[],T=[],I=e==="f"?O:v,x=m=d=0;x<O;x++)S[x]=new Array(I).fill(0);for(x=0;x<v;x++)T[x]=new Array(v).fill(0);var _,D=new Array(v).fill(0);for(x=0;x<O;x++)for(a=0;a<v;a++)S[x][a]=r[x][a];for(x=0;x<v;x++){for(P[x]=d,f=0,l=x+1,a=x;a<O;a++)f+=Math.pow(S[a][x],2);if(f<i)d=0;else for(h=(p=S[x][x])*(d=p<0?Math.sqrt(f):-Math.sqrt(f))-f,S[x][x]=p-d,a=l;a<v;a++){for(f=0,s=x;s<O;s++)f+=S[s][x]*S[s][a];for(p=f/h,s=x;s<O;s++)S[s][a]=S[s][a]+p*S[s][x]}for(D[x]=d,f=0,a=l;a<v;a++)f+=Math.pow(S[x][a],2);if(f<i)d=0;else{for(h=(p=S[x][x+1])*(d=p<0?Math.sqrt(f):-Math.sqrt(f))-f,S[x][x+1]=p-d,a=l;a<v;a++)P[a]=S[x][a]/h;for(a=l;a<O;a++){for(f=0,s=l;s<v;s++)f+=S[a][s]*S[x][s];for(s=l;s<v;s++)S[a][s]=S[a][s]+f*P[s]}}m<(y=Math.abs(D[x])+Math.abs(P[x]))&&(m=y)}if(t)for(x=v-1;0<=x;x--){if(d!==0){for(h=S[x][x+1]*d,a=l;a<v;a++)T[a][x]=S[x][a]/h;for(a=l;a<v;a++){for(f=0,s=l;s<v;s++)f+=S[x][s]*T[s][a];for(s=l;s<v;s++)T[s][a]=T[s][a]+f*T[s][x]}}for(a=l;a<v;a++)T[x][a]=0,T[a][x]=0;T[x][x]=1,d=P[x],l=x}if(e){if(e==="f")for(x=v;x<O;x++){for(a=v;a<O;a++)S[x][a]=0;S[x][x]=1}for(x=v-1;0<=x;x--){for(l=x+1,d=D[x],a=l;a<I;a++)S[x][a]=0;if(d!==0){for(h=S[x][x]*d,a=l;a<I;a++){for(f=0,s=l;s<O;s++)f+=S[s][x]*S[s][a];for(p=f/h,s=x;s<O;s++)S[s][a]=S[s][a]+p*S[s][x]}for(a=x;a<O;a++)S[a][x]=S[a][x]/d}else for(a=x;a<O;a++)S[a][x]=0;S[x][x]=S[x][x]+1}}for(o*=m,s=v-1;0<=s;s--)for(var A=0;A<50;A++){for(_=!1,l=s;0<=l;l--){if(Math.abs(P[l])<=o){_=!0;break}if(Math.abs(D[l-1])<=o)break}if(!_){for(u=0,c=l-(f=1),x=l;x<s+1&&(p=f*P[x],P[x]=u*P[x],!(Math.abs(p)<=o));x++)if(d=D[x],D[x]=Math.sqrt(p*p+d*d),u=d/(h=D[x]),f=-p/h,e)for(a=0;a<O;a++)y=S[a][c],g=S[a][x],S[a][c]=y*u+g*f,S[a][x]=-y*f+g*u}if(g=D[s],l===s){if(g<0&&(D[s]=-g,t))for(a=0;a<v;a++)T[a][s]=-T[a][s];break}for(m=D[l],p=(((y=D[s-1])-g)*(y+g)+((d=P[s-1])-(h=P[s]))*(d+h))/(2*h*y),d=Math.sqrt(p*p+1),p=((m-g)*(m+g)+h*(y/(p<0?p-d:p+d)-h))/m,x=l+(f=u=1);x<s+1;x++){if(d=P[x],y=D[x],h=f*d,d*=u,g=Math.sqrt(p*p+h*h),p=m*(u=p/(P[x-1]=g))+d*(f=h/g),d=-m*f+d*u,h=y*f,y*=u,t)for(a=0;a<v;a++)m=T[a][x-1],g=T[a][x],T[a][x-1]=m*u+g*f,T[a][x]=-m*f+g*u;if(g=Math.sqrt(p*p+h*h),p=(u=p/(D[x-1]=g))*d+(f=h/g)*y,m=-f*d+u*y,e)for(a=0;a<O;a++)y=S[a][x-1],g=S[a][x],S[a][x-1]=y*u+g*f,S[a][x]=-y*f+g*u}P[l]=0,P[s]=p,D[s]=m}for(x=0;x<v;x++)D[x]<o&&(D[x]=0);return{u:S,q:D,v:T}},n.VERSION="1.1.1",Object.defineProperty(n,"__esModule",{value:!0})})});var kx=Zn((Qp,Zp)=>{(function(n,r){typeof Qp=="object"&&typeof Zp<"u"?Zp.exports=r():typeof define=="function"&&define.amd?define(r):(n=n||self,n.TinyQueue=r())})(Qp,function(){"use strict";var n=function(t,o){if(t===void 0&&(t=[]),o===void 0&&(o=r),this.data=t,this.length=this.data.length,this.compare=o,this.length>0)for(var i=(this.length>>1)-1;i>=0;i--)this._down(i)};n.prototype.push=function(t){this.data.push(t),this.length++,this._up(this.length-1)},n.prototype.pop=function(){if(this.length!==0){var t=this.data[0],o=this.data.pop();return this.length--,this.length>0&&(this.data[0]=o,this._down(0)),t}},n.prototype.peek=function(){return this.data[0]},n.prototype._up=function(t){for(var o=this,i=o.data,a=o.compare,s=i[t];t>0;){var l=t-1>>1,c=i[l];if(a(s,c)>=0)break;i[t]=c,t=l}i[t]=s},n.prototype._down=function(t){for(var o=this,i=o.data,a=o.compare,s=this.length>>1,l=i[t];t<s;){var c=(t<<1)+1,u=i[c],p=c+1;if(p<this.length&&a(i[p],u)<0&&(c=p,u=i[p]),a(u,l)>=0)break;i[t]=u,t=c}i[t]=l};function r(e,t){return e<t?-1:e>t?1:0}return n})});var Wx=Zn((wk,Jp)=>{"use strict";var wu=kx();wu.default&&(wu=wu.default);Jp.exports=Hx;Jp.exports.default=Hx;function Hx(n,r,e){r=r||1;for(var t,o,i,a,s=0;s<n[0].length;s++){var l=n[0][s];(!s||l[0]<t)&&(t=l[0]),(!s||l[1]<o)&&(o=l[1]),(!s||l[0]>i)&&(i=l[0]),(!s||l[1]>a)&&(a=l[1])}var c=i-t,u=a-o,p=Math.min(c,u),d=p/2;if(p===0){var h=[t,o];return h.distance=0,h}for(var f=new wu(void 0,RA),m=t;m<i;m+=p)for(var y=o;y<a;y+=p)f.push(new Nn(m+d,y+d,d,n));var g=zA(n),v=new Nn(t+c/2,o+u/2,0,n);v.d>g.d&&(g=v);for(var O=f.length;f.length;){var P=f.pop();P.d>g.d&&(g=P,e&&console.log("found best %d after %d probes",Math.round(1e4*P.d)/1e4,O)),!(P.max-g.d<=r)&&(d=P.h/2,f.push(new Nn(P.x-d,P.y-d,d,n)),f.push(new Nn(P.x+d,P.y-d,d,n)),f.push(new Nn(P.x-d,P.y+d,d,n)),f.push(new Nn(P.x+d,P.y+d,d,n)),O+=4)}e&&(console.log("num probes: "+O),console.log("best distance: "+g.d));var S=[g.x,g.y];return S.distance=g.d,S}function RA(n,r){return r.max-n.max}function Nn(n,r,e,t){this.x=n,this.y=r,this.h=e,this.d=VA(n,r,t),this.max=this.d+this.h*Math.SQRT2}function VA(n,r,e){for(var t=!1,o=1/0,i=0;i<e.length;i++)for(var a=e[i],s=0,l=a.length,c=l-1;s<l;c=s++){var u=a[s],p=a[c];u[1]>r!=p[1]>r&&n<(p[0]-u[0])*(r-u[1])/(p[1]-u[1])+u[0]&&(t=!t),o=Math.min(o,GA(n,r,u,p))}return o===0?0:(t?1:-1)*Math.sqrt(o)}function zA(n){for(var r=0,e=0,t=0,o=n[0],i=0,a=o.length,s=a-1;i<a;s=i++){var l=o[i],c=o[s],u=l[0]*c[1]-c[0]*l[1];e+=(l[0]+c[0])*u,t+=(l[1]+c[1])*u,r+=u*3}return r===0?new Nn(o[0][0],o[0][1],0,n):new Nn(e/r,t/r,0,n)}function GA(n,r,e,t){var o=e[0],i=e[1],a=t[0]-o,s=t[1]-i;if(a!==0||s!==0){var l=((n-o)*a+(r-i)*s)/(a*a+s*s);l>1?(o=t[0],i=t[1]):l>0&&(o+=a*l,i+=s*l)}return a=n-o,s=r-i,a*a+s*s}});var sv=Zn((jJ,av)=>{"use strict";function xI(n,r){function e(){this.constructor=n}e.prototype=r.prototype,n.prototype=new e}function Ci(n,r,e,t){this.message=n,this.expected=r,this.found=e,this.location=t,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,Ci)}xI(Ci,Error);Ci.buildMessage=function(n,r){var e={literal:function(c){return'"'+o(c.text)+'"'},class:function(c){var u="",p;for(p=0;p<c.parts.length;p++)u+=c.parts[p]instanceof Array?i(c.parts[p][0])+"-"+i(c.parts[p][1]):i(c.parts[p]);return"["+(c.inverted?"^":"")+u+"]"},any:function(c){return"any character"},end:function(c){return"end of input"},other:function(c){return c.description}};function t(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"+t(u)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(u){return"\\x"+t(u)})}function i(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"+t(u)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(u){return"\\x"+t(u)})}function a(c){return e[c.type](c)}function s(c){var u=new Array(c.length),p,d;for(p=0;p<c.length;p++)u[p]=a(c[p]);if(u.sort(),u.length>0){for(p=1,d=1;p<u.length;p++)u[p-1]!==u[p]&&(u[d]=u[p],d++);u.length=d}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(n)+" but "+l(r)+" found."};function bI(n,r){r=r!==void 0?r:{};var e={},t={svg_path:Gs},o=Gs,i=function(b){if(!b)return[];for(var w=[],L=0;L<b.length;L++)w=w.concat.apply(w,b[L]);var M=w[0];return M&&M.code=="m"&&(delete M.relative,M.code="M"),w},a=function(b,w){return LS(b,w)},s=/^[Mm]/,l=nt(["M","m"],!1,!1),c=function(b,w,L){var M=Di(b,[w]);return L&&(M=M.concat(Di(b=="M"?"L":"l",L[1]))),M},u=/^[Zz]/,p=nt(["Z","z"],!1,!1),d=function(){return Di("Z")},h=/^[Ll]/,f=nt(["L","l"],!1,!1),m=function(b,w){return Di(b,w)},y=/^[Hh]/,g=nt(["H","h"],!1,!1),v=function(b,w){return Di(b,w.map(function(L){return{x:L}}))},O=/^[Vv]/,P=nt(["V","v"],!1,!1),S=function(b,w){return Di(b,w.map(function(L){return{y:L}}))},T=/^[Cc]/,I=nt(["C","c"],!1,!1),x=function(b,w,L){return{x1:b.x,y1:b.y,x2:w.x,y2:w.y,x:L.x,y:L.y}},_=/^[Ss]/,D=nt(["S","s"],!1,!1),A=function(b,w){return{x2:b.x,y2:b.y,x:w.x,y:w.y}},N=/^[Qq]/,E=nt(["Q","q"],!1,!1),B=function(b,w){return{x1:b.x,y1:b.y,x:w.x,y:w.y}},V=/^[Tt]/,j=nt(["T","t"],!1,!1),R=/^[Aa]/,W=nt(["A","a"],!1,!1),F=function(b,w,L,M,z,oe){return{rx:b,ry:w,xAxisRotation:L,largeArc:M,sweep:z,x:oe.x,y:oe.y}},k=function(b,w){return{x:b,y:w}},H=function(b){return b*1},$=function(b){return b.join("")*1},J=/^[01]/,Z=nt(["0","1"],!1,!1),X=function(b){return b=="1"},te=function(){return""},Y=",",ee=mt(",",!1),K=function(b){return b.join("")},q=".",ue=mt(".",!1),le=/^[eE]/,ne=nt(["e","E"],!1,!1),ce=/^[+\-]/,ae=nt(["+","-"],!1,!1),me=/^[0-9]/,fe=nt([["0","9"]],!1,!1),he=function(b){return b.join("")},xe=/^[ \t\n\r]/,ye=nt([" "," ",`
2
- `,"\r"],!1,!1),C=0,ie=0,Re=[{line:1,column:1}],Fe=0,Ve=[],Ce=0,Bt;if("startRule"in r){if(!(r.startRule in t))throw new Error(`Can't start parsing from rule "`+r.startRule+'".');o=t[r.startRule]}function Ee(){return n.substring(ie,C)}function Dt(){return Xn(ie,C)}function Lt(b,w){throw w=w!==void 0?w:Xn(ie,C),Br([Ld(b)],n.substring(ie,C),w)}function Yn(b,w){throw w=w!==void 0?w:Xn(ie,C),Rd(b,w)}function mt(b,w){return{type:"literal",text:b,ignoreCase:w}}function nt(b,w,L){return{type:"class",parts:b,inverted:w,ignoreCase:L}}function Xr(){return{type:"any"}}function Bd(){return{type:"end"}}function Ld(b){return{type:"other",description:b}}function Kl(b){var w=Re[b],L;if(w)return w;for(L=b-1;!Re[L];)L--;for(w=Re[L],w={line:w.line,column:w.column};L<b;)n.charCodeAt(L)===10?(w.line++,w.column=1):w.column++,L++;return Re[b]=w,w}function Xn(b,w){var L=Kl(b),M=Kl(w);return{start:{offset:b,line:L.line,column:L.column},end:{offset:w,line:M.line,column:M.column}}}function wt(b){C<Fe||(C>Fe&&(Fe=C,Ve=[]),Ve.push(b))}function Rd(b,w){return new Ci(b,null,null,w)}function Br(b,w,L){return new Ci(Ci.buildMessage(b,w),b,w,L)}function Gs(){var b,w,L,M,z;for(b=C,w=[],L=Ue();L!==e;)w.push(L),L=Ue();if(w!==e)if(L=rr(),L===e&&(L=null),L!==e){for(M=[],z=Ue();z!==e;)M.push(z),z=Ue();M!==e?(ie=b,w=i(L),b=w):(C=b,b=e)}else C=b,b=e;else C=b,b=e;return b}function rr(){var b,w,L,M,z,oe;if(b=C,w=Kn(),w!==e){for(L=[],M=C,z=[],oe=Ue();oe!==e;)z.push(oe),oe=Ue();for(z!==e?(oe=Kn(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);M!==e;){for(L.push(M),M=C,z=[],oe=Ue();oe!==e;)z.push(oe),oe=Ue();z!==e?(oe=Kn(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e)}L!==e?(ie=b,w=a(w,L),b=w):(C=b,b=e)}else C=b,b=e;return b}function Kn(){var b,w,L,M,z,oe;if(b=C,w=Ii(),w!==e){for(L=[],M=C,z=[],oe=Ue();oe!==e;)z.push(oe),oe=Ue();for(z!==e?(oe=Ql(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);M!==e;){for(L.push(M),M=C,z=[],oe=Ue();oe!==e;)z.push(oe),oe=Ue();z!==e?(oe=Ql(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e)}L!==e?(ie=b,w=a(w,L),b=w):(C=b,b=e)}else C=b,b=e;return b}function Ql(){var b;return b=vS(),b===e&&(b=SS(),b===e&&(b=wS(),b===e&&(b=PS(),b===e&&(b=OS(),b===e&&(b=TS(),b===e&&(b=MS(),b===e&&(b=NS(),b===e&&(b=ES())))))))),b}function Ii(){var b,w,L,M,z,oe,Ei;if(b=C,s.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Ce===0&&wt(l)),w!==e){for(L=[],M=Ue();M!==e;)L.push(M),M=Ue();L!==e?(M=ar(),M!==e?(z=C,oe=dt(),oe===e&&(oe=null),oe!==e?(Ei=gh(),Ei!==e?(oe=[oe,Ei],z=oe):(C=z,z=e)):(C=z,z=e),z===e&&(z=null),z!==e?(ie=b,w=c(w,M,z),b=w):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function vS(){var b,w;return b=C,u.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Ce===0&&wt(p)),w!==e&&(ie=b,w=d()),b=w,b}function SS(){var b,w,L,M;if(b=C,h.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Ce===0&&wt(f)),w!==e){for(L=[],M=Ue();M!==e;)L.push(M),M=Ue();L!==e?(M=gh(),M!==e?(ie=b,w=m(w,M),b=w):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function gh(){var b,w,L,M,z,oe;if(b=C,w=ar(),w!==e){for(L=[],M=C,z=dt(),z===e&&(z=null),z!==e?(oe=ar(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);M!==e;)L.push(M),M=C,z=dt(),z===e&&(z=null),z!==e?(oe=ar(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);L!==e?(ie=b,w=a(w,L),b=w):(C=b,b=e)}else C=b,b=e;return b}function wS(){var b,w,L,M;if(b=C,y.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Ce===0&&wt(g)),w!==e){for(L=[],M=Ue();M!==e;)L.push(M),M=Ue();L!==e?(M=xh(),M!==e?(ie=b,w=v(w,M),b=w):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function xh(){var b,w,L,M,z,oe;if(b=C,w=Ni(),w!==e){for(L=[],M=C,z=dt(),z===e&&(z=null),z!==e?(oe=Ni(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);M!==e;)L.push(M),M=C,z=dt(),z===e&&(z=null),z!==e?(oe=Ni(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);L!==e?(ie=b,w=a(w,L),b=w):(C=b,b=e)}else C=b,b=e;return b}function PS(){var b,w,L,M;if(b=C,O.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Ce===0&&wt(P)),w!==e){for(L=[],M=Ue();M!==e;)L.push(M),M=Ue();L!==e?(M=xh(),M!==e?(ie=b,w=S(w,M),b=w):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function OS(){var b,w,L,M;if(b=C,T.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Ce===0&&wt(I)),w!==e){for(L=[],M=Ue();M!==e;)L.push(M),M=Ue();L!==e?(M=CS(),M!==e?(ie=b,w=m(w,M),b=w):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function CS(){var b,w,L,M,z,oe;if(b=C,w=Vd(),w!==e){for(L=[],M=C,z=dt(),z===e&&(z=null),z!==e?(oe=Vd(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);M!==e;)L.push(M),M=C,z=dt(),z===e&&(z=null),z!==e?(oe=Vd(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);L!==e?(ie=b,w=a(w,L),b=w):(C=b,b=e)}else C=b,b=e;return b}function Vd(){var b,w,L,M,z,oe;return b=C,w=ar(),w!==e?(L=dt(),L===e&&(L=null),L!==e?(M=ar(),M!==e?(z=dt(),z===e&&(z=null),z!==e?(oe=ar(),oe!==e?(ie=b,w=x(w,M,oe),b=w):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e),b}function TS(){var b,w,L,M;if(b=C,_.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Ce===0&&wt(D)),w!==e){for(L=[],M=Ue();M!==e;)L.push(M),M=Ue();L!==e?(M=AS(),M!==e?(ie=b,w=m(w,M),b=w):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function AS(){var b,w,L,M,z,oe;if(b=C,w=zd(),w!==e){for(L=[],M=C,z=dt(),z===e&&(z=null),z!==e?(oe=zd(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);M!==e;)L.push(M),M=C,z=dt(),z===e&&(z=null),z!==e?(oe=zd(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);L!==e?(ie=b,w=a(w,L),b=w):(C=b,b=e)}else C=b,b=e;return b}function zd(){var b,w,L,M;return b=C,w=ar(),w!==e?(L=dt(),L===e&&(L=null),L!==e?(M=ar(),M!==e?(ie=b,w=A(w,M),b=w):(C=b,b=e)):(C=b,b=e)):(C=b,b=e),b}function MS(){var b,w,L,M;if(b=C,N.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Ce===0&&wt(E)),w!==e){for(L=[],M=Ue();M!==e;)L.push(M),M=Ue();L!==e?(M=IS(),M!==e?(ie=b,w=m(w,M),b=w):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function IS(){var b,w,L,M,z,oe;if(b=C,w=Gd(),w!==e){for(L=[],M=C,z=dt(),z===e&&(z=null),z!==e?(oe=Gd(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);M!==e;)L.push(M),M=C,z=dt(),z===e&&(z=null),z!==e?(oe=Gd(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);L!==e?(ie=b,w=a(w,L),b=w):(C=b,b=e)}else C=b,b=e;return b}function Gd(){var b,w,L,M;return b=C,w=ar(),w!==e?(L=dt(),L===e&&(L=null),L!==e?(M=ar(),M!==e?(ie=b,w=B(w,M),b=w):(C=b,b=e)):(C=b,b=e)):(C=b,b=e),b}function NS(){var b,w,L,M;if(b=C,V.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Ce===0&&wt(j)),w!==e){for(L=[],M=Ue();M!==e;)L.push(M),M=Ue();L!==e?(M=DS(),M!==e?(ie=b,w=m(w,M),b=w):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function DS(){var b,w,L,M,z,oe;if(b=C,w=ar(),w!==e){for(L=[],M=C,z=dt(),z===e&&(z=null),z!==e?(oe=ar(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);M!==e;)L.push(M),M=C,z=dt(),z===e&&(z=null),z!==e?(oe=ar(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);L!==e?(ie=b,w=a(w,L),b=w):(C=b,b=e)}else C=b,b=e;return b}function ES(){var b,w,L,M;if(b=C,R.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Ce===0&&wt(W)),w!==e){for(L=[],M=Ue();M!==e;)L.push(M),M=Ue();L!==e?(M=_S(),M!==e?(ie=b,w=m(w,M),b=w):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function _S(){var b,w,L,M,z,oe;if(b=C,w=jd(),w!==e){for(L=[],M=C,z=dt(),z===e&&(z=null),z!==e?(oe=jd(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);M!==e;)L.push(M),M=C,z=dt(),z===e&&(z=null),z!==e?(oe=jd(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);L!==e?(ie=b,w=a(w,L),b=w):(C=b,b=e)}else C=b,b=e;return b}function jd(){var b,w,L,M,z,oe,Ei,Ud,Jl,kd,ec,Hd;return b=C,w=bh(),w!==e?(L=dt(),L===e&&(L=null),L!==e?(M=bh(),M!==e?(z=dt(),z===e&&(z=null),z!==e?(oe=Ni(),oe!==e?(Ei=dt(),Ei!==e?(Ud=vh(),Ud!==e?(Jl=dt(),Jl===e&&(Jl=null),Jl!==e?(kd=vh(),kd!==e?(ec=dt(),ec===e&&(ec=null),ec!==e?(Hd=ar(),Hd!==e?(ie=b,w=F(w,M,oe,Ud,kd,Hd),b=w):(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 ar(){var b,w,L,M;return b=C,w=Ni(),w!==e?(L=dt(),L===e&&(L=null),L!==e?(M=Ni(),M!==e?(ie=b,w=k(w,M),b=w):(C=b,b=e)):(C=b,b=e)):(C=b,b=e),b}function bh(){var b,w;return b=C,w=wh(),w===e&&(w=Qn()),w!==e&&(ie=b,w=H(w)),b=w,b}function Ni(){var b,w,L,M;return b=C,w=C,L=Fd(),L===e&&(L=null),L!==e?(M=wh(),M!==e?(L=[L,M],w=L):(C=w,w=e)):(C=w,w=e),w===e&&(w=C,L=Fd(),L===e&&(L=null),L!==e?(M=Qn(),M!==e?(L=[L,M],w=L):(C=w,w=e)):(C=w,w=e)),w!==e&&(ie=b,w=$(w)),b=w,b}function vh(){var b,w;return b=C,J.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Ce===0&&wt(Z)),w!==e&&(ie=b,w=X(w)),b=w,b}function dt(){var b,w,L,M,z;if(b=C,w=[],L=Ue(),L!==e)for(;L!==e;)w.push(L),L=Ue();else w=e;if(w!==e)if(L=Sh(),L===e&&(L=null),L!==e){for(M=[],z=Ue();z!==e;)M.push(z),z=Ue();M!==e?(w=[w,L,M],b=w):(C=b,b=e)}else C=b,b=e;else C=b,b=e;if(b===e){if(b=C,w=C,L=Sh(),L!==e){for(M=[],z=Ue();z!==e;)M.push(z),z=Ue();M!==e?(L=[L,M],w=L):(C=w,w=e)}else C=w,w=e;w!==e&&(ie=b,w=te()),b=w}return b}function Sh(){var b;return n.charCodeAt(C)===44?(b=Y,C++):(b=e,Ce===0&&wt(ee)),b}function wh(){var b,w,L,M;return b=C,w=C,L=BS(),L!==e?(M=Ph(),M===e&&(M=null),M!==e?(L=[L,M],w=L):(C=w,w=e)):(C=w,w=e),w===e&&(w=C,L=Qn(),L!==e?(M=Ph(),M!==e?(L=[L,M],w=L):(C=w,w=e)):(C=w,w=e)),w!==e&&(ie=b,w=K(w)),b=w,b}function BS(){var b,w,L,M,z;return b=C,w=C,L=Qn(),L===e&&(L=null),L!==e?(n.charCodeAt(C)===46?(M=q,C++):(M=e,Ce===0&&wt(ue)),M!==e?(z=Qn(),z!==e?(L=[L,M,z],w=L):(C=w,w=e)):(C=w,w=e)):(C=w,w=e),w===e&&(w=C,L=Qn(),L!==e?(n.charCodeAt(C)===46?(M=q,C++):(M=e,Ce===0&&wt(ue)),M!==e?(L=[L,M],w=L):(C=w,w=e)):(C=w,w=e)),w!==e&&(ie=b,w=K(w)),b=w,b}function Ph(){var b,w,L,M,z;return b=C,w=C,le.test(n.charAt(C))?(L=n.charAt(C),C++):(L=e,Ce===0&&wt(ne)),L!==e?(M=Fd(),M===e&&(M=null),M!==e?(z=Qn(),z!==e?(L=[L,M,z],w=L):(C=w,w=e)):(C=w,w=e)):(C=w,w=e),w!==e&&(ie=b,w=K(w)),b=w,b}function Fd(){var b;return ce.test(n.charAt(C))?(b=n.charAt(C),C++):(b=e,Ce===0&&wt(ae)),b}function Qn(){var b,w,L;if(b=C,w=[],me.test(n.charAt(C))?(L=n.charAt(C),C++):(L=e,Ce===0&&wt(fe)),L!==e)for(;L!==e;)w.push(L),me.test(n.charAt(C))?(L=n.charAt(C),C++):(L=e,Ce===0&&wt(fe));else w=e;return w!==e&&(ie=b,w=he(w)),b=w,b}function Ue(){var b,w;return b=C,xe.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Ce===0&&wt(ye)),w!==e&&(ie=b,w=te()),b=w,b}function LS(b,w){if(!w)return[b];for(var L=[b],M=0,z=w.length;M<z;M++)L[M+1]=w[M][1];return L}var Zl={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 Oh in Zl)Zl[Oh.toUpperCase()]=Zl[Oh];function Di(b,w){w||(w=[{}]);for(var L=w.length;L--;){var M={code:b,command:Zl[b]};b==b.toLowerCase()&&(M.relative=!0);for(var z in w[L])M[z]=w[L][z];w[L]=M}return w}if(Bt=o(),Bt!==e&&C===n.length)return Bt;throw Bt!==e&&C<n.length&&wt(Bd()),Br(Ve,Fe<n.length?n.charAt(Fe):null,Fe<n.length?Xn(Fe,Fe+1):Xn(Fe,Fe))}av.exports={SyntaxError:Ci,parse:bI}});var ah=Zn((FJ,lv)=>{var gd=sv().parse;gd.parseSVG=gd;gd.makeAbsolute=vI;lv.exports=gd;function vI(n){var r,e={x:0,y:0},t={x:"x0",y:"y0",x1:"x0",y1:"y0",x2:"x0",y2:"y0"};return n.forEach(function(o){o.command==="moveto"&&(r=o),o.x0=e.x,o.y0=e.y;for(var i in t)i in o&&(o[i]+=o.relative?o[t[i]]: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=r.x,o.y=r.y),e=o}),n}});var yS=Zn((aae,mS)=>{mS.exports=function(r,e){for(var t=r.split("."),o=e.split("."),i=0;i<3;i++){var a=Number(t[i]),s=Number(o[i]);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}});var FI={};Ch(FI,{default:()=>Ed});module.exports=US(FI);var _d=require("three");function tc(n){for(let r of Object.keys(n))n[r]===void 0&&delete n[r];return n}function sr(n,r){return Object.setPrototypeOf(n,r),n}function rc(n){return Array.isArray(n)?n:[n]}function oc(n,r){let e=0;for(;e<n.length&&e<r.length;){if(n[e]<r[e])return-1;if(n[e]>r[e])return 1;e+=1}return e!==r.length?-1:e!==n.length?1:0}var kS=typeof global=="object"&&global&&global.Object===Object&&global,nc=kS;var HS=typeof self=="object"&&self&&self.Object===Object&&self,WS=nc||HS||Function("return this")(),Et=WS;var qS=Et.Symbol,Ht=qS;var Ah=Object.prototype,$S=Ah.hasOwnProperty,YS=Ah.toString,Fs=Ht?Ht.toStringTag:void 0;function XS(n){var r=$S.call(n,Fs),e=n[Fs];try{n[Fs]=void 0;var t=!0}catch{}var o=YS.call(n);return t&&(r?n[Fs]=e:delete n[Fs]),o}var Mh=XS;var KS=Object.prototype,QS=KS.toString;function ZS(n){return QS.call(n)}var Ih=ZS;var JS="[object Null]",e1="[object Undefined]",Nh=Ht?Ht.toStringTag:void 0;function t1(n){return n==null?n===void 0?e1:JS:Nh&&Nh in Object(n)?Mh(n):Ih(n)}var Tr=t1;function r1(n){return n!=null&&typeof n=="object"}var Kt=r1;var o1="[object Symbol]";function n1(n){return typeof n=="symbol"||Kt(n)&&Tr(n)==o1}var Bi=n1;function i1(n,r){for(var e=-1,t=n==null?0:n.length,o=Array(t);++e<t;)o[e]=r(n[e],e,n);return o}var ic=i1;var a1=Array.isArray,Pt=a1;var s1=1/0,Dh=Ht?Ht.prototype:void 0,Eh=Dh?Dh.toString:void 0;function _h(n){if(typeof n=="string")return n;if(Pt(n))return ic(n,_h)+"";if(Bi(n))return Eh?Eh.call(n):"";var r=n+"";return r=="0"&&1/n==-s1?"-0":r}var Bh=_h;function l1(n){var r=typeof n;return n!=null&&(r=="object"||r=="function")}var Ar=l1;function c1(n){return n}var Lh=c1;var u1="[object AsyncFunction]",d1="[object Function]",p1="[object GeneratorFunction]",f1="[object Proxy]";function h1(n){if(!Ar(n))return!1;var r=Tr(n);return r==d1||r==p1||r==u1||r==f1}var ac=h1;var m1=Et["__core-js_shared__"],sc=m1;var Rh=function(){var n=/[^.]+$/.exec(sc&&sc.keys&&sc.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}();function y1(n){return!!Rh&&Rh in n}var Vh=y1;var g1=Function.prototype,x1=g1.toString;function b1(n){if(n!=null){try{return x1.call(n)}catch{}try{return n+""}catch{}}return""}var Ro=b1;var v1=/[\\^$.*+?()[\]{}|]/g,S1=/^\[object .+?Constructor\]$/,w1=Function.prototype,P1=Object.prototype,O1=w1.toString,C1=P1.hasOwnProperty,T1=RegExp("^"+O1.call(C1).replace(v1,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function A1(n){if(!Ar(n)||Vh(n))return!1;var r=ac(n)?T1:S1;return r.test(Ro(n))}var zh=A1;function M1(n,r){return n?.[r]}var Gh=M1;function I1(n,r){var e=Gh(n,r);return zh(e)?e:void 0}var mr=I1;var N1=mr(Et,"WeakMap"),lc=N1;var jh=Object.create,D1=function(){function n(){}return function(r){if(!Ar(r))return{};if(jh)return jh(r);n.prototype=r;var e=new n;return n.prototype=void 0,e}}(),Fh=D1;function E1(n,r,e){switch(e.length){case 0:return n.call(r);case 1:return n.call(r,e[0]);case 2:return n.call(r,e[0],e[1]);case 3:return n.call(r,e[0],e[1],e[2])}return n.apply(r,e)}var Uh=E1;function _1(n,r){var e=-1,t=n.length;for(r||(r=Array(t));++e<t;)r[e]=n[e];return r}var kh=_1;var B1=800,L1=16,R1=Date.now;function V1(n){var r=0,e=0;return function(){var t=R1(),o=L1-(t-e);if(e=t,o>0){if(++r>=B1)return arguments[0]}else r=0;return n.apply(void 0,arguments)}}var Hh=V1;function z1(n){return function(){return n}}var Wh=z1;var G1=function(){try{var n=mr(Object,"defineProperty");return n({},"",{}),n}catch{}}(),Li=G1;var j1=Li?function(n,r){return Li(n,"toString",{configurable:!0,enumerable:!1,value:Wh(r),writable:!0})}:Lh,qh=j1;var F1=Hh(qh),$h=F1;function U1(n,r){for(var e=-1,t=n==null?0:n.length;++e<t&&r(n[e],e,n)!==!1;);return n}var Yh=U1;var k1=9007199254740991,H1=/^(?:0|[1-9]\d*)$/;function W1(n,r){var e=typeof n;return r=r??k1,!!r&&(e=="number"||e!="symbol"&&H1.test(n))&&n>-1&&n%1==0&&n<r}var Ri=W1;function q1(n,r,e){r=="__proto__"&&Li?Li(n,r,{configurable:!0,enumerable:!0,value:e,writable:!0}):n[r]=e}var cc=q1;function $1(n,r){return n===r||n!==n&&r!==r}var Vi=$1;var Y1=Object.prototype,X1=Y1.hasOwnProperty;function K1(n,r,e){var t=n[r];(!(X1.call(n,r)&&Vi(t,e))||e===void 0&&!(r in n))&&cc(n,r,e)}var zi=K1;function Q1(n,r,e,t){var o=!e;e||(e={});for(var i=-1,a=r.length;++i<a;){var s=r[i],l=t?t(e[s],n[s],s,e,n):void 0;l===void 0&&(l=n[s]),o?cc(e,s,l):zi(e,s,l)}return e}var fo=Q1;var Xh=Math.max;function Z1(n,r,e){return r=Xh(r===void 0?n.length-1:r,0),function(){for(var t=arguments,o=-1,i=Xh(t.length-r,0),a=Array(i);++o<i;)a[o]=t[r+o];o=-1;for(var s=Array(r+1);++o<r;)s[o]=t[o];return s[r]=e(a),Uh(n,this,s)}}var Kh=Z1;var J1=9007199254740991;function ew(n){return typeof n=="number"&&n>-1&&n%1==0&&n<=J1}var Gi=ew;function tw(n){return n!=null&&Gi(n.length)&&!ac(n)}var uc=tw;var rw=Object.prototype;function ow(n){var r=n&&n.constructor,e=typeof r=="function"&&r.prototype||rw;return n===e}var ji=ow;function nw(n,r){for(var e=-1,t=Array(n);++e<n;)t[e]=r(e);return t}var Qh=nw;var iw="[object Arguments]";function aw(n){return Kt(n)&&Tr(n)==iw}var Wd=aw;var Zh=Object.prototype,sw=Zh.hasOwnProperty,lw=Zh.propertyIsEnumerable,cw=Wd(function(){return arguments}())?Wd:function(n){return Kt(n)&&sw.call(n,"callee")&&!lw.call(n,"callee")},Fi=cw;function uw(){return!1}var Jh=uw;var rm=typeof exports=="object"&&exports&&!exports.nodeType&&exports,em=rm&&typeof module=="object"&&module&&!module.nodeType&&module,dw=em&&em.exports===rm,tm=dw?Et.Buffer:void 0,pw=tm?tm.isBuffer:void 0,fw=pw||Jh,ei=fw;var hw="[object Arguments]",mw="[object Array]",yw="[object Boolean]",gw="[object Date]",xw="[object Error]",bw="[object Function]",vw="[object Map]",Sw="[object Number]",ww="[object Object]",Pw="[object RegExp]",Ow="[object Set]",Cw="[object String]",Tw="[object WeakMap]",Aw="[object ArrayBuffer]",Mw="[object DataView]",Iw="[object Float32Array]",Nw="[object Float64Array]",Dw="[object Int8Array]",Ew="[object Int16Array]",_w="[object Int32Array]",Bw="[object Uint8Array]",Lw="[object Uint8ClampedArray]",Rw="[object Uint16Array]",Vw="[object Uint32Array]",pt={};pt[Iw]=pt[Nw]=pt[Dw]=pt[Ew]=pt[_w]=pt[Bw]=pt[Lw]=pt[Rw]=pt[Vw]=!0;pt[hw]=pt[mw]=pt[Aw]=pt[yw]=pt[Mw]=pt[gw]=pt[xw]=pt[bw]=pt[vw]=pt[Sw]=pt[ww]=pt[Pw]=pt[Ow]=pt[Cw]=pt[Tw]=!1;function zw(n){return Kt(n)&&Gi(n.length)&&!!pt[Tr(n)]}var om=zw;function Gw(n){return function(r){return n(r)}}var Ui=Gw;var nm=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Us=nm&&typeof module=="object"&&module&&!module.nodeType&&module,jw=Us&&Us.exports===nm,qd=jw&&nc.process,Fw=function(){try{var n=Us&&Us.require&&Us.require("util").types;return n||qd&&qd.binding&&qd.binding("util")}catch{}}(),Vo=Fw;var im=Vo&&Vo.isTypedArray,Uw=im?Ui(im):om,dc=Uw;var kw=Object.prototype,Hw=kw.hasOwnProperty;function Ww(n,r){var e=Pt(n),t=!e&&Fi(n),o=!e&&!t&&ei(n),i=!e&&!t&&!o&&dc(n),a=e||t||o||i,s=a?Qh(n.length,String):[],l=s.length;for(var c in n)(r||Hw.call(n,c))&&!(a&&(c=="length"||o&&(c=="offset"||c=="parent")||i&&(c=="buffer"||c=="byteLength"||c=="byteOffset")||Ri(c,l)))&&s.push(c);return s}var pc=Ww;function qw(n,r){return function(e){return n(r(e))}}var fc=qw;var $w=fc(Object.keys,Object),am=$w;var Yw=Object.prototype,Xw=Yw.hasOwnProperty;function Kw(n){if(!ji(n))return am(n);var r=[];for(var e in Object(n))Xw.call(n,e)&&e!="constructor"&&r.push(e);return r}var sm=Kw;function Qw(n){return uc(n)?pc(n):sm(n)}var ki=Qw;function Zw(n){var r=[];if(n!=null)for(var e in Object(n))r.push(e);return r}var lm=Zw;var Jw=Object.prototype,e2=Jw.hasOwnProperty;function t2(n){if(!Ar(n))return lm(n);var r=ji(n),e=[];for(var t in n)t=="constructor"&&(r||!e2.call(n,t))||e.push(t);return e}var cm=t2;function r2(n){return uc(n)?pc(n,!0):cm(n)}var Hi=r2;var o2=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,n2=/^\w*$/;function i2(n,r){if(Pt(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||Bi(n)?!0:n2.test(n)||!o2.test(n)||r!=null&&n in Object(r)}var um=i2;var a2=mr(Object,"create"),zo=a2;function s2(){this.__data__=zo?zo(null):{},this.size=0}var dm=s2;function l2(n){var r=this.has(n)&&delete this.__data__[n];return this.size-=r?1:0,r}var pm=l2;var c2="__lodash_hash_undefined__",u2=Object.prototype,d2=u2.hasOwnProperty;function p2(n){var r=this.__data__;if(zo){var e=r[n];return e===c2?void 0:e}return d2.call(r,n)?r[n]:void 0}var fm=p2;var f2=Object.prototype,h2=f2.hasOwnProperty;function m2(n){var r=this.__data__;return zo?r[n]!==void 0:h2.call(r,n)}var hm=m2;var y2="__lodash_hash_undefined__";function g2(n,r){var e=this.__data__;return this.size+=this.has(n)?0:1,e[n]=zo&&r===void 0?y2:r,this}var mm=g2;function Wi(n){var r=-1,e=n==null?0:n.length;for(this.clear();++r<e;){var t=n[r];this.set(t[0],t[1])}}Wi.prototype.clear=dm;Wi.prototype.delete=pm;Wi.prototype.get=fm;Wi.prototype.has=hm;Wi.prototype.set=mm;var $d=Wi;function x2(){this.__data__=[],this.size=0}var ym=x2;function b2(n,r){for(var e=n.length;e--;)if(Vi(n[e][0],r))return e;return-1}var un=b2;var v2=Array.prototype,S2=v2.splice;function w2(n){var r=this.__data__,e=un(r,n);if(e<0)return!1;var t=r.length-1;return e==t?r.pop():S2.call(r,e,1),--this.size,!0}var gm=w2;function P2(n){var r=this.__data__,e=un(r,n);return e<0?void 0:r[e][1]}var xm=P2;function O2(n){return un(this.__data__,n)>-1}var bm=O2;function C2(n,r){var e=this.__data__,t=un(e,n);return t<0?(++this.size,e.push([n,r])):e[t][1]=r,this}var vm=C2;function qi(n){var r=-1,e=n==null?0:n.length;for(this.clear();++r<e;){var t=n[r];this.set(t[0],t[1])}}qi.prototype.clear=ym;qi.prototype.delete=gm;qi.prototype.get=xm;qi.prototype.has=bm;qi.prototype.set=vm;var dn=qi;var T2=mr(Et,"Map"),pn=T2;function A2(){this.size=0,this.__data__={hash:new $d,map:new(pn||dn),string:new $d}}var Sm=A2;function M2(n){var r=typeof n;return r=="string"||r=="number"||r=="symbol"||r=="boolean"?n!=="__proto__":n===null}var wm=M2;function I2(n,r){var e=n.__data__;return wm(r)?e[typeof r=="string"?"string":"hash"]:e.map}var fn=I2;function N2(n){var r=fn(this,n).delete(n);return this.size-=r?1:0,r}var Pm=N2;function D2(n){return fn(this,n).get(n)}var Om=D2;function E2(n){return fn(this,n).has(n)}var Cm=E2;function _2(n,r){var e=fn(this,n),t=e.size;return e.set(n,r),this.size+=e.size==t?0:1,this}var Tm=_2;function $i(n){var r=-1,e=n==null?0:n.length;for(this.clear();++r<e;){var t=n[r];this.set(t[0],t[1])}}$i.prototype.clear=Sm;$i.prototype.delete=Pm;$i.prototype.get=Om;$i.prototype.has=Cm;$i.prototype.set=Tm;var ti=$i;var B2="Expected a function";function Yd(n,r){if(typeof n!="function"||r!=null&&typeof r!="function")throw new TypeError(B2);var e=function(){var t=arguments,o=r?r.apply(this,t):t[0],i=e.cache;if(i.has(o))return i.get(o);var a=n.apply(this,t);return e.cache=i.set(o,a)||i,a};return e.cache=new(Yd.Cache||ti),e}Yd.Cache=ti;var Am=Yd;var L2=500;function R2(n){var r=Am(n,function(t){return e.size===L2&&e.clear(),t}),e=r.cache;return r}var Mm=R2;var V2=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,z2=/\\(\\)?/g,G2=Mm(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(V2,function(e,t,o,i){r.push(o?i.replace(z2,"$1"):t||e)}),r}),Im=G2;function j2(n){return n==null?"":Bh(n)}var Nm=j2;function F2(n,r){return Pt(n)?n:um(n,r)?[n]:Im(Nm(n))}var Lr=F2;var U2=1/0;function k2(n){if(typeof n=="string"||Bi(n))return n;var r=n+"";return r=="0"&&1/n==-U2?"-0":r}var hn=k2;function H2(n,r){r=Lr(r,n);for(var e=0,t=r.length;n!=null&&e<t;)n=n[hn(r[e++])];return e&&e==t?n:void 0}var hc=H2;function W2(n,r){for(var e=-1,t=r.length,o=n.length;++e<t;)n[o+e]=r[e];return n}var Yi=W2;var Dm=Ht?Ht.isConcatSpreadable:void 0;function q2(n){return Pt(n)||Fi(n)||!!(Dm&&n&&n[Dm])}var Em=q2;function _m(n,r,e,t,o){var i=-1,a=n.length;for(e||(e=Em),o||(o=[]);++i<a;){var s=n[i];r>0&&e(s)?r>1?_m(s,r-1,e,t,o):Yi(o,s):t||(o[o.length]=s)}return o}var Bm=_m;function $2(n){var r=n==null?0:n.length;return r?Bm(n,1):[]}var Lm=$2;function Y2(n){return $h(Kh(n,void 0,Lm),n+"")}var mc=Y2;var X2=fc(Object.getPrototypeOf,Object),Xi=X2;var K2="[object Object]",Q2=Function.prototype,Z2=Object.prototype,Rm=Q2.toString,J2=Z2.hasOwnProperty,eP=Rm.call(Object);function tP(n){if(!Kt(n)||Tr(n)!=K2)return!1;var r=Xi(n);if(r===null)return!0;var e=J2.call(r,"constructor")&&r.constructor;return typeof e=="function"&&e instanceof e&&Rm.call(e)==eP}var Vm=tP;function rP(n,r,e){var t=-1,o=n.length;r<0&&(r=-r>o?0:o+r),e=e>o?o:e,e<0&&(e+=o),o=r>e?0:e-r>>>0,r>>>=0;for(var i=Array(o);++t<o;)i[t]=n[t+r];return i}var zm=rP;function oP(){this.__data__=new dn,this.size=0}var Gm=oP;function nP(n){var r=this.__data__,e=r.delete(n);return this.size=r.size,e}var jm=nP;function iP(n){return this.__data__.get(n)}var Fm=iP;function aP(n){return this.__data__.has(n)}var Um=aP;var sP=200;function lP(n,r){var e=this.__data__;if(e instanceof dn){var t=e.__data__;if(!pn||t.length<sP-1)return t.push([n,r]),this.size=++e.size,this;e=this.__data__=new ti(t)}return e.set(n,r),this.size=e.size,this}var km=lP;function Ki(n){var r=this.__data__=new dn(n);this.size=r.size}Ki.prototype.clear=Gm;Ki.prototype.delete=jm;Ki.prototype.get=Fm;Ki.prototype.has=Um;Ki.prototype.set=km;var Qi=Ki;function cP(n,r){return n&&fo(r,ki(r),n)}var Hm=cP;function uP(n,r){return n&&fo(r,Hi(r),n)}var Wm=uP;var Xm=typeof exports=="object"&&exports&&!exports.nodeType&&exports,qm=Xm&&typeof module=="object"&&module&&!module.nodeType&&module,dP=qm&&qm.exports===Xm,$m=dP?Et.Buffer:void 0,Ym=$m?$m.allocUnsafe:void 0;function pP(n,r){if(r)return n.slice();var e=n.length,t=Ym?Ym(e):new n.constructor(e);return n.copy(t),t}var Km=pP;function fP(n,r){for(var e=-1,t=n==null?0:n.length,o=0,i=[];++e<t;){var a=n[e];r(a,e,n)&&(i[o++]=a)}return i}var Qm=fP;function hP(){return[]}var yc=hP;var mP=Object.prototype,yP=mP.propertyIsEnumerable,Zm=Object.getOwnPropertySymbols,gP=Zm?function(n){return n==null?[]:(n=Object(n),Qm(Zm(n),function(r){return yP.call(n,r)}))}:yc,Zi=gP;function xP(n,r){return fo(n,Zi(n),r)}var Jm=xP;var bP=Object.getOwnPropertySymbols,vP=bP?function(n){for(var r=[];n;)Yi(r,Zi(n)),n=Xi(n);return r}:yc,gc=vP;function SP(n,r){return fo(n,gc(n),r)}var ey=SP;function wP(n,r,e){var t=r(n);return Pt(n)?t:Yi(t,e(n))}var xc=wP;function PP(n){return xc(n,ki,Zi)}var ks=PP;function OP(n){return xc(n,Hi,gc)}var bc=OP;var CP=mr(Et,"DataView"),vc=CP;var TP=mr(Et,"Promise"),Sc=TP;var AP=mr(Et,"Set"),wc=AP;var ty="[object Map]",MP="[object Object]",ry="[object Promise]",oy="[object Set]",ny="[object WeakMap]",iy="[object DataView]",IP=Ro(vc),NP=Ro(pn),DP=Ro(Sc),EP=Ro(wc),_P=Ro(lc),ri=Tr;(vc&&ri(new vc(new ArrayBuffer(1)))!=iy||pn&&ri(new pn)!=ty||Sc&&ri(Sc.resolve())!=ry||wc&&ri(new wc)!=oy||lc&&ri(new lc)!=ny)&&(ri=function(n){var r=Tr(n),e=r==MP?n.constructor:void 0,t=e?Ro(e):"";if(t)switch(t){case IP:return iy;case NP:return ty;case DP:return ry;case EP:return oy;case _P:return ny}return r});var Go=ri;var BP=Object.prototype,LP=BP.hasOwnProperty;function RP(n){var r=n.length,e=new n.constructor(r);return r&&typeof n[0]=="string"&&LP.call(n,"index")&&(e.index=n.index,e.input=n.input),e}var ay=RP;var VP=Et.Uint8Array,Ji=VP;function zP(n){var r=new n.constructor(n.byteLength);return new Ji(r).set(new Ji(n)),r}var ea=zP;function GP(n,r){var e=r?ea(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var sy=GP;var jP=/\w*$/;function FP(n){var r=new n.constructor(n.source,jP.exec(n));return r.lastIndex=n.lastIndex,r}var ly=FP;var cy=Ht?Ht.prototype:void 0,uy=cy?cy.valueOf:void 0;function UP(n){return uy?Object(uy.call(n)):{}}var dy=UP;function kP(n,r){var e=r?ea(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.length)}var py=kP;var HP="[object Boolean]",WP="[object Date]",qP="[object Map]",$P="[object Number]",YP="[object RegExp]",XP="[object Set]",KP="[object String]",QP="[object Symbol]",ZP="[object ArrayBuffer]",JP="[object DataView]",eO="[object Float32Array]",tO="[object Float64Array]",rO="[object Int8Array]",oO="[object Int16Array]",nO="[object Int32Array]",iO="[object Uint8Array]",aO="[object Uint8ClampedArray]",sO="[object Uint16Array]",lO="[object Uint32Array]";function cO(n,r,e){var t=n.constructor;switch(r){case ZP:return ea(n);case HP:case WP:return new t(+n);case JP:return sy(n,e);case eO:case tO:case rO:case oO:case nO:case iO:case aO:case sO:case lO:return py(n,e);case qP:return new t;case $P:case KP:return new t(n);case YP:return ly(n);case XP:return new t;case QP:return dy(n)}}var fy=cO;function uO(n){return typeof n.constructor=="function"&&!ji(n)?Fh(Xi(n)):{}}var hy=uO;var dO="[object Map]";function pO(n){return Kt(n)&&Go(n)==dO}var my=pO;var yy=Vo&&Vo.isMap,fO=yy?Ui(yy):my,gy=fO;var hO="[object Set]";function mO(n){return Kt(n)&&Go(n)==hO}var xy=mO;var by=Vo&&Vo.isSet,yO=by?Ui(by):xy,vy=yO;var gO=1,xO=2,bO=4,Sy="[object Arguments]",vO="[object Array]",SO="[object Boolean]",wO="[object Date]",PO="[object Error]",wy="[object Function]",OO="[object GeneratorFunction]",CO="[object Map]",TO="[object Number]",Py="[object Object]",AO="[object RegExp]",MO="[object Set]",IO="[object String]",NO="[object Symbol]",DO="[object WeakMap]",EO="[object ArrayBuffer]",_O="[object DataView]",BO="[object Float32Array]",LO="[object Float64Array]",RO="[object Int8Array]",VO="[object Int16Array]",zO="[object Int32Array]",GO="[object Uint8Array]",jO="[object Uint8ClampedArray]",FO="[object Uint16Array]",UO="[object Uint32Array]",ct={};ct[Sy]=ct[vO]=ct[EO]=ct[_O]=ct[SO]=ct[wO]=ct[BO]=ct[LO]=ct[RO]=ct[VO]=ct[zO]=ct[CO]=ct[TO]=ct[Py]=ct[AO]=ct[MO]=ct[IO]=ct[NO]=ct[GO]=ct[jO]=ct[FO]=ct[UO]=!0;ct[PO]=ct[wy]=ct[DO]=!1;function Pc(n,r,e,t,o,i){var a,s=r&gO,l=r&xO,c=r&bO;if(e&&(a=o?e(n,t,o,i):e(n)),a!==void 0)return a;if(!Ar(n))return n;var u=Pt(n);if(u){if(a=ay(n),!s)return kh(n,a)}else{var p=Go(n),d=p==wy||p==OO;if(ei(n))return Km(n,s);if(p==Py||p==Sy||d&&!o){if(a=l||d?{}:hy(n),!s)return l?ey(n,Wm(a,n)):Jm(n,Hm(a,n))}else{if(!ct[p])return o?n:{};a=fy(n,p,s)}}i||(i=new Qi);var h=i.get(n);if(h)return h;i.set(n,a),vy(n)?n.forEach(function(y){a.add(Pc(y,r,e,y,n,i))}):gy(n)&&n.forEach(function(y,g){a.set(g,Pc(y,r,e,g,n,i))});var f=c?l?bc:ks:l?Hi:ki,m=u?void 0:f(n);return Yh(m||n,function(y,g){m&&(g=y,y=n[g]),zi(a,g,Pc(y,r,e,g,n,i))}),a}var Oc=Pc;var kO=1,HO=4;function WO(n){return Oc(n,kO|HO)}var jo=WO;var qO="__lodash_hash_undefined__";function $O(n){return this.__data__.set(n,qO),this}var Oy=$O;function YO(n){return this.__data__.has(n)}var Cy=YO;function Cc(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new ti;++r<e;)this.add(n[r])}Cc.prototype.add=Cc.prototype.push=Oy;Cc.prototype.has=Cy;var Ty=Cc;function XO(n,r){for(var e=-1,t=n==null?0:n.length;++e<t;)if(r(n[e],e,n))return!0;return!1}var Ay=XO;function KO(n,r){return n.has(r)}var My=KO;var QO=1,ZO=2;function JO(n,r,e,t,o,i){var a=e&QO,s=n.length,l=r.length;if(s!=l&&!(a&&l>s))return!1;var c=i.get(n),u=i.get(r);if(c&&u)return c==r&&u==n;var p=-1,d=!0,h=e&ZO?new Ty:void 0;for(i.set(n,r),i.set(r,n);++p<s;){var f=n[p],m=r[p];if(t)var y=a?t(m,f,p,r,n,i):t(f,m,p,n,r,i);if(y!==void 0){if(y)continue;d=!1;break}if(h){if(!Ay(r,function(g,v){if(!My(h,v)&&(f===g||o(f,g,e,t,i)))return h.push(v)})){d=!1;break}}else if(!(f===m||o(f,m,e,t,i))){d=!1;break}}return i.delete(n),i.delete(r),d}var Tc=JO;function eC(n){var r=-1,e=Array(n.size);return n.forEach(function(t,o){e[++r]=[o,t]}),e}var Iy=eC;function tC(n){var r=-1,e=Array(n.size);return n.forEach(function(t){e[++r]=t}),e}var Ny=tC;var rC=1,oC=2,nC="[object Boolean]",iC="[object Date]",aC="[object Error]",sC="[object Map]",lC="[object Number]",cC="[object RegExp]",uC="[object Set]",dC="[object String]",pC="[object Symbol]",fC="[object ArrayBuffer]",hC="[object DataView]",Dy=Ht?Ht.prototype:void 0,Xd=Dy?Dy.valueOf:void 0;function mC(n,r,e,t,o,i,a){switch(e){case hC:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case fC:return!(n.byteLength!=r.byteLength||!i(new Ji(n),new Ji(r)));case nC:case iC:case lC:return Vi(+n,+r);case aC:return n.name==r.name&&n.message==r.message;case cC:case dC:return n==r+"";case sC:var s=Iy;case uC:var l=t&rC;if(s||(s=Ny),n.size!=r.size&&!l)return!1;var c=a.get(n);if(c)return c==r;t|=oC,a.set(n,r);var u=Tc(s(n),s(r),t,o,i,a);return a.delete(n),u;case pC:if(Xd)return Xd.call(n)==Xd.call(r)}return!1}var Ey=mC;var yC=1,gC=Object.prototype,xC=gC.hasOwnProperty;function bC(n,r,e,t,o,i){var a=e&yC,s=ks(n),l=s.length,c=ks(r),u=c.length;if(l!=u&&!a)return!1;for(var p=l;p--;){var d=s[p];if(!(a?d in r:xC.call(r,d)))return!1}var h=i.get(n),f=i.get(r);if(h&&f)return h==r&&f==n;var m=!0;i.set(n,r),i.set(r,n);for(var y=a;++p<l;){d=s[p];var g=n[d],v=r[d];if(t)var O=a?t(v,g,d,r,n,i):t(g,v,d,n,r,i);if(!(O===void 0?g===v||o(g,v,e,t,i):O)){m=!1;break}y||(y=d=="constructor")}if(m&&!y){var P=n.constructor,S=r.constructor;P!=S&&"constructor"in n&&"constructor"in r&&!(typeof P=="function"&&P instanceof P&&typeof S=="function"&&S instanceof S)&&(m=!1)}return i.delete(n),i.delete(r),m}var _y=bC;var vC=1,By="[object Arguments]",Ly="[object Array]",Ac="[object Object]",SC=Object.prototype,Ry=SC.hasOwnProperty;function wC(n,r,e,t,o,i){var a=Pt(n),s=Pt(r),l=a?Ly:Go(n),c=s?Ly:Go(r);l=l==By?Ac:l,c=c==By?Ac:c;var u=l==Ac,p=c==Ac,d=l==c;if(d&&ei(n)){if(!ei(r))return!1;a=!0,u=!1}if(d&&!u)return i||(i=new Qi),a||dc(n)?Tc(n,r,e,t,o,i):Ey(n,r,l,e,t,o,i);if(!(e&vC)){var h=u&&Ry.call(n,"__wrapped__"),f=p&&Ry.call(r,"__wrapped__");if(h||f){var m=h?n.value():n,y=f?r.value():r;return i||(i=new Qi),o(m,y,e,t,i)}}return d?(i||(i=new Qi),_y(n,r,e,t,o,i)):!1}var Vy=wC;function zy(n,r,e,t,o){return n===r?!0:n==null||r==null||!Kt(n)&&!Kt(r)?n!==n&&r!==r:Vy(n,r,e,t,zy,o)}var Gy=zy;function PC(n,r){return n!=null&&r in Object(n)}var jy=PC;function OC(n,r,e){r=Lr(r,n);for(var t=-1,o=r.length,i=!1;++t<o;){var a=hn(r[t]);if(!(i=n!=null&&e(n,a)))break;n=n[a]}return i||++t!=o?i:(o=n==null?0:n.length,!!o&&Gi(o)&&Ri(a,o)&&(Pt(n)||Fi(n)))}var Fy=OC;function CC(n,r){return n!=null&&Fy(n,r,jy)}var Uy=CC;function TC(n){var r=n==null?0:n.length;return r?n[r-1]:void 0}var ky=TC;function AC(n,r){return r.length<2?n:hc(n,zm(r,0,-1))}var Hy=AC;function MC(n,r){return Gy(n,r)}var Kd=MC;function IC(n,r){return r=Lr(r,n),n=Hy(n,r),n==null||delete n[hn(ky(r))]}var Wy=IC;function NC(n){return Vm(n)?void 0:n}var qy=NC;var DC=1,EC=2,_C=4,BC=mc(function(n,r){var e={};if(n==null)return e;var t=!1;r=ic(r,function(i){return i=Lr(i,n),t||(t=i.length>1),i}),fo(n,bc(n),e),t&&(e=Oc(e,DC|EC|_C,qy));for(var o=r.length;o--;)Wy(e,r[o]);return e}),ta=BC;function LC(n,r,e,t){if(!Ar(n))return n;r=Lr(r,n);for(var o=-1,i=r.length,a=i-1,s=n;s!=null&&++o<i;){var l=hn(r[o]),c=e;if(l==="__proto__"||l==="constructor"||l==="prototype")return n;if(o!=a){var u=s[l];c=t?t(u,l,s):void 0,c===void 0&&(c=Ar(u)?u:Ri(r[o+1])?[]:{})}zi(s,l,c),s=s[l]}return n}var $y=LC;function RC(n,r,e){for(var t=-1,o=r.length,i={};++t<o;){var a=r[t],s=hc(n,a);e(s,a)&&$y(i,Lr(a,n),s)}return i}var Yy=RC;function VC(n,r){return Yy(n,r,function(e,t){return Uy(n,t)})}var Xy=VC;var zC=mc(function(n,r){return n==null?{}:Xy(n,r)}),Kr=zC;var be=class{modifyById(r,e){let t=this;if(t[r]===void 0)throw new Error("not expected");{let i={...t,[r]:e};return Object.setPrototypeOf(i,be.prototype),i}}add(r,e){return this.runOp({type:1,id:r,data:e})?.data??this}runOp(r){let e=this;if(r.type===1){let t=e[r.id],o;t===void 0?o={type:2,id:r.id}:o={type:1,id:r.id,data:t};let{id:i,data:a}=r,s={...e,[i]:a};return Object.setPrototypeOf(s,be.prototype),{data:s,actual:r,reverse:o}}else if(r.type===2){let{id:t}=r,o=e[t];if(o===void 0)return null;{let i={...e};return Object.setPrototypeOf(i,be.prototype),delete i[t],{data:i,actual:r,reverse:{type:1,id:t,data:o}}}}return null}};function Hs(n){if(n.deepFreeze!==void 0){n.deepFreeze(n);return}let r=Object.getOwnPropertyNames(n);for(let e of r){let t=n[e];t&&typeof t=="object"&&Hs(t)}return Object.freeze(n)}function Ky(n,r){let e=0;for(;e<n.length&&e<r.length;){if(n[e]<r[e])return-1;if(n[e]>r[e])return 1;e+=1}return e!==r.length?-1:e!==n.length?1:0}var ra=class extends Error{};function Mc(n){let r={...n};return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}function ho(n,r,e){if(n===void 0?r===void 0?(n=0,r=10):n=r-10:r===void 0&&(r=n+10),n>r){let i=n;n=r,r=i}let t=[],o=1/(e+1);for(let i=0;i<e;i++){let a=n+(r-n)*(i+.75+Math.random()*.5)*o;t.push(a)}return t}function oa(n){return n instanceof Uint8Array||n instanceof Uint16Array||n instanceof Uint32Array||n instanceof Int8Array||n instanceof Int16Array||n instanceof Int32Array||n instanceof Float32Array||n instanceof Float64Array}function Qy(){return typeof process<"u"}function Zy(n,r){for(let e of n)r(e.id,e.data)!==!0&&Zy(e.children,r)}function Jy(n,r){if(r(n.id,n.data)!==!0)for(let e of n.children)Jy(e,r)}var st=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,st.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Hs(this[e]),e++}fillCaches0(e,t){this.objCaches.set(e.id,e),this.parentCaches.set(e.id,t);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,t){if(!this.has(e))return!0;for(;e;){let o=this.parent(e);if(o===t)return!0;e=o}return!1}rootAcestor(e){for(;e;){let t=this.parent(e);if(t)e=t;else return e}return e}isDescendantOf(e,t){for(;e;){let o=this.parent(e);if(o===t)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,t){if(e===null)this.traverse(t);else{let o=this.get(e);o&&Jy(o,t)}}traverse(e){Zy(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,t){if(this.get(e)===void 0)throw new Error("not expected");{let i=this.parent(e),a=this.childrenArray(i),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:t},this.modifyArrayBy(i,a)}}modifyArrayBy(e,t){let o=e,i=t;for(;o!==null;){let s=i,l=o;if(o=this.parent(o),o===void 0)throw new Error;i=this.childrenArray(o);let c=i.findIndex(u=>u.id===l);if(c<0)throw new Error;i=[...i],i[c]={...i[c],children:s}}Object.setPrototypeOf(i,st.prototype);let a=i;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:t}){if(this.get(e)!==void 0)return!0;for(let o of t)if(this.checkDuplicatedIdRec(o))return!0;return!1}addOp(e){let{parent:t,fi:o,id:i,data:a,children:s}=e;if(t!==null&&this.get(t)===void 0)return null;if(this.checkDuplicatedIdRec(e))return null;{let l=t,c=this.childrenArray(l),u={fi:o,id:i,data:a,children:s};return c=[...c,u],c.sort((d,h)=>d.fi-h.fi),e.localIndex=c.indexOf(u),{data:this.modifyArrayBy(l,c),actual:e,reverse:{type:8,id:i}}}}deleteOp(e){let{id:t}=e;if(this.get(t)===null)return null;{let o=this.parent(t);if(o===void 0)return null;let i=this.childrenArray(o),a=i.findIndex(c=>c.id===t);e.localIndex=a,i=[...i];let s=i.splice(a,1)[0];return{data:this.modifyArrayBy(o,i),actual:e,reverse:{type:7,...s,parent:o}}}}moveOp(e){let{parent:t,fi:o,id:i}=e;if(t!==null&&this.get(t)===void 0)return this.deleteOp({type:8,id:i});if(t!==null){let h=t;for(;h!==null;){if(h===void 0)throw new Error;if(h===i)throw new ra("cyclic tree");h=this.parent(h)}}let a=this.parent(i);if(a===void 0)return null;let s=a,l=this.childrenArray(a),c=l.findIndex(h=>h.id===i);l=[...l];let u=l.splice(c,1)[0],p=this.modifyArrayBy(a,l);a=t,l=p.childrenArray(a);let d=u.fi;return u={...u,fi:o},l=[...l,u],l.sort((h,f)=>h.fi-f.fi),e.localIndex=l.indexOf(u),p=p.modifyArrayBy(a,l),{data:p,actual:e,reverse:{type:9,parent:s,fi:d,id:i}}}previous(e,t){if(t===null){let i=this.childrenArray(e);return i.length===0?null:i[i.length-1].id}let o=null;for(let i of this.childrenArray(e)){if(i.id===t)return o;o=i.id}return null}traverseSortNext(e){let t=this.parent(e);if(t!==void 0){let o=this.childrenArray(t),i=o.findIndex(a=>a.id===e)+1;if(i<o.length)return o[i].id;if(t)return this.traverseSortNext(t)}}sortNext(e){let t=this.childrenArray(e);return t.length>0?t[0].id:this.traverseSortNext(e)}traverseSortPrevious(e){let t=this.childrenArray(e);return t.length>0?this.traverseSortPrevious(t[t.length-1].id):e}sortPrevious(e){let t=this.parent(e);if(t!==void 0){let o=this.childrenArray(t),i=o.findIndex(a=>a.id===e)-1;return i>=0?this.traverseSortPrevious(o[i].id):t}}getAllSorted(e){let t=[];for(let o of e){let i=this.getWithSortKey(o.id);i!==void 0&&t.push({...o,...i})}t.sort((o,i)=>Ky(o.sortKey,i.sortKey));for(let o of t)delete o.sortKey;return t}getWithSortKey(e){var t=e;let o=[],i=this.get(t),a=i;if(i!==void 0){for(;t;)o.splice(0,0,i.fi),t=this.parent(t),t!==null&&(i=this.get(t));return{...a,sortKey:o}}}insertBeforeHelper(e,t,o){return this.insertAfterHelper(e,this.previous(e,t),o)}insertAfterHelper(e,t,o){let i=this.childrenArray(e);if(t===null){if(i.length===0)return ho(0,o,o);{let a=i[0].fi;return ho(a-o,a,o)}}else{let a=this.get(t);if(a===void 0||this.parent(t)!==e)throw new Error("illegal args");let s=i.find(l=>l.fi>a.fi);if(s===void 0){let l=i[i.length-1].fi;return ho(l,l+o,o)}else return ho(a.fi,s.fi,o)}}};var na;(r=>{function n(e,t){if(t.type!==0)return null;if(Array.isArray(e)){let o=t.props,i={},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");i[l]=a[c],a[c]=o[l],s=!0}return s?{data:a,actual:t,reverse:{type:0,props:i}}:null}else{let o=t.props,i={},a={...e},s=!1;if(o)for(let l of Object.keys(o)){i[l]=a[l];let c=o[l];c===void 0?delete a[l]:a[l]=c,s=!0}return s?{data:a,actual:t,reverse:{type:0,props:i}}:null}}r.runOp=n})(na||(na={}));var Se=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Se.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Hs(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,t){if(this.get(e)===void 0)throw new Error("not expected");{let i=this,a=i.findIndex(c=>c.id===e);if(a<0)throw new Error("not expected");let s=i[a];return i=[...i],i[a]={...s,data:t},this.modifyArrayBy(i)}}modifyArrayBy(e){Object.setPrototypeOf(e,Se.prototype);let t=e;return Qy()||t.fillCaches(),t}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:t,id:o,data:i}=e,a=this,s={fi:t,id:o,data:i};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:t}=e,o=this,i=o.findIndex(l=>l.id===t);if(i===-1)return null;e.localIndex=i,o=[...o];let a=o.splice(i,1)[0];return{data:this.modifyArrayBy(o),actual:e,reverse:{type:4,...a}}}moveOp(e){let{fi:t,id:o}=e,i=this;i=[...i];let a=i.findIndex(u=>u.id===o);if(a===-1)return null;let s=i[a].fi,l={...i[a],fi:t};return i[a]=l,i.sort((u,p)=>u.fi-p.fi),e.localIndex=i.indexOf(l),{data:this.modifyArrayBy(i),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 t=null;for(let o of this){if(o.id===e)return t;t=o.id}return null}insertBeforeHelper(e,t){return this.insertAfterHelper(this.previous(e),t)}insertAfterHelper(e,t){let o=this;if(e===null){if(o.length===0)return ho(0,t,t);{let i=o[0].fi;return ho(i-t,i,t)}}else{let i=this.get(e);if(i===void 0)throw new Error("illegal args");let a=o.find(s=>s.fi>i.fi);if(a===void 0){let s=o[o.length-1].fi;return ho(s,s+t,t)}else return ho(i.fi,a.fi,t)}}};function ia(n){return n&&typeof n=="object"&&n instanceof lt}var lt=class{unusedFunOverridesTable(r){}runOp(r){let e=[],t=this,o=0,i={};for(;o<r.path.length;){if(e.push(t),t=t===void 0?void 0:t[r.path[o]],t!==void 0&&!ia(t))return null;o+=1}t=t?Mc(t):new lt;for(let[l,c]of Object.entries(r.props)){let u=t[l];i[l]=u,c===void 0?delete t[l]:t[l]=c}for(;o>0;){if(Object.keys(t).length===0){let l=e[o-1];l&&(t=Mc(l),delete t[r.path[o-1]])}else{let l=e[o-1];if(l){let c=Mc(l);c[r.path[o-1]]=t,t=c}else{let c=new lt;c[r.path[o-1]]=t,t=c}}o-=1}let a=Object.setPrototypeOf(t,lt.prototype),s={...r,props:i};return{data:a,actual:r,reverse:s}}},mo;(t=>{function n(o,i){return Ws(o,i)??o}t.apply=n;function r(o,i){return Zd(o,i)}t.merge=r;function e(o,i){let a=0,s=i.path,l=o;for(;a<s.length&&l!==void 0;){if(l=yt.zoomOnce(l,s[a]),l===void 0)return i;if(!ia(l))return;a+=1}if(l===void 0)return i;if(!!ia(l))if(i.type===0){let c={...i.props};for(let u of Object.keys(l))delete c[u];return{...i,props:c}}else if(i.type===1||i.type===4||i.type===7){let c=Qd([i],l);return c?(console.log(c),c):i}else return i}t.filterOp=e})(mo||(mo={}));function Qd(n,r){if(r===void 0)return;let e=!1,t=n.map(o=>{let i=o.id,a=Ws(o.data,r[i]);if(e=e||a!==void 0,a===void 0&&(a=o.data),o.children){let s=Qd(o.children,r);return s!==void 0?e=!0:s=o.children,{...o,id:i,data:a,children:s}}else return{...o,id:i,data:a}});if(e)return t}function GC(n,r){if(r===void 0)return;let e=!1,t=n.map(o=>{let i=o.id,a=Ws(o.data,r[i]);return e=e||a!==void 0,a===void 0&&(a=o.data),{...o,id:i,data:a}});if(e)return Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}function Ws(n,r){if(!ia(r))return r;if(n instanceof st){let e=Qd(n,r);return e!==void 0&&Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e}else{if(n instanceof Se)return GC(n,r);if(Array.isArray(n)){let e=!1,t=n.map((o,i)=>{let a=Ws(o,r[i]);return e=e||a!==void 0,a===void 0&&(a=o),a});return e?(Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t):void 0}else{if(n instanceof lt)return Zd(n,r);if(n&&typeof n=="object"){let e={},t=!1;for(let[o,i]of Object.entries(n)){let a=Ws(i,r[o]);t=t||a!==void 0,a===void 0&&(a=i),e[o]=a}return t?(Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e):void 0}}}}function Zd(n,r){if(n===void 0)return r;if(r===void 0)return n;if(!ia(r))return r;if(!ia(n))return mo.apply(n,r);let e=new Set;for(let o of Object.keys(n))e.add(o);for(let o of Object.keys(r))e.add(o);let t=new lt;for(let o of e){let i=Zd(n===void 0?void 0:n[o],r===void 0?void 0:r[o]);t[o]=i}return t}function eg(n,r){let e={cur:[],result:[],len:0};return n=qs(n,r,e)??n,[n,e.result]}function Ic(n,r){return n===null?null:(n.cur[n.len]=r,n.len+=1,n)}function Nc(n){n&&(n.len-=1)}function jC(n){if(n===null)return null;n.result.push(n.cur.slice(0,n.len))}function tg(n,r,e){let t=!1,o=n.map(i=>{let a=i.id,s=r[a];if(s!==void 0&&typeof s=="string"&&(t=!0,a=s,e!==null))throw new Error("not supported");let l=qs(i.data,r,Ic(e,a));Nc(e),t=t||l!==void 0,l===void 0&&(l=i.data);let c=tg(i.children,r,e);return c!==void 0?t=!0:c=i.children,{...i,id:a,data:l,children:c}});if(t)return o}function FC(n,r,e){let t=!1,o=n.map(i=>{let a=i.id,s=r[a];if(s!==void 0&&typeof s=="string"&&(t=!0,a=s,e!==null))throw new Error("not supported");let l=qs(i.data,r,Ic(e,a));return Nc(e),t=t||l!==void 0,l===void 0&&(l=i.data),{...i,id:a,data:l}});if(t)return Object.setPrototypeOf(o,Object.getPrototypeOf(n)),o}function qs(n,r,e){if(n instanceof st){let t=tg(n,r,e);return t!==void 0&&Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}else{if(n instanceof Se)return FC(n,r,e);if(Array.isArray(n)){let t=!1,o=n.map((i,a)=>{let s=qs(i,r,Ic(e,a));return Nc(e),t=t||s!==void 0,s===void 0&&(s=i),s});return t?(Object.setPrototypeOf(o,Object.getPrototypeOf(n)),o):void 0}else if(n&&typeof n=="object"&&!oa(n)){let t={},o=!1;for(let[i,a]of Object.entries(n))if(i!=="name"){let s=r[i];if(typeof s=="string"){if(e!==null)throw new Error("not supported");o=!0,i=s}let l=qs(a,r,Ic(e,i));Nc(e),o=o||l!==void 0,l===void 0&&(l=a),t[i]=l}else t[i]=a;return o?(Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t):void 0}else if(typeof n=="string"){let t=r[n];return t!==void 0&&jC(e),t}else return}}var aa;(r=>{function n(e,t){let o=yt.zoom(t,e.path);if(typeof o=="object"){let i={};for(let a of Object.keys(e.props))i[a]=o[a];return{...e,props:i}}else return{...e,props:{}}}r.replaceProps=n})(aa||(aa={}));var gt;(s=>{function n(l,c){return{...l,path:l.path.slice(c)}}s.drop=n;function r(l,c){return e(l,c)?.data??l}s.applySimple=r;function e(l,c){let u=c.path;for(var p=[];;){let d;if(l instanceof lt&&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 st||l instanceof Se||l instanceof be?d=l.runOp(c):d=na.runOp(l,c)),d!==void 0)if(d!==null){let m=d.data;for(let y=p.length-1;y>=0;y--){let g=u[y],v=p[y];if(v instanceof st){if(typeof g=="number")throw new Error("illegal arg");m=v.modifyById(g,m)}else if(v instanceof Se){if(typeof g=="number")throw new Error("illegal arg");m=v.modifyById(g,m)}else if(v instanceof be){if(typeof g=="number")throw new Error("illegal arg");m=v.modifyById(g,m)}else if(v instanceof lt){let O={...v,[g]:m};m=Object.setPrototypeOf(O,lt.prototype)}else if(typeof v=="object")if(Array.isArray(v)){if(typeof g=="string"&&(g=parseInt(g),isNaN(g)))throw new Error("Invalid path");let O=m;m=[...v],m[g]=O}else m={...v,[g]:m};else return null}return{data:m,actual:{...d.actual,path:u},reverse:{...d.reverse,path:u}}}else return null;let h=u[p.length],f;if(l instanceof st){if(typeof h=="number")throw new Error("");f=l.get(h)?.data}else if(l instanceof Se){if(typeof h=="number")throw new Error("");f=l.get(h)?.data}else l!==null&&(f=l[h]);if(f!==void 0)p.push(l),l=f;else return null}}s.apply=e;function t(l,c){for(let u=0;u<l.length&&u<c.length;u++)if(l[u]!==c[u])return!0;return!1}s.pathDisjoint=t;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 i(l,c){return t(l.path,c.path)}s.commutative=i;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})(gt||(gt={}));var $s;(l=>{function n(){return[]}l.empty=n;function r(c,u){let p=[];for(let d of c){let[h,...f]=d.path;h===u&&p.push({...d,path:f})}return p}l.removePrefix=r;function e(c,u){return c.map(p=>({...p,path:[u,...p.path]}))}l.addPrefix=e;function t(c,u){return[...c,...u]}l.concat=t;function o(c,u){return[...c.filter(d=>!u.some(h=>gt.subsumed(d,h))),...u]}l.compress=o;function i(c,u){return c.every(p=>u.every(d=>gt.commutative(p,d)))}l.commutative=i;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=[],h=[];for(let f of u)try{if(f.type===3||f.type===5&&f.path[f.path.length-1]==="variables"){let m,y,g;if(f.type===3?(m=yt.zoom(p,[...f.path,f.id]),g=gt.apply(p,{...f,type:2})):(m=yt.zoom(p,[...f.path,f.id,"value"]),g=gt.apply(p,f)),g!==null){p=g.data;let[v,O]=eg(p,{[f.id]:m});p=v;for(let P=0;P<O.length;P++){let S=O[P],T=S.pop();if(typeof T=="number"){let I=[T];for(let _=P+1;_<O.length;_++){let D=O[_],A=D[D.length-1];if(typeof A=="number"&&yt.equal(S,D.slice(0,D.length-1)))I.push(A),O.splice(_,1);else break}let x=yt.zoom(p,S);y=x.map((_,D)=>I.includes(D)?f.id:_),m=x,T=S.pop()}else{if(T==="alphaOverride"||T==="alpha"){m/=100;let I=m,x=yt.zoom(p,S.slice(0,S.length-2)),_=x.layers.map(D=>D.id===S[S.length-1]?{...D,data:{...D.data,[T]:I}}:D);Object.setPrototypeOf(_,Object.getPrototypeOf(x.layers)),x.layers=_}y=f.id}d.push({type:0,path:S,props:{[T]:m}}),h.push({type:0,path:S,props:{[T]:y}})}h.push(g.reverse),d.push(g.actual)}}else{let m=gt.apply(p,f);m!==null&&(d.push(m.actual),p=m.data,h.push(m.reverse))}}catch(m){if(m instanceof ra)return null;throw m}return{data:p,actual:d,reverse:h.reverse()}}l.apply=s})($s||($s={}));var rg=Symbol(),UC=Symbol(),Ec=Symbol(),oi=class{reportOp(r,e,t=[]){let o=this;if(e===null)return;o._current=e.data;let i=t;for(;!(o instanceof Dc);){let a=o._path,s=o._current;if(a!==""&&i.splice(0,0,a),o=o._parent,o===null)return;o.update(a,s)}o.push(i,r,e.actual,e.reverse)}deleteChildren(r){if(this._children){let e=this._children[r];if(e){let t=e[Ec];t&&t(),delete this._children[r]}}}},ep=class extends oi{constructor(r,e,t){super(),this._parent=r,this._path=e,this._current=t}update(r,e){if(Array.isArray(this._current)){if(typeof r=="string"&&(r=parseInt(r),isNaN(r)))throw new Error("Invalid path");this._current=[...this._current],this._current[r]=e}else this._current={...this._current,[r]:e}}runOp(r){this.reportOp(r,na.runOp(this._current,r),r.path)}},tp=class extends oi{constructor(r,e,t){super(),this._parent=r,this._path=e,this._current=t}update(r,e){this._current={...this._current,[r]:e},Object.setPrototypeOf(this._current,be.prototype)}runOp(r){this.reportOp(r,this._current.runOp(r))}},og={get(n,r){if(r===Ec)return()=>{n._parent=null};if(r===rg)return n._current;if(r===UC)return n;let{_current:e,_children:t}=n;if(r==="push"&&Array.isArray(e))throw new Error("not supported to expand array");let o=t===void 0?void 0:t[r];if(o!==void 0)return o;let i=e[r],a=_c(n,r,i);return a!==i?(t===void 0&&(t={},n._children=t),t[r]=a,a):i},has(n,r){return r in n._current},ownKeys(n){return Reflect.ownKeys(n._current)},defineProperty(){throw Error("not supported")},getPrototypeOf(n){return Object.getPrototypeOf(n._current)},setPrototypeOf(){throw Error("not supported")},getOwnPropertyDescriptor(n,r){let e=n._current,t=Reflect.getOwnPropertyDescriptor(e,r);return t&&{writable:!0,configurable:!0,enumerable:t.enumerable,value:e[r]}}},kC={...og,set(n,r,e){let t={type:0,props:{[r]:xt(e)??e}};return n.deleteChildren(r),n.runOp(t),!0},deleteProperty(n,r){let e={type:0,props:{[r]:void 0}};return n.deleteChildren(r),n.runOp(e),!0}},HC={...og,set(n,r,e){return e===void 0?this.deleteProperty(n,r):(n.deleteChildren(r),n.runOp({type:1,id:r,data:e})),!0},deleteProperty(n,r){return n.runOp({type:2,id:r}),!0}},sa=class extends oi{constructor(r,e,t){super(),this._children={},this._parent=r,this._path=e,this._current=t,this[Ec]=()=>{this._parent=null}}unproxy(){return this._current}update(r,e){this._current=this._current.modifyById(r,e)}runOp(r){this.reportOp(r,this._current.runOp(r))}randomId(){return this._current.randomId()}isDescendantOf(r,e){return this._current.isDescendantOf(r,e)}childrenOf(r){return this._current.childrenOf(r)}traverse(r){return this._current.traverse(r)}get(r){return this._current.get(r)}parent(r){return this._current.parent(r)}traverse(r){this._current.traverse((e,t)=>{r(e,this.data(e))})}data(r){let{_current:e,_children:t}=this,o=t===void 0?void 0:t[r];if(o!==void 0)return o;let i=e.get(r)?.data,a=_c(this,r,i);return a!==i?(t===void 0&&(t={},this._children=t),t[r]=a,a):i}add(r,e,t,o,i){this.runOp({type:7,parent:r,fi:e,id:t,data:o,children:i})}move(r,e,t){this.runOp({type:9,parent:r,fi:e,id:t})}insertAfter(r,e,t){let o=this._current.insertAfterHelper(r,e,t.length);for(let i=0;i<t.length;i++){let a=t[i];this.add(r,o[i],a.id,a.data,a.children)}}insertBefore(r,e,t){let o=this._current.insertBeforeHelper(r,e,t.length);for(let i=0;i<t.length;i++){let a=t[i];this.add(r,o[i],a.id,a.data,a.children)}}moveAfter(r,e,t){let o=this._current.insertAfterHelper(r,e,t.length);for(let i=0;i<t.length;i++){let a=t[i];this.move(r,o[i],a)}}moveBefore(r,e,t){let o=this._current.insertBeforeHelper(r,e,t.length);for(let i=0;i<t.length;i++){let a=t[i];this.move(r,o[i],a)}}delete(r){this.deleteChildren(r),this.runOp({type:8,id:r})}sortNext(r){return this._current.sortNext(r)}sortPrevious(r){return this._current.sortPrevious(r)}getAllSorted(r){return this._current.getAllSorted(r)}},la=class extends oi{constructor(r,e,t){super(),this._children={},this._parent=r,this._path=e,this._current=t,this[Ec]=()=>{this._parent=null}}unproxy(){return this._current}get length(){return this._current.length}forEach(r){let e=this.length;for(let t=0;t<e;t++){let o=this._current[t].id,i=this._current[t].fi;r(this.data(this._current[t].id),o,i)}}find(r){let e=this.length;for(let t=0;t<e;t++){let o=this._current[t].id;if(r(this.data(o),o))return this.get(o)}}update(r,e){this._current=this._current.modifyById(r,e)}randomId(){return this._current.randomId()}get(r){return{...this._current.get(r),data:this.data(r)}}data(r){let{_current:e,_children:t}=this,o=t===void 0?void 0:t[r];if(o!==void 0)return o;let i=e.get(r)?.data,a=_c(this,r,i);return a!==i?(t===void 0&&(t={},this._children=t),t[r]=a,a):i}runOp(r){this.reportOp(r,this._current.runOp(r))}add(r,e,t){this.runOp({type:4,fi:r,id:e,data:t})}move(r,e){this.runOp({type:6,fi:r,id:e})}insertAfter(r,e){let t=this._current.insertAfterHelper(r,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.add(t[o],i.id,i.data)}}insertBefore(r,e){let t=this._current.insertBeforeHelper(r,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.add(t[o],i.id,i.data)}}moveAfter(r,e){let t=this._current.insertAfterHelper(r,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.move(t[o],i)}}moveBefore(r,e){let t=this._current.insertBeforeHelper(r,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.move(t[o],i)}}delete(r){this.deleteChildren(r),this.runOp({type:5,id:r})}};function Jd(n,r,e){if(n.length>0){let t=n[n.length-1];if(t.type===0&&r.type===0&&yt.equal(t.path,e)){Object.assign(t.props,r.props);return}}n.push({...r,path:e})}var Dc=class extends oi{constructor(r){super(),this.ts=[],this.actual=[],this.reverse=[],this._current=r}update(r,e){if(r!=="")throw new Error("");this._current=e}push(r,e,t,o){Jd(this.ts,e,r),Jd(this.actual,t,r),Jd(this.reverse,o,r)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function _c(n,r,e){return e instanceof st?new sa(n,r,e):e instanceof Se?new la(n,r,e):e instanceof be?new Proxy(new tp(n,r,e),HC):e!==null&&typeof e=="object"?oa(e)?e:new Proxy(new ep(n,r,e),kC):e}function rp(n){let r=new Dc(n);return[_c(r,"",n),r]}function mn(n,r){let[e,t]=rp(n);return r(e),t.result()}function xt(n){return n instanceof sa||n instanceof la?n._current:n!==null&&typeof n=="object"?n[rg]:n}var yt;(o=>{function n(i,a){if(a.length===i.length)for(var s=0;s<i.length;){if(i[s]!==a[s])return!1;s+=1}else return!1;return!0}o.equal=n;function r(i,a,s){let l=t(s,i);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=r;function e(i,a){if((i instanceof st||i instanceof sa)&&typeof a=="string")return i.data(a);if((i instanceof Se||i instanceof la)&&typeof a=="string")return i.data(a);if(typeof a=="number"&&Array.isArray(i))return i[a];if(typeof a=="string"&&typeof i=="object"&&i!==null)return i[a]}o.zoomOnce=e;function t(i,a,s=0){for(;s<a.length&&i!==void 0;)i=e(i,a[s]),s+=1;return i}o.zoom=t})(yt||(yt={}));function ng(n,r){let e=[];if(r.length===n.length)for(var t=0;t<n.length;){if(r[t]==="*")e.push(n[t]);else if(n[t]!==r[t])return null;t+=1}else return null;return e}function Ge(n,r){let e=[];if(r.length<=n.length)for(var t=0;t<r.length;){if(r[t]==="*")e.push(n[t]);else if(n[t]!==r[t])return null;t+=1}else return null;return e}var Bc=class{},Ys=class extends Bc{constructor(e){super();this.id=e}},Xs=class extends Bc{constructor(e){super();this.data=e}};var np;try{np=new TextDecoder}catch{}var de,gn,G=0;var pg=[],ip=pg,ap=0,yr={},Ke,yn,Rr=0,yo=0,Mr,Fo,lr=[],Je,ig={useRecords:!1,mapsAsObjects:!0},Ks=class{},lp=new Ks;lp.name="MessagePack 0xC1";var ca=!1,go=class{constructor(r){r&&(r.useRecords===!1&&r.mapsAsObjects===void 0&&(r.mapsAsObjects=!0),r.structures?r.structures.sharedLength=r.structures.length:r.getStructures&&((r.structures=[]).uninitialized=!0,r.structures.sharedLength=0)),Object.assign(this,r)}unpack(r,e){if(de)return gg(()=>(Rc(),this?this.unpack(r,e):go.prototype.unpack.call(ig,r,e)));gn=e>-1?e:r.length,G=0,ap=0,yo=0,yn=null,ip=pg,Mr=null,de=r;try{Je=r.dataView||(r.dataView=new DataView(r.buffer,r.byteOffset,r.byteLength))}catch(t){throw de=null,r instanceof Uint8Array?t:new Error("Source must be a Uint8Array or Buffer but was a "+(r&&typeof r=="object"?r.constructor.name:typeof r))}if(this instanceof go){if(yr=this,this.structures)return Ke=this.structures,Lc();(!Ke||Ke.length>0)&&(Ke=[])}else yr=ig,(!Ke||Ke.length>0)&&(Ke=[]);return Lc()}unpackMultiple(r,e){let t,o=0;try{ca=!0;let i=r.length,a=this?this.unpack(r,i):Gc.unpack(r,i);if(e){for(e(a);G<i;)if(o=G,e(Lc())===!1)return}else{for(t=[a];G<i;)o=G,t.push(Lc());return t}}catch(i){throw i.lastPosition=o,i.values=t,i}finally{ca=!1,Rc()}}_mergeStructures(r,e){r=r||[];for(let t=0,o=r.length;t<o;t++){let i=r[t];i&&(i.isShared=!0,t>=32&&(i.highByte=t-32>>5))}r.sharedLength=r.length;for(let t in e||[])if(t>=0){let o=r[t],i=e[t];i&&(o&&((r.restoreStructures||(r.restoreStructures=[]))[t]=o),r[t]=i)}return this.structures=r}decode(r,e){return this.unpack(r,e)}};function Lc(){try{if(!yr.trusted&&!ca){let r=Ke.sharedLength||0;r<Ke.length&&(Ke.length=r)}let n=Ot();if(G==gn)Ke.restoreStructures&&ag(),Ke=null,de=null,Fo&&(Fo=null);else if(G>gn){let r=new Error("Unexpected end of MessagePack data");throw r.incomplete=!0,r}else if(!ca)throw new Error("Data read, but end of buffer not reached");return n}catch(n){throw Ke.restoreStructures&&ag(),Rc(),(n instanceof RangeError||n.message.startsWith("Unexpected end of buffer"))&&(n.incomplete=!0),n}}function ag(){for(let n in Ke.restoreStructures)Ke[n]=Ke.restoreStructures[n];Ke.restoreStructures=null}function Ot(){let n=de[G++];if(n<160)if(n<128){if(n<64)return n;{let r=Ke[n&63]||yr.getStructures&&fg()[n&63];return r?(r.read||(r.read=cp(r,n&63)),r.read()):n}}else if(n<144)if(n-=128,yr.mapsAsObjects){let r={};for(let e=0;e<n;e++)r[mg()]=Ot();return r}else{let r=new Map;for(let e=0;e<n;e++)r.set(Ot(),Ot());return r}else{n-=144;let r=new Array(n);for(let e=0;e<n;e++)r[e]=Ot();return r}else if(n<192){let r=n-160;if(yo>=G)return yn.slice(G-Rr,(G+=r)-Rr);if(yo==0&&gn<140){let e=r<16?up(r):hg(r);if(e!=null)return e}return sp(r)}else{let r;switch(n){case 192:return null;case 193:return Mr?(r=Ot(),r>0?Mr[1].slice(Mr.position1,Mr.position1+=r):Mr[0].slice(Mr.position0,Mr.position0-=r)):lp;case 194:return!1;case 195:return!0;case 196:return op(de[G++]);case 197:return r=Je.getUint16(G),G+=2,op(r);case 198:return r=Je.getUint32(G),G+=4,op(r);case 199:return ni(de[G++]);case 200:return r=Je.getUint16(G),G+=2,ni(r);case 201:return r=Je.getUint32(G),G+=4,ni(r);case 202:if(r=Je.getFloat32(G),yr.useFloat32>2){let e=zc[(de[G]&127)<<1|de[G+1]>>7];return G+=4,(e*r+(r>0?.5:-.5)>>0)/e}return G+=4,r;case 203:return r=Je.getFloat64(G),G+=8,r;case 204:return de[G++];case 205:return r=Je.getUint16(G),G+=2,r;case 206:return r=Je.getUint32(G),G+=4,r;case 207:return yr.int64AsNumber?(r=Je.getUint32(G)*4294967296,r+=Je.getUint32(G+4)):r=Je.getBigUint64(G),G+=8,r;case 208:return Je.getInt8(G++);case 209:return r=Je.getInt16(G),G+=2,r;case 210:return r=Je.getInt32(G),G+=4,r;case 211:return yr.int64AsNumber?(r=Je.getInt32(G)*4294967296,r+=Je.getUint32(G+4)):r=Je.getBigInt64(G),G+=8,r;case 212:if(r=de[G++],r==114)return dg(de[G++]&63);{let e=lr[r];if(e)return e.read?(G++,e.read(Ot())):e.noBuffer?(G++,e()):e(de.subarray(G,++G));throw new Error("Unknown extension "+r)}case 213:return r=de[G],r==114?(G++,dg(de[G++]&63,de[G++])):ni(2);case 214:return ni(4);case 215:return ni(8);case 216:return ni(16);case 217:return r=de[G++],yo>=G?yn.slice(G-Rr,(G+=r)-Rr):qC(r);case 218:return r=Je.getUint16(G),G+=2,yo>=G?yn.slice(G-Rr,(G+=r)-Rr):$C(r);case 219:return r=Je.getUint32(G),G+=4,yo>=G?yn.slice(G-Rr,(G+=r)-Rr):YC(r);case 220:return r=Je.getUint16(G),G+=2,lg(r);case 221:return r=Je.getUint32(G),G+=4,lg(r);case 222:return r=Je.getUint16(G),G+=2,cg(r);case 223:return r=Je.getUint32(G),G+=4,cg(r);default:if(n>=224)return n-256;if(n===void 0){let e=new Error("Unexpected end of MessagePack data");throw e.incomplete=!0,e}throw new Error("Unknown MessagePack token "+n)}}}var WC=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function cp(n,r){function e(){if(e.count++>2){let o=n.read=new Function("r","return function(){return {"+n.map(i=>WC.test(i)?i+":r()":"["+JSON.stringify(i)+"]:r()").join(",")+"}}")(Ot);return n.highByte===0&&(n.read=sg(r,n.read)),o()}let t={};for(let o=0,i=n.length;o<i;o++){let a=n[o];t[a]=Ot()}return t}return e.count=0,n.highByte===0?sg(r,e):e}var sg=(n,r)=>function(){let e=de[G++];if(e===0)return r();let t=n<32?-(n+(e<<5)):n+(e<<5),o=Ke[t]||fg()[t];if(!o)throw new Error("Record id is not defined for "+t);return o.read||(o.read=cp(o,n)),o.read()};function fg(){let n=gg(()=>(de=null,yr.getStructures()));return Ke=yr._mergeStructures(n,Ke)}var sp=Vc,qC=Vc,$C=Vc,YC=Vc;function Vc(n){let r;if(n<16&&(r=up(n)))return r;if(n>64&&np)return np.decode(de.subarray(G,G+=n));let e=G+n,t=[];for(r="";G<e;){let o=de[G++];if((o&128)===0)t.push(o);else if((o&224)===192){let i=de[G++]&63;t.push((o&31)<<6|i)}else if((o&240)===224){let i=de[G++]&63,a=de[G++]&63;t.push((o&31)<<12|i<<6|a)}else if((o&248)===240){let i=de[G++]&63,a=de[G++]&63,s=de[G++]&63,l=(o&7)<<18|i<<12|a<<6|s;l>65535&&(l-=65536,t.push(l>>>10&1023|55296),l=56320|l&1023),t.push(l)}else t.push(o);t.length>=4096&&(r+=Wt.apply(String,t),t.length=0)}return t.length>0&&(r+=Wt.apply(String,t)),r}function lg(n){let r=new Array(n);for(let e=0;e<n;e++)r[e]=Ot();return r}function cg(n){if(yr.mapsAsObjects){let r={};for(let e=0;e<n;e++)r[mg()]=Ot();return r}else{let r=new Map;for(let e=0;e<n;e++)r.set(Ot(),Ot());return r}}var Wt=String.fromCharCode;function hg(n){let r=G,e=new Array(n);for(let t=0;t<n;t++){let o=de[G++];if((o&128)>0){G=r;return}e[t]=o}return Wt.apply(String,e)}function up(n){if(n<4)if(n<2){if(n===0)return"";{let r=de[G++];if((r&128)>1){G-=1;return}return Wt(r)}}else{let r=de[G++],e=de[G++];if((r&128)>0||(e&128)>0){G-=2;return}if(n<3)return Wt(r,e);let t=de[G++];if((t&128)>0){G-=3;return}return Wt(r,e,t)}else{let r=de[G++],e=de[G++],t=de[G++],o=de[G++];if((r&128)>0||(e&128)>0||(t&128)>0||(o&128)>0){G-=4;return}if(n<6){if(n===4)return Wt(r,e,t,o);{let i=de[G++];if((i&128)>0){G-=5;return}return Wt(r,e,t,o,i)}}else if(n<8){let i=de[G++],a=de[G++];if((i&128)>0||(a&128)>0){G-=6;return}if(n<7)return Wt(r,e,t,o,i,a);let s=de[G++];if((s&128)>0){G-=7;return}return Wt(r,e,t,o,i,a,s)}else{let i=de[G++],a=de[G++],s=de[G++],l=de[G++];if((i&128)>0||(a&128)>0||(s&128)>0||(l&128)>0){G-=8;return}if(n<10){if(n===8)return Wt(r,e,t,o,i,a,s,l);{let c=de[G++];if((c&128)>0){G-=9;return}return Wt(r,e,t,o,i,a,s,l,c)}}else if(n<12){let c=de[G++],u=de[G++];if((c&128)>0||(u&128)>0){G-=10;return}if(n<11)return Wt(r,e,t,o,i,a,s,l,c,u);let p=de[G++];if((p&128)>0){G-=11;return}return Wt(r,e,t,o,i,a,s,l,c,u,p)}else{let c=de[G++],u=de[G++],p=de[G++],d=de[G++];if((c&128)>0||(u&128)>0||(p&128)>0||(d&128)>0){G-=12;return}if(n<14){if(n===12)return Wt(r,e,t,o,i,a,s,l,c,u,p,d);{let h=de[G++];if((h&128)>0){G-=13;return}return Wt(r,e,t,o,i,a,s,l,c,u,p,d,h)}}else{let h=de[G++],f=de[G++];if((h&128)>0||(f&128)>0){G-=14;return}if(n<15)return Wt(r,e,t,o,i,a,s,l,c,u,p,d,h,f);let m=de[G++];if((m&128)>0){G-=15;return}return Wt(r,e,t,o,i,a,s,l,c,u,p,d,h,f,m)}}}}}function op(n){return yr.copyBuffers?Uint8Array.prototype.slice.call(de,G,G+=n):de.subarray(G,G+=n)}function ni(n){let r=de[G++];if(lr[r])return lr[r](de.subarray(G,G+=n));throw new Error("Unknown extension type "+r)}var ug=new Array(4096);function mg(){let n=de[G++];if(n>=160&&n<192){if(n=n-160,yo>=G)return yn.slice(G-Rr,(G+=n)-Rr);if(!(yo==0&&gn<180))return sp(n)}else return G--,Ot();let r=(n<<5^(n>1?Je.getUint16(G):n>0?de[G]:0))&4095,e=ug[r],t=G,o=G+n-3,i,a=0;if(e&&e.bytes==n){for(;t<o;){if(i=Je.getUint32(t),i!=e[a++]){t=1879048192;break}t+=4}for(o+=3;t<o;)if(i=de[t++],i!=e[a++]){t=1879048192;break}if(t===o)return G=t,e.string;o-=3,t=G}for(e=[],ug[r]=e,e.bytes=n;t<o;)i=Je.getUint32(t),e.push(i),t+=4;for(o+=3;t<o;)i=de[t++],e.push(i);let s=n<16?up(n):hg(n);return s!=null?e.string=s:e.string=sp(n)}var dg=(n,r)=>{var e=Ot();let t=n;r!==void 0&&(n=n<32?-((r<<5)+n):(r<<5)+n,e.highByte=r);let o=Ke[n];return o&&o.isShared&&((Ke.restoreStructures||(Ke.restoreStructures=[]))[n]=o),Ke[n]=e,e.read=cp(e,t),e.read()},yg=typeof self=="object"?self:global;lr[0]=()=>{};lr[0].noBuffer=!0;lr[101]=()=>{let n=Ot();return(yg[n[0]]||Error)(n[1])};lr[105]=n=>{let r=Je.getUint32(G-4);Fo||(Fo=new Map);let e=de[G],t;e>=144&&e<160||e==220||e==221?t=[]:t={};let o={target:t};Fo.set(r,o);let i=Ot();return o.used?Object.assign(t,i):(o.target=i,i)};lr[112]=n=>{let r=Je.getUint32(G-4),e=Fo.get(r);return e.used=!0,e.target};lr[115]=()=>new Set(Ot());var dp=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(n=>n+"Array");lr[116]=n=>{let r=n[0],e=dp[r];if(!e)throw new Error("Could not find typed array for code "+r);return new yg[e](Uint8Array.prototype.slice.call(n,1).buffer)};lr[120]=()=>{let n=Ot();return new RegExp(n[0],n[1])};lr[98]=n=>{let r=(n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3],e=G;G+=r-4,Mr=[Ot(),Ot()],Mr.position0=0,Mr.position1=0;let t=G;G=e;try{return Ot()}finally{G=t}};lr[255]=n=>n.length==4?new Date((n[0]*16777216+(n[1]<<16)+(n[2]<<8)+n[3])*1e3):n.length==8?new Date(((n[0]<<22)+(n[1]<<14)+(n[2]<<6)+(n[3]>>2))/1e6+((n[3]&3)*4294967296+n[4]*16777216+(n[5]<<16)+(n[6]<<8)+n[7])*1e3):n.length==12?new Date(((n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3])/1e6+((n[4]&128?-281474976710656:0)+n[6]*1099511627776+n[7]*4294967296+n[8]*16777216+(n[9]<<16)+(n[10]<<8)+n[11])*1e3):new Date("invalid");function gg(n){let r=gn,e=G,t=ap,o=Rr,i=yo,a=yn,s=ip,l=Fo,c=Mr,u=new Uint8Array(de.slice(0,gn)),p=Ke,d=Ke.slice(0,Ke.length),h=yr,f=ca,m=n();return gn=r,G=e,ap=t,Rr=o,yo=i,yn=a,ip=s,Fo=l,Mr=c,de=u,ca=f,Ke=p,Ke.splice(0,Ke.length,...d),yr=h,Je=new DataView(de.buffer,de.byteOffset,de.byteLength),m}function Rc(){de=null,Fo=null,Ke=null}function xg(n){n.unpack?lr[n.type]=n.unpack:lr[n.type]=n}var zc=new Array(147);for(let n=0;n<256;n++)zc[n]=+("1e"+Math.floor(45.15-n*.30103));var Gc=new go({useRecords:!1}),XC=Gc.unpack,KC=Gc.unpackMultiple,QC=Gc.unpack,jc={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},ZC=new Float32Array(1),az=new Uint8Array(ZC.buffer,0,4);var Fc;try{Fc=new TextEncoder}catch{}var Uc,fp,kc=typeof Buffer<"u",pp=kc?Buffer.allocUnsafeSlow:Uint8Array,wg=kc?Buffer:Uint8Array,bg=kc?4294967296:2144337920,Q,Mt,U=0,xo,bo=null,JC=/[\u0080-\uFFFF]/,Qs=Symbol("record-id"),ii=class extends go{constructor(r){super(r),this.offset=0;let e,t,o,i,a,s,l=0,c=wg.prototype.utf8Write?function(x,_,D){return Q.utf8Write(x,_,D)}:Fc&&Fc.encodeInto?function(x,_){return Fc.encodeInto(x,Q.subarray(_)).written}:!1,u=this;r||(r={});let p=r&&r.sequential,d=r.structures||r.saveStructures,h=r.maxSharedStructures;if(h==null&&(h=d?32:0),h>8160)throw new Error("Maximum maxSharedStructure is 8160");let f=r.maxOwnStructures;f==null&&(f=d?32:64),p&&!r.saveStructures&&(this.structures=[]);let m=h>32||f+h>64,y=h+64,g=h+f+64;if(g>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let v=[],O=0,P=0;this.pack=this.encode=function(x,_){if(Q||(Q=new pp(8192),Mt=new DataView(Q.buffer,0,8192),U=0),xo=Q.length-10,xo-U<2048?(Q=new pp(Q.length),Mt=new DataView(Q.buffer,0,Q.length),xo=Q.length-10,U=0):U=U+7&2147483640,t=U,s=u.structuredClone?new Map:null,u.bundleStrings?(bo=["",""],Q[U++]=214,Q[U++]=98,bo.position=U-t,U+=4):bo=null,o=u.structures,o){o.uninitialized&&(o=u._mergeStructures(u.getStructures()));let D=o.sharedLength||0;if(D>h)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 A=0;A<D;A++){let N=o[A];if(!N)continue;let E,B=o.transitions;for(let V=0,j=N.length;V<j;V++){let R=N[V];E=B[R],E||(E=B[R]=Object.create(null)),B=E}B[Qs]=A+64}l=D}p||(o.nextId=D+64)}i&&(i=!1),a=o||[];try{if(S(x),bo){Mt.setUint32(bo.position+t,U-bo.position-t);let D=bo;bo=null,S(D[0]),S(D[1])}if(u.offset=U,s&&s.idsToInsert){U+=s.idsToInsert.length*6,U>xo&&I(U),u.offset=U;let D=tT(Q.subarray(t,U),s.idsToInsert);return s=null,D}return _&Og?(Q.start=t,Q.end=U,Q):Q.subarray(t,U)}finally{if(o){if(P<10&&P++,O>1e4)o.transitions=null,P=0,O=0,v.length>0&&(v=[]);else if(v.length>0&&!p){for(let D=0,A=v.length;D<A;D++)v[D][Qs]=0;v=[]}if(i&&u.saveStructures){let D=o.sharedLength||h;o.length>D&&(o=o.slice(0,D));let A=Q.subarray(t,U);return u.saveStructures(o,l)===!1?(u._mergeStructures(u.getStructures()),u.pack(x)):(l=D,A)}}_&lT&&(U=t)}};let S=x=>{U>xo&&(Q=I(U));var _=typeof x,D;if(_==="string"){let A=x.length;if(bo&&A>=8&&A<4096){let B=JC.test(x);bo[B?0:1]+=x,Q[U++]=193,S(B?-A:A);return}let N;A<32?N=1:A<256?N=2:A<65536?N=3:N=5;let E=A*3;if(U+E>xo&&(Q=I(U+E)),A<64||!c){let B,V,j,R=U+N;for(B=0;B<A;B++)V=x.charCodeAt(B),V<128?Q[R++]=V:V<2048?(Q[R++]=V>>6|192,Q[R++]=V&63|128):(V&64512)===55296&&((j=x.charCodeAt(B+1))&64512)===56320?(V=65536+((V&1023)<<10)+(j&1023),B++,Q[R++]=V>>18|240,Q[R++]=V>>12&63|128,Q[R++]=V>>6&63|128,Q[R++]=V&63|128):(Q[R++]=V>>12|224,Q[R++]=V>>6&63|128,Q[R++]=V&63|128);D=R-U-N}else D=c(x,U+N,E);D<32?Q[U++]=160|D:D<256?(N<2&&Q.copyWithin(U+2,U+1,U+1+D),Q[U++]=217,Q[U++]=D):D<65536?(N<3&&Q.copyWithin(U+3,U+2,U+2+D),Q[U++]=218,Q[U++]=D>>8,Q[U++]=D&255):(N<5&&Q.copyWithin(U+5,U+3,U+3+D),Q[U++]=219,Mt.setUint32(U,D),U+=4),U+=D}else if(_==="number")if(x>>>0===x)x<64?Q[U++]=x:x<256?(Q[U++]=204,Q[U++]=x):x<65536?(Q[U++]=205,Q[U++]=x>>8,Q[U++]=x&255):(Q[U++]=206,Mt.setUint32(U,x),U+=4);else if(x>>0===x)x>=-32?Q[U++]=256+x:x>=-128?(Q[U++]=208,Q[U++]=x+256):x>=-32768?(Q[U++]=209,Mt.setInt16(U,x),U+=2):(Q[U++]=210,Mt.setInt32(U,x),U+=4);else{let A;if((A=this.useFloat32)>0&&x<4294967296&&x>=-2147483648){Q[U++]=202,Mt.setFloat32(U,x);let N;if(A<4||(N=x*zc[(Q[U]&127)<<1|Q[U+1]>>7])>>0===N){U+=4;return}else U--}Q[U++]=203,Mt.setFloat64(U,x),U+=8}else if(_==="object")if(!x)Q[U++]=192;else{if(s){let N=s.get(x);if(N){if(!N.id){let E=s.idsToInsert||(s.idsToInsert=[]);N.id=E.push(N)}Q[U++]=214,Q[U++]=112,Mt.setUint32(U,N.id),U+=4;return}else s.set(x,{offset:U-t})}let A=x.constructor;if(A===Object)T(x,!0);else if(A===Array){D=x.length,D<16?Q[U++]=144|D:D<65536?(Q[U++]=220,Q[U++]=D>>8,Q[U++]=D&255):(Q[U++]=221,Mt.setUint32(U,D),U+=4);for(let N=0;N<D;N++)S(x[N])}else if(A===Map){D=x.size,D<16?Q[U++]=128|D:D<65536?(Q[U++]=222,Q[U++]=D>>8,Q[U++]=D&255):(Q[U++]=223,Mt.setUint32(U,D),U+=4);for(let[N,E]of x)S(N),S(E)}else{for(let N=0,E=Uc.length;N<E;N++){let B=fp[N];if(x instanceof B){let V=Uc[N];if(V.write){V.type&&(Q[U++]=212,Q[U++]=V.type,Q[U++]=0),S(V.write.call(this,x));return}let j=Q,R=Mt,W=U;Q=null;let F;try{F=V.pack.call(this,x,k=>(Q=j,j=null,U+=k,U>xo&&I(U),{target:Q,targetView:Mt,position:U-k}),S)}finally{j&&(Q=j,Mt=R,U=W,xo=Q.length-10)}F&&(F.length+U>xo&&I(F.length+U),U=eT(F,Q,U,V.type));return}}T(x,!x.hasOwnProperty)}}else if(_==="boolean")Q[U++]=x?195:194;else if(_==="bigint"){if(x<BigInt(1)<<BigInt(63)&&x>=-(BigInt(1)<<BigInt(63)))Q[U++]=211,Mt.setBigInt64(U,x);else if(x<BigInt(1)<<BigInt(64)&&x>0)Q[U++]=207,Mt.setBigUint64(U,x);else if(this.largeBigIntToFloat)Q[U++]=203,Mt.setFloat64(U,Number(x));else throw new RangeError(x+" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64");U+=8}else if(_==="undefined")this.encodeUndefinedAsNil?Q[U++]=192:(Q[U++]=212,Q[U++]=0,Q[U++]=0);else if(_==="function")S(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+_)},T=this.useRecords===!1?this.variableMapSize?x=>{let _=Object.keys(x),D=_.length;D<16?Q[U++]=128|D:D<65536?(Q[U++]=222,Q[U++]=D>>8,Q[U++]=D&255):(Q[U++]=223,Mt.setUint32(U,D),U+=4);let A;for(let N=0;N<D;N++)S(A=_[N]),S(x[A])}:(x,_)=>{Q[U++]=222;let D=U-t;U+=2;let A=0;for(let N in x)(_||x.hasOwnProperty(N))&&(S(N),S(x[N]),A++);Q[D+++t]=A>>8,Q[D+t]=A&255}:x=>{let _=Object.keys(x),D,A=a.transitions||(a.transitions=Object.create(null)),N=0;for(let B=0,V=_.length;B<V;B++){let j=_[B];D=A[j],D||(D=A[j]=Object.create(null),N++),A=D}let E=A[Qs];if(E)E>=96&&m?(Q[U++]=((E-=96)&31)+96,Q[U++]=E>>5):Q[U++]=E;else{E=a.nextId,E||(E=64),E<y&&this.shouldShareStructure&&!this.shouldShareStructure(_)?(E=a.nextOwnId,E<g||(E=y),a.nextOwnId=E+1):(E>=g&&(E=y),a.nextId=E+1);let B=_.highByte=E>=96&&m?E-96>>5:-1;A[Qs]=E,a[E-64]=_,E<y?(_.isShared=!0,a.sharedLength=E-63,i=!0,B>=0?(Q[U++]=(E&31)+96,Q[U++]=B):Q[U++]=E):(B>=0?(Q[U++]=213,Q[U++]=114,Q[U++]=(E&31)+96,Q[U++]=B):(Q[U++]=212,Q[U++]=114,Q[U++]=E),N&&(O+=P*N),v.length>=f&&(v.shift()[Qs]=0),v.push(A),S(_))}for(let B=0,V=_.length;B<V;B++)S(x[_[B]])},I=x=>{let _;if(x>16777216){if(x-t>bg)throw new Error("Packed buffer would be larger than maximum buffer size");_=Math.min(bg,Math.round(Math.max((x-t)*(x>67108864?1.25:2),4194304)/4096)*4096)}else _=(Math.max(x-t<<2,Q.length-1)>>12)+1<<12;let D=new pp(_);return Mt=new DataView(D.buffer,0,_),Q.copy?Q.copy(D,0,t,x):D.set(Q.slice(t,x)),U-=t,t=0,xo=D.length-10,Q=D}}useBuffer(r){Q=r,Mt=new DataView(Q.buffer,Q.byteOffset,Q.byteLength),U=0}};fp=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,Ks];Uc=[{pack(n,r,e){let t=n.getTime()/1e3;if((this.useTimestamp32||n.getMilliseconds()===0)&&t>=0&&t<4294967296){let{target:o,targetView:i,position:a}=r(6);o[a++]=214,o[a++]=255,i.setUint32(a,t)}else if(t>0&&t<17179869184){let{target:o,targetView:i,position:a}=r(10);o[a++]=215,o[a++]=255,i.setUint32(a,n.getMilliseconds()*4e6+(t/1e3/4294967296>>0)),i.setUint32(a+4,t)}else if(isNaN(t)){if(this.onInvalidDate)return r(0),e(this.onInvalidDate());let{target:o,targetView:i,position:a}=r(3);o[a++]=212,o[a++]=255,o[a++]=255}else{let{target:o,targetView:i,position:a}=r(15);o[a++]=199,o[a++]=12,o[a++]=255,i.setUint32(a,n.getMilliseconds()*1e6),i.setBigInt64(a+4,BigInt(Math.floor(t)))}}},{pack(n,r,e){let t=Array.from(n),{target:o,position:i}=r(this.structuredClone?3:0);this.structuredClone&&(o[i++]=212,o[i++]=115,o[i++]=0),e(t)}},{pack(n,r,e){let{target:t,position:o}=r(this.structuredClone?3:0);this.structuredClone&&(t[o++]=212,t[o++]=101,t[o++]=0),e([n.name,n.message])}},{pack(n,r,e){let{target:t,position:o}=r(this.structuredClone?3:0);this.structuredClone&&(t[o++]=212,t[o++]=120,t[o++]=0),e([n.source,n.flags])}},{pack(n,r){this.structuredClone?vg(n,16,r):Sg(kc?Buffer.from(n):new Uint8Array(n),r)}},{pack(n,r){let e=n.constructor;e!==wg&&this.structuredClone?vg(n,dp.indexOf(e.name),r):Sg(n,r)}},{pack(n,r){let{target:e,position:t}=r(1);e[t]=193}}];function vg(n,r,e,t){let o=n.byteLength;if(o+1<256){var{target:i,position:a}=e(4+o);i[a++]=199,i[a++]=o+1}else if(o+1<65536){var{target:i,position:a}=e(5+o);i[a++]=200,i[a++]=o+1>>8,i[a++]=o+1&255}else{var{target:i,position:a,targetView:s}=e(7+o);i[a++]=201,s.setUint32(a,o+1),a+=4}i[a++]=116,i[a++]=r,i.set(new Uint8Array(n.buffer,n.byteOffset,n.byteLength),a)}function Sg(n,r){let e=n.byteLength;var t,o;if(e<256){var{target:t,position:o}=r(e+2);t[o++]=196,t[o++]=e}else if(e<65536){var{target:t,position:o}=r(e+3);t[o++]=197,t[o++]=e>>8,t[o++]=e&255}else{var{target:t,position:o,targetView:i}=r(e+5);t[o++]=198,i.setUint32(o,e),o+=4}t.set(n,o)}function eT(n,r,e,t){let o=n.length;switch(o){case 1:r[e++]=212;break;case 2:r[e++]=213;break;case 4:r[e++]=214;break;case 8:r[e++]=215;break;case 16:r[e++]=216;break;default:o<256?(r[e++]=199,r[e++]=o):o<65536?(r[e++]=200,r[e++]=o>>8,r[e++]=o&255):(r[e++]=201,r[e++]=o>>24,r[e++]=o>>16&255,r[e++]=o>>8&255,r[e++]=o&255)}return r[e++]=t,r.set(n,e),e+=o,e}function tT(n,r){let e,t=r.length*6,o=n.length-t;for(r.sort((i,a)=>i.offset>a.offset?1:-1);e=r.pop();){let i=e.offset,a=e.id;n.copyWithin(i+t,i,o),t-=6;let s=i+t;n[s++]=214,n[s++]=105,n[s++]=a>>24,n[s++]=a>>16&255,n[s++]=a>>8&255,n[s++]=a&255,o=i}return n}function xn(n){if(n.Class){if(!n.pack&&!n.write)throw new Error("Extension has no pack or write function");if(n.pack&&!n.type)throw new Error("Extension has no type (numeric code to identify the extension)");fp.unshift(n.Class),Uc.unshift(n)}xg(n)}var Pg=new ii({useRecords:!1}),rT=Pg.pack,oT=Pg.pack;var{NEVER:nT,ALWAYS:iT,DECIMAL_ROUND:aT,DECIMAL_FIT:sT}=jc,Og=512,lT=1024;var Cg=new ii({structuredClone:!0});xn({Class:be.prototype.constructor,type:1,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,be.prototype),n}});xn({Class:Se.prototype.constructor,type:2,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,Se.prototype),n}});xn({Class:st.prototype.constructor,type:3,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,st.prototype),n}});xn({Class:Ys.prototype.constructor,type:4,write(n){return n.id},read(n){return new Ys(n)}});xn({Class:Xs.prototype.constructor,type:5,write(n){return n.data},read(n){return new Xs(n)}});xn({Class:lt.prototype.constructor,type:6,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,lt.prototype),n}});function cT(n){var r=0;if(n.length===0)return r;for(let e=0;e<n.length;e++){let t=n[e];r=(r<<5)-r+t,r=r&r}return r}function hp(n){if(oa(n))return n;if(Array.isArray(n))return n.map(hp);if(typeof n=="object"&&n!==null){let r={};for(let e of Object.keys(n).sort())r[e]=hp(n[e]);return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}else return n}var Hc;(t=>{function n(o){return Cg.pack(o)}t.serialize=n;function r(o){return Cg.unpack(o)}t.deserialize=r;function e(o){return cT(n(hp(o))).toString()}t.checksum=e})(Hc||(Hc={}));var Sn="personal camera",wn="a218fcc3-276b-49b9-b485-49037fd14f5f",Ng=2960946,It=5526619;var ua;(h=>{function n(f,m){return f[0]===m[0]&&f[1]===m[1]}h.isEqual=n;function r(f,m,y){return[f[0]+(m[0]-f[0])*y,f[1]+(m[1]-f[1])*y]}h.lerp=r;function e(f,m){return[f[0]+m[0],f[1]+m[1]]}h.add=e;function t(f,m){return[f[0]-m[0],f[1]-m[1]]}h.sub=t;function o(f,m){return[f[0]*m[0],f[1]*m[1]]}h.multiply=o;function i(f,m){return[f[0]/m[0],f[1]/m[1]]}h.divide=i;function a(f,m){return Math.pow(m[0]-f[0],2)+Math.pow(m[1]-f[1],2)}h.distanceSquared=a;function s(f,m){return Math.sqrt(a(f,m))}h.distance=s;function l(f,m){return f[0]*m[0]+f[1]*m[1]}h.dot=l;function c(f,m){return[f[0]*m,f[1]*m]}h.scalarMultiply=c;function u(f,m,y){let g=h.sub(m,f),v=h.sub(y,f),O=h.dot(g,v)/h.dot(g,g),P=h.scalarMultiply(g,O);return h.add(f,P)}h.projectionOnto=u;function p(f,m,y){return s(f,u(f,m,y))}h.projectionOntoDistance=p;function d(f,m){return[(f[0]+m[0])*.5,(f[1]+m[1])*.5]}h.center=d})(ua||(ua={}));var bn;(s=>{function n(l,c){return l[0]===c[0]&&l[1]===c[1]&&l[2]===c[2]}s.isEqual=n;function r(l,c){return[l[0]+c[0],l[1]+c[1],l[2]+c[2]]}s.add=r;function e(l,c){return[l[0]-c[0],l[1]-c[1],l[2]-c[2]]}s.sub=e;function t(l,c){return[l[0]/c[0],l[1]/c[1],l[2]/c[2]]}s.div=t;function o(l,c){return[l[0]*c[0],l[1]*c[1],l[2]*c[2]]}s.mul=o;function i(l,c){return Math.hypot(l[0]-c[0],l[1]-c[1],l[2]-c[2])}s.dist=i;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})(bn||(bn={}));var Tg;(e=>{function n(t,o){return t[0]===o[0]&&t[1]===o[1]&&t[2]===o[2]&&t[3]===o[3]}e.isEqual=n;function r(t,o,i){return[t[0]+(o[0]-t[0])*i,t[1]+(o[1]-t[1])*i,t[2]+(o[2]-t[2])*i,t[3]+(o[3]-t[3])*i]}e.lerp=r})(Tg||(Tg={}));var vn;(o=>{o.identity=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function r(i,a){for(let s=0;s<16;s++)if(i[s]!==a[s])return!1;return!0}o.isEqual=r;function e(i){return i??o.identity}o.simplify=e;function t(i,a){let s=a.slice(0);for(var l=0,c=a.length;l<c;l+=3){let u=i[3]*a[l]+i[7]*a[l+1]+i[11]*a[l+2]+i[15];s[l]=(i[0]*a[l]+i[4]*a[l+1]+i[8]*a[l+2]+i[12])/u,s[l+1]=(i[1]*a[l]+i[5]*a[l+1]+i[9]*a[l+2]+i[13])/u,s[l+2]=(i[2]*a[l]+i[6]*a[l+1]+i[10]*a[l+2]+i[14])/u}return s}o.applyMatrix4=t})(vn||(vn={}));var Rt;(p=>{function n(d){return typeof d=="object"&&typeof d.r=="number"&&typeof d.g=="number"&&typeof d.b=="number"}p.isRGB=n,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(d){return{r:Math.round(d.r*255),g:Math.round(d.g*255),b:Math.round(d.b*255),a:1}}p.toRgb255a1=o;function i(d){return{r:d.r,g:d.g,b:d.b}}p.clone=i;function a(d){return d=Math.floor(d),{r:(d>>16&255)/255,g:(d>>8&255)/255,b:(d&255)/255}}p.fromHex=a;function s(d){return Math.round(d.r*255)*65536+Math.round(d.g*255)*256+Math.round(d.b*255)}p.toHex=s;function l(d,h){return d.r===h.r&&d.g===h.g&&d.b===h.b}p.equals=l;function c(d,h){return d.r.toFixed(2)===h.r.toFixed(2)&&d.g.toFixed(2)===h.g.toFixed(2)&&d.b.toFixed(2)===h.b.toFixed(2)}p.equalsFixed=c;function u(d,h,f){return{r:d.r+(h.r-d.r)*f,g:d.g+(h.g-d.g)*f,b:d.b+(h.b-d.b)*f}}p.lerp=u})(Rt||(Rt={}));var _e;(c=>{c.white={...Rt.white,a:1},c.transparent={...Rt.white,a:0};function e(u){return{r:u[0],g:u[1],b:u[2],a:u[3]}}c.from0to1=e;function t(u,p){return{...Rt.fromHex(u),a:p}}c.fromHexAndA=t;function o(u){return{r:Math.round(u.r*255),g:Math.round(u.g*255),b:Math.round(u.b*255),a:u.a}}c.toRgb255a1=o;function i(u,p){return Rt.equals(u,p)&&u.a===p.a}c.equals=i;function a(u,p){return Rt.equalsFixed(u,p)&&u.a.toFixed(2)===p.a.toFixed(2)}c.equalsFixed=a;function s(u,p,d){return{r:u.r+(p.r-u.r)*d,g:u.g+(p.g-u.g)*d,b:u.b+(p.b-u.b)*d,a:u.a+(p.a-u.a)*d}}c.lerp=s;function l({r:u,g:p,b:d,a:h}=c.white){return`rgba(${u*255}, ${p*255}, ${d*255}, ${h})`}c.toStyle=l})(_e||(_e={}));var Wc;(r=>r.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(Wc||(Wc={}));var Ag;(r=>r.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(Ag||(Ag={}));var Mg;(r=>r.defaultData={control1:[.5,0],control2:[.5,1]})(Mg||(Mg={}));var Ig;(i=>(i.linear=[0,0,1,1],i.ease=[.25,.1,.25,1],i.easeIn=[.42,0,1,1],i.easeOut=[0,0,.58,1],i.easeInOut=[.42,0,.58,1]))(Ig||(Ig={}));function mp(n){return typeof n=="string"&&n.length===36?/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(n):!1}var Qr;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function r(t){return e.all.includes(t)}e.is=r})(Qr||(Qr={}));var Pn;(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 t(i){return i.type==="PerspectiveCamera"?i.perspective?.zoom??1:i.orthographic?.zoom??1}o.getZoom=t})(Pn||(Pn={}));var vo;(e=>{function n(t,o=.1){return{disabled:!1,type:"linear",hideBase:!1,count:3,radial:{radius:Math.max(t[0],t[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:[t[0]+t[0]*o,0,0]},grid:{count:[2,2,2],size:t.map(i=>i*(1+o)),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"}}}e.defaultData=n;function r(t,o){let i={...t};if(uT.forEach(a=>{Object.assign(i,{[a]:o[a]??t[a]})}),i.radial={...t.radial},o.radial){let a=t.radial,s=o.radial;dT.forEach(l=>{Object.assign(i.radial,{[l]:s[l]??a[l]})})}if(i.linear={...t.linear},o.linear){let a=t.linear,s=o.linear;pT.forEach(l=>{Object.assign(i.linear,{[l]:s[l]??a[l]})})}if(i.grid={...t.grid},o.grid){let a=t.grid,s=o.grid;fT.forEach(l=>{Object.assign(i.grid,{[l]:s[l]??a[l]})})}if(i.toObject={...t.toObject},o.toObject){let a=t.toObject,s=o.toObject;hT.forEach(l=>{Object.assign(i.toObject,{[l]:s[l]??a[l]})})}if(i.randomnessObject={...t.randomnessObject},o.randomnessObject){let a=t.randomnessObject,s=o.randomnessObject;mT.forEach(l=>{Object.assign(i.randomnessObject,{[l]:s[l]??a[l]})})}return i}e.merge=r})(vo||(vo={}));var qc;(t=>{t.defaultData={radial:{},linear:{},grid:{},toObject:{},randomnessObject:{}};let r=["radial","linear","grid","toObject","randomnessObject"];function e(o,i){let a=[];o.count!==void 0&&a.push({type:0,path:i,props:{count:o.count}});for(let s of r){let l=o[s];l&&Object.keys(l).length>0&&a.push({type:0,path:[...i,s],props:l})}return a}t.toOps=e})(qc||(qc={}));var uT=["count"],dT=["radius","start","end","position","scale","rotation"],pT=["position","scale","rotation"],fT=["count","size"],hT=["count","position","scale","rotation"],mT=["strength","scale","rotation","position","movement","seed","freqScale"];var $c;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function r(t){return e.all.includes(t)}e.is=r})($c||($c={}));var Yc;(e=>{function n(t){return r(t)}e.defaultData=n;function r(t){if(t==="PointLight")return{type:t,color:_e.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,penumbraSize:.5,depth:1e5};if(t==="SpotLight")return{type:t,color:_e.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(t==="DirectionalLight")return{type:t,color:_e.white,intensity:1,shadows:!0,size:2e3,depth:1e5,penumbraSize:.5,shadowResolution:1024,shadowRadius:1};throw new Error("not implemented")}})(Yc||(Yc={}));var da;(t=>(t.defaultShapeData={type:"PlaneEmitterShape",size:[100,100,100]},t.defaultCollisionData={colliderEntityId:null,collisionBounce:.75},t.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:t.defaultShapeData,autoPlay:!0,emitTimeDelay:0,emitTimeCycle:"infinity",emitTimeLoopDelayStart:"end",emitTimeDuration:1,...t.defaultCollisionData}))(da||(da={}));var On;(r=>r.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]})(On||(On={}));var yp;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function r(t,o){return t.castShadow===o.castShadow&&t.receiveShadow===o.receiveShadow}e.equals=r})(yp||(yp={}));var gp;(e=>{e.defaultData={flatShading:!1,wireframe:!1,side:0};function r(t,o){return t.flatShading===o.flatShading&&t.side===o.side&&t.wireframe===o.wireframe}e.equals=r})(gp||(gp={}));var Xc;(r=>r.defaultData={...gp.defaultData,...yp.defaultData})(Xc||(Xc={}));var Dg;(r=>{function n(e,t){let o=[];if("material"in e){let i=typeof e.material=="string"?t.materials[e.material]??t.lib.materials[e.material]?.asset:e.material;i&&o.push(i)}else if("materials"in e)for(let i of e.materials){let a=typeof i=="string"?t.materials[i]??t.lib.materials[i]?.asset:i;a&&o.push(a)}return o}r.getMaterialData=n})(Dg||(Dg={}));var pa;(e=>(e.defaultVideo={data:"",thumb:"/_assets/_videos/catThumb.png",type:"video",name:"Cat video"},e.maxSize=3e7))(pa||(pa={}));var Eg;(r=>{function n(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"}r.is=n})(Eg||(Eg={}));function Bg(n){return n.type!=="displace"}var _g;(r=>{function n(e){return e==="phong"||e==="toon"||e==="lambert"||e==="physical"}r.is=n})(_g||(_g={}));var Lg=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],Rg=["wrapping","image","video","name","minFilter"],_t;(o=>{function n(i,a){let{texture:s,...l}=a;if(Object.assign(i,l),s){let c=i.texture;c&&Object.assign(c,s)}}o.patch=n;function r(i,a){return i==="light"&&a?e(a):t(i)}o.defaultData=r;function e(i){let a={mode:0,isMask:!1,visible:!0,bumpMap:void 0,bumpMapIntensity:5,roughnessMap:void 0,alphaOverride:1};switch(i){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 t(i){let a={alpha:1,mode:0,isMask:!1,visible:!0};switch(i){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},crop:!1};case"video":return{...a,type:"video",size:[128,128],blending:0,axis:"x",side:2,projection:0,texture:{video:pa.defaultVideo,wrapping:1001,repeat:[1,1],offset:[0,0],rotation:0,minFilter:1008},crop:!1};case"color":return{...a,type:"color",color:Rt.fromHex(It)};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:{...Rt.fromHex(6710886),a:1},colorB:{...Rt.fromHex(6710886),a:1},colorC:{...Rt.fromHex(16777215),a:1},colorD:{...Rt.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:_e.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:_e.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{...a,type:"outline",outlineColor:_e.fromHexAndA(0,1),contourColor:_e.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}};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:{...Rt.fromHex(0),a:1},colorB:{...Rt.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}}}})(_t||(_t={}));var Qt;(c=>{function n(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=n;function r(u){let p="";return u.layers.forEach(d=>{Object.entries(d.data).forEach(([h,f])=>{p+=`${h}${f}`,Array.isArray(f)?f.forEach(m=>p+=`${m}`):typeof f=="object"?Object.values(f).forEach(m=>{typeof m=="number"?p+=`${m.toFixed(4)}`:p+=`${m}`}):p+=`${f}`})}),p}c.getHash=r;function e(){return{layers:new Se}}c.defaultEmptyData=e;function t(u="layer1",p="layer2"){return i("phong",u,p)}c.defaultData=t;function o(u,p){return{...u,name:p}}c.withName=o;function i(u,p="layer1",d="layer2"){let h=new Se;return h.push({fi:0,data:_t.defaultData("light",u),id:p}),h.push({fi:1,data:_t.defaultData("color"),id:d}),{layers:h}}c.defaultTwoLayerData=i;function a(u){let p=_t.defaultData("texture");u&&Object.assign(p.texture,{image:u});let d=new Se;return d.push({fi:0,data:p,id:"layer1"}),d.push({fi:1,data:{..._t.defaultData("transmission"),alpha:1},id:"layer2"}),d.push({fi:2,data:{..._t.defaultData("light","lambert"),alpha:0},id:"layer3"}),{layers:d}}c.defaultUIObjectMaterial=a;function s(u,p="phong",d="layer1",h="layer2"){let f=_t.defaultData("texture");Object.assign(f.texture,{image:u});let m=new Se;return m.push({fi:0,data:f,id:d}),m.push({fi:1,data:_t.defaultData("light",p),id:h}),{layers:m}}c.defaultTwoLayerTextureData=s;function l(u,p="phong",d="layer1",h="layer2"){let f=_t.defaultData("video");Object.assign(f.texture,{video:u});let m=new Se;return m.push({fi:0,data:f,id:d}),m.push({fi:1,data:_t.defaultData("light",p),id:h}),{layers:m}}c.defaultTwoLayerVideoTextureData=l})(Qt||(Qt={}));var fa;(r=>{function n(){return{points:new Se,roundness:0,shapeHoles:[],isClosed:!1}}r.defaultData=n})(fa||(fa={}));var ha;(r=>{function n(){return{points:new Se,lastInsertionPlane:null,subdivisions:12,isClosed:!1}}r.defaultData=n})(ha||(ha={}));var xp={type:"Ellipse",width:50,height:50,spikes:16,angle:360,innerRadius:0};var Kc;(r=>{function n(e,t){let o={...e};return yT.forEach(i=>{Object.assign(o,{[i]:t[i]??e[i]})}),o}r.merge=n})(Kc||(Kc={}));var Qc={shape:xp,depth:1,offset:0,bevel:50,bevelSides:6,angle:0,twist:0,startScale:1,endScale:1,capType:"flat"},yT=["depth","offset","angle","twist","startScale","endScale"];var Zs;(e=>{function n(t){return t==="PolygonGeometry"||t==="RectangleGeometry"||t==="StarGeometry"||t==="TriangleGeometry"||t==="EllipseGeometry"||t==="UIGeometry"}e.is2DParametricMesh=n;function r(t){return t==="PolygonGeometry"||t==="PolygonGeometry"||t==="RectangleGeometry"||t==="StarGeometry"||t==="TriangleGeometry"||t==="EllipseGeometry"||t==="PathGeometry"||t==="VectorGeometry"||t==="ConeGeometry"||t==="CubeGeometry"||t==="CylinderGeometry"||t==="DodecahedronGeometry"||t==="HelixGeometry"||t==="IcosahedronGeometry"||t==="LatheGeometry"||t==="PyramidGeometry"||t==="SphereGeometry"||t==="PlaneGeometry"||t==="BackdropGeometry"||t==="TorusGeometry"||t==="TorusKnotGeometry"||t==="BooleanGeometry"||t==="TextGeometry"}e.isParametricMesh=r})(Zs||(Zs={}));var Zc;(r=>{function n(e,t){let o={...e};return Object.assign(o,t),o.type==="PathGeometry"&&"extrusion"in t&&t.extrusion&&(o.extrusion={...e.extrusion},Object.assign(o.extrusion,Kc.merge(o.extrusion,t.extrusion))),o}r.merge=n})(Zc||(Zc={}));var Cn;(r=>{function n(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:ha.defaultData(),extrusion:Qc};if(e==="VectorGeometry")return{width:1,height:1,type:e,subdivisions:12,shape:fa.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==="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",extrudeBevelSize:0,extrudeBevelSegments:1};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")}r.defaultData=n})(Cn||(Cn={}));var Jc;(r=>r.defaultData={enabled:!1,useBackgroundColor:!1,color:Rt.white,near:.1,far:2e3})(Jc||(Jc={}));var eu;(e=>{let n={opacity:1,blendFunction:13,enabled:!1};e.defaultData={enabled:!1,pixelation:{...n,blendFunction:16,granularity:15},bloom:{...n,blendFunction:16,intensity:1,blurScale:1,luminanceThreshold:.25,luminanceSmoothing:.025,kernelSize:3},chromaticAberration:{...n,offset:[2,2]},vignette:{...n,darkness:1,offset:0},hueSaturation:{...n,hue:3,saturation:0},brightnessContrast:{...n,brightness:.25,contrast:0},depthOfField:{...n,focusDistance:100,focalLength:20,bokehScale:5},noise:{...n,blendFunction:16}}})(eu||(eu={}));var bp;(r=>r.defaultData={softShadowQuality:"low"})(bp||(bp={}));var vp;(r=>r.defaultData={enabled:!0,color:{r:.8274509803921568,g:.8274509803921568,b:.8274509803921568},intensity:.75})(vp||(vp={}));var Sp;(r=>r.defaultData={occlusion:!1,aoFullRes:!1,radius:256,bias:.5,aoColor:{r:.19607843137254902,g:.19607843137254902,b:.19607843137254902}})(Sp||(Sp={}));var Js;(r=>r.defaultData={usePhysics:!1,gravity:-10})(Js||(Js={}));var wp;(r=>r.defaultData={playCamera:Sn,gameControlObject:null})(wp||(wp={}));var tu;(r=>r.defaultData={backgroundColor:_e.fromHexAndA(Ng,1),postprocessing:eu.defaultData,fog:Jc.defaultData,globalPhysics:Js.defaultData,ambient:vp.defaultData,ao:Sp.defaultData,shadow:bp.defaultData,publish:wp.defaultData})(tu||(tu={}));var ru;(r=>r.defaultData={colliderType:"box",size:[100,100,100],colliderHelperVisible:!0,forceType:"collider",forceRange:"global",forceIntensity:.5,forceDambing:.95})(ru||(ru={}));var Vg;(e=>{function n(t){return t==="Component"||t==="Instance"}e.isComponentRelated=n;function r(t){return t==="Empty"||t==="Instance"}e.isEmptyOrComponent=r})(Vg||(Vg={}));var ma;(o=>{o.identity={...Wc.identity,hiddenMatrix:vn.identity};function r(i){return{position:i.position,rotation:i.rotation,scale:i.scale,hiddenMatrix:i.hiddenMatrix}}o.fromObject=r;function e(i,a){return{position:a?.position||i.position,rotation:a?.rotation||i.rotation,scale:a?.scale||i.scale,hiddenMatrix:a?.hiddenMatrix||i.hiddenMatrix}}o.merge=e;function t(i,a){return tc({position:bn.isEqual(i.position,a.position)?void 0:a.position,rotation:bn.isEqual(i.rotation,a.rotation)?void 0:a.rotation,scale:bn.isEqual(i.scale,a.scale)?null:a.scale,hiddenMatrix:vn.isEqual(i.hiddenMatrix,a.hiddenMatrix)?void 0:a.hiddenMatrix})}o.diff=t})(ma||(ma={}));var Vt;(r=>r.defaultData={states:new Se,events:new Se,visible:!0,raycastLock:!1,physics:On.defaultData,pathSnapping:{pathId:null,slide:0,offset:0,orientation:"tangential"},...ma.identity,cloner:null})(Vt||(Vt={}));var ou;(r=>r.defaultData={type:"Empty",...Vt.defaultData})(ou||(ou={}));var zg;(r=>r.defaultData={type:"ParticleCollider",...ru.defaultData,...Vt.defaultData})(zg||(zg={}));var Gg;(r=>r.defaultData={type:"Component",...Vt.defaultData})(Gg||(Gg={}));var jg;(r=>r.defaultData={type:"Particle",...Vt.defaultData,...da.defaultData})(jg||(jg={}));var ai;(r=>r.defaultData={type:"Mesh",...Vt.defaultData,...Xc.defaultData})(ai||(ai={}));var si;(r=>r.defaultData={...Vt.defaultData,...ma.identity,position:[0,0,Pn.DefaultTargetOffset],...Pn.defaultData})(si||(si={}));var nu;(e=>{function n(t){return{...Vt.defaultData,...Yc.defaultData(t)}}e.defaultData=n,e.defaultDirectionalLightData={...e.defaultData("DirectionalLight"),position:[200,300,300],name:"Directional Light",intensity:.7}})(nu||(nu={}));var ya;(e=>{function n(t,o,i=0){for(;i<o.length;){let a=t?t[o[i]]:void 0;if(o.length===i+1)return a;if(a)t=a.descendants,i+=1;else return}}e.resolveWithDes=n;function r(t,o,i=0){let a=n(t,o,i);if(a){let s=Object.keys(a);if(s.length===1&&s[0]==="descendants")return}return a}e.resolve=r})(ya||(ya={}));var So;(i=>{i.rootOverrideProps=["physics","events"],i.compositeNonOptionalOverrideProps=["geometry"],i.compositeEntireOverrideOverrideProps=["material"];function t(a,s){return{...Vt.defaultData,...s,component:a,overrides:new lt,physics:void 0,events:void 0,type:"Instance"}}i.ofComponent=t;function o(a){let s=ma.fromObject(a.data);return t(a.id,s)}i.fromComponentData=o})(So||(So={}));var Uo;(e=>{e.defaultData={type:"Page",...Vt.defaultData,physics:{...On.defaultData,fusedBody:!1},...tu.defaultData,camera:si.defaultData};function r(t){return t.uiScene!==void 0}e.isUIPage=r})(Uo||(Uo={}));var iu;(i=>(i.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:vn.identity,name:"Play Camera",visible:!0,raycastLock:!1,physics:On.defaultData,states:new Se,events:new Se,cloner:null,pathSnapping:{pathId:null,orientation:"tangential",slide:0,offset:0},...Pn.defaultData},i.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"]},i.defaultMeshObject={name:"Rectangle",...Vt.defaultData,...ai.defaultData,geometry:Cn.defaultData("RectangleGeometry"),material:Qt.defaultTwoLayerData("phong","layer1","layer2")},i.defaultBooleanObject={name:"Boolean",...Vt.defaultData,...ai.defaultData,geometry:Cn.defaultData("BooleanGeometry"),material:Qt.defaultTwoLayerData("phong","layer1","layer2")},i.defaultTextObject={name:"Text",...Vt.defaultData,...ai.defaultData,geometry:Cn.defaultData("TextGeometry"),material:Qt.defaultTwoLayerData("phong","layer1","layer2")}))(iu||(iu={}));var li;(o=>{function n(i,a){let s={name:a};return i.type==="Mesh"?(s.geometry={},"material"in i&&(s.material={layers:new lt}),"materials"in i&&(s.materials=i.materials.map(l=>({layers:new lt})))):Qr.is(i.type)&&(s.perspective={},s.orthographic={}),s}o.newEmpty=n;function r(i,a){if(a===void 0)return i;let s={...i};return"material"in s&&"material"in a&&a.material&&(s.material=mn(s.material,l=>{if(typeof l!="string")for(let[c,u]of Object.entries(a.material.layers)){let p=l.layers.data(c);p&&_t.patch(p,u)}}).data),s.materials&&a.materials&&(s.materials=mn(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 h=l[c]?.layers?.data(p);h&&_t.patch(h,d)}}}).data),s}function e(i,a){let s,l=[],c={orthographic:0,perspective:0,geometry:0};function u(p,d){for(let[h,f]of Object.entries(d.layers)){let{texture:m,...y}=f;if(m!==void 0&&Object.keys(m).length>0){let g={path:[...p,"layers",h,"texture"],props:m,type:0};l.push(g)}if(Object.keys(y).length>0){let g={path:[...p,"layers",h],props:y,type:0};l.push(g)}}}for(let[p,d]of Object.entries(a))if(p!=="name")if(p==="cloner")l.push(...qc.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[h,f]of Object.entries(d))u(["materials",h],f);else if(c[p]===0){if(p==="geometry"&&d.extrusion!==void 0){let h={path:[p,"extrusion"],props:d.extrusion,type:0};l.push(h),d={...d},delete d.extrusion}if(Object.keys(d).length>0){let h={path:[p],props:d,type:0};l.push(h)}}else s===void 0&&(s={path:[],props:{},type:0},l.push(s)),s.props[p]=d;return l}o.toOps=e;function t(i,a){if(a===void 0)return i;let s={...i};if(Object.assign(s,ma.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})}),Qr.is(i.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(i.type==="Mesh")"geometry"in a&&Object.assign(s,{geometry:Zc.merge(s.geometry,a.geometry)}),(a.material||a.materials)&&(s=r(s,a)),s.cloner&&"cloner"in a&&Object.assign(s,{cloner:vo.merge(s.cloner,a.cloner)});else if(i.type==="Empty")s.cloner&&"cloner"in a&&Object.assign(s,{cloner:vo.merge(s.cloner,a.cloner)});else if($c.is(i.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=Rt.clone(l.color))}return s}o.patch=t})(li||(li={}));var ga;(r=>r.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})(ga||(ga={}));var Zr;(r=>r.defaultData={orbitControls:ga.defaultData,playPage:wn,withBackground:!0,preventScroll:!1,preventTouchScroll:!1,hideCursor:!1,mouseEventTarget:"canvas",joystickSizeAndXYOffset:Array(12).fill(0).map((e,t)=>{let o=0,i=0;return t<5?i=-30:t<10&&(i=30),t===0||t===10||t===5?o=30:(t===4||t===11||t===9)&&(o=-30),[120,[o,i],"show"]}),settings:{image:{format:"jpg",ratio:1},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}},stopRaycast:!0,hdTransmission:!1})(Zr||(Zr={}));var Pp;(r=>r.defaultData={id:"basic",label:"Basic",style:"None",prompt:""})(Pp||(Pp={}));var Op;(r=>r.defaultData={weather:0,shadows:0,lightOrigin:0,temperature:0,sun:0,camera:0,environment:0,particles:0,nature:0,floor:0})(Op||(Op={}));var ko;(e=>(e.defaultData=()=>({mode:"line-art-both",prompt:"",negativePrompt:"",style:{...Pp.defaultData},isRandomSeed:!0,seed:e.generateSeed(),guessMode:!1,advanced:!1,steps:20,guidanceScale:7.5,controlNetScale:1,modifiers:Op.defaultData}),e.generateSeed=()=>Math.round(Math.random()*1e5)))(ko||(ko={}));var Fg;(e=>{function n(t){return t.find(o=>o.data.type==="Page"&&o.data.globalPhysics.usePhysics)!==void 0}e.physicsEnabled=n;function r(t,o,i){t.scene.objects.traverseFrom(o,(a,s)=>{if(s.type==="Instance"){let l=xa.getComponentData(t,s.component)?.data;l&&i(a,s,l.events)}else i(a,s,s.events)})}e.traverseModuleInstances=r})(Fg||(Fg={}));var Ho;(c=>{c.TRASH_CAN_ID="830a2708-8ed9-49cf-a68e-085299892222",c.defaultLight={fi:-1,data:nu.defaultDirectionalLightData,id:"830a2708-8ed9-49cf-a68e-085299899103",children:[]};function e(u=!0,p=[]){let d=[],h=iu.defaultMeshObject;u&&(d.push({...c.defaultLight}),d.push({fi:1,id:"7ba78968-2a55-48f2-b14c-5191da3e075e",data:h,children:[]})),d.push(...p);let f=new st;return f.push({fi:1,id:wn,data:{...Uo.defaultData,name:"Scene 1"},children:d}),f}c.createDefaultObjectTreeWithPage=e,c.defaultData={objects:e(),publish:Zr.defaultData,styles:ko.defaultData()},c.emptyDataWithoutPage=function(){return{objects:new st,publish:Zr.defaultData,styles:ko.defaultData()}},c.emptyDataWithPage=function(u=!0){return{objects:e(u),publish:Zr.defaultData,styles:ko.defaultData()}},c.emptyData=function(){return{objects:new st,publish:{...Zr.defaultData},styles:ko.defaultData()}};function s(u){return{...c.defaultData,objects:sr(u,st.prototype)}}c.withObjs=s;function l(u,p){return s([{id:u,data:p,children:[],fi:0}])}c.withObj=l})(Ho||(Ho={}));var ba;(r=>r.defaultData={preset:"fullscreen",allowResponsive:!1,size:[512,512],coords:[0,0],sceneScale:1,color:{r:0,g:0,b:0,a:.5}})(ba||(ba={}));var au;(i=>{function n(a){return a.textValue!==void 0}i.isTextValue=n;function r(a){return typeof a=="number"}i.isNumber=r;function e(a){return typeof a=="boolean"}i.isBoolean=e;function t(a){return n(a)?"string":e(a)?"boolean":"number"}i.typeOfVariable=t;function o(a){return i.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():i.isBoolean(a)?a?"True":"False":i.isNumber(a)?parseFloat(a.toFixed(3)).toString():a.toString()}i.getDisplayedValue=o})(au||(au={}));var Cp;(r=>r.all=["images","videos","colors","audios","particles","fonts","materials","variables"])(Cp||(Cp={}));var Ug;(r=>r.all=[...Cp.all,"components"])(Ug||(Ug={}));var kg;(r=>{function n(){return{images:new be,videos:new be,colors:new be,audios:new be,particles:new be,fonts:new be,materials:new be,components:new be,variables:new be}}r.defaultData=n})(kg||(kg={}));var Wo;(r=>{function n(){return{images:new be,videos:new be,colors:new be,audios:new be,particles:new be,fonts:new be,materials:new be,components:new be,variables:new be}}r.defaultData=n})(Wo||(Wo={}));var zr;(i=>{function n(){let a={};return a["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},sr(a,be.prototype)}i.defaultColors=n;function r(){return sr({},be.prototype)}i.defaultImages=r;function e(){return{catelogs:new be,materials:new be,images:new be,videos:new be,colors:new be,audios:new be,particles:new be,fonts:new be,variables:new Se,lib:Wo.defaultData()}}i.emptyData=e;function t(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)}}i.defaultVariables=t;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}i.getFormattedTimerTime=o})(zr||(zr={}));var el=require("three");var su;(r=>r.list=["idle","move","jump","run"])(su||(su={}));var lu;(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 Se,move:new Se,jump:new Se,run:new Se},navmesh:{enabled:!1,ch:6,cs:6,walkableClimb:5,walkableHeight:1,walkableRadius:0,zones:"all",objects:[],helperVisible:!0,destinationHelperRadius:0,destinationHelperColor:_e.fromHexAndA(3728051,1)}}))(lu||(lu={}));function Hg(n){n.layers.forEach(r=>{if(r.type==="depth"&&r.colorA!==void 0){let e=r.colorA,t=r.colorB,o=[[e.r,e.g,e.b,e.a],[t.r,t.g,t.b,t.a]],i=[0,1];for(let s=2;s<10;s++)o.push(o[1]),i.push(1);let a={...Kr(xt(r),"type","visible","isVector","isWorldSpace","origin","alpha","mode"),near:Math.max(0,r.near),far:Math.max(0,r.far),colors:o,steps:i,num:2,direction:[1,0,0],smooth:!1,gradientType:1};Object.assign(r,a)}else if(r.type==="depth"&&r.gradientType===1&&(r.near<0||r.far<0)){let e={...xt(r),near:Math.max(r.near,0),far:Math.max(r.far,0)};Object.assign(r,e)}})}function qo(n,r){Object.values(n.shared.materials).forEach(e=>r(e))}function $o(n,r){n.scene.objects.traverse((e,t)=>{"materials"in t?t.materials.forEach((o,i)=>{o===void 0&&(t.materials[i]=Qt.defaultData(),o=t.materials[i]),typeof o!="string"&&r(o)}):"material"in t?typeof t.material!="string"&&(t.material===void 0&&(t.material=Qt.defaultData()),r(t.material)):t.type==="Mesh"&&(t.material===void 0&&(t.material=Qt.defaultData()),r(t.material)),"overrides"in t&&Object.values(t.overrides).forEach(o=>{o.material&&typeof o.material!="string"&&Object.getPrototypeOf(o.material)!==lt.prototype&&r(o.material)})})}function gT(n){Object.assign(n.scene.publish,{orbitControls:{...ga.defaultData,...xt(n.scene.publish.orbitControls)}})}function xT(n){Object.assign(n.scene.publish.settings,{video:{...Zr.defaultData.settings.video,...xt(n.scene.publish.settings.video)}})}function bT(n){function r(e){if(e.layers){for(let t of Object.values(e.layers))if(t){for(let[o,i]of Object.entries(t))if((Lg.includes(o)||typeof i=="boolean")&&delete t[o],o==="texture")for(let[a,s]of Object.entries(i))(Rg.includes(a)||typeof s=="boolean")&&delete i[a]}}}n.scene.objects.traverse((e,t)=>{t.states.forEach(o=>{let i=o;i.material?r(i.material):i.materials&&i.materials.forEach(a=>{r(a)})})})}function vT(n){n.scene.publish.withBackground=!0}function ST(n){n.scene.publish.settings.web={compress:!0,preload:!0,preset:1,logo:!0,hint:!1}}function wT(n){n.scene.objects.traverse((r,e)=>{let t=e.cloner;t&&(t.radial.scale=t.radial.scale.map(o=>o+1),t.linear.scale=t.linear.scale.map(o=>o+1))})}function PT(n){n.scene.objects.traverse((r,e)=>{let t=e.geometry;t&&(t.type==="DodecahedronGeometry"||t.type==="IcosahedronGeometry")&&(t.detail=Math.round(t.detail))})}function OT(n){n.scene.objects.traverse((r,e)=>{let t=n.scene.objects.unproxy().parent(r);if(t){let o=xt(n.scene.objects.data(t));o&&o.type==="Mesh"&&o.geometry.type==="BooleanGeometry"&&e.type==="Mesh"&&(e.visible=xt(e).booleanExclude!==!0)}})}function CT(n){n.scene.objects.traverse((r,e)=>{if(e.type==="Mesh"){let t=e;e.geometry.type==="NonParametricGeometry"?t.material!==void 0&&delete t.material:t.materials!==void 0&&delete t.materials}})}function TT(n){function r(t){Object.setPrototypeOf(t,lt.prototype),t.texture&&Object.setPrototypeOf(t.texture,lt.prototype)}function e(t){Object.setPrototypeOf(t,lt.prototype);for(let o in t)r(t[o])}n.scene.objects.traverse((t,o)=>{o.states.forEach(i=>{let a=i;if(a.material){let s=xt(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=xt(l).layers;e(c),l.layers=c}})})}function Wg(n){n.layers===void 0&&Object.assign(n,Qt.defaultTwoLayerData("lambert"))}function Tp(n){!n.layers||n.layers.forEach(r=>{if(r.type==="depth"&&r.colors.length===10){let e=[...r.colors];e.push(r.colors[9]);let t=[...r.steps];t.push(r.steps[9]);let o={...xt(r),colors:e,steps:t};Object.assign(r,o)}})}function AT(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&(e.geometry.type==="BooleanGeometry"||e.geometry.type==="SubdivGeometry")&&(e.geometry.phongAngle=35)})}function qg(n){n.scene.objects.traverse((r,e)=>{"materials"in e?e.materials.forEach(t=>{typeof t!="string"&&Tp(t)}):"material"in e&&typeof e.material!="string"&&Tp(e.material)}),Object.values(n.shared.materials).forEach(r=>Tp(r))}function MT(n){n.scene.environment.ambientLight.softShadows=!1,n.scene.environment.ambientLight.softShadowQuality="low",n.scene.objects.traverse((r,e)=>{(e.type==="DirectionalLight"||e.type==="SpotLight")&&(e.shadowResolution=1024,e.shadowRadius=1,e.depth=1e5)}),n.shared.penumbraSize=new Array(5).fill(.5)}function IT(n){n.shared.audios=sr({},be.prototype)}function NT(n){n.shared.videos=sr({},be.prototype)}function DT(n){let r=n.shared.materials;Object.entries(r).forEach(([e,t])=>{if(!t.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(r,{[e]:o})}})}function ET(n){Object.entries(xt(n.shared.images)).filter(t=>t[1].asset===!1).map(t=>t[0]).forEach(t=>{delete n.shared.images[t]}),Object.entries(xt(n.shared.audios)).filter(t=>t[1].asset===!1).map(t=>t[0]).forEach(t=>{delete n.shared.audios[t]})}function _T(n){n.scene.publish.settings.web.preload=!1}function $g(n){n.layers&&n.layers.forEach(r=>{r.type==="depth"&&r.num!==void 0&&(r.colors=r.colors.slice(0,r.num),r.steps=r.steps.slice(0,r.num),delete r.num)})}function Yg(n){n.layers&&n.layers.forEach(r=>{Bg(r)&&r.isMask===void 0&&(r.isMask=!1),(r.type==="texture"||r.type==="video")&&r.blending===void 0&&(r.blending=0),(r.type==="noise"||r.type==="displace"&&r.displacementType==="noise")&&(r.voronoiStyle===void 0&&(r.voronoiStyle=0),r.highCut===void 0&&(r.highCut=1),r.lowCut===void 0&&(r.lowCut=0),r.smoothness===void 0&&(r.smoothness=.3),r.seed===void 0&&(r.seed=0),r.quality===void 0&&(r.quality=1))})}function BT(n){n.shared.fonts=sr({},be.prototype)}function LT(n){return n.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 RT(n){let r=[];n.scene.objects.traverse((e,t)=>{let o=t;if(o.type==="TextFrame"){let i=Qt.defaultTwoLayerData("phong"),a=typeof o.color=="string"?n.shared.colors[o.color]:o.color;i.layers[1].data.color={r:a.r,g:a.g,b:a.b},i.layers[1].data.alpha=o.alpha;let s=LT(o.font);n.shared.fonts[s]===void 0&&(n.shared.fonts[s]={name:s});let l={name:o.name,...Vt.defaultData,...ai.defaultData,flatShading:!1,wireframe:!1,geometry:{...Cn.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:i,states:xt(o.states),events:xt(o.events),visible:o.visible,raycastLock:o.raycastLock,position:o.position,rotation:o.rotation,scale:o.scale,hiddenMatrix:o.hiddenMatrix},c=xt(n.scene.objects).parent(e);n.scene.objects.insertAfter(c??null,e,[{id:e+"new",data:l,children:[]}]),r.push(e)}}),r.forEach(e=>{n.scene.objects.delete(e)})}function VT(n){let r={0:"MouseDown",1:"MouseUp",2:"MouseHover",5:"KeyDown",6:"KeyUp",7:"Start",9:"LookAt",10:"Follow",11:"Scroll",12:"Audio",13:"GameControl"};n.scene.objects.traverse((e,t)=>{t.events.forEach(o=>{if(!!r[Number(o.type)])if(Object.assign(o,{type:r[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 Se,move:new Se,jump:new Se}});else{let i=new Se;Object.assign(o,{actions:i}),(o.type==="MouseDown"||o.type==="MouseUp"||o.type==="KeyDown"||o.type==="KeyUp")&&"url"in o&&i.push({fi:0,id:el.MathUtils.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,Kr(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},h={allowSlerp:!0,type:"Transition",object:a.object,repeat:0,delay:0,delayDirection:void 0,direction:"normal",tweens:new Se({fi:0,id:el.MathUtils.generateUUID(),data:c},{fi:1,id:el.MathUtils.generateUUID(),data:d})};i.push({fi:l,id:s,data:h})}),delete o.targets)}})})}function zT(n){n.scene.objects.traverse((r,e)=>{function t(o,i){let a=new Se,s=[];if(e.events.forEach((l,c,u)=>{if(l.type==="Audio"&&l.trigger===i){let p;s.push(c),l.interaction==="play"?p={...Kr(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={...Kr(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:el.MathUtils.generateUUID(),data:{type:o,actions:a}}])}}t("Start","start"),t("MouseDown","mouseDown"),t("MouseUp","mouseUp"),t("KeyDown","keyDown"),t("KeyUp","keyUp")})}function Xg(n){let r=n.layers.find(e=>e.type==="light")?.data;if(r?.category==="basic"){let e=_t.defaultData("light","phong"),t=r;Object.assign(t,e),t.visible=!1}}function Kg(n){qo(n,Xg),$o(n,Xg)}function GT(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&e.geometry.type==="SubdivGeometry"&&(e.geometry.scaleBaked||(e.geometry.scaleBaked=[1,1,1]))})}function jT(n){n.scene.objects.traverse((r,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 FT(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&e.geometry.type==="NonParametricGeometry"&&!("material"in e)&&!("materials"in e)&&(e.material=Qt.defaultTwoLayerData("phong"))})}function UT(n){n.scene.publish.orbitControls.autoZoom===void 0&&(n.scene.publish.orbitControls.autoZoom=!1),n.scene.objects.traverse((r,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 kT(n){n.scene.objects.traverse((r,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 HT(n){n.scene.publish.mouseEventTarget===void 0&&(n.scene.publish.mouseEventTarget="canvas"),n.scene.publish.settings.web.hint===void 0&&(n.scene.publish.settings.web.hint=!1)}function WT(n){let{video:r}=n.scene.publish.settings;r.format==="gif"&&r.fps>48&&(r.fps=15)}function qT(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.resetYPosition=Math.abs(t.resetYPosition-e.position[1]))})})}function $T(n){let r=n.scene.environment.usePhysics;n.scene.objects.traverse((e,t)=>{r&&t.physics===null?t.collision=!1:t.collision="visibility"})}function YT(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.navmesh=lu.defaultDataThirdPerson.navmesh)})})}function XT(n){n.scene.styles||(n.scene.styles=ko.defaultData())}function Qg(n){n.layers.forEach(r=>{r.type==="light"&&r.category!=="toon"&&r.occlusion===void 0&&(r.occlusion=!0)})}function KT(n){n.scene.environment.ambientLight.occlusion===void 0&&(n.scene.environment.ambientLight.occlusion=!1),n.scene.environment.ambientLight.aoFullRes===void 0&&(n.scene.environment.ambientLight.aoFullRes=!1),n.scene.environment.ambientLight.radius===void 0&&(n.scene.environment.ambientLight.radius=256),n.scene.environment.ambientLight.bias===void 0&&(n.scene.environment.ambientLight.bias=.5),n.scene.environment.ambientLight.aoColor===void 0&&(n.scene.environment.ambientLight.aoColor={r:.19607843137254902,g:.19607843137254902,b:.19607843137254902}),$o(n,Qg),qo(n,Qg)}function QT(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&Object.assign(t.gameActions,{run:new Se})})})}function ZT(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.keyAssignments=[...t.keyAssignments,["run","\u21E7"],["none","Ctrl"]])})})}function Zg(n){n.layers&&n.layers.forEach(r=>{r.type==="light"&&r.bumpMapIntensity===void 0&&(r.bumpMapIntensity=5)})}function Jg(n,r){if(r<1&&($o(n,Hg),qo(n,Hg),n.schema=1),r<2&&(gT(n),n.schema=2),r<3&&(bT(n),n.schema=3),r<4&&(vT(n),n.schema=4),r<5&&(ST(n),n.schema=5),r<6&&(wT(n),n.schema=6),r<7&&(PT(n),n.schema=7),r<8&&(n.schema=8),r<9&&(qg(n),n.schema=9),r<10&&(AT(n),n.schema=10),r<11&&(MT(n),n.schema=11),r<12&&(qg(n),n.schema=12),r<13&&(IT(n),n.schema=13),r<14&&(DT(n),n.schema=14),r<15&&(ET(n),n.schema=15),r<16&&(_T(n),n.schema=16),r<17&&($o(n,$g),qo(n,$g),n.schema=17),r<18&&($o(n,Wg),qo(n,Wg),n.schema=18),r<19&&(xT(n),n.schema=19),r<20&&(BT(n),RT(n),n.schema=20),r<21&&(VT(n),zT(n),n.schema=21),r<22&&(Kg(n),n.schema=22),r<23&&(GT(n),n.schema=23),r<24&&(jT(n),n.schema=24),(r<25||n.shared.videos===void 0)&&(NT(n),r<25&&(n.schema=25)),r<26&&(OT(n),n.schema=26),r<27&&(CT(n),n.schema=27),r<28&&(Kg(n),n.schema=28),r<29&&(TT(n),n.schema=29),r<30&&(FT(n),n.schema=30),r<31&&(UT(n),n.schema=31),r<33&&(kT(n),n.schema=33),r<34&&(HT(n),n.schema=34),r<35&&(WT(n),n.schema=35),r<36&&(qT(n),n.schema=36),r<37&&($T(n),n.schema=37),r<38&&($o(n,Yg),qo(n,Yg),n.schema=38),r<39&&(YT(n),n.schema=39),r<40&&(XT(n),n.schema=40),r<41&&(KT(n),n.schema=41),r<42&&(QT(n),n.schema=42),r<43&&(ZT(n),n.schema=43),r<99){$o(n,Zg),qo(n,Zg),n.scene.publish.playCamera===null&&(n.scene.publish.playCamera=Sn);let e=xt(n.scene.objects),t=n.scene.objects;n.scene.publish.playPage=wn,t.insertBefore(null,null,[{id:wn,data:{...Uo.defaultData,backgroundColor:n.scene.backgroundColor,fog:n.scene.fog,postprocessing:n.scene.postprocessing,ao:Kr(n.scene.environment.ambientLight,"occlusion","aoFullRes","radius","bias","aoColor"),publish:{playCamera:n.scene.publish.playCamera,gameControlObject:n.scene.publish.gameControlObject},shadow:Kr(n.scene.environment.ambientLight,"softShadowQuality"),globalPhysics:{...Js.defaultData,...Kr(n.scene.environment,"usePhysics","gravity")},camera:xt(n.scene.ownerCamera)??Uo.defaultData.camera,name:"Scene"},children:[]}]);for(let a of e)a.id!==Ho.TRASH_CAN_ID&&t.move(wn,a.fi,a.id);let o=0,i=0;n.shared.penumbraSize&&n.scene.objects.traverse((a,s)=>{s.type==="DirectionalLight"?(s.penumbraSize=n.shared.penumbraSize[Math.min(o,2)],o+=1):s.type==="SpotLight"&&(s.penumbraSize=n.shared.penumbraSize[3+Math.min(i,1)],i+=1),(s.physics===void 0||s.physics===null)&&s.type!=="Instance"&&(s.physics={},Object.assign(s.physics,On.defaultData)),s.physics!==void 0&&s.physics!==null&&(s.physics.enabled=s.collision??"visibility",delete s.collision)}),n.schema=99}}function ex(n){n.layers&&n.layers.forEach(r=>{r.type==="light"&&r.alphaOverride===void 0&&(r.alphaOverride=1)})}function JT(n){n.scene.objects.traverse((r,e)=>{let t=e.geometry;t&&t.type==="PathGeometry"&&(t.extrusion.capType="flat",t.extrusion.bevel=50,t.extrusion.bevelSides=6,t.extrusion.shape.type==="Custom"&&(t.extrusion.shape.shapeQuality="low"))})}function eA(n){Array.isArray(xt(n.events))&&n.events?.forEach(r=>{"disabled"in r||(r.disabled=!1),(r.type==="MouseDown"||r.type==="MouseUp"||r.type==="MousePress")&&(r.mode=r.mode||"Object")})}var va=180/Math.PI;function tx(n){n.rotation=n.rotation.slice(0,3).map(r=>r*va)}function rx(n){tx(n),n.type==="Page"&&tx(n.camera),n.states?.forEach(e=>{e.rotation===void 0||e.rotation===null||(e.rotation=e.rotation.slice(0,3).map(t=>t*va))});let r=n.geometry;r&&r.type==="SphereGeometry"&&(r.thetaLength=(r.thetaLength??180)*va),r&&r.type==="TorusGeometry"&&(r.arc=r.arc*va),r&&r.type==="PathGeometry"&&(r.extrusion.angle*=va,r.extrusion.twist*=va),n.type==="Mesh"&&n.geometry.type==="TextGeometry"&&(n.geometry.text={textValue:n.geometry.text}),Array.isArray(xt(n.events))&&n.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 tA(n){n.shared.variables=sr({},be.prototype)}function rA(n){let r=xt(n.shared.variables);n.shared.variables=sr(Object.entries(r??{}).map(([e,t],o)=>({fi:o,id:e,data:t})),Se.prototype)}var wo=113;function ox(n,r){r(n.data);for(let e of n.children)ox(e,r)}function oA(n){let r=n.schema??104;r!==wo&&r<105&&(ox(n.asset,rx),n.schema=105)}function nA(n){n.shared.particles=sr({},be.prototype),n.shared.lib&&(n.shared.lib.particles=Wo.defaultData().particles)}function iA(n){n.scene.objects.traverse((r,e)=>{e.type==="Particle"&&typeof e.renderMaterial.size=="number"&&Object.assign(e.renderMaterial,{size:[e.renderMaterial.size,e.renderMaterial.size]})})}function aA(n){n.scene.objects.traverse((r,e)=>{e.type==="Page"&&(e.postprocessing.depthOfField.focusDistance=100,e.postprocessing.depthOfField.focalLength=20,e.postprocessing.depthOfField.bokehScale=5)})}function sA(n){n.scene.objects.traverse((r,e)=>{Array.isArray(xt(e.events))!==!1&&e.events?.forEach(t=>{let o=t.runMode;t.type==="MouseDown"||t.type==="MouseUp"||t.type==="KeyDown"||t.type==="KeyUp"||t.type==="Collision"||t.type==="Trigger"?t.actions?.forEach(i=>{i.type==="Transition"&&(i.runMode=o??"Repeat"),(i.type==="Animation"||i.type==="SwitchCamera")&&(i.runMode=o==="Toggle"?"Toggle":"Normal")}):t.type==="MouseHover"||t.type==="MousePress"||t.type==="KeyPress"?t.actions?.forEach(i=>{(i.type==="Transition"||i.type==="Animation"||i.type==="SwitchCamera")&&(i.runMode="Toggle")}):t.type==="GameControl"?(delete t.actions,Object.keys(t.gameActions).forEach(a=>{t.gameActions[a]?.forEach(s=>{s.type==="Transition"&&(s.runMode="Repeat"),s.type==="Animation"&&(s.runMode="Normal")})})):t.type==="DragDrop"?(delete t.actions,t.dragDropActions?.drag?.forEach(i=>{(i.type==="Transition"||i.type==="Animation"||i.type==="SwitchCamera")&&(i.runMode="Toggle")}),t.dragDropActions?.drop?.forEach(i=>{(i.type==="Transition"||i.type==="Animation"||i.type==="SwitchCamera")&&(i.runMode="Toggle")})):t.type==="Resize"?(delete t.actions,t.breakpoints?.forEach(i=>{i.actions?.forEach(a=>{(a.type==="Transition"||a.type==="Animation"||a.type==="SwitchCamera")&&(a.runMode="Toggle")})})):t.type==="Start"?t.actions?.forEach(i=>{i.type==="Transition"&&(i.runMode="Once"),(i.type==="Animation"||i.type==="SwitchCamera")&&(i.runMode="Normal")}):t.type==="VariableChange"||t.type==="Scroll"?t.actions?.forEach(i=>{i.type==="Transition"&&(i.runMode="Repeat"),(i.type==="Animation"||i.type==="SwitchCamera")&&(i.runMode="Normal")}):t.type==="Conditional"&&(delete t.actions,t.inActions?.forEach(i=>{i.type==="Transition"&&(i.runMode="Repeat"),(i.type==="Animation"||i.type==="SwitchCamera")&&(i.runMode="Normal")}),t.outActions?.forEach(i=>{i.type==="Transition"&&(i.runMode="Repeat"),(i.type==="Animation"||i.type==="SwitchCamera")&&(i.runMode="Normal")}))})})}function cu(n){let r=n.schema??0;if(r!==wo){console.warn("updating from ",r,"to ",wo),Jg(n,r),r<100&&(n.scene.publish.joystickSizeAndXYOffset===void 0&&(n.scene.publish.joystickSizeAndXYOffset=Zr.defaultData.joystickSizeAndXYOffset),n.schema=100),r<101&&($o(n,ex),qo(n,ex),n.schema=101),r<102&&(JT(n),n.schema=102),r<104&&(n.shared.catelogs=new be,n.shared.lib=Wo.defaultData(),n.schema=104),r<105&&(tA(n),n.scene.objects.traverse((e,t)=>{rx(t)}),n.schema=105);for(let e of Object.values(n.shared.lib.components))oA(e);r<106&&(rA(n),n.schema=106),r<107&&(n.shared.lib.variables=Wo.defaultData().variables,n.schema=107),r<109&&(nA(n),n.schema=109),r<110&&(iA(n),n.schema=110),r<111&&(n.scene.objects.traverse((e,t)=>{eA(t)}),n.schema=111),r<112&&(aA(n),n.schema=112),r<113&&(sA(n),n.schema=113)}}var xa;(l=>{l.defaultData={schema:wo,scene:Ho.defaultData,frames:new be().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",ba.defaultData),shared:{...zr.emptyData(),colors:zr.defaultColors()}},l.emptyDataForImports=function(){let c=Ho.emptyDataWithPage();return{schema:wo,scene:c,frames:new be().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",ba.defaultData),shared:{...zr.emptyData(),colors:zr.defaultColors(),images:zr.defaultImages()}}},l.emptyData=function(){return{schema:wo,scene:Ho.emptyDataWithPage(),frames:new be().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",ba.defaultData),shared:zr.emptyData()}},l.clipboard2dData=function(){return{schema:wo,scene:Ho.emptyData(),frames:new be,shared:zr.emptyData()}},l.collabHelper={...$s,updateSchema(c){return(c.schema??0)<wo?mn(c,cu):(c.schema??0)-wo}};function i(c){let u=l.collabHelper.updateSchema(c);return typeof u=="number"?u===0?c:null:u.data}l.updateSchemaDirectly=i;function a(c){return{...c,shared:{...c.shared,lib:Wo.defaultData()}}}l.withoutLib=a;function s(c,u){let p=c.scene.objects.get(u);if(p&&p.data.type==="Component")return p;{let d=c.shared.lib.components[u];if(d)return d.asset}}l.getComponentData=s})(xa||(xa={}));var uu;(r=>r.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII=",name:"empty"})(uu||(uu={}));var nx;(r=>{function n(e){return!0}r.is=n})(nx||(nx={}));var du;(t=>{t.defaultData={position:[0,0],scale:[1,1],rotation:0,shear:[0,0]};function r(o,i){return{position:i?.position??o.position,rotation:i?.rotation??o.rotation,scale:i?.scale??o.scale,shear:i?.shear??o.shear}}t.merge=r;function e(o,i){return tc({position:ua.isEqual(o.position,i.position)?void 0:i.position,rotation:o.rotation===i.rotation?void 0:i.rotation,scale:ua.isEqual(o.scale,i.scale)?void 0:i.scale,shear:o.shear&&i.shear&&ua.isEqual(o.shear,i.shear)?void 0:i.shear})}t.diff=e})(du||(du={}));var Ap;(r=>r.defaultData={horizontalConstraint:0,verticalConstraint:0})(Ap||(Ap={}));var pu;(r=>r.defaultData={opacity:1,fill:{color:_e.fromHexAndA(It,1),enabled:!0},stroke:{color:_e.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:_e.from0to1([0,0,0,1]),enabled:!1,spread:0},innerShadow:{offset:[10,10],blurRadius:10,color:_e.from0to1([0,0,0,1]),enabled:!1,spread:0}})(pu||(pu={}));var ci;(i=>{function n(a,s){return{name:s}}i.newEmpty=n;function r(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 t(a,s){if(s===void 0)return a;let l={...a};return Object.assign(l,du.merge(l,s)),l=r(l,s),l=e(l,s),l}i.patch=t;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}i.toOps=o})(ci||(ci={}));var tl;(r=>r.defaultData={...du.defaultData,...Ap.defaultData,states:new Se,events:new Se,visible:!0,raycastLock:!1})(tl||(tl={}));var Sa;(r=>r.defaultData={...tl.defaultData,...pu.defaultData})(Sa||(Sa={}));var fu;(r=>r.defaultData={cornerRadius:[0,0,0,0]})(fu||(fu={}));var Mp;(r=>r.defaultData={...Sa.defaultData,type:"ellipse2d",width:100,height:100,name:"Ellipse"})(Mp||(Mp={}));var wa;(r=>r.defaultData={...Sa.defaultData,...fu.defaultData,type:"rectangle2d",width:100,height:100,name:"Rectangle"})(wa||(wa={}));var Ip;(r=>r.defaultData={...Sa.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"})(Ip||(Ip={}));var Np;(r=>r.defaultData={...Sa.defaultData,type:"path2d",path:"",name:"Path"})(Np||(Np={}));var ix;(r=>{function n(e){return e.type==="ellipse2d"||e.type==="rectangle2d"||e.type==="text2d"||e.type==="vector2d"||e.type==="path2d"}r.is=n})(ix||(ix={}));var rl;(r=>r.defaultData={...tl.defaultData,name:"Group",type:"group2d"})(rl||(rl={}));var Dp;(r=>r.defaultData=()=>({...tl.defaultData,...fu.defaultData,...pu.defaultData,name:"Frame",type:"frame2d",clipped:!0,width:200,height:200,fill:{color:_e.fromHexAndA(4737101,1),enabled:!0},stroke:{color:_e.fromHexAndA(0,1),thickness:1,enabled:!1,mode:"inside"},backgroundBlur:{radius:2,enabled:!1},layerBlur:{radius:2,enabled:!1}}))(Dp||(Dp={}));var Yo;(o=>{function n(i){switch(i){case"rectangle2d":return{...wa.defaultData};case"ellipse2d":return{...Mp.defaultData};case"text2d":return{...Ip.defaultData};case"vector2d":return{...wa.defaultData};case"path2d":return{...Np.defaultData};case"frame2d":return{...Dp.defaultData()};case"group2d":return{...rl.defaultData}}}o.defaultData=n;function r(i){return"width"in i&&"height"in i?[typeof i.width=="number"?i.width*.5:0,typeof i.height=="number"?i.height*.5:0]:[0,0]}o.getPivot=r;function e(i){return i.type==="rectangle2d"||i.type==="ellipse2d"||i.type==="text2d"||i.type==="frame2d"}o.isResizeable=e;function t(i){return i.type==="rectangle2d"||i.type==="frame2d"}o.hasCorners=t})(Yo||(Yo={}));var hu;(e=>(e.defaultData={name:"UI",type:"scene2d",objects:new st},e.emptyData=function(){return{type:"scene2d",objects:new st}}))(hu||(hu={}));var Ze=require("three"),Ss=_i(sx());var lA=.5*(Math.sqrt(3)-1),ol=(3-Math.sqrt(3))/6,cA=1/3,Po=1/6,KF=(Math.sqrt(5)-1)/4,QF=(5-Math.sqrt(5))/20,nl=n=>Math.floor(n)|0,lx=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]),_p=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 mu(n=Math.random){let r=ux(n),e=new Float64Array(r).map(o=>lx[o%12*2]),t=new Float64Array(r).map(o=>lx[o%12*2+1]);return function(i,a){let s=0,l=0,c=0,u=(i+a)*lA,p=nl(i+u),d=nl(a+u),h=(p+d)*ol,f=p-h,m=d-h,y=i-f,g=a-m,v,O;y>g?(v=1,O=0):(v=0,O=1);let P=y-v+ol,S=g-O+ol,T=y-1+2*ol,I=g-1+2*ol,x=p&255,_=d&255,D=.5-y*y-g*g;if(D>=0){let E=x+r[_],B=e[E],V=t[E];D*=D,s=D*D*(B*y+V*g)}let A=.5-P*P-S*S;if(A>=0){let E=x+v+r[_+O],B=e[E],V=t[E];A*=A,l=A*A*(B*P+V*S)}let N=.5-T*T-I*I;if(N>=0){let E=x+1+r[_+1],B=e[E],V=t[E];N*=N,c=N*N*(B*T+V*I)}return 70*(s+l+c)}}function cx(n=Math.random){let r=ux(n),e=new Float64Array(r).map(i=>_p[i%12*3]),t=new Float64Array(r).map(i=>_p[i%12*3+1]),o=new Float64Array(r).map(i=>_p[i%12*3+2]);return function(a,s,l){let c,u,p,d,h=(a+s+l)*cA,f=nl(a+h),m=nl(s+h),y=nl(l+h),g=(f+m+y)*Po,v=f-g,O=m-g,P=y-g,S=a-v,T=s-O,I=l-P,x,_,D,A,N,E;S>=T?T>=I?(x=1,_=0,D=0,A=1,N=1,E=0):S>=I?(x=1,_=0,D=0,A=1,N=0,E=1):(x=0,_=0,D=1,A=1,N=0,E=1):T<I?(x=0,_=0,D=1,A=0,N=1,E=1):S<I?(x=0,_=1,D=0,A=0,N=1,E=1):(x=0,_=1,D=0,A=1,N=1,E=0);let B=S-x+Po,V=T-_+Po,j=I-D+Po,R=S-A+2*Po,W=T-N+2*Po,F=I-E+2*Po,k=S-1+3*Po,H=T-1+3*Po,$=I-1+3*Po,J=f&255,Z=m&255,X=y&255,te=.6-S*S-T*T-I*I;if(te<0)c=0;else{let q=J+r[Z+r[X]];te*=te,c=te*te*(e[q]*S+t[q]*T+o[q]*I)}let Y=.6-B*B-V*V-j*j;if(Y<0)u=0;else{let q=J+x+r[Z+_+r[X+D]];Y*=Y,u=Y*Y*(e[q]*B+t[q]*V+o[q]*j)}let ee=.6-R*R-W*W-F*F;if(ee<0)p=0;else{let q=J+A+r[Z+N+r[X+E]];ee*=ee,p=ee*ee*(e[q]*R+t[q]*W+o[q]*F)}let K=.6-k*k-H*H-$*$;if(K<0)d=0;else{let q=J+1+r[Z+1+r[X+1]];K*=K,d=K*K*(e[q]*k+t[q]*H+o[q]*$)}return 32*(c+u+p+d)}}function ux(n){let e=new Uint8Array(512);for(let t=0;t<512/2;t++)e[t]=t;for(let t=0;t<512/2-1;t++){let o=t+~~(n()*(256-t)),i=e[t];e[t]=e[o],e[o]=i}for(let t=256;t<512;t++)e[t]=e[t-256];return e}var dx=require("three"),Jr=new dx.Triangle,yu=class{constructor(r){this.weightAttribute=null;let e=r.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 r=this.positionAttribute,e=new Float32Array(r.count/3);for(let o=0;o<r.count;o+=3){let i=1;Jr.a.fromBufferAttribute(r,o),Jr.b.fromBufferAttribute(r,o+1),Jr.c.fromBufferAttribute(r,o+2),i*=Jr.getArea(),e[o/3]=i}this.distribution=new Float32Array(r.count/3);let t=0;for(let o=0;o<e.length;o++)t+=e[o],this.distribution[o]=t;return this}setRandomGenerator(r){return this.randomFunction=r,this}sample(r,e){if(this.distribution){let t=this.distribution[this.distribution.length-1],o=this.binarySearch(this.randomFunction()*t);return this.sampleFace(o,r,e)}}binarySearch(r){if(!this.distribution)return 0;let e=this.distribution,t=0,o=e.length-1,i=-1;for(;t<=o;){let a=Math.ceil((t+o)/2);if(a===0||e[a-1]<=r&&e[a]>r){i=a;break}else r<e[a]?o=a-1:t=a+1}return i}sampleFace(r,e,t){let o=this.randomFunction(),i=this.randomFunction();return o+i>1&&(o=1-o,i=1-i),Jr.a.fromBufferAttribute(this.positionAttribute,r*3),Jr.b.fromBufferAttribute(this.positionAttribute,r*3+1),Jr.c.fromBufferAttribute(this.positionAttribute,r*3+2),e.set(0,0,0).addScaledVector(Jr.a,o).addScaledVector(Jr.b,i).addScaledVector(Jr.c,1-(o+i)),Jr.getNormal(t),this}};var mx=require("three");var Ir=require("three"),hx=_i(fx()),uA=new Ir.Matrix4,dA=new Ir.Matrix4,pA=new Ir.Matrix4,Pa;(r=>{function n(e){return e&&e.__isSPEObject}r.is=n})(Pa||(Pa={}));var Oa=n=>class extends n{constructor(){super(...arguments);this.previousModelViewMatrix=new Ir.Matrix4;this.copyPreviousMatrix=!0;this.hiddenMatrix=new Ir.Matrix4;this.matrixWorldRigid=new Ir.Matrix4;this.shearScale=new Ir.Matrix4;this.shearScaleInv=new Ir.Matrix4}get __isSPEObject(){return!0}isDescendantOf(t){t instanceof Ir.Object3D&&(t=t.uuid);let o=this;for(;o.parent;){if(o.parent.uuid===t)return!0;o=o.parent}return!1}updateMatrixWorld(t){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||t)&&(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,t=!0);for(let o of this.children)o.updateMatrixWorld(t)}updateWorldMatrix(t,o){let i=this.parent;if(t&&i!==null&&i.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(t,o=0){for(let i of this.children)Pa.is(i)&&i.traverseObject(t,o+1)}traverseObject(t,o=0){if(t(this,o)!==!0)for(let a of this.children)Pa.is(a)&&a.traverseObject(t,o+1)}updateMatrixWorldSVD(){let t=this.matrixWorld.elements,o=[[t[0],t[4],t[8]],[t[1],t[5],t[9]],[t[2],t[6],t[10]]],{u:i,v:a,q:s}=(0,hx.SVD)(o),l=uA.set(i[0][0],i[0][1],i[0][2],0,i[1][0],i[1][1],i[1][2],0,i[2][0],i[2][1],i[2][2],0,0,0,0,1),c=dA.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=pA.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(t,o){this.updateWorldMatrix(!0,!1);let i=new Ir.Matrix4().copy(this.matrixWorld).invert();return t.parent!==null&&(t.parent.updateWorldMatrix(!0,!1),i.multiply(t.parent.matrixWorld)),"hiddenMatrix"in t&&t.hiddenMatrix instanceof Ir.Matrix4?t.hiddenMatrix.premultiply(i):t.applyMatrix4(i),t.updateWorldMatrix(!1,!1),this.add(t),o!==void 0&&(this.children.pop(),this.children.splice(o,0,t)),this}copy(t,o=!1){return super.copy(t,o),this.hasNonUniformScale=t.hasNonUniformScale,this}onAfterRender(t,o,i,a,s,l){this.copyPreviousMatrix&&this.previousModelViewMatrix.copy(this.modelViewMatrix)}};var Bp=class extends Oa(mx.Object3D){},fA=n=>n.type==="Mesh",Xo=class extends Bp{constructor(e){super();this.object=e;this.matrixAutoUpdate=!1,this.hasNonUniformScale=e.hasNonUniformScale}raycast(e,t){}expand(){let e=0,t=this.object.entityChildren(e);for(;t;){let o=this.children[e];o?.object!==t&&(o&&this.remove(o),o=new Xo(t),this.add(o),this.children.splice(e,0,this.children.pop()),o.matrixWorldNeedsUpdate=!0,o.matrixAutoUpdate=!1,o.matrix=t.matrix,o.hiddenMatrix=t.hiddenMatrix),o.expand(),e+=1,t=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 fA(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}};var Wa=require("three");var Ru=require("three");var or=require("three");var Ct=require("three"),ui=new Ct.Vector3,di=new Ct.Vector3,Ca=new Ct.Matrix4,gx=[new Ct.Vector3(-1,1,1),new Ct.Vector3(-1,-1,1),new Ct.Vector3(1,-1,1),new Ct.Vector3(1,1,1),new Ct.Vector3(-1,1,-1),new Ct.Vector3(-1,-1,-1),new Ct.Vector3(1,-1,-1),new Ct.Vector3(1,1,-1)],hA=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],mA=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]],yx=(n,r,e)=>{n.updateEntityBoxSize(ui,di),Ca.copy(r).multiply(n.matrixWorld),di.x===0&&di.y===0&&di.z===0?e.push(new Ct.Vector3(ui.x,ui.y,ui.z).applyMatrix4(Ca)):gx.forEach(t=>{e.push(t.clone().multiply(di).add(ui).applyMatrix4(Ca))})},il=class extends Ct.Box3{constructor(){super(...arguments);this.matrix=new Ct.Matrix4;this.vertices=[];this.faces=[];this.edges=[];this.centerEdges=[]}copy(e){return super.copy(e),this.matrix.copy(e.matrix),this.vertices=e.vertices.map(t=>t.clone()),this.faces=e.faces.map(t=>t.clone()),this.edges=e.edges.map(t=>t.clone()),this.centerEdges=e.centerEdges.map(t=>t.clone()),this}setFromObjectSize(e,t=!1){e.updateWorldMatrix(!1,t),this.makeEmpty(),this.matrix.copy(e.matrixWorld);let o=new Ct.Matrix4().copy(e.matrixWorld).invert();return this.expandByObjectSize(e,o,t)}expandByObjectSize(e,t,o=!1){let i=[];return o===!0?e.traverseEntity(a=>{if(a.visible||a.cloner&&a.data.visible){if(!("geometry"in a)){i.push(new Ct.Vector3);return}yx(a,t,i)}}):yx(e,t,i),this.setFromPoints(i)}getCenter(e){return e=super.getCenter(e),e.applyMatrix4(this.matrix),e}getPositionToCenter(e){return e=super.getCenter(e),e.applyMatrix4(Ca.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(di).multiplyScalar(.5),this.getCenter(ui),Ca.copy(this.matrix).setPosition(ui),this.vertices=gx.map(e=>e.clone().multiply(di).applyMatrix4(Ca))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=hA.map(([e,t])=>new Ct.Line3(this.vertices[e],this.vertices[t])),this.centerEdges=this.edges.map(e=>e.getCenter(new Ct.Vector3))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=mA.map(([e,t])=>this.vertices[e].clone().add(this.vertices[t]).multiplyScalar(.5))}};var eo={Cloner:()=>{},changeEntityProptotype:()=>{},createEntity:()=>{}};var qt=require("three"),Rp=class extends qt.CurvePath{constructor(){super()}getPoints(r=12){let e=[],t,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(r*u/a),d=c.getPoints(p);for(let h=0;h<d.length;h++){let f=d[h];t&&t.equals(f)||(e.push(f),t=f)}}return this.autoClose&&e.length>1&&!e[e.length-1].equals(e[0])&&e.push(e[0]),e}};var Vp=.001;function zp(n,r,e){return r.clone().sub(n).cross(r.clone().sub(e)).length()<=Vp}function Lp(n,r){let e=new qt.Vector3(...n.position),t=new qt.Vector3(...n.controlNext.position),o=new qt.Vector3(...r.controlPrevious.position),i=new qt.Vector3(...r.position);return zp(e,t,i)&&zp(e,o,i)}function xu(n){let r=n.points.map(u=>new qt.Vector3(...u.data.position)),e=[n.points[0]],t=new qt.Vector3(...e[0].data.position);for(let u=0;u<n.points.length-1;u++)zp(t,r[u],r[u+1])||(e.push(n.points[u]),t=r[u]);e.push(n.points[n.points.length-1]);let o=n.isClosed,i=e.length-(o?0:1),a=e.length,s=[];for(let u=0;u<a;u++){let p=e[u].data,d=new qt.Vector3(...p.position),h=new qt.Vector3(...p.controlPrevious.position),f=new qt.Vector3(...p.controlNext.position),m={position:d,baseRoundness:p.roundness,controlPrevious:h,controlNext:f};if(p.roundness===0||!n.isClosed&&(u===0||u===a-1)){s[u]={...m,removedLength:0};continue}let y=o&&u==0?a-1:u-1,g=o&&u==a-1?0:u+1,v=e[y].data,O=e[g].data,P=new qt.Vector3(...v.position),S=new qt.Vector3(...O.position),T=P.clone().sub(d).normalize(),I=S.clone().sub(d).normalize();Object.assign(m,{prevDir:T,nextDir:I});let x=Lp(v,p),_=Lp(p,O);if(!x||!_)s[u]={...m,removedLength:0};else{let D=T.clone().add(I).normalize(),A=D.clone().cross(T).length()/T.dot(D);s[u]={...m,tan:A,removedLength:p.roundness/A}}}for(let u=0;u<i;u++){let p=u,d=o&&u===a-1?0:u+1,h=s[p],f=s[d];if(h.removedLength!==0||f.removedLength!==0){let m=h.position.distanceTo(f.position);h.removedLength=Math.min(h.removedLength,m/2),f.removedLength=Math.min(f.removedLength,m/2)}}let l=[];for(let u=0;u<i;u++){let p=u,d=o&&u===a-1?0:u+1,h=s[p],f=s[d],m=null;if(!Lp(e[p].data,e[d].data))h.position.distanceTo(f.position)>Vp&&(m=new qt.CubicBezierCurve3(h.position,h.controlNext,f.controlPrevious,f.position));else{let y=h.position.clone(),g=f.position.clone();(h.removedLength!==0||f.removedLength!==0)&&(h.nextDir&&y.add(h.nextDir.clone().setLength(h.removedLength)),f.prevDir&&g.add(f.prevDir.clone().setLength(f.removedLength))),y.distanceTo(g)>Vp&&(m=new qt.CubicBezierCurve3(y,y.clone().lerp(g,.3),g.clone().lerp(y,.3),g))}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,h=p.prevDir.clone().multiplyScalar(p.removedLength).add(d),f=p.nextDir.clone().multiplyScalar(p.removedLength).add(d),m=p.tan*p.removedLength,y=p.prevDir.clone().add(p.nextDir).normalize(),g=h.clone().lerp(f,.5),v=h.distanceTo(f)/2,O=y.clone().multiplyScalar(Math.sqrt(Math.pow(m,2)-Math.pow(v,2))).add(g),P=y.clone().multiplyScalar(-m).add(O),S=d.distanceTo(P)/d.distanceTo(g),T=p.prevDir.clone().multiplyScalar(S*d.distanceTo(h)).add(d),I=T.clone().lerp(P,2),x=h.clone().lerp(T,4/3),_=f.clone().lerp(I,4/3);l[2*u]=new qt.CubicBezierCurve3(h,x,_,f)}let c=new Rp;return l.forEach(u=>{u&&c.add(u)}),c}var je;(r=>{function n(e){return e&&e.__isEntity}r.is=n})(je||(je={}));var Ta=n=>je.is(n),yA={type:"completeState",isfromEntity:!0},gA=["x","y","z"],Gp=new or.Vector3,xA=new or.Vector3().set(0,1,0),Aa=n=>class extends Oa(n){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.reversibleToState=null;this.currentTransitionEvent=null;this.previousAction=null;this._singleBBox=new il;this._recursiveBBox=new il;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this._needApplyPathSnapping=!0;this.attachedPaths=new Set}get __isEntity(){return!0}entityChildren(t){let o=this.children[t];if(je.is(o))return o}entityChildrenCount(){let t=this.children.length;for(;t--;)if(je.is(this.children[t]))return t+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 t=this;for(;t.data.type!=="Instance";){let o=t.parent;if(je.is(o))t=o;else return}return t}forInstancesRec(t){this.instances.forEach(o=>{o.disposed||t(o),o.forInstancesRec(t)})}super_Entity(t,o){typeof t=="string"&&(this.uuid=t),this.identity=t,this.data=o,this.matrixAutoUpdate=!1,this.dataPatched=this.data}changeSelectedState(t,o,i=!1){if(!(this.data.states.length===0&&!i)){for(let a of this.data.states)li.toOps(this.data,a.data).forEach(l=>{let c=aa.replaceProps(l,this.data);this.dataPatched=this.data,this.updateByPatchedOp(c,this.data,o)});if(t!==null){let a=this.data.states.data(t);a&&(this.dataPatched=li.patch(this.data,a),li.toOps(this.data,a).forEach(l=>{this.updateByPatchedOp(l,this.dataPatched,o)}))}i&&this.updateTransformState(this.dataPatched,o),this.stateSelection=t,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(t,o){t.setScalar(0),o.setScalar(0)}resetBBoxNeedsUpdateSelf(){this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0}resetBBoxNeedsUpdate(){this.resetBBoxNeedsUpdateSelf(),this.traverseAncestors(t=>{Ta(t)&&t.resetBBoxNeedsUpdateSelf()}),this.traverseEntity(t=>{t.resetBBoxNeedsUpdateSelf()})}find(t){let o;return this.traverseEntity(i=>{i.uuid===t&&(o=i)}),o}traverseSortNextHelper(){let t=this.parent;if(t){let o=t.children,i=o.indexOf(this)+1;if(je.is(o[i]))return o[i];if(je.is(t))return t.traverseSortNextHelper()}}sortNext(){let t=this.children;return this.children.length>0&&je.is(this.children[0])?t[0]:this.traverseSortNextHelper()}goUp(t){let o=this;for(;t>0&&o!==null;)o=o.parent,t-=1;return o}hasAnccestorOrSelf(t){return this===t||this.hasAnccestor(t)}hasAnccestor(t){let o=this.parent;for(;o;){if(t===o)return!0;o=o.parent}return!1}countToAccestor(t){let o=0,i=this;for(;i!==t;){if(i===null)return-1;i=i.parent,o+=1}return o}forEachEntity(t){for(let o of this.children)Ta(o)&&t(o)}traverseEntityAncestors(t){this.traverseAncestors(o=>{je.is(o)&&t(o)})}traverseConcreteEntity(t,o=0){if(t(this,o)!==!0)for(let a of this.children)Ta(a)&&a.isConcreteEntity&&a.traverseEntity(t,o+1)}traverseEntity(t,o=0){if(t(this,o)!==!0)for(let a of this.children)Ta(a)&&a.traverseEntity(t,o+1)}traverseVisibleEntity(t){t(this);for(let o of this.children)Ta(o)&&o.visible&&o.traverseVisibleEntity(t)}updateMatrix(){super.updateMatrix(),this.cloner&&this.cloner.onObjUpdateMatrix(),this.dispatchEvent({type:"updateMatrix"})}updateMatrixWorld(t){super.updateMatrixWorld(t),this.dispatchEvent({type:"updateMatrixWorld"})}copy(t,o=!1){return super.copy(t,o),this.dataPatched=t.dataPatched,this.raycastLock=t.raycastLock,this.scaleLock=t.scaleLock,this.hiddenMatrix.copy(t.hiddenMatrix),this}hasEntityChild(){return this.children.some(t=>Ta(t))}isAncestorOf(t){if(this.uuid===t)return!1;let o=!1;return this.traverseEntity(i=>{i.uuid===t&&(o=!0)}),o}toObjectTransformState(t=[]){this.updateWorldMatrix(!0,!1);let o={position:this.position.toArray(),rotation:[this.rotation.x*or.MathUtils.RAD2DEG,this.rotation.y*or.MathUtils.RAD2DEG,this.rotation.z*or.MathUtils.RAD2DEG],scale:this.scale.toArray(),hiddenMatrix:this.hiddenMatrix.toArray()};return ta(o,t)}getTransformValues(t,o,i){return o[t].map((a,s)=>i?.shared.getVariable(a,[this.uuid,t,gA[s]])??a)}updateTransformState(t,o){let i=!1;return t.position&&(this.position.fromArray(this.getTransformValues("position",t,o)),i=!0),t.rotation&&(Gp.fromArray(this.getTransformValues("rotation",t,o)).multiplyScalar(or.MathUtils.DEG2RAD),this.rotation.setFromVector3(Gp),i=!0),t.scale&&(this.scale.fromArray(this.getTransformValues("scale",t,o)),i=!0),t.hiddenMatrix!==void 0&&(i=!0,this.hiddenMatrix.fromArray(t.hiddenMatrix??vn.identity)),i&&(this.updateMatrix(),this.resetBBoxNeedsUpdate(),this.invalidateClonerTransform(this),this.traverseEntityAncestors(a=>{a.invalidateClonerTransform(this)})),t.position&&t.rotation&&t.scale&&t.hiddenMatrix!==void 0&&this.updateWorldMatrix(!1,!0),i}onVariableUpdate(t=!1){if(t){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 t of this.children)je.is(t)&&t.disposeRecursively()}disposeRecursively(){this.dispose(),this.children.forEach(t=>{je.is(t)&&t.disposeRecursively()})}toState(t=[]){let o={name:this.name,visible:this.visible,raycastLock:this.raycastLock,...this.toObjectTransformState(t)};return ta(o,t)}updateByObjUpdateOp(t,o){t!==void 0&&this.updateByOp({type:0,props:t,path:[]},{...this.data,...t},o,!1)}updateByOp(t,o,i,a){let s=this.data;this.data=o;let l=t,c=Ge(t.path,["states","*"]);if(c!==null){if(t.type===0){let[u]=c;if(this?.stateSelection===u){let p={...t.props};if(delete p.name,Object.values(t.props).some(d=>d===void 0)){let d=this.data;if(d!==void 0){let h=yt.zoom(d,t.path.slice(2));if(h)for(let f in t.props)t.props[f]===void 0&&f in h&&(p[f]=h[f])}}l={...t,props:p,path:t.path.slice(2)}}}}else if(t.type===0){let u=this.stateSelection?this.data.states.data(this.stateSelection):void 0;if(u!==void 0){if(t.props.name!==void 0&&u.name){let{name:d,...h}=u;u=h}if(t.props.material!==void 0&&"material"in u){let{material:d,...h}=u;u=h}let p=yt.removeOverridden(t.path,t.props,u);l={...t,props:p}}}if(this.updateByPatchedOpBase(l,li.patch(this.data,this.stateSelection?this.data.states.data(this.stateSelection):void 0),i),Ge(t.path,["overrides"])){let u=[],p=[...t.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(t.type===0)for(let d of Object.keys(t.props)){u[u.length-1]=d;let h=i.scene.findInstance([this.uuid,...u]);h&&(h.overrideData=t.props[d],h.updateState(mo.apply(h.component.data,h.overrideData),i))}}else{let d=i.scene.findInstance([this.uuid,...u]);if(d){let h=yt.zoom(d.component.data,p);if(t={...t,path:p},t.type===0){let f=t.props;if(h)for(let[m,y]of Object.entries(t.props))y===void 0&&(f===t.props&&(f={...t.props}),f[m]=h[m]);t={...t,props:f}}d.overrideData=ya.resolve(o.overrides,u),d.updateByOp(t,gt.applySimple(d.data,t),i,!1)}}}else if(this.instances.length>0){let u;if(t.path.length===0&&t.type===0){let p;for(let d of So.rootOverrideProps)d in t.props&&(p===void 0&&(p={}),p[d]=t.props[d]);p&&(u={...t,props:p})}else for(let p of So.rootOverrideProps)if(Ge(t.path,[p])){u=t;break}u!==void 0&&this.instances.forEach(p=>{if(p.isInstanceRoot){let d=mo.filterOp(p.overrideData,u);d&&p.updateByOp(d,gt.applySimple(p.data,d),i,!0)}}),this.instances.forEach(p=>{if(!p.isInstanceRoot){let d=mo.filterOp(p.overrideData,t);if(d){let h;s===p.data&&t===d?h=o:h=gt.applySimple(p.data,d),p.updateByOp(d,h,i,!0)}}})}}updateByPatchedOpBase(t,o,i){if(this.dataPatched=o,t.path.length===0&&t.type===0)t.props.type!==void 0&&!Qr.is(t.props.type)&&eo.changeEntityProptotype(this,o,i);else if(t.path.length===1&&t.path[0]==="geometry"&&t.type===0&&"type"in t.props){eo.changeEntityProptotype(this,o,i);for(let a of this.children)je.is(a)&&a.updateVisible(i.scene)}this.updateByPatchedOp(t,o,i)}updateByPatchedOp(t,o,i){if(t.path.length===0&&t.type===0&&this.updateState(t.props,i),Ge(t.path,["pathSnapping"])!==null&&this.updatePathSnapping(o.pathSnapping),Ge(t.path,["cloner"])!==null){let a=gt.drop(t,1);a.path.length===0&&a.type===0&&a.props.disabled===!0?this.setFromClonerState(null,i):this.cloner?this.cloner.updateState(o.cloner,i.scene):(this.setFromClonerState(o.cloner,i),this.expandCloner(i.scene)),this.updateVisible(i.scene)}}updatePathSnapping(t=this.dataPatched.pathSnapping){this._updatedPathSnapping=t,this._needApplyPathSnapping=!0}get updatedPathSnapping(){return this._updatedPathSnapping}applyPathSnapping(t){let o=this._updatedPathSnapping?.pathId??this.dataPatched.pathSnapping.pathId,i=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=t.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=xu(c.geometry.path),p=(i+a)%1;i+a===1&&p===0&&(p=1);let d=u.getPointAt(p);if(d===null)return;let h=this.parent?this.parent?.matrixWorld:new or.Matrix4;l.updateMatrixWorld();let f=new or.Matrix4().multiplyMatrices(h.clone().invert(),l.matrixWorld);d.applyMatrix4(f);let m={position:d.toArray(),rotation:c.rotation};if(s==="tangential"){let y=new or.Matrix4().extractRotation(l.matrixWorld),g=u.getTangentAt(p).applyMatrix4(y).add(d),v=new or.Matrix4().lookAt(d,g,xA),O=Gp.setFromEuler(new or.Euler().setFromRotationMatrix(v)).multiplyScalar(or.MathUtils.RAD2DEG);m={...m,rotation:O.toArray()}}this.updateTransformState(m),this.traverseEntity(y=>{y._cameraType&&y.dispatchEvent(yA)})}updateVisible(t){if(this.visible=this.dataPatched.visible&&(!this.dataPatched.cloner||(this.dataPatched.cloner.disabled??!1)||this.dataPatched.cloner?.hideBase!==!0),!t)return;let o=!1;this.traverseEntity(i=>{if(i.data.type==="Splat")return o=!0,!0}),o&&t.reloadSplats()}updateState_Entity(t,o){t.name!==void 0&&(this.name=t.name),t.raycastLock!==void 0&&(this.raycastLock=t.raycastLock),t.visible!==void 0&&(this.updateVisible(o?.scene),this.resetBBoxNeedsUpdate()),o&&"cloner"in t&&t.cloner!==void 0&&(this.setFromClonerState(t.cloner,o),this.updateVisible(o.scene)),this.updateTransformState(t,o)}get attachedSurfaceCloners(){return this.children.filter(t=>t instanceof eo.Cloner&&t.parameters.type==="toObject")}setFromClonerState(t,o){this.disposed||(t===null||t.disabled?(this.cloner&&this.cloner.removeFromParent(),this.cloner=void 0):this.cloner===void 0?(this.cloner=new eo.Cloner(this,t),o.scene.addPendingExpandCloner(this)):this.cloner.updateState(t,o.scene))}expandCloner(t){!this.disposed&&this.cloner&&this.cloner.expandClones(t)}invalidateClonerTransform(t){this.cloner&&this.cloner.invalidateTransform(t)}requestRender(){this.dispatchEvent({type:"requestRender"})}};var An=require("three");var it=require("three"),bx=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:64,heightSegments:1,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadius:8,cornerSegments:8,hollow:0},n.parameters);e.thetaLength=it.MathUtils.clamp(e.thetaLength,0,360);let t=e.width/2,o=e.radiusTop??t,i=e.radiusBottom??t;return o===i?(o=t,i=t):o>i?(o=t,i=i*t/o):(o=o*t/i,i=t),{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width),radiusTop:o,radiusBottom:i})}}static build(n){let{width:r,depth:e,height:t,radialSegments:o,heightSegments:i,openEnded:a,thetaStart:s,thetaLength:l,radiusTop:c,radiusBottom:u,cornerRadius:p,cornerSegments:d,hollow:h}=n.parameters,f;return l===0?(f=new it.BufferGeometry,f.setAttribute("position",new it.Float32BufferAttribute([],3))):p||h?f=new al(c,u,t,o,i,a,s,l*Math.PI/180,p,p,d,h):f=new it.CylinderGeometry(c,u,t,o,i,a,s,l*Math.PI/180),f.scale(1,1,e/r),Object.assign(f,{userData:{...n,type:"CylinderGeometry"}})}};function Tn(n,r,e){e.x=n.x*r.x,e.y=n.y,e.z=n.x*r.y}function xx(n){return new it.Vector2(n.y,-n.x)}var al=class extends it.BufferGeometry{constructor(r,e,t,o,i,a,s,l,c,u,p,d,h=!1){super(),this.type="RoundedCylinderBufferGeometry",r=r!==void 0?r:1,e=e!==void 0?e:1,t=t||1,o=Math.floor(o)||8,i=Math.floor(i)||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 f=[],m=[],y=[],g=[],v=0,O=t/2,P=new it.Vector3,S=new it.Vector3;h&&r==0&&(r=c),h&&e==0&&(e=u);let T=new it.Vector2(r,O),I=new it.Vector2(e,-O),x=null,_=null,D=null,A=null,N=T.clone().sub(I),E=0,B=0,V=0;d>0&&(E=Math.min(r,e)*(1-d),B=r-E,V=e-E);let j=T.clone();j.x-=E;let R=Math.PI-N.angle(),W=N.angle(),F=Math.tan(W/2),k=Math.tan(R/2),H=F+k,$=d?H:k,J=d?H:F;if(c=Math.min(c,(r-B)/$,N.length()/H),u=Math.min(u,(e-V)/J,N.length()/H),c>0){let K=c/F;x=T.clone().sub(new it.Vector2(K,c)),d&&(D=x.clone(),D.x-=E-H*c),T.sub(N.clone().setLength(K))}if(u>0){let K=u/k;_=I.clone().sub(new it.Vector2(K,-u)),I.add(N.clone().setLength(K)),d&&(A=_.clone(),A.x-=E-H*u,j.sub(N.clone().setLength(K)))}N=T.clone().sub(I);let Z=N.length()<.5,X=[];for(let K=0;K<=o;K++){let q=[],ue=K/o,le=ue*l+s,ne=new it.Vector2(Math.sin(le),Math.cos(le));A&&_?(te(q,ue,ne,R,u,A,-1,!0),te(q,ue,ne,W,u,_,-1,!1)):_?(Y(q,ne,_.x,0,-1),te(q,ue,ne,W,u,_,-1,!1)):a||Y(q,ne,e,V,-1);let ce=xx(N).normalize();if(Tn(ce,ne,P),!Z)for(let ae=0;ae<=i;ae++){let me=ae/i,fe=N.clone().multiplyScalar(me).add(I);Tn(fe,ne,S),m.push(S.x,S.y,S.z),y.push(P.x,P.y,P.z),g.push(ue,.5+S.y/t),q.push(v++)}if(D&&x?(te(q,ue,ne,R,c,x,1,!1),te(q,ue,ne,W,c,D,1,!0)):x?(te(q,ue,ne,R,c,x,1,!1),Y(q,ne,x.x,0,1)):a||Y(q,ne,r,B,1),d&&!Z){let ae=xx(N).multiplyScalar(-1).normalize();Tn(ae,ne,P);for(let me=0;me<=i;me++){let fe=me/i,he=N.clone().multiplyScalar(-fe).add(j);Tn(he,ne,S),m.push(S.x,S.y,S.z),y.push(P.x,P.y,P.z),g.push(ue,.5+S.y/t),q.push(v++)}}d&&!a&&q.push(q[0]),X.push(q)}for(let K=0;K<X.length-1;K++)for(let q=0;q<X[0].length-1;q++){if(a&&d&&q==i)continue;let ue=X[K][q],le=X[K+1][q],ne=X[K+1][q+1],ce=X[K][q+1],ae=m[ne*3+0],me=m[ne*3+2];f.push(ue,le,ce),(ae!=0||me!=0)&&f.push(le,ne,ce)}l<Math.PI*2&&(ee(-1,X[0],s),ee(1,X[X.length-1],s+l)),this.setIndex(f),this.setAttribute("position",new it.Float32BufferAttribute(m,3)),this.setAttribute("normal",new it.Float32BufferAttribute(y,3)),this.setAttribute("uv",new it.Float32BufferAttribute(g,2));function te(K,q,ue,le,ne,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 it.Vector2(Math.sin(xe),Math.cos(xe)*ae),C=ye.clone().multiplyScalar(ne).add(ce);Tn(C,ue,S),m.push(S.x,S.y,S.z),Tn(ye,ue,P),y.push(P.x,P.y,P.z),g.push(q,.5+S.y/t),K.push(v++)}}function Y(K,q,ue,le,ne){let ce=new it.Vector3,ae=new it.Vector2,me=[ue,le];ne<0&&me.reverse();for(let fe of me)ae.set(fe,O*ne),Tn(ae,q,ce),m.push(ce.x,ce.y,ce.z),y.push(0,ne,0),g.push(.5,.5),K.push(v++)}function ee(K,q,ue){let le=new it.Vector2(Math.sin(ue),Math.cos(ue)),ne=new it.Vector2(-Math.cos(ue),Math.sin(ue)),ce=new it.Vector3,ae=K<0?(he,xe,ye)=>f.push(he,xe,ye):(he,xe,ye)=>f.push(he,ye,xe),me=new it.Vector2((r+e+B+V)/4,0);Tn(me,le,ce),m.push(ce.x,ce.y,ce.z),y.push(ne.x,0,ne.y),g.push(.5,.5);let fe=v++;for(let he of q){let xe=m.slice(he*3,he*3+3);m.push(...xe),y.push(ne.x,0,ne.y);let ye=g.slice(he*2,he*2+2);g.push(...ye),v++}for(let he=fe+1;he<v-1;he++)ae(fe,he,he+1);ae(fe,v-1,fe+1)}}};var vx=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:32,heightSegments:8,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadiusTop:8,cornerRadiusBottom:8,cornerSegments:8},n.parameters);return e.thetaLength=An.MathUtils.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(n){let{width:r,depth:e,height:t,radialSegments:o,heightSegments:i,openEnded:a,thetaStart:s,thetaLength:l,cornerRadiusTop:c,cornerRadiusBottom:u,cornerSegments:p}=n.parameters,d;return l===0?(d=new An.BufferGeometry,d.setAttribute("position",new An.Float32BufferAttribute([],3))):c>0||u>0||l<360?d=new al(0,r/2,t,o,i,a,s,l*Math.PI/180,c,u,p,0,!0):d=new An.ConeGeometry(r/2,t,o,i,a),d.scale(1,1,e/r),Object.assign(d,{userData:{...n,type:"ConeGeometry"}})}};var gr=require("three"),Sx=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,widthSegments:1,heightSegments:1,depthSegments:1,cornerRadius:8,cornerSegments:8},n.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(n){let{width:r,height:e,depth:t,widthSegments:o,heightSegments:i,depthSegments:a,cornerRadius:s,cornerSegments:l}=n.parameters,c;return s==0?c=new gr.BoxGeometry(r,e,t,o,i,a):c=new Fp(r,e,t,o,i,a,s,l),Object.assign(c,{userData:{...n,type:"CubeGeometry"}})}},jp=Math.PI/2,Fp=class extends gr.BufferGeometry{constructor(r=1,e=1,t=1,o=1,i=1,a=1,s=0,l=4){super(),this.type="BoxGeometry";let c=this;o=Math.floor(o),i=Math.floor(i),a=Math.floor(a),l=Math.floor(l),s=Math.min(s,r/2,e/2,t/2);let u=[],p=[],d=[],h=[],f=0,m=0;y("z","y","x",-1,-1,t,e,r,a,i,0),y("z","y","x",1,-1,t,e,-r,a,i,1),y("x","z","y",1,1,r,t,e,o,a,2),y("x","z","y",1,-1,r,t,-e,o,a,3),y("x","y","z",1,-1,r,e,t,o,i,4),y("x","y","z",-1,-1,r,e,-t,o,i,5),s>0&&(g("z","y","x",-1,-1,1,t,e,r,a,0),g("z","y","x",1,-1,-1,t,e,r,a,1),g("z","y","x",-1,1,-1,t,e,r,a,1),g("z","y","x",1,1,1,t,e,r,a,0),g("x","y","z",-1,-1,-1,r,e,t,o,0),g("x","y","z",1,-1,1,r,e,t,o,1),g("x","y","z",-1,1,1,r,e,t,o,0),g("x","y","z",1,1,-1,r,e,t,o,1),g("y","x","z",-1,-1,1,e,r,t,i,0),g("y","x","z",1,-1,-1,e,r,t,i,1),g("y","x","z",1,1,1,e,r,t,i,1),g("y","x","z",-1,1,-1,e,r,t,i,0),v(1,1,1),v(-1,1,1),v(1,-1,1),v(-1,-1,1),v(1,1,-1),v(-1,1,-1),v(1,-1,-1),v(-1,-1,-1)),this.setIndex(u),this.setAttribute("position",new gr.Float32BufferAttribute(p,3)),this.setAttribute("normal",new gr.Float32BufferAttribute(d,3)),this.setAttribute("uv",new gr.Float32BufferAttribute(h,2));function y(O,P,S,T,I,x,_,D,A,N,E){let B=(x-2*s)/A,V=(_-2*s)/N,j=x/2-s,R=_/2-s,W=D/2,F=A+1,k=N+1,H=0,$=0,J=new gr.Vector3;for(let Z=0;Z<k;Z++){let X=Z*V-R;for(let te=0;te<F;te++){let Y=te*B-j;J[O]=Y*T,J[P]=X*I,J[S]=W,p.push(J.x,J.y,J.z),J[O]=0,J[P]=0,J[S]=D>0?1:-1,d.push(J.x,J.y,J.z),h.push(te/A),h.push(1-Z/N),H+=1}}for(let Z=0;Z<N;Z++)for(let X=0;X<A;X++){let te=f+X+F*Z,Y=f+X+F*(Z+1),ee=f+(X+1)+F*(Z+1),K=f+(X+1)+F*Z;u.push(te,Y,K),u.push(Y,ee,K),$+=6}c.addGroup(m,$,E),m+=$,f+=H}function g(O,P,S,T,I,x,_,D,A,N,E){let B=(_-2*s)/N,V=_/2-s,j=D/2-s,R=A/2,W=N+1,F=0,k=0,H=new gr.Vector3,$=new gr.Vector3;for(let J=0;J<l+1;J++){let Z=J/l*jp,X=Math.sin(Z)*s,te=(1-Math.cos(Z))*s,Y=Math.sin(Z),ee=Math.cos(Z);H[P]=(j+X)*I,H[S]=(R-te)*x,$[O]=0,$[P]=Y*Math.sign(H[P]),$[S]=ee*Math.sign(H[S]);for(let K=0;K<W;K++){let q=K*B-V;H[O]=q*T,p.push(H.x,H.y,H.z),d.push($.x,$.y,$.z),h.push(K/N),h.push(0),F+=1}}for(let J=0;J<l;J++)for(let Z=0;Z<N;Z++){let X=f+Z+W*J,te=f+Z+W*(J+1),Y=f+(Z+1)+W*(J+1),ee=f+(Z+1)+W*J;u.push(X,te,ee),u.push(te,Y,ee),k+=6}c.addGroup(m,k,E),m+=k,f+=F}function v(O,P,S){let T=new gr.Vector3,I=new gr.Vector3(r/2,e/2,t/2);I.subScalar(s);let x=[],_=O*P*S>0?(A,N,E)=>u.push(A,N,E):(A,N,E)=>u.push(A,E,N);for(let A=0;A<=l;A++){let N=[],E=jp*(1-A/l),B=Math.cos(E),V=Math.sin(E),j=0;for(let R=0;R<=A;R++){let W=Math.cos(j),F=Math.sin(j);T.x=B*W,T.y=V,T.z=B*F;let k=I.clone().addScaledVector(T,s);p.push(O*k.x,P*k.y,S*k.z),d.push(O*T.x,P*T.y,S*T.z),h.push(0,0),N.push(f++),j+=jp/A}x.push(N)}let D=x.length-1;for(let A=0;A<D;A++){let N=x[A],E=x[A+1],B=N.length-1;_(N[0],E[1],E[0]);for(let V=1;V<=B;V++)_(N[V-1],N[V],E[V]),_(N[V],E[V+1],E[V])}}}};var Tt=require("three"),Mn=class extends Tt.BufferGeometry{constructor(r=[],e=[],t="",o=1,i=.2,a=4){super(),this.type="PolyhedronGeometryRound";let s=[],l=[],c=[];u(),p(),this.setAttribute("position",new Tt.Float32BufferAttribute(s,3)),this.setAttribute("normal",new Tt.Float32BufferAttribute(c,3)),this.setAttribute("uv",new Tt.Float32BufferAttribute(l,2));return;function u(){i=Math.min(1-1e-5,i),i==0&&(a=0);let h={IcosahedronGeometry:5,DodecahedronGeometry:3,HexahedronGeometry:3,OctahedronGeometry:4,TetrahedronGeometry:3}[t],f=new Tt.Vector3,m=f.clone(),y=new Tt.Triangle,g=i*o,v=o-g,O=a+1,P=new Tt.Vector3,S=(F,k)=>P.subVectors(F,k).normalize(),T=(F,k)=>Array(F).fill(void 0).map(k),I=T(r.length/3,(F,k)=>new Tt.Vector3().fromArray(r,k*3).setLength(o)),x=[],_=1e6;for(let F=0;F<I.length;F++){let k=I[F],H=[],$,J,Z,X=1e10,te=-1;for(;(te=e.indexOf(F,te+1))!=-1;){let q=te-te%3;$=e[q+(te+1)%3],J=e[q+(te+2)%3],Z=k.distanceToSquared(I[$]),X=Math.min(X,Z),H.push([$,J,Z])}X+=1e-6;let Y=[],ee=0,K=H.length;for(let q=0;q<K;q++){[$,J,Z]=H[ee];let ue=x[$]?.includes(F)==!0;Z<=X&&Y.push($+ +ue*_),ee=H.findIndex(le=>le[0]==J)}x.push(Y)}let D=[];{let F=0,k=0,H,$,J=h==3;for(let Z=0;Z<=a;Z++){H=Z*(Z+1)/2,$=(Z+1)*(Z+2)/2;for(let X=0;X<a-Z;X++)[F,k]=[H+X+Z+2,$+X+Z+3],D.push(H,$,...J?[k,H]:[F,$],k,F),[H,$]=[F,k];D.push(H,$,H+a+2)}}let A=f.clone(),N=f.clone(),E=f.clone(),B=f.clone(),V=f.clone(),j=[],R=T(I.length,()=>T(h,()=>f.clone()));for(let F=0;F<I.length;F++){f.copy(I[F]).normalize(),A.copy(f).multiplyScalar(v);let k=x[F];for(let Y=0;Y<k.length;Y++){let ee=k[Y],K=k[(Y+1)%h];y.setFromPointsAndIndices(I,F,ee%_,K%_),y.b.sub(y.a).setLength(1e10).add(y.a),y.c.sub(y.a).setLength(1e10).add(y.a),y.closestPointToPoint(A,R[F][Y])}let H=[],$=[],J=[],Z=new Tt.Vector3;a==0&&[...R[F]].reduce((Y,ee)=>Y.add(ee),Z).multiplyScalar(1/h);for(let Y=0;Y<h;Y++){let ee=[],K=(Y-1+h)%h,q=R[F][K],ue=R[F][Y];f.copy(q).sub(A),m.copy(ue).sub(A);let le=A.angleTo(f),ne=f.angleTo(m),ce=Math.cos(le)*g;a==0?N.copy(Z):N.copy(A).setLength(v+ce),$.push(ce);let ae=[N,q,ue];for(let me=0;me<2;me++){let fe=ae[me],he=ae[me+1];B.subVectors(fe,A),V.subVectors(he,A),E.crossVectors(B,V).normalize();for(let xe=0;xe<O;xe++){let ye=[le,ne][me]*xe/O;f.copy(B).applyAxisAngle(E,ye).add(A),H.push(f.clone()),me&&(S(f,A),ee.push([xe==0?fe:f.clone(),P.clone()]))}me&&(S(he,A),ee.push([he,P.clone()]))}J.push(ee)}j.push(J);let X=2*O,te=2;for(let Y=0;Y<h;Y++){let ee=X*Y,K=X*((Y+1)%h),q=[H[ee]];for(let le=1;le<O;le++){B=H[ee+le],V=H[K+le],q.push(B);for(let ne=1,ce=le-te+1;ne<=ce;ne++)f.lerpVectors(B,V,ne/(ce+1)),f.sub(A).setLength($[Y]).add(A),q.push(f.clone());q.push(V)}for(let le=0;le<O;le++)q.push(H[le+O+ee]);q.push(H[K+O]);let ue=D.map(le=>q[le]);s.push(...ue.map(le=>[le.x,le.y,le.z]).flat()),c.push(...ue.map(le=>(S(le,A),[P.x,P.y,P.z])).flat())}}let W=[];for(let F=0;F<x.length;F++)for(let k=0;k<h;k++){let H=x[F][k];if(H<_){let $=x[H].findIndex(X=>X%_==F),J=j[F][k],Z=j[H][$];for(let X=0;X<O;X++){let te=J[X],Y=Z[O-X],ee=J[X+1],K=Z[O-(X+1)];[te,Y,ee,ee,Y,K].forEach(q=>{s.push(q[0].x,q[0].y,q[0].z),c.push(q[1].x,q[1].y,q[1].z)})}W.push(J[0][0],Z[O][0],J[O][0],Z[0][0])}}for(;W.length;){let F,k,H,$;[F,k]=W.splice(0,2);let J=[F];for(;F!=k;)J.push(k),H=W.indexOf(k),$=H%2,k=W.splice(H-$,2)[1-$];P.subVectors(J[0],J[1]).cross(f.subVectors(J[0],J[2])).normalize();let Z=P.dot(J[0])<0;Z&&P.negate();for(let X=1;X<=J.length-2;X++)[J[X+ +Z],J[X+1-+Z],J[0]].forEach(te=>{s.push(te.x,te.y,te.z),c.push(P.x,P.y,P.z)})}}function p(){let d=new Tt.Vector3;for(let I=0;I<s.length;I+=3){d.x=s[I+0],d.y=s[I+1],d.z=s[I+2];let x=S(d)/2/Math.PI+.5,_=T(d)/Math.PI+.5;l.push(x,1-_)}let h=new Tt.Vector3,f=new Tt.Vector3,m=new Tt.Vector3,y=new Tt.Vector3,g=new Tt.Vector2,v=new Tt.Vector2,O=new Tt.Vector2,P=(I,x,_,D)=>{D<0&&I.x===1&&(l[x]=I.x-1),_.x===0&&_.z===0&&(l[x]=D/2/Math.PI+.5)};for(let I=0,x=0;I<s.length;I+=9,x+=6){h.set(s[I+0],s[I+1],s[I+2]),f.set(s[I+3],s[I+4],s[I+5]),m.set(s[I+6],s[I+7],s[I+8]),g.set(l[x+0],l[x+1]),v.set(l[x+2],l[x+3]),O.set(l[x+4],l[x+5]),y.copy(h).add(f).add(m).divideScalar(3);let _=S(y);P(g,x+0,h,_),P(v,x+2,f,_),P(O,x+4,m,_)}for(let I=0;I<l.length;I+=6){let x=l[I+0],_=l[I+2],D=l[I+4],A=Math.max(x,_,D),N=Math.min(x,_,D);A>.9&&N<.1&&(x<.2&&(l[I+0]+=1),_<.2&&(l[I+2]+=1),D<.2&&(l[I+4]+=1))}function S(I){return Math.atan2(I.z,-I.x)}function T(I){return Math.atan2(-I.y,Math.sqrt(I.x*I.x+I.z*I.z))}}}static fromJSON(r){return new Mn(r.vertices,r.indices,r.radius,r.corner,r.cornerSides)}};var wx=require("three"),Px=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,detail:0,corner:0,cornerSides:4},n.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(n){let{width:r,height:e,depth:t,detail:o,corner:i,cornerSides:a}=n.parameters,s=o===0&&i!==0?new sl(r*.5,i,a):new wx.DodecahedronGeometry(r*.5,o);return s.scale(1,e/r,t/r),Object.assign(s,{userData:{...n,type:"DodecahedronGeometry"}})}},sl=class extends Mn{constructor(r=1,e=.2,t=4){let o=(1+Math.sqrt(5))/2,i=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,-i,-o,0,-i,o,0,i,-o,0,i,o,-i,-o,0,-i,o,0,i,-o,0,i,o,0,-o,0,-i,o,0,-i,-o,0,i,o,0,i],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,r,e,t),this.type=l}static fromJSON(r){return new sl(r.radius,r.corner,r.cornerSides)}};var Ye=require("three");var Ne=require("three"),ll=1e-12,Ma=class{constructor(r){this.position=new Ne.Vector2;this.startPosition=new Ne.Vector2;this.uuid=Ne.MathUtils.generateUUID();this.position=r.clone()}start(){this.reset()}reset(){this.startPosition.copy(this.position)}applyOffset(r){this.position.copy(this.startPosition).add(r)}copy(r){return this.position.copy(r.position),this.startPosition.copy(r.startPosition),this}clone(){return new Ma(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},Ia=class extends Ma{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new Ia(this.parent).copy(this)}},to=class extends Ma{constructor(e,t){super(t);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new Ia(this),new Ia(this))}static create(e,t){let o=new to(e,new Ne.Vector2(...t.position));return o.controls[0].position.set(...t.controlPrevious.position),o.controls[1].position.set(...t.controlNext.position),o.roundness=t.roundness,o.areControlsDirectionsMirrored=t.areControlsDirectionsMirrored,o}getOppositeControl(e){let t=this.controls.indexOf(e);return t===0?this.controls[1]:t===1?this.controls[0]:null}applyOffsetToControls(e,t=1){for(let o=0,i=this.controls.length;o<i;o++){let a=this.controls[o];this.position.distanceTo(a.position)<=t?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 to(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),t=this.curveAfter?.getTangentAt(0);return[e,t]}computeNormals(e=new Ne.Vector2,t=new Ne.Vector2){let[o,i]=this.computeTangents();return o&&i&&(Ox(o,e),Ox(i,t)),[e,t]}computeTangent(e=new Ne.Vector2){let[t,o]=this.computeTangents();return t&&o&&e.copy(t).add(o).normalize(),e}computeNormal(e=new Ne.Vector2){let[t,o]=this.computeNormals();return e.copy(t).add(o).normalize(),e}};function Ox(n,r=new Ne.Vector2){let e=n.length();return r.set(-n.y/e,n.x/e)}var kp=n=>n,Na=new Ne.Vector2,bu=new Ne.Vector2,bA=new Ne.Vector2,vA=new Ne.Vector2,SA=new Ne.Vector2,wA=new Ne.Vector2,Tx=new Ne.Vector3,Ax=new Ne.Vector3;function Mx(n){let r=new Ne.Vector2;r.addVectors(n.v0,Na.subVectors(n.v1,n.v0).multiplyScalar(2/3));let e=new Ne.Vector2;return e.addVectors(n.v2,bu.subVectors(n.v1,n.v2).multiplyScalar(2/3)),new Ne.CubicBezierCurve(n.v0,r,e,n.v2)}function cl(n,r,e=Number.EPSILON){return Math.abs(n-r)<e}function PA(n,r,e=Number.EPSILON){return n.distanceTo(r)<e}function OA(n,r,e=Number.EPSILON){return n.distanceTo(r)<e}function Hp(n,r,e){let t=Math.sqrt(Math.pow(r.x-n.x,2)+Math.pow(r.y-n.y,2)),o=Math.sqrt(Math.pow(r.x-e.x,2)+Math.pow(r.y-e.y,2)),i=Math.sqrt(Math.pow(e.x-n.x,2)+Math.pow(e.y-n.y,2));return Math.acos((o*o+t*t-i*i)/(2*o*t))}function Ix(n,r,e){return Cx(n,r)&&Cx(r,e)&&Up(n.position,r.position,e.position)}function Up(n,r,e){return Na.copy(r).sub(n).cross(bu.copy(e).sub(n))===0}function Nx(n,r,e,t,o){let i=Math.sqrt(Math.pow(r.x-n.x,2)+Math.pow(r.y-n.y,2)),a=(n.y+r.y)/2,s=(n.x+r.x)/2,l=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(n.y-r.y)/i,c=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(r.x-n.x)/i;return t.set(s+l,a+c),o.set(s-l,a-c),[t,o]}function Dx(n,r,e){let t=n.distanceTo(e),o=r.distanceTo(e);return t<o?r:n}function Ex(n,r,e,t,o,i){let a=r.x-n.x,s=r.y-n.y,l=e.x-n.x,c=e.y-n.y,u=Math.sqrt((a+l)*(a+l)+(s+c)*(s+c)),p;return Hp(r,n,e)>Math.PI&&(u*=-1),cl(c,s)?p=(s+c)*(t/u-.5)*8/3/(a-l):p=(a+l)*(t/u-.5)*8/3/(c-s),o.set(r.x-p*s,r.y+p*a),i.set(e.x+p*c,e.y-p*l),[o,i]}function Wp(n,r){return n.position.equals(n.controls[1].position)&&r.position.equals(r.controls[0].position)}function Cx(n,r){return Up(n.position,n.controls[1].position,r.position)&&Up(n.position,r.controls[0].position,r.position)}function _x(n,r,e,t,o=.5){let i=Na.subVectors(r,n).multiplyScalar(o).add(n),a=bu.subVectors(e,r).multiplyScalar(o).add(r),s=bA.subVectors(t,e).multiplyScalar(o).add(e),l=i,c=vA.subVectors(a,i).multiplyScalar(o).add(i),u=SA.subVectors(s,a).multiplyScalar(o).add(a),p=s,d=wA.subVectors(u,c).multiplyScalar(o).add(c);return[n.x,n.y,l.x,l.y,c.x,c.y,d.x,d.y,u.x,u.y,p.x,p.y,t.x,t.y]}function Bx(n,r,e=12,t=!0){let o=Ax.set(0,0,0),i,a=0,s=[];for(let l=0;l<r.length;l++){let c=kp(r[l]),u=Na,p=In(c,e);s.push(p);for(let d=0;d<=p;d++)if(c instanceof Ne.CubicBezierCurve||c instanceof Ne.QuadraticBezierCurve||c instanceof Ne.LineCurve){if(c.getPoint(d/p,u),o.set(u.x,u.y,0),i!==void 0&&OA(i,o))continue;i===void 0&&(i=Tx),i.copy(o),n.setXYZ(a,o.x,o.y,o.z),a++}}return t&&a>1&&!(n.getX(a-1)===n.getX(0)&&n.getY(a-1)===n.getY(0)&&n.getZ(a-1)===n.getZ(0))&&(n.setXYZ(a,n.getX(0),n.getY(0),n.getZ(0)),a++),n}function Lx(n,r,e,t=12,o=!0){let i=Ax.set(0,0,0),a=0,s=[];for(let l=0;l<r.length;l++){if(e[l]===!1)continue;let c,u=kp(r[l]),p=Na,d=In(u,t);s.push(d);for(let h=0;h<=d;h++)if(u instanceof Ne.CubicBezierCurve||u instanceof Ne.QuadraticBezierCurve||u instanceof Ne.LineCurve){if(u.getPoint(h/d,p),i.set(p.x,p.y,0),c?.equals(i))continue;c===void 0?c=Tx:(n.setXYZ(a,c.x,c.y,c.z),a++,n.setXYZ(a,i.x,i.y,i.z),a++),c.copy(i)}}return o&&a>1&&!(n.getX(a-1)===n.getX(0)&&n.getY(a-1)===n.getY(0)&&n.getZ(a-1)===n.getZ(0))&&(n.setXYZ(a,n.getX(0),n.getY(0),n.getZ(0)),a++),s}function qp(n,r=12,e=!1){let t=[];for(let o=0,i=n.length;o<i;o++){let a=n[o],s=0;if(e&&a.roundedCurveCorner!==void 0){let l=In(a.roundedCurveCorner,r)*.5;o>0&&(t[o-1]+=l),s+=l}a.curveAfter!==void 0&&(s+=In(a.curveAfter,r)),t.push(s)}return n.length>0&&e&&n[0].roundedCurveCorner!==void 0&&(t[n.length-1]+=In(n[0].roundedCurveCorner,r)*.5),t}function In(n,r=12){return n&&n instanceof Ne.EllipseCurve?r*2:n&&(n instanceof Ne.LineCurve||n instanceof Ne.LineCurve3)?1:n&&n instanceof Ne.SplineCurve?r*n.points.length:r}function Rx(n,r,e=12,t=!0){let o,i=0;for(let a=0;a<r.length;a++){let s=kp(r[a]),l=In(s,e),c=Na;for(let u=0;u<=l;u++)if(s instanceof Ne.CubicBezierCurve||s instanceof Ne.QuadraticBezierCurve||s instanceof Ne.LineCurve){if(s.getPoint(u/l,c),o!==void 0&&PA(o,c,ll))continue;o===void 0&&(o=bu),o.copy(c),n.push(c.x,c.y),i++}}return cl(n[0],n[n.length-2],ll)&&cl(n[1],n[n.length-1],ll)&&(n.pop(),n.pop()),t&&i>1&&!(cl(n[i-1],n[1],ll)&&cl(n[i-2],n[0],ll))&&(n.push(n[0],n[1]),i++),n}var $p=new Ye.Vector2,CA=new Ye.Vector2,TA=new Ye.Vector2,AA=new Ye.Vector2,MA=new Ye.Vector2,IA=new Ye.Vector2,$e=class extends Ye.Shape{constructor(e=100,t=100){super();this.points=[];this.shapeHoles=[];this.plane=new Ye.Plane(new Ye.Vector3(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=Ye.MathUtils.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=t}static createFromState(e,t,o){let i=new $e;return i.isClosed=e.isClosed,i.points=e.points.map(a=>to.create(a.id,a.data)),typeof e.roundness=="number"&&(i.roundness=e.roundness),i.shapeHoles=e.shapeHoles.map(a=>$e.createFromState(a)),t!==void 0&&o!==void 0&&i.applySize(t,o),i.update(),i}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 t=0,o=this.points.length;t<o;t++)this.points[t].roundness=e;this.needsUpdate=!0}}getPointsIndexesByIds(e){return e.map(t=>this.getPointIndexById(t)).filter(t=>t>=0)}getPointIndexById(e){let t=this.points.length,o=this.points.findIndex(i=>i.uuid===e);if(o<0){let i=t;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)i+=c;else return u+i}}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 t=this.points.length;for(let o=0,i=this.shapeHoles.length;o<i;o++){let a=this.shapeHoles[o],s=e-t;if(s<=a.points.length-1)return a.points[s];t+=a.points.length}}throw new Error("This shape does not have a point for this index: "+e)}getBezierPointIndex(e){let t=this.points.indexOf(e);if(t>=0)return t;if(t=this.points.length,this.shapeHoles.length>0)for(let o=0,i=this.shapeHoles.length;o<i;o++){let a=this.shapeHoles[o],s=a.points.indexOf(e);if(s>=0)return t+s;t+=a.points.length}return-1}getAllPoints(){let e=[].concat(...this.shapeHoles.map(t=>t.points));return[...this.points,...e]}applySize(e,t){e===0&&(e=.001),t===0&&(t=.001),this._width=e,this._height=t}applyScale(e,t){let o=$p.set(e,t);for(let i=0,a=this.points.length;i<a;i++){let s=this.points[i];s.position.multiply(o),s.controls[0].position.multiply(o),s.controls[1].position.multiply(o)}for(let i=0,a=this.shapeHoles.length;i<a;i++)this.shapeHoles[i].applyScale(e,t);this._update()}createPoint(e,t=0,o=Ye.MathUtils.generateUUID()){let i;e instanceof Ye.Vector2?i=e:i=new Ye.Vector2(e,t);let a=new to(o,i);return a.roundness=this.roundness,a}addPoint(e){this.points.push(e),this.needsUpdate=!0}addPointAt(e,t){this.points.splice(t,0,e),this.needsUpdate=!0}getPointByUuid(e){for(let t=0,o=this.points.length;t<o;t++){let i=this.points[t];if(i.uuid===e)return i}for(let t=0,o=this.shapeHoles.length;t<o;t++){let a=this.shapeHoles[t].getPointByUuid(e);if(a)return a}}getFirstPoint(){return this.points[0]}getLastPoint(){return this.points[this.points.length-1]}removePoint(e){let t=this.points.indexOf(e);t>=0&&this.points.splice(t,1),this.needsUpdate=!0}removePointById(e){let t=this.points.find(o=>o.uuid===e);t&&this.removePoint(t)}update(){for(let e=0,t=this.shapeHoles.length;e<t;e++)this.shapeHoles[e].update();this._update()}extractShapePointsToBuffer(e,t=12,o=!1){this.subdivision=t,this.curveDivisions===void 0&&this.computeCurveDivisions(t);let i=o?this.roundedCurveDivisions:this.curveDivisions;return Bx(e,o?this.roundedCurves:this.curves,t,this.autoClose),i.reduce((a,s)=>a+s,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=qp(this.points,e,!1),this.roundedCurveDivisions=qp(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,t,o=12){return Lx(e,this.curves,t,o,this.autoClose).reduce((a,s)=>a+s,0)*2}extractShapePointsToFlatArray(e,t=12){return this.subdivision=t,this.curveDivisions===void 0&&this.computeCurveDivisions(t),Rx(e,this.roundedCurves,t,this.autoClose)}getCurveIndexFromVertexId(e,t=!1){let o=0;this.curveDivisions===void 0&&this.computeCurveDivisions(this.subdivision);let i=t?this.roundedCurveDivisions:this.curveDivisions,a=0;t&&this.points[0].roundedCurveCorner!==void 0&&(a=In(this.points[0].roundedCurveCorner,this.subdivision)*.5);let s=e-a;s<0&&(s+=i.reduce((l,c)=>l+c,0));for(let l=0,c=i.length;l<c;l++){let u=i[l];if(s<o+u)return[l,(s-o+1)/u];o+=u}return[0,1]}getCurveT(e,t,o){let i=this.points[e],a=this.points[e>=this.points.length-1?0:e+1],s=this.curveDivisions,l=s[e];if(Wp(i,a)){let p=i.position.distanceTo(a.position);return i.position.distanceTo($p.set(o.x,o.y))/p}let c=0;for(let p=0;p<e;p++)c+=s[p];return(t-c)/l}dispose(){}_applyCurveForPoint(e,t){Wp(t,e)?this.lineTo(e.position.x,e.position.y):this.bezierCurveTo(t.controls[1].position.x,t.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,t.curveAfter=o;let i=o.clone();e.roundedCurveBefore=i,t.roundedCurveAfter=i,e.roundedCurveCorner=void 0,this.roundedCurves.push(i)}_update(){if(this.curves=[],this.roundedCurves=[],!this.points.length)return;for(let t=0,o=this.points.length;t<o;t++){let i=this.points[t];if(t===0)this.moveTo(i.position.x,i.position.y);else{let a=this.points[t-1];this._applyCurveForPoint(i,a)}}let e=this.getLastPoint();if(e?.curveAfter&&(e.curveAfter=void 0),this.isClosed){let t=this.points[0],o=this.points[this.points.length-1];this._applyCurveForPoint(t,o)}if(this.points.length>2){let t=0;for(let o=0,i=this.points.length;o<i;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&&Ix(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 h=a.roundedCurveBefore,f=a.roundedCurveAfter,m=p.getLength(),y=d.getLength(),g=Math.min(c,m*.499),v=Math.min(c,y*.499),O=Math.min(g,v),P=1-O/m,S=O/y,T=p.getPointAt(P,$p),I=d.getPointAt(S,CA);this._subSplitCurve(p,h,P,T,void 0),this._subSplitCurve(d,f,S,void 0,I);let x;if(this.useCubicForRoundedCorners){let _=Hp(T,a.position,I)/2,D=Math.tan(_)*T.distanceTo(a.position),[A,N]=Nx(T,I,D,TA,AA),E=Dx(A,N,a.position),[B,V]=Ex(E,T,I,D,MA,IA);x=new Ye.CubicBezierCurve(T.clone(),B.clone(),V.clone(),I.clone())}else x=new Ye.QuadraticBezierCurve(T.clone(),a.position.clone(),I.clone());a.roundedCurveCorner=x,this.roundedCurves.splice(o+t,0,x),t++}}}}_subSplitCurve(e,t,o,i,a){if(e instanceof Ye.LineCurve)i!==void 0&&t.v2.copy(i),a!==void 0&&t.v1.copy(a);else{let s=e,l=t,c=s.getUtoTmapping(o,0),u=_x(s.v0,s.v1,s.v2,s.v3,c);return i!==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 t}clone(){let e=new $e(this._width,this._height);return e.points=this.points.map(t=>t.clone()),e.isClosed=this.isClosed,e.roundness=this.roundness,e.isMesh2D=this.isMesh2D,e.shapeHoles=this.shapeHoles.map(t=>t.clone()),e}toJSON(){return{points:this.points.reduce((e,t)=>e.concat(t.toJSON()),[]),shapeHoles:this.shapeHoles.map(e=>e.toJSON()),isClosed:this.isClosed,roundness:this.roundness}}fromJSON(e){this.points=[],this.pointIDs=0;let t=e.points.length/7;for(let o=0;o<t;o++){let i=o*7,a=e.points[i+0],s=e.points[i+1],l=e.points[i+2],c=e.points[i+3],u=e.points[i+4],p=e.points[i+5],d=e.points[i+6],h=new to(Ye.MathUtils.generateUUID(),new Ye.Vector2(a,s));h.controls[0].position.set(l,c),h.controls[1].position.set(u,p),h.roundness=d,this.points.push(h)}return this.shapeHoles=e.shapeHoles?.length?e.shapeHoles.map(o=>{let i=new $e;return i.fromJSON(o),i}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e,t=!1){this.isText=t;let o=(a,s)=>{s instanceof Ye.CubicBezierCurve&&s.v3.equals(a.position)&&a.controls[0].position.copy(s.v2)},i=a=>{let s=[],l,c;for(l=0,c=a.length;l<c;l++)a[l]instanceof Ye.QuadraticBezierCurve&&(a[l]=Mx(a[l]));for(l=0,c=a.length;l<c;l++){let d=a[l],h=l>0?a[l-1]:null,f;d instanceof Ye.CubicBezierCurve?(f=this.createPoint(d.v0),f.controls[1].position.copy(d.v1)):d instanceof Ye.LineCurve&&(f=this.createPoint(d.v1)),f!==void 0&&(h!==null&&o(f,h),s.push(f))}let u=a[a.length-1],p=!1;return u instanceof Ye.CubicBezierCurve?u.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(u.v2),p=!0):u instanceof Ye.LineCurve&&u.v2.equals(s[0].position)&&(p=!0),this.isClosed=p,s};return this.points=i(e.curves),e instanceof Ye.Shape&&(this.shapeHoles=e.holes.map(a=>{let s=new $e;return s.fromShape(a),s})),this.update(),this}updatePoint(e,t){let o=this.getPointByUuid(e);o&&(t.position!==void 0&&o.position.fromArray(t.position),t.roundness!==void 0&&(o.roundness=t.roundness),t.areControlsDirectionsMirrored!==void 0&&(o.areControlsDirectionsMirrored=t.areControlsDirectionsMirrored),this.needsUpdate=!0)}updatePreviousControl(e,t){let i=this.getPointByUuid(e)?.controls[0];i&&(t.position&&i.position.fromArray(t.position),this.needsUpdate=!0)}updateNextControl(e,t){let i=this.getPointByUuid(e)?.controls[1];i&&(t.position&&i.position.fromArray(t.position),this.needsUpdate=!0)}};var Xp=Math.PI*2;function Yp({x:n,y:r},e,t,o,i){return{x:n*e+o,y:r*t+i}}function NA(n,r){let e=r===1.5707963267948966?.551915024494:r===-1.5707963267948966?-.551915024494:1.3333333333333333*Math.tan(r/4),t=Math.cos(n),o=Math.sin(n),i=Math.cos(n+r),a=Math.sin(n+r);return[{x:t-o*e,y:o+t*e},{x:i+a*e,y:a-i*e},{x:i,y:a}]}function Vx(n,r,e,t){let o=n*t-r*e<0?-1:1,i=Math.min(1,Math.max(-1,n*e+r*t));return o*Math.acos(i)}function DA(n,r,e,t,o,i,a,s,l,c){let u=Math.pow(o,2),p=Math.pow(i,2),d=Math.pow(a,2),h=Math.pow(s,2),f=u*p-u*h-p*d;f<0&&(f=0),f/=u*h+p*d,f=Math.sqrt(f)*(l===c?-1:1);let m=f*o/i*s,y=f*-i/o*a,g=m+(n+e)/2,v=y+(r+t)/2,O=(a-m)/o,P=(s-y)/i,S=(-a-m)/o,T=(-s-y)/i,I=Vx(1,0,O,P),x=Vx(O,P,S,T);return!c&&x>0&&(x-=Xp),c&&x<0&&(x+=Xp),{centerx:g,centery:v,ang1:I,ang2:x}}function zx({px:n,py:r,cx:e,cy:t,rx:o,ry:i,largeArcFlag:a,sweepFlag:s}){let l=[];if(o===0||i===0)return[];let c=(n-e)/2,u=(r-t)/2;if(c===0&&u===0)return[];o=Math.abs(o),i=Math.abs(i);let p=Math.pow(c,2)/Math.pow(o,2)+Math.pow(u,2)/Math.pow(i,2);p>1&&(o*=Math.sqrt(p),i*=Math.sqrt(p));let d=DA(n,r,e,t,o,i,c,u,a,s),{ang1:h,ang2:f}=d,{centerx:m,centery:y}=d,g=Math.abs(f)/(Xp/4);Math.abs(1-g)<1e-7&&(g=1);let v=Math.max(Math.ceil(g),1);f/=v;for(let O=0;O<v;O++)l.push(NA(h,f)),h+=f;return l.map(O=>{let{x:P,y:S}=Yp(O[0],o,i,m,y),{x:T,y:I}=Yp(O[1],o,i,m,y),{x,y:_}=Yp(O[2],o,i,m,y);return{x1:P,y1:S,x2:T,y2:I,x,y:_}})}var pi=require("three");var We;(function(n){n[n.ODD=0]="ODD",n[n.NONZERO=1]="NONZERO",n[n.POSITIVE=2]="POSITIVE",n[n.NEGATIVE=3]="NEGATIVE",n[n.ABS_GEQ_TWO=4]="ABS_GEQ_TWO"})(We||(We={}));var bt;(function(n){n[n.POLYGONS=0]="POLYGONS",n[n.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",n[n.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(bt||(bt={}));function Pe(n,r){if(!n)throw r||"Assertion Failed!"}var ve=function(){function n(){}return n.vertEq=function(r,e){return r.s===e.s&&r.t===e.t},n.vertLeq=function(r,e){return r.s<e.s||r.s===e.s&&r.t<=e.t},n.transLeq=function(r,e){return r.t<e.t||r.t===e.t&&r.s<=e.s},n.edgeGoesLeft=function(r){return n.vertLeq(r.Dst,r.Org)},n.edgeGoesRight=function(r){return n.vertLeq(r.Org,r.Dst)},n.vertL1dist=function(r,e){return Math.abs(r.s-e.s)+Math.abs(r.t-e.t)},n.edgeEval=function(r,e,t){Pe(n.vertLeq(r,e)&&n.vertLeq(e,t));var o=e.s-r.s,i=t.s-e.s;return o+i>0?o<i?e.t-r.t+(r.t-t.t)*(o/(o+i)):e.t-t.t+(t.t-r.t)*(i/(o+i)):0},n.edgeSign=function(r,e,t){Pe(n.vertLeq(r,e)&&n.vertLeq(e,t));var o=e.s-r.s,i=t.s-e.s;return o+i>0?(e.t-t.t)*o+(e.t-r.t)*i:0},n.transEval=function(r,e,t){Pe(n.transLeq(r,e)&&n.transLeq(e,t));var o=e.t-r.t,i=t.t-e.t;return o+i>0?o<i?e.s-r.s+(r.s-t.s)*(o/(o+i)):e.s-t.s+(t.s-r.s)*(i/(o+i)):0},n.transSign=function(r,e,t){Pe(n.transLeq(r,e)&&n.transLeq(e,t));var o=e.t-r.t,i=t.t-e.t;return o+i>0?(e.s-t.s)*o+(e.s-r.s)*i:0},n.vertCCW=function(r,e,t){return r.s*(e.t-t.t)+e.s*(t.t-r.t)+t.s*(r.t-e.t)>=0},n.interpolate=function(r,e,t,o){return r=r<0?0:r,t=t<0?0:t,r<=t?t===0?(e+o)/2:e+(o-e)*(r/(r+t)):o+(e-o)*(t/(r+t))},n.intersect=function(r,e,t,o,i){var a,s,l;n.vertLeq(r,e)||(l=r,r=e,e=l),n.vertLeq(t,o)||(l=t,t=o,o=l),n.vertLeq(r,t)||(l=r,r=t,t=l,l=e,e=o,o=l),n.vertLeq(t,e)?n.vertLeq(e,o)?(a=n.edgeEval(r,t,e),s=n.edgeEval(t,e,o),a+s<0&&(a=-a,s=-s),i.s=n.interpolate(a,t.s,s,e.s)):(a=n.edgeSign(r,t,e),s=-n.edgeSign(r,o,e),a+s<0&&(a=-a,s=-s),i.s=n.interpolate(a,t.s,s,o.s)):i.s=(t.s+e.s)/2,n.transLeq(r,e)||(l=r,r=e,e=l),n.transLeq(t,o)||(l=t,t=o,o=l),n.transLeq(r,t)||(l=r,r=t,t=l,l=e,e=o,o=l),n.transLeq(t,e)?n.transLeq(e,o)?(a=n.transEval(r,t,e),s=n.transEval(t,e,o),a+s<0&&(a=-a,s=-s),i.t=n.interpolate(a,t.t,s,e.t)):(a=n.transSign(r,t,e),s=-n.transSign(r,o,e),a+s<0&&(a=-a,s=-s),i.t=n.interpolate(a,t.t,s,o.t)):i.t=(t.t+e.t)/2},n}(),ul=function(){function n(){this.next=null,this.prev=null,this.anEdge=null,this.trail=null,this.n=0,this.marked=!1,this.inside=!1}return n}(),vu=function(){function n(r){this.side=r,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(n.prototype,"Rface",{get:function(){return this.Sym.Lface},set:function(r){this.Sym.Lface=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dst",{get:function(){return this.Sym.Org},set:function(r){this.Sym.Org=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Oprev",{get:function(){return this.Sym.Lnext},set:function(r){this.Sym.Lnext=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Lprev",{get:function(){return this.Onext.Sym},set:function(r){this.Onext.Sym=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dprev",{get:function(){return this.Lnext.Sym},set:function(r){this.Lnext.Sym=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Rprev",{get:function(){return this.Sym.Onext},set:function(r){this.Sym.Onext=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dnext",{get:function(){return this.Sym.Onext.Sym},set:function(r){this.Sym.Onext.Sym=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Rnext",{get:function(){return this.Sym.Lnext.Sym},set:function(r){this.Sym.Lnext.Sym=r},enumerable:!0,configurable:!0}),n}(),Da=function(){function n(){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 n}(),Gx=function(){function n(){var r=new Da,e=new ul,t=new vu(0),o=new vu(1);r.next=r.prev=r,r.anEdge=null,e.next=e.prev=e,t.next=t,t.Sym=o,o.next=o,o.Sym=t,this.vHead=r,this.fHead=e,this.eHead=t,this.eHeadSym=o}return n.prototype.makeEdge_=function(r){var e=new vu(0),t=new vu(1);r.Sym.side<r.side&&(r=r.Sym);var o=r.Sym.next;return t.next=o,o.Sym.next=e,e.next=r,r.Sym.next=t,e.Sym=t,e.Onext=e,e.Lnext=t,e.Org=null,e.Lface=null,e.winding=0,e.activeRegion=null,t.Sym=e,t.Onext=t,t.Lnext=e,t.Org=null,t.Lface=null,t.winding=0,t.activeRegion=null,e},n.prototype.splice_=function(r,e){var t=r.Onext,o=e.Onext;t.Sym.Lnext=e,o.Sym.Lnext=r,r.Onext=o,e.Onext=t},n.prototype.makeVertex_=function(r,e,t){var o=r;Pe(o,"Vertex can't be null!");var i=t.prev;o.prev=i,i.next=o,o.next=t,t.prev=o,o.anEdge=e;var a=e;do a.Org=o,a=a.Onext;while(a!==e)},n.prototype.makeFace_=function(r,e,t){var o=r;Pe(o,"Face can't be null");var i=t.prev;o.prev=i,i.next=o,o.next=t,t.prev=o,o.anEdge=e,o.trail=null,o.marked=!1,o.inside=t.inside;var a=e;do a.Lface=o,a=a.Lnext;while(a!==e)},n.prototype.killEdge_=function(r){r.Sym.side<r.side&&(r=r.Sym);var e=r.next,t=r.Sym.next;e.Sym.next=t,t.Sym.next=e},n.prototype.killVertex_=function(r,e){var t=r.anEdge,o=t;do o.Org=e,o=o.Onext;while(o!==t);var i=r.prev,a=r.next;a.prev=i,i.next=a},n.prototype.killFace_=function(r,e){var t=r.anEdge,o=t;do o.Lface=e,o=o.Lnext;while(o!==t);var i=r.prev,a=r.next;a.prev=i,i.next=a},n.prototype.makeEdge=function(){var r=new Da,e=new Da,t=new ul,o=this.makeEdge_(this.eHead);return this.makeVertex_(r,o,this.vHead),this.makeVertex_(e,o.Sym,this.vHead),this.makeFace_(t,o,this.fHead),o},n.prototype.splice=function(r,e){var t=!1,o=!1;if(r!==e){if(e.Org!==r.Org&&(o=!0,this.killVertex_(e.Org,r.Org)),e.Lface!==r.Lface&&(t=!0,this.killFace_(e.Lface,r.Lface)),this.splice_(e,r),!o){var i=new Da;this.makeVertex_(i,e,r.Org),r.Org.anEdge=r}if(!t){var a=new ul;this.makeFace_(a,e,r.Lface),r.Lface.anEdge=r}}},n.prototype.delete=function(r){var e=r.Sym,t=!1;if(r.Lface!==r.Rface&&(t=!0,this.killFace_(r.Lface,r.Rface)),r.Onext===r)this.killVertex_(r.Org,null);else if(r.Rface.anEdge=r.Oprev,r.Org.anEdge=r.Onext,this.splice_(r,r.Oprev),!t){var o=new ul;this.makeFace_(o,r,r.Lface)}e.Onext===e?(this.killVertex_(e.Org,null),this.killFace_(e.Lface,null)):(r.Lface.anEdge=e.Oprev,e.Org.anEdge=e.Onext,this.splice_(e,e.Oprev)),this.killEdge_(r)},n.prototype.addEdgeVertex=function(r){var e=this.makeEdge_(r),t=e.Sym;this.splice_(e,r.Lnext),e.Org=r.Dst;var o=new Da;return this.makeVertex_(o,t,e.Org),e.Lface=t.Lface=r.Lface,e},n.prototype.splitEdge=function(r){var e=this.addEdgeVertex(r),t=e.Sym;return this.splice_(r.Sym,r.Sym.Oprev),this.splice_(r.Sym,t),r.Dst=t.Org,t.Dst.anEdge=t.Sym,t.Rface=r.Rface,t.winding=r.winding,t.Sym.winding=r.Sym.winding,t.idx=r.idx,t.Sym.idx=r.Sym.idx,t},n.prototype.connect=function(r,e){var t=!1,o=this.makeEdge_(r),i=o.Sym;if(e.Lface!==r.Lface&&(t=!0,this.killFace_(e.Lface,r.Lface)),this.splice_(o,r.Lnext),this.splice_(i,e),o.Org=r.Dst,i.Org=e.Org,o.Lface=i.Lface=r.Lface,r.Lface.anEdge=i,!t){var a=new ul;this.makeFace_(a,o,r.Lface)}return o},n.prototype.zapFace=function(r){var e=r.anEdge,t,o,i,a,s;o=e.Lnext;do t=o,o=t.Lnext,t.Lface=null,t.Rface===null&&(t.Onext===t?this.killVertex_(t.Org,null):(t.Org.anEdge=t.Onext,this.splice_(t,t.Oprev)),i=t.Sym,i.Onext===i?this.killVertex_(i.Org,null):(i.Org.anEdge=i.Onext,this.splice_(i,i.Oprev)),this.killEdge_(t));while(t!=e);a=r.prev,s=r.next,s.prev=a,a.next=s},n.prototype.countFaceVerts_=function(r){var e=r.anEdge,t=0;do t++,e=e.Lnext;while(e!==r.anEdge);return t},n.prototype.mergeConvexFaces=function(r){var e,t,o,i,a,s,l;for(e=this.fHead.next;e!==this.fHead;e=e.next)if(!!e.inside)for(t=e.anEdge,a=t.Org;o=t.Lnext,i=t.Sym,i&&i.Lface&&i.Lface.inside&&(s=this.countFaceVerts_(e),l=this.countFaceVerts_(i.Lface),s+l-2<=r&&ve.vertCCW(t.Lprev.Org,t.Org,i.Lnext.Lnext.Org)&&ve.vertCCW(i.Lprev.Org,i.Org,t.Lnext.Lnext.Org)&&(o=i.Lnext,this.delete(i),t=null,i=null)),!(t&&t.Lnext.Org===a);)t=o;return!0},n.prototype.check=function(){var r=this.fHead,e=this.vHead,t=this.eHead,o,i,a,s,l,c;for(i=r,i=r;(o=i.next)!==r;i=o){Pe(o.prev===i),l=o.anEdge;do Pe(l.Sym!==l),Pe(l.Sym.Sym===l),Pe(l.Lnext.Onext.Sym===l),Pe(l.Onext.Sym.Lnext===l),Pe(l.Lface===o),l=l.Lnext;while(l!==o.anEdge)}for(Pe(o.prev===i&&o.anEdge===null),s=e,s=e;(a=s.next)!==e;s=a){Pe(a.prev===s),l=a.anEdge;do Pe(l.Sym!==l),Pe(l.Sym.Sym===l),Pe(l.Lnext.Onext.Sym===l),Pe(l.Onext.Sym.Lnext===l),Pe(l.Org===a),l=l.Onext;while(l!==a.anEdge)}for(Pe(a.prev===s&&a.anEdge===null),c=t,c=t;(l=c.next)!==t;c=l)Pe(l.Sym.next===c.Sym),Pe(l.Sym!==l),Pe(l.Sym.Sym===l),Pe(l.Org!==null),Pe(l.Dst!==null),Pe(l.Lnext.Onext.Sym===l),Pe(l.Onext.Sym.Lnext===l);Pe(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)},n}(),jx=function(){function n(){this.handle=null}return n}(),Fx=function(){function n(){this.key=null,this.node=0}return n}(),EA=function(){function n(r,e){this.leq=e,this.max=0,this.nodes=[],this.handles=[],this.initialized=!1,this.freeList=0,this.size=0,this.max=r,this.nodes=[],this.handles=[];for(var t=0;t<r+1;t++)this.nodes[t]=new jx,this.handles[t]=new Fx;this.initialized=!1,this.nodes[1].handle=1,this.handles[1].key=null}return n.prototype.floatDown_=function(r){var e=this.nodes,t=this.handles,o,i,a;for(o=e[r].handle;;){if(a=r<<1,a<this.size&&this.leq(t[e[a+1].handle].key,t[e[a].handle].key)&&++a,Pe(a<=this.max),i=e[a].handle,a>this.size||this.leq(t[o].key,t[i].key)){e[r].handle=o,t[o].node=r;break}e[r].handle=i,t[i].node=r,r=a}},n.prototype.floatUp_=function(r){var e=this.nodes,t=this.handles,o,i,a;for(o=e[r].handle;;){if(a=r>>1,i=e[a].handle,a===0||this.leq(t[i].key,t[o].key)){e[r].handle=o,t[o].node=r;break}e[r].handle=i,t[i].node=r,r=a}},n.prototype.init=function(){for(var r=this.size;r>=1;--r)this.floatDown_(r);this.initialized=!0},n.prototype.min=function(){return this.handles[this.nodes[1].handle].key},n.prototype.insert=function(r){var e,t;if(e=++this.size,e*2>this.max){this.max*=2;var o,i;for(i=this.nodes.length,this.nodes.length=this.max+1,o=i;o<this.nodes.length;o++)this.nodes[o]=new jx;for(i=this.handles.length,this.handles.length=this.max+1,o=i;o<this.handles.length;o++)this.handles[o]=new Fx}return this.freeList===0?t=e:(t=this.freeList,this.freeList=this.handles[t].node),this.nodes[e].handle=t,this.handles[t].node=e,this.handles[t].key=r,this.initialized&&this.floatUp_(e),t},n.prototype.extractMin=function(){var r=this.nodes,e=this.handles,t=r[1].handle,o=e[t].key;return this.size>0&&(r[1].handle=r[this.size].handle,e[r[1].handle].node=1,e[t].key=null,e[t].node=this.freeList,this.freeList=t,--this.size,this.size>0&&this.floatDown_(1)),o},n.prototype.delete=function(r){var e=this.nodes,t=this.handles,o;Pe(r>=1&&r<=this.max&&t[r].key!==null),o=t[r].node,e[o].handle=e[this.size].handle,t[e[o].handle].node=o,--this.size,o<=this.size&&(o<=1||this.leq(t[e[o>>1].handle].key,t[e[o].handle].key)?this.floatDown_(o):this.floatUp_(o)),t[r].key=null,t[r].node=this.freeList,this.freeList=r},n}(),Kp=function(){function n(){this.eUp=null,this.nodeUp=null,this.windingNumber=0,this.inside=!1,this.sentinel=!1,this.dirty=!1,this.fixUpperEdge=!1}return n}(),Ux=function(){function n(){this.key=null,this.next=null,this.prev=null}return n}(),_A=function(){function n(r,e){this.frame=r,this.leq=e,this.head=new Ux,this.head.next=this.head,this.head.prev=this.head}return n.prototype.min=function(){return this.head.next},n.prototype.max=function(){return this.head.prev},n.prototype.insert=function(r){return this.insertBefore(this.head,r)},n.prototype.search=function(r){var e=this.head;do e=e.next;while(e.key!==null&&!this.leq(this.frame,r,e.key));return e},n.prototype.insertBefore=function(r,e){do r=r.prev;while(r.key!==null&&!this.leq(this.frame,r.key,e));var t=new Ux;return t.key=e,t.next=r.next,r.next.prev=t,t.prev=r,r.next=t,t},n.prototype.delete=function(r){r.next.prev=r.prev,r.prev.next=r.next},n}(),BA=function(){function n(){}return n.regionBelow=function(r){return r.nodeUp.prev.key},n.regionAbove=function(r){return r.nodeUp.next.key},n.debugEvent=function(r){},n.addWinding=function(r,e){r.winding+=e.winding,r.Sym.winding+=e.Sym.winding},n.edgeLeq=function(r,e,t){var o=r.event,i=e.eUp,a=t.eUp;if(i.Dst===o)return a.Dst===o?ve.vertLeq(i.Org,a.Org)?ve.edgeSign(a.Dst,i.Org,a.Org)<=0:ve.edgeSign(i.Dst,a.Org,i.Org)>=0:ve.edgeSign(a.Dst,o,a.Org)<=0;if(a.Dst===o)return ve.edgeSign(i.Dst,o,i.Org)>=0;var s=ve.edgeEval(i.Dst,o,i.Org),l=ve.edgeEval(a.Dst,o,a.Org);return s>=l},n.deleteRegion=function(r,e){e.fixUpperEdge&&Pe(e.eUp.winding===0),e.eUp.activeRegion=null,r.dict.delete(e.nodeUp)},n.fixUpperEdge=function(r,e,t){Pe(e.fixUpperEdge),r.mesh.delete(e.eUp),e.fixUpperEdge=!1,e.eUp=t,t.activeRegion=e},n.topLeftRegion=function(r,e){var t=e.eUp.Org,o;do e=n.regionAbove(e);while(e.eUp.Org===t);if(e.fixUpperEdge){if(o=r.mesh.connect(n.regionBelow(e).eUp.Sym,e.eUp.Lnext),o===null)return null;n.fixUpperEdge(r,e,o),e=n.regionAbove(e)}return e},n.topRightRegion=function(r){var e=r.eUp.Dst;do r=n.regionAbove(r);while(r.eUp.Dst===e);return r},n.addRegionBelow=function(r,e,t){var o=new Kp;return o.eUp=t,o.nodeUp=r.dict.insertBefore(e.nodeUp,o),o.fixUpperEdge=!1,o.sentinel=!1,o.dirty=!1,t.activeRegion=o,o},n.isWindingInside=function(r,e){switch(r.windingRule){case We.ODD:return(e&1)!==0;case We.NONZERO:return e!==0;case We.POSITIVE:return e>0;case We.NEGATIVE:return e<0;case We.ABS_GEQ_TWO:return e>=2||e<=-2}throw new Error("Invalid winding rulle")},n.computeWinding=function(r,e){e.windingNumber=n.regionAbove(e).windingNumber+e.eUp.winding,e.inside=n.isWindingInside(r,e.windingNumber)},n.finishRegion=function(r,e){var t=e.eUp,o=t.Lface;o.inside=e.inside,o.anEdge=t,n.deleteRegion(r,e)},n.finishLeftRegions=function(r,e,t){for(var o,i=null,a=e,s=e.eUp;a!==t;){if(a.fixUpperEdge=!1,i=n.regionBelow(a),o=i.eUp,o.Org!=s.Org){if(!i.fixUpperEdge){n.finishRegion(r,a);break}o=r.mesh.connect(s.Lprev,o.Sym),n.fixUpperEdge(r,i,o)}s.Onext!==o&&(r.mesh.splice(o.Oprev,o),r.mesh.splice(s,o)),n.finishRegion(r,a),s=i.eUp,a=i}return s},n.addRightEdges=function(r,e,t,o,i,a){var s,l,c,u,p=!0;c=t;do Pe(ve.vertLeq(c.Org,c.Dst)),n.addRegionBelow(r,e,c.Sym),c=c.Onext;while(c!==o);for(i===null&&(i=n.regionBelow(e).eUp.Rprev),l=e,u=i;s=n.regionBelow(l),c=s.eUp.Sym,c.Org===u.Org;)c.Onext!==u&&(r.mesh.splice(c.Oprev,c),r.mesh.splice(u.Oprev,c)),s.windingNumber=l.windingNumber-c.winding,s.inside=n.isWindingInside(r,s.windingNumber),l.dirty=!0,!p&&n.checkForRightSplice(r,l)&&(n.addWinding(c,u),n.deleteRegion(r,l),r.mesh.delete(u)),p=!1,l=s,u=c;l.dirty=!0,Pe(l.windingNumber-c.winding===s.windingNumber),a&&n.walkDirtyRegions(r,l)},n.spliceMergeVertices=function(r,e,t){r.mesh.splice(e,t)},n.vertexWeights=function(r,e,t){var o=ve.vertL1dist(e,r),i=ve.vertL1dist(t,r),a=.5*i/(o+i),s=.5*o/(o+i);r.coords[0]+=a*e.coords[0]+s*t.coords[0],r.coords[1]+=a*e.coords[1]+s*t.coords[1],r.coords[2]+=a*e.coords[2]+s*t.coords[2]},n.getIntersectData=function(r,e,t,o,i,a){e.coords[0]=e.coords[1]=e.coords[2]=0,e.idx=-1,n.vertexWeights(e,t,o),n.vertexWeights(e,i,a)},n.checkForRightSplice=function(r,e){var t=n.regionBelow(e),o=e.eUp,i=t.eUp;if(ve.vertLeq(o.Org,i.Org)){if(ve.edgeSign(i.Dst,o.Org,i.Org)>0)return!1;ve.vertEq(o.Org,i.Org)?o.Org!==i.Org&&(r.pq.delete(o.Org.pqHandle),n.spliceMergeVertices(r,i.Oprev,o)):(r.mesh.splitEdge(i.Sym),r.mesh.splice(o,i.Oprev),e.dirty=t.dirty=!0)}else{if(ve.edgeSign(o.Dst,i.Org,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,r.mesh.splitEdge(o.Sym),r.mesh.splice(i.Oprev,o)}return!0},n.checkForLeftSplice=function(r,e){var t=n.regionBelow(e),o=e.eUp,i=t.eUp,a;if(Pe(!ve.vertEq(o.Dst,i.Dst)),ve.vertLeq(o.Dst,i.Dst)){if(ve.edgeSign(o.Dst,i.Dst,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,a=r.mesh.splitEdge(o),r.mesh.splice(i.Sym,a),a.Lface.inside=e.inside}else{if(ve.edgeSign(i.Dst,o.Dst,i.Org)>0)return!1;e.dirty=t.dirty=!0,a=r.mesh.splitEdge(i),r.mesh.splice(o.Lnext,i.Sym),a.Rface.inside=e.inside}return!0},n.checkForIntersect=function(r,e){var t=n.regionBelow(e),o=e.eUp,i=t.eUp,a=o.Org,s=i.Org,l=o.Dst,c=i.Dst,u,p,d=new Da,h,f;if(Pe(!ve.vertEq(c,l)),Pe(ve.edgeSign(l,r.event,a)<=0),Pe(ve.edgeSign(c,r.event,s)>=0),Pe(a!==r.event&&s!==r.event),Pe(!e.fixUpperEdge&&!t.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 n.debugEvent(r),ve.intersect(l,a,c,s,d),Pe(Math.min(a.t,l.t)<=d.t),Pe(d.t<=Math.max(s.t,c.t)),Pe(Math.min(c.s,l.s)<=d.s),Pe(d.s<=Math.max(s.s,a.s)),ve.vertLeq(d,r.event)&&(d.s=r.event.s,d.t=r.event.t),h=ve.vertLeq(a,s)?a:s,ve.vertLeq(h,d)&&(d.s=h.s,d.t=h.t),ve.vertEq(d,a)||ve.vertEq(d,s)?(n.checkForRightSplice(r,e),!1):!ve.vertEq(l,r.event)&&ve.edgeSign(l,r.event,d)>=0||!ve.vertEq(c,r.event)&&ve.edgeSign(c,r.event,d)<=0?c===r.event?(r.mesh.splitEdge(o.Sym),r.mesh.splice(i.Sym,o),e=n.topLeftRegion(r,e),o=n.regionBelow(e).eUp,n.finishLeftRegions(r,n.regionBelow(e),t),n.addRightEdges(r,e,o.Oprev,o,o,!0),!0):l===r.event?(r.mesh.splitEdge(i.Sym),r.mesh.splice(o.Lnext,i.Oprev),t=e,e=n.topRightRegion(e),f=n.regionBelow(e).eUp.Rprev,t.eUp=i.Oprev,i=n.finishLeftRegions(r,t,null),n.addRightEdges(r,e,i.Onext,o.Rprev,f,!0),!0):(ve.edgeSign(l,r.event,d)>=0&&(n.regionAbove(e).dirty=e.dirty=!0,r.mesh.splitEdge(o.Sym),o.Org.s=r.event.s,o.Org.t=r.event.t),ve.edgeSign(c,r.event,d)<=0&&(e.dirty=t.dirty=!0,r.mesh.splitEdge(i.Sym),i.Org.s=r.event.s,i.Org.t=r.event.t),!1):(r.mesh.splitEdge(o.Sym),r.mesh.splitEdge(i.Sym),r.mesh.splice(i.Oprev,o),o.Org.s=d.s,o.Org.t=d.t,o.Org.pqHandle=r.pq.insert(o.Org),n.getIntersectData(r,o.Org,a,l,s,c),n.regionAbove(e).dirty=e.dirty=t.dirty=!0,!1)},n.walkDirtyRegions=function(r,e){for(var t=n.regionBelow(e),o,i;;){for(;t.dirty;)e=t,t=n.regionBelow(t);if(!e.dirty&&(t=e,e=n.regionAbove(e),e===null||!e.dirty))return;if(e.dirty=!1,o=e.eUp,i=t.eUp,o.Dst!==i.Dst&&n.checkForLeftSplice(r,e)&&(t.fixUpperEdge?(n.deleteRegion(r,t),r.mesh.delete(i),t=n.regionBelow(e),i=t.eUp):e.fixUpperEdge&&(n.deleteRegion(r,e),r.mesh.delete(o),e=n.regionAbove(t),o=e.eUp)),o.Org!==i.Org)if(o.Dst!==i.Dst&&!e.fixUpperEdge&&!t.fixUpperEdge&&(o.Dst===r.event||i.Dst===r.event)){if(n.checkForIntersect(r,e))return}else n.checkForRightSplice(r,e);o.Org===i.Org&&o.Dst===i.Dst&&(n.addWinding(i,o),n.deleteRegion(r,e),r.mesh.delete(o),e=n.regionAbove(t))}},n.connectRightVertex=function(r,e,t){var o,i=t.Onext,a=n.regionBelow(e),s=e.eUp,l=a.eUp,c=!1;if(s.Dst!==l.Dst&&n.checkForIntersect(r,e),ve.vertEq(s.Org,r.event)&&(r.mesh.splice(i.Oprev,s),e=n.topLeftRegion(r,e),i=n.regionBelow(e).eUp,n.finishLeftRegions(r,n.regionBelow(e),a),c=!0),ve.vertEq(l.Org,r.event)&&(r.mesh.splice(t,l.Oprev),t=n.finishLeftRegions(r,a,null),c=!0),c){n.addRightEdges(r,e,t.Onext,i,i,!0);return}ve.vertLeq(l.Org,s.Org)?o=l.Oprev:o=s,o=r.mesh.connect(t.Lprev,o),n.addRightEdges(r,e,o,o.Onext,o.Onext,!1),o.Sym.activeRegion.fixUpperEdge=!0,n.walkDirtyRegions(r,e)},n.connectLeftDegenerate=function(r,e,t){var o,i,a,s,l;if(o=e.eUp,ve.vertEq(o.Org,t)){Pe(!1),n.spliceMergeVertices(r,o,t.anEdge);return}if(!ve.vertEq(o.Dst,t)){r.mesh.splitEdge(o.Sym),e.fixUpperEdge&&(r.mesh.delete(o.Onext),e.fixUpperEdge=!1),r.mesh.splice(t.anEdge,o),n.sweepEvent(r,t);return}Pe(!1),e=n.topRightRegion(e),l=n.regionBelow(e),a=l.eUp.Sym,i=s=a.Onext,l.fixUpperEdge&&(Pe(i!==a),n.deleteRegion(r,l),r.mesh.delete(a),a=i.Oprev),r.mesh.splice(t.anEdge,a),ve.edgeGoesLeft(i)||(i=null),n.addRightEdges(r,e,a.Onext,s,i,!0)},n.connectLeftVertex=function(r,e){var t,o,i,a,s,l,c=new Kp;if(c.eUp=e.anEdge.Sym,t=r.dict.search(c).key,o=n.regionBelow(t),!!o){if(a=t.eUp,s=o.eUp,ve.edgeSign(a.Dst,e,a.Org)===0){n.connectLeftDegenerate(r,t,e);return}if(i=ve.vertLeq(s.Dst,a.Dst)?t:o,t.inside||i.fixUpperEdge){if(i===t)l=r.mesh.connect(e.anEdge.Sym,a.Lnext);else{var u=r.mesh.connect(s.Dnext,e.anEdge);l=u.Sym}i.fixUpperEdge?n.fixUpperEdge(r,i,l):n.computeWinding(r,n.addRegionBelow(r,t,l)),n.sweepEvent(r,e)}else n.addRightEdges(r,t,e.anEdge,e.anEdge,null,!0)}},n.sweepEvent=function(r,e){r.event=e,n.debugEvent(r);for(var t=e.anEdge;t.activeRegion===null;)if(t=t.Onext,t===e.anEdge){n.connectLeftVertex(r,e);return}var o=n.topLeftRegion(r,t.activeRegion);Pe(o!==null);var i=n.regionBelow(o),a=i.eUp,s=n.finishLeftRegions(r,i,null);s.Onext===a?n.connectRightVertex(r,o,s):n.addRightEdges(r,o,s.Onext,a,a,!0)},n.addSentinel=function(r,e,t,o){var i=new Kp,a=r.mesh.makeEdge();a.Org.s=t,a.Org.t=o,a.Dst.s=e,a.Dst.t=o,r.event=a.Dst,i.eUp=a,i.windingNumber=0,i.inside=!1,i.fixUpperEdge=!1,i.sentinel=!0,i.dirty=!1,i.nodeUp=r.dict.insert(i)},n.initEdgeDict=function(r){r.dict=new _A(r,n.edgeLeq);var e=r.bmax[0]-r.bmin[0],t=r.bmax[1]-r.bmin[1],o=r.bmin[0]-e,i=r.bmax[0]+e,a=r.bmin[1]-t,s=r.bmax[1]+t;n.addSentinel(r,o,i,a),n.addSentinel(r,o,i,s)},n.doneEdgeDict=function(r){for(var e,t=0;(e=r.dict.min().key)!==null;)e.sentinel||(Pe(e.fixUpperEdge),Pe(++t===1)),Pe(e.windingNumber===0),n.deleteRegion(r,e)},n.removeDegenerateEdges=function(r){var e,t,o,i=r.mesh.eHead;for(e=i.next;e!==i;e=t)t=e.next,o=e.Lnext,ve.vertEq(e.Org,e.Dst)&&e.Lnext.Lnext!==e&&(n.spliceMergeVertices(r,o,e),r.mesh.delete(e),e=o,o=e.Lnext),o.Lnext===e&&(o!==e&&((o===t||o===t.Sym)&&(t=t.next),r.mesh.delete(o)),(e===t||e===t.Sym)&&(t=t.next),r.mesh.delete(e))},n.initPriorityQ=function(r){var e,t,o,i=0;for(o=r.mesh.vHead,t=o.next;t!==o;t=t.next)i++;for(i+=8,e=r.pq=new EA(i,ve.vertLeq),o=r.mesh.vHead,t=o.next;t!==o;t=t.next)t.pqHandle=e.insert(t);return t!==o?!1:(e.init(),!0)},n.donePriorityQ=function(r){r.pq=null},n.removeDegenerateFaces=function(r,e){var t,o,i;for(t=e.fHead.next;t!==e.fHead;t=o)o=t.next,i=t.anEdge,Pe(i.Lnext!==i),i.Lnext.Lnext===i&&(n.addWinding(i.Onext,i),r.mesh.delete(i));return!0},n.computeInterior=function(r,e){e===void 0&&(e=!0);var t,o;if(n.removeDegenerateEdges(r),!n.initPriorityQ(r))return!1;for(n.initEdgeDict(r);(t=r.pq.extractMin())!==null;){for(;o=r.pq.min(),!(o===null||!ve.vertEq(o,t));)o=r.pq.extractMin(),n.spliceMergeVertices(r,t.anEdge,o.anEdge);n.sweepEvent(r,t)}return r.event=r.dict.min().key.eUp.Org,n.debugEvent(r),n.doneEdgeDict(r),n.donePriorityQ(r),n.removeDegenerateFaces(r,r.mesh)?(e&&r.mesh.check(),!0):!1},n}(),LA=function(){function n(){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=We.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 n.prototype.dot_=function(r,e){return r[0]*e[0]+r[1]*e[1]+r[2]*e[2]},n.prototype.normalize_=function(r){var e=r[0]*r[0]+r[1]*r[1]+r[2]*r[2];if(!e)throw"Zero-size vector!";e=Math.sqrt(e),r[0]/=e,r[1]/=e,r[2]/=e},n.prototype.longAxis_=function(r){var e=0;return Math.abs(r[1])>Math.abs(r[0])&&(e=1),Math.abs(r[2])>Math.abs(r[e])&&(e=2),e},n.prototype.computeNormal_=function(r){var e,t,o,i,a,s,l=[0,0,0],c=[0,0,0],u=[0,0,0],p=[0,0,0],d=[0,0,0],h=[null,null,null],f=[null,null,null],m=this.mesh.vHead;e=m.next;for(var y=0;y<3;++y)i=e.coords[y],c[y]=i,f[y]=e,l[y]=i,h[y]=e;for(e=m.next;e!==m;e=e.next)for(var g=0;g<3;++g)i=e.coords[g],i<c[g]&&(c[g]=i,f[g]=e),i>l[g]&&(l[g]=i,h[g]=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]){r[0]=0,r[1]=0,r[2]=1;return}for(s=0,t=f[v],o=h[v],u[0]=t.coords[0]-o.coords[0],u[1]=t.coords[1]-o.coords[1],u[2]=t.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,r[0]=d[0],r[1]=d[1],r[2]=d[2]);s<=0&&(r[0]=r[1]=r[2]=0,r[this.longAxis_(u)]=1)},n.prototype.checkOrientation_=function(){for(var r=this.mesh.fHead,e,t=this.mesh.vHead,o,i=0,a=r.next;a!==r;a=a.next)if(o=a.anEdge,!(o.winding<=0))do i+=(o.Org.s-o.Dst.s)*(o.Org.t+o.Dst.t),o=o.Lnext;while(o!==a.anEdge);if(i<0){for(e=t.next;e!==t;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]}},n.prototype.projectPolygon_=function(){var r=this.mesh.vHead,e=[0,0,0],t,o,i=!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),i=!0),t=this.sUnit,o=this.tUnit;var a=this.longAxis_(e);t[a]=0,t[(a+1)%3]=1,t[(a+2)%3]=0,o[a]=0,o[(a+1)%3]=0,o[(a+2)%3]=e[a]>0?1:-1;for(var s=r.next;s!==r;s=s.next)s.s=this.dot_(s.coords,t),s.t=this.dot_(s.coords,o);i&&this.checkOrientation_();for(var l=!0,c=r.next;c!==r;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))},n.prototype.addWinding_=function(r,e){r.winding+=e.winding,r.Sym.winding+=e.Sym.winding},n.prototype.tessellateMonoRegion_=function(r,e){var t,o;if(t=e.anEdge,!(t.Lnext!==t&&t.Lnext.Lnext!==t))throw"Mono region invalid";for(;ve.vertLeq(t.Dst,t.Org);t=t.Lprev);for(;ve.vertLeq(t.Org,t.Dst);t=t.Lnext);o=t.Lprev;for(var i=void 0;t.Lnext!==o;)if(ve.vertLeq(t.Dst,o.Org)){for(;o.Lnext!==t&&(ve.edgeGoesLeft(o.Lnext)||ve.edgeSign(o.Org,o.Dst,o.Lnext.Dst)<=0);)i=r.connect(o.Lnext,o),o=i.Sym;o=o.Lprev}else{for(;o.Lnext!==t&&(ve.edgeGoesRight(t.Lprev)||ve.edgeSign(t.Dst,t.Org,t.Lprev.Org)>=0);)i=r.connect(t,t.Lprev),t=i.Sym;t=t.Lnext}if(o.Lnext===t)throw"Mono region invalid";for(;o.Lnext.Lnext!==t;)i=r.connect(o.Lnext,o),o=i.Sym;return!0},n.prototype.tessellateInterior_=function(r){for(var e,t=r.fHead.next;t!==r.fHead;t=e)if(e=t.next,t.inside&&!this.tessellateMonoRegion_(r,t))return!1;return!0},n.prototype.discardExterior_=function(r){for(var e,t=r.fHead.next;t!==r.fHead;t=e)e=t.next,t.inside||r.zapFace(t)},n.prototype.setWindingNumber_=function(r,e,t){for(var o,i=r.eHead.next;i!==r.eHead;i=o)o=i.next,i.Rface.inside!==i.Lface.inside?i.winding=i.Lface.inside?e:-e:t?r.delete(i):i.winding=0},n.prototype.getNeighbourFace_=function(r){return!r.Rface||!r.Rface.inside?-1:r.Rface.n},n.prototype.outputPolymesh_=function(r,e,t,o){var i,a=0,s=0,l;t>3&&r.mergeConvexFaces(t);for(var c=r.vHead.next;c!==r.vHead;c=c.next)c.n=-1;for(var u=r.fHead.next;u!==r.fHead;u=u.next)if(u.n=-1,!!u.inside){i=u.anEdge,l=0;do{var c=i.Org;c.n===-1&&(c.n=s,s++),l++,i=i.Lnext}while(i!==u.anEdge);if(l>t)throw"Face vertex greater that support polygon";u.n=a,++a}this.elementCount=a,e===bt.CONNECTED_POLYGONS&&(a*=2),this.elements=[],this.elements.length=a*t,this.vertexCount=s,this.vertices=[],this.vertices.length=s*o,this.vertexIndices=[],this.vertexIndices.length=s;for(var c=r.vHead.next;c!==r.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=r.fHead.next;u!==r.fHead;u=u.next)if(!!u.inside){i=u.anEdge,l=0;do{var c=i.Org;this.elements[d++]=c.n,l++,i=i.Lnext}while(i!==u.anEdge);for(var h=l;h<t;++h)this.elements[d++]=-1;if(e===bt.CONNECTED_POLYGONS){i=u.anEdge;do this.elements[d++]=this.getNeighbourFace_(i),i=i.Lnext;while(i!==u.anEdge);for(var f=l;f<t;++f)this.elements[d++]=-1}}},n.prototype.outputContours_=function(r,e){var t,o,i=0,a=0;this.vertexCount=0,this.elementCount=0;for(var s=r.fHead.next;s!==r.fHead;s=s.next)if(!!s.inside){o=t=s.anEdge;do this.vertexCount++,t=t.Lnext;while(t!==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;i=0;for(var s=r.fHead.next;s!==r.fHead;s=s.next)if(!!s.inside){a=0,o=t=s.anEdge;do this.vertices[l++]=t.Org.coords[0],this.vertices[l++]=t.Org.coords[1],e>2&&(this.vertices[l++]=t.Org.coords[2]),this.vertexIndices[c++]=this.vertexIdCallback?this.vertexIdCallback(t):t.Org.idx,a++,t=t.Lnext;while(t!==o);this.elements[u++]=i,this.elements[u++]=a,i+=a}},n.prototype.addContour=function(r,e){this.mesh===null&&(this.mesh=new Gx),r<2&&(r=2),r>3&&(r=3);for(var t=null,o=0;o<e.length;o+=r)t===null?(t=this.mesh.makeEdge(),this.mesh.splice(t,t.Sym)):(this.mesh.splitEdge(t),t=t.Lnext),t.Org.coords[0]=e[o+0],t.Org.coords[1]=e[o+1],r>2?t.Org.coords[2]=e[o+2]:t.Org.coords[2]=0,t.Org.idx=this.vertexIndexCounter++,this.edgeCreateCallback&&this.edgeCreateCallback(t),t.winding=1,t.Sym.winding=-1},n.prototype.tesselate=function(r,e,t,o,i,a){if(r===void 0&&(r=We.ODD),e===void 0&&(e=bt.POLYGONS),a===void 0&&(a=!0),this.vertices=[],this.elements=[],this.vertexIndices=[],this.vertexIndexCounter=0,i&&(this.normal[0]=i[0],this.normal[1]=i[1],this.normal[2]=i[2]),this.windingRule=r,o<2&&(o=2),o>3&&(o=3),!this.mesh)return!1;this.projectPolygon_(),BA.computeInterior(this,a);var s=this.mesh;return e===bt.BOUNDARY_CONTOURS?this.setWindingNumber_(s,1,!0):this.tessellateInterior_(s),a&&s.check(),e===bt.BOUNDARY_CONTOURS?this.outputContours_(s,o):this.outputPolymesh_(s,e,t,o),!0},n}();function ro(n){var r=n.windingRule,e=r===void 0?We.ODD:r,t=n.elementType,o=t===void 0?bt.POLYGONS:t,i=n.polySize,a=i===void 0?3:i,s=n.vertexSize,l=s===void 0?2:s,c=n.normal,u=c===void 0?[0,0,1]:c,p=n.contours,d=p===void 0?[]:p,h=n.strict,f=h===void 0?!0:h,m=n.debug,y=m===void 0?!1:m;if(!d&&f)throw new Error("Contours can't be empty");if(!!d){var g=new LA;n.edgeCreateCallback&&(g.edgeCreateCallback=n.edgeCreateCallback),n.vertexIdCallback&&(g.vertexIdCallback=n.vertexIdCallback);for(var v=0;v<d.length;v++)g.addContour(l||2,d[v]);return g.tesselate(e,o,a,l,u,f),{vertices:g.vertices,vertexIndices:g.vertexIndices,vertexCount:g.vertexCount,elements:g.elements,elementCount:g.elementCount,mesh:y?g.mesh:void 0}}}var pk=We.ODD,fk=We.NONZERO,hk=We.POSITIVE,mk=We.NEGATIVE,yk=We.ABS_GEQ_TWO,gk=bt.POLYGONS,xk=bt.CONNECTED_POLYGONS,bk=bt.BOUNDARY_CONTOURS;var oo=require("three");var Su=class{constructor(r=256,e=!1){this.capacity=r,this.size=0,this.debug=e,this.debug&&console.log(`allocating with cap ${r}`);let t=r*Su.eSize;this.buffer=new ArrayBuffer(t);let o=Float32Array.BYTES_PER_ELEMENT,i=0;this.positions=new Float32Array(this.buffer,i*o,3*r),i+=3*r,this.normals=new Float32Array(this.buffer,i*o,3*r),i+=3*r,this.uvs=new Float32Array(this.buffer,i*o,2*r)}realloc(r,e=!1){if(r<this.size)throw Error("cannot shrink buffer");if(r<=this.capacity&&!e)return;this.debug&&console.log(`resizing from ${this.capacity} \u2192 ${r}`);let t=r*Su.eSize,o=new ArrayBuffer(t),i=Float32Array.BYTES_PER_ELEMENT,a=0,s=new Float32Array(o,a*i,3*r);a+=3*r;let l=new Float32Array(o,a*i,3*r);a+=3*r;let c=new Float32Array(o,a*i,2*r);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=r}get(r=1){let e=this.size+r;if(e>this.capacity){let o=this.capacity;for(;e>o;)o*=2;this.realloc(o)}let t=this.size;return this.size=e,t}reserve(r){let e=this.size+r;e>this.capacity&&this.realloc(e)}shrink(){this.debug&&console.log(`shrinking ${this.capacity} \u2192 ${this.size}`),this.realloc(this.size,!0)}},dl=Su;dl.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var qx=_i(Wx()),pl={vertices:[160,160,-160,160,-160,-160,160,-160],vertexIndices:[1,0,3,2],vertexCount:4,elements:[0,4],elementCount:1,mesh:void 0},tf={vertices:[],vertexIndices:[],vertexCount:0,elements:[],elementCount:0,mesh:void 0},rf={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},ef=(n,r)=>([e,t])=>(t<e&&(t+=r),(n>=e?n:n+r)<=t),Dn=class extends oo.BufferGeometry{constructor(e,t,o=0,i=12,a=3,s=We.ODD,l=!1){super();this.forPathBevel=l;this.type="ShapeGeometry";this.vertexCache={};this._shape=e,this._depth=t,this._curveSegments=i,this._bevelSegmentsInput=a;let c=this._shape.extractShapePointsToFlatArray([],i),u=this._shape.shapeHoles.map(A=>{let N=A.extractShapePointsToFlatArray([],i),E=[];for(let B=N.length-1;B>=1;B-=2){let V=N[B-1],j=N[B-0];E.push(V,j)}return E}),p=[],d=[];for(let A=0;A<c.length;A+=2)d.push([c[A],c[A+1]]);p.push(d);for(let A=0;A<u.length;A++){let N=u[A],E=[];for(let B=0;B<N.length;B+=2)E.push([N[B],N[B+1]]);p.push(E)}let h;e.isText?h=new oo.Box2().setFromPoints(e.points.map(N=>N.position)).getSize(new oo.Vector2).length()*.1:p[0].length===0?h=o:h=(0,qx.default)(p).distance,o<=0?(this._bevel=0,this._bevelSegments=0):(this._bevel=Math.min(o,h,t/2),this._bevelSegments=Math.floor(a));let f;try{f=ro({windingRule:s,elementType:bt.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[c]})}catch{f=pl}let m;try{m=ro({windingRule:We.ODD,elementType:bt.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...u]})}catch{m=tf}if(!f)throw new Error("error generating geometry");let y=f.elementCount;if(m){f.elementCount+=m.elementCount;for(let A=0;A<m.elements.length;A++){let N=m.elements[A],E=A%2===0?f.vertexCount:0;f.elements.push(N+E)}for(let A=0;A<m.vertexIndices.length;A++){let N=m.vertexIndices[A],E=f.vertexCount;f.vertexIndices.push(N+E)}for(let A=0;A<m.vertices.length;A++){let N=m.vertices[A];f.vertices.push(N)}}let g=1/0,v=-1/0,O=1/0,P=-1/0;for(let A=0,N=f.vertexCount;A<N;A++){let E=A*2,B=f.vertices[E+0],V=f.vertices[E+1];B<g&&(g=B),B>v&&(v=B),V<O&&(O=V),V>P&&(P=V)}this._minX=g,this._minY=O,this._width=v-g,this._height=P-O,this._buffer=new dl(this._computeBufferEstimatedSize(f));let S=[],T=[];for(let A=f.elementCount-1;A>=0;A--){let N=A>=y,E=A*2,B=f.elements[E+0],V=f.elements[E+1],j=B+V,R={start:B,count:V,normals:[],continuous:[],concave:[]},W=B,F=j-1,k=B+1,H=this._shape.roundedCurves.length;do{let te=W-B,Y=f.vertices[F*2+0],ee=f.vertices[F*2+1],K=f.vertices[W*2+0],q=f.vertices[W*2+1],ue=f.vertices[k*2+0],le=f.vertices[k*2+1],ne=K-Y,ce=q-ee,ae=Math.sqrt(ne*ne+ce*ce);ne/=ae,ce/=ae;let me=K-ue,fe=q-le,he=Math.sqrt(me*me+fe*fe);me/=he,fe/=he,R.normals[te*2+0]=-fe,R.normals[te*2+1]=me,R.concave[te]=ne*fe-ce*me>0;let xe=f.vertexIndices[W];if(Array.isArray(xe))R.continuous[te]=!1;else{let[ye,C]=this._shape.getCurveIndexFromVertexId(xe-1,!0);if(C>0&&C<1)R.continuous[te]=!0;else{let ie=C===1?ye+1:ye-1;ie=(ie+H)%H;let Re=C===1?0:1,Fe=this._shape.roundedCurves[ye].getTangent(C),Ve=this._shape.roundedCurves[ie].getTangent(Re);R.continuous[te]=Fe.dot(Ve)>.95}}N&&(R.normals[te*2+0]*=-1,R.normals[te*2+1]*=-1),[F,W,k]=[W,k,k+1],k>=j&&(k-=V)}while(k!==B+1);let $=[];$.push({bevelI:0,angle:0,size:0,boundary:{vertices:f.vertices.slice(B*2,j*2),vertexCount:V,vertexIndices:new Array(V).fill(!0).map((te,Y)=>[Y,Y]),elements:[0,V],elementCount:1,mesh:null},reverseMap:[],insetPoints:f.vertices.slice(B*2,j*2)});let J=0;for(let te=1;te<=this._bevelSegments;te++){let Y=te/this._bevelSegments*Math.PI/2,ee=(1-Math.cos(Y))*this._bevel,K=[],q=[],ue=[],le=[],ne=0;for(let ae=0;ae<V;ae++){let me=ae*2,fe=(ae-1+V)%V*2,he=f.vertices[R.start*2+me+0],xe=f.vertices[R.start*2+me+1],ye=-R.normals[fe+0]*ee,C=-R.normals[fe+1]*ee,ie=-R.normals[me+0]*ee,Re=-R.normals[me+1]*ee;if(R.concave[ae]||!R.concave[ae]&&N){let Fe=Math.atan2(C,ye),Ve=Math.atan2(Re,ie);Ve>Fe&&(Ve-=Math.PI*2);let Ce=Ve-Fe;if(R.continuous[ae]||N){let Bt=Fe+Ce/2,Ee=Math.cos(Bt)*ee,Dt=Math.sin(Bt)*ee;K[2*ne+0]=he+Ee*(N?-1:1),K[2*ne+1]=xe+Dt*(N?-1:1),le[ne]=ae,ne++}else{let Bt=Math.max(1,Math.floor(i/4*Math.abs(Ce)/Math.PI));for(let Ee=0;Ee<=Bt;Ee++){let Dt=Fe+Ce*(Ee/Bt),Lt=Math.cos(Dt)*ee,Yn=Math.sin(Dt)*ee;K[2*ne+0]=he+Lt,K[2*ne+1]=xe+Yn,le[ne]=ae,ne++}}}else K[2*ne+0]=he+ye,K[2*ne+1]=xe+C,le[ne]=ae,q[ae]=ne,ne++,K[2*ne+0]=he,K[2*ne+1]=xe,le[ne]=ae,ne++,K[2*ne+0]=he+ie,K[2*ne+1]=xe+Re,le[ne]=ae,ue[ae]=ne,ne++}let ce=ro({windingRule:We.POSITIVE,elementType:bt.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[K],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 ${te}'th loop`);if(!ce.vertexCount){let ae=(te-1)/this._bevelSegments*Math.PI/2;J=(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(!R.continuous[ye]||!R.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}}}$.push({bevelI:te,angle:Y,size:ee,boundary:ce,reverseMap:le,insetPoints:K})}let Z=(te,Y,ee)=>{let K=0,q=te.boundary.vertexIndices.length;for(;K<q&&ee(te.boundary.vertexIndices[Y]);)Y=(Y+1)%q,K++;return K},X=S.length;for(let te=1;te<$.length;te++){let Y=$[te-1],ee=$[te],K=Y.boundary.vertexIndices.length,q=ee.boundary.vertexIndices.length;if(!K||!q)break;let ue=R.concave.length,le=0,ne=ef(le,V);for(;!Y.boundary.vertexIndices.filter(ne).length||!ee.boundary.vertexIndices.filter(ne).length;)le++,ne=ef(le,V);let ce=Y.boundary.vertexIndices.findIndex(ne),ae=ee.boundary.vertexIndices.findIndex(ne);do ce=(ce+1)%K;while(ne(Y.boundary.vertexIndices[ce]));do ae=(ae+1)%q;while(ne(ee.boundary.vertexIndices[ae]));le=(le+1)%V;let me=le,fe=0,he=this._buildBevelVert(R,Y,(ce-1+K)%K,void 0,fe),xe=this._buildBevelVert(R,ee,(ae-1+q)%q,void 0,fe),ye=he,C=xe,ie,Re,Fe=!1;do{fe=(le||ue)/ue,ne=ef(le,V);let Ve=Z(Y,ce,ne),Ce=Z(ee,ae,ne),Bt=Fe;if(Fe=!1,Ve&&!Ce){for(let Ee=0;Ee<Ve;Ee++)ie=this._buildBevelVert(R,Y,(ce+Ee)%K,Ee/(Ve-1),fe),S.push(ye.topN,ie.topP,C.topN),l===!1&&S.push(ie.bottomP,ye.bottomN,C.bottomN),ye=ie;Fe=!0}else if(!Ve&&Ce)for(let Ee=0;Ee<Ce;Ee++)Re=this._buildBevelVert(R,ee,(ae+Ee)%q,Ee/(Ce-1),fe),S.push(C.topN,ye.topP,Re.topP),l===!1&&S.push(ye.bottomP,C.bottomN,Re.bottomP),C=Re;else if(Ve&&Ce)if(ie=this._buildBevelVert(R,Y,ce,0,fe),Re=this._buildBevelVert(R,ee,ae,0,fe),Bt?(S.push(ye.topN,Re.topP,C.topN),S.push(ye.topN,ie.topP,Re.topP),l===!1&&(S.push(Re.bottomP,ye.bottomN,C.bottomN),S.push(Re.bottomP,ie.bottomP,ye.bottomN))):(S.push(C.topN,ye.topN,ie.topP),S.push(C.topN,ie.topP,Re.topP),l===!1&&(S.push(ie.bottomP,ye.bottomN,C.bottomN),S.push(ie.bottomP,C.bottomN,Re.bottomP))),ye=ie,C=Re,Ve===Ce)for(let Ee=1;Ee<Ve;Ee++)ie=this._buildBevelVert(R,Y,(ce+Ee)%K,Ee/(Ve-1),fe),Re=this._buildBevelVert(R,ee,(ae+Ee)%q,Ee/(Ce-1),fe),S.push(ye.topN,ie.topP,C.topN),S.push(C.topN,ie.topP,Re.topP),l===!1&&(S.push(ie.bottomP,ye.bottomN,C.bottomN),S.push(ie.bottomP,C.bottomN,Re.bottomP)),ye=ie,C=Re;else if(Ve>Ce){let Ee=Ve/Ce,Dt=0;for(let Lt=1;Lt<Ve;Lt++)ie=this._buildBevelVert(R,Y,(ce+Lt)%K,Lt/(Ve-1),fe),S.push(ye.topN,ie.topP,C.topN),l===!1&&S.push(ie.bottomP,ye.bottomN,C.bottomN),ye=ie,Lt>(Dt+1)*Ee&&(Dt++,Re=this._buildBevelVert(R,ee,(ae+Dt)%q,Dt/(Ce-1),fe),S.push(C.topN,ie.topP,Re.topP),l===!1&&S.push(ie.bottomP,C.bottomN,Re.bottomP),C=Re)}else{let Ee=Ce/Ve,Dt=0;for(let Lt=1;Lt<Ce;Lt++)Re=this._buildBevelVert(R,ee,(ae+Lt)%q,Lt/(Ce-1),fe),S.push(C.topN,ie.topP,Re.topP),l===!1&&S.push(ie.bottomP,C.bottomN,Re.bottomP),C=Re,Lt>(Dt+1)*Ee&&(Dt++,ie=this._buildBevelVert(R,Y,(ce+Dt)%K,Dt/(Ve-1),fe),S.push(ye.topN,ie.topP,C.topN),l===!1&&S.push(ie.bottomP,ye.bottomN,C.bottomN),ye=ie)}ce=(ce+Ve)%K,ae=(ae+Ce)%q,le=(le+1)%ue}while(le!==me)}if(l===!1&&this._depth>this._bevel*2&&this._buildWall($,R,S),N){let te=[];for(let Y=S.length-1;Y>=X+2;Y-=3){let ee=S[Y-2],K=S[Y-1],q=S[Y-0];te.push(q,K,ee)}S.splice(X,S.length-X,...te)}if(N){let te=[];for(let Y=$[$.length-1].boundary.vertices.length-1;Y>=1;Y-=2){let ee=$[$.length-1].boundary.vertices[Y-1],K=$[$.length-1].boundary.vertices[Y-0];te.push(ee,K)}T.push(te)}if(!N){let te=$[$.length-1],Y;try{Y=ro({windingRule:$.length>1?We.POSITIVE:We.ODD,elementType:bt.POLYGONS,vertexSize:2,strict:!0,contours:[te.insetPoints,...T]})}catch{Y=rf}if(!Y)throw new Error("Error generating geometry for surface");u.length===0&&this._bevel<h&&Object.assign(this,{useNgonForTopBottomFaceDuringBake:!0});for(let ee=0;ee<Y.elementCount*3;ee+=3){let K=this._buildSurfaceVert(Y,Y.elements[ee+0],J),q=this._buildSurfaceVert(Y,Y.elements[ee+1],J),ue=this._buildSurfaceVert(Y,Y.elements[ee+2],J);S.push(K.top,q.top,ue.top),l===!1&&S.push(ue.bottom,q.bottom,K.bottom)}}this.vertexCache={}}this._buffer.shrink();let I=new oo.BufferAttribute(Uint32Array.from(S),1),x=new oo.BufferAttribute(this._buffer.positions,3),_=new oo.BufferAttribute(this._buffer.normals,3),D=new oo.BufferAttribute(this._buffer.uvs,2);x.needsUpdate=!0,_.needsUpdate=!0,D.needsUpdate=!0,I.needsUpdate=!0,this.setAttribute("position",x),this.setAttribute("normal",_),this.setAttribute("uv",D),this.setIndex(I)}_computeBufferEstimatedSize(e){return e.vertexCount*2*(2+this._bevelSegments)}_buildWall(e,t,o){let i=e[0];for(let a=0,s=i.boundary.vertexCount;a<s;a++){let l=this._buildBevelVert(t,i,a),c=this._buildBevelVert(t,i,(a+1)%s);o.push(c.topP,l.topN,l.bottomN),o.push(c.topP,l.bottomN,c.bottomP)}}_buildSurfaceVert(e,t,o){let i=t.toString();if(i in this.vertexCache)return this.vertexCache[i];let a=e.vertices[t*2+0],s=e.vertices[t*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,h={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[i]=h,h}_buildBevelVert(e,t,o,i=1,a){let s=`${t.bevelI}:${o}`;if(s in this.vertexCache&&a!==0&&a!==1&&(!a||a===this.vertexCache[s].pathBevelUCoord))return this.vertexCache[s];let[l,c]=t.boundary.vertexIndices[o],u,p,d,h;l!==c?(p=l,u=c,h=!1,d=e.continuous[p]&&e.continuous[u]):(u=l,p=(u-1+e.count)%e.count,h=e.concave[u]&&t.bevelI>0,d=e.continuous[u]||h);let f=Math.cos(t.angle),m=Math.sin(t.angle),y=o*2,g=u*2,v=p*2,O=t.boundary.vertices[y+0],P=t.boundary.vertices[y+1],S=(1-m)*this._bevel,T=(O-this._minX)/this._width,I=(P-this._minY)/this._height;this.forPathBevel&&(a!==void 0&&(T=a),I=1);let x=e.normals[g+0],_=e.normals[g+1],D=e.normals[v+0],A=e.normals[v+1];if(h){let j=D-x,R=A-_;x=x+j*(1-i),_=_+R*(1-i);let W=Math.sqrt(x*x+_*_);x/=W,_/=W}let N=this.forPathBevel?this._buffer.get(d?1:2):this._buffer.get(d?2:4),E=N*3,B=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[E+0]=O,this._buffer.positions[E+1]=P,this._buffer.positions[E+2]=(this.forPathBevel?this._bevel:this._depth)-S,this._buffer.normals[E+0]=x*f,this._buffer.normals[E+1]=_*f,this._buffer.normals[E+2]=m,this._buffer.uvs[B+0]=T,this._buffer.uvs[B+1]=I,this.forPathBevel===!1&&(this._buffer.positions[E+3]=O,this._buffer.positions[E+4]=P,this._buffer.positions[E+5]=S,this._buffer.normals[E+3]=x*f,this._buffer.normals[E+4]=_*f,this._buffer.normals[E+5]=-m,this._buffer.uvs[B+2]=I,this._buffer.uvs[B+3]=T),d||(this.forPathBevel?(N+=1,E+=3,B+=2):(N+=2,E+=6,B+=4),V.topP=N+0,V.bottomP=N+1,this._buffer.positions[E+0]=O,this._buffer.positions[E+1]=P,this._buffer.positions[E+2]=(this.forPathBevel?this._bevel:this._depth)-S,this._buffer.normals[E+0]=D*f,this._buffer.normals[E+1]=A*f,this._buffer.normals[E+2]=m,this._buffer.uvs[B+0]=T,this._buffer.uvs[B+1]=I,this.forPathBevel===!1&&(this._buffer.positions[E+3]=O,this._buffer.positions[E+4]=P,this._buffer.positions[E+5]=S,this._buffer.normals[E+3]=D*f,this._buffer.normals[E+4]=A*f,this._buffer.normals[E+5]=-m,this._buffer.uvs[B+2]=I,this._buffer.uvs[B+3]=T)),this.vertexCache[s]=V,V}clone(){let e=new Dn(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=jo(this.userData),e}};var Ea=class extends pi.BufferGeometry{constructor(e,t=12,o={}){super();this.type="ShapeGeometry";this.windingRule=We.ODD;this.elementType=bt.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=t,this._triangulationOptions=Object.assign({windingRule:We.ODD,elementType:bt.POLYGONS,polySize:3,vertexSize:2,strict:!0},o);let i=this._shape.extractShapePointsToFlatArray([],this._curveSegments),a=this._shape.shapeHoles.map(f=>f.extractShapePointsToFlatArray([],this._curveSegments)),s,l=!0,c=!0,u,p;for(let f=0,m=i.length/2;f<m;f++){let y=f*2,g=i[y+0],v=i[y+1];if(u!==void 0&&g!==u&&(l=!1),p!==void 0&&v!==p&&(c=!1),u=g,p=v,!l&&!c)break}if(!l&&!c)try{s=ro({contours:[i,...a],windingRule:this._triangulationOptions.windingRule,elementType:this._triangulationOptions.elementType,polySize:this._triangulationOptions.polySize,vertexSize:this._triangulationOptions.vertexSize,strict:this._triangulationOptions.strict})}catch{s=pl}let d=s?.vertexCount??1,h=s?.elementCount??1;if(this._positionAttribute=new pi.BufferAttribute(new Float32Array(d*3),3),this._normalAttribute=new pi.BufferAttribute(new Float32Array(d*3),3),this._uvAttribute=new pi.BufferAttribute(new Float32Array(d*2),2),this._indexAttribute=new pi.BufferAttribute(new Uint32Array(h*3),1),s){let f=1/0,m=-1/0,y=1/0,g=-1/0;for(let P=0,S=d;P<S;P++){let T=P*2,I=s.vertices[T+0],x=s.vertices[T+1];I<f&&(f=I),I>m&&(m=I),x<y&&(y=x),x>g&&(g=x)}let v=m-f,O=g-y;for(let P=0,S=d;P<S;P++){let T=P*2,I=s.vertices[T+0],x=s.vertices[T+1],_=(I-f)/v,D=(x-y)/O;this._positionAttribute.setXYZ(P,I,x,0),this._normalAttribute.setXYZ(P,0,0,1),this._uvAttribute.setXY(P,_,D)}for(let P=0,S=h;P<S;P++){let T=P*3,I=s.elements[T+0],x=s.elements[T+1],_=s.elements[T+2];this._indexAttribute.setX(T+0,I),this._indexAttribute.setX(T+1,x),this._indexAttribute.setX(T+2,_)}}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 Ea(this._shape,this._curveSegments);return e.userData=jo(this.userData),e}};var _a=class extends Dn{constructor(e,t,o=0,i=12,a=3,s=We.ODD){super(e,t,o,i,a,s);this.type="ShapeGeometry"}_computeBufferEstimatedSize(e){return e.vertexCount*2*(2+this._bevelSegments)}_buildWall(e,t,o){let i=e[0];for(let a=0,s=i.boundary.vertexCount;a<s;a++){let l=this._buildBevelVert(t,i,a),c=this._buildBevelVert(t,i,(a+1)%s);o.push(c.topP,l.topN,l.bottomN),o.push(c.topP,l.bottomN,c.bottomP)}}clone(){let e=new _a(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=jo(this.userData),e}};var xr=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,subdivisions:40,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3,windingRule:We.ODD},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??0),a=n.shape??r?.shape,s=a?.roundness??e.roundness;a!==void 0&&(a instanceof $e?(a.width!==t||a.height!==o)&&a.applySize(t,o):a=new $e(t,o).fromJSON(a),n.parameters?.roundness!==void 0&&n.parameters?.roundness>0&&a.update());let l=a??new $e(t,o);return{parameters:Object.assign(e,{width:t,height:o,depth:i,roundness:s}),shape:l}}static build(n){let{depth:r,extrudeBevelSize:e,extrudeBevelSegments:t,subdivisions:o,roundness:i,windingRule:a}=n.parameters;n.shape.roundness=i;let s;return r<=0?s=new Ea(n.shape,o,{windingRule:a}):s=new _a(n.shape,r,e,o,t,a),Object.assign(s,{userData:{...n,type:"VectorGeometry"}})}};var no=require("three"),Yx=Math.PI*2,La=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,spikes:64,angle:360,innerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters);return e.angle=no.MathUtils.clamp(e.angle,0,360),{shape:n.shape&&n.shape instanceof $e?n.shape:new $e,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r,height:e,spikes:t,angle:o,innerRadius:i,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}=n.parameters,c=n.shape,u=r*.5,p=e*.5,d=jA(c,u,p,o*Math.PI/180,t,i);c.isClosed=!0,c.update();let h;return o===0?(h=new no.BufferGeometry,h.setAttribute("position",new no.Float32BufferAttribute([],3))):h=xr.create({shape:c,parameters:{subdivisions:d,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}}),Object.assign(h,{userData:{...n,type:"EllipseGeometry"}})}};function jA(n,r,e,t,o,i){if(t>=Yx)return o>30||o%4===0?(UA(n,r,e,i),Math.round(o/4)):$x(n,t,o,r,e,i);t=Math.max(t,.001);let a={x:0,y:e},s=t+Math.PI*.5,l={x:Math.cos(s)*r,y:Math.sin(s)*e},c=zx({px:a.x,py:a.y,cx:l.x,cy:l.y,rx:r,ry:e,largeArcFlag:t>Math.PI,sweepFlag:!0});return o>30||o%c.length===0?FA(n,a.x,a.y,c,o,r,e,i):$x(n,t,o,r,e,i)}function FA(n,r,e,t,o,i,a,s){let l=Math.round(o/t.length);n.addPoint(Ba(r,e));for(let c=0,u=t.length;c<u;c++){let p=t[c],d=n.points[c],h=Ba(p.x,p.y);d.controls[1].position.set(p.x1,p.y1),h.controls[0].position.set(p.x2,p.y2),n.addPoint(h)}return s>0?Xx(n,i,a,s):n.addPoint(Ba(0,0)),l}function $x(n,r,e,t,o,i){let a=-r/e;for(let s=0;s<=e;s++){let l=a*s,c=Math.sin(l)*t,u=Math.cos(l)*o;n.addPoint(Ba(c,u))}return r<Yx?i>0?Xx(n,t,o,i):n.addPoint(Ba(0,0)):(n.removePoint(n.points[n.points.length-1]),i>0&&Kx(n,t,o,i)),1}function UA(n,r,e,t=0,o=0,i=0){let a=.5522847498,s=r*a,l=e*a;n.addPoint(Pu(o-r,i,o-r,i-l,o-r,i+l)),n.addPoint(Pu(o,i+e,o-s,i+e,o+s,i+e)),n.addPoint(Pu(o+r,i,o+r,i+l,o+r,i-l)),n.addPoint(Pu(o,i-e,o+s,i-e,o-s,i-e)),t>0&&Kx(n,r,e,t)}function Ba(n,r){return new to(no.MathUtils.generateUUID(),new no.Vector2(n,r))}function Pu(n,r,e,t,o,i){let a=Ba(n,r);return a.controls[0].position.set(e,t),a.controls[1].position.set(o,i),a}function Xx(n,r,e,t){Qx(n,r,e,t).forEach(i=>n.addPoint(i))}function Kx(n,r,e,t){let o=Qx(n,r,e,t),i=new $e;o.forEach(a=>i.addPoint(a)),i.isClosed=!0,n.shapeHoles.push(i)}function Qx(n,r,e,t){let o=t*r/100,i=o*(Math.abs(e)/Math.abs(r)),a=new no.Vector2(o/r,i/e),s=n.points.map(l=>{let c=l.clone();return c.uuid=no.MathUtils.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}var io=require("three"),Zx=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,revolutions:2,segments:40,pathRadius:10,pathType:0,pathSegments:30,cornerRadius:30,cornerSegments:4},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??t),i=Math.abs(e.depth??t),a=Math.abs(Math.min(t,i))/2;return{parameters:Object.assign(e,{width:t,height:o,depth:i,radius:a,segments:Math.round(e.segments),pathSegments:Math.round(e.pathSegments),cornerSegments:Math.round(e.cornerSegments)})}}static build(n){let{width:r,height:e,depth:t,radius:o,revolutions:i,segments:a,pathRadius:s,pathType:l,pathSegments:c,cornerRadius:u,cornerSegments:p}=n.parameters,d=new fl(!1,r,e,t,o,i,a,s,l,c,u,p);return Object.assign(d,{userData:{...n,type:"HelixGeometry"}})}},of=new io.Uint32BufferAttribute([0,0,0],1),fl=class extends io.BufferGeometry{constructor(r=!0,e=1,t=1,o=1,i=1,a=1,s=1,l=1,c=1,u=1,p=1,d=1){if(super(),a===0)return;let h=r&&a===1;h&&(d=0),p>100&&(p=100),p===0&&(d=0);let f=()=>new io.Vector3,m=new io.Vector3,y=f(),g=f(),v=f(),O,P,S,T,I,x,_,D,A=f(),N=f(),E=f(),B=f(),V=f(),j=f(),R=f(),W=f(),F=t-2*l+.001,k=F/a,H=Math.ceil(s*a),$=H+1,J=F/H,Z=-F/2,X=u+1,te=2*Math.PI/u,Y=Math.PI/2/d,ee=.01,K=Math.min((1-p/100)*l,l-ee),q=l-K,ue=0,le=2,ne=d*le+le,ce=X*ne/le,ae=ce+X*$,me=Math.max(0,X*($+ne)),[fe,he,xe]=[3,3,2].map(mt=>Array(me*mt).fill(0)),ye=[],C=i-l;function ie(mt,nt){let Xr=Math.PI/2;x=nt*J,D=2*Math.PI*(x%k)/k+Xr,x+=Z,_=Math.sin(D)*C,I=Math.cos(D)*C,r?mt.set(I,_,x):mt.set(I,x,_)}ie(m,-1e-10),ie(y,0),A.copy(m),ie(m,1);let Re=m.distanceTo(y),Fe=h?0:q+K,Ve=Re*H+2*Fe,Ce=K,Bt=Ve-Fe;for(let mt=0;mt<=H;mt++){ie(g,mt),W.subVectors(g,A).normalize(),A.copy(g),j.copy(g).setComponent(+r+1,0).normalize(),R.crossVectors(W,j).normalize();let nt=mt===0,Xr=mt===H,Bd=nt?3*Math.PI/2:Y,Ld=nt?Ce:Bt,Kl=nt?X:ae,Xn=nt?0:me-X,wt=W.clone().multiplyScalar(nt?-q:q).add(g),Rd=W.clone().multiplyScalar(nt?-1:1).normalize();for(let Br=0;Br<X;Br++){let Gs=Br*te;if(N.addVectors(m.copy(j).multiplyScalar(l*Math.cos(Gs)),y.copy(R).multiplyScalar(l*Math.sin(Gs))),E.copy(N).normalize(),nt||Xr){h||(ue=Xn+Br,[0,1,2].forEach(rr=>{fe[ue*3+rr]=wt.getComponent(rr),he[ue*3+rr]=Rd.getComponent(rr)}),xe[ue*2]=+Xr,xe[ue*2+1]=Br/u),y.copy(E).multiplyScalar(K),v.addVectors(g,y);for(let rr=0;rr<d;rr++){let Kn=rr*Y+Bd;B.addVectors(m.copy(W).multiplyScalar(q*Math.sin(Kn)),y.copy(E).multiplyScalar(q*Math.cos(Kn))),V.copy(B).normalize(),y.addVectors(v,B),B.normalize(),ue=Kl+rr*X+Br,[0,1,2].forEach(Ii=>{fe[ue*3+Ii]=y.getComponent(Ii),he[ue*3+Ii]=V.getComponent(Ii)});let Ql=+nt+Math.sin(Kn);xe[ue*2]=(Ld+q*Ql)/Ve,xe[ue*2+1]=Br/u}}y.addVectors(g,N),ue=ce+mt*X+Br,[0,1,2].forEach(rr=>{fe[ue*3+rr]=y.getComponent(rr),he[ue*3+rr]=E.getComponent(rr)}),xe[ue*2]=(Fe+mt*Re)/Ve,xe[ue*2+1]=Br/u}}let Ee=$+2*d+le,Dt=1,[Lt,Yn]=[+h,Ee-1];for(let mt=Lt;mt<=Yn-1;mt++){let nt=h&&mt===Yn-1;for(let Xr=0;Xr<X-1;Xr++)O=mt*X+Xr,P=O+1,S=(nt?Xr:O)+X,T=(nt?Xr+1:P)+X,mt===0?ye.push(P,T,S):mt===Ee-2?ye.push(O,P,S):ye.push(O,P,S,P,T,S)}this.setIndex(ye),this.setAttribute("position",new io.Float32BufferAttribute(fe,3)),this.setAttribute("normal",new io.Float32BufferAttribute(he,3)),this.setAttribute("uv",new io.Float32BufferAttribute(xe,2))}getClosedTorusIndicesForBooleanOrSubdiv(){let r=this.userData.parameters,e=Math.ceil(r.tubularSegments),t=r.radialSegments+1,o=Array.from(this.getIndex().array),i,a,s,l,c=6*(e-1)*r.radialSegments,u=e,p=u===e;for(let d=0;d<r.radialSegments;d++)i=u*t+d,a=i+1,s=(p?d:i)+t,l=(p?d+1:a)+t,o[c++]=i,o[c++]=a,o[c++]=s,o[c++]=a,o[c++]=l,o[c++]=s;return o.length=c,of.array=o,of.count=o.length,of}};var Jx=require("three");var e0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,detail:0,corner:0,cornerSides:4},n.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(n){let{width:r,height:e,depth:t,detail:o,corner:i,cornerSides:a}=n.parameters,s=o===0&&i!==0?new hl(r*.5,i,a):new Jx.IcosahedronGeometry(r*.5,o);return s.scale(1,e/r,t/r),Object.assign(s,{userData:{...n,type:"IcosahedronGeometry"}})}},hl=class extends Mn{constructor(r=1,e=.2,t=4){let o=(1+Math.sqrt(5))/2,i=[-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(i,a,s,r,e,t),this.type=s}static fromJSON(r){return new hl(r.radius,r.corner,r.cornerSides)}};var Ou=require("three"),t0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){(n.parameters?.points??[]).forEach(t=>{Array.isArray(t)&&(t.x=t[0],t.y=t[1])});let e=Object.assign({},r?.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}]},n.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(n){let{points:r,segments:e,verticalSegments:t}=n.parameters,o=new Ou.Shape;o.moveTo(r[0].x,r[0].y),o.bezierCurveTo(r[1].x,r[1].y,r[2].x,r[2].y,r[3].x,r[3].y);let i=new Ou.LatheGeometry(o.extractPoints(t).shape,e);return i.rotateZ(Math.PI),Object.assign(i,{userData:{...n,type:"LatheGeometry"}})}};var Co=require("three");var Ko=require("three");var pe=require("three"),Oo=new pe.Matrix4,nf=new pe.Object3D,Cu=new pe.Vector3,En=class extends pe.EventDispatcher{constructor(){super(),this.uuid=pe.MathUtils.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(r){let e=new pe.Matrix3().getNormalMatrix(r);for(let t=0,o=this.vertices.length;t<o;t++)this.vertices[t].applyMatrix4(r);for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t];i.normal.applyMatrix3(e).normalize();for(let a=0,s=i.vertexNormals.length;a<s;a++)i.vertexNormals[a].applyMatrix3(e).normalize()}return this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this.verticesNeedUpdate=!0,this.normalsNeedUpdate=!0,this}rotateX(r){return Oo.makeRotationX(r),this.applyMatrix4(Oo),this}rotateY(r){return Oo.makeRotationY(r),this.applyMatrix4(Oo),this}rotateZ(r){return Oo.makeRotationZ(r),this.applyMatrix4(Oo),this}translate(r,e,t){return Oo.makeTranslation(r,e,t),this.applyMatrix4(Oo),this}scale(r,e,t){return Oo.makeScale(r,e,t),this.applyMatrix4(Oo),this}lookAt(r){return nf.lookAt(r),nf.updateMatrix(),this.applyMatrix4(nf.matrix),this}fromBufferGeometry(r){let e=this,t=r.index!==null?r.index:void 0,o=r.attributes;if(o.position===void 0)return console.error("THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion."),this;let i=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<i.count;d++)e.vertices.push(new pe.Vector3().fromBufferAttribute(i,d)),s!==void 0&&e.colors.push(new pe.Color().fromBufferAttribute(s,d));function u(d,h,f,m){let y=s===void 0?[]:[e.colors[d].clone(),e.colors[h].clone(),e.colors[f].clone()],g=a===void 0?[]:[new pe.Vector3().fromBufferAttribute(a,d),new pe.Vector3().fromBufferAttribute(a,h),new pe.Vector3().fromBufferAttribute(a,f)],v=new Ra(d,h,f,g,y,m);e.faces.push(v),l!==void 0&&e.faceVertexUvs[0].push([new pe.Vector2().fromBufferAttribute(l,d),new pe.Vector2().fromBufferAttribute(l,h),new pe.Vector2().fromBufferAttribute(l,f)]),c!==void 0&&e.faceVertexUvs[1].push([new pe.Vector2().fromBufferAttribute(c,d),new pe.Vector2().fromBufferAttribute(c,h),new pe.Vector2().fromBufferAttribute(c,f)])}let p=r.groups;if(p.length>0)for(let d=0;d<p.length;d++){let h=p[d],f=h.start,m=h.count;for(let y=f,g=f+m;y<g;y+=3)t!==void 0?u(t.getX(y),t.getX(y+1),t.getX(y+2),h.materialIndex):u(y,y+1,y+2,h.materialIndex)}else if(t!==void 0)for(let d=0;d<t.count;d+=3)u(t.getX(d),t.getX(d+1),t.getX(d+2));else for(let d=0;d<i.count;d+=3)u(d,d+1,d+2);return this.computeFaceNormals(),r.boundingBox!==null&&(this.boundingBox=r.boundingBox.clone()),r.boundingSphere!==null&&(this.boundingSphere=r.boundingSphere.clone()),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(Cu).negate(),this.translate(Cu.x,Cu.y,Cu.z),this}normalize(){this.computeBoundingSphere();let r=this.boundingSphere.center,e=this.boundingSphere.radius,t=e===0?1:1/e,o=new pe.Matrix4;return o.set(t,0,0,-t*r.x,0,t,0,-t*r.y,0,0,t,-t*r.z,0,0,0,1),this.applyMatrix4(o),this}computeFaceNormals(){let r=new pe.Vector3,e=new pe.Vector3;for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t],a=this.vertices[i.a],s=this.vertices[i.b],l=this.vertices[i.c];r.subVectors(l,s),e.subVectors(a,s),r.cross(e),r.normalize(),i.normal.copy(r)}}computeVertexNormals(r=!0){let e=new Array(this.vertices.length);for(let t=0,o=this.vertices.length;t<o;t++)e[t]=new pe.Vector3;if(r){let t=new pe.Vector3,o=new pe.Vector3;for(let i=0,a=this.faces.length;i<a;i++){let s=this.faces[i],l=this.vertices[s.a],c=this.vertices[s.b],u=this.vertices[s.c];t.subVectors(u,c),o.subVectors(l,c),t.cross(o),e[s.a].add(t),e[s.b].add(t),e[s.c].add(t)}}else{this.computeFaceNormals();for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t];e[i.a].add(i.normal),e[i.b].add(i.normal),e[i.c].add(i.normal)}}for(let t=0,o=this.vertices.length;t<o;t++)e[t].normalize();for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t],a=i.vertexNormals;a.length===3?(a[0].copy(e[i.a]),a[1].copy(e[i.b]),a[2].copy(e[i.c])):(a[0]=e[i.a].clone(),a[1]=e[i.b].clone(),a[2]=e[i.c].clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeFlatVertexNormals(){this.computeFaceNormals();for(let r=0,e=this.faces.length;r<e;r++){let t=this.faces[r],o=t.vertexNormals;o.length===3?(o[0].copy(t.normal),o[1].copy(t.normal),o[2].copy(t.normal)):(o[0]=t.normal.clone(),o[1]=t.normal.clone(),o[2]=t.normal.clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeMorphNormals(){for(let e=0,t=this.faces.length;e<t;e++){let o=this.faces[e];o.__originalFaceNormal?o.__originalFaceNormal.copy(o.normal):o.__originalFaceNormal=o.normal.clone(),o.__originalVertexNormals||(o.__originalVertexNormals=[]);for(let i=0,a=o.vertexNormals.length;i<a;i++)o.__originalVertexNormals[i]?o.__originalVertexNormals[i].copy(o.vertexNormals[i]):o.__originalVertexNormals[i]=o.vertexNormals[i].clone()}let r=new En;r.faces=this.faces;for(let e=0,t=this.morphTargets.length;e<t;e++){if(!this.morphNormals[e]){this.morphNormals[e]={},this.morphNormals[e].faceNormals=[],this.morphNormals[e].vertexNormals=[];let i=this.morphNormals[e].faceNormals,a=this.morphNormals[e].vertexNormals;for(let s=0,l=this.faces.length;s<l;s++){let c=new pe.Vector3,u={a:new pe.Vector3,b:new pe.Vector3,c:new pe.Vector3};i.push(c),a.push(u)}}let o=this.morphNormals[e];r.vertices=this.morphTargets[e].vertices,r.computeFaceNormals(),r.computeVertexNormals();for(let i=0,a=this.faces.length;i<a;i++){let s=this.faces[i],l=o.faceNormals[i],c=o.vertexNormals[i];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,t=this.faces.length;e<t;e++){let o=this.faces[e];o.normal=o.__originalFaceNormal,o.vertexNormals=o.__originalVertexNormals}}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new pe.Box3),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new pe.Sphere),this.boundingSphere.setFromPoints(this.vertices)}merge(r,e,t=0){if(!(r&&r.isGeometry)){console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",r);return}let o,i=this.vertices.length,a=this.vertices,s=r.vertices,l=this.faces,c=r.faces,u=this.colors,p=r.colors;e!==void 0&&(o=new pe.Matrix3().getNormalMatrix(e));for(let d=0,h=s.length;d<h;d++){let m=s[d].clone();e!==void 0&&m.applyMatrix4(e),a.push(m)}for(let d=0,h=p.length;d<h;d++)u.push(p[d].clone());for(let d=0,h=c.length;d<h;d++){let f=c[d],m,y,g=f.vertexNormals,v=f.vertexColors,O=new Ra(f.a+i,f.b+i,f.c+i);O.normal.copy(f.normal),o!==void 0&&O.normal.applyMatrix3(o).normalize();for(let P=0,S=g.length;P<S;P++)m=g[P].clone(),o!==void 0&&m.applyMatrix3(o).normalize(),O.vertexNormals.push(m);O.color.copy(f.color);for(let P=0,S=v.length;P<S;P++)y=v[P],O.vertexColors.push(y.clone());O.materialIndex=f.materialIndex+t,l.push(O)}for(let d=0,h=r.faceVertexUvs.length;d<h;d++){let f=r.faceVertexUvs[d];this.faceVertexUvs[d]===void 0&&(this.faceVertexUvs[d]=[]);for(let m=0,y=f.length;m<y;m++){let g=f[m],v=[];for(let O=0,P=g.length;O<P;O++)v.push(g[O].clone());this.faceVertexUvs[d].push(v)}}}mergeMesh(r){if(!(r&&r.isMesh)){console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",r);return}r.matrixAutoUpdate&&r.updateMatrix(),this.merge(r.geometry,r.matrix)}mergeVertices(r=4){let e={},t=[],o=[],i=Math.pow(10,r);for(let l=0,c=this.vertices.length;l<c;l++){let u=this.vertices[l],p=Math.round(u.x*i)+"_"+Math.round(u.y*i)+"_"+Math.round(u.z*i);e[p]===void 0?(e[p]=l,t.push(this.vertices[l]),o[l]=t.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-t.length;return this.vertices=t,s}setFromPoints(r){this.vertices=[];for(let e=0,t=r.length;e<t;e++){let o=r[e];this.vertices.push(new pe.Vector3(o.x,o.y,o.z||0))}return this}sortFacesByMaterialIndex(){let r=this.faces,e=r.length;for(let l=0;l<e;l++)r[l]._id=l;function t(l,c){return l.materialIndex-c.materialIndex}r.sort(t);let o=this.faceVertexUvs[0],i=this.faceVertexUvs[1],a,s;o&&o.length===e&&(a=[]),i&&i.length===e&&(s=[]);for(let l=0;l<e;l++){let c=r[l]._id;a&&a.push(o[c]),s&&s.push(i[c])}a&&(this.faceVertexUvs[0]=a),s&&(this.faceVertexUvs[1]=s)}toJSON(){let r={metadata:{version:4.5,type:"Geometry",generator:"Geometry.toJSON"}};if(r.uuid=this.uuid,r.type=this.type,this.name!==""&&(r.name=this.name),this.parameters!==void 0){let f=this.parameters;for(let m in f)f[m]!==void 0&&(r[m]=f[m]);return r}let e=[];for(let f=0;f<this.vertices.length;f++){let m=this.vertices[f];e.push(m.x,m.y,m.z)}let t=[],o=[],i={},a=[],s={},l=[],c={};for(let f=0;f<this.faces.length;f++){let m=this.faces[f],y=!0,g=!1,v=this.faceVertexUvs[0][f]!==void 0,O=m.normal.length()>0,P=m.vertexNormals.length>0,S=m.color.r!==1||m.color.g!==1||m.color.b!==1,T=m.vertexColors.length>0,I=0;if(I=u(I,0,0),I=u(I,1,y),I=u(I,2,g),I=u(I,3,v),I=u(I,4,O),I=u(I,5,P),I=u(I,6,S),I=u(I,7,T),t.push(I),t.push(m.a,m.b,m.c),t.push(m.materialIndex),v){let x=this.faceVertexUvs[0][f];t.push(h(x[0]),h(x[1]),h(x[2]))}if(O&&t.push(p(m.normal)),P){let x=m.vertexNormals;t.push(p(x[0]),p(x[1]),p(x[2]))}if(S&&t.push(d(m.color)),T){let x=m.vertexColors;t.push(d(x[0]),d(x[1]),d(x[2]))}}function u(f,m,y){return y?f|1<<m:f&~(1<<m)}function p(f){let m=f.x.toString()+f.y.toString()+f.z.toString();return i[m]!==void 0||(i[m]=o.length/3,o.push(f.x,f.y,f.z)),i[m]}function d(f){let m=f.r.toString()+f.g.toString()+f.b.toString();return s[m]!==void 0||(s[m]=a.length,a.push(f.getHex())),s[m]}function h(f){let m=f.x.toString()+f.y.toString();return c[m]!==void 0||(c[m]=l.length/2,l.push(f.x,f.y)),c[m]}return r.data={},r.data.vertices=e,r.data.normals=o,a.length>0&&(r.data.colors=a),l.length>0&&(r.data.uvs=[l]),r.data.faces=t,r}clone(){return new En().copy(this)}copy(r){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=r.name;let e=r.vertices;for(let d=0,h=e.length;d<h;d++)this.vertices.push(e[d].clone());let t=r.colors;for(let d=0,h=t.length;d<h;d++)this.colors.push(t[d].clone());let o=r.faces;for(let d=0,h=o.length;d<h;d++)this.faces.push(o[d].clone());for(let d=0,h=r.faceVertexUvs.length;d<h;d++){let f=r.faceVertexUvs[d];this.faceVertexUvs[d]===void 0&&(this.faceVertexUvs[d]=[]);for(let m=0,y=f.length;m<y;m++){let g=f[m],v=[];for(let O=0,P=g.length;O<P;O++){let S=g[O];v.push(S.clone())}this.faceVertexUvs[d].push(v)}}let i=r.morphTargets;for(let d=0,h=i.length;d<h;d++){let f={};if(f.name=i[d].name,i[d].vertices!==void 0){f.vertices=[];for(let m=0,y=i[d].vertices.length;m<y;m++)f.vertices.push(i[d].vertices[m].clone())}if(i[d].normals!==void 0){f.normals=[];for(let m=0,y=i[d].normals.length;m<y;m++)f.normals.push(i[d].normals[m].clone())}this.morphTargets.push(f)}let a=r.morphNormals;for(let d=0,h=a.length;d<h;d++){let f={};if(a[d].vertexNormals!==void 0){f.vertexNormals=[];for(let m=0,y=a[d].vertexNormals.length;m<y;m++){let g=a[d].vertexNormals[m],v={};v.a=g.a.clone(),v.b=g.b.clone(),v.c=g.c.clone(),f.vertexNormals.push(v)}}if(a[d].faceNormals!==void 0){f.faceNormals=[];for(let m=0,y=a[d].faceNormals.length;m<y;m++)f.faceNormals.push(a[d].faceNormals[m].clone())}this.morphNormals.push(f)}let s=r.skinWeights;for(let d=0,h=s.length;d<h;d++)this.skinWeights.push(s[d].clone());let l=r.skinIndices;for(let d=0,h=l.length;d<h;d++)this.skinIndices.push(l[d].clone());let c=r.lineDistances;for(let d=0,h=c.length;d<h;d++)this.lineDistances.push(c[d]);let u=r.boundingBox;u!==null&&(this.boundingBox=u.clone());let p=r.boundingSphere;return p!==null&&(this.boundingSphere=p.clone()),this.elementsNeedUpdate=r.elementsNeedUpdate,this.verticesNeedUpdate=r.verticesNeedUpdate,this.uvsNeedUpdate=r.uvsNeedUpdate,this.normalsNeedUpdate=r.normalsNeedUpdate,this.colorsNeedUpdate=r.colorsNeedUpdate,this.lineDistancesNeedUpdate=r.lineDistancesNeedUpdate,this.groupsNeedUpdate=r.groupsNeedUpdate,this}toBufferGeometry(){let r=new af().fromGeometry(this),e=new pe.BufferGeometry,t=new Float32Array(r.vertices.length*3);if(e.setAttribute("position",Tu.call(new pe.BufferAttribute(t,3),r.vertices)),r.normals.length>0){let o=new Float32Array(r.normals.length*3);e.setAttribute("normal",Tu.call(new pe.BufferAttribute(o,3),r.normals))}if(r.colors.length>0){let o=new Float32Array(r.colors.length*3);e.setAttribute("color",r0.call(new pe.BufferAttribute(o,3),r.colors))}if(r.uvs.length>0){let o=new Float32Array(r.uvs.length*2);e.setAttribute("uv",o0.call(new pe.BufferAttribute(o,2),r.uvs))}if(r.uvs2.length>0){let o=new Float32Array(r.uvs2.length*2);e.setAttribute("uv2",o0.call(new pe.BufferAttribute(o,2),r.uvs2))}e.groups=r.groups;for(let o in r.morphTargets){let i=[],a=r.morphTargets[o];for(let s=0,l=a.length;s<l;s++){let c=a[s],u=new pe.Float32BufferAttribute(c.data.length*3,3);u.name=c.name,i.push(Tu.call(u,c.data))}e.morphAttributes[o]=i}if(r.skinIndices.length>0){let o=new pe.Float32BufferAttribute(r.skinIndices.length*4,4);e.setAttribute("skinIndex",n0.call(o,r.skinIndices))}if(r.skinWeights.length>0){let o=new pe.Float32BufferAttribute(r.skinWeights.length*4,4);e.setAttribute("skinWeight",n0.call(o,r.skinWeights))}return r.boundingSphere!==null&&(e.boundingSphere=r.boundingSphere.clone()),r.boundingBox!==null&&(e.boundingBox=r.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(r){return console.warn("THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(r)}dispose(){this.dispatchEvent({type:"dispose"})}static createBufferGeometryFromObject(r){let e=new pe.BufferGeometry,t=r.geometry;if(r.isPoints||r.isLine){let o=new pe.Float32BufferAttribute(t.vertices.length*3,3),i=new pe.Float32BufferAttribute(t.colors.length*3,3);if(e.setAttribute("position",Tu.call(o,t.vertices)),e.setAttribute("color",r0.call(i,t.colors)),t.lineDistances&&t.lineDistances.length===t.vertices.length){let a=new pe.Float32BufferAttribute(t.lineDistances.length,1);e.setAttribute("lineDistance",kA.call(a,t.lineDistances))}t.boundingSphere!==null&&(e.boundingSphere=t.boundingSphere.clone()),t.boundingBox!==null&&(e.boundingBox=t.boundingBox.clone())}else r.isMesh&&(e=t.toBufferGeometry());return e}};En.prototype.isGeometry=!0;var af=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(r){let e=[],t,o,i,a=r.faces;for(o=0;o<a.length;o++){let s=a[o];s.materialIndex!==i&&(i=s.materialIndex,t!==void 0&&(t.count=o*3-t.start,e.push(t)),t={start:o*3,materialIndex:i})}t!==void 0&&(t.count=o*3-t.start,e.push(t)),this.groups=e}fromGeometry(r){let e=r.faces,t=r.vertices,o=r.faceVertexUvs,i=o[0]&&o[0].length>0,a=o[1]&&o[1].length>0,s=r.morphTargets,l=s.length,c;if(l>0){c=[];for(let g=0;g<l;g++)c[g]={name:s[g].name,data:[]};this.morphTargets.position=c}let u=r.morphNormals,p=u.length,d;if(p>0){d=[];for(let g=0;g<p;g++)d[g]={name:u[g].name,data:[]};this.morphTargets.normal=d}let h=r.skinIndices,f=r.skinWeights,m=h.length===t.length,y=f.length===t.length;t.length>0&&e.length===0&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(let g=0;g<e.length;g++){let v=e[g];this.vertices.push(t[v.a],t[v.b],t[v.c]);let O=v.vertexNormals;if(O.length===3)this.normals.push(O[0],O[1],O[2]);else{let S=v.normal;this.normals.push(S,S,S)}let P=v.vertexColors;if(P.length===3)this.colors.push(P[0],P[1],P[2]);else{let S=v.color;this.colors.push(S,S,S)}if(i===!0){let S=o[0][g];S!==void 0?this.uvs.push(S[0],S[1],S[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",g),this.uvs.push(new pe.Vector2,new pe.Vector2,new pe.Vector2))}if(a===!0){let S=o[1][g];S!==void 0?this.uvs2.push(S[0],S[1],S[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",g),this.uvs2.push(new pe.Vector2,new pe.Vector2,new pe.Vector2))}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[g];d[S].data.push(T.a,T.b,T.c)}m&&this.skinIndices.push(h[v.a],h[v.b],h[v.c]),y&&this.skinWeights.push(f[v.a],f[v.b],f[v.c])}return this.computeGroups(r),this.verticesNeedUpdate=r.verticesNeedUpdate,this.normalsNeedUpdate=r.normalsNeedUpdate,this.colorsNeedUpdate=r.colorsNeedUpdate,this.uvsNeedUpdate=r.uvsNeedUpdate,this.groupsNeedUpdate=r.groupsNeedUpdate,r.boundingSphere!==null&&(this.boundingSphere=r.boundingSphere.clone()),r.boundingBox!==null&&(this.boundingBox=r.boundingBox.clone()),this}},Ra=class{constructor(r,e,t,o,i,a=0){this.a=r,this.b=e,this.c=t,this.normal=o&&o.isVector3?o:new pe.Vector3,this.vertexNormals=Array.isArray(o)?o:[],this.color=i&&i.isColor?i:new pe.Color,this.vertexColors=Array.isArray(i)?i:[],this.materialIndex=a}clone(){return new this.constructor().copy(this)}copy(r){this.a=r.a,this.b=r.b,this.c=r.c,this.normal.copy(r.normal),this.color.copy(r.color),this.materialIndex=r.materialIndex;for(let e=0,t=r.vertexNormals.length;e<t;e++)this.vertexNormals[e]=r.vertexNormals[e].clone();for(let e=0,t=r.vertexColors.length;e<t;e++)this.vertexColors[e]=r.vertexColors[e].clone();return this}};function kA(n){return this.array.set(n),this}function r0(n){let r=this.array,e=0;for(let t=0,o=n.length;t<o;t++){let i=n[t];i===void 0&&(console.warn("THREE.BufferAttribute.copyColorsArray(): color is undefined",t),i=new pe.Color),r[e++]=i.r,r[e++]=i.g,r[e++]=i.b}return this}function o0(n){let r=this.array,e=0;for(let t=0,o=n.length;t<o;t++){let i=n[t];i===void 0&&(console.warn("THREE.BufferAttribute.copyVector2sArray(): vector is undefined",t),i=new pe.Vector2),r[e++]=i.x,r[e++]=i.y}return this}function Tu(n){let r=this.array,e=0;for(let t=0,o=n.length;t<o;t++){let i=n[t];i===void 0&&(console.warn("THREE.BufferAttribute.copyVector3sArray(): vector is undefined",t),i=new pe.Vector3),r[e++]=i.x,r[e++]=i.y,r[e++]=i.z}return this}function n0(n){let r=this.array,e=0;for(let t=0,o=n.length;t<o;t++){let i=n[t];i===void 0&&(console.warn("THREE.BufferAttribute.copyVector4sArray(): vector is undefined",t),i=new pe.Vector4),r[e++]=i.x,r[e++]=i.y,r[e++]=i.z,r[e++]=i.w}return this}var HA=["a","b","c"];function WA(n,r){switch(r){case"c":return n.c;case"b":return n.b;case"a":default:return n.a}}function sf(n,r,e){let t=Math.min(n,r),o=Math.max(n,r),i=t+"_"+o;return e.get(i)}function lf(n,r,e,t,o,i){let a=Math.min(n,r),s=Math.max(n,r),l=a+"_"+s,c;if(t.has(l))c=t.get(l);else{let u=e[a],p=e[s];c={a:u,b:p,newEdge:null,faces:[]},t.set(l,c)}c.faces.push(o),i[n].edges.push(c),i[r].edges.push(c)}function qA(n,r,e,t){let o,i,a;for(o=0,i=n.length;o<i;o++)e[o]={edges:[]};for(o=0,i=r.length;o<i;o++)a=r[o],lf(a.a,a.b,n,t,a,e),lf(a.b,a.c,n,t,a,e),lf(a.c,a.a,n,t,a,e)}function Au(n,r,e,t,o){n.push(new Ra(r,e,t,void 0,void 0,o))}function Va(n,r){return Math.abs(r-n)/2+Math.min(n,r)}function Mu(n,r,e,t){n.push([r.clone(),e.clone(),t.clone()])}var Iu=class{constructor(r=1){this.subdivisions=r}modify(r){r instanceof Ko.BufferGeometry?r=new En().fromBufferGeometry(r):r=r.clone(),r.mergeVertices();let e=this.subdivisions;for(;e-- >0;)this._smooth(r);return r.computeFaceNormals(),r.computeVertexNormals(),r}_smooth(r){let e=new Ko.Vector3,t,o,i,a,s,l=r.vertices,c=r.faces,u=r.faceVertexUvs[0],p=u!==void 0&&u.length>0,d=[],h=new Map;qA(l,c,d,h);let f=[],m,y,g,v,O,P,S;for(let ee of Array.from(h.keys())){for(y=h.get(ee),g=new Ko.Vector3,O=3/8,P=1/8,S=y.faces.length,S!=2&&(O=.5,P=0,S!=1),g.addVectors(y.a,y.b).multiplyScalar(O),e.set(0,0,0),a=0;a<S;a++){for(v=y.faces[a],s=0;s<3&&(m=l[WA(v,HA[s])],!(m!==y.a&&m!==y.b));s++);m&&e.add(m)}e.multiplyScalar(P),g.add(e),y.newEdge=f.length,f.push(g)}let T,I,x,_,D,A,N,E=[];for(o=0,i=l.length;o<i;o++){for(A=l[o],D=d[o].edges,t=D.length,t==3?T=3/16:t>3&&(T=3/(8*t)),I=1-t*Number(T),x=T,t<=2&&(t==2?(I=3/4,x=1/8):t==1||t==0),N=A.clone().multiplyScalar(I),e.set(0,0,0),a=0;a<t;a++)_=D[a],m=_.a!==A?_.a:_.b,e.add(m);e.multiplyScalar(Number(x)),N.add(e),E.push(N)}let B=E.concat(f),V=E.length,j,R,W,F=[],k=[],H,$,J,Z,X=new Ko.Vector2,te=new Ko.Vector2,Y=new Ko.Vector2;for(o=0,i=c.length;o<i;o++)v=c[o],j=Number(sf(v.a,v.b,h).newEdge)+V,R=Number(sf(v.b,v.c,h).newEdge)+V,W=Number(sf(v.c,v.a,h).newEdge)+V,Au(F,j,R,W,v.materialIndex),Au(F,v.a,j,W,v.materialIndex),Au(F,v.b,R,j,v.materialIndex),Au(F,v.c,W,R,v.materialIndex),p&&(H=u[o],$=H[0],J=H[1],Z=H[2],X.set(Va($.x,J.x),Va($.y,J.y)),te.set(Va(J.x,Z.x),Va(J.y,Z.y)),Y.set(Va($.x,Z.x),Va($.y,Z.y)),Mu(k,X,te,Y),Mu(k,$,X,Y),Mu(k,J,te,X),Mu(k,Z,Y,te));r.vertices=B,r.faces=F,p&&(r.faceVertexUvs[0]=k)}};var zt=new Co.Vector3,i0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=n.geometry??r?.geometry??new Co.BufferGeometry().copy(new Co.BoxGeometry(100,100,100)),t;r===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(zt),t={width:zt.x,height:zt.y,depth:zt.z,subdivisions:0}):t=r.parameters;let o={...t,...n.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(n){let{width:r,height:e,depth:t,subdivisions:o}=n.parameters,i=n.geometry??new Co.BufferGeometry().copy(new Co.BoxGeometry(100,100,100)),a=i.userData.parameters;a===void 0?(i.computeBoundingBox(),i.boundingBox.getSize(zt)):zt.set(a.width,a.height,a.depth),(r!==zt.x||e!==zt.y||t!==zt.z)&&i.scale(zt.x===0?1:r/zt.x,zt.y===0?1:e/zt.y,zt.z===0?1:t/zt.z);let s=i.originalGeometry;try{o>0?(s===void 0||a?.subdivisions!==o)&&(s===void 0&&(s=i),i=new Iu(o).modify(s).toBufferGeometry()):(s!==void 0&&(i=s),s=void 0,i.getAttribute("normal")===void 0&&i.computeVertexNormals())}catch{s!==void 0&&(i=s),s=void 0,i.getAttribute("normal")===void 0&&i.computeVertexNormals()}return s!==void 0&&Object.assign(i,{originalGeometry:s}),delete n.geometry,Object.assign(i,{userData:{...n,type:"NonParametricGeometry"}})}static loadFromUrl(n,r,e){new Co.BufferGeometryLoader(e).load(n,o=>{let i=this.normalizeInputs({geometry:o});o.boundingBox.getSize(zt);let a=100/zt.x;Object.assign(i.parameters,{width:100,height:zt.y*a,depth:zt.z*a}),r(this.build(i))})}};var Nu=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:3},n.parameters);return{shape:n.shape&&n.shape instanceof $e?n.shape:new $e,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r,height:e,spikes:t,cornerRadius:o,depth:i,extrudeBevelSize:a,extrudeBevelSegments:s}=n.parameters,l=n.shape,c=r*.5,u=e*.5,p=0,d=0,h=2*Math.PI/t;for(let m=0;m<t;m++){let y=h*m,g=p+Math.sin(y)*c,v=d+Math.cos(y)*u;l.addPoint(l.createPoint(g,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 f=xr.create({shape:l,parameters:{roundness:o,depth:i,extrudeBevelSize:a,extrudeBevelSegments:s}});return Object.assign(f,{userData:{...n,type:"PolygonGeometry"}})}};var ke=require("three"),a0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:4,heightSegments:1,cornerRadius:0,cornerSegments:8,openEnded:!1},n.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(n){let{width:r,height:e,depth:t,radialSegments:o,heightSegments:i,openEnded:a,cornerRadius:s,cornerSegments:l}=n.parameters,c=new uf(r*.5,e,o,i,a,s,l);return c.scale(1,1,t/r),Object.assign(c,{userData:{...n,type:"PyramidGeometry"}})}};function ml(n,r,e){e.x=n.x*r.x,e.y=n.y,e.z=n.x*r.y}function cf(n,r,e,t,o,i){let a=r.clone().sub(n),s=e.clone().sub(n),l=a.angleTo(s);if(a.normalize(),s.normalize(),t===o){let c=a.add(s).normalize();i.copy(n).addScaledVector(c,t/Math.sin(l/2))}else{let c=a.angleTo(s);i.copy(n),i.addScaledVector(a,o/Math.sin(c)),i.addScaledVector(s,t/Math.sin(c))}}function $A(n,r,e){let t=n.clone().sub(r),o=e.clone().sub(r);return t.projectOnVector(o),t.add(r)}var uf=class extends ke.BufferGeometry{constructor(r=.5,e=1,t=4,o=1,i=!1,a=0,s=4){super(),t=Math.floor(Math.max(3,t)),o=Math.floor(o),s=Math.floor(s);let l=[],c=[],u=[],p=[],d=0,h=e/2,f=Math.PI/t,m=r*Math.cos(Math.PI/t),y=2*Math.PI/t,g=(t-2)*Math.PI/t,v=Math.PI-g,O=new ke.Vector3(0,-h,0),P=new ke.Vector3(0,h,0),S=new ke.Vector2(r,-h),T=new ke.Vector2(m,-h),I=new ke.Vector2(0,P.y).sub(T),x=new ke.Vector2(0,P.y).sub(S),_=new ke.Vector2(I.y,-I.x).normalize(),D=new ke.Vector2(x.y,-x.x).normalize(),N=r*Math.cos(Math.PI/t)*Math.tan((Math.PI-I.angle())/2)-1e-8;a=Math.min(a,N);let E;{let k=new ke.Vector3(_.x,_.y,0),H=new ke.Vector3(Math.cos(y)*k.x,k.y,Math.sin(y)*k.x);E=k.angleTo(H)}let B=a/Math.tan((Math.PI-I.angle())/2),V=a/Math.tan((Math.PI-E)/2),j=new ke.Vector3;if(!i){c.push(O.x,O.y,O.z),u.push(0,-1,0),p.push(0,0);let k=d++,H=[],$=S.clone(),J=B/Math.cos(Math.PI/t);$.x-=J;for(let Z=0;Z<t;Z++){let X=Z/t*Math.PI*2+f,te=new ke.Vector2(Math.sin(X),Math.cos(X));ml($,te,j),c.push(j.x,j.y,j.z),u.push(0,-1,0),p.push(0,0),H.push(d++)}for(let Z=0;Z<H.length;Z++)l.push(H[Z],k,H[(Z+1)%H.length])}let R=[];{let k=new ke.Vector3,H=new ke.Vector3,$=new ke.Vector3,J=new ke.Vector3,Z=new ke.Vector3,X=new ke.Vector3;for(let te=0;te<t;te++){let Y=te/t*Math.PI*2+f,ee=(te+.5)/t*Math.PI*2+f,K=(te+1)/t*Math.PI*2+f,q=new ke.Vector2(Math.sin(Y),Math.cos(Y)),ue=new ke.Vector2(Math.sin(ee),Math.cos(ee)),le=new ke.Vector2(Math.sin(K),Math.cos(K));ml(S,q,H),ml(S,le,$),ml(_,ue,k),cf(P,H,$,V,V,J),c.push(J.x,J.y,J.z),cf(H,P,$,V,B,Z),c.push(Z.x,Z.y,Z.z),cf($,H,P,B,V,X),c.push(X.x,X.y,X.z),u.push(k.x,k.y,k.z),u.push(k.x,k.y,k.z),u.push(k.x,k.y,k.z),p.push(0,0),p.push(0,0),p.push(0,0);let ne=d++,ce=d++,ae=d++;if(l.push(ne,ce,ae),a>0){{let he=H.clone().add($).multiplyScalar(.5),xe=P.clone().sub(he).normalize(),C=O.clone().sub(he).normalize().add(xe).normalize().multiplyScalar(-1),ie=X.clone().sub(Z);W(he,ie,C,I.angle())}let me,fe;{let he=new ke.Vector3;ml(D,le,he);let xe=X.clone().add(J).multiplyScalar(.5);xe=$A(xe,$,P);let ye=X.clone().sub(J);[me,fe]=W(xe,ye,he,E,J.y)}{let he=me,xe=he.clone().setY(0).normalize(),ye=new ke.Vector3(0,-1,0),C=xe.clone().cross(ye);F(he,xe,ye,C)}R.concat(fe);{let he=I.angle(),xe=Math.PI-he,ye=P.clone();ye.y-=a/Math.sin(he-Math.PI/2);let C=new ke.Vector3,ie=[];for(let Fe=0;Fe<s;Fe++){let Ve=[],Ce=Math.PI/2-xe*Fe/s,Bt=Math.cos(Ce),Ee=Math.sin(Ce),Dt=ee;for(let Lt=0;Lt<=Fe;Lt++){let Yn=Math.cos(Dt),mt=Math.sin(Dt);k.x=Bt*mt,k.y=Ee,k.z=Bt*Yn,C.copy(ye).addScaledVector(k,a),c.push(C.x,C.y,C.z),u.push(k.x,k.y,k.z),p.push(0,0),Ve.push(d++),Dt+=Math.PI*2/Fe/t}ie.push(Ve)}fe.reverse(),ie.push(fe);let Re=ie.length-1;for(let Fe=0;Fe<Re;Fe++){let Ve=ie[Fe],Ce=ie[Fe+1],Bt=Ve.length-1;l.push(Ce[1],Ve[0],Ce[0]);for(let Ee=1;Ee<=Bt;Ee++)l.push(Ve[Ee],Ve[Ee-1],Ce[Ee]),l.push(Ce[Ee+1],Ve[Ee],Ce[Ee])}}}}}this.setIndex(l),this.setAttribute("position",new ke.Float32BufferAttribute(c,3)),this.setAttribute("normal",new ke.Float32BufferAttribute(u,3)),this.setAttribute("uv",new ke.Float32BufferAttribute(p,2));function W(k,H,$,J,Z){let X=-J/2,te=(Math.PI-J)/2,Y=H.clone().normalize().cross($);k.addScaledVector($,-a/Math.sin(te));let ee=new ke.Vector3,K=new ke.Vector3,q=1,ue=d,le=[];for(let ne=0;ne<=s;ne++){let ce=X+ne/s*J;K.set(0,0,0),K.addScaledVector(Y,Math.sin(ce)),K.addScaledVector($,Math.cos(ce));for(let ae=0;ae<=q;ae++){let me=ae/q-.5;if(ee.copy(k),ee.addScaledVector(H,me),ee.addScaledVector(K,a),Z!=null){let fe=Math.max(0,ee.y-Z);ee.addScaledVector(H,-fe/H.y)}c.push(ee.x,ee.y,ee.z),u.push(K.x,K.y,K.z),p.push(0,0),ae===0&&le.push(d),d++}}for(let ne=0;ne<s;ne++)for(let ce=0;ce<q;ce++){let ae=ue+ce+(q+1)*ne,me=ae+(q+1),fe=me+1,he=ae+1;l.push(ae,me,he),l.push(me,fe,he)}return[k.clone().addScaledVector(H,.5),le]}function F(k,H,$,J){let Z=Math.PI/2,X=x.angle()-Z,te=[],Y=new ke.Vector3,ee=new ke.Vector3;for(let q=0;q<=s;q++){let ue=[],le=q/s;for(let ne=0;ne<=q;ne++){let ae=((q?ne/q:0)-.5)*v,me=Math.cos(ae),fe=Math.sin(ae),he=Math.atan(Math.tan(X)*me),xe=(Z+he)*le,ye=Math.cos(xe),C=Math.sin(xe);Y.set(0,0,0),Y.addScaledVector(H,C*me),Y.addScaledVector($,ye),Y.addScaledVector(J,C*fe),ee.copy(k).addScaledVector(Y,a),c.push(ee.x,ee.y,ee.z),u.push(Y.x,Y.y,Y.z),p.push(0,0),ue.push(d++)}te.push(ue)}let K=te.length-1;for(let q=0;q<K;q++){let ue=te[q],le=te[q+1],ne=ue.length-1;l.push(ue[0],le[1],le[0]);for(let ce=1;ce<=ne;ce++)l.push(ue[ce-1],ue[ce],le[ce]),l.push(ue[ce],le[ce+1],le[ce])}}}};var za=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,cornerRadius:[0,0,0,0],cornerType:1,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters),t=Object.assign(r?.ui??{enabledIndieCorners:!1},n.ui);return{shape:n.shape&&n.shape instanceof $e?n.shape:new $e,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)}),ui:t}}static build(n){let r=n.shape,{width:e,height:t,cornerRadius:o,cornerType:i,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}=n.parameters,c={x:e*.5,y:t*.5},u={x:-c.x,y:-c.y},p={x:c.x,y:c.y};function d(P,S,T){return S>e&&T>t?Math.min(P*e/S,P*t/T):S>e?P*e/S:T>t?P*t/T:P}let h=[];h[0]=o[0]===0?0:d(o[0],o[0]+o[3],o[0]+o[1]),h[1]=o[1]===0?0:d(o[1],o[1]+o[2],o[1]+o[0]),h[2]=o[2]===0?0:d(o[2],o[2]+o[1],o[2]+o[3]),h[3]=o[3]===0?0:d(o[3],o[3]+o[0],o[3]+o[2]);let f=u.x,m=p.x,y=p.y,g=u.y;r.addPoint(r.createPoint(f,y)),r.addPoint(r.createPoint(m,y)),r.addPoint(r.createPoint(m,g)),r.addPoint(r.createPoint(f,g)),r.isClosed=!0;let v=!0;for(let P=0,S=r.points.length;P<S;P++)r.points[P].roundness=h[P],P>0&&h[P]!==h[P-1]&&(v=!1);v&&(r.roundness=h[0]),r.useCubicForRoundedCorners=i!==1,r.update();let O=xr.create({shape:r,parameters:{depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}});return Object.assign(O,{userData:{...n,type:"RectangleGeometry"}})}};var Qo=require("three"),s0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:180},n.parameters);return e.thetaLength=Qo.MathUtils.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(n){let{width:r=100,height:e=r,depth:t=r,widthSegments:o=64,heightSegments:i=64,phiStart:a,phiLength:s,thetaStart:l,thetaLength:c}=n.parameters,u;return c===0?(u=new Qo.BufferGeometry,u.setAttribute("position",new Qo.Float32BufferAttribute([],3))):u=new Qo.SphereGeometry(.5*r,o,i,a,s,l,c*Qo.MathUtils.DEG2RAD),u.scale(1,e/r,t/r),Object.assign(u,{userData:{...n,type:"SphereGeometry"}})}};var l0=require("three"),c0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,widthSegments:8,heightSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:0})}}static build(n){let{width:r=100,height:e=r,widthSegments:t=8,heightSegments:o=8}=n.parameters,i=new l0.PlaneGeometry(r,e,t,o);return i.scale(1,1,1),Object.assign(i,{userData:{...n,type:"PlaneGeometry"}})}};var _n=require("three"),u0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,angle:90,cornerRadius:24,cornerSegments:8},n.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(n){let{width:r,height:e,depth:t,angle:o,cornerRadius:i,cornerSegments:a}=n.parameters,s=new df(r,e,t,o,i,a);return Object.assign(s,{userData:{...n,type:"BackdropGeometry"}})}},df=class extends _n.BufferGeometry{constructor(r=1,e=1,t=1,o=90,i=10,a=24){super(),this.type="BackdropGeometry";let s=[],l=[],c=[],u=.001;i==0&&(a=1),a=Math.max(1,Math.floor(a)),i=Math.min(i,100),o=Math.min(180-u,o),o*=Math.PI/180;let p=[],d=Math.PI/2,h=(ee=0,K=0,q=0)=>new _n.Vector3(ee,K,q),f=h(),m=h(),[y,g,v]=[e/2,r/2,t/2],O=-g,P=+g,[S,T,I]=[h(O,-y,+v),h(O,-y,-v),h(O,+y,-v)],x=(ee,K=!1)=>Math.sin(ee-Math.PI/(1+ +K)),_=(ee,K=!1)=>Math.cos(ee-Math.PI/(1+ +K));I.y=Math.sin(o)*e-y;let D=Math.cos(o)*e-v,A=S.z-u;o<=d?(I.z=Math.min(D,A),I.z==A&&(I.y-=(D-A)/Math.tan(d-o))):T.z=Math.min(T.z-D-v,S.z-u),f.subVectors(S,T),m.subVectors(I,T);let N=Math.min(f.length(),m.length())*i/100,E=N*Math.tan(o/2),B=N/Math.cos(o/2),V=f.clone().normalize().add(m.normalize()).setLength(B).add(T);f.set(0,x(o,!0),_(o,!0)),p.push([I,f.clone()]);let j=(Math.PI-o)/a;for(let ee=0;ee<=a;ee++){let K=d+o+ee*j;f.set(0,Math.sin(K)*E,Math.cos(K)*E),f.add(V),m.set(0,x(K),_(K)),p.push([f.clone(),m.clone()])}p.push([S,h(0,1,0)]);let R=Math.sin(j/2)*E*2,W=p.length-1,F=p[0][0].distanceTo(p[1][0]),k=p[W-1][0].distanceTo(p[W][0]),H=F+R*a+k;p[0].push(1);for(let ee=0;ee<=a;ee++)p[ee+1].push(1-(F+ee*R)/H);p[W].push(0);let[$,J,Z]=p[0],X,te,Y;for(let ee=1;ee<p.length;ee++)[X,te,Y]=p[ee],s.push(O,$.y,$.z,O,X.y,X.z,P,$.y,$.z,P,$.y,$.z,O,X.y,X.z,P,X.y,X.z),l.push(0,J.y,J.z,0,te.y,te.z,0,J.y,J.z,0,J.y,J.z,0,te.y,te.z,0,te.y,te.z),c.push(0,Z,0,Y,1,Z,1,Z,0,Y,1,Y),[$,J,Z]=[X,te,Y];this.setAttribute("position",new _n.Float32BufferAttribute(s,3)),this.setAttribute("normal",new _n.Float32BufferAttribute(l,3)),this.setAttribute("uv",new _n.Float32BufferAttribute(c,2))}};var Du=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,innerRadiusPercent:38.19,spikes:5,cornerRadius:0,angle:360,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters);return{shape:n.shape&&n.shape instanceof $e?n.shape:new $e,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r,height:e,innerRadiusPercent:t,spikes:o,cornerRadius:i,angle:a,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}=n.parameters,u=n.shape,p=r*.5,d=e*.5,h=0,f=0,m=a*Math.PI/360/o,y=Math.PI/2*3*-1,g=p*t/100,v=d*t/100;if(o===3&&t===50){m=2*Math.PI/o;for(let P=0;P<o;P++){let S=m*P,T=h+Math.sin(S)*p,I=f+Math.cos(S)*d;u.addPoint(u.createPoint(T,I))}}else for(let P=0;P<o;P++){let S=h+Math.cos(y)*p,T=f+Math.sin(y)*d;u.addPoint(u.createPoint(S,T)),y+=m,S=h+Math.cos(y)*g,T=f+Math.sin(y)*v,P<=o,u.addPoint(u.createPoint(S,T)),y+=m}u.isClosed=!0;for(let P=0,S=u.points.length;P<S;P++)u.points[P].roundness=i;u.roundness=i,u.update();let O=xr.create({shape:u,parameters:{roundness:i,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(O,{userData:{...n,type:"StarGeometry"}})}};var d0=require("three"),p0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0},n.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(n){let{width:r,height:e}=n.parameters,t=new d0.PlaneGeometry(r,e);return Object.assign(t,{userData:{...n,type:"TextFrameGeometry"}})}};var Ga=require("three");var f0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:32,tubularSegments:64,arc:360,cornerRadius:30,cornerSegments:8},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.round(Math.abs(e.depth??e.width*.25));return{parameters:Object.assign(e,{width:t,height:o,depth:i})}}static build(n){let{width:r,height:e,depth:t,radialSegments:o,tubularSegments:i,arc:a,cornerRadius:s,cornerSegments:l}=n.parameters,c=YA(r,e,t,r*.5,a,i,0,0,o,s,l);return c.scale(1,e/r,1),Object.assign(c,{userData:{...n,type:"TorusGeometry"}})}};function YA(n,r,e,t,o,i,a,s,l,c,u){[r,e]=[e,r],a=r/2;let p=Ga.MathUtils.clamp(o/360,0,1);if(p===0){let d=new Ga.BufferGeometry;return d.setAttribute("position",new Ga.Float32BufferAttribute([],3)),d}return p===1&&(c=0),new fl(!0,n,r,e,t,p,i,a,s,l,c,u)}var h0=require("three"),m0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,tubularSegments:64,radialSegments:32,p:2,q:3},n.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(n){let{width:r,tube:e,tubularSegments:t,radialSegments:o,p:i,q:a}=n.parameters,s=r*.5;s!==e&&(s-=e);let l=new h0.TorusKnotGeometry(s,e,t,o,i,a);return Object.assign(l,{userData:{...n,type:"TorusKnotGeometry"}})}};var y0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1,isRect:!1},n.parameters);return{shape:n.shape&&n.shape instanceof $e?n.shape:new $e,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(n){let{width:r=100,height:e,cornerRadius:t,depth:o,extrudeBevelSize:i,extrudeBevelSegments:a,isRect:s}=n.parameters,l=n.shape,c=r*.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,h=l.points.length;d<h;d++)l.points[d].roundness=t;l.roundness=t,l.update();let p=xr.create({shape:l,parameters:{roundness:t,depth:o,extrudeBevelSize:i,extrudeBevelSegments:a}});return Object.assign(p,{userData:{...n,type:"TriangleGeometry"}})}};var Me=require("three");function g0(n,r){let e=2*Math.PI;return(n%e+e)%e===(r%e+e)%e}var XA=new Me.Matrix4,KA=new Me.Matrix4;function QA(n,r,e){let t=[new Me.Vector3,new Me.Vector3,new Me.Vector3],o=[new Me.Vector3,new Me.Vector3,new Me.Vector3];return n.extractBasis(t[0],t[1],t[2]),r.extractBasis(o[0],o[1],o[2]),t.forEach((i,a)=>{let s=o[a],l=Me.MathUtils.lerp(i.length(),s.length(),e);i.lerp(s,e).setLength(l)}),new Me.Matrix4().makeBasis(t[0],t[1],t[2])}var x0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,height:100,depth:1,subdivisions:12,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??0),a=r?.shapeData??La.create({parameters:xp}).userData.shape;return{path:n.path??ha.defaultData(),parameters:Object.assign(e,{width:t,height:o,depth:i,extrusion:{...Qc,...e.extrusion}}),shapeData:a}}static build(n){if(n.path.points.length>=2){let e=new pf(n);return Object.assign(e,{userData:{...n,type:"PathGeometry"}})}else return Object.assign(new Me.BufferGeometry,{userData:{...n,type:"PathGeometry"}})}},pf=class extends Me.BufferGeometry{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)||!g0(e.twist,0)||e.startScale!==e.endScale}build(){let e=this._extractPathPoints();if(e.length<2)return;let t=this._computeBasisMatrices(e),{depth:o,offset:i}=this.inputs.parameters.extrusion;o=Math.max(0,Math.min(o,1)),i=Math.max(0,Math.min(i,1));let a=this.inputs.path.isClosed?e.length:e.length-1,s=Math.floor(i*a),l=this.inputs.path.isClosed?Math.ceil((o+i)*a):Math.ceil(Math.min(1,o+i)*a),c=Math.min(Math.max(2,l-s+1),a+2),u=[],p=[];for(let F=0;F<c;F++){let k=this.inputs.path.isClosed?(F+s)%e.length:Math.min(F+s,e.length-1);u.push(e[k].clone()),p.push(t[k].clone())}let d=(F,k,H)=>{u[F]=u[F].clone().lerp(u[k],H),p[F]=QA(p[F],p[k],H)},h=0,f=i*a%1;(!this.inputs.path.isClosed||o<=1)&&(f||i===0)&&(h=f,d(0,1,h));let m=0,y=(i+o)*a%1;if((this.inputs.path.isClosed&&o<=1||!this.inputs.path.isClosed&&i+o<1)&&y&&(m=y,d(u.length-1,u.length-2,1-m)),o===0){let F=u.length-1;u[F].copy(u[0]),p[F].copy(p[0])}this._applyPathModifiers(p,h,m);let{bevel:g,bevelSides:v}=this.inputs.parameters.extrusion,O=g>0?this.inputs.parameters.extrusion.capType:"flat",P=5;this.inputs.parameters.extrusion.shape.type==="Custom"&&(P=this.inputs.parameters.extrusion.shape.shapeQuality==="low"?5:12);let{regions:S,infos:T,vertices:I}=this._computeShapePoints(P),x=0,_;O==="round"&&(_=new Dn(this.inputs.shapeData,2*g,g,P,v,void 0,!0),x=_.getAttribute("position").count);let D=0,A=0;T.sort((F,k)=>F.start-k.start),T.forEach(F=>{F.verticesStart=D,F.verticesCount=F.continuous.reduce((k,H,$)=>k+($===0||!H?2:1),0),A+=F.verticesCount,D=A});let N=A*c,E,B=0;if(this._isOpenEnded()&&O==="flat"){try{E=ro({windingRule:We.ODD,elementType:bt.POLYGONS,polySize:3,vertexSize:2,strict:!0,contours:S})}catch{E=rf}B=E.vertexCount}let V=N+2*B+x*2,j=N+2*B,R={positions:new Float32Array(V*3),normals:new Float32Array(V*3),uvs:new Float32Array(V*2)},W=[];if(T.forEach(F=>{this._extrudeRegion(F,I,p,u,R,W,this._isGeometryClosed()&&!this._isOpenEnded())}),E&&(this._closeEnd(E,N,W,R,p[0],u[0],!1),this._closeEnd(E,N+B,W,R,p[p.length-1],u[u.length-1],!0)),_){R.positions.set(_.getAttribute("position").array,j*3),R.normals.set(_.getAttribute("normal").array,j*3),R.uvs.set(_.getAttribute("uv").array,j*2);for(let $=j;$<j+x;$++)R.uvs[$*2+1]=1e-4;let F=W.length;W.push(..._.getIndex().array.map($=>$+j)),j+=x,R.positions.set(_.getAttribute("position").array,j*3),R.normals.set(_.getAttribute("normal").array,j*3),R.uvs.set(_.getAttribute("uv").array,j*2);let k=W.length;W.push(..._.getIndex().array.map($=>$+j)),this.setAttribute("position",new Me.BufferAttribute(R.positions,3)),this.setAttribute("normal",new Me.BufferAttribute(R.normals,3)),this.setAttribute("uv",new Me.BufferAttribute(R.uvs,2)),this.setIndex(W);let H=XA;H.copy(p[p.length-1]).setPosition(u[u.length-1]),this.applyMatrix4OnRange(H,j,V),H.copy(p[0]).setPosition(u[0]).multiply(KA.makeScale(1,1,-1)),this.applyMatrix4OnRange(H,j-x,j),this.reverseIndicesOnRange(F,k)}else this.setAttribute("position",new Me.BufferAttribute(R.positions,3)),this.setAttribute("normal",new Me.BufferAttribute(R.normals,3)),this.setAttribute("uv",new Me.BufferAttribute(R.uvs,2)),this.setIndex(W)}_extractPathPoints(){let t=xu(this.inputs.path).getPoints(this.inputs.path.subdivisions);if(t.length<2)return[];let o=[t[0]];return t.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 t=[],o=e.length,i=this.inputs.path.isClosed,a=new Me.Vector3,s=new Me.Vector3,l=new Me.Vector3,c=new Me.Vector3,u=new Me.Vector3(0,1,0);for(let y=0;y<o;y++){let g=e[y],v;y===0?v=i?e[e.length-2]:g.clone().multiplyScalar(2).sub(e[1]):v=e[y-1];let O;y===o-1?O=i?e[1]:g.clone().multiplyScalar(2).sub(e[y-1]):O=e[y+1];let P=g.clone().sub(v).normalize(),S=O.clone().sub(g).normalize(),T=P.clone().add(S).normalize();l.copy(T),y===0&&(T.equals(u)||T.clone().negate().equals(u))&&u.set(0,0,1);let I=u.clone().cross(T).normalize(),x=T.clone().cross(I).normalize();u.copy(x),c.copy(I),y===0&&(a.copy(x),s.copy(T));let _=new Me.Matrix4().makeBasis(I,x,T);t.push(_)}let p=i?s:l,d=i?a:new Me.Vector3(0,1,0),h=p.clone().cross(c).normalize(),f=Math.acos(d.dot(h));if(isNaN(f))return t;let m=d.clone().cross(h);p.dot(m)>0&&(f*=-1);for(let y=1;y<t.length;y++){let g=new Me.Matrix4().makeRotationZ(f*y/t.length);t[y].multiply(g)}return t}_applyPathModifiers(e,t,o){let i=e.length,{angle:a,twist:s,startScale:l,endScale:c}=this.inputs.parameters.extrusion,u=new Me.Matrix4,p=new Me.Matrix4;return e.forEach((d,h)=>{let f=h===0?0:h===i-1?1:(h-t)/(i-(o===0?0:1)-(t+(1-o)));u.makeRotationZ(Me.MathUtils.lerp(a,a+s,f)*Me.MathUtils.DEG2RAD);let m=Me.MathUtils.lerp(l,c,f);p.makeScale(m,m,m),d.multiply(u).multiply(p)}),e}_computeShapePoints(e=12,t=We.ODD){let o=this.inputs.shapeData,i=o.extractShapePointsToFlatArray([],e),a=o.shapeHoles.map(m=>{let y=m.extractShapePointsToFlatArray([],e),g=[];for(let v=y.length-1;v>=1;v-=2){let O=y[v-1],P=y[v-0];g.push(O,P)}return g}),s;try{s=ro({windingRule:t,elementType:bt.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[i]})}catch{s=pl}let l;try{l=ro({windingRule:We.ODD,elementType:bt.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...a]})}catch{l=tf}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],g=m%2===0?s.vertexCount:0;s.elements.push(y+g)}for(let m=0;m<l.vertexIndices.length;m++){let y=l.vertexIndices[m],g=s.vertexCount;s.vertexIndices.push(y+g)}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,h=-1/0;for(let m=0,y=s.vertexCount;m<y;m++){let g=m*2,v=s.vertices[g+0],O=s.vertices[g+1];v<u&&(u=v),v>p&&(p=v),O<d&&(d=O),O>h&&(h=O)}let f=[];for(let m=s.elementCount-1;m>=0;m--){let y=m>=c,g=m*2,v=s.elements[g+0],O=s.elements[g+1],P=v+O,S={start:v,count:O,normals:[],isHole:y,continuous:[],verticesStart:0,verticesCount:0};f.push(S);let T=v,I=P-1,x=v+1,_=o.roundedCurves.length;do{let D=T-v,A=s.vertices[I*2+0],N=s.vertices[I*2+1],E=s.vertices[T*2+0],B=s.vertices[T*2+1],V=s.vertices[x*2+0],j=s.vertices[x*2+1],R=E-A,W=B-N,F=Math.sqrt(R*R+W*W);R/=F,W/=F;let k=E-V,H=B-j,$=Math.sqrt(k*k+H*H);k/=$,H/=$,S.normals[D*2+0]=-H,S.normals[D*2+1]=k;let J=s.vertexIndices[T];if(Array.isArray(J))S.continuous[D]=!1;else{let[Z,X]=o.getCurveIndexFromVertexId(J-1,!0);if(X>0&&X<1)S.continuous[D]=!0;else{let te=X===1?Z+1:Z-1;te=(te+_)%_;let Y=X===1?0:1,ee=o.roundedCurves[Z].getTangent(X),K=o.roundedCurves[te].getTangent(Y);S.continuous[D]=ee.dot(K)>.95}}y&&(S.normals[D*2+0]*=-1,S.normals[D*2+1]*=-1),[I,T,x]=[T,x,x+1],x>=P&&(x-=O)}while(x!==v+1)}return{regions:[i,...a],infos:f,vertices:s.vertices}}_insertVertex(e,t,o,i,a){let s=t*2,l=t*3;e.positions[l+0]=o.x,e.positions[l+1]=o.y,e.positions[l+2]=o.z,e.normals[l+0]=i.x,e.normals[l+1]=i.y,e.normals[l+2]=i.z,e.uvs[s+0]=a.x,e.uvs[s+1]=a.y}_extrudeRegion(e,t,o,i,a,s,l){let c=new Me.Vector3,u=new Me.Vector3,p=new Me.Vector3,d=new Me.Vector3,h=new Me.Vector2;o.forEach((m,y)=>{let g=i[y],v=e.verticesStart*o.length+e.verticesCount*y;for(let O=0;O<e.count;O++){let P=(e.start+O)*2;if(c.set(t[P+0],t[P+1],0),p.copy(c).applyMatrix4(m).add(g),e.continuous[O])d.set(e.normals[O*2+0],e.normals[O*2+1],0);else{let S=O===0?(e.start+e.count-1)*2:P-2;u.set(t[S+0],t[S+1],0),d.copy(c).sub(u),d.set(-d.y,d.x,0),e.isHole||d.negate()}if(d.applyMatrix4(m).normalize(),h.set(O===0?1:O/e.count,y/(o.length-1)),this._insertVertex(a,v,p,d,h),v++,!e.continuous[O]||O===0){if(O===0)d.set(e.normals[O*2+0],e.normals[O*2+1],0),h.set(0,y/(o.length-1));else{let S=O===e.count-1?e.start*2:P+2;u.set(t[S+0],t[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,h),v++}}});let f=o.length-1;for(let m=0;m<f;m++){let y=e.verticesStart*o.length+e.verticesCount*m,g=e.verticesStart*o.length+e.verticesCount*(m+1),v=0;for(let O=0;O<e.count;O++){(!e.continuous[O]||O===0)&&v++;let P=O===e.count-1?0:v+1,S=y+v,T=y+P,I=g+P,x=g+v;e.isHole?s.push(S,I,T,S,x,I):s.push(S,T,I,S,I,x),v++}}}_closeEnd(e,t,o,i,a,s,l){let c=e.vertexCount,u=new Me.Vector3(0,0,l?-1:1).applyMatrix4(a),p=new Me.Vector3,d=new Me.Vector2;for(let f=0;f<c;f++){let m=2*f;p.set(e.vertices[m+0],e.vertices[m+1],0).applyMatrix4(a).add(s),this._insertVertex(i,t+f,p,u,d)}let h=e.elements;for(let f=0;f<e.elementCount;f++){let m=3*f,y=h[m+0]+t,g=h[m+(l?1:2)]+t,v=h[m+(l?2:1)]+t;o.push(y,g,v)}}applyMatrix4OnRange(e,t,o){let i=e.elements,a=new Me.Matrix3().getNormalMatrix(e).elements,s,l,c,u,p=this.attributes.position,d=this.attributes.normal;if(!p||!d)return;let h=p.array,f=d.array,m=p.itemSize;for(let y=t*m,g=o*m;y<g;y+=m){if(y===t)debugger;s=h[y+0],l=h[y+1],c=h[y+2],u=1/(i[3]*s+i[7]*l+i[11]*c+i[15]),h[y+0]=(i[0]*s+i[4]*l+i[8]*c+i[12])*u,h[y+1]=(i[1]*s+i[5]*l+i[9]*c+i[13])*u,h[y+2]=(i[2]*s+i[6]*l+i[10]*c+i[14])*u,s=f[y+0],l=f[y+1],c=f[y+2],f[y+0]=a[0]*s+a[3]*l+a[6]*c,f[y+1]=a[1]*s+a[4]*l+a[7]*c,f[y+2]=a[2]*s+a[5]*l+a[8]*c}p.needsUpdate=!0,d.needsUpdate=!0}reverseIndicesOnRange(e,t){let o=this.index;if(o){for(let i=e;i<t;i+=3){let a=o.getX(i),s=o.getX(i+1),l=o.getX(i+2);o.setXYZ(i,l,s,a)}o.needsUpdate=!0}}};var fi=require("three"),b0=require("three/examples/jsm/utils/BufferGeometryUtils.js");function v0(){let n=new fi.BufferGeometry;return n.setAttribute("position",new fi.BufferAttribute(new Float32Array([]),3)),n.setIndex(new fi.BufferAttribute(new Uint16Array([]),1)),n}var JA=v0().attributes,eM=12,tM=1,ja=class extends fi.BufferGeometry{constructor(e,t){super();this.charWidths=[];this.charCoords=[];this.wrappedText=[];this.isLowResolution=!1;this.vectorShapes=[];Object.assign(this.attributes,JA),this.userData={parameters:e,type:"TextGeometry"};let o=t.getFont(e.font);o?.isLoaded?(this.font=o,this.update(e)):this.updateFont(e.font,t).then(()=>{this.update(e),t?.requestRender()})}async updateFont(e,t){let o=t.getFont(e);o&&(this.font=o,await o.loadingPromise)}update(e){let t=this.font;if(this.userData={parameters:e,type:"TextGeometry"},!t?.isLoaded){console.warn("Cannot update text because its font is not loaded");return}let{width:o,height:i,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l,text:c,textTransform:u}=e,p=au.getDisplayedValue(c),d=u===2?p.toUpperCase():u===3?p.toLowerCase():p,h=rM(e,t,d),{shapes:f,charWidths:m,charCoords:y}=t.generateShapes(h,e),g=(typeof o=="number"?o:1)*.5,v=(typeof i=="number"?i:1)*.5,O=f.map(T=>new $e().fromShape(T,!0));this.vectorShapes=O;let P=O.map(T=>xr.create({shape:T,parameters:{depth:a,extrudeBevelSegments:l,extrudeBevelSize:s,windingRule:a<=0?We.NONZERO:We.ODD,subdivisions:this.isLowResolution&&a>0?tM:eM}})),S=P.length?(0,b0.mergeBufferGeometries)(P):v0();S.translate(-g,v,0),this.dispose(),this.wrappedText=h,this.charCoords=y,this.charWidths=m,this.deleteAttribute("extrudeNormal"),Object.entries(S.attributes).forEach(([T,I])=>{this.setAttribute(T,I)}),this.setIndex(S.index),this.computeBoundingSphere()}clone(){let e=sr(new fi.BufferGeometry,ja.prototype);return e.copy(this),console.log("CloneGeometry",this,e),e}copy(e){return Object.entries(e.attributes).forEach(([t,o])=>{this.setAttribute(t,o)}),this.setIndex(e.index),this.userData={parameters:{...e.userData.parameters},type:"TextGeometry"},this}async setText(e){this.font&&await this.font.loadingPromise,await this.update({...this.userData.parameters,text:e})}get text(){return this.userData.parameters.text??""}};function rM(n,r,e){let t=[""],o="";for(let i of e)o+=i,i===" "||i===`
1
+ "use strict";var RS=Object.create;var js=Object.defineProperty;var VS=Object.getOwnPropertyDescriptor;var zS=Object.getOwnPropertyNames;var GS=Object.getPrototypeOf,jS=Object.prototype.hasOwnProperty;var FS=(n,r,e)=>r in n?js(n,r,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[r]=e;var Zn=(n,r)=>()=>(r||n((r={exports:{}}).exports,r),r.exports),Ch=(n,r)=>{for(var e in r)js(n,e,{get:r[e],enumerable:!0})},Th=(n,r,e,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of zS(r))!jS.call(n,o)&&o!==e&&js(n,o,{get:()=>r[o],enumerable:!(t=VS(r,o))||t.enumerable});return n};var _i=(n,r,e)=>(e=n!=null?RS(GS(n)):{},Th(r||!n||!n.__esModule?js(e,"default",{value:n,enumerable:!0}):e,n)),US=n=>Th(js({},"__esModule",{value:!0}),n);var Jn=(n,r,e)=>(FS(n,typeof r!="symbol"?r+"":r,e),e);var sx=Zn((Ep,ax)=>{(function(n,r){typeof Ep=="object"?ax.exports=r():typeof define=="function"&&define.amd?define(r):n.Alea=r()})(Ep,function(){"use strict";return n.importState=function(e){var t=new n;return t.importState(e),t},n;function n(){return function(e){var t=0,o=0,i=0,a=1;e.length==0&&(e=[+new Date]);var s=r();t=s(" "),o=s(" "),i=s(" ");for(var l=0;l<e.length;l++)t-=s(e[l]),t<0&&(t+=1),o-=s(e[l]),o<0&&(o+=1),i-=s(e[l]),i<0&&(i+=1);s=null;var c=function(){var u=2091639*t+a*23283064365386963e-26;return t=o,o=i,i=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[t,o,i,a]},c.importState=function(u){t=+u[0]||0,o=+u[1]||0,i=+u[2]||0,a=+u[3]||0},c}(Array.prototype.slice.call(arguments))}function r(){var e=4022871197,t=function(o){o=o.toString();for(var i=0;i<o.length;i++){e+=o.charCodeAt(i);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 t.version="Mash 0.9",t}})});var fx=Zn((gu,px)=>{(function(n,r){typeof gu=="object"&&typeof px<"u"?r(gu):typeof define=="function"&&define.amd?define(["exports"],r):r((n=typeof globalThis<"u"?globalThis:n||self).SVDJS={})})(gu,function(n){"use strict";n.SVD=function(r,e,t,o,i){if(e=e===void 0||e,t=t===void 0||t,i=1e-64/(o=o||Math.pow(2,-52)),!r)throw new TypeError("Matrix a is not defined");var a,s,l,c,u,p,d,h,f,m,y,g,v=r[0].length,O=r.length;if(O<v)throw new TypeError("Invalid matrix: m < n");for(var P=[],S=[],T=[],I=e==="f"?O:v,x=m=d=0;x<O;x++)S[x]=new Array(I).fill(0);for(x=0;x<v;x++)T[x]=new Array(v).fill(0);var E,N=new Array(v).fill(0);for(x=0;x<O;x++)for(a=0;a<v;a++)S[x][a]=r[x][a];for(x=0;x<v;x++){for(P[x]=d,f=0,l=x+1,a=x;a<O;a++)f+=Math.pow(S[a][x],2);if(f<i)d=0;else for(h=(p=S[x][x])*(d=p<0?Math.sqrt(f):-Math.sqrt(f))-f,S[x][x]=p-d,a=l;a<v;a++){for(f=0,s=x;s<O;s++)f+=S[s][x]*S[s][a];for(p=f/h,s=x;s<O;s++)S[s][a]=S[s][a]+p*S[s][x]}for(N[x]=d,f=0,a=l;a<v;a++)f+=Math.pow(S[x][a],2);if(f<i)d=0;else{for(h=(p=S[x][x+1])*(d=p<0?Math.sqrt(f):-Math.sqrt(f))-f,S[x][x+1]=p-d,a=l;a<v;a++)P[a]=S[x][a]/h;for(a=l;a<O;a++){for(f=0,s=l;s<v;s++)f+=S[a][s]*S[x][s];for(s=l;s<v;s++)S[a][s]=S[a][s]+f*P[s]}}m<(y=Math.abs(N[x])+Math.abs(P[x]))&&(m=y)}if(t)for(x=v-1;0<=x;x--){if(d!==0){for(h=S[x][x+1]*d,a=l;a<v;a++)T[a][x]=S[x][a]/h;for(a=l;a<v;a++){for(f=0,s=l;s<v;s++)f+=S[x][s]*T[s][a];for(s=l;s<v;s++)T[s][a]=T[s][a]+f*T[s][x]}}for(a=l;a<v;a++)T[x][a]=0,T[a][x]=0;T[x][x]=1,d=P[x],l=x}if(e){if(e==="f")for(x=v;x<O;x++){for(a=v;a<O;a++)S[x][a]=0;S[x][x]=1}for(x=v-1;0<=x;x--){for(l=x+1,d=N[x],a=l;a<I;a++)S[x][a]=0;if(d!==0){for(h=S[x][x]*d,a=l;a<I;a++){for(f=0,s=l;s<O;s++)f+=S[s][x]*S[s][a];for(p=f/h,s=x;s<O;s++)S[s][a]=S[s][a]+p*S[s][x]}for(a=x;a<O;a++)S[a][x]=S[a][x]/d}else for(a=x;a<O;a++)S[a][x]=0;S[x][x]=S[x][x]+1}}for(o*=m,s=v-1;0<=s;s--)for(var M=0;M<50;M++){for(E=!1,l=s;0<=l;l--){if(Math.abs(P[l])<=o){E=!0;break}if(Math.abs(N[l-1])<=o)break}if(!E){for(u=0,c=l-(f=1),x=l;x<s+1&&(p=f*P[x],P[x]=u*P[x],!(Math.abs(p)<=o));x++)if(d=N[x],N[x]=Math.sqrt(p*p+d*d),u=d/(h=N[x]),f=-p/h,e)for(a=0;a<O;a++)y=S[a][c],g=S[a][x],S[a][c]=y*u+g*f,S[a][x]=-y*f+g*u}if(g=N[s],l===s){if(g<0&&(N[s]=-g,t))for(a=0;a<v;a++)T[a][s]=-T[a][s];break}for(m=N[l],p=(((y=N[s-1])-g)*(y+g)+((d=P[s-1])-(h=P[s]))*(d+h))/(2*h*y),d=Math.sqrt(p*p+1),p=((m-g)*(m+g)+h*(y/(p<0?p-d:p+d)-h))/m,x=l+(f=u=1);x<s+1;x++){if(d=P[x],y=N[x],h=f*d,d*=u,g=Math.sqrt(p*p+h*h),p=m*(u=p/(P[x-1]=g))+d*(f=h/g),d=-m*f+d*u,h=y*f,y*=u,t)for(a=0;a<v;a++)m=T[a][x-1],g=T[a][x],T[a][x-1]=m*u+g*f,T[a][x]=-m*f+g*u;if(g=Math.sqrt(p*p+h*h),p=(u=p/(N[x-1]=g))*d+(f=h/g)*y,m=-f*d+u*y,e)for(a=0;a<O;a++)y=S[a][x-1],g=S[a][x],S[a][x-1]=y*u+g*f,S[a][x]=-y*f+g*u}P[l]=0,P[s]=p,N[s]=m}for(x=0;x<v;x++)N[x]<o&&(N[x]=0);return{u:S,q:N,v:T}},n.VERSION="1.1.1",Object.defineProperty(n,"__esModule",{value:!0})})});var kx=Zn((Qp,Zp)=>{(function(n,r){typeof Qp=="object"&&typeof Zp<"u"?Zp.exports=r():typeof define=="function"&&define.amd?define(r):(n=n||self,n.TinyQueue=r())})(Qp,function(){"use strict";var n=function(t,o){if(t===void 0&&(t=[]),o===void 0&&(o=r),this.data=t,this.length=this.data.length,this.compare=o,this.length>0)for(var i=(this.length>>1)-1;i>=0;i--)this._down(i)};n.prototype.push=function(t){this.data.push(t),this.length++,this._up(this.length-1)},n.prototype.pop=function(){if(this.length!==0){var t=this.data[0],o=this.data.pop();return this.length--,this.length>0&&(this.data[0]=o,this._down(0)),t}},n.prototype.peek=function(){return this.data[0]},n.prototype._up=function(t){for(var o=this,i=o.data,a=o.compare,s=i[t];t>0;){var l=t-1>>1,c=i[l];if(a(s,c)>=0)break;i[t]=c,t=l}i[t]=s},n.prototype._down=function(t){for(var o=this,i=o.data,a=o.compare,s=this.length>>1,l=i[t];t<s;){var c=(t<<1)+1,u=i[c],p=c+1;if(p<this.length&&a(i[p],u)<0&&(c=p,u=i[p]),a(u,l)>=0)break;i[t]=u,t=c}i[t]=l};function r(e,t){return e<t?-1:e>t?1:0}return n})});var Wx=Zn((wk,Jp)=>{"use strict";var wu=kx();wu.default&&(wu=wu.default);Jp.exports=Hx;Jp.exports.default=Hx;function Hx(n,r,e){r=r||1;for(var t,o,i,a,s=0;s<n[0].length;s++){var l=n[0][s];(!s||l[0]<t)&&(t=l[0]),(!s||l[1]<o)&&(o=l[1]),(!s||l[0]>i)&&(i=l[0]),(!s||l[1]>a)&&(a=l[1])}var c=i-t,u=a-o,p=Math.min(c,u),d=p/2;if(p===0){var h=[t,o];return h.distance=0,h}for(var f=new wu(void 0,RA),m=t;m<i;m+=p)for(var y=o;y<a;y+=p)f.push(new Nn(m+d,y+d,d,n));var g=zA(n),v=new Nn(t+c/2,o+u/2,0,n);v.d>g.d&&(g=v);for(var O=f.length;f.length;){var P=f.pop();P.d>g.d&&(g=P,e&&console.log("found best %d after %d probes",Math.round(1e4*P.d)/1e4,O)),!(P.max-g.d<=r)&&(d=P.h/2,f.push(new Nn(P.x-d,P.y-d,d,n)),f.push(new Nn(P.x+d,P.y-d,d,n)),f.push(new Nn(P.x-d,P.y+d,d,n)),f.push(new Nn(P.x+d,P.y+d,d,n)),O+=4)}e&&(console.log("num probes: "+O),console.log("best distance: "+g.d));var S=[g.x,g.y];return S.distance=g.d,S}function RA(n,r){return r.max-n.max}function Nn(n,r,e,t){this.x=n,this.y=r,this.h=e,this.d=VA(n,r,t),this.max=this.d+this.h*Math.SQRT2}function VA(n,r,e){for(var t=!1,o=1/0,i=0;i<e.length;i++)for(var a=e[i],s=0,l=a.length,c=l-1;s<l;c=s++){var u=a[s],p=a[c];u[1]>r!=p[1]>r&&n<(p[0]-u[0])*(r-u[1])/(p[1]-u[1])+u[0]&&(t=!t),o=Math.min(o,GA(n,r,u,p))}return o===0?0:(t?1:-1)*Math.sqrt(o)}function zA(n){for(var r=0,e=0,t=0,o=n[0],i=0,a=o.length,s=a-1;i<a;s=i++){var l=o[i],c=o[s],u=l[0]*c[1]-c[0]*l[1];e+=(l[0]+c[0])*u,t+=(l[1]+c[1])*u,r+=u*3}return r===0?new Nn(o[0][0],o[0][1],0,n):new Nn(e/r,t/r,0,n)}function GA(n,r,e,t){var o=e[0],i=e[1],a=t[0]-o,s=t[1]-i;if(a!==0||s!==0){var l=((n-o)*a+(r-i)*s)/(a*a+s*s);l>1?(o=t[0],i=t[1]):l>0&&(o+=a*l,i+=s*l)}return a=n-o,s=r-i,a*a+s*s}});var sv=Zn((jJ,av)=>{"use strict";function xI(n,r){function e(){this.constructor=n}e.prototype=r.prototype,n.prototype=new e}function Ci(n,r,e,t){this.message=n,this.expected=r,this.found=e,this.location=t,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,Ci)}xI(Ci,Error);Ci.buildMessage=function(n,r){var e={literal:function(c){return'"'+o(c.text)+'"'},class:function(c){var u="",p;for(p=0;p<c.parts.length;p++)u+=c.parts[p]instanceof Array?i(c.parts[p][0])+"-"+i(c.parts[p][1]):i(c.parts[p]);return"["+(c.inverted?"^":"")+u+"]"},any:function(c){return"any character"},end:function(c){return"end of input"},other:function(c){return c.description}};function t(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"+t(u)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(u){return"\\x"+t(u)})}function i(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"+t(u)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(u){return"\\x"+t(u)})}function a(c){return e[c.type](c)}function s(c){var u=new Array(c.length),p,d;for(p=0;p<c.length;p++)u[p]=a(c[p]);if(u.sort(),u.length>0){for(p=1,d=1;p<u.length;p++)u[p-1]!==u[p]&&(u[d]=u[p],d++);u.length=d}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(n)+" but "+l(r)+" found."};function bI(n,r){r=r!==void 0?r:{};var e={},t={svg_path:Gs},o=Gs,i=function(b){if(!b)return[];for(var w=[],L=0;L<b.length;L++)w=w.concat.apply(w,b[L]);var A=w[0];return A&&A.code=="m"&&(delete A.relative,A.code="M"),w},a=function(b,w){return LS(b,w)},s=/^[Mm]/,l=nt(["M","m"],!1,!1),c=function(b,w,L){var A=Di(b,[w]);return L&&(A=A.concat(Di(b=="M"?"L":"l",L[1]))),A},u=/^[Zz]/,p=nt(["Z","z"],!1,!1),d=function(){return Di("Z")},h=/^[Ll]/,f=nt(["L","l"],!1,!1),m=function(b,w){return Di(b,w)},y=/^[Hh]/,g=nt(["H","h"],!1,!1),v=function(b,w){return Di(b,w.map(function(L){return{x:L}}))},O=/^[Vv]/,P=nt(["V","v"],!1,!1),S=function(b,w){return Di(b,w.map(function(L){return{y:L}}))},T=/^[Cc]/,I=nt(["C","c"],!1,!1),x=function(b,w,L){return{x1:b.x,y1:b.y,x2:w.x,y2:w.y,x:L.x,y:L.y}},E=/^[Ss]/,N=nt(["S","s"],!1,!1),M=function(b,w){return{x2:b.x,y2:b.y,x:w.x,y:w.y}},D=/^[Qq]/,_=nt(["Q","q"],!1,!1),B=function(b,w){return{x1:b.x,y1:b.y,x:w.x,y:w.y}},z=/^[Tt]/,U=nt(["T","t"],!1,!1),R=/^[Aa]/,W=nt(["A","a"],!1,!1),j=function(b,w,L,A,V,oe){return{rx:b,ry:w,xAxisRotation:L,largeArc:A,sweep:V,x:oe.x,y:oe.y}},F=function(b,w){return{x:b,y:w}},H=function(b){return b*1},q=function(b){return b.join("")*1},re=/^[01]/,ee=nt(["0","1"],!1,!1),X=function(b){return b=="1"},te=function(){return""},K=",",Z=mt(",",!1),Q=function(b){return b.join("")},$=".",ue=mt(".",!1),le=/^[eE]/,ne=nt(["e","E"],!1,!1),ce=/^[+\-]/,ae=nt(["+","-"],!1,!1),me=/^[0-9]/,fe=nt([["0","9"]],!1,!1),he=function(b){return b.join("")},xe=/^[ \t\n\r]/,ye=nt([" "," ",`
2
+ `,"\r"],!1,!1),C=0,ie=0,Re=[{line:1,column:1}],Fe=0,Ve=[],Ce=0,Bt;if("startRule"in r){if(!(r.startRule in t))throw new Error(`Can't start parsing from rule "`+r.startRule+'".');o=t[r.startRule]}function Ee(){return n.substring(ie,C)}function Dt(){return Xn(ie,C)}function Lt(b,w){throw w=w!==void 0?w:Xn(ie,C),Br([Ld(b)],n.substring(ie,C),w)}function Yn(b,w){throw w=w!==void 0?w:Xn(ie,C),Rd(b,w)}function mt(b,w){return{type:"literal",text:b,ignoreCase:w}}function nt(b,w,L){return{type:"class",parts:b,inverted:w,ignoreCase:L}}function Xr(){return{type:"any"}}function Bd(){return{type:"end"}}function Ld(b){return{type:"other",description:b}}function Kl(b){var w=Re[b],L;if(w)return w;for(L=b-1;!Re[L];)L--;for(w=Re[L],w={line:w.line,column:w.column};L<b;)n.charCodeAt(L)===10?(w.line++,w.column=1):w.column++,L++;return Re[b]=w,w}function Xn(b,w){var L=Kl(b),A=Kl(w);return{start:{offset:b,line:L.line,column:L.column},end:{offset:w,line:A.line,column:A.column}}}function wt(b){C<Fe||(C>Fe&&(Fe=C,Ve=[]),Ve.push(b))}function Rd(b,w){return new Ci(b,null,null,w)}function Br(b,w,L){return new Ci(Ci.buildMessage(b,w),b,w,L)}function Gs(){var b,w,L,A,V;for(b=C,w=[],L=Ue();L!==e;)w.push(L),L=Ue();if(w!==e)if(L=rr(),L===e&&(L=null),L!==e){for(A=[],V=Ue();V!==e;)A.push(V),V=Ue();A!==e?(ie=b,w=i(L),b=w):(C=b,b=e)}else C=b,b=e;else C=b,b=e;return b}function rr(){var b,w,L,A,V,oe;if(b=C,w=Kn(),w!==e){for(L=[],A=C,V=[],oe=Ue();oe!==e;)V.push(oe),oe=Ue();for(V!==e?(oe=Kn(),oe!==e?(V=[V,oe],A=V):(C=A,A=e)):(C=A,A=e);A!==e;){for(L.push(A),A=C,V=[],oe=Ue();oe!==e;)V.push(oe),oe=Ue();V!==e?(oe=Kn(),oe!==e?(V=[V,oe],A=V):(C=A,A=e)):(C=A,A=e)}L!==e?(ie=b,w=a(w,L),b=w):(C=b,b=e)}else C=b,b=e;return b}function Kn(){var b,w,L,A,V,oe;if(b=C,w=Ii(),w!==e){for(L=[],A=C,V=[],oe=Ue();oe!==e;)V.push(oe),oe=Ue();for(V!==e?(oe=Ql(),oe!==e?(V=[V,oe],A=V):(C=A,A=e)):(C=A,A=e);A!==e;){for(L.push(A),A=C,V=[],oe=Ue();oe!==e;)V.push(oe),oe=Ue();V!==e?(oe=Ql(),oe!==e?(V=[V,oe],A=V):(C=A,A=e)):(C=A,A=e)}L!==e?(ie=b,w=a(w,L),b=w):(C=b,b=e)}else C=b,b=e;return b}function Ql(){var b;return b=vS(),b===e&&(b=SS(),b===e&&(b=wS(),b===e&&(b=PS(),b===e&&(b=OS(),b===e&&(b=TS(),b===e&&(b=MS(),b===e&&(b=NS(),b===e&&(b=ES())))))))),b}function Ii(){var b,w,L,A,V,oe,Ei;if(b=C,s.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Ce===0&&wt(l)),w!==e){for(L=[],A=Ue();A!==e;)L.push(A),A=Ue();L!==e?(A=ar(),A!==e?(V=C,oe=dt(),oe===e&&(oe=null),oe!==e?(Ei=gh(),Ei!==e?(oe=[oe,Ei],V=oe):(C=V,V=e)):(C=V,V=e),V===e&&(V=null),V!==e?(ie=b,w=c(w,A,V),b=w):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function vS(){var b,w;return b=C,u.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Ce===0&&wt(p)),w!==e&&(ie=b,w=d()),b=w,b}function SS(){var b,w,L,A;if(b=C,h.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Ce===0&&wt(f)),w!==e){for(L=[],A=Ue();A!==e;)L.push(A),A=Ue();L!==e?(A=gh(),A!==e?(ie=b,w=m(w,A),b=w):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function gh(){var b,w,L,A,V,oe;if(b=C,w=ar(),w!==e){for(L=[],A=C,V=dt(),V===e&&(V=null),V!==e?(oe=ar(),oe!==e?(V=[V,oe],A=V):(C=A,A=e)):(C=A,A=e);A!==e;)L.push(A),A=C,V=dt(),V===e&&(V=null),V!==e?(oe=ar(),oe!==e?(V=[V,oe],A=V):(C=A,A=e)):(C=A,A=e);L!==e?(ie=b,w=a(w,L),b=w):(C=b,b=e)}else C=b,b=e;return b}function wS(){var b,w,L,A;if(b=C,y.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Ce===0&&wt(g)),w!==e){for(L=[],A=Ue();A!==e;)L.push(A),A=Ue();L!==e?(A=xh(),A!==e?(ie=b,w=v(w,A),b=w):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function xh(){var b,w,L,A,V,oe;if(b=C,w=Ni(),w!==e){for(L=[],A=C,V=dt(),V===e&&(V=null),V!==e?(oe=Ni(),oe!==e?(V=[V,oe],A=V):(C=A,A=e)):(C=A,A=e);A!==e;)L.push(A),A=C,V=dt(),V===e&&(V=null),V!==e?(oe=Ni(),oe!==e?(V=[V,oe],A=V):(C=A,A=e)):(C=A,A=e);L!==e?(ie=b,w=a(w,L),b=w):(C=b,b=e)}else C=b,b=e;return b}function PS(){var b,w,L,A;if(b=C,O.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Ce===0&&wt(P)),w!==e){for(L=[],A=Ue();A!==e;)L.push(A),A=Ue();L!==e?(A=xh(),A!==e?(ie=b,w=S(w,A),b=w):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function OS(){var b,w,L,A;if(b=C,T.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Ce===0&&wt(I)),w!==e){for(L=[],A=Ue();A!==e;)L.push(A),A=Ue();L!==e?(A=CS(),A!==e?(ie=b,w=m(w,A),b=w):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function CS(){var b,w,L,A,V,oe;if(b=C,w=Vd(),w!==e){for(L=[],A=C,V=dt(),V===e&&(V=null),V!==e?(oe=Vd(),oe!==e?(V=[V,oe],A=V):(C=A,A=e)):(C=A,A=e);A!==e;)L.push(A),A=C,V=dt(),V===e&&(V=null),V!==e?(oe=Vd(),oe!==e?(V=[V,oe],A=V):(C=A,A=e)):(C=A,A=e);L!==e?(ie=b,w=a(w,L),b=w):(C=b,b=e)}else C=b,b=e;return b}function Vd(){var b,w,L,A,V,oe;return b=C,w=ar(),w!==e?(L=dt(),L===e&&(L=null),L!==e?(A=ar(),A!==e?(V=dt(),V===e&&(V=null),V!==e?(oe=ar(),oe!==e?(ie=b,w=x(w,A,oe),b=w):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e),b}function TS(){var b,w,L,A;if(b=C,E.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Ce===0&&wt(N)),w!==e){for(L=[],A=Ue();A!==e;)L.push(A),A=Ue();L!==e?(A=AS(),A!==e?(ie=b,w=m(w,A),b=w):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function AS(){var b,w,L,A,V,oe;if(b=C,w=zd(),w!==e){for(L=[],A=C,V=dt(),V===e&&(V=null),V!==e?(oe=zd(),oe!==e?(V=[V,oe],A=V):(C=A,A=e)):(C=A,A=e);A!==e;)L.push(A),A=C,V=dt(),V===e&&(V=null),V!==e?(oe=zd(),oe!==e?(V=[V,oe],A=V):(C=A,A=e)):(C=A,A=e);L!==e?(ie=b,w=a(w,L),b=w):(C=b,b=e)}else C=b,b=e;return b}function zd(){var b,w,L,A;return b=C,w=ar(),w!==e?(L=dt(),L===e&&(L=null),L!==e?(A=ar(),A!==e?(ie=b,w=M(w,A),b=w):(C=b,b=e)):(C=b,b=e)):(C=b,b=e),b}function MS(){var b,w,L,A;if(b=C,D.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Ce===0&&wt(_)),w!==e){for(L=[],A=Ue();A!==e;)L.push(A),A=Ue();L!==e?(A=IS(),A!==e?(ie=b,w=m(w,A),b=w):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function IS(){var b,w,L,A,V,oe;if(b=C,w=Gd(),w!==e){for(L=[],A=C,V=dt(),V===e&&(V=null),V!==e?(oe=Gd(),oe!==e?(V=[V,oe],A=V):(C=A,A=e)):(C=A,A=e);A!==e;)L.push(A),A=C,V=dt(),V===e&&(V=null),V!==e?(oe=Gd(),oe!==e?(V=[V,oe],A=V):(C=A,A=e)):(C=A,A=e);L!==e?(ie=b,w=a(w,L),b=w):(C=b,b=e)}else C=b,b=e;return b}function Gd(){var b,w,L,A;return b=C,w=ar(),w!==e?(L=dt(),L===e&&(L=null),L!==e?(A=ar(),A!==e?(ie=b,w=B(w,A),b=w):(C=b,b=e)):(C=b,b=e)):(C=b,b=e),b}function NS(){var b,w,L,A;if(b=C,z.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Ce===0&&wt(U)),w!==e){for(L=[],A=Ue();A!==e;)L.push(A),A=Ue();L!==e?(A=DS(),A!==e?(ie=b,w=m(w,A),b=w):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function DS(){var b,w,L,A,V,oe;if(b=C,w=ar(),w!==e){for(L=[],A=C,V=dt(),V===e&&(V=null),V!==e?(oe=ar(),oe!==e?(V=[V,oe],A=V):(C=A,A=e)):(C=A,A=e);A!==e;)L.push(A),A=C,V=dt(),V===e&&(V=null),V!==e?(oe=ar(),oe!==e?(V=[V,oe],A=V):(C=A,A=e)):(C=A,A=e);L!==e?(ie=b,w=a(w,L),b=w):(C=b,b=e)}else C=b,b=e;return b}function ES(){var b,w,L,A;if(b=C,R.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Ce===0&&wt(W)),w!==e){for(L=[],A=Ue();A!==e;)L.push(A),A=Ue();L!==e?(A=_S(),A!==e?(ie=b,w=m(w,A),b=w):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function _S(){var b,w,L,A,V,oe;if(b=C,w=jd(),w!==e){for(L=[],A=C,V=dt(),V===e&&(V=null),V!==e?(oe=jd(),oe!==e?(V=[V,oe],A=V):(C=A,A=e)):(C=A,A=e);A!==e;)L.push(A),A=C,V=dt(),V===e&&(V=null),V!==e?(oe=jd(),oe!==e?(V=[V,oe],A=V):(C=A,A=e)):(C=A,A=e);L!==e?(ie=b,w=a(w,L),b=w):(C=b,b=e)}else C=b,b=e;return b}function jd(){var b,w,L,A,V,oe,Ei,Ud,Jl,kd,ec,Hd;return b=C,w=bh(),w!==e?(L=dt(),L===e&&(L=null),L!==e?(A=bh(),A!==e?(V=dt(),V===e&&(V=null),V!==e?(oe=Ni(),oe!==e?(Ei=dt(),Ei!==e?(Ud=vh(),Ud!==e?(Jl=dt(),Jl===e&&(Jl=null),Jl!==e?(kd=vh(),kd!==e?(ec=dt(),ec===e&&(ec=null),ec!==e?(Hd=ar(),Hd!==e?(ie=b,w=j(w,A,oe,Ud,kd,Hd),b=w):(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 ar(){var b,w,L,A;return b=C,w=Ni(),w!==e?(L=dt(),L===e&&(L=null),L!==e?(A=Ni(),A!==e?(ie=b,w=F(w,A),b=w):(C=b,b=e)):(C=b,b=e)):(C=b,b=e),b}function bh(){var b,w;return b=C,w=wh(),w===e&&(w=Qn()),w!==e&&(ie=b,w=H(w)),b=w,b}function Ni(){var b,w,L,A;return b=C,w=C,L=Fd(),L===e&&(L=null),L!==e?(A=wh(),A!==e?(L=[L,A],w=L):(C=w,w=e)):(C=w,w=e),w===e&&(w=C,L=Fd(),L===e&&(L=null),L!==e?(A=Qn(),A!==e?(L=[L,A],w=L):(C=w,w=e)):(C=w,w=e)),w!==e&&(ie=b,w=q(w)),b=w,b}function vh(){var b,w;return b=C,re.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Ce===0&&wt(ee)),w!==e&&(ie=b,w=X(w)),b=w,b}function dt(){var b,w,L,A,V;if(b=C,w=[],L=Ue(),L!==e)for(;L!==e;)w.push(L),L=Ue();else w=e;if(w!==e)if(L=Sh(),L===e&&(L=null),L!==e){for(A=[],V=Ue();V!==e;)A.push(V),V=Ue();A!==e?(w=[w,L,A],b=w):(C=b,b=e)}else C=b,b=e;else C=b,b=e;if(b===e){if(b=C,w=C,L=Sh(),L!==e){for(A=[],V=Ue();V!==e;)A.push(V),V=Ue();A!==e?(L=[L,A],w=L):(C=w,w=e)}else C=w,w=e;w!==e&&(ie=b,w=te()),b=w}return b}function Sh(){var b;return n.charCodeAt(C)===44?(b=K,C++):(b=e,Ce===0&&wt(Z)),b}function wh(){var b,w,L,A;return b=C,w=C,L=BS(),L!==e?(A=Ph(),A===e&&(A=null),A!==e?(L=[L,A],w=L):(C=w,w=e)):(C=w,w=e),w===e&&(w=C,L=Qn(),L!==e?(A=Ph(),A!==e?(L=[L,A],w=L):(C=w,w=e)):(C=w,w=e)),w!==e&&(ie=b,w=Q(w)),b=w,b}function BS(){var b,w,L,A,V;return b=C,w=C,L=Qn(),L===e&&(L=null),L!==e?(n.charCodeAt(C)===46?(A=$,C++):(A=e,Ce===0&&wt(ue)),A!==e?(V=Qn(),V!==e?(L=[L,A,V],w=L):(C=w,w=e)):(C=w,w=e)):(C=w,w=e),w===e&&(w=C,L=Qn(),L!==e?(n.charCodeAt(C)===46?(A=$,C++):(A=e,Ce===0&&wt(ue)),A!==e?(L=[L,A],w=L):(C=w,w=e)):(C=w,w=e)),w!==e&&(ie=b,w=Q(w)),b=w,b}function Ph(){var b,w,L,A,V;return b=C,w=C,le.test(n.charAt(C))?(L=n.charAt(C),C++):(L=e,Ce===0&&wt(ne)),L!==e?(A=Fd(),A===e&&(A=null),A!==e?(V=Qn(),V!==e?(L=[L,A,V],w=L):(C=w,w=e)):(C=w,w=e)):(C=w,w=e),w!==e&&(ie=b,w=Q(w)),b=w,b}function Fd(){var b;return ce.test(n.charAt(C))?(b=n.charAt(C),C++):(b=e,Ce===0&&wt(ae)),b}function Qn(){var b,w,L;if(b=C,w=[],me.test(n.charAt(C))?(L=n.charAt(C),C++):(L=e,Ce===0&&wt(fe)),L!==e)for(;L!==e;)w.push(L),me.test(n.charAt(C))?(L=n.charAt(C),C++):(L=e,Ce===0&&wt(fe));else w=e;return w!==e&&(ie=b,w=he(w)),b=w,b}function Ue(){var b,w;return b=C,xe.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Ce===0&&wt(ye)),w!==e&&(ie=b,w=te()),b=w,b}function LS(b,w){if(!w)return[b];for(var L=[b],A=0,V=w.length;A<V;A++)L[A+1]=w[A][1];return L}var Zl={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 Oh in Zl)Zl[Oh.toUpperCase()]=Zl[Oh];function Di(b,w){w||(w=[{}]);for(var L=w.length;L--;){var A={code:b,command:Zl[b]};b==b.toLowerCase()&&(A.relative=!0);for(var V in w[L])A[V]=w[L][V];w[L]=A}return w}if(Bt=o(),Bt!==e&&C===n.length)return Bt;throw Bt!==e&&C<n.length&&wt(Bd()),Br(Ve,Fe<n.length?n.charAt(Fe):null,Fe<n.length?Xn(Fe,Fe+1):Xn(Fe,Fe))}av.exports={SyntaxError:Ci,parse:bI}});var ah=Zn((FJ,lv)=>{var gd=sv().parse;gd.parseSVG=gd;gd.makeAbsolute=vI;lv.exports=gd;function vI(n){var r,e={x:0,y:0},t={x:"x0",y:"y0",x1:"x0",y1:"y0",x2:"x0",y2:"y0"};return n.forEach(function(o){o.command==="moveto"&&(r=o),o.x0=e.x,o.y0=e.y;for(var i in t)i in o&&(o[i]+=o.relative?o[t[i]]: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=r.x,o.y=r.y),e=o}),n}});var yS=Zn((aae,mS)=>{mS.exports=function(r,e){for(var t=r.split("."),o=e.split("."),i=0;i<3;i++){var a=Number(t[i]),s=Number(o[i]);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}});var FI={};Ch(FI,{default:()=>Ed});module.exports=US(FI);var _d=require("three");function tc(n){for(let r of Object.keys(n))n[r]===void 0&&delete n[r];return n}function sr(n,r){return Object.setPrototypeOf(n,r),n}function rc(n){return Array.isArray(n)?n:[n]}function oc(n,r){let e=0;for(;e<n.length&&e<r.length;){if(n[e]<r[e])return-1;if(n[e]>r[e])return 1;e+=1}return e!==r.length?-1:e!==n.length?1:0}var kS=typeof global=="object"&&global&&global.Object===Object&&global,nc=kS;var HS=typeof self=="object"&&self&&self.Object===Object&&self,WS=nc||HS||Function("return this")(),Et=WS;var qS=Et.Symbol,Ht=qS;var Ah=Object.prototype,$S=Ah.hasOwnProperty,YS=Ah.toString,Fs=Ht?Ht.toStringTag:void 0;function XS(n){var r=$S.call(n,Fs),e=n[Fs];try{n[Fs]=void 0;var t=!0}catch{}var o=YS.call(n);return t&&(r?n[Fs]=e:delete n[Fs]),o}var Mh=XS;var KS=Object.prototype,QS=KS.toString;function ZS(n){return QS.call(n)}var Ih=ZS;var JS="[object Null]",e1="[object Undefined]",Nh=Ht?Ht.toStringTag:void 0;function t1(n){return n==null?n===void 0?e1:JS:Nh&&Nh in Object(n)?Mh(n):Ih(n)}var Tr=t1;function r1(n){return n!=null&&typeof n=="object"}var Kt=r1;var o1="[object Symbol]";function n1(n){return typeof n=="symbol"||Kt(n)&&Tr(n)==o1}var Bi=n1;function i1(n,r){for(var e=-1,t=n==null?0:n.length,o=Array(t);++e<t;)o[e]=r(n[e],e,n);return o}var ic=i1;var a1=Array.isArray,Pt=a1;var s1=1/0,Dh=Ht?Ht.prototype:void 0,Eh=Dh?Dh.toString:void 0;function _h(n){if(typeof n=="string")return n;if(Pt(n))return ic(n,_h)+"";if(Bi(n))return Eh?Eh.call(n):"";var r=n+"";return r=="0"&&1/n==-s1?"-0":r}var Bh=_h;function l1(n){var r=typeof n;return n!=null&&(r=="object"||r=="function")}var Ar=l1;function c1(n){return n}var Lh=c1;var u1="[object AsyncFunction]",d1="[object Function]",p1="[object GeneratorFunction]",f1="[object Proxy]";function h1(n){if(!Ar(n))return!1;var r=Tr(n);return r==d1||r==p1||r==u1||r==f1}var ac=h1;var m1=Et["__core-js_shared__"],sc=m1;var Rh=function(){var n=/[^.]+$/.exec(sc&&sc.keys&&sc.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}();function y1(n){return!!Rh&&Rh in n}var Vh=y1;var g1=Function.prototype,x1=g1.toString;function b1(n){if(n!=null){try{return x1.call(n)}catch{}try{return n+""}catch{}}return""}var Ro=b1;var v1=/[\\^$.*+?()[\]{}|]/g,S1=/^\[object .+?Constructor\]$/,w1=Function.prototype,P1=Object.prototype,O1=w1.toString,C1=P1.hasOwnProperty,T1=RegExp("^"+O1.call(C1).replace(v1,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function A1(n){if(!Ar(n)||Vh(n))return!1;var r=ac(n)?T1:S1;return r.test(Ro(n))}var zh=A1;function M1(n,r){return n?.[r]}var Gh=M1;function I1(n,r){var e=Gh(n,r);return zh(e)?e:void 0}var mr=I1;var N1=mr(Et,"WeakMap"),lc=N1;var jh=Object.create,D1=function(){function n(){}return function(r){if(!Ar(r))return{};if(jh)return jh(r);n.prototype=r;var e=new n;return n.prototype=void 0,e}}(),Fh=D1;function E1(n,r,e){switch(e.length){case 0:return n.call(r);case 1:return n.call(r,e[0]);case 2:return n.call(r,e[0],e[1]);case 3:return n.call(r,e[0],e[1],e[2])}return n.apply(r,e)}var Uh=E1;function _1(n,r){var e=-1,t=n.length;for(r||(r=Array(t));++e<t;)r[e]=n[e];return r}var kh=_1;var B1=800,L1=16,R1=Date.now;function V1(n){var r=0,e=0;return function(){var t=R1(),o=L1-(t-e);if(e=t,o>0){if(++r>=B1)return arguments[0]}else r=0;return n.apply(void 0,arguments)}}var Hh=V1;function z1(n){return function(){return n}}var Wh=z1;var G1=function(){try{var n=mr(Object,"defineProperty");return n({},"",{}),n}catch{}}(),Li=G1;var j1=Li?function(n,r){return Li(n,"toString",{configurable:!0,enumerable:!1,value:Wh(r),writable:!0})}:Lh,qh=j1;var F1=Hh(qh),$h=F1;function U1(n,r){for(var e=-1,t=n==null?0:n.length;++e<t&&r(n[e],e,n)!==!1;);return n}var Yh=U1;var k1=9007199254740991,H1=/^(?:0|[1-9]\d*)$/;function W1(n,r){var e=typeof n;return r=r??k1,!!r&&(e=="number"||e!="symbol"&&H1.test(n))&&n>-1&&n%1==0&&n<r}var Ri=W1;function q1(n,r,e){r=="__proto__"&&Li?Li(n,r,{configurable:!0,enumerable:!0,value:e,writable:!0}):n[r]=e}var cc=q1;function $1(n,r){return n===r||n!==n&&r!==r}var Vi=$1;var Y1=Object.prototype,X1=Y1.hasOwnProperty;function K1(n,r,e){var t=n[r];(!(X1.call(n,r)&&Vi(t,e))||e===void 0&&!(r in n))&&cc(n,r,e)}var zi=K1;function Q1(n,r,e,t){var o=!e;e||(e={});for(var i=-1,a=r.length;++i<a;){var s=r[i],l=t?t(e[s],n[s],s,e,n):void 0;l===void 0&&(l=n[s]),o?cc(e,s,l):zi(e,s,l)}return e}var fo=Q1;var Xh=Math.max;function Z1(n,r,e){return r=Xh(r===void 0?n.length-1:r,0),function(){for(var t=arguments,o=-1,i=Xh(t.length-r,0),a=Array(i);++o<i;)a[o]=t[r+o];o=-1;for(var s=Array(r+1);++o<r;)s[o]=t[o];return s[r]=e(a),Uh(n,this,s)}}var Kh=Z1;var J1=9007199254740991;function ew(n){return typeof n=="number"&&n>-1&&n%1==0&&n<=J1}var Gi=ew;function tw(n){return n!=null&&Gi(n.length)&&!ac(n)}var uc=tw;var rw=Object.prototype;function ow(n){var r=n&&n.constructor,e=typeof r=="function"&&r.prototype||rw;return n===e}var ji=ow;function nw(n,r){for(var e=-1,t=Array(n);++e<n;)t[e]=r(e);return t}var Qh=nw;var iw="[object Arguments]";function aw(n){return Kt(n)&&Tr(n)==iw}var Wd=aw;var Zh=Object.prototype,sw=Zh.hasOwnProperty,lw=Zh.propertyIsEnumerable,cw=Wd(function(){return arguments}())?Wd:function(n){return Kt(n)&&sw.call(n,"callee")&&!lw.call(n,"callee")},Fi=cw;function uw(){return!1}var Jh=uw;var rm=typeof exports=="object"&&exports&&!exports.nodeType&&exports,em=rm&&typeof module=="object"&&module&&!module.nodeType&&module,dw=em&&em.exports===rm,tm=dw?Et.Buffer:void 0,pw=tm?tm.isBuffer:void 0,fw=pw||Jh,ei=fw;var hw="[object Arguments]",mw="[object Array]",yw="[object Boolean]",gw="[object Date]",xw="[object Error]",bw="[object Function]",vw="[object Map]",Sw="[object Number]",ww="[object Object]",Pw="[object RegExp]",Ow="[object Set]",Cw="[object String]",Tw="[object WeakMap]",Aw="[object ArrayBuffer]",Mw="[object DataView]",Iw="[object Float32Array]",Nw="[object Float64Array]",Dw="[object Int8Array]",Ew="[object Int16Array]",_w="[object Int32Array]",Bw="[object Uint8Array]",Lw="[object Uint8ClampedArray]",Rw="[object Uint16Array]",Vw="[object Uint32Array]",pt={};pt[Iw]=pt[Nw]=pt[Dw]=pt[Ew]=pt[_w]=pt[Bw]=pt[Lw]=pt[Rw]=pt[Vw]=!0;pt[hw]=pt[mw]=pt[Aw]=pt[yw]=pt[Mw]=pt[gw]=pt[xw]=pt[bw]=pt[vw]=pt[Sw]=pt[ww]=pt[Pw]=pt[Ow]=pt[Cw]=pt[Tw]=!1;function zw(n){return Kt(n)&&Gi(n.length)&&!!pt[Tr(n)]}var om=zw;function Gw(n){return function(r){return n(r)}}var Ui=Gw;var nm=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Us=nm&&typeof module=="object"&&module&&!module.nodeType&&module,jw=Us&&Us.exports===nm,qd=jw&&nc.process,Fw=function(){try{var n=Us&&Us.require&&Us.require("util").types;return n||qd&&qd.binding&&qd.binding("util")}catch{}}(),Vo=Fw;var im=Vo&&Vo.isTypedArray,Uw=im?Ui(im):om,dc=Uw;var kw=Object.prototype,Hw=kw.hasOwnProperty;function Ww(n,r){var e=Pt(n),t=!e&&Fi(n),o=!e&&!t&&ei(n),i=!e&&!t&&!o&&dc(n),a=e||t||o||i,s=a?Qh(n.length,String):[],l=s.length;for(var c in n)(r||Hw.call(n,c))&&!(a&&(c=="length"||o&&(c=="offset"||c=="parent")||i&&(c=="buffer"||c=="byteLength"||c=="byteOffset")||Ri(c,l)))&&s.push(c);return s}var pc=Ww;function qw(n,r){return function(e){return n(r(e))}}var fc=qw;var $w=fc(Object.keys,Object),am=$w;var Yw=Object.prototype,Xw=Yw.hasOwnProperty;function Kw(n){if(!ji(n))return am(n);var r=[];for(var e in Object(n))Xw.call(n,e)&&e!="constructor"&&r.push(e);return r}var sm=Kw;function Qw(n){return uc(n)?pc(n):sm(n)}var ki=Qw;function Zw(n){var r=[];if(n!=null)for(var e in Object(n))r.push(e);return r}var lm=Zw;var Jw=Object.prototype,e2=Jw.hasOwnProperty;function t2(n){if(!Ar(n))return lm(n);var r=ji(n),e=[];for(var t in n)t=="constructor"&&(r||!e2.call(n,t))||e.push(t);return e}var cm=t2;function r2(n){return uc(n)?pc(n,!0):cm(n)}var Hi=r2;var o2=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,n2=/^\w*$/;function i2(n,r){if(Pt(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||Bi(n)?!0:n2.test(n)||!o2.test(n)||r!=null&&n in Object(r)}var um=i2;var a2=mr(Object,"create"),zo=a2;function s2(){this.__data__=zo?zo(null):{},this.size=0}var dm=s2;function l2(n){var r=this.has(n)&&delete this.__data__[n];return this.size-=r?1:0,r}var pm=l2;var c2="__lodash_hash_undefined__",u2=Object.prototype,d2=u2.hasOwnProperty;function p2(n){var r=this.__data__;if(zo){var e=r[n];return e===c2?void 0:e}return d2.call(r,n)?r[n]:void 0}var fm=p2;var f2=Object.prototype,h2=f2.hasOwnProperty;function m2(n){var r=this.__data__;return zo?r[n]!==void 0:h2.call(r,n)}var hm=m2;var y2="__lodash_hash_undefined__";function g2(n,r){var e=this.__data__;return this.size+=this.has(n)?0:1,e[n]=zo&&r===void 0?y2:r,this}var mm=g2;function Wi(n){var r=-1,e=n==null?0:n.length;for(this.clear();++r<e;){var t=n[r];this.set(t[0],t[1])}}Wi.prototype.clear=dm;Wi.prototype.delete=pm;Wi.prototype.get=fm;Wi.prototype.has=hm;Wi.prototype.set=mm;var $d=Wi;function x2(){this.__data__=[],this.size=0}var ym=x2;function b2(n,r){for(var e=n.length;e--;)if(Vi(n[e][0],r))return e;return-1}var un=b2;var v2=Array.prototype,S2=v2.splice;function w2(n){var r=this.__data__,e=un(r,n);if(e<0)return!1;var t=r.length-1;return e==t?r.pop():S2.call(r,e,1),--this.size,!0}var gm=w2;function P2(n){var r=this.__data__,e=un(r,n);return e<0?void 0:r[e][1]}var xm=P2;function O2(n){return un(this.__data__,n)>-1}var bm=O2;function C2(n,r){var e=this.__data__,t=un(e,n);return t<0?(++this.size,e.push([n,r])):e[t][1]=r,this}var vm=C2;function qi(n){var r=-1,e=n==null?0:n.length;for(this.clear();++r<e;){var t=n[r];this.set(t[0],t[1])}}qi.prototype.clear=ym;qi.prototype.delete=gm;qi.prototype.get=xm;qi.prototype.has=bm;qi.prototype.set=vm;var dn=qi;var T2=mr(Et,"Map"),pn=T2;function A2(){this.size=0,this.__data__={hash:new $d,map:new(pn||dn),string:new $d}}var Sm=A2;function M2(n){var r=typeof n;return r=="string"||r=="number"||r=="symbol"||r=="boolean"?n!=="__proto__":n===null}var wm=M2;function I2(n,r){var e=n.__data__;return wm(r)?e[typeof r=="string"?"string":"hash"]:e.map}var fn=I2;function N2(n){var r=fn(this,n).delete(n);return this.size-=r?1:0,r}var Pm=N2;function D2(n){return fn(this,n).get(n)}var Om=D2;function E2(n){return fn(this,n).has(n)}var Cm=E2;function _2(n,r){var e=fn(this,n),t=e.size;return e.set(n,r),this.size+=e.size==t?0:1,this}var Tm=_2;function $i(n){var r=-1,e=n==null?0:n.length;for(this.clear();++r<e;){var t=n[r];this.set(t[0],t[1])}}$i.prototype.clear=Sm;$i.prototype.delete=Pm;$i.prototype.get=Om;$i.prototype.has=Cm;$i.prototype.set=Tm;var ti=$i;var B2="Expected a function";function Yd(n,r){if(typeof n!="function"||r!=null&&typeof r!="function")throw new TypeError(B2);var e=function(){var t=arguments,o=r?r.apply(this,t):t[0],i=e.cache;if(i.has(o))return i.get(o);var a=n.apply(this,t);return e.cache=i.set(o,a)||i,a};return e.cache=new(Yd.Cache||ti),e}Yd.Cache=ti;var Am=Yd;var L2=500;function R2(n){var r=Am(n,function(t){return e.size===L2&&e.clear(),t}),e=r.cache;return r}var Mm=R2;var V2=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,z2=/\\(\\)?/g,G2=Mm(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(V2,function(e,t,o,i){r.push(o?i.replace(z2,"$1"):t||e)}),r}),Im=G2;function j2(n){return n==null?"":Bh(n)}var Nm=j2;function F2(n,r){return Pt(n)?n:um(n,r)?[n]:Im(Nm(n))}var Lr=F2;var U2=1/0;function k2(n){if(typeof n=="string"||Bi(n))return n;var r=n+"";return r=="0"&&1/n==-U2?"-0":r}var hn=k2;function H2(n,r){r=Lr(r,n);for(var e=0,t=r.length;n!=null&&e<t;)n=n[hn(r[e++])];return e&&e==t?n:void 0}var hc=H2;function W2(n,r){for(var e=-1,t=r.length,o=n.length;++e<t;)n[o+e]=r[e];return n}var Yi=W2;var Dm=Ht?Ht.isConcatSpreadable:void 0;function q2(n){return Pt(n)||Fi(n)||!!(Dm&&n&&n[Dm])}var Em=q2;function _m(n,r,e,t,o){var i=-1,a=n.length;for(e||(e=Em),o||(o=[]);++i<a;){var s=n[i];r>0&&e(s)?r>1?_m(s,r-1,e,t,o):Yi(o,s):t||(o[o.length]=s)}return o}var Bm=_m;function $2(n){var r=n==null?0:n.length;return r?Bm(n,1):[]}var Lm=$2;function Y2(n){return $h(Kh(n,void 0,Lm),n+"")}var mc=Y2;var X2=fc(Object.getPrototypeOf,Object),Xi=X2;var K2="[object Object]",Q2=Function.prototype,Z2=Object.prototype,Rm=Q2.toString,J2=Z2.hasOwnProperty,eP=Rm.call(Object);function tP(n){if(!Kt(n)||Tr(n)!=K2)return!1;var r=Xi(n);if(r===null)return!0;var e=J2.call(r,"constructor")&&r.constructor;return typeof e=="function"&&e instanceof e&&Rm.call(e)==eP}var Vm=tP;function rP(n,r,e){var t=-1,o=n.length;r<0&&(r=-r>o?0:o+r),e=e>o?o:e,e<0&&(e+=o),o=r>e?0:e-r>>>0,r>>>=0;for(var i=Array(o);++t<o;)i[t]=n[t+r];return i}var zm=rP;function oP(){this.__data__=new dn,this.size=0}var Gm=oP;function nP(n){var r=this.__data__,e=r.delete(n);return this.size=r.size,e}var jm=nP;function iP(n){return this.__data__.get(n)}var Fm=iP;function aP(n){return this.__data__.has(n)}var Um=aP;var sP=200;function lP(n,r){var e=this.__data__;if(e instanceof dn){var t=e.__data__;if(!pn||t.length<sP-1)return t.push([n,r]),this.size=++e.size,this;e=this.__data__=new ti(t)}return e.set(n,r),this.size=e.size,this}var km=lP;function Ki(n){var r=this.__data__=new dn(n);this.size=r.size}Ki.prototype.clear=Gm;Ki.prototype.delete=jm;Ki.prototype.get=Fm;Ki.prototype.has=Um;Ki.prototype.set=km;var Qi=Ki;function cP(n,r){return n&&fo(r,ki(r),n)}var Hm=cP;function uP(n,r){return n&&fo(r,Hi(r),n)}var Wm=uP;var Xm=typeof exports=="object"&&exports&&!exports.nodeType&&exports,qm=Xm&&typeof module=="object"&&module&&!module.nodeType&&module,dP=qm&&qm.exports===Xm,$m=dP?Et.Buffer:void 0,Ym=$m?$m.allocUnsafe:void 0;function pP(n,r){if(r)return n.slice();var e=n.length,t=Ym?Ym(e):new n.constructor(e);return n.copy(t),t}var Km=pP;function fP(n,r){for(var e=-1,t=n==null?0:n.length,o=0,i=[];++e<t;){var a=n[e];r(a,e,n)&&(i[o++]=a)}return i}var Qm=fP;function hP(){return[]}var yc=hP;var mP=Object.prototype,yP=mP.propertyIsEnumerable,Zm=Object.getOwnPropertySymbols,gP=Zm?function(n){return n==null?[]:(n=Object(n),Qm(Zm(n),function(r){return yP.call(n,r)}))}:yc,Zi=gP;function xP(n,r){return fo(n,Zi(n),r)}var Jm=xP;var bP=Object.getOwnPropertySymbols,vP=bP?function(n){for(var r=[];n;)Yi(r,Zi(n)),n=Xi(n);return r}:yc,gc=vP;function SP(n,r){return fo(n,gc(n),r)}var ey=SP;function wP(n,r,e){var t=r(n);return Pt(n)?t:Yi(t,e(n))}var xc=wP;function PP(n){return xc(n,ki,Zi)}var ks=PP;function OP(n){return xc(n,Hi,gc)}var bc=OP;var CP=mr(Et,"DataView"),vc=CP;var TP=mr(Et,"Promise"),Sc=TP;var AP=mr(Et,"Set"),wc=AP;var ty="[object Map]",MP="[object Object]",ry="[object Promise]",oy="[object Set]",ny="[object WeakMap]",iy="[object DataView]",IP=Ro(vc),NP=Ro(pn),DP=Ro(Sc),EP=Ro(wc),_P=Ro(lc),ri=Tr;(vc&&ri(new vc(new ArrayBuffer(1)))!=iy||pn&&ri(new pn)!=ty||Sc&&ri(Sc.resolve())!=ry||wc&&ri(new wc)!=oy||lc&&ri(new lc)!=ny)&&(ri=function(n){var r=Tr(n),e=r==MP?n.constructor:void 0,t=e?Ro(e):"";if(t)switch(t){case IP:return iy;case NP:return ty;case DP:return ry;case EP:return oy;case _P:return ny}return r});var Go=ri;var BP=Object.prototype,LP=BP.hasOwnProperty;function RP(n){var r=n.length,e=new n.constructor(r);return r&&typeof n[0]=="string"&&LP.call(n,"index")&&(e.index=n.index,e.input=n.input),e}var ay=RP;var VP=Et.Uint8Array,Ji=VP;function zP(n){var r=new n.constructor(n.byteLength);return new Ji(r).set(new Ji(n)),r}var ea=zP;function GP(n,r){var e=r?ea(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var sy=GP;var jP=/\w*$/;function FP(n){var r=new n.constructor(n.source,jP.exec(n));return r.lastIndex=n.lastIndex,r}var ly=FP;var cy=Ht?Ht.prototype:void 0,uy=cy?cy.valueOf:void 0;function UP(n){return uy?Object(uy.call(n)):{}}var dy=UP;function kP(n,r){var e=r?ea(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.length)}var py=kP;var HP="[object Boolean]",WP="[object Date]",qP="[object Map]",$P="[object Number]",YP="[object RegExp]",XP="[object Set]",KP="[object String]",QP="[object Symbol]",ZP="[object ArrayBuffer]",JP="[object DataView]",eO="[object Float32Array]",tO="[object Float64Array]",rO="[object Int8Array]",oO="[object Int16Array]",nO="[object Int32Array]",iO="[object Uint8Array]",aO="[object Uint8ClampedArray]",sO="[object Uint16Array]",lO="[object Uint32Array]";function cO(n,r,e){var t=n.constructor;switch(r){case ZP:return ea(n);case HP:case WP:return new t(+n);case JP:return sy(n,e);case eO:case tO:case rO:case oO:case nO:case iO:case aO:case sO:case lO:return py(n,e);case qP:return new t;case $P:case KP:return new t(n);case YP:return ly(n);case XP:return new t;case QP:return dy(n)}}var fy=cO;function uO(n){return typeof n.constructor=="function"&&!ji(n)?Fh(Xi(n)):{}}var hy=uO;var dO="[object Map]";function pO(n){return Kt(n)&&Go(n)==dO}var my=pO;var yy=Vo&&Vo.isMap,fO=yy?Ui(yy):my,gy=fO;var hO="[object Set]";function mO(n){return Kt(n)&&Go(n)==hO}var xy=mO;var by=Vo&&Vo.isSet,yO=by?Ui(by):xy,vy=yO;var gO=1,xO=2,bO=4,Sy="[object Arguments]",vO="[object Array]",SO="[object Boolean]",wO="[object Date]",PO="[object Error]",wy="[object Function]",OO="[object GeneratorFunction]",CO="[object Map]",TO="[object Number]",Py="[object Object]",AO="[object RegExp]",MO="[object Set]",IO="[object String]",NO="[object Symbol]",DO="[object WeakMap]",EO="[object ArrayBuffer]",_O="[object DataView]",BO="[object Float32Array]",LO="[object Float64Array]",RO="[object Int8Array]",VO="[object Int16Array]",zO="[object Int32Array]",GO="[object Uint8Array]",jO="[object Uint8ClampedArray]",FO="[object Uint16Array]",UO="[object Uint32Array]",ct={};ct[Sy]=ct[vO]=ct[EO]=ct[_O]=ct[SO]=ct[wO]=ct[BO]=ct[LO]=ct[RO]=ct[VO]=ct[zO]=ct[CO]=ct[TO]=ct[Py]=ct[AO]=ct[MO]=ct[IO]=ct[NO]=ct[GO]=ct[jO]=ct[FO]=ct[UO]=!0;ct[PO]=ct[wy]=ct[DO]=!1;function Pc(n,r,e,t,o,i){var a,s=r&gO,l=r&xO,c=r&bO;if(e&&(a=o?e(n,t,o,i):e(n)),a!==void 0)return a;if(!Ar(n))return n;var u=Pt(n);if(u){if(a=ay(n),!s)return kh(n,a)}else{var p=Go(n),d=p==wy||p==OO;if(ei(n))return Km(n,s);if(p==Py||p==Sy||d&&!o){if(a=l||d?{}:hy(n),!s)return l?ey(n,Wm(a,n)):Jm(n,Hm(a,n))}else{if(!ct[p])return o?n:{};a=fy(n,p,s)}}i||(i=new Qi);var h=i.get(n);if(h)return h;i.set(n,a),vy(n)?n.forEach(function(y){a.add(Pc(y,r,e,y,n,i))}):gy(n)&&n.forEach(function(y,g){a.set(g,Pc(y,r,e,g,n,i))});var f=c?l?bc:ks:l?Hi:ki,m=u?void 0:f(n);return Yh(m||n,function(y,g){m&&(g=y,y=n[g]),zi(a,g,Pc(y,r,e,g,n,i))}),a}var Oc=Pc;var kO=1,HO=4;function WO(n){return Oc(n,kO|HO)}var jo=WO;var qO="__lodash_hash_undefined__";function $O(n){return this.__data__.set(n,qO),this}var Oy=$O;function YO(n){return this.__data__.has(n)}var Cy=YO;function Cc(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new ti;++r<e;)this.add(n[r])}Cc.prototype.add=Cc.prototype.push=Oy;Cc.prototype.has=Cy;var Ty=Cc;function XO(n,r){for(var e=-1,t=n==null?0:n.length;++e<t;)if(r(n[e],e,n))return!0;return!1}var Ay=XO;function KO(n,r){return n.has(r)}var My=KO;var QO=1,ZO=2;function JO(n,r,e,t,o,i){var a=e&QO,s=n.length,l=r.length;if(s!=l&&!(a&&l>s))return!1;var c=i.get(n),u=i.get(r);if(c&&u)return c==r&&u==n;var p=-1,d=!0,h=e&ZO?new Ty:void 0;for(i.set(n,r),i.set(r,n);++p<s;){var f=n[p],m=r[p];if(t)var y=a?t(m,f,p,r,n,i):t(f,m,p,n,r,i);if(y!==void 0){if(y)continue;d=!1;break}if(h){if(!Ay(r,function(g,v){if(!My(h,v)&&(f===g||o(f,g,e,t,i)))return h.push(v)})){d=!1;break}}else if(!(f===m||o(f,m,e,t,i))){d=!1;break}}return i.delete(n),i.delete(r),d}var Tc=JO;function eC(n){var r=-1,e=Array(n.size);return n.forEach(function(t,o){e[++r]=[o,t]}),e}var Iy=eC;function tC(n){var r=-1,e=Array(n.size);return n.forEach(function(t){e[++r]=t}),e}var Ny=tC;var rC=1,oC=2,nC="[object Boolean]",iC="[object Date]",aC="[object Error]",sC="[object Map]",lC="[object Number]",cC="[object RegExp]",uC="[object Set]",dC="[object String]",pC="[object Symbol]",fC="[object ArrayBuffer]",hC="[object DataView]",Dy=Ht?Ht.prototype:void 0,Xd=Dy?Dy.valueOf:void 0;function mC(n,r,e,t,o,i,a){switch(e){case hC:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case fC:return!(n.byteLength!=r.byteLength||!i(new Ji(n),new Ji(r)));case nC:case iC:case lC:return Vi(+n,+r);case aC:return n.name==r.name&&n.message==r.message;case cC:case dC:return n==r+"";case sC:var s=Iy;case uC:var l=t&rC;if(s||(s=Ny),n.size!=r.size&&!l)return!1;var c=a.get(n);if(c)return c==r;t|=oC,a.set(n,r);var u=Tc(s(n),s(r),t,o,i,a);return a.delete(n),u;case pC:if(Xd)return Xd.call(n)==Xd.call(r)}return!1}var Ey=mC;var yC=1,gC=Object.prototype,xC=gC.hasOwnProperty;function bC(n,r,e,t,o,i){var a=e&yC,s=ks(n),l=s.length,c=ks(r),u=c.length;if(l!=u&&!a)return!1;for(var p=l;p--;){var d=s[p];if(!(a?d in r:xC.call(r,d)))return!1}var h=i.get(n),f=i.get(r);if(h&&f)return h==r&&f==n;var m=!0;i.set(n,r),i.set(r,n);for(var y=a;++p<l;){d=s[p];var g=n[d],v=r[d];if(t)var O=a?t(v,g,d,r,n,i):t(g,v,d,n,r,i);if(!(O===void 0?g===v||o(g,v,e,t,i):O)){m=!1;break}y||(y=d=="constructor")}if(m&&!y){var P=n.constructor,S=r.constructor;P!=S&&"constructor"in n&&"constructor"in r&&!(typeof P=="function"&&P instanceof P&&typeof S=="function"&&S instanceof S)&&(m=!1)}return i.delete(n),i.delete(r),m}var _y=bC;var vC=1,By="[object Arguments]",Ly="[object Array]",Ac="[object Object]",SC=Object.prototype,Ry=SC.hasOwnProperty;function wC(n,r,e,t,o,i){var a=Pt(n),s=Pt(r),l=a?Ly:Go(n),c=s?Ly:Go(r);l=l==By?Ac:l,c=c==By?Ac:c;var u=l==Ac,p=c==Ac,d=l==c;if(d&&ei(n)){if(!ei(r))return!1;a=!0,u=!1}if(d&&!u)return i||(i=new Qi),a||dc(n)?Tc(n,r,e,t,o,i):Ey(n,r,l,e,t,o,i);if(!(e&vC)){var h=u&&Ry.call(n,"__wrapped__"),f=p&&Ry.call(r,"__wrapped__");if(h||f){var m=h?n.value():n,y=f?r.value():r;return i||(i=new Qi),o(m,y,e,t,i)}}return d?(i||(i=new Qi),_y(n,r,e,t,o,i)):!1}var Vy=wC;function zy(n,r,e,t,o){return n===r?!0:n==null||r==null||!Kt(n)&&!Kt(r)?n!==n&&r!==r:Vy(n,r,e,t,zy,o)}var Gy=zy;function PC(n,r){return n!=null&&r in Object(n)}var jy=PC;function OC(n,r,e){r=Lr(r,n);for(var t=-1,o=r.length,i=!1;++t<o;){var a=hn(r[t]);if(!(i=n!=null&&e(n,a)))break;n=n[a]}return i||++t!=o?i:(o=n==null?0:n.length,!!o&&Gi(o)&&Ri(a,o)&&(Pt(n)||Fi(n)))}var Fy=OC;function CC(n,r){return n!=null&&Fy(n,r,jy)}var Uy=CC;function TC(n){var r=n==null?0:n.length;return r?n[r-1]:void 0}var ky=TC;function AC(n,r){return r.length<2?n:hc(n,zm(r,0,-1))}var Hy=AC;function MC(n,r){return Gy(n,r)}var Kd=MC;function IC(n,r){return r=Lr(r,n),n=Hy(n,r),n==null||delete n[hn(ky(r))]}var Wy=IC;function NC(n){return Vm(n)?void 0:n}var qy=NC;var DC=1,EC=2,_C=4,BC=mc(function(n,r){var e={};if(n==null)return e;var t=!1;r=ic(r,function(i){return i=Lr(i,n),t||(t=i.length>1),i}),fo(n,bc(n),e),t&&(e=Oc(e,DC|EC|_C,qy));for(var o=r.length;o--;)Wy(e,r[o]);return e}),ta=BC;function LC(n,r,e,t){if(!Ar(n))return n;r=Lr(r,n);for(var o=-1,i=r.length,a=i-1,s=n;s!=null&&++o<i;){var l=hn(r[o]),c=e;if(l==="__proto__"||l==="constructor"||l==="prototype")return n;if(o!=a){var u=s[l];c=t?t(u,l,s):void 0,c===void 0&&(c=Ar(u)?u:Ri(r[o+1])?[]:{})}zi(s,l,c),s=s[l]}return n}var $y=LC;function RC(n,r,e){for(var t=-1,o=r.length,i={};++t<o;){var a=r[t],s=hc(n,a);e(s,a)&&$y(i,Lr(a,n),s)}return i}var Yy=RC;function VC(n,r){return Yy(n,r,function(e,t){return Uy(n,t)})}var Xy=VC;var zC=mc(function(n,r){return n==null?{}:Xy(n,r)}),Kr=zC;var be=class{modifyById(r,e){let t=this;if(t[r]===void 0)throw new Error("not expected");{let i={...t,[r]:e};return Object.setPrototypeOf(i,be.prototype),i}}add(r,e){return this.runOp({type:1,id:r,data:e})?.data??this}runOp(r){let e=this;if(r.type===1){let t=e[r.id],o;t===void 0?o={type:2,id:r.id}:o={type:1,id:r.id,data:t};let{id:i,data:a}=r,s={...e,[i]:a};return Object.setPrototypeOf(s,be.prototype),{data:s,actual:r,reverse:o}}else if(r.type===2){let{id:t}=r,o=e[t];if(o===void 0)return null;{let i={...e};return Object.setPrototypeOf(i,be.prototype),delete i[t],{data:i,actual:r,reverse:{type:1,id:t,data:o}}}}return null}};function Hs(n){if(n.deepFreeze!==void 0){n.deepFreeze(n);return}let r=Object.getOwnPropertyNames(n);for(let e of r){let t=n[e];t&&typeof t=="object"&&Hs(t)}return Object.freeze(n)}function Ky(n,r){let e=0;for(;e<n.length&&e<r.length;){if(n[e]<r[e])return-1;if(n[e]>r[e])return 1;e+=1}return e!==r.length?-1:e!==n.length?1:0}var ra=class extends Error{};function Mc(n){let r={...n};return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}function ho(n,r,e){if(n===void 0?r===void 0?(n=0,r=10):n=r-10:r===void 0&&(r=n+10),n>r){let i=n;n=r,r=i}let t=[],o=1/(e+1);for(let i=0;i<e;i++){let a=n+(r-n)*(i+.75+Math.random()*.5)*o;t.push(a)}return t}function oa(n){return n instanceof Uint8Array||n instanceof Uint16Array||n instanceof Uint32Array||n instanceof Int8Array||n instanceof Int16Array||n instanceof Int32Array||n instanceof Float32Array||n instanceof Float64Array}function Qy(){return typeof process<"u"}function Zy(n,r){for(let e of n)r(e.id,e.data)!==!0&&Zy(e.children,r)}function Jy(n,r){if(r(n.id,n.data)!==!0)for(let e of n.children)Jy(e,r)}var st=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,st.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Hs(this[e]),e++}fillCaches0(e,t){this.objCaches.set(e.id,e),this.parentCaches.set(e.id,t);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,t){if(!this.has(e))return!0;for(;e;){let o=this.parent(e);if(o===t)return!0;e=o}return!1}rootAcestor(e){for(;e;){let t=this.parent(e);if(t)e=t;else return e}return e}isDescendantOf(e,t){for(;e;){let o=this.parent(e);if(o===t)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,t){if(e===null)this.traverse(t);else{let o=this.get(e);o&&Jy(o,t)}}traverse(e){Zy(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,t){if(this.get(e)===void 0)throw new Error("not expected");{let i=this.parent(e),a=this.childrenArray(i),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:t},this.modifyArrayBy(i,a)}}modifyArrayBy(e,t){let o=e,i=t;for(;o!==null;){let s=i,l=o;if(o=this.parent(o),o===void 0)throw new Error;i=this.childrenArray(o);let c=i.findIndex(u=>u.id===l);if(c<0)throw new Error;i=[...i],i[c]={...i[c],children:s}}Object.setPrototypeOf(i,st.prototype);let a=i;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:t}){if(this.get(e)!==void 0)return!0;for(let o of t)if(this.checkDuplicatedIdRec(o))return!0;return!1}addOp(e){let{parent:t,fi:o,id:i,data:a,children:s}=e;if(t!==null&&this.get(t)===void 0)return null;if(this.checkDuplicatedIdRec(e))return null;{let l=t,c=this.childrenArray(l),u={fi:o,id:i,data:a,children:s};return c=[...c,u],c.sort((d,h)=>d.fi-h.fi),e.localIndex=c.indexOf(u),{data:this.modifyArrayBy(l,c),actual:e,reverse:{type:8,id:i}}}}deleteOp(e){let{id:t}=e;if(this.get(t)===null)return null;{let o=this.parent(t);if(o===void 0)return null;let i=this.childrenArray(o),a=i.findIndex(c=>c.id===t);e.localIndex=a,i=[...i];let s=i.splice(a,1)[0];return{data:this.modifyArrayBy(o,i),actual:e,reverse:{type:7,...s,parent:o}}}}moveOp(e){let{parent:t,fi:o,id:i}=e;if(t!==null&&this.get(t)===void 0)return this.deleteOp({type:8,id:i});if(t!==null){let h=t;for(;h!==null;){if(h===void 0)throw new Error;if(h===i)throw new ra("cyclic tree");h=this.parent(h)}}let a=this.parent(i);if(a===void 0)return null;let s=a,l=this.childrenArray(a),c=l.findIndex(h=>h.id===i);l=[...l];let u=l.splice(c,1)[0],p=this.modifyArrayBy(a,l);a=t,l=p.childrenArray(a);let d=u.fi;return u={...u,fi:o},l=[...l,u],l.sort((h,f)=>h.fi-f.fi),e.localIndex=l.indexOf(u),p=p.modifyArrayBy(a,l),{data:p,actual:e,reverse:{type:9,parent:s,fi:d,id:i}}}previous(e,t){if(t===null){let i=this.childrenArray(e);return i.length===0?null:i[i.length-1].id}let o=null;for(let i of this.childrenArray(e)){if(i.id===t)return o;o=i.id}return null}traverseSortNext(e){let t=this.parent(e);if(t!==void 0){let o=this.childrenArray(t),i=o.findIndex(a=>a.id===e)+1;if(i<o.length)return o[i].id;if(t)return this.traverseSortNext(t)}}sortNext(e){let t=this.childrenArray(e);return t.length>0?t[0].id:this.traverseSortNext(e)}traverseSortPrevious(e){let t=this.childrenArray(e);return t.length>0?this.traverseSortPrevious(t[t.length-1].id):e}sortPrevious(e){let t=this.parent(e);if(t!==void 0){let o=this.childrenArray(t),i=o.findIndex(a=>a.id===e)-1;return i>=0?this.traverseSortPrevious(o[i].id):t}}getAllSorted(e){let t=[];for(let o of e){let i=this.getWithSortKey(o.id);i!==void 0&&t.push({...o,...i})}t.sort((o,i)=>Ky(o.sortKey,i.sortKey));for(let o of t)delete o.sortKey;return t}getWithSortKey(e){var t=e;let o=[],i=this.get(t),a=i;if(i!==void 0){for(;t;)o.splice(0,0,i.fi),t=this.parent(t),t!==null&&(i=this.get(t));return{...a,sortKey:o}}}insertBeforeHelper(e,t,o){return this.insertAfterHelper(e,this.previous(e,t),o)}insertAfterHelper(e,t,o){let i=this.childrenArray(e);if(t===null){if(i.length===0)return ho(0,o,o);{let a=i[0].fi;return ho(a-o,a,o)}}else{let a=this.get(t);if(a===void 0||this.parent(t)!==e)throw new Error("illegal args");let s=i.find(l=>l.fi>a.fi);if(s===void 0){let l=i[i.length-1].fi;return ho(l,l+o,o)}else return ho(a.fi,s.fi,o)}}};var na;(r=>{function n(e,t){if(t.type!==0)return null;if(Array.isArray(e)){let o=t.props,i={},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");i[l]=a[c],a[c]=o[l],s=!0}return s?{data:a,actual:t,reverse:{type:0,props:i}}:null}else{let o=t.props,i={},a={...e},s=!1;if(o)for(let l of Object.keys(o)){i[l]=a[l];let c=o[l];c===void 0?delete a[l]:a[l]=c,s=!0}return s?{data:a,actual:t,reverse:{type:0,props:i}}:null}}r.runOp=n})(na||(na={}));var Se=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Se.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Hs(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,t){if(this.get(e)===void 0)throw new Error("not expected");{let i=this,a=i.findIndex(c=>c.id===e);if(a<0)throw new Error("not expected");let s=i[a];return i=[...i],i[a]={...s,data:t},this.modifyArrayBy(i)}}modifyArrayBy(e){Object.setPrototypeOf(e,Se.prototype);let t=e;return Qy()||t.fillCaches(),t}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:t,id:o,data:i}=e,a=this,s={fi:t,id:o,data:i};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:t}=e,o=this,i=o.findIndex(l=>l.id===t);if(i===-1)return null;e.localIndex=i,o=[...o];let a=o.splice(i,1)[0];return{data:this.modifyArrayBy(o),actual:e,reverse:{type:4,...a}}}moveOp(e){let{fi:t,id:o}=e,i=this;i=[...i];let a=i.findIndex(u=>u.id===o);if(a===-1)return null;let s=i[a].fi,l={...i[a],fi:t};return i[a]=l,i.sort((u,p)=>u.fi-p.fi),e.localIndex=i.indexOf(l),{data:this.modifyArrayBy(i),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 t=null;for(let o of this){if(o.id===e)return t;t=o.id}return null}insertBeforeHelper(e,t){return this.insertAfterHelper(this.previous(e),t)}insertAfterHelper(e,t){let o=this;if(e===null){if(o.length===0)return ho(0,t,t);{let i=o[0].fi;return ho(i-t,i,t)}}else{let i=this.get(e);if(i===void 0)throw new Error("illegal args");let a=o.find(s=>s.fi>i.fi);if(a===void 0){let s=o[o.length-1].fi;return ho(s,s+t,t)}else return ho(i.fi,a.fi,t)}}};function ia(n){return n&&typeof n=="object"&&n instanceof lt}var lt=class{unusedFunOverridesTable(r){}runOp(r){let e=[],t=this,o=0,i={};for(;o<r.path.length;){if(e.push(t),t=t===void 0?void 0:t[r.path[o]],t!==void 0&&!ia(t))return null;o+=1}t=t?Mc(t):new lt;for(let[l,c]of Object.entries(r.props)){let u=t[l];i[l]=u,c===void 0?delete t[l]:t[l]=c}for(;o>0;){if(Object.keys(t).length===0){let l=e[o-1];l&&(t=Mc(l),delete t[r.path[o-1]])}else{let l=e[o-1];if(l){let c=Mc(l);c[r.path[o-1]]=t,t=c}else{let c=new lt;c[r.path[o-1]]=t,t=c}}o-=1}let a=Object.setPrototypeOf(t,lt.prototype),s={...r,props:i};return{data:a,actual:r,reverse:s}}},mo;(t=>{function n(o,i){return Ws(o,i)??o}t.apply=n;function r(o,i){return Zd(o,i)}t.merge=r;function e(o,i){let a=0,s=i.path,l=o;for(;a<s.length&&l!==void 0;){if(l=yt.zoomOnce(l,s[a]),l===void 0)return i;if(!ia(l))return;a+=1}if(l===void 0)return i;if(!!ia(l))if(i.type===0){let c={...i.props};for(let u of Object.keys(l))delete c[u];return{...i,props:c}}else if(i.type===1||i.type===4||i.type===7){let c=Qd([i],l);return c?(console.log(c),c):i}else return i}t.filterOp=e})(mo||(mo={}));function Qd(n,r){if(r===void 0)return;let e=!1,t=n.map(o=>{let i=o.id,a=Ws(o.data,r[i]);if(e=e||a!==void 0,a===void 0&&(a=o.data),o.children){let s=Qd(o.children,r);return s!==void 0?e=!0:s=o.children,{...o,id:i,data:a,children:s}}else return{...o,id:i,data:a}});if(e)return t}function GC(n,r){if(r===void 0)return;let e=!1,t=n.map(o=>{let i=o.id,a=Ws(o.data,r[i]);return e=e||a!==void 0,a===void 0&&(a=o.data),{...o,id:i,data:a}});if(e)return Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}function Ws(n,r){if(!ia(r))return r;if(n instanceof st){let e=Qd(n,r);return e!==void 0&&Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e}else{if(n instanceof Se)return GC(n,r);if(Array.isArray(n)){let e=!1,t=n.map((o,i)=>{let a=Ws(o,r[i]);return e=e||a!==void 0,a===void 0&&(a=o),a});return e?(Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t):void 0}else{if(n instanceof lt)return Zd(n,r);if(n&&typeof n=="object"){let e={},t=!1;for(let[o,i]of Object.entries(n)){let a=Ws(i,r[o]);t=t||a!==void 0,a===void 0&&(a=i),e[o]=a}return t?(Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e):void 0}}}}function Zd(n,r){if(n===void 0)return r;if(r===void 0)return n;if(!ia(r))return r;if(!ia(n))return mo.apply(n,r);let e=new Set;for(let o of Object.keys(n))e.add(o);for(let o of Object.keys(r))e.add(o);let t=new lt;for(let o of e){let i=Zd(n===void 0?void 0:n[o],r===void 0?void 0:r[o]);t[o]=i}return t}function eg(n,r){let e={cur:[],result:[],len:0};return n=qs(n,r,e)??n,[n,e.result]}function Ic(n,r){return n===null?null:(n.cur[n.len]=r,n.len+=1,n)}function Nc(n){n&&(n.len-=1)}function jC(n){if(n===null)return null;n.result.push(n.cur.slice(0,n.len))}function tg(n,r,e){let t=!1,o=n.map(i=>{let a=i.id,s=r[a];if(s!==void 0&&typeof s=="string"&&(t=!0,a=s,e!==null))throw new Error("not supported");let l=qs(i.data,r,Ic(e,a));Nc(e),t=t||l!==void 0,l===void 0&&(l=i.data);let c=tg(i.children,r,e);return c!==void 0?t=!0:c=i.children,{...i,id:a,data:l,children:c}});if(t)return o}function FC(n,r,e){let t=!1,o=n.map(i=>{let a=i.id,s=r[a];if(s!==void 0&&typeof s=="string"&&(t=!0,a=s,e!==null))throw new Error("not supported");let l=qs(i.data,r,Ic(e,a));return Nc(e),t=t||l!==void 0,l===void 0&&(l=i.data),{...i,id:a,data:l}});if(t)return Object.setPrototypeOf(o,Object.getPrototypeOf(n)),o}function qs(n,r,e){if(n instanceof st){let t=tg(n,r,e);return t!==void 0&&Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}else{if(n instanceof Se)return FC(n,r,e);if(Array.isArray(n)){let t=!1,o=n.map((i,a)=>{let s=qs(i,r,Ic(e,a));return Nc(e),t=t||s!==void 0,s===void 0&&(s=i),s});return t?(Object.setPrototypeOf(o,Object.getPrototypeOf(n)),o):void 0}else if(n&&typeof n=="object"&&!oa(n)){let t={},o=!1;for(let[i,a]of Object.entries(n))if(i!=="name"){let s=r[i];if(typeof s=="string"){if(e!==null)throw new Error("not supported");o=!0,i=s}let l=qs(a,r,Ic(e,i));Nc(e),o=o||l!==void 0,l===void 0&&(l=a),t[i]=l}else t[i]=a;return o?(Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t):void 0}else if(typeof n=="string"){let t=r[n];return t!==void 0&&jC(e),t}else return}}var aa;(r=>{function n(e,t){let o=yt.zoom(t,e.path);if(typeof o=="object"){let i={};for(let a of Object.keys(e.props))i[a]=o[a];return{...e,props:i}}else return{...e,props:{}}}r.replaceProps=n})(aa||(aa={}));var gt;(s=>{function n(l,c){return{...l,path:l.path.slice(c)}}s.drop=n;function r(l,c){return e(l,c)?.data??l}s.applySimple=r;function e(l,c){let u=c.path;for(var p=[];;){let d;if(l instanceof lt&&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 st||l instanceof Se||l instanceof be?d=l.runOp(c):d=na.runOp(l,c)),d!==void 0)if(d!==null){let m=d.data;for(let y=p.length-1;y>=0;y--){let g=u[y],v=p[y];if(v instanceof st){if(typeof g=="number")throw new Error("illegal arg");m=v.modifyById(g,m)}else if(v instanceof Se){if(typeof g=="number")throw new Error("illegal arg");m=v.modifyById(g,m)}else if(v instanceof be){if(typeof g=="number")throw new Error("illegal arg");m=v.modifyById(g,m)}else if(v instanceof lt){let O={...v,[g]:m};m=Object.setPrototypeOf(O,lt.prototype)}else if(typeof v=="object")if(Array.isArray(v)){if(typeof g=="string"&&(g=parseInt(g),isNaN(g)))throw new Error("Invalid path");let O=m;m=[...v],m[g]=O}else m={...v,[g]:m};else return null}return{data:m,actual:{...d.actual,path:u},reverse:{...d.reverse,path:u}}}else return null;let h=u[p.length],f;if(l instanceof st){if(typeof h=="number")throw new Error("");f=l.get(h)?.data}else if(l instanceof Se){if(typeof h=="number")throw new Error("");f=l.get(h)?.data}else l!==null&&(f=l[h]);if(f!==void 0)p.push(l),l=f;else return null}}s.apply=e;function t(l,c){for(let u=0;u<l.length&&u<c.length;u++)if(l[u]!==c[u])return!0;return!1}s.pathDisjoint=t;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 i(l,c){return t(l.path,c.path)}s.commutative=i;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})(gt||(gt={}));var $s;(l=>{function n(){return[]}l.empty=n;function r(c,u){let p=[];for(let d of c){let[h,...f]=d.path;h===u&&p.push({...d,path:f})}return p}l.removePrefix=r;function e(c,u){return c.map(p=>({...p,path:[u,...p.path]}))}l.addPrefix=e;function t(c,u){return[...c,...u]}l.concat=t;function o(c,u){return[...c.filter(d=>!u.some(h=>gt.subsumed(d,h))),...u]}l.compress=o;function i(c,u){return c.every(p=>u.every(d=>gt.commutative(p,d)))}l.commutative=i;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=[],h=[];for(let f of u)try{if(f.type===3||f.type===5&&f.path[f.path.length-1]==="variables"){let m,y,g;if(f.type===3?(m=yt.zoom(p,[...f.path,f.id]),g=gt.apply(p,{...f,type:2})):(m=yt.zoom(p,[...f.path,f.id,"value"]),g=gt.apply(p,f)),g!==null){p=g.data;let[v,O]=eg(p,{[f.id]:m});p=v;for(let P=0;P<O.length;P++){let S=O[P],T=S.pop();if(typeof T=="number"){let I=[T];for(let E=P+1;E<O.length;E++){let N=O[E],M=N[N.length-1];if(typeof M=="number"&&yt.equal(S,N.slice(0,N.length-1)))I.push(M),O.splice(E,1);else break}let x=yt.zoom(p,S);y=x.map((E,N)=>I.includes(N)?f.id:E),m=x,T=S.pop()}else{if(T==="alphaOverride"||T==="alpha"){m/=100;let I=m,x=yt.zoom(p,S.slice(0,S.length-2)),E=x.layers.map(N=>N.id===S[S.length-1]?{...N,data:{...N.data,[T]:I}}:N);Object.setPrototypeOf(E,Object.getPrototypeOf(x.layers)),x.layers=E}y=f.id}d.push({type:0,path:S,props:{[T]:m}}),h.push({type:0,path:S,props:{[T]:y}})}h.push(g.reverse),d.push(g.actual)}}else{let m=gt.apply(p,f);m!==null&&(d.push(m.actual),p=m.data,h.push(m.reverse))}}catch(m){if(m instanceof ra)return null;throw m}return{data:p,actual:d,reverse:h.reverse()}}l.apply=s})($s||($s={}));var rg=Symbol(),UC=Symbol(),Ec=Symbol(),oi=class{reportOp(r,e,t=[]){let o=this;if(e===null)return;o._current=e.data;let i=t;for(;!(o instanceof Dc);){let a=o._path,s=o._current;if(a!==""&&i.splice(0,0,a),o=o._parent,o===null)return;o.update(a,s)}o.push(i,r,e.actual,e.reverse)}deleteChildren(r){if(this._children){let e=this._children[r];if(e){let t=e[Ec];t&&t(),delete this._children[r]}}}},ep=class extends oi{constructor(r,e,t){super(),this._parent=r,this._path=e,this._current=t}update(r,e){if(Array.isArray(this._current)){if(typeof r=="string"&&(r=parseInt(r),isNaN(r)))throw new Error("Invalid path");this._current=[...this._current],this._current[r]=e}else this._current={...this._current,[r]:e}}runOp(r){this.reportOp(r,na.runOp(this._current,r),r.path)}},tp=class extends oi{constructor(r,e,t){super(),this._parent=r,this._path=e,this._current=t}update(r,e){this._current={...this._current,[r]:e},Object.setPrototypeOf(this._current,be.prototype)}runOp(r){this.reportOp(r,this._current.runOp(r))}},og={get(n,r){if(r===Ec)return()=>{n._parent=null};if(r===rg)return n._current;if(r===UC)return n;let{_current:e,_children:t}=n;if(r==="push"&&Array.isArray(e))throw new Error("not supported to expand array");let o=t===void 0?void 0:t[r];if(o!==void 0)return o;let i=e[r],a=_c(n,r,i);return a!==i?(t===void 0&&(t={},n._children=t),t[r]=a,a):i},has(n,r){return r in n._current},ownKeys(n){return Reflect.ownKeys(n._current)},defineProperty(){throw Error("not supported")},getPrototypeOf(n){return Object.getPrototypeOf(n._current)},setPrototypeOf(){throw Error("not supported")},getOwnPropertyDescriptor(n,r){let e=n._current,t=Reflect.getOwnPropertyDescriptor(e,r);return t&&{writable:!0,configurable:!0,enumerable:t.enumerable,value:e[r]}}},kC={...og,set(n,r,e){let t={type:0,props:{[r]:xt(e)??e}};return n.deleteChildren(r),n.runOp(t),!0},deleteProperty(n,r){let e={type:0,props:{[r]:void 0}};return n.deleteChildren(r),n.runOp(e),!0}},HC={...og,set(n,r,e){return e===void 0?this.deleteProperty(n,r):(n.deleteChildren(r),n.runOp({type:1,id:r,data:e})),!0},deleteProperty(n,r){return n.runOp({type:2,id:r}),!0}},sa=class extends oi{constructor(r,e,t){super(),this._children={},this._parent=r,this._path=e,this._current=t,this[Ec]=()=>{this._parent=null}}unproxy(){return this._current}update(r,e){this._current=this._current.modifyById(r,e)}runOp(r){this.reportOp(r,this._current.runOp(r))}randomId(){return this._current.randomId()}isDescendantOf(r,e){return this._current.isDescendantOf(r,e)}childrenOf(r){return this._current.childrenOf(r)}traverse(r){return this._current.traverse(r)}get(r){return this._current.get(r)}parent(r){return this._current.parent(r)}traverse(r){this._current.traverse((e,t)=>{r(e,this.data(e))})}data(r){let{_current:e,_children:t}=this,o=t===void 0?void 0:t[r];if(o!==void 0)return o;let i=e.get(r)?.data,a=_c(this,r,i);return a!==i?(t===void 0&&(t={},this._children=t),t[r]=a,a):i}add(r,e,t,o,i){this.runOp({type:7,parent:r,fi:e,id:t,data:o,children:i})}move(r,e,t){this.runOp({type:9,parent:r,fi:e,id:t})}insertAfter(r,e,t){let o=this._current.insertAfterHelper(r,e,t.length);for(let i=0;i<t.length;i++){let a=t[i];this.add(r,o[i],a.id,a.data,a.children)}}insertBefore(r,e,t){let o=this._current.insertBeforeHelper(r,e,t.length);for(let i=0;i<t.length;i++){let a=t[i];this.add(r,o[i],a.id,a.data,a.children)}}moveAfter(r,e,t){let o=this._current.insertAfterHelper(r,e,t.length);for(let i=0;i<t.length;i++){let a=t[i];this.move(r,o[i],a)}}moveBefore(r,e,t){let o=this._current.insertBeforeHelper(r,e,t.length);for(let i=0;i<t.length;i++){let a=t[i];this.move(r,o[i],a)}}delete(r){this.deleteChildren(r),this.runOp({type:8,id:r})}sortNext(r){return this._current.sortNext(r)}sortPrevious(r){return this._current.sortPrevious(r)}getAllSorted(r){return this._current.getAllSorted(r)}},la=class extends oi{constructor(r,e,t){super(),this._children={},this._parent=r,this._path=e,this._current=t,this[Ec]=()=>{this._parent=null}}unproxy(){return this._current}get length(){return this._current.length}forEach(r){let e=this.length;for(let t=0;t<e;t++){let o=this._current[t].id,i=this._current[t].fi;r(this.data(this._current[t].id),o,i)}}find(r){let e=this.length;for(let t=0;t<e;t++){let o=this._current[t].id;if(r(this.data(o),o))return this.get(o)}}update(r,e){this._current=this._current.modifyById(r,e)}randomId(){return this._current.randomId()}get(r){return{...this._current.get(r),data:this.data(r)}}data(r){let{_current:e,_children:t}=this,o=t===void 0?void 0:t[r];if(o!==void 0)return o;let i=e.get(r)?.data,a=_c(this,r,i);return a!==i?(t===void 0&&(t={},this._children=t),t[r]=a,a):i}runOp(r){this.reportOp(r,this._current.runOp(r))}add(r,e,t){this.runOp({type:4,fi:r,id:e,data:t})}move(r,e){this.runOp({type:6,fi:r,id:e})}insertAfter(r,e){let t=this._current.insertAfterHelper(r,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.add(t[o],i.id,i.data)}}insertBefore(r,e){let t=this._current.insertBeforeHelper(r,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.add(t[o],i.id,i.data)}}moveAfter(r,e){let t=this._current.insertAfterHelper(r,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.move(t[o],i)}}moveBefore(r,e){let t=this._current.insertBeforeHelper(r,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.move(t[o],i)}}delete(r){this.deleteChildren(r),this.runOp({type:5,id:r})}};function Jd(n,r,e){if(n.length>0){let t=n[n.length-1];if(t.type===0&&r.type===0&&yt.equal(t.path,e)){Object.assign(t.props,r.props);return}}n.push({...r,path:e})}var Dc=class extends oi{constructor(r){super(),this.ts=[],this.actual=[],this.reverse=[],this._current=r}update(r,e){if(r!=="")throw new Error("");this._current=e}push(r,e,t,o){Jd(this.ts,e,r),Jd(this.actual,t,r),Jd(this.reverse,o,r)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function _c(n,r,e){return e instanceof st?new sa(n,r,e):e instanceof Se?new la(n,r,e):e instanceof be?new Proxy(new tp(n,r,e),HC):e!==null&&typeof e=="object"?oa(e)?e:new Proxy(new ep(n,r,e),kC):e}function rp(n){let r=new Dc(n);return[_c(r,"",n),r]}function mn(n,r){let[e,t]=rp(n);return r(e),t.result()}function xt(n){return n instanceof sa||n instanceof la?n._current:n!==null&&typeof n=="object"?n[rg]:n}var yt;(o=>{function n(i,a){if(a.length===i.length)for(var s=0;s<i.length;){if(i[s]!==a[s])return!1;s+=1}else return!1;return!0}o.equal=n;function r(i,a,s){let l=t(s,i);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=r;function e(i,a){if((i instanceof st||i instanceof sa)&&typeof a=="string")return i.data(a);if((i instanceof Se||i instanceof la)&&typeof a=="string")return i.data(a);if(typeof a=="number"&&Array.isArray(i))return i[a];if(typeof a=="string"&&typeof i=="object"&&i!==null)return i[a]}o.zoomOnce=e;function t(i,a,s=0){for(;s<a.length&&i!==void 0;)i=e(i,a[s]),s+=1;return i}o.zoom=t})(yt||(yt={}));function ng(n,r){let e=[];if(r.length===n.length)for(var t=0;t<n.length;){if(r[t]==="*")e.push(n[t]);else if(n[t]!==r[t])return null;t+=1}else return null;return e}function Ge(n,r){let e=[];if(r.length<=n.length)for(var t=0;t<r.length;){if(r[t]==="*")e.push(n[t]);else if(n[t]!==r[t])return null;t+=1}else return null;return e}var Bc=class{},Ys=class extends Bc{constructor(e){super();this.id=e}},Xs=class extends Bc{constructor(e){super();this.data=e}};var np;try{np=new TextDecoder}catch{}var de,gn,G=0;var pg=[],ip=pg,ap=0,yr={},Ke,yn,Rr=0,yo=0,Mr,Fo,lr=[],Je,ig={useRecords:!1,mapsAsObjects:!0},Ks=class{},lp=new Ks;lp.name="MessagePack 0xC1";var ca=!1,go=class{constructor(r){r&&(r.useRecords===!1&&r.mapsAsObjects===void 0&&(r.mapsAsObjects=!0),r.structures?r.structures.sharedLength=r.structures.length:r.getStructures&&((r.structures=[]).uninitialized=!0,r.structures.sharedLength=0)),Object.assign(this,r)}unpack(r,e){if(de)return gg(()=>(Rc(),this?this.unpack(r,e):go.prototype.unpack.call(ig,r,e)));gn=e>-1?e:r.length,G=0,ap=0,yo=0,yn=null,ip=pg,Mr=null,de=r;try{Je=r.dataView||(r.dataView=new DataView(r.buffer,r.byteOffset,r.byteLength))}catch(t){throw de=null,r instanceof Uint8Array?t:new Error("Source must be a Uint8Array or Buffer but was a "+(r&&typeof r=="object"?r.constructor.name:typeof r))}if(this instanceof go){if(yr=this,this.structures)return Ke=this.structures,Lc();(!Ke||Ke.length>0)&&(Ke=[])}else yr=ig,(!Ke||Ke.length>0)&&(Ke=[]);return Lc()}unpackMultiple(r,e){let t,o=0;try{ca=!0;let i=r.length,a=this?this.unpack(r,i):Gc.unpack(r,i);if(e){for(e(a);G<i;)if(o=G,e(Lc())===!1)return}else{for(t=[a];G<i;)o=G,t.push(Lc());return t}}catch(i){throw i.lastPosition=o,i.values=t,i}finally{ca=!1,Rc()}}_mergeStructures(r,e){r=r||[];for(let t=0,o=r.length;t<o;t++){let i=r[t];i&&(i.isShared=!0,t>=32&&(i.highByte=t-32>>5))}r.sharedLength=r.length;for(let t in e||[])if(t>=0){let o=r[t],i=e[t];i&&(o&&((r.restoreStructures||(r.restoreStructures=[]))[t]=o),r[t]=i)}return this.structures=r}decode(r,e){return this.unpack(r,e)}};function Lc(){try{if(!yr.trusted&&!ca){let r=Ke.sharedLength||0;r<Ke.length&&(Ke.length=r)}let n=Ot();if(G==gn)Ke.restoreStructures&&ag(),Ke=null,de=null,Fo&&(Fo=null);else if(G>gn){let r=new Error("Unexpected end of MessagePack data");throw r.incomplete=!0,r}else if(!ca)throw new Error("Data read, but end of buffer not reached");return n}catch(n){throw Ke.restoreStructures&&ag(),Rc(),(n instanceof RangeError||n.message.startsWith("Unexpected end of buffer"))&&(n.incomplete=!0),n}}function ag(){for(let n in Ke.restoreStructures)Ke[n]=Ke.restoreStructures[n];Ke.restoreStructures=null}function Ot(){let n=de[G++];if(n<160)if(n<128){if(n<64)return n;{let r=Ke[n&63]||yr.getStructures&&fg()[n&63];return r?(r.read||(r.read=cp(r,n&63)),r.read()):n}}else if(n<144)if(n-=128,yr.mapsAsObjects){let r={};for(let e=0;e<n;e++)r[mg()]=Ot();return r}else{let r=new Map;for(let e=0;e<n;e++)r.set(Ot(),Ot());return r}else{n-=144;let r=new Array(n);for(let e=0;e<n;e++)r[e]=Ot();return r}else if(n<192){let r=n-160;if(yo>=G)return yn.slice(G-Rr,(G+=r)-Rr);if(yo==0&&gn<140){let e=r<16?up(r):hg(r);if(e!=null)return e}return sp(r)}else{let r;switch(n){case 192:return null;case 193:return Mr?(r=Ot(),r>0?Mr[1].slice(Mr.position1,Mr.position1+=r):Mr[0].slice(Mr.position0,Mr.position0-=r)):lp;case 194:return!1;case 195:return!0;case 196:return op(de[G++]);case 197:return r=Je.getUint16(G),G+=2,op(r);case 198:return r=Je.getUint32(G),G+=4,op(r);case 199:return ni(de[G++]);case 200:return r=Je.getUint16(G),G+=2,ni(r);case 201:return r=Je.getUint32(G),G+=4,ni(r);case 202:if(r=Je.getFloat32(G),yr.useFloat32>2){let e=zc[(de[G]&127)<<1|de[G+1]>>7];return G+=4,(e*r+(r>0?.5:-.5)>>0)/e}return G+=4,r;case 203:return r=Je.getFloat64(G),G+=8,r;case 204:return de[G++];case 205:return r=Je.getUint16(G),G+=2,r;case 206:return r=Je.getUint32(G),G+=4,r;case 207:return yr.int64AsNumber?(r=Je.getUint32(G)*4294967296,r+=Je.getUint32(G+4)):r=Je.getBigUint64(G),G+=8,r;case 208:return Je.getInt8(G++);case 209:return r=Je.getInt16(G),G+=2,r;case 210:return r=Je.getInt32(G),G+=4,r;case 211:return yr.int64AsNumber?(r=Je.getInt32(G)*4294967296,r+=Je.getUint32(G+4)):r=Je.getBigInt64(G),G+=8,r;case 212:if(r=de[G++],r==114)return dg(de[G++]&63);{let e=lr[r];if(e)return e.read?(G++,e.read(Ot())):e.noBuffer?(G++,e()):e(de.subarray(G,++G));throw new Error("Unknown extension "+r)}case 213:return r=de[G],r==114?(G++,dg(de[G++]&63,de[G++])):ni(2);case 214:return ni(4);case 215:return ni(8);case 216:return ni(16);case 217:return r=de[G++],yo>=G?yn.slice(G-Rr,(G+=r)-Rr):qC(r);case 218:return r=Je.getUint16(G),G+=2,yo>=G?yn.slice(G-Rr,(G+=r)-Rr):$C(r);case 219:return r=Je.getUint32(G),G+=4,yo>=G?yn.slice(G-Rr,(G+=r)-Rr):YC(r);case 220:return r=Je.getUint16(G),G+=2,lg(r);case 221:return r=Je.getUint32(G),G+=4,lg(r);case 222:return r=Je.getUint16(G),G+=2,cg(r);case 223:return r=Je.getUint32(G),G+=4,cg(r);default:if(n>=224)return n-256;if(n===void 0){let e=new Error("Unexpected end of MessagePack data");throw e.incomplete=!0,e}throw new Error("Unknown MessagePack token "+n)}}}var WC=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function cp(n,r){function e(){if(e.count++>2){let o=n.read=new Function("r","return function(){return {"+n.map(i=>WC.test(i)?i+":r()":"["+JSON.stringify(i)+"]:r()").join(",")+"}}")(Ot);return n.highByte===0&&(n.read=sg(r,n.read)),o()}let t={};for(let o=0,i=n.length;o<i;o++){let a=n[o];t[a]=Ot()}return t}return e.count=0,n.highByte===0?sg(r,e):e}var sg=(n,r)=>function(){let e=de[G++];if(e===0)return r();let t=n<32?-(n+(e<<5)):n+(e<<5),o=Ke[t]||fg()[t];if(!o)throw new Error("Record id is not defined for "+t);return o.read||(o.read=cp(o,n)),o.read()};function fg(){let n=gg(()=>(de=null,yr.getStructures()));return Ke=yr._mergeStructures(n,Ke)}var sp=Vc,qC=Vc,$C=Vc,YC=Vc;function Vc(n){let r;if(n<16&&(r=up(n)))return r;if(n>64&&np)return np.decode(de.subarray(G,G+=n));let e=G+n,t=[];for(r="";G<e;){let o=de[G++];if((o&128)===0)t.push(o);else if((o&224)===192){let i=de[G++]&63;t.push((o&31)<<6|i)}else if((o&240)===224){let i=de[G++]&63,a=de[G++]&63;t.push((o&31)<<12|i<<6|a)}else if((o&248)===240){let i=de[G++]&63,a=de[G++]&63,s=de[G++]&63,l=(o&7)<<18|i<<12|a<<6|s;l>65535&&(l-=65536,t.push(l>>>10&1023|55296),l=56320|l&1023),t.push(l)}else t.push(o);t.length>=4096&&(r+=Wt.apply(String,t),t.length=0)}return t.length>0&&(r+=Wt.apply(String,t)),r}function lg(n){let r=new Array(n);for(let e=0;e<n;e++)r[e]=Ot();return r}function cg(n){if(yr.mapsAsObjects){let r={};for(let e=0;e<n;e++)r[mg()]=Ot();return r}else{let r=new Map;for(let e=0;e<n;e++)r.set(Ot(),Ot());return r}}var Wt=String.fromCharCode;function hg(n){let r=G,e=new Array(n);for(let t=0;t<n;t++){let o=de[G++];if((o&128)>0){G=r;return}e[t]=o}return Wt.apply(String,e)}function up(n){if(n<4)if(n<2){if(n===0)return"";{let r=de[G++];if((r&128)>1){G-=1;return}return Wt(r)}}else{let r=de[G++],e=de[G++];if((r&128)>0||(e&128)>0){G-=2;return}if(n<3)return Wt(r,e);let t=de[G++];if((t&128)>0){G-=3;return}return Wt(r,e,t)}else{let r=de[G++],e=de[G++],t=de[G++],o=de[G++];if((r&128)>0||(e&128)>0||(t&128)>0||(o&128)>0){G-=4;return}if(n<6){if(n===4)return Wt(r,e,t,o);{let i=de[G++];if((i&128)>0){G-=5;return}return Wt(r,e,t,o,i)}}else if(n<8){let i=de[G++],a=de[G++];if((i&128)>0||(a&128)>0){G-=6;return}if(n<7)return Wt(r,e,t,o,i,a);let s=de[G++];if((s&128)>0){G-=7;return}return Wt(r,e,t,o,i,a,s)}else{let i=de[G++],a=de[G++],s=de[G++],l=de[G++];if((i&128)>0||(a&128)>0||(s&128)>0||(l&128)>0){G-=8;return}if(n<10){if(n===8)return Wt(r,e,t,o,i,a,s,l);{let c=de[G++];if((c&128)>0){G-=9;return}return Wt(r,e,t,o,i,a,s,l,c)}}else if(n<12){let c=de[G++],u=de[G++];if((c&128)>0||(u&128)>0){G-=10;return}if(n<11)return Wt(r,e,t,o,i,a,s,l,c,u);let p=de[G++];if((p&128)>0){G-=11;return}return Wt(r,e,t,o,i,a,s,l,c,u,p)}else{let c=de[G++],u=de[G++],p=de[G++],d=de[G++];if((c&128)>0||(u&128)>0||(p&128)>0||(d&128)>0){G-=12;return}if(n<14){if(n===12)return Wt(r,e,t,o,i,a,s,l,c,u,p,d);{let h=de[G++];if((h&128)>0){G-=13;return}return Wt(r,e,t,o,i,a,s,l,c,u,p,d,h)}}else{let h=de[G++],f=de[G++];if((h&128)>0||(f&128)>0){G-=14;return}if(n<15)return Wt(r,e,t,o,i,a,s,l,c,u,p,d,h,f);let m=de[G++];if((m&128)>0){G-=15;return}return Wt(r,e,t,o,i,a,s,l,c,u,p,d,h,f,m)}}}}}function op(n){return yr.copyBuffers?Uint8Array.prototype.slice.call(de,G,G+=n):de.subarray(G,G+=n)}function ni(n){let r=de[G++];if(lr[r])return lr[r](de.subarray(G,G+=n));throw new Error("Unknown extension type "+r)}var ug=new Array(4096);function mg(){let n=de[G++];if(n>=160&&n<192){if(n=n-160,yo>=G)return yn.slice(G-Rr,(G+=n)-Rr);if(!(yo==0&&gn<180))return sp(n)}else return G--,Ot();let r=(n<<5^(n>1?Je.getUint16(G):n>0?de[G]:0))&4095,e=ug[r],t=G,o=G+n-3,i,a=0;if(e&&e.bytes==n){for(;t<o;){if(i=Je.getUint32(t),i!=e[a++]){t=1879048192;break}t+=4}for(o+=3;t<o;)if(i=de[t++],i!=e[a++]){t=1879048192;break}if(t===o)return G=t,e.string;o-=3,t=G}for(e=[],ug[r]=e,e.bytes=n;t<o;)i=Je.getUint32(t),e.push(i),t+=4;for(o+=3;t<o;)i=de[t++],e.push(i);let s=n<16?up(n):hg(n);return s!=null?e.string=s:e.string=sp(n)}var dg=(n,r)=>{var e=Ot();let t=n;r!==void 0&&(n=n<32?-((r<<5)+n):(r<<5)+n,e.highByte=r);let o=Ke[n];return o&&o.isShared&&((Ke.restoreStructures||(Ke.restoreStructures=[]))[n]=o),Ke[n]=e,e.read=cp(e,t),e.read()},yg=typeof self=="object"?self:global;lr[0]=()=>{};lr[0].noBuffer=!0;lr[101]=()=>{let n=Ot();return(yg[n[0]]||Error)(n[1])};lr[105]=n=>{let r=Je.getUint32(G-4);Fo||(Fo=new Map);let e=de[G],t;e>=144&&e<160||e==220||e==221?t=[]:t={};let o={target:t};Fo.set(r,o);let i=Ot();return o.used?Object.assign(t,i):(o.target=i,i)};lr[112]=n=>{let r=Je.getUint32(G-4),e=Fo.get(r);return e.used=!0,e.target};lr[115]=()=>new Set(Ot());var dp=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(n=>n+"Array");lr[116]=n=>{let r=n[0],e=dp[r];if(!e)throw new Error("Could not find typed array for code "+r);return new yg[e](Uint8Array.prototype.slice.call(n,1).buffer)};lr[120]=()=>{let n=Ot();return new RegExp(n[0],n[1])};lr[98]=n=>{let r=(n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3],e=G;G+=r-4,Mr=[Ot(),Ot()],Mr.position0=0,Mr.position1=0;let t=G;G=e;try{return Ot()}finally{G=t}};lr[255]=n=>n.length==4?new Date((n[0]*16777216+(n[1]<<16)+(n[2]<<8)+n[3])*1e3):n.length==8?new Date(((n[0]<<22)+(n[1]<<14)+(n[2]<<6)+(n[3]>>2))/1e6+((n[3]&3)*4294967296+n[4]*16777216+(n[5]<<16)+(n[6]<<8)+n[7])*1e3):n.length==12?new Date(((n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3])/1e6+((n[4]&128?-281474976710656:0)+n[6]*1099511627776+n[7]*4294967296+n[8]*16777216+(n[9]<<16)+(n[10]<<8)+n[11])*1e3):new Date("invalid");function gg(n){let r=gn,e=G,t=ap,o=Rr,i=yo,a=yn,s=ip,l=Fo,c=Mr,u=new Uint8Array(de.slice(0,gn)),p=Ke,d=Ke.slice(0,Ke.length),h=yr,f=ca,m=n();return gn=r,G=e,ap=t,Rr=o,yo=i,yn=a,ip=s,Fo=l,Mr=c,de=u,ca=f,Ke=p,Ke.splice(0,Ke.length,...d),yr=h,Je=new DataView(de.buffer,de.byteOffset,de.byteLength),m}function Rc(){de=null,Fo=null,Ke=null}function xg(n){n.unpack?lr[n.type]=n.unpack:lr[n.type]=n}var zc=new Array(147);for(let n=0;n<256;n++)zc[n]=+("1e"+Math.floor(45.15-n*.30103));var Gc=new go({useRecords:!1}),XC=Gc.unpack,KC=Gc.unpackMultiple,QC=Gc.unpack,jc={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},ZC=new Float32Array(1),az=new Uint8Array(ZC.buffer,0,4);var Fc;try{Fc=new TextEncoder}catch{}var Uc,fp,kc=typeof Buffer<"u",pp=kc?Buffer.allocUnsafeSlow:Uint8Array,wg=kc?Buffer:Uint8Array,bg=kc?4294967296:2144337920,Y,Mt,k=0,xo,bo=null,JC=/[\u0080-\uFFFF]/,Qs=Symbol("record-id"),ii=class extends go{constructor(r){super(r),this.offset=0;let e,t,o,i,a,s,l=0,c=wg.prototype.utf8Write?function(x,E,N){return Y.utf8Write(x,E,N)}:Fc&&Fc.encodeInto?function(x,E){return Fc.encodeInto(x,Y.subarray(E)).written}:!1,u=this;r||(r={});let p=r&&r.sequential,d=r.structures||r.saveStructures,h=r.maxSharedStructures;if(h==null&&(h=d?32:0),h>8160)throw new Error("Maximum maxSharedStructure is 8160");let f=r.maxOwnStructures;f==null&&(f=d?32:64),p&&!r.saveStructures&&(this.structures=[]);let m=h>32||f+h>64,y=h+64,g=h+f+64;if(g>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let v=[],O=0,P=0;this.pack=this.encode=function(x,E){if(Y||(Y=new pp(8192),Mt=new DataView(Y.buffer,0,8192),k=0),xo=Y.length-10,xo-k<2048?(Y=new pp(Y.length),Mt=new DataView(Y.buffer,0,Y.length),xo=Y.length-10,k=0):k=k+7&2147483640,t=k,s=u.structuredClone?new Map:null,u.bundleStrings?(bo=["",""],Y[k++]=214,Y[k++]=98,bo.position=k-t,k+=4):bo=null,o=u.structures,o){o.uninitialized&&(o=u._mergeStructures(u.getStructures()));let N=o.sharedLength||0;if(N>h)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 M=0;M<N;M++){let D=o[M];if(!D)continue;let _,B=o.transitions;for(let z=0,U=D.length;z<U;z++){let R=D[z];_=B[R],_||(_=B[R]=Object.create(null)),B=_}B[Qs]=M+64}l=N}p||(o.nextId=N+64)}i&&(i=!1),a=o||[];try{if(S(x),bo){Mt.setUint32(bo.position+t,k-bo.position-t);let N=bo;bo=null,S(N[0]),S(N[1])}if(u.offset=k,s&&s.idsToInsert){k+=s.idsToInsert.length*6,k>xo&&I(k),u.offset=k;let N=tT(Y.subarray(t,k),s.idsToInsert);return s=null,N}return E&Og?(Y.start=t,Y.end=k,Y):Y.subarray(t,k)}finally{if(o){if(P<10&&P++,O>1e4)o.transitions=null,P=0,O=0,v.length>0&&(v=[]);else if(v.length>0&&!p){for(let N=0,M=v.length;N<M;N++)v[N][Qs]=0;v=[]}if(i&&u.saveStructures){let N=o.sharedLength||h;o.length>N&&(o=o.slice(0,N));let M=Y.subarray(t,k);return u.saveStructures(o,l)===!1?(u._mergeStructures(u.getStructures()),u.pack(x)):(l=N,M)}}E&lT&&(k=t)}};let S=x=>{k>xo&&(Y=I(k));var E=typeof x,N;if(E==="string"){let M=x.length;if(bo&&M>=8&&M<4096){let B=JC.test(x);bo[B?0:1]+=x,Y[k++]=193,S(B?-M:M);return}let D;M<32?D=1:M<256?D=2:M<65536?D=3:D=5;let _=M*3;if(k+_>xo&&(Y=I(k+_)),M<64||!c){let B,z,U,R=k+D;for(B=0;B<M;B++)z=x.charCodeAt(B),z<128?Y[R++]=z:z<2048?(Y[R++]=z>>6|192,Y[R++]=z&63|128):(z&64512)===55296&&((U=x.charCodeAt(B+1))&64512)===56320?(z=65536+((z&1023)<<10)+(U&1023),B++,Y[R++]=z>>18|240,Y[R++]=z>>12&63|128,Y[R++]=z>>6&63|128,Y[R++]=z&63|128):(Y[R++]=z>>12|224,Y[R++]=z>>6&63|128,Y[R++]=z&63|128);N=R-k-D}else N=c(x,k+D,_);N<32?Y[k++]=160|N:N<256?(D<2&&Y.copyWithin(k+2,k+1,k+1+N),Y[k++]=217,Y[k++]=N):N<65536?(D<3&&Y.copyWithin(k+3,k+2,k+2+N),Y[k++]=218,Y[k++]=N>>8,Y[k++]=N&255):(D<5&&Y.copyWithin(k+5,k+3,k+3+N),Y[k++]=219,Mt.setUint32(k,N),k+=4),k+=N}else if(E==="number")if(x>>>0===x)x<64?Y[k++]=x:x<256?(Y[k++]=204,Y[k++]=x):x<65536?(Y[k++]=205,Y[k++]=x>>8,Y[k++]=x&255):(Y[k++]=206,Mt.setUint32(k,x),k+=4);else if(x>>0===x)x>=-32?Y[k++]=256+x:x>=-128?(Y[k++]=208,Y[k++]=x+256):x>=-32768?(Y[k++]=209,Mt.setInt16(k,x),k+=2):(Y[k++]=210,Mt.setInt32(k,x),k+=4);else{let M;if((M=this.useFloat32)>0&&x<4294967296&&x>=-2147483648){Y[k++]=202,Mt.setFloat32(k,x);let D;if(M<4||(D=x*zc[(Y[k]&127)<<1|Y[k+1]>>7])>>0===D){k+=4;return}else k--}Y[k++]=203,Mt.setFloat64(k,x),k+=8}else if(E==="object")if(!x)Y[k++]=192;else{if(s){let D=s.get(x);if(D){if(!D.id){let _=s.idsToInsert||(s.idsToInsert=[]);D.id=_.push(D)}Y[k++]=214,Y[k++]=112,Mt.setUint32(k,D.id),k+=4;return}else s.set(x,{offset:k-t})}let M=x.constructor;if(M===Object)T(x,!0);else if(M===Array){N=x.length,N<16?Y[k++]=144|N:N<65536?(Y[k++]=220,Y[k++]=N>>8,Y[k++]=N&255):(Y[k++]=221,Mt.setUint32(k,N),k+=4);for(let D=0;D<N;D++)S(x[D])}else if(M===Map){N=x.size,N<16?Y[k++]=128|N:N<65536?(Y[k++]=222,Y[k++]=N>>8,Y[k++]=N&255):(Y[k++]=223,Mt.setUint32(k,N),k+=4);for(let[D,_]of x)S(D),S(_)}else{for(let D=0,_=Uc.length;D<_;D++){let B=fp[D];if(x instanceof B){let z=Uc[D];if(z.write){z.type&&(Y[k++]=212,Y[k++]=z.type,Y[k++]=0),S(z.write.call(this,x));return}let U=Y,R=Mt,W=k;Y=null;let j;try{j=z.pack.call(this,x,F=>(Y=U,U=null,k+=F,k>xo&&I(k),{target:Y,targetView:Mt,position:k-F}),S)}finally{U&&(Y=U,Mt=R,k=W,xo=Y.length-10)}j&&(j.length+k>xo&&I(j.length+k),k=eT(j,Y,k,z.type));return}}T(x,!x.hasOwnProperty)}}else if(E==="boolean")Y[k++]=x?195:194;else if(E==="bigint"){if(x<BigInt(1)<<BigInt(63)&&x>=-(BigInt(1)<<BigInt(63)))Y[k++]=211,Mt.setBigInt64(k,x);else if(x<BigInt(1)<<BigInt(64)&&x>0)Y[k++]=207,Mt.setBigUint64(k,x);else if(this.largeBigIntToFloat)Y[k++]=203,Mt.setFloat64(k,Number(x));else throw new RangeError(x+" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64");k+=8}else if(E==="undefined")this.encodeUndefinedAsNil?Y[k++]=192:(Y[k++]=212,Y[k++]=0,Y[k++]=0);else if(E==="function")S(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+E)},T=this.useRecords===!1?this.variableMapSize?x=>{let E=Object.keys(x),N=E.length;N<16?Y[k++]=128|N:N<65536?(Y[k++]=222,Y[k++]=N>>8,Y[k++]=N&255):(Y[k++]=223,Mt.setUint32(k,N),k+=4);let M;for(let D=0;D<N;D++)S(M=E[D]),S(x[M])}:(x,E)=>{Y[k++]=222;let N=k-t;k+=2;let M=0;for(let D in x)(E||x.hasOwnProperty(D))&&(S(D),S(x[D]),M++);Y[N+++t]=M>>8,Y[N+t]=M&255}:x=>{let E=Object.keys(x),N,M=a.transitions||(a.transitions=Object.create(null)),D=0;for(let B=0,z=E.length;B<z;B++){let U=E[B];N=M[U],N||(N=M[U]=Object.create(null),D++),M=N}let _=M[Qs];if(_)_>=96&&m?(Y[k++]=((_-=96)&31)+96,Y[k++]=_>>5):Y[k++]=_;else{_=a.nextId,_||(_=64),_<y&&this.shouldShareStructure&&!this.shouldShareStructure(E)?(_=a.nextOwnId,_<g||(_=y),a.nextOwnId=_+1):(_>=g&&(_=y),a.nextId=_+1);let B=E.highByte=_>=96&&m?_-96>>5:-1;M[Qs]=_,a[_-64]=E,_<y?(E.isShared=!0,a.sharedLength=_-63,i=!0,B>=0?(Y[k++]=(_&31)+96,Y[k++]=B):Y[k++]=_):(B>=0?(Y[k++]=213,Y[k++]=114,Y[k++]=(_&31)+96,Y[k++]=B):(Y[k++]=212,Y[k++]=114,Y[k++]=_),D&&(O+=P*D),v.length>=f&&(v.shift()[Qs]=0),v.push(M),S(E))}for(let B=0,z=E.length;B<z;B++)S(x[E[B]])},I=x=>{let E;if(x>16777216){if(x-t>bg)throw new Error("Packed buffer would be larger than maximum buffer size");E=Math.min(bg,Math.round(Math.max((x-t)*(x>67108864?1.25:2),4194304)/4096)*4096)}else E=(Math.max(x-t<<2,Y.length-1)>>12)+1<<12;let N=new pp(E);return Mt=new DataView(N.buffer,0,E),Y.copy?Y.copy(N,0,t,x):N.set(Y.slice(t,x)),k-=t,t=0,xo=N.length-10,Y=N}}useBuffer(r){Y=r,Mt=new DataView(Y.buffer,Y.byteOffset,Y.byteLength),k=0}};fp=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,Ks];Uc=[{pack(n,r,e){let t=n.getTime()/1e3;if((this.useTimestamp32||n.getMilliseconds()===0)&&t>=0&&t<4294967296){let{target:o,targetView:i,position:a}=r(6);o[a++]=214,o[a++]=255,i.setUint32(a,t)}else if(t>0&&t<17179869184){let{target:o,targetView:i,position:a}=r(10);o[a++]=215,o[a++]=255,i.setUint32(a,n.getMilliseconds()*4e6+(t/1e3/4294967296>>0)),i.setUint32(a+4,t)}else if(isNaN(t)){if(this.onInvalidDate)return r(0),e(this.onInvalidDate());let{target:o,targetView:i,position:a}=r(3);o[a++]=212,o[a++]=255,o[a++]=255}else{let{target:o,targetView:i,position:a}=r(15);o[a++]=199,o[a++]=12,o[a++]=255,i.setUint32(a,n.getMilliseconds()*1e6),i.setBigInt64(a+4,BigInt(Math.floor(t)))}}},{pack(n,r,e){let t=Array.from(n),{target:o,position:i}=r(this.structuredClone?3:0);this.structuredClone&&(o[i++]=212,o[i++]=115,o[i++]=0),e(t)}},{pack(n,r,e){let{target:t,position:o}=r(this.structuredClone?3:0);this.structuredClone&&(t[o++]=212,t[o++]=101,t[o++]=0),e([n.name,n.message])}},{pack(n,r,e){let{target:t,position:o}=r(this.structuredClone?3:0);this.structuredClone&&(t[o++]=212,t[o++]=120,t[o++]=0),e([n.source,n.flags])}},{pack(n,r){this.structuredClone?vg(n,16,r):Sg(kc?Buffer.from(n):new Uint8Array(n),r)}},{pack(n,r){let e=n.constructor;e!==wg&&this.structuredClone?vg(n,dp.indexOf(e.name),r):Sg(n,r)}},{pack(n,r){let{target:e,position:t}=r(1);e[t]=193}}];function vg(n,r,e,t){let o=n.byteLength;if(o+1<256){var{target:i,position:a}=e(4+o);i[a++]=199,i[a++]=o+1}else if(o+1<65536){var{target:i,position:a}=e(5+o);i[a++]=200,i[a++]=o+1>>8,i[a++]=o+1&255}else{var{target:i,position:a,targetView:s}=e(7+o);i[a++]=201,s.setUint32(a,o+1),a+=4}i[a++]=116,i[a++]=r,i.set(new Uint8Array(n.buffer,n.byteOffset,n.byteLength),a)}function Sg(n,r){let e=n.byteLength;var t,o;if(e<256){var{target:t,position:o}=r(e+2);t[o++]=196,t[o++]=e}else if(e<65536){var{target:t,position:o}=r(e+3);t[o++]=197,t[o++]=e>>8,t[o++]=e&255}else{var{target:t,position:o,targetView:i}=r(e+5);t[o++]=198,i.setUint32(o,e),o+=4}t.set(n,o)}function eT(n,r,e,t){let o=n.length;switch(o){case 1:r[e++]=212;break;case 2:r[e++]=213;break;case 4:r[e++]=214;break;case 8:r[e++]=215;break;case 16:r[e++]=216;break;default:o<256?(r[e++]=199,r[e++]=o):o<65536?(r[e++]=200,r[e++]=o>>8,r[e++]=o&255):(r[e++]=201,r[e++]=o>>24,r[e++]=o>>16&255,r[e++]=o>>8&255,r[e++]=o&255)}return r[e++]=t,r.set(n,e),e+=o,e}function tT(n,r){let e,t=r.length*6,o=n.length-t;for(r.sort((i,a)=>i.offset>a.offset?1:-1);e=r.pop();){let i=e.offset,a=e.id;n.copyWithin(i+t,i,o),t-=6;let s=i+t;n[s++]=214,n[s++]=105,n[s++]=a>>24,n[s++]=a>>16&255,n[s++]=a>>8&255,n[s++]=a&255,o=i}return n}function xn(n){if(n.Class){if(!n.pack&&!n.write)throw new Error("Extension has no pack or write function");if(n.pack&&!n.type)throw new Error("Extension has no type (numeric code to identify the extension)");fp.unshift(n.Class),Uc.unshift(n)}xg(n)}var Pg=new ii({useRecords:!1}),rT=Pg.pack,oT=Pg.pack;var{NEVER:nT,ALWAYS:iT,DECIMAL_ROUND:aT,DECIMAL_FIT:sT}=jc,Og=512,lT=1024;var Cg=new ii({structuredClone:!0});xn({Class:be.prototype.constructor,type:1,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,be.prototype),n}});xn({Class:Se.prototype.constructor,type:2,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,Se.prototype),n}});xn({Class:st.prototype.constructor,type:3,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,st.prototype),n}});xn({Class:Ys.prototype.constructor,type:4,write(n){return n.id},read(n){return new Ys(n)}});xn({Class:Xs.prototype.constructor,type:5,write(n){return n.data},read(n){return new Xs(n)}});xn({Class:lt.prototype.constructor,type:6,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,lt.prototype),n}});function cT(n){var r=0;if(n.length===0)return r;for(let e=0;e<n.length;e++){let t=n[e];r=(r<<5)-r+t,r=r&r}return r}function hp(n){if(oa(n))return n;if(Array.isArray(n))return n.map(hp);if(typeof n=="object"&&n!==null){let r={};for(let e of Object.keys(n).sort())r[e]=hp(n[e]);return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}else return n}var Hc;(t=>{function n(o){return Cg.pack(o)}t.serialize=n;function r(o){return Cg.unpack(o)}t.deserialize=r;function e(o){return cT(n(hp(o))).toString()}t.checksum=e})(Hc||(Hc={}));var Sn="personal camera",wn="a218fcc3-276b-49b9-b485-49037fd14f5f",Ng=2960946,It=5526619;var ua;(h=>{function n(f,m){return f[0]===m[0]&&f[1]===m[1]}h.isEqual=n;function r(f,m,y){return[f[0]+(m[0]-f[0])*y,f[1]+(m[1]-f[1])*y]}h.lerp=r;function e(f,m){return[f[0]+m[0],f[1]+m[1]]}h.add=e;function t(f,m){return[f[0]-m[0],f[1]-m[1]]}h.sub=t;function o(f,m){return[f[0]*m[0],f[1]*m[1]]}h.multiply=o;function i(f,m){return[f[0]/m[0],f[1]/m[1]]}h.divide=i;function a(f,m){return Math.pow(m[0]-f[0],2)+Math.pow(m[1]-f[1],2)}h.distanceSquared=a;function s(f,m){return Math.sqrt(a(f,m))}h.distance=s;function l(f,m){return f[0]*m[0]+f[1]*m[1]}h.dot=l;function c(f,m){return[f[0]*m,f[1]*m]}h.scalarMultiply=c;function u(f,m,y){let g=h.sub(m,f),v=h.sub(y,f),O=h.dot(g,v)/h.dot(g,g),P=h.scalarMultiply(g,O);return h.add(f,P)}h.projectionOnto=u;function p(f,m,y){return s(f,u(f,m,y))}h.projectionOntoDistance=p;function d(f,m){return[(f[0]+m[0])*.5,(f[1]+m[1])*.5]}h.center=d})(ua||(ua={}));var bn;(s=>{function n(l,c){return l[0]===c[0]&&l[1]===c[1]&&l[2]===c[2]}s.isEqual=n;function r(l,c){return[l[0]+c[0],l[1]+c[1],l[2]+c[2]]}s.add=r;function e(l,c){return[l[0]-c[0],l[1]-c[1],l[2]-c[2]]}s.sub=e;function t(l,c){return[l[0]/c[0],l[1]/c[1],l[2]/c[2]]}s.div=t;function o(l,c){return[l[0]*c[0],l[1]*c[1],l[2]*c[2]]}s.mul=o;function i(l,c){return Math.hypot(l[0]-c[0],l[1]-c[1],l[2]-c[2])}s.dist=i;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})(bn||(bn={}));var Tg;(e=>{function n(t,o){return t[0]===o[0]&&t[1]===o[1]&&t[2]===o[2]&&t[3]===o[3]}e.isEqual=n;function r(t,o,i){return[t[0]+(o[0]-t[0])*i,t[1]+(o[1]-t[1])*i,t[2]+(o[2]-t[2])*i,t[3]+(o[3]-t[3])*i]}e.lerp=r})(Tg||(Tg={}));var vn;(o=>{o.identity=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function r(i,a){for(let s=0;s<16;s++)if(i[s]!==a[s])return!1;return!0}o.isEqual=r;function e(i){return i??o.identity}o.simplify=e;function t(i,a){let s=a.slice(0);for(var l=0,c=a.length;l<c;l+=3){let u=i[3]*a[l]+i[7]*a[l+1]+i[11]*a[l+2]+i[15];s[l]=(i[0]*a[l]+i[4]*a[l+1]+i[8]*a[l+2]+i[12])/u,s[l+1]=(i[1]*a[l]+i[5]*a[l+1]+i[9]*a[l+2]+i[13])/u,s[l+2]=(i[2]*a[l]+i[6]*a[l+1]+i[10]*a[l+2]+i[14])/u}return s}o.applyMatrix4=t})(vn||(vn={}));var Rt;(p=>{function n(d){return typeof d=="object"&&typeof d.r=="number"&&typeof d.g=="number"&&typeof d.b=="number"}p.isRGB=n,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(d){return{r:Math.round(d.r*255),g:Math.round(d.g*255),b:Math.round(d.b*255),a:1}}p.toRgb255a1=o;function i(d){return{r:d.r,g:d.g,b:d.b}}p.clone=i;function a(d){return d=Math.floor(d),{r:(d>>16&255)/255,g:(d>>8&255)/255,b:(d&255)/255}}p.fromHex=a;function s(d){return Math.round(d.r*255)*65536+Math.round(d.g*255)*256+Math.round(d.b*255)}p.toHex=s;function l(d,h){return d.r===h.r&&d.g===h.g&&d.b===h.b}p.equals=l;function c(d,h){return d.r.toFixed(2)===h.r.toFixed(2)&&d.g.toFixed(2)===h.g.toFixed(2)&&d.b.toFixed(2)===h.b.toFixed(2)}p.equalsFixed=c;function u(d,h,f){return{r:d.r+(h.r-d.r)*f,g:d.g+(h.g-d.g)*f,b:d.b+(h.b-d.b)*f}}p.lerp=u})(Rt||(Rt={}));var _e;(c=>{c.white={...Rt.white,a:1},c.transparent={...Rt.white,a:0};function e(u){return{r:u[0],g:u[1],b:u[2],a:u[3]}}c.from0to1=e;function t(u,p){return{...Rt.fromHex(u),a:p}}c.fromHexAndA=t;function o(u){return{r:Math.round(u.r*255),g:Math.round(u.g*255),b:Math.round(u.b*255),a:u.a}}c.toRgb255a1=o;function i(u,p){return Rt.equals(u,p)&&u.a===p.a}c.equals=i;function a(u,p){return Rt.equalsFixed(u,p)&&u.a.toFixed(2)===p.a.toFixed(2)}c.equalsFixed=a;function s(u,p,d){return{r:u.r+(p.r-u.r)*d,g:u.g+(p.g-u.g)*d,b:u.b+(p.b-u.b)*d,a:u.a+(p.a-u.a)*d}}c.lerp=s;function l({r:u,g:p,b:d,a:h}=c.white){return`rgba(${u*255}, ${p*255}, ${d*255}, ${h})`}c.toStyle=l})(_e||(_e={}));var Wc;(r=>r.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(Wc||(Wc={}));var Ag;(r=>r.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(Ag||(Ag={}));var Mg;(r=>r.defaultData={control1:[.5,0],control2:[.5,1]})(Mg||(Mg={}));var Ig;(i=>(i.linear=[0,0,1,1],i.ease=[.25,.1,.25,1],i.easeIn=[.42,0,1,1],i.easeOut=[0,0,.58,1],i.easeInOut=[.42,0,.58,1]))(Ig||(Ig={}));function mp(n){return typeof n=="string"&&n.length===36?/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(n):!1}var Qr;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function r(t){return e.all.includes(t)}e.is=r})(Qr||(Qr={}));var Pn;(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 t(i){return i.type==="PerspectiveCamera"?i.perspective?.zoom??1:i.orthographic?.zoom??1}o.getZoom=t})(Pn||(Pn={}));var vo;(e=>{function n(t,o=.1){return{disabled:!1,type:"linear",hideBase:!1,count:3,radial:{radius:Math.max(t[0],t[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:[t[0]+t[0]*o,0,0]},grid:{count:[2,2,2],size:t.map(i=>i*(1+o)),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"}}}e.defaultData=n;function r(t,o){let i={...t};if(uT.forEach(a=>{Object.assign(i,{[a]:o[a]??t[a]})}),i.radial={...t.radial},o.radial){let a=t.radial,s=o.radial;dT.forEach(l=>{Object.assign(i.radial,{[l]:s[l]??a[l]})})}if(i.linear={...t.linear},o.linear){let a=t.linear,s=o.linear;pT.forEach(l=>{Object.assign(i.linear,{[l]:s[l]??a[l]})})}if(i.grid={...t.grid},o.grid){let a=t.grid,s=o.grid;fT.forEach(l=>{Object.assign(i.grid,{[l]:s[l]??a[l]})})}if(i.toObject={...t.toObject},o.toObject){let a=t.toObject,s=o.toObject;hT.forEach(l=>{Object.assign(i.toObject,{[l]:s[l]??a[l]})})}if(i.randomnessObject={...t.randomnessObject},o.randomnessObject){let a=t.randomnessObject,s=o.randomnessObject;mT.forEach(l=>{Object.assign(i.randomnessObject,{[l]:s[l]??a[l]})})}return i}e.merge=r})(vo||(vo={}));var qc;(t=>{t.defaultData={radial:{},linear:{},grid:{},toObject:{},randomnessObject:{}};let r=["radial","linear","grid","toObject","randomnessObject"];function e(o,i){let a=[];o.count!==void 0&&a.push({type:0,path:i,props:{count:o.count}});for(let s of r){let l=o[s];l&&Object.keys(l).length>0&&a.push({type:0,path:[...i,s],props:l})}return a}t.toOps=e})(qc||(qc={}));var uT=["count"],dT=["radius","start","end","position","scale","rotation"],pT=["position","scale","rotation"],fT=["count","size"],hT=["count","position","scale","rotation"],mT=["strength","scale","rotation","position","movement","seed","freqScale"];var $c;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function r(t){return e.all.includes(t)}e.is=r})($c||($c={}));var Yc;(e=>{function n(t){return r(t)}e.defaultData=n;function r(t){if(t==="PointLight")return{type:t,color:_e.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,penumbraSize:.5,depth:1e5};if(t==="SpotLight")return{type:t,color:_e.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(t==="DirectionalLight")return{type:t,color:_e.white,intensity:1,shadows:!0,size:2e3,depth:1e5,penumbraSize:.5,shadowResolution:1024,shadowRadius:1};throw new Error("not implemented")}})(Yc||(Yc={}));var da;(t=>(t.defaultShapeData={type:"PlaneEmitterShape",size:[100,100,100]},t.defaultCollisionData={colliderEntityId:null,collisionBounce:.75},t.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:t.defaultShapeData,autoPlay:!0,emitTimeDelay:0,emitTimeCycle:"infinity",emitTimeLoopDelayStart:"end",emitTimeDuration:1,...t.defaultCollisionData}))(da||(da={}));var On;(r=>r.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]})(On||(On={}));var yp;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function r(t,o){return t.castShadow===o.castShadow&&t.receiveShadow===o.receiveShadow}e.equals=r})(yp||(yp={}));var gp;(e=>{e.defaultData={flatShading:!1,wireframe:!1,side:0};function r(t,o){return t.flatShading===o.flatShading&&t.side===o.side&&t.wireframe===o.wireframe}e.equals=r})(gp||(gp={}));var Xc;(r=>r.defaultData={...gp.defaultData,...yp.defaultData})(Xc||(Xc={}));var Dg;(r=>{function n(e,t){let o=[];if("material"in e){let i=typeof e.material=="string"?t.materials[e.material]??t.lib.materials[e.material]?.asset:e.material;i&&o.push(i)}else if("materials"in e)for(let i of e.materials){let a=typeof i=="string"?t.materials[i]??t.lib.materials[i]?.asset:i;a&&o.push(a)}return o}r.getMaterialData=n})(Dg||(Dg={}));var pa;(e=>(e.defaultVideo={data:"",thumb:"/_assets/_videos/catThumb.png",type:"video",name:"Cat video"},e.maxSize=3e7))(pa||(pa={}));var Eg;(r=>{function n(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"}r.is=n})(Eg||(Eg={}));function Bg(n){return n.type!=="displace"}var _g;(r=>{function n(e){return e==="phong"||e==="toon"||e==="lambert"||e==="physical"}r.is=n})(_g||(_g={}));var Lg=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],Rg=["wrapping","image","video","name","minFilter"],_t;(o=>{function n(i,a){let{texture:s,...l}=a;if(Object.assign(i,l),s){let c=i.texture;c&&Object.assign(c,s)}}o.patch=n;function r(i,a){return i==="light"&&a?e(a):t(i)}o.defaultData=r;function e(i){let a={mode:0,isMask:!1,visible:!0,bumpMap:void 0,bumpMapIntensity:5,roughnessMap:void 0,alphaOverride:1};switch(i){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 t(i){let a={alpha:1,mode:0,isMask:!1,visible:!0};switch(i){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},crop:!1};case"video":return{...a,type:"video",size:[128,128],blending:0,axis:"x",side:2,projection:0,texture:{video:pa.defaultVideo,wrapping:1001,repeat:[1,1],offset:[0,0],rotation:0,minFilter:1008},crop:!1};case"color":return{...a,type:"color",color:Rt.fromHex(It)};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:{...Rt.fromHex(6710886),a:1},colorB:{...Rt.fromHex(6710886),a:1},colorC:{...Rt.fromHex(16777215),a:1},colorD:{...Rt.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:_e.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:_e.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{...a,type:"outline",outlineColor:_e.fromHexAndA(0,1),contourColor:_e.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}};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:{...Rt.fromHex(0),a:1},colorB:{...Rt.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}}}})(_t||(_t={}));var Qt;(c=>{function n(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=n;function r(u){let p="";return u.layers.forEach(d=>{Object.entries(d.data).forEach(([h,f])=>{p+=`${h}${f}`,Array.isArray(f)?f.forEach(m=>p+=`${m}`):typeof f=="object"?Object.values(f).forEach(m=>{typeof m=="number"?p+=`${m.toFixed(4)}`:p+=`${m}`}):p+=`${f}`})}),p}c.getHash=r;function e(){return{layers:new Se}}c.defaultEmptyData=e;function t(u="layer1",p="layer2"){return i("phong",u,p)}c.defaultData=t;function o(u,p){return{...u,name:p}}c.withName=o;function i(u,p="layer1",d="layer2"){let h=new Se;return h.push({fi:0,data:_t.defaultData("light",u),id:p}),h.push({fi:1,data:_t.defaultData("color"),id:d}),{layers:h}}c.defaultTwoLayerData=i;function a(u){let p=_t.defaultData("texture");u&&Object.assign(p.texture,{image:u});let d=new Se;return d.push({fi:0,data:p,id:"layer1"}),d.push({fi:1,data:{..._t.defaultData("transmission"),alpha:1},id:"layer2"}),d.push({fi:2,data:{..._t.defaultData("light","lambert"),alpha:0},id:"layer3"}),{layers:d}}c.defaultUIObjectMaterial=a;function s(u,p="phong",d="layer1",h="layer2"){let f=_t.defaultData("texture");Object.assign(f.texture,{image:u});let m=new Se;return m.push({fi:0,data:f,id:d}),m.push({fi:1,data:_t.defaultData("light",p),id:h}),{layers:m}}c.defaultTwoLayerTextureData=s;function l(u,p="phong",d="layer1",h="layer2"){let f=_t.defaultData("video");Object.assign(f.texture,{video:u});let m=new Se;return m.push({fi:0,data:f,id:d}),m.push({fi:1,data:_t.defaultData("light",p),id:h}),{layers:m}}c.defaultTwoLayerVideoTextureData=l})(Qt||(Qt={}));var fa;(r=>{function n(){return{points:new Se,roundness:0,shapeHoles:[],isClosed:!1}}r.defaultData=n})(fa||(fa={}));var ha;(r=>{function n(){return{points:new Se,lastInsertionPlane:null,subdivisions:12,isClosed:!1}}r.defaultData=n})(ha||(ha={}));var xp={type:"Ellipse",width:50,height:50,spikes:16,angle:360,innerRadius:0};var Kc;(r=>{function n(e,t){let o={...e};return yT.forEach(i=>{Object.assign(o,{[i]:t[i]??e[i]})}),o}r.merge=n})(Kc||(Kc={}));var Qc={shape:xp,depth:1,offset:0,bevel:50,bevelSides:6,angle:0,twist:0,startScale:1,endScale:1,capType:"flat"},yT=["depth","offset","angle","twist","startScale","endScale"];var Zs;(e=>{function n(t){return t==="PolygonGeometry"||t==="RectangleGeometry"||t==="StarGeometry"||t==="TriangleGeometry"||t==="EllipseGeometry"||t==="UIGeometry"}e.is2DParametricMesh=n;function r(t){return t==="PolygonGeometry"||t==="PolygonGeometry"||t==="RectangleGeometry"||t==="StarGeometry"||t==="TriangleGeometry"||t==="EllipseGeometry"||t==="PathGeometry"||t==="VectorGeometry"||t==="ConeGeometry"||t==="CubeGeometry"||t==="CylinderGeometry"||t==="DodecahedronGeometry"||t==="HelixGeometry"||t==="IcosahedronGeometry"||t==="LatheGeometry"||t==="PyramidGeometry"||t==="SphereGeometry"||t==="PlaneGeometry"||t==="BackdropGeometry"||t==="TorusGeometry"||t==="TorusKnotGeometry"||t==="BooleanGeometry"||t==="TextGeometry"}e.isParametricMesh=r})(Zs||(Zs={}));var Zc;(r=>{function n(e,t){let o={...e};return Object.assign(o,t),o.type==="PathGeometry"&&"extrusion"in t&&t.extrusion&&(o.extrusion={...e.extrusion},Object.assign(o.extrusion,Kc.merge(o.extrusion,t.extrusion))),o}r.merge=n})(Zc||(Zc={}));var Cn;(r=>{function n(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:ha.defaultData(),extrusion:Qc};if(e==="VectorGeometry")return{width:1,height:1,type:e,subdivisions:12,shape:fa.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==="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",extrudeBevelSize:0,extrudeBevelSegments:1};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")}r.defaultData=n})(Cn||(Cn={}));var Jc;(r=>r.defaultData={enabled:!1,useBackgroundColor:!1,color:Rt.white,near:.1,far:2e3})(Jc||(Jc={}));var eu;(e=>{let n={opacity:1,blendFunction:13,enabled:!1};e.defaultData={enabled:!1,pixelation:{...n,blendFunction:16,granularity:15},bloom:{...n,blendFunction:16,intensity:1,blurScale:1,luminanceThreshold:.25,luminanceSmoothing:.025,kernelSize:3},chromaticAberration:{...n,offset:[2,2]},vignette:{...n,darkness:1,offset:0},hueSaturation:{...n,hue:3,saturation:0},brightnessContrast:{...n,brightness:.25,contrast:0},depthOfField:{...n,focusDistance:100,focalLength:20,bokehScale:5},noise:{...n,blendFunction:16}}})(eu||(eu={}));var bp;(r=>r.defaultData={softShadowQuality:"low"})(bp||(bp={}));var vp;(r=>r.defaultData={enabled:!0,color:{r:.8274509803921568,g:.8274509803921568,b:.8274509803921568},intensity:.75})(vp||(vp={}));var Sp;(r=>r.defaultData={occlusion:!1,aoFullRes:!1,radius:256,bias:.5,aoColor:{r:.19607843137254902,g:.19607843137254902,b:.19607843137254902}})(Sp||(Sp={}));var Js;(r=>r.defaultData={usePhysics:!1,gravity:-10})(Js||(Js={}));var wp;(r=>r.defaultData={playCamera:Sn,gameControlObject:null})(wp||(wp={}));var tu;(r=>r.defaultData={backgroundColor:_e.fromHexAndA(Ng,1),postprocessing:eu.defaultData,fog:Jc.defaultData,globalPhysics:Js.defaultData,ambient:vp.defaultData,ao:Sp.defaultData,shadow:bp.defaultData,publish:wp.defaultData})(tu||(tu={}));var ru;(r=>r.defaultData={colliderType:"box",size:[100,100,100],colliderHelperVisible:!0,forceType:"collider",forceRange:"global",forceIntensity:.5,forceDambing:.95})(ru||(ru={}));var Vg;(e=>{function n(t){return t==="Component"||t==="Instance"}e.isComponentRelated=n;function r(t){return t==="Empty"||t==="Instance"}e.isEmptyOrComponent=r})(Vg||(Vg={}));var ma;(o=>{o.identity={...Wc.identity,hiddenMatrix:vn.identity};function r(i){return{position:i.position,rotation:i.rotation,scale:i.scale,hiddenMatrix:i.hiddenMatrix}}o.fromObject=r;function e(i,a){return{position:a?.position||i.position,rotation:a?.rotation||i.rotation,scale:a?.scale||i.scale,hiddenMatrix:a?.hiddenMatrix||i.hiddenMatrix}}o.merge=e;function t(i,a){return tc({position:bn.isEqual(i.position,a.position)?void 0:a.position,rotation:bn.isEqual(i.rotation,a.rotation)?void 0:a.rotation,scale:bn.isEqual(i.scale,a.scale)?null:a.scale,hiddenMatrix:vn.isEqual(i.hiddenMatrix,a.hiddenMatrix)?void 0:a.hiddenMatrix})}o.diff=t})(ma||(ma={}));var Vt;(r=>r.defaultData={states:new Se,events:new Se,visible:!0,raycastLock:!1,physics:On.defaultData,pathSnapping:{pathId:null,slide:0,offset:0,orientation:"tangential"},...ma.identity,cloner:null})(Vt||(Vt={}));var ou;(r=>r.defaultData={type:"Empty",...Vt.defaultData})(ou||(ou={}));var zg;(r=>r.defaultData={type:"ParticleCollider",...ru.defaultData,...Vt.defaultData})(zg||(zg={}));var Gg;(r=>r.defaultData={type:"Component",...Vt.defaultData})(Gg||(Gg={}));var jg;(r=>r.defaultData={type:"Particle",...Vt.defaultData,...da.defaultData})(jg||(jg={}));var ai;(r=>r.defaultData={type:"Mesh",...Vt.defaultData,...Xc.defaultData})(ai||(ai={}));var si;(r=>r.defaultData={...Vt.defaultData,...ma.identity,position:[0,0,Pn.DefaultTargetOffset],...Pn.defaultData})(si||(si={}));var nu;(e=>{function n(t){return{...Vt.defaultData,...Yc.defaultData(t)}}e.defaultData=n,e.defaultDirectionalLightData={...e.defaultData("DirectionalLight"),position:[200,300,300],name:"Directional Light",intensity:.7}})(nu||(nu={}));var ya;(e=>{function n(t,o,i=0){for(;i<o.length;){let a=t?t[o[i]]:void 0;if(o.length===i+1)return a;if(a)t=a.descendants,i+=1;else return}}e.resolveWithDes=n;function r(t,o,i=0){let a=n(t,o,i);if(a){let s=Object.keys(a);if(s.length===1&&s[0]==="descendants")return}return a}e.resolve=r})(ya||(ya={}));var So;(i=>{i.rootOverrideProps=["physics","events"],i.compositeNonOptionalOverrideProps=["geometry"],i.compositeEntireOverrideOverrideProps=["material"];function t(a,s){return{...Vt.defaultData,...s,component:a,overrides:new lt,physics:void 0,events:void 0,type:"Instance"}}i.ofComponent=t;function o(a){let s=ma.fromObject(a.data);return t(a.id,s)}i.fromComponentData=o})(So||(So={}));var Uo;(e=>{e.defaultData={type:"Page",...Vt.defaultData,physics:{...On.defaultData,fusedBody:!1},...tu.defaultData,camera:si.defaultData};function r(t){return t.uiScene!==void 0}e.isUIPage=r})(Uo||(Uo={}));var iu;(i=>(i.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:vn.identity,name:"Play Camera",visible:!0,raycastLock:!1,physics:On.defaultData,states:new Se,events:new Se,cloner:null,pathSnapping:{pathId:null,orientation:"tangential",slide:0,offset:0},...Pn.defaultData},i.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"]},i.defaultMeshObject={name:"Rectangle",...Vt.defaultData,...ai.defaultData,geometry:Cn.defaultData("RectangleGeometry"),material:Qt.defaultTwoLayerData("phong","layer1","layer2")},i.defaultBooleanObject={name:"Boolean",...Vt.defaultData,...ai.defaultData,geometry:Cn.defaultData("BooleanGeometry"),material:Qt.defaultTwoLayerData("phong","layer1","layer2")},i.defaultTextObject={name:"Text",...Vt.defaultData,...ai.defaultData,geometry:Cn.defaultData("TextGeometry"),material:Qt.defaultTwoLayerData("phong","layer1","layer2")}))(iu||(iu={}));var li;(o=>{function n(i,a){let s={name:a};return i.type==="Mesh"?(s.geometry={},"material"in i&&(s.material={layers:new lt}),"materials"in i&&(s.materials=i.materials.map(l=>({layers:new lt})))):Qr.is(i.type)&&(s.perspective={},s.orthographic={}),s}o.newEmpty=n;function r(i,a){if(a===void 0)return i;let s={...i};return"material"in s&&"material"in a&&a.material&&(s.material=mn(s.material,l=>{if(typeof l!="string")for(let[c,u]of Object.entries(a.material.layers)){let p=l.layers.data(c);p&&_t.patch(p,u)}}).data),s.materials&&a.materials&&(s.materials=mn(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 h=l[c]?.layers?.data(p);h&&_t.patch(h,d)}}}).data),s}function e(i,a){let s,l=[],c={orthographic:0,perspective:0,geometry:0};function u(p,d){for(let[h,f]of Object.entries(d.layers)){let{texture:m,...y}=f;if(m!==void 0&&Object.keys(m).length>0){let g={path:[...p,"layers",h,"texture"],props:m,type:0};l.push(g)}if(Object.keys(y).length>0){let g={path:[...p,"layers",h],props:y,type:0};l.push(g)}}}for(let[p,d]of Object.entries(a))if(p!=="name")if(p==="cloner")l.push(...qc.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[h,f]of Object.entries(d))u(["materials",h],f);else if(c[p]===0){if(p==="geometry"&&d.extrusion!==void 0){let h={path:[p,"extrusion"],props:d.extrusion,type:0};l.push(h),d={...d},delete d.extrusion}if(Object.keys(d).length>0){let h={path:[p],props:d,type:0};l.push(h)}}else s===void 0&&(s={path:[],props:{},type:0},l.push(s)),s.props[p]=d;return l}o.toOps=e;function t(i,a){if(a===void 0)return i;let s={...i};if(Object.assign(s,ma.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})}),Qr.is(i.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(i.type==="Mesh")"geometry"in a&&Object.assign(s,{geometry:Zc.merge(s.geometry,a.geometry)}),(a.material||a.materials)&&(s=r(s,a)),s.cloner&&"cloner"in a&&Object.assign(s,{cloner:vo.merge(s.cloner,a.cloner)});else if(i.type==="Empty")s.cloner&&"cloner"in a&&Object.assign(s,{cloner:vo.merge(s.cloner,a.cloner)});else if($c.is(i.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=Rt.clone(l.color))}return s}o.patch=t})(li||(li={}));var ga;(r=>r.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})(ga||(ga={}));var Zr;(r=>r.defaultData={orbitControls:ga.defaultData,playPage:wn,withBackground:!0,preventScroll:!1,preventTouchScroll:!1,hideCursor:!1,mouseEventTarget:"canvas",joystickSizeAndXYOffset:Array(12).fill(0).map((e,t)=>{let o=0,i=0;return t<5?i=-30:t<10&&(i=30),t===0||t===10||t===5?o=30:(t===4||t===11||t===9)&&(o=-30),[120,[o,i],"show"]}),settings:{image:{format:"jpg",ratio:1},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}},stopRaycast:!0,hdTransmission:!1})(Zr||(Zr={}));var Pp;(r=>r.defaultData={id:"basic",label:"Basic",style:"None",prompt:""})(Pp||(Pp={}));var Op;(r=>r.defaultData={weather:0,shadows:0,lightOrigin:0,temperature:0,sun:0,camera:0,environment:0,particles:0,nature:0,floor:0})(Op||(Op={}));var ko;(e=>(e.defaultData=()=>({mode:"line-art-both",prompt:"",negativePrompt:"",style:{...Pp.defaultData},isRandomSeed:!0,seed:e.generateSeed(),guessMode:!1,advanced:!1,steps:20,guidanceScale:7.5,controlNetScale:1,modifiers:Op.defaultData}),e.generateSeed=()=>Math.round(Math.random()*1e5)))(ko||(ko={}));var Fg;(e=>{function n(t){return t.find(o=>o.data.type==="Page"&&o.data.globalPhysics.usePhysics)!==void 0}e.physicsEnabled=n;function r(t,o,i){t.scene.objects.traverseFrom(o,(a,s)=>{if(s.type==="Instance"){let l=xa.getComponentData(t,s.component)?.data;l&&i(a,s,l.events)}else i(a,s,s.events)})}e.traverseModuleInstances=r})(Fg||(Fg={}));var Ho;(c=>{c.TRASH_CAN_ID="830a2708-8ed9-49cf-a68e-085299892222",c.defaultLight={fi:-1,data:nu.defaultDirectionalLightData,id:"830a2708-8ed9-49cf-a68e-085299899103",children:[]};function e(u=!0,p=[]){let d=[],h=iu.defaultMeshObject;u&&(d.push({...c.defaultLight}),d.push({fi:1,id:"7ba78968-2a55-48f2-b14c-5191da3e075e",data:h,children:[]})),d.push(...p);let f=new st;return f.push({fi:1,id:wn,data:{...Uo.defaultData,name:"Scene 1"},children:d}),f}c.createDefaultObjectTreeWithPage=e,c.defaultData={objects:e(),publish:Zr.defaultData,styles:ko.defaultData()},c.emptyDataWithoutPage=function(){return{objects:new st,publish:Zr.defaultData,styles:ko.defaultData()}},c.emptyDataWithPage=function(u=!0){return{objects:e(u),publish:Zr.defaultData,styles:ko.defaultData()}},c.emptyData=function(){return{objects:new st,publish:{...Zr.defaultData},styles:ko.defaultData()}};function s(u){return{...c.defaultData,objects:sr(u,st.prototype)}}c.withObjs=s;function l(u,p){return s([{id:u,data:p,children:[],fi:0}])}c.withObj=l})(Ho||(Ho={}));var ba;(r=>r.defaultData={preset:"fullscreen",allowResponsive:!1,size:[512,512],coords:[0,0],sceneScale:1,color:{r:0,g:0,b:0,a:.5}})(ba||(ba={}));var au;(i=>{function n(a){return a.textValue!==void 0}i.isTextValue=n;function r(a){return typeof a=="number"}i.isNumber=r;function e(a){return typeof a=="boolean"}i.isBoolean=e;function t(a){return n(a)?"string":e(a)?"boolean":"number"}i.typeOfVariable=t;function o(a){return i.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():i.isBoolean(a)?a?"True":"False":i.isNumber(a)?parseFloat(a.toFixed(3)).toString():a.toString()}i.getDisplayedValue=o})(au||(au={}));var Cp;(r=>r.all=["images","videos","colors","audios","particles","fonts","materials","variables"])(Cp||(Cp={}));var Ug;(r=>r.all=[...Cp.all,"components"])(Ug||(Ug={}));var kg;(r=>{function n(){return{images:new be,videos:new be,colors:new be,audios:new be,particles:new be,fonts:new be,materials:new be,components:new be,variables:new be}}r.defaultData=n})(kg||(kg={}));var Wo;(r=>{function n(){return{images:new be,videos:new be,colors:new be,audios:new be,particles:new be,fonts:new be,materials:new be,components:new be,variables:new be}}r.defaultData=n})(Wo||(Wo={}));var zr;(i=>{function n(){let a={};return a["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},sr(a,be.prototype)}i.defaultColors=n;function r(){return sr({},be.prototype)}i.defaultImages=r;function e(){return{catelogs:new be,materials:new be,images:new be,videos:new be,colors:new be,audios:new be,particles:new be,fonts:new be,variables:new Se,lib:Wo.defaultData()}}i.emptyData=e;function t(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)}}i.defaultVariables=t;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}i.getFormattedTimerTime=o})(zr||(zr={}));var el=require("three");var su;(r=>r.list=["idle","move","jump","run"])(su||(su={}));var lu;(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 Se,move:new Se,jump:new Se,run:new Se},navmesh:{enabled:!1,ch:6,cs:6,walkableClimb:5,walkableHeight:1,walkableRadius:0,zones:"all",objects:[],helperVisible:!0,destinationHelperRadius:0,destinationHelperColor:_e.fromHexAndA(3728051,1)}}))(lu||(lu={}));function Hg(n){n.layers.forEach(r=>{if(r.type==="depth"&&r.colorA!==void 0){let e=r.colorA,t=r.colorB,o=[[e.r,e.g,e.b,e.a],[t.r,t.g,t.b,t.a]],i=[0,1];for(let s=2;s<10;s++)o.push(o[1]),i.push(1);let a={...Kr(xt(r),"type","visible","isVector","isWorldSpace","origin","alpha","mode"),near:Math.max(0,r.near),far:Math.max(0,r.far),colors:o,steps:i,num:2,direction:[1,0,0],smooth:!1,gradientType:1};Object.assign(r,a)}else if(r.type==="depth"&&r.gradientType===1&&(r.near<0||r.far<0)){let e={...xt(r),near:Math.max(r.near,0),far:Math.max(r.far,0)};Object.assign(r,e)}})}function qo(n,r){Object.values(n.shared.materials).forEach(e=>r(e))}function $o(n,r){n.scene.objects.traverse((e,t)=>{"materials"in t?t.materials.forEach((o,i)=>{o===void 0&&(t.materials[i]=Qt.defaultData(),o=t.materials[i]),typeof o!="string"&&r(o)}):"material"in t?typeof t.material!="string"&&(t.material===void 0&&(t.material=Qt.defaultData()),r(t.material)):t.type==="Mesh"&&(t.material===void 0&&(t.material=Qt.defaultData()),r(t.material)),"overrides"in t&&Object.values(t.overrides).forEach(o=>{o.material&&typeof o.material!="string"&&Object.getPrototypeOf(o.material)!==lt.prototype&&r(o.material)})})}function gT(n){Object.assign(n.scene.publish,{orbitControls:{...ga.defaultData,...xt(n.scene.publish.orbitControls)}})}function xT(n){Object.assign(n.scene.publish.settings,{video:{...Zr.defaultData.settings.video,...xt(n.scene.publish.settings.video)}})}function bT(n){function r(e){if(e.layers){for(let t of Object.values(e.layers))if(t){for(let[o,i]of Object.entries(t))if((Lg.includes(o)||typeof i=="boolean")&&delete t[o],o==="texture")for(let[a,s]of Object.entries(i))(Rg.includes(a)||typeof s=="boolean")&&delete i[a]}}}n.scene.objects.traverse((e,t)=>{t.states.forEach(o=>{let i=o;i.material?r(i.material):i.materials&&i.materials.forEach(a=>{r(a)})})})}function vT(n){n.scene.publish.withBackground=!0}function ST(n){n.scene.publish.settings.web={compress:!0,preload:!0,preset:1,logo:!0,hint:!1}}function wT(n){n.scene.objects.traverse((r,e)=>{let t=e.cloner;t&&(t.radial.scale=t.radial.scale.map(o=>o+1),t.linear.scale=t.linear.scale.map(o=>o+1))})}function PT(n){n.scene.objects.traverse((r,e)=>{let t=e.geometry;t&&(t.type==="DodecahedronGeometry"||t.type==="IcosahedronGeometry")&&(t.detail=Math.round(t.detail))})}function OT(n){n.scene.objects.traverse((r,e)=>{let t=n.scene.objects.unproxy().parent(r);if(t){let o=xt(n.scene.objects.data(t));o&&o.type==="Mesh"&&o.geometry.type==="BooleanGeometry"&&e.type==="Mesh"&&(e.visible=xt(e).booleanExclude!==!0)}})}function CT(n){n.scene.objects.traverse((r,e)=>{if(e.type==="Mesh"){let t=e;e.geometry.type==="NonParametricGeometry"?t.material!==void 0&&delete t.material:t.materials!==void 0&&delete t.materials}})}function TT(n){function r(t){Object.setPrototypeOf(t,lt.prototype),t.texture&&Object.setPrototypeOf(t.texture,lt.prototype)}function e(t){Object.setPrototypeOf(t,lt.prototype);for(let o in t)r(t[o])}n.scene.objects.traverse((t,o)=>{o.states.forEach(i=>{let a=i;if(a.material){let s=xt(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=xt(l).layers;e(c),l.layers=c}})})}function Wg(n){n.layers===void 0&&Object.assign(n,Qt.defaultTwoLayerData("lambert"))}function Tp(n){!n.layers||n.layers.forEach(r=>{if(r.type==="depth"&&r.colors.length===10){let e=[...r.colors];e.push(r.colors[9]);let t=[...r.steps];t.push(r.steps[9]);let o={...xt(r),colors:e,steps:t};Object.assign(r,o)}})}function AT(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&(e.geometry.type==="BooleanGeometry"||e.geometry.type==="SubdivGeometry")&&(e.geometry.phongAngle=35)})}function qg(n){n.scene.objects.traverse((r,e)=>{"materials"in e?e.materials.forEach(t=>{typeof t!="string"&&Tp(t)}):"material"in e&&typeof e.material!="string"&&Tp(e.material)}),Object.values(n.shared.materials).forEach(r=>Tp(r))}function MT(n){n.scene.environment.ambientLight.softShadows=!1,n.scene.environment.ambientLight.softShadowQuality="low",n.scene.objects.traverse((r,e)=>{(e.type==="DirectionalLight"||e.type==="SpotLight")&&(e.shadowResolution=1024,e.shadowRadius=1,e.depth=1e5)}),n.shared.penumbraSize=new Array(5).fill(.5)}function IT(n){n.shared.audios=sr({},be.prototype)}function NT(n){n.shared.videos=sr({},be.prototype)}function DT(n){let r=n.shared.materials;Object.entries(r).forEach(([e,t])=>{if(!t.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(r,{[e]:o})}})}function ET(n){Object.entries(xt(n.shared.images)).filter(t=>t[1].asset===!1).map(t=>t[0]).forEach(t=>{delete n.shared.images[t]}),Object.entries(xt(n.shared.audios)).filter(t=>t[1].asset===!1).map(t=>t[0]).forEach(t=>{delete n.shared.audios[t]})}function _T(n){n.scene.publish.settings.web.preload=!1}function $g(n){n.layers&&n.layers.forEach(r=>{r.type==="depth"&&r.num!==void 0&&(r.colors=r.colors.slice(0,r.num),r.steps=r.steps.slice(0,r.num),delete r.num)})}function Yg(n){n.layers&&n.layers.forEach(r=>{Bg(r)&&r.isMask===void 0&&(r.isMask=!1),(r.type==="texture"||r.type==="video")&&r.blending===void 0&&(r.blending=0),(r.type==="noise"||r.type==="displace"&&r.displacementType==="noise")&&(r.voronoiStyle===void 0&&(r.voronoiStyle=0),r.highCut===void 0&&(r.highCut=1),r.lowCut===void 0&&(r.lowCut=0),r.smoothness===void 0&&(r.smoothness=.3),r.seed===void 0&&(r.seed=0),r.quality===void 0&&(r.quality=1))})}function BT(n){n.shared.fonts=sr({},be.prototype)}function LT(n){return n.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 RT(n){let r=[];n.scene.objects.traverse((e,t)=>{let o=t;if(o.type==="TextFrame"){let i=Qt.defaultTwoLayerData("phong"),a=typeof o.color=="string"?n.shared.colors[o.color]:o.color;i.layers[1].data.color={r:a.r,g:a.g,b:a.b},i.layers[1].data.alpha=o.alpha;let s=LT(o.font);n.shared.fonts[s]===void 0&&(n.shared.fonts[s]={name:s});let l={name:o.name,...Vt.defaultData,...ai.defaultData,flatShading:!1,wireframe:!1,geometry:{...Cn.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:i,states:xt(o.states),events:xt(o.events),visible:o.visible,raycastLock:o.raycastLock,position:o.position,rotation:o.rotation,scale:o.scale,hiddenMatrix:o.hiddenMatrix},c=xt(n.scene.objects).parent(e);n.scene.objects.insertAfter(c??null,e,[{id:e+"new",data:l,children:[]}]),r.push(e)}}),r.forEach(e=>{n.scene.objects.delete(e)})}function VT(n){let r={0:"MouseDown",1:"MouseUp",2:"MouseHover",5:"KeyDown",6:"KeyUp",7:"Start",9:"LookAt",10:"Follow",11:"Scroll",12:"Audio",13:"GameControl"};n.scene.objects.traverse((e,t)=>{t.events.forEach(o=>{if(!!r[Number(o.type)])if(Object.assign(o,{type:r[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 Se,move:new Se,jump:new Se}});else{let i=new Se;Object.assign(o,{actions:i}),(o.type==="MouseDown"||o.type==="MouseUp"||o.type==="KeyDown"||o.type==="KeyUp")&&"url"in o&&i.push({fi:0,id:el.MathUtils.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,Kr(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},h={allowSlerp:!0,type:"Transition",object:a.object,repeat:0,delay:0,delayDirection:void 0,direction:"normal",tweens:new Se({fi:0,id:el.MathUtils.generateUUID(),data:c},{fi:1,id:el.MathUtils.generateUUID(),data:d})};i.push({fi:l,id:s,data:h})}),delete o.targets)}})})}function zT(n){n.scene.objects.traverse((r,e)=>{function t(o,i){let a=new Se,s=[];if(e.events.forEach((l,c,u)=>{if(l.type==="Audio"&&l.trigger===i){let p;s.push(c),l.interaction==="play"?p={...Kr(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={...Kr(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:el.MathUtils.generateUUID(),data:{type:o,actions:a}}])}}t("Start","start"),t("MouseDown","mouseDown"),t("MouseUp","mouseUp"),t("KeyDown","keyDown"),t("KeyUp","keyUp")})}function Xg(n){let r=n.layers.find(e=>e.type==="light")?.data;if(r?.category==="basic"){let e=_t.defaultData("light","phong"),t=r;Object.assign(t,e),t.visible=!1}}function Kg(n){qo(n,Xg),$o(n,Xg)}function GT(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&e.geometry.type==="SubdivGeometry"&&(e.geometry.scaleBaked||(e.geometry.scaleBaked=[1,1,1]))})}function jT(n){n.scene.objects.traverse((r,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 FT(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&e.geometry.type==="NonParametricGeometry"&&!("material"in e)&&!("materials"in e)&&(e.material=Qt.defaultTwoLayerData("phong"))})}function UT(n){n.scene.publish.orbitControls.autoZoom===void 0&&(n.scene.publish.orbitControls.autoZoom=!1),n.scene.objects.traverse((r,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 kT(n){n.scene.objects.traverse((r,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 HT(n){n.scene.publish.mouseEventTarget===void 0&&(n.scene.publish.mouseEventTarget="canvas"),n.scene.publish.settings.web.hint===void 0&&(n.scene.publish.settings.web.hint=!1)}function WT(n){let{video:r}=n.scene.publish.settings;r.format==="gif"&&r.fps>48&&(r.fps=15)}function qT(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.resetYPosition=Math.abs(t.resetYPosition-e.position[1]))})})}function $T(n){let r=n.scene.environment.usePhysics;n.scene.objects.traverse((e,t)=>{r&&t.physics===null?t.collision=!1:t.collision="visibility"})}function YT(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.navmesh=lu.defaultDataThirdPerson.navmesh)})})}function XT(n){n.scene.styles||(n.scene.styles=ko.defaultData())}function Qg(n){n.layers.forEach(r=>{r.type==="light"&&r.category!=="toon"&&r.occlusion===void 0&&(r.occlusion=!0)})}function KT(n){n.scene.environment.ambientLight.occlusion===void 0&&(n.scene.environment.ambientLight.occlusion=!1),n.scene.environment.ambientLight.aoFullRes===void 0&&(n.scene.environment.ambientLight.aoFullRes=!1),n.scene.environment.ambientLight.radius===void 0&&(n.scene.environment.ambientLight.radius=256),n.scene.environment.ambientLight.bias===void 0&&(n.scene.environment.ambientLight.bias=.5),n.scene.environment.ambientLight.aoColor===void 0&&(n.scene.environment.ambientLight.aoColor={r:.19607843137254902,g:.19607843137254902,b:.19607843137254902}),$o(n,Qg),qo(n,Qg)}function QT(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&Object.assign(t.gameActions,{run:new Se})})})}function ZT(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.keyAssignments=[...t.keyAssignments,["run","\u21E7"],["none","Ctrl"]])})})}function Zg(n){n.layers&&n.layers.forEach(r=>{r.type==="light"&&r.bumpMapIntensity===void 0&&(r.bumpMapIntensity=5)})}function Jg(n,r){if(r<1&&($o(n,Hg),qo(n,Hg),n.schema=1),r<2&&(gT(n),n.schema=2),r<3&&(bT(n),n.schema=3),r<4&&(vT(n),n.schema=4),r<5&&(ST(n),n.schema=5),r<6&&(wT(n),n.schema=6),r<7&&(PT(n),n.schema=7),r<8&&(n.schema=8),r<9&&(qg(n),n.schema=9),r<10&&(AT(n),n.schema=10),r<11&&(MT(n),n.schema=11),r<12&&(qg(n),n.schema=12),r<13&&(IT(n),n.schema=13),r<14&&(DT(n),n.schema=14),r<15&&(ET(n),n.schema=15),r<16&&(_T(n),n.schema=16),r<17&&($o(n,$g),qo(n,$g),n.schema=17),r<18&&($o(n,Wg),qo(n,Wg),n.schema=18),r<19&&(xT(n),n.schema=19),r<20&&(BT(n),RT(n),n.schema=20),r<21&&(VT(n),zT(n),n.schema=21),r<22&&(Kg(n),n.schema=22),r<23&&(GT(n),n.schema=23),r<24&&(jT(n),n.schema=24),(r<25||n.shared.videos===void 0)&&(NT(n),r<25&&(n.schema=25)),r<26&&(OT(n),n.schema=26),r<27&&(CT(n),n.schema=27),r<28&&(Kg(n),n.schema=28),r<29&&(TT(n),n.schema=29),r<30&&(FT(n),n.schema=30),r<31&&(UT(n),n.schema=31),r<33&&(kT(n),n.schema=33),r<34&&(HT(n),n.schema=34),r<35&&(WT(n),n.schema=35),r<36&&(qT(n),n.schema=36),r<37&&($T(n),n.schema=37),r<38&&($o(n,Yg),qo(n,Yg),n.schema=38),r<39&&(YT(n),n.schema=39),r<40&&(XT(n),n.schema=40),r<41&&(KT(n),n.schema=41),r<42&&(QT(n),n.schema=42),r<43&&(ZT(n),n.schema=43),r<99){$o(n,Zg),qo(n,Zg),n.scene.publish.playCamera===null&&(n.scene.publish.playCamera=Sn);let e=xt(n.scene.objects),t=n.scene.objects;n.scene.publish.playPage=wn,t.insertBefore(null,null,[{id:wn,data:{...Uo.defaultData,backgroundColor:n.scene.backgroundColor,fog:n.scene.fog,postprocessing:n.scene.postprocessing,ao:Kr(n.scene.environment.ambientLight,"occlusion","aoFullRes","radius","bias","aoColor"),publish:{playCamera:n.scene.publish.playCamera,gameControlObject:n.scene.publish.gameControlObject},shadow:Kr(n.scene.environment.ambientLight,"softShadowQuality"),globalPhysics:{...Js.defaultData,...Kr(n.scene.environment,"usePhysics","gravity")},camera:xt(n.scene.ownerCamera)??Uo.defaultData.camera,name:"Scene"},children:[]}]);for(let a of e)a.id!==Ho.TRASH_CAN_ID&&t.move(wn,a.fi,a.id);let o=0,i=0;n.shared.penumbraSize&&n.scene.objects.traverse((a,s)=>{s.type==="DirectionalLight"?(s.penumbraSize=n.shared.penumbraSize[Math.min(o,2)],o+=1):s.type==="SpotLight"&&(s.penumbraSize=n.shared.penumbraSize[3+Math.min(i,1)],i+=1),(s.physics===void 0||s.physics===null)&&s.type!=="Instance"&&(s.physics={},Object.assign(s.physics,On.defaultData)),s.physics!==void 0&&s.physics!==null&&(s.physics.enabled=s.collision??"visibility",delete s.collision)}),n.schema=99}}function ex(n){n.layers&&n.layers.forEach(r=>{r.type==="light"&&r.alphaOverride===void 0&&(r.alphaOverride=1)})}function JT(n){n.scene.objects.traverse((r,e)=>{let t=e.geometry;t&&t.type==="PathGeometry"&&(t.extrusion.capType="flat",t.extrusion.bevel=50,t.extrusion.bevelSides=6,t.extrusion.shape.type==="Custom"&&(t.extrusion.shape.shapeQuality="low"))})}function eA(n){Array.isArray(xt(n.events))&&n.events?.forEach(r=>{"disabled"in r||(r.disabled=!1),(r.type==="MouseDown"||r.type==="MouseUp"||r.type==="MousePress")&&(r.mode=r.mode||"Object")})}var va=180/Math.PI;function tx(n){n.rotation=n.rotation.slice(0,3).map(r=>r*va)}function rx(n){tx(n),n.type==="Page"&&tx(n.camera),n.states?.forEach(e=>{e.rotation===void 0||e.rotation===null||(e.rotation=e.rotation.slice(0,3).map(t=>t*va))});let r=n.geometry;r&&r.type==="SphereGeometry"&&(r.thetaLength=(r.thetaLength??180)*va),r&&r.type==="TorusGeometry"&&(r.arc=r.arc*va),r&&r.type==="PathGeometry"&&(r.extrusion.angle*=va,r.extrusion.twist*=va),n.type==="Mesh"&&n.geometry.type==="TextGeometry"&&(n.geometry.text={textValue:n.geometry.text}),Array.isArray(xt(n.events))&&n.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 tA(n){n.shared.variables=sr({},be.prototype)}function rA(n){let r=xt(n.shared.variables);n.shared.variables=sr(Object.entries(r??{}).map(([e,t],o)=>({fi:o,id:e,data:t})),Se.prototype)}var wo=113;function ox(n,r){r(n.data);for(let e of n.children)ox(e,r)}function oA(n){let r=n.schema??104;r!==wo&&r<105&&(ox(n.asset,rx),n.schema=105)}function nA(n){n.shared.particles=sr({},be.prototype),n.shared.lib&&(n.shared.lib.particles=Wo.defaultData().particles)}function iA(n){n.scene.objects.traverse((r,e)=>{e.type==="Particle"&&typeof e.renderMaterial.size=="number"&&Object.assign(e.renderMaterial,{size:[e.renderMaterial.size,e.renderMaterial.size]})})}function aA(n){n.scene.objects.traverse((r,e)=>{e.type==="Page"&&(e.postprocessing.depthOfField.focusDistance=100,e.postprocessing.depthOfField.focalLength=20,e.postprocessing.depthOfField.bokehScale=5)})}function sA(n){n.scene.objects.traverse((r,e)=>{Array.isArray(xt(e.events))!==!1&&e.events?.forEach(t=>{let o=t.runMode;t.type==="MouseDown"||t.type==="MouseUp"||t.type==="KeyDown"||t.type==="KeyUp"||t.type==="Collision"||t.type==="Trigger"?t.actions?.forEach(i=>{i.type==="Transition"&&(i.runMode=o??"Repeat"),(i.type==="Animation"||i.type==="SwitchCamera")&&(i.runMode=o==="Toggle"?"Toggle":"Normal")}):t.type==="MouseHover"||t.type==="MousePress"||t.type==="KeyPress"?t.actions?.forEach(i=>{(i.type==="Transition"||i.type==="Animation"||i.type==="SwitchCamera")&&(i.runMode="Toggle")}):t.type==="GameControl"?(delete t.actions,Object.keys(t.gameActions).forEach(a=>{t.gameActions[a]?.forEach(s=>{s.type==="Transition"&&(s.runMode="Repeat"),s.type==="Animation"&&(s.runMode="Normal")})})):t.type==="DragDrop"?(delete t.actions,t.dragDropActions?.drag?.forEach(i=>{(i.type==="Transition"||i.type==="Animation"||i.type==="SwitchCamera")&&(i.runMode="Toggle")}),t.dragDropActions?.drop?.forEach(i=>{(i.type==="Transition"||i.type==="Animation"||i.type==="SwitchCamera")&&(i.runMode="Toggle")})):t.type==="Resize"?(delete t.actions,t.breakpoints?.forEach(i=>{i.actions?.forEach(a=>{(a.type==="Transition"||a.type==="Animation"||a.type==="SwitchCamera")&&(a.runMode="Toggle")})})):t.type==="Start"?t.actions?.forEach(i=>{i.type==="Transition"&&(i.runMode="Once"),(i.type==="Animation"||i.type==="SwitchCamera")&&(i.runMode="Normal")}):t.type==="VariableChange"||t.type==="Scroll"?t.actions?.forEach(i=>{i.type==="Transition"&&(i.runMode="Repeat"),(i.type==="Animation"||i.type==="SwitchCamera")&&(i.runMode="Normal")}):t.type==="Conditional"&&(delete t.actions,t.inActions?.forEach(i=>{i.type==="Transition"&&(i.runMode="Repeat"),(i.type==="Animation"||i.type==="SwitchCamera")&&(i.runMode="Normal")}),t.outActions?.forEach(i=>{i.type==="Transition"&&(i.runMode="Repeat"),(i.type==="Animation"||i.type==="SwitchCamera")&&(i.runMode="Normal")}))})})}function cu(n){let r=n.schema??0;if(r!==wo){console.warn("updating from ",r,"to ",wo),Jg(n,r),r<100&&(n.scene.publish.joystickSizeAndXYOffset===void 0&&(n.scene.publish.joystickSizeAndXYOffset=Zr.defaultData.joystickSizeAndXYOffset),n.schema=100),r<101&&($o(n,ex),qo(n,ex),n.schema=101),r<102&&(JT(n),n.schema=102),r<104&&(n.shared.catelogs=new be,n.shared.lib=Wo.defaultData(),n.schema=104),r<105&&(tA(n),n.scene.objects.traverse((e,t)=>{rx(t)}),n.schema=105);for(let e of Object.values(n.shared.lib.components))oA(e);r<106&&(rA(n),n.schema=106),r<107&&(n.shared.lib.variables=Wo.defaultData().variables,n.schema=107),r<109&&(nA(n),n.schema=109),r<110&&(iA(n),n.schema=110),r<111&&(n.scene.objects.traverse((e,t)=>{eA(t)}),n.schema=111),r<112&&(aA(n),n.schema=112),r<113&&(sA(n),n.schema=113)}}var xa;(l=>{l.defaultData={schema:wo,scene:Ho.defaultData,frames:new be().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",ba.defaultData),shared:{...zr.emptyData(),colors:zr.defaultColors()}},l.emptyDataForImports=function(){let c=Ho.emptyDataWithPage();return{schema:wo,scene:c,frames:new be().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",ba.defaultData),shared:{...zr.emptyData(),colors:zr.defaultColors(),images:zr.defaultImages()}}},l.emptyData=function(){return{schema:wo,scene:Ho.emptyDataWithPage(),frames:new be().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",ba.defaultData),shared:zr.emptyData()}},l.clipboard2dData=function(){return{schema:wo,scene:Ho.emptyData(),frames:new be,shared:zr.emptyData()}},l.collabHelper={...$s,updateSchema(c){return(c.schema??0)<wo?mn(c,cu):(c.schema??0)-wo}};function i(c){let u=l.collabHelper.updateSchema(c);return typeof u=="number"?u===0?c:null:u.data}l.updateSchemaDirectly=i;function a(c){return{...c,shared:{...c.shared,lib:Wo.defaultData()}}}l.withoutLib=a;function s(c,u){let p=c.scene.objects.get(u);if(p&&p.data.type==="Component")return p;{let d=c.shared.lib.components[u];if(d)return d.asset}}l.getComponentData=s})(xa||(xa={}));var uu;(r=>r.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII=",name:"empty"})(uu||(uu={}));var nx;(r=>{function n(e){return!0}r.is=n})(nx||(nx={}));var du;(t=>{t.defaultData={position:[0,0],scale:[1,1],rotation:0,shear:[0,0]};function r(o,i){return{position:i?.position??o.position,rotation:i?.rotation??o.rotation,scale:i?.scale??o.scale,shear:i?.shear??o.shear}}t.merge=r;function e(o,i){return tc({position:ua.isEqual(o.position,i.position)?void 0:i.position,rotation:o.rotation===i.rotation?void 0:i.rotation,scale:ua.isEqual(o.scale,i.scale)?void 0:i.scale,shear:o.shear&&i.shear&&ua.isEqual(o.shear,i.shear)?void 0:i.shear})}t.diff=e})(du||(du={}));var Ap;(r=>r.defaultData={horizontalConstraint:0,verticalConstraint:0})(Ap||(Ap={}));var pu;(r=>r.defaultData={opacity:1,fill:{color:_e.fromHexAndA(It,1),enabled:!0},stroke:{color:_e.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:_e.from0to1([0,0,0,1]),enabled:!1,spread:0},innerShadow:{offset:[10,10],blurRadius:10,color:_e.from0to1([0,0,0,1]),enabled:!1,spread:0}})(pu||(pu={}));var ci;(i=>{function n(a,s){return{name:s}}i.newEmpty=n;function r(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 t(a,s){if(s===void 0)return a;let l={...a};return Object.assign(l,du.merge(l,s)),l=r(l,s),l=e(l,s),l}i.patch=t;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}i.toOps=o})(ci||(ci={}));var tl;(r=>r.defaultData={...du.defaultData,...Ap.defaultData,states:new Se,events:new Se,visible:!0,raycastLock:!1})(tl||(tl={}));var Sa;(r=>r.defaultData={...tl.defaultData,...pu.defaultData})(Sa||(Sa={}));var fu;(r=>r.defaultData={cornerRadius:[0,0,0,0]})(fu||(fu={}));var Mp;(r=>r.defaultData={...Sa.defaultData,type:"ellipse2d",width:100,height:100,name:"Ellipse"})(Mp||(Mp={}));var wa;(r=>r.defaultData={...Sa.defaultData,...fu.defaultData,type:"rectangle2d",width:100,height:100,name:"Rectangle"})(wa||(wa={}));var Ip;(r=>r.defaultData={...Sa.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"})(Ip||(Ip={}));var Np;(r=>r.defaultData={...Sa.defaultData,type:"path2d",path:"",name:"Path"})(Np||(Np={}));var ix;(r=>{function n(e){return e.type==="ellipse2d"||e.type==="rectangle2d"||e.type==="text2d"||e.type==="vector2d"||e.type==="path2d"}r.is=n})(ix||(ix={}));var rl;(r=>r.defaultData={...tl.defaultData,name:"Group",type:"group2d"})(rl||(rl={}));var Dp;(r=>r.defaultData=()=>({...tl.defaultData,...fu.defaultData,...pu.defaultData,name:"Frame",type:"frame2d",clipped:!0,width:200,height:200,fill:{color:_e.fromHexAndA(4737101,1),enabled:!0},stroke:{color:_e.fromHexAndA(0,1),thickness:1,enabled:!1,mode:"inside"},backgroundBlur:{radius:2,enabled:!1},layerBlur:{radius:2,enabled:!1}}))(Dp||(Dp={}));var Yo;(o=>{function n(i){switch(i){case"rectangle2d":return{...wa.defaultData};case"ellipse2d":return{...Mp.defaultData};case"text2d":return{...Ip.defaultData};case"vector2d":return{...wa.defaultData};case"path2d":return{...Np.defaultData};case"frame2d":return{...Dp.defaultData()};case"group2d":return{...rl.defaultData}}}o.defaultData=n;function r(i){return"width"in i&&"height"in i?[typeof i.width=="number"?i.width*.5:0,typeof i.height=="number"?i.height*.5:0]:[0,0]}o.getPivot=r;function e(i){return i.type==="rectangle2d"||i.type==="ellipse2d"||i.type==="text2d"||i.type==="frame2d"}o.isResizeable=e;function t(i){return i.type==="rectangle2d"||i.type==="frame2d"}o.hasCorners=t})(Yo||(Yo={}));var hu;(e=>(e.defaultData={name:"UI",type:"scene2d",objects:new st},e.emptyData=function(){return{type:"scene2d",objects:new st}}))(hu||(hu={}));var Ze=require("three"),Ss=_i(sx());var lA=.5*(Math.sqrt(3)-1),ol=(3-Math.sqrt(3))/6,cA=1/3,Po=1/6,KF=(Math.sqrt(5)-1)/4,QF=(5-Math.sqrt(5))/20,nl=n=>Math.floor(n)|0,lx=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]),_p=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 mu(n=Math.random){let r=ux(n),e=new Float64Array(r).map(o=>lx[o%12*2]),t=new Float64Array(r).map(o=>lx[o%12*2+1]);return function(i,a){let s=0,l=0,c=0,u=(i+a)*lA,p=nl(i+u),d=nl(a+u),h=(p+d)*ol,f=p-h,m=d-h,y=i-f,g=a-m,v,O;y>g?(v=1,O=0):(v=0,O=1);let P=y-v+ol,S=g-O+ol,T=y-1+2*ol,I=g-1+2*ol,x=p&255,E=d&255,N=.5-y*y-g*g;if(N>=0){let _=x+r[E],B=e[_],z=t[_];N*=N,s=N*N*(B*y+z*g)}let M=.5-P*P-S*S;if(M>=0){let _=x+v+r[E+O],B=e[_],z=t[_];M*=M,l=M*M*(B*P+z*S)}let D=.5-T*T-I*I;if(D>=0){let _=x+1+r[E+1],B=e[_],z=t[_];D*=D,c=D*D*(B*T+z*I)}return 70*(s+l+c)}}function cx(n=Math.random){let r=ux(n),e=new Float64Array(r).map(i=>_p[i%12*3]),t=new Float64Array(r).map(i=>_p[i%12*3+1]),o=new Float64Array(r).map(i=>_p[i%12*3+2]);return function(a,s,l){let c,u,p,d,h=(a+s+l)*cA,f=nl(a+h),m=nl(s+h),y=nl(l+h),g=(f+m+y)*Po,v=f-g,O=m-g,P=y-g,S=a-v,T=s-O,I=l-P,x,E,N,M,D,_;S>=T?T>=I?(x=1,E=0,N=0,M=1,D=1,_=0):S>=I?(x=1,E=0,N=0,M=1,D=0,_=1):(x=0,E=0,N=1,M=1,D=0,_=1):T<I?(x=0,E=0,N=1,M=0,D=1,_=1):S<I?(x=0,E=1,N=0,M=0,D=1,_=1):(x=0,E=1,N=0,M=1,D=1,_=0);let B=S-x+Po,z=T-E+Po,U=I-N+Po,R=S-M+2*Po,W=T-D+2*Po,j=I-_+2*Po,F=S-1+3*Po,H=T-1+3*Po,q=I-1+3*Po,re=f&255,ee=m&255,X=y&255,te=.6-S*S-T*T-I*I;if(te<0)c=0;else{let $=re+r[ee+r[X]];te*=te,c=te*te*(e[$]*S+t[$]*T+o[$]*I)}let K=.6-B*B-z*z-U*U;if(K<0)u=0;else{let $=re+x+r[ee+E+r[X+N]];K*=K,u=K*K*(e[$]*B+t[$]*z+o[$]*U)}let Z=.6-R*R-W*W-j*j;if(Z<0)p=0;else{let $=re+M+r[ee+D+r[X+_]];Z*=Z,p=Z*Z*(e[$]*R+t[$]*W+o[$]*j)}let Q=.6-F*F-H*H-q*q;if(Q<0)d=0;else{let $=re+1+r[ee+1+r[X+1]];Q*=Q,d=Q*Q*(e[$]*F+t[$]*H+o[$]*q)}return 32*(c+u+p+d)}}function ux(n){let e=new Uint8Array(512);for(let t=0;t<512/2;t++)e[t]=t;for(let t=0;t<512/2-1;t++){let o=t+~~(n()*(256-t)),i=e[t];e[t]=e[o],e[o]=i}for(let t=256;t<512;t++)e[t]=e[t-256];return e}var dx=require("three"),Jr=new dx.Triangle,yu=class{constructor(r){this.weightAttribute=null;let e=r.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 r=this.positionAttribute,e=new Float32Array(r.count/3);for(let o=0;o<r.count;o+=3){let i=1;Jr.a.fromBufferAttribute(r,o),Jr.b.fromBufferAttribute(r,o+1),Jr.c.fromBufferAttribute(r,o+2),i*=Jr.getArea(),e[o/3]=i}this.distribution=new Float32Array(r.count/3);let t=0;for(let o=0;o<e.length;o++)t+=e[o],this.distribution[o]=t;return this}setRandomGenerator(r){return this.randomFunction=r,this}sample(r,e){if(this.distribution){let t=this.distribution[this.distribution.length-1],o=this.binarySearch(this.randomFunction()*t);return this.sampleFace(o,r,e)}}binarySearch(r){if(!this.distribution)return 0;let e=this.distribution,t=0,o=e.length-1,i=-1;for(;t<=o;){let a=Math.ceil((t+o)/2);if(a===0||e[a-1]<=r&&e[a]>r){i=a;break}else r<e[a]?o=a-1:t=a+1}return i}sampleFace(r,e,t){let o=this.randomFunction(),i=this.randomFunction();return o+i>1&&(o=1-o,i=1-i),Jr.a.fromBufferAttribute(this.positionAttribute,r*3),Jr.b.fromBufferAttribute(this.positionAttribute,r*3+1),Jr.c.fromBufferAttribute(this.positionAttribute,r*3+2),e.set(0,0,0).addScaledVector(Jr.a,o).addScaledVector(Jr.b,i).addScaledVector(Jr.c,1-(o+i)),Jr.getNormal(t),this}};var mx=require("three");var Ir=require("three"),hx=_i(fx()),uA=new Ir.Matrix4,dA=new Ir.Matrix4,pA=new Ir.Matrix4,Pa;(r=>{function n(e){return e&&e.__isSPEObject}r.is=n})(Pa||(Pa={}));var Oa=n=>class extends n{constructor(){super(...arguments);this.previousModelViewMatrix=new Ir.Matrix4;this.copyPreviousMatrix=!0;this.hiddenMatrix=new Ir.Matrix4;this.matrixWorldRigid=new Ir.Matrix4;this.shearScale=new Ir.Matrix4;this.shearScaleInv=new Ir.Matrix4}get __isSPEObject(){return!0}isDescendantOf(t){t instanceof Ir.Object3D&&(t=t.uuid);let o=this;for(;o.parent;){if(o.parent.uuid===t)return!0;o=o.parent}return!1}updateMatrixWorld(t){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||t)&&(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,t=!0);for(let o of this.children)o.updateMatrixWorld(t)}updateWorldMatrix(t,o){let i=this.parent;if(t&&i!==null&&i.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(t,o=0){for(let i of this.children)Pa.is(i)&&i.traverseObject(t,o+1)}traverseObject(t,o=0){if(t(this,o)!==!0)for(let a of this.children)Pa.is(a)&&a.traverseObject(t,o+1)}updateMatrixWorldSVD(){let t=this.matrixWorld.elements,o=[[t[0],t[4],t[8]],[t[1],t[5],t[9]],[t[2],t[6],t[10]]],{u:i,v:a,q:s}=(0,hx.SVD)(o),l=uA.set(i[0][0],i[0][1],i[0][2],0,i[1][0],i[1][1],i[1][2],0,i[2][0],i[2][1],i[2][2],0,0,0,0,1),c=dA.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=pA.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(t,o){this.updateWorldMatrix(!0,!1);let i=new Ir.Matrix4().copy(this.matrixWorld).invert();return t.parent!==null&&(t.parent.updateWorldMatrix(!0,!1),i.multiply(t.parent.matrixWorld)),"hiddenMatrix"in t&&t.hiddenMatrix instanceof Ir.Matrix4?t.hiddenMatrix.premultiply(i):t.applyMatrix4(i),t.updateWorldMatrix(!1,!1),this.add(t),o!==void 0&&(this.children.pop(),this.children.splice(o,0,t)),this}copy(t,o=!1){return super.copy(t,o),this.hasNonUniformScale=t.hasNonUniformScale,this}onAfterRender(t,o,i,a,s,l){this.copyPreviousMatrix&&this.previousModelViewMatrix.copy(this.modelViewMatrix)}};var Bp=class extends Oa(mx.Object3D){},fA=n=>n.type==="Mesh",Xo=class extends Bp{constructor(e){super();this.object=e;this.matrixAutoUpdate=!1,this.hasNonUniformScale=e.hasNonUniformScale}raycast(e,t){}expand(){let e=0,t=this.object.entityChildren(e);for(;t;){let o=this.children[e];o?.object!==t&&(o&&this.remove(o),o=new Xo(t),this.add(o),this.children.splice(e,0,this.children.pop()),o.matrixWorldNeedsUpdate=!0,o.matrixAutoUpdate=!1,o.matrix=t.matrix,o.hiddenMatrix=t.hiddenMatrix),o.expand(),e+=1,t=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 fA(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}};var Wa=require("three");var Ru=require("three");var or=require("three");var Ct=require("three"),ui=new Ct.Vector3,di=new Ct.Vector3,Ca=new Ct.Matrix4,gx=[new Ct.Vector3(-1,1,1),new Ct.Vector3(-1,-1,1),new Ct.Vector3(1,-1,1),new Ct.Vector3(1,1,1),new Ct.Vector3(-1,1,-1),new Ct.Vector3(-1,-1,-1),new Ct.Vector3(1,-1,-1),new Ct.Vector3(1,1,-1)],hA=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],mA=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]],yx=(n,r,e)=>{n.updateEntityBoxSize(ui,di),Ca.copy(r).multiply(n.matrixWorld),di.x===0&&di.y===0&&di.z===0?e.push(new Ct.Vector3(ui.x,ui.y,ui.z).applyMatrix4(Ca)):gx.forEach(t=>{e.push(t.clone().multiply(di).add(ui).applyMatrix4(Ca))})},il=class extends Ct.Box3{constructor(){super(...arguments);this.matrix=new Ct.Matrix4;this.vertices=[];this.faces=[];this.edges=[];this.centerEdges=[]}copy(e){return super.copy(e),this.matrix.copy(e.matrix),this.vertices=e.vertices.map(t=>t.clone()),this.faces=e.faces.map(t=>t.clone()),this.edges=e.edges.map(t=>t.clone()),this.centerEdges=e.centerEdges.map(t=>t.clone()),this}setFromObjectSize(e,t=!1){e.updateWorldMatrix(!1,t),this.makeEmpty(),this.matrix.copy(e.matrixWorld);let o=new Ct.Matrix4().copy(e.matrixWorld).invert();return this.expandByObjectSize(e,o,t)}expandByObjectSize(e,t,o=!1){let i=[];return o===!0?e.traverseEntity(a=>{if(a.visible||a.cloner&&a.data.visible){if(!("geometry"in a)){i.push(new Ct.Vector3);return}yx(a,t,i)}}):yx(e,t,i),this.setFromPoints(i)}getCenter(e){return e=super.getCenter(e),e.applyMatrix4(this.matrix),e}getPositionToCenter(e){return e=super.getCenter(e),e.applyMatrix4(Ca.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(di).multiplyScalar(.5),this.getCenter(ui),Ca.copy(this.matrix).setPosition(ui),this.vertices=gx.map(e=>e.clone().multiply(di).applyMatrix4(Ca))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=hA.map(([e,t])=>new Ct.Line3(this.vertices[e],this.vertices[t])),this.centerEdges=this.edges.map(e=>e.getCenter(new Ct.Vector3))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=mA.map(([e,t])=>this.vertices[e].clone().add(this.vertices[t]).multiplyScalar(.5))}};var eo={Cloner:()=>{},changeEntityProptotype:()=>{},createEntity:()=>{}};var qt=require("three"),Rp=class extends qt.CurvePath{constructor(){super()}getPoints(r=12){let e=[],t,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(r*u/a),d=c.getPoints(p);for(let h=0;h<d.length;h++){let f=d[h];t&&t.equals(f)||(e.push(f),t=f)}}return this.autoClose&&e.length>1&&!e[e.length-1].equals(e[0])&&e.push(e[0]),e}};var Vp=.001;function zp(n,r,e){return r.clone().sub(n).cross(r.clone().sub(e)).length()<=Vp}function Lp(n,r){let e=new qt.Vector3(...n.position),t=new qt.Vector3(...n.controlNext.position),o=new qt.Vector3(...r.controlPrevious.position),i=new qt.Vector3(...r.position);return zp(e,t,i)&&zp(e,o,i)}function xu(n){let r=n.points.map(u=>new qt.Vector3(...u.data.position)),e=[n.points[0]],t=new qt.Vector3(...e[0].data.position);for(let u=0;u<n.points.length-1;u++)zp(t,r[u],r[u+1])||(e.push(n.points[u]),t=r[u]);e.push(n.points[n.points.length-1]);let o=n.isClosed,i=e.length-(o?0:1),a=e.length,s=[];for(let u=0;u<a;u++){let p=e[u].data,d=new qt.Vector3(...p.position),h=new qt.Vector3(...p.controlPrevious.position),f=new qt.Vector3(...p.controlNext.position),m={position:d,baseRoundness:p.roundness,controlPrevious:h,controlNext:f};if(p.roundness===0||!n.isClosed&&(u===0||u===a-1)){s[u]={...m,removedLength:0};continue}let y=o&&u==0?a-1:u-1,g=o&&u==a-1?0:u+1,v=e[y].data,O=e[g].data,P=new qt.Vector3(...v.position),S=new qt.Vector3(...O.position),T=P.clone().sub(d).normalize(),I=S.clone().sub(d).normalize();Object.assign(m,{prevDir:T,nextDir:I});let x=Lp(v,p),E=Lp(p,O);if(!x||!E)s[u]={...m,removedLength:0};else{let N=T.clone().add(I).normalize(),M=N.clone().cross(T).length()/T.dot(N);s[u]={...m,tan:M,removedLength:p.roundness/M}}}for(let u=0;u<i;u++){let p=u,d=o&&u===a-1?0:u+1,h=s[p],f=s[d];if(h.removedLength!==0||f.removedLength!==0){let m=h.position.distanceTo(f.position);h.removedLength=Math.min(h.removedLength,m/2),f.removedLength=Math.min(f.removedLength,m/2)}}let l=[];for(let u=0;u<i;u++){let p=u,d=o&&u===a-1?0:u+1,h=s[p],f=s[d],m=null;if(!Lp(e[p].data,e[d].data))h.position.distanceTo(f.position)>Vp&&(m=new qt.CubicBezierCurve3(h.position,h.controlNext,f.controlPrevious,f.position));else{let y=h.position.clone(),g=f.position.clone();(h.removedLength!==0||f.removedLength!==0)&&(h.nextDir&&y.add(h.nextDir.clone().setLength(h.removedLength)),f.prevDir&&g.add(f.prevDir.clone().setLength(f.removedLength))),y.distanceTo(g)>Vp&&(m=new qt.CubicBezierCurve3(y,y.clone().lerp(g,.3),g.clone().lerp(y,.3),g))}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,h=p.prevDir.clone().multiplyScalar(p.removedLength).add(d),f=p.nextDir.clone().multiplyScalar(p.removedLength).add(d),m=p.tan*p.removedLength,y=p.prevDir.clone().add(p.nextDir).normalize(),g=h.clone().lerp(f,.5),v=h.distanceTo(f)/2,O=y.clone().multiplyScalar(Math.sqrt(Math.pow(m,2)-Math.pow(v,2))).add(g),P=y.clone().multiplyScalar(-m).add(O),S=d.distanceTo(P)/d.distanceTo(g),T=p.prevDir.clone().multiplyScalar(S*d.distanceTo(h)).add(d),I=T.clone().lerp(P,2),x=h.clone().lerp(T,4/3),E=f.clone().lerp(I,4/3);l[2*u]=new qt.CubicBezierCurve3(h,x,E,f)}let c=new Rp;return l.forEach(u=>{u&&c.add(u)}),c}var je;(r=>{function n(e){return e&&e.__isEntity}r.is=n})(je||(je={}));var Ta=n=>je.is(n),yA={type:"completeState",isfromEntity:!0},gA=["x","y","z"],Gp=new or.Vector3,xA=new or.Vector3().set(0,1,0),Aa=n=>class extends Oa(n){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.reversibleToState=null;this.currentTransitionEvent=null;this.previousAction=null;this._singleBBox=new il;this._recursiveBBox=new il;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this._needApplyPathSnapping=!0;this.attachedPaths=new Set}get __isEntity(){return!0}entityChildren(t){let o=this.children[t];if(je.is(o))return o}entityChildrenCount(){let t=this.children.length;for(;t--;)if(je.is(this.children[t]))return t+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 t=this;for(;t.data.type!=="Instance";){let o=t.parent;if(je.is(o))t=o;else return}return t}forInstancesRec(t){this.instances.forEach(o=>{o.disposed||t(o),o.forInstancesRec(t)})}super_Entity(t,o){typeof t=="string"&&(this.uuid=t),this.identity=t,this.data=o,this.matrixAutoUpdate=!1,this.dataPatched=this.data}changeSelectedState(t,o,i=!1){if(!(this.data.states.length===0&&!i)){for(let a of this.data.states)li.toOps(this.data,a.data).forEach(l=>{let c=aa.replaceProps(l,this.data);this.dataPatched=this.data,this.updateByPatchedOp(c,this.data,o)});if(t!==null){let a=this.data.states.data(t);a&&(this.dataPatched=li.patch(this.data,a),li.toOps(this.data,a).forEach(l=>{this.updateByPatchedOp(l,this.dataPatched,o)}))}i&&this.updateTransformState(this.dataPatched,o),this.stateSelection=t,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(t,o){t.setScalar(0),o.setScalar(0)}resetBBoxNeedsUpdateSelf(){this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0}resetBBoxNeedsUpdate(){this.resetBBoxNeedsUpdateSelf(),this.traverseAncestors(t=>{Ta(t)&&t.resetBBoxNeedsUpdateSelf()}),this.traverseEntity(t=>{t.resetBBoxNeedsUpdateSelf()})}find(t){let o;return this.traverseEntity(i=>{i.uuid===t&&(o=i)}),o}traverseSortNextHelper(){let t=this.parent;if(t){let o=t.children,i=o.indexOf(this)+1;if(je.is(o[i]))return o[i];if(je.is(t))return t.traverseSortNextHelper()}}sortNext(){let t=this.children;return this.children.length>0&&je.is(this.children[0])?t[0]:this.traverseSortNextHelper()}goUp(t){let o=this;for(;t>0&&o!==null;)o=o.parent,t-=1;return o}hasAnccestorOrSelf(t){return this===t||this.hasAnccestor(t)}hasAnccestor(t){let o=this.parent;for(;o;){if(t===o)return!0;o=o.parent}return!1}countToAccestor(t){let o=0,i=this;for(;i!==t;){if(i===null)return-1;i=i.parent,o+=1}return o}forEachEntity(t){for(let o of this.children)Ta(o)&&t(o)}traverseEntityAncestors(t){this.traverseAncestors(o=>{je.is(o)&&t(o)})}traverseConcreteEntity(t,o=0){if(t(this,o)!==!0)for(let a of this.children)Ta(a)&&a.isConcreteEntity&&a.traverseEntity(t,o+1)}traverseEntity(t,o=0){if(t(this,o)!==!0)for(let a of this.children)Ta(a)&&a.traverseEntity(t,o+1)}traverseVisibleEntity(t){t(this);for(let o of this.children)Ta(o)&&o.visible&&o.traverseVisibleEntity(t)}updateMatrix(){super.updateMatrix(),this.cloner&&this.cloner.onObjUpdateMatrix(),this.dispatchEvent({type:"updateMatrix"})}updateMatrixWorld(t){super.updateMatrixWorld(t),this.dispatchEvent({type:"updateMatrixWorld"})}copy(t,o=!1){return super.copy(t,o),this.dataPatched=t.dataPatched,this.raycastLock=t.raycastLock,this.scaleLock=t.scaleLock,this.hiddenMatrix.copy(t.hiddenMatrix),this}hasEntityChild(){return this.children.some(t=>Ta(t))}isAncestorOf(t){if(this.uuid===t)return!1;let o=!1;return this.traverseEntity(i=>{i.uuid===t&&(o=!0)}),o}toObjectTransformState(t=[]){this.updateWorldMatrix(!0,!1);let o={position:this.position.toArray(),rotation:[this.rotation.x*or.MathUtils.RAD2DEG,this.rotation.y*or.MathUtils.RAD2DEG,this.rotation.z*or.MathUtils.RAD2DEG],scale:this.scale.toArray(),hiddenMatrix:this.hiddenMatrix.toArray()};return ta(o,t)}getTransformValues(t,o,i){return o[t].map((a,s)=>i?.shared.getVariable(a,[this.uuid,t,gA[s]])??a)}updateTransformState(t,o){let i=!1;return t.position&&(this.position.fromArray(this.getTransformValues("position",t,o)),i=!0),t.rotation&&(Gp.fromArray(this.getTransformValues("rotation",t,o)).multiplyScalar(or.MathUtils.DEG2RAD),this.rotation.setFromVector3(Gp),i=!0),t.scale&&(this.scale.fromArray(this.getTransformValues("scale",t,o)),i=!0),t.hiddenMatrix!==void 0&&(i=!0,this.hiddenMatrix.fromArray(t.hiddenMatrix??vn.identity)),i&&(this.updateMatrix(),this.resetBBoxNeedsUpdate(),this.invalidateClonerTransform(this),this.traverseEntityAncestors(a=>{a.invalidateClonerTransform(this)})),t.position&&t.rotation&&t.scale&&t.hiddenMatrix!==void 0&&this.updateWorldMatrix(!1,!0),i}onVariableUpdate(t=!1){if(t){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 t of this.children)je.is(t)&&t.disposeRecursively()}disposeRecursively(){this.dispose(),this.children.forEach(t=>{je.is(t)&&t.disposeRecursively()})}toState(t=[]){let o={name:this.name,visible:this.visible,raycastLock:this.raycastLock,...this.toObjectTransformState(t)};return ta(o,t)}updateByObjUpdateOp(t,o){t!==void 0&&this.updateByOp({type:0,props:t,path:[]},{...this.data,...t},o,!1)}updateByOp(t,o,i,a){let s=this.data;this.data=o;let l=t,c=Ge(t.path,["states","*"]);if(c!==null){if(t.type===0){let[u]=c;if(this?.stateSelection===u){let p={...t.props};if(delete p.name,Object.values(t.props).some(d=>d===void 0)){let d=this.data;if(d!==void 0){let h=yt.zoom(d,t.path.slice(2));if(h)for(let f in t.props)t.props[f]===void 0&&f in h&&(p[f]=h[f])}}l={...t,props:p,path:t.path.slice(2)}}}}else if(t.type===0){let u=this.stateSelection?this.data.states.data(this.stateSelection):void 0;if(u!==void 0){if(t.props.name!==void 0&&u.name){let{name:d,...h}=u;u=h}if(t.props.material!==void 0&&"material"in u){let{material:d,...h}=u;u=h}let p=yt.removeOverridden(t.path,t.props,u);l={...t,props:p}}}if(this.updateByPatchedOpBase(l,li.patch(this.data,this.stateSelection?this.data.states.data(this.stateSelection):void 0),i),Ge(t.path,["overrides"])){let u=[],p=[...t.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(t.type===0)for(let d of Object.keys(t.props)){u[u.length-1]=d;let h=i.scene.findInstance([this.uuid,...u]);h&&(h.overrideData=t.props[d],h.updateState(mo.apply(h.component.data,h.overrideData),i))}}else{let d=i.scene.findInstance([this.uuid,...u]);if(d){let h=yt.zoom(d.component.data,p);if(t={...t,path:p},t.type===0){let f=t.props;if(h)for(let[m,y]of Object.entries(t.props))y===void 0&&(f===t.props&&(f={...t.props}),f[m]=h[m]);t={...t,props:f}}d.overrideData=ya.resolve(o.overrides,u),d.updateByOp(t,gt.applySimple(d.data,t),i,!1)}}}else if(this.instances.length>0){let u;if(t.path.length===0&&t.type===0){let p;for(let d of So.rootOverrideProps)d in t.props&&(p===void 0&&(p={}),p[d]=t.props[d]);p&&(u={...t,props:p})}else for(let p of So.rootOverrideProps)if(Ge(t.path,[p])){u=t;break}u!==void 0&&this.instances.forEach(p=>{if(p.isInstanceRoot){let d=mo.filterOp(p.overrideData,u);d&&p.updateByOp(d,gt.applySimple(p.data,d),i,!0)}}),this.instances.forEach(p=>{if(!p.isInstanceRoot){let d=mo.filterOp(p.overrideData,t);if(d){let h;s===p.data&&t===d?h=o:h=gt.applySimple(p.data,d),p.updateByOp(d,h,i,!0)}}})}}updateByPatchedOpBase(t,o,i){if(this.dataPatched=o,t.path.length===0&&t.type===0)t.props.type!==void 0&&!Qr.is(t.props.type)&&eo.changeEntityProptotype(this,o,i);else if(t.path.length===1&&t.path[0]==="geometry"&&t.type===0&&"type"in t.props){eo.changeEntityProptotype(this,o,i);for(let a of this.children)je.is(a)&&a.updateVisible(i.scene)}this.updateByPatchedOp(t,o,i)}updateByPatchedOp(t,o,i){if(t.path.length===0&&t.type===0&&this.updateState(t.props,i),Ge(t.path,["pathSnapping"])!==null&&this.updatePathSnapping(o.pathSnapping),Ge(t.path,["cloner"])!==null){let a=gt.drop(t,1);a.path.length===0&&a.type===0&&a.props.disabled===!0?this.setFromClonerState(null,i):this.cloner?this.cloner.updateState(o.cloner,i.scene):(this.setFromClonerState(o.cloner,i),this.expandCloner(i.scene)),this.updateVisible(i.scene)}}updatePathSnapping(t=this.dataPatched.pathSnapping){this._updatedPathSnapping=t,this._needApplyPathSnapping=!0}get updatedPathSnapping(){return this._updatedPathSnapping}applyPathSnapping(t){let o=this._updatedPathSnapping?.pathId??this.dataPatched.pathSnapping.pathId,i=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=t.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=xu(c.geometry.path),p=(i+a)%1;i+a===1&&p===0&&(p=1);let d=u.getPointAt(p);if(d===null)return;let h=this.parent?this.parent?.matrixWorld:new or.Matrix4;l.updateMatrixWorld();let f=new or.Matrix4().multiplyMatrices(h.clone().invert(),l.matrixWorld);d.applyMatrix4(f);let m={position:d.toArray(),rotation:c.rotation};if(s==="tangential"){let y=new or.Matrix4().extractRotation(l.matrixWorld),g=u.getTangentAt(p).applyMatrix4(y).add(d),v=new or.Matrix4().lookAt(d,g,xA),O=Gp.setFromEuler(new or.Euler().setFromRotationMatrix(v)).multiplyScalar(or.MathUtils.RAD2DEG);m={...m,rotation:O.toArray()}}this.updateTransformState(m),this.traverseEntity(y=>{y._cameraType&&y.dispatchEvent(yA)})}updateVisible(t){if(this.visible=this.dataPatched.visible&&(!this.dataPatched.cloner||(this.dataPatched.cloner.disabled??!1)||this.dataPatched.cloner?.hideBase!==!0),!t)return;let o=!1;this.traverseEntity(i=>{if(i.data.type==="Splat")return o=!0,!0}),o&&t.reloadSplats()}updateState_Entity(t,o){t.name!==void 0&&(this.name=t.name),t.raycastLock!==void 0&&(this.raycastLock=t.raycastLock),t.visible!==void 0&&(this.updateVisible(o?.scene),this.resetBBoxNeedsUpdate()),o&&"cloner"in t&&t.cloner!==void 0&&(this.setFromClonerState(t.cloner,o),this.updateVisible(o.scene)),this.updateTransformState(t,o)}get attachedSurfaceCloners(){return this.children.filter(t=>t instanceof eo.Cloner&&t.parameters.type==="toObject")}setFromClonerState(t,o){this.disposed||(t===null||t.disabled?(this.cloner&&this.cloner.removeFromParent(),this.cloner=void 0):this.cloner===void 0?(this.cloner=new eo.Cloner(this,t),o.scene.addPendingExpandCloner(this)):this.cloner.updateState(t,o.scene))}expandCloner(t){!this.disposed&&this.cloner&&this.cloner.expandClones(t)}invalidateClonerTransform(t){this.cloner&&this.cloner.invalidateTransform(t)}requestRender(){this.dispatchEvent({type:"requestRender"})}};var An=require("three");var it=require("three"),bx=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:64,heightSegments:1,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadius:8,cornerSegments:8,hollow:0},n.parameters);e.thetaLength=it.MathUtils.clamp(e.thetaLength,0,360);let t=e.width/2,o=e.radiusTop??t,i=e.radiusBottom??t;return o===i?(o=t,i=t):o>i?(o=t,i=i*t/o):(o=o*t/i,i=t),{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width),radiusTop:o,radiusBottom:i})}}static build(n){let{width:r,depth:e,height:t,radialSegments:o,heightSegments:i,openEnded:a,thetaStart:s,thetaLength:l,radiusTop:c,radiusBottom:u,cornerRadius:p,cornerSegments:d,hollow:h}=n.parameters,f;return l===0?(f=new it.BufferGeometry,f.setAttribute("position",new it.Float32BufferAttribute([],3))):p||h?f=new al(c,u,t,o,i,a,s,l*Math.PI/180,p,p,d,h):f=new it.CylinderGeometry(c,u,t,o,i,a,s,l*Math.PI/180),f.scale(1,1,e/r),Object.assign(f,{userData:{...n,type:"CylinderGeometry"}})}};function Tn(n,r,e){e.x=n.x*r.x,e.y=n.y,e.z=n.x*r.y}function xx(n){return new it.Vector2(n.y,-n.x)}var al=class extends it.BufferGeometry{constructor(r,e,t,o,i,a,s,l,c,u,p,d,h=!1){super(),this.type="RoundedCylinderBufferGeometry",r=r!==void 0?r:1,e=e!==void 0?e:1,t=t||1,o=Math.floor(o)||8,i=Math.floor(i)||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 f=[],m=[],y=[],g=[],v=0,O=t/2,P=new it.Vector3,S=new it.Vector3;h&&r==0&&(r=c),h&&e==0&&(e=u);let T=new it.Vector2(r,O),I=new it.Vector2(e,-O),x=null,E=null,N=null,M=null,D=T.clone().sub(I),_=0,B=0,z=0;d>0&&(_=Math.min(r,e)*(1-d),B=r-_,z=e-_);let U=T.clone();U.x-=_;let R=Math.PI-D.angle(),W=D.angle(),j=Math.tan(W/2),F=Math.tan(R/2),H=j+F,q=d?H:F,re=d?H:j;if(c=Math.min(c,(r-B)/q,D.length()/H),u=Math.min(u,(e-z)/re,D.length()/H),c>0){let Q=c/j;x=T.clone().sub(new it.Vector2(Q,c)),d&&(N=x.clone(),N.x-=_-H*c),T.sub(D.clone().setLength(Q))}if(u>0){let Q=u/F;E=I.clone().sub(new it.Vector2(Q,-u)),I.add(D.clone().setLength(Q)),d&&(M=E.clone(),M.x-=_-H*u,U.sub(D.clone().setLength(Q)))}D=T.clone().sub(I);let ee=D.length()<.5,X=[];for(let Q=0;Q<=o;Q++){let $=[],ue=Q/o,le=ue*l+s,ne=new it.Vector2(Math.sin(le),Math.cos(le));M&&E?(te($,ue,ne,R,u,M,-1,!0),te($,ue,ne,W,u,E,-1,!1)):E?(K($,ne,E.x,0,-1),te($,ue,ne,W,u,E,-1,!1)):a||K($,ne,e,z,-1);let ce=xx(D).normalize();if(Tn(ce,ne,P),!ee)for(let ae=0;ae<=i;ae++){let me=ae/i,fe=D.clone().multiplyScalar(me).add(I);Tn(fe,ne,S),m.push(S.x,S.y,S.z),y.push(P.x,P.y,P.z),g.push(ue,.5+S.y/t),$.push(v++)}if(N&&x?(te($,ue,ne,R,c,x,1,!1),te($,ue,ne,W,c,N,1,!0)):x?(te($,ue,ne,R,c,x,1,!1),K($,ne,x.x,0,1)):a||K($,ne,r,B,1),d&&!ee){let ae=xx(D).multiplyScalar(-1).normalize();Tn(ae,ne,P);for(let me=0;me<=i;me++){let fe=me/i,he=D.clone().multiplyScalar(-fe).add(U);Tn(he,ne,S),m.push(S.x,S.y,S.z),y.push(P.x,P.y,P.z),g.push(ue,.5+S.y/t),$.push(v++)}}d&&!a&&$.push($[0]),X.push($)}for(let Q=0;Q<X.length-1;Q++)for(let $=0;$<X[0].length-1;$++){if(a&&d&&$==i)continue;let ue=X[Q][$],le=X[Q+1][$],ne=X[Q+1][$+1],ce=X[Q][$+1],ae=m[ne*3+0],me=m[ne*3+2];f.push(ue,le,ce),(ae!=0||me!=0)&&f.push(le,ne,ce)}l<Math.PI*2&&(Z(-1,X[0],s),Z(1,X[X.length-1],s+l)),this.setIndex(f),this.setAttribute("position",new it.Float32BufferAttribute(m,3)),this.setAttribute("normal",new it.Float32BufferAttribute(y,3)),this.setAttribute("uv",new it.Float32BufferAttribute(g,2));function te(Q,$,ue,le,ne,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 it.Vector2(Math.sin(xe),Math.cos(xe)*ae),C=ye.clone().multiplyScalar(ne).add(ce);Tn(C,ue,S),m.push(S.x,S.y,S.z),Tn(ye,ue,P),y.push(P.x,P.y,P.z),g.push($,.5+S.y/t),Q.push(v++)}}function K(Q,$,ue,le,ne){let ce=new it.Vector3,ae=new it.Vector2,me=[ue,le];ne<0&&me.reverse();for(let fe of me)ae.set(fe,O*ne),Tn(ae,$,ce),m.push(ce.x,ce.y,ce.z),y.push(0,ne,0),g.push(.5,.5),Q.push(v++)}function Z(Q,$,ue){let le=new it.Vector2(Math.sin(ue),Math.cos(ue)),ne=new it.Vector2(-Math.cos(ue),Math.sin(ue)),ce=new it.Vector3,ae=Q<0?(he,xe,ye)=>f.push(he,xe,ye):(he,xe,ye)=>f.push(he,ye,xe),me=new it.Vector2((r+e+B+z)/4,0);Tn(me,le,ce),m.push(ce.x,ce.y,ce.z),y.push(ne.x,0,ne.y),g.push(.5,.5);let fe=v++;for(let he of $){let xe=m.slice(he*3,he*3+3);m.push(...xe),y.push(ne.x,0,ne.y);let ye=g.slice(he*2,he*2+2);g.push(...ye),v++}for(let he=fe+1;he<v-1;he++)ae(fe,he,he+1);ae(fe,v-1,fe+1)}}};var vx=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:32,heightSegments:8,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadiusTop:8,cornerRadiusBottom:8,cornerSegments:8},n.parameters);return e.thetaLength=An.MathUtils.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(n){let{width:r,depth:e,height:t,radialSegments:o,heightSegments:i,openEnded:a,thetaStart:s,thetaLength:l,cornerRadiusTop:c,cornerRadiusBottom:u,cornerSegments:p}=n.parameters,d;return l===0?(d=new An.BufferGeometry,d.setAttribute("position",new An.Float32BufferAttribute([],3))):c>0||u>0||l<360?d=new al(0,r/2,t,o,i,a,s,l*Math.PI/180,c,u,p,0,!0):d=new An.ConeGeometry(r/2,t,o,i,a),d.scale(1,1,e/r),Object.assign(d,{userData:{...n,type:"ConeGeometry"}})}};var gr=require("three"),Sx=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,widthSegments:1,heightSegments:1,depthSegments:1,cornerRadius:8,cornerSegments:8},n.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(n){let{width:r,height:e,depth:t,widthSegments:o,heightSegments:i,depthSegments:a,cornerRadius:s,cornerSegments:l}=n.parameters,c;return s===0?c=new gr.BoxGeometry(r,e,t,o,i,a):c=new Fp(r,e,t,o,i,a,s,l),Object.assign(c,{userData:{...n,type:"CubeGeometry"}})}},jp=Math.PI/2,Fp=class extends gr.BufferGeometry{constructor(r=1,e=1,t=1,o=1,i=1,a=1,s=0,l=4){super(),this.type="BoxGeometry",o=Math.floor(o),i=Math.floor(i),a=Math.floor(a),l=Math.floor(l),s=Math.min(s,r/2,e/2,t/2);let c=[],u=[],p=[],d=[],h=0;f("z","y","x",-1,-1,t,e,r,a,i),f("z","y","x",1,-1,t,e,-r,a,i),f("x","z","y",1,1,r,t,e,o,a),f("x","z","y",1,-1,r,t,-e,o,a),f("x","y","z",1,-1,r,e,t,o,i),f("x","y","z",-1,-1,r,e,-t,o,i),s>0&&(m("z","y","x",-1,-1,1,t,e,r,a),m("z","y","x",1,-1,-1,t,e,r,a),m("z","y","x",-1,1,-1,t,e,r,a),m("z","y","x",1,1,1,t,e,r,a),m("x","y","z",-1,-1,-1,r,e,t,o),m("x","y","z",1,-1,1,r,e,t,o),m("x","y","z",-1,1,1,r,e,t,o),m("x","y","z",1,1,-1,r,e,t,o),m("y","x","z",-1,-1,1,e,r,t,i),m("y","x","z",1,-1,-1,e,r,t,i),m("y","x","z",1,1,1,e,r,t,i),m("y","x","z",-1,1,-1,e,r,t,i),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 gr.Float32BufferAttribute(u,3)),this.setAttribute("normal",new gr.Float32BufferAttribute(p,3)),this.setAttribute("uv",new gr.Float32BufferAttribute(d,2));function f(g,v,O,P,S,T,I,x,E,N){let M=(T-2*s)/E,D=(I-2*s)/N,_=T/2-s,B=I/2-s,z=x/2,U=E+1,R=N+1,W=0,j=new gr.Vector3;for(let F=0;F<R;F++){let H=F*D-B;for(let q=0;q<U;q++){let re=q*M-_;j[g]=re*P,j[v]=H*S,j[O]=z,u.push(j.x,j.y,j.z),j[g]=0,j[v]=0,j[O]=x>0?1:-1,p.push(j.x,j.y,j.z),d.push(q/E),d.push(1-F/N),W+=1}}for(let F=0;F<N;F++)for(let H=0;H<E;H++){let q=h+H+U*F,re=h+H+U*(F+1),ee=h+(H+1)+U*(F+1),X=h+(H+1)+U*F;c.push(q,re,X),c.push(re,ee,X)}h+=W}function m(g,v,O,P,S,T,I,x,E,N){let M=(I-2*s)/N,D=I/2-s,_=x/2-s,B=E/2,z=N+1,U=0,R=new gr.Vector3,W=new gr.Vector3;for(let j=0;j<l+1;j++){let F=j/l*jp,H=Math.sin(F)*s,q=(1-Math.cos(F))*s,re=Math.sin(F),ee=Math.cos(F);R[v]=(_+H)*S,R[O]=(B-q)*T,W[g]=0,W[v]=re*Math.sign(R[v]),W[O]=ee*Math.sign(R[O]);for(let X=0;X<z;X++){let te=X*M-D;R[g]=te*P,u.push(R.x,R.y,R.z),p.push(W.x,W.y,W.z),d.push(X/N),d.push(0),U+=1}}for(let j=0;j<l;j++)for(let F=0;F<N;F++){let H=h+F+z*j,q=h+F+z*(j+1),re=h+(F+1)+z*(j+1),ee=h+(F+1)+z*j;c.push(H,q,ee),c.push(q,re,ee)}h+=U}function y(g,v,O){let P=new gr.Vector3,S=new gr.Vector3(r/2,e/2,t/2);S.subScalar(s);let T=[],I=g*v*O>0?(E,N,M)=>c.push(E,N,M):(E,N,M)=>c.push(E,M,N);for(let E=0;E<=l;E++){let N=[],M=jp*(1-E/l),D=Math.cos(M),_=Math.sin(M),B=0;for(let z=0;z<=E;z++){let U=Math.cos(B),R=Math.sin(B);P.x=D*U,P.y=_,P.z=D*R;let W=S.clone().addScaledVector(P,s);u.push(g*W.x,v*W.y,O*W.z),p.push(g*P.x,v*P.y,O*P.z),d.push(0,0),N.push(h++),B+=jp/E}T.push(N)}let x=T.length-1;for(let E=0;E<x;E++){let N=T[E],M=T[E+1],D=N.length-1;I(N[0],M[1],M[0]);for(let _=1;_<=D;_++)I(N[_-1],N[_],M[_]),I(N[_],M[_+1],M[_])}}}};var Tt=require("three"),Mn=class extends Tt.BufferGeometry{constructor(r=[],e=[],t="",o=1,i=.2,a=4){super(),this.type="PolyhedronGeometryRound";let s=[],l=[],c=[];u(),p(),this.setAttribute("position",new Tt.Float32BufferAttribute(s,3)),this.setAttribute("normal",new Tt.Float32BufferAttribute(c,3)),this.setAttribute("uv",new Tt.Float32BufferAttribute(l,2));return;function u(){i=Math.min(1-1e-5,i),i==0&&(a=0);let h={IcosahedronGeometry:5,DodecahedronGeometry:3,HexahedronGeometry:3,OctahedronGeometry:4,TetrahedronGeometry:3}[t],f=new Tt.Vector3,m=f.clone(),y=new Tt.Triangle,g=i*o,v=o-g,O=a+1,P=new Tt.Vector3,S=(j,F)=>P.subVectors(j,F).normalize(),T=(j,F)=>Array(j).fill(void 0).map(F),I=T(r.length/3,(j,F)=>new Tt.Vector3().fromArray(r,F*3).setLength(o)),x=[],E=1e6;for(let j=0;j<I.length;j++){let F=I[j],H=[],q,re,ee,X=1e10,te=-1;for(;(te=e.indexOf(j,te+1))!=-1;){let $=te-te%3;q=e[$+(te+1)%3],re=e[$+(te+2)%3],ee=F.distanceToSquared(I[q]),X=Math.min(X,ee),H.push([q,re,ee])}X+=1e-6;let K=[],Z=0,Q=H.length;for(let $=0;$<Q;$++){[q,re,ee]=H[Z];let ue=x[q]?.includes(j)==!0;ee<=X&&K.push(q+ +ue*E),Z=H.findIndex(le=>le[0]==re)}x.push(K)}let N=[];{let j=0,F=0,H,q,re=h==3;for(let ee=0;ee<=a;ee++){H=ee*(ee+1)/2,q=(ee+1)*(ee+2)/2;for(let X=0;X<a-ee;X++)[j,F]=[H+X+ee+2,q+X+ee+3],N.push(H,q,...re?[F,H]:[j,q],F,j),[H,q]=[j,F];N.push(H,q,H+a+2)}}let M=f.clone(),D=f.clone(),_=f.clone(),B=f.clone(),z=f.clone(),U=[],R=T(I.length,()=>T(h,()=>f.clone()));for(let j=0;j<I.length;j++){f.copy(I[j]).normalize(),M.copy(f).multiplyScalar(v);let F=x[j];for(let K=0;K<F.length;K++){let Z=F[K],Q=F[(K+1)%h];y.setFromPointsAndIndices(I,j,Z%E,Q%E),y.b.sub(y.a).setLength(1e10).add(y.a),y.c.sub(y.a).setLength(1e10).add(y.a),y.closestPointToPoint(M,R[j][K])}let H=[],q=[],re=[],ee=new Tt.Vector3;a==0&&[...R[j]].reduce((K,Z)=>K.add(Z),ee).multiplyScalar(1/h);for(let K=0;K<h;K++){let Z=[],Q=(K-1+h)%h,$=R[j][Q],ue=R[j][K];f.copy($).sub(M),m.copy(ue).sub(M);let le=M.angleTo(f),ne=f.angleTo(m),ce=Math.cos(le)*g;a==0?D.copy(ee):D.copy(M).setLength(v+ce),q.push(ce);let ae=[D,$,ue];for(let me=0;me<2;me++){let fe=ae[me],he=ae[me+1];B.subVectors(fe,M),z.subVectors(he,M),_.crossVectors(B,z).normalize();for(let xe=0;xe<O;xe++){let ye=[le,ne][me]*xe/O;f.copy(B).applyAxisAngle(_,ye).add(M),H.push(f.clone()),me&&(S(f,M),Z.push([xe==0?fe:f.clone(),P.clone()]))}me&&(S(he,M),Z.push([he,P.clone()]))}re.push(Z)}U.push(re);let X=2*O,te=2;for(let K=0;K<h;K++){let Z=X*K,Q=X*((K+1)%h),$=[H[Z]];for(let le=1;le<O;le++){B=H[Z+le],z=H[Q+le],$.push(B);for(let ne=1,ce=le-te+1;ne<=ce;ne++)f.lerpVectors(B,z,ne/(ce+1)),f.sub(M).setLength(q[K]).add(M),$.push(f.clone());$.push(z)}for(let le=0;le<O;le++)$.push(H[le+O+Z]);$.push(H[Q+O]);let ue=N.map(le=>$[le]);s.push(...ue.map(le=>[le.x,le.y,le.z]).flat()),c.push(...ue.map(le=>(S(le,M),[P.x,P.y,P.z])).flat())}}let W=[];for(let j=0;j<x.length;j++)for(let F=0;F<h;F++){let H=x[j][F];if(H<E){let q=x[H].findIndex(X=>X%E==j),re=U[j][F],ee=U[H][q];for(let X=0;X<O;X++){let te=re[X],K=ee[O-X],Z=re[X+1],Q=ee[O-(X+1)];[te,K,Z,Z,K,Q].forEach($=>{s.push($[0].x,$[0].y,$[0].z),c.push($[1].x,$[1].y,$[1].z)})}W.push(re[0][0],ee[O][0],re[O][0],ee[0][0])}}for(;W.length;){let j,F,H,q;[j,F]=W.splice(0,2);let re=[j];for(;j!=F;)re.push(F),H=W.indexOf(F),q=H%2,F=W.splice(H-q,2)[1-q];P.subVectors(re[0],re[1]).cross(f.subVectors(re[0],re[2])).normalize();let ee=P.dot(re[0])<0;ee&&P.negate();for(let X=1;X<=re.length-2;X++)[re[X+ +ee],re[X+1-+ee],re[0]].forEach(te=>{s.push(te.x,te.y,te.z),c.push(P.x,P.y,P.z)})}}function p(){let d=new Tt.Vector3;for(let I=0;I<s.length;I+=3){d.x=s[I+0],d.y=s[I+1],d.z=s[I+2];let x=S(d)/2/Math.PI+.5,E=T(d)/Math.PI+.5;l.push(x,1-E)}let h=new Tt.Vector3,f=new Tt.Vector3,m=new Tt.Vector3,y=new Tt.Vector3,g=new Tt.Vector2,v=new Tt.Vector2,O=new Tt.Vector2,P=(I,x,E,N)=>{N<0&&I.x===1&&(l[x]=I.x-1),E.x===0&&E.z===0&&(l[x]=N/2/Math.PI+.5)};for(let I=0,x=0;I<s.length;I+=9,x+=6){h.set(s[I+0],s[I+1],s[I+2]),f.set(s[I+3],s[I+4],s[I+5]),m.set(s[I+6],s[I+7],s[I+8]),g.set(l[x+0],l[x+1]),v.set(l[x+2],l[x+3]),O.set(l[x+4],l[x+5]),y.copy(h).add(f).add(m).divideScalar(3);let E=S(y);P(g,x+0,h,E),P(v,x+2,f,E),P(O,x+4,m,E)}for(let I=0;I<l.length;I+=6){let x=l[I+0],E=l[I+2],N=l[I+4],M=Math.max(x,E,N),D=Math.min(x,E,N);M>.9&&D<.1&&(x<.2&&(l[I+0]+=1),E<.2&&(l[I+2]+=1),N<.2&&(l[I+4]+=1))}function S(I){return Math.atan2(I.z,-I.x)}function T(I){return Math.atan2(-I.y,Math.sqrt(I.x*I.x+I.z*I.z))}}}static fromJSON(r){return new Mn(r.vertices,r.indices,r.radius,r.corner,r.cornerSides)}};var wx=require("three"),Px=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,detail:0,corner:0,cornerSides:4},n.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(n){let{width:r,height:e,depth:t,detail:o,corner:i,cornerSides:a}=n.parameters,s=o===0&&i!==0?new sl(r*.5,i,a):new wx.DodecahedronGeometry(r*.5,o);return s.scale(1,e/r,t/r),Object.assign(s,{userData:{...n,type:"DodecahedronGeometry"}})}},sl=class extends Mn{constructor(r=1,e=.2,t=4){let o=(1+Math.sqrt(5))/2,i=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,-i,-o,0,-i,o,0,i,-o,0,i,o,-i,-o,0,-i,o,0,i,-o,0,i,o,0,-o,0,-i,o,0,-i,-o,0,i,o,0,i],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,r,e,t),this.type=l}static fromJSON(r){return new sl(r.radius,r.corner,r.cornerSides)}};var Ye=require("three");var Ne=require("three"),ll=1e-12,Ma=class{constructor(r){this.position=new Ne.Vector2;this.startPosition=new Ne.Vector2;this.uuid=Ne.MathUtils.generateUUID();this.position=r.clone()}start(){this.reset()}reset(){this.startPosition.copy(this.position)}applyOffset(r){this.position.copy(this.startPosition).add(r)}copy(r){return this.position.copy(r.position),this.startPosition.copy(r.startPosition),this}clone(){return new Ma(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},Ia=class extends Ma{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new Ia(this.parent).copy(this)}},to=class extends Ma{constructor(e,t){super(t);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new Ia(this),new Ia(this))}static create(e,t){let o=new to(e,new Ne.Vector2(...t.position));return o.controls[0].position.set(...t.controlPrevious.position),o.controls[1].position.set(...t.controlNext.position),o.roundness=t.roundness,o.areControlsDirectionsMirrored=t.areControlsDirectionsMirrored,o}getOppositeControl(e){let t=this.controls.indexOf(e);return t===0?this.controls[1]:t===1?this.controls[0]:null}applyOffsetToControls(e,t=1){for(let o=0,i=this.controls.length;o<i;o++){let a=this.controls[o];this.position.distanceTo(a.position)<=t?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 to(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),t=this.curveAfter?.getTangentAt(0);return[e,t]}computeNormals(e=new Ne.Vector2,t=new Ne.Vector2){let[o,i]=this.computeTangents();return o&&i&&(Ox(o,e),Ox(i,t)),[e,t]}computeTangent(e=new Ne.Vector2){let[t,o]=this.computeTangents();return t&&o&&e.copy(t).add(o).normalize(),e}computeNormal(e=new Ne.Vector2){let[t,o]=this.computeNormals();return e.copy(t).add(o).normalize(),e}};function Ox(n,r=new Ne.Vector2){let e=n.length();return r.set(-n.y/e,n.x/e)}var kp=n=>n,Na=new Ne.Vector2,bu=new Ne.Vector2,bA=new Ne.Vector2,vA=new Ne.Vector2,SA=new Ne.Vector2,wA=new Ne.Vector2,Tx=new Ne.Vector3,Ax=new Ne.Vector3;function Mx(n){let r=new Ne.Vector2;r.addVectors(n.v0,Na.subVectors(n.v1,n.v0).multiplyScalar(2/3));let e=new Ne.Vector2;return e.addVectors(n.v2,bu.subVectors(n.v1,n.v2).multiplyScalar(2/3)),new Ne.CubicBezierCurve(n.v0,r,e,n.v2)}function cl(n,r,e=Number.EPSILON){return Math.abs(n-r)<e}function PA(n,r,e=Number.EPSILON){return n.distanceTo(r)<e}function OA(n,r,e=Number.EPSILON){return n.distanceTo(r)<e}function Hp(n,r,e){let t=Math.sqrt(Math.pow(r.x-n.x,2)+Math.pow(r.y-n.y,2)),o=Math.sqrt(Math.pow(r.x-e.x,2)+Math.pow(r.y-e.y,2)),i=Math.sqrt(Math.pow(e.x-n.x,2)+Math.pow(e.y-n.y,2));return Math.acos((o*o+t*t-i*i)/(2*o*t))}function Ix(n,r,e){return Cx(n,r)&&Cx(r,e)&&Up(n.position,r.position,e.position)}function Up(n,r,e){return Na.copy(r).sub(n).cross(bu.copy(e).sub(n))===0}function Nx(n,r,e,t,o){let i=Math.sqrt(Math.pow(r.x-n.x,2)+Math.pow(r.y-n.y,2)),a=(n.y+r.y)/2,s=(n.x+r.x)/2,l=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(n.y-r.y)/i,c=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(r.x-n.x)/i;return t.set(s+l,a+c),o.set(s-l,a-c),[t,o]}function Dx(n,r,e){let t=n.distanceTo(e),o=r.distanceTo(e);return t<o?r:n}function Ex(n,r,e,t,o,i){let a=r.x-n.x,s=r.y-n.y,l=e.x-n.x,c=e.y-n.y,u=Math.sqrt((a+l)*(a+l)+(s+c)*(s+c)),p;return Hp(r,n,e)>Math.PI&&(u*=-1),cl(c,s)?p=(s+c)*(t/u-.5)*8/3/(a-l):p=(a+l)*(t/u-.5)*8/3/(c-s),o.set(r.x-p*s,r.y+p*a),i.set(e.x+p*c,e.y-p*l),[o,i]}function Wp(n,r){return n.position.equals(n.controls[1].position)&&r.position.equals(r.controls[0].position)}function Cx(n,r){return Up(n.position,n.controls[1].position,r.position)&&Up(n.position,r.controls[0].position,r.position)}function _x(n,r,e,t,o=.5){let i=Na.subVectors(r,n).multiplyScalar(o).add(n),a=bu.subVectors(e,r).multiplyScalar(o).add(r),s=bA.subVectors(t,e).multiplyScalar(o).add(e),l=i,c=vA.subVectors(a,i).multiplyScalar(o).add(i),u=SA.subVectors(s,a).multiplyScalar(o).add(a),p=s,d=wA.subVectors(u,c).multiplyScalar(o).add(c);return[n.x,n.y,l.x,l.y,c.x,c.y,d.x,d.y,u.x,u.y,p.x,p.y,t.x,t.y]}function Bx(n,r,e=12,t=!0){let o=Ax.set(0,0,0),i,a=0,s=[];for(let l=0;l<r.length;l++){let c=kp(r[l]),u=Na,p=In(c,e);s.push(p);for(let d=0;d<=p;d++)if(c instanceof Ne.CubicBezierCurve||c instanceof Ne.QuadraticBezierCurve||c instanceof Ne.LineCurve){if(c.getPoint(d/p,u),o.set(u.x,u.y,0),i!==void 0&&OA(i,o))continue;i===void 0&&(i=Tx),i.copy(o),n.setXYZ(a,o.x,o.y,o.z),a++}}return t&&a>1&&!(n.getX(a-1)===n.getX(0)&&n.getY(a-1)===n.getY(0)&&n.getZ(a-1)===n.getZ(0))&&(n.setXYZ(a,n.getX(0),n.getY(0),n.getZ(0)),a++),n}function Lx(n,r,e,t=12,o=!0){let i=Ax.set(0,0,0),a=0,s=[];for(let l=0;l<r.length;l++){if(e[l]===!1)continue;let c,u=kp(r[l]),p=Na,d=In(u,t);s.push(d);for(let h=0;h<=d;h++)if(u instanceof Ne.CubicBezierCurve||u instanceof Ne.QuadraticBezierCurve||u instanceof Ne.LineCurve){if(u.getPoint(h/d,p),i.set(p.x,p.y,0),c?.equals(i))continue;c===void 0?c=Tx:(n.setXYZ(a,c.x,c.y,c.z),a++,n.setXYZ(a,i.x,i.y,i.z),a++),c.copy(i)}}return o&&a>1&&!(n.getX(a-1)===n.getX(0)&&n.getY(a-1)===n.getY(0)&&n.getZ(a-1)===n.getZ(0))&&(n.setXYZ(a,n.getX(0),n.getY(0),n.getZ(0)),a++),s}function qp(n,r=12,e=!1){let t=[];for(let o=0,i=n.length;o<i;o++){let a=n[o],s=0;if(e&&a.roundedCurveCorner!==void 0){let l=In(a.roundedCurveCorner,r)*.5;o>0&&(t[o-1]+=l),s+=l}a.curveAfter!==void 0&&(s+=In(a.curveAfter,r)),t.push(s)}return n.length>0&&e&&n[0].roundedCurveCorner!==void 0&&(t[n.length-1]+=In(n[0].roundedCurveCorner,r)*.5),t}function In(n,r=12){return n&&n instanceof Ne.EllipseCurve?r*2:n&&(n instanceof Ne.LineCurve||n instanceof Ne.LineCurve3)?1:n&&n instanceof Ne.SplineCurve?r*n.points.length:r}function Rx(n,r,e=12,t=!0){let o,i=0;for(let a=0;a<r.length;a++){let s=kp(r[a]),l=In(s,e),c=Na;for(let u=0;u<=l;u++)if(s instanceof Ne.CubicBezierCurve||s instanceof Ne.QuadraticBezierCurve||s instanceof Ne.LineCurve){if(s.getPoint(u/l,c),o!==void 0&&PA(o,c,ll))continue;o===void 0&&(o=bu),o.copy(c),n.push(c.x,c.y),i++}}return cl(n[0],n[n.length-2],ll)&&cl(n[1],n[n.length-1],ll)&&(n.pop(),n.pop()),t&&i>1&&!(cl(n[i-1],n[1],ll)&&cl(n[i-2],n[0],ll))&&(n.push(n[0],n[1]),i++),n}var $p=new Ye.Vector2,CA=new Ye.Vector2,TA=new Ye.Vector2,AA=new Ye.Vector2,MA=new Ye.Vector2,IA=new Ye.Vector2,$e=class extends Ye.Shape{constructor(e=100,t=100){super();this.points=[];this.shapeHoles=[];this.plane=new Ye.Plane(new Ye.Vector3(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=Ye.MathUtils.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=t}static createFromState(e,t,o){let i=new $e;return i.isClosed=e.isClosed,i.points=e.points.map(a=>to.create(a.id,a.data)),typeof e.roundness=="number"&&(i.roundness=e.roundness),i.shapeHoles=e.shapeHoles.map(a=>$e.createFromState(a)),t!==void 0&&o!==void 0&&i.applySize(t,o),i.update(),i}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 t=0,o=this.points.length;t<o;t++)this.points[t].roundness=e;this.needsUpdate=!0}}getPointsIndexesByIds(e){return e.map(t=>this.getPointIndexById(t)).filter(t=>t>=0)}getPointIndexById(e){let t=this.points.length,o=this.points.findIndex(i=>i.uuid===e);if(o<0){let i=t;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)i+=c;else return u+i}}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 t=this.points.length;for(let o=0,i=this.shapeHoles.length;o<i;o++){let a=this.shapeHoles[o],s=e-t;if(s<=a.points.length-1)return a.points[s];t+=a.points.length}}throw new Error("This shape does not have a point for this index: "+e)}getBezierPointIndex(e){let t=this.points.indexOf(e);if(t>=0)return t;if(t=this.points.length,this.shapeHoles.length>0)for(let o=0,i=this.shapeHoles.length;o<i;o++){let a=this.shapeHoles[o],s=a.points.indexOf(e);if(s>=0)return t+s;t+=a.points.length}return-1}getAllPoints(){let e=[].concat(...this.shapeHoles.map(t=>t.points));return[...this.points,...e]}applySize(e,t){e===0&&(e=.001),t===0&&(t=.001),this._width=e,this._height=t}applyScale(e,t){let o=$p.set(e,t);for(let i=0,a=this.points.length;i<a;i++){let s=this.points[i];s.position.multiply(o),s.controls[0].position.multiply(o),s.controls[1].position.multiply(o)}for(let i=0,a=this.shapeHoles.length;i<a;i++)this.shapeHoles[i].applyScale(e,t);this._update()}createPoint(e,t=0,o=Ye.MathUtils.generateUUID()){let i;e instanceof Ye.Vector2?i=e:i=new Ye.Vector2(e,t);let a=new to(o,i);return a.roundness=this.roundness,a}addPoint(e){this.points.push(e),this.needsUpdate=!0}addPointAt(e,t){this.points.splice(t,0,e),this.needsUpdate=!0}getPointByUuid(e){for(let t=0,o=this.points.length;t<o;t++){let i=this.points[t];if(i.uuid===e)return i}for(let t=0,o=this.shapeHoles.length;t<o;t++){let a=this.shapeHoles[t].getPointByUuid(e);if(a)return a}}getFirstPoint(){return this.points[0]}getLastPoint(){return this.points[this.points.length-1]}removePoint(e){let t=this.points.indexOf(e);t>=0&&this.points.splice(t,1),this.needsUpdate=!0}removePointById(e){let t=this.points.find(o=>o.uuid===e);t&&this.removePoint(t)}update(){for(let e=0,t=this.shapeHoles.length;e<t;e++)this.shapeHoles[e].update();this._update()}extractShapePointsToBuffer(e,t=12,o=!1){this.subdivision=t,this.curveDivisions===void 0&&this.computeCurveDivisions(t);let i=o?this.roundedCurveDivisions:this.curveDivisions;return Bx(e,o?this.roundedCurves:this.curves,t,this.autoClose),i.reduce((a,s)=>a+s,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=qp(this.points,e,!1),this.roundedCurveDivisions=qp(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,t,o=12){return Lx(e,this.curves,t,o,this.autoClose).reduce((a,s)=>a+s,0)*2}extractShapePointsToFlatArray(e,t=12){return this.subdivision=t,this.curveDivisions===void 0&&this.computeCurveDivisions(t),Rx(e,this.roundedCurves,t,this.autoClose)}getCurveIndexFromVertexId(e,t=!1){let o=0;this.curveDivisions===void 0&&this.computeCurveDivisions(this.subdivision);let i=t?this.roundedCurveDivisions:this.curveDivisions,a=0;t&&this.points[0].roundedCurveCorner!==void 0&&(a=In(this.points[0].roundedCurveCorner,this.subdivision)*.5);let s=e-a;s<0&&(s+=i.reduce((l,c)=>l+c,0));for(let l=0,c=i.length;l<c;l++){let u=i[l];if(s<o+u)return[l,(s-o+1)/u];o+=u}return[0,1]}getCurveT(e,t,o){let i=this.points[e],a=this.points[e>=this.points.length-1?0:e+1],s=this.curveDivisions,l=s[e];if(Wp(i,a)){let p=i.position.distanceTo(a.position);return i.position.distanceTo($p.set(o.x,o.y))/p}let c=0;for(let p=0;p<e;p++)c+=s[p];return(t-c)/l}dispose(){}_applyCurveForPoint(e,t){Wp(t,e)?this.lineTo(e.position.x,e.position.y):this.bezierCurveTo(t.controls[1].position.x,t.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,t.curveAfter=o;let i=o.clone();e.roundedCurveBefore=i,t.roundedCurveAfter=i,e.roundedCurveCorner=void 0,this.roundedCurves.push(i)}_update(){if(this.curves=[],this.roundedCurves=[],!this.points.length)return;for(let t=0,o=this.points.length;t<o;t++){let i=this.points[t];if(t===0)this.moveTo(i.position.x,i.position.y);else{let a=this.points[t-1];this._applyCurveForPoint(i,a)}}let e=this.getLastPoint();if(e?.curveAfter&&(e.curveAfter=void 0),this.isClosed){let t=this.points[0],o=this.points[this.points.length-1];this._applyCurveForPoint(t,o)}if(this.points.length>2){let t=0;for(let o=0,i=this.points.length;o<i;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&&Ix(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 h=a.roundedCurveBefore,f=a.roundedCurveAfter,m=p.getLength(),y=d.getLength(),g=Math.min(c,m*.499),v=Math.min(c,y*.499),O=Math.min(g,v),P=1-O/m,S=O/y,T=p.getPointAt(P,$p),I=d.getPointAt(S,CA);this._subSplitCurve(p,h,P,T,void 0),this._subSplitCurve(d,f,S,void 0,I);let x;if(this.useCubicForRoundedCorners){let E=Hp(T,a.position,I)/2,N=Math.tan(E)*T.distanceTo(a.position),[M,D]=Nx(T,I,N,TA,AA),_=Dx(M,D,a.position),[B,z]=Ex(_,T,I,N,MA,IA);x=new Ye.CubicBezierCurve(T.clone(),B.clone(),z.clone(),I.clone())}else x=new Ye.QuadraticBezierCurve(T.clone(),a.position.clone(),I.clone());a.roundedCurveCorner=x,this.roundedCurves.splice(o+t,0,x),t++}}}}_subSplitCurve(e,t,o,i,a){if(e instanceof Ye.LineCurve)i!==void 0&&t.v2.copy(i),a!==void 0&&t.v1.copy(a);else{let s=e,l=t,c=s.getUtoTmapping(o,0),u=_x(s.v0,s.v1,s.v2,s.v3,c);return i!==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 t}clone(){let e=new $e(this._width,this._height);return e.points=this.points.map(t=>t.clone()),e.isClosed=this.isClosed,e.roundness=this.roundness,e.isMesh2D=this.isMesh2D,e.shapeHoles=this.shapeHoles.map(t=>t.clone()),e}toJSON(){return{points:this.points.reduce((e,t)=>e.concat(t.toJSON()),[]),shapeHoles:this.shapeHoles.map(e=>e.toJSON()),isClosed:this.isClosed,roundness:this.roundness}}fromJSON(e){this.points=[],this.pointIDs=0;let t=e.points.length/7;for(let o=0;o<t;o++){let i=o*7,a=e.points[i+0],s=e.points[i+1],l=e.points[i+2],c=e.points[i+3],u=e.points[i+4],p=e.points[i+5],d=e.points[i+6],h=new to(Ye.MathUtils.generateUUID(),new Ye.Vector2(a,s));h.controls[0].position.set(l,c),h.controls[1].position.set(u,p),h.roundness=d,this.points.push(h)}return this.shapeHoles=e.shapeHoles?.length?e.shapeHoles.map(o=>{let i=new $e;return i.fromJSON(o),i}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e,t=!1){this.isText=t;let o=(a,s)=>{s instanceof Ye.CubicBezierCurve&&s.v3.equals(a.position)&&a.controls[0].position.copy(s.v2)},i=a=>{let s=[],l,c;for(l=0,c=a.length;l<c;l++)a[l]instanceof Ye.QuadraticBezierCurve&&(a[l]=Mx(a[l]));for(l=0,c=a.length;l<c;l++){let d=a[l],h=l>0?a[l-1]:null,f;d instanceof Ye.CubicBezierCurve?(f=this.createPoint(d.v0),f.controls[1].position.copy(d.v1)):d instanceof Ye.LineCurve&&(f=this.createPoint(d.v1)),f!==void 0&&(h!==null&&o(f,h),s.push(f))}let u=a[a.length-1],p=!1;return u instanceof Ye.CubicBezierCurve?u.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(u.v2),p=!0):u instanceof Ye.LineCurve&&u.v2.equals(s[0].position)&&(p=!0),this.isClosed=p,s};return this.points=i(e.curves),e instanceof Ye.Shape&&(this.shapeHoles=e.holes.map(a=>{let s=new $e;return s.fromShape(a),s})),this.update(),this}updatePoint(e,t){let o=this.getPointByUuid(e);o&&(t.position!==void 0&&o.position.fromArray(t.position),t.roundness!==void 0&&(o.roundness=t.roundness),t.areControlsDirectionsMirrored!==void 0&&(o.areControlsDirectionsMirrored=t.areControlsDirectionsMirrored),this.needsUpdate=!0)}updatePreviousControl(e,t){let i=this.getPointByUuid(e)?.controls[0];i&&(t.position&&i.position.fromArray(t.position),this.needsUpdate=!0)}updateNextControl(e,t){let i=this.getPointByUuid(e)?.controls[1];i&&(t.position&&i.position.fromArray(t.position),this.needsUpdate=!0)}};var Xp=Math.PI*2;function Yp({x:n,y:r},e,t,o,i){return{x:n*e+o,y:r*t+i}}function NA(n,r){let e=r===1.5707963267948966?.551915024494:r===-1.5707963267948966?-.551915024494:1.3333333333333333*Math.tan(r/4),t=Math.cos(n),o=Math.sin(n),i=Math.cos(n+r),a=Math.sin(n+r);return[{x:t-o*e,y:o+t*e},{x:i+a*e,y:a-i*e},{x:i,y:a}]}function Vx(n,r,e,t){let o=n*t-r*e<0?-1:1,i=Math.min(1,Math.max(-1,n*e+r*t));return o*Math.acos(i)}function DA(n,r,e,t,o,i,a,s,l,c){let u=Math.pow(o,2),p=Math.pow(i,2),d=Math.pow(a,2),h=Math.pow(s,2),f=u*p-u*h-p*d;f<0&&(f=0),f/=u*h+p*d,f=Math.sqrt(f)*(l===c?-1:1);let m=f*o/i*s,y=f*-i/o*a,g=m+(n+e)/2,v=y+(r+t)/2,O=(a-m)/o,P=(s-y)/i,S=(-a-m)/o,T=(-s-y)/i,I=Vx(1,0,O,P),x=Vx(O,P,S,T);return!c&&x>0&&(x-=Xp),c&&x<0&&(x+=Xp),{centerx:g,centery:v,ang1:I,ang2:x}}function zx({px:n,py:r,cx:e,cy:t,rx:o,ry:i,largeArcFlag:a,sweepFlag:s}){let l=[];if(o===0||i===0)return[];let c=(n-e)/2,u=(r-t)/2;if(c===0&&u===0)return[];o=Math.abs(o),i=Math.abs(i);let p=Math.pow(c,2)/Math.pow(o,2)+Math.pow(u,2)/Math.pow(i,2);p>1&&(o*=Math.sqrt(p),i*=Math.sqrt(p));let d=DA(n,r,e,t,o,i,c,u,a,s),{ang1:h,ang2:f}=d,{centerx:m,centery:y}=d,g=Math.abs(f)/(Xp/4);Math.abs(1-g)<1e-7&&(g=1);let v=Math.max(Math.ceil(g),1);f/=v;for(let O=0;O<v;O++)l.push(NA(h,f)),h+=f;return l.map(O=>{let{x:P,y:S}=Yp(O[0],o,i,m,y),{x:T,y:I}=Yp(O[1],o,i,m,y),{x,y:E}=Yp(O[2],o,i,m,y);return{x1:P,y1:S,x2:T,y2:I,x,y:E}})}var pi=require("three");var We;(function(n){n[n.ODD=0]="ODD",n[n.NONZERO=1]="NONZERO",n[n.POSITIVE=2]="POSITIVE",n[n.NEGATIVE=3]="NEGATIVE",n[n.ABS_GEQ_TWO=4]="ABS_GEQ_TWO"})(We||(We={}));var bt;(function(n){n[n.POLYGONS=0]="POLYGONS",n[n.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",n[n.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(bt||(bt={}));function Pe(n,r){if(!n)throw r||"Assertion Failed!"}var ve=function(){function n(){}return n.vertEq=function(r,e){return r.s===e.s&&r.t===e.t},n.vertLeq=function(r,e){return r.s<e.s||r.s===e.s&&r.t<=e.t},n.transLeq=function(r,e){return r.t<e.t||r.t===e.t&&r.s<=e.s},n.edgeGoesLeft=function(r){return n.vertLeq(r.Dst,r.Org)},n.edgeGoesRight=function(r){return n.vertLeq(r.Org,r.Dst)},n.vertL1dist=function(r,e){return Math.abs(r.s-e.s)+Math.abs(r.t-e.t)},n.edgeEval=function(r,e,t){Pe(n.vertLeq(r,e)&&n.vertLeq(e,t));var o=e.s-r.s,i=t.s-e.s;return o+i>0?o<i?e.t-r.t+(r.t-t.t)*(o/(o+i)):e.t-t.t+(t.t-r.t)*(i/(o+i)):0},n.edgeSign=function(r,e,t){Pe(n.vertLeq(r,e)&&n.vertLeq(e,t));var o=e.s-r.s,i=t.s-e.s;return o+i>0?(e.t-t.t)*o+(e.t-r.t)*i:0},n.transEval=function(r,e,t){Pe(n.transLeq(r,e)&&n.transLeq(e,t));var o=e.t-r.t,i=t.t-e.t;return o+i>0?o<i?e.s-r.s+(r.s-t.s)*(o/(o+i)):e.s-t.s+(t.s-r.s)*(i/(o+i)):0},n.transSign=function(r,e,t){Pe(n.transLeq(r,e)&&n.transLeq(e,t));var o=e.t-r.t,i=t.t-e.t;return o+i>0?(e.s-t.s)*o+(e.s-r.s)*i:0},n.vertCCW=function(r,e,t){return r.s*(e.t-t.t)+e.s*(t.t-r.t)+t.s*(r.t-e.t)>=0},n.interpolate=function(r,e,t,o){return r=r<0?0:r,t=t<0?0:t,r<=t?t===0?(e+o)/2:e+(o-e)*(r/(r+t)):o+(e-o)*(t/(r+t))},n.intersect=function(r,e,t,o,i){var a,s,l;n.vertLeq(r,e)||(l=r,r=e,e=l),n.vertLeq(t,o)||(l=t,t=o,o=l),n.vertLeq(r,t)||(l=r,r=t,t=l,l=e,e=o,o=l),n.vertLeq(t,e)?n.vertLeq(e,o)?(a=n.edgeEval(r,t,e),s=n.edgeEval(t,e,o),a+s<0&&(a=-a,s=-s),i.s=n.interpolate(a,t.s,s,e.s)):(a=n.edgeSign(r,t,e),s=-n.edgeSign(r,o,e),a+s<0&&(a=-a,s=-s),i.s=n.interpolate(a,t.s,s,o.s)):i.s=(t.s+e.s)/2,n.transLeq(r,e)||(l=r,r=e,e=l),n.transLeq(t,o)||(l=t,t=o,o=l),n.transLeq(r,t)||(l=r,r=t,t=l,l=e,e=o,o=l),n.transLeq(t,e)?n.transLeq(e,o)?(a=n.transEval(r,t,e),s=n.transEval(t,e,o),a+s<0&&(a=-a,s=-s),i.t=n.interpolate(a,t.t,s,e.t)):(a=n.transSign(r,t,e),s=-n.transSign(r,o,e),a+s<0&&(a=-a,s=-s),i.t=n.interpolate(a,t.t,s,o.t)):i.t=(t.t+e.t)/2},n}(),ul=function(){function n(){this.next=null,this.prev=null,this.anEdge=null,this.trail=null,this.n=0,this.marked=!1,this.inside=!1}return n}(),vu=function(){function n(r){this.side=r,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(n.prototype,"Rface",{get:function(){return this.Sym.Lface},set:function(r){this.Sym.Lface=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dst",{get:function(){return this.Sym.Org},set:function(r){this.Sym.Org=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Oprev",{get:function(){return this.Sym.Lnext},set:function(r){this.Sym.Lnext=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Lprev",{get:function(){return this.Onext.Sym},set:function(r){this.Onext.Sym=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dprev",{get:function(){return this.Lnext.Sym},set:function(r){this.Lnext.Sym=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Rprev",{get:function(){return this.Sym.Onext},set:function(r){this.Sym.Onext=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dnext",{get:function(){return this.Sym.Onext.Sym},set:function(r){this.Sym.Onext.Sym=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Rnext",{get:function(){return this.Sym.Lnext.Sym},set:function(r){this.Sym.Lnext.Sym=r},enumerable:!0,configurable:!0}),n}(),Da=function(){function n(){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 n}(),Gx=function(){function n(){var r=new Da,e=new ul,t=new vu(0),o=new vu(1);r.next=r.prev=r,r.anEdge=null,e.next=e.prev=e,t.next=t,t.Sym=o,o.next=o,o.Sym=t,this.vHead=r,this.fHead=e,this.eHead=t,this.eHeadSym=o}return n.prototype.makeEdge_=function(r){var e=new vu(0),t=new vu(1);r.Sym.side<r.side&&(r=r.Sym);var o=r.Sym.next;return t.next=o,o.Sym.next=e,e.next=r,r.Sym.next=t,e.Sym=t,e.Onext=e,e.Lnext=t,e.Org=null,e.Lface=null,e.winding=0,e.activeRegion=null,t.Sym=e,t.Onext=t,t.Lnext=e,t.Org=null,t.Lface=null,t.winding=0,t.activeRegion=null,e},n.prototype.splice_=function(r,e){var t=r.Onext,o=e.Onext;t.Sym.Lnext=e,o.Sym.Lnext=r,r.Onext=o,e.Onext=t},n.prototype.makeVertex_=function(r,e,t){var o=r;Pe(o,"Vertex can't be null!");var i=t.prev;o.prev=i,i.next=o,o.next=t,t.prev=o,o.anEdge=e;var a=e;do a.Org=o,a=a.Onext;while(a!==e)},n.prototype.makeFace_=function(r,e,t){var o=r;Pe(o,"Face can't be null");var i=t.prev;o.prev=i,i.next=o,o.next=t,t.prev=o,o.anEdge=e,o.trail=null,o.marked=!1,o.inside=t.inside;var a=e;do a.Lface=o,a=a.Lnext;while(a!==e)},n.prototype.killEdge_=function(r){r.Sym.side<r.side&&(r=r.Sym);var e=r.next,t=r.Sym.next;e.Sym.next=t,t.Sym.next=e},n.prototype.killVertex_=function(r,e){var t=r.anEdge,o=t;do o.Org=e,o=o.Onext;while(o!==t);var i=r.prev,a=r.next;a.prev=i,i.next=a},n.prototype.killFace_=function(r,e){var t=r.anEdge,o=t;do o.Lface=e,o=o.Lnext;while(o!==t);var i=r.prev,a=r.next;a.prev=i,i.next=a},n.prototype.makeEdge=function(){var r=new Da,e=new Da,t=new ul,o=this.makeEdge_(this.eHead);return this.makeVertex_(r,o,this.vHead),this.makeVertex_(e,o.Sym,this.vHead),this.makeFace_(t,o,this.fHead),o},n.prototype.splice=function(r,e){var t=!1,o=!1;if(r!==e){if(e.Org!==r.Org&&(o=!0,this.killVertex_(e.Org,r.Org)),e.Lface!==r.Lface&&(t=!0,this.killFace_(e.Lface,r.Lface)),this.splice_(e,r),!o){var i=new Da;this.makeVertex_(i,e,r.Org),r.Org.anEdge=r}if(!t){var a=new ul;this.makeFace_(a,e,r.Lface),r.Lface.anEdge=r}}},n.prototype.delete=function(r){var e=r.Sym,t=!1;if(r.Lface!==r.Rface&&(t=!0,this.killFace_(r.Lface,r.Rface)),r.Onext===r)this.killVertex_(r.Org,null);else if(r.Rface.anEdge=r.Oprev,r.Org.anEdge=r.Onext,this.splice_(r,r.Oprev),!t){var o=new ul;this.makeFace_(o,r,r.Lface)}e.Onext===e?(this.killVertex_(e.Org,null),this.killFace_(e.Lface,null)):(r.Lface.anEdge=e.Oprev,e.Org.anEdge=e.Onext,this.splice_(e,e.Oprev)),this.killEdge_(r)},n.prototype.addEdgeVertex=function(r){var e=this.makeEdge_(r),t=e.Sym;this.splice_(e,r.Lnext),e.Org=r.Dst;var o=new Da;return this.makeVertex_(o,t,e.Org),e.Lface=t.Lface=r.Lface,e},n.prototype.splitEdge=function(r){var e=this.addEdgeVertex(r),t=e.Sym;return this.splice_(r.Sym,r.Sym.Oprev),this.splice_(r.Sym,t),r.Dst=t.Org,t.Dst.anEdge=t.Sym,t.Rface=r.Rface,t.winding=r.winding,t.Sym.winding=r.Sym.winding,t.idx=r.idx,t.Sym.idx=r.Sym.idx,t},n.prototype.connect=function(r,e){var t=!1,o=this.makeEdge_(r),i=o.Sym;if(e.Lface!==r.Lface&&(t=!0,this.killFace_(e.Lface,r.Lface)),this.splice_(o,r.Lnext),this.splice_(i,e),o.Org=r.Dst,i.Org=e.Org,o.Lface=i.Lface=r.Lface,r.Lface.anEdge=i,!t){var a=new ul;this.makeFace_(a,o,r.Lface)}return o},n.prototype.zapFace=function(r){var e=r.anEdge,t,o,i,a,s;o=e.Lnext;do t=o,o=t.Lnext,t.Lface=null,t.Rface===null&&(t.Onext===t?this.killVertex_(t.Org,null):(t.Org.anEdge=t.Onext,this.splice_(t,t.Oprev)),i=t.Sym,i.Onext===i?this.killVertex_(i.Org,null):(i.Org.anEdge=i.Onext,this.splice_(i,i.Oprev)),this.killEdge_(t));while(t!=e);a=r.prev,s=r.next,s.prev=a,a.next=s},n.prototype.countFaceVerts_=function(r){var e=r.anEdge,t=0;do t++,e=e.Lnext;while(e!==r.anEdge);return t},n.prototype.mergeConvexFaces=function(r){var e,t,o,i,a,s,l;for(e=this.fHead.next;e!==this.fHead;e=e.next)if(!!e.inside)for(t=e.anEdge,a=t.Org;o=t.Lnext,i=t.Sym,i&&i.Lface&&i.Lface.inside&&(s=this.countFaceVerts_(e),l=this.countFaceVerts_(i.Lface),s+l-2<=r&&ve.vertCCW(t.Lprev.Org,t.Org,i.Lnext.Lnext.Org)&&ve.vertCCW(i.Lprev.Org,i.Org,t.Lnext.Lnext.Org)&&(o=i.Lnext,this.delete(i),t=null,i=null)),!(t&&t.Lnext.Org===a);)t=o;return!0},n.prototype.check=function(){var r=this.fHead,e=this.vHead,t=this.eHead,o,i,a,s,l,c;for(i=r,i=r;(o=i.next)!==r;i=o){Pe(o.prev===i),l=o.anEdge;do Pe(l.Sym!==l),Pe(l.Sym.Sym===l),Pe(l.Lnext.Onext.Sym===l),Pe(l.Onext.Sym.Lnext===l),Pe(l.Lface===o),l=l.Lnext;while(l!==o.anEdge)}for(Pe(o.prev===i&&o.anEdge===null),s=e,s=e;(a=s.next)!==e;s=a){Pe(a.prev===s),l=a.anEdge;do Pe(l.Sym!==l),Pe(l.Sym.Sym===l),Pe(l.Lnext.Onext.Sym===l),Pe(l.Onext.Sym.Lnext===l),Pe(l.Org===a),l=l.Onext;while(l!==a.anEdge)}for(Pe(a.prev===s&&a.anEdge===null),c=t,c=t;(l=c.next)!==t;c=l)Pe(l.Sym.next===c.Sym),Pe(l.Sym!==l),Pe(l.Sym.Sym===l),Pe(l.Org!==null),Pe(l.Dst!==null),Pe(l.Lnext.Onext.Sym===l),Pe(l.Onext.Sym.Lnext===l);Pe(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)},n}(),jx=function(){function n(){this.handle=null}return n}(),Fx=function(){function n(){this.key=null,this.node=0}return n}(),EA=function(){function n(r,e){this.leq=e,this.max=0,this.nodes=[],this.handles=[],this.initialized=!1,this.freeList=0,this.size=0,this.max=r,this.nodes=[],this.handles=[];for(var t=0;t<r+1;t++)this.nodes[t]=new jx,this.handles[t]=new Fx;this.initialized=!1,this.nodes[1].handle=1,this.handles[1].key=null}return n.prototype.floatDown_=function(r){var e=this.nodes,t=this.handles,o,i,a;for(o=e[r].handle;;){if(a=r<<1,a<this.size&&this.leq(t[e[a+1].handle].key,t[e[a].handle].key)&&++a,Pe(a<=this.max),i=e[a].handle,a>this.size||this.leq(t[o].key,t[i].key)){e[r].handle=o,t[o].node=r;break}e[r].handle=i,t[i].node=r,r=a}},n.prototype.floatUp_=function(r){var e=this.nodes,t=this.handles,o,i,a;for(o=e[r].handle;;){if(a=r>>1,i=e[a].handle,a===0||this.leq(t[i].key,t[o].key)){e[r].handle=o,t[o].node=r;break}e[r].handle=i,t[i].node=r,r=a}},n.prototype.init=function(){for(var r=this.size;r>=1;--r)this.floatDown_(r);this.initialized=!0},n.prototype.min=function(){return this.handles[this.nodes[1].handle].key},n.prototype.insert=function(r){var e,t;if(e=++this.size,e*2>this.max){this.max*=2;var o,i;for(i=this.nodes.length,this.nodes.length=this.max+1,o=i;o<this.nodes.length;o++)this.nodes[o]=new jx;for(i=this.handles.length,this.handles.length=this.max+1,o=i;o<this.handles.length;o++)this.handles[o]=new Fx}return this.freeList===0?t=e:(t=this.freeList,this.freeList=this.handles[t].node),this.nodes[e].handle=t,this.handles[t].node=e,this.handles[t].key=r,this.initialized&&this.floatUp_(e),t},n.prototype.extractMin=function(){var r=this.nodes,e=this.handles,t=r[1].handle,o=e[t].key;return this.size>0&&(r[1].handle=r[this.size].handle,e[r[1].handle].node=1,e[t].key=null,e[t].node=this.freeList,this.freeList=t,--this.size,this.size>0&&this.floatDown_(1)),o},n.prototype.delete=function(r){var e=this.nodes,t=this.handles,o;Pe(r>=1&&r<=this.max&&t[r].key!==null),o=t[r].node,e[o].handle=e[this.size].handle,t[e[o].handle].node=o,--this.size,o<=this.size&&(o<=1||this.leq(t[e[o>>1].handle].key,t[e[o].handle].key)?this.floatDown_(o):this.floatUp_(o)),t[r].key=null,t[r].node=this.freeList,this.freeList=r},n}(),Kp=function(){function n(){this.eUp=null,this.nodeUp=null,this.windingNumber=0,this.inside=!1,this.sentinel=!1,this.dirty=!1,this.fixUpperEdge=!1}return n}(),Ux=function(){function n(){this.key=null,this.next=null,this.prev=null}return n}(),_A=function(){function n(r,e){this.frame=r,this.leq=e,this.head=new Ux,this.head.next=this.head,this.head.prev=this.head}return n.prototype.min=function(){return this.head.next},n.prototype.max=function(){return this.head.prev},n.prototype.insert=function(r){return this.insertBefore(this.head,r)},n.prototype.search=function(r){var e=this.head;do e=e.next;while(e.key!==null&&!this.leq(this.frame,r,e.key));return e},n.prototype.insertBefore=function(r,e){do r=r.prev;while(r.key!==null&&!this.leq(this.frame,r.key,e));var t=new Ux;return t.key=e,t.next=r.next,r.next.prev=t,t.prev=r,r.next=t,t},n.prototype.delete=function(r){r.next.prev=r.prev,r.prev.next=r.next},n}(),BA=function(){function n(){}return n.regionBelow=function(r){return r.nodeUp.prev.key},n.regionAbove=function(r){return r.nodeUp.next.key},n.debugEvent=function(r){},n.addWinding=function(r,e){r.winding+=e.winding,r.Sym.winding+=e.Sym.winding},n.edgeLeq=function(r,e,t){var o=r.event,i=e.eUp,a=t.eUp;if(i.Dst===o)return a.Dst===o?ve.vertLeq(i.Org,a.Org)?ve.edgeSign(a.Dst,i.Org,a.Org)<=0:ve.edgeSign(i.Dst,a.Org,i.Org)>=0:ve.edgeSign(a.Dst,o,a.Org)<=0;if(a.Dst===o)return ve.edgeSign(i.Dst,o,i.Org)>=0;var s=ve.edgeEval(i.Dst,o,i.Org),l=ve.edgeEval(a.Dst,o,a.Org);return s>=l},n.deleteRegion=function(r,e){e.fixUpperEdge&&Pe(e.eUp.winding===0),e.eUp.activeRegion=null,r.dict.delete(e.nodeUp)},n.fixUpperEdge=function(r,e,t){Pe(e.fixUpperEdge),r.mesh.delete(e.eUp),e.fixUpperEdge=!1,e.eUp=t,t.activeRegion=e},n.topLeftRegion=function(r,e){var t=e.eUp.Org,o;do e=n.regionAbove(e);while(e.eUp.Org===t);if(e.fixUpperEdge){if(o=r.mesh.connect(n.regionBelow(e).eUp.Sym,e.eUp.Lnext),o===null)return null;n.fixUpperEdge(r,e,o),e=n.regionAbove(e)}return e},n.topRightRegion=function(r){var e=r.eUp.Dst;do r=n.regionAbove(r);while(r.eUp.Dst===e);return r},n.addRegionBelow=function(r,e,t){var o=new Kp;return o.eUp=t,o.nodeUp=r.dict.insertBefore(e.nodeUp,o),o.fixUpperEdge=!1,o.sentinel=!1,o.dirty=!1,t.activeRegion=o,o},n.isWindingInside=function(r,e){switch(r.windingRule){case We.ODD:return(e&1)!==0;case We.NONZERO:return e!==0;case We.POSITIVE:return e>0;case We.NEGATIVE:return e<0;case We.ABS_GEQ_TWO:return e>=2||e<=-2}throw new Error("Invalid winding rulle")},n.computeWinding=function(r,e){e.windingNumber=n.regionAbove(e).windingNumber+e.eUp.winding,e.inside=n.isWindingInside(r,e.windingNumber)},n.finishRegion=function(r,e){var t=e.eUp,o=t.Lface;o.inside=e.inside,o.anEdge=t,n.deleteRegion(r,e)},n.finishLeftRegions=function(r,e,t){for(var o,i=null,a=e,s=e.eUp;a!==t;){if(a.fixUpperEdge=!1,i=n.regionBelow(a),o=i.eUp,o.Org!=s.Org){if(!i.fixUpperEdge){n.finishRegion(r,a);break}o=r.mesh.connect(s.Lprev,o.Sym),n.fixUpperEdge(r,i,o)}s.Onext!==o&&(r.mesh.splice(o.Oprev,o),r.mesh.splice(s,o)),n.finishRegion(r,a),s=i.eUp,a=i}return s},n.addRightEdges=function(r,e,t,o,i,a){var s,l,c,u,p=!0;c=t;do Pe(ve.vertLeq(c.Org,c.Dst)),n.addRegionBelow(r,e,c.Sym),c=c.Onext;while(c!==o);for(i===null&&(i=n.regionBelow(e).eUp.Rprev),l=e,u=i;s=n.regionBelow(l),c=s.eUp.Sym,c.Org===u.Org;)c.Onext!==u&&(r.mesh.splice(c.Oprev,c),r.mesh.splice(u.Oprev,c)),s.windingNumber=l.windingNumber-c.winding,s.inside=n.isWindingInside(r,s.windingNumber),l.dirty=!0,!p&&n.checkForRightSplice(r,l)&&(n.addWinding(c,u),n.deleteRegion(r,l),r.mesh.delete(u)),p=!1,l=s,u=c;l.dirty=!0,Pe(l.windingNumber-c.winding===s.windingNumber),a&&n.walkDirtyRegions(r,l)},n.spliceMergeVertices=function(r,e,t){r.mesh.splice(e,t)},n.vertexWeights=function(r,e,t){var o=ve.vertL1dist(e,r),i=ve.vertL1dist(t,r),a=.5*i/(o+i),s=.5*o/(o+i);r.coords[0]+=a*e.coords[0]+s*t.coords[0],r.coords[1]+=a*e.coords[1]+s*t.coords[1],r.coords[2]+=a*e.coords[2]+s*t.coords[2]},n.getIntersectData=function(r,e,t,o,i,a){e.coords[0]=e.coords[1]=e.coords[2]=0,e.idx=-1,n.vertexWeights(e,t,o),n.vertexWeights(e,i,a)},n.checkForRightSplice=function(r,e){var t=n.regionBelow(e),o=e.eUp,i=t.eUp;if(ve.vertLeq(o.Org,i.Org)){if(ve.edgeSign(i.Dst,o.Org,i.Org)>0)return!1;ve.vertEq(o.Org,i.Org)?o.Org!==i.Org&&(r.pq.delete(o.Org.pqHandle),n.spliceMergeVertices(r,i.Oprev,o)):(r.mesh.splitEdge(i.Sym),r.mesh.splice(o,i.Oprev),e.dirty=t.dirty=!0)}else{if(ve.edgeSign(o.Dst,i.Org,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,r.mesh.splitEdge(o.Sym),r.mesh.splice(i.Oprev,o)}return!0},n.checkForLeftSplice=function(r,e){var t=n.regionBelow(e),o=e.eUp,i=t.eUp,a;if(Pe(!ve.vertEq(o.Dst,i.Dst)),ve.vertLeq(o.Dst,i.Dst)){if(ve.edgeSign(o.Dst,i.Dst,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,a=r.mesh.splitEdge(o),r.mesh.splice(i.Sym,a),a.Lface.inside=e.inside}else{if(ve.edgeSign(i.Dst,o.Dst,i.Org)>0)return!1;e.dirty=t.dirty=!0,a=r.mesh.splitEdge(i),r.mesh.splice(o.Lnext,i.Sym),a.Rface.inside=e.inside}return!0},n.checkForIntersect=function(r,e){var t=n.regionBelow(e),o=e.eUp,i=t.eUp,a=o.Org,s=i.Org,l=o.Dst,c=i.Dst,u,p,d=new Da,h,f;if(Pe(!ve.vertEq(c,l)),Pe(ve.edgeSign(l,r.event,a)<=0),Pe(ve.edgeSign(c,r.event,s)>=0),Pe(a!==r.event&&s!==r.event),Pe(!e.fixUpperEdge&&!t.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 n.debugEvent(r),ve.intersect(l,a,c,s,d),Pe(Math.min(a.t,l.t)<=d.t),Pe(d.t<=Math.max(s.t,c.t)),Pe(Math.min(c.s,l.s)<=d.s),Pe(d.s<=Math.max(s.s,a.s)),ve.vertLeq(d,r.event)&&(d.s=r.event.s,d.t=r.event.t),h=ve.vertLeq(a,s)?a:s,ve.vertLeq(h,d)&&(d.s=h.s,d.t=h.t),ve.vertEq(d,a)||ve.vertEq(d,s)?(n.checkForRightSplice(r,e),!1):!ve.vertEq(l,r.event)&&ve.edgeSign(l,r.event,d)>=0||!ve.vertEq(c,r.event)&&ve.edgeSign(c,r.event,d)<=0?c===r.event?(r.mesh.splitEdge(o.Sym),r.mesh.splice(i.Sym,o),e=n.topLeftRegion(r,e),o=n.regionBelow(e).eUp,n.finishLeftRegions(r,n.regionBelow(e),t),n.addRightEdges(r,e,o.Oprev,o,o,!0),!0):l===r.event?(r.mesh.splitEdge(i.Sym),r.mesh.splice(o.Lnext,i.Oprev),t=e,e=n.topRightRegion(e),f=n.regionBelow(e).eUp.Rprev,t.eUp=i.Oprev,i=n.finishLeftRegions(r,t,null),n.addRightEdges(r,e,i.Onext,o.Rprev,f,!0),!0):(ve.edgeSign(l,r.event,d)>=0&&(n.regionAbove(e).dirty=e.dirty=!0,r.mesh.splitEdge(o.Sym),o.Org.s=r.event.s,o.Org.t=r.event.t),ve.edgeSign(c,r.event,d)<=0&&(e.dirty=t.dirty=!0,r.mesh.splitEdge(i.Sym),i.Org.s=r.event.s,i.Org.t=r.event.t),!1):(r.mesh.splitEdge(o.Sym),r.mesh.splitEdge(i.Sym),r.mesh.splice(i.Oprev,o),o.Org.s=d.s,o.Org.t=d.t,o.Org.pqHandle=r.pq.insert(o.Org),n.getIntersectData(r,o.Org,a,l,s,c),n.regionAbove(e).dirty=e.dirty=t.dirty=!0,!1)},n.walkDirtyRegions=function(r,e){for(var t=n.regionBelow(e),o,i;;){for(;t.dirty;)e=t,t=n.regionBelow(t);if(!e.dirty&&(t=e,e=n.regionAbove(e),e===null||!e.dirty))return;if(e.dirty=!1,o=e.eUp,i=t.eUp,o.Dst!==i.Dst&&n.checkForLeftSplice(r,e)&&(t.fixUpperEdge?(n.deleteRegion(r,t),r.mesh.delete(i),t=n.regionBelow(e),i=t.eUp):e.fixUpperEdge&&(n.deleteRegion(r,e),r.mesh.delete(o),e=n.regionAbove(t),o=e.eUp)),o.Org!==i.Org)if(o.Dst!==i.Dst&&!e.fixUpperEdge&&!t.fixUpperEdge&&(o.Dst===r.event||i.Dst===r.event)){if(n.checkForIntersect(r,e))return}else n.checkForRightSplice(r,e);o.Org===i.Org&&o.Dst===i.Dst&&(n.addWinding(i,o),n.deleteRegion(r,e),r.mesh.delete(o),e=n.regionAbove(t))}},n.connectRightVertex=function(r,e,t){var o,i=t.Onext,a=n.regionBelow(e),s=e.eUp,l=a.eUp,c=!1;if(s.Dst!==l.Dst&&n.checkForIntersect(r,e),ve.vertEq(s.Org,r.event)&&(r.mesh.splice(i.Oprev,s),e=n.topLeftRegion(r,e),i=n.regionBelow(e).eUp,n.finishLeftRegions(r,n.regionBelow(e),a),c=!0),ve.vertEq(l.Org,r.event)&&(r.mesh.splice(t,l.Oprev),t=n.finishLeftRegions(r,a,null),c=!0),c){n.addRightEdges(r,e,t.Onext,i,i,!0);return}ve.vertLeq(l.Org,s.Org)?o=l.Oprev:o=s,o=r.mesh.connect(t.Lprev,o),n.addRightEdges(r,e,o,o.Onext,o.Onext,!1),o.Sym.activeRegion.fixUpperEdge=!0,n.walkDirtyRegions(r,e)},n.connectLeftDegenerate=function(r,e,t){var o,i,a,s,l;if(o=e.eUp,ve.vertEq(o.Org,t)){Pe(!1),n.spliceMergeVertices(r,o,t.anEdge);return}if(!ve.vertEq(o.Dst,t)){r.mesh.splitEdge(o.Sym),e.fixUpperEdge&&(r.mesh.delete(o.Onext),e.fixUpperEdge=!1),r.mesh.splice(t.anEdge,o),n.sweepEvent(r,t);return}Pe(!1),e=n.topRightRegion(e),l=n.regionBelow(e),a=l.eUp.Sym,i=s=a.Onext,l.fixUpperEdge&&(Pe(i!==a),n.deleteRegion(r,l),r.mesh.delete(a),a=i.Oprev),r.mesh.splice(t.anEdge,a),ve.edgeGoesLeft(i)||(i=null),n.addRightEdges(r,e,a.Onext,s,i,!0)},n.connectLeftVertex=function(r,e){var t,o,i,a,s,l,c=new Kp;if(c.eUp=e.anEdge.Sym,t=r.dict.search(c).key,o=n.regionBelow(t),!!o){if(a=t.eUp,s=o.eUp,ve.edgeSign(a.Dst,e,a.Org)===0){n.connectLeftDegenerate(r,t,e);return}if(i=ve.vertLeq(s.Dst,a.Dst)?t:o,t.inside||i.fixUpperEdge){if(i===t)l=r.mesh.connect(e.anEdge.Sym,a.Lnext);else{var u=r.mesh.connect(s.Dnext,e.anEdge);l=u.Sym}i.fixUpperEdge?n.fixUpperEdge(r,i,l):n.computeWinding(r,n.addRegionBelow(r,t,l)),n.sweepEvent(r,e)}else n.addRightEdges(r,t,e.anEdge,e.anEdge,null,!0)}},n.sweepEvent=function(r,e){r.event=e,n.debugEvent(r);for(var t=e.anEdge;t.activeRegion===null;)if(t=t.Onext,t===e.anEdge){n.connectLeftVertex(r,e);return}var o=n.topLeftRegion(r,t.activeRegion);Pe(o!==null);var i=n.regionBelow(o),a=i.eUp,s=n.finishLeftRegions(r,i,null);s.Onext===a?n.connectRightVertex(r,o,s):n.addRightEdges(r,o,s.Onext,a,a,!0)},n.addSentinel=function(r,e,t,o){var i=new Kp,a=r.mesh.makeEdge();a.Org.s=t,a.Org.t=o,a.Dst.s=e,a.Dst.t=o,r.event=a.Dst,i.eUp=a,i.windingNumber=0,i.inside=!1,i.fixUpperEdge=!1,i.sentinel=!0,i.dirty=!1,i.nodeUp=r.dict.insert(i)},n.initEdgeDict=function(r){r.dict=new _A(r,n.edgeLeq);var e=r.bmax[0]-r.bmin[0],t=r.bmax[1]-r.bmin[1],o=r.bmin[0]-e,i=r.bmax[0]+e,a=r.bmin[1]-t,s=r.bmax[1]+t;n.addSentinel(r,o,i,a),n.addSentinel(r,o,i,s)},n.doneEdgeDict=function(r){for(var e,t=0;(e=r.dict.min().key)!==null;)e.sentinel||(Pe(e.fixUpperEdge),Pe(++t===1)),Pe(e.windingNumber===0),n.deleteRegion(r,e)},n.removeDegenerateEdges=function(r){var e,t,o,i=r.mesh.eHead;for(e=i.next;e!==i;e=t)t=e.next,o=e.Lnext,ve.vertEq(e.Org,e.Dst)&&e.Lnext.Lnext!==e&&(n.spliceMergeVertices(r,o,e),r.mesh.delete(e),e=o,o=e.Lnext),o.Lnext===e&&(o!==e&&((o===t||o===t.Sym)&&(t=t.next),r.mesh.delete(o)),(e===t||e===t.Sym)&&(t=t.next),r.mesh.delete(e))},n.initPriorityQ=function(r){var e,t,o,i=0;for(o=r.mesh.vHead,t=o.next;t!==o;t=t.next)i++;for(i+=8,e=r.pq=new EA(i,ve.vertLeq),o=r.mesh.vHead,t=o.next;t!==o;t=t.next)t.pqHandle=e.insert(t);return t!==o?!1:(e.init(),!0)},n.donePriorityQ=function(r){r.pq=null},n.removeDegenerateFaces=function(r,e){var t,o,i;for(t=e.fHead.next;t!==e.fHead;t=o)o=t.next,i=t.anEdge,Pe(i.Lnext!==i),i.Lnext.Lnext===i&&(n.addWinding(i.Onext,i),r.mesh.delete(i));return!0},n.computeInterior=function(r,e){e===void 0&&(e=!0);var t,o;if(n.removeDegenerateEdges(r),!n.initPriorityQ(r))return!1;for(n.initEdgeDict(r);(t=r.pq.extractMin())!==null;){for(;o=r.pq.min(),!(o===null||!ve.vertEq(o,t));)o=r.pq.extractMin(),n.spliceMergeVertices(r,t.anEdge,o.anEdge);n.sweepEvent(r,t)}return r.event=r.dict.min().key.eUp.Org,n.debugEvent(r),n.doneEdgeDict(r),n.donePriorityQ(r),n.removeDegenerateFaces(r,r.mesh)?(e&&r.mesh.check(),!0):!1},n}(),LA=function(){function n(){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=We.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 n.prototype.dot_=function(r,e){return r[0]*e[0]+r[1]*e[1]+r[2]*e[2]},n.prototype.normalize_=function(r){var e=r[0]*r[0]+r[1]*r[1]+r[2]*r[2];if(!e)throw"Zero-size vector!";e=Math.sqrt(e),r[0]/=e,r[1]/=e,r[2]/=e},n.prototype.longAxis_=function(r){var e=0;return Math.abs(r[1])>Math.abs(r[0])&&(e=1),Math.abs(r[2])>Math.abs(r[e])&&(e=2),e},n.prototype.computeNormal_=function(r){var e,t,o,i,a,s,l=[0,0,0],c=[0,0,0],u=[0,0,0],p=[0,0,0],d=[0,0,0],h=[null,null,null],f=[null,null,null],m=this.mesh.vHead;e=m.next;for(var y=0;y<3;++y)i=e.coords[y],c[y]=i,f[y]=e,l[y]=i,h[y]=e;for(e=m.next;e!==m;e=e.next)for(var g=0;g<3;++g)i=e.coords[g],i<c[g]&&(c[g]=i,f[g]=e),i>l[g]&&(l[g]=i,h[g]=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]){r[0]=0,r[1]=0,r[2]=1;return}for(s=0,t=f[v],o=h[v],u[0]=t.coords[0]-o.coords[0],u[1]=t.coords[1]-o.coords[1],u[2]=t.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,r[0]=d[0],r[1]=d[1],r[2]=d[2]);s<=0&&(r[0]=r[1]=r[2]=0,r[this.longAxis_(u)]=1)},n.prototype.checkOrientation_=function(){for(var r=this.mesh.fHead,e,t=this.mesh.vHead,o,i=0,a=r.next;a!==r;a=a.next)if(o=a.anEdge,!(o.winding<=0))do i+=(o.Org.s-o.Dst.s)*(o.Org.t+o.Dst.t),o=o.Lnext;while(o!==a.anEdge);if(i<0){for(e=t.next;e!==t;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]}},n.prototype.projectPolygon_=function(){var r=this.mesh.vHead,e=[0,0,0],t,o,i=!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),i=!0),t=this.sUnit,o=this.tUnit;var a=this.longAxis_(e);t[a]=0,t[(a+1)%3]=1,t[(a+2)%3]=0,o[a]=0,o[(a+1)%3]=0,o[(a+2)%3]=e[a]>0?1:-1;for(var s=r.next;s!==r;s=s.next)s.s=this.dot_(s.coords,t),s.t=this.dot_(s.coords,o);i&&this.checkOrientation_();for(var l=!0,c=r.next;c!==r;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))},n.prototype.addWinding_=function(r,e){r.winding+=e.winding,r.Sym.winding+=e.Sym.winding},n.prototype.tessellateMonoRegion_=function(r,e){var t,o;if(t=e.anEdge,!(t.Lnext!==t&&t.Lnext.Lnext!==t))throw"Mono region invalid";for(;ve.vertLeq(t.Dst,t.Org);t=t.Lprev);for(;ve.vertLeq(t.Org,t.Dst);t=t.Lnext);o=t.Lprev;for(var i=void 0;t.Lnext!==o;)if(ve.vertLeq(t.Dst,o.Org)){for(;o.Lnext!==t&&(ve.edgeGoesLeft(o.Lnext)||ve.edgeSign(o.Org,o.Dst,o.Lnext.Dst)<=0);)i=r.connect(o.Lnext,o),o=i.Sym;o=o.Lprev}else{for(;o.Lnext!==t&&(ve.edgeGoesRight(t.Lprev)||ve.edgeSign(t.Dst,t.Org,t.Lprev.Org)>=0);)i=r.connect(t,t.Lprev),t=i.Sym;t=t.Lnext}if(o.Lnext===t)throw"Mono region invalid";for(;o.Lnext.Lnext!==t;)i=r.connect(o.Lnext,o),o=i.Sym;return!0},n.prototype.tessellateInterior_=function(r){for(var e,t=r.fHead.next;t!==r.fHead;t=e)if(e=t.next,t.inside&&!this.tessellateMonoRegion_(r,t))return!1;return!0},n.prototype.discardExterior_=function(r){for(var e,t=r.fHead.next;t!==r.fHead;t=e)e=t.next,t.inside||r.zapFace(t)},n.prototype.setWindingNumber_=function(r,e,t){for(var o,i=r.eHead.next;i!==r.eHead;i=o)o=i.next,i.Rface.inside!==i.Lface.inside?i.winding=i.Lface.inside?e:-e:t?r.delete(i):i.winding=0},n.prototype.getNeighbourFace_=function(r){return!r.Rface||!r.Rface.inside?-1:r.Rface.n},n.prototype.outputPolymesh_=function(r,e,t,o){var i,a=0,s=0,l;t>3&&r.mergeConvexFaces(t);for(var c=r.vHead.next;c!==r.vHead;c=c.next)c.n=-1;for(var u=r.fHead.next;u!==r.fHead;u=u.next)if(u.n=-1,!!u.inside){i=u.anEdge,l=0;do{var c=i.Org;c.n===-1&&(c.n=s,s++),l++,i=i.Lnext}while(i!==u.anEdge);if(l>t)throw"Face vertex greater that support polygon";u.n=a,++a}this.elementCount=a,e===bt.CONNECTED_POLYGONS&&(a*=2),this.elements=[],this.elements.length=a*t,this.vertexCount=s,this.vertices=[],this.vertices.length=s*o,this.vertexIndices=[],this.vertexIndices.length=s;for(var c=r.vHead.next;c!==r.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=r.fHead.next;u!==r.fHead;u=u.next)if(!!u.inside){i=u.anEdge,l=0;do{var c=i.Org;this.elements[d++]=c.n,l++,i=i.Lnext}while(i!==u.anEdge);for(var h=l;h<t;++h)this.elements[d++]=-1;if(e===bt.CONNECTED_POLYGONS){i=u.anEdge;do this.elements[d++]=this.getNeighbourFace_(i),i=i.Lnext;while(i!==u.anEdge);for(var f=l;f<t;++f)this.elements[d++]=-1}}},n.prototype.outputContours_=function(r,e){var t,o,i=0,a=0;this.vertexCount=0,this.elementCount=0;for(var s=r.fHead.next;s!==r.fHead;s=s.next)if(!!s.inside){o=t=s.anEdge;do this.vertexCount++,t=t.Lnext;while(t!==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;i=0;for(var s=r.fHead.next;s!==r.fHead;s=s.next)if(!!s.inside){a=0,o=t=s.anEdge;do this.vertices[l++]=t.Org.coords[0],this.vertices[l++]=t.Org.coords[1],e>2&&(this.vertices[l++]=t.Org.coords[2]),this.vertexIndices[c++]=this.vertexIdCallback?this.vertexIdCallback(t):t.Org.idx,a++,t=t.Lnext;while(t!==o);this.elements[u++]=i,this.elements[u++]=a,i+=a}},n.prototype.addContour=function(r,e){this.mesh===null&&(this.mesh=new Gx),r<2&&(r=2),r>3&&(r=3);for(var t=null,o=0;o<e.length;o+=r)t===null?(t=this.mesh.makeEdge(),this.mesh.splice(t,t.Sym)):(this.mesh.splitEdge(t),t=t.Lnext),t.Org.coords[0]=e[o+0],t.Org.coords[1]=e[o+1],r>2?t.Org.coords[2]=e[o+2]:t.Org.coords[2]=0,t.Org.idx=this.vertexIndexCounter++,this.edgeCreateCallback&&this.edgeCreateCallback(t),t.winding=1,t.Sym.winding=-1},n.prototype.tesselate=function(r,e,t,o,i,a){if(r===void 0&&(r=We.ODD),e===void 0&&(e=bt.POLYGONS),a===void 0&&(a=!0),this.vertices=[],this.elements=[],this.vertexIndices=[],this.vertexIndexCounter=0,i&&(this.normal[0]=i[0],this.normal[1]=i[1],this.normal[2]=i[2]),this.windingRule=r,o<2&&(o=2),o>3&&(o=3),!this.mesh)return!1;this.projectPolygon_(),BA.computeInterior(this,a);var s=this.mesh;return e===bt.BOUNDARY_CONTOURS?this.setWindingNumber_(s,1,!0):this.tessellateInterior_(s),a&&s.check(),e===bt.BOUNDARY_CONTOURS?this.outputContours_(s,o):this.outputPolymesh_(s,e,t,o),!0},n}();function ro(n){var r=n.windingRule,e=r===void 0?We.ODD:r,t=n.elementType,o=t===void 0?bt.POLYGONS:t,i=n.polySize,a=i===void 0?3:i,s=n.vertexSize,l=s===void 0?2:s,c=n.normal,u=c===void 0?[0,0,1]:c,p=n.contours,d=p===void 0?[]:p,h=n.strict,f=h===void 0?!0:h,m=n.debug,y=m===void 0?!1:m;if(!d&&f)throw new Error("Contours can't be empty");if(!!d){var g=new LA;n.edgeCreateCallback&&(g.edgeCreateCallback=n.edgeCreateCallback),n.vertexIdCallback&&(g.vertexIdCallback=n.vertexIdCallback);for(var v=0;v<d.length;v++)g.addContour(l||2,d[v]);return g.tesselate(e,o,a,l,u,f),{vertices:g.vertices,vertexIndices:g.vertexIndices,vertexCount:g.vertexCount,elements:g.elements,elementCount:g.elementCount,mesh:y?g.mesh:void 0}}}var pk=We.ODD,fk=We.NONZERO,hk=We.POSITIVE,mk=We.NEGATIVE,yk=We.ABS_GEQ_TWO,gk=bt.POLYGONS,xk=bt.CONNECTED_POLYGONS,bk=bt.BOUNDARY_CONTOURS;var oo=require("three");var Su=class{constructor(r=256,e=!1){this.capacity=r,this.size=0,this.debug=e,this.debug&&console.log(`allocating with cap ${r}`);let t=r*Su.eSize;this.buffer=new ArrayBuffer(t);let o=Float32Array.BYTES_PER_ELEMENT,i=0;this.positions=new Float32Array(this.buffer,i*o,3*r),i+=3*r,this.normals=new Float32Array(this.buffer,i*o,3*r),i+=3*r,this.uvs=new Float32Array(this.buffer,i*o,2*r)}realloc(r,e=!1){if(r<this.size)throw Error("cannot shrink buffer");if(r<=this.capacity&&!e)return;this.debug&&console.log(`resizing from ${this.capacity} \u2192 ${r}`);let t=r*Su.eSize,o=new ArrayBuffer(t),i=Float32Array.BYTES_PER_ELEMENT,a=0,s=new Float32Array(o,a*i,3*r);a+=3*r;let l=new Float32Array(o,a*i,3*r);a+=3*r;let c=new Float32Array(o,a*i,2*r);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=r}get(r=1){let e=this.size+r;if(e>this.capacity){let o=this.capacity;for(;e>o;)o*=2;this.realloc(o)}let t=this.size;return this.size=e,t}reserve(r){let e=this.size+r;e>this.capacity&&this.realloc(e)}shrink(){this.debug&&console.log(`shrinking ${this.capacity} \u2192 ${this.size}`),this.realloc(this.size,!0)}},dl=Su;dl.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var qx=_i(Wx()),pl={vertices:[160,160,-160,160,-160,-160,160,-160],vertexIndices:[1,0,3,2],vertexCount:4,elements:[0,4],elementCount:1,mesh:void 0},tf={vertices:[],vertexIndices:[],vertexCount:0,elements:[],elementCount:0,mesh:void 0},rf={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},ef=(n,r)=>([e,t])=>(t<e&&(t+=r),(n>=e?n:n+r)<=t),Dn=class extends oo.BufferGeometry{constructor(e,t,o=0,i=12,a=3,s=We.ODD,l=!1){super();this.forPathBevel=l;this.type="ShapeGeometry";this.vertexCache={};this._shape=e,this._depth=t,this._curveSegments=i,this._bevelSegmentsInput=a;let c=this._shape.extractShapePointsToFlatArray([],i),u=this._shape.shapeHoles.map(M=>{let D=M.extractShapePointsToFlatArray([],i),_=[];for(let B=D.length-1;B>=1;B-=2){let z=D[B-1],U=D[B-0];_.push(z,U)}return _}),p=[],d=[];for(let M=0;M<c.length;M+=2)d.push([c[M],c[M+1]]);p.push(d);for(let M=0;M<u.length;M++){let D=u[M],_=[];for(let B=0;B<D.length;B+=2)_.push([D[B],D[B+1]]);p.push(_)}let h;e.isText?h=new oo.Box2().setFromPoints(e.points.map(D=>D.position)).getSize(new oo.Vector2).length()*.1:p[0].length===0?h=o:h=(0,qx.default)(p).distance,o<=0?(this._bevel=0,this._bevelSegments=0):(this._bevel=Math.min(o,h,t/2),this._bevelSegments=Math.floor(a));let f;try{f=ro({windingRule:s,elementType:bt.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[c]})}catch{f=pl}let m;try{m=ro({windingRule:We.ODD,elementType:bt.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...u]})}catch{m=tf}if(!f)throw new Error("error generating geometry");let y=f.elementCount;if(m){f.elementCount+=m.elementCount;for(let M=0;M<m.elements.length;M++){let D=m.elements[M],_=M%2===0?f.vertexCount:0;f.elements.push(D+_)}for(let M=0;M<m.vertexIndices.length;M++){let D=m.vertexIndices[M],_=f.vertexCount;f.vertexIndices.push(D+_)}for(let M=0;M<m.vertices.length;M++){let D=m.vertices[M];f.vertices.push(D)}}let g=1/0,v=-1/0,O=1/0,P=-1/0;for(let M=0,D=f.vertexCount;M<D;M++){let _=M*2,B=f.vertices[_+0],z=f.vertices[_+1];B<g&&(g=B),B>v&&(v=B),z<O&&(O=z),z>P&&(P=z)}this._minX=g,this._minY=O,this._width=v-g,this._height=P-O,this._buffer=new dl(this._computeBufferEstimatedSize(f));let S=[],T=[];for(let M=f.elementCount-1;M>=0;M--){let D=M>=y,_=M*2,B=f.elements[_+0],z=f.elements[_+1],U=B+z,R={start:B,count:z,normals:[],continuous:[],concave:[]},W=B,j=U-1,F=B+1,H=this._shape.roundedCurves.length;do{let te=W-B,K=f.vertices[j*2+0],Z=f.vertices[j*2+1],Q=f.vertices[W*2+0],$=f.vertices[W*2+1],ue=f.vertices[F*2+0],le=f.vertices[F*2+1],ne=Q-K,ce=$-Z,ae=Math.sqrt(ne*ne+ce*ce);ne/=ae,ce/=ae;let me=Q-ue,fe=$-le,he=Math.sqrt(me*me+fe*fe);me/=he,fe/=he,R.normals[te*2+0]=-fe,R.normals[te*2+1]=me,R.concave[te]=ne*fe-ce*me>0;let xe=f.vertexIndices[W];if(Array.isArray(xe))R.continuous[te]=!1;else{let[ye,C]=this._shape.getCurveIndexFromVertexId(xe-1,!0);if(C>0&&C<1)R.continuous[te]=!0;else{let ie=C===1?ye+1:ye-1;ie=(ie+H)%H;let Re=C===1?0:1,Fe=this._shape.roundedCurves[ye].getTangent(C),Ve=this._shape.roundedCurves[ie].getTangent(Re);R.continuous[te]=Fe.dot(Ve)>.95}}D&&(R.normals[te*2+0]*=-1,R.normals[te*2+1]*=-1),[j,W,F]=[W,F,F+1],F>=U&&(F-=z)}while(F!==B+1);let q=[];q.push({bevelI:0,angle:0,size:0,boundary:{vertices:f.vertices.slice(B*2,U*2),vertexCount:z,vertexIndices:new Array(z).fill(!0).map((te,K)=>[K,K]),elements:[0,z],elementCount:1,mesh:null},reverseMap:[],insetPoints:f.vertices.slice(B*2,U*2)});let re=0;for(let te=1;te<=this._bevelSegments;te++){let K=te/this._bevelSegments*Math.PI/2,Z=(1-Math.cos(K))*this._bevel,Q=[],$=[],ue=[],le=[],ne=0;for(let ae=0;ae<z;ae++){let me=ae*2,fe=(ae-1+z)%z*2,he=f.vertices[R.start*2+me+0],xe=f.vertices[R.start*2+me+1],ye=-R.normals[fe+0]*Z,C=-R.normals[fe+1]*Z,ie=-R.normals[me+0]*Z,Re=-R.normals[me+1]*Z;if(R.concave[ae]||!R.concave[ae]&&D){let Fe=Math.atan2(C,ye),Ve=Math.atan2(Re,ie);Ve>Fe&&(Ve-=Math.PI*2);let Ce=Ve-Fe;if(R.continuous[ae]||D){let Bt=Fe+Ce/2,Ee=Math.cos(Bt)*Z,Dt=Math.sin(Bt)*Z;Q[2*ne+0]=he+Ee*(D?-1:1),Q[2*ne+1]=xe+Dt*(D?-1:1),le[ne]=ae,ne++}else{let Bt=Math.max(1,Math.floor(i/4*Math.abs(Ce)/Math.PI));for(let Ee=0;Ee<=Bt;Ee++){let Dt=Fe+Ce*(Ee/Bt),Lt=Math.cos(Dt)*Z,Yn=Math.sin(Dt)*Z;Q[2*ne+0]=he+Lt,Q[2*ne+1]=xe+Yn,le[ne]=ae,ne++}}}else Q[2*ne+0]=he+ye,Q[2*ne+1]=xe+C,le[ne]=ae,$[ae]=ne,ne++,Q[2*ne+0]=he,Q[2*ne+1]=xe,le[ne]=ae,ne++,Q[2*ne+0]=he+ie,Q[2*ne+1]=xe+Re,le[ne]=ae,ue[ae]=ne,ne++}let ce=ro({windingRule:We.POSITIVE,elementType:bt.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 ${te}'th loop`);if(!ce.vertexCount){let ae=(te-1)/this._bevelSegments*Math.PI/2;re=(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+=z);for(let xe=me;xe<he;xe++){let ye=xe%z,C=(xe+1)%z;if(!R.continuous[ye]||!R.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}}}q.push({bevelI:te,angle:K,size:Z,boundary:ce,reverseMap:le,insetPoints:Q})}let ee=(te,K,Z)=>{let Q=0,$=te.boundary.vertexIndices.length;for(;Q<$&&Z(te.boundary.vertexIndices[K]);)K=(K+1)%$,Q++;return Q},X=S.length;for(let te=1;te<q.length;te++){let K=q[te-1],Z=q[te],Q=K.boundary.vertexIndices.length,$=Z.boundary.vertexIndices.length;if(!Q||!$)break;let ue=R.concave.length,le=0,ne=ef(le,z);for(;!K.boundary.vertexIndices.filter(ne).length||!Z.boundary.vertexIndices.filter(ne).length;)le++,ne=ef(le,z);let ce=K.boundary.vertexIndices.findIndex(ne),ae=Z.boundary.vertexIndices.findIndex(ne);do ce=(ce+1)%Q;while(ne(K.boundary.vertexIndices[ce]));do ae=(ae+1)%$;while(ne(Z.boundary.vertexIndices[ae]));le=(le+1)%z;let me=le,fe=0,he=this._buildBevelVert(R,K,(ce-1+Q)%Q,void 0,fe),xe=this._buildBevelVert(R,Z,(ae-1+$)%$,void 0,fe),ye=he,C=xe,ie,Re,Fe=!1;do{fe=(le||ue)/ue,ne=ef(le,z);let Ve=ee(K,ce,ne),Ce=ee(Z,ae,ne),Bt=Fe;if(Fe=!1,Ve&&!Ce){for(let Ee=0;Ee<Ve;Ee++)ie=this._buildBevelVert(R,K,(ce+Ee)%Q,Ee/(Ve-1),fe),S.push(ye.topN,ie.topP,C.topN),l===!1&&S.push(ie.bottomP,ye.bottomN,C.bottomN),ye=ie;Fe=!0}else if(!Ve&&Ce)for(let Ee=0;Ee<Ce;Ee++)Re=this._buildBevelVert(R,Z,(ae+Ee)%$,Ee/(Ce-1),fe),S.push(C.topN,ye.topP,Re.topP),l===!1&&S.push(ye.bottomP,C.bottomN,Re.bottomP),C=Re;else if(Ve&&Ce)if(ie=this._buildBevelVert(R,K,ce,0,fe),Re=this._buildBevelVert(R,Z,ae,0,fe),Bt?(S.push(ye.topN,Re.topP,C.topN),S.push(ye.topN,ie.topP,Re.topP),l===!1&&(S.push(Re.bottomP,ye.bottomN,C.bottomN),S.push(Re.bottomP,ie.bottomP,ye.bottomN))):(S.push(C.topN,ye.topN,ie.topP),S.push(C.topN,ie.topP,Re.topP),l===!1&&(S.push(ie.bottomP,ye.bottomN,C.bottomN),S.push(ie.bottomP,C.bottomN,Re.bottomP))),ye=ie,C=Re,Ve===Ce)for(let Ee=1;Ee<Ve;Ee++)ie=this._buildBevelVert(R,K,(ce+Ee)%Q,Ee/(Ve-1),fe),Re=this._buildBevelVert(R,Z,(ae+Ee)%$,Ee/(Ce-1),fe),S.push(ye.topN,ie.topP,C.topN),S.push(C.topN,ie.topP,Re.topP),l===!1&&(S.push(ie.bottomP,ye.bottomN,C.bottomN),S.push(ie.bottomP,C.bottomN,Re.bottomP)),ye=ie,C=Re;else if(Ve>Ce){let Ee=Ve/Ce,Dt=0;for(let Lt=1;Lt<Ve;Lt++)ie=this._buildBevelVert(R,K,(ce+Lt)%Q,Lt/(Ve-1),fe),S.push(ye.topN,ie.topP,C.topN),l===!1&&S.push(ie.bottomP,ye.bottomN,C.bottomN),ye=ie,Lt>(Dt+1)*Ee&&(Dt++,Re=this._buildBevelVert(R,Z,(ae+Dt)%$,Dt/(Ce-1),fe),S.push(C.topN,ie.topP,Re.topP),l===!1&&S.push(ie.bottomP,C.bottomN,Re.bottomP),C=Re)}else{let Ee=Ce/Ve,Dt=0;for(let Lt=1;Lt<Ce;Lt++)Re=this._buildBevelVert(R,Z,(ae+Lt)%$,Lt/(Ce-1),fe),S.push(C.topN,ie.topP,Re.topP),l===!1&&S.push(ie.bottomP,C.bottomN,Re.bottomP),C=Re,Lt>(Dt+1)*Ee&&(Dt++,ie=this._buildBevelVert(R,K,(ce+Dt)%Q,Dt/(Ve-1),fe),S.push(ye.topN,ie.topP,C.topN),l===!1&&S.push(ie.bottomP,ye.bottomN,C.bottomN),ye=ie)}ce=(ce+Ve)%Q,ae=(ae+Ce)%$,le=(le+1)%ue}while(le!==me)}if(l===!1&&this._depth>this._bevel*2&&this._buildWall(q,R,S),D){let te=[];for(let K=S.length-1;K>=X+2;K-=3){let Z=S[K-2],Q=S[K-1],$=S[K-0];te.push($,Q,Z)}S.splice(X,S.length-X,...te)}if(D){let te=[];for(let K=q[q.length-1].boundary.vertices.length-1;K>=1;K-=2){let Z=q[q.length-1].boundary.vertices[K-1],Q=q[q.length-1].boundary.vertices[K-0];te.push(Z,Q)}T.push(te)}if(!D){let te=q[q.length-1],K;try{K=ro({windingRule:q.length>1?We.POSITIVE:We.ODD,elementType:bt.POLYGONS,vertexSize:2,strict:!0,contours:[te.insetPoints,...T]})}catch{K=rf}if(!K)throw new Error("Error generating geometry for surface");u.length===0&&this._bevel<h&&Object.assign(this,{useNgonForTopBottomFaceDuringBake:!0});for(let Z=0;Z<K.elementCount*3;Z+=3){let Q=this._buildSurfaceVert(K,K.elements[Z+0],re),$=this._buildSurfaceVert(K,K.elements[Z+1],re),ue=this._buildSurfaceVert(K,K.elements[Z+2],re);S.push(Q.top,$.top,ue.top),l===!1&&S.push(ue.bottom,$.bottom,Q.bottom)}}this.vertexCache={}}this._buffer.shrink();let I=new oo.BufferAttribute(Uint32Array.from(S),1),x=new oo.BufferAttribute(this._buffer.positions,3),E=new oo.BufferAttribute(this._buffer.normals,3),N=new oo.BufferAttribute(this._buffer.uvs,2);x.needsUpdate=!0,E.needsUpdate=!0,N.needsUpdate=!0,I.needsUpdate=!0,this.setAttribute("position",x),this.setAttribute("normal",E),this.setAttribute("uv",N),this.setIndex(I)}_computeBufferEstimatedSize(e){return e.vertexCount*2*(2+this._bevelSegments)}_buildWall(e,t,o){let i=e[0];for(let a=0,s=i.boundary.vertexCount;a<s;a++){let l=this._buildBevelVert(t,i,a),c=this._buildBevelVert(t,i,(a+1)%s);o.push(c.topP,l.topN,l.bottomN),o.push(c.topP,l.bottomN,c.bottomP)}}_buildSurfaceVert(e,t,o){let i=t.toString();if(i in this.vertexCache)return this.vertexCache[i];let a=e.vertices[t*2+0],s=e.vertices[t*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,h={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[i]=h,h}_buildBevelVert(e,t,o,i=1,a){let s=`${t.bevelI}:${o}`;if(s in this.vertexCache&&a!==0&&a!==1&&(!a||a===this.vertexCache[s].pathBevelUCoord))return this.vertexCache[s];let[l,c]=t.boundary.vertexIndices[o],u,p,d,h;l!==c?(p=l,u=c,h=!1,d=e.continuous[p]&&e.continuous[u]):(u=l,p=(u-1+e.count)%e.count,h=e.concave[u]&&t.bevelI>0,d=e.continuous[u]||h);let f=Math.cos(t.angle),m=Math.sin(t.angle),y=o*2,g=u*2,v=p*2,O=t.boundary.vertices[y+0],P=t.boundary.vertices[y+1],S=(1-m)*this._bevel,T=(O-this._minX)/this._width,I=(P-this._minY)/this._height;this.forPathBevel&&(a!==void 0&&(T=a),I=1);let x=e.normals[g+0],E=e.normals[g+1],N=e.normals[v+0],M=e.normals[v+1];if(h){let U=N-x,R=M-E;x=x+U*(1-i),E=E+R*(1-i);let W=Math.sqrt(x*x+E*E);x/=W,E/=W}let D=this.forPathBevel?this._buffer.get(d?1:2):this._buffer.get(d?2:4),_=D*3,B=D*2,z={i:o,fi:u,topP:D+0,topN:D+0,bottomP:D+1,bottomN:D+1,pathBevelUCoord:a};return this._buffer.positions[_+0]=O,this._buffer.positions[_+1]=P,this._buffer.positions[_+2]=(this.forPathBevel?this._bevel:this._depth)-S,this._buffer.normals[_+0]=x*f,this._buffer.normals[_+1]=E*f,this._buffer.normals[_+2]=m,this._buffer.uvs[B+0]=T,this._buffer.uvs[B+1]=I,this.forPathBevel===!1&&(this._buffer.positions[_+3]=O,this._buffer.positions[_+4]=P,this._buffer.positions[_+5]=S,this._buffer.normals[_+3]=x*f,this._buffer.normals[_+4]=E*f,this._buffer.normals[_+5]=-m,this._buffer.uvs[B+2]=I,this._buffer.uvs[B+3]=T),d||(this.forPathBevel?(D+=1,_+=3,B+=2):(D+=2,_+=6,B+=4),z.topP=D+0,z.bottomP=D+1,this._buffer.positions[_+0]=O,this._buffer.positions[_+1]=P,this._buffer.positions[_+2]=(this.forPathBevel?this._bevel:this._depth)-S,this._buffer.normals[_+0]=N*f,this._buffer.normals[_+1]=M*f,this._buffer.normals[_+2]=m,this._buffer.uvs[B+0]=T,this._buffer.uvs[B+1]=I,this.forPathBevel===!1&&(this._buffer.positions[_+3]=O,this._buffer.positions[_+4]=P,this._buffer.positions[_+5]=S,this._buffer.normals[_+3]=N*f,this._buffer.normals[_+4]=M*f,this._buffer.normals[_+5]=-m,this._buffer.uvs[B+2]=I,this._buffer.uvs[B+3]=T)),this.vertexCache[s]=z,z}clone(){let e=new Dn(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=jo(this.userData),e}};var Ea=class extends pi.BufferGeometry{constructor(e,t=12,o={}){super();this.type="ShapeGeometry";this.windingRule=We.ODD;this.elementType=bt.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=t,this._triangulationOptions=Object.assign({windingRule:We.ODD,elementType:bt.POLYGONS,polySize:3,vertexSize:2,strict:!0},o);let i=this._shape.extractShapePointsToFlatArray([],this._curveSegments),a=this._shape.shapeHoles.map(f=>f.extractShapePointsToFlatArray([],this._curveSegments)),s,l=!0,c=!0,u,p;for(let f=0,m=i.length/2;f<m;f++){let y=f*2,g=i[y+0],v=i[y+1];if(u!==void 0&&g!==u&&(l=!1),p!==void 0&&v!==p&&(c=!1),u=g,p=v,!l&&!c)break}if(!l&&!c)try{s=ro({contours:[i,...a],windingRule:this._triangulationOptions.windingRule,elementType:this._triangulationOptions.elementType,polySize:this._triangulationOptions.polySize,vertexSize:this._triangulationOptions.vertexSize,strict:this._triangulationOptions.strict})}catch{s=pl}let d=s?.vertexCount??1,h=s?.elementCount??1;if(this._positionAttribute=new pi.BufferAttribute(new Float32Array(d*3),3),this._normalAttribute=new pi.BufferAttribute(new Float32Array(d*3),3),this._uvAttribute=new pi.BufferAttribute(new Float32Array(d*2),2),this._indexAttribute=new pi.BufferAttribute(new Uint32Array(h*3),1),s){let f=1/0,m=-1/0,y=1/0,g=-1/0;for(let P=0,S=d;P<S;P++){let T=P*2,I=s.vertices[T+0],x=s.vertices[T+1];I<f&&(f=I),I>m&&(m=I),x<y&&(y=x),x>g&&(g=x)}let v=m-f,O=g-y;for(let P=0,S=d;P<S;P++){let T=P*2,I=s.vertices[T+0],x=s.vertices[T+1],E=(I-f)/v,N=(x-y)/O;this._positionAttribute.setXYZ(P,I,x,0),this._normalAttribute.setXYZ(P,0,0,1),this._uvAttribute.setXY(P,E,N)}for(let P=0,S=h;P<S;P++){let T=P*3,I=s.elements[T+0],x=s.elements[T+1],E=s.elements[T+2];this._indexAttribute.setX(T+0,I),this._indexAttribute.setX(T+1,x),this._indexAttribute.setX(T+2,E)}}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 Ea(this._shape,this._curveSegments);return e.userData=jo(this.userData),e}};var _a=class extends Dn{constructor(e,t,o=0,i=12,a=3,s=We.ODD){super(e,t,o,i,a,s);this.type="ShapeGeometry"}_computeBufferEstimatedSize(e){return e.vertexCount*2*(2+this._bevelSegments)}_buildWall(e,t,o){let i=e[0];for(let a=0,s=i.boundary.vertexCount;a<s;a++){let l=this._buildBevelVert(t,i,a),c=this._buildBevelVert(t,i,(a+1)%s);o.push(c.topP,l.topN,l.bottomN),o.push(c.topP,l.bottomN,c.bottomP)}}clone(){let e=new _a(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=jo(this.userData),e}};var xr=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,subdivisions:40,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3,windingRule:We.ODD},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??0),a=n.shape??r?.shape,s=a?.roundness??e.roundness;a!==void 0&&(a instanceof $e?(a.width!==t||a.height!==o)&&a.applySize(t,o):a=new $e(t,o).fromJSON(a),n.parameters?.roundness!==void 0&&n.parameters?.roundness>0&&a.update());let l=a??new $e(t,o);return{parameters:Object.assign(e,{width:t,height:o,depth:i,roundness:s}),shape:l}}static build(n){let{depth:r,extrudeBevelSize:e,extrudeBevelSegments:t,subdivisions:o,roundness:i,windingRule:a}=n.parameters;n.shape.roundness=i;let s;return r<=0?s=new Ea(n.shape,o,{windingRule:a}):s=new _a(n.shape,r,e,o,t,a),Object.assign(s,{userData:{...n,type:"VectorGeometry"}})}};var no=require("three"),Yx=Math.PI*2,La=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,spikes:64,angle:360,innerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters);return e.angle=no.MathUtils.clamp(e.angle,0,360),{shape:n.shape&&n.shape instanceof $e?n.shape:new $e,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r,height:e,spikes:t,angle:o,innerRadius:i,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}=n.parameters,c=n.shape,u=r*.5,p=e*.5,d=jA(c,u,p,o*Math.PI/180,t,i);c.isClosed=!0,c.update();let h;return o===0?(h=new no.BufferGeometry,h.setAttribute("position",new no.Float32BufferAttribute([],3))):h=xr.create({shape:c,parameters:{subdivisions:d,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}}),Object.assign(h,{userData:{...n,type:"EllipseGeometry"}})}};function jA(n,r,e,t,o,i){if(t>=Yx)return o>30||o%4===0?(UA(n,r,e,i),Math.round(o/4)):$x(n,t,o,r,e,i);t=Math.max(t,.001);let a={x:0,y:e},s=t+Math.PI*.5,l={x:Math.cos(s)*r,y:Math.sin(s)*e},c=zx({px:a.x,py:a.y,cx:l.x,cy:l.y,rx:r,ry:e,largeArcFlag:t>Math.PI,sweepFlag:!0});return o>30||o%c.length===0?FA(n,a.x,a.y,c,o,r,e,i):$x(n,t,o,r,e,i)}function FA(n,r,e,t,o,i,a,s){let l=Math.round(o/t.length);n.addPoint(Ba(r,e));for(let c=0,u=t.length;c<u;c++){let p=t[c],d=n.points[c],h=Ba(p.x,p.y);d.controls[1].position.set(p.x1,p.y1),h.controls[0].position.set(p.x2,p.y2),n.addPoint(h)}return s>0?Xx(n,i,a,s):n.addPoint(Ba(0,0)),l}function $x(n,r,e,t,o,i){let a=-r/e;for(let s=0;s<=e;s++){let l=a*s,c=Math.sin(l)*t,u=Math.cos(l)*o;n.addPoint(Ba(c,u))}return r<Yx?i>0?Xx(n,t,o,i):n.addPoint(Ba(0,0)):(n.removePoint(n.points[n.points.length-1]),i>0&&Kx(n,t,o,i)),1}function UA(n,r,e,t=0,o=0,i=0){let a=.5522847498,s=r*a,l=e*a;n.addPoint(Pu(o-r,i,o-r,i-l,o-r,i+l)),n.addPoint(Pu(o,i+e,o-s,i+e,o+s,i+e)),n.addPoint(Pu(o+r,i,o+r,i+l,o+r,i-l)),n.addPoint(Pu(o,i-e,o+s,i-e,o-s,i-e)),t>0&&Kx(n,r,e,t)}function Ba(n,r){return new to(no.MathUtils.generateUUID(),new no.Vector2(n,r))}function Pu(n,r,e,t,o,i){let a=Ba(n,r);return a.controls[0].position.set(e,t),a.controls[1].position.set(o,i),a}function Xx(n,r,e,t){Qx(n,r,e,t).forEach(i=>n.addPoint(i))}function Kx(n,r,e,t){let o=Qx(n,r,e,t),i=new $e;o.forEach(a=>i.addPoint(a)),i.isClosed=!0,n.shapeHoles.push(i)}function Qx(n,r,e,t){let o=t*r/100,i=o*(Math.abs(e)/Math.abs(r)),a=new no.Vector2(o/r,i/e),s=n.points.map(l=>{let c=l.clone();return c.uuid=no.MathUtils.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}var io=require("three"),Zx=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,revolutions:2,segments:40,pathRadius:10,pathType:0,pathSegments:30,cornerRadius:30,cornerSegments:4},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??t),i=Math.abs(e.depth??t),a=Math.abs(Math.min(t,i))/2;return{parameters:Object.assign(e,{width:t,height:o,depth:i,radius:a,segments:Math.round(e.segments),pathSegments:Math.round(e.pathSegments),cornerSegments:Math.round(e.cornerSegments)})}}static build(n){let{width:r,height:e,depth:t,radius:o,revolutions:i,segments:a,pathRadius:s,pathType:l,pathSegments:c,cornerRadius:u,cornerSegments:p}=n.parameters,d=new fl(!1,r,e,t,o,i,a,s,l,c,u,p);return Object.assign(d,{userData:{...n,type:"HelixGeometry"}})}},of=new io.Uint32BufferAttribute([0,0,0],1),fl=class extends io.BufferGeometry{constructor(r=!0,e=1,t=1,o=1,i=1,a=1,s=1,l=1,c=1,u=1,p=1,d=1){if(super(),a===0)return;let h=r&&a===1;h&&(d=0),p>100&&(p=100),p===0&&(d=0);let f=()=>new io.Vector3,m=new io.Vector3,y=f(),g=f(),v=f(),O,P,S,T,I,x,E,N,M=f(),D=f(),_=f(),B=f(),z=f(),U=f(),R=f(),W=f(),j=t-2*l+.001,F=j/a,H=Math.ceil(s*a),q=H+1,re=j/H,ee=-j/2,X=u+1,te=2*Math.PI/u,K=Math.PI/2/d,Z=.01,Q=Math.min((1-p/100)*l,l-Z),$=l-Q,ue=0,le=2,ne=d*le+le,ce=X*ne/le,ae=ce+X*q,me=Math.max(0,X*(q+ne)),[fe,he,xe]=[3,3,2].map(mt=>Array(me*mt).fill(0)),ye=[],C=i-l;function ie(mt,nt){let Xr=Math.PI/2;x=nt*re,N=2*Math.PI*(x%F)/F+Xr,x+=ee,E=Math.sin(N)*C,I=Math.cos(N)*C,r?mt.set(I,E,x):mt.set(I,x,E)}ie(m,-1e-10),ie(y,0),M.copy(m),ie(m,1);let Re=m.distanceTo(y),Fe=h?0:$+Q,Ve=Re*H+2*Fe,Ce=Q,Bt=Ve-Fe;for(let mt=0;mt<=H;mt++){ie(g,mt),W.subVectors(g,M).normalize(),M.copy(g),U.copy(g).setComponent(+r+1,0).normalize(),R.crossVectors(W,U).normalize();let nt=mt===0,Xr=mt===H,Bd=nt?3*Math.PI/2:K,Ld=nt?Ce:Bt,Kl=nt?X:ae,Xn=nt?0:me-X,wt=W.clone().multiplyScalar(nt?-$:$).add(g),Rd=W.clone().multiplyScalar(nt?-1:1).normalize();for(let Br=0;Br<X;Br++){let Gs=Br*te;if(D.addVectors(m.copy(U).multiplyScalar(l*Math.cos(Gs)),y.copy(R).multiplyScalar(l*Math.sin(Gs))),_.copy(D).normalize(),nt||Xr){h||(ue=Xn+Br,[0,1,2].forEach(rr=>{fe[ue*3+rr]=wt.getComponent(rr),he[ue*3+rr]=Rd.getComponent(rr)}),xe[ue*2]=+Xr,xe[ue*2+1]=Br/u),y.copy(_).multiplyScalar(Q),v.addVectors(g,y);for(let rr=0;rr<d;rr++){let Kn=rr*K+Bd;B.addVectors(m.copy(W).multiplyScalar($*Math.sin(Kn)),y.copy(_).multiplyScalar($*Math.cos(Kn))),z.copy(B).normalize(),y.addVectors(v,B),B.normalize(),ue=Kl+rr*X+Br,[0,1,2].forEach(Ii=>{fe[ue*3+Ii]=y.getComponent(Ii),he[ue*3+Ii]=z.getComponent(Ii)});let Ql=+nt+Math.sin(Kn);xe[ue*2]=(Ld+$*Ql)/Ve,xe[ue*2+1]=Br/u}}y.addVectors(g,D),ue=ce+mt*X+Br,[0,1,2].forEach(rr=>{fe[ue*3+rr]=y.getComponent(rr),he[ue*3+rr]=_.getComponent(rr)}),xe[ue*2]=(Fe+mt*Re)/Ve,xe[ue*2+1]=Br/u}}let Ee=q+2*d+le,Dt=1,[Lt,Yn]=[+h,Ee-1];for(let mt=Lt;mt<=Yn-1;mt++){let nt=h&&mt===Yn-1;for(let Xr=0;Xr<X-1;Xr++)O=mt*X+Xr,P=O+1,S=(nt?Xr:O)+X,T=(nt?Xr+1:P)+X,mt===0?ye.push(P,T,S):mt===Ee-2?ye.push(O,P,S):ye.push(O,P,S,P,T,S)}this.setIndex(ye),this.setAttribute("position",new io.Float32BufferAttribute(fe,3)),this.setAttribute("normal",new io.Float32BufferAttribute(he,3)),this.setAttribute("uv",new io.Float32BufferAttribute(xe,2))}getClosedTorusIndicesForBooleanOrSubdiv(){let r=this.userData.parameters,e=Math.ceil(r.tubularSegments),t=r.radialSegments+1,o=Array.from(this.getIndex().array),i,a,s,l,c=6*(e-1)*r.radialSegments,u=e,p=u===e;for(let d=0;d<r.radialSegments;d++)i=u*t+d,a=i+1,s=(p?d:i)+t,l=(p?d+1:a)+t,o[c++]=i,o[c++]=a,o[c++]=s,o[c++]=a,o[c++]=l,o[c++]=s;return o.length=c,of.array=o,of.count=o.length,of}};var Jx=require("three");var e0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,detail:0,corner:0,cornerSides:4},n.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(n){let{width:r,height:e,depth:t,detail:o,corner:i,cornerSides:a}=n.parameters,s=o===0&&i!==0?new hl(r*.5,i,a):new Jx.IcosahedronGeometry(r*.5,o);return s.scale(1,e/r,t/r),Object.assign(s,{userData:{...n,type:"IcosahedronGeometry"}})}},hl=class extends Mn{constructor(r=1,e=.2,t=4){let o=(1+Math.sqrt(5))/2,i=[-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(i,a,s,r,e,t),this.type=s}static fromJSON(r){return new hl(r.radius,r.corner,r.cornerSides)}};var Ou=require("three"),t0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){(n.parameters?.points??[]).forEach(t=>{Array.isArray(t)&&(t.x=t[0],t.y=t[1])});let e=Object.assign({},r?.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}]},n.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(n){let{points:r,segments:e,verticalSegments:t}=n.parameters,o=new Ou.Shape;o.moveTo(r[0].x,r[0].y),o.bezierCurveTo(r[1].x,r[1].y,r[2].x,r[2].y,r[3].x,r[3].y);let i=new Ou.LatheGeometry(o.extractPoints(t).shape,e);return i.rotateZ(Math.PI),Object.assign(i,{userData:{...n,type:"LatheGeometry"}})}};var Co=require("three");var Ko=require("three");var pe=require("three"),Oo=new pe.Matrix4,nf=new pe.Object3D,Cu=new pe.Vector3,En=class extends pe.EventDispatcher{constructor(){super(),this.uuid=pe.MathUtils.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(r){let e=new pe.Matrix3().getNormalMatrix(r);for(let t=0,o=this.vertices.length;t<o;t++)this.vertices[t].applyMatrix4(r);for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t];i.normal.applyMatrix3(e).normalize();for(let a=0,s=i.vertexNormals.length;a<s;a++)i.vertexNormals[a].applyMatrix3(e).normalize()}return this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this.verticesNeedUpdate=!0,this.normalsNeedUpdate=!0,this}rotateX(r){return Oo.makeRotationX(r),this.applyMatrix4(Oo),this}rotateY(r){return Oo.makeRotationY(r),this.applyMatrix4(Oo),this}rotateZ(r){return Oo.makeRotationZ(r),this.applyMatrix4(Oo),this}translate(r,e,t){return Oo.makeTranslation(r,e,t),this.applyMatrix4(Oo),this}scale(r,e,t){return Oo.makeScale(r,e,t),this.applyMatrix4(Oo),this}lookAt(r){return nf.lookAt(r),nf.updateMatrix(),this.applyMatrix4(nf.matrix),this}fromBufferGeometry(r){let e=this,t=r.index!==null?r.index:void 0,o=r.attributes;if(o.position===void 0)return console.error("THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion."),this;let i=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<i.count;d++)e.vertices.push(new pe.Vector3().fromBufferAttribute(i,d)),s!==void 0&&e.colors.push(new pe.Color().fromBufferAttribute(s,d));function u(d,h,f,m){let y=s===void 0?[]:[e.colors[d].clone(),e.colors[h].clone(),e.colors[f].clone()],g=a===void 0?[]:[new pe.Vector3().fromBufferAttribute(a,d),new pe.Vector3().fromBufferAttribute(a,h),new pe.Vector3().fromBufferAttribute(a,f)],v=new Ra(d,h,f,g,y,m);e.faces.push(v),l!==void 0&&e.faceVertexUvs[0].push([new pe.Vector2().fromBufferAttribute(l,d),new pe.Vector2().fromBufferAttribute(l,h),new pe.Vector2().fromBufferAttribute(l,f)]),c!==void 0&&e.faceVertexUvs[1].push([new pe.Vector2().fromBufferAttribute(c,d),new pe.Vector2().fromBufferAttribute(c,h),new pe.Vector2().fromBufferAttribute(c,f)])}let p=r.groups;if(p.length>0)for(let d=0;d<p.length;d++){let h=p[d],f=h.start,m=h.count;for(let y=f,g=f+m;y<g;y+=3)t!==void 0?u(t.getX(y),t.getX(y+1),t.getX(y+2),h.materialIndex):u(y,y+1,y+2,h.materialIndex)}else if(t!==void 0)for(let d=0;d<t.count;d+=3)u(t.getX(d),t.getX(d+1),t.getX(d+2));else for(let d=0;d<i.count;d+=3)u(d,d+1,d+2);return this.computeFaceNormals(),r.boundingBox!==null&&(this.boundingBox=r.boundingBox.clone()),r.boundingSphere!==null&&(this.boundingSphere=r.boundingSphere.clone()),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(Cu).negate(),this.translate(Cu.x,Cu.y,Cu.z),this}normalize(){this.computeBoundingSphere();let r=this.boundingSphere.center,e=this.boundingSphere.radius,t=e===0?1:1/e,o=new pe.Matrix4;return o.set(t,0,0,-t*r.x,0,t,0,-t*r.y,0,0,t,-t*r.z,0,0,0,1),this.applyMatrix4(o),this}computeFaceNormals(){let r=new pe.Vector3,e=new pe.Vector3;for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t],a=this.vertices[i.a],s=this.vertices[i.b],l=this.vertices[i.c];r.subVectors(l,s),e.subVectors(a,s),r.cross(e),r.normalize(),i.normal.copy(r)}}computeVertexNormals(r=!0){let e=new Array(this.vertices.length);for(let t=0,o=this.vertices.length;t<o;t++)e[t]=new pe.Vector3;if(r){let t=new pe.Vector3,o=new pe.Vector3;for(let i=0,a=this.faces.length;i<a;i++){let s=this.faces[i],l=this.vertices[s.a],c=this.vertices[s.b],u=this.vertices[s.c];t.subVectors(u,c),o.subVectors(l,c),t.cross(o),e[s.a].add(t),e[s.b].add(t),e[s.c].add(t)}}else{this.computeFaceNormals();for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t];e[i.a].add(i.normal),e[i.b].add(i.normal),e[i.c].add(i.normal)}}for(let t=0,o=this.vertices.length;t<o;t++)e[t].normalize();for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t],a=i.vertexNormals;a.length===3?(a[0].copy(e[i.a]),a[1].copy(e[i.b]),a[2].copy(e[i.c])):(a[0]=e[i.a].clone(),a[1]=e[i.b].clone(),a[2]=e[i.c].clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeFlatVertexNormals(){this.computeFaceNormals();for(let r=0,e=this.faces.length;r<e;r++){let t=this.faces[r],o=t.vertexNormals;o.length===3?(o[0].copy(t.normal),o[1].copy(t.normal),o[2].copy(t.normal)):(o[0]=t.normal.clone(),o[1]=t.normal.clone(),o[2]=t.normal.clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeMorphNormals(){for(let e=0,t=this.faces.length;e<t;e++){let o=this.faces[e];o.__originalFaceNormal?o.__originalFaceNormal.copy(o.normal):o.__originalFaceNormal=o.normal.clone(),o.__originalVertexNormals||(o.__originalVertexNormals=[]);for(let i=0,a=o.vertexNormals.length;i<a;i++)o.__originalVertexNormals[i]?o.__originalVertexNormals[i].copy(o.vertexNormals[i]):o.__originalVertexNormals[i]=o.vertexNormals[i].clone()}let r=new En;r.faces=this.faces;for(let e=0,t=this.morphTargets.length;e<t;e++){if(!this.morphNormals[e]){this.morphNormals[e]={},this.morphNormals[e].faceNormals=[],this.morphNormals[e].vertexNormals=[];let i=this.morphNormals[e].faceNormals,a=this.morphNormals[e].vertexNormals;for(let s=0,l=this.faces.length;s<l;s++){let c=new pe.Vector3,u={a:new pe.Vector3,b:new pe.Vector3,c:new pe.Vector3};i.push(c),a.push(u)}}let o=this.morphNormals[e];r.vertices=this.morphTargets[e].vertices,r.computeFaceNormals(),r.computeVertexNormals();for(let i=0,a=this.faces.length;i<a;i++){let s=this.faces[i],l=o.faceNormals[i],c=o.vertexNormals[i];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,t=this.faces.length;e<t;e++){let o=this.faces[e];o.normal=o.__originalFaceNormal,o.vertexNormals=o.__originalVertexNormals}}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new pe.Box3),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new pe.Sphere),this.boundingSphere.setFromPoints(this.vertices)}merge(r,e,t=0){if(!(r&&r.isGeometry)){console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",r);return}let o,i=this.vertices.length,a=this.vertices,s=r.vertices,l=this.faces,c=r.faces,u=this.colors,p=r.colors;e!==void 0&&(o=new pe.Matrix3().getNormalMatrix(e));for(let d=0,h=s.length;d<h;d++){let m=s[d].clone();e!==void 0&&m.applyMatrix4(e),a.push(m)}for(let d=0,h=p.length;d<h;d++)u.push(p[d].clone());for(let d=0,h=c.length;d<h;d++){let f=c[d],m,y,g=f.vertexNormals,v=f.vertexColors,O=new Ra(f.a+i,f.b+i,f.c+i);O.normal.copy(f.normal),o!==void 0&&O.normal.applyMatrix3(o).normalize();for(let P=0,S=g.length;P<S;P++)m=g[P].clone(),o!==void 0&&m.applyMatrix3(o).normalize(),O.vertexNormals.push(m);O.color.copy(f.color);for(let P=0,S=v.length;P<S;P++)y=v[P],O.vertexColors.push(y.clone());O.materialIndex=f.materialIndex+t,l.push(O)}for(let d=0,h=r.faceVertexUvs.length;d<h;d++){let f=r.faceVertexUvs[d];this.faceVertexUvs[d]===void 0&&(this.faceVertexUvs[d]=[]);for(let m=0,y=f.length;m<y;m++){let g=f[m],v=[];for(let O=0,P=g.length;O<P;O++)v.push(g[O].clone());this.faceVertexUvs[d].push(v)}}}mergeMesh(r){if(!(r&&r.isMesh)){console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",r);return}r.matrixAutoUpdate&&r.updateMatrix(),this.merge(r.geometry,r.matrix)}mergeVertices(r=4){let e={},t=[],o=[],i=Math.pow(10,r);for(let l=0,c=this.vertices.length;l<c;l++){let u=this.vertices[l],p=Math.round(u.x*i)+"_"+Math.round(u.y*i)+"_"+Math.round(u.z*i);e[p]===void 0?(e[p]=l,t.push(this.vertices[l]),o[l]=t.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-t.length;return this.vertices=t,s}setFromPoints(r){this.vertices=[];for(let e=0,t=r.length;e<t;e++){let o=r[e];this.vertices.push(new pe.Vector3(o.x,o.y,o.z||0))}return this}sortFacesByMaterialIndex(){let r=this.faces,e=r.length;for(let l=0;l<e;l++)r[l]._id=l;function t(l,c){return l.materialIndex-c.materialIndex}r.sort(t);let o=this.faceVertexUvs[0],i=this.faceVertexUvs[1],a,s;o&&o.length===e&&(a=[]),i&&i.length===e&&(s=[]);for(let l=0;l<e;l++){let c=r[l]._id;a&&a.push(o[c]),s&&s.push(i[c])}a&&(this.faceVertexUvs[0]=a),s&&(this.faceVertexUvs[1]=s)}toJSON(){let r={metadata:{version:4.5,type:"Geometry",generator:"Geometry.toJSON"}};if(r.uuid=this.uuid,r.type=this.type,this.name!==""&&(r.name=this.name),this.parameters!==void 0){let f=this.parameters;for(let m in f)f[m]!==void 0&&(r[m]=f[m]);return r}let e=[];for(let f=0;f<this.vertices.length;f++){let m=this.vertices[f];e.push(m.x,m.y,m.z)}let t=[],o=[],i={},a=[],s={},l=[],c={};for(let f=0;f<this.faces.length;f++){let m=this.faces[f],y=!0,g=!1,v=this.faceVertexUvs[0][f]!==void 0,O=m.normal.length()>0,P=m.vertexNormals.length>0,S=m.color.r!==1||m.color.g!==1||m.color.b!==1,T=m.vertexColors.length>0,I=0;if(I=u(I,0,0),I=u(I,1,y),I=u(I,2,g),I=u(I,3,v),I=u(I,4,O),I=u(I,5,P),I=u(I,6,S),I=u(I,7,T),t.push(I),t.push(m.a,m.b,m.c),t.push(m.materialIndex),v){let x=this.faceVertexUvs[0][f];t.push(h(x[0]),h(x[1]),h(x[2]))}if(O&&t.push(p(m.normal)),P){let x=m.vertexNormals;t.push(p(x[0]),p(x[1]),p(x[2]))}if(S&&t.push(d(m.color)),T){let x=m.vertexColors;t.push(d(x[0]),d(x[1]),d(x[2]))}}function u(f,m,y){return y?f|1<<m:f&~(1<<m)}function p(f){let m=f.x.toString()+f.y.toString()+f.z.toString();return i[m]!==void 0||(i[m]=o.length/3,o.push(f.x,f.y,f.z)),i[m]}function d(f){let m=f.r.toString()+f.g.toString()+f.b.toString();return s[m]!==void 0||(s[m]=a.length,a.push(f.getHex())),s[m]}function h(f){let m=f.x.toString()+f.y.toString();return c[m]!==void 0||(c[m]=l.length/2,l.push(f.x,f.y)),c[m]}return r.data={},r.data.vertices=e,r.data.normals=o,a.length>0&&(r.data.colors=a),l.length>0&&(r.data.uvs=[l]),r.data.faces=t,r}clone(){return new En().copy(this)}copy(r){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=r.name;let e=r.vertices;for(let d=0,h=e.length;d<h;d++)this.vertices.push(e[d].clone());let t=r.colors;for(let d=0,h=t.length;d<h;d++)this.colors.push(t[d].clone());let o=r.faces;for(let d=0,h=o.length;d<h;d++)this.faces.push(o[d].clone());for(let d=0,h=r.faceVertexUvs.length;d<h;d++){let f=r.faceVertexUvs[d];this.faceVertexUvs[d]===void 0&&(this.faceVertexUvs[d]=[]);for(let m=0,y=f.length;m<y;m++){let g=f[m],v=[];for(let O=0,P=g.length;O<P;O++){let S=g[O];v.push(S.clone())}this.faceVertexUvs[d].push(v)}}let i=r.morphTargets;for(let d=0,h=i.length;d<h;d++){let f={};if(f.name=i[d].name,i[d].vertices!==void 0){f.vertices=[];for(let m=0,y=i[d].vertices.length;m<y;m++)f.vertices.push(i[d].vertices[m].clone())}if(i[d].normals!==void 0){f.normals=[];for(let m=0,y=i[d].normals.length;m<y;m++)f.normals.push(i[d].normals[m].clone())}this.morphTargets.push(f)}let a=r.morphNormals;for(let d=0,h=a.length;d<h;d++){let f={};if(a[d].vertexNormals!==void 0){f.vertexNormals=[];for(let m=0,y=a[d].vertexNormals.length;m<y;m++){let g=a[d].vertexNormals[m],v={};v.a=g.a.clone(),v.b=g.b.clone(),v.c=g.c.clone(),f.vertexNormals.push(v)}}if(a[d].faceNormals!==void 0){f.faceNormals=[];for(let m=0,y=a[d].faceNormals.length;m<y;m++)f.faceNormals.push(a[d].faceNormals[m].clone())}this.morphNormals.push(f)}let s=r.skinWeights;for(let d=0,h=s.length;d<h;d++)this.skinWeights.push(s[d].clone());let l=r.skinIndices;for(let d=0,h=l.length;d<h;d++)this.skinIndices.push(l[d].clone());let c=r.lineDistances;for(let d=0,h=c.length;d<h;d++)this.lineDistances.push(c[d]);let u=r.boundingBox;u!==null&&(this.boundingBox=u.clone());let p=r.boundingSphere;return p!==null&&(this.boundingSphere=p.clone()),this.elementsNeedUpdate=r.elementsNeedUpdate,this.verticesNeedUpdate=r.verticesNeedUpdate,this.uvsNeedUpdate=r.uvsNeedUpdate,this.normalsNeedUpdate=r.normalsNeedUpdate,this.colorsNeedUpdate=r.colorsNeedUpdate,this.lineDistancesNeedUpdate=r.lineDistancesNeedUpdate,this.groupsNeedUpdate=r.groupsNeedUpdate,this}toBufferGeometry(){let r=new af().fromGeometry(this),e=new pe.BufferGeometry,t=new Float32Array(r.vertices.length*3);if(e.setAttribute("position",Tu.call(new pe.BufferAttribute(t,3),r.vertices)),r.normals.length>0){let o=new Float32Array(r.normals.length*3);e.setAttribute("normal",Tu.call(new pe.BufferAttribute(o,3),r.normals))}if(r.colors.length>0){let o=new Float32Array(r.colors.length*3);e.setAttribute("color",r0.call(new pe.BufferAttribute(o,3),r.colors))}if(r.uvs.length>0){let o=new Float32Array(r.uvs.length*2);e.setAttribute("uv",o0.call(new pe.BufferAttribute(o,2),r.uvs))}if(r.uvs2.length>0){let o=new Float32Array(r.uvs2.length*2);e.setAttribute("uv2",o0.call(new pe.BufferAttribute(o,2),r.uvs2))}e.groups=r.groups;for(let o in r.morphTargets){let i=[],a=r.morphTargets[o];for(let s=0,l=a.length;s<l;s++){let c=a[s],u=new pe.Float32BufferAttribute(c.data.length*3,3);u.name=c.name,i.push(Tu.call(u,c.data))}e.morphAttributes[o]=i}if(r.skinIndices.length>0){let o=new pe.Float32BufferAttribute(r.skinIndices.length*4,4);e.setAttribute("skinIndex",n0.call(o,r.skinIndices))}if(r.skinWeights.length>0){let o=new pe.Float32BufferAttribute(r.skinWeights.length*4,4);e.setAttribute("skinWeight",n0.call(o,r.skinWeights))}return r.boundingSphere!==null&&(e.boundingSphere=r.boundingSphere.clone()),r.boundingBox!==null&&(e.boundingBox=r.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(r){return console.warn("THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(r)}dispose(){this.dispatchEvent({type:"dispose"})}static createBufferGeometryFromObject(r){let e=new pe.BufferGeometry,t=r.geometry;if(r.isPoints||r.isLine){let o=new pe.Float32BufferAttribute(t.vertices.length*3,3),i=new pe.Float32BufferAttribute(t.colors.length*3,3);if(e.setAttribute("position",Tu.call(o,t.vertices)),e.setAttribute("color",r0.call(i,t.colors)),t.lineDistances&&t.lineDistances.length===t.vertices.length){let a=new pe.Float32BufferAttribute(t.lineDistances.length,1);e.setAttribute("lineDistance",kA.call(a,t.lineDistances))}t.boundingSphere!==null&&(e.boundingSphere=t.boundingSphere.clone()),t.boundingBox!==null&&(e.boundingBox=t.boundingBox.clone())}else r.isMesh&&(e=t.toBufferGeometry());return e}};En.prototype.isGeometry=!0;var af=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(r){let e=[],t,o,i,a=r.faces;for(o=0;o<a.length;o++){let s=a[o];s.materialIndex!==i&&(i=s.materialIndex,t!==void 0&&(t.count=o*3-t.start,e.push(t)),t={start:o*3,materialIndex:i})}t!==void 0&&(t.count=o*3-t.start,e.push(t)),this.groups=e}fromGeometry(r){let e=r.faces,t=r.vertices,o=r.faceVertexUvs,i=o[0]&&o[0].length>0,a=o[1]&&o[1].length>0,s=r.morphTargets,l=s.length,c;if(l>0){c=[];for(let g=0;g<l;g++)c[g]={name:s[g].name,data:[]};this.morphTargets.position=c}let u=r.morphNormals,p=u.length,d;if(p>0){d=[];for(let g=0;g<p;g++)d[g]={name:u[g].name,data:[]};this.morphTargets.normal=d}let h=r.skinIndices,f=r.skinWeights,m=h.length===t.length,y=f.length===t.length;t.length>0&&e.length===0&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(let g=0;g<e.length;g++){let v=e[g];this.vertices.push(t[v.a],t[v.b],t[v.c]);let O=v.vertexNormals;if(O.length===3)this.normals.push(O[0],O[1],O[2]);else{let S=v.normal;this.normals.push(S,S,S)}let P=v.vertexColors;if(P.length===3)this.colors.push(P[0],P[1],P[2]);else{let S=v.color;this.colors.push(S,S,S)}if(i===!0){let S=o[0][g];S!==void 0?this.uvs.push(S[0],S[1],S[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",g),this.uvs.push(new pe.Vector2,new pe.Vector2,new pe.Vector2))}if(a===!0){let S=o[1][g];S!==void 0?this.uvs2.push(S[0],S[1],S[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",g),this.uvs2.push(new pe.Vector2,new pe.Vector2,new pe.Vector2))}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[g];d[S].data.push(T.a,T.b,T.c)}m&&this.skinIndices.push(h[v.a],h[v.b],h[v.c]),y&&this.skinWeights.push(f[v.a],f[v.b],f[v.c])}return this.computeGroups(r),this.verticesNeedUpdate=r.verticesNeedUpdate,this.normalsNeedUpdate=r.normalsNeedUpdate,this.colorsNeedUpdate=r.colorsNeedUpdate,this.uvsNeedUpdate=r.uvsNeedUpdate,this.groupsNeedUpdate=r.groupsNeedUpdate,r.boundingSphere!==null&&(this.boundingSphere=r.boundingSphere.clone()),r.boundingBox!==null&&(this.boundingBox=r.boundingBox.clone()),this}},Ra=class{constructor(r,e,t,o,i,a=0){this.a=r,this.b=e,this.c=t,this.normal=o&&o.isVector3?o:new pe.Vector3,this.vertexNormals=Array.isArray(o)?o:[],this.color=i&&i.isColor?i:new pe.Color,this.vertexColors=Array.isArray(i)?i:[],this.materialIndex=a}clone(){return new this.constructor().copy(this)}copy(r){this.a=r.a,this.b=r.b,this.c=r.c,this.normal.copy(r.normal),this.color.copy(r.color),this.materialIndex=r.materialIndex;for(let e=0,t=r.vertexNormals.length;e<t;e++)this.vertexNormals[e]=r.vertexNormals[e].clone();for(let e=0,t=r.vertexColors.length;e<t;e++)this.vertexColors[e]=r.vertexColors[e].clone();return this}};function kA(n){return this.array.set(n),this}function r0(n){let r=this.array,e=0;for(let t=0,o=n.length;t<o;t++){let i=n[t];i===void 0&&(console.warn("THREE.BufferAttribute.copyColorsArray(): color is undefined",t),i=new pe.Color),r[e++]=i.r,r[e++]=i.g,r[e++]=i.b}return this}function o0(n){let r=this.array,e=0;for(let t=0,o=n.length;t<o;t++){let i=n[t];i===void 0&&(console.warn("THREE.BufferAttribute.copyVector2sArray(): vector is undefined",t),i=new pe.Vector2),r[e++]=i.x,r[e++]=i.y}return this}function Tu(n){let r=this.array,e=0;for(let t=0,o=n.length;t<o;t++){let i=n[t];i===void 0&&(console.warn("THREE.BufferAttribute.copyVector3sArray(): vector is undefined",t),i=new pe.Vector3),r[e++]=i.x,r[e++]=i.y,r[e++]=i.z}return this}function n0(n){let r=this.array,e=0;for(let t=0,o=n.length;t<o;t++){let i=n[t];i===void 0&&(console.warn("THREE.BufferAttribute.copyVector4sArray(): vector is undefined",t),i=new pe.Vector4),r[e++]=i.x,r[e++]=i.y,r[e++]=i.z,r[e++]=i.w}return this}var HA=["a","b","c"];function WA(n,r){switch(r){case"c":return n.c;case"b":return n.b;case"a":default:return n.a}}function sf(n,r,e){let t=Math.min(n,r),o=Math.max(n,r),i=t+"_"+o;return e.get(i)}function lf(n,r,e,t,o,i){let a=Math.min(n,r),s=Math.max(n,r),l=a+"_"+s,c;if(t.has(l))c=t.get(l);else{let u=e[a],p=e[s];c={a:u,b:p,newEdge:null,faces:[]},t.set(l,c)}c.faces.push(o),i[n].edges.push(c),i[r].edges.push(c)}function qA(n,r,e,t){let o,i,a;for(o=0,i=n.length;o<i;o++)e[o]={edges:[]};for(o=0,i=r.length;o<i;o++)a=r[o],lf(a.a,a.b,n,t,a,e),lf(a.b,a.c,n,t,a,e),lf(a.c,a.a,n,t,a,e)}function Au(n,r,e,t,o){n.push(new Ra(r,e,t,void 0,void 0,o))}function Va(n,r){return Math.abs(r-n)/2+Math.min(n,r)}function Mu(n,r,e,t){n.push([r.clone(),e.clone(),t.clone()])}var Iu=class{constructor(r=1){this.subdivisions=r}modify(r){r instanceof Ko.BufferGeometry?r=new En().fromBufferGeometry(r):r=r.clone(),r.mergeVertices();let e=this.subdivisions;for(;e-- >0;)this._smooth(r);return r.computeFaceNormals(),r.computeVertexNormals(),r}_smooth(r){let e=new Ko.Vector3,t,o,i,a,s,l=r.vertices,c=r.faces,u=r.faceVertexUvs[0],p=u!==void 0&&u.length>0,d=[],h=new Map;qA(l,c,d,h);let f=[],m,y,g,v,O,P,S;for(let Z of Array.from(h.keys())){for(y=h.get(Z),g=new Ko.Vector3,O=3/8,P=1/8,S=y.faces.length,S!=2&&(O=.5,P=0,S!=1),g.addVectors(y.a,y.b).multiplyScalar(O),e.set(0,0,0),a=0;a<S;a++){for(v=y.faces[a],s=0;s<3&&(m=l[WA(v,HA[s])],!(m!==y.a&&m!==y.b));s++);m&&e.add(m)}e.multiplyScalar(P),g.add(e),y.newEdge=f.length,f.push(g)}let T,I,x,E,N,M,D,_=[];for(o=0,i=l.length;o<i;o++){for(M=l[o],N=d[o].edges,t=N.length,t==3?T=3/16:t>3&&(T=3/(8*t)),I=1-t*Number(T),x=T,t<=2&&(t==2?(I=3/4,x=1/8):t==1||t==0),D=M.clone().multiplyScalar(I),e.set(0,0,0),a=0;a<t;a++)E=N[a],m=E.a!==M?E.a:E.b,e.add(m);e.multiplyScalar(Number(x)),D.add(e),_.push(D)}let B=_.concat(f),z=_.length,U,R,W,j=[],F=[],H,q,re,ee,X=new Ko.Vector2,te=new Ko.Vector2,K=new Ko.Vector2;for(o=0,i=c.length;o<i;o++)v=c[o],U=Number(sf(v.a,v.b,h).newEdge)+z,R=Number(sf(v.b,v.c,h).newEdge)+z,W=Number(sf(v.c,v.a,h).newEdge)+z,Au(j,U,R,W,v.materialIndex),Au(j,v.a,U,W,v.materialIndex),Au(j,v.b,R,U,v.materialIndex),Au(j,v.c,W,R,v.materialIndex),p&&(H=u[o],q=H[0],re=H[1],ee=H[2],X.set(Va(q.x,re.x),Va(q.y,re.y)),te.set(Va(re.x,ee.x),Va(re.y,ee.y)),K.set(Va(q.x,ee.x),Va(q.y,ee.y)),Mu(F,X,te,K),Mu(F,q,X,K),Mu(F,re,te,X),Mu(F,ee,K,te));r.vertices=B,r.faces=j,p&&(r.faceVertexUvs[0]=F)}};var zt=new Co.Vector3,i0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=n.geometry??r?.geometry??new Co.BufferGeometry().copy(new Co.BoxGeometry(100,100,100)),t;r===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(zt),t={width:zt.x,height:zt.y,depth:zt.z,subdivisions:0}):t=r.parameters;let o={...t,...n.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(n){let{width:r,height:e,depth:t,subdivisions:o}=n.parameters,i=n.geometry??new Co.BufferGeometry().copy(new Co.BoxGeometry(100,100,100)),a=i.userData.parameters;a===void 0?(i.computeBoundingBox(),i.boundingBox.getSize(zt)):zt.set(a.width,a.height,a.depth),(r!==zt.x||e!==zt.y||t!==zt.z)&&i.scale(zt.x===0?1:r/zt.x,zt.y===0?1:e/zt.y,zt.z===0?1:t/zt.z);let s=i.originalGeometry;try{o>0?(s===void 0||a?.subdivisions!==o)&&(s===void 0&&(s=i),i=new Iu(o).modify(s).toBufferGeometry()):(s!==void 0&&(i=s),s=void 0,i.getAttribute("normal")===void 0&&i.computeVertexNormals())}catch{s!==void 0&&(i=s),s=void 0,i.getAttribute("normal")===void 0&&i.computeVertexNormals()}return s!==void 0&&Object.assign(i,{originalGeometry:s}),delete n.geometry,Object.assign(i,{userData:{...n,type:"NonParametricGeometry"}})}static loadFromUrl(n,r,e){new Co.BufferGeometryLoader(e).load(n,o=>{let i=this.normalizeInputs({geometry:o});o.boundingBox.getSize(zt);let a=100/zt.x;Object.assign(i.parameters,{width:100,height:zt.y*a,depth:zt.z*a}),r(this.build(i))})}};var Nu=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:3},n.parameters);return{shape:n.shape&&n.shape instanceof $e?n.shape:new $e,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r,height:e,spikes:t,cornerRadius:o,depth:i,extrudeBevelSize:a,extrudeBevelSegments:s}=n.parameters,l=n.shape,c=r*.5,u=e*.5,p=0,d=0,h=2*Math.PI/t;for(let m=0;m<t;m++){let y=h*m,g=p+Math.sin(y)*c,v=d+Math.cos(y)*u;l.addPoint(l.createPoint(g,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 f=xr.create({shape:l,parameters:{roundness:o,depth:i,extrudeBevelSize:a,extrudeBevelSegments:s}});return Object.assign(f,{userData:{...n,type:"PolygonGeometry"}})}};var ke=require("three"),a0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:4,heightSegments:1,cornerRadius:0,cornerSegments:8,openEnded:!1},n.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(n){let{width:r,height:e,depth:t,radialSegments:o,heightSegments:i,openEnded:a,cornerRadius:s,cornerSegments:l}=n.parameters,c=new uf(r*.5,e,o,i,a,s,l);return c.scale(1,1,t/r),Object.assign(c,{userData:{...n,type:"PyramidGeometry"}})}};function ml(n,r,e){e.x=n.x*r.x,e.y=n.y,e.z=n.x*r.y}function cf(n,r,e,t,o,i){let a=r.clone().sub(n),s=e.clone().sub(n),l=a.angleTo(s);if(a.normalize(),s.normalize(),t===o){let c=a.add(s).normalize();i.copy(n).addScaledVector(c,t/Math.sin(l/2))}else{let c=a.angleTo(s);i.copy(n),i.addScaledVector(a,o/Math.sin(c)),i.addScaledVector(s,t/Math.sin(c))}}function $A(n,r,e){let t=n.clone().sub(r),o=e.clone().sub(r);return t.projectOnVector(o),t.add(r)}var uf=class extends ke.BufferGeometry{constructor(r=.5,e=1,t=4,o=1,i=!1,a=0,s=4){super(),t=Math.floor(Math.max(3,t)),o=Math.floor(o),s=Math.floor(s);let l=[],c=[],u=[],p=[],d=0,h=e/2,f=Math.PI/t,m=r*Math.cos(Math.PI/t),y=2*Math.PI/t,g=(t-2)*Math.PI/t,v=Math.PI-g,O=new ke.Vector3(0,-h,0),P=new ke.Vector3(0,h,0),S=new ke.Vector2(r,-h),T=new ke.Vector2(m,-h),I=new ke.Vector2(0,P.y).sub(T),x=new ke.Vector2(0,P.y).sub(S),E=new ke.Vector2(I.y,-I.x).normalize(),N=new ke.Vector2(x.y,-x.x).normalize(),D=r*Math.cos(Math.PI/t)*Math.tan((Math.PI-I.angle())/2)-1e-8;a=Math.min(a,D);let _;{let F=new ke.Vector3(E.x,E.y,0),H=new ke.Vector3(Math.cos(y)*F.x,F.y,Math.sin(y)*F.x);_=F.angleTo(H)}let B=a/Math.tan((Math.PI-I.angle())/2),z=a/Math.tan((Math.PI-_)/2),U=new ke.Vector3;if(!i){c.push(O.x,O.y,O.z),u.push(0,-1,0),p.push(0,0);let F=d++,H=[],q=S.clone(),re=B/Math.cos(Math.PI/t);q.x-=re;for(let ee=0;ee<t;ee++){let X=ee/t*Math.PI*2+f,te=new ke.Vector2(Math.sin(X),Math.cos(X));ml(q,te,U),c.push(U.x,U.y,U.z),u.push(0,-1,0),p.push(0,0),H.push(d++)}for(let ee=0;ee<H.length;ee++)l.push(H[ee],F,H[(ee+1)%H.length])}let R=[];{let F=new ke.Vector3,H=new ke.Vector3,q=new ke.Vector3,re=new ke.Vector3,ee=new ke.Vector3,X=new ke.Vector3;for(let te=0;te<t;te++){let K=te/t*Math.PI*2+f,Z=(te+.5)/t*Math.PI*2+f,Q=(te+1)/t*Math.PI*2+f,$=new ke.Vector2(Math.sin(K),Math.cos(K)),ue=new ke.Vector2(Math.sin(Z),Math.cos(Z)),le=new ke.Vector2(Math.sin(Q),Math.cos(Q));ml(S,$,H),ml(S,le,q),ml(E,ue,F),cf(P,H,q,z,z,re),c.push(re.x,re.y,re.z),cf(H,P,q,z,B,ee),c.push(ee.x,ee.y,ee.z),cf(q,H,P,B,z,X),c.push(X.x,X.y,X.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 ne=d++,ce=d++,ae=d++;if(l.push(ne,ce,ae),a>0){{let he=H.clone().add(q).multiplyScalar(.5),xe=P.clone().sub(he).normalize(),C=O.clone().sub(he).normalize().add(xe).normalize().multiplyScalar(-1),ie=X.clone().sub(ee);W(he,ie,C,I.angle())}let me,fe;{let he=new ke.Vector3;ml(N,le,he);let xe=X.clone().add(re).multiplyScalar(.5);xe=$A(xe,q,P);let ye=X.clone().sub(re);[me,fe]=W(xe,ye,he,_,re.y)}{let he=me,xe=he.clone().setY(0).normalize(),ye=new ke.Vector3(0,-1,0),C=xe.clone().cross(ye);j(he,xe,ye,C)}R.concat(fe);{let he=I.angle(),xe=Math.PI-he,ye=P.clone();ye.y-=a/Math.sin(he-Math.PI/2);let C=new ke.Vector3,ie=[];for(let Fe=0;Fe<s;Fe++){let Ve=[],Ce=Math.PI/2-xe*Fe/s,Bt=Math.cos(Ce),Ee=Math.sin(Ce),Dt=Z;for(let Lt=0;Lt<=Fe;Lt++){let Yn=Math.cos(Dt),mt=Math.sin(Dt);F.x=Bt*mt,F.y=Ee,F.z=Bt*Yn,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),Ve.push(d++),Dt+=Math.PI*2/Fe/t}ie.push(Ve)}fe.reverse(),ie.push(fe);let Re=ie.length-1;for(let Fe=0;Fe<Re;Fe++){let Ve=ie[Fe],Ce=ie[Fe+1],Bt=Ve.length-1;l.push(Ce[1],Ve[0],Ce[0]);for(let Ee=1;Ee<=Bt;Ee++)l.push(Ve[Ee],Ve[Ee-1],Ce[Ee]),l.push(Ce[Ee+1],Ve[Ee],Ce[Ee])}}}}}this.setIndex(l),this.setAttribute("position",new ke.Float32BufferAttribute(c,3)),this.setAttribute("normal",new ke.Float32BufferAttribute(u,3)),this.setAttribute("uv",new ke.Float32BufferAttribute(p,2));function W(F,H,q,re,ee){let X=-re/2,te=(Math.PI-re)/2,K=H.clone().normalize().cross(q);F.addScaledVector(q,-a/Math.sin(te));let Z=new ke.Vector3,Q=new ke.Vector3,$=1,ue=d,le=[];for(let ne=0;ne<=s;ne++){let ce=X+ne/s*re;Q.set(0,0,0),Q.addScaledVector(K,Math.sin(ce)),Q.addScaledVector(q,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),ee!=null){let fe=Math.max(0,Z.y-ee);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 ne=0;ne<s;ne++)for(let ce=0;ce<$;ce++){let ae=ue+ce+($+1)*ne,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,q,re){let ee=Math.PI/2,X=x.angle()-ee,te=[],K=new ke.Vector3,Z=new ke.Vector3;for(let $=0;$<=s;$++){let ue=[],le=$/s;for(let ne=0;ne<=$;ne++){let ae=(($?ne/$:0)-.5)*v,me=Math.cos(ae),fe=Math.sin(ae),he=Math.atan(Math.tan(X)*me),xe=(ee+he)*le,ye=Math.cos(xe),C=Math.sin(xe);K.set(0,0,0),K.addScaledVector(H,C*me),K.addScaledVector(q,ye),K.addScaledVector(re,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),ue.push(d++)}te.push(ue)}let Q=te.length-1;for(let $=0;$<Q;$++){let ue=te[$],le=te[$+1],ne=ue.length-1;l.push(ue[0],le[1],le[0]);for(let ce=1;ce<=ne;ce++)l.push(ue[ce-1],ue[ce],le[ce]),l.push(ue[ce],le[ce+1],le[ce])}}}};var za=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,cornerRadius:[0,0,0,0],cornerType:1,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters),t=Object.assign(r?.ui??{enabledIndieCorners:!1},n.ui);return{shape:n.shape&&n.shape instanceof $e?n.shape:new $e,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)}),ui:t}}static build(n){let r=n.shape,{width:e,height:t,cornerRadius:o,cornerType:i,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}=n.parameters,c={x:e*.5,y:t*.5},u={x:-c.x,y:-c.y},p={x:c.x,y:c.y};function d(P,S,T){return S>e&&T>t?Math.min(P*e/S,P*t/T):S>e?P*e/S:T>t?P*t/T:P}let h=[];h[0]=o[0]===0?0:d(o[0],o[0]+o[3],o[0]+o[1]),h[1]=o[1]===0?0:d(o[1],o[1]+o[2],o[1]+o[0]),h[2]=o[2]===0?0:d(o[2],o[2]+o[1],o[2]+o[3]),h[3]=o[3]===0?0:d(o[3],o[3]+o[0],o[3]+o[2]);let f=u.x,m=p.x,y=p.y,g=u.y;r.addPoint(r.createPoint(f,y)),r.addPoint(r.createPoint(m,y)),r.addPoint(r.createPoint(m,g)),r.addPoint(r.createPoint(f,g)),r.isClosed=!0;let v=!0;for(let P=0,S=r.points.length;P<S;P++)r.points[P].roundness=h[P],P>0&&h[P]!==h[P-1]&&(v=!1);v&&(r.roundness=h[0]),r.useCubicForRoundedCorners=i!==1,r.update();let O=xr.create({shape:r,parameters:{depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}});return Object.assign(O,{userData:{...n,type:"RectangleGeometry"}})}};var Qo=require("three"),s0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:180},n.parameters);return e.thetaLength=Qo.MathUtils.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(n){let{width:r=100,height:e=r,depth:t=r,widthSegments:o=64,heightSegments:i=64,phiStart:a,phiLength:s,thetaStart:l,thetaLength:c}=n.parameters,u;return c===0?(u=new Qo.BufferGeometry,u.setAttribute("position",new Qo.Float32BufferAttribute([],3))):u=new Qo.SphereGeometry(.5*r,o,i,a,s,l,c*Qo.MathUtils.DEG2RAD),u.scale(1,e/r,t/r),Object.assign(u,{userData:{...n,type:"SphereGeometry"}})}};var l0=require("three"),c0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,widthSegments:8,heightSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:0})}}static build(n){let{width:r=100,height:e=r,widthSegments:t=8,heightSegments:o=8}=n.parameters,i=new l0.PlaneGeometry(r,e,t,o);return i.scale(1,1,1),Object.assign(i,{userData:{...n,type:"PlaneGeometry"}})}};var _n=require("three"),u0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,angle:90,cornerRadius:24,cornerSegments:8},n.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(n){let{width:r,height:e,depth:t,angle:o,cornerRadius:i,cornerSegments:a}=n.parameters,s=new df(r,e,t,o,i,a);return Object.assign(s,{userData:{...n,type:"BackdropGeometry"}})}},df=class extends _n.BufferGeometry{constructor(r=1,e=1,t=1,o=90,i=10,a=24){super(),this.type="BackdropGeometry";let s=[],l=[],c=[],u=.001;i==0&&(a=1),a=Math.max(1,Math.floor(a)),i=Math.min(i,100),o=Math.min(180-u,o),o*=Math.PI/180;let p=[],d=Math.PI/2,h=(Z=0,Q=0,$=0)=>new _n.Vector3(Z,Q,$),f=h(),m=h(),[y,g,v]=[e/2,r/2,t/2],O=-g,P=+g,[S,T,I]=[h(O,-y,+v),h(O,-y,-v),h(O,+y,-v)],x=(Z,Q=!1)=>Math.sin(Z-Math.PI/(1+ +Q)),E=(Z,Q=!1)=>Math.cos(Z-Math.PI/(1+ +Q));I.y=Math.sin(o)*e-y;let N=Math.cos(o)*e-v,M=S.z-u;o<=d?(I.z=Math.min(N,M),I.z==M&&(I.y-=(N-M)/Math.tan(d-o))):T.z=Math.min(T.z-N-v,S.z-u),f.subVectors(S,T),m.subVectors(I,T);let D=Math.min(f.length(),m.length())*i/100,_=D*Math.tan(o/2),B=D/Math.cos(o/2),z=f.clone().normalize().add(m.normalize()).setLength(B).add(T);f.set(0,x(o,!0),E(o,!0)),p.push([I,f.clone()]);let U=(Math.PI-o)/a;for(let Z=0;Z<=a;Z++){let Q=d+o+Z*U;f.set(0,Math.sin(Q)*_,Math.cos(Q)*_),f.add(z),m.set(0,x(Q),E(Q)),p.push([f.clone(),m.clone()])}p.push([S,h(0,1,0)]);let R=Math.sin(U/2)*_*2,W=p.length-1,j=p[0][0].distanceTo(p[1][0]),F=p[W-1][0].distanceTo(p[W][0]),H=j+R*a+F;p[0].push(1);for(let Z=0;Z<=a;Z++)p[Z+1].push(1-(j+Z*R)/H);p[W].push(0);let[q,re,ee]=p[0],X,te,K;for(let Z=1;Z<p.length;Z++)[X,te,K]=p[Z],s.push(O,q.y,q.z,O,X.y,X.z,P,q.y,q.z,P,q.y,q.z,O,X.y,X.z,P,X.y,X.z),l.push(0,re.y,re.z,0,te.y,te.z,0,re.y,re.z,0,re.y,re.z,0,te.y,te.z,0,te.y,te.z),c.push(0,ee,0,K,1,ee,1,ee,0,K,1,K),[q,re,ee]=[X,te,K];this.setAttribute("position",new _n.Float32BufferAttribute(s,3)),this.setAttribute("normal",new _n.Float32BufferAttribute(l,3)),this.setAttribute("uv",new _n.Float32BufferAttribute(c,2))}};var Du=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,innerRadiusPercent:38.19,spikes:5,cornerRadius:0,angle:360,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters);return{shape:n.shape&&n.shape instanceof $e?n.shape:new $e,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r,height:e,innerRadiusPercent:t,spikes:o,cornerRadius:i,angle:a,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}=n.parameters,u=n.shape,p=r*.5,d=e*.5,h=0,f=0,m=a*Math.PI/360/o,y=Math.PI/2*3*-1,g=p*t/100,v=d*t/100;if(o===3&&t===50){m=2*Math.PI/o;for(let P=0;P<o;P++){let S=m*P,T=h+Math.sin(S)*p,I=f+Math.cos(S)*d;u.addPoint(u.createPoint(T,I))}}else for(let P=0;P<o;P++){let S=h+Math.cos(y)*p,T=f+Math.sin(y)*d;u.addPoint(u.createPoint(S,T)),y+=m,S=h+Math.cos(y)*g,T=f+Math.sin(y)*v,P<=o,u.addPoint(u.createPoint(S,T)),y+=m}u.isClosed=!0;for(let P=0,S=u.points.length;P<S;P++)u.points[P].roundness=i;u.roundness=i,u.update();let O=xr.create({shape:u,parameters:{roundness:i,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(O,{userData:{...n,type:"StarGeometry"}})}};var d0=require("three"),p0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0},n.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(n){let{width:r,height:e}=n.parameters,t=new d0.PlaneGeometry(r,e);return Object.assign(t,{userData:{...n,type:"TextFrameGeometry"}})}};var Ga=require("three");var f0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:32,tubularSegments:64,arc:360,cornerRadius:30,cornerSegments:8},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.round(Math.abs(e.depth??e.width*.25));return{parameters:Object.assign(e,{width:t,height:o,depth:i})}}static build(n){let{width:r,height:e,depth:t,radialSegments:o,tubularSegments:i,arc:a,cornerRadius:s,cornerSegments:l}=n.parameters,c=YA(r,e,t,r*.5,a,i,0,0,o,s,l);return c.scale(1,e/r,1),Object.assign(c,{userData:{...n,type:"TorusGeometry"}})}};function YA(n,r,e,t,o,i,a,s,l,c,u){[r,e]=[e,r],a=r/2;let p=Ga.MathUtils.clamp(o/360,0,1);if(p===0){let d=new Ga.BufferGeometry;return d.setAttribute("position",new Ga.Float32BufferAttribute([],3)),d}return p===1&&(c=0),new fl(!0,n,r,e,t,p,i,a,s,l,c,u)}var h0=require("three"),m0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,tubularSegments:64,radialSegments:32,p:2,q:3},n.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(n){let{width:r,tube:e,tubularSegments:t,radialSegments:o,p:i,q:a}=n.parameters,s=r*.5;s!==e&&(s-=e);let l=new h0.TorusKnotGeometry(s,e,t,o,i,a);return Object.assign(l,{userData:{...n,type:"TorusKnotGeometry"}})}};var y0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1,isRect:!1},n.parameters);return{shape:n.shape&&n.shape instanceof $e?n.shape:new $e,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(n){let{width:r=100,height:e,cornerRadius:t,depth:o,extrudeBevelSize:i,extrudeBevelSegments:a,isRect:s}=n.parameters,l=n.shape,c=r*.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,h=l.points.length;d<h;d++)l.points[d].roundness=t;l.roundness=t,l.update();let p=xr.create({shape:l,parameters:{roundness:t,depth:o,extrudeBevelSize:i,extrudeBevelSegments:a}});return Object.assign(p,{userData:{...n,type:"TriangleGeometry"}})}};var Me=require("three");function g0(n,r){let e=2*Math.PI;return(n%e+e)%e===(r%e+e)%e}var XA=new Me.Matrix4,KA=new Me.Matrix4;function QA(n,r,e){let t=[new Me.Vector3,new Me.Vector3,new Me.Vector3],o=[new Me.Vector3,new Me.Vector3,new Me.Vector3];return n.extractBasis(t[0],t[1],t[2]),r.extractBasis(o[0],o[1],o[2]),t.forEach((i,a)=>{let s=o[a],l=Me.MathUtils.lerp(i.length(),s.length(),e);i.lerp(s,e).setLength(l)}),new Me.Matrix4().makeBasis(t[0],t[1],t[2])}var x0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,height:100,depth:1,subdivisions:12,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??0),a=r?.shapeData??La.create({parameters:xp}).userData.shape;return{path:n.path??ha.defaultData(),parameters:Object.assign(e,{width:t,height:o,depth:i,extrusion:{...Qc,...e.extrusion}}),shapeData:a}}static build(n){if(n.path.points.length>=2){let e=new pf(n);return Object.assign(e,{userData:{...n,type:"PathGeometry"}})}else return Object.assign(new Me.BufferGeometry,{userData:{...n,type:"PathGeometry"}})}},pf=class extends Me.BufferGeometry{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)||!g0(e.twist,0)||e.startScale!==e.endScale}build(){let e=this._extractPathPoints();if(e.length<2)return;let t=this._computeBasisMatrices(e),{depth:o,offset:i}=this.inputs.parameters.extrusion;o=Math.max(0,Math.min(o,1)),i=Math.max(0,Math.min(i,1));let a=this.inputs.path.isClosed?e.length:e.length-1,s=Math.floor(i*a),l=this.inputs.path.isClosed?Math.ceil((o+i)*a):Math.ceil(Math.min(1,o+i)*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(t[F].clone())}let d=(j,F,H)=>{u[j]=u[j].clone().lerp(u[F],H),p[j]=QA(p[j],p[F],H)},h=0,f=i*a%1;(!this.inputs.path.isClosed||o<=1)&&(f||i===0)&&(h=f,d(0,1,h));let m=0,y=(i+o)*a%1;if((this.inputs.path.isClosed&&o<=1||!this.inputs.path.isClosed&&i+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,h,m);let{bevel:g,bevelSides:v}=this.inputs.parameters.extrusion,O=g>0?this.inputs.parameters.extrusion.capType:"flat",P=5;this.inputs.parameters.extrusion.shape.type==="Custom"&&(P=this.inputs.parameters.extrusion.shape.shapeQuality==="low"?5:12);let{regions:S,infos:T,vertices:I}=this._computeShapePoints(P),x=0,E;O==="round"&&(E=new Dn(this.inputs.shapeData,2*g,g,P,v,void 0,!0),x=E.getAttribute("position").count);let N=0,M=0;T.sort((j,F)=>j.start-F.start),T.forEach(j=>{j.verticesStart=N,j.verticesCount=j.continuous.reduce((F,H,q)=>F+(q===0||!H?2:1),0),M+=j.verticesCount,N=M});let D=M*c,_,B=0;if(this._isOpenEnded()&&O==="flat"){try{_=ro({windingRule:We.ODD,elementType:bt.POLYGONS,polySize:3,vertexSize:2,strict:!0,contours:S})}catch{_=rf}B=_.vertexCount}let z=D+2*B+x*2,U=D+2*B,R={positions:new Float32Array(z*3),normals:new Float32Array(z*3),uvs:new Float32Array(z*2)},W=[];if(T.forEach(j=>{this._extrudeRegion(j,I,p,u,R,W,this._isGeometryClosed()&&!this._isOpenEnded())}),_&&(this._closeEnd(_,D,W,R,p[0],u[0],!1),this._closeEnd(_,D+B,W,R,p[p.length-1],u[u.length-1],!0)),E){R.positions.set(E.getAttribute("position").array,U*3),R.normals.set(E.getAttribute("normal").array,U*3),R.uvs.set(E.getAttribute("uv").array,U*2);for(let q=U;q<U+x;q++)R.uvs[q*2+1]=1e-4;let j=W.length;W.push(...E.getIndex().array.map(q=>q+U)),U+=x,R.positions.set(E.getAttribute("position").array,U*3),R.normals.set(E.getAttribute("normal").array,U*3),R.uvs.set(E.getAttribute("uv").array,U*2);let F=W.length;W.push(...E.getIndex().array.map(q=>q+U)),this.setAttribute("position",new Me.BufferAttribute(R.positions,3)),this.setAttribute("normal",new Me.BufferAttribute(R.normals,3)),this.setAttribute("uv",new Me.BufferAttribute(R.uvs,2)),this.setIndex(W);let H=XA;H.copy(p[p.length-1]).setPosition(u[u.length-1]),this.applyMatrix4OnRange(H,U,z),H.copy(p[0]).setPosition(u[0]).multiply(KA.makeScale(1,1,-1)),this.applyMatrix4OnRange(H,U-x,U),this.reverseIndicesOnRange(j,F)}else this.setAttribute("position",new Me.BufferAttribute(R.positions,3)),this.setAttribute("normal",new Me.BufferAttribute(R.normals,3)),this.setAttribute("uv",new Me.BufferAttribute(R.uvs,2)),this.setIndex(W)}_extractPathPoints(){let t=xu(this.inputs.path).getPoints(this.inputs.path.subdivisions);if(t.length<2)return[];let o=[t[0]];return t.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 t=[],o=e.length,i=this.inputs.path.isClosed,a=new Me.Vector3,s=new Me.Vector3,l=new Me.Vector3,c=new Me.Vector3,u=new Me.Vector3(0,1,0);for(let y=0;y<o;y++){let g=e[y],v;y===0?v=i?e[e.length-2]:g.clone().multiplyScalar(2).sub(e[1]):v=e[y-1];let O;y===o-1?O=i?e[1]:g.clone().multiplyScalar(2).sub(e[y-1]):O=e[y+1];let P=g.clone().sub(v).normalize(),S=O.clone().sub(g).normalize(),T=P.clone().add(S).normalize();l.copy(T),y===0&&(T.equals(u)||T.clone().negate().equals(u))&&u.set(0,0,1);let I=u.clone().cross(T).normalize(),x=T.clone().cross(I).normalize();u.copy(x),c.copy(I),y===0&&(a.copy(x),s.copy(T));let E=new Me.Matrix4().makeBasis(I,x,T);t.push(E)}let p=i?s:l,d=i?a:new Me.Vector3(0,1,0),h=p.clone().cross(c).normalize(),f=Math.acos(d.dot(h));if(isNaN(f))return t;let m=d.clone().cross(h);p.dot(m)>0&&(f*=-1);for(let y=1;y<t.length;y++){let g=new Me.Matrix4().makeRotationZ(f*y/t.length);t[y].multiply(g)}return t}_applyPathModifiers(e,t,o){let i=e.length,{angle:a,twist:s,startScale:l,endScale:c}=this.inputs.parameters.extrusion,u=new Me.Matrix4,p=new Me.Matrix4;return e.forEach((d,h)=>{let f=h===0?0:h===i-1?1:(h-t)/(i-(o===0?0:1)-(t+(1-o)));u.makeRotationZ(Me.MathUtils.lerp(a,a+s,f)*Me.MathUtils.DEG2RAD);let m=Me.MathUtils.lerp(l,c,f);p.makeScale(m,m,m),d.multiply(u).multiply(p)}),e}_computeShapePoints(e=12,t=We.ODD){let o=this.inputs.shapeData,i=o.extractShapePointsToFlatArray([],e),a=o.shapeHoles.map(m=>{let y=m.extractShapePointsToFlatArray([],e),g=[];for(let v=y.length-1;v>=1;v-=2){let O=y[v-1],P=y[v-0];g.push(O,P)}return g}),s;try{s=ro({windingRule:t,elementType:bt.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[i]})}catch{s=pl}let l;try{l=ro({windingRule:We.ODD,elementType:bt.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...a]})}catch{l=tf}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],g=m%2===0?s.vertexCount:0;s.elements.push(y+g)}for(let m=0;m<l.vertexIndices.length;m++){let y=l.vertexIndices[m],g=s.vertexCount;s.vertexIndices.push(y+g)}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,h=-1/0;for(let m=0,y=s.vertexCount;m<y;m++){let g=m*2,v=s.vertices[g+0],O=s.vertices[g+1];v<u&&(u=v),v>p&&(p=v),O<d&&(d=O),O>h&&(h=O)}let f=[];for(let m=s.elementCount-1;m>=0;m--){let y=m>=c,g=m*2,v=s.elements[g+0],O=s.elements[g+1],P=v+O,S={start:v,count:O,normals:[],isHole:y,continuous:[],verticesStart:0,verticesCount:0};f.push(S);let T=v,I=P-1,x=v+1,E=o.roundedCurves.length;do{let N=T-v,M=s.vertices[I*2+0],D=s.vertices[I*2+1],_=s.vertices[T*2+0],B=s.vertices[T*2+1],z=s.vertices[x*2+0],U=s.vertices[x*2+1],R=_-M,W=B-D,j=Math.sqrt(R*R+W*W);R/=j,W/=j;let F=_-z,H=B-U,q=Math.sqrt(F*F+H*H);F/=q,H/=q,S.normals[N*2+0]=-H,S.normals[N*2+1]=F;let re=s.vertexIndices[T];if(Array.isArray(re))S.continuous[N]=!1;else{let[ee,X]=o.getCurveIndexFromVertexId(re-1,!0);if(X>0&&X<1)S.continuous[N]=!0;else{let te=X===1?ee+1:ee-1;te=(te+E)%E;let K=X===1?0:1,Z=o.roundedCurves[ee].getTangent(X),Q=o.roundedCurves[te].getTangent(K);S.continuous[N]=Z.dot(Q)>.95}}y&&(S.normals[N*2+0]*=-1,S.normals[N*2+1]*=-1),[I,T,x]=[T,x,x+1],x>=P&&(x-=O)}while(x!==v+1)}return{regions:[i,...a],infos:f,vertices:s.vertices}}_insertVertex(e,t,o,i,a){let s=t*2,l=t*3;e.positions[l+0]=o.x,e.positions[l+1]=o.y,e.positions[l+2]=o.z,e.normals[l+0]=i.x,e.normals[l+1]=i.y,e.normals[l+2]=i.z,e.uvs[s+0]=a.x,e.uvs[s+1]=a.y}_extrudeRegion(e,t,o,i,a,s,l){let c=new Me.Vector3,u=new Me.Vector3,p=new Me.Vector3,d=new Me.Vector3,h=new Me.Vector2;o.forEach((m,y)=>{let g=i[y],v=e.verticesStart*o.length+e.verticesCount*y;for(let O=0;O<e.count;O++){let P=(e.start+O)*2;if(c.set(t[P+0],t[P+1],0),p.copy(c).applyMatrix4(m).add(g),e.continuous[O])d.set(e.normals[O*2+0],e.normals[O*2+1],0);else{let S=O===0?(e.start+e.count-1)*2:P-2;u.set(t[S+0],t[S+1],0),d.copy(c).sub(u),d.set(-d.y,d.x,0),e.isHole||d.negate()}if(d.applyMatrix4(m).normalize(),h.set(O===0?1:O/e.count,y/(o.length-1)),this._insertVertex(a,v,p,d,h),v++,!e.continuous[O]||O===0){if(O===0)d.set(e.normals[O*2+0],e.normals[O*2+1],0),h.set(0,y/(o.length-1));else{let S=O===e.count-1?e.start*2:P+2;u.set(t[S+0],t[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,h),v++}}});let f=o.length-1;for(let m=0;m<f;m++){let y=e.verticesStart*o.length+e.verticesCount*m,g=e.verticesStart*o.length+e.verticesCount*(m+1),v=0;for(let O=0;O<e.count;O++){(!e.continuous[O]||O===0)&&v++;let P=O===e.count-1?0:v+1,S=y+v,T=y+P,I=g+P,x=g+v;e.isHole?s.push(S,I,T,S,x,I):s.push(S,T,I,S,I,x),v++}}}_closeEnd(e,t,o,i,a,s,l){let c=e.vertexCount,u=new Me.Vector3(0,0,l?-1:1).applyMatrix4(a),p=new Me.Vector3,d=new Me.Vector2;for(let f=0;f<c;f++){let m=2*f;p.set(e.vertices[m+0],e.vertices[m+1],0).applyMatrix4(a).add(s),this._insertVertex(i,t+f,p,u,d)}let h=e.elements;for(let f=0;f<e.elementCount;f++){let m=3*f,y=h[m+0]+t,g=h[m+(l?1:2)]+t,v=h[m+(l?2:1)]+t;o.push(y,g,v)}}applyMatrix4OnRange(e,t,o){let i=e.elements,a=new Me.Matrix3().getNormalMatrix(e).elements,s,l,c,u,p=this.attributes.position,d=this.attributes.normal;if(!p||!d)return;let h=p.array,f=d.array,m=p.itemSize;for(let y=t*m,g=o*m;y<g;y+=m){if(y===t)debugger;s=h[y+0],l=h[y+1],c=h[y+2],u=1/(i[3]*s+i[7]*l+i[11]*c+i[15]),h[y+0]=(i[0]*s+i[4]*l+i[8]*c+i[12])*u,h[y+1]=(i[1]*s+i[5]*l+i[9]*c+i[13])*u,h[y+2]=(i[2]*s+i[6]*l+i[10]*c+i[14])*u,s=f[y+0],l=f[y+1],c=f[y+2],f[y+0]=a[0]*s+a[3]*l+a[6]*c,f[y+1]=a[1]*s+a[4]*l+a[7]*c,f[y+2]=a[2]*s+a[5]*l+a[8]*c}p.needsUpdate=!0,d.needsUpdate=!0}reverseIndicesOnRange(e,t){let o=this.index;if(o){for(let i=e;i<t;i+=3){let a=o.getX(i),s=o.getX(i+1),l=o.getX(i+2);o.setXYZ(i,l,s,a)}o.needsUpdate=!0}}};var fi=require("three"),b0=require("three/examples/jsm/utils/BufferGeometryUtils.js");function v0(){let n=new fi.BufferGeometry;return n.setAttribute("position",new fi.BufferAttribute(new Float32Array([]),3)),n.setIndex(new fi.BufferAttribute(new Uint16Array([]),1)),n}var JA=v0().attributes,eM=12,tM=1,ja=class extends fi.BufferGeometry{constructor(e,t){super();this.charWidths=[];this.charCoords=[];this.wrappedText=[];this.isLowResolution=!1;this.vectorShapes=[];Object.assign(this.attributes,JA),this.userData={parameters:e,type:"TextGeometry"};let o=t.getFont(e.font);o?.isLoaded?(this.font=o,this.update(e)):this.updateFont(e.font,t).then(()=>{this.update(e),t?.requestRender()})}async updateFont(e,t){let o=t.getFont(e);o&&(this.font=o,await o.loadingPromise)}update(e){let t=this.font;if(this.userData={parameters:e,type:"TextGeometry"},!t?.isLoaded){console.warn("Cannot update text because its font is not loaded");return}let{width:o,height:i,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l,text:c,textTransform:u}=e,p=au.getDisplayedValue(c),d=u===2?p.toUpperCase():u===3?p.toLowerCase():p,h=rM(e,t,d),{shapes:f,charWidths:m,charCoords:y}=t.generateShapes(h,e),g=(typeof o=="number"?o:1)*.5,v=(typeof i=="number"?i:1)*.5,O=f.map(T=>new $e().fromShape(T,!0));this.vectorShapes=O;let P=O.map(T=>xr.create({shape:T,parameters:{depth:a,extrudeBevelSegments:l,extrudeBevelSize:s,windingRule:a<=0?We.NONZERO:We.ODD,subdivisions:this.isLowResolution&&a>0?tM:eM}})),S=P.length?(0,b0.mergeBufferGeometries)(P):v0();S.translate(-g,v,0),this.dispose(),this.wrappedText=h,this.charCoords=y,this.charWidths=m,this.deleteAttribute("extrudeNormal"),Object.entries(S.attributes).forEach(([T,I])=>{this.setAttribute(T,I)}),this.setIndex(S.index),this.computeBoundingSphere()}clone(){let e=sr(new fi.BufferGeometry,ja.prototype);return e.copy(this),console.log("CloneGeometry",this,e),e}copy(e){return Object.entries(e.attributes).forEach(([t,o])=>{this.setAttribute(t,o)}),this.setIndex(e.index),this.userData={parameters:{...e.userData.parameters},type:"TextGeometry"},this}async setText(e){this.font&&await this.font.loadingPromise,await this.update({...this.userData.parameters,text:e})}get text(){return this.userData.parameters.text??""}};function rM(n,r,e){let t=[""],o="";for(let i of e)o+=i,i===" "||i===`
3
3
  `?(t[t.length-1]+=o,o="",i===`
4
- `&&t.push("")):r.getTextWidth(t[t.length-1]+o,n)>n.width&&(t[t.length-1].length&&t.push(""),r.getTextWidth(t[t.length-1]+o,n)>n.width&&(o.length===1?(t[t.length-1]+=o,o=""):(t[t.length-1]+=o.slice(0,-1),o=o[o.length-1],t.push(""))));return t[t.length-1]+=o,t}var at=require("three");var w0,_u=new Promise(n=>{w0=n}),S0=!1;var Eu;function P0(){if(S0)return;if(Eu)return Eu;async function n(){let e=!1?".":"https://unpkg.com/@splinetool/modelling-wasm@1.1.6/build",o=import("./process.js"),[i,a]=await Promise.all([o,fetch(`${e}/process.wasm`).then(c=>c.arrayBuffer())]),s=i.default,l=await s({wasmBinary:a});w0(l),S0=!0}return Eu=n(),Eu}var O0=require("three");var oM=["font"];function Jo(n,r,e,t){let o,i,a;n.type==="PathGeometry"?(i=JSON.parse(JSON.stringify(n)),a=[[],["extrusion"]]):(i={...n},a=[[]]);for(let c of a){let u=i;for(let p of c)u=u[p];for(o in u){let p=u[o];mp(p)&&!oM.includes(o)&&(u[o]=r.getVariable(p,[t.uuid,"geometry",...c,o]),mp(u[o])&&(u[o]=1))}}let s={parameters:i,type:i.type};if(i.type==="PathGeometry")s.path=i.path;else if(i.type==="VectorGeometry"){let c=$e.createFromState(i.shape,i.width,i.height);s.shape=c}else if(i.type==="NonParametricGeometry"){if(i.data.groups&&i.data.groups?.forEach(c=>c.materialIndex=Math.max(c.materialIndex??0,0)),s.geometry=new O0.BufferGeometryLoader().parse(i),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(i.type==="SubdivGeometry"){let c=new Nt(i,e);return c.data=n,c}else{if(i.type==="TextGeometry")return new ja(i,r);if(i.type==="UIGeometry")return za.create({parameters:{width:i.width,height:i.height,cornerRadius:i.cornerRadius,cornerType:i.cornerType}})}let l;try{l=ff(s)}catch(c){console.error(c)}if(!l){let c=$e.createFromState(fa.defaultData(),100,100);s.shape=c,l=ff(s)}return l}var C0=require("three"),nM=new C0.Matrix4;function yl(n,r,e,t){let o=n.position.array,i=n.normal.array,a=nM.makeScale(r,e,t).invert().elements,s,l,c;for(var u=0,p=o.length;u<p;u+=3)o[u]*=r,o[u+1]*=e,o[u+2]*=t,s=i[u],l=i[u+1],c=i[u+2],i[u]=a[0]*s+a[4]*l+a[8]*c,i[u+1]=a[1]*s+a[5]*l+a[9]*c,i[u+2]=a[2]*s+a[6]*l+a[10]*c;n.position.needsUpdate=!0,n.normal.needsUpdate=!0}var Bu=new at.Box3,Fa=new at.Vector3,we;_u.then(n=>{we=n});var T0=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),A0=new Uint32Array([0,1,2,3]),M0=new Uint8Array([4]),Nt=class extends at.BufferGeometry{constructor(e,t){super();this.data=e;this.flatShading=t;this.subdivPointer=0;this.rebuild(),this.freeSubdivPointer()}mutateDirectlyScaleBaked(e,t){this.freeSubdivPointer();let o=this.data.scaleBaked,i=bn.div(t,o);this.subdividedGeometry&&yl(this.subdividedGeometry.attributes,...i),this.originalGeometry&&yl(this.originalGeometry.attributes,...i),this.data=e;let a=this.userData.parameters;this.userData.parameters={width:a.width*i[0],height:a.height*i[1],depth:a.depth*i[2]},this.originalGeometry.boundingSphere.center.multiply(Fa.fromArray(i));let s=Fa.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,t,o;try{({originalGeometry:e,subdividedGeometry:t,subdivPointer:o}=Nt.build(this.data,void 0,!this.flatShading,void 0))}catch{e=new at.BoxGeometry(100,100,100),o=0}this.subdivPointer=o,this.originalGeometry=e,this.subdividedGeometry=t??void 0;let i=this.subdividedGeometry??this.originalGeometry;Object.assign(this,i),this.calcBoundingBox()}freeSubdivPointer(){this.subdivPointer&&(Nt.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0)}dispose(){super.dispose(),this.freeSubdivPointer()}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new at.Sphere,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let t=e.attributes.position,o=e.boundingSphere.center;Bu.setFromBufferAttribute(t),Bu.getCenter(o),e.boundingSphere.radius=o.distanceTo(Bu.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),Bu.getSize(Fa);let i={width:Fa.x,height:Fa.y,depth:Fa.z};return this.userData.parameters=i,i}static build(e,t,o,i){let a,s,l,c=e?.phongAngle??35;o===!1&&(c=-1),t&&(we.free_bvh(t),we.free_subdivision_surface(t));try{a=Nt.allocate(e,i)}catch(u){console.error(u,e),a=Nt.allocate({positionWASM:T0,indexWASM:A0,verticesPerFaceWASM:M0},i)}if(we.set_destination_refinement_level(a,0),s=Nt.buildLevel(a,!0,c),e.subdivisions>0)try{we.set_destination_refinement_level(a,e.subdivisions),l=Nt.buildLevel(a,!1,c)}catch{try{we.set_destination_refinement_level(a,e.subdivisions-1),l=Nt.buildLevel(a,!1,c)}catch{l=null}}else l=null;return{subdivPointer:a,originalGeometry:s,subdividedGeometry:l}}static primitiveToQuads(e,t,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 i=e.shape!==void 0||e.path!==void 0?t.geometry:Jo(e,o,!1),a;e.type==="TorusGeometry"&&e.arc===Math.PI*2?a=i.getClosedTorusIndicesForBooleanOrSubdiv():a=i.getIndex();let s,l,c,u;({positions:s,triIndices:u}=gf(i.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,h=d+e.radialSegments*3;p=[d,h]}return{indices:l,verticesPerFace:c}=xf(s,u,i,p),{positions:s,indices:l,verticesPerFace:c}}static allocate(e,t){let o,i,a,s=[],l=[];e.positionWASM&&e.positionWASM.length>0?(o=e.positionWASM,i=e.indexWASM,a=e.verticesPerFaceWASM):(o=T0,i=A0,a=M0);let c=o.length,u=i.length,p=a.length,d=o.length+s.length+l.length,h=i.length+a.length,f=d*Float32Array.BYTES_PER_ELEMENT+h*Uint32Array.BYTES_PER_ELEMENT,m=d*Float32Array.BYTES_PER_ELEMENT,y=h*Uint32Array.BYTES_PER_ELEMENT,g=we._malloc(f),v=new Float32Array(we.HEAPF32.buffer,g,d),O=new Uint32Array(we.HEAPU32.buffer,g+m,h);v.set(o,0),v.set(s,o.length),v.set(l,o.length+s.length),O.set(i,0),O.set(a,i.length);let P;e?.scaleBaked?.some(T=>T!==1)&&(P=new at.Matrix4().makeScale(...e.scaleBaked)),t&&(P?P.premultiply(t):P=t);let S=P?we.alloc_subdivision_surface2(g,c,g+m,u,g+m+i.length*Uint32Array.BYTES_PER_ELEMENT,p,P.elements):we.alloc_subdivision_surface(g,c,g+m,u,g+m+i.length*Uint32Array.BYTES_PER_ELEMENT,p);return we._free(g),S}static buildLevel(e,t,o,i,a){let s=a?we.get_mesh_data2(e,t?we.Level.CONTROL:we.Level.REFINED,o,a.elements):we.get_mesh_data(e,t?we.Level.CONTROL:we.Level.REFINED,o),l=8,c=we.HEAPU32.subarray(s>>2,(s>>2)+l),u=c.subarray(4,4+4),p=0,d=we.HEAPU32[c[p]>>2],h=we.HEAPF32.subarray(d>>2,(d>>2)+u[p]);p++;let f=we.HEAPU32[c[p]>>2],m=we.HEAPF32.subarray(f>>2,(f>>2)+u[p]);p++;let y=we.HEAPU32[c[p]>>2],g=we.HEAPU32.subarray(y>>2,(y>>2)+u[p]);p++;let v=we.HEAPU32[c[p]>>2],O=we.HEAPU32.subarray(v>>2,(v>>2)+u[p]);if(p++,i===void 0){let P=new at.BufferGeometry;if(P.setIndex(new at.Uint32BufferAttribute(O,1)),P.setAttribute("position",new at.Float32BufferAttribute(h,3)),P.setAttribute("normal",new at.Float32BufferAttribute(m,3)),t){P.setAttribute("faceMap",new at.Uint32BufferAttribute(g,1));let S=new Float32Array(m.length/3*4).fill(0);P.setAttribute("color",new at.BufferAttribute(S,4))}return we.free_mesh_data(s),P.userData.type="SubdivGeometry",P}i.getAttribute("position").copyArray(h),i.getAttribute("normal").copyArray(m),i.attributes.position.needsUpdate=!0,i.attributes.normal.needsUpdate=!0,we.free_mesh_data(s)}static freeSubdivPointer(e){we.free_bvh(e),we.free_subdivision_surface(e)}static buildControlCageWireframe(e,t,o){let i=we.get_wireframe_data_for_base_level(e),a=4,s=we.HEAPU32.subarray(i>>2,(i>>2)+a),l=s.subarray(2,2+2),c=0,u=we.HEAPU32[s[c]>>2],p=we.HEAPF32.subarray(u>>2,(u>>2)+l[c]);c++;let d=we.HEAPU32[s[c]>>2],h=we.HEAPU32.subarray(d>>2,(d>>2)+l[c]);if(t===void 0){let f=new at.BufferGeometry;f.setAttribute("position",new at.Float32BufferAttribute(p,3));let m=new Float32Array(p.length);for(let y=0,g=p.length;y<g;)m[y++]=o.r,m[y++]=o.g,m[y++]=o.b;return f.setAttribute("color",new at.BufferAttribute(m,3)),f.setIndex(new at.Uint32BufferAttribute(h,1)),we.free_wireframe_data_for_base_level(i),f}t.getAttribute("position").copyArray(p),t.attributes.position.needsUpdate=!0,we.free_wireframe_data_for_base_level(i)}static updateCollabMesh(e,t,o){let i=t===0;i||we.set_destination_refinement_level(e,t);let a=o?we.get_topological_data2(e,i?we.Level.CONTROL:we.Level.REFINED,o.elements):we.get_topological_data(e,i?we.Level.CONTROL:we.Level.REFINED),s=6,l=we.HEAPU32.subarray(a>>2,(a>>2)+s),c=l.subarray(3,3+3),u=0,p=we.HEAPU32[l[u]>>2],d=new Float32Array(we.HEAPF32.subarray(p>>2,(p>>2)+c[u]));u++;let h=we.HEAPU32[l[u]>>2],f=new Uint32Array(we.HEAPU32.subarray(h>>2,(h>>2)+c[u]));u++;let m=we.HEAPU32[l[u]>>2],y=new Uint8Array(we.HEAPU32.subarray(m>>2,(m>>2)+c[u]));return we.free_topological_data(a),{positions:d,indices:f,verticesPerFace:y}}};var I0=["getX","getY","getZ"];function gf(n,r){let e={},t=r?r.count:n.count,o=0,i=[],a=[],s=1e4;for(let c=0;c<t;c++){let u=r?r.getX(c):c,p="";for(let d=0;d<3;d++)p+=`${~~(n[I0[d]](u)*s)},`;if(p in e)i.push(e[p]);else{for(let d=0;d<3;d++)a.push(n[I0[d]](u));e[p]=o,i.push(o),o++}}let l=[];for(let c=0;c<i.length;c+=3)i[c]===i[c+1]||i[c]===i[c+2]||i[c+1]===i[c+2]||l.push(i[c],i[c+1],i[c+2]);return{positions:a,triIndices:l}}var Lu=new at.Vector3,hf=new at.Vector3,mf=new at.Vector3,yf=new at.Vector3;function xf(n,r,e,t){let o=[],i=[];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((h,f)=>Math.floor(f/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]);n.length=0;let p=0;if(u<0)for(let d=0;d<l.length;d+=2)n.push(l[d],l[d+1],0),o.push(p++);else for(let d=l.length-2;d>=0;d-=2)n.push(l[d],l[d+1],0),o.push(p++);return i.push(p),{indices:o,verticesPerFace:i}}let a=new Float32Array([e.userData.parameters.depth])[0],s=0;for(;s<r.length;){if(e.useNgonForTopBottomFaceDuringBake){let l=0;if((n[r[s]*3+2]===a||n[r[s]*3+2]===0)&&l++,(n[r[s+1]*3+2]===a||n[r[s+1]*3+2]===0)&&l++,(n[r[s+2]*3+2]===a||n[r[s+2]*3+2]===0)&&l++,l===3)break}if(r[s+1]===r[s+3]&&r[s+2]===r[s+5]||r[s+0]===r[s+3]&&r[s+2]===r[s+4]){Lu.set(n[r[s]*3],n[r[s]*3+1],n[r[s]*3+2]),hf.set(n[r[s+1]*3],n[r[s+1]*3+1],n[r[s+1]*3+2]),mf.set(n[r[s+4]*3],n[r[s+4]*3+1],n[r[s+4]*3+2]),yf.set(n[r[s+5]*3],n[r[s+5]*3+1],n[r[s+5]*3+2]),hf.sub(Lu).normalize(),mf.sub(Lu).normalize(),yf.sub(Lu).normalize();let l=hf.cross(mf).dot(yf);Math.abs(l)>.005||t&&t.some((c,u)=>u%2===1?!1:s>=t[u]&&s<t[u+1])?(o.push(r[s],r[s+1],r[s+2]),i.push(3),s+=3):(o.push(r[s],r[s+1],r[s+4],r[s+5]),i.push(4),s+=6)}else o.push(r[s],r[s+1],r[s+2]),i.push(3),s+=3}if(e.useNgonForTopBottomFaceDuringBake){let l=[],c=[],u=0;for(let p=0,d=0;p<n.length;p+=3,d++)n[p+2]===0&&(l.push(d),u++),n[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),i.push(u,u)}return{indices:o,verticesPerFace:i}}var Gr={};Ch(Gr,{calcBoolean:()=>lM,calcBooleanTopological:()=>sM,freeMeshSet:()=>pM,getMeshSet:()=>cM,hasOpenEdges:()=>uM,transformMeshSet:()=>dM});var iM,N0=new Promise(n=>{iM=n});var gl=require("three");var Le,Ua;N0.then(n=>Le=n);function aM(n,r,e){let t,o;n.userData.parameters.type==="TorusGeometry"&&n.userData.parameters.arc===Math.PI*2?o=n.getClosedTorusIndicesForBooleanOrSubdiv():o=n.getIndex();let{positions:i,triIndices:a}=gf(n.getAttribute("position"),o),s;if(r&&e){let{indices:l,verticesPerFace:c}=xf(i,a,n);s=c.length,t=[];for(let u=0,p=0;u<s;u++){t.push(c[u]);for(let d=0;d<c[u];d++)t.push(l[p++])}}else{let l=a.length;t=Array(l+l/3),s=0;for(let c=0,u=0;u<t.length;)t[u++]=3,s++,t[u++]=a[c++],t[u++]=a[c++],t[u++]=a[c++]}return{positions:i,faceIndices:t,nFaces:s}}function D0(n){let r=n.length,e=r*Uint32Array.BYTES_PER_ELEMENT,t=r*Float32Array.BYTES_PER_ELEMENT,o=Number.isInteger(n[0])?e:t,i=Le._malloc(o);return(Number.isInteger(n[0])?new Uint32Array(Le.HEAPU32.buffer,i,r):new Float32Array(Le.HEAPF32.buffer,i,r)).set(n,0),i}function E0(n){switch(n){case 0:return Le.OP.UNION;case 1:return Le.OP.INTERSECTION;case 2:return Le.OP.A_MINUS_B;case 3:return Le.OP.B_MINUS_A;case 4:return Le.OP.SYMMETRIC_DIFFERENCE;case 5:return Le.OP.ALL;default:throw new Error("Unknown boolean operation "+n)}}function sM(n,r){Ua===void 0&&(Ua=Le.init_csg());let e=D0(n),t=Le.csg_calc_topological(Ua,e,n.length,E0(r));Le._free(e);let o=6,i=Le.HEAPU32.subarray(t>>2,(t>>2)+o),a=i.subarray(3,3+3),s=0,l=Le.HEAPU32[i[s]>>2],c=new Float32Array(Le.HEAPF32.subarray(l>>2,(l>>2)+a[s]));s++;let u=Le.HEAPU32[i[s]>>2],p=new Uint32Array(Le.HEAPU32.subarray(u>>2,(u>>2)+a[s]));s++;let d=Le.HEAPU32[i[s]>>2],h=new Uint8Array(Le.HEAPU32.subarray(d>>2,(d>>2)+a[s]));return Le.free_mesh_data(t),{positions:c,indices:p,verticesPerFace:h}}function lM(n,r,e,t){Ua===void 0&&(Ua=Le.init_csg());let o=D0(n),i=Le.csg_calc(Ua,o,n.length,t,E0(r));Le._free(o);let a=5,s=Le.HEAPU32.subarray(i>>2,(i>>2)+a),l=s.subarray(2,2+3),c=0,u=Le.HEAPU32[s[c]>>2],p=Le.HEAPF32.subarray(u>>2,(u>>2)+l[c]);c++;let d=Le.HEAPU32[s[c]>>2],h=Le.HEAPF32.subarray(d>>2,(d>>2)+l[c]);c++;let f=l[c];e.setAttribute("position",new gl.Float32BufferAttribute(p,3)),e.setAttribute("normal",new gl.Float32BufferAttribute(h,3));let m=Le.HEAPF32.subarray((i>>2)+5,(i>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new gl.Sphere),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},Le.free_mesh_data(i),f}function cM(n,r,e){if(Le===void 0)return-1;let t,o,i;if(r&&n.userData.positions!==void 0){let g=n.userData;i=g.verticesPerFace.length,t=g.positions,o=Array(g.verticesPerFace.reduce((v,O)=>v+O,0)+i);for(let v=0,O=0,P=0;v<g.verticesPerFace.length;v++){o[P++]=g.verticesPerFace[v];for(let S=0;S<g.verticesPerFace[v];S++)o[P++]=g.indices[O++]}}else({positions:t,faceIndices:o,nFaces:i}=aM(n,r,e));let a=t.length,s=o.length,l=t.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,h=Le._malloc(u),f=new Float32Array(Le.HEAPF32.buffer,h,l),m=new Uint32Array(Le.HEAPU32.buffer,h+p,c);f.set(t,0),m.set(o,0);let y=Le.get_csg_mesh(h,a,h+p,s,i);return Le._free(h),y}function uM(n){return Le.has_open_edges(n)}function dM(n,r){Le.transform_csg_mesh(n,r.elements)}function pM(n){Le.free_csg_mesh(n)}var fM={ConeGeometry:vx,CubeGeometry:Sx,CylinderGeometry:bx,DodecahedronGeometry:Px,EllipseGeometry:La,HelixGeometry:Zx,IcosahedronGeometry:e0,LatheGeometry:t0,NonParametricGeometry:i0,PolygonGeometry:Nu,PyramidGeometry:a0,RectangleGeometry:za,SphereGeometry:s0,PlaneGeometry:c0,BackdropGeometry:u0,StarGeometry:Du,TextFrameGeometry:p0,TorusGeometry:f0,TorusKnotGeometry:m0,TriangleGeometry:y0,PathGeometry:x0,VectorGeometry:xr},ff=n=>fM[n.type].create(n);function ka(n){return n!==null&&"booleanOp"in n}var Ha=class extends Aa(Ru.Mesh){constructor(){super(...arguments);this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new Ru.Matrix4}updateVisible(e){super.updateVisible(e),this.visible=!ka(this.parent)&&this.visible,ka(this.parent)&&this.parent.invalidateDownstreamBooleanData()}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(Gr.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),ka(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)e instanceof Ha&&(e.freeBooleanPointer(),ka(e)&&e.invalidateUpstreamBooleanData())}updateTransformState(e,t){let o=super.updateTransformState(e,t);return o&&ka(this.parent)&&this.invalidateDownstreamBooleanData(!0),o}onVariableUpdate(e=!1){super.onVariableUpdate(e),ka(this.parent)&&this.invalidateDownstreamBooleanData(!0)}};var Vu=new Wa.Box3;function xl(n,r=0,e=n.count,t,o){let i=1/0,a=1/0,s=1/0,l=-1/0,c=-1/0,u=-1/0;for(let p=r;p<e;p++){let d=n.getX(p),h=n.getY(p),f=n.getZ(p);d<i&&(i=d),h<a&&(a=h),f<s&&(s=f),d>l&&(l=d),h>c&&(c=h),f>u&&(u=f)}Vu.min.set(i,a,s),Vu.max.set(l,c,u),Vu.getCenter(t),Vu.getSize(o).multiplyScalar(.5)}var hM=new Wa.BufferGeometry,mM=new Wa.MeshBasicMaterial,Gt=class extends Ha{constructor(r,e){super(hM,mM),this.super_Entity(r,e)}updateState(r,e){this.updateState_Entity(r,e)}updateEntityBoxSize(r,e){let t=this.geometry.getAttribute("position");t!==void 0?xl(t,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:t.count,r,e):super.updateEntityBoxSize(r,e)}};var on=require("three");var Er=require("three");var tb=require("three");var en=class{constructor(r){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};if(en.uuidContext===null)throw new Error("plz startContext");en.uuidContext===en.globalContext?this.uuid="_gid"+en.uuidContext.nodeContextUuid++:this.uuid="_uid"+en.uuidContext.nodeContextUuid++,this.type=r,this.name=""}static startContext(r){this.uuidContext===null||this.uuidContext===en.globalContext?this.uuidContext=r:console.error("Can't start context twice")}static endContext(r){this.uuidContext!==r&&console.error("Can't end context twice"),this.uuidContext=null}analyze(r,e){e=e??{},r.analyzing=!0,this.build(r.addFlow(e.slot,e.cache,e.context),"v4"),r.clearVertexNodeCode(),r.clearFragmentNodeCode(),r.removeFlow(),r.analyzing=!1}analyzeAndFlow(r,e,t){return t=t??{},this.analyze(r,t),this.flow(r,e,t)}flow(r,e,t){t=t??{},r.addFlow(t.slot,t.cache,t.context);let o={result:this.build(r,e),code:r.clearNodeCode(),extra:r.context.extra};return r.removeFlow(),o}build(r,e,t){e=e??this.getType(r,e);let o=r.getNodeData(t??this);return r.analyzing&&this.appendDepsNode(r,o,e),r.nodes.indexOf(this)===-1&&r.nodes.push(this),this.updateFrame!==void 0&&r.updaters.indexOf(this)===-1&&r.updaters.push(this),this.generate(r,e,t)}updateFrame(r){}generateReadonly(r,e,t,o,i,a){return""}generate(r,e,t,o,i){return""}parse(r,e,t,o){}appendDepsNode(r,e,t){e.deps=(e.deps||0)+1;let o=r.getTypeLength(t);(o>(e.outputMax||0)||this.getType(r,t))&&(e.outputMax=o,e.output=t)}setName(r){this.name=r}getName(){return this.name}getType(r,e){return e==="sampler2D"||e==="samplerCube"?e:this.type}},et=en;et.globalContext={nodeContextUuid:0},et.uuidContext=en.globalContext;var so=require("three");var bl=class{constructor(r){r=r??{},this.name=r.name,this.type=r.type,this.node=r.node,this.size=r.size,this.needsUpdate=r.needsUpdate}get value(){return this.node.value}set value(r){this.node.value=r}};var bf=class{constructor(){this.nodes={};this.keywords={}}add(r){this.nodes[r.name]=r}addKeyword(r,e,t){t=t!==void 0?t:!0,this.keywords[r]={callback:e,cache:t}}remove(r){delete this.nodes[r.name]}removeKeyword(r){delete this.keywords[r]}get(r){return this.nodes[r]}getKeyword(r,e){return this.keywords[r].callback(e)}getKeywordData(r){return this.keywords[r]}contains(r){return this.nodes[r]!==void 0}containsKeyword(r){return this.keywords[r]!==void 0}},jt=new bf;var vf=require("three");var _0=require("three"),ge=class extends et{constructor(e,t){super(e);this.scope="";t=t??{},this.shared=t.shared!==void 0?t.shared:!0,this.unique=t.unique!==void 0?t.unique:!1}build(e,t,o,i){if(t=t??this.getType(e),this.getShared(e,t)){let a=this.getUnique(e,t);a&&this.uuid===void 0&&(this.uuid=_0.MathUtils.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,t),this.generate(e,t,o)):super.build(e,t,o);if(a)return s.name=s.name||super.build(e,t,o),s.name;if(!this.getLabel()&&(!this.getShared(e,l)||e.context.ignoreCache||s.deps===1))return super.build(e,t,o);o=this.getUUID(!1);let c=this.getTemp(e,o);if(c)return e.format(c,l,t);{c=super.generate(e,t,o,s.output,i);let u=this.generate(e,l,o);return e.addNodeCode(c+" = "+u+";"),e.format(c,l,t)}}return super.build(e,t,o)}getShared(e,t){return t!=="sampler2D"&&t!=="samplerCube"&&this.shared}getUnique(e,t){return this.unique}setLabel(e){return this.label=e,this}getLabel(){return this.label}getUUID(e){let t=this.uuid;return typeof this.scope=="string"&&(t=this.scope+"-"+t),t}getTemp(e,t){t=t||this.uuid;let o=e.getVars()[t];return o?o.name:void 0}generate(e,t,o,i,a){return this.getShared(e,t)||console.error("TempNode is not shared"),o=o??this.uuid,e.getTempVar(o,i??this.getType(e),a,this.getLabel()).name}};var tt=class extends ge{constructor(e,t){t=t??{},t.shared=t.shared!==void 0?t.shared:!1;super(e,t);this.readonly=!1}setReadonly(e){return this.readonly=e,this.hashProperties=this.readonly?["value"]:void 0,this}getReadonly(){return this.readonly}generate(e,t,o,i,a,s){o=e.getUUID(o??this.getUUID()),i=i??this.getType(e);let l=e.getNodeData(o);return this.getReadonly()&&this.generateReadonly!==void 0?this.generateReadonly(e,t,o,i,a,s):e.isShader("vertex")?(l.vertex||(l.vertex=e.createVertexUniform(i,this,a,s,this.getLabel())),e.format(l.vertex.name,i,t)):(l.fragment||(l.fragment=e.createFragmentUniform(i,this,a,s,this.getLabel())),e.format(l.fragment.name,i,t))}};var vt=class extends tt{constructor(e=0,t){super("v2");this.nodeType="Vector2";this.value=e instanceof vf.Vector2?e:new vf.Vector2(e,t)}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,t,o,i,a,s){return e.format("vec2("+this.value.x+", "+this.value.y+")",i,t)}};var Sf=require("three");var Zt=class extends tt{constructor(e=0,t,o){super("v3");this.nodeType="Vector3";this.value=e instanceof Sf.Vector3?e:new Sf.Vector3(e,t,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,t,o,i,a,s){return e.format("vec3("+this.value.x+", "+this.value.y+", "+this.value.z+")",i,t)}};var B0=require("three"),Ft=class extends B0.Color{constructor(e,t,o,i){super(e,t,o);this.isColorA=!0;this.a=i}setRGBA(e,t,o,i){super.setRGB(e,t,o),this.a=i}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,t="srgb"){let o;if(e==="transparent")return this.setRGBA(0,0,0,0),this;if(o=/^((?:rgb|hsl)a?)\(([^)]*)\)/.exec(e)){let i,a=o[1],s=o[2];switch(a){case"rgb":case"rgba":if(i=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return this.a=a==="rgba"?parseFloat(i[4]):1,super.setStyle(e,t);break;case"hsl":case"hsla":if(i=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)%\s*,\s*(\d*\.?\d+)%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return this.a=a==="hsla"?parseFloat(i[4]):1,super.setStyle(e,t);break}}return super.setStyle(e,t)}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 br=class extends tt{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof Ft?e:new Ft(e.r,e.g,e.b,e.a)}generateReadonly(e,t,o,i,a,s){return e.format("vec4("+this.value.r+", "+this.value.g+", "+this.value.b+", "+this.value.a+")",i,t)}};var yM=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,L0=/[a-z_0-9]+/gi,re=class extends ge{constructor(e,t,o,i,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,t,o,i)}getShared(e,t){return!this.isMethod}getType(e){return e.getTypeByFormat(this.type)}getInputByName(e){if(this.inputs){let t=this.inputs.length;for(;t--;)if(this.inputs[t].name===e)return this.inputs[t]}}getIncludeByName(e){if(this.includes){let t=this.includes.length;for(;t--;)if(this.includes[t].name===e)return this.includes[t]}}generate(e,t,o,i,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=L0.exec(this.src);)u.push(s);for(let p=0;p<u.length;p++){let d=u[p],h=d[0],f=this.isMethod?!this.getInputByName(h):!0,m=h;if(this.keywords[h]||this.useKeywords&&f&&jt.containsKeyword(h)){let y=this.keywords[h];if(!y){let g=jt.getKeywordData(h);g.cache&&(y=e.keywords[h]),y=y||jt.getKeyword(h,e),g.cache&&(e.keywords[h]=y)}m=y.build(e)}h!==m&&c[d.index+l-1]!=="."&&(c=c.substring(0,d.index+l)+m+c.substring(d.index+h.length+l),l+=m.length-h.length),this.getIncludeByName(m)===void 0&&jt.contains(m)&&e.include(jt.get(m))}return t==="source"?c:this.isMethod?(this.isInterface||e.include(this,void 0,c),this.name):e.format("( "+c+" )",this.getType(e),t)}parse(e,t,o,i){if(this.src=e||"",this.includes=t??[],this.extensions=o??{},this.keywords=i??{},this.isMethod){let a=yM.exec(this.src);if(this.inputs=[],a&&a.length==4){this.type=a[1],this.name=a[2];let s=a[3].match(L0);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 gM=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,wf=class extends ge{constructor(e="",t){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||wf.PI,void 0,void 0,void 0,t)}getType(e){return e.getTypeByFormat(this.type)}parse(e,t,o,i,a){this.src=e||"";let s,l,c="",u=gM.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,t){if(t==="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),t)}generate(e,t,o,i,a){return e.format(this.name,this.getType(e),t)}},qe=wf;qe.PI="PI",qe.PI2="PI2",qe.RECIPROCAL_PI="RECIPROCAL_PI",qe.RECIPROCAL_PI2="RECIPROCAL_PI2",qe.LOG2="LOG2",qe.EPSILON="EPSILON";var xM=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
5
- )*?)}`,"gim"),bM=new RegExp("s*(w*?)s*(w*?)(=|;)","gim"),qa=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 t=this.inputs.length;for(;t--;)if(this.inputs[t].name===e)return this.inputs[t]}generate(e,t,o,i,a){return t==="source"?this.src+";":e.format("( "+this.src+" )",this.getType(e),t)}parse(e=""){this.src=e,this.inputs=[];let t=xM.exec(e);if(t){let o=t[2],i;for(;i=bM.exec(o);)this.inputs.push({type:i[1],name:i[2]});this.name=t[1]}else this.name="";this.type=this.name}};var $a=class extends ge{constructor(e){super("v2",{shared:!1});this.nodeType="UV";this.index=e??0}generate(e,t){e.requires.uv[this.index]=!0;let o=this.index>0?this.index+1:"",i=e.isShader("vertex")?"uv"+o:"vUv"+o;return e.format(i,this.getType(e),t)}};jt.addKeyword("uv",function(){return new $a});jt.addKeyword("uv2",function(){return new $a(1)});var zu=require("three");var hi=class extends ge{constructor(e,t){super("v4");this.nodeType="ColorSpace";this.input=e,this.method=t??hi.LINEAR_TO_LINEAR,this.hashProperties=["method"]}static getEncodingComponents(e){switch(e){case zu.LinearEncoding:return["Linear"];case zu.sRGBEncoding:return["sRGB"];default:return[]}}generate(e,t){let o=this.input.build(e,"v4"),i=this.getType(e),a=hi.Nodes[this.method],s=e.include(a);if(s===hi.LINEAR_TO_LINEAR)return e.format(o,i,t);if(a.inputs?.length===2){let l=this.factor.build(e,"f");return e.format(s+"( "+o+", "+l+" )",i,t)}else return e.format(s+"( "+o+" )",i,t)}fromEncoding(e){let t=hi.getEncodingComponents(e);this.method="LinearTo"+t[0],this.factor=t[1]}fromDecoding(e){let t=hi.getEncodingComponents(e);this.method=t[0]+"ToLinear",this.factor=t[1]}},cr=hi;cr.Nodes={LinearToLinear:new re(["vec4 LinearToLinear( in vec4 value ) {"," return value;","}"].join(`
6
- `)),sRGBToLinear:new re(["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(`
7
- `)),LinearTosRGB:new re(["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(`
8
- `))},cr.LINEAR_TO_LINEAR="LinearToLinear",cr.SRGB_TO_LINEAR="sRGBToLinear",cr.LINEAR_TO_SRGB="LinearTosRGB";var Xe=class extends re{constructor(e="",t,o,i,a){super(e,a,i,o,t);this.nodeType="Expression"}};var R0=require("three"),ur=class extends tt{constructor(e=new R0.Texture,t,o,i){super("v4",{shared:!0});this.nodeType="Texture";this.value=e,this.uv=t??new $a,this.bias=o,this.project=i!==void 0?i:!1}getTexture(e,t){return super.generate(e,t,this.value.uuid,"t")}generate(e,t){if(t==="sampler2D")return this.getTexture(e,t);let o=this.getTexture(e,t),i=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+", "+i+", "+a+" )":l=s+"( "+o+", "+i+" )";let c={include:e.isShader("vertex"),ignoreCache:!0},u=this.getType(e);return e.addContext(c),this.colorSpace=this.colorSpace??new cr(new Xe("",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,t)}};var se=class extends tt{constructor(e){super("f");this.nodeType="Float";this.value=e??0}generateReadonly(e,t,o,i,a,s){return e.format(this.value+(this.value%1?"":".0"),i,t)}};var vl=class extends ge{constructor(e,t){super();this.inputs=[];this.nodeType="FunctionCall";this.value=e,this.inputs=t??[]}getFunction(){return this.value}getType(e){return this.value.getType(e)}generate(e,t,o,i,a){i=this.getType(e);let s=this.value,l=s.build(e,t)+"( ",c=[];if(s.inputs){for(let u=0;u<s.inputs.length;u++){let p=s.inputs[u],d=this.inputs[u]||this.inputs[p.name];c.push(d.build(e,e.getTypeByFormat(p.type)))}l+=c.join(", ")+" )"}return e.format(l,i,t)}};var Pf=class extends ge{constructor(e,t,o=Pf.ADD){super();this.nodeType="Operator";this.type=e.type,this.a=e,this.b=t,this.op=o}getType(e){let t=this.a.getType(e),o=this.b.getType(e);return e.isTypeMatrix(t)?"v4":e.getTypeLength(o)>e.getTypeLength(t)?o:t}generate(e,t){let o=this.getType(e);this.type=o;let i=this.a.build(e,o),a=this.b.build(e,o);return e.format("( "+i+" "+this.op+" "+a+" )",o,t)}},$t=Pf;$t.ADD="+",$t.SUB="-",$t.MUL="*",$t.DIV="/";var rt=class extends ge{constructor(e,t=rt.ABS,o,i){super();this.nodeType="Math";this.a=e,typeof t!="string"?this.b=t:i=t,typeof o!="string"?this.c=o:i=o,this.method=i,this.hashProperties=["method"]}getNumInputs(e){switch(this.method){case rt.MIX:case rt.CLAMP:case rt.REFRACT:case rt.SMOOTHSTEP:case rt.FACEFORWARD:return 3;case rt.MIN:case rt.MAX:case rt.MOD:case rt.STEP:case rt.REFLECT:case rt.DISTANCE:case rt.DOT:case rt.CROSS:case rt.POW:return 2;default:return 1}}getInputType(e){let t=e.getTypeLength(this.a.getType(e)),o=this.b?e.getTypeLength(this.b.getType(e)):0,i=this.c?e.getTypeLength(this.c.getType(e)):0;return t>o&&t>i?this.a.getType(e):o>i?this.b.getType(e):this.c.getType(e)}getType(e){switch(this.method){case rt.LENGTH:case rt.DISTANCE:case rt.DOT:return"f";case rt.CROSS:return"v3"}return this.getInputType(e)}generate(e,t){let o,i,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),p=this.getType(e);switch(this.type=p,this.method){case rt.NEGATE:return e.format("( -"+this.a.build(e,u)+" )",u,t);case rt.INVERT:return e.format("( 1.0 - "+this.a.build(e,u)+" )",u,t);case rt.CROSS:o=this.a.build(e,"v3"),i=this.b.build(e,"v3");break;case rt.STEP:o=this.a.build(e,s===1?"f":u),i=this.b.build(e,u);break;case rt.MIN:case rt.MAX:case rt.MOD:o=this.a.build(e,u),i=this.b.build(e,l===1?"f":u);break;case rt.REFRACT:o=this.a.build(e,u),i=this.b.build(e,u),a=this.c.build(e,"f");break;case rt.MIX:o=this.a.build(e,u),i=this.b.build(e,u),a=this.c.build(e,c===1?"f":u);break;default:o=this.a.build(e,u),this.b&&(i=this.b.build(e,u)),this.c&&(a=this.c.build(e,u));break}let d=[];d.push(o),i&&d.push(i),a&&d.push(a);let h=this.getNumInputs(e);if(d.length!==h)throw Error(`Arguments not match used in "${this.method}". Require ${h}, currently ${d.length}.`);return e.format(this.method+"( "+d.join(", ")+" )",p,t)}},Te=rt;Te.RAD="radians",Te.DEG="degrees",Te.EXP="exp",Te.EXP2="exp2",Te.LOG="log",Te.LOG2="log2",Te.SQRT="sqrt",Te.INV_SQRT="inversesqrt",Te.FLOOR="floor",Te.CEIL="ceil",Te.NORMALIZE="normalize",Te.FRACT="fract",Te.SATURATE="saturate",Te.SIN="sin",Te.COS="cos",Te.TAN="tan",Te.ASIN="asin",Te.ACOS="acos",Te.ARCTAN="atan",Te.ABS="abs",Te.SIGN="sign",Te.LENGTH="length",Te.NEGATE="negate",Te.INVERT="invert",Te.MIN="min",Te.MAX="max",Te.MOD="mod",Te.STEP="step",Te.REFLECT="reflect",Te.DISTANCE="distance",Te.DOT="dot",Te.CROSS="cross",Te.POW="pow",Te.MIX="mix",Te.CLAMP="clamp",Te.REFRACT="refract",Te.SMOOTHSTEP="smoothstep",Te.FACEFORWARD="faceforward";var Ya=class extends ge{constructor(e,t,o){super("v4");this.nodeType="TextureCubeUV";this.value=e,this.uv=t,this.bias=o}bilinearCubeUV(e,t,o,i){let a=new vl(Ya.Nodes.bilinearCubeUV,[t,o,i]);this.colorSpaceTL=this.colorSpaceTL??new cr(new Xe("","v4")),this.colorSpaceTL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTL.input.parse(a.build(e)+".tl"),this.colorSpaceTR=this.colorSpaceTR??new cr(new Xe("","v4")),this.colorSpaceTR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTR.input.parse(a.build(e)+".tr"),this.colorSpaceBL=this.colorSpaceBL??new cr(new Xe("","v4")),this.colorSpaceBL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBL.input.parse(a.build(e)+".bl"),this.colorSpaceBR=this.colorSpaceBR??new cr(new Xe("","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 Xe(this.colorSpaceTL.build(e,"v4"),"v4"),this.colorSpaceTRExp=new Xe(this.colorSpaceTR.build(e,"v4"),"v4"),this.colorSpaceBLExp=new Xe(this.colorSpaceBL.build(e,"v4"),"v4"),this.colorSpaceBRExp=new Xe(this.colorSpaceBR.build(e,"v4"),"v4"),e.removeContext();let l=new Xe("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,t){if(e.isShader("fragment")){let o=this.uv,i=this.bias||e.context.roughness,a=new vl(Ya.Nodes.roughnessToMip,[i]),s=new Te(a,Ya.Nodes.m0,Ya.Nodes.cubeUV_maxMipLevel,Te.CLAMP),l=new Te(s,Te.FLOOR),c=new Te(s,Te.FRACT),u=this.bilinearCubeUV(e,this.value,o,l),p=this.bilinearCubeUV(e,this.value,o,new $t(l,new se(1).setReadonly(!0),$t.ADD)),d=new Te(u,p,c,Te.MIX);return e.format(d.build(e),"v4",t)}else return console.warn("TextureCubeUVNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),t)}},Xa=Ya;Xa.Nodes=function(){let e=new qa(`struct TextureCubeUVData {
4
+ `&&t.push("")):r.getTextWidth(t[t.length-1]+o,n)>n.width&&(t[t.length-1].length&&t.push(""),r.getTextWidth(t[t.length-1]+o,n)>n.width&&(o.length===1?(t[t.length-1]+=o,o=""):(t[t.length-1]+=o.slice(0,-1),o=o[o.length-1],t.push(""))));return t[t.length-1]+=o,t}var at=require("three");var w0,_u=new Promise(n=>{w0=n}),S0=!1;var Eu;function P0(){if(S0)return;if(Eu)return Eu;async function n(){let e=!1?".":"https://unpkg.com/@splinetool/modelling-wasm@1.1.8/build",o=import("./process.js"),[i,a]=await Promise.all([o,fetch(`${e}/process.wasm`).then(c=>c.arrayBuffer())]),s=i.default,l=await s({wasmBinary:a});w0(l),S0=!0}return Eu=n(),Eu}var O0=require("three");var oM=["font"];function Jo(n,r,e,t){let o,i,a;n.type==="PathGeometry"?(i=JSON.parse(JSON.stringify(n)),a=[[],["extrusion"]]):(i={...n},a=[[]]);for(let c of a){let u=i;for(let p of c)u=u[p];for(o in u){let p=u[o];mp(p)&&!oM.includes(o)&&(u[o]=r.getVariable(p,[t.uuid,"geometry",...c,o]),mp(u[o])&&(u[o]=1))}}let s={parameters:i,type:i.type};if(i.type==="PathGeometry")s.path=i.path;else if(i.type==="VectorGeometry"){let c=$e.createFromState(i.shape,i.width,i.height);s.shape=c}else if(i.type==="NonParametricGeometry"){if(i.data.groups&&i.data.groups?.forEach(c=>c.materialIndex=Math.max(c.materialIndex??0,0)),s.geometry=new O0.BufferGeometryLoader().parse(i),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(i.type==="SubdivGeometry"){let c=new Nt(i,e);return c.data=n,c}else{if(i.type==="TextGeometry")return new ja(i,r);if(i.type==="UIGeometry")return za.create({parameters:{width:i.width,height:i.height,cornerRadius:i.cornerRadius,cornerType:i.cornerType}})}let l;try{l=ff(s)}catch(c){console.error(c)}if(!l){let c=$e.createFromState(fa.defaultData(),100,100);s.shape=c,l=ff(s)}return l}var C0=require("three"),nM=new C0.Matrix4;function yl(n,r,e,t){let o=n.position.array,i=n.normal.array,a=nM.makeScale(r,e,t).invert().elements,s,l,c;for(var u=0,p=o.length;u<p;u+=3)o[u]*=r,o[u+1]*=e,o[u+2]*=t,s=i[u],l=i[u+1],c=i[u+2],i[u]=a[0]*s+a[4]*l+a[8]*c,i[u+1]=a[1]*s+a[5]*l+a[9]*c,i[u+2]=a[2]*s+a[6]*l+a[10]*c;n.position.needsUpdate=!0,n.normal.needsUpdate=!0}var Bu=new at.Box3,Fa=new at.Vector3,we;_u.then(n=>{we=n});var T0=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),A0=new Uint32Array([0,1,2,3]),M0=new Uint8Array([4]),Nt=class extends at.BufferGeometry{constructor(e,t){super();this.data=e;this.flatShading=t;this.subdivPointer=0;this.rebuild(),this.freeSubdivPointer()}mutateDirectlyScaleBaked(e,t){this.freeSubdivPointer();let o=this.data.scaleBaked,i=bn.div(t,o);this.subdividedGeometry&&yl(this.subdividedGeometry.attributes,...i),this.originalGeometry&&yl(this.originalGeometry.attributes,...i),this.data=e;let a=this.userData.parameters;this.userData.parameters={width:a.width*i[0],height:a.height*i[1],depth:a.depth*i[2]},this.originalGeometry.boundingSphere.center.multiply(Fa.fromArray(i));let s=Fa.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,t,o;try{({originalGeometry:e,subdividedGeometry:t,subdivPointer:o}=Nt.build(this.data,void 0,!this.flatShading,void 0))}catch{e=new at.BoxGeometry(100,100,100),o=0}this.subdivPointer=o,this.originalGeometry=e,this.subdividedGeometry=t??void 0;let i=this.subdividedGeometry??this.originalGeometry;Object.assign(this,i),this.calcBoundingBox()}freeSubdivPointer(){this.subdivPointer&&(Nt.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0)}dispose(){super.dispose(),this.freeSubdivPointer()}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new at.Sphere,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let t=e.attributes.position,o=e.boundingSphere.center;Bu.setFromBufferAttribute(t),Bu.getCenter(o),e.boundingSphere.radius=o.distanceTo(Bu.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),Bu.getSize(Fa);let i={width:Fa.x,height:Fa.y,depth:Fa.z};return this.userData.parameters=i,i}static build(e,t,o,i){let a,s,l,c=e?.phongAngle??35;o===!1&&(c=-1),t&&(we.free_bvh(t),we.free_subdivision_surface(t));try{a=Nt.allocate(e,i)}catch(u){console.error(u,e),a=Nt.allocate({positionWASM:T0,indexWASM:A0,verticesPerFaceWASM:M0},i)}if(we.set_destination_refinement_level(a,0),s=Nt.buildLevel(a,!0,c),e.subdivisions>0)try{we.set_destination_refinement_level(a,e.subdivisions),l=Nt.buildLevel(a,!1,c)}catch{try{we.set_destination_refinement_level(a,e.subdivisions-1),l=Nt.buildLevel(a,!1,c)}catch{l=null}}else l=null;return{subdivPointer:a,originalGeometry:s,subdividedGeometry:l}}static primitiveToQuads(e,t,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 i=e.shape!==void 0||e.path!==void 0?t.geometry:Jo(e,o,!1),a;e.type==="TorusGeometry"&&e.arc===Math.PI*2?a=i.getClosedTorusIndicesForBooleanOrSubdiv():a=i.getIndex();let s,l,c,u;({positions:s,triIndices:u}=gf(i.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,h=d+e.radialSegments*3;p=[d,h]}return{indices:l,verticesPerFace:c}=xf(s,u,i,p),{positions:s,indices:l,verticesPerFace:c}}static allocate(e,t){let o,i,a,s=[],l=[];e.positionWASM&&e.positionWASM.length>0?(o=e.positionWASM,i=e.indexWASM,a=e.verticesPerFaceWASM):(o=T0,i=A0,a=M0);let c=o.length,u=i.length,p=a.length,d=o.length+s.length+l.length,h=i.length+a.length,f=d*Float32Array.BYTES_PER_ELEMENT+h*Uint32Array.BYTES_PER_ELEMENT,m=d*Float32Array.BYTES_PER_ELEMENT,y=h*Uint32Array.BYTES_PER_ELEMENT,g=we._malloc(f),v=new Float32Array(we.HEAPF32.buffer,g,d),O=new Uint32Array(we.HEAPU32.buffer,g+m,h);v.set(o,0),v.set(s,o.length),v.set(l,o.length+s.length),O.set(i,0),O.set(a,i.length);let P;e?.scaleBaked?.some(T=>T!==1)&&(P=new at.Matrix4().makeScale(...e.scaleBaked)),t&&(P?P.premultiply(t):P=t);let S=P?we.alloc_subdivision_surface2(g,c,g+m,u,g+m+i.length*Uint32Array.BYTES_PER_ELEMENT,p,P.elements):we.alloc_subdivision_surface(g,c,g+m,u,g+m+i.length*Uint32Array.BYTES_PER_ELEMENT,p);return we._free(g),S}static buildLevel(e,t,o,i,a){let s=a?we.get_mesh_data2(e,t?we.Level.CONTROL:we.Level.REFINED,o,a.elements):we.get_mesh_data(e,t?we.Level.CONTROL:we.Level.REFINED,o),l=8,c=we.HEAPU32.subarray(s>>2,(s>>2)+l),u=c.subarray(4,4+4),p=0,d=we.HEAPU32[c[p]>>2],h=we.HEAPF32.subarray(d>>2,(d>>2)+u[p]);p++;let f=we.HEAPU32[c[p]>>2],m=we.HEAPF32.subarray(f>>2,(f>>2)+u[p]);p++;let y=we.HEAPU32[c[p]>>2],g=we.HEAPU32.subarray(y>>2,(y>>2)+u[p]);p++;let v=we.HEAPU32[c[p]>>2],O=we.HEAPU32.subarray(v>>2,(v>>2)+u[p]);if(p++,i===void 0){let P=new at.BufferGeometry;if(P.setIndex(new at.Uint32BufferAttribute(O,1)),P.setAttribute("position",new at.Float32BufferAttribute(h,3)),P.setAttribute("normal",new at.Float32BufferAttribute(m,3)),t){P.setAttribute("faceMap",new at.Uint32BufferAttribute(g,1));let S=new Float32Array(m.length/3*4).fill(0);P.setAttribute("color",new at.BufferAttribute(S,4))}return we.free_mesh_data(s),P.userData.type="SubdivGeometry",P}i.getAttribute("position").copyArray(h),i.getAttribute("normal").copyArray(m),i.attributes.position.needsUpdate=!0,i.attributes.normal.needsUpdate=!0,we.free_mesh_data(s)}static freeSubdivPointer(e){we.free_bvh(e),we.free_subdivision_surface(e)}static buildControlCageWireframe(e,t,o){let i=we.get_wireframe_data_for_base_level(e),a=4,s=we.HEAPU32.subarray(i>>2,(i>>2)+a),l=s.subarray(2,2+2),c=0,u=we.HEAPU32[s[c]>>2],p=we.HEAPF32.subarray(u>>2,(u>>2)+l[c]);c++;let d=we.HEAPU32[s[c]>>2],h=we.HEAPU32.subarray(d>>2,(d>>2)+l[c]);if(t===void 0){let f=new at.BufferGeometry;f.setAttribute("position",new at.Float32BufferAttribute(p,3));let m=new Float32Array(p.length);for(let y=0,g=p.length;y<g;)m[y++]=o.r,m[y++]=o.g,m[y++]=o.b;return f.setAttribute("color",new at.BufferAttribute(m,3)),f.setIndex(new at.Uint32BufferAttribute(h,1)),we.free_wireframe_data_for_base_level(i),f}t.getAttribute("position").copyArray(p),t.attributes.position.needsUpdate=!0,we.free_wireframe_data_for_base_level(i)}static updateCollabMesh(e,t,o){let i=t===0;i||we.set_destination_refinement_level(e,t);let a=o?we.get_topological_data2(e,i?we.Level.CONTROL:we.Level.REFINED,o.elements):we.get_topological_data(e,i?we.Level.CONTROL:we.Level.REFINED),s=6,l=we.HEAPU32.subarray(a>>2,(a>>2)+s),c=l.subarray(3,3+3),u=0,p=we.HEAPU32[l[u]>>2],d=new Float32Array(we.HEAPF32.subarray(p>>2,(p>>2)+c[u]));u++;let h=we.HEAPU32[l[u]>>2],f=new Uint32Array(we.HEAPU32.subarray(h>>2,(h>>2)+c[u]));u++;let m=we.HEAPU32[l[u]>>2],y=new Uint8Array(we.HEAPU32.subarray(m>>2,(m>>2)+c[u]));return we.free_topological_data(a),{positions:d,indices:f,verticesPerFace:y}}};var I0=["getX","getY","getZ"];function gf(n,r){let e={},t=r?r.count:n.count,o=0,i=[],a=[],s=1e4;for(let c=0;c<t;c++){let u=r?r.getX(c):c,p="";for(let d=0;d<3;d++)p+=`${~~(n[I0[d]](u)*s)},`;if(p in e)i.push(e[p]);else{for(let d=0;d<3;d++)a.push(n[I0[d]](u));e[p]=o,i.push(o),o++}}let l=[];for(let c=0;c<i.length;c+=3)i[c]===i[c+1]||i[c]===i[c+2]||i[c+1]===i[c+2]||l.push(i[c],i[c+1],i[c+2]);return{positions:a,triIndices:l}}var Lu=new at.Vector3,hf=new at.Vector3,mf=new at.Vector3,yf=new at.Vector3;function xf(n,r,e,t){let o=[],i=[];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((h,f)=>Math.floor(f/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]);n.length=0;let p=0;if(u<0)for(let d=0;d<l.length;d+=2)n.push(l[d],l[d+1],0),o.push(p++);else for(let d=l.length-2;d>=0;d-=2)n.push(l[d],l[d+1],0),o.push(p++);return i.push(p),{indices:o,verticesPerFace:i}}let a=new Float32Array([e.userData.parameters.depth])[0],s=0;for(;s<r.length;){if(e.useNgonForTopBottomFaceDuringBake){let l=0;if((n[r[s]*3+2]===a||n[r[s]*3+2]===0)&&l++,(n[r[s+1]*3+2]===a||n[r[s+1]*3+2]===0)&&l++,(n[r[s+2]*3+2]===a||n[r[s+2]*3+2]===0)&&l++,l===3)break}if(r[s+1]===r[s+3]&&r[s+2]===r[s+5]||r[s+0]===r[s+3]&&r[s+2]===r[s+4]){Lu.set(n[r[s]*3],n[r[s]*3+1],n[r[s]*3+2]),hf.set(n[r[s+1]*3],n[r[s+1]*3+1],n[r[s+1]*3+2]),mf.set(n[r[s+4]*3],n[r[s+4]*3+1],n[r[s+4]*3+2]),yf.set(n[r[s+5]*3],n[r[s+5]*3+1],n[r[s+5]*3+2]),hf.sub(Lu).normalize(),mf.sub(Lu).normalize(),yf.sub(Lu).normalize();let l=hf.cross(mf).dot(yf);Math.abs(l)>.005||t&&t.some((c,u)=>u%2===1?!1:s>=t[u]&&s<t[u+1])?(o.push(r[s],r[s+1],r[s+2]),i.push(3),s+=3):(o.push(r[s],r[s+1],r[s+4],r[s+5]),i.push(4),s+=6)}else o.push(r[s],r[s+1],r[s+2]),i.push(3),s+=3}if(e.useNgonForTopBottomFaceDuringBake){let l=[],c=[],u=0;for(let p=0,d=0;p<n.length;p+=3,d++)n[p+2]===0&&(l.push(d),u++),n[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),i.push(u,u)}return{indices:o,verticesPerFace:i}}var Gr={};Ch(Gr,{calcBoolean:()=>lM,calcBooleanTopological:()=>sM,freeMeshSet:()=>pM,getMeshSet:()=>cM,hasOpenEdges:()=>uM,transformMeshSet:()=>dM});var iM,N0=new Promise(n=>{iM=n});var gl=require("three");var Le,Ua;N0.then(n=>Le=n);function aM(n,r,e){let t,o;n.userData.parameters.type==="TorusGeometry"&&n.userData.parameters.arc===Math.PI*2?o=n.getClosedTorusIndicesForBooleanOrSubdiv():o=n.getIndex();let{positions:i,triIndices:a}=gf(n.getAttribute("position"),o),s;if(r&&e){let{indices:l,verticesPerFace:c}=xf(i,a,n);s=c.length,t=[];for(let u=0,p=0;u<s;u++){t.push(c[u]);for(let d=0;d<c[u];d++)t.push(l[p++])}}else{let l=a.length;t=Array(l+l/3),s=0;for(let c=0,u=0;u<t.length;)t[u++]=3,s++,t[u++]=a[c++],t[u++]=a[c++],t[u++]=a[c++]}return{positions:i,faceIndices:t,nFaces:s}}function D0(n){let r=n.length,e=r*Uint32Array.BYTES_PER_ELEMENT,t=r*Float32Array.BYTES_PER_ELEMENT,o=Number.isInteger(n[0])?e:t,i=Le._malloc(o);return(Number.isInteger(n[0])?new Uint32Array(Le.HEAPU32.buffer,i,r):new Float32Array(Le.HEAPF32.buffer,i,r)).set(n,0),i}function E0(n){switch(n){case 0:return Le.OP.UNION;case 1:return Le.OP.INTERSECTION;case 2:return Le.OP.A_MINUS_B;case 3:return Le.OP.B_MINUS_A;case 4:return Le.OP.SYMMETRIC_DIFFERENCE;case 5:return Le.OP.ALL;default:throw new Error("Unknown boolean operation "+n)}}function sM(n,r){Ua===void 0&&(Ua=Le.init_csg());let e=D0(n),t=Le.csg_calc_topological(Ua,e,n.length,E0(r));Le._free(e);let o=6,i=Le.HEAPU32.subarray(t>>2,(t>>2)+o),a=i.subarray(3,3+3),s=0,l=Le.HEAPU32[i[s]>>2],c=new Float32Array(Le.HEAPF32.subarray(l>>2,(l>>2)+a[s]));s++;let u=Le.HEAPU32[i[s]>>2],p=new Uint32Array(Le.HEAPU32.subarray(u>>2,(u>>2)+a[s]));s++;let d=Le.HEAPU32[i[s]>>2],h=new Uint8Array(Le.HEAPU32.subarray(d>>2,(d>>2)+a[s]));return Le.free_mesh_data(t),{positions:c,indices:p,verticesPerFace:h}}function lM(n,r,e,t){Ua===void 0&&(Ua=Le.init_csg());let o=D0(n),i=Le.csg_calc(Ua,o,n.length,t,E0(r));Le._free(o);let a=5,s=Le.HEAPU32.subarray(i>>2,(i>>2)+a),l=s.subarray(2,2+3),c=0,u=Le.HEAPU32[s[c]>>2],p=Le.HEAPF32.subarray(u>>2,(u>>2)+l[c]);c++;let d=Le.HEAPU32[s[c]>>2],h=Le.HEAPF32.subarray(d>>2,(d>>2)+l[c]);c++;let f=l[c];e.setAttribute("position",new gl.Float32BufferAttribute(p,3)),e.setAttribute("normal",new gl.Float32BufferAttribute(h,3));let m=Le.HEAPF32.subarray((i>>2)+5,(i>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new gl.Sphere),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},Le.free_mesh_data(i),f}function cM(n,r,e){if(Le===void 0)return-1;let t,o,i;if(r&&n.userData.positions!==void 0){let g=n.userData;i=g.verticesPerFace.length,t=g.positions,o=Array(g.verticesPerFace.reduce((v,O)=>v+O,0)+i);for(let v=0,O=0,P=0;v<g.verticesPerFace.length;v++){o[P++]=g.verticesPerFace[v];for(let S=0;S<g.verticesPerFace[v];S++)o[P++]=g.indices[O++]}}else({positions:t,faceIndices:o,nFaces:i}=aM(n,r,e));let a=t.length,s=o.length,l=t.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,h=Le._malloc(u),f=new Float32Array(Le.HEAPF32.buffer,h,l),m=new Uint32Array(Le.HEAPU32.buffer,h+p,c);f.set(t,0),m.set(o,0);let y=Le.get_csg_mesh(h,a,h+p,s,i);return Le._free(h),y}function uM(n){return Le.has_open_edges(n)}function dM(n,r){Le.transform_csg_mesh(n,r.elements)}function pM(n){Le.free_csg_mesh(n)}var fM={ConeGeometry:vx,CubeGeometry:Sx,CylinderGeometry:bx,DodecahedronGeometry:Px,EllipseGeometry:La,HelixGeometry:Zx,IcosahedronGeometry:e0,LatheGeometry:t0,NonParametricGeometry:i0,PolygonGeometry:Nu,PyramidGeometry:a0,RectangleGeometry:za,SphereGeometry:s0,PlaneGeometry:c0,BackdropGeometry:u0,StarGeometry:Du,TextFrameGeometry:p0,TorusGeometry:f0,TorusKnotGeometry:m0,TriangleGeometry:y0,PathGeometry:x0,VectorGeometry:xr},ff=n=>fM[n.type].create(n);function ka(n){return n!==null&&"booleanOp"in n}var Ha=class extends Aa(Ru.Mesh){constructor(){super(...arguments);this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new Ru.Matrix4}updateVisible(e){super.updateVisible(e),this.visible=!ka(this.parent)&&this.visible,ka(this.parent)&&this.parent.invalidateDownstreamBooleanData()}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(Gr.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),ka(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)e instanceof Ha&&(e.freeBooleanPointer(),ka(e)&&e.invalidateUpstreamBooleanData())}updateTransformState(e,t){let o=super.updateTransformState(e,t);return o&&ka(this.parent)&&this.invalidateDownstreamBooleanData(!0),o}onVariableUpdate(e=!1){super.onVariableUpdate(e),ka(this.parent)&&this.invalidateDownstreamBooleanData(!0)}};var Vu=new Wa.Box3;function xl(n,r=0,e=n.count,t,o){let i=1/0,a=1/0,s=1/0,l=-1/0,c=-1/0,u=-1/0;for(let p=r;p<e;p++){let d=n.getX(p),h=n.getY(p),f=n.getZ(p);d<i&&(i=d),h<a&&(a=h),f<s&&(s=f),d>l&&(l=d),h>c&&(c=h),f>u&&(u=f)}Vu.min.set(i,a,s),Vu.max.set(l,c,u),Vu.getCenter(t),Vu.getSize(o).multiplyScalar(.5)}var hM=new Wa.BufferGeometry,mM=new Wa.MeshBasicMaterial,Gt=class extends Ha{constructor(r,e){super(hM,mM),this.super_Entity(r,e)}updateState(r,e){this.updateState_Entity(r,e)}updateEntityBoxSize(r,e){let t=this.geometry.getAttribute("position");t!==void 0?xl(t,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:t.count,r,e):super.updateEntityBoxSize(r,e)}};var on=require("three");var Er=require("three");var tb=require("three");var en=class{constructor(r){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};if(en.uuidContext===null)throw new Error("plz startContext");en.uuidContext===en.globalContext?this.uuid="_gid"+en.uuidContext.nodeContextUuid++:this.uuid="_uid"+en.uuidContext.nodeContextUuid++,this.type=r,this.name=""}static startContext(r){this.uuidContext===null||this.uuidContext===en.globalContext?this.uuidContext=r:console.error("Can't start context twice")}static endContext(r){this.uuidContext!==r&&console.error("Can't end context twice"),this.uuidContext=null}analyze(r,e){e=e??{},r.analyzing=!0,this.build(r.addFlow(e.slot,e.cache,e.context),"v4"),r.clearVertexNodeCode(),r.clearFragmentNodeCode(),r.removeFlow(),r.analyzing=!1}analyzeAndFlow(r,e,t){return t=t??{},this.analyze(r,t),this.flow(r,e,t)}flow(r,e,t){t=t??{},r.addFlow(t.slot,t.cache,t.context);let o={result:this.build(r,e),code:r.clearNodeCode(),extra:r.context.extra};return r.removeFlow(),o}build(r,e,t){e=e??this.getType(r,e);let o=r.getNodeData(t??this);return r.analyzing&&this.appendDepsNode(r,o,e),r.nodes.indexOf(this)===-1&&r.nodes.push(this),this.updateFrame!==void 0&&r.updaters.indexOf(this)===-1&&r.updaters.push(this),this.generate(r,e,t)}updateFrame(r){}generateReadonly(r,e,t,o,i,a){return""}generate(r,e,t,o,i){return""}parse(r,e,t,o){}appendDepsNode(r,e,t){e.deps=(e.deps||0)+1;let o=r.getTypeLength(t);(o>(e.outputMax||0)||this.getType(r,t))&&(e.outputMax=o,e.output=t)}setName(r){this.name=r}getName(){return this.name}getType(r,e){return e==="sampler2D"||e==="samplerCube"?e:this.type}},et=en;et.globalContext={nodeContextUuid:0},et.uuidContext=en.globalContext;var so=require("three");var bl=class{constructor(r){r=r??{},this.name=r.name,this.type=r.type,this.node=r.node,this.size=r.size,this.needsUpdate=r.needsUpdate}get value(){return this.node.value}set value(r){this.node.value=r}};var bf=class{constructor(){this.nodes={};this.keywords={}}add(r){this.nodes[r.name]=r}addKeyword(r,e,t){t=t!==void 0?t:!0,this.keywords[r]={callback:e,cache:t}}remove(r){delete this.nodes[r.name]}removeKeyword(r){delete this.keywords[r]}get(r){return this.nodes[r]}getKeyword(r,e){return this.keywords[r].callback(e)}getKeywordData(r){return this.keywords[r]}contains(r){return this.nodes[r]!==void 0}containsKeyword(r){return this.keywords[r]!==void 0}},jt=new bf;var vf=require("three");var _0=require("three"),ge=class extends et{constructor(e,t){super(e);this.scope="";t=t??{},this.shared=t.shared!==void 0?t.shared:!0,this.unique=t.unique!==void 0?t.unique:!1}build(e,t,o,i){if(t=t??this.getType(e),this.getShared(e,t)){let a=this.getUnique(e,t);a&&this.uuid===void 0&&(this.uuid=_0.MathUtils.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,t),this.generate(e,t,o)):super.build(e,t,o);if(a)return s.name=s.name||super.build(e,t,o),s.name;if(!this.getLabel()&&(!this.getShared(e,l)||e.context.ignoreCache||s.deps===1))return super.build(e,t,o);o=this.getUUID(!1);let c=this.getTemp(e,o);if(c)return e.format(c,l,t);{c=super.generate(e,t,o,s.output,i);let u=this.generate(e,l,o);return e.addNodeCode(c+" = "+u+";"),e.format(c,l,t)}}return super.build(e,t,o)}getShared(e,t){return t!=="sampler2D"&&t!=="samplerCube"&&this.shared}getUnique(e,t){return this.unique}setLabel(e){return this.label=e,this}getLabel(){return this.label}getUUID(e){let t=this.uuid;return typeof this.scope=="string"&&(t=this.scope+"-"+t),t}getTemp(e,t){t=t||this.uuid;let o=e.getVars()[t];return o?o.name:void 0}generate(e,t,o,i,a){return this.getShared(e,t)||console.error("TempNode is not shared"),o=o??this.uuid,e.getTempVar(o,i??this.getType(e),a,this.getLabel()).name}};var tt=class extends ge{constructor(e,t){t=t??{},t.shared=t.shared!==void 0?t.shared:!1;super(e,t);this.readonly=!1}setReadonly(e){return this.readonly=e,this.hashProperties=this.readonly?["value"]:void 0,this}getReadonly(){return this.readonly}generate(e,t,o,i,a,s){o=e.getUUID(o??this.getUUID()),i=i??this.getType(e);let l=e.getNodeData(o);return this.getReadonly()&&this.generateReadonly!==void 0?this.generateReadonly(e,t,o,i,a,s):e.isShader("vertex")?(l.vertex||(l.vertex=e.createVertexUniform(i,this,a,s,this.getLabel())),e.format(l.vertex.name,i,t)):(l.fragment||(l.fragment=e.createFragmentUniform(i,this,a,s,this.getLabel())),e.format(l.fragment.name,i,t))}};var vt=class extends tt{constructor(e=0,t){super("v2");this.nodeType="Vector2";this.value=e instanceof vf.Vector2?e:new vf.Vector2(e,t)}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,t,o,i,a,s){return e.format("vec2("+this.value.x+", "+this.value.y+")",i,t)}};var Sf=require("three");var Zt=class extends tt{constructor(e=0,t,o){super("v3");this.nodeType="Vector3";this.value=e instanceof Sf.Vector3?e:new Sf.Vector3(e,t,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,t,o,i,a,s){return e.format("vec3("+this.value.x+", "+this.value.y+", "+this.value.z+")",i,t)}};var B0=require("three"),Ft=class extends B0.Color{constructor(e,t,o,i){super(e,t,o);this.isColorA=!0;this.a=i}setRGBA(e,t,o,i){super.setRGB(e,t,o),this.a=i}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,t="srgb"){let o;if(e==="transparent")return this.setRGBA(0,0,0,0),this;if(o=/^((?:rgb|hsl)a?)\(([^)]*)\)/.exec(e)){let i,a=o[1],s=o[2];switch(a){case"rgb":case"rgba":if(i=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return this.a=a==="rgba"?parseFloat(i[4]):1,super.setStyle(e,t);break;case"hsl":case"hsla":if(i=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)%\s*,\s*(\d*\.?\d+)%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return this.a=a==="hsla"?parseFloat(i[4]):1,super.setStyle(e,t);break}}return super.setStyle(e,t)}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 br=class extends tt{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof Ft?e:new Ft(e.r,e.g,e.b,e.a)}generateReadonly(e,t,o,i,a,s){return e.format("vec4("+this.value.r+", "+this.value.g+", "+this.value.b+", "+this.value.a+")",i,t)}};var yM=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,L0=/[a-z_0-9]+/gi,J=class extends ge{constructor(e,t,o,i,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,t,o,i)}getShared(e,t){return!this.isMethod}getType(e){return e.getTypeByFormat(this.type)}getInputByName(e){if(this.inputs){let t=this.inputs.length;for(;t--;)if(this.inputs[t].name===e)return this.inputs[t]}}getIncludeByName(e){if(this.includes){let t=this.includes.length;for(;t--;)if(this.includes[t].name===e)return this.includes[t]}}generate(e,t,o,i,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=L0.exec(this.src);)u.push(s);for(let p=0;p<u.length;p++){let d=u[p],h=d[0],f=this.isMethod?!this.getInputByName(h):!0,m=h;if(this.keywords[h]||this.useKeywords&&f&&jt.containsKeyword(h)){let y=this.keywords[h];if(!y){let g=jt.getKeywordData(h);g.cache&&(y=e.keywords[h]),y=y||jt.getKeyword(h,e),g.cache&&(e.keywords[h]=y)}m=y.build(e)}h!==m&&c[d.index+l-1]!=="."&&(c=c.substring(0,d.index+l)+m+c.substring(d.index+h.length+l),l+=m.length-h.length),this.getIncludeByName(m)===void 0&&jt.contains(m)&&e.include(jt.get(m))}return t==="source"?c:this.isMethod?(this.isInterface||e.include(this,void 0,c),this.name):e.format("( "+c+" )",this.getType(e),t)}parse(e,t,o,i){if(this.src=e||"",this.includes=t??[],this.extensions=o??{},this.keywords=i??{},this.isMethod){let a=yM.exec(this.src);if(this.inputs=[],a&&a.length==4){this.type=a[1],this.name=a[2];let s=a[3].match(L0);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 gM=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,wf=class extends ge{constructor(e="",t){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||wf.PI,void 0,void 0,void 0,t)}getType(e){return e.getTypeByFormat(this.type)}parse(e,t,o,i,a){this.src=e||"";let s,l,c="",u=gM.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,t){if(t==="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),t)}generate(e,t,o,i,a){return e.format(this.name,this.getType(e),t)}},qe=wf;qe.PI="PI",qe.PI2="PI2",qe.RECIPROCAL_PI="RECIPROCAL_PI",qe.RECIPROCAL_PI2="RECIPROCAL_PI2",qe.LOG2="LOG2",qe.EPSILON="EPSILON";var xM=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
5
+ )*?)}`,"gim"),bM=new RegExp("s*(w*?)s*(w*?)(=|;)","gim"),qa=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 t=this.inputs.length;for(;t--;)if(this.inputs[t].name===e)return this.inputs[t]}generate(e,t,o,i,a){return t==="source"?this.src+";":e.format("( "+this.src+" )",this.getType(e),t)}parse(e=""){this.src=e,this.inputs=[];let t=xM.exec(e);if(t){let o=t[2],i;for(;i=bM.exec(o);)this.inputs.push({type:i[1],name:i[2]});this.name=t[1]}else this.name="";this.type=this.name}};var $a=class extends ge{constructor(e){super("v2",{shared:!1});this.nodeType="UV";this.index=e??0}generate(e,t){e.requires.uv[this.index]=!0;let o=this.index>0?this.index+1:"",i=e.isShader("vertex")?"uv"+o:"vUv"+o;return e.format(i,this.getType(e),t)}};jt.addKeyword("uv",function(){return new $a});jt.addKeyword("uv2",function(){return new $a(1)});var zu=require("three");var hi=class extends ge{constructor(e,t){super("v4");this.nodeType="ColorSpace";this.input=e,this.method=t??hi.LINEAR_TO_LINEAR,this.hashProperties=["method"]}static getEncodingComponents(e){switch(e){case zu.LinearEncoding:return["Linear"];case zu.sRGBEncoding:return["sRGB"];default:return[]}}generate(e,t){let o=this.input.build(e,"v4"),i=this.getType(e),a=hi.Nodes[this.method],s=e.include(a);if(s===hi.LINEAR_TO_LINEAR)return e.format(o,i,t);if(a.inputs?.length===2){let l=this.factor.build(e,"f");return e.format(s+"( "+o+", "+l+" )",i,t)}else return e.format(s+"( "+o+" )",i,t)}fromEncoding(e){let t=hi.getEncodingComponents(e);this.method="LinearTo"+t[0],this.factor=t[1]}fromDecoding(e){let t=hi.getEncodingComponents(e);this.method=t[0]+"ToLinear",this.factor=t[1]}},cr=hi;cr.Nodes={LinearToLinear:new J(["vec4 LinearToLinear( in vec4 value ) {"," return value;","}"].join(`
6
+ `)),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(`
7
+ `)),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(`
8
+ `))},cr.LINEAR_TO_LINEAR="LinearToLinear",cr.SRGB_TO_LINEAR="sRGBToLinear",cr.LINEAR_TO_SRGB="LinearTosRGB";var Xe=class extends J{constructor(e="",t,o,i,a){super(e,a,i,o,t);this.nodeType="Expression"}};var R0=require("three"),ur=class extends tt{constructor(e=new R0.Texture,t,o,i){super("v4",{shared:!0});this.nodeType="Texture";this.value=e,this.uv=t??new $a,this.bias=o,this.project=i!==void 0?i:!1}getTexture(e,t){return super.generate(e,t,this.value.uuid,"t")}generate(e,t){if(t==="sampler2D")return this.getTexture(e,t);let o=this.getTexture(e,t),i=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+", "+i+", "+a+" )":l=s+"( "+o+", "+i+" )";let c={include:e.isShader("vertex"),ignoreCache:!0},u=this.getType(e);return e.addContext(c),this.colorSpace=this.colorSpace??new cr(new Xe("",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,t)}};var se=class extends tt{constructor(e){super("f");this.nodeType="Float";this.value=e??0}generateReadonly(e,t,o,i,a,s){return e.format(this.value+(this.value%1?"":".0"),i,t)}};var vl=class extends ge{constructor(e,t){super();this.inputs=[];this.nodeType="FunctionCall";this.value=e,this.inputs=t??[]}getFunction(){return this.value}getType(e){return this.value.getType(e)}generate(e,t,o,i,a){i=this.getType(e);let s=this.value,l=s.build(e,t)+"( ",c=[];if(s.inputs){for(let u=0;u<s.inputs.length;u++){let p=s.inputs[u],d=this.inputs[u]||this.inputs[p.name];c.push(d.build(e,e.getTypeByFormat(p.type)))}l+=c.join(", ")+" )"}return e.format(l,i,t)}};var Pf=class extends ge{constructor(e,t,o=Pf.ADD){super();this.nodeType="Operator";this.type=e.type,this.a=e,this.b=t,this.op=o}getType(e){let t=this.a.getType(e),o=this.b.getType(e);return e.isTypeMatrix(t)?"v4":e.getTypeLength(o)>e.getTypeLength(t)?o:t}generate(e,t){let o=this.getType(e);this.type=o;let i=this.a.build(e,o),a=this.b.build(e,o);return e.format("( "+i+" "+this.op+" "+a+" )",o,t)}},$t=Pf;$t.ADD="+",$t.SUB="-",$t.MUL="*",$t.DIV="/";var rt=class extends ge{constructor(e,t=rt.ABS,o,i){super();this.nodeType="Math";this.a=e,typeof t!="string"?this.b=t:i=t,typeof o!="string"?this.c=o:i=o,this.method=i,this.hashProperties=["method"]}getNumInputs(e){switch(this.method){case rt.MIX:case rt.CLAMP:case rt.REFRACT:case rt.SMOOTHSTEP:case rt.FACEFORWARD:return 3;case rt.MIN:case rt.MAX:case rt.MOD:case rt.STEP:case rt.REFLECT:case rt.DISTANCE:case rt.DOT:case rt.CROSS:case rt.POW:return 2;default:return 1}}getInputType(e){let t=e.getTypeLength(this.a.getType(e)),o=this.b?e.getTypeLength(this.b.getType(e)):0,i=this.c?e.getTypeLength(this.c.getType(e)):0;return t>o&&t>i?this.a.getType(e):o>i?this.b.getType(e):this.c.getType(e)}getType(e){switch(this.method){case rt.LENGTH:case rt.DISTANCE:case rt.DOT:return"f";case rt.CROSS:return"v3"}return this.getInputType(e)}generate(e,t){let o,i,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),p=this.getType(e);switch(this.type=p,this.method){case rt.NEGATE:return e.format("( -"+this.a.build(e,u)+" )",u,t);case rt.INVERT:return e.format("( 1.0 - "+this.a.build(e,u)+" )",u,t);case rt.CROSS:o=this.a.build(e,"v3"),i=this.b.build(e,"v3");break;case rt.STEP:o=this.a.build(e,s===1?"f":u),i=this.b.build(e,u);break;case rt.MIN:case rt.MAX:case rt.MOD:o=this.a.build(e,u),i=this.b.build(e,l===1?"f":u);break;case rt.REFRACT:o=this.a.build(e,u),i=this.b.build(e,u),a=this.c.build(e,"f");break;case rt.MIX:o=this.a.build(e,u),i=this.b.build(e,u),a=this.c.build(e,c===1?"f":u);break;default:o=this.a.build(e,u),this.b&&(i=this.b.build(e,u)),this.c&&(a=this.c.build(e,u));break}let d=[];d.push(o),i&&d.push(i),a&&d.push(a);let h=this.getNumInputs(e);if(d.length!==h)throw Error(`Arguments not match used in "${this.method}". Require ${h}, currently ${d.length}.`);return e.format(this.method+"( "+d.join(", ")+" )",p,t)}},Te=rt;Te.RAD="radians",Te.DEG="degrees",Te.EXP="exp",Te.EXP2="exp2",Te.LOG="log",Te.LOG2="log2",Te.SQRT="sqrt",Te.INV_SQRT="inversesqrt",Te.FLOOR="floor",Te.CEIL="ceil",Te.NORMALIZE="normalize",Te.FRACT="fract",Te.SATURATE="saturate",Te.SIN="sin",Te.COS="cos",Te.TAN="tan",Te.ASIN="asin",Te.ACOS="acos",Te.ARCTAN="atan",Te.ABS="abs",Te.SIGN="sign",Te.LENGTH="length",Te.NEGATE="negate",Te.INVERT="invert",Te.MIN="min",Te.MAX="max",Te.MOD="mod",Te.STEP="step",Te.REFLECT="reflect",Te.DISTANCE="distance",Te.DOT="dot",Te.CROSS="cross",Te.POW="pow",Te.MIX="mix",Te.CLAMP="clamp",Te.REFRACT="refract",Te.SMOOTHSTEP="smoothstep",Te.FACEFORWARD="faceforward";var Ya=class extends ge{constructor(e,t,o){super("v4");this.nodeType="TextureCubeUV";this.value=e,this.uv=t,this.bias=o}bilinearCubeUV(e,t,o,i){let a=new vl(Ya.Nodes.bilinearCubeUV,[t,o,i]);this.colorSpaceTL=this.colorSpaceTL??new cr(new Xe("","v4")),this.colorSpaceTL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTL.input.parse(a.build(e)+".tl"),this.colorSpaceTR=this.colorSpaceTR??new cr(new Xe("","v4")),this.colorSpaceTR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTR.input.parse(a.build(e)+".tr"),this.colorSpaceBL=this.colorSpaceBL??new cr(new Xe("","v4")),this.colorSpaceBL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBL.input.parse(a.build(e)+".bl"),this.colorSpaceBR=this.colorSpaceBR??new cr(new Xe("","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 Xe(this.colorSpaceTL.build(e,"v4"),"v4"),this.colorSpaceTRExp=new Xe(this.colorSpaceTR.build(e,"v4"),"v4"),this.colorSpaceBLExp=new Xe(this.colorSpaceBL.build(e,"v4"),"v4"),this.colorSpaceBRExp=new Xe(this.colorSpaceBR.build(e,"v4"),"v4"),e.removeContext();let l=new Xe("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,t){if(e.isShader("fragment")){let o=this.uv,i=this.bias||e.context.roughness,a=new vl(Ya.Nodes.roughnessToMip,[i]),s=new Te(a,Ya.Nodes.m0,Ya.Nodes.cubeUV_maxMipLevel,Te.CLAMP),l=new Te(s,Te.FLOOR),c=new Te(s,Te.FRACT),u=this.bilinearCubeUV(e,this.value,o,l),p=this.bilinearCubeUV(e,this.value,o,new $t(l,new se(1).setReadonly(!0),$t.ADD)),d=new Te(u,p,c,Te.MIX);return e.format(d.build(e),"v4",t)}else return console.warn("TextureCubeUVNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),t)}},Xa=Ya;Xa.Nodes=function(){let e=new qa(`struct TextureCubeUVData {
9
9
  vec4 tl;
10
10
  vec4 tr;
11
11
  vec4 br;
12
12
  vec4 bl;
13
13
  vec2 f;
14
- }`),t=new qe("float cubeUV_maxMipLevel 8.0",!0),o=new qe("float cubeUV_minMipLevel 4.0",!0),i=new qe("float cubeUV_maxTileSize 256.0",!0),a=new qe("float cubeUV_minTileSize 16.0",!0),s=new re(`float getFace(vec3 direction) {
14
+ }`),t=new qe("float cubeUV_maxMipLevel 8.0",!0),o=new qe("float cubeUV_minMipLevel 4.0",!0),i=new qe("float cubeUV_maxTileSize 256.0",!0),a=new qe("float cubeUV_minTileSize 16.0",!0),s=new J(`float getFace(vec3 direction) {
15
15
  vec3 absDirection = abs(direction);
16
16
  float face = -1.0;
17
17
  if (absDirection.x > absDirection.z) {
@@ -26,7 +26,7 @@
26
26
  face = direction.y > 0.0 ? 1.0 : 4.0;
27
27
  }
28
28
  return face;
29
- }`);s.useKeywords=!1;let l=new re(`vec2 getUV(vec3 direction, float face) {
29
+ }`);s.useKeywords=!1;let l=new J(`vec2 getUV(vec3 direction, float face) {
30
30
  vec2 uv;
31
31
  if (face == 0.0) {
32
32
  uv = vec2(direction.z, direction.y) / abs(direction.x); // pos x
@@ -42,7 +42,7 @@
42
42
  uv = vec2(direction.x, direction.y) / abs(direction.z); // neg z
43
43
  }
44
44
  return 0.5 * (uv + 1.0);
45
- }`);l.useKeywords=!1;let c=new re(`TextureCubeUVData bilinearCubeUV(sampler2D envMap, vec3 direction, float mipInt) {
45
+ }`);l.useKeywords=!1;let c=new J(`TextureCubeUVData bilinearCubeUV(sampler2D envMap, vec3 direction, float mipInt) {
46
46
  float face = getFace(direction);
47
47
  float filterInt = max(cubeUV_minMipLevel - mipInt, 0.0);
48
48
  mipInt = max(mipInt, cubeUV_minMipLevel);
@@ -70,7 +70,7 @@
70
70
  uv.x -= texelSize;
71
71
  vec4 bl = texture2D(envMap, uv);
72
72
  return TextureCubeUVData( tl, tr, br, bl, f );
73
- }`,[e,s,l,t,o,i,a]);c.useKeywords=!1;let u=new qe("float r0 1.0",!0),p=new qe("float v0 0.339",!0),d=new qe("float m0 -2.0",!0),h=new qe("float r1 0.8",!0),f=new qe("float v1 0.276",!0),m=new qe("float m1 -1.0",!0),y=new qe("float r4 0.4",!0),g=new qe("float v4 0.046",!0),v=new qe("float m4 2.0",!0),O=new qe("float r5 0.305",!0),P=new qe("float v5 0.016",!0),S=new qe("float m5 3.0",!0),T=new qe("float r6 0.21",!0),I=new qe("float v6 0.0038",!0),x=new qe("float m6 4.0",!0),_=[u,p,d,h,f,m,y,g,v,O,P,S,T,I,x],D=new re(`float roughnessToMip(float roughness) {
73
+ }`,[e,s,l,t,o,i,a]);c.useKeywords=!1;let u=new qe("float r0 1.0",!0),p=new qe("float v0 0.339",!0),d=new qe("float m0 -2.0",!0),h=new qe("float r1 0.8",!0),f=new qe("float v1 0.276",!0),m=new qe("float m1 -1.0",!0),y=new qe("float r4 0.4",!0),g=new qe("float v4 0.046",!0),v=new qe("float m4 2.0",!0),O=new qe("float r5 0.305",!0),P=new qe("float v5 0.016",!0),S=new qe("float m5 3.0",!0),T=new qe("float r6 0.21",!0),I=new qe("float v6 0.0038",!0),x=new qe("float m6 4.0",!0),E=[u,p,d,h,f,m,y,g,v,O,P,S,T,I,x],N=new J(`float roughnessToMip(float roughness) {
74
74
  float mip = 0.0;
75
75
  if (roughness >= r1) {
76
76
  mip = (r0 - roughness) * (m1 - m0) / (r0 - r1) + m0;
@@ -84,7 +84,7 @@
84
84
  mip = -2.0 * log2(1.16 * roughness);// 1.16 = 1.79^0.25
85
85
  }
86
86
  return mip;
87
- }`,_);return{bilinearCubeUV:c,roughnessToMip:D,m0:d,cubeUV_maxMipLevel:t}}();var mi=class extends ge{constructor(e){super("v3");this.nodeType="Normal";this.scope=e??mi.VIEW}getShared(){return this.scope===mi.WORLD}build(e,t,o,i){let a=e.context[this.scope+"Normal"];return a?a.build(e,t,o,i):super.build(e,t,o)}generate(e,t,o,i,a){let s;switch(this.scope){case mi.VIEW:e.isShader("vertex")?s="transformedNormal":s="geometryNormal";break;case mi.LOCAL:e.isShader("vertex")?s="objectNormal":(e.requires.normal=!0,s="vObjectNormal");break;case mi.WORLD:e.isShader("vertex")?s="inverseTransformDirection( transformedNormal, viewMatrix ).xyz":(e.requires.worldNormal=!0,s="vWNormal");break}return e.format(s,this.getType(e),t)}},Yt=mi;Yt.LOCAL="local",Yt.WORLD="world",Yt.VIEW="view",Yt.NORMAL="normal";jt.addKeyword("viewNormal",function(){return new Yt(Yt.VIEW)});jt.addKeyword("localNormal",function(){return new Yt(Yt.NORMAL)});jt.addKeyword("worldNormal",function(){return new Yt(Yt.WORLD)});var To=class extends ge{constructor(e){super("v3");this.nodeType="Position";this.scope=e??To.LOCAL}getType(){switch(this.scope){case To.PROJECTION:return"v4"}return this.type}getShader(){switch(this.scope){case To.LOCAL:case To.WORLD:return!1}return!0}generate(e,t,o,i,a){let s;switch(this.scope){case To.LOCAL:e.isShader("vertex")?s="transformed":(e.requires.position=!0,s="vPosition");break;case To.WORLD:if(e.isShader("vertex"))return"( modelMatrix * vec4( transformed, 1.0 ) ).xyz";e.requires.worldPosition=!0,s="vWPosition";break;case To.VIEW:s=e.isShader("vertex")?"-mvPosition.xyz":"vViewPosition";break;case To.PROJECTION:s=e.isShader("vertex")?"( projectionMatrix * modelViewMatrix * vec4( position, 1.0 ) )":"vec4( 0.0 )";break}return e.format(s,this.getType(),t)}},vr=To;vr.LOCAL="local",vr.WORLD="world",vr.VIEW="view",vr.PROJECTION="projection";jt.addKeyword("position",function(){return new vr});jt.addKeyword("worldPosition",function(){return new vr(vr.WORLD)});jt.addKeyword("viewPosition",function(){return new vr(vr.VIEW)});var ao=class extends ge{constructor(e){super("v3");this.nodeType="Reflect";this.scope=e??ao.CUBE}getUnique(e){return!e.context.viewNormal}getType(){switch(this.scope){case ao.SPHERE:return"v2"}return this.type}generate(e,t){let o=this.getUnique(e);if(e.isShader("fragment")){let i;switch(this.scope){case ao.VECTOR:{let a=new Yt(Yt.VIEW),s=e.context.roughness,l=a.build(e,"v3"),c=new vr(vr.VIEW).build(e,"v3"),u=s?s.build(e,"f"):void 0,p=`reflect( -normalize( ${c} ), ${l} )`;u&&(p=`normalize( mix( ${p}, ${l}, ${u} * ${u} ) )`);let d=`inverseTransformDirection( ${p}, viewMatrix )`;o?(e.addNodeCode(`vec3 reflectVec = ${d};`),i="reflectVec"):i=d;break}case ao.CUBE:{let a=new ao(ao.VECTOR).build(e,"v3"),s="vec3( -"+a+".x, "+a+".yz )";o?(e.addNodeCode(`vec3 reflectCubeVec = ${s};`),i="reflectCubeVec"):i=s;break}case ao.SPHERE:{let s="normalize( ( viewMatrix * vec4( "+new ao(ao.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};`),i="reflectSphereVec"):i=s;break}}return e.format(i,this.getType(),t)}else return console.warn("ReflectNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.type,t)}},Ao=ao;Ao.CUBE="cube",Ao.SPHERE="sphere",Ao.VECTOR="vector";var Gu=class extends ge{constructor(e=new ur,t,o){super("v4");this.nodeType="TextureCube";this.value=e,this.radianceNode=new Xa(this.value,t??new Ao(Ao.VECTOR),o),this.irradianceNode=new Xa(this.value,new Yt(Yt.WORLD),new se(1).setReadonly(!0))}generate(e,t){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,t)):(console.warn("TextureCubeNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),t))}};var V0=require("three");var ju=class extends tt{constructor(e=new V0.CubeTexture,t,o){super("v4",{shared:!0});this.nodeType="CubeTexture";this.value=e,this.uv=t??new Ao,this.bias=o}getTexture(e,t){return super.generate(e,t,this.value.uuid,"tc")}generate(e,t){if(t==="samplerCube")return this.getTexture(e,t);let o=this.getTexture(e,t),i=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+", "+i+", "+a+" )":s="texCube( "+o+", "+i+" )";let l={include:e.isShader("vertex"),ignoreCache:!0},c=this.getType(e);return e.addContext(l),this.colorSpace=this.colorSpace??new cr(new Xe("",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,t)}};var z0=`
87
+ }`,E);return{bilinearCubeUV:c,roughnessToMip:N,m0:d,cubeUV_maxMipLevel:t}}();var mi=class extends ge{constructor(e){super("v3");this.nodeType="Normal";this.scope=e??mi.VIEW}getShared(){return this.scope===mi.WORLD}build(e,t,o,i){let a=e.context[this.scope+"Normal"];return a?a.build(e,t,o,i):super.build(e,t,o)}generate(e,t,o,i,a){let s;switch(this.scope){case mi.VIEW:e.isShader("vertex")?s="transformedNormal":s="geometryNormal";break;case mi.LOCAL:e.isShader("vertex")?s="objectNormal":(e.requires.normal=!0,s="vObjectNormal");break;case mi.WORLD:e.isShader("vertex")?s="inverseTransformDirection( transformedNormal, viewMatrix ).xyz":(e.requires.worldNormal=!0,s="vWNormal");break}return e.format(s,this.getType(e),t)}},Yt=mi;Yt.LOCAL="local",Yt.WORLD="world",Yt.VIEW="view",Yt.NORMAL="normal";jt.addKeyword("viewNormal",function(){return new Yt(Yt.VIEW)});jt.addKeyword("localNormal",function(){return new Yt(Yt.NORMAL)});jt.addKeyword("worldNormal",function(){return new Yt(Yt.WORLD)});var To=class extends ge{constructor(e){super("v3");this.nodeType="Position";this.scope=e??To.LOCAL}getType(){switch(this.scope){case To.PROJECTION:return"v4"}return this.type}getShader(){switch(this.scope){case To.LOCAL:case To.WORLD:return!1}return!0}generate(e,t,o,i,a){let s;switch(this.scope){case To.LOCAL:e.isShader("vertex")?s="transformed":(e.requires.position=!0,s="vPosition");break;case To.WORLD:if(e.isShader("vertex"))return"( modelMatrix * vec4( transformed, 1.0 ) ).xyz";e.requires.worldPosition=!0,s="vWPosition";break;case To.VIEW:s=e.isShader("vertex")?"-mvPosition.xyz":"vViewPosition";break;case To.PROJECTION:s=e.isShader("vertex")?"( projectionMatrix * modelViewMatrix * vec4( position, 1.0 ) )":"vec4( 0.0 )";break}return e.format(s,this.getType(),t)}},vr=To;vr.LOCAL="local",vr.WORLD="world",vr.VIEW="view",vr.PROJECTION="projection";jt.addKeyword("position",function(){return new vr});jt.addKeyword("worldPosition",function(){return new vr(vr.WORLD)});jt.addKeyword("viewPosition",function(){return new vr(vr.VIEW)});var ao=class extends ge{constructor(e){super("v3");this.nodeType="Reflect";this.scope=e??ao.CUBE}getUnique(e){return!e.context.viewNormal}getType(){switch(this.scope){case ao.SPHERE:return"v2"}return this.type}generate(e,t){let o=this.getUnique(e);if(e.isShader("fragment")){let i;switch(this.scope){case ao.VECTOR:{let a=new Yt(Yt.VIEW),s=e.context.roughness,l=a.build(e,"v3"),c=new vr(vr.VIEW).build(e,"v3"),u=s?s.build(e,"f"):void 0,p=`reflect( -normalize( ${c} ), ${l} )`;u&&(p=`normalize( mix( ${p}, ${l}, ${u} * ${u} ) )`);let d=`inverseTransformDirection( ${p}, viewMatrix )`;o?(e.addNodeCode(`vec3 reflectVec = ${d};`),i="reflectVec"):i=d;break}case ao.CUBE:{let a=new ao(ao.VECTOR).build(e,"v3"),s="vec3( -"+a+".x, "+a+".yz )";o?(e.addNodeCode(`vec3 reflectCubeVec = ${s};`),i="reflectCubeVec"):i=s;break}case ao.SPHERE:{let s="normalize( ( viewMatrix * vec4( "+new ao(ao.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};`),i="reflectSphereVec"):i=s;break}}return e.format(i,this.getType(),t)}else return console.warn("ReflectNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.type,t)}},Ao=ao;Ao.CUBE="cube",Ao.SPHERE="sphere",Ao.VECTOR="vector";var Gu=class extends ge{constructor(e=new ur,t,o){super("v4");this.nodeType="TextureCube";this.value=e,this.radianceNode=new Xa(this.value,t??new Ao(Ao.VECTOR),o),this.irradianceNode=new Xa(this.value,new Yt(Yt.WORLD),new se(1).setReadonly(!0))}generate(e,t){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,t)):(console.warn("TextureCubeNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),t))}};var V0=require("three");var ju=class extends tt{constructor(e=new V0.CubeTexture,t,o){super("v4",{shared:!0});this.nodeType="CubeTexture";this.value=e,this.uv=t??new Ao,this.bias=o}getTexture(e,t){return super.generate(e,t,this.value.uuid,"tc")}generate(e,t){if(t==="samplerCube")return this.getTexture(e,t);let o=this.getTexture(e,t),i=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+", "+i+", "+a+" )":s="texCube( "+o+", "+i+" )";let l={include:e.isShader("vertex"),ignoreCache:!0},c=this.getType(e);return e.addContext(l),this.colorSpace=this.colorSpace??new cr(new Xe("",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,t)}};var z0=`
88
88
  uniform int frameIndex;
89
89
  uniform vec2 resolution;
90
90
  uniform mat4 previousModelViewMatrix;
@@ -238,13 +238,13 @@ layout(location = 1) out vec4 gVelocity;
238
238
  `}addVaryCode(r){this.addVertexParsCode(r),this.addFragmentParsCode(r)}isCache(r){return this.caches.indexOf(r)!==-1}isSlot(r){return this.slots.indexOf(r)!==-1}define(r,e){this.defines[r]=e===void 0?1:e}require(r){this.requires[r]=!0}isDefined(r){return this.defines[r]!==void 0}getVar(r,e,t,o="varying",i="V",a=""){let s=this.getVars(o),l=s[r];if(!l){let c=s.length;l={name:t||"node"+i+c+(a?"_"+a:""),type:e},s.push(l),s[r]=l}return l}getTempVar(r,e,t,o){return this.getVar(r,e,t,this.shader,"T",o)}getAttribute(r,e){if(!this.attributes[r]){let t=this.getVar(r,e);this.addVertexParsCode("attribute "+e+" "+r+";"),this.addVertexFinalCode(t.name+" = "+r+";"),this.attributes[r]={varying:t,name:r,type:e}}return this.attributes[r]}getCode(r){return[this.prefixCode,this.parsCode[r],this.getVarListCode(this.getVars("varying"),"varying"),this.getVarListCode(this.inputs.uniforms[r],"uniform"),this.getVarListCode(this.inputs.arrayUniforms[r],"uniform"),this.getIncludesCode("consts",r),this.getIncludesCode("structs",r),this.getIncludesCode("functions",r),"void main() {",this.getVarListCode(this.getVars(r)),this.code[r],this.resultCode[r],this.finalCode[r],"}"].join(`
239
239
  `)}getVarListCode(r,e){e=e??"";let t="";for(let o=0,i=r.length;o<i;++o){let a=r[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("[]")?t+=e+" "+u.substring(0,u.length-2)+" "+l+`[${c}];
240
240
  `:t+=e+" "+u+" "+l+`;
241
- `}return t}getVars(r){return this.inputs.vars[r??this.shader]}getNodeData(r){let e=r instanceof et?r.uuid:r;return this.nodeData[e]=this.nodeData[e]||{}}createUniform(r,e,t,o,i,a){if(e.includes("[]")){let s=this.inputs.arrayUniforms,l=s.list.length,c=new bl({type:e,size:t.size,name:o||"nodeUA"+l+(a?"_"+a:""),node:t,needsUpdate:i});return s.list.push(c),s[r].push(c),s[r][c.name]=c,this.uniforms[c.name]=c,c}else{let s=this.inputs.uniforms,l=s.list.length,c=new bl({type:e,name:o||"nodeU"+l+(a?"_"+a:""),node:t,needsUpdate:i});return s.list.push(c),s[r].push(c),s[r][c.name]=c,this.uniforms[c.name]=c,c}}createVertexUniform(r,e,t,o,i){return this.createUniform("vertex",r,e,t,o,i)}createFragmentUniform(r,e,t,o,i){return this.createUniform("fragment",r,e,t,o,i)}include(r,e,t){let o;if(r=typeof r=="string"?jt.get(r):r,this.context.include===!1)return r.name;r instanceof re?o=this.includes.functions:r instanceof qe?o=this.includes.consts:r instanceof qa&&(o=this.includes.structs);let i=o[this.shader]=o[this.shader]||[];if(r){let a=i[r.name];if(a||(a=i[r.name]={node:r,deps:[]},i.push(a),a.src=r.build(this,"source")),r instanceof re&&e&&i[e.name]&&i[e.name].deps.indexOf(r)===-1&&(i[e.name].deps.push(r),r.includes?.length)){let s=0;do this.include(r.includes[s++],e);while(s<r.includes.length)}return t&&(a.src=t),r.name}else throw new Error("Include not found.")}colorToVectorProperties(r){return r.replace("r","x").replace("g","y").replace("b","z").replace("a","w")}colorToVector(r){return r.replace(/c/g,"v3")}getIncludes(r,e){return this.includes[r][e||this.shader]}getConstructorFromLength(r){return vM[r-1]}isTypeMatrix(r){return/^m/.test(r)}getTypeLength(r){return r==="f"?1:parseInt(this.colorToVector(r).substr(1))}getTypeFromLength(r){return r===1?"f":"v"+r}findNode(...r){for(let e=0;e<arguments.length;e++){let t=r[e];if(t?.isNode)return t}}resolve(...r){for(let e=0;e<arguments.length;e++){let t=r[e];if(t!==void 0){if(t.isNode)return t;if(t.isTexture)switch(t.mapping){case so.CubeReflectionMapping:case so.CubeRefractionMapping:return new ju(t);case so.CubeUVReflectionMapping:return new Gu(new ur(t));default:return new ur(t)}else{if(t.isVector2)return new vt(t);if(t.isVector3)return new Zt(t);if(t.isVector4)return new br(t)}}}}format(r,e,t){switch(this.colorToVector(t+" <- "+e)){case"f <- v2":return r+".x";case"f <- v3":return r+".x";case"f <- v4":return r+".x";case"f <- i":case"f <- b":return"float( "+r+" )";case"v2 <- f":return"vec2( "+r+" )";case"v2 <- v3":return r+".xy";case"v2 <- v4":return r+".xy";case"v2 <- i":case"v2 <- b":return"vec2( float( "+r+" ) )";case"v3 <- f":return"vec3( "+r+" )";case"v3 <- v2":return"vec3( "+r+", 0.0 )";case"v3 <- v4":return r+".xyz";case"v3 <- i":case"v3 <- b":return"vec2( float( "+r+" ) )";case"v4 <- f":return"vec4( "+r+" )";case"v4 <- v2":return"vec4( "+r+", 0.0, 1.0 )";case"v4 <- v3":return"vec4( "+r+", 1.0 )";case"v4 <- i":case"v4 <- b":return"vec4( float( "+r+" ) )";case"i <- f":case"i <- b":return"int( "+r+" )";case"i <- v2":return"int( "+r+".x )";case"i <- v3":return"int( "+r+".x )";case"i <- v4":return"int( "+r+".x )";case"b <- f":return"( "+r+" != 0.0 )";case"b <- v2":return"( "+r+" != vec2( 0.0 ) )";case"b <- v3":return"( "+r+" != vec3( 0.0 ) )";case"b <- v4":return"( "+r+" != vec4( 0.0 ) )";case"b <- i":return"( "+r+" != 0 )"}return r}getTypeByFormat(r){return SM[r]||r}getFormatByType(r){return wM[r]||r}getUUID(r,e){return e=e!==void 0?e:!0,e&&this.cache&&(r=this.cache+"-"+r),r}getElementByIndex(r){return H0[r]}getIndexByElement(r){return H0.indexOf(r)}isShader(r){return this.shader===r}setShader(r){return this.shader=r,this}mergeDefines(r){for(let e in r)this.defines[e]=r[e];return this.defines}mergeUniform(r){for(let e in r)this.uniforms[e]=r[e];return this.uniforms}getTextureEncodingFromMap(r){let e;return r?r.isTexture&&(e=r.encoding):e=so.LinearEncoding,e===so.LinearEncoding&&this.context.gamma&&(e=so.sRGBEncoding),e}};var ot=require("three");var Qe=class extends tt{constructor(e=0,t,o,i){super("c");this.nodeType="Color";this.value=e instanceof Ft?e:new Ft(e||0,t,o,i)}setRGBA(e){this.value.setRGBA(e.r,e.g,e.b,e.a)}generate(e,t,o,i,a,s){o=e.getUUID(o??this.getUUID()),i=i??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,t,o,i,a,s):e.isShader("vertex")?(l.vertex||(l.vertex=e.createVertexUniform(i,this,a,s,this.getLabel())),e.format(l.vertex.name,i,t)):(l.fragment||(l.fragment=e.createFragmentUniform(i,this,a,s,this.getLabel())),e.format(l.fragment.name,i,t))}generateReadonly(e,t,o,i,a,s){return e.format("vec3("+this.value.r+", "+this.value.g+", "+this.value.b+")",i,t)}};var ze=class extends tt{constructor(e){super("i");this.nodeType="Int";this.value=Math.floor(e??0)}generateReadonly(e,t,o,i,a,s){return e.format(this.value.toString(),i,t)}};var ku=require("three");var At=class extends tt{constructor(e){super("b");this.nodeType="Bool";this.value=e??!1}generateReadonly(e,t,o,i){return e.format(this.value?"true":"false",i,t)}};var lo=class extends tt{constructor(e=1,t){super("f[]");this.nodeType="FloatArray";this.size=e,this.value=Array.isArray(t)?t:typeof t=="number"?new Array(e).fill(t):new Array(e).fill(0)}};var W0=require("three");var Bn=class extends tt{};var Fu=class extends Bn{constructor(e){super("v3");this.image=e;this._value=new W0.Vector3}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 yi=class extends Bn{constructor(e,t,o=1008){super("t");this.image=e;this.wrap=t;this.minFilter=o}get value(){return this.image.getTexture(this.wrap,this.minFilter)}};var q0=require("three");var Qa=class extends tt{constructor(e){super("m3");this.nodeType="Matrix3";this.value=e??new q0.Matrix3}generateReadonly(e,t,o,i,a,s){return e.format("mat3("+this.value.elements.join(", ")+")",i,t)}get elements(){return this.value.elements}set elements(e){this.value.fromArray(e)}};var $0=require("three");var Jt=class extends tt{constructor(e){super("m4");this.nodeType="Matrix4";this.value=e??new $0.Matrix4}generateReadonly(e,t,o,i,a,s){return e.format("mat4("+this.value.elements.join(", ")+")",i,t)}get elements(){return this.value.elements}set elements(e){this.value.fromArray(e)}};var Sl=require("three");function Y0(n,r,e,t=0){n.setUvTransform(e[0],e[1],r[0],r[1],0,0,0).premultiply(new Sl.Matrix3().makeRotation(t*Sl.MathUtils.DEG2RAD))}var Uu=class extends Qa{constructor(e,t,o=0){super(new Sl.Matrix3);this.repeat=e;this.offset=t;this.rotation=o;Y0(this.value,e,t,o)}updateMatrix(){Y0(this.value,this.repeat,this.offset,this.rotation)}};var Of=require("three");var co=class extends tt{constructor(e=1,t){super("v4[]");this.nodeType="Vector4Array";this.size=e,this.value=Array.isArray(t)?t:t instanceof Of.Vector4?new Array(e).fill(t):new Array(e).fill(new Of.Vector4(0))}};var Za=class extends ge{constructor(e,t,o,i){super("v3");this.nodeType="Blend";this.a=e,this.b=t,this.alpha=o,this.mode=i}generate(e,t){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),t)}else return console.warn("BlendNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}};var Cf=class extends ge{constructor(e,t){super("v3");this.nodeType="CustomColor";this.color=e,this.alpha=t,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.isShader("fragment")){let o=e.include(Cf.Nodes.customColor);e.addFragmentVariable(this.calpha,"float");let i=[];return i.push(this.color.build(e,"v3")),i.push(this.mask?`luminance(${this.mask.build(e,"v3")})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("CustomColorNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},gi=Cf;gi.Nodes=function(){return{customColor:new re(`vec3 customColor(vec3 color, float mask, float alpha, out float calpha) {
241
+ `}return t}getVars(r){return this.inputs.vars[r??this.shader]}getNodeData(r){let e=r instanceof et?r.uuid:r;return this.nodeData[e]=this.nodeData[e]||{}}createUniform(r,e,t,o,i,a){if(e.includes("[]")){let s=this.inputs.arrayUniforms,l=s.list.length,c=new bl({type:e,size:t.size,name:o||"nodeUA"+l+(a?"_"+a:""),node:t,needsUpdate:i});return s.list.push(c),s[r].push(c),s[r][c.name]=c,this.uniforms[c.name]=c,c}else{let s=this.inputs.uniforms,l=s.list.length,c=new bl({type:e,name:o||"nodeU"+l+(a?"_"+a:""),node:t,needsUpdate:i});return s.list.push(c),s[r].push(c),s[r][c.name]=c,this.uniforms[c.name]=c,c}}createVertexUniform(r,e,t,o,i){return this.createUniform("vertex",r,e,t,o,i)}createFragmentUniform(r,e,t,o,i){return this.createUniform("fragment",r,e,t,o,i)}include(r,e,t){let o;if(r=typeof r=="string"?jt.get(r):r,this.context.include===!1)return r.name;r instanceof J?o=this.includes.functions:r instanceof qe?o=this.includes.consts:r instanceof qa&&(o=this.includes.structs);let i=o[this.shader]=o[this.shader]||[];if(r){let a=i[r.name];if(a||(a=i[r.name]={node:r,deps:[]},i.push(a),a.src=r.build(this,"source")),r instanceof J&&e&&i[e.name]&&i[e.name].deps.indexOf(r)===-1&&(i[e.name].deps.push(r),r.includes?.length)){let s=0;do this.include(r.includes[s++],e);while(s<r.includes.length)}return t&&(a.src=t),r.name}else throw new Error("Include not found.")}colorToVectorProperties(r){return r.replace("r","x").replace("g","y").replace("b","z").replace("a","w")}colorToVector(r){return r.replace(/c/g,"v3")}getIncludes(r,e){return this.includes[r][e||this.shader]}getConstructorFromLength(r){return vM[r-1]}isTypeMatrix(r){return/^m/.test(r)}getTypeLength(r){return r==="f"?1:parseInt(this.colorToVector(r).substr(1))}getTypeFromLength(r){return r===1?"f":"v"+r}findNode(...r){for(let e=0;e<arguments.length;e++){let t=r[e];if(t?.isNode)return t}}resolve(...r){for(let e=0;e<arguments.length;e++){let t=r[e];if(t!==void 0){if(t.isNode)return t;if(t.isTexture)switch(t.mapping){case so.CubeReflectionMapping:case so.CubeRefractionMapping:return new ju(t);case so.CubeUVReflectionMapping:return new Gu(new ur(t));default:return new ur(t)}else{if(t.isVector2)return new vt(t);if(t.isVector3)return new Zt(t);if(t.isVector4)return new br(t)}}}}format(r,e,t){switch(this.colorToVector(t+" <- "+e)){case"f <- v2":return r+".x";case"f <- v3":return r+".x";case"f <- v4":return r+".x";case"f <- i":case"f <- b":return"float( "+r+" )";case"v2 <- f":return"vec2( "+r+" )";case"v2 <- v3":return r+".xy";case"v2 <- v4":return r+".xy";case"v2 <- i":case"v2 <- b":return"vec2( float( "+r+" ) )";case"v3 <- f":return"vec3( "+r+" )";case"v3 <- v2":return"vec3( "+r+", 0.0 )";case"v3 <- v4":return r+".xyz";case"v3 <- i":case"v3 <- b":return"vec2( float( "+r+" ) )";case"v4 <- f":return"vec4( "+r+" )";case"v4 <- v2":return"vec4( "+r+", 0.0, 1.0 )";case"v4 <- v3":return"vec4( "+r+", 1.0 )";case"v4 <- i":case"v4 <- b":return"vec4( float( "+r+" ) )";case"i <- f":case"i <- b":return"int( "+r+" )";case"i <- v2":return"int( "+r+".x )";case"i <- v3":return"int( "+r+".x )";case"i <- v4":return"int( "+r+".x )";case"b <- f":return"( "+r+" != 0.0 )";case"b <- v2":return"( "+r+" != vec2( 0.0 ) )";case"b <- v3":return"( "+r+" != vec3( 0.0 ) )";case"b <- v4":return"( "+r+" != vec4( 0.0 ) )";case"b <- i":return"( "+r+" != 0 )"}return r}getTypeByFormat(r){return SM[r]||r}getFormatByType(r){return wM[r]||r}getUUID(r,e){return e=e!==void 0?e:!0,e&&this.cache&&(r=this.cache+"-"+r),r}getElementByIndex(r){return H0[r]}getIndexByElement(r){return H0.indexOf(r)}isShader(r){return this.shader===r}setShader(r){return this.shader=r,this}mergeDefines(r){for(let e in r)this.defines[e]=r[e];return this.defines}mergeUniform(r){for(let e in r)this.uniforms[e]=r[e];return this.uniforms}getTextureEncodingFromMap(r){let e;return r?r.isTexture&&(e=r.encoding):e=so.LinearEncoding,e===so.LinearEncoding&&this.context.gamma&&(e=so.sRGBEncoding),e}};var ot=require("three");var Qe=class extends tt{constructor(e=0,t,o,i){super("c");this.nodeType="Color";this.value=e instanceof Ft?e:new Ft(e||0,t,o,i)}setRGBA(e){this.value.setRGBA(e.r,e.g,e.b,e.a)}generate(e,t,o,i,a,s){o=e.getUUID(o??this.getUUID()),i=i??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,t,o,i,a,s):e.isShader("vertex")?(l.vertex||(l.vertex=e.createVertexUniform(i,this,a,s,this.getLabel())),e.format(l.vertex.name,i,t)):(l.fragment||(l.fragment=e.createFragmentUniform(i,this,a,s,this.getLabel())),e.format(l.fragment.name,i,t))}generateReadonly(e,t,o,i,a,s){return e.format("vec3("+this.value.r+", "+this.value.g+", "+this.value.b+")",i,t)}};var ze=class extends tt{constructor(e){super("i");this.nodeType="Int";this.value=Math.floor(e??0)}generateReadonly(e,t,o,i,a,s){return e.format(this.value.toString(),i,t)}};var ku=require("three");var At=class extends tt{constructor(e){super("b");this.nodeType="Bool";this.value=e??!1}generateReadonly(e,t,o,i){return e.format(this.value?"true":"false",i,t)}};var lo=class extends tt{constructor(e=1,t){super("f[]");this.nodeType="FloatArray";this.size=e,this.value=Array.isArray(t)?t:typeof t=="number"?new Array(e).fill(t):new Array(e).fill(0)}};var W0=require("three");var Bn=class extends tt{};var Fu=class extends Bn{constructor(e){super("v3");this.image=e;this._value=new W0.Vector3}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 yi=class extends Bn{constructor(e,t,o=1008){super("t");this.image=e;this.wrap=t;this.minFilter=o}get value(){return this.image.getTexture(this.wrap,this.minFilter)}};var q0=require("three");var Qa=class extends tt{constructor(e){super("m3");this.nodeType="Matrix3";this.value=e??new q0.Matrix3}generateReadonly(e,t,o,i,a,s){return e.format("mat3("+this.value.elements.join(", ")+")",i,t)}get elements(){return this.value.elements}set elements(e){this.value.fromArray(e)}};var $0=require("three");var Jt=class extends tt{constructor(e){super("m4");this.nodeType="Matrix4";this.value=e??new $0.Matrix4}generateReadonly(e,t,o,i,a,s){return e.format("mat4("+this.value.elements.join(", ")+")",i,t)}get elements(){return this.value.elements}set elements(e){this.value.fromArray(e)}};var Sl=require("three");function Y0(n,r,e,t=0){n.setUvTransform(e[0],e[1],r[0],r[1],0,0,0).premultiply(new Sl.Matrix3().makeRotation(t*Sl.MathUtils.DEG2RAD))}var Uu=class extends Qa{constructor(e,t,o=0){super(new Sl.Matrix3);this.repeat=e;this.offset=t;this.rotation=o;Y0(this.value,e,t,o)}updateMatrix(){Y0(this.value,this.repeat,this.offset,this.rotation)}};var Of=require("three");var co=class extends tt{constructor(e=1,t){super("v4[]");this.nodeType="Vector4Array";this.size=e,this.value=Array.isArray(t)?t:t instanceof Of.Vector4?new Array(e).fill(t):new Array(e).fill(new Of.Vector4(0))}};var Za=class extends ge{constructor(e,t,o,i){super("v3");this.nodeType="Blend";this.a=e,this.b=t,this.alpha=o,this.mode=i}generate(e,t){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),t)}else return console.warn("BlendNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}};var Cf=class extends ge{constructor(e,t){super("v3");this.nodeType="CustomColor";this.color=e,this.alpha=t,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.isShader("fragment")){let o=e.include(Cf.Nodes.customColor);e.addFragmentVariable(this.calpha,"float");let i=[];return i.push(this.color.build(e,"v3")),i.push(this.mask?`luminance(${this.mask.build(e,"v3")})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("CustomColorNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},gi=Cf;gi.Nodes=function(){return{customColor:new J(`vec3 customColor(vec3 color, float mask, float alpha, out float calpha) {
242
242
  float lalpha = alpha * mask;
243
243
  calpha = lalpha / clamp(lalpha + accumAlpha, 0.00001, 1.0);
244
244
  accumAlpha += (1.0 - accumAlpha) * lalpha;
245
245
 
246
246
  return color;
247
- }`)}}();var Tf=class extends ge{constructor(e,t){super("v3");this.nodeType="CustomNormal";this.cnormal=e,this.alpha=t,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.isShader("fragment")){let o=e.include(Tf.Nodes.customNormal);e.addFragmentVariable(this.calpha,"float");let i=[];return i.push(this.cnormal.build(e,"v3")),i.push("normal"),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("CustomNormalNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},Ja=Tf;Ja.Nodes=function(){return{customNormal:new re(`vec3 customNormal(vec3 cnormal, vec3 norm, float mask, float alpha, out float calpha) {
247
+ }`)}}();var Tf=class extends ge{constructor(e,t){super("v3");this.nodeType="CustomNormal";this.cnormal=e,this.alpha=t,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.isShader("fragment")){let o=e.include(Tf.Nodes.customNormal);e.addFragmentVariable(this.calpha,"float");let i=[];return i.push(this.cnormal.build(e,"v3")),i.push("normal"),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("CustomNormalNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},Ja=Tf;Ja.Nodes=function(){return{customNormal:new J(`vec3 customNormal(vec3 cnormal, vec3 norm, float mask, float alpha, out float calpha) {
248
248
  vec3 normal = packNormalToRGB( norm ).rgb;
249
249
  normal *= step( vec3(0.5), cnormal );
250
250
 
@@ -253,7 +253,7 @@ layout(location = 1) out vec4 gVelocity;
253
253
  accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
254
254
 
255
255
  return normal;
256
- }`)}}();var es=class extends ge{constructor(e,t,o,i,a,s,l,c,u,p,d,h){super("v3");this.nodeType="CustomTexture";this.texture=e,this.textureSize=t,this.crop=o,this.projection=i,this.axis=a,this.side=s,this.size=l,this.blending=c,this.mat=u,this.isMask=h,this.alpha=p,this.mode=d,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){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,"")}`,i;switch(this.projection.value){case 3:i=e.include(es.Nodes.cylindrical);break;case 2:i=e.include(es.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 re(`
256
+ }`)}}();var es=class extends ge{constructor(e,t,o,i,a,s,l,c,u,p,d,h){super("v3");this.nodeType="CustomTexture";this.texture=e,this.textureSize=t,this.crop=o,this.projection=i,this.axis=a,this.side=s,this.size=l,this.blending=c,this.mat=u,this.isMask=h,this.alpha=p,this.mode=d,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){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,"")}`,i;switch(this.projection.value){case 3:i=e.include(es.Nodes.cylindrical);break;case 2:i=e.include(es.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(`
257
257
  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) {
258
258
  vec2 projected = (1. + (position.${l})) / 2.;
259
259
  vec2 uvs = ( mat * vec3( (projected * 2. - 1.) / (size * .5), 1. ) / 2. + 0.5 ).xy;
@@ -277,7 +277,7 @@ layout(location = 1) out vec4 gVelocity;
277
277
  accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
278
278
 
279
279
  return col;
280
- }`);i=e.include(c);break;case 4:i=e.include(es.Nodes.triplanar);break;default:i=e.include(es.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",p=`${o}_triplanarWeights`;e.addFragmentVariable(l,"vec2"),e.addFragmentVariable(c,"vec2"),e.addFragmentVariable(u,"vec2"),e.addFragmentVariable(p,"vec3"),a.push(l),a.push(c),a.push(u),a.push(p)}else{let s=`${o}_writeUvs`;e.addFragmentVariable(s,"vec2"),a.push(s)}return e.format(i+"("+a.join(",")+")",this.getType(e),t)}},Ln=es;Ln.Nodes=function(){let e=new re(`
280
+ }`);i=e.include(c);break;case 4:i=e.include(es.Nodes.triplanar);break;default:i=e.include(es.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",p=`${o}_triplanarWeights`;e.addFragmentVariable(l,"vec2"),e.addFragmentVariable(c,"vec2"),e.addFragmentVariable(u,"vec2"),e.addFragmentVariable(p,"vec3"),a.push(l),a.push(c),a.push(u),a.push(p)}else{let s=`${o}_writeUvs`;e.addFragmentVariable(s,"vec2"),a.push(s)}return e.format(i+"("+a.join(",")+")",this.getType(e),t)}},Ln=es;Ln.Nodes=function(){let e=new J(`
281
281
  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) {
282
282
  vec3 posN = normalize(position);
283
283
  float u = 0.5 + atan(posN.z, posN.x) / (2.*3.1415);
@@ -312,7 +312,7 @@ vec3 cylindricalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop
312
312
 
313
313
  return col;
314
314
  }
315
- `),t=new re(`
315
+ `),t=new J(`
316
316
  vec3 sphericalTexture(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) {
317
317
  vec3 posN = normalize(vPosition);
318
318
  float u = 0.5 + atan(posN.z, posN.x) / (2.*3.1415);
@@ -345,7 +345,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
345
345
 
346
346
  return col;
347
347
  }
348
- `),o=new re(`vec3 uvTexture(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) {
348
+ `),o=new J(`vec3 uvTexture(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) {
349
349
  vec2 uvs = ( mat * vec3( vUv * 2. - 1., 1. ) / 2. + 0.5 ).xy;
350
350
  writeUv = uvs;
351
351
 
@@ -366,7 +366,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
366
366
  accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
367
367
 
368
368
  return col;
369
- }`),i=new re(`vec3 triplanarTexture(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 writeUvs0, out vec2 writeUvs1, out vec2 writeUvs2, out vec3 writeWeights) {
369
+ }`),i=new J(`vec3 triplanarTexture(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 writeUvs0, out vec2 writeUvs1, out vec2 writeUvs2, out vec3 writeWeights) {
370
370
  vec3 p = position;
371
371
  vec2 uv0 = (1.0 + p.xy) / 2.0;
372
372
  vec2 uv1 = (1.0 + p.zy) / 2.0;
@@ -432,7 +432,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
432
432
 
433
433
  return col;//n * 0.5 + 0.5;
434
434
  }
435
- `);return{cylindrical:e,spherical:t,uv:o,triplanar:i}}();var ts=class extends ge{constructor(e,t,o,i,a,s,l,c,u,p,d,h){super("v3");this.nodeType="Depth";this.gradientType=e,this.smooth=t,this.near=o,this.far=i,this.isVector=a,this.isWorldSpace=s,this.origin=l,this.direction=c,this.colors=u,this.steps=p,this.isMask=h,this.alpha=d,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){let o=`g${this.uuid.toString().replace(/-/g,"")}`,i=new re(`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) {
435
+ `);return{cylindrical:e,spherical:t,uv:o,triplanar:i}}();var ts=class extends ge{constructor(e,t,o,i,a,s,l,c,u,p,d,h){super("v3");this.nodeType="Depth";this.gradientType=e,this.smooth=t,this.near=o,this.far=i,this.isVector=a,this.isWorldSpace=s,this.origin=l,this.direction=c,this.colors=u,this.steps=p,this.isMask=h,this.alpha=d,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){let o=`g${this.uuid.toString().replace(/-/g,"")}`,i=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) {
436
436
  vec4 color = colors[0];
437
437
  #ifdef ${o}_IS_VECTOR
438
438
  #ifdef ${o}_LINEAR
@@ -472,21 +472,21 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
472
472
  accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
473
473
 
474
474
  return color.rgb;
475
- }`,[ts.Nodes.vectorLinearWorldSpaceDepth,ts.Nodes.vectorLinearObjectSpaceDepth,ts.Nodes.vectorSphericalObjectSpaceDepth,ts.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(i),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),t)}else return console.warn("DepthNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},rs=ts;rs.Nodes=function(){let e=new re(`float vectorLinearWorldSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
475
+ }`,[ts.Nodes.vectorLinearWorldSpaceDepth,ts.Nodes.vectorLinearObjectSpaceDepth,ts.Nodes.vectorSphericalObjectSpaceDepth,ts.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(i),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),t)}else return console.warn("DepthNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},rs=ts;rs.Nodes=function(){let e=new J(`float vectorLinearWorldSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
476
476
  vec3 n = normalize(direction);
477
477
  float dist = (n.x*(vWPosition.x - origin.x) + n.y*(vWPosition.y - origin.y) + n.z*(vWPosition.z - origin.z));
478
478
  return ( dist - near ) / ( far - near );
479
- }`),t=new re(`float vectorLinearObjectSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
479
+ }`),t=new J(`float vectorLinearObjectSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
480
480
  vec3 n = normalize(direction);
481
481
  float dist = (n.x*(position.x - origin.x) + n.y*(position.y - origin.y) + n.z*(position.z - origin.z));
482
482
  return ( dist - near ) / ( far - near );
483
- }`),o=new re(`float vectorSphericalWorldSpaceDepth(vec3 origin, float near, float far) {
483
+ }`),o=new J(`float vectorSphericalWorldSpaceDepth(vec3 origin, float near, float far) {
484
484
  float dist = length(vWPosition - origin);
485
485
  return ( dist - near ) / ( far - near );
486
- }`),i=new re(`float vectorSphericalObjectSpaceDepth(vec3 origin, float near, float far) {
486
+ }`),i=new J(`float vectorSphericalObjectSpaceDepth(vec3 origin, float near, float far) {
487
487
  float dist = length(position - origin);
488
488
  return ( dist - near ) / ( far - near );
489
- }`);return{vectorLinearWorldSpaceDepth:e,vectorLinearObjectSpaceDepth:t,vectorSphericalWorldSpaceDepth:o,vectorSphericalObjectSpaceDepth:i}}();var wl=class extends ge{constructor(e,t,o,i,a,s,l,c){super("v3");this.nodeType="Fresnel";this.color=e,this.bias=t,this.scale=o,this.intensity=i,this.factor=a,this.isMask=c,this.alpha=s,this.mode=l,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.require("vWorldViewDir"),e.require("worldNormal"),e.isShader("fragment")){e.addFragmentVariable(this.calpha,"float");let o=new re(`vec3 fresnel(vec3 color, float bias, float scale, float intensity, float factor, bool isMask, float mask, float alpha, int mode, out float calpha) {
489
+ }`);return{vectorLinearWorldSpaceDepth:e,vectorLinearObjectSpaceDepth:t,vectorSphericalWorldSpaceDepth:o,vectorSphericalObjectSpaceDepth:i}}();var wl=class extends ge{constructor(e,t,o,i,a,s,l,c){super("v3");this.nodeType="Fresnel";this.color=e,this.bias=t,this.scale=o,this.intensity=i,this.factor=a,this.isMask=c,this.alpha=s,this.mode=l,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){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) {
490
490
  float fresnel = bias + scale * pow( abs( factor + dot( normalize( vWorldViewDir ), normalize( vWNormal ) ) ), intensity );
491
491
 
492
492
  float lalpha = clamp(fresnel, 0.0, 1.0) * alpha * mask;
@@ -494,7 +494,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
494
494
  accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
495
495
 
496
496
  return color;
497
- }`),i=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(i+"("+a.join(",")+")",this.getType(e),t)}else return console.warn("FresnelNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}};var Af=class extends ge{constructor(e,t,o,i,a,s,l,c,u){super("v3");this.nodeType="Gradient";this.gradientType=e,this.smooth=t,this.colors=o,this.steps=i,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,t){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(Af.Nodes.gradient),i=[];return i.push(this.gradientType.build(e,"i")),i.push(this.smooth.build(e,"b")),i.push(this.colors.build(e,"v4[]")),i.push(this.steps.build(e,"f[]")),i.push(this.offset.build(e,"v2")),i.push(this.morph.build(e,"v2")),i.push(this.angle.build(e,"f")),i.push(this.isMask.build(e,"b")),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("GradientNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},os=Af;os.Nodes=function(){return{gradient:new re(`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) {
497
+ }`),i=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(i+"("+a.join(",")+")",this.getType(e),t)}else return console.warn("FresnelNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}};var Af=class extends ge{constructor(e,t,o,i,a,s,l,c,u){super("v3");this.nodeType="Gradient";this.gradientType=e,this.smooth=t,this.colors=o,this.steps=i,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,t){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(Af.Nodes.gradient),i=[];return i.push(this.gradientType.build(e,"i")),i.push(this.smooth.build(e,"b")),i.push(this.colors.build(e,"v4[]")),i.push(this.steps.build(e,"f[]")),i.push(this.offset.build(e,"v2")),i.push(this.morph.build(e,"v2")),i.push(this.angle.build(e,"f")),i.push(this.isMask.build(e,"b")),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("GradientNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},os=Af;os.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) {
498
498
  vec4 color = colors[0];
499
499
  vec2 m = morph / vUv.xy;
500
500
  vec2 rot = vec2( 0.5 + m.x, m.y );
@@ -536,7 +536,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
536
536
  accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
537
537
 
538
538
  return color.xyz;
539
- }`)}}();var Mf=class extends ge{constructor(e,t,o,i,a){super("v3");this.nodeType="Matcap";this.texture=e,this.isMask=i,this.alpha=t,this.mode=o,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`,this.rotation=a}generate(e,t){if(e.isShader("fragment")){e.addFragmentVariable(this.calpha,"float");let o=e.include(Mf.Nodes.matcap);e.require("normal"),e.requires.normal=!0;let i=[];return i.push(this.texture.generate(e,"t")),i.push("normal"),i.push(this.isMask.build(e,"b")),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.mode.build(e,"i")),i.push(this.calpha),i.push(this.rotation.build(e,"f")),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("MatcapNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},ns=Mf;ns.Nodes=function(){return{matcap:new re(`vec3 matcap(sampler2D matcapTex, vec3 normal, bool isMask, float mask, float alpha, int mode, out float calpha, float rotation) {
539
+ }`)}}();var Mf=class extends ge{constructor(e,t,o,i,a){super("v3");this.nodeType="Matcap";this.texture=e,this.isMask=i,this.alpha=t,this.mode=o,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`,this.rotation=a}generate(e,t){if(e.isShader("fragment")){e.addFragmentVariable(this.calpha,"float");let o=e.include(Mf.Nodes.matcap);e.require("normal"),e.requires.normal=!0;let i=[];return i.push(this.texture.generate(e,"t")),i.push("normal"),i.push(this.isMask.build(e,"b")),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.mode.build(e,"i")),i.push(this.calpha),i.push(this.rotation.build(e,"f")),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("MatcapNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},ns=Mf;ns.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) {
540
540
  vec3 viewDir = normalize( vViewPosition );
541
541
  vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );
542
542
  vec3 y = cross( viewDir, x );
@@ -550,7 +550,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
550
550
  accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
551
551
 
552
552
  return matcapColor.rgb;
553
- }`)}}();var Pl=(a=>(a.SIMPLEX="simplex3d",a.SIMPLEX_FRACTAL="simplex3dFractal",a.ASHIMA="simplexAshima",a.FBM="fbm",a.PERLIN="perlin",a.VORONOI="voronoi",a))(Pl||{}),Xt=function(){let r=new re(`vec3 random3(vec3 c) {
553
+ }`)}}();var Pl=(a=>(a.SIMPLEX="simplex3d",a.SIMPLEX_FRACTAL="simplex3dFractal",a.ASHIMA="simplexAshima",a.FBM="fbm",a.PERLIN="perlin",a.VORONOI="voronoi",a))(Pl||{}),Xt=function(){let r=new J(`vec3 random3(vec3 c) {
554
554
  float j = 4096.0*sin(dot(c,vec3(17.0, 59.4, 15.0)));
555
555
  vec3 r;
556
556
  r.z = fract(512.0*j);
@@ -559,7 +559,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
559
559
  j *= .125;
560
560
  r.y = fract(512.0*j);
561
561
  return r-0.5;
562
- }`),e=new re(`float simplex3d(vec3 p) {
562
+ }`),e=new J(`float simplex3d(vec3 p) {
563
563
  vec3 s = floor(p + dot(p, vec3(F3)));
564
564
  vec3 x = p - s + dot(s, vec3(G3));
565
565
 
@@ -590,7 +590,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
590
590
  d *= w;
591
591
 
592
592
  return dot(d, vec4(52.0));
593
- }`,[r]);e.keywords.F3=new qe("float F3 0.3333333"),e.keywords.G3=new qe("float G3 0.1666667");let t=new re(`float simplex3dFractal(vec3 m) {
593
+ }`,[r]);e.keywords.F3=new qe("float F3 0.3333333"),e.keywords.G3=new qe("float G3 0.1666667");let t=new J(`float simplex3dFractal(vec3 m) {
594
594
  mat3 rot1 = mat3(-0.37, 0.36, 0.85,-0.14,-0.93, 0.34,0.92, 0.01,0.4);
595
595
  mat3 rot2 = mat3(-0.55,-0.39, 0.74, 0.33,-0.91,-0.24,0.77, 0.12,0.63);
596
596
  mat3 rot3 = mat3(-0.71, 0.52,-0.47,-0.08,-0.72,-0.68,-0.7,-0.45,0.56);
@@ -598,7 +598,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
598
598
  + 0.2666667 * simplex3d(2.0 * m * rot2)
599
599
  + 0.1333333 * simplex3d(4.0 * m * rot3)
600
600
  + 0.0666667 * simplex3d(8.0 * m);
601
- }`,[e]),o=new re("vec4 permute(vec4 x){return mod(((x*34.0)+1.0)*x, 289.0);}"),i=new re("vec4 taylorInvSqrt(vec4 r){return 1.79284291400159 - 0.85373472095314 * r;}"),a=new re(`float simplexAshima(vec3 v) {
601
+ }`,[e]),o=new J("vec4 permute(vec4 x){return mod(((x*34.0)+1.0)*x, 289.0);}"),i=new J("vec4 taylorInvSqrt(vec4 r){return 1.79284291400159 - 0.85373472095314 * r;}"),a=new J(`float simplexAshima(vec3 v) {
602
602
  const vec2 C = vec2(1.0/6.0, 1.0/3.0) ;
603
603
  const vec4 D = vec4(0.0, 0.5, 1.0, 2.0);
604
604
  vec3 i = floor(v + dot(v, C.yyy) );
@@ -643,7 +643,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
643
643
  m = m * m;
644
644
  return 42.0 * dot( m*m, vec4( dot(p0,x0), dot(p1,x1),
645
645
  dot(p2,x2), dot(p3,x3) ) );
646
- }`,[o,i]),s=new re("vec4 mod289(vec4 x){return x - floor(x * (1.0 / 289.0)) * 289.0;}"),l=new re("vec4 perm(vec4 x){return mod289(((x * 34.0) + 1.0) * x);}",[s]),c=new re(`float noise(vec3 p){
646
+ }`,[o,i]),s=new J("vec4 mod289(vec4 x){return x - floor(x * (1.0 / 289.0)) * 289.0;}"),l=new J("vec4 perm(vec4 x){return mod289(((x * 34.0) + 1.0) * x);}",[s]),c=new J(`float noise(vec3 p){
647
647
  vec3 a = floor(p);
648
648
  vec3 d = p - a;
649
649
  d = d * d * (3.0 - 2.0 * d);
@@ -658,7 +658,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
658
658
  vec4 o3 = o2 * d.z + o1 * (1.0 - d.z);
659
659
  vec2 o4 = o3.yw * d.x + o3.xz * (1.0 - d.x);
660
660
  return o4.y * d.y + o4.x * (1.0 - d.y);
661
- }`,[l]),u=new re(`float fbm(vec3 x) {
661
+ }`,[l]),u=new J(`float fbm(vec3 x) {
662
662
  float v = 0.0;
663
663
  float a = 0.5;
664
664
  vec3 shift = vec3(100);
@@ -668,7 +668,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
668
668
  a *= 0.5;
669
669
  }
670
670
  return v;
671
- }`,[c]);u.keywords.NUM_OCTAVES=new qe(`int NUM_OCTAVES ${5}`);let p=new re("vec3 fade(vec3 t) {return t*t*t*(t*(t*6.0-15.0)+10.0);}"),d=new re(`float perlin(vec3 P){
671
+ }`,[c]);u.keywords.NUM_OCTAVES=new qe(`int NUM_OCTAVES ${5}`);let p=new J("vec3 fade(vec3 t) {return t*t*t*(t*(t*6.0-15.0)+10.0);}"),d=new J(`float perlin(vec3 P){
672
672
  vec3 Pi0 = floor(P);
673
673
  vec3 Pi1 = Pi0 + vec3(1.0);
674
674
  Pi0 = mod(Pi0, 289.0);
@@ -727,17 +727,17 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
727
727
  vec2 n_yz = mix(n_z.xy, n_z.zw, fade_xyz.y);
728
728
  float n_xyz = mix(n_yz.x, n_yz.y, fade_xyz.x);
729
729
  return 2.2 * n_xyz;
730
- }`,[o,i,p]),h=new re(`float hashwithoutsine13(vec3 p3)
730
+ }`,[o,i,p]),h=new J(`float hashwithoutsine13(vec3 p3)
731
731
  {
732
732
  p3 = fract(p3 * .1031);
733
733
  p3 += dot(p3, p3.yzx + 33.33);
734
734
  return fract((p3.x + p3.y) * p3.z);
735
- }`),f=new re(`vec3 hashwithoutsine33(vec3 p3)
735
+ }`),f=new J(`vec3 hashwithoutsine33(vec3 p3)
736
736
  {
737
737
  p3 = fract(p3 * vec3(.1031, .1030, .0973));
738
738
  p3 += dot(p3, p3.yxz+33.33);
739
739
  return fract((p3.xxy + p3.yxx)*p3.zyx);
740
- }`),m=new re(`float metric(in vec3 p)
740
+ }`),m=new J(`float metric(in vec3 p)
741
741
  {
742
742
  // L2
743
743
  return length(p);
@@ -745,17 +745,17 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
745
745
  // Chebyshev
746
746
  // vec3 a = abs(p);
747
747
  // return max(a.x, max(a.y, a.z));
748
- }`),y=new re(`float smin( float a, float b, float k )
748
+ }`),y=new J(`float smin( float a, float b, float k )
749
749
  {
750
750
  float h = smoothstep(0.0, 1.0, 0.5 + 0.5 * (b - a) / k);
751
751
  float correction = k * h * (1.0 - h);
752
752
  return mix(b, a, h) - correction;
753
- }`),g=new re(`float smax( float a, float b, float k )
753
+ }`),g=new J(`float smax( float a, float b, float k )
754
754
  {
755
755
  float h = smoothstep(1.0, 0.0, 0.5 + 0.5 * (a - b) / k);
756
756
  float correction = k * h * (1.0 - h);
757
757
  return mix(a, b, h) + correction;
758
- }`),v=new re(`float remap(float value, float input_min, float input_max, float output_min, float output_max) {
758
+ }`),v=new J(`float remap(float value, float input_min, float input_max, float output_min, float output_max) {
759
759
  // Compute width of each interval
760
760
  float input_width = input_max - input_min;
761
761
  float output_width = output_max - output_min;
@@ -765,7 +765,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
765
765
 
766
766
  // Convert the 0-1 range into a value in output range
767
767
  return output_min + (scaled * output_width);
768
- }`),O=new re(`float voronoi(in vec3 x, in int style, in float smoothness, in float seed, in int quality)
768
+ }`),O=new J(`float voronoi(in vec3 x, in int style, in float smoothness, in float seed, in int quality)
769
769
  {
770
770
  // Integer and fractional parts of this point's coordinates
771
771
  ivec3 p = ivec3(floor(x));
@@ -925,7 +925,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
925
925
  color = mix(colorA, colorB, clamp((f * f) * 4.0, 0.0, 1.0));
926
926
  color = mix(color, colorC, clamp(length(q), 0.0, 1.0));
927
927
  color = mix(color, colorD, clamp(length(r.x), 0.0, 1.0));
928
- `,c=new re(`vec3 ${s}customNoise(float scale, vec3 size, float move, vec2 fA, vec2 fB, vec2 distortion, vec4 colorA, vec4 colorB, vec4 colorC, vec4 colorD, int voronoiStyle, float highCut, float lowCut, float smoothness, float seed, int quality, bool isMask, float mask, float alpha, out float calpha)
928
+ `,c=new J(`vec3 ${s}customNoise(float scale, vec3 size, float move, vec2 fA, vec2 fB, vec2 distortion, vec4 colorA, vec4 colorB, vec4 colorC, vec4 colorD, int voronoiStyle, float highCut, float lowCut, float smoothness, float seed, int quality, bool isMask, float mask, float alpha, out float calpha)
929
929
  {
930
930
  // Prevent scale of zero
931
931
  scale = max(abs(scale), 0.001);
@@ -955,7 +955,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
955
955
  // if this offset is the biggest of all the potential offsets
956
956
  gl_Position = ${o}_clipPosition;
957
957
  }
958
- `)}if(e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let i=e.include(If.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(i+"("+a.join(",")+")",this.getType(e),t)}else return console.warn("OutlineNode is not compatible with "+e.shader+" shader."),""}},as=If;as.Nodes=function(){let e=new re(`
958
+ `)}if(e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let i=e.include(If.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(i+"("+a.join(",")+")",this.getType(e),t)}else return console.warn("OutlineNode is not compatible with "+e.shader+" shader."),""}},as=If;as.Nodes=function(){let e=new J(`
959
959
  float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outlineWidth, float pixelRatio)
960
960
  {
961
961
  vec2 halton = haltonSequence[frameIndex];
@@ -1061,7 +1061,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1061
1061
  float edgeNormal = sqrt(dot(sobel_edge_h, sobel_edge_h) + dot(sobel_edge_v, sobel_edge_v));
1062
1062
  return edgeNormal;
1063
1063
  }
1064
- `);return{outline:new re(`vec3 outline(vec3 outlineColor, vec3 contourColor, float outlineWidth, float contourWidth, float outlineThreshold, float contourThreshold, float outlineSmoothing, float contourFrequency, vec3 contourDirection, bool positionalLines, vec2 resolution, sampler2D normalMap, sampler2D depthMap, float pixelRatio, bool compensation, float mask, float alpha, out float calpha) {
1064
+ `);return{outline:new J(`vec3 outline(vec3 outlineColor, vec3 contourColor, float outlineWidth, float contourWidth, float outlineThreshold, float contourThreshold, float outlineSmoothing, float contourFrequency, vec3 contourDirection, bool positionalLines, vec2 resolution, sampler2D normalMap, sampler2D depthMap, float pixelRatio, bool compensation, float mask, float alpha, out float calpha) {
1065
1065
  vec3 result = outlineColor;
1066
1066
  float resultAlpha = 0.0;
1067
1067
 
@@ -1104,12 +1104,12 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1104
1104
  accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
1105
1105
 
1106
1106
  return result;
1107
- }`,[e])}}();var Mo=class extends ge{constructor(e,t,o,i,a,s,l,c,u,p,d,h,f,m,y,g,v,O){super("v3");this.nodeType="Pattern";this.style=e,this.projection=t,this.axis=o,this.blending=i,this.offset=a,this.colorA=s,this.colorB=l,this.frequency=c,this.size=u,this.variation=p,this.smoothness=d,this.zigzag=h,this.rotation=f,this.vertical=m,this.horizontal=y,this.sides=g,this.isMask=O,this.alpha=v,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){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 i=`g${this.uuid.toString().replace(/-/g,"")}`,a=new re(`float hashwithoutsine12(vec2 p)
1107
+ }`,[e])}}();var Mo=class extends ge{constructor(e,t,o,i,a,s,l,c,u,p,d,h,f,m,y,g,v,O){super("v3");this.nodeType="Pattern";this.style=e,this.projection=t,this.axis=o,this.blending=i,this.offset=a,this.colorA=s,this.colorB=l,this.frequency=c,this.size=u,this.variation=p,this.smoothness=d,this.zigzag=h,this.rotation=f,this.vertical=m,this.horizontal=y,this.sides=g,this.isMask=O,this.alpha=v,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){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 i=`g${this.uuid.toString().replace(/-/g,"")}`,a=new J(`float hashwithoutsine12(vec2 p)
1108
1108
  {
1109
1109
  vec3 p3 = fract(vec3(p.xyx) * .1031);
1110
1110
  p3 += dot(p3, p3.yzx + 33.33);
1111
1111
  return fract((p3.x + p3.y) * p3.z);
1112
- }`),s=new re(`vec2 rotate_uv(in vec2 uv, float a, bool repeat)
1112
+ }`),s=new J(`vec2 rotate_uv(in vec2 uv, float a, bool repeat)
1113
1113
  {
1114
1114
  const float mid = 0.5;
1115
1115
  float radians = a * (PI / 180.0);
@@ -1166,7 +1166,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1166
1166
  custom_uv = rotate_uv(custom_uv, rotation, true);
1167
1167
 
1168
1168
  float draw = ${d};
1169
- `}let c=new re(`vec3 ${i}_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) {
1169
+ `}let c=new J(`vec3 ${i}_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) {
1170
1170
  const float TWO_PI = PI * 2.0;
1171
1171
  float smoothness_remapped = pow(smoothness, 5.0);
1172
1172
 
@@ -1190,11 +1190,11 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1190
1190
  accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
1191
1191
 
1192
1192
  return clamp(color, 0.0, 1.0).rgb;
1193
- }`,[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),p=[];return p.push("normal"),p.push(this.blending.build(e,"f")),p.push(this.style.build(e,"i")),p.push(this.offset.build(e,"v2")),p.push(this.colorA.build(e,"v4")),p.push(this.colorB.build(e,"v4")),p.push(this.frequency.build(e,"v2")),p.push(this.size.build(e,"f")),p.push(this.variation.build(e,"f")),p.push(this.smoothness.build(e,"f")),p.push(this.zigzag.build(e,"f")),p.push(this.rotation.build(e,"f")),p.push(this.vertical.build(e,"v2")),p.push(this.horizontal.build(e,"v2")),p.push(this.sides.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(u+"("+p.join(",")+")",this.getType(e),t)}else return console.warn("PatterNode is not compatible with "+e.shader+" shader."),e.format("vec3(0.0)",this.getType(e),t)}},ss=Mo;ss.DrawFunctions=function(){let e=new re(`float hashwithoutsine12(vec2 p) {
1193
+ }`,[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),p=[];return p.push("normal"),p.push(this.blending.build(e,"f")),p.push(this.style.build(e,"i")),p.push(this.offset.build(e,"v2")),p.push(this.colorA.build(e,"v4")),p.push(this.colorB.build(e,"v4")),p.push(this.frequency.build(e,"v2")),p.push(this.size.build(e,"f")),p.push(this.variation.build(e,"f")),p.push(this.smoothness.build(e,"f")),p.push(this.zigzag.build(e,"f")),p.push(this.rotation.build(e,"f")),p.push(this.vertical.build(e,"v2")),p.push(this.horizontal.build(e,"v2")),p.push(this.sides.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(u+"("+p.join(",")+")",this.getType(e),t)}else return console.warn("PatterNode is not compatible with "+e.shader+" shader."),e.format("vec3(0.0)",this.getType(e),t)}},ss=Mo;ss.DrawFunctions=function(){let e=new J(`float hashwithoutsine12(vec2 p) {
1194
1194
  vec3 p3 = fract(vec3(p.xyx) * 0.1031);
1195
1195
  p3 += dot(p3, p3.yzx + 33.33);
1196
1196
  return fract((p3.x + p3.y) * p3.z);
1197
- }`),t=new re(`vec2 tile_and_center(in vec2 uv, in vec2 frequency, in float variation, in float zigzag, in float rotation) {
1197
+ }`),t=new J(`vec2 tile_and_center(in vec2 uv, in vec2 frequency, in float variation, in float zigzag, in float rotation) {
1198
1198
  // Create tiles in UV-space
1199
1199
  uv *= frequency;
1200
1200
 
@@ -1223,14 +1223,14 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1223
1223
  f *= jitter;
1224
1224
 
1225
1225
  return f;
1226
- }`,[e]),o=new re(`float circle(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation) {
1226
+ }`,[e]),o=new J(`float circle(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation) {
1227
1227
  vec2 f = tile_and_center(uv, frequency, variation, zigzag, rotation);
1228
1228
  return smoothstep(
1229
1229
  -smoothness,
1230
1230
  smoothness,
1231
1231
  length(f) - size
1232
1232
  );
1233
- }`,[t]),i=new re(`float ring(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation) {
1233
+ }`,[t]),i=new J(`float ring(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation) {
1234
1234
  vec2 f = tile_and_center(uv, frequency, variation, zigzag, rotation);
1235
1235
 
1236
1236
  float d = length(f);
@@ -1239,7 +1239,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1239
1239
  float outer = smoothstep(-smoothness, smoothness, d - size);
1240
1240
  float inner = smoothstep(-smoothness, smoothness, d - size * inner_width);
1241
1241
  return outer + (1.0 - inner);
1242
- }`,[t]),a=new re(`float sdf_ngon(in vec2 p, in float r, in int n) {
1242
+ }`,[t]),a=new J(`float sdf_ngon(in vec2 p, in float r, in int n) {
1243
1243
  float an = (PI * 2.0) / float(n);
1244
1244
  float he = r * tan(0.5 * an);
1245
1245
 
@@ -1256,7 +1256,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1256
1256
  float polygon(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation, in int sides) {
1257
1257
  vec2 f = tile_and_center(uv, frequency, variation, zigzag, rotation);
1258
1258
  return smoothstep(-smoothness, smoothness, sdf_ngon(f, size, sides));
1259
- }`,[t]),s=new re(`float sdf_cross(in vec2 p, in vec2 b, float r ) {
1259
+ }`,[t]),s=new J(`float sdf_cross(in vec2 p, in vec2 b, float r ) {
1260
1260
  p = abs(p);
1261
1261
  p = (p.y > p.x) ? p.yx : p.xy;
1262
1262
  vec2 q = p - b;
@@ -1269,7 +1269,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1269
1269
  float xcross(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation) {
1270
1270
  vec2 f = tile_and_center(uv, frequency, variation, zigzag, rotation);
1271
1271
  return smoothstep(-smoothness, smoothness, sdf_cross(f, vec2(size, size * 0.25), smoothness));
1272
- }`,[t]),l=new re(`float ndot(vec2 a, vec2 b) {
1272
+ }`,[t]),l=new J(`float ndot(vec2 a, vec2 b) {
1273
1273
  return a.x*b.x - a.y*b.y;
1274
1274
  }
1275
1275
 
@@ -1283,7 +1283,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1283
1283
  float diamond(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation) {
1284
1284
  vec2 f = tile_and_center(uv, frequency, variation, zigzag, rotation);
1285
1285
  return smoothstep(-smoothness, smoothness, sdf_diamond(f, vec2(size)));
1286
- }`,[t]),c=new re(`float checkerboard(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation) {
1286
+ }`,[t]),c=new J(`float checkerboard(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation) {
1287
1287
  uv *= frequency;
1288
1288
  vec2 i = floor(uv);
1289
1289
 
@@ -1293,7 +1293,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1293
1293
  float x = floor(uv.x);
1294
1294
 
1295
1295
  return mod(x, 2.0);
1296
- }`),u=new re(`float line(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation) {
1296
+ }`),u=new J(`float line(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation) {
1297
1297
  vec2 f = tile_and_center(uv, frequency, 0.0, zigzag, rotation);
1298
1298
 
1299
1299
  // Different approach for variation param here
@@ -1306,7 +1306,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1306
1306
  s + smoothness,
1307
1307
  abs(f.y)
1308
1308
  );
1309
- }`,[t]),p=new re(`// Uses bisection
1309
+ }`,[t]),p=new J(`// Uses bisection
1310
1310
  float udf_cos(in vec2 p, in float a, in float b, in float c, in float d) {
1311
1311
  // Convert all data to a primitive cosine wave
1312
1312
  p = c * (p - vec2(d, a));
@@ -1355,7 +1355,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1355
1355
  float s = mix(size, size * rand, variation);
1356
1356
 
1357
1357
  return smoothstep(-smoothness, smoothness, distance_estimate - s * 0.5);
1358
- }`);return{tileAndCenter:t,circle:o,ring:i,polygon:a,cross:s,diamond:l,checkerboard:c,line:u,wave:p}}();var Nf=class extends ge{constructor(e,t,o,i,a,s,l,c){super("v3");this.nodeType="Rainbow";this.filmThickness=e,this.movement=t,this.wavelengths=o,this.noiseStrength=i,this.noiseScale=a,this.offset=s,this.isMask=c,this.alpha=l,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){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(Nf.Nodes.rainbow),i=[];return i.push(this.filmThickness.build(e,"f")),i.push(this.movement.build(e,"f")),i.push(this.wavelengths.build(e,"v3")),i.push(this.noiseStrength.build(e,"f")),i.push(this.noiseScale.build(e,"f")),i.push(this.offset.build(e,"v3")),i.push(this.isMask.build(e,"b")),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("RainbowNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},ls=Nf;ls.Nodes=function(){let e=new re(`vec3 attenuation(vec3 wavelengths, float filmThickness, float movement, float noiseStrength, float noiseScale, vec3 offset) {
1358
+ }`);return{tileAndCenter:t,circle:o,ring:i,polygon:a,cross:s,diamond:l,checkerboard:c,line:u,wave:p}}();var Nf=class extends ge{constructor(e,t,o,i,a,s,l,c){super("v3");this.nodeType="Rainbow";this.filmThickness=e,this.movement=t,this.wavelengths=o,this.noiseStrength=i,this.noiseScale=a,this.offset=s,this.isMask=c,this.alpha=l,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){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(Nf.Nodes.rainbow),i=[];return i.push(this.filmThickness.build(e,"f")),i.push(this.movement.build(e,"f")),i.push(this.wavelengths.build(e,"v3")),i.push(this.noiseStrength.build(e,"f")),i.push(this.noiseScale.build(e,"f")),i.push(this.offset.build(e,"v3")),i.push(this.isMask.build(e,"b")),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("RainbowNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},ls=Nf;ls.Nodes=function(){let e=new J(`vec3 attenuation(vec3 wavelengths, float filmThickness, float movement, float noiseStrength, float noiseScale, vec3 offset) {
1359
1359
  vec3 st = position / noiseScale;
1360
1360
  vec3 q = vec3(simplex3d(st),
1361
1361
  simplex3d(st + vec3(1.0)),
@@ -1368,7 +1368,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1368
1368
  float noise = simplex3d(st + r);
1369
1369
 
1370
1370
  return .5 + .5 * cos((((filmThickness + (noise * noiseStrength)) / (vec3(wavelengths.r * 1.0, wavelengths.g * 0.8, wavelengths.b * 0.6) + 1.0)) * dot(normalize(vWorldViewDir + (offset * -0.001)), normalize(vWNormal))) + movement);
1371
- }`,[Xt.simplex]);return{rainbow:new re(`vec3 rainbow(float filmThickness, float movement, vec3 wavelengths, float noiseStrength, float noiseScale, vec3 offset, bool isMask, float mask, float alpha, out float calpha) {
1371
+ }`,[Xt.simplex]);return{rainbow:new J(`vec3 rainbow(float filmThickness, float movement, vec3 wavelengths, float noiseStrength, float noiseScale, vec3 offset, bool isMask, float mask, float alpha, out float calpha) {
1372
1372
  vec3 res = clamp(attenuation(wavelengths, filmThickness, movement, noiseStrength, noiseScale, offset), 0.0, 2.0);
1373
1373
 
1374
1374
  float rainbowContribution = clamp(res.r + res.g + res.b, 0.0, 1.0);
@@ -1378,14 +1378,14 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1378
1378
  accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
1379
1379
 
1380
1380
  return res;
1381
- }`,[e])}}();var Df=class extends ge{constructor(e,t,o,i,a,s,l,c,u,p){super("v3");this.nodeType="Toon";this.positioning=e,this.colors=t,this.steps=o,this.source=i,this.isWorldSpace=a,this.noiseStrength=s,this.noiseScale=l,this.shadowColor=c,this.offset=u,this.alpha=p,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.require("worldNormal"),e.require("worldPosition"),e.isShader("fragment")){e.define("COLORS_MAX",10),e.addFragmentVariable(this.calpha,"float");let o=e.include(Df.Nodes.toon),i=[];return i.push(this.positioning.build(e,"i")),i.push(this.colors.build(e,"v4[]")),i.push(this.steps.build(e,"f[]")),i.push(this.source.build(e,"v3")),i.push(this.isWorldSpace.build(e,"b")),i.push(this.noiseStrength.build(e,"f")),i.push(this.noiseScale.build(e,"f")),i.push(this.shadowColor.build(e,"v4")),i.push(this.offset.build(e,"v3")),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("ToonNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},cs=Df;cs.Nodes=function(){let e=new re(`float rand(float n) {
1381
+ }`,[e])}}();var Df=class extends ge{constructor(e,t,o,i,a,s,l,c,u,p){super("v3");this.nodeType="Toon";this.positioning=e,this.colors=t,this.steps=o,this.source=i,this.isWorldSpace=a,this.noiseStrength=s,this.noiseScale=l,this.shadowColor=c,this.offset=u,this.alpha=p,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.require("worldNormal"),e.require("worldPosition"),e.isShader("fragment")){e.define("COLORS_MAX",10),e.addFragmentVariable(this.calpha,"float");let o=e.include(Df.Nodes.toon),i=[];return i.push(this.positioning.build(e,"i")),i.push(this.colors.build(e,"v4[]")),i.push(this.steps.build(e,"f[]")),i.push(this.source.build(e,"v3")),i.push(this.isWorldSpace.build(e,"b")),i.push(this.noiseStrength.build(e,"f")),i.push(this.noiseScale.build(e,"f")),i.push(this.shadowColor.build(e,"v4")),i.push(this.offset.build(e,"v3")),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("ToonNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},cs=Df;cs.Nodes=function(){let e=new J(`float rand(float n) {
1382
1382
  return fract(sin(n) * 43758.5453123);
1383
- }`),t=new re(`float hash1(float p) {
1383
+ }`),t=new J(`float hash1(float p) {
1384
1384
  p = fract(p * 0.011);
1385
1385
  p *= p + 7.5;
1386
1386
  p *= p + p;
1387
1387
  return fract(p);
1388
- }`),o=new re(`float valueNoise(vec3 x) {
1388
+ }`),o=new J(`float valueNoise(vec3 x) {
1389
1389
  const vec3 step = vec3(110, 241, 171);
1390
1390
 
1391
1391
  vec3 i = floor(x);
@@ -1400,13 +1400,13 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1400
1400
  mix( hash1(n + dot(step, vec3(0, 1, 0))), hash1(n + dot(step, vec3(1, 1, 0))), u.x), u.y),
1401
1401
  mix(mix( hash1(n + dot(step, vec3(0, 0, 1))), hash1(n + dot(step, vec3(1, 0, 1))), u.x),
1402
1402
  mix( hash1(n + dot(step, vec3(0, 1, 1))), hash1(n + dot(step, vec3(1, 1, 1))), u.x), u.y), u.z);
1403
- }`,[t]),i=new re(`vec3 hash3(vec3 x) {
1403
+ }`,[t]),i=new J(`vec3 hash3(vec3 x) {
1404
1404
  x = vec3(dot(x,vec3(127.1, 311.7, 74.7)),
1405
1405
  dot(x,vec3(269.5, 183.3, 246.1)),
1406
1406
  dot(x,vec3(113.5, 271.9, 124.6)));
1407
1407
 
1408
1408
  return fract(sin(x)*43758.5453123);
1409
- }`),a=new re(`vec3 voronoiNoise(in vec3 x)
1409
+ }`),a=new J(`vec3 voronoiNoise(in vec3 x)
1410
1410
  {
1411
1411
  vec3 p = floor(x);
1412
1412
  vec3 f = fract(x);
@@ -1437,7 +1437,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1437
1437
 
1438
1438
  return vec3(sqrt(res), abs(id));
1439
1439
  }
1440
- `,[i]);return{toon:new re(`vec3 toon(int positioning, vec4 colors[COLORS_MAX], float steps[COLORS_MAX], vec3 source, bool isWorldSpace, float noiseStrength, float noiseScale, vec4 shadowColor, vec3 offset, float mask, float alpha, out float calpha) {
1440
+ `,[i]);return{toon:new J(`vec3 toon(int positioning, vec4 colors[COLORS_MAX], float steps[COLORS_MAX], vec3 source, bool isWorldSpace, float noiseStrength, float noiseScale, vec4 shadowColor, vec3 offset, float mask, float alpha, out float calpha) {
1441
1441
  float t = 0.0;
1442
1442
  float shadow = 1.0;
1443
1443
 
@@ -1614,7 +1614,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1614
1614
 
1615
1615
  return color.xyz;
1616
1616
 
1617
- }`,[Xt.simplex,e,o,a])}}();var Ef=require("three");var X0=function(){return{textureBicubic:new re(`float w0( float a ) {
1617
+ }`,[Xt.simplex,e,o,a])}}();var Ef=require("three");var X0=function(){return{textureBicubic:new J(`float w0( float a ) {
1618
1618
  return ( 1.0 / 6.0 ) * ( a * ( a * ( - a + 3.0 ) - 3.0 ) + 1.0 );
1619
1619
  }
1620
1620
 
@@ -1678,7 +1678,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1678
1678
  vec4 fSample = bicubic( sampler, uv, vec4( fLodSizeInv, fLodSize ), floor( lod ) );
1679
1679
  vec4 cSample = bicubic( sampler, uv, vec4( cLodSizeInv, cLodSize ), ceil( lod ) );
1680
1680
  return mix( fSample, cSample, fract( lod ) );
1681
- }`)}}();function K0(n,r){return n>=r?new Ef.Vector2(r/n,1):new Ef.Vector2(1,n/r)}var _f=class extends ge{constructor(e,t,o,i,a,s,l,c){super("v3");this.nodeType="Transmission";this.thickness=e,this.ior=t,this.roughness=o,this.transmissionSamplerSize=i,this.transmissionSamplerMap=a,this.transmissionDepthMap=s,this.aspectRatio=l,this.alpha=c,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.extensions.shaderTextureLOD=!0,e.extensions.derivatives=!0,e.isShader("fragment")){e.define("NUM_SAMPLES",6),e.define("BLUR_SLOD",Math.pow(2,De.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(_f.Nodes.transmission),i=[];return i.push(this.thickness.build(e,"f")),i.push(this.ior.build(e,"f")),i.push(this.roughness.build(e,"f")),i.push(this.transmissionSamplerSize.build(e,"v2")),i.push(this.transmissionSamplerMap.getTexture(e,"t")),i.push(this.transmissionDepthMap.getTexture(e,"t")),i.push(this.aspectRatio.build(e,"v2")),i.push("normal"),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("TransmissionNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},us=_f;us.Nodes=function(){let e=new re(`vec3 blur(sampler2D sp, vec2 U, vec2 scale, float lod, sampler2D dm, vec2 unrefractedU, vec2 aspectRatio) {
1681
+ }`)}}();function K0(n,r){return n>=r?new Ef.Vector2(r/n,1):new Ef.Vector2(1,n/r)}var _f=class extends ge{constructor(e,t,o,i,a,s,l,c){super("v3");this.nodeType="Transmission";this.thickness=e,this.ior=t,this.roughness=o,this.transmissionSamplerSize=i,this.transmissionSamplerMap=a,this.transmissionDepthMap=s,this.aspectRatio=l,this.alpha=c,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.extensions.shaderTextureLOD=!0,e.extensions.derivatives=!0,e.isShader("fragment")){e.define("NUM_SAMPLES",6),e.define("BLUR_SLOD",Math.pow(2,De.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(_f.Nodes.transmission),i=[];return i.push(this.thickness.build(e,"f")),i.push(this.ior.build(e,"f")),i.push(this.roughness.build(e,"f")),i.push(this.transmissionSamplerSize.build(e,"v2")),i.push(this.transmissionSamplerMap.getTexture(e,"t")),i.push(this.transmissionDepthMap.getTexture(e,"t")),i.push(this.aspectRatio.build(e,"v2")),i.push("normal"),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("TransmissionNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},us=_f;us.Nodes=function(){let e=new J(`vec3 blur(sampler2D sp, vec2 U, vec2 scale, float lod, sampler2D dm, vec2 unrefractedU, vec2 aspectRatio) {
1682
1682
  // Slightly modified version of this:
1683
1683
  // https://www.shadertoy.com/view/ltScRG
1684
1684
 
@@ -1711,7 +1711,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1711
1711
  res += textureLod(sp, uv, lod).rgb;
1712
1712
  }
1713
1713
  return res / float(NUM_SAMPLES);
1714
- }`),t=new re(`vec3 getVolumeTransmissionRay( vec3 n, vec3 v, float thickness, float ior, mat4 modelMatrix ) {
1714
+ }`),t=new J(`vec3 getVolumeTransmissionRay( vec3 n, vec3 v, float thickness, float ior, mat4 modelMatrix ) {
1715
1715
  // Direction of refracted light.
1716
1716
  vec3 refractionVector = refract( -v, n, 1.0 / ior );
1717
1717
 
@@ -1723,11 +1723,11 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1723
1723
 
1724
1724
  // The thickness is specified in local space
1725
1725
  return normalize( refractionVector ) * thickness * modelScale;
1726
- }`),o=new re(`float applyIorToRoughness( float roughness, float ior ) {
1726
+ }`),o=new J(`float applyIorToRoughness( float roughness, float ior ) {
1727
1727
  // Scale roughness with IOR so that an IOR of 1.0 results in no microfacet refraction and
1728
1728
  // an IOR of 1.5 results in the default amount of microfacet refraction.
1729
1729
  return roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );
1730
- }`),i=new re(`vec3 getTransmissionSample( vec2 fragCoord, float roughness, float ior, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 unrefractedCoords, vec2 aspectRatio) {
1730
+ }`),i=new J(`vec3 getTransmissionSample( vec2 fragCoord, float roughness, float ior, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 unrefractedCoords, vec2 aspectRatio) {
1731
1731
  // Threejs exports do not pass a depth map to this shader, so we have to fallback to the "Threejs method of blurring" - see
1732
1732
  // also the code in convertTransmission.ts, which runs during export
1733
1733
  #ifdef IS_THREEJS_EXPORT
@@ -1738,7 +1738,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1738
1738
  float lod = applyIorToRoughness(roughness, ior);
1739
1739
  return blur(transmissionSamplerMap, fragCoord, vec2(lod), min(framebufferLod / 5.5, 8.5), transmissionDepthMap, unrefractedCoords, aspectRatio);
1740
1740
  #endif
1741
- }`,[X0.textureBicubic,o,e]),a=new re(`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 ) {
1741
+ }`,[X0.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 ) {
1742
1742
  vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );
1743
1743
  vec3 refractedRayExit = position + transmissionRay;
1744
1744
 
@@ -1755,7 +1755,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1755
1755
 
1756
1756
  // Sample framebuffer to get pixel the refracted ray hits.
1757
1757
  return getTransmissionSample( refractionCoords, roughness, ior, transmissionSamplerSize, transmissionSamplerMap, transmissionDepthMap, unrefractedCoords, aspectRatio );
1758
- }`,[i,t]);return{transmission:new re(`vec3 transmission(float thickness, float ior, float roughness, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 aspectRatio, vec3 normal, float mask, float alpha, out float calpha) {
1758
+ }`,[i,t]);return{transmission:new J(`vec3 transmission(float thickness, float ior, float roughness, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 aspectRatio, vec3 normal, float mask, float alpha, out float calpha) {
1759
1759
  vec3 v = vec3(0.);
1760
1760
  if (isOrthographic) {
1761
1761
  v = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );
@@ -1769,7 +1769,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1769
1769
  accumAlpha += ( 1.0 - accumAlpha ) * alpha;
1770
1770
 
1771
1771
  return transmission;
1772
- }`,[a])}}();var Bf=(e=>(e.NOISE="noise",e.MAP="map",e))(Bf||{}),Lf=class extends ge{constructor(e,t,o,i,a,s,l,c,u,p,d){super("v3");this.displacementTypeIndex=new ze(0);this.nodeType="VertexDisplacement";this.intensity=e,this.movementOrTexture=t,Object.values(Bf)[this.displacementTypeIndex.value]==="map"&&(this.mat=new Qa(this.movementOrTexture.value.matrix)),this.cropOrOffset=o,this.scale=p,this.noiseFunctionIndex=d,this.voronoiStyle=i,this.smoothness=a,this.seed=s,this.highCut=l,this.lowCut=c,this.quality=u}generate(e,t){if(e.isShader("vertex")){e.define("USE_LAYER_DISPLACE");let o,i=[];switch(i.push("displaced_position"),i.push("displaced_normal"),Object.values(Bf)[this.displacementTypeIndex.value]){case"map":{o=e.include(Lf.Nodes.map),i.push(this.movementOrTexture.getTexture(e,"t")),i.push("uv"),i.push(this.cropOrOffset.build(e,"f")),this.mat&&i.push(this.mat.build(e,"mat3"));break}case"noise":{let s=Object.values(Pl)[this.noiseFunctionIndex.value],l=new re(`vec3 orthogonal(vec3 v) {
1772
+ }`,[a])}}();var Bf=(e=>(e.NOISE="noise",e.MAP="map",e))(Bf||{}),Lf=class extends ge{constructor(e,t,o,i,a,s,l,c,u,p,d){super("v3");this.displacementTypeIndex=new ze(0);this.nodeType="VertexDisplacement";this.intensity=e,this.movementOrTexture=t,Object.values(Bf)[this.displacementTypeIndex.value]==="map"&&(this.mat=new Qa(this.movementOrTexture.value.matrix)),this.cropOrOffset=o,this.scale=p,this.noiseFunctionIndex=d,this.voronoiStyle=i,this.smoothness=a,this.seed=s,this.highCut=l,this.lowCut=c,this.quality=u}generate(e,t){if(e.isShader("vertex")){e.define("USE_LAYER_DISPLACE");let o,i=[];switch(i.push("displaced_position"),i.push("displaced_normal"),Object.values(Bf)[this.displacementTypeIndex.value]){case"map":{o=e.include(Lf.Nodes.map),i.push(this.movementOrTexture.getTexture(e,"t")),i.push("uv"),i.push(this.cropOrOffset.build(e,"f")),this.mat&&i.push(this.mat.build(e,"mat3"));break}case"noise":{let s=Object.values(Pl)[this.noiseFunctionIndex.value],l=new J(`vec3 orthogonal(vec3 v) {
1773
1773
  return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
1774
1774
  }`),c=s=="voronoi"?`
1775
1775
  float v = ${s}((p + offset) * scale * 0.001 + neighbour_offset + (movement * 0.1), voronoiStyle, smoothness, seed, quality);
@@ -1780,9 +1780,9 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1780
1780
  return p + n * v * intensity;
1781
1781
  `:`
1782
1782
  return p + n * ${s}((p + offset) * scale * 0.001 + neighbour_offset + (movement * 0.1)) * intensity;
1783
- `,u=new re(`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) {
1783
+ `,u=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) {
1784
1784
  ${c}
1785
- }`,[Xt.simplex,Xt.simplexFractal,Xt.simplexAshima,Xt.fbm,Xt.perlin,Xt.voronoi]),p=new re(`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) {
1785
+ }`,[Xt.simplex,Xt.simplexFractal,Xt.simplexAshima,Xt.fbm,Xt.perlin,Xt.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) {
1786
1786
  vec3 displaced_position = distorted(position, normal, scale, intensity, offset, neighbor_offset, movement, voronoiStyle, smoothness, seed, highCut, lowCut, quality);
1787
1787
  vec3 tangent1 = orthogonal(normal);
1788
1788
  vec3 tangent2 = normalize(cross(normal, tangent1));
@@ -1798,9 +1798,9 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1798
1798
  vec3 distorted2 = distorted(nearby2, normal, scale, intensity, offset, neighbor_offset, movement, voronoiStyle, smoothness, seed, highCut, lowCut, quality);
1799
1799
  displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
1800
1800
  return displaced_position;
1801
- }`,[u,l]);o=e.include(p),i.push(this.scale.build(e,"f")),i.push(this.cropOrOffset.build(e,"v3")),i.push(this.movementOrTexture.build(e,"f")),i.push(this.voronoiStyle.build(e,"i")),i.push(this.smoothness.build(e,"f")),i.push(this.seed.build(e,"f")),i.push(this.highCut.build(e,"f")),i.push(this.lowCut.build(e,"f")),i.push(this.quality.build(e,"i"));break}}return i.push(this.intensity.build(e,"f")),i.push("displaced_normal"),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("VertexDisplacementNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},ds=Lf;ds.Nodes=function(){let e=new re(`vec3 orthogonal(vec3 v) {
1801
+ }`,[u,l]);o=e.include(p),i.push(this.scale.build(e,"f")),i.push(this.cropOrOffset.build(e,"v3")),i.push(this.movementOrTexture.build(e,"f")),i.push(this.voronoiStyle.build(e,"i")),i.push(this.smoothness.build(e,"f")),i.push(this.seed.build(e,"f")),i.push(this.highCut.build(e,"f")),i.push(this.lowCut.build(e,"f")),i.push(this.quality.build(e,"i"));break}}return i.push(this.intensity.build(e,"f")),i.push("displaced_normal"),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("VertexDisplacementNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},ds=Lf;ds.Nodes=function(){let e=new J(`vec3 orthogonal(vec3 v) {
1802
1802
  return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
1803
- }`),t=new re(`float displacementMapTexture(sampler2D tex, float crop, vec2 uv, mat3 mat, vec2 offset) {
1803
+ }`),t=new J(`float displacementMapTexture(sampler2D tex, float crop, vec2 uv, mat3 mat, vec2 offset) {
1804
1804
  vec2 uvs = (mat * vec3(uv * 2.0 - 1.0, 1.0) / 2.0 + 0.5).xy + offset;
1805
1805
  vec4 tmp = texture2D(tex, uvs);
1806
1806
  vec3 col = tmp.rgb;
@@ -1810,7 +1810,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1810
1810
  }
1811
1811
  }
1812
1812
  return col.r;
1813
- }`);return{map:new re(`vec3 vertexDisplacementMap(vec3 position, vec3 normal, sampler2D tex, vec2 uv, float crop, mat3 mat, float intensity, out vec3 displaced_normal) {
1813
+ }`);return{map:new J(`vec3 vertexDisplacementMap(vec3 position, vec3 normal, sampler2D tex, vec2 uv, float crop, mat3 mat, float intensity, out vec3 displaced_normal) {
1814
1814
  vec3 displaced_position = position + normal * displacementMapTexture(tex, crop, uv, mat, vec2(0.0)) * intensity;
1815
1815
  vec3 tangent1 = normalize(orthogonal(normal));
1816
1816
  vec3 tangent2 = normalize(cross(normal, tangent1));
@@ -1820,7 +1820,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1820
1820
  vec3 distorted2 = nearby2 + normal * displacementMapTexture(tex, crop, uv, mat, vec2(neighbor_offset)) * intensity;
1821
1821
  displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
1822
1822
  return displaced_position;
1823
- }`,[e,t])}}();var De={normalRenderTarget:new ur,normalRenderTargetDepth:new ur,transmissionRenderTarget:new ur,aspectRatio:new vt,transmissionSize:new vt(2048,2048),transmissionRenderTargetDepth:new ur,aoRenderTarget:new ur,aoEnabled:new At,pixelRatioNode:new se(1),resolution:new vt,penumbraSize:new lo(5,.5),frameIndex:new ze(0),transmissionLod:new ze(2)};for(let n of Object.values(De))n.isRenderGlobal=!0;var Q0={skiaWasmUrl:"https://unpkg.com/@splinetool/ui-wasm@1.1.6/build/ui.wasm"};var tn=class extends et{constructor(){super("basic");this.nodeType="Basic";this.color=new Qe(It),this.shadingAlpha=new se(1),this.shadingBlend=new ze(0),this.previousModelViewMatrix=new Jt,this.previouseProjectionMatrix=new Jt}get category(){return"phong"}generate(e){let t;if(e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:De.frameIndex}),e.mergeUniform({resolution:De.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(ku.UniformsUtils.merge([ku.UniformsLib.fog])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>"].join(`
1823
+ }`,[e,t])}}();var De={normalRenderTarget:new ur,normalRenderTargetDepth:new ur,transmissionRenderTarget:new ur,aspectRatio:new vt,transmissionSize:new vt(2048,2048),transmissionRenderTargetDepth:new ur,aoRenderTarget:new ur,aoEnabled:new At,pixelRatioNode:new se(1),resolution:new vt,penumbraSize:new lo(5,.5),frameIndex:new ze(0),transmissionLod:new ze(2)};for(let n of Object.values(De))n.isRenderGlobal=!0;var Q0={skiaWasmUrl:"https://unpkg.com/@splinetool/ui-wasm@1.1.8/build/ui.wasm"};var tn=class extends et{constructor(){super("basic");this.nodeType="Basic";this.color=new Qe(It),this.shadingAlpha=new se(1),this.shadingBlend=new ze(0),this.previousModelViewMatrix=new Jt,this.previouseProjectionMatrix=new Jt}get category(){return"phong"}generate(e){let t;if(e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:De.frameIndex}),e.mergeUniform({resolution:De.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(ku.UniformsUtils.merge([ku.UniformsLib.fog])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>"].join(`
1824
1824
  `));let i=["#include <beginnormal_vertex>",`
1825
1825
  #if !defined( USE_LAYER_DISPLACE )
1826
1826
  #include <defaultnormal_vertex>
@@ -1951,7 +1951,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1951
1951
  outgoingLight *= ao;
1952
1952
  }
1953
1953
  `),u&&h.push(u.code,`outgoingLight = spe_blend(outgoingLight, ${u.result}, 1.0, SPE_BLENDING_NORMAL);`),p?h.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${p.result} );`):h.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),d&&h.push(`gl_FragColor.a *= ${d.result};`),h.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),t=h.join(`
1954
- `)}return t}};var Tl=require("three");var rn=function(){let n=new re(`vec2 dHdxy(sampler2D bumpMap, vec2 bumpMapUv, float bumpScale) {
1954
+ `)}return t}};var Tl=require("three");var rn=function(){let n=new J(`vec2 dHdxy(sampler2D bumpMap, vec2 bumpMapUv, float bumpScale) {
1955
1955
 
1956
1956
  // Gradient of UVs w.r.t. X coordinate (in screen-space)
1957
1957
  vec2 dSTdx = dFdx(bumpMapUv);
@@ -1965,7 +1965,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1965
1965
  float dBy = bumpScale * luminance(texture(bumpMap, bumpMapUv + dSTdy).rgb) - Hll;
1966
1966
 
1967
1967
  return vec2( dBx, dBy );
1968
- }`),r=new re(`vec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) {
1968
+ }`),r=new J(`vec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) {
1969
1969
  vec3 vSigmaX = dFdx( surf_pos.xyz );
1970
1970
  vec3 vSigmaY = dFdy( surf_pos.xyz );
1971
1971
  vec3 vN = surf_norm; // normalized
@@ -2227,11 +2227,11 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
2227
2227
  outgoingLight = spe_blend( diffuseColor, outgoingLight, ${s.result} * ${h}, ${l.result} );
2228
2228
  }
2229
2229
  `),c&&d.push(c.code,`outgoingLight = spe_blend(outgoingLight, ${c.result}, 1.0, SPE_BLENDING_NORMAL);`),u?d.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${u.result} );`):d.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),p&&d.push(`gl_FragColor.a *= ${p.result};`),d.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),t=d.join(`
2230
- `)}return t}};var hs=require("three");var Hu=class{constructor(r=1e3*10){this.timeout=r;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(...r){}remove(r){let e=this.cache.get(r);e&&(this.dispose(r,e.data),this.cache.delete(r),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 r=Date.now(),e=this.head.next;for(;e.time<r-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(r){return this.cache.get(r)?.data}load(r){let e=Date.now(),t=this.cache.get(r);return t===void 0?(t={data:this.create(r),src:r,time:e,next:null,prev:null},this.cache.set(r,t)):(t.time=e,t.prev.next=t.next,t.next.prev=t.prev),t.prev=this.tail.prev,t.next=this.tail,this.tail.prev.next=t,this.tail.prev=t,this.scheduleCleanup(),t.data}};var Vf=class extends Hu{create(r){return URL.createObjectURL(new Blob([r]))}dispose(r,e){URL.revokeObjectURL(e)}},Rf;function Z0(n){return typeof n=="string"?n:(Rf||(Rf=new Vf),Rf.load(n))}var Wu=class{constructor(r,e){this.data=r;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")}},qu=class{constructor(){this.cache=new Map}remove(r){if(this.cache.delete(r.data)===!1&&!1)throw new Error("ref count remove non-exists")}load(r){let e=this.cache.get(r);return e===void 0&&(e=this.create(r),this.cache.set(r,e)),e.refCount+=1,e}};var fs=class extends Wu{constructor(e,t){super(e,t.imageHolderCache);this.data=e;this.shared=t;this.loaded=!1;this.isVideo=!1;this.isCanvas=!1;this._cache={[1e3]:{},[1001]:{},[1002]:{}};this.isVideo=e.type==="video",this.isCanvas=e.nodeName==="CANVAS",this.updateSrc(this.isCanvas?e:e.data)}async updateSrc(e){if(typeof document>"u")return;this.disposeTextures(),this.loaded=!1;let t=()=>{this.loaded=!0;for(let i of Object.values(this._cache))for(let a of Object.values(i))a&&(a.image=this.img,a.needsUpdate=!0);this.shared.requestRender()};if(this.isCanvas)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 i;await new Promise(a=>{o.onloadend=s=>{i=s.target?.result,a(null)}}),this.img.src=i}else this.img.src=e;this.img.onloadeddata=()=>{t()}}else this.img=new Image,this.img.src=Z0(e),this.img.onload=t}getTexture(e,t=1008){let o=this._cache[e]?.[t];if(o)return o;{let i;return this.isCanvas&&(i=new hs.CanvasTexture(this.img,void 0,e,e,void 0,t)),this.isVideo?i=new hs.VideoTexture(this.img,void 0,e,e):i=new hs.Texture(this.img,void 0,e,e,void 0,t),this.loaded&&(i.needsUpdate=!0),this._cache[e]===void 0&&(this._cache[e]={}),this._cache[e][t]=i,i}}setNeedsUpdate(e){for(let t of Object.values(this._cache))for(let o of Object.values(t))o&&(o.needsUpdate=e)}disposeTextures(){for(let[e,t]of Object.entries(this._cache))for(let[o,i]of Object.entries(t))i?.dispose(),this._cache[e][o]=void 0}dispose(){super.dispose(),this.disposeTextures()}};var Nr=class extends fs{};var ut=require("three");function er(n,r){return r.color(n)}function J0(n,r){switch(n.type){case"fresnel":return CM(n,r);case"gradient":return TM(n,r);case"depth":return AM(n,r);case"normal":return MM(n,r);case"noise":return IM(n,r);case"rainbow":return NM(n,r);case"toon":return DM(n,r);case"outline":return EM(n,r);case"transmission":return _M(n,r);case"color":return OM(n,r);case"pattern":return BM(n,r)}}function PM(n){return{type:n.type}}function uo(n,r){let{alpha:e,mode:t,isMask:o}=n,i=typeof e=="string"?(Number(r.getVariable(e))??100)/100:e;return{...PM(n),alpha:i,mode:t,isMask:o}}function OM(n,r){return{...uo(n,r),color:er(n.color,r)}}function CM(n,r){let{bias:e,scale:t,intensity:o,factor:i,color:a}=n;return{...uo(n,r),color:er(a,r),bias:e,scale:t,intensity:o,factor:i}}function TM(n,r){let{gradientType:e,smooth:t,colors:o,steps:i,angle:a,offset:s,morph:l}=n;return{...uo(n,r),gradientType:e,smooth:t,colors:o.map(c=>new ut.Vector4(c[0],c[1],c[2],c[3])),num:o.length,steps:i,offset:new ut.Vector2(...s),morph:new ut.Vector2(...l),angle:a}}function AM(n,r){let{gradientType:e,near:t,far:o,isVector:i,isWorldSpace:a,origin:s,direction:l,colors:c,steps:u,smooth:p}=n;return{...uo(n,r),gradientType:e,near:t,far:o,isVector:i,isWorldSpace:a,origin:new ut.Vector3(...s),direction:l?new ut.Vector3(...l):new ut.Vector3(1,0,0),colors:c.map(d=>d!==void 0?new ut.Vector4(d[0],d[1],d[2],d[3]):new ut.Vector4(0,0,0,0)),steps:u.slice(0,c.length),smooth:p}}function MM(n,r){let{cnormal:e}=n;return{...uo(n,r),cnormal:new ut.Vector3(e[0],e[1],e[2])}}function IM(n,r){return{...uo(n,r),scale:n.scale,move:n.move,fA:new ut.Vector2(...n.fA),fB:new ut.Vector2(...n.fB),size:new ut.Vector3(...n.size),distortion:new ut.Vector2(...n.distortion),colorA:er(n.colorA,r),colorB:er(n.colorB,r),colorC:er(n.colorC,r),colorD:er(n.colorD,r),noiseType:n.noiseType,voronoiStyle:n.voronoiStyle,highCut:n.highCut,lowCut:n.lowCut,smoothness:n.smoothness,seed:n.seed,quality:n.quality}}function NM(n,r){return{...uo(n,r),filmThickness:n.filmThickness,movement:n.movement,wavelengths:new ut.Vector3(...n.wavelengths),noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,offset:new ut.Vector3(...n.offset)}}function DM(n,r){return{...uo(n,r),positioning:n.positioning,colors:n.colors.map(e=>new ut.Vector4(e[0],e[1],e[2],e[3])),num:n.colors.length,steps:n.steps,source:new ut.Vector3(...n.source),isWorldSpace:n.isWorldSpace,noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,shadowColor:er(n.shadowColor,r),offset:new ut.Vector3(...n.offset)}}function EM(n,r){return{...uo(n,r),outlineColor:er(n.outlineColor,r),contourColor:er(n.contourColor,r),outlineWidth:n.outlineWidth,contourWidth:n.contourWidth,outlineThreshold:n.outlineThreshold,contourThreshold:n.contourThreshold,outlineSmoothing:n.outlineSmoothing,contourFrequency:n.contourFrequency,contourDirection:new ut.Vector3(...n.contourDirection),positionalLines:n.positionalLines,compensation:n.compensation}}function _M(n,r){return{...uo(n,r),thickness:n.thickness,ior:n.ior,roughness:n.roughness}}function BM(n,r){return{...uo(n,r),style:n.style,projection:n.projection,axis:n.axis,blending:n.blending,offset:new ut.Vector2(...n.offset),colorA:er(n.colorA,r),colorB:er(n.colorB,r),frequency:new ut.Vector2(...n.frequency),size:n.size,variation:n.variation,smoothness:n.smoothness,zigzag:n.zigzag,rotation:n.rotation,vertical:new ut.Vector2(...n.vertical),horizontal:new ut.Vector2(...n.horizontal),sides:n.sides}}var Rn=class extends Ft{};var $u=require("three");var LM={noise:["noiseType"],texture:["projection","axis","side"],video:["projection","axis","side"],displace:["noiseType"],light:["roughnessMap","bumpMap"],depth:["smooth","isWorldSpace","gradientType","isVector"],pattern:["style","projection","axis"]},RM={depth:["colors"]};function VM(n,r,e){if(r==="isMask")return!0;let t=LM[n.type],o=RM[n.type];if(o!==void 0){let i=n.color;if(o.includes(r)){let a=i[r]?.value?.length;if(a!==void 0&&a!==e.length)return!0}}return t!==void 0?t.includes(r):!1}function zf(n,r,e){let t=e.uniforms[`f${e.id}_texture`];if(!t)return!1;let o=!1,i=n;if("image"in i){let a=i.image,s=r.image(a),l=t;l.image instanceof Nr||l.image.deref(),l.image=s}if("video"in i){let a=i.video,s=r.video(a),l=t;l.image instanceof Nr||l.image.deref(),l.image=s}if("wrapping"in i){let a=t;a.wrap=i.wrapping}if("minFilter"in i){let a=t;a.minFilter=i.minFilter}if("rotation"in i&&e.uniforms[`f${e.id}_rotation`])return e.uniforms[`f${e.id}_rotation`].value=(i.rotation??0)*$u.MathUtils.DEG2RAD,o;if("repeat"in i||"offset"in i||"rotation"in i){let a="mat",s=e.uniforms[`f${e.id}_${a}`];"repeat"in i&&(s.repeat=i.repeat),"offset"in i&&(s.offset=i.offset),"rotation"in i&&(s.rotation=i.rotation??0),s.updateMatrix()}return o}function eb(n,r,e,t){let o=!1;for(let[i,a]of Object.entries(n)){if(i==="bumpMap"||i==="roughnessMap"){o=!0;continue}if(!i||a===void 0)continue;if(Gf(i,e,t,r)){i==="visible"&&e.type==="light"&&(o=!0);continue}e.visible=t.visible;let s=e.uniforms[`f${e.id}_${i}`];if(!!s&&!(s instanceof Bn))switch(o=o||VM(e,i,a),s.constructor){case Qe:if(typeof a=="string"){let l=r.getColor(a);l&&(s.value=l);break}else{let l=a;s.value instanceof Rn?s.value=new Ft(l.r,l.g,l.b,l.a):s.setRGBA(l);break}case br:if(typeof a=="string"){let l=r.getColor(a);l&&(s.value=l);break}else{let l=a;s.value instanceof Rn?s.value=new Ft(l.r,l.g,l.b,l.a):s.value.setRGBA(l.r,l.g,l.b,l.a);break}case vt:{let l=a;s.value.setX(l[0]),s.value.setY(l[1]);break}case Zt:{let l=a;s.value.setX(l[0]),s.value.setY(l[1]),s.value.setZ(l[2]);break}case ur:{zf(a,r,e);break}case co:{s.value=a.map(l=>new $u.Vector4(...l));break}default:{s.value=a;break}}}return o}var Vn=(n,r,e)=>Math.max(0,Math.min(1,Number(r.getVariable(typeof n=="number"?n*100:n,e)??100)/100))??1,zn=class{constructor(r,e,t,o,i){this.id=r;this.uuid=e;this.data=t;this.uniforms={};for(let a in o)this.uniforms[`f${this.id}_${a}`]=o[a];for(let a in t)Gf(a,this,t,i)}get type(){return this.data.type}static create(r,e,t,o){if(t.type==="light")return dr.createLigherLayer(r,e,t,o);if(t.type==="texture"||t.type==="video"){let i=t.type==="texture"?o.canvas(t.texture.image)??o.image(t.texture.image):o.video(t.texture.video),a=new yi(i,t.texture.wrapping,t.texture.minFilter??1008),s=new Fu(i),l=new Uu(t.texture.repeat,t.texture.offset,t.texture.rotation??0),c=new se(t.crop?1:0),u=new ze(t.projection??0),p=new ze(["x","y","z"].indexOf(t.axis)??0),d=new ze(t.side??0),h=new vt(t.size?new ot.Vector2(t.size[0],t.size[1]):new ot.Vector2(100,100)),f=new se(t.blending??0),m=new se(Vn(t.alpha,o)),y=new ze(t.mode??0),g=new At(t.isMask??!1),v=new Ln(a,s,c,u,p,d,h,f,l,m,y,g),O=new Xe(v.calpha,"f");return new ft(r,e,t,{texture:a,textureSize:s,crop:c,projection:u,axis:p,side:d,size:h,blending:f,mat:l,alpha:m,mode:y,isMask:g},v,y,O,g,o)}else if(t.type==="matcap"){let i=o.image(t.texture.image),a=new yi(i,t.texture.wrapping,t.texture.minFilter??1008),s=new se(Vn(t.alpha,o)),l=new ze(t.mode??0),c=new At(t.isMask??!1),u=new se(t.texture.rotation??0),p=new ns(a,s,l,c,u),d=new Xe(p.calpha,"f");return new ft(r,e,t,{texture:a,alpha:s,mode:l,isMask:c,rotation:u},p,l,d,c,o)}else if(t.type==="displace")if(t.displacementType==="noise"){let i=new Zt(new ot.Vector3(...t.offset)),a=new se(t.scale??10),s=new se(t.intensity??8),l=new se(t.movement??1),c=new ze(t.noiseType??0),u=new ze(t.voronoiStyle??0),p=new se(t.smoothness??.5),d=new se(t.seed??0),h=new se(t.highCut??1),f=new se(t.lowCut??0),m=new ze(t.quality??1),y=new ds(s,l,i,u,p,d,h,f,m,a,c);return new Dl(r,e,t,{offset:i,scale:a,intensity:s,movement:l,noiseType:c,voronoiStyle:u,smoothness:p,seed:d,highCut:h,lowCut:f,quality:m},y,o)}else throw new Error;else return jM(r,e,t,o)}updateByOp(r,e,t){let o=r;if(o.path[0]===void 0){if(o.type===0)return"type"in o.props||"category"in o.props||"visible"in o.props?(t.scene.markNeedsUpdateRendererDirty(),!0):eb(o.props,t.shared,this,e)}else if(o.path[0]==="texture")return"texture"in e||"video"in e?zf(o.props,t.shared,this):!0;return!1}dispose(){if(zM(this)){let r=this.uniforms[`f${this.id}_texture`];if(!r)return!1;let e=r;e.image instanceof Nr||e.image.deref()}}hasValueByKey(r){return this.uniforms[r]!==void 0}hasValue(r){return this.hasValueByKey(`f${this.id}_${r}`)}setValue(r,e){let t=`f${this.id}_${r}`;this.hasValueByKey(t)&&e!==void 0&&(this.uniforms[t].value=e)}getNode(r){let e=`f${this.id}_${r}`;if(this.hasValueByKey(e))return this.uniforms[e]}getValue(r){let e=`f${this.id}_${r}`;if(this.hasValueByKey(e))return this.uniforms[e].value}getName(r){let t=/f\d+_(.*)/.exec(r);if(t&&t.length>1)return t[1];console.log(`Layer.getName: error ${r}`)}getNames(){let r=[];for(let e in this.uniforms){let t=this.getName(e);t&&r.push(t)}return r}},ft=class extends zn{constructor(e,t,o,i,a,s,l,c,u){super(e,t,o,i,u);this.params=i;this.color=a;this.mode=s;this.alpha=l;this.isMask=c}},Dl=class extends zn{constructor(e,t,o,i,a,s){super(e,t,o,i,s);this.position=a}},dr=class extends zn{constructor(e,t,o,i,a,s){super(e,t,o,a,s);this.node=i}static createLigherLayer(e,t,o,i){let a,s=new se(Vn(o.alpha,i)),l=new ze(o.mode),c=new se(o.bumpMapIntensity),u=new se(Vn(o.alphaOverride,i)),p;if(!o.visible)a=new tn,p={};else if(o.category==="lambert"){a=new Cl;let d=new Qe(i.color(o.emissive)??0),h=new At(o.occlusion??!0);p={emissive:d,occlusion:h},a.emissive=d,a.occlusion=h}else if(o.category==="toon"){a=new Nl;let d=new se(o.shininess??30),h=new Qe(i.color(o.specular)??1118481);p={shininess:d,specular:h},a.shininess=d,a.specular=h}else if(o.category==="physical"){a=new Ml;let d=new se(o.roughness??.3),h=new se(o.metalness??0),f=new se(o.reflectivity??.5),m=new At(o.occlusion??!0);p={roughness:d,metalness:h,reflectivity:f,occlusion:m},a.roughness=d,a.metalness=h,a.reflectivity=f,a.occlusion=m}else{a=new Al;let d=new se(o.shininess??30),h=new Qe(o.specular!==void 0?i.color(o.specular)??1118481:1118481),f=new At(o.occlusion??!0);p={shininess:d,specular:h,occlusion:f},a.shininess=d,a.specular=h,a.occlusion=f}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 dr(e,t,o,a,p,i)}get category(){return this.node.category}};function zM(n){let r=n instanceof zn?n.type:n;return r==="texture"||r==="video"||r==="displace_map"||r==="matcap"}function jr(n){return{alpha:new se(n.alpha??1),mode:new ze(n.mode??0),isMask:new At(n.isMask??!1)}}function GM(n,r,e,t,o){switch(n.type){case"color":{let i=new Qe(t.color??It),a=jr(t),s=new gi(i,a.alpha),l=new Xe(s.calpha,"f");return new ft(r,e,n,{color:i,...a},s,a.mode,l,a.isMask,o)}case"fresnel":{let i=new Qe(t.color??16777215),a=new se(t.bias??.1),s=new se(t.scale??1),l=new se(t.intensity??2),c=new se(t.factor??1),u=jr(t),p=new wl(i,a,s,l,c,u.alpha,u.mode,u.isMask),d=new Xe(p.calpha,"f");return new ft(r,e,n,{color:i,bias:a,scale:s,intensity:l,factor:c,...u},p,u.mode,d,u.isMask,o)}case"rainbow":{let i=new se(t.filmThickness??30),a=new se(t.movement??0),s=new Zt(t.wavelengths??new ot.Vector3(0,0,0)),l=new se(t.noiseStrength??0),c=new se(t.noiseScale??1),u=new Zt(t.offset??new ot.Vector3(0,0,0)),p=jr(t),d=new ls(i,a,s,l,c,u,p.alpha,p.isMask),h=new Xe(d.calpha,"f");return new ft(r,e,n,{filmThickness:i,movement:a,wavelengths:s,noiseStrength:l,noiseScale:c,offset:u,...p},d,p.mode,h,p.isMask,o)}case"transmission":{let i=new se(t.thickness??10),a=new se(t.ior??1.5),s=new se(t.roughness??.5),l=De.transmissionSize,c=De.transmissionRenderTarget,u=De.transmissionRenderTargetDepth,p=window.innerWidth,d=window.innerHeight,h=p>=d?new vt(d/p,1):new vt(1,p/d),f=jr(t),m=new us(i,a,s,l,c,u,h,f.alpha),y=new Xe(m.calpha,"f");return new ft(r,e,n,{thickness:i,ior:a,roughness:s,aspectRatio:h,...f},m,f.mode,y,f.isMask,o)}case"toon":{let i=new ze(t.positioning??0),a;t.colors?a=new co(t.colors.length,t.colors):(a=new co(10,new ot.Vector4(0,0,0,1)),a.value[1]=new ot.Vector4(1,1,1,1));let s;t.steps?s=new lo(t.steps.length,t.steps):(s=new lo(10,1),s.value[0]=0);let l=new Zt(t.source??new ot.Vector3(0,0,0)),c=new At(t.isWorldSpace??!0),u=new se(t.noiseStrength??0),p=new se(t.noiseScale??1),d=new br(t.shadowColor),h=new Zt(t.offset??new ot.Vector3(0,0,0)),f=jr(t),m=new cs(i,a,s,l,c,u,p,d,h,f.alpha),y=new Xe(m.calpha,"f");return new ft(r,e,n,{positioning:i,colors:a,steps:s,source:l,isWorldSpace:c,noiseStrength:u,noiseScale:p,shadowColor:d,offset:h,...f},m,f.mode,y,f.isMask,o)}case"outline":{let i=new Qe(t.outlineColor??16777215),a=new Qe(t.contourColor??16777215),s=new se(t.outlineWidth??.1),l=new se(t.contourWidth??.1),c=new se(t.outlineThreshold??.1),u=new se(t.contourThreshold??.1),p=new se(t.outlineSmoothing??.1),d=new se(t.contourFrequency??.1),h=new Zt(t.contourDirection??new ot.Vector3(0,1,0)),f=new At(t.positionalLines??!1),m=new At(t.compensation??!0),y=De.normalRenderTarget,g=De.normalRenderTargetDepth,v=De.pixelRatioNode,O=De.resolution,P=jr(t),S=new as(i,a,s,l,c,u,p,d,h,f,m,O,y,g,v,P.alpha),T=new Xe(S.calpha,"f");return new ft(r,e,n,{outlineColor:i,contourColor:a,outlineWidth:s,contourWidth:l,outlineThreshold:c,contourThreshold:u,outlineSmoothing:p,contourFrequency:d,contourDirection:h,positionalLines:f,compensation:m,...P},S,P.mode,T,P.isMask,o)}case"depth":{let i=new ze(t.gradientType??0),a=new At(t.smooth??!1),s=new se(t.near??50),l=new se(t.far??200),c=new se(t.isVector??1),u=new se(t.isWorldSpace??0),p=new Zt(t.origin??new ot.Vector3),d=new Zt(t.direction??new ot.Vector3),h;t.colors?h=new co(t.colors.length,t.colors):(h=new co(2,new ot.Vector4(0,0,0,1)),h.value[1]=new ot.Vector4(1,1,1,1));let f;t.steps?f=new lo(t.steps.length,t.steps):(f=new lo(2,1),f.value[0]=0);let m=jr(t),y=new rs(i,a,s,l,c,u,p,d,h,f,m.alpha,m.isMask),g=new Xe(y.calpha,"f");return new ft(r,e,n,{gradientType:i,smooth:a,near:s,far:l,isVector:c,isWorldSpace:u,origin:p,direction:d,colors:h,steps:f,...m},y,m.mode,g,m.isMask,o)}case"noise":{let i=new se(t.scale??1),a=new Zt(t.size??new ot.Vector3(100,100,100)),s=new se(t.move??1),l=new vt(t.fA??new ot.Vector2(1.7,9.2)),c=new vt(t.fB??new ot.Vector2(8.3,2.8)),u=new vt(t.distortion??new ot.Vector2(1,1)),p=new br(t.colorA),d=new br(t.colorB),h=new br(t.colorC),f=new br(t.colorD),m=new ze(t.noiseType??0),y=new ze(t.voronoiStyle??0),g=new se(t.highCut??1),v=new se(t.lowCut??0),O=new se(t.smoothness??.5),P=new se(t.seed??.5),S=new ze(t.quality??1),T=jr(t),I=new is(i,a,s,l,c,u,p,d,h,f,T.alpha,m,T.isMask,y,g,v,O,P,S),x=new Xe(I.calpha,"f");return new ft(r,e,n,{scale:i,size:a,move:s,fA:l,fB:c,distortion:u,colorA:p,colorB:d,colorC:h,colorD:f,noiseType:m,...T,voronoiStyle:y,highCut:g,lowCut:v,smoothness:O,seed:P,quality:S},I,T.mode,x,T.isMask,o)}case"normal":{let i=new Zt(t.cnormal??new ot.Vector3(1,1,1)),a=jr(t),s=new Ja(i,a.alpha),l=new Xe(s.calpha,"f");return new ft(r,e,n,{cnormal:i,...a},s,a.mode,l,a.isMask,o)}case"gradient":{let i=new ze(t.gradientType??0),a=new At(t.smooth??!1),s;t.colors?s=new co(t.colors.length,t.colors):(s=new co(10,new ot.Vector4(0,0,0,1)),s.value[1]=new ot.Vector4(1,1,1,1));let l;t.steps?l=new lo(t.steps.length,t.steps):(l=new lo(10,1),l.value[0]=0);let c=new vt(t.offset??new ot.Vector2(0,0)),u=new vt(t.morph??new ot.Vector2(0,0)),p=new se(t.angle??0),d=jr(t),h=new os(i,a,s,l,c,u,p,d.alpha,d.isMask),f=new Xe(h.calpha,"f");return new ft(r,e,n,{gradientType:i,smooth:a,colors:s,steps:l,offset:c,morph:u,angle:p,...d},h,d.mode,f,d.isMask,o)}case"pattern":{let i=new ze(t.style??0),a=new ze(t.projection??0),s=new ze(["x","y","z"].indexOf(t.axis)??0),l=new se(t.blending??0),c=new vt(t.offset??new ot.Vector2(0,0)),u=new br(t.colorA),p=new br(t.colorB),d=new vt(t.frequency??new ot.Vector2(10,10)),h=new se(t.size??.5),f=new se(t.variation??0),m=new se(t.smoothness??.5),y=new se(t.zigzag??0),g=new se(t.rotation??0),v=new vt(t.vertical??new ot.Vector2(0,1)),O=new vt(t.horizontal??new ot.Vector2(0,1)),P=new ze(t.sides??6),S=jr(t),T=new ss(i,a,s,l,c,u,p,d,h,f,m,y,g,v,O,P,S.alpha,S.isMask),I=new Xe(T.calpha,"f");return new ft(r,e,n,{style:i,projection:a,axis:s,blending:l,offset:c,colorA:u,colorB:p,frequency:d,size:h,variation:f,smoothness:m,zigzag:y,rotation:g,vertical:v,horizontal:O,sides:P,...S},T,S.mode,I,S.isMask,o)}default:{let i=new Qe(1,0,0,1),a=jr(t),s=new gi(i,a.alpha),l=new Xe(s.calpha,"f");return new ft(r,e,n,{color:i,...a},s,a.mode,l,a.isMask,o)}}}function jM(n,r,e,t){let o=J0(e,t);return GM(e,n,r,o,t)}function Gf(n,r,e,t){if(e.type==="displace"&&(n==="intensity"||n==="visible")){let o=r.uniforms[`f${r.id}_intensity`];return o?(o.value=e.intensity*(e.visible?1:0),o):void 0}if(e.type!=="displace"&&(n==="alpha"||n==="visible")){let o=r.uniforms[`f${r.id}_alpha`];if(!o)return;if(o.value=Vn(e.alpha,t)*(e.visible?1:0),e.type==="outline"&&n==="visible"){let i=r.uniforms[`f${r.id}_compensation`];i&&(i.value=e.compensation&&e.visible)}return o}}function Yu(n,r){let e=0,t=n.layers.find(o=>o.data.type==="light");if(t){let o=t.data,i=Number(r.getVariable(o.alphaOverride));if((typeof o.alphaOverride=="string"?i/100:o.alphaOverride)<1)return!0}for(let o of n.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 i=o.data.visible?o.data.alpha:0;if(typeof i=="string"&&(i=Math.max(0,Math.min(1,Number(r.getVariable(i)??100)/100))),i===1&&o.data.type==="depth"||o.data.type==="gradient"){for(let a of o.data.colors)if(a[3]<1){i=a[3];break}}else if(i===1&&o.data.type==="noise"){let a=r.color(o.data.colorA).a,s=r.color(o.data.colorB).a,l=r.color(o.data.colorC).a,c=r.color(o.data.colorD).a,u=Math.min(a,Math.min(s,Math.min(l,c)));u<1&&(i=u)}e+=(1-e)*i}}return e<1}var Sr=class extends tb.ShaderMaterial{constructor(){super(void 0);this.flatShading=!1;this.needsJitter=!0;this.nodeContextUuid=0;this.fog=!0,this.dithering=!0,this.vertexColors=!0,this.transparent=!0}customProgramCacheKey(){return""}},Xu=class extends Sr{constructor(e,t,o,i){super();this.flatShading=e;this.side=t;this.wireframe=o;this.root=i}updateAfterBuild(){let e=this.root;this.lights=e.lights,this.vertexShader=e.vertexShader,this.fragmentShader=e.fragmentShader,this.defines=e.defines,this.uniforms=e.uniforms,this.extensions=e.extensions,this.transparent=e.transparent,this.cacheKey=e.customProgramCacheKey()+"flat"+this.flatShading+this.side}onBeforeCompile(e,t){this.root.onBeforeCompile(e)}get data(){return this.root.data}get category(){return this.root.category}get hasAO(){return this.root.hasAO}getFlavor(e,t,o){return this.root.getFlavor(e,t,o)}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,t,o){this.root.updateByOp(e,t,o)}nodeMaterialDispose(){this.root.nodeMaterialDispose()}},bi=class extends Sr{constructor(e,t,o=!0){super();this.data=e;this.allowVariableSaves=o;this.layerIdGen=0;this.flavors=[];this.masks={};this.type="NodeMaterial";this.updaters=[],et.startContext(this),this.reset0(e,t),et.endContext(this)}get nodeMaterial(){return this}getFlavor(e,t,o){let i=o?6:(e?3:0)+t;if(i===0)return this;this.flavors===void 0&&(this.flavors=[]),i-=1;let a=this.flavors[i];return a===void 0&&(a=new Xu(e,t,o,this),this.flavors[i]=a,a.flatShading=e,a.side=t,a.updateAfterBuild()),a}get fragment(){return this.lightLayer.node}get category(){return this.lightLayer.category}get hasAO(){return this.lightLayer.getNode("occlusion")?.value??!1}reset(e,t,o=!1){et.startContext(this),(this.data!==e||o)&&this.reset0(e,t),et.endContext(this)}reset0(e,t){this.data=e;let o=e.layers??Qt.defaultTwoLayerData("phong").layers;try{this.layers=o.map(i=>zn.create(this.layerIdGen++,i.id,i.data,t.shared))}catch{this.layers=[]}this.layers.reverse(),this.name=e.name??"Untitled Material",this.onUpdate(t.shared),this.transparent=Yu(e,t.shared),this.saveVariableLocations(t)}onVariableUpdate(e,t,o){if(e[0]==="alphaOverride")this.transparent=Yu(this.data,o.shared),this.lightLayer.setValue("alphaOverride",Math.max(0,Math.min(Number(t)/100,1)));else if(e[0]==="layer"){let i=e[1],a=e[2];if(i&&a){let s=this.layers.find(l=>l.uuid===i);s?.hasValue(a)&&(a==="alpha"?(this.transparent=Yu(this.data,o.shared),s.setValue(a,Math.max(0,Math.min(Number(t)/100,1)))):s.setValue(a,t))}}}saveVariableLocations(e){if(!this.allowVariableSaves)return;let t=this.data.layers.find(o=>o.data.type==="light");t&&e.shared.getVariable(t.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(t=>t.type===e)}getLayerByUuid(e){return this.layers.find(t=>t.uuid===e)}onUpdate(e){this.lightLayer=this.layers.find(t=>t instanceof dr),this.lightLayer===void 0&&(this.lightLayer=new dr(0,"",{..._t.defaultData("light","phong"),visible:!1},new tn,{},e)),this.dispose();for(let t of this.flavors)t&&t.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 dr);if(!e)return;let t=e.data,o=t.bumpMap,i=t.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 ft&&s.color instanceof Ln&&(s.uuid===o&&(e.node.bumpMap=s.color),s.uuid===i&&(e.node.roughnessMap=s.color))}}updateByOp(e,t,o){if(et.startContext(this),t!==void 0?this.data=t:t=this.data,this.transparent=Yu(t,o.shared),e.path[0]==="layers"){let i=o.shared,a=e.path[1];if(a===void 0)o.scene.markNeedsUpdateRendererDirty(),this.reset0(t,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=t.layers.data(a),c;e.type===0&&("alpha"in e.props||"alphaOverride"in e.props)&&("alpha"in e.props?c={...e.props,alpha:Vn(e.props.alpha,i,["material",this.uuid,"layer",a,"alpha"])}:c={...e.props,alphaOverride:Vn(e.props.alphaOverride,i,["material",this.uuid,"alphaOverride"])}),s.updateByOp({...e,...c?{props:c}:{},path:e.path.slice(2)},l,o)&&this.reset0(t,o)}}}else this.reset0(t,o);et.endContext(this)}applyMasks(){for(let e=0;e<this.layers.length;++e){let t=this.layers[e];t instanceof ft?t.color.mask=void 0:t instanceof dr&&(t.node.mask=void 0)}for(let e=0;e<this.layers.length;++e){let t=this.layers[e];if(t instanceof ft&&t.isMask.value&&t.data.visible&&e>0){let o=e-1,i=this.layers[o];i instanceof dr?i.node.mask=new $t(t.color,t.alpha,$t.MUL):i instanceof ft&&(i.isMask.value||(i.color.mask=new $t(t.color,t.alpha,$t.MUL)))}}}blendColors(){let e=this.layers.findIndex(o=>o instanceof ft),t=this.layers.findIndex(o=>o instanceof dr);if(e!==-1&&e<t){let o=this.layers[e].color;for(let i=e+1;i<t;++i){let a=this.layers[i];if(a instanceof ft){if(a.isMask.value)continue;o=new Za(o,a.color,a.alpha,a.mode)}}this.fragment.color=o}else this.fragment.color=void 0}blendAfterColors(){let e=new Xe("outgoingLight","f"),t=this.layers.findIndex(o=>o instanceof dr);if(this.layers.length>t+1){for(let o=t+1;o<this.layers.length;++o){let i=this.layers[o];if(i instanceof ft){if(i.isMask.value)continue;e=new Za(e,i.color,i.alpha,i.mode)}}this.fragment.afterColor=e}else this.fragment.afterColor=void 0}blendPositions(){let e=this.layers.filter(t=>t instanceof Dl);if(e.length>0){let t=e[0].position;for(let o=1;o<e.length;++o)e[o]&&(t=new $t(t,e[o].position,$t.ADD),t=new $t(t,new se(.5).setReadonly(!0),$t.MUL));this.fragment.position=t}else this.fragment.position=void 0}getDefines(){return this.defines}getUniforms(){return this.uniforms}getVertexShader(){return this.vertexShader}getFragmentShader(){return this.fragmentShader}onBeforeCompile(e){e.defines=this.defines,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,t){let o=(i,a,s)=>Math.min(Math.max(i,a),s);for(let i of this.layers)if(i.type==="displace"){let a=o(i.uniforms[`f${i.id}_intensity`].value,e,t);i.uniforms[`f${i.id}_intensity`].value=a}}updateFrame(e){for(let t=0;t<this.updaters.length;++t)e.updateNode(this.updaters[t])}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 t of this.flavors)t&&t.updateAfterBuild();return 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 ft){let t=e.params.texture;if(t instanceof yi&&!t.image.loaded)return!1}return!0}};Object.defineProperties(Sr.prototype,{properties:{get:function(){return this.fragment.properties}}});var vi=class extends bi{constructor(r,e,t){super(r,e,!1),this.uuid=t,this.allowVariableSaves=!0,this.saveVariableLocations(e)}};var rb=new Map;function ob(n){if(typeof n=="string")return n;let r=rb.get(n);return r||(r={url:URL.createObjectURL(new Blob([n]))},rb.set(n,r)),r.url}var FM,nb=new Promise(n=>{FM=n});var ib;nb.then(n=>ib=n);var Si=class{constructor({src:r,volume:e,delay:t,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 i;typeof r=="string"?i={src:r}:i={src:ob(r),format:"wav"},this.sound=new ib.Howl(i),this.sound.on("end",this.onEnd),this.src=r,e!==void 0&&(this.volume=e),t!==void 0&&(this.delay=t),o!==void 0&&(this.loop=o)}get status(){return this._status}get volume(){return this._volume}set volume(r){this._volume=r,this.sound.volume(r)}get loop(){return this._loop}set loop(r){this._loop=r,this.loopsRemaining=r}replay(){this.clearDelay(),this.delayTimerId=window.setTimeout(()=>{this.sound.play(),this.clearDelay()},this.delay)}fade(r,e=1e3){r?(this.sound.volume(this._volume),this.clearFade(),this.fadeTimerId=window.setTimeout(()=>{this.sound.fade(this._volume,0,e),this.clearFade()},r)):this.sound.fade(this._volume,0,e)}on(r,e,t){this.sound.on(r,e,t)}off(r,e,t){this.sound.off(r,e,t)}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(r=!1){this.off(),this.stop(),this.clearFade(),this.clearDelay()}};var Ut=require("three"),Ku=class{constructor(){this.type="ShapePath";this.color=new Ut.Color;this.subPaths=[];this.currentPath=null}moveTo(r,e){return this.currentPath=new Ut.Path,this.subPaths.push(this.currentPath),this.currentPath.moveTo(r,e),this}lineTo(r,e){return this.currentPath?.lineTo(r,e),this}quadraticCurveTo(r,e,t,o){return this.currentPath?.quadraticCurveTo(r,e,t,o),this}bezierCurveTo(r,e,t,o,i,a){return this.currentPath?.bezierCurveTo(r,e,t,o,i,a),this}splineThru(r){return this.currentPath?.splineThru(r),this}toShapes(){let e={ORIGIN:0,DESTINATION:1,BETWEEN:2,LEFT:3,RIGHT:4,BEHIND:5,BEYOND:6},t={loc:e.ORIGIN,t:0};function o(m,y,g,v){let O=m.x,P=y.x,S=g.x,T=v.x,I=m.y,x=y.y,_=g.y,D=v.y,A=(T-S)*(I-_)-(D-_)*(O-S),N=(P-O)*(I-_)-(x-I)*(O-S),E=(D-_)*(P-O)-(T-S)*(x-I),B=A/E,V=N/E;if(E===0&&A!==0||B<=0||B>=1||V<0||V>1)return null;if(A===0&&E===0){for(let j=0;j<2;j++)if(i(j===0?g:v,m,y),t.loc===e.ORIGIN){let R=j===0?g:v;return{x:R.x,y:R.y,t:t.t}}else if(t.loc===e.BETWEEN){let R=+(O+t.t*(P-O)).toPrecision(10),W=+(I+t.t*(x-I)).toPrecision(10);return{x:R,y:W,t:t.t}}return null}else{for(let W=0;W<2;W++)if(i(W===0?g:v,m,y),t.loc===e.ORIGIN){let F=W===0?g:v;return{x:F.x,y:F.y,t:t.t}}let j=+(O+B*(P-O)).toPrecision(10),R=+(I+B*(x-I)).toPrecision(10);return{x:j,y:R,t:B}}}function i(m,y,g){let v=g.x-y.x,O=g.y-y.y,P=m.x-y.x,S=m.y-y.y,T=v*S-P*O;if(m.x===y.x&&m.y===y.y){t.loc=e.ORIGIN,t.t=0;return}if(m.x===g.x&&m.y===g.y){t.loc=e.DESTINATION,t.t=1;return}if(T<-Number.EPSILON){t.loc=e.LEFT;return}if(T>Number.EPSILON){t.loc=e.RIGHT;return}if(v*P<0||O*S<0){t.loc=e.BEHIND;return}if(Math.sqrt(v*v+O*O)<Math.sqrt(P*P+S*S)){t.loc=e.BEYOND;return}let I;v!==0?I=P/v:I=S/O,t.loc=e.BETWEEN,t.t=I}function a(m,y){let g=[],v=[];for(let O=1;O<m.length;O++){let P=m[O-1],S=m[O];for(let T=1;T<y.length;T++){let I=y[T-1],x=y[T],_=o(P,S,I,x);_!==null&&g.find(D=>D.t<=_.t+Number.EPSILON&&D.t>=_.t-Number.EPSILON)===void 0&&(g.push(_),v.push(new Ut.Vector2(_.x,_.y)))}}return v}function s(m,y,g){let v=new Ut.Vector2;y.getCenter(v);let O=[];return g.forEach(P=>{P.boundingBox.containsPoint(v)&&a(m,P.points).forEach(T=>{O.push({identifier:P.identifier,isCW:P.isCW,point:T})})}),O.sort((P,S)=>P.point.x-S.point.x),O}function l(m,y,g,v,O){(O==null||O==="")&&(O="nonzero");let P=new Ut.Vector2;m.boundingBox.getCenter(P);let S=[new Ut.Vector2(g,P.y),new Ut.Vector2(v,P.y)],T=s(S,m.boundingBox,y);T.sort((N,E)=>N.point.x-E.point.x);let I=[],x=[];T.forEach(N=>{N.identifier===m.identifier?I.push(N):x.push(N)});let _=I[0].point.x,D=[],A=0;for(;A<x.length&&x[A].point.x<_;)D.length>0&&D[D.length-1]===x[A].identifier?D.pop():D.push(x[A].identifier),A++;if(D.push(m.identifier),O==="evenodd"){let N=D.length%2===0,E=D[D.length-2];return{identifier:m.identifier,isHole:N,for:E}}else if(O==="nonzero"){let N=!0,E=null,B=null;for(let V=0;V<D.length;V++){let j=D[V];y[j]&&(N?(B=y[j].isCW,N=!1,E=j):B!==y[j].isCW&&(B=y[j].isCW,N=!0))}return{identifier:m.identifier,isHole:N,for:E}}else console.warn('fill-rule: "'+O+'" is currently not implemented.')}let c=0,u=999999999,p=-999999999,d=[];this.subPaths.forEach(m=>{let y=m.getPoints(),g=-999999999,v=999999999,O=-999999999,P=999999999;for(let S=0;S<y.length;S++){let T=y[S];T.y>g&&(g=T.y),T.y<v&&(v=T.y),T.x>O&&(O=T.x),T.x<P&&(P=T.x)}p<=O&&(p=O+1),u>=P&&(u=P-1),y.length&&d.push({curves:m.curves,points:y,isCW:Ut.ShapeUtils.isClockWise(y),identifier:c++,boundingBox:new Ut.Box2(new Ut.Vector2(P,v),new Ut.Vector2(O,g))})});let h=d.map(m=>l(m,d,u,p,this.userData?.style.fillRule)),f=[];return d.forEach(m=>{let y=h[m.identifier];if(y&&!y.isHole){let g=new Ut.Shape;g.curves=m.curves,h.filter(O=>O?.isHole&&O.for===m.identifier).forEach(O=>{if(O){let P=d[O.identifier],S=new Ut.Path;S.curves=P.curves,g.holes.push(S)}}),f.push(g)}}),f}};var jf=!1,sb,Ff=new Promise(n=>{sb=n}),ab=!1;var Qu;function lb(){if(jf=!0,ab)return;if(Qu)return Qu;async function n(){let e=await import("./opentype.js");sb(e),ab=!0}return Qu=n(),Qu}var El=class{async load(r,e,t=()=>{}){let{load:o}=await Ff;o(r,(i,a)=>{i||!a?t(i??"Something went wrong"):e(a)})}async parse(r){let{parse:e,Bidi:t}=await Ff;try{let o=e(r),i=new t,a=s=>o.charToGlyphIndex(s.char);return i.registerModifier("glyphIndex",null,a),i.applyFeatures(o,o.defaultRenderOptions.features),{font:o,bidi:i}}catch(o){console.error(o)}}};async function UM(n){return await(await fetch(n)).arrayBuffer()}var kM=new El;async function Uf(n){let r,e,t=!1;if(n.url?(r=await UM(n.url),e=n.url,t=n.url.startsWith("/")):n.data&&(r=n.data.buffer.slice(n.data.byteOffset,n.data.byteOffset+n.data.byteLength)),r)if(jf){let o=await kM.parse(r);if(o)return{font:o.font,url:e,intercepted:t,arr:r,bidi:o.bidi}}else return{font:void 0,url:e,intercepted:t,arr:r,bidi:null}}var ms=require("three");function HM(n,r){return r.state.glyphIndex===n||r.state.fina===n||r.state.medi===n||r.state.init===n}var Zu=class{constructor(r){this._arrayBuffer=new ArrayBuffer(1);this._isLoaded=!1;this._intercepted=!1;this._isUserFont=r.isUserFont??!1,this._loadingPromise=Uf(r).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(r){this._isLoaded=!1,this._isUserFont=r.isUserFont??!1,this._loadingPromise=Uf(r).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(r,e,t){if(!this._bidi)return[];let o=this._bidi;o.getTextGlyphs(e);let i=o.tokenizer.tokens,a=[],s=0,l=t.length===i.length;for(let c=0;c<t.length;c++){let u=t[c].index,p=String.fromCharCode(t[c].unicode),d=i[s];if(HM(u,d)||l)a.push({char:p,index:u,replacements:[d.state.glyphIndex],replacementChars:[d.char]}),s++;else{let h=d.char,f="",m=[d.state.glyphIndex],y=[],g=!1;for(;!g;)s++,f=e.charAt(s),h+=f,m.push(r.charToGlyphIndex(f)),y=r.stringToGlyphs(h),y.length===1&&y[0].index===u&&(g=!0),s>e.length&&(g=!0);a.push({char:p,index:u,replacements:m,replacementChars:Array.from(h)}),s++}}return a}generateShapes(r,e){if(!this._isLoaded)return;let t=this.font,o=e.fontSize/this.unitsPerEm,i=e.fontSize*e.lineHeight,a=r.map(v=>this.getTextWidth(v,e)),s=e.width,l=this.getCharWidth(`
2231
- `,e),c=e.horizontalAlign===1?l:0,u=this.computeSpaceWidthForLine(r,0,e),p=this.getLineInitialOffsetX(a[0],s,e.horizontalAlign,r[0],l),d=this.getLineInitialOffsetY(i,r.length,e.height,o,e.verticalAlign),h=[],f=r.map(v=>[]),m=r.map(v=>[]),y;for(let v=0;v<r.length;v++){let O=r[v],P={features:{liga:!0}},S=[];try{S=t.stringToGlyphs(O,P)}catch(I){console.warn(I)}p=this.getLineInitialOffsetX(a[v],s,e.horizontalAlign,O,l);let T=[];try{T=this.reverseLigaturesTable(t,O,S)}catch(I){console.warn(I)}u=this.computeSpaceWidthForLine(r,v,e);for(let I=0;I<S.length;I++){let x=S[I],_=x.index===0?`
2232
- `:x.unicode?String.fromCharCode(x.unicode):void 0,D=T[I],A=0,N=0;I===0&&e.horizontalAlign===2&&x.leftSideBearing!==void 0&&(N=-x.leftSideBearing*o),y&&(A=t.getKerningValue(x,y)*o),p+=N+A;let E=0;if(_===`
2233
- `)E=c;else if(_===" ")E=u;else{let B=this.createPath(x,o,p,d,e);B&&(E=B.offsetX-(A+N),h.push(B.path))}if(D.replacements.length===1)m[v].push([p,d]),f[v].push(E);else{let B=D.replacements.map(W=>(t.glyphs.get(W).advanceWidth??0)*o),V=B.reduce((W,F)=>W+=F,0),j=B.map(W=>W/V),R=p;for(let W=0;W<j.length;W++){let F=E*j[W];m[v].push([R,d]),f[v].push(F),R+=F}}p+=E,y=x}d-=i}let g=[];for(let v=0,O=h.length;v<O;v++)g.push(...h[v].toShapes());return{shapes:g,charWidths:f,lineWidths:a,charCoords:m}}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(r,e,t,o,i){return(t===3||t===2)&&o.indexOf(`
2234
- `)>=0&&(r-=i),t===3?e*.5-r*.5:t===2?e-r:0}getLineInitialOffsetY(r,e,t,o,i){let a=e*r,s=Math.abs(this.ascender-this.descender)*o,l=r-s,c=-this.ascender*o-l/2;return i===3?-(t-a-c):i===2?-(t*.5-a*.5-c):c}createPath(r,e,t,o,i){let a=r.getPath(t,-o,i.fontSize,{kerning:!1,letterSpacing:i.letterSpacing});if(!a){console.error('THREE.Font: character "'+r+'" does not exists in font family '+this.familyName+".");return}let s=new Ku,l=(r.advanceWidth??1)*e;if(r)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=WM(c.curves);u!==void 0&&c.currentPoint.distanceTo(u)>0&&c.lineTo(u.x,u.y)}),{offsetX:l+i.fontSize*i.letterSpacing,path:s}}getCharWidth(r,e){return this.font?.getAdvanceWidth(r,e.fontSize,{kerning:!0,letterSpacing:e.letterSpacing})??0}getTextWidth(r,e){return this.font?.getAdvanceWidth(r,e.fontSize,{kerning:!0,letterSpacing:e.letterSpacing})??0}computeSpaceWidthForLine(r,e,t){let o=this.getCharWidth(" ",t),i=r[e];if(i){let a=this.countSpaces(i.trimEnd());if(t.horizontalAlign===4&&e<r.length-1&&a){let s=t.width,l=this.getTextWidth(i,t);return(s-(l-a*o))/a}}return o}countSpaces(r){return(r.match(/ /g)||[]).length}};function WM(n){if(n.length){let r=n[0];if(r instanceof ms.LineCurve)return r.v1;if(r instanceof ms.CubicBezierCurve||r instanceof ms.QuadraticBezierCurve)return r.v0}}var kf=class{constructor(){this.objects=new Map;this.unreachable=new Set}getCached(r){return this.objects.get(r)}get size(){return this.objects.size}get(r,e,t){let o=this.objects.get(r);return o===void 0?(o=this.createObject(r,e,t),this.objects.set(r,o)):o.isShared=!0,o}forceDelete(r){let e=this.objects.get(r);e&&(this.disposeObject(e),this.objects.delete(r))}mutateIfUnique(r,e){let t=this.objects.get(r);if(t&&t.isShared!==!0)return this.objects.delete(r),this.objects.set(e,t),t}startGc(){this.unreachable=new Set(this.objects.keys())}markAsReachable(r,e){let t=this.objects.get(r);e===t?this.unreachable.delete(r):!1&&console.warn("Reachable but deleted",r)}endGc(){this.unreachable.forEach(r=>{this.disposeObject(this.objects.get(r)),this.objects.delete(r)}),this.unreachable.clear()}dispose(){this.objects.forEach(r=>{this.disposeObject(r)}),this.objects.clear()}},_l=class extends kf{constructor(e){super();this.flatShading=e}disposeObject(e){e.dispose()}createObject(e,t,o){let i=Jo(e,t,this.flatShading,o);return i.computeBoundingSphere(),i}};var cb={markNeedsUpdateRendererDirty:()=>{}};var Hf=require("three"),Wf=class extends qu{constructor(e){super();this.shared=e}create(e){return new fs(e,this.shared)}},wi=class{constructor(r,e={}){this.data=r;this.geometryCache=new _l(!0);this.geometryCache2=new _l(!1);this.imageHolderCache=new Wf(this);this.thisContext={scene:cb,shared:this};this.deletedMaterial=new vi(Qt.defaultTwoLayerData("phong"),this.thisContext,"");this.deletedImage=new Nr(uu.emptyImage,this);this.deletedVideo=new Nr(pa.defaultVideo,this);this.materials={};this.images={};this.canvases={};this.videos={};this.colors={};this.audios={};this.particles={};this.fonts={};this.variables={};this.mouseProperty=null;this.raycastProperty=null;this.requestRender=()=>{this._requestRender&&this._requestRender()};if(e.images)for(let[t,o]of Object.entries(e.images))this.addImage(t,o);if(e.videos)for(let[t,o]of Object.entries(e.videos))this.addVideo(t,o);if(e.audios)for(let[t,o]of Object.entries(e.audios))this.addAudio(t,o);if(e.particles)for(let[t,o]of Object.entries(e.particles))this.addParticle(t,o);this.reset(r)}setRequestRender(r){this._requestRender=r}setEntityOpContext(r){this.entityOpContext=r}reset(r,e=!1){this.resetLib(r.lib);for(let{id:t,data:o}of r.variables)this.addVariableHolder(t,o),e&&this.updateVariableHolder(t,o);for(let[t,o]of Object.entries(r.images))this.addImage(t,o);for(let[t,o]of Object.entries(r.videos))this.addVideo(t,o);for(let[t,o]of Object.entries(r.colors))this.addColor(t,o);for(let[t,o]of Object.entries(r.materials))this.addMaterial(t,o);for(let[t,o]of Object.entries(r.audios))this.addAudio(t,o);for(let[t,o]of Object.entries(r.particles))this.addParticle(t,o);for(let[t,o]of Object.entries(r.fonts))this.addFont(t,o)}addMaterial(r,e){if(this.materials[r]){let t=this.materials[r];t.reset(e,this.thisContext),t.dispose()}else{let t=new vi(e,this.thisContext,r);this.materials[r]=t}}deleteMaterial(r){this.materials[r]&&(this.materials[r].nodeMaterialDispose(),delete this.materials[r])}getMaterial(r){let e=this.materials[r];return e}getMaterialOrDeletedPlaceholder(r){return this.materials[r]??this.deletedMaterial}material(r){return typeof r=="string"?this.getMaterialOrDeletedPlaceholder(r):r==null?(console.error("material is undefined or null"),this.deletedMaterial):new bi(r,this.thisContext)}getMaterials(){return this.materials}addImage(r,e){return this.images[r]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),this.images[r].updateSrc(e.data),!0):(this.images[r]=new Nr(e,this),!1)}deleteImage(r){let e=this.images[r];e&&(e.dispose(),delete this.images[r])}getDefaultImage(){return this.images.image_0}getImage(r){return this.images[r]??this.deletedImage}image(r){return typeof r=="string"?this.getImage(r):this.imageHolderCache.load(r)}addCanvas(r,e){return this.canvases[r]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),this.canvases[r].updateSrc(e),!0):(this.canvases[r]=new Nr(e,this),!1)}canvas(r){return this.canvases[r]}addVideo(r,e){return this.videos[r]?(this.videos[r].updateSrc(e.data),!0):(this.videos[r]=new Nr(e,this),!1)}deleteVideo(r){let e=this.videos[r];e&&(e.dispose(),delete this.videos[r])}getVideo(r){return this.videos[r]??this.deletedVideo}video(r){return typeof r=="string"?this.getVideo(r):this.imageHolderCache.load(r)}addColor(r,e){return this.colors[r]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),"a"in e?this.colors[r].setRGBA(e.r,e.g,e.b,e.a):this.colors[r].setRGBA(e.r,e.g,e.b,1),!0):("a"in e?this.colors[r]=new Rn(e.r,e.g,e.b,e.a):this.colors[r]=new Rn(e.r,e.g,e.b,1),!1)}updateColor(r,e){if(this.colors[r]){this.onColorOrImageUpdate&&this.onColorOrImageUpdate();let t=this.colors[r];return this.colors[r].r=e.r??t.r,this.colors[r].g=e.g??t.g,this.colors[r].b=e.b??t.b,this.colors[r].a=e.a??t.a,!0}return!1}deleteColor(r){this.colors[r]&&delete this.colors[r]}getColor(r){return this.colors[r]}color(r){let e;if(typeof r=="string"){let t=this.getColor(r);t?e=t:(console.warn("Tried to create color layer params with a color key that does not exist in the assets manager"),e=new Ft(0,0,0,0))}else return"a"in r?new Ft(r.r,r.g,r.b,r.a):new Ft(r.r,r.g,r.b,1);return e}addAudio(r,e){this.audios[r]=e}getAudio(r){let e=this.audios[r];if(e instanceof Si)return e;{let t=new Si({src:e.data});return this.audios[r]=t,t}}addParticle(r,e){this.particles[r]=e}getParticle(r){return this.particles[r]}deleteParticle(r){this.particles[r]&&delete this.particles[r]}deleteAudio(r){let e=this.audios[r];e&&(e instanceof Si&&e.dispose(),delete this.audios[r])}addFont(r,e){this.fonts[r]=new Zu(e),this.fonts[r].loadingPromise.then(()=>this.requestRender())}getFont(r){return this.fonts[r]}deleteFont(r){this.fonts[r]&&delete this.fonts[r]}dispose(){Object.keys(this.materials).forEach(e=>this.deleteMaterial(e)),this._requestRender=void 0,Object.values(this.audios).forEach(e=>{e instanceof Si&&e.dispose()}),this.audios={},this.particles={},this.geometryCache.dispose(),this.geometryCache2.dispose()}addVariableHolder(r,e){return this.variables[r]===void 0?(this.variables[r]={value:e.value,locations:[]},"dynamicVariableType"in e&&(this.variables[r].dynamicVariablePlayState="Playing",this.variables[r].dynamicVariableToggleIsForward=void 0),!0):(this.variables[r].value=e.value,!1)}resetDynamicVariablePlayState(){for(let r in this.variables)this.variables[r].dynamicVariablePlayState!==void 0&&(this.variables[r].dynamicVariablePlayState="Playing",this.variables[r].dynamicVariableToggleIsForward=void 0)}updateVariableHolder(r,e){this.updateVariable(r,e.value)}updateVariable(r,e){if(this.variables[r]===void 0)return!1;this.variables[r].value=e;let t=e;for(;typeof t=="string";)t=this.variables[t].value;let o=this.entityOpContext.scene;for(let i=this.variables[r].locations.length-1;i>=0;i--){let a=this.variables[r].locations[i];if(a[0]==="material"){let s=a[1],l=t,c={scene:o,shared:this},u=a.slice(2);o.traverseMaterial(d=>{let h=d.root??d;h.uuid===s&&h.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[r].locations.splice(i,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]]=t*Hf.MathUtils.DEG2RAD:s[a[a.length-1]]=t}if(s=o.find(a[0]),s.type==="ParticleEmitter"&&s.updateVariableState(t,a),je.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.instances.forEach(u=>{let p=u.dataPatched;u.chooseGeoemtryCache(this).forceDelete(p.geometry),u.createGeometryDelayed(this.entityOpContext),u.onVariableUpdate(!0)})}}}}return this.requestRender(),!0}deleteVariable(r){this.variables[r]&&delete this.variables[r]}getVariable(r,e){if(Array.isArray(r)){if(r[0]==="mouse")return this.mouseProperty?.[r[1]]??0;if(r[0]==="raycast")return this.raycastProperty?.[r[1]]??0;let t=this.entityOpContext.scene.find(r[0]);if(r[1]==="width"||r[1]==="height"||r[1]==="depth")return t.geometry.userData.parameters[r[1]];for(let o=1;o<r.length;o++)t=t[r[o]];return r[1]==="rotation"&&(t*=Hf.MathUtils.RAD2DEG),t}for(let t in this.variables){if(e===void 0)break;let o=this.variables[t],i=o.locations?.findIndex(a=>yt.equal(a,e));i!==void 0&&i!==-1&&o.locations.splice(i,1)}if(typeof r=="string"){let t=r,o=r;do{if(o=t,this.variables[t]===void 0)break;let i=this.variables[t].value;e&&this.variables[o]!==void 0&&this.variables[o].locations.push(e),t=i}while(typeof t=="string");return t}else return r}getVariables(){return this.variables}getDynamicVariablePlayState(r){return this.variables[r]?.dynamicVariablePlayState}setDynamicVariablePlayState(r,e){this.variables[r]!==void 0&&(this.variables[r].dynamicVariablePlayState=e)}getDynamicVariableToggleIsForward(r){return this.variables[r]?.dynamicVariableToggleIsForward}setDynamicVariableToggleIsForward(r,e){this.variables[r]!==void 0&&(this.variables[r].dynamicVariableToggleIsForward=e)}resetLib(r){for(let[e,t]of Object.entries(r.images))this.addImage(e,t.asset);for(let[e,t]of Object.entries(r.audios))this.addAudio(e,t.asset);for(let[e,t]of Object.entries(r.particles))this.addParticle(e,t.asset);for(let[e,t]of Object.entries(r.colors))this.addColor(e,t.asset);for(let[e,t]of Object.entries(r.fonts))this.addFont(e,t.asset);for(let[e,t]of Object.entries(r.materials))this.addMaterial(e,t.asset);for(let[e,t]of Object.entries(r.videos))this.addVideo(e,t.asset);for(let[e,t]of Object.entries(r.variables))this.addVariableHolder(e,t.asset)}updateLibByOp(r,e){r.path[0]==="images"?r.path.length===1&&r.type===1?this.addImage(r.id,r.data.asset):r.path.length===1&&r.type===2&&this.deleteImage(r.id):r.path[0]==="videos"?r.path.length===1&&r.type===1?this.addVideo(r.id,r.data.asset):r.path.length===1&&r.type===2&&this.deleteVideo(r.id):r.path[0]==="audios"?r.path.length===1&&r.type===1?this.addAudio(r.id,r.data.asset):r.path.length===1&&r.type===2&&this.deleteAudio(r.id):r.path[0]==="particles"?r.path.length===1&&r.type===1?this.addParticle(r.id,r.data.asset):r.path.length===1&&r.type===2&&this.deleteParticle(r.id):r.path[0]==="colors"?r.path.length===1&&r.type===1?this.addColor(r.id,r.data.asset):r.path.length===1&&r.type===2&&this.deleteColor(r.id):r.path[0]==="materials"?r.path.length===1&&r.type===1?this.addMaterial(r.id,r.data.asset):r.path.length===1&&r.type===2&&this.deleteMaterial(r.id):r.path[0]==="fonts"?r.path.length===1&&r.type===1?this.addFont(r.id,r.data.asset):r.path.length===1&&r.type===2&&this.deleteFont(r.id):r.path[0]==="variables"?r.path.length===1&&r.type===1?this.addVariableHolder(r.id,r.data.asset):r.path.length===1&&r.type===2&&this.deleteVariable(r.id):r.path[0]==="components"&&e.updateByLibOp(r,this)}updateByOp(r,e,t){this.data=e,r.path[0]==="images"?r.path.length===2&&r.type===0?r.props.data&&this.getImage(r.path[1]).updateSrc(r.props.data):r.path.length===1&&r.type===1?this.addImage(r.id,r.data):r.path.length===1&&r.type===2&&this.deleteImage(r.id):r.path[0]==="videos"?r.path.length===2&&r.type===0?r.props.data&&this.getVideo(r.path[1]).updateSrc(r.props.data):r.path.length===1&&r.type===1?this.addVideo(r.id,r.data):r.path.length===1&&r.type===2&&this.deleteVideo(r.id):r.path[0]==="audios"?r.path.length===2&&r.type===0?r.props.data&&this.addAudio(r.path[1],e.audios[r.path[1]]):r.path.length===1&&r.type===1?this.addAudio(r.id,r.data):r.path.length===1&&r.type===2&&this.deleteAudio(r.id):r.path[0]==="particles"?r.path.length===2&&r.type===0?r.props.data&&this.addParticle(r.path[1],e.particles[r.path[1]]):r.path.length===1&&r.type===1?this.addParticle(r.id,r.data):r.path.length===1&&r.type===2&&this.deleteParticle(r.id):r.path[0]==="colors"?r.path.length===2&&r.type===0?this.updateColor(r.path[1],r.props):r.path.length===1&&r.type===1?this.addColor(r.id,r.data):r.path.length===1&&r.type===2&&this.deleteColor(r.id):r.path[0]==="materials"?r.path.length===1&&r.type===1?this.addMaterial(r.id,r.data):r.path.length===1&&r.type===2?this.deleteMaterial(r.id):r.path.length>1&&this.getMaterial(r.path[1]).updateByOp(gt.drop(r,2),e.materials[r.path[1]],{shared:this,scene:t}):r.path[0]==="fonts"?r.path.length===2&&r.type===0?this.updateFont(r.path[1],r,t):r.path.length===1&&r.type===1?this.addFont(r.id,r.data):r.path.length===1&&r.type===2&&this.deleteFont(r.id):r.path[0]==="variables"?r.path.length===2&&r.type===0&&"value"in r.props?this.updateVariable(r.path[1],r.props.value):r.path.length===1&&r.type===4?this.addVariableHolder(r.id,r.data):r.path.length===1&&r.type===5&&this.deleteVariable(r.id):r.path[0]==="lib"&&this.updateLibByOp(gt.drop(r,1),t)}updateFont(r,e,t){if(e.props.url){let o=this.getFont(r),i={...this.data.fonts[r],url:e.props.url};o.update(i),o.loadingPromise.then(()=>this.requestRender()),t.updateFont(r,this)}}},ub=new wi(zr.emptyData());var wr=class extends Gt{updateByPatchedOp(e,t,o){if(super.updateByPatchedOp(e,t,o),ng(e.path,["materials"])!==null&&e.type===0&&Array.isArray(this.material))for(let[i,a]of Object.entries(e.props)){let s=o.shared.material(a);this.material[Number(i)]=s}else if(Ge(e.path,["material"])&&this.material instanceof Sr)"material"in t&&typeof t.material!="string"&&this.material.updateByOp(gt.drop(e,1),t.material,o);else if(Ge(e.path,["materials","*"])&&Array.isArray(this.material)){let i=e.path[1];if("materials"in t&&i<this.material.length){let a=t.materials[i];typeof a!="string"&&this.material[i].updateByOp(gt.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,t){super.updateState(e,t),e.castShadow!==void 0&&(this.castShadow=e.castShadow),e.receiveShadow!==void 0&&(this.receiveShadow=e.receiveShadow);let o=this.dataPatched;if(e.geometry?.type!=="NonParametricGeometry"&&"material"in e&&e.material!==void 0&&(this.disposeMaterial(),this.material=t.shared.material(e.material).getFlavor(o.flatShading,o.side,o.wireframe),t.scene.markNeedsUpdateRendererDirty()),(e.geometry?.type==="NonParametricGeometry"||"materials"in e)&&("materials"in e&&e.materials!==void 0?(this.disposeMaterial(),this.material=e.materials.map(i=>t.shared.material(i).getFlavor(o.flatShading,o.side,o.wireframe)),t.scene.markNeedsUpdateRendererDirty()):"material"in e&&e.material!==void 0&&(this.disposeMaterial(),this.material=[t.shared.material(e.material).getFlavor(o.flatShading,o.side,o.wireframe)],t.scene.markNeedsUpdateRendererDirty())),e.flatShading!==void 0||e.wireframe!==void 0||e.side!==void 0)if(Array.isArray(this.material))for(let i=0;i<this.material.length;i++)this.material[i]=this.material[i].getFlavor(o.flatShading,o.side,o.wireframe);else this.material=this.material.getFlavor(o.flatShading,o.side,o.wireframe)}disposeMaterial(){this.material&&rc(this.material).forEach(e=>{e instanceof Sr&&(e instanceof vi||e.nodeMaterialDispose())})}dispose(){this.disposeMaterial(),super.dispose()}};var Dr=require("three");var db=new Dr.Vector3,pb=new Dr.Vector4,fb=new Dr.Vector4,$M=new Dr.Vector3,hb=new Dr.Matrix4,St=class extends wr{constructor(e,t,o){super(e,t);this.data=t;this.isSkinnedMesh=!1;this.localGeometry=void 0,t.bindMode&&t.bindMatrix&&(this.bindMode=t.bindMode,this.bindMatrix=new Dr.Matrix4().fromArray(t.bindMatrix),this.bindMatrixInverse=new Dr.Matrix4)}chooseGeoemtryCache(e){return e.geometryCache}markGeometryAsReachable(e){this.geometryCreateDeleyed instanceof Dr.BufferGeometry&&this.chooseGeoemtryCache(e).markAsReachable(this.dataPatched.geometry,this.geometryCreateDeleyed)}get geometry(){if(this.localGeometry!==void 0)return this.localGeometry;if(this.geometryCreateDeleyed instanceof wi){let e=this.geometryCreateDeleyed,t=this.chooseGeoemtryCache(e);this.geometryCreateDeleyed=t.get(this.dataPatched.geometry,e,this)}return this.geometryCreateDeleyed}set geometry(e){this.localGeometry=e}get is2DAndNoDepth(){let e=this.dataPatched.geometry;return Zs.is2DParametricMesh(e.type)&&e.depth===0}get is2DType(){return Zs.is2DParametricMesh(this.geometry.userData.type)}get isNonParametric(){return this.geometry.userData.type==="NonParametricGeometry"}updateByPatchedOp(e,t,o){super.updateByPatchedOp(e,t,o),Ge(e.path,["geometry"])&&this.updateByPatchedOpGeometry(gt.drop(e,1),t.geometry,o)}removeInteractionGeometry(e){this.localGeometry?.dispose(),this.localGeometry=void 0}updateGeometryInteractions(e,t){this.invalidateDownstreamBooleanData();let o=this.data.geometry.type;if(o==="NonParametricGeometry"||o==="SubdivGeometry"){let i=e;if(this.localGeometry===void 0){let u={...this.data.geometry,...i};this.localGeometry=Jo(u,t,this.data.flatShading,this)}let a,s,l;i.scaleBaked?[a,s,l]=i.scaleBaked:{width:a,height:s,depth:l}=i;let c=this.localGeometry.userData;c.sxPrev!==void 0&&yl(this.localGeometry.attributes,a/c.sxPrev,s/c.syPrev,l/c.szPrev),c.sxPrev=a,c.syPrev=s,c.szPrev=l}else{let i={...this.data.geometry,...e};this.localGeometry?.dispose(),this.localGeometry=Jo(i,t,this.data.flatShading,this)}}refreshAttachedCloners(e){for(let t of this.attachedSurfaceCloners)e.scene.addPendingUpdateCloner(t.object)}refreshAttachedPaths(e){for(let t of this.attachedPaths)e.scene.addPendingCommand(()=>t.updateShape())}createGeometryDelayed(e){this.geometryCreateDeleyed=e.shared,this.refreshAttachedCloners(e),this.refreshAttachedPaths(e)}updateByPatchedOpGeometry(e,t,o){let i=!1;e.type===0&&e.path.length===0&&Object.keys(e.props).includes("scaleBaked")&&this.geometryCreateDeleyed instanceof Nt&&this.chooseGeoemtryCache(o.shared).mutateIfUnique(this.geometryCreateDeleyed.data,t)===this.geometryCreateDeleyed&&(i=!0,this.geometryCreateDeleyed.mutateDirectlyScaleBaked(t,e.props.scaleBaked),this.refreshAttachedCloners(o),this.refreshAttachedPaths(o)),i||(o.scene?.markGeometryCacheDirty(),this.createGeometryDelayed(o)),this.resetBBoxNeedsUpdate(),this.invalidateDownstreamBooleanData()}updateGeometryOnStateUpdate(e,t){this.createGeometryDelayed(t)}updateState(e,t){e.geometry!==void 0&&this.updateGeometryOnStateUpdate(e.geometry,t),super.updateState(e,t)}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,t){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),t.set(o.width,o.height,o.depth??0).multiplyScalar(.5)):e.setScalar(0),t.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,t){this.skeleton=e,this.isSkinnedMesh=!0,t===void 0&&(this.updateMatrixWorld(!0),this.skeleton.calculateInverses(),t=this.matrixWorld),this.bindMatrix.copy(t),this.bindMatrixInverse.copy(t).invert()}pose(){this.skeleton.pose()}normalizeSkinWeights(e){let t=new Dr.Vector4,o=this.geometry.attributes.skinWeight;for(let i=0,a=o.count;i<a;i++){t.fromBufferAttribute(o,i);let s=1/t.manhattanLength();s!==1/0?t.multiplyScalar(s):t.set(1,0,0,0),o.setXYZW(i,t.x,t.y,t.z,t.w)}}boneTransform(e,t){let o=this.skeleton;if(o===void 0)return;let i=this.geometry;pb.fromBufferAttribute(i.attributes.skinIndex,e),fb.fromBufferAttribute(i.attributes.skinWeight,e),db.copy(t).applyMatrix4(this.bindMatrix),t.set(0,0,0);for(let a=0;a<4;a++){let s=fb.getComponent(a);if(s!==0){let l=pb.getComponent(a);hb.multiplyMatrices(o.bones[l].matrixWorld,o.boneInverses[l]),t.addScaledVector($M.copy(db).applyMatrix4(hb),s)}}return t.applyMatrix4(this.bindMatrixInverse)}};function YM(n){if(n.geometry.attributes.extrudeNormal||!n.geometry.attributes.position||!n.geometry.attributes.normal)return;let r=new Map,e=n.geometry.attributes,t=e.position.array,o=e.normal.array,i=new Float32Array(t.length);for(let a=0;a<t.length;a+=3){let s=`${t[a]}_${t[a+1]}_${t[a+2]}`,l=new Er.Vector3(o[a],o[a+1],o[a+2]);r.has(s)?r.get(s)?.normals.push(l):r.set(s,{normals:[l],result:new Er.Vector3})}r.forEach((a,s)=>{for(let l of a.normals)a.result.add(l);a.result.divideScalar(a.normals.length)});for(let a=0;a<t.length;a+=3){let s=`${t[a]}_${t[a+1]}_${t[a+2]}`,l=r.get(s)?.result;l&&(i[a]=l.x,i[a+1]=l.y,i[a+2]=l.z)}n.geometry.setAttribute("extrudeNormal",new Er.Float32BufferAttribute(i,3))}function XM(n){if(n.geometry.attributes.extrudeNormals||!n.geometry.attributes.position)return;let e=n.geometry.attributes.position.array,t=new Float32Array(e.length),o=new Er.Vector3;for(let i=0;i<e.length;i+=3)o.set(e[i],e[i+1],e[i+2]).normalize(),t[i]=o.x,t[i+1]=o.y,t[i+2]=o.z;n.geometry.setAttribute("extrudeNormal",new Er.Float32BufferAttribute(t,3))}function ys(n){if(Array.isArray(n.material)){for(let r of n.material)if(r.getLayersOfType("outline").length===0)return}else if(!(n.material instanceof Sr)||n.material.getLayersOfType("outline").length===0)return;n instanceof St&&n.is2DAndNoDepth?XM(n):YM(n)}function gs(n){if(!n.geometry.attributes.position)return;let e=n.geometry.attributes.position.array,t=new Float32Array(e.length),o=parseInt(n.uuid.replace(/\D/g,"")),i=[Er.MathUtils.seededRandom(o),Er.MathUtils.seededRandom(o+1e4),Er.MathUtils.seededRandom(o+2e4)];for(let a=0;a<e.length;a++)t[a]=i[a%3];n.geometry.setAttribute("randomColor",new Er.BufferAttribute(t,3))}var Io=new on.Box3,Bl=new on.Vector3;function mb(n){let r=!1;return n.scene.objects.traverse((e,t)=>{t.type==="Mesh"&&t.geometry.type==="SubdivGeometry"&&(r=!0)}),r}var Pi=class extends St{constructor(e,t,o){super(e,t,o);this.data=t;this.hiddenMatrixOld=new on.Matrix4;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,t){let o=this.geometry.userData.parameters;e.copy(this.originalGeometryNew.boundingSphere.center),t.set(o.width,o.height,o.depth??0).multiplyScalar(.5)}createGeometryByControls(e){if(this.skipReactionUpdate===!0)return;let t=this.localGeometry?.uuid,{originalGeometry:o,subdividedGeometry:i,subdivPointer:a}=Nt.build(e,this.subdivPointer,this.smoothShading,this.hasNonUniformScale?this.shearScale:void 0);this.subdivPointer=a,o!==void 0&&(this.originalGeometry?.dispose(),this.originalGeometry=o),i!==void 0&&(this.subdividedGeometry?.dispose(),this.subdividedGeometry=i??void 0),this.localGeometry=this.subdividedGeometry??this.originalGeometry,ys(this),gs(this),this.calcBoundingBox(),t&&(this.localGeometry.uuid=t)}updateState(e,t){if(super.updateState(e,t),e.flatShading!==void 0){let o=this.material;this.material=Array.isArray(o)?o.map(i=>i.getFlavor(!1,i.side,i.wireframe)):o.getFlavor(!1,o.side,o.wireframe),this.smoothShading=!e.flatShading,this.createGeometryDelayed(t)}}updateMesh(e=!1){Nt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0),this.subdividedGeometry&&Nt.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0)}updateTopology(){this.originalGeometry.dispose(),this.originalGeometry=Nt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=Nt.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1)),this.localGeometry=this.subdividedGeometry??this.originalGeometry}raycast(e,t){let o=this.localGeometry;this.localGeometry=this.originalGeometryNew,Gt.prototype.raycast.call(this,e,t),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 on.Sphere,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let t=e.attributes.position,o=e.boundingSphere.center;Io.setFromBufferAttribute(t),Io.getCenter(o),e.boundingSphere.radius=o.distanceTo(Io.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),Io.getSize(Bl),this.hasNonUniformScale&&Bl.divide(this.scale);let i={width:Bl.x,height:Bl.y,depth:Bl.z};return this.geometry.userData.parameters=i,i}updateBoundingSphere(e){let t=this.originalGeometry;Io.min.set(e[0],e[2],e[4]),Io.max.set(e[1],e[3],e[5]),this.hasNonUniformScale&&(Io.min.applyMatrix4(this.shearScaleInv),Io.max.applyMatrix4(this.shearScaleInv)),t.boundingSphere===null&&(t.boundingSphere=new on.Sphere);let o=t.boundingSphere.center;Io.getCenter(o),t.boundingSphere.radius=o.distanceTo(Io.max)}freeSubdivPointer(){this.subdivPointer&&(Nt.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0),this.localGeometry=void 0,this.originalGeometry?.dispose(),this.subdividedGeometry?.dispose()}dispose(){super.dispose(),this.freeSubdivPointer()}updateByPatchedOpGeometry(e,t,o){super.updateByPatchedOpGeometry(e,t,o),this.localGeometry&&this.createGeometryByControls(t)}};var No=require("three"),yb=-1,KM=1,gb={x:[1,0,0],"-x":[-1,0,0],y:[0,1,0],"-y":[0,-1,0],z:[0,0,1],"-z":[0,0,-1]},xb={polygon_center:0,edge:1,vertex:2},Ll=(n,r)=>(e,t)=>!r||e===0||n===0?0:n*t/100,Ie=(n,r)=>{let e=Math.abs(r),t=e*-1;return(n-yb)*(e-t)/(KM-yb)+t};function bb(n){let r=[],e={};for(var t=0,o=n.length;t<o;t++){var i=JSON.stringify(n[t].pos.map(a=>Math.round(a*1e4)/1e4));e[i]||(r.push(n[t]),e[i]=!0)}return r}var QM=new No.Vector3,Ju=new No.Vector3,ZM=new No.Vector3,JM=new No.Vector3;function xs(n,r){let e=ZM.fromArray(n),t=JM.fromArray(r);Ju.copy(t).sub(e);let o=Ju.length();return Ju.normalize().multiplyScalar(o*.5),QM.copy(e).add(Ju).toArray()}var Fr=new No.Triangle,ed=new No.Vector3,td=new No.Vector3,Oi=new No.Vector3;function vb(n){let r=[];for(let e=0;e<=n.index.count;e++)if(ed.fromArray(n.index.array,e*3),Fr.setFromAttributeAndIndices(n.attributes.position,ed.x,ed.y,ed.z),Fr.getNormal(td),Fr.getMidpoint(Oi),!(isNaN(Oi.x)||isNaN(Oi.y)||isNaN(Oi.z))){let{a:t,b:o,c:i}=Fr,a=t.toArray(),s=o.toArray(),l=i.toArray(),c=t.distanceTo(o),u=o.distanceTo(i),p=i.distanceTo(t),d=xs(a,s),h=xs(s,l),f=xs(l,a),m=[c,u,p],y=Math.max(...m),g=m.filter(P=>Math.round(P)===Math.round(y)).length>1,v=[],O=Fr.getMidpoint(Oi).toArray();y===c&&!g&&(v=[h,f,f],O=d),y===u&&!g&&(v=[d,f,f],O=h),y===p&&!g&&(v=[d,h,h],O=f),g&&(v=[d,h,f]),r.push({vertices:[a,s,l],faceCenters:v,midpoint:O,norm:Fr.getNormal(td).toArray()})}return r}function Sb(n){let r=[],{position:e}=n.attributes;for(let t=0;t<e.count;t++){Fr.setFromAttributeAndIndices(e,t*3,t*3+1,t*3+2),Fr.getNormal(td),Fr.getMidpoint(Oi);let o=Fr.a.toArray(),i=Fr.b.toArray(),a=Fr.c.toArray();r.push({vertices:[o,i,a],faceCenters:[xs(o,i),xs(i,a),xs(a,o)],midpoint:Oi.toArray(),norm:td.toArray()})}return r}var eI=4,tI=.5,qf=n=>.5*(1-Math.cos(n*Math.PI)),$f=class{constructor(){this.perlin=new Array(4095+1)}noise(r,e=0,t=0){if(this.perlin==null){this.perlin=new Array(4095+1);for(let g=0;g<4095+1;g++)this.perlin[g]=Math.random()}r<0&&(r=-r),e<0&&(e=-e),t<0&&(t=-t);let o=Math.floor(r),i=Math.floor(e),a=Math.floor(t),s=r-o,l=e-i,c=t-a,u,p,d=0,h=.5,f,m,y;for(let g=0;g<eI;g++){let v=o+(i<<4)+(a<<8);u=qf(s),p=qf(l),f=this.perlin[v&4095],f+=u*(this.perlin[v+1&4095]-f),m=this.perlin[v+16&4095],m+=u*(this.perlin[v+16+1&4095]-m),f+=p*(m-f),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),f+=qf(c)*(m-f),d+=f*h,h*=tI,o<<=1,s*=2,i<<=1,l*=2,a<<=1,c*=2,s>=1&&(o++,s--),l>=1&&(i++,l--),c>=1&&(a++,c--)}return d}noiseSeed(r){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(r),this.perlin=new Array(4095+1);for(let t=0;t<4095+1;t++)this.perlin[t]=e.rand()}},wb=$f;var vs=require("three");var Pb=new vs.Vector3,Ob=new vs.Matrix4,Cb=new vs.Ray;function Tb(n){let r=!1;return n.scene.objects.traverse((e,t)=>{t.type==="Mesh"&&t.geometry.type==="TextGeometry"&&(r=!0)}),r}var bs=class extends St{constructor(e,t,o){super(e,t,o);this.data=t}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,t){let{matrixWorld:o}=this;if(!(isNaN(e.ray.origin.x)||this.scale.x===0||this.scale.y===0||this.scale.z===0)&&(Ob.copy(o).invert(),Cb.copy(e.ray).applyMatrix4(Ob),Cb.intersectBox(this.singleBBox,Pb))){let i=Pb.applyMatrix4(o),a=e.ray.origin.distanceTo(i);t.push({distance:a,point:i.clone(),object:this})}}};var pr=1e-4,Do,Ib,Nb,Db,Ab=new Ze.Vector3,Mb=new Ze.Vector3;_u.then(n=>{Do=n,Ib=[Do.get_face_center,Do.get_edge_midpoint,Do.get_vertex_position],Nb=[Do.get_face_normal,Do.get_edge_normal,Do.get_vertex_normal],Db=[Do.face_count,Do.edge_count,Do.vertex_count]});var rI=new Ze.Matrix4,oI=new Ze.Matrix4,Gn=new Ze.Vector3,rd=new Ze.Vector3,Rl=new Ze.Vector3,Yf=new Ze.Vector3,nI=new Ze.Vector3,iI=new Ze.Vector3;var nn=new wb,ws=class extends Oa(Ze.Object3D){constructor(e,t){super();this.parameters=t;this.objectForSample=void 0;this._pendingMediaLoad=!1;this.object=e}resetOnMove(){this.removeFromParent(),this.parent=null}expandClones(e){if(this.parent===null)this.updateState(this.parameters,e);else for(let t of this.children)t instanceof Xo&&t.expand()}invalidateTransform(e){this.matrixWorldNeedsUpdate=!0,this.traverse(t=>{t instanceof Xo&&t.object===e&&(t.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 t;if(e!==void 0?t=e:t=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"&&!this.parameters.toObject.object&&(t=0),this.parameters.type==="toObject"&&this.objectForSample){for(let i=0,a=this.children.length;i<a;++i)this.remove(this.children[0]);let o=this.children;if(o.length===t)return;if(o.length<t)for(let i=0,a=t-o.length;i<a;++i){let s=new Xo(this.object);s.expand(),this.add(s)}else for(let i=0,a=o.length-t;i<a;++i)this.remove(o[i])}else{if(this.children.length===t)return;if(this.children.length<t)for(let o=0,i=t-this.children.length;o<i;++o){let a=new Xo(this.object);a.expand(),this.add(a)}else for(let o=0,i=this.children.length-t;o<i;++o)this.remove(this.children[0])}}_updateRadial(e){let t=e.radial,o=t.start*Ze.MathUtils.DEG2RAD,i=t.end*Ze.MathUtils.DEG2RAD,a=o-i,s=new Ze.Euler(t.rotation[0],t.rotation[1],t.rotation[2]),l;switch(t.axis){case"z":l=new Ze.Vector3(0,0,1);break;case"y":l=new Ze.Vector3(0,1,0);break;default:case"x":l=new Ze.Vector3(1,0,0);break}let c=e.randomnessObject??vo.defaultData([1,1,1]).randomnessObject,u=c.noiseType==="perlin";nn.noiseSeed(c.seed);let p=mu((0,Ss.default)(c.seed)),d=Ll(c.strength,this.parameters.randomness);for(let[h,f]of this.children.entries()){let m=h*(c.freqScale/10)+c.movement,y=u?nn.noise(m):p(m,m),g=h+1;f.scale.x=t.scale[0]+d(g,Ie(y,c.scale[0]))||pr,f.scale.y=t.scale[1]+d(g,Ie(y,c.scale[1]))||pr,f.scale.z=t.scale[2]+d(g,Ie(y,c.scale[2]))||pr,f.position.setScalar(0);let v=a/e.count*h-o;switch(t.axis){case"x":f.rotation.set(0,v,0);break;case"y":f.rotation.set(0,0,v);break;case"z":f.rotation.set(v,0,0);break}f.translateOnAxis(l,t.radius),f.position.x+=t.position[0]+d(g,Ie(y,c.position[0])),f.position.y+=t.position[1]+d(g,Ie(y,c.position[1])),f.position.z+=t.position[2]+d(g,Ie(y,c.position[2]));let O=d(g,Ie(y,c.rotation[0])),P=d(g,Ie(y,c.rotation[1])),S=d(g,Ie(y,c.rotation[2]));t.alignment===!0?(f.rotation.x+=s.x+O,f.rotation.y+=s.y+P,f.rotation.z+=s.z+S):f.rotation.set(s.x+O,s.y+P,s.z+S)}}_updateLinear(e){if(e.type!=="linear")throw new Error;let t=e.linear,o=new Ze.Euler(t.rotation[0],t.rotation[1],t.rotation[2]),i=e.randomnessObject??vo.defaultData([1,1,1]).randomnessObject,a=i.noiseType==="perlin";nn.noiseSeed(i.seed);let s=mu((0,Ss.default)(i.seed)),l=Ll(i.strength,this.parameters.randomness);for(let[c,u]of this.children.entries()){let p=c*(i.freqScale/10)+i.movement,d=a?nn.noise(p):s(p,p),h=c+1,f=l(h,Ie(d,i.rotation[0])),m=l(h,Ie(d,i.rotation[1])),y=l(h,Ie(d,i.rotation[2]));u.scale.x=1+(t.scale[0]-1)*c+l(h,Ie(d,i.scale[0]))||pr,u.scale.y=1+(t.scale[1]-1)*c+l(h,Ie(d,i.scale[1]))||pr,u.scale.z=1+(t.scale[2]-1)*c+l(h,Ie(d,i.scale[2]))||pr,u.rotation.x=o.x*c+f,u.rotation.y=o.y*c+m,u.rotation.z=o.z*c+y,u.position.x=t.position[0]*c+l(h,Ie(d,i.position[0])),u.position.y=t.position[1]*c+l(h,Ie(d,i.position[1])),u.position.z=t.position[2]*c+l(h,Ie(d,i.position[2]))}}_updateGrid(e){let t=0,o=e.grid,i=e.randomnessObject??vo.defaultData([1,1,1]).randomnessObject,a=Ll(i.strength,this.parameters.randomness),s=i.noiseType==="perlin";nn.noiseSeed(i.seed);let l=cx((0,Ss.default)(i.seed));if(o.useCenter===!0){let c={x:o.count[0]%2===0?2:1,y:o.count[1]%2===0?2:1,z:o.count[2]%2===0?2:1},u=new Ze.Vector3(o.size[0]*(o.count[0]-c.x)*.5,o.size[1]*(o.count[1]-c.y)*.5,o.size[2]*(o.count[2]-c.z)*.5);for(let p=0;p<o.count[0];p++)for(let d=0;d<o.count[1];d++)for(let h=0;h<o.count[2];h++){let f=[(p+1)*(i.freqScale/10)+i.movement,(d+1)*(i.freqScale/10)+i.movement,(h+1)*(i.freqScale/10)+i.movement],m=s?nn.noise(...f):l(...f),y=this.children[t++];y.scale.x=1+a(t,Ie(m,i.scale[0]))||pr,y.scale.y=1+a(t,Ie(m,i.scale[1]))||pr,y.scale.z=1+a(t,Ie(m,i.scale[2]))||pr;let g=a(t,Ie(m,i.rotation[0])),v=a(t,Ie(m,i.rotation[1])),O=a(t,Ie(m,i.rotation[2]));y.rotation.set(g,v,O),y.position.x=o.size[0]*p-u.x+a(t,Ie(m,i.position[0])),y.position.y=o.size[1]*d-u.y+a(t,Ie(m,i.position[1])),y.position.z=o.size[2]*h-u.z+a(t,Ie(m,i.position[2]))}}else for(let c=0;c<o.count[0];c++)for(let u=0;u<o.count[1];u++)for(let p=0;p<o.count[2];p++){let d=[(c+1)*(i.freqScale/10)+i.movement,(u+1)*(i.freqScale/10)+i.movement,(p+1)*(i.freqScale/10)+i.movement],h=s?nn.noise(...d):l(...d),f=this.children[t++];f.scale.x=1+a(t,Ie(h,i.scale[0]))||pr,f.scale.y=1+a(t,Ie(h,i.scale[1]))||pr,f.scale.z=1+a(t,Ie(h,i.scale[2]))||pr;let m=a(t,Ie(h,i.rotation[0])),y=a(t,Ie(h,i.rotation[1])),g=a(t,Ie(h,i.rotation[2]));f.rotation.set(m,y,g),f.position.x=o.size[0]*c+a(t,Ie(h,i.position[0])),f.position.y=-o.size[1]*u+a(t,Ie(h,i.position[1])),f.position.z=-o.size[2]*p+a(t,Ie(h,i.position[2]))}}_updateToObject(e){if(e.type!=="toObject")throw new Error;let{toObject:t}=e,o=new Ze.Euler(t.rotation[0],t.rotation[1],t.rotation[2]),i=e.randomnessObject??vo.defaultData([1,1,1]).randomnessObject,a=i.noiseType==="perlin";nn.noiseSeed(i.seed);let s=mu((0,Ss.default)(i.seed)),l=Ll(i.strength,this.parameters.randomness);if(!t.object){for(let[,g]of this.children.entries())g.position.set(0,0,0),g.scale.setScalar(1),g.rotation.set(0,0,0);this.objectForSample=void 0;return}if(!this.objectForSample)return;if(this.objectForSample instanceof bs)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 c=this.getSubdivData(),u=[],p=g=>{let v=g.length,O=g.map(T=>T[0]).reduce((T,I)=>T+I,0),P=g.map(T=>T[1]).reduce((T,I)=>T+I,0),S=g.map(T=>T[2]).reduce((T,I)=>T+I,0);return[O/v,P/v,S/v]},d=g=>Math.round(g*1e6)/1e6;c.forEach(g=>{let v=c.filter(O=>d(g.pos[0])===d(O.pos[0])&&d(g.pos[1])===d(O.pos[1])&&d(g.pos[2])===d(O.pos[2]));v.length>1?u.push({pos:g.pos,norm:p(v.map(O=>O.norm))}):u.push(g)});let h=bb(u);if(h.length>0){let g=Math.round(h.length*t.count/100);this._updateCount(g)}else{let g=this.objectForSample.geometry.getAttribute("position");if(!g||isNaN(g.count)||g.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 f=new yu(this.objectForSample).build(),m=gb[t.axis],y=this.children;f.setRandomGenerator((0,Ss.default)(this.object.uuid+t.seed));for(let[g,v]of y.entries()){let O=g*(i.freqScale/10)+i.movement,P=a?nn.noise(O):s(O,O),S=g+1,T=l(S,Ie(P,i.rotation[0])),I=l(S,Ie(P,i.rotation[1])),x=l(S,Ie(P,i.rotation[2]));t.spreadType==="random"?f.sample(Rl,Yf):(h.length&&(Rl.fromArray(h[g].pos),Yf.fromArray(h[g].norm)),this.objectForSample instanceof Pi&&Rl.applyMatrix4(rI.copy(this.objectForSample.matrixWorld).invert())),Rl.applyMatrix4(this.object.hiddenMatrix.clone().invert()),v.position.copy(Rl),Gn.fromArray(m);let _=t.align==="normal"?Yf:this.object.getWorldDirection(iI),D=rd.fromArray(t.position);rd.x+=l(S,Ie(P,i.position[0])),rd.y+=l(S,Ie(P,i.position[1])),rd.z+=l(S,Ie(P,i.position[2]));let A=Math.acos(_.dot(Gn)),N=nI.crossVectors(Gn,_).normalize(),E=oI.makeRotationAxis(N,A),B=_.clone().cross(this.object.up).normalize(),V=B.clone().cross(_).normalize(),j=new Ze.Matrix4().makeBasis(B,_,V),R=new Ze.Vector3(Gn.y,Gn.z,Gn.x).normalize(),W=R.clone().cross(Gn).normalize(),F=new Ze.Matrix4().makeBasis(R,Gn,W).invert(),k=new Ze.Matrix4().multiplyMatrices(j,F);v.rotation.setFromRotationMatrix(k),D.applyMatrix4(E),v.position.add(D),v.rotation.x=v.rotation.x+o.x+T,v.rotation.y=v.rotation.y+o.y+I,v.rotation.z=v.rotation.z+o.z+x,v.scale.setScalar(1),v.scale.x=v.scale.x+t.scale[0]+l(S,Ie(P,i.scale[0]))||pr,v.scale.y=v.scale.y+t.scale[1]+l(S,Ie(P,i.scale[1]))||pr,v.scale.z=v.scale.z+t.scale[2]+l(S,Ie(P,i.scale[2]))||pr,v.scale.multiply(this.object.scale),v.hiddenMatrix=this.object.hiddenMatrix}}getSubdivData(){if(!this.objectForSample)return[];let e=this.parameters.toObject.spreadType;if(e==="random")return[];if(this.objectForSample instanceof Pi){let t=this.objectForSample,o=xb[e],i=Db[o],a=Ib[o],s=Nb[o],l=[],c=i(t.subdivPointerNew);for(let u=0;u<=c-1;u++){let p=a(t.subdivPointerNew,u),d=s(t.subdivPointerNew,u);Ab.fromArray(p).applyMatrix4(t.matrixWorld),Mb.fromArray(d),l.push({pos:Ab.toArray(),norm:Mb.toArray()})}return l}else return(this.objectForSample.geometry.index?vb(this.objectForSample.geometry):Sb(this.objectForSample.geometry)).map((o,i)=>e==="polygon_center"?{pos:o.midpoint,norm:o.norm}:e==="vertex"?[{pos:o.vertices[0],norm:o.norm},{pos:o.vertices[1],norm:o.norm},{pos:o.vertices[2],norm:o.norm}]:e==="edge"?[{pos:o.faceCenters[0],norm:o.norm},{pos:o.faceCenters[1],norm:o.norm},{pos:o.faceCenters[2],norm:o.norm}]:[]).flat()}updateState(e,t){if(this.parameters=jo(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=t.find(this.parameters.toObject.object);o instanceof Gt?this.objectForSample=o:this.objectForSample=void 0,this.matrix=new Ze.Matrix4,this.hiddenMatrix=new Ze.Matrix4,this.matrixWorldNeedsUpdate=!0,this.matrixAutoUpdate=!1,o&&o.add(this)}this.update()}get pendingMediaLoad(){return this._pendingMediaLoad}};var Yr=require("three");var ht=require("three");var tr=require("three");var Eb=require("three"),Eo=n=>{var r;return r=class extends n{},r.geometryHelper=new Eb.BoxGeometry(30,30,30),r};var nr=require("three"),od=new nr.Ray,Xf=new nr.Sphere,_b=new nr.Matrix4,_o=(n,r,e,t,o=!1)=>{let i=r,a=n.matrixWorld;if(i.boundingSphere===null&&i.computeBoundingSphere(),Xf.copy(i.boundingSphere),Xf.applyMatrix4(a),e.ray.intersectsSphere(Xf)===!1||(_b.copy(a).invert(),od.copy(e.ray).applyMatrix4(_b),i.boundingBox!==null&&od.intersectsBox(i.boundingBox)===!1))return;let s,l,c,u,p=i.index,d=i.attributes.position,h=i.drawRange,f,m;if(o===!1){let g=Math.max(0,h.start),v=Math.min(p.count,h.start+h.count);for(f=g,m=v;f<m;f+=3)if(l=p.getX(f),c=p.getX(f+1),u=p.getX(f+2),s=y(n,e,od,d,l,c,u),s){s.faceIndex=Math.floor(f/3),t.push(s);return}}else{let v=i.attributes.position,O=new nr.Vector3,P=new nr.Vector3,S=new nr.Vector3,T=new nr.Vector3,I=2,_=1/((n.scale.x+n.scale.y+n.scale.z)/3),D=_*_,A=Math.max(0,h.start),N=Math.min(v.count,h.start+h.count);for(let E=A,B=N-1;E<B;E+=I){if(O.fromBufferAttribute(v,E),P.fromBufferAttribute(v,E+1),od.distanceSqToSegment(O,P,T,S)>D)continue;T.applyMatrix4(n.matrixWorld);let j=e.ray.origin.distanceTo(T);j<e.near||j>e.far||t.push({distance:j,point:S.clone().applyMatrix4(n.matrixWorld),object:n})}}function y(g,v,O,P,S,T,I){let x=new nr.Vector3,_=new nr.Vector3,D=new nr.Vector3,A=new nr.Vector3,N=new nr.Vector3;if(x.fromBufferAttribute(P,S),_.fromBufferAttribute(P,T),D.fromBufferAttribute(P,I),O.intersectTriangle(x,_,D,!1,A)===null)return null;N.copy(A),N.applyMatrix4(g.matrixWorld);let B=v.ray.origin.distanceTo(N);return B<v.near||B>v.far?null:{faceIndex:1,distance:B,point:N.clone(),object:g}}};var nd=new tr.Vector3,Ur=new tr.Camera,Kf=class extends tr.LineSegments{constructor(e){let t=new tr.BufferGeometry,o=new tr.LineBasicMaterial({color:16777215,vertexColors:!0,toneMapped:!1}),i=[],a=[],s={},l=new tr.Color(15711266),c=new tr.Color(15711266),u=new tr.Color(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(h,f,m){d(h,m),d(f,m)}function d(h,f){i.push(0,0,0),a.push(f.r,f.g,f.b),s[h]===void 0&&(s[h]=[]),s[h].push(i.length/3-1)}t.setAttribute("position",new tr.Float32BufferAttribute(i,3)),t.setAttribute("color",new tr.Float32BufferAttribute(a,3));super(t,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,t=this.pointMap,o=!0;Ur.projectionMatrixInverse.elements=[.5112609807824982,-0,-0,-0,-0,.41421356237309503,-0,-0,-0,-0,-0,-.099999,-0,-0,-1.0000000000000002,.100001];let i=1,a=1,s=o?.8:1e-4;po("n1",t,e,Ur,-i,-a,s),po("n2",t,e,Ur,i,-a,s),po("n3",t,e,Ur,-i,a,s),po("n4",t,e,Ur,i,a,s);let l=s;po("f1",t,e,Ur,-i,-a,l),po("f2",t,e,Ur,i,-a,l),po("f3",t,e,Ur,-i,a,l),po("f4",t,e,Ur,i,a,l);let c=l,u=.5;po("u1",t,e,Ur,i*.7*u,a*1.1,c),po("u2",t,e,Ur,-i*.7*u,a*1.1,c),po("u3",t,e,Ur,0,a*(1.1+.9*u),c),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function po(n,r,e,t,o,i,a){nd.set(o,i,a).unproject(t);let s=r[n];if(s!==void 0){let l=e.getAttribute("position");for(let c=0,u=s.length;c<u;c++)l.setXYZ(s[c],nd.x,nd.y,nd.z)}}var id=class extends Eo(Kf){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,t){_o(this.object,this.geometry,e,t,!0)}};var Vl=require("three");var ad;(r=>r.is=e=>"objectHelper"in e)(ad||(ad={}));var kr=(n,r)=>class extends Aa(n){constructor(){super(...arguments);this.objectHelper=new r(this);this.gizmos={}}get geometryHelper(){return r.geometryHelper}raycast(o,i){this.objectHelper.raycast(o,i)}showGizmos(){for(let o in this.gizmos){let i=this.gizmos[o];i instanceof Vl.Box3Helper&&(i.visible=!0)}}updateEntityBoxSize(o,i){this.objectHelper.visible&&this.geometryHelper instanceof Vl.BoxGeometry?(o.setScalar(0),i.set(this.geometryHelper.parameters.width,this.geometryHelper.parameters.height,this.geometryHelper.parameters.height).multiplyScalar(.5)):super.updateEntityBoxSize(o,i)}hideGizmos(){for(let o in this.gizmos){let i=this.gizmos[o];i instanceof Vl.Box3Helper&&(i.visible=!1)}}};var sd=790,Ps=new ht.Vector3,Qf=new ht.Vector3,Zf=new ht.Quaternion,Jf=new ht.Vector3,zl=new ht.Vector3,eh=new ht.Vector3,an=class extends kr(ht.Camera,id){constructor(e="",t={...si.defaultData,name:""}){super();this._cameraType="OrthographicCamera";this.targetOffset=Pn.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.wasMovedByUser=!1;this.wasMovedBySwitchCameraAction=!1;this.super_Entity(e,t),this.previousProjectionMatrix=new ht.Matrix4,this.matrixAutoUpdate=!0,this.width=window.innerWidth,this.height=window.innerHeight;let o=this.width,i=this.height;this.orthoCamera=new ht.OrthographicCamera(o*-.5,o*.5,i*.5,i*-.5,-5e4,1e4),this.perspCamera=new ht.PerspectiveCamera(45,o/i,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,t){e==="PerspectiveCamera"?this.perspCamera.near=t:this.orthoCamera.near=t}setZoom(e,t){t>=0&&(e==="PerspectiveCamera"?this.perspCamera.zoom=t:this.orthoCamera.zoom=t)}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,t,o){typeof e=="number"&&(e=new ht.Vector3(e,t,o)),super.lookAt(e),this.getWorldPosition(Ps),this.targetOffset=Ps.distanceTo(e)}getTarget(e=new ht.Vector3){return this.getWorldDirection(Qf),this.getWorldPosition(Ps),Qf.multiplyScalar(this.targetOffset),e.copy(Ps).add(Qf),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(Ps),Ps.distanceTo(e)}updateUp(){this.getWorldQuaternion(Zf),Jf.set(0,0,1).applyQuaternion(Zf),zl.copy(ht.Object3D.DEFAULT_UP),this.isUpVectorFlipped&&zl.negate(),zl.applyQuaternion(Zf),eh.copy(ht.Object3D.DEFAULT_UP).projectOnPlane(Jf),this.angleOffsetFromUp=eh.angleTo(zl),this.angleOffsetFromUp*=eh.cross(zl).dot(Jf)>=0?1:-1}updateTransformState(e,t){let o=super.updateTransformState(e,t);return e.isUpVectorFlipped!==void 0&&(this.isUpVectorFlipped=e.isUpVectorFlipped),this.updateUp(),o}getViewFrontToObject(e){let t=e.getWorldPosition(new ht.Vector3),i=e.getWorldDirection(new ht.Vector3).multiplyScalar(this.targetOffset);return{position:t.clone().add(i),target:t}}getViewToTarget(e){let o=this.getWorldDirection(new ht.Vector3).multiplyScalar(this.targetOffset);return{position:e.clone().sub(o),target:e}}getViewToObject(e){let t=new ht.Vector3,o=e.getWorldPosition(t);return this.getViewToTarget(t)}setViewplaneSize(e,t,o=!1){if(this.aspect=e/t,o){let i=e>t?this.aspect:1,a=e>t?1:this.aspect;this.left=-sd*.5*i,this.right=sd*.5*i,this.top=sd*.5*(1/a),this.bottom=-sd*.5*(1/a)}else this.left=-e*.5,this.right=e*.5,this.top=t*.5,this.bottom=-t*.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,t,o,i,a,s){this._cameraType==="PerspectiveCamera"?this.perspCamera.setViewOffset(e,t,o,i,a,s):this.orthoCamera.setViewOffset(e,t,o,i,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,t){super.updateWorldMatrix(e,t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}copy(e,t){return super.copy(e,t),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 t={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 ta(t,e)}updateCameraSubtype(e,t){let o=e==="perspective"?"PerspectiveCamera":"OrthographicCamera";t.zoom!==void 0&&this.setZoom(o,t.zoom),t.near!==void 0&&this.setNear(o,t.near),t.fov!==void 0&&o==="PerspectiveCamera"&&(this.fov=t.fov)}updateState(e,t){this.updateCameraState(e,t)}updateCameraState(e,t){this.updateState_Entity(e,t),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,t,o){super.updateByPatchedOp(e,t,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}}};var lI=require("three");var jn=require("three");var Os=new jn.Matrix4,sI=new jn.Matrix4;var Pr=class extends wr{constructor(e,t,o){super(e,t);this.data=t;this.meshSetAddresses=[];this.needsTransformForDownstream=!1;this.geometry=new jn.BufferGeometry;this.onAfterRender=(e,t,o,i,a,s)=>{super.onAfterRender(e,t,o,i,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,t,o){super.updateByPatchedOp(e,t,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,t=!0){if(this.booleanMeshSetAddress!==-1&&!e)return;for(let i=0;i<this.children.length;i++){let a=this.children[i];a instanceof Pr&&a.dataPatched.visible===!0&&a.recomputeBoolean(e===!0,t)}this.meshSetAddresses=[];for(let i=0;i<this.children.length;i++){let a=this.children[i];if(a instanceof Gt&&a.dataPatched.visible===!0&&a.geometry.attributes.position?.count>0&&a.geometry.drawRange.count>0&&a.booleanMeshSetAddress!==0){Os.multiplyMatrices(a.hiddenMatrix,a.matrix);try{if(a.booleanMeshSetAddress===-1){if((a.geometry.index??a.geometry.getAttribute("position")).count/3<15e5&&(a.booleanMeshSetAddress=Gr.getMeshSet(a.geometry,e===!0,t)),a.booleanMeshSetAddress===-1)return;Gr.transformMeshSet(a.booleanMeshSetAddress,Os),a.booleanMatrixInvOld.copy(Os).invert(),a.booleanWasTransformed=!1}else a instanceof Pr&&a.needsTransformForDownstream===!0?(Gr.transformMeshSet(a.booleanMeshSetAddress,Os),a.needsTransformForDownstream=!1):a.booleanWasTransformed===!0&&(Gr.transformMeshSet(a.booleanMeshSetAddress,sI.multiplyMatrices(Os,a.booleanMatrixInvOld)),a.booleanMatrixInvOld.copy(Os).invert(),a.booleanWasTransformed=!1)}catch(s){console.error(s),a.booleanMeshSetAddress=0,a.geometry.userData.booleanOperationDidFail=!0;continue}Gr.hasOpenEdges(a.booleanMeshSetAddress)===!1||i===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 jn.Float32BufferAttribute([],0)),this.geometry.setDrawRange(0,0);return}if(e===!0)return Gr.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let o=this.geometry;o.dispose(),this.geometry=new jn.BufferGeometry,this.geometry.userData=o.userData,this.geometry.boundingSphere=o.boundingSphere;try{this.booleanMeshSetAddress=Gr.calcBoolean(this.meshSetAddresses,this.booleanOp,this.geometry,this.phongAngle)}catch(i){this.booleanMeshSetAddress=0,this.geometry.userData.booleanOperationDidFail=!0,console.error(i)}this.booleanMatrixInvOld.copy(this.matrix).invert(),this.needsTransformForDownstream=!0,ys(this),gs(this)}dispose(){super.dispose(),this.geometry.dispose()}};var Lb=require("three");var Bb;(r=>{function n(e){return je.is(e)&&e instanceof Lb.Light}r.is=n})(Bb||(Bb={}));var Cs=(n,r)=>class extends kr(n,r){updateState_Light(t,o){this.updateState_Entity(t,o),t.color!==void 0&&(this.color=o.shared.color(t.color)),t.intensity!==void 0&&(this.intensity=t.intensity),t.depth!==void 0&&(this.shadow.camera.far=t.depth,this.shadow.needsUpdate=!0),t.shadows!==void 0&&(this.castShadow=t.shadows)}};var Fn=n=>n instanceof Gt,Gl=n=>n!==null&&n instanceof Pr;var jl=n=>ad.is(n);var Vb=require("three");var Rb=require("three");var Hr=class extends Eo(Rb.AxesHelper){constructor(e,t=15){super(t);this.object=e;this.object.updateMatrixWorld(),this.name=`EmptyObjectHelper: ${e.uuid}`,this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.object.isBone&&(this.visible=!1)}raycast(e,t){_o(this.object,Hr.geometryHelper,e,t)}update(){}};var Un=class extends kr(Vb.Group,Hr){constructor(r,e){super(),this.super_Entity(r,e),this.objectHelper.update()}updateState(r,e){this.updateState_Entity(r,e),"buffer"in r&&Object.keys(r).length===1&&e.scene.reloadSplats()}};var zb=require("three");var ld=class extends kr(zb.Group,Hr){constructor(e,t,o){super();this.super_Entity(e,t),this.context=o,this.objectHelper.update()}updateState(e,t){this.updateState_Entity(e,t)}};var _s=require("three");var Ts=require("three"),cI=n=>`
2230
+ `)}return t}};var hs=require("three");var Hu=class{constructor(r=1e3*10){this.timeout=r;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(...r){}remove(r){let e=this.cache.get(r);e&&(this.dispose(r,e.data),this.cache.delete(r),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 r=Date.now(),e=this.head.next;for(;e.time<r-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(r){return this.cache.get(r)?.data}load(r){let e=Date.now(),t=this.cache.get(r);return t===void 0?(t={data:this.create(r),src:r,time:e,next:null,prev:null},this.cache.set(r,t)):(t.time=e,t.prev.next=t.next,t.next.prev=t.prev),t.prev=this.tail.prev,t.next=this.tail,this.tail.prev.next=t,this.tail.prev=t,this.scheduleCleanup(),t.data}};var Vf=class extends Hu{create(r){return URL.createObjectURL(new Blob([r]))}dispose(r,e){URL.revokeObjectURL(e)}},Rf;function Z0(n){return typeof n=="string"?n:(Rf||(Rf=new Vf),Rf.load(n))}var Wu=class{constructor(r,e){this.data=r;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")}},qu=class{constructor(){this.cache=new Map}remove(r){if(this.cache.delete(r.data)===!1&&!1)throw new Error("ref count remove non-exists")}load(r){let e=this.cache.get(r);return e===void 0&&(e=this.create(r),this.cache.set(r,e)),e.refCount+=1,e}};var fs=class extends Wu{constructor(e,t){super(e,t.imageHolderCache);this.data=e;this.shared=t;this.loaded=!1;this.isVideo=!1;this.isCanvas=!1;this._cache={[1e3]:{},[1001]:{},[1002]:{}};this.isVideo=e.type==="video",this.isCanvas=e.nodeName==="CANVAS",this.updateSrc(this.isCanvas?e:e.data)}async updateSrc(e){if(typeof document>"u")return;this.disposeTextures(),this.loaded=!1;let t=()=>{this.loaded=!0;for(let i of Object.values(this._cache))for(let a of Object.values(i))a&&(a.image=this.img,a.needsUpdate=!0);this.shared.requestRender()};if(this.isCanvas)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 i;await new Promise(a=>{o.onloadend=s=>{i=s.target?.result,a(null)}}),this.img.src=i}else this.img.src=e;this.img.onloadeddata=()=>{t()}}else this.img=new Image,this.img.src=Z0(e),this.img.onload=t}getTexture(e,t=1008){let o=this._cache[e]?.[t];if(o)return o;{let i;return this.isCanvas&&(i=new hs.CanvasTexture(this.img,void 0,e,e,void 0,t)),this.isVideo?i=new hs.VideoTexture(this.img,void 0,e,e):i=new hs.Texture(this.img,void 0,e,e,void 0,t),this.loaded&&(i.needsUpdate=!0),this._cache[e]===void 0&&(this._cache[e]={}),this._cache[e][t]=i,i}}setNeedsUpdate(e){for(let t of Object.values(this._cache))for(let o of Object.values(t))o&&(o.needsUpdate=e)}disposeTextures(){for(let[e,t]of Object.entries(this._cache))for(let[o,i]of Object.entries(t))i?.dispose(),this._cache[e][o]=void 0}dispose(){super.dispose(),this.disposeTextures()}};var Nr=class extends fs{};var ut=require("three");function er(n,r){return r.color(n)}function J0(n,r){switch(n.type){case"fresnel":return CM(n,r);case"gradient":return TM(n,r);case"depth":return AM(n,r);case"normal":return MM(n,r);case"noise":return IM(n,r);case"rainbow":return NM(n,r);case"toon":return DM(n,r);case"outline":return EM(n,r);case"transmission":return _M(n,r);case"color":return OM(n,r);case"pattern":return BM(n,r)}}function PM(n){return{type:n.type}}function uo(n,r){let{alpha:e,mode:t,isMask:o}=n,i=typeof e=="string"?(Number(r.getVariable(e))??100)/100:e;return{...PM(n),alpha:i,mode:t,isMask:o}}function OM(n,r){return{...uo(n,r),color:er(n.color,r)}}function CM(n,r){let{bias:e,scale:t,intensity:o,factor:i,color:a}=n;return{...uo(n,r),color:er(a,r),bias:e,scale:t,intensity:o,factor:i}}function TM(n,r){let{gradientType:e,smooth:t,colors:o,steps:i,angle:a,offset:s,morph:l}=n;return{...uo(n,r),gradientType:e,smooth:t,colors:o.map(c=>new ut.Vector4(c[0],c[1],c[2],c[3])),num:o.length,steps:i,offset:new ut.Vector2(...s),morph:new ut.Vector2(...l),angle:a}}function AM(n,r){let{gradientType:e,near:t,far:o,isVector:i,isWorldSpace:a,origin:s,direction:l,colors:c,steps:u,smooth:p}=n;return{...uo(n,r),gradientType:e,near:t,far:o,isVector:i,isWorldSpace:a,origin:new ut.Vector3(...s),direction:l?new ut.Vector3(...l):new ut.Vector3(1,0,0),colors:c.map(d=>d!==void 0?new ut.Vector4(d[0],d[1],d[2],d[3]):new ut.Vector4(0,0,0,0)),steps:u.slice(0,c.length),smooth:p}}function MM(n,r){let{cnormal:e}=n;return{...uo(n,r),cnormal:new ut.Vector3(e[0],e[1],e[2])}}function IM(n,r){return{...uo(n,r),scale:n.scale,move:n.move,fA:new ut.Vector2(...n.fA),fB:new ut.Vector2(...n.fB),size:new ut.Vector3(...n.size),distortion:new ut.Vector2(...n.distortion),colorA:er(n.colorA,r),colorB:er(n.colorB,r),colorC:er(n.colorC,r),colorD:er(n.colorD,r),noiseType:n.noiseType,voronoiStyle:n.voronoiStyle,highCut:n.highCut,lowCut:n.lowCut,smoothness:n.smoothness,seed:n.seed,quality:n.quality}}function NM(n,r){return{...uo(n,r),filmThickness:n.filmThickness,movement:n.movement,wavelengths:new ut.Vector3(...n.wavelengths),noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,offset:new ut.Vector3(...n.offset)}}function DM(n,r){return{...uo(n,r),positioning:n.positioning,colors:n.colors.map(e=>new ut.Vector4(e[0],e[1],e[2],e[3])),num:n.colors.length,steps:n.steps,source:new ut.Vector3(...n.source),isWorldSpace:n.isWorldSpace,noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,shadowColor:er(n.shadowColor,r),offset:new ut.Vector3(...n.offset)}}function EM(n,r){return{...uo(n,r),outlineColor:er(n.outlineColor,r),contourColor:er(n.contourColor,r),outlineWidth:n.outlineWidth,contourWidth:n.contourWidth,outlineThreshold:n.outlineThreshold,contourThreshold:n.contourThreshold,outlineSmoothing:n.outlineSmoothing,contourFrequency:n.contourFrequency,contourDirection:new ut.Vector3(...n.contourDirection),positionalLines:n.positionalLines,compensation:n.compensation}}function _M(n,r){return{...uo(n,r),thickness:n.thickness,ior:n.ior,roughness:n.roughness}}function BM(n,r){return{...uo(n,r),style:n.style,projection:n.projection,axis:n.axis,blending:n.blending,offset:new ut.Vector2(...n.offset),colorA:er(n.colorA,r),colorB:er(n.colorB,r),frequency:new ut.Vector2(...n.frequency),size:n.size,variation:n.variation,smoothness:n.smoothness,zigzag:n.zigzag,rotation:n.rotation,vertical:new ut.Vector2(...n.vertical),horizontal:new ut.Vector2(...n.horizontal),sides:n.sides}}var Rn=class extends Ft{};var $u=require("three");var LM={noise:["noiseType"],texture:["projection","axis","side"],video:["projection","axis","side"],displace:["noiseType"],light:["roughnessMap","bumpMap"],depth:["smooth","isWorldSpace","gradientType","isVector"],pattern:["style","projection","axis"]},RM={depth:["colors"]};function VM(n,r,e){if(r==="isMask")return!0;let t=LM[n.type],o=RM[n.type];if(o!==void 0){let i=n.color;if(o.includes(r)){let a=i[r]?.value?.length;if(a!==void 0&&a!==e.length)return!0}}return t!==void 0?t.includes(r):!1}function zf(n,r,e){let t=e.uniforms[`f${e.id}_texture`];if(!t)return!1;let o=!1,i=n;if("image"in i){let a=i.image,s=r.image(a),l=t;l.image instanceof Nr||l.image.deref(),l.image=s}if("video"in i){let a=i.video,s=r.video(a),l=t;l.image instanceof Nr||l.image.deref(),l.image=s}if("wrapping"in i){let a=t;a.wrap=i.wrapping}if("minFilter"in i){let a=t;a.minFilter=i.minFilter}if("rotation"in i&&e.uniforms[`f${e.id}_rotation`])return e.uniforms[`f${e.id}_rotation`].value=(i.rotation??0)*$u.MathUtils.DEG2RAD,o;if("repeat"in i||"offset"in i||"rotation"in i){let a="mat",s=e.uniforms[`f${e.id}_${a}`];"repeat"in i&&(s.repeat=i.repeat),"offset"in i&&(s.offset=i.offset),"rotation"in i&&(s.rotation=i.rotation??0),s.updateMatrix()}return o}function eb(n,r,e,t){let o=!1;for(let[i,a]of Object.entries(n)){if(i==="bumpMap"||i==="roughnessMap"){o=!0;continue}if(!i||a===void 0)continue;if(Gf(i,e,t,r)){i==="visible"&&e.type==="light"&&(o=!0);continue}e.visible=t.visible;let s=e.uniforms[`f${e.id}_${i}`];if(!!s&&!(s instanceof Bn))switch(o=o||VM(e,i,a),s.constructor){case Qe:if(typeof a=="string"){let l=r.getColor(a);l&&(s.value=l);break}else{let l=a;s.value instanceof Rn?s.value=new Ft(l.r,l.g,l.b,l.a):s.setRGBA(l);break}case br:if(typeof a=="string"){let l=r.getColor(a);l&&(s.value=l);break}else{let l=a;s.value instanceof Rn?s.value=new Ft(l.r,l.g,l.b,l.a):s.value.setRGBA(l.r,l.g,l.b,l.a);break}case vt:{let l=a;s.value.setX(l[0]),s.value.setY(l[1]);break}case Zt:{let l=a;s.value.setX(l[0]),s.value.setY(l[1]),s.value.setZ(l[2]);break}case ur:{zf(a,r,e);break}case co:{s.value=a.map(l=>new $u.Vector4(...l));break}default:{s.value=a;break}}}return o}var Vn=(n,r,e)=>Math.max(0,Math.min(1,Number(r.getVariable(typeof n=="number"?n*100:n,e)??100)/100))??1,zn=class{constructor(r,e,t,o,i){this.id=r;this.uuid=e;this.data=t;this.uniforms={};for(let a in o)this.uniforms[`f${this.id}_${a}`]=o[a];for(let a in t)Gf(a,this,t,i)}get type(){return this.data.type}static create(r,e,t,o){if(t.type==="light")return dr.createLigherLayer(r,e,t,o);if(t.type==="texture"||t.type==="video"){let i=t.type==="texture"?o.canvas(t.texture.image)??o.image(t.texture.image):o.video(t.texture.video),a=new yi(i,t.texture.wrapping,t.texture.minFilter??1008),s=new Fu(i),l=new Uu(t.texture.repeat,t.texture.offset,t.texture.rotation??0),c=new se(t.crop?1:0),u=new ze(t.projection??0),p=new ze(["x","y","z"].indexOf(t.axis)??0),d=new ze(t.side??0),h=new vt(t.size?new ot.Vector2(t.size[0],t.size[1]):new ot.Vector2(100,100)),f=new se(t.blending??0),m=new se(Vn(t.alpha,o)),y=new ze(t.mode??0),g=new At(t.isMask??!1),v=new Ln(a,s,c,u,p,d,h,f,l,m,y,g),O=new Xe(v.calpha,"f");return new ft(r,e,t,{texture:a,textureSize:s,crop:c,projection:u,axis:p,side:d,size:h,blending:f,mat:l,alpha:m,mode:y,isMask:g},v,y,O,g,o)}else if(t.type==="matcap"){let i=o.image(t.texture.image),a=new yi(i,t.texture.wrapping,t.texture.minFilter??1008),s=new se(Vn(t.alpha,o)),l=new ze(t.mode??0),c=new At(t.isMask??!1),u=new se(t.texture.rotation??0),p=new ns(a,s,l,c,u),d=new Xe(p.calpha,"f");return new ft(r,e,t,{texture:a,alpha:s,mode:l,isMask:c,rotation:u},p,l,d,c,o)}else if(t.type==="displace")if(t.displacementType==="noise"){let i=new Zt(new ot.Vector3(...t.offset)),a=new se(t.scale??10),s=new se(t.intensity??8),l=new se(t.movement??1),c=new ze(t.noiseType??0),u=new ze(t.voronoiStyle??0),p=new se(t.smoothness??.5),d=new se(t.seed??0),h=new se(t.highCut??1),f=new se(t.lowCut??0),m=new ze(t.quality??1),y=new ds(s,l,i,u,p,d,h,f,m,a,c);return new Dl(r,e,t,{offset:i,scale:a,intensity:s,movement:l,noiseType:c,voronoiStyle:u,smoothness:p,seed:d,highCut:h,lowCut:f,quality:m},y,o)}else throw new Error;else return jM(r,e,t,o)}updateByOp(r,e,t){let o=r;if(o.path[0]===void 0){if(o.type===0)return"type"in o.props||"category"in o.props||"visible"in o.props?(t.scene.markNeedsUpdateRendererDirty(),!0):eb(o.props,t.shared,this,e)}else if(o.path[0]==="texture")return"texture"in e||"video"in e?zf(o.props,t.shared,this):!0;return!1}dispose(){if(zM(this)){let r=this.uniforms[`f${this.id}_texture`];if(!r)return!1;let e=r;e.image instanceof Nr||e.image.deref()}}hasValueByKey(r){return this.uniforms[r]!==void 0}hasValue(r){return this.hasValueByKey(`f${this.id}_${r}`)}setValue(r,e){let t=`f${this.id}_${r}`;this.hasValueByKey(t)&&e!==void 0&&(this.uniforms[t].value=e)}getNode(r){let e=`f${this.id}_${r}`;if(this.hasValueByKey(e))return this.uniforms[e]}getValue(r){let e=`f${this.id}_${r}`;if(this.hasValueByKey(e))return this.uniforms[e].value}getName(r){let t=/f\d+_(.*)/.exec(r);if(t&&t.length>1)return t[1];console.log(`Layer.getName: error ${r}`)}getNames(){let r=[];for(let e in this.uniforms){let t=this.getName(e);t&&r.push(t)}return r}},ft=class extends zn{constructor(e,t,o,i,a,s,l,c,u){super(e,t,o,i,u);this.params=i;this.color=a;this.mode=s;this.alpha=l;this.isMask=c}},Dl=class extends zn{constructor(e,t,o,i,a,s){super(e,t,o,i,s);this.position=a}},dr=class extends zn{constructor(e,t,o,i,a,s){super(e,t,o,a,s);this.node=i}static createLigherLayer(e,t,o,i){let a,s=new se(Vn(o.alpha,i)),l=new ze(o.mode),c=new se(o.bumpMapIntensity),u=new se(Vn(o.alphaOverride,i)),p;if(!o.visible)a=new tn,p={};else if(o.category==="lambert"){a=new Cl;let d=new Qe(i.color(o.emissive)??0),h=new At(o.occlusion??!0);p={emissive:d,occlusion:h},a.emissive=d,a.occlusion=h}else if(o.category==="toon"){a=new Nl;let d=new se(o.shininess??30),h=new Qe(i.color(o.specular)??1118481);p={shininess:d,specular:h},a.shininess=d,a.specular=h}else if(o.category==="physical"){a=new Ml;let d=new se(o.roughness??.3),h=new se(o.metalness??0),f=new se(o.reflectivity??.5),m=new At(o.occlusion??!0);p={roughness:d,metalness:h,reflectivity:f,occlusion:m},a.roughness=d,a.metalness=h,a.reflectivity=f,a.occlusion=m}else{a=new Al;let d=new se(o.shininess??30),h=new Qe(o.specular!==void 0?i.color(o.specular)??1118481:1118481),f=new At(o.occlusion??!0);p={shininess:d,specular:h,occlusion:f},a.shininess=d,a.specular=h,a.occlusion=f}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 dr(e,t,o,a,p,i)}get category(){return this.node.category}};function zM(n){let r=n instanceof zn?n.type:n;return r==="texture"||r==="video"||r==="displace_map"||r==="matcap"}function jr(n){return{alpha:new se(n.alpha??1),mode:new ze(n.mode??0),isMask:new At(n.isMask??!1)}}function GM(n,r,e,t,o){switch(n.type){case"color":{let i=new Qe(t.color??It),a=jr(t),s=new gi(i,a.alpha),l=new Xe(s.calpha,"f");return new ft(r,e,n,{color:i,...a},s,a.mode,l,a.isMask,o)}case"fresnel":{let i=new Qe(t.color??16777215),a=new se(t.bias??.1),s=new se(t.scale??1),l=new se(t.intensity??2),c=new se(t.factor??1),u=jr(t),p=new wl(i,a,s,l,c,u.alpha,u.mode,u.isMask),d=new Xe(p.calpha,"f");return new ft(r,e,n,{color:i,bias:a,scale:s,intensity:l,factor:c,...u},p,u.mode,d,u.isMask,o)}case"rainbow":{let i=new se(t.filmThickness??30),a=new se(t.movement??0),s=new Zt(t.wavelengths??new ot.Vector3(0,0,0)),l=new se(t.noiseStrength??0),c=new se(t.noiseScale??1),u=new Zt(t.offset??new ot.Vector3(0,0,0)),p=jr(t),d=new ls(i,a,s,l,c,u,p.alpha,p.isMask),h=new Xe(d.calpha,"f");return new ft(r,e,n,{filmThickness:i,movement:a,wavelengths:s,noiseStrength:l,noiseScale:c,offset:u,...p},d,p.mode,h,p.isMask,o)}case"transmission":{let i=new se(t.thickness??10),a=new se(t.ior??1.5),s=new se(t.roughness??.5),l=De.transmissionSize,c=De.transmissionRenderTarget,u=De.transmissionRenderTargetDepth,p=window.innerWidth,d=window.innerHeight,h=p>=d?new vt(d/p,1):new vt(1,p/d),f=jr(t),m=new us(i,a,s,l,c,u,h,f.alpha),y=new Xe(m.calpha,"f");return new ft(r,e,n,{thickness:i,ior:a,roughness:s,aspectRatio:h,...f},m,f.mode,y,f.isMask,o)}case"toon":{let i=new ze(t.positioning??0),a;t.colors?a=new co(t.colors.length,t.colors):(a=new co(10,new ot.Vector4(0,0,0,1)),a.value[1]=new ot.Vector4(1,1,1,1));let s;t.steps?s=new lo(t.steps.length,t.steps):(s=new lo(10,1),s.value[0]=0);let l=new Zt(t.source??new ot.Vector3(0,0,0)),c=new At(t.isWorldSpace??!0),u=new se(t.noiseStrength??0),p=new se(t.noiseScale??1),d=new br(t.shadowColor),h=new Zt(t.offset??new ot.Vector3(0,0,0)),f=jr(t),m=new cs(i,a,s,l,c,u,p,d,h,f.alpha),y=new Xe(m.calpha,"f");return new ft(r,e,n,{positioning:i,colors:a,steps:s,source:l,isWorldSpace:c,noiseStrength:u,noiseScale:p,shadowColor:d,offset:h,...f},m,f.mode,y,f.isMask,o)}case"outline":{let i=new Qe(t.outlineColor??16777215),a=new Qe(t.contourColor??16777215),s=new se(t.outlineWidth??.1),l=new se(t.contourWidth??.1),c=new se(t.outlineThreshold??.1),u=new se(t.contourThreshold??.1),p=new se(t.outlineSmoothing??.1),d=new se(t.contourFrequency??.1),h=new Zt(t.contourDirection??new ot.Vector3(0,1,0)),f=new At(t.positionalLines??!1),m=new At(t.compensation??!0),y=De.normalRenderTarget,g=De.normalRenderTargetDepth,v=De.pixelRatioNode,O=De.resolution,P=jr(t),S=new as(i,a,s,l,c,u,p,d,h,f,m,O,y,g,v,P.alpha),T=new Xe(S.calpha,"f");return new ft(r,e,n,{outlineColor:i,contourColor:a,outlineWidth:s,contourWidth:l,outlineThreshold:c,contourThreshold:u,outlineSmoothing:p,contourFrequency:d,contourDirection:h,positionalLines:f,compensation:m,...P},S,P.mode,T,P.isMask,o)}case"depth":{let i=new ze(t.gradientType??0),a=new At(t.smooth??!1),s=new se(t.near??50),l=new se(t.far??200),c=new se(t.isVector??1),u=new se(t.isWorldSpace??0),p=new Zt(t.origin??new ot.Vector3),d=new Zt(t.direction??new ot.Vector3),h;t.colors?h=new co(t.colors.length,t.colors):(h=new co(2,new ot.Vector4(0,0,0,1)),h.value[1]=new ot.Vector4(1,1,1,1));let f;t.steps?f=new lo(t.steps.length,t.steps):(f=new lo(2,1),f.value[0]=0);let m=jr(t),y=new rs(i,a,s,l,c,u,p,d,h,f,m.alpha,m.isMask),g=new Xe(y.calpha,"f");return new ft(r,e,n,{gradientType:i,smooth:a,near:s,far:l,isVector:c,isWorldSpace:u,origin:p,direction:d,colors:h,steps:f,...m},y,m.mode,g,m.isMask,o)}case"noise":{let i=new se(t.scale??1),a=new Zt(t.size??new ot.Vector3(100,100,100)),s=new se(t.move??1),l=new vt(t.fA??new ot.Vector2(1.7,9.2)),c=new vt(t.fB??new ot.Vector2(8.3,2.8)),u=new vt(t.distortion??new ot.Vector2(1,1)),p=new br(t.colorA),d=new br(t.colorB),h=new br(t.colorC),f=new br(t.colorD),m=new ze(t.noiseType??0),y=new ze(t.voronoiStyle??0),g=new se(t.highCut??1),v=new se(t.lowCut??0),O=new se(t.smoothness??.5),P=new se(t.seed??.5),S=new ze(t.quality??1),T=jr(t),I=new is(i,a,s,l,c,u,p,d,h,f,T.alpha,m,T.isMask,y,g,v,O,P,S),x=new Xe(I.calpha,"f");return new ft(r,e,n,{scale:i,size:a,move:s,fA:l,fB:c,distortion:u,colorA:p,colorB:d,colorC:h,colorD:f,noiseType:m,...T,voronoiStyle:y,highCut:g,lowCut:v,smoothness:O,seed:P,quality:S},I,T.mode,x,T.isMask,o)}case"normal":{let i=new Zt(t.cnormal??new ot.Vector3(1,1,1)),a=jr(t),s=new Ja(i,a.alpha),l=new Xe(s.calpha,"f");return new ft(r,e,n,{cnormal:i,...a},s,a.mode,l,a.isMask,o)}case"gradient":{let i=new ze(t.gradientType??0),a=new At(t.smooth??!1),s;t.colors?s=new co(t.colors.length,t.colors):(s=new co(10,new ot.Vector4(0,0,0,1)),s.value[1]=new ot.Vector4(1,1,1,1));let l;t.steps?l=new lo(t.steps.length,t.steps):(l=new lo(10,1),l.value[0]=0);let c=new vt(t.offset??new ot.Vector2(0,0)),u=new vt(t.morph??new ot.Vector2(0,0)),p=new se(t.angle??0),d=jr(t),h=new os(i,a,s,l,c,u,p,d.alpha,d.isMask),f=new Xe(h.calpha,"f");return new ft(r,e,n,{gradientType:i,smooth:a,colors:s,steps:l,offset:c,morph:u,angle:p,...d},h,d.mode,f,d.isMask,o)}case"pattern":{let i=new ze(t.style??0),a=new ze(t.projection??0),s=new ze(["x","y","z"].indexOf(t.axis)??0),l=new se(t.blending??0),c=new vt(t.offset??new ot.Vector2(0,0)),u=new br(t.colorA),p=new br(t.colorB),d=new vt(t.frequency??new ot.Vector2(10,10)),h=new se(t.size??.5),f=new se(t.variation??0),m=new se(t.smoothness??.5),y=new se(t.zigzag??0),g=new se(t.rotation??0),v=new vt(t.vertical??new ot.Vector2(0,1)),O=new vt(t.horizontal??new ot.Vector2(0,1)),P=new ze(t.sides??6),S=jr(t),T=new ss(i,a,s,l,c,u,p,d,h,f,m,y,g,v,O,P,S.alpha,S.isMask),I=new Xe(T.calpha,"f");return new ft(r,e,n,{style:i,projection:a,axis:s,blending:l,offset:c,colorA:u,colorB:p,frequency:d,size:h,variation:f,smoothness:m,zigzag:y,rotation:g,vertical:v,horizontal:O,sides:P,...S},T,S.mode,I,S.isMask,o)}default:{let i=new Qe(1,0,0,1),a=jr(t),s=new gi(i,a.alpha),l=new Xe(s.calpha,"f");return new ft(r,e,n,{color:i,...a},s,a.mode,l,a.isMask,o)}}}function jM(n,r,e,t){let o=J0(e,t);return GM(e,n,r,o,t)}function Gf(n,r,e,t){if(e.type==="displace"&&(n==="intensity"||n==="visible")){let o=r.uniforms[`f${r.id}_intensity`];return o?(o.value=e.intensity*(e.visible?1:0),o):void 0}if(e.type!=="displace"&&(n==="alpha"||n==="visible")){let o=r.uniforms[`f${r.id}_alpha`];if(!o)return;if(o.value=Vn(e.alpha,t)*(e.visible?1:0),e.type==="outline"&&n==="visible"){let i=r.uniforms[`f${r.id}_compensation`];i&&(i.value=e.compensation&&e.visible)}return o}}function Yu(n,r){let e=0,t=n.layers.find(o=>o.data.type==="light");if(t){let o=t.data,i=Number(r.getVariable(o.alphaOverride));if((typeof o.alphaOverride=="string"?i/100:o.alphaOverride)<1)return!0}for(let o of n.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 i=o.data.visible?o.data.alpha:0;if(typeof i=="string"&&(i=Math.max(0,Math.min(1,Number(r.getVariable(i)??100)/100))),i===1&&o.data.type==="depth"||o.data.type==="gradient"){for(let a of o.data.colors)if(a[3]<1){i=a[3];break}}else if(i===1&&o.data.type==="noise"){let a=r.color(o.data.colorA).a,s=r.color(o.data.colorB).a,l=r.color(o.data.colorC).a,c=r.color(o.data.colorD).a,u=Math.min(a,Math.min(s,Math.min(l,c)));u<1&&(i=u)}e+=(1-e)*i}}return e<1}var Sr=class extends tb.ShaderMaterial{constructor(){super(void 0);this.flatShading=!1;this.needsJitter=!0;this.nodeContextUuid=0;this.fog=!0,this.dithering=!0,this.vertexColors=!0,this.transparent=!0}customProgramCacheKey(){return""}},Xu=class extends Sr{constructor(e,t,o,i){super();this.flatShading=e;this.side=t;this.wireframe=o;this.root=i}updateAfterBuild(){let e=this.root;this.lights=e.lights,this.vertexShader=e.vertexShader,this.fragmentShader=e.fragmentShader,this.defines=e.defines,this.uniforms=e.uniforms,this.extensions=e.extensions,this.transparent=e.transparent,this.cacheKey=e.customProgramCacheKey()+"flat"+this.flatShading+this.side}onBeforeCompile(e,t){this.root.onBeforeCompile(e)}get data(){return this.root.data}get category(){return this.root.category}get hasAO(){return this.root.hasAO}getFlavor(e,t,o){return this.root.getFlavor(e,t,o)}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,t,o){this.root.updateByOp(e,t,o)}nodeMaterialDispose(){this.root.nodeMaterialDispose()}},bi=class extends Sr{constructor(e,t,o=!0){super();this.data=e;this.allowVariableSaves=o;this.layerIdGen=0;this.flavors=[];this.masks={};this.type="NodeMaterial";this.updaters=[],et.startContext(this),this.reset0(e,t),et.endContext(this)}get nodeMaterial(){return this}getFlavor(e,t,o){let i=o?6:(e?3:0)+t;if(i===0)return this;this.flavors===void 0&&(this.flavors=[]),i-=1;let a=this.flavors[i];return a===void 0&&(a=new Xu(e,t,o,this),this.flavors[i]=a,a.flatShading=e,a.side=t,a.updateAfterBuild()),a}get fragment(){return this.lightLayer.node}get category(){return this.lightLayer.category}get hasAO(){return this.lightLayer.getNode("occlusion")?.value??!1}reset(e,t,o=!1){et.startContext(this),(this.data!==e||o)&&this.reset0(e,t),et.endContext(this)}reset0(e,t){this.data=e;let o=e.layers??Qt.defaultTwoLayerData("phong").layers;try{this.layers=o.map(i=>zn.create(this.layerIdGen++,i.id,i.data,t.shared))}catch{this.layers=[]}this.layers.reverse(),this.name=e.name??"Untitled Material",this.onUpdate(t.shared),this.transparent=Yu(e,t.shared),this.saveVariableLocations(t)}onVariableUpdate(e,t,o){if(e[0]==="alphaOverride")this.transparent=Yu(this.data,o.shared),this.lightLayer.setValue("alphaOverride",Math.max(0,Math.min(Number(t)/100,1)));else if(e[0]==="layer"){let i=e[1],a=e[2];if(i&&a){let s=this.layers.find(l=>l.uuid===i);s?.hasValue(a)&&(a==="alpha"?(this.transparent=Yu(this.data,o.shared),s.setValue(a,Math.max(0,Math.min(Number(t)/100,1)))):s.setValue(a,t))}}}saveVariableLocations(e){if(!this.allowVariableSaves)return;let t=this.data.layers.find(o=>o.data.type==="light");t&&e.shared.getVariable(t.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(t=>t.type===e)}getLayerByUuid(e){return this.layers.find(t=>t.uuid===e)}onUpdate(e){this.lightLayer=this.layers.find(t=>t instanceof dr),this.lightLayer===void 0&&(this.lightLayer=new dr(0,"",{..._t.defaultData("light","phong"),visible:!1},new tn,{},e)),this.dispose();for(let t of this.flavors)t&&t.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 dr);if(!e)return;let t=e.data,o=t.bumpMap,i=t.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 ft&&s.color instanceof Ln&&(s.uuid===o&&(e.node.bumpMap=s.color),s.uuid===i&&(e.node.roughnessMap=s.color))}}updateByOp(e,t,o){if(et.startContext(this),t!==void 0?this.data=t:t=this.data,this.transparent=Yu(t,o.shared),e.path[0]==="layers"){let i=o.shared,a=e.path[1];if(a===void 0)o.scene.markNeedsUpdateRendererDirty(),this.reset0(t,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=t.layers.data(a),c;e.type===0&&("alpha"in e.props||"alphaOverride"in e.props)&&("alpha"in e.props?c={...e.props,alpha:Vn(e.props.alpha,i,["material",this.uuid,"layer",a,"alpha"])}:c={...e.props,alphaOverride:Vn(e.props.alphaOverride,i,["material",this.uuid,"alphaOverride"])}),s.updateByOp({...e,...c?{props:c}:{},path:e.path.slice(2)},l,o)&&this.reset0(t,o)}}}else this.reset0(t,o);et.endContext(this)}applyMasks(){for(let e=0;e<this.layers.length;++e){let t=this.layers[e];t instanceof ft?t.color.mask=void 0:t instanceof dr&&(t.node.mask=void 0)}for(let e=0;e<this.layers.length;++e){let t=this.layers[e];if(t instanceof ft&&t.isMask.value&&t.data.visible&&e>0){let o=e-1,i=this.layers[o];i instanceof dr?i.node.mask=new $t(t.color,t.alpha,$t.MUL):i instanceof ft&&(i.isMask.value||(i.color.mask=new $t(t.color,t.alpha,$t.MUL)))}}}blendColors(){let e=this.layers.findIndex(o=>o instanceof ft),t=this.layers.findIndex(o=>o instanceof dr);if(e!==-1&&e<t){let o=this.layers[e].color;for(let i=e+1;i<t;++i){let a=this.layers[i];if(a instanceof ft){if(a.isMask.value)continue;o=new Za(o,a.color,a.alpha,a.mode)}}this.fragment.color=o}else this.fragment.color=void 0}blendAfterColors(){let e=new Xe("outgoingLight","f"),t=this.layers.findIndex(o=>o instanceof dr);if(this.layers.length>t+1){for(let o=t+1;o<this.layers.length;++o){let i=this.layers[o];if(i instanceof ft){if(i.isMask.value)continue;e=new Za(e,i.color,i.alpha,i.mode)}}this.fragment.afterColor=e}else this.fragment.afterColor=void 0}blendPositions(){let e=this.layers.filter(t=>t instanceof Dl);if(e.length>0){let t=e[0].position;for(let o=1;o<e.length;++o)e[o]&&(t=new $t(t,e[o].position,$t.ADD),t=new $t(t,new se(.5).setReadonly(!0),$t.MUL));this.fragment.position=t}else this.fragment.position=void 0}getDefines(){return this.defines}getUniforms(){return this.uniforms}getVertexShader(){return this.vertexShader}getFragmentShader(){return this.fragmentShader}onBeforeCompile(e){e.defines=this.defines,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,t){let o=(i,a,s)=>Math.min(Math.max(i,a),s);for(let i of this.layers)if(i.type==="displace"){let a=o(i.uniforms[`f${i.id}_intensity`].value,e,t);i.uniforms[`f${i.id}_intensity`].value=a}}updateFrame(e){for(let t=0;t<this.updaters.length;++t)e.updateNode(this.updaters[t])}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 t of this.flavors)t&&t.updateAfterBuild();return 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 ft){let t=e.params.texture;if(t instanceof yi&&!t.image.loaded)return!1}return!0}};Object.defineProperties(Sr.prototype,{properties:{get:function(){return this.fragment.properties}}});var vi=class extends bi{constructor(r,e,t){super(r,e,!1),this.uuid=t,this.allowVariableSaves=!0,this.saveVariableLocations(e)}};var rb=new Map;function ob(n){if(typeof n=="string")return n;let r=rb.get(n);return r||(r={url:URL.createObjectURL(new Blob([n]))},rb.set(n,r)),r.url}var FM,nb=new Promise(n=>{FM=n});var ib;nb.then(n=>ib=n);var Si=class{constructor({src:r,volume:e,delay:t,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 i;typeof r=="string"?i={src:r}:i={src:ob(r),format:"wav"},this.sound=new ib.Howl(i),this.sound.on("end",this.onEnd),this.src=r,e!==void 0&&(this.volume=e),t!==void 0&&(this.delay=t),o!==void 0&&(this.loop=o)}get status(){return this._status}get volume(){return this._volume}set volume(r){this._volume=r,this.sound.volume(r)}get loop(){return this._loop}set loop(r){this._loop=r,this.loopsRemaining=r}replay(){this.clearDelay(),this.delayTimerId=window.setTimeout(()=>{this.sound.play(),this.clearDelay()},this.delay)}fade(r,e=1e3){r?(this.sound.volume(this._volume),this.clearFade(),this.fadeTimerId=window.setTimeout(()=>{this.sound.fade(this._volume,0,e),this.clearFade()},r)):this.sound.fade(this._volume,0,e)}on(r,e,t){this.sound.on(r,e,t)}off(r,e,t){this.sound.off(r,e,t)}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(r=!1){this.off(),this.stop(),this.clearFade(),this.clearDelay()}};var Ut=require("three"),Ku=class{constructor(){this.type="ShapePath";this.color=new Ut.Color;this.subPaths=[];this.currentPath=null}moveTo(r,e){return this.currentPath=new Ut.Path,this.subPaths.push(this.currentPath),this.currentPath.moveTo(r,e),this}lineTo(r,e){return this.currentPath?.lineTo(r,e),this}quadraticCurveTo(r,e,t,o){return this.currentPath?.quadraticCurveTo(r,e,t,o),this}bezierCurveTo(r,e,t,o,i,a){return this.currentPath?.bezierCurveTo(r,e,t,o,i,a),this}splineThru(r){return this.currentPath?.splineThru(r),this}toShapes(){let e={ORIGIN:0,DESTINATION:1,BETWEEN:2,LEFT:3,RIGHT:4,BEHIND:5,BEYOND:6},t={loc:e.ORIGIN,t:0};function o(m,y,g,v){let O=m.x,P=y.x,S=g.x,T=v.x,I=m.y,x=y.y,E=g.y,N=v.y,M=(T-S)*(I-E)-(N-E)*(O-S),D=(P-O)*(I-E)-(x-I)*(O-S),_=(N-E)*(P-O)-(T-S)*(x-I),B=M/_,z=D/_;if(_===0&&M!==0||B<=0||B>=1||z<0||z>1)return null;if(M===0&&_===0){for(let U=0;U<2;U++)if(i(U===0?g:v,m,y),t.loc===e.ORIGIN){let R=U===0?g:v;return{x:R.x,y:R.y,t:t.t}}else if(t.loc===e.BETWEEN){let R=+(O+t.t*(P-O)).toPrecision(10),W=+(I+t.t*(x-I)).toPrecision(10);return{x:R,y:W,t:t.t}}return null}else{for(let W=0;W<2;W++)if(i(W===0?g:v,m,y),t.loc===e.ORIGIN){let j=W===0?g:v;return{x:j.x,y:j.y,t:t.t}}let U=+(O+B*(P-O)).toPrecision(10),R=+(I+B*(x-I)).toPrecision(10);return{x:U,y:R,t:B}}}function i(m,y,g){let v=g.x-y.x,O=g.y-y.y,P=m.x-y.x,S=m.y-y.y,T=v*S-P*O;if(m.x===y.x&&m.y===y.y){t.loc=e.ORIGIN,t.t=0;return}if(m.x===g.x&&m.y===g.y){t.loc=e.DESTINATION,t.t=1;return}if(T<-Number.EPSILON){t.loc=e.LEFT;return}if(T>Number.EPSILON){t.loc=e.RIGHT;return}if(v*P<0||O*S<0){t.loc=e.BEHIND;return}if(Math.sqrt(v*v+O*O)<Math.sqrt(P*P+S*S)){t.loc=e.BEYOND;return}let I;v!==0?I=P/v:I=S/O,t.loc=e.BETWEEN,t.t=I}function a(m,y){let g=[],v=[];for(let O=1;O<m.length;O++){let P=m[O-1],S=m[O];for(let T=1;T<y.length;T++){let I=y[T-1],x=y[T],E=o(P,S,I,x);E!==null&&g.find(N=>N.t<=E.t+Number.EPSILON&&N.t>=E.t-Number.EPSILON)===void 0&&(g.push(E),v.push(new Ut.Vector2(E.x,E.y)))}}return v}function s(m,y,g){let v=new Ut.Vector2;y.getCenter(v);let O=[];return g.forEach(P=>{P.boundingBox.containsPoint(v)&&a(m,P.points).forEach(T=>{O.push({identifier:P.identifier,isCW:P.isCW,point:T})})}),O.sort((P,S)=>P.point.x-S.point.x),O}function l(m,y,g,v,O){(O==null||O==="")&&(O="nonzero");let P=new Ut.Vector2;m.boundingBox.getCenter(P);let S=[new Ut.Vector2(g,P.y),new Ut.Vector2(v,P.y)],T=s(S,m.boundingBox,y);T.sort((D,_)=>D.point.x-_.point.x);let I=[],x=[];T.forEach(D=>{D.identifier===m.identifier?I.push(D):x.push(D)});let E=I[0].point.x,N=[],M=0;for(;M<x.length&&x[M].point.x<E;)N.length>0&&N[N.length-1]===x[M].identifier?N.pop():N.push(x[M].identifier),M++;if(N.push(m.identifier),O==="evenodd"){let D=N.length%2===0,_=N[N.length-2];return{identifier:m.identifier,isHole:D,for:_}}else if(O==="nonzero"){let D=!0,_=null,B=null;for(let z=0;z<N.length;z++){let U=N[z];y[U]&&(D?(B=y[U].isCW,D=!1,_=U):B!==y[U].isCW&&(B=y[U].isCW,D=!0))}return{identifier:m.identifier,isHole:D,for:_}}else console.warn('fill-rule: "'+O+'" is currently not implemented.')}let c=0,u=999999999,p=-999999999,d=[];this.subPaths.forEach(m=>{let y=m.getPoints(),g=-999999999,v=999999999,O=-999999999,P=999999999;for(let S=0;S<y.length;S++){let T=y[S];T.y>g&&(g=T.y),T.y<v&&(v=T.y),T.x>O&&(O=T.x),T.x<P&&(P=T.x)}p<=O&&(p=O+1),u>=P&&(u=P-1),y.length&&d.push({curves:m.curves,points:y,isCW:Ut.ShapeUtils.isClockWise(y),identifier:c++,boundingBox:new Ut.Box2(new Ut.Vector2(P,v),new Ut.Vector2(O,g))})});let h=d.map(m=>l(m,d,u,p,this.userData?.style.fillRule)),f=[];return d.forEach(m=>{let y=h[m.identifier];if(y&&!y.isHole){let g=new Ut.Shape;g.curves=m.curves,h.filter(O=>O?.isHole&&O.for===m.identifier).forEach(O=>{if(O){let P=d[O.identifier],S=new Ut.Path;S.curves=P.curves,g.holes.push(S)}}),f.push(g)}}),f}};var jf=!1,sb,Ff=new Promise(n=>{sb=n}),ab=!1;var Qu;function lb(){if(jf=!0,ab)return;if(Qu)return Qu;async function n(){let e=await import("./opentype.js");sb(e),ab=!0}return Qu=n(),Qu}var El=class{async load(r,e,t=()=>{}){let{load:o}=await Ff;o(r,(i,a)=>{i||!a?t(i??"Something went wrong"):e(a)})}async parse(r){let{parse:e,Bidi:t}=await Ff;try{let o=e(r),i=new t,a=s=>o.charToGlyphIndex(s.char);return i.registerModifier("glyphIndex",null,a),i.applyFeatures(o,o.defaultRenderOptions.features),{font:o,bidi:i}}catch(o){console.error(o)}}};async function UM(n){return await(await fetch(n)).arrayBuffer()}var kM=new El;async function Uf(n){let r,e,t=!1;if(n.url?(r=await UM(n.url),e=n.url,t=n.url.startsWith("/")):n.data&&(r=n.data.buffer.slice(n.data.byteOffset,n.data.byteOffset+n.data.byteLength)),r)if(jf){let o=await kM.parse(r);if(o)return{font:o.font,url:e,intercepted:t,arr:r,bidi:o.bidi}}else return{font:void 0,url:e,intercepted:t,arr:r,bidi:null}}var ms=require("three");function HM(n,r){return r.state.glyphIndex===n||r.state.fina===n||r.state.medi===n||r.state.init===n}var Zu=class{constructor(r){this._arrayBuffer=new ArrayBuffer(1);this._isLoaded=!1;this._intercepted=!1;this._isUserFont=r.isUserFont??!1,this._loadingPromise=Uf(r).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(r){this._isLoaded=!1,this._isUserFont=r.isUserFont??!1,this._loadingPromise=Uf(r).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(r,e,t){if(!this._bidi)return[];let o=this._bidi;o.getTextGlyphs(e);let i=o.tokenizer.tokens,a=[],s=0,l=t.length===i.length;for(let c=0;c<t.length;c++){let u=t[c].index,p=String.fromCharCode(t[c].unicode),d=i[s];if(HM(u,d)||l)a.push({char:p,index:u,replacements:[d.state.glyphIndex],replacementChars:[d.char]}),s++;else{let h=d.char,f="",m=[d.state.glyphIndex],y=[],g=!1;for(;!g;)s++,f=e.charAt(s),h+=f,m.push(r.charToGlyphIndex(f)),y=r.stringToGlyphs(h),y.length===1&&y[0].index===u&&(g=!0),s>e.length&&(g=!0);a.push({char:p,index:u,replacements:m,replacementChars:Array.from(h)}),s++}}return a}generateShapes(r,e){if(!this._isLoaded)return;let t=this.font,o=e.fontSize/this.unitsPerEm,i=e.fontSize*e.lineHeight,a=r.map(v=>this.getTextWidth(v,e)),s=e.width,l=this.getCharWidth(`
2231
+ `,e),c=e.horizontalAlign===1?l:0,u=this.computeSpaceWidthForLine(r,0,e),p=this.getLineInitialOffsetX(a[0],s,e.horizontalAlign,r[0],l),d=this.getLineInitialOffsetY(i,r.length,e.height,o,e.verticalAlign),h=[],f=r.map(v=>[]),m=r.map(v=>[]),y;for(let v=0;v<r.length;v++){let O=r[v],P={features:{liga:!0}},S=[];try{S=t.stringToGlyphs(O,P)}catch(I){console.warn(I)}p=this.getLineInitialOffsetX(a[v],s,e.horizontalAlign,O,l);let T=[];try{T=this.reverseLigaturesTable(t,O,S)}catch(I){console.warn(I)}u=this.computeSpaceWidthForLine(r,v,e);for(let I=0;I<S.length;I++){let x=S[I],E=x.index===0?`
2232
+ `:x.unicode?String.fromCharCode(x.unicode):void 0,N=T[I],M=0,D=0;I===0&&e.horizontalAlign===2&&x.leftSideBearing!==void 0&&(D=-x.leftSideBearing*o),y&&(M=t.getKerningValue(x,y)*o),p+=D+M;let _=0;if(E===`
2233
+ `)_=c;else if(E===" ")_=u;else{let B=this.createPath(x,o,p,d,e);B&&(_=B.offsetX-(M+D),h.push(B.path))}if(N.replacements.length===1)m[v].push([p,d]),f[v].push(_);else{let B=N.replacements.map(W=>(t.glyphs.get(W).advanceWidth??0)*o),z=B.reduce((W,j)=>W+=j,0),U=B.map(W=>W/z),R=p;for(let W=0;W<U.length;W++){let j=_*U[W];m[v].push([R,d]),f[v].push(j),R+=j}}p+=_,y=x}d-=i}let g=[];for(let v=0,O=h.length;v<O;v++)g.push(...h[v].toShapes());return{shapes:g,charWidths:f,lineWidths:a,charCoords:m}}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(r,e,t,o,i){return(t===3||t===2)&&o.indexOf(`
2234
+ `)>=0&&(r-=i),t===3?e*.5-r*.5:t===2?e-r:0}getLineInitialOffsetY(r,e,t,o,i){let a=e*r,s=Math.abs(this.ascender-this.descender)*o,l=r-s,c=-this.ascender*o-l/2;return i===3?-(t-a-c):i===2?-(t*.5-a*.5-c):c}createPath(r,e,t,o,i){let a=r.getPath(t,-o,i.fontSize,{kerning:!1,letterSpacing:i.letterSpacing});if(!a){console.error('THREE.Font: character "'+r+'" does not exists in font family '+this.familyName+".");return}let s=new Ku,l=(r.advanceWidth??1)*e;if(r)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=WM(c.curves);u!==void 0&&c.currentPoint.distanceTo(u)>0&&c.lineTo(u.x,u.y)}),{offsetX:l+i.fontSize*i.letterSpacing,path:s}}getCharWidth(r,e){return this.font?.getAdvanceWidth(r,e.fontSize,{kerning:!0,letterSpacing:e.letterSpacing})??0}getTextWidth(r,e){return this.font?.getAdvanceWidth(r,e.fontSize,{kerning:!0,letterSpacing:e.letterSpacing})??0}computeSpaceWidthForLine(r,e,t){let o=this.getCharWidth(" ",t),i=r[e];if(i){let a=this.countSpaces(i.trimEnd());if(t.horizontalAlign===4&&e<r.length-1&&a){let s=t.width,l=this.getTextWidth(i,t);return(s-(l-a*o))/a}}return o}countSpaces(r){return(r.match(/ /g)||[]).length}};function WM(n){if(n.length){let r=n[0];if(r instanceof ms.LineCurve)return r.v1;if(r instanceof ms.CubicBezierCurve||r instanceof ms.QuadraticBezierCurve)return r.v0}}var kf=class{constructor(){this.objects=new Map;this.unreachable=new Set}getCached(r){return this.objects.get(r)}get size(){return this.objects.size}get(r,e,t){let o=this.objects.get(r);return o===void 0?(o=this.createObject(r,e,t),this.objects.set(r,o)):o.isShared=!0,o}forceDelete(r){let e=this.objects.get(r);e&&(this.disposeObject(e),this.objects.delete(r))}mutateIfUnique(r,e){let t=this.objects.get(r);if(t&&t.isShared!==!0)return this.objects.delete(r),this.objects.set(e,t),t}startGc(){this.unreachable=new Set(this.objects.keys())}markAsReachable(r,e){let t=this.objects.get(r);e===t?this.unreachable.delete(r):!1&&console.warn("Reachable but deleted",r)}endGc(){this.unreachable.forEach(r=>{this.disposeObject(this.objects.get(r)),this.objects.delete(r)}),this.unreachable.clear()}dispose(){this.objects.forEach(r=>{this.disposeObject(r)}),this.objects.clear()}},_l=class extends kf{constructor(e){super();this.flatShading=e}disposeObject(e){e.dispose()}createObject(e,t,o){let i=Jo(e,t,this.flatShading,o);return i.computeBoundingSphere(),i}};var cb={markNeedsUpdateRendererDirty:()=>{}};var Hf=require("three"),Wf=class extends qu{constructor(e){super();this.shared=e}create(e){return new fs(e,this.shared)}},wi=class{constructor(r,e={}){this.data=r;this.geometryCache=new _l(!0);this.geometryCache2=new _l(!1);this.imageHolderCache=new Wf(this);this.thisContext={scene:cb,shared:this};this.deletedMaterial=new vi(Qt.defaultTwoLayerData("phong"),this.thisContext,"");this.deletedImage=new Nr(uu.emptyImage,this);this.deletedVideo=new Nr(pa.defaultVideo,this);this.materials={};this.images={};this.canvases={};this.videos={};this.colors={};this.audios={};this.particles={};this.fonts={};this.variables={};this.mouseProperty=null;this.raycastProperty=null;this.requestRender=()=>{this._requestRender&&this._requestRender()};if(e.images)for(let[t,o]of Object.entries(e.images))this.addImage(t,o);if(e.videos)for(let[t,o]of Object.entries(e.videos))this.addVideo(t,o);if(e.audios)for(let[t,o]of Object.entries(e.audios))this.addAudio(t,o);if(e.particles)for(let[t,o]of Object.entries(e.particles))this.addParticle(t,o);this.reset(r)}setRequestRender(r){this._requestRender=r}setEntityOpContext(r){this.entityOpContext=r}reset(r,e=!1){this.resetLib(r.lib);for(let{id:t,data:o}of r.variables)this.addVariableHolder(t,o),e&&this.updateVariableHolder(t,o);for(let[t,o]of Object.entries(r.images))this.addImage(t,o);for(let[t,o]of Object.entries(r.videos))this.addVideo(t,o);for(let[t,o]of Object.entries(r.colors))this.addColor(t,o);for(let[t,o]of Object.entries(r.materials))this.addMaterial(t,o);for(let[t,o]of Object.entries(r.audios))this.addAudio(t,o);for(let[t,o]of Object.entries(r.particles))this.addParticle(t,o);for(let[t,o]of Object.entries(r.fonts))this.addFont(t,o)}addMaterial(r,e){if(this.materials[r]){let t=this.materials[r];t.reset(e,this.thisContext),t.dispose()}else{let t=new vi(e,this.thisContext,r);this.materials[r]=t}}deleteMaterial(r){this.materials[r]&&(this.materials[r].nodeMaterialDispose(),delete this.materials[r])}getMaterial(r){let e=this.materials[r];return e}getMaterialOrDeletedPlaceholder(r){return this.materials[r]??this.deletedMaterial}material(r){return typeof r=="string"?this.getMaterialOrDeletedPlaceholder(r):r==null?(console.error("material is undefined or null"),this.deletedMaterial):new bi(r,this.thisContext)}getMaterials(){return this.materials}addImage(r,e){return this.images[r]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),this.images[r].updateSrc(e.data),!0):(this.images[r]=new Nr(e,this),!1)}deleteImage(r){let e=this.images[r];e&&(e.dispose(),delete this.images[r])}getDefaultImage(){return this.images.image_0}getImage(r){return this.images[r]??this.deletedImage}image(r){return typeof r=="string"?this.getImage(r):this.imageHolderCache.load(r)}addCanvas(r,e){return this.canvases[r]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),this.canvases[r].updateSrc(e),!0):(this.canvases[r]=new Nr(e,this),!1)}canvas(r){return this.canvases[r]}addVideo(r,e){return this.videos[r]?(this.videos[r].updateSrc(e.data),!0):(this.videos[r]=new Nr(e,this),!1)}deleteVideo(r){let e=this.videos[r];e&&(e.dispose(),delete this.videos[r])}getVideo(r){return this.videos[r]??this.deletedVideo}video(r){return typeof r=="string"?this.getVideo(r):this.imageHolderCache.load(r)}addColor(r,e){return this.colors[r]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),"a"in e?this.colors[r].setRGBA(e.r,e.g,e.b,e.a):this.colors[r].setRGBA(e.r,e.g,e.b,1),!0):("a"in e?this.colors[r]=new Rn(e.r,e.g,e.b,e.a):this.colors[r]=new Rn(e.r,e.g,e.b,1),!1)}updateColor(r,e){if(this.colors[r]){this.onColorOrImageUpdate&&this.onColorOrImageUpdate();let t=this.colors[r];return this.colors[r].r=e.r??t.r,this.colors[r].g=e.g??t.g,this.colors[r].b=e.b??t.b,this.colors[r].a=e.a??t.a,!0}return!1}deleteColor(r){this.colors[r]&&delete this.colors[r]}getColor(r){return this.colors[r]}color(r){let e;if(typeof r=="string"){let t=this.getColor(r);t?e=t:(console.warn("Tried to create color layer params with a color key that does not exist in the assets manager"),e=new Ft(0,0,0,0))}else return"a"in r?new Ft(r.r,r.g,r.b,r.a):new Ft(r.r,r.g,r.b,1);return e}addAudio(r,e){this.audios[r]=e}getAudio(r){let e=this.audios[r];if(e instanceof Si)return e;{let t=new Si({src:e.data});return this.audios[r]=t,t}}addParticle(r,e){this.particles[r]=e}getParticle(r){return this.particles[r]}deleteParticle(r){this.particles[r]&&delete this.particles[r]}deleteAudio(r){let e=this.audios[r];e&&(e instanceof Si&&e.dispose(),delete this.audios[r])}addFont(r,e){this.fonts[r]=new Zu(e),this.fonts[r].loadingPromise.then(()=>this.requestRender())}getFont(r){return this.fonts[r]}deleteFont(r){this.fonts[r]&&delete this.fonts[r]}dispose(){Object.keys(this.materials).forEach(e=>this.deleteMaterial(e)),this._requestRender=void 0,Object.values(this.audios).forEach(e=>{e instanceof Si&&e.dispose()}),this.audios={},this.particles={},this.geometryCache.dispose(),this.geometryCache2.dispose()}addVariableHolder(r,e){return this.variables[r]===void 0?(this.variables[r]={value:e.value,locations:[]},"dynamicVariableType"in e&&(this.variables[r].dynamicVariablePlayState="Playing",this.variables[r].dynamicVariableToggleIsForward=void 0),!0):(this.variables[r].value=e.value,!1)}resetDynamicVariablePlayState(){for(let r in this.variables)this.variables[r].dynamicVariablePlayState!==void 0&&(this.variables[r].dynamicVariablePlayState="Playing",this.variables[r].dynamicVariableToggleIsForward=void 0)}updateVariableHolder(r,e){this.updateVariable(r,e.value)}updateVariable(r,e){if(this.variables[r]===void 0)return!1;this.variables[r].value=e;let t=e;for(;typeof t=="string";)t=this.variables[t].value;let o=this.entityOpContext.scene;for(let i=this.variables[r].locations.length-1;i>=0;i--){let a=this.variables[r].locations[i];if(a[0]==="material"){let s=a[1],l=t,c={scene:o,shared:this},u=a.slice(2);o.traverseMaterial(d=>{let h=d.root??d;h.uuid===s&&h.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[r].locations.splice(i,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]]=t*Hf.MathUtils.DEG2RAD:s[a[a.length-1]]=t}if(s=o.find(a[0]),s.type==="ParticleEmitter"&&s.updateVariableState(t,a),je.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.instances.forEach(u=>{let p=u.dataPatched;u.chooseGeoemtryCache(this).forceDelete(p.geometry),u.createGeometryDelayed(this.entityOpContext),u.onVariableUpdate(!0)})}}}}return this.requestRender(),!0}deleteVariable(r){this.variables[r]&&delete this.variables[r]}getVariable(r,e){if(Array.isArray(r)){if(r[0]==="mouse")return this.mouseProperty?.[r[1]]??0;if(r[0]==="raycast")return this.raycastProperty?.[r[1]]??0;let t=this.entityOpContext.scene.find(r[0]);if(r[1]==="width"||r[1]==="height"||r[1]==="depth")return t.geometry.userData.parameters[r[1]];for(let o=1;o<r.length;o++)t=t[r[o]];return r[1]==="rotation"&&(t*=Hf.MathUtils.RAD2DEG),t}for(let t in this.variables){if(e===void 0)break;let o=this.variables[t],i=o.locations?.findIndex(a=>yt.equal(a,e));i!==void 0&&i!==-1&&o.locations.splice(i,1)}if(typeof r=="string"){let t=r,o=r;do{if(o=t,this.variables[t]===void 0)break;let i=this.variables[t].value;e&&this.variables[o]!==void 0&&this.variables[o].locations.push(e),t=i}while(typeof t=="string");return t}else return r}getVariables(){return this.variables}getDynamicVariablePlayState(r){return this.variables[r]?.dynamicVariablePlayState}setDynamicVariablePlayState(r,e){this.variables[r]!==void 0&&(this.variables[r].dynamicVariablePlayState=e)}getDynamicVariableToggleIsForward(r){return this.variables[r]?.dynamicVariableToggleIsForward}setDynamicVariableToggleIsForward(r,e){this.variables[r]!==void 0&&(this.variables[r].dynamicVariableToggleIsForward=e)}resetLib(r){for(let[e,t]of Object.entries(r.images))this.addImage(e,t.asset);for(let[e,t]of Object.entries(r.audios))this.addAudio(e,t.asset);for(let[e,t]of Object.entries(r.particles))this.addParticle(e,t.asset);for(let[e,t]of Object.entries(r.colors))this.addColor(e,t.asset);for(let[e,t]of Object.entries(r.fonts))this.addFont(e,t.asset);for(let[e,t]of Object.entries(r.materials))this.addMaterial(e,t.asset);for(let[e,t]of Object.entries(r.videos))this.addVideo(e,t.asset);for(let[e,t]of Object.entries(r.variables))this.addVariableHolder(e,t.asset)}updateLibByOp(r,e){r.path[0]==="images"?r.path.length===1&&r.type===1?this.addImage(r.id,r.data.asset):r.path.length===1&&r.type===2&&this.deleteImage(r.id):r.path[0]==="videos"?r.path.length===1&&r.type===1?this.addVideo(r.id,r.data.asset):r.path.length===1&&r.type===2&&this.deleteVideo(r.id):r.path[0]==="audios"?r.path.length===1&&r.type===1?this.addAudio(r.id,r.data.asset):r.path.length===1&&r.type===2&&this.deleteAudio(r.id):r.path[0]==="particles"?r.path.length===1&&r.type===1?this.addParticle(r.id,r.data.asset):r.path.length===1&&r.type===2&&this.deleteParticle(r.id):r.path[0]==="colors"?r.path.length===1&&r.type===1?this.addColor(r.id,r.data.asset):r.path.length===1&&r.type===2&&this.deleteColor(r.id):r.path[0]==="materials"?r.path.length===1&&r.type===1?this.addMaterial(r.id,r.data.asset):r.path.length===1&&r.type===2&&this.deleteMaterial(r.id):r.path[0]==="fonts"?r.path.length===1&&r.type===1?this.addFont(r.id,r.data.asset):r.path.length===1&&r.type===2&&this.deleteFont(r.id):r.path[0]==="variables"?r.path.length===1&&r.type===1?this.addVariableHolder(r.id,r.data.asset):r.path.length===1&&r.type===2&&this.deleteVariable(r.id):r.path[0]==="components"&&e.updateByLibOp(r,this)}updateByOp(r,e,t){this.data=e,r.path[0]==="images"?r.path.length===2&&r.type===0?r.props.data&&this.getImage(r.path[1]).updateSrc(r.props.data):r.path.length===1&&r.type===1?this.addImage(r.id,r.data):r.path.length===1&&r.type===2&&this.deleteImage(r.id):r.path[0]==="videos"?r.path.length===2&&r.type===0?r.props.data&&this.getVideo(r.path[1]).updateSrc(r.props.data):r.path.length===1&&r.type===1?this.addVideo(r.id,r.data):r.path.length===1&&r.type===2&&this.deleteVideo(r.id):r.path[0]==="audios"?r.path.length===2&&r.type===0?r.props.data&&this.addAudio(r.path[1],e.audios[r.path[1]]):r.path.length===1&&r.type===1?this.addAudio(r.id,r.data):r.path.length===1&&r.type===2&&this.deleteAudio(r.id):r.path[0]==="particles"?r.path.length===2&&r.type===0?r.props.data&&this.addParticle(r.path[1],e.particles[r.path[1]]):r.path.length===1&&r.type===1?this.addParticle(r.id,r.data):r.path.length===1&&r.type===2&&this.deleteParticle(r.id):r.path[0]==="colors"?r.path.length===2&&r.type===0?this.updateColor(r.path[1],r.props):r.path.length===1&&r.type===1?this.addColor(r.id,r.data):r.path.length===1&&r.type===2&&this.deleteColor(r.id):r.path[0]==="materials"?r.path.length===1&&r.type===1?this.addMaterial(r.id,r.data):r.path.length===1&&r.type===2?this.deleteMaterial(r.id):r.path.length>1&&this.getMaterial(r.path[1]).updateByOp(gt.drop(r,2),e.materials[r.path[1]],{shared:this,scene:t}):r.path[0]==="fonts"?r.path.length===2&&r.type===0?this.updateFont(r.path[1],r,t):r.path.length===1&&r.type===1?this.addFont(r.id,r.data):r.path.length===1&&r.type===2&&this.deleteFont(r.id):r.path[0]==="variables"?r.path.length===2&&r.type===0&&"value"in r.props?this.updateVariable(r.path[1],r.props.value):r.path.length===1&&r.type===4?this.addVariableHolder(r.id,r.data):r.path.length===1&&r.type===5&&this.deleteVariable(r.id):r.path[0]==="lib"&&this.updateLibByOp(gt.drop(r,1),t)}updateFont(r,e,t){if(e.props.url){let o=this.getFont(r),i={...this.data.fonts[r],url:e.props.url};o.update(i),o.loadingPromise.then(()=>this.requestRender()),t.updateFont(r,this)}}},ub=new wi(zr.emptyData());var wr=class extends Gt{updateByPatchedOp(e,t,o){if(super.updateByPatchedOp(e,t,o),ng(e.path,["materials"])!==null&&e.type===0&&Array.isArray(this.material))for(let[i,a]of Object.entries(e.props)){let s=o.shared.material(a);this.material[Number(i)]=s}else if(Ge(e.path,["material"])&&this.material instanceof Sr)"material"in t&&typeof t.material!="string"&&this.material.updateByOp(gt.drop(e,1),t.material,o);else if(Ge(e.path,["materials","*"])&&Array.isArray(this.material)){let i=e.path[1];if("materials"in t&&i<this.material.length){let a=t.materials[i];typeof a!="string"&&this.material[i].updateByOp(gt.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,t){super.updateState(e,t),e.castShadow!==void 0&&(this.castShadow=e.castShadow),e.receiveShadow!==void 0&&(this.receiveShadow=e.receiveShadow);let o=this.dataPatched;if(e.geometry?.type!=="NonParametricGeometry"&&"material"in e&&e.material!==void 0&&(this.disposeMaterial(),this.material=t.shared.material(e.material).getFlavor(o.flatShading,o.side,o.wireframe),t.scene.markNeedsUpdateRendererDirty()),(e.geometry?.type==="NonParametricGeometry"||"materials"in e)&&("materials"in e&&e.materials!==void 0?(this.disposeMaterial(),this.material=e.materials.map(i=>t.shared.material(i).getFlavor(o.flatShading,o.side,o.wireframe)),t.scene.markNeedsUpdateRendererDirty()):"material"in e&&e.material!==void 0&&(this.disposeMaterial(),this.material=[t.shared.material(e.material).getFlavor(o.flatShading,o.side,o.wireframe)],t.scene.markNeedsUpdateRendererDirty())),e.flatShading!==void 0||e.wireframe!==void 0||e.side!==void 0)if(Array.isArray(this.material))for(let i=0;i<this.material.length;i++)this.material[i]=this.material[i].getFlavor(o.flatShading,o.side,o.wireframe);else this.material=this.material.getFlavor(o.flatShading,o.side,o.wireframe)}disposeMaterial(){this.material&&rc(this.material).forEach(e=>{e instanceof Sr&&(e instanceof vi||e.nodeMaterialDispose())})}dispose(){this.disposeMaterial(),super.dispose()}};var Dr=require("three");var db=new Dr.Vector3,pb=new Dr.Vector4,fb=new Dr.Vector4,$M=new Dr.Vector3,hb=new Dr.Matrix4,St=class extends wr{constructor(e,t,o){super(e,t);this.data=t;this.isSkinnedMesh=!1;this.localGeometry=void 0,t.bindMode&&t.bindMatrix&&(this.bindMode=t.bindMode,this.bindMatrix=new Dr.Matrix4().fromArray(t.bindMatrix),this.bindMatrixInverse=new Dr.Matrix4)}chooseGeoemtryCache(e){return e.geometryCache}markGeometryAsReachable(e){this.geometryCreateDeleyed instanceof Dr.BufferGeometry&&this.chooseGeoemtryCache(e).markAsReachable(this.dataPatched.geometry,this.geometryCreateDeleyed)}get geometry(){if(this.localGeometry!==void 0)return this.localGeometry;if(this.geometryCreateDeleyed instanceof wi){let e=this.geometryCreateDeleyed,t=this.chooseGeoemtryCache(e);this.geometryCreateDeleyed=t.get(this.dataPatched.geometry,e,this)}return this.geometryCreateDeleyed}set geometry(e){this.localGeometry=e}get is2DAndNoDepth(){let e=this.dataPatched.geometry;return Zs.is2DParametricMesh(e.type)&&e.depth===0}get is2DType(){return Zs.is2DParametricMesh(this.geometry.userData.type)}get isNonParametric(){return this.geometry.userData.type==="NonParametricGeometry"}updateByPatchedOp(e,t,o){super.updateByPatchedOp(e,t,o),Ge(e.path,["geometry"])&&this.updateByPatchedOpGeometry(gt.drop(e,1),t.geometry,o)}removeInteractionGeometry(e){this.localGeometry?.dispose(),this.localGeometry=void 0}updateGeometryInteractions(e,t){this.invalidateDownstreamBooleanData();let o=this.data.geometry.type;if(o==="NonParametricGeometry"||o==="SubdivGeometry"){let i=e;if(this.localGeometry===void 0){let u={...this.data.geometry,...i};this.localGeometry=Jo(u,t,this.data.flatShading,this)}let a,s,l;i.scaleBaked?[a,s,l]=i.scaleBaked:{width:a,height:s,depth:l}=i;let c=this.localGeometry.userData;c.sxPrev!==void 0&&yl(this.localGeometry.attributes,a/c.sxPrev,s/c.syPrev,l/c.szPrev),c.sxPrev=a,c.syPrev=s,c.szPrev=l}else{let i={...this.data.geometry,...e};this.localGeometry?.dispose(),this.localGeometry=Jo(i,t,this.data.flatShading,this)}}refreshAttachedCloners(e){for(let t of this.attachedSurfaceCloners)e.scene.addPendingUpdateCloner(t.object)}refreshAttachedPaths(e){for(let t of this.attachedPaths)e.scene.addPendingCommand(()=>t.updateShape())}createGeometryDelayed(e){this.geometryCreateDeleyed=e.shared,this.refreshAttachedCloners(e),this.refreshAttachedPaths(e)}updateByPatchedOpGeometry(e,t,o){let i=!1;e.type===0&&e.path.length===0&&Object.keys(e.props).includes("scaleBaked")&&this.geometryCreateDeleyed instanceof Nt&&this.chooseGeoemtryCache(o.shared).mutateIfUnique(this.geometryCreateDeleyed.data,t)===this.geometryCreateDeleyed&&(i=!0,this.geometryCreateDeleyed.mutateDirectlyScaleBaked(t,e.props.scaleBaked),this.refreshAttachedCloners(o),this.refreshAttachedPaths(o)),i||(o.scene?.markGeometryCacheDirty(),this.createGeometryDelayed(o)),this.resetBBoxNeedsUpdate(),this.invalidateDownstreamBooleanData()}updateGeometryOnStateUpdate(e,t){this.createGeometryDelayed(t)}updateState(e,t){e.geometry!==void 0&&this.updateGeometryOnStateUpdate(e.geometry,t),super.updateState(e,t)}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,t){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),t.set(o.width,o.height,o.depth??0).multiplyScalar(.5)):e.setScalar(0),t.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,t){this.skeleton=e,this.isSkinnedMesh=!0,t===void 0&&(this.updateMatrixWorld(!0),this.skeleton.calculateInverses(),t=this.matrixWorld),this.bindMatrix.copy(t),this.bindMatrixInverse.copy(t).invert()}pose(){this.skeleton.pose()}normalizeSkinWeights(e){let t=new Dr.Vector4,o=this.geometry.attributes.skinWeight;for(let i=0,a=o.count;i<a;i++){t.fromBufferAttribute(o,i);let s=1/t.manhattanLength();s!==1/0?t.multiplyScalar(s):t.set(1,0,0,0),o.setXYZW(i,t.x,t.y,t.z,t.w)}}boneTransform(e,t){let o=this.skeleton;if(o===void 0)return;let i=this.geometry;pb.fromBufferAttribute(i.attributes.skinIndex,e),fb.fromBufferAttribute(i.attributes.skinWeight,e),db.copy(t).applyMatrix4(this.bindMatrix),t.set(0,0,0);for(let a=0;a<4;a++){let s=fb.getComponent(a);if(s!==0){let l=pb.getComponent(a);hb.multiplyMatrices(o.bones[l].matrixWorld,o.boneInverses[l]),t.addScaledVector($M.copy(db).applyMatrix4(hb),s)}}return t.applyMatrix4(this.bindMatrixInverse)}};function YM(n){if(n.geometry.attributes.extrudeNormal||!n.geometry.attributes.position||!n.geometry.attributes.normal)return;let r=new Map,e=n.geometry.attributes,t=e.position.array,o=e.normal.array,i=new Float32Array(t.length);for(let a=0;a<t.length;a+=3){let s=`${t[a]}_${t[a+1]}_${t[a+2]}`,l=new Er.Vector3(o[a],o[a+1],o[a+2]);r.has(s)?r.get(s)?.normals.push(l):r.set(s,{normals:[l],result:new Er.Vector3})}r.forEach((a,s)=>{for(let l of a.normals)a.result.add(l);a.result.divideScalar(a.normals.length)});for(let a=0;a<t.length;a+=3){let s=`${t[a]}_${t[a+1]}_${t[a+2]}`,l=r.get(s)?.result;l&&(i[a]=l.x,i[a+1]=l.y,i[a+2]=l.z)}n.geometry.setAttribute("extrudeNormal",new Er.Float32BufferAttribute(i,3))}function XM(n){if(n.geometry.attributes.extrudeNormals||!n.geometry.attributes.position)return;let e=n.geometry.attributes.position.array,t=new Float32Array(e.length),o=new Er.Vector3;for(let i=0;i<e.length;i+=3)o.set(e[i],e[i+1],e[i+2]).normalize(),t[i]=o.x,t[i+1]=o.y,t[i+2]=o.z;n.geometry.setAttribute("extrudeNormal",new Er.Float32BufferAttribute(t,3))}function ys(n){if(Array.isArray(n.material)){for(let r of n.material)if(r.getLayersOfType("outline").length===0)return}else if(!(n.material instanceof Sr)||n.material.getLayersOfType("outline").length===0)return;n instanceof St&&n.is2DAndNoDepth?XM(n):YM(n)}function gs(n){if(!n.geometry.attributes.position)return;let e=n.geometry.attributes.position.array,t=new Float32Array(e.length),o=parseInt(n.uuid.replace(/\D/g,"")),i=[Er.MathUtils.seededRandom(o),Er.MathUtils.seededRandom(o+1e4),Er.MathUtils.seededRandom(o+2e4)];for(let a=0;a<e.length;a++)t[a]=i[a%3];n.geometry.setAttribute("randomColor",new Er.BufferAttribute(t,3))}var Io=new on.Box3,Bl=new on.Vector3;function mb(n){let r=!1;return n.scene.objects.traverse((e,t)=>{t.type==="Mesh"&&t.geometry.type==="SubdivGeometry"&&(r=!0)}),r}var Pi=class extends St{constructor(e,t,o){super(e,t,o);this.data=t;this.hiddenMatrixOld=new on.Matrix4;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,t){let o=this.geometry.userData.parameters;e.copy(this.originalGeometryNew.boundingSphere.center),t.set(o.width,o.height,o.depth??0).multiplyScalar(.5)}createGeometryByControls(e){if(this.skipReactionUpdate===!0)return;let t=this.localGeometry?.uuid,{originalGeometry:o,subdividedGeometry:i,subdivPointer:a}=Nt.build(e,this.subdivPointer,this.smoothShading,this.hasNonUniformScale?this.shearScale:void 0);this.subdivPointer=a,o!==void 0&&(this.originalGeometry?.dispose(),this.originalGeometry=o),i!==void 0&&(this.subdividedGeometry?.dispose(),this.subdividedGeometry=i??void 0),this.localGeometry=this.subdividedGeometry??this.originalGeometry,ys(this),gs(this),this.calcBoundingBox(),t&&(this.localGeometry.uuid=t)}updateState(e,t){if(super.updateState(e,t),e.flatShading!==void 0){let o=this.material;this.material=Array.isArray(o)?o.map(i=>i.getFlavor(!1,i.side,i.wireframe)):o.getFlavor(!1,o.side,o.wireframe),this.smoothShading=!e.flatShading,this.createGeometryDelayed(t)}}updateMesh(e=!1){Nt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0),this.subdividedGeometry&&Nt.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0)}updateTopology(){this.originalGeometry.dispose(),this.originalGeometry=Nt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=Nt.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1)),this.localGeometry=this.subdividedGeometry??this.originalGeometry}raycast(e,t){let o=this.localGeometry;this.localGeometry=this.originalGeometryNew,Gt.prototype.raycast.call(this,e,t),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 on.Sphere,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let t=e.attributes.position,o=e.boundingSphere.center;Io.setFromBufferAttribute(t),Io.getCenter(o),e.boundingSphere.radius=o.distanceTo(Io.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),Io.getSize(Bl),this.hasNonUniformScale&&Bl.divide(this.scale);let i={width:Bl.x,height:Bl.y,depth:Bl.z};return this.geometry.userData.parameters=i,i}updateBoundingSphere(e){let t=this.originalGeometry;Io.min.set(e[0],e[2],e[4]),Io.max.set(e[1],e[3],e[5]),this.hasNonUniformScale&&(Io.min.applyMatrix4(this.shearScaleInv),Io.max.applyMatrix4(this.shearScaleInv)),t.boundingSphere===null&&(t.boundingSphere=new on.Sphere);let o=t.boundingSphere.center;Io.getCenter(o),t.boundingSphere.radius=o.distanceTo(Io.max)}freeSubdivPointer(){this.subdivPointer&&(Nt.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0),this.localGeometry=void 0,this.originalGeometry?.dispose(),this.subdividedGeometry?.dispose()}dispose(){super.dispose(),this.freeSubdivPointer()}updateByPatchedOpGeometry(e,t,o){super.updateByPatchedOpGeometry(e,t,o),this.localGeometry&&this.createGeometryByControls(t)}};var No=require("three"),yb=-1,KM=1,gb={x:[1,0,0],"-x":[-1,0,0],y:[0,1,0],"-y":[0,-1,0],z:[0,0,1],"-z":[0,0,-1]},xb={polygon_center:0,edge:1,vertex:2},Ll=(n,r)=>(e,t)=>!r||e===0||n===0?0:n*t/100,Ie=(n,r)=>{let e=Math.abs(r),t=e*-1;return(n-yb)*(e-t)/(KM-yb)+t};function bb(n){let r=[],e={};for(var t=0,o=n.length;t<o;t++){var i=JSON.stringify(n[t].pos.map(a=>Math.round(a*1e4)/1e4));e[i]||(r.push(n[t]),e[i]=!0)}return r}var QM=new No.Vector3,Ju=new No.Vector3,ZM=new No.Vector3,JM=new No.Vector3;function xs(n,r){let e=ZM.fromArray(n),t=JM.fromArray(r);Ju.copy(t).sub(e);let o=Ju.length();return Ju.normalize().multiplyScalar(o*.5),QM.copy(e).add(Ju).toArray()}var Fr=new No.Triangle,ed=new No.Vector3,td=new No.Vector3,Oi=new No.Vector3;function vb(n){let r=[];for(let e=0;e<=n.index.count;e++)if(ed.fromArray(n.index.array,e*3),Fr.setFromAttributeAndIndices(n.attributes.position,ed.x,ed.y,ed.z),Fr.getNormal(td),Fr.getMidpoint(Oi),!(isNaN(Oi.x)||isNaN(Oi.y)||isNaN(Oi.z))){let{a:t,b:o,c:i}=Fr,a=t.toArray(),s=o.toArray(),l=i.toArray(),c=t.distanceTo(o),u=o.distanceTo(i),p=i.distanceTo(t),d=xs(a,s),h=xs(s,l),f=xs(l,a),m=[c,u,p],y=Math.max(...m),g=m.filter(P=>Math.round(P)===Math.round(y)).length>1,v=[],O=Fr.getMidpoint(Oi).toArray();y===c&&!g&&(v=[h,f,f],O=d),y===u&&!g&&(v=[d,f,f],O=h),y===p&&!g&&(v=[d,h,h],O=f),g&&(v=[d,h,f]),r.push({vertices:[a,s,l],faceCenters:v,midpoint:O,norm:Fr.getNormal(td).toArray()})}return r}function Sb(n){let r=[],{position:e}=n.attributes;for(let t=0;t<e.count;t++){Fr.setFromAttributeAndIndices(e,t*3,t*3+1,t*3+2),Fr.getNormal(td),Fr.getMidpoint(Oi);let o=Fr.a.toArray(),i=Fr.b.toArray(),a=Fr.c.toArray();r.push({vertices:[o,i,a],faceCenters:[xs(o,i),xs(i,a),xs(a,o)],midpoint:Oi.toArray(),norm:td.toArray()})}return r}var eI=4,tI=.5,qf=n=>.5*(1-Math.cos(n*Math.PI)),$f=class{constructor(){this.perlin=new Array(4095+1)}noise(r,e=0,t=0){if(this.perlin==null){this.perlin=new Array(4095+1);for(let g=0;g<4095+1;g++)this.perlin[g]=Math.random()}r<0&&(r=-r),e<0&&(e=-e),t<0&&(t=-t);let o=Math.floor(r),i=Math.floor(e),a=Math.floor(t),s=r-o,l=e-i,c=t-a,u,p,d=0,h=.5,f,m,y;for(let g=0;g<eI;g++){let v=o+(i<<4)+(a<<8);u=qf(s),p=qf(l),f=this.perlin[v&4095],f+=u*(this.perlin[v+1&4095]-f),m=this.perlin[v+16&4095],m+=u*(this.perlin[v+16+1&4095]-m),f+=p*(m-f),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),f+=qf(c)*(m-f),d+=f*h,h*=tI,o<<=1,s*=2,i<<=1,l*=2,a<<=1,c*=2,s>=1&&(o++,s--),l>=1&&(i++,l--),c>=1&&(a++,c--)}return d}noiseSeed(r){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(r),this.perlin=new Array(4095+1);for(let t=0;t<4095+1;t++)this.perlin[t]=e.rand()}},wb=$f;var vs=require("three");var Pb=new vs.Vector3,Ob=new vs.Matrix4,Cb=new vs.Ray;function Tb(n){let r=!1;return n.scene.objects.traverse((e,t)=>{t.type==="Mesh"&&t.geometry.type==="TextGeometry"&&(r=!0)}),r}var bs=class extends St{constructor(e,t,o){super(e,t,o);this.data=t}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,t){let{matrixWorld:o}=this;if(!(isNaN(e.ray.origin.x)||this.scale.x===0||this.scale.y===0||this.scale.z===0)&&(Ob.copy(o).invert(),Cb.copy(e.ray).applyMatrix4(Ob),Cb.intersectBox(this.singleBBox,Pb))){let i=Pb.applyMatrix4(o),a=e.ray.origin.distanceTo(i);t.push({distance:a,point:i.clone(),object:this})}}};var pr=1e-4,Do,Ib,Nb,Db,Ab=new Ze.Vector3,Mb=new Ze.Vector3;_u.then(n=>{Do=n,Ib=[Do.get_face_center,Do.get_edge_midpoint,Do.get_vertex_position],Nb=[Do.get_face_normal,Do.get_edge_normal,Do.get_vertex_normal],Db=[Do.face_count,Do.edge_count,Do.vertex_count]});var rI=new Ze.Matrix4,oI=new Ze.Matrix4,Gn=new Ze.Vector3,rd=new Ze.Vector3,Rl=new Ze.Vector3,Yf=new Ze.Vector3,nI=new Ze.Vector3,iI=new Ze.Vector3;var nn=new wb,ws=class extends Oa(Ze.Object3D){constructor(e,t){super();this.parameters=t;this.objectForSample=void 0;this._pendingMediaLoad=!1;this.object=e}resetOnMove(){this.removeFromParent(),this.parent=null}expandClones(e){if(this.parent===null)this.updateState(this.parameters,e);else for(let t of this.children)t instanceof Xo&&t.expand()}invalidateTransform(e){this.matrixWorldNeedsUpdate=!0,this.traverse(t=>{t instanceof Xo&&t.object===e&&(t.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 t;if(e!==void 0?t=e:t=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"&&!this.parameters.toObject.object&&(t=0),this.parameters.type==="toObject"&&this.objectForSample){for(let i=0,a=this.children.length;i<a;++i)this.remove(this.children[0]);let o=this.children;if(o.length===t)return;if(o.length<t)for(let i=0,a=t-o.length;i<a;++i){let s=new Xo(this.object);s.expand(),this.add(s)}else for(let i=0,a=o.length-t;i<a;++i)this.remove(o[i])}else{if(this.children.length===t)return;if(this.children.length<t)for(let o=0,i=t-this.children.length;o<i;++o){let a=new Xo(this.object);a.expand(),this.add(a)}else for(let o=0,i=this.children.length-t;o<i;++o)this.remove(this.children[0])}}_updateRadial(e){let t=e.radial,o=t.start*Ze.MathUtils.DEG2RAD,i=t.end*Ze.MathUtils.DEG2RAD,a=o-i,s=new Ze.Euler(t.rotation[0],t.rotation[1],t.rotation[2]),l;switch(t.axis){case"z":l=new Ze.Vector3(0,0,1);break;case"y":l=new Ze.Vector3(0,1,0);break;default:case"x":l=new Ze.Vector3(1,0,0);break}let c=e.randomnessObject??vo.defaultData([1,1,1]).randomnessObject,u=c.noiseType==="perlin";nn.noiseSeed(c.seed);let p=mu((0,Ss.default)(c.seed)),d=Ll(c.strength,this.parameters.randomness);for(let[h,f]of this.children.entries()){let m=h*(c.freqScale/10)+c.movement,y=u?nn.noise(m):p(m,m),g=h+1;f.scale.x=t.scale[0]+d(g,Ie(y,c.scale[0]))||pr,f.scale.y=t.scale[1]+d(g,Ie(y,c.scale[1]))||pr,f.scale.z=t.scale[2]+d(g,Ie(y,c.scale[2]))||pr,f.position.setScalar(0);let v=a/e.count*h-o;switch(t.axis){case"x":f.rotation.set(0,v,0);break;case"y":f.rotation.set(0,0,v);break;case"z":f.rotation.set(v,0,0);break}f.translateOnAxis(l,t.radius),f.position.x+=t.position[0]+d(g,Ie(y,c.position[0])),f.position.y+=t.position[1]+d(g,Ie(y,c.position[1])),f.position.z+=t.position[2]+d(g,Ie(y,c.position[2]));let O=d(g,Ie(y,c.rotation[0])),P=d(g,Ie(y,c.rotation[1])),S=d(g,Ie(y,c.rotation[2]));t.alignment===!0?(f.rotation.x+=s.x+O,f.rotation.y+=s.y+P,f.rotation.z+=s.z+S):f.rotation.set(s.x+O,s.y+P,s.z+S)}}_updateLinear(e){if(e.type!=="linear")throw new Error;let t=e.linear,o=new Ze.Euler(t.rotation[0],t.rotation[1],t.rotation[2]),i=e.randomnessObject??vo.defaultData([1,1,1]).randomnessObject,a=i.noiseType==="perlin";nn.noiseSeed(i.seed);let s=mu((0,Ss.default)(i.seed)),l=Ll(i.strength,this.parameters.randomness);for(let[c,u]of this.children.entries()){let p=c*(i.freqScale/10)+i.movement,d=a?nn.noise(p):s(p,p),h=c+1,f=l(h,Ie(d,i.rotation[0])),m=l(h,Ie(d,i.rotation[1])),y=l(h,Ie(d,i.rotation[2]));u.scale.x=1+(t.scale[0]-1)*c+l(h,Ie(d,i.scale[0]))||pr,u.scale.y=1+(t.scale[1]-1)*c+l(h,Ie(d,i.scale[1]))||pr,u.scale.z=1+(t.scale[2]-1)*c+l(h,Ie(d,i.scale[2]))||pr,u.rotation.x=o.x*c+f,u.rotation.y=o.y*c+m,u.rotation.z=o.z*c+y,u.position.x=t.position[0]*c+l(h,Ie(d,i.position[0])),u.position.y=t.position[1]*c+l(h,Ie(d,i.position[1])),u.position.z=t.position[2]*c+l(h,Ie(d,i.position[2]))}}_updateGrid(e){let t=0,o=e.grid,i=e.randomnessObject??vo.defaultData([1,1,1]).randomnessObject,a=Ll(i.strength,this.parameters.randomness),s=i.noiseType==="perlin";nn.noiseSeed(i.seed);let l=cx((0,Ss.default)(i.seed));if(o.useCenter===!0){let c={x:o.count[0]%2===0?2:1,y:o.count[1]%2===0?2:1,z:o.count[2]%2===0?2:1},u=new Ze.Vector3(o.size[0]*(o.count[0]-c.x)*.5,o.size[1]*(o.count[1]-c.y)*.5,o.size[2]*(o.count[2]-c.z)*.5);for(let p=0;p<o.count[0];p++)for(let d=0;d<o.count[1];d++)for(let h=0;h<o.count[2];h++){let f=[(p+1)*(i.freqScale/10)+i.movement,(d+1)*(i.freqScale/10)+i.movement,(h+1)*(i.freqScale/10)+i.movement],m=s?nn.noise(...f):l(...f),y=this.children[t++];y.scale.x=1+a(t,Ie(m,i.scale[0]))||pr,y.scale.y=1+a(t,Ie(m,i.scale[1]))||pr,y.scale.z=1+a(t,Ie(m,i.scale[2]))||pr;let g=a(t,Ie(m,i.rotation[0])),v=a(t,Ie(m,i.rotation[1])),O=a(t,Ie(m,i.rotation[2]));y.rotation.set(g,v,O),y.position.x=o.size[0]*p-u.x+a(t,Ie(m,i.position[0])),y.position.y=o.size[1]*d-u.y+a(t,Ie(m,i.position[1])),y.position.z=o.size[2]*h-u.z+a(t,Ie(m,i.position[2]))}}else for(let c=0;c<o.count[0];c++)for(let u=0;u<o.count[1];u++)for(let p=0;p<o.count[2];p++){let d=[(c+1)*(i.freqScale/10)+i.movement,(u+1)*(i.freqScale/10)+i.movement,(p+1)*(i.freqScale/10)+i.movement],h=s?nn.noise(...d):l(...d),f=this.children[t++];f.scale.x=1+a(t,Ie(h,i.scale[0]))||pr,f.scale.y=1+a(t,Ie(h,i.scale[1]))||pr,f.scale.z=1+a(t,Ie(h,i.scale[2]))||pr;let m=a(t,Ie(h,i.rotation[0])),y=a(t,Ie(h,i.rotation[1])),g=a(t,Ie(h,i.rotation[2]));f.rotation.set(m,y,g),f.position.x=o.size[0]*c+a(t,Ie(h,i.position[0])),f.position.y=-o.size[1]*u+a(t,Ie(h,i.position[1])),f.position.z=-o.size[2]*p+a(t,Ie(h,i.position[2]))}}_updateToObject(e){if(e.type!=="toObject")throw new Error;let{toObject:t}=e,o=new Ze.Euler(t.rotation[0],t.rotation[1],t.rotation[2]),i=e.randomnessObject??vo.defaultData([1,1,1]).randomnessObject,a=i.noiseType==="perlin";nn.noiseSeed(i.seed);let s=mu((0,Ss.default)(i.seed)),l=Ll(i.strength,this.parameters.randomness);if(!t.object){for(let[,g]of this.children.entries())g.position.set(0,0,0),g.scale.setScalar(1),g.rotation.set(0,0,0);this.objectForSample=void 0;return}if(!this.objectForSample)return;if(this.objectForSample instanceof bs)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 c=this.getSubdivData(),u=[],p=g=>{let v=g.length,O=g.map(T=>T[0]).reduce((T,I)=>T+I,0),P=g.map(T=>T[1]).reduce((T,I)=>T+I,0),S=g.map(T=>T[2]).reduce((T,I)=>T+I,0);return[O/v,P/v,S/v]},d=g=>Math.round(g*1e6)/1e6;c.forEach(g=>{let v=c.filter(O=>d(g.pos[0])===d(O.pos[0])&&d(g.pos[1])===d(O.pos[1])&&d(g.pos[2])===d(O.pos[2]));v.length>1?u.push({pos:g.pos,norm:p(v.map(O=>O.norm))}):u.push(g)});let h=bb(u);if(h.length>0){let g=Math.round(h.length*t.count/100);this._updateCount(g)}else{let g=this.objectForSample.geometry.getAttribute("position");if(!g||isNaN(g.count)||g.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 f=new yu(this.objectForSample).build(),m=gb[t.axis],y=this.children;f.setRandomGenerator((0,Ss.default)(this.object.uuid+t.seed));for(let[g,v]of y.entries()){let O=g*(i.freqScale/10)+i.movement,P=a?nn.noise(O):s(O,O),S=g+1,T=l(S,Ie(P,i.rotation[0])),I=l(S,Ie(P,i.rotation[1])),x=l(S,Ie(P,i.rotation[2]));t.spreadType==="random"?f.sample(Rl,Yf):(h.length&&(Rl.fromArray(h[g].pos),Yf.fromArray(h[g].norm)),this.objectForSample instanceof Pi&&Rl.applyMatrix4(rI.copy(this.objectForSample.matrixWorld).invert())),Rl.applyMatrix4(this.object.hiddenMatrix.clone().invert()),v.position.copy(Rl),Gn.fromArray(m);let E=t.align==="normal"?Yf:this.object.getWorldDirection(iI),N=rd.fromArray(t.position);rd.x+=l(S,Ie(P,i.position[0])),rd.y+=l(S,Ie(P,i.position[1])),rd.z+=l(S,Ie(P,i.position[2]));let M=Math.acos(E.dot(Gn)),D=nI.crossVectors(Gn,E).normalize(),_=oI.makeRotationAxis(D,M),B=E.clone().cross(this.object.up).normalize(),z=B.clone().cross(E).normalize(),U=new Ze.Matrix4().makeBasis(B,E,z),R=new Ze.Vector3(Gn.y,Gn.z,Gn.x).normalize(),W=R.clone().cross(Gn).normalize(),j=new Ze.Matrix4().makeBasis(R,Gn,W).invert(),F=new Ze.Matrix4().multiplyMatrices(U,j);v.rotation.setFromRotationMatrix(F),N.applyMatrix4(_),v.position.add(N),v.rotation.x=v.rotation.x+o.x+T,v.rotation.y=v.rotation.y+o.y+I,v.rotation.z=v.rotation.z+o.z+x,v.scale.setScalar(1),v.scale.x=v.scale.x+t.scale[0]+l(S,Ie(P,i.scale[0]))||pr,v.scale.y=v.scale.y+t.scale[1]+l(S,Ie(P,i.scale[1]))||pr,v.scale.z=v.scale.z+t.scale[2]+l(S,Ie(P,i.scale[2]))||pr,v.scale.multiply(this.object.scale),v.hiddenMatrix=this.object.hiddenMatrix}}getSubdivData(){if(!this.objectForSample)return[];let e=this.parameters.toObject.spreadType;if(e==="random")return[];if(this.objectForSample instanceof Pi){let t=this.objectForSample,o=xb[e],i=Db[o],a=Ib[o],s=Nb[o],l=[],c=i(t.subdivPointerNew);for(let u=0;u<=c-1;u++){let p=a(t.subdivPointerNew,u),d=s(t.subdivPointerNew,u);Ab.fromArray(p).applyMatrix4(t.matrixWorld),Mb.fromArray(d),l.push({pos:Ab.toArray(),norm:Mb.toArray()})}return l}else return(this.objectForSample.geometry.index?vb(this.objectForSample.geometry):Sb(this.objectForSample.geometry)).map((o,i)=>e==="polygon_center"?{pos:o.midpoint,norm:o.norm}:e==="vertex"?[{pos:o.vertices[0],norm:o.norm},{pos:o.vertices[1],norm:o.norm},{pos:o.vertices[2],norm:o.norm}]:e==="edge"?[{pos:o.faceCenters[0],norm:o.norm},{pos:o.faceCenters[1],norm:o.norm},{pos:o.faceCenters[2],norm:o.norm}]:[]).flat()}updateState(e,t){if(this.parameters=jo(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=t.find(this.parameters.toObject.object);o instanceof Gt?this.objectForSample=o:this.objectForSample=void 0,this.matrix=new Ze.Matrix4,this.hiddenMatrix=new Ze.Matrix4,this.matrixWorldNeedsUpdate=!0,this.matrixAutoUpdate=!1,o&&o.add(this)}this.update()}get pendingMediaLoad(){return this._pendingMediaLoad}};var Yr=require("three");var ht=require("three");var tr=require("three");var Eb=require("three"),Eo=n=>{var r;return r=class extends n{},r.geometryHelper=new Eb.BoxGeometry(30,30,30),r};var nr=require("three"),od=new nr.Ray,Xf=new nr.Sphere,_b=new nr.Matrix4,_o=(n,r,e,t,o=!1)=>{let i=r,a=n.matrixWorld;if(i.boundingSphere===null&&i.computeBoundingSphere(),Xf.copy(i.boundingSphere),Xf.applyMatrix4(a),e.ray.intersectsSphere(Xf)===!1||(_b.copy(a).invert(),od.copy(e.ray).applyMatrix4(_b),i.boundingBox!==null&&od.intersectsBox(i.boundingBox)===!1))return;let s,l,c,u,p=i.index,d=i.attributes.position,h=i.drawRange,f,m;if(o===!1){let g=Math.max(0,h.start),v=Math.min(p.count,h.start+h.count);for(f=g,m=v;f<m;f+=3)if(l=p.getX(f),c=p.getX(f+1),u=p.getX(f+2),s=y(n,e,od,d,l,c,u),s){s.faceIndex=Math.floor(f/3),t.push(s);return}}else{let v=i.attributes.position,O=new nr.Vector3,P=new nr.Vector3,S=new nr.Vector3,T=new nr.Vector3,I=2,E=1/((n.scale.x+n.scale.y+n.scale.z)/3),N=E*E,M=Math.max(0,h.start),D=Math.min(v.count,h.start+h.count);for(let _=M,B=D-1;_<B;_+=I){if(O.fromBufferAttribute(v,_),P.fromBufferAttribute(v,_+1),od.distanceSqToSegment(O,P,T,S)>N)continue;T.applyMatrix4(n.matrixWorld);let U=e.ray.origin.distanceTo(T);U<e.near||U>e.far||t.push({distance:U,point:S.clone().applyMatrix4(n.matrixWorld),object:n})}}function y(g,v,O,P,S,T,I){let x=new nr.Vector3,E=new nr.Vector3,N=new nr.Vector3,M=new nr.Vector3,D=new nr.Vector3;if(x.fromBufferAttribute(P,S),E.fromBufferAttribute(P,T),N.fromBufferAttribute(P,I),O.intersectTriangle(x,E,N,!1,M)===null)return null;D.copy(M),D.applyMatrix4(g.matrixWorld);let B=v.ray.origin.distanceTo(D);return B<v.near||B>v.far?null:{faceIndex:1,distance:B,point:D.clone(),object:g}}};var nd=new tr.Vector3,Ur=new tr.Camera,Kf=class extends tr.LineSegments{constructor(e){let t=new tr.BufferGeometry,o=new tr.LineBasicMaterial({color:16777215,vertexColors:!0,toneMapped:!1}),i=[],a=[],s={},l=new tr.Color(15711266),c=new tr.Color(15711266),u=new tr.Color(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(h,f,m){d(h,m),d(f,m)}function d(h,f){i.push(0,0,0),a.push(f.r,f.g,f.b),s[h]===void 0&&(s[h]=[]),s[h].push(i.length/3-1)}t.setAttribute("position",new tr.Float32BufferAttribute(i,3)),t.setAttribute("color",new tr.Float32BufferAttribute(a,3));super(t,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,t=this.pointMap,o=!0;Ur.projectionMatrixInverse.elements=[.5112609807824982,-0,-0,-0,-0,.41421356237309503,-0,-0,-0,-0,-0,-.099999,-0,-0,-1.0000000000000002,.100001];let i=1,a=1,s=o?.8:1e-4;po("n1",t,e,Ur,-i,-a,s),po("n2",t,e,Ur,i,-a,s),po("n3",t,e,Ur,-i,a,s),po("n4",t,e,Ur,i,a,s);let l=s;po("f1",t,e,Ur,-i,-a,l),po("f2",t,e,Ur,i,-a,l),po("f3",t,e,Ur,-i,a,l),po("f4",t,e,Ur,i,a,l);let c=l,u=.5;po("u1",t,e,Ur,i*.7*u,a*1.1,c),po("u2",t,e,Ur,-i*.7*u,a*1.1,c),po("u3",t,e,Ur,0,a*(1.1+.9*u),c),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function po(n,r,e,t,o,i,a){nd.set(o,i,a).unproject(t);let s=r[n];if(s!==void 0){let l=e.getAttribute("position");for(let c=0,u=s.length;c<u;c++)l.setXYZ(s[c],nd.x,nd.y,nd.z)}}var id=class extends Eo(Kf){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,t){_o(this.object,this.geometry,e,t,!0)}};var Vl=require("three");var ad;(r=>r.is=e=>"objectHelper"in e)(ad||(ad={}));var kr=(n,r)=>class extends Aa(n){constructor(){super(...arguments);this.objectHelper=new r(this);this.gizmos={}}get geometryHelper(){return r.geometryHelper}raycast(o,i){this.objectHelper.raycast(o,i)}showGizmos(){for(let o in this.gizmos){let i=this.gizmos[o];i instanceof Vl.Box3Helper&&(i.visible=!0)}}updateEntityBoxSize(o,i){this.objectHelper.visible&&this.geometryHelper instanceof Vl.BoxGeometry?(o.setScalar(0),i.set(this.geometryHelper.parameters.width,this.geometryHelper.parameters.height,this.geometryHelper.parameters.height).multiplyScalar(.5)):super.updateEntityBoxSize(o,i)}hideGizmos(){for(let o in this.gizmos){let i=this.gizmos[o];i instanceof Vl.Box3Helper&&(i.visible=!1)}}};var sd=790,Ps=new ht.Vector3,Qf=new ht.Vector3,Zf=new ht.Quaternion,Jf=new ht.Vector3,zl=new ht.Vector3,eh=new ht.Vector3,an=class extends kr(ht.Camera,id){constructor(e="",t={...si.defaultData,name:""}){super();this._cameraType="OrthographicCamera";this.targetOffset=Pn.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.wasMovedByUser=!1;this.wasMovedBySwitchCameraAction=!1;this.super_Entity(e,t),this.previousProjectionMatrix=new ht.Matrix4,this.matrixAutoUpdate=!0,this.width=window.innerWidth,this.height=window.innerHeight;let o=this.width,i=this.height;this.orthoCamera=new ht.OrthographicCamera(o*-.5,o*.5,i*.5,i*-.5,-5e4,1e4),this.perspCamera=new ht.PerspectiveCamera(45,o/i,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,t){e==="PerspectiveCamera"?this.perspCamera.near=t:this.orthoCamera.near=t}setZoom(e,t){t>=0&&(e==="PerspectiveCamera"?this.perspCamera.zoom=t:this.orthoCamera.zoom=t)}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,t,o){typeof e=="number"&&(e=new ht.Vector3(e,t,o)),super.lookAt(e),this.getWorldPosition(Ps),this.targetOffset=Ps.distanceTo(e)}getTarget(e=new ht.Vector3){return this.getWorldDirection(Qf),this.getWorldPosition(Ps),Qf.multiplyScalar(this.targetOffset),e.copy(Ps).add(Qf),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(Ps),Ps.distanceTo(e)}updateUp(){this.getWorldQuaternion(Zf),Jf.set(0,0,1).applyQuaternion(Zf),zl.copy(ht.Object3D.DEFAULT_UP),this.isUpVectorFlipped&&zl.negate(),zl.applyQuaternion(Zf),eh.copy(ht.Object3D.DEFAULT_UP).projectOnPlane(Jf),this.angleOffsetFromUp=eh.angleTo(zl),this.angleOffsetFromUp*=eh.cross(zl).dot(Jf)>=0?1:-1}updateTransformState(e,t){let o=super.updateTransformState(e,t);return e.isUpVectorFlipped!==void 0&&(this.isUpVectorFlipped=e.isUpVectorFlipped),this.updateUp(),o}getViewFrontToObject(e){let t=e.getWorldPosition(new ht.Vector3),i=e.getWorldDirection(new ht.Vector3).multiplyScalar(this.targetOffset);return{position:t.clone().add(i),target:t}}getViewToTarget(e){let o=this.getWorldDirection(new ht.Vector3).multiplyScalar(this.targetOffset);return{position:e.clone().sub(o),target:e}}getViewToObject(e){let t=new ht.Vector3,o=e.getWorldPosition(t);return this.getViewToTarget(t)}setViewplaneSize(e,t,o=!1){if(this.aspect=e/t,o){let i=e>t?this.aspect:1,a=e>t?1:this.aspect;this.left=-sd*.5*i,this.right=sd*.5*i,this.top=sd*.5*(1/a),this.bottom=-sd*.5*(1/a)}else this.left=-e*.5,this.right=e*.5,this.top=t*.5,this.bottom=-t*.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,t,o,i,a,s){this._cameraType==="PerspectiveCamera"?this.perspCamera.setViewOffset(e,t,o,i,a,s):this.orthoCamera.setViewOffset(e,t,o,i,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,t){super.updateWorldMatrix(e,t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}copy(e,t){return super.copy(e,t),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 t={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 ta(t,e)}updateCameraSubtype(e,t){let o=e==="perspective"?"PerspectiveCamera":"OrthographicCamera";t.zoom!==void 0&&this.setZoom(o,t.zoom),t.near!==void 0&&this.setNear(o,t.near),t.fov!==void 0&&o==="PerspectiveCamera"&&(this.fov=t.fov)}updateState(e,t){this.updateCameraState(e,t)}updateCameraState(e,t){this.updateState_Entity(e,t),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,t,o){super.updateByPatchedOp(e,t,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}}};var lI=require("three");var jn=require("three");var Os=new jn.Matrix4,sI=new jn.Matrix4;var Pr=class extends wr{constructor(e,t,o){super(e,t);this.data=t;this.meshSetAddresses=[];this.needsTransformForDownstream=!1;this.geometry=new jn.BufferGeometry;this.onAfterRender=(e,t,o,i,a,s)=>{super.onAfterRender(e,t,o,i,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,t,o){super.updateByPatchedOp(e,t,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,t=!0){if(this.booleanMeshSetAddress!==-1&&!e)return;for(let i=0;i<this.children.length;i++){let a=this.children[i];a instanceof Pr&&a.dataPatched.visible===!0&&a.recomputeBoolean(e===!0,t)}this.meshSetAddresses=[];for(let i=0;i<this.children.length;i++){let a=this.children[i];if(a instanceof Gt&&a.dataPatched.visible===!0&&a.geometry.attributes.position?.count>0&&a.geometry.drawRange.count>0&&a.booleanMeshSetAddress!==0){Os.multiplyMatrices(a.hiddenMatrix,a.matrix);try{if(a.booleanMeshSetAddress===-1){if((a.geometry.index??a.geometry.getAttribute("position")).count/3<15e5&&(a.booleanMeshSetAddress=Gr.getMeshSet(a.geometry,e===!0,t)),a.booleanMeshSetAddress===-1)return;Gr.transformMeshSet(a.booleanMeshSetAddress,Os),a.booleanMatrixInvOld.copy(Os).invert(),a.booleanWasTransformed=!1}else a instanceof Pr&&a.needsTransformForDownstream===!0?(Gr.transformMeshSet(a.booleanMeshSetAddress,Os),a.needsTransformForDownstream=!1):a.booleanWasTransformed===!0&&(Gr.transformMeshSet(a.booleanMeshSetAddress,sI.multiplyMatrices(Os,a.booleanMatrixInvOld)),a.booleanMatrixInvOld.copy(Os).invert(),a.booleanWasTransformed=!1)}catch(s){console.error(s),a.booleanMeshSetAddress=0,a.geometry.userData.booleanOperationDidFail=!0;continue}Gr.hasOpenEdges(a.booleanMeshSetAddress)===!1||i===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 jn.Float32BufferAttribute([],0)),this.geometry.setDrawRange(0,0);return}if(e===!0)return Gr.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let o=this.geometry;o.dispose(),this.geometry=new jn.BufferGeometry,this.geometry.userData=o.userData,this.geometry.boundingSphere=o.boundingSphere;try{this.booleanMeshSetAddress=Gr.calcBoolean(this.meshSetAddresses,this.booleanOp,this.geometry,this.phongAngle)}catch(i){this.booleanMeshSetAddress=0,this.geometry.userData.booleanOperationDidFail=!0,console.error(i)}this.booleanMatrixInvOld.copy(this.matrix).invert(),this.needsTransformForDownstream=!0,ys(this),gs(this)}dispose(){super.dispose(),this.geometry.dispose()}};var Lb=require("three");var Bb;(r=>{function n(e){return je.is(e)&&e instanceof Lb.Light}r.is=n})(Bb||(Bb={}));var Cs=(n,r)=>class extends kr(n,r){updateState_Light(t,o){this.updateState_Entity(t,o),t.color!==void 0&&(this.color=o.shared.color(t.color)),t.intensity!==void 0&&(this.intensity=t.intensity),t.depth!==void 0&&(this.shadow.camera.far=t.depth,this.shadow.needsUpdate=!0),t.shadows!==void 0&&(this.castShadow=t.shadows)}};var Fn=n=>n instanceof Gt,Gl=n=>n!==null&&n instanceof Pr;var jl=n=>ad.is(n);var Vb=require("three");var Rb=require("three");var Hr=class extends Eo(Rb.AxesHelper){constructor(e,t=15){super(t);this.object=e;this.object.updateMatrixWorld(),this.name=`EmptyObjectHelper: ${e.uuid}`,this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.object.isBone&&(this.visible=!1)}raycast(e,t){_o(this.object,Hr.geometryHelper,e,t)}update(){}};var Un=class extends kr(Vb.Group,Hr){constructor(r,e){super(),this.super_Entity(r,e),this.objectHelper.update()}updateState(r,e){this.updateState_Entity(r,e),"buffer"in r&&Object.keys(r).length===1&&e.scene.reloadSplats()}};var zb=require("three");var ld=class extends kr(zb.Group,Hr){constructor(e,t,o){super();this.super_Entity(e,t),this.context=o,this.objectHelper.update()}updateState(e,t){this.updateState_Entity(e,t)}};var _s=require("three");var Ts=require("three"),cI=n=>`
2235
2235
 
2236
2236
  // PCSS implementation based on:
2237
2237
  // https://www.gamedev.net/articles/programming/graphics/contact-hardening-soft-shadows-made-fast-r4906/
@@ -2605,7 +2605,7 @@ float vogelShadow(int index, sampler2D shadowMap, vec2 uv, float texelSize, floa
2605
2605
  }
2606
2606
 
2607
2607
  #endif
2608
- `,uI=Ts.ShaderChunk.lights_fragment_begin,dI=Ts.ShaderChunk.shadowmask_pars_fragment,Gb=null,pI=n=>{switch(n){case"low":return 8;case"medium":return 16;case"high":return 32;default:return 16}},jb=(n="medium")=>{if(Gb===n)return!1;Gb=n;let r=pI(n);Ts.ShaderChunk.shadowmap_pars_fragment=cI(r);let e=uI.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 ]"),Ts.ShaderChunk.lights_fragment_begin=e;let t=dI.slice();return t=t.replaceAll("getShadow(","getShadow( UNROLLED_LOOP_INDEX, "),Ts.ShaderChunk.shadowmask_pars_fragment=t,!0};var Ul=require("three");var Fb=require("three");var As=class extends Eo(Fb.DirectionalLightHelper){constructor(e,t=15,o=10066329){super(e,t,o);this.object=e;this.added=!1;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,t){_o(this.object,As.geometryHelper,e,t)}};var Ub=require("three");var Ms=class extends Eo(Ub.PointLightHelper){constructor(e,t=15,o=6710886){super(e,t,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,t){_o(this.object,Ms.geometryHelper,e,t)}};var ud=require("three");var cd=class extends Eo(ud.SpotLightHelper){constructor(e,t=6710886){super(e,t);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,t){_o(this.object,cd.geometryHelper,e,t)}update(){if(this.object!==void 0){let e=cd._vector,t=this.object.distance?this.object.distance:1e3,o=t*Math.tan(this.object.angle);this.cone.scale.set(o,o,t),e.setFromMatrixPosition(this.object.target.matrixWorld),this.cone.lookAt(e);let i=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(i);else this.cone.material.color.set(i)}}},Fl=cd;Fl._vector=new ud.Vector3;function fI(n,r){n.shadow.camera.right=r/2,n.shadow.camera.left=-r/2,n.shadow.camera.top=r/2,n.shadow.camera.bottom=-r/2,n.shadow.needsUpdate=!0}var Is=class extends Cs(Ul.DirectionalLight,As){constructor(r,e,t){super(),this.super_Entity(r,e),this.castShadow=!0,this.shadow.mapSize.width=2048,this.shadow.mapSize.height=2048,this.shadow.normalBias=1,this.layers.enable(3);let i=this.shadow.camera;i.top=1250,i.bottom=-1250,i.right=1250,i.left=-1250,i.near=-1e4,i.far=2500;let a=new Ul.CameraHelper(this.shadow.camera);a.visible=!1,this.gizmos.shadowmap=a}update(){this.shadow.camera.updateProjectionMatrix();for(let r in this.gizmos){let e=this.gizmos[r];e instanceof Ul.CameraHelper&&e.update()}}updateMatrixWorld(r){super.updateMatrixWorld(r),this.objectHelper&&this.objectHelper.update()}updateState(r,e){this.updateState_Light(r,e);let t=r.depth!==void 0&&r.depth!==this.shadow.camera.far||r.size!==void 0&&r.size/2!==this.shadow.camera.right;r.size!==void 0&&fI(this,r.size),r.shadowRadius!==void 0&&(this.shadow.radius=r.shadowRadius),r.shadowResolution!==void 0&&(this.shadow.mapSize.set(r.shadowResolution,r.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),r.penumbraSize!==void 0&&e.scene.markPenumbraSizeDirty(),t&&this.update()}};var mv=require("three");var Wr=require("three");var kb=new Wr.Vector3,Hb=new Wr.Vector3,Wb=new Wr.Quaternion,Ns=class extends Cs(Wr.SpotLight,Fl){constructor(r,e,t){super(),this.super_Entity(r,e),this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1,this.layers.enable(3);let i=this.shadow.camera;i.fov=Wr.MathUtils.RAD2DEG*2*this.angle,i.aspect=1,i.near=100,i.far=2500;let a=new Wr.CameraHelper(this.shadow.camera);a.visible=!1,this.gizmos.shadowmap=a,this.update()}update(){this.shadow.camera.updateProjectionMatrix();for(let r in this.gizmos){let e=this.gizmos[r];e instanceof Wr.CameraHelper&&e.update()}}updateMatrixWorld(r){super.updateMatrixWorld(r),Hb.setFromMatrixPosition(this.matrixWorld),Wb.setFromRotationMatrix(this.matrixWorld),kb.copy(this.up).applyQuaternion(Wb).negate().multiplyScalar(this.distance),this.target.position.copy(Hb).add(kb),this.target.updateMatrixWorld(),this.objectHelper&&this.objectHelper.update()}updateState(r,e){this.updateState_Light(r,e),r.distance!==void 0&&(this.distance=r.distance),r.decay!==void 0&&(this.decay=r.decay),r.angle!==void 0&&(this.angle=r.angle),r.penumbra!==void 0&&(this.penumbra=r.penumbra),r.shadowRadius!==void 0&&(this.shadow.radius=r.shadowRadius),r.penumbraSize!==void 0&&e.scene.markPenumbraSizeDirty(),r.shadowResolution!==void 0&&(this.shadow.mapSize.set(r.shadowResolution,r.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null))}};function hI(n){let r=(n[0][0]+n[1][1])/2,e=(n[0][0]-n[1][1])/2,t=(n[1][0]+n[0][1])/2,o=(n[1][0]-n[0][1])/2,i=Math.sqrt(r*r+o*o),a=Math.sqrt(e*e+t*t),s=i+a,l=i-a,c=Math.atan2(t,e),u=Math.atan2(o,r),p=(u-c)/2,d=(u+c)/2,h=[[Math.cos(d),Math.sin(d)],[-Math.sin(d),Math.cos(d)]],f=[[s,0],[0,l]],m=[[Math.cos(p),Math.sin(p)],[-Math.sin(p),Math.cos(p)]];return h[0][0]*=-1,h[0][1]*=-1,m[0][0]*=-1,m[1][0]*=-1,[h,f,m]}function dd(n,r){return[[n[0][0]*r[0][0]+n[0][1]*r[1][0],n[0][0]*r[0][1]+n[0][1]*r[1][1]],[n[1][0]*r[0][0]+n[1][1]*r[1][0],n[1][0]*r[0][1]+n[1][1]*r[1][1]]]}function qb(n){return[[n[0][0],n[1][0]],[n[0][1],n[1][1]]]}function $b(n){let[r,e,t]=hI(n),o=dd(r,qb(t)),i=dd(dd(t,e),qb(t)),a=Math.atan2(o[1][0],o[0][0]),s=[i[0][0],i[1][1]],l=[i[0][1]/i[1][1],i[1][0]/i[0][0]];return{rotation:a,scale:s,shear:l}}function Yb({rotation:n,scale:r,shear:e}){let t=Math.cos(n),o=Math.sin(n),i=[[t,-o],[o,t]],a=[[r[0],e[0]*r[1]],[e[1]*r[0],r[1]]],s=dd(i,a);return[s[0][0],s[1][0],s[0][1],s[1][1]]}var He;(S=>{function n(){return[1,0,0,0,1,0,0,0,1]}S.identity=n;function r(T,I=S.identity()){for(let x=0,_=T.length;x<_;x++)I[x]=T[x];return I}S.copy=r;function e(T,I,x,_,D,A){return S.setAbcdef(S.identity(),T,I,x,_,D,A)}S.create=e;function t(T,I,x,_,D,A,N){return T[0]=I,T[1]=_,T[2]=A,T[3]=x,T[4]=D,T[5]=N,T}S.setAbcdef=t;function o(T,I){let[x,_,D,A,N,E]=a(T),[B,V,j,R,W,F]=a(I),k=B*x+V*D,H=B*_+V*A,$=j*x+R*D,J=j*_+R*A,Z=W*x+F*D+N,X=W*_+F*A+E;return S.create(k,H,$,J,Z,X)}S.append=o;function i(T,I){let[x,_,D,A,N,E]=a(T),[B,V,j,R,W,F]=a(I),k=x,H=_,$=D,J=A;(B!==1||V!==0||j!==0||R!==1)&&(k=x*B+_*j,H=x*V+_*R,$=D*B+A*j,J=D*V+A*R);let Z=N*B+E*j+W,X=N*V+E*R+F;return S.create(k,H,$,J,Z,X)}S.prepend=i;function a(T){return[T[0],T[3],T[1],T[4],T[2],T[5]]}S.getAbcdef=a;function s(T){let[I,x,_,D,A,N]=S.getAbcdef(T),E=I*D-x*_,B=D/E,V=-x/E,j=-_/E,R=I/E,W=(_*N-D*A)/E,F=-(I*N-x*A)/E;return S.create(B,V,j,R,W,F)}S.invert=s;function l([T,I],x){let[_,D,A,N,E,B]=S.getAbcdef(x);return[_*T+A*I+E,D*T+N*I+B]}S.apply=l;function c(T,I){let[x,_,D,A,N,E]=S.getAbcdef(I),B=1/(x*A+D*-_),[V,j]=T;return[A*B*V+-D*B*j+(E*D-N*A)*B,x*B*j+-_*B*V+(-E*x+N*_)*B]}S.applyInverse=c;function u(T,I,x=I){let[_,D,A,N,E,B]=S.getAbcdef(T);return S.setAbcdef(T,_*I,D*x,A*I,N*x,E*I,B*x),T}S.scale=u;function p(T,I){let x=Math.cos(I),_=Math.sin(I),[D,A,N,E,B,V]=S.getAbcdef(T);return S.setAbcdef(T,D*x-A*_,D*_+A*x,N*x-E*_,N*_+E*x,B*x-V*_,B*_+V*x),T}S.rotate=p;function d(T,I,x){let[_,D]=x,A=S.translate(T,-_,-D);return A=S.rotate(A,I),A=S.translate(A,_,D),A}S.rotateAround=d;function h(T,I,x){let[_,D,A,N,E,B]=S.getAbcdef(T);return S.setAbcdef(T,_,D,A,N,E+I,B+x),T}S.translate=h;function f(T,I,x){let[_,D,A,N]=S.getAbcdef(T);return S.setAbcdef(T,_,D,A,N,I,x),T}S.setTranslate=f;function m(T,I,x){let[_,D,A,N]=S.getAbcdef(T);return S.setAbcdef(T,_,D,A,N,I,x),T}S.setPosition=m;function y(T){let[I,x,_,D]=S.getAbcdef(T),A=Math.sqrt(I*I+x*x),N=Math.sqrt(_*_+D*D);return[A,N]}S.getScale=y;function g(T){let[,,,,I,x]=S.getAbcdef(T);return[I,x]}S.getPosition=g;function v(T,I){return S.decompose(T,I).rotation}S.getRotation=v;function O(T,I){let[x,_,D,A,N,E]=S.getAbcdef(T),{rotation:B,scale:V,shear:j}=$b([[x,D],[_,A]]);return{position:[N+(I[0]*x+I[1]*D)-I[0],E+(I[0]*_+I[1]*A)-I[1]],scale:V,rotation:B,shear:j,pivot:I}}S.decompose=O;function P(T,I,x,_,D=[0,0]){let[A,N]=T,[E,B]=_,[V,j,R,W]=Yb({rotation:x,scale:I,shear:D}),F=A-(E*V+B*R)+E,k=N-(E*j+B*W)+B;return S.create(V,j,R,W,F,k)}S.compose=P})(He||(He={}));var mI=Math.PI/180,nZ=180/Math.PI;function Xb(n,r,e,t,o,i){let a=n-e,s=r-t;return a*a/(o*o)+s*s/(i*i)<=1}function Kb(n){return n*mI}function rh(n){return{all:n=n||new Map,on:function(r,e){var t=n.get(r);t?t.push(e):n.set(r,[e])},off:function(r,e){var t=n.get(r);t&&(e?t.splice(t.indexOf(e)>>>0,1):n.set(r,[]))},emit:function(r,e){var t=n.get(r);t&&t.slice().map(function(o){o(e)}),(t=n.get("*"))&&t.slice().map(function(o){o(r,e)})}}}var sn=class{constructor(r,e,t){this.uuid=r;this.data=e;this.localMatrix=He.identity();this.worldMatrix=He.identity();this.ignoreCameraZoom=!1;this.visible=!0;this._singleBBox=new kn;this._recursiveBBox=new kn;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=rh();this.dpr=t.dpr??1,this.dataPatched=e}project(r,e){let t=this.worldMatrix;return e&&(t=He.append(e.worldMatrix,t)),He.applyInverse(r,t)}intersects(r,e,t,o=!1){return this.visible&&!this.data.raycastLock&&this.intersectsInLocalSpace(...this.project([r,e],t),o)}intersectsInLocalSpace(r,e,t=!1){let{min:o,max:i}=t?this.recursiveBBox:this.singleBBox;return r>=o[0]&&r<=i[0]&&e>=o[1]&&e<=i[1]}applyTransforms(r){r.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=He.compose(this.position,this.scale,Kb(this.rotation),Yo.getPivot(this.dataPatched),this.shear)}updateWorldMatrix(r,e,t){let o=this.parent;e&&o!==null&&o!==void 0&&o.updateWorldMatrix(r,!0,!1),r&&this.updateLocalMatrix(),this.parent?this.worldMatrix=He.append(this.parent.worldMatrix,this.localMatrix):this.worldMatrix=He.copy(this.localMatrix),this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0}get pivot(){return Yo.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(r=>{r.resetBBoxNeedsUpdateSelf()})}updateTransformState(r){let e=!1;r.position!==void 0&&(e=!0,this.position=r.position),r.rotation!==void 0&&(e=!0,this.rotation=r.rotation),r.scale!==void 0&&(e=!0,this.scale=r.scale),r.shear!==void 0&&(e=!0,this.shear=r.shear),e&&(this.updateWorldMatrix(!0,!1,!0),this.resetBBoxNeedsUpdate())}updateByOp(r,e,t){r.type===0&&r.props.visible!==void 0&&(this.visible=r.props.visible),this.data=e,this.data=e;let o=r,i=Ge(r.path,["states","*"]);if(i!==null){if(r.type===0){let[a]=i;if(this?.stateSelection===a){let s={...r.props};if(delete s.name,Object.values(r.props).some(l=>l===void 0)){let l=this.data;if(l!==void 0){let c=yt.zoom(l,r.path.slice(2));if(c)for(let u in r.props)r.props[u]===void 0&&u in c&&(s[u]=c[u])}}o={...r,props:s,path:r.path.slice(2)}}}}else if(r.type===0){let a=this.stateSelection?this.data.states.data(this.stateSelection):void 0;if(a!==void 0){if(r.props.name!==void 0&&a.name){let{name:l,...c}=a;a=c}let s=yt.removeOverridden(r.path,r.props,a);o={...r,props:s}}}this.updateByPatchedOpBase(o,ci.patch(this.data,this.stateSelection?this.data.states.data(this.stateSelection):void 0),t)}changeSelectedState(r,e,t=!1){if(!(this.data.states.length===0&&!t)){for(let o of this.data.states)ci.toOps(this.data,o.data).forEach(a=>{let s=aa.replaceProps(a,this.data);this.dataPatched=this.data,this.updateByPatchedOp(s,this.data,e)});if(r!==null){let o=this.data.states.data(r);o&&(this.dataPatched=ci.patch(this.data,o),ci.toOps(this.data,o).forEach(a=>{this.updateByPatchedOp(a,this.dataPatched,e)}))}t&&this.updateTransformState(this.dataPatched),this.stateSelection=r}}updateState(r,e){r.name!==void 0&&(this.name=r.name),r.visible!==void 0&&(this.visible=r.visible),this.updateTransformState(r)}updateByPatchedOpBase(r,e,t){this.dataPatched=e,this.updateByPatchedOp(r,e,t)}updateByPatchedOp(r,e,t){r.path.length===0&&r.type===0&&this.updateState(r.props,t),this.requestRender()}traverseFrameAncestors(r){this.traverseAncestors(e=>{e.data.type==="frame2d"&&r(e)})}traverseAncestors(r){let e=this.parent;for(;e;)r(e),e=e.parent}requestRender(){this.traverseFrameAncestors(r=>{r.requestRender()})}clone(r){let e=new sn(this.uuid,this.data,r);return e.parent=void 0,e}addEventListener(r,e){this.emitter.on(r,e)}removeEventListener(r,e){this.emitter.off(r,e)}dispatchEvent(r){this.emitter.emit(r.type,{...r,target:r.target??this})}traverseSortNextHelper(){let r=this.parent;if(r){let e=r.children;if(e){let t=e.indexOf(this)+1;return e[t]?e[t]:r.traverseSortNextHelper()}}}sortNext(){let r=this.children;return r&&r.length>0&&r[0]?r[0]:this.traverseSortNextHelper()}isDescendantOf(r){r instanceof sn&&(r=r.uuid);let e=this;for(;e.parent;){if(e.parent.uuid===r)return!0;e=e.parent}return!1}};var ir=class extends sn{constructor(e,t,o){super(e,t,o);this.uuid=e;this.data=t;this.context=o;this.children=[]}add(e){e.parent&&e.parent instanceof ir&&e.parent.remove(e),this.children.push(e),e.parent=this}remove(e){let t=this.children.indexOf(e);t>=0&&(this.children.splice(t,1),e.parent=void 0)}traverse(e){let t=e(this);if(t!==!0)for(let o of this.children)o instanceof ir?o.traverse(e):t=e(o)}intersectsChildren(e,t,o,i=!1,a=[],s=!1){for(let l of this.children){let c=l instanceof fr;if(l instanceof ir&&!c&&s&&l.intersectsChildren(e,t,o,i,a,!1),l.intersects(e,t,o,c)&&(a.push(l),i))break}return a}updateWorldMatrix(e,t,o){if(super.updateWorldMatrix(e,t,o),o&&this.children)for(let i of this.children)i.updateWorldMatrix(e,!1,!0)}find(e){let t;return this.traverse(o=>{o.uuid===e&&(t=o)}),t}innerDrawChildren(e){for(let t=this.children.length-1;t>=0;t--)this.children[t].draw(e)}resetBBoxNeedsUpdate(){super.resetBBoxNeedsUpdate(),this.traverse(e=>{e.resetBBoxNeedsUpdateSelf()})}clone(e){let t=new ir(this.uuid,this.data,e);t.parent=void 0;for(let o of this.children)t.add(o.clone(e));return t}},fr=class extends ir{constructor(e,t,o){super(e,t,o);this.uuid=e;this.data=t;this.updateState(t,o)}draw(e){!this.visible||(e.save(),this.applyTransforms(e),this.innerDrawChildren(e),e.restore())}clone(e){let t=new fr(this.uuid,this.data,e);t.parent=void 0;for(let o of this.children)t.add(o.clone(e));return t}};function yI(n,r){let[[e,t],[o,i]]=n,[[a,s],[l,c]]=r,u=(e-o)*(s-c)-(t-i)*(a-l);if(u===0)return!1;let p=((e-a)*(s-c)-(t-s)*(a-l))/u,d=-((e-o)*(t-s)-(t-i)*(e-a))/u;return p>=0&&p<=1&&d>=0&&d<=1}var Zb=[[-1,1],[-1,-1],[1,-1],[1,1]],Qb=(n,r,e)=>{let t=n.getCenter(),o=n.getHalfSize(),i=He.append(r,n.worldMatrix);o[0]===0&&o[1]===0?e.push(He.apply(t,i)):Zb.forEach(a=>{let s=[a[0]*o[0]+t[0],a[1]*o[1]+t[1]];e.push(He.apply(s,i))})},kn=class{constructor(){this.matrix=He.identity();this.min=[1/0,1/0];this.max=[-1/0,-1/0];this.vertices=[];this.edges=[]}setFromObjectSize(r,e=!1){r.updateWorldMatrix(),this.makeEmpty(),He.copy(r.worldMatrix,this.matrix);let t=He.invert(r.worldMatrix);this.expandByObjectSize(r,t,e)}expandByObjectSize(r,e,t=!1){let o=[];t===!0&&r instanceof ir?r.traverse(i=>{i.visible&&Qb(i,e,o)}):Qb(r,e,o),this.setFromPoints(o)}getCenter(){let[r,e]=this.min,[t,o]=this.getHalfSize();return He.apply([r+t,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(r){this.makeEmpty();for(let e of r)this.expandByPoint(e)}expandByPoint(r){this.min=[Math.min(this.min[0],r[0]),Math.min(this.min[1],r[1])],this.max=[Math.max(this.max[0],r[0]),Math.max(this.max[1],r[1])]}computeVertices(){let[r,e]=this.getHalfSize(),t=this.getCenter(),[o,i,a,s]=He.getAbcdef(this.matrix),l=He.create(o,i,a,s,t[0],t[1]);this.vertices=Zb.map(([c,u])=>He.apply([c*r,u*e],l))}computeEdges(){this.edges=[];for(let r=0,e=this.vertices.length;r<e;++r)this.edges.push([this.vertices[r],this.vertices[(r+1)%e]])}project(r,e){let t=this.matrix;return e&&(t=He.append(e.worldMatrix,t)),He.applyInverse(r,t)}intersects(r,e,t){return this.intersectsInLocalSpace(...this.project([r,e],t))}intersectsInLocalSpace(r,e){let{min:t,max:o}=this;return r>=t[0]&&r<=o[0]&&e>=t[1]&&e<=o[1]}containsPoint(r){let[e,t]=r,[o,i]=this.min,[a,s]=this.max;return e>=o&&e<=a&&t>=i&&t<=s}intersectsBBox2D(r){for(let e=0,t=this.edges.length;e<t;e++){let o=this.edges[e];for(let i=0,a=r.edges.length;i<a;i++){let s=r.edges[i];if(yI(o,s))return!0}}for(let e=0,t=r.vertices.length;e<t;e++){let o=r.vertices[e];if(this.containsPoint(o))return!0}return!1}ensureMinMax(){let r=this.min,e=this.max;this.min=[Math.min(r[0],e[0]),Math.min(r[1],e[1])],this.max=[Math.max(r[0],e[0]),Math.max(r[1],e[1])]}copy(r){this.min=[...r.min],this.max=[...r.max],He.copy(r.matrix,this.matrix),this.computeVertices(),this.computeEdges()}clone(){let r=new kn;return r.copy(this),r}};var ev,tv=new Promise(n=>{ev=n}),Jb=!1;var pd;function rv(){if(Jb)return;if(pd)return pd;async function n(){let e=await import("./ui.js");ev(e.default??e),Jb=!0}return pd=n(),pd}function iv(n){let r=!1;return n.scene.objects.traverse((e,t)=>{(t.type==="Mesh"&&t.geometry.type==="UIGeometry"||t.type==="Page"&&t.uiFrame!==void 0)&&(r=!0)}),r}var Ae,oh;async function gI(n){let r=await tv;Ae||(oh||(oh=r({locateFile:()=>n})),Ae=await oh)}var ov=He.identity(),Hl=class{constructor(r,e=1){this.canvas=r;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=_e.transparent;this._innerShadowBlur=0;this._innerShadowOffsetX=0;this._innerShadowOffsetY=0;this._innerShadowSpread=0;this._innerShadowColor=_e.transparent;this._fonts=new Map;try{let t=r.getBoundingClientRect();r.width=t.width*e,r.height=t.height*e}catch{console.log(r.width,e)}this._currentM3Transform=ov,this._currentTransform=new Float32Array(ov)}async init(){if(!this.wasmURL)throw Error("Your must set the wasm binary url with renderer.wasmURL = ... before you can call renderer.init");await gI(this.wasmURL),this._surface=Ae.MakeWebGLCanvasSurface(this.canvas),this.ctx=this._surface?.getCanvas(),this._paint=new Ae.Paint,this._paint.setAntiAlias(!0),this._paintFill=this._paint.copy(),this._paintFill.setStyle(Ae.PaintStyle.Fill),this._paintStroke=this._paint.copy(),this._paintStroke.setStyle(Ae.PaintStyle.Stroke),this.ctx?.scale(this.dpr,this.dpr)}get currentTransform(){return this._currentM3Transform}get currentTransformBuffer(){return this._currentTransform}set currentTransform(r){this._currentM3Transform=r,this._currentTransform.set(r)}async loadFont(r,e){let t=await(await fetch(r)).arrayBuffer();this.registerFont(t,e)}registerFont(r,e){if(this._fonts.has(e))return;let t=Ae.FontMgr.FromData(r);if(t)this._fonts.set(e,t);else throw new Error("Invalid font data for "+e)}get width(){return this._width}get height(){return this._height}set strokeColor(r){this._paintStroke&&this._paintStroke.setColor(fd(r),Ae.ColorSpace.DISPLAY_P3)}set fillColor(r){this._paintFill&&this._paintFill.setColor(fd(r),Ae.ColorSpace.DISPLAY_P3)}set lineWidth(r){this._paintStroke&&this._paintStroke.setStrokeWidth(this._strokeMode==="center"?r:r*2)}set strokeMode(r){this._strokeMode=r}set dropShadowBlur(r){this._dropShadowBlur=r}set dropShadowColor(r){this._dropShadowColor=r}set dropShadowOffsetX(r){this._dropShadowOffsetX=r}set dropShadowOffsetY(r){this._dropShadowOffsetY=r}set innerShadowBlur(r){this._innerShadowBlur=r}set innerShadowColor(r){this._innerShadowColor=r}set innerShadowOffsetX(r){this._innerShadowOffsetX=r}set innerShadowOffsetY(r){this._innerShadowOffsetY=r}set innerShadowSpread(r){this._innerShadowSpread=r}set layerBlur(r){this._layerBlur=r}set backgroundBlur(r){this._backgroundBlur=r}clear(){this.ctx?.clear(Ae.TRANSPARENT)}save(){this.ctx?.save()}restore(){this.ctx?.restore()}beginPath(){this._currentPath?.delete(),this._currentPath=new Ae.Path}closePath(){let r=this._currentPath;if(r){if(r.isEmpty())return;let e=r.getBounds();(e[3]-e[1]||e[2]-e[0])&&r.close()}}fill(){this._paintInner(this._paintFill,!0)}stroke(){this._paintInner(this._paintStroke,!1)}clipRect(r,e,t,o,i=0,a=0,s=0,l=0){let c=Ae.XYWHRect(r,e,t,o);if(i===0&&a===0&&l===0&&s===0)this.ctx?.clipRect(c,Ae.ClipOp.Intersect,!0);else{let u=Ae.RRectXY(c,i,i);u[4]=u[5]=i,u[6]=u[7]=a,u[8]=u[9]=s,u[10]=u[11]=l,this.ctx?.clipRRect(u,Ae.ClipOp.Intersect,!0)}}_applyShadowOffsetMatrix(){if(this.ctx){let r=He.invert(this.currentTransform);this.ctx.concat(r);let e=He.translate(He.identity(),this._dropShadowOffsetX,this._dropShadowOffsetY);this.ctx.concat(e),this.ctx.concat(this._currentTransform)}}_applyEffectsToPaint(r,e,t=!0){if(this.ctx&&this._currentPath){let o,i=!1;if(t&&this._hasDropShadow()){let a=r.copy();a.setColor(fd(this._dropShadowColor));let s;this._dropShadowBlur>0&&(s=Ae.MaskFilter.MakeBlur(Ae.BlurStyle.Normal,this._dropShadowBlur*this.dpr*(this.camera?.scale??1),!1),a.setMaskFilter(s)),this.ctx.save(),this.ctx.clipPath(this._currentPath,Ae.ClipOp.Difference,!0),this._applyShadowOffsetMatrix(),e(a),this.ctx.restore(),a.delete(),s?.delete()}if(this._backgroundBlur>0&&t){this.ctx.save(),this.ctx.clipPath(this._currentPath,Ae.ClipOp.Intersect,!0);let a=Ae.ImageFilter.MakeBlur(this._backgroundBlur,this._backgroundBlur,Ae.TileMode.Clamp,null),s=r.copy();s.setImageFilter(a),s.setAlphaf(1);let l=this._currentPath.computeTightBounds();this.ctx.saveLayer(s,l,null,Ae.SaveLayerInitWithPrevious),this.ctx.drawColor(r.getColor()),this.ctx.restore(),this.ctx.restore(),s.delete(),a.delete(),i=!0}if(this._layerBlur>0){let a=r.copy();o=Ae.MaskFilter.MakeBlur(Ae.BlurStyle.Normal,this._layerBlur*this.dpr*(this.camera?.scale??1),!1),a.setMaskFilter(o),e(a),a.delete(),o.delete(),i=!0}if(i||e(r),t&&this._hasInnerShadow()){let a=new Ae.Paint;a.setAntiAlias(!0),a.setStyle(Ae.PaintStyle.Fill),a.setColor(fd(this._innerShadowColor));let s;this._innerShadowBlur>0&&(s=Ae.MaskFilter.MakeBlur(Ae.BlurStyle.Normal,this._innerShadowBlur*this.dpr*(this.camera?.scale??1),!1),a.setMaskFilter(s));let l=this._currentPath.computeTightBounds(),[c,u,p,d]=l,h=p-c,f=d-u;this.ctx.save(),this.ctx.clipPath(this._currentPath,Ae.ClipOp.Intersect,!0),this.ctx.saveLayer(a,l,null,Ae.SaveLayerInitWithPrevious),this.ctx?.translate(this._innerShadowOffsetX,this._innerShadowOffsetY),this.ctx.drawRect(Ae.XYWHRect(-1e3-this._innerShadowOffsetX,-1e3-this._innerShadowOffsetY,2e3+h+Math.abs(this._innerShadowOffsetX*2),2e3+f+Math.abs(this._innerShadowOffsetY*2)),a),a.setBlendMode(Ae.BlendMode.Clear),this.ctx.drawPath(this._currentPath,a),this.ctx.restore(),this.ctx.restore(),a.delete(),s?.delete()}}}_paintInner(r,e=!0){if(this.ctx&&this._currentPath&&r){let t=this.ctx,o=this._currentPath;this._applyEffectsToPaint(r,i=>{let a=!1;!e&&this._strokeMode!=="center"&&(t.save(),t.clipPath(o,this._strokeMode==="outside"?Ae.ClipOp.Difference:Ae.ClipOp.Intersect,!0),a=!0),t.drawPath(o,i),a&&t.restore()},e)}}_hasDropShadow(){return this._dropShadowColor?.a>0}_hasInnerShadow(){return this._innerShadowColor?.a>0}path(r){this._currentPath?.addPath(Ae.Path.MakeFromSVGString(r))}ellipse(r,e,t,o,i,a,s,l){if(!nv([r,e,t,o])||!this._currentPath)return;if(t<0||o<0)throw Error("radii cannot be negative");let c=Ae.XYWHRect(r-t,e-o,t*2,o*2);this._currentPath?.addOval(c)}rect(r,e,t,o,i=0,a=0,s=0,l=0){let c=Ae.XYWHRect(r,e,t,o);if(!!nv(c))if(i===0&&a===0&&l===0&&s===0)this._currentPath?.addRect(c);else{let u=Ae.RRectXY(c,i,i);u[4]=u[5]=i,u[6]=u[7]=a,u[8]=u[9]=s,u[10]=u[11]=l,this._currentPath?.addRRect(u)}}getHorizontalAlign(r){switch(r){case 2:return Ae.TextAlign.Right;case 3:return Ae.TextAlign.Center;case 4:return Ae.TextAlign.Justify;case 1:default:return Ae.TextAlign.Left}}drawTextInner(r,e,t,[o,i,a,s],l,c,u=!0){let p=0,{ctx:d}=this;if(!d)return p;let h=c.copy(),f=c.copy();return f.setAlphaf(0),this._applyEffectsToPaint(h,m=>{e.pushPaintStyle(t,m,f),e.addText(r);let y=e.build();y.layout(a);let g=i;l===2?g+=(s-y.getHeight())/2:l===3&&(g+=s-y.getHeight()),d.drawParagraph(y,o,g),p=y.getHeight(),e.reset(),y.delete()},u),h.delete(),f.delete(),p}drawText(r,e){let t=0,o=this._fonts.get(e.font),{ctx:i,_paintFill:a,_paintStroke:s}=this;if(o&&i){let l=new Ae.TextStyle({fontFamilies:[e.font],fontSize:e.fontSize,heightMultiplier:e.lineHeight,letterSpacing:e.letterSpacing}),c=new Ae.ParagraphStyle({textStyle:l,textAlign:this.getHorizontalAlign(e.horizontalAlign)}),u=Ae.XYWHRect(e.x,e.y,e.width,e.height),p=Ae.ParagraphBuilder.Make(c,o);a&&(t=this.drawTextInner(r,p,l,u,e.verticalAlign,a,!0)),s&&(t=this.drawTextInner(r,p,l,u,e.verticalAlign,s,!1)),p.delete()}return{height:t}}render(){this._surface?.flush()}moveTo(r,e){this._currentPath?.moveTo(r,e)}lineTo(r,e){this._currentPath?.lineTo(r,e)}bezierCurveTo(r,e,t,o,i,a){this._currentPath?.cubicTo(r,e,t,o,i,a)}quadraticCurveTo(r,e,t,o){this._currentPath?.quadTo(r,e,t,o)}setTransform(r,e=!1){if(!this.ctx)return;let t=this.ctx.getTotalMatrix(),o=He.invert(t);if(o&&this.ctx.concat(o),this.ctx?.scale(this.dpr,this.dpr),this.camera?.enabled&&(this.ctx?.concat(this.camera.worldMatrix),e)){let i=He.getScale(this.camera.worldMatrix);this.ctx?.scale(1/i[0],1/i[1])}this.ctx?.concat(r),this.currentTransform=r}transform(r){this.ctx?.concat(r)}setSize(r,e){r===this._width&&e===this._height||(this._width=r,this._height=e,this.canvas.style.width=r+"px",this.canvas.style.height=e+"px",this.canvas.width=r*this.dpr,this.canvas.height=e*this.dpr,this._surface&&(this._surface=Ae.MakeWebGLCanvasSurface(this.canvas),this.ctx=this._surface?.getCanvas()))}};function nv(n){for(let r=0;r<n.length;r++)if(n[r]!==void 0&&!Number.isFinite(n[r]))return!1;return!0}function fd({r:n,g:r,b:e,a:t}){return Ae.Color4f(n,r,e,t)}var Wl=class{constructor(r,e,t){this.uuid=r;this.data=e;this.enabled=!1;this.color=_e.transparent;this.blurRadius=0;this.offset=[0,0];this.spread=0;this.update(e)}update(r){r.color!==void 0&&(this.color=r.color),r.enabled!==void 0&&(this.enabled=r.enabled),r.blurRadius!==void 0&&(this.blurRadius=r.blurRadius),r.offset!==void 0&&(this.offset=r.offset),r.spread!==void 0&&(this.spread=r.spread)}};var ql=class{constructor(r,e,t){this.uuid=r;this.data=e;this.enabled=!1;this.radius=0;this.update(e)}update(r){r.enabled!==void 0&&(this.enabled=r.enabled),r.radius!==void 0&&(this.radius=r.radius)}};var hd=class{constructor(r,e,t){this.uuid=r;this.data=e;this.enabled=!1;this.color=_e.transparent;this.update(e)}update(r){r.enabled!==void 0&&(this.enabled=r.enabled),r.color!==void 0&&(this.color=r.color)}};var md=class{constructor(r,e,t){this.uuid=r;this.data=e;this.enabled=!1;this.color=_e.transparent;this.thickness=0;this.mode="inside";this.update(e)}update(r){r.enabled!==void 0&&(this.enabled=r.enabled),r.color!==void 0&&(this.color=r.color),r.thickness!==void 0&&(this.thickness=r.thickness),r.mode!==void 0&&(this.mode=r.mode)}};var Or=class extends sn{constructor(e,t,o){super(e,t,o);this.uuid=e;this.data=t;this.autoClose=!0;this.fill=new hd(e+"-fill",t.fill,o),this.stroke=new md(e+"-stroke",t.stroke,o),this.dropShadow=new Wl(e+"-dropShadow",t.dropShadow,o),this.innerShadow=new Wl(e+"-innerShadow",t.innerShadow,o),this.backgroundBlur=new ql(e+"-backgroundBlur",t.backgroundBlur,o),this.layerBlur=new ql(e+"-layerBlur",t.layerBlur,o)}applyFillStroke(e){e.fillColor=this.fill.enabled?this.fill.color:_e.transparent,e.strokeColor=this.stroke.enabled&&this.stroke.thickness>0?this.stroke.color:_e.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=_e.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=_e.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,t,o){super.updateByPatchedOp(e,t,o),e.type===0&&(Ge(e.path,["fill"])?this.fill.update(e.props):Ge(e.path,["stroke"])?this.stroke.update(e.props):Ge(e.path,["dropShadow"])?this.dropShadow.update(e.props):Ge(e.path,["innerShadow"])?this.innerShadow.update(e.props):Ge(e.path,["layerBlur"])?this.layerBlur.update(e.props):Ge(e.path,["backgroundBlur"])?this.backgroundBlur.update(e.props):this.resetBBoxNeedsUpdate())}updateState(e,t){super.updateState(e,t),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 t=new Or(this.uuid,this.data,e);return t.parent=void 0,t}};var Hn=class extends Or{constructor(e,t,o){super(e,t,o);this.uuid=e;this.data=t;this.width=0;this.height=0;this.updateState(t,o)}innerDraw(e){e.ellipse(this.width*.5,this.height*.5,this.width*.5,this.height*.5,0,0,Math.PI*2)}intersectsInLocalSpace(e,t){return Xb(e,t,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 t=!1;e.width!==void 0&&(this.width=typeof e.width=="number"?e.width:this.width,t=!0),e.height!==void 0&&(this.height=typeof e.height=="number"?e.height:this.height,t=!0),t&&this.updateWorldMatrix(!0,!1,!0)}updateState(e,t){super.updateState(e,t),this.updateSizeState(e)}clone(e){let t=new Hn(this.uuid,this.data,e);return t.parent=void 0,t}};var Bo=class extends Or{constructor(e,t,o){super(e,t,o);this.uuid=e;this.data=t;this.width=0;this.height=0;this.cornerRadius=[0,0,0,0];this.updateState(t,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 t=!1;e.width!==void 0&&(this.width=typeof e.width=="number"?e.width:this.width,t=!0),e.height!==void 0&&(this.height=typeof e.height=="number"?e.height:this.height,t=!0),t&&this.updateWorldMatrix(!0,!1,!0)}updateState(e,t){super.updateState(e,t),this.updateSizeState(e),this.updateCornerState(e)}clone(e){let t=new Bo(this.uuid,this.data,e);return t.parent=void 0,t}};var Wn=class extends Or{constructor(e,t,o){super(e,t,o);this.uuid=e;this.data=t;this._textHeight=0;this._textHeightDirty=!0;this.width=0;this.height=0;this.updateState(t,o)}get textHeight(){return this._textHeight}applyFillStroke(e){e.fillColor=this.fill.enabled?this.fill.color:_e.transparent,e.strokeColor=this.stroke.enabled&&this.stroke.thickness>0?this.stroke.color:_e.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 t=this.data.textTransform,o=this.data.text.textValue.toString(),i=t===2?o.toUpperCase():t===3?o.toLowerCase():o,{height:a}=e.drawText(i,{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 t=!1;e.width!==void 0&&(this.width=typeof e.width=="number"?e.width:this.width,t=!0),e.height!==void 0&&(this.height=typeof e.height=="number"?e.height:this.height,t=!0),t&&this.updateWorldMatrix(!0,!1,!0)}updateFontState(e,{shared:t}){e.font!==void 0&&(this._fontHolder=t.getFont(e.font),this._fontHolder&&!this._fontHolder.isLoaded&&this._fontHolder.loadingPromise.then(()=>{this.requestRender()}))}updateState(e,t){super.updateState(e,t),this.updateSizeState(e),this.updateFontState(e,t)}clone(e){let t=new Wn(this.uuid,this.data,e);return t.parent=void 0,t}};var Ds=class extends Or{constructor(e,t,o){super(e,t,o);this.uuid=e;this.data=t;this.curves=[];this.extremasBBox={min:[0,0],max:[0,0]};this.updateState(t,o)}computeExtremas(){this.curves.length===0&&this.computeCurves();let e=this.curves.map(i=>yd.extremas(i)),t=[1/0,1/0],o=[-1/0,-1/0];for(let i=0,a=e.length;i<a;i++){let s=e[i];s[0][0]<t[0]&&(t[0]=s[0][0]),s[0][1]<t[1]&&(t[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=[t[0],t[1]],this.extremasBBox.max=[o[0],o[1]],this.extremasBBox}computeCurves(){this.curves=[];for(let o=1,i=this.data.points.length;o<i;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,t=this.data.points[this.data.points.length-1].data;if(this.data.isClosed){let o={start:t.position,cp1:t.controlNext.position,cp2:e.controlPrevious.position,end:e.position};this.curves.push(o)}}getCenter(){let[e,t]=this.extremasBBox.min,[o,i]=this.getHalfSize();return[e+o,t+i]}getHalfSize(){let{min:e,max:t}=this.extremasBBox;return[(t[0]-e[0])*.5,(t[1]-e[1])*.5]}innerDraw(e){for(let i=0,a=this.data.points.length;i<a;i++){let s=this.data.points[i].data;if(i===0){let[l,c]=s.position;e.moveTo(l,c)}else{let l=this.data.points[i-1].data,[c,u]=l.controlNext.position,[p,d]=s.controlPrevious.position,[h,f]=s.position,m={start:l.position,cp1:l.controlNext.position,cp2:s.controlPrevious.position,end:s.position};yd.derive(m),e.bezierCurveTo(c,u,p,d,h,f)}}let t=this.data.points[0].data,o=this.data.points[this.data.points.length-1].data;if(this.data.isClosed){let[i,a]=o.controlNext.position,[s,l]=t.controlPrevious.position,[c,u]=t.position;e.bezierCurveTo(i,a,s,l,c,u)}}updateState(e,t){super.updateState(e,t),this.computeExtremas()}clone(e){let t=new Ds(this.uuid,this.data,e);return t.parent=void 0,t}},yd;(i=>{function n(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])],h=[3*(u[0]-c[0]),3*(u[1]-c[1])],f={start:p,cp:d,end:h};return a.derivative=f,f.derivative=nh.derive(f),f}i.derive=n;function r(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,h=-(p+d)/u,f=-(-p+d)/u;return[h,f]}else if(s!==l&&u===0)return[(2*s-l)/(2*(s-l))];return[]}function e(a){let s=a.derivative??i.derive(a),l=s.start,c=s.cp,u=s.end;return[r(l[0],c[0],u[0]),r(l[1],c[1],u[1])]}i.droot=e;function t(a){let[s,l]=i.droot(a),c=[a.start[0],a.end[0]],u=[a.start[1],a.end[1]];for(let p of s)c.push(i.compute(a,Math.min(1,Math.max(0,p)))[0]);for(let p of l)u.push(i.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]]]}i.extremas=t;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,h=l*u*3,f=s*u;return[p*a.start[0]+d*a.cp1[0]+h*a.cp2[0]+f*a.end[0],p*a.start[1]+d*a.cp1[1]+h*a.cp2[1]+f*a.end[1]]}i.compute=o})(yd||(yd={}));var nh;(t=>{function n(o){let i=o.start,a=o.cp,s=o.end,l=[2*(a[0]-i[0]),2*(a[1]-i[1])],c=[2*(s[0]-a[0]),2*(s[1]-a[1])],u={start:l,end:c};return u.derivative=ih.derive(u),o.derivative=u,u}t.derive=n;function r(o){let i=o.derivative??t.derive(o),a=i.start,s=i.end;return[a[0]!==s[0]?a[0]/(a[0]-s[0]):0,a[1]!==s[1]?a[1]/(a[1]-s[1]):0]}t.droot=r;function e(o,i){if(i===0)return[...o.start];if(i===1)return[...o.end];let a=1-i,s=a*a,l=i*i,c=s,u=a*i*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]]}t.compute=e})(nh||(nh={}));var ih;(e=>{function n(t){let o=t.start,i=t.end,a=[i[0]-o[0],i[1]-o[1]];return t.derivative=a,t.derivative}e.derive=n;function r(t,o){if(o===0)return[...t.start];if(o===1)return[...t.end];let i=t.start,a=t.end;return[i[0]+(a[0]-i[0])*o,i[1]+(a[1]-i[1])*o]}e.compute=r})(ih||(ih={}));var _r=class extends ir{constructor(e,t,o){super(e,t,o);this.uuid=e;this.width=0;this.height=0;this.clipped=!0;this.background=new Bo(e+"-background",wa.defaultData,o),this.background.parent=this,this.updateState(t,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,t,o){super.updateWorldMatrix(e,t,o),this.background?.updateWorldMatrix(e,t,o)}draw(e){if(!this.visible)return;e.save();let t=this.width,o=this.height;this.applyTransforms(e),this.background.width=t,this.background.height=o,this.background.draw(e),this.clipped&&e.clipRect(0,0,t,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 t=!1;e.width!==void 0&&(this.width=typeof e.width=="number"?e.width:this.width,t=!0),e.height!==void 0&&(this.height=typeof e.height=="number"?e.height:this.height,t=!0),t&&this.updateWorldMatrix(!0,!1,!0)}updateState(e,t){super.updateState(e,t),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,t,o){super.updateByPatchedOp(e,t,o),e.type===0&&(Ge(e.path,["fill"])?this.fill.update(e.props):Ge(e.path,["stroke"])?this.stroke.update(e.props):Ge(e.path,["dropShadow"])?this.dropShadow.update(e.props):Ge(e.path,["innerShadow"])?this.innerShadow.update(e.props):Ge(e.path,["layerBlur"])?this.layerBlur.update(e.props):Ge(e.path,["backgroundBlur"])?this.backgroundBlur.update(e.props):this.resetBBoxNeedsUpdate())}clone(e){let t=new _r(this.uuid,this.data,e);t.parent=void 0;for(let o of this.children)t.add(o.clone(e));return t}};var cv=_i(ah(),1),ln=class extends Or{constructor(e,t,o){super(e,t,o);this.uuid=e;this.data=t;this._pathBBox=new DOMRect;this.path="";this.updateState(t,o),this.autoClose=!1,this.computeSVGBBox()}computeSVGBBox(){let e=document.createElementNS("http://www.w3.org/2000/svg","svg"),t=document.createElementNS("http://www.w3.org/2000/svg","path");document.body.appendChild(e),t.setAttribute("d",this.path),e.appendChild(t),this._pathBBox=t.getBBox(),e.remove()}innerDraw(e){e.path(this.path)}intersectsInLocalSpace(e,t){return e>=this._pathBBox.x&&e<=this._pathBBox.x+this._pathBBox.width&&t>=this._pathBBox.y&&t<=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,t){super.updateState(e,t),e.path!==void 0&&(this.path=e.path,this.computeSVGBBox())}clone(e){let t=new ln(this.uuid,this.data,e);return t.parent=void 0,t}};function uv(n,r=1,e=1){if(r<=0||e<=0)return n;let o=(0,cv.parseSVG)(n).map(i=>{let a={...i};return"x"in a&&(a.x=a.x*r),"y"in a&&(a.y=a.y*e),"x1"in a&&(a.x1=a.x1*r),"x2"in a&&(a.x2=a.x2*r),"y1"in a&&(a.y1=a.y1*e),"y2"in a&&(a.y2=a.y2*e),"rx"in a&&(a.rx=a.rx*r),"ry"in a&&(a.ry=a.ry*e),a});return dv(o)}function dv(n){let r=["rx","ry","xAxisRotation","largeArc","sweep","x1","y1","x2","y2","x","y"],e;return n.map(t=>{let o=[];r.forEach(a=>{if(a in t){let s=t[a]*1;o.length&&s>=0&&o.push(","),o.push(s)}});let i=(e===t.code?o[0]<0?"":",":t.code)+o.join("");return e=t.code,i}).join("")}function pv(n,r,e){switch(r.type){case"ellipse2d":return new Hn(n,r,e);case"rectangle2d":return new Bo(n,r,e);case"text2d":return new Wn(n,r,e);case"vector2d":return new Ds(n,r,e);case"path2d":return new ln(n,r,e);case"frame2d":return new _r(n,r,e);case"group2d":default:return new fr(n,r,e)}}var sh=class{constructor(r,e,t){this.uuid=r;this.data=e;this.group=new fr(sh.GROUP_ID,{...rl.defaultData},t),this.createChildrenObjects(e.objects,this.group,t)}createObject(r,e,t,o,i,a){let s=pv(r,e,a);s&&(o.add(s),o.children.splice(i,0,o.children.pop()),s.updateWorldMatrix(),t.length>0&&(s instanceof fr||s instanceof _r)&&this.createChildrenObjects(t,s,a))}createChildrenObjects(r,e,t){let o=0;for(let i of r)this.createObject(i.id,i.data,i.children,e,o,t),o+=1}draw(r){this.group.draw(r)}updateEntityByOp(r,e,t,o){let i=this.find(r);if(i)try{i.updateByOp(e,t,{shared:o})}catch(a){console.error(a)}}updateTreeByOp(r,e){if(r.path.length===0&&r.type===7){let t=r.parent===null?this.group:this.find(r.parent);t!==void 0&&t instanceof ir&&(this.createObject(r.id,r.data,r.children,t,r.localIndex,e),t.requestRender())}else if(r.path.length===0&&r.type===8){let t=this.find(r.id);if(t!==void 0&&t.parent!==void 0&&t.parent instanceof ir){let o=t.parent;t.resetBBoxNeedsUpdate(),o?.remove(t),o?.requestRender()}}else if(r.path.length===0&&r.type===9){let t=this.find(r.id);if(t!==void 0){let o=t.parent,i=r.parent===null?this:this.find(r.parent);if(i===void 0&&!1&&console.error("unexpected",i,r),i instanceof ir||i===this){i.add(t);let a=r.localIndex;i.children.splice(a,0,i.children.pop()),t.updateWorldMatrix(!0,!1,!0),o?.requestRender(),t.requestRender()}t.resetBBoxNeedsUpdate()}}}add(r){this.group.add(r)}remove(r){this.group.remove(r)}traverse(r){this.group.traverse(e=>{e!==this.group&&r(e)})}intersectsChildren(r,e,t,o=!1,i=[]){return this.group.intersectsChildren(r,e,t,o,i,!0)}find(r){return this.group.find(r)}get children(){return this.group.children}project(r,e){return this.group.project(r,e)}getWithSortKey(r){let e=this.find(r);if(e===void 0)return;let t=[],o=e;for(;o!==this.group;){let i=o;o=o.parent;let a=o.children.indexOf(i);t.splice(0,0,a)}return{entity:e,sortKey:t}}getAllSorted(r){let e=[];for(let t of r){let o=this.getWithSortKey(t.id);o!==void 0&&e.push(o)}return e.sort((t,o)=>oc(t.sortKey,o.sortKey)),e.map(t=>t.entity)}},Ti=sh;Ti.GROUP_ID="scene2d";function lh({constraints:n,newParentWidth:r,newParentHeight:e,initialParentWidth:t,initialParentHeight:o,objectInitialWidth:i,objectInitialHeight:a,objectInitialPosition:s}){let{horizontalConstraint:l,verticalConstraint:c}=n,u=r-t,p=e-o,d=i,h=a,f=s[0],m=s[1];if(l!==0){if(l===1)f+=u;else if(l===3)f+=u/2;else if(l===2)d=Math.max(1,d+u);else if(l===4){let y=r/t;d*=y,f*=y}}if(c!==0){if(c===1)m+=p;else if(c===3)m+=p/2;else if(c===2)h=Math.max(1,h+p);else if(c===4){let y=e/o;h*=y,m*=y}}return{width:d,height:h,position:[f,m]}}var SI=_i(ah(),1);var Bee={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}};var fv=require("three");var wI=He.identity(),Es=class{constructor(r,e,t,o){this.uuid=r;this.width=e;this.height=t;this.context=o;this.enabled=!0;this.isScreenSpace=!1;this.isFrameDirty=!1;this.onRenderRequestedDownstream=()=>{this.isFrameDirty=!0,this.context.shared.requestRender()};this.onFrameOverrideObjectEvent=r=>{if(r.target?.uuid!==void 0){let e=this.frameRoot?.find(r.target.uuid);e&&e.dispatchEvent({...r,target:e})}};this.scene2d=new Ti(fv.MathUtils.generateUUID(),hu.defaultData,{dpr:window.devicePixelRatio,shared:o.shared}),this.canvas=document.createElement("canvas"),this.renderer=new Hl(this.canvas),o.shared.addCanvas(this.uuid,this.canvas),this.textureHolder=o.shared.canvas(this.uuid),this.promise=this.init()}async init(){this.renderer instanceof Hl&&(this.renderer.wasmURL=Q0.skiaWasmUrl),await this.renderer.init()}render(){this.isFrameDirty&&(this.renderer.clear(),this.frameOverride?.draw(this.renderer),this.renderer.render(),this.textureHolder?.setNeedsUpdate(!0),this.isFrameDirty=!1)}updateEntity2DByOp(r,e,t,o){this.scene2d.updateEntityByOp(r,e,t,o),this.applySize()}updateTreeByOp(r,e){this.scene2d.updateTreeByOp(r,e),this.applySize()}applyOverrides(r){if(this.frameOverride&&this.frameRoot){this.frameOverride.position=[0,0],this.frameOverride.rotation=0;let e=r?.width??this.width,t=r?.height??this.height;this.frameOverride.width=e,this.frameOverride.height=t,this.frameOverride.localMatrix=wI,this.isScreenSpace&&(this.frameOverride.fill.color=_e.from0to1([0,0,0,0])),this.frameOverride.data={...this.frameOverride.data,width:e,height:t},hv({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(r){let e=r?.width??this.width,t=r?.height??this.height;this.width=e,this.height=t,this.renderer.dpr=this.isScreenSpace?window.devicePixelRatio:Math.floor(2048/Math.max(e,t)),this.renderer.setSize(e,t),this.textureHolder?.dispose(),this.applyOverrides(r),this.frameOverride?.requestRender()}applyFrame(r){let e=this.context.scene.find2D(r);if(!(!e||!(e instanceof _r)))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.textureHolder?.dispose(),this.frame?.addEventListener("render",this.onRenderRequestedDownstream),this.frameOverride.traverse(t=>{t.addEventListener("beginState",this.onFrameOverrideObjectEvent)}),this.frameOverride.traverse(t=>{t.addEventListener("completeState",this.onFrameOverrideObjectEvent)}),this.frame?.requestRender(),e}get frame(){return this.frameOverride}get frameId(){return this.frame?.uuid}find(r){return this.scene2d.find(r)}get texture(){return this.textureHolder?.getTexture(1001)}disposeFrameOverride(){this.frameOverride?.removeEventListener("render",this.onRenderRequestedDownstream),this.frameOverride?.traverse(r=>{r.removeEventListener("beginStateChange",this.onFrameOverrideObjectEvent)}),this.frameOverride?.traverse(r=>{r.removeEventListener("completeState",this.onFrameOverrideObjectEvent)}),this.frameOverride&&this.scene2d.remove(this.frameOverride)}};function hv({objectOverride:n,objectRoot:r,newParentWidth:e,newParentHeight:t,initialParentWidth:o,initialParentHeight:i}){if(n instanceof _r&&r instanceof _r||n instanceof fr&&r instanceof fr)for(let a=0,s=n.children.length;a<s;a++){let l=n.children[a],c=r.children[a];l&&c&&l.uuid===c.uuid&&OI({objectOverride:l,objectRoot:c,newParentWidth:e,newParentHeight:t,initialParentWidth:o,initialParentHeight:i})}}function PI(n){if(ch(n))return[n.width,n.height];if(n instanceof ln){let[r,e]=n.getHalfSize();return[r*2,e*2]}else if(n instanceof fr){let[r,e]=n.recursiveBBox.getHalfSize();return[r*2,e*2]}return[0,0]}function OI({objectOverride:n,objectRoot:r,newParentWidth:e,newParentHeight:t,initialParentWidth:o,initialParentHeight:i}){let[a,s]=PI(r),{width:l,height:c,position:u}=lh({constraints:n.data,newParentWidth:e,newParentHeight:t,initialParentWidth:o,initialParentHeight:i,objectInitialWidth:a,objectInitialHeight:s,objectInitialPosition:r.position});if(n.position=u,n.data={...n.data,position:u},n.states)for(let p in n.states)CI({stateId:p,objectOverride:n,objectRoot:r,newParentWidth:e,newParentHeight:t,initialParentWidth:o,initialParentHeight:i});if(ch(n)||n instanceof fr)ch(n)&&(n.width=l,n.height=c,n.data={...n.data,width:l,height:c}),hv({objectOverride:n,objectRoot:r,newParentWidth:l,newParentHeight:c,initialParentWidth:a,initialParentHeight:s});else if(n instanceof ln){let p=r,d=a!==0?l/a:1,h=s!==0?c/s:1;n.path=uv(p.path,d,h),n.data={...n.data,path:n.path}}}function CI({stateId:n,objectOverride:r,objectRoot:e,newParentWidth:t,newParentHeight:o,initialParentWidth:i,initialParentHeight:a}){let s=r.states?.[n],l=e.states?.[n];if(s&&l){let{width:c,height:u,position:p}=lh({constraints:r.data,newParentWidth:t,newParentHeight:o,initialParentWidth:i,initialParentHeight:a,objectInitialWidth:Yo.isResizeable(l)?l.width:0,objectInitialHeight:Yo.isResizeable(l)?l.height:0,objectInitialPosition:l.position});Object.assign(r.states[n],{position:p}),Yo.isResizeable(s)&&Object.assign(r.states[n],{width:c,height:u})}}function ch(n){return n instanceof Bo||n instanceof _r||n instanceof Hn||n instanceof Wn}var qr=class extends Aa(mv.Scene){constructor(e,t,o){super();this.data=t;this.bgColor=new Ft(1,1,1,1);this.fog=null;this.backupFog=new _s.Fog(16777215,.1,2e3);this.fogUseBGColor=!1;this.isActive=!1;this.aoColor=new _s.Color;this.penumbraSizeArrayCache=null;this.super_Entity(e,t),this.personalCamera=new an(Sn,{...si.defaultData,...t.camera,name:"Personal Camera"}),this.personalCamera.objectHelper.visible=!1,this.add(this.personalCamera),this.activeCamera=this.personalCamera,this.ambientLight=new _s.HemisphereLight(13882323,8553090,.75),this.ambientLight.name="Default Ambient Light",this.ambientLight.layers.enable(3),this.ambientLight.removeFromParent(),this.add(this.ambientLight),t.uiScene?this.uiScene=new Ti((Array.isArray(e)?e[0]:e)+"-ui",t.uiScene,{dpr:window.devicePixelRatio,shared:o.shared}):t.uiFrame&&this.createUICanvas(t.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,t){this.uiCanvas=new Es(this.uuid+"-uiscreen",window.innerWidth,window.innerHeight,t),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,t){e.color!==void 0&&(this.ambientLight.color=er(e.color,t)),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(t=>{t instanceof Pr&&t.recomputeBoolean()}),this.updateShadow(this.data.shadow)}forceMaterialsUpdate(){this.traverseEntity(e=>{if(e instanceof wr)if(Array.isArray(e.material))for(let t of e.material)t.needsUpdate=!0;else e.material.needsUpdate=!0,e.material.dispose()})}updateShadow(e){e.softShadowQuality!==void 0&&this.isActive&&jb(e.softShadowQuality)&&this.forceMaterialsUpdate()}updateFog(e,t){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=er(e.color,t),this.backupFog.near=e.near,this.backupFog.far=e.far}updateAo(e,t){e.aoColor!==void 0&&(this.aoColor=er(e.aoColor,t))}updateByOp(e,t,o,i){let a=this.data.uiFrame;super.updateByOp(e,t,o,i);let s=t;Ge(e.path,["fog"])?this.updateFog(s.fog,o.shared):Ge(e.path,["ao"])?this.updateAo(s.ao,o.shared):Ge(e.path,["ambient"])?this.updateAmbientLight(s.ambient,o.shared):Ge(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,t){e?(this.uiCanvas||this.createUICanvas(e,t),this.uiCanvas.enabled=!0,this.uiCanvas.applyFrame(e)):this.uiCanvas&&(this.uiCanvas.enabled=!1)}updateState(e,t){this.updateState_Entity(e,t),e.backgroundColor!==void 0&&this.setBackgroundColor(er(e.backgroundColor,t.shared)),e.fog!==void 0&&this.updateFog(e.fog,t.shared),e.ambient!==void 0&&this.updateAmbientLight(e.ambient,t.shared),e.ao!==void 0&&this.updateAo(e.ao,t.shared),e.shadow!==void 0&&this.updateShadow(e.shadow)}createFrame(e,t){}raycast(e,t){super.raycast(e,t)}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,t=0;this.traverseEntity(o=>{if(!o.visible)return!0;o instanceof Is&&o.visible&&e<3&&(this.penumbraSizeArrayCache[e]=o.data.penumbraSize,e+=1),o instanceof Ns&&o.visible&&e<5-3&&(this.penumbraSizeArrayCache[3+t]=o.data.penumbraSize,t+=1)})}raycastWithClones(e){let t=[],o=i=>{for(let a of i.children){let s=a.cloner;je.is(a)&&(a.visible||s?.object.data.visible)&&((Fn(a)||jl(a)&&this.scene.enableHelpers&&a.objectHelper.visible)&&(e.intersectObject(a,!1,t),$l(a,e,t,!0)),o(a))}};return o(this),t}updateEntity2DByOp(e,t,o,i){this.uiCanvas?.updateEntity2DByOp(e,t,o,i)}};var Cr=require("three");var xd=class extends Cs(Cr.PointLight,Ms){constructor(r,e,t){super(),this.super_Entity(r,e),this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1,this.layers.enable(3);let i=this.shadow.camera;i.fov=90,i.aspect=1,i.near=100,i.far=2500;let a=new Cr.Vector3(-i.far+this.position.x,-i.far+this.position.y,-i.far+this.position.z),s=new Cr.Vector3(i.far+this.position.x,i.far+this.position.y,i.far+this.position.z),l=new Cr.Box3(a,s),c=new Cr.Box3Helper(l,new Cr.Color(16755200));c.visible=!1,this.gizmos.shadowmap=c,this.update()}update(){if(this.shadow&&(this.shadow.camera.updateProjectionMatrix(),this.gizmos))for(let r in this.gizmos){let e=this.gizmos[r];if(e instanceof Cr.Box3Helper){let t=this.shadow.camera,o=new Cr.Vector3(-t.far+this.position.x,-t.far+this.position.y,-t.far+this.position.z),i=new Cr.Vector3(t.far+this.position.x,t.far+this.position.y,t.far+this.position.z);e.box.set(o,i),e.updateMatrixWorld(!0)}}}updateMatrixWorld(r){super.updateMatrixWorld(r),this.objectHelper&&this.objectHelper.update()}updateState(r,e){this.updateState_Light(r,e),r.distance!==void 0&&(this.distance=r.distance),r.decay!==void 0&&(this.decay=r.decay),r.shadowRadius!==void 0&&(this.shadow.radius=r.shadowRadius),r.shadowResolution!==void 0&&(this.shadow.mapSize.set(r.shadowResolution,r.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null))}};var bd=class extends St{get forceComputeSize(){return!0}get shape(){return this.geometry.userData.shape}updateEntityBoxSize(r,e){let t=this.geometry.getAttribute("position");t!==void 0?xl(t,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:t.count,r,e):super.updateEntityBoxSize(r,e)}};var Bs=class extends St{constructor(e,t,o){super(e,t,o);this._shapeId=null;this._context=o}updateState(e,t){super.updateState(e,t),this.updateShape()}updateShape(){let e={...this.data.geometry.extrusion.shape};for(let i in e)typeof e[i]=="string"&&(e[i]=this._context.shared.getVariable(e[i],[this.uuid,"geometry","extrusion","shape",i]));let t;if(e.type==="Custom"){let i=e.shapeId;if(i!==this._shapeId&&this.detachShape(),i){this._shapeId=i;let a=this._context.scene.find(i);a?.data&&(a.attachedPaths.add(this),t=a.geometry.userData?.shape),t||this._context.scene.addPendingCommand(()=>this.updateShape())}}else{let i;switch(e.type){case"Rectangle":i=za;break;case"Ellipse":i=La;break;case"Polygon":i=Nu;break;case"Star":i=Du;break;default:throw new Error(`Unknown shape type: ${e.type}`)}t=i.create({parameters:e}).userData.shape}let o=this.geometry;t&&o.inputs&&(o.inputs.shapeData=t,o.build(),this.attachedSurfaceCloners.forEach(i=>i.update()))}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,t){return super.updateTransformState(e,t)}updateGeometryInteractions(e,t){super.updateGeometryInteractions(e,t),this.updateShape()}updateEntityBoxSize(e,t){let o=this.geometry.getAttribute("position");o!==void 0?xl(o,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:o.count,e,t):super.updateEntityBoxSize(e,t)}};var Ls=require("three");var cn=class extends kr(Ls.Group,Hr){constructor(e,t,o){super();t.type==="Instance"&&typeof e=="string"&&(t=this.transformAssignData(t,o)),this.super_Entity(e,t),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,t){let o=xa.getComponentData({scene:t.scene.data,shared:t.shared.data},e.component);if(o){let i,a;for(let s of So.rootOverrideProps)e[s]===void 0?(i===void 0&&(i={...e}),i[s]=o.data[s]):(a===void 0&&(a={}),a[s]=e[s],i===void 0&&(i={...e}),i[s]=mo.apply(o.data[s],e[s]));return this.overrideData=a,i}else return{...Vt.defaultData,...e,...Kr(Vt.defaultData,So.rootOverrideProps)}}updateByOp(e,t,o,i){let a;if(this.isInstanceRoot&&!i){if(t=this.transformAssignData(t,o),e.type===0&&e.path.length===0&&this.component)for(let s of So.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&&So.rootOverrideProps.includes(e.path[0])){let s=e.path[0];a===void 0&&(a={...e,path:[],props:{[s]:t[s]}})}}super.updateByOp(a??e,t,o,i)}updateState(e,t){this.updateState_Entity(e,t)}expandInstanceChildren(e){let t=this.data;if(this.component===void 0){let o=e.scene.find(t.component)??null,i=!1;if(o!==this.oldComponent){if(this.oldComponent){let a=0;for(let s of this.children)if(je.is(s))e.scene.disposeAndUnregisterEntityRecursivelyIfNotReregistered(s),vd(s),a+=1;else break;this.children.splice(0,a)}i=!0}if(o){let a={};gv(e,[this.uuid],t.overrides,this,o,o,0,i,a);for(let s of this.children)if(je.is(s)){let l=s.data;l.type==="Empty"&&l.animations&&s.traverseEntity(c=>{let u=c.dataPatched;if(c instanceof St&&u.bones&&u.boneInverses){let p=c.dataPatched;if(p.bones&&p.boneInverses){let d=p.bones.map(m=>e.scene.find(a[m])),h=p.boneInverses.map(m=>new Ls.Matrix4().fromArray(m)),f=new Ls.Skeleton(d,h);c.bind(f,c.bindMatrix)}}else c.matrixAutoUpdate=!0})}}this.oldComponent=this.component}}};function vd(n){if(n.component){let r=n.component.instances.indexOf(n);r>=0&&n.component.instances.splice(r,1);for(let e of n.children)je.is(e)&&vd(e)}}function yv(n,r,e,t){return n.component===r&&Kd(n.identity,t)?n.overrideData===e?2:1:0}function gv(n,r,e,t,o,i,a,s,l){if(a>50)return!1;if(t.component!==o){if(t.component){let u=t.component.instances.indexOf(t);u>=0&&t.component.instances.splice(u,1)}o.instances.find(u=>u===t)||o.instances.push(t),t.component=o}o instanceof cn&&o.isInstanceRoot&&o.expandInstanceChildren(n);let c=0;for(let u of o.children)if(je.is(u)){let p=[...r,...typeof u.identity=="string"?[u.identity]:u.identity],d=ya.resolve(e,p,1);if(d!=null&&!(d instanceof lt)){if(!1)debugger;Object.setPrototypeOf(d,lt.prototype),console.error("wrong prototype")}let h=null,f;if(!s){let m=t.children[c];if(h=je.is(m)?m:null,h!==null){let y=yv(h,u,d,p);f=y>=1?h.stateSelection:void 0,y!==2&&(h=null)}if(h===null&&(h=n.scene.findInstance(p)??null,h!==null)){let y=yv(h,u,d,p);if(f=y>=1?h.stateSelection:void 0,y!==2)h=null;else{let g=h.parent.children.indexOf(h);h.parent.children.splice(g,1),t.children.splice(c,0,h),h.parent===t?(g<=c&&console.error("not possible"),void 0):(h.parent=t,h.matrixWorldNeedsUpdate=!0,h.resetBBoxNeedsUpdate(),h.updateVisible(),n.pendingDeletes.delete(h),void 0)}}}if(h===null){let m=d?mo.apply(u.data,d):u.data;Qr.is(m.type)&&(m={...m,type:"Empty"}),h=eo.createEntity(p,m,n),h.overrideData=d,t.add(h),t.children.splice(t.children.length-1,1),t.children.splice(c,0,h),h.updateState(h.data,n),f&&h.changeSelectedState(f,n),n.scene.registerInstanceAndSetUuid(h)}if(h.isBone){let m=h.identity[h.identity.length-1];l[m]=h.uuid}c+=1,gv(n,r,e,h,u,i,a+1,s,l)}if(!s){let u=c;for(;;){let p=t.children[c];if(je.is(p))n.pendingDeletes.add(p);else break;c+=1}t.children.splice(u,c-u)}return!0}var xv=require("three");var Sd=class extends kr(xv.Bone,Hr){constructor(r,e){super(),this.super_Entity(r,e),this.objectHelper.update(),this.matrixAutoUpdate=!0}updateState(r,e){this.updateState_Entity(r,e)}};var Ai=class extends St{constructor(e,t,o){super(e,t,o);this.onBeforeRender=()=>{this.uiCanvas.render()};this.uiCanvas=new Es(e+"-canvas",t.geometry.width,t.geometry.height,o),this.uiCanvas.promise.then(()=>{this.applyFrame(this.dataPatched.geometry.frame,o.shared)})}updateByPatchedOpGeometry(e,t,o){super.updateByPatchedOpGeometry(e,t,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,t){let o=e?.width??this.dataPatched.geometry.width,i=e?.height??this.dataPatched.geometry.height;this.uiCanvas.applySize({width:o,height:i}),this.applyGeometryParametersFromFrame(t)}applyFrame(e,t){this.uiCanvas.applyFrame(e),this.applyGeometryParametersFromFrame(t),this.applyMaterialParametersFromFrame({shared:t})}applyGeometryParametersFromFrame(e){let t=this.frame;t&&(Object.assign(this.data,{geometry:Object.assign(this.data.geometry,{cornerRadius:t.cornerRadius,cornerType:0})}),Object.assign(this.dataPatched,{geometry:Object.assign(this.dataPatched.geometry,{cornerRadius:t.cornerRadius,cornerType:0})}),this.localGeometry?.dispose(),this.localGeometry=Jo(this.dataPatched.geometry,e,this.data.flatShading,this))}applyMaterialParametersFromFrame(e){let t=this.frame;if(t){let o=t.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,t,o,i){this.uiCanvas.updateEntity2DByOp(e,t,o,i),e===this.frameId&&t.type===0&&(t.props.cornerRadius!==void 0?this.applyGeometryParametersFromFrame(i):Ge(t.path,["backgroundBlur"])&&this.applyMaterialParametersFromFrame({shared:i}))}get frame(){return this.uiCanvas.frame}get frameId(){return this.frame?.uuid}removeInteractionGeometry(e){super.removeInteractionGeometry(e),this.applySize({},e)}updateGeometryInteractions(e,t){super.updateGeometryInteractions(e,t),this.applySize({width:e.width,height:e.height},t)}};var Be=require("three"),kv=require("three/examples/jsm/misc/GPUComputationRenderer.js");var kt=require("three"),bv=require("three/examples/jsm/math/MeshSurfaceSampler.js");function vv(n){let r=new Float32Array(n*n*2);for(let e=0;e<n;e++)for(let t=0;t<n;t++){let o=e*n+t;r[o*2+0]=e/(n-1),r[o*2+1]=t/(n-1)}return r}function Sv(n){let r=Math.ceil(Math.sqrt(n));return Math.max(r,1)}function wv(n,r){let e=new kt.Mesh(n.geometry,n.material),t=[],o=[],i=new kt.Vector3,a=new kt.Vector3;e.geometry.index!==null&&(e.geometry=e.geometry.toNonIndexed());let s=new bv.MeshSurfaceSampler(e).build();for(let u=0;u<r;u++)s.sample(i,a),t.push(i.x,i.y,i.z),o.push(a.x,a.y,a.z);let l=new Float32Array(t),c=new Float32Array(o);return{positions:l,normals:c}}function uh(n,r){let e=n,t=new Float32Array(4*r*r);for(let i=0;i<r*r;i++)t[4*i]=e[3*i],t[4*i+1]=e[3*i+1],t[4*i+2]=e[3*i+2],t[4*i+3]=0;let o=new kt.DataTexture(t,r,r,kt.RGBAFormat,kt.FloatType);return o.needsUpdate=!0,o}function Pv({size:n}){let r=new Float32Array(4*n*n);for(let t=0;t<n*n;t++)r[4*t]=t,r[4*t+1]=0,r[4*t+2]=0,r[4*t+3]=0;let e=new kt.DataTexture(r,n,n,kt.RGBAFormat,kt.FloatType);return e.needsUpdate=!0,e}function Ov(n){let r=new Float32Array(4*n*n);for(let t=0;t<n*n;t++)r[4*t]=0,r[4*t+1]=0,r[4*t+2]=0,r[4*t+3]=0;let e=new kt.DataTexture(r,n,n,kt.RGBAFormat,kt.FloatType);return e.needsUpdate=!0,e}var Cv=`
2608
+ `,uI=Ts.ShaderChunk.lights_fragment_begin,dI=Ts.ShaderChunk.shadowmask_pars_fragment,Gb=null,pI=n=>{switch(n){case"low":return 8;case"medium":return 16;case"high":return 32;default:return 16}},jb=(n="medium")=>{if(Gb===n)return!1;Gb=n;let r=pI(n);Ts.ShaderChunk.shadowmap_pars_fragment=cI(r);let e=uI.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 ]"),Ts.ShaderChunk.lights_fragment_begin=e;let t=dI.slice();return t=t.replaceAll("getShadow(","getShadow( UNROLLED_LOOP_INDEX, "),Ts.ShaderChunk.shadowmask_pars_fragment=t,!0};var Ul=require("three");var Fb=require("three");var As=class extends Eo(Fb.DirectionalLightHelper){constructor(e,t=15,o=10066329){super(e,t,o);this.object=e;this.added=!1;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,t){_o(this.object,As.geometryHelper,e,t)}};var Ub=require("three");var Ms=class extends Eo(Ub.PointLightHelper){constructor(e,t=15,o=6710886){super(e,t,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,t){_o(this.object,Ms.geometryHelper,e,t)}};var ud=require("three");var cd=class extends Eo(ud.SpotLightHelper){constructor(e,t=6710886){super(e,t);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,t){_o(this.object,cd.geometryHelper,e,t)}update(){if(this.object!==void 0){let e=cd._vector,t=this.object.distance?this.object.distance:1e3,o=t*Math.tan(this.object.angle);this.cone.scale.set(o,o,t),e.setFromMatrixPosition(this.object.target.matrixWorld),this.cone.lookAt(e);let i=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(i);else this.cone.material.color.set(i)}}},Fl=cd;Fl._vector=new ud.Vector3;function fI(n,r){n.shadow.camera.right=r/2,n.shadow.camera.left=-r/2,n.shadow.camera.top=r/2,n.shadow.camera.bottom=-r/2,n.shadow.needsUpdate=!0}var Is=class extends Cs(Ul.DirectionalLight,As){constructor(r,e,t){super(),this.super_Entity(r,e),this.castShadow=!0,this.shadow.mapSize.width=2048,this.shadow.mapSize.height=2048,this.shadow.normalBias=1,this.layers.enable(3);let i=this.shadow.camera;i.top=1250,i.bottom=-1250,i.right=1250,i.left=-1250,i.near=-1e4,i.far=2500;let a=new Ul.CameraHelper(this.shadow.camera);a.visible=!1,this.gizmos.shadowmap=a}update(){this.shadow.camera.updateProjectionMatrix();for(let r in this.gizmos){let e=this.gizmos[r];e instanceof Ul.CameraHelper&&e.update()}}updateMatrixWorld(r){super.updateMatrixWorld(r),this.objectHelper&&this.objectHelper.update()}updateState(r,e){this.updateState_Light(r,e);let t=r.depth!==void 0&&r.depth!==this.shadow.camera.far||r.size!==void 0&&r.size/2!==this.shadow.camera.right;r.size!==void 0&&fI(this,r.size),r.shadowRadius!==void 0&&(this.shadow.radius=r.shadowRadius),r.shadowResolution!==void 0&&(this.shadow.mapSize.set(r.shadowResolution,r.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),r.penumbraSize!==void 0&&e.scene.markPenumbraSizeDirty(),t&&this.update()}};var mv=require("three");var Wr=require("three");var kb=new Wr.Vector3,Hb=new Wr.Vector3,Wb=new Wr.Quaternion,Ns=class extends Cs(Wr.SpotLight,Fl){constructor(r,e,t){super(),this.super_Entity(r,e),this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1,this.layers.enable(3);let i=this.shadow.camera;i.fov=Wr.MathUtils.RAD2DEG*2*this.angle,i.aspect=1,i.near=100,i.far=2500;let a=new Wr.CameraHelper(this.shadow.camera);a.visible=!1,this.gizmos.shadowmap=a,this.update()}update(){this.shadow.camera.updateProjectionMatrix();for(let r in this.gizmos){let e=this.gizmos[r];e instanceof Wr.CameraHelper&&e.update()}}updateMatrixWorld(r){super.updateMatrixWorld(r),Hb.setFromMatrixPosition(this.matrixWorld),Wb.setFromRotationMatrix(this.matrixWorld),kb.copy(this.up).applyQuaternion(Wb).negate().multiplyScalar(this.distance),this.target.position.copy(Hb).add(kb),this.target.updateMatrixWorld(),this.objectHelper&&this.objectHelper.update()}updateState(r,e){this.updateState_Light(r,e),r.distance!==void 0&&(this.distance=r.distance),r.decay!==void 0&&(this.decay=r.decay),r.angle!==void 0&&(this.angle=r.angle),r.penumbra!==void 0&&(this.penumbra=r.penumbra),r.shadowRadius!==void 0&&(this.shadow.radius=r.shadowRadius),r.penumbraSize!==void 0&&e.scene.markPenumbraSizeDirty(),r.shadowResolution!==void 0&&(this.shadow.mapSize.set(r.shadowResolution,r.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null))}};function hI(n){let r=(n[0][0]+n[1][1])/2,e=(n[0][0]-n[1][1])/2,t=(n[1][0]+n[0][1])/2,o=(n[1][0]-n[0][1])/2,i=Math.sqrt(r*r+o*o),a=Math.sqrt(e*e+t*t),s=i+a,l=i-a,c=Math.atan2(t,e),u=Math.atan2(o,r),p=(u-c)/2,d=(u+c)/2,h=[[Math.cos(d),Math.sin(d)],[-Math.sin(d),Math.cos(d)]],f=[[s,0],[0,l]],m=[[Math.cos(p),Math.sin(p)],[-Math.sin(p),Math.cos(p)]];return h[0][0]*=-1,h[0][1]*=-1,m[0][0]*=-1,m[1][0]*=-1,[h,f,m]}function dd(n,r){return[[n[0][0]*r[0][0]+n[0][1]*r[1][0],n[0][0]*r[0][1]+n[0][1]*r[1][1]],[n[1][0]*r[0][0]+n[1][1]*r[1][0],n[1][0]*r[0][1]+n[1][1]*r[1][1]]]}function qb(n){return[[n[0][0],n[1][0]],[n[0][1],n[1][1]]]}function $b(n){let[r,e,t]=hI(n),o=dd(r,qb(t)),i=dd(dd(t,e),qb(t)),a=Math.atan2(o[1][0],o[0][0]),s=[i[0][0],i[1][1]],l=[i[0][1]/i[1][1],i[1][0]/i[0][0]];return{rotation:a,scale:s,shear:l}}function Yb({rotation:n,scale:r,shear:e}){let t=Math.cos(n),o=Math.sin(n),i=[[t,-o],[o,t]],a=[[r[0],e[0]*r[1]],[e[1]*r[0],r[1]]],s=dd(i,a);return[s[0][0],s[1][0],s[0][1],s[1][1]]}var He;(S=>{function n(){return[1,0,0,0,1,0,0,0,1]}S.identity=n;function r(T,I=S.identity()){for(let x=0,E=T.length;x<E;x++)I[x]=T[x];return I}S.copy=r;function e(T,I,x,E,N,M){return S.setAbcdef(S.identity(),T,I,x,E,N,M)}S.create=e;function t(T,I,x,E,N,M,D){return T[0]=I,T[1]=E,T[2]=M,T[3]=x,T[4]=N,T[5]=D,T}S.setAbcdef=t;function o(T,I){let[x,E,N,M,D,_]=a(T),[B,z,U,R,W,j]=a(I),F=B*x+z*N,H=B*E+z*M,q=U*x+R*N,re=U*E+R*M,ee=W*x+j*N+D,X=W*E+j*M+_;return S.create(F,H,q,re,ee,X)}S.append=o;function i(T,I){let[x,E,N,M,D,_]=a(T),[B,z,U,R,W,j]=a(I),F=x,H=E,q=N,re=M;(B!==1||z!==0||U!==0||R!==1)&&(F=x*B+E*U,H=x*z+E*R,q=N*B+M*U,re=N*z+M*R);let ee=D*B+_*U+W,X=D*z+_*R+j;return S.create(F,H,q,re,ee,X)}S.prepend=i;function a(T){return[T[0],T[3],T[1],T[4],T[2],T[5]]}S.getAbcdef=a;function s(T){let[I,x,E,N,M,D]=S.getAbcdef(T),_=I*N-x*E,B=N/_,z=-x/_,U=-E/_,R=I/_,W=(E*D-N*M)/_,j=-(I*D-x*M)/_;return S.create(B,z,U,R,W,j)}S.invert=s;function l([T,I],x){let[E,N,M,D,_,B]=S.getAbcdef(x);return[E*T+M*I+_,N*T+D*I+B]}S.apply=l;function c(T,I){let[x,E,N,M,D,_]=S.getAbcdef(I),B=1/(x*M+N*-E),[z,U]=T;return[M*B*z+-N*B*U+(_*N-D*M)*B,x*B*U+-E*B*z+(-_*x+D*E)*B]}S.applyInverse=c;function u(T,I,x=I){let[E,N,M,D,_,B]=S.getAbcdef(T);return S.setAbcdef(T,E*I,N*x,M*I,D*x,_*I,B*x),T}S.scale=u;function p(T,I){let x=Math.cos(I),E=Math.sin(I),[N,M,D,_,B,z]=S.getAbcdef(T);return S.setAbcdef(T,N*x-M*E,N*E+M*x,D*x-_*E,D*E+_*x,B*x-z*E,B*E+z*x),T}S.rotate=p;function d(T,I,x){let[E,N]=x,M=S.translate(T,-E,-N);return M=S.rotate(M,I),M=S.translate(M,E,N),M}S.rotateAround=d;function h(T,I,x){let[E,N,M,D,_,B]=S.getAbcdef(T);return S.setAbcdef(T,E,N,M,D,_+I,B+x),T}S.translate=h;function f(T,I,x){let[E,N,M,D]=S.getAbcdef(T);return S.setAbcdef(T,E,N,M,D,I,x),T}S.setTranslate=f;function m(T,I,x){let[E,N,M,D]=S.getAbcdef(T);return S.setAbcdef(T,E,N,M,D,I,x),T}S.setPosition=m;function y(T){let[I,x,E,N]=S.getAbcdef(T),M=Math.sqrt(I*I+x*x),D=Math.sqrt(E*E+N*N);return[M,D]}S.getScale=y;function g(T){let[,,,,I,x]=S.getAbcdef(T);return[I,x]}S.getPosition=g;function v(T,I){return S.decompose(T,I).rotation}S.getRotation=v;function O(T,I){let[x,E,N,M,D,_]=S.getAbcdef(T),{rotation:B,scale:z,shear:U}=$b([[x,N],[E,M]]);return{position:[D+(I[0]*x+I[1]*N)-I[0],_+(I[0]*E+I[1]*M)-I[1]],scale:z,rotation:B,shear:U,pivot:I}}S.decompose=O;function P(T,I,x,E,N=[0,0]){let[M,D]=T,[_,B]=E,[z,U,R,W]=Yb({rotation:x,scale:I,shear:N}),j=M-(_*z+B*R)+_,F=D-(_*U+B*W)+B;return S.create(z,U,R,W,j,F)}S.compose=P})(He||(He={}));var mI=Math.PI/180,nZ=180/Math.PI;function Xb(n,r,e,t,o,i){let a=n-e,s=r-t;return a*a/(o*o)+s*s/(i*i)<=1}function Kb(n){return n*mI}function rh(n){return{all:n=n||new Map,on:function(r,e){var t=n.get(r);t?t.push(e):n.set(r,[e])},off:function(r,e){var t=n.get(r);t&&(e?t.splice(t.indexOf(e)>>>0,1):n.set(r,[]))},emit:function(r,e){var t=n.get(r);t&&t.slice().map(function(o){o(e)}),(t=n.get("*"))&&t.slice().map(function(o){o(r,e)})}}}var sn=class{constructor(r,e,t){this.uuid=r;this.data=e;this.localMatrix=He.identity();this.worldMatrix=He.identity();this.ignoreCameraZoom=!1;this.visible=!0;this._singleBBox=new kn;this._recursiveBBox=new kn;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=rh();this.dpr=t.dpr??1,this.dataPatched=e}project(r,e){let t=this.worldMatrix;return e&&(t=He.append(e.worldMatrix,t)),He.applyInverse(r,t)}intersects(r,e,t,o=!1){return this.visible&&!this.data.raycastLock&&this.intersectsInLocalSpace(...this.project([r,e],t),o)}intersectsInLocalSpace(r,e,t=!1){let{min:o,max:i}=t?this.recursiveBBox:this.singleBBox;return r>=o[0]&&r<=i[0]&&e>=o[1]&&e<=i[1]}applyTransforms(r){r.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=He.compose(this.position,this.scale,Kb(this.rotation),Yo.getPivot(this.dataPatched),this.shear)}updateWorldMatrix(r,e,t){let o=this.parent;e&&o!==null&&o!==void 0&&o.updateWorldMatrix(r,!0,!1),r&&this.updateLocalMatrix(),this.parent?this.worldMatrix=He.append(this.parent.worldMatrix,this.localMatrix):this.worldMatrix=He.copy(this.localMatrix),this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0}get pivot(){return Yo.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(r=>{r.resetBBoxNeedsUpdateSelf()})}updateTransformState(r){let e=!1;r.position!==void 0&&(e=!0,this.position=r.position),r.rotation!==void 0&&(e=!0,this.rotation=r.rotation),r.scale!==void 0&&(e=!0,this.scale=r.scale),r.shear!==void 0&&(e=!0,this.shear=r.shear),e&&(this.updateWorldMatrix(!0,!1,!0),this.resetBBoxNeedsUpdate())}updateByOp(r,e,t){r.type===0&&r.props.visible!==void 0&&(this.visible=r.props.visible),this.data=e,this.data=e;let o=r,i=Ge(r.path,["states","*"]);if(i!==null){if(r.type===0){let[a]=i;if(this?.stateSelection===a){let s={...r.props};if(delete s.name,Object.values(r.props).some(l=>l===void 0)){let l=this.data;if(l!==void 0){let c=yt.zoom(l,r.path.slice(2));if(c)for(let u in r.props)r.props[u]===void 0&&u in c&&(s[u]=c[u])}}o={...r,props:s,path:r.path.slice(2)}}}}else if(r.type===0){let a=this.stateSelection?this.data.states.data(this.stateSelection):void 0;if(a!==void 0){if(r.props.name!==void 0&&a.name){let{name:l,...c}=a;a=c}let s=yt.removeOverridden(r.path,r.props,a);o={...r,props:s}}}this.updateByPatchedOpBase(o,ci.patch(this.data,this.stateSelection?this.data.states.data(this.stateSelection):void 0),t)}changeSelectedState(r,e,t=!1){if(!(this.data.states.length===0&&!t)){for(let o of this.data.states)ci.toOps(this.data,o.data).forEach(a=>{let s=aa.replaceProps(a,this.data);this.dataPatched=this.data,this.updateByPatchedOp(s,this.data,e)});if(r!==null){let o=this.data.states.data(r);o&&(this.dataPatched=ci.patch(this.data,o),ci.toOps(this.data,o).forEach(a=>{this.updateByPatchedOp(a,this.dataPatched,e)}))}t&&this.updateTransformState(this.dataPatched),this.stateSelection=r}}updateState(r,e){r.name!==void 0&&(this.name=r.name),r.visible!==void 0&&(this.visible=r.visible),this.updateTransformState(r)}updateByPatchedOpBase(r,e,t){this.dataPatched=e,this.updateByPatchedOp(r,e,t)}updateByPatchedOp(r,e,t){r.path.length===0&&r.type===0&&this.updateState(r.props,t),this.requestRender()}traverseFrameAncestors(r){this.traverseAncestors(e=>{e.data.type==="frame2d"&&r(e)})}traverseAncestors(r){let e=this.parent;for(;e;)r(e),e=e.parent}requestRender(){this.traverseFrameAncestors(r=>{r.requestRender()})}clone(r){let e=new sn(this.uuid,this.data,r);return e.parent=void 0,e}addEventListener(r,e){this.emitter.on(r,e)}removeEventListener(r,e){this.emitter.off(r,e)}dispatchEvent(r){this.emitter.emit(r.type,{...r,target:r.target??this})}traverseSortNextHelper(){let r=this.parent;if(r){let e=r.children;if(e){let t=e.indexOf(this)+1;return e[t]?e[t]:r.traverseSortNextHelper()}}}sortNext(){let r=this.children;return r&&r.length>0&&r[0]?r[0]:this.traverseSortNextHelper()}isDescendantOf(r){r instanceof sn&&(r=r.uuid);let e=this;for(;e.parent;){if(e.parent.uuid===r)return!0;e=e.parent}return!1}};var ir=class extends sn{constructor(e,t,o){super(e,t,o);this.uuid=e;this.data=t;this.context=o;this.children=[]}add(e){e.parent&&e.parent instanceof ir&&e.parent.remove(e),this.children.push(e),e.parent=this}remove(e){let t=this.children.indexOf(e);t>=0&&(this.children.splice(t,1),e.parent=void 0)}traverse(e){let t=e(this);if(t!==!0)for(let o of this.children)o instanceof ir?o.traverse(e):t=e(o)}intersectsChildren(e,t,o,i=!1,a=[],s=!1){for(let l of this.children){let c=l instanceof fr;if(l instanceof ir&&!c&&s&&l.intersectsChildren(e,t,o,i,a,!1),l.intersects(e,t,o,c)&&(a.push(l),i))break}return a}updateWorldMatrix(e,t,o){if(super.updateWorldMatrix(e,t,o),o&&this.children)for(let i of this.children)i.updateWorldMatrix(e,!1,!0)}find(e){let t;return this.traverse(o=>{o.uuid===e&&(t=o)}),t}innerDrawChildren(e){for(let t=this.children.length-1;t>=0;t--)this.children[t].draw(e)}resetBBoxNeedsUpdate(){super.resetBBoxNeedsUpdate(),this.traverse(e=>{e.resetBBoxNeedsUpdateSelf()})}clone(e){let t=new ir(this.uuid,this.data,e);t.parent=void 0;for(let o of this.children)t.add(o.clone(e));return t}},fr=class extends ir{constructor(e,t,o){super(e,t,o);this.uuid=e;this.data=t;this.updateState(t,o)}draw(e){!this.visible||(e.save(),this.applyTransforms(e),this.innerDrawChildren(e),e.restore())}clone(e){let t=new fr(this.uuid,this.data,e);t.parent=void 0;for(let o of this.children)t.add(o.clone(e));return t}};function yI(n,r){let[[e,t],[o,i]]=n,[[a,s],[l,c]]=r,u=(e-o)*(s-c)-(t-i)*(a-l);if(u===0)return!1;let p=((e-a)*(s-c)-(t-s)*(a-l))/u,d=-((e-o)*(t-s)-(t-i)*(e-a))/u;return p>=0&&p<=1&&d>=0&&d<=1}var Zb=[[-1,1],[-1,-1],[1,-1],[1,1]],Qb=(n,r,e)=>{let t=n.getCenter(),o=n.getHalfSize(),i=He.append(r,n.worldMatrix);o[0]===0&&o[1]===0?e.push(He.apply(t,i)):Zb.forEach(a=>{let s=[a[0]*o[0]+t[0],a[1]*o[1]+t[1]];e.push(He.apply(s,i))})},kn=class{constructor(){this.matrix=He.identity();this.min=[1/0,1/0];this.max=[-1/0,-1/0];this.vertices=[];this.edges=[]}setFromObjectSize(r,e=!1){r.updateWorldMatrix(),this.makeEmpty(),He.copy(r.worldMatrix,this.matrix);let t=He.invert(r.worldMatrix);this.expandByObjectSize(r,t,e)}expandByObjectSize(r,e,t=!1){let o=[];t===!0&&r instanceof ir?r.traverse(i=>{i.visible&&Qb(i,e,o)}):Qb(r,e,o),this.setFromPoints(o)}getCenter(){let[r,e]=this.min,[t,o]=this.getHalfSize();return He.apply([r+t,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(r){this.makeEmpty();for(let e of r)this.expandByPoint(e)}expandByPoint(r){this.min=[Math.min(this.min[0],r[0]),Math.min(this.min[1],r[1])],this.max=[Math.max(this.max[0],r[0]),Math.max(this.max[1],r[1])]}computeVertices(){let[r,e]=this.getHalfSize(),t=this.getCenter(),[o,i,a,s]=He.getAbcdef(this.matrix),l=He.create(o,i,a,s,t[0],t[1]);this.vertices=Zb.map(([c,u])=>He.apply([c*r,u*e],l))}computeEdges(){this.edges=[];for(let r=0,e=this.vertices.length;r<e;++r)this.edges.push([this.vertices[r],this.vertices[(r+1)%e]])}project(r,e){let t=this.matrix;return e&&(t=He.append(e.worldMatrix,t)),He.applyInverse(r,t)}intersects(r,e,t){return this.intersectsInLocalSpace(...this.project([r,e],t))}intersectsInLocalSpace(r,e){let{min:t,max:o}=this;return r>=t[0]&&r<=o[0]&&e>=t[1]&&e<=o[1]}containsPoint(r){let[e,t]=r,[o,i]=this.min,[a,s]=this.max;return e>=o&&e<=a&&t>=i&&t<=s}intersectsBBox2D(r){for(let e=0,t=this.edges.length;e<t;e++){let o=this.edges[e];for(let i=0,a=r.edges.length;i<a;i++){let s=r.edges[i];if(yI(o,s))return!0}}for(let e=0,t=r.vertices.length;e<t;e++){let o=r.vertices[e];if(this.containsPoint(o))return!0}return!1}ensureMinMax(){let r=this.min,e=this.max;this.min=[Math.min(r[0],e[0]),Math.min(r[1],e[1])],this.max=[Math.max(r[0],e[0]),Math.max(r[1],e[1])]}copy(r){this.min=[...r.min],this.max=[...r.max],He.copy(r.matrix,this.matrix),this.computeVertices(),this.computeEdges()}clone(){let r=new kn;return r.copy(this),r}};var ev,tv=new Promise(n=>{ev=n}),Jb=!1;var pd;function rv(){if(Jb)return;if(pd)return pd;async function n(){let e=await import("./ui.js");ev(e.default??e),Jb=!0}return pd=n(),pd}function iv(n){let r=!1;return n.scene.objects.traverse((e,t)=>{(t.type==="Mesh"&&t.geometry.type==="UIGeometry"||t.type==="Page"&&t.uiFrame!==void 0)&&(r=!0)}),r}var Ae,oh;async function gI(n){let r=await tv;Ae||(oh||(oh=r({locateFile:()=>n})),Ae=await oh)}var ov=He.identity(),Hl=class{constructor(r,e=1){this.canvas=r;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=_e.transparent;this._innerShadowBlur=0;this._innerShadowOffsetX=0;this._innerShadowOffsetY=0;this._innerShadowSpread=0;this._innerShadowColor=_e.transparent;this._fonts=new Map;this._isSizeDirty=!1;try{let t=r.getBoundingClientRect();r.width=t.width*e,r.height=t.height*e}catch{console.log(r.width,e)}this._currentM3Transform=ov,this._currentTransform=new Float32Array(ov)}get dpr(){return this._dpr}set dpr(r){this._dpr=r,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 gI(this.wasmURL),this._surface=Ae.MakeWebGLCanvasSurface(this.canvas),this.ctx=this._surface?.getCanvas(),this._paint=new Ae.Paint,this._paint.setAntiAlias(!0),this._paintFill=this._paint.copy(),this._paintFill.setStyle(Ae.PaintStyle.Fill),this._paintStroke=this._paint.copy(),this._paintStroke.setStyle(Ae.PaintStyle.Stroke),this.ctx?.scale(this.dpr,this.dpr)}get currentTransform(){return this._currentM3Transform}get currentTransformBuffer(){return this._currentTransform}set currentTransform(r){this._currentM3Transform=r,this._currentTransform.set(r)}async loadFont(r,e){let t=await(await fetch(r)).arrayBuffer();this.registerFont(t,e)}registerFont(r,e){if(this._fonts.has(e))return;let t=Ae.FontMgr.FromData(r);if(t)this._fonts.set(e,t);else throw new Error("Invalid font data for "+e)}get width(){return this._width}get height(){return this._height}set strokeColor(r){this._paintStroke&&this._paintStroke.setColor(fd(r),Ae.ColorSpace.DISPLAY_P3)}set fillColor(r){this._paintFill&&this._paintFill.setColor(fd(r),Ae.ColorSpace.DISPLAY_P3)}set lineWidth(r){this._paintStroke&&this._paintStroke.setStrokeWidth(this._strokeMode==="center"?r:r*2)}set strokeMode(r){this._strokeMode=r}set dropShadowBlur(r){this._dropShadowBlur=r}set dropShadowColor(r){this._dropShadowColor=r}set dropShadowOffsetX(r){this._dropShadowOffsetX=r}set dropShadowOffsetY(r){this._dropShadowOffsetY=r}set innerShadowBlur(r){this._innerShadowBlur=r}set innerShadowColor(r){this._innerShadowColor=r}set innerShadowOffsetX(r){this._innerShadowOffsetX=r}set innerShadowOffsetY(r){this._innerShadowOffsetY=r}set innerShadowSpread(r){this._innerShadowSpread=r}set layerBlur(r){this._layerBlur=r}set backgroundBlur(r){this._backgroundBlur=r}clear(){this.ctx?.clear(Ae.TRANSPARENT)}save(){this.ctx?.save()}restore(){this.ctx?.restore()}beginPath(){this._currentPath?.delete(),this._currentPath=new Ae.Path}closePath(){let r=this._currentPath;if(r){if(r.isEmpty())return;let e=r.getBounds();(e[3]-e[1]||e[2]-e[0])&&r.close()}}fill(){this._paintInner(this._paintFill,!0)}stroke(){this._paintInner(this._paintStroke,!1)}clipRect(r,e,t,o,i=0,a=0,s=0,l=0){let c=Ae.XYWHRect(r,e,t,o);if(i===0&&a===0&&l===0&&s===0)this.ctx?.clipRect(c,Ae.ClipOp.Intersect,!0);else{let u=Ae.RRectXY(c,i,i);u[4]=u[5]=i,u[6]=u[7]=a,u[8]=u[9]=s,u[10]=u[11]=l,this.ctx?.clipRRect(u,Ae.ClipOp.Intersect,!0)}}_applyShadowOffsetMatrix(){if(this.ctx){let r=He.invert(this.currentTransform);this.ctx.concat(r);let e=He.translate(He.identity(),this._dropShadowOffsetX,this._dropShadowOffsetY);this.ctx.concat(e),this.ctx.concat(this._currentTransform)}}_applyEffectsToPaint(r,e,t=!0){if(this.ctx&&this._currentPath){let o,i=!1;if(t&&this._hasDropShadow()){let a=r.copy();a.setColor(fd(this._dropShadowColor));let s;this._dropShadowBlur>0&&(s=Ae.MaskFilter.MakeBlur(Ae.BlurStyle.Normal,this._dropShadowBlur*this.dpr*(this.camera?.scale??1),!1),a.setMaskFilter(s)),this.ctx.save(),this.ctx.clipPath(this._currentPath,Ae.ClipOp.Difference,!0),this._applyShadowOffsetMatrix(),e(a),this.ctx.restore(),a.delete(),s?.delete()}if(this._backgroundBlur>0&&t){this.ctx.save(),this.ctx.clipPath(this._currentPath,Ae.ClipOp.Intersect,!0);let a=Ae.ImageFilter.MakeBlur(this._backgroundBlur,this._backgroundBlur,Ae.TileMode.Clamp,null),s=r.copy();s.setImageFilter(a),s.setAlphaf(1);let l=this._currentPath.computeTightBounds();this.ctx.saveLayer(s,l,null,Ae.SaveLayerInitWithPrevious),this.ctx.drawColor(r.getColor()),this.ctx.restore(),this.ctx.restore(),s.delete(),a.delete(),i=!0}if(this._layerBlur>0){let a=r.copy();o=Ae.MaskFilter.MakeBlur(Ae.BlurStyle.Normal,this._layerBlur*this.dpr*(this.camera?.scale??1),!1),a.setMaskFilter(o),e(a),a.delete(),o.delete(),i=!0}if(i||e(r),t&&this._hasInnerShadow()){let a=new Ae.Paint;a.setAntiAlias(!0),a.setStyle(Ae.PaintStyle.Fill),a.setColor(fd(this._innerShadowColor));let s;this._innerShadowBlur>0&&(s=Ae.MaskFilter.MakeBlur(Ae.BlurStyle.Normal,this._innerShadowBlur*this.dpr*(this.camera?.scale??1),!1),a.setMaskFilter(s));let l=this._currentPath.computeTightBounds(),[c,u,p,d]=l,h=p-c,f=d-u;this.ctx.save(),this.ctx.clipPath(this._currentPath,Ae.ClipOp.Intersect,!0),this.ctx.saveLayer(a,l,null,Ae.SaveLayerInitWithPrevious),this.ctx?.translate(this._innerShadowOffsetX,this._innerShadowOffsetY),this.ctx.drawRect(Ae.XYWHRect(-1e3-this._innerShadowOffsetX,-1e3-this._innerShadowOffsetY,2e3+h+Math.abs(this._innerShadowOffsetX*2),2e3+f+Math.abs(this._innerShadowOffsetY*2)),a),a.setBlendMode(Ae.BlendMode.Clear),this.ctx.drawPath(this._currentPath,a),this.ctx.restore(),this.ctx.restore(),a.delete(),s?.delete()}}}_paintInner(r,e=!0){if(this.ctx&&this._currentPath&&r){let t=this.ctx,o=this._currentPath;this._applyEffectsToPaint(r,i=>{let a=!1;!e&&this._strokeMode!=="center"&&(t.save(),t.clipPath(o,this._strokeMode==="outside"?Ae.ClipOp.Difference:Ae.ClipOp.Intersect,!0),a=!0),t.drawPath(o,i),a&&t.restore()},e)}}_hasDropShadow(){return this._dropShadowColor?.a>0}_hasInnerShadow(){return this._innerShadowColor?.a>0}path(r){this._currentPath?.addPath(Ae.Path.MakeFromSVGString(r))}ellipse(r,e,t,o,i,a,s,l){if(!nv([r,e,t,o])||!this._currentPath)return;if(t<0||o<0)throw Error("radii cannot be negative");let c=Ae.XYWHRect(r-t,e-o,t*2,o*2);this._currentPath?.addOval(c)}rect(r,e,t,o,i=0,a=0,s=0,l=0){let c=Ae.XYWHRect(r,e,t,o);if(!!nv(c))if(i===0&&a===0&&l===0&&s===0)this._currentPath?.addRect(c);else{let u=Ae.RRectXY(c,i,i);u[4]=u[5]=i,u[6]=u[7]=a,u[8]=u[9]=s,u[10]=u[11]=l,this._currentPath?.addRRect(u)}}getHorizontalAlign(r){switch(r){case 2:return Ae.TextAlign.Right;case 3:return Ae.TextAlign.Center;case 4:return Ae.TextAlign.Justify;case 1:default:return Ae.TextAlign.Left}}drawTextInner(r,e,t,[o,i,a,s],l,c,u=!0){let p=0,{ctx:d}=this;if(!d)return p;let h=c.copy(),f=c.copy();return f.setAlphaf(0),this._applyEffectsToPaint(h,m=>{e.pushPaintStyle(t,m,f),e.addText(r);let y=e.build();y.layout(a);let g=i;l===2?g+=(s-y.getHeight())/2:l===3&&(g+=s-y.getHeight()),d.drawParagraph(y,o,g),p=y.getHeight(),e.reset(),y.delete()},u),h.delete(),f.delete(),p}drawText(r,e){let t=0,o=this._fonts.get(e.font),{ctx:i,_paintFill:a,_paintStroke:s}=this;if(o&&i){let l=new Ae.TextStyle({fontFamilies:[e.font],fontSize:e.fontSize,heightMultiplier:e.lineHeight,letterSpacing:e.letterSpacing}),c=new Ae.ParagraphStyle({textStyle:l,textAlign:this.getHorizontalAlign(e.horizontalAlign)}),u=Ae.XYWHRect(e.x,e.y,e.width,e.height),p=Ae.ParagraphBuilder.Make(c,o);a&&(t=this.drawTextInner(r,p,l,u,e.verticalAlign,a,!0)),s&&(t=this.drawTextInner(r,p,l,u,e.verticalAlign,s,!1)),p.delete()}return{height:t}}render(){this._surface?.flush()}moveTo(r,e){this._currentPath?.moveTo(r,e)}lineTo(r,e){this._currentPath?.lineTo(r,e)}bezierCurveTo(r,e,t,o,i,a){this._currentPath?.cubicTo(r,e,t,o,i,a)}quadraticCurveTo(r,e,t,o){this._currentPath?.quadTo(r,e,t,o)}setTransform(r,e=!1){if(!this.ctx)return;let t=this.ctx.getTotalMatrix(),o=He.invert(t);if(o&&this.ctx.concat(o),this.ctx?.scale(this.dpr,this.dpr),this.camera?.enabled&&(this.ctx?.concat(this.camera.worldMatrix),e)){let i=He.getScale(this.camera.worldMatrix);this.ctx?.scale(1/i[0],1/i[1])}this.ctx?.concat(r),this.currentTransform=r}transform(r){this.ctx?.concat(r)}setSize(r,e){!this._isSizeDirty&&r===this._width&&e===this._height||(this._isSizeDirty=!1,this._width=r,this._height=e,this.canvas.style.width=r+"px",this.canvas.style.height=e+"px",this.canvas.width=r*this.dpr,this.canvas.height=e*this.dpr,this._surface&&(this._surface=Ae.MakeWebGLCanvasSurface(this.canvas),this.ctx=this._surface?.getCanvas()))}};function nv(n){for(let r=0;r<n.length;r++)if(n[r]!==void 0&&!Number.isFinite(n[r]))return!1;return!0}function fd({r:n,g:r,b:e,a:t}){return Ae.Color4f(n,r,e,t)}var Wl=class{constructor(r,e,t){this.uuid=r;this.data=e;this.enabled=!1;this.color=_e.transparent;this.blurRadius=0;this.offset=[0,0];this.spread=0;this.update(e)}update(r){r.color!==void 0&&(this.color=r.color),r.enabled!==void 0&&(this.enabled=r.enabled),r.blurRadius!==void 0&&(this.blurRadius=r.blurRadius),r.offset!==void 0&&(this.offset=r.offset),r.spread!==void 0&&(this.spread=r.spread)}};var ql=class{constructor(r,e,t){this.uuid=r;this.data=e;this.enabled=!1;this.radius=0;this.update(e)}update(r){r.enabled!==void 0&&(this.enabled=r.enabled),r.radius!==void 0&&(this.radius=r.radius)}};var hd=class{constructor(r,e,t){this.uuid=r;this.data=e;this.enabled=!1;this.color=_e.transparent;this.update(e)}update(r){r.enabled!==void 0&&(this.enabled=r.enabled),r.color!==void 0&&(this.color=r.color)}};var md=class{constructor(r,e,t){this.uuid=r;this.data=e;this.enabled=!1;this.color=_e.transparent;this.thickness=0;this.mode="inside";this.update(e)}update(r){r.enabled!==void 0&&(this.enabled=r.enabled),r.color!==void 0&&(this.color=r.color),r.thickness!==void 0&&(this.thickness=r.thickness),r.mode!==void 0&&(this.mode=r.mode)}};var Or=class extends sn{constructor(e,t,o){super(e,t,o);this.uuid=e;this.data=t;this.autoClose=!0;this.fill=new hd(e+"-fill",t.fill,o),this.stroke=new md(e+"-stroke",t.stroke,o),this.dropShadow=new Wl(e+"-dropShadow",t.dropShadow,o),this.innerShadow=new Wl(e+"-innerShadow",t.innerShadow,o),this.backgroundBlur=new ql(e+"-backgroundBlur",t.backgroundBlur,o),this.layerBlur=new ql(e+"-layerBlur",t.layerBlur,o)}applyFillStroke(e){e.fillColor=this.fill.enabled?this.fill.color:_e.transparent,e.strokeColor=this.stroke.enabled&&this.stroke.thickness>0?this.stroke.color:_e.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=_e.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=_e.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,t,o){super.updateByPatchedOp(e,t,o),e.type===0&&(Ge(e.path,["fill"])?this.fill.update(e.props):Ge(e.path,["stroke"])?this.stroke.update(e.props):Ge(e.path,["dropShadow"])?this.dropShadow.update(e.props):Ge(e.path,["innerShadow"])?this.innerShadow.update(e.props):Ge(e.path,["layerBlur"])?this.layerBlur.update(e.props):Ge(e.path,["backgroundBlur"])?this.backgroundBlur.update(e.props):this.resetBBoxNeedsUpdate())}updateState(e,t){super.updateState(e,t),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 t=new Or(this.uuid,this.data,e);return t.parent=void 0,t}};var Hn=class extends Or{constructor(e,t,o){super(e,t,o);this.uuid=e;this.data=t;this.width=0;this.height=0;this.updateState(t,o)}innerDraw(e){e.ellipse(this.width*.5,this.height*.5,this.width*.5,this.height*.5,0,0,Math.PI*2)}intersectsInLocalSpace(e,t){return Xb(e,t,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 t=!1;e.width!==void 0&&(this.width=typeof e.width=="number"?e.width:this.width,t=!0),e.height!==void 0&&(this.height=typeof e.height=="number"?e.height:this.height,t=!0),t&&this.updateWorldMatrix(!0,!1,!0)}updateState(e,t){super.updateState(e,t),this.updateSizeState(e)}clone(e){let t=new Hn(this.uuid,this.data,e);return t.parent=void 0,t}};var Bo=class extends Or{constructor(e,t,o){super(e,t,o);this.uuid=e;this.data=t;this.width=0;this.height=0;this.cornerRadius=[0,0,0,0];this.updateState(t,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 t=!1;e.width!==void 0&&(this.width=typeof e.width=="number"?e.width:this.width,t=!0),e.height!==void 0&&(this.height=typeof e.height=="number"?e.height:this.height,t=!0),t&&this.updateWorldMatrix(!0,!1,!0)}updateState(e,t){super.updateState(e,t),this.updateSizeState(e),this.updateCornerState(e)}clone(e){let t=new Bo(this.uuid,this.data,e);return t.parent=void 0,t}};var Wn=class extends Or{constructor(e,t,o){super(e,t,o);this.uuid=e;this.data=t;this._textHeight=0;this._textHeightDirty=!0;this.width=0;this.height=0;this.updateState(t,o)}get textHeight(){return this._textHeight}applyFillStroke(e){e.fillColor=this.fill.enabled?this.fill.color:_e.transparent,e.strokeColor=this.stroke.enabled&&this.stroke.thickness>0?this.stroke.color:_e.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 t=this.data.textTransform,o=this.data.text.textValue.toString(),i=t===2?o.toUpperCase():t===3?o.toLowerCase():o,{height:a}=e.drawText(i,{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 t=!1;e.width!==void 0&&(this.width=typeof e.width=="number"?e.width:this.width,t=!0),e.height!==void 0&&(this.height=typeof e.height=="number"?e.height:this.height,t=!0),t&&this.updateWorldMatrix(!0,!1,!0)}updateFontState(e,{shared:t}){e.font!==void 0&&(this._fontHolder=t.getFont(e.font),this._fontHolder&&!this._fontHolder.isLoaded&&this._fontHolder.loadingPromise.then(()=>{this.requestRender()}))}updateState(e,t){super.updateState(e,t),this.updateSizeState(e),this.updateFontState(e,t)}clone(e){let t=new Wn(this.uuid,this.data,e);return t.parent=void 0,t}};var Ds=class extends Or{constructor(e,t,o){super(e,t,o);this.uuid=e;this.data=t;this.curves=[];this.extremasBBox={min:[0,0],max:[0,0]};this.updateState(t,o)}computeExtremas(){this.curves.length===0&&this.computeCurves();let e=this.curves.map(i=>yd.extremas(i)),t=[1/0,1/0],o=[-1/0,-1/0];for(let i=0,a=e.length;i<a;i++){let s=e[i];s[0][0]<t[0]&&(t[0]=s[0][0]),s[0][1]<t[1]&&(t[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=[t[0],t[1]],this.extremasBBox.max=[o[0],o[1]],this.extremasBBox}computeCurves(){this.curves=[];for(let o=1,i=this.data.points.length;o<i;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,t=this.data.points[this.data.points.length-1].data;if(this.data.isClosed){let o={start:t.position,cp1:t.controlNext.position,cp2:e.controlPrevious.position,end:e.position};this.curves.push(o)}}getCenter(){let[e,t]=this.extremasBBox.min,[o,i]=this.getHalfSize();return[e+o,t+i]}getHalfSize(){let{min:e,max:t}=this.extremasBBox;return[(t[0]-e[0])*.5,(t[1]-e[1])*.5]}innerDraw(e){for(let i=0,a=this.data.points.length;i<a;i++){let s=this.data.points[i].data;if(i===0){let[l,c]=s.position;e.moveTo(l,c)}else{let l=this.data.points[i-1].data,[c,u]=l.controlNext.position,[p,d]=s.controlPrevious.position,[h,f]=s.position,m={start:l.position,cp1:l.controlNext.position,cp2:s.controlPrevious.position,end:s.position};yd.derive(m),e.bezierCurveTo(c,u,p,d,h,f)}}let t=this.data.points[0].data,o=this.data.points[this.data.points.length-1].data;if(this.data.isClosed){let[i,a]=o.controlNext.position,[s,l]=t.controlPrevious.position,[c,u]=t.position;e.bezierCurveTo(i,a,s,l,c,u)}}updateState(e,t){super.updateState(e,t),this.computeExtremas()}clone(e){let t=new Ds(this.uuid,this.data,e);return t.parent=void 0,t}},yd;(i=>{function n(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])],h=[3*(u[0]-c[0]),3*(u[1]-c[1])],f={start:p,cp:d,end:h};return a.derivative=f,f.derivative=nh.derive(f),f}i.derive=n;function r(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,h=-(p+d)/u,f=-(-p+d)/u;return[h,f]}else if(s!==l&&u===0)return[(2*s-l)/(2*(s-l))];return[]}function e(a){let s=a.derivative??i.derive(a),l=s.start,c=s.cp,u=s.end;return[r(l[0],c[0],u[0]),r(l[1],c[1],u[1])]}i.droot=e;function t(a){let[s,l]=i.droot(a),c=[a.start[0],a.end[0]],u=[a.start[1],a.end[1]];for(let p of s)c.push(i.compute(a,Math.min(1,Math.max(0,p)))[0]);for(let p of l)u.push(i.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]]]}i.extremas=t;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,h=l*u*3,f=s*u;return[p*a.start[0]+d*a.cp1[0]+h*a.cp2[0]+f*a.end[0],p*a.start[1]+d*a.cp1[1]+h*a.cp2[1]+f*a.end[1]]}i.compute=o})(yd||(yd={}));var nh;(t=>{function n(o){let i=o.start,a=o.cp,s=o.end,l=[2*(a[0]-i[0]),2*(a[1]-i[1])],c=[2*(s[0]-a[0]),2*(s[1]-a[1])],u={start:l,end:c};return u.derivative=ih.derive(u),o.derivative=u,u}t.derive=n;function r(o){let i=o.derivative??t.derive(o),a=i.start,s=i.end;return[a[0]!==s[0]?a[0]/(a[0]-s[0]):0,a[1]!==s[1]?a[1]/(a[1]-s[1]):0]}t.droot=r;function e(o,i){if(i===0)return[...o.start];if(i===1)return[...o.end];let a=1-i,s=a*a,l=i*i,c=s,u=a*i*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]]}t.compute=e})(nh||(nh={}));var ih;(e=>{function n(t){let o=t.start,i=t.end,a=[i[0]-o[0],i[1]-o[1]];return t.derivative=a,t.derivative}e.derive=n;function r(t,o){if(o===0)return[...t.start];if(o===1)return[...t.end];let i=t.start,a=t.end;return[i[0]+(a[0]-i[0])*o,i[1]+(a[1]-i[1])*o]}e.compute=r})(ih||(ih={}));var _r=class extends ir{constructor(e,t,o){super(e,t,o);this.uuid=e;this.width=0;this.height=0;this.clipped=!0;this.background=new Bo(e+"-background",wa.defaultData,o),this.background.parent=this,this.updateState(t,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,t,o){super.updateWorldMatrix(e,t,o),this.background?.updateWorldMatrix(e,t,o)}draw(e){if(!this.visible)return;e.save();let t=this.width,o=this.height;this.applyTransforms(e),this.background.width=t,this.background.height=o,this.background.draw(e),this.clipped&&e.clipRect(0,0,t,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 t=!1;e.width!==void 0&&(this.width=typeof e.width=="number"?e.width:this.width,t=!0),e.height!==void 0&&(this.height=typeof e.height=="number"?e.height:this.height,t=!0),t&&this.updateWorldMatrix(!0,!1,!0)}updateState(e,t){super.updateState(e,t),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,t,o){super.updateByPatchedOp(e,t,o),e.type===0&&(Ge(e.path,["fill"])?this.fill.update(e.props):Ge(e.path,["stroke"])?this.stroke.update(e.props):Ge(e.path,["dropShadow"])?this.dropShadow.update(e.props):Ge(e.path,["innerShadow"])?this.innerShadow.update(e.props):Ge(e.path,["layerBlur"])?this.layerBlur.update(e.props):Ge(e.path,["backgroundBlur"])?this.backgroundBlur.update(e.props):this.resetBBoxNeedsUpdate())}clone(e){let t=new _r(this.uuid,this.data,e);t.parent=void 0;for(let o of this.children)t.add(o.clone(e));return t}};var cv=_i(ah(),1),ln=class extends Or{constructor(e,t,o){super(e,t,o);this.uuid=e;this.data=t;this._pathBBox=new DOMRect;this.path="";this.updateState(t,o),this.autoClose=!1,this.computeSVGBBox()}computeSVGBBox(){let e=document.createElementNS("http://www.w3.org/2000/svg","svg"),t=document.createElementNS("http://www.w3.org/2000/svg","path");document.body.appendChild(e),t.setAttribute("d",this.path),e.appendChild(t),this._pathBBox=t.getBBox(),e.remove()}innerDraw(e){e.path(this.path)}intersectsInLocalSpace(e,t){return e>=this._pathBBox.x&&e<=this._pathBBox.x+this._pathBBox.width&&t>=this._pathBBox.y&&t<=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,t){super.updateState(e,t),e.path!==void 0&&(this.path=e.path,this.computeSVGBBox())}clone(e){let t=new ln(this.uuid,this.data,e);return t.parent=void 0,t}};function uv(n,r=1,e=1){if(r<=0||e<=0)return n;let o=(0,cv.parseSVG)(n).map(i=>{let a={...i};return"x"in a&&(a.x=a.x*r),"y"in a&&(a.y=a.y*e),"x1"in a&&(a.x1=a.x1*r),"x2"in a&&(a.x2=a.x2*r),"y1"in a&&(a.y1=a.y1*e),"y2"in a&&(a.y2=a.y2*e),"rx"in a&&(a.rx=a.rx*r),"ry"in a&&(a.ry=a.ry*e),a});return dv(o)}function dv(n){let r=["rx","ry","xAxisRotation","largeArc","sweep","x1","y1","x2","y2","x","y"],e;return n.map(t=>{let o=[];r.forEach(a=>{if(a in t){let s=t[a]*1;o.length&&s>=0&&o.push(","),o.push(s)}});let i=(e===t.code?o[0]<0?"":",":t.code)+o.join("");return e=t.code,i}).join("")}function pv(n,r,e){switch(r.type){case"ellipse2d":return new Hn(n,r,e);case"rectangle2d":return new Bo(n,r,e);case"text2d":return new Wn(n,r,e);case"vector2d":return new Ds(n,r,e);case"path2d":return new ln(n,r,e);case"frame2d":return new _r(n,r,e);case"group2d":default:return new fr(n,r,e)}}var sh=class{constructor(r,e,t){this.uuid=r;this.data=e;this.group=new fr(sh.GROUP_ID,{...rl.defaultData},t),this.createChildrenObjects(e.objects,this.group,t)}createObject(r,e,t,o,i,a){let s=pv(r,e,a);s&&(o.add(s),o.children.splice(i,0,o.children.pop()),s.updateWorldMatrix(),t.length>0&&(s instanceof fr||s instanceof _r)&&this.createChildrenObjects(t,s,a))}createChildrenObjects(r,e,t){let o=0;for(let i of r)this.createObject(i.id,i.data,i.children,e,o,t),o+=1}draw(r){this.group.draw(r)}updateEntityByOp(r,e,t,o){let i=this.find(r);if(i)try{i.updateByOp(e,t,{shared:o})}catch(a){console.error(a)}}updateTreeByOp(r,e){if(r.path.length===0&&r.type===7){let t=r.parent===null?this.group:this.find(r.parent);t!==void 0&&t instanceof ir&&(this.createObject(r.id,r.data,r.children,t,r.localIndex,e),t.requestRender())}else if(r.path.length===0&&r.type===8){let t=this.find(r.id);if(t!==void 0&&t.parent!==void 0&&t.parent instanceof ir){let o=t.parent;t.resetBBoxNeedsUpdate(),o?.remove(t),o?.requestRender()}}else if(r.path.length===0&&r.type===9){let t=this.find(r.id);if(t!==void 0){let o=t.parent,i=r.parent===null?this:this.find(r.parent);if(i===void 0&&!1&&console.error("unexpected",i,r),i instanceof ir||i===this){i.add(t);let a=r.localIndex;i.children.splice(a,0,i.children.pop()),t.updateWorldMatrix(!0,!1,!0),o?.requestRender(),t.requestRender()}t.resetBBoxNeedsUpdate()}}}add(r){this.group.add(r)}remove(r){this.group.remove(r)}traverse(r){this.group.traverse(e=>{e!==this.group&&r(e)})}intersectsChildren(r,e,t,o=!1,i=[]){return this.group.intersectsChildren(r,e,t,o,i,!0)}find(r){return this.group.find(r)}get children(){return this.group.children}project(r,e){return this.group.project(r,e)}getWithSortKey(r){let e=this.find(r);if(e===void 0)return;let t=[],o=e;for(;o!==this.group;){let i=o;o=o.parent;let a=o.children.indexOf(i);t.splice(0,0,a)}return{entity:e,sortKey:t}}getAllSorted(r){let e=[];for(let t of r){let o=this.getWithSortKey(t.id);o!==void 0&&e.push(o)}return e.sort((t,o)=>oc(t.sortKey,o.sortKey)),e.map(t=>t.entity)}},Ti=sh;Ti.GROUP_ID="scene2d";function lh({constraints:n,newParentWidth:r,newParentHeight:e,initialParentWidth:t,initialParentHeight:o,objectInitialWidth:i,objectInitialHeight:a,objectInitialPosition:s}){let{horizontalConstraint:l,verticalConstraint:c}=n,u=r-t,p=e-o,d=i,h=a,f=s[0],m=s[1];if(l!==0){if(l===1)f+=u;else if(l===3)f+=u/2;else if(l===2)d=Math.max(1,d+u);else if(l===4){let y=r/t;d*=y,f*=y}}if(c!==0){if(c===1)m+=p;else if(c===3)m+=p/2;else if(c===2)h=Math.max(1,h+p);else if(c===4){let y=e/o;h*=y,m*=y}}return{width:d,height:h,position:[f,m]}}var SI=_i(ah(),1);var Bee={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}};var fv=require("three");var wI=He.identity(),Es=class{constructor(r,e,t,o){this.uuid=r;this.width=e;this.height=t;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.onFrameOverrideObjectEvent=r=>{if(r.target?.uuid!==void 0){let e=this.frameRoot?.find(r.target.uuid);e&&e.dispatchEvent({...r,target:e})}};this.scene2d=new Ti(fv.MathUtils.generateUUID(),hu.defaultData,{dpr:window.devicePixelRatio,shared:o.shared}),this.canvas=document.createElement("canvas"),this.renderer=new Hl(this.canvas),o.shared.addCanvas(this.uuid,this.canvas),this.textureHolder=o.shared.canvas(this.uuid),this.promise=this.init()}async init(){this.renderer instanceof Hl&&(this.renderer.wasmURL=Q0.skiaWasmUrl),await this.renderer.init()}render(){this.isFrameDirty&&(this.renderer.clear(),this.frameOverride?.draw(this.renderer),this.renderer.render(),this.textureHolder?.setNeedsUpdate(!0),this.isFrameDirty=!1)}updateEntity2DByOp(r,e,t,o){this.scene2d.updateEntityByOp(r,e,t,o),this.applySize()}updateTreeByOp(r,e){this.scene2d.updateTreeByOp(r,e),this.applySize()}applyOverrides(r){if(this.frameOverride&&this.frameRoot){this.frameOverride.position=[0,0],this.frameOverride.rotation=0;let e=r?.width??this.width,t=r?.height??this.height;this.frameOverride.width=e,this.frameOverride.height=t,this.frameOverride.localMatrix=wI,this.isScreenSpace&&(this.frameOverride.fill.color=_e.from0to1([0,0,0,0])),this.frameOverride.data={...this.frameOverride.data,width:e,height:t},hv({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(r,e=window.devicePixelRatio){let t=r?.width??this.width,o=r?.height??this.height;this.dpr=e,this.width=t,this.height=o,this.renderer.dpr=this.isScreenSpace?e:Math.floor(2048/Math.max(t,o)),this.renderer.setSize(t,o),this.textureHolder?.dispose(),this.applyOverrides(r),this.frameOverride?.requestRender()}applyFrame(r){let e=this.context.scene.find2D(r);if(!(!e||!(e instanceof _r)))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.textureHolder?.dispose(),this.frame?.addEventListener("render",this.onRenderRequestedDownstream),this.frameOverride.traverse(t=>{t.addEventListener("beginState",this.onFrameOverrideObjectEvent)}),this.frameOverride.traverse(t=>{t.addEventListener("completeState",this.onFrameOverrideObjectEvent)}),this.frame?.requestRender(),e}get frame(){return this.frameOverride}get frameId(){return this.frame?.uuid}find(r){return this.scene2d.find(r)}get texture(){return this.textureHolder?.getTexture(1001)}disposeFrameOverride(){this.frameOverride?.removeEventListener("render",this.onRenderRequestedDownstream),this.frameOverride?.traverse(r=>{r.removeEventListener("beginStateChange",this.onFrameOverrideObjectEvent)}),this.frameOverride?.traverse(r=>{r.removeEventListener("completeState",this.onFrameOverrideObjectEvent)}),this.frameOverride&&this.scene2d.remove(this.frameOverride)}};function hv({objectOverride:n,objectRoot:r,newParentWidth:e,newParentHeight:t,initialParentWidth:o,initialParentHeight:i}){if(n instanceof _r&&r instanceof _r||n instanceof fr&&r instanceof fr)for(let a=0,s=n.children.length;a<s;a++){let l=n.children[a],c=r.children[a];l&&c&&l.uuid===c.uuid&&OI({objectOverride:l,objectRoot:c,newParentWidth:e,newParentHeight:t,initialParentWidth:o,initialParentHeight:i})}}function PI(n){if(ch(n))return[n.width,n.height];if(n instanceof ln){let[r,e]=n.getHalfSize();return[r*2,e*2]}else if(n instanceof fr){let[r,e]=n.recursiveBBox.getHalfSize();return[r*2,e*2]}return[0,0]}function OI({objectOverride:n,objectRoot:r,newParentWidth:e,newParentHeight:t,initialParentWidth:o,initialParentHeight:i}){let[a,s]=PI(r),{width:l,height:c,position:u}=lh({constraints:n.data,newParentWidth:e,newParentHeight:t,initialParentWidth:o,initialParentHeight:i,objectInitialWidth:a,objectInitialHeight:s,objectInitialPosition:r.position});if(n.position=u,n.data={...n.data,position:u},n.states)for(let p in n.states)CI({stateId:p,objectOverride:n,objectRoot:r,newParentWidth:e,newParentHeight:t,initialParentWidth:o,initialParentHeight:i});if(ch(n)||n instanceof fr)ch(n)&&(n.width=l,n.height=c,n.data={...n.data,width:l,height:c}),hv({objectOverride:n,objectRoot:r,newParentWidth:l,newParentHeight:c,initialParentWidth:a,initialParentHeight:s});else if(n instanceof ln){let p=r,d=a!==0?l/a:1,h=s!==0?c/s:1;n.path=uv(p.path,d,h),n.data={...n.data,path:n.path}}}function CI({stateId:n,objectOverride:r,objectRoot:e,newParentWidth:t,newParentHeight:o,initialParentWidth:i,initialParentHeight:a}){let s=r.states?.[n],l=e.states?.[n];if(s&&l){let{width:c,height:u,position:p}=lh({constraints:r.data,newParentWidth:t,newParentHeight:o,initialParentWidth:i,initialParentHeight:a,objectInitialWidth:Yo.isResizeable(l)?l.width:0,objectInitialHeight:Yo.isResizeable(l)?l.height:0,objectInitialPosition:l.position});Object.assign(r.states[n],{position:p}),Yo.isResizeable(s)&&Object.assign(r.states[n],{width:c,height:u})}}function ch(n){return n instanceof Bo||n instanceof _r||n instanceof Hn||n instanceof Wn}var qr=class extends Aa(mv.Scene){constructor(e,t,o){super();this.data=t;this.bgColor=new Ft(1,1,1,1);this.fog=null;this.backupFog=new _s.Fog(16777215,.1,2e3);this.fogUseBGColor=!1;this.isActive=!1;this.aoColor=new _s.Color;this.penumbraSizeArrayCache=null;this.super_Entity(e,t),this.personalCamera=new an(Sn,{...si.defaultData,...t.camera,name:"Personal Camera"}),this.personalCamera.objectHelper.visible=!1,this.add(this.personalCamera),this.activeCamera=this.personalCamera,this.ambientLight=new _s.HemisphereLight(13882323,8553090,.75),this.ambientLight.name="Default Ambient Light",this.ambientLight.layers.enable(3),this.ambientLight.removeFromParent(),this.add(this.ambientLight),t.uiScene?this.uiScene=new Ti((Array.isArray(e)?e[0]:e)+"-ui",t.uiScene,{dpr:window.devicePixelRatio,shared:o.shared}):t.uiFrame&&this.createUICanvas(t.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,t){this.uiCanvas=new Es(this.uuid+"-uiscreen",window.innerWidth,window.innerHeight,t),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,t){e.color!==void 0&&(this.ambientLight.color=er(e.color,t)),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(t=>{t instanceof Pr&&t.recomputeBoolean()}),this.updateShadow(this.data.shadow)}forceMaterialsUpdate(){this.traverseEntity(e=>{if(e instanceof wr)if(Array.isArray(e.material))for(let t of e.material)t.needsUpdate=!0;else e.material.needsUpdate=!0,e.material.dispose()})}updateShadow(e){e.softShadowQuality!==void 0&&this.isActive&&jb(e.softShadowQuality)&&this.forceMaterialsUpdate()}updateFog(e,t){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=er(e.color,t),this.backupFog.near=e.near,this.backupFog.far=e.far}updateAo(e,t){e.aoColor!==void 0&&(this.aoColor=er(e.aoColor,t))}updateByOp(e,t,o,i){let a=this.data.uiFrame;super.updateByOp(e,t,o,i);let s=t;Ge(e.path,["fog"])?this.updateFog(s.fog,o.shared):Ge(e.path,["ao"])?this.updateAo(s.ao,o.shared):Ge(e.path,["ambient"])?this.updateAmbientLight(s.ambient,o.shared):Ge(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,t){e?(this.uiCanvas||this.createUICanvas(e,t),this.uiCanvas.enabled=!0,this.uiCanvas.applyFrame(e)):this.uiCanvas&&(this.uiCanvas.enabled=!1)}updateState(e,t){this.updateState_Entity(e,t),e.backgroundColor!==void 0&&this.setBackgroundColor(er(e.backgroundColor,t.shared)),e.fog!==void 0&&this.updateFog(e.fog,t.shared),e.ambient!==void 0&&this.updateAmbientLight(e.ambient,t.shared),e.ao!==void 0&&this.updateAo(e.ao,t.shared),e.shadow!==void 0&&this.updateShadow(e.shadow)}createFrame(e,t){}raycast(e,t){super.raycast(e,t)}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,t=0;this.traverseEntity(o=>{if(!o.visible)return!0;o instanceof Is&&o.visible&&e<3&&(this.penumbraSizeArrayCache[e]=o.data.penumbraSize,e+=1),o instanceof Ns&&o.visible&&e<5-3&&(this.penumbraSizeArrayCache[3+t]=o.data.penumbraSize,t+=1)})}raycastWithClones(e){let t=[],o=i=>{for(let a of i.children){let s=a.cloner;je.is(a)&&(a.visible||s?.object.data.visible)&&((Fn(a)||jl(a)&&this.scene.enableHelpers&&a.objectHelper.visible)&&(e.intersectObject(a,!1,t),$l(a,e,t,!0)),o(a))}};return o(this),t}updateEntity2DByOp(e,t,o,i){this.uiCanvas?.updateEntity2DByOp(e,t,o,i)}};var Cr=require("three");var xd=class extends Cs(Cr.PointLight,Ms){constructor(r,e,t){super(),this.super_Entity(r,e),this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1,this.layers.enable(3);let i=this.shadow.camera;i.fov=90,i.aspect=1,i.near=100,i.far=2500;let a=new Cr.Vector3(-i.far+this.position.x,-i.far+this.position.y,-i.far+this.position.z),s=new Cr.Vector3(i.far+this.position.x,i.far+this.position.y,i.far+this.position.z),l=new Cr.Box3(a,s),c=new Cr.Box3Helper(l,new Cr.Color(16755200));c.visible=!1,this.gizmos.shadowmap=c,this.update()}update(){if(this.shadow&&(this.shadow.camera.updateProjectionMatrix(),this.gizmos))for(let r in this.gizmos){let e=this.gizmos[r];if(e instanceof Cr.Box3Helper){let t=this.shadow.camera,o=new Cr.Vector3(-t.far+this.position.x,-t.far+this.position.y,-t.far+this.position.z),i=new Cr.Vector3(t.far+this.position.x,t.far+this.position.y,t.far+this.position.z);e.box.set(o,i),e.updateMatrixWorld(!0)}}}updateMatrixWorld(r){super.updateMatrixWorld(r),this.objectHelper&&this.objectHelper.update()}updateState(r,e){this.updateState_Light(r,e),r.distance!==void 0&&(this.distance=r.distance),r.decay!==void 0&&(this.decay=r.decay),r.shadowRadius!==void 0&&(this.shadow.radius=r.shadowRadius),r.shadowResolution!==void 0&&(this.shadow.mapSize.set(r.shadowResolution,r.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null))}};var bd=class extends St{get forceComputeSize(){return!0}get shape(){return this.geometry.userData.shape}updateEntityBoxSize(r,e){let t=this.geometry.getAttribute("position");t!==void 0?xl(t,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:t.count,r,e):super.updateEntityBoxSize(r,e)}};var Bs=class extends St{constructor(e,t,o){super(e,t,o);this._shapeId=null;this._context=o}updateState(e,t){super.updateState(e,t),this.updateShape()}updateShape(){let e={...this.data.geometry.extrusion.shape};for(let i in e)typeof e[i]=="string"&&(e[i]=this._context.shared.getVariable(e[i],[this.uuid,"geometry","extrusion","shape",i]));let t;if(e.type==="Custom"){let i=e.shapeId;if(i!==this._shapeId&&this.detachShape(),i){this._shapeId=i;let a=this._context.scene.find(i);a?.data&&(a.attachedPaths.add(this),t=a.geometry.userData?.shape),t||this._context.scene.addPendingCommand(()=>this.updateShape())}}else{let i;switch(e.type){case"Rectangle":i=za;break;case"Ellipse":i=La;break;case"Polygon":i=Nu;break;case"Star":i=Du;break;default:throw new Error(`Unknown shape type: ${e.type}`)}t=i.create({parameters:e}).userData.shape}let o=this.geometry;t&&o.inputs&&(o.inputs.shapeData=t,o.build(),this.attachedSurfaceCloners.forEach(i=>i.update()))}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,t){return super.updateTransformState(e,t)}updateGeometryInteractions(e,t){super.updateGeometryInteractions(e,t),this.updateShape()}updateEntityBoxSize(e,t){let o=this.geometry.getAttribute("position");o!==void 0?xl(o,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:o.count,e,t):super.updateEntityBoxSize(e,t)}};var Ls=require("three");var cn=class extends kr(Ls.Group,Hr){constructor(e,t,o){super();t.type==="Instance"&&typeof e=="string"&&(t=this.transformAssignData(t,o)),this.super_Entity(e,t),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,t){let o=xa.getComponentData({scene:t.scene.data,shared:t.shared.data},e.component);if(o){let i,a;for(let s of So.rootOverrideProps)e[s]===void 0?(i===void 0&&(i={...e}),i[s]=o.data[s]):(a===void 0&&(a={}),a[s]=e[s],i===void 0&&(i={...e}),i[s]=mo.apply(o.data[s],e[s]));return this.overrideData=a,i}else return{...Vt.defaultData,...e,...Kr(Vt.defaultData,So.rootOverrideProps)}}updateByOp(e,t,o,i){let a;if(this.isInstanceRoot&&!i){if(t=this.transformAssignData(t,o),e.type===0&&e.path.length===0&&this.component)for(let s of So.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&&So.rootOverrideProps.includes(e.path[0])){let s=e.path[0];a===void 0&&(a={...e,path:[],props:{[s]:t[s]}})}}super.updateByOp(a??e,t,o,i)}updateState(e,t){this.updateState_Entity(e,t)}expandInstanceChildren(e){let t=this.data;if(this.component===void 0){let o=e.scene.find(t.component)??null,i=!1;if(o!==this.oldComponent){if(this.oldComponent){let a=0;for(let s of this.children)if(je.is(s))e.scene.disposeAndUnregisterEntityRecursivelyIfNotReregistered(s),vd(s),a+=1;else break;this.children.splice(0,a)}i=!0}if(o){let a={};gv(e,[this.uuid],t.overrides,this,o,o,0,i,a);for(let s of this.children)if(je.is(s)){let l=s.data;l.type==="Empty"&&l.animations&&s.traverseEntity(c=>{let u=c.dataPatched;if(c instanceof St&&u.bones&&u.boneInverses){let p=c.dataPatched;if(p.bones&&p.boneInverses){let d=p.bones.map(m=>e.scene.find(a[m])),h=p.boneInverses.map(m=>new Ls.Matrix4().fromArray(m)),f=new Ls.Skeleton(d,h);c.bind(f,c.bindMatrix)}}else c.matrixAutoUpdate=!0})}}this.oldComponent=this.component}}};function vd(n){if(n.component){let r=n.component.instances.indexOf(n);r>=0&&n.component.instances.splice(r,1);for(let e of n.children)je.is(e)&&vd(e)}}function yv(n,r,e,t){return n.component===r&&Kd(n.identity,t)?n.overrideData===e?2:1:0}function gv(n,r,e,t,o,i,a,s,l){if(a>50)return!1;if(t.component!==o){if(t.component){let u=t.component.instances.indexOf(t);u>=0&&t.component.instances.splice(u,1)}o.instances.find(u=>u===t)||o.instances.push(t),t.component=o}o instanceof cn&&o.isInstanceRoot&&o.expandInstanceChildren(n);let c=0;for(let u of o.children)if(je.is(u)){let p=[...r,...typeof u.identity=="string"?[u.identity]:u.identity],d=ya.resolve(e,p,1);if(d!=null&&!(d instanceof lt)){if(!1)debugger;Object.setPrototypeOf(d,lt.prototype),console.error("wrong prototype")}let h=null,f;if(!s){let m=t.children[c];if(h=je.is(m)?m:null,h!==null){let y=yv(h,u,d,p);f=y>=1?h.stateSelection:void 0,y!==2&&(h=null)}if(h===null&&(h=n.scene.findInstance(p)??null,h!==null)){let y=yv(h,u,d,p);if(f=y>=1?h.stateSelection:void 0,y!==2)h=null;else{let g=h.parent.children.indexOf(h);h.parent.children.splice(g,1),t.children.splice(c,0,h),h.parent===t?(g<=c&&console.error("not possible"),void 0):(h.parent=t,h.matrixWorldNeedsUpdate=!0,h.resetBBoxNeedsUpdate(),h.updateVisible(),n.pendingDeletes.delete(h),void 0)}}}if(h===null){let m=d?mo.apply(u.data,d):u.data;Qr.is(m.type)&&(m={...m,type:"Empty"}),h=eo.createEntity(p,m,n),h.overrideData=d,t.add(h),t.children.splice(t.children.length-1,1),t.children.splice(c,0,h),h.updateState(h.data,n),f&&h.changeSelectedState(f,n),n.scene.registerInstanceAndSetUuid(h)}if(h.isBone){let m=h.identity[h.identity.length-1];l[m]=h.uuid}c+=1,gv(n,r,e,h,u,i,a+1,s,l)}if(!s){let u=c;for(;;){let p=t.children[c];if(je.is(p))n.pendingDeletes.add(p);else break;c+=1}t.children.splice(u,c-u)}return!0}var xv=require("three");var Sd=class extends kr(xv.Bone,Hr){constructor(r,e){super(),this.super_Entity(r,e),this.objectHelper.update(),this.matrixAutoUpdate=!0}updateState(r,e){this.updateState_Entity(r,e)}};var Ai=class extends St{constructor(e,t,o){super(e,t,o);this.onBeforeRender=()=>{this.uiCanvas.render()};this.uiCanvas=new Es(e+"-canvas",t.geometry.width,t.geometry.height,o),this.uiCanvas.promise.then(()=>{this.applyFrame(this.dataPatched.geometry.frame,o.shared)})}updateByPatchedOpGeometry(e,t,o){super.updateByPatchedOpGeometry(e,t,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,t){let o=e?.width??this.dataPatched.geometry.width,i=e?.height??this.dataPatched.geometry.height;this.uiCanvas.applySize({width:o,height:i}),this.applyGeometryParametersFromFrame(t)}applyFrame(e,t){this.uiCanvas.applyFrame(e),this.applyGeometryParametersFromFrame(t),this.applyMaterialParametersFromFrame({shared:t})}applyGeometryParametersFromFrame(e){let t=this.frame;t&&(Object.assign(this.data,{geometry:Object.assign(this.data.geometry,{cornerRadius:t.cornerRadius,cornerType:0})}),Object.assign(this.dataPatched,{geometry:Object.assign(this.dataPatched.geometry,{cornerRadius:t.cornerRadius,cornerType:0})}),this.localGeometry?.dispose(),this.localGeometry=Jo(this.dataPatched.geometry,e,this.data.flatShading,this))}applyMaterialParametersFromFrame(e){let t=this.frame;if(t){let o=t.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,t,o,i){this.uiCanvas.updateEntity2DByOp(e,t,o,i),e===this.frameId&&t.type===0&&(t.props.cornerRadius!==void 0?this.applyGeometryParametersFromFrame(i):Ge(t.path,["backgroundBlur"])&&this.applyMaterialParametersFromFrame({shared:i}))}get frame(){return this.uiCanvas.frame}get frameId(){return this.frame?.uuid}removeInteractionGeometry(e){super.removeInteractionGeometry(e),this.applySize({},e)}updateGeometryInteractions(e,t){super.updateGeometryInteractions(e,t),this.applySize({width:e.width,height:e.height},t)}};var Be=require("three"),kv=require("three/examples/jsm/misc/GPUComputationRenderer.js");var kt=require("three"),bv=require("three/examples/jsm/math/MeshSurfaceSampler.js");function vv(n){let r=new Float32Array(n*n*2);for(let e=0;e<n;e++)for(let t=0;t<n;t++){let o=e*n+t;r[o*2+0]=e/(n-1),r[o*2+1]=t/(n-1)}return r}function Sv(n){let r=Math.ceil(Math.sqrt(n));return Math.max(r,1)}function wv(n,r){let e=new kt.Mesh(n.geometry,n.material),t=[],o=[],i=new kt.Vector3,a=new kt.Vector3;e.geometry.index!==null&&(e.geometry=e.geometry.toNonIndexed());let s=new bv.MeshSurfaceSampler(e).build();for(let u=0;u<r;u++)s.sample(i,a),t.push(i.x,i.y,i.z),o.push(a.x,a.y,a.z);let l=new Float32Array(t),c=new Float32Array(o);return{positions:l,normals:c}}function uh(n,r){let e=n,t=new Float32Array(4*r*r);for(let i=0;i<r*r;i++)t[4*i]=e[3*i],t[4*i+1]=e[3*i+1],t[4*i+2]=e[3*i+2],t[4*i+3]=0;let o=new kt.DataTexture(t,r,r,kt.RGBAFormat,kt.FloatType);return o.needsUpdate=!0,o}function Pv({size:n}){let r=new Float32Array(4*n*n);for(let t=0;t<n*n;t++)r[4*t]=t,r[4*t+1]=0,r[4*t+2]=0,r[4*t+3]=0;let e=new kt.DataTexture(r,n,n,kt.RGBAFormat,kt.FloatType);return e.needsUpdate=!0,e}function Ov(n){let r=new Float32Array(4*n*n);for(let t=0;t<n*n;t++)r[4*t]=0,r[4*t+1]=0,r[4*t+2]=0,r[4*t+3]=0;let e=new kt.DataTexture(r,n,n,kt.RGBAFormat,kt.FloatType);return e.needsUpdate=!0,e}var Cv=`
2609
2609
  // uniform sampler2D uCurrentPosition; // Pass in the variable from GPGPU
2610
2610
  // uniform sampler2D uCurrentVelocity; // Pass in the variable from GPGPU
2611
2611
  // uniform sampler2D uCurrentEmissionRate; // Pass in the variable from GPGPU
@@ -3480,7 +3480,7 @@ void main() {
3480
3480
 
3481
3481
  }
3482
3482
  `;var ph=10,Pd=class extends Be.Object3D{constructor(e,t){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 Be.TextureLoader;this.currentWorldPosition=new Be.Vector3;this.systemQuaternion=new Be.Quaternion;this.worldGravity=new Be.Vector3(0,0,0);this.directionAxis=new Be.Vector3(0,0,0);this.colliderV3=new Be.Vector3(0,0,0);this.colliderQuaternion=new Be.Quaternion(0,0,0,1);this.matrixAutoUpdate=!0,this.renderer=e,this.system=t,this.shared=t.context.shared;let o=t.data;this.material=new wd(o.renderMaterial,t.context),this.material.uniforms={uSize:{value:0},uSizeEnd:{value:0},uColor:{value:o.renderMaterial.color},uColor2:{value:o.renderMaterial.color2},uPosition:{value:new Be.Vector3(0,0,0)},uEmissionData:{value:new Be.Vector3(0,0,0)},uTexture:{value:this.defaultTexture},uWorldOffset:{value:new Be.Vector3(0,0,0)},uWorldQuaternion:{value:new Be.Vector4(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,t){let o=t.data;if(typeof t=="string"){let i=this.shared.image(t),a=new Be.Texture(i.img);a.needsUpdate=!0,e.uTexture.value=a;return}if(typeof o!="string"){let i=new Image;i.onload=()=>{let l=new Be.Texture(i);l.needsUpdate=!0,e.uTexture.value=l};let a=new Blob([o],{type:"image/*"}),s=URL.createObjectURL(a);i.src=s}}updateGeometryAttributes(e,t){let o=vv(t);!this.emitterShape?.positionsAttribute||e.geometry.setAttribute("ref",new Be.InstancedBufferAttribute(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,t){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/t,i=this.targetFPS/o,a=this.previousRatio+(i-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];if(!e)return;e.getWorldPosition(this.colliderV3),this.colliderV3.y===0&&(this.colliderV3.y=1e-4),this.velocitySimRT.material.uniforms.uColliderPos.value.copy(this.colliderV3);let t=e.data.size;this.colliderV3.fromArray(t),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,t){if(!this.velocitySimRT||!this.positionSimRT)return;t[2]==="size"&&this.material.updateState({size:[e,this.material.uniforms.uSizeEnd.value]}),t[2]==="sizeEnd"&&this.material.updateState({size:[this.material.uniforms.uSize.value,e]});let o=(i,a)=>{let s=[...this.system.data.shape.size];s[i]=a,this.updateParticleState({shape:{...this.system.data.shape,size:s}})};t[2]==="shape_size_0"&&o(0,e),t[2]==="shape_size_1"&&o(1,e),t[2]==="shape_size_2"&&o(2,e),t[2]==="speed"&&(this.velocitySimRT.material.uniforms.uSpeed.value=e/ph),t[2]==="gravity"&&this.worldGravity.set(0,e/100,0),t[2]==="noiseStrength"&&(this.noiseStrength=e,this.velocitySimRT.material.uniforms.uNoiseStrength.value=this.noiseStrength),t[2]==="noiseScale"&&(this.noiseScale=e,this.velocitySimRT.material.uniforms.uNoiseScale.value=this.noiseScale),t[2]==="direction_x"&&(this.directionAxis=this.getDirectionAxis([Number(e),this.system.data.direction[1],this.system.data.direction[2]])),t[2]==="direction_y"&&(this.directionAxis=this.getDirectionAxis([this.system.data.direction[0],Number(e),this.system.data.direction[2]])),t[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(Mi(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"]))/ph),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 t=this.shared.getVariable(e.renderMaterial.size[0],[this.uuid,"particles","size"]);this.velocitySimRT.material.uniforms.particleSize.value=Number(t)}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 t=e.shape.size??this.system.data.shape.size,o=[Number(this.shared.getVariable(t[0],[this.uuid,"particles","shape_size_0"])),Number(this.shared.getVariable(t[1],[this.uuid,"particles","shape_size_1"])),Number(this.shared.getVariable(t[2],[this.uuid,"particles","shape_size_2"]))],i={...Mi(this.system.data).shape,size:o};this.emitterShape?.applyToShader(this.positionSimRT.material.uniforms,i)}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 t=this.getDirectionFromVariable(e.direction);this.directionAxis=this.getDirectionAxis(t),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 t=[Number(e[0])*Be.MathUtils.DEG2RAD,Number(e[1])*Be.MathUtils.DEG2RAD,Number(e[2])*Be.MathUtils.DEG2RAD],o=new Be.Euler(t[0],t[1],t[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:t,rootObjectType:o,colliderEntityId:i,shape:a,emitTimeDuration:s,emitTimeCycle:l,life:c,directionMode:u,noiseType:p}=e;return t!==void 0||o!==void 0||(i||i===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 t=setInterval(()=>{if(!!this.emitterShape)if(isNaN(this.emitterShape.positionsTexture.source.data.data[0])){this.init(e);return}else clearInterval(t)},100);if(!this.emitterShape)return;let o=new kv.GPUComputationRenderer(this.emitterShape.textureSize,this.emitterShape.textureSize,this.renderer),i=this.updateSimulationDefinition(e),a=o.addVariable("uCurrentPosition",i+Cv,this.emitterShape.positionsTexture),s=o.addVariable("uCurrentVelocity",i+Nv,this.emitterShape.directionsTexture),l=o.addVariable("uCurrentEmissionRate",Fv,Ov(this.emitterShape.textureSize));o.setVariableDependencies(a,[a,s,l]),o.setVariableDependencies(s,[a,s,l]),o.setVariableDependencies(l,[a,s,l]);let c=Pv({size:this.emitterShape.textureSize}),u={uOriginalPosition:{value:this.emitterShape.positionsTexture},uWorldOffset:{value:new Be.Vector3(0,0,0)},uWorldQuaternion:{value:new Be.Vector4(0,0,0,1)},uTime:{value:0},uFPSRatio:{value:1},uMaxLifeTime:{value:e.life},uEmitterSize:{value:new Be.Vector3(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),h={uOriginalPosition:{value:this.emitterShape.positionsTexture},uDirections:{value:this.emitterShape.directionsTexture},uDirectionsAxis:{value:this.directionAxis},uWorldQuaternion:{value:new Be.Vector4(0,0,0,1)},uColliderPos:{value:new Be.Vector3(0,0,0)},uColliderSize:{value:new Be.Vector3(0,0,0)},uForceIntensity:{value:d?d.forceIntensity:0},uForceDamping:{value:d?d.forceDambing:0},uColliderQuaternion:{value:new Be.Vector4(0,0,0,1)},uColliderQuaternionInvert:{value:new Be.Vector4(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"]))/ph}};s.material.uniforms=h;let f={uIndex:{value:c},uTime:{value:0},uLastIndexEmitted:{value:0},uParticlesToEmit:{value:0}};l.material.uniforms=f;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={...Mi(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 t=Number(this.shared.getVariable(e[0],[this.uuid,"particles","direction_x"])),o=Number(this.shared.getVariable(e[1],[this.uuid,"particles","direction_y"])),i=Number(this.shared.getVariable(e[2],[this.uuid,"particles","direction_z"]));return[t,o,i]}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 i=o?.colliderType;i==="sphere"&&(this.simFeaturesDefinition.USE_SPHERE_COLLIDER=!0),i==="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 t="";for(let[o,i]of Object.entries(this.simFeaturesDefinition))i&&(t+=`#define ${o}
3483
- `);return t}createShape(e,t){this.emitterShape&&this.emitterShape.dispose();let o=new Be.Vector3(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 i=null;return this.system.context.scene.traverseEntity(a=>{a.uuid===e.fromMeshId&&(i=a)}),i?new Rs(o,t,e.type,i):new Rs(o,t,"SphereEmitterShape")}else return new Rs(o,t,e.type)}createPrimaryEmitter(e){let t,o=e*e;return t=new Be.InstancedMesh(new Be.PlaneGeometry(1,1,1),this.material,o),this.updateGeometryAttributes(t,e),this.material.needsUpdate=!0,t.onBeforeRender=()=>{this.applyWorldSpace()},t}getMaxParticlesAmount({birthRatePerSecond:e,particleMaxLifeTime:t,loopDuration:o=0}){return Math.ceil(e*(t+o))}dispose(){!this.gpuCompute||(this.rootObject?.parent?.remove(this.rootObject),this.gpuCompute.dispose(),this.material.nodeMaterialDispose(),this.emitterShape?.dispose())}GoEmitSomeParticles(e,t){let o=e-this.lastEmitTime,i=1/t;if(o>=i){let a=Math.max(1,Math.floor(o/i));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(Mi(this.system.data))}startEmitting(e){this.isEmitting=!0,this.hasBeenReset=!1,this.lastEmitTime=e}stopEmitting(){this.isEmitting=!1}};var Vs=require("three");var Od=class extends Gt{constructor(e,t,o){super(e,t);this.type="ParticleSystem";this.geometry=new Vs.BufferGeometry;this.actualTime=0;this.currentLoopTime=0;this.started=!1;this.stopped=!1;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={...t,...Mi(t)},this.geometry.setAttribute("position",new Vs.Float32BufferAttribute([],3)),this.material=new Vs.MeshBasicMaterial({colorWrite:!1}),this.frustumCulled=!1}init(e){this.renderer=e,this.emitter=new Pd(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 t=this.data.emitTimeCycle==="one_time";if((this.data.emitTimeCycle==="loop"||t)&&this.currentLoopTime>this.data.emitTimeDuration*1e3&&(this.stopped||(this.stop(),t||this.start(this.data.emitTimeLoopDelayStart==="start"?0:this.data.emitTimeDelay*1e3))),this.emitter&&this.started){let i=this.actualTime/1e3;this.emitter.update(i,e)}this.scale.set(1,1,1),this.updateMatrix()}isReady(){return!!this.emitter}hasCollider(e){return this.colliderEntities.some(t=>t.identity===e)}getColliderData(e){let t=this.colliderEntities.find(o=>o.identity===e);return t?t.data:null}updateByPatchedOp(e,t,o){super.updateByPatchedOp(e,t,o),Ge(e.path,["renderMaterial"])&&this.updateParticleState({renderMaterial:{...this.data.renderMaterial,...gt.drop(e,1).props}}),Ge(e.path,["shape"])&&this.updateParticleState({shape:{...this.data.shape,...gt.drop(e,1).props}})}updateState(e,t){super.updateState(e,t),this.updateParticleState(e)}updateParticleState(e){if(!!this.emitter){if(e.colliderEntityId!==void 0&&e.colliderEntityId!==null){let t=this.context.scene.find(e.colliderEntityId);this.colliderEntities=t?[t]:[]}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){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()}reset(){this.started=!1,this.stopped=!1,this.emitter?.reset()}wakeUp(){this.isIdle=!1}sleep(){this.isIdle=!0,this.reset()}};function TI(){try{let n=window.location.href;if(n.includes("reducesubdiv=")){let r=n.indexOf("reducesubdiv=")+13;return parseInt(n.slice(r,r+1))}}catch{}}var fh=TI();function AI(n,r,e){fh!==void 0&&(r?.geometry?.subdivisions??0)>fh&&(console.log("reducing subdivisions",r.name,r.geometry.subdivisions),r.geometry.subdivisions=fh);let t;return r.geometry.type==="TextGeometry"?new bs(n,r,e):(r.geometry.type==="SubdivGeometry"?t=new Pi(n,r,e):r.geometry.type==="PathGeometry"?t=new Bs(n,r,e):r.geometry.type==="VectorGeometry"?t=new bd(n,r,e):r.geometry.type==="BooleanGeometry"?t=new Pr(n,r,e):r.geometry.type==="UIGeometry"?t=new Ai(n,r,e):t=new St(n,r,e),t)}function Cd(n,r,e){return console.assert(r.type!==void 0),r.type==="Mesh"?AI(n,r,e):r.type==="Empty"?new Un(n,r):r.type==="Particle"?new Od(n,r,e):r.type==="ParticleCollider"?new ld(n,r,e):r.type==="Splat"?new Un(n,r):r.type==="Bone"?new Sd(n,r):r.type==="Page"?new qr(n,r,e):r.type==="PointLight"?new xd(n,r,e):r.type==="SpotLight"?new Ns(n,r,e):r.type==="DirectionalLight"?new Is(n,r,e):r.type==="Component"||r.type==="Instance"?new cn(n,r,e):Qr.is(r.type)?new an(n,r):(console.error(r),new Un(n,r))}eo.createEntity=Cd;function MI(n,r,e){let t=Cd(n.identity,r,e),o=n.children,i=n.attachedPaths,a=n.parent,s=n.component,l=n.instances,c=n.overrideData,u=n.uuid,p=n.stateSelection;n.dispose();for(let d of Object.keys(n))delete n[d];Object.setPrototypeOf(n,Object.getPrototypeOf(t));for(let d of Object.keys(t))n[d]=t[d];n.children=[...n.children,...o],n.attachedPaths=i,n.parent=a,n.component=s,n.instances=l,n.uuid=u,n.overrideData=c,n.updateState(n.data,e),p&&n.changeSelectedState(p,e),n.resetBBoxNeedsUpdate()}eo.changeEntityProptotype=MI;eo.Cloner=ws;function Hv(n,r,e,t){n.updateByOp(r,e,t,!1)}var zs=require("three");function Wv(n,r){let e=!1,t=r.getLayersOfType("transmission"),o=r.getLayersOfType("outline");return o.length>0&&(n.layers.set(8),t.length>0&&n.layers.enable(3),e=!0,gs(n),ys(n)),t.length===0&&o.length===0&&n.layers.set(0),n instanceof wr&&n.needsAO&&n.layers.enable(5),e}function qv(n,r){if(!r.layers)return!1;let e=!1,t=r.getLayersOfType("transmission").filter(i=>i.data.visible),o=r.getLayersOfType("outline").filter(i=>i.data.visible);return t.length>0&&(n.layers.set(3),o.length>0&&n.layers.enable(8),e=!0),t.length===0&&o.length===0&&n.layers.set(0),n.needsAO&&n.layers.enable(5),e}function $v(n){let r=!1;return n.traverseEntity(e=>{if(e instanceof wr)if(Array.isArray(e.material))for(let t=0;t<e.material.length;t++)Wv(e,e.material[t])&&(r=!0);else Wv(e,e.material)&&(r=!0)}),r}function Yv(n){let r=!1;return n.traverseEntity(e=>{if(e instanceof wr)if(Array.isArray(e.material))for(let t=0;t<e.material.length;t++)qv(e,e.material[t])&&(r=!0);else qv(e,e.material)&&(r=!0)}),r}var DI=new zs.Raycaster,EI=new zs.Matrix4,_I=new zs.Ray;function $l(n,r,e,t=!1){let o=n.cloner;if(o)for(let i of o.children){let a=EI.copy(i.matrixWorld).invert(),s=_I.copy(r.ray).applyMatrix4(a),l=n.matrixWorld;s.applyMatrix4(l);let c=DI;c.set(s.origin,s.direction),c.near=r.near,c.far=r.far;let u=c.intersectObject(n,!1);u.length>0&&e.push({...u[0],object:t?i:n})}}var Td=class{constructor(){this._constraints=new Map}setConstraint(r,e){e===null?this._constraints.delete(r):this._constraints.set(r,e)}removeDependencies(r){this._constraints.delete(r)}applyConstraints(r){let e=new Set;this._constraints.forEach((t,o)=>{let i=[o,t],a=t;for(;this._constraints.has(a);)a=this._constraints.get(a),e.has(a)||i.push(a);for(let s=i.length-2;s>=0;s--)if(!e.has(i[s])){let l=r.find(i[s]);l?l.applyPathSnapping(r):console.warn(`missing entity ${i[s]}`),e.add(i[s])}})}findDependency(r,e){let t=r;for(;this._constraints.has(t);)if(t=this._constraints.get(t),t===e)return!0;return!1}};var Xv="AGFzbQEAAAAADwhkeWxpbmsuMAEEAAAAAAETA2AAAGAIf39/f39/f38AYAABfwISAQNlbnYGbWVtb3J5AgMAgIAEAwQDAAECBzkDEV9fd2FzbV9jYWxsX2N0b3JzAAALc29ydEluZGV4ZXMAARNlbXNjcmlwdGVuX3Rsc19pbml0AAIK3gMDAwABC9IDAwF/BnwBfgJAIAdFDQAgAysDUCEMIAMrAzAhDSADKwMQIQ5BACEDRP///////+9/IQtEAAAAAAAAEAAhCgNAIAIgA0ECdGoCfyAOIAEgA0EMbGoiCCoCALuiIA0gCCoCBLuioCAMIAgqAgi7oqBEAAAAAAAAsECiIgmZRAAAAAAAAOBBYwRAIAmqDAELQYCAgIB4CzYCACAJIAsgCSALYxshCyAJIAogCSAKZBshCiADQQFqIgMgB0cNAAsgB0UNACAGuCAKIAuhoyEJQQAhAwNAAn8gCSACIANBAnRqIgEoAgC3IAuhoiIKmUQAAAAAAADgQWMEQCAKqgwBC0GAgICAeAshCCABIAg2AgAgBCAIQQJ0aiIBIAEoAgBBAWo2AgAgA0EBaiIDIAdHDQALCyAGQQJPBEAgBCgCACEIQQEhAwNAIAQgA0ECdGoiASABKAIAIAhqIgg2AgAgA0EBaiIDIAZHDQALCyAHQQFrIgGtIQ8DQCAEIAIgD6dBAnQiA2ooAgBBAnRqIgcgBygCAEEBayIHNgIAIAUgASAHa0ECdGogACADaigCADYCACAPUCEDIA9CAX0hDyADRQ0ACyAGBEAgBEEAIAZBAnT8CwALCwQAQQAL";var Lo=class{};Jn(Lo,"DepthMapRange",1<<16),Jn(Lo,"MemoryPageSize",65536),Jn(Lo,"BytesPerFloat",4),Jn(Lo,"BytesPerInt",4);function BI(n){let r,e,t,o,i,a,s,l,c,u,p,d,h,f,m,y;function g(A){let N=new Float64Array(u,a,16);for(let B=0;B<16;B++)N[B]=A[B];let E;if(t>1){r.exports.sortIndexes(o,i,c,a,s,l,d.DepthMapRange,t);let B=new Uint32Array(t);E=B.buffer,B.set(new Uint32Array(u,l,t))}else if(t===1){let B=new Uint32Array(t);B[0]=new Uint32Array(u,o,e)[0],E=B.buffer}else E=new ArrayBuffer(0);n.postMessage({sortDone:!0,indexesBuffer:E},[E])}function v(A,N,E){let B=new Float32Array(u,i,e*3);t=0;let V=new Uint32Array(u,o,e);for(let j=0;j<E.length-1;j++){let R=N[j],W=A[j].elements,F=R.filter(H=>H.enabled&&H.mode==="Include").map(H=>H.type==="Box"?T(H):_(H)),k=R.filter(H=>H.enabled&&H.mode==="Exclude").map(H=>H.type==="Box"?T(H):_(H));for(let H=E[j];H<E[j+1];H++){let $=h[H*3],J=h[H*3+1],Z=h[H*3+2];if((F.length===0||P($,J,Z,F))&&(k.length===0||!P($,J,Z,k))){let X=1/(W[3]*$+W[7]*J+W[11]*Z+W[15]);B[t*3]=(W[0]*$+W[4]*J+W[8]*Z+W[12])*X,B[t*3+1]=(W[1]*$+W[5]*J+W[9]*Z+W[13])*X,B[t*3+2]=(W[2]*$+W[6]*J+W[10]*Z+W[14])*X,V[t]=H,t++}}}}function O(A,N){let E=[],B=N.filter(R=>R.enabled&&R.mode==="Include").map(R=>R.type==="Box"?T(R):_(R)),V=N.filter(R=>R.enabled&&R.mode==="Exclude").map(R=>R.type==="Box"?T(R):_(R)),j=A.length;for(let R=0;R<j;R+=3){let W=A[R],F=A[R+1],k=A[R+2];(B.length===0||P(W,F,k,B))&&(V.length===0||!P(W,F,k,V))||E.push(R/3)}return E}function P(A,N,E,B,V){return B[V==="Intersect"?"every":"some"](j=>{let R=S(A,N,E,j.invRotationMatrix,j.cropCenter);return Array.isArray(j)?x(R.x,R.y,R.z,j):D(R.x,R.y,R.z,j)})}function S(A,N,E,B,V){let j=A-V[0],R=N-V[1],W=E-V[2],F=1/(B[3]*j+B[7]*R+B[11]*W+B[15]);return{x:(B[0]*j+B[4]*R+B[8]*W+B[12])*F+V[0],y:(B[1]*j+B[5]*R+B[9]*W+B[13])*F+V[1],z:(B[2]*j+B[6]*R+B[10]*W+B[14])*F+V[2]}}function T(A){let N=A.cropSize[0]/2,E=A.cropSize[1]/2,B=A.cropSize[2]/2,V=[A.cropCenter[0]-N,A.cropCenter[1]-E,A.cropCenter[2]-B,A.cropCenter[0]+N,A.cropCenter[1]+E,A.cropCenter[2]+B],j=I(A.cropRotation);return Object.assign(V,{invRotationMatrix:j,cropCenter:A.cropCenter})}function I(A){let N=[],E=A[0]*Math.PI/180,B=A[1]*Math.PI/180,V=A[2]*Math.PI/180,j=Math.cos(E),R=Math.sin(E),W=Math.cos(B),F=Math.sin(B),k=Math.cos(V),H=Math.sin(V),$=j*k,J=j*H,Z=R*k,X=R*H;return N[0]=W*k,N[1]=-W*H,N[2]=F,N[4]=J+Z*F,N[5]=$-X*F,N[6]=-R*W,N[8]=X-$*F,N[9]=Z+J*F,N[10]=j*W,N[12]=0,N[13]=0,N[14]=0,N[3]=0,N[7]=0,N[11]=0,N[15]=1,N}function x(A,N,E,B){return A>=B[0]&&A<=B[3]&&N>=B[1]&&N<=B[4]&&E>=B[2]&&E<=B[5]}function _(A){let N=2/A.cropSize[0],E=2/A.cropSize[1],B=2/A.cropSize[2],V=I(A.cropRotation);return{invRadiusX:N,invRadiusY:E,invRadiusZ:B,cropCenter:A.cropCenter,invRotationMatrix:V}}function D(A,N,E,B){let V=(A-B.cropCenter[0])*B.invRadiusX,j=(N-B.cropCenter[1])*B.invRadiusY,R=(E-B.cropCenter[2])*B.invRadiusZ;return V*V+j*j+R*R<=1}n.onmessage=A=>{if(A.data.getCroppedIndexes){let N=new Uint32Array(O(new Float32Array(A.data.positions),A.data.crops)).buffer;n.postMessage({outOfBoundsIndexes:N},[N])}else if(A.data.positions)p=A.data.positions,h=new Float32Array(p),m=A.data.meshMatrixWorlds,y=A.data.cropsArray,f=A.data.meshIndexIntervals,v(m,y,f),n.postMessage({sortSetupComplete:!0});else if(A.data.sort||A.data.newMatrixWorlds||A.data.newCropsArray)(A.data.newMatrixWorlds||A.data.newCropsArray)&&(y=A.data.newCropsArray||y,m=A.data.newMatrixWorlds||m,v(m,y,f)),g(A.data.sort.view,A.data.sort.cameraPosition);else if(A.data.init){d=A.data.init.Constants,e=A.data.init.splatCount;let N=d.BytesPerInt,E=d.BytesPerFloat*3,B=new Uint8Array(A.data.init.sorterWasmBytes),V=N+E,j=e*V,R=e*d.BytesPerInt*2+d.DepthMapRange*d.BytesPerInt*2,W=d.MemoryPageSize*32,F=j+R+W,k=Math.floor(F/d.MemoryPageSize)+1,H={module:{},env:{memory:new WebAssembly.Memory({initial:k*2,maximum:k*3,shared:!0})}};WebAssembly.compile(B).then($=>WebAssembly.instantiate($,H)).then($=>{r=$,o=0,i=e*N,a=i+e*E,c=a+16*d.BytesPerFloat*2,s=c+e*d.BytesPerInt,l=s+d.DepthMapRange*d.BytesPerInt,u=H.env.memory.buffer,n.postMessage({sortSetupPhase1Complete:!0})})}}}function Kv(n){let r=new Worker(URL.createObjectURL(new Blob(["(",BI.toString(),")(self)"],{type:"application/javascript"}))),e=atob(Xv),t=new Uint8Array(e.length);for(let o=0;o<e.length;o++)t[o]=e.charCodeAt(o);return r.postMessage({init:{sorterWasmBytes:t.buffer,splatCount:n,Constants:{BytesPerFloat:Lo.BytesPerFloat,BytesPerInt:Lo.BytesPerInt,DepthMapRange:Lo.DepthMapRange,MemoryPageSize:Lo.MemoryPageSize}}}),r}var hr=require("three");var Oe=require("three");var Ad=function(){let n=new Float32Array(1),r=new Int32Array(n.buffer);return function(e){return n[0]=e,r[0]}}(),Qv=function(n,r,e,t){return n+(r<<8)+(e<<16)+(t<<24)};var Md=new Oe.Vector2;function Id(n){let r=!1;return n.scene.objects.traverse((e,t)=>{if(t.visible===!1)return!0;t.type==="Splat"&&(r=!0)}),r}var qn=class extends Oe.Mesh{constructor(e,t,o,i,a=!1,s=1,l,c){super(o,i);this.splatCount=t,this.meshIndexIntervals=l,this.meshMatrixWorlds=c,this.splatBuffers=e,this.geometry=o,this.material=i,this.splatDataTextures=null,this.halfPrecisionCovariancesOnGPU=a,this.devicePixelRatio=s,this.resetLocalSplatDataAndTexturesFromSplatBuffer()}static buildMesh(e,t,o=!1,i=1,a,s){let l=qn.buildGeomtery(t),c=qn.buildMaterial(a);return new qn(e,t,l,c,o,i,a,s)}static buildMaterial(e){let t=`
3483
+ `);return t}createShape(e,t){this.emitterShape&&this.emitterShape.dispose();let o=new Be.Vector3(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 i=null;return this.system.context.scene.traverseEntity(a=>{a.uuid===e.fromMeshId&&(i=a)}),i?new Rs(o,t,e.type,i):new Rs(o,t,"SphereEmitterShape")}else return new Rs(o,t,e.type)}createPrimaryEmitter(e){let t,o=e*e;return t=new Be.InstancedMesh(new Be.PlaneGeometry(1,1,1),this.material,o),this.updateGeometryAttributes(t,e),this.material.needsUpdate=!0,t.onBeforeRender=()=>{this.applyWorldSpace()},t}getMaxParticlesAmount({birthRatePerSecond:e,particleMaxLifeTime:t,loopDuration:o=0}){return Math.ceil(e*(t+o))}dispose(){!this.gpuCompute||(this.rootObject?.parent?.remove(this.rootObject),this.gpuCompute.dispose(),this.material.nodeMaterialDispose(),this.emitterShape?.dispose())}GoEmitSomeParticles(e,t){let o=e-this.lastEmitTime,i=1/t;if(o>=i){let a=Math.max(1,Math.floor(o/i));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(Mi(this.system.data))}startEmitting(e){this.isEmitting=!0,this.hasBeenReset=!1,this.lastEmitTime=e}stopEmitting(){this.isEmitting=!1}};var Vs=require("three");var Od=class extends Gt{constructor(e,t,o){super(e,t);this.type="ParticleSystem";this.geometry=new Vs.BufferGeometry;this.actualTime=0;this.currentLoopTime=0;this.started=!1;this.stopped=!1;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={...t,...Mi(t)},this.geometry.setAttribute("position",new Vs.Float32BufferAttribute([],3)),this.material=new Vs.MeshBasicMaterial({colorWrite:!1}),this.frustumCulled=!1}init(e){this.renderer=e,this.emitter=new Pd(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 t=this.data.emitTimeCycle==="one_time";if((this.data.emitTimeCycle==="loop"||t)&&this.currentLoopTime>this.data.emitTimeDuration*1e3&&(this.stopped||(this.stop(),t||this.start(this.data.emitTimeLoopDelayStart==="start"?0:this.data.emitTimeDelay*1e3))),this.emitter&&this.started){let i=this.actualTime/1e3;this.emitter.update(i,e)}this.scale.set(1,1,1),this.updateMatrix()}isReady(){return!!this.emitter}hasCollider(e){return this.colliderEntities.some(t=>t.identity===e)}getColliderData(e){let t=this.colliderEntities.find(o=>o.identity===e);return t?t.data:null}updateByPatchedOp(e,t,o){super.updateByPatchedOp(e,t,o),Ge(e.path,["renderMaterial"])&&this.updateParticleState({renderMaterial:{...this.data.renderMaterial,...gt.drop(e,1).props}}),Ge(e.path,["shape"])&&this.updateParticleState({shape:{...this.data.shape,...gt.drop(e,1).props}})}updateState(e,t){super.updateState(e,t),this.updateParticleState(e)}updateParticleState(e){if(!!this.emitter){if(e.colliderEntityId!==void 0&&e.colliderEntityId!==null){let t=this.context.scene.find(e.colliderEntityId);this.colliderEntities=t?[t]:[]}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){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()}reset(){this.started=!1,this.stopped=!1,this.emitter?.reset()}wakeUp(){this.isIdle=!1}sleep(){this.isIdle=!0,this.reset()}};function TI(){try{let n=window.location.href;if(n.includes("reducesubdiv=")){let r=n.indexOf("reducesubdiv=")+13;return parseInt(n.slice(r,r+1))}}catch{}}var fh=TI();function AI(n,r,e){fh!==void 0&&(r?.geometry?.subdivisions??0)>fh&&(console.log("reducing subdivisions",r.name,r.geometry.subdivisions),r.geometry.subdivisions=fh);let t;return r.geometry.type==="TextGeometry"?new bs(n,r,e):(r.geometry.type==="SubdivGeometry"?t=new Pi(n,r,e):r.geometry.type==="PathGeometry"?t=new Bs(n,r,e):r.geometry.type==="VectorGeometry"?t=new bd(n,r,e):r.geometry.type==="BooleanGeometry"?t=new Pr(n,r,e):r.geometry.type==="UIGeometry"?t=new Ai(n,r,e):t=new St(n,r,e),t)}function Cd(n,r,e){return console.assert(r.type!==void 0),r.type==="Mesh"?AI(n,r,e):r.type==="Empty"?new Un(n,r):r.type==="Particle"?new Od(n,r,e):r.type==="ParticleCollider"?new ld(n,r,e):r.type==="Splat"?new Un(n,r):r.type==="Bone"?new Sd(n,r):r.type==="Page"?new qr(n,r,e):r.type==="PointLight"?new xd(n,r,e):r.type==="SpotLight"?new Ns(n,r,e):r.type==="DirectionalLight"?new Is(n,r,e):r.type==="Component"||r.type==="Instance"?new cn(n,r,e):Qr.is(r.type)?new an(n,r):(console.error(r),new Un(n,r))}eo.createEntity=Cd;function MI(n,r,e){let t=Cd(n.identity,r,e),o=n.children,i=n.attachedPaths,a=n.parent,s=n.component,l=n.instances,c=n.overrideData,u=n.uuid,p=n.stateSelection;n.dispose();for(let d of Object.keys(n))delete n[d];Object.setPrototypeOf(n,Object.getPrototypeOf(t));for(let d of Object.keys(t))n[d]=t[d];n.children=[...n.children,...o],n.attachedPaths=i,n.parent=a,n.component=s,n.instances=l,n.uuid=u,n.overrideData=c,n.updateState(n.data,e),p&&n.changeSelectedState(p,e),n.resetBBoxNeedsUpdate()}eo.changeEntityProptotype=MI;eo.Cloner=ws;function Hv(n,r,e,t){n.updateByOp(r,e,t,!1)}var zs=require("three");function Wv(n,r){let e=!1,t=r.getLayersOfType("transmission"),o=r.getLayersOfType("outline");return o.length>0&&(n.layers.set(8),t.length>0&&n.layers.enable(3),e=!0,gs(n),ys(n)),t.length===0&&o.length===0&&n.layers.set(0),n instanceof wr&&n.needsAO&&n.layers.enable(5),e}function qv(n,r){if(!r.layers)return!1;let e=!1,t=r.getLayersOfType("transmission").filter(i=>i.data.visible),o=r.getLayersOfType("outline").filter(i=>i.data.visible);return t.length>0&&(n.layers.set(3),o.length>0&&n.layers.enable(8),e=!0),t.length===0&&o.length===0&&n.layers.set(0),n.needsAO&&n.layers.enable(5),e}function $v(n){let r=!1;return n.traverseEntity(e=>{if(e instanceof wr)if(Array.isArray(e.material))for(let t=0;t<e.material.length;t++)Wv(e,e.material[t])&&(r=!0);else Wv(e,e.material)&&(r=!0)}),r}function Yv(n){let r=!1;return n.traverseEntity(e=>{if(e instanceof wr)if(Array.isArray(e.material))for(let t=0;t<e.material.length;t++)qv(e,e.material[t])&&(r=!0);else qv(e,e.material)&&(r=!0)}),r}var DI=new zs.Raycaster,EI=new zs.Matrix4,_I=new zs.Ray;function $l(n,r,e,t=!1){let o=n.cloner;if(o)for(let i of o.children){let a=EI.copy(i.matrixWorld).invert(),s=_I.copy(r.ray).applyMatrix4(a),l=n.matrixWorld;s.applyMatrix4(l);let c=DI;c.set(s.origin,s.direction),c.near=r.near,c.far=r.far;let u=c.intersectObject(n,!1);u.length>0&&e.push({...u[0],object:t?i:n})}}var Td=class{constructor(){this._constraints=new Map}setConstraint(r,e){e===null?this._constraints.delete(r):this._constraints.set(r,e)}removeDependencies(r){this._constraints.delete(r)}applyConstraints(r){let e=new Set;this._constraints.forEach((t,o)=>{let i=[o,t],a=t;for(;this._constraints.has(a);)a=this._constraints.get(a),e.has(a)||i.push(a);for(let s=i.length-2;s>=0;s--)if(!e.has(i[s])){let l=r.find(i[s]);l?l.applyPathSnapping(r):console.warn(`missing entity ${i[s]}`),e.add(i[s])}})}findDependency(r,e){let t=r;for(;this._constraints.has(t);)if(t=this._constraints.get(t),t===e)return!0;return!1}};var Xv="AGFzbQEAAAAADwhkeWxpbmsuMAEEAAAAAAETA2AAAGAIf39/f39/f38AYAABfwISAQNlbnYGbWVtb3J5AgMAgIAEAwQDAAECBzkDEV9fd2FzbV9jYWxsX2N0b3JzAAALc29ydEluZGV4ZXMAARNlbXNjcmlwdGVuX3Rsc19pbml0AAIK3gMDAwABC9IDAwF/BnwBfgJAIAdFDQAgAysDUCEMIAMrAzAhDSADKwMQIQ5BACEDRP///////+9/IQtEAAAAAAAAEAAhCgNAIAIgA0ECdGoCfyAOIAEgA0EMbGoiCCoCALuiIA0gCCoCBLuioCAMIAgqAgi7oqBEAAAAAAAAsECiIgmZRAAAAAAAAOBBYwRAIAmqDAELQYCAgIB4CzYCACAJIAsgCSALYxshCyAJIAogCSAKZBshCiADQQFqIgMgB0cNAAsgB0UNACAGuCAKIAuhoyEJQQAhAwNAAn8gCSACIANBAnRqIgEoAgC3IAuhoiIKmUQAAAAAAADgQWMEQCAKqgwBC0GAgICAeAshCCABIAg2AgAgBCAIQQJ0aiIBIAEoAgBBAWo2AgAgA0EBaiIDIAdHDQALCyAGQQJPBEAgBCgCACEIQQEhAwNAIAQgA0ECdGoiASABKAIAIAhqIgg2AgAgA0EBaiIDIAZHDQALCyAHQQFrIgGtIQ8DQCAEIAIgD6dBAnQiA2ooAgBBAnRqIgcgBygCAEEBayIHNgIAIAUgASAHa0ECdGogACADaigCADYCACAPUCEDIA9CAX0hDyADRQ0ACyAGBEAgBEEAIAZBAnT8CwALCwQAQQAL";var Lo=class{};Jn(Lo,"DepthMapRange",1<<16),Jn(Lo,"MemoryPageSize",65536),Jn(Lo,"BytesPerFloat",4),Jn(Lo,"BytesPerInt",4);function BI(n){let r,e,t,o,i,a,s,l,c,u,p,d,h,f,m,y;function g(M){let D=new Float64Array(u,a,16);for(let B=0;B<16;B++)D[B]=M[B];let _;if(t>1){r.exports.sortIndexes(o,i,c,a,s,l,d.DepthMapRange,t);let B=new Uint32Array(t);_=B.buffer,B.set(new Uint32Array(u,l,t))}else if(t===1){let B=new Uint32Array(t);B[0]=new Uint32Array(u,o,e)[0],_=B.buffer}else _=new ArrayBuffer(0);n.postMessage({sortDone:!0,indexesBuffer:_},[_])}function v(M,D,_){let B=new Float32Array(u,i,e*3);t=0;let z=new Uint32Array(u,o,e);for(let U=0;U<_.length-1;U++){let R=D[U],W=M[U].elements,j=R.filter(H=>H.enabled&&H.mode==="Include").map(H=>H.type==="Box"?T(H):E(H)),F=R.filter(H=>H.enabled&&H.mode==="Exclude").map(H=>H.type==="Box"?T(H):E(H));for(let H=_[U];H<_[U+1];H++){let q=h[H*3],re=h[H*3+1],ee=h[H*3+2];if((j.length===0||P(q,re,ee,j))&&(F.length===0||!P(q,re,ee,F))){let X=1/(W[3]*q+W[7]*re+W[11]*ee+W[15]);B[t*3]=(W[0]*q+W[4]*re+W[8]*ee+W[12])*X,B[t*3+1]=(W[1]*q+W[5]*re+W[9]*ee+W[13])*X,B[t*3+2]=(W[2]*q+W[6]*re+W[10]*ee+W[14])*X,z[t]=H,t++}}}}function O(M,D){let _=[],B=D.filter(R=>R.enabled&&R.mode==="Include").map(R=>R.type==="Box"?T(R):E(R)),z=D.filter(R=>R.enabled&&R.mode==="Exclude").map(R=>R.type==="Box"?T(R):E(R)),U=M.length;for(let R=0;R<U;R+=3){let W=M[R],j=M[R+1],F=M[R+2];(B.length===0||P(W,j,F,B))&&(z.length===0||!P(W,j,F,z))||_.push(R/3)}return _}function P(M,D,_,B,z){return B[z==="Intersect"?"every":"some"](U=>{let R=S(M,D,_,U.invRotationMatrix,U.cropCenter);return Array.isArray(U)?x(R.x,R.y,R.z,U):N(R.x,R.y,R.z,U)})}function S(M,D,_,B,z){let U=M-z[0],R=D-z[1],W=_-z[2],j=1/(B[3]*U+B[7]*R+B[11]*W+B[15]);return{x:(B[0]*U+B[4]*R+B[8]*W+B[12])*j+z[0],y:(B[1]*U+B[5]*R+B[9]*W+B[13])*j+z[1],z:(B[2]*U+B[6]*R+B[10]*W+B[14])*j+z[2]}}function T(M){let D=M.cropSize[0]/2,_=M.cropSize[1]/2,B=M.cropSize[2]/2,z=[M.cropCenter[0]-D,M.cropCenter[1]-_,M.cropCenter[2]-B,M.cropCenter[0]+D,M.cropCenter[1]+_,M.cropCenter[2]+B],U=I(M.cropRotation);return Object.assign(z,{invRotationMatrix:U,cropCenter:M.cropCenter})}function I(M){let D=[],_=M[0]*Math.PI/180,B=M[1]*Math.PI/180,z=M[2]*Math.PI/180,U=Math.cos(_),R=Math.sin(_),W=Math.cos(B),j=Math.sin(B),F=Math.cos(z),H=Math.sin(z),q=U*F,re=U*H,ee=R*F,X=R*H;return D[0]=W*F,D[1]=-W*H,D[2]=j,D[4]=re+ee*j,D[5]=q-X*j,D[6]=-R*W,D[8]=X-q*j,D[9]=ee+re*j,D[10]=U*W,D[12]=0,D[13]=0,D[14]=0,D[3]=0,D[7]=0,D[11]=0,D[15]=1,D}function x(M,D,_,B){return M>=B[0]&&M<=B[3]&&D>=B[1]&&D<=B[4]&&_>=B[2]&&_<=B[5]}function E(M){let D=2/M.cropSize[0],_=2/M.cropSize[1],B=2/M.cropSize[2],z=I(M.cropRotation);return{invRadiusX:D,invRadiusY:_,invRadiusZ:B,cropCenter:M.cropCenter,invRotationMatrix:z}}function N(M,D,_,B){let z=(M-B.cropCenter[0])*B.invRadiusX,U=(D-B.cropCenter[1])*B.invRadiusY,R=(_-B.cropCenter[2])*B.invRadiusZ;return z*z+U*U+R*R<=1}n.onmessage=M=>{if(M.data.getCroppedIndexes){let D=new Uint32Array(O(new Float32Array(M.data.positions),M.data.crops)).buffer;n.postMessage({outOfBoundsIndexes:D},[D])}else if(M.data.positions)p=M.data.positions,h=new Float32Array(p),m=M.data.meshMatrixWorlds,y=M.data.cropsArray,f=M.data.meshIndexIntervals,v(m,y,f),n.postMessage({sortSetupComplete:!0});else if(M.data.sort||M.data.newMatrixWorlds||M.data.newCropsArray)(M.data.newMatrixWorlds||M.data.newCropsArray)&&(y=M.data.newCropsArray||y,m=M.data.newMatrixWorlds||m,v(m,y,f)),g(M.data.sort.view,M.data.sort.cameraPosition);else if(M.data.init){d=M.data.init.Constants,e=M.data.init.splatCount;let D=d.BytesPerInt,_=d.BytesPerFloat*3,B=new Uint8Array(M.data.init.sorterWasmBytes),z=D+_,U=e*z,R=e*d.BytesPerInt*2+d.DepthMapRange*d.BytesPerInt*2,W=d.MemoryPageSize*32,j=U+R+W,F=Math.floor(j/d.MemoryPageSize)+1,H={module:{},env:{memory:new WebAssembly.Memory({initial:F*2,maximum:F*3,shared:!0})}};WebAssembly.compile(B).then(q=>WebAssembly.instantiate(q,H)).then(q=>{r=q,o=0,i=e*D,a=i+e*_,c=a+16*d.BytesPerFloat*2,s=c+e*d.BytesPerInt,l=s+d.DepthMapRange*d.BytesPerInt,u=H.env.memory.buffer,n.postMessage({sortSetupPhase1Complete:!0})})}}}function Kv(n){let r=new Worker(URL.createObjectURL(new Blob(["(",BI.toString(),")(self)"],{type:"application/javascript"}))),e=atob(Xv),t=new Uint8Array(e.length);for(let o=0;o<e.length;o++)t[o]=e.charCodeAt(o);return r.postMessage({init:{sorterWasmBytes:t.buffer,splatCount:n,Constants:{BytesPerFloat:Lo.BytesPerFloat,BytesPerInt:Lo.BytesPerInt,DepthMapRange:Lo.DepthMapRange,MemoryPageSize:Lo.MemoryPageSize}}}),r}var hr=require("three");var Oe=require("three");var Ad=function(){let n=new Float32Array(1),r=new Int32Array(n.buffer);return function(e){return n[0]=e,r[0]}}(),Qv=function(n,r,e,t){return n+(r<<8)+(e<<16)+(t<<24)};var Md=new Oe.Vector2;function Id(n){let r=!1;return n.scene.objects.traverse((e,t)=>{if(t.visible===!1)return!0;t.type==="Splat"&&(r=!0)}),r}var qn=class extends Oe.Mesh{constructor(e,t,o,i,a=!1,s=1,l,c){super(o,i);this.splatCount=t,this.meshIndexIntervals=l,this.meshMatrixWorlds=c,this.splatBuffers=e,this.geometry=o,this.material=i,this.splatDataTextures=null,this.halfPrecisionCovariancesOnGPU=a,this.devicePixelRatio=s,this.resetLocalSplatDataAndTexturesFromSplatBuffer()}static buildMesh(e,t,o=!1,i=1,a,s){let l=qn.buildGeomtery(t),c=qn.buildMaterial(a);return new qn(e,t,l,c,o,i,a,s)}static buildMaterial(e){let t=`
3484
3484
  precision highp float;
3485
3485
  #include <common>
3486
3486
 
@@ -3634,4 +3634,4 @@ void main() {
3634
3634
  A = exp(A) * vColor.a;
3635
3635
  gl_FragColor = vec4(color.rgb, A);
3636
3636
  gVelocity = vec4(0.0); // so it is ignored by TAA
3637
- }`,i={covariancesTexture:{type:"t",value:null},centersColorsTexture:{type:"t",value:null},meshIndexIntervals:{value:e},meshMatrixWorldsTexture:{type:"t",value:null},focal:{type:"v2",value:new Oe.Vector2},viewport:{type:"v2",value:new Oe.Vector2},basisViewport:{type:"v2",value:new Oe.Vector2},debugColor:{type:"v3",value:new Oe.Color},covariancesTextureSize:{type:"v2",value:new Oe.Vector2(1024,1024)},centersColorsTextureSize:{type:"v2",value:new Oe.Vector2(1024,1024)},orthoZoom:{type:"f",value:-1}};return new Oe.ShaderMaterial({uniforms:i,vertexShader:t,fragmentShader:o,transparent:!0,alphaTest:1,blending:Oe.NormalBlending,depthTest:!0,depthWrite:!1,side:Oe.DoubleSide})}static buildGeomtery(e){let t=new Oe.BufferGeometry;t.setIndex([0,1,2,0,2,3]);let o=new Float32Array(4*3),i=new Oe.BufferAttribute(o,3);t.setAttribute("position",i),i.setXYZ(0,-1,-1,0),i.setXYZ(1,-1,1,0),i.setXYZ(2,1,1,0),i.setXYZ(3,1,-1,0),i.needsUpdate=!0;let a=new Oe.InstancedBufferGeometry().copy(t),s=new Uint32Array(e),l=new Oe.InstancedBufferAttribute(s,1,!1);return l.setUsage(Oe.DynamicDrawUsage),a.setAttribute("splatIndex",l),a.instanceCount=e,a}resetLocalSplatDataAndTexturesFromSplatBuffer(){this.updateLocalSplatDataFromSplatBuffer(),this.allocateAndStoreLocalSplatDataInTextures()}updateLocalSplatDataFromSplatBuffer(){this.splatBuffers.forEach(i=>i.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,t=0,o=0;for(let i of this.splatBuffers){let a=i.nsplats;this.colors.subarray(e,e+a*4).set(i.colorsA),e+=a*4,this.centers.subarray(t,t+a*3).set(i.decoded.xyz.denormDequant().data),t+=a*3,this.covariances.subarray(o,o+a*6).set(new Float32Array(i.precomputedCovarianceBufferData)),o+=a*6}}allocateAndStoreLocalSplatDataInTextures(){let o=this.splatCount,i=new Oe.Vector2(4096,1024);for(;i.x*i.y*2<o*6;)i.y*=2;let a=new Oe.Vector2(4096,1024);for(;a.x*a.y*4<o*4;)a.y*=2;let s,l;if(this.halfPrecisionCovariancesOnGPU){l=new Uint16Array(i.x*i.y*2);for(let f=0;f<this.covariances.length;f++)l[f]=Oe.DataUtils.toHalfFloat(this.covariances[f]);s=new Oe.DataTexture(l,i.x,i.y,Oe.RGFormat,Oe.HalfFloatType)}else l=new Float32Array(i.x*i.y*2),l.set(this.covariances),s=new Oe.DataTexture(l,i.x,i.y,Oe.RGFormat,Oe.FloatType);s.needsUpdate=!0,this.material.uniforms.covariancesTexture.value=s,this.material.uniforms.covariancesTextureSize.value.copy(i);let c=new Uint32Array(a.x*a.y*4);for(let f=0;f<o;f++){let m=f*4,y=f*3,g=f*4;c[g]=Qv(this.colors[m],this.colors[m+1],this.colors[m+2],this.colors[m+3]),c[g+1]=Ad(this.centers[y]),c[g+2]=Ad(this.centers[y+1]),c[g+3]=Ad(this.centers[y+2])}let u=new Oe.DataTexture(c,a.x,a.y,Oe.RGBAIntegerFormat,Oe.UnsignedIntType);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 f=0;f<this.meshMatrixWorlds.length;f++)d.set(this.meshMatrixWorlds[f].elements,f*16);let h=new Oe.DataTexture(d,p,1,Oe.RGBAFormat,Oe.FloatType);h.needsUpdate=!0,this.material.uniforms.meshMatrixWorldsTexture.value=h,this.material.uniformsNeedUpdate=!0,this.splatDataTextures={covariances:{data:l,texture:s,size:i},centerColors:{data:c,texture:u,size:a},meshMatrixWorlds:{data:d,texture:h}}}updateIndexes(e){let t=this.geometry;t.attributes.splatIndex.set(e),t.attributes.splatIndex.needsUpdate=!0,t.instanceCount=e.length}updateUniforms(e,t,o,i){this.splatCount>0&&(Md.set(e.x*this.devicePixelRatio,e.y*this.devicePixelRatio),this.material.uniforms.viewport.value.copy(Md),this.material.uniforms.basisViewport.value.set(2/Md.x,2/Md.y),this.material.uniforms.focal.value.set(t,o),this.material.uniforms.orthoZoom.value=i,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 Jv,hh=new Promise(n=>{Jv=n}),Zv=!1;var Nd;function mh(){if(Zv)return;if(Nd)return Nd;async function n(){let e=await import("./gaussian-splat-compression.js");Jv(e),Zv=!0}return Nd=n(),Nd}var eS;hh.then(n=>eS=n);var Yl=class{constructor(r={}){Jn(this,"updateView",function(){let r=new hr.Matrix4,e=[],t=new hr.Vector3(0,0,-1),o=new hr.Vector3(0,0,-1),i=new hr.Vector3,a=new hr.Vector3;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,h=!1;if(o.dot(t)<=.95&&(d=!0),a.copy(l.position).sub(i).length()>=1&&(h=!0),!d&&!h&&!c&&!u&&!this.needsInitialRender)return}this.needsInitialRender=!1,i.copy(l.position),t.copy(o),r.copy(l.matrixWorld).invert(),r.premultiply(this.dummyPerspectiveMatrix),e[0]=l.position.x,e[1]=l.position.y,e[2]=l.position.z;let p={sort:{view:r.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=r.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 hr.Matrix4().makePerspective(-1,1,-1,1,.1,1e3)}updateSplatMeshUniforms(r,e){let t=new hr.Vector2;if(this.splatMesh===null)return;this.splatMesh.getSplatCount()>0&&(r.getSize(t),this.cameraFocalLengthX=e.projectionMatrix.elements[0]*this.devicePixelRatio*t.x*.45,this.cameraFocalLengthY=e.projectionMatrix.elements[5]*this.devicePixelRatio*t.y*.45,this.splatMesh.updateUniforms(t,this.cameraFocalLengthX,this.cameraFocalLengthY,e.isPerspectiveCamera?-1:e.zoom*this.devicePixelRatio))}loadSplat(r={}){this.activePage=this.scene.activePage,r.position&&(r.position=new hr.Vector3().fromArray(r.position)),r.orientation&&(r.orientation=new hr.Quaternion().fromArray(r.orientation)),r.halfPrecisionCovariances=!!r.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 t=e.map(a=>new eS.GSplineBuffer(new Uint8Array(a.data.buffer).buffer)),o=0,i=[0];for(let a of t)o+=a.getSplatCount(),i.push(o);return this.setupSplatMesh(t,o,r.position,r.orientation,r.halfPrecisionCovariances,this.devicePixelRatio,i,this.meshMatrixWorlds),this.setupSortWorker(o),!0}updateMatrixWorldsInWorkerIfNeeded(){let r=this.splatDataTextures.meshMatrixWorlds.data;for(let e=0;e<this.meshMatrixWorlds.length;e++)r.set(this.meshMatrixWorlds[e].elements,e*16);return this.splatDataTextures.meshMatrixWorlds.texture.needsUpdate=!0,this.meshMatrixWorlds.every((e,t)=>e.equals(this.meshMatrixWorldsOld[t]))?!1:(this.meshMatrixWorldsOld=this.meshMatrixWorlds.map(e=>e.clone()),!0)}cropsChanged(){let r=!1;return this.splatEntries.forEach((e,t)=>{e.data.crops.forEach((o,i)=>{this.cropsArray[t][i]===void 0?(r=!0,this.cropsArray[t][i]=o.data):Object.entries(o.data).forEach(([a,s])=>{Array.isArray(s)&&s.some((l,c)=>l!==this.cropsArray[t][i][a][c])?(r=!0,this.cropsArray[t][i][a]=s):s!==this.cropsArray[t][i]?.[a]&&(r=!0,this.cropsArray[t][i][a]=s)})}),e.data.crops.length!==this.cropsArray[t]?.length&&(this.cropsArray[t].length=e.data.crops.length,r=!0)}),r}setupSplatMesh(r,e,t=new hr.Vector3,o=new hr.Quaternion,i=!1,a=1,s,l){this.splatMesh=qn.buildMesh(r,e,i,a,s,l),this.splatMesh.position.copy(t),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(r){this.sortWorker=Kv(r),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(r,e){this.splatMesh!==null&&(this.updateSplatMeshUniforms(r,e),this.updateView(!1,e))}getSplatMesh(){return this.splatMesh}};var LI=new Yr.MeshBasicMaterial;LI.wireframe=!0;var tS=new Yr.Vector3,Dd=class extends Yr.Scene{constructor(e,t){super();this.data=e;this.sharedAssets=t;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.entityByUuid={};this.entityIdentityToEntity={};this.toExpandCloner=new Set;this.toUpdateCloner=new Set;this.pendingCommands=[];this.pathConstraints=new Td;this.invisibleObjects=new Un("jflkdsafjasdifjaslk",{...ou.defaultData,visible:!1,name:"buildin invisible"});this.needsRecomputeInstances=!1;this.init(e,t),this.matrixAutoUpdate=!1,this.errorPage=new qr("fdasfa",{...Uo.defaultData,name:""},{shared:t,scene:this})}markGeometryCacheDirty(){this.geometryCacheChanged=!0}markNeedsUpdateRendererDirty(){this.needsTransmissionDirty=!0,this.needsNormalDirty=!0}needsTransmission(){return this.needsTransmissionDirty&&(this._needsTransmission=Yv(this),this.needsTransmissionDirty=!1),this._needsTransmission}needsNormal(){return this.needsNormalDirty&&(this._needsNormal=$v(this),this.needsNormalDirty=!1),this._needsNormal}registerInstanceAndSetUuid(e){let t=e.identity.join("-"),o=this.entityIdentityToEntity[t];o&&(e.uuid=o.uuid),this.entityIdentityToEntity[t]=e,this.entityByUuid[e.uuid]=e}markPenumbraSizeDirty(){for(let e of this.children)e instanceof qr&&(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 t=this.find(e);if(t===void 0)return;let o=[],i=t;for(;i!==this;){let a=i;i=i.parent;let s=i.children.indexOf(a);o.splice(0,0,s)}return{entity:t,sortKey:o}}getAllSorted(e){let t=[];for(let o of e){let i=this.getWithSortKey(o.id);i!==void 0&&t.push(i)}return t.sort((o,i)=>oc(o.sortKey,i.sortKey)),t.map(o=>o.entity)}nonExistOrDescendantOf(e,t){let o=this.find(e);if(o===void 0)return!0;for(;o;){if(o.uuid===t)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===Sn)return this.activePage.personalCamera}if(e===""||e===void 0)return;let t=this.entityByUuid[e];return t===void 0?this.getObjectByProperty("uuid",e):t}find2D(e){for(let t of this.children)if(t instanceof qr&&t.uiScene){let o=t.uiScene.find(e);if(o)return o}}findScene2DfromObject2D(e){for(let t of this.children)if(t instanceof qr&&t.uiScene&&t.uiScene.find(e))return t.uiScene}find2DInUIObjects(e){let t;return this.traverseEntity(o=>{t===void 0&&o instanceof Ai&&(t=o.uiCanvas.find(e))}),t}traverse2D(e){for(let t of this.children)t instanceof qr&&t.uiScene&&t.uiScene.traverse(e)}debugEnsureEntity(e){let t=this.find(e);if(t){if(Array.isArray(t.identity)&&this.findInstance(t.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(t=>{this.toExpandCloner.add(t)})}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,t){e.path.length===1&&e.path[0]==="components"&&e.type===1&&this.createChildrenObjects([{...e.data.asset,id:e.id}],this.invisibleObjects,t)}updateTreeByOp(e,t){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 i=this.createObject(e.id,e.data,e.children,o,e.localIndex,t);i.updateVisible(this),i.resetBBoxNeedsUpdate(),Fn(i)&&Gl(i.parent)&&(i.invalidateUpstreamBooleanData(),i.parent.invalidateDownstreamBooleanData().recomputeBoolean()),this.markNeedsRecomputeInstancesForAncessors(o),this.markNeedsRecomputeInstancesForChildren(i),this.markToExpandCloner(i),this.markPenumbraSizeDirty(),i.updatePathSnapping()}else if(e.path.length===0&&e.type===8){let o=this.find(e.id);if(o===void 0)throw new Error("unexpected");this.markToExpandCloner(o),o.resetBBoxNeedsUpdate(),this.unregisterObject(o);let i=o.parent;this.markNeedsRecomputeInstancesForAncessors(i),this.markNeedsRecomputeInstancesForChildren(o),this.markPenumbraSizeDirty(),o.parent.remove(o),Gl(o.parent)&&(o.parent.invalidateUpstreamBooleanData(),o.parent.invalidateDownstreamBooleanData().recomputeBoolean()),Fn(o)&&(o.freeBooleanPointer(),i instanceof Pr&&i.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 i=o.parent;this.markNeedsRecomputeInstancesForAncessors(i),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()),Fn(o)&&(o.invalidateUpstreamBooleanData(),Gl(o.parent)?o.parent.invalidateDownstreamBooleanData().recomputeBoolean():i instanceof Pr&&i.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 t of this.children)t instanceof qr&&(t.visible=t.uuid===e,t.visible&&(this.activePage=t,this.activePage.onActive(this)));this.activePage!==this.splatViewer?.activePage&&this.reloadSplats()}updateEntityByOp(e,t,o,i){if(t.type===0){if(("overrides"in t.props||"component"in t.props)&&this.markNeedsRecomputeInstances(),"visible"in t.props&&this.markPenumbraSizeDirty(),t.path.includes("overrides")&&"states"in t.props){let{rest:s}=t.props;t={...t,props:s},this.markNeedsRecomputeInstances()}t.path[0]==="pathSnapping"&&t.props.pathId!==void 0&&this.pathConstraints.setConstraint(e,t.props.pathId)}let a=this.find(e);if(a)try{Hv(a,t,o,{scene:this,shared:i}),a instanceof St&&a.updateGeometryGroupsIfNeeded()}catch(s){console.error(s)}}updateEntity2DByOp(e,t,o,i,a,s=[]){e.updateEntityByOp(t,o,i,a),this.traverseEntity(l=>{(l instanceof Ai||l instanceof qr)&&(s.includes(l.frameId??"")||l.frameId===t)&&l.updateEntity2DByOp(t,o,i,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,t){let o=Object.entries(t.data.lib.components).map((i,a)=>({data:i[1].asset.data,children:i[1].asset.children,id:i[0],fi:a}));this.invisibleObjects.updateState(this.invisibleObjects.data,{scene:this,shared:t}),this.add(this.invisibleObjects),this.createChildrenObjects(o,this.invisibleObjects,t),this.createChildrenObjects(e.objects,this,t),this.updatePage(e.publish.playPage),this.activePage.switchToPlayCamera(),this.expandInstances(t,!0),this.traverseEntity(i=>{i instanceof an&&i.updateUp()}),this.doPendingExpandCloner(),this.applyPendingCommands()}markNeedsRecomputeInstances(){this.needsRecomputeInstances=!0}markNeedsRecomputeInstancesForChildren(e){e.traverseEntity(t=>{(t.data.type==="Component"||t.data.type==="Instance")&&this.markNeedsRecomputeInstances()})}markNeedsRecomputeInstancesForAncessors(e){je.is(e)&&(e.data.type==="Component"&&this.markNeedsRecomputeInstances(),e.traverseAncestors(t=>{je.is(t)&&t.data.type==="Component"&&this.markNeedsRecomputeInstances()}))}relativeizeInner(e,t,o,i,a,s,l){if(e){let c=i.find(e);c&&c!==i&&a.forInstancesRec(u=>{u.data=mn(u.data,p=>{let d=p.events.data(l.id),h=u.goUp(s);if(h){let f=[...rc(h.identity),e].join("-"),m=this.entityIdentityToEntity[f];if(m){let y=m.uuid,g=yt.zoom(d,t);g[o]=y}else{if(!1)debugger;console.warn("cannot find instance")}}}).data})}}rewriteActions(e,t,o,i,a,s){e.forEach(l=>{l.data.type==="Transition"?this.relativeizeInner(l.data.object,[...t,l.id],"object",o,i,a,s):l.data.type==="Animation"&&this.relativeizeInner(l.data.object,[...t,l.id],"object",o,i,a,s)})}rewriteEventsBeforeGoToPlayMode(){this.traverseEntity(e=>{if(e instanceof cn&&typeof e.identity=="string"&&e.data.type==="Component")return e.traverseEntity((t,o)=>{t.data.events.forEach(i=>{if(i.data.type==="GameControl"){let a=!1;if(t.forInstancesRec(s=>{s.data=mn(s.data,l=>{s.isInstanceRoot||(l.events.delete(i.id),a=!0)}).data}),a===!1)for(let s of su.list)this.rewriteActions(i.data.gameActions[s],["gameActions",s],e,t,o,i)}else i.data.type==="Conditional"?(i.data.condition.type==="Distance"?(this.relativeizeInner(i.data.condition.fromObject,["condition"],"fromObject",e,t,o,i),this.relativeizeInner(i.data.condition.toObject,["condition"],"toObject",e,t,o,i)):i.data.condition.type==="State"?this.relativeizeInner(i.data.condition.object,["condition"],"object",e,t,o,i):i.data.condition.type==="Comparison"&&(i.data.condition.lOperand.type==="Property"&&this.relativeizeInner(i.data.condition.lOperand.value[0],["condition","lOperand","value"],0,e,t,o,i),i.data.condition.rOperand.type==="Property"&&this.relativeizeInner(i.data.condition.rOperand.value[0],["condition","rOperand","value"],0,e,t,o,i)),this.rewriteActions(i.data.inActions,["inActions"],e,t,o,i),this.rewriteActions(i.data.outActions,["outActions"],e,t,o,i)):"actions"in i.data&&this.rewriteActions(i.data.actions,["actions"],e,t,o,i)})}),!0})}expandInstances(e,t,o){let i=new Set;this.traverseEntity(a=>{if(a instanceof cn&&a.isInstanceRoot)return a.expandInstanceChildren({scene:this,shared:e,pendingDeletes:i}),t||a.resetBBoxNeedsUpdate(),o&&a.traverseEntity(s=>{o.addClip(s)}),!0});for(let a of i)this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(a),vd(a)}recomputeInstances(e,t){this.needsRecomputeInstances&&(this.needsRecomputeInstances=!1,this.traverseEntity(o=>{o instanceof cn&&o.isInstanceRoot&&(o.component=void 0)}),this.expandInstances(e,!1,t))}disposeAndUnregisterEntityRecursivelyIfNotReregistered(e){e.traverseEntity(t=>{let o=typeof t.identity=="string"?t.identity:t.identity.join("-");this.entityIdentityToEntity[o]===t&&(delete this.entityByUuid[t.uuid],delete this.entityIdentityToEntity[o]),t.dispose()})}clearScene(){for(let e of this.children)je.is(e)&&e.disposeRecursively();this.children.length=0}resetAfterClear(e,t){this.init(e,t)}raycast(e){return this.raycast1(e,!1)}raycast1(e,t){let o=[],i=a=>{for(let s of a.children){let l=s.cloner;if(je.is(s)&&!s.raycastLock&&(s.visible||l?.object.data.visible))if(t===!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(Fn(s)||jl(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,o),$l(s,e,o)),i(s)}};return i(this.activePage),o}raycastWithClones(e){let t=[],o=i=>{for(let a of i.children){let s=a.cloner;je.is(a)&&(a.visible||s?.object.data.visible)&&((Fn(a)||jl(a)&&this.enableHelpers&&a.objectHelper.visible)&&(e.intersectObject(a,!1,t),$l(a,e,t,!0)),o(a))}};return o(this),t}forEachEntity(e){for(let t of this.children)je.is(t)&&e(t)}traverseConcreteEntity(e){for(let t of this.children)je.is(t)&&t.isConcreteEntity&&t.traverseEntity(e)}traverseEntity(e){for(let t of this.children)je.is(t)&&t.traverseEntity(e)}updateFont(e,t){this.traverseEntity(o=>{if(o instanceof St&&o.data.type==="Mesh"&&o.data.geometry.type==="TextGeometry"&&o.data.geometry.font===e){let i=o.geometry,a=o.data.geometry;i.updateFont(e,t).then(()=>{i.update(a);let s=o.invalidateDownstreamBooleanData();Gl(s)&&s.recomputeBoolean()})}})}traverseObject(e){for(let t of this.children)Pa.is(t)&&t.traverseObject(e)}traverseVisibleEntity(e){for(let t of this.children)je.is(t)&&t.visible&&t.traverseVisibleEntity(e)}dispose(){this.clearScene()}createChildrenObjects(e,t,o){let i=0;for(let a of e)this.createObject(a.id,a.data,a.children,t,i,o),i+=1}registerObjectCreatedInLegacy(e){this.entityByUuid[e.uuid]=e}unregisterObject(e){delete this.entityByUuid[e.uuid];for(let t of e.children)this.unregisterObject(t)}createObject(e,t,o,i,a,s){let l={scene:this,shared:s},c=Cd(e,t,l);return c&&(this.entityByUuid[e]=c,i.add(c),i.children.splice(a,0,i.children.pop()),o.length>0&&(c.isInstanceRoot?console.error("instance should not have children!"):this.createChildrenObjects(o,c,s)),c.updateState(t,l),c instanceof St&&c.updateGeometryGroupsIfNeeded(),c.updateVisible(this),c.cloner&&this.toExpandCloner.add(c),t.pathSnapping?.pathId&&this.pathConstraints.setConstraint(e,t.pathSnapping.pathId)),t.type==="Empty"&&t.animations&&c.traverseEntity(u=>{let p=u.dataPatched;if(u instanceof St&&p.bones&&p.boneInverses){let d=p.bones.map(m=>this.find(m)),h=p.boneInverses.map(m=>new Yr.Matrix4().fromArray(m)),f=new Yr.Skeleton(d,h);u.bind(f,u.bindMatrix)}else u.matrixAutoUpdate=!0}),c}getCenter(e){let t=[];for(let i=0,a=e.length;i<a;++i){let{id:s,recursive:l}=e[i],c=this.find(s),u=l?c.recursiveBBox:c.singleBBox;t.push(...u.vertices)}let o=new Yr.Box3;return o.setFromPoints(t),o.getCenter(tS),tS}copyMatrixWorld(e,t){if(e===null){t.identity();return}let o=this.find(e);o?t.copy(o.matrixWorld):t.identity()}copyParentMatrixWorld(e,t){if(e===null){t.identity();return}let o=this.find(e)?.parent;o?t.copy(o.matrixWorld):t.identity()}traverseMaterial(e){this.traverseEntity(t=>{if(t instanceof Gt)if(Array.isArray(t.material))for(let o=0;o<t.material.length;o++)t.material[o]instanceof Sr&&e(t.material[o]);else t.material instanceof Sr&&e(t.material)})}updateViewPlaneSize(e,t,o=!1){this.traverseConcreteEntity(i=>{i instanceof an&&i.setViewplaneSize(e,t,o)})}initializeSplatViewer(){this.splatViewer=new Yl({scene:this}),this.reloadSplats()}reloadSplats(){this.splatViewer?.loadSplat()}};var rS=require("three/examples/jsm/loaders/DRACOLoader.js");var $n;function oS(){return $n||($n=new rS.DRACOLoader,$n.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),$n.decoderPending}async function RI(n){if($n){let r={attributeIDs:$n.defaultAttributeIDs,attributeTypes:$n.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await $n.decodeGeometry(new Int8Array(n).buffer,r)}catch(t){console.error(t)}if(e)return{index:e.index?{array:e.index.array}:void 0,attributes:Object.entries(e.attributes).map(([t,o])=>({name:t,itemSize:o.itemSize,array:o.array}))}}return null}async function nS(n,r){let[e,t]=rp(Hc.deserialize(new Uint8Array(n)));return cu(e),r&&r(e),t.result().data}function iS(n){let r=[];return n.scene.objects.traverse((e,t)=>{t.type==="Mesh"&&t.geometry.type==="NonParametricGeometry"&&t.geometry.data.draco!==void 0&&r.push(t)}),r}async function aS(n){for(let r of n){let e=await RI(r.geometry.data.draco);if(e){let t=r.geometry.data;e.index&&(t.index={array:e.index.array,itemSize:1,normalized:!1,type:"Uint32Array"});let o={};e.attributes.forEach(({name:i,array:a,itemSize:s})=>{o[i]={array:a,itemSize:s,type:"Float32Array",normalized:!1}}),t.attributes=o,t.draco=void 0}}}var VI=require("three"),zI=require("three/examples/jsm/utils/BufferGeometryUtils.js");function sS(n){let r;if(!!n.index)for(let e=0;e<n.index.array.length;e+=3)r=n.index.array[e],n.index.array[e]=n.index.array[e+2],n.index.array[e+2]=r}var Xl=require("three");function lS(n){let r=new Set;return n.traverse(e=>{if(e instanceof wr)if(Pt(e.material))e.material.forEach(t=>{let o=t;r.has(o)||r.add(o)});else{let t=e.material;r.has(t)||r.add(t)}}),r.forEach(e=>{if(e instanceof Array)return;let t=e.onBeforeCompile.bind(e);if(GI(e)){Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new Xl.Color,specularColor:new Xl.Color});let o=0;e.onBeforeCompile=(i,a)=>{t&&t(i,a),i.uniforms=Object.assign({},Xl.ShaderLib.physical.uniforms,i.uniforms),e.getLayersOfType("transmission").forEach(s=>{if(i.uniforms.transmissionSamplerMap.value){let l=s.color;l&&(l.transmissionSamplerMap.value=i.uniforms.transmissionSamplerMap.value,l.transmissionSamplerSize.value=i.uniforms.transmissionSamplerSize.value,l.aspectRatio.value=K0(window.innerWidth,window.innerHeight),e.defines.IS_THREEJS_EXPORT=!0)}else o++,o<2&&(e.needsUpdate=!0)})}}else jI(e)||(e.onBeforeCompile=(o,i)=>{t&&t(o,i),e.transparent=!1})}),n}function GI(n){return n.getLayersOfType("transmission").length>0}function jI(n){let r=0;for(let e of n.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&&(r+=(1-r)*o.value)}}return r<1}function cS(n){return n.traverse(r=>{if(r.type==="Camera"){let e=r;e.type=e.cameraType}}),n}function uS(n){let r=[],e=(t,o=0)=>{let i=o>0?t+o:t;return r.includes(i)?e(t,o+1):i};return n.traverse(t=>{if(r.includes(t.name)){let o=t.name,i=e(t.name);if(t.name=i,t.isMesh){let a=t;a.material instanceof Array?a.material.forEach(s=>{s.name=s.name.replace(o,i)}):a.material.isAsset||(a.material.name=a.material.name.replace(o,i))}}r.push(t.name)}),n}var dS=require("three/examples/jsm/utils/BufferGeometryUtils.js");function pS(n){let r=[];return n.traverse(e=>{e instanceof ws&&r.push(e)}),r.forEach(e=>{let t=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&&sS(l),l}).filter(s=>s!==void 0)];if(!e.parameters.hideBase&&t instanceof Gt&&a.unshift(t.geometry),a.length){let s=(0,dS.mergeBufferGeometries)(a);t instanceof Gt&&(t.geometry=s)}e.removeFromParent(),t.setFromClonerState(null,{scene:n,shared:ub})}),n}function fS(n){return n.traverse(r=>{r.matrixAutoUpdate=!0}),n}function hS(n){Object.values(n.shared.materials).forEach(r=>{yh(r)}),n.scene.objects.traverse((r,e)=>{"material"in e?yh(e.material):"materials"in e&&e.materials.forEach(t=>{yh(t)})})}function yh(n){if(typeof n=="string")return;let r=[];n.layers.forEach((e,t)=>{e.type==="outline"&&r.push(t)}),r.reverse().forEach(e=>{n.layers.delete(e)}),r.length&&console.warn("The Spline Loader currently does not support the outline layer.")}var bS=_i(yS(),1);function gS(n){return n.traverseMaterial(r=>{r.needsJitter=!1}),n}var xS="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",Ed=class extends _d.Loader{load(r,e,t,o=console.error){let i=new _d.FileLoader(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),r.endsWith(".spline")?console.warn(xS+" The .spline files are only meant to be used by the Editor."):r.endsWith(".splinecode")||console.warn(xS),i.load(r,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)}},t,o)}async parse(r){let e=await nS(r,hS),t=iS(e);e.version&&(0,bS.default)(e.version,"1.1.6")>0&&console.warn("Your .splinecode file is more recent than the library. Please upgrade @splinetool/loader to the latest version."),await Promise.allSettled([t.length&&oS(),mb(e)&&P0(),Tb(e)&&lb(),iv(e)&&rv(),Id(e)&&mh()].filter(Boolean)),t.length&&await aS(t);let o=new wi(e.shared);Object.values(o.getMaterials()).forEach(s=>Object.assign(s,{isAsset:!0}));let i=new Dd(e.scene,o);Id(e)&&i.initializeSplatViewer();let a=i.activeCamera;return a&&Object.assign(a,{makeDefault:!0}),i=pS(i),i=lS(i),i=cS(i),i=uS(i),i=fS(i),i=gS(i),i}};
3637
+ }`,i={covariancesTexture:{type:"t",value:null},centersColorsTexture:{type:"t",value:null},meshIndexIntervals:{value:e},meshMatrixWorldsTexture:{type:"t",value:null},focal:{type:"v2",value:new Oe.Vector2},viewport:{type:"v2",value:new Oe.Vector2},basisViewport:{type:"v2",value:new Oe.Vector2},debugColor:{type:"v3",value:new Oe.Color},covariancesTextureSize:{type:"v2",value:new Oe.Vector2(1024,1024)},centersColorsTextureSize:{type:"v2",value:new Oe.Vector2(1024,1024)},orthoZoom:{type:"f",value:-1}};return new Oe.ShaderMaterial({uniforms:i,vertexShader:t,fragmentShader:o,transparent:!0,alphaTest:1,blending:Oe.NormalBlending,depthTest:!0,depthWrite:!1,side:Oe.DoubleSide})}static buildGeomtery(e){let t=new Oe.BufferGeometry;t.setIndex([0,1,2,0,2,3]);let o=new Float32Array(4*3),i=new Oe.BufferAttribute(o,3);t.setAttribute("position",i),i.setXYZ(0,-1,-1,0),i.setXYZ(1,-1,1,0),i.setXYZ(2,1,1,0),i.setXYZ(3,1,-1,0),i.needsUpdate=!0;let a=new Oe.InstancedBufferGeometry().copy(t),s=new Uint32Array(e),l=new Oe.InstancedBufferAttribute(s,1,!1);return l.setUsage(Oe.DynamicDrawUsage),a.setAttribute("splatIndex",l),a.instanceCount=e,a}resetLocalSplatDataAndTexturesFromSplatBuffer(){this.updateLocalSplatDataFromSplatBuffer(),this.allocateAndStoreLocalSplatDataInTextures()}updateLocalSplatDataFromSplatBuffer(){this.splatBuffers.forEach(i=>i.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,t=0,o=0;for(let i of this.splatBuffers){let a=i.nsplats;this.colors.subarray(e,e+a*4).set(i.colorsA),e+=a*4,this.centers.subarray(t,t+a*3).set(i.decoded.xyz.denormDequant().data),t+=a*3,this.covariances.subarray(o,o+a*6).set(new Float32Array(i.precomputedCovarianceBufferData)),o+=a*6}}allocateAndStoreLocalSplatDataInTextures(){let o=this.splatCount,i=new Oe.Vector2(4096,1024);for(;i.x*i.y*2<o*6;)i.y*=2;let a=new Oe.Vector2(4096,1024);for(;a.x*a.y*4<o*4;)a.y*=2;let s,l;if(this.halfPrecisionCovariancesOnGPU){l=new Uint16Array(i.x*i.y*2);for(let f=0;f<this.covariances.length;f++)l[f]=Oe.DataUtils.toHalfFloat(this.covariances[f]);s=new Oe.DataTexture(l,i.x,i.y,Oe.RGFormat,Oe.HalfFloatType)}else l=new Float32Array(i.x*i.y*2),l.set(this.covariances),s=new Oe.DataTexture(l,i.x,i.y,Oe.RGFormat,Oe.FloatType);s.needsUpdate=!0,this.material.uniforms.covariancesTexture.value=s,this.material.uniforms.covariancesTextureSize.value.copy(i);let c=new Uint32Array(a.x*a.y*4);for(let f=0;f<o;f++){let m=f*4,y=f*3,g=f*4;c[g]=Qv(this.colors[m],this.colors[m+1],this.colors[m+2],this.colors[m+3]),c[g+1]=Ad(this.centers[y]),c[g+2]=Ad(this.centers[y+1]),c[g+3]=Ad(this.centers[y+2])}let u=new Oe.DataTexture(c,a.x,a.y,Oe.RGBAIntegerFormat,Oe.UnsignedIntType);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 f=0;f<this.meshMatrixWorlds.length;f++)d.set(this.meshMatrixWorlds[f].elements,f*16);let h=new Oe.DataTexture(d,p,1,Oe.RGBAFormat,Oe.FloatType);h.needsUpdate=!0,this.material.uniforms.meshMatrixWorldsTexture.value=h,this.material.uniformsNeedUpdate=!0,this.splatDataTextures={covariances:{data:l,texture:s,size:i},centerColors:{data:c,texture:u,size:a},meshMatrixWorlds:{data:d,texture:h}}}updateIndexes(e){let t=this.geometry;t.attributes.splatIndex.set(e),t.attributes.splatIndex.needsUpdate=!0,t.instanceCount=e.length}updateUniforms(e,t,o,i){this.splatCount>0&&(Md.set(e.x*this.devicePixelRatio,e.y*this.devicePixelRatio),this.material.uniforms.viewport.value.copy(Md),this.material.uniforms.basisViewport.value.set(2/Md.x,2/Md.y),this.material.uniforms.focal.value.set(t,o),this.material.uniforms.orthoZoom.value=i,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 Jv,hh=new Promise(n=>{Jv=n}),Zv=!1;var Nd;function mh(){if(Zv)return;if(Nd)return Nd;async function n(){let e=await import("./gaussian-splat-compression.js");Jv(e),Zv=!0}return Nd=n(),Nd}var eS;hh.then(n=>eS=n);var Yl=class{constructor(r={}){Jn(this,"updateView",function(){let r=new hr.Matrix4,e=[],t=new hr.Vector3(0,0,-1),o=new hr.Vector3(0,0,-1),i=new hr.Vector3,a=new hr.Vector3;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,h=!1;if(o.dot(t)<=.95&&(d=!0),a.copy(l.position).sub(i).length()>=1&&(h=!0),!d&&!h&&!c&&!u&&!this.needsInitialRender)return}this.needsInitialRender=!1,i.copy(l.position),t.copy(o),r.copy(l.matrixWorld).invert(),r.premultiply(this.dummyPerspectiveMatrix),e[0]=l.position.x,e[1]=l.position.y,e[2]=l.position.z;let p={sort:{view:r.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=r.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 hr.Matrix4().makePerspective(-1,1,-1,1,.1,1e3)}updateSplatMeshUniforms(r,e){let t=new hr.Vector2;if(this.splatMesh===null)return;this.splatMesh.getSplatCount()>0&&(r.getSize(t),this.cameraFocalLengthX=e.projectionMatrix.elements[0]*this.devicePixelRatio*t.x*.45,this.cameraFocalLengthY=e.projectionMatrix.elements[5]*this.devicePixelRatio*t.y*.45,this.splatMesh.updateUniforms(t,this.cameraFocalLengthX,this.cameraFocalLengthY,e.isPerspectiveCamera?-1:e.zoom*this.devicePixelRatio))}loadSplat(r={}){this.activePage=this.scene.activePage,r.position&&(r.position=new hr.Vector3().fromArray(r.position)),r.orientation&&(r.orientation=new hr.Quaternion().fromArray(r.orientation)),r.halfPrecisionCovariances=!!r.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 t=e.map(a=>new eS.GSplineBuffer(new Uint8Array(a.data.buffer).buffer)),o=0,i=[0];for(let a of t)o+=a.getSplatCount(),i.push(o);return this.setupSplatMesh(t,o,r.position,r.orientation,r.halfPrecisionCovariances,this.devicePixelRatio,i,this.meshMatrixWorlds),this.setupSortWorker(o),!0}updateMatrixWorldsInWorkerIfNeeded(){let r=this.splatDataTextures.meshMatrixWorlds.data;for(let e=0;e<this.meshMatrixWorlds.length;e++)r.set(this.meshMatrixWorlds[e].elements,e*16);return this.splatDataTextures.meshMatrixWorlds.texture.needsUpdate=!0,this.meshMatrixWorlds.every((e,t)=>e.equals(this.meshMatrixWorldsOld[t]))?!1:(this.meshMatrixWorldsOld=this.meshMatrixWorlds.map(e=>e.clone()),!0)}cropsChanged(){let r=!1;return this.splatEntries.forEach((e,t)=>{e.data.crops.forEach((o,i)=>{this.cropsArray[t][i]===void 0?(r=!0,this.cropsArray[t][i]=o.data):Object.entries(o.data).forEach(([a,s])=>{Array.isArray(s)&&s.some((l,c)=>l!==this.cropsArray[t][i][a][c])?(r=!0,this.cropsArray[t][i][a]=s):s!==this.cropsArray[t][i]?.[a]&&(r=!0,this.cropsArray[t][i][a]=s)})}),e.data.crops.length!==this.cropsArray[t]?.length&&(this.cropsArray[t].length=e.data.crops.length,r=!0)}),r}setupSplatMesh(r,e,t=new hr.Vector3,o=new hr.Quaternion,i=!1,a=1,s,l){this.splatMesh=qn.buildMesh(r,e,i,a,s,l),this.splatMesh.position.copy(t),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(r){this.sortWorker=Kv(r),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(r,e){this.splatMesh!==null&&(this.updateSplatMeshUniforms(r,e),this.updateView(!1,e))}getSplatMesh(){return this.splatMesh}};var LI=new Yr.MeshBasicMaterial;LI.wireframe=!0;var tS=new Yr.Vector3,Dd=class extends Yr.Scene{constructor(e,t){super();this.data=e;this.sharedAssets=t;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.entityByUuid={};this.entityIdentityToEntity={};this.toExpandCloner=new Set;this.toUpdateCloner=new Set;this.pendingCommands=[];this.pathConstraints=new Td;this.invisibleObjects=new Un("jflkdsafjasdifjaslk",{...ou.defaultData,visible:!1,name:"buildin invisible"});this.needsRecomputeInstances=!1;this.init(e,t),this.matrixAutoUpdate=!1,this.errorPage=new qr("fdasfa",{...Uo.defaultData,name:""},{shared:t,scene:this})}markGeometryCacheDirty(){this.geometryCacheChanged=!0}markNeedsUpdateRendererDirty(){this.needsTransmissionDirty=!0,this.needsNormalDirty=!0}needsTransmission(){return this.needsTransmissionDirty&&(this._needsTransmission=Yv(this),this.needsTransmissionDirty=!1),this._needsTransmission}needsNormal(){return this.needsNormalDirty&&(this._needsNormal=$v(this),this.needsNormalDirty=!1),this._needsNormal}registerInstanceAndSetUuid(e){let t=e.identity.join("-"),o=this.entityIdentityToEntity[t];o&&(e.uuid=o.uuid),this.entityIdentityToEntity[t]=e,this.entityByUuid[e.uuid]=e}markPenumbraSizeDirty(){for(let e of this.children)e instanceof qr&&(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 t=this.find(e);if(t===void 0)return;let o=[],i=t;for(;i!==this;){let a=i;i=i.parent;let s=i.children.indexOf(a);o.splice(0,0,s)}return{entity:t,sortKey:o}}getAllSorted(e){let t=[];for(let o of e){let i=this.getWithSortKey(o.id);i!==void 0&&t.push(i)}return t.sort((o,i)=>oc(o.sortKey,i.sortKey)),t.map(o=>o.entity)}nonExistOrDescendantOf(e,t){let o=this.find(e);if(o===void 0)return!0;for(;o;){if(o.uuid===t)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===Sn)return this.activePage.personalCamera}if(e===""||e===void 0)return;let t=this.entityByUuid[e];return t===void 0?this.getObjectByProperty("uuid",e):t}find2D(e){for(let t of this.children)if(t instanceof qr&&t.uiScene){let o=t.uiScene.find(e);if(o)return o}}findScene2DfromObject2D(e){for(let t of this.children)if(t instanceof qr&&t.uiScene&&t.uiScene.find(e))return t.uiScene}find2DInUIObjects(e){let t;return this.traverseEntity(o=>{t===void 0&&o instanceof Ai&&(t=o.uiCanvas.find(e))}),t}traverse2D(e){for(let t of this.children)t instanceof qr&&t.uiScene&&t.uiScene.traverse(e)}debugEnsureEntity(e){let t=this.find(e);if(t){if(Array.isArray(t.identity)&&this.findInstance(t.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(t=>{this.toExpandCloner.add(t)})}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,t){e.path.length===1&&e.path[0]==="components"&&e.type===1&&this.createChildrenObjects([{...e.data.asset,id:e.id}],this.invisibleObjects,t)}updateTreeByOp(e,t){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 i=this.createObject(e.id,e.data,e.children,o,e.localIndex,t);i.updateVisible(this),i.resetBBoxNeedsUpdate(),Fn(i)&&Gl(i.parent)&&(i.invalidateUpstreamBooleanData(),i.parent.invalidateDownstreamBooleanData().recomputeBoolean()),this.markNeedsRecomputeInstancesForAncessors(o),this.markNeedsRecomputeInstancesForChildren(i),this.markToExpandCloner(i),this.markPenumbraSizeDirty(),i.updatePathSnapping()}else if(e.path.length===0&&e.type===8){let o=this.find(e.id);if(o===void 0)throw new Error("unexpected");this.markToExpandCloner(o),o.resetBBoxNeedsUpdate(),this.unregisterObject(o);let i=o.parent;this.markNeedsRecomputeInstancesForAncessors(i),this.markNeedsRecomputeInstancesForChildren(o),this.markPenumbraSizeDirty(),o.parent.remove(o),Gl(o.parent)&&(o.parent.invalidateUpstreamBooleanData(),o.parent.invalidateDownstreamBooleanData().recomputeBoolean()),Fn(o)&&(o.freeBooleanPointer(),i instanceof Pr&&i.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 i=o.parent;this.markNeedsRecomputeInstancesForAncessors(i),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()),Fn(o)&&(o.invalidateUpstreamBooleanData(),Gl(o.parent)?o.parent.invalidateDownstreamBooleanData().recomputeBoolean():i instanceof Pr&&i.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 t of this.children)t instanceof qr&&(t.visible=t.uuid===e,t.visible&&(this.activePage=t,this.activePage.onActive(this)));this.activePage!==this.splatViewer?.activePage&&this.reloadSplats()}updateEntityByOp(e,t,o,i){if(t.type===0){if(("overrides"in t.props||"component"in t.props)&&this.markNeedsRecomputeInstances(),"visible"in t.props&&this.markPenumbraSizeDirty(),t.path.includes("overrides")&&"states"in t.props){let{rest:s}=t.props;t={...t,props:s},this.markNeedsRecomputeInstances()}t.path[0]==="pathSnapping"&&t.props.pathId!==void 0&&this.pathConstraints.setConstraint(e,t.props.pathId)}let a=this.find(e);if(a)try{Hv(a,t,o,{scene:this,shared:i}),a instanceof St&&a.updateGeometryGroupsIfNeeded()}catch(s){console.error(s)}}updateEntity2DByOp(e,t,o,i,a,s=[]){e.updateEntityByOp(t,o,i,a),this.traverseEntity(l=>{(l instanceof Ai||l instanceof qr)&&(s.includes(l.frameId??"")||l.frameId===t)&&l.updateEntity2DByOp(t,o,i,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,t){let o=Object.entries(t.data.lib.components).map((i,a)=>({data:i[1].asset.data,children:i[1].asset.children,id:i[0],fi:a}));this.invisibleObjects.updateState(this.invisibleObjects.data,{scene:this,shared:t}),this.add(this.invisibleObjects),this.createChildrenObjects(o,this.invisibleObjects,t),this.createChildrenObjects(e.objects,this,t),this.updatePage(e.publish.playPage),this.activePage.switchToPlayCamera(),this.expandInstances(t,!0),this.traverseEntity(i=>{i instanceof an&&i.updateUp()}),this.doPendingExpandCloner(),this.applyPendingCommands()}markNeedsRecomputeInstances(){this.needsRecomputeInstances=!0}markNeedsRecomputeInstancesForChildren(e){e.traverseEntity(t=>{(t.data.type==="Component"||t.data.type==="Instance")&&this.markNeedsRecomputeInstances()})}markNeedsRecomputeInstancesForAncessors(e){je.is(e)&&(e.data.type==="Component"&&this.markNeedsRecomputeInstances(),e.traverseAncestors(t=>{je.is(t)&&t.data.type==="Component"&&this.markNeedsRecomputeInstances()}))}relativeizeInner(e,t,o,i,a,s,l){if(e){let c=i.find(e);c&&c!==i&&a.forInstancesRec(u=>{u.data=mn(u.data,p=>{let d=p.events.data(l.id),h=u.goUp(s);if(h){let f=[...rc(h.identity),e].join("-"),m=this.entityIdentityToEntity[f];if(m){let y=m.uuid,g=yt.zoom(d,t);g[o]=y}else{if(!1)debugger;console.warn("cannot find instance")}}}).data})}}rewriteActions(e,t,o,i,a,s){e.forEach(l=>{l.data.type==="Transition"?this.relativeizeInner(l.data.object,[...t,l.id],"object",o,i,a,s):l.data.type==="Animation"&&this.relativeizeInner(l.data.object,[...t,l.id],"object",o,i,a,s)})}rewriteEventsBeforeGoToPlayMode(){this.traverseEntity(e=>{if(e instanceof cn&&typeof e.identity=="string"&&e.data.type==="Component")return e.traverseEntity((t,o)=>{t.data.events.forEach(i=>{if(i.data.type==="GameControl"){let a=!1;if(t.forInstancesRec(s=>{s.data=mn(s.data,l=>{s.isInstanceRoot||(l.events.delete(i.id),a=!0)}).data}),a===!1)for(let s of su.list)this.rewriteActions(i.data.gameActions[s],["gameActions",s],e,t,o,i)}else i.data.type==="Conditional"?(i.data.condition.type==="Distance"?(this.relativeizeInner(i.data.condition.fromObject,["condition"],"fromObject",e,t,o,i),this.relativeizeInner(i.data.condition.toObject,["condition"],"toObject",e,t,o,i)):i.data.condition.type==="State"?this.relativeizeInner(i.data.condition.object,["condition"],"object",e,t,o,i):i.data.condition.type==="Comparison"&&(i.data.condition.lOperand.type==="Property"&&this.relativeizeInner(i.data.condition.lOperand.value[0],["condition","lOperand","value"],0,e,t,o,i),i.data.condition.rOperand.type==="Property"&&this.relativeizeInner(i.data.condition.rOperand.value[0],["condition","rOperand","value"],0,e,t,o,i)),this.rewriteActions(i.data.inActions,["inActions"],e,t,o,i),this.rewriteActions(i.data.outActions,["outActions"],e,t,o,i)):"actions"in i.data&&this.rewriteActions(i.data.actions,["actions"],e,t,o,i)})}),!0})}expandInstances(e,t,o){let i=new Set;this.traverseEntity(a=>{if(a instanceof cn&&a.isInstanceRoot)return a.expandInstanceChildren({scene:this,shared:e,pendingDeletes:i}),t||a.resetBBoxNeedsUpdate(),o&&a.traverseEntity(s=>{o.addClip(s)}),!0});for(let a of i)this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(a),vd(a)}recomputeInstances(e,t){this.needsRecomputeInstances&&(this.needsRecomputeInstances=!1,this.traverseEntity(o=>{o instanceof cn&&o.isInstanceRoot&&(o.component=void 0)}),this.expandInstances(e,!1,t))}disposeAndUnregisterEntityRecursivelyIfNotReregistered(e){e.traverseEntity(t=>{let o=typeof t.identity=="string"?t.identity:t.identity.join("-");this.entityIdentityToEntity[o]===t&&(delete this.entityByUuid[t.uuid],delete this.entityIdentityToEntity[o]),t.dispose()})}clearScene(){for(let e of this.children)je.is(e)&&e.disposeRecursively();this.children.length=0}resetAfterClear(e,t){this.init(e,t)}raycast(e){return this.raycast1(e,!1)}raycast1(e,t){let o=[],i=a=>{for(let s of a.children){let l=s.cloner;if(je.is(s)&&!s.raycastLock&&(s.visible||l?.object.data.visible))if(t===!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(Fn(s)||jl(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,o),$l(s,e,o)),i(s)}};return i(this.activePage),o}raycastWithClones(e){let t=[],o=i=>{for(let a of i.children){let s=a.cloner;je.is(a)&&(a.visible||s?.object.data.visible)&&((Fn(a)||jl(a)&&this.enableHelpers&&a.objectHelper.visible)&&(e.intersectObject(a,!1,t),$l(a,e,t,!0)),o(a))}};return o(this),t}forEachEntity(e){for(let t of this.children)je.is(t)&&e(t)}traverseConcreteEntity(e){for(let t of this.children)je.is(t)&&t.isConcreteEntity&&t.traverseEntity(e)}traverseEntity(e){for(let t of this.children)je.is(t)&&t.traverseEntity(e)}updateFont(e,t){this.traverseEntity(o=>{if(o instanceof St&&o.data.type==="Mesh"&&o.data.geometry.type==="TextGeometry"&&o.data.geometry.font===e){let i=o.geometry,a=o.data.geometry;i.updateFont(e,t).then(()=>{i.update(a);let s=o.invalidateDownstreamBooleanData();Gl(s)&&s.recomputeBoolean()})}})}traverseObject(e){for(let t of this.children)Pa.is(t)&&t.traverseObject(e)}traverseVisibleEntity(e){for(let t of this.children)je.is(t)&&t.visible&&t.traverseVisibleEntity(e)}dispose(){this.clearScene()}createChildrenObjects(e,t,o){let i=0;for(let a of e)this.createObject(a.id,a.data,a.children,t,i,o),i+=1}registerObjectCreatedInLegacy(e){this.entityByUuid[e.uuid]=e}unregisterObject(e){delete this.entityByUuid[e.uuid];for(let t of e.children)this.unregisterObject(t)}createObject(e,t,o,i,a,s){let l={scene:this,shared:s},c=Cd(e,t,l);return c&&(this.entityByUuid[e]=c,i.add(c),i.children.splice(a,0,i.children.pop()),o.length>0&&(c.isInstanceRoot?console.error("instance should not have children!"):this.createChildrenObjects(o,c,s)),c.updateState(t,l),c instanceof St&&c.updateGeometryGroupsIfNeeded(),c.updateVisible(this),c.cloner&&this.toExpandCloner.add(c),t.pathSnapping?.pathId&&this.pathConstraints.setConstraint(e,t.pathSnapping.pathId)),t.type==="Empty"&&t.animations&&c.traverseEntity(u=>{let p=u.dataPatched;if(u instanceof St&&p.bones&&p.boneInverses){let d=p.bones.map(m=>this.find(m)),h=p.boneInverses.map(m=>new Yr.Matrix4().fromArray(m)),f=new Yr.Skeleton(d,h);u.bind(f,u.bindMatrix)}else u.matrixAutoUpdate=!0}),c}getCenter(e){let t=[];for(let i=0,a=e.length;i<a;++i){let{id:s,recursive:l}=e[i],c=this.find(s),u=l?c.recursiveBBox:c.singleBBox;t.push(...u.vertices)}let o=new Yr.Box3;return o.setFromPoints(t),o.getCenter(tS),tS}copyMatrixWorld(e,t){if(e===null){t.identity();return}let o=this.find(e);o?t.copy(o.matrixWorld):t.identity()}copyParentMatrixWorld(e,t){if(e===null){t.identity();return}let o=this.find(e)?.parent;o?t.copy(o.matrixWorld):t.identity()}traverseMaterial(e){this.traverseEntity(t=>{if(t instanceof Gt)if(Array.isArray(t.material))for(let o=0;o<t.material.length;o++)t.material[o]instanceof Sr&&e(t.material[o]);else t.material instanceof Sr&&e(t.material)})}updateViewPlaneSize(e,t,o=!1){this.traverseConcreteEntity(i=>{i instanceof an&&i.setViewplaneSize(e,t,o)})}initializeSplatViewer(){this.splatViewer=new Yl({scene:this}),this.reloadSplats()}reloadSplats(){this.splatViewer?.loadSplat()}};var rS=require("three/examples/jsm/loaders/DRACOLoader.js");var $n;function oS(){return $n||($n=new rS.DRACOLoader,$n.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),$n.decoderPending}async function RI(n){if($n){let r={attributeIDs:$n.defaultAttributeIDs,attributeTypes:$n.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await $n.decodeGeometry(new Int8Array(n).buffer,r)}catch(t){console.error(t)}if(e)return{index:e.index?{array:e.index.array}:void 0,attributes:Object.entries(e.attributes).map(([t,o])=>({name:t,itemSize:o.itemSize,array:o.array}))}}return null}async function nS(n,r){let[e,t]=rp(Hc.deserialize(new Uint8Array(n)));return cu(e),r&&r(e),t.result().data}function iS(n){let r=[];return n.scene.objects.traverse((e,t)=>{t.type==="Mesh"&&t.geometry.type==="NonParametricGeometry"&&t.geometry.data.draco!==void 0&&r.push(t)}),r}async function aS(n){for(let r of n){let e=await RI(r.geometry.data.draco);if(e){let t=r.geometry.data;e.index&&(t.index={array:e.index.array,itemSize:1,normalized:!1,type:"Uint32Array"});let o={};e.attributes.forEach(({name:i,array:a,itemSize:s})=>{o[i]={array:a,itemSize:s,type:"Float32Array",normalized:!1}}),t.attributes=o,t.draco=void 0}}}var VI=require("three"),zI=require("three/examples/jsm/utils/BufferGeometryUtils.js");function sS(n){let r;if(!!n.index)for(let e=0;e<n.index.array.length;e+=3)r=n.index.array[e],n.index.array[e]=n.index.array[e+2],n.index.array[e+2]=r}var Xl=require("three");function lS(n){let r=new Set;return n.traverse(e=>{if(e instanceof wr)if(Pt(e.material))e.material.forEach(t=>{let o=t;r.has(o)||r.add(o)});else{let t=e.material;r.has(t)||r.add(t)}}),r.forEach(e=>{if(e instanceof Array)return;let t=e.onBeforeCompile.bind(e);if(GI(e)){Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new Xl.Color,specularColor:new Xl.Color});let o=0;e.onBeforeCompile=(i,a)=>{t&&t(i,a),i.uniforms=Object.assign({},Xl.ShaderLib.physical.uniforms,i.uniforms),e.getLayersOfType("transmission").forEach(s=>{if(i.uniforms.transmissionSamplerMap.value){let l=s.color;l&&(l.transmissionSamplerMap.value=i.uniforms.transmissionSamplerMap.value,l.transmissionSamplerSize.value=i.uniforms.transmissionSamplerSize.value,l.aspectRatio.value=K0(window.innerWidth,window.innerHeight),e.defines.IS_THREEJS_EXPORT=!0)}else o++,o<2&&(e.needsUpdate=!0)})}}else jI(e)||(e.onBeforeCompile=(o,i)=>{t&&t(o,i),e.transparent=!1})}),n}function GI(n){return n.getLayersOfType("transmission").length>0}function jI(n){let r=0;for(let e of n.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&&(r+=(1-r)*o.value)}}return r<1}function cS(n){return n.traverse(r=>{if(r.type==="Camera"){let e=r;e.type=e.cameraType}}),n}function uS(n){let r=[],e=(t,o=0)=>{let i=o>0?t+o:t;return r.includes(i)?e(t,o+1):i};return n.traverse(t=>{if(r.includes(t.name)){let o=t.name,i=e(t.name);if(t.name=i,t.isMesh){let a=t;a.material instanceof Array?a.material.forEach(s=>{s.name=s.name.replace(o,i)}):a.material.isAsset||(a.material.name=a.material.name.replace(o,i))}}r.push(t.name)}),n}var dS=require("three/examples/jsm/utils/BufferGeometryUtils.js");function pS(n){let r=[];return n.traverse(e=>{e instanceof ws&&r.push(e)}),r.forEach(e=>{let t=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&&sS(l),l}).filter(s=>s!==void 0)];if(!e.parameters.hideBase&&t instanceof Gt&&a.unshift(t.geometry),a.length){let s=(0,dS.mergeBufferGeometries)(a);t instanceof Gt&&(t.geometry=s)}e.removeFromParent(),t.setFromClonerState(null,{scene:n,shared:ub})}),n}function fS(n){return n.traverse(r=>{r.matrixAutoUpdate=!0}),n}function hS(n){Object.values(n.shared.materials).forEach(r=>{yh(r)}),n.scene.objects.traverse((r,e)=>{"material"in e?yh(e.material):"materials"in e&&e.materials.forEach(t=>{yh(t)})})}function yh(n){if(typeof n=="string")return;let r=[];n.layers.forEach((e,t)=>{e.type==="outline"&&r.push(t)}),r.reverse().forEach(e=>{n.layers.delete(e)}),r.length&&console.warn("The Spline Loader currently does not support the outline layer.")}var bS=_i(yS(),1);function gS(n){return n.traverseMaterial(r=>{r.needsJitter=!1}),n}var xS="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",Ed=class extends _d.Loader{load(r,e,t,o=console.error){let i=new _d.FileLoader(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),r.endsWith(".spline")?console.warn(xS+" The .spline files are only meant to be used by the Editor."):r.endsWith(".splinecode")||console.warn(xS),i.load(r,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)}},t,o)}async parse(r){let e=await nS(r,hS),t=iS(e);e.version&&(0,bS.default)(e.version,"1.1.8")>0&&console.warn("Your .splinecode file is more recent than the library. Please upgrade @splinetool/loader to the latest version."),await Promise.allSettled([t.length&&oS(),mb(e)&&P0(),Tb(e)&&lb(),iv(e)&&rv(),Id(e)&&mh()].filter(Boolean)),t.length&&await aS(t);let o=new wi(e.shared);Object.values(o.getMaterials()).forEach(s=>Object.assign(s,{isAsset:!0}));let i=new Dd(e.scene,o);Id(e)&&i.initializeSplatViewer();let a=i.activeCamera;return a&&Object.assign(a,{makeDefault:!0}),i=pS(i),i=lS(i),i=cS(i),i=uS(i),i=fS(i),i=gS(i),i}};