@splinetool/loader 1.9.44 → 1.9.46

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,6 +1,6 @@
1
- "use strict";var S1=Object.create;var qs=Object.defineProperty;var w1=Object.getOwnPropertyDescriptor;var P1=Object.getOwnPropertyNames;var C1=Object.getPrototypeOf,O1=Object.prototype.hasOwnProperty;var A1=(n,r,e)=>r in n?qs(n,r,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[r]=e;var $s=(n,r)=>()=>(r||n((r={exports:{}}).exports,r),r.exports),Zh=(n,r)=>{for(var e in r)qs(n,e,{get:r[e],enumerable:!0})},Jh=(n,r,e,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of P1(r))!O1.call(n,o)&&o!==e&&qs(n,o,{get:()=>r[o],enumerable:!(t=w1(r,o))||t.enumerable});return n};var Ys=(n,r,e)=>(e=n!=null?S1(C1(n)):{},Jh(r||!n||!n.__esModule?qs(e,"default",{value:n,enumerable:!0}):e,n)),T1=n=>Jh(qs({},"__esModule",{value:!0}),n);var go=(n,r,e)=>(A1(n,typeof r!="symbol"?r+"":r,e),e);var Fx=$s((of,Gx)=>{(function(n,r){typeof of=="object"?Gx.exports=r():typeof define=="function"&&define.amd?define(r):n.Alea=r()})(of,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 qx=$s((_u,Wx)=>{(function(n,r){typeof _u=="object"&&typeof Wx<"u"?r(_u):typeof define=="function"&&define.amd?define(["exports"],r):r((n=typeof globalThis<"u"?globalThis:n||self).SVDJS={})})(_u,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,w=r.length;if(w<v)throw new TypeError("Invalid matrix: m < n");for(var O=[],S=[],C=[],T=e==="f"?w:v,x=m=d=0;x<w;x++)S[x]=new Array(T).fill(0);for(x=0;x<v;x++)C[x]=new Array(v).fill(0);var N,E=new Array(v).fill(0);for(x=0;x<w;x++)for(a=0;a<v;a++)S[x][a]=r[x][a];for(x=0;x<v;x++){for(O[x]=d,f=0,l=x+1,a=x;a<w;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<w;s++)f+=S[s][x]*S[s][a];for(p=f/h,s=x;s<w;s++)S[s][a]=S[s][a]+p*S[s][x]}for(E[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++)O[a]=S[x][a]/h;for(a=l;a<w;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*O[s]}}m<(y=Math.abs(E[x])+Math.abs(O[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++)C[a][x]=S[x][a]/h;for(a=l;a<v;a++){for(f=0,s=l;s<v;s++)f+=S[x][s]*C[s][a];for(s=l;s<v;s++)C[s][a]=C[s][a]+f*C[s][x]}}for(a=l;a<v;a++)C[x][a]=0,C[a][x]=0;C[x][x]=1,d=O[x],l=x}if(e){if(e==="f")for(x=v;x<w;x++){for(a=v;a<w;a++)S[x][a]=0;S[x][x]=1}for(x=v-1;0<=x;x--){for(l=x+1,d=E[x],a=l;a<T;a++)S[x][a]=0;if(d!==0){for(h=S[x][x]*d,a=l;a<T;a++){for(f=0,s=l;s<w;s++)f+=S[s][x]*S[s][a];for(p=f/h,s=x;s<w;s++)S[s][a]=S[s][a]+p*S[s][x]}for(a=x;a<w;a++)S[a][x]=S[a][x]/d}else for(a=x;a<w;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(N=!1,l=s;0<=l;l--){if(Math.abs(O[l])<=o){N=!0;break}if(Math.abs(E[l-1])<=o)break}if(!N){for(u=0,c=l-(f=1),x=l;x<s+1&&(p=f*O[x],O[x]=u*O[x],!(Math.abs(p)<=o));x++)if(d=E[x],E[x]=Math.sqrt(p*p+d*d),u=d/(h=E[x]),f=-p/h,e)for(a=0;a<w;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=E[s],l===s){if(g<0&&(E[s]=-g,t))for(a=0;a<v;a++)C[a][s]=-C[a][s];break}for(m=E[l],p=(((y=E[s-1])-g)*(y+g)+((d=O[s-1])-(h=O[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=O[x],y=E[x],h=f*d,d*=u,g=Math.sqrt(p*p+h*h),p=m*(u=p/(O[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=C[a][x-1],g=C[a][x],C[a][x-1]=m*u+g*f,C[a][x]=-m*f+g*u;if(g=Math.sqrt(p*p+h*h),p=(u=p/(E[x-1]=g))*d+(f=h/g)*y,m=-f*d+u*y,e)for(a=0;a<w;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}O[l]=0,O[s]=p,E[s]=m}for(x=0;x<v;x++)E[x]<o&&(E[x]=0);return{u:S,q:E,v:C}},n.VERSION="1.1.1",Object.defineProperty(n,"__esModule",{value:!0})})});var $v=$s((kre,qv)=>{"use strict";function UE(n,r){function e(){this.constructor=n}e.prototype=r.prototype,n.prototype=new e}function Ri(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,Ri)}UE(Ri,Error);Ri.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 HE(n,r){r=r!==void 0?r:{};var e={},t={svg_path:Ws},o=Ws,i=function(b){if(!b)return[];for(var P=[],R=0;R<b.length;R++)P=P.concat.apply(P,b[R]);var I=P[0];return I&&I.code=="m"&&(delete I.relative,I.code="M"),P},a=function(b,P){return v1(b,P)},s=/^[Mm]/,l=nt(["M","m"],!1,!1),c=function(b,P,R){var I=Fi(b,[P]);return R&&(I=I.concat(Fi(b=="M"?"L":"l",R[1]))),I},u=/^[Zz]/,p=nt(["Z","z"],!1,!1),d=function(){return Fi("Z")},h=/^[Ll]/,f=nt(["L","l"],!1,!1),m=function(b,P){return Fi(b,P)},y=/^[Hh]/,g=nt(["H","h"],!1,!1),v=function(b,P){return Fi(b,P.map(function(R){return{x:R}}))},w=/^[Vv]/,O=nt(["V","v"],!1,!1),S=function(b,P){return Fi(b,P.map(function(R){return{y:R}}))},C=/^[Cc]/,T=nt(["C","c"],!1,!1),x=function(b,P,R){return{x1:b.x,y1:b.y,x2:P.x,y2:P.y,x:R.x,y:R.y}},N=/^[Ss]/,E=nt(["S","s"],!1,!1),M=function(b,P){return{x2:b.x,y2:b.y,x:P.x,y:P.y}},D=/^[Qq]/,_=nt(["Q","q"],!1,!1),B=function(b,P){return{x1:b.x,y1:b.y,x:P.x,y:P.y}},V=/^[Tt]/,k=nt(["T","t"],!1,!1),L=/^[Aa]/,W=nt(["A","a"],!1,!1),F=function(b,P,R,I,z,oe){return{rx:b,ry:P,xAxisRotation:R,largeArc:I,sweep:z,x:oe.x,y:oe.y}},j=function(b,P){return{x:b,y:P}},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=yt(",",!1),Q=function(b){return b.join("")},$=".",ue=yt(".",!1),le=/^[eE]/,ne=nt(["e","E"],!1,!1),ce=/^[+\-]/,ae=nt(["+","-"],!1,!1),ye=/^[0-9]/,fe=nt([["0","9"]],!1,!1),me=function(b){return b.join("")},be=/^[ \t\n\r]/,ge=nt([" "," ",`
2
- `,"\r"],!1,!1),A=0,ie=0,Ve=[{line:1,column:1}],ke=0,ze=[],Oe=0,Lt;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 De(){return n.substring(ie,A)}function _t(){return si(ie,A)}function Vt(b,P){throw P=P!==void 0?P:si(ie,A),Rr([ip(b)],n.substring(ie,A),P)}function ai(b,P){throw P=P!==void 0?P:si(ie,A),ap(b,P)}function yt(b,P){return{type:"literal",text:b,ignoreCase:P}}function nt(b,P,R){return{type:"class",parts:b,inverted:P,ignoreCase:R}}function Zr(){return{type:"any"}}function np(){return{type:"end"}}function ip(b){return{type:"other",description:b}}function uc(b){var P=Ve[b],R;if(P)return P;for(R=b-1;!Ve[R];)R--;for(P=Ve[R],P={line:P.line,column:P.column};R<b;)n.charCodeAt(R)===10?(P.line++,P.column=1):P.column++,R++;return Ve[b]=P,P}function si(b,P){var R=uc(b),I=uc(P);return{start:{offset:b,line:R.line,column:R.column},end:{offset:P,line:I.line,column:I.column}}}function wt(b){A<ke||(A>ke&&(ke=A,ze=[]),ze.push(b))}function ap(b,P){return new Ri(b,null,null,P)}function Rr(b,P,R){return new Ri(Ri.buildMessage(b,P),b,P,R)}function Ws(){var b,P,R,I,z;for(b=A,P=[],R=Ue();R!==e;)P.push(R),R=Ue();if(P!==e)if(R=ar(),R===e&&(R=null),R!==e){for(I=[],z=Ue();z!==e;)I.push(z),z=Ue();I!==e?(ie=b,P=i(R),b=P):(A=b,b=e)}else A=b,b=e;else A=b,b=e;return b}function ar(){var b,P,R,I,z,oe;if(b=A,P=li(),P!==e){for(R=[],I=A,z=[],oe=Ue();oe!==e;)z.push(oe),oe=Ue();for(z!==e?(oe=li(),oe!==e?(z=[z,oe],I=z):(A=I,I=e)):(A=I,I=e);I!==e;){for(R.push(I),I=A,z=[],oe=Ue();oe!==e;)z.push(oe),oe=Ue();z!==e?(oe=li(),oe!==e?(z=[z,oe],I=z):(A=I,I=e)):(A=I,I=e)}R!==e?(ie=b,P=a(P,R),b=P):(A=b,b=e)}else A=b,b=e;return b}function li(){var b,P,R,I,z,oe;if(b=A,P=zi(),P!==e){for(R=[],I=A,z=[],oe=Ue();oe!==e;)z.push(oe),oe=Ue();for(z!==e?(oe=dc(),oe!==e?(z=[z,oe],I=z):(A=I,I=e)):(A=I,I=e);I!==e;){for(R.push(I),I=A,z=[],oe=Ue();oe!==e;)z.push(oe),oe=Ue();z!==e?(oe=dc(),oe!==e?(z=[z,oe],I=z):(A=I,I=e)):(A=I,I=e)}R!==e?(ie=b,P=a(P,R),b=P):(A=b,b=e)}else A=b,b=e;return b}function dc(){var b;return b=i1(),b===e&&(b=a1(),b===e&&(b=s1(),b===e&&(b=l1(),b===e&&(b=c1(),b===e&&(b=d1(),b===e&&(b=f1(),b===e&&(b=m1(),b===e&&(b=g1())))))))),b}function zi(){var b,P,R,I,z,oe,ji;if(b=A,s.test(n.charAt(A))?(P=n.charAt(A),A++):(P=e,Oe===0&&wt(l)),P!==e){for(R=[],I=Ue();I!==e;)R.push(I),I=Ue();R!==e?(I=cr(),I!==e?(z=A,oe=pt(),oe===e&&(oe=null),oe!==e?(ji=Hh(),ji!==e?(oe=[oe,ji],z=oe):(A=z,z=e)):(A=z,z=e),z===e&&(z=null),z!==e?(ie=b,P=c(P,I,z),b=P):(A=b,b=e)):(A=b,b=e)):(A=b,b=e)}else A=b,b=e;return b}function i1(){var b,P;return b=A,u.test(n.charAt(A))?(P=n.charAt(A),A++):(P=e,Oe===0&&wt(p)),P!==e&&(ie=b,P=d()),b=P,b}function a1(){var b,P,R,I;if(b=A,h.test(n.charAt(A))?(P=n.charAt(A),A++):(P=e,Oe===0&&wt(f)),P!==e){for(R=[],I=Ue();I!==e;)R.push(I),I=Ue();R!==e?(I=Hh(),I!==e?(ie=b,P=m(P,I),b=P):(A=b,b=e)):(A=b,b=e)}else A=b,b=e;return b}function Hh(){var b,P,R,I,z,oe;if(b=A,P=cr(),P!==e){for(R=[],I=A,z=pt(),z===e&&(z=null),z!==e?(oe=cr(),oe!==e?(z=[z,oe],I=z):(A=I,I=e)):(A=I,I=e);I!==e;)R.push(I),I=A,z=pt(),z===e&&(z=null),z!==e?(oe=cr(),oe!==e?(z=[z,oe],I=z):(A=I,I=e)):(A=I,I=e);R!==e?(ie=b,P=a(P,R),b=P):(A=b,b=e)}else A=b,b=e;return b}function s1(){var b,P,R,I;if(b=A,y.test(n.charAt(A))?(P=n.charAt(A),A++):(P=e,Oe===0&&wt(g)),P!==e){for(R=[],I=Ue();I!==e;)R.push(I),I=Ue();R!==e?(I=Wh(),I!==e?(ie=b,P=v(P,I),b=P):(A=b,b=e)):(A=b,b=e)}else A=b,b=e;return b}function Wh(){var b,P,R,I,z,oe;if(b=A,P=Gi(),P!==e){for(R=[],I=A,z=pt(),z===e&&(z=null),z!==e?(oe=Gi(),oe!==e?(z=[z,oe],I=z):(A=I,I=e)):(A=I,I=e);I!==e;)R.push(I),I=A,z=pt(),z===e&&(z=null),z!==e?(oe=Gi(),oe!==e?(z=[z,oe],I=z):(A=I,I=e)):(A=I,I=e);R!==e?(ie=b,P=a(P,R),b=P):(A=b,b=e)}else A=b,b=e;return b}function l1(){var b,P,R,I;if(b=A,w.test(n.charAt(A))?(P=n.charAt(A),A++):(P=e,Oe===0&&wt(O)),P!==e){for(R=[],I=Ue();I!==e;)R.push(I),I=Ue();R!==e?(I=Wh(),I!==e?(ie=b,P=S(P,I),b=P):(A=b,b=e)):(A=b,b=e)}else A=b,b=e;return b}function c1(){var b,P,R,I;if(b=A,C.test(n.charAt(A))?(P=n.charAt(A),A++):(P=e,Oe===0&&wt(T)),P!==e){for(R=[],I=Ue();I!==e;)R.push(I),I=Ue();R!==e?(I=u1(),I!==e?(ie=b,P=m(P,I),b=P):(A=b,b=e)):(A=b,b=e)}else A=b,b=e;return b}function u1(){var b,P,R,I,z,oe;if(b=A,P=sp(),P!==e){for(R=[],I=A,z=pt(),z===e&&(z=null),z!==e?(oe=sp(),oe!==e?(z=[z,oe],I=z):(A=I,I=e)):(A=I,I=e);I!==e;)R.push(I),I=A,z=pt(),z===e&&(z=null),z!==e?(oe=sp(),oe!==e?(z=[z,oe],I=z):(A=I,I=e)):(A=I,I=e);R!==e?(ie=b,P=a(P,R),b=P):(A=b,b=e)}else A=b,b=e;return b}function sp(){var b,P,R,I,z,oe;return b=A,P=cr(),P!==e?(R=pt(),R===e&&(R=null),R!==e?(I=cr(),I!==e?(z=pt(),z===e&&(z=null),z!==e?(oe=cr(),oe!==e?(ie=b,P=x(P,I,oe),b=P):(A=b,b=e)):(A=b,b=e)):(A=b,b=e)):(A=b,b=e)):(A=b,b=e),b}function d1(){var b,P,R,I;if(b=A,N.test(n.charAt(A))?(P=n.charAt(A),A++):(P=e,Oe===0&&wt(E)),P!==e){for(R=[],I=Ue();I!==e;)R.push(I),I=Ue();R!==e?(I=p1(),I!==e?(ie=b,P=m(P,I),b=P):(A=b,b=e)):(A=b,b=e)}else A=b,b=e;return b}function p1(){var b,P,R,I,z,oe;if(b=A,P=lp(),P!==e){for(R=[],I=A,z=pt(),z===e&&(z=null),z!==e?(oe=lp(),oe!==e?(z=[z,oe],I=z):(A=I,I=e)):(A=I,I=e);I!==e;)R.push(I),I=A,z=pt(),z===e&&(z=null),z!==e?(oe=lp(),oe!==e?(z=[z,oe],I=z):(A=I,I=e)):(A=I,I=e);R!==e?(ie=b,P=a(P,R),b=P):(A=b,b=e)}else A=b,b=e;return b}function lp(){var b,P,R,I;return b=A,P=cr(),P!==e?(R=pt(),R===e&&(R=null),R!==e?(I=cr(),I!==e?(ie=b,P=M(P,I),b=P):(A=b,b=e)):(A=b,b=e)):(A=b,b=e),b}function f1(){var b,P,R,I;if(b=A,D.test(n.charAt(A))?(P=n.charAt(A),A++):(P=e,Oe===0&&wt(_)),P!==e){for(R=[],I=Ue();I!==e;)R.push(I),I=Ue();R!==e?(I=h1(),I!==e?(ie=b,P=m(P,I),b=P):(A=b,b=e)):(A=b,b=e)}else A=b,b=e;return b}function h1(){var b,P,R,I,z,oe;if(b=A,P=cp(),P!==e){for(R=[],I=A,z=pt(),z===e&&(z=null),z!==e?(oe=cp(),oe!==e?(z=[z,oe],I=z):(A=I,I=e)):(A=I,I=e);I!==e;)R.push(I),I=A,z=pt(),z===e&&(z=null),z!==e?(oe=cp(),oe!==e?(z=[z,oe],I=z):(A=I,I=e)):(A=I,I=e);R!==e?(ie=b,P=a(P,R),b=P):(A=b,b=e)}else A=b,b=e;return b}function cp(){var b,P,R,I;return b=A,P=cr(),P!==e?(R=pt(),R===e&&(R=null),R!==e?(I=cr(),I!==e?(ie=b,P=B(P,I),b=P):(A=b,b=e)):(A=b,b=e)):(A=b,b=e),b}function m1(){var b,P,R,I;if(b=A,V.test(n.charAt(A))?(P=n.charAt(A),A++):(P=e,Oe===0&&wt(k)),P!==e){for(R=[],I=Ue();I!==e;)R.push(I),I=Ue();R!==e?(I=y1(),I!==e?(ie=b,P=m(P,I),b=P):(A=b,b=e)):(A=b,b=e)}else A=b,b=e;return b}function y1(){var b,P,R,I,z,oe;if(b=A,P=cr(),P!==e){for(R=[],I=A,z=pt(),z===e&&(z=null),z!==e?(oe=cr(),oe!==e?(z=[z,oe],I=z):(A=I,I=e)):(A=I,I=e);I!==e;)R.push(I),I=A,z=pt(),z===e&&(z=null),z!==e?(oe=cr(),oe!==e?(z=[z,oe],I=z):(A=I,I=e)):(A=I,I=e);R!==e?(ie=b,P=a(P,R),b=P):(A=b,b=e)}else A=b,b=e;return b}function g1(){var b,P,R,I;if(b=A,L.test(n.charAt(A))?(P=n.charAt(A),A++):(P=e,Oe===0&&wt(W)),P!==e){for(R=[],I=Ue();I!==e;)R.push(I),I=Ue();R!==e?(I=x1(),I!==e?(ie=b,P=m(P,I),b=P):(A=b,b=e)):(A=b,b=e)}else A=b,b=e;return b}function x1(){var b,P,R,I,z,oe;if(b=A,P=up(),P!==e){for(R=[],I=A,z=pt(),z===e&&(z=null),z!==e?(oe=up(),oe!==e?(z=[z,oe],I=z):(A=I,I=e)):(A=I,I=e);I!==e;)R.push(I),I=A,z=pt(),z===e&&(z=null),z!==e?(oe=up(),oe!==e?(z=[z,oe],I=z):(A=I,I=e)):(A=I,I=e);R!==e?(ie=b,P=a(P,R),b=P):(A=b,b=e)}else A=b,b=e;return b}function up(){var b,P,R,I,z,oe,ji,pp,fc,fp,hc,hp;return b=A,P=qh(),P!==e?(R=pt(),R===e&&(R=null),R!==e?(I=qh(),I!==e?(z=pt(),z===e&&(z=null),z!==e?(oe=Gi(),oe!==e?(ji=pt(),ji!==e?(pp=$h(),pp!==e?(fc=pt(),fc===e&&(fc=null),fc!==e?(fp=$h(),fp!==e?(hc=pt(),hc===e&&(hc=null),hc!==e?(hp=cr(),hp!==e?(ie=b,P=F(P,I,oe,pp,fp,hp),b=P):(A=b,b=e)):(A=b,b=e)):(A=b,b=e)):(A=b,b=e)):(A=b,b=e)):(A=b,b=e)):(A=b,b=e)):(A=b,b=e)):(A=b,b=e)):(A=b,b=e)):(A=b,b=e),b}function cr(){var b,P,R,I;return b=A,P=Gi(),P!==e?(R=pt(),R===e&&(R=null),R!==e?(I=Gi(),I!==e?(ie=b,P=j(P,I),b=P):(A=b,b=e)):(A=b,b=e)):(A=b,b=e),b}function qh(){var b,P;return b=A,P=Xh(),P===e&&(P=ci()),P!==e&&(ie=b,P=H(P)),b=P,b}function Gi(){var b,P,R,I;return b=A,P=A,R=dp(),R===e&&(R=null),R!==e?(I=Xh(),I!==e?(R=[R,I],P=R):(A=P,P=e)):(A=P,P=e),P===e&&(P=A,R=dp(),R===e&&(R=null),R!==e?(I=ci(),I!==e?(R=[R,I],P=R):(A=P,P=e)):(A=P,P=e)),P!==e&&(ie=b,P=q(P)),b=P,b}function $h(){var b,P;return b=A,re.test(n.charAt(A))?(P=n.charAt(A),A++):(P=e,Oe===0&&wt(ee)),P!==e&&(ie=b,P=X(P)),b=P,b}function pt(){var b,P,R,I,z;if(b=A,P=[],R=Ue(),R!==e)for(;R!==e;)P.push(R),R=Ue();else P=e;if(P!==e)if(R=Yh(),R===e&&(R=null),R!==e){for(I=[],z=Ue();z!==e;)I.push(z),z=Ue();I!==e?(P=[P,R,I],b=P):(A=b,b=e)}else A=b,b=e;else A=b,b=e;if(b===e){if(b=A,P=A,R=Yh(),R!==e){for(I=[],z=Ue();z!==e;)I.push(z),z=Ue();I!==e?(R=[R,I],P=R):(A=P,P=e)}else A=P,P=e;P!==e&&(ie=b,P=te()),b=P}return b}function Yh(){var b;return n.charCodeAt(A)===44?(b=K,A++):(b=e,Oe===0&&wt(Z)),b}function Xh(){var b,P,R,I;return b=A,P=A,R=b1(),R!==e?(I=Kh(),I===e&&(I=null),I!==e?(R=[R,I],P=R):(A=P,P=e)):(A=P,P=e),P===e&&(P=A,R=ci(),R!==e?(I=Kh(),I!==e?(R=[R,I],P=R):(A=P,P=e)):(A=P,P=e)),P!==e&&(ie=b,P=Q(P)),b=P,b}function b1(){var b,P,R,I,z;return b=A,P=A,R=ci(),R===e&&(R=null),R!==e?(n.charCodeAt(A)===46?(I=$,A++):(I=e,Oe===0&&wt(ue)),I!==e?(z=ci(),z!==e?(R=[R,I,z],P=R):(A=P,P=e)):(A=P,P=e)):(A=P,P=e),P===e&&(P=A,R=ci(),R!==e?(n.charCodeAt(A)===46?(I=$,A++):(I=e,Oe===0&&wt(ue)),I!==e?(R=[R,I],P=R):(A=P,P=e)):(A=P,P=e)),P!==e&&(ie=b,P=Q(P)),b=P,b}function Kh(){var b,P,R,I,z;return b=A,P=A,le.test(n.charAt(A))?(R=n.charAt(A),A++):(R=e,Oe===0&&wt(ne)),R!==e?(I=dp(),I===e&&(I=null),I!==e?(z=ci(),z!==e?(R=[R,I,z],P=R):(A=P,P=e)):(A=P,P=e)):(A=P,P=e),P!==e&&(ie=b,P=Q(P)),b=P,b}function dp(){var b;return ce.test(n.charAt(A))?(b=n.charAt(A),A++):(b=e,Oe===0&&wt(ae)),b}function ci(){var b,P,R;if(b=A,P=[],ye.test(n.charAt(A))?(R=n.charAt(A),A++):(R=e,Oe===0&&wt(fe)),R!==e)for(;R!==e;)P.push(R),ye.test(n.charAt(A))?(R=n.charAt(A),A++):(R=e,Oe===0&&wt(fe));else P=e;return P!==e&&(ie=b,P=me(P)),b=P,b}function Ue(){var b,P;return b=A,be.test(n.charAt(A))?(P=n.charAt(A),A++):(P=e,Oe===0&&wt(ge)),P!==e&&(ie=b,P=te()),b=P,b}function v1(b,P){if(!P)return[b];for(var R=[b],I=0,z=P.length;I<z;I++)R[I+1]=P[I][1];return R}var pc={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 Qh in pc)pc[Qh.toUpperCase()]=pc[Qh];function Fi(b,P){P||(P=[{}]);for(var R=P.length;R--;){var I={code:b,command:pc[b]};b==b.toLowerCase()&&(I.relative=!0);for(var z in P[R])I[z]=P[R][z];P[R]=I}return P}if(Lt=o(),Lt!==e&&A===n.length)return Lt;throw Lt!==e&&A<n.length&&wt(np()),Rr(ze,ke<n.length?n.charAt(ke):null,ke<n.length?si(ke,ke+1):si(ke,ke))}qv.exports={SyntaxError:Ri,parse:HE}});var Mh=$s((Ure,Yv)=>{var Fd=$v().parse;Fd.parseSVG=Fd;Fd.makeAbsolute=WE;Yv.exports=Fd;function WE(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 r1=$s((fce,t1)=>{t1.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 bN={};Zh(bN,{default:()=>rp});module.exports=T1(bN);var op=require("three");function mc(n){for(let r of Object.keys(n))n[r]===void 0&&delete n[r];return n}function Jt(n,r){return Object.setPrototypeOf(n,r),n}function yc(n){return Array.isArray(n)?n:[n]}function gc(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 I1=typeof global=="object"&&global&&global.Object===Object&&global,xc=I1;var M1=typeof self=="object"&&self&&self.Object===Object&&self,E1=xc||M1||Function("return this")(),Pt=E1;var N1=Pt.Symbol,Wt=N1;var em=Object.prototype,D1=em.hasOwnProperty,_1=em.toString,Xs=Wt?Wt.toStringTag:void 0;function B1(n){var r=D1.call(n,Xs),e=n[Xs];try{n[Xs]=void 0;var t=!0}catch{}var o=_1.call(n);return t&&(r?n[Xs]=e:delete n[Xs]),o}var tm=B1;var R1=Object.prototype,L1=R1.toString;function V1(n){return L1.call(n)}var rm=V1;var z1="[object Null]",G1="[object Undefined]",om=Wt?Wt.toStringTag:void 0;function F1(n){return n==null?n===void 0?G1:z1:om&&om in Object(n)?tm(n):rm(n)}var Ir=F1;function j1(n){return n!=null&&typeof n=="object"}var er=j1;var k1="[object Symbol]";function U1(n){return typeof n=="symbol"||er(n)&&Ir(n)==k1}var xn=U1;function H1(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 bc=H1;var W1=Array.isArray,Ct=W1;var q1=1/0,nm=Wt?Wt.prototype:void 0,im=nm?nm.toString:void 0;function am(n){if(typeof n=="string")return n;if(Ct(n))return bc(n,am)+"";if(xn(n))return im?im.call(n):"";var r=n+"";return r=="0"&&1/n==-q1?"-0":r}var sm=am;var $1=/\s/;function Y1(n){for(var r=n.length;r--&&$1.test(n.charAt(r)););return r}var lm=Y1;var X1=/^\s+/;function K1(n){return n&&n.slice(0,lm(n)+1).replace(X1,"")}var cm=K1;function Q1(n){var r=typeof n;return n!=null&&(r=="object"||r=="function")}var qt=Q1;var um=0/0,Z1=/^[-+]0x[0-9a-f]+$/i,J1=/^0b[01]+$/i,ew=/^0o[0-7]+$/i,tw=parseInt;function rw(n){if(typeof n=="number")return n;if(xn(n))return um;if(qt(n)){var r=typeof n.valueOf=="function"?n.valueOf():n;n=qt(r)?r+"":r}if(typeof n!="string")return n===0?n:+n;n=cm(n);var e=J1.test(n);return e||ew.test(n)?tw(n.slice(2),e?2:8):Z1.test(n)?um:+n}var mp=rw;function ow(n){return n}var dm=ow;var nw="[object AsyncFunction]",iw="[object Function]",aw="[object GeneratorFunction]",sw="[object Proxy]";function lw(n){if(!qt(n))return!1;var r=Ir(n);return r==iw||r==aw||r==nw||r==sw}var vc=lw;var cw=Pt["__core-js_shared__"],Sc=cw;var pm=function(){var n=/[^.]+$/.exec(Sc&&Sc.keys&&Sc.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}();function uw(n){return!!pm&&pm in n}var fm=uw;var dw=Function.prototype,pw=dw.toString;function fw(n){if(n!=null){try{return pw.call(n)}catch{}try{return n+""}catch{}}return""}var ko=fw;var hw=/[\\^$.*+?()[\]{}|]/g,mw=/^\[object .+?Constructor\]$/,yw=Function.prototype,gw=Object.prototype,xw=yw.toString,bw=gw.hasOwnProperty,vw=RegExp("^"+xw.call(bw).replace(hw,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Sw(n){if(!qt(n)||fm(n))return!1;var r=vc(n)?vw:mw;return r.test(ko(n))}var hm=Sw;function ww(n,r){return n?.[r]}var mm=ww;function Pw(n,r){var e=mm(n,r);return hm(e)?e:void 0}var yr=Pw;var Cw=yr(Pt,"WeakMap"),wc=Cw;var ym=Object.create,Ow=function(){function n(){}return function(r){if(!qt(r))return{};if(ym)return ym(r);n.prototype=r;var e=new n;return n.prototype=void 0,e}}(),gm=Ow;function Aw(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 xm=Aw;function Tw(n,r){var e=-1,t=n.length;for(r||(r=Array(t));++e<t;)r[e]=n[e];return r}var bm=Tw;var Iw=800,Mw=16,Ew=Date.now;function Nw(n){var r=0,e=0;return function(){var t=Ew(),o=Mw-(t-e);if(e=t,o>0){if(++r>=Iw)return arguments[0]}else r=0;return n.apply(void 0,arguments)}}var vm=Nw;function Dw(n){return function(){return n}}var Sm=Dw;var _w=function(){try{var n=yr(Object,"defineProperty");return n({},"",{}),n}catch{}}(),ki=_w;var Bw=ki?function(n,r){return ki(n,"toString",{configurable:!0,enumerable:!1,value:Sm(r),writable:!0})}:dm,wm=Bw;var Rw=vm(wm),Pm=Rw;function Lw(n,r){for(var e=-1,t=n==null?0:n.length;++e<t&&r(n[e],e,n)!==!1;);return n}var Cm=Lw;var Vw=9007199254740991,zw=/^(?:0|[1-9]\d*)$/;function Gw(n,r){var e=typeof n;return r=r??Vw,!!r&&(e=="number"||e!="symbol"&&zw.test(n))&&n>-1&&n%1==0&&n<r}var Ui=Gw;function Fw(n,r,e){r=="__proto__"&&ki?ki(n,r,{configurable:!0,enumerable:!0,value:e,writable:!0}):n[r]=e}var Pc=Fw;function jw(n,r){return n===r||n!==n&&r!==r}var Hi=jw;var kw=Object.prototype,Uw=kw.hasOwnProperty;function Hw(n,r,e){var t=n[r];(!(Uw.call(n,r)&&Hi(t,e))||e===void 0&&!(r in n))&&Pc(n,r,e)}var Wi=Hw;function Ww(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?Pc(e,s,l):Wi(e,s,l)}return e}var xo=Ww;var Om=Math.max;function qw(n,r,e){return r=Om(r===void 0?n.length-1:r,0),function(){for(var t=arguments,o=-1,i=Om(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),xm(n,this,s)}}var Am=qw;var $w=9007199254740991;function Yw(n){return typeof n=="number"&&n>-1&&n%1==0&&n<=$w}var qi=Yw;function Xw(n){return n!=null&&qi(n.length)&&!vc(n)}var Cc=Xw;var Kw=Object.prototype;function Qw(n){var r=n&&n.constructor,e=typeof r=="function"&&r.prototype||Kw;return n===e}var $i=Qw;function Zw(n,r){for(var e=-1,t=Array(n);++e<n;)t[e]=r(e);return t}var Tm=Zw;var Jw="[object Arguments]";function e2(n){return er(n)&&Ir(n)==Jw}var yp=e2;var Im=Object.prototype,t2=Im.hasOwnProperty,r2=Im.propertyIsEnumerable,o2=yp(function(){return arguments}())?yp:function(n){return er(n)&&t2.call(n,"callee")&&!r2.call(n,"callee")},Yi=o2;function n2(){return!1}var Mm=n2;var Dm=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Em=Dm&&typeof module=="object"&&module&&!module.nodeType&&module,i2=Em&&Em.exports===Dm,Nm=i2?Pt.Buffer:void 0,a2=Nm?Nm.isBuffer:void 0,s2=a2||Mm,ui=s2;var l2="[object Arguments]",c2="[object Array]",u2="[object Boolean]",d2="[object Date]",p2="[object Error]",f2="[object Function]",h2="[object Map]",m2="[object Number]",y2="[object Object]",g2="[object RegExp]",x2="[object Set]",b2="[object String]",v2="[object WeakMap]",S2="[object ArrayBuffer]",w2="[object DataView]",P2="[object Float32Array]",C2="[object Float64Array]",O2="[object Int8Array]",A2="[object Int16Array]",T2="[object Int32Array]",I2="[object Uint8Array]",M2="[object Uint8ClampedArray]",E2="[object Uint16Array]",N2="[object Uint32Array]",ft={};ft[P2]=ft[C2]=ft[O2]=ft[A2]=ft[T2]=ft[I2]=ft[M2]=ft[E2]=ft[N2]=!0;ft[l2]=ft[c2]=ft[S2]=ft[u2]=ft[w2]=ft[d2]=ft[p2]=ft[f2]=ft[h2]=ft[m2]=ft[y2]=ft[g2]=ft[x2]=ft[b2]=ft[v2]=!1;function D2(n){return er(n)&&qi(n.length)&&!!ft[Ir(n)]}var _m=D2;function _2(n){return function(r){return n(r)}}var Xi=_2;var Bm=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Ks=Bm&&typeof module=="object"&&module&&!module.nodeType&&module,B2=Ks&&Ks.exports===Bm,gp=B2&&xc.process,R2=function(){try{var n=Ks&&Ks.require&&Ks.require("util").types;return n||gp&&gp.binding&&gp.binding("util")}catch{}}(),Uo=R2;var Rm=Uo&&Uo.isTypedArray,L2=Rm?Xi(Rm):_m,Oc=L2;var V2=Object.prototype,z2=V2.hasOwnProperty;function G2(n,r){var e=Ct(n),t=!e&&Yi(n),o=!e&&!t&&ui(n),i=!e&&!t&&!o&&Oc(n),a=e||t||o||i,s=a?Tm(n.length,String):[],l=s.length;for(var c in n)(r||z2.call(n,c))&&!(a&&(c=="length"||o&&(c=="offset"||c=="parent")||i&&(c=="buffer"||c=="byteLength"||c=="byteOffset")||Ui(c,l)))&&s.push(c);return s}var Ac=G2;function F2(n,r){return function(e){return n(r(e))}}var Tc=F2;var j2=Tc(Object.keys,Object),Lm=j2;var k2=Object.prototype,U2=k2.hasOwnProperty;function H2(n){if(!$i(n))return Lm(n);var r=[];for(var e in Object(n))U2.call(n,e)&&e!="constructor"&&r.push(e);return r}var Vm=H2;function W2(n){return Cc(n)?Ac(n):Vm(n)}var Ki=W2;function q2(n){var r=[];if(n!=null)for(var e in Object(n))r.push(e);return r}var zm=q2;var $2=Object.prototype,Y2=$2.hasOwnProperty;function X2(n){if(!qt(n))return zm(n);var r=$i(n),e=[];for(var t in n)t=="constructor"&&(r||!Y2.call(n,t))||e.push(t);return e}var Gm=X2;function K2(n){return Cc(n)?Ac(n,!0):Gm(n)}var Qi=K2;var Q2=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Z2=/^\w*$/;function J2(n,r){if(Ct(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||xn(n)?!0:Z2.test(n)||!Q2.test(n)||r!=null&&n in Object(r)}var Fm=J2;var eP=yr(Object,"create"),Ho=eP;function tP(){this.__data__=Ho?Ho(null):{},this.size=0}var jm=tP;function rP(n){var r=this.has(n)&&delete this.__data__[n];return this.size-=r?1:0,r}var km=rP;var oP="__lodash_hash_undefined__",nP=Object.prototype,iP=nP.hasOwnProperty;function aP(n){var r=this.__data__;if(Ho){var e=r[n];return e===oP?void 0:e}return iP.call(r,n)?r[n]:void 0}var Um=aP;var sP=Object.prototype,lP=sP.hasOwnProperty;function cP(n){var r=this.__data__;return Ho?r[n]!==void 0:lP.call(r,n)}var Hm=cP;var uP="__lodash_hash_undefined__";function dP(n,r){var e=this.__data__;return this.size+=this.has(n)?0:1,e[n]=Ho&&r===void 0?uP:r,this}var Wm=dP;function Zi(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])}}Zi.prototype.clear=jm;Zi.prototype.delete=km;Zi.prototype.get=Um;Zi.prototype.has=Hm;Zi.prototype.set=Wm;var xp=Zi;function pP(){this.__data__=[],this.size=0}var qm=pP;function fP(n,r){for(var e=n.length;e--;)if(Hi(n[e][0],r))return e;return-1}var bn=fP;var hP=Array.prototype,mP=hP.splice;function yP(n){var r=this.__data__,e=bn(r,n);if(e<0)return!1;var t=r.length-1;return e==t?r.pop():mP.call(r,e,1),--this.size,!0}var $m=yP;function gP(n){var r=this.__data__,e=bn(r,n);return e<0?void 0:r[e][1]}var Ym=gP;function xP(n){return bn(this.__data__,n)>-1}var Xm=xP;function bP(n,r){var e=this.__data__,t=bn(e,n);return t<0?(++this.size,e.push([n,r])):e[t][1]=r,this}var Km=bP;function Ji(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])}}Ji.prototype.clear=qm;Ji.prototype.delete=$m;Ji.prototype.get=Ym;Ji.prototype.has=Xm;Ji.prototype.set=Km;var vn=Ji;var vP=yr(Pt,"Map"),Sn=vP;function SP(){this.size=0,this.__data__={hash:new xp,map:new(Sn||vn),string:new xp}}var Qm=SP;function wP(n){var r=typeof n;return r=="string"||r=="number"||r=="symbol"||r=="boolean"?n!=="__proto__":n===null}var Zm=wP;function PP(n,r){var e=n.__data__;return Zm(r)?e[typeof r=="string"?"string":"hash"]:e.map}var wn=PP;function CP(n){var r=wn(this,n).delete(n);return this.size-=r?1:0,r}var Jm=CP;function OP(n){return wn(this,n).get(n)}var ey=OP;function AP(n){return wn(this,n).has(n)}var ty=AP;function TP(n,r){var e=wn(this,n),t=e.size;return e.set(n,r),this.size+=e.size==t?0:1,this}var ry=TP;function ea(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])}}ea.prototype.clear=Qm;ea.prototype.delete=Jm;ea.prototype.get=ey;ea.prototype.has=ty;ea.prototype.set=ry;var di=ea;var IP="Expected a function";function bp(n,r){if(typeof n!="function"||r!=null&&typeof r!="function")throw new TypeError(IP);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(bp.Cache||di),e}bp.Cache=di;var oy=bp;var MP=500;function EP(n){var r=oy(n,function(t){return e.size===MP&&e.clear(),t}),e=r.cache;return r}var ny=EP;var NP=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,DP=/\\(\\)?/g,_P=ny(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(NP,function(e,t,o,i){r.push(o?i.replace(DP,"$1"):t||e)}),r}),iy=_P;function BP(n){return n==null?"":sm(n)}var ay=BP;function RP(n,r){return Ct(n)?n:Fm(n,r)?[n]:iy(ay(n))}var Lr=RP;var LP=1/0;function VP(n){if(typeof n=="string"||xn(n))return n;var r=n+"";return r=="0"&&1/n==-LP?"-0":r}var Pn=VP;function zP(n,r){r=Lr(r,n);for(var e=0,t=r.length;n!=null&&e<t;)n=n[Pn(r[e++])];return e&&e==t?n:void 0}var Ic=zP;function GP(n,r){for(var e=-1,t=r.length,o=n.length;++e<t;)n[o+e]=r[e];return n}var ta=GP;var sy=Wt?Wt.isConcatSpreadable:void 0;function FP(n){return Ct(n)||Yi(n)||!!(sy&&n&&n[sy])}var ly=FP;function cy(n,r,e,t,o){var i=-1,a=n.length;for(e||(e=ly),o||(o=[]);++i<a;){var s=n[i];r>0&&e(s)?r>1?cy(s,r-1,e,t,o):ta(o,s):t||(o[o.length]=s)}return o}var uy=cy;function jP(n){var r=n==null?0:n.length;return r?uy(n,1):[]}var dy=jP;function kP(n){return Pm(Am(n,void 0,dy),n+"")}var Mc=kP;var UP=Tc(Object.getPrototypeOf,Object),ra=UP;var HP="[object Object]",WP=Function.prototype,qP=Object.prototype,py=WP.toString,$P=qP.hasOwnProperty,YP=py.call(Object);function XP(n){if(!er(n)||Ir(n)!=HP)return!1;var r=ra(n);if(r===null)return!0;var e=$P.call(r,"constructor")&&r.constructor;return typeof e=="function"&&e instanceof e&&py.call(e)==YP}var fy=XP;function KP(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 hy=KP;function QP(){this.__data__=new vn,this.size=0}var my=QP;function ZP(n){var r=this.__data__,e=r.delete(n);return this.size=r.size,e}var yy=ZP;function JP(n){return this.__data__.get(n)}var gy=JP;function eC(n){return this.__data__.has(n)}var xy=eC;var tC=200;function rC(n,r){var e=this.__data__;if(e instanceof vn){var t=e.__data__;if(!Sn||t.length<tC-1)return t.push([n,r]),this.size=++e.size,this;e=this.__data__=new di(t)}return e.set(n,r),this.size=e.size,this}var by=rC;function oa(n){var r=this.__data__=new vn(n);this.size=r.size}oa.prototype.clear=my;oa.prototype.delete=yy;oa.prototype.get=gy;oa.prototype.has=xy;oa.prototype.set=by;var na=oa;function oC(n,r){return n&&xo(r,Ki(r),n)}var vy=oC;function nC(n,r){return n&&xo(r,Qi(r),n)}var Sy=nC;var Oy=typeof exports=="object"&&exports&&!exports.nodeType&&exports,wy=Oy&&typeof module=="object"&&module&&!module.nodeType&&module,iC=wy&&wy.exports===Oy,Py=iC?Pt.Buffer:void 0,Cy=Py?Py.allocUnsafe:void 0;function aC(n,r){if(r)return n.slice();var e=n.length,t=Cy?Cy(e):new n.constructor(e);return n.copy(t),t}var Ay=aC;function sC(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 Ty=sC;function lC(){return[]}var Ec=lC;var cC=Object.prototype,uC=cC.propertyIsEnumerable,Iy=Object.getOwnPropertySymbols,dC=Iy?function(n){return n==null?[]:(n=Object(n),Ty(Iy(n),function(r){return uC.call(n,r)}))}:Ec,ia=dC;function pC(n,r){return xo(n,ia(n),r)}var My=pC;var fC=Object.getOwnPropertySymbols,hC=fC?function(n){for(var r=[];n;)ta(r,ia(n)),n=ra(n);return r}:Ec,Nc=hC;function mC(n,r){return xo(n,Nc(n),r)}var Ey=mC;function yC(n,r,e){var t=r(n);return Ct(n)?t:ta(t,e(n))}var Dc=yC;function gC(n){return Dc(n,Ki,ia)}var Qs=gC;function xC(n){return Dc(n,Qi,Nc)}var _c=xC;var bC=yr(Pt,"DataView"),Bc=bC;var vC=yr(Pt,"Promise"),Rc=vC;var SC=yr(Pt,"Set"),Lc=SC;var Ny="[object Map]",wC="[object Object]",Dy="[object Promise]",_y="[object Set]",By="[object WeakMap]",Ry="[object DataView]",PC=ko(Bc),CC=ko(Sn),OC=ko(Rc),AC=ko(Lc),TC=ko(wc),pi=Ir;(Bc&&pi(new Bc(new ArrayBuffer(1)))!=Ry||Sn&&pi(new Sn)!=Ny||Rc&&pi(Rc.resolve())!=Dy||Lc&&pi(new Lc)!=_y||wc&&pi(new wc)!=By)&&(pi=function(n){var r=Ir(n),e=r==wC?n.constructor:void 0,t=e?ko(e):"";if(t)switch(t){case PC:return Ry;case CC:return Ny;case OC:return Dy;case AC:return _y;case TC:return By}return r});var Wo=pi;var IC=Object.prototype,MC=IC.hasOwnProperty;function EC(n){var r=n.length,e=new n.constructor(r);return r&&typeof n[0]=="string"&&MC.call(n,"index")&&(e.index=n.index,e.input=n.input),e}var Ly=EC;var NC=Pt.Uint8Array,aa=NC;function DC(n){var r=new n.constructor(n.byteLength);return new aa(r).set(new aa(n)),r}var sa=DC;function _C(n,r){var e=r?sa(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var Vy=_C;var BC=/\w*$/;function RC(n){var r=new n.constructor(n.source,BC.exec(n));return r.lastIndex=n.lastIndex,r}var zy=RC;var Gy=Wt?Wt.prototype:void 0,Fy=Gy?Gy.valueOf:void 0;function LC(n){return Fy?Object(Fy.call(n)):{}}var jy=LC;function VC(n,r){var e=r?sa(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.length)}var ky=VC;var zC="[object Boolean]",GC="[object Date]",FC="[object Map]",jC="[object Number]",kC="[object RegExp]",UC="[object Set]",HC="[object String]",WC="[object Symbol]",qC="[object ArrayBuffer]",$C="[object DataView]",YC="[object Float32Array]",XC="[object Float64Array]",KC="[object Int8Array]",QC="[object Int16Array]",ZC="[object Int32Array]",JC="[object Uint8Array]",eO="[object Uint8ClampedArray]",tO="[object Uint16Array]",rO="[object Uint32Array]";function oO(n,r,e){var t=n.constructor;switch(r){case qC:return sa(n);case zC:case GC:return new t(+n);case $C:return Vy(n,e);case YC:case XC:case KC:case QC:case ZC:case JC:case eO:case tO:case rO:return ky(n,e);case FC:return new t;case jC:case HC:return new t(n);case kC:return zy(n);case UC:return new t;case WC:return jy(n)}}var Uy=oO;function nO(n){return typeof n.constructor=="function"&&!$i(n)?gm(ra(n)):{}}var Hy=nO;var iO="[object Map]";function aO(n){return er(n)&&Wo(n)==iO}var Wy=aO;var qy=Uo&&Uo.isMap,sO=qy?Xi(qy):Wy,$y=sO;var lO="[object Set]";function cO(n){return er(n)&&Wo(n)==lO}var Yy=cO;var Xy=Uo&&Uo.isSet,uO=Xy?Xi(Xy):Yy,Ky=uO;var dO=1,pO=2,fO=4,Qy="[object Arguments]",hO="[object Array]",mO="[object Boolean]",yO="[object Date]",gO="[object Error]",Zy="[object Function]",xO="[object GeneratorFunction]",bO="[object Map]",vO="[object Number]",Jy="[object Object]",SO="[object RegExp]",wO="[object Set]",PO="[object String]",CO="[object Symbol]",OO="[object WeakMap]",AO="[object ArrayBuffer]",TO="[object DataView]",IO="[object Float32Array]",MO="[object Float64Array]",EO="[object Int8Array]",NO="[object Int16Array]",DO="[object Int32Array]",_O="[object Uint8Array]",BO="[object Uint8ClampedArray]",RO="[object Uint16Array]",LO="[object Uint32Array]",ut={};ut[Qy]=ut[hO]=ut[AO]=ut[TO]=ut[mO]=ut[yO]=ut[IO]=ut[MO]=ut[EO]=ut[NO]=ut[DO]=ut[bO]=ut[vO]=ut[Jy]=ut[SO]=ut[wO]=ut[PO]=ut[CO]=ut[_O]=ut[BO]=ut[RO]=ut[LO]=!0;ut[gO]=ut[Zy]=ut[OO]=!1;function Vc(n,r,e,t,o,i){var a,s=r&dO,l=r&pO,c=r&fO;if(e&&(a=o?e(n,t,o,i):e(n)),a!==void 0)return a;if(!qt(n))return n;var u=Ct(n);if(u){if(a=Ly(n),!s)return bm(n,a)}else{var p=Wo(n),d=p==Zy||p==xO;if(ui(n))return Ay(n,s);if(p==Jy||p==Qy||d&&!o){if(a=l||d?{}:Hy(n),!s)return l?Ey(n,Sy(a,n)):My(n,vy(a,n))}else{if(!ut[p])return o?n:{};a=Uy(n,p,s)}}i||(i=new na);var h=i.get(n);if(h)return h;i.set(n,a),Ky(n)?n.forEach(function(y){a.add(Vc(y,r,e,y,n,i))}):$y(n)&&n.forEach(function(y,g){a.set(g,Vc(y,r,e,g,n,i))});var f=c?l?_c:Qs:l?Qi:Ki,m=u?void 0:f(n);return Cm(m||n,function(y,g){m&&(g=y,y=n[g]),Wi(a,g,Vc(y,r,e,g,n,i))}),a}var zc=Vc;var VO=1,zO=4;function GO(n){return zc(n,VO|zO)}var qo=GO;var FO="__lodash_hash_undefined__";function jO(n){return this.__data__.set(n,FO),this}var eg=jO;function kO(n){return this.__data__.has(n)}var tg=kO;function Gc(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new di;++r<e;)this.add(n[r])}Gc.prototype.add=Gc.prototype.push=eg;Gc.prototype.has=tg;var rg=Gc;function UO(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 og=UO;function HO(n,r){return n.has(r)}var ng=HO;var WO=1,qO=2;function $O(n,r,e,t,o,i){var a=e&WO,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&qO?new rg: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(!og(r,function(g,v){if(!ng(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 Fc=$O;function YO(n){var r=-1,e=Array(n.size);return n.forEach(function(t,o){e[++r]=[o,t]}),e}var ig=YO;function XO(n){var r=-1,e=Array(n.size);return n.forEach(function(t){e[++r]=t}),e}var ag=XO;var KO=1,QO=2,ZO="[object Boolean]",JO="[object Date]",eA="[object Error]",tA="[object Map]",rA="[object Number]",oA="[object RegExp]",nA="[object Set]",iA="[object String]",aA="[object Symbol]",sA="[object ArrayBuffer]",lA="[object DataView]",sg=Wt?Wt.prototype:void 0,vp=sg?sg.valueOf:void 0;function cA(n,r,e,t,o,i,a){switch(e){case lA:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case sA:return!(n.byteLength!=r.byteLength||!i(new aa(n),new aa(r)));case ZO:case JO:case rA:return Hi(+n,+r);case eA:return n.name==r.name&&n.message==r.message;case oA:case iA:return n==r+"";case tA:var s=ig;case nA:var l=t&KO;if(s||(s=ag),n.size!=r.size&&!l)return!1;var c=a.get(n);if(c)return c==r;t|=QO,a.set(n,r);var u=Fc(s(n),s(r),t,o,i,a);return a.delete(n),u;case aA:if(vp)return vp.call(n)==vp.call(r)}return!1}var lg=cA;var uA=1,dA=Object.prototype,pA=dA.hasOwnProperty;function fA(n,r,e,t,o,i){var a=e&uA,s=Qs(n),l=s.length,c=Qs(r),u=c.length;if(l!=u&&!a)return!1;for(var p=l;p--;){var d=s[p];if(!(a?d in r:pA.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 w=a?t(v,g,d,r,n,i):t(g,v,d,n,r,i);if(!(w===void 0?g===v||o(g,v,e,t,i):w)){m=!1;break}y||(y=d=="constructor")}if(m&&!y){var O=n.constructor,S=r.constructor;O!=S&&"constructor"in n&&"constructor"in r&&!(typeof O=="function"&&O instanceof O&&typeof S=="function"&&S instanceof S)&&(m=!1)}return i.delete(n),i.delete(r),m}var cg=fA;var hA=1,ug="[object Arguments]",dg="[object Array]",jc="[object Object]",mA=Object.prototype,pg=mA.hasOwnProperty;function yA(n,r,e,t,o,i){var a=Ct(n),s=Ct(r),l=a?dg:Wo(n),c=s?dg:Wo(r);l=l==ug?jc:l,c=c==ug?jc:c;var u=l==jc,p=c==jc,d=l==c;if(d&&ui(n)){if(!ui(r))return!1;a=!0,u=!1}if(d&&!u)return i||(i=new na),a||Oc(n)?Fc(n,r,e,t,o,i):lg(n,r,l,e,t,o,i);if(!(e&hA)){var h=u&&pg.call(n,"__wrapped__"),f=p&&pg.call(r,"__wrapped__");if(h||f){var m=h?n.value():n,y=f?r.value():r;return i||(i=new na),o(m,y,e,t,i)}}return d?(i||(i=new na),cg(n,r,e,t,o,i)):!1}var fg=yA;function hg(n,r,e,t,o){return n===r?!0:n==null||r==null||!er(n)&&!er(r)?n!==n&&r!==r:fg(n,r,e,t,hg,o)}var mg=hg;function gA(n,r){return n!=null&&r in Object(n)}var yg=gA;function xA(n,r,e){r=Lr(r,n);for(var t=-1,o=r.length,i=!1;++t<o;){var a=Pn(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&&qi(o)&&Ui(a,o)&&(Ct(n)||Yi(n)))}var gg=xA;function bA(n,r){return n!=null&&gg(n,r,yg)}var xg=bA;var vA=function(){return Pt.Date.now()},kc=vA;var SA="Expected a function",wA=Math.max,PA=Math.min;function CA(n,r,e){var t,o,i,a,s,l,c=0,u=!1,p=!1,d=!0;if(typeof n!="function")throw new TypeError(SA);r=mp(r)||0,qt(e)&&(u=!!e.leading,p="maxWait"in e,i=p?wA(mp(e.maxWait)||0,r):i,d="trailing"in e?!!e.trailing:d);function h(C){var T=t,x=o;return t=o=void 0,c=C,a=n.apply(x,T),a}function f(C){return c=C,s=setTimeout(g,r),u?h(C):a}function m(C){var T=C-l,x=C-c,N=r-T;return p?PA(N,i-x):N}function y(C){var T=C-l,x=C-c;return l===void 0||T>=r||T<0||p&&x>=i}function g(){var C=kc();if(y(C))return v(C);s=setTimeout(g,m(C))}function v(C){return s=void 0,d&&t?h(C):(t=o=void 0,a)}function w(){s!==void 0&&clearTimeout(s),c=0,t=l=o=s=void 0}function O(){return s===void 0?a:v(kc())}function S(){var C=kc(),T=y(C);if(t=arguments,o=this,l=C,T){if(s===void 0)return f(l);if(p)return clearTimeout(s),s=setTimeout(g,r),h(l)}return s===void 0&&(s=setTimeout(g,r)),a}return S.cancel=w,S.flush=O,S}var Uc=CA;function OA(n){var r=n==null?0:n.length;return r?n[r-1]:void 0}var bg=OA;function AA(n,r){return r.length<2?n:Ic(n,hy(r,0,-1))}var vg=AA;function TA(n,r){return mg(n,r)}var Sp=TA;function IA(n,r){return r=Lr(r,n),n=vg(n,r),n==null||delete n[Pn(bg(r))]}var Sg=IA;function MA(n){return fy(n)?void 0:n}var wg=MA;var EA=1,NA=2,DA=4,_A=Mc(function(n,r){var e={};if(n==null)return e;var t=!1;r=bc(r,function(i){return i=Lr(i,n),t||(t=i.length>1),i}),xo(n,_c(n),e),t&&(e=zc(e,EA|NA|DA,wg));for(var o=r.length;o--;)Sg(e,r[o]);return e}),la=_A;function BA(n,r,e,t){if(!qt(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=Pn(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=qt(u)?u:Ui(r[o+1])?[]:{})}Wi(s,l,c),s=s[l]}return n}var Pg=BA;function RA(n,r,e){for(var t=-1,o=r.length,i={};++t<o;){var a=r[t],s=Ic(n,a);e(s,a)&&Pg(i,Lr(a,n),s)}return i}var Cg=RA;function LA(n,r){return Cg(n,r,function(e,t){return xg(n,t)})}var Og=LA;var VA=Mc(function(n,r){return n==null?{}:Og(n,r)}),Jr=VA;var he=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,he.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,he.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,he.prototype),delete i[t],{data:i,actual:r,reverse:{type:1,id:t,data:o}}}}return null}};function Zs(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"&&Zs(t)}return Object.freeze(n)}function Ag(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 ca=class extends Error{};function Hc(n){let r={...n};return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}function bo(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 ua(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 Tg(){return typeof process<"u"}function Ig(n,r){for(let e of n)r(e.id,e.data)!==!0&&Ig(e.children,r)}function Mg(n,r){if(r(n.id,n.data)!==!0)for(let e of n.children)Mg(e,r)}var st=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,st.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Zs(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&&Mg(o,t)}}traverse(e){Ig(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 ca("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)=>Ag(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 bo(0,o,o);{let a=i[0].fi;return bo(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 bo(l,l+o,o)}else return bo(a.fi,s.fi,o)}}};var da;(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})(da||(da={}));var ve=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,ve.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Zs(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,ve.prototype);let t=e;return Tg()||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 bo(0,t,t);{let i=o[0].fi;return bo(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 bo(s,s+t,t)}else return bo(i.fi,a.fi,t)}}};function pa(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&&!pa(t))return null;o+=1}t=t?Hc(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=Hc(l),delete t[r.path[o-1]])}else{let l=e[o-1];if(l){let c=Hc(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}}},vo;(t=>{function n(o,i){return Js(o,i)??o}t.apply=n;function r(o,i){return Pp(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=ct.zoomOnce(l,s[a]),l===void 0)return i;if(!pa(l))return;a+=1}if(l===void 0)return i;if(!!pa(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=wp([i],l);return c?(console.log(c),c):i}else return i}t.filterOp=e})(vo||(vo={}));function wp(n,r){if(r===void 0)return;let e=!1,t=n.map(o=>{let i=o.id,a=Js(o.data,r[i]);if(e=e||a!==void 0,a===void 0&&(a=o.data),o.children){let s=wp(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 zA(n,r){if(r===void 0)return;let e=!1,t=n.map(o=>{let i=o.id,a=Js(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 Js(n,r){if(!pa(r))return r;if(n instanceof st){let e=wp(n,r);return e!==void 0&&Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e}else{if(n instanceof ve)return zA(n,r);if(Array.isArray(n)){let e=!1,t=n.map((o,i)=>{let a=Js(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 Pp(n,r);if(n&&typeof n=="object"){let e={},t=!1;for(let[o,i]of Object.entries(n)){let a=Js(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 Pp(n,r){if(n===void 0)return r;if(r===void 0)return n;if(!pa(r))return r;if(!pa(n))return vo.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=Pp(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=el(n,r,e)??n,[n,e.result]}function Wc(n,r){return n===null?null:(n.cur[n.len]=r,n.len+=1,n)}function qc(n){n&&(n.len-=1)}function GA(n){if(n===null)return null;n.result.push(n.cur.slice(0,n.len))}function Ng(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=el(i.data,r,Wc(e,a));qc(e),t=t||l!==void 0,l===void 0&&(l=i.data);let c=Ng(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 FA(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=el(i.data,r,Wc(e,a));return qc(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 el(n,r,e){if(n instanceof st){let t=Ng(n,r,e);return t!==void 0&&Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}else{if(n instanceof ve)return FA(n,r,e);if(Array.isArray(n)){let t=!1,o=n.map((i,a)=>{let s=el(i,r,Wc(e,a));return qc(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"&&!ua(n)){let t={},o=!1;for(let[i,a]of Object.entries(n))if(i!=="name"&&i!=="variableId"){let s=r[i];if(typeof s=="string"){if(e!==null)throw new Error("not supported");o=!0,i=s}let l=el(a,r,Wc(e,i));qc(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&&GA(e),t}else return}}var fa;(r=>{function n(e,t){let o=ct.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})(fa||(fa={}));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 ve||l instanceof he?d=l.runOp(c):d=da.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 ve){if(typeof g=="number")throw new Error("illegal arg");m=v.modifyById(g,m)}else if(v instanceof he){if(typeof g=="number")throw new Error("illegal arg");m=v.modifyById(g,m)}else if(v instanceof lt){let w={...v,[g]:m};m=Object.setPrototypeOf(w,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 w=m;m=[...v],m[g]=w}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 ve){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 tl;(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=ct.zoom(p,[...f.path,f.id]),g=gt.apply(p,{...f,type:2})):(m=ct.zoom(p,[...f.path,f.id,"value"]),g=gt.apply(p,f)),g!==null){p=g.data;let[v,w]=Eg(p,{[f.id]:m});p=v;for(let O=0;O<w.length;O++){let S=w[O],C=S.pop();if(typeof C=="number"){let T=[C];for(let N=O+1;N<w.length;N++){let E=w[N],M=E[E.length-1];if(typeof M=="number"&&ct.equal(S,E.slice(0,E.length-1)))T.push(M),w.splice(N,1);else break}let x=ct.zoom(p,S);y=x.map((N,E)=>T.includes(E)?f.id:N),m=x,C=S.pop()}else{if(C==="alphaOverride"||C==="alpha"){m/=100;let T=m,x=ct.zoom(p,S.slice(0,S.length-2)),N=x.layers.map(E=>E.id===S[S.length-1]?{...E,data:{...E.data,[C]:T}}:E);Object.setPrototypeOf(N,Object.getPrototypeOf(x.layers)),x.layers=N}y=f.id}d.push({type:0,path:S,props:{[C]:m}}),h.push({type:0,path:S,props:{[C]: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 ca)return null;throw m}return{data:p,actual:d,reverse:h.reverse()}}l.apply=s})(tl||(tl={}));var Dg=Symbol(),jA=Symbol(),Yc=Symbol(),fi=class{reportOp(r,e,t=[]){let o=this;if(e===null)return;o._current=e.data;let i=t;for(;!(o instanceof $c);){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[Yc];t&&t(),delete this._children[r]}}}},Op=class extends fi{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,da.runOp(this._current,r),r.path)}},Ap=class extends fi{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,he.prototype)}runOp(r){this.reportOp(r,this._current.runOp(r))}},_g={get(n,r){if(r===Yc)return()=>{n._parent=null};if(r===Dg)return n._current;if(r===jA)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=Xc(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]}}},kA={..._g,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}},UA={..._g,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}},ha=class extends fi{constructor(r,e,t){super(),this._children={},this._parent=r,this._path=e,this._current=t,this[Yc]=()=>{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=Xc(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)}},ma=class extends fi{constructor(r,e,t){super(),this._children={},this._parent=r,this._path=e,this._current=t,this[Yc]=()=>{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=Xc(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 Cp(n,r,e){if(n.length>0){let t=n[n.length-1];if(t.type===0&&r.type===0&&ct.equal(t.path,e)){Object.assign(t.props,r.props);return}}n.push({...r,path:e})}var $c=class extends fi{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){Cp(this.ts,e,r),Cp(this.actual,t,r),Cp(this.reverse,o,r)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function Xc(n,r,e){return e instanceof st?new ha(n,r,e):e instanceof ve?new ma(n,r,e):e instanceof he?new Proxy(new Ap(n,r,e),UA):e!==null&&typeof e=="object"?ua(e)?e:new Proxy(new Op(n,r,e),kA):e}function Tp(n){let r=new $c(n);return[Xc(r,"",n),r]}function Cn(n,r){let[e,t]=Tp(n);return r(e),t.result()}function xt(n){return n instanceof ha||n instanceof ma?n._current:n!==null&&typeof n=="object"?n[Dg]:n}var ct;(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 ha)&&typeof a=="string")return i.data(a);if((i instanceof ve||i instanceof ma)&&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})(ct||(ct={}));function Bg(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 Fe(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 Kc=class{},rl=class extends Kc{constructor(e){super();this.id=e}},ol=class extends Kc{constructor(e){super();this.data=e}};var Mp;try{Mp=new TextDecoder}catch{}var de,An,G=0;var kg=[],Ep=kg,Np=0,gr={},Ke,On,Vr=0,So=0,Mr,$o,ur=[],et,Rg={useRecords:!1,mapsAsObjects:!0},nl=class{},_p=new nl;_p.name="MessagePack 0xC1";var ya=!1,wo=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 $g(()=>(Zc(),this?this.unpack(r,e):wo.prototype.unpack.call(Rg,r,e)));An=e>-1?e:r.length,G=0,Np=0,So=0,On=null,Ep=kg,Mr=null,de=r;try{et=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 wo){if(gr=this,this.structures)return Ke=this.structures,Qc();(!Ke||Ke.length>0)&&(Ke=[])}else gr=Rg,(!Ke||Ke.length>0)&&(Ke=[]);return Qc()}unpackMultiple(r,e){let t,o=0;try{ya=!0;let i=r.length,a=this?this.unpack(r,i):tu.unpack(r,i);if(e){for(e(a);G<i;)if(o=G,e(Qc())===!1)return}else{for(t=[a];G<i;)o=G,t.push(Qc());return t}}catch(i){throw i.lastPosition=o,i.values=t,i}finally{ya=!1,Zc()}}_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 Qc(){try{if(!gr.trusted&&!ya){let r=Ke.sharedLength||0;r<Ke.length&&(Ke.length=r)}let n=Ot();if(G==An)Ke.restoreStructures&&Lg(),Ke=null,de=null,$o&&($o=null);else if(G>An){let r=new Error("Unexpected end of MessagePack data");throw r.incomplete=!0,r}else if(!ya)throw new Error("Data read, but end of buffer not reached");return n}catch(n){throw Ke.restoreStructures&&Lg(),Zc(),(n instanceof RangeError||n.message.startsWith("Unexpected end of buffer"))&&(n.incomplete=!0),n}}function Lg(){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]||gr.getStructures&&Ug()[n&63];return r?(r.read||(r.read=Bp(r,n&63)),r.read()):n}}else if(n<144)if(n-=128,gr.mapsAsObjects){let r={};for(let e=0;e<n;e++)r[Wg()]=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(So>=G)return On.slice(G-Vr,(G+=r)-Vr);if(So==0&&An<140){let e=r<16?Rp(r):Hg(r);if(e!=null)return e}return Dp(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)):_p;case 194:return!1;case 195:return!0;case 196:return Ip(de[G++]);case 197:return r=et.getUint16(G),G+=2,Ip(r);case 198:return r=et.getUint32(G),G+=4,Ip(r);case 199:return hi(de[G++]);case 200:return r=et.getUint16(G),G+=2,hi(r);case 201:return r=et.getUint32(G),G+=4,hi(r);case 202:if(r=et.getFloat32(G),gr.useFloat32>2){let e=eu[(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=et.getFloat64(G),G+=8,r;case 204:return de[G++];case 205:return r=et.getUint16(G),G+=2,r;case 206:return r=et.getUint32(G),G+=4,r;case 207:return gr.int64AsNumber?(r=et.getUint32(G)*4294967296,r+=et.getUint32(G+4)):r=et.getBigUint64(G),G+=8,r;case 208:return et.getInt8(G++);case 209:return r=et.getInt16(G),G+=2,r;case 210:return r=et.getInt32(G),G+=4,r;case 211:return gr.int64AsNumber?(r=et.getInt32(G)*4294967296,r+=et.getUint32(G+4)):r=et.getBigInt64(G),G+=8,r;case 212:if(r=de[G++],r==114)return jg(de[G++]&63);{let e=ur[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++,jg(de[G++]&63,de[G++])):hi(2);case 214:return hi(4);case 215:return hi(8);case 216:return hi(16);case 217:return r=de[G++],So>=G?On.slice(G-Vr,(G+=r)-Vr):WA(r);case 218:return r=et.getUint16(G),G+=2,So>=G?On.slice(G-Vr,(G+=r)-Vr):qA(r);case 219:return r=et.getUint32(G),G+=4,So>=G?On.slice(G-Vr,(G+=r)-Vr):$A(r);case 220:return r=et.getUint16(G),G+=2,zg(r);case 221:return r=et.getUint32(G),G+=4,zg(r);case 222:return r=et.getUint16(G),G+=2,Gg(r);case 223:return r=et.getUint32(G),G+=4,Gg(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 HA=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function Bp(n,r){function e(){if(e.count++>2){let o=n.read=new Function("r","return function(){return {"+n.map(i=>HA.test(i)?i+":r()":"["+JSON.stringify(i)+"]:r()").join(",")+"}}")(Ot);return n.highByte===0&&(n.read=Vg(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?Vg(r,e):e}var Vg=(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]||Ug()[t];if(!o)throw new Error("Record id is not defined for "+t);return o.read||(o.read=Bp(o,n)),o.read()};function Ug(){let n=$g(()=>(de=null,gr.getStructures()));return Ke=gr._mergeStructures(n,Ke)}var Dp=Jc,WA=Jc,qA=Jc,$A=Jc;function Jc(n){let r;if(n<16&&(r=Rp(n)))return r;if(n>64&&Mp)return Mp.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+=$t.apply(String,t),t.length=0)}return t.length>0&&(r+=$t.apply(String,t)),r}function zg(n){let r=new Array(n);for(let e=0;e<n;e++)r[e]=Ot();return r}function Gg(n){if(gr.mapsAsObjects){let r={};for(let e=0;e<n;e++)r[Wg()]=Ot();return r}else{let r=new Map;for(let e=0;e<n;e++)r.set(Ot(),Ot());return r}}var $t=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 $t.apply(String,e)}function Rp(n){if(n<4)if(n<2){if(n===0)return"";{let r=de[G++];if((r&128)>1){G-=1;return}return $t(r)}}else{let r=de[G++],e=de[G++];if((r&128)>0||(e&128)>0){G-=2;return}if(n<3)return $t(r,e);let t=de[G++];if((t&128)>0){G-=3;return}return $t(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 $t(r,e,t,o);{let i=de[G++];if((i&128)>0){G-=5;return}return $t(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 $t(r,e,t,o,i,a);let s=de[G++];if((s&128)>0){G-=7;return}return $t(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 $t(r,e,t,o,i,a,s,l);{let c=de[G++];if((c&128)>0){G-=9;return}return $t(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 $t(r,e,t,o,i,a,s,l,c,u);let p=de[G++];if((p&128)>0){G-=11;return}return $t(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 $t(r,e,t,o,i,a,s,l,c,u,p,d);{let h=de[G++];if((h&128)>0){G-=13;return}return $t(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 $t(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 $t(r,e,t,o,i,a,s,l,c,u,p,d,h,f,m)}}}}}function Ip(n){return gr.copyBuffers?Uint8Array.prototype.slice.call(de,G,G+=n):de.subarray(G,G+=n)}function hi(n){let r=de[G++];if(ur[r])return ur[r](de.subarray(G,G+=n));throw new Error("Unknown extension type "+r)}var Fg=new Array(4096);function Wg(){let n=de[G++];if(n>=160&&n<192){if(n=n-160,So>=G)return On.slice(G-Vr,(G+=n)-Vr);if(!(So==0&&An<180))return Dp(n)}else return G--,Ot();let r=(n<<5^(n>1?et.getUint16(G):n>0?de[G]:0))&4095,e=Fg[r],t=G,o=G+n-3,i,a=0;if(e&&e.bytes==n){for(;t<o;){if(i=et.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=[],Fg[r]=e,e.bytes=n;t<o;)i=et.getUint32(t),e.push(i),t+=4;for(o+=3;t<o;)i=de[t++],e.push(i);let s=n<16?Rp(n):Hg(n);return s!=null?e.string=s:e.string=Dp(n)}var jg=(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=Bp(e,t),e.read()},qg=typeof self=="object"?self:global;ur[0]=()=>{};ur[0].noBuffer=!0;ur[101]=()=>{let n=Ot();return(qg[n[0]]||Error)(n[1])};ur[105]=n=>{let r=et.getUint32(G-4);$o||($o=new Map);let e=de[G],t;e>=144&&e<160||e==220||e==221?t=[]:t={};let o={target:t};$o.set(r,o);let i=Ot();return o.used?Object.assign(t,i):(o.target=i,i)};ur[112]=n=>{let r=et.getUint32(G-4),e=$o.get(r);return e.used=!0,e.target};ur[115]=()=>new Set(Ot());var Lp=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(n=>n+"Array");ur[116]=n=>{let r=n[0],e=Lp[r];if(!e)throw new Error("Could not find typed array for code "+r);return new qg[e](Uint8Array.prototype.slice.call(n,1).buffer)};ur[120]=()=>{let n=Ot();return new RegExp(n[0],n[1])};ur[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}};ur[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 $g(n){let r=An,e=G,t=Np,o=Vr,i=So,a=On,s=Ep,l=$o,c=Mr,u=new Uint8Array(de.slice(0,An)),p=Ke,d=Ke.slice(0,Ke.length),h=gr,f=ya,m=n();return An=r,G=e,Np=t,Vr=o,So=i,On=a,Ep=s,$o=l,Mr=c,de=u,ya=f,Ke=p,Ke.splice(0,Ke.length,...d),gr=h,et=new DataView(de.buffer,de.byteOffset,de.byteLength),m}function Zc(){de=null,$o=null,Ke=null}function Yg(n){n.unpack?ur[n.type]=n.unpack:ur[n.type]=n}var eu=new Array(147);for(let n=0;n<256;n++)eu[n]=+("1e"+Math.floor(45.15-n*.30103));var tu=new wo({useRecords:!1}),YA=tu.unpack,XA=tu.unpackMultiple,KA=tu.unpack,ru={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},QA=new Float32Array(1),ZG=new Uint8Array(QA.buffer,0,4);var ou;try{ou=new TextEncoder}catch{}var nu,zp,iu=typeof Buffer<"u",Vp=iu?Buffer.allocUnsafeSlow:Uint8Array,Zg=iu?Buffer:Uint8Array,Xg=iu?4294967296:2144337920,Y,Mt,U=0,Po,Co=null,ZA=/[\u0080-\uFFFF]/,il=Symbol("record-id"),mi=class extends wo{constructor(r){super(r),this.offset=0;let e,t,o,i,a,s,l=0,c=Zg.prototype.utf8Write?function(x,N,E){return Y.utf8Write(x,N,E)}:ou&&ou.encodeInto?function(x,N){return ou.encodeInto(x,Y.subarray(N)).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=[],w=0,O=0;this.pack=this.encode=function(x,N){if(Y||(Y=new Vp(8192),Mt=new DataView(Y.buffer,0,8192),U=0),Po=Y.length-10,Po-U<2048?(Y=new Vp(Y.length),Mt=new DataView(Y.buffer,0,Y.length),Po=Y.length-10,U=0):U=U+7&2147483640,t=U,s=u.structuredClone?new Map:null,u.bundleStrings?(Co=["",""],Y[U++]=214,Y[U++]=98,Co.position=U-t,U+=4):Co=null,o=u.structures,o){o.uninitialized&&(o=u._mergeStructures(u.getStructures()));let E=o.sharedLength||0;if(E>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<E;M++){let D=o[M];if(!D)continue;let _,B=o.transitions;for(let V=0,k=D.length;V<k;V++){let L=D[V];_=B[L],_||(_=B[L]=Object.create(null)),B=_}B[il]=M+64}l=E}p||(o.nextId=E+64)}i&&(i=!1),a=o||[];try{if(S(x),Co){Mt.setUint32(Co.position+t,U-Co.position-t);let E=Co;Co=null,S(E[0]),S(E[1])}if(u.offset=U,s&&s.idsToInsert){U+=s.idsToInsert.length*6,U>Po&&T(U),u.offset=U;let E=eT(Y.subarray(t,U),s.idsToInsert);return s=null,E}return N&ex?(Y.start=t,Y.end=U,Y):Y.subarray(t,U)}finally{if(o){if(O<10&&O++,w>1e4)o.transitions=null,O=0,w=0,v.length>0&&(v=[]);else if(v.length>0&&!p){for(let E=0,M=v.length;E<M;E++)v[E][il]=0;v=[]}if(i&&u.saveStructures){let E=o.sharedLength||h;o.length>E&&(o=o.slice(0,E));let M=Y.subarray(t,U);return u.saveStructures(o,l)===!1?(u._mergeStructures(u.getStructures()),u.pack(x)):(l=E,M)}}N&sT&&(U=t)}};let S=x=>{U>Po&&(Y=T(U));var N=typeof x,E;if(N==="string"){let M=x.length;if(Co&&M>=8&&M<4096){let B=ZA.test(x);Co[B?0:1]+=x,Y[U++]=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(U+_>Po&&(Y=T(U+_)),M<64||!c){let B,V,k,L=U+D;for(B=0;B<M;B++)V=x.charCodeAt(B),V<128?Y[L++]=V:V<2048?(Y[L++]=V>>6|192,Y[L++]=V&63|128):(V&64512)===55296&&((k=x.charCodeAt(B+1))&64512)===56320?(V=65536+((V&1023)<<10)+(k&1023),B++,Y[L++]=V>>18|240,Y[L++]=V>>12&63|128,Y[L++]=V>>6&63|128,Y[L++]=V&63|128):(Y[L++]=V>>12|224,Y[L++]=V>>6&63|128,Y[L++]=V&63|128);E=L-U-D}else E=c(x,U+D,_);E<32?Y[U++]=160|E:E<256?(D<2&&Y.copyWithin(U+2,U+1,U+1+E),Y[U++]=217,Y[U++]=E):E<65536?(D<3&&Y.copyWithin(U+3,U+2,U+2+E),Y[U++]=218,Y[U++]=E>>8,Y[U++]=E&255):(D<5&&Y.copyWithin(U+5,U+3,U+3+E),Y[U++]=219,Mt.setUint32(U,E),U+=4),U+=E}else if(N==="number")if(x>>>0===x)x<64?Y[U++]=x:x<256?(Y[U++]=204,Y[U++]=x):x<65536?(Y[U++]=205,Y[U++]=x>>8,Y[U++]=x&255):(Y[U++]=206,Mt.setUint32(U,x),U+=4);else if(x>>0===x)x>=-32?Y[U++]=256+x:x>=-128?(Y[U++]=208,Y[U++]=x+256):x>=-32768?(Y[U++]=209,Mt.setInt16(U,x),U+=2):(Y[U++]=210,Mt.setInt32(U,x),U+=4);else{let M;if((M=this.useFloat32)>0&&x<4294967296&&x>=-2147483648){Y[U++]=202,Mt.setFloat32(U,x);let D;if(M<4||(D=x*eu[(Y[U]&127)<<1|Y[U+1]>>7])>>0===D){U+=4;return}else U--}Y[U++]=203,Mt.setFloat64(U,x),U+=8}else if(N==="object")if(!x)Y[U++]=192;else{if(s){let D=s.get(x);if(D){if(!D.id){let _=s.idsToInsert||(s.idsToInsert=[]);D.id=_.push(D)}Y[U++]=214,Y[U++]=112,Mt.setUint32(U,D.id),U+=4;return}else s.set(x,{offset:U-t})}let M=x.constructor;if(M===Object)C(x,!0);else if(M===Array){E=x.length,E<16?Y[U++]=144|E:E<65536?(Y[U++]=220,Y[U++]=E>>8,Y[U++]=E&255):(Y[U++]=221,Mt.setUint32(U,E),U+=4);for(let D=0;D<E;D++)S(x[D])}else if(M===Map){E=x.size,E<16?Y[U++]=128|E:E<65536?(Y[U++]=222,Y[U++]=E>>8,Y[U++]=E&255):(Y[U++]=223,Mt.setUint32(U,E),U+=4);for(let[D,_]of x)S(D),S(_)}else{for(let D=0,_=nu.length;D<_;D++){let B=zp[D];if(x instanceof B){let V=nu[D];if(V.write){V.type&&(Y[U++]=212,Y[U++]=V.type,Y[U++]=0),S(V.write.call(this,x));return}let k=Y,L=Mt,W=U;Y=null;let F;try{F=V.pack.call(this,x,j=>(Y=k,k=null,U+=j,U>Po&&T(U),{target:Y,targetView:Mt,position:U-j}),S)}finally{k&&(Y=k,Mt=L,U=W,Po=Y.length-10)}F&&(F.length+U>Po&&T(F.length+U),U=JA(F,Y,U,V.type));return}}C(x,!x.hasOwnProperty)}}else if(N==="boolean")Y[U++]=x?195:194;else if(N==="bigint"){if(x<BigInt(1)<<BigInt(63)&&x>=-(BigInt(1)<<BigInt(63)))Y[U++]=211,Mt.setBigInt64(U,x);else if(x<BigInt(1)<<BigInt(64)&&x>0)Y[U++]=207,Mt.setBigUint64(U,x);else if(this.largeBigIntToFloat)Y[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(N==="undefined")this.encodeUndefinedAsNil?Y[U++]=192:(Y[U++]=212,Y[U++]=0,Y[U++]=0);else if(N==="function")S(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+N)},C=this.useRecords===!1?this.variableMapSize?x=>{let N=Object.keys(x),E=N.length;E<16?Y[U++]=128|E:E<65536?(Y[U++]=222,Y[U++]=E>>8,Y[U++]=E&255):(Y[U++]=223,Mt.setUint32(U,E),U+=4);let M;for(let D=0;D<E;D++)S(M=N[D]),S(x[M])}:(x,N)=>{Y[U++]=222;let E=U-t;U+=2;let M=0;for(let D in x)(N||x.hasOwnProperty(D))&&(S(D),S(x[D]),M++);Y[E+++t]=M>>8,Y[E+t]=M&255}:x=>{let N=Object.keys(x),E,M=a.transitions||(a.transitions=Object.create(null)),D=0;for(let B=0,V=N.length;B<V;B++){let k=N[B];E=M[k],E||(E=M[k]=Object.create(null),D++),M=E}let _=M[il];if(_)_>=96&&m?(Y[U++]=((_-=96)&31)+96,Y[U++]=_>>5):Y[U++]=_;else{_=a.nextId,_||(_=64),_<y&&this.shouldShareStructure&&!this.shouldShareStructure(N)?(_=a.nextOwnId,_<g||(_=y),a.nextOwnId=_+1):(_>=g&&(_=y),a.nextId=_+1);let B=N.highByte=_>=96&&m?_-96>>5:-1;M[il]=_,a[_-64]=N,_<y?(N.isShared=!0,a.sharedLength=_-63,i=!0,B>=0?(Y[U++]=(_&31)+96,Y[U++]=B):Y[U++]=_):(B>=0?(Y[U++]=213,Y[U++]=114,Y[U++]=(_&31)+96,Y[U++]=B):(Y[U++]=212,Y[U++]=114,Y[U++]=_),D&&(w+=O*D),v.length>=f&&(v.shift()[il]=0),v.push(M),S(N))}for(let B=0,V=N.length;B<V;B++)S(x[N[B]])},T=x=>{let N;if(x>16777216){if(x-t>Xg)throw new Error("Packed buffer would be larger than maximum buffer size");N=Math.min(Xg,Math.round(Math.max((x-t)*(x>67108864?1.25:2),4194304)/4096)*4096)}else N=(Math.max(x-t<<2,Y.length-1)>>12)+1<<12;let E=new Vp(N);return Mt=new DataView(E.buffer,0,N),Y.copy?Y.copy(E,0,t,x):E.set(Y.slice(t,x)),U-=t,t=0,Po=E.length-10,Y=E}}useBuffer(r){Y=r,Mt=new DataView(Y.buffer,Y.byteOffset,Y.byteLength),U=0}};zp=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,nl];nu=[{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?Kg(n,16,r):Qg(iu?Buffer.from(n):new Uint8Array(n),r)}},{pack(n,r){let e=n.constructor;e!==Zg&&this.structuredClone?Kg(n,Lp.indexOf(e.name),r):Qg(n,r)}},{pack(n,r){let{target:e,position:t}=r(1);e[t]=193}}];function Kg(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 Qg(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 JA(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 eT(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 Tn(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)");zp.unshift(n.Class),nu.unshift(n)}Yg(n)}var Jg=new mi({useRecords:!1}),tT=Jg.pack,rT=Jg.pack;var{NEVER:oT,ALWAYS:nT,DECIMAL_ROUND:iT,DECIMAL_FIT:aT}=ru,ex=512,sT=1024;var tx=new mi({structuredClone:!0});Tn({Class:he.prototype.constructor,type:1,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,he.prototype),n}});Tn({Class:ve.prototype.constructor,type:2,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,ve.prototype),n}});Tn({Class:st.prototype.constructor,type:3,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,st.prototype),n}});Tn({Class:rl.prototype.constructor,type:4,write(n){return n.id},read(n){return new rl(n)}});Tn({Class:ol.prototype.constructor,type:5,write(n){return n.data},read(n){return new ol(n)}});Tn({Class:lt.prototype.constructor,type:6,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,lt.prototype),n}});function lT(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 Gp(n){if(ua(n))return n;if(Array.isArray(n))return n.map(Gp);if(typeof n=="object"&&n!==null){let r={};for(let e of Object.keys(n).sort())r[e]=Gp(n[e]);return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}else return n}var au;(t=>{function n(o){return tx.pack(o)}t.serialize=n;function r(o){return tx.unpack(o)}t.deserialize=r;function e(o){return lT(n(Gp(o))).toString()}t.checksum=e})(au||(au={}));var En="personal camera",Nn="a218fcc3-276b-49b9-b485-49037fd14f5f",sx=2960946,Et=5526619;var ga;(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),w=h.dot(g,v)/h.dot(g,g),O=h.scalarMultiply(g,w);return h.add(f,O)}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})(ga||(ga={}));var In;(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})(In||(In={}));var rx;(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})(rx||(rx={}));var ox;(a=>{let n=180/Math.PI,r=Math.PI/180;function e(s){return typeof s=="number"?s*n:s}function t(s){return typeof s=="number"?s*r:s}function o(s){return[e(s[0]),e(s[1]),e(s[2])]}a.radToDeg=o;function i(s){return[t(s[0]),t(s[1]),t(s[2])]}a.degToRad=i})(ox||(ox={}));var Mn;(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})(Mn||(Mn={}));var zt;(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})(zt||(zt={}));var _e;(c=>{c.white={...zt.white,a:1},c.transparent={...zt.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{...zt.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 zt.equals(u,p)&&u.a===p.a}c.equals=i;function a(u,p){return zt.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 su;(r=>r.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(su||(su={}));var nx;(r=>r.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(nx||(nx={}));var ix;(r=>r.defaultData={control1:[.5,0],control2:[.5,1]})(ix||(ix={}));var ax;(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]))(ax||(ax={}));function Fp(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 eo;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function r(t){return e.all.includes(t)}e.is=r})(eo||(eo={}));var Dn;(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})(Dn||(Dn={}));var Oo;(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(cT.forEach(a=>{Object.assign(i,{[a]:o[a]??t[a]})}),i.radial={...t.radial},o.radial){let a=t.radial,s=o.radial;uT.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;dT.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;pT.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;fT.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;hT.forEach(l=>{Object.assign(i.randomnessObject,{[l]:s[l]??a[l]})})}return i}e.merge=r})(Oo||(Oo={}));var lu;(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})(lu||(lu={}));var cT=["count"],uT=["radius","start","end","position","scale","rotation"],dT=["position","scale","rotation"],pT=["count","size"],fT=["count","position","scale","rotation"],hT=["strength","scale","rotation","position","movement","seed","freqScale"];var cu;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function r(t){return e.all.includes(t)}e.is=r})(cu||(cu={}));var uu;(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")}})(uu||(uu={}));var xa;(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",emitTimeDuration:1,...t.defaultCollisionData}))(xa||(xa={}));var _n;(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]})(_n||(_n={}));var jp;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function r(t,o){return t.castShadow===o.castShadow&&t.receiveShadow===o.receiveShadow}e.equals=r})(jp||(jp={}));var kp;(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})(kp||(kp={}));var du;(r=>r.defaultData={...kp.defaultData,...jp.defaultData})(du||(du={}));var lx;(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})(lx||(lx={}));var ba;(e=>(e.defaultVideo={data:"",thumb:"/_assets/_videos/catThumb.png",type:"video",name:"Cat video"},e.maxSize=3e7))(ba||(ba={}));var cx;(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})(cx||(cx={}));function dx(n){return n.type!=="displace"}var ux;(r=>{function n(e){return e==="phong"||e==="toon"||e==="lambert"||e==="physical"}r.is=n})(ux||(ux={}));var px=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],fx=["wrapping","image","video","name","minFilter","magFilter"],Bt;(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,magFilter:1006},crop:!1};case"video":return{...a,type:"video",size:[128,128],blending:0,axis:"x",side:2,projection:0,texture:{video:ba.defaultVideo,wrapping:1001,repeat:[1,1],offset:[0,0],rotation:0,minFilter:1008,magFilter:1006},crop:!1};case"color":return{...a,type:"color",color:zt.fromHex(Et)};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:{...zt.fromHex(6710886),a:1},colorB:{...zt.fromHex(6710886),a:1},colorC:{...zt.fromHex(16777215),a:1},colorD:{...zt.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,magFilter:1006}};case"transmission":return{...a,type:"transmission",thickness:10,ior:1.5,roughness:1};case"displace":return{visible:!0,type:"displace",displacementType:"noise",noiseType:0,scale:10,movement:1,offset:[0,0,0],intensity:8,voronoiStyle:0,smoothness:.3,seed:0,highCut:1,lowCut:0,quality:1};case"pattern":return{...a,type:"pattern",style:0,projection:0,axis:"y",blending:0,offset:[0,0],colorA:{...zt.fromHex(0),a:1},colorB:{...zt.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}}}})(Bt||(Bt={}));var Yt;(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 ve}}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 ve;return h.push({fi:0,data:Bt.defaultData("light",u),id:p}),h.push({fi:1,data:Bt.defaultData("color"),id:d}),{layers:h}}c.defaultTwoLayerData=i;function a(u){let p=Bt.defaultData("texture");u&&Object.assign(p.texture,{image:u});let d=new ve;return d.push({fi:0,data:p,id:"layer1"}),d.push({fi:1,data:{...Bt.defaultData("transmission"),alpha:1},id:"layer2"}),d.push({fi:2,data:{...Bt.defaultData("light","lambert"),alpha:0},id:"layer3"}),{layers:d}}c.defaultUIObjectMaterial=a;function s(u,p="phong",d="layer1",h="layer2"){let f=Bt.defaultData("texture");Object.assign(f.texture,{image:u});let m=new ve;return m.push({fi:0,data:f,id:d}),m.push({fi:1,data:Bt.defaultData("light",p),id:h}),{layers:m}}c.defaultTwoLayerTextureData=s;function l(u,p="phong",d="layer1",h="layer2"){let f=Bt.defaultData("video");Object.assign(f.texture,{video:u});let m=new ve;return m.push({fi:0,data:f,id:d}),m.push({fi:1,data:Bt.defaultData("light",p),id:h}),{layers:m}}c.defaultTwoLayerVideoTextureData=l})(Yt||(Yt={}));var va;(r=>{function n(){return{points:new ve,roundness:0,shapeHoles:[],isClosed:!1}}r.defaultData=n})(va||(va={}));var Sa;(r=>{function n(){return{points:new ve,lastInsertionPlane:null,subdivisions:12,isClosed:!1}}r.defaultData=n})(Sa||(Sa={}));var Up={type:"Ellipse",width:50,height:50,spikes:16,angle:360,innerRadius:0};var pu;(r=>{function n(e,t){let o={...e};return mT.forEach(i=>{Object.assign(o,{[i]:t[i]??e[i]})}),o}r.merge=n})(pu||(pu={}));var fu={shape:Up,depth:1,offset:0,bevel:50,bevelSides:6,angle:0,twist:0,startScale:1,endScale:1,capType:"flat"},mT=["depth","offset","angle","twist","startScale","endScale"];var al;(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"||t==="InputGeometry"}e.isParametricMesh=r})(al||(al={}));var hu;(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,pu.merge(o.extrusion,t.extrusion))),o}r.merge=n})(hu||(hu={}));var Yo;(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:Sa.defaultData(),extrusion:fu};if(e==="VectorGeometry")return{width:1,height:1,type:e,subdivisions:12,shape:va.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",editable:!1,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="InputGeometry")return{...r.defaultData("TextGeometry"),type:e,editable:!0};if(e==="SphereGeometry")return{type:"SphereGeometry",width:100,height:100,depth:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:180};throw new Error("not implemented")}r.defaultData=n})(Yo||(Yo={}));var mu;(r=>r.defaultData={enabled:!1,useBackgroundColor:!1,color:zt.white,near:.1,far:2e3})(mu||(mu={}));var yu;(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}}})(yu||(yu={}));var Hp;(r=>r.defaultData={softShadowQuality:"low"})(Hp||(Hp={}));var Wp;(r=>r.defaultData={enabled:!0,color:{r:.8274509803921568,g:.8274509803921568,b:.8274509803921568},intensity:.75})(Wp||(Wp={}));var qp;(r=>r.defaultData={occlusion:!1,aoFullRes:!1,radius:256,bias:.5,aoColor:{r:.19607843137254902,g:.19607843137254902,b:.19607843137254902}})(qp||(qp={}));var sl;(r=>r.defaultData={usePhysics:!1,gravity:-10})(sl||(sl={}));var $p;(r=>r.defaultData={playCamera:En,gameControlObject:null})($p||($p={}));var gu;(r=>r.defaultData={backgroundColor:_e.fromHexAndA(sx,1),postprocessing:yu.defaultData,fog:mu.defaultData,globalPhysics:sl.defaultData,ambient:Wp.defaultData,ao:qp.defaultData,shadow:Hp.defaultData,publish:$p.defaultData})(gu||(gu={}));var xu;(r=>r.defaultData={colliderType:"box",size:[100,100,100],colliderHelperVisible:!0,forceType:"collider",forceRange:"global",forceIntensity:.5,forceDambing:.95})(xu||(xu={}));var hx;(e=>{function n(t){return t==="Component"||t==="Instance"}e.isComponentRelated=n;function r(t){return t==="Empty"||t==="Instance"}e.isEmptyOrComponent=r})(hx||(hx={}));var wa;(o=>{o.identity={...su.identity,hiddenMatrix:Mn.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 mc({position:In.isEqual(i.position,a.position)?void 0:a.position,rotation:In.isEqual(i.rotation,a.rotation)?void 0:a.rotation,scale:In.isEqual(i.scale,a.scale)?null:a.scale,hiddenMatrix:Mn.isEqual(i.hiddenMatrix,a.hiddenMatrix)?void 0:a.hiddenMatrix})}o.diff=t})(wa||(wa={}));var Rt;(r=>r.defaultData={states:new ve,events:new ve,visible:!0,raycastLock:!1,physics:_n.defaultData,pathSnapping:{pathId:null,slide:0,offset:0,orientation:"tangential"},...wa.identity,cloner:null})(Rt||(Rt={}));var bu;(r=>r.defaultData={type:"Empty",...Rt.defaultData})(bu||(bu={}));var mx;(r=>r.defaultData={type:"ParticleCollider",...xu.defaultData,...Rt.defaultData})(mx||(mx={}));var yx;(r=>r.defaultData={type:"Component",...Rt.defaultData})(yx||(yx={}));var gx;(r=>r.defaultData={type:"Particle",...Rt.defaultData,...xa.defaultData})(gx||(gx={}));var Bn;(r=>r.defaultData={type:"Mesh",...Rt.defaultData,...du.defaultData})(Bn||(Bn={}));var yi;(r=>r.defaultData={...Rt.defaultData,...wa.identity,position:[0,0,Dn.DefaultTargetOffset],...Dn.defaultData})(yi||(yi={}));var vu;(e=>{function n(t){return{...Rt.defaultData,...uu.defaultData(t)}}e.defaultData=n,e.defaultDirectionalLightData={...e.defaultData("DirectionalLight"),position:[200,300,300],name:"Directional Light",intensity:.7}})(vu||(vu={}));var Pa;(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})(Pa||(Pa={}));var Ao;(i=>{i.rootOverrideProps=["physics","events"],i.compositeNonOptionalOverrideProps=["geometry"],i.compositeEntireOverrideOverrideProps=["material"];function t(a,s){return{...Rt.defaultData,...s,component:a,overrides:new lt,physics:void 0,events:void 0,type:"Instance"}}i.ofComponent=t;function o(a){let s=wa.fromObject(a.data);return t(a.id,s)}i.fromComponentData=o})(Ao||(Ao={}));var Xo;(e=>{e.defaultData={type:"Page",...Rt.defaultData,physics:{..._n.defaultData,fusedBody:!1},...gu.defaultData,camera:yi.defaultData};function r(t){return t.uiScene!==void 0}e.isUIPage=r})(Xo||(Xo={}));var Su;(a=>(a.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:Mn.identity,name:"Play Camera",visible:!0,raycastLock:!1,physics:_n.defaultData,states:new ve,events:new ve,cloner:null,pathSnapping:{pathId:null,orientation:"tangential",slide:0,offset:0},...Dn.defaultData},a.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"]},a.defaultMeshObject={name:"Rectangle",...Rt.defaultData,...Bn.defaultData,geometry:Yo.defaultData("RectangleGeometry"),material:Yt.defaultTwoLayerData("phong","layer1","layer2")},a.defaultBooleanObject={name:"Boolean",...Rt.defaultData,...Bn.defaultData,geometry:Yo.defaultData("BooleanGeometry"),material:Yt.defaultTwoLayerData("phong","layer1","layer2")},a.defaultTextObject={name:"Text",...Rt.defaultData,...Bn.defaultData,geometry:Yo.defaultData("TextGeometry"),material:Yt.defaultTwoLayerData("phong","layer1","layer2")},a.defaultInputObject={name:"Input",...Rt.defaultData,...Bn.defaultData,geometry:Yo.defaultData("InputGeometry"),material:Yt.defaultTwoLayerData("phong","layer1","layer2")}))(Su||(Su={}));var gi;(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})))):eo.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=Cn(s.material,l=>{if(typeof l!="string")for(let[c,u]of Object.entries(a.material.layers)){let p=l.layers.data(c);p&&Bt.patch(p,u)}}).data),s.materials&&a.materials&&(s.materials=Cn(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&&Bt.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(...lu.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,wa.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})}),eo.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:hu.merge(s.geometry,a.geometry)}),(a.material||a.materials)&&(s=r(s,a)),s.cloner&&"cloner"in a&&Object.assign(s,{cloner:Oo.merge(s.cloner,a.cloner)});else if(i.type==="Empty")s.cloner&&"cloner"in a&&Object.assign(s,{cloner:Oo.merge(s.cloner,a.cloner)});else if(cu.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=zt.clone(l.color))}return s}o.patch=t})(gi||(gi={}));var Ca;(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})(Ca||(Ca={}));var to;(r=>r.defaultData={orbitControls:Ca.defaultData,playPage:Nn,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,imageQuality:70}},stopRaycast:!0,hdTransmission:!1})(to||(to={}));var Yp;(r=>r.defaultData={id:"basic",label:"Basic",style:"None",prompt:""})(Yp||(Yp={}));var Xp;(r=>r.defaultData={weather:0,shadows:0,lightOrigin:0,temperature:0,sun:0,camera:0,environment:0,particles:0,nature:0,floor:0})(Xp||(Xp={}));var Ko;(e=>(e.defaultData=()=>({mode:"line-art-both",prompt:"",negativePrompt:"",style:{...Yp.defaultData},isRandomSeed:!0,seed:e.generateSeed(),guessMode:!1,advanced:!1,steps:20,guidanceScale:7.5,controlNetScale:1,modifiers:Xp.defaultData}),e.generateSeed=()=>Math.round(Math.random()*1e5)))(Ko||(Ko={}));var xx;(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=Oa.getComponentData(t,s.component)?.data;l&&i(a,s,l.events)}else i(a,s,s.events)})}e.traverseModuleInstances=r})(xx||(xx={}));var Qo;(c=>{c.TRASH_CAN_ID="830a2708-8ed9-49cf-a68e-085299892222",c.defaultLight={fi:-1,data:vu.defaultDirectionalLightData,id:"830a2708-8ed9-49cf-a68e-085299899103",children:[]};function e(u=!0,p=[]){let d=[],h=Su.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:Nn,data:{...Xo.defaultData,name:"Scene 1"},children:d}),f}c.createDefaultObjectTreeWithPage=e,c.defaultData={objects:e(),publish:to.defaultData,styles:Ko.defaultData()},c.emptyDataWithoutPage=function(){return{objects:new st,publish:to.defaultData,styles:Ko.defaultData()}},c.emptyDataWithPage=function(u=!0){return{objects:e(u),publish:to.defaultData,styles:Ko.defaultData()}},c.emptyData=function(){return{objects:new st,publish:{...to.defaultData},styles:Ko.defaultData()}};function s(u){return{...c.defaultData,objects:Jt(u,st.prototype)}}c.withObjs=s;function l(u,p){return s([{id:u,data:p,children:[],fi:0}])}c.withObj=l})(Qo||(Qo={}));var Aa;(r=>r.defaultData={preset:"fullscreen",allowResponsive:!1,size:[512,512],coords:[0,0],sceneScale:1,color:{r:0,g:0,b:0,a:.5}})(Aa||(Aa={}));var wu;(e=>(e.defaultData=t=>({url:t,name:"New Webhook",parametersSchemas:new ve}),e.defaultParameterValueByType=t=>t==="number"?0:t==="boolean"?!1:""))(wu||(wu={}));var bx;(r=>r.defaultData=(e,t="GET")=>({url:e,method:t,name:"New API",headers:new ve,queries:new ve,autoStart:!0}))(bx||(bx={}));var Rn;(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})(Rn||(Rn={}));var Kp;(r=>r.all=["images","videos","colors","audios","particles","fonts","materials","variables"])(Kp||(Kp={}));var vx;(r=>r.all=[...Kp.all,"components"])(vx||(vx={}));var Sx;(r=>{function n(){return{images:new he,videos:new he,colors:new he,audios:new he,particles:new he,fonts:new he,materials:new he,components:new he,variables:new he,userAPIs:new he,userWebhooks:new he}}r.defaultData=n})(Sx||(Sx={}));var ro;(r=>{function n(){return{images:new he,videos:new he,colors:new he,audios:new he,particles:new he,fonts:new he,materials:new he,components:new he,variables:new he,userAPIs:new he,userWebhooks:new he}}r.defaultData=n})(ro||(ro={}));var Gr;(i=>{function n(){let a={};return a["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},Jt(a,he.prototype)}i.defaultColors=n;function r(){return Jt({},he.prototype)}i.defaultImages=r;function e(){return{catelogs:new he,materials:new he,images:new he,videos:new he,colors:new he,audios:new he,particles:new he,fonts:new he,variables:new ve,userAPIs:new he,userWebhooks:new he,lib:ro.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})(Gr||(Gr={}));var ll=require("three");var Pu;(r=>r.list=["idle","move","jump","run"])(Pu||(Pu={}));var Cu;(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 ve,move:new ve,jump:new ve,run:new ve},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)}}))(Cu||(Cu={}));function wx(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={...Jr(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 Zo(n,r){Object.values(n.shared.materials).forEach(e=>r(e))}function Jo(n,r){n.scene.objects.traverse((e,t)=>{"materials"in t?t.materials.forEach((o,i)=>{o===void 0&&(t.materials[i]=Yt.defaultData(),o=t.materials[i]),typeof o!="string"&&r(o)}):"material"in t?typeof t.material!="string"&&(t.material===void 0&&(t.material=Yt.defaultData()),r(t.material)):t.type==="Mesh"&&(t.material===void 0&&(t.material=Yt.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 yT(n){Object.assign(n.scene.publish,{orbitControls:{...Ca.defaultData,...xt(n.scene.publish.orbitControls)}})}function gT(n){Object.assign(n.scene.publish.settings,{video:{...to.defaultData.settings.video,...xt(n.scene.publish.settings.video)}})}function xT(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((px.includes(o)||typeof i=="boolean")&&delete t[o],o==="texture")for(let[a,s]of Object.entries(i))(fx.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 bT(n){n.scene.publish.withBackground=!0}function vT(n){n.scene.publish.settings.web={compress:!0,preload:!0,preset:1,logo:!0,hint:!1}}function ST(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 wT(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 PT(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 OT(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 Px(n){n.layers===void 0&&Object.assign(n,Yt.defaultTwoLayerData("lambert"))}function Qp(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 Cx(n){n.scene.objects.traverse((r,e)=>{"materials"in e?e.materials.forEach(t=>{typeof t!="string"&&Qp(t)}):"material"in e&&typeof e.material!="string"&&Qp(e.material)}),Object.values(n.shared.materials).forEach(r=>Qp(r))}function TT(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=Jt({},he.prototype)}function MT(n){n.shared.videos=Jt({},he.prototype)}function ET(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 NT(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 DT(n){n.scene.publish.settings.web.preload=!1}function Ox(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 Ax(n){n.layers&&n.layers.forEach(r=>{dx(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 _T(n){n.shared.fonts=Jt({},he.prototype)}function BT(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=Yt.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=BT(o.font);n.shared.fonts[s]===void 0&&(n.shared.fonts[s]={name:s});let l={name:o.name,...Rt.defaultData,...Bn.defaultData,flatShading:!1,wireframe:!1,geometry:{...Yo.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 LT(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 ve,move:new ve,jump:new ve}});else{let i=new ve;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:ll.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,Jr(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 ve({fi:0,id:ll.MathUtils.generateUUID(),data:c},{fi:1,id:ll.MathUtils.generateUUID(),data:d})};i.push({fi:l,id:s,data:h})}),delete o.targets)}})})}function VT(n){n.scene.objects.traverse((r,e)=>{function t(o,i){let a=new ve,s=[];if(e.events.forEach((l,c,u)=>{if(l.type==="Audio"&&l.trigger===i){let p;s.push(c),l.interaction==="play"?p={...Jr(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={...Jr(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:ll.MathUtils.generateUUID(),data:{type:o,actions:a}}])}}t("Start","start"),t("MouseDown","mouseDown"),t("MouseUp","mouseUp"),t("KeyDown","keyDown"),t("KeyUp","keyUp")})}function Tx(n){let r=n.layers.find(e=>e.type==="light")?.data;if(r?.category==="basic"){let e=Bt.defaultData("light","phong"),t=r;Object.assign(t,e),t.visible=!1}}function Ix(n){Zo(n,Tx),Jo(n,Tx)}function zT(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&e.geometry.type==="SubdivGeometry"&&(e.geometry.scaleBaked||(e.geometry.scaleBaked=[1,1,1]))})}function GT(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=Yt.defaultTwoLayerData("phong"))})}function jT(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 UT(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 HT(n){let{video:r}=n.scene.publish.settings;r.format==="gif"&&r.fps>48&&(r.fps=15)}function WT(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.resetYPosition=Math.abs(t.resetYPosition-e.position[1]))})})}function qT(n){let r=n.scene.environment.usePhysics;n.scene.objects.traverse((e,t)=>{r&&t.physics===null?t.collision=!1:t.collision="visibility"})}function $T(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.navmesh=Cu.defaultDataThirdPerson.navmesh)})})}function YT(n){n.scene.styles||(n.scene.styles=Ko.defaultData())}function Mx(n){n.layers.forEach(r=>{r.type==="light"&&r.category!=="toon"&&r.occlusion===void 0&&(r.occlusion=!0)})}function XT(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}),Jo(n,Mx),Zo(n,Mx)}function KT(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&Object.assign(t.gameActions,{run:new ve})})})}function QT(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.keyAssignments=[...t.keyAssignments,["run","\u21E7"],["none","Ctrl"]])})})}function Ex(n){n.layers&&n.layers.forEach(r=>{r.type==="light"&&r.bumpMapIntensity===void 0&&(r.bumpMapIntensity=5)})}function Nx(n,r){if(r<1&&(Jo(n,wx),Zo(n,wx),n.schema=1),r<2&&(yT(n),n.schema=2),r<3&&(xT(n),n.schema=3),r<4&&(bT(n),n.schema=4),r<5&&(vT(n),n.schema=5),r<6&&(ST(n),n.schema=6),r<7&&(wT(n),n.schema=7),r<8&&(n.schema=8),r<9&&(Cx(n),n.schema=9),r<10&&(AT(n),n.schema=10),r<11&&(TT(n),n.schema=11),r<12&&(Cx(n),n.schema=12),r<13&&(IT(n),n.schema=13),r<14&&(ET(n),n.schema=14),r<15&&(NT(n),n.schema=15),r<16&&(DT(n),n.schema=16),r<17&&(Jo(n,Ox),Zo(n,Ox),n.schema=17),r<18&&(Jo(n,Px),Zo(n,Px),n.schema=18),r<19&&(gT(n),n.schema=19),r<20&&(_T(n),RT(n),n.schema=20),r<21&&(LT(n),VT(n),n.schema=21),r<22&&(Ix(n),n.schema=22),r<23&&(zT(n),n.schema=23),r<24&&(GT(n),n.schema=24),(r<25||n.shared.videos===void 0)&&(MT(n),r<25&&(n.schema=25)),r<26&&(PT(n),n.schema=26),r<27&&(CT(n),n.schema=27),r<28&&(Ix(n),n.schema=28),r<29&&(OT(n),n.schema=29),r<30&&(FT(n),n.schema=30),r<31&&(jT(n),n.schema=31),r<33&&(kT(n),n.schema=33),r<34&&(UT(n),n.schema=34),r<35&&(HT(n),n.schema=35),r<36&&(WT(n),n.schema=36),r<37&&(qT(n),n.schema=37),r<38&&(Jo(n,Ax),Zo(n,Ax),n.schema=38),r<39&&($T(n),n.schema=39),r<40&&(YT(n),n.schema=40),r<41&&(XT(n),n.schema=41),r<42&&(KT(n),n.schema=42),r<43&&(QT(n),n.schema=43),r<99){Jo(n,Ex),Zo(n,Ex),n.scene.publish.playCamera===null&&(n.scene.publish.playCamera=En);let e=xt(n.scene.objects),t=n.scene.objects;n.scene.publish.playPage=Nn,t.insertBefore(null,null,[{id:Nn,data:{...Xo.defaultData,backgroundColor:n.scene.backgroundColor,fog:n.scene.fog,postprocessing:n.scene.postprocessing,ao:Jr(n.scene.environment.ambientLight,"occlusion","aoFullRes","radius","bias","aoColor"),publish:{playCamera:n.scene.publish.playCamera,gameControlObject:n.scene.publish.gameControlObject},shadow:Jr(n.scene.environment.ambientLight,"softShadowQuality"),globalPhysics:{...sl.defaultData,...Jr(n.scene.environment,"usePhysics","gravity")},camera:xt(n.scene.ownerCamera)??Xo.defaultData.camera,name:"Scene"},children:[]}]);for(let a of e)a.id!==Qo.TRASH_CAN_ID&&t.move(Nn,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,_n.defaultData)),s.physics!==void 0&&s.physics!==null&&(s.physics.enabled=s.collision??"visibility",delete s.collision)}),n.schema=99}}function Dx(n){n.layers&&n.layers.forEach(r=>{r.type==="light"&&r.alphaOverride===void 0&&(r.alphaOverride=1)})}function ZT(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 JT(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 Ta=180/Math.PI;function _x(n){n.rotation=n.rotation.slice(0,3).map(r=>r*Ta)}function Bx(n){_x(n),n.type==="Page"&&_x(n.camera),n.states?.forEach(e=>{e.rotation===void 0||e.rotation===null||(e.rotation=e.rotation.slice(0,3).map(t=>t*Ta))});let r=n.geometry;r&&r.type==="SphereGeometry"&&(r.thetaLength=(r.thetaLength??180)*Ta),r&&r.type==="TorusGeometry"&&(r.arc=r.arc*Ta),r&&r.type==="PathGeometry"&&(r.extrusion.angle*=Ta,r.extrusion.twist*=Ta),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 eI(n){n.shared.variables=Jt({},he.prototype)}function tI(n){let r=xt(n.shared.variables);n.shared.variables=Jt(Object.entries(r??{}).map(([e,t],o)=>({fi:o,id:e,data:t})),ve.prototype)}var To=115;function Rx(n,r){r(n.data);for(let e of n.children)Rx(e,r)}function rI(n){let r=n.schema??104;r!==To&&r<105&&(Rx(n.asset,Bx),n.schema=105)}function oI(n){n.shared.particles=Jt({},he.prototype),n.shared.lib&&(n.shared.lib.particles=ro.defaultData().particles)}function nI(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 iI(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 aI(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 sI(n){n.shared.userAPIs=Jt({},he.prototype),n.shared.userWebhooks=Jt({},he.prototype),n.shared.lib&&(n.shared.lib.userAPIs=ro.defaultData().userAPIs,n.shared.lib.userWebhooks=ro.defaultData().userWebhooks)}function Ou(n){let r=n.schema??0;if(r!==To){console.warn("updating from ",r,"to ",To),Nx(n,r),r<100&&(n.scene.publish.joystickSizeAndXYOffset===void 0&&(n.scene.publish.joystickSizeAndXYOffset=to.defaultData.joystickSizeAndXYOffset),n.schema=100),r<101&&(Jo(n,Dx),Zo(n,Dx),n.schema=101),r<102&&(ZT(n),n.schema=102),r<104&&(n.shared.catelogs=new he,n.shared.lib=ro.defaultData(),n.schema=104),r<105&&(eI(n),n.scene.objects.traverse((e,t)=>{Bx(t)}),n.schema=105);for(let e of Object.values(n.shared.lib.components))rI(e);r<106&&(tI(n),n.schema=106),r<107&&(n.shared.lib.variables=ro.defaultData().variables,n.schema=107),r<109&&(oI(n),n.schema=109),r<110&&(nI(n),n.schema=110),r<111&&(n.scene.objects.traverse((e,t)=>{JT(t)}),n.schema=111),r<112&&(iI(n),n.schema=112),r<113&&(aI(n),n.schema=113),r<114&&(n.scene.publish.settings.web.imageQuality===void 0&&(n.scene.publish.settings.web.imageQuality=70),n.schema=114),r<115&&(sI(n),n.schema=115)}}var Oa;(c=>{c.defaultData={schema:To,scene:Qo.defaultData,frames:new he().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",Aa.defaultData),shared:{...Gr.emptyData(),colors:Gr.defaultColors()}},c.emptyDataForImports=function(){let u=Qo.emptyDataWithPage();return{schema:To,scene:u,frames:new he().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",Aa.defaultData),shared:{...Gr.emptyData(),colors:Gr.defaultColors(),images:Gr.defaultImages()}}},c.emptyData=function(){return{schema:To,scene:Qo.emptyDataWithPage(),frames:new he().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",Aa.defaultData),shared:Gr.emptyData()}},c.clipboard2dData=function(){return{schema:To,scene:Qo.emptyData(),frames:new he,shared:Gr.emptyData()}},c.collabHelper={...tl,updateSchema(u){return(u.schema??0)<To?Cn(u,Ou):(u.schema??0)-To}};function i(u){let p=c.collabHelper.updateSchema(u);return typeof p=="number"?p===0?u:null:p.data}c.updateSchemaDirectly=i;function a(u){return{...u,shared:{...u.shared,lib:ro.defaultData()}}}c.withoutLib=a;function s(u,p){let d=u.scene.objects.get(p);if(d&&d.data.type==="Component")return d;{let h=u.shared.lib.components[p];if(h)return h.asset}}c.getComponentData=s;function l(u){let p=Object.values(u.shared.userAPIs);for(let d of p){let h=d.headers;for(let f of h)if(f.data.key.toLowerCase()==="authorization"&&f.data.value!=="")return!0}return!1}c.hasSensitiveData=l})(Oa||(Oa={}));var Au;(r=>r.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII=",name:"empty"})(Au||(Au={}));var Lx;(r=>{function n(e){return!0}r.is=n})(Lx||(Lx={}));var Tu;(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 mc({position:ga.isEqual(o.position,i.position)?void 0:i.position,rotation:o.rotation===i.rotation?void 0:i.rotation,scale:ga.isEqual(o.scale,i.scale)?void 0:i.scale,shear:o.shear&&i.shear&&ga.isEqual(o.shear,i.shear)?void 0:i.shear})}t.diff=e})(Tu||(Tu={}));var Zp;(r=>r.defaultData={horizontalConstraint:0,verticalConstraint:0})(Zp||(Zp={}));var Vx;(r=>r.defaultData={direction:"row",wrap:"unwrap",align:"top-left",gap:10,rowGap:10,autoGap:!1,autoRowGap:!1,leftPadding:8,rightPadding:8,topPadding:8,bottomPadding:8})(Vx||(Vx={}));var Iu;(r=>r.defaultData={opacity:1,fill:{color:_e.fromHexAndA(Et,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}})(Iu||(Iu={}));var xi;(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,Tu.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})(xi||(xi={}));var cl;(r=>r.defaultData={...Tu.defaultData,...Zp.defaultData,states:new ve,events:new ve,visible:!0,raycastLock:!1})(cl||(cl={}));var Ia;(r=>r.defaultData={...cl.defaultData,...Iu.defaultData})(Ia||(Ia={}));var Mu;(r=>r.defaultData={cornerRadius:[0,0,0,0]})(Mu||(Mu={}));var Jp;(r=>r.defaultData={...Ia.defaultData,type:"ellipse2d",width:100,height:100,name:"Ellipse"})(Jp||(Jp={}));var Ma;(r=>r.defaultData={...Ia.defaultData,...Mu.defaultData,type:"rectangle2d",width:100,height:100,name:"Rectangle"})(Ma||(Ma={}));var ef;(r=>r.defaultData={...Ia.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"})(ef||(ef={}));var tf;(r=>r.defaultData={...Ia.defaultData,type:"path2d",path:"",name:"Path"})(tf||(tf={}));var zx;(r=>{function n(e){return e.type==="ellipse2d"||e.type==="rectangle2d"||e.type==="text2d"||e.type==="vector2d"||e.type==="path2d"}r.is=n})(zx||(zx={}));var ul;(r=>r.defaultData={...cl.defaultData,name:"Group",type:"group2d"})(ul||(ul={}));var rf;(r=>r.defaultData=()=>({...cl.defaultData,...Mu.defaultData,...Iu.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}}))(rf||(rf={}));var en;(i=>{function n(a){switch(a){case"rectangle2d":return{...Ma.defaultData};case"ellipse2d":return{...Jp.defaultData};case"text2d":return{...ef.defaultData};case"vector2d":return{...Ma.defaultData};case"path2d":return{...tf.defaultData};case"frame2d":return{...rf.defaultData()};case"group2d":return{...ul.defaultData}}}i.defaultData=n;function r(a){return"width"in a&&"height"in a?[typeof a.width=="number"?a.width*.5:0,typeof a.height=="number"?a.height*.5:0]:[0,0]}i.getPivot=r;function e(a){return a.type==="rectangle2d"||a.type==="ellipse2d"||a.type==="text2d"||a.type==="frame2d"}i.isResizeable=e;function t(a){return a.type==="frame2d"&&a.autoLayout!==void 0}i.isAutoLayoutable=t;function o(a){return a.type==="rectangle2d"||a.type==="frame2d"}i.hasCorners=o})(en||(en={}));var Eu;(e=>(e.defaultData={name:"UI",type:"scene2d",objects:new st},e.emptyData=function(){return{type:"scene2d",objects:new st}}))(Eu||(Eu={}));var Je=require("three"),Ts=Ys(Fx());var lI=.5*(Math.sqrt(3)-1),dl=(3-Math.sqrt(3))/6,cI=1/3,Io=1/6,zU=(Math.sqrt(5)-1)/4,GU=(5-Math.sqrt(5))/20,pl=n=>Math.floor(n)|0,jx=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]),nf=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 Nu(n=Math.random){let r=Ux(n),e=new Float64Array(r).map(o=>jx[o%12*2]),t=new Float64Array(r).map(o=>jx[o%12*2+1]);return function(i,a){let s=0,l=0,c=0,u=(i+a)*lI,p=pl(i+u),d=pl(a+u),h=(p+d)*dl,f=p-h,m=d-h,y=i-f,g=a-m,v,w;y>g?(v=1,w=0):(v=0,w=1);let O=y-v+dl,S=g-w+dl,C=y-1+2*dl,T=g-1+2*dl,x=p&255,N=d&255,E=.5-y*y-g*g;if(E>=0){let _=x+r[N],B=e[_],V=t[_];E*=E,s=E*E*(B*y+V*g)}let M=.5-O*O-S*S;if(M>=0){let _=x+v+r[N+w],B=e[_],V=t[_];M*=M,l=M*M*(B*O+V*S)}let D=.5-C*C-T*T;if(D>=0){let _=x+1+r[N+1],B=e[_],V=t[_];D*=D,c=D*D*(B*C+V*T)}return 70*(s+l+c)}}function kx(n=Math.random){let r=Ux(n),e=new Float64Array(r).map(i=>nf[i%12*3]),t=new Float64Array(r).map(i=>nf[i%12*3+1]),o=new Float64Array(r).map(i=>nf[i%12*3+2]);return function(a,s,l){let c,u,p,d,h=(a+s+l)*cI,f=pl(a+h),m=pl(s+h),y=pl(l+h),g=(f+m+y)*Io,v=f-g,w=m-g,O=y-g,S=a-v,C=s-w,T=l-O,x,N,E,M,D,_;S>=C?C>=T?(x=1,N=0,E=0,M=1,D=1,_=0):S>=T?(x=1,N=0,E=0,M=1,D=0,_=1):(x=0,N=0,E=1,M=1,D=0,_=1):C<T?(x=0,N=0,E=1,M=0,D=1,_=1):S<T?(x=0,N=1,E=0,M=0,D=1,_=1):(x=0,N=1,E=0,M=1,D=1,_=0);let B=S-x+Io,V=C-N+Io,k=T-E+Io,L=S-M+2*Io,W=C-D+2*Io,F=T-_+2*Io,j=S-1+3*Io,H=C-1+3*Io,q=T-1+3*Io,re=f&255,ee=m&255,X=y&255,te=.6-S*S-C*C-T*T;if(te<0)c=0;else{let $=re+r[ee+r[X]];te*=te,c=te*te*(e[$]*S+t[$]*C+o[$]*T)}let K=.6-B*B-V*V-k*k;if(K<0)u=0;else{let $=re+x+r[ee+N+r[X+E]];K*=K,u=K*K*(e[$]*B+t[$]*V+o[$]*k)}let Z=.6-L*L-W*W-F*F;if(Z<0)p=0;else{let $=re+M+r[ee+D+r[X+_]];Z*=Z,p=Z*Z*(e[$]*L+t[$]*W+o[$]*F)}let Q=.6-j*j-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[$]*j+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 Hx=require("three"),oo=new Hx.Triangle,Du=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;oo.a.fromBufferAttribute(r,o),oo.b.fromBufferAttribute(r,o+1),oo.c.fromBufferAttribute(r,o+2),i*=oo.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),oo.a.fromBufferAttribute(this.positionAttribute,r*3),oo.b.fromBufferAttribute(this.positionAttribute,r*3+1),oo.c.fromBufferAttribute(this.positionAttribute,r*3+2),e.set(0,0,0).addScaledVector(oo.a,o).addScaledVector(oo.b,i).addScaledVector(oo.c,1-(o+i)),oo.getNormal(t),this}};var Yx=require("three");var Er=require("three"),$x=Ys(qx()),uI=new Er.Matrix4,dI=new Er.Matrix4,pI=new Er.Matrix4,Ea;(r=>{function n(e){return e&&e.__isSPEObject}r.is=n})(Ea||(Ea={}));var Na=n=>class extends n{constructor(){super(...arguments);this.previousModelViewMatrix=new Er.Matrix4;this.copyPreviousMatrix=!0;this.hiddenMatrix=new Er.Matrix4;this.matrixWorldRigid=new Er.Matrix4;this.shearScale=new Er.Matrix4;this.shearScaleInv=new Er.Matrix4}get __isSPEObject(){return!0}isDescendantOf(t){t instanceof Er.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)Ea.is(i)&&i.traverseObject(t,o+1)}traverseObject(t,o=0){if(t(this,o)!==!0)for(let a of this.children)Ea.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,$x.SVD)(o),l=uI.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=dI.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=pI.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 Er.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 Er.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 af=class extends Na(Yx.Object3D){},fI=n=>n.type==="Mesh",tn=class extends af{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 tn(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 fI(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 Qa=require("three");var Ju=require("three");var sr=require("three");var At=require("three"),bi=new At.Vector3,vi=new At.Vector3,Da=new At.Matrix4,Kx=[new At.Vector3(-1,1,1),new At.Vector3(-1,-1,1),new At.Vector3(1,-1,1),new At.Vector3(1,1,1),new At.Vector3(-1,1,-1),new At.Vector3(-1,-1,-1),new At.Vector3(1,-1,-1),new At.Vector3(1,1,-1)],hI=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],mI=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]],Xx=(n,r,e)=>{n.updateEntityBoxSize(bi,vi),Da.copy(r).multiply(n.matrixWorld),vi.x===0&&vi.y===0&&vi.z===0?e.push(new At.Vector3(bi.x,bi.y,bi.z).applyMatrix4(Da)):Kx.forEach(t=>{e.push(t.clone().multiply(vi).add(bi).applyMatrix4(Da))})},fl=class extends At.Box3{constructor(){super(...arguments);this.matrix=new At.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 At.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 At.Vector3);return}Xx(a,t,i)}}):Xx(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(Da.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(vi).multiplyScalar(.5),this.getCenter(bi),Da.copy(this.matrix).setPosition(bi),this.vertices=Kx.map(e=>e.clone().multiply(vi).applyMatrix4(Da))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=hI.map(([e,t])=>new At.Line3(this.vertices[e],this.vertices[t])),this.centerEdges=this.edges.map(e=>e.getCenter(new At.Vector3))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=mI.map(([e,t])=>this.vertices[e].clone().add(this.vertices[t]).multiplyScalar(.5))}};var no={Cloner:()=>{},changeEntityProptotype:()=>{},createEntity:()=>{}};var Xt=require("three"),lf=class extends Xt.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 cf=.001;function uf(n,r,e){return r.clone().sub(n).cross(r.clone().sub(e)).length()<=cf}function sf(n,r){let e=new Xt.Vector3(...n.position),t=new Xt.Vector3(...n.controlNext.position),o=new Xt.Vector3(...r.controlPrevious.position),i=new Xt.Vector3(...r.position);return uf(e,t,i)&&uf(e,o,i)}function Bu(n){let r=n.points.map(u=>new Xt.Vector3(...u.data.position)),e=[n.points[0]],t=new Xt.Vector3(...e[0].data.position);for(let u=0;u<n.points.length-1;u++)uf(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 Xt.Vector3(...p.position),h=new Xt.Vector3(...p.controlPrevious.position),f=new Xt.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,w=e[g].data,O=new Xt.Vector3(...v.position),S=new Xt.Vector3(...w.position),C=O.clone().sub(d).normalize(),T=S.clone().sub(d).normalize();Object.assign(m,{prevDir:C,nextDir:T});let x=sf(v,p),N=sf(p,w);if(!x||!N)s[u]={...m,removedLength:0};else{let E=C.clone().add(T).normalize(),M=E.clone().cross(C).length()/C.dot(E);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(!sf(e[p].data,e[d].data))h.position.distanceTo(f.position)>cf&&(m=new Xt.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)>cf&&(m=new Xt.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,w=y.clone().multiplyScalar(Math.sqrt(Math.pow(m,2)-Math.pow(v,2))).add(g),O=y.clone().multiplyScalar(-m).add(w),S=d.distanceTo(O)/d.distanceTo(g),C=p.prevDir.clone().multiplyScalar(S*d.distanceTo(h)).add(d),T=C.clone().lerp(O,2),x=h.clone().lerp(C,4/3),N=f.clone().lerp(T,4/3);l[2*u]=new Xt.CubicBezierCurve3(h,x,N,f)}let c=new lf;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 _a=n=>je.is(n),yI={type:"completeState",isfromEntity:!0},gI=["x","y","z"],df=new sr.Vector3,xI=new sr.Vector3().set(0,1,0),Ba=n=>class extends Na(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 fl;this._recursiveBBox=new fl;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)gi.toOps(this.data,a.data).forEach(l=>{let c=fa.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=gi.patch(this.data,a),gi.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=>{_a(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)_a(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)_a(a)&&a.isConcreteEntity&&a.traverseEntity(t,o+1)}traverseEntity(t,o=0){if(t(this,o)!==!0)for(let a of this.children)_a(a)&&a.traverseEntity(t,o+1)}traverseVisibleEntity(t){t(this);for(let o of this.children)_a(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=>_a(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*sr.MathUtils.RAD2DEG,this.rotation.y*sr.MathUtils.RAD2DEG,this.rotation.z*sr.MathUtils.RAD2DEG],scale:this.scale.toArray(),hiddenMatrix:this.hiddenMatrix.toArray()};return la(o,t)}getTransformValues(t,o,i){return o[t].map((a,s)=>i?.shared.getVariable(a,[this.uuid,t,gI[s]])??a)}updateTransformState(t,o){let i=!1;return t.position&&(this.position.fromArray(this.getTransformValues("position",t,o)),i=!0),t.rotation&&(df.fromArray(this.getTransformValues("rotation",t,o)).multiplyScalar(sr.MathUtils.DEG2RAD),this.rotation.setFromVector3(df),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??Mn.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 la(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=Fe(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=ct.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=ct.removeOverridden(t.path,t.props,u);l={...t,props:p}}}if(this.updateByPatchedOpBase(l,gi.patch(this.data,this.stateSelection?this.data.states.data(this.stateSelection):void 0),i),Fe(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(vo.apply(h.component.data,h.overrideData),i))}}else{let d=i.scene.findInstance([this.uuid,...u]);if(d){let h=ct.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=Pa.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 Ao.rootOverrideProps)d in t.props&&(p===void 0&&(p={}),p[d]=t.props[d]);p&&(u={...t,props:p})}else for(let p of Ao.rootOverrideProps)if(Fe(t.path,[p])){u=t;break}u!==void 0&&this.instances.forEach(p=>{if(p.isInstanceRoot){let d=vo.filterOp(p.overrideData,u);d&&p.updateByOp(d,gt.applySimple(p.data,d),i,!0)}}),this.instances.forEach(p=>{if(!p.isInstanceRoot){let d=vo.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&&!eo.is(t.props.type)&&no.changeEntityProptotype(this,o,i);else if(t.path.length===1&&t.path[0]==="geometry"&&t.type===0&&"type"in t.props){no.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),t.path[0]==="morphTargetInfluences"&&t.type===0){let s=o.morphTargetInfluences.get(t.path[1])?.data.name;s&&this.updateMorphInfluences(s,i.shared.getVariable(t.props.value,[this.uuid,"morphTargetInfluences",s]))}if(Fe(t.path,["pathSnapping"])!==null&&this.updatePathSnapping(o.pathSnapping),Fe(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=Bu(c.geometry.path),p=(i+a)%1;i+a===1&&p===0&&(p=1);let d=null;try{d=u.curves.length?u.getPointAt(p):null}catch(y){!1&&(console.warn(`The aligned path on ${this.name} is invalid. (${l.name})`),console.error(y))}if(d===null)return;let h=this.parent?this.parent?.matrixWorld:new sr.Matrix4;l.updateMatrixWorld();let f=new sr.Matrix4().multiplyMatrices(h.clone().invert(),l.matrixWorld);d.applyMatrix4(f);let m={position:d.toArray(),rotation:c.rotation};if(s==="tangential"){let y=new sr.Matrix4().extractRotation(l.matrixWorld),g=u.getTangentAt(p).applyMatrix4(y).add(d),v=new sr.Matrix4().lookAt(d,g,xI),w=df.setFromEuler(new sr.Euler().setFromRotationMatrix(v)).multiplyScalar(sr.MathUtils.RAD2DEG);m={...m,rotation:w.toArray()}}this.updateTransformState(m),this.traverseEntity(y=>{y._cameraType&&y.dispatchEvent(yI)})}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 no.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 no.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 Vn=require("three");var it=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,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 hl(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 Ln(n,r,e){e.x=n.x*r.x,e.y=n.y,e.z=n.x*r.y}function Qx(n){return new it.Vector2(n.y,-n.x)}var hl=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,w=t/2,O=new it.Vector3,S=new it.Vector3;h&&r==0&&(r=c),h&&e==0&&(e=u);let C=new it.Vector2(r,w),T=new it.Vector2(e,-w),x=null,N=null,E=null,M=null,D=C.clone().sub(T),_=0,B=0,V=0;d>0&&(_=Math.min(r,e)*(1-d),B=r-_,V=e-_);let k=C.clone();k.x-=_;let L=Math.PI-D.angle(),W=D.angle(),F=Math.tan(W/2),j=Math.tan(L/2),H=F+j,q=d?H:j,re=d?H:F;if(c=Math.min(c,(r-B)/q,D.length()/H),u=Math.min(u,(e-V)/re,D.length()/H),c>0){let Q=c/F;x=C.clone().sub(new it.Vector2(Q,c)),d&&(E=x.clone(),E.x-=_-H*c),C.sub(D.clone().setLength(Q))}if(u>0){let Q=u/j;N=T.clone().sub(new it.Vector2(Q,-u)),T.add(D.clone().setLength(Q)),d&&(M=N.clone(),M.x-=_-H*u,k.sub(D.clone().setLength(Q)))}D=C.clone().sub(T);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&&N?(te($,ue,ne,L,u,M,-1,!0),te($,ue,ne,W,u,N,-1,!1)):N?(K($,ne,N.x,0,-1),te($,ue,ne,W,u,N,-1,!1)):a||K($,ne,e,V,-1);let ce=Qx(D).normalize();if(Ln(ce,ne,O),!ee)for(let ae=0;ae<=i;ae++){let ye=ae/i,fe=D.clone().multiplyScalar(ye).add(T);Ln(fe,ne,S),m.push(S.x,S.y,S.z),y.push(O.x,O.y,O.z),g.push(ue,.5+S.y/t),$.push(v++)}if(E&&x?(te($,ue,ne,L,c,x,1,!1),te($,ue,ne,W,c,E,1,!0)):x?(te($,ue,ne,L,c,x,1,!1),K($,ne,x.x,0,1)):a||K($,ne,r,B,1),d&&!ee){let ae=Qx(D).multiplyScalar(-1).normalize();Ln(ae,ne,O);for(let ye=0;ye<=i;ye++){let fe=ye/i,me=D.clone().multiplyScalar(-fe).add(k);Ln(me,ne,S),m.push(S.x,S.y,S.z),y.push(O.x,O.y,O.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],ye=m[ne*3+2];f.push(ue,le,ce),(ae!=0||ye!=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,ye){for(let fe=0;fe<p+1;fe++){let me=fe/p,be=ae<0?me:1-me;ye&&(be-=1),be*=le;let ge=new it.Vector2(Math.sin(be),Math.cos(be)*ae),A=ge.clone().multiplyScalar(ne).add(ce);Ln(A,ue,S),m.push(S.x,S.y,S.z),Ln(ge,ue,O),y.push(O.x,O.y,O.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,ye=[ue,le];ne<0&&ye.reverse();for(let fe of ye)ae.set(fe,w*ne),Ln(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?(me,be,ge)=>f.push(me,be,ge):(me,be,ge)=>f.push(me,ge,be),ye=new it.Vector2((r+e+B+V)/4,0);Ln(ye,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 me of $){let be=m.slice(me*3,me*3+3);m.push(...be),y.push(ne.x,0,ne.y);let ge=g.slice(me*2,me*2+2);g.push(...ge),v++}for(let me=fe+1;me<v-1;me++)ae(fe,me,me+1);ae(fe,v-1,fe+1)}}};var Jx=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=Vn.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 Vn.BufferGeometry,d.setAttribute("position",new Vn.Float32BufferAttribute([],3))):c>0||u>0||l<360?d=new hl(0,r/2,t,o,i,a,s,l*Math.PI/180,c,u,p,0,!0):d=new Vn.ConeGeometry(r/2,t,o,i,a),d.scale(1,1,e/r),Object.assign(d,{userData:{...n,type:"ConeGeometry"}})}};var xr=require("three"),e0=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 xr.BoxGeometry(r,e,t,o,i,a):c=new ff(r,e,t,o,i,a,s,l),Object.assign(c,{userData:{...n,type:"CubeGeometry"}})}},pf=Math.PI/2,ff=class extends xr.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 xr.Float32BufferAttribute(u,3)),this.setAttribute("normal",new xr.Float32BufferAttribute(p,3)),this.setAttribute("uv",new xr.Float32BufferAttribute(d,2));function f(g,v,w,O,S,C,T,x,N,E){let M=(C-2*s)/N,D=(T-2*s)/E,_=C/2-s,B=T/2-s,V=x/2,k=N+1,L=E+1,W=0,F=new xr.Vector3;for(let j=0;j<L;j++){let H=j*D-B;for(let q=0;q<k;q++){let re=q*M-_;F[g]=re*O,F[v]=H*S,F[w]=V,u.push(F.x,F.y,F.z),F[g]=0,F[v]=0,F[w]=x>0?1:-1,p.push(F.x,F.y,F.z),d.push(q/N),d.push(1-j/E),W+=1}}for(let j=0;j<E;j++)for(let H=0;H<N;H++){let q=h+H+k*j,re=h+H+k*(j+1),ee=h+(H+1)+k*(j+1),X=h+(H+1)+k*j;c.push(q,re,X),c.push(re,ee,X)}h+=W}function m(g,v,w,O,S,C,T,x,N,E){let M=(T-2*s)/E,D=T/2-s,_=x/2-s,B=N/2,V=E+1,k=0,L=new xr.Vector3,W=new xr.Vector3;for(let F=0;F<l+1;F++){let j=F/l*pf,H=Math.sin(j)*s,q=(1-Math.cos(j))*s,re=Math.sin(j),ee=Math.cos(j);L[v]=(_+H)*S,L[w]=(B-q)*C,W[g]=0,W[v]=re*Math.sign(L[v]),W[w]=ee*Math.sign(L[w]);for(let X=0;X<V;X++){let te=X*M-D;L[g]=te*O,u.push(L.x,L.y,L.z),p.push(W.x,W.y,W.z),d.push(X/E),d.push(0),k+=1}}for(let F=0;F<l;F++)for(let j=0;j<E;j++){let H=h+j+V*F,q=h+j+V*(F+1),re=h+(j+1)+V*(F+1),ee=h+(j+1)+V*F;c.push(H,q,ee),c.push(q,re,ee)}h+=k}function y(g,v,w){let O=new xr.Vector3,S=new xr.Vector3(r/2,e/2,t/2);S.subScalar(s);let C=[],T=g*v*w>0?(N,E,M)=>c.push(N,E,M):(N,E,M)=>c.push(N,M,E);for(let N=0;N<=l;N++){let E=[],M=pf*(1-N/l),D=Math.cos(M),_=Math.sin(M),B=0;for(let V=0;V<=N;V++){let k=Math.cos(B),L=Math.sin(B);O.x=D*k,O.y=_,O.z=D*L;let W=S.clone().addScaledVector(O,s);u.push(g*W.x,v*W.y,w*W.z),p.push(g*O.x,v*O.y,w*O.z),d.push(0,0),E.push(h++),B+=pf/N}C.push(E)}let x=C.length-1;for(let N=0;N<x;N++){let E=C[N],M=C[N+1],D=E.length-1;T(E[0],M[1],M[0]);for(let _=1;_<=D;_++)T(E[_-1],E[_],M[_]),T(E[_],M[_+1],M[_])}}}};var Tt=require("three"),zn=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,w=a+1,O=new Tt.Vector3,S=(F,j)=>O.subVectors(F,j).normalize(),C=(F,j)=>Array(F).fill(void 0).map(j),T=C(r.length/3,(F,j)=>new Tt.Vector3().fromArray(r,j*3).setLength(o)),x=[],N=1e6;for(let F=0;F<T.length;F++){let j=T[F],H=[],q,re,ee,X=1e10,te=-1;for(;(te=e.indexOf(F,te+1))!=-1;){let $=te-te%3;q=e[$+(te+1)%3],re=e[$+(te+2)%3],ee=j.distanceToSquared(T[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(F)==!0;ee<=X&&K.push(q+ +ue*N),Z=H.findIndex(le=>le[0]==re)}x.push(K)}let E=[];{let F=0,j=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++)[F,j]=[H+X+ee+2,q+X+ee+3],E.push(H,q,...re?[j,H]:[F,q],j,F),[H,q]=[F,j];E.push(H,q,H+a+2)}}let M=f.clone(),D=f.clone(),_=f.clone(),B=f.clone(),V=f.clone(),k=[],L=C(T.length,()=>C(h,()=>f.clone()));for(let F=0;F<T.length;F++){f.copy(T[F]).normalize(),M.copy(f).multiplyScalar(v);let j=x[F];for(let K=0;K<j.length;K++){let Z=j[K],Q=j[(K+1)%h];y.setFromPointsAndIndices(T,F,Z%N,Q%N),y.b.sub(y.a).setLength(1e10).add(y.a),y.c.sub(y.a).setLength(1e10).add(y.a),y.closestPointToPoint(M,L[F][K])}let H=[],q=[],re=[],ee=new Tt.Vector3;a==0&&[...L[F]].reduce((K,Z)=>K.add(Z),ee).multiplyScalar(1/h);for(let K=0;K<h;K++){let Z=[],Q=(K-1+h)%h,$=L[F][Q],ue=L[F][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 ye=0;ye<2;ye++){let fe=ae[ye],me=ae[ye+1];B.subVectors(fe,M),V.subVectors(me,M),_.crossVectors(B,V).normalize();for(let be=0;be<w;be++){let ge=[le,ne][ye]*be/w;f.copy(B).applyAxisAngle(_,ge).add(M),H.push(f.clone()),ye&&(S(f,M),Z.push([be==0?fe:f.clone(),O.clone()]))}ye&&(S(me,M),Z.push([me,O.clone()]))}re.push(Z)}k.push(re);let X=2*w,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<w;le++){B=H[Z+le],V=H[Q+le],$.push(B);for(let ne=1,ce=le-te+1;ne<=ce;ne++)f.lerpVectors(B,V,ne/(ce+1)),f.sub(M).setLength(q[K]).add(M),$.push(f.clone());$.push(V)}for(let le=0;le<w;le++)$.push(H[le+w+Z]);$.push(H[Q+w]);let ue=E.map(le=>$[le]);s.push(...ue.map(le=>[le.x,le.y,le.z]).flat()),c.push(...ue.map(le=>(S(le,M),[O.x,O.y,O.z])).flat())}}let W=[];for(let F=0;F<x.length;F++)for(let j=0;j<h;j++){let H=x[F][j];if(H<N){let q=x[H].findIndex(X=>X%N==F),re=k[F][j],ee=k[H][q];for(let X=0;X<w;X++){let te=re[X],K=ee[w-X],Z=re[X+1],Q=ee[w-(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[w][0],re[w][0],ee[0][0])}}for(;W.length;){let F,j,H,q;[F,j]=W.splice(0,2);let re=[F];for(;F!=j;)re.push(j),H=W.indexOf(j),q=H%2,j=W.splice(H-q,2)[1-q];O.subVectors(re[0],re[1]).cross(f.subVectors(re[0],re[2])).normalize();let ee=O.dot(re[0])<0;ee&&O.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(O.x,O.y,O.z)})}}function p(){let d=new Tt.Vector3;for(let T=0;T<s.length;T+=3){d.x=s[T+0],d.y=s[T+1],d.z=s[T+2];let x=S(d)/2/Math.PI+.5,N=C(d)/Math.PI+.5;l.push(x,1-N)}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,w=new Tt.Vector2,O=(T,x,N,E)=>{E<0&&T.x===1&&(l[x]=T.x-1),N.x===0&&N.z===0&&(l[x]=E/2/Math.PI+.5)};for(let T=0,x=0;T<s.length;T+=9,x+=6){h.set(s[T+0],s[T+1],s[T+2]),f.set(s[T+3],s[T+4],s[T+5]),m.set(s[T+6],s[T+7],s[T+8]),g.set(l[x+0],l[x+1]),v.set(l[x+2],l[x+3]),w.set(l[x+4],l[x+5]),y.copy(h).add(f).add(m).divideScalar(3);let N=S(y);O(g,x+0,h,N),O(v,x+2,f,N),O(w,x+4,m,N)}for(let T=0;T<l.length;T+=6){let x=l[T+0],N=l[T+2],E=l[T+4],M=Math.max(x,N,E),D=Math.min(x,N,E);M>.9&&D<.1&&(x<.2&&(l[T+0]+=1),N<.2&&(l[T+2]+=1),E<.2&&(l[T+4]+=1))}function S(T){return Math.atan2(T.z,-T.x)}function C(T){return Math.atan2(-T.y,Math.sqrt(T.x*T.x+T.z*T.z))}}}static fromJSON(r){return new zn(r.vertices,r.indices,r.radius,r.corner,r.cornerSides)}};var t0=require("three"),r0=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 ml(r*.5,i,a):new t0.DodecahedronGeometry(r*.5,o);return s.scale(1,e/r,t/r),Object.assign(s,{userData:{...n,type:"DodecahedronGeometry"}})}},ml=class extends zn{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 ml(r.radius,r.corner,r.cornerSides)}};var Ye=require("three");var Ee=require("three"),yl=1e-12,Ra=class{constructor(r){this.position=new Ee.Vector2;this.startPosition=new Ee.Vector2;this.uuid=Ee.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 Ra(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},La=class extends Ra{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new La(this.parent).copy(this)}},io=class extends Ra{constructor(e,t){super(t);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new La(this),new La(this))}static create(e,t){let o=new io(e,new Ee.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 io(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 Ee.Vector2,t=new Ee.Vector2){let[o,i]=this.computeTangents();return o&&i&&(o0(o,e),o0(i,t)),[e,t]}computeTangent(e=new Ee.Vector2){let[t,o]=this.computeTangents();return t&&o&&e.copy(t).add(o).normalize(),e}computeNormal(e=new Ee.Vector2){let[t,o]=this.computeNormals();return e.copy(t).add(o).normalize(),e}};function o0(n,r=new Ee.Vector2){let e=n.length();return r.set(-n.y/e,n.x/e)}var mf=n=>n,Va=new Ee.Vector2,Ru=new Ee.Vector2,bI=new Ee.Vector2,vI=new Ee.Vector2,SI=new Ee.Vector2,wI=new Ee.Vector2,i0=new Ee.Vector3,a0=new Ee.Vector3;function s0(n){let r=new Ee.Vector2;r.addVectors(n.v0,Va.subVectors(n.v1,n.v0).multiplyScalar(2/3));let e=new Ee.Vector2;return e.addVectors(n.v2,Ru.subVectors(n.v1,n.v2).multiplyScalar(2/3)),new Ee.CubicBezierCurve(n.v0,r,e,n.v2)}function gl(n,r,e=Number.EPSILON){return Math.abs(n-r)<e}function PI(n,r,e=Number.EPSILON){return n.distanceTo(r)<e}function CI(n,r,e=Number.EPSILON){return n.distanceTo(r)<e}function yf(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 l0(n,r,e){return n0(n,r)&&n0(r,e)&&hf(n.position,r.position,e.position)}function hf(n,r,e){return Va.copy(r).sub(n).cross(Ru.copy(e).sub(n))===0}function c0(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 u0(n,r,e){let t=n.distanceTo(e),o=r.distanceTo(e);return t<o?r:n}function d0(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 yf(r,n,e)>Math.PI&&(u*=-1),gl(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 gf(n,r){return n.position.equals(n.controls[1].position)&&r.position.equals(r.controls[0].position)}function n0(n,r){return hf(n.position,n.controls[1].position,r.position)&&hf(n.position,r.controls[0].position,r.position)}function p0(n,r,e,t,o=.5){let i=Va.subVectors(r,n).multiplyScalar(o).add(n),a=Ru.subVectors(e,r).multiplyScalar(o).add(r),s=bI.subVectors(t,e).multiplyScalar(o).add(e),l=i,c=vI.subVectors(a,i).multiplyScalar(o).add(i),u=SI.subVectors(s,a).multiplyScalar(o).add(a),p=s,d=wI.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 f0(n,r,e=12,t=!0){let o=a0.set(0,0,0),i,a=0,s=[];for(let l=0;l<r.length;l++){let c=mf(r[l]),u=Va,p=Gn(c,e);s.push(p);for(let d=0;d<=p;d++)if(c instanceof Ee.CubicBezierCurve||c instanceof Ee.QuadraticBezierCurve||c instanceof Ee.LineCurve){if(c.getPoint(d/p,u),o.set(u.x,u.y,0),i!==void 0&&CI(i,o))continue;i===void 0&&(i=i0),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 h0(n,r,e,t=12,o=!0){let i=a0.set(0,0,0),a=0,s=[];for(let l=0;l<r.length;l++){if(e[l]===!1)continue;let c,u=mf(r[l]),p=Va,d=Gn(u,t);s.push(d);for(let h=0;h<=d;h++)if(u instanceof Ee.CubicBezierCurve||u instanceof Ee.QuadraticBezierCurve||u instanceof Ee.LineCurve){if(u.getPoint(h/d,p),i.set(p.x,p.y,0),c?.equals(i))continue;c===void 0?c=i0:(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 xf(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=Gn(a.roundedCurveCorner,r)*.5;o>0&&(t[o-1]+=l),s+=l}a.curveAfter!==void 0&&(s+=Gn(a.curveAfter,r)),t.push(s)}return n.length>0&&e&&n[0].roundedCurveCorner!==void 0&&(t[n.length-1]+=Gn(n[0].roundedCurveCorner,r)*.5),t}function Gn(n,r=12){return n&&n instanceof Ee.EllipseCurve?r*2:n&&(n instanceof Ee.LineCurve||n instanceof Ee.LineCurve3)?1:n&&n instanceof Ee.SplineCurve?r*n.points.length:r}function m0(n,r,e=12,t=!0){let o,i=0;for(let a=0;a<r.length;a++){let s=mf(r[a]),l=Gn(s,e),c=Va;for(let u=0;u<=l;u++)if(s instanceof Ee.CubicBezierCurve||s instanceof Ee.QuadraticBezierCurve||s instanceof Ee.LineCurve){if(s.getPoint(u/l,c),o!==void 0&&PI(o,c,yl))continue;o===void 0&&(o=Ru),o.copy(c),n.push(c.x,c.y),i++}}return gl(n[0],n[n.length-2],yl)&&gl(n[1],n[n.length-1],yl)&&(n.pop(),n.pop()),t&&i>1&&!(gl(n[i-1],n[1],yl)&&gl(n[i-2],n[0],yl))&&(n.push(n[0],n[1]),i++),n}var bf=new Ye.Vector2,OI=new Ye.Vector2,AI=new Ye.Vector2,TI=new Ye.Vector2,II=new Ye.Vector2,MI=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=>io.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=bf.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 io(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 f0(e,o?this.roundedCurves:this.curves,t,this.autoClose),i.reduce((a,s)=>a+s,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=xf(this.points,e,!1),this.roundedCurveDivisions=xf(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,t,o=12){return h0(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),m0(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=Gn(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(gf(i,a)){let p=i.position.distanceTo(a.position);return i.position.distanceTo(bf.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){gf(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&&l0(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),w=Math.min(g,v),O=1-w/m,S=w/y,C=p.getPointAt(O,bf),T=d.getPointAt(S,OI);this._subSplitCurve(p,h,O,C,void 0),this._subSplitCurve(d,f,S,void 0,T);let x;if(this.useCubicForRoundedCorners){let N=yf(C,a.position,T)/2,E=Math.tan(N)*C.distanceTo(a.position),[M,D]=c0(C,T,E,AI,TI),_=u0(M,D,a.position),[B,V]=d0(_,C,T,E,II,MI);x=new Ye.CubicBezierCurve(C.clone(),B.clone(),V.clone(),T.clone())}else x=new Ye.QuadraticBezierCurve(C.clone(),a.position.clone(),T.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=p0(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 io(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]=s0(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 Sf=Math.PI*2;function vf({x:n,y:r},e,t,o,i){return{x:n*e+o,y:r*t+i}}function EI(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 y0(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 NI(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,w=(a-m)/o,O=(s-y)/i,S=(-a-m)/o,C=(-s-y)/i,T=y0(1,0,w,O),x=y0(w,O,S,C);return!c&&x>0&&(x-=Sf),c&&x<0&&(x+=Sf),{centerx:g,centery:v,ang1:T,ang2:x}}function g0({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=NI(n,r,e,t,o,i,c,u,a,s),{ang1:h,ang2:f}=d,{centerx:m,centery:y}=d,g=Math.abs(f)/(Sf/4);Math.abs(1-g)<1e-7&&(g=1);let v=Math.max(Math.ceil(g),1);f/=v;for(let w=0;w<v;w++)l.push(EI(h,f)),h+=f;return l.map(w=>{let{x:O,y:S}=vf(w[0],o,i,m,y),{x:C,y:T}=vf(w[1],o,i,m,y),{x,y:N}=vf(w[2],o,i,m,y);return{x1:O,y1:S,x2:C,y2:T,x,y:N}})}var Si=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 Se=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}(),xl=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}(),Lu=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}(),za=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}(),x0=function(){function n(){var r=new za,e=new xl,t=new Lu(0),o=new Lu(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 Lu(0),t=new Lu(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 za,e=new za,t=new xl,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 za;this.makeVertex_(i,e,r.Org),r.Org.anEdge=r}if(!t){var a=new xl;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 xl;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 za;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 xl;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&&Se.vertCCW(t.Lprev.Org,t.Org,i.Lnext.Lnext.Org)&&Se.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}(),b0=function(){function n(){this.handle=null}return n}(),v0=function(){function n(){this.key=null,this.node=0}return n}(),DI=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 b0,this.handles[t]=new v0;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 b0;for(i=this.handles.length,this.handles.length=this.max+1,o=i;o<this.handles.length;o++)this.handles[o]=new v0}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}(),wf=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}(),S0=function(){function n(){this.key=null,this.next=null,this.prev=null}return n}(),_I=function(){function n(r,e){this.frame=r,this.leq=e,this.head=new S0,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 S0;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}(),BI=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?Se.vertLeq(i.Org,a.Org)?Se.edgeSign(a.Dst,i.Org,a.Org)<=0:Se.edgeSign(i.Dst,a.Org,i.Org)>=0:Se.edgeSign(a.Dst,o,a.Org)<=0;if(a.Dst===o)return Se.edgeSign(i.Dst,o,i.Org)>=0;var s=Se.edgeEval(i.Dst,o,i.Org),l=Se.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 wf;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(Se.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=Se.vertL1dist(e,r),i=Se.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(Se.vertLeq(o.Org,i.Org)){if(Se.edgeSign(i.Dst,o.Org,i.Org)>0)return!1;Se.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(Se.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(!Se.vertEq(o.Dst,i.Dst)),Se.vertLeq(o.Dst,i.Dst)){if(Se.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(Se.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 za,h,f;if(Pe(!Se.vertEq(c,l)),Pe(Se.edgeSign(l,r.event,a)<=0),Pe(Se.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(Se.vertLeq(a,s)){if(Se.edgeSign(c,a,s)>0)return!1}else if(Se.edgeSign(l,s,a)<0)return!1;return n.debugEvent(r),Se.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)),Se.vertLeq(d,r.event)&&(d.s=r.event.s,d.t=r.event.t),h=Se.vertLeq(a,s)?a:s,Se.vertLeq(h,d)&&(d.s=h.s,d.t=h.t),Se.vertEq(d,a)||Se.vertEq(d,s)?(n.checkForRightSplice(r,e),!1):!Se.vertEq(l,r.event)&&Se.edgeSign(l,r.event,d)>=0||!Se.vertEq(c,r.event)&&Se.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):(Se.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),Se.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),Se.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),Se.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}Se.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,Se.vertEq(o.Org,t)){Pe(!1),n.spliceMergeVertices(r,o,t.anEdge);return}if(!Se.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),Se.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 wf;if(c.eUp=e.anEdge.Sym,t=r.dict.search(c).key,o=n.regionBelow(t),!!o){if(a=t.eUp,s=o.eUp,Se.edgeSign(a.Dst,e,a.Org)===0){n.connectLeftDegenerate(r,t,e);return}if(i=Se.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 wf,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 _I(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,Se.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 DI(i,Se.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||!Se.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}(),RI=function(){function n(){this.mesh=new x0,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(;Se.vertLeq(t.Dst,t.Org);t=t.Lprev);for(;Se.vertLeq(t.Org,t.Dst);t=t.Lnext);o=t.Lprev;for(var i=void 0;t.Lnext!==o;)if(Se.vertLeq(t.Dst,o.Org)){for(;o.Lnext!==t&&(Se.edgeGoesLeft(o.Lnext)||Se.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&&(Se.edgeGoesRight(t.Lprev)||Se.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 x0),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_(),BI.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 ao(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 RI;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 t5=We.ODD,r5=We.NONZERO,o5=We.POSITIVE,n5=We.NEGATIVE,i5=We.ABS_GEQ_TWO,a5=bt.POLYGONS,s5=bt.CONNECTED_POLYGONS,l5=bt.BOUNDARY_CONTOURS;var so=require("three");var Vu=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*Vu.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*Vu.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)}},bl=Vu;bl.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var vl=class{constructor(r=[],e=(t,o)=>t<o?-1:t>o?1:0){if(this.data=r,this.length=this.data.length,this.compare=e,this.length>0)for(let t=(this.length>>1)-1;t>=0;t--)this._down(t)}push(r){this.data.push(r),this._up(this.length++)}pop(){if(this.length===0)return;let r=this.data[0],e=this.data.pop();return--this.length>0&&(this.data[0]=e,this._down(0)),r}peek(){return this.data[0]}_up(r){let{data:e,compare:t}=this,o=e[r];for(;r>0;){let i=r-1>>1,a=e[i];if(t(o,a)>=0)break;e[r]=a,r=i}e[r]=o}_down(r){let{data:e,compare:t}=this,o=this.length>>1,i=e[r];for(;r<o;){let a=(r<<1)+1,s=a+1;if(s<this.length&&t(e[s],e[a])<0&&(a=s),t(e[a],i)>=0)break;e[r]=e[a],r=a}e[r]=i}};function Pf(n,r,e=1,t=!1){let o=1/0,i=1/0,a=-1/0,s=-1/0;for(let[v,w]of n[0])v<o&&(o=v),w<i&&(i=w),v>a&&(a=v),w>s&&(s=w);let l=a-o,c=s-i,u=Math.max(e,Math.min(l,c));if(u===e){let v=[o,i];return v.distance=0,v.distance}let p=new vl([],(v,w)=>w.max-v.max),d=VI(n),h=new zu(o+l/2,i+c/2,0,n);h.d>d.d&&(d=h);let f=2;function m(v,w,O){let S=new zu(v,w,O,n);if(f++,S.max>d.d+e&&p.push(S),S.d>d.d&&(d=S,t&&console.log(`found best ${Math.round(1e4*S.d)/1e4} after ${f} probes`),d.d>r))return r}let y=u/2;for(let v=o;v<a;v+=u)for(let w=i;w<s;w+=u)m(v+y,w+y,y);for(;p.length;){let{max:v,x:w,y:O,h:S}=p.pop();if(v-d.d<=e)break;y=S/2,m(w-y,O-y,y),m(w+y,O-y,y),m(w-y,O+y,y),m(w+y,O+y,y)}t&&console.log(`num probes: ${f}
3
- best distance: ${d.d}`);let g=[d.x,d.y];return g.distance=d.d,g.distance}function zu(n,r,e,t){this.x=n,this.y=r,this.h=e,this.d=LI(n,r,t),this.max=this.d+this.h*Math.SQRT2}function LI(n,r,e){let t=!1,o=1/0;for(let i of e)for(let a=0,s=i.length,l=s-1;a<s;l=a++){let c=i[a],u=i[l];c[1]>r!=u[1]>r&&n<(u[0]-c[0])*(r-c[1])/(u[1]-c[1])+c[0]&&(t=!t),o=Math.min(o,zI(n,r,c,u))}return o===0?0:(t?1:-1)*Math.sqrt(o)}function VI(n){let r=0,e=0,t=0,o=n[0];for(let a=0,s=o.length,l=s-1;a<s;l=a++){let c=o[a],u=o[l],p=c[0]*u[1]-u[0]*c[1];e+=(c[0]+u[0])*p,t+=(c[1]+u[1])*p,r+=p*3}let i=new zu(e/r,t/r,0,n);return r===0||i.d<0?new zu(o[0][0],o[0][1],0,n):i}function zI(n,r,e,t){let o=e[0],i=e[1],a=t[0]-o,s=t[1]-i;if(a!==0||s!==0){let 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 Sl={vertices:[160,160,-160,160,-160,-160,160,-160],vertexIndices:[1,0,3,2],vertexCount:4,elements:[0,4],elementCount:1,mesh:void 0},Of={vertices:[],vertexIndices:[],vertexCount:0,elements:[],elementCount:0,mesh:void 0},Af={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},Cf=(n,r)=>([e,t])=>(t<e&&(t+=r),(n>=e?n:n+r)<=t),Fn=class extends so.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 V=D[B-1],k=D[B-0];_.push(V,k)}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 so.Box2().setFromPoints(e.points.map(D=>D.position)).getSize(new so.Vector2).length()*.1:p[0].length===0?h=o:o>0?h=Pf(p,o):h=1e-5,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=ao({windingRule:s,elementType:bt.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[c]})}catch{f=Sl}let m;try{m=ao({windingRule:We.ODD,elementType:bt.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...u]})}catch{m=Of}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,w=1/0,O=-1/0;for(let M=0,D=f.vertexCount;M<D;M++){let _=M*2,B=f.vertices[_+0],V=f.vertices[_+1];B<g&&(g=B),B>v&&(v=B),V<w&&(w=V),V>O&&(O=V)}this._minX=g,this._minY=w,this._width=v-g,this._height=O-w,this._buffer=new bl(this._computeBufferEstimatedSize(f));let S=[],C=[];for(let M=f.elementCount-1;M>=0;M--){let D=M>=y,_=M*2,B=f.elements[_+0],V=f.elements[_+1],k=B+V,L={start:B,count:V,normals:[],continuous:[],concave:[]},W=B,F=k-1,j=B+1,H=this._shape.roundedCurves.length;do{let te=W-B,K=f.vertices[F*2+0],Z=f.vertices[F*2+1],Q=f.vertices[W*2+0],$=f.vertices[W*2+1],ue=f.vertices[j*2+0],le=f.vertices[j*2+1],ne=Q-K,ce=$-Z,ae=Math.sqrt(ne*ne+ce*ce);ne/=ae,ce/=ae;let ye=Q-ue,fe=$-le,me=Math.sqrt(ye*ye+fe*fe);ye/=me,fe/=me,L.normals[te*2+0]=-fe,L.normals[te*2+1]=ye,L.concave[te]=ne*fe-ce*ye>0;let be=f.vertexIndices[W];if(Array.isArray(be))L.continuous[te]=!1;else{let[ge,A]=this._shape.getCurveIndexFromVertexId(be-1,!0);if(A>0&&A<1)L.continuous[te]=!0;else{let ie=A===1?ge+1:ge-1;ie=(ie+H)%H;let Ve=A===1?0:1,ke=this._shape.roundedCurves[ge].getTangent(A),ze=this._shape.roundedCurves[ie].getTangent(Ve);L.continuous[te]=ke.dot(ze)>.95}}D&&(L.normals[te*2+0]*=-1,L.normals[te*2+1]*=-1),[F,W,j]=[W,j,j+1],j>=k&&(j-=V)}while(j!==B+1);let q=[];q.push({bevelI:0,angle:0,size:0,boundary:{vertices:f.vertices.slice(B*2,k*2),vertexCount:V,vertexIndices:new Array(V).fill(!0).map((te,K)=>[K,K]),elements:[0,V],elementCount:1,mesh:null},reverseMap:[],insetPoints:f.vertices.slice(B*2,k*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<V;ae++){let ye=ae*2,fe=(ae-1+V)%V*2,me=f.vertices[L.start*2+ye+0],be=f.vertices[L.start*2+ye+1],ge=-L.normals[fe+0]*Z,A=-L.normals[fe+1]*Z,ie=-L.normals[ye+0]*Z,Ve=-L.normals[ye+1]*Z;if(L.concave[ae]||!L.concave[ae]&&D){let ke=Math.atan2(A,ge),ze=Math.atan2(Ve,ie);ze>ke&&(ze-=Math.PI*2);let Oe=ze-ke;if(L.continuous[ae]||D){let Lt=ke+Oe/2,De=Math.cos(Lt)*Z,_t=Math.sin(Lt)*Z;Q[2*ne+0]=me+De*(D?-1:1),Q[2*ne+1]=be+_t*(D?-1:1),le[ne]=ae,ne++}else{let Lt=Math.max(1,Math.floor(i/4*Math.abs(Oe)/Math.PI));for(let De=0;De<=Lt;De++){let _t=ke+Oe*(De/Lt),Vt=Math.cos(_t)*Z,ai=Math.sin(_t)*Z;Q[2*ne+0]=me+Vt,Q[2*ne+1]=be+ai,le[ne]=ae,ne++}}}else Q[2*ne+0]=me+ge,Q[2*ne+1]=be+A,le[ne]=ae,$[ae]=ne,ne++,Q[2*ne+0]=me,Q[2*ne+1]=be,le[ne]=ae,ne++,Q[2*ne+0]=me+ie,Q[2*ne+1]=be+Ve,le[ne]=ae,ue[ae]=ne,ne++}let ce=ao({windingRule:We.POSITIVE,elementType:bt.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[Q],edgeCreateCallback:ae=>{let fe=ae.Org.idx,me=le[fe],be=le[(fe+1)%le.length];ae.idx=[me,be],ae.Sym.idx=[be,me]},vertexIdCallback:ae=>{let ye=ae.Lprev.idx;return[ye?ye[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[ye,fe]=ce.vertexIndices[ae];if(ye===fe)continue;let me=fe;fe<ye&&(me+=V);for(let be=ye;be<me;be++){let ge=be%V,A=(be+1)%V;if(!L.continuous[ge]||!L.continuous[A]){ce.vertexIndices[ae]=[ye,ge],ce.vertexIndices.splice(ae+1,0,[A,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=L.concave.length,le=0,ne=Cf(le,V);for(;!K.boundary.vertexIndices.filter(ne).length||!Z.boundary.vertexIndices.filter(ne).length;)le++,ne=Cf(le,V);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)%V;let ye=le,fe=0,me=this._buildBevelVert(L,K,(ce-1+Q)%Q,void 0,fe),be=this._buildBevelVert(L,Z,(ae-1+$)%$,void 0,fe),ge=me,A=be,ie,Ve,ke=!1;do{fe=(le||ue)/ue,ne=Cf(le,V);let ze=ee(K,ce,ne),Oe=ee(Z,ae,ne),Lt=ke;if(ke=!1,ze&&!Oe){for(let De=0;De<ze;De++)ie=this._buildBevelVert(L,K,(ce+De)%Q,De/(ze-1),fe),S.push(ge.topN,ie.topP,A.topN),l===!1&&S.push(ie.bottomP,ge.bottomN,A.bottomN),ge=ie;ke=!0}else if(!ze&&Oe)for(let De=0;De<Oe;De++)Ve=this._buildBevelVert(L,Z,(ae+De)%$,De/(Oe-1),fe),S.push(A.topN,ge.topP,Ve.topP),l===!1&&S.push(ge.bottomP,A.bottomN,Ve.bottomP),A=Ve;else if(ze&&Oe)if(ie=this._buildBevelVert(L,K,ce,0,fe),Ve=this._buildBevelVert(L,Z,ae,0,fe),Lt?(S.push(ge.topN,Ve.topP,A.topN),S.push(ge.topN,ie.topP,Ve.topP),l===!1&&(S.push(Ve.bottomP,ge.bottomN,A.bottomN),S.push(Ve.bottomP,ie.bottomP,ge.bottomN))):(S.push(A.topN,ge.topN,ie.topP),S.push(A.topN,ie.topP,Ve.topP),l===!1&&(S.push(ie.bottomP,ge.bottomN,A.bottomN),S.push(ie.bottomP,A.bottomN,Ve.bottomP))),ge=ie,A=Ve,ze===Oe)for(let De=1;De<ze;De++)ie=this._buildBevelVert(L,K,(ce+De)%Q,De/(ze-1),fe),Ve=this._buildBevelVert(L,Z,(ae+De)%$,De/(Oe-1),fe),S.push(ge.topN,ie.topP,A.topN),S.push(A.topN,ie.topP,Ve.topP),l===!1&&(S.push(ie.bottomP,ge.bottomN,A.bottomN),S.push(ie.bottomP,A.bottomN,Ve.bottomP)),ge=ie,A=Ve;else if(ze>Oe){let De=ze/Oe,_t=0;for(let Vt=1;Vt<ze;Vt++)ie=this._buildBevelVert(L,K,(ce+Vt)%Q,Vt/(ze-1),fe),S.push(ge.topN,ie.topP,A.topN),l===!1&&S.push(ie.bottomP,ge.bottomN,A.bottomN),ge=ie,Vt>(_t+1)*De&&(_t++,Ve=this._buildBevelVert(L,Z,(ae+_t)%$,_t/(Oe-1),fe),S.push(A.topN,ie.topP,Ve.topP),l===!1&&S.push(ie.bottomP,A.bottomN,Ve.bottomP),A=Ve)}else{let De=Oe/ze,_t=0;for(let Vt=1;Vt<Oe;Vt++)Ve=this._buildBevelVert(L,Z,(ae+Vt)%$,Vt/(Oe-1),fe),S.push(A.topN,ie.topP,Ve.topP),l===!1&&S.push(ie.bottomP,A.bottomN,Ve.bottomP),A=Ve,Vt>(_t+1)*De&&(_t++,ie=this._buildBevelVert(L,K,(ce+_t)%Q,_t/(ze-1),fe),S.push(ge.topN,ie.topP,A.topN),l===!1&&S.push(ie.bottomP,ge.bottomN,A.bottomN),ge=ie)}ce=(ce+ze)%Q,ae=(ae+Oe)%$,le=(le+1)%ue}while(le!==ye)}if(l===!1&&this._depth>this._bevel*2&&this._buildWall(q,L,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)}C.push(te)}if(!D){let te=q[q.length-1],K;try{K=ao({windingRule:q.length>1?We.POSITIVE:We.ODD,elementType:bt.POLYGONS,vertexSize:2,strict:!0,contours:[te.insetPoints,...C]})}catch{K=Af}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 T=new so.BufferAttribute(Uint32Array.from(S),1),x=new so.BufferAttribute(this._buffer.positions,3),N=new so.BufferAttribute(this._buffer.normals,3),E=new so.BufferAttribute(this._buffer.uvs,2);x.needsUpdate=!0,N.needsUpdate=!0,E.needsUpdate=!0,T.needsUpdate=!0,this.setAttribute("position",x),this.setAttribute("normal",N),this.setAttribute("uv",E),this.setIndex(T)}_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,w=t.boundary.vertices[y+0],O=t.boundary.vertices[y+1],S=(1-m)*this._bevel,C=(w-this._minX)/this._width,T=(O-this._minY)/this._height;this.forPathBevel&&(a!==void 0&&(C=a),T=1);let x=e.normals[g+0],N=e.normals[g+1],E=e.normals[v+0],M=e.normals[v+1];if(h){let k=E-x,L=M-N;x=x+k*(1-i),N=N+L*(1-i);let W=Math.sqrt(x*x+N*N);x/=W,N/=W}let D=this.forPathBevel?this._buffer.get(d?1:2):this._buffer.get(d?2:4),_=D*3,B=D*2,V={i:o,fi:u,topP:D+0,topN:D+0,bottomP:D+1,bottomN:D+1,pathBevelUCoord:a};return this._buffer.positions[_+0]=w,this._buffer.positions[_+1]=O,this._buffer.positions[_+2]=(this.forPathBevel?this._bevel:this._depth)-S,this._buffer.normals[_+0]=x*f,this._buffer.normals[_+1]=N*f,this._buffer.normals[_+2]=m,this._buffer.uvs[B+0]=C,this._buffer.uvs[B+1]=T,this.forPathBevel===!1&&(this._buffer.positions[_+3]=w,this._buffer.positions[_+4]=O,this._buffer.positions[_+5]=S,this._buffer.normals[_+3]=x*f,this._buffer.normals[_+4]=N*f,this._buffer.normals[_+5]=-m,this._buffer.uvs[B+2]=T,this._buffer.uvs[B+3]=C),d||(this.forPathBevel?(D+=1,_+=3,B+=2):(D+=2,_+=6,B+=4),V.topP=D+0,V.bottomP=D+1,this._buffer.positions[_+0]=w,this._buffer.positions[_+1]=O,this._buffer.positions[_+2]=(this.forPathBevel?this._bevel:this._depth)-S,this._buffer.normals[_+0]=E*f,this._buffer.normals[_+1]=M*f,this._buffer.normals[_+2]=m,this._buffer.uvs[B+0]=C,this._buffer.uvs[B+1]=T,this.forPathBevel===!1&&(this._buffer.positions[_+3]=w,this._buffer.positions[_+4]=O,this._buffer.positions[_+5]=S,this._buffer.normals[_+3]=E*f,this._buffer.normals[_+4]=M*f,this._buffer.normals[_+5]=-m,this._buffer.uvs[B+2]=T,this._buffer.uvs[B+3]=C)),this.vertexCache[s]=V,V}clone(){let e=new Fn(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=qo(this.userData),e}};var Ga=class extends Si.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=ao({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=Sl}let d=s?.vertexCount??1,h=s?.elementCount??1;if(this._positionAttribute=new Si.BufferAttribute(new Float32Array(d*3),3),this._normalAttribute=new Si.BufferAttribute(new Float32Array(d*3),3),this._uvAttribute=new Si.BufferAttribute(new Float32Array(d*2),2),this._indexAttribute=new Si.BufferAttribute(new Uint32Array(h*3),1),s){let f=1/0,m=-1/0,y=1/0,g=-1/0;for(let O=0,S=d;O<S;O++){let C=O*2,T=s.vertices[C+0],x=s.vertices[C+1];T<f&&(f=T),T>m&&(m=T),x<y&&(y=x),x>g&&(g=x)}let v=m-f,w=g-y;for(let O=0,S=d;O<S;O++){let C=O*2,T=s.vertices[C+0],x=s.vertices[C+1],N=(T-f)/v,E=(x-y)/w;this._positionAttribute.setXYZ(O,T,x,0),this._normalAttribute.setXYZ(O,0,0,1),this._uvAttribute.setXY(O,N,E)}for(let O=0,S=h;O<S;O++){let C=O*3,T=s.elements[C+0],x=s.elements[C+1],N=s.elements[C+2];this._indexAttribute.setX(C+0,T),this._indexAttribute.setX(C+1,x),this._indexAttribute.setX(C+2,N)}}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 Ga(this._shape,this._curveSegments);return e.userData=qo(this.userData),e}};var Fa=class extends Fn{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 Fa(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=qo(this.userData),e}};var br=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 Ga(n.shape,o,{windingRule:a}):s=new Fa(n.shape,r,e,o,t,a),Object.assign(s,{userData:{...n,type:"VectorGeometry"}})}};var lo=require("three"),P0=Math.PI*2,ka=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=lo.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=GI(c,u,p,o*Math.PI/180,t,i);c.isClosed=!0,c.update();let h;return o===0?(h=new lo.BufferGeometry,h.setAttribute("position",new lo.Float32BufferAttribute([],3))):h=br.create({shape:c,parameters:{subdivisions:d,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}}),Object.assign(h,{userData:{...n,type:"EllipseGeometry"}})}};function GI(n,r,e,t,o,i){if(t>=P0)return o>30||o%4===0?(jI(n,r,e,i),Math.round(o/4)):w0(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=g0({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?FI(n,a.x,a.y,c,o,r,e,i):w0(n,t,o,r,e,i)}function FI(n,r,e,t,o,i,a,s){let l=Math.round(o/t.length);n.addPoint(ja(r,e));for(let c=0,u=t.length;c<u;c++){let p=t[c],d=n.points[c],h=ja(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?C0(n,i,a,s):n.addPoint(ja(0,0)),l}function w0(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(ja(c,u))}return r<P0?i>0?C0(n,t,o,i):n.addPoint(ja(0,0)):(n.removePoint(n.points[n.points.length-1]),i>0&&O0(n,t,o,i)),1}function jI(n,r,e,t=0,o=0,i=0){let a=.5522847498,s=r*a,l=e*a;n.addPoint(Gu(o-r,i,o-r,i-l,o-r,i+l)),n.addPoint(Gu(o,i+e,o-s,i+e,o+s,i+e)),n.addPoint(Gu(o+r,i,o+r,i+l,o+r,i-l)),n.addPoint(Gu(o,i-e,o+s,i-e,o-s,i-e)),t>0&&O0(n,r,e,t)}function ja(n,r){return new io(lo.MathUtils.generateUUID(),new lo.Vector2(n,r))}function Gu(n,r,e,t,o,i){let a=ja(n,r);return a.controls[0].position.set(e,t),a.controls[1].position.set(o,i),a}function C0(n,r,e,t){A0(n,r,e,t).forEach(i=>n.addPoint(i))}function O0(n,r,e,t){let o=A0(n,r,e,t),i=new $e;o.forEach(a=>i.addPoint(a)),i.isClosed=!0,n.shapeHoles.push(i)}function A0(n,r,e,t){let o=t*r/100,i=o*(Math.abs(e)/Math.abs(r)),a=new lo.Vector2(o/r,i/e),s=n.points.map(l=>{let c=l.clone();return c.uuid=lo.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 co=require("three"),T0=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 wl(!1,r,e,t,o,i,a,s,l,c,u,p);return Object.assign(d,{userData:{...n,type:"HelixGeometry"}})}},Tf=new co.Uint32BufferAttribute([0,0,0],1),wl=class extends co.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 co.Vector3,m=new co.Vector3,y=f(),g=f(),v=f(),w,O,S,C,T,x,N,E,M=f(),D=f(),_=f(),B=f(),V=f(),k=f(),L=f(),W=f(),F=t-2*l+.001,j=F/a,H=Math.ceil(s*a),q=H+1,re=F/H,ee=-F/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,ye=Math.max(0,X*(q+ne)),[fe,me,be]=[3,3,2].map(yt=>Array(ye*yt).fill(0)),ge=[],A=i-l;function ie(yt,nt){let Zr=Math.PI/2;x=nt*re,E=2*Math.PI*(x%j)/j+Zr,x+=ee,N=Math.sin(E)*A,T=Math.cos(E)*A,r?yt.set(T,N,x):yt.set(T,x,N)}ie(m,-1e-10),ie(y,0),M.copy(m),ie(m,1);let Ve=m.distanceTo(y),ke=h?0:$+Q,ze=Ve*H+2*ke,Oe=Q,Lt=ze-ke;for(let yt=0;yt<=H;yt++){ie(g,yt),W.subVectors(g,M).normalize(),M.copy(g),k.copy(g).setComponent(+r+1,0).normalize(),L.crossVectors(W,k).normalize();let nt=yt===0,Zr=yt===H,np=nt?3*Math.PI/2:K,ip=nt?Oe:Lt,uc=nt?X:ae,si=nt?0:ye-X,wt=W.clone().multiplyScalar(nt?-$:$).add(g),ap=W.clone().multiplyScalar(nt?-1:1).normalize();for(let Rr=0;Rr<X;Rr++){let Ws=Rr*te;if(D.addVectors(m.copy(k).multiplyScalar(l*Math.cos(Ws)),y.copy(L).multiplyScalar(l*Math.sin(Ws))),_.copy(D).normalize(),nt||Zr){h||(ue=si+Rr,[0,1,2].forEach(ar=>{fe[ue*3+ar]=wt.getComponent(ar),me[ue*3+ar]=ap.getComponent(ar)}),be[ue*2]=+Zr,be[ue*2+1]=Rr/u),y.copy(_).multiplyScalar(Q),v.addVectors(g,y);for(let ar=0;ar<d;ar++){let li=ar*K+np;B.addVectors(m.copy(W).multiplyScalar($*Math.sin(li)),y.copy(_).multiplyScalar($*Math.cos(li))),V.copy(B).normalize(),y.addVectors(v,B),B.normalize(),ue=uc+ar*X+Rr,[0,1,2].forEach(zi=>{fe[ue*3+zi]=y.getComponent(zi),me[ue*3+zi]=V.getComponent(zi)});let dc=+nt+Math.sin(li);be[ue*2]=(ip+$*dc)/ze,be[ue*2+1]=Rr/u}}y.addVectors(g,D),ue=ce+yt*X+Rr,[0,1,2].forEach(ar=>{fe[ue*3+ar]=y.getComponent(ar),me[ue*3+ar]=_.getComponent(ar)}),be[ue*2]=(ke+yt*Ve)/ze,be[ue*2+1]=Rr/u}}let De=q+2*d+le,_t=1,[Vt,ai]=[+h,De-1];for(let yt=Vt;yt<=ai-1;yt++){let nt=h&&yt===ai-1;for(let Zr=0;Zr<X-1;Zr++)w=yt*X+Zr,O=w+1,S=(nt?Zr:w)+X,C=(nt?Zr+1:O)+X,yt===0?ge.push(O,C,S):yt===De-2?ge.push(w,O,S):ge.push(w,O,S,O,C,S)}this.setIndex(ge),this.setAttribute("position",new co.Float32BufferAttribute(fe,3)),this.setAttribute("normal",new co.Float32BufferAttribute(me,3)),this.setAttribute("uv",new co.Float32BufferAttribute(be,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,Tf.array=o,Tf.count=o.length,Tf}};var I0=require("three");var M0=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 Pl(r*.5,i,a):new I0.IcosahedronGeometry(r*.5,o);return s.scale(1,e/r,t/r),Object.assign(s,{userData:{...n,type:"IcosahedronGeometry"}})}},Pl=class extends zn{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 Pl(r.radius,r.corner,r.cornerSides)}};var Fu=require("three"),E0=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 Fu.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 Fu.LatheGeometry(o.extractPoints(t).shape,e);return i.rotateZ(Math.PI),Object.assign(i,{userData:{...n,type:"LatheGeometry"}})}};var Eo=require("three");var rn=require("three");var pe=require("three"),Mo=new pe.Matrix4,If=new pe.Object3D,ju=new pe.Vector3,jn=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 Mo.makeRotationX(r),this.applyMatrix4(Mo),this}rotateY(r){return Mo.makeRotationY(r),this.applyMatrix4(Mo),this}rotateZ(r){return Mo.makeRotationZ(r),this.applyMatrix4(Mo),this}translate(r,e,t){return Mo.makeTranslation(r,e,t),this.applyMatrix4(Mo),this}scale(r,e,t){return Mo.makeScale(r,e,t),this.applyMatrix4(Mo),this}lookAt(r){return If.lookAt(r),If.updateMatrix(),this.applyMatrix4(If.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 Ua(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(ju).negate(),this.translate(ju.x,ju.y,ju.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 jn;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,w=new Ua(f.a+i,f.b+i,f.c+i);w.normal.copy(f.normal),o!==void 0&&w.normal.applyMatrix3(o).normalize();for(let O=0,S=g.length;O<S;O++)m=g[O].clone(),o!==void 0&&m.applyMatrix3(o).normalize(),w.vertexNormals.push(m);w.color.copy(f.color);for(let O=0,S=v.length;O<S;O++)y=v[O],w.vertexColors.push(y.clone());w.materialIndex=f.materialIndex+t,l.push(w)}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 w=0,O=g.length;w<O;w++)v.push(g[w].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,w=m.normal.length()>0,O=m.vertexNormals.length>0,S=m.color.r!==1||m.color.g!==1||m.color.b!==1,C=m.vertexColors.length>0,T=0;if(T=u(T,0,0),T=u(T,1,y),T=u(T,2,g),T=u(T,3,v),T=u(T,4,w),T=u(T,5,O),T=u(T,6,S),T=u(T,7,C),t.push(T),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(w&&t.push(p(m.normal)),O){let x=m.vertexNormals;t.push(p(x[0]),p(x[1]),p(x[2]))}if(S&&t.push(d(m.color)),C){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 jn().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 w=0,O=g.length;w<O;w++){let S=g[w];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 Mf().fromGeometry(this),e=new pe.BufferGeometry,t=new Float32Array(r.vertices.length*3);if(e.setAttribute("position",ku.call(new pe.BufferAttribute(t,3),r.vertices)),r.normals.length>0){let o=new Float32Array(r.normals.length*3);e.setAttribute("normal",ku.call(new pe.BufferAttribute(o,3),r.normals))}if(r.colors.length>0){let o=new Float32Array(r.colors.length*3);e.setAttribute("color",N0.call(new pe.BufferAttribute(o,3),r.colors))}if(r.uvs.length>0){let o=new Float32Array(r.uvs.length*2);e.setAttribute("uv",D0.call(new pe.BufferAttribute(o,2),r.uvs))}if(r.uvs2.length>0){let o=new Float32Array(r.uvs2.length*2);e.setAttribute("uv2",D0.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(ku.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",_0.call(o,r.skinIndices))}if(r.skinWeights.length>0){let o=new pe.Float32BufferAttribute(r.skinWeights.length*4,4);e.setAttribute("skinWeight",_0.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",ku.call(o,t.vertices)),e.setAttribute("color",N0.call(i,t.colors)),t.lineDistances&&t.lineDistances.length===t.vertices.length){let a=new pe.Float32BufferAttribute(t.lineDistances.length,1);e.setAttribute("lineDistance",kI.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}};jn.prototype.isGeometry=!0;var Mf=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 w=v.vertexNormals;if(w.length===3)this.normals.push(w[0],w[1],w[2]);else{let S=v.normal;this.normals.push(S,S,S)}let O=v.vertexColors;if(O.length===3)this.colors.push(O[0],O[1],O[2]);else{let S=v.color;this.colors.push(S,S,S)}if(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 C=s[S].vertices;c[S].data.push(C[v.a],C[v.b],C[v.c])}for(let S=0;S<p;S++){let C=u[S].vertexNormals[g];d[S].data.push(C.a,C.b,C.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}},Ua=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 kI(n){return this.array.set(n),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.copyColorsArray(): color is undefined",t),i=new pe.Color),r[e++]=i.r,r[e++]=i.g,r[e++]=i.b}return this}function D0(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 ku(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 _0(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 UI=["a","b","c"];function HI(n,r){switch(r){case"c":return n.c;case"b":return n.b;case"a":default:return n.a}}function Ef(n,r,e){let t=Math.min(n,r),o=Math.max(n,r),i=t+"_"+o;return e.get(i)}function Nf(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 WI(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],Nf(a.a,a.b,n,t,a,e),Nf(a.b,a.c,n,t,a,e),Nf(a.c,a.a,n,t,a,e)}function Uu(n,r,e,t,o){n.push(new Ua(r,e,t,void 0,void 0,o))}function Ha(n,r){return Math.abs(r-n)/2+Math.min(n,r)}function Hu(n,r,e,t){n.push([r.clone(),e.clone(),t.clone()])}var Wu=class{constructor(r=1){this.subdivisions=r}modify(r){r instanceof rn.BufferGeometry?r=new jn().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 rn.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;WI(l,c,d,h);let f=[],m,y,g,v,w,O,S;for(let Z of Array.from(h.keys())){for(y=h.get(Z),g=new rn.Vector3,w=3/8,O=1/8,S=y.faces.length,S!=2&&(w=.5,O=0,S!=1),g.addVectors(y.a,y.b).multiplyScalar(w),e.set(0,0,0),a=0;a<S;a++){for(v=y.faces[a],s=0;s<3&&(m=l[HI(v,UI[s])],!(m!==y.a&&m!==y.b));s++);m&&e.add(m)}e.multiplyScalar(O),g.add(e),y.newEdge=f.length,f.push(g)}let C,T,x,N,E,M,D,_=[];for(o=0,i=l.length;o<i;o++){for(M=l[o],E=d[o].edges,t=E.length,t==3?C=3/16:t>3&&(C=3/(8*t)),T=1-t*Number(C),x=C,t<=2&&(t==2?(T=3/4,x=1/8):t==1||t==0),D=M.clone().multiplyScalar(T),e.set(0,0,0),a=0;a<t;a++)N=E[a],m=N.a!==M?N.a:N.b,e.add(m);e.multiplyScalar(Number(x)),D.add(e),_.push(D)}let B=_.concat(f),V=_.length,k,L,W,F=[],j=[],H,q,re,ee,X=new rn.Vector2,te=new rn.Vector2,K=new rn.Vector2;for(o=0,i=c.length;o<i;o++)v=c[o],k=Number(Ef(v.a,v.b,h).newEdge)+V,L=Number(Ef(v.b,v.c,h).newEdge)+V,W=Number(Ef(v.c,v.a,h).newEdge)+V,Uu(F,k,L,W,v.materialIndex),Uu(F,v.a,k,W,v.materialIndex),Uu(F,v.b,L,k,v.materialIndex),Uu(F,v.c,W,L,v.materialIndex),p&&(H=u[o],q=H[0],re=H[1],ee=H[2],X.set(Ha(q.x,re.x),Ha(q.y,re.y)),te.set(Ha(re.x,ee.x),Ha(re.y,ee.y)),K.set(Ha(q.x,ee.x),Ha(q.y,ee.y)),Hu(j,X,te,K),Hu(j,q,X,K),Hu(j,re,te,X),Hu(j,ee,K,te));r.vertices=B,r.faces=F,p&&(r.faceVertexUvs[0]=j)}};var Gt=new Eo.Vector3,B0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=n.geometry??r?.geometry??new Eo.BufferGeometry().copy(new Eo.BoxGeometry(100,100,100)),t;r===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(Gt),t={width:Gt.x,height:Gt.y,depth:Gt.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 Eo.BufferGeometry().copy(new Eo.BoxGeometry(100,100,100)),a=i.userData.parameters;a===void 0?(i.computeBoundingBox(),i.boundingBox.getSize(Gt)):Gt.set(a.width,a.height,a.depth),(r!==Gt.x||e!==Gt.y||t!==Gt.z)&&i.scale(Gt.x===0?1:r/Gt.x,Gt.y===0?1:e/Gt.y,Gt.z===0?1:t/Gt.z);let s=i.originalGeometry;try{o>0?(s===void 0||a?.subdivisions!==o)&&(s===void 0&&(s=i),i=new Wu(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 Eo.BufferGeometryLoader(e).load(n,o=>{let i=this.normalizeInputs({geometry:o});o.boundingBox.getSize(Gt);let a=100/Gt.x;Object.assign(i.parameters,{width:100,height:Gt.y*a,depth:Gt.z*a}),r(this.build(i))})}};var qu=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=br.create({shape:l,parameters:{roundness:o,depth:i,extrudeBevelSize:a,extrudeBevelSegments:s}});return Object.assign(f,{userData:{...n,type:"PolygonGeometry"}})}};var He=require("three"),R0=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 _f(r*.5,e,o,i,a,s,l);return c.scale(1,1,t/r),Object.assign(c,{userData:{...n,type:"PyramidGeometry"}})}};function Cl(n,r,e){e.x=n.x*r.x,e.y=n.y,e.z=n.x*r.y}function Df(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 qI(n,r,e){let t=n.clone().sub(r),o=e.clone().sub(r);return t.projectOnVector(o),t.add(r)}var _f=class extends He.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,w=new He.Vector3(0,-h,0),O=new He.Vector3(0,h,0),S=new He.Vector2(r,-h),C=new He.Vector2(m,-h),T=new He.Vector2(0,O.y).sub(C),x=new He.Vector2(0,O.y).sub(S),N=new He.Vector2(T.y,-T.x).normalize(),E=new He.Vector2(x.y,-x.x).normalize(),D=r*Math.cos(Math.PI/t)*Math.tan((Math.PI-T.angle())/2)-1e-8;a=Math.min(a,D);let _;{let j=new He.Vector3(N.x,N.y,0),H=new He.Vector3(Math.cos(y)*j.x,j.y,Math.sin(y)*j.x);_=j.angleTo(H)}let B=a/Math.tan((Math.PI-T.angle())/2),V=a/Math.tan((Math.PI-_)/2),k=new He.Vector3;if(!i){c.push(w.x,w.y,w.z),u.push(0,-1,0),p.push(0,0);let j=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 He.Vector2(Math.sin(X),Math.cos(X));Cl(q,te,k),c.push(k.x,k.y,k.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],j,H[(ee+1)%H.length])}let L=[];{let j=new He.Vector3,H=new He.Vector3,q=new He.Vector3,re=new He.Vector3,ee=new He.Vector3,X=new He.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 He.Vector2(Math.sin(K),Math.cos(K)),ue=new He.Vector2(Math.sin(Z),Math.cos(Z)),le=new He.Vector2(Math.sin(Q),Math.cos(Q));Cl(S,$,H),Cl(S,le,q),Cl(N,ue,j),Df(O,H,q,V,V,re),c.push(re.x,re.y,re.z),Df(H,O,q,V,B,ee),c.push(ee.x,ee.y,ee.z),Df(q,H,O,B,V,X),c.push(X.x,X.y,X.z),u.push(j.x,j.y,j.z),u.push(j.x,j.y,j.z),u.push(j.x,j.y,j.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 me=H.clone().add(q).multiplyScalar(.5),be=O.clone().sub(me).normalize(),A=w.clone().sub(me).normalize().add(be).normalize().multiplyScalar(-1),ie=X.clone().sub(ee);W(me,ie,A,T.angle())}let ye,fe;{let me=new He.Vector3;Cl(E,le,me);let be=X.clone().add(re).multiplyScalar(.5);be=qI(be,q,O);let ge=X.clone().sub(re);[ye,fe]=W(be,ge,me,_,re.y)}{let me=ye,be=me.clone().setY(0).normalize(),ge=new He.Vector3(0,-1,0),A=be.clone().cross(ge);F(me,be,ge,A)}L.concat(fe);{let me=T.angle(),be=Math.PI-me,ge=O.clone();ge.y-=a/Math.sin(me-Math.PI/2);let A=new He.Vector3,ie=[];for(let ke=0;ke<s;ke++){let ze=[],Oe=Math.PI/2-be*ke/s,Lt=Math.cos(Oe),De=Math.sin(Oe),_t=Z;for(let Vt=0;Vt<=ke;Vt++){let ai=Math.cos(_t),yt=Math.sin(_t);j.x=Lt*yt,j.y=De,j.z=Lt*ai,A.copy(ge).addScaledVector(j,a),c.push(A.x,A.y,A.z),u.push(j.x,j.y,j.z),p.push(0,0),ze.push(d++),_t+=Math.PI*2/ke/t}ie.push(ze)}fe.reverse(),ie.push(fe);let Ve=ie.length-1;for(let ke=0;ke<Ve;ke++){let ze=ie[ke],Oe=ie[ke+1],Lt=ze.length-1;l.push(Oe[1],ze[0],Oe[0]);for(let De=1;De<=Lt;De++)l.push(ze[De],ze[De-1],Oe[De]),l.push(Oe[De+1],ze[De],Oe[De])}}}}}this.setIndex(l),this.setAttribute("position",new He.Float32BufferAttribute(c,3)),this.setAttribute("normal",new He.Float32BufferAttribute(u,3)),this.setAttribute("uv",new He.Float32BufferAttribute(p,2));function W(j,H,q,re,ee){let X=-re/2,te=(Math.PI-re)/2,K=H.clone().normalize().cross(q);j.addScaledVector(q,-a/Math.sin(te));let Z=new He.Vector3,Q=new He.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 ye=ae/$-.5;if(Z.copy(j),Z.addScaledVector(H,ye),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,ye=ae+($+1),fe=ye+1,me=ae+1;l.push(ae,ye,me),l.push(ye,fe,me)}return[j.clone().addScaledVector(H,.5),le]}function F(j,H,q,re){let ee=Math.PI/2,X=x.angle()-ee,te=[],K=new He.Vector3,Z=new He.Vector3;for(let $=0;$<=s;$++){let ue=[],le=$/s;for(let ne=0;ne<=$;ne++){let ae=(($?ne/$:0)-.5)*v,ye=Math.cos(ae),fe=Math.sin(ae),me=Math.atan(Math.tan(X)*ye),be=(ee+me)*le,ge=Math.cos(be),A=Math.sin(be);K.set(0,0,0),K.addScaledVector(H,A*ye),K.addScaledVector(q,ge),K.addScaledVector(re,A*fe),Z.copy(j).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 Wa=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(O,S,C){return S>e&&C>t?Math.min(O*e/S,O*t/C):S>e?O*e/S:C>t?O*t/C:O}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 O=0,S=r.points.length;O<S;O++)r.points[O].roundness=h[O],O>0&&h[O]!==h[O-1]&&(v=!1);v&&(r.roundness=h[0]),r.useCubicForRoundedCorners=i!==1,r.update();let w=br.create({shape:r,parameters:{depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}});return Object.assign(w,{userData:{...n,type:"RectangleGeometry"}})}};var on=require("three"),L0=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=on.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 on.BufferGeometry,u.setAttribute("position",new on.Float32BufferAttribute([],3))):u=new on.SphereGeometry(.5*r,o,i,a,s,l,c*on.MathUtils.DEG2RAD),u.scale(1,e/r,t/r),Object.assign(u,{userData:{...n,type:"SphereGeometry"}})}};var V0=require("three"),z0=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 V0.PlaneGeometry(r,e,t,o);return i.scale(1,1,1),Object.assign(i,{userData:{...n,type:"PlaneGeometry"}})}};var kn=require("three"),G0=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 Bf(r,e,t,o,i,a);return Object.assign(s,{userData:{...n,type:"BackdropGeometry"}})}},Bf=class extends kn.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 kn.Vector3(Z,Q,$),f=h(),m=h(),[y,g,v]=[e/2,r/2,t/2],w=-g,O=+g,[S,C,T]=[h(w,-y,+v),h(w,-y,-v),h(w,+y,-v)],x=(Z,Q=!1)=>Math.sin(Z-Math.PI/(1+ +Q)),N=(Z,Q=!1)=>Math.cos(Z-Math.PI/(1+ +Q));T.y=Math.sin(o)*e-y;let E=Math.cos(o)*e-v,M=S.z-u;o<=d?(T.z=Math.min(E,M),T.z==M&&(T.y-=(E-M)/Math.tan(d-o))):C.z=Math.min(C.z-E-v,S.z-u),f.subVectors(S,C),m.subVectors(T,C);let D=Math.min(f.length(),m.length())*i/100,_=D*Math.tan(o/2),B=D/Math.cos(o/2),V=f.clone().normalize().add(m.normalize()).setLength(B).add(C);f.set(0,x(o,!0),N(o,!0)),p.push([T,f.clone()]);let k=(Math.PI-o)/a;for(let Z=0;Z<=a;Z++){let Q=d+o+Z*k;f.set(0,Math.sin(Q)*_,Math.cos(Q)*_),f.add(V),m.set(0,x(Q),N(Q)),p.push([f.clone(),m.clone()])}p.push([S,h(0,1,0)]);let L=Math.sin(k/2)*_*2,W=p.length-1,F=p[0][0].distanceTo(p[1][0]),j=p[W-1][0].distanceTo(p[W][0]),H=F+L*a+j;p[0].push(1);for(let Z=0;Z<=a;Z++)p[Z+1].push(1-(F+Z*L)/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(w,q.y,q.z,w,X.y,X.z,O,q.y,q.z,O,q.y,q.z,w,X.y,X.z,O,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 kn.Float32BufferAttribute(s,3)),this.setAttribute("normal",new kn.Float32BufferAttribute(l,3)),this.setAttribute("uv",new kn.Float32BufferAttribute(c,2))}};var $u=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 O=0;O<o;O++){let S=m*O,C=h+Math.sin(S)*p,T=f+Math.cos(S)*d;u.addPoint(u.createPoint(C,T))}}else for(let O=0;O<o;O++){let S=h+Math.cos(y)*p,C=f+Math.sin(y)*d;u.addPoint(u.createPoint(S,C)),y+=m,S=h+Math.cos(y)*g,C=f+Math.sin(y)*v,O<=o,u.addPoint(u.createPoint(S,C)),y+=m}u.isClosed=!0;for(let O=0,S=u.points.length;O<S;O++)u.points[O].roundness=i;u.roundness=i,u.update();let w=br.create({shape:u,parameters:{roundness:i,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(w,{userData:{...n,type:"StarGeometry"}})}};var F0=require("three"),j0=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 F0.PlaneGeometry(r,e);return Object.assign(t,{userData:{...n,type:"TextFrameGeometry"}})}};var qa=require("three");var k0=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=$I(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 $I(n,r,e,t,o,i,a,s,l,c,u){[r,e]=[e,r],a=r/2;let p=qa.MathUtils.clamp(o/360,0,1);if(p===0){let d=new qa.BufferGeometry;return d.setAttribute("position",new qa.Float32BufferAttribute([],3)),d}return p===1&&(c=0),new wl(!0,n,r,e,t,p,i,a,s,l,c,u)}var U0=require("three"),H0=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 U0.TorusKnotGeometry(s,e,t,o,i,a);return Object.assign(l,{userData:{...n,type:"TorusKnotGeometry"}})}};var W0=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=br.create({shape:l,parameters:{roundness:t,depth:o,extrudeBevelSize:i,extrudeBevelSegments:a}});return Object.assign(p,{userData:{...n,type:"TriangleGeometry"}})}};var Ie=require("three");function q0(n,r){let e=2*Math.PI;return(n%e+e)%e===(r%e+e)%e}function YI(n){return/^(rgba)?\(\s*(\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d+(?:\.\d+)?))?\s*\)$/.exec(n.toLowerCase())}function XI(n,r,e){let t,o,i,a=Math.floor(n*6),s=n*6-a,l=e*(1-r),c=e*(1-s*r),u=e*(1-(1-s)*r);switch(a%6){case 0:t=e,o=u,i=l;break;case 1:t=c,o=e,i=l;break;case 2:t=l,o=e,i=u;break;case 3:t=l,o=c,i=e;break;case 4:t=u,o=l,i=e;break;case 5:default:t=e,o=l,i=c;break}return{r:t*255,g:o*255,b:i*255}}function KI(n,r,e){n/=255,r/=255,e/=255;let t=Math.max(n,r,e),o=Math.min(n,r,e),i=t,a=t-o,s=t==0?0:a/t,l;if(t==o)l=0;else{switch(t){case n:l=(r-e)/a+(r<e?6:0);break;case r:l=(e-n)/a+2;break;case e:default:l=(n-r)/a+4;break}l/=6}return{h:l,s,v:i}}function QI(n){return n=Math.floor(n),{r:n>>16&255,g:n>>8&255,b:n&255}}function ZI(n,r,e){return(n<<16)+(r<<8)+e}function JI(n,r,e){return n=Math.round(n),r=Math.round(r),e=Math.round(e),"#"+[n,r,e].map(t=>t.toString(16).padStart(2,"0")).join("").toUpperCase()}function eM(n){let r=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;n=n.replace(r,(t,o,i,a)=>String(o+o+i+i+a+a));let e=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(n);return e?{r:parseInt(e[1],16),g:parseInt(e[2],16),b:parseInt(e[3],16)}:null}var $0={parseRgba:YI,hsvToRgb:XI,rgbToHsv:KI,hexToRgb:QI,rgbToHex:ZI,rgbToHexString:JI,hexStringToRgb:eM};function nn(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 Yu=class{constructor(r,e,t){this.id=r;this.userAPI=e;this.result=void 0;this.error="null";this.isPrefetched=!1;this.isLoading=!1;this.isLoaded=!1;this.prefetchPromise=new Promise(r=>r());this.emitter=nn();this._innerCallUserAPI=async r=>{this.emitter.emit("start",{userAPIId:this.id}),this.isLoading=!0,this.isLoading=!1;try{this.result=await iM(this.userAPI,r),this.error="null",this.emitter.emit("success",{userAPIId:this.id})}catch(e){let t=e.message?.split("_:_")?.[0]?.replace("status:","")??"null";this.error=t,this.result=null,this.emitter.emit("error",{userAPIId:this.id})}this.isLoading=!1,this.isPrefetched=!0,this.isLoaded=!0};e?.integration?.type==="OpenAI"?this.result={content:""}:e.method==="GET"&&e.url!==""&&(this.prefetchPromise=this.prefetch(t)),this._debouncedCallUserAPI=this._innerCallUserAPI,this._updateDebouncedCallUserAPI(),this._debouncedPrefetch=Uc(this.prefetch,1e3,{trailing:!0})}_updateDebouncedCallUserAPI(){this._debouncedCallUserAPI=this.userAPI.debounce!==void 0&&this.userAPI.debounce>0?Uc(this._innerCallUserAPI,this.userAPI.debounce,{leading:!0,trailing:!0}):this._innerCallUserAPI}async prefetch(r){await this.callUserAPI(r)}async callUserAPI(r){await this._debouncedCallUserAPI(r)}update(r,e,t=!0){this.userAPI=r,this._updateDebouncedCallUserAPI(),this.userAPI.url!==""&&this.userAPI.method==="GET"&&t&&this._debouncedPrefetch(e)}retrieveValue(r){if(this.result)try{return ct.zoom(this.result,r)}catch(e){console.error(e)}}retrieveZoomedKeyValues(r){if(this.result){let e=r&&r.length?ct.zoom(this.result,r):this.result;if(nM(e))return Object.entries(e);if(oM(e))return e.map((t,o)=>[o.toString(),t]);throw rM(e)?new Error("This path points to a value, use retrieveValue() instead. "+r?.join(".")):new Error("Path error"+r?.join("."))}}dispose(){}on(r,e){this.emitter.on(r,e)}off(r,e){this.emitter.off(r,e)}get autostart(){return this.userAPI.autoStart}};function tM(n){let r=new Headers;return n.headers.forEach(e=>{e.data.key!==""&&r.append(e.data.key,e.data.value)}),r}function rM(n){return typeof n=="string"||typeof n=="number"||typeof n=="boolean"||n===null}function oM(n){return Array.isArray(n)}function nM(n){return typeof n=="object"&&n!==null}async function iM(n,r,e=new AbortController){let t,o=n.url,i=n.proxy?.enabled??!1,a;if(n.integration?.type==="OpenAI"){let l=Ol(n.integration.prompt===""?[]:JSON.parse(n.integration.prompt),r),c=n.integration.behavior===""?[]:Ol(JSON.parse(n.integration.behavior),r);a=`{
1
+ "use strict";var b1=Object.create;var Hs=Object.defineProperty;var v1=Object.getOwnPropertyDescriptor;var S1=Object.getOwnPropertyNames;var w1=Object.getPrototypeOf,P1=Object.prototype.hasOwnProperty;var C1=(n,r,e)=>r in n?Hs(n,r,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[r]=e;var Ws=(n,r)=>()=>(r||n((r={exports:{}}).exports,r),r.exports),Kh=(n,r)=>{for(var e in r)Hs(n,e,{get:r[e],enumerable:!0})},Qh=(n,r,e,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of S1(r))!P1.call(n,o)&&o!==e&&Hs(n,o,{get:()=>r[o],enumerable:!(t=v1(r,o))||t.enumerable});return n};var qs=(n,r,e)=>(e=n!=null?b1(w1(n)):{},Qh(r||!n||!n.__esModule?Hs(e,"default",{value:n,enumerable:!0}):e,n)),O1=n=>Qh(Hs({},"__esModule",{value:!0}),n);var go=(n,r,e)=>(C1(n,typeof r!="symbol"?r+"":r,e),e);var zx=Ws((ef,Vx)=>{(function(n,r){typeof ef=="object"?Vx.exports=r():typeof define=="function"&&define.amd?define(r):n.Alea=r()})(ef,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 Wx=Ws((Mu,Hx)=>{(function(n,r){typeof Mu=="object"&&typeof Hx<"u"?r(Mu):typeof define=="function"&&define.amd?define(["exports"],r):r((n=typeof globalThis<"u"?globalThis:n||self).SVDJS={})})(Mu,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,f,h,m,y,b,S=r[0].length,P=r.length;if(P<S)throw new TypeError("Invalid matrix: m < n");for(var C=[],v=[],A=[],T=e==="f"?P:S,g=m=d=0;g<P;g++)v[g]=new Array(T).fill(0);for(g=0;g<S;g++)A[g]=new Array(S).fill(0);var D,E=new Array(S).fill(0);for(g=0;g<P;g++)for(a=0;a<S;a++)v[g][a]=r[g][a];for(g=0;g<S;g++){for(C[g]=d,h=0,l=g+1,a=g;a<P;a++)h+=Math.pow(v[a][g],2);if(h<i)d=0;else for(f=(p=v[g][g])*(d=p<0?Math.sqrt(h):-Math.sqrt(h))-h,v[g][g]=p-d,a=l;a<S;a++){for(h=0,s=g;s<P;s++)h+=v[s][g]*v[s][a];for(p=h/f,s=g;s<P;s++)v[s][a]=v[s][a]+p*v[s][g]}for(E[g]=d,h=0,a=l;a<S;a++)h+=Math.pow(v[g][a],2);if(h<i)d=0;else{for(f=(p=v[g][g+1])*(d=p<0?Math.sqrt(h):-Math.sqrt(h))-h,v[g][g+1]=p-d,a=l;a<S;a++)C[a]=v[g][a]/f;for(a=l;a<P;a++){for(h=0,s=l;s<S;s++)h+=v[a][s]*v[g][s];for(s=l;s<S;s++)v[a][s]=v[a][s]+h*C[s]}}m<(y=Math.abs(E[g])+Math.abs(C[g]))&&(m=y)}if(t)for(g=S-1;0<=g;g--){if(d!==0){for(f=v[g][g+1]*d,a=l;a<S;a++)A[a][g]=v[g][a]/f;for(a=l;a<S;a++){for(h=0,s=l;s<S;s++)h+=v[g][s]*A[s][a];for(s=l;s<S;s++)A[s][a]=A[s][a]+h*A[s][g]}}for(a=l;a<S;a++)A[g][a]=0,A[a][g]=0;A[g][g]=1,d=C[g],l=g}if(e){if(e==="f")for(g=S;g<P;g++){for(a=S;a<P;a++)v[g][a]=0;v[g][g]=1}for(g=S-1;0<=g;g--){for(l=g+1,d=E[g],a=l;a<T;a++)v[g][a]=0;if(d!==0){for(f=v[g][g]*d,a=l;a<T;a++){for(h=0,s=l;s<P;s++)h+=v[s][g]*v[s][a];for(p=h/f,s=g;s<P;s++)v[s][a]=v[s][a]+p*v[s][g]}for(a=g;a<P;a++)v[a][g]=v[a][g]/d}else for(a=g;a<P;a++)v[a][g]=0;v[g][g]=v[g][g]+1}}for(o*=m,s=S-1;0<=s;s--)for(var M=0;M<50;M++){for(D=!1,l=s;0<=l;l--){if(Math.abs(C[l])<=o){D=!0;break}if(Math.abs(E[l-1])<=o)break}if(!D){for(u=0,c=l-(h=1),g=l;g<s+1&&(p=h*C[g],C[g]=u*C[g],!(Math.abs(p)<=o));g++)if(d=E[g],E[g]=Math.sqrt(p*p+d*d),u=d/(f=E[g]),h=-p/f,e)for(a=0;a<P;a++)y=v[a][c],b=v[a][g],v[a][c]=y*u+b*h,v[a][g]=-y*h+b*u}if(b=E[s],l===s){if(b<0&&(E[s]=-b,t))for(a=0;a<S;a++)A[a][s]=-A[a][s];break}for(m=E[l],p=(((y=E[s-1])-b)*(y+b)+((d=C[s-1])-(f=C[s]))*(d+f))/(2*f*y),d=Math.sqrt(p*p+1),p=((m-b)*(m+b)+f*(y/(p<0?p-d:p+d)-f))/m,g=l+(h=u=1);g<s+1;g++){if(d=C[g],y=E[g],f=h*d,d*=u,b=Math.sqrt(p*p+f*f),p=m*(u=p/(C[g-1]=b))+d*(h=f/b),d=-m*h+d*u,f=y*h,y*=u,t)for(a=0;a<S;a++)m=A[a][g-1],b=A[a][g],A[a][g-1]=m*u+b*h,A[a][g]=-m*h+b*u;if(b=Math.sqrt(p*p+f*f),p=(u=p/(E[g-1]=b))*d+(h=f/b)*y,m=-h*d+u*y,e)for(a=0;a<P;a++)y=v[a][g-1],b=v[a][g],v[a][g-1]=y*u+b*h,v[a][g]=-y*h+b*u}C[l]=0,C[s]=p,E[s]=m}for(g=0;g<S;g++)E[g]<o&&(E[g]=0);return{u:v,q:E,v:A}},n.VERSION="1.1.1",Object.defineProperty(n,"__esModule",{value:!0})})});var Wv=Ws((kre,Hv)=>{"use strict";function kE(n,r){function e(){this.constructor=n}e.prototype=r.prototype,n.prototype=new e}function Bi(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,Bi)}kE(Bi,Error);Bi.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 UE(n,r){r=r!==void 0?r:{};var e={},t={svg_path:Us},o=Us,i=function(x){if(!x)return[];for(var w=[],R=0;R<x.length;R++)w=w.concat.apply(w,x[R]);var I=w[0];return I&&I.code=="m"&&(delete I.relative,I.code="M"),w},a=function(x,w){return x1(x,w)},s=/^[Mm]/,l=nt(["M","m"],!1,!1),c=function(x,w,R){var I=Gi(x,[w]);return R&&(I=I.concat(Gi(x=="M"?"L":"l",R[1]))),I},u=/^[Zz]/,p=nt(["Z","z"],!1,!1),d=function(){return Gi("Z")},f=/^[Ll]/,h=nt(["L","l"],!1,!1),m=function(x,w){return Gi(x,w)},y=/^[Hh]/,b=nt(["H","h"],!1,!1),S=function(x,w){return Gi(x,w.map(function(R){return{x:R}}))},P=/^[Vv]/,C=nt(["V","v"],!1,!1),v=function(x,w){return Gi(x,w.map(function(R){return{y:R}}))},A=/^[Cc]/,T=nt(["C","c"],!1,!1),g=function(x,w,R){return{x1:x.x,y1:x.y,x2:w.x,y2:w.y,x:R.x,y:R.y}},D=/^[Ss]/,E=nt(["S","s"],!1,!1),M=function(x,w){return{x2:x.x,y2:x.y,x:w.x,y:w.y}},N=/^[Qq]/,_=nt(["Q","q"],!1,!1),B=function(x,w){return{x1:x.x,y1:x.y,x:w.x,y:w.y}},V=/^[Tt]/,k=nt(["T","t"],!1,!1),L=/^[Aa]/,W=nt(["A","a"],!1,!1),F=function(x,w,R,I,z,oe){return{rx:x,ry:w,xAxisRotation:R,largeArc:I,sweep:z,x:oe.x,y:oe.y}},j=function(x,w){return{x,y:w}},H=function(x){return x*1},q=function(x){return x.join("")*1},re=/^[01]/,ee=nt(["0","1"],!1,!1),X=function(x){return x=="1"},te=function(){return""},K=",",Z=yt(",",!1),Q=function(x){return x.join("")},$=".",ue=yt(".",!1),le=/^[eE]/,ne=nt(["e","E"],!1,!1),ce=/^[+\-]/,ae=nt(["+","-"],!1,!1),ye=/^[0-9]/,fe=nt([["0","9"]],!1,!1),me=function(x){return x.join("")},be=/^[ \t\n\r]/,ge=nt([" "," ",`
2
+ `,"\r"],!1,!1),O=0,ie=0,Ve=[{line:1,column:1}],ke=0,ze=[],Oe=0,Lt;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 De(){return n.substring(ie,O)}function _t(){return ai(ie,O)}function Vt(x,w){throw w=w!==void 0?w:ai(ie,O),Rr([rp(x)],n.substring(ie,O),w)}function ii(x,w){throw w=w!==void 0?w:ai(ie,O),op(x,w)}function yt(x,w){return{type:"literal",text:x,ignoreCase:w}}function nt(x,w,R){return{type:"class",parts:x,inverted:w,ignoreCase:R}}function Zr(){return{type:"any"}}function tp(){return{type:"end"}}function rp(x){return{type:"other",description:x}}function sc(x){var w=Ve[x],R;if(w)return w;for(R=x-1;!Ve[R];)R--;for(w=Ve[R],w={line:w.line,column:w.column};R<x;)n.charCodeAt(R)===10?(w.line++,w.column=1):w.column++,R++;return Ve[x]=w,w}function ai(x,w){var R=sc(x),I=sc(w);return{start:{offset:x,line:R.line,column:R.column},end:{offset:w,line:I.line,column:I.column}}}function wt(x){O<ke||(O>ke&&(ke=O,ze=[]),ze.push(x))}function op(x,w){return new Bi(x,null,null,w)}function Rr(x,w,R){return new Bi(Bi.buildMessage(x,w),x,w,R)}function Us(){var x,w,R,I,z;for(x=O,w=[],R=Ue();R!==e;)w.push(R),R=Ue();if(w!==e)if(R=ar(),R===e&&(R=null),R!==e){for(I=[],z=Ue();z!==e;)I.push(z),z=Ue();I!==e?(ie=x,w=i(R),x=w):(O=x,x=e)}else O=x,x=e;else O=x,x=e;return x}function ar(){var x,w,R,I,z,oe;if(x=O,w=si(),w!==e){for(R=[],I=O,z=[],oe=Ue();oe!==e;)z.push(oe),oe=Ue();for(z!==e?(oe=si(),oe!==e?(z=[z,oe],I=z):(O=I,I=e)):(O=I,I=e);I!==e;){for(R.push(I),I=O,z=[],oe=Ue();oe!==e;)z.push(oe),oe=Ue();z!==e?(oe=si(),oe!==e?(z=[z,oe],I=z):(O=I,I=e)):(O=I,I=e)}R!==e?(ie=x,w=a(w,R),x=w):(O=x,x=e)}else O=x,x=e;return x}function si(){var x,w,R,I,z,oe;if(x=O,w=Vi(),w!==e){for(R=[],I=O,z=[],oe=Ue();oe!==e;)z.push(oe),oe=Ue();for(z!==e?(oe=lc(),oe!==e?(z=[z,oe],I=z):(O=I,I=e)):(O=I,I=e);I!==e;){for(R.push(I),I=O,z=[],oe=Ue();oe!==e;)z.push(oe),oe=Ue();z!==e?(oe=lc(),oe!==e?(z=[z,oe],I=z):(O=I,I=e)):(O=I,I=e)}R!==e?(ie=x,w=a(w,R),x=w):(O=x,x=e)}else O=x,x=e;return x}function lc(){var x;return x=o1(),x===e&&(x=n1(),x===e&&(x=i1(),x===e&&(x=a1(),x===e&&(x=s1(),x===e&&(x=c1(),x===e&&(x=d1(),x===e&&(x=f1(),x===e&&(x=m1())))))))),x}function Vi(){var x,w,R,I,z,oe,Fi;if(x=O,s.test(n.charAt(O))?(w=n.charAt(O),O++):(w=e,Oe===0&&wt(l)),w!==e){for(R=[],I=Ue();I!==e;)R.push(I),I=Ue();R!==e?(I=cr(),I!==e?(z=O,oe=pt(),oe===e&&(oe=null),oe!==e?(Fi=kh(),Fi!==e?(oe=[oe,Fi],z=oe):(O=z,z=e)):(O=z,z=e),z===e&&(z=null),z!==e?(ie=x,w=c(w,I,z),x=w):(O=x,x=e)):(O=x,x=e)):(O=x,x=e)}else O=x,x=e;return x}function o1(){var x,w;return x=O,u.test(n.charAt(O))?(w=n.charAt(O),O++):(w=e,Oe===0&&wt(p)),w!==e&&(ie=x,w=d()),x=w,x}function n1(){var x,w,R,I;if(x=O,f.test(n.charAt(O))?(w=n.charAt(O),O++):(w=e,Oe===0&&wt(h)),w!==e){for(R=[],I=Ue();I!==e;)R.push(I),I=Ue();R!==e?(I=kh(),I!==e?(ie=x,w=m(w,I),x=w):(O=x,x=e)):(O=x,x=e)}else O=x,x=e;return x}function kh(){var x,w,R,I,z,oe;if(x=O,w=cr(),w!==e){for(R=[],I=O,z=pt(),z===e&&(z=null),z!==e?(oe=cr(),oe!==e?(z=[z,oe],I=z):(O=I,I=e)):(O=I,I=e);I!==e;)R.push(I),I=O,z=pt(),z===e&&(z=null),z!==e?(oe=cr(),oe!==e?(z=[z,oe],I=z):(O=I,I=e)):(O=I,I=e);R!==e?(ie=x,w=a(w,R),x=w):(O=x,x=e)}else O=x,x=e;return x}function i1(){var x,w,R,I;if(x=O,y.test(n.charAt(O))?(w=n.charAt(O),O++):(w=e,Oe===0&&wt(b)),w!==e){for(R=[],I=Ue();I!==e;)R.push(I),I=Ue();R!==e?(I=Uh(),I!==e?(ie=x,w=S(w,I),x=w):(O=x,x=e)):(O=x,x=e)}else O=x,x=e;return x}function Uh(){var x,w,R,I,z,oe;if(x=O,w=zi(),w!==e){for(R=[],I=O,z=pt(),z===e&&(z=null),z!==e?(oe=zi(),oe!==e?(z=[z,oe],I=z):(O=I,I=e)):(O=I,I=e);I!==e;)R.push(I),I=O,z=pt(),z===e&&(z=null),z!==e?(oe=zi(),oe!==e?(z=[z,oe],I=z):(O=I,I=e)):(O=I,I=e);R!==e?(ie=x,w=a(w,R),x=w):(O=x,x=e)}else O=x,x=e;return x}function a1(){var x,w,R,I;if(x=O,P.test(n.charAt(O))?(w=n.charAt(O),O++):(w=e,Oe===0&&wt(C)),w!==e){for(R=[],I=Ue();I!==e;)R.push(I),I=Ue();R!==e?(I=Uh(),I!==e?(ie=x,w=v(w,I),x=w):(O=x,x=e)):(O=x,x=e)}else O=x,x=e;return x}function s1(){var x,w,R,I;if(x=O,A.test(n.charAt(O))?(w=n.charAt(O),O++):(w=e,Oe===0&&wt(T)),w!==e){for(R=[],I=Ue();I!==e;)R.push(I),I=Ue();R!==e?(I=l1(),I!==e?(ie=x,w=m(w,I),x=w):(O=x,x=e)):(O=x,x=e)}else O=x,x=e;return x}function l1(){var x,w,R,I,z,oe;if(x=O,w=np(),w!==e){for(R=[],I=O,z=pt(),z===e&&(z=null),z!==e?(oe=np(),oe!==e?(z=[z,oe],I=z):(O=I,I=e)):(O=I,I=e);I!==e;)R.push(I),I=O,z=pt(),z===e&&(z=null),z!==e?(oe=np(),oe!==e?(z=[z,oe],I=z):(O=I,I=e)):(O=I,I=e);R!==e?(ie=x,w=a(w,R),x=w):(O=x,x=e)}else O=x,x=e;return x}function np(){var x,w,R,I,z,oe;return x=O,w=cr(),w!==e?(R=pt(),R===e&&(R=null),R!==e?(I=cr(),I!==e?(z=pt(),z===e&&(z=null),z!==e?(oe=cr(),oe!==e?(ie=x,w=g(w,I,oe),x=w):(O=x,x=e)):(O=x,x=e)):(O=x,x=e)):(O=x,x=e)):(O=x,x=e),x}function c1(){var x,w,R,I;if(x=O,D.test(n.charAt(O))?(w=n.charAt(O),O++):(w=e,Oe===0&&wt(E)),w!==e){for(R=[],I=Ue();I!==e;)R.push(I),I=Ue();R!==e?(I=u1(),I!==e?(ie=x,w=m(w,I),x=w):(O=x,x=e)):(O=x,x=e)}else O=x,x=e;return x}function u1(){var x,w,R,I,z,oe;if(x=O,w=ip(),w!==e){for(R=[],I=O,z=pt(),z===e&&(z=null),z!==e?(oe=ip(),oe!==e?(z=[z,oe],I=z):(O=I,I=e)):(O=I,I=e);I!==e;)R.push(I),I=O,z=pt(),z===e&&(z=null),z!==e?(oe=ip(),oe!==e?(z=[z,oe],I=z):(O=I,I=e)):(O=I,I=e);R!==e?(ie=x,w=a(w,R),x=w):(O=x,x=e)}else O=x,x=e;return x}function ip(){var x,w,R,I;return x=O,w=cr(),w!==e?(R=pt(),R===e&&(R=null),R!==e?(I=cr(),I!==e?(ie=x,w=M(w,I),x=w):(O=x,x=e)):(O=x,x=e)):(O=x,x=e),x}function d1(){var x,w,R,I;if(x=O,N.test(n.charAt(O))?(w=n.charAt(O),O++):(w=e,Oe===0&&wt(_)),w!==e){for(R=[],I=Ue();I!==e;)R.push(I),I=Ue();R!==e?(I=p1(),I!==e?(ie=x,w=m(w,I),x=w):(O=x,x=e)):(O=x,x=e)}else O=x,x=e;return x}function p1(){var x,w,R,I,z,oe;if(x=O,w=ap(),w!==e){for(R=[],I=O,z=pt(),z===e&&(z=null),z!==e?(oe=ap(),oe!==e?(z=[z,oe],I=z):(O=I,I=e)):(O=I,I=e);I!==e;)R.push(I),I=O,z=pt(),z===e&&(z=null),z!==e?(oe=ap(),oe!==e?(z=[z,oe],I=z):(O=I,I=e)):(O=I,I=e);R!==e?(ie=x,w=a(w,R),x=w):(O=x,x=e)}else O=x,x=e;return x}function ap(){var x,w,R,I;return x=O,w=cr(),w!==e?(R=pt(),R===e&&(R=null),R!==e?(I=cr(),I!==e?(ie=x,w=B(w,I),x=w):(O=x,x=e)):(O=x,x=e)):(O=x,x=e),x}function f1(){var x,w,R,I;if(x=O,V.test(n.charAt(O))?(w=n.charAt(O),O++):(w=e,Oe===0&&wt(k)),w!==e){for(R=[],I=Ue();I!==e;)R.push(I),I=Ue();R!==e?(I=h1(),I!==e?(ie=x,w=m(w,I),x=w):(O=x,x=e)):(O=x,x=e)}else O=x,x=e;return x}function h1(){var x,w,R,I,z,oe;if(x=O,w=cr(),w!==e){for(R=[],I=O,z=pt(),z===e&&(z=null),z!==e?(oe=cr(),oe!==e?(z=[z,oe],I=z):(O=I,I=e)):(O=I,I=e);I!==e;)R.push(I),I=O,z=pt(),z===e&&(z=null),z!==e?(oe=cr(),oe!==e?(z=[z,oe],I=z):(O=I,I=e)):(O=I,I=e);R!==e?(ie=x,w=a(w,R),x=w):(O=x,x=e)}else O=x,x=e;return x}function m1(){var x,w,R,I;if(x=O,L.test(n.charAt(O))?(w=n.charAt(O),O++):(w=e,Oe===0&&wt(W)),w!==e){for(R=[],I=Ue();I!==e;)R.push(I),I=Ue();R!==e?(I=y1(),I!==e?(ie=x,w=m(w,I),x=w):(O=x,x=e)):(O=x,x=e)}else O=x,x=e;return x}function y1(){var x,w,R,I,z,oe;if(x=O,w=sp(),w!==e){for(R=[],I=O,z=pt(),z===e&&(z=null),z!==e?(oe=sp(),oe!==e?(z=[z,oe],I=z):(O=I,I=e)):(O=I,I=e);I!==e;)R.push(I),I=O,z=pt(),z===e&&(z=null),z!==e?(oe=sp(),oe!==e?(z=[z,oe],I=z):(O=I,I=e)):(O=I,I=e);R!==e?(ie=x,w=a(w,R),x=w):(O=x,x=e)}else O=x,x=e;return x}function sp(){var x,w,R,I,z,oe,Fi,cp,uc,up,dc,dp;return x=O,w=Hh(),w!==e?(R=pt(),R===e&&(R=null),R!==e?(I=Hh(),I!==e?(z=pt(),z===e&&(z=null),z!==e?(oe=zi(),oe!==e?(Fi=pt(),Fi!==e?(cp=Wh(),cp!==e?(uc=pt(),uc===e&&(uc=null),uc!==e?(up=Wh(),up!==e?(dc=pt(),dc===e&&(dc=null),dc!==e?(dp=cr(),dp!==e?(ie=x,w=F(w,I,oe,cp,up,dp),x=w):(O=x,x=e)):(O=x,x=e)):(O=x,x=e)):(O=x,x=e)):(O=x,x=e)):(O=x,x=e)):(O=x,x=e)):(O=x,x=e)):(O=x,x=e)):(O=x,x=e)):(O=x,x=e),x}function cr(){var x,w,R,I;return x=O,w=zi(),w!==e?(R=pt(),R===e&&(R=null),R!==e?(I=zi(),I!==e?(ie=x,w=j(w,I),x=w):(O=x,x=e)):(O=x,x=e)):(O=x,x=e),x}function Hh(){var x,w;return x=O,w=$h(),w===e&&(w=li()),w!==e&&(ie=x,w=H(w)),x=w,x}function zi(){var x,w,R,I;return x=O,w=O,R=lp(),R===e&&(R=null),R!==e?(I=$h(),I!==e?(R=[R,I],w=R):(O=w,w=e)):(O=w,w=e),w===e&&(w=O,R=lp(),R===e&&(R=null),R!==e?(I=li(),I!==e?(R=[R,I],w=R):(O=w,w=e)):(O=w,w=e)),w!==e&&(ie=x,w=q(w)),x=w,x}function Wh(){var x,w;return x=O,re.test(n.charAt(O))?(w=n.charAt(O),O++):(w=e,Oe===0&&wt(ee)),w!==e&&(ie=x,w=X(w)),x=w,x}function pt(){var x,w,R,I,z;if(x=O,w=[],R=Ue(),R!==e)for(;R!==e;)w.push(R),R=Ue();else w=e;if(w!==e)if(R=qh(),R===e&&(R=null),R!==e){for(I=[],z=Ue();z!==e;)I.push(z),z=Ue();I!==e?(w=[w,R,I],x=w):(O=x,x=e)}else O=x,x=e;else O=x,x=e;if(x===e){if(x=O,w=O,R=qh(),R!==e){for(I=[],z=Ue();z!==e;)I.push(z),z=Ue();I!==e?(R=[R,I],w=R):(O=w,w=e)}else O=w,w=e;w!==e&&(ie=x,w=te()),x=w}return x}function qh(){var x;return n.charCodeAt(O)===44?(x=K,O++):(x=e,Oe===0&&wt(Z)),x}function $h(){var x,w,R,I;return x=O,w=O,R=g1(),R!==e?(I=Yh(),I===e&&(I=null),I!==e?(R=[R,I],w=R):(O=w,w=e)):(O=w,w=e),w===e&&(w=O,R=li(),R!==e?(I=Yh(),I!==e?(R=[R,I],w=R):(O=w,w=e)):(O=w,w=e)),w!==e&&(ie=x,w=Q(w)),x=w,x}function g1(){var x,w,R,I,z;return x=O,w=O,R=li(),R===e&&(R=null),R!==e?(n.charCodeAt(O)===46?(I=$,O++):(I=e,Oe===0&&wt(ue)),I!==e?(z=li(),z!==e?(R=[R,I,z],w=R):(O=w,w=e)):(O=w,w=e)):(O=w,w=e),w===e&&(w=O,R=li(),R!==e?(n.charCodeAt(O)===46?(I=$,O++):(I=e,Oe===0&&wt(ue)),I!==e?(R=[R,I],w=R):(O=w,w=e)):(O=w,w=e)),w!==e&&(ie=x,w=Q(w)),x=w,x}function Yh(){var x,w,R,I,z;return x=O,w=O,le.test(n.charAt(O))?(R=n.charAt(O),O++):(R=e,Oe===0&&wt(ne)),R!==e?(I=lp(),I===e&&(I=null),I!==e?(z=li(),z!==e?(R=[R,I,z],w=R):(O=w,w=e)):(O=w,w=e)):(O=w,w=e),w!==e&&(ie=x,w=Q(w)),x=w,x}function lp(){var x;return ce.test(n.charAt(O))?(x=n.charAt(O),O++):(x=e,Oe===0&&wt(ae)),x}function li(){var x,w,R;if(x=O,w=[],ye.test(n.charAt(O))?(R=n.charAt(O),O++):(R=e,Oe===0&&wt(fe)),R!==e)for(;R!==e;)w.push(R),ye.test(n.charAt(O))?(R=n.charAt(O),O++):(R=e,Oe===0&&wt(fe));else w=e;return w!==e&&(ie=x,w=me(w)),x=w,x}function Ue(){var x,w;return x=O,be.test(n.charAt(O))?(w=n.charAt(O),O++):(w=e,Oe===0&&wt(ge)),w!==e&&(ie=x,w=te()),x=w,x}function x1(x,w){if(!w)return[x];for(var R=[x],I=0,z=w.length;I<z;I++)R[I+1]=w[I][1];return R}var cc={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 Xh in cc)cc[Xh.toUpperCase()]=cc[Xh];function Gi(x,w){w||(w=[{}]);for(var R=w.length;R--;){var I={code:x,command:cc[x]};x==x.toLowerCase()&&(I.relative=!0);for(var z in w[R])I[z]=w[R][z];w[R]=I}return w}if(Lt=o(),Lt!==e&&O===n.length)return Lt;throw Lt!==e&&O<n.length&&wt(tp()),Rr(ze,ke<n.length?n.charAt(ke):null,ke<n.length?ai(ke,ke+1):ai(ke,ke))}Hv.exports={SyntaxError:Bi,parse:UE}});var Th=Ws((Ure,qv)=>{var Vd=Wv().parse;Vd.parseSVG=Vd;Vd.makeAbsolute=HE;qv.exports=Vd;function HE(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 e1=Ws((fce,JS)=>{JS.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 xN={};Kh(xN,{default:()=>Jd});module.exports=O1(xN);var ep=require("three");function pc(n){for(let r of Object.keys(n))n[r]===void 0&&delete n[r];return n}function Jt(n,r){return Object.setPrototypeOf(n,r),n}function fc(n){return Array.isArray(n)?n:[n]}function hc(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 A1=typeof global=="object"&&global&&global.Object===Object&&global,mc=A1;var T1=typeof self=="object"&&self&&self.Object===Object&&self,I1=mc||T1||Function("return this")(),Pt=I1;var M1=Pt.Symbol,Wt=M1;var Zh=Object.prototype,E1=Zh.hasOwnProperty,N1=Zh.toString,$s=Wt?Wt.toStringTag:void 0;function D1(n){var r=E1.call(n,$s),e=n[$s];try{n[$s]=void 0;var t=!0}catch{}var o=N1.call(n);return t&&(r?n[$s]=e:delete n[$s]),o}var Jh=D1;var _1=Object.prototype,B1=_1.toString;function R1(n){return B1.call(n)}var em=R1;var L1="[object Null]",V1="[object Undefined]",tm=Wt?Wt.toStringTag:void 0;function z1(n){return n==null?n===void 0?V1:L1:tm&&tm in Object(n)?Jh(n):em(n)}var Ir=z1;function G1(n){return n!=null&&typeof n=="object"}var er=G1;var F1="[object Symbol]";function j1(n){return typeof n=="symbol"||er(n)&&Ir(n)==F1}var gn=j1;function k1(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 yc=k1;var U1=Array.isArray,Ct=U1;var H1=1/0,rm=Wt?Wt.prototype:void 0,om=rm?rm.toString:void 0;function nm(n){if(typeof n=="string")return n;if(Ct(n))return yc(n,nm)+"";if(gn(n))return om?om.call(n):"";var r=n+"";return r=="0"&&1/n==-H1?"-0":r}var im=nm;var W1=/\s/;function q1(n){for(var r=n.length;r--&&W1.test(n.charAt(r)););return r}var am=q1;var $1=/^\s+/;function Y1(n){return n&&n.slice(0,am(n)+1).replace($1,"")}var sm=Y1;function X1(n){var r=typeof n;return n!=null&&(r=="object"||r=="function")}var qt=X1;var lm=0/0,K1=/^[-+]0x[0-9a-f]+$/i,Q1=/^0b[01]+$/i,Z1=/^0o[0-7]+$/i,J1=parseInt;function ew(n){if(typeof n=="number")return n;if(gn(n))return lm;if(qt(n)){var r=typeof n.valueOf=="function"?n.valueOf():n;n=qt(r)?r+"":r}if(typeof n!="string")return n===0?n:+n;n=sm(n);var e=Q1.test(n);return e||Z1.test(n)?J1(n.slice(2),e?2:8):K1.test(n)?lm:+n}var pp=ew;function tw(n){return n}var cm=tw;var rw="[object AsyncFunction]",ow="[object Function]",nw="[object GeneratorFunction]",iw="[object Proxy]";function aw(n){if(!qt(n))return!1;var r=Ir(n);return r==ow||r==nw||r==rw||r==iw}var gc=aw;var sw=Pt["__core-js_shared__"],xc=sw;var um=function(){var n=/[^.]+$/.exec(xc&&xc.keys&&xc.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}();function lw(n){return!!um&&um in n}var dm=lw;var cw=Function.prototype,uw=cw.toString;function dw(n){if(n!=null){try{return uw.call(n)}catch{}try{return n+""}catch{}}return""}var ko=dw;var pw=/[\\^$.*+?()[\]{}|]/g,fw=/^\[object .+?Constructor\]$/,hw=Function.prototype,mw=Object.prototype,yw=hw.toString,gw=mw.hasOwnProperty,xw=RegExp("^"+yw.call(gw).replace(pw,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function bw(n){if(!qt(n)||dm(n))return!1;var r=gc(n)?xw:fw;return r.test(ko(n))}var pm=bw;function vw(n,r){return n?.[r]}var fm=vw;function Sw(n,r){var e=fm(n,r);return pm(e)?e:void 0}var yr=Sw;var ww=yr(Pt,"WeakMap"),bc=ww;var hm=Object.create,Pw=function(){function n(){}return function(r){if(!qt(r))return{};if(hm)return hm(r);n.prototype=r;var e=new n;return n.prototype=void 0,e}}(),mm=Pw;function Cw(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 ym=Cw;function Ow(n,r){var e=-1,t=n.length;for(r||(r=Array(t));++e<t;)r[e]=n[e];return r}var gm=Ow;var Aw=800,Tw=16,Iw=Date.now;function Mw(n){var r=0,e=0;return function(){var t=Iw(),o=Tw-(t-e);if(e=t,o>0){if(++r>=Aw)return arguments[0]}else r=0;return n.apply(void 0,arguments)}}var xm=Mw;function Ew(n){return function(){return n}}var bm=Ew;var Nw=function(){try{var n=yr(Object,"defineProperty");return n({},"",{}),n}catch{}}(),ji=Nw;var Dw=ji?function(n,r){return ji(n,"toString",{configurable:!0,enumerable:!1,value:bm(r),writable:!0})}:cm,vm=Dw;var _w=xm(vm),Sm=_w;function Bw(n,r){for(var e=-1,t=n==null?0:n.length;++e<t&&r(n[e],e,n)!==!1;);return n}var wm=Bw;var Rw=9007199254740991,Lw=/^(?:0|[1-9]\d*)$/;function Vw(n,r){var e=typeof n;return r=r??Rw,!!r&&(e=="number"||e!="symbol"&&Lw.test(n))&&n>-1&&n%1==0&&n<r}var ki=Vw;function zw(n,r,e){r=="__proto__"&&ji?ji(n,r,{configurable:!0,enumerable:!0,value:e,writable:!0}):n[r]=e}var vc=zw;function Gw(n,r){return n===r||n!==n&&r!==r}var Ui=Gw;var Fw=Object.prototype,jw=Fw.hasOwnProperty;function kw(n,r,e){var t=n[r];(!(jw.call(n,r)&&Ui(t,e))||e===void 0&&!(r in n))&&vc(n,r,e)}var Hi=kw;function Uw(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?vc(e,s,l):Hi(e,s,l)}return e}var xo=Uw;var Pm=Math.max;function Hw(n,r,e){return r=Pm(r===void 0?n.length-1:r,0),function(){for(var t=arguments,o=-1,i=Pm(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),ym(n,this,s)}}var Cm=Hw;var Ww=9007199254740991;function qw(n){return typeof n=="number"&&n>-1&&n%1==0&&n<=Ww}var Wi=qw;function $w(n){return n!=null&&Wi(n.length)&&!gc(n)}var Sc=$w;var Yw=Object.prototype;function Xw(n){var r=n&&n.constructor,e=typeof r=="function"&&r.prototype||Yw;return n===e}var qi=Xw;function Kw(n,r){for(var e=-1,t=Array(n);++e<n;)t[e]=r(e);return t}var Om=Kw;var Qw="[object Arguments]";function Zw(n){return er(n)&&Ir(n)==Qw}var fp=Zw;var Am=Object.prototype,Jw=Am.hasOwnProperty,e2=Am.propertyIsEnumerable,t2=fp(function(){return arguments}())?fp:function(n){return er(n)&&Jw.call(n,"callee")&&!e2.call(n,"callee")},$i=t2;function r2(){return!1}var Tm=r2;var Em=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Im=Em&&typeof module=="object"&&module&&!module.nodeType&&module,o2=Im&&Im.exports===Em,Mm=o2?Pt.Buffer:void 0,n2=Mm?Mm.isBuffer:void 0,i2=n2||Tm,ci=i2;var a2="[object Arguments]",s2="[object Array]",l2="[object Boolean]",c2="[object Date]",u2="[object Error]",d2="[object Function]",p2="[object Map]",f2="[object Number]",h2="[object Object]",m2="[object RegExp]",y2="[object Set]",g2="[object String]",x2="[object WeakMap]",b2="[object ArrayBuffer]",v2="[object DataView]",S2="[object Float32Array]",w2="[object Float64Array]",P2="[object Int8Array]",C2="[object Int16Array]",O2="[object Int32Array]",A2="[object Uint8Array]",T2="[object Uint8ClampedArray]",I2="[object Uint16Array]",M2="[object Uint32Array]",ft={};ft[S2]=ft[w2]=ft[P2]=ft[C2]=ft[O2]=ft[A2]=ft[T2]=ft[I2]=ft[M2]=!0;ft[a2]=ft[s2]=ft[b2]=ft[l2]=ft[v2]=ft[c2]=ft[u2]=ft[d2]=ft[p2]=ft[f2]=ft[h2]=ft[m2]=ft[y2]=ft[g2]=ft[x2]=!1;function E2(n){return er(n)&&Wi(n.length)&&!!ft[Ir(n)]}var Nm=E2;function N2(n){return function(r){return n(r)}}var Yi=N2;var Dm=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Ys=Dm&&typeof module=="object"&&module&&!module.nodeType&&module,D2=Ys&&Ys.exports===Dm,hp=D2&&mc.process,_2=function(){try{var n=Ys&&Ys.require&&Ys.require("util").types;return n||hp&&hp.binding&&hp.binding("util")}catch{}}(),Uo=_2;var _m=Uo&&Uo.isTypedArray,B2=_m?Yi(_m):Nm,wc=B2;var R2=Object.prototype,L2=R2.hasOwnProperty;function V2(n,r){var e=Ct(n),t=!e&&$i(n),o=!e&&!t&&ci(n),i=!e&&!t&&!o&&wc(n),a=e||t||o||i,s=a?Om(n.length,String):[],l=s.length;for(var c in n)(r||L2.call(n,c))&&!(a&&(c=="length"||o&&(c=="offset"||c=="parent")||i&&(c=="buffer"||c=="byteLength"||c=="byteOffset")||ki(c,l)))&&s.push(c);return s}var Pc=V2;function z2(n,r){return function(e){return n(r(e))}}var Cc=z2;var G2=Cc(Object.keys,Object),Bm=G2;var F2=Object.prototype,j2=F2.hasOwnProperty;function k2(n){if(!qi(n))return Bm(n);var r=[];for(var e in Object(n))j2.call(n,e)&&e!="constructor"&&r.push(e);return r}var Rm=k2;function U2(n){return Sc(n)?Pc(n):Rm(n)}var Xi=U2;function H2(n){var r=[];if(n!=null)for(var e in Object(n))r.push(e);return r}var Lm=H2;var W2=Object.prototype,q2=W2.hasOwnProperty;function $2(n){if(!qt(n))return Lm(n);var r=qi(n),e=[];for(var t in n)t=="constructor"&&(r||!q2.call(n,t))||e.push(t);return e}var Vm=$2;function Y2(n){return Sc(n)?Pc(n,!0):Vm(n)}var Ki=Y2;var X2=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,K2=/^\w*$/;function Q2(n,r){if(Ct(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||gn(n)?!0:K2.test(n)||!X2.test(n)||r!=null&&n in Object(r)}var zm=Q2;var Z2=yr(Object,"create"),Ho=Z2;function J2(){this.__data__=Ho?Ho(null):{},this.size=0}var Gm=J2;function eP(n){var r=this.has(n)&&delete this.__data__[n];return this.size-=r?1:0,r}var Fm=eP;var tP="__lodash_hash_undefined__",rP=Object.prototype,oP=rP.hasOwnProperty;function nP(n){var r=this.__data__;if(Ho){var e=r[n];return e===tP?void 0:e}return oP.call(r,n)?r[n]:void 0}var jm=nP;var iP=Object.prototype,aP=iP.hasOwnProperty;function sP(n){var r=this.__data__;return Ho?r[n]!==void 0:aP.call(r,n)}var km=sP;var lP="__lodash_hash_undefined__";function cP(n,r){var e=this.__data__;return this.size+=this.has(n)?0:1,e[n]=Ho&&r===void 0?lP:r,this}var Um=cP;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=Gm;Qi.prototype.delete=Fm;Qi.prototype.get=jm;Qi.prototype.has=km;Qi.prototype.set=Um;var mp=Qi;function uP(){this.__data__=[],this.size=0}var Hm=uP;function dP(n,r){for(var e=n.length;e--;)if(Ui(n[e][0],r))return e;return-1}var xn=dP;var pP=Array.prototype,fP=pP.splice;function hP(n){var r=this.__data__,e=xn(r,n);if(e<0)return!1;var t=r.length-1;return e==t?r.pop():fP.call(r,e,1),--this.size,!0}var Wm=hP;function mP(n){var r=this.__data__,e=xn(r,n);return e<0?void 0:r[e][1]}var qm=mP;function yP(n){return xn(this.__data__,n)>-1}var $m=yP;function gP(n,r){var e=this.__data__,t=xn(e,n);return t<0?(++this.size,e.push([n,r])):e[t][1]=r,this}var Ym=gP;function Zi(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])}}Zi.prototype.clear=Hm;Zi.prototype.delete=Wm;Zi.prototype.get=qm;Zi.prototype.has=$m;Zi.prototype.set=Ym;var bn=Zi;var xP=yr(Pt,"Map"),vn=xP;function bP(){this.size=0,this.__data__={hash:new mp,map:new(vn||bn),string:new mp}}var Xm=bP;function vP(n){var r=typeof n;return r=="string"||r=="number"||r=="symbol"||r=="boolean"?n!=="__proto__":n===null}var Km=vP;function SP(n,r){var e=n.__data__;return Km(r)?e[typeof r=="string"?"string":"hash"]:e.map}var Sn=SP;function wP(n){var r=Sn(this,n).delete(n);return this.size-=r?1:0,r}var Qm=wP;function PP(n){return Sn(this,n).get(n)}var Zm=PP;function CP(n){return Sn(this,n).has(n)}var Jm=CP;function OP(n,r){var e=Sn(this,n),t=e.size;return e.set(n,r),this.size+=e.size==t?0:1,this}var ey=OP;function Ji(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])}}Ji.prototype.clear=Xm;Ji.prototype.delete=Qm;Ji.prototype.get=Zm;Ji.prototype.has=Jm;Ji.prototype.set=ey;var ui=Ji;var AP="Expected a function";function yp(n,r){if(typeof n!="function"||r!=null&&typeof r!="function")throw new TypeError(AP);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(yp.Cache||ui),e}yp.Cache=ui;var ty=yp;var TP=500;function IP(n){var r=ty(n,function(t){return e.size===TP&&e.clear(),t}),e=r.cache;return r}var ry=IP;var MP=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,EP=/\\(\\)?/g,NP=ry(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(MP,function(e,t,o,i){r.push(o?i.replace(EP,"$1"):t||e)}),r}),oy=NP;function DP(n){return n==null?"":im(n)}var ny=DP;function _P(n,r){return Ct(n)?n:zm(n,r)?[n]:oy(ny(n))}var Lr=_P;var BP=1/0;function RP(n){if(typeof n=="string"||gn(n))return n;var r=n+"";return r=="0"&&1/n==-BP?"-0":r}var wn=RP;function LP(n,r){r=Lr(r,n);for(var e=0,t=r.length;n!=null&&e<t;)n=n[wn(r[e++])];return e&&e==t?n:void 0}var Oc=LP;function VP(n,r){for(var e=-1,t=r.length,o=n.length;++e<t;)n[o+e]=r[e];return n}var ea=VP;var iy=Wt?Wt.isConcatSpreadable:void 0;function zP(n){return Ct(n)||$i(n)||!!(iy&&n&&n[iy])}var ay=zP;function sy(n,r,e,t,o){var i=-1,a=n.length;for(e||(e=ay),o||(o=[]);++i<a;){var s=n[i];r>0&&e(s)?r>1?sy(s,r-1,e,t,o):ea(o,s):t||(o[o.length]=s)}return o}var ly=sy;function GP(n){var r=n==null?0:n.length;return r?ly(n,1):[]}var cy=GP;function FP(n){return Sm(Cm(n,void 0,cy),n+"")}var Ac=FP;var jP=Cc(Object.getPrototypeOf,Object),ta=jP;var kP="[object Object]",UP=Function.prototype,HP=Object.prototype,uy=UP.toString,WP=HP.hasOwnProperty,qP=uy.call(Object);function $P(n){if(!er(n)||Ir(n)!=kP)return!1;var r=ta(n);if(r===null)return!0;var e=WP.call(r,"constructor")&&r.constructor;return typeof e=="function"&&e instanceof e&&uy.call(e)==qP}var dy=$P;function YP(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 py=YP;function XP(){this.__data__=new bn,this.size=0}var fy=XP;function KP(n){var r=this.__data__,e=r.delete(n);return this.size=r.size,e}var hy=KP;function QP(n){return this.__data__.get(n)}var my=QP;function ZP(n){return this.__data__.has(n)}var yy=ZP;var JP=200;function eC(n,r){var e=this.__data__;if(e instanceof bn){var t=e.__data__;if(!vn||t.length<JP-1)return t.push([n,r]),this.size=++e.size,this;e=this.__data__=new ui(t)}return e.set(n,r),this.size=e.size,this}var gy=eC;function ra(n){var r=this.__data__=new bn(n);this.size=r.size}ra.prototype.clear=fy;ra.prototype.delete=hy;ra.prototype.get=my;ra.prototype.has=yy;ra.prototype.set=gy;var oa=ra;function tC(n,r){return n&&xo(r,Xi(r),n)}var xy=tC;function rC(n,r){return n&&xo(r,Ki(r),n)}var by=rC;var Py=typeof exports=="object"&&exports&&!exports.nodeType&&exports,vy=Py&&typeof module=="object"&&module&&!module.nodeType&&module,oC=vy&&vy.exports===Py,Sy=oC?Pt.Buffer:void 0,wy=Sy?Sy.allocUnsafe:void 0;function nC(n,r){if(r)return n.slice();var e=n.length,t=wy?wy(e):new n.constructor(e);return n.copy(t),t}var Cy=nC;function iC(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 Oy=iC;function aC(){return[]}var Tc=aC;var sC=Object.prototype,lC=sC.propertyIsEnumerable,Ay=Object.getOwnPropertySymbols,cC=Ay?function(n){return n==null?[]:(n=Object(n),Oy(Ay(n),function(r){return lC.call(n,r)}))}:Tc,na=cC;function uC(n,r){return xo(n,na(n),r)}var Ty=uC;var dC=Object.getOwnPropertySymbols,pC=dC?function(n){for(var r=[];n;)ea(r,na(n)),n=ta(n);return r}:Tc,Ic=pC;function fC(n,r){return xo(n,Ic(n),r)}var Iy=fC;function hC(n,r,e){var t=r(n);return Ct(n)?t:ea(t,e(n))}var Mc=hC;function mC(n){return Mc(n,Xi,na)}var Xs=mC;function yC(n){return Mc(n,Ki,Ic)}var Ec=yC;var gC=yr(Pt,"DataView"),Nc=gC;var xC=yr(Pt,"Promise"),Dc=xC;var bC=yr(Pt,"Set"),_c=bC;var My="[object Map]",vC="[object Object]",Ey="[object Promise]",Ny="[object Set]",Dy="[object WeakMap]",_y="[object DataView]",SC=ko(Nc),wC=ko(vn),PC=ko(Dc),CC=ko(_c),OC=ko(bc),di=Ir;(Nc&&di(new Nc(new ArrayBuffer(1)))!=_y||vn&&di(new vn)!=My||Dc&&di(Dc.resolve())!=Ey||_c&&di(new _c)!=Ny||bc&&di(new bc)!=Dy)&&(di=function(n){var r=Ir(n),e=r==vC?n.constructor:void 0,t=e?ko(e):"";if(t)switch(t){case SC:return _y;case wC:return My;case PC:return Ey;case CC:return Ny;case OC:return Dy}return r});var Wo=di;var AC=Object.prototype,TC=AC.hasOwnProperty;function IC(n){var r=n.length,e=new n.constructor(r);return r&&typeof n[0]=="string"&&TC.call(n,"index")&&(e.index=n.index,e.input=n.input),e}var By=IC;var MC=Pt.Uint8Array,ia=MC;function EC(n){var r=new n.constructor(n.byteLength);return new ia(r).set(new ia(n)),r}var aa=EC;function NC(n,r){var e=r?aa(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var Ry=NC;var DC=/\w*$/;function _C(n){var r=new n.constructor(n.source,DC.exec(n));return r.lastIndex=n.lastIndex,r}var Ly=_C;var Vy=Wt?Wt.prototype:void 0,zy=Vy?Vy.valueOf:void 0;function BC(n){return zy?Object(zy.call(n)):{}}var Gy=BC;function RC(n,r){var e=r?aa(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.length)}var Fy=RC;var LC="[object Boolean]",VC="[object Date]",zC="[object Map]",GC="[object Number]",FC="[object RegExp]",jC="[object Set]",kC="[object String]",UC="[object Symbol]",HC="[object ArrayBuffer]",WC="[object DataView]",qC="[object Float32Array]",$C="[object Float64Array]",YC="[object Int8Array]",XC="[object Int16Array]",KC="[object Int32Array]",QC="[object Uint8Array]",ZC="[object Uint8ClampedArray]",JC="[object Uint16Array]",eO="[object Uint32Array]";function tO(n,r,e){var t=n.constructor;switch(r){case HC:return aa(n);case LC:case VC:return new t(+n);case WC:return Ry(n,e);case qC:case $C:case YC:case XC:case KC:case QC:case ZC:case JC:case eO:return Fy(n,e);case zC:return new t;case GC:case kC:return new t(n);case FC:return Ly(n);case jC:return new t;case UC:return Gy(n)}}var jy=tO;function rO(n){return typeof n.constructor=="function"&&!qi(n)?mm(ta(n)):{}}var ky=rO;var oO="[object Map]";function nO(n){return er(n)&&Wo(n)==oO}var Uy=nO;var Hy=Uo&&Uo.isMap,iO=Hy?Yi(Hy):Uy,Wy=iO;var aO="[object Set]";function sO(n){return er(n)&&Wo(n)==aO}var qy=sO;var $y=Uo&&Uo.isSet,lO=$y?Yi($y):qy,Yy=lO;var cO=1,uO=2,dO=4,Xy="[object Arguments]",pO="[object Array]",fO="[object Boolean]",hO="[object Date]",mO="[object Error]",Ky="[object Function]",yO="[object GeneratorFunction]",gO="[object Map]",xO="[object Number]",Qy="[object Object]",bO="[object RegExp]",vO="[object Set]",SO="[object String]",wO="[object Symbol]",PO="[object WeakMap]",CO="[object ArrayBuffer]",OO="[object DataView]",AO="[object Float32Array]",TO="[object Float64Array]",IO="[object Int8Array]",MO="[object Int16Array]",EO="[object Int32Array]",NO="[object Uint8Array]",DO="[object Uint8ClampedArray]",_O="[object Uint16Array]",BO="[object Uint32Array]",ut={};ut[Xy]=ut[pO]=ut[CO]=ut[OO]=ut[fO]=ut[hO]=ut[AO]=ut[TO]=ut[IO]=ut[MO]=ut[EO]=ut[gO]=ut[xO]=ut[Qy]=ut[bO]=ut[vO]=ut[SO]=ut[wO]=ut[NO]=ut[DO]=ut[_O]=ut[BO]=!0;ut[mO]=ut[Ky]=ut[PO]=!1;function Bc(n,r,e,t,o,i){var a,s=r&cO,l=r&uO,c=r&dO;if(e&&(a=o?e(n,t,o,i):e(n)),a!==void 0)return a;if(!qt(n))return n;var u=Ct(n);if(u){if(a=By(n),!s)return gm(n,a)}else{var p=Wo(n),d=p==Ky||p==yO;if(ci(n))return Cy(n,s);if(p==Qy||p==Xy||d&&!o){if(a=l||d?{}:ky(n),!s)return l?Iy(n,by(a,n)):Ty(n,xy(a,n))}else{if(!ut[p])return o?n:{};a=jy(n,p,s)}}i||(i=new oa);var f=i.get(n);if(f)return f;i.set(n,a),Yy(n)?n.forEach(function(y){a.add(Bc(y,r,e,y,n,i))}):Wy(n)&&n.forEach(function(y,b){a.set(b,Bc(y,r,e,b,n,i))});var h=c?l?Ec:Xs:l?Ki:Xi,m=u?void 0:h(n);return wm(m||n,function(y,b){m&&(b=y,y=n[b]),Hi(a,b,Bc(y,r,e,b,n,i))}),a}var Rc=Bc;var RO=1,LO=4;function VO(n){return Rc(n,RO|LO)}var qo=VO;var zO="__lodash_hash_undefined__";function GO(n){return this.__data__.set(n,zO),this}var Zy=GO;function FO(n){return this.__data__.has(n)}var Jy=FO;function Lc(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new ui;++r<e;)this.add(n[r])}Lc.prototype.add=Lc.prototype.push=Zy;Lc.prototype.has=Jy;var eg=Lc;function jO(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 tg=jO;function kO(n,r){return n.has(r)}var rg=kO;var UO=1,HO=2;function WO(n,r,e,t,o,i){var a=e&UO,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,f=e&HO?new eg:void 0;for(i.set(n,r),i.set(r,n);++p<s;){var h=n[p],m=r[p];if(t)var y=a?t(m,h,p,r,n,i):t(h,m,p,n,r,i);if(y!==void 0){if(y)continue;d=!1;break}if(f){if(!tg(r,function(b,S){if(!rg(f,S)&&(h===b||o(h,b,e,t,i)))return f.push(S)})){d=!1;break}}else if(!(h===m||o(h,m,e,t,i))){d=!1;break}}return i.delete(n),i.delete(r),d}var Vc=WO;function qO(n){var r=-1,e=Array(n.size);return n.forEach(function(t,o){e[++r]=[o,t]}),e}var og=qO;function $O(n){var r=-1,e=Array(n.size);return n.forEach(function(t){e[++r]=t}),e}var ng=$O;var YO=1,XO=2,KO="[object Boolean]",QO="[object Date]",ZO="[object Error]",JO="[object Map]",eA="[object Number]",tA="[object RegExp]",rA="[object Set]",oA="[object String]",nA="[object Symbol]",iA="[object ArrayBuffer]",aA="[object DataView]",ig=Wt?Wt.prototype:void 0,gp=ig?ig.valueOf:void 0;function sA(n,r,e,t,o,i,a){switch(e){case aA:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case iA:return!(n.byteLength!=r.byteLength||!i(new ia(n),new ia(r)));case KO:case QO:case eA:return Ui(+n,+r);case ZO:return n.name==r.name&&n.message==r.message;case tA:case oA:return n==r+"";case JO:var s=og;case rA:var l=t&YO;if(s||(s=ng),n.size!=r.size&&!l)return!1;var c=a.get(n);if(c)return c==r;t|=XO,a.set(n,r);var u=Vc(s(n),s(r),t,o,i,a);return a.delete(n),u;case nA:if(gp)return gp.call(n)==gp.call(r)}return!1}var ag=sA;var lA=1,cA=Object.prototype,uA=cA.hasOwnProperty;function dA(n,r,e,t,o,i){var a=e&lA,s=Xs(n),l=s.length,c=Xs(r),u=c.length;if(l!=u&&!a)return!1;for(var p=l;p--;){var d=s[p];if(!(a?d in r:uA.call(r,d)))return!1}var f=i.get(n),h=i.get(r);if(f&&h)return f==r&&h==n;var m=!0;i.set(n,r),i.set(r,n);for(var y=a;++p<l;){d=s[p];var b=n[d],S=r[d];if(t)var P=a?t(S,b,d,r,n,i):t(b,S,d,n,r,i);if(!(P===void 0?b===S||o(b,S,e,t,i):P)){m=!1;break}y||(y=d=="constructor")}if(m&&!y){var C=n.constructor,v=r.constructor;C!=v&&"constructor"in n&&"constructor"in r&&!(typeof C=="function"&&C instanceof C&&typeof v=="function"&&v instanceof v)&&(m=!1)}return i.delete(n),i.delete(r),m}var sg=dA;var pA=1,lg="[object Arguments]",cg="[object Array]",zc="[object Object]",fA=Object.prototype,ug=fA.hasOwnProperty;function hA(n,r,e,t,o,i){var a=Ct(n),s=Ct(r),l=a?cg:Wo(n),c=s?cg:Wo(r);l=l==lg?zc:l,c=c==lg?zc:c;var u=l==zc,p=c==zc,d=l==c;if(d&&ci(n)){if(!ci(r))return!1;a=!0,u=!1}if(d&&!u)return i||(i=new oa),a||wc(n)?Vc(n,r,e,t,o,i):ag(n,r,l,e,t,o,i);if(!(e&pA)){var f=u&&ug.call(n,"__wrapped__"),h=p&&ug.call(r,"__wrapped__");if(f||h){var m=f?n.value():n,y=h?r.value():r;return i||(i=new oa),o(m,y,e,t,i)}}return d?(i||(i=new oa),sg(n,r,e,t,o,i)):!1}var dg=hA;function pg(n,r,e,t,o){return n===r?!0:n==null||r==null||!er(n)&&!er(r)?n!==n&&r!==r:dg(n,r,e,t,pg,o)}var fg=pg;function mA(n,r){return n!=null&&r in Object(n)}var hg=mA;function yA(n,r,e){r=Lr(r,n);for(var t=-1,o=r.length,i=!1;++t<o;){var a=wn(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&&Wi(o)&&ki(a,o)&&(Ct(n)||$i(n)))}var mg=yA;function gA(n,r){return n!=null&&mg(n,r,hg)}var yg=gA;var xA=function(){return Pt.Date.now()},Gc=xA;var bA="Expected a function",vA=Math.max,SA=Math.min;function wA(n,r,e){var t,o,i,a,s,l,c=0,u=!1,p=!1,d=!0;if(typeof n!="function")throw new TypeError(bA);r=pp(r)||0,qt(e)&&(u=!!e.leading,p="maxWait"in e,i=p?vA(pp(e.maxWait)||0,r):i,d="trailing"in e?!!e.trailing:d);function f(A){var T=t,g=o;return t=o=void 0,c=A,a=n.apply(g,T),a}function h(A){return c=A,s=setTimeout(b,r),u?f(A):a}function m(A){var T=A-l,g=A-c,D=r-T;return p?SA(D,i-g):D}function y(A){var T=A-l,g=A-c;return l===void 0||T>=r||T<0||p&&g>=i}function b(){var A=Gc();if(y(A))return S(A);s=setTimeout(b,m(A))}function S(A){return s=void 0,d&&t?f(A):(t=o=void 0,a)}function P(){s!==void 0&&clearTimeout(s),c=0,t=l=o=s=void 0}function C(){return s===void 0?a:S(Gc())}function v(){var A=Gc(),T=y(A);if(t=arguments,o=this,l=A,T){if(s===void 0)return h(l);if(p)return clearTimeout(s),s=setTimeout(b,r),f(l)}return s===void 0&&(s=setTimeout(b,r)),a}return v.cancel=P,v.flush=C,v}var Fc=wA;function PA(n){var r=n==null?0:n.length;return r?n[r-1]:void 0}var gg=PA;function CA(n,r){return r.length<2?n:Oc(n,py(r,0,-1))}var xg=CA;function OA(n,r){return fg(n,r)}var xp=OA;function AA(n,r){return r=Lr(r,n),n=xg(n,r),n==null||delete n[wn(gg(r))]}var bg=AA;function TA(n){return dy(n)?void 0:n}var vg=TA;var IA=1,MA=2,EA=4,NA=Ac(function(n,r){var e={};if(n==null)return e;var t=!1;r=yc(r,function(i){return i=Lr(i,n),t||(t=i.length>1),i}),xo(n,Ec(n),e),t&&(e=Rc(e,IA|MA|EA,vg));for(var o=r.length;o--;)bg(e,r[o]);return e}),sa=NA;function DA(n,r,e,t){if(!qt(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=wn(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=qt(u)?u:ki(r[o+1])?[]:{})}Hi(s,l,c),s=s[l]}return n}var Sg=DA;function _A(n,r,e){for(var t=-1,o=r.length,i={};++t<o;){var a=r[t],s=Oc(n,a);e(s,a)&&Sg(i,Lr(a,n),s)}return i}var wg=_A;function BA(n,r){return wg(n,r,function(e,t){return yg(n,t)})}var Pg=BA;var RA=Ac(function(n,r){return n==null?{}:Pg(n,r)}),Jr=RA;var he=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,he.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,he.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,he.prototype),delete i[t],{data:i,actual:r,reverse:{type:1,id:t,data:o}}}}return null}};function Ks(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"&&Ks(t)}return Object.freeze(n)}function Cg(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 la=class extends Error{};function jc(n){let r={...n};return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}function bo(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 ca(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 Og(){return typeof process<"u"}function Ag(n,r){for(let e of n)r(e.id,e.data)!==!0&&Ag(e.children,r)}function Tg(n,r){if(r(n.id,n.data)!==!0)for(let e of n.children)Tg(e,r)}var st=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,st.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Ks(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&&Tg(o,t)}}traverse(e){Ag(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,f)=>d.fi-f.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 f=t;for(;f!==null;){if(f===void 0)throw new Error;if(f===i)throw new la("cyclic tree");f=this.parent(f)}}let a=this.parent(i);if(a===void 0)return null;let s=a,l=this.childrenArray(a),c=l.findIndex(f=>f.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((f,h)=>f.fi-h.fi),e.localIndex=l.indexOf(u),p=p.modifyArrayBy(a,l),{data:p,actual:e,reverse:{type:9,parent:s,fi:d,id: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)=>Cg(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 bo(0,o,o);{let a=i[0].fi;return bo(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 bo(l,l+o,o)}else return bo(a.fi,s.fi,o)}}};var ua;(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})(ua||(ua={}));var ve=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,ve.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Ks(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,ve.prototype);let t=e;return Og()||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 bo(0,t,t);{let i=o[0].fi;return bo(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 bo(s,s+t,t)}else return bo(i.fi,a.fi,t)}}};function da(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&&!da(t))return null;o+=1}t=t?jc(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=jc(l),delete t[r.path[o-1]])}else{let l=e[o-1];if(l){let c=jc(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}}},vo;(t=>{function n(o,i){return Qs(o,i)??o}t.apply=n;function r(o,i){return vp(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=ct.zoomOnce(l,s[a]),l===void 0)return i;if(!da(l))return;a+=1}if(l===void 0)return i;if(!!da(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=bp([i],l);return c?(console.log(c),c):i}else return i}t.filterOp=e})(vo||(vo={}));function bp(n,r){if(r===void 0)return;let e=!1,t=n.map(o=>{let i=o.id,a=Qs(o.data,r[i]);if(e=e||a!==void 0,a===void 0&&(a=o.data),o.children){let s=bp(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 LA(n,r){if(r===void 0)return;let e=!1,t=n.map(o=>{let i=o.id,a=Qs(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 Qs(n,r){if(!da(r))return r;if(n instanceof st){let e=bp(n,r);return e!==void 0&&Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e}else{if(n instanceof ve)return LA(n,r);if(Array.isArray(n)){let e=!1,t=n.map((o,i)=>{let a=Qs(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 vp(n,r);if(n&&typeof n=="object"){let e={},t=!1;for(let[o,i]of Object.entries(n)){let a=Qs(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 vp(n,r){if(n===void 0)return r;if(r===void 0)return n;if(!da(r))return r;if(!da(n))return vo.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=vp(n===void 0?void 0:n[o],r===void 0?void 0:r[o]);t[o]=i}return t}function Ig(n,r){let e={cur:[],result:[],len:0};return n=Zs(n,r,e)??n,[n,e.result]}function kc(n,r){return n===null?null:(n.cur[n.len]=r,n.len+=1,n)}function Uc(n){n&&(n.len-=1)}function VA(n){if(n===null)return null;n.result.push(n.cur.slice(0,n.len))}function Mg(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=Zs(i.data,r,kc(e,a));Uc(e),t=t||l!==void 0,l===void 0&&(l=i.data);let c=Mg(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 zA(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=Zs(i.data,r,kc(e,a));return Uc(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 Zs(n,r,e){if(n instanceof st){let t=Mg(n,r,e);return t!==void 0&&Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}else{if(n instanceof ve)return zA(n,r,e);if(Array.isArray(n)){let t=!1,o=n.map((i,a)=>{let s=Zs(i,r,kc(e,a));return Uc(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"&&!ca(n)){let t={},o=!1;for(let[i,a]of Object.entries(n))if(i!=="name"&&i!=="variableId"){let s=r[i];if(typeof s=="string"){if(e!==null)throw new Error("not supported");o=!0,i=s}let l=Zs(a,r,kc(e,i));Uc(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&&VA(e),t}else return}}var pa;(r=>{function n(e,t){let o=ct.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})(pa||(pa={}));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 ve||l instanceof he?d=l.runOp(c):d=ua.runOp(l,c)),d!==void 0)if(d!==null){let m=d.data;for(let y=p.length-1;y>=0;y--){let b=u[y],S=p[y];if(S instanceof st){if(typeof b=="number")throw new Error("illegal arg");m=S.modifyById(b,m)}else if(S instanceof ve){if(typeof b=="number")throw new Error("illegal arg");m=S.modifyById(b,m)}else if(S instanceof he){if(typeof b=="number")throw new Error("illegal arg");m=S.modifyById(b,m)}else if(S instanceof lt){let P={...S,[b]:m};m=Object.setPrototypeOf(P,lt.prototype)}else if(typeof S=="object")if(Array.isArray(S)){if(typeof b=="string"&&(b=parseInt(b),isNaN(b)))throw new Error("Invalid path");let P=m;m=[...S],m[b]=P}else m={...S,[b]:m};else return null}return{data:m,actual:{...d.actual,path:u},reverse:{...d.reverse,path:u}}}else return null;let f=u[p.length],h;if(l instanceof st){if(typeof f=="number")throw new Error("");h=l.get(f)?.data}else if(l instanceof ve){if(typeof f=="number")throw new Error("");h=l.get(f)?.data}else l!==null&&(h=l[f]);if(h!==void 0)p.push(l),l=h;else return null}}s.apply=e;function 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 Js;(l=>{function n(){return[]}l.empty=n;function r(c,u){let p=[];for(let d of c){let[f,...h]=d.path;f===u&&p.push({...d,path:h})}return p}l.removePrefix=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(f=>gt.subsumed(d,f))),...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=[],f=[];for(let h of u)try{if(h.type===3||h.type===5&&h.path[h.path.length-1]==="variables"){let m,y,b;if(h.type===3?(m=ct.zoom(p,[...h.path,h.id]),b=gt.apply(p,{...h,type:2})):(m=ct.zoom(p,[...h.path,h.id,"value"]),b=gt.apply(p,h)),b!==null){p=b.data;let[S,P]=Ig(p,{[h.id]:m});p=S;for(let C=0;C<P.length;C++){let v=P[C],A=v.pop();if(typeof A=="number"){let T=[A];for(let D=C+1;D<P.length;D++){let E=P[D],M=E[E.length-1];if(typeof M=="number"&&ct.equal(v,E.slice(0,E.length-1)))T.push(M),P.splice(D,1);else break}let g=ct.zoom(p,v);y=g.map((D,E)=>T.includes(E)?h.id:D),m=g,A=v.pop()}else{if(A==="alphaOverride"||A==="alpha"){m/=100;let T=m,g=ct.zoom(p,v.slice(0,v.length-2)),D=g.layers.map(E=>E.id===v[v.length-1]?{...E,data:{...E.data,[A]:T}}:E);Object.setPrototypeOf(D,Object.getPrototypeOf(g.layers)),g.layers=D}y=h.id}d.push({type:0,path:v,props:{[A]:m}}),f.push({type:0,path:v,props:{[A]:y}})}f.push(b.reverse),d.push(b.actual)}}else{let m=gt.apply(p,h);m!==null&&(d.push(m.actual),p=m.data,f.push(m.reverse))}}catch(m){if(m instanceof la)return null;throw m}return{data:p,actual:d,reverse:f.reverse()}}l.apply=s})(Js||(Js={}));var Eg=Symbol(),GA=Symbol(),Wc=Symbol(),pi=class{reportOp(r,e,t=[]){let o=this;if(e===null)return;o._current=e.data;let i=t;for(;!(o instanceof Hc);){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[Wc];t&&t(),delete this._children[r]}}}},wp=class extends pi{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,ua.runOp(this._current,r),r.path)}},Pp=class extends pi{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,he.prototype)}runOp(r){this.reportOp(r,this._current.runOp(r))}},Ng={get(n,r){if(r===Wc)return()=>{n._parent=null};if(r===Eg)return n._current;if(r===GA)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=qc(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]}}},FA={...Ng,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}},jA={...Ng,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}},fa=class extends pi{constructor(r,e,t){super(),this._children={},this._parent=r,this._path=e,this._current=t,this[Wc]=()=>{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=qc(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)}},ha=class extends pi{constructor(r,e,t){super(),this._children={},this._parent=r,this._path=e,this._current=t,this[Wc]=()=>{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=qc(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 Sp(n,r,e){if(n.length>0){let t=n[n.length-1];if(t.type===0&&r.type===0&&ct.equal(t.path,e)){Object.assign(t.props,r.props);return}}n.push({...r,path:e})}var Hc=class extends pi{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){Sp(this.ts,e,r),Sp(this.actual,t,r),Sp(this.reverse,o,r)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function qc(n,r,e){return e instanceof st?new fa(n,r,e):e instanceof ve?new ha(n,r,e):e instanceof he?new Proxy(new Pp(n,r,e),jA):e!==null&&typeof e=="object"?ca(e)?e:new Proxy(new wp(n,r,e),FA):e}function Cp(n){let r=new Hc(n);return[qc(r,"",n),r]}function Pn(n,r){let[e,t]=Cp(n);return r(e),t.result()}function xt(n){return n instanceof fa||n instanceof ha?n._current:n!==null&&typeof n=="object"?n[Eg]:n}var ct;(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 fa)&&typeof a=="string")return i.data(a);if((i instanceof ve||i instanceof ha)&&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})(ct||(ct={}));function Dg(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 Fe(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 $c=class{},el=class extends $c{constructor(e){super();this.id=e}},tl=class extends $c{constructor(e){super();this.data=e}};var Ap;try{Ap=new TextDecoder}catch{}var de,On,G=0;var Fg=[],Tp=Fg,Ip=0,gr={},Ke,Cn,Vr=0,So=0,Mr,$o,ur=[],et,_g={useRecords:!1,mapsAsObjects:!0},rl=class{},Ep=new rl;Ep.name="MessagePack 0xC1";var ma=!1,wo=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 Wg(()=>(Xc(),this?this.unpack(r,e):wo.prototype.unpack.call(_g,r,e)));On=e>-1?e:r.length,G=0,Ip=0,So=0,Cn=null,Tp=Fg,Mr=null,de=r;try{et=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 wo){if(gr=this,this.structures)return Ke=this.structures,Yc();(!Ke||Ke.length>0)&&(Ke=[])}else gr=_g,(!Ke||Ke.length>0)&&(Ke=[]);return Yc()}unpackMultiple(r,e){let t,o=0;try{ma=!0;let i=r.length,a=this?this.unpack(r,i):Zc.unpack(r,i);if(e){for(e(a);G<i;)if(o=G,e(Yc())===!1)return}else{for(t=[a];G<i;)o=G,t.push(Yc());return t}}catch(i){throw i.lastPosition=o,i.values=t,i}finally{ma=!1,Xc()}}_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 Yc(){try{if(!gr.trusted&&!ma){let r=Ke.sharedLength||0;r<Ke.length&&(Ke.length=r)}let n=Ot();if(G==On)Ke.restoreStructures&&Bg(),Ke=null,de=null,$o&&($o=null);else if(G>On){let r=new Error("Unexpected end of MessagePack data");throw r.incomplete=!0,r}else if(!ma)throw new Error("Data read, but end of buffer not reached");return n}catch(n){throw Ke.restoreStructures&&Bg(),Xc(),(n instanceof RangeError||n.message.startsWith("Unexpected end of buffer"))&&(n.incomplete=!0),n}}function Bg(){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]||gr.getStructures&&jg()[n&63];return r?(r.read||(r.read=Np(r,n&63)),r.read()):n}}else if(n<144)if(n-=128,gr.mapsAsObjects){let r={};for(let e=0;e<n;e++)r[Ug()]=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(So>=G)return Cn.slice(G-Vr,(G+=r)-Vr);if(So==0&&On<140){let e=r<16?Dp(r):kg(r);if(e!=null)return e}return Mp(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)):Ep;case 194:return!1;case 195:return!0;case 196:return Op(de[G++]);case 197:return r=et.getUint16(G),G+=2,Op(r);case 198:return r=et.getUint32(G),G+=4,Op(r);case 199:return fi(de[G++]);case 200:return r=et.getUint16(G),G+=2,fi(r);case 201:return r=et.getUint32(G),G+=4,fi(r);case 202:if(r=et.getFloat32(G),gr.useFloat32>2){let e=Qc[(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=et.getFloat64(G),G+=8,r;case 204:return de[G++];case 205:return r=et.getUint16(G),G+=2,r;case 206:return r=et.getUint32(G),G+=4,r;case 207:return gr.int64AsNumber?(r=et.getUint32(G)*4294967296,r+=et.getUint32(G+4)):r=et.getBigUint64(G),G+=8,r;case 208:return et.getInt8(G++);case 209:return r=et.getInt16(G),G+=2,r;case 210:return r=et.getInt32(G),G+=4,r;case 211:return gr.int64AsNumber?(r=et.getInt32(G)*4294967296,r+=et.getUint32(G+4)):r=et.getBigInt64(G),G+=8,r;case 212:if(r=de[G++],r==114)return Gg(de[G++]&63);{let e=ur[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++,Gg(de[G++]&63,de[G++])):fi(2);case 214:return fi(4);case 215:return fi(8);case 216:return fi(16);case 217:return r=de[G++],So>=G?Cn.slice(G-Vr,(G+=r)-Vr):UA(r);case 218:return r=et.getUint16(G),G+=2,So>=G?Cn.slice(G-Vr,(G+=r)-Vr):HA(r);case 219:return r=et.getUint32(G),G+=4,So>=G?Cn.slice(G-Vr,(G+=r)-Vr):WA(r);case 220:return r=et.getUint16(G),G+=2,Lg(r);case 221:return r=et.getUint32(G),G+=4,Lg(r);case 222:return r=et.getUint16(G),G+=2,Vg(r);case 223:return r=et.getUint32(G),G+=4,Vg(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 kA=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function Np(n,r){function e(){if(e.count++>2){let o=n.read=new Function("r","return function(){return {"+n.map(i=>kA.test(i)?i+":r()":"["+JSON.stringify(i)+"]:r()").join(",")+"}}")(Ot);return n.highByte===0&&(n.read=Rg(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?Rg(r,e):e}var Rg=(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]||jg()[t];if(!o)throw new Error("Record id is not defined for "+t);return o.read||(o.read=Np(o,n)),o.read()};function jg(){let n=Wg(()=>(de=null,gr.getStructures()));return Ke=gr._mergeStructures(n,Ke)}var Mp=Kc,UA=Kc,HA=Kc,WA=Kc;function Kc(n){let r;if(n<16&&(r=Dp(n)))return r;if(n>64&&Ap)return Ap.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+=$t.apply(String,t),t.length=0)}return t.length>0&&(r+=$t.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 Vg(n){if(gr.mapsAsObjects){let r={};for(let e=0;e<n;e++)r[Ug()]=Ot();return r}else{let r=new Map;for(let e=0;e<n;e++)r.set(Ot(),Ot());return r}}var $t=String.fromCharCode;function kg(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 $t.apply(String,e)}function Dp(n){if(n<4)if(n<2){if(n===0)return"";{let r=de[G++];if((r&128)>1){G-=1;return}return $t(r)}}else{let r=de[G++],e=de[G++];if((r&128)>0||(e&128)>0){G-=2;return}if(n<3)return $t(r,e);let t=de[G++];if((t&128)>0){G-=3;return}return $t(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 $t(r,e,t,o);{let i=de[G++];if((i&128)>0){G-=5;return}return $t(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 $t(r,e,t,o,i,a);let s=de[G++];if((s&128)>0){G-=7;return}return $t(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 $t(r,e,t,o,i,a,s,l);{let c=de[G++];if((c&128)>0){G-=9;return}return $t(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 $t(r,e,t,o,i,a,s,l,c,u);let p=de[G++];if((p&128)>0){G-=11;return}return $t(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 $t(r,e,t,o,i,a,s,l,c,u,p,d);{let f=de[G++];if((f&128)>0){G-=13;return}return $t(r,e,t,o,i,a,s,l,c,u,p,d,f)}}else{let f=de[G++],h=de[G++];if((f&128)>0||(h&128)>0){G-=14;return}if(n<15)return $t(r,e,t,o,i,a,s,l,c,u,p,d,f,h);let m=de[G++];if((m&128)>0){G-=15;return}return $t(r,e,t,o,i,a,s,l,c,u,p,d,f,h,m)}}}}}function Op(n){return gr.copyBuffers?Uint8Array.prototype.slice.call(de,G,G+=n):de.subarray(G,G+=n)}function fi(n){let r=de[G++];if(ur[r])return ur[r](de.subarray(G,G+=n));throw new Error("Unknown extension type "+r)}var zg=new Array(4096);function Ug(){let n=de[G++];if(n>=160&&n<192){if(n=n-160,So>=G)return Cn.slice(G-Vr,(G+=n)-Vr);if(!(So==0&&On<180))return Mp(n)}else return G--,Ot();let r=(n<<5^(n>1?et.getUint16(G):n>0?de[G]:0))&4095,e=zg[r],t=G,o=G+n-3,i,a=0;if(e&&e.bytes==n){for(;t<o;){if(i=et.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=[],zg[r]=e,e.bytes=n;t<o;)i=et.getUint32(t),e.push(i),t+=4;for(o+=3;t<o;)i=de[t++],e.push(i);let s=n<16?Dp(n):kg(n);return s!=null?e.string=s:e.string=Mp(n)}var Gg=(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=Np(e,t),e.read()},Hg=typeof self=="object"?self:global;ur[0]=()=>{};ur[0].noBuffer=!0;ur[101]=()=>{let n=Ot();return(Hg[n[0]]||Error)(n[1])};ur[105]=n=>{let r=et.getUint32(G-4);$o||($o=new Map);let e=de[G],t;e>=144&&e<160||e==220||e==221?t=[]:t={};let o={target:t};$o.set(r,o);let i=Ot();return o.used?Object.assign(t,i):(o.target=i,i)};ur[112]=n=>{let r=et.getUint32(G-4),e=$o.get(r);return e.used=!0,e.target};ur[115]=()=>new Set(Ot());var _p=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(n=>n+"Array");ur[116]=n=>{let r=n[0],e=_p[r];if(!e)throw new Error("Could not find typed array for code "+r);return new Hg[e](Uint8Array.prototype.slice.call(n,1).buffer)};ur[120]=()=>{let n=Ot();return new RegExp(n[0],n[1])};ur[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}};ur[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 Wg(n){let r=On,e=G,t=Ip,o=Vr,i=So,a=Cn,s=Tp,l=$o,c=Mr,u=new Uint8Array(de.slice(0,On)),p=Ke,d=Ke.slice(0,Ke.length),f=gr,h=ma,m=n();return On=r,G=e,Ip=t,Vr=o,So=i,Cn=a,Tp=s,$o=l,Mr=c,de=u,ma=h,Ke=p,Ke.splice(0,Ke.length,...d),gr=f,et=new DataView(de.buffer,de.byteOffset,de.byteLength),m}function Xc(){de=null,$o=null,Ke=null}function qg(n){n.unpack?ur[n.type]=n.unpack:ur[n.type]=n}var Qc=new Array(147);for(let n=0;n<256;n++)Qc[n]=+("1e"+Math.floor(45.15-n*.30103));var Zc=new wo({useRecords:!1}),qA=Zc.unpack,$A=Zc.unpackMultiple,YA=Zc.unpack,Jc={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},XA=new Float32Array(1),QG=new Uint8Array(XA.buffer,0,4);var eu;try{eu=new TextEncoder}catch{}var tu,Rp,ru=typeof Buffer<"u",Bp=ru?Buffer.allocUnsafeSlow:Uint8Array,Kg=ru?Buffer:Uint8Array,$g=ru?4294967296:2144337920,Y,Mt,U=0,Po,Co=null,KA=/[\u0080-\uFFFF]/,ol=Symbol("record-id"),hi=class extends wo{constructor(r){super(r),this.offset=0;let e,t,o,i,a,s,l=0,c=Kg.prototype.utf8Write?function(g,D,E){return Y.utf8Write(g,D,E)}:eu&&eu.encodeInto?function(g,D){return eu.encodeInto(g,Y.subarray(D)).written}:!1,u=this;r||(r={});let p=r&&r.sequential,d=r.structures||r.saveStructures,f=r.maxSharedStructures;if(f==null&&(f=d?32:0),f>8160)throw new Error("Maximum maxSharedStructure is 8160");let h=r.maxOwnStructures;h==null&&(h=d?32:64),p&&!r.saveStructures&&(this.structures=[]);let m=f>32||h+f>64,y=f+64,b=f+h+64;if(b>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let S=[],P=0,C=0;this.pack=this.encode=function(g,D){if(Y||(Y=new Bp(8192),Mt=new DataView(Y.buffer,0,8192),U=0),Po=Y.length-10,Po-U<2048?(Y=new Bp(Y.length),Mt=new DataView(Y.buffer,0,Y.length),Po=Y.length-10,U=0):U=U+7&2147483640,t=U,s=u.structuredClone?new Map:null,u.bundleStrings?(Co=["",""],Y[U++]=214,Y[U++]=98,Co.position=U-t,U+=4):Co=null,o=u.structures,o){o.uninitialized&&(o=u._mergeStructures(u.getStructures()));let E=o.sharedLength||0;if(E>f)throw new Error("Shared structures is larger than maximum shared structures, try increasing maxSharedStructures to "+o.sharedLength);if(!o.transitions){o.transitions=Object.create(null);for(let M=0;M<E;M++){let N=o[M];if(!N)continue;let _,B=o.transitions;for(let V=0,k=N.length;V<k;V++){let L=N[V];_=B[L],_||(_=B[L]=Object.create(null)),B=_}B[ol]=M+64}l=E}p||(o.nextId=E+64)}i&&(i=!1),a=o||[];try{if(v(g),Co){Mt.setUint32(Co.position+t,U-Co.position-t);let E=Co;Co=null,v(E[0]),v(E[1])}if(u.offset=U,s&&s.idsToInsert){U+=s.idsToInsert.length*6,U>Po&&T(U),u.offset=U;let E=ZA(Y.subarray(t,U),s.idsToInsert);return s=null,E}return D&Zg?(Y.start=t,Y.end=U,Y):Y.subarray(t,U)}finally{if(o){if(C<10&&C++,P>1e4)o.transitions=null,C=0,P=0,S.length>0&&(S=[]);else if(S.length>0&&!p){for(let E=0,M=S.length;E<M;E++)S[E][ol]=0;S=[]}if(i&&u.saveStructures){let E=o.sharedLength||f;o.length>E&&(o=o.slice(0,E));let M=Y.subarray(t,U);return u.saveStructures(o,l)===!1?(u._mergeStructures(u.getStructures()),u.pack(g)):(l=E,M)}}D&iT&&(U=t)}};let v=g=>{U>Po&&(Y=T(U));var D=typeof g,E;if(D==="string"){let M=g.length;if(Co&&M>=8&&M<4096){let B=KA.test(g);Co[B?0:1]+=g,Y[U++]=193,v(B?-M:M);return}let N;M<32?N=1:M<256?N=2:M<65536?N=3:N=5;let _=M*3;if(U+_>Po&&(Y=T(U+_)),M<64||!c){let B,V,k,L=U+N;for(B=0;B<M;B++)V=g.charCodeAt(B),V<128?Y[L++]=V:V<2048?(Y[L++]=V>>6|192,Y[L++]=V&63|128):(V&64512)===55296&&((k=g.charCodeAt(B+1))&64512)===56320?(V=65536+((V&1023)<<10)+(k&1023),B++,Y[L++]=V>>18|240,Y[L++]=V>>12&63|128,Y[L++]=V>>6&63|128,Y[L++]=V&63|128):(Y[L++]=V>>12|224,Y[L++]=V>>6&63|128,Y[L++]=V&63|128);E=L-U-N}else E=c(g,U+N,_);E<32?Y[U++]=160|E:E<256?(N<2&&Y.copyWithin(U+2,U+1,U+1+E),Y[U++]=217,Y[U++]=E):E<65536?(N<3&&Y.copyWithin(U+3,U+2,U+2+E),Y[U++]=218,Y[U++]=E>>8,Y[U++]=E&255):(N<5&&Y.copyWithin(U+5,U+3,U+3+E),Y[U++]=219,Mt.setUint32(U,E),U+=4),U+=E}else if(D==="number")if(g>>>0===g)g<64?Y[U++]=g:g<256?(Y[U++]=204,Y[U++]=g):g<65536?(Y[U++]=205,Y[U++]=g>>8,Y[U++]=g&255):(Y[U++]=206,Mt.setUint32(U,g),U+=4);else if(g>>0===g)g>=-32?Y[U++]=256+g:g>=-128?(Y[U++]=208,Y[U++]=g+256):g>=-32768?(Y[U++]=209,Mt.setInt16(U,g),U+=2):(Y[U++]=210,Mt.setInt32(U,g),U+=4);else{let M;if((M=this.useFloat32)>0&&g<4294967296&&g>=-2147483648){Y[U++]=202,Mt.setFloat32(U,g);let N;if(M<4||(N=g*Qc[(Y[U]&127)<<1|Y[U+1]>>7])>>0===N){U+=4;return}else U--}Y[U++]=203,Mt.setFloat64(U,g),U+=8}else if(D==="object")if(!g)Y[U++]=192;else{if(s){let N=s.get(g);if(N){if(!N.id){let _=s.idsToInsert||(s.idsToInsert=[]);N.id=_.push(N)}Y[U++]=214,Y[U++]=112,Mt.setUint32(U,N.id),U+=4;return}else s.set(g,{offset:U-t})}let M=g.constructor;if(M===Object)A(g,!0);else if(M===Array){E=g.length,E<16?Y[U++]=144|E:E<65536?(Y[U++]=220,Y[U++]=E>>8,Y[U++]=E&255):(Y[U++]=221,Mt.setUint32(U,E),U+=4);for(let N=0;N<E;N++)v(g[N])}else if(M===Map){E=g.size,E<16?Y[U++]=128|E:E<65536?(Y[U++]=222,Y[U++]=E>>8,Y[U++]=E&255):(Y[U++]=223,Mt.setUint32(U,E),U+=4);for(let[N,_]of g)v(N),v(_)}else{for(let N=0,_=tu.length;N<_;N++){let B=Rp[N];if(g instanceof B){let V=tu[N];if(V.write){V.type&&(Y[U++]=212,Y[U++]=V.type,Y[U++]=0),v(V.write.call(this,g));return}let k=Y,L=Mt,W=U;Y=null;let F;try{F=V.pack.call(this,g,j=>(Y=k,k=null,U+=j,U>Po&&T(U),{target:Y,targetView:Mt,position:U-j}),v)}finally{k&&(Y=k,Mt=L,U=W,Po=Y.length-10)}F&&(F.length+U>Po&&T(F.length+U),U=QA(F,Y,U,V.type));return}}A(g,!g.hasOwnProperty)}}else if(D==="boolean")Y[U++]=g?195:194;else if(D==="bigint"){if(g<BigInt(1)<<BigInt(63)&&g>=-(BigInt(1)<<BigInt(63)))Y[U++]=211,Mt.setBigInt64(U,g);else if(g<BigInt(1)<<BigInt(64)&&g>0)Y[U++]=207,Mt.setBigUint64(U,g);else if(this.largeBigIntToFloat)Y[U++]=203,Mt.setFloat64(U,Number(g));else throw new RangeError(g+" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64");U+=8}else if(D==="undefined")this.encodeUndefinedAsNil?Y[U++]=192:(Y[U++]=212,Y[U++]=0,Y[U++]=0);else if(D==="function")v(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+D)},A=this.useRecords===!1?this.variableMapSize?g=>{let D=Object.keys(g),E=D.length;E<16?Y[U++]=128|E:E<65536?(Y[U++]=222,Y[U++]=E>>8,Y[U++]=E&255):(Y[U++]=223,Mt.setUint32(U,E),U+=4);let M;for(let N=0;N<E;N++)v(M=D[N]),v(g[M])}:(g,D)=>{Y[U++]=222;let E=U-t;U+=2;let M=0;for(let N in g)(D||g.hasOwnProperty(N))&&(v(N),v(g[N]),M++);Y[E+++t]=M>>8,Y[E+t]=M&255}:g=>{let D=Object.keys(g),E,M=a.transitions||(a.transitions=Object.create(null)),N=0;for(let B=0,V=D.length;B<V;B++){let k=D[B];E=M[k],E||(E=M[k]=Object.create(null),N++),M=E}let _=M[ol];if(_)_>=96&&m?(Y[U++]=((_-=96)&31)+96,Y[U++]=_>>5):Y[U++]=_;else{_=a.nextId,_||(_=64),_<y&&this.shouldShareStructure&&!this.shouldShareStructure(D)?(_=a.nextOwnId,_<b||(_=y),a.nextOwnId=_+1):(_>=b&&(_=y),a.nextId=_+1);let B=D.highByte=_>=96&&m?_-96>>5:-1;M[ol]=_,a[_-64]=D,_<y?(D.isShared=!0,a.sharedLength=_-63,i=!0,B>=0?(Y[U++]=(_&31)+96,Y[U++]=B):Y[U++]=_):(B>=0?(Y[U++]=213,Y[U++]=114,Y[U++]=(_&31)+96,Y[U++]=B):(Y[U++]=212,Y[U++]=114,Y[U++]=_),N&&(P+=C*N),S.length>=h&&(S.shift()[ol]=0),S.push(M),v(D))}for(let B=0,V=D.length;B<V;B++)v(g[D[B]])},T=g=>{let D;if(g>16777216){if(g-t>$g)throw new Error("Packed buffer would be larger than maximum buffer size");D=Math.min($g,Math.round(Math.max((g-t)*(g>67108864?1.25:2),4194304)/4096)*4096)}else D=(Math.max(g-t<<2,Y.length-1)>>12)+1<<12;let E=new Bp(D);return Mt=new DataView(E.buffer,0,D),Y.copy?Y.copy(E,0,t,g):E.set(Y.slice(t,g)),U-=t,t=0,Po=E.length-10,Y=E}}useBuffer(r){Y=r,Mt=new DataView(Y.buffer,Y.byteOffset,Y.byteLength),U=0}};Rp=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,rl];tu=[{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?Yg(n,16,r):Xg(ru?Buffer.from(n):new Uint8Array(n),r)}},{pack(n,r){let e=n.constructor;e!==Kg&&this.structuredClone?Yg(n,_p.indexOf(e.name),r):Xg(n,r)}},{pack(n,r){let{target:e,position:t}=r(1);e[t]=193}}];function Yg(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 Xg(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 QA(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 ZA(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 An(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)");Rp.unshift(n.Class),tu.unshift(n)}qg(n)}var Qg=new hi({useRecords:!1}),JA=Qg.pack,eT=Qg.pack;var{NEVER:tT,ALWAYS:rT,DECIMAL_ROUND:oT,DECIMAL_FIT:nT}=Jc,Zg=512,iT=1024;var Jg=new hi({structuredClone:!0});An({Class:he.prototype.constructor,type:1,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,he.prototype),n}});An({Class:ve.prototype.constructor,type:2,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,ve.prototype),n}});An({Class:st.prototype.constructor,type:3,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,st.prototype),n}});An({Class:el.prototype.constructor,type:4,write(n){return n.id},read(n){return new el(n)}});An({Class:tl.prototype.constructor,type:5,write(n){return n.data},read(n){return new tl(n)}});An({Class:lt.prototype.constructor,type:6,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,lt.prototype),n}});function aT(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 Lp(n){if(ca(n))return n;if(Array.isArray(n))return n.map(Lp);if(typeof n=="object"&&n!==null){let r={};for(let e of Object.keys(n).sort())r[e]=Lp(n[e]);return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}else return n}var ou;(t=>{function n(o){return Jg.pack(o)}t.serialize=n;function r(o){return Jg.unpack(o)}t.deserialize=r;function e(o){return aT(n(Lp(o))).toString()}t.checksum=e})(ou||(ou={}));var Mn="personal camera",En="a218fcc3-276b-49b9-b485-49037fd14f5f",ix=2960946,Et=5526619;var ya;(f=>{function n(h,m){return h[0]===m[0]&&h[1]===m[1]}f.isEqual=n;function r(h,m,y){return[h[0]+(m[0]-h[0])*y,h[1]+(m[1]-h[1])*y]}f.lerp=r;function e(h,m){return[h[0]+m[0],h[1]+m[1]]}f.add=e;function t(h,m){return[h[0]-m[0],h[1]-m[1]]}f.sub=t;function o(h,m){return[h[0]*m[0],h[1]*m[1]]}f.multiply=o;function i(h,m){return[h[0]/m[0],h[1]/m[1]]}f.divide=i;function a(h,m){return Math.pow(m[0]-h[0],2)+Math.pow(m[1]-h[1],2)}f.distanceSquared=a;function s(h,m){return Math.sqrt(a(h,m))}f.distance=s;function l(h,m){return h[0]*m[0]+h[1]*m[1]}f.dot=l;function c(h,m){return[h[0]*m,h[1]*m]}f.scalarMultiply=c;function u(h,m,y){let b=f.sub(m,h),S=f.sub(y,h),P=f.dot(b,S)/f.dot(b,b),C=f.scalarMultiply(b,P);return f.add(h,C)}f.projectionOnto=u;function p(h,m,y){return s(h,u(h,m,y))}f.projectionOntoDistance=p;function d(h,m){return[(h[0]+m[0])*.5,(h[1]+m[1])*.5]}f.center=d})(ya||(ya={}));var Tn;(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})(Tn||(Tn={}));var ex;(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})(ex||(ex={}));var tx;(a=>{let n=180/Math.PI,r=Math.PI/180;function e(s){return typeof s=="number"?s*n:s}function t(s){return typeof s=="number"?s*r:s}function o(s){return[e(s[0]),e(s[1]),e(s[2])]}a.radToDeg=o;function i(s){return[t(s[0]),t(s[1]),t(s[2])]}a.degToRad=i})(tx||(tx={}));var In;(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})(In||(In={}));var zt;(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,f){return d.r===f.r&&d.g===f.g&&d.b===f.b}p.equals=l;function c(d,f){return d.r.toFixed(2)===f.r.toFixed(2)&&d.g.toFixed(2)===f.g.toFixed(2)&&d.b.toFixed(2)===f.b.toFixed(2)}p.equalsFixed=c;function u(d,f,h){return{r:d.r+(f.r-d.r)*h,g:d.g+(f.g-d.g)*h,b:d.b+(f.b-d.b)*h}}p.lerp=u})(zt||(zt={}));var _e;(c=>{c.white={...zt.white,a:1},c.transparent={...zt.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{...zt.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 zt.equals(u,p)&&u.a===p.a}c.equals=i;function a(u,p){return zt.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:f}=c.white){return`rgba(${u*255}, ${p*255}, ${d*255}, ${f})`}c.toStyle=l})(_e||(_e={}));var nu;(r=>r.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(nu||(nu={}));var rx;(r=>r.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(rx||(rx={}));var ox;(r=>r.defaultData={control1:[.5,0],control2:[.5,1]})(ox||(ox={}));var nx;(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]))(nx||(nx={}));function Vp(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 eo;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function r(t){return e.all.includes(t)}e.is=r})(eo||(eo={}));var Nn;(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})(Nn||(Nn={}));var Oo;(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(sT.forEach(a=>{Object.assign(i,{[a]:o[a]??t[a]})}),i.radial={...t.radial},o.radial){let a=t.radial,s=o.radial;lT.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;cT.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;uT.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;dT.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;pT.forEach(l=>{Object.assign(i.randomnessObject,{[l]:s[l]??a[l]})})}return i}e.merge=r})(Oo||(Oo={}));var iu;(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})(iu||(iu={}));var sT=["count"],lT=["radius","start","end","position","scale","rotation"],cT=["position","scale","rotation"],uT=["count","size"],dT=["count","position","scale","rotation"],pT=["strength","scale","rotation","position","movement","seed","freqScale"];var au;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function r(t){return e.all.includes(t)}e.is=r})(au||(au={}));var su;(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")}})(su||(su={}));var ga;(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",emitTimeDuration:1,...t.defaultCollisionData}))(ga||(ga={}));var Dn;(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]})(Dn||(Dn={}));var zp;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function r(t,o){return t.castShadow===o.castShadow&&t.receiveShadow===o.receiveShadow}e.equals=r})(zp||(zp={}));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 lu;(r=>r.defaultData={...Gp.defaultData,...zp.defaultData})(lu||(lu={}));var ax;(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})(ax||(ax={}));var xa;(e=>(e.defaultVideo={data:"",thumb:"/_assets/_videos/catThumb.png",type:"video",name:"Cat video"},e.maxSize=3e7))(xa||(xa={}));var sx;(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})(sx||(sx={}));function cx(n){return n.type!=="displace"}var lx;(r=>{function n(e){return e==="phong"||e==="toon"||e==="lambert"||e==="physical"}r.is=n})(lx||(lx={}));var ux=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],dx=["wrapping","image","video","name","minFilter","magFilter"],Bt;(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,magFilter:1006},crop:!1};case"video":return{...a,type:"video",size:[128,128],blending:0,axis:"x",side:2,projection:0,texture:{video:xa.defaultVideo,wrapping:1001,repeat:[1,1],offset:[0,0],rotation:0,minFilter:1008,magFilter:1006},crop:!1};case"color":return{...a,type:"color",color:zt.fromHex(Et)};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:{...zt.fromHex(6710886),a:1},colorB:{...zt.fromHex(6710886),a:1},colorC:{...zt.fromHex(16777215),a:1},colorD:{...zt.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,magFilter:1006}};case"transmission":return{...a,type:"transmission",thickness:10,ior:1.5,roughness:1};case"displace":return{visible:!0,type:"displace",displacementType:"noise",noiseType:0,scale:10,movement:1,offset:[0,0,0],intensity:8,voronoiStyle:0,smoothness:.3,seed:0,highCut:1,lowCut:0,quality:1};case"pattern":return{...a,type:"pattern",style:0,projection:0,axis:"y",blending:0,offset:[0,0],colorA:{...zt.fromHex(0),a:1},colorB:{...zt.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}}}})(Bt||(Bt={}));var Yt;(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(([f,h])=>{p+=`${f}${h}`,Array.isArray(h)?h.forEach(m=>p+=`${m}`):typeof h=="object"?Object.values(h).forEach(m=>{typeof m=="number"?p+=`${m.toFixed(4)}`:p+=`${m}`}):p+=`${h}`})}),p}c.getHash=r;function e(){return{layers:new ve}}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 f=new ve;return f.push({fi:0,data:Bt.defaultData("light",u),id:p}),f.push({fi:1,data:Bt.defaultData("color"),id:d}),{layers:f}}c.defaultTwoLayerData=i;function a(u){let p=Bt.defaultData("texture");u&&Object.assign(p.texture,{image:u});let d=new ve;return d.push({fi:0,data:p,id:"layer1"}),d.push({fi:1,data:{...Bt.defaultData("transmission"),alpha:1},id:"layer2"}),d.push({fi:2,data:{...Bt.defaultData("light","lambert"),alpha:0},id:"layer3"}),{layers:d}}c.defaultUIObjectMaterial=a;function s(u,p="phong",d="layer1",f="layer2"){let h=Bt.defaultData("texture");Object.assign(h.texture,{image:u});let m=new ve;return m.push({fi:0,data:h,id:d}),m.push({fi:1,data:Bt.defaultData("light",p),id:f}),{layers:m}}c.defaultTwoLayerTextureData=s;function l(u,p="phong",d="layer1",f="layer2"){let h=Bt.defaultData("video");Object.assign(h.texture,{video:u});let m=new ve;return m.push({fi:0,data:h,id:d}),m.push({fi:1,data:Bt.defaultData("light",p),id:f}),{layers:m}}c.defaultTwoLayerVideoTextureData=l})(Yt||(Yt={}));var ba;(r=>{function n(){return{points:new ve,roundness:0,shapeHoles:[],isClosed:!1}}r.defaultData=n})(ba||(ba={}));var va;(r=>{function n(){return{points:new ve,lastInsertionPlane:null,subdivisions:12,isClosed:!1}}r.defaultData=n})(va||(va={}));var Fp={type:"Ellipse",width:50,height:50,spikes:16,angle:360,innerRadius:0};var cu;(r=>{function n(e,t){let o={...e};return fT.forEach(i=>{Object.assign(o,{[i]:t[i]??e[i]})}),o}r.merge=n})(cu||(cu={}));var uu={shape:Fp,depth:1,offset:0,bevel:50,bevelSides:6,angle:0,twist:0,startScale:1,endScale:1,capType:"flat"},fT=["depth","offset","angle","twist","startScale","endScale"];var nl;(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"||t==="InputGeometry"}e.isParametricMesh=r})(nl||(nl={}));var du;(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,cu.merge(o.extrusion,t.extrusion))),o}r.merge=n})(du||(du={}));var Yo;(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:va.defaultData(),extrusion:uu};if(e==="VectorGeometry")return{width:1,height:1,type:e,subdivisions:12,shape:ba.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",editable:!1,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="InputGeometry")return{...r.defaultData("TextGeometry"),type:e,editable:!0};if(e==="SphereGeometry")return{type:"SphereGeometry",width:100,height:100,depth:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:180};throw new Error("not implemented")}r.defaultData=n})(Yo||(Yo={}));var pu;(r=>r.defaultData={enabled:!1,useBackgroundColor:!1,color:zt.white,near:.1,far:2e3})(pu||(pu={}));var fu;(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}}})(fu||(fu={}));var jp;(r=>r.defaultData={softShadowQuality:"low"})(jp||(jp={}));var kp;(r=>r.defaultData={enabled:!0,color:{r:.8274509803921568,g:.8274509803921568,b:.8274509803921568},intensity:.75})(kp||(kp={}));var Up;(r=>r.defaultData={occlusion:!1,aoFullRes:!1,radius:256,bias:.5,aoColor:{r:.19607843137254902,g:.19607843137254902,b:.19607843137254902}})(Up||(Up={}));var il;(r=>r.defaultData={usePhysics:!1,gravity:-10})(il||(il={}));var Hp;(r=>r.defaultData={playCamera:Mn,gameControlObject:null})(Hp||(Hp={}));var hu;(r=>r.defaultData={backgroundColor:_e.fromHexAndA(ix,1),postprocessing:fu.defaultData,fog:pu.defaultData,globalPhysics:il.defaultData,ambient:kp.defaultData,ao:Up.defaultData,shadow:jp.defaultData,publish:Hp.defaultData})(hu||(hu={}));var mu;(r=>r.defaultData={colliderType:"box",size:[100,100,100],colliderHelperVisible:!0,forceType:"collider",forceRange:"global",forceIntensity:.5,forceDambing:.95})(mu||(mu={}));var px;(e=>{function n(t){return t==="Component"||t==="Instance"}e.isComponentRelated=n;function r(t){return t==="Empty"||t==="Instance"}e.isEmptyOrComponent=r})(px||(px={}));var Sa;(o=>{o.identity={...nu.identity,hiddenMatrix:In.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 pc({position:Tn.isEqual(i.position,a.position)?void 0:a.position,rotation:Tn.isEqual(i.rotation,a.rotation)?void 0:a.rotation,scale:Tn.isEqual(i.scale,a.scale)?null:a.scale,hiddenMatrix:In.isEqual(i.hiddenMatrix,a.hiddenMatrix)?void 0:a.hiddenMatrix})}o.diff=t})(Sa||(Sa={}));var Rt;(r=>r.defaultData={states:new ve,events:new ve,visible:!0,raycastLock:!1,physics:Dn.defaultData,pathSnapping:{pathId:null,slide:0,offset:0,orientation:"tangential"},...Sa.identity,cloner:null})(Rt||(Rt={}));var yu;(r=>r.defaultData={type:"Empty",...Rt.defaultData})(yu||(yu={}));var fx;(r=>r.defaultData={type:"ParticleCollider",...mu.defaultData,...Rt.defaultData})(fx||(fx={}));var hx;(r=>r.defaultData={type:"Component",...Rt.defaultData})(hx||(hx={}));var mx;(r=>r.defaultData={type:"Particle",...Rt.defaultData,...ga.defaultData})(mx||(mx={}));var _n;(r=>r.defaultData={type:"Mesh",...Rt.defaultData,...lu.defaultData})(_n||(_n={}));var mi;(r=>r.defaultData={...Rt.defaultData,...Sa.identity,position:[0,0,Nn.DefaultTargetOffset],...Nn.defaultData})(mi||(mi={}));var gu;(e=>{function n(t){return{...Rt.defaultData,...su.defaultData(t)}}e.defaultData=n,e.defaultDirectionalLightData={...e.defaultData("DirectionalLight"),position:[200,300,300],name:"Directional Light",intensity:.7}})(gu||(gu={}));var wa;(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})(wa||(wa={}));var Ao;(i=>{i.rootOverrideProps=["physics","events"],i.compositeNonOptionalOverrideProps=["geometry"],i.compositeEntireOverrideOverrideProps=["material"];function t(a,s){return{...Rt.defaultData,...s,component:a,overrides:new lt,physics:void 0,events:void 0,type:"Instance"}}i.ofComponent=t;function o(a){let s=Sa.fromObject(a.data);return t(a.id,s)}i.fromComponentData=o})(Ao||(Ao={}));var Xo;(e=>{e.defaultData={type:"Page",...Rt.defaultData,physics:{...Dn.defaultData,fusedBody:!1},...hu.defaultData,camera:mi.defaultData};function r(t){return t.uiScene!==void 0}e.isUIPage=r})(Xo||(Xo={}));var xu;(a=>(a.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:In.identity,name:"Play Camera",visible:!0,raycastLock:!1,physics:Dn.defaultData,states:new ve,events:new ve,cloner:null,pathSnapping:{pathId:null,orientation:"tangential",slide:0,offset:0},...Nn.defaultData},a.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"]},a.defaultMeshObject={name:"Rectangle",...Rt.defaultData,..._n.defaultData,geometry:Yo.defaultData("RectangleGeometry"),material:Yt.defaultTwoLayerData("phong","layer1","layer2")},a.defaultBooleanObject={name:"Boolean",...Rt.defaultData,..._n.defaultData,geometry:Yo.defaultData("BooleanGeometry"),material:Yt.defaultTwoLayerData("phong","layer1","layer2")},a.defaultTextObject={name:"Text",...Rt.defaultData,..._n.defaultData,geometry:Yo.defaultData("TextGeometry"),material:Yt.defaultTwoLayerData("phong","layer1","layer2")},a.defaultInputObject={name:"Input",...Rt.defaultData,..._n.defaultData,geometry:Yo.defaultData("InputGeometry"),material:Yt.defaultTwoLayerData("phong","layer1","layer2")}))(xu||(xu={}));var yi;(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})))):eo.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=Pn(s.material,l=>{if(typeof l!="string")for(let[c,u]of Object.entries(a.material.layers)){let p=l.layers.data(c);p&&Bt.patch(p,u)}}).data),s.materials&&a.materials&&(s.materials=Pn(s.materials,l=>{for(let c=0;c<s.materials.length;c++){let u=a.materials[c];if(typeof u!="string")for(let[p,d]of Object.entries(u.layers)){let f=l[c]?.layers?.data(p);f&&Bt.patch(f,d)}}}).data),s}function e(i,a){let s,l=[],c={orthographic:0,perspective:0,geometry:0};function u(p,d){for(let[f,h]of Object.entries(d.layers)){let{texture:m,...y}=h;if(m!==void 0&&Object.keys(m).length>0){let b={path:[...p,"layers",f,"texture"],props:m,type:0};l.push(b)}if(Object.keys(y).length>0){let b={path:[...p,"layers",f],props:y,type:0};l.push(b)}}}for(let[p,d]of Object.entries(a))if(p!=="name")if(p==="cloner")l.push(...iu.toOps(d,["cloner"]));else if(p==="pathSnapping")l.push({path:[p],props:{slide:d.slide,offset:d.offset},type:0});else if(p==="material")u(["material"],d);else if(p==="materials")for(let[f,h]of Object.entries(d))u(["materials",f],h);else if(c[p]===0){if(p==="geometry"&&d.extrusion!==void 0){let f={path:[p,"extrusion"],props:d.extrusion,type:0};l.push(f),d={...d},delete d.extrusion}if(Object.keys(d).length>0){let f={path:[p],props:d,type:0};l.push(f)}}else s===void 0&&(s={path:[],props:{},type:0},l.push(s)),s.props[p]=d;return l}o.toOps=e;function t(i,a){if(a===void 0)return i;let s={...i};if(Object.assign(s,Sa.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})}),eo.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:du.merge(s.geometry,a.geometry)}),(a.material||a.materials)&&(s=r(s,a)),s.cloner&&"cloner"in a&&Object.assign(s,{cloner:Oo.merge(s.cloner,a.cloner)});else if(i.type==="Empty")s.cloner&&"cloner"in a&&Object.assign(s,{cloner:Oo.merge(s.cloner,a.cloner)});else if(au.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=zt.clone(l.color))}return s}o.patch=t})(yi||(yi={}));var Pa;(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})(Pa||(Pa={}));var to;(r=>r.defaultData={orbitControls:Pa.defaultData,playPage:En,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,imageQuality:70}},stopRaycast:!0,hdTransmission:!1})(to||(to={}));var Wp;(r=>r.defaultData={id:"basic",label:"Basic",style:"None",prompt:""})(Wp||(Wp={}));var qp;(r=>r.defaultData={weather:0,shadows:0,lightOrigin:0,temperature:0,sun:0,camera:0,environment:0,particles:0,nature:0,floor:0})(qp||(qp={}));var Ko;(e=>(e.defaultData=()=>({mode:"line-art-both",prompt:"",negativePrompt:"",style:{...Wp.defaultData},isRandomSeed:!0,seed:e.generateSeed(),guessMode:!1,advanced:!1,steps:20,guidanceScale:7.5,controlNetScale:1,modifiers:qp.defaultData}),e.generateSeed=()=>Math.round(Math.random()*1e5)))(Ko||(Ko={}));var yx;(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=Ca.getComponentData(t,s.component)?.data;l&&i(a,s,l.events)}else i(a,s,s.events)})}e.traverseModuleInstances=r})(yx||(yx={}));var Qo;(c=>{c.TRASH_CAN_ID="830a2708-8ed9-49cf-a68e-085299892222",c.defaultLight={fi:-1,data:gu.defaultDirectionalLightData,id:"830a2708-8ed9-49cf-a68e-085299899103",children:[]};function e(u=!0,p=[]){let d=[],f=xu.defaultMeshObject;u&&(d.push({...c.defaultLight}),d.push({fi:1,id:"7ba78968-2a55-48f2-b14c-5191da3e075e",data:f,children:[]})),d.push(...p);let h=new st;return h.push({fi:1,id:En,data:{...Xo.defaultData,name:"Scene 1"},children:d}),h}c.createDefaultObjectTreeWithPage=e,c.defaultData={objects:e(),publish:to.defaultData,styles:Ko.defaultData()},c.emptyDataWithoutPage=function(){return{objects:new st,publish:to.defaultData,styles:Ko.defaultData()}},c.emptyDataWithPage=function(u=!0){return{objects:e(u),publish:to.defaultData,styles:Ko.defaultData()}},c.emptyData=function(){return{objects:new st,publish:{...to.defaultData},styles:Ko.defaultData()}};function s(u){return{...c.defaultData,objects:Jt(u,st.prototype)}}c.withObjs=s;function l(u,p){return s([{id:u,data:p,children:[],fi:0}])}c.withObj=l})(Qo||(Qo={}));var Oa;(r=>r.defaultData={preset:"fullscreen",allowResponsive:!1,size:[512,512],coords:[0,0],sceneScale:1,color:{r:0,g:0,b:0,a:.5}})(Oa||(Oa={}));var bu;(e=>(e.defaultData=t=>({url:t,name:"New Webhook",parametersSchemas:new ve}),e.defaultParameterValueByType=t=>t==="number"?0:t==="boolean"?!1:""))(bu||(bu={}));var gx;(r=>r.defaultData=(e,t="GET")=>({url:e,method:t,name:"New API",headers:new ve,queries:new ve,autoStart:!0}))(gx||(gx={}));var Bn;(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})(Bn||(Bn={}));var $p;(r=>r.all=["images","videos","colors","audios","particles","fonts","materials","variables"])($p||($p={}));var xx;(r=>r.all=[...$p.all,"components"])(xx||(xx={}));var bx;(r=>{function n(){return{images:new he,videos:new he,colors:new he,audios:new he,particles:new he,fonts:new he,materials:new he,components:new he,variables:new he,userAPIs:new he,userWebhooks:new he}}r.defaultData=n})(bx||(bx={}));var ro;(r=>{function n(){return{images:new he,videos:new he,colors:new he,audios:new he,particles:new he,fonts:new he,materials:new he,components:new he,variables:new he,userAPIs:new he,userWebhooks:new he}}r.defaultData=n})(ro||(ro={}));var Gr;(i=>{function n(){let a={};return a["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},Jt(a,he.prototype)}i.defaultColors=n;function r(){return Jt({},he.prototype)}i.defaultImages=r;function e(){return{catelogs:new he,materials:new he,images:new he,videos:new he,colors:new he,audios:new he,particles:new he,fonts:new he,variables:new ve,userAPIs:new he,userWebhooks:new he,lib:ro.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})(Gr||(Gr={}));var al=require("three");var vu;(r=>r.list=["idle","move","jump","run"])(vu||(vu={}));var Su;(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 ve,move:new ve,jump:new ve,run:new ve},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)}}))(Su||(Su={}));function vx(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={...Jr(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 Zo(n,r){Object.values(n.shared.materials).forEach(e=>r(e))}function Jo(n,r){n.scene.objects.traverse((e,t)=>{"materials"in t?t.materials.forEach((o,i)=>{o===void 0&&(t.materials[i]=Yt.defaultData(),o=t.materials[i]),typeof o!="string"&&r(o)}):"material"in t?typeof t.material!="string"&&(t.material===void 0&&(t.material=Yt.defaultData()),r(t.material)):t.type==="Mesh"&&(t.material===void 0&&(t.material=Yt.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 hT(n){Object.assign(n.scene.publish,{orbitControls:{...Pa.defaultData,...xt(n.scene.publish.orbitControls)}})}function mT(n){Object.assign(n.scene.publish.settings,{video:{...to.defaultData.settings.video,...xt(n.scene.publish.settings.video)}})}function yT(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((ux.includes(o)||typeof i=="boolean")&&delete t[o],o==="texture")for(let[a,s]of Object.entries(i))(dx.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 gT(n){n.scene.publish.withBackground=!0}function xT(n){n.scene.publish.settings.web={compress:!0,preload:!0,preset:1,logo:!0,hint:!1}}function bT(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 vT(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 ST(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 wT(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 PT(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 Sx(n){n.layers===void 0&&Object.assign(n,Yt.defaultTwoLayerData("lambert"))}function Yp(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 CT(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&(e.geometry.type==="BooleanGeometry"||e.geometry.type==="SubdivGeometry")&&(e.geometry.phongAngle=35)})}function wx(n){n.scene.objects.traverse((r,e)=>{"materials"in e?e.materials.forEach(t=>{typeof t!="string"&&Yp(t)}):"material"in e&&typeof e.material!="string"&&Yp(e.material)}),Object.values(n.shared.materials).forEach(r=>Yp(r))}function OT(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 AT(n){n.shared.audios=Jt({},he.prototype)}function TT(n){n.shared.videos=Jt({},he.prototype)}function IT(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 MT(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 ET(n){n.scene.publish.settings.web.preload=!1}function Px(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 Cx(n){n.layers&&n.layers.forEach(r=>{cx(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 NT(n){n.shared.fonts=Jt({},he.prototype)}function DT(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 _T(n){let r=[];n.scene.objects.traverse((e,t)=>{let o=t;if(o.type==="TextFrame"){let i=Yt.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=DT(o.font);n.shared.fonts[s]===void 0&&(n.shared.fonts[s]={name:s});let l={name:o.name,...Rt.defaultData,..._n.defaultData,flatShading:!1,wireframe:!1,geometry:{...Yo.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 BT(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 ve,move:new ve,jump:new ve}});else{let i=new ve;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:al.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,Jr(a,"mass","stiffness","damping","velocity")):a.easing===5&&Object.assign(u,{control1:{...a.control1},control2:{...a.control2}});let p={repeat:a.repeat?-1:0,delay:a.delay,delayDirection:a.delayDirection,direction:a.cycle&&a.rewind?"pingpong-rewind":a.cycle?"pingpong":"normal"},d={state:a.state,...p,...u},f={allowSlerp:!0,type:"Transition",object:a.object,repeat:0,delay:0,delayDirection:void 0,direction:"normal",tweens:new ve({fi:0,id:al.MathUtils.generateUUID(),data:c},{fi:1,id:al.MathUtils.generateUUID(),data:d})};i.push({fi:l,id:s,data:f})}),delete o.targets)}})})}function RT(n){n.scene.objects.traverse((r,e)=>{function t(o,i){let a=new ve,s=[];if(e.events.forEach((l,c,u)=>{if(l.type==="Audio"&&l.trigger===i){let p;s.push(c),l.interaction==="play"?p={...Jr(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={...Jr(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:al.MathUtils.generateUUID(),data:{type:o,actions:a}}])}}t("Start","start"),t("MouseDown","mouseDown"),t("MouseUp","mouseUp"),t("KeyDown","keyDown"),t("KeyUp","keyUp")})}function Ox(n){let r=n.layers.find(e=>e.type==="light")?.data;if(r?.category==="basic"){let e=Bt.defaultData("light","phong"),t=r;Object.assign(t,e),t.visible=!1}}function Ax(n){Zo(n,Ox),Jo(n,Ox)}function LT(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&e.geometry.type==="SubdivGeometry"&&(e.geometry.scaleBaked||(e.geometry.scaleBaked=[1,1,1]))})}function VT(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 zT(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&e.geometry.type==="NonParametricGeometry"&&!("material"in e)&&!("materials"in e)&&(e.material=Yt.defaultTwoLayerData("phong"))})}function GT(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 FT(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 jT(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 kT(n){let{video:r}=n.scene.publish.settings;r.format==="gif"&&r.fps>48&&(r.fps=15)}function UT(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.resetYPosition=Math.abs(t.resetYPosition-e.position[1]))})})}function HT(n){let r=n.scene.environment.usePhysics;n.scene.objects.traverse((e,t)=>{r&&t.physics===null?t.collision=!1:t.collision="visibility"})}function WT(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.navmesh=Su.defaultDataThirdPerson.navmesh)})})}function qT(n){n.scene.styles||(n.scene.styles=Ko.defaultData())}function Tx(n){n.layers.forEach(r=>{r.type==="light"&&r.category!=="toon"&&r.occlusion===void 0&&(r.occlusion=!0)})}function $T(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}),Jo(n,Tx),Zo(n,Tx)}function YT(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&Object.assign(t.gameActions,{run:new ve})})})}function XT(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.keyAssignments=[...t.keyAssignments,["run","\u21E7"],["none","Ctrl"]])})})}function Ix(n){n.layers&&n.layers.forEach(r=>{r.type==="light"&&r.bumpMapIntensity===void 0&&(r.bumpMapIntensity=5)})}function Mx(n,r){if(r<1&&(Jo(n,vx),Zo(n,vx),n.schema=1),r<2&&(hT(n),n.schema=2),r<3&&(yT(n),n.schema=3),r<4&&(gT(n),n.schema=4),r<5&&(xT(n),n.schema=5),r<6&&(bT(n),n.schema=6),r<7&&(vT(n),n.schema=7),r<8&&(n.schema=8),r<9&&(wx(n),n.schema=9),r<10&&(CT(n),n.schema=10),r<11&&(OT(n),n.schema=11),r<12&&(wx(n),n.schema=12),r<13&&(AT(n),n.schema=13),r<14&&(IT(n),n.schema=14),r<15&&(MT(n),n.schema=15),r<16&&(ET(n),n.schema=16),r<17&&(Jo(n,Px),Zo(n,Px),n.schema=17),r<18&&(Jo(n,Sx),Zo(n,Sx),n.schema=18),r<19&&(mT(n),n.schema=19),r<20&&(NT(n),_T(n),n.schema=20),r<21&&(BT(n),RT(n),n.schema=21),r<22&&(Ax(n),n.schema=22),r<23&&(LT(n),n.schema=23),r<24&&(VT(n),n.schema=24),(r<25||n.shared.videos===void 0)&&(TT(n),r<25&&(n.schema=25)),r<26&&(ST(n),n.schema=26),r<27&&(wT(n),n.schema=27),r<28&&(Ax(n),n.schema=28),r<29&&(PT(n),n.schema=29),r<30&&(zT(n),n.schema=30),r<31&&(GT(n),n.schema=31),r<33&&(FT(n),n.schema=33),r<34&&(jT(n),n.schema=34),r<35&&(kT(n),n.schema=35),r<36&&(UT(n),n.schema=36),r<37&&(HT(n),n.schema=37),r<38&&(Jo(n,Cx),Zo(n,Cx),n.schema=38),r<39&&(WT(n),n.schema=39),r<40&&(qT(n),n.schema=40),r<41&&($T(n),n.schema=41),r<42&&(YT(n),n.schema=42),r<43&&(XT(n),n.schema=43),r<99){Jo(n,Ix),Zo(n,Ix),n.scene.publish.playCamera===null&&(n.scene.publish.playCamera=Mn);let e=xt(n.scene.objects),t=n.scene.objects;n.scene.publish.playPage=En,t.insertBefore(null,null,[{id:En,data:{...Xo.defaultData,backgroundColor:n.scene.backgroundColor,fog:n.scene.fog,postprocessing:n.scene.postprocessing,ao:Jr(n.scene.environment.ambientLight,"occlusion","aoFullRes","radius","bias","aoColor"),publish:{playCamera:n.scene.publish.playCamera,gameControlObject:n.scene.publish.gameControlObject},shadow:Jr(n.scene.environment.ambientLight,"softShadowQuality"),globalPhysics:{...il.defaultData,...Jr(n.scene.environment,"usePhysics","gravity")},camera:xt(n.scene.ownerCamera)??Xo.defaultData.camera,name:"Scene"},children:[]}]);for(let a of e)a.id!==Qo.TRASH_CAN_ID&&t.move(En,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,Dn.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 KT(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 QT(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 Aa=180/Math.PI;function Nx(n){n.rotation=n.rotation.slice(0,3).map(r=>r*Aa)}function Dx(n){Nx(n),n.type==="Page"&&Nx(n.camera),n.states?.forEach(e=>{e.rotation===void 0||e.rotation===null||(e.rotation=e.rotation.slice(0,3).map(t=>t*Aa))});let r=n.geometry;r&&r.type==="SphereGeometry"&&(r.thetaLength=(r.thetaLength??180)*Aa),r&&r.type==="TorusGeometry"&&(r.arc=r.arc*Aa),r&&r.type==="PathGeometry"&&(r.extrusion.angle*=Aa,r.extrusion.twist*=Aa),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 ZT(n){n.shared.variables=Jt({},he.prototype)}function JT(n){let r=xt(n.shared.variables);n.shared.variables=Jt(Object.entries(r??{}).map(([e,t],o)=>({fi:o,id:e,data:t})),ve.prototype)}var To=115;function _x(n,r){r(n.data);for(let e of n.children)_x(e,r)}function eI(n){let r=n.schema??104;r!==To&&r<105&&(_x(n.asset,Dx),n.schema=105)}function tI(n){n.shared.particles=Jt({},he.prototype),n.shared.lib&&(n.shared.lib.particles=ro.defaultData().particles)}function rI(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 oI(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 nI(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 iI(n){n.shared.userAPIs=Jt({},he.prototype),n.shared.userWebhooks=Jt({},he.prototype),n.shared.lib&&(n.shared.lib.userAPIs=ro.defaultData().userAPIs,n.shared.lib.userWebhooks=ro.defaultData().userWebhooks)}function wu(n){let r=n.schema??0;if(r!==To){console.warn("updating from ",r,"to ",To),Mx(n,r),r<100&&(n.scene.publish.joystickSizeAndXYOffset===void 0&&(n.scene.publish.joystickSizeAndXYOffset=to.defaultData.joystickSizeAndXYOffset),n.schema=100),r<101&&(Jo(n,Ex),Zo(n,Ex),n.schema=101),r<102&&(KT(n),n.schema=102),r<104&&(n.shared.catelogs=new he,n.shared.lib=ro.defaultData(),n.schema=104),r<105&&(ZT(n),n.scene.objects.traverse((e,t)=>{Dx(t)}),n.schema=105);for(let e of Object.values(n.shared.lib.components))eI(e);r<106&&(JT(n),n.schema=106),r<107&&(n.shared.lib.variables=ro.defaultData().variables,n.schema=107),r<109&&(tI(n),n.schema=109),r<110&&(rI(n),n.schema=110),r<111&&(n.scene.objects.traverse((e,t)=>{QT(t)}),n.schema=111),r<112&&(oI(n),n.schema=112),r<113&&(nI(n),n.schema=113),r<114&&(n.scene.publish.settings.web.imageQuality===void 0&&(n.scene.publish.settings.web.imageQuality=70),n.schema=114),r<115&&(iI(n),n.schema=115)}}var Ca;(c=>{c.defaultData={schema:To,scene:Qo.defaultData,frames:new he().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",Oa.defaultData),shared:{...Gr.emptyData(),colors:Gr.defaultColors()}},c.emptyDataForImports=function(){let u=Qo.emptyDataWithPage();return{schema:To,scene:u,frames:new he().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",Oa.defaultData),shared:{...Gr.emptyData(),colors:Gr.defaultColors(),images:Gr.defaultImages()}}},c.emptyData=function(){return{schema:To,scene:Qo.emptyDataWithPage(),frames:new he().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",Oa.defaultData),shared:Gr.emptyData()}},c.clipboard2dData=function(){return{schema:To,scene:Qo.emptyData(),frames:new he,shared:Gr.emptyData()}},c.collabHelper={...Js,updateSchema(u){return(u.schema??0)<To?Pn(u,wu):(u.schema??0)-To}};function i(u){let p=c.collabHelper.updateSchema(u);return typeof p=="number"?p===0?u:null:p.data}c.updateSchemaDirectly=i;function a(u){return{...u,shared:{...u.shared,lib:ro.defaultData()}}}c.withoutLib=a;function s(u,p){let d=u.scene.objects.get(p);if(d&&d.data.type==="Component")return d;{let f=u.shared.lib.components[p];if(f)return f.asset}}c.getComponentData=s;function l(u){let p=Object.values(u.shared.userAPIs);for(let d of p){let f=d.headers;for(let h of f)if(h.data.key.toLowerCase()==="authorization"&&h.data.value!=="")return!0}return!1}c.hasSensitiveData=l})(Ca||(Ca={}));var Pu;(r=>r.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII=",name:"empty"})(Pu||(Pu={}));var Bx;(r=>{function n(e){return!0}r.is=n})(Bx||(Bx={}));var Cu;(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 pc({position:ya.isEqual(o.position,i.position)?void 0:i.position,rotation:o.rotation===i.rotation?void 0:i.rotation,scale:ya.isEqual(o.scale,i.scale)?void 0:i.scale,shear:o.shear&&i.shear&&ya.isEqual(o.shear,i.shear)?void 0:i.shear})}t.diff=e})(Cu||(Cu={}));var Xp;(r=>r.defaultData={horizontalConstraint:0,verticalConstraint:0})(Xp||(Xp={}));var Rx;(r=>r.defaultData={direction:"row",wrap:"unwrap",align:"top-left",gap:10,rowGap:10,autoGap:!1,autoRowGap:!1,leftPadding:8,rightPadding:8,topPadding:8,bottomPadding:8})(Rx||(Rx={}));var Ou;(r=>r.defaultData={opacity:1,fill:{color:_e.fromHexAndA(Et,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}})(Ou||(Ou={}));var gi;(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,Cu.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})(gi||(gi={}));var sl;(r=>r.defaultData={...Cu.defaultData,...Xp.defaultData,states:new ve,events:new ve,visible:!0,raycastLock:!1})(sl||(sl={}));var Ta;(r=>r.defaultData={...sl.defaultData,...Ou.defaultData})(Ta||(Ta={}));var Au;(r=>r.defaultData={cornerRadius:[0,0,0,0]})(Au||(Au={}));var Kp;(r=>r.defaultData={...Ta.defaultData,type:"ellipse2d",width:100,height:100,name:"Ellipse"})(Kp||(Kp={}));var Ia;(r=>r.defaultData={...Ta.defaultData,...Au.defaultData,type:"rectangle2d",width:100,height:100,name:"Rectangle"})(Ia||(Ia={}));var Qp;(r=>r.defaultData={...Ta.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"})(Qp||(Qp={}));var Zp;(r=>r.defaultData={...Ta.defaultData,type:"path2d",path:"",name:"Path"})(Zp||(Zp={}));var Lx;(r=>{function n(e){return e.type==="ellipse2d"||e.type==="rectangle2d"||e.type==="text2d"||e.type==="vector2d"||e.type==="path2d"}r.is=n})(Lx||(Lx={}));var ll;(r=>r.defaultData={...sl.defaultData,name:"Group",type:"group2d"})(ll||(ll={}));var Jp;(r=>r.defaultData=()=>({...sl.defaultData,...Au.defaultData,...Ou.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}}))(Jp||(Jp={}));var en;(i=>{function n(a){switch(a){case"rectangle2d":return{...Ia.defaultData};case"ellipse2d":return{...Kp.defaultData};case"text2d":return{...Qp.defaultData};case"vector2d":return{...Ia.defaultData};case"path2d":return{...Zp.defaultData};case"frame2d":return{...Jp.defaultData()};case"group2d":return{...ll.defaultData}}}i.defaultData=n;function r(a){return"width"in a&&"height"in a?[typeof a.width=="number"?a.width*.5:0,typeof a.height=="number"?a.height*.5:0]:[0,0]}i.getPivot=r;function e(a){return a.type==="rectangle2d"||a.type==="ellipse2d"||a.type==="text2d"||a.type==="frame2d"}i.isResizeable=e;function t(a){return a.type==="frame2d"&&a.autoLayout!==void 0}i.isAutoLayoutable=t;function o(a){return a.type==="rectangle2d"||a.type==="frame2d"}i.hasCorners=o})(en||(en={}));var Tu;(e=>(e.defaultData={name:"UI",type:"scene2d",objects:new st},e.emptyData=function(){return{type:"scene2d",objects:new st}}))(Tu||(Tu={}));var Je=require("three"),wd=qs(zx());var aI=.5*(Math.sqrt(3)-1),cl=(3-Math.sqrt(3))/6,sI=1/3,Io=1/6,VU=(Math.sqrt(5)-1)/4,zU=(5-Math.sqrt(5))/20,ul=n=>Math.floor(n)|0,Gx=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]),tf=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 Fx(n=Math.random){let r=kx(n),e=new Float64Array(r).map(o=>Gx[o%12*2]),t=new Float64Array(r).map(o=>Gx[o%12*2+1]);return function(i,a){let s=0,l=0,c=0,u=(i+a)*aI,p=ul(i+u),d=ul(a+u),f=(p+d)*cl,h=p-f,m=d-f,y=i-h,b=a-m,S,P;y>b?(S=1,P=0):(S=0,P=1);let C=y-S+cl,v=b-P+cl,A=y-1+2*cl,T=b-1+2*cl,g=p&255,D=d&255,E=.5-y*y-b*b;if(E>=0){let _=g+r[D],B=e[_],V=t[_];E*=E,s=E*E*(B*y+V*b)}let M=.5-C*C-v*v;if(M>=0){let _=g+S+r[D+P],B=e[_],V=t[_];M*=M,l=M*M*(B*C+V*v)}let N=.5-A*A-T*T;if(N>=0){let _=g+1+r[D+1],B=e[_],V=t[_];N*=N,c=N*N*(B*A+V*T)}return 70*(s+l+c)}}function jx(n=Math.random){let r=kx(n),e=new Float64Array(r).map(i=>tf[i%12*3]),t=new Float64Array(r).map(i=>tf[i%12*3+1]),o=new Float64Array(r).map(i=>tf[i%12*3+2]);return function(a,s,l){let c,u,p,d,f=(a+s+l)*sI,h=ul(a+f),m=ul(s+f),y=ul(l+f),b=(h+m+y)*Io,S=h-b,P=m-b,C=y-b,v=a-S,A=s-P,T=l-C,g,D,E,M,N,_;v>=A?A>=T?(g=1,D=0,E=0,M=1,N=1,_=0):v>=T?(g=1,D=0,E=0,M=1,N=0,_=1):(g=0,D=0,E=1,M=1,N=0,_=1):A<T?(g=0,D=0,E=1,M=0,N=1,_=1):v<T?(g=0,D=1,E=0,M=0,N=1,_=1):(g=0,D=1,E=0,M=1,N=1,_=0);let B=v-g+Io,V=A-D+Io,k=T-E+Io,L=v-M+2*Io,W=A-N+2*Io,F=T-_+2*Io,j=v-1+3*Io,H=A-1+3*Io,q=T-1+3*Io,re=h&255,ee=m&255,X=y&255,te=.6-v*v-A*A-T*T;if(te<0)c=0;else{let $=re+r[ee+r[X]];te*=te,c=te*te*(e[$]*v+t[$]*A+o[$]*T)}let K=.6-B*B-V*V-k*k;if(K<0)u=0;else{let $=re+g+r[ee+D+r[X+E]];K*=K,u=K*K*(e[$]*B+t[$]*V+o[$]*k)}let Z=.6-L*L-W*W-F*F;if(Z<0)p=0;else{let $=re+M+r[ee+N+r[X+_]];Z*=Z,p=Z*Z*(e[$]*L+t[$]*W+o[$]*F)}let Q=.6-j*j-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[$]*j+t[$]*H+o[$]*q)}return 32*(c+u+p+d)}}function kx(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 Ux=require("three"),oo=new Ux.Triangle,Iu=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;oo.a.fromBufferAttribute(r,o),oo.b.fromBufferAttribute(r,o+1),oo.c.fromBufferAttribute(r,o+2),i*=oo.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),oo.a.fromBufferAttribute(this.positionAttribute,r*3),oo.b.fromBufferAttribute(this.positionAttribute,r*3+1),oo.c.fromBufferAttribute(this.positionAttribute,r*3+2),e.set(0,0,0).addScaledVector(oo.a,o).addScaledVector(oo.b,i).addScaledVector(oo.c,1-(o+i)),oo.getNormal(t),this}};var $x=require("three");var Er=require("three"),qx=qs(Wx()),lI=new Er.Matrix4,cI=new Er.Matrix4,uI=new Er.Matrix4,Ma;(r=>{function n(e){return e&&e.__isSPEObject}r.is=n})(Ma||(Ma={}));var Ea=n=>class extends n{constructor(){super(...arguments);this.previousModelViewMatrix=new Er.Matrix4;this.copyPreviousMatrix=!0;this.hiddenMatrix=new Er.Matrix4;this.matrixWorldRigid=new Er.Matrix4;this.shearScale=new Er.Matrix4;this.shearScaleInv=new Er.Matrix4}get __isSPEObject(){return!0}isDescendantOf(t){t instanceof Er.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)Ma.is(i)&&i.traverseObject(t,o+1)}traverseObject(t,o=0){if(t(this,o)!==!0)for(let a of this.children)Ma.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,qx.SVD)(o),l=lI.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=cI.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=uI.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 Er.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 Er.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 rf=class extends Ea($x.Object3D){},dI=n=>n.type==="Mesh",tn=class extends rf{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 tn(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 dI(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 Ka=require("three");var Xu=require("three");var sr=require("three");var At=require("three"),xi=new At.Vector3,bi=new At.Vector3,Na=new At.Matrix4,Xx=[new At.Vector3(-1,1,1),new At.Vector3(-1,-1,1),new At.Vector3(1,-1,1),new At.Vector3(1,1,1),new At.Vector3(-1,1,-1),new At.Vector3(-1,-1,-1),new At.Vector3(1,-1,-1),new At.Vector3(1,1,-1)],pI=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],fI=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]],Yx=(n,r,e)=>{n.updateEntityBoxSize(xi,bi),Na.copy(r).multiply(n.matrixWorld),bi.x===0&&bi.y===0&&bi.z===0?e.push(new At.Vector3(xi.x,xi.y,xi.z).applyMatrix4(Na)):Xx.forEach(t=>{e.push(t.clone().multiply(bi).add(xi).applyMatrix4(Na))})},dl=class extends At.Box3{constructor(){super(...arguments);this.matrix=new At.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 At.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 At.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(Na.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(bi).multiplyScalar(.5),this.getCenter(xi),Na.copy(this.matrix).setPosition(xi),this.vertices=Xx.map(e=>e.clone().multiply(bi).applyMatrix4(Na))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=pI.map(([e,t])=>new At.Line3(this.vertices[e],this.vertices[t])),this.centerEdges=this.edges.map(e=>e.getCenter(new At.Vector3))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=fI.map(([e,t])=>this.vertices[e].clone().add(this.vertices[t]).multiplyScalar(.5))}};var no={Cloner:()=>{},changeEntityProptotype:()=>{},createEntity:()=>{}};var Xt=require("three"),nf=class extends Xt.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 f=0;f<d.length;f++){let h=d[f];t&&t.equals(h)||(e.push(h),t=h)}}return this.autoClose&&e.length>1&&!e[e.length-1].equals(e[0])&&e.push(e[0]),e}};var af=.001;function sf(n,r,e){return r.clone().sub(n).cross(r.clone().sub(e)).length()<=af}function of(n,r){let e=new Xt.Vector3(...n.position),t=new Xt.Vector3(...n.controlNext.position),o=new Xt.Vector3(...r.controlPrevious.position),i=new Xt.Vector3(...r.position);return sf(e,t,i)&&sf(e,o,i)}function Eu(n){let r=n.points.map(u=>new Xt.Vector3(...u.data.position)),e=[n.points[0]],t=new Xt.Vector3(...e[0].data.position);for(let u=0;u<n.points.length-1;u++)sf(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 Xt.Vector3(...p.position),f=new Xt.Vector3(...p.controlPrevious.position),h=new Xt.Vector3(...p.controlNext.position),m={position:d,baseRoundness:p.roundness,controlPrevious:f,controlNext:h};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,b=o&&u==a-1?0:u+1,S=e[y].data,P=e[b].data,C=new Xt.Vector3(...S.position),v=new Xt.Vector3(...P.position),A=C.clone().sub(d).normalize(),T=v.clone().sub(d).normalize();Object.assign(m,{prevDir:A,nextDir:T});let g=of(S,p),D=of(p,P);if(!g||!D)s[u]={...m,removedLength:0};else{let E=A.clone().add(T).normalize(),M=E.clone().cross(A).length()/A.dot(E);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,f=s[p],h=s[d];if(f.removedLength!==0||h.removedLength!==0){let m=f.position.distanceTo(h.position);f.removedLength=Math.min(f.removedLength,m/2),h.removedLength=Math.min(h.removedLength,m/2)}}let l=[];for(let u=0;u<i;u++){let p=u,d=o&&u===a-1?0:u+1,f=s[p],h=s[d],m=null;if(!of(e[p].data,e[d].data))f.position.distanceTo(h.position)>af&&(m=new Xt.CubicBezierCurve3(f.position,f.controlNext,h.controlPrevious,h.position));else{let y=f.position.clone(),b=h.position.clone();(f.removedLength!==0||h.removedLength!==0)&&(f.nextDir&&y.add(f.nextDir.clone().setLength(f.removedLength)),h.prevDir&&b.add(h.prevDir.clone().setLength(h.removedLength))),y.distanceTo(b)>af&&(m=new Xt.CubicBezierCurve3(y,y.clone().lerp(b,.3),b.clone().lerp(y,.3),b))}l[2*u+1]=m}for(let u=0;u<a;u++){let p=s[u];if(p.removedLength===0){l[2*u]=null;continue}let d=p.position,f=p.prevDir.clone().multiplyScalar(p.removedLength).add(d),h=p.nextDir.clone().multiplyScalar(p.removedLength).add(d),m=p.tan*p.removedLength,y=p.prevDir.clone().add(p.nextDir).normalize(),b=f.clone().lerp(h,.5),S=f.distanceTo(h)/2,P=y.clone().multiplyScalar(Math.sqrt(Math.pow(m,2)-Math.pow(S,2))).add(b),C=y.clone().multiplyScalar(-m).add(P),v=d.distanceTo(C)/d.distanceTo(b),A=p.prevDir.clone().multiplyScalar(v*d.distanceTo(f)).add(d),T=A.clone().lerp(C,2),g=f.clone().lerp(A,4/3),D=h.clone().lerp(T,4/3);l[2*u]=new Xt.CubicBezierCurve3(f,g,D,h)}let c=new nf;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 Da=n=>je.is(n),hI={type:"completeState",isfromEntity:!0},mI=["x","y","z"],lf=new sr.Vector3,yI=new sr.Vector3().set(0,1,0),_a=n=>class extends Ea(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 dl;this._recursiveBBox=new dl;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)yi.toOps(this.data,a.data).forEach(l=>{let c=pa.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=yi.patch(this.data,a),yi.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=>{Da(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)Da(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)Da(a)&&a.isConcreteEntity&&a.traverseEntity(t,o+1)}traverseEntity(t,o=0){if(t(this,o)!==!0)for(let a of this.children)Da(a)&&a.traverseEntity(t,o+1)}traverseVisibleEntity(t){t(this);for(let o of this.children)Da(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=>Da(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*sr.MathUtils.RAD2DEG,this.rotation.y*sr.MathUtils.RAD2DEG,this.rotation.z*sr.MathUtils.RAD2DEG],scale:this.scale.toArray(),hiddenMatrix:this.hiddenMatrix.toArray()};return sa(o,t)}getTransformValues(t,o,i){return o[t].map((a,s)=>i?.shared.getVariable(a,[this.uuid,t,mI[s]])??a)}updateTransformState(t,o){let i=!1;return t.position&&(this.position.fromArray(this.getTransformValues("position",t,o)),i=!0),t.rotation&&(lf.fromArray(this.getTransformValues("rotation",t,o)).multiplyScalar(sr.MathUtils.DEG2RAD),this.rotation.setFromVector3(lf),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??In.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 sa(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=Fe(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 f=ct.zoom(d,t.path.slice(2));if(f)for(let h in t.props)t.props[h]===void 0&&h in f&&(p[h]=f[h])}}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,...f}=u;u=f}if(t.props.material!==void 0&&"material"in u){let{material:d,...f}=u;u=f}let p=ct.removeOverridden(t.path,t.props,u);l={...t,props:p}}}if(this.updateByPatchedOpBase(l,yi.patch(this.data,this.stateSelection?this.data.states.data(this.stateSelection):void 0),i),Fe(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 f=i.scene.findInstance([this.uuid,...u]);f&&(f.overrideData=t.props[d],f.updateState(vo.apply(f.component.data,f.overrideData),i))}}else{let d=i.scene.findInstance([this.uuid,...u]);if(d){let f=ct.zoom(d.component.data,p);if(t={...t,path:p},t.type===0){let h=t.props;if(f)for(let[m,y]of Object.entries(t.props))y===void 0&&(h===t.props&&(h={...t.props}),h[m]=f[m]);t={...t,props:h}}d.overrideData=wa.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 Ao.rootOverrideProps)d in t.props&&(p===void 0&&(p={}),p[d]=t.props[d]);p&&(u={...t,props:p})}else for(let p of Ao.rootOverrideProps)if(Fe(t.path,[p])){u=t;break}u!==void 0&&this.instances.forEach(p=>{if(p.isInstanceRoot){let d=vo.filterOp(p.overrideData,u);d&&p.updateByOp(d,gt.applySimple(p.data,d),i,!0)}}),this.instances.forEach(p=>{if(!p.isInstanceRoot){let d=vo.filterOp(p.overrideData,t);if(d){let f;s===p.data&&t===d?f=o:f=gt.applySimple(p.data,d),p.updateByOp(d,f,i,!0)}}})}}updateByPatchedOpBase(t,o,i){if(this.dataPatched=o,t.path.length===0&&t.type===0)t.props.type!==void 0&&!eo.is(t.props.type)&&no.changeEntityProptotype(this,o,i);else if(t.path.length===1&&t.path[0]==="geometry"&&t.type===0&&"type"in t.props){no.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),t.path[0]==="morphTargetInfluences"&&t.type===0){let s=o.morphTargetInfluences.get(t.path[1])?.data.name;s&&this.updateMorphInfluences(s,i.shared.getVariable(t.props.value,[this.uuid,"morphTargetInfluences",s]))}if(Fe(t.path,["pathSnapping"])!==null&&this.updatePathSnapping(o.pathSnapping),Fe(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=Eu(c.geometry.path),p=(i+a)%1;i+a===1&&p===0&&(p=1);let d=null;try{d=u.curves.length?u.getPointAt(p):null}catch(y){!1&&(console.warn(`The aligned path on ${this.name} is invalid. (${l.name})`),console.error(y))}if(d===null)return;let f=this.parent?this.parent?.matrixWorld:new sr.Matrix4;l.updateMatrixWorld();let h=new sr.Matrix4().multiplyMatrices(f.clone().invert(),l.matrixWorld);d.applyMatrix4(h);let m={position:d.toArray(),rotation:c.rotation};if(s==="tangential"){let y=new sr.Matrix4().extractRotation(l.matrixWorld),b=u.getTangentAt(p).applyMatrix4(y).add(d),S=new sr.Matrix4().lookAt(d,b,yI),P=lf.setFromEuler(new sr.Euler().setFromRotationMatrix(S)).multiplyScalar(sr.MathUtils.RAD2DEG);m={...m,rotation:P.toArray()}}this.updateTransformState(m),this.traverseEntity(y=>{y._cameraType&&y.dispatchEvent(hI)})}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 no.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 no.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 Ln=require("three");var it=require("three"),Qx=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:f}=n.parameters,h;return l===0?(h=new it.BufferGeometry,h.setAttribute("position",new it.Float32BufferAttribute([],3))):p||f?h=new pl(c,u,t,o,i,a,s,l*Math.PI/180,p,p,d,f):h=new it.CylinderGeometry(c,u,t,o,i,a,s,l*Math.PI/180),h.scale(1,1,e/r),Object.assign(h,{userData:{...n,type:"CylinderGeometry"}})}};function Rn(n,r,e){e.x=n.x*r.x,e.y=n.y,e.z=n.x*r.y}function Kx(n){return new it.Vector2(n.y,-n.x)}var pl=class extends it.BufferGeometry{constructor(r,e,t,o,i,a,s,l,c,u,p,d,f=!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 h=[],m=[],y=[],b=[],S=0,P=t/2,C=new it.Vector3,v=new it.Vector3;f&&r==0&&(r=c),f&&e==0&&(e=u);let A=new it.Vector2(r,P),T=new it.Vector2(e,-P),g=null,D=null,E=null,M=null,N=A.clone().sub(T),_=0,B=0,V=0;d>0&&(_=Math.min(r,e)*(1-d),B=r-_,V=e-_);let k=A.clone();k.x-=_;let L=Math.PI-N.angle(),W=N.angle(),F=Math.tan(W/2),j=Math.tan(L/2),H=F+j,q=d?H:j,re=d?H:F;if(c=Math.min(c,(r-B)/q,N.length()/H),u=Math.min(u,(e-V)/re,N.length()/H),c>0){let Q=c/F;g=A.clone().sub(new it.Vector2(Q,c)),d&&(E=g.clone(),E.x-=_-H*c),A.sub(N.clone().setLength(Q))}if(u>0){let Q=u/j;D=T.clone().sub(new it.Vector2(Q,-u)),T.add(N.clone().setLength(Q)),d&&(M=D.clone(),M.x-=_-H*u,k.sub(N.clone().setLength(Q)))}N=A.clone().sub(T);let ee=N.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&&D?(te($,ue,ne,L,u,M,-1,!0),te($,ue,ne,W,u,D,-1,!1)):D?(K($,ne,D.x,0,-1),te($,ue,ne,W,u,D,-1,!1)):a||K($,ne,e,V,-1);let ce=Kx(N).normalize();if(Rn(ce,ne,C),!ee)for(let ae=0;ae<=i;ae++){let ye=ae/i,fe=N.clone().multiplyScalar(ye).add(T);Rn(fe,ne,v),m.push(v.x,v.y,v.z),y.push(C.x,C.y,C.z),b.push(ue,.5+v.y/t),$.push(S++)}if(E&&g?(te($,ue,ne,L,c,g,1,!1),te($,ue,ne,W,c,E,1,!0)):g?(te($,ue,ne,L,c,g,1,!1),K($,ne,g.x,0,1)):a||K($,ne,r,B,1),d&&!ee){let ae=Kx(N).multiplyScalar(-1).normalize();Rn(ae,ne,C);for(let ye=0;ye<=i;ye++){let fe=ye/i,me=N.clone().multiplyScalar(-fe).add(k);Rn(me,ne,v),m.push(v.x,v.y,v.z),y.push(C.x,C.y,C.z),b.push(ue,.5+v.y/t),$.push(S++)}}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],ye=m[ne*3+2];h.push(ue,le,ce),(ae!=0||ye!=0)&&h.push(le,ne,ce)}l<Math.PI*2&&(Z(-1,X[0],s),Z(1,X[X.length-1],s+l)),this.setIndex(h),this.setAttribute("position",new it.Float32BufferAttribute(m,3)),this.setAttribute("normal",new it.Float32BufferAttribute(y,3)),this.setAttribute("uv",new it.Float32BufferAttribute(b,2));function te(Q,$,ue,le,ne,ce,ae,ye){for(let fe=0;fe<p+1;fe++){let me=fe/p,be=ae<0?me:1-me;ye&&(be-=1),be*=le;let ge=new it.Vector2(Math.sin(be),Math.cos(be)*ae),O=ge.clone().multiplyScalar(ne).add(ce);Rn(O,ue,v),m.push(v.x,v.y,v.z),Rn(ge,ue,C),y.push(C.x,C.y,C.z),b.push($,.5+v.y/t),Q.push(S++)}}function K(Q,$,ue,le,ne){let ce=new it.Vector3,ae=new it.Vector2,ye=[ue,le];ne<0&&ye.reverse();for(let fe of ye)ae.set(fe,P*ne),Rn(ae,$,ce),m.push(ce.x,ce.y,ce.z),y.push(0,ne,0),b.push(.5,.5),Q.push(S++)}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?(me,be,ge)=>h.push(me,be,ge):(me,be,ge)=>h.push(me,ge,be),ye=new it.Vector2((r+e+B+V)/4,0);Rn(ye,le,ce),m.push(ce.x,ce.y,ce.z),y.push(ne.x,0,ne.y),b.push(.5,.5);let fe=S++;for(let me of $){let be=m.slice(me*3,me*3+3);m.push(...be),y.push(ne.x,0,ne.y);let ge=b.slice(me*2,me*2+2);b.push(...ge),S++}for(let me=fe+1;me<S-1;me++)ae(fe,me,me+1);ae(fe,S-1,fe+1)}}};var Zx=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=Ln.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 Ln.BufferGeometry,d.setAttribute("position",new Ln.Float32BufferAttribute([],3))):c>0||u>0||l<360?d=new pl(0,r/2,t,o,i,a,s,l*Math.PI/180,c,u,p,0,!0):d=new Ln.ConeGeometry(r/2,t,o,i,a),d.scale(1,1,e/r),Object.assign(d,{userData:{...n,type:"ConeGeometry"}})}};var xr=require("three"),Jx=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 xr.BoxGeometry(r,e,t,o,i,a):c=new uf(r,e,t,o,i,a,s,l),Object.assign(c,{userData:{...n,type:"CubeGeometry"}})}},cf=Math.PI/2,uf=class extends xr.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=[],f=0;h("z","y","x",-1,-1,t,e,r,a,i),h("z","y","x",1,-1,t,e,-r,a,i),h("x","z","y",1,1,r,t,e,o,a),h("x","z","y",1,-1,r,t,-e,o,a),h("x","y","z",1,-1,r,e,t,o,i),h("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 xr.Float32BufferAttribute(u,3)),this.setAttribute("normal",new xr.Float32BufferAttribute(p,3)),this.setAttribute("uv",new xr.Float32BufferAttribute(d,2));function h(b,S,P,C,v,A,T,g,D,E){let M=(A-2*s)/D,N=(T-2*s)/E,_=A/2-s,B=T/2-s,V=g/2,k=D+1,L=E+1,W=0,F=new xr.Vector3;for(let j=0;j<L;j++){let H=j*N-B;for(let q=0;q<k;q++){let re=q*M-_;F[b]=re*C,F[S]=H*v,F[P]=V,u.push(F.x,F.y,F.z),F[b]=0,F[S]=0,F[P]=g>0?1:-1,p.push(F.x,F.y,F.z),d.push(q/D),d.push(1-j/E),W+=1}}for(let j=0;j<E;j++)for(let H=0;H<D;H++){let q=f+H+k*j,re=f+H+k*(j+1),ee=f+(H+1)+k*(j+1),X=f+(H+1)+k*j;c.push(q,re,X),c.push(re,ee,X)}f+=W}function m(b,S,P,C,v,A,T,g,D,E){let M=(T-2*s)/E,N=T/2-s,_=g/2-s,B=D/2,V=E+1,k=0,L=new xr.Vector3,W=new xr.Vector3;for(let F=0;F<l+1;F++){let j=F/l*cf,H=Math.sin(j)*s,q=(1-Math.cos(j))*s,re=Math.sin(j),ee=Math.cos(j);L[S]=(_+H)*v,L[P]=(B-q)*A,W[b]=0,W[S]=re*Math.sign(L[S]),W[P]=ee*Math.sign(L[P]);for(let X=0;X<V;X++){let te=X*M-N;L[b]=te*C,u.push(L.x,L.y,L.z),p.push(W.x,W.y,W.z),d.push(X/E),d.push(0),k+=1}}for(let F=0;F<l;F++)for(let j=0;j<E;j++){let H=f+j+V*F,q=f+j+V*(F+1),re=f+(j+1)+V*(F+1),ee=f+(j+1)+V*F;c.push(H,q,ee),c.push(q,re,ee)}f+=k}function y(b,S,P){let C=new xr.Vector3,v=new xr.Vector3(r/2,e/2,t/2);v.subScalar(s);let A=[],T=b*S*P>0?(D,E,M)=>c.push(D,E,M):(D,E,M)=>c.push(D,M,E);for(let D=0;D<=l;D++){let E=[],M=cf*(1-D/l),N=Math.cos(M),_=Math.sin(M),B=0;for(let V=0;V<=D;V++){let k=Math.cos(B),L=Math.sin(B);C.x=N*k,C.y=_,C.z=N*L;let W=v.clone().addScaledVector(C,s);u.push(b*W.x,S*W.y,P*W.z),p.push(b*C.x,S*C.y,P*C.z),d.push(0,0),E.push(f++),B+=cf/D}A.push(E)}let g=A.length-1;for(let D=0;D<g;D++){let E=A[D],M=A[D+1],N=E.length-1;T(E[0],M[1],M[0]);for(let _=1;_<=N;_++)T(E[_-1],E[_],M[_]),T(E[_],M[_+1],M[_])}}}};var Tt=require("three"),Vn=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 f={IcosahedronGeometry:5,DodecahedronGeometry:3,HexahedronGeometry:3,OctahedronGeometry:4,TetrahedronGeometry:3}[t],h=new Tt.Vector3,m=h.clone(),y=new Tt.Triangle,b=i*o,S=o-b,P=a+1,C=new Tt.Vector3,v=(F,j)=>C.subVectors(F,j).normalize(),A=(F,j)=>Array(F).fill(void 0).map(j),T=A(r.length/3,(F,j)=>new Tt.Vector3().fromArray(r,j*3).setLength(o)),g=[],D=1e6;for(let F=0;F<T.length;F++){let j=T[F],H=[],q,re,ee,X=1e10,te=-1;for(;(te=e.indexOf(F,te+1))!=-1;){let $=te-te%3;q=e[$+(te+1)%3],re=e[$+(te+2)%3],ee=j.distanceToSquared(T[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=g[q]?.includes(F)==!0;ee<=X&&K.push(q+ +ue*D),Z=H.findIndex(le=>le[0]==re)}g.push(K)}let E=[];{let F=0,j=0,H,q,re=f==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++)[F,j]=[H+X+ee+2,q+X+ee+3],E.push(H,q,...re?[j,H]:[F,q],j,F),[H,q]=[F,j];E.push(H,q,H+a+2)}}let M=h.clone(),N=h.clone(),_=h.clone(),B=h.clone(),V=h.clone(),k=[],L=A(T.length,()=>A(f,()=>h.clone()));for(let F=0;F<T.length;F++){h.copy(T[F]).normalize(),M.copy(h).multiplyScalar(S);let j=g[F];for(let K=0;K<j.length;K++){let Z=j[K],Q=j[(K+1)%f];y.setFromPointsAndIndices(T,F,Z%D,Q%D),y.b.sub(y.a).setLength(1e10).add(y.a),y.c.sub(y.a).setLength(1e10).add(y.a),y.closestPointToPoint(M,L[F][K])}let H=[],q=[],re=[],ee=new Tt.Vector3;a==0&&[...L[F]].reduce((K,Z)=>K.add(Z),ee).multiplyScalar(1/f);for(let K=0;K<f;K++){let Z=[],Q=(K-1+f)%f,$=L[F][Q],ue=L[F][K];h.copy($).sub(M),m.copy(ue).sub(M);let le=M.angleTo(h),ne=h.angleTo(m),ce=Math.cos(le)*b;a==0?N.copy(ee):N.copy(M).setLength(S+ce),q.push(ce);let ae=[N,$,ue];for(let ye=0;ye<2;ye++){let fe=ae[ye],me=ae[ye+1];B.subVectors(fe,M),V.subVectors(me,M),_.crossVectors(B,V).normalize();for(let be=0;be<P;be++){let ge=[le,ne][ye]*be/P;h.copy(B).applyAxisAngle(_,ge).add(M),H.push(h.clone()),ye&&(v(h,M),Z.push([be==0?fe:h.clone(),C.clone()]))}ye&&(v(me,M),Z.push([me,C.clone()]))}re.push(Z)}k.push(re);let X=2*P,te=2;for(let K=0;K<f;K++){let Z=X*K,Q=X*((K+1)%f),$=[H[Z]];for(let le=1;le<P;le++){B=H[Z+le],V=H[Q+le],$.push(B);for(let ne=1,ce=le-te+1;ne<=ce;ne++)h.lerpVectors(B,V,ne/(ce+1)),h.sub(M).setLength(q[K]).add(M),$.push(h.clone());$.push(V)}for(let le=0;le<P;le++)$.push(H[le+P+Z]);$.push(H[Q+P]);let ue=E.map(le=>$[le]);s.push(...ue.map(le=>[le.x,le.y,le.z]).flat()),c.push(...ue.map(le=>(v(le,M),[C.x,C.y,C.z])).flat())}}let W=[];for(let F=0;F<g.length;F++)for(let j=0;j<f;j++){let H=g[F][j];if(H<D){let q=g[H].findIndex(X=>X%D==F),re=k[F][j],ee=k[H][q];for(let X=0;X<P;X++){let te=re[X],K=ee[P-X],Z=re[X+1],Q=ee[P-(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[P][0],re[P][0],ee[0][0])}}for(;W.length;){let F,j,H,q;[F,j]=W.splice(0,2);let re=[F];for(;F!=j;)re.push(j),H=W.indexOf(j),q=H%2,j=W.splice(H-q,2)[1-q];C.subVectors(re[0],re[1]).cross(h.subVectors(re[0],re[2])).normalize();let ee=C.dot(re[0])<0;ee&&C.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(C.x,C.y,C.z)})}}function p(){let d=new Tt.Vector3;for(let T=0;T<s.length;T+=3){d.x=s[T+0],d.y=s[T+1],d.z=s[T+2];let g=v(d)/2/Math.PI+.5,D=A(d)/Math.PI+.5;l.push(g,1-D)}let f=new Tt.Vector3,h=new Tt.Vector3,m=new Tt.Vector3,y=new Tt.Vector3,b=new Tt.Vector2,S=new Tt.Vector2,P=new Tt.Vector2,C=(T,g,D,E)=>{E<0&&T.x===1&&(l[g]=T.x-1),D.x===0&&D.z===0&&(l[g]=E/2/Math.PI+.5)};for(let T=0,g=0;T<s.length;T+=9,g+=6){f.set(s[T+0],s[T+1],s[T+2]),h.set(s[T+3],s[T+4],s[T+5]),m.set(s[T+6],s[T+7],s[T+8]),b.set(l[g+0],l[g+1]),S.set(l[g+2],l[g+3]),P.set(l[g+4],l[g+5]),y.copy(f).add(h).add(m).divideScalar(3);let D=v(y);C(b,g+0,f,D),C(S,g+2,h,D),C(P,g+4,m,D)}for(let T=0;T<l.length;T+=6){let g=l[T+0],D=l[T+2],E=l[T+4],M=Math.max(g,D,E),N=Math.min(g,D,E);M>.9&&N<.1&&(g<.2&&(l[T+0]+=1),D<.2&&(l[T+2]+=1),E<.2&&(l[T+4]+=1))}function v(T){return Math.atan2(T.z,-T.x)}function A(T){return Math.atan2(-T.y,Math.sqrt(T.x*T.x+T.z*T.z))}}}static fromJSON(r){return new Vn(r.vertices,r.indices,r.radius,r.corner,r.cornerSides)}};var e0=require("three"),t0=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 fl(r*.5,i,a):new e0.DodecahedronGeometry(r*.5,o);return s.scale(1,e/r,t/r),Object.assign(s,{userData:{...n,type:"DodecahedronGeometry"}})}},fl=class extends Vn{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 fl(r.radius,r.corner,r.cornerSides)}};var Ye=require("three");var Ee=require("three"),hl=1e-12,Ba=class{constructor(r){this.position=new Ee.Vector2;this.startPosition=new Ee.Vector2;this.uuid=Ee.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 Ba(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},Ra=class extends Ba{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new Ra(this.parent).copy(this)}},io=class extends Ba{constructor(e,t){super(t);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new Ra(this),new Ra(this))}static create(e,t){let o=new io(e,new Ee.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 io(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 Ee.Vector2,t=new Ee.Vector2){let[o,i]=this.computeTangents();return o&&i&&(r0(o,e),r0(i,t)),[e,t]}computeTangent(e=new Ee.Vector2){let[t,o]=this.computeTangents();return t&&o&&e.copy(t).add(o).normalize(),e}computeNormal(e=new Ee.Vector2){let[t,o]=this.computeNormals();return e.copy(t).add(o).normalize(),e}};function r0(n,r=new Ee.Vector2){let e=n.length();return r.set(-n.y/e,n.x/e)}var pf=n=>n,La=new Ee.Vector2,Nu=new Ee.Vector2,gI=new Ee.Vector2,xI=new Ee.Vector2,bI=new Ee.Vector2,vI=new Ee.Vector2,n0=new Ee.Vector3,i0=new Ee.Vector3;function a0(n){let r=new Ee.Vector2;r.addVectors(n.v0,La.subVectors(n.v1,n.v0).multiplyScalar(2/3));let e=new Ee.Vector2;return e.addVectors(n.v2,Nu.subVectors(n.v1,n.v2).multiplyScalar(2/3)),new Ee.CubicBezierCurve(n.v0,r,e,n.v2)}function ml(n,r,e=Number.EPSILON){return Math.abs(n-r)<e}function SI(n,r,e=Number.EPSILON){return n.distanceTo(r)<e}function wI(n,r,e=Number.EPSILON){return n.distanceTo(r)<e}function ff(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 s0(n,r,e){return o0(n,r)&&o0(r,e)&&df(n.position,r.position,e.position)}function df(n,r,e){return La.copy(r).sub(n).cross(Nu.copy(e).sub(n))===0}function l0(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 c0(n,r,e){let t=n.distanceTo(e),o=r.distanceTo(e);return t<o?r:n}function u0(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 ff(r,n,e)>Math.PI&&(u*=-1),ml(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 hf(n,r){return n.position.equals(n.controls[1].position)&&r.position.equals(r.controls[0].position)}function o0(n,r){return df(n.position,n.controls[1].position,r.position)&&df(n.position,r.controls[0].position,r.position)}function d0(n,r,e,t,o=.5){let i=La.subVectors(r,n).multiplyScalar(o).add(n),a=Nu.subVectors(e,r).multiplyScalar(o).add(r),s=gI.subVectors(t,e).multiplyScalar(o).add(e),l=i,c=xI.subVectors(a,i).multiplyScalar(o).add(i),u=bI.subVectors(s,a).multiplyScalar(o).add(a),p=s,d=vI.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 p0(n,r,e=12,t=!0){let o=i0.set(0,0,0),i,a=0,s=[];for(let l=0;l<r.length;l++){let c=pf(r[l]),u=La,p=zn(c,e);s.push(p);for(let d=0;d<=p;d++)if(c instanceof Ee.CubicBezierCurve||c instanceof Ee.QuadraticBezierCurve||c instanceof Ee.LineCurve){if(c.getPoint(d/p,u),o.set(u.x,u.y,0),i!==void 0&&wI(i,o))continue;i===void 0&&(i=n0),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 f0(n,r,e,t=12,o=!0){let i=i0.set(0,0,0),a=0,s=[];for(let l=0;l<r.length;l++){if(e[l]===!1)continue;let c,u=pf(r[l]),p=La,d=zn(u,t);s.push(d);for(let f=0;f<=d;f++)if(u instanceof Ee.CubicBezierCurve||u instanceof Ee.QuadraticBezierCurve||u instanceof Ee.LineCurve){if(u.getPoint(f/d,p),i.set(p.x,p.y,0),c?.equals(i))continue;c===void 0?c=n0:(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 mf(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=zn(a.roundedCurveCorner,r)*.5;o>0&&(t[o-1]+=l),s+=l}a.curveAfter!==void 0&&(s+=zn(a.curveAfter,r)),t.push(s)}return n.length>0&&e&&n[0].roundedCurveCorner!==void 0&&(t[n.length-1]+=zn(n[0].roundedCurveCorner,r)*.5),t}function zn(n,r=12){return n&&n instanceof Ee.EllipseCurve?r*2:n&&(n instanceof Ee.LineCurve||n instanceof Ee.LineCurve3)?1:n&&n instanceof Ee.SplineCurve?r*n.points.length:r}function h0(n,r,e=12,t=!0){let o,i=0;for(let a=0;a<r.length;a++){let s=pf(r[a]),l=zn(s,e),c=La;for(let u=0;u<=l;u++)if(s instanceof Ee.CubicBezierCurve||s instanceof Ee.QuadraticBezierCurve||s instanceof Ee.LineCurve){if(s.getPoint(u/l,c),o!==void 0&&SI(o,c,hl))continue;o===void 0&&(o=Nu),o.copy(c),n.push(c.x,c.y),i++}}return ml(n[0],n[n.length-2],hl)&&ml(n[1],n[n.length-1],hl)&&(n.pop(),n.pop()),t&&i>1&&!(ml(n[i-1],n[1],hl)&&ml(n[i-2],n[0],hl))&&(n.push(n[0],n[1]),i++),n}var yf=new Ye.Vector2,PI=new Ye.Vector2,CI=new Ye.Vector2,OI=new Ye.Vector2,AI=new Ye.Vector2,TI=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=>io.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=yf.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 io(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 p0(e,o?this.roundedCurves:this.curves,t,this.autoClose),i.reduce((a,s)=>a+s,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=mf(this.points,e,!1),this.roundedCurveDivisions=mf(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,t,o=12){return f0(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),h0(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=zn(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(hf(i,a)){let p=i.position.distanceTo(a.position);return i.position.distanceTo(yf.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){hf(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&&s0(s,a,l);if(!a.controlsMoved()&&c>0&&!u){let p=a.curveBefore,d=a.curveAfter;if(p===void 0||d===void 0)continue;let f=a.roundedCurveBefore,h=a.roundedCurveAfter,m=p.getLength(),y=d.getLength(),b=Math.min(c,m*.499),S=Math.min(c,y*.499),P=Math.min(b,S),C=1-P/m,v=P/y,A=p.getPointAt(C,yf),T=d.getPointAt(v,PI);this._subSplitCurve(p,f,C,A,void 0),this._subSplitCurve(d,h,v,void 0,T);let g;if(this.useCubicForRoundedCorners){let D=ff(A,a.position,T)/2,E=Math.tan(D)*A.distanceTo(a.position),[M,N]=l0(A,T,E,CI,OI),_=c0(M,N,a.position),[B,V]=u0(_,A,T,E,AI,TI);g=new Ye.CubicBezierCurve(A.clone(),B.clone(),V.clone(),T.clone())}else g=new Ye.QuadraticBezierCurve(A.clone(),a.position.clone(),T.clone());a.roundedCurveCorner=g,this.roundedCurves.splice(o+t,0,g),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=d0(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],f=new io(Ye.MathUtils.generateUUID(),new Ye.Vector2(a,s));f.controls[0].position.set(l,c),f.controls[1].position.set(u,p),f.roundness=d,this.points.push(f)}return this.shapeHoles=e.shapeHoles?.length?e.shapeHoles.map(o=>{let 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]=a0(a[l]));for(l=0,c=a.length;l<c;l++){let d=a[l],f=l>0?a[l-1]:null,h;d instanceof Ye.CubicBezierCurve?(h=this.createPoint(d.v0),h.controls[1].position.copy(d.v1)):d instanceof Ye.LineCurve&&(h=this.createPoint(d.v1)),h!==void 0&&(f!==null&&o(h,f),s.push(h))}let u=a[a.length-1],p=!1;return u instanceof 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 xf=Math.PI*2;function gf({x:n,y:r},e,t,o,i){return{x:n*e+o,y:r*t+i}}function II(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 m0(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 MI(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),f=Math.pow(s,2),h=u*p-u*f-p*d;h<0&&(h=0),h/=u*f+p*d,h=Math.sqrt(h)*(l===c?-1:1);let m=h*o/i*s,y=h*-i/o*a,b=m+(n+e)/2,S=y+(r+t)/2,P=(a-m)/o,C=(s-y)/i,v=(-a-m)/o,A=(-s-y)/i,T=m0(1,0,P,C),g=m0(P,C,v,A);return!c&&g>0&&(g-=xf),c&&g<0&&(g+=xf),{centerx:b,centery:S,ang1:T,ang2:g}}function y0({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=MI(n,r,e,t,o,i,c,u,a,s),{ang1:f,ang2:h}=d,{centerx:m,centery:y}=d,b=Math.abs(h)/(xf/4);Math.abs(1-b)<1e-7&&(b=1);let S=Math.max(Math.ceil(b),1);h/=S;for(let P=0;P<S;P++)l.push(II(f,h)),f+=h;return l.map(P=>{let{x:C,y:v}=gf(P[0],o,i,m,y),{x:A,y:T}=gf(P[1],o,i,m,y),{x:g,y:D}=gf(P[2],o,i,m,y);return{x1:C,y1:v,x2:A,y2:T,x:g,y:D}})}var vi=require("three");var qe;(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"})(qe||(qe={}));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 Se=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}(),yl=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}(),Du=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}(),Va=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}(),g0=function(){function n(){var r=new Va,e=new yl,t=new Du(0),o=new Du(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 Du(0),t=new Du(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 Va,e=new Va,t=new yl,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 Va;this.makeVertex_(i,e,r.Org),r.Org.anEdge=r}if(!t){var a=new yl;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 yl;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 Va;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 yl;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&&Se.vertCCW(t.Lprev.Org,t.Org,i.Lnext.Lnext.Org)&&Se.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}(),x0=function(){function n(){this.handle=null}return n}(),b0=function(){function n(){this.key=null,this.node=0}return n}(),EI=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 x0,this.handles[t]=new b0;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 x0;for(i=this.handles.length,this.handles.length=this.max+1,o=i;o<this.handles.length;o++)this.handles[o]=new b0}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}(),bf=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}(),v0=function(){function n(){this.key=null,this.next=null,this.prev=null}return n}(),NI=function(){function n(r,e){this.frame=r,this.leq=e,this.head=new v0,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 v0;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}(),DI=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?Se.vertLeq(i.Org,a.Org)?Se.edgeSign(a.Dst,i.Org,a.Org)<=0:Se.edgeSign(i.Dst,a.Org,i.Org)>=0:Se.edgeSign(a.Dst,o,a.Org)<=0;if(a.Dst===o)return Se.edgeSign(i.Dst,o,i.Org)>=0;var s=Se.edgeEval(i.Dst,o,i.Org),l=Se.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 bf;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 qe.ODD:return(e&1)!==0;case qe.NONZERO:return e!==0;case qe.POSITIVE:return e>0;case qe.NEGATIVE:return e<0;case qe.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(Se.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=Se.vertL1dist(e,r),i=Se.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(Se.vertLeq(o.Org,i.Org)){if(Se.edgeSign(i.Dst,o.Org,i.Org)>0)return!1;Se.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(Se.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(!Se.vertEq(o.Dst,i.Dst)),Se.vertLeq(o.Dst,i.Dst)){if(Se.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(Se.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 Va,f,h;if(Pe(!Se.vertEq(c,l)),Pe(Se.edgeSign(l,r.event,a)<=0),Pe(Se.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(Se.vertLeq(a,s)){if(Se.edgeSign(c,a,s)>0)return!1}else if(Se.edgeSign(l,s,a)<0)return!1;return n.debugEvent(r),Se.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)),Se.vertLeq(d,r.event)&&(d.s=r.event.s,d.t=r.event.t),f=Se.vertLeq(a,s)?a:s,Se.vertLeq(f,d)&&(d.s=f.s,d.t=f.t),Se.vertEq(d,a)||Se.vertEq(d,s)?(n.checkForRightSplice(r,e),!1):!Se.vertEq(l,r.event)&&Se.edgeSign(l,r.event,d)>=0||!Se.vertEq(c,r.event)&&Se.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),h=n.regionBelow(e).eUp.Rprev,t.eUp=i.Oprev,i=n.finishLeftRegions(r,t,null),n.addRightEdges(r,e,i.Onext,o.Rprev,h,!0),!0):(Se.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),Se.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),Se.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),Se.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}Se.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,Se.vertEq(o.Org,t)){Pe(!1),n.spliceMergeVertices(r,o,t.anEdge);return}if(!Se.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),Se.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 bf;if(c.eUp=e.anEdge.Sym,t=r.dict.search(c).key,o=n.regionBelow(t),!!o){if(a=t.eUp,s=o.eUp,Se.edgeSign(a.Dst,e,a.Org)===0){n.connectLeftDegenerate(r,t,e);return}if(i=Se.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 bf,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 NI(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,Se.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 EI(i,Se.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||!Se.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}(),_I=function(){function n(){this.mesh=new g0,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=qe.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],f=[null,null,null],h=[null,null,null],m=this.mesh.vHead;e=m.next;for(var y=0;y<3;++y)i=e.coords[y],c[y]=i,h[y]=e,l[y]=i,f[y]=e;for(e=m.next;e!==m;e=e.next)for(var b=0;b<3;++b)i=e.coords[b],i<c[b]&&(c[b]=i,h[b]=e),i>l[b]&&(l[b]=i,f[b]=e);var S=0;if(l[1]-c[1]>l[0]-c[0]&&(S=1),l[2]-c[2]>l[S]-c[S]&&(S=2),c[S]>=l[S]){r[0]=0,r[1]=0,r[2]=1;return}for(s=0,t=h[S],o=f[S],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(;Se.vertLeq(t.Dst,t.Org);t=t.Lprev);for(;Se.vertLeq(t.Org,t.Dst);t=t.Lnext);o=t.Lprev;for(var i=void 0;t.Lnext!==o;)if(Se.vertLeq(t.Dst,o.Org)){for(;o.Lnext!==t&&(Se.edgeGoesLeft(o.Lnext)||Se.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&&(Se.edgeGoesRight(t.Lprev)||Se.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 f=l;f<t;++f)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 h=l;h<t;++h)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 g0),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=qe.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_(),DI.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 ao(n){var r=n.windingRule,e=r===void 0?qe.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,f=n.strict,h=f===void 0?!0:f,m=n.debug,y=m===void 0?!1:m;if(!d&&h)throw new Error("Contours can't be empty");if(!!d){var b=new _I;n.edgeCreateCallback&&(b.edgeCreateCallback=n.edgeCreateCallback),n.vertexIdCallback&&(b.vertexIdCallback=n.vertexIdCallback);for(var S=0;S<d.length;S++)b.addContour(l||2,d[S]);return b.tesselate(e,o,a,l,u,h),{vertices:b.vertices,vertexIndices:b.vertexIndices,vertexCount:b.vertexCount,elements:b.elements,elementCount:b.elementCount,mesh:y?b.mesh:void 0}}}var e5=qe.ODD,t5=qe.NONZERO,r5=qe.POSITIVE,o5=qe.NEGATIVE,n5=qe.ABS_GEQ_TWO,i5=bt.POLYGONS,a5=bt.CONNECTED_POLYGONS,s5=bt.BOUNDARY_CONTOURS;var so=require("three");var _u=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*_u.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*_u.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)}},gl=_u;gl.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var xl=class{constructor(r=[],e=(t,o)=>t<o?-1:t>o?1:0){if(this.data=r,this.length=this.data.length,this.compare=e,this.length>0)for(let t=(this.length>>1)-1;t>=0;t--)this._down(t)}push(r){this.data.push(r),this._up(this.length++)}pop(){if(this.length===0)return;let r=this.data[0],e=this.data.pop();return--this.length>0&&(this.data[0]=e,this._down(0)),r}peek(){return this.data[0]}_up(r){let{data:e,compare:t}=this,o=e[r];for(;r>0;){let i=r-1>>1,a=e[i];if(t(o,a)>=0)break;e[r]=a,r=i}e[r]=o}_down(r){let{data:e,compare:t}=this,o=this.length>>1,i=e[r];for(;r<o;){let a=(r<<1)+1,s=a+1;if(s<this.length&&t(e[s],e[a])<0&&(a=s),t(e[a],i)>=0)break;e[r]=e[a],r=a}e[r]=i}};function vf(n,r,e=1,t=!1){let o=1/0,i=1/0,a=-1/0,s=-1/0;for(let[S,P]of n[0])S<o&&(o=S),P<i&&(i=P),S>a&&(a=S),P>s&&(s=P);let l=a-o,c=s-i,u=Math.max(e,Math.min(l,c));if(u===e){let S=[o,i];return S.distance=0,S.distance}let p=new xl([],(S,P)=>P.max-S.max),d=RI(n),f=new Bu(o+l/2,i+c/2,0,n);f.d>d.d&&(d=f);let h=2;function m(S,P,C){let v=new Bu(S,P,C,n);if(h++,v.max>d.d+e&&p.push(v),v.d>d.d&&(d=v,t&&console.log(`found best ${Math.round(1e4*v.d)/1e4} after ${h} probes`),d.d>r))return r}let y=u/2;for(let S=o;S<a;S+=u)for(let P=i;P<s;P+=u)m(S+y,P+y,y);for(;p.length;){let{max:S,x:P,y:C,h:v}=p.pop();if(S-d.d<=e)break;y=v/2,m(P-y,C-y,y),m(P+y,C-y,y),m(P-y,C+y,y),m(P+y,C+y,y)}t&&console.log(`num probes: ${h}
3
+ best distance: ${d.d}`);let b=[d.x,d.y];return b.distance=d.d,b.distance}function Bu(n,r,e,t){this.x=n,this.y=r,this.h=e,this.d=BI(n,r,t),this.max=this.d+this.h*Math.SQRT2}function BI(n,r,e){let t=!1,o=1/0;for(let i of e)for(let a=0,s=i.length,l=s-1;a<s;l=a++){let c=i[a],u=i[l];c[1]>r!=u[1]>r&&n<(u[0]-c[0])*(r-c[1])/(u[1]-c[1])+c[0]&&(t=!t),o=Math.min(o,LI(n,r,c,u))}return o===0?0:(t?1:-1)*Math.sqrt(o)}function RI(n){let r=0,e=0,t=0,o=n[0];for(let a=0,s=o.length,l=s-1;a<s;l=a++){let c=o[a],u=o[l],p=c[0]*u[1]-u[0]*c[1];e+=(c[0]+u[0])*p,t+=(c[1]+u[1])*p,r+=p*3}let i=new Bu(e/r,t/r,0,n);return r===0||i.d<0?new Bu(o[0][0],o[0][1],0,n):i}function LI(n,r,e,t){let o=e[0],i=e[1],a=t[0]-o,s=t[1]-i;if(a!==0||s!==0){let 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 bl={vertices:[160,160,-160,160,-160,-160,160,-160],vertexIndices:[1,0,3,2],vertexCount:4,elements:[0,4],elementCount:1,mesh:void 0},wf={vertices:[],vertexIndices:[],vertexCount:0,elements:[],elementCount:0,mesh:void 0},Pf={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},Sf=(n,r)=>([e,t])=>(t<e&&(t+=r),(n>=e?n:n+r)<=t),Gn=class extends so.BufferGeometry{constructor(e,t,o=0,i=12,a=3,s=qe.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 N=M.extractShapePointsToFlatArray([],i),_=[];for(let B=N.length-1;B>=1;B-=2){let V=N[B-1],k=N[B-0];_.push(V,k)}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 N=u[M],_=[];for(let B=0;B<N.length;B+=2)_.push([N[B],N[B+1]]);p.push(_)}let f;e.isText?f=new so.Box2().setFromPoints(e.points.map(N=>N.position)).getSize(new so.Vector2).length()*.1:p[0].length===0?f=o:o>0?f=vf(p,o):f=1e-5,o<=0?(this._bevel=0,this._bevelSegments=0):(this._bevel=Math.min(o,f,t/2),this._bevelSegments=Math.floor(a));let h;try{h=ao({windingRule:s,elementType:bt.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[c]})}catch{h=bl}let m;try{m=ao({windingRule:qe.ODD,elementType:bt.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...u]})}catch{m=wf}if(!h)throw new Error("error generating geometry");let y=h.elementCount;if(m){h.elementCount+=m.elementCount;for(let M=0;M<m.elements.length;M++){let N=m.elements[M],_=M%2===0?h.vertexCount:0;h.elements.push(N+_)}for(let M=0;M<m.vertexIndices.length;M++){let N=m.vertexIndices[M],_=h.vertexCount;h.vertexIndices.push(N+_)}for(let M=0;M<m.vertices.length;M++){let N=m.vertices[M];h.vertices.push(N)}}let b=1/0,S=-1/0,P=1/0,C=-1/0;for(let M=0,N=h.vertexCount;M<N;M++){let _=M*2,B=h.vertices[_+0],V=h.vertices[_+1];B<b&&(b=B),B>S&&(S=B),V<P&&(P=V),V>C&&(C=V)}this._minX=b,this._minY=P,this._width=S-b,this._height=C-P,this._buffer=new gl(this._computeBufferEstimatedSize(h));let v=[],A=[];for(let M=h.elementCount-1;M>=0;M--){let N=M>=y,_=M*2,B=h.elements[_+0],V=h.elements[_+1],k=B+V,L={start:B,count:V,normals:[],continuous:[],concave:[]},W=B,F=k-1,j=B+1,H=this._shape.roundedCurves.length;do{let te=W-B,K=h.vertices[F*2+0],Z=h.vertices[F*2+1],Q=h.vertices[W*2+0],$=h.vertices[W*2+1],ue=h.vertices[j*2+0],le=h.vertices[j*2+1],ne=Q-K,ce=$-Z,ae=Math.sqrt(ne*ne+ce*ce);ne/=ae,ce/=ae;let ye=Q-ue,fe=$-le,me=Math.sqrt(ye*ye+fe*fe);ye/=me,fe/=me,L.normals[te*2+0]=-fe,L.normals[te*2+1]=ye,L.concave[te]=ne*fe-ce*ye>0;let be=h.vertexIndices[W];if(Array.isArray(be))L.continuous[te]=!1;else{let[ge,O]=this._shape.getCurveIndexFromVertexId(be-1,!0);if(O>0&&O<1)L.continuous[te]=!0;else{let ie=O===1?ge+1:ge-1;ie=(ie+H)%H;let Ve=O===1?0:1,ke=this._shape.roundedCurves[ge].getTangent(O),ze=this._shape.roundedCurves[ie].getTangent(Ve);L.continuous[te]=ke.dot(ze)>.95}}N&&(L.normals[te*2+0]*=-1,L.normals[te*2+1]*=-1),[F,W,j]=[W,j,j+1],j>=k&&(j-=V)}while(j!==B+1);let q=[];q.push({bevelI:0,angle:0,size:0,boundary:{vertices:h.vertices.slice(B*2,k*2),vertexCount:V,vertexIndices:new Array(V).fill(!0).map((te,K)=>[K,K]),elements:[0,V],elementCount:1,mesh:null},reverseMap:[],insetPoints:h.vertices.slice(B*2,k*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<V;ae++){let ye=ae*2,fe=(ae-1+V)%V*2,me=h.vertices[L.start*2+ye+0],be=h.vertices[L.start*2+ye+1],ge=-L.normals[fe+0]*Z,O=-L.normals[fe+1]*Z,ie=-L.normals[ye+0]*Z,Ve=-L.normals[ye+1]*Z;if(L.concave[ae]||!L.concave[ae]&&N){let ke=Math.atan2(O,ge),ze=Math.atan2(Ve,ie);ze>ke&&(ze-=Math.PI*2);let Oe=ze-ke;if(L.continuous[ae]||N){let Lt=ke+Oe/2,De=Math.cos(Lt)*Z,_t=Math.sin(Lt)*Z;Q[2*ne+0]=me+De*(N?-1:1),Q[2*ne+1]=be+_t*(N?-1:1),le[ne]=ae,ne++}else{let Lt=Math.max(1,Math.floor(i/4*Math.abs(Oe)/Math.PI));for(let De=0;De<=Lt;De++){let _t=ke+Oe*(De/Lt),Vt=Math.cos(_t)*Z,ii=Math.sin(_t)*Z;Q[2*ne+0]=me+Vt,Q[2*ne+1]=be+ii,le[ne]=ae,ne++}}}else Q[2*ne+0]=me+ge,Q[2*ne+1]=be+O,le[ne]=ae,$[ae]=ne,ne++,Q[2*ne+0]=me,Q[2*ne+1]=be,le[ne]=ae,ne++,Q[2*ne+0]=me+ie,Q[2*ne+1]=be+Ve,le[ne]=ae,ue[ae]=ne,ne++}let ce=ao({windingRule:qe.POSITIVE,elementType:bt.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[Q],edgeCreateCallback:ae=>{let fe=ae.Org.idx,me=le[fe],be=le[(fe+1)%le.length];ae.idx=[me,be],ae.Sym.idx=[be,me]},vertexIdCallback:ae=>{let ye=ae.Lprev.idx;return[ye?ye[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[ye,fe]=ce.vertexIndices[ae];if(ye===fe)continue;let me=fe;fe<ye&&(me+=V);for(let be=ye;be<me;be++){let ge=be%V,O=(be+1)%V;if(!L.continuous[ge]||!L.continuous[O]){ce.vertexIndices[ae]=[ye,ge],ce.vertexIndices.splice(ae+1,0,[O,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=v.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=L.concave.length,le=0,ne=Sf(le,V);for(;!K.boundary.vertexIndices.filter(ne).length||!Z.boundary.vertexIndices.filter(ne).length;)le++,ne=Sf(le,V);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)%V;let ye=le,fe=0,me=this._buildBevelVert(L,K,(ce-1+Q)%Q,void 0,fe),be=this._buildBevelVert(L,Z,(ae-1+$)%$,void 0,fe),ge=me,O=be,ie,Ve,ke=!1;do{fe=(le||ue)/ue,ne=Sf(le,V);let ze=ee(K,ce,ne),Oe=ee(Z,ae,ne),Lt=ke;if(ke=!1,ze&&!Oe){for(let De=0;De<ze;De++)ie=this._buildBevelVert(L,K,(ce+De)%Q,De/(ze-1),fe),v.push(ge.topN,ie.topP,O.topN),l===!1&&v.push(ie.bottomP,ge.bottomN,O.bottomN),ge=ie;ke=!0}else if(!ze&&Oe)for(let De=0;De<Oe;De++)Ve=this._buildBevelVert(L,Z,(ae+De)%$,De/(Oe-1),fe),v.push(O.topN,ge.topP,Ve.topP),l===!1&&v.push(ge.bottomP,O.bottomN,Ve.bottomP),O=Ve;else if(ze&&Oe)if(ie=this._buildBevelVert(L,K,ce,0,fe),Ve=this._buildBevelVert(L,Z,ae,0,fe),Lt?(v.push(ge.topN,Ve.topP,O.topN),v.push(ge.topN,ie.topP,Ve.topP),l===!1&&(v.push(Ve.bottomP,ge.bottomN,O.bottomN),v.push(Ve.bottomP,ie.bottomP,ge.bottomN))):(v.push(O.topN,ge.topN,ie.topP),v.push(O.topN,ie.topP,Ve.topP),l===!1&&(v.push(ie.bottomP,ge.bottomN,O.bottomN),v.push(ie.bottomP,O.bottomN,Ve.bottomP))),ge=ie,O=Ve,ze===Oe)for(let De=1;De<ze;De++)ie=this._buildBevelVert(L,K,(ce+De)%Q,De/(ze-1),fe),Ve=this._buildBevelVert(L,Z,(ae+De)%$,De/(Oe-1),fe),v.push(ge.topN,ie.topP,O.topN),v.push(O.topN,ie.topP,Ve.topP),l===!1&&(v.push(ie.bottomP,ge.bottomN,O.bottomN),v.push(ie.bottomP,O.bottomN,Ve.bottomP)),ge=ie,O=Ve;else if(ze>Oe){let De=ze/Oe,_t=0;for(let Vt=1;Vt<ze;Vt++)ie=this._buildBevelVert(L,K,(ce+Vt)%Q,Vt/(ze-1),fe),v.push(ge.topN,ie.topP,O.topN),l===!1&&v.push(ie.bottomP,ge.bottomN,O.bottomN),ge=ie,Vt>(_t+1)*De&&(_t++,Ve=this._buildBevelVert(L,Z,(ae+_t)%$,_t/(Oe-1),fe),v.push(O.topN,ie.topP,Ve.topP),l===!1&&v.push(ie.bottomP,O.bottomN,Ve.bottomP),O=Ve)}else{let De=Oe/ze,_t=0;for(let Vt=1;Vt<Oe;Vt++)Ve=this._buildBevelVert(L,Z,(ae+Vt)%$,Vt/(Oe-1),fe),v.push(O.topN,ie.topP,Ve.topP),l===!1&&v.push(ie.bottomP,O.bottomN,Ve.bottomP),O=Ve,Vt>(_t+1)*De&&(_t++,ie=this._buildBevelVert(L,K,(ce+_t)%Q,_t/(ze-1),fe),v.push(ge.topN,ie.topP,O.topN),l===!1&&v.push(ie.bottomP,ge.bottomN,O.bottomN),ge=ie)}ce=(ce+ze)%Q,ae=(ae+Oe)%$,le=(le+1)%ue}while(le!==ye)}if(l===!1&&this._depth>this._bevel*2&&this._buildWall(q,L,v),N){let te=[];for(let K=v.length-1;K>=X+2;K-=3){let Z=v[K-2],Q=v[K-1],$=v[K-0];te.push($,Q,Z)}v.splice(X,v.length-X,...te)}if(N){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)}A.push(te)}if(!N){let te=q[q.length-1],K;try{K=ao({windingRule:q.length>1?qe.POSITIVE:qe.ODD,elementType:bt.POLYGONS,vertexSize:2,strict:!0,contours:[te.insetPoints,...A]})}catch{K=Pf}if(!K)throw new Error("Error generating geometry for surface");u.length===0&&this._bevel<f&&Object.assign(this,{useNgonForTopBottomFaceDuringBake:!0});for(let Z=0;Z<K.elementCount*3;Z+=3){let Q=this._buildSurfaceVert(K,K.elements[Z+0],re),$=this._buildSurfaceVert(K,K.elements[Z+1],re),ue=this._buildSurfaceVert(K,K.elements[Z+2],re);v.push(Q.top,$.top,ue.top),l===!1&&v.push(ue.bottom,$.bottom,Q.bottom)}}this.vertexCache={}}this._buffer.shrink();let T=new so.BufferAttribute(Uint32Array.from(v),1),g=new so.BufferAttribute(this._buffer.positions,3),D=new so.BufferAttribute(this._buffer.normals,3),E=new so.BufferAttribute(this._buffer.uvs,2);g.needsUpdate=!0,D.needsUpdate=!0,E.needsUpdate=!0,T.needsUpdate=!0,this.setAttribute("position",g),this.setAttribute("normal",D),this.setAttribute("uv",E),this.setIndex(T)}_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,f={top:u+0,bottom:u+1};return this._buffer.positions[p+0]=a,this._buffer.positions[p+1]=s,this._buffer.positions[p+2]=this.forPathBevel?this._bevel:this._depth-o,this._buffer.normals[p+0]=0,this._buffer.normals[p+1]=0,this._buffer.normals[p+2]=1,this._buffer.uvs[d+0]=l,this._buffer.uvs[d+1]=c,this.forPathBevel===!1&&(this._buffer.positions[p+3]=a,this._buffer.positions[p+4]=s,this._buffer.positions[p+5]=o,this._buffer.normals[p+3]=0,this._buffer.normals[p+4]=0,this._buffer.normals[p+5]=-1,this._buffer.uvs[d+2]=l,this._buffer.uvs[d+3]=c),this.vertexCache[i]=f,f}_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,f;l!==c?(p=l,u=c,f=!1,d=e.continuous[p]&&e.continuous[u]):(u=l,p=(u-1+e.count)%e.count,f=e.concave[u]&&t.bevelI>0,d=e.continuous[u]||f);let h=Math.cos(t.angle),m=Math.sin(t.angle),y=o*2,b=u*2,S=p*2,P=t.boundary.vertices[y+0],C=t.boundary.vertices[y+1],v=(1-m)*this._bevel,A=(P-this._minX)/this._width,T=(C-this._minY)/this._height;this.forPathBevel&&(a!==void 0&&(A=a),T=1);let g=e.normals[b+0],D=e.normals[b+1],E=e.normals[S+0],M=e.normals[S+1];if(f){let k=E-g,L=M-D;g=g+k*(1-i),D=D+L*(1-i);let W=Math.sqrt(g*g+D*D);g/=W,D/=W}let N=this.forPathBevel?this._buffer.get(d?1:2):this._buffer.get(d?2:4),_=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[_+0]=P,this._buffer.positions[_+1]=C,this._buffer.positions[_+2]=(this.forPathBevel?this._bevel:this._depth)-v,this._buffer.normals[_+0]=g*h,this._buffer.normals[_+1]=D*h,this._buffer.normals[_+2]=m,this._buffer.uvs[B+0]=A,this._buffer.uvs[B+1]=T,this.forPathBevel===!1&&(this._buffer.positions[_+3]=P,this._buffer.positions[_+4]=C,this._buffer.positions[_+5]=v,this._buffer.normals[_+3]=g*h,this._buffer.normals[_+4]=D*h,this._buffer.normals[_+5]=-m,this._buffer.uvs[B+2]=T,this._buffer.uvs[B+3]=A),d||(this.forPathBevel?(N+=1,_+=3,B+=2):(N+=2,_+=6,B+=4),V.topP=N+0,V.bottomP=N+1,this._buffer.positions[_+0]=P,this._buffer.positions[_+1]=C,this._buffer.positions[_+2]=(this.forPathBevel?this._bevel:this._depth)-v,this._buffer.normals[_+0]=E*h,this._buffer.normals[_+1]=M*h,this._buffer.normals[_+2]=m,this._buffer.uvs[B+0]=A,this._buffer.uvs[B+1]=T,this.forPathBevel===!1&&(this._buffer.positions[_+3]=P,this._buffer.positions[_+4]=C,this._buffer.positions[_+5]=v,this._buffer.normals[_+3]=E*h,this._buffer.normals[_+4]=M*h,this._buffer.normals[_+5]=-m,this._buffer.uvs[B+2]=T,this._buffer.uvs[B+3]=A)),this.vertexCache[s]=V,V}clone(){let e=new Gn(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=qo(this.userData),e}};var za=class extends vi.BufferGeometry{constructor(e,t=12,o={}){super();this.type="ShapeGeometry";this.windingRule=qe.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:qe.ODD,elementType:bt.POLYGONS,polySize:3,vertexSize:2,strict:!0},o);let i=this._shape.extractShapePointsToFlatArray([],this._curveSegments),a=this._shape.shapeHoles.map(h=>h.extractShapePointsToFlatArray([],this._curveSegments)),s,l=!0,c=!0,u,p;for(let h=0,m=i.length/2;h<m;h++){let y=h*2,b=i[y+0],S=i[y+1];if(u!==void 0&&b!==u&&(l=!1),p!==void 0&&S!==p&&(c=!1),u=b,p=S,!l&&!c)break}if(!l&&!c)try{s=ao({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=bl}let d=s?.vertexCount??1,f=s?.elementCount??1;if(this._positionAttribute=new vi.BufferAttribute(new Float32Array(d*3),3),this._normalAttribute=new vi.BufferAttribute(new Float32Array(d*3),3),this._uvAttribute=new vi.BufferAttribute(new Float32Array(d*2),2),this._indexAttribute=new vi.BufferAttribute(new Uint32Array(f*3),1),s){let h=1/0,m=-1/0,y=1/0,b=-1/0;for(let C=0,v=d;C<v;C++){let A=C*2,T=s.vertices[A+0],g=s.vertices[A+1];T<h&&(h=T),T>m&&(m=T),g<y&&(y=g),g>b&&(b=g)}let S=m-h,P=b-y;for(let C=0,v=d;C<v;C++){let A=C*2,T=s.vertices[A+0],g=s.vertices[A+1],D=(T-h)/S,E=(g-y)/P;this._positionAttribute.setXYZ(C,T,g,0),this._normalAttribute.setXYZ(C,0,0,1),this._uvAttribute.setXY(C,D,E)}for(let C=0,v=f;C<v;C++){let A=C*3,T=s.elements[A+0],g=s.elements[A+1],D=s.elements[A+2];this._indexAttribute.setX(A+0,T),this._indexAttribute.setX(A+1,g),this._indexAttribute.setX(A+2,D)}}this.setAttribute("position",this._positionAttribute),this.setAttribute("normal",this._normalAttribute),this.setAttribute("uv",this._uvAttribute),this.setIndex(this._indexAttribute),this.setDrawRange(0,(s?.elementCount??1)*3)}clone(){let e=new za(this._shape,this._curveSegments);return e.userData=qo(this.userData),e}};var Ga=class extends Gn{constructor(e,t,o=0,i=12,a=3,s=qe.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 Ga(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=qo(this.userData),e}};var br=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:qe.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 za(n.shape,o,{windingRule:a}):s=new Ga(n.shape,r,e,o,t,a),Object.assign(s,{userData:{...n,type:"VectorGeometry"}})}};var lo=require("three"),w0=Math.PI*2,ja=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=lo.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=VI(c,u,p,o*Math.PI/180,t,i);c.isClosed=!0,c.update();let f;return o===0?(f=new lo.BufferGeometry,f.setAttribute("position",new lo.Float32BufferAttribute([],3))):f=br.create({shape:c,parameters:{subdivisions:d,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}}),Object.assign(f,{userData:{...n,type:"EllipseGeometry"}})}};function VI(n,r,e,t,o,i){if(t>=w0)return o>30||o%4===0?(GI(n,r,e,i),Math.round(o/4)):S0(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=y0({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?zI(n,a.x,a.y,c,o,r,e,i):S0(n,t,o,r,e,i)}function zI(n,r,e,t,o,i,a,s){let l=Math.round(o/t.length);n.addPoint(Fa(r,e));for(let c=0,u=t.length;c<u;c++){let p=t[c],d=n.points[c],f=Fa(p.x,p.y);d.controls[1].position.set(p.x1,p.y1),f.controls[0].position.set(p.x2,p.y2),n.addPoint(f)}return s>0?P0(n,i,a,s):n.addPoint(Fa(0,0)),l}function S0(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(Fa(c,u))}return r<w0?i>0?P0(n,t,o,i):n.addPoint(Fa(0,0)):(n.removePoint(n.points[n.points.length-1]),i>0&&C0(n,t,o,i)),1}function GI(n,r,e,t=0,o=0,i=0){let a=.5522847498,s=r*a,l=e*a;n.addPoint(Ru(o-r,i,o-r,i-l,o-r,i+l)),n.addPoint(Ru(o,i+e,o-s,i+e,o+s,i+e)),n.addPoint(Ru(o+r,i,o+r,i+l,o+r,i-l)),n.addPoint(Ru(o,i-e,o+s,i-e,o-s,i-e)),t>0&&C0(n,r,e,t)}function Fa(n,r){return new io(lo.MathUtils.generateUUID(),new lo.Vector2(n,r))}function Ru(n,r,e,t,o,i){let a=Fa(n,r);return a.controls[0].position.set(e,t),a.controls[1].position.set(o,i),a}function P0(n,r,e,t){O0(n,r,e,t).forEach(i=>n.addPoint(i))}function C0(n,r,e,t){let o=O0(n,r,e,t),i=new $e;o.forEach(a=>i.addPoint(a)),i.isClosed=!0,n.shapeHoles.push(i)}function O0(n,r,e,t){let o=t*r/100,i=o*(Math.abs(e)/Math.abs(r)),a=new lo.Vector2(o/r,i/e),s=n.points.map(l=>{let c=l.clone();return c.uuid=lo.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 co=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,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 vl(!1,r,e,t,o,i,a,s,l,c,u,p);return Object.assign(d,{userData:{...n,type:"HelixGeometry"}})}},Cf=new co.Uint32BufferAttribute([0,0,0],1),vl=class extends co.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 f=r&&a===1;f&&(d=0),p>100&&(p=100),p===0&&(d=0);let h=()=>new co.Vector3,m=new co.Vector3,y=h(),b=h(),S=h(),P,C,v,A,T,g,D,E,M=h(),N=h(),_=h(),B=h(),V=h(),k=h(),L=h(),W=h(),F=t-2*l+.001,j=F/a,H=Math.ceil(s*a),q=H+1,re=F/H,ee=-F/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,ye=Math.max(0,X*(q+ne)),[fe,me,be]=[3,3,2].map(yt=>Array(ye*yt).fill(0)),ge=[],O=i-l;function ie(yt,nt){let Zr=Math.PI/2;g=nt*re,E=2*Math.PI*(g%j)/j+Zr,g+=ee,D=Math.sin(E)*O,T=Math.cos(E)*O,r?yt.set(T,D,g):yt.set(T,g,D)}ie(m,-1e-10),ie(y,0),M.copy(m),ie(m,1);let Ve=m.distanceTo(y),ke=f?0:$+Q,ze=Ve*H+2*ke,Oe=Q,Lt=ze-ke;for(let yt=0;yt<=H;yt++){ie(b,yt),W.subVectors(b,M).normalize(),M.copy(b),k.copy(b).setComponent(+r+1,0).normalize(),L.crossVectors(W,k).normalize();let nt=yt===0,Zr=yt===H,tp=nt?3*Math.PI/2:K,rp=nt?Oe:Lt,sc=nt?X:ae,ai=nt?0:ye-X,wt=W.clone().multiplyScalar(nt?-$:$).add(b),op=W.clone().multiplyScalar(nt?-1:1).normalize();for(let Rr=0;Rr<X;Rr++){let Us=Rr*te;if(N.addVectors(m.copy(k).multiplyScalar(l*Math.cos(Us)),y.copy(L).multiplyScalar(l*Math.sin(Us))),_.copy(N).normalize(),nt||Zr){f||(ue=ai+Rr,[0,1,2].forEach(ar=>{fe[ue*3+ar]=wt.getComponent(ar),me[ue*3+ar]=op.getComponent(ar)}),be[ue*2]=+Zr,be[ue*2+1]=Rr/u),y.copy(_).multiplyScalar(Q),S.addVectors(b,y);for(let ar=0;ar<d;ar++){let si=ar*K+tp;B.addVectors(m.copy(W).multiplyScalar($*Math.sin(si)),y.copy(_).multiplyScalar($*Math.cos(si))),V.copy(B).normalize(),y.addVectors(S,B),B.normalize(),ue=sc+ar*X+Rr,[0,1,2].forEach(Vi=>{fe[ue*3+Vi]=y.getComponent(Vi),me[ue*3+Vi]=V.getComponent(Vi)});let lc=+nt+Math.sin(si);be[ue*2]=(rp+$*lc)/ze,be[ue*2+1]=Rr/u}}y.addVectors(b,N),ue=ce+yt*X+Rr,[0,1,2].forEach(ar=>{fe[ue*3+ar]=y.getComponent(ar),me[ue*3+ar]=_.getComponent(ar)}),be[ue*2]=(ke+yt*Ve)/ze,be[ue*2+1]=Rr/u}}let De=q+2*d+le,_t=1,[Vt,ii]=[+f,De-1];for(let yt=Vt;yt<=ii-1;yt++){let nt=f&&yt===ii-1;for(let Zr=0;Zr<X-1;Zr++)P=yt*X+Zr,C=P+1,v=(nt?Zr:P)+X,A=(nt?Zr+1:C)+X,yt===0?ge.push(C,A,v):yt===De-2?ge.push(P,C,v):ge.push(P,C,v,C,A,v)}this.setIndex(ge),this.setAttribute("position",new co.Float32BufferAttribute(fe,3)),this.setAttribute("normal",new co.Float32BufferAttribute(me,3)),this.setAttribute("uv",new co.Float32BufferAttribute(be,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,Cf.array=o,Cf.count=o.length,Cf}};var T0=require("three");var I0=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 T0.IcosahedronGeometry(r*.5,o);return s.scale(1,e/r,t/r),Object.assign(s,{userData:{...n,type:"IcosahedronGeometry"}})}},Sl=class extends Vn{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 Sl(r.radius,r.corner,r.cornerSides)}};var Lu=require("three"),M0=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 Lu.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 Lu.LatheGeometry(o.extractPoints(t).shape,e);return i.rotateZ(Math.PI),Object.assign(i,{userData:{...n,type:"LatheGeometry"}})}};var Eo=require("three");var rn=require("three");var pe=require("three"),Mo=new pe.Matrix4,Of=new pe.Object3D,Vu=new pe.Vector3,Fn=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 Mo.makeRotationX(r),this.applyMatrix4(Mo),this}rotateY(r){return Mo.makeRotationY(r),this.applyMatrix4(Mo),this}rotateZ(r){return Mo.makeRotationZ(r),this.applyMatrix4(Mo),this}translate(r,e,t){return Mo.makeTranslation(r,e,t),this.applyMatrix4(Mo),this}scale(r,e,t){return Mo.makeScale(r,e,t),this.applyMatrix4(Mo),this}lookAt(r){return Of.lookAt(r),Of.updateMatrix(),this.applyMatrix4(Of.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,f,h,m){let y=s===void 0?[]:[e.colors[d].clone(),e.colors[f].clone(),e.colors[h].clone()],b=a===void 0?[]:[new pe.Vector3().fromBufferAttribute(a,d),new pe.Vector3().fromBufferAttribute(a,f),new pe.Vector3().fromBufferAttribute(a,h)],S=new ka(d,f,h,b,y,m);e.faces.push(S),l!==void 0&&e.faceVertexUvs[0].push([new pe.Vector2().fromBufferAttribute(l,d),new pe.Vector2().fromBufferAttribute(l,f),new pe.Vector2().fromBufferAttribute(l,h)]),c!==void 0&&e.faceVertexUvs[1].push([new pe.Vector2().fromBufferAttribute(c,d),new pe.Vector2().fromBufferAttribute(c,f),new pe.Vector2().fromBufferAttribute(c,h)])}let p=r.groups;if(p.length>0)for(let d=0;d<p.length;d++){let f=p[d],h=f.start,m=f.count;for(let y=h,b=h+m;y<b;y+=3)t!==void 0?u(t.getX(y),t.getX(y+1),t.getX(y+2),f.materialIndex):u(y,y+1,y+2,f.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(Vu).negate(),this.translate(Vu.x,Vu.y,Vu.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 Fn;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,f=s.length;d<f;d++){let m=s[d].clone();e!==void 0&&m.applyMatrix4(e),a.push(m)}for(let d=0,f=p.length;d<f;d++)u.push(p[d].clone());for(let d=0,f=c.length;d<f;d++){let h=c[d],m,y,b=h.vertexNormals,S=h.vertexColors,P=new ka(h.a+i,h.b+i,h.c+i);P.normal.copy(h.normal),o!==void 0&&P.normal.applyMatrix3(o).normalize();for(let C=0,v=b.length;C<v;C++)m=b[C].clone(),o!==void 0&&m.applyMatrix3(o).normalize(),P.vertexNormals.push(m);P.color.copy(h.color);for(let C=0,v=S.length;C<v;C++)y=S[C],P.vertexColors.push(y.clone());P.materialIndex=h.materialIndex+t,l.push(P)}for(let d=0,f=r.faceVertexUvs.length;d<f;d++){let h=r.faceVertexUvs[d];this.faceVertexUvs[d]===void 0&&(this.faceVertexUvs[d]=[]);for(let m=0,y=h.length;m<y;m++){let b=h[m],S=[];for(let P=0,C=b.length;P<C;P++)S.push(b[P].clone());this.faceVertexUvs[d].push(S)}}}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 h=this.parameters;for(let m in h)h[m]!==void 0&&(r[m]=h[m]);return r}let e=[];for(let h=0;h<this.vertices.length;h++){let m=this.vertices[h];e.push(m.x,m.y,m.z)}let t=[],o=[],i={},a=[],s={},l=[],c={};for(let h=0;h<this.faces.length;h++){let m=this.faces[h],y=!0,b=!1,S=this.faceVertexUvs[0][h]!==void 0,P=m.normal.length()>0,C=m.vertexNormals.length>0,v=m.color.r!==1||m.color.g!==1||m.color.b!==1,A=m.vertexColors.length>0,T=0;if(T=u(T,0,0),T=u(T,1,y),T=u(T,2,b),T=u(T,3,S),T=u(T,4,P),T=u(T,5,C),T=u(T,6,v),T=u(T,7,A),t.push(T),t.push(m.a,m.b,m.c),t.push(m.materialIndex),S){let g=this.faceVertexUvs[0][h];t.push(f(g[0]),f(g[1]),f(g[2]))}if(P&&t.push(p(m.normal)),C){let g=m.vertexNormals;t.push(p(g[0]),p(g[1]),p(g[2]))}if(v&&t.push(d(m.color)),A){let g=m.vertexColors;t.push(d(g[0]),d(g[1]),d(g[2]))}}function u(h,m,y){return y?h|1<<m:h&~(1<<m)}function p(h){let m=h.x.toString()+h.y.toString()+h.z.toString();return i[m]!==void 0||(i[m]=o.length/3,o.push(h.x,h.y,h.z)),i[m]}function d(h){let m=h.r.toString()+h.g.toString()+h.b.toString();return s[m]!==void 0||(s[m]=a.length,a.push(h.getHex())),s[m]}function f(h){let m=h.x.toString()+h.y.toString();return c[m]!==void 0||(c[m]=l.length/2,l.push(h.x,h.y)),c[m]}return 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 Fn().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,f=e.length;d<f;d++)this.vertices.push(e[d].clone());let t=r.colors;for(let d=0,f=t.length;d<f;d++)this.colors.push(t[d].clone());let o=r.faces;for(let d=0,f=o.length;d<f;d++)this.faces.push(o[d].clone());for(let d=0,f=r.faceVertexUvs.length;d<f;d++){let h=r.faceVertexUvs[d];this.faceVertexUvs[d]===void 0&&(this.faceVertexUvs[d]=[]);for(let m=0,y=h.length;m<y;m++){let b=h[m],S=[];for(let P=0,C=b.length;P<C;P++){let v=b[P];S.push(v.clone())}this.faceVertexUvs[d].push(S)}}let i=r.morphTargets;for(let d=0,f=i.length;d<f;d++){let h={};if(h.name=i[d].name,i[d].vertices!==void 0){h.vertices=[];for(let m=0,y=i[d].vertices.length;m<y;m++)h.vertices.push(i[d].vertices[m].clone())}if(i[d].normals!==void 0){h.normals=[];for(let m=0,y=i[d].normals.length;m<y;m++)h.normals.push(i[d].normals[m].clone())}this.morphTargets.push(h)}let a=r.morphNormals;for(let d=0,f=a.length;d<f;d++){let h={};if(a[d].vertexNormals!==void 0){h.vertexNormals=[];for(let m=0,y=a[d].vertexNormals.length;m<y;m++){let b=a[d].vertexNormals[m],S={};S.a=b.a.clone(),S.b=b.b.clone(),S.c=b.c.clone(),h.vertexNormals.push(S)}}if(a[d].faceNormals!==void 0){h.faceNormals=[];for(let m=0,y=a[d].faceNormals.length;m<y;m++)h.faceNormals.push(a[d].faceNormals[m].clone())}this.morphNormals.push(h)}let s=r.skinWeights;for(let d=0,f=s.length;d<f;d++)this.skinWeights.push(s[d].clone());let l=r.skinIndices;for(let d=0,f=l.length;d<f;d++)this.skinIndices.push(l[d].clone());let c=r.lineDistances;for(let d=0,f=c.length;d<f;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",zu.call(new pe.BufferAttribute(t,3),r.vertices)),r.normals.length>0){let o=new Float32Array(r.normals.length*3);e.setAttribute("normal",zu.call(new pe.BufferAttribute(o,3),r.normals))}if(r.colors.length>0){let o=new Float32Array(r.colors.length*3);e.setAttribute("color",E0.call(new pe.BufferAttribute(o,3),r.colors))}if(r.uvs.length>0){let o=new Float32Array(r.uvs.length*2);e.setAttribute("uv",N0.call(new pe.BufferAttribute(o,2),r.uvs))}if(r.uvs2.length>0){let o=new Float32Array(r.uvs2.length*2);e.setAttribute("uv2",N0.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(zu.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",D0.call(o,r.skinIndices))}if(r.skinWeights.length>0){let o=new pe.Float32BufferAttribute(r.skinWeights.length*4,4);e.setAttribute("skinWeight",D0.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",zu.call(o,t.vertices)),e.setAttribute("color",E0.call(i,t.colors)),t.lineDistances&&t.lineDistances.length===t.vertices.length){let a=new pe.Float32BufferAttribute(t.lineDistances.length,1);e.setAttribute("lineDistance",FI.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}};Fn.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 b=0;b<l;b++)c[b]={name:s[b].name,data:[]};this.morphTargets.position=c}let u=r.morphNormals,p=u.length,d;if(p>0){d=[];for(let b=0;b<p;b++)d[b]={name:u[b].name,data:[]};this.morphTargets.normal=d}let f=r.skinIndices,h=r.skinWeights,m=f.length===t.length,y=h.length===t.length;t.length>0&&e.length===0&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(let b=0;b<e.length;b++){let S=e[b];this.vertices.push(t[S.a],t[S.b],t[S.c]);let P=S.vertexNormals;if(P.length===3)this.normals.push(P[0],P[1],P[2]);else{let v=S.normal;this.normals.push(v,v,v)}let C=S.vertexColors;if(C.length===3)this.colors.push(C[0],C[1],C[2]);else{let v=S.color;this.colors.push(v,v,v)}if(i===!0){let v=o[0][b];v!==void 0?this.uvs.push(v[0],v[1],v[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",b),this.uvs.push(new pe.Vector2,new pe.Vector2,new pe.Vector2))}if(a===!0){let v=o[1][b];v!==void 0?this.uvs2.push(v[0],v[1],v[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",b),this.uvs2.push(new pe.Vector2,new pe.Vector2,new pe.Vector2))}for(let v=0;v<l;v++){let A=s[v].vertices;c[v].data.push(A[S.a],A[S.b],A[S.c])}for(let v=0;v<p;v++){let A=u[v].vertexNormals[b];d[v].data.push(A.a,A.b,A.c)}m&&this.skinIndices.push(f[S.a],f[S.b],f[S.c]),y&&this.skinWeights.push(h[S.a],h[S.b],h[S.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}},ka=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 FI(n){return this.array.set(n),this}function E0(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 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.copyVector2sArray(): vector is undefined",t),i=new pe.Vector2),r[e++]=i.x,r[e++]=i.y}return this}function zu(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 D0(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 jI=["a","b","c"];function kI(n,r){switch(r){case"c":return n.c;case"b":return n.b;case"a":default:return n.a}}function Tf(n,r,e){let t=Math.min(n,r),o=Math.max(n,r),i=t+"_"+o;return e.get(i)}function If(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 UI(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],If(a.a,a.b,n,t,a,e),If(a.b,a.c,n,t,a,e),If(a.c,a.a,n,t,a,e)}function Gu(n,r,e,t,o){n.push(new ka(r,e,t,void 0,void 0,o))}function Ua(n,r){return Math.abs(r-n)/2+Math.min(n,r)}function Fu(n,r,e,t){n.push([r.clone(),e.clone(),t.clone()])}var ju=class{constructor(r=1){this.subdivisions=r}modify(r){r instanceof rn.BufferGeometry?r=new Fn().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 rn.Vector3,t,o,i,a,s,l=r.vertices,c=r.faces,u=r.faceVertexUvs[0],p=u!==void 0&&u.length>0,d=[],f=new Map;UI(l,c,d,f);let h=[],m,y,b,S,P,C,v;for(let Z of Array.from(f.keys())){for(y=f.get(Z),b=new rn.Vector3,P=3/8,C=1/8,v=y.faces.length,v!=2&&(P=.5,C=0,v!=1),b.addVectors(y.a,y.b).multiplyScalar(P),e.set(0,0,0),a=0;a<v;a++){for(S=y.faces[a],s=0;s<3&&(m=l[kI(S,jI[s])],!(m!==y.a&&m!==y.b));s++);m&&e.add(m)}e.multiplyScalar(C),b.add(e),y.newEdge=h.length,h.push(b)}let A,T,g,D,E,M,N,_=[];for(o=0,i=l.length;o<i;o++){for(M=l[o],E=d[o].edges,t=E.length,t==3?A=3/16:t>3&&(A=3/(8*t)),T=1-t*Number(A),g=A,t<=2&&(t==2?(T=3/4,g=1/8):t==1||t==0),N=M.clone().multiplyScalar(T),e.set(0,0,0),a=0;a<t;a++)D=E[a],m=D.a!==M?D.a:D.b,e.add(m);e.multiplyScalar(Number(g)),N.add(e),_.push(N)}let B=_.concat(h),V=_.length,k,L,W,F=[],j=[],H,q,re,ee,X=new rn.Vector2,te=new rn.Vector2,K=new rn.Vector2;for(o=0,i=c.length;o<i;o++)S=c[o],k=Number(Tf(S.a,S.b,f).newEdge)+V,L=Number(Tf(S.b,S.c,f).newEdge)+V,W=Number(Tf(S.c,S.a,f).newEdge)+V,Gu(F,k,L,W,S.materialIndex),Gu(F,S.a,k,W,S.materialIndex),Gu(F,S.b,L,k,S.materialIndex),Gu(F,S.c,W,L,S.materialIndex),p&&(H=u[o],q=H[0],re=H[1],ee=H[2],X.set(Ua(q.x,re.x),Ua(q.y,re.y)),te.set(Ua(re.x,ee.x),Ua(re.y,ee.y)),K.set(Ua(q.x,ee.x),Ua(q.y,ee.y)),Fu(j,X,te,K),Fu(j,q,X,K),Fu(j,re,te,X),Fu(j,ee,K,te));r.vertices=B,r.faces=F,p&&(r.faceVertexUvs[0]=j)}};var Gt=new Eo.Vector3,_0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=n.geometry??r?.geometry??new Eo.BufferGeometry().copy(new Eo.BoxGeometry(100,100,100)),t;r===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(Gt),t={width:Gt.x,height:Gt.y,depth:Gt.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 Eo.BufferGeometry().copy(new Eo.BoxGeometry(100,100,100)),a=i.userData.parameters;a===void 0?(i.computeBoundingBox(),i.boundingBox.getSize(Gt)):Gt.set(a.width,a.height,a.depth),(r!==Gt.x||e!==Gt.y||t!==Gt.z)&&i.scale(Gt.x===0?1:r/Gt.x,Gt.y===0?1:e/Gt.y,Gt.z===0?1:t/Gt.z);let s=i.originalGeometry;try{o>0?(s===void 0||a?.subdivisions!==o)&&(s===void 0&&(s=i),i=new ju(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 Eo.BufferGeometryLoader(e).load(n,o=>{let i=this.normalizeInputs({geometry:o});o.boundingBox.getSize(Gt);let a=100/Gt.x;Object.assign(i.parameters,{width:100,height:Gt.y*a,depth:Gt.z*a}),r(this.build(i))})}};var ku=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,f=2*Math.PI/t;for(let m=0;m<t;m++){let y=f*m,b=p+Math.sin(y)*c,S=d+Math.cos(y)*u;l.addPoint(l.createPoint(b,S))}l.isClosed=!0;for(let m=0,y=l.points.length;m<y;m++)l.points[m].roundness=o;l.roundness=o,l.update();let h=br.create({shape:l,parameters:{roundness:o,depth:i,extrudeBevelSize:a,extrudeBevelSegments:s}});return Object.assign(h,{userData:{...n,type:"PolygonGeometry"}})}};var He=require("three"),B0=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 Ef(r*.5,e,o,i,a,s,l);return c.scale(1,1,t/r),Object.assign(c,{userData:{...n,type:"PyramidGeometry"}})}};function wl(n,r,e){e.x=n.x*r.x,e.y=n.y,e.z=n.x*r.y}function Mf(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 HI(n,r,e){let t=n.clone().sub(r),o=e.clone().sub(r);return t.projectOnVector(o),t.add(r)}var Ef=class extends He.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,f=e/2,h=Math.PI/t,m=r*Math.cos(Math.PI/t),y=2*Math.PI/t,b=(t-2)*Math.PI/t,S=Math.PI-b,P=new He.Vector3(0,-f,0),C=new He.Vector3(0,f,0),v=new He.Vector2(r,-f),A=new He.Vector2(m,-f),T=new He.Vector2(0,C.y).sub(A),g=new He.Vector2(0,C.y).sub(v),D=new He.Vector2(T.y,-T.x).normalize(),E=new He.Vector2(g.y,-g.x).normalize(),N=r*Math.cos(Math.PI/t)*Math.tan((Math.PI-T.angle())/2)-1e-8;a=Math.min(a,N);let _;{let j=new He.Vector3(D.x,D.y,0),H=new He.Vector3(Math.cos(y)*j.x,j.y,Math.sin(y)*j.x);_=j.angleTo(H)}let B=a/Math.tan((Math.PI-T.angle())/2),V=a/Math.tan((Math.PI-_)/2),k=new He.Vector3;if(!i){c.push(P.x,P.y,P.z),u.push(0,-1,0),p.push(0,0);let j=d++,H=[],q=v.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+h,te=new He.Vector2(Math.sin(X),Math.cos(X));wl(q,te,k),c.push(k.x,k.y,k.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],j,H[(ee+1)%H.length])}let L=[];{let j=new He.Vector3,H=new He.Vector3,q=new He.Vector3,re=new He.Vector3,ee=new He.Vector3,X=new He.Vector3;for(let te=0;te<t;te++){let K=te/t*Math.PI*2+h,Z=(te+.5)/t*Math.PI*2+h,Q=(te+1)/t*Math.PI*2+h,$=new He.Vector2(Math.sin(K),Math.cos(K)),ue=new He.Vector2(Math.sin(Z),Math.cos(Z)),le=new He.Vector2(Math.sin(Q),Math.cos(Q));wl(v,$,H),wl(v,le,q),wl(D,ue,j),Mf(C,H,q,V,V,re),c.push(re.x,re.y,re.z),Mf(H,C,q,V,B,ee),c.push(ee.x,ee.y,ee.z),Mf(q,H,C,B,V,X),c.push(X.x,X.y,X.z),u.push(j.x,j.y,j.z),u.push(j.x,j.y,j.z),u.push(j.x,j.y,j.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 me=H.clone().add(q).multiplyScalar(.5),be=C.clone().sub(me).normalize(),O=P.clone().sub(me).normalize().add(be).normalize().multiplyScalar(-1),ie=X.clone().sub(ee);W(me,ie,O,T.angle())}let ye,fe;{let me=new He.Vector3;wl(E,le,me);let be=X.clone().add(re).multiplyScalar(.5);be=HI(be,q,C);let ge=X.clone().sub(re);[ye,fe]=W(be,ge,me,_,re.y)}{let me=ye,be=me.clone().setY(0).normalize(),ge=new He.Vector3(0,-1,0),O=be.clone().cross(ge);F(me,be,ge,O)}L.concat(fe);{let me=T.angle(),be=Math.PI-me,ge=C.clone();ge.y-=a/Math.sin(me-Math.PI/2);let O=new He.Vector3,ie=[];for(let ke=0;ke<s;ke++){let ze=[],Oe=Math.PI/2-be*ke/s,Lt=Math.cos(Oe),De=Math.sin(Oe),_t=Z;for(let Vt=0;Vt<=ke;Vt++){let ii=Math.cos(_t),yt=Math.sin(_t);j.x=Lt*yt,j.y=De,j.z=Lt*ii,O.copy(ge).addScaledVector(j,a),c.push(O.x,O.y,O.z),u.push(j.x,j.y,j.z),p.push(0,0),ze.push(d++),_t+=Math.PI*2/ke/t}ie.push(ze)}fe.reverse(),ie.push(fe);let Ve=ie.length-1;for(let ke=0;ke<Ve;ke++){let ze=ie[ke],Oe=ie[ke+1],Lt=ze.length-1;l.push(Oe[1],ze[0],Oe[0]);for(let De=1;De<=Lt;De++)l.push(ze[De],ze[De-1],Oe[De]),l.push(Oe[De+1],ze[De],Oe[De])}}}}}this.setIndex(l),this.setAttribute("position",new He.Float32BufferAttribute(c,3)),this.setAttribute("normal",new He.Float32BufferAttribute(u,3)),this.setAttribute("uv",new He.Float32BufferAttribute(p,2));function W(j,H,q,re,ee){let X=-re/2,te=(Math.PI-re)/2,K=H.clone().normalize().cross(q);j.addScaledVector(q,-a/Math.sin(te));let Z=new He.Vector3,Q=new He.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 ye=ae/$-.5;if(Z.copy(j),Z.addScaledVector(H,ye),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,ye=ae+($+1),fe=ye+1,me=ae+1;l.push(ae,ye,me),l.push(ye,fe,me)}return[j.clone().addScaledVector(H,.5),le]}function F(j,H,q,re){let ee=Math.PI/2,X=g.angle()-ee,te=[],K=new He.Vector3,Z=new He.Vector3;for(let $=0;$<=s;$++){let ue=[],le=$/s;for(let ne=0;ne<=$;ne++){let ae=(($?ne/$:0)-.5)*S,ye=Math.cos(ae),fe=Math.sin(ae),me=Math.atan(Math.tan(X)*ye),be=(ee+me)*le,ge=Math.cos(be),O=Math.sin(be);K.set(0,0,0),K.addScaledVector(H,O*ye),K.addScaledVector(q,ge),K.addScaledVector(re,O*fe),Z.copy(j).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 Ha=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(C,v,A){return v>e&&A>t?Math.min(C*e/v,C*t/A):v>e?C*e/v:A>t?C*t/A:C}let f=[];f[0]=o[0]===0?0:d(o[0],o[0]+o[3],o[0]+o[1]),f[1]=o[1]===0?0:d(o[1],o[1]+o[2],o[1]+o[0]),f[2]=o[2]===0?0:d(o[2],o[2]+o[1],o[2]+o[3]),f[3]=o[3]===0?0:d(o[3],o[3]+o[0],o[3]+o[2]);let h=u.x,m=p.x,y=p.y,b=u.y;r.addPoint(r.createPoint(h,y)),r.addPoint(r.createPoint(m,y)),r.addPoint(r.createPoint(m,b)),r.addPoint(r.createPoint(h,b)),r.isClosed=!0;let S=!0;for(let C=0,v=r.points.length;C<v;C++)r.points[C].roundness=f[C],C>0&&f[C]!==f[C-1]&&(S=!1);S&&(r.roundness=f[0]),r.useCubicForRoundedCorners=i!==1,r.update();let P=br.create({shape:r,parameters:{depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}});return Object.assign(P,{userData:{...n,type:"RectangleGeometry"}})}};var on=require("three"),R0=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=on.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 on.BufferGeometry,u.setAttribute("position",new on.Float32BufferAttribute([],3))):u=new on.SphereGeometry(.5*r,o,i,a,s,l,c*on.MathUtils.DEG2RAD),u.scale(1,e/r,t/r),Object.assign(u,{userData:{...n,type:"SphereGeometry"}})}};var L0=require("three"),V0=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 jn=require("three"),z0=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 Nf(r,e,t,o,i,a);return Object.assign(s,{userData:{...n,type:"BackdropGeometry"}})}},Nf=class extends jn.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,f=(Z=0,Q=0,$=0)=>new jn.Vector3(Z,Q,$),h=f(),m=f(),[y,b,S]=[e/2,r/2,t/2],P=-b,C=+b,[v,A,T]=[f(P,-y,+S),f(P,-y,-S),f(P,+y,-S)],g=(Z,Q=!1)=>Math.sin(Z-Math.PI/(1+ +Q)),D=(Z,Q=!1)=>Math.cos(Z-Math.PI/(1+ +Q));T.y=Math.sin(o)*e-y;let E=Math.cos(o)*e-S,M=v.z-u;o<=d?(T.z=Math.min(E,M),T.z==M&&(T.y-=(E-M)/Math.tan(d-o))):A.z=Math.min(A.z-E-S,v.z-u),h.subVectors(v,A),m.subVectors(T,A);let N=Math.min(h.length(),m.length())*i/100,_=N*Math.tan(o/2),B=N/Math.cos(o/2),V=h.clone().normalize().add(m.normalize()).setLength(B).add(A);h.set(0,g(o,!0),D(o,!0)),p.push([T,h.clone()]);let k=(Math.PI-o)/a;for(let Z=0;Z<=a;Z++){let Q=d+o+Z*k;h.set(0,Math.sin(Q)*_,Math.cos(Q)*_),h.add(V),m.set(0,g(Q),D(Q)),p.push([h.clone(),m.clone()])}p.push([v,f(0,1,0)]);let L=Math.sin(k/2)*_*2,W=p.length-1,F=p[0][0].distanceTo(p[1][0]),j=p[W-1][0].distanceTo(p[W][0]),H=F+L*a+j;p[0].push(1);for(let Z=0;Z<=a;Z++)p[Z+1].push(1-(F+Z*L)/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(P,q.y,q.z,P,X.y,X.z,C,q.y,q.z,C,q.y,q.z,P,X.y,X.z,C,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 jn.Float32BufferAttribute(s,3)),this.setAttribute("normal",new jn.Float32BufferAttribute(l,3)),this.setAttribute("uv",new jn.Float32BufferAttribute(c,2))}};var Uu=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,f=0,h=0,m=a*Math.PI/360/o,y=Math.PI/2*3*-1,b=p*t/100,S=d*t/100;if(o===3&&t===50){m=2*Math.PI/o;for(let C=0;C<o;C++){let v=m*C,A=f+Math.sin(v)*p,T=h+Math.cos(v)*d;u.addPoint(u.createPoint(A,T))}}else for(let C=0;C<o;C++){let v=f+Math.cos(y)*p,A=h+Math.sin(y)*d;u.addPoint(u.createPoint(v,A)),y+=m,v=f+Math.cos(y)*b,A=h+Math.sin(y)*S,C<=o,u.addPoint(u.createPoint(v,A)),y+=m}u.isClosed=!0;for(let C=0,v=u.points.length;C<v;C++)u.points[C].roundness=i;u.roundness=i,u.update();let P=br.create({shape:u,parameters:{roundness:i,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(P,{userData:{...n,type:"StarGeometry"}})}};var G0=require("three"),F0=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 G0.PlaneGeometry(r,e);return Object.assign(t,{userData:{...n,type:"TextFrameGeometry"}})}};var Wa=require("three");var j0=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=WI(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 WI(n,r,e,t,o,i,a,s,l,c,u){[r,e]=[e,r],a=r/2;let p=Wa.MathUtils.clamp(o/360,0,1);if(p===0){let d=new Wa.BufferGeometry;return d.setAttribute("position",new Wa.Float32BufferAttribute([],3)),d}return p===1&&(c=0),new vl(!0,n,r,e,t,p,i,a,s,l,c,u)}var k0=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,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 k0.TorusKnotGeometry(s,e,t,o,i,a);return Object.assign(l,{userData:{...n,type:"TorusKnotGeometry"}})}};var H0=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,f=l.points.length;d<f;d++)l.points[d].roundness=t;l.roundness=t,l.update();let p=br.create({shape:l,parameters:{roundness:t,depth:o,extrudeBevelSize:i,extrudeBevelSegments:a}});return Object.assign(p,{userData:{...n,type:"TriangleGeometry"}})}};var Ie=require("three");function W0(n,r){let e=2*Math.PI;return(n%e+e)%e===(r%e+e)%e}function qI(n){return/^(rgba)?\(\s*(\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d+(?:\.\d+)?))?\s*\)$/.exec(n.toLowerCase())}function $I(n,r,e){let t,o,i,a=Math.floor(n*6),s=n*6-a,l=e*(1-r),c=e*(1-s*r),u=e*(1-(1-s)*r);switch(a%6){case 0:t=e,o=u,i=l;break;case 1:t=c,o=e,i=l;break;case 2:t=l,o=e,i=u;break;case 3:t=l,o=c,i=e;break;case 4:t=u,o=l,i=e;break;case 5:default:t=e,o=l,i=c;break}return{r:t*255,g:o*255,b:i*255}}function YI(n,r,e){n/=255,r/=255,e/=255;let t=Math.max(n,r,e),o=Math.min(n,r,e),i=t,a=t-o,s=t==0?0:a/t,l;if(t==o)l=0;else{switch(t){case n:l=(r-e)/a+(r<e?6:0);break;case r:l=(e-n)/a+2;break;case e:default:l=(n-r)/a+4;break}l/=6}return{h:l,s,v:i}}function XI(n){return n=Math.floor(n),{r:n>>16&255,g:n>>8&255,b:n&255}}function KI(n,r,e){return(n<<16)+(r<<8)+e}function QI(n,r,e){return n=Math.round(n),r=Math.round(r),e=Math.round(e),"#"+[n,r,e].map(t=>t.toString(16).padStart(2,"0")).join("").toUpperCase()}function ZI(n){let r=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;n=n.replace(r,(t,o,i,a)=>String(o+o+i+i+a+a));let e=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(n);return e?{r:parseInt(e[1],16),g:parseInt(e[2],16),b:parseInt(e[3],16)}:null}var q0={parseRgba:qI,hsvToRgb:$I,rgbToHsv:YI,hexToRgb:XI,rgbToHex:KI,rgbToHexString:QI,hexStringToRgb:ZI};function nn(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 Hu=class{constructor(r,e,t){this.id=r;this.userAPI=e;this.result=void 0;this.error="null";this.isPrefetched=!1;this.isLoading=!1;this.isLoaded=!1;this.prefetchPromise=new Promise(r=>r());this.emitter=nn();this._innerCallUserAPI=async r=>{this.emitter.emit("start",{userAPIId:this.id}),this.isLoading=!0,this.isLoading=!1;try{this.result=await oM(this.userAPI,r),this.error="null",this.emitter.emit("success",{userAPIId:this.id})}catch(e){let t=e.message?.split("_:_")?.[0]?.replace("status:","")??"null";this.error=t,this.result=null,this.emitter.emit("error",{userAPIId:this.id})}this.isLoading=!1,this.isPrefetched=!0,this.isLoaded=!0};e?.integration?.type==="OpenAI"?this.result={content:""}:e.method==="GET"&&e.url!==""&&(this.prefetchPromise=this.prefetch(t)),this._debouncedCallUserAPI=this._innerCallUserAPI,this._updateDebouncedCallUserAPI(),this._debouncedPrefetch=Fc(this.prefetch,1e3,{trailing:!0})}_updateDebouncedCallUserAPI(){this._debouncedCallUserAPI=this.userAPI.debounce!==void 0&&this.userAPI.debounce>0?Fc(this._innerCallUserAPI,this.userAPI.debounce,{leading:!0,trailing:!0}):this._innerCallUserAPI}async prefetch(r){await this.callUserAPI(r)}async callUserAPI(r){await this._debouncedCallUserAPI(r)}update(r,e,t=!0){this.userAPI=r,this._updateDebouncedCallUserAPI(),this.userAPI.url!==""&&this.userAPI.method==="GET"&&t&&this._debouncedPrefetch(e)}retrieveValue(r){if(this.result)try{return ct.zoom(this.result,r)}catch(e){console.error(e)}}retrieveZoomedKeyValues(r){if(this.result){let e=r&&r.length?ct.zoom(this.result,r):this.result;if(rM(e))return Object.entries(e);if(tM(e))return e.map((t,o)=>[o.toString(),t]);throw eM(e)?new Error("This path points to a value, use retrieveValue() instead. "+r?.join(".")):new Error("Path error"+r?.join("."))}}dispose(){}on(r,e){this.emitter.on(r,e)}off(r,e){this.emitter.off(r,e)}get autostart(){return this.userAPI.autoStart}};function JI(n){let r=new Headers;return n.headers.forEach(e=>{e.data.key!==""&&r.append(e.data.key,e.data.value)}),r}function eM(n){return typeof n=="string"||typeof n=="number"||typeof n=="boolean"||n===null}function tM(n){return Array.isArray(n)}function rM(n){return typeof n=="object"&&n!==null}async function oM(n,r,e=new AbortController){let t,o=n.url,i=n.proxy?.enabled??!1,a;if(n.integration?.type==="OpenAI"){let l=Pl(n.integration.prompt===""?[]:JSON.parse(n.integration.prompt),r),c=n.integration.behavior===""?[]:Pl(JSON.parse(n.integration.behavior),r);a=`{
4
4
  "model": "${n.integration.model}",
5
5
  "messages": [${n.integration.useBehavior?`
6
6
  {
@@ -12,20 +12,20 @@ best distance: ${d.d}`);let g=[d.x,d.y];return g.distance=d.d,g.distance}functio
12
12
  "content": "${l}"
13
13
  }
14
14
  ]
15
- }`}if(i){o=`${!1&&window.location.search.includes("api-dev")?"https://api-dev.spline.design/":"https://apis.spline.design/"}file/${n.proxy.fileId}/external-api/request?uuidexternalapi=${n.proxy.proxyId}`;let u;a!==void 0?u=a:n.method==="POST"&&n.body&&(u=Ol(JSON.parse(n.body),r)),u!==void 0&&(o+=`&data=${encodeURIComponent(u.replace(/(\r\n|\n|\r|\t)/gm,""))}`)}else n.integration?.type==="OpenAI"?t=a:n.method==="POST"&&n.body&&(t=Ol(JSON.parse(n.body),r));let s=await fetch(o,{method:i?"GET":n.method,headers:i?void 0:tM(n),signal:e.signal,body:t});if(!s.ok)throw new Error("status:"+s.status+"_:_"+s.statusText);if(n.integration?.type==="OpenAI"){let l=await s.json();return i&&(l=l.response),{content:l.choices[0].message.content}}else{let l=await s.json();return i&&(l=l.response),l}}var Y0=(n,r)=>{if(typeof n=="string"){let e=r.getVariable(n);if(e)return Y0(e,r)}return Rn.isBoolean(n)?Rn.getDisplayedValue(n).toLowerCase():Rn.getDisplayedValue(n)},Ol=(n,r)=>n.map((e,t)=>{if("text"in e)return e.text;if("type"in e){if(e.type==="paragraph")return(t>0?`
16
- `:"")+Ol(e.children,r);if(e.type==="variable"){let o=r.getVariable(e.variableId);if(o!==void 0)return Y0(o,r)}}return""}).join("");var aM=new Ie.Matrix4,sM=new Ie.Matrix4;function lM(n,r,e){let t=[new Ie.Vector3,new Ie.Vector3,new Ie.Vector3],o=[new Ie.Vector3,new Ie.Vector3,new Ie.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=Ie.MathUtils.lerp(i.length(),s.length(),e);i.lerp(s,e).setLength(l)}),new Ie.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??ka.create({parameters:Up}).userData.shape;return{path:n.path??Sa.defaultData(),parameters:Object.assign(e,{width:t,height:o,depth:i,extrusion:{...fu,...e.extrusion}}),shapeData:a}}static build(n){if(n.path.points.length>=2){let e=new Rf(n);return Object.assign(e,{userData:{...n,type:"PathGeometry"}})}else return Object.assign(new Ie.BufferGeometry,{userData:{...n,type:"PathGeometry"}})}},Rf=class extends Ie.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)||!q0(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 j=this.inputs.path.isClosed?(F+s)%e.length:Math.min(F+s,e.length-1);u.push(e[j].clone()),p.push(t[j].clone())}let d=(F,j,H)=>{u[F]=u[F].clone().lerp(u[j],H),p[F]=lM(p[F],p[j],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,w=g>0?this.inputs.parameters.extrusion.capType:"flat",O=5;this.inputs.parameters.extrusion.shape.type==="Custom"&&(O=this.inputs.parameters.extrusion.shape.shapeQuality==="low"?5:12);let{regions:S,infos:C,vertices:T}=this._computeShapePoints(O),x=0,N;w==="round"&&(N=new Fn(this.inputs.shapeData,2*g,g,O,v,void 0,!0),x=N.getAttribute("position").count);let E=0,M=0;C.sort((F,j)=>F.start-j.start),C.forEach(F=>{F.verticesStart=E,F.verticesCount=F.continuous.reduce((j,H,q)=>j+(q===0||!H?2:1),0),M+=F.verticesCount,E=M});let D=M*c,_,B=0;if(this._isOpenEnded()&&w==="flat"){try{_=ao({windingRule:We.ODD,elementType:bt.POLYGONS,polySize:3,vertexSize:2,strict:!0,contours:S})}catch{_=Af}B=_.vertexCount}let V=D+2*B+x*2,k=D+2*B,L={positions:new Float32Array(V*3),normals:new Float32Array(V*3),uvs:new Float32Array(V*2)},W=[];if(C.forEach(F=>{this._extrudeRegion(F,T,p,u,L,W,this._isGeometryClosed()&&!this._isOpenEnded())}),_&&(this._closeEnd(_,D,W,L,p[0],u[0],!1),this._closeEnd(_,D+B,W,L,p[p.length-1],u[u.length-1],!0)),N){L.positions.set(N.getAttribute("position").array,k*3),L.normals.set(N.getAttribute("normal").array,k*3),L.uvs.set(N.getAttribute("uv").array,k*2);for(let q=k;q<k+x;q++)L.uvs[q*2+1]=1e-4;let F=W.length;W.push(...N.getIndex().array.map(q=>q+k)),k+=x,L.positions.set(N.getAttribute("position").array,k*3),L.normals.set(N.getAttribute("normal").array,k*3),L.uvs.set(N.getAttribute("uv").array,k*2);let j=W.length;W.push(...N.getIndex().array.map(q=>q+k)),this.setAttribute("position",new Ie.BufferAttribute(L.positions,3)),this.setAttribute("normal",new Ie.BufferAttribute(L.normals,3)),this.setAttribute("uv",new Ie.BufferAttribute(L.uvs,2)),this.setIndex(W);let H=aM;H.copy(p[p.length-1]).setPosition(u[u.length-1]),this.applyMatrix4OnRange(H,k,V),H.copy(p[0]).setPosition(u[0]).multiply(sM.makeScale(1,1,-1)),this.applyMatrix4OnRange(H,k-x,k),this.reverseIndicesOnRange(F,j)}else this.setAttribute("position",new Ie.BufferAttribute(L.positions,3)),this.setAttribute("normal",new Ie.BufferAttribute(L.normals,3)),this.setAttribute("uv",new Ie.BufferAttribute(L.uvs,2)),this.setIndex(W)}_extractPathPoints(){let t=Bu(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 Ie.Vector3,s=new Ie.Vector3,l=new Ie.Vector3,c=new Ie.Vector3,u=new Ie.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 w;y===o-1?w=i?e[1]:g.clone().multiplyScalar(2).sub(e[y-1]):w=e[y+1];let O=g.clone().sub(v).normalize(),S=w.clone().sub(g).normalize(),C=O.clone().add(S).normalize();l.copy(C),y===0&&(C.equals(u)||C.clone().negate().equals(u))&&u.set(0,0,1);let T=u.clone().cross(C).normalize(),x=C.clone().cross(T).normalize();u.copy(x),c.copy(T),y===0&&(a.copy(x),s.copy(C));let N=new Ie.Matrix4().makeBasis(T,x,C);t.push(N)}let p=i?s:l,d=i?a:new Ie.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 Ie.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 Ie.Matrix4,p=new Ie.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(Ie.MathUtils.lerp(a,a+s,f)*Ie.MathUtils.DEG2RAD);let m=Ie.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 w=y[v-1],O=y[v-0];g.push(w,O)}return g}),s;try{s=ao({windingRule:t,elementType:bt.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[i]})}catch{s=Sl}let l;try{l=ao({windingRule:We.ODD,elementType:bt.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...a]})}catch{l=Of}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],w=s.vertices[g+1];v<u&&(u=v),v>p&&(p=v),w<d&&(d=w),w>h&&(h=w)}let f=[];for(let m=s.elementCount-1;m>=0;m--){let y=m>=c,g=m*2,v=s.elements[g+0],w=s.elements[g+1],O=v+w,S={start:v,count:w,normals:[],isHole:y,continuous:[],verticesStart:0,verticesCount:0};f.push(S);let C=v,T=O-1,x=v+1,N=o.roundedCurves.length;do{let E=C-v,M=s.vertices[T*2+0],D=s.vertices[T*2+1],_=s.vertices[C*2+0],B=s.vertices[C*2+1],V=s.vertices[x*2+0],k=s.vertices[x*2+1],L=_-M,W=B-D,F=Math.sqrt(L*L+W*W);L/=F,W/=F;let j=_-V,H=B-k,q=Math.sqrt(j*j+H*H);j/=q,H/=q,S.normals[E*2+0]=-H,S.normals[E*2+1]=j;let re=s.vertexIndices[C];if(Array.isArray(re))S.continuous[E]=!1;else{let[ee,X]=o.getCurveIndexFromVertexId(re-1,!0);if(X>0&&X<1)S.continuous[E]=!0;else{let te=X===1?ee+1:ee-1;te=(te+N)%N;let K=X===1?0:1,Z=o.roundedCurves[ee].getTangent(X),Q=o.roundedCurves[te].getTangent(K);S.continuous[E]=Z.dot(Q)>.95}}y&&(S.normals[E*2+0]*=-1,S.normals[E*2+1]*=-1),[T,C,x]=[C,x,x+1],x>=O&&(x-=w)}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 Ie.Vector3,u=new Ie.Vector3,p=new Ie.Vector3,d=new Ie.Vector3,h=new Ie.Vector2;o.forEach((m,y)=>{let g=i[y],v=e.verticesStart*o.length+e.verticesCount*y;for(let w=0;w<e.count;w++){let O=(e.start+w)*2;if(c.set(t[O+0],t[O+1],0),p.copy(c).applyMatrix4(m).add(g),e.continuous[w])d.set(e.normals[w*2+0],e.normals[w*2+1],0);else{let S=w===0?(e.start+e.count-1)*2:O-2;u.set(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(w===0?1:w/e.count,y/(o.length-1)),this._insertVertex(a,v,p,d,h),v++,!e.continuous[w]||w===0){if(w===0)d.set(e.normals[w*2+0],e.normals[w*2+1],0),h.set(0,y/(o.length-1));else{let S=w===e.count-1?e.start*2:O+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 w=0;w<e.count;w++){(!e.continuous[w]||w===0)&&v++;let O=w===e.count-1?0:v+1,S=y+v,C=y+O,T=g+O,x=g+v;e.isHole?s.push(S,T,C,S,x,T):s.push(S,C,T,S,T,x),v++}}}_closeEnd(e,t,o,i,a,s,l){let c=e.vertexCount,u=new Ie.Vector3(0,0,l?-1:1).applyMatrix4(a),p=new Ie.Vector3,d=new Ie.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 Ie.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 wi=require("three"),K0=require("three/examples/jsm/utils/BufferGeometryUtils.js");function Q0(){let n=new wi.BufferGeometry;return n.setAttribute("position",new wi.BufferAttribute(new Float32Array([]),3)),n.setIndex(new wi.BufferAttribute(new Uint16Array([]),1)),n}var uM=Q0().attributes,dM=12,pM=1,Pi=class extends wi.BufferGeometry{constructor(e,t){super();this.charWidths=[];this.charCoords=[];this.wrappedText=[];this.isLowResolution=!1;this.vectorShapes=[];Object.assign(this.attributes,uM),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=Rn.getDisplayedValue(c),d=u===2?p.toUpperCase():u===3?p.toLowerCase():p,h=fM(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,w=f.map(C=>new $e().fromShape(C,!0));this.vectorShapes=w;let O=w.map(C=>br.create({shape:C,parameters:{depth:a,extrudeBevelSegments:l,extrudeBevelSize:s,windingRule:a<=0?We.NONZERO:We.ODD,subdivisions:this.isLowResolution&&a>0?pM:dM}})),S=O.length?(0,K0.mergeBufferGeometries)(O):Q0();S.translate(-g,v,0),this.dispose(),this.wrappedText=h,this.charCoords=y,this.charWidths=m,this.deleteAttribute("extrudeNormal"),Object.entries(S.attributes).forEach(([C,T])=>{this.setAttribute(C,T)}),this.setIndex(S.index),this.computeBoundingSphere()}clone(){let e=Jt(new wi.BufferGeometry,Pi.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:{textValue:e}})}get text(){return this.userData.parameters.text??""}};function fM(n,r,e){let t=[""],o="";for(let i of e)o+=i,i===" "||i===`
15
+ }`}if(i){o=`${!1&&window.location.search.includes("api-dev")?"https://api-dev.spline.design/":"https://apis.spline.design/"}file/${n.proxy.fileId}/external-api/request?uuidexternalapi=${n.proxy.proxyId}`;let u;a!==void 0?u=a:n.method==="POST"&&n.body&&(u=Pl(JSON.parse(n.body),r)),u!==void 0&&(o+=`&data=${encodeURIComponent(u.replace(/(\r\n|\n|\r|\t)/gm,""))}`)}else n.integration?.type==="OpenAI"?t=a:n.method==="POST"&&n.body&&(t=Pl(JSON.parse(n.body),r));let s=await fetch(o,{method:i?"GET":n.method,headers:i?void 0:JI(n),signal:e.signal,body:t});if(!s.ok)throw new Error("status:"+s.status+"_:_"+s.statusText);if(n.integration?.type==="OpenAI"){let l=await s.json();return i&&(l=l.response),{content:l.choices[0].message.content}}else{let l=await s.json();return i&&(l=l.response),l}}var $0=(n,r)=>{if(typeof n=="string"){let e=r.getVariable(n);if(e)return $0(e,r)}return Bn.isBoolean(n)?Bn.getDisplayedValue(n).toLowerCase():Bn.getDisplayedValue(n)},Pl=(n,r)=>n.map((e,t)=>{if("text"in e)return e.text;if("type"in e){if(e.type==="paragraph")return(t>0?`
16
+ `:"")+Pl(e.children,r);if(e.type==="variable"){let o=r.getVariable(e.variableId);if(o!==void 0)return $0(o,r)}}return""}).join("");var nM=new Ie.Matrix4,iM=new Ie.Matrix4;function aM(n,r,e){let t=[new Ie.Vector3,new Ie.Vector3,new Ie.Vector3],o=[new Ie.Vector3,new Ie.Vector3,new Ie.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=Ie.MathUtils.lerp(i.length(),s.length(),e);i.lerp(s,e).setLength(l)}),new Ie.Matrix4().makeBasis(t[0],t[1],t[2])}var Y0=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??ja.create({parameters:Fp}).userData.shape;return{path:n.path??va.defaultData(),parameters:Object.assign(e,{width:t,height:o,depth:i,extrusion:{...uu,...e.extrusion}}),shapeData:a}}static build(n){if(n.path.points.length>=2){let e=new Df(n);return Object.assign(e,{userData:{...n,type:"PathGeometry"}})}else return Object.assign(new Ie.BufferGeometry,{userData:{...n,type:"PathGeometry"}})}},Df=class extends Ie.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)||!W0(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 j=this.inputs.path.isClosed?(F+s)%e.length:Math.min(F+s,e.length-1);u.push(e[j].clone()),p.push(t[j].clone())}let d=(F,j,H)=>{u[F]=u[F].clone().lerp(u[j],H),p[F]=aM(p[F],p[j],H)},f=0,h=i*a%1;(!this.inputs.path.isClosed||o<=1)&&(h||i===0)&&(f=h,d(0,1,f));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,f,m);let{bevel:b,bevelSides:S}=this.inputs.parameters.extrusion,P=b>0?this.inputs.parameters.extrusion.capType:"flat",C=5;this.inputs.parameters.extrusion.shape.type==="Custom"&&(C=this.inputs.parameters.extrusion.shape.shapeQuality==="low"?5:12);let{regions:v,infos:A,vertices:T}=this._computeShapePoints(C),g=0,D;P==="round"&&(D=new Gn(this.inputs.shapeData,2*b,b,C,S,void 0,!0),g=D.getAttribute("position").count);let E=0,M=0;A.sort((F,j)=>F.start-j.start),A.forEach(F=>{F.verticesStart=E,F.verticesCount=F.continuous.reduce((j,H,q)=>j+(q===0||!H?2:1),0),M+=F.verticesCount,E=M});let N=M*c,_,B=0;if(this._isOpenEnded()&&P==="flat"){try{_=ao({windingRule:qe.ODD,elementType:bt.POLYGONS,polySize:3,vertexSize:2,strict:!0,contours:v})}catch{_=Pf}B=_.vertexCount}let V=N+2*B+g*2,k=N+2*B,L={positions:new Float32Array(V*3),normals:new Float32Array(V*3),uvs:new Float32Array(V*2)},W=[];if(A.forEach(F=>{this._extrudeRegion(F,T,p,u,L,W,this._isGeometryClosed()&&!this._isOpenEnded())}),_&&(this._closeEnd(_,N,W,L,p[0],u[0],!1),this._closeEnd(_,N+B,W,L,p[p.length-1],u[u.length-1],!0)),D){L.positions.set(D.getAttribute("position").array,k*3),L.normals.set(D.getAttribute("normal").array,k*3),L.uvs.set(D.getAttribute("uv").array,k*2);for(let q=k;q<k+g;q++)L.uvs[q*2+1]=1e-4;let F=W.length;W.push(...D.getIndex().array.map(q=>q+k)),k+=g,L.positions.set(D.getAttribute("position").array,k*3),L.normals.set(D.getAttribute("normal").array,k*3),L.uvs.set(D.getAttribute("uv").array,k*2);let j=W.length;W.push(...D.getIndex().array.map(q=>q+k)),this.setAttribute("position",new Ie.BufferAttribute(L.positions,3)),this.setAttribute("normal",new Ie.BufferAttribute(L.normals,3)),this.setAttribute("uv",new Ie.BufferAttribute(L.uvs,2)),this.setIndex(W);let H=nM;H.copy(p[p.length-1]).setPosition(u[u.length-1]),this.applyMatrix4OnRange(H,k,V),H.copy(p[0]).setPosition(u[0]).multiply(iM.makeScale(1,1,-1)),this.applyMatrix4OnRange(H,k-g,k),this.reverseIndicesOnRange(F,j)}else this.setAttribute("position",new Ie.BufferAttribute(L.positions,3)),this.setAttribute("normal",new Ie.BufferAttribute(L.normals,3)),this.setAttribute("uv",new Ie.BufferAttribute(L.uvs,2)),this.setIndex(W)}_extractPathPoints(){let t=Eu(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 Ie.Vector3,s=new Ie.Vector3,l=new Ie.Vector3,c=new Ie.Vector3,u=new Ie.Vector3(0,1,0);for(let y=0;y<o;y++){let b=e[y],S;y===0?S=i?e[e.length-2]:b.clone().multiplyScalar(2).sub(e[1]):S=e[y-1];let P;y===o-1?P=i?e[1]:b.clone().multiplyScalar(2).sub(e[y-1]):P=e[y+1];let C=b.clone().sub(S).normalize(),v=P.clone().sub(b).normalize(),A=C.clone().add(v).normalize();l.copy(A),y===0&&(A.equals(u)||A.clone().negate().equals(u))&&u.set(0,0,1);let T=u.clone().cross(A).normalize(),g=A.clone().cross(T).normalize();u.copy(g),c.copy(T),y===0&&(a.copy(g),s.copy(A));let D=new Ie.Matrix4().makeBasis(T,g,A);t.push(D)}let p=i?s:l,d=i?a:new Ie.Vector3(0,1,0),f=p.clone().cross(c).normalize(),h=Math.acos(d.dot(f));if(isNaN(h))return t;let m=d.clone().cross(f);p.dot(m)>0&&(h*=-1);for(let y=1;y<t.length;y++){let b=new Ie.Matrix4().makeRotationZ(h*y/t.length);t[y].multiply(b)}return t}_applyPathModifiers(e,t,o){let i=e.length,{angle:a,twist:s,startScale:l,endScale:c}=this.inputs.parameters.extrusion,u=new Ie.Matrix4,p=new Ie.Matrix4;return e.forEach((d,f)=>{let h=f===0?0:f===i-1?1:(f-t)/(i-(o===0?0:1)-(t+(1-o)));u.makeRotationZ(Ie.MathUtils.lerp(a,a+s,h)*Ie.MathUtils.DEG2RAD);let m=Ie.MathUtils.lerp(l,c,h);p.makeScale(m,m,m),d.multiply(u).multiply(p)}),e}_computeShapePoints(e=12,t=qe.ODD){let o=this.inputs.shapeData,i=o.extractShapePointsToFlatArray([],e),a=o.shapeHoles.map(m=>{let y=m.extractShapePointsToFlatArray([],e),b=[];for(let S=y.length-1;S>=1;S-=2){let P=y[S-1],C=y[S-0];b.push(P,C)}return b}),s;try{s=ao({windingRule:t,elementType:bt.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[i]})}catch{s=bl}let l;try{l=ao({windingRule:qe.ODD,elementType:bt.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...a]})}catch{l=wf}if(!s)throw new Error("error generating geometry");let c=s.elementCount;if(l){s.elementCount+=l.elementCount;for(let m=0;m<l.elements.length;m++){let y=l.elements[m],b=m%2===0?s.vertexCount:0;s.elements.push(y+b)}for(let m=0;m<l.vertexIndices.length;m++){let y=l.vertexIndices[m],b=s.vertexCount;s.vertexIndices.push(y+b)}for(let m=0;m<l.vertices.length;m++){let y=l.vertices[m];s.vertices.push(y)}}let u=1/0,p=-1/0,d=1/0,f=-1/0;for(let m=0,y=s.vertexCount;m<y;m++){let b=m*2,S=s.vertices[b+0],P=s.vertices[b+1];S<u&&(u=S),S>p&&(p=S),P<d&&(d=P),P>f&&(f=P)}let h=[];for(let m=s.elementCount-1;m>=0;m--){let y=m>=c,b=m*2,S=s.elements[b+0],P=s.elements[b+1],C=S+P,v={start:S,count:P,normals:[],isHole:y,continuous:[],verticesStart:0,verticesCount:0};h.push(v);let A=S,T=C-1,g=S+1,D=o.roundedCurves.length;do{let E=A-S,M=s.vertices[T*2+0],N=s.vertices[T*2+1],_=s.vertices[A*2+0],B=s.vertices[A*2+1],V=s.vertices[g*2+0],k=s.vertices[g*2+1],L=_-M,W=B-N,F=Math.sqrt(L*L+W*W);L/=F,W/=F;let j=_-V,H=B-k,q=Math.sqrt(j*j+H*H);j/=q,H/=q,v.normals[E*2+0]=-H,v.normals[E*2+1]=j;let re=s.vertexIndices[A];if(Array.isArray(re))v.continuous[E]=!1;else{let[ee,X]=o.getCurveIndexFromVertexId(re-1,!0);if(X>0&&X<1)v.continuous[E]=!0;else{let te=X===1?ee+1:ee-1;te=(te+D)%D;let K=X===1?0:1,Z=o.roundedCurves[ee].getTangent(X),Q=o.roundedCurves[te].getTangent(K);v.continuous[E]=Z.dot(Q)>.95}}y&&(v.normals[E*2+0]*=-1,v.normals[E*2+1]*=-1),[T,A,g]=[A,g,g+1],g>=C&&(g-=P)}while(g!==S+1)}return{regions:[i,...a],infos:h,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 Ie.Vector3,u=new Ie.Vector3,p=new Ie.Vector3,d=new Ie.Vector3,f=new Ie.Vector2;o.forEach((m,y)=>{let b=i[y],S=e.verticesStart*o.length+e.verticesCount*y;for(let P=0;P<e.count;P++){let C=(e.start+P)*2;if(c.set(t[C+0],t[C+1],0),p.copy(c).applyMatrix4(m).add(b),e.continuous[P])d.set(e.normals[P*2+0],e.normals[P*2+1],0);else{let v=P===0?(e.start+e.count-1)*2:C-2;u.set(t[v+0],t[v+1],0),d.copy(c).sub(u),d.set(-d.y,d.x,0),e.isHole||d.negate()}if(d.applyMatrix4(m).normalize(),f.set(P===0?1:P/e.count,y/(o.length-1)),this._insertVertex(a,S,p,d,f),S++,!e.continuous[P]||P===0){if(P===0)d.set(e.normals[P*2+0],e.normals[P*2+1],0),f.set(0,y/(o.length-1));else{let v=P===e.count-1?e.start*2:C+2;u.set(t[v+0],t[v+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,S,p,d,f),S++}}});let h=o.length-1;for(let m=0;m<h;m++){let y=e.verticesStart*o.length+e.verticesCount*m,b=e.verticesStart*o.length+e.verticesCount*(m+1),S=0;for(let P=0;P<e.count;P++){(!e.continuous[P]||P===0)&&S++;let C=P===e.count-1?0:S+1,v=y+S,A=y+C,T=b+C,g=b+S;e.isHole?s.push(v,T,A,v,g,T):s.push(v,A,T,v,T,g),S++}}}_closeEnd(e,t,o,i,a,s,l){let c=e.vertexCount,u=new Ie.Vector3(0,0,l?-1:1).applyMatrix4(a),p=new Ie.Vector3,d=new Ie.Vector2;for(let h=0;h<c;h++){let m=2*h;p.set(e.vertices[m+0],e.vertices[m+1],0).applyMatrix4(a).add(s),this._insertVertex(i,t+h,p,u,d)}let f=e.elements;for(let h=0;h<e.elementCount;h++){let m=3*h,y=f[m+0]+t,b=f[m+(l?1:2)]+t,S=f[m+(l?2:1)]+t;o.push(y,b,S)}}applyMatrix4OnRange(e,t,o){let i=e.elements,a=new Ie.Matrix3().getNormalMatrix(e).elements,s,l,c,u,p=this.attributes.position,d=this.attributes.normal;if(!p||!d)return;let f=p.array,h=d.array,m=p.itemSize;for(let y=t*m,b=o*m;y<b;y+=m){if(y===t)debugger;s=f[y+0],l=f[y+1],c=f[y+2],u=1/(i[3]*s+i[7]*l+i[11]*c+i[15]),f[y+0]=(i[0]*s+i[4]*l+i[8]*c+i[12])*u,f[y+1]=(i[1]*s+i[5]*l+i[9]*c+i[13])*u,f[y+2]=(i[2]*s+i[6]*l+i[10]*c+i[14])*u,s=h[y+0],l=h[y+1],c=h[y+2],h[y+0]=a[0]*s+a[3]*l+a[6]*c,h[y+1]=a[1]*s+a[4]*l+a[7]*c,h[y+2]=a[2]*s+a[5]*l+a[8]*c}p.needsUpdate=!0,d.needsUpdate=!0}reverseIndicesOnRange(e,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 Si=require("three"),X0=require("three/examples/jsm/utils/BufferGeometryUtils.js");function K0(){let n=new Si.BufferGeometry;return n.setAttribute("position",new Si.BufferAttribute(new Float32Array([]),3)),n.setIndex(new Si.BufferAttribute(new Uint16Array([]),1)),n}var lM=K0().attributes,cM=12,uM=1,wi=class extends Si.BufferGeometry{constructor(e,t){super();this.charWidths=[];this.charCoords=[];this.wrappedText=[];this.isLowResolution=!1;this.vectorShapes=[];Object.assign(this.attributes,lM),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=Bn.getDisplayedValue(c),d=u===2?p.toUpperCase():u===3?p.toLowerCase():p,f=dM(e,t,d),{shapes:h,charWidths:m,charCoords:y}=t.generateShapes(f,e),b=(typeof o=="number"?o:1)*.5,S=(typeof i=="number"?i:1)*.5,P=h.map(A=>new $e().fromShape(A,!0));this.vectorShapes=P;let C=P.map(A=>br.create({shape:A,parameters:{depth:a,extrudeBevelSegments:l,extrudeBevelSize:s,windingRule:a<=0?qe.NONZERO:qe.ODD,subdivisions:this.isLowResolution&&a>0?uM:cM}})),v=C.length?(0,X0.mergeBufferGeometries)(C):K0();v.translate(-b,S,0),this.dispose(),this.wrappedText=f,this.charCoords=y,this.charWidths=m,this.deleteAttribute("extrudeNormal"),Object.entries(v.attributes).forEach(([A,T])=>{this.setAttribute(A,T)}),this.setIndex(v.index),this.computeBoundingSphere()}clone(){let e=Jt(new Si.BufferGeometry,wi.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:{textValue:e}})}get text(){return this.userData.parameters.text??""}};function dM(n,r,e){let t=[""],o="";for(let i of e)o+=i,i===" "||i===`
17
17
  `?(t[t.length-1]+=o,o="",i===`
18
- `&&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 J0,Ku=new Promise(n=>{J0=n}),Z0=!1;var Xu;function eb(){if(Z0)return;if(Xu)return Xu;async function n(){let e=!1?".":"https://unpkg.com/@splinetool/modelling-wasm@1.9.44/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});J0(l),Z0=!0}return Xu=n(),Xu}var tb=require("three");var hM=["font"];function an(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];Fp(p)&&!hM.includes(o)&&(u[o]=r.getVariable(p,[t.uuid,"geometry",...c,o]),Fp(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 tb.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 Pi(i,r);if(i.type==="InputGeometry")return new Pi(i,r);if(i.type==="UIGeometry")return Wa.create({parameters:{width:i.width,height:i.height,cornerRadius:i.cornerRadius,cornerType:i.cornerType}})}let l;try{l=Lf(s)}catch(c){console.error(c)}if(!l){let c=$e.createFromState(va.defaultData(),100,100);s.shape=c,l=Lf(s)}return l}var rb=require("three"),mM=new rb.Matrix4;function Al(n,r,e,t){let o=n.position.array,i=n.normal.array,a=mM.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 Qu=new at.Box3,$a=new at.Vector3,we;Ku.then(n=>{we=n});var ob=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),nb=new Uint32Array([0,1,2,3]),ib=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=In.div(t,o);this.subdividedGeometry&&Al(this.subdividedGeometry.attributes,...i),this.originalGeometry&&Al(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($a.fromArray(i));let s=$a.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;Qu.setFromBufferAttribute(t),Qu.getCenter(o),e.boundingSphere.radius=o.distanceTo(Qu.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),Qu.getSize($a);let i={width:$a.x,height:$a.y,depth:$a.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:ob,indexWASM:nb,verticesPerFaceWASM:ib},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:an(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}=Ff(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}=jf(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=ob,i=nb,a=ib);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),w=new Uint32Array(we.HEAPU32.buffer,g+m,h);v.set(o,0),v.set(s,o.length),v.set(l,o.length+s.length),w.set(i,0),w.set(a,i.length);let O;e?.scaleBaked?.some(C=>C!==1)&&(O=new at.Matrix4().makeScale(...e.scaleBaked)),t&&(O?O.premultiply(t):O=t);let S=O?we.alloc_subdivision_surface2(g,c,g+m,u,g+m+i.length*Uint32Array.BYTES_PER_ELEMENT,p,O.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],w=we.HEAPU32.subarray(v>>2,(v>>2)+u[p]);if(p++,i===void 0){let O=new at.BufferGeometry;if(O.setIndex(new at.Uint32BufferAttribute(w,1)),O.setAttribute("position",new at.Float32BufferAttribute(h,3)),O.setAttribute("normal",new at.Float32BufferAttribute(m,3)),t){O.setAttribute("faceMap",new at.Uint32BufferAttribute(g,1));let S=new Float32Array(m.length/3*4).fill(0);O.setAttribute("color",new at.BufferAttribute(S,4))}return we.free_mesh_data(s),O.userData.type="SubdivGeometry",O}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 ab=["getX","getY","getZ"];function Ff(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[ab[d]](u)*s)},`;if(p in e)i.push(e[p]);else{for(let d=0;d<3;d++)a.push(n[ab[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 Zu=new at.Vector3,Vf=new at.Vector3,zf=new at.Vector3,Gf=new at.Vector3;function jf(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]){Zu.set(n[r[s]*3],n[r[s]*3+1],n[r[s]*3+2]),Vf.set(n[r[s+1]*3],n[r[s+1]*3+1],n[r[s+1]*3+2]),zf.set(n[r[s+4]*3],n[r[s+4]*3+1],n[r[s+4]*3+2]),Gf.set(n[r[s+5]*3],n[r[s+5]*3+1],n[r[s+5]*3+2]),Vf.sub(Zu).normalize(),zf.sub(Zu).normalize(),Gf.sub(Zu).normalize();let l=Vf.cross(zf).dot(Gf);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 jr={};Zh(jr,{calcBoolean:()=>bM,calcBooleanTopological:()=>xM,freeMeshSet:()=>PM,getMeshSet:()=>vM,hasOpenEdges:()=>SM,transformMeshSet:()=>wM});var yM,sb=new Promise(n=>{yM=n});var Tl=require("three");var Le,Ya;sb.then(n=>Le=n);function gM(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}=Ff(n.getAttribute("position"),o),s;if(r&&e){let{indices:l,verticesPerFace:c}=jf(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 lb(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 cb(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 xM(n,r){Ya===void 0&&(Ya=Le.init_csg());let e=lb(n),t=Le.csg_calc_topological(Ya,e,n.length,cb(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 bM(n,r,e,t){Ya===void 0&&(Ya=Le.init_csg());let o=lb(n),i=Le.csg_calc(Ya,o,n.length,t,cb(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 Tl.Float32BufferAttribute(p,3)),e.setAttribute("normal",new Tl.Float32BufferAttribute(h,3));let m=Le.HEAPF32.subarray((i>>2)+5,(i>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new Tl.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 vM(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,w)=>v+w,0)+i);for(let v=0,w=0,O=0;v<g.verticesPerFace.length;v++){o[O++]=g.verticesPerFace[v];for(let S=0;S<g.verticesPerFace[v];S++)o[O++]=g.indices[w++]}}else({positions:t,faceIndices:o,nFaces:i}=gM(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 SM(n){return Le.has_open_edges(n)}function wM(n,r){Le.transform_csg_mesh(n,r.elements)}function PM(n){Le.free_csg_mesh(n)}var CM={ConeGeometry:Jx,CubeGeometry:e0,CylinderGeometry:Zx,DodecahedronGeometry:r0,EllipseGeometry:ka,HelixGeometry:T0,IcosahedronGeometry:M0,LatheGeometry:E0,NonParametricGeometry:B0,PolygonGeometry:qu,PyramidGeometry:R0,RectangleGeometry:Wa,SphereGeometry:L0,PlaneGeometry:z0,BackdropGeometry:G0,StarGeometry:$u,TextFrameGeometry:j0,TorusGeometry:k0,TorusKnotGeometry:H0,TriangleGeometry:W0,PathGeometry:X0,VectorGeometry:br},Lf=n=>CM[n.type].create(n);function Xa(n){return n!==null&&"booleanOp"in n}var Ka=class extends Ba(Ju.Mesh){constructor(){super(...arguments);this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new Ju.Matrix4}updateVisible(e){super.updateVisible(e),this.visible=!Xa(this.parent)&&this.visible,Xa(this.parent)&&this.parent.invalidateDownstreamBooleanData()}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(jr.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),Xa(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)e instanceof Ka&&(e.freeBooleanPointer(),Xa(e)&&e.invalidateUpstreamBooleanData())}updateTransformState(e,t){let o=super.updateTransformState(e,t);return o&&Xa(this.parent)&&this.invalidateDownstreamBooleanData(!0),o}onVariableUpdate(e=!1){super.onVariableUpdate(e),Xa(this.parent)&&this.invalidateDownstreamBooleanData(!0)}};var ed=new Qa.Box3;function Il(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)}ed.min.set(i,a,s),ed.max.set(l,c,u),ed.getCenter(t),ed.getSize(o).multiplyScalar(.5)}var OM=new Qa.BufferGeometry,AM=new Qa.MeshBasicMaterial,Ft=class extends Ka{constructor(r,e){super(OM,AM),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?Il(t,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:t.count,r,e):super.updateEntityBoxSize(r,e)}};var pn=require("three");var _r=require("three");var Db=require("three");var sn=class{constructor(r){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};if(sn.uuidContext===null)throw new Error("plz startContext");sn.uuidContext===sn.globalContext?this.uuid="_gid"+sn.uuidContext.nodeContextUuid++:this.uuid="_uid"+sn.uuidContext.nodeContextUuid++,this.type=r,this.name=""}static startContext(r){this.uuidContext===null||this.uuidContext===sn.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}},tt=sn;tt.globalContext={nodeContextUuid:0},tt.uuidContext=sn.globalContext;var po=require("three");var Ml=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 kf=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 kf;var Uf=require("three");var ub=require("three"),xe=class extends tt{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=ub.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 rt=class extends xe{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 rt{constructor(e=0,t){super("v2");this.nodeType="Vector2";this.value=e instanceof Uf.Vector2?e:new Uf.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 Hf=require("three");var tr=class extends rt{constructor(e=0,t,o){super("v3");this.nodeType="Vector3";this.value=e instanceof Hf.Vector3?e:new Hf.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 db=require("three"),kt=class extends db.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 vr=class extends rt{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof kt?e:new kt(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 TM=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,pb=/[a-z_0-9]+/gi,J=class extends xe{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=pb.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=TM.exec(this.src);if(this.inputs=[],a&&a.length==4){this.type=a[1],this.name=a[2];let s=a[3].match(pb);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 IM=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,Wf=class extends xe{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=IM.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 MM=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
19
- )*?)}`,"gim"),EM=new RegExp("s*(w*?)s*(w*?)(=|;)","gim"),Za=class extends xe{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=MM.exec(e);if(t){let o=t[2],i;for(;i=EM.exec(o);)this.inputs.push({type:i[1],name:i[2]});this.name=t[1]}else this.name="";this.type=this.name}};var Ja=class extends xe{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 Ja});jt.addKeyword("uv2",function(){return new Ja(1)});var td=require("three");var Ci=class extends xe{constructor(e,t){super("v4");this.nodeType="ColorSpace";this.input=e,this.method=t??Ci.LINEAR_TO_LINEAR,this.hashProperties=["method"]}static getEncodingComponents(e){switch(e){case td.LinearEncoding:return["Linear"];case td.sRGBEncoding:return["sRGB"];default:return[]}}generate(e,t){let o=this.input.build(e,"v4"),i=this.getType(e),a=Ci.Nodes[this.method],s=e.include(a);if(s===Ci.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=Ci.getEncodingComponents(e);this.method="LinearTo"+t[0],this.factor=t[1]}fromDecoding(e){let t=Ci.getEncodingComponents(e);this.method=t[0]+"ToLinear",this.factor=t[1]}},dr=Ci;dr.Nodes={LinearToLinear:new J(["vec4 LinearToLinear( in vec4 value ) {"," return value;","}"].join(`
18
+ `&&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 Z0,qu=new Promise(n=>{Z0=n}),Q0=!1;var Wu;function J0(){if(Q0)return;if(Wu)return Wu;async function n(){let e=!1?".":"https://unpkg.com/@splinetool/modelling-wasm@1.9.46/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});Z0(l),Q0=!0}return Wu=n(),Wu}var eb=require("three");var pM=["font"];function an(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];Vp(p)&&!pM.includes(o)&&(u[o]=r.getVariable(p,[t.uuid,"geometry",...c,o]),Vp(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 eb.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 wi(i,r);if(i.type==="InputGeometry")return new wi(i,r);if(i.type==="UIGeometry")return Ha.create({parameters:{width:i.width,height:i.height,cornerRadius:i.cornerRadius,cornerType:i.cornerType}})}let l;try{l=_f(s)}catch(c){console.error(c)}if(!l){let c=$e.createFromState(ba.defaultData(),100,100);s.shape=c,l=_f(s)}return l}var tb=require("three"),fM=new tb.Matrix4;function Cl(n,r,e,t){let o=n.position.array,i=n.normal.array,a=fM.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 $u=new at.Box3,qa=new at.Vector3,we;qu.then(n=>{we=n});var rb=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),ob=new Uint32Array([0,1,2,3]),nb=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=Tn.div(t,o);this.subdividedGeometry&&Cl(this.subdividedGeometry.attributes,...i),this.originalGeometry&&Cl(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(qa.fromArray(i));let s=qa.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;$u.setFromBufferAttribute(t),$u.getCenter(o),e.boundingSphere.radius=o.distanceTo($u.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),$u.getSize(qa);let i={width:qa.x,height:qa.y,depth:qa.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:rb,indexWASM:ob,verticesPerFaceWASM:nb},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:an(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}=Vf(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,f=d+e.radialSegments*3;p=[d,f]}return{indices:l,verticesPerFace:c}=zf(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=rb,i=ob,a=nb);let c=o.length,u=i.length,p=a.length,d=o.length+s.length+l.length,f=i.length+a.length,h=d*Float32Array.BYTES_PER_ELEMENT+f*Uint32Array.BYTES_PER_ELEMENT,m=d*Float32Array.BYTES_PER_ELEMENT,y=f*Uint32Array.BYTES_PER_ELEMENT,b=we._malloc(h),S=new Float32Array(we.HEAPF32.buffer,b,d),P=new Uint32Array(we.HEAPU32.buffer,b+m,f);S.set(o,0),S.set(s,o.length),S.set(l,o.length+s.length),P.set(i,0),P.set(a,i.length);let C;e?.scaleBaked?.some(A=>A!==1)&&(C=new at.Matrix4().makeScale(...e.scaleBaked)),t&&(C?C.premultiply(t):C=t);let v=C?we.alloc_subdivision_surface2(b,c,b+m,u,b+m+i.length*Uint32Array.BYTES_PER_ELEMENT,p,C.elements):we.alloc_subdivision_surface(b,c,b+m,u,b+m+i.length*Uint32Array.BYTES_PER_ELEMENT,p);return we._free(b),v}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],f=we.HEAPF32.subarray(d>>2,(d>>2)+u[p]);p++;let h=we.HEAPU32[c[p]>>2],m=we.HEAPF32.subarray(h>>2,(h>>2)+u[p]);p++;let y=we.HEAPU32[c[p]>>2],b=we.HEAPU32.subarray(y>>2,(y>>2)+u[p]);p++;let S=we.HEAPU32[c[p]>>2],P=we.HEAPU32.subarray(S>>2,(S>>2)+u[p]);if(p++,i===void 0){let C=new at.BufferGeometry;if(C.setIndex(new at.Uint32BufferAttribute(P,1)),C.setAttribute("position",new at.Float32BufferAttribute(f,3)),C.setAttribute("normal",new at.Float32BufferAttribute(m,3)),t){C.setAttribute("faceMap",new at.Uint32BufferAttribute(b,1));let v=new Float32Array(m.length/3*4).fill(0);C.setAttribute("color",new at.BufferAttribute(v,4))}return we.free_mesh_data(s),C.userData.type="SubdivGeometry",C}i.getAttribute("position").copyArray(f),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],f=we.HEAPU32.subarray(d>>2,(d>>2)+l[c]);if(t===void 0){let h=new at.BufferGeometry;h.setAttribute("position",new at.Float32BufferAttribute(p,3));let m=new Float32Array(p.length);for(let y=0,b=p.length;y<b;)m[y++]=o.r,m[y++]=o.g,m[y++]=o.b;return h.setAttribute("color",new at.BufferAttribute(m,3)),h.setIndex(new at.Uint32BufferAttribute(f,1)),we.free_wireframe_data_for_base_level(i),h}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 f=we.HEAPU32[l[u]>>2],h=new Uint32Array(we.HEAPU32.subarray(f>>2,(f>>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:h,verticesPerFace:y}}};var ib=["getX","getY","getZ"];function Vf(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[ib[d]](u)*s)},`;if(p in e)i.push(e[p]);else{for(let d=0;d<3;d++)a.push(n[ib[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 Yu=new at.Vector3,Bf=new at.Vector3,Rf=new at.Vector3,Lf=new at.Vector3;function zf(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((f,h)=>Math.floor(h/2)%d===0)}let u=0;for(let d=0;d<l.length;d+=2)u+=(l[d]-l[(d===0?l.length:d)-2])*(l[d+1]+l[(d===0?l.length:d)-1]);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]){Yu.set(n[r[s]*3],n[r[s]*3+1],n[r[s]*3+2]),Bf.set(n[r[s+1]*3],n[r[s+1]*3+1],n[r[s+1]*3+2]),Rf.set(n[r[s+4]*3],n[r[s+4]*3+1],n[r[s+4]*3+2]),Lf.set(n[r[s+5]*3],n[r[s+5]*3+1],n[r[s+5]*3+2]),Bf.sub(Yu).normalize(),Rf.sub(Yu).normalize(),Lf.sub(Yu).normalize();let l=Bf.cross(Rf).dot(Lf);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 jr={};Kh(jr,{calcBoolean:()=>gM,calcBooleanTopological:()=>yM,freeMeshSet:()=>SM,getMeshSet:()=>xM,hasOpenEdges:()=>bM,transformMeshSet:()=>vM});var hM,ab=new Promise(n=>{hM=n});var Ol=require("three");var Le,$a;ab.then(n=>Le=n);function mM(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}=Vf(n.getAttribute("position"),o),s;if(r&&e){let{indices:l,verticesPerFace:c}=zf(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 sb(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 lb(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 yM(n,r){$a===void 0&&($a=Le.init_csg());let e=sb(n),t=Le.csg_calc_topological($a,e,n.length,lb(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],f=new Uint8Array(Le.HEAPU32.subarray(d>>2,(d>>2)+a[s]));return Le.free_mesh_data(t),{positions:c,indices:p,verticesPerFace:f}}function gM(n,r,e,t){$a===void 0&&($a=Le.init_csg());let o=sb(n),i=Le.csg_calc($a,o,n.length,t,lb(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],f=Le.HEAPF32.subarray(d>>2,(d>>2)+l[c]);c++;let h=l[c];e.setAttribute("position",new Ol.Float32BufferAttribute(p,3)),e.setAttribute("normal",new Ol.Float32BufferAttribute(f,3));let m=Le.HEAPF32.subarray((i>>2)+5,(i>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new Ol.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),h}function xM(n,r,e){if(Le===void 0)return-1;let t,o,i;if(r&&n.userData.positions!==void 0){let b=n.userData;i=b.verticesPerFace.length,t=b.positions,o=Array(b.verticesPerFace.reduce((S,P)=>S+P,0)+i);for(let S=0,P=0,C=0;S<b.verticesPerFace.length;S++){o[C++]=b.verticesPerFace[S];for(let v=0;v<b.verticesPerFace[S];v++)o[C++]=b.indices[P++]}}else({positions:t,faceIndices:o,nFaces:i}=mM(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,f=Le._malloc(u),h=new Float32Array(Le.HEAPF32.buffer,f,l),m=new Uint32Array(Le.HEAPU32.buffer,f+p,c);h.set(t,0),m.set(o,0);let y=Le.get_csg_mesh(f,a,f+p,s,i);return Le._free(f),y}function bM(n){return Le.has_open_edges(n)}function vM(n,r){Le.transform_csg_mesh(n,r.elements)}function SM(n){Le.free_csg_mesh(n)}var wM={ConeGeometry:Zx,CubeGeometry:Jx,CylinderGeometry:Qx,DodecahedronGeometry:t0,EllipseGeometry:ja,HelixGeometry:A0,IcosahedronGeometry:I0,LatheGeometry:M0,NonParametricGeometry:_0,PolygonGeometry:ku,PyramidGeometry:B0,RectangleGeometry:Ha,SphereGeometry:R0,PlaneGeometry:V0,BackdropGeometry:z0,StarGeometry:Uu,TextFrameGeometry:F0,TorusGeometry:j0,TorusKnotGeometry:U0,TriangleGeometry:H0,PathGeometry:Y0,VectorGeometry:br},_f=n=>wM[n.type].create(n);function Ya(n){return n!==null&&"booleanOp"in n}var Xa=class extends _a(Xu.Mesh){constructor(){super(...arguments);this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new Xu.Matrix4}updateVisible(e){super.updateVisible(e),this.visible=!Ya(this.parent)&&this.visible,Ya(this.parent)&&this.parent.invalidateDownstreamBooleanData()}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(jr.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),Ya(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)e instanceof Xa&&(e.freeBooleanPointer(),Ya(e)&&e.invalidateUpstreamBooleanData())}updateTransformState(e,t){let o=super.updateTransformState(e,t);return o&&Ya(this.parent)&&this.invalidateDownstreamBooleanData(!0),o}onVariableUpdate(e=!1){super.onVariableUpdate(e),Ya(this.parent)&&this.invalidateDownstreamBooleanData(!0)}};var Ku=new Ka.Box3;function Al(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),f=n.getY(p),h=n.getZ(p);d<i&&(i=d),f<a&&(a=f),h<s&&(s=h),d>l&&(l=d),f>c&&(c=f),h>u&&(u=h)}Ku.min.set(i,a,s),Ku.max.set(l,c,u),Ku.getCenter(t),Ku.getSize(o).multiplyScalar(.5)}var PM=new Ka.BufferGeometry,CM=new Ka.MeshBasicMaterial,Ft=class extends Xa{constructor(r,e){super(PM,CM),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?Al(t,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:t.count,r,e):super.updateEntityBoxSize(r,e)}};var pn=require("three");var _r=require("three");var Nb=require("three");var sn=class{constructor(r){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};if(sn.uuidContext===null)throw new Error("plz startContext");sn.uuidContext===sn.globalContext?this.uuid="_gid"+sn.uuidContext.nodeContextUuid++:this.uuid="_uid"+sn.uuidContext.nodeContextUuid++,this.type=r,this.name=""}static startContext(r){this.uuidContext===null||this.uuidContext===sn.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}},tt=sn;tt.globalContext={nodeContextUuid:0},tt.uuidContext=sn.globalContext;var po=require("three");var Tl=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 Gf=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 Gf;var Ff=require("three");var cb=require("three"),xe=class extends tt{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=cb.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 rt=class extends xe{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 rt{constructor(e=0,t){super("v2");this.nodeType="Vector2";this.value=e instanceof Ff.Vector2?e:new Ff.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 jf=require("three");var tr=class extends rt{constructor(e=0,t,o){super("v3");this.nodeType="Vector3";this.value=e instanceof jf.Vector3?e:new jf.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 ub=require("three"),kt=class extends ub.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 vr=class extends rt{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof kt?e:new kt(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 OM=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,db=/[a-z_0-9]+/gi,J=class extends xe{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=db.exec(this.src);)u.push(s);for(let p=0;p<u.length;p++){let d=u[p],f=d[0],h=this.isMethod?!this.getInputByName(f):!0,m=f;if(this.keywords[f]||this.useKeywords&&h&&jt.containsKeyword(f)){let y=this.keywords[f];if(!y){let b=jt.getKeywordData(f);b.cache&&(y=e.keywords[f]),y=y||jt.getKeyword(f,e),b.cache&&(e.keywords[f]=y)}m=y.build(e)}f!==m&&c[d.index+l-1]!=="."&&(c=c.substring(0,d.index+l)+m+c.substring(d.index+f.length+l),l+=m.length-f.length),this.getIncludeByName(m)===void 0&&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=OM.exec(this.src);if(this.inputs=[],a&&a.length==4){this.type=a[1],this.name=a[2];let s=a[3].match(db);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 AM=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,kf=class extends xe{constructor(e="",t){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||kf.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=AM.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)}},We=kf;We.PI="PI",We.PI2="PI2",We.RECIPROCAL_PI="RECIPROCAL_PI",We.RECIPROCAL_PI2="RECIPROCAL_PI2",We.LOG2="LOG2",We.EPSILON="EPSILON";var TM=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
19
+ )*?)}`,"gim"),IM=new RegExp("s*(w*?)s*(w*?)(=|;)","gim"),Qa=class extends xe{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=TM.exec(e);if(t){let o=t[2],i;for(;i=IM.exec(o);)this.inputs.push({type:i[1],name:i[2]});this.name=t[1]}else this.name="";this.type=this.name}};var Za=class extends xe{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 Za});jt.addKeyword("uv2",function(){return new Za(1)});var Qu=require("three");var Pi=class extends xe{constructor(e,t){super("v4");this.nodeType="ColorSpace";this.input=e,this.method=t??Pi.LINEAR_TO_LINEAR,this.hashProperties=["method"]}static getEncodingComponents(e){switch(e){case Qu.LinearEncoding:return["Linear"];case Qu.sRGBEncoding:return["sRGB"];default:return[]}}generate(e,t){let o=this.input.build(e,"v4"),i=this.getType(e),a=Pi.Nodes[this.method],s=e.include(a);if(s===Pi.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=Pi.getEncodingComponents(e);this.method="LinearTo"+t[0],this.factor=t[1]}fromDecoding(e){let t=Pi.getEncodingComponents(e);this.method=t[0]+"ToLinear",this.factor=t[1]}},dr=Pi;dr.Nodes={LinearToLinear:new J(["vec4 LinearToLinear( in vec4 value ) {"," return value;","}"].join(`
20
20
  `)),sRGBToLinear:new J(["vec4 sRGBToLinear( in vec4 value ) {"," return vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.w );","}"].join(`
21
21
  `)),LinearTosRGB:new J(["vec4 LinearTosRGB( in vec4 value ) {"," return vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.w );","}"].join(`
22
- `))},dr.LINEAR_TO_LINEAR="LinearToLinear",dr.SRGB_TO_LINEAR="sRGBToLinear",dr.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 fb=require("three"),pr=class extends rt{constructor(e=new fb.Texture,t,o,i){super("v4",{shared:!0});this.nodeType="Texture";this.value=e,this.uv=t??new Ja,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 dr(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 rt{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 El=class extends xe{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 qf=class extends xe{constructor(e,t,o=qf.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)}},Kt=qf;Kt.ADD="+",Kt.SUB="-",Kt.MUL="*",Kt.DIV="/";var ot=class extends xe{constructor(e,t=ot.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 ot.MIX:case ot.CLAMP:case ot.REFRACT:case ot.SMOOTHSTEP:case ot.FACEFORWARD:return 3;case ot.MIN:case ot.MAX:case ot.MOD:case ot.STEP:case ot.REFLECT:case ot.DISTANCE:case ot.DOT:case ot.CROSS:case ot.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 ot.LENGTH:case ot.DISTANCE:case ot.DOT:return"f";case ot.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 ot.NEGATE:return e.format("( -"+this.a.build(e,u)+" )",u,t);case ot.INVERT:return e.format("( 1.0 - "+this.a.build(e,u)+" )",u,t);case ot.CROSS:o=this.a.build(e,"v3"),i=this.b.build(e,"v3");break;case ot.STEP:o=this.a.build(e,s===1?"f":u),i=this.b.build(e,u);break;case ot.MIN:case ot.MAX:case ot.MOD:o=this.a.build(e,u),i=this.b.build(e,l===1?"f":u);break;case ot.REFRACT:o=this.a.build(e,u),i=this.b.build(e,u),a=this.c.build(e,"f");break;case ot.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)}},Ae=ot;Ae.RAD="radians",Ae.DEG="degrees",Ae.EXP="exp",Ae.EXP2="exp2",Ae.LOG="log",Ae.LOG2="log2",Ae.SQRT="sqrt",Ae.INV_SQRT="inversesqrt",Ae.FLOOR="floor",Ae.CEIL="ceil",Ae.NORMALIZE="normalize",Ae.FRACT="fract",Ae.SATURATE="saturate",Ae.SIN="sin",Ae.COS="cos",Ae.TAN="tan",Ae.ASIN="asin",Ae.ACOS="acos",Ae.ARCTAN="atan",Ae.ABS="abs",Ae.SIGN="sign",Ae.LENGTH="length",Ae.NEGATE="negate",Ae.INVERT="invert",Ae.MIN="min",Ae.MAX="max",Ae.MOD="mod",Ae.STEP="step",Ae.REFLECT="reflect",Ae.DISTANCE="distance",Ae.DOT="dot",Ae.CROSS="cross",Ae.POW="pow",Ae.MIX="mix",Ae.CLAMP="clamp",Ae.REFRACT="refract",Ae.SMOOTHSTEP="smoothstep",Ae.FACEFORWARD="faceforward";var es=class extends xe{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 El(es.Nodes.bilinearCubeUV,[t,o,i]);this.colorSpaceTL=this.colorSpaceTL??new dr(new Xe("","v4")),this.colorSpaceTL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTL.input.parse(a.build(e)+".tl"),this.colorSpaceTR=this.colorSpaceTR??new dr(new Xe("","v4")),this.colorSpaceTR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTR.input.parse(a.build(e)+".tr"),this.colorSpaceBL=this.colorSpaceBL??new dr(new Xe("","v4")),this.colorSpaceBL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBL.input.parse(a.build(e)+".bl"),this.colorSpaceBR=this.colorSpaceBR??new dr(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 El(es.Nodes.roughnessToMip,[i]),s=new Ae(a,es.Nodes.m0,es.Nodes.cubeUV_maxMipLevel,Ae.CLAMP),l=new Ae(s,Ae.FLOOR),c=new Ae(s,Ae.FRACT),u=this.bilinearCubeUV(e,this.value,o,l),p=this.bilinearCubeUV(e,this.value,o,new Kt(l,new se(1).setReadonly(!0),Kt.ADD)),d=new Ae(u,p,c,Ae.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)}},ts=es;ts.Nodes=function(){let e=new Za(`struct TextureCubeUVData {
22
+ `))},dr.LINEAR_TO_LINEAR="LinearToLinear",dr.SRGB_TO_LINEAR="sRGBToLinear",dr.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 pb=require("three"),pr=class extends rt{constructor(e=new pb.Texture,t,o,i){super("v4",{shared:!0});this.nodeType="Texture";this.value=e,this.uv=t??new Za,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 dr(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 rt{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 Il=class extends xe{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 Uf=class extends xe{constructor(e,t,o=Uf.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)}},Kt=Uf;Kt.ADD="+",Kt.SUB="-",Kt.MUL="*",Kt.DIV="/";var ot=class extends xe{constructor(e,t=ot.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 ot.MIX:case ot.CLAMP:case ot.REFRACT:case ot.SMOOTHSTEP:case ot.FACEFORWARD:return 3;case ot.MIN:case ot.MAX:case ot.MOD:case ot.STEP:case ot.REFLECT:case ot.DISTANCE:case ot.DOT:case ot.CROSS:case ot.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 ot.LENGTH:case ot.DISTANCE:case ot.DOT:return"f";case ot.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 ot.NEGATE:return e.format("( -"+this.a.build(e,u)+" )",u,t);case ot.INVERT:return e.format("( 1.0 - "+this.a.build(e,u)+" )",u,t);case ot.CROSS:o=this.a.build(e,"v3"),i=this.b.build(e,"v3");break;case ot.STEP:o=this.a.build(e,s===1?"f":u),i=this.b.build(e,u);break;case ot.MIN:case ot.MAX:case ot.MOD:o=this.a.build(e,u),i=this.b.build(e,l===1?"f":u);break;case ot.REFRACT:o=this.a.build(e,u),i=this.b.build(e,u),a=this.c.build(e,"f");break;case ot.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 f=this.getNumInputs(e);if(d.length!==f)throw Error(`Arguments not match used in "${this.method}". Require ${f}, currently ${d.length}.`);return e.format(this.method+"( "+d.join(", ")+" )",p,t)}},Ae=ot;Ae.RAD="radians",Ae.DEG="degrees",Ae.EXP="exp",Ae.EXP2="exp2",Ae.LOG="log",Ae.LOG2="log2",Ae.SQRT="sqrt",Ae.INV_SQRT="inversesqrt",Ae.FLOOR="floor",Ae.CEIL="ceil",Ae.NORMALIZE="normalize",Ae.FRACT="fract",Ae.SATURATE="saturate",Ae.SIN="sin",Ae.COS="cos",Ae.TAN="tan",Ae.ASIN="asin",Ae.ACOS="acos",Ae.ARCTAN="atan",Ae.ABS="abs",Ae.SIGN="sign",Ae.LENGTH="length",Ae.NEGATE="negate",Ae.INVERT="invert",Ae.MIN="min",Ae.MAX="max",Ae.MOD="mod",Ae.STEP="step",Ae.REFLECT="reflect",Ae.DISTANCE="distance",Ae.DOT="dot",Ae.CROSS="cross",Ae.POW="pow",Ae.MIX="mix",Ae.CLAMP="clamp",Ae.REFRACT="refract",Ae.SMOOTHSTEP="smoothstep",Ae.FACEFORWARD="faceforward";var Ja=class extends xe{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 Il(Ja.Nodes.bilinearCubeUV,[t,o,i]);this.colorSpaceTL=this.colorSpaceTL??new dr(new Xe("","v4")),this.colorSpaceTL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTL.input.parse(a.build(e)+".tl"),this.colorSpaceTR=this.colorSpaceTR??new dr(new Xe("","v4")),this.colorSpaceTR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTR.input.parse(a.build(e)+".tr"),this.colorSpaceBL=this.colorSpaceBL??new dr(new Xe("","v4")),this.colorSpaceBL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBL.input.parse(a.build(e)+".bl"),this.colorSpaceBR=this.colorSpaceBR??new dr(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 Il(Ja.Nodes.roughnessToMip,[i]),s=new Ae(a,Ja.Nodes.m0,Ja.Nodes.cubeUV_maxMipLevel,Ae.CLAMP),l=new Ae(s,Ae.FLOOR),c=new Ae(s,Ae.FRACT),u=this.bilinearCubeUV(e,this.value,o,l),p=this.bilinearCubeUV(e,this.value,o,new Kt(l,new se(1).setReadonly(!0),Kt.ADD)),d=new Ae(u,p,c,Ae.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)}},es=Ja;es.Nodes=function(){let e=new Qa(`struct TextureCubeUVData {
23
23
  vec4 tl;
24
24
  vec4 tr;
25
25
  vec4 br;
26
26
  vec4 bl;
27
27
  vec2 f;
28
- }`),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) {
28
+ }`),t=new We("float cubeUV_maxMipLevel 8.0",!0),o=new We("float cubeUV_minMipLevel 4.0",!0),i=new We("float cubeUV_maxTileSize 256.0",!0),a=new We("float cubeUV_minTileSize 16.0",!0),s=new J(`float getFace(vec3 direction) {
29
29
  vec3 absDirection = abs(direction);
30
30
  float face = -1.0;
31
31
  if (absDirection.x > absDirection.z) {
@@ -84,7 +84,7 @@ best distance: ${d.d}`);let g=[d.x,d.y];return g.distance=d.d,g.distance}functio
84
84
  uv.x -= texelSize;
85
85
  vec4 bl = texture2D(envMap, uv);
86
86
  return TextureCubeUVData( tl, tr, br, bl, f );
87
- }`,[e,s,l,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),w=new qe("float r5 0.305",!0),O=new qe("float v5 0.016",!0),S=new qe("float m5 3.0",!0),C=new qe("float r6 0.21",!0),T=new qe("float v6 0.0038",!0),x=new qe("float m6 4.0",!0),N=[u,p,d,h,f,m,y,g,v,w,O,S,C,T,x],E=new J(`float roughnessToMip(float roughness) {
87
+ }`,[e,s,l,t,o,i,a]);c.useKeywords=!1;let u=new We("float r0 1.0",!0),p=new We("float v0 0.339",!0),d=new We("float m0 -2.0",!0),f=new We("float r1 0.8",!0),h=new We("float v1 0.276",!0),m=new We("float m1 -1.0",!0),y=new We("float r4 0.4",!0),b=new We("float v4 0.046",!0),S=new We("float m4 2.0",!0),P=new We("float r5 0.305",!0),C=new We("float v5 0.016",!0),v=new We("float m5 3.0",!0),A=new We("float r6 0.21",!0),T=new We("float v6 0.0038",!0),g=new We("float m6 4.0",!0),D=[u,p,d,f,h,m,y,b,S,P,C,v,A,T,g],E=new J(`float roughnessToMip(float roughness) {
88
88
  float mip = 0.0;
89
89
  if (roughness >= r1) {
90
90
  mip = (r0 - roughness) * (m1 - m0) / (r0 - r1) + m0;
@@ -98,7 +98,7 @@ best distance: ${d.d}`);let g=[d.x,d.y];return g.distance=d.d,g.distance}functio
98
98
  mip = -2.0 * log2(1.16 * roughness);// 1.16 = 1.79^0.25
99
99
  }
100
100
  return mip;
101
- }`,N);return{bilinearCubeUV:c,roughnessToMip:E,m0:d,cubeUV_maxMipLevel:t}}();var Oi=class extends xe{constructor(e){super("v3");this.nodeType="Normal";this.scope=e??Oi.VIEW}getShared(){return this.scope===Oi.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 Oi.VIEW:e.isShader("vertex")?s="transformedNormal":s="geometryNormal";break;case Oi.LOCAL:e.isShader("vertex")?s="objectNormal":(e.requires.normal=!0,s="vObjectNormal");break;case Oi.WORLD:e.isShader("vertex")?s="inverseTransformDirection( transformedNormal, viewMatrix ).xyz":(e.requires.worldNormal=!0,s="vWNormal");break}return e.format(s,this.getType(e),t)}},Qt=Oi;Qt.LOCAL="local",Qt.WORLD="world",Qt.VIEW="view",Qt.NORMAL="normal";jt.addKeyword("viewNormal",function(){return new Qt(Qt.VIEW)});jt.addKeyword("localNormal",function(){return new Qt(Qt.NORMAL)});jt.addKeyword("worldNormal",function(){return new Qt(Qt.WORLD)});var No=class extends xe{constructor(e){super("v3");this.nodeType="Position";this.scope=e??No.LOCAL}getType(){switch(this.scope){case No.PROJECTION:return"v4"}return this.type}getShader(){switch(this.scope){case No.LOCAL:case No.WORLD:return!1}return!0}generate(e,t,o,i,a){let s;switch(this.scope){case No.LOCAL:e.isShader("vertex")?s="transformed":(e.requires.position=!0,s="vPosition");break;case No.WORLD:if(e.isShader("vertex"))return"( modelMatrix * vec4( transformed, 1.0 ) ).xyz";e.requires.worldPosition=!0,s="vWPosition";break;case No.VIEW:s=e.isShader("vertex")?"-mvPosition.xyz":"vViewPosition";break;case No.PROJECTION:s=e.isShader("vertex")?"( projectionMatrix * modelViewMatrix * vec4( position, 1.0 ) )":"vec4( 0.0 )";break}return e.format(s,this.getType(),t)}},Sr=No;Sr.LOCAL="local",Sr.WORLD="world",Sr.VIEW="view",Sr.PROJECTION="projection";jt.addKeyword("position",function(){return new Sr});jt.addKeyword("worldPosition",function(){return new Sr(Sr.WORLD)});jt.addKeyword("viewPosition",function(){return new Sr(Sr.VIEW)});var uo=class extends xe{constructor(e){super("v3");this.nodeType="Reflect";this.scope=e??uo.CUBE}getUnique(e){return!e.context.viewNormal}getType(){switch(this.scope){case uo.SPHERE:return"v2"}return this.type}generate(e,t){let o=this.getUnique(e);if(e.isShader("fragment")){let i;switch(this.scope){case uo.VECTOR:{let a=new Qt(Qt.VIEW),s=e.context.roughness,l=a.build(e,"v3"),c=new Sr(Sr.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 uo.CUBE:{let a=new uo(uo.VECTOR).build(e,"v3"),s="vec3( -"+a+".x, "+a+".yz )";o?(e.addNodeCode(`vec3 reflectCubeVec = ${s};`),i="reflectCubeVec"):i=s;break}case uo.SPHERE:{let s="normalize( ( viewMatrix * vec4( "+new uo(uo.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)}},Do=uo;Do.CUBE="cube",Do.SPHERE="sphere",Do.VECTOR="vector";var rd=class extends xe{constructor(e=new pr,t,o){super("v4");this.nodeType="TextureCube";this.value=e,this.radianceNode=new ts(this.value,t??new Do(Do.VECTOR),o),this.irradianceNode=new ts(this.value,new Qt(Qt.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 hb=require("three");var od=class extends rt{constructor(e=new hb.CubeTexture,t,o){super("v4",{shared:!0});this.nodeType="CubeTexture";this.value=e,this.uv=t??new Do,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 dr(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 mb=`
101
+ }`,D);return{bilinearCubeUV:c,roughnessToMip:E,m0:d,cubeUV_maxMipLevel:t}}();var Ci=class extends xe{constructor(e){super("v3");this.nodeType="Normal";this.scope=e??Ci.VIEW}getShared(){return this.scope===Ci.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 Ci.VIEW:e.isShader("vertex")?s="transformedNormal":s="geometryNormal";break;case Ci.LOCAL:e.isShader("vertex")?s="objectNormal":(e.requires.normal=!0,s="vObjectNormal");break;case Ci.WORLD:e.isShader("vertex")?s="inverseTransformDirection( transformedNormal, viewMatrix ).xyz":(e.requires.worldNormal=!0,s="vWNormal");break}return e.format(s,this.getType(e),t)}},Qt=Ci;Qt.LOCAL="local",Qt.WORLD="world",Qt.VIEW="view",Qt.NORMAL="normal";jt.addKeyword("viewNormal",function(){return new Qt(Qt.VIEW)});jt.addKeyword("localNormal",function(){return new Qt(Qt.NORMAL)});jt.addKeyword("worldNormal",function(){return new Qt(Qt.WORLD)});var No=class extends xe{constructor(e){super("v3");this.nodeType="Position";this.scope=e??No.LOCAL}getType(){switch(this.scope){case No.PROJECTION:return"v4"}return this.type}getShader(){switch(this.scope){case No.LOCAL:case No.WORLD:return!1}return!0}generate(e,t,o,i,a){let s;switch(this.scope){case No.LOCAL:e.isShader("vertex")?s="transformed":(e.requires.position=!0,s="vPosition");break;case No.WORLD:if(e.isShader("vertex"))return"( modelMatrix * vec4( transformed, 1.0 ) ).xyz";e.requires.worldPosition=!0,s="vWPosition";break;case No.VIEW:s=e.isShader("vertex")?"-mvPosition.xyz":"vViewPosition";break;case No.PROJECTION:s=e.isShader("vertex")?"( projectionMatrix * modelViewMatrix * vec4( position, 1.0 ) )":"vec4( 0.0 )";break}return e.format(s,this.getType(),t)}},Sr=No;Sr.LOCAL="local",Sr.WORLD="world",Sr.VIEW="view",Sr.PROJECTION="projection";jt.addKeyword("position",function(){return new Sr});jt.addKeyword("worldPosition",function(){return new Sr(Sr.WORLD)});jt.addKeyword("viewPosition",function(){return new Sr(Sr.VIEW)});var uo=class extends xe{constructor(e){super("v3");this.nodeType="Reflect";this.scope=e??uo.CUBE}getUnique(e){return!e.context.viewNormal}getType(){switch(this.scope){case uo.SPHERE:return"v2"}return this.type}generate(e,t){let o=this.getUnique(e);if(e.isShader("fragment")){let i;switch(this.scope){case uo.VECTOR:{let a=new Qt(Qt.VIEW),s=e.context.roughness,l=a.build(e,"v3"),c=new Sr(Sr.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 uo.CUBE:{let a=new uo(uo.VECTOR).build(e,"v3"),s="vec3( -"+a+".x, "+a+".yz )";o?(e.addNodeCode(`vec3 reflectCubeVec = ${s};`),i="reflectCubeVec"):i=s;break}case uo.SPHERE:{let s="normalize( ( viewMatrix * vec4( "+new uo(uo.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)}},Do=uo;Do.CUBE="cube",Do.SPHERE="sphere",Do.VECTOR="vector";var Zu=class extends xe{constructor(e=new pr,t,o){super("v4");this.nodeType="TextureCube";this.value=e,this.radianceNode=new es(this.value,t??new Do(Do.VECTOR),o),this.irradianceNode=new es(this.value,new Qt(Qt.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 fb=require("three");var Ju=class extends rt{constructor(e=new fb.CubeTexture,t,o){super("v4",{shared:!0});this.nodeType="CubeTexture";this.value=e,this.uv=t??new Do,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 dr(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 hb=`
102
102
  uniform int frameIndex;
103
103
  uniform vec2 resolution;
104
104
  uniform mat4 previousModelViewMatrix;
@@ -106,7 +106,7 @@ uniform mat4 previousProjectionMatrix;
106
106
 
107
107
  varying vec4 vCurrentPosition;
108
108
  varying vec4 vPreviousPosition;
109
- `,yb=`
109
+ `,mb=`
110
110
  layout(location = 1) out vec4 gVelocity;
111
111
 
112
112
  uniform int frameIndex;
@@ -148,7 +148,7 @@ float getNoiseInterleavedGradient(vec2 screenPos) {
148
148
  return fract(magic.z * fract(dot(screenPos, magic.xy)));
149
149
  }
150
150
 
151
- `,gb=`
151
+ `,yb=`
152
152
  // TODO: This could be generated CPU side and passed to the shader every frame
153
153
  const vec2 haltonSequence[16] = vec2[16](
154
154
  vec2( 0.000000,-0.333334),
@@ -185,7 +185,7 @@ vPreviousPosition.xy += OUTLINE_COMPENSATION;
185
185
  #endif
186
186
  gl_Position = currentPositionJittered;
187
187
 
188
- `,xb=`
188
+ `,gb=`
189
189
  vec2 oldPos = vPreviousPosition.xy;
190
190
  oldPos /= vPreviousPosition.w;
191
191
  oldPos.xy = (oldPos.xy+1.)/2.0;
@@ -200,14 +200,14 @@ vec2 velocity = (newPos - oldPos);
200
200
  if (gl_FragColor.a <= 0.0) discard;
201
201
 
202
202
  gVelocity = vec4(velocity, 0.0, 1.0);
203
- `,bb=`
203
+ `,xb=`
204
204
  layout(location = 1) out vec4 gVelocity;
205
- `,vb=`
205
+ `,bb=`
206
206
  // Discard fully transparent pixels
207
207
  if (gl_FragColor.a <= 0.0) discard;
208
208
 
209
209
  gVelocity = vec4(0.0, 0.0, 0.0, 1.0);
210
- `;var Sb=["x","y","z","w"],NM=["float","vec2","vec3","vec4"],DM={float:"f",vec2:"v2",vec3:"v3",vec4:"v4",mat4:"v4",int:"i",bool:"b","float[]":"f[]","vec4[]":"v4[]"},_M={t:"sampler2D",tc:"samplerCube",b:"bool",i:"int",f:"float",c:"vec3",v2:"vec2",v3:"vec3",v4:"vec4",m3:"mat3",m4:"mat4","f[]":"float[]","v4[]":"vec4[]"},rs=class{constructor(){this.includes={consts:{},functions:{},structs:{}};this.cache="";this.slot="";this.shader="";this.context={};this.needsJitter=!0;this.getIncludesCode=function(){function r(e,t){return e.deps.length-t.deps.length}return function(t,o){let i=this.getIncludes(t,o);if(!i)return"";let a="";i=i.sort(r);for(let s=0;s<i.length;s++)i[s].src&&(a+=i[s].src+`
210
+ `;var vb=["x","y","z","w"],MM=["float","vec2","vec3","vec4"],EM={float:"f",vec2:"v2",vec3:"v3",vec4:"v4",mat4:"v4",int:"i",bool:"b","float[]":"f[]","vec4[]":"v4[]"},NM={t:"sampler2D",tc:"samplerCube",b:"bool",i:"int",f:"float",c:"vec3",v2:"vec2",v3:"vec3",v4:"vec4",m3:"mat3",m4:"mat4","f[]":"float[]","v4[]":"vec4[]"},ts=class{constructor(){this.includes={consts:{},functions:{},structs:{}};this.cache="";this.slot="";this.shader="";this.context={};this.needsJitter=!0;this.getIncludesCode=function(){function r(e,t){return e.deps.length-t.deps.length}return function(t,o){let i=this.getIncludes(t,o);if(!i)return"";let a="";i=i.sort(r);for(let s=0;s<i.length;s++)i[s].src&&(a+=i[s].src+`
211
211
  `);return a}}();this.slots=[],this.caches=[],this.contexts=[],this.keywords={},this.nodeData={},this.fragmentVariables={},this.fragmentParsVariables={},this.vertexParsVariables={},this.requires={uv:[],color:[],transparent:!1,irradiance:!1,position:!1,worldPosition:!1,normal:!1,worldNormal:!1,vWorldViewDir:!1,modelMatrix:!1,viewMatrix:!1,projectionMatrix:!1},this.includes={consts:[],functions:[],structs:[]},this.attributes={},this.prefixCode=["#ifdef TEXTURE_LOD_EXT"," #define texCube(a, b) textureCube(a, b)"," #define texCubeBias(a, b, c) textureCubeLodEXT(a, b, c)"," #define tex2D(a, b) texture2D(a, b)"," #define tex2DBias(a, b, c) texture2DLodEXT(a, b, c)","#else"," #define texCube(a, b) textureCube(a, b)"," #define texCubeBias(a, b, c) textureCube(a, b, c)"," #define tex2D(a, b) texture2D(a, b)"," #define tex2DBias(a, b, c) texture2D(a, b, c)","#endif",`
212
212
  // NOTE: Include Spline's blending modes. This could be part of BlendNode
213
213
  #define SPE_BLENDING_NORMAL 0
@@ -245,20 +245,20 @@ layout(location = 1) out vec4 gVelocity;
245
245
  `),fragment:["float accumAlpha = 0.0;",`void accumulateAlpha(float alpha) {
246
246
  accumAlpha += (1.0 - accumAlpha) * alpha;
247
247
  }`,""].join(`
248
- `)},this.code={vertex:"",fragment:""},this.nodeCode={vertex:"",fragment:""},this.resultCode={vertex:"",fragment:""},this.finalCode={vertex:"",fragment:""},this.inputs={uniforms:{list:[],vertex:[],fragment:[]},arrayUniforms:{list:[],vertex:[],fragment:[]},vars:{varying:[],vertex:[],fragment:[]}},this.defines={},this.uniforms={},this.extensions={derivatives:!1,fragDepth:!1,drawBuffers:!1,shaderTextureLOD:!1},this.updaters=[],this.nodes=[],this.analyzing=!1}build(r,e){this.addVertexParsCode(mb),this.addFragmentParsCode(yb),this.buildShader("vertex",r),this.buildShader("fragment",e);for(let t=0;t<this.requires.uv.length;t++)if(this.requires.uv[t]){let o=t>0?t+1:"";this.addVaryCode("varying vec2 vUv"+o+";"),t>0&&this.addVertexParsCode("attribute vec2 uv"+o+";"),this.addVertexFinalCode("vUv"+o+" = uv"+o+";")}return this.requires.color[0]&&(this.addVaryCode("varying vec4 vColor;"),this.addVertexParsCode("attribute vec4 color;"),this.addVertexFinalCode("vColor = color;")),this.requires.color[1]&&(this.addVaryCode("varying vec4 vColor2;"),this.addVertexParsCode("attribute vec4 color2;"),this.addVertexFinalCode("vColor2 = color2;")),this.requires.position&&(this.addVaryCode("varying vec3 vPosition;"),this.addVertexFinalCode("vPosition = transformed;")),this.requires.worldPosition,this.requires.normal&&(this.addVaryCode("varying vec3 vObjectNormal;"),this.addVertexFinalCode("vObjectNormal = normal;")),this.requires.modelMatrix&&this.addFragmentParsCode("uniform mat4 modelMatrix;"),this.requires.viewMatrix&&this.addFragmentParsCode("uniform mat4 viewMatrix;"),this.requires.projectionMatrix&&this.addFragmentParsCode("uniform mat4 projectionMatrix;"),this.requires.worldNormal&&(this.addVaryCode("varying vec3 vWNormal;"),this.addVertexFinalCode("vWNormal = inverseTransformDirection( transformedNormal, viewMatrix ).xyz;")),this.requires.vWorldViewDir&&(this.addVaryCode("varying vec3 vWorldViewDir;"),this.addVertexFinalCode("vWorldViewDir = isPerspectiveMatrix( projectionMatrix ) ? ( (modelMatrix * vec4(position, 1.0)).xyz - cameraPosition ) : vec3( -viewMatrix[0][2], -viewMatrix[1][2], -viewMatrix[2][2] );")),this.needsJitter&&(this.addVertexFinalCode(gb),this.addFragmentFinalCode(xb)),this}buildShader(r,e){this.resultCode[r]=e.build(this.setShader(r),"v4")}setMaterial(r,e){return this.defines={},this}addFlow(r,e,t){return this.addSlot(r).addCache(e).addContext(t)}removeFlow(){return this.removeSlot().removeCache().removeContext()}addCache(r){return this.cache=r??"",this.caches.push(this.cache),this}removeCache(){return this.caches.pop(),this.cache=this.caches[this.caches.length-1]||"",this}addContext(r){return this.context=Object.assign({},this.context,r),this.context.extra=this.context.extra||{},this.contexts.push(this.context),this}removeContext(){return this.contexts.pop(),this.context=this.contexts[this.contexts.length-1]||{},this}addSlot(r){return this.slot=r||"",this.slots.push(this.slot),this}removeSlot(){return this.slots.pop(),this.slot=this.slots[this.slots.length-1]||"",this}addFragmentVariable(r,e){this.fragmentVariables[r]===void 0&&(this.addFragmentCode(`${e} ${r};`),this.fragmentVariables[r]="")}addFragmentParsVariable(r,e){this.fragmentParsVariables[r]===void 0&&(this.addFragmentParsCode(`${e} ${r};`),this.fragmentParsVariables[r]="")}addVertexParsVariable(r,e){this.vertexParsVariables[r]===void 0&&(this.addVertexParsCode(`${e} ${r};`),this.vertexParsVariables[r]="")}addVertexCode(r){this.addCode(r,"vertex")}addFragmentCode(r){this.addCode(r,"fragment")}addCode(r,e){this.code[e??this.shader]+=r+`
248
+ `)},this.code={vertex:"",fragment:""},this.nodeCode={vertex:"",fragment:""},this.resultCode={vertex:"",fragment:""},this.finalCode={vertex:"",fragment:""},this.inputs={uniforms:{list:[],vertex:[],fragment:[]},arrayUniforms:{list:[],vertex:[],fragment:[]},vars:{varying:[],vertex:[],fragment:[]}},this.defines={},this.uniforms={},this.extensions={derivatives:!1,fragDepth:!1,drawBuffers:!1,shaderTextureLOD:!1},this.updaters=[],this.nodes=[],this.analyzing=!1}build(r,e){this.addVertexParsCode(hb),this.addFragmentParsCode(mb),this.buildShader("vertex",r),this.buildShader("fragment",e);for(let t=0;t<this.requires.uv.length;t++)if(this.requires.uv[t]){let o=t>0?t+1:"";this.addVaryCode("varying vec2 vUv"+o+";"),t>0&&this.addVertexParsCode("attribute vec2 uv"+o+";"),this.addVertexFinalCode("vUv"+o+" = uv"+o+";")}return this.requires.color[0]&&(this.addVaryCode("varying vec4 vColor;"),this.addVertexParsCode("attribute vec4 color;"),this.addVertexFinalCode("vColor = color;")),this.requires.color[1]&&(this.addVaryCode("varying vec4 vColor2;"),this.addVertexParsCode("attribute vec4 color2;"),this.addVertexFinalCode("vColor2 = color2;")),this.requires.position&&(this.addVaryCode("varying vec3 vPosition;"),this.addVertexFinalCode("vPosition = transformed;")),this.requires.worldPosition,this.requires.normal&&(this.addVaryCode("varying vec3 vObjectNormal;"),this.addVertexFinalCode("vObjectNormal = normal;")),this.requires.modelMatrix&&this.addFragmentParsCode("uniform mat4 modelMatrix;"),this.requires.viewMatrix&&this.addFragmentParsCode("uniform mat4 viewMatrix;"),this.requires.projectionMatrix&&this.addFragmentParsCode("uniform mat4 projectionMatrix;"),this.requires.worldNormal&&(this.addVaryCode("varying vec3 vWNormal;"),this.addVertexFinalCode("vWNormal = inverseTransformDirection( transformedNormal, viewMatrix ).xyz;")),this.requires.vWorldViewDir&&(this.addVaryCode("varying vec3 vWorldViewDir;"),this.addVertexFinalCode("vWorldViewDir = isPerspectiveMatrix( projectionMatrix ) ? ( (modelMatrix * vec4(position, 1.0)).xyz - cameraPosition ) : vec3( -viewMatrix[0][2], -viewMatrix[1][2], -viewMatrix[2][2] );")),this.needsJitter&&(this.addVertexFinalCode(yb),this.addFragmentFinalCode(gb)),this}buildShader(r,e){this.resultCode[r]=e.build(this.setShader(r),"v4")}setMaterial(r,e){return this.defines={},this}addFlow(r,e,t){return this.addSlot(r).addCache(e).addContext(t)}removeFlow(){return this.removeSlot().removeCache().removeContext()}addCache(r){return this.cache=r??"",this.caches.push(this.cache),this}removeCache(){return this.caches.pop(),this.cache=this.caches[this.caches.length-1]||"",this}addContext(r){return this.context=Object.assign({},this.context,r),this.context.extra=this.context.extra||{},this.contexts.push(this.context),this}removeContext(){return this.contexts.pop(),this.context=this.contexts[this.contexts.length-1]||{},this}addSlot(r){return this.slot=r||"",this.slots.push(this.slot),this}removeSlot(){return this.slots.pop(),this.slot=this.slots[this.slots.length-1]||"",this}addFragmentVariable(r,e){this.fragmentVariables[r]===void 0&&(this.addFragmentCode(`${e} ${r};`),this.fragmentVariables[r]="")}addFragmentParsVariable(r,e){this.fragmentParsVariables[r]===void 0&&(this.addFragmentParsCode(`${e} ${r};`),this.fragmentParsVariables[r]="")}addVertexParsVariable(r,e){this.vertexParsVariables[r]===void 0&&(this.addVertexParsCode(`${e} ${r};`),this.vertexParsVariables[r]="")}addVertexCode(r){this.addCode(r,"vertex")}addFragmentCode(r){this.addCode(r,"fragment")}addCode(r,e){this.code[e??this.shader]+=r+`
249
249
  `}addVertexNodeCode(r){this.addNodeCode(r,"vertex")}addFragmentNodeCode(r){this.addNodeCode(r,"fragment")}addNodeCode(r,e){this.nodeCode[e??this.shader]+=r+`
250
250
  `}clearNodeCode(r){r=r??this.shader;let e=this.nodeCode[r];return this.nodeCode[r]="",e}clearVertexNodeCode(){return this.clearNodeCode("vertex")}clearFragmentNodeCode(){return this.clearNodeCode("fragment")}addVertexFinalCode(r){this.addFinalCode(r,"vertex")}addFragmentFinalCode(r){this.addFinalCode(r,"fragment")}addFinalCode(r,e){this.finalCode[e??this.shader]+=r+`
251
251
  `}addVertexParsCode(r){this.addParsCode(r,"vertex")}addFragmentParsCode(r){this.addParsCode(r,"fragment")}addParsCode(r,e){this.parsCode[e??this.shader]+=r+`
252
252
  `}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(`
253
253
  `)}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}];
254
254
  `:t+=e+" "+u+" "+l+`;
255
- `}return t}getVars(r){return this.inputs.vars[r??this.shader]}getNodeData(r){let e=r instanceof tt?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 Ml({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 Ml({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 Za&&(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 NM[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 po.CubeReflectionMapping:case po.CubeRefractionMapping:return new od(t);case po.CubeUVReflectionMapping:return new rd(new pr(t));default:return new pr(t)}else{if(t.isVector2)return new vt(t);if(t.isVector3)return new tr(t);if(t.isVector4)return new vr(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 DM[r]||r}getFormatByType(r){return _M[r]||r}getUUID(r,e){return e=e!==void 0?e:!0,e&&this.cache&&(r=this.cache+"-"+r),r}getElementByIndex(r){return Sb[r]}getIndexByElement(r){return Sb.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=po.LinearEncoding,e===po.LinearEncoding&&this.context.gamma&&(e=po.sRGBEncoding),e}};var Qe=require("three");var Ze=class extends rt{constructor(e=0,t,o,i){super("c");this.nodeType="Color";this.value=e instanceof kt?e:new kt(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 Ge=class extends rt{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 ad=require("three");var It=class extends rt{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 fo=class extends rt{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 wb=require("three");var Un=class extends rt{};var nd=class extends Un{constructor(e){super("v3");this.image=e;this._value=new wb.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 Ai=class extends Un{constructor(e,t,o=1008,i=1006){super("t");this.image=e;this.wrap=t;this.minFilter=o;this.magFilter=i}get value(){return this.image.getTexture(this.wrap,this.minFilter,this.magFilter)}};var Pb=require("three");var os=class extends rt{constructor(e){super("m3");this.nodeType="Matrix3";this.value=e??new Pb.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 Cb=require("three");var rr=class extends rt{constructor(e){super("m4");this.nodeType="Matrix4";this.value=e??new Cb.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 Nl=require("three");function Ob(n,r,e,t=0){n.setUvTransform(e[0],e[1],r[0],r[1],0,0,0).premultiply(new Nl.Matrix3().makeRotation(t*Nl.MathUtils.DEG2RAD))}var id=class extends os{constructor(e,t,o=0){super(new Nl.Matrix3);this.repeat=e;this.offset=t;this.rotation=o;Ob(this.value,e,t,o)}updateMatrix(){Ob(this.value,this.repeat,this.offset,this.rotation)}};var $f=require("three");var ho=class extends rt{constructor(e=1,t){super("v4[]");this.nodeType="Vector4Array";this.size=e,this.value=Array.isArray(t)?t:t instanceof $f.Vector4?new Array(e).fill(t):new Array(e).fill(new $f.Vector4(0))}};var ns=class extends xe{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 Yf=class extends xe{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(Yf.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)}},Ti=Yf;Ti.Nodes=function(){return{customColor:new J(`vec3 customColor(vec3 color, float mask, float alpha, out float calpha) {
255
+ `}return t}getVars(r){return this.inputs.vars[r??this.shader]}getNodeData(r){let e=r instanceof tt?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 Tl({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 Tl({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 We?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 MM[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 po.CubeReflectionMapping:case po.CubeRefractionMapping:return new Ju(t);case po.CubeUVReflectionMapping:return new Zu(new pr(t));default:return new pr(t)}else{if(t.isVector2)return new vt(t);if(t.isVector3)return new tr(t);if(t.isVector4)return new vr(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 EM[r]||r}getFormatByType(r){return NM[r]||r}getUUID(r,e){return e=e!==void 0?e:!0,e&&this.cache&&(r=this.cache+"-"+r),r}getElementByIndex(r){return vb[r]}getIndexByElement(r){return vb.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=po.LinearEncoding,e===po.LinearEncoding&&this.context.gamma&&(e=po.sRGBEncoding),e}};var Qe=require("three");var Ze=class extends rt{constructor(e=0,t,o,i){super("c");this.nodeType="Color";this.value=e instanceof kt?e:new kt(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 Ge=class extends rt{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 rd=require("three");var It=class extends rt{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 fo=class extends rt{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 Sb=require("three");var kn=class extends rt{};var ed=class extends kn{constructor(e){super("v3");this.image=e;this._value=new Sb.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 Oi=class extends kn{constructor(e,t,o=1008,i=1006){super("t");this.image=e;this.wrap=t;this.minFilter=o;this.magFilter=i}get value(){return this.image.getTexture(this.wrap,this.minFilter,this.magFilter)}};var wb=require("three");var rs=class extends rt{constructor(e){super("m3");this.nodeType="Matrix3";this.value=e??new wb.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 Pb=require("three");var rr=class extends rt{constructor(e){super("m4");this.nodeType="Matrix4";this.value=e??new Pb.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 Ml=require("three");function Cb(n,r,e,t=0){n.setUvTransform(e[0],e[1],r[0],r[1],0,0,0).premultiply(new Ml.Matrix3().makeRotation(t*Ml.MathUtils.DEG2RAD))}var td=class extends rs{constructor(e,t,o=0){super(new Ml.Matrix3);this.repeat=e;this.offset=t;this.rotation=o;Cb(this.value,e,t,o)}updateMatrix(){Cb(this.value,this.repeat,this.offset,this.rotation)}};var Hf=require("three");var ho=class extends rt{constructor(e=1,t){super("v4[]");this.nodeType="Vector4Array";this.size=e,this.value=Array.isArray(t)?t:t instanceof Hf.Vector4?new Array(e).fill(t):new Array(e).fill(new Hf.Vector4(0))}};var os=class extends xe{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 Wf=class extends xe{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(Wf.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)}},Ai=Wf;Ai.Nodes=function(){return{customColor:new J(`vec3 customColor(vec3 color, float mask, float alpha, out float calpha) {
256
256
  float lalpha = alpha * mask;
257
257
  calpha = lalpha / clamp(lalpha + accumAlpha, 0.00001, 1.0);
258
258
  accumAlpha += (1.0 - accumAlpha) * lalpha;
259
259
 
260
260
  return color;
261
- }`)}}();var Xf=class extends xe{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(Xf.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)}},is=Xf;is.Nodes=function(){return{customNormal:new J(`vec3 customNormal(vec3 cnormal, vec3 norm, float mask, float alpha, out float calpha) {
261
+ }`)}}();var qf=class extends xe{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(qf.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)}},ns=qf;ns.Nodes=function(){return{customNormal:new J(`vec3 customNormal(vec3 cnormal, vec3 norm, float mask, float alpha, out float calpha) {
262
262
  vec3 normal = packNormalToRGB( norm ).rgb;
263
263
  normal *= step( vec3(0.5), cnormal );
264
264
 
@@ -267,7 +267,7 @@ layout(location = 1) out vec4 gVelocity;
267
267
  accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
268
268
 
269
269
  return normal;
270
- }`)}}();var as=class extends xe{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(as.Nodes.cylindrical);break;case 2:i=e.include(as.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(`
270
+ }`)}}();var is=class extends xe{constructor(e,t,o,i,a,s,l,c,u,p,d,f){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=f,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(is.Nodes.cylindrical);break;case 2:i=e.include(is.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(`
271
271
  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) {
272
272
  vec2 projected = (1. + (position.${l})) / 2.;
273
273
  vec2 uvs = ( mat * vec3( (projected * 2. - 1.) / (size * .5), 1. ) / 2. + 0.5 ).xy;
@@ -291,7 +291,7 @@ layout(location = 1) out vec4 gVelocity;
291
291
  accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
292
292
 
293
293
  return col;
294
- }`);i=e.include(c);break;case 4:i=e.include(as.Nodes.triplanar);break;default:i=e.include(as.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)}},Hn=as;Hn.Nodes=function(){let e=new J(`
294
+ }`);i=e.include(c);break;case 4:i=e.include(is.Nodes.triplanar);break;default:i=e.include(is.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)}},Un=is;Un.Nodes=function(){let e=new J(`
295
295
  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) {
296
296
  vec3 posN = normalize(position);
297
297
  float u = 0.5 + atan(posN.z, posN.x) / (2.*3.1415);
@@ -446,7 +446,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
446
446
 
447
447
  return col;//n * 0.5 + 0.5;
448
448
  }
449
- `);return{cylindrical:e,spherical:t,uv:o,triplanar:i}}();var ss=class extends xe{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) {
449
+ `);return{cylindrical:e,spherical:t,uv:o,triplanar:i}}();var as=class extends xe{constructor(e,t,o,i,a,s,l,c,u,p,d,f){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=f,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) {
450
450
  vec4 color = colors[0];
451
451
  #ifdef ${o}_IS_VECTOR
452
452
  #ifdef ${o}_LINEAR
@@ -486,7 +486,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
486
486
  accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
487
487
 
488
488
  return color.rgb;
489
- }`,[ss.Nodes.vectorLinearWorldSpaceDepth,ss.Nodes.vectorLinearObjectSpaceDepth,ss.Nodes.vectorSphericalObjectSpaceDepth,ss.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)}},ls=ss;ls.Nodes=function(){let e=new J(`float vectorLinearWorldSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
489
+ }`,[as.Nodes.vectorLinearWorldSpaceDepth,as.Nodes.vectorLinearObjectSpaceDepth,as.Nodes.vectorSphericalObjectSpaceDepth,as.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)}},ss=as;ss.Nodes=function(){let e=new J(`float vectorLinearWorldSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
490
490
  vec3 n = normalize(direction);
491
491
  float dist = (n.x*(vWPosition.x - origin.x) + n.y*(vWPosition.y - origin.y) + n.z*(vWPosition.z - origin.z));
492
492
  return ( dist - near ) / ( far - near );
@@ -500,7 +500,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
500
500
  }`),i=new J(`float vectorSphericalObjectSpaceDepth(vec3 origin, float near, float far) {
501
501
  float dist = length(position - origin);
502
502
  return ( dist - near ) / ( far - near );
503
- }`);return{vectorLinearWorldSpaceDepth:e,vectorLinearObjectSpaceDepth:t,vectorSphericalWorldSpaceDepth:o,vectorSphericalObjectSpaceDepth:i}}();var Dl=class extends xe{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) {
503
+ }`);return{vectorLinearWorldSpaceDepth:e,vectorLinearObjectSpaceDepth:t,vectorSphericalWorldSpaceDepth:o,vectorSphericalObjectSpaceDepth:i}}();var El=class extends xe{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) {
504
504
  float fresnel = bias + scale * pow( abs( factor + dot( normalize( vWorldViewDir ), normalize( vWNormal ) ) ), intensity );
505
505
 
506
506
  float lalpha = clamp(fresnel, 0.0, 1.0) * alpha * mask;
@@ -508,7 +508,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
508
508
  accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
509
509
 
510
510
  return color;
511
- }`),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 Kf=class extends xe{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(Kf.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)}},cs=Kf;cs.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) {
511
+ }`),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 $f=class extends xe{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($f.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)}},ls=$f;ls.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) {
512
512
  vec4 color = colors[0];
513
513
  vec2 m = morph / vUv.xy;
514
514
  vec2 rot = vec2( 0.5 + m.x, m.y );
@@ -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 color.xyz;
553
- }`)}}();var Qf=class extends xe{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(Qf.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)}},us=Qf;us.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) {
553
+ }`)}}();var Yf=class extends xe{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(Yf.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)}},cs=Yf;cs.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) {
554
554
  vec3 viewDir = normalize( vViewPosition );
555
555
  vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );
556
556
  vec3 y = cross( viewDir, x );
@@ -564,7 +564,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
564
564
  accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
565
565
 
566
566
  return matcapColor.rgb;
567
- }`)}}();var _l=(a=>(a.SIMPLEX="simplex3d",a.SIMPLEX_FRACTAL="simplex3dFractal",a.ASHIMA="simplexAshima",a.FBM="fbm",a.PERLIN="perlin",a.VORONOI="voronoi",a))(_l||{}),Zt=function(){let r=new J(`vec3 random3(vec3 c) {
567
+ }`)}}();var Zt=function(){let r=new J(`vec3 random3(vec3 c) {
568
568
  float j = 4096.0*sin(dot(c,vec3(17.0, 59.4, 15.0)));
569
569
  vec3 r;
570
570
  r.z = fract(512.0*j);
@@ -573,7 +573,39 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
573
573
  j *= .125;
574
574
  r.y = fract(512.0*j);
575
575
  return r-0.5;
576
- }`),e=new J(`float simplex3d(vec3 p) {
576
+ }`),e=new J(`float simplexFast(vec3 p) {
577
+ vec3 s = floor(p + dot(p, vec3(F3)));
578
+ mediump vec3 x = p - s + dot(s, vec3(G3));
579
+ mediump vec3 hs = s;
580
+
581
+ mediump vec3 e = step(vec3(0.0), x - x.yzx);
582
+ mediump vec3 i1 = e*(1.0 - e.zxy);
583
+ mediump vec3 i2 = 1.0 - e.zxy*(1.0 - e);
584
+
585
+ mediump vec3 x1 = x - i1 + G3;
586
+ mediump vec3 x2 = x - i2 + 2.0*G3;
587
+ mediump vec3 x3 = x - 1.0 + 3.0*G3;
588
+
589
+ mediump vec4 w, d;
590
+
591
+ w.x = dot(x, x);
592
+ w.y = dot(x1, x1);
593
+ w.z = dot(x2, x2);
594
+ w.w = dot(x3, x3);
595
+
596
+ w = max(0.6 - w, 0.0);
597
+
598
+ d.x = dot(random3(hs), x);
599
+ d.y = dot(random3(hs + i1), x1);
600
+ d.z = dot(random3(hs + i2), x2);
601
+ d.w = dot(random3(hs + 1.0), x3);
602
+
603
+ w *= w;
604
+ w *= w;
605
+ d *= w;
606
+
607
+ return dot(d, vec4(52.0));
608
+ }`,[r]);e.keywords.F3=new We("float F3 0.3333333"),e.keywords.G3=new We("float G3 0.1666667");let t=new J(`float simplexPrecise(vec3 p) {
577
609
  vec3 s = floor(p + dot(p, vec3(F3)));
578
610
  vec3 x = p - s + dot(s, vec3(G3));
579
611
 
@@ -604,15 +636,15 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
604
636
  d *= w;
605
637
 
606
638
  return dot(d, vec4(52.0));
607
- }`,[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) {
639
+ }`,[r]);t.keywords.F3=new We("float F3 0.3333333"),t.keywords.G3=new We("float G3 0.1666667");let o=new J(`float simplexFractal(vec3 m) {
608
640
  mat3 rot1 = mat3(-0.37, 0.36, 0.85,-0.14,-0.93, 0.34,0.92, 0.01,0.4);
609
641
  mat3 rot2 = mat3(-0.55,-0.39, 0.74, 0.33,-0.91,-0.24,0.77, 0.12,0.63);
610
642
  mat3 rot3 = mat3(-0.71, 0.52,-0.47,-0.08,-0.72,-0.68,-0.7,-0.45,0.56);
611
- return 0.5333333 * simplex3d(m * rot1)
612
- + 0.2666667 * simplex3d(2.0 * m * rot2)
613
- + 0.1333333 * simplex3d(4.0 * m * rot3)
614
- + 0.0666667 * simplex3d(8.0 * m);
615
- }`,[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) {
643
+ return 0.5333333 * simplexFast(m * rot1)
644
+ + 0.2666667 * simplexFast(2.0 * m * rot2)
645
+ + 0.1333333 * simplexFast(4.0 * m * rot3)
646
+ + 0.0666667 * simplexFast(8.0 * m);
647
+ }`,[e]),i=new J("vec4 permute(vec4 x){return mod(((x*34.0)+1.0)*x, 289.0);}"),a=new J("vec4 taylorInvSqrt(vec4 r){return 1.79284291400159 - 0.85373472095314 * r;}"),s=new J(`float simplexAshima(vec3 v) {
616
648
  const vec2 C = vec2(1.0/6.0, 1.0/3.0) ;
617
649
  const vec4 D = vec4(0.0, 0.5, 1.0, 2.0);
618
650
  vec3 i = floor(v + dot(v, C.yyy) );
@@ -657,7 +689,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
657
689
  m = m * m;
658
690
  return 42.0 * dot( m*m, vec4( dot(p0,x0), dot(p1,x1),
659
691
  dot(p2,x2), dot(p3,x3) ) );
660
- }`,[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){
692
+ }`,[i,a]),l=new J("vec4 mod289(vec4 x){return x - floor(x * (1.0 / 289.0)) * 289.0;}"),c=new J("vec4 perm(vec4 x){return mod289(((x * 34.0) + 1.0) * x);}",[l]),u=new J(`float noise(vec3 p){
661
693
  vec3 a = floor(p);
662
694
  vec3 d = p - a;
663
695
  d = d * d * (3.0 - 2.0 * d);
@@ -672,7 +704,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
672
704
  vec4 o3 = o2 * d.z + o1 * (1.0 - d.z);
673
705
  vec2 o4 = o3.yw * d.x + o3.xz * (1.0 - d.x);
674
706
  return o4.y * d.y + o4.x * (1.0 - d.y);
675
- }`,[l]),u=new J(`float fbm(vec3 x) {
707
+ }`,[c]),p=new J(`float fbm(vec3 x) {
676
708
  float v = 0.0;
677
709
  float a = 0.5;
678
710
  vec3 shift = vec3(100);
@@ -682,7 +714,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
682
714
  a *= 0.5;
683
715
  }
684
716
  return v;
685
- }`,[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){
717
+ }`,[u]);p.keywords.NUM_OCTAVES=new We(`int NUM_OCTAVES ${5}`);let d=new J("vec3 fade(vec3 t) {return t*t*t*(t*(t*6.0-15.0)+10.0);}"),f=new J(`float perlin(vec3 P){
686
718
  vec3 Pi0 = floor(P);
687
719
  vec3 Pi1 = Pi0 + vec3(1.0);
688
720
  Pi0 = mod(Pi0, 289.0);
@@ -741,17 +773,17 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
741
773
  vec2 n_yz = mix(n_z.xy, n_z.zw, fade_xyz.y);
742
774
  float n_xyz = mix(n_yz.x, n_yz.y, fade_xyz.x);
743
775
  return 2.2 * n_xyz;
744
- }`,[o,i,p]),h=new J(`float hashwithoutsine13(vec3 p3)
776
+ }`,[i,a,d]),h=new J(`float hashwithoutsine13(vec3 p3)
745
777
  {
746
778
  p3 = fract(p3 * .1031);
747
779
  p3 += dot(p3, p3.yzx + 33.33);
748
780
  return fract((p3.x + p3.y) * p3.z);
749
- }`),f=new J(`vec3 hashwithoutsine33(vec3 p3)
781
+ }`),m=new J(`vec3 hashwithoutsine33(vec3 p3)
750
782
  {
751
783
  p3 = fract(p3 * vec3(.1031, .1030, .0973));
752
784
  p3 += dot(p3, p3.yxz+33.33);
753
785
  return fract((p3.xxy + p3.yxx)*p3.zyx);
754
- }`),m=new J(`float metric(in vec3 p)
786
+ }`),y=new J(`float metric(in vec3 p)
755
787
  {
756
788
  // L2
757
789
  return length(p);
@@ -759,17 +791,17 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
759
791
  // Chebyshev
760
792
  // vec3 a = abs(p);
761
793
  // return max(a.x, max(a.y, a.z));
762
- }`),y=new J(`float smin( float a, float b, float k )
794
+ }`),b=new J(`float smin( float a, float b, float k )
763
795
  {
764
796
  float h = smoothstep(0.0, 1.0, 0.5 + 0.5 * (b - a) / k);
765
797
  float correction = k * h * (1.0 - h);
766
798
  return mix(b, a, h) - correction;
767
- }`),g=new J(`float smax( float a, float b, float k )
799
+ }`),S=new J(`float smax( float a, float b, float k )
768
800
  {
769
801
  float h = smoothstep(1.0, 0.0, 0.5 + 0.5 * (a - b) / k);
770
802
  float correction = k * h * (1.0 - h);
771
803
  return mix(a, b, h) + correction;
772
- }`),v=new J(`float remap(float value, float input_min, float input_max, float output_min, float output_max) {
804
+ }`),P=new J(`float remap(float value, float input_min, float input_max, float output_min, float output_max) {
773
805
  // Compute width of each interval
774
806
  float input_width = input_max - input_min;
775
807
  float output_width = output_max - output_min;
@@ -779,7 +811,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
779
811
 
780
812
  // Convert the 0-1 range into a value in output range
781
813
  return output_min + (scaled * output_width);
782
- }`),w=new J(`float voronoi(in vec3 x, in int style, in float smoothness, in float seed, in int quality)
814
+ }`),C=new J(`float voronoi(in vec3 x, in int style, in float smoothness, in float seed, in int quality)
783
815
  {
784
816
  // Integer and fractional parts of this point's coordinates
785
817
  ivec3 p = ivec3(floor(x));
@@ -917,8 +949,8 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
917
949
  return hashwithoutsine13(vec3(p + mb) + seed);
918
950
  }
919
951
  }
920
- `,[h,f,m,y,g,v]);return{simplex:e,simplexFractal:t,simplexAshima:a,fbm:u,perlin:d,voronoi:w}}();var ds=class extends xe{constructor(e,t,o,i,a,s,l,c,u,p,d,h,f,m,y,g,v,w,O){super("v3");this.nodeType="Noise";this.scale=e,this.size=t,this.move=o,this.fA=i,this.fB=a,this.distortion=s,this.colorA=l,this.colorB=c,this.colorC=u,this.colorD=p,this.noiseType=h,this.voronoiStyle=m,this.highCut=y,this.lowCut=g,this.smoothness=v,this.seed=w,this.quality=O,this.isMask=f,this.alpha=d,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t,o,i,a){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let s=Object.values(_l)[this.noiseType.value],l=s=="voronoi"?`
921
- float v = ${s}(st + move, voronoiStyle, smoothness, seed, quality);
952
+ `,[h,m,y,b,S,P]);return{simplexFast:e,simplexPrecise:t,simplexFractal:o,simplexAshima:s,fbm:p,perlin:f,voronoi:C}}();var us=class extends xe{constructor(e,t,o,i,a,s,l,c,u,p,d,f,h,m,y,b,S,P,C){super("v3");this.nodeType="Noise";this.scale=e,this.size=t,this.move=o,this.fA=i,this.fB=a,this.distortion=s,this.colorA=l,this.colorB=c,this.colorC=u,this.colorD=p,this.noiseType=f,this.voronoiStyle=m,this.highCut=y,this.lowCut=b,this.smoothness=S,this.seed=P,this.quality=C,this.isMask=h,this.alpha=d,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t,o,i,a){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let l=["simplexFast","simplexFractal","simplexAshima","fbm","perlin","voronoi"][this.noiseType.value],c=l=="voronoi"?`
953
+ float v = ${l}(st + move, voronoiStyle, smoothness, seed, quality);
922
954
 
923
955
  // Apply clipping to colors
924
956
  v = remap(v, lowCut, highCut, 0.0, 1.0);
@@ -928,18 +960,18 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
928
960
  // Note that the voronoi mode only uses colors "A" and "C" from the UI
929
961
  vec4 color = mix(colorA, colorC, v);
930
962
  `:`
931
- vec3 q = vec3(${s}(st),
932
- ${s}(st + vec3(1.0)),
933
- ${s}(st + vec3(1.0)));
934
- vec3 r = vec3(${s}(st + vec3(distortion, 1.0) * q + vec3(fA, 1.0) + move),
935
- ${s}(st + vec3(distortion, 1.0) * q + vec3(fB, 1.0) + move),
936
- ${s}(st * q));
937
- float f = ${s}(st + r);
963
+ vec3 q = vec3(${l}(st),
964
+ ${l}(st + vec3(1.0)),
965
+ ${l}(st + vec3(1.0)));
966
+ vec3 r = vec3(${l}(st + vec3(distortion, 1.0) * q + vec3(fA, 1.0) + move),
967
+ ${l}(st + vec3(distortion, 1.0) * q + vec3(fB, 1.0) + move),
968
+ ${l}(st * q));
969
+ float f = ${l}(st + r);
938
970
  vec4 color;
939
971
  color = mix(colorA, colorB, clamp((f * f) * 4.0, 0.0, 1.0));
940
972
  color = mix(color, colorC, clamp(length(q), 0.0, 1.0));
941
973
  color = mix(color, colorD, clamp(length(r.x), 0.0, 1.0));
942
- `,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)
974
+ `,u=new J(`vec3 ${l}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)
943
975
  {
944
976
  // Prevent scale of zero
945
977
  scale = max(abs(scale), 0.001);
@@ -947,14 +979,14 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
947
979
  vec3 st = position / size;
948
980
  st /= scale;
949
981
 
950
- ${l}
982
+ ${c}
951
983
 
952
984
  float lalpha = alpha * color.a * mask;
953
985
  calpha = mix(lalpha / clamp(lalpha + accumAlpha, 0.00001, 1.0), lalpha, float(isMask));
954
986
  accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
955
987
 
956
988
  return clamp(color, 0.0, 1.0).rgb;
957
- }`,[Zt.simplex,Zt.simplexFractal,Zt.simplexAshima,Zt.fbm,Zt.perlin,Zt.voronoi]),u=e.include(c),p=[];return p.push(this.scale.build(e,"f")),p.push(this.size.build(e,"v3")),p.push(this.move.build(e,"f")),p.push(this.fA.build(e,"v2")),p.push(this.fB.build(e,"v2")),p.push(this.distortion.build(e,"v2")),p.push(this.colorA.build(e,"v4")),p.push(this.colorB.build(e,"v4")),p.push(this.colorC.build(e,"v4")),p.push(this.colorD.build(e,"v4")),p.push(this.voronoiStyle.build(e,"i")),p.push(this.highCut.build(e,"f")),p.push(this.lowCut.build(e,"f")),p.push(this.smoothness.build(e,"f")),p.push(this.seed.build(e,"f")),p.push(this.quality.build(e,"i")),p.push(this.isMask.build(e,"b")),p.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),p.push(this.alpha.build(e,"f")),p.push(this.calpha),e.format(u+"("+p.join(",")+")",this.getType(e),t)}};ds.numOctaves=5;var Zf=class extends xe{constructor(e,t,o,i,a,s,l,c,u,p,d,h,f,m,y,g){super("v3");this.nodeType="Outline";this.firstTime=!0,this.outlineColor=e,this.contourColor=t,this.outlineWidth=o,this.contourWidth=i,this.contourThreshold=a,this.outlineThreshold=s,this.contourFrequency=l,this.outlineSmoothing=c,this.contourDirection=u,this.positionalLines=p,this.compensation=d,this.resolution=h,this.normalMap=f,this.depthMap=m,this.pixelRatio=y,this.alpha=g,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){let o=`g${this.uuid.toString().replace(/-/g,"")}`;if(e.require("vWorldViewDir"),e.require("worldNormal"),e.extensions.derivatives=!0,this.compensation.value&&e.define("OUTLINE_COMPENSATION",`${o}_offset`),this.firstTime){let i=this.outlineWidth.build(e,"f"),a=this.resolution.build(e,"v2"),s=this.compensation.build(e,"b"),l=this.pixelRatio.build(e,"f");e.addVertexParsVariable("randomColor","attribute vec3"),e.addVertexParsVariable("extrudeNormal","attribute vec3"),e.addVertexParsVariable(i,"uniform float"),e.addVertexParsVariable(a,"uniform vec2"),e.addVertexParsVariable(s,"uniform bool"),e.addVertexParsVariable(l,"uniform float"),e.addVertexParsVariable("vID","flat out float"),e.addFragmentParsVariable("vID","flat in float"),e.addVertexFinalCode(`
989
+ }`,[Zt.simplexFast,Zt.simplexFractal,Zt.simplexAshima,Zt.fbm,Zt.perlin,Zt.voronoi]),p=e.include(u),d=[];return d.push(this.scale.build(e,"f")),d.push(this.size.build(e,"v3")),d.push(this.move.build(e,"f")),d.push(this.fA.build(e,"v2")),d.push(this.fB.build(e,"v2")),d.push(this.distortion.build(e,"v2")),d.push(this.colorA.build(e,"v4")),d.push(this.colorB.build(e,"v4")),d.push(this.colorC.build(e,"v4")),d.push(this.colorD.build(e,"v4")),d.push(this.voronoiStyle.build(e,"i")),d.push(this.highCut.build(e,"f")),d.push(this.lowCut.build(e,"f")),d.push(this.smoothness.build(e,"f")),d.push(this.seed.build(e,"f")),d.push(this.quality.build(e,"i")),d.push(this.isMask.build(e,"b")),d.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),d.push(this.alpha.build(e,"f")),d.push(this.calpha),e.format(p+"("+d.join(",")+")",this.getType(e),t)}};us.numOctaves=5;var Xf=class extends xe{constructor(e,t,o,i,a,s,l,c,u,p,d,f,h,m,y,b){super("v3");this.nodeType="Outline";this.firstTime=!0,this.outlineColor=e,this.contourColor=t,this.outlineWidth=o,this.contourWidth=i,this.contourThreshold=a,this.outlineThreshold=s,this.contourFrequency=l,this.outlineSmoothing=c,this.contourDirection=u,this.positionalLines=p,this.compensation=d,this.resolution=f,this.normalMap=h,this.depthMap=m,this.pixelRatio=y,this.alpha=b,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){let o=`g${this.uuid.toString().replace(/-/g,"")}`;if(e.require("vWorldViewDir"),e.require("worldNormal"),e.extensions.derivatives=!0,this.compensation.value&&e.define("OUTLINE_COMPENSATION",`${o}_offset`),this.firstTime){let i=this.outlineWidth.build(e,"f"),a=this.resolution.build(e,"v2"),s=this.compensation.build(e,"b"),l=this.pixelRatio.build(e,"f");e.addVertexParsVariable("randomColor","attribute vec3"),e.addVertexParsVariable("extrudeNormal","attribute vec3"),e.addVertexParsVariable(i,"uniform float"),e.addVertexParsVariable(a,"uniform vec2"),e.addVertexParsVariable(s,"uniform bool"),e.addVertexParsVariable(l,"uniform float"),e.addVertexParsVariable("vID","flat out float"),e.addFragmentParsVariable("vID","flat in float"),e.addVertexFinalCode(`
958
990
  vID = randomColor.r;
959
991
  vec2 ${o}_offset = vec2(0.0);
960
992
  if (${s}) {
@@ -969,7 +1001,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
969
1001
  // if this offset is the biggest of all the potential offsets
970
1002
  gl_Position = ${o}_clipPosition;
971
1003
  }
972
- `)}if(e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let i=e.include(Zf.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."),""}},ps=Zf;ps.Nodes=function(){let e=new J(`
1004
+ `)}if(e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let i=e.include(Xf.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."),""}},ds=Xf;ds.Nodes=function(){let e=new J(`
973
1005
  float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outlineWidth, float pixelRatio)
974
1006
  {
975
1007
  vec2 halton = haltonSequence[frameIndex];
@@ -1118,7 +1150,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1118
1150
  accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
1119
1151
 
1120
1152
  return result;
1121
- }`,[e])}}();var _o=class extends xe{constructor(e,t,o,i,a,s,l,c,u,p,d,h,f,m,y,g,v,w){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=w,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)
1153
+ }`,[e])}}();var _o=class extends xe{constructor(e,t,o,i,a,s,l,c,u,p,d,f,h,m,y,b,S,P){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=f,this.rotation=h,this.vertical=m,this.horizontal=y,this.sides=b,this.isMask=P,this.alpha=S,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)
1122
1154
  {
1123
1155
  vec3 p3 = fract(vec3(p.xyx) * .1031);
1124
1156
  p3 += dot(p3, p3.yzx + 33.33);
@@ -1132,7 +1164,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1132
1164
  cos(radians) * (uv.y - mid) - sin(radians) * (uv.x - mid) + mid
1133
1165
  );
1134
1166
  return repeat ? fract(rotated): rotated;
1135
- }`),l="";if(this.projection.value===4){let d=this.style.value===2?`${o}(uv0, frequency, size, variation, smoothness_remapped, zigzag, rotation, sides)`:`${o}(uv0, frequency, size, variation, smoothness_remapped, zigzag, rotation)`,h=this.style.value===2?`${o}(uv1, frequency, size, variation, smoothness_remapped, zigzag, rotation, sides)`:`${o}(uv1, frequency, size, variation, smoothness_remapped, zigzag, rotation)`,f=this.style.value===2?`${o}(uv2, frequency, size, variation, smoothness_remapped, zigzag, rotation, sides)`:`${o}(uv2, frequency, size, variation, smoothness_remapped, zigzag, rotation)`;l=`
1167
+ }`),l="";if(this.projection.value===4){let d=this.style.value===2?`${o}(uv0, frequency, size, variation, smoothness_remapped, zigzag, rotation, sides)`:`${o}(uv0, frequency, size, variation, smoothness_remapped, zigzag, rotation)`,f=this.style.value===2?`${o}(uv1, frequency, size, variation, smoothness_remapped, zigzag, rotation, sides)`:`${o}(uv1, frequency, size, variation, smoothness_remapped, zigzag, rotation)`,h=this.style.value===2?`${o}(uv2, frequency, size, variation, smoothness_remapped, zigzag, rotation, sides)`:`${o}(uv2, frequency, size, variation, smoothness_remapped, zigzag, rotation)`;l=`
1136
1168
  vec3 p = position;
1137
1169
  float factor = 0.0125;
1138
1170
  vec2 uv0 = fract(p.xy * factor);
@@ -1144,8 +1176,8 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1144
1176
  uv2 = rotate_uv(uv2 + offset, rotation, true);
1145
1177
 
1146
1178
  float d0 = ${d};
1147
- float d1 = ${h};
1148
- float d2 = ${f};
1179
+ float d1 = ${f};
1180
+ float d2 = ${h};
1149
1181
 
1150
1182
  // Range from 3 to 128 seems to be good
1151
1183
  float exponent = (1.0 - blending) * 125.0 + 3.0;
@@ -1160,20 +1192,20 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1160
1192
  float draw = d0 + d1 + d2;
1161
1193
 
1162
1194
  vec2 custom_uv = uv0 * weights.z + uv1 * weights.x + uv2 * weights.y;
1163
- `}else{let d=this.style.value===2?`${o}(custom_uv, frequency, size, variation, smoothness_remapped, zigzag, rotation, sides)`:`${o}(custom_uv, frequency, size, variation, smoothness_remapped, zigzag, rotation)`,h="";this.axis.value===0?h=`float radius = length(p);
1195
+ `}else{let d=this.style.value===2?`${o}(custom_uv, frequency, size, variation, smoothness_remapped, zigzag, rotation, sides)`:`${o}(custom_uv, frequency, size, variation, smoothness_remapped, zigzag, rotation)`,f="";this.axis.value===0?f=`float radius = length(p);
1164
1196
  float theta = atan(p.y, p.z);
1165
- float phi = acos(p.x / radius);`:this.axis.value===1?h=`float radius = length(p);
1197
+ float phi = acos(p.x / radius);`:this.axis.value===1?f=`float radius = length(p);
1166
1198
  float theta = atan(p.x, p.z);
1167
- float phi = acos(p.y / radius);`:(this.axis.value,h=`float radius = length(p);
1199
+ float phi = acos(p.y / radius);`:(this.axis.value,f=`float radius = length(p);
1168
1200
  float theta = atan(p.y, p.x);
1169
- float phi = acos(p.z / radius);`);let f="";switch(this.projection.value){case 0:f="custom_uv = vUv.st;";break;case 1:break;case 2:f=`
1201
+ float phi = acos(p.z / radius);`);let h="";switch(this.projection.value){case 0:h="custom_uv = vUv.st;";break;case 1:break;case 2:h=`
1170
1202
  vec3 p = position;
1171
- ${h}
1203
+ ${f}
1172
1204
  custom_uv = vec2(theta, phi);
1173
1205
  custom_uv /= PI;
1174
1206
  `;break;case 3:break;default:break}l=`
1175
1207
  vec2 custom_uv;
1176
- ${f}
1208
+ ${h}
1177
1209
 
1178
1210
  custom_uv += offset;
1179
1211
  custom_uv = fract(custom_uv);
@@ -1204,7 +1236,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1204
1236
  accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
1205
1237
 
1206
1238
  return clamp(color, 0.0, 1.0).rgb;
1207
- }`,[s,a,_o.DrawFunctions.circle,_o.DrawFunctions.ring,_o.DrawFunctions.polygon,_o.DrawFunctions.cross,_o.DrawFunctions.diamond,_o.DrawFunctions.checkerboard,_o.DrawFunctions.line,_o.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)}},fs=_o;fs.DrawFunctions=function(){let e=new J(`float hashwithoutsine12(vec2 p) {
1239
+ }`,[s,a,_o.DrawFunctions.circle,_o.DrawFunctions.ring,_o.DrawFunctions.polygon,_o.DrawFunctions.cross,_o.DrawFunctions.diamond,_o.DrawFunctions.checkerboard,_o.DrawFunctions.line,_o.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)}},ps=_o;ps.DrawFunctions=function(){let e=new J(`float hashwithoutsine12(vec2 p) {
1208
1240
  vec3 p3 = fract(vec3(p.xyx) * 0.1031);
1209
1241
  p3 += dot(p3, p3.yzx + 33.33);
1210
1242
  return fract((p3.x + p3.y) * p3.z);
@@ -1369,21 +1401,22 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1369
1401
  float s = mix(size, size * rand, variation);
1370
1402
 
1371
1403
  return smoothstep(-smoothness, smoothness, distance_estimate - s * 0.5);
1372
- }`);return{tileAndCenter:t,circle:o,ring:i,polygon:a,cross:s,diamond:l,checkerboard:c,line:u,wave:p}}();var Jf=class extends xe{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(Jf.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)}},hs=Jf;hs.Nodes=function(){let e=new J(`vec3 attenuation(vec3 wavelengths, float filmThickness, float movement, float noiseStrength, float noiseScale, vec3 offset) {
1373
- vec3 st = position / noiseScale;
1374
- vec3 q = vec3(simplex3d(st),
1375
- simplex3d(st + vec3(1.0)),
1376
- simplex3d(st + vec3(1.0)));
1377
-
1378
- vec3 r = vec3(simplex3d(st + vec3(1.4, 1.3, 1.0) * q + vec3(1.7, 9.2, 1.0)),
1379
- simplex3d(st + vec3(2.0, 1.2, 1.0) * q + vec3(8.3, 2.8, 1.0)),
1380
- simplex3d(st * q));
1404
+ }`);return{tileAndCenter:t,circle:o,ring:i,polygon:a,cross:s,diamond:l,checkerboard:c,line:u,wave:p}}();var Kf=class extends xe{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(Kf.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)}},fs=Kf;fs.Nodes=function(){let e=new J(`vec3 attenuation(vec3 wavelengths, float filmThickness, float movement, float noiseStrength, float noiseScale, vec3 offset) {
1405
+ float f = 0.0;
1406
+
1407
+ if (noiseStrength != 0.0) {
1408
+ vec3 st = position / noiseScale;
1409
+ float noise = simplexFast(1.6 * st + vec3(1.8, 1.5, 1.9) * simplexFast(st) + vec3(1.7, 9.2, 1.0));
1410
+ f = noise * noiseStrength;
1411
+ }
1381
1412
 
1382
- float noise = simplex3d(st + r);
1413
+ vec3 waves = wavelengths * vec3(1.0, 0.8, 0.6) + 1.0;
1414
+ float angle = dot(normalize(vWorldViewDir + (offset * -0.001)), normalize(vWNormal));
1383
1415
 
1384
- 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);
1385
- }`,[Zt.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) {
1386
- vec3 res = clamp(attenuation(wavelengths, filmThickness, movement, noiseStrength, noiseScale, offset), 0.0, 2.0);
1416
+ mediump vec3 color = cos((((filmThickness + f) / waves) * angle) + movement);
1417
+ return .5 + .5 * color;
1418
+ }`,[Zt.simplexFast]);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) {
1419
+ mediump vec3 res = clamp(attenuation(wavelengths, filmThickness, movement, noiseStrength, noiseScale, offset), 0.0, 2.0);
1387
1420
 
1388
1421
  float rainbowContribution = clamp(res.r + res.g + res.b, 0.0, 1.0);
1389
1422
 
@@ -1392,7 +1425,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1392
1425
  accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
1393
1426
 
1394
1427
  return res;
1395
- }`,[e])}}();var eh=class extends xe{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(eh.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)}},ms=eh;ms.Nodes=function(){let e=new J(`float rand(float n) {
1428
+ }`,[e])}}();var Qf=class extends xe{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(Qf.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)}},hs=Qf;hs.Nodes=function(){let e=new J(`float rand(float n) {
1396
1429
  return fract(sin(n) * 43758.5453123);
1397
1430
  }`),t=new J(`float hash1(float p) {
1398
1431
  p = fract(p * 0.011);
@@ -1593,9 +1626,9 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1593
1626
 
1594
1627
  // Position warp noise
1595
1628
  // vec3 offset = vec3(
1596
- // simplex3d(st),
1597
- // simplex3d(st + vec3(111.1, 143.89, 217.19)),
1598
- // simplex3d(st + vec3(171.1, 247.89, 117.23))
1629
+ // simplexFast(st),
1630
+ // simplexFast(st + vec3(111.1, 143.89, 217.19)),
1631
+ // simplexFast(st + vec3(171.1, 247.89, 117.23))
1599
1632
  // );
1600
1633
  // st += offset;
1601
1634
  // float noise = valueNoise(st);
@@ -1628,7 +1661,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1628
1661
 
1629
1662
  return color.xyz;
1630
1663
 
1631
- }`,[Zt.simplex,e,o,a])}}();var th=require("three");var Ab=function(){return{textureBicubic:new J(`float w0( float a ) {
1664
+ }`,[Zt.simplexFast,e,o,a])}}();var Zf=require("three");var Ob=function(){return{textureBicubic:new J(`float w0( float a ) {
1632
1665
  return ( 1.0 / 6.0 ) * ( a * ( a * ( - a + 3.0 ) - 3.0 ) + 1.0 );
1633
1666
  }
1634
1667
 
@@ -1692,7 +1725,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1692
1725
  vec4 fSample = bicubic( sampler, uv, vec4( fLodSizeInv, fLodSize ), floor( lod ) );
1693
1726
  vec4 cSample = bicubic( sampler, uv, vec4( cLodSizeInv, cLodSize ), ceil( lod ) );
1694
1727
  return mix( fSample, cSample, fract( lod ) );
1695
- }`)}}();function Tb(n,r){return n>=r?new th.Vector2(r/n,1):new th.Vector2(1,n/r)}var rh=class extends xe{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,Ne.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(rh.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)}},ys=rh;ys.Nodes=function(){let e=new J(`vec3 blur(sampler2D sp, vec2 U, vec2 scale, float lod, sampler2D dm, vec2 unrefractedU, vec2 aspectRatio) {
1728
+ }`)}}();function Ab(n,r){return n>=r?new Zf.Vector2(r/n,1):new Zf.Vector2(1,n/r)}var Jf=class extends xe{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,Ne.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(Jf.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)}},ms=Jf;ms.Nodes=function(){let e=new J(`vec3 blur(sampler2D sp, vec2 U, vec2 scale, float lod, sampler2D dm, vec2 unrefractedU, vec2 aspectRatio) {
1696
1729
  // Slightly modified version of this:
1697
1730
  // https://www.shadertoy.com/view/ltScRG
1698
1731
 
@@ -1752,7 +1785,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1752
1785
  float lod = applyIorToRoughness(roughness, ior);
1753
1786
  return blur(transmissionSamplerMap, fragCoord, vec2(lod), min(framebufferLod / 5.5, 8.5), transmissionDepthMap, unrefractedCoords, aspectRatio);
1754
1787
  #endif
1755
- }`,[Ab.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 ) {
1788
+ }`,[Ob.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 ) {
1756
1789
  vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );
1757
1790
  vec3 refractedRayExit = position + transmissionRay;
1758
1791
 
@@ -1783,20 +1816,20 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1783
1816
  accumAlpha += ( 1.0 - accumAlpha ) * alpha;
1784
1817
 
1785
1818
  return transmission;
1786
- }`,[a])}}();var oh=(e=>(e.NOISE="noise",e.MAP="map",e))(oh||{}),nh=class extends xe{constructor(e,t,o,i,a,s,l,c,u,p,d){super("v3");this.displacementTypeIndex=new Ge(0);this.nodeType="VertexDisplacement";this.intensity=e,this.movementOrTexture=t,Object.values(oh)[this.displacementTypeIndex.value]==="map"&&(this.mat=new os(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(oh)[this.displacementTypeIndex.value]){case"map":{o=e.include(nh.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(_l)[this.noiseFunctionIndex.value],l=new J(`vec3 orthogonal(vec3 v) {
1819
+ }`,[a])}}();var eh=(e=>(e.NOISE="noise",e.MAP="map",e))(eh||{}),th=class extends xe{constructor(e,t,o,i,a,s,l,c,u,p,d){super("v3");this.displacementTypeIndex=new Ge(0);this.nodeType="VertexDisplacement";this.intensity=e,this.movementOrTexture=t,Object.values(eh)[this.displacementTypeIndex.value]==="map"&&(this.mat=new rs(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(eh)[this.displacementTypeIndex.value]){case"map":{o=e.include(th.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 l=["simplexPrecise","simplexFractal","simplexAshima","fbm","perlin","voronoi"][this.noiseFunctionIndex.value],c=new J(`vec3 orthogonal(vec3 v) {
1787
1820
  return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
1788
- }`),c=s=="voronoi"?`
1789
- float v = ${s}((p + offset) * scale * 0.001 + neighbour_offset + (movement * 0.1), voronoiStyle, smoothness, seed, quality);
1821
+ }`),u=l=="voronoi"?`
1822
+ float v = ${l}((p + offset) * scale * 0.001 + neighbour_offset + (movement * 0.1), voronoiStyle, smoothness, seed, quality);
1790
1823
  v = remap(v, lowCut, highCut, 0.0, 1.0);
1791
1824
  v = smax(v, 0.0, smoothness * 0.25);
1792
1825
  v = smin(v, 1.0, smoothness * 0.25);
1793
1826
 
1794
1827
  return p + n * v * intensity;
1795
1828
  `:`
1796
- return p + n * ${s}((p + offset) * scale * 0.001 + neighbour_offset + (movement * 0.1)) * intensity;
1797
- `,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) {
1798
- ${c}
1799
- }`,[Zt.simplex,Zt.simplexFractal,Zt.simplexAshima,Zt.fbm,Zt.perlin,Zt.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) {
1829
+ return p + n * ${l}((p + offset) * scale * 0.001 + neighbour_offset + (movement * 0.1)) * intensity;
1830
+ `,p=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) {
1831
+ ${u}
1832
+ }`,[Zt.simplexPrecise,Zt.simplexFractal,Zt.simplexAshima,Zt.fbm,Zt.perlin,Zt.voronoi]),d=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) {
1800
1833
  vec3 displaced_position = distorted(position, normal, scale, intensity, offset, neighbor_offset, movement, voronoiStyle, smoothness, seed, highCut, lowCut, quality);
1801
1834
  vec3 tangent1 = orthogonal(normal);
1802
1835
  vec3 tangent2 = normalize(cross(normal, tangent1));
@@ -1812,7 +1845,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1812
1845
  vec3 distorted2 = distorted(nearby2, normal, scale, intensity, offset, neighbor_offset, movement, voronoiStyle, smoothness, seed, highCut, lowCut, quality);
1813
1846
  displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
1814
1847
  return displaced_position;
1815
- }`,[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)}},gs=nh;gs.Nodes=function(){let e=new J(`vec3 orthogonal(vec3 v) {
1848
+ }`,[p,c]);o=e.include(d),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)}},ys=th;ys.Nodes=function(){let e=new J(`vec3 orthogonal(vec3 v) {
1816
1849
  return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
1817
1850
  }`),t=new J(`float displacementMapTexture(sampler2D tex, float crop, vec2 uv, mat3 mat, vec2 offset) {
1818
1851
  vec2 uvs = (mat * vec3(uv * 2.0 - 1.0, 1.0) / 2.0 + 0.5).xy + offset;
@@ -1834,7 +1867,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1834
1867
  vec3 distorted2 = nearby2 + normal * displacementMapTexture(tex, crop, uv, mat, vec2(neighbor_offset)) * intensity;
1835
1868
  displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
1836
1869
  return displaced_position;
1837
- }`,[e,t])}}();var Ne={normalRenderTarget:new pr,normalRenderTargetDepth:new pr,transmissionRenderTarget:new pr,aspectRatio:new vt,transmissionSize:new vt(2048,2048),transmissionRenderTargetDepth:new pr,aoRenderTarget:new pr,aoEnabled:new It,pixelRatioNode:new se(1),resolution:new vt,penumbraSize:new fo(5,.5),frameIndex:new Ge(0),transmissionLod:new Ge(2)};for(let n of Object.values(Ne))n.isRenderGlobal=!0;var Ib={skiaWasmUrl:"https://unpkg.com/@splinetool/ui-wasm@1.9.44/build/ui.wasm"};var ln=class extends tt{constructor(){super("basic");this.nodeType="Basic";this.color=new Ze(Et),this.shadingAlpha=new se(1),this.shadingBlend=new Ge(0),this.previousModelViewMatrix=new rr,this.previouseProjectionMatrix=new rr}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:Ne.frameIndex}),e.mergeUniform({resolution:Ne.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(ad.UniformsUtils.merge([ad.UniformsLib.fog])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <skinning_pars_vertex>","#include <normal_pars_vertex>","#include <morphtarget_pars_vertex>"].join(`
1870
+ }`,[e,t])}}();var Ne={normalRenderTarget:new pr,normalRenderTargetDepth:new pr,transmissionRenderTarget:new pr,aspectRatio:new vt,transmissionSize:new vt(2048,2048),transmissionRenderTargetDepth:new pr,aoRenderTarget:new pr,aoEnabled:new It,pixelRatioNode:new se(1),resolution:new vt,penumbraSize:new fo(5,.5),frameIndex:new Ge(0),transmissionLod:new Ge(2)};for(let n of Object.values(Ne))n.isRenderGlobal=!0;var Tb={skiaWasmUrl:"https://unpkg.com/@splinetool/ui-wasm@1.9.46/build/ui.wasm"};var ln=class extends tt{constructor(){super("basic");this.nodeType="Basic";this.color=new Ze(Et),this.shadingAlpha=new se(1),this.shadingBlend=new Ge(0),this.previousModelViewMatrix=new rr,this.previouseProjectionMatrix=new rr}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:Ne.frameIndex}),e.mergeUniform({resolution:Ne.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(rd.UniformsUtils.merge([rd.UniformsLib.fog])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <skinning_pars_vertex>","#include <normal_pars_vertex>","#include <morphtarget_pars_vertex>"].join(`
1838
1871
  `));let i=["#include <beginnormal_vertex>","#include <morphnormal_vertex>",`
1839
1872
  #include <skinbase_vertex>
1840
1873
  #include <skinnormal_vertex>
@@ -1856,7 +1889,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1856
1889
  `];o&&i.push(o.code,o.result?"displaced_position = "+o.result+";":""),i.push("transformed = displaced_position;","#include <morphtarget_vertex>","#include <skinning_vertex>","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),i.push("#include <project_vertex>","#include <fog_vertex>","#include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;","#include <worldpos_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),t=i.join(`
1857
1890
  `)}else{this.color===void 0&&(this.color=new Ze(Et)),this.color.analyze(e,{slot:"color"}),this.alpha&&this.alpha.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"});let o=this.color.flow(e,"c",{slot:"color"}),i=this.alpha?this.alpha.flow(e,"f"):void 0,a=this.alphaOverride?this.alphaOverride.flow(e,"f"):void 0,s=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0;e.requires.transparent=i!==void 0,e.addParsCode(["varying vec3 vWPosition;","#include <fog_pars_fragment>","#include <dithering_pars_fragment>","varying vec3 vViewPosition;","#include <normal_pars_fragment>"].join(`
1858
1891
  `));let l=["#include <normal_fragment_begin>",o.code];i&&l.push(i.code,"#ifdef ALPHATEST"," if ( "+i.result+" <= ALPHATEST ) discard;","#endif"),s?l.push(s.code,`vec3 outgoingLight = ${o.result};`,`vec3 finalColor = spe_blend(outgoingLight, ${s.result}, 1.0, SPE_BLENDING_NORMAL);`):l.push(`vec3 finalColor = ${o.result};`);let c="1.0";this.mask&&(this.mask.analyze(e),c=`luminance(${this.mask.flow(e,"v3").result})`),i?l.push(`gl_FragColor = vec4( finalColor, accumAlpha * ${i.result} * ${c} );`):l.push("gl_FragColor = vec4("+o.result+", 1.0 );"),a&&l.push(`gl_FragColor.a *= ${a.result};`),l.push("#include <fog_fragment>","#include <dithering_fragment>"),t=l.join(`
1859
- `)}return t}};var Bl=require("three");var Rl=class extends tt{constructor(){super("lambert");this.nodeType="Lambert";this.color=new Ze(Et),this.emissive=new Ze(0),this.emissiveIntensity=new se(1),this.previousModelViewMatrix=new rr,this.previouseProjectionMatrix=new rr,this.shadingAlpha=new se(1),this.shadingBlend=new Ge(0),this.occlusion=new It(!0)}get category(){return"lambert"}build(e){let t;if(e.define("LAMBERT"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:Ne.frameIndex}),e.mergeUniform({resolution:Ne.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(Bl.UniformsUtils.merge([Bl.UniformsLib.fog,Bl.UniformsLib.lights])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","varying vec3 vLightFront;","varying vec3 vIndirectFront;","#ifndef DOUBLE_SIDED"," #define DOUBLE_SIDED","#endif","#ifdef DOUBLE_SIDED"," varying vec3 vLightBack;"," varying vec3 vIndirectBack;","#endif","#include <bsdfs>","#include <lights_pars_begin>","#include <color_pars_vertex>","#include <fog_pars_vertex>","#include <skinning_pars_vertex>","#include <normal_pars_vertex>","#include <morphtarget_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
1892
+ `)}return t}};var Nl=require("three");var Dl=class extends tt{constructor(){super("lambert");this.nodeType="Lambert";this.color=new Ze(Et),this.emissive=new Ze(0),this.emissiveIntensity=new se(1),this.previousModelViewMatrix=new rr,this.previouseProjectionMatrix=new rr,this.shadingAlpha=new se(1),this.shadingBlend=new Ge(0),this.occlusion=new It(!0)}get category(){return"lambert"}build(e){let t;if(e.define("LAMBERT"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:Ne.frameIndex}),e.mergeUniform({resolution:Ne.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(Nl.UniformsUtils.merge([Nl.UniformsLib.fog,Nl.UniformsLib.lights])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","varying vec3 vLightFront;","varying vec3 vIndirectFront;","#ifndef DOUBLE_SIDED"," #define DOUBLE_SIDED","#endif","#ifdef DOUBLE_SIDED"," varying vec3 vLightBack;"," varying vec3 vIndirectBack;","#endif","#include <bsdfs>","#include <lights_pars_begin>","#include <color_pars_vertex>","#include <fog_pars_vertex>","#include <skinning_pars_vertex>","#include <normal_pars_vertex>","#include <morphtarget_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
1860
1893
  `));let i=["#include <beginnormal_vertex>","#include <morphnormal_vertex>",`
1861
1894
  #include <skinbase_vertex>
1862
1895
  #include <skinnormal_vertex>
@@ -1952,22 +1985,22 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1952
1985
  #endif
1953
1986
  `," #include <shadowmap_vertex>"," #include <fog_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),t=i.join(`
1954
1987
  `)}else{e.mergeUniform({penumbraSize:Ne.penumbraSize}),e.mergeUniform({frameIndex:Ne.frameIndex}),e.mergeUniform({aoMap:Ne.aoRenderTarget}),e.mergeUniform({aoEnabled:Ne.aoEnabled}),this.color===void 0&&(this.color=new Ze(Et)),this.color.analyze(e,{slot:"color"}),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e);let o=this.color.flow(e,"c",{slot:"color"}),i=this.emissive.flow(e,"c",{slot:"emissive"}),a=this.emissiveIntensity.flow(e,"f",{slot:"emissive"}),s=this.occlusion.flow(e,"b",{slot:"occlusion"}),l=this.shadingAlpha.flow(e,"f"),c=this.shadingBlend.flow(e,"i"),u=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,p=this.alpha?this.alpha.flow(e,"f"):void 0,d=this.alphaOverride?this.alphaOverride.flow(e,"f"):void 0;e.requires.transparent=p!==void 0,e.addParsCode([`uniform float penumbraSize[${5}];`,"uniform sampler2D aoMap;","uniform bool aoEnabled;","varying vec3 vViewPosition;","varying vec3 vWPosition;","varying vec3 vLightFront;","varying vec3 vIndirectFront;","#ifndef DOUBLE_SIDED"," #define DOUBLE_SIDED","#endif","#include <normal_pars_fragment>","#ifdef DOUBLE_SIDED"," varying vec3 vLightBack;"," varying vec3 vIndirectBack;","#endif","#include <bsdfs>","#include <lights_pars_begin>","#include <fog_pars_fragment>","#include <shadowmap_pars_fragment>","#include <shadowmask_pars_fragment>","#include <clipping_planes_pars_fragment>","#include <dithering_pars_fragment>"].join(`
1955
- `));let h=["#include <normal_fragment_begin>",`
1988
+ `));let f=["#include <normal_fragment_begin>",`
1956
1989
  // NOTE: gl_FrontFacing alternative using face normal estimation.
1957
1990
  vec3 viewdx = dFdx(vViewPosition);
1958
1991
  vec3 viewdy = dFdy(vViewPosition);
1959
1992
  vec3 faceNormal = normalize(cross(viewdx, viewdy));
1960
1993
  bool isFrontFacing = (dot(normal, faceNormal) >= 0.0);
1961
- `,"#include <clipping_planes_fragment>"];h.push(o.code,"vec3 diffuseColor = "+o.result+";","ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );"),p&&h.push(p.code,"#ifdef ALPHATEST","if ( "+p.result+" <= ALPHATEST ) discard;","#endif"),h.push("#ifdef DOUBLE_SIDED"," reflectedLight.indirectDiffuse += ( isFrontFacing ) ? vIndirectFront : vIndirectBack;","#else"," reflectedLight.indirectDiffuse += vIndirectFront;","#endif","#include <lightmap_fragment>","reflectedLight.indirectDiffuse *= BRDF_Lambert( diffuseColor.rgb );","#ifdef DOUBLE_SIDED"," reflectedLight.directDiffuse = ( isFrontFacing ) ? vLightFront : vLightBack;","#else"," reflectedLight.directDiffuse = vLightFront;","#endif","reflectedLight.directDiffuse *= BRDF_Lambert( diffuseColor.rgb ) * getShadowMask();"),i&&h.push(i.code,"reflectedLight.directDiffuse += "+i.result+" * "+a.result+";"),h.push("vec3 ao = aoEnabled && "+s.result+" ? tex2D(aoMap, gl_FragCoord.xy / resolution).rgb : vec3(1.0);","vec3 outgoingLight = (reflectedLight.directDiffuse + reflectedLight.indirectDiffuse) ;");let f="1.0";this.mask&&(this.mask.analyze(e),f=`luminance(${this.mask.flow(e,"v3").result})`),h.push(`
1994
+ `,"#include <clipping_planes_fragment>"];f.push(o.code,"vec3 diffuseColor = "+o.result+";","ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );"),p&&f.push(p.code,"#ifdef ALPHATEST","if ( "+p.result+" <= ALPHATEST ) discard;","#endif"),f.push("#ifdef DOUBLE_SIDED"," reflectedLight.indirectDiffuse += ( isFrontFacing ) ? vIndirectFront : vIndirectBack;","#else"," reflectedLight.indirectDiffuse += vIndirectFront;","#endif","#include <lightmap_fragment>","reflectedLight.indirectDiffuse *= BRDF_Lambert( diffuseColor.rgb );","#ifdef DOUBLE_SIDED"," reflectedLight.directDiffuse = ( isFrontFacing ) ? vLightFront : vLightBack;","#else"," reflectedLight.directDiffuse = vLightFront;","#endif","reflectedLight.directDiffuse *= BRDF_Lambert( diffuseColor.rgb ) * getShadowMask();"),i&&f.push(i.code,"reflectedLight.directDiffuse += "+i.result+" * "+a.result+";"),f.push("vec3 ao = aoEnabled && "+s.result+" ? tex2D(aoMap, gl_FragCoord.xy / resolution).rgb : vec3(1.0);","vec3 outgoingLight = (reflectedLight.directDiffuse + reflectedLight.indirectDiffuse) ;");let h="1.0";this.mask&&(this.mask.analyze(e),h=`luminance(${this.mask.flow(e,"v3").result})`),f.push(`
1962
1995
  if (outgoingLight != diffuseColor) {
1963
1996
  float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
1964
- accumAlpha += ( 1.0 - accumAlpha ) * ${l.result} * ${f} * lightAccu;
1965
- outgoingLight = spe_blend( diffuseColor, outgoingLight, ${l.result} * ${f}, ${c.result} );
1997
+ accumAlpha += ( 1.0 - accumAlpha ) * ${l.result} * ${h} * lightAccu;
1998
+ outgoingLight = spe_blend( diffuseColor, outgoingLight, ${l.result} * ${h}, ${c.result} );
1966
1999
 
1967
2000
  outgoingLight *= ao;
1968
2001
  }
1969
- `),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(`
1970
- `)}return t}};var Ll=require("three");var cn=function(){let n=new J(`vec2 dHdxy(sampler2D bumpMap, vec2 bumpMapUv, float bumpScale) {
2002
+ `),u&&f.push(u.code,`outgoingLight = spe_blend(outgoingLight, ${u.result}, 1.0, SPE_BLENDING_NORMAL);`),p?f.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${p.result} );`):f.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),d&&f.push(`gl_FragColor.a *= ${d.result};`),f.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),t=f.join(`
2003
+ `)}return t}};var _l=require("three");var cn=function(){let n=new J(`vec2 dHdxy(sampler2D bumpMap, vec2 bumpMapUv, float bumpScale) {
1971
2004
 
1972
2005
  // Gradient of UVs w.r.t. X coordinate (in screen-space)
1973
2006
  vec2 dSTdx = dFdx(bumpMapUv);
@@ -1998,7 +2031,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1998
2031
 
1999
2032
  vec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );
2000
2033
  return normalize( abs( fDet ) * vN - vGrad );
2001
- }`);return{dHdxy:n,perturbNormalArb:r}}();var Vl=class extends tt{constructor(){super("phong");this.nodeType="Phong";this.color=new Ze(Et),this.specular=new Ze(1118481),this.shininess=new se(30),this.previousModelViewMatrix=new rr,this.previouseProjectionMatrix=new rr,this.shadingAlpha=new se(1),this.shadingBlend=new Ge(0),this.occlusion=new It(!0)}get category(){return"phong"}build(e){let t;if(e.define("PHONG"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:Ne.frameIndex}),e.mergeUniform({resolution:Ne.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(Ll.UniformsUtils.merge([Ll.UniformsLib.fog,Ll.UniformsLib.lights])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <skinning_pars_vertex>","#include <normal_pars_vertex>","#include <morphtarget_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
2034
+ }`);return{dHdxy:n,perturbNormalArb:r}}();var Bl=class extends tt{constructor(){super("phong");this.nodeType="Phong";this.color=new Ze(Et),this.specular=new Ze(1118481),this.shininess=new se(30),this.previousModelViewMatrix=new rr,this.previouseProjectionMatrix=new rr,this.shadingAlpha=new se(1),this.shadingBlend=new Ge(0),this.occlusion=new It(!0)}get category(){return"phong"}build(e){let t;if(e.define("PHONG"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:Ne.frameIndex}),e.mergeUniform({resolution:Ne.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(_l.UniformsUtils.merge([_l.UniformsLib.fog,_l.UniformsLib.lights])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <skinning_pars_vertex>","#include <normal_pars_vertex>","#include <morphtarget_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
2002
2035
  `));let i=["#include <beginnormal_vertex>","#include <morphnormal_vertex>",`
2003
2036
  #include <skinbase_vertex>
2004
2037
  #include <skinnormal_vertex>
@@ -2019,7 +2052,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
2019
2052
  #endif
2020
2053
  `];o&&i.push(o.code,o.result?"displaced_position = "+o.result+";":""),i.push("transformed = displaced_position;","#include <morphtarget_vertex>","#include <skinning_vertex>","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),i.push(" #include <project_vertex>"," #include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;"," #include <worldpos_vertex>"," #include <shadowmap_vertex>"," #include <fog_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),t=i.join(`
2021
2054
  `)}else{e.mergeUniform({penumbraSize:Ne.penumbraSize}),e.mergeUniform({frameIndex:Ne.frameIndex}),e.mergeUniform({aoMap:Ne.aoRenderTarget}),e.mergeUniform({aoEnabled:Ne.aoEnabled}),this.color===void 0&&(this.color=new Ze(Et)),this.color.analyze(e,{slot:"color"}),this.specular.analyze(e),this.shininess.analyze(e);let o=this.occlusion.flow(e,"b",{slot:"occlusion"});this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e);let i=this.color.flow(e,"c",{slot:"color"}),a=this.specular.flow(e,"c"),s=this.shininess.flow(e,"f"),l=this.shadingAlpha.flow(e,"f"),c=this.shadingBlend.flow(e,"i"),u=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,p=this.alpha?this.alpha.flow(e,"f"):void 0,d=this.alphaOverride?this.alphaOverride.flow(e,"f"):void 0;e.requires.transparent=p!==void 0,e.addParsCode(["varying vec3 vWPosition;","uniform vec3 emissive;",`uniform float penumbraSize[${5}];`,"uniform sampler2D aoMap;","uniform bool aoEnabled;","#include <normal_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <lights_phong_pars_fragment>","#include <shadowmap_pars_fragment>","#include <dithering_pars_fragment>"].join(`
2022
- `));let h=["#include <normal_fragment_begin>",`
2055
+ `));let f=["#include <normal_fragment_begin>",`
2023
2056
  // NOTE: gl_FrontFacing alternative using face normal estimation.
2024
2057
  vec3 viewdx = dFdx(vViewPosition);
2025
2058
  vec3 viewdy = dFdy(vViewPosition);
@@ -2027,7 +2060,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
2027
2060
  if (dot(normal, faceNormal) < 0.0) {
2028
2061
  normal *= -1.0;
2029
2062
  }
2030
- `," BlinnPhongMaterial material;"];if(this.bumpMap){e.include(cn.dHdxy),e.include(cn.perturbNormalArb);let m=this.bumpMap.texture.flow(e,"t"),y=this.bumpMap.flow(e,"v3"),g=this.bumpMapIntensity?this.bumpMapIntensity.flow(e,"f").result:"1.0",v="";this.bumpMap.projection.value===4?v=`
2063
+ `," BlinnPhongMaterial material;"];if(this.bumpMap){e.include(cn.dHdxy),e.include(cn.perturbNormalArb);let m=this.bumpMap.texture.flow(e,"t"),y=this.bumpMap.flow(e,"v3"),b=this.bumpMapIntensity?this.bumpMapIntensity.flow(e,"f").result:"1.0",S="";this.bumpMap.projection.value===4?S=`
2031
2064
  vec3 bumpNormal = vec3(0.0);
2032
2065
  {
2033
2066
  vec2 uv0 = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs0;
@@ -2035,13 +2068,13 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
2035
2068
  vec2 uv2 = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs2;
2036
2069
  vec3 weights = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_triplanarWeights;
2037
2070
 
2038
- vec2 grad0 = dHdxy(${m.result}, uv0, ${g});
2071
+ vec2 grad0 = dHdxy(${m.result}, uv0, ${b});
2039
2072
  vec3 n0 = perturbNormalArb(-vViewPosition, normal, grad0, faceDirection);
2040
2073
 
2041
- vec2 grad1 = dHdxy(${m.result}, uv1, ${g});
2074
+ vec2 grad1 = dHdxy(${m.result}, uv1, ${b});
2042
2075
  vec3 n1 = perturbNormalArb(-vViewPosition, normal, grad1, faceDirection);
2043
2076
 
2044
- vec2 grad2 = dHdxy(${m.result}, uv2, ${g});
2077
+ vec2 grad2 = dHdxy(${m.result}, uv2, ${b});
2045
2078
  vec3 n2 = perturbNormalArb(-vViewPosition, normal, grad2, faceDirection);
2046
2079
 
2047
2080
  bumpNormal = n0 * weights.z + n1 * weights.x + n2 * weights.y;
@@ -2049,23 +2082,23 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
2049
2082
  }
2050
2083
 
2051
2084
  normal = bumpNormal;
2052
- `:v=`
2085
+ `:S=`
2053
2086
  vec2 bumpMapCachedUv = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs;
2054
- vec2 grad = dHdxy(${m.result}, bumpMapCachedUv, ${g});
2087
+ vec2 grad = dHdxy(${m.result}, bumpMapCachedUv, ${b});
2055
2088
  normal = perturbNormalArb( - vViewPosition, normal, grad, faceDirection );
2056
- `,h.push(`// Call the Texture Layer's function once here so that it writes out its procedural UV coordinates
2089
+ `,f.push(`// Call the Texture Layer's function once here so that it writes out its procedural UV coordinates
2057
2090
  ${y.result};
2058
- ${v}
2059
- `)}h.push(i.code," vec3 diffuseColor = "+i.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );"," vec3 totalEmissiveRadiance = emissive;",a.code," vec3 specular = "+a.result+";",s.code," float shininess = max( 0.0001, "+s.result+" );"," float specularStrength = 1.0;"),p&&h.push(p.code,"#ifdef ALPHATEST","if ( "+p.result+" <= ALPHATEST ) discard;","#endif"),h.push("material.diffuseColor = diffuseColor;"),h.push("material.specularColor = specular;","material.specularShininess = shininess;","material.specularStrength = specularStrength;","#include <lights_fragment_begin>","#include <lights_fragment_end>"),h.push("vec3 ao = aoEnabled && "+o.result+" ? tex2D(aoMap, gl_FragCoord.xy / resolution).rgb : vec3(1.0);","vec3 outgoingLight = ((reflectedLight.directDiffuse + reflectedLight.indirectDiffuse)) + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;");let f="1.0";this.mask&&(this.mask.analyze(e),f=`luminance(${this.mask.flow(e,"v3").result})`),h.push(`
2091
+ ${S}
2092
+ `)}f.push(i.code," vec3 diffuseColor = "+i.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );"," vec3 totalEmissiveRadiance = emissive;",a.code," vec3 specular = "+a.result+";",s.code," float shininess = max( 0.0001, "+s.result+" );"," float specularStrength = 1.0;"),p&&f.push(p.code,"#ifdef ALPHATEST","if ( "+p.result+" <= ALPHATEST ) discard;","#endif"),f.push("material.diffuseColor = diffuseColor;"),f.push("material.specularColor = specular;","material.specularShininess = shininess;","material.specularStrength = specularStrength;","#include <lights_fragment_begin>","#include <lights_fragment_end>"),f.push("vec3 ao = aoEnabled && "+o.result+" ? tex2D(aoMap, gl_FragCoord.xy / resolution).rgb : vec3(1.0);","vec3 outgoingLight = ((reflectedLight.directDiffuse + reflectedLight.indirectDiffuse)) + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;");let h="1.0";this.mask&&(this.mask.analyze(e),h=`luminance(${this.mask.flow(e,"v3").result})`),f.push(`
2060
2093
  if (outgoingLight != diffuseColor) {
2061
2094
  float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
2062
- accumAlpha += ( 1.0 - accumAlpha ) * ${l.result} * ${f} * lightAccu;
2063
- outgoingLight = spe_blend( diffuseColor, outgoingLight, ${l.result} * ${f}, ${c.result} );
2095
+ accumAlpha += ( 1.0 - accumAlpha ) * ${l.result} * ${h} * lightAccu;
2096
+ outgoingLight = spe_blend( diffuseColor, outgoingLight, ${l.result} * ${h}, ${c.result} );
2064
2097
 
2065
2098
  outgoingLight *= ao;
2066
2099
  }
2067
- `),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(`
2068
- `)}return t}};var xs=require("three");var zl=class extends tt{constructor(){super("standard");this.nodeType="Standard";this.color=new Ze(Et),this.roughness=new se(.3),this.metalness=new se(0),this.reflectivity=new se(.5),this.previousModelViewMatrix=new rr,this.previouseProjectionMatrix=new rr,this.shadingAlpha=new se(1),this.shadingBlend=new Ge(0),this.occlusion=new It(!0)}get category(){return"physical"}build(e){let t;if(e.define("STANDARD"),e.requires.lights=!0,e.extensions.derivatives=!0,e.extensions.shaderTextureLOD=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:Ne.frameIndex}),e.mergeUniform({resolution:Ne.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(xs.UniformsUtils.merge([xs.UniformsLib.fog,xs.UniformsLib.lights])),xs.UniformsLib.LTC_1&&(e.uniforms.ltc_1={value:void 0},e.uniforms.ltc_2={value:void 0}),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <skinning_pars_vertex>","#include <normal_pars_vertex>","#include <morphtarget_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
2100
+ `),u&&f.push(u.code,`outgoingLight = spe_blend(outgoingLight, ${u.result}, 1.0, SPE_BLENDING_NORMAL);`),p?f.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${p.result});`):f.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),d&&f.push(`gl_FragColor.a *= ${d.result};`),f.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),t=f.join(`
2101
+ `)}return t}};var gs=require("three");var Rl=class extends tt{constructor(){super("standard");this.nodeType="Standard";this.color=new Ze(Et),this.roughness=new se(.3),this.metalness=new se(0),this.reflectivity=new se(.5),this.previousModelViewMatrix=new rr,this.previouseProjectionMatrix=new rr,this.shadingAlpha=new se(1),this.shadingBlend=new Ge(0),this.occlusion=new It(!0)}get category(){return"physical"}build(e){let t;if(e.define("STANDARD"),e.requires.lights=!0,e.extensions.derivatives=!0,e.extensions.shaderTextureLOD=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:Ne.frameIndex}),e.mergeUniform({resolution:Ne.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(gs.UniformsUtils.merge([gs.UniformsLib.fog,gs.UniformsLib.lights])),gs.UniformsLib.LTC_1&&(e.uniforms.ltc_1={value:void 0},e.uniforms.ltc_2={value:void 0}),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <skinning_pars_vertex>","#include <normal_pars_vertex>","#include <morphtarget_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
2069
2102
  `));let i=["#include <beginnormal_vertex>","#include <morphnormal_vertex>",`
2070
2103
  #include <skinbase_vertex>
2071
2104
  #include <skinnormal_vertex>
@@ -2085,7 +2118,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
2085
2118
  #include <begin_vertex>
2086
2119
  #endif /* !USE_LAYER_DISPLACE */
2087
2120
  `];o&&i.push(o.code,o.result?"displaced_position = "+o.result+";":""),i.push("transformed = displaced_position;","#include <morphtarget_vertex>","#include <skinning_vertex>","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),i.push("#include <project_vertex>","#include <fog_vertex>","#include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;","#include <worldpos_vertex>","#include <shadowmap_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),t=i.join(`
2088
- `)}else{e.mergeUniform({penumbraSize:Ne.penumbraSize}),e.mergeUniform({frameIndex:Ne.frameIndex}),e.mergeUniform({aoMap:Ne.aoRenderTarget}),e.mergeUniform({aoEnabled:Ne.aoEnabled});let o={gamma:!0};this.color===void 0&&(this.color=new Ze(Et)),this.color.analyze(e,{slot:"color",context:o}),this.roughness.analyze(e),this.metalness.analyze(e);let i=this.occlusion.flow(e,"b",{slot:"occlusion"});this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e),this.reflectivity&&this.reflectivity.analyze(e);let a=this.color.flow(e,"c",{slot:"color",context:o}),s=this.roughness.flow(e,"f"),l=this.metalness.flow(e,"f"),c=this.shadingAlpha.flow(e,"f"),u=this.shadingBlend.flow(e,"i"),p=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,d=this.alpha?this.alpha.flow(e,"f"):void 0,h=this.alphaOverride?this.alphaOverride.flow(e,"f"):void 0,f=this.reflectivity?this.reflectivity.flow(e,"f"):void 0;e.requires.transparent=d!==void 0,e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;",`uniform float penumbraSize[${5}];`,"uniform sampler2D aoMap;","uniform bool aoEnabled;","#include <normal_pars_fragment>","#include <dithering_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <lights_physical_pars_fragment>","#include <shadowmap_pars_fragment>"].join(`
2121
+ `)}else{e.mergeUniform({penumbraSize:Ne.penumbraSize}),e.mergeUniform({frameIndex:Ne.frameIndex}),e.mergeUniform({aoMap:Ne.aoRenderTarget}),e.mergeUniform({aoEnabled:Ne.aoEnabled});let o={gamma:!0};this.color===void 0&&(this.color=new Ze(Et)),this.color.analyze(e,{slot:"color",context:o}),this.roughness.analyze(e),this.metalness.analyze(e);let i=this.occlusion.flow(e,"b",{slot:"occlusion"});this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e),this.reflectivity&&this.reflectivity.analyze(e);let a=this.color.flow(e,"c",{slot:"color",context:o}),s=this.roughness.flow(e,"f"),l=this.metalness.flow(e,"f"),c=this.shadingAlpha.flow(e,"f"),u=this.shadingBlend.flow(e,"i"),p=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,d=this.alpha?this.alpha.flow(e,"f"):void 0,f=this.alphaOverride?this.alphaOverride.flow(e,"f"):void 0,h=this.reflectivity?this.reflectivity.flow(e,"f"):void 0;e.requires.transparent=d!==void 0,e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;",`uniform float penumbraSize[${5}];`,"uniform sampler2D aoMap;","uniform bool aoEnabled;","#include <normal_pars_fragment>","#include <dithering_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <lights_physical_pars_fragment>","#include <shadowmap_pars_fragment>"].join(`
2089
2122
  `));let m=["#include <clipping_planes_fragment>"," #include <normal_fragment_begin>",`
2090
2123
  // NOTE: gl_FrontFacing alternative using face normal estimation.
2091
2124
  vec3 viewdx = dFdx(vViewPosition);
@@ -2094,7 +2127,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
2094
2127
  if (dot(normal, faceNormal) < 0.0) {
2095
2128
  normal *= -1.0;
2096
2129
  }
2097
- `," PhysicalMaterial material;"," material.diffuseColor = vec3( 1.0 );"];if(this.bumpMap){e.include(cn.dHdxy),e.include(cn.perturbNormalArb);let g=this.bumpMap.texture.flow(e,"t"),v=this.bumpMap.flow(e,"v3"),w=this.bumpMapIntensity?this.bumpMapIntensity.flow(e,"f").result:"1.0",O="";this.bumpMap.projection.value===4?O=`
2130
+ `," PhysicalMaterial material;"," material.diffuseColor = vec3( 1.0 );"];if(this.bumpMap){e.include(cn.dHdxy),e.include(cn.perturbNormalArb);let b=this.bumpMap.texture.flow(e,"t"),S=this.bumpMap.flow(e,"v3"),P=this.bumpMapIntensity?this.bumpMapIntensity.flow(e,"f").result:"1.0",C="";this.bumpMap.projection.value===4?C=`
2098
2131
  vec3 bumpNormal = vec3(0.0);
2099
2132
  {
2100
2133
  vec2 uv0 = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs0;
@@ -2102,13 +2135,13 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
2102
2135
  vec2 uv2 = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs2;
2103
2136
  vec3 weights = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_triplanarWeights;
2104
2137
 
2105
- vec2 grad0 = dHdxy(${g.result}, uv0, ${w});
2138
+ vec2 grad0 = dHdxy(${b.result}, uv0, ${P});
2106
2139
  vec3 n0 = perturbNormalArb(-vViewPosition, normal, grad0, faceDirection);
2107
2140
 
2108
- vec2 grad1 = dHdxy(${g.result}, uv1, ${w});
2141
+ vec2 grad1 = dHdxy(${b.result}, uv1, ${P});
2109
2142
  vec3 n1 = perturbNormalArb(-vViewPosition, normal, grad1, faceDirection);
2110
2143
 
2111
- vec2 grad2 = dHdxy(${g.result}, uv2, ${w});
2144
+ vec2 grad2 = dHdxy(${b.result}, uv2, ${P});
2112
2145
  vec3 n2 = perturbNormalArb(-vViewPosition, normal, grad2, faceDirection);
2113
2146
 
2114
2147
  bumpNormal = n0 * weights.z + n1 * weights.x + n2 * weights.y;
@@ -2116,14 +2149,14 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
2116
2149
  }
2117
2150
 
2118
2151
  normal = bumpNormal;
2119
- `:O=`
2152
+ `:C=`
2120
2153
  vec2 bumpMapCachedUv = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs;
2121
- vec2 grad = dHdxy(${g.result}, bumpMapCachedUv, ${w});
2154
+ vec2 grad = dHdxy(${b.result}, bumpMapCachedUv, ${P});
2122
2155
  normal = perturbNormalArb( - vViewPosition, normal, grad, faceDirection );
2123
2156
  `,m.push(`// Call the Texture Layer's function once here so that it writes out its procedural UV coordinates
2124
- ${v.result};
2125
- ${O}
2126
- `)}if(m.push(a.code," vec3 diffuseColor = "+a.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );",l.code," float metalnessFactor = "+l.result+";"),this.roughnessMap){let g=this.roughnessMap.texture.flow(e,"t"),v=this.roughnessMap.flow(e,"v3"),w="";this.roughnessMap.projection.value===4?w=`
2157
+ ${S.result};
2158
+ ${C}
2159
+ `)}if(m.push(a.code," vec3 diffuseColor = "+a.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );",l.code," float metalnessFactor = "+l.result+";"),this.roughnessMap){let b=this.roughnessMap.texture.flow(e,"t"),S=this.roughnessMap.flow(e,"v3"),P="";this.roughnessMap.projection.value===4?P=`
2127
2160
  float roughnessChange = 1.0;
2128
2161
  {
2129
2162
  vec2 uv0 = g${this.roughnessMap.uuid.toString().replace(/-/g,"")}_writeUvs0;
@@ -2131,25 +2164,25 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
2131
2164
  vec2 uv2 = g${this.roughnessMap.uuid.toString().replace(/-/g,"")}_writeUvs2;
2132
2165
  vec3 weights = g${this.roughnessMap.uuid.toString().replace(/-/g,"")}_triplanarWeights;
2133
2166
 
2134
- float r0 = luminance(texture(${g.result}, uv0).rgb) * roughnessScale;
2135
- float r1 = luminance(texture(${g.result}, uv1).rgb) * roughnessScale;
2136
- float r2 = luminance(texture(${g.result}, uv2).rgb) * roughnessScale;
2167
+ float r0 = luminance(texture(${b.result}, uv0).rgb) * roughnessScale;
2168
+ float r1 = luminance(texture(${b.result}, uv1).rgb) * roughnessScale;
2169
+ float r2 = luminance(texture(${b.result}, uv2).rgb) * roughnessScale;
2137
2170
 
2138
2171
  roughnessChange = (r0 * weights.z + r1 * weights.x + r2 * weights.y);
2139
2172
  }
2140
2173
  float roughnessFactor = roughnessChange * ${s.result};
2141
- `:w=`
2174
+ `:P=`
2142
2175
  vec2 roughnessMapCachedUv = g${this.roughnessMap.uuid.toString().replace(/-/g,"")}_writeUvs;
2143
2176
 
2144
- vec4 vals = texture(${g.result}, roughnessMapCachedUv);
2177
+ vec4 vals = texture(${b.result}, roughnessMapCachedUv);
2145
2178
  float roughnessFactor = luminance(vals.rgb) * ${s.result};
2146
2179
  `,m.push(`// Call the Texture Layer's function once here so that it writes out its procedural UV coordinates
2147
- ${v.result};
2180
+ ${S.result};
2148
2181
 
2149
2182
  const float roughnessScale = 1.0;
2150
2183
 
2151
- ${w}
2152
- `)}else m.push(s.code," float roughnessFactor = "+s.result+";");d&&m.push(d.code,"#ifdef ALPHATEST"," if ( "+d.result+" <= ALPHATEST ) discard;","#endif"),m.push("vec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );","float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );"),m.push("material.diffuseColor = diffuseColor * ( 1.0 - metalnessFactor );","material.roughness = max( roughnessFactor, 0.0525 );","material.roughness += geometryRoughness;","material.roughness = min( material.roughness, 1.0 );","material.roughness = clamp( roughnessFactor, 0.04, 1.0 );"),f?m.push(f.code,"material.specularColor = mix( vec3( 0.16 * pow2( "+f.result+" ) ), diffuseColor, metalnessFactor );"):m.push("material.specularColor = mix( vec3( 0.04 ), diffuseColor, metalnessFactor );"),m.push("#include <lights_fragment_begin>"),m.push("#include <lights_fragment_end>"),m.push("vec3 ao = aoEnabled && "+i.result+" ? tex2D(aoMap, gl_FragCoord.xy / resolution).rgb : vec3(1.0);","vec3 outgoingLight = ((reflectedLight.directDiffuse + reflectedLight.indirectDiffuse)) + reflectedLight.directSpecular + reflectedLight.indirectSpecular;");let y="1.0";this.mask&&(this.mask.analyze(e),y=`luminance(${this.mask.flow(e,"v3").result})`),m.push(`
2184
+ ${P}
2185
+ `)}else m.push(s.code," float roughnessFactor = "+s.result+";");d&&m.push(d.code,"#ifdef ALPHATEST"," if ( "+d.result+" <= ALPHATEST ) discard;","#endif"),m.push("vec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );","float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );"),m.push("material.diffuseColor = diffuseColor * ( 1.0 - metalnessFactor );","material.roughness = max( roughnessFactor, 0.0525 );","material.roughness += geometryRoughness;","material.roughness = min( material.roughness, 1.0 );","material.roughness = clamp( roughnessFactor, 0.04, 1.0 );"),h?m.push(h.code,"material.specularColor = mix( vec3( 0.16 * pow2( "+h.result+" ) ), diffuseColor, metalnessFactor );"):m.push("material.specularColor = mix( vec3( 0.04 ), diffuseColor, metalnessFactor );"),m.push("#include <lights_fragment_begin>"),m.push("#include <lights_fragment_end>"),m.push("vec3 ao = aoEnabled && "+i.result+" ? tex2D(aoMap, gl_FragCoord.xy / resolution).rgb : vec3(1.0);","vec3 outgoingLight = ((reflectedLight.directDiffuse + reflectedLight.indirectDiffuse)) + reflectedLight.directSpecular + reflectedLight.indirectSpecular;");let y="1.0";this.mask&&(this.mask.analyze(e),y=`luminance(${this.mask.flow(e,"v3").result})`),m.push(`
2153
2186
  if (outgoingLight != diffuseColor) {
2154
2187
  float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
2155
2188
  accumAlpha += ( 1.0 - accumAlpha ) * ${c.result} * ${y} * lightAccu;
@@ -2157,8 +2190,8 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
2157
2190
 
2158
2191
  outgoingLight *= ao;
2159
2192
  }
2160
- `),p&&m.push(p.code,`outgoingLight = spe_blend(outgoingLight, ${p.result}, 1.0, SPE_BLENDING_NORMAL);`),d?m.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${d.result} );`):m.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),h&&m.push(`gl_FragColor.a *= ${h.result};`),m.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),t=m.join(`
2161
- `)}return t}};var Gl=require("three");var Fl=class extends tt{constructor(){super("toon");this.nodeType="Toon";this.color=new Ze(Et),this.specular=new Ze(1118481),this.shininess=new se(30),this.previousModelViewMatrix=new rr,this.previouseProjectionMatrix=new rr,this.shadingAlpha=new se(1),this.shadingBlend=new Ge(0)}get category(){return"toon"}build(e){let t;if(e.define("TOON"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:Ne.frameIndex}),e.mergeUniform({resolution:Ne.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(Gl.UniformsUtils.merge([Gl.UniformsLib.fog,Gl.UniformsLib.lights])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <skinning_pars_vertex>","#include <normal_pars_vertex>","#include <morphtarget_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
2193
+ `),p&&m.push(p.code,`outgoingLight = spe_blend(outgoingLight, ${p.result}, 1.0, SPE_BLENDING_NORMAL);`),d?m.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${d.result} );`):m.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),f&&m.push(`gl_FragColor.a *= ${f.result};`),m.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),t=m.join(`
2194
+ `)}return t}};var Ll=require("three");var Vl=class extends tt{constructor(){super("toon");this.nodeType="Toon";this.color=new Ze(Et),this.specular=new Ze(1118481),this.shininess=new se(30),this.previousModelViewMatrix=new rr,this.previouseProjectionMatrix=new rr,this.shadingAlpha=new se(1),this.shadingBlend=new Ge(0)}get category(){return"toon"}build(e){let t;if(e.define("TOON"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:Ne.frameIndex}),e.mergeUniform({resolution:Ne.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(Ll.UniformsUtils.merge([Ll.UniformsLib.fog,Ll.UniformsLib.lights])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <skinning_pars_vertex>","#include <normal_pars_vertex>","#include <morphtarget_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
2162
2195
  `));let i=["#include <beginnormal_vertex>","#include <morphnormal_vertex>",`
2163
2196
  #include <skinbase_vertex>
2164
2197
  #include <skinnormal_vertex>
@@ -2207,7 +2240,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
2207
2240
  if (dot(normal, faceNormal) < 0.0) {
2208
2241
  normal *= -1.0;
2209
2242
  }
2210
- `," ToonMaterial material;"];if(this.bumpMap){e.include(cn.dHdxy),e.include(cn.perturbNormalArb);let f=this.bumpMap.texture.flow(e,"t"),m=this.bumpMap.flow(e,"v3"),y=this.bumpMapIntensity?this.bumpMapIntensity.flow(e,"f").result:"1.0",g="";this.bumpMap.projection.value===4?g=`
2243
+ `," ToonMaterial material;"];if(this.bumpMap){e.include(cn.dHdxy),e.include(cn.perturbNormalArb);let h=this.bumpMap.texture.flow(e,"t"),m=this.bumpMap.flow(e,"v3"),y=this.bumpMapIntensity?this.bumpMapIntensity.flow(e,"f").result:"1.0",b="";this.bumpMap.projection.value===4?b=`
2211
2244
  vec3 bumpNormal = vec3(0.0);
2212
2245
  {
2213
2246
  vec2 uv0 = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs0;
@@ -2215,13 +2248,13 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
2215
2248
  vec2 uv2 = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs2;
2216
2249
  vec3 weights = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_triplanarWeights;
2217
2250
 
2218
- vec2 grad0 = dHdxy(${f.result}, uv0, ${y});
2251
+ vec2 grad0 = dHdxy(${h.result}, uv0, ${y});
2219
2252
  vec3 n0 = perturbNormalArb(-vViewPosition, normal, grad0, faceDirection);
2220
2253
 
2221
- vec2 grad1 = dHdxy(${f.result}, uv1, ${y});
2254
+ vec2 grad1 = dHdxy(${h.result}, uv1, ${y});
2222
2255
  vec3 n1 = perturbNormalArb(-vViewPosition, normal, grad1, faceDirection);
2223
2256
 
2224
- vec2 grad2 = dHdxy(${f.result}, uv2, ${y});
2257
+ vec2 grad2 = dHdxy(${h.result}, uv2, ${y});
2225
2258
  vec3 n2 = perturbNormalArb(-vViewPosition, normal, grad2, faceDirection);
2226
2259
 
2227
2260
  bumpNormal = n0 * weights.z + n1 * weights.x + n2 * weights.y;
@@ -2229,25 +2262,25 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
2229
2262
  }
2230
2263
 
2231
2264
  normal = bumpNormal;
2232
- `:g=`
2265
+ `:b=`
2233
2266
  vec2 bumpMapCachedUv = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs;
2234
- vec2 grad = dHdxy(${f.result}, bumpMapCachedUv, ${y});
2267
+ vec2 grad = dHdxy(${h.result}, bumpMapCachedUv, ${y});
2235
2268
  normal = perturbNormalArb( - vViewPosition, normal, grad, faceDirection );
2236
2269
  `,d.push(`// Call the Texture Layer's function once here so that it writes out its procedural UV coordinates
2237
2270
  ${m.result};
2238
- ${g}
2239
- `)}d.push(o.code," vec3 diffuseColor = "+o.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );",i.code," vec3 specular = "+i.result+";",a.code," float shininess = max( 0.0001, "+a.result+" );"," float specularStrength = 1.0;"),u&&d.push(u.code,"#ifdef ALPHATEST","if ( "+u.result+" <= ALPHATEST ) discard;","#endif"),d.push("material.diffuseColor = diffuseColor;"),d.push("material.specularColor = specular;","material.specularShininess = shininess;","material.specularStrength = specularStrength;","#include <lights_fragment_begin>","#include <lights_fragment_end>"),d.push("vec3 ao = aoEnabled ? tex2D(aoMap, gl_FragCoord.xy / resolution).rgb : vec3(1.0);","vec3 outgoingLight = ((reflectedLight.directDiffuse + reflectedLight.indirectDiffuse) * ao) + reflectedLight.directSpecular;");let h="1.0";this.mask&&(this.mask.analyze(e),h=`luminance(${this.mask.flow(e,"v3").result})`),d.push(`
2271
+ ${b}
2272
+ `)}d.push(o.code," vec3 diffuseColor = "+o.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );",i.code," vec3 specular = "+i.result+";",a.code," float shininess = max( 0.0001, "+a.result+" );"," float specularStrength = 1.0;"),u&&d.push(u.code,"#ifdef ALPHATEST","if ( "+u.result+" <= ALPHATEST ) discard;","#endif"),d.push("material.diffuseColor = diffuseColor;"),d.push("material.specularColor = specular;","material.specularShininess = shininess;","material.specularStrength = specularStrength;","#include <lights_fragment_begin>","#include <lights_fragment_end>"),d.push("vec3 ao = aoEnabled ? tex2D(aoMap, gl_FragCoord.xy / resolution).rgb : vec3(1.0);","vec3 outgoingLight = ((reflectedLight.directDiffuse + reflectedLight.indirectDiffuse) * ao) + reflectedLight.directSpecular;");let f="1.0";this.mask&&(this.mask.analyze(e),f=`luminance(${this.mask.flow(e,"v3").result})`),d.push(`
2240
2273
  if (outgoingLight != diffuseColor) {
2241
2274
  float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
2242
- accumAlpha += ( 1.0 - accumAlpha ) * ${s.result} * ${h} * lightAccu;
2243
- outgoingLight = spe_blend( diffuseColor, outgoingLight, ${s.result} * ${h}, ${l.result} );
2275
+ accumAlpha += ( 1.0 - accumAlpha ) * ${s.result} * ${f} * lightAccu;
2276
+ outgoingLight = spe_blend( diffuseColor, outgoingLight, ${s.result} * ${f}, ${l.result} );
2244
2277
  }
2245
2278
  `),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(`
2246
- `)}return t}};var ud=require("three");var sd=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 ah=class extends sd{create(r){return URL.createObjectURL(new Blob([r]))}dispose(r,e){URL.revokeObjectURL(e)}},ih;function Mb(n){return typeof n=="string"?n:(ih||(ih=new ah),ih.load(n))}var ld=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")}},cd=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 bs=class extends ld{constructor(e,t){super(e,t.imageHolderCache);this.data=e;this.shared=t;this.loaded=!1;this.isVideo=!1;this.isBuffer=!1;this._cache={[1e3]:{},[1001]:{},[1002]:{}};this.isVideo=e.type==="video",this.isBuffer=e.isWebGLRenderTarget===!0,this.loadPromise=this.updateSrc(this.isBuffer?e:e.data)}async updateSrc(e){if(typeof document>"u")return;this.disposeTextures(),this.loaded=!1;let t=()=>{this.loaded=!0;for(let i of Object.values(this._cache))for(let a of Object.values(i))for(let s of Object.values(a))s&&(s.image=this.img,s.needsUpdate=!0);this.shared.requestRender()};if(this.isBuffer)this.img=e,this.loaded=!0;else if(this.isVideo){if(this.img=document.createElement("video"),this.img.preload="auto",this.img.playsInline=!0,this.img.currentTime=.01,typeof e!="string"){var o=new FileReader;o.readAsDataURL(new Blob([e],{type:"video/mp4"}));let 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=Mb(e),this.img.onload=t,await new Promise(i=>{this.img.onload=()=>{t(),i(null)}})}getTexture(e,t=1008,o=1006){let i=this._cache[e]?.[t]?.[o];if(i)return i;{let a;return this.isBuffer?a=this.img.texture:this.isVideo?a=new ud.VideoTexture(this.img,void 0,e,e):a=new ud.Texture(this.img,void 0,e,e,o,t),this.loaded&&(a.needsUpdate=!0),this._cache[e]===void 0&&(this._cache[e]={}),this._cache[e][t]===void 0&&(this._cache[e][t]={}),this._cache[e][t][o]=a,a}}setNeedsUpdate(e){for(let t of Object.values(this._cache))for(let o of Object.values(t))for(let i of Object.values(o))i&&(i.needsUpdate=e)}disposeTextures(){for(let[e,t]of Object.entries(this._cache))for(let[o,i]of Object.entries(t))for(let[a,s]of Object.entries(i))s?.dispose(),this._cache[e]!==void 0&&this._cache[e][o]!==void 0&&(this._cache[e][o][a]=void 0)}dispose(){super.dispose(),this.disposeTextures()}};var Nr=class extends bs{};var dt=require("three");function or(n,r){return r.color(n)}function Eb(n,r){switch(n.type){case"fresnel":return LM(n,r);case"gradient":return VM(n,r);case"depth":return zM(n,r);case"normal":return GM(n,r);case"noise":return FM(n,r);case"rainbow":return jM(n,r);case"toon":return kM(n,r);case"outline":return UM(n,r);case"transmission":return HM(n,r);case"color":return RM(n,r);case"pattern":return WM(n,r)}}function BM(n){return{type:n.type}}function mo(n,r){let{alpha:e,mode:t,isMask:o}=n,i=typeof e=="string"?(Number(r.getVariable(e))??100)/100:e;return{...BM(n),alpha:i,mode:t,isMask:o}}function RM(n,r){return{...mo(n,r),color:or(n.color,r)}}function LM(n,r){let{bias:e,scale:t,intensity:o,factor:i,color:a}=n;return{...mo(n,r),color:or(a,r),bias:e,scale:t,intensity:o,factor:i}}function VM(n,r){let{gradientType:e,smooth:t,colors:o,steps:i,angle:a,offset:s,morph:l}=n;return{...mo(n,r),gradientType:e,smooth:t,colors:o.map(c=>new dt.Vector4(c[0],c[1],c[2],c[3])),num:o.length,steps:i,offset:new dt.Vector2(...s),morph:new dt.Vector2(...l),angle:a}}function zM(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{...mo(n,r),gradientType:e,near:t,far:o,isVector:i,isWorldSpace:a,origin:new dt.Vector3(...s),direction:l?new dt.Vector3(...l):new dt.Vector3(1,0,0),colors:c.map(d=>d!==void 0?new dt.Vector4(d[0],d[1],d[2],d[3]):new dt.Vector4(0,0,0,0)),steps:u.slice(0,c.length),smooth:p}}function GM(n,r){let{cnormal:e}=n;return{...mo(n,r),cnormal:new dt.Vector3(e[0],e[1],e[2])}}function FM(n,r){return{...mo(n,r),scale:n.scale,move:n.move,fA:new dt.Vector2(...n.fA),fB:new dt.Vector2(...n.fB),size:new dt.Vector3(...n.size),distortion:new dt.Vector2(...n.distortion),colorA:or(n.colorA,r),colorB:or(n.colorB,r),colorC:or(n.colorC,r),colorD:or(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 jM(n,r){return{...mo(n,r),filmThickness:n.filmThickness,movement:n.movement,wavelengths:new dt.Vector3(...n.wavelengths),noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,offset:new dt.Vector3(...n.offset)}}function kM(n,r){return{...mo(n,r),positioning:n.positioning,colors:n.colors.map(e=>new dt.Vector4(e[0],e[1],e[2],e[3])),num:n.colors.length,steps:n.steps,source:new dt.Vector3(...n.source),isWorldSpace:n.isWorldSpace,noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,shadowColor:or(n.shadowColor,r),offset:new dt.Vector3(...n.offset)}}function UM(n,r){return{...mo(n,r),outlineColor:or(n.outlineColor,r),contourColor:or(n.contourColor,r),outlineWidth:n.outlineWidth,contourWidth:n.contourWidth,outlineThreshold:n.outlineThreshold,contourThreshold:n.contourThreshold,outlineSmoothing:n.outlineSmoothing,contourFrequency:n.contourFrequency,contourDirection:new dt.Vector3(...n.contourDirection),positionalLines:n.positionalLines,compensation:n.compensation}}function HM(n,r){return{...mo(n,r),thickness:n.thickness,ior:n.ior,roughness:n.roughness}}function WM(n,r){return{...mo(n,r),style:n.style,projection:n.projection,axis:n.axis,blending:n.blending,offset:new dt.Vector2(...n.offset),colorA:or(n.colorA,r),colorB:or(n.colorB,r),frequency:new dt.Vector2(...n.frequency),size:n.size,variation:n.variation,smoothness:n.smoothness,zigzag:n.zigzag,rotation:n.rotation,vertical:new dt.Vector2(...n.vertical),horizontal:new dt.Vector2(...n.horizontal),sides:n.sides}}var Wn=class extends kt{};var dd=require("three");var qM={noise:["noiseType"],texture:["projection","axis","side"],video:["projection","axis","side"],displace:["noiseType"],light:["roughnessMap","bumpMap"],depth:["smooth","isWorldSpace","gradientType","isVector"],pattern:["style","projection","axis"]},$M={depth:["colors"]};function YM(n,r,e){if(r==="isMask")return!0;let t=qM[n.type],o=$M[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 sh(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("magFilter"in i){let a=t;a.magFilter=i.magFilter}if("rotation"in i&&e.uniforms[`f${e.id}_rotation`])return e.uniforms[`f${e.id}_rotation`].value=(i.rotation??0)*dd.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 Nb(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(lh(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 Un))switch(o=o||YM(e,i,a),s.constructor){case Ze:if(typeof a=="string"){let l=r.getColor(a);l&&(s.value=l);break}else{let l=a;s.value instanceof Wn?s.value=new kt(l.r,l.g,l.b,l.a):s.setRGBA(l);break}case vr:if(typeof a=="string"){let l=r.getColor(a);l&&(s.value=l);break}else{let l=a;s.value instanceof Wn?s.value=new kt(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 tr:{let l=a;s.value.setX(l[0]),s.value.setY(l[1]),s.value.setZ(l[2]);break}case pr:{sh(a,r,e);break}case ho:{s.value=a.map(l=>new dd.Vector4(...l));break}default:{s.value=a;break}}}return o}var qn=(n,r,e)=>Math.max(0,Math.min(1,Number(r.getVariable(typeof n=="number"?n*100:n,e)??100)/100))??1,$n=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)lh(a,this,t,i)}get type(){return this.data.type}static create(r,e,t,o){if(t.type==="light")return fr.createLightLayer(r,e,t,o);if(t.type==="texture"||t.type==="video"){let i=t.type==="texture"?o.uiBuffer(t.texture.image)??o.image(t.texture.image):o.video(t.texture.video),a=new Ai(i,t.texture.wrapping,t.texture.minFilter??1008,t.texture.magFilter??1006),s=new nd(i),l=new id(t.texture.repeat,t.texture.offset,t.texture.rotation??0),c=new se(t.crop?1:0),u=new Ge(t.projection??0),p=new Ge(["x","y","z"].indexOf(t.axis)??0),d=new Ge(t.side??0),h=new vt(t.size?new Qe.Vector2(t.size[0],t.size[1]):new Qe.Vector2(100,100)),f=new se(t.blending??0),m=new se(qn(t.alpha,o)),y=new Ge(t.mode??0),g=new It(t.isMask??!1),v=new Hn(a,s,c,u,p,d,h,f,l,m,y,g),w=new Xe(v.calpha,"f");return new ht(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,w,g,o)}else if(t.type==="matcap"){let i=o.image(t.texture.image),a=new Ai(i,t.texture.wrapping,t.texture.minFilter??1008,t.texture.magFilter??1006),s=new se(qn(t.alpha,o)),l=new Ge(t.mode??0),c=new It(t.isMask??!1),u=new se((t.texture.rotation??0)*Qe.MathUtils.DEG2RAD),p=new us(a,s,l,c,u),d=new Xe(p.calpha,"f");return new ht(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 tr(new Qe.Vector3(...t.offset)),a=new se(t.scale??10),s=new se(t.intensity??8),l=new se(t.movement??1),c=new Ge(t.noiseType??0),u=new Ge(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 Ge(t.quality??1),y=new gs(s,l,i,u,p,d,h,f,m,a,c);return new jl(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 QM(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||"noiseType"in o.props?(t.scene.markNeedsUpdateRendererDirty(),!0):Nb(o.props,t.shared,this,e)}else if(o.path[0]==="texture")return"texture"in e||"video"in e?sh(o.props,t.shared,this):!0;return!1}dispose(){if(XM(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}},ht=class extends $n{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}},jl=class extends $n{constructor(e,t,o,i,a,s){super(e,t,o,i,s);this.position=a}},fr=class extends $n{constructor(e,t,o,i,a,s){super(e,t,o,a,s);this.node=i}static createLightLayer(e,t,o,i){let a,s=new se(qn(o.alpha,i)),l=new Ge(o.mode),c=new se(o.bumpMapIntensity),u=new se(qn(o.alphaOverride,i)),p;if(!o.visible)a=new ln,p={};else if(o.category==="lambert"){a=new Rl;let d=new Ze(i.color(o.emissive)??0),h=new It(o.occlusion??!0);p={emissive:d,occlusion:h},a.emissive=d,a.occlusion=h}else if(o.category==="toon"){a=new Fl;let d=new se(o.shininess??30),h=new Ze(i.color(o.specular)??1118481);p={shininess:d,specular:h},a.shininess=d,a.specular=h}else if(o.category==="physical"){a=new zl;let d=new se(o.roughness??.3),h=new se(o.metalness??0),f=new se(o.reflectivity??.5),m=new It(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 Vl;let d=new se(o.shininess??30),h=new Ze(o.specular!==void 0?i.color(o.specular)??1118481:1118481),f=new It(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 fr(e,t,o,a,p,i)}get category(){return this.node.category}};function XM(n){let r=n instanceof $n?n.type:n;return r==="texture"||r==="video"||r==="displace_map"||r==="matcap"}function kr(n){return{alpha:new se(n.alpha??1),mode:new Ge(n.mode??0),isMask:new It(n.isMask??!1)}}function KM(n,r,e,t,o){switch(n.type){case"color":{let i=new Ze(t.color??Et),a=kr(t),s=new Ti(i,a.alpha),l=new Xe(s.calpha,"f");return new ht(r,e,n,{color:i,...a},s,a.mode,l,a.isMask,o)}case"fresnel":{let i=new Ze(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=kr(t),p=new Dl(i,a,s,l,c,u.alpha,u.mode,u.isMask),d=new Xe(p.calpha,"f");return new ht(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 tr(t.wavelengths??new Qe.Vector3(0,0,0)),l=new se(t.noiseStrength??0),c=new se(t.noiseScale??1),u=new tr(t.offset??new Qe.Vector3(0,0,0)),p=kr(t),d=new hs(i,a,s,l,c,u,p.alpha,p.isMask),h=new Xe(d.calpha,"f");return new ht(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=Ne.transmissionSize,c=Ne.transmissionRenderTarget,u=Ne.transmissionRenderTargetDepth,p=window.innerWidth,d=window.innerHeight,h=p>=d?new vt(d/p,1):new vt(1,p/d),f=kr(t),m=new ys(i,a,s,l,c,u,h,f.alpha),y=new Xe(m.calpha,"f");return new ht(r,e,n,{thickness:i,ior:a,roughness:s,aspectRatio:h,...f},m,f.mode,y,f.isMask,o)}case"toon":{let i=new Ge(t.positioning??0),a;t.colors?a=new ho(t.colors.length,t.colors):(a=new ho(10,new Qe.Vector4(0,0,0,1)),a.value[1]=new Qe.Vector4(1,1,1,1));let s;t.steps?s=new fo(t.steps.length,t.steps):(s=new fo(10,1),s.value[0]=0);let l=new tr(t.source??new Qe.Vector3(0,0,0)),c=new It(t.isWorldSpace??!0),u=new se(t.noiseStrength??0),p=new se(t.noiseScale??1),d=new vr(t.shadowColor),h=new tr(t.offset??new Qe.Vector3(0,0,0)),f=kr(t),m=new ms(i,a,s,l,c,u,p,d,h,f.alpha),y=new Xe(m.calpha,"f");return new ht(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 Ze(t.outlineColor??16777215),a=new Ze(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 tr(t.contourDirection??new Qe.Vector3(0,1,0)),f=new It(t.positionalLines??!1),m=new It(t.compensation??!0),y=Ne.normalRenderTarget,g=Ne.normalRenderTargetDepth,v=Ne.pixelRatioNode,w=Ne.resolution,O=kr(t),S=new ps(i,a,s,l,c,u,p,d,h,f,m,w,y,g,v,O.alpha),C=new Xe(S.calpha,"f");return new ht(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,...O},S,O.mode,C,O.isMask,o)}case"depth":{let i=new Ge(t.gradientType??0),a=new It(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 tr(t.origin??new Qe.Vector3),d=new tr(t.direction??new Qe.Vector3),h;t.colors?h=new ho(t.colors.length,t.colors):(h=new ho(2,new Qe.Vector4(0,0,0,1)),h.value[1]=new Qe.Vector4(1,1,1,1));let f;t.steps?f=new fo(t.steps.length,t.steps):(f=new fo(2,1),f.value[0]=0);let m=kr(t),y=new ls(i,a,s,l,c,u,p,d,h,f,m.alpha,m.isMask),g=new Xe(y.calpha,"f");return new ht(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 tr(t.size??new Qe.Vector3(100,100,100)),s=new se(t.move??1),l=new vt(t.fA??new Qe.Vector2(1.7,9.2)),c=new vt(t.fB??new Qe.Vector2(8.3,2.8)),u=new vt(t.distortion??new Qe.Vector2(1,1)),p=new vr(t.colorA),d=new vr(t.colorB),h=new vr(t.colorC),f=new vr(t.colorD),m=new Ge(t.noiseType??0),y=new Ge(t.voronoiStyle??0),g=new se(t.highCut??1),v=new se(t.lowCut??0),w=new se(t.smoothness??.5),O=new se(t.seed??.5),S=new Ge(t.quality??1),C=kr(t),T=new ds(i,a,s,l,c,u,p,d,h,f,C.alpha,m,C.isMask,y,g,v,w,O,S),x=new Xe(T.calpha,"f");return new ht(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,...C,voronoiStyle:y,highCut:g,lowCut:v,smoothness:w,seed:O,quality:S},T,C.mode,x,C.isMask,o)}case"normal":{let i=new tr(t.cnormal??new Qe.Vector3(1,1,1)),a=kr(t),s=new is(i,a.alpha),l=new Xe(s.calpha,"f");return new ht(r,e,n,{cnormal:i,...a},s,a.mode,l,a.isMask,o)}case"gradient":{let i=new Ge(t.gradientType??0),a=new It(t.smooth??!1),s;t.colors?s=new ho(t.colors.length,t.colors):(s=new ho(10,new Qe.Vector4(0,0,0,1)),s.value[1]=new Qe.Vector4(1,1,1,1));let l;t.steps?l=new fo(t.steps.length,t.steps):(l=new fo(10,1),l.value[0]=0);let c=new vt(t.offset??new Qe.Vector2(0,0)),u=new vt(t.morph??new Qe.Vector2(0,0)),p=new se(t.angle??0),d=kr(t),h=new cs(i,a,s,l,c,u,p,d.alpha,d.isMask),f=new Xe(h.calpha,"f");return new ht(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 Ge(t.style??0),a=new Ge(t.projection??0),s=new Ge(["x","y","z"].indexOf(t.axis)??0),l=new se(t.blending??0),c=new vt(t.offset??new Qe.Vector2(0,0)),u=new vr(t.colorA),p=new vr(t.colorB),d=new vt(t.frequency??new Qe.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 Qe.Vector2(0,1)),w=new vt(t.horizontal??new Qe.Vector2(0,1)),O=new Ge(t.sides??6),S=kr(t),C=new fs(i,a,s,l,c,u,p,d,h,f,m,y,g,v,w,O,S.alpha,S.isMask),T=new Xe(C.calpha,"f");return new ht(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:w,sides:O,...S},C,S.mode,T,S.isMask,o)}default:{let i=new Ze(1,0,0,1),a=kr(t),s=new Ti(i,a.alpha),l=new Xe(s.calpha,"f");return new ht(r,e,n,{color:i,...a},s,a.mode,l,a.isMask,o)}}}function QM(n,r,e,t){let o=Eb(e,t);return KM(e,n,r,o,t)}function lh(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=qn(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 pd(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 wr=class extends Db.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""}},fd=class extends wr{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()}},Mi=class extends wr{constructor(e,t,o=!0){super();this.data=e;this.allowVariableSaves=o;this.layerIdGen=0;this.flavors=[];this.masks={};this.type="NodeMaterial";this.updaters=[],this.needsJitter=t.shared.needsJitter,tt.startContext(this),this.reset0(e,t),tt.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 fd(e,t,o,this),a.needsJitter=this.needsJitter,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){tt.startContext(this),(this.data!==e||o)&&this.reset0(e,t),tt.endContext(this)}reset0(e,t){this.data=e;let o=e.layers??Yt.defaultTwoLayerData("phong").layers;try{this.layers=o.map(i=>$n.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=pd(e,t.shared),this.saveVariableLocations(t)}onVariableUpdate(e,t,o){if(e[0]==="alphaOverride")this.transparent=pd(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=pd(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 fr),this.lightLayer===void 0&&(this.lightLayer=new fr(0,"",{...Bt.defaultData("light","phong"),visible:!1},new ln,{},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 fr);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 ht&&s.color instanceof Hn&&(s.uuid===o&&(e.node.bumpMap=s.color),s.uuid===i&&(e.node.roughnessMap=s.color))}}updateByOp(e,t,o){if(tt.startContext(this),t!==void 0?this.data=t:t=this.data,this.transparent=pd(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:qn(e.props.alpha,i,["material",this.uuid,"layer",a,"alpha"])}:c={...e.props,alphaOverride:qn(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);tt.endContext(this)}applyMasks(){for(let e=0;e<this.layers.length;++e){let t=this.layers[e];t instanceof ht?t.color.mask=void 0:t instanceof fr&&(t.node.mask=void 0)}for(let e=0;e<this.layers.length;++e){let t=this.layers[e];if(t instanceof ht&&t.isMask.value&&t.data.visible&&e>0){let o=e-1,i=this.layers[o];i instanceof fr?i.node.mask=new Kt(t.color,t.alpha,Kt.MUL):i instanceof ht&&(i.isMask.value||(i.color.mask=new Kt(t.color,t.alpha,Kt.MUL)))}}}blendColors(){let e=this.layers.findIndex(o=>o instanceof ht),t=this.layers.findIndex(o=>o instanceof fr);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 ht){if(a.isMask.value)continue;o=new ns(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 fr);if(this.layers.length>t+1){for(let o=t+1;o<this.layers.length;++o){let i=this.layers[o];if(i instanceof ht){if(i.isMask.value)continue;e=new ns(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 jl);if(e.length>0){let t=e[0].position;for(let o=1;o<e.length;++o)e[o]&&(t=new Kt(t,e[o].position,Kt.ADD),t=new Kt(t,new se(.5).setReadonly(!0),Kt.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 rs;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 ht){let t=e.params.texture;if(t instanceof Ai&&!t.image.loaded)return!1}return!0}};Object.defineProperties(wr.prototype,{properties:{get:function(){return this.fragment.properties}}});var Ei=class extends Mi{constructor(r,e,t){super(r,e,!1),this.uuid=t,this.allowVariableSaves=!0,this.saveVariableLocations(e)}};var _b=new Map;function Bb(n){if(typeof n=="string")return n;let r=_b.get(n);return r||(r={url:URL.createObjectURL(new Blob([n]))},_b.set(n,r)),r.url}var ZM,Rb=new Promise(n=>{ZM=n});var Lb;Rb.then(n=>Lb=n);var Ni=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:Bb(r),format:"wav"},this.sound=new Lb.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"),hd=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 w=m.x,O=y.x,S=g.x,C=v.x,T=m.y,x=y.y,N=g.y,E=v.y,M=(C-S)*(T-N)-(E-N)*(w-S),D=(O-w)*(T-N)-(x-T)*(w-S),_=(E-N)*(O-w)-(C-S)*(x-T),B=M/_,V=D/_;if(_===0&&M!==0||B<=0||B>=1||V<0||V>1)return null;if(M===0&&_===0){for(let k=0;k<2;k++)if(i(k===0?g:v,m,y),t.loc===e.ORIGIN){let L=k===0?g:v;return{x:L.x,y:L.y,t:t.t}}else if(t.loc===e.BETWEEN){let L=+(w+t.t*(O-w)).toPrecision(10),W=+(T+t.t*(x-T)).toPrecision(10);return{x:L,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 k=+(w+B*(O-w)).toPrecision(10),L=+(T+B*(x-T)).toPrecision(10);return{x:k,y:L,t:B}}}function i(m,y,g){let v=g.x-y.x,w=g.y-y.y,O=m.x-y.x,S=m.y-y.y,C=v*S-O*w;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(C<-Number.EPSILON){t.loc=e.LEFT;return}if(C>Number.EPSILON){t.loc=e.RIGHT;return}if(v*O<0||w*S<0){t.loc=e.BEHIND;return}if(Math.sqrt(v*v+w*w)<Math.sqrt(O*O+S*S)){t.loc=e.BEYOND;return}let T;v!==0?T=O/v:T=S/w,t.loc=e.BETWEEN,t.t=T}function a(m,y){let g=[],v=[];for(let w=1;w<m.length;w++){let O=m[w-1],S=m[w];for(let C=1;C<y.length;C++){let T=y[C-1],x=y[C],N=o(O,S,T,x);N!==null&&g.find(E=>E.t<=N.t+Number.EPSILON&&E.t>=N.t-Number.EPSILON)===void 0&&(g.push(N),v.push(new Ut.Vector2(N.x,N.y)))}}return v}function s(m,y,g){let v=new Ut.Vector2;y.getCenter(v);let w=[];return g.forEach(O=>{O.boundingBox.containsPoint(v)&&a(m,O.points).forEach(C=>{w.push({identifier:O.identifier,isCW:O.isCW,point:C})})}),w.sort((O,S)=>O.point.x-S.point.x),w}function l(m,y,g,v,w){(w==null||w==="")&&(w="nonzero");let O=new Ut.Vector2;m.boundingBox.getCenter(O);let S=[new Ut.Vector2(g,O.y),new Ut.Vector2(v,O.y)],C=s(S,m.boundingBox,y);C.sort((D,_)=>D.point.x-_.point.x);let T=[],x=[];C.forEach(D=>{D.identifier===m.identifier?T.push(D):x.push(D)});let N=T[0].point.x,E=[],M=0;for(;M<x.length&&x[M].point.x<N;)E.length>0&&E[E.length-1]===x[M].identifier?E.pop():E.push(x[M].identifier),M++;if(E.push(m.identifier),w==="evenodd"){let D=E.length%2===0,_=E[E.length-2];return{identifier:m.identifier,isHole:D,for:_}}else if(w==="nonzero"){let D=!0,_=null,B=null;for(let V=0;V<E.length;V++){let k=E[V];y[k]&&(D?(B=y[k].isCW,D=!1,_=k):B!==y[k].isCW&&(B=y[k].isCW,D=!0))}return{identifier:m.identifier,isHole:D,for:_}}else console.warn('fill-rule: "'+w+'" is currently not implemented.')}let c=0,u=999999999,p=-999999999,d=[];this.subPaths.forEach(m=>{let y=m.getPoints(),g=-999999999,v=999999999,w=-999999999,O=999999999;for(let S=0;S<y.length;S++){let C=y[S];C.y>g&&(g=C.y),C.y<v&&(v=C.y),C.x>w&&(w=C.x),C.x<O&&(O=C.x)}p<=w&&(p=w+1),u>=O&&(u=O-1),y.length&&d.push({curves:m.curves,points:y,isCW:Ut.ShapeUtils.isClockWise(y),identifier:c++,boundingBox:new Ut.Box2(new Ut.Vector2(O,v),new Ut.Vector2(w,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(w=>w?.isHole&&w.for===m.identifier).forEach(w=>{if(w){let O=d[w.identifier],S=new Ut.Path;S.curves=O.curves,g.holes.push(S)}}),f.push(g)}}),f}};var ch=!1,zb,uh=new Promise(n=>{zb=n}),Vb=!1;var md;function Gb(){if(ch=!0,Vb)return;if(md)return md;async function n(){let e=await import("./opentype.js");zb(e),Vb=!0}return md=n(),md}var kl=class{async load(r,e,t=()=>{}){let{load:o}=await uh;o(r,(i,a)=>{i||!a?t(i??"Something went wrong"):e(a)})}async parse(r){let{parse:e,Bidi:t}=await uh;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 JM(n){return await(await fetch(n)).arrayBuffer()}var eE=new kl;async function dh(n){let r,e,t=!1;if(n.url?(r=await JM(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(ch){let o=await eE.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 vs=require("three");function tE(n,r){return r.state.glyphIndex===n||r.state.fina===n||r.state.medi===n||r.state.init===n}var yd=class{constructor(r){this._arrayBuffer=new ArrayBuffer(1);this._isLoaded=!1;this._intercepted=!1;this._isUserFont=r.isUserFont??!1,this._loadingPromise=dh(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=dh(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(tE(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(`
2247
- `,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 w=r[v],O={features:{liga:!0}},S=[];try{S=t.stringToGlyphs(w,O)}catch(T){console.warn(T)}p=this.getLineInitialOffsetX(a[v],s,e.horizontalAlign,w,l);let C=[];try{C=this.reverseLigaturesTable(t,w,S)}catch(T){console.warn(T)}u=this.computeSpaceWidthForLine(r,v,e);for(let T=0;T<S.length;T++){let x=S[T],N=x.index===0?`
2248
- `:x.unicode?String.fromCharCode(x.unicode):void 0,E=C[T],M=0,D=0;T===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(N===`
2249
- `)_=c;else if(N===" ")_=u;else{let B=this.createPath(x,o,p,d,e);B&&(_=B.offsetX-(M+D),h.push(B.path))}if(E.replacements.length===1)m[v].push([p,d]),f[v].push(_);else{let B=E.replacements.map(W=>(t.glyphs.get(W).advanceWidth??0)*o),V=B.reduce((W,F)=>W+=F,0),k=B.map(W=>W/V),L=p;for(let W=0;W<k.length;W++){let F=_*k[W];m[v].push([L,d]),f[v].push(F),L+=F}}p+=_,y=x}d-=i}let g=[];for(let v=0,w=h.length;v<w;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(`
2250
- `)>=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 hd,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=rE(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 rE(n){if(n.length){let r=n[0];if(r instanceof vs.LineCurve)return r.v1;if(r instanceof vs.CubicBezierCurve||r instanceof vs.QuadraticBezierCurve)return r.v0}}var ph=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()}},Ul=class extends ph{constructor(e){super();this.flatShading=e}disposeObject(e){e.dispose()}createObject(e,t,o){let i=an(e,t,this.flatShading,o);return i.computeBoundingSphere(),i}};var Fb={markNeedsUpdateRendererDirty:()=>{}};var hh=require("three");var gd=1e3,jb=512*gd;function oE(n,r){let e=typeof n;return!!((r==="string"||r==="number")&&e===r||r==="boolean"&&(n==="true"||n==="false"||n===!0||n===!1)||r==="image"&&e==="string"&&n.startsWith("http"))}var kb="https://hooks.spline.design",nE=`${kb}/events?hashFile=`,MK=`${kb}/`,xd=class{constructor(r,e){this.id=r;this.userWebhook=e;this.result=void 0;this._connected=!1;this.emitter=nn();this.reconnectWaitFor=gd;this._onError=r=>{this.eventSource?.removeEventListener("message",this._onMessage),this.eventSource?.removeEventListener("error",this._onError),this.eventSource?.removeEventListener("open",this._onConnected),this._scheduleReconnect()};this._onConnected=r=>{clearTimeout(this.scheduledReconnectHandle),this.reconnectWaitFor=gd,this._connected=!0};this._onDisconnected=()=>{clearTimeout(this.scheduledReconnectHandle),this.reconnectWaitFor=gd,this._connected=!1};this._onMessage=r=>{let e=r.data,t;try{t=JSON.parse(e)}catch(o){console.error("Error parsing webhook message",o)}if(t){let o=!1;this.userWebhook.parametersSchemas.forEach(({data:i})=>{t[i.name]!==void 0&&oE(t[i.name],i.type)&&(this.result===void 0&&(this.result={}),this.result[i.name]=t[i.name],o=!0)}),o&&this.emitter.emit("message",{userWebhookId:this.id})}}}connect(){clearTimeout(this.scheduledReconnectHandle),this.userWebhook.url&&(this.eventSource=new EventSource(nE+this.userWebhook.url),this.eventSource.addEventListener("message",this._onMessage),this.eventSource.addEventListener("error",this._onError),this.eventSource.addEventListener("open",this._onConnected))}disconnect(){this.eventSource?.removeEventListener("message",this._onMessage),this.eventSource?.removeEventListener("error",this._onError),this.eventSource?.removeEventListener("open",this._onConnected),this.eventSource?.close(),this._onDisconnected(),clearTimeout(this.scheduledReconnectHandle)}_scheduleReconnect(){this.reconnectWaitFor*=2,this.reconnectWaitFor>jb&&(this.reconnectWaitFor=jb),clearTimeout(this.scheduledReconnectHandle),this.scheduledReconnectHandle=setTimeout(()=>{this.scheduledReconnectHandle=void 0,this.connect()},this.reconnectWaitFor)}update(r){this.userWebhook=r}dispose(){this._connected&&this.disconnect()}get connected(){return this._connected}on(r,e){this.emitter.on(r,e)}off(r,e){this.emitter.off(r,e)}getParametersKeys(){return this.userWebhook.parametersSchemas.map(r=>r.data.name)}getParameterValue(r){if(this.getParametersKeys().includes(r)){if(this.result)return this.result?.[r];for(let t of this.userWebhook.parametersSchemas)if(t.data.name===r)return wu.defaultParameterValueByType(t.data.type)}}};var iE=globalThis.atob,aE=globalThis.btoa,Ur=class{static floatTo16BitPCM(r){let e=new ArrayBuffer(r.length*2),t=new DataView(e),o=0;for(let i=0;i<r.length;i++,o+=2){let a=Math.max(-1,Math.min(1,r[i]));t.setInt16(o,a<0?a*32768:a*32767,!0)}return e}static base64ToArrayBuffer(r){let e=iE(r),t=e.length,o=new Uint8Array(t);for(let i=0;i<t;i++)o[i]=e.charCodeAt(i);return o.buffer}static arrayBufferToBase64(r){r instanceof Float32Array?r=this.floatTo16BitPCM(r):r instanceof Int16Array&&(r=r.buffer);let e="",t=new Uint8Array(r),o=32768;for(let i=0;i<t.length;i+=o){let a=t.subarray(i,i+o);e+=String.fromCharCode.apply(null,a)}return aE(e)}static mergeInt16Arrays(r,e){if(r instanceof ArrayBuffer&&(r=new Int16Array(r)),e instanceof ArrayBuffer&&(e=new Int16Array(e)),!(r instanceof Int16Array)||!(e instanceof Int16Array))throw new Error("Both items must be Int16Array");let t=new Int16Array(r.length+e.length);for(let o=0;o<r.length;o++)t[o]=r[o];for(let o=0;o<e.length;o++)t[r.length+o]=e[o];return t}static generateId(r,e=21){let t="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz",o=Array(e-r.length).fill(0).map(i=>t[Math.floor(Math.random()*t.length)]).join("");return`${r}${o}`}};var sE=n=>new Promise(r=>setTimeout(()=>r(),n)),Ss=class{constructor(){this.eventHandlers={},this.nextEventHandlers={}}clearEventHandlers(){return this.eventHandlers={},this.nextEventHandlers={},!0}on(r,e){return this.eventHandlers[r]=this.eventHandlers[r]||[],this.eventHandlers[r].push(e),e}onNext(r,e){return this.nextEventHandlers[r]=this.nextEventHandlers[r]||[],this.nextEventHandlers[r].push(e),e}off(r,e){let t=this.eventHandlers[r]||[];if(e){let o=t.indexOf(e);if(o===-1)throw new Error(`Could not turn off specified event listener for "${r}": not found as a listener`);t.splice(o,1)}else delete this.eventHandlers[r];return!0}offNext(r,e){let t=this.nextEventHandlers[r]||[];if(e){let o=t.indexOf(e);if(o===-1)throw new Error(`Could not turn off specified next event listener for "${r}": not found as a listener`);t.splice(o,1)}else delete this.nextEventHandlers[r];return!0}async waitForNext(r,e=null){let t=Date.now(),o;for(this.onNext(r,i=>o=i);!o;){if(e&&Date.now()-t>e)return null;await sE(1)}return o}dispatch(r,e){let t=[].concat(this.eventHandlers[r]||[]);for(let i of t)i(e);let o=[].concat(this.nextEventHandlers[r]||[]);for(let i of o)i(e);return delete this.nextEventHandlers[r],!0}};var Hl=class extends Ss{constructor({url:r,apiKey:e,dangerouslyAllowAPIKeyInBrowser:t,debug:o}={}){if(super(),this.defaultUrl="wss://api.openai.com/v1/realtime",this.url=r||this.defaultUrl,this.apiKey=e||null,this.debug=!!o,this.ws=null,globalThis.document&&this.apiKey&&!t)throw new Error('Can not provide API key in the browser without "dangerouslyAllowAPIKeyInBrowser" set to true')}isConnected(){return!!this.ws}log(...r){let t=[`[Websocket/${new Date().toISOString()}]`].concat(r).map(o=>typeof o=="object"&&o!==null?JSON.stringify(o,null,2):o);return this.debug&&console.log(...t),!0}async connect({model:r}={model:"gpt-4o-realtime-preview-2024-10-01"}){if(!this.apiKey&&this.url===this.defaultUrl&&console.warn(`No apiKey provided for connection to "${this.url}"`),this.isConnected())throw new Error("Already connected");if(globalThis.document){this.apiKey&&console.warn("Warning: Connecting using API key in the browser, this is not recommended");let e=globalThis.WebSocket,t=new e(`${this.url}${r?`?model=${r}`:""}`,["realtime",`openai-insecure-api-key.${this.apiKey}`,"openai-beta.realtime-v1"]);return t.addEventListener("message",o=>{let i=JSON.parse(o.data);this.receive(i.type,i)}),new Promise((o,i)=>{let a=()=>{this.disconnect(t),i(new Error(`Could not connect to "${this.url}"`))};t.addEventListener("error",a),t.addEventListener("open",()=>{this.log(`Connected to "${this.url}"`),t.removeEventListener("error",a),t.addEventListener("error",()=>{this.disconnect(t),this.log(`Error, disconnected from "${this.url}"`),this.dispatch("close",{error:!0})}),t.addEventListener("close",()=>{this.disconnect(t),this.log(`Disconnected from "${this.url}"`),this.dispatch("close",{error:!1})}),this.ws=t,o(!0)})})}}disconnect(r){if(!r||this.ws===r)return this.ws&&this.ws.close(),this.ws=null,!0}receive(r,e){return this.log("received:",r,e),this.dispatch(`server.${r}`,e),this.dispatch("server.*",e),!0}send(r,e){if(!this.isConnected())throw new Error("RealtimeAPI is not connected");if(e=e||{},typeof e!="object")throw new Error("data must be an object");let t={event_id:Ur.generateId("evt_"),type:r,...e};return this.dispatch(`client.${r}`,t),this.dispatch("client.*",t),this.log("sent:",r,t),this.ws.send(JSON.stringify(t)),!0}};var Wl=class{constructor(){go(this,"defaultFrequency",24e3);go(this,"EventProcessors",{"conversation.item.created":r=>{let{item:e}=r,t=JSON.parse(JSON.stringify(e));if(this.itemLookup[t.id]||(this.itemLookup[t.id]=t,this.items.push(t)),t.formatted={},t.formatted.audio=new Int16Array(0),t.formatted.text="",t.formatted.transcript="",this.queuedSpeechItems[t.id]&&(t.formatted.audio=this.queuedSpeechItems[t.id].audio,delete this.queuedSpeechItems[t.id]),t.content){let o=t.content.filter(i=>["text","input_text"].includes(i.type));for(let i of o)t.formatted.text+=i.text}return this.queuedTranscriptItems[t.id]&&(t.formatted.transcript=this.queuedTranscriptItems.transcript,delete this.queuedTranscriptItems[t.id]),t.type==="message"?t.role==="user"?(t.status="completed",this.queuedInputAudio&&(t.formatted.audio=this.queuedInputAudio,this.queuedInputAudio=null)):t.status="in_progress":t.type==="function_call"?(t.formatted.tool={type:"function",name:t.name,call_id:t.call_id,arguments:""},t.status="in_progress"):t.type==="function_call_output"&&(t.status="completed",t.formatted.output=t.output),{item:t,delta:null}},"conversation.item.truncated":r=>{let{item_id:e,audio_end_ms:t}=r,o=this.itemLookup[e];if(!o)throw new Error(`item.truncated: Item "${e}" not found`);let i=Math.floor(t*this.defaultFrequency/1e3);return o.formatted.transcript="",o.formatted.audio=o.formatted.audio.slice(0,i),{item:o,delta:null}},"conversation.item.deleted":r=>{let{item_id:e}=r,t=this.itemLookup[e];if(!t)throw new Error(`item.deleted: Item "${e}" not found`);delete this.itemLookup[t.id];let o=this.items.indexOf(t);return o>-1&&this.items.splice(o,1),{item:t,delta:null}},"conversation.item.input_audio_transcription.completed":r=>{let{item_id:e,content_index:t,transcript:o}=r,i=this.itemLookup[e],a=o||" ";return i?(i.content[t].transcript=o,i.formatted.transcript=a,{item:i,delta:{transcript:o}}):(this.queuedTranscriptItems[e]={transcript:a},{item:null,delta:null})},"input_audio_buffer.speech_started":r=>{let{item_id:e,audio_start_ms:t}=r;return this.queuedSpeechItems[e]={audio_start_ms:t},{item:null,delta:null}},"input_audio_buffer.speech_stopped":(r,e)=>{let{item_id:t,audio_end_ms:o}=r;this.queuedSpeechItems[t]||(this.queuedSpeechItems[t]={audio_start_ms:o});let i=this.queuedSpeechItems[t];if(i.audio_end_ms=o,e){let a=Math.floor(i.audio_start_ms*this.defaultFrequency/1e3),s=Math.floor(i.audio_end_ms*this.defaultFrequency/1e3);i.audio=e.slice(a,s)}return{item:null,delta:null}},"response.created":r=>{let{response:e}=r;return this.responseLookup[e.id]||(this.responseLookup[e.id]=e,this.responses.push(e)),{item:null,delta:null}},"response.output_item.added":r=>{let{response_id:e,item:t}=r,o=this.responseLookup[e];if(!o)throw new Error(`response.output_item.added: Response "${e}" not found`);return o.output.push(t.id),{item:null,delta:null}},"response.output_item.done":r=>{let{item:e}=r;if(!e)throw new Error('response.output_item.done: Missing "item"');let t=this.itemLookup[e.id];if(!t)throw new Error(`response.output_item.done: Item "${e.id}" not found`);return t.status=e.status,{item:t,delta:null}},"response.content_part.added":r=>{let{item_id:e,part:t}=r,o=this.itemLookup[e];if(!o)throw new Error(`response.content_part.added: Item "${e}" not found`);return o.content.push(t),{item:o,delta:null}},"response.audio_transcript.delta":r=>{let{item_id:e,content_index:t,delta:o}=r,i=this.itemLookup[e];if(!i)throw new Error(`response.audio_transcript.delta: Item "${e}" not found`);return i.content[t].transcript+=o,i.formatted.transcript+=o,{item:i,delta:{transcript:o}}},"response.audio.delta":r=>{let{item_id:e,content_index:t,delta:o}=r,i=this.itemLookup[e];if(!i)throw new Error(`response.audio.delta: Item "${e}" not found`);let a=Ur.base64ToArrayBuffer(o),s=new Int16Array(a);return i.formatted.audio=Ur.mergeInt16Arrays(i.formatted.audio,s),{item:i,delta:{audio:s}}},"response.text.delta":r=>{let{item_id:e,content_index:t,delta:o}=r,i=this.itemLookup[e];if(!i)throw new Error(`response.text.delta: Item "${e}" not found`);return i.content[t].text+=o,i.formatted.text+=o,{item:i,delta:{text:o}}},"response.function_call_arguments.delta":r=>{let{item_id:e,delta:t}=r,o=this.itemLookup[e];if(!o)throw new Error(`response.function_call_arguments.delta: Item "${e}" not found`);return o.arguments+=t,o.formatted.tool.arguments+=t,{item:o,delta:{arguments:t}}}});this.clear()}clear(){return this.itemLookup={},this.items=[],this.responseLookup={},this.responses=[],this.queuedSpeechItems={},this.queuedTranscriptItems={},this.queuedInputAudio=null,!0}queueInputAudio(r){return this.queuedInputAudio=r,r}processEvent(r,...e){if(!r.event_id)throw console.error(r),new Error('Missing "event_id" on event');if(!r.type)throw console.error(r),new Error('Missing "type" on event');let t=this.EventProcessors[r.type];if(!t)throw new Error(`Missing conversation event processor for "${r.type}"`);return t.call(this,r,...e)}getItem(r){return this.itemLookup[r]||null}getItems(){return this.items.slice()}};var ws=class extends Ss{constructor({url:r,apiKey:e,dangerouslyAllowAPIKeyInBrowser:t,debug:o}={}){super(),this.defaultSessionConfig={modalities:["text","audio"],instructions:"",voice:"alloy",input_audio_format:"pcm16",output_audio_format:"pcm16",input_audio_transcription:null,turn_detection:null,tools:[],tool_choice:"auto",temperature:.8,max_response_output_tokens:4096},this.sessionConfig={},this.transcriptionModels=[{model:"whisper-1"}],this.defaultServerVadConfig={type:"server_vad",threshold:.5,prefix_padding_ms:300,silence_duration_ms:200},this.realtime=new Hl({url:r,apiKey:e,dangerouslyAllowAPIKeyInBrowser:t,debug:o}),this.conversation=new Wl,this._resetConfig(),this._addAPIEventHandlers()}_resetConfig(){return this.sessionCreated=!1,this.tools={},this.sessionConfig=JSON.parse(JSON.stringify(this.defaultSessionConfig)),this.inputAudioBuffer=new Int16Array(0),!0}_addAPIEventHandlers(){this.realtime.on("client.*",o=>{let i={time:new Date().toISOString(),source:"client",event:o};this.dispatch("realtime.event",i)}),this.realtime.on("server.*",o=>{let i={time:new Date().toISOString(),source:"server",event:o};this.dispatch("realtime.event",i)}),this.realtime.on("server.session.created",()=>this.sessionCreated=!0);let r=(o,...i)=>{let{item:a,delta:s}=this.conversation.processEvent(o,...i);return{item:a,delta:s}},e=(o,...i)=>{let{item:a,delta:s}=r(o,...i);return a&&this.dispatch("conversation.updated",{item:a,delta:s}),{item:a,delta:s}},t=async o=>{try{let i=JSON.parse(o.arguments),a=this.tools[o.name];if(!a)throw new Error(`Tool "${o.name}" has not been added`);let s=await a.handler(i);this.realtime.send("conversation.item.create",{item:{type:"function_call_output",call_id:o.call_id,output:JSON.stringify(s)}})}catch(i){this.realtime.send("conversation.item.create",{item:{type:"function_call_output",call_id:o.call_id,output:JSON.stringify({error:i.message})}})}this.createResponse()};return this.realtime.on("server.response.created",r),this.realtime.on("server.response.output_item.added",r),this.realtime.on("server.response.content_part.added",r),this.realtime.on("server.input_audio_buffer.speech_started",o=>{r(o),this.dispatch("conversation.interrupted")}),this.realtime.on("server.input_audio_buffer.speech_stopped",o=>r(o,this.inputAudioBuffer)),this.realtime.on("server.conversation.item.created",o=>{let{item:i}=e(o);this.dispatch("conversation.item.appended",{item:i}),i.status==="completed"&&this.dispatch("conversation.item.completed",{item:i})}),this.realtime.on("server.conversation.item.truncated",e),this.realtime.on("server.conversation.item.deleted",e),this.realtime.on("server.conversation.item.input_audio_transcription.completed",e),this.realtime.on("server.response.audio_transcript.delta",e),this.realtime.on("server.response.audio.delta",e),this.realtime.on("server.response.text.delta",e),this.realtime.on("server.response.function_call_arguments.delta",e),this.realtime.on("server.response.output_item.done",async o=>{let{item:i}=e(o);i.status==="completed"&&this.dispatch("conversation.item.completed",{item:i}),i.formatted.tool&&t(i.formatted.tool)}),!0}isConnected(){return this.realtime.isConnected()}reset(){return this.disconnect(),this.clearEventHandlers(),this.realtime.clearEventHandlers(),this._resetConfig(),this._addAPIEventHandlers(),!0}async connect(){if(this.isConnected())throw new Error("Already connected, use .disconnect() first");return await this.realtime.connect(),this.updateSession(),!0}async waitForSessionCreated(){if(!this.isConnected())throw new Error("Not connected, use .connect() first");for(;!this.sessionCreated;)await new Promise(r=>setTimeout(()=>r(),1));return!0}disconnect(){this.sessionCreated=!1,this.realtime.isConnected()&&this.realtime.disconnect(),this.conversation.clear()}getTurnDetectionType(){return this.sessionConfig.turn_detection?.type||null}addTool(r,e){if(!r?.name)throw new Error("Missing tool name in definition");let t=r?.name;if(this.tools[t])throw new Error(`Tool "${t}" already added. Please use .removeTool("${t}") before trying to add again.`);if(typeof e!="function")throw new Error(`Tool "${t}" handler must be a function`);return this.tools[t]={definition:r,handler:e},this.updateSession(),this.tools[t]}removeTool(r){if(!this.tools[r])throw new Error(`Tool "${r}" does not exist, can not be removed.`);return delete this.tools[r],!0}deleteItem(r){return this.realtime.send("conversation.item.delete",{item_id:r}),!0}updateSession({modalities:r=void 0,instructions:e=void 0,voice:t=void 0,input_audio_format:o=void 0,output_audio_format:i=void 0,input_audio_transcription:a=void 0,turn_detection:s=void 0,tools:l=void 0,tool_choice:c=void 0,temperature:u=void 0,max_response_output_tokens:p=void 0}={}){r!==void 0&&(this.sessionConfig.modalities=r),e!==void 0&&(this.sessionConfig.instructions=e),t!==void 0&&(this.sessionConfig.voice=t),o!==void 0&&(this.sessionConfig.input_audio_format=o),i!==void 0&&(this.sessionConfig.output_audio_format=i),a!==void 0&&(this.sessionConfig.input_audio_transcription=a),s!==void 0&&(this.sessionConfig.turn_detection=s),l!==void 0&&(this.sessionConfig.tools=l),c!==void 0&&(this.sessionConfig.tool_choice=c),u!==void 0&&(this.sessionConfig.temperature=u),p!==void 0&&(this.sessionConfig.max_response_output_tokens=p);let d=[].concat((l||[]).map(f=>{let m={type:"function",...f};if(this.tools[m?.name])throw new Error(`Tool "${m?.name}" has already been defined`);return m}),Object.keys(this.tools).map(f=>({type:"function",...this.tools[f].definition}))),h={...this.sessionConfig};return h.tools=d,this.realtime.isConnected()&&this.realtime.send("session.update",{session:h}),!0}sendUserMessageContent(r=[]){if(r.length){for(let e of r)e.type==="input_audio"&&(e.audio instanceof ArrayBuffer||e.audio instanceof Int16Array)&&(e.audio=Ur.arrayBufferToBase64(e.audio));this.realtime.send("conversation.item.create",{item:{type:"message",role:"user",content:r}})}return this.createResponse(),!0}appendInputAudio(r){return r.byteLength>0&&(this.realtime.send("input_audio_buffer.append",{audio:Ur.arrayBufferToBase64(r)}),this.inputAudioBuffer=Ur.mergeInt16Arrays(this.inputAudioBuffer,r)),!0}createResponse(){return this.getTurnDetectionType()===null&&this.inputAudioBuffer.byteLength>0&&(this.realtime.send("input_audio_buffer.commit"),this.conversation.queueInputAudio(this.inputAudioBuffer),this.inputAudioBuffer=new Int16Array(0)),this.realtime.send("response.create"),!0}cancelResponse(r,e=0){if(r){if(r){let t=this.conversation.getItem(r);if(!t)throw new Error(`Could not find item "${r}"`);if(t.type!=="message")throw new Error('Can only cancelResponse messages with type "message"');if(t.role!=="assistant")throw new Error('Can only cancelResponse messages with role "assistant"');this.realtime.send("response.cancel");let o=t.content.findIndex(i=>i.type==="audio");if(o===-1)throw new Error("Could not find audio on item to cancel");return this.realtime.send("conversation.item.truncate",{item_id:r,content_index:o,audio_end_ms:Math.floor(e/this.conversation.defaultFrequency*1e3)}),{item:t}}}else return this.realtime.send("response.cancel"),{item:null}}async waitForNextItem(){let r=await this.waitForNext("conversation.item.appended"),{item:e}=r;return{item:e}}async waitForNextCompletedItem(){let r=await this.waitForNext("conversation.item.completed"),{item:e}=r;return{item:e}}};var lE=`
2279
+ `)}return t}};var ad=require("three");var od=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 oh=class extends od{create(r){return URL.createObjectURL(new Blob([r]))}dispose(r,e){URL.revokeObjectURL(e)}},rh;function Ib(n){return typeof n=="string"?n:(rh||(rh=new oh),rh.load(n))}var nd=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")}},id=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 xs=class extends nd{constructor(e,t){super(e,t.imageHolderCache);this.data=e;this.shared=t;this.loaded=!1;this.isVideo=!1;this.isBuffer=!1;this._cache={[1e3]:{},[1001]:{},[1002]:{}};this.isVideo=e.type==="video",this.isBuffer=e.isWebGLRenderTarget===!0,this.loadPromise=this.updateSrc(this.isBuffer?e:e.data)}async updateSrc(e){if(typeof document>"u")return;this.disposeTextures(),this.loaded=!1;let t=()=>{this.loaded=!0;for(let i of Object.values(this._cache))for(let a of Object.values(i))for(let s of Object.values(a))s&&(s.image=this.img,s.needsUpdate=!0);this.shared.requestRender()};if(this.isBuffer)this.img=e,this.loaded=!0;else if(this.isVideo){if(this.img=document.createElement("video"),this.img.preload="auto",this.img.playsInline=!0,this.img.currentTime=.01,typeof e!="string"){var o=new FileReader;o.readAsDataURL(new Blob([e],{type:"video/mp4"}));let 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=Ib(e),this.img.onload=t,await new Promise(i=>{this.img.onload=()=>{t(),i(null)}})}getTexture(e,t=1008,o=1006){let i=this._cache[e]?.[t]?.[o];if(i)return i;{let a;return this.isBuffer?a=this.img.texture:this.isVideo?a=new ad.VideoTexture(this.img,void 0,e,e):a=new ad.Texture(this.img,void 0,e,e,o,t),this.loaded&&(a.needsUpdate=!0),this._cache[e]===void 0&&(this._cache[e]={}),this._cache[e][t]===void 0&&(this._cache[e][t]={}),this._cache[e][t][o]=a,a}}setNeedsUpdate(e){for(let t of Object.values(this._cache))for(let o of Object.values(t))for(let i of Object.values(o))i&&(i.needsUpdate=e)}disposeTextures(){for(let[e,t]of Object.entries(this._cache))for(let[o,i]of Object.entries(t))for(let[a,s]of Object.entries(i))s?.dispose(),this._cache[e]!==void 0&&this._cache[e][o]!==void 0&&(this._cache[e][o][a]=void 0)}dispose(){super.dispose(),this.disposeTextures()}};var Nr=class extends xs{};var dt=require("three");function or(n,r){return r.color(n)}function Mb(n,r){switch(n.type){case"fresnel":return RM(n,r);case"gradient":return LM(n,r);case"depth":return VM(n,r);case"normal":return zM(n,r);case"noise":return GM(n,r);case"rainbow":return FM(n,r);case"toon":return jM(n,r);case"outline":return kM(n,r);case"transmission":return UM(n,r);case"color":return BM(n,r);case"pattern":return HM(n,r)}}function _M(n){return{type:n.type}}function mo(n,r){let{alpha:e,mode:t,isMask:o}=n,i=typeof e=="string"?(Number(r.getVariable(e))??100)/100:e;return{..._M(n),alpha:i,mode:t,isMask:o}}function BM(n,r){return{...mo(n,r),color:or(n.color,r)}}function RM(n,r){let{bias:e,scale:t,intensity:o,factor:i,color:a}=n;return{...mo(n,r),color:or(a,r),bias:e,scale:t,intensity:o,factor:i}}function LM(n,r){let{gradientType:e,smooth:t,colors:o,steps:i,angle:a,offset:s,morph:l}=n;return{...mo(n,r),gradientType:e,smooth:t,colors:o.map(c=>new dt.Vector4(c[0],c[1],c[2],c[3])),num:o.length,steps:i,offset:new dt.Vector2(...s),morph:new dt.Vector2(...l),angle:a}}function VM(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{...mo(n,r),gradientType:e,near:t,far:o,isVector:i,isWorldSpace:a,origin:new dt.Vector3(...s),direction:l?new dt.Vector3(...l):new dt.Vector3(1,0,0),colors:c.map(d=>d!==void 0?new dt.Vector4(d[0],d[1],d[2],d[3]):new dt.Vector4(0,0,0,0)),steps:u.slice(0,c.length),smooth:p}}function zM(n,r){let{cnormal:e}=n;return{...mo(n,r),cnormal:new dt.Vector3(e[0],e[1],e[2])}}function GM(n,r){return{...mo(n,r),scale:n.scale,move:n.move,fA:new dt.Vector2(...n.fA),fB:new dt.Vector2(...n.fB),size:new dt.Vector3(...n.size),distortion:new dt.Vector2(...n.distortion),colorA:or(n.colorA,r),colorB:or(n.colorB,r),colorC:or(n.colorC,r),colorD:or(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 FM(n,r){return{...mo(n,r),filmThickness:n.filmThickness,movement:n.movement,wavelengths:new dt.Vector3(...n.wavelengths),noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,offset:new dt.Vector3(...n.offset)}}function jM(n,r){return{...mo(n,r),positioning:n.positioning,colors:n.colors.map(e=>new dt.Vector4(e[0],e[1],e[2],e[3])),num:n.colors.length,steps:n.steps,source:new dt.Vector3(...n.source),isWorldSpace:n.isWorldSpace,noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,shadowColor:or(n.shadowColor,r),offset:new dt.Vector3(...n.offset)}}function kM(n,r){return{...mo(n,r),outlineColor:or(n.outlineColor,r),contourColor:or(n.contourColor,r),outlineWidth:n.outlineWidth,contourWidth:n.contourWidth,outlineThreshold:n.outlineThreshold,contourThreshold:n.contourThreshold,outlineSmoothing:n.outlineSmoothing,contourFrequency:n.contourFrequency,contourDirection:new dt.Vector3(...n.contourDirection),positionalLines:n.positionalLines,compensation:n.compensation}}function UM(n,r){return{...mo(n,r),thickness:n.thickness,ior:n.ior,roughness:n.roughness}}function HM(n,r){return{...mo(n,r),style:n.style,projection:n.projection,axis:n.axis,blending:n.blending,offset:new dt.Vector2(...n.offset),colorA:or(n.colorA,r),colorB:or(n.colorB,r),frequency:new dt.Vector2(...n.frequency),size:n.size,variation:n.variation,smoothness:n.smoothness,zigzag:n.zigzag,rotation:n.rotation,vertical:new dt.Vector2(...n.vertical),horizontal:new dt.Vector2(...n.horizontal),sides:n.sides}}var Hn=class extends kt{};var sd=require("three");var WM={noise:["noiseType"],texture:["projection","axis","side"],video:["projection","axis","side"],displace:["noiseType"],light:["roughnessMap","bumpMap"],depth:["smooth","isWorldSpace","gradientType","isVector"],pattern:["style","projection","axis"]},qM={depth:["colors"]};function $M(n,r,e){if(r==="isMask")return!0;let t=WM[n.type],o=qM[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 nh(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("magFilter"in i){let a=t;a.magFilter=i.magFilter}if("rotation"in i&&e.uniforms[`f${e.id}_rotation`])return e.uniforms[`f${e.id}_rotation`].value=(i.rotation??0)*sd.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(ih(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 kn))switch(o=o||$M(e,i,a),s.constructor){case Ze:if(typeof a=="string"){let l=r.getColor(a);l&&(s.value=l);break}else{let l=a;s.value instanceof Hn?s.value=new kt(l.r,l.g,l.b,l.a):s.setRGBA(l);break}case vr:if(typeof a=="string"){let l=r.getColor(a);l&&(s.value=l);break}else{let l=a;s.value instanceof Hn?s.value=new kt(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 tr:{let l=a;s.value.setX(l[0]),s.value.setY(l[1]),s.value.setZ(l[2]);break}case pr:{nh(a,r,e);break}case ho:{s.value=a.map(l=>new sd.Vector4(...l));break}default:{s.value=a;break}}}return o}var Wn=(n,r,e)=>Math.max(0,Math.min(1,Number(r.getVariable(typeof n=="number"?n*100:n,e)??100)/100))??1,qn=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)ih(a,this,t,i)}get type(){return this.data.type}static create(r,e,t,o){if(t.type==="light")return fr.createLightLayer(r,e,t,o);if(t.type==="texture"||t.type==="video"){let i=t.type==="texture"?o.uiBuffer(t.texture.image)??o.image(t.texture.image):o.video(t.texture.video),a=new Oi(i,t.texture.wrapping,t.texture.minFilter??1008,t.texture.magFilter??1006),s=new ed(i),l=new td(t.texture.repeat,t.texture.offset,t.texture.rotation??0),c=new se(t.crop?1:0),u=new Ge(t.projection??0),p=new Ge(["x","y","z"].indexOf(t.axis)??0),d=new Ge(t.side??0),f=new vt(t.size?new Qe.Vector2(t.size[0],t.size[1]):new Qe.Vector2(100,100)),h=new se(t.blending??0),m=new se(Wn(t.alpha,o)),y=new Ge(t.mode??0),b=new It(t.isMask??!1),S=new Un(a,s,c,u,p,d,f,h,l,m,y,b),P=new Xe(S.calpha,"f");return new ht(r,e,t,{texture:a,textureSize:s,crop:c,projection:u,axis:p,side:d,size:f,blending:h,mat:l,alpha:m,mode:y,isMask:b},S,y,P,b,o)}else if(t.type==="matcap"){let i=o.image(t.texture.image),a=new Oi(i,t.texture.wrapping,t.texture.minFilter??1008,t.texture.magFilter??1006),s=new se(Wn(t.alpha,o)),l=new Ge(t.mode??0),c=new It(t.isMask??!1),u=new se((t.texture.rotation??0)*Qe.MathUtils.DEG2RAD),p=new cs(a,s,l,c,u),d=new Xe(p.calpha,"f");return new ht(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 tr(new Qe.Vector3(...t.offset)),a=new se(t.scale??10),s=new se(t.intensity??8),l=new se(t.movement??1),c=new Ge(t.noiseType??0),u=new Ge(t.voronoiStyle??0),p=new se(t.smoothness??.5),d=new se(t.seed??0),f=new se(t.highCut??1),h=new se(t.lowCut??0),m=new Ge(t.quality??1),y=new ys(s,l,i,u,p,d,f,h,m,a,c);return new zl(r,e,t,{offset:i,scale:a,intensity:s,movement:l,noiseType:c,voronoiStyle:u,smoothness:p,seed:d,highCut:f,lowCut:h,quality:m},y,o)}else throw new Error;else return KM(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||"noiseType"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?nh(o.props,t.shared,this):!0;return!1}dispose(){if(YM(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}},ht=class extends qn{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}},zl=class extends qn{constructor(e,t,o,i,a,s){super(e,t,o,i,s);this.position=a}},fr=class extends qn{constructor(e,t,o,i,a,s){super(e,t,o,a,s);this.node=i}static createLightLayer(e,t,o,i){let a,s=new se(Wn(o.alpha,i)),l=new Ge(o.mode),c=new se(o.bumpMapIntensity),u=new se(Wn(o.alphaOverride,i)),p;if(!o.visible)a=new ln,p={};else if(o.category==="lambert"){a=new Dl;let d=new Ze(i.color(o.emissive)??0),f=new It(o.occlusion??!0);p={emissive:d,occlusion:f},a.emissive=d,a.occlusion=f}else if(o.category==="toon"){a=new Vl;let d=new se(o.shininess??30),f=new Ze(i.color(o.specular)??1118481);p={shininess:d,specular:f},a.shininess=d,a.specular=f}else if(o.category==="physical"){a=new Rl;let d=new se(o.roughness??.3),f=new se(o.metalness??0),h=new se(o.reflectivity??.5),m=new It(o.occlusion??!0);p={roughness:d,metalness:f,reflectivity:h,occlusion:m},a.roughness=d,a.metalness=f,a.reflectivity=h,a.occlusion=m}else{a=new Bl;let d=new se(o.shininess??30),f=new Ze(o.specular!==void 0?i.color(o.specular)??1118481:1118481),h=new It(o.occlusion??!0);p={shininess:d,specular:f,occlusion:h},a.shininess=d,a.specular=f,a.occlusion=h}return a.alpha=new se(1),a.shadingAlpha=s,a.shadingBlend=l,a.bumpMapIntensity=c,a.alphaOverride=u,p.alpha=a.shadingAlpha,p.mode=a.shadingBlend,p.bumpMapIntensity=a.bumpMapIntensity,p.alphaOverride=a.alphaOverride,new fr(e,t,o,a,p,i)}get category(){return this.node.category}};function YM(n){let r=n instanceof qn?n.type:n;return r==="texture"||r==="video"||r==="displace_map"||r==="matcap"}function kr(n){return{alpha:new se(n.alpha??1),mode:new Ge(n.mode??0),isMask:new It(n.isMask??!1)}}function XM(n,r,e,t,o){switch(n.type){case"color":{let i=new Ze(t.color??Et),a=kr(t),s=new Ai(i,a.alpha),l=new Xe(s.calpha,"f");return new ht(r,e,n,{color:i,...a},s,a.mode,l,a.isMask,o)}case"fresnel":{let i=new Ze(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=kr(t),p=new El(i,a,s,l,c,u.alpha,u.mode,u.isMask),d=new Xe(p.calpha,"f");return new ht(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 tr(t.wavelengths??new Qe.Vector3(0,0,0)),l=new se(t.noiseStrength??0),c=new se(t.noiseScale??1),u=new tr(t.offset??new Qe.Vector3(0,0,0)),p=kr(t),d=new fs(i,a,s,l,c,u,p.alpha,p.isMask),f=new Xe(d.calpha,"f");return new ht(r,e,n,{filmThickness:i,movement:a,wavelengths:s,noiseStrength:l,noiseScale:c,offset:u,...p},d,p.mode,f,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=Ne.transmissionSize,c=Ne.transmissionRenderTarget,u=Ne.transmissionRenderTargetDepth,p=window.innerWidth,d=window.innerHeight,f=p>=d?new vt(d/p,1):new vt(1,p/d),h=kr(t),m=new ms(i,a,s,l,c,u,f,h.alpha),y=new Xe(m.calpha,"f");return new ht(r,e,n,{thickness:i,ior:a,roughness:s,aspectRatio:f,...h},m,h.mode,y,h.isMask,o)}case"toon":{let i=new Ge(t.positioning??0),a;t.colors?a=new ho(t.colors.length,t.colors):(a=new ho(10,new Qe.Vector4(0,0,0,1)),a.value[1]=new Qe.Vector4(1,1,1,1));let s;t.steps?s=new fo(t.steps.length,t.steps):(s=new fo(10,1),s.value[0]=0);let l=new tr(t.source??new Qe.Vector3(0,0,0)),c=new It(t.isWorldSpace??!0),u=new se(t.noiseStrength??0),p=new se(t.noiseScale??1),d=new vr(t.shadowColor),f=new tr(t.offset??new Qe.Vector3(0,0,0)),h=kr(t),m=new hs(i,a,s,l,c,u,p,d,f,h.alpha),y=new Xe(m.calpha,"f");return new ht(r,e,n,{positioning:i,colors:a,steps:s,source:l,isWorldSpace:c,noiseStrength:u,noiseScale:p,shadowColor:d,offset:f,...h},m,h.mode,y,h.isMask,o)}case"outline":{let i=new Ze(t.outlineColor??16777215),a=new Ze(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),f=new tr(t.contourDirection??new Qe.Vector3(0,1,0)),h=new It(t.positionalLines??!1),m=new It(t.compensation??!0),y=Ne.normalRenderTarget,b=Ne.normalRenderTargetDepth,S=Ne.pixelRatioNode,P=Ne.resolution,C=kr(t),v=new ds(i,a,s,l,c,u,p,d,f,h,m,P,y,b,S,C.alpha),A=new Xe(v.calpha,"f");return new ht(r,e,n,{outlineColor:i,contourColor:a,outlineWidth:s,contourWidth:l,outlineThreshold:c,contourThreshold:u,outlineSmoothing:p,contourFrequency:d,contourDirection:f,positionalLines:h,compensation:m,...C},v,C.mode,A,C.isMask,o)}case"depth":{let i=new Ge(t.gradientType??0),a=new It(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 tr(t.origin??new Qe.Vector3),d=new tr(t.direction??new Qe.Vector3),f;t.colors?f=new ho(t.colors.length,t.colors):(f=new ho(2,new Qe.Vector4(0,0,0,1)),f.value[1]=new Qe.Vector4(1,1,1,1));let h;t.steps?h=new fo(t.steps.length,t.steps):(h=new fo(2,1),h.value[0]=0);let m=kr(t),y=new ss(i,a,s,l,c,u,p,d,f,h,m.alpha,m.isMask),b=new Xe(y.calpha,"f");return new ht(r,e,n,{gradientType:i,smooth:a,near:s,far:l,isVector:c,isWorldSpace:u,origin:p,direction:d,colors:f,steps:h,...m},y,m.mode,b,m.isMask,o)}case"noise":{let i=new se(t.scale??1),a=new tr(t.size??new Qe.Vector3(100,100,100)),s=new se(t.move??1),l=new vt(t.fA??new Qe.Vector2(1.7,9.2)),c=new vt(t.fB??new Qe.Vector2(8.3,2.8)),u=new vt(t.distortion??new Qe.Vector2(1,1)),p=new vr(t.colorA),d=new vr(t.colorB),f=new vr(t.colorC),h=new vr(t.colorD),m=new Ge(t.noiseType??0),y=new Ge(t.voronoiStyle??0),b=new se(t.highCut??1),S=new se(t.lowCut??0),P=new se(t.smoothness??.5),C=new se(t.seed??.5),v=new Ge(t.quality??1),A=kr(t),T=new us(i,a,s,l,c,u,p,d,f,h,A.alpha,m,A.isMask,y,b,S,P,C,v),g=new Xe(T.calpha,"f");return new ht(r,e,n,{scale:i,size:a,move:s,fA:l,fB:c,distortion:u,colorA:p,colorB:d,colorC:f,colorD:h,noiseType:m,...A,voronoiStyle:y,highCut:b,lowCut:S,smoothness:P,seed:C,quality:v},T,A.mode,g,A.isMask,o)}case"normal":{let i=new tr(t.cnormal??new Qe.Vector3(1,1,1)),a=kr(t),s=new ns(i,a.alpha),l=new Xe(s.calpha,"f");return new ht(r,e,n,{cnormal:i,...a},s,a.mode,l,a.isMask,o)}case"gradient":{let i=new Ge(t.gradientType??0),a=new It(t.smooth??!1),s;t.colors?s=new ho(t.colors.length,t.colors):(s=new ho(10,new Qe.Vector4(0,0,0,1)),s.value[1]=new Qe.Vector4(1,1,1,1));let l;t.steps?l=new fo(t.steps.length,t.steps):(l=new fo(10,1),l.value[0]=0);let c=new vt(t.offset??new Qe.Vector2(0,0)),u=new vt(t.morph??new Qe.Vector2(0,0)),p=new se(t.angle??0),d=kr(t),f=new ls(i,a,s,l,c,u,p,d.alpha,d.isMask),h=new Xe(f.calpha,"f");return new ht(r,e,n,{gradientType:i,smooth:a,colors:s,steps:l,offset:c,morph:u,angle:p,...d},f,d.mode,h,d.isMask,o)}case"pattern":{let i=new Ge(t.style??0),a=new Ge(t.projection??0),s=new Ge(["x","y","z"].indexOf(t.axis)??0),l=new se(t.blending??0),c=new vt(t.offset??new Qe.Vector2(0,0)),u=new vr(t.colorA),p=new vr(t.colorB),d=new vt(t.frequency??new Qe.Vector2(10,10)),f=new se(t.size??.5),h=new se(t.variation??0),m=new se(t.smoothness??.5),y=new se(t.zigzag??0),b=new se(t.rotation??0),S=new vt(t.vertical??new Qe.Vector2(0,1)),P=new vt(t.horizontal??new Qe.Vector2(0,1)),C=new Ge(t.sides??6),v=kr(t),A=new ps(i,a,s,l,c,u,p,d,f,h,m,y,b,S,P,C,v.alpha,v.isMask),T=new Xe(A.calpha,"f");return new ht(r,e,n,{style:i,projection:a,axis:s,blending:l,offset:c,colorA:u,colorB:p,frequency:d,size:f,variation:h,smoothness:m,zigzag:y,rotation:b,vertical:S,horizontal:P,sides:C,...v},A,v.mode,T,v.isMask,o)}default:{let i=new Ze(1,0,0,1),a=kr(t),s=new Ai(i,a.alpha),l=new Xe(s.calpha,"f");return new ht(r,e,n,{color:i,...a},s,a.mode,l,a.isMask,o)}}}function KM(n,r,e,t){let o=Mb(e,t);return XM(e,n,r,o,t)}function ih(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=Wn(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 ld(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 wr=class extends Nb.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""}},cd=class extends wr{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()}},Ii=class extends wr{constructor(e,t,o=!0){super();this.data=e;this.allowVariableSaves=o;this.layerIdGen=0;this.flavors=[];this.masks={};this.type="NodeMaterial";this.updaters=[],this.needsJitter=t.shared.needsJitter,tt.startContext(this),this.reset0(e,t),tt.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 cd(e,t,o,this),a.needsJitter=this.needsJitter,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){tt.startContext(this),(this.data!==e||o)&&this.reset0(e,t),tt.endContext(this)}reset0(e,t){this.data=e;let o=e.layers??Yt.defaultTwoLayerData("phong").layers;try{this.layers=o.map(i=>qn.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=ld(e,t.shared),this.saveVariableLocations(t)}onVariableUpdate(e,t,o){if(e[0]==="alphaOverride")this.transparent=ld(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=ld(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 fr),this.lightLayer===void 0&&(this.lightLayer=new fr(0,"",{...Bt.defaultData("light","phong"),visible:!1},new ln,{},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 fr);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 ht&&s.color instanceof Un&&(s.uuid===o&&(e.node.bumpMap=s.color),s.uuid===i&&(e.node.roughnessMap=s.color))}}updateByOp(e,t,o){if(tt.startContext(this),t!==void 0?this.data=t:t=this.data,this.transparent=ld(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:Wn(e.props.alpha,i,["material",this.uuid,"layer",a,"alpha"])}:c={...e.props,alphaOverride:Wn(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);tt.endContext(this)}applyMasks(){for(let e=0;e<this.layers.length;++e){let t=this.layers[e];t instanceof ht?t.color.mask=void 0:t instanceof fr&&(t.node.mask=void 0)}for(let e=0;e<this.layers.length;++e){let t=this.layers[e];if(t instanceof ht&&t.isMask.value&&t.data.visible&&e>0){let o=e-1,i=this.layers[o];i instanceof fr?i.node.mask=new Kt(t.color,t.alpha,Kt.MUL):i instanceof ht&&(i.isMask.value||(i.color.mask=new Kt(t.color,t.alpha,Kt.MUL)))}}}blendColors(){let e=this.layers.findIndex(o=>o instanceof ht),t=this.layers.findIndex(o=>o instanceof fr);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 ht){if(a.isMask.value)continue;o=new os(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 fr);if(this.layers.length>t+1){for(let o=t+1;o<this.layers.length;++o){let i=this.layers[o];if(i instanceof ht){if(i.isMask.value)continue;e=new os(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 zl);if(e.length>0){let t=e[0].position;for(let o=1;o<e.length;++o)e[o]&&(t=new Kt(t,e[o].position,Kt.ADD),t=new Kt(t,new se(.5).setReadonly(!0),Kt.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 ts;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 ht){let t=e.params.texture;if(t instanceof Oi&&!t.image.loaded)return!1}return!0}};Object.defineProperties(wr.prototype,{properties:{get:function(){return this.fragment.properties}}});var Mi=class extends Ii{constructor(r,e,t){super(r,e,!1),this.uuid=t,this.allowVariableSaves=!0,this.saveVariableLocations(e)}};var Db=new Map;function _b(n){if(typeof n=="string")return n;let r=Db.get(n);return r||(r={url:URL.createObjectURL(new Blob([n]))},Db.set(n,r)),r.url}var QM,Bb=new Promise(n=>{QM=n});var Rb;Bb.then(n=>Rb=n);var Ei=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:_b(r),format:"wav"},this.sound=new Rb.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"),ud=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,b,S){let P=m.x,C=y.x,v=b.x,A=S.x,T=m.y,g=y.y,D=b.y,E=S.y,M=(A-v)*(T-D)-(E-D)*(P-v),N=(C-P)*(T-D)-(g-T)*(P-v),_=(E-D)*(C-P)-(A-v)*(g-T),B=M/_,V=N/_;if(_===0&&M!==0||B<=0||B>=1||V<0||V>1)return null;if(M===0&&_===0){for(let k=0;k<2;k++)if(i(k===0?b:S,m,y),t.loc===e.ORIGIN){let L=k===0?b:S;return{x:L.x,y:L.y,t:t.t}}else if(t.loc===e.BETWEEN){let L=+(P+t.t*(C-P)).toPrecision(10),W=+(T+t.t*(g-T)).toPrecision(10);return{x:L,y:W,t:t.t}}return null}else{for(let W=0;W<2;W++)if(i(W===0?b:S,m,y),t.loc===e.ORIGIN){let F=W===0?b:S;return{x:F.x,y:F.y,t:t.t}}let k=+(P+B*(C-P)).toPrecision(10),L=+(T+B*(g-T)).toPrecision(10);return{x:k,y:L,t:B}}}function i(m,y,b){let S=b.x-y.x,P=b.y-y.y,C=m.x-y.x,v=m.y-y.y,A=S*v-C*P;if(m.x===y.x&&m.y===y.y){t.loc=e.ORIGIN,t.t=0;return}if(m.x===b.x&&m.y===b.y){t.loc=e.DESTINATION,t.t=1;return}if(A<-Number.EPSILON){t.loc=e.LEFT;return}if(A>Number.EPSILON){t.loc=e.RIGHT;return}if(S*C<0||P*v<0){t.loc=e.BEHIND;return}if(Math.sqrt(S*S+P*P)<Math.sqrt(C*C+v*v)){t.loc=e.BEYOND;return}let T;S!==0?T=C/S:T=v/P,t.loc=e.BETWEEN,t.t=T}function a(m,y){let b=[],S=[];for(let P=1;P<m.length;P++){let C=m[P-1],v=m[P];for(let A=1;A<y.length;A++){let T=y[A-1],g=y[A],D=o(C,v,T,g);D!==null&&b.find(E=>E.t<=D.t+Number.EPSILON&&E.t>=D.t-Number.EPSILON)===void 0&&(b.push(D),S.push(new Ut.Vector2(D.x,D.y)))}}return S}function s(m,y,b){let S=new Ut.Vector2;y.getCenter(S);let P=[];return b.forEach(C=>{C.boundingBox.containsPoint(S)&&a(m,C.points).forEach(A=>{P.push({identifier:C.identifier,isCW:C.isCW,point:A})})}),P.sort((C,v)=>C.point.x-v.point.x),P}function l(m,y,b,S,P){(P==null||P==="")&&(P="nonzero");let C=new Ut.Vector2;m.boundingBox.getCenter(C);let v=[new Ut.Vector2(b,C.y),new Ut.Vector2(S,C.y)],A=s(v,m.boundingBox,y);A.sort((N,_)=>N.point.x-_.point.x);let T=[],g=[];A.forEach(N=>{N.identifier===m.identifier?T.push(N):g.push(N)});let D=T[0].point.x,E=[],M=0;for(;M<g.length&&g[M].point.x<D;)E.length>0&&E[E.length-1]===g[M].identifier?E.pop():E.push(g[M].identifier),M++;if(E.push(m.identifier),P==="evenodd"){let N=E.length%2===0,_=E[E.length-2];return{identifier:m.identifier,isHole:N,for:_}}else if(P==="nonzero"){let N=!0,_=null,B=null;for(let V=0;V<E.length;V++){let k=E[V];y[k]&&(N?(B=y[k].isCW,N=!1,_=k):B!==y[k].isCW&&(B=y[k].isCW,N=!0))}return{identifier:m.identifier,isHole:N,for:_}}else console.warn('fill-rule: "'+P+'" is currently not implemented.')}let c=0,u=999999999,p=-999999999,d=[];this.subPaths.forEach(m=>{let y=m.getPoints(),b=-999999999,S=999999999,P=-999999999,C=999999999;for(let v=0;v<y.length;v++){let A=y[v];A.y>b&&(b=A.y),A.y<S&&(S=A.y),A.x>P&&(P=A.x),A.x<C&&(C=A.x)}p<=P&&(p=P+1),u>=C&&(u=C-1),y.length&&d.push({curves:m.curves,points:y,isCW:Ut.ShapeUtils.isClockWise(y),identifier:c++,boundingBox:new Ut.Box2(new Ut.Vector2(C,S),new Ut.Vector2(P,b))})});let f=d.map(m=>l(m,d,u,p,this.userData?.style.fillRule)),h=[];return d.forEach(m=>{let y=f[m.identifier];if(y&&!y.isHole){let b=new Ut.Shape;b.curves=m.curves,f.filter(P=>P?.isHole&&P.for===m.identifier).forEach(P=>{if(P){let C=d[P.identifier],v=new Ut.Path;v.curves=C.curves,b.holes.push(v)}}),h.push(b)}}),h}};var ah=!1,Vb,sh=new Promise(n=>{Vb=n}),Lb=!1;var dd;function zb(){if(ah=!0,Lb)return;if(dd)return dd;async function n(){let e=await import("./opentype.js");Vb(e),Lb=!0}return dd=n(),dd}var Gl=class{async load(r,e,t=()=>{}){let{load:o}=await sh;o(r,(i,a)=>{i||!a?t(i??"Something went wrong"):e(a)})}async parse(r){let{parse:e,Bidi:t}=await sh;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 ZM(n){return await(await fetch(n)).arrayBuffer()}var JM=new Gl;async function lh(n){let r,e,t=!1;if(n.url?(r=await ZM(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(ah){let o=await JM.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 bs=require("three");function eE(n,r){return r.state.glyphIndex===n||r.state.fina===n||r.state.medi===n||r.state.init===n}var pd=class{constructor(r){this._arrayBuffer=new ArrayBuffer(1);this._isLoaded=!1;this._intercepted=!1;this._isUserFont=r.isUserFont??!1,this._loadingPromise=lh(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=lh(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(eE(u,d)||l)a.push({char:p,index:u,replacements:[d.state.glyphIndex],replacementChars:[d.char]}),s++;else{let f=d.char,h="",m=[d.state.glyphIndex],y=[],b=!1;for(;!b;)s++,h=e.charAt(s),f+=h,m.push(r.charToGlyphIndex(h)),y=r.stringToGlyphs(f),y.length===1&&y[0].index===u&&(b=!0),s>e.length&&(b=!0);a.push({char:p,index:u,replacements:m,replacementChars:Array.from(f)}),s++}}return a}generateShapes(r,e){if(!this._isLoaded)return;let t=this.font,o=e.fontSize/this.unitsPerEm,i=e.fontSize*e.lineHeight,a=r.map(S=>this.getTextWidth(S,e)),s=e.width,l=this.getCharWidth(`
2280
+ `,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),f=[],h=r.map(S=>[]),m=r.map(S=>[]),y;for(let S=0;S<r.length;S++){let P=r[S],C={features:{liga:!0}},v=[];try{v=t.stringToGlyphs(P,C)}catch(T){console.warn(T)}p=this.getLineInitialOffsetX(a[S],s,e.horizontalAlign,P,l);let A=[];try{A=this.reverseLigaturesTable(t,P,v)}catch(T){console.warn(T)}u=this.computeSpaceWidthForLine(r,S,e);for(let T=0;T<v.length;T++){let g=v[T],D=g.index===0?`
2281
+ `:g.unicode?String.fromCharCode(g.unicode):void 0,E=A[T],M=0,N=0;T===0&&e.horizontalAlign===2&&g.leftSideBearing!==void 0&&(N=-g.leftSideBearing*o),y&&(M=t.getKerningValue(g,y)*o),p+=N+M;let _=0;if(D===`
2282
+ `)_=c;else if(D===" ")_=u;else{let B=this.createPath(g,o,p,d,e);B&&(_=B.offsetX-(M+N),f.push(B.path))}if(E.replacements.length===1)m[S].push([p,d]),h[S].push(_);else{let B=E.replacements.map(W=>(t.glyphs.get(W).advanceWidth??0)*o),V=B.reduce((W,F)=>W+=F,0),k=B.map(W=>W/V),L=p;for(let W=0;W<k.length;W++){let F=_*k[W];m[S].push([L,d]),h[S].push(F),L+=F}}p+=_,y=g}d-=i}let b=[];for(let S=0,P=f.length;S<P;S++)b.push(...f[S].toShapes());return{shapes:b,charWidths:h,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(`
2283
+ `)>=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 ud,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=tE(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 tE(n){if(n.length){let r=n[0];if(r instanceof bs.LineCurve)return r.v1;if(r instanceof bs.CubicBezierCurve||r instanceof bs.QuadraticBezierCurve)return r.v0}}var ch=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()}},Fl=class extends ch{constructor(e){super();this.flatShading=e}disposeObject(e){e.dispose()}createObject(e,t,o){let i=an(e,t,this.flatShading,o);return i.computeBoundingSphere(),i}};var Gb={markNeedsUpdateRendererDirty:()=>{}};var dh=require("three");var fd=1e3,Fb=512*fd;function rE(n,r){let e=typeof n;return!!((r==="string"||r==="number")&&e===r||r==="boolean"&&(n==="true"||n==="false"||n===!0||n===!1)||r==="image"&&e==="string"&&n.startsWith("http"))}var jb="https://hooks.spline.design",oE=`${jb}/events?hashFile=`,IK=`${jb}/`,hd=class{constructor(r,e){this.id=r;this.userWebhook=e;this.result=void 0;this._connected=!1;this.emitter=nn();this.reconnectWaitFor=fd;this._onError=r=>{this.eventSource?.removeEventListener("message",this._onMessage),this.eventSource?.removeEventListener("error",this._onError),this.eventSource?.removeEventListener("open",this._onConnected),this._scheduleReconnect()};this._onConnected=r=>{clearTimeout(this.scheduledReconnectHandle),this.reconnectWaitFor=fd,this._connected=!0};this._onDisconnected=()=>{clearTimeout(this.scheduledReconnectHandle),this.reconnectWaitFor=fd,this._connected=!1};this._onMessage=r=>{let e=r.data,t;try{t=JSON.parse(e)}catch(o){console.error("Error parsing webhook message",o)}if(t){let o=!1;this.userWebhook.parametersSchemas.forEach(({data:i})=>{t[i.name]!==void 0&&rE(t[i.name],i.type)&&(this.result===void 0&&(this.result={}),this.result[i.name]=t[i.name],o=!0)}),o&&this.emitter.emit("message",{userWebhookId:this.id})}}}connect(){clearTimeout(this.scheduledReconnectHandle),this.userWebhook.url&&(this.eventSource=new EventSource(oE+this.userWebhook.url),this.eventSource.addEventListener("message",this._onMessage),this.eventSource.addEventListener("error",this._onError),this.eventSource.addEventListener("open",this._onConnected))}disconnect(){this.eventSource?.removeEventListener("message",this._onMessage),this.eventSource?.removeEventListener("error",this._onError),this.eventSource?.removeEventListener("open",this._onConnected),this.eventSource?.close(),this._onDisconnected(),clearTimeout(this.scheduledReconnectHandle)}_scheduleReconnect(){this.reconnectWaitFor*=2,this.reconnectWaitFor>Fb&&(this.reconnectWaitFor=Fb),clearTimeout(this.scheduledReconnectHandle),this.scheduledReconnectHandle=setTimeout(()=>{this.scheduledReconnectHandle=void 0,this.connect()},this.reconnectWaitFor)}update(r){this.userWebhook=r}dispose(){this._connected&&this.disconnect()}get connected(){return this._connected}on(r,e){this.emitter.on(r,e)}off(r,e){this.emitter.off(r,e)}getParametersKeys(){return this.userWebhook.parametersSchemas.map(r=>r.data.name)}getParameterValue(r){if(this.getParametersKeys().includes(r)){if(this.result)return this.result?.[r];for(let t of this.userWebhook.parametersSchemas)if(t.data.name===r)return bu.defaultParameterValueByType(t.data.type)}}};var nE=globalThis.atob,iE=globalThis.btoa,Ur=class{static floatTo16BitPCM(r){let e=new ArrayBuffer(r.length*2),t=new DataView(e),o=0;for(let i=0;i<r.length;i++,o+=2){let a=Math.max(-1,Math.min(1,r[i]));t.setInt16(o,a<0?a*32768:a*32767,!0)}return e}static base64ToArrayBuffer(r){let e=nE(r),t=e.length,o=new Uint8Array(t);for(let i=0;i<t;i++)o[i]=e.charCodeAt(i);return o.buffer}static arrayBufferToBase64(r){r instanceof Float32Array?r=this.floatTo16BitPCM(r):r instanceof Int16Array&&(r=r.buffer);let e="",t=new Uint8Array(r),o=32768;for(let i=0;i<t.length;i+=o){let a=t.subarray(i,i+o);e+=String.fromCharCode.apply(null,a)}return iE(e)}static mergeInt16Arrays(r,e){if(r instanceof ArrayBuffer&&(r=new Int16Array(r)),e instanceof ArrayBuffer&&(e=new Int16Array(e)),!(r instanceof Int16Array)||!(e instanceof Int16Array))throw new Error("Both items must be Int16Array");let t=new Int16Array(r.length+e.length);for(let o=0;o<r.length;o++)t[o]=r[o];for(let o=0;o<e.length;o++)t[r.length+o]=e[o];return t}static generateId(r,e=21){let t="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz",o=Array(e-r.length).fill(0).map(i=>t[Math.floor(Math.random()*t.length)]).join("");return`${r}${o}`}};var aE=n=>new Promise(r=>setTimeout(()=>r(),n)),vs=class{constructor(){this.eventHandlers={},this.nextEventHandlers={}}clearEventHandlers(){return this.eventHandlers={},this.nextEventHandlers={},!0}on(r,e){return this.eventHandlers[r]=this.eventHandlers[r]||[],this.eventHandlers[r].push(e),e}onNext(r,e){return this.nextEventHandlers[r]=this.nextEventHandlers[r]||[],this.nextEventHandlers[r].push(e),e}off(r,e){let t=this.eventHandlers[r]||[];if(e){let o=t.indexOf(e);if(o===-1)throw new Error(`Could not turn off specified event listener for "${r}": not found as a listener`);t.splice(o,1)}else delete this.eventHandlers[r];return!0}offNext(r,e){let t=this.nextEventHandlers[r]||[];if(e){let o=t.indexOf(e);if(o===-1)throw new Error(`Could not turn off specified next event listener for "${r}": not found as a listener`);t.splice(o,1)}else delete this.nextEventHandlers[r];return!0}async waitForNext(r,e=null){let t=Date.now(),o;for(this.onNext(r,i=>o=i);!o;){if(e&&Date.now()-t>e)return null;await aE(1)}return o}dispatch(r,e){let t=[].concat(this.eventHandlers[r]||[]);for(let i of t)i(e);let o=[].concat(this.nextEventHandlers[r]||[]);for(let i of o)i(e);return delete this.nextEventHandlers[r],!0}};var jl=class extends vs{constructor({url:r,apiKey:e,dangerouslyAllowAPIKeyInBrowser:t,debug:o}={}){if(super(),this.defaultUrl="wss://api.openai.com/v1/realtime",this.url=r||this.defaultUrl,this.apiKey=e||null,this.debug=!!o,this.ws=null,globalThis.document&&this.apiKey&&!t)throw new Error('Can not provide API key in the browser without "dangerouslyAllowAPIKeyInBrowser" set to true')}isConnected(){return!!this.ws}log(...r){let t=[`[Websocket/${new Date().toISOString()}]`].concat(r).map(o=>typeof o=="object"&&o!==null?JSON.stringify(o,null,2):o);return this.debug&&console.log(...t),!0}async connect({model:r}={model:"gpt-4o-realtime-preview-2024-10-01"}){if(!this.apiKey&&this.url===this.defaultUrl&&console.warn(`No apiKey provided for connection to "${this.url}"`),this.isConnected())throw new Error("Already connected");if(globalThis.document){this.apiKey&&console.warn("Warning: Connecting using API key in the browser, this is not recommended");let e=globalThis.WebSocket,t=new e(`${this.url}${r?`?model=${r}`:""}`,["realtime",`openai-insecure-api-key.${this.apiKey}`,"openai-beta.realtime-v1"]);return t.addEventListener("message",o=>{let i=JSON.parse(o.data);this.receive(i.type,i)}),new Promise((o,i)=>{let a=()=>{this.disconnect(t),i(new Error(`Could not connect to "${this.url}"`))};t.addEventListener("error",a),t.addEventListener("open",()=>{this.log(`Connected to "${this.url}"`),t.removeEventListener("error",a),t.addEventListener("error",()=>{this.disconnect(t),this.log(`Error, disconnected from "${this.url}"`),this.dispatch("close",{error:!0})}),t.addEventListener("close",()=>{this.disconnect(t),this.log(`Disconnected from "${this.url}"`),this.dispatch("close",{error:!1})}),this.ws=t,o(!0)})})}}disconnect(r){if(!r||this.ws===r)return this.ws&&this.ws.close(),this.ws=null,!0}receive(r,e){return this.log("received:",r,e),this.dispatch(`server.${r}`,e),this.dispatch("server.*",e),!0}send(r,e){if(!this.isConnected())throw new Error("RealtimeAPI is not connected");if(e=e||{},typeof e!="object")throw new Error("data must be an object");let t={event_id:Ur.generateId("evt_"),type:r,...e};return this.dispatch(`client.${r}`,t),this.dispatch("client.*",t),this.log("sent:",r,t),this.ws.send(JSON.stringify(t)),!0}};var kl=class{constructor(){go(this,"defaultFrequency",24e3);go(this,"EventProcessors",{"conversation.item.created":r=>{let{item:e}=r,t=JSON.parse(JSON.stringify(e));if(this.itemLookup[t.id]||(this.itemLookup[t.id]=t,this.items.push(t)),t.formatted={},t.formatted.audio=new Int16Array(0),t.formatted.text="",t.formatted.transcript="",this.queuedSpeechItems[t.id]&&(t.formatted.audio=this.queuedSpeechItems[t.id].audio,delete this.queuedSpeechItems[t.id]),t.content){let o=t.content.filter(i=>["text","input_text"].includes(i.type));for(let i of o)t.formatted.text+=i.text}return this.queuedTranscriptItems[t.id]&&(t.formatted.transcript=this.queuedTranscriptItems.transcript,delete this.queuedTranscriptItems[t.id]),t.type==="message"?t.role==="user"?(t.status="completed",this.queuedInputAudio&&(t.formatted.audio=this.queuedInputAudio,this.queuedInputAudio=null)):t.status="in_progress":t.type==="function_call"?(t.formatted.tool={type:"function",name:t.name,call_id:t.call_id,arguments:""},t.status="in_progress"):t.type==="function_call_output"&&(t.status="completed",t.formatted.output=t.output),{item:t,delta:null}},"conversation.item.truncated":r=>{let{item_id:e,audio_end_ms:t}=r,o=this.itemLookup[e];if(!o)throw new Error(`item.truncated: Item "${e}" not found`);let i=Math.floor(t*this.defaultFrequency/1e3);return o.formatted.transcript="",o.formatted.audio=o.formatted.audio.slice(0,i),{item:o,delta:null}},"conversation.item.deleted":r=>{let{item_id:e}=r,t=this.itemLookup[e];if(!t)throw new Error(`item.deleted: Item "${e}" not found`);delete this.itemLookup[t.id];let o=this.items.indexOf(t);return o>-1&&this.items.splice(o,1),{item:t,delta:null}},"conversation.item.input_audio_transcription.completed":r=>{let{item_id:e,content_index:t,transcript:o}=r,i=this.itemLookup[e],a=o||" ";return i?(i.content[t].transcript=o,i.formatted.transcript=a,{item:i,delta:{transcript:o}}):(this.queuedTranscriptItems[e]={transcript:a},{item:null,delta:null})},"input_audio_buffer.speech_started":r=>{let{item_id:e,audio_start_ms:t}=r;return this.queuedSpeechItems[e]={audio_start_ms:t},{item:null,delta:null}},"input_audio_buffer.speech_stopped":(r,e)=>{let{item_id:t,audio_end_ms:o}=r;this.queuedSpeechItems[t]||(this.queuedSpeechItems[t]={audio_start_ms:o});let i=this.queuedSpeechItems[t];if(i.audio_end_ms=o,e){let a=Math.floor(i.audio_start_ms*this.defaultFrequency/1e3),s=Math.floor(i.audio_end_ms*this.defaultFrequency/1e3);i.audio=e.slice(a,s)}return{item:null,delta:null}},"response.created":r=>{let{response:e}=r;return this.responseLookup[e.id]||(this.responseLookup[e.id]=e,this.responses.push(e)),{item:null,delta:null}},"response.output_item.added":r=>{let{response_id:e,item:t}=r,o=this.responseLookup[e];if(!o)throw new Error(`response.output_item.added: Response "${e}" not found`);return o.output.push(t.id),{item:null,delta:null}},"response.output_item.done":r=>{let{item:e}=r;if(!e)throw new Error('response.output_item.done: Missing "item"');let t=this.itemLookup[e.id];if(!t)throw new Error(`response.output_item.done: Item "${e.id}" not found`);return t.status=e.status,{item:t,delta:null}},"response.content_part.added":r=>{let{item_id:e,part:t}=r,o=this.itemLookup[e];if(!o)throw new Error(`response.content_part.added: Item "${e}" not found`);return o.content.push(t),{item:o,delta:null}},"response.audio_transcript.delta":r=>{let{item_id:e,content_index:t,delta:o}=r,i=this.itemLookup[e];if(!i)throw new Error(`response.audio_transcript.delta: Item "${e}" not found`);return i.content[t].transcript+=o,i.formatted.transcript+=o,{item:i,delta:{transcript:o}}},"response.audio.delta":r=>{let{item_id:e,content_index:t,delta:o}=r,i=this.itemLookup[e];if(!i)throw new Error(`response.audio.delta: Item "${e}" not found`);let a=Ur.base64ToArrayBuffer(o),s=new Int16Array(a);return i.formatted.audio=Ur.mergeInt16Arrays(i.formatted.audio,s),{item:i,delta:{audio:s}}},"response.text.delta":r=>{let{item_id:e,content_index:t,delta:o}=r,i=this.itemLookup[e];if(!i)throw new Error(`response.text.delta: Item "${e}" not found`);return i.content[t].text+=o,i.formatted.text+=o,{item:i,delta:{text:o}}},"response.function_call_arguments.delta":r=>{let{item_id:e,delta:t}=r,o=this.itemLookup[e];if(!o)throw new Error(`response.function_call_arguments.delta: Item "${e}" not found`);return o.arguments+=t,o.formatted.tool.arguments+=t,{item:o,delta:{arguments:t}}}});this.clear()}clear(){return this.itemLookup={},this.items=[],this.responseLookup={},this.responses=[],this.queuedSpeechItems={},this.queuedTranscriptItems={},this.queuedInputAudio=null,!0}queueInputAudio(r){return this.queuedInputAudio=r,r}processEvent(r,...e){if(!r.event_id)throw console.error(r),new Error('Missing "event_id" on event');if(!r.type)throw console.error(r),new Error('Missing "type" on event');let t=this.EventProcessors[r.type];if(!t)throw new Error(`Missing conversation event processor for "${r.type}"`);return t.call(this,r,...e)}getItem(r){return this.itemLookup[r]||null}getItems(){return this.items.slice()}};var Ss=class extends vs{constructor({url:r,apiKey:e,dangerouslyAllowAPIKeyInBrowser:t,debug:o}={}){super(),this.defaultSessionConfig={modalities:["text","audio"],instructions:"",voice:"alloy",input_audio_format:"pcm16",output_audio_format:"pcm16",input_audio_transcription:null,turn_detection:null,tools:[],tool_choice:"auto",temperature:.8,max_response_output_tokens:4096},this.sessionConfig={},this.transcriptionModels=[{model:"whisper-1"}],this.defaultServerVadConfig={type:"server_vad",threshold:.5,prefix_padding_ms:300,silence_duration_ms:200},this.realtime=new jl({url:r,apiKey:e,dangerouslyAllowAPIKeyInBrowser:t,debug:o}),this.conversation=new kl,this._resetConfig(),this._addAPIEventHandlers()}_resetConfig(){return this.sessionCreated=!1,this.tools={},this.sessionConfig=JSON.parse(JSON.stringify(this.defaultSessionConfig)),this.inputAudioBuffer=new Int16Array(0),!0}_addAPIEventHandlers(){this.realtime.on("client.*",o=>{let i={time:new Date().toISOString(),source:"client",event:o};this.dispatch("realtime.event",i)}),this.realtime.on("server.*",o=>{let i={time:new Date().toISOString(),source:"server",event:o};this.dispatch("realtime.event",i)}),this.realtime.on("server.session.created",()=>this.sessionCreated=!0);let r=(o,...i)=>{let{item:a,delta:s}=this.conversation.processEvent(o,...i);return{item:a,delta:s}},e=(o,...i)=>{let{item:a,delta:s}=r(o,...i);return a&&this.dispatch("conversation.updated",{item:a,delta:s}),{item:a,delta:s}},t=async o=>{try{let i=JSON.parse(o.arguments),a=this.tools[o.name];if(!a)throw new Error(`Tool "${o.name}" has not been added`);let s=await a.handler(i);this.realtime.send("conversation.item.create",{item:{type:"function_call_output",call_id:o.call_id,output:JSON.stringify(s)}})}catch(i){this.realtime.send("conversation.item.create",{item:{type:"function_call_output",call_id:o.call_id,output:JSON.stringify({error:i.message})}})}this.createResponse()};return this.realtime.on("server.response.created",r),this.realtime.on("server.response.output_item.added",r),this.realtime.on("server.response.content_part.added",r),this.realtime.on("server.input_audio_buffer.speech_started",o=>{r(o),this.dispatch("conversation.interrupted")}),this.realtime.on("server.input_audio_buffer.speech_stopped",o=>r(o,this.inputAudioBuffer)),this.realtime.on("server.conversation.item.created",o=>{let{item:i}=e(o);this.dispatch("conversation.item.appended",{item:i}),i.status==="completed"&&this.dispatch("conversation.item.completed",{item:i})}),this.realtime.on("server.conversation.item.truncated",e),this.realtime.on("server.conversation.item.deleted",e),this.realtime.on("server.conversation.item.input_audio_transcription.completed",e),this.realtime.on("server.response.audio_transcript.delta",e),this.realtime.on("server.response.audio.delta",e),this.realtime.on("server.response.text.delta",e),this.realtime.on("server.response.function_call_arguments.delta",e),this.realtime.on("server.response.output_item.done",async o=>{let{item:i}=e(o);i.status==="completed"&&this.dispatch("conversation.item.completed",{item:i}),i.formatted.tool&&t(i.formatted.tool)}),!0}isConnected(){return this.realtime.isConnected()}reset(){return this.disconnect(),this.clearEventHandlers(),this.realtime.clearEventHandlers(),this._resetConfig(),this._addAPIEventHandlers(),!0}async connect(){if(this.isConnected())throw new Error("Already connected, use .disconnect() first");return await this.realtime.connect(),this.updateSession(),!0}async waitForSessionCreated(){if(!this.isConnected())throw new Error("Not connected, use .connect() first");for(;!this.sessionCreated;)await new Promise(r=>setTimeout(()=>r(),1));return!0}disconnect(){this.sessionCreated=!1,this.realtime.isConnected()&&this.realtime.disconnect(),this.conversation.clear()}getTurnDetectionType(){return this.sessionConfig.turn_detection?.type||null}addTool(r,e){if(!r?.name)throw new Error("Missing tool name in definition");let t=r?.name;if(this.tools[t])throw new Error(`Tool "${t}" already added. Please use .removeTool("${t}") before trying to add again.`);if(typeof e!="function")throw new Error(`Tool "${t}" handler must be a function`);return this.tools[t]={definition:r,handler:e},this.updateSession(),this.tools[t]}removeTool(r){if(!this.tools[r])throw new Error(`Tool "${r}" does not exist, can not be removed.`);return delete this.tools[r],!0}deleteItem(r){return this.realtime.send("conversation.item.delete",{item_id:r}),!0}updateSession({modalities:r=void 0,instructions:e=void 0,voice:t=void 0,input_audio_format:o=void 0,output_audio_format:i=void 0,input_audio_transcription:a=void 0,turn_detection:s=void 0,tools:l=void 0,tool_choice:c=void 0,temperature:u=void 0,max_response_output_tokens:p=void 0}={}){r!==void 0&&(this.sessionConfig.modalities=r),e!==void 0&&(this.sessionConfig.instructions=e),t!==void 0&&(this.sessionConfig.voice=t),o!==void 0&&(this.sessionConfig.input_audio_format=o),i!==void 0&&(this.sessionConfig.output_audio_format=i),a!==void 0&&(this.sessionConfig.input_audio_transcription=a),s!==void 0&&(this.sessionConfig.turn_detection=s),l!==void 0&&(this.sessionConfig.tools=l),c!==void 0&&(this.sessionConfig.tool_choice=c),u!==void 0&&(this.sessionConfig.temperature=u),p!==void 0&&(this.sessionConfig.max_response_output_tokens=p);let d=[].concat((l||[]).map(h=>{let m={type:"function",...h};if(this.tools[m?.name])throw new Error(`Tool "${m?.name}" has already been defined`);return m}),Object.keys(this.tools).map(h=>({type:"function",...this.tools[h].definition}))),f={...this.sessionConfig};return f.tools=d,this.realtime.isConnected()&&this.realtime.send("session.update",{session:f}),!0}sendUserMessageContent(r=[]){if(r.length){for(let e of r)e.type==="input_audio"&&(e.audio instanceof ArrayBuffer||e.audio instanceof Int16Array)&&(e.audio=Ur.arrayBufferToBase64(e.audio));this.realtime.send("conversation.item.create",{item:{type:"message",role:"user",content:r}})}return this.createResponse(),!0}appendInputAudio(r){return r.byteLength>0&&(this.realtime.send("input_audio_buffer.append",{audio:Ur.arrayBufferToBase64(r)}),this.inputAudioBuffer=Ur.mergeInt16Arrays(this.inputAudioBuffer,r)),!0}createResponse(){return this.getTurnDetectionType()===null&&this.inputAudioBuffer.byteLength>0&&(this.realtime.send("input_audio_buffer.commit"),this.conversation.queueInputAudio(this.inputAudioBuffer),this.inputAudioBuffer=new Int16Array(0)),this.realtime.send("response.create"),!0}cancelResponse(r,e=0){if(r){if(r){let t=this.conversation.getItem(r);if(!t)throw new Error(`Could not find item "${r}"`);if(t.type!=="message")throw new Error('Can only cancelResponse messages with type "message"');if(t.role!=="assistant")throw new Error('Can only cancelResponse messages with role "assistant"');this.realtime.send("response.cancel");let o=t.content.findIndex(i=>i.type==="audio");if(o===-1)throw new Error("Could not find audio on item to cancel");return this.realtime.send("conversation.item.truncate",{item_id:r,content_index:o,audio_end_ms:Math.floor(e/this.conversation.defaultFrequency*1e3)}),{item:t}}}else return this.realtime.send("response.cancel"),{item:null}}async waitForNextItem(){let r=await this.waitForNext("conversation.item.appended"),{item:e}=r;return{item:e}}async waitForNextCompletedItem(){let r=await this.waitForNext("conversation.item.completed"),{item:e}=r;return{item:e}}};var sE=`
2251
2284
  class AudioProcessor extends AudioWorkletProcessor {
2252
2285
 
2253
2286
  constructor() {
@@ -2454,9 +2487,9 @@ class AudioProcessor extends AudioWorkletProcessor {
2454
2487
  }
2455
2488
 
2456
2489
  registerProcessor('audio_processor', AudioProcessor);
2457
- `,cE=new Blob([lE],{type:"application/javascript"}),uE=URL.createObjectURL(cE),Ub=uE;var Hb=[4186.01,4434.92,4698.63,4978.03,5274.04,5587.65,5919.91,6271.93,6644.88,7040,7458.62,7902.13],dE=["C","C#","D","D#","E","F","F#","G","G#","A","A#","B"],un=[],vd=[];for(let n=1;n<=8;n++)for(let r=0;r<Hb.length;r++){let e=Hb[r];un.push(e/Math.pow(2,8-n)),vd.push(dE[r]+n)}var bd=[32,2e3],fh=un.filter((n,r)=>un[r]>bd[0]&&un[r]<bd[1]),Wb=vd.filter((n,r)=>un[r]>bd[0]&&un[r]<bd[1]);var Yn=class{static getFrequencies(r,e,t,o="frequency",i=-100,a=-30){t||(t=new Float32Array(r.frequencyBinCount),r.getFloatFrequencyData(t));let s=e/2,l=1/t.length*s,c,u,p;if(o==="music"||o==="voice"){let f=o==="voice"?fh:un,m=Array(f.length).fill(i);for(let y=0;y<t.length;y++){let g=y*l,v=t[y];for(let w=f.length-1;w>=0;w--)if(g>f[w]){m[w]=Math.max(m[w],v);break}}c=m,u=o==="voice"?fh:un,p=o==="voice"?Wb:vd}else c=Array.from(t),u=c.map((f,m)=>l*m),p=u.map(f=>`${f.toFixed(2)} Hz`);let d=c.map(f=>Math.max(0,Math.min((f-i)/(a-i),1)));return{values:new Float32Array(d),frequencies:u,labels:p}}constructor(r,e=null){if(this.fftResults=[],e){let{length:t,sampleRate:o}=e,i=new OfflineAudioContext({length:t,sampleRate:o}),a=i.createBufferSource();a.buffer=e;let s=i.createAnalyser();s.fftSize=8192,s.smoothingTimeConstant=.1,a.connect(s);let l=1/60,c=t/o,u=p=>{let d=l*p;d<c&&i.suspend(d).then(()=>{let h=new Float32Array(s.frequencyBinCount);s.getFloatFrequencyData(h),this.fftResults.push(h),u(p+1)}),p===1?i.startRendering():i.resume()};a.start(0),u(1),this.audio=r,this.context=i,this.analyser=s,this.sampleRate=o,this.audioBuffer=e}else{let t=new AudioContext,o=t.createMediaElementSource(r),i=t.createAnalyser();i.fftSize=8192,i.smoothingTimeConstant=.1,o.connect(i),i.connect(t.destination),this.audio=r,this.context=t,this.analyser=i,this.sampleRate=this.context.sampleRate,this.audioBuffer=null}}getFrequencies(r="frequency",e=-100,t=-30){let o=null;if(this.audioBuffer&&this.fftResults.length){let i=this.audio.currentTime/this.audio.duration,a=Math.min(i*this.fftResults.length|0,this.fftResults.length-1);o=this.fftResults[a]}return Yn.getFrequencies(this.analyser,this.sampleRate,o,r,e,t)}async resumeIfSuspended(){return this.context.state==="suspended"&&await this.context.resume(),!0}};var dn=class{static floatTo16BitPCM(r){let e=new ArrayBuffer(r.length*2),t=new DataView(e),o=0;for(let i=0;i<r.length;i++,o+=2){let a=Math.max(-1,Math.min(1,r[i]));t.setInt16(o,a<0?a*32768:a*32767,!0)}return e}static mergeBuffers(r,e){let t=new Uint8Array(r.byteLength+e.byteLength);return t.set(new Uint8Array(r),0),t.set(new Uint8Array(e),r.byteLength),t.buffer}_packData(r,e){return[new Uint8Array([e,e>>8]),new Uint8Array([e,e>>8,e>>16,e>>24])][r]}pack(r,e){if(e?.bitsPerSample)if(e?.channels){if(!e?.data)throw new Error('Missing "data"')}else throw new Error('Missing "channels"');else throw new Error('Missing "bitsPerSample"');let{bitsPerSample:t,channels:o,data:i}=e,a=["RIFF",this._packData(1,4+(8+24)+(8+8)),"WAVE","fmt ",this._packData(1,16),this._packData(0,1),this._packData(0,o.length),this._packData(1,r),this._packData(1,r*o.length*t/8),this._packData(0,o.length*t/8),this._packData(0,t),"data",this._packData(1,o[0].length*o.length*t/8),i],s=new Blob(a,{type:"audio/mpeg"}),l=URL.createObjectURL(s);return{blob:s,url:l,channelCount:o.length,sampleRate:r,duration:i.byteLength/(o.length*r*2)}}};var ql=class{constructor({sampleRate:r=44100,outputToSpeakers:e=!1,debug:t=!1}={}){this.scriptSrc=Ub,this.sampleRate=r,this.outputToSpeakers=e,this.debug=!!t,this._deviceChangeCallback=null,this._devices=[],this.stream=null,this.processor=null,this.source=null,this.node=null,this.recording=!1,this._lastEventId=0,this.eventReceipts={},this.eventTimeout=5e3,this._chunkProcessor=()=>{},this._chunkProcessorSize=void 0,this._chunkProcessorBuffer={raw:new ArrayBuffer(0),mono:new ArrayBuffer(0)}}static async decode(r,e=44100,t=-1){let o=new AudioContext({sampleRate:e}),i,a;if(r instanceof Blob){if(t!==-1)throw new Error('Can not specify "fromSampleRate" when reading from Blob');a=r,i=await a.arrayBuffer()}else if(r instanceof ArrayBuffer){if(t!==-1)throw new Error('Can not specify "fromSampleRate" when reading from ArrayBuffer');i=r,a=new Blob([i],{type:"audio/wav"})}else{let u,p;if(r instanceof Int16Array){p=r,u=new Float32Array(r.length);for(let m=0;m<r.length;m++)u[m]=r[m]/32768}else if(r instanceof Float32Array)u=r;else if(r instanceof Array)u=new Float32Array(r);else throw new Error('"audioData" must be one of: Blob, Float32Arrray, Int16Array, ArrayBuffer, Array<number>');if(t===-1)throw new Error('Must specify "fromSampleRate" when reading from Float32Array, In16Array or Array');if(t<3e3)throw new Error('Minimum "fromSampleRate" is 3000 (3kHz)');p||(p=dn.floatTo16BitPCM(u));let d={bitsPerSample:16,channels:[u],data:p};a=new dn().pack(t,d).blob,i=await a.arrayBuffer()}let s=await o.decodeAudioData(i),l=s.getChannelData(0),c=URL.createObjectURL(a);return{blob:a,url:c,values:l,audioBuffer:s}}log(){return this.debug&&this.log(...arguments),!0}getSampleRate(){return this.sampleRate}getStatus(){return this.processor?this.recording?"recording":"paused":"ended"}async _event(r,e={},t=null){if(t=t||this.processor,!t)throw new Error("Can not send events without recording first");let o={event:r,id:this._lastEventId++,data:e};t.port.postMessage(o);let i=new Date().valueOf();for(;!this.eventReceipts[o.id];){if(new Date().valueOf()-i>this.eventTimeout)throw new Error(`Timeout waiting for "${r}" event`);await new Promise(s=>setTimeout(()=>s(!0),1))}let a=this.eventReceipts[o.id];return delete this.eventReceipts[o.id],a}listenForDeviceChange(r){if(r===null&&this._deviceChangeCallback)navigator.mediaDevices.removeEventListener("devicechange",this._deviceChangeCallback),this._deviceChangeCallback=null;else if(r!==null){let e=0,t=[],o=a=>a.map(s=>s.deviceId).sort().join(","),i=async()=>{let a=++e,s=await this.listDevices();a===e&&o(t)!==o(s)&&(t=s,r(s.slice()))};navigator.mediaDevices.addEventListener("devicechange",i),i(),this._deviceChangeCallback=i}return!0}async requestPermission(){let r=await navigator.permissions.query({name:"microphone"});if(r.state==="denied")window.alert("You must grant microphone access to use this feature.");else if(r.state==="prompt")try{(await navigator.mediaDevices.getUserMedia({audio:!0})).getTracks().forEach(o=>o.stop())}catch{window.alert("You must grant microphone access to use this feature.")}return!0}async listDevices(){if(!navigator.mediaDevices||!("enumerateDevices"in navigator.mediaDevices))throw new Error("Could not request user devices");await this.requestPermission();let e=(await navigator.mediaDevices.enumerateDevices()).filter(i=>i.kind==="audioinput"),t=e.findIndex(i=>i.deviceId==="default"),o=[];if(t!==-1){let i=e.splice(t,1)[0],a=e.findIndex(s=>s.groupId===i.groupId);a!==-1&&(i=e.splice(a,1)[0]),i.default=!0,o.push(i)}return o.concat(e)}async begin(r){if(this.processor)throw new Error("Already connected: please call .end() to start a new session");if(!navigator.mediaDevices||!("getUserMedia"in navigator.mediaDevices))throw new Error("Could not request user media");try{let s={audio:!0};r&&(s.audio={deviceId:{exact:r}}),this.stream=await navigator.mediaDevices.getUserMedia(s)}catch{throw new Error("Could not start media stream")}let e=new AudioContext({sampleRate:this.sampleRate}),t=e.createMediaStreamSource(this.stream);try{await e.audioWorklet.addModule(this.scriptSrc)}catch(s){throw console.error(s),new Error(`Could not add audioWorklet module: ${this.scriptSrc}`)}let o=new AudioWorkletNode(e,"audio_processor");o.port.onmessage=s=>{let{event:l,id:c,data:u}=s.data;if(l==="receipt")this.eventReceipts[c]=u;else if(l==="chunk")if(this._chunkProcessorSize){let p=this._chunkProcessorBuffer;this._chunkProcessorBuffer={raw:dn.mergeBuffers(p.raw,u.raw),mono:dn.mergeBuffers(p.mono,u.mono)},this._chunkProcessorBuffer.mono.byteLength>=this._chunkProcessorSize&&(this._chunkProcessor(this._chunkProcessorBuffer),this._chunkProcessorBuffer={raw:new ArrayBuffer(0),mono:new ArrayBuffer(0)})}else this._chunkProcessor(u)};let i=t.connect(o),a=e.createAnalyser();return a.fftSize=8192,a.smoothingTimeConstant=.1,i.connect(a),this.outputToSpeakers&&(console.warn(`Warning: Output to speakers may affect sound quality,
2490
+ `,lE=new Blob([sE],{type:"application/javascript"}),cE=URL.createObjectURL(lE),kb=cE;var Ub=[4186.01,4434.92,4698.63,4978.03,5274.04,5587.65,5919.91,6271.93,6644.88,7040,7458.62,7902.13],uE=["C","C#","D","D#","E","F","F#","G","G#","A","A#","B"],un=[],yd=[];for(let n=1;n<=8;n++)for(let r=0;r<Ub.length;r++){let e=Ub[r];un.push(e/Math.pow(2,8-n)),yd.push(uE[r]+n)}var md=[32,2e3],uh=un.filter((n,r)=>un[r]>md[0]&&un[r]<md[1]),Hb=yd.filter((n,r)=>un[r]>md[0]&&un[r]<md[1]);var $n=class{static getFrequencies(r,e,t,o="frequency",i=-100,a=-30){t||(t=new Float32Array(r.frequencyBinCount),r.getFloatFrequencyData(t));let s=e/2,l=1/t.length*s,c,u,p;if(o==="music"||o==="voice"){let h=o==="voice"?uh:un,m=Array(h.length).fill(i);for(let y=0;y<t.length;y++){let b=y*l,S=t[y];for(let P=h.length-1;P>=0;P--)if(b>h[P]){m[P]=Math.max(m[P],S);break}}c=m,u=o==="voice"?uh:un,p=o==="voice"?Hb:yd}else c=Array.from(t),u=c.map((h,m)=>l*m),p=u.map(h=>`${h.toFixed(2)} Hz`);let d=c.map(h=>Math.max(0,Math.min((h-i)/(a-i),1)));return{values:new Float32Array(d),frequencies:u,labels:p}}constructor(r,e=null){if(this.fftResults=[],e){let{length:t,sampleRate:o}=e,i=new OfflineAudioContext({length:t,sampleRate:o}),a=i.createBufferSource();a.buffer=e;let s=i.createAnalyser();s.fftSize=8192,s.smoothingTimeConstant=.1,a.connect(s);let l=1/60,c=t/o,u=p=>{let d=l*p;d<c&&i.suspend(d).then(()=>{let f=new Float32Array(s.frequencyBinCount);s.getFloatFrequencyData(f),this.fftResults.push(f),u(p+1)}),p===1?i.startRendering():i.resume()};a.start(0),u(1),this.audio=r,this.context=i,this.analyser=s,this.sampleRate=o,this.audioBuffer=e}else{let t=new AudioContext,o=t.createMediaElementSource(r),i=t.createAnalyser();i.fftSize=8192,i.smoothingTimeConstant=.1,o.connect(i),i.connect(t.destination),this.audio=r,this.context=t,this.analyser=i,this.sampleRate=this.context.sampleRate,this.audioBuffer=null}}getFrequencies(r="frequency",e=-100,t=-30){let o=null;if(this.audioBuffer&&this.fftResults.length){let i=this.audio.currentTime/this.audio.duration,a=Math.min(i*this.fftResults.length|0,this.fftResults.length-1);o=this.fftResults[a]}return $n.getFrequencies(this.analyser,this.sampleRate,o,r,e,t)}async resumeIfSuspended(){return this.context.state==="suspended"&&await this.context.resume(),!0}};var dn=class{static floatTo16BitPCM(r){let e=new ArrayBuffer(r.length*2),t=new DataView(e),o=0;for(let i=0;i<r.length;i++,o+=2){let a=Math.max(-1,Math.min(1,r[i]));t.setInt16(o,a<0?a*32768:a*32767,!0)}return e}static mergeBuffers(r,e){let t=new Uint8Array(r.byteLength+e.byteLength);return t.set(new Uint8Array(r),0),t.set(new Uint8Array(e),r.byteLength),t.buffer}_packData(r,e){return[new Uint8Array([e,e>>8]),new Uint8Array([e,e>>8,e>>16,e>>24])][r]}pack(r,e){if(e?.bitsPerSample)if(e?.channels){if(!e?.data)throw new Error('Missing "data"')}else throw new Error('Missing "channels"');else throw new Error('Missing "bitsPerSample"');let{bitsPerSample:t,channels:o,data:i}=e,a=["RIFF",this._packData(1,4+(8+24)+(8+8)),"WAVE","fmt ",this._packData(1,16),this._packData(0,1),this._packData(0,o.length),this._packData(1,r),this._packData(1,r*o.length*t/8),this._packData(0,o.length*t/8),this._packData(0,t),"data",this._packData(1,o[0].length*o.length*t/8),i],s=new Blob(a,{type:"audio/mpeg"}),l=URL.createObjectURL(s);return{blob:s,url:l,channelCount:o.length,sampleRate:r,duration:i.byteLength/(o.length*r*2)}}};var Ul=class{constructor({sampleRate:r=44100,outputToSpeakers:e=!1,debug:t=!1}={}){this.scriptSrc=kb,this.sampleRate=r,this.outputToSpeakers=e,this.debug=!!t,this._deviceChangeCallback=null,this._devices=[],this.stream=null,this.processor=null,this.source=null,this.node=null,this.recording=!1,this._lastEventId=0,this.eventReceipts={},this.eventTimeout=5e3,this._chunkProcessor=()=>{},this._chunkProcessorSize=void 0,this._chunkProcessorBuffer={raw:new ArrayBuffer(0),mono:new ArrayBuffer(0)}}static async decode(r,e=44100,t=-1){let o=new AudioContext({sampleRate:e}),i,a;if(r instanceof Blob){if(t!==-1)throw new Error('Can not specify "fromSampleRate" when reading from Blob');a=r,i=await a.arrayBuffer()}else if(r instanceof ArrayBuffer){if(t!==-1)throw new Error('Can not specify "fromSampleRate" when reading from ArrayBuffer');i=r,a=new Blob([i],{type:"audio/wav"})}else{let u,p;if(r instanceof Int16Array){p=r,u=new Float32Array(r.length);for(let m=0;m<r.length;m++)u[m]=r[m]/32768}else if(r instanceof Float32Array)u=r;else if(r instanceof Array)u=new Float32Array(r);else throw new Error('"audioData" must be one of: Blob, Float32Arrray, Int16Array, ArrayBuffer, Array<number>');if(t===-1)throw new Error('Must specify "fromSampleRate" when reading from Float32Array, In16Array or Array');if(t<3e3)throw new Error('Minimum "fromSampleRate" is 3000 (3kHz)');p||(p=dn.floatTo16BitPCM(u));let d={bitsPerSample:16,channels:[u],data:p};a=new dn().pack(t,d).blob,i=await a.arrayBuffer()}let s=await o.decodeAudioData(i),l=s.getChannelData(0),c=URL.createObjectURL(a);return{blob:a,url:c,values:l,audioBuffer:s}}log(){return this.debug&&this.log(...arguments),!0}getSampleRate(){return this.sampleRate}getStatus(){return this.processor?this.recording?"recording":"paused":"ended"}async _event(r,e={},t=null){if(t=t||this.processor,!t)throw new Error("Can not send events without recording first");let o={event:r,id:this._lastEventId++,data:e};t.port.postMessage(o);let i=new Date().valueOf();for(;!this.eventReceipts[o.id];){if(new Date().valueOf()-i>this.eventTimeout)throw new Error(`Timeout waiting for "${r}" event`);await new Promise(s=>setTimeout(()=>s(!0),1))}let a=this.eventReceipts[o.id];return delete this.eventReceipts[o.id],a}listenForDeviceChange(r){if(r===null&&this._deviceChangeCallback)navigator.mediaDevices.removeEventListener("devicechange",this._deviceChangeCallback),this._deviceChangeCallback=null;else if(r!==null){let e=0,t=[],o=a=>a.map(s=>s.deviceId).sort().join(","),i=async()=>{let a=++e,s=await this.listDevices();a===e&&o(t)!==o(s)&&(t=s,r(s.slice()))};navigator.mediaDevices.addEventListener("devicechange",i),i(),this._deviceChangeCallback=i}return!0}async requestPermission(){let r=await navigator.permissions.query({name:"microphone"});if(r.state==="denied")window.alert("You must grant microphone access to use this feature.");else if(r.state==="prompt")try{(await navigator.mediaDevices.getUserMedia({audio:!0})).getTracks().forEach(o=>o.stop())}catch{window.alert("You must grant microphone access to use this feature.")}return!0}async listDevices(){if(!navigator.mediaDevices||!("enumerateDevices"in navigator.mediaDevices))throw new Error("Could not request user devices");await this.requestPermission();let e=(await navigator.mediaDevices.enumerateDevices()).filter(i=>i.kind==="audioinput"),t=e.findIndex(i=>i.deviceId==="default"),o=[];if(t!==-1){let i=e.splice(t,1)[0],a=e.findIndex(s=>s.groupId===i.groupId);a!==-1&&(i=e.splice(a,1)[0]),i.default=!0,o.push(i)}return o.concat(e)}async begin(r){if(this.processor)throw new Error("Already connected: please call .end() to start a new session");if(!navigator.mediaDevices||!("getUserMedia"in navigator.mediaDevices))throw new Error("Could not request user media");try{let s={audio:!0};r&&(s.audio={deviceId:{exact:r}}),this.stream=await navigator.mediaDevices.getUserMedia(s)}catch{throw new Error("Could not start media stream")}let e=new AudioContext({sampleRate:this.sampleRate}),t=e.createMediaStreamSource(this.stream);try{await e.audioWorklet.addModule(this.scriptSrc)}catch(s){throw console.error(s),new Error(`Could not add audioWorklet module: ${this.scriptSrc}`)}let o=new AudioWorkletNode(e,"audio_processor");o.port.onmessage=s=>{let{event:l,id:c,data:u}=s.data;if(l==="receipt")this.eventReceipts[c]=u;else if(l==="chunk")if(this._chunkProcessorSize){let p=this._chunkProcessorBuffer;this._chunkProcessorBuffer={raw:dn.mergeBuffers(p.raw,u.raw),mono:dn.mergeBuffers(p.mono,u.mono)},this._chunkProcessorBuffer.mono.byteLength>=this._chunkProcessorSize&&(this._chunkProcessor(this._chunkProcessorBuffer),this._chunkProcessorBuffer={raw:new ArrayBuffer(0),mono:new ArrayBuffer(0)})}else this._chunkProcessor(u)};let i=t.connect(o),a=e.createAnalyser();return a.fftSize=8192,a.smoothingTimeConstant=.1,i.connect(a),this.outputToSpeakers&&(console.warn(`Warning: Output to speakers may affect sound quality,
2458
2491
  especially due to system audio feedback preventative measures.
2459
- use only for debugging`),a.connect(e.destination)),this.source=t,this.node=i,this.analyser=a,this.processor=o,!0}getFrequencies(r="frequency",e=-100,t=-30){if(!this.processor)throw new Error("Session ended: please call .begin() first");return Yn.getFrequencies(this.analyser,this.sampleRate,null,r,e,t)}async pause(){if(this.processor){if(!this.recording)throw new Error("Already paused: please call .record() first")}else throw new Error("Session ended: please call .begin() first");return this._chunkProcessorBuffer.raw.byteLength&&this._chunkProcessor(this._chunkProcessorBuffer),this.log("Pausing ..."),await this._event("stop"),this.recording=!1,!0}async record(r=()=>{},e=8192){if(this.processor){if(this.recording)throw new Error("Already recording: please call .pause() first");if(typeof r!="function")throw new Error("chunkProcessor must be a function")}else throw new Error("Session ended: please call .begin() first");return this._chunkProcessor=r,this._chunkProcessorSize=e,this._chunkProcessorBuffer={raw:new ArrayBuffer(0),mono:new ArrayBuffer(0)},this.log("Recording ..."),await this._event("start"),this.recording=!0,!0}async clear(){if(!this.processor)throw new Error("Session ended: please call .begin() first");return await this._event("clear"),!0}async read(){if(!this.processor)throw new Error("Session ended: please call .begin() first");return this.log("Reading ..."),await this._event("read")}async save(r=!1){if(!this.processor)throw new Error("Session ended: please call .begin() first");if(!r&&this.recording)throw new Error("Currently recording: please call .pause() first, or call .save(true) to force");this.log("Exporting ...");let e=await this._event("export");return new dn().pack(this.sampleRate,e.audio)}async end(){if(!this.processor)throw new Error("Session ended: please call .begin() first");let r=this.processor;this.log("Stopping ..."),await this._event("stop"),this.recording=!1,this.stream.getTracks().forEach(a=>a.stop()),this.log("Exporting ...");let t=await this._event("export",{},r);return this.processor.disconnect(),this.source.disconnect(),this.node.disconnect(),this.analyser.disconnect(),this.stream=null,this.processor=null,this.source=null,this.node=null,new dn().pack(this.sampleRate,t.audio)}async quit(){return this.listenForDeviceChange(null),this.processor&&await this.end(),!0}};var pE=`
2492
+ use only for debugging`),a.connect(e.destination)),this.source=t,this.node=i,this.analyser=a,this.processor=o,!0}getFrequencies(r="frequency",e=-100,t=-30){if(!this.processor)throw new Error("Session ended: please call .begin() first");return $n.getFrequencies(this.analyser,this.sampleRate,null,r,e,t)}async pause(){if(this.processor){if(!this.recording)throw new Error("Already paused: please call .record() first")}else throw new Error("Session ended: please call .begin() first");return this._chunkProcessorBuffer.raw.byteLength&&this._chunkProcessor(this._chunkProcessorBuffer),this.log("Pausing ..."),await this._event("stop"),this.recording=!1,!0}async record(r=()=>{},e=8192){if(this.processor){if(this.recording)throw new Error("Already recording: please call .pause() first");if(typeof r!="function")throw new Error("chunkProcessor must be a function")}else throw new Error("Session ended: please call .begin() first");return this._chunkProcessor=r,this._chunkProcessorSize=e,this._chunkProcessorBuffer={raw:new ArrayBuffer(0),mono:new ArrayBuffer(0)},this.log("Recording ..."),await this._event("start"),this.recording=!0,!0}async clear(){if(!this.processor)throw new Error("Session ended: please call .begin() first");return await this._event("clear"),!0}async read(){if(!this.processor)throw new Error("Session ended: please call .begin() first");return this.log("Reading ..."),await this._event("read")}async save(r=!1){if(!this.processor)throw new Error("Session ended: please call .begin() first");if(!r&&this.recording)throw new Error("Currently recording: please call .pause() first, or call .save(true) to force");this.log("Exporting ...");let e=await this._event("export");return new dn().pack(this.sampleRate,e.audio)}async end(){if(!this.processor)throw new Error("Session ended: please call .begin() first");let r=this.processor;this.log("Stopping ..."),await this._event("stop"),this.recording=!1,this.stream.getTracks().forEach(a=>a.stop()),this.log("Exporting ...");let t=await this._event("export",{},r);return this.processor.disconnect(),this.source.disconnect(),this.node.disconnect(),this.analyser.disconnect(),this.stream=null,this.processor=null,this.source=null,this.node=null,new dn().pack(this.sampleRate,t.audio)}async quit(){return this.listenForDeviceChange(null),this.processor&&await this.end(),!0}};var dE=`
2460
2493
  class StreamProcessor extends AudioWorkletProcessor {
2461
2494
  constructor() {
2462
2495
  super();
@@ -2545,7 +2578,7 @@ class StreamProcessor extends AudioWorkletProcessor {
2545
2578
  }
2546
2579
 
2547
2580
  registerProcessor('stream_processor', StreamProcessor);
2548
- `,fE=new Blob([pE],{type:"application/javascript"}),hE=URL.createObjectURL(fE),qb=hE;var Sd=class{constructor({sampleRate:r=44100}={}){this.scriptSrc=qb,this.sampleRate=r,this.context=null,this.stream=null,this.analyser=null,this.trackSampleOffsets={},this.interruptedTrackIds={}}async connect(){this.context=new AudioContext({sampleRate:this.sampleRate}),this.context.state==="suspended"&&await this.context.resume();try{await this.context.audioWorklet.addModule(this.scriptSrc)}catch(e){throw console.error(e),new Error(`Could not add audioWorklet module: ${this.scriptSrc}`)}let r=this.context.createAnalyser();return r.fftSize=8192,r.smoothingTimeConstant=.1,this.analyser=r,!0}getFrequencies(r="frequency",e=-100,t=-30){if(!this.analyser)throw new Error("Not connected, please call .connect() first");return Yn.getFrequencies(this.analyser,this.sampleRate,null,r,e,t)}_start(){let r=new AudioWorkletNode(this.context,"stream_processor");return r.connect(this.context.destination),r.port.onmessage=e=>{let{event:t}=e.data;if(t==="stop")r.disconnect(),this.stream=null;else if(t==="offset"){let{requestId:o,trackId:i,offset:a}=e.data,s=a/this.sampleRate;this.trackSampleOffsets[o]={trackId:i,offset:a,currentTime:s}}},this.analyser.disconnect(),r.connect(this.analyser),this.stream=r,!0}add16BitPCM(r,e="default"){if(typeof e!="string")throw new Error("trackId must be a string");if(this.interruptedTrackIds[e])return;this.stream||this._start();let t;if(r instanceof Int16Array)t=r;else if(r instanceof ArrayBuffer)t=new Int16Array(r);else throw new Error("argument must be Int16Array or ArrayBuffer");return this.stream.port.postMessage({event:"write",buffer:t,trackId:e}),t}async getTrackSampleOffset(r=!1){if(!this.stream)return null;let e=crypto.randomUUID();this.stream.port.postMessage({event:r?"interrupt":"offset",requestId:e});let t;for(;!t;)t=this.trackSampleOffsets[e],await new Promise(i=>setTimeout(()=>i(),1));let{trackId:o}=t;return r&&o&&(this.interruptedTrackIds[o]=!0),t}async interrupt(){return this.getTrackSampleOffset(!0)}};var $b=()=>!1&&window.location.search.includes("api-dev")?"https://relayserver-dev.spline.design/":"https://relayserver.spline.design/",$l=class{constructor(r,e,t){this.data=r;this.id=e;this.shared=t;this.items=[];this.isConnected=!1;this.rafId=0;this.emitter=nn();this.voice=0;this.frequencies=new Float32Array([0]);this.onRealTimeEvent=({time:r,source:e,event:t})=>{e==="server"&&t.type==="spline.ready"?this.onSessionCreated(t):e==="server"&&t.type==="session.created"&&(this.client.createResponse(),this.client.on("realtime.event",this.onRealTimeEvent))};this.onSessionCreated=async r=>{let e=Object.values(this.client.tools).map(t=>({type:"function",...t.definition}));this.client.realtime.send("spline.tools",{tools:e}),this.client.realtime.send("spline.connect",{}),await this.wavRecorder.record(t=>this.client.isConnected()&&this.client.appendInputAudio(t.mono))};this.animate=()=>{if(this.rafId=requestAnimationFrame(this.animate),this.isConnected){let r=this.wavStreamPlayer.analyser?this.wavStreamPlayer.getFrequencies("voice"):{values:new Float32Array([0])},e=r.values.reduce((t,o)=>t+o,0)/r.values.length;this.voice=e,this.frequencies=r.values,this.emitter.emit("voice",{value:e,frequencies:r.values})}};this.client=new ws({url:$b()+"?uuidfile="+r.integration.hash}),this.wavRecorder=new ql({sampleRate:24e3}),this.wavStreamPlayer=new Sd({sampleRate:24e3})}update(r){this.data=r,this.client=new ws({url:$b()+"?uuidfile="+r.integration.hash})}setColorByName(r,e){let t=this.shared.getColorByName(r);if(t){let{id:o}=t,{r:i,g:a,b:s}=$0.hexStringToRgb(e)??{r:0,g:0,b:0};this.shared.updateColor(o,{r:i/255,g:a/255,b:s/255})}}connect(){if(this.isConnected)return;this.isConnected=!0,this.client.updateSession({turn_detection:{type:"server_vad"}}),this.client.addTool({name:"set_personality_color",description:"returns a color based on the voice personality of the ai assistant. This should be called by the voice assistant each time it is asks to speak differently. If a color cannot be associated to the personality, the color should be a neutral color.",parameters:{type:"object",properties:{color:{type:"string",description:"css hex color string, reflecting the personality"},personality:{type:"string",description:"the personality of the voice assistant"}},required:["color","personality"]}},({color:i})=>{this.setColorByName("Voice Assistant Color",i)});let r=this.shared.getVariablesNames().join(", ");this.client.addTool({name:"set_variable",description:"Sets a Spline variable value when asked by the user.",parameters:{type:"object",properties:{name:{type:"string",description:`The name of the variable that needs to be set. Here's a list of available variables: ${r}. It the variable does not exist, don't call the function and warn the user about it.`},value:{type:"string",description:"The new value for this variable, should always be a string even for number and boolean variables, assume that the value will be cast to the proper type afterwards."}},required:["name","value","type"]}},({name:i,value:a})=>{let s=this.shared.getVariableByName(i);if(s){let l=this.shared.getVariable(s.id),c;typeof l=="number"?c=parseFloat(a):typeof l=="boolean"?c=a.toLowerCase()==="true":c={textValue:a},this.shared.updateVariable(s.id,c)}});let e=this.shared.getColorNames().join(", ");this.client.addTool({name:"set_color",description:"Sets a Spline color asset value when asked by the user.",parameters:{type:"object",properties:{name:{type:"string",description:`The name of the color asset that needs to be set. Here's a list of available color assets: ${e}. It the color asset does not exist, don't call the function and warn the user about it.`},value:{type:"string",description:"css hex color string"}},required:["name","value"]}},({name:i,value:a})=>{this.setColorByName(i,a)});let t=this.shared.scene,o=[];t.traverseEntity(i=>{i.data.events.forEach(a=>{if(a.data.type==="AIAssistantTrigger"){let{description:s}=a.data;o.push(s)}})}),this.client.addTool({name:"trigger_event",description:"Trigger an event by name, here are the available events, please match what the user is asking for to one of these if it applies, otherwise don't call the function and warn the user.",parameters:{type:"object",properties:{description:{type:"string",description:`The name of the event that needs to be triggered. Here's a list of available events: ${JSON.stringify(o)}.`},direction:{type:"string",description:"default is forward, but can be forward or backward. Always set to forward unless the user ask to reverse or cancel the event, then set to backward."}},required:["description","direction"]}},({description:i,direction:a})=>{this.emitter.emit("trigger_event",{description:i,direction:a})}),this.client.on("error",i=>console.error(i)),this.client.on("conversation.interrupted",async()=>{let i=await this.wavStreamPlayer.interrupt();if(i?.trackId){let{trackId:a,offset:s}=i;await this.client.cancelResponse(a,s)}}),this.client.on("conversation.updated",async({item:i,delta:a})=>{let s=this.client.conversation.getItems();if(a?.audio&&this.wavStreamPlayer.add16BitPCM(a.audio,i.id),i.status==="completed"&&i.formatted.audio?.length){let l=await ql.decode(i.formatted.audio,24e3,24e3);i.formatted.file=l}this.items=s}),this.animate()}disconnect(){cancelAnimationFrame(this.rafId),this.voice=0,this.isConnected=!1}async start(){try{await this.wavRecorder.end()}catch{}await this.wavRecorder.begin(),this.client.on("realtime.event",this.onRealTimeEvent),await this.wavStreamPlayer.connect(),await this.client.connect()}async stop(){try{this.client.off("realtime.event",this.onRealTimeEvent)}catch(r){console.error(r)}this.client.disconnect(),await this.wavRecorder.end(),await this.wavStreamPlayer.interrupt()}computeAnalysisForListenerEvent(r){if(r.analysis==="range"){let e=this.frequencies.slice(...r.analysisRange);return e.reduce((t,o)=>t+o,0)/e.length}return r.analysis==="single"?this.frequencies[r.analysisSingle]:this.voice}on(r,e){this.emitter.on(r,e)}off(r,e){this.emitter.off(r,e)}};function Yb(n){return"variable_"+n}var mh=class extends cd{constructor(e){super();this.shared=e}create(e){return new bs(e,this.shared)}},Di=class{constructor(r,e={},t=!0,o=!1){this.data=r;this.needsJitter=t;this.enableLocalStorageForPersistentVariables=o;this.geometryCache=new Ul(!0);this.geometryCache2=new Ul(!1);this.imageHolderCache=new mh(this);this.thisContext={scene:Fb,shared:this};this.deletedMaterial=new Ei(Yt.defaultTwoLayerData("phong"),this.thisContext,"");this.deletedImage=new Nr(Au.emptyImage,this);this.deletedVideo=new Nr(ba.defaultVideo,this);this.materials={};this.images={};this.uiBuffers={};this.videos={};this.colors={};this.audios={};this.particles={};this.fonts={};this.variables={};this.userAPIs={};this.userWebhooks={};this.mouseProperty=null;this.raycastProperty=null;this.requestRender=()=>{this._requestRender&&this._requestRender()};if(e.images)for(let[i,a]of Object.entries(e.images))this.addImage(i,a);if(e.videos)for(let[i,a]of Object.entries(e.videos))this.addVideo(i,a);if(e.audios)for(let[i,a]of Object.entries(e.audios))this.addAudio(i,a);if(e.particles)for(let[i,a]of Object.entries(e.particles))this.addParticle(i,a);this.reset(r)}setRequestRender(r){this._requestRender=r}getImageLoadPromises(){return Object.values(this.images).map(r=>r.loadPromise)}setEntityOpContext(r){this.entityOpContext=r}reset(r,e=!1){this.data=r,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.userAPIs))this.addUserAPI(t,o);for(let[t,o]of Object.entries(r.userWebhooks))this.addUserWebhook(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 Ei(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 Mi(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)}addUIBuffer(r,e){return this.uiBuffers[r]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),this.uiBuffers[r].updateSrc(e),!0):(this.uiBuffers[r]=new Nr(e,this),!1)}uiBuffer(r){return this.uiBuffers[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 Wn(e.r,e.g,e.b,e.a):this.colors[r]=new Wn(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]}getColorNames(){return Object.values(this.data.colors).map(r=>r.name)}getColorByName(r){for(let e in this.data.colors)if(this.data.colors[e].name===r)return{color:this.colors[e],id:e}}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 kt(0,0,0,0))}else return"a"in r?new kt(r.r,r.g,r.b,r.a):new kt(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 Ni)return e;{let t=new Ni({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 Ni&&e.dispose(),delete this.audios[r])}addFont(r,e){this.fonts[r]=new yd(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 Ni&&e.dispose()}),this.audios={},this.particles={},this.geometryCache.dispose(),this.geometryCache2.dispose()}addVariableHolder(r,e){if(this.variables[r]===void 0){let t=e.value;if(this.enableLocalStorageForPersistentVariables&&e.persistent){let o=localStorage.getItem(Yb(r));t=o!==null?JSON.parse(o):e.value}return this.variables[r]={value:t,locations:[],persistent:e.persistent},"dynamicVariableType"in e&&(this.variables[r].dynamicVariablePlayState="Playing",this.variables[r].dynamicVariableToggleIsForward=void 0),!0}return 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,this.enableLocalStorageForPersistentVariables&&this.variables[r].persistent&&localStorage.setItem(Yb(r),JSON.stringify(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*hh.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.invalidateDownstreamBooleanData(),l.instances.forEach(u=>{let p=u.dataPatched;u.chooseGeoemtryCache(this).forceDelete(p.geometry),u.createGeometryDelayed(this.entityOpContext),u.onVariableUpdate(!0),u.invalidateDownstreamBooleanData()})}else a[1]==="morphTargetInfluences"&&s.updateMorphInfluences(a[2],t)}}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*=hh.MathUtils.RAD2DEG),t}for(let t in this.variables){if(e===void 0)break;let o=this.variables[t],i=o.locations?.findIndex(a=>ct.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}getVariablesNames(){return this.data.variables.map(r=>r.data.name)}getVariableByName(r){for(let e of this.data.variables)if(e.data.name===r)return{variable:e.data,id:e.id}}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){if(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);else if(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);else if(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);else if(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);else if(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);else if(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});else if(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);else if(r.path[0]==="variables")r.path.length===2&&r.type===0?"value"in r.props?this.updateVariable(r.path[1],r.props.value):"persistent"in r.props&&(this.variables[r.path[1]].persistent=r.props.persistent):r.path.length===1&&r.type===4?this.addVariableHolder(r.id,r.data):r.path.length===1&&r.type===5&&this.deleteVariable(r.id);else if(r.path[0]==="userAPIs"){if(r.path.length===1&&r.type===1)this.addUserAPI(r.id,r.data);else if(r.path.length===1&&r.type===2)this.deleteUserAPI(r.id);else if(typeof r.path[1]=="string"){let o=e.userAPIs[r.path[1]];if(o){let i=r.type===0&&r.props.debounce===void 0,a=this.getUserAPI(r.path[1]);a instanceof $l?a.update(o):a?.update(o,this,i)}}}else if(r.path[0]==="userWebhooks"){if(r.path.length===1&&r.type===1)this.addUserWebhook(r.id,r.data);else if(r.path.length===1&&r.type===2)this.deleteUserWebhook(r.id);else if(typeof r.path[1]=="string"){let o=e.userWebhooks[r.path[1]];o&&this.getUserWebhook(r.path[1])?.update(o)}}else 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)}}addUserAPI(r,e){return this.userAPIs[r]?(this.userAPIs[r].update(e,this),!0):this.openAIRealtime?.id===r?(this.openAIRealtime.update(e),!0):e.integration?.type==="VoiceAssistant"?(this.openAIRealtime=new $l(e,r,this),!1):(this.userAPIs[r]=new Yu(r,e,this),!1)}getUserAPI(r){return this.openAIRealtime?.id===r?this.openAIRealtime:this.userAPIs[r]}getUserAPIs(){return this.userAPIs}deleteUserAPI(r){let e=this.userAPIs[r];e&&(e.dispose(),delete this.userAPIs[r])}addUserWebhook(r,e){return this.userWebhooks[r]?(this.userWebhooks[r].update(e),!0):(this.userWebhooks[r]=new xd(r,e),!1)}getUserWebhook(r){return this.userWebhooks[r]}getUserWebhooks(){return this.userWebhooks}deleteUserWebhook(r){let e=this.userWebhooks[r];e&&(e.dispose(),delete this.userWebhooks[r])}get scene(){return this.entityOpContext.scene}},Xb=new Di(Gr.emptyData());var Pr=class extends Ft{updateByPatchedOp(e,t,o){if(super.updateByPatchedOp(e,t,o),Bg(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(Fe(e.path,["material"])&&this.material instanceof wr)"material"in t&&typeof t.material!="string"&&this.material.updateByOp(gt.drop(e,1),t.material,o);else if(Fe(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&&yc(this.material).forEach(e=>{e instanceof wr&&(e instanceof Ei||e.nodeMaterialDispose())})}dispose(){this.disposeMaterial(),super.dispose()}};var Dr=require("three");var Kb=new Dr.Vector3,Qb=new Dr.Vector4,Zb=new Dr.Vector4,yE=new Dr.Vector3,Jb=new Dr.Matrix4,St=class extends Pr{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 Di){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 al.is2DParametricMesh(e.type)&&e.depth===0}get is2DType(){return al.is2DParametricMesh(this.geometry.userData.type)}get isNonParametric(){return this.geometry.userData.type==="NonParametricGeometry"}updateByPatchedOp(e,t,o){super.updateByPatchedOp(e,t,o),Fe(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=an(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&&Al(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=an(i,t,this.data.flatShading,this)}}refreshAttachedClonersInteractions(){for(let e of this.attachedSurfaceCloners)e.update()}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);let o=e.morphTargetInfluences;if(o){this.updateMorphTargets(),this.geometry.morphTargetsRelative=!0;for(let{data:{name:i,value:a}}of o)this.updateMorphInfluences(i,t.shared.getVariable(a,[this.uuid,"morphTargetInfluences",i]))}super.updateState(e,t)}updateMorphInfluences(e,t){if(this.morphTargetDictionary===void 0)return;let o=this.morphTargetDictionary[e];o!==void 0&&(this.morphTargetInfluences[o]=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;Qb.fromBufferAttribute(i.attributes.skinIndex,e),Zb.fromBufferAttribute(i.attributes.skinWeight,e),Kb.copy(t).applyMatrix4(this.bindMatrix),t.set(0,0,0);for(let a=0;a<4;a++){let s=Zb.getComponent(a);if(s!==0){let l=Qb.getComponent(a);Jb.multiplyMatrices(o.bones[l].matrixWorld,o.boneInverses[l]),t.addScaledVector(yE.copy(Kb).applyMatrix4(Jb),s)}}return t.applyMatrix4(this.bindMatrixInverse)}};function gE(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 _r.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 _r.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 _r.Float32BufferAttribute(i,3))}function xE(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 _r.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 _r.Float32BufferAttribute(t,3))}function Ps(n){if(Array.isArray(n.material)){for(let r of n.material)if(r.getLayersOfType("outline").length===0)return}else if(!(n.material instanceof wr)||n.material.getLayersOfType("outline").length===0)return;n instanceof St&&n.is2DAndNoDepth?xE(n):gE(n)}function Cs(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=[_r.MathUtils.seededRandom(o),_r.MathUtils.seededRandom(o+1e4),_r.MathUtils.seededRandom(o+2e4)];for(let a=0;a<e.length;a++)t[a]=i[a%3];n.geometry.setAttribute("randomColor",new _r.BufferAttribute(t,3))}var Bo=new pn.Box3,Yl=new pn.Vector3;function ev(n){let r=!1;return n.scene.objects.traverse((e,t)=>{t.type==="Mesh"&&t.geometry.type==="SubdivGeometry"&&(r=!0)}),r}var _i=class extends St{constructor(e,t,o){super(e,t,o);this.data=t;this.hiddenMatrixOld=new pn.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,Ps(this),Cs(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,Ft.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 pn.Sphere,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let t=e.attributes.position,o=e.boundingSphere.center;Bo.setFromBufferAttribute(t),Bo.getCenter(o),e.boundingSphere.radius=o.distanceTo(Bo.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),Bo.getSize(Yl),this.hasNonUniformScale&&Yl.divide(this.scale);let i={width:Yl.x,height:Yl.y,depth:Yl.z};return this.geometry.userData.parameters=i,i}updateBoundingSphere(e){let t=this.originalGeometry;Bo.min.set(e[0],e[2],e[4]),Bo.max.set(e[1],e[3],e[5]),this.hasNonUniformScale&&(Bo.min.applyMatrix4(this.shearScaleInv),Bo.max.applyMatrix4(this.shearScaleInv)),t.boundingSphere===null&&(t.boundingSphere=new pn.Sphere);let o=t.boundingSphere.center;Bo.getCenter(o),t.boundingSphere.radius=o.distanceTo(Bo.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 Ro=require("three"),tv=-1,bE=1,rv={x:[1,0,0],"-x":[-1,0,0],y:[0,1,0],"-y":[0,-1,0],z:[0,0,1],"-z":[0,0,-1]},ov={polygon_center:0,edge:1,vertex:2},Xl=(n,r)=>(e,t)=>!r||e===0||n===0?0:n*t/100,Me=(n,r)=>{let e=Math.abs(r),t=e*-1;return(n-tv)*(e-t)/(bE-tv)+t};function nv(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 vE=new Ro.Vector3,wd=new Ro.Vector3,SE=new Ro.Vector3,wE=new Ro.Vector3;function Os(n,r){let e=SE.fromArray(n),t=wE.fromArray(r);wd.copy(t).sub(e);let o=wd.length();return wd.normalize().multiplyScalar(o*.5),vE.copy(e).add(wd).toArray()}var Hr=new Ro.Triangle,Pd=new Ro.Vector3,Cd=new Ro.Vector3,Bi=new Ro.Vector3;function iv(n){let r=[];for(let e=0;e<=n.index.count;e++)if(Pd.fromArray(n.index.array,e*3),Hr.setFromAttributeAndIndices(n.attributes.position,Pd.x,Pd.y,Pd.z),Hr.getNormal(Cd),Hr.getMidpoint(Bi),!(isNaN(Bi.x)||isNaN(Bi.y)||isNaN(Bi.z))){let{a:t,b:o,c:i}=Hr,a=t.toArray(),s=o.toArray(),l=i.toArray(),c=t.distanceTo(o),u=o.distanceTo(i),p=i.distanceTo(t),d=Os(a,s),h=Os(s,l),f=Os(l,a),m=[c,u,p],y=Math.max(...m),g=m.filter(O=>Math.round(O)===Math.round(y)).length>1,v=[],w=Hr.getMidpoint(Bi).toArray();y===c&&!g&&(v=[h,f,f],w=d),y===u&&!g&&(v=[d,f,f],w=h),y===p&&!g&&(v=[d,h,h],w=f),g&&(v=[d,h,f]),r.push({vertices:[a,s,l],faceCenters:v,midpoint:w,norm:Hr.getNormal(Cd).toArray()})}return r}function av(n){let r=[],{position:e}=n.attributes;for(let t=0;t<e.count;t++){Hr.setFromAttributeAndIndices(e,t*3,t*3+1,t*3+2),Hr.getNormal(Cd),Hr.getMidpoint(Bi);let o=Hr.a.toArray(),i=Hr.b.toArray(),a=Hr.c.toArray();r.push({vertices:[o,i,a],faceCenters:[Os(o,i),Os(i,a),Os(a,o)],midpoint:Bi.toArray(),norm:Cd.toArray()})}return r}var PE=4,CE=.5,yh=n=>.5*(1-Math.cos(n*Math.PI)),gh=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<PE;g++){let v=o+(i<<4)+(a<<8);u=yh(s),p=yh(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+=yh(c)*(m-f),d+=f*h,h*=CE,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()}},sv=gh;var As=require("three");var lv=new As.Vector3,cv=new As.Matrix4,uv=new As.Ray;function dv(n){let r=!1;return n.scene.objects.traverse((e,t)=>{t.type==="Mesh"&&(t.geometry.type==="TextGeometry"||t.geometry.type==="InputGeometry")&&(r=!0)}),r}var Xn=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)&&(cv.copy(o).invert(),uv.copy(e.ray).applyMatrix4(cv),uv.intersectBox(this.singleBBox,lv))){let i=lv.applyMatrix4(o),a=e.ray.origin.distanceTo(i);t.push({distance:a,point:i.clone(),object:this})}}};var hr=1e-4,Lo,hv,mv,yv,pv=new Je.Vector3,fv=new Je.Vector3;Ku.then(n=>{Lo=n,hv=[Lo.get_face_center,Lo.get_edge_midpoint,Lo.get_vertex_position],mv=[Lo.get_face_normal,Lo.get_edge_normal,Lo.get_vertex_normal],yv=[Lo.face_count,Lo.edge_count,Lo.vertex_count]});var OE=new Je.Matrix4,AE=new Je.Matrix4,Kn=new Je.Vector3,Od=new Je.Vector3,Kl=new Je.Vector3,xh=new Je.Vector3,TE=new Je.Vector3,IE=new Je.Vector3;var fn=new sv,Is=class extends Na(Je.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 tn&&t.expand()}invalidateTransform(e){this.matrixWorldNeedsUpdate=!0,this.traverse(t=>{t instanceof tn&&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 tn(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 tn(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*Je.MathUtils.DEG2RAD,i=t.end*Je.MathUtils.DEG2RAD,a=o-i,s=new Je.Euler(t.rotation[0],t.rotation[1],t.rotation[2]),l;switch(t.axis){case"z":l=new Je.Vector3(0,0,1);break;case"y":l=new Je.Vector3(0,1,0);break;default:case"x":l=new Je.Vector3(1,0,0);break}let c=e.randomnessObject??Oo.defaultData([1,1,1]).randomnessObject,u=c.noiseType==="perlin";fn.noiseSeed(c.seed);let p=Nu((0,Ts.default)(c.seed)),d=Xl(c.strength,this.parameters.randomness);for(let[h,f]of this.children.entries()){let m=h*(c.freqScale/10)+c.movement,y=u?fn.noise(m):p(m,m),g=h+1;f.scale.x=t.scale[0]+d(g,Me(y,c.scale[0]))||hr,f.scale.y=t.scale[1]+d(g,Me(y,c.scale[1]))||hr,f.scale.z=t.scale[2]+d(g,Me(y,c.scale[2]))||hr,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,Me(y,c.position[0])),f.position.y+=t.position[1]+d(g,Me(y,c.position[1])),f.position.z+=t.position[2]+d(g,Me(y,c.position[2]));let w=d(g,Me(y,c.rotation[0])),O=d(g,Me(y,c.rotation[1])),S=d(g,Me(y,c.rotation[2]));t.alignment===!0?(f.rotation.x+=s.x+w,f.rotation.y+=s.y+O,f.rotation.z+=s.z+S):f.rotation.set(s.x+w,s.y+O,s.z+S)}}_updateLinear(e){if(e.type!=="linear")throw new Error;let t=e.linear,o=new Je.Euler(t.rotation[0],t.rotation[1],t.rotation[2]),i=e.randomnessObject??Oo.defaultData([1,1,1]).randomnessObject,a=i.noiseType==="perlin";fn.noiseSeed(i.seed);let s=Nu((0,Ts.default)(i.seed)),l=Xl(i.strength,this.parameters.randomness);for(let[c,u]of this.children.entries()){let p=c*(i.freqScale/10)+i.movement,d=a?fn.noise(p):s(p,p),h=c+1,f=l(h,Me(d,i.rotation[0])),m=l(h,Me(d,i.rotation[1])),y=l(h,Me(d,i.rotation[2]));u.scale.x=1+(t.scale[0]-1)*c+l(h,Me(d,i.scale[0]))||hr,u.scale.y=1+(t.scale[1]-1)*c+l(h,Me(d,i.scale[1]))||hr,u.scale.z=1+(t.scale[2]-1)*c+l(h,Me(d,i.scale[2]))||hr,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,Me(d,i.position[0])),u.position.y=t.position[1]*c+l(h,Me(d,i.position[1])),u.position.z=t.position[2]*c+l(h,Me(d,i.position[2]))}}_updateGrid(e){let t=0,o=e.grid,i=e.randomnessObject??Oo.defaultData([1,1,1]).randomnessObject,a=Xl(i.strength,this.parameters.randomness),s=i.noiseType==="perlin";fn.noiseSeed(i.seed);let l=kx((0,Ts.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 Je.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?fn.noise(...f):l(...f),y=this.children[t++];y.scale.x=1+a(t,Me(m,i.scale[0]))||hr,y.scale.y=1+a(t,Me(m,i.scale[1]))||hr,y.scale.z=1+a(t,Me(m,i.scale[2]))||hr;let g=a(t,Me(m,i.rotation[0])),v=a(t,Me(m,i.rotation[1])),w=a(t,Me(m,i.rotation[2]));y.rotation.set(g,v,w),y.position.x=o.size[0]*p-u.x+a(t,Me(m,i.position[0])),y.position.y=o.size[1]*d-u.y+a(t,Me(m,i.position[1])),y.position.z=o.size[2]*h-u.z+a(t,Me(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?fn.noise(...d):l(...d),f=this.children[t++];f.scale.x=1+a(t,Me(h,i.scale[0]))||hr,f.scale.y=1+a(t,Me(h,i.scale[1]))||hr,f.scale.z=1+a(t,Me(h,i.scale[2]))||hr;let m=a(t,Me(h,i.rotation[0])),y=a(t,Me(h,i.rotation[1])),g=a(t,Me(h,i.rotation[2]));f.rotation.set(m,y,g),f.position.x=o.size[0]*c+a(t,Me(h,i.position[0])),f.position.y=-o.size[1]*u+a(t,Me(h,i.position[1])),f.position.z=-o.size[2]*p+a(t,Me(h,i.position[2]))}}_updateToObject(e){if(e.type!=="toObject")throw new Error;let{toObject:t}=e,o=new Je.Euler(t.rotation[0],t.rotation[1],t.rotation[2]),i=e.randomnessObject??Oo.defaultData([1,1,1]).randomnessObject,a=i.noiseType==="perlin";fn.noiseSeed(i.seed);let s=Nu((0,Ts.default)(i.seed)),l=Xl(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 Xn)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,w=g.map(C=>C[0]).reduce((C,T)=>C+T,0),O=g.map(C=>C[1]).reduce((C,T)=>C+T,0),S=g.map(C=>C[2]).reduce((C,T)=>C+T,0);return[w/v,O/v,S/v]},d=g=>Math.round(g*1e6)/1e6;c.forEach(g=>{let v=c.filter(w=>d(g.pos[0])===d(w.pos[0])&&d(g.pos[1])===d(w.pos[1])&&d(g.pos[2])===d(w.pos[2]));v.length>1?u.push({pos:g.pos,norm:p(v.map(w=>w.norm))}):u.push(g)});let h=nv(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 Du(this.objectForSample).build(),m=rv[t.axis],y=this.children;f.setRandomGenerator((0,Ts.default)(this.object.uuid+t.seed));for(let[g,v]of y.entries()){let w=g*(i.freqScale/10)+i.movement,O=a?fn.noise(w):s(w,w),S=g+1,C=l(S,Me(O,i.rotation[0])),T=l(S,Me(O,i.rotation[1])),x=l(S,Me(O,i.rotation[2]));t.spreadType==="random"?f.sample(Kl,xh):(h.length&&(Kl.fromArray(h[g].pos),xh.fromArray(h[g].norm)),this.objectForSample instanceof _i&&Kl.applyMatrix4(OE.copy(this.objectForSample.matrixWorld).invert())),Kl.applyMatrix4(this.object.hiddenMatrix.clone().invert()),v.position.copy(Kl),Kn.fromArray(m);let N=t.align==="normal"?xh:this.object.getWorldDirection(IE),E=Od.fromArray(t.position);Od.x+=l(S,Me(O,i.position[0])),Od.y+=l(S,Me(O,i.position[1])),Od.z+=l(S,Me(O,i.position[2]));let M=Math.acos(N.dot(Kn)),D=TE.crossVectors(Kn,N).normalize(),_=AE.makeRotationAxis(D,M),B=N.clone().cross(this.object.up).normalize(),V=B.clone().cross(N).normalize(),k=new Je.Matrix4().makeBasis(B,N,V),L=new Je.Vector3(Kn.y,Kn.z,Kn.x).normalize(),W=L.clone().cross(Kn).normalize(),F=new Je.Matrix4().makeBasis(L,Kn,W).invert(),j=new Je.Matrix4().multiplyMatrices(k,F);v.rotation.setFromRotationMatrix(j),E.applyMatrix4(_),v.position.add(E),v.rotation.x=v.rotation.x+o.x+C,v.rotation.y=v.rotation.y+o.y+T,v.rotation.z=v.rotation.z+o.z+x,v.scale.setScalar(1),v.scale.x=v.scale.x+t.scale[0]+l(S,Me(O,i.scale[0]))||hr,v.scale.y=v.scale.y+t.scale[1]+l(S,Me(O,i.scale[1]))||hr,v.scale.z=v.scale.z+t.scale[2]+l(S,Me(O,i.scale[2]))||hr,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 _i){let t=this.objectForSample,o=ov[e],i=yv[o],a=hv[o],s=mv[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);pv.fromArray(p).applyMatrix4(t.matrixWorld),fv.fromArray(d),l.push({pos:pv.toArray(),norm:fv.toArray()})}return l}else return(this.objectForSample.geometry.index?iv(this.objectForSample.geometry):av(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=qo(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 Ft?this.objectForSample=o:this.objectForSample=void 0,this.matrix=new Je.Matrix4,this.hiddenMatrix=new Je.Matrix4,this.matrixWorldNeedsUpdate=!0,this.matrixAutoUpdate=!1,o&&o.add(this)}this.update()}get pendingMediaLoad(){return this._pendingMediaLoad}};var Qr=require("three");var mt=require("three");var nr=require("three");var gv=require("three"),Vo=n=>{var r;return r=class extends n{},r.geometryHelper=new gv.BoxGeometry(30,30,30),r};var lr=require("three"),Ad=new lr.Ray,bh=new lr.Sphere,xv=new lr.Matrix4,zo=(n,r,e,t,o=!1,i=n)=>{let a=r,s=i.matrixWorld;if(a.boundingSphere===null&&a.computeBoundingSphere(),bh.copy(a.boundingSphere),bh.applyMatrix4(s),e.ray.intersectsSphere(bh)===!1||(xv.copy(s).invert(),Ad.copy(e.ray).applyMatrix4(xv),a.boundingBox!==null&&Ad.intersectsBox(a.boundingBox)===!1))return;let l,c,u,p,d=a.index,h=a.attributes.position,f=a.drawRange,m,y;if(o===!1){let v=Math.max(0,f.start),w=Math.min(d.count,f.start+f.count);for(m=v,y=w;m<y;m+=3)if(c=d.getX(m),u=d.getX(m+1),p=d.getX(m+2),l=g(n,e,Ad,h,c,u,p),l){l.faceIndex=Math.floor(m/3),t.push(l);return}}else{let w=a.attributes.position,O=new lr.Vector3,S=new lr.Vector3,C=new lr.Vector3,T=new lr.Vector3,x=2,E=1/((i.scale.x+i.scale.y+i.scale.z)/3),M=E*E,D=Math.max(0,f.start),_=Math.min(w.count,f.start+f.count);for(let B=D,V=_-1;B<V;B+=x){if(O.fromBufferAttribute(w,B),S.fromBufferAttribute(w,B+1),Ad.distanceSqToSegment(O,S,T,C)>M)continue;T.applyMatrix4(i.matrixWorld);let L=e.ray.origin.distanceTo(T);L<e.near||L>e.far||t.push({distance:L,point:C.clone().applyMatrix4(i.matrixWorld),object:n})}}function g(v,w,O,S,C,T,x){let N=new lr.Vector3,E=new lr.Vector3,M=new lr.Vector3,D=new lr.Vector3,_=new lr.Vector3;if(N.fromBufferAttribute(S,C),E.fromBufferAttribute(S,T),M.fromBufferAttribute(S,x),O.intersectTriangle(N,E,M,!1,D)===null)return null;_.copy(D),_.applyMatrix4(v.matrixWorld);let V=w.ray.origin.distanceTo(_);return V<w.near||V>w.far?null:{faceIndex:1,distance:V,point:_.clone(),object:v}}};var Td=new nr.Vector3,Wr=new nr.Camera,vh=class extends nr.LineSegments{constructor(e){let t=new nr.BufferGeometry,o=new nr.LineBasicMaterial({color:16777215,vertexColors:!0,toneMapped:!1}),i=[],a=[],s={},l=new nr.Color(15711266),c=new nr.Color(15711266),u=new nr.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 nr.Float32BufferAttribute(i,3)),t.setAttribute("color",new nr.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;Wr.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;yo("n1",t,e,Wr,-i,-a,s),yo("n2",t,e,Wr,i,-a,s),yo("n3",t,e,Wr,-i,a,s),yo("n4",t,e,Wr,i,a,s);let l=s;yo("f1",t,e,Wr,-i,-a,l),yo("f2",t,e,Wr,i,-a,l),yo("f3",t,e,Wr,-i,a,l),yo("f4",t,e,Wr,i,a,l);let c=l,u=.5;yo("u1",t,e,Wr,i*.7*u,a*1.1,c),yo("u2",t,e,Wr,-i*.7*u,a*1.1,c),yo("u3",t,e,Wr,0,a*(1.1+.9*u),c),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function yo(n,r,e,t,o,i,a){Td.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],Td.x,Td.y,Td.z)}}var Id=class extends Vo(vh){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){zo(this.object,this.geometry,e,t,!0)}};var Ql=require("three");var Md;(r=>r.is=e=>"objectHelper"in e)(Md||(Md={}));var qr=(n,r)=>class extends Ba(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 Ql.Box3Helper&&(i.visible=!0)}}updateEntityBoxSize(o,i){this.objectHelper.visible&&this.geometryHelper instanceof Ql.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 Ql.Box3Helper&&(i.visible=!1)}}};var Ed=790,Ms=new mt.Vector3,Sh=new mt.Vector3,wh=new mt.Quaternion,Ph=new mt.Vector3,Zl=new mt.Vector3,Ch=new mt.Vector3,hn=class extends qr(mt.Camera,Id){constructor(e="",t={...yi.defaultData,name:""}){super();this._cameraType="OrthographicCamera";this.targetOffset=Dn.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.wasMovedByUser=!1;this.wasMovedBySwitchCameraAction=!1;this.super_Entity(e,t),this.previousProjectionMatrix=new mt.Matrix4,this.matrixAutoUpdate=!0,this.width=window.innerWidth,this.height=window.innerHeight;let o=this.width,i=this.height;this.orthoCamera=new mt.OrthographicCamera(o*-.5,o*.5,i*.5,i*-.5,-5e4,1e4),this.perspCamera=new mt.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 mt.Vector3(e,t,o)),super.lookAt(e),this.getWorldPosition(Ms),this.targetOffset=Ms.distanceTo(e)}getTarget(e=new mt.Vector3){return this.getWorldDirection(Sh),this.getWorldPosition(Ms),Sh.multiplyScalar(this.targetOffset),e.copy(Ms).add(Sh),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(Ms),Ms.distanceTo(e)}updateUp(){this.getWorldQuaternion(wh),Ph.set(0,0,1).applyQuaternion(wh),Zl.copy(mt.Object3D.DEFAULT_UP),this.isUpVectorFlipped&&Zl.negate(),Zl.applyQuaternion(wh),Ch.copy(mt.Object3D.DEFAULT_UP).projectOnPlane(Ph),this.angleOffsetFromUp=Ch.angleTo(Zl),this.angleOffsetFromUp*=Ch.cross(Zl).dot(Ph)>=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 mt.Vector3),i=e.getWorldDirection(new mt.Vector3).multiplyScalar(this.targetOffset);return{position:t.clone().add(i),target:t}}getViewToTarget(e){let o=this.getWorldDirection(new mt.Vector3).multiplyScalar(this.targetOffset);return{position:e.clone().sub(o),target:e}}getViewToObject(e){let t=new mt.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=-Ed*.5*i,this.right=Ed*.5*i,this.top=Ed*.5*(1/a),this.bottom=-Ed*.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 la(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 NE=require("three");var Qn=require("three");var Es=new Qn.Matrix4,EE=new Qn.Matrix4;var Cr=class extends Pr{constructor(e,t,o){super(e,t);this.data=t;this.meshSetAddresses=[];this.needsTransformForDownstream=!1;this.geometry=new Qn.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 Cr&&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 Ft&&a.dataPatched.visible===!0&&a.geometry.attributes.position?.count>0&&a.geometry.drawRange.count>0&&a.booleanMeshSetAddress!==0){Es.multiplyMatrices(a.hiddenMatrix,a.matrix);try{if(a.booleanMeshSetAddress===-1){if((a.geometry.index??a.geometry.getAttribute("position")).count/3<15e5&&(a.booleanMeshSetAddress=jr.getMeshSet(a.geometry,e===!0,t)),a.booleanMeshSetAddress===-1)return;jr.transformMeshSet(a.booleanMeshSetAddress,Es),a.booleanMatrixInvOld.copy(Es).invert(),a.booleanWasTransformed=!1}else a instanceof Cr&&a.needsTransformForDownstream===!0?(jr.transformMeshSet(a.booleanMeshSetAddress,Es),a.needsTransformForDownstream=!1):a.booleanWasTransformed===!0&&(jr.transformMeshSet(a.booleanMeshSetAddress,EE.multiplyMatrices(Es,a.booleanMatrixInvOld)),a.booleanMatrixInvOld.copy(Es).invert(),a.booleanWasTransformed=!1)}catch(s){console.error(s),a.booleanMeshSetAddress=0,a.geometry.userData.booleanOperationDidFail=!0;continue}jr.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 Qn.Float32BufferAttribute([],0)),this.geometry.setDrawRange(0,0);return}if(e===!0)return jr.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let o=this.geometry;o.dispose(),this.geometry=new Qn.BufferGeometry,this.geometry.userData=o.userData,this.geometry.boundingSphere=o.boundingSphere;try{this.booleanMeshSetAddress=jr.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,Ps(this),Cs(this)}dispose(){super.dispose(),this.geometry.dispose()}};var vv=require("three");var bv;(r=>{function n(e){return je.is(e)&&e instanceof vv.Light}r.is=n})(bv||(bv={}));var Ns=(n,r)=>class extends qr(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 Zn=n=>n instanceof Ft,Jl=n=>n!==null&&n instanceof Cr;var ec=n=>Md.is(n);var Pv=require("three");var Go=require("three");var DE=new Go.Vector3(1,1,1),Sv=new Go.Vector3,_E=new Go.Vector3,wv=new Go.Quaternion,$r=class extends Vo(Go.AxesHelper){constructor(e,t=15){super(t);this.object=e;this.dummy=new Go.Group;this.object.updateMatrixWorld(),this.name=`EmptyObjectHelper: ${e.uuid}`,this.matrix=this.dummy.matrixWorld,this.matrixAutoUpdate=!1,this.object.isBone&&(this.visible=!1)}raycast(e,t){zo(this.object,$r.geometryHelper,e,t,!1,this.dummy)}update(){}updateMatrix(){}updateMatrixWorld(e){this.object.matrixWorld.decompose(Sv,wv,_E),this.matrix.compose(Sv,wv,DE),super.updateMatrixWorld(e)}updateWorldMatrix(e,t){}};var Jn=class extends qr(Pv.Group,$r){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 Cv=require("three");var Nd=class extends qr(Cv.Group,$r){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 Gs=require("three");var Ds=require("three"),BE=n=>`
2581
+ `,pE=new Blob([dE],{type:"application/javascript"}),fE=URL.createObjectURL(pE),Wb=fE;var gd=class{constructor({sampleRate:r=44100}={}){this.scriptSrc=Wb,this.sampleRate=r,this.context=null,this.stream=null,this.analyser=null,this.trackSampleOffsets={},this.interruptedTrackIds={}}async connect(){this.context=new AudioContext({sampleRate:this.sampleRate}),this.context.state==="suspended"&&await this.context.resume();try{await this.context.audioWorklet.addModule(this.scriptSrc)}catch(e){throw console.error(e),new Error(`Could not add audioWorklet module: ${this.scriptSrc}`)}let r=this.context.createAnalyser();return r.fftSize=8192,r.smoothingTimeConstant=.1,this.analyser=r,!0}getFrequencies(r="frequency",e=-100,t=-30){if(!this.analyser)throw new Error("Not connected, please call .connect() first");return $n.getFrequencies(this.analyser,this.sampleRate,null,r,e,t)}_start(){let r=new AudioWorkletNode(this.context,"stream_processor");return r.connect(this.context.destination),r.port.onmessage=e=>{let{event:t}=e.data;if(t==="stop")r.disconnect(),this.stream=null;else if(t==="offset"){let{requestId:o,trackId:i,offset:a}=e.data,s=a/this.sampleRate;this.trackSampleOffsets[o]={trackId:i,offset:a,currentTime:s}}},this.analyser.disconnect(),r.connect(this.analyser),this.stream=r,!0}add16BitPCM(r,e="default"){if(typeof e!="string")throw new Error("trackId must be a string");if(this.interruptedTrackIds[e])return;this.stream||this._start();let t;if(r instanceof Int16Array)t=r;else if(r instanceof ArrayBuffer)t=new Int16Array(r);else throw new Error("argument must be Int16Array or ArrayBuffer");return this.stream.port.postMessage({event:"write",buffer:t,trackId:e}),t}async getTrackSampleOffset(r=!1){if(!this.stream)return null;let e=crypto.randomUUID();this.stream.port.postMessage({event:r?"interrupt":"offset",requestId:e});let t;for(;!t;)t=this.trackSampleOffsets[e],await new Promise(i=>setTimeout(()=>i(),1));let{trackId:o}=t;return r&&o&&(this.interruptedTrackIds[o]=!0),t}async interrupt(){return this.getTrackSampleOffset(!0)}};var qb=()=>!1&&window.location.search.includes("api-dev")?"https://relayserver-dev.spline.design/":"https://relayserver.spline.design/",Hl=class{constructor(r,e,t){this.data=r;this.id=e;this.shared=t;this.items=[];this.isConnected=!1;this.rafId=0;this.emitter=nn();this.voice=0;this.frequencies=new Float32Array([0]);this.onRealTimeEvent=({time:r,source:e,event:t})=>{e==="server"&&t.type==="spline.ready"?this.onSessionCreated(t):e==="server"&&t.type==="session.created"&&(this.client.createResponse(),this.client.on("realtime.event",this.onRealTimeEvent))};this.onSessionCreated=async r=>{let e=Object.values(this.client.tools).map(t=>({type:"function",...t.definition}));this.client.realtime.send("spline.tools",{tools:e}),this.client.realtime.send("spline.connect",{}),await this.wavRecorder.record(t=>this.client.isConnected()&&this.client.appendInputAudio(t.mono))};this.animate=()=>{if(this.rafId=requestAnimationFrame(this.animate),this.isConnected){let r=this.wavStreamPlayer.analyser?this.wavStreamPlayer.getFrequencies("voice"):{values:new Float32Array([0])},e=r.values.reduce((t,o)=>t+o,0)/r.values.length;this.voice=e,this.frequencies=r.values,this.emitter.emit("voice",{value:e,frequencies:r.values})}};this.client=new Ss({url:qb()+"?uuidfile="+r.integration.hash}),this.wavRecorder=new Ul({sampleRate:24e3}),this.wavStreamPlayer=new gd({sampleRate:24e3})}update(r){this.data=r,this.client=new Ss({url:qb()+"?uuidfile="+r.integration.hash})}setColorByName(r,e){let t=this.shared.getColorByName(r);if(t){let{id:o}=t,{r:i,g:a,b:s}=q0.hexStringToRgb(e)??{r:0,g:0,b:0};this.shared.updateColor(o,{r:i/255,g:a/255,b:s/255})}}connect(){if(this.isConnected)return;this.isConnected=!0,this.client.updateSession({turn_detection:{type:"server_vad"}}),this.client.addTool({name:"set_personality_color",description:"returns a color based on the voice personality of the ai assistant. This should be called by the voice assistant each time it is asks to speak differently. If a color cannot be associated to the personality, the color should be a neutral color.",parameters:{type:"object",properties:{color:{type:"string",description:"css hex color string, reflecting the personality"},personality:{type:"string",description:"the personality of the voice assistant"}},required:["color","personality"]}},({color:i})=>{this.setColorByName("Voice Assistant Color",i)});let r=this.shared.getVariablesNames().join(", ");this.client.addTool({name:"set_variable",description:"Sets a Spline variable value when asked by the user.",parameters:{type:"object",properties:{name:{type:"string",description:`The name of the variable that needs to be set. Here's a list of available variables: ${r}. It the variable does not exist, don't call the function and warn the user about it.`},value:{type:"string",description:"The new value for this variable, should always be a string even for number and boolean variables, assume that the value will be cast to the proper type afterwards."}},required:["name","value","type"]}},({name:i,value:a})=>{let s=this.shared.getVariableByName(i);if(s){let l=this.shared.getVariable(s.id),c;typeof l=="number"?c=parseFloat(a):typeof l=="boolean"?c=a.toLowerCase()==="true":c={textValue:a},this.shared.updateVariable(s.id,c)}});let e=this.shared.getColorNames().join(", ");this.client.addTool({name:"set_color",description:"Sets a Spline color asset value when asked by the user.",parameters:{type:"object",properties:{name:{type:"string",description:`The name of the color asset that needs to be set. Here's a list of available color assets: ${e}. It the color asset does not exist, don't call the function and warn the user about it.`},value:{type:"string",description:"css hex color string"}},required:["name","value"]}},({name:i,value:a})=>{this.setColorByName(i,a)});let t=this.shared.scene,o=[];t.traverseEntity(i=>{i.data.events.forEach(a=>{if(a.data.type==="AIAssistantTrigger"){let{description:s}=a.data;o.push(s)}})}),this.client.addTool({name:"trigger_event",description:"Trigger an event by name, here are the available events, please match what the user is asking for to one of these if it applies, otherwise don't call the function and warn the user.",parameters:{type:"object",properties:{description:{type:"string",description:`The name of the event that needs to be triggered. Here's a list of available events: ${JSON.stringify(o)}.`},direction:{type:"string",description:"default is forward, but can be forward or backward. Always set to forward unless the user ask to reverse or cancel the event, then set to backward."}},required:["description","direction"]}},({description:i,direction:a})=>{this.emitter.emit("trigger_event",{description:i,direction:a})}),this.client.on("error",i=>console.error(i)),this.client.on("conversation.interrupted",async()=>{let i=await this.wavStreamPlayer.interrupt();if(i?.trackId){let{trackId:a,offset:s}=i;await this.client.cancelResponse(a,s)}}),this.client.on("conversation.updated",async({item:i,delta:a})=>{let s=this.client.conversation.getItems();if(a?.audio&&this.wavStreamPlayer.add16BitPCM(a.audio,i.id),i.status==="completed"&&i.formatted.audio?.length){let l=await Ul.decode(i.formatted.audio,24e3,24e3);i.formatted.file=l}this.items=s}),this.animate()}disconnect(){cancelAnimationFrame(this.rafId),this.voice=0,this.isConnected=!1}async start(){try{await this.wavRecorder.end()}catch{}await this.wavRecorder.begin(),this.client.on("realtime.event",this.onRealTimeEvent),await this.wavStreamPlayer.connect(),await this.client.connect()}async stop(){try{this.client.off("realtime.event",this.onRealTimeEvent)}catch(r){console.error(r)}this.client.disconnect(),await this.wavRecorder.end(),await this.wavStreamPlayer.interrupt()}computeAnalysisForListenerEvent(r){if(r.analysis==="range"){let e=this.frequencies.slice(...r.analysisRange);return e.reduce((t,o)=>t+o,0)/e.length}return r.analysis==="single"?this.frequencies[r.analysisSingle]:this.voice}on(r,e){this.emitter.on(r,e)}off(r,e){this.emitter.off(r,e)}};function $b(n){return"variable_"+n}var ph=class extends id{constructor(e){super();this.shared=e}create(e){return new xs(e,this.shared)}},Ni=class{constructor(r,e={},t=!0,o=!1){this.data=r;this.needsJitter=t;this.enableLocalStorageForPersistentVariables=o;this.geometryCache=new Fl(!0);this.geometryCache2=new Fl(!1);this.imageHolderCache=new ph(this);this.thisContext={scene:Gb,shared:this};this.deletedMaterial=new Mi(Yt.defaultTwoLayerData("phong"),this.thisContext,"");this.deletedImage=new Nr(Pu.emptyImage,this);this.deletedVideo=new Nr(xa.defaultVideo,this);this.materials={};this.images={};this.uiBuffers={};this.videos={};this.colors={};this.audios={};this.particles={};this.fonts={};this.variables={};this.userAPIs={};this.userWebhooks={};this.mouseProperty=null;this.raycastProperty=null;this.requestRender=()=>{this._requestRender&&this._requestRender()};if(e.images)for(let[i,a]of Object.entries(e.images))this.addImage(i,a);if(e.videos)for(let[i,a]of Object.entries(e.videos))this.addVideo(i,a);if(e.audios)for(let[i,a]of Object.entries(e.audios))this.addAudio(i,a);if(e.particles)for(let[i,a]of Object.entries(e.particles))this.addParticle(i,a);this.reset(r)}setRequestRender(r){this._requestRender=r}getImageLoadPromises(){return Object.values(this.images).map(r=>r.loadPromise)}setEntityOpContext(r){this.entityOpContext=r}reset(r,e=!1){this.data=r,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.userAPIs))this.addUserAPI(t,o);for(let[t,o]of Object.entries(r.userWebhooks))this.addUserWebhook(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 Mi(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 Ii(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)}addUIBuffer(r,e){return this.uiBuffers[r]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),this.uiBuffers[r].updateSrc(e),!0):(this.uiBuffers[r]=new Nr(e,this),!1)}uiBuffer(r){return this.uiBuffers[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 Hn(e.r,e.g,e.b,e.a):this.colors[r]=new Hn(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]}getColorNames(){return Object.values(this.data.colors).map(r=>r.name)}getColorByName(r){for(let e in this.data.colors)if(this.data.colors[e].name===r)return{color:this.colors[e],id:e}}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 kt(0,0,0,0))}else return"a"in r?new kt(r.r,r.g,r.b,r.a):new kt(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 Ei)return e;{let t=new Ei({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 Ei&&e.dispose(),delete this.audios[r])}addFont(r,e){this.fonts[r]=new pd(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 Ei&&e.dispose()}),this.audios={},this.particles={},this.geometryCache.dispose(),this.geometryCache2.dispose()}addVariableHolder(r,e){if(this.variables[r]===void 0){let t=e.value;if(this.enableLocalStorageForPersistentVariables&&e.persistent){let o=localStorage.getItem($b(r));t=o!==null?JSON.parse(o):e.value}return this.variables[r]={value:t,locations:[],persistent:e.persistent},"dynamicVariableType"in e&&(this.variables[r].dynamicVariablePlayState="Playing",this.variables[r].dynamicVariableToggleIsForward=void 0),!0}return 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,this.enableLocalStorageForPersistentVariables&&this.variables[r].persistent&&localStorage.setItem($b(r),JSON.stringify(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 f=d.root??d;f.uuid===s&&f.onVariableUpdate(u,l,c)});let p=this.materials[s];p&&p.onVariableUpdate(u,l,c)}else{let s=o.find(a[0]);if(s===void 0){this.variables[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*dh.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.invalidateDownstreamBooleanData(),l.instances.forEach(u=>{let p=u.dataPatched;u.chooseGeoemtryCache(this).forceDelete(p.geometry),u.createGeometryDelayed(this.entityOpContext),u.onVariableUpdate(!0),u.invalidateDownstreamBooleanData()})}else a[1]==="morphTargetInfluences"&&s.updateMorphInfluences(a[2],t)}}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*=dh.MathUtils.RAD2DEG),t}for(let t in this.variables){if(e===void 0)break;let o=this.variables[t],i=o.locations?.findIndex(a=>ct.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}getVariablesNames(){return this.data.variables.map(r=>r.data.name)}getVariableByName(r){for(let e of this.data.variables)if(e.data.name===r)return{variable:e.data,id:e.id}}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){if(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);else if(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);else if(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);else if(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);else if(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);else if(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});else if(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);else if(r.path[0]==="variables")r.path.length===2&&r.type===0?"value"in r.props?this.updateVariable(r.path[1],r.props.value):"persistent"in r.props&&(this.variables[r.path[1]].persistent=r.props.persistent):r.path.length===1&&r.type===4?this.addVariableHolder(r.id,r.data):r.path.length===1&&r.type===5&&this.deleteVariable(r.id);else if(r.path[0]==="userAPIs"){if(r.path.length===1&&r.type===1)this.addUserAPI(r.id,r.data);else if(r.path.length===1&&r.type===2)this.deleteUserAPI(r.id);else if(typeof r.path[1]=="string"){let o=e.userAPIs[r.path[1]];if(o){let i=r.type===0&&r.props.debounce===void 0,a=this.getUserAPI(r.path[1]);a instanceof Hl?a.update(o):a?.update(o,this,i)}}}else if(r.path[0]==="userWebhooks"){if(r.path.length===1&&r.type===1)this.addUserWebhook(r.id,r.data);else if(r.path.length===1&&r.type===2)this.deleteUserWebhook(r.id);else if(typeof r.path[1]=="string"){let o=e.userWebhooks[r.path[1]];o&&this.getUserWebhook(r.path[1])?.update(o)}}else 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)}}addUserAPI(r,e){return this.userAPIs[r]?(this.userAPIs[r].update(e,this),!0):this.openAIRealtime?.id===r?(this.openAIRealtime.update(e),!0):e.integration?.type==="VoiceAssistant"?(this.openAIRealtime=new Hl(e,r,this),!1):(this.userAPIs[r]=new Hu(r,e,this),!1)}getUserAPI(r){return this.openAIRealtime?.id===r?this.openAIRealtime:this.userAPIs[r]}getUserAPIs(){return this.userAPIs}deleteUserAPI(r){let e=this.userAPIs[r];e&&(e.dispose(),delete this.userAPIs[r])}addUserWebhook(r,e){return this.userWebhooks[r]?(this.userWebhooks[r].update(e),!0):(this.userWebhooks[r]=new hd(r,e),!1)}getUserWebhook(r){return this.userWebhooks[r]}getUserWebhooks(){return this.userWebhooks}deleteUserWebhook(r){let e=this.userWebhooks[r];e&&(e.dispose(),delete this.userWebhooks[r])}get scene(){return this.entityOpContext.scene}},Yb=new Ni(Gr.emptyData());var Pr=class extends Ft{updateByPatchedOp(e,t,o){if(super.updateByPatchedOp(e,t,o),Dg(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(Fe(e.path,["material"])&&this.material instanceof wr)"material"in t&&typeof t.material!="string"&&this.material.updateByOp(gt.drop(e,1),t.material,o);else if(Fe(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&&fc(this.material).forEach(e=>{e instanceof wr&&(e instanceof Mi||e.nodeMaterialDispose())})}dispose(){this.disposeMaterial(),super.dispose()}};var Dr=require("three");var Xb=new Dr.Vector3,Kb=new Dr.Vector4,Qb=new Dr.Vector4,mE=new Dr.Vector3,Zb=new Dr.Matrix4,St=class extends Pr{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 Ni){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 nl.is2DParametricMesh(e.type)&&e.depth===0}get is2DType(){return nl.is2DParametricMesh(this.geometry.userData.type)}get isNonParametric(){return this.geometry.userData.type==="NonParametricGeometry"}updateByPatchedOp(e,t,o){super.updateByPatchedOp(e,t,o),Fe(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=an(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&&Cl(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=an(i,t,this.data.flatShading,this)}}refreshAttachedClonersInteractions(){for(let e of this.attachedSurfaceCloners)e.update()}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);let o=e.morphTargetInfluences;if(o){this.updateMorphTargets(),this.geometry.morphTargetsRelative=!0;for(let{data:{name:i,value:a}}of o)this.updateMorphInfluences(i,t.shared.getVariable(a,[this.uuid,"morphTargetInfluences",i]))}super.updateState(e,t)}updateMorphInfluences(e,t){if(this.morphTargetDictionary===void 0)return;let o=this.morphTargetDictionary[e];o!==void 0&&(this.morphTargetInfluences[o]=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;Kb.fromBufferAttribute(i.attributes.skinIndex,e),Qb.fromBufferAttribute(i.attributes.skinWeight,e),Xb.copy(t).applyMatrix4(this.bindMatrix),t.set(0,0,0);for(let a=0;a<4;a++){let s=Qb.getComponent(a);if(s!==0){let l=Kb.getComponent(a);Zb.multiplyMatrices(o.bones[l].matrixWorld,o.boneInverses[l]),t.addScaledVector(mE.copy(Xb).applyMatrix4(Zb),s)}}return t.applyMatrix4(this.bindMatrixInverse)}};function yE(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 _r.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 _r.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 _r.Float32BufferAttribute(i,3))}function gE(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 _r.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 _r.Float32BufferAttribute(t,3))}function ws(n){if(Array.isArray(n.material)){for(let r of n.material)if(r.getLayersOfType("outline").length===0)return}else if(!(n.material instanceof wr)||n.material.getLayersOfType("outline").length===0)return;n instanceof St&&n.is2DAndNoDepth?gE(n):yE(n)}function Ps(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=[_r.MathUtils.seededRandom(o),_r.MathUtils.seededRandom(o+1e4),_r.MathUtils.seededRandom(o+2e4)];for(let a=0;a<e.length;a++)t[a]=i[a%3];n.geometry.setAttribute("randomColor",new _r.BufferAttribute(t,3))}var Bo=new pn.Box3,Wl=new pn.Vector3;function Jb(n){let r=!1;return n.scene.objects.traverse((e,t)=>{t.type==="Mesh"&&t.geometry.type==="SubdivGeometry"&&(r=!0)}),r}var Di=class extends St{constructor(e,t,o){super(e,t,o);this.data=t;this.hiddenMatrixOld=new pn.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,ws(this),Ps(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,Ft.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 pn.Sphere,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let t=e.attributes.position,o=e.boundingSphere.center;Bo.setFromBufferAttribute(t),Bo.getCenter(o),e.boundingSphere.radius=o.distanceTo(Bo.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),Bo.getSize(Wl),this.hasNonUniformScale&&Wl.divide(this.scale);let i={width:Wl.x,height:Wl.y,depth:Wl.z};return this.geometry.userData.parameters=i,i}updateBoundingSphere(e){let t=this.originalGeometry;Bo.min.set(e[0],e[2],e[4]),Bo.max.set(e[1],e[3],e[5]),this.hasNonUniformScale&&(Bo.min.applyMatrix4(this.shearScaleInv),Bo.max.applyMatrix4(this.shearScaleInv)),t.boundingSphere===null&&(t.boundingSphere=new pn.Sphere);let o=t.boundingSphere.center;Bo.getCenter(o),t.boundingSphere.radius=o.distanceTo(Bo.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 Ro=require("three"),ev=-1,xE=1,tv={x:[1,0,0],"-x":[-1,0,0],y:[0,1,0],"-y":[0,-1,0],z:[0,0,1],"-z":[0,0,-1]},rv={polygon_center:0,edge:1,vertex:2},ql=(n,r)=>(e,t)=>!r||e===0||n===0?0:n*t/100,Me=(n,r)=>{let e=Math.abs(r),t=e*-1;return(n-ev)*(e-t)/(xE-ev)+t},bE=new Ro.Vector3,xd=new Ro.Vector3,vE=new Ro.Vector3,SE=new Ro.Vector3;function Cs(n,r){let e=vE.fromArray(n),t=SE.fromArray(r);xd.copy(t).sub(e);let o=xd.length();return xd.normalize().multiplyScalar(o*.5),bE.copy(e).add(xd).toArray()}var Hr=new Ro.Triangle,bd=new Ro.Vector3,vd=new Ro.Vector3,_i=new Ro.Vector3;function ov(n){let r=[];for(let e=0;e<=n.index.count;e++)if(bd.fromArray(n.index.array,e*3),Hr.setFromAttributeAndIndices(n.attributes.position,bd.x,bd.y,bd.z),Hr.getNormal(vd),Hr.getMidpoint(_i),!(isNaN(_i.x)||isNaN(_i.y)||isNaN(_i.z))){let{a:t,b:o,c:i}=Hr,a=t.toArray(),s=o.toArray(),l=i.toArray(),c=t.distanceTo(o),u=o.distanceTo(i),p=i.distanceTo(t),d=Cs(a,s),f=Cs(s,l),h=Cs(l,a),m=[c,u,p],y=Math.max(...m),b=m.filter(C=>Math.round(C)===Math.round(y)).length>1,S=[],P=Hr.getMidpoint(_i).toArray();y===c&&!b&&(S=[f,h,h],P=d),y===u&&!b&&(S=[d,h,h],P=f),y===p&&!b&&(S=[d,f,f],P=h),b&&(S=[d,f,h]),r.push({vertices:[a,s,l],faceCenters:S,midpoint:P,norm:Hr.getNormal(vd).toArray()})}return r}function nv(n){let r=[],{position:e}=n.attributes;for(let t=0;t<e.count;t++){Hr.setFromAttributeAndIndices(e,t*3,t*3+1,t*3+2),Hr.getNormal(vd),Hr.getMidpoint(_i);let o=Hr.a.toArray(),i=Hr.b.toArray(),a=Hr.c.toArray();r.push({vertices:[o,i,a],faceCenters:[Cs(o,i),Cs(i,a),Cs(a,o)],midpoint:_i.toArray(),norm:vd.toArray()})}return r}var wE=4,PE=.5,fh=n=>.5*(1-Math.cos(n*Math.PI)),hh=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 b=0;b<4095+1;b++)this.perlin[b]=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,f=.5,h,m,y;for(let b=0;b<wE;b++){let S=o+(i<<4)+(a<<8);u=fh(s),p=fh(l),h=this.perlin[S&4095],h+=u*(this.perlin[S+1&4095]-h),m=this.perlin[S+16&4095],m+=u*(this.perlin[S+16+1&4095]-m),h+=p*(m-h),S+=256,m=this.perlin[S&4095],m+=u*(this.perlin[S+1&4095]-m),y=this.perlin[S+16&4095],y+=u*(this.perlin[S+16+1&4095]-y),m+=p*(y-m),h+=fh(c)*(m-h),d+=h*f,f*=PE,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()}},iv=hh;var Os=require("three");var av=new Os.Vector3,sv=new Os.Matrix4,lv=new Os.Ray;function cv(n){let r=!1;return n.scene.objects.traverse((e,t)=>{t.type==="Mesh"&&(t.geometry.type==="TextGeometry"||t.geometry.type==="InputGeometry")&&(r=!0)}),r}var Yn=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)&&(sv.copy(o).invert(),lv.copy(e.ray).applyMatrix4(sv),lv.intersectBox(this.singleBBox,av))){let i=av.applyMatrix4(o),a=e.ray.origin.distanceTo(i);t.push({distance:a,point:i.clone(),object:this})}}};var hr=1e-4,Lo,pv,fv,hv,uv=new Je.Vector3,dv=new Je.Vector3;qu.then(n=>{Lo=n,pv=[Lo.get_face_center,Lo.get_edge_midpoint,Lo.get_vertex_position],fv=[Lo.get_face_normal,Lo.get_edge_normal,Lo.get_vertex_normal],hv=[Lo.face_count,Lo.edge_count,Lo.vertex_count]});var CE=new Je.Matrix4,OE=new Je.Matrix4,Xn=new Je.Vector3,Sd=new Je.Vector3,$l=new Je.Vector3,mh=new Je.Vector3,AE=new Je.Vector3,TE=new Je.Vector3;var yh=class{constructor(r,e){this.data=r;this.is3D=e;this.perlin=new iv;r.noiseType==="perlin"?(this.perlin.noiseSeed(r.seed),e?this.noise=(o,i,a)=>this.perlin.noise(o,i,a):this.noise=o=>this.perlin.noise(o)):e?this.noise=jx((0,wd.default)(r.seed)):this.noise=Fx((0,wd.default)(r.seed))}},As=class extends Ea(Je.Object3D){constructor(e,t){super();this.parameters=t;this.objectForSample=void 0;this._pendingMediaLoad=!1;this.random=null;this.object=e}resetOnMove(){this.removeFromParent(),this.parent=null}expandClones(e){if(this.parent===null)this.updateState(this.parameters,e);else for(let t of this.children)t instanceof tn&&t.expand()}invalidateTransform(e){this.matrixWorldNeedsUpdate=!0,this.traverse(t=>{t instanceof tn&&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){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 tn(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 tn(this.object);a.expand(),this.add(a)}else for(let o=0,i=this.children.length-t;o<i;++o)this.remove(this.children[o])}}getRandom(e,t=!1){return(this.random===null||this.random.data.seed!==e.seed||this.random.is3D!==t)&&(this.random=new yh(e,t)),this.random}_updateRadial(e){let t=e.radial,o=t.start*Je.MathUtils.DEG2RAD,i=t.end*Je.MathUtils.DEG2RAD,a=o-i,s=new Je.Euler(t.rotation[0],t.rotation[1],t.rotation[2]),l;switch(t.axis){case"z":l=new Je.Vector3(0,0,1);break;case"y":l=new Je.Vector3(0,1,0);break;default:case"x":l=new Je.Vector3(1,0,0);break}let c=e.randomnessObject??Oo.defaultData([1,1,1]).randomnessObject,u=this.getRandom(c),p=ql(c.strength,this.parameters.randomness);for(let[d,f]of this.children.entries()){let h=d*(c.freqScale/10)+c.movement,m=u.noise(h,h,h),y=d+1;f.scale.x=t.scale[0]+p(y,Me(m,c.scale[0]))||hr,f.scale.y=t.scale[1]+p(y,Me(m,c.scale[1]))||hr,f.scale.z=t.scale[2]+p(y,Me(m,c.scale[2]))||hr,f.position.setScalar(0);let b=a/e.count*d-o;switch(t.axis){case"x":f.rotation.set(0,b,0);break;case"y":f.rotation.set(0,0,b);break;case"z":f.rotation.set(b,0,0);break}f.translateOnAxis(l,t.radius),f.position.x+=t.position[0]+p(y,Me(m,c.position[0])),f.position.y+=t.position[1]+p(y,Me(m,c.position[1])),f.position.z+=t.position[2]+p(y,Me(m,c.position[2]));let S=p(y,Me(m,c.rotation[0])),P=p(y,Me(m,c.rotation[1])),C=p(y,Me(m,c.rotation[2]));t.alignment===!0?(f.rotation.x+=s.x+S,f.rotation.y+=s.y+P,f.rotation.z+=s.z+C):f.rotation.set(s.x+S,s.y+P,s.z+C)}}_updateLinear(e){if(e.type!=="linear")throw new Error;let t=e.linear,o=new Je.Euler(t.rotation[0],t.rotation[1],t.rotation[2]),i=e.randomnessObject??Oo.defaultData([1,1,1]).randomnessObject,a=this.getRandom(i),s=ql(i.strength,this.parameters.randomness);for(let[l,c]of this.children.entries()){let u=l*(i.freqScale/10)+i.movement,p=a.noise(u,u,u),d=l+1,f=s(d,Me(p,i.rotation[0])),h=s(d,Me(p,i.rotation[1])),m=s(d,Me(p,i.rotation[2]));c.scale.x=1+(t.scale[0]-1)*l+s(d,Me(p,i.scale[0]))||hr,c.scale.y=1+(t.scale[1]-1)*l+s(d,Me(p,i.scale[1]))||hr,c.scale.z=1+(t.scale[2]-1)*l+s(d,Me(p,i.scale[2]))||hr,c.rotation.x=o.x*l+f,c.rotation.y=o.y*l+h,c.rotation.z=o.z*l+m,c.position.x=t.position[0]*l+s(d,Me(p,i.position[0])),c.position.y=t.position[1]*l+s(d,Me(p,i.position[1])),c.position.z=t.position[2]*l+s(d,Me(p,i.position[2]))}}_updateGrid(e){let t=0,o=e.grid,i=e.randomnessObject??Oo.defaultData([1,1,1]).randomnessObject,a=this.getRandom(i,!0),s=ql(i.strength,this.parameters.randomness);if(o.useCenter===!0){let l={x:o.count[0]%2===0?2:1,y:o.count[1]%2===0?2:1,z:o.count[2]%2===0?2:1},c=new Je.Vector3(o.size[0]*(o.count[0]-l.x)*.5,o.size[1]*(o.count[1]-l.y)*.5,o.size[2]*(o.count[2]-l.z)*.5);for(let u=0;u<o.count[0];u++)for(let p=0;p<o.count[1];p++)for(let d=0;d<o.count[2];d++){let f=a.noise((u+1)*(i.freqScale/10)+i.movement,(p+1)*(i.freqScale/10)+i.movement,(d+1)*(i.freqScale/10)+i.movement),h=this.children[t++];h.scale.x=1+s(t,Me(f,i.scale[0]))||hr,h.scale.y=1+s(t,Me(f,i.scale[1]))||hr,h.scale.z=1+s(t,Me(f,i.scale[2]))||hr;let m=s(t,Me(f,i.rotation[0])),y=s(t,Me(f,i.rotation[1])),b=s(t,Me(f,i.rotation[2]));h.rotation.set(m,y,b),h.position.x=o.size[0]*u-c.x+s(t,Me(f,i.position[0])),h.position.y=o.size[1]*p-c.y+s(t,Me(f,i.position[1])),h.position.z=o.size[2]*d-c.z+s(t,Me(f,i.position[2]))}}else for(let l=0;l<o.count[0];l++)for(let c=0;c<o.count[1];c++)for(let u=0;u<o.count[2];u++){let p=a.noise((l+1)*(i.freqScale/10)+i.movement,(c+1)*(i.freqScale/10)+i.movement,(u+1)*(i.freqScale/10)+i.movement),d=this.children[t++];d.scale.x=1+s(t,Me(p,i.scale[0]))||hr,d.scale.y=1+s(t,Me(p,i.scale[1]))||hr,d.scale.z=1+s(t,Me(p,i.scale[2]))||hr;let f=s(t,Me(p,i.rotation[0])),h=s(t,Me(p,i.rotation[1])),m=s(t,Me(p,i.rotation[2]));d.rotation.set(f,h,m),d.position.x=o.size[0]*l+s(t,Me(p,i.position[0])),d.position.y=-o.size[1]*c+s(t,Me(p,i.position[1])),d.position.z=-o.size[2]*u+s(t,Me(p,i.position[2]))}}_updateToObject(e){if(e.type!=="toObject")throw new Error;let{toObject:t}=e,o=new Je.Euler(t.rotation[0],t.rotation[1],t.rotation[2]),i=e.randomnessObject??Oo.defaultData([1,1,1]).randomnessObject,a=this.getRandom(i),s=ql(i.strength,this.parameters.randomness);if(!t.object){for(let[,d]of this.children.entries())d.position.set(0,0,0),d.scale.setScalar(1),d.rotation.set(0,0,0);this.objectForSample=void 0;return}if(!this.objectForSample)return;if(this.objectForSample instanceof Yn)if(!this.objectForSample.font?.isLoaded||this.objectForSample.geometry.attributes.position===void 0){this._pendingMediaLoad=!0;return}else this._pendingMediaLoad=!1;if(this.objectForSample.geometry===void 0&&this.objectForSample.isAncestorOf(this.object.uuid)){console.warn(`Oh no! The object "${this.object.name}" (${this.object.uuid}) seem to be a child/descendant of the object it's being cloned to. Please re-parent it so that they are siblings instead.`);return}let l=this.getSubdivData();if(l.length>0){let d=Math.round(l.length*t.count/100);this._updateCount(d)}else{let d=this.objectForSample.geometry.getAttribute("position");if(!d||isNaN(d.count)||d.count===0){console.warn(`Oh no! The object "${this.object.name}" (${this.object.uuid}) cannot be cloned on the surface of "${this.objectForSample.name}" (${this.objectForSample.uuid}) because the latter does not have a valid geometry.`);return}}this.objectForSample.updateMatrixWorld();let c=new Iu(this.objectForSample).build(),u=tv[t.axis],p=this.children;c.setRandomGenerator((0,wd.default)(this.object.uuid+t.seed));for(let[d,f]of p.entries()){let h=d*(i.freqScale/10)+i.movement,m=a.noise(h,h,h),y=d+1,b=s(y,Me(m,i.rotation[0])),S=s(y,Me(m,i.rotation[1])),P=s(y,Me(m,i.rotation[2]));t.spreadType==="random"?c.sample($l,mh):(l.length&&($l.fromArray(l[d].pos),mh.fromArray(l[d].norm)),this.objectForSample instanceof Di&&$l.applyMatrix4(CE.copy(this.objectForSample.matrixWorld).invert())),$l.applyMatrix4(this.object.hiddenMatrix.clone().invert()),f.position.copy($l),Xn.fromArray(u);let C=t.align==="normal"?mh:this.object.getWorldDirection(TE),v=Sd.fromArray(t.position);Sd.x+=s(y,Me(m,i.position[0])),Sd.y+=s(y,Me(m,i.position[1])),Sd.z+=s(y,Me(m,i.position[2]));let A=Math.acos(C.dot(Xn)),T=AE.crossVectors(Xn,C).normalize(),g=OE.makeRotationAxis(T,A),D=C.clone().cross(this.object.up).normalize(),E=D.clone().cross(C).normalize(),M=new Je.Matrix4().makeBasis(D,C,E),N=new Je.Vector3(Xn.y,Xn.z,Xn.x).normalize(),_=N.clone().cross(Xn).normalize(),B=new Je.Matrix4().makeBasis(N,Xn,_).invert(),V=new Je.Matrix4().multiplyMatrices(M,B);f.rotation.setFromRotationMatrix(V),v.applyMatrix4(g),f.position.add(v),f.rotation.x=f.rotation.x+o.x+b,f.rotation.y=f.rotation.y+o.y+S,f.rotation.z=f.rotation.z+o.z+P,f.scale.setScalar(1),f.scale.x=f.scale.x+t.scale[0]+s(y,Me(m,i.scale[0]))||hr,f.scale.y=f.scale.y+t.scale[1]+s(y,Me(m,i.scale[1]))||hr,f.scale.z=f.scale.z+t.scale[2]+s(y,Me(m,i.scale[2]))||hr,f.scale.multiply(this.object.scale),f.hiddenMatrix=this.object.hiddenMatrix}}getSubdivData(){if(!this.objectForSample)return[];let e=this.parameters.toObject.spreadType,t=new Map,o=(a,s)=>{let l=Math.round(a[0]*1e4)+"_"+Math.round(a[1]*1e4)+"_"+Math.round(a[2]*1e4),c=t.get(l);c?(c.pos[0]+=a[0],c.pos[1]+=a[1],c.pos[2]+=a[2],c.norm[0]+=s[0],c.norm[1]+=s[1],c.norm[2]+=s[2],c.count+=1):t.set(l,{pos:[...a],norm:[...s],count:1})};if(e==="random")return[];if(this.objectForSample instanceof Di){let a=this.objectForSample,s=rv[e],l=hv[s],c=pv[s],u=fv[s],p=l(a.subdivPointerNew);for(let d=0;d<=p-1;d++){let f=c(a.subdivPointerNew,d),h=u(a.subdivPointerNew,d);uv.fromArray(f).applyMatrix4(a.matrixWorld),dv.fromArray(h),o(uv.toArray(),dv.toArray())}}else(this.objectForSample.geometry.index?ov(this.objectForSample.geometry):nv(this.objectForSample.geometry)).forEach((s,l)=>{e==="polygon_center"&&o(s.midpoint,s.norm),e==="vertex"&&(o(s.vertices[0],s.norm),o(s.vertices[1],s.norm),o(s.vertices[2],s.norm)),e==="edge"&&(o(s.faceCenters[0],s.norm),o(s.faceCenters[1],s.norm),o(s.faceCenters[2],s.norm))});let i=Array.from(t.values());for(let a of i)a.pos[0]/=a.count,a.pos[1]/=a.count,a.pos[2]/=a.count,a.norm[0]/=a.count,a.norm[1]/=a.count,a.norm[2]/=a.count;return i}updateState(e,t){if(this.parameters=qo(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 Ft?this.objectForSample=o:this.objectForSample=void 0,this.matrix=new Je.Matrix4,this.hiddenMatrix=new Je.Matrix4,this.matrixWorldNeedsUpdate=!0,this.matrixAutoUpdate=!1,o&&o.add(this)}this.update()}get pendingMediaLoad(){return this._pendingMediaLoad}};var Qr=require("three");var mt=require("three");var nr=require("three");var mv=require("three"),Vo=n=>{var r;return r=class extends n{},r.geometryHelper=new mv.BoxGeometry(30,30,30),r};var lr=require("three"),Pd=new lr.Ray,gh=new lr.Sphere,yv=new lr.Matrix4,zo=(n,r,e,t,o=!1,i=n)=>{let a=r,s=i.matrixWorld;if(a.boundingSphere===null&&a.computeBoundingSphere(),gh.copy(a.boundingSphere),gh.applyMatrix4(s),e.ray.intersectsSphere(gh)===!1||(yv.copy(s).invert(),Pd.copy(e.ray).applyMatrix4(yv),a.boundingBox!==null&&Pd.intersectsBox(a.boundingBox)===!1))return;let l,c,u,p,d=a.index,f=a.attributes.position,h=a.drawRange,m,y;if(o===!1){let S=Math.max(0,h.start),P=Math.min(d.count,h.start+h.count);for(m=S,y=P;m<y;m+=3)if(c=d.getX(m),u=d.getX(m+1),p=d.getX(m+2),l=b(n,e,Pd,f,c,u,p),l){l.faceIndex=Math.floor(m/3),t.push(l);return}}else{let P=a.attributes.position,C=new lr.Vector3,v=new lr.Vector3,A=new lr.Vector3,T=new lr.Vector3,g=2,E=1/((i.scale.x+i.scale.y+i.scale.z)/3),M=E*E,N=Math.max(0,h.start),_=Math.min(P.count,h.start+h.count);for(let B=N,V=_-1;B<V;B+=g){if(C.fromBufferAttribute(P,B),v.fromBufferAttribute(P,B+1),Pd.distanceSqToSegment(C,v,T,A)>M)continue;T.applyMatrix4(i.matrixWorld);let L=e.ray.origin.distanceTo(T);L<e.near||L>e.far||t.push({distance:L,point:A.clone().applyMatrix4(i.matrixWorld),object:n})}}function b(S,P,C,v,A,T,g){let D=new lr.Vector3,E=new lr.Vector3,M=new lr.Vector3,N=new lr.Vector3,_=new lr.Vector3;if(D.fromBufferAttribute(v,A),E.fromBufferAttribute(v,T),M.fromBufferAttribute(v,g),C.intersectTriangle(D,E,M,!1,N)===null)return null;_.copy(N),_.applyMatrix4(S.matrixWorld);let V=P.ray.origin.distanceTo(_);return V<P.near||V>P.far?null:{faceIndex:1,distance:V,point:_.clone(),object:S}}};var Cd=new nr.Vector3,Wr=new nr.Camera,xh=class extends nr.LineSegments{constructor(e){let t=new nr.BufferGeometry,o=new nr.LineBasicMaterial({color:16777215,vertexColors:!0,toneMapped:!1}),i=[],a=[],s={},l=new nr.Color(15711266),c=new nr.Color(15711266),u=new nr.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(f,h,m){d(f,m),d(h,m)}function d(f,h){i.push(0,0,0),a.push(h.r,h.g,h.b),s[f]===void 0&&(s[f]=[]),s[f].push(i.length/3-1)}t.setAttribute("position",new nr.Float32BufferAttribute(i,3)),t.setAttribute("color",new nr.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;Wr.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;yo("n1",t,e,Wr,-i,-a,s),yo("n2",t,e,Wr,i,-a,s),yo("n3",t,e,Wr,-i,a,s),yo("n4",t,e,Wr,i,a,s);let l=s;yo("f1",t,e,Wr,-i,-a,l),yo("f2",t,e,Wr,i,-a,l),yo("f3",t,e,Wr,-i,a,l),yo("f4",t,e,Wr,i,a,l);let c=l,u=.5;yo("u1",t,e,Wr,i*.7*u,a*1.1,c),yo("u2",t,e,Wr,-i*.7*u,a*1.1,c),yo("u3",t,e,Wr,0,a*(1.1+.9*u),c),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function yo(n,r,e,t,o,i,a){Cd.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],Cd.x,Cd.y,Cd.z)}}var Od=class extends Vo(xh){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){zo(this.object,this.geometry,e,t,!0)}};var Yl=require("three");var Ad;(r=>r.is=e=>"objectHelper"in e)(Ad||(Ad={}));var qr=(n,r)=>class extends _a(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 Yl.Box3Helper&&(i.visible=!0)}}updateEntityBoxSize(o,i){this.objectHelper.visible&&this.geometryHelper instanceof Yl.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 Yl.Box3Helper&&(i.visible=!1)}}};var Td=790,Ts=new mt.Vector3,bh=new mt.Vector3,vh=new mt.Quaternion,Sh=new mt.Vector3,Xl=new mt.Vector3,wh=new mt.Vector3,fn=class extends qr(mt.Camera,Od){constructor(e="",t={...mi.defaultData,name:""}){super();this._cameraType="OrthographicCamera";this.targetOffset=Nn.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.wasMovedByUser=!1;this.wasMovedBySwitchCameraAction=!1;this.super_Entity(e,t),this.previousProjectionMatrix=new mt.Matrix4,this.matrixAutoUpdate=!0,this.width=window.innerWidth,this.height=window.innerHeight;let o=this.width,i=this.height;this.orthoCamera=new mt.OrthographicCamera(o*-.5,o*.5,i*.5,i*-.5,-5e4,1e4),this.perspCamera=new mt.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 mt.Vector3(e,t,o)),super.lookAt(e),this.getWorldPosition(Ts),this.targetOffset=Ts.distanceTo(e)}getTarget(e=new mt.Vector3){return this.getWorldDirection(bh),this.getWorldPosition(Ts),bh.multiplyScalar(this.targetOffset),e.copy(Ts).add(bh),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(Ts),Ts.distanceTo(e)}updateUp(){this.getWorldQuaternion(vh),Sh.set(0,0,1).applyQuaternion(vh),Xl.copy(mt.Object3D.DEFAULT_UP),this.isUpVectorFlipped&&Xl.negate(),Xl.applyQuaternion(vh),wh.copy(mt.Object3D.DEFAULT_UP).projectOnPlane(Sh),this.angleOffsetFromUp=wh.angleTo(Xl),this.angleOffsetFromUp*=wh.cross(Xl).dot(Sh)>=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 mt.Vector3),i=e.getWorldDirection(new mt.Vector3).multiplyScalar(this.targetOffset);return{position:t.clone().add(i),target:t}}getViewToTarget(e){let o=this.getWorldDirection(new mt.Vector3).multiplyScalar(this.targetOffset);return{position:e.clone().sub(o),target:e}}getViewToObject(e){let t=new mt.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=-Td*.5*i,this.right=Td*.5*i,this.top=Td*.5*(1/a),this.bottom=-Td*.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 sa(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 EE=require("three");var Kn=require("three");var Is=new Kn.Matrix4,ME=new Kn.Matrix4;var Cr=class extends Pr{constructor(e,t,o){super(e,t);this.data=t;this.meshSetAddresses=[];this.needsTransformForDownstream=!1;this.geometry=new Kn.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 Cr&&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 Ft&&a.dataPatched.visible===!0&&a.geometry.attributes.position?.count>0&&a.geometry.drawRange.count>0&&a.booleanMeshSetAddress!==0){Is.multiplyMatrices(a.hiddenMatrix,a.matrix);try{if(a.booleanMeshSetAddress===-1){if((a.geometry.index??a.geometry.getAttribute("position")).count/3<15e5&&(a.booleanMeshSetAddress=jr.getMeshSet(a.geometry,e===!0,t)),a.booleanMeshSetAddress===-1)return;jr.transformMeshSet(a.booleanMeshSetAddress,Is),a.booleanMatrixInvOld.copy(Is).invert(),a.booleanWasTransformed=!1}else a instanceof Cr&&a.needsTransformForDownstream===!0?(jr.transformMeshSet(a.booleanMeshSetAddress,Is),a.needsTransformForDownstream=!1):a.booleanWasTransformed===!0&&(jr.transformMeshSet(a.booleanMeshSetAddress,ME.multiplyMatrices(Is,a.booleanMatrixInvOld)),a.booleanMatrixInvOld.copy(Is).invert(),a.booleanWasTransformed=!1)}catch(s){console.error(s),a.booleanMeshSetAddress=0,a.geometry.userData.booleanOperationDidFail=!0;continue}jr.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 Kn.Float32BufferAttribute([],0)),this.geometry.setDrawRange(0,0);return}if(e===!0)return jr.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let o=this.geometry;o.dispose(),this.geometry=new Kn.BufferGeometry,this.geometry.userData=o.userData,this.geometry.boundingSphere=o.boundingSphere;try{this.booleanMeshSetAddress=jr.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,ws(this),Ps(this)}dispose(){super.dispose(),this.geometry.dispose()}};var xv=require("three");var gv;(r=>{function n(e){return je.is(e)&&e instanceof xv.Light}r.is=n})(gv||(gv={}));var Ms=(n,r)=>class extends qr(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 Qn=n=>n instanceof Ft,Kl=n=>n!==null&&n instanceof Cr;var Ql=n=>Ad.is(n);var Sv=require("three");var Go=require("three");var NE=new Go.Vector3(1,1,1),bv=new Go.Vector3,DE=new Go.Vector3,vv=new Go.Quaternion,$r=class extends Vo(Go.AxesHelper){constructor(e,t=15){super(t);this.object=e;this.dummy=new Go.Group;this.object.updateMatrixWorld(),this.name=`EmptyObjectHelper: ${e.uuid}`,this.matrix=this.dummy.matrixWorld,this.matrixAutoUpdate=!1,this.object.isBone&&(this.visible=!1)}raycast(e,t){zo(this.object,$r.geometryHelper,e,t,!1,this.dummy)}update(){}updateMatrix(){}updateMatrixWorld(e){this.object.matrixWorld.decompose(bv,vv,DE),this.matrix.compose(bv,vv,NE),super.updateMatrixWorld(e)}updateWorldMatrix(e,t){}};var Zn=class extends qr(Sv.Group,$r){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 wv=require("three");var Id=class extends qr(wv.Group,$r){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 Vs=require("three");var Es=require("three"),_E=n=>`
2549
2582
 
2550
2583
  // PCSS implementation based on:
2551
2584
  // https://www.gamedev.net/articles/programming/graphics/contact-hardening-soft-shadows-made-fast-r4906/
@@ -2919,18 +2952,18 @@ float vogelShadow(int index, sampler2D shadowMap, vec2 uv, float texelSize, floa
2919
2952
  }
2920
2953
 
2921
2954
  #endif
2922
- `,RE=Ds.ShaderChunk.lights_fragment_begin,LE=Ds.ShaderChunk.shadowmask_pars_fragment,Ov=null,VE=n=>{switch(n){case"low":return 8;case"medium":return 16;case"high":return 32;default:return 16}},Av=(n="medium")=>{if(Ov===n)return!1;Ov=n;let r=VE(n);Ds.ShaderChunk.shadowmap_pars_fragment=BE(r);let e=RE.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 ]"),Ds.ShaderChunk.lights_fragment_begin=e;let t=LE.slice();return t=t.replaceAll("getShadow(","getShadow( UNROLLED_LOOP_INDEX, "),Ds.ShaderChunk.shadowmask_pars_fragment=t,!0};var rc=require("three");var Tv=require("three");var _s=class extends Vo(Tv.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){zo(this.object,_s.geometryHelper,e,t)}};var Iv=require("three");var Bs=class extends Vo(Iv.PointLightHelper){constructor(e,t=15,o=6710886){super(e,t,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,t){zo(this.object,Bs.geometryHelper,e,t)}};var _d=require("three");var Dd=class extends Vo(_d.SpotLightHelper){constructor(e,t=6710886){super(e,t);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,t){zo(this.object,Dd.geometryHelper,e,t)}update(){if(this.object!==void 0){let e=Dd._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)}}},tc=Dd;tc._vector=new _d.Vector3;function zE(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 Rs=class extends Ns(rc.DirectionalLight,_s){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 rc.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 rc.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&&zE(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 tS=require("three");var Yr=require("three");var Mv=new Yr.Vector3,Ev=new Yr.Vector3,Nv=new Yr.Quaternion,Ls=class extends Ns(Yr.SpotLight,tc){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=Yr.MathUtils.RAD2DEG*2*this.angle,i.aspect=1,i.near=100,i.far=2500;let a=new Yr.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 Yr.CameraHelper&&e.update()}}updateMatrixWorld(r){super.updateMatrixWorld(r),Ev.setFromMatrixPosition(this.matrixWorld),Nv.setFromRotationMatrix(this.matrixWorld),Mv.copy(this.up).applyQuaternion(Nv).negate().multiplyScalar(this.distance),this.target.position.copy(Ev).add(Mv),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 GE(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 Bd(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 Dv(n){return[[n[0][0],n[1][0]],[n[0][1],n[1][1]]]}function _v(n){let[r,e,t]=GE(n),o=Bd(r,Dv(t)),i=Bd(Bd(t,e),Dv(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 Bv({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=Bd(i,a);return[s[0][0],s[1][0],s[0][1],s[1][1]]}var Be;(S=>{function n(){return[1,0,0,0,1,0,0,0,1]}S.identity=n;function r(C,T=S.identity()){for(let x=0,N=C.length;x<N;x++)T[x]=C[x];return T}S.copy=r;function e(C,T,x,N,E,M){return S.setAbcdef(S.identity(),C,T,x,N,E,M)}S.create=e;function t(C,T,x,N,E,M,D){return C[0]=T,C[1]=N,C[2]=M,C[3]=x,C[4]=E,C[5]=D,C}S.setAbcdef=t;function o(C,T){let[x,N,E,M,D,_]=a(C),[B,V,k,L,W,F]=a(T),j=B*x+V*E,H=B*N+V*M,q=k*x+L*E,re=k*N+L*M,ee=W*x+F*E+D,X=W*N+F*M+_;return S.create(j,H,q,re,ee,X)}S.append=o;function i(C,T){let[x,N,E,M,D,_]=a(C),[B,V,k,L,W,F]=a(T),j=x,H=N,q=E,re=M;(B!==1||V!==0||k!==0||L!==1)&&(j=x*B+N*k,H=x*V+N*L,q=E*B+M*k,re=E*V+M*L);let ee=D*B+_*k+W,X=D*V+_*L+F;return S.create(j,H,q,re,ee,X)}S.prepend=i;function a(C){return[C[0],C[3],C[1],C[4],C[2],C[5]]}S.getAbcdef=a;function s(C){let[T,x,N,E,M,D]=S.getAbcdef(C),_=T*E-x*N,B=E/_,V=-x/_,k=-N/_,L=T/_,W=(N*D-E*M)/_,F=-(T*D-x*M)/_;return S.create(B,V,k,L,W,F)}S.invert=s;function l([C,T],x){let[N,E,M,D,_,B]=S.getAbcdef(x);return[N*C+M*T+_,E*C+D*T+B]}S.apply=l;function c(C,T){let[x,N,E,M,D,_]=S.getAbcdef(T),B=1/(x*M+E*-N),[V,k]=C;return[M*B*V+-E*B*k+(_*E-D*M)*B,x*B*k+-N*B*V+(-_*x+D*N)*B]}S.applyInverse=c;function u(C,T,x=T){let[N,E,M,D,_,B]=S.getAbcdef(C);return S.setAbcdef(C,N*T,E*x,M*T,D*x,_*T,B*x),C}S.scale=u;function p(C,T){let x=Math.cos(T),N=Math.sin(T),[E,M,D,_,B,V]=S.getAbcdef(C);return S.setAbcdef(C,E*x-M*N,E*N+M*x,D*x-_*N,D*N+_*x,B*x-V*N,B*N+V*x),C}S.rotate=p;function d(C,T,x){let[N,E]=x,M=S.translate(C,-N,-E);return M=S.rotate(M,T),M=S.translate(M,N,E),M}S.rotateAround=d;function h(C,T,x){let[N,E,M,D,_,B]=S.getAbcdef(C);return S.setAbcdef(C,N,E,M,D,_+T,B+x),C}S.translate=h;function f(C,T,x){let[N,E,M,D]=S.getAbcdef(C);return S.setAbcdef(C,N,E,M,D,T,x),C}S.setTranslate=f;function m(C,T,x){let[N,E,M,D]=S.getAbcdef(C);return S.setAbcdef(C,N,E,M,D,T,x),C}S.setPosition=m;function y(C){let[T,x,N,E]=S.getAbcdef(C),M=Math.sqrt(T*T+x*x),D=Math.sqrt(N*N+E*E);return[M,D]}S.getScale=y;function g(C){let[,,,,T,x]=S.getAbcdef(C);return[T,x]}S.getPosition=g;function v(C,T){return S.decompose(C,T).rotation}S.getRotation=v;function w(C,T){let[x,N,E,M,D,_]=S.getAbcdef(C),{rotation:B,scale:V,shear:k}=_v([[x,E],[N,M]]);return{position:[D+(T[0]*x+T[1]*E)-T[0],_+(T[0]*N+T[1]*M)-T[1]],scale:V,rotation:B,shear:k,pivot:T}}S.decompose=w;function O(C,T,x,N,E=[0,0]){let[M,D]=C,[_,B]=N,[V,k,L,W]=Bv({rotation:x,scale:T,shear:E}),F=M-(_*V+B*L)+_,j=D-(_*k+B*W)+B;return S.create(V,k,L,W,F,j)}S.compose=O})(Be||(Be={}));var FE=Math.PI/180,ste=180/Math.PI;function Rv(n,r,e,t,o,i){let a=n-e,s=r-t;return a*a/(o*o)+s*s/(i*i)<=1}function Lv(n){return n*FE}var mn=class{constructor(r,e,t){this.uuid=r;this.data=e;this.localMatrix=Be.identity();this.worldMatrix=Be.identity();this.ignoreCameraZoom=!1;this.visible=!0;this._singleBBox=new ei;this._recursiveBBox=new ei;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=nn();this.dpr=t.dpr??1,this.dataPatched=e}project(r,e){let t=this.worldMatrix;return e&&(t=Be.append(e.worldMatrix,t)),Be.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=Be.compose(this.position,this.scale,Lv(this.rotation),en.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=Be.append(this.parent.worldMatrix,this.localMatrix):this.worldMatrix=Be.copy(this.localMatrix),this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0}get pivot(){return en.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=Fe(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=ct.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=ct.removeOverridden(r.path,r.props,a);o={...r,props:s}}}this.updateByPatchedOpBase(o,xi.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)xi.toOps(this.data,o.data).forEach(a=>{let s=fa.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=xi.patch(this.data,o),xi.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 mn(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 mn&&(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 mn{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)}intersectsChildrenHelper(e,t,o,i,a){for(let s of this.children)if(s.intersects(e,t,o,!1)&&(a.push(s),i)||s instanceof ir&&s.intersectsChildrenHelper(e,t,o,i,a))return!0;return!1}intersectsChildren(e,t,o,i=!1,a=[],s=!1){return this.intersectsChildrenHelper(e,t,o,i,a),a}intersectsChildrenHelperReverse(e,t,o,i,a){for(let s of this.children)if(s instanceof ir&&s.intersectsChildrenHelperReverse(e,t,o,i,a)||s.intersects(e,t,o,!1)&&(a.push(s),i))return!0;return!1}intersectsChildrenReverse(e,t,o,i=!1,a=[],s=!1){return this.intersectsChildrenHelperReverse(e,t,o,i,a),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}},Or=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 Or(this.uuid,this.data,e);t.parent=void 0;for(let o of this.children)t.add(o.clone(e));return t}};function jE(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 zv=[[-1,1],[-1,-1],[1,-1],[1,1]],Vv=(n,r,e)=>{let t=n.getCenter(),o=n.getHalfSize(),i=Be.append(r,n.worldMatrix);o[0]===0&&o[1]===0?e.push(Be.apply(t,i)):zv.forEach(a=>{let s=[a[0]*o[0]+t[0],a[1]*o[1]+t[1]];e.push(Be.apply(s,i))})},ei=class{constructor(){this.matrix=Be.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(),Be.copy(r.worldMatrix,this.matrix);let t=Be.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&&Vv(i,e,o)}):Vv(r,e,o),this.setFromPoints(o)}setFromSize(r,e,t){this.makeEmpty(),Be.copy(t,this.matrix),this.expandBySize(r,e,t)}expandBySize(r,e,t){[Be.apply([0,0],t),Be.apply([0,e],t),Be.apply([r,e],t),Be.apply([r,0],t)].forEach(i=>this.expandByPoint(i))}getCenter(){let[r,e]=this.min,[t,o]=this.getHalfSize();return Be.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]=Be.getAbcdef(this.matrix),l=Be.create(o,i,a,s,t[0],t[1]);this.vertices=zv.map(([c,u])=>Be.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=Be.append(e.worldMatrix,t)),Be.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(jE(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],Be.copy(r.matrix,this.matrix),this.computeVertices(),this.computeEdges()}clone(){let r=new ei;return r.copy(this),r}};var Fv,jv=new Promise(n=>{Fv=n}),Gv=!1;var Rd;function kv(){if(Gv)return;if(Rd)return Rd;async function n(){let e=await import("./ui.js");Fv(e.default??e),Gv=!0}return Rd=n(),Rd}function Wv(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 Te,Ah;async function kE(n){let r=await jv;Te||(Ah||(Ah=r({locateFile:()=>n})),Te=await Ah)}var Uv=Be.identity(),nc=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=Uv,this._currentTransform=new Float32Array(Uv)}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 kE(this.wasmURL),this._surface=Te.MakeWebGLCanvasSurface(this.canvas),this.ctx=this._surface?.getCanvas(),this._paint=new Te.Paint,this._paint.setAntiAlias(!0),this._paintFill=this._paint.copy(),this._paintFill.setStyle(Te.PaintStyle.Fill),this._paintStroke=this._paint.copy(),this._paintStroke.setStyle(Te.PaintStyle.Stroke),this.ctx?.scale(this.dpr,this.dpr)}get currentTransform(){return this._currentM3Transform}get currentTransformBuffer(){return this._currentTransform}set currentTransform(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=Te.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(Ld(r),Te.ColorSpace.DISPLAY_P3)}set fillColor(r){this._paintFill&&this._paintFill.setColor(Ld(r),Te.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(Te.TRANSPARENT)}save(){this.ctx?.save()}restore(){this.ctx?.restore()}beginPath(){this._currentPath?.delete(),this._currentPath=new Te.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=Te.XYWHRect(r,e,t,o);if(i===0&&a===0&&l===0&&s===0)this.ctx?.clipRect(c,Te.ClipOp.Intersect,!0);else{let u=Te.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,Te.ClipOp.Intersect,!0)}}_applyShadowOffsetMatrix(){if(this.ctx){let r=Be.invert(this.currentTransform);this.ctx.concat(r);let e=Be.translate(Be.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(Ld(this._dropShadowColor));let s;this._dropShadowBlur>0&&(s=Te.MaskFilter.MakeBlur(Te.BlurStyle.Normal,this._dropShadowBlur*this.dpr*(this.camera?.scale??1),!1),a.setMaskFilter(s)),this.ctx.save(),this.ctx.clipPath(this._currentPath,Te.ClipOp.Difference,!0),this._applyShadowOffsetMatrix(),e(a),this.ctx.restore(),a.delete(),s?.delete()}if(this._backgroundBlur>0&&t){this.ctx.save(),this.ctx.clipPath(this._currentPath,Te.ClipOp.Intersect,!0);let a=Te.ImageFilter.MakeBlur(this._backgroundBlur,this._backgroundBlur,Te.TileMode.Clamp,null),s=r.copy();s.setImageFilter(a),s.setAlphaf(1);let l=this._currentPath.computeTightBounds();this.ctx.saveLayer(s,l,null,Te.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=Te.MaskFilter.MakeBlur(Te.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 Te.Paint;a.setAntiAlias(!0),a.setStyle(Te.PaintStyle.Fill),a.setColor(Ld(this._innerShadowColor));let s;this._innerShadowBlur>0&&(s=Te.MaskFilter.MakeBlur(Te.BlurStyle.Normal,this._innerShadowBlur*this.dpr*(this.camera?.scale??1),!1),a.setMaskFilter(s));let l=this._currentPath.computeTightBounds(),[c,u,p,d]=l,h=p-c,f=d-u;this.ctx.save(),this.ctx.clipPath(this._currentPath,Te.ClipOp.Intersect,!0),this.ctx.saveLayer(a,l,null,Te.SaveLayerInitWithPrevious),this.ctx?.translate(this._innerShadowOffsetX,this._innerShadowOffsetY),this.ctx.drawRect(Te.XYWHRect(-1e3-this._innerShadowOffsetX,-1e3-this._innerShadowOffsetY,2e3+h+Math.abs(this._innerShadowOffsetX*2),2e3+f+Math.abs(this._innerShadowOffsetY*2)),a),a.setBlendMode(Te.BlendMode.Clear),this.ctx.drawPath(this._currentPath,a),this.ctx.restore(),this.ctx.restore(),a.delete(),s?.delete()}}}_paintInner(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"?Te.ClipOp.Difference:Te.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(Te.Path.MakeFromSVGString(r))}ellipse(r,e,t,o,i,a,s,l){if(!Hv([r,e,t,o])||!this._currentPath)return;if(t<0||o<0)throw Error("radii cannot be negative");let c=Te.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=Te.XYWHRect(r,e,t,o);if(!!Hv(c))if(i===0&&a===0&&l===0&&s===0)this._currentPath?.addRect(c);else{let u=Te.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 Te.TextAlign.Right;case 3:return Te.TextAlign.Center;case 4:return Te.TextAlign.Justify;case 1:default:return Te.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 Te.TextStyle({fontFamilies:[e.font],fontSize:e.fontSize,heightMultiplier:e.lineHeight,letterSpacing:e.letterSpacing}),c=new Te.ParagraphStyle({textStyle:l,textAlign:this.getHorizontalAlign(e.horizontalAlign)}),u=Te.XYWHRect(e.x,e.y,e.width,e.height),p=Te.ParagraphBuilder.Make(c,o);a&&(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=Be.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=Be.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=Te.MakeWebGLCanvasSurface(this.canvas),this.ctx=this._surface?.getCanvas()))}};function Hv(n){for(let r=0;r<n.length;r++)if(n[r]!==void 0&&!Number.isFinite(n[r]))return!1;return!0}function Ld({r:n,g:r,b:e,a:t}){return Te.Color4f(n,r,e,t)}var ic=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 ac=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 Vd=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 zd=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 Ar=class extends mn{constructor(e,t,o){super(e,t,o);this.uuid=e;this.data=t;this.autoClose=!0;this.fill=new Vd(e+"-fill",t.fill,o),this.stroke=new zd(e+"-stroke",t.stroke,o),this.dropShadow=new ic(e+"-dropShadow",t.dropShadow,o),this.innerShadow=new ic(e+"-innerShadow",t.innerShadow,o),this.backgroundBlur=new ac(e+"-backgroundBlur",t.backgroundBlur,o),this.layerBlur=new ac(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&&(Fe(e.path,["fill"])?this.fill.update(e.props):Fe(e.path,["stroke"])?this.stroke.update(e.props):Fe(e.path,["dropShadow"])?this.dropShadow.update(e.props):Fe(e.path,["innerShadow"])?this.innerShadow.update(e.props):Fe(e.path,["layerBlur"])?this.layerBlur.update(e.props):Fe(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 Ar(this.uuid,this.data,e);return t.parent=void 0,t}};var ti=class extends Ar{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 Rv(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 ti(this.uuid,this.data,e);return t.parent=void 0,t}};var Fo=class extends Ar{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 Fo(this.uuid,this.data,e);return t.parent=void 0,t}};var ri=class extends Ar{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 ri(this.uuid,this.data,e);return t.parent=void 0,t}};var Vs=class extends Ar{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=>Gd.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};Gd.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 Vs(this.uuid,this.data,e);return t.parent=void 0,t}},Gd;(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=Th.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})(Gd||(Gd={}));var Th;(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})(Th||(Th={}));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 Br=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 Fo(e+"-background",Ma.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&&(Fe(e.path,["fill"])?this.fill.update(e.props):Fe(e.path,["stroke"])?this.stroke.update(e.props):Fe(e.path,["dropShadow"])?this.dropShadow.update(e.props):Fe(e.path,["innerShadow"])?this.innerShadow.update(e.props):Fe(e.path,["layerBlur"])?this.layerBlur.update(e.props):Fe(e.path,["backgroundBlur"])?this.backgroundBlur.update(e.props):this.resetBBoxNeedsUpdate())}clone(e){let t=new Br(this.uuid,this.data,e);t.parent=void 0;for(let o of this.children)t.add(o.clone(e));return t}};var Xv=Ys(Mh(),1),yn=class extends Ar{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 yn(this.uuid,this.data,e);return t.parent=void 0,t}};function Kv(n,r=1,e=1){if(r<=0||e<=0)return n;let o=(0,Xv.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 Qv(o)}function Qv(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 Zv(n,r,e){switch(r.type){case"ellipse2d":return new ti(n,r,e);case"rectangle2d":return new Fo(n,r,e);case"text2d":return new ri(n,r,e);case"vector2d":return new Vs(n,r,e);case"path2d":return new yn(n,r,e);case"frame2d":return new Br(n,r,e);case"group2d":default:return new Or(n,r,e)}}var Eh=class{constructor(r,e,t){this.uuid=r;this.data=e;this.group=new Or(Eh.GROUP_ID,{...ul.defaultData},t),this.createChildrenObjects(e.objects,this.group,t)}createObject(r,e,t,o,i,a){let s=Zv(r,e,a);s&&(o.add(s),o.children.splice(i,0,o.children.pop()),s.updateWorldMatrix(),t.length>0&&(s instanceof Or||s instanceof Br)&&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)}intersectsChildrenReverse(r,e,t,o=!1,i=[]){return this.group.intersectsChildrenReverse(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)=>gc(t.sortKey,o.sortKey)),e.map(t=>t.entity)}},Li=Eh;Li.GROUP_ID="scene2d";function Nh({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 qE=Ys(Mh(),1);var Loe={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 Dt=require("three");var $E=`
2955
+ `,BE=Es.ShaderChunk.lights_fragment_begin,RE=Es.ShaderChunk.shadowmask_pars_fragment,Pv=null,LE=n=>{switch(n){case"low":return 8;case"medium":return 16;case"high":return 32;default:return 16}},Cv=(n="medium")=>{if(Pv===n)return!1;Pv=n;let r=LE(n);Es.ShaderChunk.shadowmap_pars_fragment=_E(r);let e=BE.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 ]"),Es.ShaderChunk.lights_fragment_begin=e;let t=RE.slice();return t=t.replaceAll("getShadow(","getShadow( UNROLLED_LOOP_INDEX, "),Es.ShaderChunk.shadowmask_pars_fragment=t,!0};var Jl=require("three");var Ov=require("three");var Ns=class extends Vo(Ov.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){zo(this.object,Ns.geometryHelper,e,t)}};var Av=require("three");var Ds=class extends Vo(Av.PointLightHelper){constructor(e,t=15,o=6710886){super(e,t,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,t){zo(this.object,Ds.geometryHelper,e,t)}};var Ed=require("three");var Md=class extends Vo(Ed.SpotLightHelper){constructor(e,t=6710886){super(e,t);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,t){zo(this.object,Md.geometryHelper,e,t)}update(){if(this.object!==void 0){let e=Md._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)}}},Zl=Md;Zl._vector=new Ed.Vector3;function VE(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 _s=class extends Ms(Jl.DirectionalLight,Ns){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 Jl.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 Jl.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&&VE(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 Jv=require("three");var Yr=require("three");var Tv=new Yr.Vector3,Iv=new Yr.Vector3,Mv=new Yr.Quaternion,Bs=class extends Ms(Yr.SpotLight,Zl){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=Yr.MathUtils.RAD2DEG*2*this.angle,i.aspect=1,i.near=100,i.far=2500;let a=new Yr.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 Yr.CameraHelper&&e.update()}}updateMatrixWorld(r){super.updateMatrixWorld(r),Iv.setFromMatrixPosition(this.matrixWorld),Mv.setFromRotationMatrix(this.matrixWorld),Tv.copy(this.up).applyQuaternion(Mv).negate().multiplyScalar(this.distance),this.target.position.copy(Iv).add(Tv),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 zE(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,f=[[Math.cos(d),Math.sin(d)],[-Math.sin(d),Math.cos(d)]],h=[[s,0],[0,l]],m=[[Math.cos(p),Math.sin(p)],[-Math.sin(p),Math.cos(p)]];return f[0][0]*=-1,f[0][1]*=-1,m[0][0]*=-1,m[1][0]*=-1,[f,h,m]}function Nd(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 Ev(n){return[[n[0][0],n[1][0]],[n[0][1],n[1][1]]]}function Nv(n){let[r,e,t]=zE(n),o=Nd(r,Ev(t)),i=Nd(Nd(t,e),Ev(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 Dv({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=Nd(i,a);return[s[0][0],s[1][0],s[0][1],s[1][1]]}var Be;(v=>{function n(){return[1,0,0,0,1,0,0,0,1]}v.identity=n;function r(A,T=v.identity()){for(let g=0,D=A.length;g<D;g++)T[g]=A[g];return T}v.copy=r;function e(A,T,g,D,E,M){return v.setAbcdef(v.identity(),A,T,g,D,E,M)}v.create=e;function t(A,T,g,D,E,M,N){return A[0]=T,A[1]=D,A[2]=M,A[3]=g,A[4]=E,A[5]=N,A}v.setAbcdef=t;function o(A,T){let[g,D,E,M,N,_]=a(A),[B,V,k,L,W,F]=a(T),j=B*g+V*E,H=B*D+V*M,q=k*g+L*E,re=k*D+L*M,ee=W*g+F*E+N,X=W*D+F*M+_;return v.create(j,H,q,re,ee,X)}v.append=o;function i(A,T){let[g,D,E,M,N,_]=a(A),[B,V,k,L,W,F]=a(T),j=g,H=D,q=E,re=M;(B!==1||V!==0||k!==0||L!==1)&&(j=g*B+D*k,H=g*V+D*L,q=E*B+M*k,re=E*V+M*L);let ee=N*B+_*k+W,X=N*V+_*L+F;return v.create(j,H,q,re,ee,X)}v.prepend=i;function a(A){return[A[0],A[3],A[1],A[4],A[2],A[5]]}v.getAbcdef=a;function s(A){let[T,g,D,E,M,N]=v.getAbcdef(A),_=T*E-g*D,B=E/_,V=-g/_,k=-D/_,L=T/_,W=(D*N-E*M)/_,F=-(T*N-g*M)/_;return v.create(B,V,k,L,W,F)}v.invert=s;function l([A,T],g){let[D,E,M,N,_,B]=v.getAbcdef(g);return[D*A+M*T+_,E*A+N*T+B]}v.apply=l;function c(A,T){let[g,D,E,M,N,_]=v.getAbcdef(T),B=1/(g*M+E*-D),[V,k]=A;return[M*B*V+-E*B*k+(_*E-N*M)*B,g*B*k+-D*B*V+(-_*g+N*D)*B]}v.applyInverse=c;function u(A,T,g=T){let[D,E,M,N,_,B]=v.getAbcdef(A);return v.setAbcdef(A,D*T,E*g,M*T,N*g,_*T,B*g),A}v.scale=u;function p(A,T){let g=Math.cos(T),D=Math.sin(T),[E,M,N,_,B,V]=v.getAbcdef(A);return v.setAbcdef(A,E*g-M*D,E*D+M*g,N*g-_*D,N*D+_*g,B*g-V*D,B*D+V*g),A}v.rotate=p;function d(A,T,g){let[D,E]=g,M=v.translate(A,-D,-E);return M=v.rotate(M,T),M=v.translate(M,D,E),M}v.rotateAround=d;function f(A,T,g){let[D,E,M,N,_,B]=v.getAbcdef(A);return v.setAbcdef(A,D,E,M,N,_+T,B+g),A}v.translate=f;function h(A,T,g){let[D,E,M,N]=v.getAbcdef(A);return v.setAbcdef(A,D,E,M,N,T,g),A}v.setTranslate=h;function m(A,T,g){let[D,E,M,N]=v.getAbcdef(A);return v.setAbcdef(A,D,E,M,N,T,g),A}v.setPosition=m;function y(A){let[T,g,D,E]=v.getAbcdef(A),M=Math.sqrt(T*T+g*g),N=Math.sqrt(D*D+E*E);return[M,N]}v.getScale=y;function b(A){let[,,,,T,g]=v.getAbcdef(A);return[T,g]}v.getPosition=b;function S(A,T){return v.decompose(A,T).rotation}v.getRotation=S;function P(A,T){let[g,D,E,M,N,_]=v.getAbcdef(A),{rotation:B,scale:V,shear:k}=Nv([[g,E],[D,M]]);return{position:[N+(T[0]*g+T[1]*E)-T[0],_+(T[0]*D+T[1]*M)-T[1]],scale:V,rotation:B,shear:k,pivot:T}}v.decompose=P;function C(A,T,g,D,E=[0,0]){let[M,N]=A,[_,B]=D,[V,k,L,W]=Dv({rotation:g,scale:T,shear:E}),F=M-(_*V+B*L)+_,j=N-(_*k+B*W)+B;return v.create(V,k,L,W,F,j)}v.compose=C})(Be||(Be={}));var GE=Math.PI/180,ste=180/Math.PI;function _v(n,r,e,t,o,i){let a=n-e,s=r-t;return a*a/(o*o)+s*s/(i*i)<=1}function Bv(n){return n*GE}var hn=class{constructor(r,e,t){this.uuid=r;this.data=e;this.localMatrix=Be.identity();this.worldMatrix=Be.identity();this.ignoreCameraZoom=!1;this.visible=!0;this._singleBBox=new Jn;this._recursiveBBox=new Jn;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=nn();this.dpr=t.dpr??1,this.dataPatched=e}project(r,e){let t=this.worldMatrix;return e&&(t=Be.append(e.worldMatrix,t)),Be.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=Be.compose(this.position,this.scale,Bv(this.rotation),en.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=Be.append(this.parent.worldMatrix,this.localMatrix):this.worldMatrix=Be.copy(this.localMatrix),this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0}get pivot(){return en.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=Fe(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=ct.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=ct.removeOverridden(r.path,r.props,a);o={...r,props:s}}}this.updateByPatchedOpBase(o,gi.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)gi.toOps(this.data,o.data).forEach(a=>{let s=pa.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=gi.patch(this.data,o),gi.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 hn(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 hn&&(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 hn{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)}intersectsChildrenHelper(e,t,o,i,a){for(let s of this.children)if(s.intersects(e,t,o,!1)&&(a.push(s),i)||s instanceof ir&&s.intersectsChildrenHelper(e,t,o,i,a))return!0;return!1}intersectsChildren(e,t,o,i=!1,a=[],s=!1){return this.intersectsChildrenHelper(e,t,o,i,a),a}intersectsChildrenHelperReverse(e,t,o,i,a){for(let s of this.children)if(s instanceof ir&&s.intersectsChildrenHelperReverse(e,t,o,i,a)||s.intersects(e,t,o,!1)&&(a.push(s),i))return!0;return!1}intersectsChildrenReverse(e,t,o,i=!1,a=[],s=!1){return this.intersectsChildrenHelperReverse(e,t,o,i,a),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}},Or=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 Or(this.uuid,this.data,e);t.parent=void 0;for(let o of this.children)t.add(o.clone(e));return t}};function FE(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 Lv=[[-1,1],[-1,-1],[1,-1],[1,1]],Rv=(n,r,e)=>{let t=n.getCenter(),o=n.getHalfSize(),i=Be.append(r,n.worldMatrix);o[0]===0&&o[1]===0?e.push(Be.apply(t,i)):Lv.forEach(a=>{let s=[a[0]*o[0]+t[0],a[1]*o[1]+t[1]];e.push(Be.apply(s,i))})},Jn=class{constructor(){this.matrix=Be.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(),Be.copy(r.worldMatrix,this.matrix);let t=Be.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&&Rv(i,e,o)}):Rv(r,e,o),this.setFromPoints(o)}setFromSize(r,e,t){this.makeEmpty(),Be.copy(t,this.matrix),this.expandBySize(r,e,t)}expandBySize(r,e,t){[Be.apply([0,0],t),Be.apply([0,e],t),Be.apply([r,e],t),Be.apply([r,0],t)].forEach(i=>this.expandByPoint(i))}getCenter(){let[r,e]=this.min,[t,o]=this.getHalfSize();return Be.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]=Be.getAbcdef(this.matrix),l=Be.create(o,i,a,s,t[0],t[1]);this.vertices=Lv.map(([c,u])=>Be.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=Be.append(e.worldMatrix,t)),Be.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(FE(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],Be.copy(r.matrix,this.matrix),this.computeVertices(),this.computeEdges()}clone(){let r=new Jn;return r.copy(this),r}};var zv,Gv=new Promise(n=>{zv=n}),Vv=!1;var Dd;function Fv(){if(Vv)return;if(Dd)return Dd;async function n(){let e=await import("./ui.js");zv(e.default??e),Vv=!0}return Dd=n(),Dd}function Uv(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 Te,Ch;async function jE(n){let r=await Gv;Te||(Ch||(Ch=r({locateFile:()=>n})),Te=await Ch)}var jv=Be.identity(),tc=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=jv,this._currentTransform=new Float32Array(jv)}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 jE(this.wasmURL),this._surface=Te.MakeWebGLCanvasSurface(this.canvas),this.ctx=this._surface?.getCanvas(),this._paint=new Te.Paint,this._paint.setAntiAlias(!0),this._paintFill=this._paint.copy(),this._paintFill.setStyle(Te.PaintStyle.Fill),this._paintStroke=this._paint.copy(),this._paintStroke.setStyle(Te.PaintStyle.Stroke),this.ctx?.scale(this.dpr,this.dpr)}get currentTransform(){return this._currentM3Transform}get currentTransformBuffer(){return this._currentTransform}set currentTransform(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=Te.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(_d(r),Te.ColorSpace.DISPLAY_P3)}set fillColor(r){this._paintFill&&this._paintFill.setColor(_d(r),Te.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(Te.TRANSPARENT)}save(){this.ctx?.save()}restore(){this.ctx?.restore()}beginPath(){this._currentPath?.delete(),this._currentPath=new Te.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=Te.XYWHRect(r,e,t,o);if(i===0&&a===0&&l===0&&s===0)this.ctx?.clipRect(c,Te.ClipOp.Intersect,!0);else{let u=Te.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,Te.ClipOp.Intersect,!0)}}_applyShadowOffsetMatrix(){if(this.ctx){let r=Be.invert(this.currentTransform);this.ctx.concat(r);let e=Be.translate(Be.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(_d(this._dropShadowColor));let s;this._dropShadowBlur>0&&(s=Te.MaskFilter.MakeBlur(Te.BlurStyle.Normal,this._dropShadowBlur*this.dpr*(this.camera?.scale??1),!1),a.setMaskFilter(s)),this.ctx.save(),this.ctx.clipPath(this._currentPath,Te.ClipOp.Difference,!0),this._applyShadowOffsetMatrix(),e(a),this.ctx.restore(),a.delete(),s?.delete()}if(this._backgroundBlur>0&&t){this.ctx.save(),this.ctx.clipPath(this._currentPath,Te.ClipOp.Intersect,!0);let a=Te.ImageFilter.MakeBlur(this._backgroundBlur,this._backgroundBlur,Te.TileMode.Clamp,null),s=r.copy();s.setImageFilter(a),s.setAlphaf(1);let l=this._currentPath.computeTightBounds();this.ctx.saveLayer(s,l,null,Te.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=Te.MaskFilter.MakeBlur(Te.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 Te.Paint;a.setAntiAlias(!0),a.setStyle(Te.PaintStyle.Fill),a.setColor(_d(this._innerShadowColor));let s;this._innerShadowBlur>0&&(s=Te.MaskFilter.MakeBlur(Te.BlurStyle.Normal,this._innerShadowBlur*this.dpr*(this.camera?.scale??1),!1),a.setMaskFilter(s));let l=this._currentPath.computeTightBounds(),[c,u,p,d]=l,f=p-c,h=d-u;this.ctx.save(),this.ctx.clipPath(this._currentPath,Te.ClipOp.Intersect,!0),this.ctx.saveLayer(a,l,null,Te.SaveLayerInitWithPrevious),this.ctx?.translate(this._innerShadowOffsetX,this._innerShadowOffsetY),this.ctx.drawRect(Te.XYWHRect(-1e3-this._innerShadowOffsetX,-1e3-this._innerShadowOffsetY,2e3+f+Math.abs(this._innerShadowOffsetX*2),2e3+h+Math.abs(this._innerShadowOffsetY*2)),a),a.setBlendMode(Te.BlendMode.Clear),this.ctx.drawPath(this._currentPath,a),this.ctx.restore(),this.ctx.restore(),a.delete(),s?.delete()}}}_paintInner(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"?Te.ClipOp.Difference:Te.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(Te.Path.MakeFromSVGString(r))}ellipse(r,e,t,o,i,a,s,l){if(!kv([r,e,t,o])||!this._currentPath)return;if(t<0||o<0)throw Error("radii cannot be negative");let c=Te.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=Te.XYWHRect(r,e,t,o);if(!!kv(c))if(i===0&&a===0&&l===0&&s===0)this._currentPath?.addRect(c);else{let u=Te.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 Te.TextAlign.Right;case 3:return Te.TextAlign.Center;case 4:return Te.TextAlign.Justify;case 1:default:return Te.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 f=c.copy(),h=c.copy();return h.setAlphaf(0),this._applyEffectsToPaint(f,m=>{e.pushPaintStyle(t,m,h),e.addText(r);let y=e.build();y.layout(a);let b=i;l===2?b+=(s-y.getHeight())/2:l===3&&(b+=s-y.getHeight()),d.drawParagraph(y,o,b),p=y.getHeight(),e.reset(),y.delete()},u),f.delete(),h.delete(),p}drawText(r,e){let t=0,o=this._fonts.get(e.font),{ctx:i,_paintFill:a,_paintStroke:s}=this;if(o&&i){let l=new Te.TextStyle({fontFamilies:[e.font],fontSize:e.fontSize,heightMultiplier:e.lineHeight,letterSpacing:e.letterSpacing}),c=new Te.ParagraphStyle({textStyle:l,textAlign:this.getHorizontalAlign(e.horizontalAlign)}),u=Te.XYWHRect(e.x,e.y,e.width,e.height),p=Te.ParagraphBuilder.Make(c,o);a&&(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=Be.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=Be.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=Te.MakeWebGLCanvasSurface(this.canvas),this.ctx=this._surface?.getCanvas()))}};function kv(n){for(let r=0;r<n.length;r++)if(n[r]!==void 0&&!Number.isFinite(n[r]))return!1;return!0}function _d({r:n,g:r,b:e,a:t}){return Te.Color4f(n,r,e,t)}var rc=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 oc=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 Bd=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 Rd=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 Ar=class extends hn{constructor(e,t,o){super(e,t,o);this.uuid=e;this.data=t;this.autoClose=!0;this.fill=new Bd(e+"-fill",t.fill,o),this.stroke=new Rd(e+"-stroke",t.stroke,o),this.dropShadow=new rc(e+"-dropShadow",t.dropShadow,o),this.innerShadow=new rc(e+"-innerShadow",t.innerShadow,o),this.backgroundBlur=new oc(e+"-backgroundBlur",t.backgroundBlur,o),this.layerBlur=new oc(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&&(Fe(e.path,["fill"])?this.fill.update(e.props):Fe(e.path,["stroke"])?this.stroke.update(e.props):Fe(e.path,["dropShadow"])?this.dropShadow.update(e.props):Fe(e.path,["innerShadow"])?this.innerShadow.update(e.props):Fe(e.path,["layerBlur"])?this.layerBlur.update(e.props):Fe(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 Ar(this.uuid,this.data,e);return t.parent=void 0,t}};var ei=class extends Ar{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 _v(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 ei(this.uuid,this.data,e);return t.parent=void 0,t}};var Fo=class extends Ar{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 Fo(this.uuid,this.data,e);return t.parent=void 0,t}};var ti=class extends Ar{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 ti(this.uuid,this.data,e);return t.parent=void 0,t}};var Rs=class extends Ar{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=>Ld.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,[f,h]=s.position,m={start:l.position,cp1:l.controlNext.position,cp2:s.controlPrevious.position,end:s.position};Ld.derive(m),e.bezierCurveTo(c,u,p,d,f,h)}}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 Rs(this.uuid,this.data,e);return t.parent=void 0,t}},Ld;(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])],f=[3*(u[0]-c[0]),3*(u[1]-c[1])],h={start:p,cp:d,end:f};return a.derivative=h,h.derivative=Oh.derive(h),h}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,f=-(p+d)/u,h=-(-p+d)/u;return[f,h]}else if(s!==l&&u===0)return[(2*s-l)/(2*(s-l))];return[]}function e(a){let s=a.derivative??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,f=l*u*3,h=s*u;return[p*a.start[0]+d*a.cp1[0]+f*a.cp2[0]+h*a.end[0],p*a.start[1]+d*a.cp1[1]+f*a.cp2[1]+h*a.end[1]]}i.compute=o})(Ld||(Ld={}));var Oh;(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=Ah.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})(Oh||(Oh={}));var Ah;(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})(Ah||(Ah={}));var Br=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 Fo(e+"-background",Ia.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&&(Fe(e.path,["fill"])?this.fill.update(e.props):Fe(e.path,["stroke"])?this.stroke.update(e.props):Fe(e.path,["dropShadow"])?this.dropShadow.update(e.props):Fe(e.path,["innerShadow"])?this.innerShadow.update(e.props):Fe(e.path,["layerBlur"])?this.layerBlur.update(e.props):Fe(e.path,["backgroundBlur"])?this.backgroundBlur.update(e.props):this.resetBBoxNeedsUpdate())}clone(e){let t=new Br(this.uuid,this.data,e);t.parent=void 0;for(let o of this.children)t.add(o.clone(e));return t}};var $v=qs(Th(),1),mn=class extends Ar{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 mn(this.uuid,this.data,e);return t.parent=void 0,t}};function Yv(n,r=1,e=1){if(r<=0||e<=0)return n;let o=(0,$v.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 Xv(o)}function Xv(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 Kv(n,r,e){switch(r.type){case"ellipse2d":return new ei(n,r,e);case"rectangle2d":return new Fo(n,r,e);case"text2d":return new ti(n,r,e);case"vector2d":return new Rs(n,r,e);case"path2d":return new mn(n,r,e);case"frame2d":return new Br(n,r,e);case"group2d":default:return new Or(n,r,e)}}var Ih=class{constructor(r,e,t){this.uuid=r;this.data=e;this.group=new Or(Ih.GROUP_ID,{...ll.defaultData},t),this.createChildrenObjects(e.objects,this.group,t)}createObject(r,e,t,o,i,a){let s=Kv(r,e,a);s&&(o.add(s),o.children.splice(i,0,o.children.pop()),s.updateWorldMatrix(),t.length>0&&(s instanceof Or||s instanceof Br)&&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)}intersectsChildrenReverse(r,e,t,o=!1,i=[]){return this.group.intersectsChildrenReverse(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)=>hc(t.sortKey,o.sortKey)),e.map(t=>t.entity)}},Ri=Ih;Ri.GROUP_ID="scene2d";function Mh({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,f=a,h=s[0],m=s[1];if(l!==0){if(l===1)h+=u;else if(l===3)h+=u/2;else if(l===2)d=Math.max(1,d+u);else if(l===4){let y=r/t;d*=y,h*=y}}if(c!==0){if(c===1)m+=p;else if(c===3)m+=p/2;else if(c===2)f=Math.max(1,f+p);else if(c===4){let y=e/o;f*=y,m*=y}}return{width:d,height:f,position:[h,m]}}var WE=qs(Th(),1);var Loe={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 Dt=require("three");var qE=`
2923
2956
  varying vec2 vUv;
2924
2957
  void main() {
2925
2958
  vUv = uv;
2926
2959
  gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
2927
- }`,YE=`
2960
+ }`,$E=`
2928
2961
  uniform sampler2D tDiffuse;
2929
2962
  varying vec2 vUv;
2930
2963
  void main() {
2931
2964
  vec4 texel = texture2D( tDiffuse, vUv );
2932
2965
  gl_FragColor = texel;
2933
- }`,XE=new Dt.OrthographicCamera(-1,1,1,-1,0,1),Bh=class extends Dt.BufferGeometry{constructor(){super(),this.setAttribute("position",new Dt.Float32BufferAttribute([-1,3,0,-1,-1,0,3,-1,0],3)),this.setAttribute("uv",new Dt.Float32BufferAttribute([0,2,0,0,2,0],2))}},KE=new Bh,Rh=class{constructor(r){this._mesh=new Dt.Mesh(KE,r)}dispose(){this._mesh.geometry.dispose()}render(r){r.render(this._mesh,XE)}get material(){return this._mesh.material}set material(r){this._mesh.material=r}},Jv=new Dt.ShaderMaterial({defines:{},uniforms:{tDiffuse:new Dt.Uniform(null)},vertexShader:$E,fragmentShader:YE}),QE=new Rh(Jv),Dh=null,_h=null,ZE=()=>(Dh===null&&(Dh=document.createElement("canvas")),Dh),JE=n=>(_h===null&&(_h=new nc(n)),_h),eN=Be.identity(),zs=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._innerApplySize=()=>{let r=this.width,e=this.height,t=this.dpr;this.renderer.dpr=this.isScreenSpace?t:Math.floor(2048/Math.max(r,e)),this.renderer.setSize(r,e)};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 Li(Dt.MathUtils.generateUUID(),Eu.defaultData,{dpr:window.devicePixelRatio,shared:o.shared}),this.canvas=ZE(),this.renderer=JE(this.canvas),this.promise=this.init(),this.renderTarget=new Dt.WebGLRenderTarget(1,1,{type:Dt.HalfFloatType,stencilBuffer:!1,depthBuffer:!1}),o.shared.addUIBuffer(this.uuid,this.renderTarget),this.textureHolder=o.shared.uiBuffer(this.uuid)}get canvasTexture(){return this._canvasTexture||(this._canvasTexture=new Dt.CanvasTexture(this.canvas)),this._canvasTexture}async init(){this.renderer instanceof nc&&(this.renderer.wasmURL=Ib.skiaWasmUrl),await this.renderer.init()}render(r){if(this.isFrameDirty){this.isFrameDirty=!1,this._innerApplySize(),this.renderer.clear(),this.frameOverride?.draw(this.renderer),this.renderer.render(),Jv.uniforms.tDiffuse.value=this.canvasTexture,this.canvasTexture.needsUpdate=!0;let e=r.getRenderTarget();r.setRenderTarget(this.renderTarget),r.clear(),QE.render(r),r.setRenderTarget(e),this.textureHolder?.setNeedsUpdate(!0)}}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=eN,this.isScreenSpace&&(this.frameOverride.fill.color=_e.from0to1([0,0,0,0])),this.frameOverride.data={...this.frameOverride.data,width:e,height:t},eS({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=Math.max(1,r?.width??this.width),o=Math.max(1,r?.height??this.height);this.dpr=e,this.width=t,this.height=o,this._innerApplySize();let i=1,a=512,s=512;(t*e<a||o*e<s)&&(i=Math.max(a/(t*e),s/(o*e))),this.renderTarget.setSize(t*e*i,o*e*i),this._canvasTexture?.dispose(),this._canvasTexture=void 0,this.applyOverrides(r),this.frameOverride?.requestRender()}applyFrame(r){let e=this.context.scene.find2D(r);if(!(!e||!(e instanceof Br)))return this.disposeFrameOverride(),this.frameRoot=e,this.frameOverride=e.clone({dpr:this.renderer.dpr,shared:this.context.shared}),this.scene2d.add(this.frameOverride),this.applySize(),this.frame?.addEventListener("render",this.onRenderRequestedDownstream),this.frameOverride.traverse(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 eS({objectOverride:n,objectRoot:r,newParentWidth:e,newParentHeight:t,initialParentWidth:o,initialParentHeight:i}){if(n instanceof Br&&r instanceof Br||n instanceof Or&&r instanceof Or)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&&rN({objectOverride:l,objectRoot:c,newParentWidth:e,newParentHeight:t,initialParentWidth:o,initialParentHeight:i})}}function tN(n){if(Lh(n))return[n.width,n.height];if(n instanceof yn){let[r,e]=n.getHalfSize();return[r*2,e*2]}else if(n instanceof Or){let[r,e]=n.recursiveBBox.getHalfSize();return[r*2,e*2]}return[0,0]}function rN({objectOverride:n,objectRoot:r,newParentWidth:e,newParentHeight:t,initialParentWidth:o,initialParentHeight:i}){let[a,s]=tN(r),{width:l,height:c,position:u}=Nh({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)oN({stateId:p,objectOverride:n,objectRoot:r,newParentWidth:e,newParentHeight:t,initialParentWidth:o,initialParentHeight:i});if(Lh(n)||n instanceof Or)Lh(n)&&(n.width=l,n.height=c,n.data={...n.data,width:l,height:c}),eS({objectOverride:n,objectRoot:r,newParentWidth:l,newParentHeight:c,initialParentWidth:a,initialParentHeight:s});else if(n instanceof yn){let p=r,d=a!==0?l/a:1,h=s!==0?c/s:1;n.path=Kv(p.path,d,h),n.data={...n.data,path:n.path}}}function oN({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}=Nh({constraints:r.data,newParentWidth:t,newParentHeight:o,initialParentWidth:i,initialParentHeight:a,objectInitialWidth:en.isResizeable(l)?l.width:0,objectInitialHeight:en.isResizeable(l)?l.height:0,objectInitialPosition:l.position});Object.assign(r.states[n],{position:p}),en.isResizeable(s)&&Object.assign(r.states[n],{width:c,height:u})}}function Lh(n){return n instanceof Fo||n instanceof Br||n instanceof ti||n instanceof ri}var Xr=class extends Ba(tS.Scene){constructor(e,t,o){super();this.data=t;this.bgColor=new kt(1,1,1,1);this.fog=null;this.backupFog=new Gs.Fog(16777215,.1,2e3);this.fogUseBGColor=!1;this.isActive=!1;this.aoColor=new Gs.Color;this.penumbraSizeArrayCache=null;this.super_Entity(e,t),this.personalCamera=new hn(En,{...yi.defaultData,...t.camera,name:"Personal Camera"}),this.personalCamera.objectHelper.visible=!1,this.add(this.personalCamera),this.activeCamera=this.personalCamera,this.ambientLight=new Gs.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 Li((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 zs(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=or(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 Cr&&t.recomputeBoolean()}),this.updateShadow(this.data.shadow)}forceMaterialsUpdate(){this.traverseEntity(e=>{if(e instanceof Pr)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&&Av(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=or(e.color,t),this.backupFog.near=e.near,this.backupFog.far=e.far}updateAo(e,t){e.aoColor!==void 0&&(this.aoColor=or(e.aoColor,t))}updateByOp(e,t,o,i){let a=this.data.uiFrame;super.updateByOp(e,t,o,i);let s=t;Fe(e.path,["fog"])?this.updateFog(s.fog,o.shared):Fe(e.path,["ao"])?this.updateAo(s.ao,o.shared):Fe(e.path,["ambient"])?this.updateAmbientLight(s.ambient,o.shared):Fe(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(or(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 Rs&&o.visible&&e<3&&(this.penumbraSizeArrayCache[e]=o.data.penumbraSize??.5,e+=1),o instanceof Ls&&o.visible&&e<5-3&&(this.penumbraSizeArrayCache[3+t]=o.data.penumbraSize??.5,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)&&((Zn(a)||ec(a)&&this.scene.enableHelpers&&a.objectHelper.visible)&&(e.intersectObject(a,!1,t),sc(a,e,t,!0)),o(a))}};return o(this),t}updateEntity2DByOp(e,t,o,i){this.uiCanvas?.updateEntity2DByOp(e,t,o,i)}};var Tr=require("three");var jd=class extends Ns(Tr.PointLight,Bs){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 Tr.Vector3(-i.far+this.position.x,-i.far+this.position.y,-i.far+this.position.z),s=new Tr.Vector3(i.far+this.position.x,i.far+this.position.y,i.far+this.position.z),l=new Tr.Box3(a,s),c=new Tr.Box3Helper(l,new Tr.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 Tr.Box3Helper){let t=this.shadow.camera,o=new Tr.Vector3(-t.far+this.position.x,-t.far+this.position.y,-t.far+this.position.z),i=new Tr.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 kd=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?Il(t,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:t.count,r,e):super.updateEntityBoxSize(r,e)}};var Fs=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=Wa;break;case"Ellipse":i=ka;break;case"Polygon":i=qu;break;case"Star":i=$u;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?Il(o,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:o.count,e,t):super.updateEntityBoxSize(e,t)}};var Ud=class extends Xn{constructor(e,t,o){super(e,t,o);this.data=t}};var js=require("three");var gn=class extends qr(js.Group,$r){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=Oa.getComponentData({scene:t.scene.data,shared:t.shared.data},e.component);if(o){let i,a;for(let s of Ao.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]=vo.apply(o.data[s],e[s]));return this.overrideData=a,i}else return{...Rt.defaultData,...e,...Jr(Rt.defaultData,Ao.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 Ao.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&&Ao.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),Hd(s),a+=1;else break;this.children.splice(0,a)}i=!0}if(o){let a={};oS(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 js.Matrix4().fromArray(m)),f=new js.Skeleton(d,h);c.bind(f,c.bindMatrix)}}else c.matrixAutoUpdate=!0})}}this.oldComponent=this.component}}};function Hd(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)&&Hd(e)}}function rS(n,r,e,t){return n.component===r&&Sp(n.identity,t)?n.overrideData===e?2:1:0}function oS(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 gn&&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=Pa.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=rS(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=rS(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?vo.apply(u.data,d):u.data;eo.is(m.type)&&(m={...m,type:"Empty"}),h=no.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,oS(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 nS=require("three");var Wd=class extends qr(nS.Bone,$r){constructor(r,e){super(),this.super_Entity(r,e),this.objectHelper.update(),this.matrixAutoUpdate=!0}updateState(r,e){this.updateState_Entity(r,e)}};var Vi=class extends St{constructor(e,t,o){super(e,t,o);this.onBeforeRender=e=>{this.uiCanvas.render(e)};this.uiCanvas=new zs(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=an(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):Fe(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 Re=require("three"),MS=require("three/examples/jsm/misc/GPUComputationRenderer.js");var Ht=require("three"),iS=require("three/examples/jsm/math/MeshSurfaceSampler.js");function aS(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 sS(n){let r=Math.ceil(Math.sqrt(n));return Math.max(r,1)}function lS(n,r){let e=new Ht.Mesh(n.geometry,n.material),t=[],o=[],i=new Ht.Vector3,a=new Ht.Vector3;e.geometry.index!==null&&(e.geometry=e.geometry.toNonIndexed());let s=new iS.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 Vh(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 Ht.DataTexture(t,r,r,Ht.RGBAFormat,Ht.FloatType);return o.needsUpdate=!0,o}function cS({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 Ht.DataTexture(r,n,n,Ht.RGBAFormat,Ht.FloatType);return e.needsUpdate=!0,e}function uS(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 Ht.DataTexture(r,n,n,Ht.RGBAFormat,Ht.FloatType);return e.needsUpdate=!0,e}var dS=`
2966
+ }`,YE=new Dt.OrthographicCamera(-1,1,1,-1,0,1),Dh=class extends Dt.BufferGeometry{constructor(){super(),this.setAttribute("position",new Dt.Float32BufferAttribute([-1,3,0,-1,-1,0,3,-1,0],3)),this.setAttribute("uv",new Dt.Float32BufferAttribute([0,2,0,0,2,0],2))}},XE=new Dh,_h=class{constructor(r){this._mesh=new Dt.Mesh(XE,r)}dispose(){this._mesh.geometry.dispose()}render(r){r.render(this._mesh,YE)}get material(){return this._mesh.material}set material(r){this._mesh.material=r}},Qv=new Dt.ShaderMaterial({defines:{},uniforms:{tDiffuse:new Dt.Uniform(null)},vertexShader:qE,fragmentShader:$E}),KE=new _h(Qv),Eh=null,Nh=null,QE=()=>(Eh===null&&(Eh=document.createElement("canvas")),Eh),ZE=n=>(Nh===null&&(Nh=new tc(n)),Nh),JE=Be.identity(),Ls=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._innerApplySize=()=>{let r=this.width,e=this.height,t=this.dpr;this.renderer.dpr=this.isScreenSpace?t:Math.floor(2048/Math.max(r,e)),this.renderer.setSize(r,e)};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 Ri(Dt.MathUtils.generateUUID(),Tu.defaultData,{dpr:window.devicePixelRatio,shared:o.shared}),this.canvas=QE(),this.renderer=ZE(this.canvas),this.promise=this.init(),this.renderTarget=new Dt.WebGLRenderTarget(1,1,{type:Dt.HalfFloatType,stencilBuffer:!1,depthBuffer:!1}),o.shared.addUIBuffer(this.uuid,this.renderTarget),this.textureHolder=o.shared.uiBuffer(this.uuid)}get canvasTexture(){return this._canvasTexture||(this._canvasTexture=new Dt.CanvasTexture(this.canvas)),this._canvasTexture}async init(){this.renderer instanceof tc&&(this.renderer.wasmURL=Tb.skiaWasmUrl),await this.renderer.init()}render(r){if(this.isFrameDirty){this.isFrameDirty=!1,this._innerApplySize(),this.renderer.clear(),this.frameOverride?.draw(this.renderer),this.renderer.render(),Qv.uniforms.tDiffuse.value=this.canvasTexture,this.canvasTexture.needsUpdate=!0;let e=r.getRenderTarget();r.setRenderTarget(this.renderTarget),r.clear(),KE.render(r),r.setRenderTarget(e),this.textureHolder?.setNeedsUpdate(!0)}}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=JE,this.isScreenSpace&&(this.frameOverride.fill.color=_e.from0to1([0,0,0,0])),this.frameOverride.data={...this.frameOverride.data,width:e,height:t},Zv({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=Math.max(1,r?.width??this.width),o=Math.max(1,r?.height??this.height);this.dpr=e,this.width=t,this.height=o,this._innerApplySize();let i=1,a=512,s=512;(t*e<a||o*e<s)&&(i=Math.max(a/(t*e),s/(o*e))),this.renderTarget.setSize(t*e*i,o*e*i),this._canvasTexture?.dispose(),this._canvasTexture=void 0,this.applyOverrides(r),this.frameOverride?.requestRender()}applyFrame(r){let e=this.context.scene.find2D(r);if(!(!e||!(e instanceof Br)))return this.disposeFrameOverride(),this.frameRoot=e,this.frameOverride=e.clone({dpr:this.renderer.dpr,shared:this.context.shared}),this.scene2d.add(this.frameOverride),this.applySize(),this.frame?.addEventListener("render",this.onRenderRequestedDownstream),this.frameOverride.traverse(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 Zv({objectOverride:n,objectRoot:r,newParentWidth:e,newParentHeight:t,initialParentWidth:o,initialParentHeight:i}){if(n instanceof Br&&r instanceof Br||n instanceof Or&&r instanceof Or)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&&tN({objectOverride:l,objectRoot:c,newParentWidth:e,newParentHeight:t,initialParentWidth:o,initialParentHeight:i})}}function eN(n){if(Bh(n))return[n.width,n.height];if(n instanceof mn){let[r,e]=n.getHalfSize();return[r*2,e*2]}else if(n instanceof Or){let[r,e]=n.recursiveBBox.getHalfSize();return[r*2,e*2]}return[0,0]}function tN({objectOverride:n,objectRoot:r,newParentWidth:e,newParentHeight:t,initialParentWidth:o,initialParentHeight:i}){let[a,s]=eN(r),{width:l,height:c,position:u}=Mh({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)rN({stateId:p,objectOverride:n,objectRoot:r,newParentWidth:e,newParentHeight:t,initialParentWidth:o,initialParentHeight:i});if(Bh(n)||n instanceof Or)Bh(n)&&(n.width=l,n.height=c,n.data={...n.data,width:l,height:c}),Zv({objectOverride:n,objectRoot:r,newParentWidth:l,newParentHeight:c,initialParentWidth:a,initialParentHeight:s});else if(n instanceof mn){let p=r,d=a!==0?l/a:1,f=s!==0?c/s:1;n.path=Yv(p.path,d,f),n.data={...n.data,path:n.path}}}function rN({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}=Mh({constraints:r.data,newParentWidth:t,newParentHeight:o,initialParentWidth:i,initialParentHeight:a,objectInitialWidth:en.isResizeable(l)?l.width:0,objectInitialHeight:en.isResizeable(l)?l.height:0,objectInitialPosition:l.position});Object.assign(r.states[n],{position:p}),en.isResizeable(s)&&Object.assign(r.states[n],{width:c,height:u})}}function Bh(n){return n instanceof Fo||n instanceof Br||n instanceof ei||n instanceof ti}var Xr=class extends _a(Jv.Scene){constructor(e,t,o){super();this.data=t;this.bgColor=new kt(1,1,1,1);this.fog=null;this.backupFog=new Vs.Fog(16777215,.1,2e3);this.fogUseBGColor=!1;this.isActive=!1;this.aoColor=new Vs.Color;this.penumbraSizeArrayCache=null;this.super_Entity(e,t),this.personalCamera=new fn(Mn,{...mi.defaultData,...t.camera,name:"Personal Camera"}),this.personalCamera.objectHelper.visible=!1,this.add(this.personalCamera),this.activeCamera=this.personalCamera,this.ambientLight=new Vs.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 Ri((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 Ls(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=or(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 Cr&&t.recomputeBoolean()}),this.updateShadow(this.data.shadow)}forceMaterialsUpdate(){this.traverseEntity(e=>{if(e instanceof Pr)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&&Cv(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=or(e.color,t),this.backupFog.near=e.near,this.backupFog.far=e.far}updateAo(e,t){e.aoColor!==void 0&&(this.aoColor=or(e.aoColor,t))}updateByOp(e,t,o,i){let a=this.data.uiFrame;super.updateByOp(e,t,o,i);let s=t;Fe(e.path,["fog"])?this.updateFog(s.fog,o.shared):Fe(e.path,["ao"])?this.updateAo(s.ao,o.shared):Fe(e.path,["ambient"])?this.updateAmbientLight(s.ambient,o.shared):Fe(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(or(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 _s&&o.visible&&e<3&&(this.penumbraSizeArrayCache[e]=o.data.penumbraSize??.5,e+=1),o instanceof Bs&&o.visible&&e<5-3&&(this.penumbraSizeArrayCache[3+t]=o.data.penumbraSize??.5,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)&&((Qn(a)||Ql(a)&&this.scene.enableHelpers&&a.objectHelper.visible)&&(e.intersectObject(a,!1,t),nc(a,e,t,!0)),o(a))}};return o(this),t}updateEntity2DByOp(e,t,o,i){this.uiCanvas?.updateEntity2DByOp(e,t,o,i)}};var Tr=require("three");var zd=class extends Ms(Tr.PointLight,Ds){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 Tr.Vector3(-i.far+this.position.x,-i.far+this.position.y,-i.far+this.position.z),s=new Tr.Vector3(i.far+this.position.x,i.far+this.position.y,i.far+this.position.z),l=new Tr.Box3(a,s),c=new Tr.Box3Helper(l,new Tr.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 Tr.Box3Helper){let t=this.shadow.camera,o=new Tr.Vector3(-t.far+this.position.x,-t.far+this.position.y,-t.far+this.position.z),i=new Tr.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 Gd=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?Al(t,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:t.count,r,e):super.updateEntityBoxSize(r,e)}};var zs=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(),this.refreshAttachedCloners(t)}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=Ha;break;case"Ellipse":i=ja;break;case"Polygon":i=ku;break;case"Star":i=Uu;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())}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?Al(o,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:o.count,e,t):super.updateEntityBoxSize(e,t)}};var Fd=class extends Yn{constructor(e,t,o){super(e,t,o);this.data=t}};var Gs=require("three");var yn=class extends qr(Gs.Group,$r){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=Ca.getComponentData({scene:t.scene.data,shared:t.shared.data},e.component);if(o){let i,a;for(let s of Ao.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]=vo.apply(o.data[s],e[s]));return this.overrideData=a,i}else return{...Rt.defaultData,...e,...Jr(Rt.defaultData,Ao.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 Ao.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&&Ao.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),jd(s),a+=1;else break;this.children.splice(0,a)}i=!0}if(o){let a={};tS(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])),f=p.boneInverses.map(m=>new Gs.Matrix4().fromArray(m)),h=new Gs.Skeleton(d,f);c.bind(h,c.bindMatrix)}}else c.matrixAutoUpdate=!0})}}this.oldComponent=this.component}}};function jd(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)&&jd(e)}}function eS(n,r,e,t){return n.component===r&&xp(n.identity,t)?n.overrideData===e?2:1:0}function tS(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 yn&&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=wa.resolve(e,p,1);if(d!=null&&!(d instanceof lt)){if(!1)debugger;Object.setPrototypeOf(d,lt.prototype),console.error("wrong prototype")}let f=null,h;if(!s){let m=t.children[c];if(f=je.is(m)?m:null,f!==null){let y=eS(f,u,d,p);h=y>=1?f.stateSelection:void 0,y!==2&&(f=null)}if(f===null&&(f=n.scene.findInstance(p)??null,f!==null)){let y=eS(f,u,d,p);if(h=y>=1?f.stateSelection:void 0,y!==2)f=null;else{let b=f.parent.children.indexOf(f);f.parent.children.splice(b,1),t.children.splice(c,0,f),f.parent===t?(b<=c&&console.error("not possible"),void 0):(f.parent=t,f.matrixWorldNeedsUpdate=!0,f.resetBBoxNeedsUpdate(),f.updateVisible(),n.pendingDeletes.delete(f),void 0)}}}if(f===null){let m=d?vo.apply(u.data,d):u.data;eo.is(m.type)&&(m={...m,type:"Empty"}),f=no.createEntity(p,m,n),f.overrideData=d,t.add(f),t.children.splice(t.children.length-1,1),t.children.splice(c,0,f),f.updateState(f.data,n),h&&f.changeSelectedState(h,n),n.scene.registerInstanceAndSetUuid(f)}if(f.isBone){let m=f.identity[f.identity.length-1];l[m]=f.uuid}c+=1,tS(n,r,e,f,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 rS=require("three");var kd=class extends qr(rS.Bone,$r){constructor(r,e){super(),this.super_Entity(r,e),this.objectHelper.update(),this.matrixAutoUpdate=!0}updateState(r,e){this.updateState_Entity(r,e)}};var Li=class extends St{constructor(e,t,o){super(e,t,o);this.onBeforeRender=e=>{this.uiCanvas.render(e)};this.uiCanvas=new Ls(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=an(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):Fe(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 Re=require("three"),TS=require("three/examples/jsm/misc/GPUComputationRenderer.js");var Ht=require("three"),oS=require("three/examples/jsm/math/MeshSurfaceSampler.js");function nS(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 iS(n){let r=Math.ceil(Math.sqrt(n));return Math.max(r,1)}function aS(n,r){let e=new Ht.Mesh(n.geometry,n.material),t=[],o=[],i=new Ht.Vector3,a=new Ht.Vector3;e.geometry.index!==null&&(e.geometry=e.geometry.toNonIndexed());let s=new oS.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 Rh(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 Ht.DataTexture(t,r,r,Ht.RGBAFormat,Ht.FloatType);return o.needsUpdate=!0,o}function sS({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 Ht.DataTexture(r,n,n,Ht.RGBAFormat,Ht.FloatType);return e.needsUpdate=!0,e}function lS(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 Ht.DataTexture(r,n,n,Ht.RGBAFormat,Ht.FloatType);return e.needsUpdate=!0,e}var cS=`
2934
2967
  // uniform sampler2D uCurrentPosition; // Pass in the variable from GPGPU
2935
2968
  // uniform sampler2D uCurrentVelocity; // Pass in the variable from GPGPU
2936
2969
  // uniform sampler2D uCurrentEmissionRate; // Pass in the variable from GPGPU
@@ -2999,7 +3032,7 @@ void main() {
2999
3032
  gl_FragColor = mix(vec4(0.0), activeColor, isActive);
3000
3033
 
3001
3034
  }
3002
- `;var pS=`
3035
+ `;var uS=`
3003
3036
 
3004
3037
  vec3 mod289(vec3 x) {
3005
3038
  return x - floor(x * (1.0 / 289.0)) * 289.0;
@@ -3201,7 +3234,7 @@ vec3 fbm_vec3(vec3 p, float frequency, float offset)
3201
3234
  );
3202
3235
  }
3203
3236
 
3204
- `;var fS=`
3237
+ `;var dS=`
3205
3238
  #ifdef USE_COLLIDER
3206
3239
  float restitution = max(uBounce * 2., .01); // Energy Loss
3207
3240
  // SPHERE COLLIDER
@@ -3269,7 +3302,7 @@ vec3 fbm_vec3(vec3 p, float frequency, float offset)
3269
3302
  #endif
3270
3303
  #endif
3271
3304
  // END COLLIDER
3272
- `;var hS=`
3305
+ `;var pS=`
3273
3306
  #ifdef USE_ATTRACTOR
3274
3307
 
3275
3308
  #ifdef USE_SPHERE_COLLIDER
@@ -3343,7 +3376,7 @@ vec3 fbm_vec3(vec3 p, float frequency, float offset)
3343
3376
  velocity *= uForceDamping;
3344
3377
  #endif
3345
3378
  #endif
3346
- `;var mS=`
3379
+ `;var fS=`
3347
3380
  #ifdef USE_VORTEX
3348
3381
  // Box dimensions
3349
3382
  vec3 boxHalfSize = uColliderSize / 2.0;
@@ -3382,7 +3415,7 @@ vec3 fbm_vec3(vec3 p, float frequency, float offset)
3382
3415
  velocity += applyForce( originDirection * uSpeed * (1. - uForceDamping) , mass * .5);
3383
3416
  }
3384
3417
  #endif
3385
- `;var yS=`
3418
+ `;var hS=`
3386
3419
  // uniform sampler2D uCurrentPosition; // Pass in the variable from GPGPU
3387
3420
  // uniform sampler2D uCurrentVelocity; // Pass in the variable from GPGPU
3388
3421
  // uniform sampler2D uCurrentEmissionRate; // Pass in the variable from GPGPU
@@ -3408,7 +3441,7 @@ uniform float uForceDamping;
3408
3441
  uniform float uForceIntensity;
3409
3442
 
3410
3443
 
3411
- `+pS+`
3444
+ `+uS+`
3412
3445
  float rand(vec2 co){
3413
3446
  return fract(sin(dot(co, vec2(12.9898, 78.233))) * 43758.5453);
3414
3447
  }
@@ -3484,11 +3517,11 @@ void main() {
3484
3517
  #endif
3485
3518
 
3486
3519
  // COLLIDER
3487
- ${fS}
3520
+ ${dS}
3488
3521
  // ATTRACTION
3489
- ${hS}
3522
+ ${pS}
3490
3523
  // VORTEX
3491
- ${mS}
3524
+ ${fS}
3492
3525
  }
3493
3526
  // End isActive
3494
3527
 
@@ -3506,7 +3539,7 @@ void main() {
3506
3539
 
3507
3540
  gl_FragColor = vec4(velocity, collisionFlag);
3508
3541
  }
3509
- `;var PS=require("three");var zh=`
3542
+ `;var SS=require("three");var Lh=`
3510
3543
 
3511
3544
  // Linear Fade In
3512
3545
  float linearFadeIn(float t) {
@@ -3539,7 +3572,7 @@ void main() {
3539
3572
  float constant(float t) {
3540
3573
  return 1.0;
3541
3574
  }
3542
- `;var gS=`
3575
+ `;var mS=`
3543
3576
 
3544
3577
  float rand(vec3 co){
3545
3578
  return fract(sin(dot(co.xy ,vec2(12.9898,78.233))) * 43758.5453);
@@ -3554,7 +3587,7 @@ vec3 applyForce(vec3 force, float mass) {
3554
3587
 
3555
3588
  return acceleration;
3556
3589
  }
3557
- `;var xS=`
3590
+ `;var yS=`
3558
3591
  vec3 rgb2xyz (in vec3 rgb) {
3559
3592
  float r = rgb.r;
3560
3593
  float g = rgb.g;
@@ -3645,7 +3678,7 @@ vec3 lab2rgb (in vec3 lab) {
3645
3678
  return(rgb);
3646
3679
  }
3647
3680
 
3648
- `;var bS=`
3681
+ `;var gS=`
3649
3682
  uniform sampler2D uPosition;
3650
3683
  uniform float uSize;
3651
3684
  uniform float uSizeEnd;
@@ -3666,9 +3699,9 @@ vec3 lab2rgb (in vec3 lab) {
3666
3699
  varying vec2 vUv;
3667
3700
  varying vec2 vRef;
3668
3701
 
3669
- ${gS}
3670
- ${zh}
3671
- `,vS=({easeSize:n="linearFadeOut"})=>`
3702
+ ${mS}
3703
+ ${Lh}
3704
+ `,xS=({easeSize:n="linearFadeOut"})=>`
3672
3705
  vUv = uv;
3673
3706
  vRef = ref;
3674
3707
  // Normalized LifeTime 1 to 0
@@ -3720,7 +3753,7 @@ vec3 lab2rgb (in vec3 lab) {
3720
3753
  mvPosition = modelViewMatrix * instanceMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );
3721
3754
  mvPosition.xy += rotatedPosition;
3722
3755
  gl_Position = projectionMatrix * mvPosition;
3723
- `,SS=`
3756
+ `,bS=`
3724
3757
  uniform vec4 uColor; // start color
3725
3758
  uniform vec4 uColor2; // end color
3726
3759
  uniform sampler2D uTexture; // texture
@@ -3731,10 +3764,10 @@ vec3 lab2rgb (in vec3 lab) {
3731
3764
  float random(vec2 co) {
3732
3765
  return fract(sin(dot(co.xy, vec2(12.9898, 78.233))) * 43758.5453);
3733
3766
  }
3734
- `+zh+`
3735
- ${xS}
3767
+ `+Lh+`
3768
+ ${yS}
3736
3769
 
3737
- `,wS=({easeOpacity:n="linearFadeOut"})=>`
3770
+ `,vS=({easeOpacity:n="linearFadeOut"})=>`
3738
3771
  // if Particle is dead, hide it
3739
3772
  if (v_LifeLeft <= 0.005 ) {
3740
3773
  discard;
@@ -3755,7 +3788,7 @@ vec3 lab2rgb (in vec3 lab) {
3755
3788
 
3756
3789
  gl_FragColor = vec4(finalColor, finalAlpha);
3757
3790
 
3758
- `;var qd=class extends PS.ShaderMaterial{constructor(e,t){super();this.needsJitter=!0;this.type="ParticleMaterial";this.easeOpacity="linearFadeIn";this.easeSize="linearFadeIn";this.useSizeEnd=!1;this.isColoringRandom=!1;this.init(e,t),this.context=t}reset(){}init(e,t){this.transparent=!0,this.depthTest=!0,this.depthWrite=!1,this.easeOpacity=e.ease,this.easeSize=e.easeSize,this.layers=[],tt.startContext(tt.globalContext),this.lightLayer=new fr(0,"",{...Bt.defaultData("light","phong"),visible:!1},new ln,{},t.shared),tt.endContext(tt.globalContext),this.build()}updateState(e){e.coloring!==void 0&&(this.isColoringRandom=e.coloring==="random"),e.color!==void 0&&(e.color instanceof Array?this.uniforms.uColor.value=e.color:this.uniforms.uColor.value=this.context.shared.color(e.color)),e.color2!==void 0&&(e.color2 instanceof Array?this.uniforms.uColor2.value=e.color2:this.uniforms.uColor2.value=this.context.shared.color(e.color2)),e.size!==void 0&&(this.uniforms.uSize.value=e.size[0],this.uniforms.uSizeEnd.value=e.size[1],e.size[0]!==e.size[1]?this.useSizeEnd=!0:this.useSizeEnd=!1),e.ease!==void 0&&(this.easeOpacity=e.ease,this.build()),e.easeSize!==void 0&&(this.easeSize=e.easeSize,this.build()),this.needsUpdate=!0}onBeforeCompile(e){this.build(),e.defines=this.defines,e.uniforms=this.uniforms,e.vertexShader=this.vertexShader,e.fragmentShader=this.fragmentShader}build(){let e=new rs;return e.needsJitter=this.needsJitter,e.addFragmentParsCode(bb),e.buildShader("vertex",this.fragment),e.buildShader("fragment",this.fragment),e.addFragmentFinalCode(vb),this.isColoringRandom&&e.define("USE_RANDOM_COLORING"),this.useSizeEnd&&e.define("USE_SIZE_END"),e.addVertexParsCode(bS),e.addFragmentParsCode(SS),e.addVertexFinalCode(vS({easeSize:this.easeSize})),e.addFragmentFinalCode(wS({easeOpacity:this.easeOpacity})),this.vertexShader=e.getCode("vertex"),this.fragmentShader=e.getCode("fragment"),this.defines=e.defines,this.uniforms={...e.uniforms,...this.uniforms},this.extensions=e.extensions,this}get nodeMaterial(){return this}get fragment(){return this.lightLayer.node}getDefines(){return this.defines}nodeMaterialDispose(){this.layers.forEach(e=>e.dispose()),super.dispose()}};var Kr=require("three");var CS=require("three"),OS=require("three"),AS=require("three"),ks=class{constructor(r,e,t,o){this.type="SphereEmitterShape";this.targetMesh=void 0;this.size=r,this.type=t,this.textureSize=sS(e);let i=1;this.targetMesh=o?.type==="Mesh"&&o?o:this.getMesh(t,i);let{positions:a,dataTexture:s,dataTextureNormals:l}=this.createPositions(this.textureSize,this.targetMesh??this.getMesh(t,i));this.positionsTexture=s,this.positionsAttribute=a,this.directionsTexture=l}createPositions(r,e){let{positions:t,normals:o}=lS(e,r*r),i=Vh(t,r),a=Vh(o,r);return{dataTexture:i,positions:t,dataTextureNormals:a}}getMesh(r,e){let t=null;switch(r){case"SphereEmitterShape":{t=new Kr.SphereGeometry(e*.5,32,32);break}case"TorusEmitterShape":{t=new OS.TorusGeometry(e*.5,.3,15,40);break}case"ConeEmitterShape":{t=new Kr.ConeGeometry(e,e,15);break}case"BoxEmitterShape":{t=new Kr.BoxGeometry(e,e,e);break}case"PlaneEmitterShape":{t=new AS.PlaneGeometry(e,e),t.rotateX(-Math.PI/2);break}case"MeshEmitterShape":{t=new Kr.SphereGeometry(e,32,32);break}default:{t=new Kr.SphereGeometry(e,32,32);break}}return new CS.Mesh(t,new Kr.MeshBasicMaterial({color:16711680}))}applyToShader(r,e){this.size=new Kr.Vector3().fromArray(e.size),r.uEmitterSize.value=this.size}dispose(){this.positionsTexture.dispose(),this.directionsTexture.dispose(),this.positionsAttribute=new Float32Array}};function oi(n){let r={...n},e=xa.defaultData;r.forceFieldObjectId&&(r.colliderEntityId=r.forceFieldObjectId);let t={...e.shape,...r.shape},o={...e.renderMaterial,...r.renderMaterial};return{...e,...r,shape:t,renderMaterial:o}}var TS=`
3791
+ `;var Ud=class extends SS.ShaderMaterial{constructor(e,t){super();this.needsJitter=!0;this.type="ParticleMaterial";this.easeOpacity="linearFadeIn";this.easeSize="linearFadeIn";this.useSizeEnd=!1;this.isColoringRandom=!1;this.init(e,t),this.context=t}reset(){}init(e,t){this.transparent=!0,this.depthTest=!0,this.depthWrite=!1,this.easeOpacity=e.ease,this.easeSize=e.easeSize,this.layers=[],tt.startContext(tt.globalContext),this.lightLayer=new fr(0,"",{...Bt.defaultData("light","phong"),visible:!1},new ln,{},t.shared),tt.endContext(tt.globalContext),this.build()}updateState(e){e.coloring!==void 0&&(this.isColoringRandom=e.coloring==="random"),e.color!==void 0&&(e.color instanceof Array?this.uniforms.uColor.value=e.color:this.uniforms.uColor.value=this.context.shared.color(e.color)),e.color2!==void 0&&(e.color2 instanceof Array?this.uniforms.uColor2.value=e.color2:this.uniforms.uColor2.value=this.context.shared.color(e.color2)),e.size!==void 0&&(this.uniforms.uSize.value=e.size[0],this.uniforms.uSizeEnd.value=e.size[1],e.size[0]!==e.size[1]?this.useSizeEnd=!0:this.useSizeEnd=!1),e.ease!==void 0&&(this.easeOpacity=e.ease,this.build()),e.easeSize!==void 0&&(this.easeSize=e.easeSize,this.build()),this.needsUpdate=!0}onBeforeCompile(e){this.build(),e.defines=this.defines,e.uniforms=this.uniforms,e.vertexShader=this.vertexShader,e.fragmentShader=this.fragmentShader}build(){let e=new ts;return e.needsJitter=this.needsJitter,e.addFragmentParsCode(xb),e.buildShader("vertex",this.fragment),e.buildShader("fragment",this.fragment),e.addFragmentFinalCode(bb),this.isColoringRandom&&e.define("USE_RANDOM_COLORING"),this.useSizeEnd&&e.define("USE_SIZE_END"),e.addVertexParsCode(gS),e.addFragmentParsCode(bS),e.addVertexFinalCode(xS({easeSize:this.easeSize})),e.addFragmentFinalCode(vS({easeOpacity:this.easeOpacity})),this.vertexShader=e.getCode("vertex"),this.fragmentShader=e.getCode("fragment"),this.defines=e.defines,this.uniforms={...e.uniforms,...this.uniforms},this.extensions=e.extensions,this}get nodeMaterial(){return this}get fragment(){return this.lightLayer.node}getDefines(){return this.defines}nodeMaterialDispose(){this.layers.forEach(e=>e.dispose()),super.dispose()}};var Kr=require("three");var wS=require("three"),PS=require("three"),CS=require("three"),Fs=class{constructor(r,e,t,o){this.type="SphereEmitterShape";this.targetMesh=void 0;this.size=r,this.type=t,this.textureSize=iS(e);let i=1;this.targetMesh=o?.type==="Mesh"&&o?o:this.getMesh(t,i);let{positions:a,dataTexture:s,dataTextureNormals:l}=this.createPositions(this.textureSize,this.targetMesh??this.getMesh(t,i));this.positionsTexture=s,this.positionsAttribute=a,this.directionsTexture=l}createPositions(r,e){let{positions:t,normals:o}=aS(e,r*r),i=Rh(t,r),a=Rh(o,r);return{dataTexture:i,positions:t,dataTextureNormals:a}}getMesh(r,e){let t=null;switch(r){case"SphereEmitterShape":{t=new Kr.SphereGeometry(e*.5,32,32);break}case"TorusEmitterShape":{t=new PS.TorusGeometry(e*.5,.3,15,40);break}case"ConeEmitterShape":{t=new Kr.ConeGeometry(e,e,15);break}case"BoxEmitterShape":{t=new Kr.BoxGeometry(e,e,e);break}case"PlaneEmitterShape":{t=new CS.PlaneGeometry(e,e),t.rotateX(-Math.PI/2);break}case"MeshEmitterShape":{t=new Kr.SphereGeometry(e,32,32);break}default:{t=new Kr.SphereGeometry(e,32,32);break}}return new wS.Mesh(t,new Kr.MeshBasicMaterial({color:16711680}))}applyToShader(r,e){this.size=new Kr.Vector3().fromArray(e.size),r.uEmitterSize.value=this.size}dispose(){this.positionsTexture.dispose(),this.directionsTexture.dispose(),this.positionsAttribute=new Float32Array}};function ri(n){let r={...n},e=ga.defaultData;r.forceFieldObjectId&&(r.colliderEntityId=r.forceFieldObjectId);let t={...e.shape,...r.shape},o={...e.renderMaterial,...r.renderMaterial};return{...e,...r,shape:t,renderMaterial:o}}var OS=`
3759
3792
  // uniform sampler2D uCurrentPosition; // Pass in the variable from GPGPU
3760
3793
  // uniform sampler2D uCurrentVelocity; // Pass in the variable from GPGPU
3761
3794
  // uniform sampler2D uCurrentEmissionRate; // Pass in the variable from GPGPU
@@ -3802,8 +3835,8 @@ void main() {
3802
3835
 
3803
3836
 
3804
3837
  }
3805
- `;var Gh=10,$d=class extends Re.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 Re.TextureLoader;this.currentWorldPosition=new Re.Vector3;this.systemQuaternion=new Re.Quaternion;this.worldGravity=new Re.Vector3(0,0,0);this.directionAxis=new Re.Vector3(0,0,0);this.colliderV3=new Re.Vector3(0,0,0);this.colliderQuaternion=new Re.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 qd(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 Re.Vector3(0,0,0)},uEmissionData:{value:new Re.Vector3(0,0,0)},uTexture:{value:this.defaultTexture},uWorldOffset:{value:new Re.Vector3(0,0,0)},uWorldQuaternion:{value:new Re.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 Re.Texture(i.img);a.needsUpdate=!0,e.uTexture.value=a;return}if(typeof o!="string"){let i=new Image;i.onload=()=>{let l=new Re.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=aS(t);!this.emitterShape?.positionsAttribute||e.geometry.setAttribute("ref",new Re.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],t=this.simFeaturesDefinition.USE_COLLIDER||this.simFeaturesDefinition.USE_ATTRACTOR||this.simFeaturesDefinition.USE_VORTEX;if(e.destroyedInAction&&t&&this.init(oi({...this.system.data,colliderEntityId:null})),!e||e.destroyedInAction)return;e.getWorldPosition(this.colliderV3),this.colliderV3.y===0&&(this.colliderV3.y=1e-4),this.velocitySimRT.material.uniforms.uColliderPos.value.copy(this.colliderV3);let o=e.data.size;this.colliderV3.fromArray(o),this.velocitySimRT.material.uniforms.uColliderSize.value.copy(this.simFeaturesDefinition.USE_SPHERE_COLLIDER?this.colliderV3.multiplyScalar(.5):this.colliderV3),e.getWorldQuaternion(this.colliderQuaternion),this.velocitySimRT.material.uniforms.uColliderQuaternion.value.copy(this.colliderQuaternion.normalize()),this.velocitySimRT.material.uniforms.uColliderQuaternionInvert.value.copy(this.colliderQuaternion.normalize().invert())}updateState(e){!this.velocitySimRT||!this.positionSimRT||(e.renderMaterial&&this.updateMaterialState(e.renderMaterial),this.updateParticleState(e))}updateVariableState(e,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/Gh),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(oi(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"]))/Gh),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={...oi(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])*Re.MathUtils.DEG2RAD,Number(e[1])*Re.MathUtils.DEG2RAD,Number(e[2])*Re.MathUtils.DEG2RAD],o=new Re.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 MS.GPUComputationRenderer(this.emitterShape.textureSize,this.emitterShape.textureSize,this.renderer),i=this.updateSimulationDefinition(e),a=o.addVariable("uCurrentPosition",i+dS,this.emitterShape.positionsTexture),s=o.addVariable("uCurrentVelocity",i+yS,this.emitterShape.directionsTexture),l=o.addVariable("uCurrentEmissionRate",TS,uS(this.emitterShape.textureSize));o.setVariableDependencies(a,[a,s,l]),o.setVariableDependencies(s,[a,s,l]),o.setVariableDependencies(l,[a,s,l]);let c=cS({size:this.emitterShape.textureSize}),u={uOriginalPosition:{value:this.emitterShape.positionsTexture},uWorldOffset:{value:new Re.Vector3(0,0,0)},uWorldQuaternion:{value:new Re.Vector4(0,0,0,1)},uTime:{value:0},uFPSRatio:{value:1},uMaxLifeTime:{value:e.life},uEmitterSize:{value:new Re.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 Re.Vector4(0,0,0,1)},uColliderPos:{value:new Re.Vector3(0,0,0)},uColliderSize:{value:new Re.Vector3(0,0,0)},uForceIntensity:{value:d?d.forceIntensity:0},uForceDamping:{value:d?d.forceDambing:0},uColliderQuaternion:{value:new Re.Vector4(0,0,0,1)},uColliderQuaternionInvert:{value:new Re.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"]))/Gh}};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={...oi(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}
3806
- `);return t}createShape(e,t){this.emitterShape&&this.emitterShape.dispose();let o=new Re.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 ks(o,t,e.type,i):new ks(o,t,"SphereEmitterShape")}else return new ks(o,t,e.type)}createPrimaryEmitter(e){let t,o=e*e;return t=new Re.InstancedMesh(new Re.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(oi(this.system.data))}startEmitting(e){this.isEmitting=!0,this.hasBeenReset=!1,this.lastEmitTime=e}stopEmitting(){this.isEmitting=!1}};var Us=require("three");var Yd=class extends Ft{constructor(e,t,o){super(e,t);this.type="ParticleSystem";this.geometry=new Us.BufferGeometry;this.actualTime=0;this.currentLoopTime=0;this.started=!1;this.stopped=!1;this.timeoutId=void 0;this.isFrozen=!1;this.isIdle=!0;this.emitter=null;this.colliderEntities=[];this.renderer=null;this.isPreWarm=!1;this._hasOnAfterRenderBeenCalled=!1;this.onAfterRender=e=>{this._hasOnAfterRenderBeenCalled||(this._hasOnAfterRenderBeenCalled=!0,this.init(e))};this.context=o,this.data={...t,...oi(t)},this.geometry.setAttribute("position",new Us.Float32BufferAttribute([],3)),this.material=new Us.MeshBasicMaterial({colorWrite:!1}),this.frustumCulled=!1}init(e){this.renderer=e,this.emitter=new $d(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.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),Fe(e.path,["renderMaterial"])&&this.updateParticleState({renderMaterial:{...this.data.renderMaterial,...gt.drop(e,1).props}}),Fe(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){this.timeoutId=window.setTimeout(()=>{this.start(0)},e);return}this.started=!0,this.stopped=!1,this.isFrozen=!1,this.emitter?.startEmitting(this.actualTime/1e3)}froze(){this.isFrozen=!0}unFroze(){this.isFrozen=!1}stop(){this.stopped=!0,this.currentLoopTime=0,this.emitter?.stopEmitting(),clearTimeout(this.timeoutId)}reset(){this.started=!1,this.stopped=!1,this.emitter?.reset()}wakeUp(){this.isIdle=!1}sleep(){this.isIdle=!0,this.reset()}};function nN(){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=nN();function iN(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 Xn(n,r,e):r.geometry.type==="InputGeometry"?new Ud(n,r,e):(r.geometry.type==="SubdivGeometry"?t=new _i(n,r,e):r.geometry.type==="PathGeometry"?t=new Fs(n,r,e):r.geometry.type==="VectorGeometry"?t=new kd(n,r,e):r.geometry.type==="BooleanGeometry"?t=new Cr(n,r,e):r.geometry.type==="UIGeometry"?t=new Vi(n,r,e):t=new St(n,r,e),t)}function Xd(n,r,e){return console.assert(r.type!==void 0),r.type==="Mesh"?iN(n,r,e):r.type==="Empty"?new Jn(n,r):r.type==="Particle"?new Yd(n,r,e):r.type==="ParticleCollider"?new Nd(n,r,e):r.type==="Splat"?new Jn(n,r):r.type==="Bone"?new Wd(n,r):r.type==="Page"?new Xr(n,r,e):r.type==="PointLight"?new jd(n,r,e):r.type==="SpotLight"?new Ls(n,r,e):r.type==="DirectionalLight"?new Rs(n,r,e):r.type==="Component"||r.type==="Instance"?new gn(n,r,e):eo.is(r.type)?new hn(n,r):(console.error(r),new Jn(n,r))}no.createEntity=Xd;function aN(n,r,e){let t=Xd(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()}no.changeEntityProptotype=aN;no.Cloner=Is;function ES(n,r,e,t){n.updateByOp(r,e,t,!1)}var Hs=require("three");function NS(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,Cs(n),Ps(n)),t.length===0&&o.length===0&&n.layers.set(0),n instanceof Pr&&n.needsAO&&n.layers.enable(5),e}function DS(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 _S(n){let r=!1;return n.traverseEntity(e=>{if(e instanceof Pr)if(Array.isArray(e.material))for(let t=0;t<e.material.length;t++)NS(e,e.material[t])&&(r=!0);else NS(e,e.material)&&(r=!0)}),r}function BS(n){let r=!1;return n.traverseEntity(e=>{if(e instanceof Pr)if(Array.isArray(e.material))for(let t=0;t<e.material.length;t++)DS(e,e.material[t])&&(r=!0);else DS(e,e.material)&&(r=!0)}),r}var cN=new Hs.Raycaster,uN=new Hs.Matrix4,dN=new Hs.Ray;function sc(n,r,e,t=!1){let o=n.cloner;if(o)for(let i of o.children){let a=uN.copy(i.matrixWorld).invert(),s=dN.copy(r.ray).applyMatrix4(a),l=n.matrixWorld;s.applyMatrix4(l);let c=cN;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 Kd=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);){if(a=this._constraints.get(a),i.includes(a)){console.warn(`circular dependency detected: ${i.join(" -> ")}`);break}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 RS="AGFzbQEAAAAADwhkeWxpbmsuMAEEAAAAAAETA2AAAGAIf39/f39/f38AYAABfwISAQNlbnYGbWVtb3J5AgMAgIAEAwQDAAECBzkDEV9fd2FzbV9jYWxsX2N0b3JzAAALc29ydEluZGV4ZXMAARNlbXNjcmlwdGVuX3Rsc19pbml0AAIK3gMDAwABC9IDAwF/BnwBfgJAIAdFDQAgAysDUCEMIAMrAzAhDSADKwMQIQ5BACEDRP///////+9/IQtEAAAAAAAAEAAhCgNAIAIgA0ECdGoCfyAOIAEgA0EMbGoiCCoCALuiIA0gCCoCBLuioCAMIAgqAgi7oqBEAAAAAAAAsECiIgmZRAAAAAAAAOBBYwRAIAmqDAELQYCAgIB4CzYCACAJIAsgCSALYxshCyAJIAogCSAKZBshCiADQQFqIgMgB0cNAAsgB0UNACAGuCAKIAuhoyEJQQAhAwNAAn8gCSACIANBAnRqIgEoAgC3IAuhoiIKmUQAAAAAAADgQWMEQCAKqgwBC0GAgICAeAshCCABIAg2AgAgBCAIQQJ0aiIBIAEoAgBBAWo2AgAgA0EBaiIDIAdHDQALCyAGQQJPBEAgBCgCACEIQQEhAwNAIAQgA0ECdGoiASABKAIAIAhqIgg2AgAgA0EBaiIDIAZHDQALCyAHQQFrIgGtIQ8DQCAEIAIgD6dBAnQiA2ooAgBBAnRqIgcgBygCAEEBayIHNgIAIAUgASAHa0ECdGogACADaigCADYCACAPUCEDIA9CAX0hDyADRQ0ACyAGBEAgBEEAIAZBAnT8CwALCwQAQQAL";var jo=class{};go(jo,"DepthMapRange",1<<16),go(jo,"MemoryPageSize",65536),go(jo,"BytesPerFloat",4),go(jo,"BytesPerInt",4);function pN(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 V=new Uint32Array(u,o,e);for(let k=0;k<_.length-1;k++){let L=D[k],W=M[k].elements,F=L.filter(H=>H.enabled&&H.mode==="Include").map(H=>H.type==="Box"?C(H):N(H)),j=L.filter(H=>H.enabled&&H.mode==="Exclude").map(H=>H.type==="Box"?C(H):N(H));for(let H=_[k];H<_[k+1];H++){let q=h[H*3],re=h[H*3+1],ee=h[H*3+2];if((F.length===0||O(q,re,ee,F))&&(j.length===0||!O(q,re,ee,j))){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,V[t]=H,t++}}}}function w(M,D){let _=[],B=D.filter(L=>L.enabled&&L.mode==="Include").map(L=>L.type==="Box"?C(L):N(L)),V=D.filter(L=>L.enabled&&L.mode==="Exclude").map(L=>L.type==="Box"?C(L):N(L)),k=M.length;for(let L=0;L<k;L+=3){let W=M[L],F=M[L+1],j=M[L+2];(B.length===0||O(W,F,j,B))&&(V.length===0||!O(W,F,j,V))||_.push(L/3)}return _}function O(M,D,_,B,V){return B[V==="Intersect"?"every":"some"](k=>{let L=S(M,D,_,k.invRotationMatrix,k.cropCenter);return Array.isArray(k)?x(L.x,L.y,L.z,k):E(L.x,L.y,L.z,k)})}function S(M,D,_,B,V){let k=M-V[0],L=D-V[1],W=_-V[2],F=1/(B[3]*k+B[7]*L+B[11]*W+B[15]);return{x:(B[0]*k+B[4]*L+B[8]*W+B[12])*F+V[0],y:(B[1]*k+B[5]*L+B[9]*W+B[13])*F+V[1],z:(B[2]*k+B[6]*L+B[10]*W+B[14])*F+V[2]}}function C(M){let D=M.cropSize[0]/2,_=M.cropSize[1]/2,B=M.cropSize[2]/2,V=[M.cropCenter[0]-D,M.cropCenter[1]-_,M.cropCenter[2]-B,M.cropCenter[0]+D,M.cropCenter[1]+_,M.cropCenter[2]+B],k=T(M.cropRotation);return Object.assign(V,{invRotationMatrix:k,cropCenter:M.cropCenter})}function T(M){let D=[],_=M[0]*Math.PI/180,B=M[1]*Math.PI/180,V=M[2]*Math.PI/180,k=Math.cos(_),L=Math.sin(_),W=Math.cos(B),F=Math.sin(B),j=Math.cos(V),H=Math.sin(V),q=k*j,re=k*H,ee=L*j,X=L*H;return D[0]=W*j,D[1]=-W*H,D[2]=F,D[4]=re+ee*F,D[5]=q-X*F,D[6]=-L*W,D[8]=X-q*F,D[9]=ee+re*F,D[10]=k*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 N(M){let D=2/M.cropSize[0],_=2/M.cropSize[1],B=2/M.cropSize[2],V=T(M.cropRotation);return{invRadiusX:D,invRadiusY:_,invRadiusZ:B,cropCenter:M.cropCenter,invRotationMatrix:V}}function E(M,D,_,B){let V=(M-B.cropCenter[0])*B.invRadiusX,k=(D-B.cropCenter[1])*B.invRadiusY,L=(_-B.cropCenter[2])*B.invRadiusZ;return V*V+k*k+L*L<=1}n.onmessage=M=>{if(M.data.getCroppedIndexes){let D=new Uint32Array(w(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),V=D+_,k=e*V,L=e*d.BytesPerInt*2+d.DepthMapRange*d.BytesPerInt*2,W=d.MemoryPageSize*32,F=k+L+W,j=Math.floor(F/d.MemoryPageSize)+1,H={module:{},env:{memory:new WebAssembly.Memory({initial:j*2,maximum:j*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 LS(n){let r=new Worker(URL.createObjectURL(new Blob(["(",pN.toString(),")(self)"],{type:"application/javascript"}))),e=atob(RS),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:jo.BytesPerFloat,BytesPerInt:jo.BytesPerInt,DepthMapRange:jo.DepthMapRange,MemoryPageSize:jo.MemoryPageSize}}}),r}var mr=require("three");var Ce=require("three");var Qd=function(){let n=new Float32Array(1),r=new Int32Array(n.buffer);return function(e){return n[0]=e,r[0]}}(),VS=function(n,r,e,t){return n+(r<<8)+(e<<16)+(t<<24)};var Zd=new Ce.Vector2;function Jd(n){let r=!1;return n.scene.objects.traverse((e,t)=>{if(t.visible===!1)return!0;t.type==="Splat"&&(r=!0)}),r}var ni=class extends Ce.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=ni.buildGeomtery(t),c=ni.buildMaterial(a);return new ni(e,t,l,c,o,i,a,s)}static buildMaterial(e){let t=`
3838
+ `;var Vh=10,Hd=class extends Re.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 Re.TextureLoader;this.currentWorldPosition=new Re.Vector3;this.systemQuaternion=new Re.Quaternion;this.worldGravity=new Re.Vector3(0,0,0);this.directionAxis=new Re.Vector3(0,0,0);this.colliderV3=new Re.Vector3(0,0,0);this.colliderQuaternion=new Re.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 Ud(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 Re.Vector3(0,0,0)},uEmissionData:{value:new Re.Vector3(0,0,0)},uTexture:{value:this.defaultTexture},uWorldOffset:{value:new Re.Vector3(0,0,0)},uWorldQuaternion:{value:new Re.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 Re.Texture(i.img);a.needsUpdate=!0,e.uTexture.value=a;return}if(typeof o!="string"){let i=new Image;i.onload=()=>{let l=new Re.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=nS(t);!this.emitterShape?.positionsAttribute||e.geometry.setAttribute("ref",new Re.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],t=this.simFeaturesDefinition.USE_COLLIDER||this.simFeaturesDefinition.USE_ATTRACTOR||this.simFeaturesDefinition.USE_VORTEX;if(e.destroyedInAction&&t&&this.init(ri({...this.system.data,colliderEntityId:null})),!e||e.destroyedInAction)return;e.getWorldPosition(this.colliderV3),this.colliderV3.y===0&&(this.colliderV3.y=1e-4),this.velocitySimRT.material.uniforms.uColliderPos.value.copy(this.colliderV3);let o=e.data.size;this.colliderV3.fromArray(o),this.velocitySimRT.material.uniforms.uColliderSize.value.copy(this.simFeaturesDefinition.USE_SPHERE_COLLIDER?this.colliderV3.multiplyScalar(.5):this.colliderV3),e.getWorldQuaternion(this.colliderQuaternion),this.velocitySimRT.material.uniforms.uColliderQuaternion.value.copy(this.colliderQuaternion.normalize()),this.velocitySimRT.material.uniforms.uColliderQuaternionInvert.value.copy(this.colliderQuaternion.normalize().invert())}updateState(e){!this.velocitySimRT||!this.positionSimRT||(e.renderMaterial&&this.updateMaterialState(e.renderMaterial),this.updateParticleState(e))}updateVariableState(e,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/Vh),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(ri(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"]))/Vh),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={...ri(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])*Re.MathUtils.DEG2RAD,Number(e[1])*Re.MathUtils.DEG2RAD,Number(e[2])*Re.MathUtils.DEG2RAD],o=new Re.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 TS.GPUComputationRenderer(this.emitterShape.textureSize,this.emitterShape.textureSize,this.renderer),i=this.updateSimulationDefinition(e),a=o.addVariable("uCurrentPosition",i+cS,this.emitterShape.positionsTexture),s=o.addVariable("uCurrentVelocity",i+hS,this.emitterShape.directionsTexture),l=o.addVariable("uCurrentEmissionRate",OS,lS(this.emitterShape.textureSize));o.setVariableDependencies(a,[a,s,l]),o.setVariableDependencies(s,[a,s,l]),o.setVariableDependencies(l,[a,s,l]);let c=sS({size:this.emitterShape.textureSize}),u={uOriginalPosition:{value:this.emitterShape.positionsTexture},uWorldOffset:{value:new Re.Vector3(0,0,0)},uWorldQuaternion:{value:new Re.Vector4(0,0,0,1)},uTime:{value:0},uFPSRatio:{value:1},uMaxLifeTime:{value:e.life},uEmitterSize:{value:new Re.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),f={uOriginalPosition:{value:this.emitterShape.positionsTexture},uDirections:{value:this.emitterShape.directionsTexture},uDirectionsAxis:{value:this.directionAxis},uWorldQuaternion:{value:new Re.Vector4(0,0,0,1)},uColliderPos:{value:new Re.Vector3(0,0,0)},uColliderSize:{value:new Re.Vector3(0,0,0)},uForceIntensity:{value:d?d.forceIntensity:0},uForceDamping:{value:d?d.forceDambing:0},uColliderQuaternion:{value:new Re.Vector4(0,0,0,1)},uColliderQuaternionInvert:{value:new Re.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"]))/Vh}};s.material.uniforms=f;let h={uIndex:{value:c},uTime:{value:0},uLastIndexEmitted:{value:0},uParticlesToEmit:{value:0}};l.material.uniforms=h;let m=[Number(this.shared.getVariable(e.shape.size[0],[this.uuid,"particles","shape_size_0"])),Number(this.shared.getVariable(e.shape.size[1],[this.uuid,"particles","shape_size_1"])),Number(this.shared.getVariable(e.shape.size[2],[this.uuid,"particles","shape_size_2"]))],y={...ri(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}
3839
+ `);return t}createShape(e,t){this.emitterShape&&this.emitterShape.dispose();let o=new Re.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 Fs(o,t,e.type,i):new Fs(o,t,"SphereEmitterShape")}else return new Fs(o,t,e.type)}createPrimaryEmitter(e){let t,o=e*e;return t=new Re.InstancedMesh(new Re.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(ri(this.system.data))}startEmitting(e){this.isEmitting=!0,this.hasBeenReset=!1,this.lastEmitTime=e}stopEmitting(){this.isEmitting=!1}};var js=require("three");var Wd=class extends Ft{constructor(e,t,o){super(e,t);this.type="ParticleSystem";this.geometry=new js.BufferGeometry;this.actualTime=0;this.currentLoopTime=0;this.started=!1;this.stopped=!1;this.timeoutId=void 0;this.isFrozen=!1;this.isIdle=!0;this.emitter=null;this.colliderEntities=[];this.renderer=null;this.isPreWarm=!1;this._hasOnAfterRenderBeenCalled=!1;this.onAfterRender=e=>{this._hasOnAfterRenderBeenCalled||(this._hasOnAfterRenderBeenCalled=!0,this.init(e))};this.context=o,this.data={...t,...ri(t)},this.geometry.setAttribute("position",new js.Float32BufferAttribute([],3)),this.material=new js.MeshBasicMaterial({colorWrite:!1}),this.frustumCulled=!1}init(e){this.renderer=e,this.emitter=new Hd(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.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),Fe(e.path,["renderMaterial"])&&this.updateParticleState({renderMaterial:{...this.data.renderMaterial,...gt.drop(e,1).props}}),Fe(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){this.timeoutId=window.setTimeout(()=>{this.start(0)},e);return}this.started=!0,this.stopped=!1,this.isFrozen=!1,this.emitter?.startEmitting(this.actualTime/1e3)}froze(){this.isFrozen=!0}unFroze(){this.isFrozen=!1}stop(){this.stopped=!0,this.currentLoopTime=0,this.emitter?.stopEmitting(),clearTimeout(this.timeoutId)}reset(){this.started=!1,this.stopped=!1,this.emitter?.reset()}wakeUp(){this.isIdle=!1}sleep(){this.isIdle=!0,this.reset()}};function oN(){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 zh=oN();function nN(n,r,e){zh!==void 0&&(r?.geometry?.subdivisions??0)>zh&&(console.log("reducing subdivisions",r.name,r.geometry.subdivisions),r.geometry.subdivisions=zh);let t;return r.geometry.type==="TextGeometry"?new Yn(n,r,e):r.geometry.type==="InputGeometry"?new Fd(n,r,e):(r.geometry.type==="SubdivGeometry"?t=new Di(n,r,e):r.geometry.type==="PathGeometry"?t=new zs(n,r,e):r.geometry.type==="VectorGeometry"?t=new Gd(n,r,e):r.geometry.type==="BooleanGeometry"?t=new Cr(n,r,e):r.geometry.type==="UIGeometry"?t=new Li(n,r,e):t=new St(n,r,e),t)}function qd(n,r,e){return console.assert(r.type!==void 0),r.type==="Mesh"?nN(n,r,e):r.type==="Empty"?new Zn(n,r):r.type==="Particle"?new Wd(n,r,e):r.type==="ParticleCollider"?new Id(n,r,e):r.type==="Splat"?new Zn(n,r):r.type==="Bone"?new kd(n,r):r.type==="Page"?new Xr(n,r,e):r.type==="PointLight"?new zd(n,r,e):r.type==="SpotLight"?new Bs(n,r,e):r.type==="DirectionalLight"?new _s(n,r,e):r.type==="Component"||r.type==="Instance"?new yn(n,r,e):eo.is(r.type)?new fn(n,r):(console.error(r),new Zn(n,r))}no.createEntity=qd;function iN(n,r,e){let t=qd(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()}no.changeEntityProptotype=iN;no.Cloner=As;function IS(n,r,e,t){n.updateByOp(r,e,t,!1)}var ks=require("three");function MS(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,Ps(n),ws(n)),t.length===0&&o.length===0&&n.layers.set(0),n instanceof Pr&&n.needsAO&&n.layers.enable(5),e}function ES(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 NS(n){let r=!1;return n.traverseEntity(e=>{if(e instanceof Pr)if(Array.isArray(e.material))for(let t=0;t<e.material.length;t++)MS(e,e.material[t])&&(r=!0);else MS(e,e.material)&&(r=!0)}),r}function DS(n){let r=!1;return n.traverseEntity(e=>{if(e instanceof Pr)if(Array.isArray(e.material))for(let t=0;t<e.material.length;t++)ES(e,e.material[t])&&(r=!0);else ES(e,e.material)&&(r=!0)}),r}var lN=new ks.Raycaster,cN=new ks.Matrix4,uN=new ks.Ray;function nc(n,r,e,t=!1){let o=n.cloner;if(o)for(let i of o.children){let a=cN.copy(i.matrixWorld).invert(),s=uN.copy(r.ray).applyMatrix4(a),l=n.matrixWorld;s.applyMatrix4(l);let c=lN;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 $d=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);){if(a=this._constraints.get(a),i.includes(a)){console.warn(`circular dependency detected: ${i.join(" -> ")}`);break}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 _S="AGFzbQEAAAAADwhkeWxpbmsuMAEEAAAAAAETA2AAAGAIf39/f39/f38AYAABfwISAQNlbnYGbWVtb3J5AgMAgIAEAwQDAAECBzkDEV9fd2FzbV9jYWxsX2N0b3JzAAALc29ydEluZGV4ZXMAARNlbXNjcmlwdGVuX3Rsc19pbml0AAIK3gMDAwABC9IDAwF/BnwBfgJAIAdFDQAgAysDUCEMIAMrAzAhDSADKwMQIQ5BACEDRP///////+9/IQtEAAAAAAAAEAAhCgNAIAIgA0ECdGoCfyAOIAEgA0EMbGoiCCoCALuiIA0gCCoCBLuioCAMIAgqAgi7oqBEAAAAAAAAsECiIgmZRAAAAAAAAOBBYwRAIAmqDAELQYCAgIB4CzYCACAJIAsgCSALYxshCyAJIAogCSAKZBshCiADQQFqIgMgB0cNAAsgB0UNACAGuCAKIAuhoyEJQQAhAwNAAn8gCSACIANBAnRqIgEoAgC3IAuhoiIKmUQAAAAAAADgQWMEQCAKqgwBC0GAgICAeAshCCABIAg2AgAgBCAIQQJ0aiIBIAEoAgBBAWo2AgAgA0EBaiIDIAdHDQALCyAGQQJPBEAgBCgCACEIQQEhAwNAIAQgA0ECdGoiASABKAIAIAhqIgg2AgAgA0EBaiIDIAZHDQALCyAHQQFrIgGtIQ8DQCAEIAIgD6dBAnQiA2ooAgBBAnRqIgcgBygCAEEBayIHNgIAIAUgASAHa0ECdGogACADaigCADYCACAPUCEDIA9CAX0hDyADRQ0ACyAGBEAgBEEAIAZBAnT8CwALCwQAQQAL";var jo=class{};go(jo,"DepthMapRange",1<<16),go(jo,"MemoryPageSize",65536),go(jo,"BytesPerFloat",4),go(jo,"BytesPerInt",4);function dN(n){let r,e,t,o,i,a,s,l,c,u,p,d,f,h,m,y;function b(M){let N=new Float64Array(u,a,16);for(let B=0;B<16;B++)N[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 S(M,N,_){let B=new Float32Array(u,i,e*3);t=0;let V=new Uint32Array(u,o,e);for(let k=0;k<_.length-1;k++){let L=N[k],W=M[k].elements,F=L.filter(H=>H.enabled&&H.mode==="Include").map(H=>H.type==="Box"?A(H):D(H)),j=L.filter(H=>H.enabled&&H.mode==="Exclude").map(H=>H.type==="Box"?A(H):D(H));for(let H=_[k];H<_[k+1];H++){let q=f[H*3],re=f[H*3+1],ee=f[H*3+2];if((F.length===0||C(q,re,ee,F))&&(j.length===0||!C(q,re,ee,j))){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,V[t]=H,t++}}}}function P(M,N){let _=[],B=N.filter(L=>L.enabled&&L.mode==="Include").map(L=>L.type==="Box"?A(L):D(L)),V=N.filter(L=>L.enabled&&L.mode==="Exclude").map(L=>L.type==="Box"?A(L):D(L)),k=M.length;for(let L=0;L<k;L+=3){let W=M[L],F=M[L+1],j=M[L+2];(B.length===0||C(W,F,j,B))&&(V.length===0||!C(W,F,j,V))||_.push(L/3)}return _}function C(M,N,_,B,V){return B[V==="Intersect"?"every":"some"](k=>{let L=v(M,N,_,k.invRotationMatrix,k.cropCenter);return Array.isArray(k)?g(L.x,L.y,L.z,k):E(L.x,L.y,L.z,k)})}function v(M,N,_,B,V){let k=M-V[0],L=N-V[1],W=_-V[2],F=1/(B[3]*k+B[7]*L+B[11]*W+B[15]);return{x:(B[0]*k+B[4]*L+B[8]*W+B[12])*F+V[0],y:(B[1]*k+B[5]*L+B[9]*W+B[13])*F+V[1],z:(B[2]*k+B[6]*L+B[10]*W+B[14])*F+V[2]}}function A(M){let N=M.cropSize[0]/2,_=M.cropSize[1]/2,B=M.cropSize[2]/2,V=[M.cropCenter[0]-N,M.cropCenter[1]-_,M.cropCenter[2]-B,M.cropCenter[0]+N,M.cropCenter[1]+_,M.cropCenter[2]+B],k=T(M.cropRotation);return Object.assign(V,{invRotationMatrix:k,cropCenter:M.cropCenter})}function T(M){let N=[],_=M[0]*Math.PI/180,B=M[1]*Math.PI/180,V=M[2]*Math.PI/180,k=Math.cos(_),L=Math.sin(_),W=Math.cos(B),F=Math.sin(B),j=Math.cos(V),H=Math.sin(V),q=k*j,re=k*H,ee=L*j,X=L*H;return N[0]=W*j,N[1]=-W*H,N[2]=F,N[4]=re+ee*F,N[5]=q-X*F,N[6]=-L*W,N[8]=X-q*F,N[9]=ee+re*F,N[10]=k*W,N[12]=0,N[13]=0,N[14]=0,N[3]=0,N[7]=0,N[11]=0,N[15]=1,N}function g(M,N,_,B){return M>=B[0]&&M<=B[3]&&N>=B[1]&&N<=B[4]&&_>=B[2]&&_<=B[5]}function D(M){let N=2/M.cropSize[0],_=2/M.cropSize[1],B=2/M.cropSize[2],V=T(M.cropRotation);return{invRadiusX:N,invRadiusY:_,invRadiusZ:B,cropCenter:M.cropCenter,invRotationMatrix:V}}function E(M,N,_,B){let V=(M-B.cropCenter[0])*B.invRadiusX,k=(N-B.cropCenter[1])*B.invRadiusY,L=(_-B.cropCenter[2])*B.invRadiusZ;return V*V+k*k+L*L<=1}n.onmessage=M=>{if(M.data.getCroppedIndexes){let N=new Uint32Array(P(new Float32Array(M.data.positions),M.data.crops)).buffer;n.postMessage({outOfBoundsIndexes:N},[N])}else if(M.data.positions)p=M.data.positions,f=new Float32Array(p),m=M.data.meshMatrixWorlds,y=M.data.cropsArray,h=M.data.meshIndexIntervals,S(m,y,h),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,S(m,y,h)),b(M.data.sort.view,M.data.sort.cameraPosition);else if(M.data.init){d=M.data.init.Constants,e=M.data.init.splatCount;let N=d.BytesPerInt,_=d.BytesPerFloat*3,B=new Uint8Array(M.data.init.sorterWasmBytes),V=N+_,k=e*V,L=e*d.BytesPerInt*2+d.DepthMapRange*d.BytesPerInt*2,W=d.MemoryPageSize*32,F=k+L+W,j=Math.floor(F/d.MemoryPageSize)+1,H={module:{},env:{memory:new WebAssembly.Memory({initial:j*2,maximum:j*3,shared:!0})}};WebAssembly.compile(B).then(q=>WebAssembly.instantiate(q,H)).then(q=>{r=q,o=0,i=e*N,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 BS(n){let r=new Worker(URL.createObjectURL(new Blob(["(",dN.toString(),")(self)"],{type:"application/javascript"}))),e=atob(_S),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:jo.BytesPerFloat,BytesPerInt:jo.BytesPerInt,DepthMapRange:jo.DepthMapRange,MemoryPageSize:jo.MemoryPageSize}}}),r}var mr=require("three");var Ce=require("three");var Yd=function(){let n=new Float32Array(1),r=new Int32Array(n.buffer);return function(e){return n[0]=e,r[0]}}(),RS=function(n,r,e,t){return n+(r<<8)+(e<<16)+(t<<24)};var Xd=new Ce.Vector2;function Kd(n){let r=!1;return n.scene.objects.traverse((e,t)=>{if(t.visible===!1)return!0;t.type==="Splat"&&(r=!0)}),r}var oi=class extends Ce.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=oi.buildGeomtery(t),c=oi.buildMaterial(a);return new oi(e,t,l,c,o,i,a,s)}static buildMaterial(e){let t=`
3807
3840
  precision highp float;
3808
3841
  #include <common>
3809
3842
 
@@ -3957,4 +3990,4 @@ void main() {
3957
3990
  A = exp(A) * vColor.a;
3958
3991
  gl_FragColor = vec4(color.rgb, A);
3959
3992
  gVelocity = vec4(0.0); // so it is ignored by TAA
3960
- }`,i={covariancesTexture:{type:"t",value:null},centersColorsTexture:{type:"t",value:null},meshIndexIntervals:{value:e},meshMatrixWorldsTexture:{type:"t",value:null},focal:{type:"v2",value:new Ce.Vector2},viewport:{type:"v2",value:new Ce.Vector2},basisViewport:{type:"v2",value:new Ce.Vector2},debugColor:{type:"v3",value:new Ce.Color},covariancesTextureSize:{type:"v2",value:new Ce.Vector2(1024,1024)},centersColorsTextureSize:{type:"v2",value:new Ce.Vector2(1024,1024)},orthoZoom:{type:"f",value:-1}};return new Ce.ShaderMaterial({uniforms:i,vertexShader:t,fragmentShader:o,transparent:!0,alphaTest:1,blending:Ce.NormalBlending,depthTest:!0,depthWrite:!1,side:Ce.DoubleSide})}static buildGeomtery(e){let t=new Ce.BufferGeometry;t.setIndex([0,1,2,0,2,3]);let o=new Float32Array(4*3),i=new Ce.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 Ce.InstancedBufferGeometry().copy(t),s=new Uint32Array(e),l=new Ce.InstancedBufferAttribute(s,1,!1);return l.setUsage(Ce.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 Ce.Vector2(4096,1024);for(;i.x*i.y*2<o*6;)i.y*=2;let a=new Ce.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]=Ce.DataUtils.toHalfFloat(this.covariances[f]);s=new Ce.DataTexture(l,i.x,i.y,Ce.RGFormat,Ce.HalfFloatType)}else l=new Float32Array(i.x*i.y*2),l.set(this.covariances),s=new Ce.DataTexture(l,i.x,i.y,Ce.RGFormat,Ce.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]=VS(this.colors[m],this.colors[m+1],this.colors[m+2],this.colors[m+3]),c[g+1]=Qd(this.centers[y]),c[g+2]=Qd(this.centers[y+1]),c[g+3]=Qd(this.centers[y+2])}let u=new Ce.DataTexture(c,a.x,a.y,Ce.RGBAIntegerFormat,Ce.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 Ce.DataTexture(d,p,1,Ce.RGBAFormat,Ce.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&&(Zd.set(e.x*this.devicePixelRatio,e.y*this.devicePixelRatio),this.material.uniforms.viewport.value.copy(Zd),this.material.uniforms.basisViewport.value.set(2/Zd.x,2/Zd.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 GS,jh=new Promise(n=>{GS=n}),zS=!1;var ep;function kh(){if(zS)return;if(ep)return ep;async function n(){let e=await import("./gaussian-splat-compression.js");GS(e),zS=!0}return ep=n(),ep}var FS;jh.then(n=>FS=n);var lc=class{constructor(r={}){go(this,"updateView",function(){let r=new mr.Matrix4,e=[],t=new mr.Vector3(0,0,-1),o=new mr.Vector3(0,0,-1),i=new mr.Vector3,a=new mr.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 mr.Matrix4().makePerspective(-1,1,-1,1,.1,1e3)}updateSplatMeshUniforms(r,e){let t=new mr.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 mr.Vector3().fromArray(r.position)),r.orientation&&(r.orientation=new mr.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 FS.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 mr.Vector3,o=new mr.Quaternion,i=!1,a=1,s,l){this.splatMesh=ni.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=LS(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 fN=new Qr.MeshBasicMaterial;fN.wireframe=!0;var jS=new Qr.Vector3,tp=class extends Qr.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 Kd;this.invisibleObjects=new Jn("jflkdsafjasdifjaslk",{...bu.defaultData,visible:!1,name:"buildin invisible"});this.needsRecomputeInstances=!1;this.init(e,t),this.matrixAutoUpdate=!1,this.errorPage=new Xr("fdasfa",{...Xo.defaultData,name:""},{shared:t,scene:this})}markGeometryCacheDirty(){this.geometryCacheChanged=!0}markNeedsUpdateRendererDirty(){this.needsTransmissionDirty=!0,this.needsNormalDirty=!0}needsTransmission(){return this.needsTransmissionDirty&&(this._needsTransmission=BS(this),this.needsTransmissionDirty=!1),this._needsTransmission}needsNormal(){return this.needsNormalDirty&&(this._needsNormal=_S(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 Xr&&(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)=>gc(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===En)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 Xr&&t.uiScene){let o=t.uiScene.find(e);if(o)return o}}findScene2DfromObject2D(e){for(let t of this.children)if(t instanceof Xr&&t.uiScene&&t.uiScene.find(e))return t.uiScene}find2DInUIObjects(e){let t;return this.traverseEntity(o=>{t===void 0&&o instanceof Vi&&(t=o.uiCanvas.find(e))}),t}traverse2D(e){for(let t of this.children)t instanceof Xr&&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(),Zn(i)&&Jl(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),Jl(o.parent)&&(o.parent.invalidateUpstreamBooleanData(),o.parent.invalidateDownstreamBooleanData().recomputeBoolean()),Zn(o)&&(o.freeBooleanPointer(),i instanceof Cr&&i.invalidateDownstreamBooleanData().recomputeBoolean()),o instanceof Fs&&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()),Zn(o)&&(o.invalidateUpstreamBooleanData(),Jl(o.parent)?o.parent.invalidateDownstreamBooleanData().recomputeBoolean():i instanceof Cr&&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 Xr&&(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{ES(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 Vi||l instanceof Xr)&&(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 hn&&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=Cn(u.data,p=>{let d=p.events.data(l.id),h=u.goUp(s);if(h){let f=[...yc(h.identity),e].join("-"),m=this.entityIdentityToEntity[f];if(m){let y=m.uuid,g=ct.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):l.data.type==="Conditional"&&(this.rewriteActions(l.data.ifActions,[...t,l.id,"ifActions"],o,i,a,s),this.rewriteActions(l.data.elseActions,[...t,l.id,"elseActions"],o,i,a,s))})}rewriteEventsBeforeGoToPlayMode(){this.traverseEntity(e=>{if(e instanceof gn&&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=Cn(s.data,l=>{s.isInstanceRoot||(l.events.delete(i.id),a=!0)}).data}),a===!1)for(let s of Pu.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 gn&&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),Hd(a)}recomputeInstances(e,t){this.needsRecomputeInstances&&(this.needsRecomputeInstances=!1,this.traverseEntity(o=>{o instanceof gn&&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(Zn(s)||ec(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,o),sc(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)&&((Zn(a)||ec(a)&&this.enableHelpers&&a.objectHelper.visible)&&(e.intersectObject(a,!1,t),sc(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.type==="InputGeometry")&&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();Jl(s)&&s.recomputeBoolean()})}})}traverseObject(e){for(let t of this.children)Ea.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=Xd(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 Qr.Matrix4().fromArray(m)),f=new Qr.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 Qr.Box3;return o.setFromPoints(t),o.getCenter(jS),jS}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 Ft)if(Array.isArray(t.material))for(let o=0;o<t.material.length;o++)t.material[o]instanceof wr&&e(t.material[o]);else t.material instanceof wr&&e(t.material)})}updateViewPlaneSize(e,t,o=!1){this.traverseConcreteEntity(i=>{i instanceof hn&&i.setViewplaneSize(e,t,o)})}initializeSplatViewer(){this.splatViewer=new lc({scene:this}),this.reloadSplats()}reloadSplats(){this.splatViewer?.loadSplat()}};var kS=require("three/examples/jsm/loaders/DRACOLoader.js");var ii;function US(){return ii||(ii=new kS.DRACOLoader,ii.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),ii.decoderPending}async function hN(n){if(ii){let r={attributeIDs:ii.defaultAttributeIDs,attributeTypes:ii.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await ii.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 HS(n,r){let[e,t]=Tp(au.deserialize(new Uint8Array(n)));return Ou(e),r&&r(e),t.result().data}function WS(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 qS(n){for(let r of n){let e=await hN(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 mN=require("three"),yN=require("three/examples/jsm/utils/BufferGeometryUtils.js");function $S(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 cc=require("three");function YS(n){let r=new Set;return n.traverse(e=>{if(e instanceof Pr)if(Ct(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(gN(e)){Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new cc.Color,specularColor:new cc.Color});let o=0;e.onBeforeCompile=(i,a)=>{t&&t(i,a),i.uniforms=Object.assign({},cc.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=Tb(window.innerWidth,window.innerHeight),e.defines.IS_THREEJS_EXPORT=!0)}else o++,o<2&&(e.needsUpdate=!0)})}}else xN(e)||(e.onBeforeCompile=(o,i)=>{t&&t(o,i),e.transparent=!1})}),n}function gN(n){return n.getLayersOfType("transmission").length>0}function xN(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 XS(n){return n.traverse(r=>{if(r.type==="Camera"){let e=r;e.type=e.cameraType}}),n}function KS(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 QS=require("three/examples/jsm/utils/BufferGeometryUtils.js");function ZS(n){let r=[];return n.traverse(e=>{e instanceof Is&&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&&$S(l),l}).filter(s=>s!==void 0)];if(!e.parameters.hideBase&&t instanceof Ft&&a.unshift(t.geometry),a.length){let s=(0,QS.mergeBufferGeometries)(a);t instanceof Ft&&(t.geometry=s)}e.removeFromParent(),t.setFromClonerState(null,{scene:n,shared:Xb})}),n}function JS(n){return n.traverse(r=>{r.matrixAutoUpdate=!0}),n}function e1(n){Object.values(n.shared.materials).forEach(r=>{Uh(r)}),n.scene.objects.traverse((r,e)=>{"material"in e?Uh(e.material):"materials"in e&&e.materials.forEach(t=>{Uh(t)})})}function Uh(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 n1=Ys(r1(),1);var o1="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",rp=class extends op.Loader{load(r,e,t,o=console.error){let i=new op.FileLoader(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),r.endsWith(".spline")?console.warn(o1+" The .spline files are only meant to be used by the Editor."):r.endsWith(".splinecode")||console.warn(o1),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 HS(r,e1),t=WS(e);e.version&&(0,n1.default)(e.version,"1.9.44")>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&&US(),ev(e)&&eb(),dv(e)&&Gb(),Wv(e)&&kv(),Jd(e)&&kh()].filter(Boolean)),t.length&&await qS(t);let o=!1,i=new Di(e.shared,{},o);Object.values(i.getMaterials()).forEach(l=>Object.assign(l,{isAsset:!0}));let a=new tp(e.scene,i);Jd(e)&&a.initializeSplatViewer();let s=a.activeCamera;return s&&Object.assign(s,{makeDefault:!0}),a=ZS(a),a=YS(a),a=XS(a),a=KS(a),a=JS(a),a}};
3993
+ }`,i={covariancesTexture:{type:"t",value:null},centersColorsTexture:{type:"t",value:null},meshIndexIntervals:{value:e},meshMatrixWorldsTexture:{type:"t",value:null},focal:{type:"v2",value:new Ce.Vector2},viewport:{type:"v2",value:new Ce.Vector2},basisViewport:{type:"v2",value:new Ce.Vector2},debugColor:{type:"v3",value:new Ce.Color},covariancesTextureSize:{type:"v2",value:new Ce.Vector2(1024,1024)},centersColorsTextureSize:{type:"v2",value:new Ce.Vector2(1024,1024)},orthoZoom:{type:"f",value:-1}};return new Ce.ShaderMaterial({uniforms:i,vertexShader:t,fragmentShader:o,transparent:!0,alphaTest:1,blending:Ce.NormalBlending,depthTest:!0,depthWrite:!1,side:Ce.DoubleSide})}static buildGeomtery(e){let t=new Ce.BufferGeometry;t.setIndex([0,1,2,0,2,3]);let o=new Float32Array(4*3),i=new Ce.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 Ce.InstancedBufferGeometry().copy(t),s=new Uint32Array(e),l=new Ce.InstancedBufferAttribute(s,1,!1);return l.setUsage(Ce.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 Ce.Vector2(4096,1024);for(;i.x*i.y*2<o*6;)i.y*=2;let a=new Ce.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 h=0;h<this.covariances.length;h++)l[h]=Ce.DataUtils.toHalfFloat(this.covariances[h]);s=new Ce.DataTexture(l,i.x,i.y,Ce.RGFormat,Ce.HalfFloatType)}else l=new Float32Array(i.x*i.y*2),l.set(this.covariances),s=new Ce.DataTexture(l,i.x,i.y,Ce.RGFormat,Ce.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 h=0;h<o;h++){let m=h*4,y=h*3,b=h*4;c[b]=RS(this.colors[m],this.colors[m+1],this.colors[m+2],this.colors[m+3]),c[b+1]=Yd(this.centers[y]),c[b+2]=Yd(this.centers[y+1]),c[b+3]=Yd(this.centers[y+2])}let u=new Ce.DataTexture(c,a.x,a.y,Ce.RGBAIntegerFormat,Ce.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 h=0;h<this.meshMatrixWorlds.length;h++)d.set(this.meshMatrixWorlds[h].elements,h*16);let f=new Ce.DataTexture(d,p,1,Ce.RGBAFormat,Ce.FloatType);f.needsUpdate=!0,this.material.uniforms.meshMatrixWorldsTexture.value=f,this.material.uniformsNeedUpdate=!0,this.splatDataTextures={covariances:{data:l,texture:s,size:i},centerColors:{data:c,texture:u,size:a},meshMatrixWorlds:{data:d,texture:f}}}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&&(Xd.set(e.x*this.devicePixelRatio,e.y*this.devicePixelRatio),this.material.uniforms.viewport.value.copy(Xd),this.material.uniforms.basisViewport.value.set(2/Xd.x,2/Xd.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 VS,Gh=new Promise(n=>{VS=n}),LS=!1;var Qd;function Fh(){if(LS)return;if(Qd)return Qd;async function n(){let e=await import("./gaussian-splat-compression.js");VS(e),LS=!0}return Qd=n(),Qd}var zS;Gh.then(n=>zS=n);var ic=class{constructor(r={}){go(this,"updateView",function(){let r=new mr.Matrix4,e=[],t=new mr.Vector3(0,0,-1),o=new mr.Vector3(0,0,-1),i=new mr.Vector3,a=new mr.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,f=!1;if(o.dot(t)<=.95&&(d=!0),a.copy(l.position).sub(i).length()>=1&&(f=!0),!d&&!f&&!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 mr.Matrix4().makePerspective(-1,1,-1,1,.1,1e3)}updateSplatMeshUniforms(r,e){let t=new mr.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 mr.Vector3().fromArray(r.position)),r.orientation&&(r.orientation=new mr.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 zS.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 mr.Vector3,o=new mr.Quaternion,i=!1,a=1,s,l){this.splatMesh=oi.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=BS(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 pN=new Qr.MeshBasicMaterial;pN.wireframe=!0;var GS=new Qr.Vector3,Zd=class extends Qr.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 $d;this.invisibleObjects=new Zn("jflkdsafjasdifjaslk",{...yu.defaultData,visible:!1,name:"buildin invisible"});this.needsRecomputeInstances=!1;this.init(e,t),this.matrixAutoUpdate=!1,this.errorPage=new Xr("fdasfa",{...Xo.defaultData,name:""},{shared:t,scene:this})}markGeometryCacheDirty(){this.geometryCacheChanged=!0}markNeedsUpdateRendererDirty(){this.needsTransmissionDirty=!0,this.needsNormalDirty=!0}needsTransmission(){return this.needsTransmissionDirty&&(this._needsTransmission=DS(this),this.needsTransmissionDirty=!1),this._needsTransmission}needsNormal(){return this.needsNormalDirty&&(this._needsNormal=NS(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 Xr&&(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)=>hc(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===Mn)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 Xr&&t.uiScene){let o=t.uiScene.find(e);if(o)return o}}findScene2DfromObject2D(e){for(let t of this.children)if(t instanceof Xr&&t.uiScene&&t.uiScene.find(e))return t.uiScene}find2DInUIObjects(e){let t;return this.traverseEntity(o=>{t===void 0&&o instanceof Li&&(t=o.uiCanvas.find(e))}),t}traverse2D(e){for(let t of this.children)t instanceof Xr&&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(),Qn(i)&&Kl(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),Kl(o.parent)&&(o.parent.invalidateUpstreamBooleanData(),o.parent.invalidateDownstreamBooleanData().recomputeBoolean()),Qn(o)&&(o.freeBooleanPointer(),i instanceof Cr&&i.invalidateDownstreamBooleanData().recomputeBoolean()),o instanceof zs&&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()),Qn(o)&&(o.invalidateUpstreamBooleanData(),Kl(o.parent)?o.parent.invalidateDownstreamBooleanData().recomputeBoolean():i instanceof Cr&&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 Xr&&(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{IS(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 Li||l instanceof Xr)&&(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 fn&&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=Pn(u.data,p=>{let d=p.events.data(l.id),f=u.goUp(s);if(f){let h=[...fc(f.identity),e].join("-"),m=this.entityIdentityToEntity[h];if(m){let y=m.uuid,b=ct.zoom(d,t);b[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):l.data.type==="Conditional"&&(this.rewriteActions(l.data.ifActions,[...t,l.id,"ifActions"],o,i,a,s),this.rewriteActions(l.data.elseActions,[...t,l.id,"elseActions"],o,i,a,s))})}rewriteEventsBeforeGoToPlayMode(){this.traverseEntity(e=>{if(e instanceof yn&&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=Pn(s.data,l=>{s.isInstanceRoot||(l.events.delete(i.id),a=!0)}).data}),a===!1)for(let s of vu.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 yn&&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),jd(a)}recomputeInstances(e,t){this.needsRecomputeInstances&&(this.needsRecomputeInstances=!1,this.traverseEntity(o=>{o instanceof yn&&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(Qn(s)||Ql(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,o),nc(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)&&((Qn(a)||Ql(a)&&this.enableHelpers&&a.objectHelper.visible)&&(e.intersectObject(a,!1,t),nc(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.type==="InputGeometry")&&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();Kl(s)&&s.recomputeBoolean()})}})}traverseObject(e){for(let t of this.children)Ma.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=qd(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)),f=p.boneInverses.map(m=>new Qr.Matrix4().fromArray(m)),h=new Qr.Skeleton(d,f);u.bind(h,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 Qr.Box3;return o.setFromPoints(t),o.getCenter(GS),GS}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 Ft)if(Array.isArray(t.material))for(let o=0;o<t.material.length;o++)t.material[o]instanceof wr&&e(t.material[o]);else t.material instanceof wr&&e(t.material)})}updateViewPlaneSize(e,t,o=!1){this.traverseConcreteEntity(i=>{i instanceof fn&&i.setViewplaneSize(e,t,o)})}initializeSplatViewer(){this.splatViewer=new ic({scene:this}),this.reloadSplats()}reloadSplats(){this.splatViewer?.loadSplat()}};var FS=require("three/examples/jsm/loaders/DRACOLoader.js");var ni;function jS(){return ni||(ni=new FS.DRACOLoader,ni.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),ni.decoderPending}async function fN(n){if(ni){let r={attributeIDs:ni.defaultAttributeIDs,attributeTypes:ni.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await ni.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 kS(n,r){let[e,t]=Cp(ou.deserialize(new Uint8Array(n)));return wu(e),r&&r(e),t.result().data}function US(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 HS(n){for(let r of n){let e=await fN(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 hN=require("three"),mN=require("three/examples/jsm/utils/BufferGeometryUtils.js");function WS(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 ac=require("three");function qS(n){let r=new Set;return n.traverse(e=>{if(e instanceof Pr)if(Ct(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(yN(e)){Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new ac.Color,specularColor:new ac.Color});let o=0;e.onBeforeCompile=(i,a)=>{t&&t(i,a),i.uniforms=Object.assign({},ac.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=Ab(window.innerWidth,window.innerHeight),e.defines.IS_THREEJS_EXPORT=!0)}else o++,o<2&&(e.needsUpdate=!0)})}}else gN(e)||(e.onBeforeCompile=(o,i)=>{t&&t(o,i),e.transparent=!1})}),n}function yN(n){return n.getLayersOfType("transmission").length>0}function gN(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 $S(n){return n.traverse(r=>{if(r.type==="Camera"){let e=r;e.type=e.cameraType}}),n}function YS(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 XS=require("three/examples/jsm/utils/BufferGeometryUtils.js");function KS(n){let r=[];return n.traverse(e=>{e instanceof As&&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&&WS(l),l}).filter(s=>s!==void 0)];if(!e.parameters.hideBase&&t instanceof Ft&&a.unshift(t.geometry),a.length){let s=(0,XS.mergeBufferGeometries)(a);t instanceof Ft&&(t.geometry=s)}e.removeFromParent(),t.setFromClonerState(null,{scene:n,shared:Yb})}),n}function QS(n){return n.traverse(r=>{r.matrixAutoUpdate=!0}),n}function ZS(n){Object.values(n.shared.materials).forEach(r=>{jh(r)}),n.scene.objects.traverse((r,e)=>{"material"in e?jh(e.material):"materials"in e&&e.materials.forEach(t=>{jh(t)})})}function jh(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 r1=qs(e1(),1);var t1="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",Jd=class extends ep.Loader{load(r,e,t,o=console.error){let i=new ep.FileLoader(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),r.endsWith(".spline")?console.warn(t1+" The .spline files are only meant to be used by the Editor."):r.endsWith(".splinecode")||console.warn(t1),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 kS(r,ZS),t=US(e);e.version&&(0,r1.default)(e.version,"1.9.46")>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&&jS(),Jb(e)&&J0(),cv(e)&&zb(),Uv(e)&&Fv(),Kd(e)&&Fh()].filter(Boolean)),t.length&&await HS(t);let o=!1,i=new Ni(e.shared,{},o);Object.values(i.getMaterials()).forEach(l=>Object.assign(l,{isAsset:!0}));let a=new Zd(e.scene,i);Kd(e)&&a.initializeSplatViewer();let s=a.activeCamera;return s&&Object.assign(s,{makeDefault:!0}),a=KS(a),a=qS(a),a=$S(a),a=YS(a),a=QS(a),a}};