@splinetool/loader 1.9.29 → 1.9.31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/SplineLoader.cjs +78 -78
- package/build/SplineLoader.js +79 -79
- package/package.json +1 -1
package/build/SplineLoader.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
var x1=Object.create;var Al=Object.defineProperty;var b1=Object.getOwnPropertyDescriptor;var v1=Object.getOwnPropertyNames;var S1=Object.getPrototypeOf,w1=Object.prototype.hasOwnProperty;var P1=(n,r,e)=>r in n?Al(n,r,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[r]=e;var Ln=(n,r)=>()=>(r||n((r={exports:{}}).exports,r),r.exports),O1=(n,r)=>{for(var e in r)Al(n,e,{get:r[e],enumerable:!0})},C1=(n,r,e,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of v1(r))!w1.call(n,o)&&o!==e&&Al(n,o,{get:()=>r[o],enumerable:!(t=b1(r,o))||t.enumerable});return n};var xi=(n,r,e)=>(e=n!=null?x1(S1(n)):{},C1(r||!n||!n.__esModule?Al(e,"default",{value:n,enumerable:!0}):e,n));var Rn=(n,r,e)=>(P1(n,typeof r!="symbol"?r+"":r,e),e);var Sx=Ln((mp,vx)=>{(function(n,r){typeof mp=="object"?vx.exports=r():typeof define=="function"&&define.amd?define(r):n.Alea=r()})(mp,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 Tx=Ln((Wc,Cx)=>{(function(n,r){typeof Wc=="object"&&typeof Cx<"u"?r(Wc):typeof define=="function"&&define.amd?define(["exports"],r):r((n=typeof globalThis<"u"?globalThis:n||self).SVDJS={})})(Wc,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,P=r.length;if(P<v)throw new TypeError("Invalid matrix: m < n");for(var O=[],S=[],T=[],A=e==="f"?P:v,x=m=d=0;x<P;x++)S[x]=new Array(A).fill(0);for(x=0;x<v;x++)T[x]=new Array(v).fill(0);var E,N=new Array(v).fill(0);for(x=0;x<P;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<P;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<P;s++)f+=S[s][x]*S[s][a];for(p=f/h,s=x;s<P;s++)S[s][a]=S[s][a]+p*S[s][x]}for(N[x]=d,f=0,a=l;a<v;a++)f+=Math.pow(S[x][a],2);if(f<i)d=0;else{for(h=(p=S[x][x+1])*(d=p<0?Math.sqrt(f):-Math.sqrt(f))-f,S[x][x+1]=p-d,a=l;a<v;a++)O[a]=S[x][a]/h;for(a=l;a<P;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(N[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++)T[a][x]=S[x][a]/h;for(a=l;a<v;a++){for(f=0,s=l;s<v;s++)f+=S[x][s]*T[s][a];for(s=l;s<v;s++)T[s][a]=T[s][a]+f*T[s][x]}}for(a=l;a<v;a++)T[x][a]=0,T[a][x]=0;T[x][x]=1,d=O[x],l=x}if(e){if(e==="f")for(x=v;x<P;x++){for(a=v;a<P;a++)S[x][a]=0;S[x][x]=1}for(x=v-1;0<=x;x--){for(l=x+1,d=N[x],a=l;a<A;a++)S[x][a]=0;if(d!==0){for(h=S[x][x]*d,a=l;a<A;a++){for(f=0,s=l;s<P;s++)f+=S[s][x]*S[s][a];for(p=f/h,s=x;s<P;s++)S[s][a]=S[s][a]+p*S[s][x]}for(a=x;a<P;a++)S[a][x]=S[a][x]/d}else for(a=x;a<P;a++)S[a][x]=0;S[x][x]=S[x][x]+1}}for(o*=m,s=v-1;0<=s;s--)for(var I=0;I<50;I++){for(E=!1,l=s;0<=l;l--){if(Math.abs(O[l])<=o){E=!0;break}if(Math.abs(N[l-1])<=o)break}if(!E){for(u=0,c=l-(f=1),x=l;x<s+1&&(p=f*O[x],O[x]=u*O[x],!(Math.abs(p)<=o));x++)if(d=N[x],N[x]=Math.sqrt(p*p+d*d),u=d/(h=N[x]),f=-p/h,e)for(a=0;a<P;a++)y=S[a][c],g=S[a][x],S[a][c]=y*u+g*f,S[a][x]=-y*f+g*u}if(g=N[s],l===s){if(g<0&&(N[s]=-g,t))for(a=0;a<v;a++)T[a][s]=-T[a][s];break}for(m=N[l],p=(((y=N[s-1])-g)*(y+g)+((d=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=N[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=T[a][x-1],g=T[a][x],T[a][x-1]=m*u+g*f,T[a][x]=-m*f+g*u;if(g=Math.sqrt(p*p+h*h),p=(u=p/(N[x-1]=g))*d+(f=h/g)*y,m=-f*d+u*y,e)for(a=0;a<P;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,N[s]=m}for(x=0;x<v;x++)N[x]<o&&(N[x]=0);return{u:S,q:N,v:T}},n.VERSION="1.1.1",Object.defineProperty(n,"__esModule",{value:!0})})});var i0=Ln((Up,kp)=>{(function(n,r){typeof Up=="object"&&typeof kp<"u"?kp.exports=r():typeof define=="function"&&define.amd?define(r):(n=n||self,n.TinyQueue=r())})(Up,function(){"use strict";var n=function(t,o){if(t===void 0&&(t=[]),o===void 0&&(o=r),this.data=t,this.length=this.data.length,this.compare=o,this.length>0)for(var i=(this.length>>1)-1;i>=0;i--)this._down(i)};n.prototype.push=function(t){this.data.push(t),this.length++,this._up(this.length-1)},n.prototype.pop=function(){if(this.length!==0){var t=this.data[0],o=this.data.pop();return this.length--,this.length>0&&(this.data[0]=o,this._down(0)),t}},n.prototype.peek=function(){return this.data[0]},n.prototype._up=function(t){for(var o=this,i=o.data,a=o.compare,s=i[t];t>0;){var l=t-1>>1,c=i[l];if(a(s,c)>=0)break;i[t]=c,t=l}i[t]=s},n.prototype._down=function(t){for(var o=this,i=o.data,a=o.compare,s=this.length>>1,l=i[t];t<s;){var c=(t<<1)+1,u=i[c],p=c+1;if(p<this.length&&a(i[p],u)<0&&(c=p,u=i[p]),a(u,l)>=0)break;i[t]=u,t=c}i[t]=l};function r(e,t){return e<t?-1:e>t?1:0}return n})});var s0=Ln((Cq,Hp)=>{"use strict";var ru=i0();ru.default&&(ru=ru.default);Hp.exports=a0;Hp.exports.default=a0;function a0(n,r,e){r=r||1;for(var t,o,i,a,s=0;s<n[0].length;s++){var l=n[0][s];(!s||l[0]<t)&&(t=l[0]),(!s||l[1]<o)&&(o=l[1]),(!s||l[0]>i)&&(i=l[0]),(!s||l[1]>a)&&(a=l[1])}var c=i-t,u=a-o,p=Math.min(c,u),d=p/2;if(p===0){var h=[t,o];return h.distance=0,h}for(var f=new ru(void 0,HM),m=t;m<i;m+=p)for(var y=o;y<a;y+=p)f.push(new pn(m+d,y+d,d,n));var g=qM(n),v=new pn(t+c/2,o+u/2,0,n);v.d>g.d&&(g=v);for(var P=f.length;f.length;){var O=f.pop();O.d>g.d&&(g=O,e&&console.log("found best %d after %d probes",Math.round(1e4*O.d)/1e4,P)),!(O.max-g.d<=r)&&(d=O.h/2,f.push(new pn(O.x-d,O.y-d,d,n)),f.push(new pn(O.x+d,O.y-d,d,n)),f.push(new pn(O.x-d,O.y+d,d,n)),f.push(new pn(O.x+d,O.y+d,d,n)),P+=4)}e&&(console.log("num probes: "+P),console.log("best distance: "+g.d));var S=[g.x,g.y];return S.distance=g.d,S}function HM(n,r){return r.max-n.max}function pn(n,r,e,t){this.x=n,this.y=r,this.h=e,this.d=WM(n,r,t),this.max=this.d+this.h*Math.SQRT2}function WM(n,r,e){for(var t=!1,o=1/0,i=0;i<e.length;i++)for(var a=e[i],s=0,l=a.length,c=l-1;s<l;c=s++){var u=a[s],p=a[c];u[1]>r!=p[1]>r&&n<(p[0]-u[0])*(r-u[1])/(p[1]-u[1])+u[0]&&(t=!t),o=Math.min(o,$M(n,r,u,p))}return o===0?0:(t?1:-1)*Math.sqrt(o)}function qM(n){for(var r=0,e=0,t=0,o=n[0],i=0,a=o.length,s=a-1;i<a;s=i++){var l=o[i],c=o[s],u=l[0]*c[1]-c[0]*l[1];e+=(l[0]+c[0])*u,t+=(l[1]+c[1])*u,r+=u*3}return r===0?new pn(o[0][0],o[0][1],0,n):new pn(e/r,t/r,0,n)}function $M(n,r,e,t){var o=e[0],i=e[1],a=t[0]-o,s=t[1]-i;if(a!==0||s!==0){var l=((n-o)*a+(r-i)*s)/(a*a+s*s);l>1?(o=t[0],i=t[1]):l>0&&(o+=a*l,i+=s*l)}return a=n-o,s=r-i,a*a+s*s}});var Hv=Ln((_ae,kv)=>{"use strict";function WD(n,r){function e(){this.constructor=n}e.prototype=r.prototype,n.prototype=new e}function di(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,di)}WD(di,Error);di.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 qD(n,r){r=r!==void 0?r:{};var e={},t={svg_path:ms},o=ms,i=function(b){if(!b)return[];for(var w=[],L=0;L<b.length;L++)w=w.concat.apply(w,b[L]);var M=w[0];return M&&M.code=="m"&&(delete M.relative,M.code="M"),w},a=function(b,w){return g1(b,w)},s=/^[Mm]/,l=Xe(["M","m"],!1,!1),c=function(b,w,L){var M=yi(b,[w]);return L&&(M=M.concat(yi(b=="M"?"L":"l",L[1]))),M},u=/^[Zz]/,p=Xe(["Z","z"],!1,!1),d=function(){return yi("Z")},h=/^[Ll]/,f=Xe(["L","l"],!1,!1),m=function(b,w){return yi(b,w)},y=/^[Hh]/,g=Xe(["H","h"],!1,!1),v=function(b,w){return yi(b,w.map(function(L){return{x:L}}))},P=/^[Vv]/,O=Xe(["V","v"],!1,!1),S=function(b,w){return yi(b,w.map(function(L){return{y:L}}))},T=/^[Cc]/,A=Xe(["C","c"],!1,!1),x=function(b,w,L){return{x1:b.x,y1:b.y,x2:w.x,y2:w.y,x:L.x,y:L.y}},E=/^[Ss]/,N=Xe(["S","s"],!1,!1),I=function(b,w){return{x2:b.x,y2:b.y,x:w.x,y:w.y}},D=/^[Qq]/,_=Xe(["Q","q"],!1,!1),B=function(b,w){return{x1:b.x,y1:b.y,x:w.x,y:w.y}},V=/^[Tt]/,U=Xe(["T","t"],!1,!1),R=/^[Aa]/,W=Xe(["A","a"],!1,!1),j=function(b,w,L,M,G,oe){return{rx:b,ry:w,xAxisRotation:L,largeArc:M,sweep:G,x:oe.x,y:oe.y}},F=function(b,w){return{x:b,y:w}},H=function(b){return b*1},q=function(b){return b.join("")*1},re=/^[01]/,ee=Xe(["0","1"],!1,!1),X=function(b){return b=="1"},te=function(){return""},K=",",Z=ot(",",!1),Q=function(b){return b.join("")},$=".",ue=ot(".",!1),le=/^[eE]/,ne=Xe(["e","E"],!1,!1),ce=/^[+\-]/,ae=Xe(["+","-"],!1,!1),me=/^[0-9]/,pe=Xe([["0","9"]],!1,!1),he=function(b){return b.join("")},xe=/^[ \t\n\r]/,ye=Xe([" "," ",`
|
|
2
|
-
`,"\r"],!1,!1),C=0,ie=0,Ee=[{line:1,column:1}],Ve=0,_e=[],Pe=0,vt;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 Me(){return n.substring(ie,C)}function yt(){return En(ie,C)}function St(b,w){throw w=w!==void 0?w:En(ie,C),hr([xd(b)],n.substring(ie,C),w)}function Dn(b,w){throw w=w!==void 0?w:En(ie,C),bd(b,w)}function ot(b,w){return{type:"literal",text:b,ignoreCase:w}}function Xe(b,w,L){return{type:"class",parts:b,inverted:w,ignoreCase:L}}function Ar(){return{type:"any"}}function gd(){return{type:"end"}}function xd(b){return{type:"other",description:b}}function wl(b){var w=Ee[b],L;if(w)return w;for(L=b-1;!Ee[L];)L--;for(w=Ee[L],w={line:w.line,column:w.column};L<b;)n.charCodeAt(L)===10?(w.line++,w.column=1):w.column++,L++;return Ee[b]=w,w}function En(b,w){var L=wl(b),M=wl(w);return{start:{offset:b,line:L.line,column:L.column},end:{offset:w,line:M.line,column:M.column}}}function ct(b){C<Ve||(C>Ve&&(Ve=C,_e=[]),_e.push(b))}function bd(b,w){return new di(b,null,null,w)}function hr(b,w,L){return new di(di.buildMessage(b,w),b,w,L)}function ms(){var b,w,L,M,G;for(b=C,w=[],L=Ge();L!==e;)w.push(L),L=Ge();if(w!==e)if(L=Ut(),L===e&&(L=null),L!==e){for(M=[],G=Ge();G!==e;)M.push(G),G=Ge();M!==e?(ie=b,w=i(L),b=w):(C=b,b=e)}else C=b,b=e;else C=b,b=e;return b}function Ut(){var b,w,L,M,G,oe;if(b=C,w=_n(),w!==e){for(L=[],M=C,G=[],oe=Ge();oe!==e;)G.push(oe),oe=Ge();for(G!==e?(oe=_n(),oe!==e?(G=[G,oe],M=G):(C=M,M=e)):(C=M,M=e);M!==e;){for(L.push(M),M=C,G=[],oe=Ge();oe!==e;)G.push(oe),oe=Ge();G!==e?(oe=_n(),oe!==e?(G=[G,oe],M=G):(C=M,M=e)):(C=M,M=e)}L!==e?(ie=b,w=a(w,L),b=w):(C=b,b=e)}else C=b,b=e;return b}function _n(){var b,w,L,M,G,oe;if(b=C,w=hi(),w!==e){for(L=[],M=C,G=[],oe=Ge();oe!==e;)G.push(oe),oe=Ge();for(G!==e?(oe=Pl(),oe!==e?(G=[G,oe],M=G):(C=M,M=e)):(C=M,M=e);M!==e;){for(L.push(M),M=C,G=[],oe=Ge();oe!==e;)G.push(oe),oe=Ge();G!==e?(oe=Pl(),oe!==e?(G=[G,oe],M=G):(C=M,M=e)):(C=M,M=e)}L!==e?(ie=b,w=a(w,L),b=w):(C=b,b=e)}else C=b,b=e;return b}function Pl(){var b;return b=r1(),b===e&&(b=o1(),b===e&&(b=n1(),b===e&&(b=i1(),b===e&&(b=a1(),b===e&&(b=l1(),b===e&&(b=u1(),b===e&&(b=p1(),b===e&&(b=h1())))))))),b}function hi(){var b,w,L,M,G,oe,gi;if(b=C,s.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Pe===0&&ct(l)),w!==e){for(L=[],M=Ge();M!==e;)L.push(M),M=Ge();L!==e?(M=Ht(),M!==e?(G=C,oe=et(),oe===e&&(oe=null),oe!==e?(gi=Nh(),gi!==e?(oe=[oe,gi],G=oe):(C=G,G=e)):(C=G,G=e),G===e&&(G=null),G!==e?(ie=b,w=c(w,M,G),b=w):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function r1(){var b,w;return b=C,u.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Pe===0&&ct(p)),w!==e&&(ie=b,w=d()),b=w,b}function o1(){var b,w,L,M;if(b=C,h.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Pe===0&&ct(f)),w!==e){for(L=[],M=Ge();M!==e;)L.push(M),M=Ge();L!==e?(M=Nh(),M!==e?(ie=b,w=m(w,M),b=w):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function Nh(){var b,w,L,M,G,oe;if(b=C,w=Ht(),w!==e){for(L=[],M=C,G=et(),G===e&&(G=null),G!==e?(oe=Ht(),oe!==e?(G=[G,oe],M=G):(C=M,M=e)):(C=M,M=e);M!==e;)L.push(M),M=C,G=et(),G===e&&(G=null),G!==e?(oe=Ht(),oe!==e?(G=[G,oe],M=G):(C=M,M=e)):(C=M,M=e);L!==e?(ie=b,w=a(w,L),b=w):(C=b,b=e)}else C=b,b=e;return b}function n1(){var b,w,L,M;if(b=C,y.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Pe===0&&ct(g)),w!==e){for(L=[],M=Ge();M!==e;)L.push(M),M=Ge();L!==e?(M=Dh(),M!==e?(ie=b,w=v(w,M),b=w):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function Dh(){var b,w,L,M,G,oe;if(b=C,w=mi(),w!==e){for(L=[],M=C,G=et(),G===e&&(G=null),G!==e?(oe=mi(),oe!==e?(G=[G,oe],M=G):(C=M,M=e)):(C=M,M=e);M!==e;)L.push(M),M=C,G=et(),G===e&&(G=null),G!==e?(oe=mi(),oe!==e?(G=[G,oe],M=G):(C=M,M=e)):(C=M,M=e);L!==e?(ie=b,w=a(w,L),b=w):(C=b,b=e)}else C=b,b=e;return b}function i1(){var b,w,L,M;if(b=C,P.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Pe===0&&ct(O)),w!==e){for(L=[],M=Ge();M!==e;)L.push(M),M=Ge();L!==e?(M=Dh(),M!==e?(ie=b,w=S(w,M),b=w):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function a1(){var b,w,L,M;if(b=C,T.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Pe===0&&ct(A)),w!==e){for(L=[],M=Ge();M!==e;)L.push(M),M=Ge();L!==e?(M=s1(),M!==e?(ie=b,w=m(w,M),b=w):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function s1(){var b,w,L,M,G,oe;if(b=C,w=vd(),w!==e){for(L=[],M=C,G=et(),G===e&&(G=null),G!==e?(oe=vd(),oe!==e?(G=[G,oe],M=G):(C=M,M=e)):(C=M,M=e);M!==e;)L.push(M),M=C,G=et(),G===e&&(G=null),G!==e?(oe=vd(),oe!==e?(G=[G,oe],M=G):(C=M,M=e)):(C=M,M=e);L!==e?(ie=b,w=a(w,L),b=w):(C=b,b=e)}else C=b,b=e;return b}function vd(){var b,w,L,M,G,oe;return b=C,w=Ht(),w!==e?(L=et(),L===e&&(L=null),L!==e?(M=Ht(),M!==e?(G=et(),G===e&&(G=null),G!==e?(oe=Ht(),oe!==e?(ie=b,w=x(w,M,oe),b=w):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e),b}function l1(){var b,w,L,M;if(b=C,E.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Pe===0&&ct(N)),w!==e){for(L=[],M=Ge();M!==e;)L.push(M),M=Ge();L!==e?(M=c1(),M!==e?(ie=b,w=m(w,M),b=w):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function c1(){var b,w,L,M,G,oe;if(b=C,w=Sd(),w!==e){for(L=[],M=C,G=et(),G===e&&(G=null),G!==e?(oe=Sd(),oe!==e?(G=[G,oe],M=G):(C=M,M=e)):(C=M,M=e);M!==e;)L.push(M),M=C,G=et(),G===e&&(G=null),G!==e?(oe=Sd(),oe!==e?(G=[G,oe],M=G):(C=M,M=e)):(C=M,M=e);L!==e?(ie=b,w=a(w,L),b=w):(C=b,b=e)}else C=b,b=e;return b}function Sd(){var b,w,L,M;return b=C,w=Ht(),w!==e?(L=et(),L===e&&(L=null),L!==e?(M=Ht(),M!==e?(ie=b,w=I(w,M),b=w):(C=b,b=e)):(C=b,b=e)):(C=b,b=e),b}function u1(){var b,w,L,M;if(b=C,D.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Pe===0&&ct(_)),w!==e){for(L=[],M=Ge();M!==e;)L.push(M),M=Ge();L!==e?(M=d1(),M!==e?(ie=b,w=m(w,M),b=w):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function d1(){var b,w,L,M,G,oe;if(b=C,w=wd(),w!==e){for(L=[],M=C,G=et(),G===e&&(G=null),G!==e?(oe=wd(),oe!==e?(G=[G,oe],M=G):(C=M,M=e)):(C=M,M=e);M!==e;)L.push(M),M=C,G=et(),G===e&&(G=null),G!==e?(oe=wd(),oe!==e?(G=[G,oe],M=G):(C=M,M=e)):(C=M,M=e);L!==e?(ie=b,w=a(w,L),b=w):(C=b,b=e)}else C=b,b=e;return b}function wd(){var b,w,L,M;return b=C,w=Ht(),w!==e?(L=et(),L===e&&(L=null),L!==e?(M=Ht(),M!==e?(ie=b,w=B(w,M),b=w):(C=b,b=e)):(C=b,b=e)):(C=b,b=e),b}function p1(){var b,w,L,M;if(b=C,V.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Pe===0&&ct(U)),w!==e){for(L=[],M=Ge();M!==e;)L.push(M),M=Ge();L!==e?(M=f1(),M!==e?(ie=b,w=m(w,M),b=w):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function f1(){var b,w,L,M,G,oe;if(b=C,w=Ht(),w!==e){for(L=[],M=C,G=et(),G===e&&(G=null),G!==e?(oe=Ht(),oe!==e?(G=[G,oe],M=G):(C=M,M=e)):(C=M,M=e);M!==e;)L.push(M),M=C,G=et(),G===e&&(G=null),G!==e?(oe=Ht(),oe!==e?(G=[G,oe],M=G):(C=M,M=e)):(C=M,M=e);L!==e?(ie=b,w=a(w,L),b=w):(C=b,b=e)}else C=b,b=e;return b}function h1(){var b,w,L,M;if(b=C,R.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Pe===0&&ct(W)),w!==e){for(L=[],M=Ge();M!==e;)L.push(M),M=Ge();L!==e?(M=m1(),M!==e?(ie=b,w=m(w,M),b=w):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function m1(){var b,w,L,M,G,oe;if(b=C,w=Pd(),w!==e){for(L=[],M=C,G=et(),G===e&&(G=null),G!==e?(oe=Pd(),oe!==e?(G=[G,oe],M=G):(C=M,M=e)):(C=M,M=e);M!==e;)L.push(M),M=C,G=et(),G===e&&(G=null),G!==e?(oe=Pd(),oe!==e?(G=[G,oe],M=G):(C=M,M=e)):(C=M,M=e);L!==e?(ie=b,w=a(w,L),b=w):(C=b,b=e)}else C=b,b=e;return b}function Pd(){var b,w,L,M,G,oe,gi,Cd,Cl,Td,Tl,Ad;return b=C,w=Eh(),w!==e?(L=et(),L===e&&(L=null),L!==e?(M=Eh(),M!==e?(G=et(),G===e&&(G=null),G!==e?(oe=mi(),oe!==e?(gi=et(),gi!==e?(Cd=_h(),Cd!==e?(Cl=et(),Cl===e&&(Cl=null),Cl!==e?(Td=_h(),Td!==e?(Tl=et(),Tl===e&&(Tl=null),Tl!==e?(Ad=Ht(),Ad!==e?(ie=b,w=j(w,M,oe,Cd,Td,Ad),b=w):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e),b}function Ht(){var b,w,L,M;return b=C,w=mi(),w!==e?(L=et(),L===e&&(L=null),L!==e?(M=mi(),M!==e?(ie=b,w=F(w,M),b=w):(C=b,b=e)):(C=b,b=e)):(C=b,b=e),b}function Eh(){var b,w;return b=C,w=Lh(),w===e&&(w=Bn()),w!==e&&(ie=b,w=H(w)),b=w,b}function mi(){var b,w,L,M;return b=C,w=C,L=Od(),L===e&&(L=null),L!==e?(M=Lh(),M!==e?(L=[L,M],w=L):(C=w,w=e)):(C=w,w=e),w===e&&(w=C,L=Od(),L===e&&(L=null),L!==e?(M=Bn(),M!==e?(L=[L,M],w=L):(C=w,w=e)):(C=w,w=e)),w!==e&&(ie=b,w=q(w)),b=w,b}function _h(){var b,w;return b=C,re.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Pe===0&&ct(ee)),w!==e&&(ie=b,w=X(w)),b=w,b}function et(){var b,w,L,M,G;if(b=C,w=[],L=Ge(),L!==e)for(;L!==e;)w.push(L),L=Ge();else w=e;if(w!==e)if(L=Bh(),L===e&&(L=null),L!==e){for(M=[],G=Ge();G!==e;)M.push(G),G=Ge();M!==e?(w=[w,L,M],b=w):(C=b,b=e)}else C=b,b=e;else C=b,b=e;if(b===e){if(b=C,w=C,L=Bh(),L!==e){for(M=[],G=Ge();G!==e;)M.push(G),G=Ge();M!==e?(L=[L,M],w=L):(C=w,w=e)}else C=w,w=e;w!==e&&(ie=b,w=te()),b=w}return b}function Bh(){var b;return n.charCodeAt(C)===44?(b=K,C++):(b=e,Pe===0&&ct(Z)),b}function Lh(){var b,w,L,M;return b=C,w=C,L=y1(),L!==e?(M=Rh(),M===e&&(M=null),M!==e?(L=[L,M],w=L):(C=w,w=e)):(C=w,w=e),w===e&&(w=C,L=Bn(),L!==e?(M=Rh(),M!==e?(L=[L,M],w=L):(C=w,w=e)):(C=w,w=e)),w!==e&&(ie=b,w=Q(w)),b=w,b}function y1(){var b,w,L,M,G;return b=C,w=C,L=Bn(),L===e&&(L=null),L!==e?(n.charCodeAt(C)===46?(M=$,C++):(M=e,Pe===0&&ct(ue)),M!==e?(G=Bn(),G!==e?(L=[L,M,G],w=L):(C=w,w=e)):(C=w,w=e)):(C=w,w=e),w===e&&(w=C,L=Bn(),L!==e?(n.charCodeAt(C)===46?(M=$,C++):(M=e,Pe===0&&ct(ue)),M!==e?(L=[L,M],w=L):(C=w,w=e)):(C=w,w=e)),w!==e&&(ie=b,w=Q(w)),b=w,b}function Rh(){var b,w,L,M,G;return b=C,w=C,le.test(n.charAt(C))?(L=n.charAt(C),C++):(L=e,Pe===0&&ct(ne)),L!==e?(M=Od(),M===e&&(M=null),M!==e?(G=Bn(),G!==e?(L=[L,M,G],w=L):(C=w,w=e)):(C=w,w=e)):(C=w,w=e),w!==e&&(ie=b,w=Q(w)),b=w,b}function Od(){var b;return ce.test(n.charAt(C))?(b=n.charAt(C),C++):(b=e,Pe===0&&ct(ae)),b}function Bn(){var b,w,L;if(b=C,w=[],me.test(n.charAt(C))?(L=n.charAt(C),C++):(L=e,Pe===0&&ct(pe)),L!==e)for(;L!==e;)w.push(L),me.test(n.charAt(C))?(L=n.charAt(C),C++):(L=e,Pe===0&&ct(pe));else w=e;return w!==e&&(ie=b,w=he(w)),b=w,b}function Ge(){var b,w;return b=C,xe.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Pe===0&&ct(ye)),w!==e&&(ie=b,w=te()),b=w,b}function g1(b,w){if(!w)return[b];for(var L=[b],M=0,G=w.length;M<G;M++)L[M+1]=w[M][1];return L}var Ol={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 Vh in Ol)Ol[Vh.toUpperCase()]=Ol[Vh];function yi(b,w){w||(w=[{}]);for(var L=w.length;L--;){var M={code:b,command:Ol[b]};b==b.toLowerCase()&&(M.relative=!0);for(var G in w[L])M[G]=w[L][G];w[L]=M}return w}if(vt=o(),vt!==e&&C===n.length)return vt;throw vt!==e&&C<n.length&&ct(gd()),hr(_e,Ve<n.length?n.charAt(Ve):null,Ve<n.length?En(Ve,Ve+1):En(Ve,Ve))}kv.exports={SyntaxError:di,parse:qD}});var ch=Ln((Bae,Wv)=>{var Ju=Hv().parse;Ju.parseSVG=Ju;Ju.makeAbsolute=$D;Wv.exports=Ju;function $D(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 JS=Ln((Efe,ZS)=>{ZS.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}});import{FileLoader as __,Loader as B_}from"three";function Ml(n){for(let r of Object.keys(n))n[r]===void 0&&delete n[r];return n}function Lt(n,r){return Object.setPrototypeOf(n,r),n}function Il(n){return Array.isArray(n)?n:[n]}function Nl(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 T1=typeof global=="object"&&global&&global.Object===Object&&global,Dl=T1;var A1=typeof self=="object"&&self&&self.Object===Object&&self,M1=Dl||A1||Function("return this")(),gt=M1;var I1=gt.Symbol,At=I1;var Gh=Object.prototype,N1=Gh.hasOwnProperty,D1=Gh.toString,ys=At?At.toStringTag:void 0;function E1(n){var r=N1.call(n,ys),e=n[ys];try{n[ys]=void 0;var t=!0}catch{}var o=D1.call(n);return t&&(r?n[ys]=e:delete n[ys]),o}var zh=E1;var _1=Object.prototype,B1=_1.toString;function L1(n){return B1.call(n)}var jh=L1;var R1="[object Null]",V1="[object Undefined]",Fh=At?At.toStringTag:void 0;function G1(n){return n==null?n===void 0?V1:R1:Fh&&Fh in Object(n)?zh(n):jh(n)}var ar=G1;function z1(n){return n!=null&&typeof n=="object"}var Rt=z1;var j1="[object Symbol]";function F1(n){return typeof n=="symbol"||Rt(n)&&ar(n)==j1}var bi=F1;function U1(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 El=U1;var k1=Array.isArray,ut=k1;var H1=1/0,Uh=At?At.prototype:void 0,kh=Uh?Uh.toString:void 0;function Hh(n){if(typeof n=="string")return n;if(ut(n))return El(n,Hh)+"";if(bi(n))return kh?kh.call(n):"";var r=n+"";return r=="0"&&1/n==-H1?"-0":r}var Wh=Hh;function W1(n){var r=typeof n;return n!=null&&(r=="object"||r=="function")}var sr=W1;function q1(n){return n}var qh=q1;var $1="[object AsyncFunction]",Y1="[object Function]",X1="[object GeneratorFunction]",K1="[object Proxy]";function Q1(n){if(!sr(n))return!1;var r=ar(n);return r==Y1||r==X1||r==$1||r==K1}var _l=Q1;var Z1=gt["__core-js_shared__"],Bl=Z1;var $h=function(){var n=/[^.]+$/.exec(Bl&&Bl.keys&&Bl.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}();function J1(n){return!!$h&&$h in n}var Yh=J1;var ew=Function.prototype,tw=ew.toString;function rw(n){if(n!=null){try{return tw.call(n)}catch{}try{return n+""}catch{}}return""}var go=rw;var ow=/[\\^$.*+?()[\]{}|]/g,nw=/^\[object .+?Constructor\]$/,iw=Function.prototype,aw=Object.prototype,sw=iw.toString,lw=aw.hasOwnProperty,cw=RegExp("^"+sw.call(lw).replace(ow,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function uw(n){if(!sr(n)||Yh(n))return!1;var r=_l(n)?cw:nw;return r.test(go(n))}var Xh=uw;function dw(n,r){return n?.[r]}var Kh=dw;function pw(n,r){var e=Kh(n,r);return Xh(e)?e:void 0}var Kt=pw;var fw=Kt(gt,"WeakMap"),Ll=fw;var Qh=Object.create,hw=function(){function n(){}return function(r){if(!sr(r))return{};if(Qh)return Qh(r);n.prototype=r;var e=new n;return n.prototype=void 0,e}}(),Zh=hw;function mw(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 Jh=mw;function yw(n,r){var e=-1,t=n.length;for(r||(r=Array(t));++e<t;)r[e]=n[e];return r}var em=yw;var gw=800,xw=16,bw=Date.now;function vw(n){var r=0,e=0;return function(){var t=bw(),o=xw-(t-e);if(e=t,o>0){if(++r>=gw)return arguments[0]}else r=0;return n.apply(void 0,arguments)}}var tm=vw;function Sw(n){return function(){return n}}var rm=Sw;var ww=function(){try{var n=Kt(Object,"defineProperty");return n({},"",{}),n}catch{}}(),vi=ww;var Pw=vi?function(n,r){return vi(n,"toString",{configurable:!0,enumerable:!1,value:rm(r),writable:!0})}:qh,om=Pw;var Ow=tm(om),nm=Ow;function Cw(n,r){for(var e=-1,t=n==null?0:n.length;++e<t&&r(n[e],e,n)!==!1;);return n}var im=Cw;var Tw=9007199254740991,Aw=/^(?:0|[1-9]\d*)$/;function Mw(n,r){var e=typeof n;return r=r??Tw,!!r&&(e=="number"||e!="symbol"&&Aw.test(n))&&n>-1&&n%1==0&&n<r}var Si=Mw;function Iw(n,r,e){r=="__proto__"&&vi?vi(n,r,{configurable:!0,enumerable:!0,value:e,writable:!0}):n[r]=e}var Rl=Iw;function Nw(n,r){return n===r||n!==n&&r!==r}var wi=Nw;var Dw=Object.prototype,Ew=Dw.hasOwnProperty;function _w(n,r,e){var t=n[r];(!(Ew.call(n,r)&&wi(t,e))||e===void 0&&!(r in n))&&Rl(n,r,e)}var Pi=_w;function Bw(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?Rl(e,s,l):Pi(e,s,l)}return e}var Wr=Bw;var am=Math.max;function Lw(n,r,e){return r=am(r===void 0?n.length-1:r,0),function(){for(var t=arguments,o=-1,i=am(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),Jh(n,this,s)}}var sm=Lw;var Rw=9007199254740991;function Vw(n){return typeof n=="number"&&n>-1&&n%1==0&&n<=Rw}var Oi=Vw;function Gw(n){return n!=null&&Oi(n.length)&&!_l(n)}var Vl=Gw;var zw=Object.prototype;function jw(n){var r=n&&n.constructor,e=typeof r=="function"&&r.prototype||zw;return n===e}var Ci=jw;function Fw(n,r){for(var e=-1,t=Array(n);++e<n;)t[e]=r(e);return t}var lm=Fw;var Uw="[object Arguments]";function kw(n){return Rt(n)&&ar(n)==Uw}var Md=kw;var cm=Object.prototype,Hw=cm.hasOwnProperty,Ww=cm.propertyIsEnumerable,qw=Md(function(){return arguments}())?Md:function(n){return Rt(n)&&Hw.call(n,"callee")&&!Ww.call(n,"callee")},Ti=qw;function $w(){return!1}var um=$w;var fm=typeof exports=="object"&&exports&&!exports.nodeType&&exports,dm=fm&&typeof module=="object"&&module&&!module.nodeType&&module,Yw=dm&&dm.exports===fm,pm=Yw?gt.Buffer:void 0,Xw=pm?pm.isBuffer:void 0,Kw=Xw||um,Vn=Kw;var Qw="[object Arguments]",Zw="[object Array]",Jw="[object Boolean]",e2="[object Date]",t2="[object Error]",r2="[object Function]",o2="[object Map]",n2="[object Number]",i2="[object Object]",a2="[object RegExp]",s2="[object Set]",l2="[object String]",c2="[object WeakMap]",u2="[object ArrayBuffer]",d2="[object DataView]",p2="[object Float32Array]",f2="[object Float64Array]",h2="[object Int8Array]",m2="[object Int16Array]",y2="[object Int32Array]",g2="[object Uint8Array]",x2="[object Uint8ClampedArray]",b2="[object Uint16Array]",v2="[object Uint32Array]",tt={};tt[p2]=tt[f2]=tt[h2]=tt[m2]=tt[y2]=tt[g2]=tt[x2]=tt[b2]=tt[v2]=!0;tt[Qw]=tt[Zw]=tt[u2]=tt[Jw]=tt[d2]=tt[e2]=tt[t2]=tt[r2]=tt[o2]=tt[n2]=tt[i2]=tt[a2]=tt[s2]=tt[l2]=tt[c2]=!1;function S2(n){return Rt(n)&&Oi(n.length)&&!!tt[ar(n)]}var hm=S2;function w2(n){return function(r){return n(r)}}var Ai=w2;var mm=typeof exports=="object"&&exports&&!exports.nodeType&&exports,gs=mm&&typeof module=="object"&&module&&!module.nodeType&&module,P2=gs&&gs.exports===mm,Id=P2&&Dl.process,O2=function(){try{var n=gs&&gs.require&&gs.require("util").types;return n||Id&&Id.binding&&Id.binding("util")}catch{}}(),xo=O2;var ym=xo&&xo.isTypedArray,C2=ym?Ai(ym):hm,Gl=C2;var T2=Object.prototype,A2=T2.hasOwnProperty;function M2(n,r){var e=ut(n),t=!e&&Ti(n),o=!e&&!t&&Vn(n),i=!e&&!t&&!o&&Gl(n),a=e||t||o||i,s=a?lm(n.length,String):[],l=s.length;for(var c in n)(r||A2.call(n,c))&&!(a&&(c=="length"||o&&(c=="offset"||c=="parent")||i&&(c=="buffer"||c=="byteLength"||c=="byteOffset")||Si(c,l)))&&s.push(c);return s}var zl=M2;function I2(n,r){return function(e){return n(r(e))}}var jl=I2;var N2=jl(Object.keys,Object),gm=N2;var D2=Object.prototype,E2=D2.hasOwnProperty;function _2(n){if(!Ci(n))return gm(n);var r=[];for(var e in Object(n))E2.call(n,e)&&e!="constructor"&&r.push(e);return r}var xm=_2;function B2(n){return Vl(n)?zl(n):xm(n)}var Mi=B2;function L2(n){var r=[];if(n!=null)for(var e in Object(n))r.push(e);return r}var bm=L2;var R2=Object.prototype,V2=R2.hasOwnProperty;function G2(n){if(!sr(n))return bm(n);var r=Ci(n),e=[];for(var t in n)t=="constructor"&&(r||!V2.call(n,t))||e.push(t);return e}var vm=G2;function z2(n){return Vl(n)?zl(n,!0):vm(n)}var Ii=z2;var j2=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,F2=/^\w*$/;function U2(n,r){if(ut(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||bi(n)?!0:F2.test(n)||!j2.test(n)||r!=null&&n in Object(r)}var Sm=U2;var k2=Kt(Object,"create"),bo=k2;function H2(){this.__data__=bo?bo(null):{},this.size=0}var wm=H2;function W2(n){var r=this.has(n)&&delete this.__data__[n];return this.size-=r?1:0,r}var Pm=W2;var q2="__lodash_hash_undefined__",$2=Object.prototype,Y2=$2.hasOwnProperty;function X2(n){var r=this.__data__;if(bo){var e=r[n];return e===q2?void 0:e}return Y2.call(r,n)?r[n]:void 0}var Om=X2;var K2=Object.prototype,Q2=K2.hasOwnProperty;function Z2(n){var r=this.__data__;return bo?r[n]!==void 0:Q2.call(r,n)}var Cm=Z2;var J2="__lodash_hash_undefined__";function eP(n,r){var e=this.__data__;return this.size+=this.has(n)?0:1,e[n]=bo&&r===void 0?J2:r,this}var Tm=eP;function Ni(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])}}Ni.prototype.clear=wm;Ni.prototype.delete=Pm;Ni.prototype.get=Om;Ni.prototype.has=Cm;Ni.prototype.set=Tm;var Nd=Ni;function tP(){this.__data__=[],this.size=0}var Am=tP;function rP(n,r){for(var e=n.length;e--;)if(wi(n[e][0],r))return e;return-1}var Wo=rP;var oP=Array.prototype,nP=oP.splice;function iP(n){var r=this.__data__,e=Wo(r,n);if(e<0)return!1;var t=r.length-1;return e==t?r.pop():nP.call(r,e,1),--this.size,!0}var Mm=iP;function aP(n){var r=this.__data__,e=Wo(r,n);return e<0?void 0:r[e][1]}var Im=aP;function sP(n){return Wo(this.__data__,n)>-1}var Nm=sP;function lP(n,r){var e=this.__data__,t=Wo(e,n);return t<0?(++this.size,e.push([n,r])):e[t][1]=r,this}var Dm=lP;function Di(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])}}Di.prototype.clear=Am;Di.prototype.delete=Mm;Di.prototype.get=Im;Di.prototype.has=Nm;Di.prototype.set=Dm;var qo=Di;var cP=Kt(gt,"Map"),$o=cP;function uP(){this.size=0,this.__data__={hash:new Nd,map:new($o||qo),string:new Nd}}var Em=uP;function dP(n){var r=typeof n;return r=="string"||r=="number"||r=="symbol"||r=="boolean"?n!=="__proto__":n===null}var _m=dP;function pP(n,r){var e=n.__data__;return _m(r)?e[typeof r=="string"?"string":"hash"]:e.map}var Yo=pP;function fP(n){var r=Yo(this,n).delete(n);return this.size-=r?1:0,r}var Bm=fP;function hP(n){return Yo(this,n).get(n)}var Lm=hP;function mP(n){return Yo(this,n).has(n)}var Rm=mP;function yP(n,r){var e=Yo(this,n),t=e.size;return e.set(n,r),this.size+=e.size==t?0:1,this}var Vm=yP;function Ei(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])}}Ei.prototype.clear=Em;Ei.prototype.delete=Bm;Ei.prototype.get=Lm;Ei.prototype.has=Rm;Ei.prototype.set=Vm;var Gn=Ei;var gP="Expected a function";function Dd(n,r){if(typeof n!="function"||r!=null&&typeof r!="function")throw new TypeError(gP);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(Dd.Cache||Gn),e}Dd.Cache=Gn;var Gm=Dd;var xP=500;function bP(n){var r=Gm(n,function(t){return e.size===xP&&e.clear(),t}),e=r.cache;return r}var zm=bP;var vP=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,SP=/\\(\\)?/g,wP=zm(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(vP,function(e,t,o,i){r.push(o?i.replace(SP,"$1"):t||e)}),r}),jm=wP;function PP(n){return n==null?"":Wh(n)}var Fm=PP;function OP(n,r){return ut(n)?n:Sm(n,r)?[n]:jm(Fm(n))}var mr=OP;var CP=1/0;function TP(n){if(typeof n=="string"||bi(n))return n;var r=n+"";return r=="0"&&1/n==-CP?"-0":r}var Xo=TP;function AP(n,r){r=mr(r,n);for(var e=0,t=r.length;n!=null&&e<t;)n=n[Xo(r[e++])];return e&&e==t?n:void 0}var Fl=AP;function MP(n,r){for(var e=-1,t=r.length,o=n.length;++e<t;)n[o+e]=r[e];return n}var _i=MP;var Um=At?At.isConcatSpreadable:void 0;function IP(n){return ut(n)||Ti(n)||!!(Um&&n&&n[Um])}var km=IP;function Hm(n,r,e,t,o){var i=-1,a=n.length;for(e||(e=km),o||(o=[]);++i<a;){var s=n[i];r>0&&e(s)?r>1?Hm(s,r-1,e,t,o):_i(o,s):t||(o[o.length]=s)}return o}var Wm=Hm;function NP(n){var r=n==null?0:n.length;return r?Wm(n,1):[]}var qm=NP;function DP(n){return nm(sm(n,void 0,qm),n+"")}var Ul=DP;var EP=jl(Object.getPrototypeOf,Object),Bi=EP;var _P="[object Object]",BP=Function.prototype,LP=Object.prototype,$m=BP.toString,RP=LP.hasOwnProperty,VP=$m.call(Object);function GP(n){if(!Rt(n)||ar(n)!=_P)return!1;var r=Bi(n);if(r===null)return!0;var e=RP.call(r,"constructor")&&r.constructor;return typeof e=="function"&&e instanceof e&&$m.call(e)==VP}var Ym=GP;function zP(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 Xm=zP;function jP(){this.__data__=new qo,this.size=0}var Km=jP;function FP(n){var r=this.__data__,e=r.delete(n);return this.size=r.size,e}var Qm=FP;function UP(n){return this.__data__.get(n)}var Zm=UP;function kP(n){return this.__data__.has(n)}var Jm=kP;var HP=200;function WP(n,r){var e=this.__data__;if(e instanceof qo){var t=e.__data__;if(!$o||t.length<HP-1)return t.push([n,r]),this.size=++e.size,this;e=this.__data__=new Gn(t)}return e.set(n,r),this.size=e.size,this}var ey=WP;function Li(n){var r=this.__data__=new qo(n);this.size=r.size}Li.prototype.clear=Km;Li.prototype.delete=Qm;Li.prototype.get=Zm;Li.prototype.has=Jm;Li.prototype.set=ey;var Ri=Li;function qP(n,r){return n&&Wr(r,Mi(r),n)}var ty=qP;function $P(n,r){return n&&Wr(r,Ii(r),n)}var ry=$P;var ay=typeof exports=="object"&&exports&&!exports.nodeType&&exports,oy=ay&&typeof module=="object"&&module&&!module.nodeType&&module,YP=oy&&oy.exports===ay,ny=YP?gt.Buffer:void 0,iy=ny?ny.allocUnsafe:void 0;function XP(n,r){if(r)return n.slice();var e=n.length,t=iy?iy(e):new n.constructor(e);return n.copy(t),t}var sy=XP;function KP(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 ly=KP;function QP(){return[]}var kl=QP;var ZP=Object.prototype,JP=ZP.propertyIsEnumerable,cy=Object.getOwnPropertySymbols,eO=cy?function(n){return n==null?[]:(n=Object(n),ly(cy(n),function(r){return JP.call(n,r)}))}:kl,Vi=eO;function tO(n,r){return Wr(n,Vi(n),r)}var uy=tO;var rO=Object.getOwnPropertySymbols,oO=rO?function(n){for(var r=[];n;)_i(r,Vi(n)),n=Bi(n);return r}:kl,Hl=oO;function nO(n,r){return Wr(n,Hl(n),r)}var dy=nO;function iO(n,r,e){var t=r(n);return ut(n)?t:_i(t,e(n))}var Wl=iO;function aO(n){return Wl(n,Mi,Vi)}var xs=aO;function sO(n){return Wl(n,Ii,Hl)}var ql=sO;var lO=Kt(gt,"DataView"),$l=lO;var cO=Kt(gt,"Promise"),Yl=cO;var uO=Kt(gt,"Set"),Xl=uO;var py="[object Map]",dO="[object Object]",fy="[object Promise]",hy="[object Set]",my="[object WeakMap]",yy="[object DataView]",pO=go($l),fO=go($o),hO=go(Yl),mO=go(Xl),yO=go(Ll),zn=ar;($l&&zn(new $l(new ArrayBuffer(1)))!=yy||$o&&zn(new $o)!=py||Yl&&zn(Yl.resolve())!=fy||Xl&&zn(new Xl)!=hy||Ll&&zn(new Ll)!=my)&&(zn=function(n){var r=ar(n),e=r==dO?n.constructor:void 0,t=e?go(e):"";if(t)switch(t){case pO:return yy;case fO:return py;case hO:return fy;case mO:return hy;case yO:return my}return r});var vo=zn;var gO=Object.prototype,xO=gO.hasOwnProperty;function bO(n){var r=n.length,e=new n.constructor(r);return r&&typeof n[0]=="string"&&xO.call(n,"index")&&(e.index=n.index,e.input=n.input),e}var gy=bO;var vO=gt.Uint8Array,Gi=vO;function SO(n){var r=new n.constructor(n.byteLength);return new Gi(r).set(new Gi(n)),r}var zi=SO;function wO(n,r){var e=r?zi(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var xy=wO;var PO=/\w*$/;function OO(n){var r=new n.constructor(n.source,PO.exec(n));return r.lastIndex=n.lastIndex,r}var by=OO;var vy=At?At.prototype:void 0,Sy=vy?vy.valueOf:void 0;function CO(n){return Sy?Object(Sy.call(n)):{}}var wy=CO;function TO(n,r){var e=r?zi(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.length)}var Py=TO;var AO="[object Boolean]",MO="[object Date]",IO="[object Map]",NO="[object Number]",DO="[object RegExp]",EO="[object Set]",_O="[object String]",BO="[object Symbol]",LO="[object ArrayBuffer]",RO="[object DataView]",VO="[object Float32Array]",GO="[object Float64Array]",zO="[object Int8Array]",jO="[object Int16Array]",FO="[object Int32Array]",UO="[object Uint8Array]",kO="[object Uint8ClampedArray]",HO="[object Uint16Array]",WO="[object Uint32Array]";function qO(n,r,e){var t=n.constructor;switch(r){case LO:return zi(n);case AO:case MO:return new t(+n);case RO:return xy(n,e);case VO:case GO:case zO:case jO:case FO:case UO:case kO:case HO:case WO:return Py(n,e);case IO:return new t;case NO:case _O:return new t(n);case DO:return by(n);case EO:return new t;case BO:return wy(n)}}var Oy=qO;function $O(n){return typeof n.constructor=="function"&&!Ci(n)?Zh(Bi(n)):{}}var Cy=$O;var YO="[object Map]";function XO(n){return Rt(n)&&vo(n)==YO}var Ty=XO;var Ay=xo&&xo.isMap,KO=Ay?Ai(Ay):Ty,My=KO;var QO="[object Set]";function ZO(n){return Rt(n)&&vo(n)==QO}var Iy=ZO;var Ny=xo&&xo.isSet,JO=Ny?Ai(Ny):Iy,Dy=JO;var eC=1,tC=2,rC=4,Ey="[object Arguments]",oC="[object Array]",nC="[object Boolean]",iC="[object Date]",aC="[object Error]",_y="[object Function]",sC="[object GeneratorFunction]",lC="[object Map]",cC="[object Number]",By="[object Object]",uC="[object RegExp]",dC="[object Set]",pC="[object String]",fC="[object Symbol]",hC="[object WeakMap]",mC="[object ArrayBuffer]",yC="[object DataView]",gC="[object Float32Array]",xC="[object Float64Array]",bC="[object Int8Array]",vC="[object Int16Array]",SC="[object Int32Array]",wC="[object Uint8Array]",PC="[object Uint8ClampedArray]",OC="[object Uint16Array]",CC="[object Uint32Array]",Je={};Je[Ey]=Je[oC]=Je[mC]=Je[yC]=Je[nC]=Je[iC]=Je[gC]=Je[xC]=Je[bC]=Je[vC]=Je[SC]=Je[lC]=Je[cC]=Je[By]=Je[uC]=Je[dC]=Je[pC]=Je[fC]=Je[wC]=Je[PC]=Je[OC]=Je[CC]=!0;Je[aC]=Je[_y]=Je[hC]=!1;function Kl(n,r,e,t,o,i){var a,s=r&eC,l=r&tC,c=r&rC;if(e&&(a=o?e(n,t,o,i):e(n)),a!==void 0)return a;if(!sr(n))return n;var u=ut(n);if(u){if(a=gy(n),!s)return em(n,a)}else{var p=vo(n),d=p==_y||p==sC;if(Vn(n))return sy(n,s);if(p==By||p==Ey||d&&!o){if(a=l||d?{}:Cy(n),!s)return l?dy(n,ry(a,n)):uy(n,ty(a,n))}else{if(!Je[p])return o?n:{};a=Oy(n,p,s)}}i||(i=new Ri);var h=i.get(n);if(h)return h;i.set(n,a),Dy(n)?n.forEach(function(y){a.add(Kl(y,r,e,y,n,i))}):My(n)&&n.forEach(function(y,g){a.set(g,Kl(y,r,e,g,n,i))});var f=c?l?ql:xs:l?Ii:Mi,m=u?void 0:f(n);return im(m||n,function(y,g){m&&(g=y,y=n[g]),Pi(a,g,Kl(y,r,e,g,n,i))}),a}var Ql=Kl;var TC=1,AC=4;function MC(n){return Ql(n,TC|AC)}var So=MC;var IC="__lodash_hash_undefined__";function NC(n){return this.__data__.set(n,IC),this}var Ly=NC;function DC(n){return this.__data__.has(n)}var Ry=DC;function Zl(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new Gn;++r<e;)this.add(n[r])}Zl.prototype.add=Zl.prototype.push=Ly;Zl.prototype.has=Ry;var Vy=Zl;function EC(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 Gy=EC;function _C(n,r){return n.has(r)}var zy=_C;var BC=1,LC=2;function RC(n,r,e,t,o,i){var a=e&BC,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&LC?new Vy: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(!Gy(r,function(g,v){if(!zy(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 Jl=RC;function VC(n){var r=-1,e=Array(n.size);return n.forEach(function(t,o){e[++r]=[o,t]}),e}var jy=VC;function GC(n){var r=-1,e=Array(n.size);return n.forEach(function(t){e[++r]=t}),e}var Fy=GC;var zC=1,jC=2,FC="[object Boolean]",UC="[object Date]",kC="[object Error]",HC="[object Map]",WC="[object Number]",qC="[object RegExp]",$C="[object Set]",YC="[object String]",XC="[object Symbol]",KC="[object ArrayBuffer]",QC="[object DataView]",Uy=At?At.prototype:void 0,Ed=Uy?Uy.valueOf:void 0;function ZC(n,r,e,t,o,i,a){switch(e){case QC:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case KC:return!(n.byteLength!=r.byteLength||!i(new Gi(n),new Gi(r)));case FC:case UC:case WC:return wi(+n,+r);case kC:return n.name==r.name&&n.message==r.message;case qC:case YC:return n==r+"";case HC:var s=jy;case $C:var l=t&zC;if(s||(s=Fy),n.size!=r.size&&!l)return!1;var c=a.get(n);if(c)return c==r;t|=jC,a.set(n,r);var u=Jl(s(n),s(r),t,o,i,a);return a.delete(n),u;case XC:if(Ed)return Ed.call(n)==Ed.call(r)}return!1}var ky=ZC;var JC=1,eT=Object.prototype,tT=eT.hasOwnProperty;function rT(n,r,e,t,o,i){var a=e&JC,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:tT.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 P=a?t(v,g,d,r,n,i):t(g,v,d,n,r,i);if(!(P===void 0?g===v||o(g,v,e,t,i):P)){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 Hy=rT;var oT=1,Wy="[object Arguments]",qy="[object Array]",ec="[object Object]",nT=Object.prototype,$y=nT.hasOwnProperty;function iT(n,r,e,t,o,i){var a=ut(n),s=ut(r),l=a?qy:vo(n),c=s?qy:vo(r);l=l==Wy?ec:l,c=c==Wy?ec:c;var u=l==ec,p=c==ec,d=l==c;if(d&&Vn(n)){if(!Vn(r))return!1;a=!0,u=!1}if(d&&!u)return i||(i=new Ri),a||Gl(n)?Jl(n,r,e,t,o,i):ky(n,r,l,e,t,o,i);if(!(e&oT)){var h=u&&$y.call(n,"__wrapped__"),f=p&&$y.call(r,"__wrapped__");if(h||f){var m=h?n.value():n,y=f?r.value():r;return i||(i=new Ri),o(m,y,e,t,i)}}return d?(i||(i=new Ri),Hy(n,r,e,t,o,i)):!1}var Yy=iT;function Xy(n,r,e,t,o){return n===r?!0:n==null||r==null||!Rt(n)&&!Rt(r)?n!==n&&r!==r:Yy(n,r,e,t,Xy,o)}var Ky=Xy;function aT(n,r){return n!=null&&r in Object(n)}var Qy=aT;function sT(n,r,e){r=mr(r,n);for(var t=-1,o=r.length,i=!1;++t<o;){var a=Xo(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&&Oi(o)&&Si(a,o)&&(ut(n)||Ti(n)))}var Zy=sT;function lT(n,r){return n!=null&&Zy(n,r,Qy)}var Jy=lT;function cT(n){var r=n==null?0:n.length;return r?n[r-1]:void 0}var eg=cT;function uT(n,r){return r.length<2?n:Fl(n,Xm(r,0,-1))}var tg=uT;function dT(n,r){return Ky(n,r)}var _d=dT;function pT(n,r){return r=mr(r,n),n=tg(n,r),n==null||delete n[Xo(eg(r))]}var rg=pT;function fT(n){return Ym(n)?void 0:n}var og=fT;var hT=1,mT=2,yT=4,gT=Ul(function(n,r){var e={};if(n==null)return e;var t=!1;r=El(r,function(i){return i=mr(i,n),t||(t=i.length>1),i}),Wr(n,ql(n),e),t&&(e=Ql(e,hT|mT|yT,og));for(var o=r.length;o--;)rg(e,r[o]);return e}),ji=gT;function xT(n,r,e,t){if(!sr(n))return n;r=mr(r,n);for(var o=-1,i=r.length,a=i-1,s=n;s!=null&&++o<i;){var l=Xo(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=sr(u)?u:Si(r[o+1])?[]:{})}Pi(s,l,c),s=s[l]}return n}var ng=xT;function bT(n,r,e){for(var t=-1,o=r.length,i={};++t<o;){var a=r[t],s=Fl(n,a);e(s,a)&&ng(i,mr(a,n),s)}return i}var ig=bT;function vT(n,r){return ig(n,r,function(e,t){return Jy(n,t)})}var ag=vT;var ST=Ul(function(n,r){return n==null?{}:ag(n,r)}),Mr=ST;var fe=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,fe.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,fe.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,fe.prototype),delete i[t],{data:i,actual:r,reverse:{type:1,id:t,data:o}}}}return null}};function bs(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"&&bs(t)}return Object.freeze(n)}function sg(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 Fi=class extends Error{};function tc(n){let r={...n};return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}function qr(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 Ui(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 lg(){return typeof process<"u"}function cg(n,r){for(let e of n)r(e.id,e.data)!==!0&&cg(e.children,r)}function ug(n,r){if(r(n.id,n.data)!==!0)for(let e of n.children)ug(e,r)}var Ke=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Ke.prototype)}deepFreeze(){let e=0;for(;e<this.length;)bs(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&&ug(o,t)}}traverse(e){cg(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,Ke.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 Fi("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)=>sg(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 qr(0,o,o);{let a=i[0].fi;return qr(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 qr(l,l+o,o)}else return qr(a.fi,s.fi,o)}}};var ki;(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})(ki||(ki={}));var be=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,be.prototype)}deepFreeze(){let e=0;for(;e<this.length;)bs(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,be.prototype);let t=e;return lg()||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 qr(0,t,t);{let i=o[0].fi;return qr(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 qr(s,s+t,t)}else return qr(i.fi,a.fi,t)}}};function Hi(n){return n&&typeof n=="object"&&n instanceof Qe}var Qe=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&&!Hi(t))return null;o+=1}t=t?tc(t):new Qe;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=tc(l),delete t[r.path[o-1]])}else{let l=e[o-1];if(l){let c=tc(l);c[r.path[o-1]]=t,t=c}else{let c=new Qe;c[r.path[o-1]]=t,t=c}}o-=1}let a=Object.setPrototypeOf(t,Qe.prototype),s={...r,props:i};return{data:a,actual:r,reverse:s}}},$r;(t=>{function n(o,i){return vs(o,i)??o}t.apply=n;function r(o,i){return Ld(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=Ze.zoomOnce(l,s[a]),l===void 0)return i;if(!Hi(l))return;a+=1}if(l===void 0)return i;if(!!Hi(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=Bd([i],l);return c?(console.log(c),c):i}else return i}t.filterOp=e})($r||($r={}));function Bd(n,r){if(r===void 0)return;let e=!1,t=n.map(o=>{let i=o.id,a=vs(o.data,r[i]);if(e=e||a!==void 0,a===void 0&&(a=o.data),o.children){let s=Bd(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 wT(n,r){if(r===void 0)return;let e=!1,t=n.map(o=>{let i=o.id,a=vs(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 vs(n,r){if(!Hi(r))return r;if(n instanceof Ke){let e=Bd(n,r);return e!==void 0&&Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e}else{if(n instanceof be)return wT(n,r);if(Array.isArray(n)){let e=!1,t=n.map((o,i)=>{let a=vs(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 Qe)return Ld(n,r);if(n&&typeof n=="object"){let e={},t=!1;for(let[o,i]of Object.entries(n)){let a=vs(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 Ld(n,r){if(n===void 0)return r;if(r===void 0)return n;if(!Hi(r))return r;if(!Hi(n))return $r.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 Qe;for(let o of e){let i=Ld(n===void 0?void 0:n[o],r===void 0?void 0:r[o]);t[o]=i}return t}function dg(n,r){let e={cur:[],result:[],len:0};return n=Ss(n,r,e)??n,[n,e.result]}function rc(n,r){return n===null?null:(n.cur[n.len]=r,n.len+=1,n)}function oc(n){n&&(n.len-=1)}function PT(n){if(n===null)return null;n.result.push(n.cur.slice(0,n.len))}function pg(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=Ss(i.data,r,rc(e,a));oc(e),t=t||l!==void 0,l===void 0&&(l=i.data);let c=pg(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 OT(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=Ss(i.data,r,rc(e,a));return oc(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 Ss(n,r,e){if(n instanceof Ke){let t=pg(n,r,e);return t!==void 0&&Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}else{if(n instanceof be)return OT(n,r,e);if(Array.isArray(n)){let t=!1,o=n.map((i,a)=>{let s=Ss(i,r,rc(e,a));return oc(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"&&!Ui(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=Ss(a,r,rc(e,i));oc(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&&PT(e),t}else return}}var Wi;(r=>{function n(e,t){let o=Ze.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})(Wi||(Wi={}));var nt;(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 Qe&&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 Ke||l instanceof be||l instanceof fe?d=l.runOp(c):d=ki.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 Ke){if(typeof g=="number")throw new Error("illegal arg");m=v.modifyById(g,m)}else if(v instanceof be){if(typeof g=="number")throw new Error("illegal arg");m=v.modifyById(g,m)}else if(v instanceof fe){if(typeof g=="number")throw new Error("illegal arg");m=v.modifyById(g,m)}else if(v instanceof Qe){let P={...v,[g]:m};m=Object.setPrototypeOf(P,Qe.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 P=m;m=[...v],m[g]=P}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 Ke){if(typeof h=="number")throw new Error("");f=l.get(h)?.data}else if(l instanceof be){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})(nt||(nt={}));var ws;(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=>nt.subsumed(d,h))),...u]}l.compress=o;function i(c,u){return c.every(p=>u.every(d=>nt.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=Ze.zoom(p,[...f.path,f.id]),g=nt.apply(p,{...f,type:2})):(m=Ze.zoom(p,[...f.path,f.id,"value"]),g=nt.apply(p,f)),g!==null){p=g.data;let[v,P]=dg(p,{[f.id]:m});p=v;for(let O=0;O<P.length;O++){let S=P[O],T=S.pop();if(typeof T=="number"){let A=[T];for(let E=O+1;E<P.length;E++){let N=P[E],I=N[N.length-1];if(typeof I=="number"&&Ze.equal(S,N.slice(0,N.length-1)))A.push(I),P.splice(E,1);else break}let x=Ze.zoom(p,S);y=x.map((E,N)=>A.includes(N)?f.id:E),m=x,T=S.pop()}else{if(T==="alphaOverride"||T==="alpha"){m/=100;let A=m,x=Ze.zoom(p,S.slice(0,S.length-2)),E=x.layers.map(N=>N.id===S[S.length-1]?{...N,data:{...N.data,[T]:A}}:N);Object.setPrototypeOf(E,Object.getPrototypeOf(x.layers)),x.layers=E}y=f.id}d.push({type:0,path:S,props:{[T]:m}}),h.push({type:0,path:S,props:{[T]:y}})}h.push(g.reverse),d.push(g.actual)}}else{let m=nt.apply(p,f);m!==null&&(d.push(m.actual),p=m.data,h.push(m.reverse))}}catch(m){if(m instanceof Fi)return null;throw m}return{data:p,actual:d,reverse:h.reverse()}}l.apply=s})(ws||(ws={}));var fg=Symbol(),CT=Symbol(),ic=Symbol(),jn=class{reportOp(r,e,t=[]){let o=this;if(e===null)return;o._current=e.data;let i=t;for(;!(o instanceof nc);){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[ic];t&&t(),delete this._children[r]}}}},Vd=class extends jn{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,ki.runOp(this._current,r),r.path)}},Gd=class extends jn{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,fe.prototype)}runOp(r){this.reportOp(r,this._current.runOp(r))}},hg={get(n,r){if(r===ic)return()=>{n._parent=null};if(r===fg)return n._current;if(r===CT)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=ac(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]}}},TT={...hg,set(n,r,e){let t={type:0,props:{[r]:it(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}},AT={...hg,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}},qi=class extends jn{constructor(r,e,t){super(),this._children={},this._parent=r,this._path=e,this._current=t,this[ic]=()=>{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=ac(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)}},$i=class extends jn{constructor(r,e,t){super(),this._children={},this._parent=r,this._path=e,this._current=t,this[ic]=()=>{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=ac(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 Rd(n,r,e){if(n.length>0){let t=n[n.length-1];if(t.type===0&&r.type===0&&Ze.equal(t.path,e)){Object.assign(t.props,r.props);return}}n.push({...r,path:e})}var nc=class extends jn{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){Rd(this.ts,e,r),Rd(this.actual,t,r),Rd(this.reverse,o,r)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function ac(n,r,e){return e instanceof Ke?new qi(n,r,e):e instanceof be?new $i(n,r,e):e instanceof fe?new Proxy(new Gd(n,r,e),AT):e!==null&&typeof e=="object"?Ui(e)?e:new Proxy(new Vd(n,r,e),TT):e}function zd(n){let r=new nc(n);return[ac(r,"",n),r]}function Ko(n,r){let[e,t]=zd(n);return r(e),t.result()}function it(n){return n instanceof qi||n instanceof $i?n._current:n!==null&&typeof n=="object"?n[fg]:n}var Ze;(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 Ke||i instanceof qi)&&typeof a=="string")return i.data(a);if((i instanceof be||i instanceof $i)&&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})(Ze||(Ze={}));function mg(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 Le(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 sc=class{},Ps=class extends sc{constructor(e){super();this.id=e}},Os=class extends sc{constructor(e){super();this.data=e}};var Fd;try{Fd=new TextDecoder}catch{}var de,Zo,z=0;var Pg=[],Ud=Pg,kd=0,Qt={},ke,Qo,yr=0,Yr=0,lr,wo,Wt=[],We,yg={useRecords:!1,mapsAsObjects:!0},Cs=class{},Wd=new Cs;Wd.name="MessagePack 0xC1";var Yi=!1,Xr=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 Mg(()=>(cc(),this?this.unpack(r,e):Xr.prototype.unpack.call(yg,r,e)));Zo=e>-1?e:r.length,z=0,kd=0,Yr=0,Qo=null,Ud=Pg,lr=null,de=r;try{We=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 Xr){if(Qt=this,this.structures)return ke=this.structures,lc();(!ke||ke.length>0)&&(ke=[])}else Qt=yg,(!ke||ke.length>0)&&(ke=[]);return lc()}unpackMultiple(r,e){let t,o=0;try{Yi=!0;let i=r.length,a=this?this.unpack(r,i):pc.unpack(r,i);if(e){for(e(a);z<i;)if(o=z,e(lc())===!1)return}else{for(t=[a];z<i;)o=z,t.push(lc());return t}}catch(i){throw i.lastPosition=o,i.values=t,i}finally{Yi=!1,cc()}}_mergeStructures(r,e){r=r||[];for(let t=0,o=r.length;t<o;t++){let i=r[t];i&&(i.isShared=!0,t>=32&&(i.highByte=t-32>>5))}r.sharedLength=r.length;for(let t in e||[])if(t>=0){let o=r[t],i=e[t];i&&(o&&((r.restoreStructures||(r.restoreStructures=[]))[t]=o),r[t]=i)}return this.structures=r}decode(r,e){return this.unpack(r,e)}};function lc(){try{if(!Qt.trusted&&!Yi){let r=ke.sharedLength||0;r<ke.length&&(ke.length=r)}let n=dt();if(z==Zo)ke.restoreStructures&&gg(),ke=null,de=null,wo&&(wo=null);else if(z>Zo){let r=new Error("Unexpected end of MessagePack data");throw r.incomplete=!0,r}else if(!Yi)throw new Error("Data read, but end of buffer not reached");return n}catch(n){throw ke.restoreStructures&&gg(),cc(),(n instanceof RangeError||n.message.startsWith("Unexpected end of buffer"))&&(n.incomplete=!0),n}}function gg(){for(let n in ke.restoreStructures)ke[n]=ke.restoreStructures[n];ke.restoreStructures=null}function dt(){let n=de[z++];if(n<160)if(n<128){if(n<64)return n;{let r=ke[n&63]||Qt.getStructures&&Og()[n&63];return r?(r.read||(r.read=qd(r,n&63)),r.read()):n}}else if(n<144)if(n-=128,Qt.mapsAsObjects){let r={};for(let e=0;e<n;e++)r[Tg()]=dt();return r}else{let r=new Map;for(let e=0;e<n;e++)r.set(dt(),dt());return r}else{n-=144;let r=new Array(n);for(let e=0;e<n;e++)r[e]=dt();return r}else if(n<192){let r=n-160;if(Yr>=z)return Qo.slice(z-yr,(z+=r)-yr);if(Yr==0&&Zo<140){let e=r<16?$d(r):Cg(r);if(e!=null)return e}return Hd(r)}else{let r;switch(n){case 192:return null;case 193:return lr?(r=dt(),r>0?lr[1].slice(lr.position1,lr.position1+=r):lr[0].slice(lr.position0,lr.position0-=r)):Wd;case 194:return!1;case 195:return!0;case 196:return jd(de[z++]);case 197:return r=We.getUint16(z),z+=2,jd(r);case 198:return r=We.getUint32(z),z+=4,jd(r);case 199:return Fn(de[z++]);case 200:return r=We.getUint16(z),z+=2,Fn(r);case 201:return r=We.getUint32(z),z+=4,Fn(r);case 202:if(r=We.getFloat32(z),Qt.useFloat32>2){let e=dc[(de[z]&127)<<1|de[z+1]>>7];return z+=4,(e*r+(r>0?.5:-.5)>>0)/e}return z+=4,r;case 203:return r=We.getFloat64(z),z+=8,r;case 204:return de[z++];case 205:return r=We.getUint16(z),z+=2,r;case 206:return r=We.getUint32(z),z+=4,r;case 207:return Qt.int64AsNumber?(r=We.getUint32(z)*4294967296,r+=We.getUint32(z+4)):r=We.getBigUint64(z),z+=8,r;case 208:return We.getInt8(z++);case 209:return r=We.getInt16(z),z+=2,r;case 210:return r=We.getInt32(z),z+=4,r;case 211:return Qt.int64AsNumber?(r=We.getInt32(z)*4294967296,r+=We.getUint32(z+4)):r=We.getBigInt64(z),z+=8,r;case 212:if(r=de[z++],r==114)return wg(de[z++]&63);{let e=Wt[r];if(e)return e.read?(z++,e.read(dt())):e.noBuffer?(z++,e()):e(de.subarray(z,++z));throw new Error("Unknown extension "+r)}case 213:return r=de[z],r==114?(z++,wg(de[z++]&63,de[z++])):Fn(2);case 214:return Fn(4);case 215:return Fn(8);case 216:return Fn(16);case 217:return r=de[z++],Yr>=z?Qo.slice(z-yr,(z+=r)-yr):IT(r);case 218:return r=We.getUint16(z),z+=2,Yr>=z?Qo.slice(z-yr,(z+=r)-yr):NT(r);case 219:return r=We.getUint32(z),z+=4,Yr>=z?Qo.slice(z-yr,(z+=r)-yr):DT(r);case 220:return r=We.getUint16(z),z+=2,bg(r);case 221:return r=We.getUint32(z),z+=4,bg(r);case 222:return r=We.getUint16(z),z+=2,vg(r);case 223:return r=We.getUint32(z),z+=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 MT=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function qd(n,r){function e(){if(e.count++>2){let o=n.read=new Function("r","return function(){return {"+n.map(i=>MT.test(i)?i+":r()":"["+JSON.stringify(i)+"]:r()").join(",")+"}}")(dt);return n.highByte===0&&(n.read=xg(r,n.read)),o()}let t={};for(let o=0,i=n.length;o<i;o++){let a=n[o];t[a]=dt()}return t}return e.count=0,n.highByte===0?xg(r,e):e}var xg=(n,r)=>function(){let e=de[z++];if(e===0)return r();let t=n<32?-(n+(e<<5)):n+(e<<5),o=ke[t]||Og()[t];if(!o)throw new Error("Record id is not defined for "+t);return o.read||(o.read=qd(o,n)),o.read()};function Og(){let n=Mg(()=>(de=null,Qt.getStructures()));return ke=Qt._mergeStructures(n,ke)}var Hd=uc,IT=uc,NT=uc,DT=uc;function uc(n){let r;if(n<16&&(r=$d(n)))return r;if(n>64&&Fd)return Fd.decode(de.subarray(z,z+=n));let e=z+n,t=[];for(r="";z<e;){let o=de[z++];if((o&128)===0)t.push(o);else if((o&224)===192){let i=de[z++]&63;t.push((o&31)<<6|i)}else if((o&240)===224){let i=de[z++]&63,a=de[z++]&63;t.push((o&31)<<12|i<<6|a)}else if((o&248)===240){let i=de[z++]&63,a=de[z++]&63,s=de[z++]&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+=Mt.apply(String,t),t.length=0)}return t.length>0&&(r+=Mt.apply(String,t)),r}function bg(n){let r=new Array(n);for(let e=0;e<n;e++)r[e]=dt();return r}function vg(n){if(Qt.mapsAsObjects){let r={};for(let e=0;e<n;e++)r[Tg()]=dt();return r}else{let r=new Map;for(let e=0;e<n;e++)r.set(dt(),dt());return r}}var Mt=String.fromCharCode;function Cg(n){let r=z,e=new Array(n);for(let t=0;t<n;t++){let o=de[z++];if((o&128)>0){z=r;return}e[t]=o}return Mt.apply(String,e)}function $d(n){if(n<4)if(n<2){if(n===0)return"";{let r=de[z++];if((r&128)>1){z-=1;return}return Mt(r)}}else{let r=de[z++],e=de[z++];if((r&128)>0||(e&128)>0){z-=2;return}if(n<3)return Mt(r,e);let t=de[z++];if((t&128)>0){z-=3;return}return Mt(r,e,t)}else{let r=de[z++],e=de[z++],t=de[z++],o=de[z++];if((r&128)>0||(e&128)>0||(t&128)>0||(o&128)>0){z-=4;return}if(n<6){if(n===4)return Mt(r,e,t,o);{let i=de[z++];if((i&128)>0){z-=5;return}return Mt(r,e,t,o,i)}}else if(n<8){let i=de[z++],a=de[z++];if((i&128)>0||(a&128)>0){z-=6;return}if(n<7)return Mt(r,e,t,o,i,a);let s=de[z++];if((s&128)>0){z-=7;return}return Mt(r,e,t,o,i,a,s)}else{let i=de[z++],a=de[z++],s=de[z++],l=de[z++];if((i&128)>0||(a&128)>0||(s&128)>0||(l&128)>0){z-=8;return}if(n<10){if(n===8)return Mt(r,e,t,o,i,a,s,l);{let c=de[z++];if((c&128)>0){z-=9;return}return Mt(r,e,t,o,i,a,s,l,c)}}else if(n<12){let c=de[z++],u=de[z++];if((c&128)>0||(u&128)>0){z-=10;return}if(n<11)return Mt(r,e,t,o,i,a,s,l,c,u);let p=de[z++];if((p&128)>0){z-=11;return}return Mt(r,e,t,o,i,a,s,l,c,u,p)}else{let c=de[z++],u=de[z++],p=de[z++],d=de[z++];if((c&128)>0||(u&128)>0||(p&128)>0||(d&128)>0){z-=12;return}if(n<14){if(n===12)return Mt(r,e,t,o,i,a,s,l,c,u,p,d);{let h=de[z++];if((h&128)>0){z-=13;return}return Mt(r,e,t,o,i,a,s,l,c,u,p,d,h)}}else{let h=de[z++],f=de[z++];if((h&128)>0||(f&128)>0){z-=14;return}if(n<15)return Mt(r,e,t,o,i,a,s,l,c,u,p,d,h,f);let m=de[z++];if((m&128)>0){z-=15;return}return Mt(r,e,t,o,i,a,s,l,c,u,p,d,h,f,m)}}}}}function jd(n){return Qt.copyBuffers?Uint8Array.prototype.slice.call(de,z,z+=n):de.subarray(z,z+=n)}function Fn(n){let r=de[z++];if(Wt[r])return Wt[r](de.subarray(z,z+=n));throw new Error("Unknown extension type "+r)}var Sg=new Array(4096);function Tg(){let n=de[z++];if(n>=160&&n<192){if(n=n-160,Yr>=z)return Qo.slice(z-yr,(z+=n)-yr);if(!(Yr==0&&Zo<180))return Hd(n)}else return z--,dt();let r=(n<<5^(n>1?We.getUint16(z):n>0?de[z]:0))&4095,e=Sg[r],t=z,o=z+n-3,i,a=0;if(e&&e.bytes==n){for(;t<o;){if(i=We.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 z=t,e.string;o-=3,t=z}for(e=[],Sg[r]=e,e.bytes=n;t<o;)i=We.getUint32(t),e.push(i),t+=4;for(o+=3;t<o;)i=de[t++],e.push(i);let s=n<16?$d(n):Cg(n);return s!=null?e.string=s:e.string=Hd(n)}var wg=(n,r)=>{var e=dt();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=qd(e,t),e.read()},Ag=typeof self=="object"?self:global;Wt[0]=()=>{};Wt[0].noBuffer=!0;Wt[101]=()=>{let n=dt();return(Ag[n[0]]||Error)(n[1])};Wt[105]=n=>{let r=We.getUint32(z-4);wo||(wo=new Map);let e=de[z],t;e>=144&&e<160||e==220||e==221?t=[]:t={};let o={target:t};wo.set(r,o);let i=dt();return o.used?Object.assign(t,i):(o.target=i,i)};Wt[112]=n=>{let r=We.getUint32(z-4),e=wo.get(r);return e.used=!0,e.target};Wt[115]=()=>new Set(dt());var Yd=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(n=>n+"Array");Wt[116]=n=>{let r=n[0],e=Yd[r];if(!e)throw new Error("Could not find typed array for code "+r);return new Ag[e](Uint8Array.prototype.slice.call(n,1).buffer)};Wt[120]=()=>{let n=dt();return new RegExp(n[0],n[1])};Wt[98]=n=>{let r=(n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3],e=z;z+=r-4,lr=[dt(),dt()],lr.position0=0,lr.position1=0;let t=z;z=e;try{return dt()}finally{z=t}};Wt[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 Mg(n){let r=Zo,e=z,t=kd,o=yr,i=Yr,a=Qo,s=Ud,l=wo,c=lr,u=new Uint8Array(de.slice(0,Zo)),p=ke,d=ke.slice(0,ke.length),h=Qt,f=Yi,m=n();return Zo=r,z=e,kd=t,yr=o,Yr=i,Qo=a,Ud=s,wo=l,lr=c,de=u,Yi=f,ke=p,ke.splice(0,ke.length,...d),Qt=h,We=new DataView(de.buffer,de.byteOffset,de.byteLength),m}function cc(){de=null,wo=null,ke=null}function Ig(n){n.unpack?Wt[n.type]=n.unpack:Wt[n.type]=n}var dc=new Array(147);for(let n=0;n<256;n++)dc[n]=+("1e"+Math.floor(45.15-n*.30103));var pc=new Xr({useRecords:!1}),ET=pc.unpack,_T=pc.unpackMultiple,BT=pc.unpack,fc={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},LT=new Float32Array(1),JU=new Uint8Array(LT.buffer,0,4);var hc;try{hc=new TextEncoder}catch{}var mc,Kd,yc=typeof Buffer<"u",Xd=yc?Buffer.allocUnsafeSlow:Uint8Array,_g=yc?Buffer:Uint8Array,Ng=yc?4294967296:2144337920,Y,ft,k=0,Kr,Qr=null,RT=/[\u0080-\uFFFF]/,Ts=Symbol("record-id"),Un=class extends Xr{constructor(r){super(r),this.offset=0;let e,t,o,i,a,s,l=0,c=_g.prototype.utf8Write?function(x,E,N){return Y.utf8Write(x,E,N)}:hc&&hc.encodeInto?function(x,E){return hc.encodeInto(x,Y.subarray(E)).written}:!1,u=this;r||(r={});let p=r&&r.sequential,d=r.structures||r.saveStructures,h=r.maxSharedStructures;if(h==null&&(h=d?32:0),h>8160)throw new Error("Maximum maxSharedStructure is 8160");let f=r.maxOwnStructures;f==null&&(f=d?32:64),p&&!r.saveStructures&&(this.structures=[]);let m=h>32||f+h>64,y=h+64,g=h+f+64;if(g>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let v=[],P=0,O=0;this.pack=this.encode=function(x,E){if(Y||(Y=new Xd(8192),ft=new DataView(Y.buffer,0,8192),k=0),Kr=Y.length-10,Kr-k<2048?(Y=new Xd(Y.length),ft=new DataView(Y.buffer,0,Y.length),Kr=Y.length-10,k=0):k=k+7&2147483640,t=k,s=u.structuredClone?new Map:null,u.bundleStrings?(Qr=["",""],Y[k++]=214,Y[k++]=98,Qr.position=k-t,k+=4):Qr=null,o=u.structures,o){o.uninitialized&&(o=u._mergeStructures(u.getStructures()));let N=o.sharedLength||0;if(N>h)throw new Error("Shared structures is larger than maximum shared structures, try increasing maxSharedStructures to "+o.sharedLength);if(!o.transitions){o.transitions=Object.create(null);for(let I=0;I<N;I++){let D=o[I];if(!D)continue;let _,B=o.transitions;for(let V=0,U=D.length;V<U;V++){let R=D[V];_=B[R],_||(_=B[R]=Object.create(null)),B=_}B[Ts]=I+64}l=N}p||(o.nextId=N+64)}i&&(i=!1),a=o||[];try{if(S(x),Qr){ft.setUint32(Qr.position+t,k-Qr.position-t);let N=Qr;Qr=null,S(N[0]),S(N[1])}if(u.offset=k,s&&s.idsToInsert){k+=s.idsToInsert.length*6,k>Kr&&A(k),u.offset=k;let N=GT(Y.subarray(t,k),s.idsToInsert);return s=null,N}return E&Lg?(Y.start=t,Y.end=k,Y):Y.subarray(t,k)}finally{if(o){if(O<10&&O++,P>1e4)o.transitions=null,O=0,P=0,v.length>0&&(v=[]);else if(v.length>0&&!p){for(let N=0,I=v.length;N<I;N++)v[N][Ts]=0;v=[]}if(i&&u.saveStructures){let N=o.sharedLength||h;o.length>N&&(o=o.slice(0,N));let I=Y.subarray(t,k);return u.saveStructures(o,l)===!1?(u._mergeStructures(u.getStructures()),u.pack(x)):(l=N,I)}}E&WT&&(k=t)}};let S=x=>{k>Kr&&(Y=A(k));var E=typeof x,N;if(E==="string"){let I=x.length;if(Qr&&I>=8&&I<4096){let B=RT.test(x);Qr[B?0:1]+=x,Y[k++]=193,S(B?-I:I);return}let D;I<32?D=1:I<256?D=2:I<65536?D=3:D=5;let _=I*3;if(k+_>Kr&&(Y=A(k+_)),I<64||!c){let B,V,U,R=k+D;for(B=0;B<I;B++)V=x.charCodeAt(B),V<128?Y[R++]=V:V<2048?(Y[R++]=V>>6|192,Y[R++]=V&63|128):(V&64512)===55296&&((U=x.charCodeAt(B+1))&64512)===56320?(V=65536+((V&1023)<<10)+(U&1023),B++,Y[R++]=V>>18|240,Y[R++]=V>>12&63|128,Y[R++]=V>>6&63|128,Y[R++]=V&63|128):(Y[R++]=V>>12|224,Y[R++]=V>>6&63|128,Y[R++]=V&63|128);N=R-k-D}else N=c(x,k+D,_);N<32?Y[k++]=160|N:N<256?(D<2&&Y.copyWithin(k+2,k+1,k+1+N),Y[k++]=217,Y[k++]=N):N<65536?(D<3&&Y.copyWithin(k+3,k+2,k+2+N),Y[k++]=218,Y[k++]=N>>8,Y[k++]=N&255):(D<5&&Y.copyWithin(k+5,k+3,k+3+N),Y[k++]=219,ft.setUint32(k,N),k+=4),k+=N}else if(E==="number")if(x>>>0===x)x<64?Y[k++]=x:x<256?(Y[k++]=204,Y[k++]=x):x<65536?(Y[k++]=205,Y[k++]=x>>8,Y[k++]=x&255):(Y[k++]=206,ft.setUint32(k,x),k+=4);else if(x>>0===x)x>=-32?Y[k++]=256+x:x>=-128?(Y[k++]=208,Y[k++]=x+256):x>=-32768?(Y[k++]=209,ft.setInt16(k,x),k+=2):(Y[k++]=210,ft.setInt32(k,x),k+=4);else{let I;if((I=this.useFloat32)>0&&x<4294967296&&x>=-2147483648){Y[k++]=202,ft.setFloat32(k,x);let D;if(I<4||(D=x*dc[(Y[k]&127)<<1|Y[k+1]>>7])>>0===D){k+=4;return}else k--}Y[k++]=203,ft.setFloat64(k,x),k+=8}else if(E==="object")if(!x)Y[k++]=192;else{if(s){let D=s.get(x);if(D){if(!D.id){let _=s.idsToInsert||(s.idsToInsert=[]);D.id=_.push(D)}Y[k++]=214,Y[k++]=112,ft.setUint32(k,D.id),k+=4;return}else s.set(x,{offset:k-t})}let I=x.constructor;if(I===Object)T(x,!0);else if(I===Array){N=x.length,N<16?Y[k++]=144|N:N<65536?(Y[k++]=220,Y[k++]=N>>8,Y[k++]=N&255):(Y[k++]=221,ft.setUint32(k,N),k+=4);for(let D=0;D<N;D++)S(x[D])}else if(I===Map){N=x.size,N<16?Y[k++]=128|N:N<65536?(Y[k++]=222,Y[k++]=N>>8,Y[k++]=N&255):(Y[k++]=223,ft.setUint32(k,N),k+=4);for(let[D,_]of x)S(D),S(_)}else{for(let D=0,_=mc.length;D<_;D++){let B=Kd[D];if(x instanceof B){let V=mc[D];if(V.write){V.type&&(Y[k++]=212,Y[k++]=V.type,Y[k++]=0),S(V.write.call(this,x));return}let U=Y,R=ft,W=k;Y=null;let j;try{j=V.pack.call(this,x,F=>(Y=U,U=null,k+=F,k>Kr&&A(k),{target:Y,targetView:ft,position:k-F}),S)}finally{U&&(Y=U,ft=R,k=W,Kr=Y.length-10)}j&&(j.length+k>Kr&&A(j.length+k),k=VT(j,Y,k,V.type));return}}T(x,!x.hasOwnProperty)}}else if(E==="boolean")Y[k++]=x?195:194;else if(E==="bigint"){if(x<BigInt(1)<<BigInt(63)&&x>=-(BigInt(1)<<BigInt(63)))Y[k++]=211,ft.setBigInt64(k,x);else if(x<BigInt(1)<<BigInt(64)&&x>0)Y[k++]=207,ft.setBigUint64(k,x);else if(this.largeBigIntToFloat)Y[k++]=203,ft.setFloat64(k,Number(x));else throw new RangeError(x+" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64");k+=8}else if(E==="undefined")this.encodeUndefinedAsNil?Y[k++]=192:(Y[k++]=212,Y[k++]=0,Y[k++]=0);else if(E==="function")S(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+E)},T=this.useRecords===!1?this.variableMapSize?x=>{let E=Object.keys(x),N=E.length;N<16?Y[k++]=128|N:N<65536?(Y[k++]=222,Y[k++]=N>>8,Y[k++]=N&255):(Y[k++]=223,ft.setUint32(k,N),k+=4);let I;for(let D=0;D<N;D++)S(I=E[D]),S(x[I])}:(x,E)=>{Y[k++]=222;let N=k-t;k+=2;let I=0;for(let D in x)(E||x.hasOwnProperty(D))&&(S(D),S(x[D]),I++);Y[N+++t]=I>>8,Y[N+t]=I&255}:x=>{let E=Object.keys(x),N,I=a.transitions||(a.transitions=Object.create(null)),D=0;for(let B=0,V=E.length;B<V;B++){let U=E[B];N=I[U],N||(N=I[U]=Object.create(null),D++),I=N}let _=I[Ts];if(_)_>=96&&m?(Y[k++]=((_-=96)&31)+96,Y[k++]=_>>5):Y[k++]=_;else{_=a.nextId,_||(_=64),_<y&&this.shouldShareStructure&&!this.shouldShareStructure(E)?(_=a.nextOwnId,_<g||(_=y),a.nextOwnId=_+1):(_>=g&&(_=y),a.nextId=_+1);let B=E.highByte=_>=96&&m?_-96>>5:-1;I[Ts]=_,a[_-64]=E,_<y?(E.isShared=!0,a.sharedLength=_-63,i=!0,B>=0?(Y[k++]=(_&31)+96,Y[k++]=B):Y[k++]=_):(B>=0?(Y[k++]=213,Y[k++]=114,Y[k++]=(_&31)+96,Y[k++]=B):(Y[k++]=212,Y[k++]=114,Y[k++]=_),D&&(P+=O*D),v.length>=f&&(v.shift()[Ts]=0),v.push(I),S(E))}for(let B=0,V=E.length;B<V;B++)S(x[E[B]])},A=x=>{let E;if(x>16777216){if(x-t>Ng)throw new Error("Packed buffer would be larger than maximum buffer size");E=Math.min(Ng,Math.round(Math.max((x-t)*(x>67108864?1.25:2),4194304)/4096)*4096)}else E=(Math.max(x-t<<2,Y.length-1)>>12)+1<<12;let N=new Xd(E);return ft=new DataView(N.buffer,0,E),Y.copy?Y.copy(N,0,t,x):N.set(Y.slice(t,x)),k-=t,t=0,Kr=N.length-10,Y=N}}useBuffer(r){Y=r,ft=new DataView(Y.buffer,Y.byteOffset,Y.byteLength),k=0}};Kd=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,Cs];mc=[{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?Dg(n,16,r):Eg(yc?Buffer.from(n):new Uint8Array(n),r)}},{pack(n,r){let e=n.constructor;e!==_g&&this.structuredClone?Dg(n,Yd.indexOf(e.name),r):Eg(n,r)}},{pack(n,r){let{target:e,position:t}=r(1);e[t]=193}}];function Dg(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 Eg(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 VT(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 GT(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 Jo(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)");Kd.unshift(n.Class),mc.unshift(n)}Ig(n)}var Bg=new Un({useRecords:!1}),zT=Bg.pack,jT=Bg.pack;var{NEVER:FT,ALWAYS:UT,DECIMAL_ROUND:kT,DECIMAL_FIT:HT}=fc,Lg=512,WT=1024;var Rg=new Un({structuredClone:!0});Jo({Class:fe.prototype.constructor,type:1,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,fe.prototype),n}});Jo({Class:be.prototype.constructor,type:2,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,be.prototype),n}});Jo({Class:Ke.prototype.constructor,type:3,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,Ke.prototype),n}});Jo({Class:Ps.prototype.constructor,type:4,write(n){return n.id},read(n){return new Ps(n)}});Jo({Class:Os.prototype.constructor,type:5,write(n){return n.data},read(n){return new Os(n)}});Jo({Class:Qe.prototype.constructor,type:6,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,Qe.prototype),n}});function qT(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 Qd(n){if(Ui(n))return n;if(Array.isArray(n))return n.map(Qd);if(typeof n=="object"&&n!==null){let r={};for(let e of Object.keys(n).sort())r[e]=Qd(n[e]);return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}else return n}var gc;(t=>{function n(o){return Rg.pack(o)}t.serialize=n;function r(o){return Rg.unpack(o)}t.deserialize=r;function e(o){return qT(n(Qd(o))).toString()}t.checksum=e})(gc||(gc={}));var rn="personal camera",on="a218fcc3-276b-49b9-b485-49037fd14f5f",Ug=2960946,ht=5526619;var Xi;(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),P=h.dot(g,v)/h.dot(g,g),O=h.scalarMultiply(g,P);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})(Xi||(Xi={}));var en;(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})(en||(en={}));var Vg;(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})(Vg||(Vg={}));var Gg;(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})(Gg||(Gg={}));var tn;(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})(tn||(tn={}));var wt;(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})(wt||(wt={}));var Ie;(c=>{c.white={...wt.white,a:1},c.transparent={...wt.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{...wt.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 wt.equals(u,p)&&u.a===p.a}c.equals=i;function a(u,p){return wt.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})(Ie||(Ie={}));var xc;(r=>r.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(xc||(xc={}));var zg;(r=>r.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(zg||(zg={}));var jg;(r=>r.defaultData={control1:[.5,0],control2:[.5,1]})(jg||(jg={}));var Fg;(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]))(Fg||(Fg={}));function Zd(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 Ir;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function r(t){return e.all.includes(t)}e.is=r})(Ir||(Ir={}));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 Zr;(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($T.forEach(a=>{Object.assign(i,{[a]:o[a]??t[a]})}),i.radial={...t.radial},o.radial){let a=t.radial,s=o.radial;YT.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;XT.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;KT.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;QT.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;ZT.forEach(l=>{Object.assign(i.randomnessObject,{[l]:s[l]??a[l]})})}return i}e.merge=r})(Zr||(Zr={}));var bc;(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})(bc||(bc={}));var $T=["count"],YT=["radius","start","end","position","scale","rotation"],XT=["position","scale","rotation"],KT=["count","size"],QT=["count","position","scale","rotation"],ZT=["strength","scale","rotation","position","movement","seed","freqScale"];var vc;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function r(t){return e.all.includes(t)}e.is=r})(vc||(vc={}));var Sc;(e=>{function n(t){return r(t)}e.defaultData=n;function r(t){if(t==="PointLight")return{type:t,color:Ie.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,penumbraSize:.5,depth:1e5};if(t==="SpotLight")return{type:t,color:Ie.white,intensity:1,distance:2e3,decay:1,shadows:!0,penumbra:0,angle:30/180*Math.PI,depth:1e5,penumbraSize:.5,shadowResolution:1024,shadowRadius:1};if(t==="DirectionalLight")return{type:t,color:Ie.white,intensity:1,shadows:!0,size:2e3,depth:1e5,penumbraSize:.5,shadowResolution:1024,shadowRadius:1};throw new Error("not implemented")}})(Sc||(Sc={}));var Ki;(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}))(Ki||(Ki={}));var an;(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]})(an||(an={}));var Jd;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function r(t,o){return t.castShadow===o.castShadow&&t.receiveShadow===o.receiveShadow}e.equals=r})(Jd||(Jd={}));var ep;(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})(ep||(ep={}));var wc;(r=>r.defaultData={...ep.defaultData,...Jd.defaultData})(wc||(wc={}));var kg;(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})(kg||(kg={}));var Qi;(e=>(e.defaultVideo={data:"",thumb:"/_assets/_videos/catThumb.png",type:"video",name:"Cat video"},e.maxSize=3e7))(Qi||(Qi={}));var Hg;(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})(Hg||(Hg={}));function qg(n){return n.type!=="displace"}var Wg;(r=>{function n(e){return e==="phong"||e==="toon"||e==="lambert"||e==="physical"}r.is=n})(Wg||(Wg={}));var $g=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],Yg=["wrapping","image","video","name","minFilter","magFilter"],xt;(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:Qi.defaultVideo,wrapping:1001,repeat:[1,1],offset:[0,0],rotation:0,minFilter:1008,magFilter:1006},crop:!1};case"color":return{...a,type:"color",color:wt.fromHex(ht)};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:{...wt.fromHex(6710886),a:1},colorB:{...wt.fromHex(6710886),a:1},colorC:{...wt.fromHex(16777215),a:1},colorD:{...wt.fromHex(16777215),a:1},distortion:[1,1],fA:[1.7,9.2],fB:[8.3,2.8],voronoiStyle:0,highCut:1,lowCut:0,smoothness:.3,seed:0,quality:1};case"fresnel":return{...a,type:"fresnel",color:Ie.fromHexAndA(16777215,1),bias:.1,scale:1,intensity:2,factor:1};case"rainbow":return{...a,type:"rainbow",filmThickness:30,movement:0,wavelengths:[0,0,0],noiseStrength:0,noiseScale:1,offset:[0,0,0]};case"toon":return{...a,type:"toon",positioning:2,colors:[[0,0,0,1],[.5,.5,.5,1],[.5,.5,.5,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,.475,.525,1,1,1,1,1,1,1],num:4,source:[0,1e3,0],isWorldSpace:!0,noiseStrength:0,noiseScale:1,shadowColor:Ie.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{...a,type:"outline",outlineColor:Ie.fromHexAndA(0,1),contourColor:Ie.fromHexAndA(0,1),outlineWidth:2,contourWidth:5,outlineThreshold:.4,contourThreshold:0,outlineSmoothing:0,contourFrequency:10,contourDirection:[0,1,0],positionalLines:!1,compensation:!0};case"matcap":return{...a,type:"matcap",texture:{image:"matcap_0",wrapping:1001,repeat:[1,1],offset:[0,0],rotation:0,minFilter:1008,magFilter:1006}};case"transmission":return{...a,type:"transmission",thickness:10,ior:1.5,roughness:1};case"displace":return{visible:!0,type:"displace",displacementType:"noise",noiseType:0,scale:10,movement:1,offset:[0,0,0],intensity:8,voronoiStyle:0,smoothness:.3,seed:0,highCut:1,lowCut:0,quality:1};case"pattern":return{...a,type:"pattern",style:0,projection:0,axis:"y",blending:0,offset:[0,0],colorA:{...wt.fromHex(0),a:1},colorB:{...wt.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}}}})(xt||(xt={}));var It;(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 be}}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 be;return h.push({fi:0,data:xt.defaultData("light",u),id:p}),h.push({fi:1,data:xt.defaultData("color"),id:d}),{layers:h}}c.defaultTwoLayerData=i;function a(u){let p=xt.defaultData("texture");u&&Object.assign(p.texture,{image:u});let d=new be;return d.push({fi:0,data:p,id:"layer1"}),d.push({fi:1,data:{...xt.defaultData("transmission"),alpha:1},id:"layer2"}),d.push({fi:2,data:{...xt.defaultData("light","lambert"),alpha:0},id:"layer3"}),{layers:d}}c.defaultUIObjectMaterial=a;function s(u,p="phong",d="layer1",h="layer2"){let f=xt.defaultData("texture");Object.assign(f.texture,{image:u});let m=new be;return m.push({fi:0,data:f,id:d}),m.push({fi:1,data:xt.defaultData("light",p),id:h}),{layers:m}}c.defaultTwoLayerTextureData=s;function l(u,p="phong",d="layer1",h="layer2"){let f=xt.defaultData("video");Object.assign(f.texture,{video:u});let m=new be;return m.push({fi:0,data:f,id:d}),m.push({fi:1,data:xt.defaultData("light",p),id:h}),{layers:m}}c.defaultTwoLayerVideoTextureData=l})(It||(It={}));var Zi;(r=>{function n(){return{points:new be,roundness:0,shapeHoles:[],isClosed:!1}}r.defaultData=n})(Zi||(Zi={}));var Ji;(r=>{function n(){return{points:new be,lastInsertionPlane:null,subdivisions:12,isClosed:!1}}r.defaultData=n})(Ji||(Ji={}));var tp={type:"Ellipse",width:50,height:50,spikes:16,angle:360,innerRadius:0};var Pc;(r=>{function n(e,t){let o={...e};return JT.forEach(i=>{Object.assign(o,{[i]:t[i]??e[i]})}),o}r.merge=n})(Pc||(Pc={}));var Oc={shape:tp,depth:1,offset:0,bevel:50,bevelSides:6,angle:0,twist:0,startScale:1,endScale:1,capType:"flat"},JT=["depth","offset","angle","twist","startScale","endScale"];var As;(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})(As||(As={}));var Cc;(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,Pc.merge(o.extrusion,t.extrusion))),o}r.merge=n})(Cc||(Cc={}));var Po;(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:Ji.defaultData(),extrusion:Oc};if(e==="VectorGeometry")return{width:1,height:1,type:e,subdivisions:12,shape:Zi.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})(Po||(Po={}));var Tc;(r=>r.defaultData={enabled:!1,useBackgroundColor:!1,color:wt.white,near:.1,far:2e3})(Tc||(Tc={}));var Ac;(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}}})(Ac||(Ac={}));var rp;(r=>r.defaultData={softShadowQuality:"low"})(rp||(rp={}));var op;(r=>r.defaultData={enabled:!0,color:{r:.8274509803921568,g:.8274509803921568,b:.8274509803921568},intensity:.75})(op||(op={}));var np;(r=>r.defaultData={occlusion:!1,aoFullRes:!1,radius:256,bias:.5,aoColor:{r:.19607843137254902,g:.19607843137254902,b:.19607843137254902}})(np||(np={}));var Ms;(r=>r.defaultData={usePhysics:!1,gravity:-10})(Ms||(Ms={}));var ip;(r=>r.defaultData={playCamera:rn,gameControlObject:null})(ip||(ip={}));var Mc;(r=>r.defaultData={backgroundColor:Ie.fromHexAndA(Ug,1),postprocessing:Ac.defaultData,fog:Tc.defaultData,globalPhysics:Ms.defaultData,ambient:op.defaultData,ao:np.defaultData,shadow:rp.defaultData,publish:ip.defaultData})(Mc||(Mc={}));var Ic;(r=>r.defaultData={colliderType:"box",size:[100,100,100],colliderHelperVisible:!0,forceType:"collider",forceRange:"global",forceIntensity:.5,forceDambing:.95})(Ic||(Ic={}));var Xg;(e=>{function n(t){return t==="Component"||t==="Instance"}e.isComponentRelated=n;function r(t){return t==="Empty"||t==="Instance"}e.isEmptyOrComponent=r})(Xg||(Xg={}));var ea;(o=>{o.identity={...xc.identity,hiddenMatrix:tn.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 Ml({position:en.isEqual(i.position,a.position)?void 0:a.position,rotation:en.isEqual(i.rotation,a.rotation)?void 0:a.rotation,scale:en.isEqual(i.scale,a.scale)?null:a.scale,hiddenMatrix:tn.isEqual(i.hiddenMatrix,a.hiddenMatrix)?void 0:a.hiddenMatrix})}o.diff=t})(ea||(ea={}));var bt;(r=>r.defaultData={states:new be,events:new be,visible:!0,raycastLock:!1,physics:an.defaultData,pathSnapping:{pathId:null,slide:0,offset:0,orientation:"tangential"},...ea.identity,cloner:null})(bt||(bt={}));var Nc;(r=>r.defaultData={type:"Empty",...bt.defaultData})(Nc||(Nc={}));var Kg;(r=>r.defaultData={type:"ParticleCollider",...Ic.defaultData,...bt.defaultData})(Kg||(Kg={}));var Qg;(r=>r.defaultData={type:"Component",...bt.defaultData})(Qg||(Qg={}));var Zg;(r=>r.defaultData={type:"Particle",...bt.defaultData,...Ki.defaultData})(Zg||(Zg={}));var sn;(r=>r.defaultData={type:"Mesh",...bt.defaultData,...wc.defaultData})(sn||(sn={}));var kn;(r=>r.defaultData={...bt.defaultData,...ea.identity,position:[0,0,nn.DefaultTargetOffset],...nn.defaultData})(kn||(kn={}));var Dc;(e=>{function n(t){return{...bt.defaultData,...Sc.defaultData(t)}}e.defaultData=n,e.defaultDirectionalLightData={...e.defaultData("DirectionalLight"),position:[200,300,300],name:"Directional Light",intensity:.7}})(Dc||(Dc={}));var ta;(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})(ta||(ta={}));var Jr;(i=>{i.rootOverrideProps=["physics","events"],i.compositeNonOptionalOverrideProps=["geometry"],i.compositeEntireOverrideOverrideProps=["material"];function t(a,s){return{...bt.defaultData,...s,component:a,overrides:new Qe,physics:void 0,events:void 0,type:"Instance"}}i.ofComponent=t;function o(a){let s=ea.fromObject(a.data);return t(a.id,s)}i.fromComponentData=o})(Jr||(Jr={}));var Oo;(e=>{e.defaultData={type:"Page",...bt.defaultData,physics:{...an.defaultData,fusedBody:!1},...Mc.defaultData,camera:kn.defaultData};function r(t){return t.uiScene!==void 0}e.isUIPage=r})(Oo||(Oo={}));var Ec;(a=>(a.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:tn.identity,name:"Play Camera",visible:!0,raycastLock:!1,physics:an.defaultData,states:new be,events:new be,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",...bt.defaultData,...sn.defaultData,geometry:Po.defaultData("RectangleGeometry"),material:It.defaultTwoLayerData("phong","layer1","layer2")},a.defaultBooleanObject={name:"Boolean",...bt.defaultData,...sn.defaultData,geometry:Po.defaultData("BooleanGeometry"),material:It.defaultTwoLayerData("phong","layer1","layer2")},a.defaultTextObject={name:"Text",...bt.defaultData,...sn.defaultData,geometry:Po.defaultData("TextGeometry"),material:It.defaultTwoLayerData("phong","layer1","layer2")},a.defaultInputObject={name:"Input",...bt.defaultData,...sn.defaultData,geometry:Po.defaultData("InputGeometry"),material:It.defaultTwoLayerData("phong","layer1","layer2")}))(Ec||(Ec={}));var Hn;(o=>{function n(i,a){let s={name:a};return i.type==="Mesh"?(s.geometry={},"material"in i&&(s.material={layers:new Qe}),"materials"in i&&(s.materials=i.materials.map(l=>({layers:new Qe})))):Ir.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=Ko(s.material,l=>{if(typeof l!="string")for(let[c,u]of Object.entries(a.material.layers)){let p=l.layers.data(c);p&&xt.patch(p,u)}}).data),s.materials&&a.materials&&(s.materials=Ko(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&&xt.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(...bc.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,ea.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})}),Ir.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:Cc.merge(s.geometry,a.geometry)}),(a.material||a.materials)&&(s=r(s,a)),s.cloner&&"cloner"in a&&Object.assign(s,{cloner:Zr.merge(s.cloner,a.cloner)});else if(i.type==="Empty")s.cloner&&"cloner"in a&&Object.assign(s,{cloner:Zr.merge(s.cloner,a.cloner)});else if(vc.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=wt.clone(l.color))}return s}o.patch=t})(Hn||(Hn={}));var ra;(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})(ra||(ra={}));var Nr;(r=>r.defaultData={orbitControls:ra.defaultData,playPage:on,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})(Nr||(Nr={}));var ap;(r=>r.defaultData={id:"basic",label:"Basic",style:"None",prompt:""})(ap||(ap={}));var sp;(r=>r.defaultData={weather:0,shadows:0,lightOrigin:0,temperature:0,sun:0,camera:0,environment:0,particles:0,nature:0,floor:0})(sp||(sp={}));var Co;(e=>(e.defaultData=()=>({mode:"line-art-both",prompt:"",negativePrompt:"",style:{...ap.defaultData},isRandomSeed:!0,seed:e.generateSeed(),guessMode:!1,advanced:!1,steps:20,guidanceScale:7.5,controlNetScale:1,modifiers:sp.defaultData}),e.generateSeed=()=>Math.round(Math.random()*1e5)))(Co||(Co={}));var Jg;(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})(Jg||(Jg={}));var To;(c=>{c.TRASH_CAN_ID="830a2708-8ed9-49cf-a68e-085299892222",c.defaultLight={fi:-1,data:Dc.defaultDirectionalLightData,id:"830a2708-8ed9-49cf-a68e-085299899103",children:[]};function e(u=!0,p=[]){let d=[],h=Ec.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 Ke;return f.push({fi:1,id:on,data:{...Oo.defaultData,name:"Scene 1"},children:d}),f}c.createDefaultObjectTreeWithPage=e,c.defaultData={objects:e(),publish:Nr.defaultData,styles:Co.defaultData()},c.emptyDataWithoutPage=function(){return{objects:new Ke,publish:Nr.defaultData,styles:Co.defaultData()}},c.emptyDataWithPage=function(u=!0){return{objects:e(u),publish:Nr.defaultData,styles:Co.defaultData()}},c.emptyData=function(){return{objects:new Ke,publish:{...Nr.defaultData},styles:Co.defaultData()}};function s(u){return{...c.defaultData,objects:Lt(u,Ke.prototype)}}c.withObjs=s;function l(u,p){return s([{id:u,data:p,children:[],fi:0}])}c.withObj=l})(To||(To={}));var na;(r=>r.defaultData={preset:"fullscreen",allowResponsive:!1,size:[512,512],coords:[0,0],sceneScale:1,color:{r:0,g:0,b:0,a:.5}})(na||(na={}));var _c;(e=>(e.defaultData=t=>({url:t,name:"New Webhook",parametersSchemas:new be}),e.defaultParameterValueByType=t=>t==="number"?0:t==="boolean"?!1:""))(_c||(_c={}));var ex;(r=>r.defaultData=(e,t="GET")=>({url:e,method:t,name:"New API",headers:new be,queries:new be,autoStart:!0}))(ex||(ex={}));var ln;(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})(ln||(ln={}));var lp;(r=>r.all=["images","videos","colors","audios","particles","fonts","materials","variables"])(lp||(lp={}));var tx;(r=>r.all=[...lp.all,"components"])(tx||(tx={}));var rx;(r=>{function n(){return{images:new fe,videos:new fe,colors:new fe,audios:new fe,particles:new fe,fonts:new fe,materials:new fe,components:new fe,variables:new fe,userAPIs:new fe,userWebhooks:new fe}}r.defaultData=n})(rx||(rx={}));var Dr;(r=>{function n(){return{images:new fe,videos:new fe,colors:new fe,audios:new fe,particles:new fe,fonts:new fe,materials:new fe,components:new fe,variables:new fe,userAPIs:new fe,userWebhooks:new fe}}r.defaultData=n})(Dr||(Dr={}));var xr;(i=>{function n(){let a={};return a["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},Lt(a,fe.prototype)}i.defaultColors=n;function r(){return Lt({},fe.prototype)}i.defaultImages=r;function e(){return{catelogs:new fe,materials:new fe,images:new fe,videos:new fe,colors:new fe,audios:new fe,particles:new fe,fonts:new fe,variables:new be,userAPIs:new fe,userWebhooks:new fe,lib:Dr.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})(xr||(xr={}));import{MathUtils as Rc}from"three";var Bc;(r=>r.list=["idle","move","jump","run"])(Bc||(Bc={}));var Lc;(e=>(e.defaultColliderData={type:"capsule",height:200,radius:50,position:[0,0,0],rotation:[0,0,0]},e.defaultDataThirdPerson={moveMode:"walk",forwardDirection:"+z",speedTranslate:1e3,speedRotate:100,runMultiplier:2,rotationMode:"normal",rotBy:"keys",rotByTouch:"drag",delayPos:[.3,.3],delayRot:[.3,.3],keyAssignments:[["moveNegZ","W"],["moveNegX","A"],["movePosZ","S"],["movePosX","D"],["rotPosX","\u25B2"],["rotPosY","\u25C0"],["rotNegX","\u25BC"],["rotNegY","\u25B6"],["jump","Space"],["run","\u21E7"],["none","Ctrl"]],touchControl:!0,joystickPosLoc:5,joystickRotLoc:11,jumpTouchButtonLoc:9,collider:e.defaultColliderData,colliderHelperVisible:!0,collisionEnabled:!0,jumpPower:100,resetYPosition:3e3,alignToGround:!1,autoOrientMove:!0,orientWith:"camera",orientMode:"radial",delayPosCamera:.3,delayRotCamera:.3,camera:"",cameraXAxis:"Limit",cameraYAxis:"Free",cameraRotXLimits:[0,Math.PI/2],cameraRotYLimits:[-Math.PI/2,Math.PI/2],gameActions:{idle:new be,move:new be,jump:new be,run:new be},navmesh:{enabled:!1,ch:6,cs:6,walkableClimb:5,walkableHeight:1,walkableRadius:0,zones:"all",objects:[],helperVisible:!0,destinationHelperRadius:0,destinationHelperColor:Ie.fromHexAndA(3728051,1)}}))(Lc||(Lc={}));function ox(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={...Mr(it(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={...it(r),near:Math.max(r.near,0),far:Math.max(r.far,0)};Object.assign(r,e)}})}function Ao(n,r){Object.values(n.shared.materials).forEach(e=>r(e))}function Mo(n,r){n.scene.objects.traverse((e,t)=>{"materials"in t?t.materials.forEach((o,i)=>{o===void 0&&(t.materials[i]=It.defaultData(),o=t.materials[i]),typeof o!="string"&&r(o)}):"material"in t?typeof t.material!="string"&&(t.material===void 0&&(t.material=It.defaultData()),r(t.material)):t.type==="Mesh"&&(t.material===void 0&&(t.material=It.defaultData()),r(t.material)),"overrides"in t&&Object.values(t.overrides).forEach(o=>{o.material&&typeof o.material!="string"&&Object.getPrototypeOf(o.material)!==Qe.prototype&&r(o.material)})})}function eA(n){Object.assign(n.scene.publish,{orbitControls:{...ra.defaultData,...it(n.scene.publish.orbitControls)}})}function tA(n){Object.assign(n.scene.publish.settings,{video:{...Nr.defaultData.settings.video,...it(n.scene.publish.settings.video)}})}function rA(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(($g.includes(o)||typeof i=="boolean")&&delete t[o],o==="texture")for(let[a,s]of Object.entries(i))(Yg.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 oA(n){n.scene.publish.withBackground=!0}function nA(n){n.scene.publish.settings.web={compress:!0,preload:!0,preset:1,logo:!0,hint:!1}}function iA(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 aA(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 sA(n){n.scene.objects.traverse((r,e)=>{let t=n.scene.objects.unproxy().parent(r);if(t){let o=it(n.scene.objects.data(t));o&&o.type==="Mesh"&&o.geometry.type==="BooleanGeometry"&&e.type==="Mesh"&&(e.visible=it(e).booleanExclude!==!0)}})}function lA(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 cA(n){function r(t){Object.setPrototypeOf(t,Qe.prototype),t.texture&&Object.setPrototypeOf(t.texture,Qe.prototype)}function e(t){Object.setPrototypeOf(t,Qe.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=it(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=it(l).layers;e(c),l.layers=c}})})}function nx(n){n.layers===void 0&&Object.assign(n,It.defaultTwoLayerData("lambert"))}function cp(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={...it(r),colors:e,steps:t};Object.assign(r,o)}})}function uA(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&(e.geometry.type==="BooleanGeometry"||e.geometry.type==="SubdivGeometry")&&(e.geometry.phongAngle=35)})}function ix(n){n.scene.objects.traverse((r,e)=>{"materials"in e?e.materials.forEach(t=>{typeof t!="string"&&cp(t)}):"material"in e&&typeof e.material!="string"&&cp(e.material)}),Object.values(n.shared.materials).forEach(r=>cp(r))}function dA(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 pA(n){n.shared.audios=Lt({},fe.prototype)}function fA(n){n.shared.videos=Lt({},fe.prototype)}function hA(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 mA(n){Object.entries(it(n.shared.images)).filter(t=>t[1].asset===!1).map(t=>t[0]).forEach(t=>{delete n.shared.images[t]}),Object.entries(it(n.shared.audios)).filter(t=>t[1].asset===!1).map(t=>t[0]).forEach(t=>{delete n.shared.audios[t]})}function yA(n){n.scene.publish.settings.web.preload=!1}function ax(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 sx(n){n.layers&&n.layers.forEach(r=>{qg(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 gA(n){n.shared.fonts=Lt({},fe.prototype)}function xA(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 bA(n){let r=[];n.scene.objects.traverse((e,t)=>{let o=t;if(o.type==="TextFrame"){let i=It.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=xA(o.font);n.shared.fonts[s]===void 0&&(n.shared.fonts[s]={name:s});let l={name:o.name,...bt.defaultData,...sn.defaultData,flatShading:!1,wireframe:!1,geometry:{...Po.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:it(o.states),events:it(o.events),visible:o.visible,raycastLock:o.raycastLock,position:o.position,rotation:o.rotation,scale:o.scale,hiddenMatrix:o.hiddenMatrix},c=it(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 vA(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 be,move:new be,jump:new be}});else{let i=new be;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:Rc.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,Mr(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 be({fi:0,id:Rc.generateUUID(),data:c},{fi:1,id:Rc.generateUUID(),data:d})};i.push({fi:l,id:s,data:h})}),delete o.targets)}})})}function SA(n){n.scene.objects.traverse((r,e)=>{function t(o,i){let a=new be,s=[];if(e.events.forEach((l,c,u)=>{if(l.type==="Audio"&&l.trigger===i){let p;s.push(c),l.interaction==="play"?p={...Mr(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={...Mr(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:Rc.generateUUID(),data:{type:o,actions:a}}])}}t("Start","start"),t("MouseDown","mouseDown"),t("MouseUp","mouseUp"),t("KeyDown","keyDown"),t("KeyUp","keyUp")})}function lx(n){let r=n.layers.find(e=>e.type==="light")?.data;if(r?.category==="basic"){let e=xt.defaultData("light","phong"),t=r;Object.assign(t,e),t.visible=!1}}function cx(n){Ao(n,lx),Mo(n,lx)}function wA(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&e.geometry.type==="SubdivGeometry"&&(e.geometry.scaleBaked||(e.geometry.scaleBaked=[1,1,1]))})}function PA(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 OA(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&e.geometry.type==="NonParametricGeometry"&&!("material"in e)&&!("materials"in e)&&(e.material=It.defaultTwoLayerData("phong"))})}function CA(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 TA(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 AA(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 MA(n){let{video:r}=n.scene.publish.settings;r.format==="gif"&&r.fps>48&&(r.fps=15)}function IA(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.resetYPosition=Math.abs(t.resetYPosition-e.position[1]))})})}function NA(n){let r=n.scene.environment.usePhysics;n.scene.objects.traverse((e,t)=>{r&&t.physics===null?t.collision=!1:t.collision="visibility"})}function DA(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.navmesh=Lc.defaultDataThirdPerson.navmesh)})})}function EA(n){n.scene.styles||(n.scene.styles=Co.defaultData())}function ux(n){n.layers.forEach(r=>{r.type==="light"&&r.category!=="toon"&&r.occlusion===void 0&&(r.occlusion=!0)})}function _A(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}),Mo(n,ux),Ao(n,ux)}function BA(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&Object.assign(t.gameActions,{run:new be})})})}function LA(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.keyAssignments=[...t.keyAssignments,["run","\u21E7"],["none","Ctrl"]])})})}function dx(n){n.layers&&n.layers.forEach(r=>{r.type==="light"&&r.bumpMapIntensity===void 0&&(r.bumpMapIntensity=5)})}function px(n,r){if(r<1&&(Mo(n,ox),Ao(n,ox),n.schema=1),r<2&&(eA(n),n.schema=2),r<3&&(rA(n),n.schema=3),r<4&&(oA(n),n.schema=4),r<5&&(nA(n),n.schema=5),r<6&&(iA(n),n.schema=6),r<7&&(aA(n),n.schema=7),r<8&&(n.schema=8),r<9&&(ix(n),n.schema=9),r<10&&(uA(n),n.schema=10),r<11&&(dA(n),n.schema=11),r<12&&(ix(n),n.schema=12),r<13&&(pA(n),n.schema=13),r<14&&(hA(n),n.schema=14),r<15&&(mA(n),n.schema=15),r<16&&(yA(n),n.schema=16),r<17&&(Mo(n,ax),Ao(n,ax),n.schema=17),r<18&&(Mo(n,nx),Ao(n,nx),n.schema=18),r<19&&(tA(n),n.schema=19),r<20&&(gA(n),bA(n),n.schema=20),r<21&&(vA(n),SA(n),n.schema=21),r<22&&(cx(n),n.schema=22),r<23&&(wA(n),n.schema=23),r<24&&(PA(n),n.schema=24),(r<25||n.shared.videos===void 0)&&(fA(n),r<25&&(n.schema=25)),r<26&&(sA(n),n.schema=26),r<27&&(lA(n),n.schema=27),r<28&&(cx(n),n.schema=28),r<29&&(cA(n),n.schema=29),r<30&&(OA(n),n.schema=30),r<31&&(CA(n),n.schema=31),r<33&&(TA(n),n.schema=33),r<34&&(AA(n),n.schema=34),r<35&&(MA(n),n.schema=35),r<36&&(IA(n),n.schema=36),r<37&&(NA(n),n.schema=37),r<38&&(Mo(n,sx),Ao(n,sx),n.schema=38),r<39&&(DA(n),n.schema=39),r<40&&(EA(n),n.schema=40),r<41&&(_A(n),n.schema=41),r<42&&(BA(n),n.schema=42),r<43&&(LA(n),n.schema=43),r<99){Mo(n,dx),Ao(n,dx),n.scene.publish.playCamera===null&&(n.scene.publish.playCamera=rn);let e=it(n.scene.objects),t=n.scene.objects;n.scene.publish.playPage=on,t.insertBefore(null,null,[{id:on,data:{...Oo.defaultData,backgroundColor:n.scene.backgroundColor,fog:n.scene.fog,postprocessing:n.scene.postprocessing,ao:Mr(n.scene.environment.ambientLight,"occlusion","aoFullRes","radius","bias","aoColor"),publish:{playCamera:n.scene.publish.playCamera,gameControlObject:n.scene.publish.gameControlObject},shadow:Mr(n.scene.environment.ambientLight,"softShadowQuality"),globalPhysics:{...Ms.defaultData,...Mr(n.scene.environment,"usePhysics","gravity")},camera:it(n.scene.ownerCamera)??Oo.defaultData.camera,name:"Scene"},children:[]}]);for(let a of e)a.id!==To.TRASH_CAN_ID&&t.move(on,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,an.defaultData)),s.physics!==void 0&&s.physics!==null&&(s.physics.enabled=s.collision??"visibility",delete s.collision)}),n.schema=99}}function fx(n){n.layers&&n.layers.forEach(r=>{r.type==="light"&&r.alphaOverride===void 0&&(r.alphaOverride=1)})}function RA(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 VA(n){Array.isArray(it(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 ia=180/Math.PI;function hx(n){n.rotation=n.rotation.slice(0,3).map(r=>r*ia)}function mx(n){hx(n),n.type==="Page"&&hx(n.camera),n.states?.forEach(e=>{e.rotation===void 0||e.rotation===null||(e.rotation=e.rotation.slice(0,3).map(t=>t*ia))});let r=n.geometry;r&&r.type==="SphereGeometry"&&(r.thetaLength=(r.thetaLength??180)*ia),r&&r.type==="TorusGeometry"&&(r.arc=r.arc*ia),r&&r.type==="PathGeometry"&&(r.extrusion.angle*=ia,r.extrusion.twist*=ia),n.type==="Mesh"&&n.geometry.type==="TextGeometry"&&(n.geometry.text={textValue:n.geometry.text}),Array.isArray(it(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 GA(n){n.shared.variables=Lt({},fe.prototype)}function zA(n){let r=it(n.shared.variables);n.shared.variables=Lt(Object.entries(r??{}).map(([e,t],o)=>({fi:o,id:e,data:t})),be.prototype)}var eo=115;function yx(n,r){r(n.data);for(let e of n.children)yx(e,r)}function jA(n){let r=n.schema??104;r!==eo&&r<105&&(yx(n.asset,mx),n.schema=105)}function FA(n){n.shared.particles=Lt({},fe.prototype),n.shared.lib&&(n.shared.lib.particles=Dr.defaultData().particles)}function UA(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 kA(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 HA(n){n.scene.objects.traverse((r,e)=>{Array.isArray(it(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 WA(n){n.shared.userAPIs=Lt({},fe.prototype),n.shared.userWebhooks=Lt({},fe.prototype),n.shared.lib&&(n.shared.lib.userAPIs=Dr.defaultData().userAPIs,n.shared.lib.userWebhooks=Dr.defaultData().userWebhooks)}function Vc(n){let r=n.schema??0;if(r!==eo){console.warn("updating from ",r,"to ",eo),px(n,r),r<100&&(n.scene.publish.joystickSizeAndXYOffset===void 0&&(n.scene.publish.joystickSizeAndXYOffset=Nr.defaultData.joystickSizeAndXYOffset),n.schema=100),r<101&&(Mo(n,fx),Ao(n,fx),n.schema=101),r<102&&(RA(n),n.schema=102),r<104&&(n.shared.catelogs=new fe,n.shared.lib=Dr.defaultData(),n.schema=104),r<105&&(GA(n),n.scene.objects.traverse((e,t)=>{mx(t)}),n.schema=105);for(let e of Object.values(n.shared.lib.components))jA(e);r<106&&(zA(n),n.schema=106),r<107&&(n.shared.lib.variables=Dr.defaultData().variables,n.schema=107),r<109&&(FA(n),n.schema=109),r<110&&(UA(n),n.schema=110),r<111&&(n.scene.objects.traverse((e,t)=>{VA(t)}),n.schema=111),r<112&&(kA(n),n.schema=112),r<113&&(HA(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&&(WA(n),n.schema=115)}}var oa;(c=>{c.defaultData={schema:eo,scene:To.defaultData,frames:new fe().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",na.defaultData),shared:{...xr.emptyData(),colors:xr.defaultColors()}},c.emptyDataForImports=function(){let u=To.emptyDataWithPage();return{schema:eo,scene:u,frames:new fe().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",na.defaultData),shared:{...xr.emptyData(),colors:xr.defaultColors(),images:xr.defaultImages()}}},c.emptyData=function(){return{schema:eo,scene:To.emptyDataWithPage(),frames:new fe().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",na.defaultData),shared:xr.emptyData()}},c.clipboard2dData=function(){return{schema:eo,scene:To.emptyData(),frames:new fe,shared:xr.emptyData()}},c.collabHelper={...ws,updateSchema(u){return(u.schema??0)<eo?Ko(u,Vc):(u.schema??0)-eo}};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:Dr.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 Gc;(r=>r.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII=",name:"empty"})(Gc||(Gc={}));var gx;(r=>{function n(e){return!0}r.is=n})(gx||(gx={}));var zc;(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 Ml({position:Xi.isEqual(o.position,i.position)?void 0:i.position,rotation:o.rotation===i.rotation?void 0:i.rotation,scale:Xi.isEqual(o.scale,i.scale)?void 0:i.scale,shear:o.shear&&i.shear&&Xi.isEqual(o.shear,i.shear)?void 0:i.shear})}t.diff=e})(zc||(zc={}));var up;(r=>r.defaultData={horizontalConstraint:0,verticalConstraint:0})(up||(up={}));var xx;(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})(xx||(xx={}));var jc;(r=>r.defaultData={opacity:1,fill:{color:Ie.fromHexAndA(ht,1),enabled:!0},stroke:{color:Ie.from0to1([0,0,0,1]),thickness:1,enabled:!1,mode:"inside"},layerBlur:{radius:2,enabled:!1},backgroundBlur:{radius:2,enabled:!1},dropShadow:{offset:[10,10],blurRadius:10,color:Ie.from0to1([0,0,0,1]),enabled:!1,spread:0},innerShadow:{offset:[10,10],blurRadius:10,color:Ie.from0to1([0,0,0,1]),enabled:!1,spread:0}})(jc||(jc={}));var Wn;(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,zc.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})(Wn||(Wn={}));var Is;(r=>r.defaultData={...zc.defaultData,...up.defaultData,states:new be,events:new be,visible:!0,raycastLock:!1})(Is||(Is={}));var aa;(r=>r.defaultData={...Is.defaultData,...jc.defaultData})(aa||(aa={}));var Fc;(r=>r.defaultData={cornerRadius:[0,0,0,0]})(Fc||(Fc={}));var dp;(r=>r.defaultData={...aa.defaultData,type:"ellipse2d",width:100,height:100,name:"Ellipse"})(dp||(dp={}));var sa;(r=>r.defaultData={...aa.defaultData,...Fc.defaultData,type:"rectangle2d",width:100,height:100,name:"Rectangle"})(sa||(sa={}));var pp;(r=>r.defaultData={...aa.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"})(pp||(pp={}));var fp;(r=>r.defaultData={...aa.defaultData,type:"path2d",path:"",name:"Path"})(fp||(fp={}));var bx;(r=>{function n(e){return e.type==="ellipse2d"||e.type==="rectangle2d"||e.type==="text2d"||e.type==="vector2d"||e.type==="path2d"}r.is=n})(bx||(bx={}));var Ns;(r=>r.defaultData={...Is.defaultData,name:"Group",type:"group2d"})(Ns||(Ns={}));var hp;(r=>r.defaultData=()=>({...Is.defaultData,...Fc.defaultData,...jc.defaultData,name:"Frame",type:"frame2d",clipped:!0,width:200,height:200,fill:{color:Ie.fromHexAndA(4737101,1),enabled:!0},stroke:{color:Ie.fromHexAndA(0,1),thickness:1,enabled:!1,mode:"inside"},backgroundBlur:{radius:2,enabled:!1},layerBlur:{radius:2,enabled:!1}}))(hp||(hp={}));var Io;(i=>{function n(a){switch(a){case"rectangle2d":return{...sa.defaultData};case"ellipse2d":return{...dp.defaultData};case"text2d":return{...pp.defaultData};case"vector2d":return{...sa.defaultData};case"path2d":return{...fp.defaultData};case"frame2d":return{...hp.defaultData()};case"group2d":return{...Ns.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})(Io||(Io={}));var Uc;(e=>(e.defaultData={name:"UI",type:"scene2d",objects:new Ke},e.emptyData=function(){return{type:"scene2d",objects:new Ke}}))(Uc||(Uc={}));var ts=xi(Sx());import{Object3D as Q3,Vector3 as pr,Euler as Xf,MathUtils as av,Matrix4 as ui}from"three";var qA=.5*(Math.sqrt(3)-1),Ds=(3-Math.sqrt(3))/6,$A=1/3,to=1/6,jH=(Math.sqrt(5)-1)/4,FH=(5-Math.sqrt(5))/20,Es=n=>Math.floor(n)|0,wx=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]),yp=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 kc(n=Math.random){let r=Ox(n),e=new Float64Array(r).map(o=>wx[o%12*2]),t=new Float64Array(r).map(o=>wx[o%12*2+1]);return function(i,a){let s=0,l=0,c=0,u=(i+a)*qA,p=Es(i+u),d=Es(a+u),h=(p+d)*Ds,f=p-h,m=d-h,y=i-f,g=a-m,v,P;y>g?(v=1,P=0):(v=0,P=1);let O=y-v+Ds,S=g-P+Ds,T=y-1+2*Ds,A=g-1+2*Ds,x=p&255,E=d&255,N=.5-y*y-g*g;if(N>=0){let _=x+r[E],B=e[_],V=t[_];N*=N,s=N*N*(B*y+V*g)}let I=.5-O*O-S*S;if(I>=0){let _=x+v+r[E+P],B=e[_],V=t[_];I*=I,l=I*I*(B*O+V*S)}let D=.5-T*T-A*A;if(D>=0){let _=x+1+r[E+1],B=e[_],V=t[_];D*=D,c=D*D*(B*T+V*A)}return 70*(s+l+c)}}function Px(n=Math.random){let r=Ox(n),e=new Float64Array(r).map(i=>yp[i%12*3]),t=new Float64Array(r).map(i=>yp[i%12*3+1]),o=new Float64Array(r).map(i=>yp[i%12*3+2]);return function(a,s,l){let c,u,p,d,h=(a+s+l)*$A,f=Es(a+h),m=Es(s+h),y=Es(l+h),g=(f+m+y)*to,v=f-g,P=m-g,O=y-g,S=a-v,T=s-P,A=l-O,x,E,N,I,D,_;S>=T?T>=A?(x=1,E=0,N=0,I=1,D=1,_=0):S>=A?(x=1,E=0,N=0,I=1,D=0,_=1):(x=0,E=0,N=1,I=1,D=0,_=1):T<A?(x=0,E=0,N=1,I=0,D=1,_=1):S<A?(x=0,E=1,N=0,I=0,D=1,_=1):(x=0,E=1,N=0,I=1,D=1,_=0);let B=S-x+to,V=T-E+to,U=A-N+to,R=S-I+2*to,W=T-D+2*to,j=A-_+2*to,F=S-1+3*to,H=T-1+3*to,q=A-1+3*to,re=f&255,ee=m&255,X=y&255,te=.6-S*S-T*T-A*A;if(te<0)c=0;else{let $=re+r[ee+r[X]];te*=te,c=te*te*(e[$]*S+t[$]*T+o[$]*A)}let K=.6-B*B-V*V-U*U;if(K<0)u=0;else{let $=re+x+r[ee+E+r[X+N]];K*=K,u=K*K*(e[$]*B+t[$]*V+o[$]*U)}let Z=.6-R*R-W*W-j*j;if(Z<0)p=0;else{let $=re+I+r[ee+D+r[X+_]];Z*=Z,p=Z*Z*(e[$]*R+t[$]*W+o[$]*j)}let Q=.6-F*F-H*H-q*q;if(Q<0)d=0;else{let $=re+1+r[ee+1+r[X+1]];Q*=Q,d=Q*Q*(e[$]*F+t[$]*H+o[$]*q)}return 32*(c+u+p+d)}}function Ox(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}import{Triangle as YA}from"three";var Er=new YA,Hc=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;Er.a.fromBufferAttribute(r,o),Er.b.fromBufferAttribute(r,o+1),Er.c.fromBufferAttribute(r,o+2),i*=Er.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),Er.a.fromBufferAttribute(this.positionAttribute,r*3),Er.b.fromBufferAttribute(this.positionAttribute,r*3+1),Er.c.fromBufferAttribute(this.positionAttribute,r*3+2),e.set(0,0,0).addScaledVector(Er.a,o).addScaledVector(Er.b,i).addScaledVector(Er.c,1-(o+i)),Er.getNormal(t),this}};import{Object3D as JA}from"three";var Ax=xi(Tx());import{Object3D as XA,Matrix4 as ro}from"three";var KA=new ro,QA=new ro,ZA=new ro,la;(r=>{function n(e){return e&&e.__isSPEObject}r.is=n})(la||(la={}));var ca=n=>class extends n{constructor(){super(...arguments);this.previousModelViewMatrix=new ro;this.copyPreviousMatrix=!0;this.hiddenMatrix=new ro;this.matrixWorldRigid=new ro;this.shearScale=new ro;this.shearScaleInv=new ro}get __isSPEObject(){return!0}isDescendantOf(t){t instanceof XA&&(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)la.is(i)&&i.traverseObject(t,o+1)}traverseObject(t,o=0){if(t(this,o)!==!0)for(let a of this.children)la.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,Ax.SVD)(o),l=KA.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=QA.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=ZA.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 ro().copy(this.matrixWorld).invert();return t.parent!==null&&(t.parent.updateWorldMatrix(!0,!1),i.multiply(t.parent.matrixWorld)),"hiddenMatrix"in t&&t.hiddenMatrix instanceof ro?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 gp=class extends ca(JA){},eM=n=>n.type==="Mesh",No=class extends gp{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 No(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 eM(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}};import{Box3 as dN,BufferGeometry as pN,MeshBasicMaterial as fN}from"three";import{Matrix4 as cN,Mesh as uN}from"three";import{Matrix4 as $c,Vector3 as Nx,Euler as aM,MathUtils as Bs}from"three";import{Box3 as tM,Line3 as rM,Matrix4 as xp,Vector3 as cr}from"three";var qn=new cr,$n=new cr,ua=new xp,Ix=[new cr(-1,1,1),new cr(-1,-1,1),new cr(1,-1,1),new cr(1,1,1),new cr(-1,1,-1),new cr(-1,-1,-1),new cr(1,-1,-1),new cr(1,1,-1)],oM=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],nM=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]],Mx=(n,r,e)=>{n.updateEntityBoxSize(qn,$n),ua.copy(r).multiply(n.matrixWorld),$n.x===0&&$n.y===0&&$n.z===0?e.push(new cr(qn.x,qn.y,qn.z).applyMatrix4(ua)):Ix.forEach(t=>{e.push(t.clone().multiply($n).add(qn).applyMatrix4(ua))})},_s=class extends tM{constructor(){super(...arguments);this.matrix=new xp;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 xp().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 cr);return}Mx(a,t,i)}}):Mx(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(ua.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize($n).multiplyScalar(.5),this.getCenter(qn),ua.copy(this.matrix).setPosition(qn),this.vertices=Ix.map(e=>e.clone().multiply($n).applyMatrix4(ua))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=oM.map(([e,t])=>new rM(this.vertices[e],this.vertices[t])),this.centerEdges=this.edges.map(e=>e.getCenter(new cr))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=nM.map(([e,t])=>this.vertices[e].clone().add(this.vertices[t]).multiplyScalar(.5))}};var _r={Cloner:()=>{},changeEntityProptotype:()=>{},createEntity:()=>{}};import{CurvePath as iM,CubicBezierCurve3 as bp,Vector3 as Br}from"three";var Sp=class extends iM{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 wp=.001;function Pp(n,r,e){return r.clone().sub(n).cross(r.clone().sub(e)).length()<=wp}function vp(n,r){let e=new Br(...n.position),t=new Br(...n.controlNext.position),o=new Br(...r.controlPrevious.position),i=new Br(...r.position);return Pp(e,t,i)&&Pp(e,o,i)}function qc(n){let r=n.points.map(u=>new Br(...u.data.position)),e=[n.points[0]],t=new Br(...e[0].data.position);for(let u=0;u<n.points.length-1;u++)Pp(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 Br(...p.position),h=new Br(...p.controlPrevious.position),f=new Br(...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,P=e[g].data,O=new Br(...v.position),S=new Br(...P.position),T=O.clone().sub(d).normalize(),A=S.clone().sub(d).normalize();Object.assign(m,{prevDir:T,nextDir:A});let x=vp(v,p),E=vp(p,P);if(!x||!E)s[u]={...m,removedLength:0};else{let N=T.clone().add(A).normalize(),I=N.clone().cross(T).length()/T.dot(N);s[u]={...m,tan:I,removedLength:p.roundness/I}}}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(!vp(e[p].data,e[d].data))h.position.distanceTo(f.position)>wp&&(m=new bp(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)>wp&&(m=new bp(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,P=y.clone().multiplyScalar(Math.sqrt(Math.pow(m,2)-Math.pow(v,2))).add(g),O=y.clone().multiplyScalar(-m).add(P),S=d.distanceTo(O)/d.distanceTo(g),T=p.prevDir.clone().multiplyScalar(S*d.distanceTo(h)).add(d),A=T.clone().lerp(O,2),x=h.clone().lerp(T,4/3),E=f.clone().lerp(A,4/3);l[2*u]=new bp(h,x,E,f)}let c=new Sp;return l.forEach(u=>{u&&c.add(u)}),c}var Re;(r=>{function n(e){return e&&e.__isEntity}r.is=n})(Re||(Re={}));var da=n=>Re.is(n),sM={type:"completeState",isfromEntity:!0},lM=["x","y","z"],Op=new Nx,cM=new Nx().set(0,1,0),pa=n=>class extends ca(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 _s;this._recursiveBBox=new _s;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(Re.is(o))return o}entityChildrenCount(){let t=this.children.length;for(;t--;)if(Re.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(Re.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)Hn.toOps(this.data,a.data).forEach(l=>{let c=Wi.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=Hn.patch(this.data,a),Hn.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(Re.is(o[i]))return o[i];if(Re.is(t))return t.traverseSortNextHelper()}}sortNext(){let t=this.children;return this.children.length>0&&Re.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=>{Re.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*Bs.RAD2DEG,this.rotation.y*Bs.RAD2DEG,this.rotation.z*Bs.RAD2DEG],scale:this.scale.toArray(),hiddenMatrix:this.hiddenMatrix.toArray()};return ji(o,t)}getTransformValues(t,o,i){return o[t].map((a,s)=>i?.shared.getVariable(a,[this.uuid,t,lM[s]])??a)}updateTransformState(t,o){let i=!1;return t.position&&(this.position.fromArray(this.getTransformValues("position",t,o)),i=!0),t.rotation&&(Op.fromArray(this.getTransformValues("rotation",t,o)).multiplyScalar(Bs.DEG2RAD),this.rotation.setFromVector3(Op),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??tn.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)Re.is(t)&&t.disposeRecursively()}disposeRecursively(){this.dispose(),this.children.forEach(t=>{Re.is(t)&&t.disposeRecursively()})}toState(t=[]){let o={name:this.name,visible:this.visible,raycastLock:this.raycastLock,...this.toObjectTransformState(t)};return ji(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=Le(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=Ze.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=Ze.removeOverridden(t.path,t.props,u);l={...t,props:p}}}if(this.updateByPatchedOpBase(l,Hn.patch(this.data,this.stateSelection?this.data.states.data(this.stateSelection):void 0),i),Le(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($r.apply(h.component.data,h.overrideData),i))}}else{let d=i.scene.findInstance([this.uuid,...u]);if(d){let h=Ze.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=ta.resolve(o.overrides,u),d.updateByOp(t,nt.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 Jr.rootOverrideProps)d in t.props&&(p===void 0&&(p={}),p[d]=t.props[d]);p&&(u={...t,props:p})}else for(let p of Jr.rootOverrideProps)if(Le(t.path,[p])){u=t;break}u!==void 0&&this.instances.forEach(p=>{if(p.isInstanceRoot){let d=$r.filterOp(p.overrideData,u);d&&p.updateByOp(d,nt.applySimple(p.data,d),i,!0)}}),this.instances.forEach(p=>{if(!p.isInstanceRoot){let d=$r.filterOp(p.overrideData,t);if(d){let h;s===p.data&&t===d?h=o:h=nt.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&&!Ir.is(t.props.type)&&_r.changeEntityProptotype(this,o,i);else if(t.path.length===1&&t.path[0]==="geometry"&&t.type===0&&"type"in t.props){_r.changeEntityProptotype(this,o,i);for(let a of this.children)Re.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),Le(t.path,["pathSnapping"])!==null&&this.updatePathSnapping(o.pathSnapping),Le(t.path,["cloner"])!==null){let a=nt.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=qc(c.geometry.path),p=(i+a)%1;i+a===1&&p===0&&(p=1);let d=u.curves.length?u.getPointAt(p):null;if(d===null)return;let h=this.parent?this.parent?.matrixWorld:new $c;l.updateMatrixWorld();let f=new $c().multiplyMatrices(h.clone().invert(),l.matrixWorld);d.applyMatrix4(f);let m={position:d.toArray(),rotation:c.rotation};if(s==="tangential"){let y=new $c().extractRotation(l.matrixWorld),g=u.getTangentAt(p).applyMatrix4(y).add(d),v=new $c().lookAt(d,g,cM),P=Op.setFromEuler(new aM().setFromRotationMatrix(v)).multiplyScalar(Bs.RAD2DEG);m={...m,rotation:P.toArray()}}this.updateTransformState(m),this.traverseEntity(y=>{y._cameraType&&y.dispatchEvent(sM)})}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 _r.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 _r.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"})}};import{BufferGeometry as pM,ConeGeometry as fM,Float32BufferAttribute as hM,MathUtils as mM}from"three";import{BufferGeometry as Ex,CylinderGeometry as uM,Float32BufferAttribute as Xc,MathUtils as dM,Vector2 as Lr,Vector3 as Yc}from"three";var _x=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=dM.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 Ex,f.setAttribute("position",new Xc([],3))):p||h?f=new Ls(c,u,t,o,i,a,s,l*Math.PI/180,p,p,d,h):f=new uM(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 cn(n,r,e){e.x=n.x*r.x,e.y=n.y,e.z=n.x*r.y}function Dx(n){return new Lr(n.y,-n.x)}var Ls=class extends Ex{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,P=t/2,O=new Yc,S=new Yc;h&&r==0&&(r=c),h&&e==0&&(e=u);let T=new Lr(r,P),A=new Lr(e,-P),x=null,E=null,N=null,I=null,D=T.clone().sub(A),_=0,B=0,V=0;d>0&&(_=Math.min(r,e)*(1-d),B=r-_,V=e-_);let U=T.clone();U.x-=_;let R=Math.PI-D.angle(),W=D.angle(),j=Math.tan(W/2),F=Math.tan(R/2),H=j+F,q=d?H:F,re=d?H:j;if(c=Math.min(c,(r-B)/q,D.length()/H),u=Math.min(u,(e-V)/re,D.length()/H),c>0){let Q=c/j;x=T.clone().sub(new Lr(Q,c)),d&&(N=x.clone(),N.x-=_-H*c),T.sub(D.clone().setLength(Q))}if(u>0){let Q=u/F;E=A.clone().sub(new Lr(Q,-u)),A.add(D.clone().setLength(Q)),d&&(I=E.clone(),I.x-=_-H*u,U.sub(D.clone().setLength(Q)))}D=T.clone().sub(A);let ee=D.length()<.5,X=[];for(let Q=0;Q<=o;Q++){let $=[],ue=Q/o,le=ue*l+s,ne=new Lr(Math.sin(le),Math.cos(le));I&&E?(te($,ue,ne,R,u,I,-1,!0),te($,ue,ne,W,u,E,-1,!1)):E?(K($,ne,E.x,0,-1),te($,ue,ne,W,u,E,-1,!1)):a||K($,ne,e,V,-1);let ce=Dx(D).normalize();if(cn(ce,ne,O),!ee)for(let ae=0;ae<=i;ae++){let me=ae/i,pe=D.clone().multiplyScalar(me).add(A);cn(pe,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(N&&x?(te($,ue,ne,R,c,x,1,!1),te($,ue,ne,W,c,N,1,!0)):x?(te($,ue,ne,R,c,x,1,!1),K($,ne,x.x,0,1)):a||K($,ne,r,B,1),d&&!ee){let ae=Dx(D).multiplyScalar(-1).normalize();cn(ae,ne,O);for(let me=0;me<=i;me++){let pe=me/i,he=D.clone().multiplyScalar(-pe).add(U);cn(he,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],me=m[ne*3+2];f.push(ue,le,ce),(ae!=0||me!=0)&&f.push(le,ne,ce)}l<Math.PI*2&&(Z(-1,X[0],s),Z(1,X[X.length-1],s+l)),this.setIndex(f),this.setAttribute("position",new Xc(m,3)),this.setAttribute("normal",new Xc(y,3)),this.setAttribute("uv",new Xc(g,2));function te(Q,$,ue,le,ne,ce,ae,me){for(let pe=0;pe<p+1;pe++){let he=pe/p,xe=ae<0?he:1-he;me&&(xe-=1),xe*=le;let ye=new Lr(Math.sin(xe),Math.cos(xe)*ae),C=ye.clone().multiplyScalar(ne).add(ce);cn(C,ue,S),m.push(S.x,S.y,S.z),cn(ye,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 Yc,ae=new Lr,me=[ue,le];ne<0&&me.reverse();for(let pe of me)ae.set(pe,P*ne),cn(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 Lr(Math.sin(ue),Math.cos(ue)),ne=new Lr(-Math.cos(ue),Math.sin(ue)),ce=new Yc,ae=Q<0?(he,xe,ye)=>f.push(he,xe,ye):(he,xe,ye)=>f.push(he,ye,xe),me=new Lr((r+e+B+V)/4,0);cn(me,le,ce),m.push(ce.x,ce.y,ce.z),y.push(ne.x,0,ne.y),g.push(.5,.5);let pe=v++;for(let he of $){let xe=m.slice(he*3,he*3+3);m.push(...xe),y.push(ne.x,0,ne.y);let ye=g.slice(he*2,he*2+2);g.push(...ye),v++}for(let he=pe+1;he<v-1;he++)ae(pe,he,he+1);ae(pe,v-1,pe+1)}}};var Bx=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=mM.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 pM,d.setAttribute("position",new hM([],3))):c>0||u>0||l<360?d=new Ls(0,r/2,t,o,i,a,s,l*Math.PI/180,c,u,p,0,!0):d=new fM(r/2,t,o,i,a),d.scale(1,1,e/r),Object.assign(d,{userData:{...n,type:"ConeGeometry"}})}};import{BoxGeometry as yM,BufferGeometry as gM,Float32BufferAttribute as Cp,Vector3 as Rs}from"three";var Lx=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 yM(r,e,t,o,i,a):c=new Ap(r,e,t,o,i,a,s,l),Object.assign(c,{userData:{...n,type:"CubeGeometry"}})}},Tp=Math.PI/2,Ap=class extends gM{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 Cp(u,3)),this.setAttribute("normal",new Cp(p,3)),this.setAttribute("uv",new Cp(d,2));function f(g,v,P,O,S,T,A,x,E,N){let I=(T-2*s)/E,D=(A-2*s)/N,_=T/2-s,B=A/2-s,V=x/2,U=E+1,R=N+1,W=0,j=new Rs;for(let F=0;F<R;F++){let H=F*D-B;for(let q=0;q<U;q++){let re=q*I-_;j[g]=re*O,j[v]=H*S,j[P]=V,u.push(j.x,j.y,j.z),j[g]=0,j[v]=0,j[P]=x>0?1:-1,p.push(j.x,j.y,j.z),d.push(q/E),d.push(1-F/N),W+=1}}for(let F=0;F<N;F++)for(let H=0;H<E;H++){let q=h+H+U*F,re=h+H+U*(F+1),ee=h+(H+1)+U*(F+1),X=h+(H+1)+U*F;c.push(q,re,X),c.push(re,ee,X)}h+=W}function m(g,v,P,O,S,T,A,x,E,N){let I=(A-2*s)/N,D=A/2-s,_=x/2-s,B=E/2,V=N+1,U=0,R=new Rs,W=new Rs;for(let j=0;j<l+1;j++){let F=j/l*Tp,H=Math.sin(F)*s,q=(1-Math.cos(F))*s,re=Math.sin(F),ee=Math.cos(F);R[v]=(_+H)*S,R[P]=(B-q)*T,W[g]=0,W[v]=re*Math.sign(R[v]),W[P]=ee*Math.sign(R[P]);for(let X=0;X<V;X++){let te=X*I-D;R[g]=te*O,u.push(R.x,R.y,R.z),p.push(W.x,W.y,W.z),d.push(X/N),d.push(0),U+=1}}for(let j=0;j<l;j++)for(let F=0;F<N;F++){let H=h+F+V*j,q=h+F+V*(j+1),re=h+(F+1)+V*(j+1),ee=h+(F+1)+V*j;c.push(H,q,ee),c.push(q,re,ee)}h+=U}function y(g,v,P){let O=new Rs,S=new Rs(r/2,e/2,t/2);S.subScalar(s);let T=[],A=g*v*P>0?(E,N,I)=>c.push(E,N,I):(E,N,I)=>c.push(E,I,N);for(let E=0;E<=l;E++){let N=[],I=Tp*(1-E/l),D=Math.cos(I),_=Math.sin(I),B=0;for(let V=0;V<=E;V++){let U=Math.cos(B),R=Math.sin(B);O.x=D*U,O.y=_,O.z=D*R;let W=S.clone().addScaledVector(O,s);u.push(g*W.x,v*W.y,P*W.z),p.push(g*O.x,v*O.y,P*O.z),d.push(0,0),N.push(h++),B+=Tp/E}T.push(N)}let x=T.length-1;for(let E=0;E<x;E++){let N=T[E],I=T[E+1],D=N.length-1;A(N[0],I[1],I[0]);for(let _=1;_<=D;_++)A(N[_-1],N[_],I[_]),A(N[_],I[_+1],I[_])}}}};import{BufferGeometry as xM,Float32BufferAttribute as Mp,Triangle as bM,Vector3 as Do,Vector2 as Ip}from"three";var un=class extends xM{constructor(r=[],e=[],t="",o=1,i=.2,a=4){super(),this.type="PolyhedronGeometryRound";let s=[],l=[],c=[];u(),p(),this.setAttribute("position",new Mp(s,3)),this.setAttribute("normal",new Mp(c,3)),this.setAttribute("uv",new Mp(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 Do,m=f.clone(),y=new bM,g=i*o,v=o-g,P=a+1,O=new Do,S=(j,F)=>O.subVectors(j,F).normalize(),T=(j,F)=>Array(j).fill(void 0).map(F),A=T(r.length/3,(j,F)=>new Do().fromArray(r,F*3).setLength(o)),x=[],E=1e6;for(let j=0;j<A.length;j++){let F=A[j],H=[],q,re,ee,X=1e10,te=-1;for(;(te=e.indexOf(j,te+1))!=-1;){let $=te-te%3;q=e[$+(te+1)%3],re=e[$+(te+2)%3],ee=F.distanceToSquared(A[q]),X=Math.min(X,ee),H.push([q,re,ee])}X+=1e-6;let K=[],Z=0,Q=H.length;for(let $=0;$<Q;$++){[q,re,ee]=H[Z];let ue=x[q]?.includes(j)==!0;ee<=X&&K.push(q+ +ue*E),Z=H.findIndex(le=>le[0]==re)}x.push(K)}let N=[];{let j=0,F=0,H,q,re=h==3;for(let ee=0;ee<=a;ee++){H=ee*(ee+1)/2,q=(ee+1)*(ee+2)/2;for(let X=0;X<a-ee;X++)[j,F]=[H+X+ee+2,q+X+ee+3],N.push(H,q,...re?[F,H]:[j,q],F,j),[H,q]=[j,F];N.push(H,q,H+a+2)}}let I=f.clone(),D=f.clone(),_=f.clone(),B=f.clone(),V=f.clone(),U=[],R=T(A.length,()=>T(h,()=>f.clone()));for(let j=0;j<A.length;j++){f.copy(A[j]).normalize(),I.copy(f).multiplyScalar(v);let F=x[j];for(let K=0;K<F.length;K++){let Z=F[K],Q=F[(K+1)%h];y.setFromPointsAndIndices(A,j,Z%E,Q%E),y.b.sub(y.a).setLength(1e10).add(y.a),y.c.sub(y.a).setLength(1e10).add(y.a),y.closestPointToPoint(I,R[j][K])}let H=[],q=[],re=[],ee=new Do;a==0&&[...R[j]].reduce((K,Z)=>K.add(Z),ee).multiplyScalar(1/h);for(let K=0;K<h;K++){let Z=[],Q=(K-1+h)%h,$=R[j][Q],ue=R[j][K];f.copy($).sub(I),m.copy(ue).sub(I);let le=I.angleTo(f),ne=f.angleTo(m),ce=Math.cos(le)*g;a==0?D.copy(ee):D.copy(I).setLength(v+ce),q.push(ce);let ae=[D,$,ue];for(let me=0;me<2;me++){let pe=ae[me],he=ae[me+1];B.subVectors(pe,I),V.subVectors(he,I),_.crossVectors(B,V).normalize();for(let xe=0;xe<P;xe++){let ye=[le,ne][me]*xe/P;f.copy(B).applyAxisAngle(_,ye).add(I),H.push(f.clone()),me&&(S(f,I),Z.push([xe==0?pe:f.clone(),O.clone()]))}me&&(S(he,I),Z.push([he,O.clone()]))}re.push(Z)}U.push(re);let X=2*P,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<P;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(I).setLength(q[K]).add(I),$.push(f.clone());$.push(V)}for(let le=0;le<P;le++)$.push(H[le+P+Z]);$.push(H[Q+P]);let ue=N.map(le=>$[le]);s.push(...ue.map(le=>[le.x,le.y,le.z]).flat()),c.push(...ue.map(le=>(S(le,I),[O.x,O.y,O.z])).flat())}}let W=[];for(let j=0;j<x.length;j++)for(let F=0;F<h;F++){let H=x[j][F];if(H<E){let q=x[H].findIndex(X=>X%E==j),re=U[j][F],ee=U[H][q];for(let X=0;X<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 j,F,H,q;[j,F]=W.splice(0,2);let re=[j];for(;j!=F;)re.push(F),H=W.indexOf(F),q=H%2,F=W.splice(H-q,2)[1-q];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 Do;for(let A=0;A<s.length;A+=3){d.x=s[A+0],d.y=s[A+1],d.z=s[A+2];let x=S(d)/2/Math.PI+.5,E=T(d)/Math.PI+.5;l.push(x,1-E)}let h=new Do,f=new Do,m=new Do,y=new Do,g=new Ip,v=new Ip,P=new Ip,O=(A,x,E,N)=>{N<0&&A.x===1&&(l[x]=A.x-1),E.x===0&&E.z===0&&(l[x]=N/2/Math.PI+.5)};for(let A=0,x=0;A<s.length;A+=9,x+=6){h.set(s[A+0],s[A+1],s[A+2]),f.set(s[A+3],s[A+4],s[A+5]),m.set(s[A+6],s[A+7],s[A+8]),g.set(l[x+0],l[x+1]),v.set(l[x+2],l[x+3]),P.set(l[x+4],l[x+5]),y.copy(h).add(f).add(m).divideScalar(3);let E=S(y);O(g,x+0,h,E),O(v,x+2,f,E),O(P,x+4,m,E)}for(let A=0;A<l.length;A+=6){let x=l[A+0],E=l[A+2],N=l[A+4],I=Math.max(x,E,N),D=Math.min(x,E,N);I>.9&&D<.1&&(x<.2&&(l[A+0]+=1),E<.2&&(l[A+2]+=1),N<.2&&(l[A+4]+=1))}function S(A){return Math.atan2(A.z,-A.x)}function T(A){return Math.atan2(-A.y,Math.sqrt(A.x*A.x+A.z*A.z))}}}static fromJSON(r){return new un(r.vertices,r.indices,r.radius,r.corner,r.cornerSides)}};import{DodecahedronGeometry as vM}from"three";var Rx=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 Vs(r*.5,i,a):new vM(r*.5,o);return s.scale(1,e/r,t/r),Object.assign(s,{userData:{...n,type:"DodecahedronGeometry"}})}},Vs=class extends un{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 Vs(r.radius,r.corner,r.cornerSides)}};import{Plane as DM,Shape as Qx,Vector2 as Eo,Vector3 as EM,MathUtils as Rp,LineCurve as Vp,QuadraticBezierCurve as Zx,CubicBezierCurve as Jc}from"three";import{CubicBezierCurve as Kc,EllipseCurve as SM,LineCurve as Qc,LineCurve3 as wM,MathUtils as PM,QuadraticBezierCurve as Dp,SplineCurve as OM,Vector2 as kt,Vector3 as zx}from"three";var Gs=1e-12,fa=class{constructor(r){this.position=new kt;this.startPosition=new kt;this.uuid=PM.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 fa(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},ha=class extends fa{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new ha(this.parent).copy(this)}},Rr=class extends fa{constructor(e,t){super(t);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new ha(this),new ha(this))}static create(e,t){let o=new Rr(e,new kt(...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 Rr(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 kt,t=new kt){let[o,i]=this.computeTangents();return o&&i&&(Vx(o,e),Vx(i,t)),[e,t]}computeTangent(e=new kt){let[t,o]=this.computeTangents();return t&&o&&e.copy(t).add(o).normalize(),e}computeNormal(e=new kt){let[t,o]=this.computeNormals();return e.copy(t).add(o).normalize(),e}};function Vx(n,r=new kt){let e=n.length();return r.set(-n.y/e,n.x/e)}var Ep=n=>n,ma=new kt,Zc=new kt,CM=new kt,TM=new kt,AM=new kt,MM=new kt,jx=new zx,Fx=new zx;function Ux(n){let r=new kt;r.addVectors(n.v0,ma.subVectors(n.v1,n.v0).multiplyScalar(2/3));let e=new kt;return e.addVectors(n.v2,Zc.subVectors(n.v1,n.v2).multiplyScalar(2/3)),new Kc(n.v0,r,e,n.v2)}function zs(n,r,e=Number.EPSILON){return Math.abs(n-r)<e}function IM(n,r,e=Number.EPSILON){return n.distanceTo(r)<e}function NM(n,r,e=Number.EPSILON){return n.distanceTo(r)<e}function _p(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 kx(n,r,e){return Gx(n,r)&&Gx(r,e)&&Np(n.position,r.position,e.position)}function Np(n,r,e){return ma.copy(r).sub(n).cross(Zc.copy(e).sub(n))===0}function Hx(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 Wx(n,r,e){let t=n.distanceTo(e),o=r.distanceTo(e);return t<o?r:n}function qx(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 _p(r,n,e)>Math.PI&&(u*=-1),zs(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 Bp(n,r){return n.position.equals(n.controls[1].position)&&r.position.equals(r.controls[0].position)}function Gx(n,r){return Np(n.position,n.controls[1].position,r.position)&&Np(n.position,r.controls[0].position,r.position)}function $x(n,r,e,t,o=.5){let i=ma.subVectors(r,n).multiplyScalar(o).add(n),a=Zc.subVectors(e,r).multiplyScalar(o).add(r),s=CM.subVectors(t,e).multiplyScalar(o).add(e),l=i,c=TM.subVectors(a,i).multiplyScalar(o).add(i),u=AM.subVectors(s,a).multiplyScalar(o).add(a),p=s,d=MM.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 Yx(n,r,e=12,t=!0){let o=Fx.set(0,0,0),i,a=0,s=[];for(let l=0;l<r.length;l++){let c=Ep(r[l]),u=ma,p=dn(c,e);s.push(p);for(let d=0;d<=p;d++)if(c instanceof Kc||c instanceof Dp||c instanceof Qc){if(c.getPoint(d/p,u),o.set(u.x,u.y,0),i!==void 0&&NM(i,o))continue;i===void 0&&(i=jx),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 Xx(n,r,e,t=12,o=!0){let i=Fx.set(0,0,0),a=0,s=[];for(let l=0;l<r.length;l++){if(e[l]===!1)continue;let c,u=Ep(r[l]),p=ma,d=dn(u,t);s.push(d);for(let h=0;h<=d;h++)if(u instanceof Kc||u instanceof Dp||u instanceof Qc){if(u.getPoint(h/d,p),i.set(p.x,p.y,0),c?.equals(i))continue;c===void 0?c=jx:(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 Lp(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=dn(a.roundedCurveCorner,r)*.5;o>0&&(t[o-1]+=l),s+=l}a.curveAfter!==void 0&&(s+=dn(a.curveAfter,r)),t.push(s)}return n.length>0&&e&&n[0].roundedCurveCorner!==void 0&&(t[n.length-1]+=dn(n[0].roundedCurveCorner,r)*.5),t}function dn(n,r=12){return n&&n instanceof SM?r*2:n&&(n instanceof Qc||n instanceof wM)?1:n&&n instanceof OM?r*n.points.length:r}function Kx(n,r,e=12,t=!0){let o,i=0;for(let a=0;a<r.length;a++){let s=Ep(r[a]),l=dn(s,e),c=ma;for(let u=0;u<=l;u++)if(s instanceof Kc||s instanceof Dp||s instanceof Qc){if(s.getPoint(u/l,c),o!==void 0&&IM(o,c,Gs))continue;o===void 0&&(o=Zc),o.copy(c),n.push(c.x,c.y),i++}}return zs(n[0],n[n.length-2],Gs)&&zs(n[1],n[n.length-1],Gs)&&(n.pop(),n.pop()),t&&i>1&&!(zs(n[i-1],n[1],Gs)&&zs(n[i-2],n[0],Gs))&&(n.push(n[0],n[1]),i++),n}var Gp=new Eo,_M=new Eo,BM=new Eo,LM=new Eo,RM=new Eo,VM=new Eo,Fe=class extends Qx{constructor(e=100,t=100){super();this.points=[];this.shapeHoles=[];this.plane=new DM(new EM(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=Rp.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=t}static createFromState(e,t,o){let i=new Fe;return i.isClosed=e.isClosed,i.points=e.points.map(a=>Rr.create(a.id,a.data)),typeof e.roundness=="number"&&(i.roundness=e.roundness),i.shapeHoles=e.shapeHoles.map(a=>Fe.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=Gp.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=Rp.generateUUID()){let i;e instanceof Eo?i=e:i=new Eo(e,t);let a=new Rr(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 Yx(e,o?this.roundedCurves:this.curves,t,this.autoClose),i.reduce((a,s)=>a+s,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=Lp(this.points,e,!1),this.roundedCurveDivisions=Lp(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,t,o=12){return Xx(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),Kx(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=dn(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(Bp(i,a)){let p=i.position.distanceTo(a.position);return i.position.distanceTo(Gp.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){Bp(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&&kx(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),P=Math.min(g,v),O=1-P/m,S=P/y,T=p.getPointAt(O,Gp),A=d.getPointAt(S,_M);this._subSplitCurve(p,h,O,T,void 0),this._subSplitCurve(d,f,S,void 0,A);let x;if(this.useCubicForRoundedCorners){let E=_p(T,a.position,A)/2,N=Math.tan(E)*T.distanceTo(a.position),[I,D]=Hx(T,A,N,BM,LM),_=Wx(I,D,a.position),[B,V]=qx(_,T,A,N,RM,VM);x=new Jc(T.clone(),B.clone(),V.clone(),A.clone())}else x=new Zx(T.clone(),a.position.clone(),A.clone());a.roundedCurveCorner=x,this.roundedCurves.splice(o+t,0,x),t++}}}}_subSplitCurve(e,t,o,i,a){if(e instanceof Vp)i!==void 0&&t.v2.copy(i),a!==void 0&&t.v1.copy(a);else{let s=e,l=t,c=s.getUtoTmapping(o,0),u=$x(s.v0,s.v1,s.v2,s.v3,c);return i!==void 0&&(l.v0.set(u[0],u[1]),l.v1.set(u[2],u[3]),l.v2.set(u[4],u[5]),l.v3.set(u[6],u[7])),a!==void 0&&(l.v0.set(u[6],u[7]),l.v1.set(u[8],u[9]),l.v2.set(u[10],u[11]),l.v3.set(u[12],u[13])),l}return t}clone(){let e=new Fe(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 Rr(Rp.generateUUID(),new Eo(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 Fe;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 Jc&&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 Zx&&(a[l]=Ux(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 Jc?(f=this.createPoint(d.v0),f.controls[1].position.copy(d.v1)):d instanceof Vp&&(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 Jc?u.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(u.v2),p=!0):u instanceof Vp&&u.v2.equals(s[0].position)&&(p=!0),this.isClosed=p,s};return this.points=i(e.curves),e instanceof Qx&&(this.shapeHoles=e.holes.map(a=>{let s=new Fe;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 jp=Math.PI*2;function zp({x:n,y:r},e,t,o,i){return{x:n*e+o,y:r*t+i}}function GM(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 Jx(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 zM(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,P=(a-m)/o,O=(s-y)/i,S=(-a-m)/o,T=(-s-y)/i,A=Jx(1,0,P,O),x=Jx(P,O,S,T);return!c&&x>0&&(x-=jp),c&&x<0&&(x+=jp),{centerx:g,centery:v,ang1:A,ang2:x}}function e0({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=zM(n,r,e,t,o,i,c,u,a,s),{ang1:h,ang2:f}=d,{centerx:m,centery:y}=d,g=Math.abs(f)/(jp/4);Math.abs(1-g)<1e-7&&(g=1);let v=Math.max(Math.ceil(g),1);f/=v;for(let P=0;P<v;P++)l.push(GM(h,f)),h+=f;return l.map(P=>{let{x:O,y:S}=zp(P[0],o,i,m,y),{x:T,y:A}=zp(P[1],o,i,m,y),{x,y:E}=zp(P[2],o,i,m,y);return{x1:O,y1:S,x2:T,y2:A,x,y:E}})}import{BufferAttribute as nu,BufferGeometry as QM}from"three";var ze;(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"})(ze||(ze={}));var at;(function(n){n[n.POLYGONS=0]="POLYGONS",n[n.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",n[n.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(at||(at={}));function we(n,r){if(!n)throw r||"Assertion Failed!"}var ve=function(){function n(){}return n.vertEq=function(r,e){return r.s===e.s&&r.t===e.t},n.vertLeq=function(r,e){return r.s<e.s||r.s===e.s&&r.t<=e.t},n.transLeq=function(r,e){return r.t<e.t||r.t===e.t&&r.s<=e.s},n.edgeGoesLeft=function(r){return n.vertLeq(r.Dst,r.Org)},n.edgeGoesRight=function(r){return n.vertLeq(r.Org,r.Dst)},n.vertL1dist=function(r,e){return Math.abs(r.s-e.s)+Math.abs(r.t-e.t)},n.edgeEval=function(r,e,t){we(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){we(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){we(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){we(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}(),js=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}(),eu=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}(),ya=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}(),t0=function(){function n(){var r=new ya,e=new js,t=new eu(0),o=new eu(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 eu(0),t=new eu(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;we(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;we(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 ya,e=new ya,t=new js,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 ya;this.makeVertex_(i,e,r.Org),r.Org.anEdge=r}if(!t){var a=new js;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 js;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 ya;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 js;this.makeFace_(a,o,r.Lface)}return o},n.prototype.zapFace=function(r){var e=r.anEdge,t,o,i,a,s;o=e.Lnext;do t=o,o=t.Lnext,t.Lface=null,t.Rface===null&&(t.Onext===t?this.killVertex_(t.Org,null):(t.Org.anEdge=t.Onext,this.splice_(t,t.Oprev)),i=t.Sym,i.Onext===i?this.killVertex_(i.Org,null):(i.Org.anEdge=i.Onext,this.splice_(i,i.Oprev)),this.killEdge_(t));while(t!=e);a=r.prev,s=r.next,s.prev=a,a.next=s},n.prototype.countFaceVerts_=function(r){var e=r.anEdge,t=0;do t++,e=e.Lnext;while(e!==r.anEdge);return t},n.prototype.mergeConvexFaces=function(r){var e,t,o,i,a,s,l;for(e=this.fHead.next;e!==this.fHead;e=e.next)if(!!e.inside)for(t=e.anEdge,a=t.Org;o=t.Lnext,i=t.Sym,i&&i.Lface&&i.Lface.inside&&(s=this.countFaceVerts_(e),l=this.countFaceVerts_(i.Lface),s+l-2<=r&&ve.vertCCW(t.Lprev.Org,t.Org,i.Lnext.Lnext.Org)&&ve.vertCCW(i.Lprev.Org,i.Org,t.Lnext.Lnext.Org)&&(o=i.Lnext,this.delete(i),t=null,i=null)),!(t&&t.Lnext.Org===a);)t=o;return!0},n.prototype.check=function(){var r=this.fHead,e=this.vHead,t=this.eHead,o,i,a,s,l,c;for(i=r,i=r;(o=i.next)!==r;i=o){we(o.prev===i),l=o.anEdge;do we(l.Sym!==l),we(l.Sym.Sym===l),we(l.Lnext.Onext.Sym===l),we(l.Onext.Sym.Lnext===l),we(l.Lface===o),l=l.Lnext;while(l!==o.anEdge)}for(we(o.prev===i&&o.anEdge===null),s=e,s=e;(a=s.next)!==e;s=a){we(a.prev===s),l=a.anEdge;do we(l.Sym!==l),we(l.Sym.Sym===l),we(l.Lnext.Onext.Sym===l),we(l.Onext.Sym.Lnext===l),we(l.Org===a),l=l.Onext;while(l!==a.anEdge)}for(we(a.prev===s&&a.anEdge===null),c=t,c=t;(l=c.next)!==t;c=l)we(l.Sym.next===c.Sym),we(l.Sym!==l),we(l.Sym.Sym===l),we(l.Org!==null),we(l.Dst!==null),we(l.Lnext.Onext.Sym===l),we(l.Onext.Sym.Lnext===l);we(l.Sym.next===c.Sym&&l.Sym===this.eHeadSym&&l.Sym.Sym===l&&l.Org===null&&l.Dst===null&&l.Lface===null&&l.Rface===null)},n}(),r0=function(){function n(){this.handle=null}return n}(),o0=function(){function n(){this.key=null,this.node=0}return n}(),jM=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 r0,this.handles[t]=new o0;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,we(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 r0;for(i=this.handles.length,this.handles.length=this.max+1,o=i;o<this.handles.length;o++)this.handles[o]=new o0}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;we(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}(),Fp=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}(),n0=function(){function n(){this.key=null,this.next=null,this.prev=null}return n}(),FM=function(){function n(r,e){this.frame=r,this.leq=e,this.head=new n0,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 n0;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}(),UM=function(){function n(){}return n.regionBelow=function(r){return r.nodeUp.prev.key},n.regionAbove=function(r){return r.nodeUp.next.key},n.debugEvent=function(r){},n.addWinding=function(r,e){r.winding+=e.winding,r.Sym.winding+=e.Sym.winding},n.edgeLeq=function(r,e,t){var o=r.event,i=e.eUp,a=t.eUp;if(i.Dst===o)return a.Dst===o?ve.vertLeq(i.Org,a.Org)?ve.edgeSign(a.Dst,i.Org,a.Org)<=0:ve.edgeSign(i.Dst,a.Org,i.Org)>=0:ve.edgeSign(a.Dst,o,a.Org)<=0;if(a.Dst===o)return ve.edgeSign(i.Dst,o,i.Org)>=0;var s=ve.edgeEval(i.Dst,o,i.Org),l=ve.edgeEval(a.Dst,o,a.Org);return s>=l},n.deleteRegion=function(r,e){e.fixUpperEdge&&we(e.eUp.winding===0),e.eUp.activeRegion=null,r.dict.delete(e.nodeUp)},n.fixUpperEdge=function(r,e,t){we(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 Fp;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 ze.ODD:return(e&1)!==0;case ze.NONZERO:return e!==0;case ze.POSITIVE:return e>0;case ze.NEGATIVE:return e<0;case ze.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 we(ve.vertLeq(c.Org,c.Dst)),n.addRegionBelow(r,e,c.Sym),c=c.Onext;while(c!==o);for(i===null&&(i=n.regionBelow(e).eUp.Rprev),l=e,u=i;s=n.regionBelow(l),c=s.eUp.Sym,c.Org===u.Org;)c.Onext!==u&&(r.mesh.splice(c.Oprev,c),r.mesh.splice(u.Oprev,c)),s.windingNumber=l.windingNumber-c.winding,s.inside=n.isWindingInside(r,s.windingNumber),l.dirty=!0,!p&&n.checkForRightSplice(r,l)&&(n.addWinding(c,u),n.deleteRegion(r,l),r.mesh.delete(u)),p=!1,l=s,u=c;l.dirty=!0,we(l.windingNumber-c.winding===s.windingNumber),a&&n.walkDirtyRegions(r,l)},n.spliceMergeVertices=function(r,e,t){r.mesh.splice(e,t)},n.vertexWeights=function(r,e,t){var o=ve.vertL1dist(e,r),i=ve.vertL1dist(t,r),a=.5*i/(o+i),s=.5*o/(o+i);r.coords[0]+=a*e.coords[0]+s*t.coords[0],r.coords[1]+=a*e.coords[1]+s*t.coords[1],r.coords[2]+=a*e.coords[2]+s*t.coords[2]},n.getIntersectData=function(r,e,t,o,i,a){e.coords[0]=e.coords[1]=e.coords[2]=0,e.idx=-1,n.vertexWeights(e,t,o),n.vertexWeights(e,i,a)},n.checkForRightSplice=function(r,e){var t=n.regionBelow(e),o=e.eUp,i=t.eUp;if(ve.vertLeq(o.Org,i.Org)){if(ve.edgeSign(i.Dst,o.Org,i.Org)>0)return!1;ve.vertEq(o.Org,i.Org)?o.Org!==i.Org&&(r.pq.delete(o.Org.pqHandle),n.spliceMergeVertices(r,i.Oprev,o)):(r.mesh.splitEdge(i.Sym),r.mesh.splice(o,i.Oprev),e.dirty=t.dirty=!0)}else{if(ve.edgeSign(o.Dst,i.Org,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,r.mesh.splitEdge(o.Sym),r.mesh.splice(i.Oprev,o)}return!0},n.checkForLeftSplice=function(r,e){var t=n.regionBelow(e),o=e.eUp,i=t.eUp,a;if(we(!ve.vertEq(o.Dst,i.Dst)),ve.vertLeq(o.Dst,i.Dst)){if(ve.edgeSign(o.Dst,i.Dst,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,a=r.mesh.splitEdge(o),r.mesh.splice(i.Sym,a),a.Lface.inside=e.inside}else{if(ve.edgeSign(i.Dst,o.Dst,i.Org)>0)return!1;e.dirty=t.dirty=!0,a=r.mesh.splitEdge(i),r.mesh.splice(o.Lnext,i.Sym),a.Rface.inside=e.inside}return!0},n.checkForIntersect=function(r,e){var t=n.regionBelow(e),o=e.eUp,i=t.eUp,a=o.Org,s=i.Org,l=o.Dst,c=i.Dst,u,p,d=new ya,h,f;if(we(!ve.vertEq(c,l)),we(ve.edgeSign(l,r.event,a)<=0),we(ve.edgeSign(c,r.event,s)>=0),we(a!==r.event&&s!==r.event),we(!e.fixUpperEdge&&!t.fixUpperEdge),a===s||(u=Math.min(a.t,l.t),p=Math.max(s.t,c.t),u>p))return!1;if(ve.vertLeq(a,s)){if(ve.edgeSign(c,a,s)>0)return!1}else if(ve.edgeSign(l,s,a)<0)return!1;return n.debugEvent(r),ve.intersect(l,a,c,s,d),we(Math.min(a.t,l.t)<=d.t),we(d.t<=Math.max(s.t,c.t)),we(Math.min(c.s,l.s)<=d.s),we(d.s<=Math.max(s.s,a.s)),ve.vertLeq(d,r.event)&&(d.s=r.event.s,d.t=r.event.t),h=ve.vertLeq(a,s)?a:s,ve.vertLeq(h,d)&&(d.s=h.s,d.t=h.t),ve.vertEq(d,a)||ve.vertEq(d,s)?(n.checkForRightSplice(r,e),!1):!ve.vertEq(l,r.event)&&ve.edgeSign(l,r.event,d)>=0||!ve.vertEq(c,r.event)&&ve.edgeSign(c,r.event,d)<=0?c===r.event?(r.mesh.splitEdge(o.Sym),r.mesh.splice(i.Sym,o),e=n.topLeftRegion(r,e),o=n.regionBelow(e).eUp,n.finishLeftRegions(r,n.regionBelow(e),t),n.addRightEdges(r,e,o.Oprev,o,o,!0),!0):l===r.event?(r.mesh.splitEdge(i.Sym),r.mesh.splice(o.Lnext,i.Oprev),t=e,e=n.topRightRegion(e),f=n.regionBelow(e).eUp.Rprev,t.eUp=i.Oprev,i=n.finishLeftRegions(r,t,null),n.addRightEdges(r,e,i.Onext,o.Rprev,f,!0),!0):(ve.edgeSign(l,r.event,d)>=0&&(n.regionAbove(e).dirty=e.dirty=!0,r.mesh.splitEdge(o.Sym),o.Org.s=r.event.s,o.Org.t=r.event.t),ve.edgeSign(c,r.event,d)<=0&&(e.dirty=t.dirty=!0,r.mesh.splitEdge(i.Sym),i.Org.s=r.event.s,i.Org.t=r.event.t),!1):(r.mesh.splitEdge(o.Sym),r.mesh.splitEdge(i.Sym),r.mesh.splice(i.Oprev,o),o.Org.s=d.s,o.Org.t=d.t,o.Org.pqHandle=r.pq.insert(o.Org),n.getIntersectData(r,o.Org,a,l,s,c),n.regionAbove(e).dirty=e.dirty=t.dirty=!0,!1)},n.walkDirtyRegions=function(r,e){for(var t=n.regionBelow(e),o,i;;){for(;t.dirty;)e=t,t=n.regionBelow(t);if(!e.dirty&&(t=e,e=n.regionAbove(e),e===null||!e.dirty))return;if(e.dirty=!1,o=e.eUp,i=t.eUp,o.Dst!==i.Dst&&n.checkForLeftSplice(r,e)&&(t.fixUpperEdge?(n.deleteRegion(r,t),r.mesh.delete(i),t=n.regionBelow(e),i=t.eUp):e.fixUpperEdge&&(n.deleteRegion(r,e),r.mesh.delete(o),e=n.regionAbove(t),o=e.eUp)),o.Org!==i.Org)if(o.Dst!==i.Dst&&!e.fixUpperEdge&&!t.fixUpperEdge&&(o.Dst===r.event||i.Dst===r.event)){if(n.checkForIntersect(r,e))return}else n.checkForRightSplice(r,e);o.Org===i.Org&&o.Dst===i.Dst&&(n.addWinding(i,o),n.deleteRegion(r,e),r.mesh.delete(o),e=n.regionAbove(t))}},n.connectRightVertex=function(r,e,t){var o,i=t.Onext,a=n.regionBelow(e),s=e.eUp,l=a.eUp,c=!1;if(s.Dst!==l.Dst&&n.checkForIntersect(r,e),ve.vertEq(s.Org,r.event)&&(r.mesh.splice(i.Oprev,s),e=n.topLeftRegion(r,e),i=n.regionBelow(e).eUp,n.finishLeftRegions(r,n.regionBelow(e),a),c=!0),ve.vertEq(l.Org,r.event)&&(r.mesh.splice(t,l.Oprev),t=n.finishLeftRegions(r,a,null),c=!0),c){n.addRightEdges(r,e,t.Onext,i,i,!0);return}ve.vertLeq(l.Org,s.Org)?o=l.Oprev:o=s,o=r.mesh.connect(t.Lprev,o),n.addRightEdges(r,e,o,o.Onext,o.Onext,!1),o.Sym.activeRegion.fixUpperEdge=!0,n.walkDirtyRegions(r,e)},n.connectLeftDegenerate=function(r,e,t){var o,i,a,s,l;if(o=e.eUp,ve.vertEq(o.Org,t)){we(!1),n.spliceMergeVertices(r,o,t.anEdge);return}if(!ve.vertEq(o.Dst,t)){r.mesh.splitEdge(o.Sym),e.fixUpperEdge&&(r.mesh.delete(o.Onext),e.fixUpperEdge=!1),r.mesh.splice(t.anEdge,o),n.sweepEvent(r,t);return}we(!1),e=n.topRightRegion(e),l=n.regionBelow(e),a=l.eUp.Sym,i=s=a.Onext,l.fixUpperEdge&&(we(i!==a),n.deleteRegion(r,l),r.mesh.delete(a),a=i.Oprev),r.mesh.splice(t.anEdge,a),ve.edgeGoesLeft(i)||(i=null),n.addRightEdges(r,e,a.Onext,s,i,!0)},n.connectLeftVertex=function(r,e){var t,o,i,a,s,l,c=new Fp;if(c.eUp=e.anEdge.Sym,t=r.dict.search(c).key,o=n.regionBelow(t),!!o){if(a=t.eUp,s=o.eUp,ve.edgeSign(a.Dst,e,a.Org)===0){n.connectLeftDegenerate(r,t,e);return}if(i=ve.vertLeq(s.Dst,a.Dst)?t:o,t.inside||i.fixUpperEdge){if(i===t)l=r.mesh.connect(e.anEdge.Sym,a.Lnext);else{var u=r.mesh.connect(s.Dnext,e.anEdge);l=u.Sym}i.fixUpperEdge?n.fixUpperEdge(r,i,l):n.computeWinding(r,n.addRegionBelow(r,t,l)),n.sweepEvent(r,e)}else n.addRightEdges(r,t,e.anEdge,e.anEdge,null,!0)}},n.sweepEvent=function(r,e){r.event=e,n.debugEvent(r);for(var t=e.anEdge;t.activeRegion===null;)if(t=t.Onext,t===e.anEdge){n.connectLeftVertex(r,e);return}var o=n.topLeftRegion(r,t.activeRegion);we(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 Fp,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 FM(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||(we(e.fixUpperEdge),we(++t===1)),we(e.windingNumber===0),n.deleteRegion(r,e)},n.removeDegenerateEdges=function(r){var e,t,o,i=r.mesh.eHead;for(e=i.next;e!==i;e=t)t=e.next,o=e.Lnext,ve.vertEq(e.Org,e.Dst)&&e.Lnext.Lnext!==e&&(n.spliceMergeVertices(r,o,e),r.mesh.delete(e),e=o,o=e.Lnext),o.Lnext===e&&(o!==e&&((o===t||o===t.Sym)&&(t=t.next),r.mesh.delete(o)),(e===t||e===t.Sym)&&(t=t.next),r.mesh.delete(e))},n.initPriorityQ=function(r){var e,t,o,i=0;for(o=r.mesh.vHead,t=o.next;t!==o;t=t.next)i++;for(i+=8,e=r.pq=new jM(i,ve.vertLeq),o=r.mesh.vHead,t=o.next;t!==o;t=t.next)t.pqHandle=e.insert(t);return t!==o?!1:(e.init(),!0)},n.donePriorityQ=function(r){r.pq=null},n.removeDegenerateFaces=function(r,e){var t,o,i;for(t=e.fHead.next;t!==e.fHead;t=o)o=t.next,i=t.anEdge,we(i.Lnext!==i),i.Lnext.Lnext===i&&(n.addWinding(i.Onext,i),r.mesh.delete(i));return!0},n.computeInterior=function(r,e){e===void 0&&(e=!0);var t,o;if(n.removeDegenerateEdges(r),!n.initPriorityQ(r))return!1;for(n.initEdgeDict(r);(t=r.pq.extractMin())!==null;){for(;o=r.pq.min(),!(o===null||!ve.vertEq(o,t));)o=r.pq.extractMin(),n.spliceMergeVertices(r,t.anEdge,o.anEdge);n.sweepEvent(r,t)}return r.event=r.dict.min().key.eUp.Org,n.debugEvent(r),n.doneEdgeDict(r),n.donePriorityQ(r),n.removeDegenerateFaces(r,r.mesh)?(e&&r.mesh.check(),!0):!1},n}(),kM=function(){function n(){this.mesh=new t0,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=ze.ODD,this.dict=null,this.pq=null,this.event=null,this.vertexIndexCounter=0,this.vertices=[],this.vertexIndices=[],this.vertexCount=0,this.elements=[],this.elementCount=0}return n.prototype.dot_=function(r,e){return r[0]*e[0]+r[1]*e[1]+r[2]*e[2]},n.prototype.normalize_=function(r){var e=r[0]*r[0]+r[1]*r[1]+r[2]*r[2];if(!e)throw"Zero-size vector!";e=Math.sqrt(e),r[0]/=e,r[1]/=e,r[2]/=e},n.prototype.longAxis_=function(r){var e=0;return Math.abs(r[1])>Math.abs(r[0])&&(e=1),Math.abs(r[2])>Math.abs(r[e])&&(e=2),e},n.prototype.computeNormal_=function(r){var e,t,o,i,a,s,l=[0,0,0],c=[0,0,0],u=[0,0,0],p=[0,0,0],d=[0,0,0],h=[null,null,null],f=[null,null,null],m=this.mesh.vHead;e=m.next;for(var y=0;y<3;++y)i=e.coords[y],c[y]=i,f[y]=e,l[y]=i,h[y]=e;for(e=m.next;e!==m;e=e.next)for(var g=0;g<3;++g)i=e.coords[g],i<c[g]&&(c[g]=i,f[g]=e),i>l[g]&&(l[g]=i,h[g]=e);var v=0;if(l[1]-c[1]>l[0]-c[0]&&(v=1),l[2]-c[2]>l[v]-c[v]&&(v=2),c[v]>=l[v]){r[0]=0,r[1]=0,r[2]=1;return}for(s=0,t=f[v],o=h[v],u[0]=t.coords[0]-o.coords[0],u[1]=t.coords[1]-o.coords[1],u[2]=t.coords[2]-o.coords[2],e=m.next;e!==m;e=e.next)p[0]=e.coords[0]-o.coords[0],p[1]=e.coords[1]-o.coords[1],p[2]=e.coords[2]-o.coords[2],d[0]=u[1]*p[2]-u[2]*p[1],d[1]=u[2]*p[0]-u[0]*p[2],d[2]=u[0]*p[1]-u[1]*p[0],a=d[0]*d[0]+d[1]*d[1]+d[2]*d[2],a>s&&(s=a,r[0]=d[0],r[1]=d[1],r[2]=d[2]);s<=0&&(r[0]=r[1]=r[2]=0,r[this.longAxis_(u)]=1)},n.prototype.checkOrientation_=function(){for(var r=this.mesh.fHead,e,t=this.mesh.vHead,o,i=0,a=r.next;a!==r;a=a.next)if(o=a.anEdge,!(o.winding<=0))do i+=(o.Org.s-o.Dst.s)*(o.Org.t+o.Dst.t),o=o.Lnext;while(o!==a.anEdge);if(i<0){for(e=t.next;e!==t;e=e.next)e.t=-e.t;this.tUnit[0]=-this.tUnit[0],this.tUnit[1]=-this.tUnit[1],this.tUnit[2]=-this.tUnit[2]}},n.prototype.projectPolygon_=function(){var r=this.mesh.vHead,e=[0,0,0],t,o,i=!1;e[0]=this.normal[0],e[1]=this.normal[1],e[2]=this.normal[2],!e[0]&&!e[1]&&!e[2]&&(this.computeNormal_(e),i=!0),t=this.sUnit,o=this.tUnit;var a=this.longAxis_(e);t[a]=0,t[(a+1)%3]=1,t[(a+2)%3]=0,o[a]=0,o[(a+1)%3]=0,o[(a+2)%3]=e[a]>0?1:-1;for(var s=r.next;s!==r;s=s.next)s.s=this.dot_(s.coords,t),s.t=this.dot_(s.coords,o);i&&this.checkOrientation_();for(var l=!0,c=r.next;c!==r;c=c.next)l?(this.bmin[0]=this.bmax[0]=c.s,this.bmin[1]=this.bmax[1]=c.t,l=!1):(c.s<this.bmin[0]&&(this.bmin[0]=c.s),c.s>this.bmax[0]&&(this.bmax[0]=c.s),c.t<this.bmin[1]&&(this.bmin[1]=c.t),c.t>this.bmax[1]&&(this.bmax[1]=c.t))},n.prototype.addWinding_=function(r,e){r.winding+=e.winding,r.Sym.winding+=e.Sym.winding},n.prototype.tessellateMonoRegion_=function(r,e){var t,o;if(t=e.anEdge,!(t.Lnext!==t&&t.Lnext.Lnext!==t))throw"Mono region invalid";for(;ve.vertLeq(t.Dst,t.Org);t=t.Lprev);for(;ve.vertLeq(t.Org,t.Dst);t=t.Lnext);o=t.Lprev;for(var i=void 0;t.Lnext!==o;)if(ve.vertLeq(t.Dst,o.Org)){for(;o.Lnext!==t&&(ve.edgeGoesLeft(o.Lnext)||ve.edgeSign(o.Org,o.Dst,o.Lnext.Dst)<=0);)i=r.connect(o.Lnext,o),o=i.Sym;o=o.Lprev}else{for(;o.Lnext!==t&&(ve.edgeGoesRight(t.Lprev)||ve.edgeSign(t.Dst,t.Org,t.Lprev.Org)>=0);)i=r.connect(t,t.Lprev),t=i.Sym;t=t.Lnext}if(o.Lnext===t)throw"Mono region invalid";for(;o.Lnext.Lnext!==t;)i=r.connect(o.Lnext,o),o=i.Sym;return!0},n.prototype.tessellateInterior_=function(r){for(var e,t=r.fHead.next;t!==r.fHead;t=e)if(e=t.next,t.inside&&!this.tessellateMonoRegion_(r,t))return!1;return!0},n.prototype.discardExterior_=function(r){for(var e,t=r.fHead.next;t!==r.fHead;t=e)e=t.next,t.inside||r.zapFace(t)},n.prototype.setWindingNumber_=function(r,e,t){for(var o,i=r.eHead.next;i!==r.eHead;i=o)o=i.next,i.Rface.inside!==i.Lface.inside?i.winding=i.Lface.inside?e:-e:t?r.delete(i):i.winding=0},n.prototype.getNeighbourFace_=function(r){return!r.Rface||!r.Rface.inside?-1:r.Rface.n},n.prototype.outputPolymesh_=function(r,e,t,o){var i,a=0,s=0,l;t>3&&r.mergeConvexFaces(t);for(var c=r.vHead.next;c!==r.vHead;c=c.next)c.n=-1;for(var u=r.fHead.next;u!==r.fHead;u=u.next)if(u.n=-1,!!u.inside){i=u.anEdge,l=0;do{var c=i.Org;c.n===-1&&(c.n=s,s++),l++,i=i.Lnext}while(i!==u.anEdge);if(l>t)throw"Face vertex greater that support polygon";u.n=a,++a}this.elementCount=a,e===at.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===at.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 t0),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=ze.ODD),e===void 0&&(e=at.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_(),UM.computeInterior(this,a);var s=this.mesh;return e===at.BOUNDARY_CONTOURS?this.setWindingNumber_(s,1,!0):this.tessellateInterior_(s),a&&s.check(),e===at.BOUNDARY_CONTOURS?this.outputContours_(s,o):this.outputPolymesh_(s,e,t,o),!0},n}();function Vr(n){var r=n.windingRule,e=r===void 0?ze.ODD:r,t=n.elementType,o=t===void 0?at.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 kM;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 mq=ze.ODD,yq=ze.NONZERO,gq=ze.POSITIVE,xq=ze.NEGATIVE,bq=ze.ABS_GEQ_TWO,vq=at.POLYGONS,Sq=at.CONNECTED_POLYGONS,wq=at.BOUNDARY_CONTOURS;import{Box2 as YM,BufferAttribute as ou,BufferGeometry as XM,Vector2 as KM}from"three";var tu=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*tu.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*tu.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)}},Fs=tu;Fs.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var l0=xi(s0()),Us={vertices:[160,160,-160,160,-160,-160,160,-160],vertexIndices:[1,0,3,2],vertexCount:4,elements:[0,4],elementCount:1,mesh:void 0},qp={vertices:[],vertexIndices:[],vertexCount:0,elements:[],elementCount:0,mesh:void 0},$p={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},Wp=(n,r)=>([e,t])=>(t<e&&(t+=r),(n>=e?n:n+r)<=t),fn=class extends XM{constructor(e,t,o=0,i=12,a=3,s=ze.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(I=>{let D=I.extractShapePointsToFlatArray([],i),_=[];for(let B=D.length-1;B>=1;B-=2){let V=D[B-1],U=D[B-0];_.push(V,U)}return _}),p=[],d=[];for(let I=0;I<c.length;I+=2)d.push([c[I],c[I+1]]);p.push(d);for(let I=0;I<u.length;I++){let D=u[I],_=[];for(let B=0;B<D.length;B+=2)_.push([D[B],D[B+1]]);p.push(_)}let h;e.isText?h=new YM().setFromPoints(e.points.map(D=>D.position)).getSize(new KM).length()*.1:p[0].length===0?h=o:h=(0,l0.default)(p).distance,o<=0?(this._bevel=0,this._bevelSegments=0):(this._bevel=Math.min(o,h,t/2),this._bevelSegments=Math.floor(a));let f;try{f=Vr({windingRule:s,elementType:at.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[c]})}catch{f=Us}let m;try{m=Vr({windingRule:ze.ODD,elementType:at.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...u]})}catch{m=qp}if(!f)throw new Error("error generating geometry");let y=f.elementCount;if(m){f.elementCount+=m.elementCount;for(let I=0;I<m.elements.length;I++){let D=m.elements[I],_=I%2===0?f.vertexCount:0;f.elements.push(D+_)}for(let I=0;I<m.vertexIndices.length;I++){let D=m.vertexIndices[I],_=f.vertexCount;f.vertexIndices.push(D+_)}for(let I=0;I<m.vertices.length;I++){let D=m.vertices[I];f.vertices.push(D)}}let g=1/0,v=-1/0,P=1/0,O=-1/0;for(let I=0,D=f.vertexCount;I<D;I++){let _=I*2,B=f.vertices[_+0],V=f.vertices[_+1];B<g&&(g=B),B>v&&(v=B),V<P&&(P=V),V>O&&(O=V)}this._minX=g,this._minY=P,this._width=v-g,this._height=O-P,this._buffer=new Fs(this._computeBufferEstimatedSize(f));let S=[],T=[];for(let I=f.elementCount-1;I>=0;I--){let D=I>=y,_=I*2,B=f.elements[_+0],V=f.elements[_+1],U=B+V,R={start:B,count:V,normals:[],continuous:[],concave:[]},W=B,j=U-1,F=B+1,H=this._shape.roundedCurves.length;do{let te=W-B,K=f.vertices[j*2+0],Z=f.vertices[j*2+1],Q=f.vertices[W*2+0],$=f.vertices[W*2+1],ue=f.vertices[F*2+0],le=f.vertices[F*2+1],ne=Q-K,ce=$-Z,ae=Math.sqrt(ne*ne+ce*ce);ne/=ae,ce/=ae;let me=Q-ue,pe=$-le,he=Math.sqrt(me*me+pe*pe);me/=he,pe/=he,R.normals[te*2+0]=-pe,R.normals[te*2+1]=me,R.concave[te]=ne*pe-ce*me>0;let xe=f.vertexIndices[W];if(Array.isArray(xe))R.continuous[te]=!1;else{let[ye,C]=this._shape.getCurveIndexFromVertexId(xe-1,!0);if(C>0&&C<1)R.continuous[te]=!0;else{let ie=C===1?ye+1:ye-1;ie=(ie+H)%H;let Ee=C===1?0:1,Ve=this._shape.roundedCurves[ye].getTangent(C),_e=this._shape.roundedCurves[ie].getTangent(Ee);R.continuous[te]=Ve.dot(_e)>.95}}D&&(R.normals[te*2+0]*=-1,R.normals[te*2+1]*=-1),[j,W,F]=[W,F,F+1],F>=U&&(F-=V)}while(F!==B+1);let q=[];q.push({bevelI:0,angle:0,size:0,boundary:{vertices:f.vertices.slice(B*2,U*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,U*2)});let re=0;for(let te=1;te<=this._bevelSegments;te++){let K=te/this._bevelSegments*Math.PI/2,Z=(1-Math.cos(K))*this._bevel,Q=[],$=[],ue=[],le=[],ne=0;for(let ae=0;ae<V;ae++){let me=ae*2,pe=(ae-1+V)%V*2,he=f.vertices[R.start*2+me+0],xe=f.vertices[R.start*2+me+1],ye=-R.normals[pe+0]*Z,C=-R.normals[pe+1]*Z,ie=-R.normals[me+0]*Z,Ee=-R.normals[me+1]*Z;if(R.concave[ae]||!R.concave[ae]&&D){let Ve=Math.atan2(C,ye),_e=Math.atan2(Ee,ie);_e>Ve&&(_e-=Math.PI*2);let Pe=_e-Ve;if(R.continuous[ae]||D){let vt=Ve+Pe/2,Me=Math.cos(vt)*Z,yt=Math.sin(vt)*Z;Q[2*ne+0]=he+Me*(D?-1:1),Q[2*ne+1]=xe+yt*(D?-1:1),le[ne]=ae,ne++}else{let vt=Math.max(1,Math.floor(i/4*Math.abs(Pe)/Math.PI));for(let Me=0;Me<=vt;Me++){let yt=Ve+Pe*(Me/vt),St=Math.cos(yt)*Z,Dn=Math.sin(yt)*Z;Q[2*ne+0]=he+St,Q[2*ne+1]=xe+Dn,le[ne]=ae,ne++}}}else Q[2*ne+0]=he+ye,Q[2*ne+1]=xe+C,le[ne]=ae,$[ae]=ne,ne++,Q[2*ne+0]=he,Q[2*ne+1]=xe,le[ne]=ae,ne++,Q[2*ne+0]=he+ie,Q[2*ne+1]=xe+Ee,le[ne]=ae,ue[ae]=ne,ne++}let ce=Vr({windingRule:ze.POSITIVE,elementType:at.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[Q],edgeCreateCallback:ae=>{let pe=ae.Org.idx,he=le[pe],xe=le[(pe+1)%le.length];ae.idx=[he,xe],ae.Sym.idx=[xe,he]},vertexIdCallback:ae=>{let me=ae.Lprev.idx;return[me?me[1]:0,ae.idx?ae.idx[0]:0]}});if(!ce)throw console.log("Error"),new Error(`error generating bevel geometry for ${te}'th loop`);if(!ce.vertexCount){let ae=(te-1)/this._bevelSegments*Math.PI/2;re=(1-Math.sin(ae))*this._bevel;break}for(let ae=0;ae<ce.vertexIndices.length;ae++){let[me,pe]=ce.vertexIndices[ae];if(me===pe)continue;let he=pe;pe<me&&(he+=V);for(let xe=me;xe<he;xe++){let ye=xe%V,C=(xe+1)%V;if(!R.continuous[ye]||!R.continuous[C]){ce.vertexIndices[ae]=[me,ye],ce.vertexIndices.splice(ae+1,0,[C,pe]),ce.vertices.splice((ae+1)*2,0,ce.vertices[ae*2],ce.vertices[ae*2+1]);break}}}q.push({bevelI:te,angle:K,size:Z,boundary:ce,reverseMap:le,insetPoints:Q})}let ee=(te,K,Z)=>{let Q=0,$=te.boundary.vertexIndices.length;for(;Q<$&&Z(te.boundary.vertexIndices[K]);)K=(K+1)%$,Q++;return Q},X=S.length;for(let te=1;te<q.length;te++){let K=q[te-1],Z=q[te],Q=K.boundary.vertexIndices.length,$=Z.boundary.vertexIndices.length;if(!Q||!$)break;let ue=R.concave.length,le=0,ne=Wp(le,V);for(;!K.boundary.vertexIndices.filter(ne).length||!Z.boundary.vertexIndices.filter(ne).length;)le++,ne=Wp(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 me=le,pe=0,he=this._buildBevelVert(R,K,(ce-1+Q)%Q,void 0,pe),xe=this._buildBevelVert(R,Z,(ae-1+$)%$,void 0,pe),ye=he,C=xe,ie,Ee,Ve=!1;do{pe=(le||ue)/ue,ne=Wp(le,V);let _e=ee(K,ce,ne),Pe=ee(Z,ae,ne),vt=Ve;if(Ve=!1,_e&&!Pe){for(let Me=0;Me<_e;Me++)ie=this._buildBevelVert(R,K,(ce+Me)%Q,Me/(_e-1),pe),S.push(ye.topN,ie.topP,C.topN),l===!1&&S.push(ie.bottomP,ye.bottomN,C.bottomN),ye=ie;Ve=!0}else if(!_e&&Pe)for(let Me=0;Me<Pe;Me++)Ee=this._buildBevelVert(R,Z,(ae+Me)%$,Me/(Pe-1),pe),S.push(C.topN,ye.topP,Ee.topP),l===!1&&S.push(ye.bottomP,C.bottomN,Ee.bottomP),C=Ee;else if(_e&&Pe)if(ie=this._buildBevelVert(R,K,ce,0,pe),Ee=this._buildBevelVert(R,Z,ae,0,pe),vt?(S.push(ye.topN,Ee.topP,C.topN),S.push(ye.topN,ie.topP,Ee.topP),l===!1&&(S.push(Ee.bottomP,ye.bottomN,C.bottomN),S.push(Ee.bottomP,ie.bottomP,ye.bottomN))):(S.push(C.topN,ye.topN,ie.topP),S.push(C.topN,ie.topP,Ee.topP),l===!1&&(S.push(ie.bottomP,ye.bottomN,C.bottomN),S.push(ie.bottomP,C.bottomN,Ee.bottomP))),ye=ie,C=Ee,_e===Pe)for(let Me=1;Me<_e;Me++)ie=this._buildBevelVert(R,K,(ce+Me)%Q,Me/(_e-1),pe),Ee=this._buildBevelVert(R,Z,(ae+Me)%$,Me/(Pe-1),pe),S.push(ye.topN,ie.topP,C.topN),S.push(C.topN,ie.topP,Ee.topP),l===!1&&(S.push(ie.bottomP,ye.bottomN,C.bottomN),S.push(ie.bottomP,C.bottomN,Ee.bottomP)),ye=ie,C=Ee;else if(_e>Pe){let Me=_e/Pe,yt=0;for(let St=1;St<_e;St++)ie=this._buildBevelVert(R,K,(ce+St)%Q,St/(_e-1),pe),S.push(ye.topN,ie.topP,C.topN),l===!1&&S.push(ie.bottomP,ye.bottomN,C.bottomN),ye=ie,St>(yt+1)*Me&&(yt++,Ee=this._buildBevelVert(R,Z,(ae+yt)%$,yt/(Pe-1),pe),S.push(C.topN,ie.topP,Ee.topP),l===!1&&S.push(ie.bottomP,C.bottomN,Ee.bottomP),C=Ee)}else{let Me=Pe/_e,yt=0;for(let St=1;St<Pe;St++)Ee=this._buildBevelVert(R,Z,(ae+St)%$,St/(Pe-1),pe),S.push(C.topN,ie.topP,Ee.topP),l===!1&&S.push(ie.bottomP,C.bottomN,Ee.bottomP),C=Ee,St>(yt+1)*Me&&(yt++,ie=this._buildBevelVert(R,K,(ce+yt)%Q,yt/(_e-1),pe),S.push(ye.topN,ie.topP,C.topN),l===!1&&S.push(ie.bottomP,ye.bottomN,C.bottomN),ye=ie)}ce=(ce+_e)%Q,ae=(ae+Pe)%$,le=(le+1)%ue}while(le!==me)}if(l===!1&&this._depth>this._bevel*2&&this._buildWall(q,R,S),D){let te=[];for(let K=S.length-1;K>=X+2;K-=3){let Z=S[K-2],Q=S[K-1],$=S[K-0];te.push($,Q,Z)}S.splice(X,S.length-X,...te)}if(D){let te=[];for(let K=q[q.length-1].boundary.vertices.length-1;K>=1;K-=2){let Z=q[q.length-1].boundary.vertices[K-1],Q=q[q.length-1].boundary.vertices[K-0];te.push(Z,Q)}T.push(te)}if(!D){let te=q[q.length-1],K;try{K=Vr({windingRule:q.length>1?ze.POSITIVE:ze.ODD,elementType:at.POLYGONS,vertexSize:2,strict:!0,contours:[te.insetPoints,...T]})}catch{K=$p}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 A=new ou(Uint32Array.from(S),1),x=new ou(this._buffer.positions,3),E=new ou(this._buffer.normals,3),N=new ou(this._buffer.uvs,2);x.needsUpdate=!0,E.needsUpdate=!0,N.needsUpdate=!0,A.needsUpdate=!0,this.setAttribute("position",x),this.setAttribute("normal",E),this.setAttribute("uv",N),this.setIndex(A)}_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,P=t.boundary.vertices[y+0],O=t.boundary.vertices[y+1],S=(1-m)*this._bevel,T=(P-this._minX)/this._width,A=(O-this._minY)/this._height;this.forPathBevel&&(a!==void 0&&(T=a),A=1);let x=e.normals[g+0],E=e.normals[g+1],N=e.normals[v+0],I=e.normals[v+1];if(h){let U=N-x,R=I-E;x=x+U*(1-i),E=E+R*(1-i);let W=Math.sqrt(x*x+E*E);x/=W,E/=W}let D=this.forPathBevel?this._buffer.get(d?1:2):this._buffer.get(d?2:4),_=D*3,B=D*2,V={i:o,fi:u,topP:D+0,topN:D+0,bottomP:D+1,bottomN:D+1,pathBevelUCoord:a};return this._buffer.positions[_+0]=P,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]=E*f,this._buffer.normals[_+2]=m,this._buffer.uvs[B+0]=T,this._buffer.uvs[B+1]=A,this.forPathBevel===!1&&(this._buffer.positions[_+3]=P,this._buffer.positions[_+4]=O,this._buffer.positions[_+5]=S,this._buffer.normals[_+3]=x*f,this._buffer.normals[_+4]=E*f,this._buffer.normals[_+5]=-m,this._buffer.uvs[B+2]=A,this._buffer.uvs[B+3]=T),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]=P,this._buffer.positions[_+1]=O,this._buffer.positions[_+2]=(this.forPathBevel?this._bevel:this._depth)-S,this._buffer.normals[_+0]=N*f,this._buffer.normals[_+1]=I*f,this._buffer.normals[_+2]=m,this._buffer.uvs[B+0]=T,this._buffer.uvs[B+1]=A,this.forPathBevel===!1&&(this._buffer.positions[_+3]=P,this._buffer.positions[_+4]=O,this._buffer.positions[_+5]=S,this._buffer.normals[_+3]=N*f,this._buffer.normals[_+4]=I*f,this._buffer.normals[_+5]=-m,this._buffer.uvs[B+2]=A,this._buffer.uvs[B+3]=T)),this.vertexCache[s]=V,V}clone(){let e=new fn(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=So(this.userData),e}};var ga=class extends QM{constructor(e,t=12,o={}){super();this.type="ShapeGeometry";this.windingRule=ze.ODD;this.elementType=at.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=t,this._triangulationOptions=Object.assign({windingRule:ze.ODD,elementType:at.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=Vr({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=Us}let d=s?.vertexCount??1,h=s?.elementCount??1;if(this._positionAttribute=new nu(new Float32Array(d*3),3),this._normalAttribute=new nu(new Float32Array(d*3),3),this._uvAttribute=new nu(new Float32Array(d*2),2),this._indexAttribute=new nu(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 T=O*2,A=s.vertices[T+0],x=s.vertices[T+1];A<f&&(f=A),A>m&&(m=A),x<y&&(y=x),x>g&&(g=x)}let v=m-f,P=g-y;for(let O=0,S=d;O<S;O++){let T=O*2,A=s.vertices[T+0],x=s.vertices[T+1],E=(A-f)/v,N=(x-y)/P;this._positionAttribute.setXYZ(O,A,x,0),this._normalAttribute.setXYZ(O,0,0,1),this._uvAttribute.setXY(O,E,N)}for(let O=0,S=h;O<S;O++){let T=O*3,A=s.elements[T+0],x=s.elements[T+1],E=s.elements[T+2];this._indexAttribute.setX(T+0,A),this._indexAttribute.setX(T+1,x),this._indexAttribute.setX(T+2,E)}}this.setAttribute("position",this._positionAttribute),this.setAttribute("normal",this._normalAttribute),this.setAttribute("uv",this._uvAttribute),this.setIndex(this._indexAttribute),this.setDrawRange(0,(s?.elementCount??1)*3)}clone(){let e=new ga(this._shape,this._curveSegments);return e.userData=So(this.userData),e}};var xa=class extends fn{constructor(e,t,o=0,i=12,a=3,s=ze.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 xa(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=So(this.userData),e}};var Zt=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:ze.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 Fe?(a.width!==t||a.height!==o)&&a.applySize(t,o):a=new Fe(t,o).fromJSON(a),n.parameters?.roundness!==void 0&&n.parameters?.roundness>0&&a.update());let l=a??new Fe(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 xa(n.shape,r,e,o,t,a),Object.assign(s,{userData:{...n,type:"VectorGeometry"}})}};import{BufferGeometry as ZM,Float32BufferAttribute as JM,MathUtils as Yp,Vector2 as u0}from"three";var d0=Math.PI*2,va=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=Yp.clamp(e.angle,0,360),{shape:n.shape&&n.shape instanceof Fe?n.shape:new Fe,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=eI(c,u,p,o*Math.PI/180,t,i);c.isClosed=!0,c.update();let h;return o===0?(h=new ZM,h.setAttribute("position",new JM([],3))):h=Zt.create({shape:c,parameters:{subdivisions:d,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}}),Object.assign(h,{userData:{...n,type:"EllipseGeometry"}})}};function eI(n,r,e,t,o,i){if(t>=d0)return o>30||o%4===0?(rI(n,r,e,i),Math.round(o/4)):c0(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=e0({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?tI(n,a.x,a.y,c,o,r,e,i):c0(n,t,o,r,e,i)}function tI(n,r,e,t,o,i,a,s){let l=Math.round(o/t.length);n.addPoint(ba(r,e));for(let c=0,u=t.length;c<u;c++){let p=t[c],d=n.points[c],h=ba(p.x,p.y);d.controls[1].position.set(p.x1,p.y1),h.controls[0].position.set(p.x2,p.y2),n.addPoint(h)}return s>0?p0(n,i,a,s):n.addPoint(ba(0,0)),l}function c0(n,r,e,t,o,i){let a=-r/e;for(let s=0;s<=e;s++){let l=a*s,c=Math.sin(l)*t,u=Math.cos(l)*o;n.addPoint(ba(c,u))}return r<d0?i>0?p0(n,t,o,i):n.addPoint(ba(0,0)):(n.removePoint(n.points[n.points.length-1]),i>0&&f0(n,t,o,i)),1}function rI(n,r,e,t=0,o=0,i=0){let a=.5522847498,s=r*a,l=e*a;n.addPoint(iu(o-r,i,o-r,i-l,o-r,i+l)),n.addPoint(iu(o,i+e,o-s,i+e,o+s,i+e)),n.addPoint(iu(o+r,i,o+r,i+l,o+r,i-l)),n.addPoint(iu(o,i-e,o+s,i-e,o-s,i-e)),t>0&&f0(n,r,e,t)}function ba(n,r){return new Rr(Yp.generateUUID(),new u0(n,r))}function iu(n,r,e,t,o,i){let a=ba(n,r);return a.controls[0].position.set(e,t),a.controls[1].position.set(o,i),a}function p0(n,r,e,t){h0(n,r,e,t).forEach(i=>n.addPoint(i))}function f0(n,r,e,t){let o=h0(n,r,e,t),i=new Fe;o.forEach(a=>i.addPoint(a)),i.isClosed=!0,n.shapeHoles.push(i)}function h0(n,r,e,t){let o=t*r/100,i=o*(Math.abs(e)/Math.abs(r)),a=new u0(o/r,i/e),s=n.points.map(l=>{let c=l.clone();return c.uuid=Yp.generateUUID(),c}).reverse();return s.forEach(l=>{l.position.multiply(a);let c=l.controls[0].position.clone().multiply(a),u=l.controls[1].position.clone().multiply(a);l.controls[0].position.copy(u),l.controls[1].position.copy(c)}),s}import{BufferGeometry as oI,Float32BufferAttribute as Xp,Uint32BufferAttribute as nI,Vector3 as m0}from"three";var y0=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 ks(!1,r,e,t,o,i,a,s,l,c,u,p);return Object.assign(d,{userData:{...n,type:"HelixGeometry"}})}},Kp=new nI([0,0,0],1),ks=class extends oI{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 m0,m=new m0,y=f(),g=f(),v=f(),P,O,S,T,A,x,E,N,I=f(),D=f(),_=f(),B=f(),V=f(),U=f(),R=f(),W=f(),j=t-2*l+.001,F=j/a,H=Math.ceil(s*a),q=H+1,re=j/H,ee=-j/2,X=u+1,te=2*Math.PI/u,K=Math.PI/2/d,Z=.01,Q=Math.min((1-p/100)*l,l-Z),$=l-Q,ue=0,le=2,ne=d*le+le,ce=X*ne/le,ae=ce+X*q,me=Math.max(0,X*(q+ne)),[pe,he,xe]=[3,3,2].map(ot=>Array(me*ot).fill(0)),ye=[],C=i-l;function ie(ot,Xe){let Ar=Math.PI/2;x=Xe*re,N=2*Math.PI*(x%F)/F+Ar,x+=ee,E=Math.sin(N)*C,A=Math.cos(N)*C,r?ot.set(A,E,x):ot.set(A,x,E)}ie(m,-1e-10),ie(y,0),I.copy(m),ie(m,1);let Ee=m.distanceTo(y),Ve=h?0:$+Q,_e=Ee*H+2*Ve,Pe=Q,vt=_e-Ve;for(let ot=0;ot<=H;ot++){ie(g,ot),W.subVectors(g,I).normalize(),I.copy(g),U.copy(g).setComponent(+r+1,0).normalize(),R.crossVectors(W,U).normalize();let Xe=ot===0,Ar=ot===H,gd=Xe?3*Math.PI/2:K,xd=Xe?Pe:vt,wl=Xe?X:ae,En=Xe?0:me-X,ct=W.clone().multiplyScalar(Xe?-$:$).add(g),bd=W.clone().multiplyScalar(Xe?-1:1).normalize();for(let hr=0;hr<X;hr++){let ms=hr*te;if(D.addVectors(m.copy(U).multiplyScalar(l*Math.cos(ms)),y.copy(R).multiplyScalar(l*Math.sin(ms))),_.copy(D).normalize(),Xe||Ar){h||(ue=En+hr,[0,1,2].forEach(Ut=>{pe[ue*3+Ut]=ct.getComponent(Ut),he[ue*3+Ut]=bd.getComponent(Ut)}),xe[ue*2]=+Ar,xe[ue*2+1]=hr/u),y.copy(_).multiplyScalar(Q),v.addVectors(g,y);for(let Ut=0;Ut<d;Ut++){let _n=Ut*K+gd;B.addVectors(m.copy(W).multiplyScalar($*Math.sin(_n)),y.copy(_).multiplyScalar($*Math.cos(_n))),V.copy(B).normalize(),y.addVectors(v,B),B.normalize(),ue=wl+Ut*X+hr,[0,1,2].forEach(hi=>{pe[ue*3+hi]=y.getComponent(hi),he[ue*3+hi]=V.getComponent(hi)});let Pl=+Xe+Math.sin(_n);xe[ue*2]=(xd+$*Pl)/_e,xe[ue*2+1]=hr/u}}y.addVectors(g,D),ue=ce+ot*X+hr,[0,1,2].forEach(Ut=>{pe[ue*3+Ut]=y.getComponent(Ut),he[ue*3+Ut]=_.getComponent(Ut)}),xe[ue*2]=(Ve+ot*Ee)/_e,xe[ue*2+1]=hr/u}}let Me=q+2*d+le,yt=1,[St,Dn]=[+h,Me-1];for(let ot=St;ot<=Dn-1;ot++){let Xe=h&&ot===Dn-1;for(let Ar=0;Ar<X-1;Ar++)P=ot*X+Ar,O=P+1,S=(Xe?Ar:P)+X,T=(Xe?Ar+1:O)+X,ot===0?ye.push(O,T,S):ot===Me-2?ye.push(P,O,S):ye.push(P,O,S,O,T,S)}this.setIndex(ye),this.setAttribute("position",new Xp(pe,3)),this.setAttribute("normal",new Xp(he,3)),this.setAttribute("uv",new Xp(xe,2))}getClosedTorusIndicesForBooleanOrSubdiv(){let r=this.userData.parameters,e=Math.ceil(r.tubularSegments),t=r.radialSegments+1,o=Array.from(this.getIndex().array),i,a,s,l,c=6*(e-1)*r.radialSegments,u=e,p=u===e;for(let d=0;d<r.radialSegments;d++)i=u*t+d,a=i+1,s=(p?d:i)+t,l=(p?d+1:a)+t,o[c++]=i,o[c++]=a,o[c++]=s,o[c++]=a,o[c++]=l,o[c++]=s;return o.length=c,Kp.array=o,Kp.count=o.length,Kp}};import{IcosahedronGeometry as iI}from"three";var g0=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 Hs(r*.5,i,a):new iI(r*.5,o);return s.scale(1,e/r,t/r),Object.assign(s,{userData:{...n,type:"IcosahedronGeometry"}})}},Hs=class extends un{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 Hs(r.radius,r.corner,r.cornerSides)}};import{LatheGeometry as aI,Shape as sI}from"three";var x0=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 sI;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 aI(o.extractPoints(t).shape,e);return i.rotateZ(Math.PI),Object.assign(i,{userData:{...n,type:"LatheGeometry"}})}};import{BufferGeometry as T0,BufferGeometryLoader as bI,Vector3 as vI,BoxGeometry as A0}from"three";import{BufferGeometry as mI,Vector2 as ef,Vector3 as C0}from"three";import{Box3 as lI,BufferAttribute as Ws,BufferGeometry as b0,Color as Jp,EventDispatcher as cI,Float32BufferAttribute as Sa,Matrix3 as v0,Matrix4 as O0,MathUtils as uI,Object3D as dI,Sphere as pI,Vector2 as ur,Vector3 as Vt,Vector4 as fI}from"three";var oo=new O0,Qp=new dI,au=new Vt,hn=class extends cI{constructor(){super(),this.uuid=uI.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 v0().getNormalMatrix(r);for(let t=0,o=this.vertices.length;t<o;t++)this.vertices[t].applyMatrix4(r);for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t];i.normal.applyMatrix3(e).normalize();for(let a=0,s=i.vertexNormals.length;a<s;a++)i.vertexNormals[a].applyMatrix3(e).normalize()}return this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this.verticesNeedUpdate=!0,this.normalsNeedUpdate=!0,this}rotateX(r){return oo.makeRotationX(r),this.applyMatrix4(oo),this}rotateY(r){return oo.makeRotationY(r),this.applyMatrix4(oo),this}rotateZ(r){return oo.makeRotationZ(r),this.applyMatrix4(oo),this}translate(r,e,t){return oo.makeTranslation(r,e,t),this.applyMatrix4(oo),this}scale(r,e,t){return oo.makeScale(r,e,t),this.applyMatrix4(oo),this}lookAt(r){return Qp.lookAt(r),Qp.updateMatrix(),this.applyMatrix4(Qp.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 Vt().fromBufferAttribute(i,d)),s!==void 0&&e.colors.push(new Jp().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 Vt().fromBufferAttribute(a,d),new Vt().fromBufferAttribute(a,h),new Vt().fromBufferAttribute(a,f)],v=new wa(d,h,f,g,y,m);e.faces.push(v),l!==void 0&&e.faceVertexUvs[0].push([new ur().fromBufferAttribute(l,d),new ur().fromBufferAttribute(l,h),new ur().fromBufferAttribute(l,f)]),c!==void 0&&e.faceVertexUvs[1].push([new ur().fromBufferAttribute(c,d),new ur().fromBufferAttribute(c,h),new ur().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(au).negate(),this.translate(au.x,au.y,au.z),this}normalize(){this.computeBoundingSphere();let r=this.boundingSphere.center,e=this.boundingSphere.radius,t=e===0?1:1/e,o=new O0;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 Vt,e=new Vt;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 Vt;if(r){let t=new Vt,o=new Vt;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 hn;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 Vt,u={a:new Vt,b:new Vt,c:new Vt};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 lI),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new pI),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 v0().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,P=new wa(f.a+i,f.b+i,f.c+i);P.normal.copy(f.normal),o!==void 0&&P.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(),P.vertexNormals.push(m);P.color.copy(f.color);for(let O=0,S=v.length;O<S;O++)y=v[O],P.vertexColors.push(y.clone());P.materialIndex=f.materialIndex+t,l.push(P)}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 P=0,O=g.length;P<O;P++)v.push(g[P].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 Vt(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,P=m.normal.length()>0,O=m.vertexNormals.length>0,S=m.color.r!==1||m.color.g!==1||m.color.b!==1,T=m.vertexColors.length>0,A=0;if(A=u(A,0,0),A=u(A,1,y),A=u(A,2,g),A=u(A,3,v),A=u(A,4,P),A=u(A,5,O),A=u(A,6,S),A=u(A,7,T),t.push(A),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(P&&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)),T){let x=m.vertexColors;t.push(d(x[0]),d(x[1]),d(x[2]))}}function u(f,m,y){return y?f|1<<m:f&~(1<<m)}function p(f){let m=f.x.toString()+f.y.toString()+f.z.toString();return i[m]!==void 0||(i[m]=o.length/3,o.push(f.x,f.y,f.z)),i[m]}function d(f){let m=f.r.toString()+f.g.toString()+f.b.toString();return s[m]!==void 0||(s[m]=a.length,a.push(f.getHex())),s[m]}function h(f){let m=f.x.toString()+f.y.toString();return c[m]!==void 0||(c[m]=l.length/2,l.push(f.x,f.y)),c[m]}return r.data={},r.data.vertices=e,r.data.normals=o,a.length>0&&(r.data.colors=a),l.length>0&&(r.data.uvs=[l]),r.data.faces=t,r}clone(){return new hn().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 P=0,O=g.length;P<O;P++){let S=g[P];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 Zp().fromGeometry(this),e=new b0,t=new Float32Array(r.vertices.length*3);if(e.setAttribute("position",su.call(new Ws(t,3),r.vertices)),r.normals.length>0){let o=new Float32Array(r.normals.length*3);e.setAttribute("normal",su.call(new Ws(o,3),r.normals))}if(r.colors.length>0){let o=new Float32Array(r.colors.length*3);e.setAttribute("color",S0.call(new Ws(o,3),r.colors))}if(r.uvs.length>0){let o=new Float32Array(r.uvs.length*2);e.setAttribute("uv",w0.call(new Ws(o,2),r.uvs))}if(r.uvs2.length>0){let o=new Float32Array(r.uvs2.length*2);e.setAttribute("uv2",w0.call(new Ws(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 Sa(c.data.length*3,3);u.name=c.name,i.push(su.call(u,c.data))}e.morphAttributes[o]=i}if(r.skinIndices.length>0){let o=new Sa(r.skinIndices.length*4,4);e.setAttribute("skinIndex",P0.call(o,r.skinIndices))}if(r.skinWeights.length>0){let o=new Sa(r.skinWeights.length*4,4);e.setAttribute("skinWeight",P0.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 b0,t=r.geometry;if(r.isPoints||r.isLine){let o=new Sa(t.vertices.length*3,3),i=new Sa(t.colors.length*3,3);if(e.setAttribute("position",su.call(o,t.vertices)),e.setAttribute("color",S0.call(i,t.colors)),t.lineDistances&&t.lineDistances.length===t.vertices.length){let a=new Sa(t.lineDistances.length,1);e.setAttribute("lineDistance",hI.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}};hn.prototype.isGeometry=!0;var Zp=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 P=v.vertexNormals;if(P.length===3)this.normals.push(P[0],P[1],P[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 ur,new ur,new ur))}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 ur,new ur,new ur))}for(let S=0;S<l;S++){let T=s[S].vertices;c[S].data.push(T[v.a],T[v.b],T[v.c])}for(let S=0;S<p;S++){let T=u[S].vertexNormals[g];d[S].data.push(T.a,T.b,T.c)}m&&this.skinIndices.push(h[v.a],h[v.b],h[v.c]),y&&this.skinWeights.push(f[v.a],f[v.b],f[v.c])}return this.computeGroups(r),this.verticesNeedUpdate=r.verticesNeedUpdate,this.normalsNeedUpdate=r.normalsNeedUpdate,this.colorsNeedUpdate=r.colorsNeedUpdate,this.uvsNeedUpdate=r.uvsNeedUpdate,this.groupsNeedUpdate=r.groupsNeedUpdate,r.boundingSphere!==null&&(this.boundingSphere=r.boundingSphere.clone()),r.boundingBox!==null&&(this.boundingBox=r.boundingBox.clone()),this}},wa=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 Vt,this.vertexNormals=Array.isArray(o)?o:[],this.color=i&&i.isColor?i:new Jp,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 hI(n){return this.array.set(n),this}function S0(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 Jp),r[e++]=i.r,r[e++]=i.g,r[e++]=i.b}return this}function w0(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 ur),r[e++]=i.x,r[e++]=i.y}return this}function su(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 Vt),r[e++]=i.x,r[e++]=i.y,r[e++]=i.z}return this}function P0(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 fI),r[e++]=i.x,r[e++]=i.y,r[e++]=i.z,r[e++]=i.w}return this}var yI=["a","b","c"];function gI(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 rf(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 xI(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],rf(a.a,a.b,n,t,a,e),rf(a.b,a.c,n,t,a,e),rf(a.c,a.a,n,t,a,e)}function lu(n,r,e,t,o){n.push(new wa(r,e,t,void 0,void 0,o))}function Pa(n,r){return Math.abs(r-n)/2+Math.min(n,r)}function cu(n,r,e,t){n.push([r.clone(),e.clone(),t.clone()])}var uu=class{constructor(r=1){this.subdivisions=r}modify(r){r instanceof mI?r=new hn().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 C0,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;xI(l,c,d,h);let f=[],m,y,g,v,P,O,S;for(let Z of Array.from(h.keys())){for(y=h.get(Z),g=new C0,P=3/8,O=1/8,S=y.faces.length,S!=2&&(P=.5,O=0,S!=1),g.addVectors(y.a,y.b).multiplyScalar(P),e.set(0,0,0),a=0;a<S;a++){for(v=y.faces[a],s=0;s<3&&(m=l[gI(v,yI[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 T,A,x,E,N,I,D,_=[];for(o=0,i=l.length;o<i;o++){for(I=l[o],N=d[o].edges,t=N.length,t==3?T=3/16:t>3&&(T=3/(8*t)),A=1-t*Number(T),x=T,t<=2&&(t==2?(A=3/4,x=1/8):t==1||t==0),D=I.clone().multiplyScalar(A),e.set(0,0,0),a=0;a<t;a++)E=N[a],m=E.a!==I?E.a:E.b,e.add(m);e.multiplyScalar(Number(x)),D.add(e),_.push(D)}let B=_.concat(f),V=_.length,U,R,W,j=[],F=[],H,q,re,ee,X=new ef,te=new ef,K=new ef;for(o=0,i=c.length;o<i;o++)v=c[o],U=Number(tf(v.a,v.b,h).newEdge)+V,R=Number(tf(v.b,v.c,h).newEdge)+V,W=Number(tf(v.c,v.a,h).newEdge)+V,lu(j,U,R,W,v.materialIndex),lu(j,v.a,U,W,v.materialIndex),lu(j,v.b,R,U,v.materialIndex),lu(j,v.c,W,R,v.materialIndex),p&&(H=u[o],q=H[0],re=H[1],ee=H[2],X.set(Pa(q.x,re.x),Pa(q.y,re.y)),te.set(Pa(re.x,ee.x),Pa(re.y,ee.y)),K.set(Pa(q.x,ee.x),Pa(q.y,ee.y)),cu(F,X,te,K),cu(F,q,X,K),cu(F,re,te,X),cu(F,ee,K,te));r.vertices=B,r.faces=j,p&&(r.faceVertexUvs[0]=F)}};var Pt=new vI,M0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=n.geometry??r?.geometry??new T0().copy(new A0(100,100,100)),t;r===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(Pt),t={width:Pt.x,height:Pt.y,depth:Pt.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 T0().copy(new A0(100,100,100)),a=i.userData.parameters;a===void 0?(i.computeBoundingBox(),i.boundingBox.getSize(Pt)):Pt.set(a.width,a.height,a.depth),(r!==Pt.x||e!==Pt.y||t!==Pt.z)&&i.scale(Pt.x===0?1:r/Pt.x,Pt.y===0?1:e/Pt.y,Pt.z===0?1:t/Pt.z);let s=i.originalGeometry;try{o>0?(s===void 0||a?.subdivisions!==o)&&(s===void 0&&(s=i),i=new uu(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 bI(e).load(n,o=>{let i=this.normalizeInputs({geometry:o});o.boundingBox.getSize(Pt);let a=100/Pt.x;Object.assign(i.parameters,{width:100,height:Pt.y*a,depth:Pt.z*a}),r(this.build(i))})}};var du=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:3},n.parameters);return{shape:n.shape&&n.shape instanceof Fe?n.shape:new Fe,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=Zt.create({shape:l,parameters:{roundness:o,depth:i,extrudeBevelSize:a,extrudeBevelSegments:s}});return Object.assign(f,{userData:{...n,type:"PolygonGeometry"}})}};import{BufferGeometry as SI,Float32BufferAttribute as of,Vector2 as no,Vector3 as Nt}from"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,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 af(r*.5,e,o,i,a,s,l);return c.scale(1,1,t/r),Object.assign(c,{userData:{...n,type:"PyramidGeometry"}})}};function qs(n,r,e){e.x=n.x*r.x,e.y=n.y,e.z=n.x*r.y}function nf(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 wI(n,r,e){let t=n.clone().sub(r),o=e.clone().sub(r);return t.projectOnVector(o),t.add(r)}var af=class extends SI{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,P=new Nt(0,-h,0),O=new Nt(0,h,0),S=new no(r,-h),T=new no(m,-h),A=new no(0,O.y).sub(T),x=new no(0,O.y).sub(S),E=new no(A.y,-A.x).normalize(),N=new no(x.y,-x.x).normalize(),D=r*Math.cos(Math.PI/t)*Math.tan((Math.PI-A.angle())/2)-1e-8;a=Math.min(a,D);let _;{let F=new Nt(E.x,E.y,0),H=new Nt(Math.cos(y)*F.x,F.y,Math.sin(y)*F.x);_=F.angleTo(H)}let B=a/Math.tan((Math.PI-A.angle())/2),V=a/Math.tan((Math.PI-_)/2),U=new Nt;if(!i){c.push(P.x,P.y,P.z),u.push(0,-1,0),p.push(0,0);let F=d++,H=[],q=S.clone(),re=B/Math.cos(Math.PI/t);q.x-=re;for(let ee=0;ee<t;ee++){let X=ee/t*Math.PI*2+f,te=new no(Math.sin(X),Math.cos(X));qs(q,te,U),c.push(U.x,U.y,U.z),u.push(0,-1,0),p.push(0,0),H.push(d++)}for(let ee=0;ee<H.length;ee++)l.push(H[ee],F,H[(ee+1)%H.length])}let R=[];{let F=new Nt,H=new Nt,q=new Nt,re=new Nt,ee=new Nt,X=new Nt;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 no(Math.sin(K),Math.cos(K)),ue=new no(Math.sin(Z),Math.cos(Z)),le=new no(Math.sin(Q),Math.cos(Q));qs(S,$,H),qs(S,le,q),qs(E,ue,F),nf(O,H,q,V,V,re),c.push(re.x,re.y,re.z),nf(H,O,q,V,B,ee),c.push(ee.x,ee.y,ee.z),nf(q,H,O,B,V,X),c.push(X.x,X.y,X.z),u.push(F.x,F.y,F.z),u.push(F.x,F.y,F.z),u.push(F.x,F.y,F.z),p.push(0,0),p.push(0,0),p.push(0,0);let ne=d++,ce=d++,ae=d++;if(l.push(ne,ce,ae),a>0){{let he=H.clone().add(q).multiplyScalar(.5),xe=O.clone().sub(he).normalize(),C=P.clone().sub(he).normalize().add(xe).normalize().multiplyScalar(-1),ie=X.clone().sub(ee);W(he,ie,C,A.angle())}let me,pe;{let he=new Nt;qs(N,le,he);let xe=X.clone().add(re).multiplyScalar(.5);xe=wI(xe,q,O);let ye=X.clone().sub(re);[me,pe]=W(xe,ye,he,_,re.y)}{let he=me,xe=he.clone().setY(0).normalize(),ye=new Nt(0,-1,0),C=xe.clone().cross(ye);j(he,xe,ye,C)}R.concat(pe);{let he=A.angle(),xe=Math.PI-he,ye=O.clone();ye.y-=a/Math.sin(he-Math.PI/2);let C=new Nt,ie=[];for(let Ve=0;Ve<s;Ve++){let _e=[],Pe=Math.PI/2-xe*Ve/s,vt=Math.cos(Pe),Me=Math.sin(Pe),yt=Z;for(let St=0;St<=Ve;St++){let Dn=Math.cos(yt),ot=Math.sin(yt);F.x=vt*ot,F.y=Me,F.z=vt*Dn,C.copy(ye).addScaledVector(F,a),c.push(C.x,C.y,C.z),u.push(F.x,F.y,F.z),p.push(0,0),_e.push(d++),yt+=Math.PI*2/Ve/t}ie.push(_e)}pe.reverse(),ie.push(pe);let Ee=ie.length-1;for(let Ve=0;Ve<Ee;Ve++){let _e=ie[Ve],Pe=ie[Ve+1],vt=_e.length-1;l.push(Pe[1],_e[0],Pe[0]);for(let Me=1;Me<=vt;Me++)l.push(_e[Me],_e[Me-1],Pe[Me]),l.push(Pe[Me+1],_e[Me],Pe[Me])}}}}}this.setIndex(l),this.setAttribute("position",new of(c,3)),this.setAttribute("normal",new of(u,3)),this.setAttribute("uv",new of(p,2));function W(F,H,q,re,ee){let X=-re/2,te=(Math.PI-re)/2,K=H.clone().normalize().cross(q);F.addScaledVector(q,-a/Math.sin(te));let Z=new Nt,Q=new Nt,$=1,ue=d,le=[];for(let ne=0;ne<=s;ne++){let ce=X+ne/s*re;Q.set(0,0,0),Q.addScaledVector(K,Math.sin(ce)),Q.addScaledVector(q,Math.cos(ce));for(let ae=0;ae<=$;ae++){let me=ae/$-.5;if(Z.copy(F),Z.addScaledVector(H,me),Z.addScaledVector(Q,a),ee!=null){let pe=Math.max(0,Z.y-ee);Z.addScaledVector(H,-pe/H.y)}c.push(Z.x,Z.y,Z.z),u.push(Q.x,Q.y,Q.z),p.push(0,0),ae===0&&le.push(d),d++}}for(let ne=0;ne<s;ne++)for(let ce=0;ce<$;ce++){let ae=ue+ce+($+1)*ne,me=ae+($+1),pe=me+1,he=ae+1;l.push(ae,me,he),l.push(me,pe,he)}return[F.clone().addScaledVector(H,.5),le]}function j(F,H,q,re){let ee=Math.PI/2,X=x.angle()-ee,te=[],K=new Nt,Z=new Nt;for(let $=0;$<=s;$++){let ue=[],le=$/s;for(let ne=0;ne<=$;ne++){let ae=(($?ne/$:0)-.5)*v,me=Math.cos(ae),pe=Math.sin(ae),he=Math.atan(Math.tan(X)*me),xe=(ee+he)*le,ye=Math.cos(xe),C=Math.sin(xe);K.set(0,0,0),K.addScaledVector(H,C*me),K.addScaledVector(q,ye),K.addScaledVector(re,C*pe),Z.copy(F).addScaledVector(K,a),c.push(Z.x,Z.y,Z.z),u.push(K.x,K.y,K.z),p.push(0,0),ue.push(d++)}te.push(ue)}let Q=te.length-1;for(let $=0;$<Q;$++){let ue=te[$],le=te[$+1],ne=ue.length-1;l.push(ue[0],le[1],le[0]);for(let ce=1;ce<=ne;ce++)l.push(ue[ce-1],ue[ce],le[ce]),l.push(ue[ce],le[ce+1],le[ce])}}}};var Oa=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 Fe?n.shape:new Fe,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,T){return S>e&&T>t?Math.min(O*e/S,O*t/T):S>e?O*e/S:T>t?O*t/T: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 P=Zt.create({shape:r,parameters:{depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}});return Object.assign(P,{userData:{...n,type:"RectangleGeometry"}})}};import{BufferGeometry as PI,Float32BufferAttribute as OI,MathUtils as N0,SphereGeometry as CI}from"three";var D0=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=N0.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 PI,u.setAttribute("position",new OI([],3))):u=new CI(.5*r,o,i,a,s,l,c*N0.DEG2RAD),u.scale(1,e/r,t/r),Object.assign(u,{userData:{...n,type:"SphereGeometry"}})}};import{PlaneGeometry as TI}from"three";var E0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,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 TI(r,e,t,o);return i.scale(1,1,1),Object.assign(i,{userData:{...n,type:"PlaneGeometry"}})}};import{BufferGeometry as AI,Float32BufferAttribute as sf,Vector3 as MI}from"three";var _0=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 lf(r,e,t,o,i,a);return Object.assign(s,{userData:{...n,type:"BackdropGeometry"}})}},lf=class extends AI{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 MI(Z,Q,$),f=h(),m=h(),[y,g,v]=[e/2,r/2,t/2],P=-g,O=+g,[S,T,A]=[h(P,-y,+v),h(P,-y,-v),h(P,+y,-v)],x=(Z,Q=!1)=>Math.sin(Z-Math.PI/(1+ +Q)),E=(Z,Q=!1)=>Math.cos(Z-Math.PI/(1+ +Q));A.y=Math.sin(o)*e-y;let N=Math.cos(o)*e-v,I=S.z-u;o<=d?(A.z=Math.min(N,I),A.z==I&&(A.y-=(N-I)/Math.tan(d-o))):T.z=Math.min(T.z-N-v,S.z-u),f.subVectors(S,T),m.subVectors(A,T);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(T);f.set(0,x(o,!0),E(o,!0)),p.push([A,f.clone()]);let U=(Math.PI-o)/a;for(let Z=0;Z<=a;Z++){let Q=d+o+Z*U;f.set(0,Math.sin(Q)*_,Math.cos(Q)*_),f.add(V),m.set(0,x(Q),E(Q)),p.push([f.clone(),m.clone()])}p.push([S,h(0,1,0)]);let R=Math.sin(U/2)*_*2,W=p.length-1,j=p[0][0].distanceTo(p[1][0]),F=p[W-1][0].distanceTo(p[W][0]),H=j+R*a+F;p[0].push(1);for(let Z=0;Z<=a;Z++)p[Z+1].push(1-(j+Z*R)/H);p[W].push(0);let[q,re,ee]=p[0],X,te,K;for(let Z=1;Z<p.length;Z++)[X,te,K]=p[Z],s.push(P,q.y,q.z,P,X.y,X.z,O,q.y,q.z,O,q.y,q.z,P,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 sf(s,3)),this.setAttribute("normal",new sf(l,3)),this.setAttribute("uv",new sf(c,2))}};var pu=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 Fe?n.shape:new Fe,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,T=h+Math.sin(S)*p,A=f+Math.cos(S)*d;u.addPoint(u.createPoint(T,A))}}else for(let O=0;O<o;O++){let S=h+Math.cos(y)*p,T=f+Math.sin(y)*d;u.addPoint(u.createPoint(S,T)),y+=m,S=h+Math.cos(y)*g,T=f+Math.sin(y)*v,O<=o,u.addPoint(u.createPoint(S,T)),y+=m}u.isClosed=!0;for(let O=0,S=u.points.length;O<S;O++)u.points[O].roundness=i;u.roundness=i,u.update();let P=Zt.create({shape:u,parameters:{roundness:i,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(P,{userData:{...n,type:"StarGeometry"}})}};import{PlaneGeometry as II}from"three";var B0=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 II(r,e);return Object.assign(t,{userData:{...n,type:"TextFrameGeometry"}})}};import{BufferGeometry as NI,Float32BufferAttribute as DI,MathUtils as EI}from"three";var L0=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=EI.clamp(o/360,0,1);if(p===0){let d=new NI;return d.setAttribute("position",new DI([],3)),d}return p===1&&(c=0),new ks(!0,n,r,e,t,p,i,a,s,l,c,u)}import{TorusKnotGeometry as BI}from"three";var R0=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 BI(s,e,t,o,i,a);return Object.assign(l,{userData:{...n,type:"TorusKnotGeometry"}})}};var 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,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1,isRect:!1},n.parameters);return{shape:n.shape&&n.shape instanceof Fe?n.shape:new Fe,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=Zt.create({shape:l,parameters:{roundness:t,depth:o,extrudeBevelSize:i,extrudeBevelSegments:a}});return Object.assign(p,{userData:{...n,type:"TriangleGeometry"}})}};import{Vector2 as z0,Vector3 as Dt,Matrix3 as LI,Matrix4 as Yn,BufferGeometry as j0,BufferAttribute as Ca,MathUtils as fu}from"three";function G0(n,r){let e=2*Math.PI;return(n%e+e)%e===(r%e+e)%e}var RI=new Yn,VI=new Yn;function GI(n,r,e){let t=[new Dt,new Dt,new Dt],o=[new Dt,new Dt,new Dt];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=fu.lerp(i.length(),s.length(),e);i.lerp(s,e).setLength(l)}),new Yn().makeBasis(t[0],t[1],t[2])}var F0=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??va.create({parameters:tp}).userData.shape;return{path:n.path??Ji.defaultData(),parameters:Object.assign(e,{width:t,height:o,depth:i,extrusion:{...Oc,...e.extrusion}}),shapeData:a}}static build(n){if(n.path.points.length>=2){let e=new cf(n);return Object.assign(e,{userData:{...n,type:"PathGeometry"}})}else return Object.assign(new j0,{userData:{...n,type:"PathGeometry"}})}},cf=class extends j0{constructor(e){super();this.type="PathExtrusionGeometry",this.inputs=e,this.build()}_isGeometryClosed(){return this.inputs.path.isClosed&&this.inputs.parameters.extrusion.depth===1}_isOpenEnded(){let e=this.inputs.parameters.extrusion;return!(this.inputs.path.isClosed&&e.depth===1)||!G0(e.twist,0)||e.startScale!==e.endScale}build(){let e=this._extractPathPoints();if(e.length<2)return;let t=this._computeBasisMatrices(e),{depth:o,offset:i}=this.inputs.parameters.extrusion;o=Math.max(0,Math.min(o,1)),i=Math.max(0,Math.min(i,1));let a=this.inputs.path.isClosed?e.length:e.length-1,s=Math.floor(i*a),l=this.inputs.path.isClosed?Math.ceil((o+i)*a):Math.ceil(Math.min(1,o+i)*a),c=Math.min(Math.max(2,l-s+1),a+2),u=[],p=[];for(let j=0;j<c;j++){let F=this.inputs.path.isClosed?(j+s)%e.length:Math.min(j+s,e.length-1);u.push(e[F].clone()),p.push(t[F].clone())}let d=(j,F,H)=>{u[j]=u[j].clone().lerp(u[F],H),p[j]=GI(p[j],p[F],H)},h=0,f=i*a%1;(!this.inputs.path.isClosed||o<=1)&&(f||i===0)&&(h=f,d(0,1,h));let m=0,y=(i+o)*a%1;if((this.inputs.path.isClosed&&o<=1||!this.inputs.path.isClosed&&i+o<1)&&y&&(m=y,d(u.length-1,u.length-2,1-m)),o===0){let j=u.length-1;u[j].copy(u[0]),p[j].copy(p[0])}this._applyPathModifiers(p,h,m);let{bevel:g,bevelSides:v}=this.inputs.parameters.extrusion,P=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:T,vertices:A}=this._computeShapePoints(O),x=0,E;P==="round"&&(E=new fn(this.inputs.shapeData,2*g,g,O,v,void 0,!0),x=E.getAttribute("position").count);let N=0,I=0;T.sort((j,F)=>j.start-F.start),T.forEach(j=>{j.verticesStart=N,j.verticesCount=j.continuous.reduce((F,H,q)=>F+(q===0||!H?2:1),0),I+=j.verticesCount,N=I});let D=I*c,_,B=0;if(this._isOpenEnded()&&P==="flat"){try{_=Vr({windingRule:ze.ODD,elementType:at.POLYGONS,polySize:3,vertexSize:2,strict:!0,contours:S})}catch{_=$p}B=_.vertexCount}let V=D+2*B+x*2,U=D+2*B,R={positions:new Float32Array(V*3),normals:new Float32Array(V*3),uvs:new Float32Array(V*2)},W=[];if(T.forEach(j=>{this._extrudeRegion(j,A,p,u,R,W,this._isGeometryClosed()&&!this._isOpenEnded())}),_&&(this._closeEnd(_,D,W,R,p[0],u[0],!1),this._closeEnd(_,D+B,W,R,p[p.length-1],u[u.length-1],!0)),E){R.positions.set(E.getAttribute("position").array,U*3),R.normals.set(E.getAttribute("normal").array,U*3),R.uvs.set(E.getAttribute("uv").array,U*2);for(let q=U;q<U+x;q++)R.uvs[q*2+1]=1e-4;let j=W.length;W.push(...E.getIndex().array.map(q=>q+U)),U+=x,R.positions.set(E.getAttribute("position").array,U*3),R.normals.set(E.getAttribute("normal").array,U*3),R.uvs.set(E.getAttribute("uv").array,U*2);let F=W.length;W.push(...E.getIndex().array.map(q=>q+U)),this.setAttribute("position",new Ca(R.positions,3)),this.setAttribute("normal",new Ca(R.normals,3)),this.setAttribute("uv",new Ca(R.uvs,2)),this.setIndex(W);let H=RI;H.copy(p[p.length-1]).setPosition(u[u.length-1]),this.applyMatrix4OnRange(H,U,V),H.copy(p[0]).setPosition(u[0]).multiply(VI.makeScale(1,1,-1)),this.applyMatrix4OnRange(H,U-x,U),this.reverseIndicesOnRange(j,F)}else this.setAttribute("position",new Ca(R.positions,3)),this.setAttribute("normal",new Ca(R.normals,3)),this.setAttribute("uv",new Ca(R.uvs,2)),this.setIndex(W)}_extractPathPoints(){let t=qc(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 Dt,s=new Dt,l=new Dt,c=new Dt,u=new Dt(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 P;y===o-1?P=i?e[1]:g.clone().multiplyScalar(2).sub(e[y-1]):P=e[y+1];let O=g.clone().sub(v).normalize(),S=P.clone().sub(g).normalize(),T=O.clone().add(S).normalize();l.copy(T),y===0&&(T.equals(u)||T.clone().negate().equals(u))&&u.set(0,0,1);let A=u.clone().cross(T).normalize(),x=T.clone().cross(A).normalize();u.copy(x),c.copy(A),y===0&&(a.copy(x),s.copy(T));let E=new Yn().makeBasis(A,x,T);t.push(E)}let p=i?s:l,d=i?a:new Dt(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 Yn().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 Yn,p=new Yn;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(fu.lerp(a,a+s,f)*fu.DEG2RAD);let m=fu.lerp(l,c,f);p.makeScale(m,m,m),d.multiply(u).multiply(p)}),e}_computeShapePoints(e=12,t=ze.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 P=y[v-1],O=y[v-0];g.push(P,O)}return g}),s;try{s=Vr({windingRule:t,elementType:at.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[i]})}catch{s=Us}let l;try{l=Vr({windingRule:ze.ODD,elementType:at.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...a]})}catch{l=qp}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],P=s.vertices[g+1];v<u&&(u=v),v>p&&(p=v),P<d&&(d=P),P>h&&(h=P)}let f=[];for(let m=s.elementCount-1;m>=0;m--){let y=m>=c,g=m*2,v=s.elements[g+0],P=s.elements[g+1],O=v+P,S={start:v,count:P,normals:[],isHole:y,continuous:[],verticesStart:0,verticesCount:0};f.push(S);let T=v,A=O-1,x=v+1,E=o.roundedCurves.length;do{let N=T-v,I=s.vertices[A*2+0],D=s.vertices[A*2+1],_=s.vertices[T*2+0],B=s.vertices[T*2+1],V=s.vertices[x*2+0],U=s.vertices[x*2+1],R=_-I,W=B-D,j=Math.sqrt(R*R+W*W);R/=j,W/=j;let F=_-V,H=B-U,q=Math.sqrt(F*F+H*H);F/=q,H/=q,S.normals[N*2+0]=-H,S.normals[N*2+1]=F;let re=s.vertexIndices[T];if(Array.isArray(re))S.continuous[N]=!1;else{let[ee,X]=o.getCurveIndexFromVertexId(re-1,!0);if(X>0&&X<1)S.continuous[N]=!0;else{let te=X===1?ee+1:ee-1;te=(te+E)%E;let K=X===1?0:1,Z=o.roundedCurves[ee].getTangent(X),Q=o.roundedCurves[te].getTangent(K);S.continuous[N]=Z.dot(Q)>.95}}y&&(S.normals[N*2+0]*=-1,S.normals[N*2+1]*=-1),[A,T,x]=[T,x,x+1],x>=O&&(x-=P)}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 Dt,u=new Dt,p=new Dt,d=new Dt,h=new z0;o.forEach((m,y)=>{let g=i[y],v=e.verticesStart*o.length+e.verticesCount*y;for(let P=0;P<e.count;P++){let O=(e.start+P)*2;if(c.set(t[O+0],t[O+1],0),p.copy(c).applyMatrix4(m).add(g),e.continuous[P])d.set(e.normals[P*2+0],e.normals[P*2+1],0);else{let S=P===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(P===0?1:P/e.count,y/(o.length-1)),this._insertVertex(a,v,p,d,h),v++,!e.continuous[P]||P===0){if(P===0)d.set(e.normals[P*2+0],e.normals[P*2+1],0),h.set(0,y/(o.length-1));else{let S=P===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 P=0;P<e.count;P++){(!e.continuous[P]||P===0)&&v++;let O=P===e.count-1?0:v+1,S=y+v,T=y+O,A=g+O,x=g+v;e.isHole?s.push(S,A,T,S,x,A):s.push(S,T,A,S,A,x),v++}}}_closeEnd(e,t,o,i,a,s,l){let c=e.vertexCount,u=new Dt(0,0,l?-1:1).applyMatrix4(a),p=new Dt,d=new z0;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 LI().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}}};import{BufferAttribute as U0,BufferGeometry as uf}from"three";import{mergeBufferGeometries as jI}from"three/examples/jsm/utils/BufferGeometryUtils.js";function k0(){let n=new uf;return n.setAttribute("position",new U0(new Float32Array([]),3)),n.setIndex(new U0(new Uint16Array([]),1)),n}var FI=k0().attributes,UI=12,kI=1,Xn=class extends uf{constructor(e,t){super();this.charWidths=[];this.charCoords=[];this.wrappedText=[];this.isLowResolution=!1;this.vectorShapes=[];Object.assign(this.attributes,FI),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=ln.getDisplayedValue(c),d=u===2?p.toUpperCase():u===3?p.toLowerCase():p,h=HI(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,P=f.map(T=>new Fe().fromShape(T,!0));this.vectorShapes=P;let O=P.map(T=>Zt.create({shape:T,parameters:{depth:a,extrudeBevelSegments:l,extrudeBevelSize:s,windingRule:a<=0?ze.NONZERO:ze.ODD,subdivisions:this.isLowResolution&&a>0?kI:UI}})),S=O.length?jI(O):k0();S.translate(-g,v,0),this.dispose(),this.wrappedText=h,this.charCoords=y,this.charWidths=m,this.deleteAttribute("extrudeNormal"),Object.entries(S.attributes).forEach(([T,A])=>{this.setAttribute(T,A)}),this.setIndex(S.index),this.computeBoundingSphere()}clone(){let e=Lt(new uf,Xn.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 HI(n,r,e){let t=[""],o="";for(let i of e)o+=i,i===" "||i===`
|
|
1
|
+
var O1=Object.create;var Al=Object.defineProperty;var C1=Object.getOwnPropertyDescriptor;var T1=Object.getOwnPropertyNames;var A1=Object.getPrototypeOf,M1=Object.prototype.hasOwnProperty;var I1=(n,r,e)=>r in n?Al(n,r,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[r]=e;var Rn=(n,r)=>()=>(r||n((r={exports:{}}).exports,r),r.exports),N1=(n,r)=>{for(var e in r)Al(n,e,{get:r[e],enumerable:!0})},E1=(n,r,e,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of T1(r))!M1.call(n,o)&&o!==e&&Al(n,o,{get:()=>r[o],enumerable:!(t=C1(r,o))||t.enumerable});return n};var bi=(n,r,e)=>(e=n!=null?O1(A1(n)):{},E1(r||!n||!n.__esModule?Al(e,"default",{value:n,enumerable:!0}):e,n));var Vn=(n,r,e)=>(I1(n,typeof r!="symbol"?r+"":r,e),e);var Ax=Rn((xp,Tx)=>{(function(n,r){typeof xp=="object"?Tx.exports=r():typeof define=="function"&&define.amd?define(r):n.Alea=r()})(xp,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 Dx=Rn(($c,Ex)=>{(function(n,r){typeof $c=="object"&&typeof Ex<"u"?r($c):typeof define=="function"&&define.amd?define(["exports"],r):r((n=typeof globalThis<"u"?globalThis:n||self).SVDJS={})})($c,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,P=r.length;if(P<v)throw new TypeError("Invalid matrix: m < n");for(var O=[],S=[],C=[],A=e==="f"?P:v,x=m=d=0;x<P;x++)S[x]=new Array(A).fill(0);for(x=0;x<v;x++)C[x]=new Array(v).fill(0);var E,N=new Array(v).fill(0);for(x=0;x<P;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<P;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<P;s++)f+=S[s][x]*S[s][a];for(p=f/h,s=x;s<P;s++)S[s][a]=S[s][a]+p*S[s][x]}for(N[x]=d,f=0,a=l;a<v;a++)f+=Math.pow(S[x][a],2);if(f<i)d=0;else{for(h=(p=S[x][x+1])*(d=p<0?Math.sqrt(f):-Math.sqrt(f))-f,S[x][x+1]=p-d,a=l;a<v;a++)O[a]=S[x][a]/h;for(a=l;a<P;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(N[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<P;x++){for(a=v;a<P;a++)S[x][a]=0;S[x][x]=1}for(x=v-1;0<=x;x--){for(l=x+1,d=N[x],a=l;a<A;a++)S[x][a]=0;if(d!==0){for(h=S[x][x]*d,a=l;a<A;a++){for(f=0,s=l;s<P;s++)f+=S[s][x]*S[s][a];for(p=f/h,s=x;s<P;s++)S[s][a]=S[s][a]+p*S[s][x]}for(a=x;a<P;a++)S[a][x]=S[a][x]/d}else for(a=x;a<P;a++)S[a][x]=0;S[x][x]=S[x][x]+1}}for(o*=m,s=v-1;0<=s;s--)for(var I=0;I<50;I++){for(E=!1,l=s;0<=l;l--){if(Math.abs(O[l])<=o){E=!0;break}if(Math.abs(N[l-1])<=o)break}if(!E){for(u=0,c=l-(f=1),x=l;x<s+1&&(p=f*O[x],O[x]=u*O[x],!(Math.abs(p)<=o));x++)if(d=N[x],N[x]=Math.sqrt(p*p+d*d),u=d/(h=N[x]),f=-p/h,e)for(a=0;a<P;a++)y=S[a][c],g=S[a][x],S[a][c]=y*u+g*f,S[a][x]=-y*f+g*u}if(g=N[s],l===s){if(g<0&&(N[s]=-g,t))for(a=0;a<v;a++)C[a][s]=-C[a][s];break}for(m=N[l],p=(((y=N[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=N[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/(N[x-1]=g))*d+(f=h/g)*y,m=-f*d+u*y,e)for(a=0;a<P;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,N[s]=m}for(x=0;x<v;x++)N[x]<o&&(N[x]=0);return{u:S,q:N,v:C}},n.VERSION="1.1.1",Object.defineProperty(n,"__esModule",{value:!0})})});var d0=Rn((Wp,qp)=>{(function(n,r){typeof Wp=="object"&&typeof qp<"u"?qp.exports=r():typeof define=="function"&&define.amd?define(r):(n=n||self,n.TinyQueue=r())})(Wp,function(){"use strict";var n=function(t,o){if(t===void 0&&(t=[]),o===void 0&&(o=r),this.data=t,this.length=this.data.length,this.compare=o,this.length>0)for(var i=(this.length>>1)-1;i>=0;i--)this._down(i)};n.prototype.push=function(t){this.data.push(t),this.length++,this._up(this.length-1)},n.prototype.pop=function(){if(this.length!==0){var t=this.data[0],o=this.data.pop();return this.length--,this.length>0&&(this.data[0]=o,this._down(0)),t}},n.prototype.peek=function(){return this.data[0]},n.prototype._up=function(t){for(var o=this,i=o.data,a=o.compare,s=i[t];t>0;){var l=t-1>>1,c=i[l];if(a(s,c)>=0)break;i[t]=c,t=l}i[t]=s},n.prototype._down=function(t){for(var o=this,i=o.data,a=o.compare,s=this.length>>1,l=i[t];t<s;){var c=(t<<1)+1,u=i[c],p=c+1;if(p<this.length&&a(i[p],u)<0&&(c=p,u=i[p]),a(u,l)>=0)break;i[t]=u,t=c}i[t]=l};function r(e,t){return e<t?-1:e>t?1:0}return n})});var f0=Rn((i6,$p)=>{"use strict";var nu=d0();nu.default&&(nu=nu.default);$p.exports=p0;$p.exports.default=p0;function p0(n,r,e){r=r||1;for(var t,o,i,a,s=0;s<n[0].length;s++){var l=n[0][s];(!s||l[0]<t)&&(t=l[0]),(!s||l[1]<o)&&(o=l[1]),(!s||l[0]>i)&&(i=l[0]),(!s||l[1]>a)&&(a=l[1])}var c=i-t,u=a-o,p=Math.min(c,u),d=p/2;if(p===0){var h=[t,o];return h.distance=0,h}for(var f=new nu(void 0,uI),m=t;m<i;m+=p)for(var y=o;y<a;y+=p)f.push(new fn(m+d,y+d,d,n));var g=pI(n),v=new fn(t+c/2,o+u/2,0,n);v.d>g.d&&(g=v);for(var P=f.length;f.length;){var O=f.pop();O.d>g.d&&(g=O,e&&console.log("found best %d after %d probes",Math.round(1e4*O.d)/1e4,P)),!(O.max-g.d<=r)&&(d=O.h/2,f.push(new fn(O.x-d,O.y-d,d,n)),f.push(new fn(O.x+d,O.y-d,d,n)),f.push(new fn(O.x-d,O.y+d,d,n)),f.push(new fn(O.x+d,O.y+d,d,n)),P+=4)}e&&(console.log("num probes: "+P),console.log("best distance: "+g.d));var S=[g.x,g.y];return S.distance=g.d,S}function uI(n,r){return r.max-n.max}function fn(n,r,e,t){this.x=n,this.y=r,this.h=e,this.d=dI(n,r,t),this.max=this.d+this.h*Math.SQRT2}function dI(n,r,e){for(var t=!1,o=1/0,i=0;i<e.length;i++)for(var a=e[i],s=0,l=a.length,c=l-1;s<l;c=s++){var u=a[s],p=a[c];u[1]>r!=p[1]>r&&n<(p[0]-u[0])*(r-u[1])/(p[1]-u[1])+u[0]&&(t=!t),o=Math.min(o,fI(n,r,u,p))}return o===0?0:(t?1:-1)*Math.sqrt(o)}function pI(n){for(var r=0,e=0,t=0,o=n[0],i=0,a=o.length,s=a-1;i<a;s=i++){var l=o[i],c=o[s],u=l[0]*c[1]-c[0]*l[1];e+=(l[0]+c[0])*u,t+=(l[1]+c[1])*u,r+=u*3}return r===0?new fn(o[0][0],o[0][1],0,n):new fn(e/r,t/r,0,n)}function fI(n,r,e,t){var o=e[0],i=e[1],a=t[0]-o,s=t[1]-i;if(a!==0||s!==0){var l=((n-o)*a+(r-i)*s)/(a*a+s*s);l>1?(o=t[0],i=t[1]):l>0&&(o+=a*l,i+=s*l)}return a=n-o,s=r-i,a*a+s*s}});var Kv=Rn((hse,Xv)=>{"use strict";function dD(n,r){function e(){this.constructor=n}e.prototype=r.prototype,n.prototype=new e}function pi(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,pi)}dD(pi,Error);pi.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 pD(n,r){r=r!==void 0?r:{};var e={},t={svg_path:ms},o=ms,i=function(b){if(!b)return[];for(var w=[],L=0;L<b.length;L++)w=w.concat.apply(w,b[L]);var M=w[0];return M&&M.code=="m"&&(delete M.relative,M.code="M"),w},a=function(b,w){return P1(b,w)},s=/^[Mm]/,l=Xe(["M","m"],!1,!1),c=function(b,w,L){var M=gi(b,[w]);return L&&(M=M.concat(gi(b=="M"?"L":"l",L[1]))),M},u=/^[Zz]/,p=Xe(["Z","z"],!1,!1),d=function(){return gi("Z")},h=/^[Ll]/,f=Xe(["L","l"],!1,!1),m=function(b,w){return gi(b,w)},y=/^[Hh]/,g=Xe(["H","h"],!1,!1),v=function(b,w){return gi(b,w.map(function(L){return{x:L}}))},P=/^[Vv]/,O=Xe(["V","v"],!1,!1),S=function(b,w){return gi(b,w.map(function(L){return{y:L}}))},C=/^[Cc]/,A=Xe(["C","c"],!1,!1),x=function(b,w,L){return{x1:b.x,y1:b.y,x2:w.x,y2:w.y,x:L.x,y:L.y}},E=/^[Ss]/,N=Xe(["S","s"],!1,!1),I=function(b,w){return{x2:b.x,y2:b.y,x:w.x,y:w.y}},D=/^[Qq]/,_=Xe(["Q","q"],!1,!1),B=function(b,w){return{x1:b.x,y1:b.y,x:w.x,y:w.y}},V=/^[Tt]/,U=Xe(["T","t"],!1,!1),R=/^[Aa]/,W=Xe(["A","a"],!1,!1),j=function(b,w,L,M,G,oe){return{rx:b,ry:w,xAxisRotation:L,largeArc:M,sweep:G,x:oe.x,y:oe.y}},F=function(b,w){return{x:b,y:w}},H=function(b){return b*1},q=function(b){return b.join("")*1},re=/^[01]/,ee=Xe(["0","1"],!1,!1),X=function(b){return b=="1"},te=function(){return""},K=",",Z=ot(",",!1),Q=function(b){return b.join("")},$=".",ue=ot(".",!1),le=/^[eE]/,ne=Xe(["e","E"],!1,!1),ce=/^[+\-]/,ae=Xe(["+","-"],!1,!1),me=/^[0-9]/,pe=Xe([["0","9"]],!1,!1),he=function(b){return b.join("")},xe=/^[ \t\n\r]/,ye=Xe([" "," ",`
|
|
2
|
+
`,"\r"],!1,!1),T=0,ie=0,De=[{line:1,column:1}],Ve=0,_e=[],Pe=0,vt;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 Me(){return n.substring(ie,T)}function gt(){return _n(ie,T)}function St(b,w){throw w=w!==void 0?w:_n(ie,T),hr([vd(b)],n.substring(ie,T),w)}function Dn(b,w){throw w=w!==void 0?w:_n(ie,T),Sd(b,w)}function ot(b,w){return{type:"literal",text:b,ignoreCase:w}}function Xe(b,w,L){return{type:"class",parts:b,inverted:w,ignoreCase:L}}function Ar(){return{type:"any"}}function bd(){return{type:"end"}}function vd(b){return{type:"other",description:b}}function wl(b){var w=De[b],L;if(w)return w;for(L=b-1;!De[L];)L--;for(w=De[L],w={line:w.line,column:w.column};L<b;)n.charCodeAt(L)===10?(w.line++,w.column=1):w.column++,L++;return De[b]=w,w}function _n(b,w){var L=wl(b),M=wl(w);return{start:{offset:b,line:L.line,column:L.column},end:{offset:w,line:M.line,column:M.column}}}function ct(b){T<Ve||(T>Ve&&(Ve=T,_e=[]),_e.push(b))}function Sd(b,w){return new pi(b,null,null,w)}function hr(b,w,L){return new pi(pi.buildMessage(b,w),b,w,L)}function ms(){var b,w,L,M,G;for(b=T,w=[],L=Ge();L!==e;)w.push(L),L=Ge();if(w!==e)if(L=kt(),L===e&&(L=null),L!==e){for(M=[],G=Ge();G!==e;)M.push(G),G=Ge();M!==e?(ie=b,w=i(L),b=w):(T=b,b=e)}else T=b,b=e;else T=b,b=e;return b}function kt(){var b,w,L,M,G,oe;if(b=T,w=Bn(),w!==e){for(L=[],M=T,G=[],oe=Ge();oe!==e;)G.push(oe),oe=Ge();for(G!==e?(oe=Bn(),oe!==e?(G=[G,oe],M=G):(T=M,M=e)):(T=M,M=e);M!==e;){for(L.push(M),M=T,G=[],oe=Ge();oe!==e;)G.push(oe),oe=Ge();G!==e?(oe=Bn(),oe!==e?(G=[G,oe],M=G):(T=M,M=e)):(T=M,M=e)}L!==e?(ie=b,w=a(w,L),b=w):(T=b,b=e)}else T=b,b=e;return b}function Bn(){var b,w,L,M,G,oe;if(b=T,w=mi(),w!==e){for(L=[],M=T,G=[],oe=Ge();oe!==e;)G.push(oe),oe=Ge();for(G!==e?(oe=Pl(),oe!==e?(G=[G,oe],M=G):(T=M,M=e)):(T=M,M=e);M!==e;){for(L.push(M),M=T,G=[],oe=Ge();oe!==e;)G.push(oe),oe=Ge();G!==e?(oe=Pl(),oe!==e?(G=[G,oe],M=G):(T=M,M=e)):(T=M,M=e)}L!==e?(ie=b,w=a(w,L),b=w):(T=b,b=e)}else T=b,b=e;return b}function Pl(){var b;return b=l1(),b===e&&(b=c1(),b===e&&(b=u1(),b===e&&(b=d1(),b===e&&(b=p1(),b===e&&(b=h1(),b===e&&(b=y1(),b===e&&(b=x1(),b===e&&(b=v1())))))))),b}function mi(){var b,w,L,M,G,oe,xi;if(b=T,s.test(n.charAt(T))?(w=n.charAt(T),T++):(w=e,Pe===0&&ct(l)),w!==e){for(L=[],M=Ge();M!==e;)L.push(M),M=Ge();L!==e?(M=Wt(),M!==e?(G=T,oe=et(),oe===e&&(oe=null),oe!==e?(xi=_h(),xi!==e?(oe=[oe,xi],G=oe):(T=G,G=e)):(T=G,G=e),G===e&&(G=null),G!==e?(ie=b,w=c(w,M,G),b=w):(T=b,b=e)):(T=b,b=e)):(T=b,b=e)}else T=b,b=e;return b}function l1(){var b,w;return b=T,u.test(n.charAt(T))?(w=n.charAt(T),T++):(w=e,Pe===0&&ct(p)),w!==e&&(ie=b,w=d()),b=w,b}function c1(){var b,w,L,M;if(b=T,h.test(n.charAt(T))?(w=n.charAt(T),T++):(w=e,Pe===0&&ct(f)),w!==e){for(L=[],M=Ge();M!==e;)L.push(M),M=Ge();L!==e?(M=_h(),M!==e?(ie=b,w=m(w,M),b=w):(T=b,b=e)):(T=b,b=e)}else T=b,b=e;return b}function _h(){var b,w,L,M,G,oe;if(b=T,w=Wt(),w!==e){for(L=[],M=T,G=et(),G===e&&(G=null),G!==e?(oe=Wt(),oe!==e?(G=[G,oe],M=G):(T=M,M=e)):(T=M,M=e);M!==e;)L.push(M),M=T,G=et(),G===e&&(G=null),G!==e?(oe=Wt(),oe!==e?(G=[G,oe],M=G):(T=M,M=e)):(T=M,M=e);L!==e?(ie=b,w=a(w,L),b=w):(T=b,b=e)}else T=b,b=e;return b}function u1(){var b,w,L,M;if(b=T,y.test(n.charAt(T))?(w=n.charAt(T),T++):(w=e,Pe===0&&ct(g)),w!==e){for(L=[],M=Ge();M!==e;)L.push(M),M=Ge();L!==e?(M=Bh(),M!==e?(ie=b,w=v(w,M),b=w):(T=b,b=e)):(T=b,b=e)}else T=b,b=e;return b}function Bh(){var b,w,L,M,G,oe;if(b=T,w=yi(),w!==e){for(L=[],M=T,G=et(),G===e&&(G=null),G!==e?(oe=yi(),oe!==e?(G=[G,oe],M=G):(T=M,M=e)):(T=M,M=e);M!==e;)L.push(M),M=T,G=et(),G===e&&(G=null),G!==e?(oe=yi(),oe!==e?(G=[G,oe],M=G):(T=M,M=e)):(T=M,M=e);L!==e?(ie=b,w=a(w,L),b=w):(T=b,b=e)}else T=b,b=e;return b}function d1(){var b,w,L,M;if(b=T,P.test(n.charAt(T))?(w=n.charAt(T),T++):(w=e,Pe===0&&ct(O)),w!==e){for(L=[],M=Ge();M!==e;)L.push(M),M=Ge();L!==e?(M=Bh(),M!==e?(ie=b,w=S(w,M),b=w):(T=b,b=e)):(T=b,b=e)}else T=b,b=e;return b}function p1(){var b,w,L,M;if(b=T,C.test(n.charAt(T))?(w=n.charAt(T),T++):(w=e,Pe===0&&ct(A)),w!==e){for(L=[],M=Ge();M!==e;)L.push(M),M=Ge();L!==e?(M=f1(),M!==e?(ie=b,w=m(w,M),b=w):(T=b,b=e)):(T=b,b=e)}else T=b,b=e;return b}function f1(){var b,w,L,M,G,oe;if(b=T,w=wd(),w!==e){for(L=[],M=T,G=et(),G===e&&(G=null),G!==e?(oe=wd(),oe!==e?(G=[G,oe],M=G):(T=M,M=e)):(T=M,M=e);M!==e;)L.push(M),M=T,G=et(),G===e&&(G=null),G!==e?(oe=wd(),oe!==e?(G=[G,oe],M=G):(T=M,M=e)):(T=M,M=e);L!==e?(ie=b,w=a(w,L),b=w):(T=b,b=e)}else T=b,b=e;return b}function wd(){var b,w,L,M,G,oe;return b=T,w=Wt(),w!==e?(L=et(),L===e&&(L=null),L!==e?(M=Wt(),M!==e?(G=et(),G===e&&(G=null),G!==e?(oe=Wt(),oe!==e?(ie=b,w=x(w,M,oe),b=w):(T=b,b=e)):(T=b,b=e)):(T=b,b=e)):(T=b,b=e)):(T=b,b=e),b}function h1(){var b,w,L,M;if(b=T,E.test(n.charAt(T))?(w=n.charAt(T),T++):(w=e,Pe===0&&ct(N)),w!==e){for(L=[],M=Ge();M!==e;)L.push(M),M=Ge();L!==e?(M=m1(),M!==e?(ie=b,w=m(w,M),b=w):(T=b,b=e)):(T=b,b=e)}else T=b,b=e;return b}function m1(){var b,w,L,M,G,oe;if(b=T,w=Pd(),w!==e){for(L=[],M=T,G=et(),G===e&&(G=null),G!==e?(oe=Pd(),oe!==e?(G=[G,oe],M=G):(T=M,M=e)):(T=M,M=e);M!==e;)L.push(M),M=T,G=et(),G===e&&(G=null),G!==e?(oe=Pd(),oe!==e?(G=[G,oe],M=G):(T=M,M=e)):(T=M,M=e);L!==e?(ie=b,w=a(w,L),b=w):(T=b,b=e)}else T=b,b=e;return b}function Pd(){var b,w,L,M;return b=T,w=Wt(),w!==e?(L=et(),L===e&&(L=null),L!==e?(M=Wt(),M!==e?(ie=b,w=I(w,M),b=w):(T=b,b=e)):(T=b,b=e)):(T=b,b=e),b}function y1(){var b,w,L,M;if(b=T,D.test(n.charAt(T))?(w=n.charAt(T),T++):(w=e,Pe===0&&ct(_)),w!==e){for(L=[],M=Ge();M!==e;)L.push(M),M=Ge();L!==e?(M=g1(),M!==e?(ie=b,w=m(w,M),b=w):(T=b,b=e)):(T=b,b=e)}else T=b,b=e;return b}function g1(){var b,w,L,M,G,oe;if(b=T,w=Od(),w!==e){for(L=[],M=T,G=et(),G===e&&(G=null),G!==e?(oe=Od(),oe!==e?(G=[G,oe],M=G):(T=M,M=e)):(T=M,M=e);M!==e;)L.push(M),M=T,G=et(),G===e&&(G=null),G!==e?(oe=Od(),oe!==e?(G=[G,oe],M=G):(T=M,M=e)):(T=M,M=e);L!==e?(ie=b,w=a(w,L),b=w):(T=b,b=e)}else T=b,b=e;return b}function Od(){var b,w,L,M;return b=T,w=Wt(),w!==e?(L=et(),L===e&&(L=null),L!==e?(M=Wt(),M!==e?(ie=b,w=B(w,M),b=w):(T=b,b=e)):(T=b,b=e)):(T=b,b=e),b}function x1(){var b,w,L,M;if(b=T,V.test(n.charAt(T))?(w=n.charAt(T),T++):(w=e,Pe===0&&ct(U)),w!==e){for(L=[],M=Ge();M!==e;)L.push(M),M=Ge();L!==e?(M=b1(),M!==e?(ie=b,w=m(w,M),b=w):(T=b,b=e)):(T=b,b=e)}else T=b,b=e;return b}function b1(){var b,w,L,M,G,oe;if(b=T,w=Wt(),w!==e){for(L=[],M=T,G=et(),G===e&&(G=null),G!==e?(oe=Wt(),oe!==e?(G=[G,oe],M=G):(T=M,M=e)):(T=M,M=e);M!==e;)L.push(M),M=T,G=et(),G===e&&(G=null),G!==e?(oe=Wt(),oe!==e?(G=[G,oe],M=G):(T=M,M=e)):(T=M,M=e);L!==e?(ie=b,w=a(w,L),b=w):(T=b,b=e)}else T=b,b=e;return b}function v1(){var b,w,L,M;if(b=T,R.test(n.charAt(T))?(w=n.charAt(T),T++):(w=e,Pe===0&&ct(W)),w!==e){for(L=[],M=Ge();M!==e;)L.push(M),M=Ge();L!==e?(M=S1(),M!==e?(ie=b,w=m(w,M),b=w):(T=b,b=e)):(T=b,b=e)}else T=b,b=e;return b}function S1(){var b,w,L,M,G,oe;if(b=T,w=Cd(),w!==e){for(L=[],M=T,G=et(),G===e&&(G=null),G!==e?(oe=Cd(),oe!==e?(G=[G,oe],M=G):(T=M,M=e)):(T=M,M=e);M!==e;)L.push(M),M=T,G=et(),G===e&&(G=null),G!==e?(oe=Cd(),oe!==e?(G=[G,oe],M=G):(T=M,M=e)):(T=M,M=e);L!==e?(ie=b,w=a(w,L),b=w):(T=b,b=e)}else T=b,b=e;return b}function Cd(){var b,w,L,M,G,oe,xi,Ad,Cl,Md,Tl,Id;return b=T,w=Lh(),w!==e?(L=et(),L===e&&(L=null),L!==e?(M=Lh(),M!==e?(G=et(),G===e&&(G=null),G!==e?(oe=yi(),oe!==e?(xi=et(),xi!==e?(Ad=Rh(),Ad!==e?(Cl=et(),Cl===e&&(Cl=null),Cl!==e?(Md=Rh(),Md!==e?(Tl=et(),Tl===e&&(Tl=null),Tl!==e?(Id=Wt(),Id!==e?(ie=b,w=j(w,M,oe,Ad,Md,Id),b=w):(T=b,b=e)):(T=b,b=e)):(T=b,b=e)):(T=b,b=e)):(T=b,b=e)):(T=b,b=e)):(T=b,b=e)):(T=b,b=e)):(T=b,b=e)):(T=b,b=e)):(T=b,b=e),b}function Wt(){var b,w,L,M;return b=T,w=yi(),w!==e?(L=et(),L===e&&(L=null),L!==e?(M=yi(),M!==e?(ie=b,w=F(w,M),b=w):(T=b,b=e)):(T=b,b=e)):(T=b,b=e),b}function Lh(){var b,w;return b=T,w=Gh(),w===e&&(w=Ln()),w!==e&&(ie=b,w=H(w)),b=w,b}function yi(){var b,w,L,M;return b=T,w=T,L=Td(),L===e&&(L=null),L!==e?(M=Gh(),M!==e?(L=[L,M],w=L):(T=w,w=e)):(T=w,w=e),w===e&&(w=T,L=Td(),L===e&&(L=null),L!==e?(M=Ln(),M!==e?(L=[L,M],w=L):(T=w,w=e)):(T=w,w=e)),w!==e&&(ie=b,w=q(w)),b=w,b}function Rh(){var b,w;return b=T,re.test(n.charAt(T))?(w=n.charAt(T),T++):(w=e,Pe===0&&ct(ee)),w!==e&&(ie=b,w=X(w)),b=w,b}function et(){var b,w,L,M,G;if(b=T,w=[],L=Ge(),L!==e)for(;L!==e;)w.push(L),L=Ge();else w=e;if(w!==e)if(L=Vh(),L===e&&(L=null),L!==e){for(M=[],G=Ge();G!==e;)M.push(G),G=Ge();M!==e?(w=[w,L,M],b=w):(T=b,b=e)}else T=b,b=e;else T=b,b=e;if(b===e){if(b=T,w=T,L=Vh(),L!==e){for(M=[],G=Ge();G!==e;)M.push(G),G=Ge();M!==e?(L=[L,M],w=L):(T=w,w=e)}else T=w,w=e;w!==e&&(ie=b,w=te()),b=w}return b}function Vh(){var b;return n.charCodeAt(T)===44?(b=K,T++):(b=e,Pe===0&&ct(Z)),b}function Gh(){var b,w,L,M;return b=T,w=T,L=w1(),L!==e?(M=zh(),M===e&&(M=null),M!==e?(L=[L,M],w=L):(T=w,w=e)):(T=w,w=e),w===e&&(w=T,L=Ln(),L!==e?(M=zh(),M!==e?(L=[L,M],w=L):(T=w,w=e)):(T=w,w=e)),w!==e&&(ie=b,w=Q(w)),b=w,b}function w1(){var b,w,L,M,G;return b=T,w=T,L=Ln(),L===e&&(L=null),L!==e?(n.charCodeAt(T)===46?(M=$,T++):(M=e,Pe===0&&ct(ue)),M!==e?(G=Ln(),G!==e?(L=[L,M,G],w=L):(T=w,w=e)):(T=w,w=e)):(T=w,w=e),w===e&&(w=T,L=Ln(),L!==e?(n.charCodeAt(T)===46?(M=$,T++):(M=e,Pe===0&&ct(ue)),M!==e?(L=[L,M],w=L):(T=w,w=e)):(T=w,w=e)),w!==e&&(ie=b,w=Q(w)),b=w,b}function zh(){var b,w,L,M,G;return b=T,w=T,le.test(n.charAt(T))?(L=n.charAt(T),T++):(L=e,Pe===0&&ct(ne)),L!==e?(M=Td(),M===e&&(M=null),M!==e?(G=Ln(),G!==e?(L=[L,M,G],w=L):(T=w,w=e)):(T=w,w=e)):(T=w,w=e),w!==e&&(ie=b,w=Q(w)),b=w,b}function Td(){var b;return ce.test(n.charAt(T))?(b=n.charAt(T),T++):(b=e,Pe===0&&ct(ae)),b}function Ln(){var b,w,L;if(b=T,w=[],me.test(n.charAt(T))?(L=n.charAt(T),T++):(L=e,Pe===0&&ct(pe)),L!==e)for(;L!==e;)w.push(L),me.test(n.charAt(T))?(L=n.charAt(T),T++):(L=e,Pe===0&&ct(pe));else w=e;return w!==e&&(ie=b,w=he(w)),b=w,b}function Ge(){var b,w;return b=T,xe.test(n.charAt(T))?(w=n.charAt(T),T++):(w=e,Pe===0&&ct(ye)),w!==e&&(ie=b,w=te()),b=w,b}function P1(b,w){if(!w)return[b];for(var L=[b],M=0,G=w.length;M<G;M++)L[M+1]=w[M][1];return L}var Ol={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 jh in Ol)Ol[jh.toUpperCase()]=Ol[jh];function gi(b,w){w||(w=[{}]);for(var L=w.length;L--;){var M={code:b,command:Ol[b]};b==b.toLowerCase()&&(M.relative=!0);for(var G in w[L])M[G]=w[L][G];w[L]=M}return w}if(vt=o(),vt!==e&&T===n.length)return vt;throw vt!==e&&T<n.length&&ct(bd()),hr(_e,Ve<n.length?n.charAt(Ve):null,Ve<n.length?_n(Ve,Ve+1):_n(Ve,Ve))}Xv.exports={SyntaxError:pi,parse:pD}});var ph=Rn((mse,Qv)=>{var td=Kv().parse;td.parseSVG=td;td.makeAbsolute=fD;Qv.exports=td;function fD(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 i1=Rn((fhe,n1)=>{n1.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}});import{FileLoader as J_,Loader as eB}from"three";function Ml(n){for(let r of Object.keys(n))n[r]===void 0&&delete n[r];return n}function Rt(n,r){return Object.setPrototypeOf(n,r),n}function Il(n){return Array.isArray(n)?n:[n]}function Nl(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 D1=typeof global=="object"&&global&&global.Object===Object&&global,El=D1;var _1=typeof self=="object"&&self&&self.Object===Object&&self,B1=El||_1||Function("return this")(),ut=B1;var L1=ut.Symbol,At=L1;var Fh=Object.prototype,R1=Fh.hasOwnProperty,V1=Fh.toString,ys=At?At.toStringTag:void 0;function G1(n){var r=R1.call(n,ys),e=n[ys];try{n[ys]=void 0;var t=!0}catch{}var o=V1.call(n);return t&&(r?n[ys]=e:delete n[ys]),o}var Uh=G1;var z1=Object.prototype,j1=z1.toString;function F1(n){return j1.call(n)}var kh=F1;var U1="[object Null]",k1="[object Undefined]",Hh=At?At.toStringTag:void 0;function H1(n){return n==null?n===void 0?k1:U1:Hh&&Hh in Object(n)?Uh(n):kh(n)}var sr=H1;function W1(n){return n!=null&&typeof n=="object"}var Vt=W1;var q1="[object Symbol]";function $1(n){return typeof n=="symbol"||Vt(n)&&sr(n)==q1}var Wo=$1;function Y1(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 Dl=Y1;var X1=Array.isArray,dt=X1;var K1=1/0,Wh=At?At.prototype:void 0,qh=Wh?Wh.toString:void 0;function $h(n){if(typeof n=="string")return n;if(dt(n))return Dl(n,$h)+"";if(Wo(n))return qh?qh.call(n):"";var r=n+"";return r=="0"&&1/n==-K1?"-0":r}var Yh=$h;var Q1=/\s/;function Z1(n){for(var r=n.length;r--&&Q1.test(n.charAt(r)););return r}var Xh=Z1;var J1=/^\s+/;function ew(n){return n&&n.slice(0,Xh(n)+1).replace(J1,"")}var Kh=ew;function tw(n){var r=typeof n;return n!=null&&(r=="object"||r=="function")}var Mt=tw;var Qh=0/0,rw=/^[-+]0x[0-9a-f]+$/i,ow=/^0b[01]+$/i,nw=/^0o[0-7]+$/i,iw=parseInt;function aw(n){if(typeof n=="number")return n;if(Wo(n))return Qh;if(Mt(n)){var r=typeof n.valueOf=="function"?n.valueOf():n;n=Mt(r)?r+"":r}if(typeof n!="string")return n===0?n:+n;n=Kh(n);var e=ow.test(n);return e||nw.test(n)?iw(n.slice(2),e?2:8):rw.test(n)?Qh:+n}var Nd=aw;function sw(n){return n}var Zh=sw;var lw="[object AsyncFunction]",cw="[object Function]",uw="[object GeneratorFunction]",dw="[object Proxy]";function pw(n){if(!Mt(n))return!1;var r=sr(n);return r==cw||r==uw||r==lw||r==dw}var _l=pw;var fw=ut["__core-js_shared__"],Bl=fw;var Jh=function(){var n=/[^.]+$/.exec(Bl&&Bl.keys&&Bl.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}();function hw(n){return!!Jh&&Jh in n}var em=hw;var mw=Function.prototype,yw=mw.toString;function gw(n){if(n!=null){try{return yw.call(n)}catch{}try{return n+""}catch{}}return""}var xo=gw;var xw=/[\\^$.*+?()[\]{}|]/g,bw=/^\[object .+?Constructor\]$/,vw=Function.prototype,Sw=Object.prototype,ww=vw.toString,Pw=Sw.hasOwnProperty,Ow=RegExp("^"+ww.call(Pw).replace(xw,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Cw(n){if(!Mt(n)||em(n))return!1;var r=_l(n)?Ow:bw;return r.test(xo(n))}var tm=Cw;function Tw(n,r){return n?.[r]}var rm=Tw;function Aw(n,r){var e=rm(n,r);return tm(e)?e:void 0}var Qt=Aw;var Mw=Qt(ut,"WeakMap"),Ll=Mw;var om=Object.create,Iw=function(){function n(){}return function(r){if(!Mt(r))return{};if(om)return om(r);n.prototype=r;var e=new n;return n.prototype=void 0,e}}(),nm=Iw;function Nw(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 im=Nw;function Ew(n,r){var e=-1,t=n.length;for(r||(r=Array(t));++e<t;)r[e]=n[e];return r}var am=Ew;var Dw=800,_w=16,Bw=Date.now;function Lw(n){var r=0,e=0;return function(){var t=Bw(),o=_w-(t-e);if(e=t,o>0){if(++r>=Dw)return arguments[0]}else r=0;return n.apply(void 0,arguments)}}var sm=Lw;function Rw(n){return function(){return n}}var lm=Rw;var Vw=function(){try{var n=Qt(Object,"defineProperty");return n({},"",{}),n}catch{}}(),vi=Vw;var Gw=vi?function(n,r){return vi(n,"toString",{configurable:!0,enumerable:!1,value:lm(r),writable:!0})}:Zh,cm=Gw;var zw=sm(cm),um=zw;function jw(n,r){for(var e=-1,t=n==null?0:n.length;++e<t&&r(n[e],e,n)!==!1;);return n}var dm=jw;var Fw=9007199254740991,Uw=/^(?:0|[1-9]\d*)$/;function kw(n,r){var e=typeof n;return r=r??Fw,!!r&&(e=="number"||e!="symbol"&&Uw.test(n))&&n>-1&&n%1==0&&n<r}var Si=kw;function Hw(n,r,e){r=="__proto__"&&vi?vi(n,r,{configurable:!0,enumerable:!0,value:e,writable:!0}):n[r]=e}var Rl=Hw;function Ww(n,r){return n===r||n!==n&&r!==r}var wi=Ww;var qw=Object.prototype,$w=qw.hasOwnProperty;function Yw(n,r,e){var t=n[r];(!($w.call(n,r)&&wi(t,e))||e===void 0&&!(r in n))&&Rl(n,r,e)}var Pi=Yw;function Xw(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?Rl(e,s,l):Pi(e,s,l)}return e}var qr=Xw;var pm=Math.max;function Kw(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),im(n,this,s)}}var fm=Kw;var Qw=9007199254740991;function Zw(n){return typeof n=="number"&&n>-1&&n%1==0&&n<=Qw}var Oi=Zw;function Jw(n){return n!=null&&Oi(n.length)&&!_l(n)}var Vl=Jw;var e2=Object.prototype;function t2(n){var r=n&&n.constructor,e=typeof r=="function"&&r.prototype||e2;return n===e}var Ci=t2;function r2(n,r){for(var e=-1,t=Array(n);++e<n;)t[e]=r(e);return t}var hm=r2;var o2="[object Arguments]";function n2(n){return Vt(n)&&sr(n)==o2}var Ed=n2;var mm=Object.prototype,i2=mm.hasOwnProperty,a2=mm.propertyIsEnumerable,s2=Ed(function(){return arguments}())?Ed:function(n){return Vt(n)&&i2.call(n,"callee")&&!a2.call(n,"callee")},Ti=s2;function l2(){return!1}var ym=l2;var bm=typeof exports=="object"&&exports&&!exports.nodeType&&exports,gm=bm&&typeof module=="object"&&module&&!module.nodeType&&module,c2=gm&&gm.exports===bm,xm=c2?ut.Buffer:void 0,u2=xm?xm.isBuffer:void 0,d2=u2||ym,Gn=d2;var p2="[object Arguments]",f2="[object Array]",h2="[object Boolean]",m2="[object Date]",y2="[object Error]",g2="[object Function]",x2="[object Map]",b2="[object Number]",v2="[object Object]",S2="[object RegExp]",w2="[object Set]",P2="[object String]",O2="[object WeakMap]",C2="[object ArrayBuffer]",T2="[object DataView]",A2="[object Float32Array]",M2="[object Float64Array]",I2="[object Int8Array]",N2="[object Int16Array]",E2="[object Int32Array]",D2="[object Uint8Array]",_2="[object Uint8ClampedArray]",B2="[object Uint16Array]",L2="[object Uint32Array]",tt={};tt[A2]=tt[M2]=tt[I2]=tt[N2]=tt[E2]=tt[D2]=tt[_2]=tt[B2]=tt[L2]=!0;tt[p2]=tt[f2]=tt[C2]=tt[h2]=tt[T2]=tt[m2]=tt[y2]=tt[g2]=tt[x2]=tt[b2]=tt[v2]=tt[S2]=tt[w2]=tt[P2]=tt[O2]=!1;function R2(n){return Vt(n)&&Oi(n.length)&&!!tt[sr(n)]}var vm=R2;function V2(n){return function(r){return n(r)}}var Ai=V2;var Sm=typeof exports=="object"&&exports&&!exports.nodeType&&exports,gs=Sm&&typeof module=="object"&&module&&!module.nodeType&&module,G2=gs&&gs.exports===Sm,Dd=G2&&El.process,z2=function(){try{var n=gs&&gs.require&&gs.require("util").types;return n||Dd&&Dd.binding&&Dd.binding("util")}catch{}}(),bo=z2;var wm=bo&&bo.isTypedArray,j2=wm?Ai(wm):vm,Gl=j2;var F2=Object.prototype,U2=F2.hasOwnProperty;function k2(n,r){var e=dt(n),t=!e&&Ti(n),o=!e&&!t&&Gn(n),i=!e&&!t&&!o&&Gl(n),a=e||t||o||i,s=a?hm(n.length,String):[],l=s.length;for(var c in n)(r||U2.call(n,c))&&!(a&&(c=="length"||o&&(c=="offset"||c=="parent")||i&&(c=="buffer"||c=="byteLength"||c=="byteOffset")||Si(c,l)))&&s.push(c);return s}var zl=k2;function H2(n,r){return function(e){return n(r(e))}}var jl=H2;var W2=jl(Object.keys,Object),Pm=W2;var q2=Object.prototype,$2=q2.hasOwnProperty;function Y2(n){if(!Ci(n))return Pm(n);var r=[];for(var e in Object(n))$2.call(n,e)&&e!="constructor"&&r.push(e);return r}var Om=Y2;function X2(n){return Vl(n)?zl(n):Om(n)}var Mi=X2;function K2(n){var r=[];if(n!=null)for(var e in Object(n))r.push(e);return r}var Cm=K2;var Q2=Object.prototype,Z2=Q2.hasOwnProperty;function J2(n){if(!Mt(n))return Cm(n);var r=Ci(n),e=[];for(var t in n)t=="constructor"&&(r||!Z2.call(n,t))||e.push(t);return e}var Tm=J2;function eP(n){return Vl(n)?zl(n,!0):Tm(n)}var Ii=eP;var tP=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,rP=/^\w*$/;function oP(n,r){if(dt(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||Wo(n)?!0:rP.test(n)||!tP.test(n)||r!=null&&n in Object(r)}var Am=oP;var nP=Qt(Object,"create"),vo=nP;function iP(){this.__data__=vo?vo(null):{},this.size=0}var Mm=iP;function aP(n){var r=this.has(n)&&delete this.__data__[n];return this.size-=r?1:0,r}var Im=aP;var sP="__lodash_hash_undefined__",lP=Object.prototype,cP=lP.hasOwnProperty;function uP(n){var r=this.__data__;if(vo){var e=r[n];return e===sP?void 0:e}return cP.call(r,n)?r[n]:void 0}var Nm=uP;var dP=Object.prototype,pP=dP.hasOwnProperty;function fP(n){var r=this.__data__;return vo?r[n]!==void 0:pP.call(r,n)}var Em=fP;var hP="__lodash_hash_undefined__";function mP(n,r){var e=this.__data__;return this.size+=this.has(n)?0:1,e[n]=vo&&r===void 0?hP:r,this}var Dm=mP;function Ni(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])}}Ni.prototype.clear=Mm;Ni.prototype.delete=Im;Ni.prototype.get=Nm;Ni.prototype.has=Em;Ni.prototype.set=Dm;var _d=Ni;function yP(){this.__data__=[],this.size=0}var _m=yP;function gP(n,r){for(var e=n.length;e--;)if(wi(n[e][0],r))return e;return-1}var qo=gP;var xP=Array.prototype,bP=xP.splice;function vP(n){var r=this.__data__,e=qo(r,n);if(e<0)return!1;var t=r.length-1;return e==t?r.pop():bP.call(r,e,1),--this.size,!0}var Bm=vP;function SP(n){var r=this.__data__,e=qo(r,n);return e<0?void 0:r[e][1]}var Lm=SP;function wP(n){return qo(this.__data__,n)>-1}var Rm=wP;function PP(n,r){var e=this.__data__,t=qo(e,n);return t<0?(++this.size,e.push([n,r])):e[t][1]=r,this}var Vm=PP;function Ei(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])}}Ei.prototype.clear=_m;Ei.prototype.delete=Bm;Ei.prototype.get=Lm;Ei.prototype.has=Rm;Ei.prototype.set=Vm;var $o=Ei;var OP=Qt(ut,"Map"),Yo=OP;function CP(){this.size=0,this.__data__={hash:new _d,map:new(Yo||$o),string:new _d}}var Gm=CP;function TP(n){var r=typeof n;return r=="string"||r=="number"||r=="symbol"||r=="boolean"?n!=="__proto__":n===null}var zm=TP;function AP(n,r){var e=n.__data__;return zm(r)?e[typeof r=="string"?"string":"hash"]:e.map}var Xo=AP;function MP(n){var r=Xo(this,n).delete(n);return this.size-=r?1:0,r}var jm=MP;function IP(n){return Xo(this,n).get(n)}var Fm=IP;function NP(n){return Xo(this,n).has(n)}var Um=NP;function EP(n,r){var e=Xo(this,n),t=e.size;return e.set(n,r),this.size+=e.size==t?0:1,this}var km=EP;function Di(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])}}Di.prototype.clear=Gm;Di.prototype.delete=jm;Di.prototype.get=Fm;Di.prototype.has=Um;Di.prototype.set=km;var zn=Di;var DP="Expected a function";function Bd(n,r){if(typeof n!="function"||r!=null&&typeof r!="function")throw new TypeError(DP);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(Bd.Cache||zn),e}Bd.Cache=zn;var Hm=Bd;var _P=500;function BP(n){var r=Hm(n,function(t){return e.size===_P&&e.clear(),t}),e=r.cache;return r}var Wm=BP;var LP=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,RP=/\\(\\)?/g,VP=Wm(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(LP,function(e,t,o,i){r.push(o?i.replace(RP,"$1"):t||e)}),r}),qm=VP;function GP(n){return n==null?"":Yh(n)}var $m=GP;function zP(n,r){return dt(n)?n:Am(n,r)?[n]:qm($m(n))}var mr=zP;var jP=1/0;function FP(n){if(typeof n=="string"||Wo(n))return n;var r=n+"";return r=="0"&&1/n==-jP?"-0":r}var Ko=FP;function UP(n,r){r=mr(r,n);for(var e=0,t=r.length;n!=null&&e<t;)n=n[Ko(r[e++])];return e&&e==t?n:void 0}var Fl=UP;function kP(n,r){for(var e=-1,t=r.length,o=n.length;++e<t;)n[o+e]=r[e];return n}var _i=kP;var Ym=At?At.isConcatSpreadable:void 0;function HP(n){return dt(n)||Ti(n)||!!(Ym&&n&&n[Ym])}var Xm=HP;function Km(n,r,e,t,o){var i=-1,a=n.length;for(e||(e=Xm),o||(o=[]);++i<a;){var s=n[i];r>0&&e(s)?r>1?Km(s,r-1,e,t,o):_i(o,s):t||(o[o.length]=s)}return o}var Qm=Km;function WP(n){var r=n==null?0:n.length;return r?Qm(n,1):[]}var Zm=WP;function qP(n){return um(fm(n,void 0,Zm),n+"")}var Ul=qP;var $P=jl(Object.getPrototypeOf,Object),Bi=$P;var YP="[object Object]",XP=Function.prototype,KP=Object.prototype,Jm=XP.toString,QP=KP.hasOwnProperty,ZP=Jm.call(Object);function JP(n){if(!Vt(n)||sr(n)!=YP)return!1;var r=Bi(n);if(r===null)return!0;var e=QP.call(r,"constructor")&&r.constructor;return typeof e=="function"&&e instanceof e&&Jm.call(e)==ZP}var ey=JP;function eO(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 ty=eO;function tO(){this.__data__=new $o,this.size=0}var ry=tO;function rO(n){var r=this.__data__,e=r.delete(n);return this.size=r.size,e}var oy=rO;function oO(n){return this.__data__.get(n)}var ny=oO;function nO(n){return this.__data__.has(n)}var iy=nO;var iO=200;function aO(n,r){var e=this.__data__;if(e instanceof $o){var t=e.__data__;if(!Yo||t.length<iO-1)return t.push([n,r]),this.size=++e.size,this;e=this.__data__=new zn(t)}return e.set(n,r),this.size=e.size,this}var ay=aO;function Li(n){var r=this.__data__=new $o(n);this.size=r.size}Li.prototype.clear=ry;Li.prototype.delete=oy;Li.prototype.get=ny;Li.prototype.has=iy;Li.prototype.set=ay;var Ri=Li;function sO(n,r){return n&&qr(r,Mi(r),n)}var sy=sO;function lO(n,r){return n&&qr(r,Ii(r),n)}var ly=lO;var py=typeof exports=="object"&&exports&&!exports.nodeType&&exports,cy=py&&typeof module=="object"&&module&&!module.nodeType&&module,cO=cy&&cy.exports===py,uy=cO?ut.Buffer:void 0,dy=uy?uy.allocUnsafe:void 0;function uO(n,r){if(r)return n.slice();var e=n.length,t=dy?dy(e):new n.constructor(e);return n.copy(t),t}var fy=uO;function dO(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 hy=dO;function pO(){return[]}var kl=pO;var fO=Object.prototype,hO=fO.propertyIsEnumerable,my=Object.getOwnPropertySymbols,mO=my?function(n){return n==null?[]:(n=Object(n),hy(my(n),function(r){return hO.call(n,r)}))}:kl,Vi=mO;function yO(n,r){return qr(n,Vi(n),r)}var yy=yO;var gO=Object.getOwnPropertySymbols,xO=gO?function(n){for(var r=[];n;)_i(r,Vi(n)),n=Bi(n);return r}:kl,Hl=xO;function bO(n,r){return qr(n,Hl(n),r)}var gy=bO;function vO(n,r,e){var t=r(n);return dt(n)?t:_i(t,e(n))}var Wl=vO;function SO(n){return Wl(n,Mi,Vi)}var xs=SO;function wO(n){return Wl(n,Ii,Hl)}var ql=wO;var PO=Qt(ut,"DataView"),$l=PO;var OO=Qt(ut,"Promise"),Yl=OO;var CO=Qt(ut,"Set"),Xl=CO;var xy="[object Map]",TO="[object Object]",by="[object Promise]",vy="[object Set]",Sy="[object WeakMap]",wy="[object DataView]",AO=xo($l),MO=xo(Yo),IO=xo(Yl),NO=xo(Xl),EO=xo(Ll),jn=sr;($l&&jn(new $l(new ArrayBuffer(1)))!=wy||Yo&&jn(new Yo)!=xy||Yl&&jn(Yl.resolve())!=by||Xl&&jn(new Xl)!=vy||Ll&&jn(new Ll)!=Sy)&&(jn=function(n){var r=sr(n),e=r==TO?n.constructor:void 0,t=e?xo(e):"";if(t)switch(t){case AO:return wy;case MO:return xy;case IO:return by;case NO:return vy;case EO:return Sy}return r});var So=jn;var DO=Object.prototype,_O=DO.hasOwnProperty;function BO(n){var r=n.length,e=new n.constructor(r);return r&&typeof n[0]=="string"&&_O.call(n,"index")&&(e.index=n.index,e.input=n.input),e}var Py=BO;var LO=ut.Uint8Array,Gi=LO;function RO(n){var r=new n.constructor(n.byteLength);return new Gi(r).set(new Gi(n)),r}var zi=RO;function VO(n,r){var e=r?zi(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var Oy=VO;var GO=/\w*$/;function zO(n){var r=new n.constructor(n.source,GO.exec(n));return r.lastIndex=n.lastIndex,r}var Cy=zO;var Ty=At?At.prototype:void 0,Ay=Ty?Ty.valueOf:void 0;function jO(n){return Ay?Object(Ay.call(n)):{}}var My=jO;function FO(n,r){var e=r?zi(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.length)}var Iy=FO;var UO="[object Boolean]",kO="[object Date]",HO="[object Map]",WO="[object Number]",qO="[object RegExp]",$O="[object Set]",YO="[object String]",XO="[object Symbol]",KO="[object ArrayBuffer]",QO="[object DataView]",ZO="[object Float32Array]",JO="[object Float64Array]",eC="[object Int8Array]",tC="[object Int16Array]",rC="[object Int32Array]",oC="[object Uint8Array]",nC="[object Uint8ClampedArray]",iC="[object Uint16Array]",aC="[object Uint32Array]";function sC(n,r,e){var t=n.constructor;switch(r){case KO:return zi(n);case UO:case kO:return new t(+n);case QO:return Oy(n,e);case ZO:case JO:case eC:case tC:case rC:case oC:case nC:case iC:case aC:return Iy(n,e);case HO:return new t;case WO:case YO:return new t(n);case qO:return Cy(n);case $O:return new t;case XO:return My(n)}}var Ny=sC;function lC(n){return typeof n.constructor=="function"&&!Ci(n)?nm(Bi(n)):{}}var Ey=lC;var cC="[object Map]";function uC(n){return Vt(n)&&So(n)==cC}var Dy=uC;var _y=bo&&bo.isMap,dC=_y?Ai(_y):Dy,By=dC;var pC="[object Set]";function fC(n){return Vt(n)&&So(n)==pC}var Ly=fC;var Ry=bo&&bo.isSet,hC=Ry?Ai(Ry):Ly,Vy=hC;var mC=1,yC=2,gC=4,Gy="[object Arguments]",xC="[object Array]",bC="[object Boolean]",vC="[object Date]",SC="[object Error]",zy="[object Function]",wC="[object GeneratorFunction]",PC="[object Map]",OC="[object Number]",jy="[object Object]",CC="[object RegExp]",TC="[object Set]",AC="[object String]",MC="[object Symbol]",IC="[object WeakMap]",NC="[object ArrayBuffer]",EC="[object DataView]",DC="[object Float32Array]",_C="[object Float64Array]",BC="[object Int8Array]",LC="[object Int16Array]",RC="[object Int32Array]",VC="[object Uint8Array]",GC="[object Uint8ClampedArray]",zC="[object Uint16Array]",jC="[object Uint32Array]",Je={};Je[Gy]=Je[xC]=Je[NC]=Je[EC]=Je[bC]=Je[vC]=Je[DC]=Je[_C]=Je[BC]=Je[LC]=Je[RC]=Je[PC]=Je[OC]=Je[jy]=Je[CC]=Je[TC]=Je[AC]=Je[MC]=Je[VC]=Je[GC]=Je[zC]=Je[jC]=!0;Je[SC]=Je[zy]=Je[IC]=!1;function Kl(n,r,e,t,o,i){var a,s=r&mC,l=r&yC,c=r&gC;if(e&&(a=o?e(n,t,o,i):e(n)),a!==void 0)return a;if(!Mt(n))return n;var u=dt(n);if(u){if(a=Py(n),!s)return am(n,a)}else{var p=So(n),d=p==zy||p==wC;if(Gn(n))return fy(n,s);if(p==jy||p==Gy||d&&!o){if(a=l||d?{}:Ey(n),!s)return l?gy(n,ly(a,n)):yy(n,sy(a,n))}else{if(!Je[p])return o?n:{};a=Ny(n,p,s)}}i||(i=new Ri);var h=i.get(n);if(h)return h;i.set(n,a),Vy(n)?n.forEach(function(y){a.add(Kl(y,r,e,y,n,i))}):By(n)&&n.forEach(function(y,g){a.set(g,Kl(y,r,e,g,n,i))});var f=c?l?ql:xs:l?Ii:Mi,m=u?void 0:f(n);return dm(m||n,function(y,g){m&&(g=y,y=n[g]),Pi(a,g,Kl(y,r,e,g,n,i))}),a}var Ql=Kl;var FC=1,UC=4;function kC(n){return Ql(n,FC|UC)}var wo=kC;var HC="__lodash_hash_undefined__";function WC(n){return this.__data__.set(n,HC),this}var Fy=WC;function qC(n){return this.__data__.has(n)}var Uy=qC;function Zl(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new zn;++r<e;)this.add(n[r])}Zl.prototype.add=Zl.prototype.push=Fy;Zl.prototype.has=Uy;var ky=Zl;function $C(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 Hy=$C;function YC(n,r){return n.has(r)}var Wy=YC;var XC=1,KC=2;function QC(n,r,e,t,o,i){var a=e&XC,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&KC?new ky: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(!Hy(r,function(g,v){if(!Wy(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 Jl=QC;function ZC(n){var r=-1,e=Array(n.size);return n.forEach(function(t,o){e[++r]=[o,t]}),e}var qy=ZC;function JC(n){var r=-1,e=Array(n.size);return n.forEach(function(t){e[++r]=t}),e}var $y=JC;var eT=1,tT=2,rT="[object Boolean]",oT="[object Date]",nT="[object Error]",iT="[object Map]",aT="[object Number]",sT="[object RegExp]",lT="[object Set]",cT="[object String]",uT="[object Symbol]",dT="[object ArrayBuffer]",pT="[object DataView]",Yy=At?At.prototype:void 0,Ld=Yy?Yy.valueOf:void 0;function fT(n,r,e,t,o,i,a){switch(e){case pT:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case dT:return!(n.byteLength!=r.byteLength||!i(new Gi(n),new Gi(r)));case rT:case oT:case aT:return wi(+n,+r);case nT:return n.name==r.name&&n.message==r.message;case sT:case cT:return n==r+"";case iT:var s=qy;case lT:var l=t&eT;if(s||(s=$y),n.size!=r.size&&!l)return!1;var c=a.get(n);if(c)return c==r;t|=tT,a.set(n,r);var u=Jl(s(n),s(r),t,o,i,a);return a.delete(n),u;case uT:if(Ld)return Ld.call(n)==Ld.call(r)}return!1}var Xy=fT;var hT=1,mT=Object.prototype,yT=mT.hasOwnProperty;function gT(n,r,e,t,o,i){var a=e&hT,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:yT.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 P=a?t(v,g,d,r,n,i):t(g,v,d,n,r,i);if(!(P===void 0?g===v||o(g,v,e,t,i):P)){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 Ky=gT;var xT=1,Qy="[object Arguments]",Zy="[object Array]",ec="[object Object]",bT=Object.prototype,Jy=bT.hasOwnProperty;function vT(n,r,e,t,o,i){var a=dt(n),s=dt(r),l=a?Zy:So(n),c=s?Zy:So(r);l=l==Qy?ec:l,c=c==Qy?ec:c;var u=l==ec,p=c==ec,d=l==c;if(d&&Gn(n)){if(!Gn(r))return!1;a=!0,u=!1}if(d&&!u)return i||(i=new Ri),a||Gl(n)?Jl(n,r,e,t,o,i):Xy(n,r,l,e,t,o,i);if(!(e&xT)){var h=u&&Jy.call(n,"__wrapped__"),f=p&&Jy.call(r,"__wrapped__");if(h||f){var m=h?n.value():n,y=f?r.value():r;return i||(i=new Ri),o(m,y,e,t,i)}}return d?(i||(i=new Ri),Ky(n,r,e,t,o,i)):!1}var eg=vT;function tg(n,r,e,t,o){return n===r?!0:n==null||r==null||!Vt(n)&&!Vt(r)?n!==n&&r!==r:eg(n,r,e,t,tg,o)}var rg=tg;function ST(n,r){return n!=null&&r in Object(n)}var og=ST;function wT(n,r,e){r=mr(r,n);for(var t=-1,o=r.length,i=!1;++t<o;){var a=Ko(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&&Oi(o)&&Si(a,o)&&(dt(n)||Ti(n)))}var ng=wT;function PT(n,r){return n!=null&&ng(n,r,og)}var ig=PT;var OT=function(){return ut.Date.now()},tc=OT;var CT="Expected a function",TT=Math.max,AT=Math.min;function MT(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(CT);r=Nd(r)||0,Mt(e)&&(u=!!e.leading,p="maxWait"in e,i=p?TT(Nd(e.maxWait)||0,r):i,d="trailing"in e?!!e.trailing:d);function h(C){var A=t,x=o;return t=o=void 0,c=C,a=n.apply(x,A),a}function f(C){return c=C,s=setTimeout(g,r),u?h(C):a}function m(C){var A=C-l,x=C-c,E=r-A;return p?AT(E,i-x):E}function y(C){var A=C-l,x=C-c;return l===void 0||A>=r||A<0||p&&x>=i}function g(){var C=tc();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 P(){s!==void 0&&clearTimeout(s),c=0,t=l=o=s=void 0}function O(){return s===void 0?a:v(tc())}function S(){var C=tc(),A=y(C);if(t=arguments,o=this,l=C,A){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=P,S.flush=O,S}var rc=MT;function IT(n){var r=n==null?0:n.length;return r?n[r-1]:void 0}var ag=IT;function NT(n,r){return r.length<2?n:Fl(n,ty(r,0,-1))}var sg=NT;function ET(n,r){return rg(n,r)}var Rd=ET;function DT(n,r){return r=mr(r,n),n=sg(n,r),n==null||delete n[Ko(ag(r))]}var lg=DT;function _T(n){return ey(n)?void 0:n}var cg=_T;var BT=1,LT=2,RT=4,VT=Ul(function(n,r){var e={};if(n==null)return e;var t=!1;r=Dl(r,function(i){return i=mr(i,n),t||(t=i.length>1),i}),qr(n,ql(n),e),t&&(e=Ql(e,BT|LT|RT,cg));for(var o=r.length;o--;)lg(e,r[o]);return e}),ji=VT;function GT(n,r,e,t){if(!Mt(n))return n;r=mr(r,n);for(var o=-1,i=r.length,a=i-1,s=n;s!=null&&++o<i;){var l=Ko(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=Mt(u)?u:Si(r[o+1])?[]:{})}Pi(s,l,c),s=s[l]}return n}var ug=GT;function zT(n,r,e){for(var t=-1,o=r.length,i={};++t<o;){var a=r[t],s=Fl(n,a);e(s,a)&&ug(i,mr(a,n),s)}return i}var dg=zT;function jT(n,r){return dg(n,r,function(e,t){return ig(n,t)})}var pg=jT;var FT=Ul(function(n,r){return n==null?{}:pg(n,r)}),Mr=FT;var fe=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,fe.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,fe.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,fe.prototype),delete i[t],{data:i,actual:r,reverse:{type:1,id:t,data:o}}}}return null}};function bs(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"&&bs(t)}return Object.freeze(n)}function fg(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 Fi=class extends Error{};function oc(n){let r={...n};return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}function $r(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 Ui(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 hg(){return typeof process<"u"}function mg(n,r){for(let e of n)r(e.id,e.data)!==!0&&mg(e.children,r)}function yg(n,r){if(r(n.id,n.data)!==!0)for(let e of n.children)yg(e,r)}var Ke=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Ke.prototype)}deepFreeze(){let e=0;for(;e<this.length;)bs(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&&yg(o,t)}}traverse(e){mg(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,Ke.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 Fi("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)=>fg(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 $r(0,o,o);{let a=i[0].fi;return $r(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 $r(l,l+o,o)}else return $r(a.fi,s.fi,o)}}};var ki;(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})(ki||(ki={}));var be=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,be.prototype)}deepFreeze(){let e=0;for(;e<this.length;)bs(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,be.prototype);let t=e;return hg()||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 $r(0,t,t);{let i=o[0].fi;return $r(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 $r(s,s+t,t)}else return $r(i.fi,a.fi,t)}}};function Hi(n){return n&&typeof n=="object"&&n instanceof Qe}var Qe=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&&!Hi(t))return null;o+=1}t=t?oc(t):new Qe;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=oc(l),delete t[r.path[o-1]])}else{let l=e[o-1];if(l){let c=oc(l);c[r.path[o-1]]=t,t=c}else{let c=new Qe;c[r.path[o-1]]=t,t=c}}o-=1}let a=Object.setPrototypeOf(t,Qe.prototype),s={...r,props:i};return{data:a,actual:r,reverse:s}}},Yr;(t=>{function n(o,i){return vs(o,i)??o}t.apply=n;function r(o,i){return Gd(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=Ze.zoomOnce(l,s[a]),l===void 0)return i;if(!Hi(l))return;a+=1}if(l===void 0)return i;if(!!Hi(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=Vd([i],l);return c?(console.log(c),c):i}else return i}t.filterOp=e})(Yr||(Yr={}));function Vd(n,r){if(r===void 0)return;let e=!1,t=n.map(o=>{let i=o.id,a=vs(o.data,r[i]);if(e=e||a!==void 0,a===void 0&&(a=o.data),o.children){let s=Vd(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 UT(n,r){if(r===void 0)return;let e=!1,t=n.map(o=>{let i=o.id,a=vs(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 vs(n,r){if(!Hi(r))return r;if(n instanceof Ke){let e=Vd(n,r);return e!==void 0&&Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e}else{if(n instanceof be)return UT(n,r);if(Array.isArray(n)){let e=!1,t=n.map((o,i)=>{let a=vs(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 Qe)return Gd(n,r);if(n&&typeof n=="object"){let e={},t=!1;for(let[o,i]of Object.entries(n)){let a=vs(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 Gd(n,r){if(n===void 0)return r;if(r===void 0)return n;if(!Hi(r))return r;if(!Hi(n))return Yr.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 Qe;for(let o of e){let i=Gd(n===void 0?void 0:n[o],r===void 0?void 0:r[o]);t[o]=i}return t}function gg(n,r){let e={cur:[],result:[],len:0};return n=Ss(n,r,e)??n,[n,e.result]}function nc(n,r){return n===null?null:(n.cur[n.len]=r,n.len+=1,n)}function ic(n){n&&(n.len-=1)}function kT(n){if(n===null)return null;n.result.push(n.cur.slice(0,n.len))}function xg(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=Ss(i.data,r,nc(e,a));ic(e),t=t||l!==void 0,l===void 0&&(l=i.data);let c=xg(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 HT(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=Ss(i.data,r,nc(e,a));return ic(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 Ss(n,r,e){if(n instanceof Ke){let t=xg(n,r,e);return t!==void 0&&Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}else{if(n instanceof be)return HT(n,r,e);if(Array.isArray(n)){let t=!1,o=n.map((i,a)=>{let s=Ss(i,r,nc(e,a));return ic(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"&&!Ui(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=Ss(a,r,nc(e,i));ic(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&&kT(e),t}else return}}var Wi;(r=>{function n(e,t){let o=Ze.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})(Wi||(Wi={}));var nt;(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 Qe&&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 Ke||l instanceof be||l instanceof fe?d=l.runOp(c):d=ki.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 Ke){if(typeof g=="number")throw new Error("illegal arg");m=v.modifyById(g,m)}else if(v instanceof be){if(typeof g=="number")throw new Error("illegal arg");m=v.modifyById(g,m)}else if(v instanceof fe){if(typeof g=="number")throw new Error("illegal arg");m=v.modifyById(g,m)}else if(v instanceof Qe){let P={...v,[g]:m};m=Object.setPrototypeOf(P,Qe.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 P=m;m=[...v],m[g]=P}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 Ke){if(typeof h=="number")throw new Error("");f=l.get(h)?.data}else if(l instanceof be){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})(nt||(nt={}));var ws;(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=>nt.subsumed(d,h))),...u]}l.compress=o;function i(c,u){return c.every(p=>u.every(d=>nt.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=Ze.zoom(p,[...f.path,f.id]),g=nt.apply(p,{...f,type:2})):(m=Ze.zoom(p,[...f.path,f.id,"value"]),g=nt.apply(p,f)),g!==null){p=g.data;let[v,P]=gg(p,{[f.id]:m});p=v;for(let O=0;O<P.length;O++){let S=P[O],C=S.pop();if(typeof C=="number"){let A=[C];for(let E=O+1;E<P.length;E++){let N=P[E],I=N[N.length-1];if(typeof I=="number"&&Ze.equal(S,N.slice(0,N.length-1)))A.push(I),P.splice(E,1);else break}let x=Ze.zoom(p,S);y=x.map((E,N)=>A.includes(N)?f.id:E),m=x,C=S.pop()}else{if(C==="alphaOverride"||C==="alpha"){m/=100;let A=m,x=Ze.zoom(p,S.slice(0,S.length-2)),E=x.layers.map(N=>N.id===S[S.length-1]?{...N,data:{...N.data,[C]:A}}:N);Object.setPrototypeOf(E,Object.getPrototypeOf(x.layers)),x.layers=E}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=nt.apply(p,f);m!==null&&(d.push(m.actual),p=m.data,h.push(m.reverse))}}catch(m){if(m instanceof Fi)return null;throw m}return{data:p,actual:d,reverse:h.reverse()}}l.apply=s})(ws||(ws={}));var bg=Symbol(),WT=Symbol(),sc=Symbol(),Fn=class{reportOp(r,e,t=[]){let o=this;if(e===null)return;o._current=e.data;let i=t;for(;!(o instanceof ac);){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[sc];t&&t(),delete this._children[r]}}}},jd=class extends Fn{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,ki.runOp(this._current,r),r.path)}},Fd=class extends Fn{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,fe.prototype)}runOp(r){this.reportOp(r,this._current.runOp(r))}},vg={get(n,r){if(r===sc)return()=>{n._parent=null};if(r===bg)return n._current;if(r===WT)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=lc(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]}}},qT={...vg,set(n,r,e){let t={type:0,props:{[r]:it(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}},$T={...vg,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}},qi=class extends Fn{constructor(r,e,t){super(),this._children={},this._parent=r,this._path=e,this._current=t,this[sc]=()=>{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=lc(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)}},$i=class extends Fn{constructor(r,e,t){super(),this._children={},this._parent=r,this._path=e,this._current=t,this[sc]=()=>{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=lc(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 zd(n,r,e){if(n.length>0){let t=n[n.length-1];if(t.type===0&&r.type===0&&Ze.equal(t.path,e)){Object.assign(t.props,r.props);return}}n.push({...r,path:e})}var ac=class extends Fn{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){zd(this.ts,e,r),zd(this.actual,t,r),zd(this.reverse,o,r)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function lc(n,r,e){return e instanceof Ke?new qi(n,r,e):e instanceof be?new $i(n,r,e):e instanceof fe?new Proxy(new Fd(n,r,e),$T):e!==null&&typeof e=="object"?Ui(e)?e:new Proxy(new jd(n,r,e),qT):e}function Ud(n){let r=new ac(n);return[lc(r,"",n),r]}function Qo(n,r){let[e,t]=Ud(n);return r(e),t.result()}function it(n){return n instanceof qi||n instanceof $i?n._current:n!==null&&typeof n=="object"?n[bg]:n}var Ze;(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 Ke||i instanceof qi)&&typeof a=="string")return i.data(a);if((i instanceof be||i instanceof $i)&&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})(Ze||(Ze={}));function Sg(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 Le(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 cc=class{},Ps=class extends cc{constructor(e){super();this.id=e}},Os=class extends cc{constructor(e){super();this.data=e}};var Hd;try{Hd=new TextDecoder}catch{}var de,Jo,z=0;var Ig=[],Wd=Ig,qd=0,Zt={},ke,Zo,yr=0,Xr=0,lr,Po,qt=[],We,wg={useRecords:!1,mapsAsObjects:!0},Cs=class{},Yd=new Cs;Yd.name="MessagePack 0xC1";var Yi=!1,Kr=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 Bg(()=>(dc(),this?this.unpack(r,e):Kr.prototype.unpack.call(wg,r,e)));Jo=e>-1?e:r.length,z=0,qd=0,Xr=0,Zo=null,Wd=Ig,lr=null,de=r;try{We=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 Kr){if(Zt=this,this.structures)return ke=this.structures,uc();(!ke||ke.length>0)&&(ke=[])}else Zt=wg,(!ke||ke.length>0)&&(ke=[]);return uc()}unpackMultiple(r,e){let t,o=0;try{Yi=!0;let i=r.length,a=this?this.unpack(r,i):hc.unpack(r,i);if(e){for(e(a);z<i;)if(o=z,e(uc())===!1)return}else{for(t=[a];z<i;)o=z,t.push(uc());return t}}catch(i){throw i.lastPosition=o,i.values=t,i}finally{Yi=!1,dc()}}_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 uc(){try{if(!Zt.trusted&&!Yi){let r=ke.sharedLength||0;r<ke.length&&(ke.length=r)}let n=pt();if(z==Jo)ke.restoreStructures&&Pg(),ke=null,de=null,Po&&(Po=null);else if(z>Jo){let r=new Error("Unexpected end of MessagePack data");throw r.incomplete=!0,r}else if(!Yi)throw new Error("Data read, but end of buffer not reached");return n}catch(n){throw ke.restoreStructures&&Pg(),dc(),(n instanceof RangeError||n.message.startsWith("Unexpected end of buffer"))&&(n.incomplete=!0),n}}function Pg(){for(let n in ke.restoreStructures)ke[n]=ke.restoreStructures[n];ke.restoreStructures=null}function pt(){let n=de[z++];if(n<160)if(n<128){if(n<64)return n;{let r=ke[n&63]||Zt.getStructures&&Ng()[n&63];return r?(r.read||(r.read=Xd(r,n&63)),r.read()):n}}else if(n<144)if(n-=128,Zt.mapsAsObjects){let r={};for(let e=0;e<n;e++)r[Dg()]=pt();return r}else{let r=new Map;for(let e=0;e<n;e++)r.set(pt(),pt());return r}else{n-=144;let r=new Array(n);for(let e=0;e<n;e++)r[e]=pt();return r}else if(n<192){let r=n-160;if(Xr>=z)return Zo.slice(z-yr,(z+=r)-yr);if(Xr==0&&Jo<140){let e=r<16?Kd(r):Eg(r);if(e!=null)return e}return $d(r)}else{let r;switch(n){case 192:return null;case 193:return lr?(r=pt(),r>0?lr[1].slice(lr.position1,lr.position1+=r):lr[0].slice(lr.position0,lr.position0-=r)):Yd;case 194:return!1;case 195:return!0;case 196:return kd(de[z++]);case 197:return r=We.getUint16(z),z+=2,kd(r);case 198:return r=We.getUint32(z),z+=4,kd(r);case 199:return Un(de[z++]);case 200:return r=We.getUint16(z),z+=2,Un(r);case 201:return r=We.getUint32(z),z+=4,Un(r);case 202:if(r=We.getFloat32(z),Zt.useFloat32>2){let e=fc[(de[z]&127)<<1|de[z+1]>>7];return z+=4,(e*r+(r>0?.5:-.5)>>0)/e}return z+=4,r;case 203:return r=We.getFloat64(z),z+=8,r;case 204:return de[z++];case 205:return r=We.getUint16(z),z+=2,r;case 206:return r=We.getUint32(z),z+=4,r;case 207:return Zt.int64AsNumber?(r=We.getUint32(z)*4294967296,r+=We.getUint32(z+4)):r=We.getBigUint64(z),z+=8,r;case 208:return We.getInt8(z++);case 209:return r=We.getInt16(z),z+=2,r;case 210:return r=We.getInt32(z),z+=4,r;case 211:return Zt.int64AsNumber?(r=We.getInt32(z)*4294967296,r+=We.getUint32(z+4)):r=We.getBigInt64(z),z+=8,r;case 212:if(r=de[z++],r==114)return Mg(de[z++]&63);{let e=qt[r];if(e)return e.read?(z++,e.read(pt())):e.noBuffer?(z++,e()):e(de.subarray(z,++z));throw new Error("Unknown extension "+r)}case 213:return r=de[z],r==114?(z++,Mg(de[z++]&63,de[z++])):Un(2);case 214:return Un(4);case 215:return Un(8);case 216:return Un(16);case 217:return r=de[z++],Xr>=z?Zo.slice(z-yr,(z+=r)-yr):XT(r);case 218:return r=We.getUint16(z),z+=2,Xr>=z?Zo.slice(z-yr,(z+=r)-yr):KT(r);case 219:return r=We.getUint32(z),z+=4,Xr>=z?Zo.slice(z-yr,(z+=r)-yr):QT(r);case 220:return r=We.getUint16(z),z+=2,Cg(r);case 221:return r=We.getUint32(z),z+=4,Cg(r);case 222:return r=We.getUint16(z),z+=2,Tg(r);case 223:return r=We.getUint32(z),z+=4,Tg(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 YT=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function Xd(n,r){function e(){if(e.count++>2){let o=n.read=new Function("r","return function(){return {"+n.map(i=>YT.test(i)?i+":r()":"["+JSON.stringify(i)+"]:r()").join(",")+"}}")(pt);return n.highByte===0&&(n.read=Og(r,n.read)),o()}let t={};for(let o=0,i=n.length;o<i;o++){let a=n[o];t[a]=pt()}return t}return e.count=0,n.highByte===0?Og(r,e):e}var Og=(n,r)=>function(){let e=de[z++];if(e===0)return r();let t=n<32?-(n+(e<<5)):n+(e<<5),o=ke[t]||Ng()[t];if(!o)throw new Error("Record id is not defined for "+t);return o.read||(o.read=Xd(o,n)),o.read()};function Ng(){let n=Bg(()=>(de=null,Zt.getStructures()));return ke=Zt._mergeStructures(n,ke)}var $d=pc,XT=pc,KT=pc,QT=pc;function pc(n){let r;if(n<16&&(r=Kd(n)))return r;if(n>64&&Hd)return Hd.decode(de.subarray(z,z+=n));let e=z+n,t=[];for(r="";z<e;){let o=de[z++];if((o&128)===0)t.push(o);else if((o&224)===192){let i=de[z++]&63;t.push((o&31)<<6|i)}else if((o&240)===224){let i=de[z++]&63,a=de[z++]&63;t.push((o&31)<<12|i<<6|a)}else if((o&248)===240){let i=de[z++]&63,a=de[z++]&63,s=de[z++]&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+=It.apply(String,t),t.length=0)}return t.length>0&&(r+=It.apply(String,t)),r}function Cg(n){let r=new Array(n);for(let e=0;e<n;e++)r[e]=pt();return r}function Tg(n){if(Zt.mapsAsObjects){let r={};for(let e=0;e<n;e++)r[Dg()]=pt();return r}else{let r=new Map;for(let e=0;e<n;e++)r.set(pt(),pt());return r}}var It=String.fromCharCode;function Eg(n){let r=z,e=new Array(n);for(let t=0;t<n;t++){let o=de[z++];if((o&128)>0){z=r;return}e[t]=o}return It.apply(String,e)}function Kd(n){if(n<4)if(n<2){if(n===0)return"";{let r=de[z++];if((r&128)>1){z-=1;return}return It(r)}}else{let r=de[z++],e=de[z++];if((r&128)>0||(e&128)>0){z-=2;return}if(n<3)return It(r,e);let t=de[z++];if((t&128)>0){z-=3;return}return It(r,e,t)}else{let r=de[z++],e=de[z++],t=de[z++],o=de[z++];if((r&128)>0||(e&128)>0||(t&128)>0||(o&128)>0){z-=4;return}if(n<6){if(n===4)return It(r,e,t,o);{let i=de[z++];if((i&128)>0){z-=5;return}return It(r,e,t,o,i)}}else if(n<8){let i=de[z++],a=de[z++];if((i&128)>0||(a&128)>0){z-=6;return}if(n<7)return It(r,e,t,o,i,a);let s=de[z++];if((s&128)>0){z-=7;return}return It(r,e,t,o,i,a,s)}else{let i=de[z++],a=de[z++],s=de[z++],l=de[z++];if((i&128)>0||(a&128)>0||(s&128)>0||(l&128)>0){z-=8;return}if(n<10){if(n===8)return It(r,e,t,o,i,a,s,l);{let c=de[z++];if((c&128)>0){z-=9;return}return It(r,e,t,o,i,a,s,l,c)}}else if(n<12){let c=de[z++],u=de[z++];if((c&128)>0||(u&128)>0){z-=10;return}if(n<11)return It(r,e,t,o,i,a,s,l,c,u);let p=de[z++];if((p&128)>0){z-=11;return}return It(r,e,t,o,i,a,s,l,c,u,p)}else{let c=de[z++],u=de[z++],p=de[z++],d=de[z++];if((c&128)>0||(u&128)>0||(p&128)>0||(d&128)>0){z-=12;return}if(n<14){if(n===12)return It(r,e,t,o,i,a,s,l,c,u,p,d);{let h=de[z++];if((h&128)>0){z-=13;return}return It(r,e,t,o,i,a,s,l,c,u,p,d,h)}}else{let h=de[z++],f=de[z++];if((h&128)>0||(f&128)>0){z-=14;return}if(n<15)return It(r,e,t,o,i,a,s,l,c,u,p,d,h,f);let m=de[z++];if((m&128)>0){z-=15;return}return It(r,e,t,o,i,a,s,l,c,u,p,d,h,f,m)}}}}}function kd(n){return Zt.copyBuffers?Uint8Array.prototype.slice.call(de,z,z+=n):de.subarray(z,z+=n)}function Un(n){let r=de[z++];if(qt[r])return qt[r](de.subarray(z,z+=n));throw new Error("Unknown extension type "+r)}var Ag=new Array(4096);function Dg(){let n=de[z++];if(n>=160&&n<192){if(n=n-160,Xr>=z)return Zo.slice(z-yr,(z+=n)-yr);if(!(Xr==0&&Jo<180))return $d(n)}else return z--,pt();let r=(n<<5^(n>1?We.getUint16(z):n>0?de[z]:0))&4095,e=Ag[r],t=z,o=z+n-3,i,a=0;if(e&&e.bytes==n){for(;t<o;){if(i=We.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 z=t,e.string;o-=3,t=z}for(e=[],Ag[r]=e,e.bytes=n;t<o;)i=We.getUint32(t),e.push(i),t+=4;for(o+=3;t<o;)i=de[t++],e.push(i);let s=n<16?Kd(n):Eg(n);return s!=null?e.string=s:e.string=$d(n)}var Mg=(n,r)=>{var e=pt();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=Xd(e,t),e.read()},_g=typeof self=="object"?self:global;qt[0]=()=>{};qt[0].noBuffer=!0;qt[101]=()=>{let n=pt();return(_g[n[0]]||Error)(n[1])};qt[105]=n=>{let r=We.getUint32(z-4);Po||(Po=new Map);let e=de[z],t;e>=144&&e<160||e==220||e==221?t=[]:t={};let o={target:t};Po.set(r,o);let i=pt();return o.used?Object.assign(t,i):(o.target=i,i)};qt[112]=n=>{let r=We.getUint32(z-4),e=Po.get(r);return e.used=!0,e.target};qt[115]=()=>new Set(pt());var Qd=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(n=>n+"Array");qt[116]=n=>{let r=n[0],e=Qd[r];if(!e)throw new Error("Could not find typed array for code "+r);return new _g[e](Uint8Array.prototype.slice.call(n,1).buffer)};qt[120]=()=>{let n=pt();return new RegExp(n[0],n[1])};qt[98]=n=>{let r=(n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3],e=z;z+=r-4,lr=[pt(),pt()],lr.position0=0,lr.position1=0;let t=z;z=e;try{return pt()}finally{z=t}};qt[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 Bg(n){let r=Jo,e=z,t=qd,o=yr,i=Xr,a=Zo,s=Wd,l=Po,c=lr,u=new Uint8Array(de.slice(0,Jo)),p=ke,d=ke.slice(0,ke.length),h=Zt,f=Yi,m=n();return Jo=r,z=e,qd=t,yr=o,Xr=i,Zo=a,Wd=s,Po=l,lr=c,de=u,Yi=f,ke=p,ke.splice(0,ke.length,...d),Zt=h,We=new DataView(de.buffer,de.byteOffset,de.byteLength),m}function dc(){de=null,Po=null,ke=null}function Lg(n){n.unpack?qt[n.type]=n.unpack:qt[n.type]=n}var fc=new Array(147);for(let n=0;n<256;n++)fc[n]=+("1e"+Math.floor(45.15-n*.30103));var hc=new Kr({useRecords:!1}),ZT=hc.unpack,JT=hc.unpackMultiple,eA=hc.unpack,mc={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},tA=new Float32Array(1),_k=new Uint8Array(tA.buffer,0,4);var yc;try{yc=new TextEncoder}catch{}var gc,Jd,xc=typeof Buffer<"u",Zd=xc?Buffer.allocUnsafeSlow:Uint8Array,zg=xc?Buffer:Uint8Array,Rg=xc?4294967296:2144337920,Y,ht,k=0,Qr,Zr=null,rA=/[\u0080-\uFFFF]/,Ts=Symbol("record-id"),kn=class extends Kr{constructor(r){super(r),this.offset=0;let e,t,o,i,a,s,l=0,c=zg.prototype.utf8Write?function(x,E,N){return Y.utf8Write(x,E,N)}:yc&&yc.encodeInto?function(x,E){return yc.encodeInto(x,Y.subarray(E)).written}:!1,u=this;r||(r={});let p=r&&r.sequential,d=r.structures||r.saveStructures,h=r.maxSharedStructures;if(h==null&&(h=d?32:0),h>8160)throw new Error("Maximum maxSharedStructure is 8160");let f=r.maxOwnStructures;f==null&&(f=d?32:64),p&&!r.saveStructures&&(this.structures=[]);let m=h>32||f+h>64,y=h+64,g=h+f+64;if(g>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let v=[],P=0,O=0;this.pack=this.encode=function(x,E){if(Y||(Y=new Zd(8192),ht=new DataView(Y.buffer,0,8192),k=0),Qr=Y.length-10,Qr-k<2048?(Y=new Zd(Y.length),ht=new DataView(Y.buffer,0,Y.length),Qr=Y.length-10,k=0):k=k+7&2147483640,t=k,s=u.structuredClone?new Map:null,u.bundleStrings?(Zr=["",""],Y[k++]=214,Y[k++]=98,Zr.position=k-t,k+=4):Zr=null,o=u.structures,o){o.uninitialized&&(o=u._mergeStructures(u.getStructures()));let N=o.sharedLength||0;if(N>h)throw new Error("Shared structures is larger than maximum shared structures, try increasing maxSharedStructures to "+o.sharedLength);if(!o.transitions){o.transitions=Object.create(null);for(let I=0;I<N;I++){let D=o[I];if(!D)continue;let _,B=o.transitions;for(let V=0,U=D.length;V<U;V++){let R=D[V];_=B[R],_||(_=B[R]=Object.create(null)),B=_}B[Ts]=I+64}l=N}p||(o.nextId=N+64)}i&&(i=!1),a=o||[];try{if(S(x),Zr){ht.setUint32(Zr.position+t,k-Zr.position-t);let N=Zr;Zr=null,S(N[0]),S(N[1])}if(u.offset=k,s&&s.idsToInsert){k+=s.idsToInsert.length*6,k>Qr&&A(k),u.offset=k;let N=nA(Y.subarray(t,k),s.idsToInsert);return s=null,N}return E&Fg?(Y.start=t,Y.end=k,Y):Y.subarray(t,k)}finally{if(o){if(O<10&&O++,P>1e4)o.transitions=null,O=0,P=0,v.length>0&&(v=[]);else if(v.length>0&&!p){for(let N=0,I=v.length;N<I;N++)v[N][Ts]=0;v=[]}if(i&&u.saveStructures){let N=o.sharedLength||h;o.length>N&&(o=o.slice(0,N));let I=Y.subarray(t,k);return u.saveStructures(o,l)===!1?(u._mergeStructures(u.getStructures()),u.pack(x)):(l=N,I)}}E&dA&&(k=t)}};let S=x=>{k>Qr&&(Y=A(k));var E=typeof x,N;if(E==="string"){let I=x.length;if(Zr&&I>=8&&I<4096){let B=rA.test(x);Zr[B?0:1]+=x,Y[k++]=193,S(B?-I:I);return}let D;I<32?D=1:I<256?D=2:I<65536?D=3:D=5;let _=I*3;if(k+_>Qr&&(Y=A(k+_)),I<64||!c){let B,V,U,R=k+D;for(B=0;B<I;B++)V=x.charCodeAt(B),V<128?Y[R++]=V:V<2048?(Y[R++]=V>>6|192,Y[R++]=V&63|128):(V&64512)===55296&&((U=x.charCodeAt(B+1))&64512)===56320?(V=65536+((V&1023)<<10)+(U&1023),B++,Y[R++]=V>>18|240,Y[R++]=V>>12&63|128,Y[R++]=V>>6&63|128,Y[R++]=V&63|128):(Y[R++]=V>>12|224,Y[R++]=V>>6&63|128,Y[R++]=V&63|128);N=R-k-D}else N=c(x,k+D,_);N<32?Y[k++]=160|N:N<256?(D<2&&Y.copyWithin(k+2,k+1,k+1+N),Y[k++]=217,Y[k++]=N):N<65536?(D<3&&Y.copyWithin(k+3,k+2,k+2+N),Y[k++]=218,Y[k++]=N>>8,Y[k++]=N&255):(D<5&&Y.copyWithin(k+5,k+3,k+3+N),Y[k++]=219,ht.setUint32(k,N),k+=4),k+=N}else if(E==="number")if(x>>>0===x)x<64?Y[k++]=x:x<256?(Y[k++]=204,Y[k++]=x):x<65536?(Y[k++]=205,Y[k++]=x>>8,Y[k++]=x&255):(Y[k++]=206,ht.setUint32(k,x),k+=4);else if(x>>0===x)x>=-32?Y[k++]=256+x:x>=-128?(Y[k++]=208,Y[k++]=x+256):x>=-32768?(Y[k++]=209,ht.setInt16(k,x),k+=2):(Y[k++]=210,ht.setInt32(k,x),k+=4);else{let I;if((I=this.useFloat32)>0&&x<4294967296&&x>=-2147483648){Y[k++]=202,ht.setFloat32(k,x);let D;if(I<4||(D=x*fc[(Y[k]&127)<<1|Y[k+1]>>7])>>0===D){k+=4;return}else k--}Y[k++]=203,ht.setFloat64(k,x),k+=8}else if(E==="object")if(!x)Y[k++]=192;else{if(s){let D=s.get(x);if(D){if(!D.id){let _=s.idsToInsert||(s.idsToInsert=[]);D.id=_.push(D)}Y[k++]=214,Y[k++]=112,ht.setUint32(k,D.id),k+=4;return}else s.set(x,{offset:k-t})}let I=x.constructor;if(I===Object)C(x,!0);else if(I===Array){N=x.length,N<16?Y[k++]=144|N:N<65536?(Y[k++]=220,Y[k++]=N>>8,Y[k++]=N&255):(Y[k++]=221,ht.setUint32(k,N),k+=4);for(let D=0;D<N;D++)S(x[D])}else if(I===Map){N=x.size,N<16?Y[k++]=128|N:N<65536?(Y[k++]=222,Y[k++]=N>>8,Y[k++]=N&255):(Y[k++]=223,ht.setUint32(k,N),k+=4);for(let[D,_]of x)S(D),S(_)}else{for(let D=0,_=gc.length;D<_;D++){let B=Jd[D];if(x instanceof B){let V=gc[D];if(V.write){V.type&&(Y[k++]=212,Y[k++]=V.type,Y[k++]=0),S(V.write.call(this,x));return}let U=Y,R=ht,W=k;Y=null;let j;try{j=V.pack.call(this,x,F=>(Y=U,U=null,k+=F,k>Qr&&A(k),{target:Y,targetView:ht,position:k-F}),S)}finally{U&&(Y=U,ht=R,k=W,Qr=Y.length-10)}j&&(j.length+k>Qr&&A(j.length+k),k=oA(j,Y,k,V.type));return}}C(x,!x.hasOwnProperty)}}else if(E==="boolean")Y[k++]=x?195:194;else if(E==="bigint"){if(x<BigInt(1)<<BigInt(63)&&x>=-(BigInt(1)<<BigInt(63)))Y[k++]=211,ht.setBigInt64(k,x);else if(x<BigInt(1)<<BigInt(64)&&x>0)Y[k++]=207,ht.setBigUint64(k,x);else if(this.largeBigIntToFloat)Y[k++]=203,ht.setFloat64(k,Number(x));else throw new RangeError(x+" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64");k+=8}else if(E==="undefined")this.encodeUndefinedAsNil?Y[k++]=192:(Y[k++]=212,Y[k++]=0,Y[k++]=0);else if(E==="function")S(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+E)},C=this.useRecords===!1?this.variableMapSize?x=>{let E=Object.keys(x),N=E.length;N<16?Y[k++]=128|N:N<65536?(Y[k++]=222,Y[k++]=N>>8,Y[k++]=N&255):(Y[k++]=223,ht.setUint32(k,N),k+=4);let I;for(let D=0;D<N;D++)S(I=E[D]),S(x[I])}:(x,E)=>{Y[k++]=222;let N=k-t;k+=2;let I=0;for(let D in x)(E||x.hasOwnProperty(D))&&(S(D),S(x[D]),I++);Y[N+++t]=I>>8,Y[N+t]=I&255}:x=>{let E=Object.keys(x),N,I=a.transitions||(a.transitions=Object.create(null)),D=0;for(let B=0,V=E.length;B<V;B++){let U=E[B];N=I[U],N||(N=I[U]=Object.create(null),D++),I=N}let _=I[Ts];if(_)_>=96&&m?(Y[k++]=((_-=96)&31)+96,Y[k++]=_>>5):Y[k++]=_;else{_=a.nextId,_||(_=64),_<y&&this.shouldShareStructure&&!this.shouldShareStructure(E)?(_=a.nextOwnId,_<g||(_=y),a.nextOwnId=_+1):(_>=g&&(_=y),a.nextId=_+1);let B=E.highByte=_>=96&&m?_-96>>5:-1;I[Ts]=_,a[_-64]=E,_<y?(E.isShared=!0,a.sharedLength=_-63,i=!0,B>=0?(Y[k++]=(_&31)+96,Y[k++]=B):Y[k++]=_):(B>=0?(Y[k++]=213,Y[k++]=114,Y[k++]=(_&31)+96,Y[k++]=B):(Y[k++]=212,Y[k++]=114,Y[k++]=_),D&&(P+=O*D),v.length>=f&&(v.shift()[Ts]=0),v.push(I),S(E))}for(let B=0,V=E.length;B<V;B++)S(x[E[B]])},A=x=>{let E;if(x>16777216){if(x-t>Rg)throw new Error("Packed buffer would be larger than maximum buffer size");E=Math.min(Rg,Math.round(Math.max((x-t)*(x>67108864?1.25:2),4194304)/4096)*4096)}else E=(Math.max(x-t<<2,Y.length-1)>>12)+1<<12;let N=new Zd(E);return ht=new DataView(N.buffer,0,E),Y.copy?Y.copy(N,0,t,x):N.set(Y.slice(t,x)),k-=t,t=0,Qr=N.length-10,Y=N}}useBuffer(r){Y=r,ht=new DataView(Y.buffer,Y.byteOffset,Y.byteLength),k=0}};Jd=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,Cs];gc=[{pack(n,r,e){let t=n.getTime()/1e3;if((this.useTimestamp32||n.getMilliseconds()===0)&&t>=0&&t<4294967296){let{target:o,targetView:i,position:a}=r(6);o[a++]=214,o[a++]=255,i.setUint32(a,t)}else if(t>0&&t<17179869184){let{target:o,targetView:i,position:a}=r(10);o[a++]=215,o[a++]=255,i.setUint32(a,n.getMilliseconds()*4e6+(t/1e3/4294967296>>0)),i.setUint32(a+4,t)}else if(isNaN(t)){if(this.onInvalidDate)return r(0),e(this.onInvalidDate());let{target:o,targetView:i,position:a}=r(3);o[a++]=212,o[a++]=255,o[a++]=255}else{let{target:o,targetView:i,position:a}=r(15);o[a++]=199,o[a++]=12,o[a++]=255,i.setUint32(a,n.getMilliseconds()*1e6),i.setBigInt64(a+4,BigInt(Math.floor(t)))}}},{pack(n,r,e){let t=Array.from(n),{target:o,position:i}=r(this.structuredClone?3:0);this.structuredClone&&(o[i++]=212,o[i++]=115,o[i++]=0),e(t)}},{pack(n,r,e){let{target:t,position:o}=r(this.structuredClone?3:0);this.structuredClone&&(t[o++]=212,t[o++]=101,t[o++]=0),e([n.name,n.message])}},{pack(n,r,e){let{target:t,position:o}=r(this.structuredClone?3:0);this.structuredClone&&(t[o++]=212,t[o++]=120,t[o++]=0),e([n.source,n.flags])}},{pack(n,r){this.structuredClone?Vg(n,16,r):Gg(xc?Buffer.from(n):new Uint8Array(n),r)}},{pack(n,r){let e=n.constructor;e!==zg&&this.structuredClone?Vg(n,Qd.indexOf(e.name),r):Gg(n,r)}},{pack(n,r){let{target:e,position:t}=r(1);e[t]=193}}];function Vg(n,r,e,t){let o=n.byteLength;if(o+1<256){var{target:i,position:a}=e(4+o);i[a++]=199,i[a++]=o+1}else if(o+1<65536){var{target:i,position:a}=e(5+o);i[a++]=200,i[a++]=o+1>>8,i[a++]=o+1&255}else{var{target:i,position:a,targetView:s}=e(7+o);i[a++]=201,s.setUint32(a,o+1),a+=4}i[a++]=116,i[a++]=r,i.set(new Uint8Array(n.buffer,n.byteOffset,n.byteLength),a)}function Gg(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 oA(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 nA(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 en(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)");Jd.unshift(n.Class),gc.unshift(n)}Lg(n)}var jg=new kn({useRecords:!1}),iA=jg.pack,aA=jg.pack;var{NEVER:sA,ALWAYS:lA,DECIMAL_ROUND:cA,DECIMAL_FIT:uA}=mc,Fg=512,dA=1024;var Ug=new kn({structuredClone:!0});en({Class:fe.prototype.constructor,type:1,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,fe.prototype),n}});en({Class:be.prototype.constructor,type:2,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,be.prototype),n}});en({Class:Ke.prototype.constructor,type:3,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,Ke.prototype),n}});en({Class:Ps.prototype.constructor,type:4,write(n){return n.id},read(n){return new Ps(n)}});en({Class:Os.prototype.constructor,type:5,write(n){return n.data},read(n){return new Os(n)}});en({Class:Qe.prototype.constructor,type:6,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,Qe.prototype),n}});function pA(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 ep(n){if(Ui(n))return n;if(Array.isArray(n))return n.map(ep);if(typeof n=="object"&&n!==null){let r={};for(let e of Object.keys(n).sort())r[e]=ep(n[e]);return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}else return n}var bc;(t=>{function n(o){return Ug.pack(o)}t.serialize=n;function r(o){return Ug.unpack(o)}t.deserialize=r;function e(o){return pA(n(ep(o))).toString()}t.checksum=e})(bc||(bc={}));var on="personal camera",nn="a218fcc3-276b-49b9-b485-49037fd14f5f",Yg=2960946,mt=5526619;var Xi;(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),P=h.dot(g,v)/h.dot(g,g),O=h.scalarMultiply(g,P);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})(Xi||(Xi={}));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 kg;(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})(kg||(kg={}));var Hg;(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})(Hg||(Hg={}));var rn;(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})(rn||(rn={}));var wt;(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})(wt||(wt={}));var Ie;(c=>{c.white={...wt.white,a:1},c.transparent={...wt.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{...wt.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 wt.equals(u,p)&&u.a===p.a}c.equals=i;function a(u,p){return wt.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})(Ie||(Ie={}));var vc;(r=>r.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(vc||(vc={}));var Wg;(r=>r.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(Wg||(Wg={}));var qg;(r=>r.defaultData={control1:[.5,0],control2:[.5,1]})(qg||(qg={}));var $g;(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]))($g||($g={}));function tp(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 Ir;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function r(t){return e.all.includes(t)}e.is=r})(Ir||(Ir={}));var an;(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})(an||(an={}));var Jr;(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(fA.forEach(a=>{Object.assign(i,{[a]:o[a]??t[a]})}),i.radial={...t.radial},o.radial){let a=t.radial,s=o.radial;hA.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;mA.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;yA.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;gA.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;xA.forEach(l=>{Object.assign(i.randomnessObject,{[l]:s[l]??a[l]})})}return i}e.merge=r})(Jr||(Jr={}));var Sc;(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})(Sc||(Sc={}));var fA=["count"],hA=["radius","start","end","position","scale","rotation"],mA=["position","scale","rotation"],yA=["count","size"],gA=["count","position","scale","rotation"],xA=["strength","scale","rotation","position","movement","seed","freqScale"];var wc;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function r(t){return e.all.includes(t)}e.is=r})(wc||(wc={}));var Pc;(e=>{function n(t){return r(t)}e.defaultData=n;function r(t){if(t==="PointLight")return{type:t,color:Ie.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,penumbraSize:.5,depth:1e5};if(t==="SpotLight")return{type:t,color:Ie.white,intensity:1,distance:2e3,decay:1,shadows:!0,penumbra:0,angle:30/180*Math.PI,depth:1e5,penumbraSize:.5,shadowResolution:1024,shadowRadius:1};if(t==="DirectionalLight")return{type:t,color:Ie.white,intensity:1,shadows:!0,size:2e3,depth:1e5,penumbraSize:.5,shadowResolution:1024,shadowRadius:1};throw new Error("not implemented")}})(Pc||(Pc={}));var Ki;(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}))(Ki||(Ki={}));var sn;(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]})(sn||(sn={}));var rp;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function r(t,o){return t.castShadow===o.castShadow&&t.receiveShadow===o.receiveShadow}e.equals=r})(rp||(rp={}));var op;(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})(op||(op={}));var Oc;(r=>r.defaultData={...op.defaultData,...rp.defaultData})(Oc||(Oc={}));var Xg;(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})(Xg||(Xg={}));var Qi;(e=>(e.defaultVideo={data:"",thumb:"/_assets/_videos/catThumb.png",type:"video",name:"Cat video"},e.maxSize=3e7))(Qi||(Qi={}));var Kg;(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})(Kg||(Kg={}));function Zg(n){return n.type!=="displace"}var Qg;(r=>{function n(e){return e==="phong"||e==="toon"||e==="lambert"||e==="physical"}r.is=n})(Qg||(Qg={}));var Jg=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],ex=["wrapping","image","video","name","minFilter","magFilter"],xt;(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:Qi.defaultVideo,wrapping:1001,repeat:[1,1],offset:[0,0],rotation:0,minFilter:1008,magFilter:1006},crop:!1};case"color":return{...a,type:"color",color:wt.fromHex(mt)};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:{...wt.fromHex(6710886),a:1},colorB:{...wt.fromHex(6710886),a:1},colorC:{...wt.fromHex(16777215),a:1},colorD:{...wt.fromHex(16777215),a:1},distortion:[1,1],fA:[1.7,9.2],fB:[8.3,2.8],voronoiStyle:0,highCut:1,lowCut:0,smoothness:.3,seed:0,quality:1};case"fresnel":return{...a,type:"fresnel",color:Ie.fromHexAndA(16777215,1),bias:.1,scale:1,intensity:2,factor:1};case"rainbow":return{...a,type:"rainbow",filmThickness:30,movement:0,wavelengths:[0,0,0],noiseStrength:0,noiseScale:1,offset:[0,0,0]};case"toon":return{...a,type:"toon",positioning:2,colors:[[0,0,0,1],[.5,.5,.5,1],[.5,.5,.5,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,.475,.525,1,1,1,1,1,1,1],num:4,source:[0,1e3,0],isWorldSpace:!0,noiseStrength:0,noiseScale:1,shadowColor:Ie.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{...a,type:"outline",outlineColor:Ie.fromHexAndA(0,1),contourColor:Ie.fromHexAndA(0,1),outlineWidth:2,contourWidth:5,outlineThreshold:.4,contourThreshold:0,outlineSmoothing:0,contourFrequency:10,contourDirection:[0,1,0],positionalLines:!1,compensation:!0};case"matcap":return{...a,type:"matcap",texture:{image:"matcap_0",wrapping:1001,repeat:[1,1],offset:[0,0],rotation:0,minFilter:1008,magFilter:1006}};case"transmission":return{...a,type:"transmission",thickness:10,ior:1.5,roughness:1};case"displace":return{visible:!0,type:"displace",displacementType:"noise",noiseType:0,scale:10,movement:1,offset:[0,0,0],intensity:8,voronoiStyle:0,smoothness:.3,seed:0,highCut:1,lowCut:0,quality:1};case"pattern":return{...a,type:"pattern",style:0,projection:0,axis:"y",blending:0,offset:[0,0],colorA:{...wt.fromHex(0),a:1},colorB:{...wt.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}}}})(xt||(xt={}));var Nt;(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 be}}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 be;return h.push({fi:0,data:xt.defaultData("light",u),id:p}),h.push({fi:1,data:xt.defaultData("color"),id:d}),{layers:h}}c.defaultTwoLayerData=i;function a(u){let p=xt.defaultData("texture");u&&Object.assign(p.texture,{image:u});let d=new be;return d.push({fi:0,data:p,id:"layer1"}),d.push({fi:1,data:{...xt.defaultData("transmission"),alpha:1},id:"layer2"}),d.push({fi:2,data:{...xt.defaultData("light","lambert"),alpha:0},id:"layer3"}),{layers:d}}c.defaultUIObjectMaterial=a;function s(u,p="phong",d="layer1",h="layer2"){let f=xt.defaultData("texture");Object.assign(f.texture,{image:u});let m=new be;return m.push({fi:0,data:f,id:d}),m.push({fi:1,data:xt.defaultData("light",p),id:h}),{layers:m}}c.defaultTwoLayerTextureData=s;function l(u,p="phong",d="layer1",h="layer2"){let f=xt.defaultData("video");Object.assign(f.texture,{video:u});let m=new be;return m.push({fi:0,data:f,id:d}),m.push({fi:1,data:xt.defaultData("light",p),id:h}),{layers:m}}c.defaultTwoLayerVideoTextureData=l})(Nt||(Nt={}));var Zi;(r=>{function n(){return{points:new be,roundness:0,shapeHoles:[],isClosed:!1}}r.defaultData=n})(Zi||(Zi={}));var Ji;(r=>{function n(){return{points:new be,lastInsertionPlane:null,subdivisions:12,isClosed:!1}}r.defaultData=n})(Ji||(Ji={}));var np={type:"Ellipse",width:50,height:50,spikes:16,angle:360,innerRadius:0};var Cc;(r=>{function n(e,t){let o={...e};return bA.forEach(i=>{Object.assign(o,{[i]:t[i]??e[i]})}),o}r.merge=n})(Cc||(Cc={}));var Tc={shape:np,depth:1,offset:0,bevel:50,bevelSides:6,angle:0,twist:0,startScale:1,endScale:1,capType:"flat"},bA=["depth","offset","angle","twist","startScale","endScale"];var As;(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})(As||(As={}));var Ac;(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,Cc.merge(o.extrusion,t.extrusion))),o}r.merge=n})(Ac||(Ac={}));var Oo;(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:Ji.defaultData(),extrusion:Tc};if(e==="VectorGeometry")return{width:1,height:1,type:e,subdivisions:12,shape:Zi.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})(Oo||(Oo={}));var Mc;(r=>r.defaultData={enabled:!1,useBackgroundColor:!1,color:wt.white,near:.1,far:2e3})(Mc||(Mc={}));var Ic;(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}}})(Ic||(Ic={}));var ip;(r=>r.defaultData={softShadowQuality:"low"})(ip||(ip={}));var ap;(r=>r.defaultData={enabled:!0,color:{r:.8274509803921568,g:.8274509803921568,b:.8274509803921568},intensity:.75})(ap||(ap={}));var sp;(r=>r.defaultData={occlusion:!1,aoFullRes:!1,radius:256,bias:.5,aoColor:{r:.19607843137254902,g:.19607843137254902,b:.19607843137254902}})(sp||(sp={}));var Ms;(r=>r.defaultData={usePhysics:!1,gravity:-10})(Ms||(Ms={}));var lp;(r=>r.defaultData={playCamera:on,gameControlObject:null})(lp||(lp={}));var Nc;(r=>r.defaultData={backgroundColor:Ie.fromHexAndA(Yg,1),postprocessing:Ic.defaultData,fog:Mc.defaultData,globalPhysics:Ms.defaultData,ambient:ap.defaultData,ao:sp.defaultData,shadow:ip.defaultData,publish:lp.defaultData})(Nc||(Nc={}));var Ec;(r=>r.defaultData={colliderType:"box",size:[100,100,100],colliderHelperVisible:!0,forceType:"collider",forceRange:"global",forceIntensity:.5,forceDambing:.95})(Ec||(Ec={}));var tx;(e=>{function n(t){return t==="Component"||t==="Instance"}e.isComponentRelated=n;function r(t){return t==="Empty"||t==="Instance"}e.isEmptyOrComponent=r})(tx||(tx={}));var ea;(o=>{o.identity={...vc.identity,hiddenMatrix:rn.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 Ml({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:rn.isEqual(i.hiddenMatrix,a.hiddenMatrix)?void 0:a.hiddenMatrix})}o.diff=t})(ea||(ea={}));var bt;(r=>r.defaultData={states:new be,events:new be,visible:!0,raycastLock:!1,physics:sn.defaultData,pathSnapping:{pathId:null,slide:0,offset:0,orientation:"tangential"},...ea.identity,cloner:null})(bt||(bt={}));var Dc;(r=>r.defaultData={type:"Empty",...bt.defaultData})(Dc||(Dc={}));var rx;(r=>r.defaultData={type:"ParticleCollider",...Ec.defaultData,...bt.defaultData})(rx||(rx={}));var ox;(r=>r.defaultData={type:"Component",...bt.defaultData})(ox||(ox={}));var nx;(r=>r.defaultData={type:"Particle",...bt.defaultData,...Ki.defaultData})(nx||(nx={}));var ln;(r=>r.defaultData={type:"Mesh",...bt.defaultData,...Oc.defaultData})(ln||(ln={}));var Hn;(r=>r.defaultData={...bt.defaultData,...ea.identity,position:[0,0,an.DefaultTargetOffset],...an.defaultData})(Hn||(Hn={}));var _c;(e=>{function n(t){return{...bt.defaultData,...Pc.defaultData(t)}}e.defaultData=n,e.defaultDirectionalLightData={...e.defaultData("DirectionalLight"),position:[200,300,300],name:"Directional Light",intensity:.7}})(_c||(_c={}));var ta;(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})(ta||(ta={}));var eo;(i=>{i.rootOverrideProps=["physics","events"],i.compositeNonOptionalOverrideProps=["geometry"],i.compositeEntireOverrideOverrideProps=["material"];function t(a,s){return{...bt.defaultData,...s,component:a,overrides:new Qe,physics:void 0,events:void 0,type:"Instance"}}i.ofComponent=t;function o(a){let s=ea.fromObject(a.data);return t(a.id,s)}i.fromComponentData=o})(eo||(eo={}));var Co;(e=>{e.defaultData={type:"Page",...bt.defaultData,physics:{...sn.defaultData,fusedBody:!1},...Nc.defaultData,camera:Hn.defaultData};function r(t){return t.uiScene!==void 0}e.isUIPage=r})(Co||(Co={}));var Bc;(a=>(a.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:rn.identity,name:"Play Camera",visible:!0,raycastLock:!1,physics:sn.defaultData,states:new be,events:new be,cloner:null,pathSnapping:{pathId:null,orientation:"tangential",slide:0,offset:0},...an.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",...bt.defaultData,...ln.defaultData,geometry:Oo.defaultData("RectangleGeometry"),material:Nt.defaultTwoLayerData("phong","layer1","layer2")},a.defaultBooleanObject={name:"Boolean",...bt.defaultData,...ln.defaultData,geometry:Oo.defaultData("BooleanGeometry"),material:Nt.defaultTwoLayerData("phong","layer1","layer2")},a.defaultTextObject={name:"Text",...bt.defaultData,...ln.defaultData,geometry:Oo.defaultData("TextGeometry"),material:Nt.defaultTwoLayerData("phong","layer1","layer2")},a.defaultInputObject={name:"Input",...bt.defaultData,...ln.defaultData,geometry:Oo.defaultData("InputGeometry"),material:Nt.defaultTwoLayerData("phong","layer1","layer2")}))(Bc||(Bc={}));var Wn;(o=>{function n(i,a){let s={name:a};return i.type==="Mesh"?(s.geometry={},"material"in i&&(s.material={layers:new Qe}),"materials"in i&&(s.materials=i.materials.map(l=>({layers:new Qe})))):Ir.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=Qo(s.material,l=>{if(typeof l!="string")for(let[c,u]of Object.entries(a.material.layers)){let p=l.layers.data(c);p&&xt.patch(p,u)}}).data),s.materials&&a.materials&&(s.materials=Qo(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&&xt.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(...Sc.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,ea.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})}),Ir.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:Ac.merge(s.geometry,a.geometry)}),(a.material||a.materials)&&(s=r(s,a)),s.cloner&&"cloner"in a&&Object.assign(s,{cloner:Jr.merge(s.cloner,a.cloner)});else if(i.type==="Empty")s.cloner&&"cloner"in a&&Object.assign(s,{cloner:Jr.merge(s.cloner,a.cloner)});else if(wc.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=wt.clone(l.color))}return s}o.patch=t})(Wn||(Wn={}));var ra;(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})(ra||(ra={}));var Nr;(r=>r.defaultData={orbitControls:ra.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})(Nr||(Nr={}));var cp;(r=>r.defaultData={id:"basic",label:"Basic",style:"None",prompt:""})(cp||(cp={}));var up;(r=>r.defaultData={weather:0,shadows:0,lightOrigin:0,temperature:0,sun:0,camera:0,environment:0,particles:0,nature:0,floor:0})(up||(up={}));var To;(e=>(e.defaultData=()=>({mode:"line-art-both",prompt:"",negativePrompt:"",style:{...cp.defaultData},isRandomSeed:!0,seed:e.generateSeed(),guessMode:!1,advanced:!1,steps:20,guidanceScale:7.5,controlNetScale:1,modifiers:up.defaultData}),e.generateSeed=()=>Math.round(Math.random()*1e5)))(To||(To={}));var ix;(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})(ix||(ix={}));var Ao;(c=>{c.TRASH_CAN_ID="830a2708-8ed9-49cf-a68e-085299892222",c.defaultLight={fi:-1,data:_c.defaultDirectionalLightData,id:"830a2708-8ed9-49cf-a68e-085299899103",children:[]};function e(u=!0,p=[]){let d=[],h=Bc.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 Ke;return f.push({fi:1,id:nn,data:{...Co.defaultData,name:"Scene 1"},children:d}),f}c.createDefaultObjectTreeWithPage=e,c.defaultData={objects:e(),publish:Nr.defaultData,styles:To.defaultData()},c.emptyDataWithoutPage=function(){return{objects:new Ke,publish:Nr.defaultData,styles:To.defaultData()}},c.emptyDataWithPage=function(u=!0){return{objects:e(u),publish:Nr.defaultData,styles:To.defaultData()}},c.emptyData=function(){return{objects:new Ke,publish:{...Nr.defaultData},styles:To.defaultData()}};function s(u){return{...c.defaultData,objects:Rt(u,Ke.prototype)}}c.withObjs=s;function l(u,p){return s([{id:u,data:p,children:[],fi:0}])}c.withObj=l})(Ao||(Ao={}));var na;(r=>r.defaultData={preset:"fullscreen",allowResponsive:!1,size:[512,512],coords:[0,0],sceneScale:1,color:{r:0,g:0,b:0,a:.5}})(na||(na={}));var Lc;(e=>(e.defaultData=t=>({url:t,name:"New Webhook",parametersSchemas:new be}),e.defaultParameterValueByType=t=>t==="number"?0:t==="boolean"?!1:""))(Lc||(Lc={}));var ax;(r=>r.defaultData=(e,t="GET")=>({url:e,method:t,name:"New API",headers:new be,queries:new be,autoStart:!0}))(ax||(ax={}));var cn;(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})(cn||(cn={}));var dp;(r=>r.all=["images","videos","colors","audios","particles","fonts","materials","variables"])(dp||(dp={}));var sx;(r=>r.all=[...dp.all,"components"])(sx||(sx={}));var lx;(r=>{function n(){return{images:new fe,videos:new fe,colors:new fe,audios:new fe,particles:new fe,fonts:new fe,materials:new fe,components:new fe,variables:new fe,userAPIs:new fe,userWebhooks:new fe}}r.defaultData=n})(lx||(lx={}));var Er;(r=>{function n(){return{images:new fe,videos:new fe,colors:new fe,audios:new fe,particles:new fe,fonts:new fe,materials:new fe,components:new fe,variables:new fe,userAPIs:new fe,userWebhooks:new fe}}r.defaultData=n})(Er||(Er={}));var xr;(i=>{function n(){let a={};return a["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},Rt(a,fe.prototype)}i.defaultColors=n;function r(){return Rt({},fe.prototype)}i.defaultImages=r;function e(){return{catelogs:new fe,materials:new fe,images:new fe,videos:new fe,colors:new fe,audios:new fe,particles:new fe,fonts:new fe,variables:new be,userAPIs:new fe,userWebhooks:new fe,lib:Er.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})(xr||(xr={}));import{MathUtils as Gc}from"three";var Rc;(r=>r.list=["idle","move","jump","run"])(Rc||(Rc={}));var Vc;(e=>(e.defaultColliderData={type:"capsule",height:200,radius:50,position:[0,0,0],rotation:[0,0,0]},e.defaultDataThirdPerson={moveMode:"walk",forwardDirection:"+z",speedTranslate:1e3,speedRotate:100,runMultiplier:2,rotationMode:"normal",rotBy:"keys",rotByTouch:"drag",delayPos:[.3,.3],delayRot:[.3,.3],keyAssignments:[["moveNegZ","W"],["moveNegX","A"],["movePosZ","S"],["movePosX","D"],["rotPosX","\u25B2"],["rotPosY","\u25C0"],["rotNegX","\u25BC"],["rotNegY","\u25B6"],["jump","Space"],["run","\u21E7"],["none","Ctrl"]],touchControl:!0,joystickPosLoc:5,joystickRotLoc:11,jumpTouchButtonLoc:9,collider:e.defaultColliderData,colliderHelperVisible:!0,collisionEnabled:!0,jumpPower:100,resetYPosition:3e3,alignToGround:!1,autoOrientMove:!0,orientWith:"camera",orientMode:"radial",delayPosCamera:.3,delayRotCamera:.3,camera:"",cameraXAxis:"Limit",cameraYAxis:"Free",cameraRotXLimits:[0,Math.PI/2],cameraRotYLimits:[-Math.PI/2,Math.PI/2],gameActions:{idle:new be,move:new be,jump:new be,run:new be},navmesh:{enabled:!1,ch:6,cs:6,walkableClimb:5,walkableHeight:1,walkableRadius:0,zones:"all",objects:[],helperVisible:!0,destinationHelperRadius:0,destinationHelperColor:Ie.fromHexAndA(3728051,1)}}))(Vc||(Vc={}));function cx(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={...Mr(it(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={...it(r),near:Math.max(r.near,0),far:Math.max(r.far,0)};Object.assign(r,e)}})}function Mo(n,r){Object.values(n.shared.materials).forEach(e=>r(e))}function Io(n,r){n.scene.objects.traverse((e,t)=>{"materials"in t?t.materials.forEach((o,i)=>{o===void 0&&(t.materials[i]=Nt.defaultData(),o=t.materials[i]),typeof o!="string"&&r(o)}):"material"in t?typeof t.material!="string"&&(t.material===void 0&&(t.material=Nt.defaultData()),r(t.material)):t.type==="Mesh"&&(t.material===void 0&&(t.material=Nt.defaultData()),r(t.material)),"overrides"in t&&Object.values(t.overrides).forEach(o=>{o.material&&typeof o.material!="string"&&Object.getPrototypeOf(o.material)!==Qe.prototype&&r(o.material)})})}function vA(n){Object.assign(n.scene.publish,{orbitControls:{...ra.defaultData,...it(n.scene.publish.orbitControls)}})}function SA(n){Object.assign(n.scene.publish.settings,{video:{...Nr.defaultData.settings.video,...it(n.scene.publish.settings.video)}})}function wA(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((Jg.includes(o)||typeof i=="boolean")&&delete t[o],o==="texture")for(let[a,s]of Object.entries(i))(ex.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 PA(n){n.scene.publish.withBackground=!0}function OA(n){n.scene.publish.settings.web={compress:!0,preload:!0,preset:1,logo:!0,hint:!1}}function CA(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 TA(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 AA(n){n.scene.objects.traverse((r,e)=>{let t=n.scene.objects.unproxy().parent(r);if(t){let o=it(n.scene.objects.data(t));o&&o.type==="Mesh"&&o.geometry.type==="BooleanGeometry"&&e.type==="Mesh"&&(e.visible=it(e).booleanExclude!==!0)}})}function MA(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 IA(n){function r(t){Object.setPrototypeOf(t,Qe.prototype),t.texture&&Object.setPrototypeOf(t.texture,Qe.prototype)}function e(t){Object.setPrototypeOf(t,Qe.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=it(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=it(l).layers;e(c),l.layers=c}})})}function ux(n){n.layers===void 0&&Object.assign(n,Nt.defaultTwoLayerData("lambert"))}function pp(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={...it(r),colors:e,steps:t};Object.assign(r,o)}})}function NA(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&(e.geometry.type==="BooleanGeometry"||e.geometry.type==="SubdivGeometry")&&(e.geometry.phongAngle=35)})}function dx(n){n.scene.objects.traverse((r,e)=>{"materials"in e?e.materials.forEach(t=>{typeof t!="string"&&pp(t)}):"material"in e&&typeof e.material!="string"&&pp(e.material)}),Object.values(n.shared.materials).forEach(r=>pp(r))}function EA(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 DA(n){n.shared.audios=Rt({},fe.prototype)}function _A(n){n.shared.videos=Rt({},fe.prototype)}function BA(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 LA(n){Object.entries(it(n.shared.images)).filter(t=>t[1].asset===!1).map(t=>t[0]).forEach(t=>{delete n.shared.images[t]}),Object.entries(it(n.shared.audios)).filter(t=>t[1].asset===!1).map(t=>t[0]).forEach(t=>{delete n.shared.audios[t]})}function RA(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 fx(n){n.layers&&n.layers.forEach(r=>{Zg(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 VA(n){n.shared.fonts=Rt({},fe.prototype)}function GA(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 zA(n){let r=[];n.scene.objects.traverse((e,t)=>{let o=t;if(o.type==="TextFrame"){let i=Nt.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=GA(o.font);n.shared.fonts[s]===void 0&&(n.shared.fonts[s]={name:s});let l={name:o.name,...bt.defaultData,...ln.defaultData,flatShading:!1,wireframe:!1,geometry:{...Oo.defaultData("TextGeometry"),width:o.width,height:o.height,font:s,depth:0,horizontalAlign:o.horizontalAlign,verticalAlign:o.verticalAlign,fontSize:o.fontSize*1.40625,lineHeight:o.lineHeight/1.40625,letterSpacing:o.letterSpacing-1,text:o.text,textTransform:o.textTransform,extrudeBevelSize:0,extrudeBevelSegments:1},material:i,states:it(o.states),events:it(o.events),visible:o.visible,raycastLock:o.raycastLock,position:o.position,rotation:o.rotation,scale:o.scale,hiddenMatrix:o.hiddenMatrix},c=it(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 jA(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 be,move:new be,jump:new be}});else{let i=new be;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:Gc.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,Mr(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 be({fi:0,id:Gc.generateUUID(),data:c},{fi:1,id:Gc.generateUUID(),data:d})};i.push({fi:l,id:s,data:h})}),delete o.targets)}})})}function FA(n){n.scene.objects.traverse((r,e)=>{function t(o,i){let a=new be,s=[];if(e.events.forEach((l,c,u)=>{if(l.type==="Audio"&&l.trigger===i){let p;s.push(c),l.interaction==="play"?p={...Mr(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={...Mr(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:Gc.generateUUID(),data:{type:o,actions:a}}])}}t("Start","start"),t("MouseDown","mouseDown"),t("MouseUp","mouseUp"),t("KeyDown","keyDown"),t("KeyUp","keyUp")})}function hx(n){let r=n.layers.find(e=>e.type==="light")?.data;if(r?.category==="basic"){let e=xt.defaultData("light","phong"),t=r;Object.assign(t,e),t.visible=!1}}function mx(n){Mo(n,hx),Io(n,hx)}function UA(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&e.geometry.type==="SubdivGeometry"&&(e.geometry.scaleBaked||(e.geometry.scaleBaked=[1,1,1]))})}function kA(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 HA(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&e.geometry.type==="NonParametricGeometry"&&!("material"in e)&&!("materials"in e)&&(e.material=Nt.defaultTwoLayerData("phong"))})}function WA(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 qA(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 $A(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 YA(n){let{video:r}=n.scene.publish.settings;r.format==="gif"&&r.fps>48&&(r.fps=15)}function XA(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.resetYPosition=Math.abs(t.resetYPosition-e.position[1]))})})}function KA(n){let r=n.scene.environment.usePhysics;n.scene.objects.traverse((e,t)=>{r&&t.physics===null?t.collision=!1:t.collision="visibility"})}function QA(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.navmesh=Vc.defaultDataThirdPerson.navmesh)})})}function ZA(n){n.scene.styles||(n.scene.styles=To.defaultData())}function yx(n){n.layers.forEach(r=>{r.type==="light"&&r.category!=="toon"&&r.occlusion===void 0&&(r.occlusion=!0)})}function JA(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}),Io(n,yx),Mo(n,yx)}function eM(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&Object.assign(t.gameActions,{run:new be})})})}function tM(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.keyAssignments=[...t.keyAssignments,["run","\u21E7"],["none","Ctrl"]])})})}function gx(n){n.layers&&n.layers.forEach(r=>{r.type==="light"&&r.bumpMapIntensity===void 0&&(r.bumpMapIntensity=5)})}function xx(n,r){if(r<1&&(Io(n,cx),Mo(n,cx),n.schema=1),r<2&&(vA(n),n.schema=2),r<3&&(wA(n),n.schema=3),r<4&&(PA(n),n.schema=4),r<5&&(OA(n),n.schema=5),r<6&&(CA(n),n.schema=6),r<7&&(TA(n),n.schema=7),r<8&&(n.schema=8),r<9&&(dx(n),n.schema=9),r<10&&(NA(n),n.schema=10),r<11&&(EA(n),n.schema=11),r<12&&(dx(n),n.schema=12),r<13&&(DA(n),n.schema=13),r<14&&(BA(n),n.schema=14),r<15&&(LA(n),n.schema=15),r<16&&(RA(n),n.schema=16),r<17&&(Io(n,px),Mo(n,px),n.schema=17),r<18&&(Io(n,ux),Mo(n,ux),n.schema=18),r<19&&(SA(n),n.schema=19),r<20&&(VA(n),zA(n),n.schema=20),r<21&&(jA(n),FA(n),n.schema=21),r<22&&(mx(n),n.schema=22),r<23&&(UA(n),n.schema=23),r<24&&(kA(n),n.schema=24),(r<25||n.shared.videos===void 0)&&(_A(n),r<25&&(n.schema=25)),r<26&&(AA(n),n.schema=26),r<27&&(MA(n),n.schema=27),r<28&&(mx(n),n.schema=28),r<29&&(IA(n),n.schema=29),r<30&&(HA(n),n.schema=30),r<31&&(WA(n),n.schema=31),r<33&&(qA(n),n.schema=33),r<34&&($A(n),n.schema=34),r<35&&(YA(n),n.schema=35),r<36&&(XA(n),n.schema=36),r<37&&(KA(n),n.schema=37),r<38&&(Io(n,fx),Mo(n,fx),n.schema=38),r<39&&(QA(n),n.schema=39),r<40&&(ZA(n),n.schema=40),r<41&&(JA(n),n.schema=41),r<42&&(eM(n),n.schema=42),r<43&&(tM(n),n.schema=43),r<99){Io(n,gx),Mo(n,gx),n.scene.publish.playCamera===null&&(n.scene.publish.playCamera=on);let e=it(n.scene.objects),t=n.scene.objects;n.scene.publish.playPage=nn,t.insertBefore(null,null,[{id:nn,data:{...Co.defaultData,backgroundColor:n.scene.backgroundColor,fog:n.scene.fog,postprocessing:n.scene.postprocessing,ao:Mr(n.scene.environment.ambientLight,"occlusion","aoFullRes","radius","bias","aoColor"),publish:{playCamera:n.scene.publish.playCamera,gameControlObject:n.scene.publish.gameControlObject},shadow:Mr(n.scene.environment.ambientLight,"softShadowQuality"),globalPhysics:{...Ms.defaultData,...Mr(n.scene.environment,"usePhysics","gravity")},camera:it(n.scene.ownerCamera)??Co.defaultData.camera,name:"Scene"},children:[]}]);for(let a of e)a.id!==Ao.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,sn.defaultData)),s.physics!==void 0&&s.physics!==null&&(s.physics.enabled=s.collision??"visibility",delete s.collision)}),n.schema=99}}function bx(n){n.layers&&n.layers.forEach(r=>{r.type==="light"&&r.alphaOverride===void 0&&(r.alphaOverride=1)})}function rM(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 oM(n){Array.isArray(it(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 ia=180/Math.PI;function vx(n){n.rotation=n.rotation.slice(0,3).map(r=>r*ia)}function Sx(n){vx(n),n.type==="Page"&&vx(n.camera),n.states?.forEach(e=>{e.rotation===void 0||e.rotation===null||(e.rotation=e.rotation.slice(0,3).map(t=>t*ia))});let r=n.geometry;r&&r.type==="SphereGeometry"&&(r.thetaLength=(r.thetaLength??180)*ia),r&&r.type==="TorusGeometry"&&(r.arc=r.arc*ia),r&&r.type==="PathGeometry"&&(r.extrusion.angle*=ia,r.extrusion.twist*=ia),n.type==="Mesh"&&n.geometry.type==="TextGeometry"&&(n.geometry.text={textValue:n.geometry.text}),Array.isArray(it(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 nM(n){n.shared.variables=Rt({},fe.prototype)}function iM(n){let r=it(n.shared.variables);n.shared.variables=Rt(Object.entries(r??{}).map(([e,t],o)=>({fi:o,id:e,data:t})),be.prototype)}var to=115;function wx(n,r){r(n.data);for(let e of n.children)wx(e,r)}function aM(n){let r=n.schema??104;r!==to&&r<105&&(wx(n.asset,Sx),n.schema=105)}function sM(n){n.shared.particles=Rt({},fe.prototype),n.shared.lib&&(n.shared.lib.particles=Er.defaultData().particles)}function lM(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 cM(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 uM(n){n.scene.objects.traverse((r,e)=>{Array.isArray(it(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 dM(n){n.shared.userAPIs=Rt({},fe.prototype),n.shared.userWebhooks=Rt({},fe.prototype),n.shared.lib&&(n.shared.lib.userAPIs=Er.defaultData().userAPIs,n.shared.lib.userWebhooks=Er.defaultData().userWebhooks)}function zc(n){let r=n.schema??0;if(r!==to){console.warn("updating from ",r,"to ",to),xx(n,r),r<100&&(n.scene.publish.joystickSizeAndXYOffset===void 0&&(n.scene.publish.joystickSizeAndXYOffset=Nr.defaultData.joystickSizeAndXYOffset),n.schema=100),r<101&&(Io(n,bx),Mo(n,bx),n.schema=101),r<102&&(rM(n),n.schema=102),r<104&&(n.shared.catelogs=new fe,n.shared.lib=Er.defaultData(),n.schema=104),r<105&&(nM(n),n.scene.objects.traverse((e,t)=>{Sx(t)}),n.schema=105);for(let e of Object.values(n.shared.lib.components))aM(e);r<106&&(iM(n),n.schema=106),r<107&&(n.shared.lib.variables=Er.defaultData().variables,n.schema=107),r<109&&(sM(n),n.schema=109),r<110&&(lM(n),n.schema=110),r<111&&(n.scene.objects.traverse((e,t)=>{oM(t)}),n.schema=111),r<112&&(cM(n),n.schema=112),r<113&&(uM(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&&(dM(n),n.schema=115)}}var oa;(c=>{c.defaultData={schema:to,scene:Ao.defaultData,frames:new fe().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",na.defaultData),shared:{...xr.emptyData(),colors:xr.defaultColors()}},c.emptyDataForImports=function(){let u=Ao.emptyDataWithPage();return{schema:to,scene:u,frames:new fe().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",na.defaultData),shared:{...xr.emptyData(),colors:xr.defaultColors(),images:xr.defaultImages()}}},c.emptyData=function(){return{schema:to,scene:Ao.emptyDataWithPage(),frames:new fe().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",na.defaultData),shared:xr.emptyData()}},c.clipboard2dData=function(){return{schema:to,scene:Ao.emptyData(),frames:new fe,shared:xr.emptyData()}},c.collabHelper={...ws,updateSchema(u){return(u.schema??0)<to?Qo(u,zc):(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:Er.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 jc;(r=>r.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII=",name:"empty"})(jc||(jc={}));var Px;(r=>{function n(e){return!0}r.is=n})(Px||(Px={}));var Fc;(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 Ml({position:Xi.isEqual(o.position,i.position)?void 0:i.position,rotation:o.rotation===i.rotation?void 0:i.rotation,scale:Xi.isEqual(o.scale,i.scale)?void 0:i.scale,shear:o.shear&&i.shear&&Xi.isEqual(o.shear,i.shear)?void 0:i.shear})}t.diff=e})(Fc||(Fc={}));var fp;(r=>r.defaultData={horizontalConstraint:0,verticalConstraint:0})(fp||(fp={}));var Ox;(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})(Ox||(Ox={}));var Uc;(r=>r.defaultData={opacity:1,fill:{color:Ie.fromHexAndA(mt,1),enabled:!0},stroke:{color:Ie.from0to1([0,0,0,1]),thickness:1,enabled:!1,mode:"inside"},layerBlur:{radius:2,enabled:!1},backgroundBlur:{radius:2,enabled:!1},dropShadow:{offset:[10,10],blurRadius:10,color:Ie.from0to1([0,0,0,1]),enabled:!1,spread:0},innerShadow:{offset:[10,10],blurRadius:10,color:Ie.from0to1([0,0,0,1]),enabled:!1,spread:0}})(Uc||(Uc={}));var qn;(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,Fc.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})(qn||(qn={}));var Is;(r=>r.defaultData={...Fc.defaultData,...fp.defaultData,states:new be,events:new be,visible:!0,raycastLock:!1})(Is||(Is={}));var aa;(r=>r.defaultData={...Is.defaultData,...Uc.defaultData})(aa||(aa={}));var kc;(r=>r.defaultData={cornerRadius:[0,0,0,0]})(kc||(kc={}));var hp;(r=>r.defaultData={...aa.defaultData,type:"ellipse2d",width:100,height:100,name:"Ellipse"})(hp||(hp={}));var sa;(r=>r.defaultData={...aa.defaultData,...kc.defaultData,type:"rectangle2d",width:100,height:100,name:"Rectangle"})(sa||(sa={}));var mp;(r=>r.defaultData={...aa.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"})(mp||(mp={}));var yp;(r=>r.defaultData={...aa.defaultData,type:"path2d",path:"",name:"Path"})(yp||(yp={}));var Cx;(r=>{function n(e){return e.type==="ellipse2d"||e.type==="rectangle2d"||e.type==="text2d"||e.type==="vector2d"||e.type==="path2d"}r.is=n})(Cx||(Cx={}));var Ns;(r=>r.defaultData={...Is.defaultData,name:"Group",type:"group2d"})(Ns||(Ns={}));var gp;(r=>r.defaultData=()=>({...Is.defaultData,...kc.defaultData,...Uc.defaultData,name:"Frame",type:"frame2d",clipped:!0,width:200,height:200,fill:{color:Ie.fromHexAndA(4737101,1),enabled:!0},stroke:{color:Ie.fromHexAndA(0,1),thickness:1,enabled:!1,mode:"inside"},backgroundBlur:{radius:2,enabled:!1},layerBlur:{radius:2,enabled:!1}}))(gp||(gp={}));var No;(i=>{function n(a){switch(a){case"rectangle2d":return{...sa.defaultData};case"ellipse2d":return{...hp.defaultData};case"text2d":return{...mp.defaultData};case"vector2d":return{...sa.defaultData};case"path2d":return{...yp.defaultData};case"frame2d":return{...gp.defaultData()};case"group2d":return{...Ns.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})(No||(No={}));var Hc;(e=>(e.defaultData={name:"UI",type:"scene2d",objects:new Ke},e.emptyData=function(){return{type:"scene2d",objects:new Ke}}))(Hc||(Hc={}));var ts=bi(Ax());import{Object3D as gE,Vector3 as pr,Euler as Zf,MathUtils as pv,Matrix4 as di}from"three";var pM=.5*(Math.sqrt(3)-1),Es=(3-Math.sqrt(3))/6,fM=1/3,ro=1/6,vW=(Math.sqrt(5)-1)/4,SW=(5-Math.sqrt(5))/20,Ds=n=>Math.floor(n)|0,Mx=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]),bp=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 Wc(n=Math.random){let r=Nx(n),e=new Float64Array(r).map(o=>Mx[o%12*2]),t=new Float64Array(r).map(o=>Mx[o%12*2+1]);return function(i,a){let s=0,l=0,c=0,u=(i+a)*pM,p=Ds(i+u),d=Ds(a+u),h=(p+d)*Es,f=p-h,m=d-h,y=i-f,g=a-m,v,P;y>g?(v=1,P=0):(v=0,P=1);let O=y-v+Es,S=g-P+Es,C=y-1+2*Es,A=g-1+2*Es,x=p&255,E=d&255,N=.5-y*y-g*g;if(N>=0){let _=x+r[E],B=e[_],V=t[_];N*=N,s=N*N*(B*y+V*g)}let I=.5-O*O-S*S;if(I>=0){let _=x+v+r[E+P],B=e[_],V=t[_];I*=I,l=I*I*(B*O+V*S)}let D=.5-C*C-A*A;if(D>=0){let _=x+1+r[E+1],B=e[_],V=t[_];D*=D,c=D*D*(B*C+V*A)}return 70*(s+l+c)}}function Ix(n=Math.random){let r=Nx(n),e=new Float64Array(r).map(i=>bp[i%12*3]),t=new Float64Array(r).map(i=>bp[i%12*3+1]),o=new Float64Array(r).map(i=>bp[i%12*3+2]);return function(a,s,l){let c,u,p,d,h=(a+s+l)*fM,f=Ds(a+h),m=Ds(s+h),y=Ds(l+h),g=(f+m+y)*ro,v=f-g,P=m-g,O=y-g,S=a-v,C=s-P,A=l-O,x,E,N,I,D,_;S>=C?C>=A?(x=1,E=0,N=0,I=1,D=1,_=0):S>=A?(x=1,E=0,N=0,I=1,D=0,_=1):(x=0,E=0,N=1,I=1,D=0,_=1):C<A?(x=0,E=0,N=1,I=0,D=1,_=1):S<A?(x=0,E=1,N=0,I=0,D=1,_=1):(x=0,E=1,N=0,I=1,D=1,_=0);let B=S-x+ro,V=C-E+ro,U=A-N+ro,R=S-I+2*ro,W=C-D+2*ro,j=A-_+2*ro,F=S-1+3*ro,H=C-1+3*ro,q=A-1+3*ro,re=f&255,ee=m&255,X=y&255,te=.6-S*S-C*C-A*A;if(te<0)c=0;else{let $=re+r[ee+r[X]];te*=te,c=te*te*(e[$]*S+t[$]*C+o[$]*A)}let K=.6-B*B-V*V-U*U;if(K<0)u=0;else{let $=re+x+r[ee+E+r[X+N]];K*=K,u=K*K*(e[$]*B+t[$]*V+o[$]*U)}let Z=.6-R*R-W*W-j*j;if(Z<0)p=0;else{let $=re+I+r[ee+D+r[X+_]];Z*=Z,p=Z*Z*(e[$]*R+t[$]*W+o[$]*j)}let Q=.6-F*F-H*H-q*q;if(Q<0)d=0;else{let $=re+1+r[ee+1+r[X+1]];Q*=Q,d=Q*Q*(e[$]*F+t[$]*H+o[$]*q)}return 32*(c+u+p+d)}}function Nx(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}import{Triangle as hM}from"three";var Dr=new hM,qc=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;Dr.a.fromBufferAttribute(r,o),Dr.b.fromBufferAttribute(r,o+1),Dr.c.fromBufferAttribute(r,o+2),i*=Dr.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),Dr.a.fromBufferAttribute(this.positionAttribute,r*3),Dr.b.fromBufferAttribute(this.positionAttribute,r*3+1),Dr.c.fromBufferAttribute(this.positionAttribute,r*3+2),e.set(0,0,0).addScaledVector(Dr.a,o).addScaledVector(Dr.b,i).addScaledVector(Dr.c,1-(o+i)),Dr.getNormal(t),this}};import{Object3D as bM}from"three";var _x=bi(Dx());import{Object3D as mM,Matrix4 as oo}from"three";var yM=new oo,gM=new oo,xM=new oo,la;(r=>{function n(e){return e&&e.__isSPEObject}r.is=n})(la||(la={}));var ca=n=>class extends n{constructor(){super(...arguments);this.previousModelViewMatrix=new oo;this.copyPreviousMatrix=!0;this.hiddenMatrix=new oo;this.matrixWorldRigid=new oo;this.shearScale=new oo;this.shearScaleInv=new oo}get __isSPEObject(){return!0}isDescendantOf(t){t instanceof mM&&(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)la.is(i)&&i.traverseObject(t,o+1)}traverseObject(t,o=0){if(t(this,o)!==!0)for(let a of this.children)la.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=yM.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=gM.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=xM.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 oo().copy(this.matrixWorld).invert();return t.parent!==null&&(t.parent.updateWorldMatrix(!0,!1),i.multiply(t.parent.matrixWorld)),"hiddenMatrix"in t&&t.hiddenMatrix instanceof oo?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 vp=class extends ca(bM){},vM=n=>n.type==="Mesh",Eo=class extends vp{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 Eo(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 vM(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}};import{Box3 as EN,BufferGeometry as DN,MeshBasicMaterial as _N}from"three";import{Matrix4 as IN,Mesh as NN}from"three";import{Matrix4 as Xc,Vector3 as Rx,Euler as TM,MathUtils as Bs}from"three";import{Box3 as SM,Line3 as wM,Matrix4 as Sp,Vector3 as cr}from"three";var $n=new cr,Yn=new cr,ua=new Sp,Lx=[new cr(-1,1,1),new cr(-1,-1,1),new cr(1,-1,1),new cr(1,1,1),new cr(-1,1,-1),new cr(-1,-1,-1),new cr(1,-1,-1),new cr(1,1,-1)],PM=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],OM=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]],Bx=(n,r,e)=>{n.updateEntityBoxSize($n,Yn),ua.copy(r).multiply(n.matrixWorld),Yn.x===0&&Yn.y===0&&Yn.z===0?e.push(new cr($n.x,$n.y,$n.z).applyMatrix4(ua)):Lx.forEach(t=>{e.push(t.clone().multiply(Yn).add($n).applyMatrix4(ua))})},_s=class extends SM{constructor(){super(...arguments);this.matrix=new Sp;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 Sp().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 cr);return}Bx(a,t,i)}}):Bx(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(ua.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(Yn).multiplyScalar(.5),this.getCenter($n),ua.copy(this.matrix).setPosition($n),this.vertices=Lx.map(e=>e.clone().multiply(Yn).applyMatrix4(ua))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=PM.map(([e,t])=>new wM(this.vertices[e],this.vertices[t])),this.centerEdges=this.edges.map(e=>e.getCenter(new cr))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=OM.map(([e,t])=>this.vertices[e].clone().add(this.vertices[t]).multiplyScalar(.5))}};var _r={Cloner:()=>{},changeEntityProptotype:()=>{},createEntity:()=>{}};import{CurvePath as CM,CubicBezierCurve3 as wp,Vector3 as Br}from"three";var Op=class extends CM{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 Cp=.001;function Tp(n,r,e){return r.clone().sub(n).cross(r.clone().sub(e)).length()<=Cp}function Pp(n,r){let e=new Br(...n.position),t=new Br(...n.controlNext.position),o=new Br(...r.controlPrevious.position),i=new Br(...r.position);return Tp(e,t,i)&&Tp(e,o,i)}function Yc(n){let r=n.points.map(u=>new Br(...u.data.position)),e=[n.points[0]],t=new Br(...e[0].data.position);for(let u=0;u<n.points.length-1;u++)Tp(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 Br(...p.position),h=new Br(...p.controlPrevious.position),f=new Br(...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,P=e[g].data,O=new Br(...v.position),S=new Br(...P.position),C=O.clone().sub(d).normalize(),A=S.clone().sub(d).normalize();Object.assign(m,{prevDir:C,nextDir:A});let x=Pp(v,p),E=Pp(p,P);if(!x||!E)s[u]={...m,removedLength:0};else{let N=C.clone().add(A).normalize(),I=N.clone().cross(C).length()/C.dot(N);s[u]={...m,tan:I,removedLength:p.roundness/I}}}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(!Pp(e[p].data,e[d].data))h.position.distanceTo(f.position)>Cp&&(m=new wp(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)>Cp&&(m=new wp(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,P=y.clone().multiplyScalar(Math.sqrt(Math.pow(m,2)-Math.pow(v,2))).add(g),O=y.clone().multiplyScalar(-m).add(P),S=d.distanceTo(O)/d.distanceTo(g),C=p.prevDir.clone().multiplyScalar(S*d.distanceTo(h)).add(d),A=C.clone().lerp(O,2),x=h.clone().lerp(C,4/3),E=f.clone().lerp(A,4/3);l[2*u]=new wp(h,x,E,f)}let c=new Op;return l.forEach(u=>{u&&c.add(u)}),c}var Re;(r=>{function n(e){return e&&e.__isEntity}r.is=n})(Re||(Re={}));var da=n=>Re.is(n),AM={type:"completeState",isfromEntity:!0},MM=["x","y","z"],Ap=new Rx,IM=new Rx().set(0,1,0),pa=n=>class extends ca(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 _s;this._recursiveBBox=new _s;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(Re.is(o))return o}entityChildrenCount(){let t=this.children.length;for(;t--;)if(Re.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(Re.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)Wn.toOps(this.data,a.data).forEach(l=>{let c=Wi.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=Wn.patch(this.data,a),Wn.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(Re.is(o[i]))return o[i];if(Re.is(t))return t.traverseSortNextHelper()}}sortNext(){let t=this.children;return this.children.length>0&&Re.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=>{Re.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*Bs.RAD2DEG,this.rotation.y*Bs.RAD2DEG,this.rotation.z*Bs.RAD2DEG],scale:this.scale.toArray(),hiddenMatrix:this.hiddenMatrix.toArray()};return ji(o,t)}getTransformValues(t,o,i){return o[t].map((a,s)=>i?.shared.getVariable(a,[this.uuid,t,MM[s]])??a)}updateTransformState(t,o){let i=!1;return t.position&&(this.position.fromArray(this.getTransformValues("position",t,o)),i=!0),t.rotation&&(Ap.fromArray(this.getTransformValues("rotation",t,o)).multiplyScalar(Bs.DEG2RAD),this.rotation.setFromVector3(Ap),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??rn.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)Re.is(t)&&t.disposeRecursively()}disposeRecursively(){this.dispose(),this.children.forEach(t=>{Re.is(t)&&t.disposeRecursively()})}toState(t=[]){let o={name:this.name,visible:this.visible,raycastLock:this.raycastLock,...this.toObjectTransformState(t)};return ji(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=Le(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=Ze.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=Ze.removeOverridden(t.path,t.props,u);l={...t,props:p}}}if(this.updateByPatchedOpBase(l,Wn.patch(this.data,this.stateSelection?this.data.states.data(this.stateSelection):void 0),i),Le(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(Yr.apply(h.component.data,h.overrideData),i))}}else{let d=i.scene.findInstance([this.uuid,...u]);if(d){let h=Ze.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=ta.resolve(o.overrides,u),d.updateByOp(t,nt.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 eo.rootOverrideProps)d in t.props&&(p===void 0&&(p={}),p[d]=t.props[d]);p&&(u={...t,props:p})}else for(let p of eo.rootOverrideProps)if(Le(t.path,[p])){u=t;break}u!==void 0&&this.instances.forEach(p=>{if(p.isInstanceRoot){let d=Yr.filterOp(p.overrideData,u);d&&p.updateByOp(d,nt.applySimple(p.data,d),i,!0)}}),this.instances.forEach(p=>{if(!p.isInstanceRoot){let d=Yr.filterOp(p.overrideData,t);if(d){let h;s===p.data&&t===d?h=o:h=nt.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&&!Ir.is(t.props.type)&&_r.changeEntityProptotype(this,o,i);else if(t.path.length===1&&t.path[0]==="geometry"&&t.type===0&&"type"in t.props){_r.changeEntityProptotype(this,o,i);for(let a of this.children)Re.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),Le(t.path,["pathSnapping"])!==null&&this.updatePathSnapping(o.pathSnapping),Le(t.path,["cloner"])!==null){let a=nt.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=Yc(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 Xc;l.updateMatrixWorld();let f=new Xc().multiplyMatrices(h.clone().invert(),l.matrixWorld);d.applyMatrix4(f);let m={position:d.toArray(),rotation:c.rotation};if(s==="tangential"){let y=new Xc().extractRotation(l.matrixWorld),g=u.getTangentAt(p).applyMatrix4(y).add(d),v=new Xc().lookAt(d,g,IM),P=Ap.setFromEuler(new TM().setFromRotationMatrix(v)).multiplyScalar(Bs.RAD2DEG);m={...m,rotation:P.toArray()}}this.updateTransformState(m),this.traverseEntity(y=>{y._cameraType&&y.dispatchEvent(AM)})}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 _r.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 _r.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"})}};import{BufferGeometry as DM,ConeGeometry as _M,Float32BufferAttribute as BM,MathUtils as LM}from"three";import{BufferGeometry as Gx,CylinderGeometry as NM,Float32BufferAttribute as Qc,MathUtils as EM,Vector2 as Rr,Vector3 as Kc}from"three";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:64,heightSegments:1,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadius:8,cornerSegments:8,hollow:0},n.parameters);e.thetaLength=EM.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 Gx,f.setAttribute("position",new Qc([],3))):p||h?f=new Ls(c,u,t,o,i,a,s,l*Math.PI/180,p,p,d,h):f=new NM(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 un(n,r,e){e.x=n.x*r.x,e.y=n.y,e.z=n.x*r.y}function Vx(n){return new Rr(n.y,-n.x)}var Ls=class extends Gx{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,P=t/2,O=new Kc,S=new Kc;h&&r==0&&(r=c),h&&e==0&&(e=u);let C=new Rr(r,P),A=new Rr(e,-P),x=null,E=null,N=null,I=null,D=C.clone().sub(A),_=0,B=0,V=0;d>0&&(_=Math.min(r,e)*(1-d),B=r-_,V=e-_);let U=C.clone();U.x-=_;let R=Math.PI-D.angle(),W=D.angle(),j=Math.tan(W/2),F=Math.tan(R/2),H=j+F,q=d?H:F,re=d?H:j;if(c=Math.min(c,(r-B)/q,D.length()/H),u=Math.min(u,(e-V)/re,D.length()/H),c>0){let Q=c/j;x=C.clone().sub(new Rr(Q,c)),d&&(N=x.clone(),N.x-=_-H*c),C.sub(D.clone().setLength(Q))}if(u>0){let Q=u/F;E=A.clone().sub(new Rr(Q,-u)),A.add(D.clone().setLength(Q)),d&&(I=E.clone(),I.x-=_-H*u,U.sub(D.clone().setLength(Q)))}D=C.clone().sub(A);let ee=D.length()<.5,X=[];for(let Q=0;Q<=o;Q++){let $=[],ue=Q/o,le=ue*l+s,ne=new Rr(Math.sin(le),Math.cos(le));I&&E?(te($,ue,ne,R,u,I,-1,!0),te($,ue,ne,W,u,E,-1,!1)):E?(K($,ne,E.x,0,-1),te($,ue,ne,W,u,E,-1,!1)):a||K($,ne,e,V,-1);let ce=Vx(D).normalize();if(un(ce,ne,O),!ee)for(let ae=0;ae<=i;ae++){let me=ae/i,pe=D.clone().multiplyScalar(me).add(A);un(pe,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(N&&x?(te($,ue,ne,R,c,x,1,!1),te($,ue,ne,W,c,N,1,!0)):x?(te($,ue,ne,R,c,x,1,!1),K($,ne,x.x,0,1)):a||K($,ne,r,B,1),d&&!ee){let ae=Vx(D).multiplyScalar(-1).normalize();un(ae,ne,O);for(let me=0;me<=i;me++){let pe=me/i,he=D.clone().multiplyScalar(-pe).add(U);un(he,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],me=m[ne*3+2];f.push(ue,le,ce),(ae!=0||me!=0)&&f.push(le,ne,ce)}l<Math.PI*2&&(Z(-1,X[0],s),Z(1,X[X.length-1],s+l)),this.setIndex(f),this.setAttribute("position",new Qc(m,3)),this.setAttribute("normal",new Qc(y,3)),this.setAttribute("uv",new Qc(g,2));function te(Q,$,ue,le,ne,ce,ae,me){for(let pe=0;pe<p+1;pe++){let he=pe/p,xe=ae<0?he:1-he;me&&(xe-=1),xe*=le;let ye=new Rr(Math.sin(xe),Math.cos(xe)*ae),T=ye.clone().multiplyScalar(ne).add(ce);un(T,ue,S),m.push(S.x,S.y,S.z),un(ye,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 Kc,ae=new Rr,me=[ue,le];ne<0&&me.reverse();for(let pe of me)ae.set(pe,P*ne),un(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 Rr(Math.sin(ue),Math.cos(ue)),ne=new Rr(-Math.cos(ue),Math.sin(ue)),ce=new Kc,ae=Q<0?(he,xe,ye)=>f.push(he,xe,ye):(he,xe,ye)=>f.push(he,ye,xe),me=new Rr((r+e+B+V)/4,0);un(me,le,ce),m.push(ce.x,ce.y,ce.z),y.push(ne.x,0,ne.y),g.push(.5,.5);let pe=v++;for(let he of $){let xe=m.slice(he*3,he*3+3);m.push(...xe),y.push(ne.x,0,ne.y);let ye=g.slice(he*2,he*2+2);g.push(...ye),v++}for(let he=pe+1;he<v-1;he++)ae(pe,he,he+1);ae(pe,v-1,pe+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=LM.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 DM,d.setAttribute("position",new BM([],3))):c>0||u>0||l<360?d=new Ls(0,r/2,t,o,i,a,s,l*Math.PI/180,c,u,p,0,!0):d=new _M(r/2,t,o,i,a),d.scale(1,1,e/r),Object.assign(d,{userData:{...n,type:"ConeGeometry"}})}};import{BoxGeometry as RM,BufferGeometry as VM,Float32BufferAttribute as Mp,Vector3 as Rs}from"three";var Fx=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 RM(r,e,t,o,i,a):c=new Np(r,e,t,o,i,a,s,l),Object.assign(c,{userData:{...n,type:"CubeGeometry"}})}},Ip=Math.PI/2,Np=class extends VM{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 Mp(u,3)),this.setAttribute("normal",new Mp(p,3)),this.setAttribute("uv",new Mp(d,2));function f(g,v,P,O,S,C,A,x,E,N){let I=(C-2*s)/E,D=(A-2*s)/N,_=C/2-s,B=A/2-s,V=x/2,U=E+1,R=N+1,W=0,j=new Rs;for(let F=0;F<R;F++){let H=F*D-B;for(let q=0;q<U;q++){let re=q*I-_;j[g]=re*O,j[v]=H*S,j[P]=V,u.push(j.x,j.y,j.z),j[g]=0,j[v]=0,j[P]=x>0?1:-1,p.push(j.x,j.y,j.z),d.push(q/E),d.push(1-F/N),W+=1}}for(let F=0;F<N;F++)for(let H=0;H<E;H++){let q=h+H+U*F,re=h+H+U*(F+1),ee=h+(H+1)+U*(F+1),X=h+(H+1)+U*F;c.push(q,re,X),c.push(re,ee,X)}h+=W}function m(g,v,P,O,S,C,A,x,E,N){let I=(A-2*s)/N,D=A/2-s,_=x/2-s,B=E/2,V=N+1,U=0,R=new Rs,W=new Rs;for(let j=0;j<l+1;j++){let F=j/l*Ip,H=Math.sin(F)*s,q=(1-Math.cos(F))*s,re=Math.sin(F),ee=Math.cos(F);R[v]=(_+H)*S,R[P]=(B-q)*C,W[g]=0,W[v]=re*Math.sign(R[v]),W[P]=ee*Math.sign(R[P]);for(let X=0;X<V;X++){let te=X*I-D;R[g]=te*O,u.push(R.x,R.y,R.z),p.push(W.x,W.y,W.z),d.push(X/N),d.push(0),U+=1}}for(let j=0;j<l;j++)for(let F=0;F<N;F++){let H=h+F+V*j,q=h+F+V*(j+1),re=h+(F+1)+V*(j+1),ee=h+(F+1)+V*j;c.push(H,q,ee),c.push(q,re,ee)}h+=U}function y(g,v,P){let O=new Rs,S=new Rs(r/2,e/2,t/2);S.subScalar(s);let C=[],A=g*v*P>0?(E,N,I)=>c.push(E,N,I):(E,N,I)=>c.push(E,I,N);for(let E=0;E<=l;E++){let N=[],I=Ip*(1-E/l),D=Math.cos(I),_=Math.sin(I),B=0;for(let V=0;V<=E;V++){let U=Math.cos(B),R=Math.sin(B);O.x=D*U,O.y=_,O.z=D*R;let W=S.clone().addScaledVector(O,s);u.push(g*W.x,v*W.y,P*W.z),p.push(g*O.x,v*O.y,P*O.z),d.push(0,0),N.push(h++),B+=Ip/E}C.push(N)}let x=C.length-1;for(let E=0;E<x;E++){let N=C[E],I=C[E+1],D=N.length-1;A(N[0],I[1],I[0]);for(let _=1;_<=D;_++)A(N[_-1],N[_],I[_]),A(N[_],I[_+1],I[_])}}}};import{BufferGeometry as GM,Float32BufferAttribute as Ep,Triangle as zM,Vector3 as Do,Vector2 as Dp}from"three";var dn=class extends GM{constructor(r=[],e=[],t="",o=1,i=.2,a=4){super(),this.type="PolyhedronGeometryRound";let s=[],l=[],c=[];u(),p(),this.setAttribute("position",new Ep(s,3)),this.setAttribute("normal",new Ep(c,3)),this.setAttribute("uv",new Ep(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 Do,m=f.clone(),y=new zM,g=i*o,v=o-g,P=a+1,O=new Do,S=(j,F)=>O.subVectors(j,F).normalize(),C=(j,F)=>Array(j).fill(void 0).map(F),A=C(r.length/3,(j,F)=>new Do().fromArray(r,F*3).setLength(o)),x=[],E=1e6;for(let j=0;j<A.length;j++){let F=A[j],H=[],q,re,ee,X=1e10,te=-1;for(;(te=e.indexOf(j,te+1))!=-1;){let $=te-te%3;q=e[$+(te+1)%3],re=e[$+(te+2)%3],ee=F.distanceToSquared(A[q]),X=Math.min(X,ee),H.push([q,re,ee])}X+=1e-6;let K=[],Z=0,Q=H.length;for(let $=0;$<Q;$++){[q,re,ee]=H[Z];let ue=x[q]?.includes(j)==!0;ee<=X&&K.push(q+ +ue*E),Z=H.findIndex(le=>le[0]==re)}x.push(K)}let N=[];{let j=0,F=0,H,q,re=h==3;for(let ee=0;ee<=a;ee++){H=ee*(ee+1)/2,q=(ee+1)*(ee+2)/2;for(let X=0;X<a-ee;X++)[j,F]=[H+X+ee+2,q+X+ee+3],N.push(H,q,...re?[F,H]:[j,q],F,j),[H,q]=[j,F];N.push(H,q,H+a+2)}}let I=f.clone(),D=f.clone(),_=f.clone(),B=f.clone(),V=f.clone(),U=[],R=C(A.length,()=>C(h,()=>f.clone()));for(let j=0;j<A.length;j++){f.copy(A[j]).normalize(),I.copy(f).multiplyScalar(v);let F=x[j];for(let K=0;K<F.length;K++){let Z=F[K],Q=F[(K+1)%h];y.setFromPointsAndIndices(A,j,Z%E,Q%E),y.b.sub(y.a).setLength(1e10).add(y.a),y.c.sub(y.a).setLength(1e10).add(y.a),y.closestPointToPoint(I,R[j][K])}let H=[],q=[],re=[],ee=new Do;a==0&&[...R[j]].reduce((K,Z)=>K.add(Z),ee).multiplyScalar(1/h);for(let K=0;K<h;K++){let Z=[],Q=(K-1+h)%h,$=R[j][Q],ue=R[j][K];f.copy($).sub(I),m.copy(ue).sub(I);let le=I.angleTo(f),ne=f.angleTo(m),ce=Math.cos(le)*g;a==0?D.copy(ee):D.copy(I).setLength(v+ce),q.push(ce);let ae=[D,$,ue];for(let me=0;me<2;me++){let pe=ae[me],he=ae[me+1];B.subVectors(pe,I),V.subVectors(he,I),_.crossVectors(B,V).normalize();for(let xe=0;xe<P;xe++){let ye=[le,ne][me]*xe/P;f.copy(B).applyAxisAngle(_,ye).add(I),H.push(f.clone()),me&&(S(f,I),Z.push([xe==0?pe:f.clone(),O.clone()]))}me&&(S(he,I),Z.push([he,O.clone()]))}re.push(Z)}U.push(re);let X=2*P,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<P;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(I).setLength(q[K]).add(I),$.push(f.clone());$.push(V)}for(let le=0;le<P;le++)$.push(H[le+P+Z]);$.push(H[Q+P]);let ue=N.map(le=>$[le]);s.push(...ue.map(le=>[le.x,le.y,le.z]).flat()),c.push(...ue.map(le=>(S(le,I),[O.x,O.y,O.z])).flat())}}let W=[];for(let j=0;j<x.length;j++)for(let F=0;F<h;F++){let H=x[j][F];if(H<E){let q=x[H].findIndex(X=>X%E==j),re=U[j][F],ee=U[H][q];for(let X=0;X<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 j,F,H,q;[j,F]=W.splice(0,2);let re=[j];for(;j!=F;)re.push(F),H=W.indexOf(F),q=H%2,F=W.splice(H-q,2)[1-q];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 Do;for(let A=0;A<s.length;A+=3){d.x=s[A+0],d.y=s[A+1],d.z=s[A+2];let x=S(d)/2/Math.PI+.5,E=C(d)/Math.PI+.5;l.push(x,1-E)}let h=new Do,f=new Do,m=new Do,y=new Do,g=new Dp,v=new Dp,P=new Dp,O=(A,x,E,N)=>{N<0&&A.x===1&&(l[x]=A.x-1),E.x===0&&E.z===0&&(l[x]=N/2/Math.PI+.5)};for(let A=0,x=0;A<s.length;A+=9,x+=6){h.set(s[A+0],s[A+1],s[A+2]),f.set(s[A+3],s[A+4],s[A+5]),m.set(s[A+6],s[A+7],s[A+8]),g.set(l[x+0],l[x+1]),v.set(l[x+2],l[x+3]),P.set(l[x+4],l[x+5]),y.copy(h).add(f).add(m).divideScalar(3);let E=S(y);O(g,x+0,h,E),O(v,x+2,f,E),O(P,x+4,m,E)}for(let A=0;A<l.length;A+=6){let x=l[A+0],E=l[A+2],N=l[A+4],I=Math.max(x,E,N),D=Math.min(x,E,N);I>.9&&D<.1&&(x<.2&&(l[A+0]+=1),E<.2&&(l[A+2]+=1),N<.2&&(l[A+4]+=1))}function S(A){return Math.atan2(A.z,-A.x)}function C(A){return Math.atan2(-A.y,Math.sqrt(A.x*A.x+A.z*A.z))}}}static fromJSON(r){return new dn(r.vertices,r.indices,r.radius,r.corner,r.cornerSides)}};import{DodecahedronGeometry as jM}from"three";var Ux=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 Vs(r*.5,i,a):new jM(r*.5,o);return s.scale(1,e/r,t/r),Object.assign(s,{userData:{...n,type:"DodecahedronGeometry"}})}},Vs=class extends dn{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 Vs(r.radius,r.corner,r.cornerSides)}};import{Plane as QM,Shape as o0,Vector2 as _o,Vector3 as ZM,MathUtils as zp,LineCurve as jp,QuadraticBezierCurve as n0,CubicBezierCurve as tu}from"three";import{CubicBezierCurve as Zc,EllipseCurve as FM,LineCurve as Jc,LineCurve3 as UM,MathUtils as kM,QuadraticBezierCurve as Bp,SplineCurve as HM,Vector2 as Ht,Vector3 as Wx}from"three";var Gs=1e-12,fa=class{constructor(r){this.position=new Ht;this.startPosition=new Ht;this.uuid=kM.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 fa(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},ha=class extends fa{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new ha(this.parent).copy(this)}},Vr=class extends fa{constructor(e,t){super(t);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new ha(this),new ha(this))}static create(e,t){let o=new Vr(e,new Ht(...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 Vr(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 Ht,t=new Ht){let[o,i]=this.computeTangents();return o&&i&&(kx(o,e),kx(i,t)),[e,t]}computeTangent(e=new Ht){let[t,o]=this.computeTangents();return t&&o&&e.copy(t).add(o).normalize(),e}computeNormal(e=new Ht){let[t,o]=this.computeNormals();return e.copy(t).add(o).normalize(),e}};function kx(n,r=new Ht){let e=n.length();return r.set(-n.y/e,n.x/e)}var Lp=n=>n,ma=new Ht,eu=new Ht,WM=new Ht,qM=new Ht,$M=new Ht,YM=new Ht,qx=new Wx,$x=new Wx;function Yx(n){let r=new Ht;r.addVectors(n.v0,ma.subVectors(n.v1,n.v0).multiplyScalar(2/3));let e=new Ht;return e.addVectors(n.v2,eu.subVectors(n.v1,n.v2).multiplyScalar(2/3)),new Zc(n.v0,r,e,n.v2)}function zs(n,r,e=Number.EPSILON){return Math.abs(n-r)<e}function XM(n,r,e=Number.EPSILON){return n.distanceTo(r)<e}function KM(n,r,e=Number.EPSILON){return n.distanceTo(r)<e}function Rp(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 Xx(n,r,e){return Hx(n,r)&&Hx(r,e)&&_p(n.position,r.position,e.position)}function _p(n,r,e){return ma.copy(r).sub(n).cross(eu.copy(e).sub(n))===0}function Kx(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 Qx(n,r,e){let t=n.distanceTo(e),o=r.distanceTo(e);return t<o?r:n}function Zx(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 Rp(r,n,e)>Math.PI&&(u*=-1),zs(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 Vp(n,r){return n.position.equals(n.controls[1].position)&&r.position.equals(r.controls[0].position)}function Hx(n,r){return _p(n.position,n.controls[1].position,r.position)&&_p(n.position,r.controls[0].position,r.position)}function Jx(n,r,e,t,o=.5){let i=ma.subVectors(r,n).multiplyScalar(o).add(n),a=eu.subVectors(e,r).multiplyScalar(o).add(r),s=WM.subVectors(t,e).multiplyScalar(o).add(e),l=i,c=qM.subVectors(a,i).multiplyScalar(o).add(i),u=$M.subVectors(s,a).multiplyScalar(o).add(a),p=s,d=YM.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 e0(n,r,e=12,t=!0){let o=$x.set(0,0,0),i,a=0,s=[];for(let l=0;l<r.length;l++){let c=Lp(r[l]),u=ma,p=pn(c,e);s.push(p);for(let d=0;d<=p;d++)if(c instanceof Zc||c instanceof Bp||c instanceof Jc){if(c.getPoint(d/p,u),o.set(u.x,u.y,0),i!==void 0&&KM(i,o))continue;i===void 0&&(i=qx),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 t0(n,r,e,t=12,o=!0){let i=$x.set(0,0,0),a=0,s=[];for(let l=0;l<r.length;l++){if(e[l]===!1)continue;let c,u=Lp(r[l]),p=ma,d=pn(u,t);s.push(d);for(let h=0;h<=d;h++)if(u instanceof Zc||u instanceof Bp||u instanceof Jc){if(u.getPoint(h/d,p),i.set(p.x,p.y,0),c?.equals(i))continue;c===void 0?c=qx:(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 Gp(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=pn(a.roundedCurveCorner,r)*.5;o>0&&(t[o-1]+=l),s+=l}a.curveAfter!==void 0&&(s+=pn(a.curveAfter,r)),t.push(s)}return n.length>0&&e&&n[0].roundedCurveCorner!==void 0&&(t[n.length-1]+=pn(n[0].roundedCurveCorner,r)*.5),t}function pn(n,r=12){return n&&n instanceof FM?r*2:n&&(n instanceof Jc||n instanceof UM)?1:n&&n instanceof HM?r*n.points.length:r}function r0(n,r,e=12,t=!0){let o,i=0;for(let a=0;a<r.length;a++){let s=Lp(r[a]),l=pn(s,e),c=ma;for(let u=0;u<=l;u++)if(s instanceof Zc||s instanceof Bp||s instanceof Jc){if(s.getPoint(u/l,c),o!==void 0&&XM(o,c,Gs))continue;o===void 0&&(o=eu),o.copy(c),n.push(c.x,c.y),i++}}return zs(n[0],n[n.length-2],Gs)&&zs(n[1],n[n.length-1],Gs)&&(n.pop(),n.pop()),t&&i>1&&!(zs(n[i-1],n[1],Gs)&&zs(n[i-2],n[0],Gs))&&(n.push(n[0],n[1]),i++),n}var Fp=new _o,JM=new _o,eI=new _o,tI=new _o,rI=new _o,oI=new _o,Fe=class extends o0{constructor(e=100,t=100){super();this.points=[];this.shapeHoles=[];this.plane=new QM(new ZM(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=zp.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=t}static createFromState(e,t,o){let i=new Fe;return i.isClosed=e.isClosed,i.points=e.points.map(a=>Vr.create(a.id,a.data)),typeof e.roundness=="number"&&(i.roundness=e.roundness),i.shapeHoles=e.shapeHoles.map(a=>Fe.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=Fp.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=zp.generateUUID()){let i;e instanceof _o?i=e:i=new _o(e,t);let a=new Vr(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 e0(e,o?this.roundedCurves:this.curves,t,this.autoClose),i.reduce((a,s)=>a+s,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=Gp(this.points,e,!1),this.roundedCurveDivisions=Gp(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,t,o=12){return t0(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),r0(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=pn(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(Vp(i,a)){let p=i.position.distanceTo(a.position);return i.position.distanceTo(Fp.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){Vp(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&&Xx(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),P=Math.min(g,v),O=1-P/m,S=P/y,C=p.getPointAt(O,Fp),A=d.getPointAt(S,JM);this._subSplitCurve(p,h,O,C,void 0),this._subSplitCurve(d,f,S,void 0,A);let x;if(this.useCubicForRoundedCorners){let E=Rp(C,a.position,A)/2,N=Math.tan(E)*C.distanceTo(a.position),[I,D]=Kx(C,A,N,eI,tI),_=Qx(I,D,a.position),[B,V]=Zx(_,C,A,N,rI,oI);x=new tu(C.clone(),B.clone(),V.clone(),A.clone())}else x=new n0(C.clone(),a.position.clone(),A.clone());a.roundedCurveCorner=x,this.roundedCurves.splice(o+t,0,x),t++}}}}_subSplitCurve(e,t,o,i,a){if(e instanceof jp)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=Jx(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 Fe(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 Vr(zp.generateUUID(),new _o(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 Fe;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 tu&&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 n0&&(a[l]=Yx(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 tu?(f=this.createPoint(d.v0),f.controls[1].position.copy(d.v1)):d instanceof jp&&(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 tu?u.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(u.v2),p=!0):u instanceof jp&&u.v2.equals(s[0].position)&&(p=!0),this.isClosed=p,s};return this.points=i(e.curves),e instanceof o0&&(this.shapeHoles=e.holes.map(a=>{let s=new Fe;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 kp=Math.PI*2;function Up({x:n,y:r},e,t,o,i){return{x:n*e+o,y:r*t+i}}function nI(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 i0(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 iI(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,P=(a-m)/o,O=(s-y)/i,S=(-a-m)/o,C=(-s-y)/i,A=i0(1,0,P,O),x=i0(P,O,S,C);return!c&&x>0&&(x-=kp),c&&x<0&&(x+=kp),{centerx:g,centery:v,ang1:A,ang2:x}}function a0({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=iI(n,r,e,t,o,i,c,u,a,s),{ang1:h,ang2:f}=d,{centerx:m,centery:y}=d,g=Math.abs(f)/(kp/4);Math.abs(1-g)<1e-7&&(g=1);let v=Math.max(Math.ceil(g),1);f/=v;for(let P=0;P<v;P++)l.push(nI(h,f)),h+=f;return l.map(P=>{let{x:O,y:S}=Up(P[0],o,i,m,y),{x:C,y:A}=Up(P[1],o,i,m,y),{x,y:E}=Up(P[2],o,i,m,y);return{x1:O,y1:S,x2:C,y2:A,x,y:E}})}import{BufferAttribute as au,BufferGeometry as gI}from"three";var ze;(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"})(ze||(ze={}));var at;(function(n){n[n.POLYGONS=0]="POLYGONS",n[n.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",n[n.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(at||(at={}));function we(n,r){if(!n)throw r||"Assertion Failed!"}var ve=function(){function n(){}return n.vertEq=function(r,e){return r.s===e.s&&r.t===e.t},n.vertLeq=function(r,e){return r.s<e.s||r.s===e.s&&r.t<=e.t},n.transLeq=function(r,e){return r.t<e.t||r.t===e.t&&r.s<=e.s},n.edgeGoesLeft=function(r){return n.vertLeq(r.Dst,r.Org)},n.edgeGoesRight=function(r){return n.vertLeq(r.Org,r.Dst)},n.vertL1dist=function(r,e){return Math.abs(r.s-e.s)+Math.abs(r.t-e.t)},n.edgeEval=function(r,e,t){we(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){we(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){we(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){we(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}(),js=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}(),ru=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}(),ya=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}(),s0=function(){function n(){var r=new ya,e=new js,t=new ru(0),o=new ru(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 ru(0),t=new ru(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;we(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;we(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 ya,e=new ya,t=new js,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 ya;this.makeVertex_(i,e,r.Org),r.Org.anEdge=r}if(!t){var a=new js;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 js;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 ya;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 js;this.makeFace_(a,o,r.Lface)}return o},n.prototype.zapFace=function(r){var e=r.anEdge,t,o,i,a,s;o=e.Lnext;do t=o,o=t.Lnext,t.Lface=null,t.Rface===null&&(t.Onext===t?this.killVertex_(t.Org,null):(t.Org.anEdge=t.Onext,this.splice_(t,t.Oprev)),i=t.Sym,i.Onext===i?this.killVertex_(i.Org,null):(i.Org.anEdge=i.Onext,this.splice_(i,i.Oprev)),this.killEdge_(t));while(t!=e);a=r.prev,s=r.next,s.prev=a,a.next=s},n.prototype.countFaceVerts_=function(r){var e=r.anEdge,t=0;do t++,e=e.Lnext;while(e!==r.anEdge);return t},n.prototype.mergeConvexFaces=function(r){var e,t,o,i,a,s,l;for(e=this.fHead.next;e!==this.fHead;e=e.next)if(!!e.inside)for(t=e.anEdge,a=t.Org;o=t.Lnext,i=t.Sym,i&&i.Lface&&i.Lface.inside&&(s=this.countFaceVerts_(e),l=this.countFaceVerts_(i.Lface),s+l-2<=r&&ve.vertCCW(t.Lprev.Org,t.Org,i.Lnext.Lnext.Org)&&ve.vertCCW(i.Lprev.Org,i.Org,t.Lnext.Lnext.Org)&&(o=i.Lnext,this.delete(i),t=null,i=null)),!(t&&t.Lnext.Org===a);)t=o;return!0},n.prototype.check=function(){var r=this.fHead,e=this.vHead,t=this.eHead,o,i,a,s,l,c;for(i=r,i=r;(o=i.next)!==r;i=o){we(o.prev===i),l=o.anEdge;do we(l.Sym!==l),we(l.Sym.Sym===l),we(l.Lnext.Onext.Sym===l),we(l.Onext.Sym.Lnext===l),we(l.Lface===o),l=l.Lnext;while(l!==o.anEdge)}for(we(o.prev===i&&o.anEdge===null),s=e,s=e;(a=s.next)!==e;s=a){we(a.prev===s),l=a.anEdge;do we(l.Sym!==l),we(l.Sym.Sym===l),we(l.Lnext.Onext.Sym===l),we(l.Onext.Sym.Lnext===l),we(l.Org===a),l=l.Onext;while(l!==a.anEdge)}for(we(a.prev===s&&a.anEdge===null),c=t,c=t;(l=c.next)!==t;c=l)we(l.Sym.next===c.Sym),we(l.Sym!==l),we(l.Sym.Sym===l),we(l.Org!==null),we(l.Dst!==null),we(l.Lnext.Onext.Sym===l),we(l.Onext.Sym.Lnext===l);we(l.Sym.next===c.Sym&&l.Sym===this.eHeadSym&&l.Sym.Sym===l&&l.Org===null&&l.Dst===null&&l.Lface===null&&l.Rface===null)},n}(),l0=function(){function n(){this.handle=null}return n}(),c0=function(){function n(){this.key=null,this.node=0}return n}(),aI=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 l0,this.handles[t]=new c0;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,we(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 l0;for(i=this.handles.length,this.handles.length=this.max+1,o=i;o<this.handles.length;o++)this.handles[o]=new c0}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;we(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}(),Hp=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}(),u0=function(){function n(){this.key=null,this.next=null,this.prev=null}return n}(),sI=function(){function n(r,e){this.frame=r,this.leq=e,this.head=new u0,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 u0;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}(),lI=function(){function n(){}return n.regionBelow=function(r){return r.nodeUp.prev.key},n.regionAbove=function(r){return r.nodeUp.next.key},n.debugEvent=function(r){},n.addWinding=function(r,e){r.winding+=e.winding,r.Sym.winding+=e.Sym.winding},n.edgeLeq=function(r,e,t){var o=r.event,i=e.eUp,a=t.eUp;if(i.Dst===o)return a.Dst===o?ve.vertLeq(i.Org,a.Org)?ve.edgeSign(a.Dst,i.Org,a.Org)<=0:ve.edgeSign(i.Dst,a.Org,i.Org)>=0:ve.edgeSign(a.Dst,o,a.Org)<=0;if(a.Dst===o)return ve.edgeSign(i.Dst,o,i.Org)>=0;var s=ve.edgeEval(i.Dst,o,i.Org),l=ve.edgeEval(a.Dst,o,a.Org);return s>=l},n.deleteRegion=function(r,e){e.fixUpperEdge&&we(e.eUp.winding===0),e.eUp.activeRegion=null,r.dict.delete(e.nodeUp)},n.fixUpperEdge=function(r,e,t){we(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 Hp;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 ze.ODD:return(e&1)!==0;case ze.NONZERO:return e!==0;case ze.POSITIVE:return e>0;case ze.NEGATIVE:return e<0;case ze.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 we(ve.vertLeq(c.Org,c.Dst)),n.addRegionBelow(r,e,c.Sym),c=c.Onext;while(c!==o);for(i===null&&(i=n.regionBelow(e).eUp.Rprev),l=e,u=i;s=n.regionBelow(l),c=s.eUp.Sym,c.Org===u.Org;)c.Onext!==u&&(r.mesh.splice(c.Oprev,c),r.mesh.splice(u.Oprev,c)),s.windingNumber=l.windingNumber-c.winding,s.inside=n.isWindingInside(r,s.windingNumber),l.dirty=!0,!p&&n.checkForRightSplice(r,l)&&(n.addWinding(c,u),n.deleteRegion(r,l),r.mesh.delete(u)),p=!1,l=s,u=c;l.dirty=!0,we(l.windingNumber-c.winding===s.windingNumber),a&&n.walkDirtyRegions(r,l)},n.spliceMergeVertices=function(r,e,t){r.mesh.splice(e,t)},n.vertexWeights=function(r,e,t){var o=ve.vertL1dist(e,r),i=ve.vertL1dist(t,r),a=.5*i/(o+i),s=.5*o/(o+i);r.coords[0]+=a*e.coords[0]+s*t.coords[0],r.coords[1]+=a*e.coords[1]+s*t.coords[1],r.coords[2]+=a*e.coords[2]+s*t.coords[2]},n.getIntersectData=function(r,e,t,o,i,a){e.coords[0]=e.coords[1]=e.coords[2]=0,e.idx=-1,n.vertexWeights(e,t,o),n.vertexWeights(e,i,a)},n.checkForRightSplice=function(r,e){var t=n.regionBelow(e),o=e.eUp,i=t.eUp;if(ve.vertLeq(o.Org,i.Org)){if(ve.edgeSign(i.Dst,o.Org,i.Org)>0)return!1;ve.vertEq(o.Org,i.Org)?o.Org!==i.Org&&(r.pq.delete(o.Org.pqHandle),n.spliceMergeVertices(r,i.Oprev,o)):(r.mesh.splitEdge(i.Sym),r.mesh.splice(o,i.Oprev),e.dirty=t.dirty=!0)}else{if(ve.edgeSign(o.Dst,i.Org,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,r.mesh.splitEdge(o.Sym),r.mesh.splice(i.Oprev,o)}return!0},n.checkForLeftSplice=function(r,e){var t=n.regionBelow(e),o=e.eUp,i=t.eUp,a;if(we(!ve.vertEq(o.Dst,i.Dst)),ve.vertLeq(o.Dst,i.Dst)){if(ve.edgeSign(o.Dst,i.Dst,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,a=r.mesh.splitEdge(o),r.mesh.splice(i.Sym,a),a.Lface.inside=e.inside}else{if(ve.edgeSign(i.Dst,o.Dst,i.Org)>0)return!1;e.dirty=t.dirty=!0,a=r.mesh.splitEdge(i),r.mesh.splice(o.Lnext,i.Sym),a.Rface.inside=e.inside}return!0},n.checkForIntersect=function(r,e){var t=n.regionBelow(e),o=e.eUp,i=t.eUp,a=o.Org,s=i.Org,l=o.Dst,c=i.Dst,u,p,d=new ya,h,f;if(we(!ve.vertEq(c,l)),we(ve.edgeSign(l,r.event,a)<=0),we(ve.edgeSign(c,r.event,s)>=0),we(a!==r.event&&s!==r.event),we(!e.fixUpperEdge&&!t.fixUpperEdge),a===s||(u=Math.min(a.t,l.t),p=Math.max(s.t,c.t),u>p))return!1;if(ve.vertLeq(a,s)){if(ve.edgeSign(c,a,s)>0)return!1}else if(ve.edgeSign(l,s,a)<0)return!1;return n.debugEvent(r),ve.intersect(l,a,c,s,d),we(Math.min(a.t,l.t)<=d.t),we(d.t<=Math.max(s.t,c.t)),we(Math.min(c.s,l.s)<=d.s),we(d.s<=Math.max(s.s,a.s)),ve.vertLeq(d,r.event)&&(d.s=r.event.s,d.t=r.event.t),h=ve.vertLeq(a,s)?a:s,ve.vertLeq(h,d)&&(d.s=h.s,d.t=h.t),ve.vertEq(d,a)||ve.vertEq(d,s)?(n.checkForRightSplice(r,e),!1):!ve.vertEq(l,r.event)&&ve.edgeSign(l,r.event,d)>=0||!ve.vertEq(c,r.event)&&ve.edgeSign(c,r.event,d)<=0?c===r.event?(r.mesh.splitEdge(o.Sym),r.mesh.splice(i.Sym,o),e=n.topLeftRegion(r,e),o=n.regionBelow(e).eUp,n.finishLeftRegions(r,n.regionBelow(e),t),n.addRightEdges(r,e,o.Oprev,o,o,!0),!0):l===r.event?(r.mesh.splitEdge(i.Sym),r.mesh.splice(o.Lnext,i.Oprev),t=e,e=n.topRightRegion(e),f=n.regionBelow(e).eUp.Rprev,t.eUp=i.Oprev,i=n.finishLeftRegions(r,t,null),n.addRightEdges(r,e,i.Onext,o.Rprev,f,!0),!0):(ve.edgeSign(l,r.event,d)>=0&&(n.regionAbove(e).dirty=e.dirty=!0,r.mesh.splitEdge(o.Sym),o.Org.s=r.event.s,o.Org.t=r.event.t),ve.edgeSign(c,r.event,d)<=0&&(e.dirty=t.dirty=!0,r.mesh.splitEdge(i.Sym),i.Org.s=r.event.s,i.Org.t=r.event.t),!1):(r.mesh.splitEdge(o.Sym),r.mesh.splitEdge(i.Sym),r.mesh.splice(i.Oprev,o),o.Org.s=d.s,o.Org.t=d.t,o.Org.pqHandle=r.pq.insert(o.Org),n.getIntersectData(r,o.Org,a,l,s,c),n.regionAbove(e).dirty=e.dirty=t.dirty=!0,!1)},n.walkDirtyRegions=function(r,e){for(var t=n.regionBelow(e),o,i;;){for(;t.dirty;)e=t,t=n.regionBelow(t);if(!e.dirty&&(t=e,e=n.regionAbove(e),e===null||!e.dirty))return;if(e.dirty=!1,o=e.eUp,i=t.eUp,o.Dst!==i.Dst&&n.checkForLeftSplice(r,e)&&(t.fixUpperEdge?(n.deleteRegion(r,t),r.mesh.delete(i),t=n.regionBelow(e),i=t.eUp):e.fixUpperEdge&&(n.deleteRegion(r,e),r.mesh.delete(o),e=n.regionAbove(t),o=e.eUp)),o.Org!==i.Org)if(o.Dst!==i.Dst&&!e.fixUpperEdge&&!t.fixUpperEdge&&(o.Dst===r.event||i.Dst===r.event)){if(n.checkForIntersect(r,e))return}else n.checkForRightSplice(r,e);o.Org===i.Org&&o.Dst===i.Dst&&(n.addWinding(i,o),n.deleteRegion(r,e),r.mesh.delete(o),e=n.regionAbove(t))}},n.connectRightVertex=function(r,e,t){var o,i=t.Onext,a=n.regionBelow(e),s=e.eUp,l=a.eUp,c=!1;if(s.Dst!==l.Dst&&n.checkForIntersect(r,e),ve.vertEq(s.Org,r.event)&&(r.mesh.splice(i.Oprev,s),e=n.topLeftRegion(r,e),i=n.regionBelow(e).eUp,n.finishLeftRegions(r,n.regionBelow(e),a),c=!0),ve.vertEq(l.Org,r.event)&&(r.mesh.splice(t,l.Oprev),t=n.finishLeftRegions(r,a,null),c=!0),c){n.addRightEdges(r,e,t.Onext,i,i,!0);return}ve.vertLeq(l.Org,s.Org)?o=l.Oprev:o=s,o=r.mesh.connect(t.Lprev,o),n.addRightEdges(r,e,o,o.Onext,o.Onext,!1),o.Sym.activeRegion.fixUpperEdge=!0,n.walkDirtyRegions(r,e)},n.connectLeftDegenerate=function(r,e,t){var o,i,a,s,l;if(o=e.eUp,ve.vertEq(o.Org,t)){we(!1),n.spliceMergeVertices(r,o,t.anEdge);return}if(!ve.vertEq(o.Dst,t)){r.mesh.splitEdge(o.Sym),e.fixUpperEdge&&(r.mesh.delete(o.Onext),e.fixUpperEdge=!1),r.mesh.splice(t.anEdge,o),n.sweepEvent(r,t);return}we(!1),e=n.topRightRegion(e),l=n.regionBelow(e),a=l.eUp.Sym,i=s=a.Onext,l.fixUpperEdge&&(we(i!==a),n.deleteRegion(r,l),r.mesh.delete(a),a=i.Oprev),r.mesh.splice(t.anEdge,a),ve.edgeGoesLeft(i)||(i=null),n.addRightEdges(r,e,a.Onext,s,i,!0)},n.connectLeftVertex=function(r,e){var t,o,i,a,s,l,c=new Hp;if(c.eUp=e.anEdge.Sym,t=r.dict.search(c).key,o=n.regionBelow(t),!!o){if(a=t.eUp,s=o.eUp,ve.edgeSign(a.Dst,e,a.Org)===0){n.connectLeftDegenerate(r,t,e);return}if(i=ve.vertLeq(s.Dst,a.Dst)?t:o,t.inside||i.fixUpperEdge){if(i===t)l=r.mesh.connect(e.anEdge.Sym,a.Lnext);else{var u=r.mesh.connect(s.Dnext,e.anEdge);l=u.Sym}i.fixUpperEdge?n.fixUpperEdge(r,i,l):n.computeWinding(r,n.addRegionBelow(r,t,l)),n.sweepEvent(r,e)}else n.addRightEdges(r,t,e.anEdge,e.anEdge,null,!0)}},n.sweepEvent=function(r,e){r.event=e,n.debugEvent(r);for(var t=e.anEdge;t.activeRegion===null;)if(t=t.Onext,t===e.anEdge){n.connectLeftVertex(r,e);return}var o=n.topLeftRegion(r,t.activeRegion);we(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 Hp,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 sI(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||(we(e.fixUpperEdge),we(++t===1)),we(e.windingNumber===0),n.deleteRegion(r,e)},n.removeDegenerateEdges=function(r){var e,t,o,i=r.mesh.eHead;for(e=i.next;e!==i;e=t)t=e.next,o=e.Lnext,ve.vertEq(e.Org,e.Dst)&&e.Lnext.Lnext!==e&&(n.spliceMergeVertices(r,o,e),r.mesh.delete(e),e=o,o=e.Lnext),o.Lnext===e&&(o!==e&&((o===t||o===t.Sym)&&(t=t.next),r.mesh.delete(o)),(e===t||e===t.Sym)&&(t=t.next),r.mesh.delete(e))},n.initPriorityQ=function(r){var e,t,o,i=0;for(o=r.mesh.vHead,t=o.next;t!==o;t=t.next)i++;for(i+=8,e=r.pq=new aI(i,ve.vertLeq),o=r.mesh.vHead,t=o.next;t!==o;t=t.next)t.pqHandle=e.insert(t);return t!==o?!1:(e.init(),!0)},n.donePriorityQ=function(r){r.pq=null},n.removeDegenerateFaces=function(r,e){var t,o,i;for(t=e.fHead.next;t!==e.fHead;t=o)o=t.next,i=t.anEdge,we(i.Lnext!==i),i.Lnext.Lnext===i&&(n.addWinding(i.Onext,i),r.mesh.delete(i));return!0},n.computeInterior=function(r,e){e===void 0&&(e=!0);var t,o;if(n.removeDegenerateEdges(r),!n.initPriorityQ(r))return!1;for(n.initEdgeDict(r);(t=r.pq.extractMin())!==null;){for(;o=r.pq.min(),!(o===null||!ve.vertEq(o,t));)o=r.pq.extractMin(),n.spliceMergeVertices(r,t.anEdge,o.anEdge);n.sweepEvent(r,t)}return r.event=r.dict.min().key.eUp.Org,n.debugEvent(r),n.doneEdgeDict(r),n.donePriorityQ(r),n.removeDegenerateFaces(r,r.mesh)?(e&&r.mesh.check(),!0):!1},n}(),cI=function(){function n(){this.mesh=new s0,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=ze.ODD,this.dict=null,this.pq=null,this.event=null,this.vertexIndexCounter=0,this.vertices=[],this.vertexIndices=[],this.vertexCount=0,this.elements=[],this.elementCount=0}return n.prototype.dot_=function(r,e){return r[0]*e[0]+r[1]*e[1]+r[2]*e[2]},n.prototype.normalize_=function(r){var e=r[0]*r[0]+r[1]*r[1]+r[2]*r[2];if(!e)throw"Zero-size vector!";e=Math.sqrt(e),r[0]/=e,r[1]/=e,r[2]/=e},n.prototype.longAxis_=function(r){var e=0;return Math.abs(r[1])>Math.abs(r[0])&&(e=1),Math.abs(r[2])>Math.abs(r[e])&&(e=2),e},n.prototype.computeNormal_=function(r){var e,t,o,i,a,s,l=[0,0,0],c=[0,0,0],u=[0,0,0],p=[0,0,0],d=[0,0,0],h=[null,null,null],f=[null,null,null],m=this.mesh.vHead;e=m.next;for(var y=0;y<3;++y)i=e.coords[y],c[y]=i,f[y]=e,l[y]=i,h[y]=e;for(e=m.next;e!==m;e=e.next)for(var g=0;g<3;++g)i=e.coords[g],i<c[g]&&(c[g]=i,f[g]=e),i>l[g]&&(l[g]=i,h[g]=e);var v=0;if(l[1]-c[1]>l[0]-c[0]&&(v=1),l[2]-c[2]>l[v]-c[v]&&(v=2),c[v]>=l[v]){r[0]=0,r[1]=0,r[2]=1;return}for(s=0,t=f[v],o=h[v],u[0]=t.coords[0]-o.coords[0],u[1]=t.coords[1]-o.coords[1],u[2]=t.coords[2]-o.coords[2],e=m.next;e!==m;e=e.next)p[0]=e.coords[0]-o.coords[0],p[1]=e.coords[1]-o.coords[1],p[2]=e.coords[2]-o.coords[2],d[0]=u[1]*p[2]-u[2]*p[1],d[1]=u[2]*p[0]-u[0]*p[2],d[2]=u[0]*p[1]-u[1]*p[0],a=d[0]*d[0]+d[1]*d[1]+d[2]*d[2],a>s&&(s=a,r[0]=d[0],r[1]=d[1],r[2]=d[2]);s<=0&&(r[0]=r[1]=r[2]=0,r[this.longAxis_(u)]=1)},n.prototype.checkOrientation_=function(){for(var r=this.mesh.fHead,e,t=this.mesh.vHead,o,i=0,a=r.next;a!==r;a=a.next)if(o=a.anEdge,!(o.winding<=0))do i+=(o.Org.s-o.Dst.s)*(o.Org.t+o.Dst.t),o=o.Lnext;while(o!==a.anEdge);if(i<0){for(e=t.next;e!==t;e=e.next)e.t=-e.t;this.tUnit[0]=-this.tUnit[0],this.tUnit[1]=-this.tUnit[1],this.tUnit[2]=-this.tUnit[2]}},n.prototype.projectPolygon_=function(){var r=this.mesh.vHead,e=[0,0,0],t,o,i=!1;e[0]=this.normal[0],e[1]=this.normal[1],e[2]=this.normal[2],!e[0]&&!e[1]&&!e[2]&&(this.computeNormal_(e),i=!0),t=this.sUnit,o=this.tUnit;var a=this.longAxis_(e);t[a]=0,t[(a+1)%3]=1,t[(a+2)%3]=0,o[a]=0,o[(a+1)%3]=0,o[(a+2)%3]=e[a]>0?1:-1;for(var s=r.next;s!==r;s=s.next)s.s=this.dot_(s.coords,t),s.t=this.dot_(s.coords,o);i&&this.checkOrientation_();for(var l=!0,c=r.next;c!==r;c=c.next)l?(this.bmin[0]=this.bmax[0]=c.s,this.bmin[1]=this.bmax[1]=c.t,l=!1):(c.s<this.bmin[0]&&(this.bmin[0]=c.s),c.s>this.bmax[0]&&(this.bmax[0]=c.s),c.t<this.bmin[1]&&(this.bmin[1]=c.t),c.t>this.bmax[1]&&(this.bmax[1]=c.t))},n.prototype.addWinding_=function(r,e){r.winding+=e.winding,r.Sym.winding+=e.Sym.winding},n.prototype.tessellateMonoRegion_=function(r,e){var t,o;if(t=e.anEdge,!(t.Lnext!==t&&t.Lnext.Lnext!==t))throw"Mono region invalid";for(;ve.vertLeq(t.Dst,t.Org);t=t.Lprev);for(;ve.vertLeq(t.Org,t.Dst);t=t.Lnext);o=t.Lprev;for(var i=void 0;t.Lnext!==o;)if(ve.vertLeq(t.Dst,o.Org)){for(;o.Lnext!==t&&(ve.edgeGoesLeft(o.Lnext)||ve.edgeSign(o.Org,o.Dst,o.Lnext.Dst)<=0);)i=r.connect(o.Lnext,o),o=i.Sym;o=o.Lprev}else{for(;o.Lnext!==t&&(ve.edgeGoesRight(t.Lprev)||ve.edgeSign(t.Dst,t.Org,t.Lprev.Org)>=0);)i=r.connect(t,t.Lprev),t=i.Sym;t=t.Lnext}if(o.Lnext===t)throw"Mono region invalid";for(;o.Lnext.Lnext!==t;)i=r.connect(o.Lnext,o),o=i.Sym;return!0},n.prototype.tessellateInterior_=function(r){for(var e,t=r.fHead.next;t!==r.fHead;t=e)if(e=t.next,t.inside&&!this.tessellateMonoRegion_(r,t))return!1;return!0},n.prototype.discardExterior_=function(r){for(var e,t=r.fHead.next;t!==r.fHead;t=e)e=t.next,t.inside||r.zapFace(t)},n.prototype.setWindingNumber_=function(r,e,t){for(var o,i=r.eHead.next;i!==r.eHead;i=o)o=i.next,i.Rface.inside!==i.Lface.inside?i.winding=i.Lface.inside?e:-e:t?r.delete(i):i.winding=0},n.prototype.getNeighbourFace_=function(r){return!r.Rface||!r.Rface.inside?-1:r.Rface.n},n.prototype.outputPolymesh_=function(r,e,t,o){var i,a=0,s=0,l;t>3&&r.mergeConvexFaces(t);for(var c=r.vHead.next;c!==r.vHead;c=c.next)c.n=-1;for(var u=r.fHead.next;u!==r.fHead;u=u.next)if(u.n=-1,!!u.inside){i=u.anEdge,l=0;do{var c=i.Org;c.n===-1&&(c.n=s,s++),l++,i=i.Lnext}while(i!==u.anEdge);if(l>t)throw"Face vertex greater that support polygon";u.n=a,++a}this.elementCount=a,e===at.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===at.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 s0),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=ze.ODD),e===void 0&&(e=at.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_(),lI.computeInterior(this,a);var s=this.mesh;return e===at.BOUNDARY_CONTOURS?this.setWindingNumber_(s,1,!0):this.tessellateInterior_(s),a&&s.check(),e===at.BOUNDARY_CONTOURS?this.outputContours_(s,o):this.outputPolymesh_(s,e,t,o),!0},n}();function Gr(n){var r=n.windingRule,e=r===void 0?ze.ODD:r,t=n.elementType,o=t===void 0?at.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 cI;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 Xq=ze.ODD,Kq=ze.NONZERO,Qq=ze.POSITIVE,Zq=ze.NEGATIVE,Jq=ze.ABS_GEQ_TWO,e6=at.POLYGONS,t6=at.CONNECTED_POLYGONS,r6=at.BOUNDARY_CONTOURS;import{Box2 as hI,BufferAttribute as iu,BufferGeometry as mI,Vector2 as yI}from"three";var ou=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*ou.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*ou.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)}},Fs=ou;Fs.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var h0=bi(f0()),Us={vertices:[160,160,-160,160,-160,-160,160,-160],vertexIndices:[1,0,3,2],vertexCount:4,elements:[0,4],elementCount:1,mesh:void 0},Xp={vertices:[],vertexIndices:[],vertexCount:0,elements:[],elementCount:0,mesh:void 0},Kp={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},Yp=(n,r)=>([e,t])=>(t<e&&(t+=r),(n>=e?n:n+r)<=t),hn=class extends mI{constructor(e,t,o=0,i=12,a=3,s=ze.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(I=>{let D=I.extractShapePointsToFlatArray([],i),_=[];for(let B=D.length-1;B>=1;B-=2){let V=D[B-1],U=D[B-0];_.push(V,U)}return _}),p=[],d=[];for(let I=0;I<c.length;I+=2)d.push([c[I],c[I+1]]);p.push(d);for(let I=0;I<u.length;I++){let D=u[I],_=[];for(let B=0;B<D.length;B+=2)_.push([D[B],D[B+1]]);p.push(_)}let h;e.isText?h=new hI().setFromPoints(e.points.map(D=>D.position)).getSize(new yI).length()*.1:p[0].length===0?h=o:h=(0,h0.default)(p).distance,o<=0?(this._bevel=0,this._bevelSegments=0):(this._bevel=Math.min(o,h,t/2),this._bevelSegments=Math.floor(a));let f;try{f=Gr({windingRule:s,elementType:at.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[c]})}catch{f=Us}let m;try{m=Gr({windingRule:ze.ODD,elementType:at.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...u]})}catch{m=Xp}if(!f)throw new Error("error generating geometry");let y=f.elementCount;if(m){f.elementCount+=m.elementCount;for(let I=0;I<m.elements.length;I++){let D=m.elements[I],_=I%2===0?f.vertexCount:0;f.elements.push(D+_)}for(let I=0;I<m.vertexIndices.length;I++){let D=m.vertexIndices[I],_=f.vertexCount;f.vertexIndices.push(D+_)}for(let I=0;I<m.vertices.length;I++){let D=m.vertices[I];f.vertices.push(D)}}let g=1/0,v=-1/0,P=1/0,O=-1/0;for(let I=0,D=f.vertexCount;I<D;I++){let _=I*2,B=f.vertices[_+0],V=f.vertices[_+1];B<g&&(g=B),B>v&&(v=B),V<P&&(P=V),V>O&&(O=V)}this._minX=g,this._minY=P,this._width=v-g,this._height=O-P,this._buffer=new Fs(this._computeBufferEstimatedSize(f));let S=[],C=[];for(let I=f.elementCount-1;I>=0;I--){let D=I>=y,_=I*2,B=f.elements[_+0],V=f.elements[_+1],U=B+V,R={start:B,count:V,normals:[],continuous:[],concave:[]},W=B,j=U-1,F=B+1,H=this._shape.roundedCurves.length;do{let te=W-B,K=f.vertices[j*2+0],Z=f.vertices[j*2+1],Q=f.vertices[W*2+0],$=f.vertices[W*2+1],ue=f.vertices[F*2+0],le=f.vertices[F*2+1],ne=Q-K,ce=$-Z,ae=Math.sqrt(ne*ne+ce*ce);ne/=ae,ce/=ae;let me=Q-ue,pe=$-le,he=Math.sqrt(me*me+pe*pe);me/=he,pe/=he,R.normals[te*2+0]=-pe,R.normals[te*2+1]=me,R.concave[te]=ne*pe-ce*me>0;let xe=f.vertexIndices[W];if(Array.isArray(xe))R.continuous[te]=!1;else{let[ye,T]=this._shape.getCurveIndexFromVertexId(xe-1,!0);if(T>0&&T<1)R.continuous[te]=!0;else{let ie=T===1?ye+1:ye-1;ie=(ie+H)%H;let De=T===1?0:1,Ve=this._shape.roundedCurves[ye].getTangent(T),_e=this._shape.roundedCurves[ie].getTangent(De);R.continuous[te]=Ve.dot(_e)>.95}}D&&(R.normals[te*2+0]*=-1,R.normals[te*2+1]*=-1),[j,W,F]=[W,F,F+1],F>=U&&(F-=V)}while(F!==B+1);let q=[];q.push({bevelI:0,angle:0,size:0,boundary:{vertices:f.vertices.slice(B*2,U*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,U*2)});let re=0;for(let te=1;te<=this._bevelSegments;te++){let K=te/this._bevelSegments*Math.PI/2,Z=(1-Math.cos(K))*this._bevel,Q=[],$=[],ue=[],le=[],ne=0;for(let ae=0;ae<V;ae++){let me=ae*2,pe=(ae-1+V)%V*2,he=f.vertices[R.start*2+me+0],xe=f.vertices[R.start*2+me+1],ye=-R.normals[pe+0]*Z,T=-R.normals[pe+1]*Z,ie=-R.normals[me+0]*Z,De=-R.normals[me+1]*Z;if(R.concave[ae]||!R.concave[ae]&&D){let Ve=Math.atan2(T,ye),_e=Math.atan2(De,ie);_e>Ve&&(_e-=Math.PI*2);let Pe=_e-Ve;if(R.continuous[ae]||D){let vt=Ve+Pe/2,Me=Math.cos(vt)*Z,gt=Math.sin(vt)*Z;Q[2*ne+0]=he+Me*(D?-1:1),Q[2*ne+1]=xe+gt*(D?-1:1),le[ne]=ae,ne++}else{let vt=Math.max(1,Math.floor(i/4*Math.abs(Pe)/Math.PI));for(let Me=0;Me<=vt;Me++){let gt=Ve+Pe*(Me/vt),St=Math.cos(gt)*Z,Dn=Math.sin(gt)*Z;Q[2*ne+0]=he+St,Q[2*ne+1]=xe+Dn,le[ne]=ae,ne++}}}else Q[2*ne+0]=he+ye,Q[2*ne+1]=xe+T,le[ne]=ae,$[ae]=ne,ne++,Q[2*ne+0]=he,Q[2*ne+1]=xe,le[ne]=ae,ne++,Q[2*ne+0]=he+ie,Q[2*ne+1]=xe+De,le[ne]=ae,ue[ae]=ne,ne++}let ce=Gr({windingRule:ze.POSITIVE,elementType:at.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[Q],edgeCreateCallback:ae=>{let pe=ae.Org.idx,he=le[pe],xe=le[(pe+1)%le.length];ae.idx=[he,xe],ae.Sym.idx=[xe,he]},vertexIdCallback:ae=>{let me=ae.Lprev.idx;return[me?me[1]:0,ae.idx?ae.idx[0]:0]}});if(!ce)throw console.log("Error"),new Error(`error generating bevel geometry for ${te}'th loop`);if(!ce.vertexCount){let ae=(te-1)/this._bevelSegments*Math.PI/2;re=(1-Math.sin(ae))*this._bevel;break}for(let ae=0;ae<ce.vertexIndices.length;ae++){let[me,pe]=ce.vertexIndices[ae];if(me===pe)continue;let he=pe;pe<me&&(he+=V);for(let xe=me;xe<he;xe++){let ye=xe%V,T=(xe+1)%V;if(!R.continuous[ye]||!R.continuous[T]){ce.vertexIndices[ae]=[me,ye],ce.vertexIndices.splice(ae+1,0,[T,pe]),ce.vertices.splice((ae+1)*2,0,ce.vertices[ae*2],ce.vertices[ae*2+1]);break}}}q.push({bevelI:te,angle:K,size:Z,boundary:ce,reverseMap:le,insetPoints:Q})}let ee=(te,K,Z)=>{let Q=0,$=te.boundary.vertexIndices.length;for(;Q<$&&Z(te.boundary.vertexIndices[K]);)K=(K+1)%$,Q++;return Q},X=S.length;for(let te=1;te<q.length;te++){let K=q[te-1],Z=q[te],Q=K.boundary.vertexIndices.length,$=Z.boundary.vertexIndices.length;if(!Q||!$)break;let ue=R.concave.length,le=0,ne=Yp(le,V);for(;!K.boundary.vertexIndices.filter(ne).length||!Z.boundary.vertexIndices.filter(ne).length;)le++,ne=Yp(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 me=le,pe=0,he=this._buildBevelVert(R,K,(ce-1+Q)%Q,void 0,pe),xe=this._buildBevelVert(R,Z,(ae-1+$)%$,void 0,pe),ye=he,T=xe,ie,De,Ve=!1;do{pe=(le||ue)/ue,ne=Yp(le,V);let _e=ee(K,ce,ne),Pe=ee(Z,ae,ne),vt=Ve;if(Ve=!1,_e&&!Pe){for(let Me=0;Me<_e;Me++)ie=this._buildBevelVert(R,K,(ce+Me)%Q,Me/(_e-1),pe),S.push(ye.topN,ie.topP,T.topN),l===!1&&S.push(ie.bottomP,ye.bottomN,T.bottomN),ye=ie;Ve=!0}else if(!_e&&Pe)for(let Me=0;Me<Pe;Me++)De=this._buildBevelVert(R,Z,(ae+Me)%$,Me/(Pe-1),pe),S.push(T.topN,ye.topP,De.topP),l===!1&&S.push(ye.bottomP,T.bottomN,De.bottomP),T=De;else if(_e&&Pe)if(ie=this._buildBevelVert(R,K,ce,0,pe),De=this._buildBevelVert(R,Z,ae,0,pe),vt?(S.push(ye.topN,De.topP,T.topN),S.push(ye.topN,ie.topP,De.topP),l===!1&&(S.push(De.bottomP,ye.bottomN,T.bottomN),S.push(De.bottomP,ie.bottomP,ye.bottomN))):(S.push(T.topN,ye.topN,ie.topP),S.push(T.topN,ie.topP,De.topP),l===!1&&(S.push(ie.bottomP,ye.bottomN,T.bottomN),S.push(ie.bottomP,T.bottomN,De.bottomP))),ye=ie,T=De,_e===Pe)for(let Me=1;Me<_e;Me++)ie=this._buildBevelVert(R,K,(ce+Me)%Q,Me/(_e-1),pe),De=this._buildBevelVert(R,Z,(ae+Me)%$,Me/(Pe-1),pe),S.push(ye.topN,ie.topP,T.topN),S.push(T.topN,ie.topP,De.topP),l===!1&&(S.push(ie.bottomP,ye.bottomN,T.bottomN),S.push(ie.bottomP,T.bottomN,De.bottomP)),ye=ie,T=De;else if(_e>Pe){let Me=_e/Pe,gt=0;for(let St=1;St<_e;St++)ie=this._buildBevelVert(R,K,(ce+St)%Q,St/(_e-1),pe),S.push(ye.topN,ie.topP,T.topN),l===!1&&S.push(ie.bottomP,ye.bottomN,T.bottomN),ye=ie,St>(gt+1)*Me&&(gt++,De=this._buildBevelVert(R,Z,(ae+gt)%$,gt/(Pe-1),pe),S.push(T.topN,ie.topP,De.topP),l===!1&&S.push(ie.bottomP,T.bottomN,De.bottomP),T=De)}else{let Me=Pe/_e,gt=0;for(let St=1;St<Pe;St++)De=this._buildBevelVert(R,Z,(ae+St)%$,St/(Pe-1),pe),S.push(T.topN,ie.topP,De.topP),l===!1&&S.push(ie.bottomP,T.bottomN,De.bottomP),T=De,St>(gt+1)*Me&&(gt++,ie=this._buildBevelVert(R,K,(ce+gt)%Q,gt/(_e-1),pe),S.push(ye.topN,ie.topP,T.topN),l===!1&&S.push(ie.bottomP,ye.bottomN,T.bottomN),ye=ie)}ce=(ce+_e)%Q,ae=(ae+Pe)%$,le=(le+1)%ue}while(le!==me)}if(l===!1&&this._depth>this._bevel*2&&this._buildWall(q,R,S),D){let te=[];for(let K=S.length-1;K>=X+2;K-=3){let Z=S[K-2],Q=S[K-1],$=S[K-0];te.push($,Q,Z)}S.splice(X,S.length-X,...te)}if(D){let te=[];for(let K=q[q.length-1].boundary.vertices.length-1;K>=1;K-=2){let Z=q[q.length-1].boundary.vertices[K-1],Q=q[q.length-1].boundary.vertices[K-0];te.push(Z,Q)}C.push(te)}if(!D){let te=q[q.length-1],K;try{K=Gr({windingRule:q.length>1?ze.POSITIVE:ze.ODD,elementType:at.POLYGONS,vertexSize:2,strict:!0,contours:[te.insetPoints,...C]})}catch{K=Kp}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 A=new iu(Uint32Array.from(S),1),x=new iu(this._buffer.positions,3),E=new iu(this._buffer.normals,3),N=new iu(this._buffer.uvs,2);x.needsUpdate=!0,E.needsUpdate=!0,N.needsUpdate=!0,A.needsUpdate=!0,this.setAttribute("position",x),this.setAttribute("normal",E),this.setAttribute("uv",N),this.setIndex(A)}_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,P=t.boundary.vertices[y+0],O=t.boundary.vertices[y+1],S=(1-m)*this._bevel,C=(P-this._minX)/this._width,A=(O-this._minY)/this._height;this.forPathBevel&&(a!==void 0&&(C=a),A=1);let x=e.normals[g+0],E=e.normals[g+1],N=e.normals[v+0],I=e.normals[v+1];if(h){let U=N-x,R=I-E;x=x+U*(1-i),E=E+R*(1-i);let W=Math.sqrt(x*x+E*E);x/=W,E/=W}let D=this.forPathBevel?this._buffer.get(d?1:2):this._buffer.get(d?2:4),_=D*3,B=D*2,V={i:o,fi:u,topP:D+0,topN:D+0,bottomP:D+1,bottomN:D+1,pathBevelUCoord:a};return this._buffer.positions[_+0]=P,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]=E*f,this._buffer.normals[_+2]=m,this._buffer.uvs[B+0]=C,this._buffer.uvs[B+1]=A,this.forPathBevel===!1&&(this._buffer.positions[_+3]=P,this._buffer.positions[_+4]=O,this._buffer.positions[_+5]=S,this._buffer.normals[_+3]=x*f,this._buffer.normals[_+4]=E*f,this._buffer.normals[_+5]=-m,this._buffer.uvs[B+2]=A,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]=P,this._buffer.positions[_+1]=O,this._buffer.positions[_+2]=(this.forPathBevel?this._bevel:this._depth)-S,this._buffer.normals[_+0]=N*f,this._buffer.normals[_+1]=I*f,this._buffer.normals[_+2]=m,this._buffer.uvs[B+0]=C,this._buffer.uvs[B+1]=A,this.forPathBevel===!1&&(this._buffer.positions[_+3]=P,this._buffer.positions[_+4]=O,this._buffer.positions[_+5]=S,this._buffer.normals[_+3]=N*f,this._buffer.normals[_+4]=I*f,this._buffer.normals[_+5]=-m,this._buffer.uvs[B+2]=A,this._buffer.uvs[B+3]=C)),this.vertexCache[s]=V,V}clone(){let e=new hn(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=wo(this.userData),e}};var ga=class extends gI{constructor(e,t=12,o={}){super();this.type="ShapeGeometry";this.windingRule=ze.ODD;this.elementType=at.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=t,this._triangulationOptions=Object.assign({windingRule:ze.ODD,elementType:at.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=Gr({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=Us}let d=s?.vertexCount??1,h=s?.elementCount??1;if(this._positionAttribute=new au(new Float32Array(d*3),3),this._normalAttribute=new au(new Float32Array(d*3),3),this._uvAttribute=new au(new Float32Array(d*2),2),this._indexAttribute=new au(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,A=s.vertices[C+0],x=s.vertices[C+1];A<f&&(f=A),A>m&&(m=A),x<y&&(y=x),x>g&&(g=x)}let v=m-f,P=g-y;for(let O=0,S=d;O<S;O++){let C=O*2,A=s.vertices[C+0],x=s.vertices[C+1],E=(A-f)/v,N=(x-y)/P;this._positionAttribute.setXYZ(O,A,x,0),this._normalAttribute.setXYZ(O,0,0,1),this._uvAttribute.setXY(O,E,N)}for(let O=0,S=h;O<S;O++){let C=O*3,A=s.elements[C+0],x=s.elements[C+1],E=s.elements[C+2];this._indexAttribute.setX(C+0,A),this._indexAttribute.setX(C+1,x),this._indexAttribute.setX(C+2,E)}}this.setAttribute("position",this._positionAttribute),this.setAttribute("normal",this._normalAttribute),this.setAttribute("uv",this._uvAttribute),this.setIndex(this._indexAttribute),this.setDrawRange(0,(s?.elementCount??1)*3)}clone(){let e=new ga(this._shape,this._curveSegments);return e.userData=wo(this.userData),e}};var xa=class extends hn{constructor(e,t,o=0,i=12,a=3,s=ze.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 xa(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=wo(this.userData),e}};var Jt=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:ze.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 Fe?(a.width!==t||a.height!==o)&&a.applySize(t,o):a=new Fe(t,o).fromJSON(a),n.parameters?.roundness!==void 0&&n.parameters?.roundness>0&&a.update());let l=a??new Fe(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 xa(n.shape,r,e,o,t,a),Object.assign(s,{userData:{...n,type:"VectorGeometry"}})}};import{BufferGeometry as xI,Float32BufferAttribute as bI,MathUtils as Qp,Vector2 as y0}from"three";var g0=Math.PI*2,va=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=Qp.clamp(e.angle,0,360),{shape:n.shape&&n.shape instanceof Fe?n.shape:new Fe,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 h;return o===0?(h=new xI,h.setAttribute("position",new bI([],3))):h=Jt.create({shape:c,parameters:{subdivisions:d,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}}),Object.assign(h,{userData:{...n,type:"EllipseGeometry"}})}};function vI(n,r,e,t,o,i){if(t>=g0)return o>30||o%4===0?(wI(n,r,e,i),Math.round(o/4)):m0(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=a0({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?SI(n,a.x,a.y,c,o,r,e,i):m0(n,t,o,r,e,i)}function SI(n,r,e,t,o,i,a,s){let l=Math.round(o/t.length);n.addPoint(ba(r,e));for(let c=0,u=t.length;c<u;c++){let p=t[c],d=n.points[c],h=ba(p.x,p.y);d.controls[1].position.set(p.x1,p.y1),h.controls[0].position.set(p.x2,p.y2),n.addPoint(h)}return s>0?x0(n,i,a,s):n.addPoint(ba(0,0)),l}function m0(n,r,e,t,o,i){let a=-r/e;for(let s=0;s<=e;s++){let l=a*s,c=Math.sin(l)*t,u=Math.cos(l)*o;n.addPoint(ba(c,u))}return r<g0?i>0?x0(n,t,o,i):n.addPoint(ba(0,0)):(n.removePoint(n.points[n.points.length-1]),i>0&&b0(n,t,o,i)),1}function wI(n,r,e,t=0,o=0,i=0){let a=.5522847498,s=r*a,l=e*a;n.addPoint(su(o-r,i,o-r,i-l,o-r,i+l)),n.addPoint(su(o,i+e,o-s,i+e,o+s,i+e)),n.addPoint(su(o+r,i,o+r,i+l,o+r,i-l)),n.addPoint(su(o,i-e,o+s,i-e,o-s,i-e)),t>0&&b0(n,r,e,t)}function ba(n,r){return new Vr(Qp.generateUUID(),new y0(n,r))}function su(n,r,e,t,o,i){let a=ba(n,r);return a.controls[0].position.set(e,t),a.controls[1].position.set(o,i),a}function x0(n,r,e,t){v0(n,r,e,t).forEach(i=>n.addPoint(i))}function b0(n,r,e,t){let o=v0(n,r,e,t),i=new Fe;o.forEach(a=>i.addPoint(a)),i.isClosed=!0,n.shapeHoles.push(i)}function v0(n,r,e,t){let o=t*r/100,i=o*(Math.abs(e)/Math.abs(r)),a=new y0(o/r,i/e),s=n.points.map(l=>{let c=l.clone();return c.uuid=Qp.generateUUID(),c}).reverse();return s.forEach(l=>{l.position.multiply(a);let c=l.controls[0].position.clone().multiply(a),u=l.controls[1].position.clone().multiply(a);l.controls[0].position.copy(u),l.controls[1].position.copy(c)}),s}import{BufferGeometry as PI,Float32BufferAttribute as Zp,Uint32BufferAttribute as OI,Vector3 as S0}from"three";var w0=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 ks(!1,r,e,t,o,i,a,s,l,c,u,p);return Object.assign(d,{userData:{...n,type:"HelixGeometry"}})}},Jp=new OI([0,0,0],1),ks=class extends PI{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 S0,m=new S0,y=f(),g=f(),v=f(),P,O,S,C,A,x,E,N,I=f(),D=f(),_=f(),B=f(),V=f(),U=f(),R=f(),W=f(),j=t-2*l+.001,F=j/a,H=Math.ceil(s*a),q=H+1,re=j/H,ee=-j/2,X=u+1,te=2*Math.PI/u,K=Math.PI/2/d,Z=.01,Q=Math.min((1-p/100)*l,l-Z),$=l-Q,ue=0,le=2,ne=d*le+le,ce=X*ne/le,ae=ce+X*q,me=Math.max(0,X*(q+ne)),[pe,he,xe]=[3,3,2].map(ot=>Array(me*ot).fill(0)),ye=[],T=i-l;function ie(ot,Xe){let Ar=Math.PI/2;x=Xe*re,N=2*Math.PI*(x%F)/F+Ar,x+=ee,E=Math.sin(N)*T,A=Math.cos(N)*T,r?ot.set(A,E,x):ot.set(A,x,E)}ie(m,-1e-10),ie(y,0),I.copy(m),ie(m,1);let De=m.distanceTo(y),Ve=h?0:$+Q,_e=De*H+2*Ve,Pe=Q,vt=_e-Ve;for(let ot=0;ot<=H;ot++){ie(g,ot),W.subVectors(g,I).normalize(),I.copy(g),U.copy(g).setComponent(+r+1,0).normalize(),R.crossVectors(W,U).normalize();let Xe=ot===0,Ar=ot===H,bd=Xe?3*Math.PI/2:K,vd=Xe?Pe:vt,wl=Xe?X:ae,_n=Xe?0:me-X,ct=W.clone().multiplyScalar(Xe?-$:$).add(g),Sd=W.clone().multiplyScalar(Xe?-1:1).normalize();for(let hr=0;hr<X;hr++){let ms=hr*te;if(D.addVectors(m.copy(U).multiplyScalar(l*Math.cos(ms)),y.copy(R).multiplyScalar(l*Math.sin(ms))),_.copy(D).normalize(),Xe||Ar){h||(ue=_n+hr,[0,1,2].forEach(kt=>{pe[ue*3+kt]=ct.getComponent(kt),he[ue*3+kt]=Sd.getComponent(kt)}),xe[ue*2]=+Ar,xe[ue*2+1]=hr/u),y.copy(_).multiplyScalar(Q),v.addVectors(g,y);for(let kt=0;kt<d;kt++){let Bn=kt*K+bd;B.addVectors(m.copy(W).multiplyScalar($*Math.sin(Bn)),y.copy(_).multiplyScalar($*Math.cos(Bn))),V.copy(B).normalize(),y.addVectors(v,B),B.normalize(),ue=wl+kt*X+hr,[0,1,2].forEach(mi=>{pe[ue*3+mi]=y.getComponent(mi),he[ue*3+mi]=V.getComponent(mi)});let Pl=+Xe+Math.sin(Bn);xe[ue*2]=(vd+$*Pl)/_e,xe[ue*2+1]=hr/u}}y.addVectors(g,D),ue=ce+ot*X+hr,[0,1,2].forEach(kt=>{pe[ue*3+kt]=y.getComponent(kt),he[ue*3+kt]=_.getComponent(kt)}),xe[ue*2]=(Ve+ot*De)/_e,xe[ue*2+1]=hr/u}}let Me=q+2*d+le,gt=1,[St,Dn]=[+h,Me-1];for(let ot=St;ot<=Dn-1;ot++){let Xe=h&&ot===Dn-1;for(let Ar=0;Ar<X-1;Ar++)P=ot*X+Ar,O=P+1,S=(Xe?Ar:P)+X,C=(Xe?Ar+1:O)+X,ot===0?ye.push(O,C,S):ot===Me-2?ye.push(P,O,S):ye.push(P,O,S,O,C,S)}this.setIndex(ye),this.setAttribute("position",new Zp(pe,3)),this.setAttribute("normal",new Zp(he,3)),this.setAttribute("uv",new Zp(xe,2))}getClosedTorusIndicesForBooleanOrSubdiv(){let r=this.userData.parameters,e=Math.ceil(r.tubularSegments),t=r.radialSegments+1,o=Array.from(this.getIndex().array),i,a,s,l,c=6*(e-1)*r.radialSegments,u=e,p=u===e;for(let d=0;d<r.radialSegments;d++)i=u*t+d,a=i+1,s=(p?d:i)+t,l=(p?d+1:a)+t,o[c++]=i,o[c++]=a,o[c++]=s,o[c++]=a,o[c++]=l,o[c++]=s;return o.length=c,Jp.array=o,Jp.count=o.length,Jp}};import{IcosahedronGeometry as CI}from"three";var P0=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 Hs(r*.5,i,a):new CI(r*.5,o);return s.scale(1,e/r,t/r),Object.assign(s,{userData:{...n,type:"IcosahedronGeometry"}})}},Hs=class extends dn{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 Hs(r.radius,r.corner,r.cornerSides)}};import{LatheGeometry as TI,Shape as AI}from"three";var O0=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 AI;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 TI(o.extractPoints(t).shape,e);return i.rotateZ(Math.PI),Object.assign(i,{userData:{...n,type:"LatheGeometry"}})}};import{BufferGeometry as D0,BufferGeometryLoader as zI,Vector3 as jI,BoxGeometry as _0}from"three";import{BufferGeometry as LI,Vector2 as of,Vector3 as E0}from"three";import{Box3 as MI,BufferAttribute as Ws,BufferGeometry as C0,Color as rf,EventDispatcher as II,Float32BufferAttribute as Sa,Matrix3 as T0,Matrix4 as N0,MathUtils as NI,Object3D as EI,Sphere as DI,Vector2 as ur,Vector3 as Gt,Vector4 as _I}from"three";var no=new N0,ef=new EI,lu=new Gt,mn=class extends II{constructor(){super(),this.uuid=NI.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 T0().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 no.makeRotationX(r),this.applyMatrix4(no),this}rotateY(r){return no.makeRotationY(r),this.applyMatrix4(no),this}rotateZ(r){return no.makeRotationZ(r),this.applyMatrix4(no),this}translate(r,e,t){return no.makeTranslation(r,e,t),this.applyMatrix4(no),this}scale(r,e,t){return no.makeScale(r,e,t),this.applyMatrix4(no),this}lookAt(r){return ef.lookAt(r),ef.updateMatrix(),this.applyMatrix4(ef.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 Gt().fromBufferAttribute(i,d)),s!==void 0&&e.colors.push(new rf().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 Gt().fromBufferAttribute(a,d),new Gt().fromBufferAttribute(a,h),new Gt().fromBufferAttribute(a,f)],v=new wa(d,h,f,g,y,m);e.faces.push(v),l!==void 0&&e.faceVertexUvs[0].push([new ur().fromBufferAttribute(l,d),new ur().fromBufferAttribute(l,h),new ur().fromBufferAttribute(l,f)]),c!==void 0&&e.faceVertexUvs[1].push([new ur().fromBufferAttribute(c,d),new ur().fromBufferAttribute(c,h),new ur().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(lu).negate(),this.translate(lu.x,lu.y,lu.z),this}normalize(){this.computeBoundingSphere();let r=this.boundingSphere.center,e=this.boundingSphere.radius,t=e===0?1:1/e,o=new N0;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 Gt,e=new Gt;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 Gt;if(r){let t=new Gt,o=new Gt;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 mn;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 Gt,u={a:new Gt,b:new Gt,c:new Gt};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 MI),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new DI),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 T0().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,P=new wa(f.a+i,f.b+i,f.c+i);P.normal.copy(f.normal),o!==void 0&&P.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(),P.vertexNormals.push(m);P.color.copy(f.color);for(let O=0,S=v.length;O<S;O++)y=v[O],P.vertexColors.push(y.clone());P.materialIndex=f.materialIndex+t,l.push(P)}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 P=0,O=g.length;P<O;P++)v.push(g[P].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 Gt(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,P=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,A=0;if(A=u(A,0,0),A=u(A,1,y),A=u(A,2,g),A=u(A,3,v),A=u(A,4,P),A=u(A,5,O),A=u(A,6,S),A=u(A,7,C),t.push(A),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(P&&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 mn().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 P=0,O=g.length;P<O;P++){let S=g[P];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 tf().fromGeometry(this),e=new C0,t=new Float32Array(r.vertices.length*3);if(e.setAttribute("position",cu.call(new Ws(t,3),r.vertices)),r.normals.length>0){let o=new Float32Array(r.normals.length*3);e.setAttribute("normal",cu.call(new Ws(o,3),r.normals))}if(r.colors.length>0){let o=new Float32Array(r.colors.length*3);e.setAttribute("color",A0.call(new Ws(o,3),r.colors))}if(r.uvs.length>0){let o=new Float32Array(r.uvs.length*2);e.setAttribute("uv",M0.call(new Ws(o,2),r.uvs))}if(r.uvs2.length>0){let o=new Float32Array(r.uvs2.length*2);e.setAttribute("uv2",M0.call(new Ws(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 Sa(c.data.length*3,3);u.name=c.name,i.push(cu.call(u,c.data))}e.morphAttributes[o]=i}if(r.skinIndices.length>0){let o=new Sa(r.skinIndices.length*4,4);e.setAttribute("skinIndex",I0.call(o,r.skinIndices))}if(r.skinWeights.length>0){let o=new Sa(r.skinWeights.length*4,4);e.setAttribute("skinWeight",I0.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 C0,t=r.geometry;if(r.isPoints||r.isLine){let o=new Sa(t.vertices.length*3,3),i=new Sa(t.colors.length*3,3);if(e.setAttribute("position",cu.call(o,t.vertices)),e.setAttribute("color",A0.call(i,t.colors)),t.lineDistances&&t.lineDistances.length===t.vertices.length){let a=new Sa(t.lineDistances.length,1);e.setAttribute("lineDistance",BI.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}};mn.prototype.isGeometry=!0;var tf=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 P=v.vertexNormals;if(P.length===3)this.normals.push(P[0],P[1],P[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 ur,new ur,new ur))}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 ur,new ur,new ur))}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}},wa=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 Gt,this.vertexNormals=Array.isArray(o)?o:[],this.color=i&&i.isColor?i:new rf,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 BI(n){return this.array.set(n),this}function A0(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 rf),r[e++]=i.r,r[e++]=i.g,r[e++]=i.b}return this}function M0(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 ur),r[e++]=i.x,r[e++]=i.y}return this}function cu(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 Gt),r[e++]=i.x,r[e++]=i.y,r[e++]=i.z}return this}function I0(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 _I),r[e++]=i.x,r[e++]=i.y,r[e++]=i.z,r[e++]=i.w}return this}var RI=["a","b","c"];function VI(n,r){switch(r){case"c":return n.c;case"b":return n.b;case"a":default:return n.a}}function nf(n,r,e){let t=Math.min(n,r),o=Math.max(n,r),i=t+"_"+o;return e.get(i)}function af(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 GI(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],af(a.a,a.b,n,t,a,e),af(a.b,a.c,n,t,a,e),af(a.c,a.a,n,t,a,e)}function uu(n,r,e,t,o){n.push(new wa(r,e,t,void 0,void 0,o))}function Pa(n,r){return Math.abs(r-n)/2+Math.min(n,r)}function du(n,r,e,t){n.push([r.clone(),e.clone(),t.clone()])}var pu=class{constructor(r=1){this.subdivisions=r}modify(r){r instanceof LI?r=new mn().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 E0,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;GI(l,c,d,h);let f=[],m,y,g,v,P,O,S;for(let Z of Array.from(h.keys())){for(y=h.get(Z),g=new E0,P=3/8,O=1/8,S=y.faces.length,S!=2&&(P=.5,O=0,S!=1),g.addVectors(y.a,y.b).multiplyScalar(P),e.set(0,0,0),a=0;a<S;a++){for(v=y.faces[a],s=0;s<3&&(m=l[VI(v,RI[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,A,x,E,N,I,D,_=[];for(o=0,i=l.length;o<i;o++){for(I=l[o],N=d[o].edges,t=N.length,t==3?C=3/16:t>3&&(C=3/(8*t)),A=1-t*Number(C),x=C,t<=2&&(t==2?(A=3/4,x=1/8):t==1||t==0),D=I.clone().multiplyScalar(A),e.set(0,0,0),a=0;a<t;a++)E=N[a],m=E.a!==I?E.a:E.b,e.add(m);e.multiplyScalar(Number(x)),D.add(e),_.push(D)}let B=_.concat(f),V=_.length,U,R,W,j=[],F=[],H,q,re,ee,X=new of,te=new of,K=new of;for(o=0,i=c.length;o<i;o++)v=c[o],U=Number(nf(v.a,v.b,h).newEdge)+V,R=Number(nf(v.b,v.c,h).newEdge)+V,W=Number(nf(v.c,v.a,h).newEdge)+V,uu(j,U,R,W,v.materialIndex),uu(j,v.a,U,W,v.materialIndex),uu(j,v.b,R,U,v.materialIndex),uu(j,v.c,W,R,v.materialIndex),p&&(H=u[o],q=H[0],re=H[1],ee=H[2],X.set(Pa(q.x,re.x),Pa(q.y,re.y)),te.set(Pa(re.x,ee.x),Pa(re.y,ee.y)),K.set(Pa(q.x,ee.x),Pa(q.y,ee.y)),du(F,X,te,K),du(F,q,X,K),du(F,re,te,X),du(F,ee,K,te));r.vertices=B,r.faces=j,p&&(r.faceVertexUvs[0]=F)}};var Pt=new jI,B0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=n.geometry??r?.geometry??new D0().copy(new _0(100,100,100)),t;r===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(Pt),t={width:Pt.x,height:Pt.y,depth:Pt.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 D0().copy(new _0(100,100,100)),a=i.userData.parameters;a===void 0?(i.computeBoundingBox(),i.boundingBox.getSize(Pt)):Pt.set(a.width,a.height,a.depth),(r!==Pt.x||e!==Pt.y||t!==Pt.z)&&i.scale(Pt.x===0?1:r/Pt.x,Pt.y===0?1:e/Pt.y,Pt.z===0?1:t/Pt.z);let s=i.originalGeometry;try{o>0?(s===void 0||a?.subdivisions!==o)&&(s===void 0&&(s=i),i=new pu(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 zI(e).load(n,o=>{let i=this.normalizeInputs({geometry:o});o.boundingBox.getSize(Pt);let a=100/Pt.x;Object.assign(i.parameters,{width:100,height:Pt.y*a,depth:Pt.z*a}),r(this.build(i))})}};var fu=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 Fe?n.shape:new Fe,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=Jt.create({shape:l,parameters:{roundness:o,depth:i,extrudeBevelSize:a,extrudeBevelSegments:s}});return Object.assign(f,{userData:{...n,type:"PolygonGeometry"}})}};import{BufferGeometry as FI,Float32BufferAttribute as sf,Vector2 as io,Vector3 as Et}from"three";var L0=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 cf(r*.5,e,o,i,a,s,l);return c.scale(1,1,t/r),Object.assign(c,{userData:{...n,type:"PyramidGeometry"}})}};function qs(n,r,e){e.x=n.x*r.x,e.y=n.y,e.z=n.x*r.y}function lf(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 UI(n,r,e){let t=n.clone().sub(r),o=e.clone().sub(r);return t.projectOnVector(o),t.add(r)}var cf=class extends FI{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,P=new Et(0,-h,0),O=new Et(0,h,0),S=new io(r,-h),C=new io(m,-h),A=new io(0,O.y).sub(C),x=new io(0,O.y).sub(S),E=new io(A.y,-A.x).normalize(),N=new io(x.y,-x.x).normalize(),D=r*Math.cos(Math.PI/t)*Math.tan((Math.PI-A.angle())/2)-1e-8;a=Math.min(a,D);let _;{let F=new Et(E.x,E.y,0),H=new Et(Math.cos(y)*F.x,F.y,Math.sin(y)*F.x);_=F.angleTo(H)}let B=a/Math.tan((Math.PI-A.angle())/2),V=a/Math.tan((Math.PI-_)/2),U=new Et;if(!i){c.push(P.x,P.y,P.z),u.push(0,-1,0),p.push(0,0);let F=d++,H=[],q=S.clone(),re=B/Math.cos(Math.PI/t);q.x-=re;for(let ee=0;ee<t;ee++){let X=ee/t*Math.PI*2+f,te=new io(Math.sin(X),Math.cos(X));qs(q,te,U),c.push(U.x,U.y,U.z),u.push(0,-1,0),p.push(0,0),H.push(d++)}for(let ee=0;ee<H.length;ee++)l.push(H[ee],F,H[(ee+1)%H.length])}let R=[];{let F=new Et,H=new Et,q=new Et,re=new Et,ee=new Et,X=new Et;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 io(Math.sin(K),Math.cos(K)),ue=new io(Math.sin(Z),Math.cos(Z)),le=new io(Math.sin(Q),Math.cos(Q));qs(S,$,H),qs(S,le,q),qs(E,ue,F),lf(O,H,q,V,V,re),c.push(re.x,re.y,re.z),lf(H,O,q,V,B,ee),c.push(ee.x,ee.y,ee.z),lf(q,H,O,B,V,X),c.push(X.x,X.y,X.z),u.push(F.x,F.y,F.z),u.push(F.x,F.y,F.z),u.push(F.x,F.y,F.z),p.push(0,0),p.push(0,0),p.push(0,0);let ne=d++,ce=d++,ae=d++;if(l.push(ne,ce,ae),a>0){{let he=H.clone().add(q).multiplyScalar(.5),xe=O.clone().sub(he).normalize(),T=P.clone().sub(he).normalize().add(xe).normalize().multiplyScalar(-1),ie=X.clone().sub(ee);W(he,ie,T,A.angle())}let me,pe;{let he=new Et;qs(N,le,he);let xe=X.clone().add(re).multiplyScalar(.5);xe=UI(xe,q,O);let ye=X.clone().sub(re);[me,pe]=W(xe,ye,he,_,re.y)}{let he=me,xe=he.clone().setY(0).normalize(),ye=new Et(0,-1,0),T=xe.clone().cross(ye);j(he,xe,ye,T)}R.concat(pe);{let he=A.angle(),xe=Math.PI-he,ye=O.clone();ye.y-=a/Math.sin(he-Math.PI/2);let T=new Et,ie=[];for(let Ve=0;Ve<s;Ve++){let _e=[],Pe=Math.PI/2-xe*Ve/s,vt=Math.cos(Pe),Me=Math.sin(Pe),gt=Z;for(let St=0;St<=Ve;St++){let Dn=Math.cos(gt),ot=Math.sin(gt);F.x=vt*ot,F.y=Me,F.z=vt*Dn,T.copy(ye).addScaledVector(F,a),c.push(T.x,T.y,T.z),u.push(F.x,F.y,F.z),p.push(0,0),_e.push(d++),gt+=Math.PI*2/Ve/t}ie.push(_e)}pe.reverse(),ie.push(pe);let De=ie.length-1;for(let Ve=0;Ve<De;Ve++){let _e=ie[Ve],Pe=ie[Ve+1],vt=_e.length-1;l.push(Pe[1],_e[0],Pe[0]);for(let Me=1;Me<=vt;Me++)l.push(_e[Me],_e[Me-1],Pe[Me]),l.push(Pe[Me+1],_e[Me],Pe[Me])}}}}}this.setIndex(l),this.setAttribute("position",new sf(c,3)),this.setAttribute("normal",new sf(u,3)),this.setAttribute("uv",new sf(p,2));function W(F,H,q,re,ee){let X=-re/2,te=(Math.PI-re)/2,K=H.clone().normalize().cross(q);F.addScaledVector(q,-a/Math.sin(te));let Z=new Et,Q=new Et,$=1,ue=d,le=[];for(let ne=0;ne<=s;ne++){let ce=X+ne/s*re;Q.set(0,0,0),Q.addScaledVector(K,Math.sin(ce)),Q.addScaledVector(q,Math.cos(ce));for(let ae=0;ae<=$;ae++){let me=ae/$-.5;if(Z.copy(F),Z.addScaledVector(H,me),Z.addScaledVector(Q,a),ee!=null){let pe=Math.max(0,Z.y-ee);Z.addScaledVector(H,-pe/H.y)}c.push(Z.x,Z.y,Z.z),u.push(Q.x,Q.y,Q.z),p.push(0,0),ae===0&&le.push(d),d++}}for(let ne=0;ne<s;ne++)for(let ce=0;ce<$;ce++){let ae=ue+ce+($+1)*ne,me=ae+($+1),pe=me+1,he=ae+1;l.push(ae,me,he),l.push(me,pe,he)}return[F.clone().addScaledVector(H,.5),le]}function j(F,H,q,re){let ee=Math.PI/2,X=x.angle()-ee,te=[],K=new Et,Z=new Et;for(let $=0;$<=s;$++){let ue=[],le=$/s;for(let ne=0;ne<=$;ne++){let ae=(($?ne/$:0)-.5)*v,me=Math.cos(ae),pe=Math.sin(ae),he=Math.atan(Math.tan(X)*me),xe=(ee+he)*le,ye=Math.cos(xe),T=Math.sin(xe);K.set(0,0,0),K.addScaledVector(H,T*me),K.addScaledVector(q,ye),K.addScaledVector(re,T*pe),Z.copy(F).addScaledVector(K,a),c.push(Z.x,Z.y,Z.z),u.push(K.x,K.y,K.z),p.push(0,0),ue.push(d++)}te.push(ue)}let Q=te.length-1;for(let $=0;$<Q;$++){let ue=te[$],le=te[$+1],ne=ue.length-1;l.push(ue[0],le[1],le[0]);for(let ce=1;ce<=ne;ce++)l.push(ue[ce-1],ue[ce],le[ce]),l.push(ue[ce],le[ce+1],le[ce])}}}};var Oa=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 Fe?n.shape:new Fe,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 P=Jt.create({shape:r,parameters:{depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}});return Object.assign(P,{userData:{...n,type:"RectangleGeometry"}})}};import{BufferGeometry as kI,Float32BufferAttribute as HI,MathUtils as R0,SphereGeometry as WI}from"three";var V0=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=R0.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 kI,u.setAttribute("position",new HI([],3))):u=new WI(.5*r,o,i,a,s,l,c*R0.DEG2RAD),u.scale(1,e/r,t/r),Object.assign(u,{userData:{...n,type:"SphereGeometry"}})}};import{PlaneGeometry as qI}from"three";var G0=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 qI(r,e,t,o);return i.scale(1,1,1),Object.assign(i,{userData:{...n,type:"PlaneGeometry"}})}};import{BufferGeometry as $I,Float32BufferAttribute as uf,Vector3 as YI}from"three";var 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 df(r,e,t,o,i,a);return Object.assign(s,{userData:{...n,type:"BackdropGeometry"}})}},df=class extends $I{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 YI(Z,Q,$),f=h(),m=h(),[y,g,v]=[e/2,r/2,t/2],P=-g,O=+g,[S,C,A]=[h(P,-y,+v),h(P,-y,-v),h(P,+y,-v)],x=(Z,Q=!1)=>Math.sin(Z-Math.PI/(1+ +Q)),E=(Z,Q=!1)=>Math.cos(Z-Math.PI/(1+ +Q));A.y=Math.sin(o)*e-y;let N=Math.cos(o)*e-v,I=S.z-u;o<=d?(A.z=Math.min(N,I),A.z==I&&(A.y-=(N-I)/Math.tan(d-o))):C.z=Math.min(C.z-N-v,S.z-u),f.subVectors(S,C),m.subVectors(A,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),E(o,!0)),p.push([A,f.clone()]);let U=(Math.PI-o)/a;for(let Z=0;Z<=a;Z++){let Q=d+o+Z*U;f.set(0,Math.sin(Q)*_,Math.cos(Q)*_),f.add(V),m.set(0,x(Q),E(Q)),p.push([f.clone(),m.clone()])}p.push([S,h(0,1,0)]);let R=Math.sin(U/2)*_*2,W=p.length-1,j=p[0][0].distanceTo(p[1][0]),F=p[W-1][0].distanceTo(p[W][0]),H=j+R*a+F;p[0].push(1);for(let Z=0;Z<=a;Z++)p[Z+1].push(1-(j+Z*R)/H);p[W].push(0);let[q,re,ee]=p[0],X,te,K;for(let Z=1;Z<p.length;Z++)[X,te,K]=p[Z],s.push(P,q.y,q.z,P,X.y,X.z,O,q.y,q.z,O,q.y,q.z,P,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 uf(s,3)),this.setAttribute("normal",new uf(l,3)),this.setAttribute("uv",new uf(c,2))}};var hu=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 Fe?n.shape:new Fe,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,A=f+Math.cos(S)*d;u.addPoint(u.createPoint(C,A))}}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 P=Jt.create({shape:u,parameters:{roundness:i,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(P,{userData:{...n,type:"StarGeometry"}})}};import{PlaneGeometry as XI}from"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,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 XI(r,e);return Object.assign(t,{userData:{...n,type:"TextFrameGeometry"}})}};import{BufferGeometry as KI,Float32BufferAttribute as QI,MathUtils as ZI}from"three";var F0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:32,tubularSegments:64,arc:360,cornerRadius:30,cornerSegments:8},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.round(Math.abs(e.depth??e.width*.25));return{parameters:Object.assign(e,{width:t,height:o,depth:i})}}static build(n){let{width:r,height:e,depth:t,radialSegments:o,tubularSegments:i,arc:a,cornerRadius:s,cornerSegments:l}=n.parameters,c=JI(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 JI(n,r,e,t,o,i,a,s,l,c,u){[r,e]=[e,r],a=r/2;let p=ZI.clamp(o/360,0,1);if(p===0){let d=new KI;return d.setAttribute("position",new QI([],3)),d}return p===1&&(c=0),new ks(!0,n,r,e,t,p,i,a,s,l,c,u)}import{TorusKnotGeometry as eN}from"three";var 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 eN(s,e,t,o,i,a);return Object.assign(l,{userData:{...n,type:"TorusKnotGeometry"}})}};var k0=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 Fe?n.shape:new Fe,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=Jt.create({shape:l,parameters:{roundness:t,depth:o,extrudeBevelSize:i,extrudeBevelSegments:a}});return Object.assign(p,{userData:{...n,type:"TriangleGeometry"}})}};import{Vector2 as W0,Vector3 as Dt,Matrix3 as tN,Matrix4 as Xn,BufferGeometry as q0,BufferAttribute as Ca,MathUtils as mu}from"three";function H0(n,r){let e=2*Math.PI;return(n%e+e)%e===(r%e+e)%e}var rN=new Xn,oN=new Xn;function nN(n,r,e){let t=[new Dt,new Dt,new Dt],o=[new Dt,new Dt,new Dt];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=mu.lerp(i.length(),s.length(),e);i.lerp(s,e).setLength(l)}),new Xn().makeBasis(t[0],t[1],t[2])}var $0=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??va.create({parameters:np}).userData.shape;return{path:n.path??Ji.defaultData(),parameters:Object.assign(e,{width:t,height:o,depth:i,extrusion:{...Tc,...e.extrusion}}),shapeData:a}}static build(n){if(n.path.points.length>=2){let e=new pf(n);return Object.assign(e,{userData:{...n,type:"PathGeometry"}})}else return Object.assign(new q0,{userData:{...n,type:"PathGeometry"}})}},pf=class extends q0{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)||!H0(e.twist,0)||e.startScale!==e.endScale}build(){let e=this._extractPathPoints();if(e.length<2)return;let t=this._computeBasisMatrices(e),{depth:o,offset:i}=this.inputs.parameters.extrusion;o=Math.max(0,Math.min(o,1)),i=Math.max(0,Math.min(i,1));let a=this.inputs.path.isClosed?e.length:e.length-1,s=Math.floor(i*a),l=this.inputs.path.isClosed?Math.ceil((o+i)*a):Math.ceil(Math.min(1,o+i)*a),c=Math.min(Math.max(2,l-s+1),a+2),u=[],p=[];for(let j=0;j<c;j++){let F=this.inputs.path.isClosed?(j+s)%e.length:Math.min(j+s,e.length-1);u.push(e[F].clone()),p.push(t[F].clone())}let d=(j,F,H)=>{u[j]=u[j].clone().lerp(u[F],H),p[j]=nN(p[j],p[F],H)},h=0,f=i*a%1;(!this.inputs.path.isClosed||o<=1)&&(f||i===0)&&(h=f,d(0,1,h));let m=0,y=(i+o)*a%1;if((this.inputs.path.isClosed&&o<=1||!this.inputs.path.isClosed&&i+o<1)&&y&&(m=y,d(u.length-1,u.length-2,1-m)),o===0){let j=u.length-1;u[j].copy(u[0]),p[j].copy(p[0])}this._applyPathModifiers(p,h,m);let{bevel:g,bevelSides:v}=this.inputs.parameters.extrusion,P=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:A}=this._computeShapePoints(O),x=0,E;P==="round"&&(E=new hn(this.inputs.shapeData,2*g,g,O,v,void 0,!0),x=E.getAttribute("position").count);let N=0,I=0;C.sort((j,F)=>j.start-F.start),C.forEach(j=>{j.verticesStart=N,j.verticesCount=j.continuous.reduce((F,H,q)=>F+(q===0||!H?2:1),0),I+=j.verticesCount,N=I});let D=I*c,_,B=0;if(this._isOpenEnded()&&P==="flat"){try{_=Gr({windingRule:ze.ODD,elementType:at.POLYGONS,polySize:3,vertexSize:2,strict:!0,contours:S})}catch{_=Kp}B=_.vertexCount}let V=D+2*B+x*2,U=D+2*B,R={positions:new Float32Array(V*3),normals:new Float32Array(V*3),uvs:new Float32Array(V*2)},W=[];if(C.forEach(j=>{this._extrudeRegion(j,A,p,u,R,W,this._isGeometryClosed()&&!this._isOpenEnded())}),_&&(this._closeEnd(_,D,W,R,p[0],u[0],!1),this._closeEnd(_,D+B,W,R,p[p.length-1],u[u.length-1],!0)),E){R.positions.set(E.getAttribute("position").array,U*3),R.normals.set(E.getAttribute("normal").array,U*3),R.uvs.set(E.getAttribute("uv").array,U*2);for(let q=U;q<U+x;q++)R.uvs[q*2+1]=1e-4;let j=W.length;W.push(...E.getIndex().array.map(q=>q+U)),U+=x,R.positions.set(E.getAttribute("position").array,U*3),R.normals.set(E.getAttribute("normal").array,U*3),R.uvs.set(E.getAttribute("uv").array,U*2);let F=W.length;W.push(...E.getIndex().array.map(q=>q+U)),this.setAttribute("position",new Ca(R.positions,3)),this.setAttribute("normal",new Ca(R.normals,3)),this.setAttribute("uv",new Ca(R.uvs,2)),this.setIndex(W);let H=rN;H.copy(p[p.length-1]).setPosition(u[u.length-1]),this.applyMatrix4OnRange(H,U,V),H.copy(p[0]).setPosition(u[0]).multiply(oN.makeScale(1,1,-1)),this.applyMatrix4OnRange(H,U-x,U),this.reverseIndicesOnRange(j,F)}else this.setAttribute("position",new Ca(R.positions,3)),this.setAttribute("normal",new Ca(R.normals,3)),this.setAttribute("uv",new Ca(R.uvs,2)),this.setIndex(W)}_extractPathPoints(){let t=Yc(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 Dt,s=new Dt,l=new Dt,c=new Dt,u=new Dt(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 P;y===o-1?P=i?e[1]:g.clone().multiplyScalar(2).sub(e[y-1]):P=e[y+1];let O=g.clone().sub(v).normalize(),S=P.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 A=u.clone().cross(C).normalize(),x=C.clone().cross(A).normalize();u.copy(x),c.copy(A),y===0&&(a.copy(x),s.copy(C));let E=new Xn().makeBasis(A,x,C);t.push(E)}let p=i?s:l,d=i?a:new Dt(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 Xn().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 Xn,p=new Xn;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(mu.lerp(a,a+s,f)*mu.DEG2RAD);let m=mu.lerp(l,c,f);p.makeScale(m,m,m),d.multiply(u).multiply(p)}),e}_computeShapePoints(e=12,t=ze.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 P=y[v-1],O=y[v-0];g.push(P,O)}return g}),s;try{s=Gr({windingRule:t,elementType:at.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[i]})}catch{s=Us}let l;try{l=Gr({windingRule:ze.ODD,elementType:at.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...a]})}catch{l=Xp}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],P=s.vertices[g+1];v<u&&(u=v),v>p&&(p=v),P<d&&(d=P),P>h&&(h=P)}let f=[];for(let m=s.elementCount-1;m>=0;m--){let y=m>=c,g=m*2,v=s.elements[g+0],P=s.elements[g+1],O=v+P,S={start:v,count:P,normals:[],isHole:y,continuous:[],verticesStart:0,verticesCount:0};f.push(S);let C=v,A=O-1,x=v+1,E=o.roundedCurves.length;do{let N=C-v,I=s.vertices[A*2+0],D=s.vertices[A*2+1],_=s.vertices[C*2+0],B=s.vertices[C*2+1],V=s.vertices[x*2+0],U=s.vertices[x*2+1],R=_-I,W=B-D,j=Math.sqrt(R*R+W*W);R/=j,W/=j;let F=_-V,H=B-U,q=Math.sqrt(F*F+H*H);F/=q,H/=q,S.normals[N*2+0]=-H,S.normals[N*2+1]=F;let re=s.vertexIndices[C];if(Array.isArray(re))S.continuous[N]=!1;else{let[ee,X]=o.getCurveIndexFromVertexId(re-1,!0);if(X>0&&X<1)S.continuous[N]=!0;else{let te=X===1?ee+1:ee-1;te=(te+E)%E;let K=X===1?0:1,Z=o.roundedCurves[ee].getTangent(X),Q=o.roundedCurves[te].getTangent(K);S.continuous[N]=Z.dot(Q)>.95}}y&&(S.normals[N*2+0]*=-1,S.normals[N*2+1]*=-1),[A,C,x]=[C,x,x+1],x>=O&&(x-=P)}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 Dt,u=new Dt,p=new Dt,d=new Dt,h=new W0;o.forEach((m,y)=>{let g=i[y],v=e.verticesStart*o.length+e.verticesCount*y;for(let P=0;P<e.count;P++){let O=(e.start+P)*2;if(c.set(t[O+0],t[O+1],0),p.copy(c).applyMatrix4(m).add(g),e.continuous[P])d.set(e.normals[P*2+0],e.normals[P*2+1],0);else{let S=P===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(P===0?1:P/e.count,y/(o.length-1)),this._insertVertex(a,v,p,d,h),v++,!e.continuous[P]||P===0){if(P===0)d.set(e.normals[P*2+0],e.normals[P*2+1],0),h.set(0,y/(o.length-1));else{let S=P===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 P=0;P<e.count;P++){(!e.continuous[P]||P===0)&&v++;let O=P===e.count-1?0:v+1,S=y+v,C=y+O,A=g+O,x=g+v;e.isHole?s.push(S,A,C,S,x,A):s.push(S,C,A,S,A,x),v++}}}_closeEnd(e,t,o,i,a,s,l){let c=e.vertexCount,u=new Dt(0,0,l?-1:1).applyMatrix4(a),p=new Dt,d=new W0;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 tN().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}}};import{BufferAttribute as Y0,BufferGeometry as ff}from"three";import{mergeBufferGeometries as aN}from"three/examples/jsm/utils/BufferGeometryUtils.js";function X0(){let n=new ff;return n.setAttribute("position",new Y0(new Float32Array([]),3)),n.setIndex(new Y0(new Uint16Array([]),1)),n}var sN=X0().attributes,lN=12,cN=1,Kn=class extends ff{constructor(e,t){super();this.charWidths=[];this.charCoords=[];this.wrappedText=[];this.isLowResolution=!1;this.vectorShapes=[];Object.assign(this.attributes,sN),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=cn.getDisplayedValue(c),d=u===2?p.toUpperCase():u===3?p.toLowerCase():p,h=uN(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,P=f.map(C=>new Fe().fromShape(C,!0));this.vectorShapes=P;let O=P.map(C=>Jt.create({shape:C,parameters:{depth:a,extrudeBevelSegments:l,extrudeBevelSize:s,windingRule:a<=0?ze.NONZERO:ze.ODD,subdivisions:this.isLowResolution&&a>0?cN:lN}})),S=O.length?aN(O):X0();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,A])=>{this.setAttribute(C,A)}),this.setIndex(S.index),this.computeBoundingSphere()}clone(){let e=Rt(new ff,Kn.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 uN(n,r,e){let t=[""],o="";for(let i of e)o+=i,i===" "||i===`
|
|
3
3
|
`?(t[t.length-1]+=o,o="",i===`
|
|
4
|
-
`&&t.push("")):r.getTextWidth(t[t.length-1]+o,n)>n.width&&(t[t.length-1].length&&t.push(""),r.getTextWidth(t[t.length-1]+o,n)>n.width&&(o.length===1?(t[t.length-1]+=o,o=""):(t[t.length-1]+=o.slice(0,-1),o=o[o.length-1],t.push(""))));return t[t.length-1]+=o,t}import{BufferGeometry as pf,BufferAttribute as $0,Uint32BufferAttribute as ff,Float32BufferAttribute as hf,Matrix4 as XI,Vector3 as Ys,Sphere as KI,Box3 as QI,BoxGeometry as ZI}from"three";var W0,mu=new Promise(n=>{W0=n}),H0=!1;var hu;function q0(){if(H0)return;if(hu)return hu;async function n(){let e=!1?".":"https://unpkg.com/@splinetool/modelling-wasm@1.9.29/build",o=import("./process.js"),[i,a]=await Promise.all([o,fetch(`${e}/process.wasm`).then(c=>c.arrayBuffer())]),s=i.default,l=await s({wasmBinary:a});W0(l),H0=!0}return hu=n(),hu}import{BufferGeometryLoader as WI}from"three";var qI=["font"];function Bo(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];Zd(p)&&!qI.includes(o)&&(u[o]=r.getVariable(p,[t.uuid,"geometry",...c,o]),Zd(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=Fe.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 WI().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 mt(i,e);return c.data=n,c}else{if(i.type==="TextGeometry")return new Xn(i,r);if(i.type==="InputGeometry")return new Xn(i,r);if(i.type==="UIGeometry")return Oa.create({parameters:{width:i.width,height:i.height,cornerRadius:i.cornerRadius,cornerType:i.cornerType}})}let l;try{l=df(s)}catch(c){console.error(c)}if(!l){let c=Fe.createFromState(Zi.defaultData(),100,100);s.shape=c,l=df(s)}return l}import{Matrix4 as $I}from"three";var YI=new $I;function $s(n,r,e,t){let o=n.position.array,i=n.normal.array,a=YI.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 yu=new QI,Ta=new Ys,Se;mu.then(n=>{Se=n});var Y0=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),X0=new Uint32Array([0,1,2,3]),K0=new Uint8Array([4]),mt=class extends pf{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=en.div(t,o);this.subdividedGeometry&&$s(this.subdividedGeometry.attributes,...i),this.originalGeometry&&$s(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(Ta.fromArray(i));let s=Ta.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}=mt.build(this.data,void 0,!this.flatShading,void 0))}catch{e=new ZI(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&&(mt.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0)}dispose(){super.dispose(),this.freeSubdivPointer()}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new KI,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let t=e.attributes.position,o=e.boundingSphere.center;yu.setFromBufferAttribute(t),yu.getCenter(o),e.boundingSphere.radius=o.distanceTo(yu.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),yu.getSize(Ta);let i={width:Ta.x,height:Ta.y,depth:Ta.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&&(Se.free_bvh(t),Se.free_subdivision_surface(t));try{a=mt.allocate(e,i)}catch(u){console.error(u,e),a=mt.allocate({positionWASM:Y0,indexWASM:X0,verticesPerFaceWASM:K0},i)}if(Se.set_destination_refinement_level(a,0),s=mt.buildLevel(a,!0,c),e.subdivisions>0)try{Se.set_destination_refinement_level(a,e.subdivisions),l=mt.buildLevel(a,!1,c)}catch{try{Se.set_destination_refinement_level(a,e.subdivisions-1),l=mt.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:Bo(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}=xf(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}=bf(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=Y0,i=X0,a=K0);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=Se._malloc(f),v=new Float32Array(Se.HEAPF32.buffer,g,d),P=new Uint32Array(Se.HEAPU32.buffer,g+m,h);v.set(o,0),v.set(s,o.length),v.set(l,o.length+s.length),P.set(i,0),P.set(a,i.length);let O;e?.scaleBaked?.some(T=>T!==1)&&(O=new XI().makeScale(...e.scaleBaked)),t&&(O?O.premultiply(t):O=t);let S=O?Se.alloc_subdivision_surface2(g,c,g+m,u,g+m+i.length*Uint32Array.BYTES_PER_ELEMENT,p,O.elements):Se.alloc_subdivision_surface(g,c,g+m,u,g+m+i.length*Uint32Array.BYTES_PER_ELEMENT,p);return Se._free(g),S}static buildLevel(e,t,o,i,a){let s=a?Se.get_mesh_data2(e,t?Se.Level.CONTROL:Se.Level.REFINED,o,a.elements):Se.get_mesh_data(e,t?Se.Level.CONTROL:Se.Level.REFINED,o),l=8,c=Se.HEAPU32.subarray(s>>2,(s>>2)+l),u=c.subarray(4,4+4),p=0,d=Se.HEAPU32[c[p]>>2],h=Se.HEAPF32.subarray(d>>2,(d>>2)+u[p]);p++;let f=Se.HEAPU32[c[p]>>2],m=Se.HEAPF32.subarray(f>>2,(f>>2)+u[p]);p++;let y=Se.HEAPU32[c[p]>>2],g=Se.HEAPU32.subarray(y>>2,(y>>2)+u[p]);p++;let v=Se.HEAPU32[c[p]>>2],P=Se.HEAPU32.subarray(v>>2,(v>>2)+u[p]);if(p++,i===void 0){let O=new pf;if(O.setIndex(new ff(P,1)),O.setAttribute("position",new hf(h,3)),O.setAttribute("normal",new hf(m,3)),t){O.setAttribute("faceMap",new ff(g,1));let S=new Float32Array(m.length/3*4).fill(0);O.setAttribute("color",new $0(S,4))}return Se.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,Se.free_mesh_data(s)}static freeSubdivPointer(e){Se.free_bvh(e),Se.free_subdivision_surface(e)}static buildControlCageWireframe(e,t,o){let i=Se.get_wireframe_data_for_base_level(e),a=4,s=Se.HEAPU32.subarray(i>>2,(i>>2)+a),l=s.subarray(2,2+2),c=0,u=Se.HEAPU32[s[c]>>2],p=Se.HEAPF32.subarray(u>>2,(u>>2)+l[c]);c++;let d=Se.HEAPU32[s[c]>>2],h=Se.HEAPU32.subarray(d>>2,(d>>2)+l[c]);if(t===void 0){let f=new pf;f.setAttribute("position",new hf(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 $0(m,3)),f.setIndex(new ff(h,1)),Se.free_wireframe_data_for_base_level(i),f}t.getAttribute("position").copyArray(p),t.attributes.position.needsUpdate=!0,Se.free_wireframe_data_for_base_level(i)}static updateCollabMesh(e,t,o){let i=t===0;i||Se.set_destination_refinement_level(e,t);let a=o?Se.get_topological_data2(e,i?Se.Level.CONTROL:Se.Level.REFINED,o.elements):Se.get_topological_data(e,i?Se.Level.CONTROL:Se.Level.REFINED),s=6,l=Se.HEAPU32.subarray(a>>2,(a>>2)+s),c=l.subarray(3,3+3),u=0,p=Se.HEAPU32[l[u]>>2],d=new Float32Array(Se.HEAPF32.subarray(p>>2,(p>>2)+c[u]));u++;let h=Se.HEAPU32[l[u]>>2],f=new Uint32Array(Se.HEAPU32.subarray(h>>2,(h>>2)+c[u]));u++;let m=Se.HEAPU32[l[u]>>2],y=new Uint8Array(Se.HEAPU32.subarray(m>>2,(m>>2)+c[u]));return Se.free_topological_data(a),{positions:d,indices:f,verticesPerFace:y}}};var Q0=["getX","getY","getZ"];function xf(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[Q0[d]](u)*s)},`;if(p in e)i.push(e[p]);else{for(let d=0;d<3;d++)a.push(n[Q0[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 gu=new Ys,mf=new Ys,yf=new Ys,gf=new Ys;function bf(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]){gu.set(n[r[s]*3],n[r[s]*3+1],n[r[s]*3+2]),mf.set(n[r[s+1]*3],n[r[s+1]*3+1],n[r[s+1]*3+2]),yf.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]),mf.sub(gu).normalize(),yf.sub(gu).normalize(),gf.sub(gu).normalize();let l=mf.cross(yf).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 br={};O1(br,{calcBoolean:()=>oN,calcBooleanTopological:()=>rN,freeMeshSet:()=>sN,getMeshSet:()=>nN,hasOpenEdges:()=>iN,transformMeshSet:()=>aN});var JI,Z0=new Promise(n=>{JI=n});import{Float32BufferAttribute as J0,Sphere as eN}from"three";var De,Aa;Z0.then(n=>De=n);function tN(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}=xf(n.getAttribute("position"),o),s;if(r&&e){let{indices:l,verticesPerFace:c}=bf(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 eb(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=De._malloc(o);return(Number.isInteger(n[0])?new Uint32Array(De.HEAPU32.buffer,i,r):new Float32Array(De.HEAPF32.buffer,i,r)).set(n,0),i}function tb(n){switch(n){case 0:return De.OP.UNION;case 1:return De.OP.INTERSECTION;case 2:return De.OP.A_MINUS_B;case 3:return De.OP.B_MINUS_A;case 4:return De.OP.SYMMETRIC_DIFFERENCE;case 5:return De.OP.ALL;default:throw new Error("Unknown boolean operation "+n)}}function rN(n,r){Aa===void 0&&(Aa=De.init_csg());let e=eb(n),t=De.csg_calc_topological(Aa,e,n.length,tb(r));De._free(e);let o=6,i=De.HEAPU32.subarray(t>>2,(t>>2)+o),a=i.subarray(3,3+3),s=0,l=De.HEAPU32[i[s]>>2],c=new Float32Array(De.HEAPF32.subarray(l>>2,(l>>2)+a[s]));s++;let u=De.HEAPU32[i[s]>>2],p=new Uint32Array(De.HEAPU32.subarray(u>>2,(u>>2)+a[s]));s++;let d=De.HEAPU32[i[s]>>2],h=new Uint8Array(De.HEAPU32.subarray(d>>2,(d>>2)+a[s]));return De.free_mesh_data(t),{positions:c,indices:p,verticesPerFace:h}}function oN(n,r,e,t){Aa===void 0&&(Aa=De.init_csg());let o=eb(n),i=De.csg_calc(Aa,o,n.length,t,tb(r));De._free(o);let a=5,s=De.HEAPU32.subarray(i>>2,(i>>2)+a),l=s.subarray(2,2+3),c=0,u=De.HEAPU32[s[c]>>2],p=De.HEAPF32.subarray(u>>2,(u>>2)+l[c]);c++;let d=De.HEAPU32[s[c]>>2],h=De.HEAPF32.subarray(d>>2,(d>>2)+l[c]);c++;let f=l[c];e.setAttribute("position",new J0(p,3)),e.setAttribute("normal",new J0(h,3));let m=De.HEAPF32.subarray((i>>2)+5,(i>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new eN),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},De.free_mesh_data(i),f}function nN(n,r,e){if(De===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,P)=>v+P,0)+i);for(let v=0,P=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[P++]}}else({positions:t,faceIndices:o,nFaces:i}=tN(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=De._malloc(u),f=new Float32Array(De.HEAPF32.buffer,h,l),m=new Uint32Array(De.HEAPU32.buffer,h+p,c);f.set(t,0),m.set(o,0);let y=De.get_csg_mesh(h,a,h+p,s,i);return De._free(h),y}function iN(n){return De.has_open_edges(n)}function aN(n,r){De.transform_csg_mesh(n,r.elements)}function sN(n){De.free_csg_mesh(n)}var lN={ConeGeometry:Bx,CubeGeometry:Lx,CylinderGeometry:_x,DodecahedronGeometry:Rx,EllipseGeometry:va,HelixGeometry:y0,IcosahedronGeometry:g0,LatheGeometry:x0,NonParametricGeometry:M0,PolygonGeometry:du,PyramidGeometry:I0,RectangleGeometry:Oa,SphereGeometry:D0,PlaneGeometry:E0,BackdropGeometry:_0,StarGeometry:pu,TextFrameGeometry:B0,TorusGeometry:L0,TorusKnotGeometry:R0,TriangleGeometry:V0,PathGeometry:F0,VectorGeometry:Zt},df=n=>lN[n.type].create(n);function Ma(n){return n!==null&&"booleanOp"in n}var Ia=class extends pa(uN){constructor(){super(...arguments);this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new cN}updateVisible(e){super.updateVisible(e),this.visible=!Ma(this.parent)&&this.visible,Ma(this.parent)&&this.parent.invalidateDownstreamBooleanData()}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(br.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),Ma(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)e instanceof Ia&&(e.freeBooleanPointer(),Ma(e)&&e.invalidateUpstreamBooleanData())}updateTransformState(e,t){let o=super.updateTransformState(e,t);return o&&Ma(this.parent)&&this.invalidateDownstreamBooleanData(!0),o}onVariableUpdate(e=!1){super.onVariableUpdate(e),Ma(this.parent)&&this.invalidateDownstreamBooleanData(!0)}};var xu=new dN;function Xs(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)}xu.min.set(i,a,s),xu.max.set(l,c,u),xu.getCenter(t),xu.getSize(o).multiplyScalar(.5)}var hN=new pN,mN=new fN,Ot=class extends Ia{constructor(r,e){super(hN,mN),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?Xs(t,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:t.count,r,e):super.updateEntityBoxSize(r,e)}};import{Box3 as G3,Matrix4 as z3,Sphere as $b,Vector3 as j3}from"three";import{BufferAttribute as L3,Float32BufferAttribute as qb,MathUtils as Wf,Vector3 as qf}from"three";import{ShaderMaterial as p3}from"three";var Lo=class{constructor(r){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};if(Lo.uuidContext===null)throw new Error("plz startContext");Lo.uuidContext===Lo.globalContext?this.uuid="_gid"+Lo.uuidContext.nodeContextUuid++:this.uuid="_uid"+Lo.uuidContext.nodeContextUuid++,this.type=r,this.name=""}static startContext(r){this.uuidContext===null||this.uuidContext===Lo.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}},qe=Lo;qe.globalContext={nodeContextUuid:0},qe.uuidContext=Lo.globalContext;import{CubeReflectionMapping as TN,CubeRefractionMapping as AN,CubeUVReflectionMapping as MN,LinearEncoding as db,sRGBEncoding as IN}from"three";var Ks=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 vf=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}},Ct=new vf;import{Vector2 as rb}from"three";import{MathUtils as yN}from"three";var ge=class extends qe{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=yN.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 $e=class extends ge{constructor(e,t){t=t??{},t.shared=t.shared!==void 0?t.shared:!1;super(e,t);this.readonly=!1}setReadonly(e){return this.readonly=e,this.hashProperties=this.readonly?["value"]:void 0,this}getReadonly(){return this.readonly}generate(e,t,o,i,a,s){o=e.getUUID(o??this.getUUID()),i=i??this.getType(e);let l=e.getNodeData(o);return this.getReadonly()&&this.generateReadonly!==void 0?this.generateReadonly(e,t,o,i,a,s):e.isShader("vertex")?(l.vertex||(l.vertex=e.createVertexUniform(i,this,a,s,this.getLabel())),e.format(l.vertex.name,i,t)):(l.fragment||(l.fragment=e.createFragmentUniform(i,this,a,s,this.getLabel())),e.format(l.fragment.name,i,t))}};var st=class extends $e{constructor(e=0,t){super("v2");this.nodeType="Vector2";this.value=e instanceof rb?e:new rb(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)}};import{Vector3 as ob}from"three";var Gt=class extends $e{constructor(e=0,t,o){super("v3");this.nodeType="Vector3";this.value=e instanceof ob?e:new ob(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)}};import{Color as gN}from"three";var Tt=class extends gN{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 Jt=class extends $e{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof Tt?e:new Tt(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 xN=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,nb=/[a-z_0-9]+/gi,J=class extends ge{constructor(e,t,o,i,a){super(a);this.src="";this.nodeType="Function";this.useKeywords=!0;this.includes=[];this.extensions={};this.keywords={};this.isMethod=a===void 0,this.isInterface=!1,this.parse(e,t,o,i)}getShared(e,t){return!this.isMethod}getType(e){return e.getTypeByFormat(this.type)}getInputByName(e){if(this.inputs){let t=this.inputs.length;for(;t--;)if(this.inputs[t].name===e)return this.inputs[t]}}getIncludeByName(e){if(this.includes){let t=this.includes.length;for(;t--;)if(this.includes[t].name===e)return this.includes[t]}}generate(e,t,o,i,a){let s,l=0,c=this.src;if(this.includes)for(let p=0;p<this.includes.length;p++)e.include(this.includes[p],this);for(let p in this.extensions)e.extensions[p]=!0;let u=[];for(;s=nb.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&&Ct.containsKeyword(h)){let y=this.keywords[h];if(!y){let g=Ct.getKeywordData(h);g.cache&&(y=e.keywords[h]),y=y||Ct.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&&Ct.contains(m)&&e.include(Ct.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=xN.exec(this.src);if(this.inputs=[],a&&a.length==4){this.type=a[1],this.name=a[2];let s=a[3].match(nb);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 bN=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,Sf=class extends ge{constructor(e="",t){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||Sf.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=bN.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)}},je=Sf;je.PI="PI",je.PI2="PI2",je.RECIPROCAL_PI="RECIPROCAL_PI",je.RECIPROCAL_PI2="RECIPROCAL_PI2",je.LOG2="LOG2",je.EPSILON="EPSILON";var vN=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
|
|
5
|
-
)*?)}`,"gim"),
|
|
4
|
+
`&&t.push("")):r.getTextWidth(t[t.length-1]+o,n)>n.width&&(t[t.length-1].length&&t.push(""),r.getTextWidth(t[t.length-1]+o,n)>n.width&&(o.length===1?(t[t.length-1]+=o,o=""):(t[t.length-1]+=o.slice(0,-1),o=o[o.length-1],t.push(""))));return t[t.length-1]+=o,t}import{BufferGeometry as mf,BufferAttribute as J0,Uint32BufferAttribute as yf,Float32BufferAttribute as gf,Matrix4 as mN,Vector3 as Ys,Sphere as yN,Box3 as gN,BoxGeometry as xN}from"three";var Q0,gu=new Promise(n=>{Q0=n}),K0=!1;var yu;function Z0(){if(K0)return;if(yu)return yu;async function n(){let e=!1?".":"https://unpkg.com/@splinetool/modelling-wasm@1.9.31/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});Q0(l),K0=!0}return yu=n(),yu}import{BufferGeometryLoader as dN}from"three";var pN=["font"];function Bo(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];tp(p)&&!pN.includes(o)&&(u[o]=r.getVariable(p,[t.uuid,"geometry",...c,o]),tp(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=Fe.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 dN().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 yt(i,e);return c.data=n,c}else{if(i.type==="TextGeometry")return new Kn(i,r);if(i.type==="InputGeometry")return new Kn(i,r);if(i.type==="UIGeometry")return Oa.create({parameters:{width:i.width,height:i.height,cornerRadius:i.cornerRadius,cornerType:i.cornerType}})}let l;try{l=hf(s)}catch(c){console.error(c)}if(!l){let c=Fe.createFromState(Zi.defaultData(),100,100);s.shape=c,l=hf(s)}return l}import{Matrix4 as fN}from"three";var hN=new fN;function $s(n,r,e,t){let o=n.position.array,i=n.normal.array,a=hN.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 xu=new gN,Ta=new Ys,Se;gu.then(n=>{Se=n});var eb=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),tb=new Uint32Array([0,1,2,3]),rb=new Uint8Array([4]),yt=class extends mf{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&&$s(this.subdividedGeometry.attributes,...i),this.originalGeometry&&$s(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(Ta.fromArray(i));let s=Ta.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}=yt.build(this.data,void 0,!this.flatShading,void 0))}catch{e=new xN(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&&(yt.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0)}dispose(){super.dispose(),this.freeSubdivPointer()}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new yN,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let t=e.attributes.position,o=e.boundingSphere.center;xu.setFromBufferAttribute(t),xu.getCenter(o),e.boundingSphere.radius=o.distanceTo(xu.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),xu.getSize(Ta);let i={width:Ta.x,height:Ta.y,depth:Ta.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&&(Se.free_bvh(t),Se.free_subdivision_surface(t));try{a=yt.allocate(e,i)}catch(u){console.error(u,e),a=yt.allocate({positionWASM:eb,indexWASM:tb,verticesPerFaceWASM:rb},i)}if(Se.set_destination_refinement_level(a,0),s=yt.buildLevel(a,!0,c),e.subdivisions>0)try{Se.set_destination_refinement_level(a,e.subdivisions),l=yt.buildLevel(a,!1,c)}catch{try{Se.set_destination_refinement_level(a,e.subdivisions-1),l=yt.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:Bo(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}=Sf(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}=wf(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=eb,i=tb,a=rb);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=Se._malloc(f),v=new Float32Array(Se.HEAPF32.buffer,g,d),P=new Uint32Array(Se.HEAPU32.buffer,g+m,h);v.set(o,0),v.set(s,o.length),v.set(l,o.length+s.length),P.set(i,0),P.set(a,i.length);let O;e?.scaleBaked?.some(C=>C!==1)&&(O=new mN().makeScale(...e.scaleBaked)),t&&(O?O.premultiply(t):O=t);let S=O?Se.alloc_subdivision_surface2(g,c,g+m,u,g+m+i.length*Uint32Array.BYTES_PER_ELEMENT,p,O.elements):Se.alloc_subdivision_surface(g,c,g+m,u,g+m+i.length*Uint32Array.BYTES_PER_ELEMENT,p);return Se._free(g),S}static buildLevel(e,t,o,i,a){let s=a?Se.get_mesh_data2(e,t?Se.Level.CONTROL:Se.Level.REFINED,o,a.elements):Se.get_mesh_data(e,t?Se.Level.CONTROL:Se.Level.REFINED,o),l=8,c=Se.HEAPU32.subarray(s>>2,(s>>2)+l),u=c.subarray(4,4+4),p=0,d=Se.HEAPU32[c[p]>>2],h=Se.HEAPF32.subarray(d>>2,(d>>2)+u[p]);p++;let f=Se.HEAPU32[c[p]>>2],m=Se.HEAPF32.subarray(f>>2,(f>>2)+u[p]);p++;let y=Se.HEAPU32[c[p]>>2],g=Se.HEAPU32.subarray(y>>2,(y>>2)+u[p]);p++;let v=Se.HEAPU32[c[p]>>2],P=Se.HEAPU32.subarray(v>>2,(v>>2)+u[p]);if(p++,i===void 0){let O=new mf;if(O.setIndex(new yf(P,1)),O.setAttribute("position",new gf(h,3)),O.setAttribute("normal",new gf(m,3)),t){O.setAttribute("faceMap",new yf(g,1));let S=new Float32Array(m.length/3*4).fill(0);O.setAttribute("color",new J0(S,4))}return Se.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,Se.free_mesh_data(s)}static freeSubdivPointer(e){Se.free_bvh(e),Se.free_subdivision_surface(e)}static buildControlCageWireframe(e,t,o){let i=Se.get_wireframe_data_for_base_level(e),a=4,s=Se.HEAPU32.subarray(i>>2,(i>>2)+a),l=s.subarray(2,2+2),c=0,u=Se.HEAPU32[s[c]>>2],p=Se.HEAPF32.subarray(u>>2,(u>>2)+l[c]);c++;let d=Se.HEAPU32[s[c]>>2],h=Se.HEAPU32.subarray(d>>2,(d>>2)+l[c]);if(t===void 0){let f=new mf;f.setAttribute("position",new gf(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 J0(m,3)),f.setIndex(new yf(h,1)),Se.free_wireframe_data_for_base_level(i),f}t.getAttribute("position").copyArray(p),t.attributes.position.needsUpdate=!0,Se.free_wireframe_data_for_base_level(i)}static updateCollabMesh(e,t,o){let i=t===0;i||Se.set_destination_refinement_level(e,t);let a=o?Se.get_topological_data2(e,i?Se.Level.CONTROL:Se.Level.REFINED,o.elements):Se.get_topological_data(e,i?Se.Level.CONTROL:Se.Level.REFINED),s=6,l=Se.HEAPU32.subarray(a>>2,(a>>2)+s),c=l.subarray(3,3+3),u=0,p=Se.HEAPU32[l[u]>>2],d=new Float32Array(Se.HEAPF32.subarray(p>>2,(p>>2)+c[u]));u++;let h=Se.HEAPU32[l[u]>>2],f=new Uint32Array(Se.HEAPU32.subarray(h>>2,(h>>2)+c[u]));u++;let m=Se.HEAPU32[l[u]>>2],y=new Uint8Array(Se.HEAPU32.subarray(m>>2,(m>>2)+c[u]));return Se.free_topological_data(a),{positions:d,indices:f,verticesPerFace:y}}};var ob=["getX","getY","getZ"];function Sf(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[ob[d]](u)*s)},`;if(p in e)i.push(e[p]);else{for(let d=0;d<3;d++)a.push(n[ob[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 bu=new Ys,xf=new Ys,bf=new Ys,vf=new Ys;function wf(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]){bu.set(n[r[s]*3],n[r[s]*3+1],n[r[s]*3+2]),xf.set(n[r[s+1]*3],n[r[s+1]*3+1],n[r[s+1]*3+2]),bf.set(n[r[s+4]*3],n[r[s+4]*3+1],n[r[s+4]*3+2]),vf.set(n[r[s+5]*3],n[r[s+5]*3+1],n[r[s+5]*3+2]),xf.sub(bu).normalize(),bf.sub(bu).normalize(),vf.sub(bu).normalize();let l=xf.cross(bf).dot(vf);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 br={};N1(br,{calcBoolean:()=>PN,calcBooleanTopological:()=>wN,freeMeshSet:()=>AN,getMeshSet:()=>ON,hasOpenEdges:()=>CN,transformMeshSet:()=>TN});var bN,nb=new Promise(n=>{bN=n});import{Float32BufferAttribute as ib,Sphere as vN}from"three";var Ee,Aa;nb.then(n=>Ee=n);function SN(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}=Sf(n.getAttribute("position"),o),s;if(r&&e){let{indices:l,verticesPerFace:c}=wf(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 ab(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=Ee._malloc(o);return(Number.isInteger(n[0])?new Uint32Array(Ee.HEAPU32.buffer,i,r):new Float32Array(Ee.HEAPF32.buffer,i,r)).set(n,0),i}function sb(n){switch(n){case 0:return Ee.OP.UNION;case 1:return Ee.OP.INTERSECTION;case 2:return Ee.OP.A_MINUS_B;case 3:return Ee.OP.B_MINUS_A;case 4:return Ee.OP.SYMMETRIC_DIFFERENCE;case 5:return Ee.OP.ALL;default:throw new Error("Unknown boolean operation "+n)}}function wN(n,r){Aa===void 0&&(Aa=Ee.init_csg());let e=ab(n),t=Ee.csg_calc_topological(Aa,e,n.length,sb(r));Ee._free(e);let o=6,i=Ee.HEAPU32.subarray(t>>2,(t>>2)+o),a=i.subarray(3,3+3),s=0,l=Ee.HEAPU32[i[s]>>2],c=new Float32Array(Ee.HEAPF32.subarray(l>>2,(l>>2)+a[s]));s++;let u=Ee.HEAPU32[i[s]>>2],p=new Uint32Array(Ee.HEAPU32.subarray(u>>2,(u>>2)+a[s]));s++;let d=Ee.HEAPU32[i[s]>>2],h=new Uint8Array(Ee.HEAPU32.subarray(d>>2,(d>>2)+a[s]));return Ee.free_mesh_data(t),{positions:c,indices:p,verticesPerFace:h}}function PN(n,r,e,t){Aa===void 0&&(Aa=Ee.init_csg());let o=ab(n),i=Ee.csg_calc(Aa,o,n.length,t,sb(r));Ee._free(o);let a=5,s=Ee.HEAPU32.subarray(i>>2,(i>>2)+a),l=s.subarray(2,2+3),c=0,u=Ee.HEAPU32[s[c]>>2],p=Ee.HEAPF32.subarray(u>>2,(u>>2)+l[c]);c++;let d=Ee.HEAPU32[s[c]>>2],h=Ee.HEAPF32.subarray(d>>2,(d>>2)+l[c]);c++;let f=l[c];e.setAttribute("position",new ib(p,3)),e.setAttribute("normal",new ib(h,3));let m=Ee.HEAPF32.subarray((i>>2)+5,(i>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new vN),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},Ee.free_mesh_data(i),f}function ON(n,r,e){if(Ee===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,P)=>v+P,0)+i);for(let v=0,P=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[P++]}}else({positions:t,faceIndices:o,nFaces:i}=SN(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=Ee._malloc(u),f=new Float32Array(Ee.HEAPF32.buffer,h,l),m=new Uint32Array(Ee.HEAPU32.buffer,h+p,c);f.set(t,0),m.set(o,0);let y=Ee.get_csg_mesh(h,a,h+p,s,i);return Ee._free(h),y}function CN(n){return Ee.has_open_edges(n)}function TN(n,r){Ee.transform_csg_mesh(n,r.elements)}function AN(n){Ee.free_csg_mesh(n)}var MN={ConeGeometry:jx,CubeGeometry:Fx,CylinderGeometry:zx,DodecahedronGeometry:Ux,EllipseGeometry:va,HelixGeometry:w0,IcosahedronGeometry:P0,LatheGeometry:O0,NonParametricGeometry:B0,PolygonGeometry:fu,PyramidGeometry:L0,RectangleGeometry:Oa,SphereGeometry:V0,PlaneGeometry:G0,BackdropGeometry:z0,StarGeometry:hu,TextFrameGeometry:j0,TorusGeometry:F0,TorusKnotGeometry:U0,TriangleGeometry:k0,PathGeometry:$0,VectorGeometry:Jt},hf=n=>MN[n.type].create(n);function Ma(n){return n!==null&&"booleanOp"in n}var Ia=class extends pa(NN){constructor(){super(...arguments);this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new IN}updateVisible(e){super.updateVisible(e),this.visible=!Ma(this.parent)&&this.visible,Ma(this.parent)&&this.parent.invalidateDownstreamBooleanData()}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(br.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),Ma(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)e instanceof Ia&&(e.freeBooleanPointer(),Ma(e)&&e.invalidateUpstreamBooleanData())}updateTransformState(e,t){let o=super.updateTransformState(e,t);return o&&Ma(this.parent)&&this.invalidateDownstreamBooleanData(!0),o}onVariableUpdate(e=!1){super.onVariableUpdate(e),Ma(this.parent)&&this.invalidateDownstreamBooleanData(!0)}};var vu=new EN;function Xs(n,r=0,e=n.count,t,o){let i=1/0,a=1/0,s=1/0,l=-1/0,c=-1/0,u=-1/0;for(let p=r;p<e;p++){let d=n.getX(p),h=n.getY(p),f=n.getZ(p);d<i&&(i=d),h<a&&(a=h),f<s&&(s=f),d>l&&(l=d),h>c&&(c=h),f>u&&(u=f)}vu.min.set(i,a,s),vu.max.set(l,c,u),vu.getCenter(t),vu.getSize(o).multiplyScalar(.5)}var BN=new DN,LN=new _N,Ot=class extends Ia{constructor(r,e){super(BN,LN),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?Xs(t,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:t.count,r,e):super.updateEntityBoxSize(r,e)}};import{Box3 as nE,Matrix4 as iE,Sphere as Jb,Vector3 as aE}from"three";import{BufferAttribute as tE,Float32BufferAttribute as Zb,MathUtils as Yf,Vector3 as Xf}from"three";import{ShaderMaterial as D3}from"three";var Lo=class{constructor(r){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};if(Lo.uuidContext===null)throw new Error("plz startContext");Lo.uuidContext===Lo.globalContext?this.uuid="_gid"+Lo.uuidContext.nodeContextUuid++:this.uuid="_uid"+Lo.uuidContext.nodeContextUuid++,this.type=r,this.name=""}static startContext(r){this.uuidContext===null||this.uuidContext===Lo.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}},qe=Lo;qe.globalContext={nodeContextUuid:0},qe.uuidContext=Lo.globalContext;import{CubeReflectionMapping as qN,CubeRefractionMapping as $N,CubeUVReflectionMapping as YN,LinearEncoding as gb,sRGBEncoding as XN}from"three";var Ks=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 Pf=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}},Ct=new Pf;import{Vector2 as lb}from"three";import{MathUtils as RN}from"three";var ge=class extends qe{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=RN.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 $e=class extends ge{constructor(e,t){t=t??{},t.shared=t.shared!==void 0?t.shared:!1;super(e,t);this.readonly=!1}setReadonly(e){return this.readonly=e,this.hashProperties=this.readonly?["value"]:void 0,this}getReadonly(){return this.readonly}generate(e,t,o,i,a,s){o=e.getUUID(o??this.getUUID()),i=i??this.getType(e);let l=e.getNodeData(o);return this.getReadonly()&&this.generateReadonly!==void 0?this.generateReadonly(e,t,o,i,a,s):e.isShader("vertex")?(l.vertex||(l.vertex=e.createVertexUniform(i,this,a,s,this.getLabel())),e.format(l.vertex.name,i,t)):(l.fragment||(l.fragment=e.createFragmentUniform(i,this,a,s,this.getLabel())),e.format(l.fragment.name,i,t))}};var st=class extends $e{constructor(e=0,t){super("v2");this.nodeType="Vector2";this.value=e instanceof lb?e:new lb(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)}};import{Vector3 as cb}from"three";var zt=class extends $e{constructor(e=0,t,o){super("v3");this.nodeType="Vector3";this.value=e instanceof cb?e:new cb(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)}};import{Color as VN}from"three";var Tt=class extends VN{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 er=class extends $e{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof Tt?e:new Tt(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 GN=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,ub=/[a-z_0-9]+/gi,J=class extends ge{constructor(e,t,o,i,a){super(a);this.src="";this.nodeType="Function";this.useKeywords=!0;this.includes=[];this.extensions={};this.keywords={};this.isMethod=a===void 0,this.isInterface=!1,this.parse(e,t,o,i)}getShared(e,t){return!this.isMethod}getType(e){return e.getTypeByFormat(this.type)}getInputByName(e){if(this.inputs){let t=this.inputs.length;for(;t--;)if(this.inputs[t].name===e)return this.inputs[t]}}getIncludeByName(e){if(this.includes){let t=this.includes.length;for(;t--;)if(this.includes[t].name===e)return this.includes[t]}}generate(e,t,o,i,a){let s,l=0,c=this.src;if(this.includes)for(let p=0;p<this.includes.length;p++)e.include(this.includes[p],this);for(let p in this.extensions)e.extensions[p]=!0;let u=[];for(;s=ub.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&&Ct.containsKeyword(h)){let y=this.keywords[h];if(!y){let g=Ct.getKeywordData(h);g.cache&&(y=e.keywords[h]),y=y||Ct.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&&Ct.contains(m)&&e.include(Ct.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=GN.exec(this.src);if(this.inputs=[],a&&a.length==4){this.type=a[1],this.name=a[2];let s=a[3].match(ub);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 zN=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,Of=class extends ge{constructor(e="",t){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||Of.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=zN.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)}},je=Of;je.PI="PI",je.PI2="PI2",je.RECIPROCAL_PI="RECIPROCAL_PI",je.RECIPROCAL_PI2="RECIPROCAL_PI2",je.LOG2="LOG2",je.EPSILON="EPSILON";var jN=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
|
|
5
|
+
)*?)}`,"gim"),FN=new RegExp("s*(w*?)s*(w*?)(=|;)","gim"),Na=class extends ge{constructor(e=""){super();this.inputs=[];this.src="";this.nodeType="Struct";this.parse(e)}getType(e){return e.getTypeByFormat(this.name)}getInputByName(e){let t=this.inputs.length;for(;t--;)if(this.inputs[t].name===e)return this.inputs[t]}generate(e,t,o,i,a){return t==="source"?this.src+";":e.format("( "+this.src+" )",this.getType(e),t)}parse(e=""){this.src=e,this.inputs=[];let t=jN.exec(e);if(t){let o=t[2],i;for(;i=FN.exec(o);)this.inputs.push({type:i[1],name:i[2]});this.name=t[1]}else this.name="";this.type=this.name}};var Ea=class extends ge{constructor(e){super("v2",{shared:!1});this.nodeType="UV";this.index=e??0}generate(e,t){e.requires.uv[this.index]=!0;let o=this.index>0?this.index+1:"",i=e.isShader("vertex")?"uv"+o:"vUv"+o;return e.format(i,this.getType(e),t)}};Ct.addKeyword("uv",function(){return new Ea});Ct.addKeyword("uv2",function(){return new Ea(1)});import{LinearEncoding as UN,sRGBEncoding as kN}from"three";var Qn=class extends ge{constructor(e,t){super("v4");this.nodeType="ColorSpace";this.input=e,this.method=t??Qn.LINEAR_TO_LINEAR,this.hashProperties=["method"]}static getEncodingComponents(e){switch(e){case UN:return["Linear"];case kN:return["sRGB"];default:return[]}}generate(e,t){let o=this.input.build(e,"v4"),i=this.getType(e),a=Qn.Nodes[this.method],s=e.include(a);if(s===Qn.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=Qn.getEncodingComponents(e);this.method="LinearTo"+t[0],this.factor=t[1]}fromDecoding(e){let t=Qn.getEncodingComponents(e);this.method=t[0]+"ToLinear",this.factor=t[1]}},$t=Qn;$t.Nodes={LinearToLinear:new J(["vec4 LinearToLinear( in vec4 value ) {"," return value;","}"].join(`
|
|
6
6
|
`)),sRGBToLinear:new J(["vec4 sRGBToLinear( in vec4 value ) {"," return vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.w );","}"].join(`
|
|
7
7
|
`)),LinearTosRGB:new J(["vec4 LinearTosRGB( in vec4 value ) {"," return vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.w );","}"].join(`
|
|
8
|
-
`))}
|
|
8
|
+
`))},$t.LINEAR_TO_LINEAR="LinearToLinear",$t.SRGB_TO_LINEAR="sRGBToLinear",$t.LINEAR_TO_SRGB="LinearTosRGB";var Ue=class extends J{constructor(e="",t,o,i,a){super(e,a,i,o,t);this.nodeType="Expression"}};import{Texture as HN}from"three";var Yt=class extends $e{constructor(e=new HN,t,o,i){super("v4",{shared:!0});this.nodeType="Texture";this.value=e,this.uv=t??new Ea,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 $t(new Ue("",u)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(l),l=this.colorSpace.build(e,u),e.removeContext(),e.format(l,u,t)}};var se=class extends $e{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 Qs=class extends ge{constructor(e,t){super();this.inputs=[];this.nodeType="FunctionCall";this.value=e,this.inputs=t??[]}getFunction(){return this.value}getType(e){return this.value.getType(e)}generate(e,t,o,i,a){i=this.getType(e);let s=this.value,l=s.build(e,t)+"( ",c=[];if(s.inputs){for(let u=0;u<s.inputs.length;u++){let p=s.inputs[u],d=this.inputs[u]||this.inputs[p.name];c.push(d.build(e,e.getTypeByFormat(p.type)))}l+=c.join(", ")+" )"}return e.format(l,i,t)}};var Cf=class extends ge{constructor(e,t,o=Cf.ADD){super();this.nodeType="Operator";this.type=e.type,this.a=e,this.b=t,this.op=o}getType(e){let t=this.a.getType(e),o=this.b.getType(e);return e.isTypeMatrix(t)?"v4":e.getTypeLength(o)>e.getTypeLength(t)?o:t}generate(e,t){let o=this.getType(e);this.type=o;let i=this.a.build(e,o),a=this.b.build(e,o);return e.format("( "+i+" "+this.op+" "+a+" )",o,t)}},_t=Cf;_t.ADD="+",_t.SUB="-",_t.MUL="*",_t.DIV="/";var Ye=class extends ge{constructor(e,t=Ye.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 Ye.MIX:case Ye.CLAMP:case Ye.REFRACT:case Ye.SMOOTHSTEP:case Ye.FACEFORWARD:return 3;case Ye.MIN:case Ye.MAX:case Ye.MOD:case Ye.STEP:case Ye.REFLECT:case Ye.DISTANCE:case Ye.DOT:case Ye.CROSS:case Ye.POW:return 2;default:return 1}}getInputType(e){let 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 Ye.LENGTH:case Ye.DISTANCE:case Ye.DOT:return"f";case Ye.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 Ye.NEGATE:return e.format("( -"+this.a.build(e,u)+" )",u,t);case Ye.INVERT:return e.format("( 1.0 - "+this.a.build(e,u)+" )",u,t);case Ye.CROSS:o=this.a.build(e,"v3"),i=this.b.build(e,"v3");break;case Ye.STEP:o=this.a.build(e,s===1?"f":u),i=this.b.build(e,u);break;case Ye.MIN:case Ye.MAX:case Ye.MOD:o=this.a.build(e,u),i=this.b.build(e,l===1?"f":u);break;case Ye.REFRACT:o=this.a.build(e,u),i=this.b.build(e,u),a=this.c.build(e,"f");break;case Ye.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)}},Oe=Ye;Oe.RAD="radians",Oe.DEG="degrees",Oe.EXP="exp",Oe.EXP2="exp2",Oe.LOG="log",Oe.LOG2="log2",Oe.SQRT="sqrt",Oe.INV_SQRT="inversesqrt",Oe.FLOOR="floor",Oe.CEIL="ceil",Oe.NORMALIZE="normalize",Oe.FRACT="fract",Oe.SATURATE="saturate",Oe.SIN="sin",Oe.COS="cos",Oe.TAN="tan",Oe.ASIN="asin",Oe.ACOS="acos",Oe.ARCTAN="atan",Oe.ABS="abs",Oe.SIGN="sign",Oe.LENGTH="length",Oe.NEGATE="negate",Oe.INVERT="invert",Oe.MIN="min",Oe.MAX="max",Oe.MOD="mod",Oe.STEP="step",Oe.REFLECT="reflect",Oe.DISTANCE="distance",Oe.DOT="dot",Oe.CROSS="cross",Oe.POW="pow",Oe.MIX="mix",Oe.CLAMP="clamp",Oe.REFRACT="refract",Oe.SMOOTHSTEP="smoothstep",Oe.FACEFORWARD="faceforward";var Da=class extends ge{constructor(e,t,o){super("v4");this.nodeType="TextureCubeUV";this.value=e,this.uv=t,this.bias=o}bilinearCubeUV(e,t,o,i){let a=new Qs(Da.Nodes.bilinearCubeUV,[t,o,i]);this.colorSpaceTL=this.colorSpaceTL??new $t(new Ue("","v4")),this.colorSpaceTL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTL.input.parse(a.build(e)+".tl"),this.colorSpaceTR=this.colorSpaceTR??new $t(new Ue("","v4")),this.colorSpaceTR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTR.input.parse(a.build(e)+".tr"),this.colorSpaceBL=this.colorSpaceBL??new $t(new Ue("","v4")),this.colorSpaceBL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBL.input.parse(a.build(e)+".bl"),this.colorSpaceBR=this.colorSpaceBR??new $t(new Ue("","v4")),this.colorSpaceBR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBR.input.parse(a.build(e)+".br");let s={include:e.isShader("vertex"),ignoreCache:!0};e.addContext(s),this.colorSpaceTLExp=new Ue(this.colorSpaceTL.build(e,"v4"),"v4"),this.colorSpaceTRExp=new Ue(this.colorSpaceTR.build(e,"v4"),"v4"),this.colorSpaceBLExp=new Ue(this.colorSpaceBL.build(e,"v4"),"v4"),this.colorSpaceBRExp=new Ue(this.colorSpaceBR.build(e,"v4"),"v4"),e.removeContext();let l=new Ue("mix( mix( cubeUV_TL, cubeUV_TR, cubeUV.f.x ), mix( cubeUV_BL, cubeUV_BR, cubeUV.f.x ), cubeUV.f.y )","v4");return l.keywords.cubeUV_TL=this.colorSpaceTLExp,l.keywords.cubeUV_TR=this.colorSpaceTRExp,l.keywords.cubeUV_BL=this.colorSpaceBLExp,l.keywords.cubeUV_BR=this.colorSpaceBRExp,l.keywords.cubeUV=a,l}generate(e,t){if(e.isShader("fragment")){let o=this.uv,i=this.bias||e.context.roughness,a=new Qs(Da.Nodes.roughnessToMip,[i]),s=new Oe(a,Da.Nodes.m0,Da.Nodes.cubeUV_maxMipLevel,Oe.CLAMP),l=new Oe(s,Oe.FLOOR),c=new Oe(s,Oe.FRACT),u=this.bilinearCubeUV(e,this.value,o,l),p=this.bilinearCubeUV(e,this.value,o,new _t(l,new se(1).setReadonly(!0),_t.ADD)),d=new Oe(u,p,c,Oe.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)}},_a=Da;_a.Nodes=function(){let e=new Na(`struct TextureCubeUVData {
|
|
9
9
|
vec4 tl;
|
|
10
10
|
vec4 tr;
|
|
11
11
|
vec4 br;
|
|
@@ -70,7 +70,7 @@ var x1=Object.create;var Al=Object.defineProperty;var b1=Object.getOwnPropertyDe
|
|
|
70
70
|
uv.x -= texelSize;
|
|
71
71
|
vec4 bl = texture2D(envMap, uv);
|
|
72
72
|
return TextureCubeUVData( tl, tr, br, bl, f );
|
|
73
|
-
}`,[e,s,l,t,o,i,a]);c.useKeywords=!1;let u=new je("float r0 1.0",!0),p=new je("float v0 0.339",!0),d=new je("float m0 -2.0",!0),h=new je("float r1 0.8",!0),f=new je("float v1 0.276",!0),m=new je("float m1 -1.0",!0),y=new je("float r4 0.4",!0),g=new je("float v4 0.046",!0),v=new je("float m4 2.0",!0),P=new je("float r5 0.305",!0),O=new je("float v5 0.016",!0),S=new je("float m5 3.0",!0),
|
|
73
|
+
}`,[e,s,l,t,o,i,a]);c.useKeywords=!1;let u=new je("float r0 1.0",!0),p=new je("float v0 0.339",!0),d=new je("float m0 -2.0",!0),h=new je("float r1 0.8",!0),f=new je("float v1 0.276",!0),m=new je("float m1 -1.0",!0),y=new je("float r4 0.4",!0),g=new je("float v4 0.046",!0),v=new je("float m4 2.0",!0),P=new je("float r5 0.305",!0),O=new je("float v5 0.016",!0),S=new je("float m5 3.0",!0),C=new je("float r6 0.21",!0),A=new je("float v6 0.0038",!0),x=new je("float m6 4.0",!0),E=[u,p,d,h,f,m,y,g,v,P,O,S,C,A,x],N=new J(`float roughnessToMip(float roughness) {
|
|
74
74
|
float mip = 0.0;
|
|
75
75
|
if (roughness >= r1) {
|
|
76
76
|
mip = (r0 - roughness) * (m1 - m0) / (r0 - r1) + m0;
|
|
@@ -84,7 +84,7 @@ var x1=Object.create;var Al=Object.defineProperty;var b1=Object.getOwnPropertyDe
|
|
|
84
84
|
mip = -2.0 * log2(1.16 * roughness);// 1.16 = 1.79^0.25
|
|
85
85
|
}
|
|
86
86
|
return mip;
|
|
87
|
-
}`,E);return{bilinearCubeUV:c,roughnessToMip:N,m0:d,cubeUV_maxMipLevel:t}}();var
|
|
87
|
+
}`,E);return{bilinearCubeUV:c,roughnessToMip:N,m0:d,cubeUV_maxMipLevel:t}}();var Zn=class extends ge{constructor(e){super("v3");this.nodeType="Normal";this.scope=e??Zn.VIEW}getShared(){return this.scope===Zn.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 Zn.VIEW:e.isShader("vertex")?s="transformedNormal":s="geometryNormal";break;case Zn.LOCAL:e.isShader("vertex")?s="objectNormal":(e.requires.normal=!0,s="vObjectNormal");break;case Zn.WORLD:e.isShader("vertex")?s="inverseTransformDirection( transformedNormal, viewMatrix ).xyz":(e.requires.worldNormal=!0,s="vWNormal");break}return e.format(s,this.getType(e),t)}},Bt=Zn;Bt.LOCAL="local",Bt.WORLD="world",Bt.VIEW="view",Bt.NORMAL="normal";Ct.addKeyword("viewNormal",function(){return new Bt(Bt.VIEW)});Ct.addKeyword("localNormal",function(){return new Bt(Bt.NORMAL)});Ct.addKeyword("worldNormal",function(){return new Bt(Bt.WORLD)});var ao=class extends ge{constructor(e){super("v3");this.nodeType="Position";this.scope=e??ao.LOCAL}getType(){switch(this.scope){case ao.PROJECTION:return"v4"}return this.type}getShader(){switch(this.scope){case ao.LOCAL:case ao.WORLD:return!1}return!0}generate(e,t,o,i,a){let s;switch(this.scope){case ao.LOCAL:e.isShader("vertex")?s="transformed":(e.requires.position=!0,s="vPosition");break;case ao.WORLD:if(e.isShader("vertex"))return"( modelMatrix * vec4( transformed, 1.0 ) ).xyz";e.requires.worldPosition=!0,s="vWPosition";break;case ao.VIEW:s=e.isShader("vertex")?"-mvPosition.xyz":"vViewPosition";break;case ao.PROJECTION:s=e.isShader("vertex")?"( projectionMatrix * modelViewMatrix * vec4( position, 1.0 ) )":"vec4( 0.0 )";break}return e.format(s,this.getType(),t)}},tr=ao;tr.LOCAL="local",tr.WORLD="world",tr.VIEW="view",tr.PROJECTION="projection";Ct.addKeyword("position",function(){return new tr});Ct.addKeyword("worldPosition",function(){return new tr(tr.WORLD)});Ct.addKeyword("viewPosition",function(){return new tr(tr.VIEW)});var zr=class extends ge{constructor(e){super("v3");this.nodeType="Reflect";this.scope=e??zr.CUBE}getUnique(e){return!e.context.viewNormal}getType(){switch(this.scope){case zr.SPHERE:return"v2"}return this.type}generate(e,t){let o=this.getUnique(e);if(e.isShader("fragment")){let i;switch(this.scope){case zr.VECTOR:{let a=new Bt(Bt.VIEW),s=e.context.roughness,l=a.build(e,"v3"),c=new tr(tr.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 zr.CUBE:{let a=new zr(zr.VECTOR).build(e,"v3"),s="vec3( -"+a+".x, "+a+".yz )";o?(e.addNodeCode(`vec3 reflectCubeVec = ${s};`),i="reflectCubeVec"):i=s;break}case zr.SPHERE:{let s="normalize( ( viewMatrix * vec4( "+new zr(zr.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)}},so=zr;so.CUBE="cube",so.SPHERE="sphere",so.VECTOR="vector";var Su=class extends ge{constructor(e=new Yt,t,o){super("v4");this.nodeType="TextureCube";this.value=e,this.radianceNode=new _a(this.value,t??new so(so.VECTOR),o),this.irradianceNode=new _a(this.value,new Bt(Bt.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))}};import{CubeTexture as WN}from"three";var wu=class extends $e{constructor(e=new WN,t,o){super("v4",{shared:!0});this.nodeType="CubeTexture";this.value=e,this.uv=t??new so,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 $t(new Ue("",c)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(s),s=this.colorSpace.build(e,c),e.removeContext(),e.format(s,c,t)}};var db=`
|
|
88
88
|
uniform int frameIndex;
|
|
89
89
|
uniform vec2 resolution;
|
|
90
90
|
uniform mat4 previousModelViewMatrix;
|
|
@@ -92,7 +92,7 @@ uniform mat4 previousProjectionMatrix;
|
|
|
92
92
|
|
|
93
93
|
varying vec4 vCurrentPosition;
|
|
94
94
|
varying vec4 vPreviousPosition;
|
|
95
|
-
`,
|
|
95
|
+
`,pb=`
|
|
96
96
|
layout(location = 1) out vec4 gVelocity;
|
|
97
97
|
|
|
98
98
|
uniform int frameIndex;
|
|
@@ -134,7 +134,7 @@ float getNoiseInterleavedGradient(vec2 screenPos) {
|
|
|
134
134
|
return fract(magic.z * fract(dot(screenPos, magic.xy)));
|
|
135
135
|
}
|
|
136
136
|
|
|
137
|
-
`,
|
|
137
|
+
`,fb=`
|
|
138
138
|
// TODO: This could be generated CPU side and passed to the shader every frame
|
|
139
139
|
const vec2 haltonSequence[16] = vec2[16](
|
|
140
140
|
vec2( 0.000000,-0.333334),
|
|
@@ -171,7 +171,7 @@ vPreviousPosition.xy += OUTLINE_COMPENSATION;
|
|
|
171
171
|
#endif
|
|
172
172
|
gl_Position = currentPositionJittered;
|
|
173
173
|
|
|
174
|
-
`,
|
|
174
|
+
`,hb=`
|
|
175
175
|
vec2 oldPos = vPreviousPosition.xy;
|
|
176
176
|
oldPos /= vPreviousPosition.w;
|
|
177
177
|
oldPos.xy = (oldPos.xy+1.)/2.0;
|
|
@@ -186,14 +186,14 @@ vec2 velocity = (newPos - oldPos);
|
|
|
186
186
|
if (gl_FragColor.a <= 0.0) discard;
|
|
187
187
|
|
|
188
188
|
gVelocity = vec4(velocity, 0.0, 1.0);
|
|
189
|
-
`,
|
|
189
|
+
`,mb=`
|
|
190
190
|
layout(location = 1) out vec4 gVelocity;
|
|
191
|
-
`,
|
|
191
|
+
`,yb=`
|
|
192
192
|
// Discard fully transparent pixels
|
|
193
193
|
if (gl_FragColor.a <= 0.0) discard;
|
|
194
194
|
|
|
195
195
|
gVelocity = vec4(0.0, 0.0, 0.0, 1.0);
|
|
196
|
-
`;var
|
|
196
|
+
`;var xb=["x","y","z","w"],KN=["float","vec2","vec3","vec4"],QN={float:"f",vec2:"v2",vec3:"v3",vec4:"v4",mat4:"v4",int:"i",bool:"b","float[]":"f[]","vec4[]":"v4[]"},ZN={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[]"},Ba=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+`
|
|
197
197
|
`);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",`
|
|
198
198
|
// NOTE: Include Spline's blending modes. This could be part of BlendNode
|
|
199
199
|
#define SPE_BLENDING_NORMAL 0
|
|
@@ -231,20 +231,20 @@ layout(location = 1) out vec4 gVelocity;
|
|
|
231
231
|
`),fragment:["float accumAlpha = 0.0;",`void accumulateAlpha(float alpha) {
|
|
232
232
|
accumAlpha += (1.0 - accumAlpha) * alpha;
|
|
233
233
|
}`,""].join(`
|
|
234
|
-
`)},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(
|
|
234
|
+
`)},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(db),this.addFragmentParsCode(pb),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(fb),this.addFragmentFinalCode(hb)),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+`
|
|
235
235
|
`}addVertexNodeCode(r){this.addNodeCode(r,"vertex")}addFragmentNodeCode(r){this.addNodeCode(r,"fragment")}addNodeCode(r,e){this.nodeCode[e??this.shader]+=r+`
|
|
236
236
|
`}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+`
|
|
237
237
|
`}addVertexParsCode(r){this.addParsCode(r,"vertex")}addFragmentParsCode(r){this.addParsCode(r,"fragment")}addParsCode(r,e){this.parsCode[e??this.shader]+=r+`
|
|
238
238
|
`}addVaryCode(r){this.addVertexParsCode(r),this.addFragmentParsCode(r)}isCache(r){return this.caches.indexOf(r)!==-1}isSlot(r){return this.slots.indexOf(r)!==-1}define(r,e){this.defines[r]=e===void 0?1:e}require(r){this.requires[r]=!0}isDefined(r){return this.defines[r]!==void 0}getVar(r,e,t,o="varying",i="V",a=""){let s=this.getVars(o),l=s[r];if(!l){let c=s.length;l={name:t||"node"+i+c+(a?"_"+a:""),type:e},s.push(l),s[r]=l}return l}getTempVar(r,e,t,o){return this.getVar(r,e,t,this.shader,"T",o)}getAttribute(r,e){if(!this.attributes[r]){let t=this.getVar(r,e);this.addVertexParsCode("attribute "+e+" "+r+";"),this.addVertexFinalCode(t.name+" = "+r+";"),this.attributes[r]={varying:t,name:r,type:e}}return this.attributes[r]}getCode(r){return[this.prefixCode,this.parsCode[r],this.getVarListCode(this.getVars("varying"),"varying"),this.getVarListCode(this.inputs.uniforms[r],"uniform"),this.getVarListCode(this.inputs.arrayUniforms[r],"uniform"),this.getIncludesCode("consts",r),this.getIncludesCode("structs",r),this.getIncludesCode("functions",r),"void main() {",this.getVarListCode(this.getVars(r)),this.code[r],this.resultCode[r],this.finalCode[r],"}"].join(`
|
|
239
239
|
`)}getVarListCode(r,e){e=e??"";let t="";for(let o=0,i=r.length;o<i;++o){let a=r[o],s=a.type,l=a.name,c=a.size,u=this.getFormatByType(s);if(u===void 0)throw new Error("Node pars "+u+" not found.");u.includes("[]")?t+=e+" "+u.substring(0,u.length-2)+" "+l+`[${c}];
|
|
240
240
|
`:t+=e+" "+u+" "+l+`;
|
|
241
|
-
`}return t}getVars(r){return this.inputs.vars[r??this.shader]}getNodeData(r){let e=r instanceof qe?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 Ks({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 Ks({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"?Ct.get(r):r,this.context.include===!1)return r.name;r instanceof J?o=this.includes.functions:r instanceof je?o=this.includes.consts:r instanceof Na&&(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
|
|
241
|
+
`}return t}getVars(r){return this.inputs.vars[r??this.shader]}getNodeData(r){let e=r instanceof qe?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 Ks({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 Ks({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"?Ct.get(r):r,this.context.include===!1)return r.name;r instanceof J?o=this.includes.functions:r instanceof je?o=this.includes.consts:r instanceof Na&&(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 KN[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 qN:case $N:return new wu(t);case YN:return new Su(new Yt(t));default:return new Yt(t)}else{if(t.isVector2)return new st(t);if(t.isVector3)return new zt(t);if(t.isVector4)return new er(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 QN[r]||r}getFormatByType(r){return ZN[r]||r}getUUID(r,e){return e=e!==void 0?e:!0,e&&this.cache&&(r=this.cache+"-"+r),r}getElementByIndex(r){return xb[r]}getIndexByElement(r){return xb.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=gb,e===gb&&this.context.gamma&&(e=XN),e}};import{MathUtils as M3,Vector2 as kr,Vector3 as uo,Vector4 as Qa}from"three";var He=class extends $e{constructor(e=0,t,o,i){super("c");this.nodeType="Color";this.value=e instanceof Tt?e:new Tt(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 Be=class extends $e{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)}};import{UniformsLib as o3,UniformsUtils as n3}from"three";var ft=class extends $e{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 jr=class extends $e{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)}};import{Vector3 as JN}from"three";var yn=class extends $e{};var Pu=class extends yn{constructor(e){super("v3");this.image=e;this._value=new JN}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 Jn=class extends yn{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)}};import{Matrix3 as e3}from"three";var La=class extends $e{constructor(e){super("m3");this.nodeType="Matrix3";this.value=e??new e3}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)}};import{Matrix4 as t3}from"three";var jt=class extends $e{constructor(e){super("m4");this.nodeType="Matrix4";this.value=e??new t3}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)}};import{MathUtils as r3,Matrix3 as vb}from"three";function bb(n,r,e,t=0){n.setUvTransform(e[0],e[1],r[0],r[1],0,0,0).premultiply(new vb().makeRotation(t*r3.DEG2RAD))}var Ou=class extends La{constructor(e,t,o=0){super(new vb);this.repeat=e;this.offset=t;this.rotation=o;bb(this.value,e,t,o)}updateMatrix(){bb(this.value,this.repeat,this.offset,this.rotation)}};import{Vector4 as Sb}from"three";var Fr=class extends $e{constructor(e=1,t){super("v4[]");this.nodeType="Vector4Array";this.size=e,this.value=Array.isArray(t)?t:t instanceof Sb?new Array(e).fill(t):new Array(e).fill(new Sb(0))}};var Ra=class extends ge{constructor(e,t,o,i){super("v3");this.nodeType="Blend";this.a=e,this.b=t,this.alpha=o,this.mode=i}generate(e,t){if(e.isShader("fragment")){let o=[];return o.push(this.a.build(e,"c")),o.push(this.b.build(e,"c")),o.push(this.alpha.build(e,"f")),o.push(this.mode.build(e,"i")),e.format("spe_blend("+o.join(",")+")",this.getType(e),t)}else return console.warn("BlendNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}};var Tf=class extends ge{constructor(e,t){super("v3");this.nodeType="CustomColor";this.color=e,this.alpha=t,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.isShader("fragment")){let o=e.include(Tf.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)}},ei=Tf;ei.Nodes=function(){return{customColor:new J(`vec3 customColor(vec3 color, float mask, float alpha, out float calpha) {
|
|
242
242
|
float lalpha = alpha * mask;
|
|
243
243
|
calpha = lalpha / clamp(lalpha + accumAlpha, 0.00001, 1.0);
|
|
244
244
|
accumAlpha += (1.0 - accumAlpha) * lalpha;
|
|
245
245
|
|
|
246
246
|
return color;
|
|
247
|
-
}`)}}();var
|
|
247
|
+
}`)}}();var Af=class extends ge{constructor(e,t){super("v3");this.nodeType="CustomNormal";this.cnormal=e,this.alpha=t,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.isShader("fragment")){let o=e.include(Af.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)}},Va=Af;Va.Nodes=function(){return{customNormal:new J(`vec3 customNormal(vec3 cnormal, vec3 norm, float mask, float alpha, out float calpha) {
|
|
248
248
|
vec3 normal = packNormalToRGB( norm ).rgb;
|
|
249
249
|
normal *= step( vec3(0.5), cnormal );
|
|
250
250
|
|
|
@@ -277,7 +277,7 @@ layout(location = 1) out vec4 gVelocity;
|
|
|
277
277
|
accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
|
|
278
278
|
|
|
279
279
|
return col;
|
|
280
|
-
}`);i=e.include(c);break;case 4:i=e.include(Ga.Nodes.triplanar);break;default:i=e.include(Ga.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)}},
|
|
280
|
+
}`);i=e.include(c);break;case 4:i=e.include(Ga.Nodes.triplanar);break;default:i=e.include(Ga.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)}},gn=Ga;gn.Nodes=function(){let e=new J(`
|
|
281
281
|
vec3 cylindricalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float blending, bool isMask, float mask, float alpha, int mode, out float calpha, out vec2 writeUv) {
|
|
282
282
|
vec3 posN = normalize(position);
|
|
283
283
|
float u = 0.5 + atan(posN.z, posN.x) / (2.*3.1415);
|
|
@@ -494,7 +494,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
494
494
|
accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
|
|
495
495
|
|
|
496
496
|
return color;
|
|
497
|
-
}`),i=e.include(o),a=[];return a.push(this.color.build(e,"c")),a.push(this.bias.build(e,"f")),a.push(this.scale.build(e,"f")),a.push(this.intensity.build(e,"f")),a.push(this.factor.build(e,"f")),a.push(this.isMask.build(e,"b")),a.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),a.push(this.alpha.build(e,"f")),a.push(this.mode.build(e,"i")),a.push(this.calpha),e.format(i+"("+a.join(",")+")",this.getType(e),t)}else return console.warn("FresnelNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}};var
|
|
497
|
+
}`),i=e.include(o),a=[];return a.push(this.color.build(e,"c")),a.push(this.bias.build(e,"f")),a.push(this.scale.build(e,"f")),a.push(this.intensity.build(e,"f")),a.push(this.factor.build(e,"f")),a.push(this.isMask.build(e,"b")),a.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),a.push(this.alpha.build(e,"f")),a.push(this.mode.build(e,"i")),a.push(this.calpha),e.format(i+"("+a.join(",")+")",this.getType(e),t)}else return console.warn("FresnelNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}};var Mf=class extends ge{constructor(e,t,o,i,a,s,l,c,u){super("v3");this.nodeType="Gradient";this.gradientType=e,this.smooth=t,this.colors=o,this.steps=i,this.offset=a,this.morph=s,this.angle=l,this.isMask=u,this.alpha=c,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.isShader("fragment")){e.define("GRAD_MAX",10),e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(Mf.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)}},Fa=Mf;Fa.Nodes=function(){return{gradient:new J(`vec3 gradient(int gradientType, bool smoothed, vec4 colors[GRAD_MAX], float steps[GRAD_MAX], vec2 offset, vec2 morph, float angle, bool isMask, float mask, float alpha, out float calpha) {
|
|
498
498
|
vec4 color = colors[0];
|
|
499
499
|
vec2 m = morph / vUv.xy;
|
|
500
500
|
vec2 rot = vec2( 0.5 + m.x, m.y );
|
|
@@ -536,7 +536,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
536
536
|
accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
|
|
537
537
|
|
|
538
538
|
return color.xyz;
|
|
539
|
-
}`)}}();var
|
|
539
|
+
}`)}}();var If=class extends ge{constructor(e,t,o,i,a){super("v3");this.nodeType="Matcap";this.texture=e,this.isMask=i,this.alpha=t,this.mode=o,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`,this.rotation=a}generate(e,t){if(e.isShader("fragment")){e.addFragmentVariable(this.calpha,"float");let o=e.include(If.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)}},Ua=If;Ua.Nodes=function(){return{matcap:new J(`vec3 matcap(sampler2D matcapTex, vec3 normal, bool isMask, float mask, float alpha, int mode, out float calpha, float rotation) {
|
|
540
540
|
vec3 viewDir = normalize( vViewPosition );
|
|
541
541
|
vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );
|
|
542
542
|
vec3 y = cross( viewDir, x );
|
|
@@ -550,7 +550,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
550
550
|
accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
|
|
551
551
|
|
|
552
552
|
return matcapColor.rgb;
|
|
553
|
-
}`)}}();var Js=(a=>(a.SIMPLEX="simplex3d",a.SIMPLEX_FRACTAL="simplex3dFractal",a.ASHIMA="simplexAshima",a.FBM="fbm",a.PERLIN="perlin",a.VORONOI="voronoi",a))(Js||{}),
|
|
553
|
+
}`)}}();var Js=(a=>(a.SIMPLEX="simplex3d",a.SIMPLEX_FRACTAL="simplex3dFractal",a.ASHIMA="simplexAshima",a.FBM="fbm",a.PERLIN="perlin",a.VORONOI="voronoi",a))(Js||{}),Lt=function(){let r=new J(`vec3 random3(vec3 c) {
|
|
554
554
|
float j = 4096.0*sin(dot(c,vec3(17.0, 59.4, 15.0)));
|
|
555
555
|
vec3 r;
|
|
556
556
|
r.z = fract(512.0*j);
|
|
@@ -940,7 +940,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
940
940
|
accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
|
|
941
941
|
|
|
942
942
|
return clamp(color, 0.0, 1.0).rgb;
|
|
943
|
-
}`,[
|
|
943
|
+
}`,[Lt.simplex,Lt.simplexFractal,Lt.simplexAshima,Lt.fbm,Lt.perlin,Lt.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)}};ka.numOctaves=5;var Nf=class extends ge{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(`
|
|
944
944
|
vID = randomColor.r;
|
|
945
945
|
vec2 ${o}_offset = vec2(0.0);
|
|
946
946
|
if (${s}) {
|
|
@@ -955,7 +955,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
955
955
|
// if this offset is the biggest of all the potential offsets
|
|
956
956
|
gl_Position = ${o}_clipPosition;
|
|
957
957
|
}
|
|
958
|
-
`)}if(e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let i=e.include(
|
|
958
|
+
`)}if(e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let i=e.include(Nf.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."),""}},Ha=Nf;Ha.Nodes=function(){let e=new J(`
|
|
959
959
|
float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outlineWidth, float pixelRatio)
|
|
960
960
|
{
|
|
961
961
|
vec2 halton = haltonSequence[frameIndex];
|
|
@@ -1104,7 +1104,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1104
1104
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
1105
1105
|
|
|
1106
1106
|
return result;
|
|
1107
|
-
}`,[e])}}();var
|
|
1107
|
+
}`,[e])}}();var lo=class extends ge{constructor(e,t,o,i,a,s,l,c,u,p,d,h,f,m,y,g,v,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=h,this.rotation=f,this.vertical=m,this.horizontal=y,this.sides=g,this.isMask=P,this.alpha=v,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.isShader("fragment")){e.require("position"),e.require("uv"),e.requires.uv=[!0],e.require("normal"),e.requires.normal=!0,e.addFragmentVariable(this.calpha,"float");let o;switch(this.style.value){case 0:o="circle";break;case 1:o="ring";break;case 2:o="polygon";break;case 3:o="xcross";break;case 4:o="diamond";break;case 5:o="checkerboard";break;case 6:o="line";break;case 7:o="wave";break;default:o="circle";break}let i=`g${this.uuid.toString().replace(/-/g,"")}`,a=new J(`float hashwithoutsine12(vec2 p)
|
|
1108
1108
|
{
|
|
1109
1109
|
vec3 p3 = fract(vec3(p.xyx) * .1031);
|
|
1110
1110
|
p3 += dot(p3, p3.yzx + 33.33);
|
|
@@ -1190,7 +1190,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1190
1190
|
accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
|
|
1191
1191
|
|
|
1192
1192
|
return clamp(color, 0.0, 1.0).rgb;
|
|
1193
|
-
}`,[s,a,
|
|
1193
|
+
}`,[s,a,lo.DrawFunctions.circle,lo.DrawFunctions.ring,lo.DrawFunctions.polygon,lo.DrawFunctions.cross,lo.DrawFunctions.diamond,lo.DrawFunctions.checkerboard,lo.DrawFunctions.line,lo.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)}},Wa=lo;Wa.DrawFunctions=function(){let e=new J(`float hashwithoutsine12(vec2 p) {
|
|
1194
1194
|
vec3 p3 = fract(vec3(p.xyx) * 0.1031);
|
|
1195
1195
|
p3 += dot(p3, p3.yzx + 33.33);
|
|
1196
1196
|
return fract((p3.x + p3.y) * p3.z);
|
|
@@ -1355,7 +1355,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1355
1355
|
float s = mix(size, size * rand, variation);
|
|
1356
1356
|
|
|
1357
1357
|
return smoothstep(-smoothness, smoothness, distance_estimate - s * 0.5);
|
|
1358
|
-
}`);return{tileAndCenter:t,circle:o,ring:i,polygon:a,cross:s,diamond:l,checkerboard:c,line:u,wave:p}}();var
|
|
1358
|
+
}`);return{tileAndCenter:t,circle:o,ring:i,polygon:a,cross:s,diamond:l,checkerboard:c,line:u,wave:p}}();var Ef=class extends ge{constructor(e,t,o,i,a,s,l,c){super("v3");this.nodeType="Rainbow";this.filmThickness=e,this.movement=t,this.wavelengths=o,this.noiseStrength=i,this.noiseScale=a,this.offset=s,this.isMask=c,this.alpha=l,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.require("vWorldViewDir"),e.require("worldNormal"),e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(Ef.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)}},qa=Ef;qa.Nodes=function(){let e=new J(`vec3 attenuation(vec3 wavelengths, float filmThickness, float movement, float noiseStrength, float noiseScale, vec3 offset) {
|
|
1359
1359
|
vec3 st = position / noiseScale;
|
|
1360
1360
|
vec3 q = vec3(simplex3d(st),
|
|
1361
1361
|
simplex3d(st + vec3(1.0)),
|
|
@@ -1368,7 +1368,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1368
1368
|
float noise = simplex3d(st + r);
|
|
1369
1369
|
|
|
1370
1370
|
return .5 + .5 * cos((((filmThickness + (noise * noiseStrength)) / (vec3(wavelengths.r * 1.0, wavelengths.g * 0.8, wavelengths.b * 0.6) + 1.0)) * dot(normalize(vWorldViewDir + (offset * -0.001)), normalize(vWNormal))) + movement);
|
|
1371
|
-
}`,[
|
|
1371
|
+
}`,[Lt.simplex]);return{rainbow:new J(`vec3 rainbow(float filmThickness, float movement, vec3 wavelengths, float noiseStrength, float noiseScale, vec3 offset, bool isMask, float mask, float alpha, out float calpha) {
|
|
1372
1372
|
vec3 res = clamp(attenuation(wavelengths, filmThickness, movement, noiseStrength, noiseScale, offset), 0.0, 2.0);
|
|
1373
1373
|
|
|
1374
1374
|
float rainbowContribution = clamp(res.r + res.g + res.b, 0.0, 1.0);
|
|
@@ -1378,7 +1378,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1378
1378
|
accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
|
|
1379
1379
|
|
|
1380
1380
|
return res;
|
|
1381
|
-
}`,[e])}}();var
|
|
1381
|
+
}`,[e])}}();var Df=class extends ge{constructor(e,t,o,i,a,s,l,c,u,p){super("v3");this.nodeType="Toon";this.positioning=e,this.colors=t,this.steps=o,this.source=i,this.isWorldSpace=a,this.noiseStrength=s,this.noiseScale=l,this.shadowColor=c,this.offset=u,this.alpha=p,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.require("worldNormal"),e.require("worldPosition"),e.isShader("fragment")){e.define("COLORS_MAX",10),e.addFragmentVariable(this.calpha,"float");let o=e.include(Df.Nodes.toon),i=[];return i.push(this.positioning.build(e,"i")),i.push(this.colors.build(e,"v4[]")),i.push(this.steps.build(e,"f[]")),i.push(this.source.build(e,"v3")),i.push(this.isWorldSpace.build(e,"b")),i.push(this.noiseStrength.build(e,"f")),i.push(this.noiseScale.build(e,"f")),i.push(this.shadowColor.build(e,"v4")),i.push(this.offset.build(e,"v3")),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("ToonNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},$a=Df;$a.Nodes=function(){let e=new J(`float rand(float n) {
|
|
1382
1382
|
return fract(sin(n) * 43758.5453123);
|
|
1383
1383
|
}`),t=new J(`float hash1(float p) {
|
|
1384
1384
|
p = fract(p * 0.011);
|
|
@@ -1614,7 +1614,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1614
1614
|
|
|
1615
1615
|
return color.xyz;
|
|
1616
1616
|
|
|
1617
|
-
}`,[
|
|
1617
|
+
}`,[Lt.simplex,e,o,a])}}();import{Vector2 as Pb}from"three";var wb=function(){return{textureBicubic:new J(`float w0( float a ) {
|
|
1618
1618
|
return ( 1.0 / 6.0 ) * ( a * ( a * ( - a + 3.0 ) - 3.0 ) + 1.0 );
|
|
1619
1619
|
}
|
|
1620
1620
|
|
|
@@ -1678,7 +1678,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1678
1678
|
vec4 fSample = bicubic( sampler, uv, vec4( fLodSizeInv, fLodSize ), floor( lod ) );
|
|
1679
1679
|
vec4 cSample = bicubic( sampler, uv, vec4( cLodSizeInv, cLodSize ), ceil( lod ) );
|
|
1680
1680
|
return mix( fSample, cSample, fract( lod ) );
|
|
1681
|
-
}`)}}();function
|
|
1681
|
+
}`)}}();function Ob(n,r){return n>=r?new Pb(r/n,1):new Pb(1,n/r)}var _f=class extends ge{constructor(e,t,o,i,a,s,l,c){super("v3");this.nodeType="Transmission";this.thickness=e,this.ior=t,this.roughness=o,this.transmissionSamplerSize=i,this.transmissionSamplerMap=a,this.transmissionDepthMap=s,this.aspectRatio=l,this.alpha=c,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.extensions.shaderTextureLOD=!0,e.extensions.derivatives=!0,e.isShader("fragment")){e.define("NUM_SAMPLES",6),e.define("BLUR_SLOD",Math.pow(2,Ae.transmissionLod.value)),e.require("worldPosition"),e.requires.worldNormal=!0,e.requires.modelMatrix=!0,e.requires.projectionMatrix=!0,e.addFragmentVariable(this.calpha,"float");let o=e.include(_f.Nodes.transmission),i=[];return i.push(this.thickness.build(e,"f")),i.push(this.ior.build(e,"f")),i.push(this.roughness.build(e,"f")),i.push(this.transmissionSamplerSize.build(e,"v2")),i.push(this.transmissionSamplerMap.getTexture(e,"t")),i.push(this.transmissionDepthMap.getTexture(e,"t")),i.push(this.aspectRatio.build(e,"v2")),i.push("normal"),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("TransmissionNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},Ya=_f;Ya.Nodes=function(){let e=new J(`vec3 blur(sampler2D sp, vec2 U, vec2 scale, float lod, sampler2D dm, vec2 unrefractedU, vec2 aspectRatio) {
|
|
1682
1682
|
// Slightly modified version of this:
|
|
1683
1683
|
// https://www.shadertoy.com/view/ltScRG
|
|
1684
1684
|
|
|
@@ -1738,7 +1738,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1738
1738
|
float lod = applyIorToRoughness(roughness, ior);
|
|
1739
1739
|
return blur(transmissionSamplerMap, fragCoord, vec2(lod), min(framebufferLod / 5.5, 8.5), transmissionDepthMap, unrefractedCoords, aspectRatio);
|
|
1740
1740
|
#endif
|
|
1741
|
-
}`,[
|
|
1741
|
+
}`,[wb.textureBicubic,o,e]),a=new J(`vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat4 modelMatrix, mat4 viewMatrix, mat4 projMatrix, float ior, float thickness, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 aspectRatio ) {
|
|
1742
1742
|
vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );
|
|
1743
1743
|
vec3 refractedRayExit = position + transmissionRay;
|
|
1744
1744
|
|
|
@@ -1769,7 +1769,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1769
1769
|
accumAlpha += ( 1.0 - accumAlpha ) * alpha;
|
|
1770
1770
|
|
|
1771
1771
|
return transmission;
|
|
1772
|
-
}`,[a])}}();var
|
|
1772
|
+
}`,[a])}}();var Bf=(e=>(e.NOISE="noise",e.MAP="map",e))(Bf||{}),Lf=class extends ge{constructor(e,t,o,i,a,s,l,c,u,p,d){super("v3");this.displacementTypeIndex=new Be(0);this.nodeType="VertexDisplacement";this.intensity=e,this.movementOrTexture=t,Object.values(Bf)[this.displacementTypeIndex.value]==="map"&&(this.mat=new La(this.movementOrTexture.value.matrix)),this.cropOrOffset=o,this.scale=p,this.noiseFunctionIndex=d,this.voronoiStyle=i,this.smoothness=a,this.seed=s,this.highCut=l,this.lowCut=c,this.quality=u}generate(e,t){if(e.isShader("vertex")){e.define("USE_LAYER_DISPLACE");let o,i=[];switch(i.push("displaced_position"),i.push("displaced_normal"),Object.values(Bf)[this.displacementTypeIndex.value]){case"map":{o=e.include(Lf.Nodes.map),i.push(this.movementOrTexture.getTexture(e,"t")),i.push("uv"),i.push(this.cropOrOffset.build(e,"f")),this.mat&&i.push(this.mat.build(e,"mat3"));break}case"noise":{let s=Object.values(Js)[this.noiseFunctionIndex.value],l=new J(`vec3 orthogonal(vec3 v) {
|
|
1773
1773
|
return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
|
|
1774
1774
|
}`),c=s=="voronoi"?`
|
|
1775
1775
|
float v = ${s}((p + offset) * scale * 0.001 + neighbour_offset + (movement * 0.1), voronoiStyle, smoothness, seed, quality);
|
|
@@ -1782,7 +1782,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1782
1782
|
return p + n * ${s}((p + offset) * scale * 0.001 + neighbour_offset + (movement * 0.1)) * intensity;
|
|
1783
1783
|
`,u=new J(`vec3 distorted(vec3 p, vec3 n, float scale, float intensity, vec3 offset, float neighbour_offset, float movement, int voronoiStyle, float smoothness, float seed, float highCut, float lowCut, int quality) {
|
|
1784
1784
|
${c}
|
|
1785
|
-
}`,[
|
|
1785
|
+
}`,[Lt.simplex,Lt.simplexFractal,Lt.simplexAshima,Lt.fbm,Lt.perlin,Lt.voronoi]),p=new J(`vec3 vertexDisplacementNoise(vec3 position, vec3 normal, float scale, vec3 offset, float movement, int voronoiStyle, float smoothness, float seed, float highCut, float lowCut, int quality, float intensity, out vec3 displaced_normal) {
|
|
1786
1786
|
vec3 displaced_position = distorted(position, normal, scale, intensity, offset, neighbor_offset, movement, voronoiStyle, smoothness, seed, highCut, lowCut, quality);
|
|
1787
1787
|
vec3 tangent1 = orthogonal(normal);
|
|
1788
1788
|
vec3 tangent2 = normalize(cross(normal, tangent1));
|
|
@@ -1798,7 +1798,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1798
1798
|
vec3 distorted2 = distorted(nearby2, normal, scale, intensity, offset, neighbor_offset, movement, voronoiStyle, smoothness, seed, highCut, lowCut, quality);
|
|
1799
1799
|
displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
|
|
1800
1800
|
return displaced_position;
|
|
1801
|
-
}`,[u,l]);o=e.include(p),i.push(this.scale.build(e,"f")),i.push(this.cropOrOffset.build(e,"v3")),i.push(this.movementOrTexture.build(e,"f")),i.push(this.voronoiStyle.build(e,"i")),i.push(this.smoothness.build(e,"f")),i.push(this.seed.build(e,"f")),i.push(this.highCut.build(e,"f")),i.push(this.lowCut.build(e,"f")),i.push(this.quality.build(e,"i"));break}}return i.push(this.intensity.build(e,"f")),i.push("displaced_normal"),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("VertexDisplacementNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},Xa=
|
|
1801
|
+
}`,[u,l]);o=e.include(p),i.push(this.scale.build(e,"f")),i.push(this.cropOrOffset.build(e,"v3")),i.push(this.movementOrTexture.build(e,"f")),i.push(this.voronoiStyle.build(e,"i")),i.push(this.smoothness.build(e,"f")),i.push(this.seed.build(e,"f")),i.push(this.highCut.build(e,"f")),i.push(this.lowCut.build(e,"f")),i.push(this.quality.build(e,"i"));break}}return i.push(this.intensity.build(e,"f")),i.push("displaced_normal"),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("VertexDisplacementNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},Xa=Lf;Xa.Nodes=function(){let e=new J(`vec3 orthogonal(vec3 v) {
|
|
1802
1802
|
return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
|
|
1803
1803
|
}`),t=new J(`float displacementMapTexture(sampler2D tex, float crop, vec2 uv, mat3 mat, vec2 offset) {
|
|
1804
1804
|
vec2 uvs = (mat * vec3(uv * 2.0 - 1.0, 1.0) / 2.0 + 0.5).xy + offset;
|
|
@@ -1820,7 +1820,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1820
1820
|
vec3 distorted2 = nearby2 + normal * displacementMapTexture(tex, crop, uv, mat, vec2(neighbor_offset)) * intensity;
|
|
1821
1821
|
displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
|
|
1822
1822
|
return displaced_position;
|
|
1823
|
-
}`,[e,t])}}();var Ae={normalRenderTarget:new
|
|
1823
|
+
}`,[e,t])}}();var Ae={normalRenderTarget:new Yt,normalRenderTargetDepth:new Yt,transmissionRenderTarget:new Yt,aspectRatio:new st,transmissionSize:new st(2048,2048),transmissionRenderTargetDepth:new Yt,aoRenderTarget:new Yt,aoEnabled:new ft,pixelRatioNode:new se(1),resolution:new st,penumbraSize:new jr(5,.5),frameIndex:new Be(0),transmissionLod:new Be(2)};for(let n of Object.values(Ae))n.isRenderGlobal=!0;var Cb={skiaWasmUrl:"https://unpkg.com/@splinetool/ui-wasm@1.9.31/build/ui.wasm"};var Ro=class extends qe{constructor(){super("basic");this.nodeType="Basic";this.color=new He(mt),this.shadingAlpha=new se(1),this.shadingBlend=new Be(0),this.previousModelViewMatrix=new jt,this.previouseProjectionMatrix=new jt}get category(){return"phong"}generate(e){let t;if(e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:Ae.frameIndex}),e.mergeUniform({resolution:Ae.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(n3.merge([o3.fog])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>"].join(`
|
|
1824
1824
|
`));let i=["#include <beginnormal_vertex>",`
|
|
1825
1825
|
#if !defined( USE_LAYER_DISPLACE )
|
|
1826
1826
|
#include <defaultnormal_vertex>
|
|
@@ -1838,9 +1838,9 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1838
1838
|
#include <begin_vertex>
|
|
1839
1839
|
#endif /* !USE_LAYER_DISPLACE */
|
|
1840
1840
|
`];o&&i.push(o.code,o.result?"displaced_position = "+o.result+";":""),i.push("transformed = displaced_position;","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(`
|
|
1841
|
-
`)}else{this.color===void 0&&(this.color=new He(
|
|
1841
|
+
`)}else{this.color===void 0&&(this.color=new He(mt)),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(`
|
|
1842
1842
|
`));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(`
|
|
1843
|
-
`)}return t}};import{UniformsLib as
|
|
1843
|
+
`)}return t}};import{UniformsLib as Tb,UniformsUtils as i3}from"three";var el=class extends qe{constructor(){super("lambert");this.nodeType="Lambert";this.color=new He(mt),this.emissive=new He(0),this.emissiveIntensity=new se(1),this.previousModelViewMatrix=new jt,this.previouseProjectionMatrix=new jt,this.shadingAlpha=new se(1),this.shadingBlend=new Be(0),this.occlusion=new ft(!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:Ae.frameIndex}),e.mergeUniform({resolution:Ae.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(i3.merge([Tb.fog,Tb.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 <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
|
|
1844
1844
|
`));let i=["#include <beginnormal_vertex>",`
|
|
1845
1845
|
#include <skinbase_vertex>
|
|
1846
1846
|
#include <skinnormal_vertex>
|
|
@@ -1935,7 +1935,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1935
1935
|
#pragma unroll_loop_end
|
|
1936
1936
|
#endif
|
|
1937
1937
|
`," #include <shadowmap_vertex>"," #include <fog_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),t=i.join(`
|
|
1938
|
-
`)}else{e.mergeUniform({penumbraSize:Ae.penumbraSize}),e.mergeUniform({frameIndex:Ae.frameIndex}),e.mergeUniform({aoMap:Ae.aoRenderTarget}),e.mergeUniform({aoEnabled:Ae.aoEnabled}),this.color===void 0&&(this.color=new He(
|
|
1938
|
+
`)}else{e.mergeUniform({penumbraSize:Ae.penumbraSize}),e.mergeUniform({frameIndex:Ae.frameIndex}),e.mergeUniform({aoMap:Ae.aoRenderTarget}),e.mergeUniform({aoEnabled:Ae.aoEnabled}),this.color===void 0&&(this.color=new He(mt)),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(`
|
|
1939
1939
|
`));let h=["#include <normal_fragment_begin>",`
|
|
1940
1940
|
// NOTE: gl_FrontFacing alternative using face normal estimation.
|
|
1941
1941
|
vec3 viewdx = dFdx(vViewPosition);
|
|
@@ -1951,7 +1951,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1951
1951
|
outgoingLight *= ao;
|
|
1952
1952
|
}
|
|
1953
1953
|
`),u&&h.push(u.code,`outgoingLight = spe_blend(outgoingLight, ${u.result}, 1.0, SPE_BLENDING_NORMAL);`),p?h.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${p.result} );`):h.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),d&&h.push(`gl_FragColor.a *= ${d.result};`),h.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),t=h.join(`
|
|
1954
|
-
`)}return t}};import{UniformsLib as
|
|
1954
|
+
`)}return t}};import{UniformsLib as Ab,UniformsUtils as a3}from"three";var Vo=function(){let n=new J(`vec2 dHdxy(sampler2D bumpMap, vec2 bumpMapUv, float bumpScale) {
|
|
1955
1955
|
|
|
1956
1956
|
// Gradient of UVs w.r.t. X coordinate (in screen-space)
|
|
1957
1957
|
vec2 dSTdx = dFdx(bumpMapUv);
|
|
@@ -1982,7 +1982,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1982
1982
|
|
|
1983
1983
|
vec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );
|
|
1984
1984
|
return normalize( abs( fDet ) * vN - vGrad );
|
|
1985
|
-
}`);return{dHdxy:n,perturbNormalArb:r}}();var tl=class extends qe{constructor(){super("phong");this.nodeType="Phong";this.color=new He(
|
|
1985
|
+
}`);return{dHdxy:n,perturbNormalArb:r}}();var tl=class extends qe{constructor(){super("phong");this.nodeType="Phong";this.color=new He(mt),this.specular=new He(1118481),this.shininess=new se(30),this.previousModelViewMatrix=new jt,this.previouseProjectionMatrix=new jt,this.shadingAlpha=new se(1),this.shadingBlend=new Be(0),this.occlusion=new ft(!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:Ae.frameIndex}),e.mergeUniform({resolution:Ae.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(a3.merge([Ab.fog,Ab.lights])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <skinning_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
|
|
1986
1986
|
`));let i=["#include <beginnormal_vertex>",`
|
|
1987
1987
|
#include <skinbase_vertex>
|
|
1988
1988
|
#include <skinnormal_vertex>
|
|
@@ -2002,7 +2002,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2002
2002
|
#include <begin_vertex>
|
|
2003
2003
|
#endif
|
|
2004
2004
|
`];o&&i.push(o.code,o.result?"displaced_position = "+o.result+";":""),i.push("transformed = displaced_position;","#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(`
|
|
2005
|
-
`)}else{e.mergeUniform({penumbraSize:Ae.penumbraSize}),e.mergeUniform({frameIndex:Ae.frameIndex}),e.mergeUniform({aoMap:Ae.aoRenderTarget}),e.mergeUniform({aoEnabled:Ae.aoEnabled}),this.color===void 0&&(this.color=new He(
|
|
2005
|
+
`)}else{e.mergeUniform({penumbraSize:Ae.penumbraSize}),e.mergeUniform({frameIndex:Ae.frameIndex}),e.mergeUniform({aoMap:Ae.aoRenderTarget}),e.mergeUniform({aoEnabled:Ae.aoEnabled}),this.color===void 0&&(this.color=new He(mt)),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(`
|
|
2006
2006
|
`));let h=["#include <normal_fragment_begin>",`
|
|
2007
2007
|
// NOTE: gl_FrontFacing alternative using face normal estimation.
|
|
2008
2008
|
vec3 viewdx = dFdx(vViewPosition);
|
|
@@ -2049,7 +2049,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2049
2049
|
outgoingLight *= ao;
|
|
2050
2050
|
}
|
|
2051
2051
|
`),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(`
|
|
2052
|
-
`)}return t}};import{UniformsLib as
|
|
2052
|
+
`)}return t}};import{UniformsLib as Rf,UniformsUtils as s3}from"three";var rl=class extends qe{constructor(){super("standard");this.nodeType="Standard";this.color=new He(mt),this.roughness=new se(.3),this.metalness=new se(0),this.reflectivity=new se(.5),this.previousModelViewMatrix=new jt,this.previouseProjectionMatrix=new jt,this.shadingAlpha=new se(1),this.shadingBlend=new Be(0),this.occlusion=new ft(!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:Ae.frameIndex}),e.mergeUniform({resolution:Ae.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(s3.merge([Rf.fog,Rf.lights])),Rf.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 <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
|
|
2053
2053
|
`));let i=["#include <beginnormal_vertex>",`
|
|
2054
2054
|
#include <skinbase_vertex>
|
|
2055
2055
|
#include <skinnormal_vertex>
|
|
@@ -2069,7 +2069,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2069
2069
|
#include <begin_vertex>
|
|
2070
2070
|
#endif /* !USE_LAYER_DISPLACE */
|
|
2071
2071
|
`];o&&i.push(o.code,o.result?"displaced_position = "+o.result+";":""),i.push("transformed = displaced_position;","#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(`
|
|
2072
|
-
`)}else{e.mergeUniform({penumbraSize:Ae.penumbraSize}),e.mergeUniform({frameIndex:Ae.frameIndex}),e.mergeUniform({aoMap:Ae.aoRenderTarget}),e.mergeUniform({aoEnabled:Ae.aoEnabled});let o={gamma:!0};this.color===void 0&&(this.color=new He(
|
|
2072
|
+
`)}else{e.mergeUniform({penumbraSize:Ae.penumbraSize}),e.mergeUniform({frameIndex:Ae.frameIndex}),e.mergeUniform({aoMap:Ae.aoRenderTarget}),e.mergeUniform({aoEnabled:Ae.aoEnabled});let o={gamma:!0};this.color===void 0&&(this.color=new He(mt)),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(`
|
|
2073
2073
|
`));let m=["#include <clipping_planes_fragment>"," #include <normal_fragment_begin>",`
|
|
2074
2074
|
// NOTE: gl_FrontFacing alternative using face normal estimation.
|
|
2075
2075
|
vec3 viewdx = dFdx(vViewPosition);
|
|
@@ -2142,7 +2142,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2142
2142
|
outgoingLight *= ao;
|
|
2143
2143
|
}
|
|
2144
2144
|
`),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(`
|
|
2145
|
-
`)}return t}};import{UniformsLib as
|
|
2145
|
+
`)}return t}};import{UniformsLib as Mb,UniformsUtils as l3}from"three";var ol=class extends qe{constructor(){super("toon");this.nodeType="Toon";this.color=new He(mt),this.specular=new He(1118481),this.shininess=new se(30),this.previousModelViewMatrix=new jt,this.previouseProjectionMatrix=new jt,this.shadingAlpha=new se(1),this.shadingBlend=new Be(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:Ae.frameIndex}),e.mergeUniform({resolution:Ae.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(l3.merge([Mb.fog,Mb.lights])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <skinning_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
|
|
2146
2146
|
`));let i=["#include <beginnormal_vertex>",`
|
|
2147
2147
|
#include <skinbase_vertex>
|
|
2148
2148
|
#include <skinnormal_vertex>
|
|
@@ -2162,7 +2162,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2162
2162
|
#include <begin_vertex>
|
|
2163
2163
|
#endif
|
|
2164
2164
|
`];o&&i.push(o.code,o.result?"displaced_position = "+o.result+";":""),i.push("transformed = displaced_position;","#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>"," #include <fog_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),t=i.join(`
|
|
2165
|
-
`)}else{e.mergeUniform({penumbraSize:Ae.penumbraSize}),e.mergeUniform({frameIndex:Ae.frameIndex}),e.mergeUniform({aoMap:Ae.aoRenderTarget}),e.mergeUniform({aoEnabled:Ae.aoEnabled}),this.color===void 0&&(this.color=new He(
|
|
2165
|
+
`)}else{e.mergeUniform({penumbraSize:Ae.penumbraSize}),e.mergeUniform({frameIndex:Ae.frameIndex}),e.mergeUniform({aoMap:Ae.aoRenderTarget}),e.mergeUniform({aoEnabled:Ae.aoEnabled}),this.color===void 0&&(this.color=new He(mt)),this.color.analyze(e,{slot:"color"}),this.specular.analyze(e),this.shininess.analyze(e),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e);let o=this.color.flow(e,"c",{slot:"color"}),i=this.specular.flow(e,"c"),a=this.shininess.flow(e,"f"),s=this.shadingAlpha.flow(e,"f"),l=this.shadingBlend.flow(e,"i"),c=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,u=this.alpha?this.alpha.flow(e,"f"):void 0,p=this.alphaOverride?this.alphaOverride.flow(e,"f"):void 0;e.requires.transparent=u!==void 0,e.addParsCode([`uniform float penumbraSize[${5}];`,"uniform sampler2D aoMap;","uniform bool aoEnabled;","varying vec3 vWPosition;","#include <normal_pars_fragment>","#include <gradientmap_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <dithering_pars_fragment>",`
|
|
2166
2166
|
varying vec3 vViewPosition;
|
|
2167
2167
|
struct ToonMaterial {
|
|
2168
2168
|
vec3 diffuseColor;
|
|
@@ -2227,24 +2227,24 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2227
2227
|
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${s.result} * ${h}, ${l.result} );
|
|
2228
2228
|
}
|
|
2229
2229
|
`),c&&d.push(c.code,`outgoingLight = spe_blend(outgoingLight, ${c.result}, 1.0, SPE_BLENDING_NORMAL);`),u?d.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${u.result} );`):d.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),p&&d.push(`gl_FragColor.a *= ${p.result};`),d.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),t=d.join(`
|
|
2230
|
-
`)}return t}};import{VideoTexture as kN,Texture as HN}from"three";var Pu=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 Lf=class extends Pu{create(r){return URL.createObjectURL(new Blob([r]))}dispose(r,e){URL.revokeObjectURL(e)}},Bf;function Pb(n){return typeof n=="string"?n:(Bf||(Bf=new Lf),Bf.load(n))}var Ou=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")}},Cu=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 Ka=class extends Ou{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=Pb(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 kN(this.img,void 0,e,e):a=new HN(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 dr=class extends Ka{};import{Vector2 as Go,Vector3 as lo,Vector4 as Tu}from"three";function jt(n,r){return r.color(n)}function Ob(n,r){switch(n.type){case"fresnel":return $N(n,r);case"gradient":return YN(n,r);case"depth":return XN(n,r);case"normal":return KN(n,r);case"noise":return QN(n,r);case"rainbow":return ZN(n,r);case"toon":return JN(n,r);case"outline":return e3(n,r);case"transmission":return t3(n,r);case"color":return qN(n,r);case"pattern":return r3(n,r)}}function WN(n){return{type:n.type}}function Fr(n,r){let{alpha:e,mode:t,isMask:o}=n,i=typeof e=="string"?(Number(r.getVariable(e))??100)/100:e;return{...WN(n),alpha:i,mode:t,isMask:o}}function qN(n,r){return{...Fr(n,r),color:jt(n.color,r)}}function $N(n,r){let{bias:e,scale:t,intensity:o,factor:i,color:a}=n;return{...Fr(n,r),color:jt(a,r),bias:e,scale:t,intensity:o,factor:i}}function YN(n,r){let{gradientType:e,smooth:t,colors:o,steps:i,angle:a,offset:s,morph:l}=n;return{...Fr(n,r),gradientType:e,smooth:t,colors:o.map(c=>new Tu(c[0],c[1],c[2],c[3])),num:o.length,steps:i,offset:new Go(...s),morph:new Go(...l),angle:a}}function XN(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{...Fr(n,r),gradientType:e,near:t,far:o,isVector:i,isWorldSpace:a,origin:new lo(...s),direction:l?new lo(...l):new lo(1,0,0),colors:c.map(d=>d!==void 0?new Tu(d[0],d[1],d[2],d[3]):new Tu(0,0,0,0)),steps:u.slice(0,c.length),smooth:p}}function KN(n,r){let{cnormal:e}=n;return{...Fr(n,r),cnormal:new lo(e[0],e[1],e[2])}}function QN(n,r){return{...Fr(n,r),scale:n.scale,move:n.move,fA:new Go(...n.fA),fB:new Go(...n.fB),size:new lo(...n.size),distortion:new Go(...n.distortion),colorA:jt(n.colorA,r),colorB:jt(n.colorB,r),colorC:jt(n.colorC,r),colorD:jt(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 ZN(n,r){return{...Fr(n,r),filmThickness:n.filmThickness,movement:n.movement,wavelengths:new lo(...n.wavelengths),noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,offset:new lo(...n.offset)}}function JN(n,r){return{...Fr(n,r),positioning:n.positioning,colors:n.colors.map(e=>new Tu(e[0],e[1],e[2],e[3])),num:n.colors.length,steps:n.steps,source:new lo(...n.source),isWorldSpace:n.isWorldSpace,noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,shadowColor:jt(n.shadowColor,r),offset:new lo(...n.offset)}}function e3(n,r){return{...Fr(n,r),outlineColor:jt(n.outlineColor,r),contourColor:jt(n.contourColor,r),outlineWidth:n.outlineWidth,contourWidth:n.contourWidth,outlineThreshold:n.outlineThreshold,contourThreshold:n.contourThreshold,outlineSmoothing:n.outlineSmoothing,contourFrequency:n.contourFrequency,contourDirection:new lo(...n.contourDirection),positionalLines:n.positionalLines,compensation:n.compensation}}function t3(n,r){return{...Fr(n,r),thickness:n.thickness,ior:n.ior,roughness:n.roughness}}function r3(n,r){return{...Fr(n,r),style:n.style,projection:n.projection,axis:n.axis,blending:n.blending,offset:new Go(...n.offset),colorA:jt(n.colorA,r),colorB:jt(n.colorB,r),frequency:new Go(...n.frequency),size:n.size,variation:n.variation,smoothness:n.smoothness,zigzag:n.zigzag,rotation:n.rotation,vertical:new Go(...n.vertical),horizontal:new Go(...n.horizontal),sides:n.sides}}var gn=class extends Tt{};import{MathUtils as o3,Vector4 as n3}from"three";var i3={noise:["noiseType"],texture:["projection","axis","side"],video:["projection","axis","side"],displace:["noiseType"],light:["roughnessMap","bumpMap"],depth:["smooth","isWorldSpace","gradientType","isVector"],pattern:["style","projection","axis"]},a3={depth:["colors"]};function s3(n,r,e){if(r==="isMask")return!0;let t=i3[n.type],o=a3[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 Rf(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 dr||l.image.deref(),l.image=s}if("video"in i){let a=i.video,s=r.video(a),l=t;l.image instanceof dr||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)*o3.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 Cb(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(Vf(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 mn))switch(o=o||s3(e,i,a),s.constructor){case He:if(typeof a=="string"){let l=r.getColor(a);l&&(s.value=l);break}else{let l=a;s.value instanceof gn?s.value=new Tt(l.r,l.g,l.b,l.a):s.setRGBA(l);break}case Jt:if(typeof a=="string"){let l=r.getColor(a);l&&(s.value=l);break}else{let l=a;s.value instanceof gn?s.value=new Tt(l.r,l.g,l.b,l.a):s.value.setRGBA(l.r,l.g,l.b,l.a);break}case st:{let l=a;s.value.setX(l[0]),s.value.setY(l[1]);break}case Gt:{let l=a;s.value.setX(l[0]),s.value.setY(l[1]),s.value.setZ(l[2]);break}case $t:{Rf(a,r,e);break}case jr:{s.value=a.map(l=>new n3(...l));break}default:{s.value=a;break}}}return o}var xn=(n,r,e)=>Math.max(0,Math.min(1,Number(r.getVariable(typeof n=="number"?n*100:n,e)??100)/100))??1,bn=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)Vf(a,this,t,i)}get type(){return this.data.type}static create(r,e,t,o){if(t.type==="light")return Yt.createLigherLayer(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 Zn(i,t.texture.wrapping,t.texture.minFilter??1008,t.texture.magFilter??1006),s=new Su(i),l=new wu(t.texture.repeat,t.texture.offset,t.texture.rotation??0),c=new se(t.crop?1:0),u=new Be(t.projection??0),p=new Be(["x","y","z"].indexOf(t.axis)??0),d=new Be(t.side??0),h=new st(t.size?new Ur(t.size[0],t.size[1]):new Ur(100,100)),f=new se(t.blending??0),m=new se(xn(t.alpha,o)),y=new Be(t.mode??0),g=new pt(t.isMask??!1),v=new yn(a,s,c,u,p,d,h,f,l,m,y,g),P=new Ue(v.calpha,"f");return new rt(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,P,g,o)}else if(t.type==="matcap"){let i=o.image(t.texture.image),a=new Zn(i,t.texture.wrapping,t.texture.minFilter??1008,t.texture.magFilter??1006),s=new se(xn(t.alpha,o)),l=new Be(t.mode??0),c=new pt(t.isMask??!1),u=new se((t.texture.rotation??0)*l3.DEG2RAD),p=new Ua(a,s,l,c,u),d=new Ue(p.calpha,"f");return new rt(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 Gt(new co(...t.offset)),a=new se(t.scale??10),s=new se(t.intensity??8),l=new se(t.movement??1),c=new Be(t.noiseType??0),u=new Be(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 Be(t.quality??1),y=new Xa(s,l,i,u,p,d,h,f,m,a,c);return new nl(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 d3(r,e,t,o)}updateByOp(r,e,t){let o=r;if(o.path[0]===void 0){if(o.type===0)return"type"in o.props||"category"in o.props||"visible"in o.props?(t.scene.markNeedsUpdateRendererDirty(),!0):Cb(o.props,t.shared,this,e)}else if(o.path[0]==="texture")return"texture"in e||"video"in e?Rf(o.props,t.shared,this):!0;return!1}dispose(){if(c3(this)){let r=this.uniforms[`f${this.id}_texture`];if(!r)return!1;let e=r;e.image instanceof dr||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}},rt=class extends bn{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}},nl=class extends bn{constructor(e,t,o,i,a,s){super(e,t,o,i,s);this.position=a}},Yt=class extends bn{constructor(e,t,o,i,a,s){super(e,t,o,a,s);this.node=i}static createLigherLayer(e,t,o,i){let a,s=new se(xn(o.alpha,i)),l=new Be(o.mode),c=new se(o.bumpMapIntensity),u=new se(xn(o.alphaOverride,i)),p;if(!o.visible)a=new Ro,p={};else if(o.category==="lambert"){a=new el;let d=new He(i.color(o.emissive)??0),h=new pt(o.occlusion??!0);p={emissive:d,occlusion:h},a.emissive=d,a.occlusion=h}else if(o.category==="toon"){a=new ol;let d=new se(o.shininess??30),h=new He(i.color(o.specular)??1118481);p={shininess:d,specular:h},a.shininess=d,a.specular=h}else if(o.category==="physical"){a=new rl;let d=new se(o.roughness??.3),h=new se(o.metalness??0),f=new se(o.reflectivity??.5),m=new pt(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 tl;let d=new se(o.shininess??30),h=new He(o.specular!==void 0?i.color(o.specular)??1118481:1118481),f=new pt(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 Yt(e,t,o,a,p,i)}get category(){return this.node.category}};function c3(n){let r=n instanceof bn?n.type:n;return r==="texture"||r==="video"||r==="displace_map"||r==="matcap"}function vr(n){return{alpha:new se(n.alpha??1),mode:new Be(n.mode??0),isMask:new pt(n.isMask??!1)}}function u3(n,r,e,t,o){switch(n.type){case"color":{let i=new He(t.color??ht),a=vr(t),s=new Jn(i,a.alpha),l=new Ue(s.calpha,"f");return new rt(r,e,n,{color:i,...a},s,a.mode,l,a.isMask,o)}case"fresnel":{let i=new He(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=vr(t),p=new Zs(i,a,s,l,c,u.alpha,u.mode,u.isMask),d=new Ue(p.calpha,"f");return new rt(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 Gt(t.wavelengths??new co(0,0,0)),l=new se(t.noiseStrength??0),c=new se(t.noiseScale??1),u=new Gt(t.offset??new co(0,0,0)),p=vr(t),d=new qa(i,a,s,l,c,u,p.alpha,p.isMask),h=new Ue(d.calpha,"f");return new rt(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=Ae.transmissionSize,c=Ae.transmissionRenderTarget,u=Ae.transmissionRenderTargetDepth,p=window.innerWidth,d=window.innerHeight,h=p>=d?new st(d/p,1):new st(1,p/d),f=vr(t),m=new Ya(i,a,s,l,c,u,h,f.alpha),y=new Ue(m.calpha,"f");return new rt(r,e,n,{thickness:i,ior:a,roughness:s,aspectRatio:h,...f},m,f.mode,y,f.isMask,o)}case"toon":{let i=new Be(t.positioning??0),a;t.colors?a=new jr(t.colors.length,t.colors):(a=new jr(10,new Qa(0,0,0,1)),a.value[1]=new Qa(1,1,1,1));let s;t.steps?s=new zr(t.steps.length,t.steps):(s=new zr(10,1),s.value[0]=0);let l=new Gt(t.source??new co(0,0,0)),c=new pt(t.isWorldSpace??!0),u=new se(t.noiseStrength??0),p=new se(t.noiseScale??1),d=new Jt(t.shadowColor),h=new Gt(t.offset??new co(0,0,0)),f=vr(t),m=new $a(i,a,s,l,c,u,p,d,h,f.alpha),y=new Ue(m.calpha,"f");return new rt(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 He(t.outlineColor??16777215),a=new He(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 Gt(t.contourDirection??new co(0,1,0)),f=new pt(t.positionalLines??!1),m=new pt(t.compensation??!0),y=Ae.normalRenderTarget,g=Ae.normalRenderTargetDepth,v=Ae.pixelRatioNode,P=Ae.resolution,O=vr(t),S=new Ha(i,a,s,l,c,u,p,d,h,f,m,P,y,g,v,O.alpha),T=new Ue(S.calpha,"f");return new rt(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,T,O.isMask,o)}case"depth":{let i=new Be(t.gradientType??0),a=new pt(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 Gt(t.origin??new co),d=new Gt(t.direction??new co),h;t.colors?h=new jr(t.colors.length,t.colors):(h=new jr(2,new Qa(0,0,0,1)),h.value[1]=new Qa(1,1,1,1));let f;t.steps?f=new zr(t.steps.length,t.steps):(f=new zr(2,1),f.value[0]=0);let m=vr(t),y=new ja(i,a,s,l,c,u,p,d,h,f,m.alpha,m.isMask),g=new Ue(y.calpha,"f");return new rt(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 Gt(t.size??new co(100,100,100)),s=new se(t.move??1),l=new st(t.fA??new Ur(1.7,9.2)),c=new st(t.fB??new Ur(8.3,2.8)),u=new st(t.distortion??new Ur(1,1)),p=new Jt(t.colorA),d=new Jt(t.colorB),h=new Jt(t.colorC),f=new Jt(t.colorD),m=new Be(t.noiseType??0),y=new Be(t.voronoiStyle??0),g=new se(t.highCut??1),v=new se(t.lowCut??0),P=new se(t.smoothness??.5),O=new se(t.seed??.5),S=new Be(t.quality??1),T=vr(t),A=new ka(i,a,s,l,c,u,p,d,h,f,T.alpha,m,T.isMask,y,g,v,P,O,S),x=new Ue(A.calpha,"f");return new rt(r,e,n,{scale:i,size:a,move:s,fA:l,fB:c,distortion:u,colorA:p,colorB:d,colorC:h,colorD:f,noiseType:m,...T,voronoiStyle:y,highCut:g,lowCut:v,smoothness:P,seed:O,quality:S},A,T.mode,x,T.isMask,o)}case"normal":{let i=new Gt(t.cnormal??new co(1,1,1)),a=vr(t),s=new Va(i,a.alpha),l=new Ue(s.calpha,"f");return new rt(r,e,n,{cnormal:i,...a},s,a.mode,l,a.isMask,o)}case"gradient":{let i=new Be(t.gradientType??0),a=new pt(t.smooth??!1),s;t.colors?s=new jr(t.colors.length,t.colors):(s=new jr(10,new Qa(0,0,0,1)),s.value[1]=new Qa(1,1,1,1));let l;t.steps?l=new zr(t.steps.length,t.steps):(l=new zr(10,1),l.value[0]=0);let c=new st(t.offset??new Ur(0,0)),u=new st(t.morph??new Ur(0,0)),p=new se(t.angle??0),d=vr(t),h=new Fa(i,a,s,l,c,u,p,d.alpha,d.isMask),f=new Ue(h.calpha,"f");return new rt(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 Be(t.style??0),a=new Be(t.projection??0),s=new Be(["x","y","z"].indexOf(t.axis)??0),l=new se(t.blending??0),c=new st(t.offset??new Ur(0,0)),u=new Jt(t.colorA),p=new Jt(t.colorB),d=new st(t.frequency??new Ur(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 st(t.vertical??new Ur(0,1)),P=new st(t.horizontal??new Ur(0,1)),O=new Be(t.sides??6),S=vr(t),T=new Wa(i,a,s,l,c,u,p,d,h,f,m,y,g,v,P,O,S.alpha,S.isMask),A=new Ue(T.calpha,"f");return new rt(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:P,sides:O,...S},T,S.mode,A,S.isMask,o)}default:{let i=new He(1,0,0,1),a=vr(t),s=new Jn(i,a.alpha),l=new Ue(s.calpha,"f");return new rt(r,e,n,{color:i,...a},s,a.mode,l,a.isMask,o)}}}function d3(n,r,e,t){let o=Ob(e,t);return u3(e,n,r,o,t)}function Vf(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=xn(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 Au(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 tr=class extends p3{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""}},Mu=class extends tr{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()}},ti=class extends tr{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,qe.startContext(this),this.reset0(e,t),qe.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 Mu(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){qe.startContext(this),(this.data!==e||o)&&this.reset0(e,t),qe.endContext(this)}reset0(e,t){this.data=e;let o=e.layers??It.defaultTwoLayerData("phong").layers;try{this.layers=o.map(i=>bn.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=Au(e,t.shared),this.saveVariableLocations(t)}onVariableUpdate(e,t,o){if(e[0]==="alphaOverride")this.transparent=Au(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=Au(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 Yt),this.lightLayer===void 0&&(this.lightLayer=new Yt(0,"",{...xt.defaultData("light","phong"),visible:!1},new Ro,{},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 Yt);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 rt&&s.color instanceof yn&&(s.uuid===o&&(e.node.bumpMap=s.color),s.uuid===i&&(e.node.roughnessMap=s.color))}}updateByOp(e,t,o){if(qe.startContext(this),t!==void 0?this.data=t:t=this.data,this.transparent=Au(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:xn(e.props.alpha,i,["material",this.uuid,"layer",a,"alpha"])}:c={...e.props,alphaOverride:xn(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);qe.endContext(this)}applyMasks(){for(let e=0;e<this.layers.length;++e){let t=this.layers[e];t instanceof rt?t.color.mask=void 0:t instanceof Yt&&(t.node.mask=void 0)}for(let e=0;e<this.layers.length;++e){let t=this.layers[e];if(t instanceof rt&&t.isMask.value&&t.data.visible&&e>0){let o=e-1,i=this.layers[o];i instanceof Yt?i.node.mask=new Et(t.color,t.alpha,Et.MUL):i instanceof rt&&(i.isMask.value||(i.color.mask=new Et(t.color,t.alpha,Et.MUL)))}}}blendColors(){let e=this.layers.findIndex(o=>o instanceof rt),t=this.layers.findIndex(o=>o instanceof Yt);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 rt){if(a.isMask.value)continue;o=new Ra(o,a.color,a.alpha,a.mode)}}this.fragment.color=o}else this.fragment.color=void 0}blendAfterColors(){let e=new Ue("outgoingLight","f"),t=this.layers.findIndex(o=>o instanceof Yt);if(this.layers.length>t+1){for(let o=t+1;o<this.layers.length;++o){let i=this.layers[o];if(i instanceof rt){if(i.isMask.value)continue;e=new Ra(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 nl);if(e.length>0){let t=e[0].position;for(let o=1;o<e.length;++o)e[o]&&(t=new Et(t,e[o].position,Et.ADD),t=new Et(t,new se(.5).setReadonly(!0),Et.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 Ba;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 rt){let t=e.params.texture;if(t instanceof Zn&&!t.image.loaded)return!1}return!0}};Object.defineProperties(tr.prototype,{properties:{get:function(){return this.fragment.properties}}});var ri=class extends ti{constructor(r,e,t){super(r,e,!1),this.uuid=t,this.allowVariableSaves=!0,this.saveVariableLocations(e)}};var Tb=new Map;function Ab(n){if(typeof n=="string")return n;let r=Tb.get(n);return r||(r={url:URL.createObjectURL(new Blob([n]))},Tb.set(n,r)),r.url}var f3,Mb=new Promise(n=>{f3=n});var Ib;Mb.then(n=>Ib=n);var oi=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:Ab(r),format:"wav"},this.sound=new Ib.Howl(i),this.sound.on("end",this.onEnd),this.src=r,e!==void 0&&(this.volume=e),t!==void 0&&(this.delay=t),o!==void 0&&(this.loop=o)}get status(){return this._status}get volume(){return this._volume}set volume(r){this._volume=r,this.sound.volume(r)}get loop(){return this._loop}set loop(r){this._loop=r,this.loopsRemaining=r}replay(){this.clearDelay(),this.delayTimerId=window.setTimeout(()=>{this.sound.play(),this.clearDelay()},this.delay)}fade(r,e=1e3){r?(this.sound.volume(this._volume),this.clearFade(),this.fadeTimerId=window.setTimeout(()=>{this.sound.fade(this._volume,0,e),this.clearFade()},r)):this.sound.fade(this._volume,0,e)}on(r,e,t){this.sound.on(r,e,t)}off(r,e,t){this.sound.off(r,e,t)}play(){this._status==="playing"||this.sound.playing()||(this._status==="paused"?(this.sound.seek()===0?this.replay():this.sound.play(),this._status="playing"):this._status==="stopped"&&(this.replay(),this._status="playing"))}pause(){this._status==="playing"&&(this.sound.pause(),this.clearFade(),this.clearDelay(),this._status="paused")}stop(){this.sound.stop(),this.loopsRemaining=this._loop,this.clearFade(),this.clearDelay(),this._status="stopped"}clearFade(){this.fadeTimerId&&(clearTimeout(this.fadeTimerId),delete this.fadeTimerId)}clearDelay(){this.delayTimerId&&(clearTimeout(this.delayTimerId),delete this.delayTimerId)}dispose(r=!1){this.off(),this.stop(),this.clearFade(),this.clearDelay()}};import{Box2 as h3,Vector2 as ni,Path as Nb,Shape as m3,ShapeUtils as y3,Color as g3}from"three";var Iu=class{constructor(){this.type="ShapePath";this.color=new g3;this.subPaths=[];this.currentPath=null}moveTo(r,e){return this.currentPath=new Nb,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 P=m.x,O=y.x,S=g.x,T=v.x,A=m.y,x=y.y,E=g.y,N=v.y,I=(T-S)*(A-E)-(N-E)*(P-S),D=(O-P)*(A-E)-(x-A)*(P-S),_=(N-E)*(O-P)-(T-S)*(x-A),B=I/_,V=D/_;if(_===0&&I!==0||B<=0||B>=1||V<0||V>1)return null;if(I===0&&_===0){for(let U=0;U<2;U++)if(i(U===0?g:v,m,y),t.loc===e.ORIGIN){let R=U===0?g:v;return{x:R.x,y:R.y,t:t.t}}else if(t.loc===e.BETWEEN){let R=+(P+t.t*(O-P)).toPrecision(10),W=+(A+t.t*(x-A)).toPrecision(10);return{x:R,y:W,t:t.t}}return null}else{for(let W=0;W<2;W++)if(i(W===0?g:v,m,y),t.loc===e.ORIGIN){let j=W===0?g:v;return{x:j.x,y:j.y,t:t.t}}let U=+(P+B*(O-P)).toPrecision(10),R=+(A+B*(x-A)).toPrecision(10);return{x:U,y:R,t:B}}}function i(m,y,g){let v=g.x-y.x,P=g.y-y.y,O=m.x-y.x,S=m.y-y.y,T=v*S-O*P;if(m.x===y.x&&m.y===y.y){t.loc=e.ORIGIN,t.t=0;return}if(m.x===g.x&&m.y===g.y){t.loc=e.DESTINATION,t.t=1;return}if(T<-Number.EPSILON){t.loc=e.LEFT;return}if(T>Number.EPSILON){t.loc=e.RIGHT;return}if(v*O<0||P*S<0){t.loc=e.BEHIND;return}if(Math.sqrt(v*v+P*P)<Math.sqrt(O*O+S*S)){t.loc=e.BEYOND;return}let A;v!==0?A=O/v:A=S/P,t.loc=e.BETWEEN,t.t=A}function a(m,y){let g=[],v=[];for(let P=1;P<m.length;P++){let O=m[P-1],S=m[P];for(let T=1;T<y.length;T++){let A=y[T-1],x=y[T],E=o(O,S,A,x);E!==null&&g.find(N=>N.t<=E.t+Number.EPSILON&&N.t>=E.t-Number.EPSILON)===void 0&&(g.push(E),v.push(new ni(E.x,E.y)))}}return v}function s(m,y,g){let v=new ni;y.getCenter(v);let P=[];return g.forEach(O=>{O.boundingBox.containsPoint(v)&&a(m,O.points).forEach(T=>{P.push({identifier:O.identifier,isCW:O.isCW,point:T})})}),P.sort((O,S)=>O.point.x-S.point.x),P}function l(m,y,g,v,P){(P==null||P==="")&&(P="nonzero");let O=new ni;m.boundingBox.getCenter(O);let S=[new ni(g,O.y),new ni(v,O.y)],T=s(S,m.boundingBox,y);T.sort((D,_)=>D.point.x-_.point.x);let A=[],x=[];T.forEach(D=>{D.identifier===m.identifier?A.push(D):x.push(D)});let E=A[0].point.x,N=[],I=0;for(;I<x.length&&x[I].point.x<E;)N.length>0&&N[N.length-1]===x[I].identifier?N.pop():N.push(x[I].identifier),I++;if(N.push(m.identifier),P==="evenodd"){let D=N.length%2===0,_=N[N.length-2];return{identifier:m.identifier,isHole:D,for:_}}else if(P==="nonzero"){let D=!0,_=null,B=null;for(let V=0;V<N.length;V++){let U=N[V];y[U]&&(D?(B=y[U].isCW,D=!1,_=U):B!==y[U].isCW&&(B=y[U].isCW,D=!0))}return{identifier:m.identifier,isHole:D,for:_}}else console.warn('fill-rule: "'+P+'" is currently not implemented.')}let c=0,u=999999999,p=-999999999,d=[];this.subPaths.forEach(m=>{let y=m.getPoints(),g=-999999999,v=999999999,P=-999999999,O=999999999;for(let S=0;S<y.length;S++){let T=y[S];T.y>g&&(g=T.y),T.y<v&&(v=T.y),T.x>P&&(P=T.x),T.x<O&&(O=T.x)}p<=P&&(p=P+1),u>=O&&(u=O-1),y.length&&d.push({curves:m.curves,points:y,isCW:y3.isClockWise(y),identifier:c++,boundingBox:new h3(new ni(O,v),new ni(P,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 m3;g.curves=m.curves,h.filter(P=>P?.isHole&&P.for===m.identifier).forEach(P=>{if(P){let O=d[P.identifier],S=new Nb;S.curves=O.curves,g.holes.push(S)}}),f.push(g)}}),f}};var Gf=!1,Eb,zf=new Promise(n=>{Eb=n}),Db=!1;var Nu;function _b(){if(Gf=!0,Db)return;if(Nu)return Nu;async function n(){let e=await import("./opentype.js");Eb(e),Db=!0}return Nu=n(),Nu}var il=class{async load(r,e,t=()=>{}){let{load:o}=await zf;o(r,(i,a)=>{i||!a?t(i??"Something went wrong"):e(a)})}async parse(r){let{parse:e,Bidi:t}=await zf;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 x3(n){return await(await fetch(n)).arrayBuffer()}var b3=new il;async function jf(n){let r,e,t=!1;if(n.url?(r=await x3(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(Gf){let o=await b3.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}}import{CubicBezierCurve as v3,LineCurve as S3,QuadraticBezierCurve as w3}from"three";function P3(n,r){return r.state.glyphIndex===n||r.state.fina===n||r.state.medi===n||r.state.init===n}var Du=class{constructor(r){this._arrayBuffer=new ArrayBuffer(1);this._isLoaded=!1;this._intercepted=!1;this._isUserFont=r.isUserFont??!1,this._loadingPromise=jf(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=jf(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(P3(u,d)||l)a.push({char:p,index:u,replacements:[d.state.glyphIndex],replacementChars:[d.char]}),s++;else{let h=d.char,f="",m=[d.state.glyphIndex],y=[],g=!1;for(;!g;)s++,f=e.charAt(s),h+=f,m.push(r.charToGlyphIndex(f)),y=r.stringToGlyphs(h),y.length===1&&y[0].index===u&&(g=!0),s>e.length&&(g=!0);a.push({char:p,index:u,replacements:m,replacementChars:Array.from(h)}),s++}}return a}generateShapes(r,e){if(!this._isLoaded)return;let t=this.font,o=e.fontSize/this.unitsPerEm,i=e.fontSize*e.lineHeight,a=r.map(v=>this.getTextWidth(v,e)),s=e.width,l=this.getCharWidth(`
|
|
2231
|
-
`,e),c=e.horizontalAlign===1?l:0,u=this.computeSpaceWidthForLine(r,0,e),p=this.getLineInitialOffsetX(a[0],s,e.horizontalAlign,r[0],l),d=this.getLineInitialOffsetY(i,r.length,e.height,o,e.verticalAlign),h=[],f=r.map(v=>[]),m=r.map(v=>[]),y;for(let v=0;v<r.length;v++){let P=r[v],O={features:{liga:!0}},S=[];try{S=t.stringToGlyphs(P,O)}catch(A){console.warn(A)}p=this.getLineInitialOffsetX(a[v],s,e.horizontalAlign,P,l);let
|
|
2232
|
-
`:x.unicode?String.fromCharCode(x.unicode):void 0,N=
|
|
2230
|
+
`)}return t}};import{VideoTexture as c3,Texture as u3}from"three";var Cu=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 Gf=class extends Cu{create(r){return URL.createObjectURL(new Blob([r]))}dispose(r,e){URL.revokeObjectURL(e)}},Vf;function Ib(n){return typeof n=="string"?n:(Vf||(Vf=new Gf),Vf.load(n))}var Tu=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")}},Au=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 Ka=class extends Tu{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 c3(this.img,void 0,e,e):a=new u3(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 dr=class extends Ka{};import{Vector2 as Go,Vector3 as co,Vector4 as Mu}from"three";function Ft(n,r){return r.color(n)}function Nb(n,r){switch(n.type){case"fresnel":return f3(n,r);case"gradient":return h3(n,r);case"depth":return m3(n,r);case"normal":return y3(n,r);case"noise":return g3(n,r);case"rainbow":return x3(n,r);case"toon":return b3(n,r);case"outline":return v3(n,r);case"transmission":return S3(n,r);case"color":return p3(n,r);case"pattern":return w3(n,r)}}function d3(n){return{type:n.type}}function Ur(n,r){let{alpha:e,mode:t,isMask:o}=n,i=typeof e=="string"?(Number(r.getVariable(e))??100)/100:e;return{...d3(n),alpha:i,mode:t,isMask:o}}function p3(n,r){return{...Ur(n,r),color:Ft(n.color,r)}}function f3(n,r){let{bias:e,scale:t,intensity:o,factor:i,color:a}=n;return{...Ur(n,r),color:Ft(a,r),bias:e,scale:t,intensity:o,factor:i}}function h3(n,r){let{gradientType:e,smooth:t,colors:o,steps:i,angle:a,offset:s,morph:l}=n;return{...Ur(n,r),gradientType:e,smooth:t,colors:o.map(c=>new Mu(c[0],c[1],c[2],c[3])),num:o.length,steps:i,offset:new Go(...s),morph:new Go(...l),angle:a}}function m3(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{...Ur(n,r),gradientType:e,near:t,far:o,isVector:i,isWorldSpace:a,origin:new co(...s),direction:l?new co(...l):new co(1,0,0),colors:c.map(d=>d!==void 0?new Mu(d[0],d[1],d[2],d[3]):new Mu(0,0,0,0)),steps:u.slice(0,c.length),smooth:p}}function y3(n,r){let{cnormal:e}=n;return{...Ur(n,r),cnormal:new co(e[0],e[1],e[2])}}function g3(n,r){return{...Ur(n,r),scale:n.scale,move:n.move,fA:new Go(...n.fA),fB:new Go(...n.fB),size:new co(...n.size),distortion:new Go(...n.distortion),colorA:Ft(n.colorA,r),colorB:Ft(n.colorB,r),colorC:Ft(n.colorC,r),colorD:Ft(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 x3(n,r){return{...Ur(n,r),filmThickness:n.filmThickness,movement:n.movement,wavelengths:new co(...n.wavelengths),noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,offset:new co(...n.offset)}}function b3(n,r){return{...Ur(n,r),positioning:n.positioning,colors:n.colors.map(e=>new Mu(e[0],e[1],e[2],e[3])),num:n.colors.length,steps:n.steps,source:new co(...n.source),isWorldSpace:n.isWorldSpace,noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,shadowColor:Ft(n.shadowColor,r),offset:new co(...n.offset)}}function v3(n,r){return{...Ur(n,r),outlineColor:Ft(n.outlineColor,r),contourColor:Ft(n.contourColor,r),outlineWidth:n.outlineWidth,contourWidth:n.contourWidth,outlineThreshold:n.outlineThreshold,contourThreshold:n.contourThreshold,outlineSmoothing:n.outlineSmoothing,contourFrequency:n.contourFrequency,contourDirection:new co(...n.contourDirection),positionalLines:n.positionalLines,compensation:n.compensation}}function S3(n,r){return{...Ur(n,r),thickness:n.thickness,ior:n.ior,roughness:n.roughness}}function w3(n,r){return{...Ur(n,r),style:n.style,projection:n.projection,axis:n.axis,blending:n.blending,offset:new Go(...n.offset),colorA:Ft(n.colorA,r),colorB:Ft(n.colorB,r),frequency:new Go(...n.frequency),size:n.size,variation:n.variation,smoothness:n.smoothness,zigzag:n.zigzag,rotation:n.rotation,vertical:new Go(...n.vertical),horizontal:new Go(...n.horizontal),sides:n.sides}}var xn=class extends Tt{};import{MathUtils as P3,Vector4 as O3}from"three";var C3={noise:["noiseType"],texture:["projection","axis","side"],video:["projection","axis","side"],displace:["noiseType"],light:["roughnessMap","bumpMap"],depth:["smooth","isWorldSpace","gradientType","isVector"],pattern:["style","projection","axis"]},T3={depth:["colors"]};function A3(n,r,e){if(r==="isMask")return!0;let t=C3[n.type],o=T3[n.type];if(o!==void 0){let i=n.color;if(o.includes(r)){let a=i[r]?.value?.length;if(a!==void 0&&a!==e.length)return!0}}return t!==void 0?t.includes(r):!1}function zf(n,r,e){let t=e.uniforms[`f${e.id}_texture`];if(!t)return!1;let o=!1,i=n;if("image"in i){let a=i.image,s=r.image(a),l=t;l.image instanceof dr||l.image.deref(),l.image=s}if("video"in i){let a=i.video,s=r.video(a),l=t;l.image instanceof dr||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)*P3.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(jf(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 yn))switch(o=o||A3(e,i,a),s.constructor){case He:if(typeof a=="string"){let l=r.getColor(a);l&&(s.value=l);break}else{let l=a;s.value instanceof xn?s.value=new Tt(l.r,l.g,l.b,l.a):s.setRGBA(l);break}case er:if(typeof a=="string"){let l=r.getColor(a);l&&(s.value=l);break}else{let l=a;s.value instanceof xn?s.value=new Tt(l.r,l.g,l.b,l.a):s.value.setRGBA(l.r,l.g,l.b,l.a);break}case st:{let l=a;s.value.setX(l[0]),s.value.setY(l[1]);break}case zt:{let l=a;s.value.setX(l[0]),s.value.setY(l[1]),s.value.setZ(l[2]);break}case Yt:{zf(a,r,e);break}case Fr:{s.value=a.map(l=>new O3(...l));break}default:{s.value=a;break}}}return o}var bn=(n,r,e)=>Math.max(0,Math.min(1,Number(r.getVariable(typeof n=="number"?n*100:n,e)??100)/100))??1,vn=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)jf(a,this,t,i)}get type(){return this.data.type}static create(r,e,t,o){if(t.type==="light")return Xt.createLigherLayer(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 Jn(i,t.texture.wrapping,t.texture.minFilter??1008,t.texture.magFilter??1006),s=new Pu(i),l=new Ou(t.texture.repeat,t.texture.offset,t.texture.rotation??0),c=new se(t.crop?1:0),u=new Be(t.projection??0),p=new Be(["x","y","z"].indexOf(t.axis)??0),d=new Be(t.side??0),h=new st(t.size?new kr(t.size[0],t.size[1]):new kr(100,100)),f=new se(t.blending??0),m=new se(bn(t.alpha,o)),y=new Be(t.mode??0),g=new ft(t.isMask??!1),v=new gn(a,s,c,u,p,d,h,f,l,m,y,g),P=new Ue(v.calpha,"f");return new rt(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,P,g,o)}else if(t.type==="matcap"){let i=o.image(t.texture.image),a=new Jn(i,t.texture.wrapping,t.texture.minFilter??1008,t.texture.magFilter??1006),s=new se(bn(t.alpha,o)),l=new Be(t.mode??0),c=new ft(t.isMask??!1),u=new se((t.texture.rotation??0)*M3.DEG2RAD),p=new Ua(a,s,l,c,u),d=new Ue(p.calpha,"f");return new rt(r,e,t,{texture:a,alpha:s,mode:l,isMask:c,rotation:u},p,l,d,c,o)}else if(t.type==="displace")if(t.displacementType==="noise"){let i=new zt(new uo(...t.offset)),a=new se(t.scale??10),s=new se(t.intensity??8),l=new se(t.movement??1),c=new Be(t.noiseType??0),u=new Be(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 Be(t.quality??1),y=new Xa(s,l,i,u,p,d,h,f,m,a,c);return new nl(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 E3(r,e,t,o)}updateByOp(r,e,t){let o=r;if(o.path[0]===void 0){if(o.type===0)return"type"in o.props||"category"in o.props||"visible"in o.props?(t.scene.markNeedsUpdateRendererDirty(),!0):Eb(o.props,t.shared,this,e)}else if(o.path[0]==="texture")return"texture"in e||"video"in e?zf(o.props,t.shared,this):!0;return!1}dispose(){if(I3(this)){let r=this.uniforms[`f${this.id}_texture`];if(!r)return!1;let e=r;e.image instanceof dr||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}},rt=class extends vn{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}},nl=class extends vn{constructor(e,t,o,i,a,s){super(e,t,o,i,s);this.position=a}},Xt=class extends vn{constructor(e,t,o,i,a,s){super(e,t,o,a,s);this.node=i}static createLigherLayer(e,t,o,i){let a,s=new se(bn(o.alpha,i)),l=new Be(o.mode),c=new se(o.bumpMapIntensity),u=new se(bn(o.alphaOverride,i)),p;if(!o.visible)a=new Ro,p={};else if(o.category==="lambert"){a=new el;let d=new He(i.color(o.emissive)??0),h=new ft(o.occlusion??!0);p={emissive:d,occlusion:h},a.emissive=d,a.occlusion=h}else if(o.category==="toon"){a=new ol;let d=new se(o.shininess??30),h=new He(i.color(o.specular)??1118481);p={shininess:d,specular:h},a.shininess=d,a.specular=h}else if(o.category==="physical"){a=new rl;let d=new se(o.roughness??.3),h=new se(o.metalness??0),f=new se(o.reflectivity??.5),m=new ft(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 tl;let d=new se(o.shininess??30),h=new He(o.specular!==void 0?i.color(o.specular)??1118481:1118481),f=new ft(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 Xt(e,t,o,a,p,i)}get category(){return this.node.category}};function I3(n){let r=n instanceof vn?n.type:n;return r==="texture"||r==="video"||r==="displace_map"||r==="matcap"}function vr(n){return{alpha:new se(n.alpha??1),mode:new Be(n.mode??0),isMask:new ft(n.isMask??!1)}}function N3(n,r,e,t,o){switch(n.type){case"color":{let i=new He(t.color??mt),a=vr(t),s=new ei(i,a.alpha),l=new Ue(s.calpha,"f");return new rt(r,e,n,{color:i,...a},s,a.mode,l,a.isMask,o)}case"fresnel":{let i=new He(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=vr(t),p=new Zs(i,a,s,l,c,u.alpha,u.mode,u.isMask),d=new Ue(p.calpha,"f");return new rt(r,e,n,{color:i,bias:a,scale:s,intensity:l,factor:c,...u},p,u.mode,d,u.isMask,o)}case"rainbow":{let i=new se(t.filmThickness??30),a=new se(t.movement??0),s=new zt(t.wavelengths??new uo(0,0,0)),l=new se(t.noiseStrength??0),c=new se(t.noiseScale??1),u=new zt(t.offset??new uo(0,0,0)),p=vr(t),d=new qa(i,a,s,l,c,u,p.alpha,p.isMask),h=new Ue(d.calpha,"f");return new rt(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=Ae.transmissionSize,c=Ae.transmissionRenderTarget,u=Ae.transmissionRenderTargetDepth,p=window.innerWidth,d=window.innerHeight,h=p>=d?new st(d/p,1):new st(1,p/d),f=vr(t),m=new Ya(i,a,s,l,c,u,h,f.alpha),y=new Ue(m.calpha,"f");return new rt(r,e,n,{thickness:i,ior:a,roughness:s,aspectRatio:h,...f},m,f.mode,y,f.isMask,o)}case"toon":{let i=new Be(t.positioning??0),a;t.colors?a=new Fr(t.colors.length,t.colors):(a=new Fr(10,new Qa(0,0,0,1)),a.value[1]=new Qa(1,1,1,1));let s;t.steps?s=new jr(t.steps.length,t.steps):(s=new jr(10,1),s.value[0]=0);let l=new zt(t.source??new uo(0,0,0)),c=new ft(t.isWorldSpace??!0),u=new se(t.noiseStrength??0),p=new se(t.noiseScale??1),d=new er(t.shadowColor),h=new zt(t.offset??new uo(0,0,0)),f=vr(t),m=new $a(i,a,s,l,c,u,p,d,h,f.alpha),y=new Ue(m.calpha,"f");return new rt(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 He(t.outlineColor??16777215),a=new He(t.contourColor??16777215),s=new se(t.outlineWidth??.1),l=new se(t.contourWidth??.1),c=new se(t.outlineThreshold??.1),u=new se(t.contourThreshold??.1),p=new se(t.outlineSmoothing??.1),d=new se(t.contourFrequency??.1),h=new zt(t.contourDirection??new uo(0,1,0)),f=new ft(t.positionalLines??!1),m=new ft(t.compensation??!0),y=Ae.normalRenderTarget,g=Ae.normalRenderTargetDepth,v=Ae.pixelRatioNode,P=Ae.resolution,O=vr(t),S=new Ha(i,a,s,l,c,u,p,d,h,f,m,P,y,g,v,O.alpha),C=new Ue(S.calpha,"f");return new rt(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 Be(t.gradientType??0),a=new ft(t.smooth??!1),s=new se(t.near??50),l=new se(t.far??200),c=new se(t.isVector??1),u=new se(t.isWorldSpace??0),p=new zt(t.origin??new uo),d=new zt(t.direction??new uo),h;t.colors?h=new Fr(t.colors.length,t.colors):(h=new Fr(2,new Qa(0,0,0,1)),h.value[1]=new Qa(1,1,1,1));let f;t.steps?f=new jr(t.steps.length,t.steps):(f=new jr(2,1),f.value[0]=0);let m=vr(t),y=new ja(i,a,s,l,c,u,p,d,h,f,m.alpha,m.isMask),g=new Ue(y.calpha,"f");return new rt(r,e,n,{gradientType:i,smooth:a,near:s,far:l,isVector:c,isWorldSpace:u,origin:p,direction:d,colors:h,steps:f,...m},y,m.mode,g,m.isMask,o)}case"noise":{let i=new se(t.scale??1),a=new zt(t.size??new uo(100,100,100)),s=new se(t.move??1),l=new st(t.fA??new kr(1.7,9.2)),c=new st(t.fB??new kr(8.3,2.8)),u=new st(t.distortion??new kr(1,1)),p=new er(t.colorA),d=new er(t.colorB),h=new er(t.colorC),f=new er(t.colorD),m=new Be(t.noiseType??0),y=new Be(t.voronoiStyle??0),g=new se(t.highCut??1),v=new se(t.lowCut??0),P=new se(t.smoothness??.5),O=new se(t.seed??.5),S=new Be(t.quality??1),C=vr(t),A=new ka(i,a,s,l,c,u,p,d,h,f,C.alpha,m,C.isMask,y,g,v,P,O,S),x=new Ue(A.calpha,"f");return new rt(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:P,seed:O,quality:S},A,C.mode,x,C.isMask,o)}case"normal":{let i=new zt(t.cnormal??new uo(1,1,1)),a=vr(t),s=new Va(i,a.alpha),l=new Ue(s.calpha,"f");return new rt(r,e,n,{cnormal:i,...a},s,a.mode,l,a.isMask,o)}case"gradient":{let i=new Be(t.gradientType??0),a=new ft(t.smooth??!1),s;t.colors?s=new Fr(t.colors.length,t.colors):(s=new Fr(10,new Qa(0,0,0,1)),s.value[1]=new Qa(1,1,1,1));let l;t.steps?l=new jr(t.steps.length,t.steps):(l=new jr(10,1),l.value[0]=0);let c=new st(t.offset??new kr(0,0)),u=new st(t.morph??new kr(0,0)),p=new se(t.angle??0),d=vr(t),h=new Fa(i,a,s,l,c,u,p,d.alpha,d.isMask),f=new Ue(h.calpha,"f");return new rt(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 Be(t.style??0),a=new Be(t.projection??0),s=new Be(["x","y","z"].indexOf(t.axis)??0),l=new se(t.blending??0),c=new st(t.offset??new kr(0,0)),u=new er(t.colorA),p=new er(t.colorB),d=new st(t.frequency??new kr(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 st(t.vertical??new kr(0,1)),P=new st(t.horizontal??new kr(0,1)),O=new Be(t.sides??6),S=vr(t),C=new Wa(i,a,s,l,c,u,p,d,h,f,m,y,g,v,P,O,S.alpha,S.isMask),A=new Ue(C.calpha,"f");return new rt(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:P,sides:O,...S},C,S.mode,A,S.isMask,o)}default:{let i=new He(1,0,0,1),a=vr(t),s=new ei(i,a.alpha),l=new Ue(s.calpha,"f");return new rt(r,e,n,{color:i,...a},s,a.mode,l,a.isMask,o)}}}function E3(n,r,e,t){let o=Nb(e,t);return N3(e,n,r,o,t)}function jf(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=bn(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 Iu(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 rr=class extends D3{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""}},Nu=class extends rr{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()}},ri=class extends rr{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,qe.startContext(this),this.reset0(e,t),qe.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 Nu(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){qe.startContext(this),(this.data!==e||o)&&this.reset0(e,t),qe.endContext(this)}reset0(e,t){this.data=e;let o=e.layers??Nt.defaultTwoLayerData("phong").layers;try{this.layers=o.map(i=>vn.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=Iu(e,t.shared),this.saveVariableLocations(t)}onVariableUpdate(e,t,o){if(e[0]==="alphaOverride")this.transparent=Iu(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=Iu(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 Xt),this.lightLayer===void 0&&(this.lightLayer=new Xt(0,"",{...xt.defaultData("light","phong"),visible:!1},new Ro,{},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 Xt);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 rt&&s.color instanceof gn&&(s.uuid===o&&(e.node.bumpMap=s.color),s.uuid===i&&(e.node.roughnessMap=s.color))}}updateByOp(e,t,o){if(qe.startContext(this),t!==void 0?this.data=t:t=this.data,this.transparent=Iu(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:bn(e.props.alpha,i,["material",this.uuid,"layer",a,"alpha"])}:c={...e.props,alphaOverride:bn(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);qe.endContext(this)}applyMasks(){for(let e=0;e<this.layers.length;++e){let t=this.layers[e];t instanceof rt?t.color.mask=void 0:t instanceof Xt&&(t.node.mask=void 0)}for(let e=0;e<this.layers.length;++e){let t=this.layers[e];if(t instanceof rt&&t.isMask.value&&t.data.visible&&e>0){let o=e-1,i=this.layers[o];i instanceof Xt?i.node.mask=new _t(t.color,t.alpha,_t.MUL):i instanceof rt&&(i.isMask.value||(i.color.mask=new _t(t.color,t.alpha,_t.MUL)))}}}blendColors(){let e=this.layers.findIndex(o=>o instanceof rt),t=this.layers.findIndex(o=>o instanceof Xt);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 rt){if(a.isMask.value)continue;o=new Ra(o,a.color,a.alpha,a.mode)}}this.fragment.color=o}else this.fragment.color=void 0}blendAfterColors(){let e=new Ue("outgoingLight","f"),t=this.layers.findIndex(o=>o instanceof Xt);if(this.layers.length>t+1){for(let o=t+1;o<this.layers.length;++o){let i=this.layers[o];if(i instanceof rt){if(i.isMask.value)continue;e=new Ra(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 nl);if(e.length>0){let t=e[0].position;for(let o=1;o<e.length;++o)e[o]&&(t=new _t(t,e[o].position,_t.ADD),t=new _t(t,new se(.5).setReadonly(!0),_t.MUL));this.fragment.position=t}else this.fragment.position=void 0}getDefines(){return this.defines}getUniforms(){return this.uniforms}getVertexShader(){return this.vertexShader}getFragmentShader(){return this.fragmentShader}onBeforeCompile(e){e.defines=this.defines,e.uniforms=this.uniforms,e.vertexShader=this.vertexShader,e.fragmentShader=this.fragmentShader,e.extensionDerivatives=this.extensions.derivatives===!0,e.extensionFragDepth=this.extensions.fragDepth===!0,e.extensionDrawBuffers=this.extensions.drawBuffers===!0,e.extensionShaderTextureLOD=this.extensions.shaderTextureLOD===!0}clampUniformsForPreview(e,t){let o=(i,a,s)=>Math.min(Math.max(i,a),s);for(let i of this.layers)if(i.type==="displace"){let a=o(i.uniforms[`f${i.id}_intensity`].value,e,t);i.uniforms[`f${i.id}_intensity`].value=a}}updateFrame(e){for(let t=0;t<this.updaters.length;++t)e.updateNode(this.updaters[t])}build(){let e=new Ba;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 rt){let t=e.params.texture;if(t instanceof Jn&&!t.image.loaded)return!1}return!0}};Object.defineProperties(rr.prototype,{properties:{get:function(){return this.fragment.properties}}});var oi=class extends ri{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 _3,Bb=new Promise(n=>{_3=n});var Lb;Bb.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:_b(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()}};import{Box2 as B3,Vector2 as ii,Path as Rb,Shape as L3,ShapeUtils as R3,Color as V3}from"three";var Eu=class{constructor(){this.type="ShapePath";this.color=new V3;this.subPaths=[];this.currentPath=null}moveTo(r,e){return this.currentPath=new Rb,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 P=m.x,O=y.x,S=g.x,C=v.x,A=m.y,x=y.y,E=g.y,N=v.y,I=(C-S)*(A-E)-(N-E)*(P-S),D=(O-P)*(A-E)-(x-A)*(P-S),_=(N-E)*(O-P)-(C-S)*(x-A),B=I/_,V=D/_;if(_===0&&I!==0||B<=0||B>=1||V<0||V>1)return null;if(I===0&&_===0){for(let U=0;U<2;U++)if(i(U===0?g:v,m,y),t.loc===e.ORIGIN){let R=U===0?g:v;return{x:R.x,y:R.y,t:t.t}}else if(t.loc===e.BETWEEN){let R=+(P+t.t*(O-P)).toPrecision(10),W=+(A+t.t*(x-A)).toPrecision(10);return{x:R,y:W,t:t.t}}return null}else{for(let W=0;W<2;W++)if(i(W===0?g:v,m,y),t.loc===e.ORIGIN){let j=W===0?g:v;return{x:j.x,y:j.y,t:t.t}}let U=+(P+B*(O-P)).toPrecision(10),R=+(A+B*(x-A)).toPrecision(10);return{x:U,y:R,t:B}}}function i(m,y,g){let v=g.x-y.x,P=g.y-y.y,O=m.x-y.x,S=m.y-y.y,C=v*S-O*P;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||P*S<0){t.loc=e.BEHIND;return}if(Math.sqrt(v*v+P*P)<Math.sqrt(O*O+S*S)){t.loc=e.BEYOND;return}let A;v!==0?A=O/v:A=S/P,t.loc=e.BETWEEN,t.t=A}function a(m,y){let g=[],v=[];for(let P=1;P<m.length;P++){let O=m[P-1],S=m[P];for(let C=1;C<y.length;C++){let A=y[C-1],x=y[C],E=o(O,S,A,x);E!==null&&g.find(N=>N.t<=E.t+Number.EPSILON&&N.t>=E.t-Number.EPSILON)===void 0&&(g.push(E),v.push(new ii(E.x,E.y)))}}return v}function s(m,y,g){let v=new ii;y.getCenter(v);let P=[];return g.forEach(O=>{O.boundingBox.containsPoint(v)&&a(m,O.points).forEach(C=>{P.push({identifier:O.identifier,isCW:O.isCW,point:C})})}),P.sort((O,S)=>O.point.x-S.point.x),P}function l(m,y,g,v,P){(P==null||P==="")&&(P="nonzero");let O=new ii;m.boundingBox.getCenter(O);let S=[new ii(g,O.y),new ii(v,O.y)],C=s(S,m.boundingBox,y);C.sort((D,_)=>D.point.x-_.point.x);let A=[],x=[];C.forEach(D=>{D.identifier===m.identifier?A.push(D):x.push(D)});let E=A[0].point.x,N=[],I=0;for(;I<x.length&&x[I].point.x<E;)N.length>0&&N[N.length-1]===x[I].identifier?N.pop():N.push(x[I].identifier),I++;if(N.push(m.identifier),P==="evenodd"){let D=N.length%2===0,_=N[N.length-2];return{identifier:m.identifier,isHole:D,for:_}}else if(P==="nonzero"){let D=!0,_=null,B=null;for(let V=0;V<N.length;V++){let U=N[V];y[U]&&(D?(B=y[U].isCW,D=!1,_=U):B!==y[U].isCW&&(B=y[U].isCW,D=!0))}return{identifier:m.identifier,isHole:D,for:_}}else console.warn('fill-rule: "'+P+'" is currently not implemented.')}let c=0,u=999999999,p=-999999999,d=[];this.subPaths.forEach(m=>{let y=m.getPoints(),g=-999999999,v=999999999,P=-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>P&&(P=C.x),C.x<O&&(O=C.x)}p<=P&&(p=P+1),u>=O&&(u=O-1),y.length&&d.push({curves:m.curves,points:y,isCW:R3.isClockWise(y),identifier:c++,boundingBox:new B3(new ii(O,v),new ii(P,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 L3;g.curves=m.curves,h.filter(P=>P?.isHole&&P.for===m.identifier).forEach(P=>{if(P){let O=d[P.identifier],S=new Rb;S.curves=O.curves,g.holes.push(S)}}),f.push(g)}}),f}};var Ff=!1,Gb,Uf=new Promise(n=>{Gb=n}),Vb=!1;var Du;function zb(){if(Ff=!0,Vb)return;if(Du)return Du;async function n(){let e=await import("./opentype.js");Gb(e),Vb=!0}return Du=n(),Du}var il=class{async load(r,e,t=()=>{}){let{load:o}=await Uf;o(r,(i,a)=>{i||!a?t(i??"Something went wrong"):e(a)})}async parse(r){let{parse:e,Bidi:t}=await Uf;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 G3(n){return await(await fetch(n)).arrayBuffer()}var z3=new il;async function kf(n){let r,e,t=!1;if(n.url?(r=await G3(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(Ff){let o=await z3.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}}import{CubicBezierCurve as j3,LineCurve as F3,QuadraticBezierCurve as U3}from"three";function k3(n,r){return r.state.glyphIndex===n||r.state.fina===n||r.state.medi===n||r.state.init===n}var _u=class{constructor(r){this._arrayBuffer=new ArrayBuffer(1);this._isLoaded=!1;this._intercepted=!1;this._isUserFont=r.isUserFont??!1,this._loadingPromise=kf(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=kf(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(k3(u,d)||l)a.push({char:p,index:u,replacements:[d.state.glyphIndex],replacementChars:[d.char]}),s++;else{let h=d.char,f="",m=[d.state.glyphIndex],y=[],g=!1;for(;!g;)s++,f=e.charAt(s),h+=f,m.push(r.charToGlyphIndex(f)),y=r.stringToGlyphs(h),y.length===1&&y[0].index===u&&(g=!0),s>e.length&&(g=!0);a.push({char:p,index:u,replacements:m,replacementChars:Array.from(h)}),s++}}return a}generateShapes(r,e){if(!this._isLoaded)return;let t=this.font,o=e.fontSize/this.unitsPerEm,i=e.fontSize*e.lineHeight,a=r.map(v=>this.getTextWidth(v,e)),s=e.width,l=this.getCharWidth(`
|
|
2231
|
+
`,e),c=e.horizontalAlign===1?l:0,u=this.computeSpaceWidthForLine(r,0,e),p=this.getLineInitialOffsetX(a[0],s,e.horizontalAlign,r[0],l),d=this.getLineInitialOffsetY(i,r.length,e.height,o,e.verticalAlign),h=[],f=r.map(v=>[]),m=r.map(v=>[]),y;for(let v=0;v<r.length;v++){let P=r[v],O={features:{liga:!0}},S=[];try{S=t.stringToGlyphs(P,O)}catch(A){console.warn(A)}p=this.getLineInitialOffsetX(a[v],s,e.horizontalAlign,P,l);let C=[];try{C=this.reverseLigaturesTable(t,P,S)}catch(A){console.warn(A)}u=this.computeSpaceWidthForLine(r,v,e);for(let A=0;A<S.length;A++){let x=S[A],E=x.index===0?`
|
|
2232
|
+
`:x.unicode?String.fromCharCode(x.unicode):void 0,N=C[A],I=0,D=0;A===0&&e.horizontalAlign===2&&x.leftSideBearing!==void 0&&(D=-x.leftSideBearing*o),y&&(I=t.getKerningValue(x,y)*o),p+=D+I;let _=0;if(E===`
|
|
2233
2233
|
`)_=c;else if(E===" ")_=u;else{let B=this.createPath(x,o,p,d,e);B&&(_=B.offsetX-(I+D),h.push(B.path))}if(N.replacements.length===1)m[v].push([p,d]),f[v].push(_);else{let B=N.replacements.map(W=>(t.glyphs.get(W).advanceWidth??0)*o),V=B.reduce((W,j)=>W+=j,0),U=B.map(W=>W/V),R=p;for(let W=0;W<U.length;W++){let j=_*U[W];m[v].push([R,d]),f[v].push(j),R+=j}}p+=_,y=x}d-=i}let g=[];for(let v=0,P=h.length;v<P;v++)g.push(...h[v].toShapes());return{shapes:g,charWidths:f,lineWidths:a,charCoords:m}}get isUserFont(){return this._isUserFont}get arrayBuffer(){return this._arrayBuffer}get ascender(){return this.font?.ascender??0}get descender(){return this.font?.descender??0}get familyName(){return this.font?.names.fontFamily??""}get subfamilyName(){return this.font?.names.fontSubfamily??""}get unitsPerEm(){return this.font?.unitsPerEm??1}getLineInitialOffsetX(r,e,t,o,i){return(t===3||t===2)&&o.indexOf(`
|
|
2234
|
-
`)>=0&&(r-=i),t===3?e*.5-r*.5:t===2?e-r:0}getLineInitialOffsetY(r,e,t,o,i){let a=e*r,s=Math.abs(this.ascender-this.descender)*o,l=r-s,c=-this.ascender*o-l/2;return i===3?-(t-a-c):i===2?-(t*.5-a*.5-c):c}createPath(r,e,t,o,i){let a=r.getPath(t,-o,i.fontSize,{kerning:!1,letterSpacing:i.letterSpacing});if(!a){console.error('THREE.Font: character "'+r+'" does not exists in font family '+this.familyName+".");return}let s=new
|
|
2234
|
+
`)>=0&&(r-=i),t===3?e*.5-r*.5:t===2?e-r:0}getLineInitialOffsetY(r,e,t,o,i){let a=e*r,s=Math.abs(this.ascender-this.descender)*o,l=r-s,c=-this.ascender*o-l/2;return i===3?-(t-a-c):i===2?-(t*.5-a*.5-c):c}createPath(r,e,t,o,i){let a=r.getPath(t,-o,i.fontSize,{kerning:!1,letterSpacing:i.letterSpacing});if(!a){console.error('THREE.Font: character "'+r+'" does not exists in font family '+this.familyName+".");return}let s=new Eu,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=H3(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 H3(n){if(n.length){let r=n[0];if(r instanceof F3)return r.v1;if(r instanceof j3||r instanceof U3)return r.v0}}var Hf=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()}},al=class extends Hf{constructor(e){super();this.flatShading=e}disposeObject(e){e.dispose()}createObject(e,t,o){let i=Bo(e,t,this.flatShading,o);return i.computeBoundingSphere(),i}};var jb={markNeedsUpdateRendererDirty:()=>{}};import{MathUtils as Hb}from"three";function ai(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 Lu=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=ai();this._innerCallUserAPI=async r=>{this.emitter.emit("start",{userAPIId:this.id}),this.isLoading=!0,this.isLoading=!1;try{this.result=await X3(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=rc(this.prefetch,1e3,{trailing:!0})}_updateDebouncedCallUserAPI(){this._debouncedCallUserAPI=this.userAPI.debounce!==void 0&&this.userAPI.debounce>0?rc(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 Ze.zoom(this.result,r)}catch(e){console.error(e)}}retrieveZoomedKeyValues(r){if(this.result){let e=r&&r.length?Ze.zoom(this.result,r):this.result;if(Y3(e))return Object.entries(e);if($3(e))return e.map((t,o)=>[o.toString(),t]);throw q3(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 W3(n){let r=new Headers;return n.headers.forEach(e=>{e.data.key!==""&&r.append(e.data.key,e.data.value)}),r}function q3(n){return typeof n=="string"||typeof n=="number"||typeof n=="boolean"||n===null}function $3(n){return Array.isArray(n)}function Y3(n){return typeof n=="object"&&n!==null}async function X3(n,r,e=new AbortController){let t,o=n.url,i=n.proxy?.enabled??!1;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}`;else if(n.integration?.type==="OpenAI"){let s=Bu(n.integration.prompt===""?[]:JSON.parse(n.integration.prompt),r),l=n.integration.behavior===""?[]:Bu(JSON.parse(n.integration.behavior),r);t=`{
|
|
2235
2235
|
"model": "${n.integration.model}",
|
|
2236
2236
|
"messages": [${n.integration.useBehavior?`
|
|
2237
2237
|
{
|
|
2238
2238
|
"role": "system",
|
|
2239
|
-
"content": "${
|
|
2239
|
+
"content": "${l}"
|
|
2240
2240
|
},`:""}
|
|
2241
2241
|
{
|
|
2242
2242
|
"role": "user",
|
|
2243
|
-
"content": "${
|
|
2243
|
+
"content": "${s}"
|
|
2244
2244
|
}
|
|
2245
2245
|
]
|
|
2246
|
-
}`}else n.method==="POST"&&n.body&&(t=
|
|
2247
|
-
`:"")+Eu(e.children,r);if(e.type==="variable"){let o=r.getVariable(e.variableId);if(o!==void 0)return Lb(o,r)}}return""}).join("");var Bu=1e3,Rb=512*Bu;function N3(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 Vb="https://hooks.spline.design",D3=`${Vb}/events?hashFile=`,Lee=`${Vb}/`,Lu=class{constructor(r,e){this.id=r;this.userWebhook=e;this.result=void 0;this._connected=!1;this.emitter=ii();this.reconnectWaitFor=Bu;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=Bu,this._connected=!0};this._onDisconnected=()=>{clearTimeout(this.scheduledReconnectHandle),this.reconnectWaitFor=Bu,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&&N3(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(D3+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>Rb&&(this.reconnectWaitFor=Rb),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 _c.defaultParameterValueByType(t.data.type)}}};function zb(n){return"variable_"+n}var Uf=class extends Cu{constructor(e){super();this.shared=e}create(e){return new Ka(e,this.shared)}},ai=class{constructor(r,e={},t=!0,o=!1){this.data=r;this.needsJitter=t;this.enableLocalStorageForPersistentVariables=o;this.geometryCache=new al(!0);this.geometryCache2=new al(!1);this.imageHolderCache=new Uf(this);this.thisContext={scene:Bb,shared:this};this.deletedMaterial=new ri(It.defaultTwoLayerData("phong"),this.thisContext,"");this.deletedImage=new dr(Gc.emptyImage,this);this.deletedVideo=new dr(Qi.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 ri(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 ti(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 dr(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 dr(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 dr(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 gn(e.r,e.g,e.b,e.a):this.colors[r]=new gn(e.r,e.g,e.b,1),!1)}updateColor(r,e){if(this.colors[r]){this.onColorOrImageUpdate&&this.onColorOrImageUpdate();let t=this.colors[r];return this.colors[r].r=e.r??t.r,this.colors[r].g=e.g??t.g,this.colors[r].b=e.b??t.b,this.colors[r].a=e.a??t.a,!0}return!1}deleteColor(r){this.colors[r]&&delete this.colors[r]}getColor(r){return this.colors[r]}color(r){let e;if(typeof r=="string"){let t=this.getColor(r);t?e=t:(console.warn("Tried to create color layer params with a color key that does not exist in the assets manager"),e=new Tt(0,0,0,0))}else return"a"in r?new Tt(r.r,r.g,r.b,r.a):new Tt(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 oi)return e;{let t=new oi({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 oi&&e.dispose(),delete this.audios[r])}addFont(r,e){this.fonts[r]=new Du(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 oi&&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(zb(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(zb(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*Gb.DEG2RAD:s[a[a.length-1]]=t}if(s=o.find(a[0]),s.type==="ParticleEmitter"&&s.updateVariableState(t,a),Re.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()})}}}}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*=Gb.RAD2DEG),t}for(let t in this.variables){if(e===void 0)break;let o=this.variables[t],i=o.locations?.findIndex(a=>Ze.equal(a,e));i!==void 0&&i!==-1&&o.locations.splice(i,1)}if(typeof r=="string"){let t=r,o=r;do{if(o=t,this.variables[t]===void 0)break;let i=this.variables[t].value;e&&this.variables[o]!==void 0&&this.variables[o].locations.push(e),t=i}while(typeof t=="string");return t}else return r}getVariables(){return this.variables}getDynamicVariablePlayState(r){return this.variables[r]?.dynamicVariablePlayState}setDynamicVariablePlayState(r,e){this.variables[r]!==void 0&&(this.variables[r].dynamicVariablePlayState=e)}getDynamicVariableToggleIsForward(r){return this.variables[r]?.dynamicVariableToggleIsForward}setDynamicVariableToggleIsForward(r,e){this.variables[r]!==void 0&&(this.variables[r].dynamicVariableToggleIsForward=e)}resetLib(r){for(let[e,t]of Object.entries(r.images))this.addImage(e,t.asset);for(let[e,t]of Object.entries(r.audios))this.addAudio(e,t.asset);for(let[e,t]of Object.entries(r.particles))this.addParticle(e,t.asset);for(let[e,t]of Object.entries(r.colors))this.addColor(e,t.asset);for(let[e,t]of Object.entries(r.fonts))this.addFont(e,t.asset);for(let[e,t]of Object.entries(r.materials))this.addMaterial(e,t.asset);for(let[e,t]of Object.entries(r.videos))this.addVideo(e,t.asset);for(let[e,t]of Object.entries(r.variables))this.addVariableHolder(e,t.asset)}updateLibByOp(r,e){r.path[0]==="images"?r.path.length===1&&r.type===1?this.addImage(r.id,r.data.asset):r.path.length===1&&r.type===2&&this.deleteImage(r.id):r.path[0]==="videos"?r.path.length===1&&r.type===1?this.addVideo(r.id,r.data.asset):r.path.length===1&&r.type===2&&this.deleteVideo(r.id):r.path[0]==="audios"?r.path.length===1&&r.type===1?this.addAudio(r.id,r.data.asset):r.path.length===1&&r.type===2&&this.deleteAudio(r.id):r.path[0]==="particles"?r.path.length===1&&r.type===1?this.addParticle(r.id,r.data.asset):r.path.length===1&&r.type===2&&this.deleteParticle(r.id):r.path[0]==="colors"?r.path.length===1&&r.type===1?this.addColor(r.id,r.data.asset):r.path.length===1&&r.type===2&&this.deleteColor(r.id):r.path[0]==="materials"?r.path.length===1&&r.type===1?this.addMaterial(r.id,r.data.asset):r.path.length===1&&r.type===2&&this.deleteMaterial(r.id):r.path[0]==="fonts"?r.path.length===1&&r.type===1?this.addFont(r.id,r.data.asset):r.path.length===1&&r.type===2&&this.deleteFont(r.id):r.path[0]==="variables"?r.path.length===1&&r.type===1?this.addVariableHolder(r.id,r.data.asset):r.path.length===1&&r.type===2&&this.deleteVariable(r.id):r.path[0]==="components"&&e.updateByLibOp(r,this)}updateByOp(r,e,t){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(nt.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]];o&&this.getUserAPI(r.path[1])?.update(o,this)}}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(nt.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.userAPIs[r]=new _u(r,e,this),!1)}getUserAPI(r){return 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 Lu(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])}},jb=new ai(xr.emptyData());var rr=class extends Ot{updateByPatchedOp(e,t,o){if(super.updateByPatchedOp(e,t,o),mg(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(Le(e.path,["material"])&&this.material instanceof tr)"material"in t&&typeof t.material!="string"&&this.material.updateByOp(nt.drop(e,1),t.material,o);else if(Le(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(nt.drop(e,2),a,o)}}}get needsAO(){return this.material!==void 0?(Array.isArray(this.material)?this.material[0]:this.material).hasAO:!1}updateState(e,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&&Il(this.material).forEach(e=>{e instanceof tr&&(e instanceof ri||e.nodeMaterialDispose())})}dispose(){this.disposeMaterial(),super.dispose()}};import{BufferGeometry as _3,Matrix4 as kf,Vector3 as Wb,Vector4 as Hf}from"three";var Fb=new Wb,Ub=new Hf,kb=new Hf,B3=new Wb,Hb=new kf,lt=class extends rr{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 kf().fromArray(t.bindMatrix),this.bindMatrixInverse=new kf)}chooseGeoemtryCache(e){return e.geometryCache}markGeometryAsReachable(e){this.geometryCreateDeleyed instanceof _3&&this.chooseGeoemtryCache(e).markAsReachable(this.dataPatched.geometry,this.geometryCreateDeleyed)}get geometry(){if(this.localGeometry!==void 0)return this.localGeometry;if(this.geometryCreateDeleyed instanceof ai){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 As.is2DParametricMesh(e.type)&&e.depth===0}get is2DType(){return As.is2DParametricMesh(this.geometry.userData.type)}get isNonParametric(){return this.geometry.userData.type==="NonParametricGeometry"}updateByPatchedOp(e,t,o){super.updateByPatchedOp(e,t,o),Le(e.path,["geometry"])&&this.updateByPatchedOpGeometry(nt.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=Bo(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&&$s(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=Bo(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 mt&&this.chooseGeoemtryCache(o.shared).mutateIfUnique(this.geometryCreateDeleyed.data,t)===this.geometryCreateDeleyed&&(i=!0,this.geometryCreateDeleyed.mutateDirectlyScaleBaked(t,e.props.scaleBaked),this.refreshAttachedCloners(o),this.refreshAttachedPaths(o)),i||(o.scene?.markGeometryCacheDirty(),this.createGeometryDelayed(o)),this.resetBBoxNeedsUpdate(),this.invalidateDownstreamBooleanData()}updateGeometryOnStateUpdate(e,t){this.createGeometryDelayed(t)}updateState(e,t){e.geometry!==void 0&&this.updateGeometryOnStateUpdate(e.geometry,t),super.updateState(e,t)}updateGeometryGroupsIfNeeded(){Array.isArray(this.material)&&this.geometry.groups.length===0&&this.geometry.addGroup(0,Math.max(this.geometry.getIndex()?.count??0,this.geometry.getAttribute("position").count),0)}updateEntityBoxSize(e,t){let o=this.geometry.userData.parameters;this.is2DType?e.set(0,0,o.depth*.5):this.isNonParametric?(e.setScalar(0),this.geometry.boundingSphere&&e.copy(this.geometry.boundingSphere.center),t.set(o.width,o.height,o.depth??0).multiplyScalar(.5)):e.setScalar(0),t.set(o.width,o.height,o.depth??0).multiplyScalar(.5)}updateMatrixWorld(e){super.updateMatrixWorld(e),this.bindMode==="attached"?this.bindMatrixInverse.copy(this.matrixWorld).invert():this.bindMode==="detached"&&this.bindMatrixInverse.copy(this.bindMatrix).invert()}bind(e,t){this.skeleton=e,this.isSkinnedMesh=!0,t===void 0&&(this.updateMatrixWorld(!0),this.skeleton.calculateInverses(),t=this.matrixWorld),this.bindMatrix.copy(t),this.bindMatrixInverse.copy(t).invert()}pose(){this.skeleton.pose()}normalizeSkinWeights(e){let t=new Hf,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;Ub.fromBufferAttribute(i.attributes.skinIndex,e),kb.fromBufferAttribute(i.attributes.skinWeight,e),Fb.copy(t).applyMatrix4(this.bindMatrix),t.set(0,0,0);for(let a=0;a<4;a++){let s=kb.getComponent(a);if(s!==0){let l=Ub.getComponent(a);Hb.multiplyMatrices(o.bones[l].matrixWorld,o.boneInverses[l]),t.addScaledVector(B3.copy(Fb).applyMatrix4(Hb),s)}}return t.applyMatrix4(this.bindMatrixInverse)}};function R3(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 qf(o[a],o[a+1],o[a+2]);r.has(s)?r.get(s)?.normals.push(l):r.set(s,{normals:[l],result:new qf})}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 qb(i,3))}function V3(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 qf;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 qb(t,3))}function Za(n){if(Array.isArray(n.material)){for(let r of n.material)if(r.getLayersOfType("outline").length===0)return}else if(!(n.material instanceof tr)||n.material.getLayersOfType("outline").length===0)return;n instanceof lt&&n.is2DAndNoDepth?V3(n):R3(n)}function Ja(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=[Wf.seededRandom(o),Wf.seededRandom(o+1e4),Wf.seededRandom(o+2e4)];for(let a=0;a<e.length;a++)t[a]=i[a%3];n.geometry.setAttribute("randomColor",new L3(t,3))}var uo=new G3,sl=new j3;function Yb(n){let r=!1;return n.scene.objects.traverse((e,t)=>{t.type==="Mesh"&&t.geometry.type==="SubdivGeometry"&&(r=!0)}),r}var si=class extends lt{constructor(e,t,o){super(e,t,o);this.data=t;this.hiddenMatrixOld=new z3;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}=mt.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,Za(this),Ja(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){mt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0),this.subdividedGeometry&&mt.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0)}updateTopology(){this.originalGeometry.dispose(),this.originalGeometry=mt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=mt.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,Ot.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 $b,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let t=e.attributes.position,o=e.boundingSphere.center;uo.setFromBufferAttribute(t),uo.getCenter(o),e.boundingSphere.radius=o.distanceTo(uo.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),uo.getSize(sl),this.hasNonUniformScale&&sl.divide(this.scale);let i={width:sl.x,height:sl.y,depth:sl.z};return this.geometry.userData.parameters=i,i}updateBoundingSphere(e){let t=this.originalGeometry;uo.min.set(e[0],e[2],e[4]),uo.max.set(e[1],e[3],e[5]),this.hasNonUniformScale&&(uo.min.applyMatrix4(this.shearScaleInv),uo.max.applyMatrix4(this.shearScaleInv)),t.boundingSphere===null&&(t.boundingSphere=new $b);let o=t.boundingSphere.center;uo.getCenter(o),t.boundingSphere.radius=o.distanceTo(uo.max)}freeSubdivPointer(){this.subdivPointer&&(mt.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)}};import{Triangle as F3,Vector3 as ci}from"three";var Xb=-1,U3=1,Kb={x:[1,0,0],"-x":[-1,0,0],y:[0,1,0],"-y":[0,-1,0],z:[0,0,1],"-z":[0,0,-1]},Qb={polygon_center:0,edge:1,vertex:2},ll=(n,r)=>(e,t)=>!r||e===0||n===0?0:n*t/100,Te=(n,r)=>{let e=Math.abs(r),t=e*-1;return(n-Xb)*(e-t)/(U3-Xb)+t};function Zb(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 k3=new ci,Ru=new ci,H3=new ci,W3=new ci;function es(n,r){let e=H3.fromArray(n),t=W3.fromArray(r);Ru.copy(t).sub(e);let o=Ru.length();return Ru.normalize().multiplyScalar(o*.5),k3.copy(e).add(Ru).toArray()}var Sr=new F3,Vu=new ci,Gu=new ci,li=new ci;function Jb(n){let r=[];for(let e=0;e<=n.index.count;e++)if(Vu.fromArray(n.index.array,e*3),Sr.setFromAttributeAndIndices(n.attributes.position,Vu.x,Vu.y,Vu.z),Sr.getNormal(Gu),Sr.getMidpoint(li),!(isNaN(li.x)||isNaN(li.y)||isNaN(li.z))){let{a:t,b:o,c:i}=Sr,a=t.toArray(),s=o.toArray(),l=i.toArray(),c=t.distanceTo(o),u=o.distanceTo(i),p=i.distanceTo(t),d=es(a,s),h=es(s,l),f=es(l,a),m=[c,u,p],y=Math.max(...m),g=m.filter(O=>Math.round(O)===Math.round(y)).length>1,v=[],P=Sr.getMidpoint(li).toArray();y===c&&!g&&(v=[h,f,f],P=d),y===u&&!g&&(v=[d,f,f],P=h),y===p&&!g&&(v=[d,h,h],P=f),g&&(v=[d,h,f]),r.push({vertices:[a,s,l],faceCenters:v,midpoint:P,norm:Sr.getNormal(Gu).toArray()})}return r}function ev(n){let r=[],{position:e}=n.attributes;for(let t=0;t<e.count;t++){Sr.setFromAttributeAndIndices(e,t*3,t*3+1,t*3+2),Sr.getNormal(Gu),Sr.getMidpoint(li);let o=Sr.a.toArray(),i=Sr.b.toArray(),a=Sr.c.toArray();r.push({vertices:[o,i,a],faceCenters:[es(o,i),es(i,a),es(a,o)],midpoint:li.toArray(),norm:Gu.toArray()})}return r}var q3=4,$3=.5,$f=n=>.5*(1-Math.cos(n*Math.PI)),Yf=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<q3;g++){let v=o+(i<<4)+(a<<8);u=$f(s),p=$f(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+=$f(c)*(m-f),d+=f*h,h*=$3,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()}},tv=Yf;import{Vector3 as Y3,Matrix4 as X3,Ray as K3}from"three";var rv=new Y3,ov=new X3,nv=new K3;function iv(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 vn=class extends lt{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)&&(ov.copy(o).invert(),nv.copy(e.ray).applyMatrix4(ov),nv.intersectBox(this.singleBBox,rv))){let i=rv.applyMatrix4(o),a=e.ray.origin.distanceTo(i);t.push({distance:a,point:i.clone(),object:this})}}};var Xt=1e-4,po,cv,uv,dv,sv=new pr,lv=new pr;mu.then(n=>{po=n,cv=[po.get_face_center,po.get_edge_midpoint,po.get_vertex_position],uv=[po.get_face_normal,po.get_edge_normal,po.get_vertex_normal],dv=[po.face_count,po.edge_count,po.vertex_count]});var Z3=new ui,J3=new ui,Sn=new pr,zu=new pr,cl=new pr,Kf=new pr,eD=new pr,tD=new pr;var zo=new tv,rs=class extends ca(Q3){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 No&&t.expand()}invalidateTransform(e){this.matrixWorldNeedsUpdate=!0,this.traverse(t=>{t instanceof No&&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 No(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 No(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*av.DEG2RAD,i=t.end*av.DEG2RAD,a=o-i,s=new Xf(t.rotation[0],t.rotation[1],t.rotation[2]),l;switch(t.axis){case"z":l=new pr(0,0,1);break;case"y":l=new pr(0,1,0);break;default:case"x":l=new pr(1,0,0);break}let c=e.randomnessObject??Zr.defaultData([1,1,1]).randomnessObject,u=c.noiseType==="perlin";zo.noiseSeed(c.seed);let p=kc((0,ts.default)(c.seed)),d=ll(c.strength,this.parameters.randomness);for(let[h,f]of this.children.entries()){let m=h*(c.freqScale/10)+c.movement,y=u?zo.noise(m):p(m,m),g=h+1;f.scale.x=t.scale[0]+d(g,Te(y,c.scale[0]))||Xt,f.scale.y=t.scale[1]+d(g,Te(y,c.scale[1]))||Xt,f.scale.z=t.scale[2]+d(g,Te(y,c.scale[2]))||Xt,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,Te(y,c.position[0])),f.position.y+=t.position[1]+d(g,Te(y,c.position[1])),f.position.z+=t.position[2]+d(g,Te(y,c.position[2]));let P=d(g,Te(y,c.rotation[0])),O=d(g,Te(y,c.rotation[1])),S=d(g,Te(y,c.rotation[2]));t.alignment===!0?(f.rotation.x+=s.x+P,f.rotation.y+=s.y+O,f.rotation.z+=s.z+S):f.rotation.set(s.x+P,s.y+O,s.z+S)}}_updateLinear(e){if(e.type!=="linear")throw new Error;let t=e.linear,o=new Xf(t.rotation[0],t.rotation[1],t.rotation[2]),i=e.randomnessObject??Zr.defaultData([1,1,1]).randomnessObject,a=i.noiseType==="perlin";zo.noiseSeed(i.seed);let s=kc((0,ts.default)(i.seed)),l=ll(i.strength,this.parameters.randomness);for(let[c,u]of this.children.entries()){let p=c*(i.freqScale/10)+i.movement,d=a?zo.noise(p):s(p,p),h=c+1,f=l(h,Te(d,i.rotation[0])),m=l(h,Te(d,i.rotation[1])),y=l(h,Te(d,i.rotation[2]));u.scale.x=1+(t.scale[0]-1)*c+l(h,Te(d,i.scale[0]))||Xt,u.scale.y=1+(t.scale[1]-1)*c+l(h,Te(d,i.scale[1]))||Xt,u.scale.z=1+(t.scale[2]-1)*c+l(h,Te(d,i.scale[2]))||Xt,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,Te(d,i.position[0])),u.position.y=t.position[1]*c+l(h,Te(d,i.position[1])),u.position.z=t.position[2]*c+l(h,Te(d,i.position[2]))}}_updateGrid(e){let t=0,o=e.grid,i=e.randomnessObject??Zr.defaultData([1,1,1]).randomnessObject,a=ll(i.strength,this.parameters.randomness),s=i.noiseType==="perlin";zo.noiseSeed(i.seed);let l=Px((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 pr(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?zo.noise(...f):l(...f),y=this.children[t++];y.scale.x=1+a(t,Te(m,i.scale[0]))||Xt,y.scale.y=1+a(t,Te(m,i.scale[1]))||Xt,y.scale.z=1+a(t,Te(m,i.scale[2]))||Xt;let g=a(t,Te(m,i.rotation[0])),v=a(t,Te(m,i.rotation[1])),P=a(t,Te(m,i.rotation[2]));y.rotation.set(g,v,P),y.position.x=o.size[0]*p-u.x+a(t,Te(m,i.position[0])),y.position.y=o.size[1]*d-u.y+a(t,Te(m,i.position[1])),y.position.z=o.size[2]*h-u.z+a(t,Te(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?zo.noise(...d):l(...d),f=this.children[t++];f.scale.x=1+a(t,Te(h,i.scale[0]))||Xt,f.scale.y=1+a(t,Te(h,i.scale[1]))||Xt,f.scale.z=1+a(t,Te(h,i.scale[2]))||Xt;let m=a(t,Te(h,i.rotation[0])),y=a(t,Te(h,i.rotation[1])),g=a(t,Te(h,i.rotation[2]));f.rotation.set(m,y,g),f.position.x=o.size[0]*c+a(t,Te(h,i.position[0])),f.position.y=-o.size[1]*u+a(t,Te(h,i.position[1])),f.position.z=-o.size[2]*p+a(t,Te(h,i.position[2]))}}_updateToObject(e){if(e.type!=="toObject")throw new Error;let{toObject:t}=e,o=new Xf(t.rotation[0],t.rotation[1],t.rotation[2]),i=e.randomnessObject??Zr.defaultData([1,1,1]).randomnessObject,a=i.noiseType==="perlin";zo.noiseSeed(i.seed);let s=kc((0,ts.default)(i.seed)),l=ll(i.strength,this.parameters.randomness);if(!t.object){for(let[,g]of this.children.entries())g.position.set(0,0,0),g.scale.setScalar(1),g.rotation.set(0,0,0);this.objectForSample=void 0;return}if(!this.objectForSample)return;if(this.objectForSample instanceof vn)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,P=g.map(T=>T[0]).reduce((T,A)=>T+A,0),O=g.map(T=>T[1]).reduce((T,A)=>T+A,0),S=g.map(T=>T[2]).reduce((T,A)=>T+A,0);return[P/v,O/v,S/v]},d=g=>Math.round(g*1e6)/1e6;c.forEach(g=>{let v=c.filter(P=>d(g.pos[0])===d(P.pos[0])&&d(g.pos[1])===d(P.pos[1])&&d(g.pos[2])===d(P.pos[2]));v.length>1?u.push({pos:g.pos,norm:p(v.map(P=>P.norm))}):u.push(g)});let h=Zb(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 Hc(this.objectForSample).build(),m=Kb[t.axis],y=this.children;f.setRandomGenerator((0,ts.default)(this.object.uuid+t.seed));for(let[g,v]of y.entries()){let P=g*(i.freqScale/10)+i.movement,O=a?zo.noise(P):s(P,P),S=g+1,T=l(S,Te(O,i.rotation[0])),A=l(S,Te(O,i.rotation[1])),x=l(S,Te(O,i.rotation[2]));t.spreadType==="random"?f.sample(cl,Kf):(h.length&&(cl.fromArray(h[g].pos),Kf.fromArray(h[g].norm)),this.objectForSample instanceof si&&cl.applyMatrix4(Z3.copy(this.objectForSample.matrixWorld).invert())),cl.applyMatrix4(this.object.hiddenMatrix.clone().invert()),v.position.copy(cl),Sn.fromArray(m);let E=t.align==="normal"?Kf:this.object.getWorldDirection(tD),N=zu.fromArray(t.position);zu.x+=l(S,Te(O,i.position[0])),zu.y+=l(S,Te(O,i.position[1])),zu.z+=l(S,Te(O,i.position[2]));let I=Math.acos(E.dot(Sn)),D=eD.crossVectors(Sn,E).normalize(),_=J3.makeRotationAxis(D,I),B=E.clone().cross(this.object.up).normalize(),V=B.clone().cross(E).normalize(),U=new ui().makeBasis(B,E,V),R=new pr(Sn.y,Sn.z,Sn.x).normalize(),W=R.clone().cross(Sn).normalize(),j=new ui().makeBasis(R,Sn,W).invert(),F=new ui().multiplyMatrices(U,j);v.rotation.setFromRotationMatrix(F),N.applyMatrix4(_),v.position.add(N),v.rotation.x=v.rotation.x+o.x+T,v.rotation.y=v.rotation.y+o.y+A,v.rotation.z=v.rotation.z+o.z+x,v.scale.setScalar(1),v.scale.x=v.scale.x+t.scale[0]+l(S,Te(O,i.scale[0]))||Xt,v.scale.y=v.scale.y+t.scale[1]+l(S,Te(O,i.scale[1]))||Xt,v.scale.z=v.scale.z+t.scale[2]+l(S,Te(O,i.scale[2]))||Xt,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 si){let t=this.objectForSample,o=Qb[e],i=dv[o],a=cv[o],s=uv[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);sv.fromArray(p).applyMatrix4(t.matrixWorld),lv.fromArray(d),l.push({pos:sv.toArray(),norm:lv.toArray()})}return l}else return(this.objectForSample.geometry.index?Jb(this.objectForSample.geometry):ev(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=So(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 Ot?this.objectForSample=o:this.objectForSample=void 0,this.matrix=new ui,this.hiddenMatrix=new ui,this.matrixWorldNeedsUpdate=!0,this.matrixAutoUpdate=!1,o&&o.add(this)}this.update()}get pendingMediaLoad(){return this._pendingMediaLoad}};import{Scene as v_,Vector3 as S_,Matrix4 as w_,Box3 as P_,MeshBasicMaterial as O_,Skeleton as C_}from"three";import{Camera as fD,OrthographicCamera as hD,PerspectiveCamera as mD,Vector3 as Hr,Object3D as mv,Quaternion as yD,Matrix4 as gD}from"three";import{Camera as sD,LineSegments as lD,BufferGeometry as cD,LineBasicMaterial as uD,Color as Zf,Vector3 as dD,Float32BufferAttribute as fv}from"three";import{BoxGeometry as rD}from"three";var fo=n=>{var r;return r=class extends n{},r.geometryHelper=new rD(30,30,30),r};import{Ray as oD,Sphere as nD,Matrix4 as iD,Vector3 as jo}from"three";var ju=new oD,Qf=new nD,pv=new iD,ho=(n,r,e,t,o=!1,i=n)=>{let a=r,s=i.matrixWorld;if(a.boundingSphere===null&&a.computeBoundingSphere(),Qf.copy(a.boundingSphere),Qf.applyMatrix4(s),e.ray.intersectsSphere(Qf)===!1||(pv.copy(s).invert(),ju.copy(e.ray).applyMatrix4(pv),a.boundingBox!==null&&ju.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),P=Math.min(d.count,f.start+f.count);for(m=v,y=P;m<y;m+=3)if(c=d.getX(m),u=d.getX(m+1),p=d.getX(m+2),l=g(n,e,ju,h,c,u,p),l){l.faceIndex=Math.floor(m/3),t.push(l);return}}else{let P=a.attributes.position,O=new jo,S=new jo,T=new jo,A=new jo,x=2,N=1/((i.scale.x+i.scale.y+i.scale.z)/3),I=N*N,D=Math.max(0,f.start),_=Math.min(P.count,f.start+f.count);for(let B=D,V=_-1;B<V;B+=x){if(O.fromBufferAttribute(P,B),S.fromBufferAttribute(P,B+1),ju.distanceSqToSegment(O,S,A,T)>I)continue;A.applyMatrix4(i.matrixWorld);let R=e.ray.origin.distanceTo(A);R<e.near||R>e.far||t.push({distance:R,point:T.clone().applyMatrix4(i.matrixWorld),object:n})}}function g(v,P,O,S,T,A,x){let E=new jo,N=new jo,I=new jo,D=new jo,_=new jo;if(E.fromBufferAttribute(S,T),N.fromBufferAttribute(S,A),I.fromBufferAttribute(S,x),O.intersectTriangle(E,N,I,!1,D)===null)return null;_.copy(D),_.applyMatrix4(v.matrixWorld);let V=P.ray.origin.distanceTo(_);return V<P.near||V>P.far?null:{faceIndex:1,distance:V,point:_.clone(),object:v}}};var Fu=new dD,wr=new sD,Jf=class extends lD{constructor(e){let t=new cD,o=new uD({color:16777215,vertexColors:!0,toneMapped:!1}),i=[],a=[],s={},l=new Zf(15711266),c=new Zf(15711266),u=new Zf(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 fv(i,3)),t.setAttribute("color",new fv(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;kr("n1",t,e,wr,-i,-a,s),kr("n2",t,e,wr,i,-a,s),kr("n3",t,e,wr,-i,a,s),kr("n4",t,e,wr,i,a,s);let l=s;kr("f1",t,e,wr,-i,-a,l),kr("f2",t,e,wr,i,-a,l),kr("f3",t,e,wr,-i,a,l),kr("f4",t,e,wr,i,a,l);let c=l,u=.5;kr("u1",t,e,wr,i*.7*u,a*1.1,c),kr("u2",t,e,wr,-i*.7*u,a*1.1,c),kr("u3",t,e,wr,0,a*(1.1+.9*u),c),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function kr(n,r,e,t,o,i,a){Fu.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],Fu.x,Fu.y,Fu.z)}}var Uu=class extends fo(Jf){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){ho(this.object,this.geometry,e,t,!0)}};import{Box3Helper as hv,BoxGeometry as pD}from"three";var ku;(r=>r.is=e=>"objectHelper"in e)(ku||(ku={}));var Pr=(n,r)=>class extends pa(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 hv&&(i.visible=!0)}}updateEntityBoxSize(o,i){this.objectHelper.visible&&this.geometryHelper instanceof pD?(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 hv&&(i.visible=!1)}}};var Hu=790,os=new Hr,eh=new Hr,th=new yD,rh=new Hr,ul=new Hr,oh=new Hr,Fo=class extends Pr(fD,Uu){constructor(e="",t={...kn.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 gD,this.matrixAutoUpdate=!0,this.width=window.innerWidth,this.height=window.innerHeight;let o=this.width,i=this.height;this.orthoCamera=new hD(o*-.5,o*.5,i*.5,i*-.5,-5e4,1e4),this.perspCamera=new mD(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 Hr(e,t,o)),super.lookAt(e),this.getWorldPosition(os),this.targetOffset=os.distanceTo(e)}getTarget(e=new Hr){return this.getWorldDirection(eh),this.getWorldPosition(os),eh.multiplyScalar(this.targetOffset),e.copy(os).add(eh),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(os),os.distanceTo(e)}updateUp(){this.getWorldQuaternion(th),rh.set(0,0,1).applyQuaternion(th),ul.copy(mv.DEFAULT_UP),this.isUpVectorFlipped&&ul.negate(),ul.applyQuaternion(th),oh.copy(mv.DEFAULT_UP).projectOnPlane(rh),this.angleOffsetFromUp=oh.angleTo(ul),this.angleOffsetFromUp*=oh.cross(ul).dot(rh)>=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 Hr),i=e.getWorldDirection(new Hr).multiplyScalar(this.targetOffset);return{position:t.clone().add(i),target:t}}getViewToTarget(e){let o=this.getWorldDirection(new Hr).multiplyScalar(this.targetOffset);return{position:e.clone().sub(o),target:e}}getViewToObject(e){let t=new Hr,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=-Hu*.5*i,this.right=Hu*.5*i,this.top=Hu*.5*(1/a),this.bottom=-Hu*.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 ji(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}}};import{MathUtils as Uoe}from"three";import{BufferGeometry as yv,Matrix4 as gv,Float32BufferAttribute as xD}from"three";var ns=new gv,bD=new gv;var or=class extends rr{constructor(e,t,o){super(e,t);this.data=t;this.meshSetAddresses=[];this.needsTransformForDownstream=!1;this.geometry=new yv;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 or&&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 Ot&&a.dataPatched.visible===!0&&a.geometry.attributes.position?.count>0&&a.geometry.drawRange.count>0&&a.booleanMeshSetAddress!==0){ns.multiplyMatrices(a.hiddenMatrix,a.matrix);try{if(a.booleanMeshSetAddress===-1){if((a.geometry.index??a.geometry.getAttribute("position")).count/3<15e5&&(a.booleanMeshSetAddress=br.getMeshSet(a.geometry,e===!0,t)),a.booleanMeshSetAddress===-1)return;br.transformMeshSet(a.booleanMeshSetAddress,ns),a.booleanMatrixInvOld.copy(ns).invert(),a.booleanWasTransformed=!1}else a instanceof or&&a.needsTransformForDownstream===!0?(br.transformMeshSet(a.booleanMeshSetAddress,ns),a.needsTransformForDownstream=!1):a.booleanWasTransformed===!0&&(br.transformMeshSet(a.booleanMeshSetAddress,bD.multiplyMatrices(ns,a.booleanMatrixInvOld)),a.booleanMatrixInvOld.copy(ns).invert(),a.booleanWasTransformed=!1)}catch(s){console.error(s),a.booleanMeshSetAddress=0,a.geometry.userData.booleanOperationDidFail=!0;continue}br.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 xD([],0)),this.geometry.setDrawRange(0,0);return}if(e===!0)return br.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let o=this.geometry;o.dispose(),this.geometry=new yv,this.geometry.userData=o.userData,this.geometry.boundingSphere=o.boundingSphere;try{this.booleanMeshSetAddress=br.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,Za(this),Ja(this)}dispose(){super.dispose(),this.geometry.dispose()}};import{Light as vD}from"three";var xv;(r=>{function n(e){return Re.is(e)&&e instanceof vD}r.is=n})(xv||(xv={}));var is=(n,r)=>class extends Pr(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 wn=n=>n instanceof Ot,dl=n=>n!==null&&n instanceof or;var pl=n=>ku.is(n);import{Group as TD}from"three";import{AxesHelper as SD,Group as wD,Quaternion as PD,Vector3 as nh}from"three";var OD=new nh(1,1,1),bv=new nh,CD=new nh,vv=new PD,Or=class extends fo(SD){constructor(e,t=15){super(t);this.object=e;this.dummy=new wD;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){ho(this.object,Or.geometryHelper,e,t,!1,this.dummy)}update(){}updateMatrix(){}updateMatrixWorld(e){this.object.matrixWorld.decompose(bv,vv,CD),this.matrix.compose(bv,vv,OD),super.updateMatrixWorld(e)}updateWorldMatrix(e,t){}};var Pn=class extends Pr(TD,Or){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()}};import{Group as AD}from"three";var Wu=class extends Pr(AD,Or){constructor(e,t,o){super();this.super_Entity(e,t),this.context=o,this.objectHelper.update()}updateState(e,t){this.updateState_Entity(e,t)}};import{Color as mE,Fog as yE,HemisphereLight as gE}from"three";import{ShaderChunk as fl}from"three";var MD=n=>`
|
|
2246
|
+
}`}else n.method==="POST"&&n.body&&(t=Bu(JSON.parse(n.body),r));let a=await fetch(o,{method:i?"GET":n.method,headers:i?void 0:W3(n),signal:e.signal,body:t});if(!a.ok)throw new Error("status:"+a.status+"_:_"+a.statusText);if(n.integration?.type==="OpenAI"){let s=await a.json();return i&&(s=s.response),{content:s.choices[0].message.content}}else{let s=await a.json();return i&&(s=s.response),s}}var Fb=(n,r)=>{if(typeof n=="string"){let e=r.getVariable(n);if(e)return Fb(e,r)}return cn.isBoolean(n)?cn.getDisplayedValue(n).toLowerCase():cn.getDisplayedValue(n)},Bu=(n,r)=>n.map((e,t)=>{if("text"in e)return e.text;if("type"in e){if(e.type==="paragraph")return(t>0?`
|
|
2247
|
+
`:"")+Bu(e.children,r);if(e.type==="variable"){let o=r.getVariable(e.variableId);if(o!==void 0)return Fb(o,r)}}return""}).join("");var Ru=1e3,Ub=512*Ru;function K3(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",Q3=`${kb}/events?hashFile=`,yte=`${kb}/`,Vu=class{constructor(r,e){this.id=r;this.userWebhook=e;this.result=void 0;this._connected=!1;this.emitter=ai();this.reconnectWaitFor=Ru;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=Ru,this._connected=!0};this._onDisconnected=()=>{clearTimeout(this.scheduledReconnectHandle),this.reconnectWaitFor=Ru,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&&K3(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(Q3+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>Ub&&(this.reconnectWaitFor=Ub),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 Lc.defaultParameterValueByType(t.data.type)}}};function Wb(n){return"variable_"+n}var Wf=class extends Au{constructor(e){super();this.shared=e}create(e){return new Ka(e,this.shared)}},si=class{constructor(r,e={},t=!0,o=!1){this.data=r;this.needsJitter=t;this.enableLocalStorageForPersistentVariables=o;this.geometryCache=new al(!0);this.geometryCache2=new al(!1);this.imageHolderCache=new Wf(this);this.thisContext={scene:jb,shared:this};this.deletedMaterial=new oi(Nt.defaultTwoLayerData("phong"),this.thisContext,"");this.deletedImage=new dr(jc.emptyImage,this);this.deletedVideo=new dr(Qi.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 oi(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 ri(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 dr(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 dr(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 dr(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 xn(e.r,e.g,e.b,e.a):this.colors[r]=new xn(e.r,e.g,e.b,1),!1)}updateColor(r,e){if(this.colors[r]){this.onColorOrImageUpdate&&this.onColorOrImageUpdate();let t=this.colors[r];return this.colors[r].r=e.r??t.r,this.colors[r].g=e.g??t.g,this.colors[r].b=e.b??t.b,this.colors[r].a=e.a??t.a,!0}return!1}deleteColor(r){this.colors[r]&&delete this.colors[r]}getColor(r){return this.colors[r]}color(r){let e;if(typeof r=="string"){let t=this.getColor(r);t?e=t:(console.warn("Tried to create color layer params with a color key that does not exist in the assets manager"),e=new Tt(0,0,0,0))}else return"a"in r?new Tt(r.r,r.g,r.b,r.a):new Tt(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 _u(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(Wb(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(Wb(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*Hb.DEG2RAD:s[a[a.length-1]]=t}if(s=o.find(a[0]),s.type==="ParticleEmitter"&&s.updateVariableState(t,a),Re.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()})}}}}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*=Hb.RAD2DEG),t}for(let t in this.variables){if(e===void 0)break;let o=this.variables[t],i=o.locations?.findIndex(a=>Ze.equal(a,e));i!==void 0&&i!==-1&&o.locations.splice(i,1)}if(typeof r=="string"){let t=r,o=r;do{if(o=t,this.variables[t]===void 0)break;let i=this.variables[t].value;e&&this.variables[o]!==void 0&&this.variables[o].locations.push(e),t=i}while(typeof t=="string");return t}else return r}getVariables(){return this.variables}getDynamicVariablePlayState(r){return this.variables[r]?.dynamicVariablePlayState}setDynamicVariablePlayState(r,e){this.variables[r]!==void 0&&(this.variables[r].dynamicVariablePlayState=e)}getDynamicVariableToggleIsForward(r){return this.variables[r]?.dynamicVariableToggleIsForward}setDynamicVariableToggleIsForward(r,e){this.variables[r]!==void 0&&(this.variables[r].dynamicVariableToggleIsForward=e)}resetLib(r){for(let[e,t]of Object.entries(r.images))this.addImage(e,t.asset);for(let[e,t]of Object.entries(r.audios))this.addAudio(e,t.asset);for(let[e,t]of Object.entries(r.particles))this.addParticle(e,t.asset);for(let[e,t]of Object.entries(r.colors))this.addColor(e,t.asset);for(let[e,t]of Object.entries(r.fonts))this.addFont(e,t.asset);for(let[e,t]of Object.entries(r.materials))this.addMaterial(e,t.asset);for(let[e,t]of Object.entries(r.videos))this.addVideo(e,t.asset);for(let[e,t]of Object.entries(r.variables))this.addVariableHolder(e,t.asset)}updateLibByOp(r,e){r.path[0]==="images"?r.path.length===1&&r.type===1?this.addImage(r.id,r.data.asset):r.path.length===1&&r.type===2&&this.deleteImage(r.id):r.path[0]==="videos"?r.path.length===1&&r.type===1?this.addVideo(r.id,r.data.asset):r.path.length===1&&r.type===2&&this.deleteVideo(r.id):r.path[0]==="audios"?r.path.length===1&&r.type===1?this.addAudio(r.id,r.data.asset):r.path.length===1&&r.type===2&&this.deleteAudio(r.id):r.path[0]==="particles"?r.path.length===1&&r.type===1?this.addParticle(r.id,r.data.asset):r.path.length===1&&r.type===2&&this.deleteParticle(r.id):r.path[0]==="colors"?r.path.length===1&&r.type===1?this.addColor(r.id,r.data.asset):r.path.length===1&&r.type===2&&this.deleteColor(r.id):r.path[0]==="materials"?r.path.length===1&&r.type===1?this.addMaterial(r.id,r.data.asset):r.path.length===1&&r.type===2&&this.deleteMaterial(r.id):r.path[0]==="fonts"?r.path.length===1&&r.type===1?this.addFont(r.id,r.data.asset):r.path.length===1&&r.type===2&&this.deleteFont(r.id):r.path[0]==="variables"?r.path.length===1&&r.type===1?this.addVariableHolder(r.id,r.data.asset):r.path.length===1&&r.type===2&&this.deleteVariable(r.id):r.path[0]==="components"&&e.updateByLibOp(r,this)}updateByOp(r,e,t){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(nt.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;this.getUserAPI(r.path[1])?.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(nt.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.userAPIs[r]=new Lu(r,e,this),!1)}getUserAPI(r){return 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 Vu(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])}},qb=new si(xr.emptyData());var or=class extends Ot{updateByPatchedOp(e,t,o){if(super.updateByPatchedOp(e,t,o),Sg(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(Le(e.path,["material"])&&this.material instanceof rr)"material"in t&&typeof t.material!="string"&&this.material.updateByOp(nt.drop(e,1),t.material,o);else if(Le(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(nt.drop(e,2),a,o)}}}get needsAO(){return this.material!==void 0?(Array.isArray(this.material)?this.material[0]:this.material).hasAO:!1}updateState(e,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&&Il(this.material).forEach(e=>{e instanceof rr&&(e instanceof oi||e.nodeMaterialDispose())})}dispose(){this.disposeMaterial(),super.dispose()}};import{BufferGeometry as J3,Matrix4 as qf,Vector3 as Qb,Vector4 as $f}from"three";var $b=new Qb,Yb=new $f,Xb=new $f,eE=new Qb,Kb=new qf,lt=class extends or{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 qf().fromArray(t.bindMatrix),this.bindMatrixInverse=new qf)}chooseGeoemtryCache(e){return e.geometryCache}markGeometryAsReachable(e){this.geometryCreateDeleyed instanceof J3&&this.chooseGeoemtryCache(e).markAsReachable(this.dataPatched.geometry,this.geometryCreateDeleyed)}get geometry(){if(this.localGeometry!==void 0)return this.localGeometry;if(this.geometryCreateDeleyed instanceof si){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 As.is2DParametricMesh(e.type)&&e.depth===0}get is2DType(){return As.is2DParametricMesh(this.geometry.userData.type)}get isNonParametric(){return this.geometry.userData.type==="NonParametricGeometry"}updateByPatchedOp(e,t,o){super.updateByPatchedOp(e,t,o),Le(e.path,["geometry"])&&this.updateByPatchedOpGeometry(nt.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=Bo(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&&$s(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=Bo(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 yt&&this.chooseGeoemtryCache(o.shared).mutateIfUnique(this.geometryCreateDeleyed.data,t)===this.geometryCreateDeleyed&&(i=!0,this.geometryCreateDeleyed.mutateDirectlyScaleBaked(t,e.props.scaleBaked),this.refreshAttachedCloners(o),this.refreshAttachedPaths(o)),i||(o.scene?.markGeometryCacheDirty(),this.createGeometryDelayed(o)),this.resetBBoxNeedsUpdate(),this.invalidateDownstreamBooleanData()}updateGeometryOnStateUpdate(e,t){this.createGeometryDelayed(t)}updateState(e,t){e.geometry!==void 0&&this.updateGeometryOnStateUpdate(e.geometry,t),super.updateState(e,t)}updateGeometryGroupsIfNeeded(){Array.isArray(this.material)&&this.geometry.groups.length===0&&this.geometry.addGroup(0,Math.max(this.geometry.getIndex()?.count??0,this.geometry.getAttribute("position").count),0)}updateEntityBoxSize(e,t){let o=this.geometry.userData.parameters;this.is2DType?e.set(0,0,o.depth*.5):this.isNonParametric?(e.setScalar(0),this.geometry.boundingSphere&&e.copy(this.geometry.boundingSphere.center),t.set(o.width,o.height,o.depth??0).multiplyScalar(.5)):e.setScalar(0),t.set(o.width,o.height,o.depth??0).multiplyScalar(.5)}updateMatrixWorld(e){super.updateMatrixWorld(e),this.bindMode==="attached"?this.bindMatrixInverse.copy(this.matrixWorld).invert():this.bindMode==="detached"&&this.bindMatrixInverse.copy(this.bindMatrix).invert()}bind(e,t){this.skeleton=e,this.isSkinnedMesh=!0,t===void 0&&(this.updateMatrixWorld(!0),this.skeleton.calculateInverses(),t=this.matrixWorld),this.bindMatrix.copy(t),this.bindMatrixInverse.copy(t).invert()}pose(){this.skeleton.pose()}normalizeSkinWeights(e){let t=new $f,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;Yb.fromBufferAttribute(i.attributes.skinIndex,e),Xb.fromBufferAttribute(i.attributes.skinWeight,e),$b.copy(t).applyMatrix4(this.bindMatrix),t.set(0,0,0);for(let a=0;a<4;a++){let s=Xb.getComponent(a);if(s!==0){let l=Yb.getComponent(a);Kb.multiplyMatrices(o.bones[l].matrixWorld,o.boneInverses[l]),t.addScaledVector(eE.copy($b).applyMatrix4(Kb),s)}}return t.applyMatrix4(this.bindMatrixInverse)}};function rE(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 Xf(o[a],o[a+1],o[a+2]);r.has(s)?r.get(s)?.normals.push(l):r.set(s,{normals:[l],result:new Xf})}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 Zb(i,3))}function oE(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 Xf;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 Zb(t,3))}function Za(n){if(Array.isArray(n.material)){for(let r of n.material)if(r.getLayersOfType("outline").length===0)return}else if(!(n.material instanceof rr)||n.material.getLayersOfType("outline").length===0)return;n instanceof lt&&n.is2DAndNoDepth?oE(n):rE(n)}function Ja(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=[Yf.seededRandom(o),Yf.seededRandom(o+1e4),Yf.seededRandom(o+2e4)];for(let a=0;a<e.length;a++)t[a]=i[a%3];n.geometry.setAttribute("randomColor",new tE(t,3))}var po=new nE,sl=new aE;function ev(n){let r=!1;return n.scene.objects.traverse((e,t)=>{t.type==="Mesh"&&t.geometry.type==="SubdivGeometry"&&(r=!0)}),r}var li=class extends lt{constructor(e,t,o){super(e,t,o);this.data=t;this.hiddenMatrixOld=new iE;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}=yt.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,Za(this),Ja(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){yt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0),this.subdividedGeometry&&yt.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0)}updateTopology(){this.originalGeometry.dispose(),this.originalGeometry=yt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=yt.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,Ot.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 Jb,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let t=e.attributes.position,o=e.boundingSphere.center;po.setFromBufferAttribute(t),po.getCenter(o),e.boundingSphere.radius=o.distanceTo(po.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),po.getSize(sl),this.hasNonUniformScale&&sl.divide(this.scale);let i={width:sl.x,height:sl.y,depth:sl.z};return this.geometry.userData.parameters=i,i}updateBoundingSphere(e){let t=this.originalGeometry;po.min.set(e[0],e[2],e[4]),po.max.set(e[1],e[3],e[5]),this.hasNonUniformScale&&(po.min.applyMatrix4(this.shearScaleInv),po.max.applyMatrix4(this.shearScaleInv)),t.boundingSphere===null&&(t.boundingSphere=new Jb);let o=t.boundingSphere.center;po.getCenter(o),t.boundingSphere.radius=o.distanceTo(po.max)}freeSubdivPointer(){this.subdivPointer&&(yt.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)}};import{Triangle as sE,Vector3 as ui}from"three";var tv=-1,lE=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},ll=(n,r)=>(e,t)=>!r||e===0||n===0?0:n*t/100,Te=(n,r)=>{let e=Math.abs(r),t=e*-1;return(n-tv)*(e-t)/(lE-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 cE=new ui,Gu=new ui,uE=new ui,dE=new ui;function es(n,r){let e=uE.fromArray(n),t=dE.fromArray(r);Gu.copy(t).sub(e);let o=Gu.length();return Gu.normalize().multiplyScalar(o*.5),cE.copy(e).add(Gu).toArray()}var Sr=new sE,zu=new ui,ju=new ui,ci=new ui;function iv(n){let r=[];for(let e=0;e<=n.index.count;e++)if(zu.fromArray(n.index.array,e*3),Sr.setFromAttributeAndIndices(n.attributes.position,zu.x,zu.y,zu.z),Sr.getNormal(ju),Sr.getMidpoint(ci),!(isNaN(ci.x)||isNaN(ci.y)||isNaN(ci.z))){let{a:t,b:o,c:i}=Sr,a=t.toArray(),s=o.toArray(),l=i.toArray(),c=t.distanceTo(o),u=o.distanceTo(i),p=i.distanceTo(t),d=es(a,s),h=es(s,l),f=es(l,a),m=[c,u,p],y=Math.max(...m),g=m.filter(O=>Math.round(O)===Math.round(y)).length>1,v=[],P=Sr.getMidpoint(ci).toArray();y===c&&!g&&(v=[h,f,f],P=d),y===u&&!g&&(v=[d,f,f],P=h),y===p&&!g&&(v=[d,h,h],P=f),g&&(v=[d,h,f]),r.push({vertices:[a,s,l],faceCenters:v,midpoint:P,norm:Sr.getNormal(ju).toArray()})}return r}function av(n){let r=[],{position:e}=n.attributes;for(let t=0;t<e.count;t++){Sr.setFromAttributeAndIndices(e,t*3,t*3+1,t*3+2),Sr.getNormal(ju),Sr.getMidpoint(ci);let o=Sr.a.toArray(),i=Sr.b.toArray(),a=Sr.c.toArray();r.push({vertices:[o,i,a],faceCenters:[es(o,i),es(i,a),es(a,o)],midpoint:ci.toArray(),norm:ju.toArray()})}return r}var pE=4,fE=.5,Kf=n=>.5*(1-Math.cos(n*Math.PI)),Qf=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=Kf(s),p=Kf(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+=Kf(c)*(m-f),d+=f*h,h*=fE,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=Qf;import{Vector3 as hE,Matrix4 as mE,Ray as yE}from"three";var lv=new hE,cv=new mE,uv=new yE;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 Sn=class extends lt{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 Kt=1e-4,fo,mv,yv,gv,fv=new pr,hv=new pr;gu.then(n=>{fo=n,mv=[fo.get_face_center,fo.get_edge_midpoint,fo.get_vertex_position],yv=[fo.get_face_normal,fo.get_edge_normal,fo.get_vertex_normal],gv=[fo.face_count,fo.edge_count,fo.vertex_count]});var xE=new di,bE=new di,wn=new pr,Fu=new pr,cl=new pr,Jf=new pr,vE=new pr,SE=new pr;var zo=new sv,rs=class extends ca(gE){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 Eo&&t.expand()}invalidateTransform(e){this.matrixWorldNeedsUpdate=!0,this.traverse(t=>{t instanceof Eo&&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 Eo(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 Eo(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*pv.DEG2RAD,i=t.end*pv.DEG2RAD,a=o-i,s=new Zf(t.rotation[0],t.rotation[1],t.rotation[2]),l;switch(t.axis){case"z":l=new pr(0,0,1);break;case"y":l=new pr(0,1,0);break;default:case"x":l=new pr(1,0,0);break}let c=e.randomnessObject??Jr.defaultData([1,1,1]).randomnessObject,u=c.noiseType==="perlin";zo.noiseSeed(c.seed);let p=Wc((0,ts.default)(c.seed)),d=ll(c.strength,this.parameters.randomness);for(let[h,f]of this.children.entries()){let m=h*(c.freqScale/10)+c.movement,y=u?zo.noise(m):p(m,m),g=h+1;f.scale.x=t.scale[0]+d(g,Te(y,c.scale[0]))||Kt,f.scale.y=t.scale[1]+d(g,Te(y,c.scale[1]))||Kt,f.scale.z=t.scale[2]+d(g,Te(y,c.scale[2]))||Kt,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,Te(y,c.position[0])),f.position.y+=t.position[1]+d(g,Te(y,c.position[1])),f.position.z+=t.position[2]+d(g,Te(y,c.position[2]));let P=d(g,Te(y,c.rotation[0])),O=d(g,Te(y,c.rotation[1])),S=d(g,Te(y,c.rotation[2]));t.alignment===!0?(f.rotation.x+=s.x+P,f.rotation.y+=s.y+O,f.rotation.z+=s.z+S):f.rotation.set(s.x+P,s.y+O,s.z+S)}}_updateLinear(e){if(e.type!=="linear")throw new Error;let t=e.linear,o=new Zf(t.rotation[0],t.rotation[1],t.rotation[2]),i=e.randomnessObject??Jr.defaultData([1,1,1]).randomnessObject,a=i.noiseType==="perlin";zo.noiseSeed(i.seed);let s=Wc((0,ts.default)(i.seed)),l=ll(i.strength,this.parameters.randomness);for(let[c,u]of this.children.entries()){let p=c*(i.freqScale/10)+i.movement,d=a?zo.noise(p):s(p,p),h=c+1,f=l(h,Te(d,i.rotation[0])),m=l(h,Te(d,i.rotation[1])),y=l(h,Te(d,i.rotation[2]));u.scale.x=1+(t.scale[0]-1)*c+l(h,Te(d,i.scale[0]))||Kt,u.scale.y=1+(t.scale[1]-1)*c+l(h,Te(d,i.scale[1]))||Kt,u.scale.z=1+(t.scale[2]-1)*c+l(h,Te(d,i.scale[2]))||Kt,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,Te(d,i.position[0])),u.position.y=t.position[1]*c+l(h,Te(d,i.position[1])),u.position.z=t.position[2]*c+l(h,Te(d,i.position[2]))}}_updateGrid(e){let t=0,o=e.grid,i=e.randomnessObject??Jr.defaultData([1,1,1]).randomnessObject,a=ll(i.strength,this.parameters.randomness),s=i.noiseType==="perlin";zo.noiseSeed(i.seed);let l=Ix((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 pr(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?zo.noise(...f):l(...f),y=this.children[t++];y.scale.x=1+a(t,Te(m,i.scale[0]))||Kt,y.scale.y=1+a(t,Te(m,i.scale[1]))||Kt,y.scale.z=1+a(t,Te(m,i.scale[2]))||Kt;let g=a(t,Te(m,i.rotation[0])),v=a(t,Te(m,i.rotation[1])),P=a(t,Te(m,i.rotation[2]));y.rotation.set(g,v,P),y.position.x=o.size[0]*p-u.x+a(t,Te(m,i.position[0])),y.position.y=o.size[1]*d-u.y+a(t,Te(m,i.position[1])),y.position.z=o.size[2]*h-u.z+a(t,Te(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?zo.noise(...d):l(...d),f=this.children[t++];f.scale.x=1+a(t,Te(h,i.scale[0]))||Kt,f.scale.y=1+a(t,Te(h,i.scale[1]))||Kt,f.scale.z=1+a(t,Te(h,i.scale[2]))||Kt;let m=a(t,Te(h,i.rotation[0])),y=a(t,Te(h,i.rotation[1])),g=a(t,Te(h,i.rotation[2]));f.rotation.set(m,y,g),f.position.x=o.size[0]*c+a(t,Te(h,i.position[0])),f.position.y=-o.size[1]*u+a(t,Te(h,i.position[1])),f.position.z=-o.size[2]*p+a(t,Te(h,i.position[2]))}}_updateToObject(e){if(e.type!=="toObject")throw new Error;let{toObject:t}=e,o=new Zf(t.rotation[0],t.rotation[1],t.rotation[2]),i=e.randomnessObject??Jr.defaultData([1,1,1]).randomnessObject,a=i.noiseType==="perlin";zo.noiseSeed(i.seed);let s=Wc((0,ts.default)(i.seed)),l=ll(i.strength,this.parameters.randomness);if(!t.object){for(let[,g]of this.children.entries())g.position.set(0,0,0),g.scale.setScalar(1),g.rotation.set(0,0,0);this.objectForSample=void 0;return}if(!this.objectForSample)return;if(this.objectForSample instanceof Sn)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,P=g.map(C=>C[0]).reduce((C,A)=>C+A,0),O=g.map(C=>C[1]).reduce((C,A)=>C+A,0),S=g.map(C=>C[2]).reduce((C,A)=>C+A,0);return[P/v,O/v,S/v]},d=g=>Math.round(g*1e6)/1e6;c.forEach(g=>{let v=c.filter(P=>d(g.pos[0])===d(P.pos[0])&&d(g.pos[1])===d(P.pos[1])&&d(g.pos[2])===d(P.pos[2]));v.length>1?u.push({pos:g.pos,norm:p(v.map(P=>P.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 qc(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 P=g*(i.freqScale/10)+i.movement,O=a?zo.noise(P):s(P,P),S=g+1,C=l(S,Te(O,i.rotation[0])),A=l(S,Te(O,i.rotation[1])),x=l(S,Te(O,i.rotation[2]));t.spreadType==="random"?f.sample(cl,Jf):(h.length&&(cl.fromArray(h[g].pos),Jf.fromArray(h[g].norm)),this.objectForSample instanceof li&&cl.applyMatrix4(xE.copy(this.objectForSample.matrixWorld).invert())),cl.applyMatrix4(this.object.hiddenMatrix.clone().invert()),v.position.copy(cl),wn.fromArray(m);let E=t.align==="normal"?Jf:this.object.getWorldDirection(SE),N=Fu.fromArray(t.position);Fu.x+=l(S,Te(O,i.position[0])),Fu.y+=l(S,Te(O,i.position[1])),Fu.z+=l(S,Te(O,i.position[2]));let I=Math.acos(E.dot(wn)),D=vE.crossVectors(wn,E).normalize(),_=bE.makeRotationAxis(D,I),B=E.clone().cross(this.object.up).normalize(),V=B.clone().cross(E).normalize(),U=new di().makeBasis(B,E,V),R=new pr(wn.y,wn.z,wn.x).normalize(),W=R.clone().cross(wn).normalize(),j=new di().makeBasis(R,wn,W).invert(),F=new di().multiplyMatrices(U,j);v.rotation.setFromRotationMatrix(F),N.applyMatrix4(_),v.position.add(N),v.rotation.x=v.rotation.x+o.x+C,v.rotation.y=v.rotation.y+o.y+A,v.rotation.z=v.rotation.z+o.z+x,v.scale.setScalar(1),v.scale.x=v.scale.x+t.scale[0]+l(S,Te(O,i.scale[0]))||Kt,v.scale.y=v.scale.y+t.scale[1]+l(S,Te(O,i.scale[1]))||Kt,v.scale.z=v.scale.z+t.scale[2]+l(S,Te(O,i.scale[2]))||Kt,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 li){let t=this.objectForSample,o=ov[e],i=gv[o],a=mv[o],s=yv[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);fv.fromArray(p).applyMatrix4(t.matrixWorld),hv.fromArray(d),l.push({pos:fv.toArray(),norm:hv.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=wo(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 Ot?this.objectForSample=o:this.objectForSample=void 0,this.matrix=new di,this.hiddenMatrix=new di,this.matrixWorldNeedsUpdate=!0,this.matrixAutoUpdate=!1,o&&o.add(this)}this.update()}get pendingMediaLoad(){return this._pendingMediaLoad}};import{Scene as j_,Vector3 as F_,Matrix4 as U_,Box3 as k_,MeshBasicMaterial as H_,Skeleton as W_}from"three";import{Camera as _E,OrthographicCamera as BE,PerspectiveCamera as LE,Vector3 as Wr,Object3D as Sv,Quaternion as RE,Matrix4 as VE}from"three";import{Camera as AE,LineSegments as ME,BufferGeometry as IE,LineBasicMaterial as NE,Color as th,Vector3 as EE,Float32BufferAttribute as bv}from"three";import{BoxGeometry as wE}from"three";var ho=n=>{var r;return r=class extends n{},r.geometryHelper=new wE(30,30,30),r};import{Ray as PE,Sphere as OE,Matrix4 as CE,Vector3 as jo}from"three";var Uu=new PE,eh=new OE,xv=new CE,mo=(n,r,e,t,o=!1,i=n)=>{let a=r,s=i.matrixWorld;if(a.boundingSphere===null&&a.computeBoundingSphere(),eh.copy(a.boundingSphere),eh.applyMatrix4(s),e.ray.intersectsSphere(eh)===!1||(xv.copy(s).invert(),Uu.copy(e.ray).applyMatrix4(xv),a.boundingBox!==null&&Uu.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),P=Math.min(d.count,f.start+f.count);for(m=v,y=P;m<y;m+=3)if(c=d.getX(m),u=d.getX(m+1),p=d.getX(m+2),l=g(n,e,Uu,h,c,u,p),l){l.faceIndex=Math.floor(m/3),t.push(l);return}}else{let P=a.attributes.position,O=new jo,S=new jo,C=new jo,A=new jo,x=2,N=1/((i.scale.x+i.scale.y+i.scale.z)/3),I=N*N,D=Math.max(0,f.start),_=Math.min(P.count,f.start+f.count);for(let B=D,V=_-1;B<V;B+=x){if(O.fromBufferAttribute(P,B),S.fromBufferAttribute(P,B+1),Uu.distanceSqToSegment(O,S,A,C)>I)continue;A.applyMatrix4(i.matrixWorld);let R=e.ray.origin.distanceTo(A);R<e.near||R>e.far||t.push({distance:R,point:C.clone().applyMatrix4(i.matrixWorld),object:n})}}function g(v,P,O,S,C,A,x){let E=new jo,N=new jo,I=new jo,D=new jo,_=new jo;if(E.fromBufferAttribute(S,C),N.fromBufferAttribute(S,A),I.fromBufferAttribute(S,x),O.intersectTriangle(E,N,I,!1,D)===null)return null;_.copy(D),_.applyMatrix4(v.matrixWorld);let V=P.ray.origin.distanceTo(_);return V<P.near||V>P.far?null:{faceIndex:1,distance:V,point:_.clone(),object:v}}};var ku=new EE,wr=new AE,rh=class extends ME{constructor(e){let t=new IE,o=new NE({color:16777215,vertexColors:!0,toneMapped:!1}),i=[],a=[],s={},l=new th(15711266),c=new th(15711266),u=new th(2857471);p("n1","n2",l),p("n2","n4",l),p("n4","n3",l),p("n3","n1",l),p("f1","f2",l),p("f2","f4",l),p("f4","f3",l),p("f3","f1",l),p("n1","f1",l),p("n2","f2",l),p("n3","f3",l),p("n4","f4",l),p("p","n1",c),p("p","n2",c),p("p","n3",c),p("p","n4",c),p("u1","u2",u),p("u2","u3",u),p("u3","u1",u);function p(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 bv(i,3)),t.setAttribute("color",new bv(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;Hr("n1",t,e,wr,-i,-a,s),Hr("n2",t,e,wr,i,-a,s),Hr("n3",t,e,wr,-i,a,s),Hr("n4",t,e,wr,i,a,s);let l=s;Hr("f1",t,e,wr,-i,-a,l),Hr("f2",t,e,wr,i,-a,l),Hr("f3",t,e,wr,-i,a,l),Hr("f4",t,e,wr,i,a,l);let c=l,u=.5;Hr("u1",t,e,wr,i*.7*u,a*1.1,c),Hr("u2",t,e,wr,-i*.7*u,a*1.1,c),Hr("u3",t,e,wr,0,a*(1.1+.9*u),c),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function Hr(n,r,e,t,o,i,a){ku.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],ku.x,ku.y,ku.z)}}var Hu=class extends ho(rh){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){mo(this.object,this.geometry,e,t,!0)}};import{Box3Helper as vv,BoxGeometry as DE}from"three";var Wu;(r=>r.is=e=>"objectHelper"in e)(Wu||(Wu={}));var Pr=(n,r)=>class extends pa(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 vv&&(i.visible=!0)}}updateEntityBoxSize(o,i){this.objectHelper.visible&&this.geometryHelper instanceof DE?(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 vv&&(i.visible=!1)}}};var qu=790,os=new Wr,oh=new Wr,nh=new RE,ih=new Wr,ul=new Wr,ah=new Wr,Fo=class extends Pr(_E,Hu){constructor(e="",t={...Hn.defaultData,name:""}){super();this._cameraType="OrthographicCamera";this.targetOffset=an.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.wasMovedByUser=!1;this.wasMovedBySwitchCameraAction=!1;this.super_Entity(e,t),this.previousProjectionMatrix=new VE,this.matrixAutoUpdate=!0,this.width=window.innerWidth,this.height=window.innerHeight;let o=this.width,i=this.height;this.orthoCamera=new BE(o*-.5,o*.5,i*.5,i*-.5,-5e4,1e4),this.perspCamera=new LE(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 Wr(e,t,o)),super.lookAt(e),this.getWorldPosition(os),this.targetOffset=os.distanceTo(e)}getTarget(e=new Wr){return this.getWorldDirection(oh),this.getWorldPosition(os),oh.multiplyScalar(this.targetOffset),e.copy(os).add(oh),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(os),os.distanceTo(e)}updateUp(){this.getWorldQuaternion(nh),ih.set(0,0,1).applyQuaternion(nh),ul.copy(Sv.DEFAULT_UP),this.isUpVectorFlipped&&ul.negate(),ul.applyQuaternion(nh),ah.copy(Sv.DEFAULT_UP).projectOnPlane(ih),this.angleOffsetFromUp=ah.angleTo(ul),this.angleOffsetFromUp*=ah.cross(ul).dot(ih)>=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 Wr),i=e.getWorldDirection(new Wr).multiplyScalar(this.targetOffset);return{position:t.clone().add(i),target:t}}getViewToTarget(e){let o=this.getWorldDirection(new Wr).multiplyScalar(this.targetOffset);return{position:e.clone().sub(o),target:e}}getViewToObject(e){let t=new Wr,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=-qu*.5*i,this.right=qu*.5*i,this.top=qu*.5*(1/a),this.bottom=-qu*.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 ji(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}}};import{MathUtils as Pne}from"three";import{BufferGeometry as wv,Matrix4 as Pv,Float32BufferAttribute as GE}from"three";var ns=new Pv,zE=new Pv;var nr=class extends or{constructor(e,t,o){super(e,t);this.data=t;this.meshSetAddresses=[];this.needsTransformForDownstream=!1;this.geometry=new wv;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 nr&&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 Ot&&a.dataPatched.visible===!0&&a.geometry.attributes.position?.count>0&&a.geometry.drawRange.count>0&&a.booleanMeshSetAddress!==0){ns.multiplyMatrices(a.hiddenMatrix,a.matrix);try{if(a.booleanMeshSetAddress===-1){if((a.geometry.index??a.geometry.getAttribute("position")).count/3<15e5&&(a.booleanMeshSetAddress=br.getMeshSet(a.geometry,e===!0,t)),a.booleanMeshSetAddress===-1)return;br.transformMeshSet(a.booleanMeshSetAddress,ns),a.booleanMatrixInvOld.copy(ns).invert(),a.booleanWasTransformed=!1}else a instanceof nr&&a.needsTransformForDownstream===!0?(br.transformMeshSet(a.booleanMeshSetAddress,ns),a.needsTransformForDownstream=!1):a.booleanWasTransformed===!0&&(br.transformMeshSet(a.booleanMeshSetAddress,zE.multiplyMatrices(ns,a.booleanMatrixInvOld)),a.booleanMatrixInvOld.copy(ns).invert(),a.booleanWasTransformed=!1)}catch(s){console.error(s),a.booleanMeshSetAddress=0,a.geometry.userData.booleanOperationDidFail=!0;continue}br.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 GE([],0)),this.geometry.setDrawRange(0,0);return}if(e===!0)return br.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let o=this.geometry;o.dispose(),this.geometry=new wv,this.geometry.userData=o.userData,this.geometry.boundingSphere=o.boundingSphere;try{this.booleanMeshSetAddress=br.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,Za(this),Ja(this)}dispose(){super.dispose(),this.geometry.dispose()}};import{Light as jE}from"three";var Ov;(r=>{function n(e){return Re.is(e)&&e instanceof jE}r.is=n})(Ov||(Ov={}));var is=(n,r)=>class extends Pr(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 Pn=n=>n instanceof Ot,dl=n=>n!==null&&n instanceof nr;var pl=n=>Wu.is(n);import{Group as qE}from"three";import{AxesHelper as FE,Group as UE,Quaternion as kE,Vector3 as sh}from"three";var HE=new sh(1,1,1),Cv=new sh,WE=new sh,Tv=new kE,Or=class extends ho(FE){constructor(e,t=15){super(t);this.object=e;this.dummy=new UE;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){mo(this.object,Or.geometryHelper,e,t,!1,this.dummy)}update(){}updateMatrix(){}updateMatrixWorld(e){this.object.matrixWorld.decompose(Cv,Tv,WE),this.matrix.compose(Cv,Tv,HE),super.updateMatrixWorld(e)}updateWorldMatrix(e,t){}};var On=class extends Pr(qE,Or){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()}};import{Group as $E}from"three";var $u=class extends Pr($E,Or){constructor(e,t,o){super();this.super_Entity(e,t),this.context=o,this.objectHelper.update()}updateState(e,t){this.updateState_Entity(e,t)}};import{Color as LD,Fog as RD,HemisphereLight as VD}from"three";import{ShaderChunk as fl}from"three";var YE=n=>`
|
|
2248
2248
|
|
|
2249
2249
|
// PCSS implementation based on:
|
|
2250
2250
|
// https://www.gamedev.net/articles/programming/graphics/contact-hardening-soft-shadows-made-fast-r4906/
|
|
@@ -2618,18 +2618,18 @@ float vogelShadow(int index, sampler2D shadowMap, vec2 uv, float texelSize, floa
|
|
|
2618
2618
|
}
|
|
2619
2619
|
|
|
2620
2620
|
#endif
|
|
2621
|
-
`,ID=fl.lights_fragment_begin,ND=fl.shadowmask_pars_fragment,Sv=null,DD=n=>{switch(n){case"low":return 8;case"medium":return 16;case"high":return 32;default:return 16}},wv=(n="medium")=>{if(Sv===n)return!1;Sv=n;let r=DD(n);fl.shadowmap_pars_fragment=MD(r);let e=ID.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 ]"),fl.lights_fragment_begin=e;let t=ND.slice();return t=t.replaceAll("getShadow(","getShadow( UNROLLED_LOOP_INDEX, "),fl.shadowmask_pars_fragment=t,!0};import{DirectionalLight as RD,CameraHelper as Pv}from"three";import{DirectionalLightHelper as ED}from"three";var as=class extends fo(ED){constructor(e,t=15,o=10066329){super(e,t,o);this.object=e;this.added=!1;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,t){ho(this.object,as.geometryHelper,e,t)}};import{PointLightHelper as _D}from"three";var ss=class extends fo(_D){constructor(e,t=15,o=6710886){super(e,t,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,t){ho(this.object,ss.geometryHelper,e,t)}};import{SpotLightHelper as BD,Vector3 as LD}from"three";var qu=class extends fo(BD){constructor(e,t=6710886){super(e,t);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,t){ho(this.object,qu.geometryHelper,e,t)}update(){if(this.object!==void 0){let e=qu._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)}}},hl=qu;hl._vector=new LD;function VD(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 ls=class extends is(RD,as){constructor(r,e,t){super(),this.super_Entity(r,e),this.castShadow=!0,this.shadow.mapSize.width=2048,this.shadow.mapSize.height=2048,this.shadow.normalBias=1,this.layers.enable(3);let i=this.shadow.camera;i.top=1250,i.bottom=-1250,i.right=1250,i.left=-1250,i.near=-1e4,i.far=2500;let a=new Pv(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 Pv&&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&&VD(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()}};import{Scene as xE}from"three";import{SpotLight as GD,CameraHelper as Ov,MathUtils as zD,Vector3 as Mv,Quaternion as jD}from"three";var Cv=new Mv,Tv=new Mv,Av=new jD,cs=class extends is(GD,hl){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=zD.RAD2DEG*2*this.angle,i.aspect=1,i.near=100,i.far=2500;let a=new Ov(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 Ov&&e.update()}}updateMatrixWorld(r){super.updateMatrixWorld(r),Tv.setFromMatrixPosition(this.matrixWorld),Av.setFromRotationMatrix(this.matrixWorld),Cv.copy(this.up).applyQuaternion(Av).negate().multiplyScalar(this.distance),this.target.position.copy(Tv).add(Cv),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 FD(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 $u(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 Iv(n){return[[n[0][0],n[1][0]],[n[0][1],n[1][1]]]}function Nv(n){let[r,e,t]=FD(n),o=$u(r,Iv(t)),i=$u($u(t,e),Iv(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=$u(i,a);return[s[0][0],s[1][0],s[0][1],s[1][1]]}var Ne;(S=>{function n(){return[1,0,0,0,1,0,0,0,1]}S.identity=n;function r(T,A=S.identity()){for(let x=0,E=T.length;x<E;x++)A[x]=T[x];return A}S.copy=r;function e(T,A,x,E,N,I){return S.setAbcdef(S.identity(),T,A,x,E,N,I)}S.create=e;function t(T,A,x,E,N,I,D){return T[0]=A,T[1]=E,T[2]=I,T[3]=x,T[4]=N,T[5]=D,T}S.setAbcdef=t;function o(T,A){let[x,E,N,I,D,_]=a(T),[B,V,U,R,W,j]=a(A),F=B*x+V*N,H=B*E+V*I,q=U*x+R*N,re=U*E+R*I,ee=W*x+j*N+D,X=W*E+j*I+_;return S.create(F,H,q,re,ee,X)}S.append=o;function i(T,A){let[x,E,N,I,D,_]=a(T),[B,V,U,R,W,j]=a(A),F=x,H=E,q=N,re=I;(B!==1||V!==0||U!==0||R!==1)&&(F=x*B+E*U,H=x*V+E*R,q=N*B+I*U,re=N*V+I*R);let ee=D*B+_*U+W,X=D*V+_*R+j;return S.create(F,H,q,re,ee,X)}S.prepend=i;function a(T){return[T[0],T[3],T[1],T[4],T[2],T[5]]}S.getAbcdef=a;function s(T){let[A,x,E,N,I,D]=S.getAbcdef(T),_=A*N-x*E,B=N/_,V=-x/_,U=-E/_,R=A/_,W=(E*D-N*I)/_,j=-(A*D-x*I)/_;return S.create(B,V,U,R,W,j)}S.invert=s;function l([T,A],x){let[E,N,I,D,_,B]=S.getAbcdef(x);return[E*T+I*A+_,N*T+D*A+B]}S.apply=l;function c(T,A){let[x,E,N,I,D,_]=S.getAbcdef(A),B=1/(x*I+N*-E),[V,U]=T;return[I*B*V+-N*B*U+(_*N-D*I)*B,x*B*U+-E*B*V+(-_*x+D*E)*B]}S.applyInverse=c;function u(T,A,x=A){let[E,N,I,D,_,B]=S.getAbcdef(T);return S.setAbcdef(T,E*A,N*x,I*A,D*x,_*A,B*x),T}S.scale=u;function p(T,A){let x=Math.cos(A),E=Math.sin(A),[N,I,D,_,B,V]=S.getAbcdef(T);return S.setAbcdef(T,N*x-I*E,N*E+I*x,D*x-_*E,D*E+_*x,B*x-V*E,B*E+V*x),T}S.rotate=p;function d(T,A,x){let[E,N]=x,I=S.translate(T,-E,-N);return I=S.rotate(I,A),I=S.translate(I,E,N),I}S.rotateAround=d;function h(T,A,x){let[E,N,I,D,_,B]=S.getAbcdef(T);return S.setAbcdef(T,E,N,I,D,_+A,B+x),T}S.translate=h;function f(T,A,x){let[E,N,I,D]=S.getAbcdef(T);return S.setAbcdef(T,E,N,I,D,A,x),T}S.setTranslate=f;function m(T,A,x){let[E,N,I,D]=S.getAbcdef(T);return S.setAbcdef(T,E,N,I,D,A,x),T}S.setPosition=m;function y(T){let[A,x,E,N]=S.getAbcdef(T),I=Math.sqrt(A*A+x*x),D=Math.sqrt(E*E+N*N);return[I,D]}S.getScale=y;function g(T){let[,,,,A,x]=S.getAbcdef(T);return[A,x]}S.getPosition=g;function v(T,A){return S.decompose(T,A).rotation}S.getRotation=v;function P(T,A){let[x,E,N,I,D,_]=S.getAbcdef(T),{rotation:B,scale:V,shear:U}=Nv([[x,N],[E,I]]);return{position:[D+(A[0]*x+A[1]*N)-A[0],_+(A[0]*E+A[1]*I)-A[1]],scale:V,rotation:B,shear:U,pivot:A}}S.decompose=P;function O(T,A,x,E,N=[0,0]){let[I,D]=T,[_,B]=E,[V,U,R,W]=Dv({rotation:x,scale:A,shear:N}),j=I-(_*V+B*R)+_,F=D-(_*U+B*W)+B;return S.create(V,U,R,W,j,F)}S.compose=O})(Ne||(Ne={}));var UD=Math.PI/180,Zne=180/Math.PI;function Ev(n,r,e,t,o,i){let a=n-e,s=r-t;return a*a/(o*o)+s*s/(i*i)<=1}function _v(n){return n*UD}var Uo=class{constructor(r,e,t){this.uuid=r;this.data=e;this.localMatrix=Ne.identity();this.worldMatrix=Ne.identity();this.ignoreCameraZoom=!1;this.visible=!0;this._singleBBox=new On;this._recursiveBBox=new On;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=ii();this.dpr=t.dpr??1,this.dataPatched=e}project(r,e){let t=this.worldMatrix;return e&&(t=Ne.append(e.worldMatrix,t)),Ne.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=Ne.compose(this.position,this.scale,_v(this.rotation),Io.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=Ne.append(this.parent.worldMatrix,this.localMatrix):this.worldMatrix=Ne.copy(this.localMatrix),this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0}get pivot(){return Io.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=Le(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=Ze.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=Ze.removeOverridden(r.path,r.props,a);o={...r,props:s}}}this.updateByPatchedOpBase(o,Wn.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)Wn.toOps(this.data,o.data).forEach(a=>{let s=Wi.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=Wn.patch(this.data,o),Wn.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 Uo(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 Uo&&(r=r.uuid);let e=this;for(;e.parent;){if(e.parent.uuid===r)return!0;e=e.parent}return!1}};var Ft=class extends Uo{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 Ft&&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 Ft?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 Ft&&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 Ft&&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 Ft(this.uuid,this.data,e);t.parent=void 0;for(let o of this.children)t.add(o.clone(e));return t}},nr=class extends Ft{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 nr(this.uuid,this.data,e);t.parent=void 0;for(let o of this.children)t.add(o.clone(e));return t}};function kD(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]],Bv=(n,r,e)=>{let t=n.getCenter(),o=n.getHalfSize(),i=Ne.append(r,n.worldMatrix);o[0]===0&&o[1]===0?e.push(Ne.apply(t,i)):Lv.forEach(a=>{let s=[a[0]*o[0]+t[0],a[1]*o[1]+t[1]];e.push(Ne.apply(s,i))})},On=class{constructor(){this.matrix=Ne.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(),Ne.copy(r.worldMatrix,this.matrix);let t=Ne.invert(r.worldMatrix);this.expandByObjectSize(r,t,e)}expandByObjectSize(r,e,t=!1){let o=[];t===!0&&r instanceof Ft?r.traverse(i=>{i.visible&&Bv(i,e,o)}):Bv(r,e,o),this.setFromPoints(o)}setFromSize(r,e,t){this.makeEmpty(),Ne.copy(t,this.matrix),this.expandBySize(r,e,t)}expandBySize(r,e,t){[Ne.apply([0,0],t),Ne.apply([0,e],t),Ne.apply([r,e],t),Ne.apply([r,0],t)].forEach(i=>this.expandByPoint(i))}getCenter(){let[r,e]=this.min,[t,o]=this.getHalfSize();return Ne.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]=Ne.getAbcdef(this.matrix),l=Ne.create(o,i,a,s,t[0],t[1]);this.vertices=Lv.map(([c,u])=>Ne.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=Ne.append(e.worldMatrix,t)),Ne.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(kD(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],Ne.copy(r.matrix,this.matrix),this.computeVertices(),this.computeEdges()}clone(){let r=new On;return r.copy(this),r}};var Vv,Gv=new Promise(n=>{Vv=n}),Rv=!1;var Yu;function zv(){if(Rv)return;if(Yu)return Yu;async function n(){let e=await import("./ui.js");Vv(e.default??e),Rv=!0}return Yu=n(),Yu}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 Ce,ah;async function HD(n){let r=await Gv;Ce||(ah||(ah=r({locateFile:()=>n})),Ce=await ah)}var jv=Ne.identity(),yl=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=Ie.transparent;this._innerShadowBlur=0;this._innerShadowOffsetX=0;this._innerShadowOffsetY=0;this._innerShadowSpread=0;this._innerShadowColor=Ie.transparent;this._fonts=new Map;this._isSizeDirty=!1;try{let 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 HD(this.wasmURL),this._surface=Ce.MakeWebGLCanvasSurface(this.canvas),this.ctx=this._surface?.getCanvas(),this._paint=new Ce.Paint,this._paint.setAntiAlias(!0),this._paintFill=this._paint.copy(),this._paintFill.setStyle(Ce.PaintStyle.Fill),this._paintStroke=this._paint.copy(),this._paintStroke.setStyle(Ce.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=Ce.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(Xu(r),Ce.ColorSpace.DISPLAY_P3)}set fillColor(r){this._paintFill&&this._paintFill.setColor(Xu(r),Ce.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(Ce.TRANSPARENT)}save(){this.ctx?.save()}restore(){this.ctx?.restore()}beginPath(){this._currentPath?.delete(),this._currentPath=new Ce.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=Ce.XYWHRect(r,e,t,o);if(i===0&&a===0&&l===0&&s===0)this.ctx?.clipRect(c,Ce.ClipOp.Intersect,!0);else{let u=Ce.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,Ce.ClipOp.Intersect,!0)}}_applyShadowOffsetMatrix(){if(this.ctx){let r=Ne.invert(this.currentTransform);this.ctx.concat(r);let e=Ne.translate(Ne.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(Xu(this._dropShadowColor));let s;this._dropShadowBlur>0&&(s=Ce.MaskFilter.MakeBlur(Ce.BlurStyle.Normal,this._dropShadowBlur*this.dpr*(this.camera?.scale??1),!1),a.setMaskFilter(s)),this.ctx.save(),this.ctx.clipPath(this._currentPath,Ce.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,Ce.ClipOp.Intersect,!0);let a=Ce.ImageFilter.MakeBlur(this._backgroundBlur,this._backgroundBlur,Ce.TileMode.Clamp,null),s=r.copy();s.setImageFilter(a),s.setAlphaf(1);let l=this._currentPath.computeTightBounds();this.ctx.saveLayer(s,l,null,Ce.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=Ce.MaskFilter.MakeBlur(Ce.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 Ce.Paint;a.setAntiAlias(!0),a.setStyle(Ce.PaintStyle.Fill),a.setColor(Xu(this._innerShadowColor));let s;this._innerShadowBlur>0&&(s=Ce.MaskFilter.MakeBlur(Ce.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,Ce.ClipOp.Intersect,!0),this.ctx.saveLayer(a,l,null,Ce.SaveLayerInitWithPrevious),this.ctx?.translate(this._innerShadowOffsetX,this._innerShadowOffsetY),this.ctx.drawRect(Ce.XYWHRect(-1e3-this._innerShadowOffsetX,-1e3-this._innerShadowOffsetY,2e3+h+Math.abs(this._innerShadowOffsetX*2),2e3+f+Math.abs(this._innerShadowOffsetY*2)),a),a.setBlendMode(Ce.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"?Ce.ClipOp.Difference:Ce.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(Ce.Path.MakeFromSVGString(r))}ellipse(r,e,t,o,i,a,s,l){if(!Fv([r,e,t,o])||!this._currentPath)return;if(t<0||o<0)throw Error("radii cannot be negative");let c=Ce.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=Ce.XYWHRect(r,e,t,o);if(!!Fv(c))if(i===0&&a===0&&l===0&&s===0)this._currentPath?.addRect(c);else{let u=Ce.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 Ce.TextAlign.Right;case 3:return Ce.TextAlign.Center;case 4:return Ce.TextAlign.Justify;case 1:default:return Ce.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 Ce.TextStyle({fontFamilies:[e.font],fontSize:e.fontSize,heightMultiplier:e.lineHeight,letterSpacing:e.letterSpacing}),c=new Ce.ParagraphStyle({textStyle:l,textAlign:this.getHorizontalAlign(e.horizontalAlign)}),u=Ce.XYWHRect(e.x,e.y,e.width,e.height),p=Ce.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=Ne.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=Ne.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=Ce.MakeWebGLCanvasSurface(this.canvas),this.ctx=this._surface?.getCanvas()))}};function Fv(n){for(let r=0;r<n.length;r++)if(n[r]!==void 0&&!Number.isFinite(n[r]))return!1;return!0}function Xu({r:n,g:r,b:e,a:t}){return Ce.Color4f(n,r,e,t)}var gl=class{constructor(r,e,t){this.uuid=r;this.data=e;this.enabled=!1;this.color=Ie.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 xl=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 Ku=class{constructor(r,e,t){this.uuid=r;this.data=e;this.enabled=!1;this.color=Ie.transparent;this.update(e)}update(r){r.enabled!==void 0&&(this.enabled=r.enabled),r.color!==void 0&&(this.color=r.color)}};var Qu=class{constructor(r,e,t){this.uuid=r;this.data=e;this.enabled=!1;this.color=Ie.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 ir=class extends Uo{constructor(e,t,o){super(e,t,o);this.uuid=e;this.data=t;this.autoClose=!0;this.fill=new Ku(e+"-fill",t.fill,o),this.stroke=new Qu(e+"-stroke",t.stroke,o),this.dropShadow=new gl(e+"-dropShadow",t.dropShadow,o),this.innerShadow=new gl(e+"-innerShadow",t.innerShadow,o),this.backgroundBlur=new xl(e+"-backgroundBlur",t.backgroundBlur,o),this.layerBlur=new xl(e+"-layerBlur",t.layerBlur,o)}applyFillStroke(e){e.fillColor=this.fill.enabled?this.fill.color:Ie.transparent,e.strokeColor=this.stroke.enabled&&this.stroke.thickness>0?this.stroke.color:Ie.transparent,e.strokeMode=this.stroke.mode,e.lineWidth=this.stroke.thickness}applyFilters(e){this.layerBlur.enabled?e.layerBlur=this.layerBlur.radius*5:e.layerBlur=0,this.backgroundBlur.enabled?e.backgroundBlur=this.backgroundBlur.radius*5:e.backgroundBlur=0,this.dropShadow.enabled?(e.dropShadowBlur=this.dropShadow.blurRadius*5,e.dropShadowColor=this.dropShadow.color,e.dropShadowOffsetX=this.dropShadow.offset[0],e.dropShadowOffsetY=this.dropShadow.offset[1]):e.dropShadowColor=Ie.transparent,this.innerShadow.enabled?(e.innerShadowSpread=this.innerShadow.spread,e.innerShadowBlur=this.innerShadow.blurRadius*5,e.innerShadowColor=this.innerShadow.color,e.innerShadowOffsetX=this.innerShadow.offset[0],e.innerShadowOffsetY=this.innerShadow.offset[1]):e.innerShadowColor=Ie.transparent}innerDraw(e){}draw(e){!this.visible||(e.save(),this.applyTransforms(e),this.applyFilters(e),this.applyFillStroke(e),e.beginPath(),this.innerDraw(e),this.autoClose&&e.closePath(),this.fill.enabled&&e.fill(),this.stroke.enabled&&e.stroke(),e.restore())}updateByPatchedOp(e,t,o){super.updateByPatchedOp(e,t,o),e.type===0&&(Le(e.path,["fill"])?this.fill.update(e.props):Le(e.path,["stroke"])?this.stroke.update(e.props):Le(e.path,["dropShadow"])?this.dropShadow.update(e.props):Le(e.path,["innerShadow"])?this.innerShadow.update(e.props):Le(e.path,["layerBlur"])?this.layerBlur.update(e.props):Le(e.path,["backgroundBlur"])?this.backgroundBlur.update(e.props):this.resetBBoxNeedsUpdate())}updateState(e,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 ir(this.uuid,this.data,e);return t.parent=void 0,t}};var Cn=class extends ir{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 Ev(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 Cn(this.uuid,this.data,e);return t.parent=void 0,t}};var mo=class extends ir{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 mo(this.uuid,this.data,e);return t.parent=void 0,t}};var Tn=class extends ir{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:Ie.transparent,e.strokeColor=this.stroke.enabled&&this.stroke.thickness>0?this.stroke.color:Ie.transparent,e.strokeMode="center",e.lineWidth=this.stroke.thickness}innerDraw(e){this._fontHolder?.arrayBuffer&&this._fontHolder.arrayBuffer.byteLength>1&&this.data.font&&e.registerFont(this._fontHolder.arrayBuffer,this.data.font);let 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 Tn(this.uuid,this.data,e);return t.parent=void 0,t}};var us=class extends ir{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=>Zu.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};Zu.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 us(this.uuid,this.data,e);return t.parent=void 0,t}},Zu;(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=sh.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})(Zu||(Zu={}));var sh;(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=lh.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})(sh||(sh={}));var lh;(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})(lh||(lh={}));var fr=class extends Ft{constructor(e,t,o){super(e,t,o);this.uuid=e;this.width=0;this.height=0;this.clipped=!0;this.background=new mo(e+"-background",sa.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&&(Le(e.path,["fill"])?this.fill.update(e.props):Le(e.path,["stroke"])?this.stroke.update(e.props):Le(e.path,["dropShadow"])?this.dropShadow.update(e.props):Le(e.path,["innerShadow"])?this.innerShadow.update(e.props):Le(e.path,["layerBlur"])?this.layerBlur.update(e.props):Le(e.path,["backgroundBlur"])?this.backgroundBlur.update(e.props):this.resetBBoxNeedsUpdate())}clone(e){let t=new fr(this.uuid,this.data,e);t.parent=void 0;for(let o of this.children)t.add(o.clone(e));return t}};var qv=xi(ch(),1),ko=class extends ir{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 ko(this.uuid,this.data,e);return t.parent=void 0,t}};function $v(n,r=1,e=1){if(r<=0||e<=0)return n;let o=(0,qv.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 Yv(o)}function Yv(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 Xv(n,r,e){switch(r.type){case"ellipse2d":return new Cn(n,r,e);case"rectangle2d":return new mo(n,r,e);case"text2d":return new Tn(n,r,e);case"vector2d":return new us(n,r,e);case"path2d":return new ko(n,r,e);case"frame2d":return new fr(n,r,e);case"group2d":default:return new nr(n,r,e)}}var uh=class{constructor(r,e,t){this.uuid=r;this.data=e;this.group=new nr(uh.GROUP_ID,{...Ns.defaultData},t),this.createChildrenObjects(e.objects,this.group,t)}createObject(r,e,t,o,i,a){let s=Xv(r,e,a);s&&(o.add(s),o.children.splice(i,0,o.children.pop()),s.updateWorldMatrix(),t.length>0&&(s instanceof nr||s instanceof fr)&&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 Ft&&(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 Ft){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 Ft||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)=>Nl(t.sortKey,o.sortKey)),e.map(t=>t.entity)}},pi=uh;pi.GROUP_ID="scene2d";function dh({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 YD=xi(ch(),1);var Ase={mm:{mm:1,cm:.1,in:1/25.4,pt:72/25.4,pc:6/25.4,px:-1},cm:{mm:10,cm:1,in:1/2.54,pt:72/2.54,pc:6/2.54,px:-1},in:{mm:25.4,cm:2.54,in:1,pt:72,pc:6,px:-1},pt:{mm:25.4/72,cm:2.54/72,in:1/72,pt:1,pc:6/72,px:-1},pc:{mm:25.4/6,cm:2.54/6,in:1/6,pt:72/6,pc:1,px:-1},px:{mm:1,px:1,cm:1,in:1,pt:1,pc:1}};import{BufferGeometry as XD,CanvasTexture as KD,Float32BufferAttribute as Kv,HalfFloatType as QD,MathUtils as ZD,Mesh as JD,OrthographicCamera as eE,ShaderMaterial as tE,Uniform as rE,WebGLRenderTarget as oE}from"three";var nE=`
|
|
2621
|
+
`,XE=fl.lights_fragment_begin,KE=fl.shadowmask_pars_fragment,Av=null,QE=n=>{switch(n){case"low":return 8;case"medium":return 16;case"high":return 32;default:return 16}},Mv=(n="medium")=>{if(Av===n)return!1;Av=n;let r=QE(n);fl.shadowmap_pars_fragment=YE(r);let e=XE.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 ]"),fl.lights_fragment_begin=e;let t=KE.slice();return t=t.replaceAll("getShadow(","getShadow( UNROLLED_LOOP_INDEX, "),fl.shadowmask_pars_fragment=t,!0};import{DirectionalLight as rD,CameraHelper as Iv}from"three";import{DirectionalLightHelper as ZE}from"three";var as=class extends ho(ZE){constructor(e,t=15,o=10066329){super(e,t,o);this.object=e;this.added=!1;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,t){mo(this.object,as.geometryHelper,e,t)}};import{PointLightHelper as JE}from"three";var ss=class extends ho(JE){constructor(e,t=15,o=6710886){super(e,t,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,t){mo(this.object,ss.geometryHelper,e,t)}};import{SpotLightHelper as eD,Vector3 as tD}from"three";var Yu=class extends ho(eD){constructor(e,t=6710886){super(e,t);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,t){mo(this.object,Yu.geometryHelper,e,t)}update(){if(this.object!==void 0){let e=Yu._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)}}},hl=Yu;hl._vector=new tD;function oD(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 ls=class extends is(rD,as){constructor(r,e,t){super(),this.super_Entity(r,e),this.castShadow=!0,this.shadow.mapSize.width=2048,this.shadow.mapSize.height=2048,this.shadow.normalBias=1,this.layers.enable(3);let i=this.shadow.camera;i.top=1250,i.bottom=-1250,i.right=1250,i.left=-1250,i.near=-1e4,i.far=2500;let a=new Iv(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 Iv&&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&&oD(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()}};import{Scene as GD}from"three";import{SpotLight as nD,CameraHelper as Nv,MathUtils as iD,Vector3 as Bv,Quaternion as aD}from"three";var Ev=new Bv,Dv=new Bv,_v=new aD,cs=class extends is(nD,hl){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=iD.RAD2DEG*2*this.angle,i.aspect=1,i.near=100,i.far=2500;let a=new Nv(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 Nv&&e.update()}}updateMatrixWorld(r){super.updateMatrixWorld(r),Dv.setFromMatrixPosition(this.matrixWorld),_v.setFromRotationMatrix(this.matrixWorld),Ev.copy(this.up).applyQuaternion(_v).negate().multiplyScalar(this.distance),this.target.position.copy(Dv).add(Ev),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 sD(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 Xu(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 Lv(n){return[[n[0][0],n[1][0]],[n[0][1],n[1][1]]]}function Rv(n){let[r,e,t]=sD(n),o=Xu(r,Lv(t)),i=Xu(Xu(t,e),Lv(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 Vv({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=Xu(i,a);return[s[0][0],s[1][0],s[0][1],s[1][1]]}var Ne;(S=>{function n(){return[1,0,0,0,1,0,0,0,1]}S.identity=n;function r(C,A=S.identity()){for(let x=0,E=C.length;x<E;x++)A[x]=C[x];return A}S.copy=r;function e(C,A,x,E,N,I){return S.setAbcdef(S.identity(),C,A,x,E,N,I)}S.create=e;function t(C,A,x,E,N,I,D){return C[0]=A,C[1]=E,C[2]=I,C[3]=x,C[4]=N,C[5]=D,C}S.setAbcdef=t;function o(C,A){let[x,E,N,I,D,_]=a(C),[B,V,U,R,W,j]=a(A),F=B*x+V*N,H=B*E+V*I,q=U*x+R*N,re=U*E+R*I,ee=W*x+j*N+D,X=W*E+j*I+_;return S.create(F,H,q,re,ee,X)}S.append=o;function i(C,A){let[x,E,N,I,D,_]=a(C),[B,V,U,R,W,j]=a(A),F=x,H=E,q=N,re=I;(B!==1||V!==0||U!==0||R!==1)&&(F=x*B+E*U,H=x*V+E*R,q=N*B+I*U,re=N*V+I*R);let ee=D*B+_*U+W,X=D*V+_*R+j;return S.create(F,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[A,x,E,N,I,D]=S.getAbcdef(C),_=A*N-x*E,B=N/_,V=-x/_,U=-E/_,R=A/_,W=(E*D-N*I)/_,j=-(A*D-x*I)/_;return S.create(B,V,U,R,W,j)}S.invert=s;function l([C,A],x){let[E,N,I,D,_,B]=S.getAbcdef(x);return[E*C+I*A+_,N*C+D*A+B]}S.apply=l;function c(C,A){let[x,E,N,I,D,_]=S.getAbcdef(A),B=1/(x*I+N*-E),[V,U]=C;return[I*B*V+-N*B*U+(_*N-D*I)*B,x*B*U+-E*B*V+(-_*x+D*E)*B]}S.applyInverse=c;function u(C,A,x=A){let[E,N,I,D,_,B]=S.getAbcdef(C);return S.setAbcdef(C,E*A,N*x,I*A,D*x,_*A,B*x),C}S.scale=u;function p(C,A){let x=Math.cos(A),E=Math.sin(A),[N,I,D,_,B,V]=S.getAbcdef(C);return S.setAbcdef(C,N*x-I*E,N*E+I*x,D*x-_*E,D*E+_*x,B*x-V*E,B*E+V*x),C}S.rotate=p;function d(C,A,x){let[E,N]=x,I=S.translate(C,-E,-N);return I=S.rotate(I,A),I=S.translate(I,E,N),I}S.rotateAround=d;function h(C,A,x){let[E,N,I,D,_,B]=S.getAbcdef(C);return S.setAbcdef(C,E,N,I,D,_+A,B+x),C}S.translate=h;function f(C,A,x){let[E,N,I,D]=S.getAbcdef(C);return S.setAbcdef(C,E,N,I,D,A,x),C}S.setTranslate=f;function m(C,A,x){let[E,N,I,D]=S.getAbcdef(C);return S.setAbcdef(C,E,N,I,D,A,x),C}S.setPosition=m;function y(C){let[A,x,E,N]=S.getAbcdef(C),I=Math.sqrt(A*A+x*x),D=Math.sqrt(E*E+N*N);return[I,D]}S.getScale=y;function g(C){let[,,,,A,x]=S.getAbcdef(C);return[A,x]}S.getPosition=g;function v(C,A){return S.decompose(C,A).rotation}S.getRotation=v;function P(C,A){let[x,E,N,I,D,_]=S.getAbcdef(C),{rotation:B,scale:V,shear:U}=Rv([[x,N],[E,I]]);return{position:[D+(A[0]*x+A[1]*N)-A[0],_+(A[0]*E+A[1]*I)-A[1]],scale:V,rotation:B,shear:U,pivot:A}}S.decompose=P;function O(C,A,x,E,N=[0,0]){let[I,D]=C,[_,B]=E,[V,U,R,W]=Vv({rotation:x,scale:A,shear:N}),j=I-(_*V+B*R)+_,F=D-(_*U+B*W)+B;return S.create(V,U,R,W,j,F)}S.compose=O})(Ne||(Ne={}));var lD=Math.PI/180,_ie=180/Math.PI;function Gv(n,r,e,t,o,i){let a=n-e,s=r-t;return a*a/(o*o)+s*s/(i*i)<=1}function zv(n){return n*lD}var Uo=class{constructor(r,e,t){this.uuid=r;this.data=e;this.localMatrix=Ne.identity();this.worldMatrix=Ne.identity();this.ignoreCameraZoom=!1;this.visible=!0;this._singleBBox=new Cn;this._recursiveBBox=new Cn;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=ai();this.dpr=t.dpr??1,this.dataPatched=e}project(r,e){let t=this.worldMatrix;return e&&(t=Ne.append(e.worldMatrix,t)),Ne.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=Ne.compose(this.position,this.scale,zv(this.rotation),No.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=Ne.append(this.parent.worldMatrix,this.localMatrix):this.worldMatrix=Ne.copy(this.localMatrix),this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0}get pivot(){return No.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=Le(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=Ze.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=Ze.removeOverridden(r.path,r.props,a);o={...r,props:s}}}this.updateByPatchedOpBase(o,qn.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)qn.toOps(this.data,o.data).forEach(a=>{let s=Wi.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=qn.patch(this.data,o),qn.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 Uo(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 Uo&&(r=r.uuid);let e=this;for(;e.parent;){if(e.parent.uuid===r)return!0;e=e.parent}return!1}};var Ut=class extends Uo{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 Ut&&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 Ut?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 Ut&&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 Ut&&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 Ut(this.uuid,this.data,e);t.parent=void 0;for(let o of this.children)t.add(o.clone(e));return t}},ir=class extends Ut{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 ir(this.uuid,this.data,e);t.parent=void 0;for(let o of this.children)t.add(o.clone(e));return t}};function cD(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 Fv=[[-1,1],[-1,-1],[1,-1],[1,1]],jv=(n,r,e)=>{let t=n.getCenter(),o=n.getHalfSize(),i=Ne.append(r,n.worldMatrix);o[0]===0&&o[1]===0?e.push(Ne.apply(t,i)):Fv.forEach(a=>{let s=[a[0]*o[0]+t[0],a[1]*o[1]+t[1]];e.push(Ne.apply(s,i))})},Cn=class{constructor(){this.matrix=Ne.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(),Ne.copy(r.worldMatrix,this.matrix);let t=Ne.invert(r.worldMatrix);this.expandByObjectSize(r,t,e)}expandByObjectSize(r,e,t=!1){let o=[];t===!0&&r instanceof Ut?r.traverse(i=>{i.visible&&jv(i,e,o)}):jv(r,e,o),this.setFromPoints(o)}setFromSize(r,e,t){this.makeEmpty(),Ne.copy(t,this.matrix),this.expandBySize(r,e,t)}expandBySize(r,e,t){[Ne.apply([0,0],t),Ne.apply([0,e],t),Ne.apply([r,e],t),Ne.apply([r,0],t)].forEach(i=>this.expandByPoint(i))}getCenter(){let[r,e]=this.min,[t,o]=this.getHalfSize();return Ne.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]=Ne.getAbcdef(this.matrix),l=Ne.create(o,i,a,s,t[0],t[1]);this.vertices=Fv.map(([c,u])=>Ne.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=Ne.append(e.worldMatrix,t)),Ne.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(cD(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],Ne.copy(r.matrix,this.matrix),this.computeVertices(),this.computeEdges()}clone(){let r=new Cn;return r.copy(this),r}};var kv,Hv=new Promise(n=>{kv=n}),Uv=!1;var Ku;function Wv(){if(Uv)return;if(Ku)return Ku;async function n(){let e=await import("./ui.js");kv(e.default??e),Uv=!0}return Ku=n(),Ku}function Yv(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 Ce,ch;async function uD(n){let r=await Hv;Ce||(ch||(ch=r({locateFile:()=>n})),Ce=await ch)}var qv=Ne.identity(),yl=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=Ie.transparent;this._innerShadowBlur=0;this._innerShadowOffsetX=0;this._innerShadowOffsetY=0;this._innerShadowSpread=0;this._innerShadowColor=Ie.transparent;this._fonts=new Map;this._isSizeDirty=!1;try{let t=r.getBoundingClientRect();r.width=t.width*e,r.height=t.height*e}catch{console.log(r.width,e)}this._currentM3Transform=qv,this._currentTransform=new Float32Array(qv)}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 uD(this.wasmURL),this._surface=Ce.MakeWebGLCanvasSurface(this.canvas),this.ctx=this._surface?.getCanvas(),this._paint=new Ce.Paint,this._paint.setAntiAlias(!0),this._paintFill=this._paint.copy(),this._paintFill.setStyle(Ce.PaintStyle.Fill),this._paintStroke=this._paint.copy(),this._paintStroke.setStyle(Ce.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=Ce.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(Qu(r),Ce.ColorSpace.DISPLAY_P3)}set fillColor(r){this._paintFill&&this._paintFill.setColor(Qu(r),Ce.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(Ce.TRANSPARENT)}save(){this.ctx?.save()}restore(){this.ctx?.restore()}beginPath(){this._currentPath?.delete(),this._currentPath=new Ce.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=Ce.XYWHRect(r,e,t,o);if(i===0&&a===0&&l===0&&s===0)this.ctx?.clipRect(c,Ce.ClipOp.Intersect,!0);else{let u=Ce.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,Ce.ClipOp.Intersect,!0)}}_applyShadowOffsetMatrix(){if(this.ctx){let r=Ne.invert(this.currentTransform);this.ctx.concat(r);let e=Ne.translate(Ne.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(Qu(this._dropShadowColor));let s;this._dropShadowBlur>0&&(s=Ce.MaskFilter.MakeBlur(Ce.BlurStyle.Normal,this._dropShadowBlur*this.dpr*(this.camera?.scale??1),!1),a.setMaskFilter(s)),this.ctx.save(),this.ctx.clipPath(this._currentPath,Ce.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,Ce.ClipOp.Intersect,!0);let a=Ce.ImageFilter.MakeBlur(this._backgroundBlur,this._backgroundBlur,Ce.TileMode.Clamp,null),s=r.copy();s.setImageFilter(a),s.setAlphaf(1);let l=this._currentPath.computeTightBounds();this.ctx.saveLayer(s,l,null,Ce.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=Ce.MaskFilter.MakeBlur(Ce.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 Ce.Paint;a.setAntiAlias(!0),a.setStyle(Ce.PaintStyle.Fill),a.setColor(Qu(this._innerShadowColor));let s;this._innerShadowBlur>0&&(s=Ce.MaskFilter.MakeBlur(Ce.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,Ce.ClipOp.Intersect,!0),this.ctx.saveLayer(a,l,null,Ce.SaveLayerInitWithPrevious),this.ctx?.translate(this._innerShadowOffsetX,this._innerShadowOffsetY),this.ctx.drawRect(Ce.XYWHRect(-1e3-this._innerShadowOffsetX,-1e3-this._innerShadowOffsetY,2e3+h+Math.abs(this._innerShadowOffsetX*2),2e3+f+Math.abs(this._innerShadowOffsetY*2)),a),a.setBlendMode(Ce.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"?Ce.ClipOp.Difference:Ce.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(Ce.Path.MakeFromSVGString(r))}ellipse(r,e,t,o,i,a,s,l){if(!$v([r,e,t,o])||!this._currentPath)return;if(t<0||o<0)throw Error("radii cannot be negative");let c=Ce.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=Ce.XYWHRect(r,e,t,o);if(!!$v(c))if(i===0&&a===0&&l===0&&s===0)this._currentPath?.addRect(c);else{let u=Ce.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 Ce.TextAlign.Right;case 3:return Ce.TextAlign.Center;case 4:return Ce.TextAlign.Justify;case 1:default:return Ce.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 Ce.TextStyle({fontFamilies:[e.font],fontSize:e.fontSize,heightMultiplier:e.lineHeight,letterSpacing:e.letterSpacing}),c=new Ce.ParagraphStyle({textStyle:l,textAlign:this.getHorizontalAlign(e.horizontalAlign)}),u=Ce.XYWHRect(e.x,e.y,e.width,e.height),p=Ce.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=Ne.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=Ne.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=Ce.MakeWebGLCanvasSurface(this.canvas),this.ctx=this._surface?.getCanvas()))}};function $v(n){for(let r=0;r<n.length;r++)if(n[r]!==void 0&&!Number.isFinite(n[r]))return!1;return!0}function Qu({r:n,g:r,b:e,a:t}){return Ce.Color4f(n,r,e,t)}var gl=class{constructor(r,e,t){this.uuid=r;this.data=e;this.enabled=!1;this.color=Ie.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 xl=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 Zu=class{constructor(r,e,t){this.uuid=r;this.data=e;this.enabled=!1;this.color=Ie.transparent;this.update(e)}update(r){r.enabled!==void 0&&(this.enabled=r.enabled),r.color!==void 0&&(this.color=r.color)}};var Ju=class{constructor(r,e,t){this.uuid=r;this.data=e;this.enabled=!1;this.color=Ie.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 Uo{constructor(e,t,o){super(e,t,o);this.uuid=e;this.data=t;this.autoClose=!0;this.fill=new Zu(e+"-fill",t.fill,o),this.stroke=new Ju(e+"-stroke",t.stroke,o),this.dropShadow=new gl(e+"-dropShadow",t.dropShadow,o),this.innerShadow=new gl(e+"-innerShadow",t.innerShadow,o),this.backgroundBlur=new xl(e+"-backgroundBlur",t.backgroundBlur,o),this.layerBlur=new xl(e+"-layerBlur",t.layerBlur,o)}applyFillStroke(e){e.fillColor=this.fill.enabled?this.fill.color:Ie.transparent,e.strokeColor=this.stroke.enabled&&this.stroke.thickness>0?this.stroke.color:Ie.transparent,e.strokeMode=this.stroke.mode,e.lineWidth=this.stroke.thickness}applyFilters(e){this.layerBlur.enabled?e.layerBlur=this.layerBlur.radius*5:e.layerBlur=0,this.backgroundBlur.enabled?e.backgroundBlur=this.backgroundBlur.radius*5:e.backgroundBlur=0,this.dropShadow.enabled?(e.dropShadowBlur=this.dropShadow.blurRadius*5,e.dropShadowColor=this.dropShadow.color,e.dropShadowOffsetX=this.dropShadow.offset[0],e.dropShadowOffsetY=this.dropShadow.offset[1]):e.dropShadowColor=Ie.transparent,this.innerShadow.enabled?(e.innerShadowSpread=this.innerShadow.spread,e.innerShadowBlur=this.innerShadow.blurRadius*5,e.innerShadowColor=this.innerShadow.color,e.innerShadowOffsetX=this.innerShadow.offset[0],e.innerShadowOffsetY=this.innerShadow.offset[1]):e.innerShadowColor=Ie.transparent}innerDraw(e){}draw(e){!this.visible||(e.save(),this.applyTransforms(e),this.applyFilters(e),this.applyFillStroke(e),e.beginPath(),this.innerDraw(e),this.autoClose&&e.closePath(),this.fill.enabled&&e.fill(),this.stroke.enabled&&e.stroke(),e.restore())}updateByPatchedOp(e,t,o){super.updateByPatchedOp(e,t,o),e.type===0&&(Le(e.path,["fill"])?this.fill.update(e.props):Le(e.path,["stroke"])?this.stroke.update(e.props):Le(e.path,["dropShadow"])?this.dropShadow.update(e.props):Le(e.path,["innerShadow"])?this.innerShadow.update(e.props):Le(e.path,["layerBlur"])?this.layerBlur.update(e.props):Le(e.path,["backgroundBlur"])?this.backgroundBlur.update(e.props):this.resetBBoxNeedsUpdate())}updateState(e,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 Tn=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 Gv(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 Tn(this.uuid,this.data,e);return t.parent=void 0,t}};var yo=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 yo(this.uuid,this.data,e);return t.parent=void 0,t}};var An=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:Ie.transparent,e.strokeColor=this.stroke.enabled&&this.stroke.thickness>0?this.stroke.color:Ie.transparent,e.strokeMode="center",e.lineWidth=this.stroke.thickness}innerDraw(e){this._fontHolder?.arrayBuffer&&this._fontHolder.arrayBuffer.byteLength>1&&this.data.font&&e.registerFont(this._fontHolder.arrayBuffer,this.data.font);let 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 An(this.uuid,this.data,e);return t.parent=void 0,t}};var us=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=>ed.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};ed.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 us(this.uuid,this.data,e);return t.parent=void 0,t}},ed;(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=uh.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})(ed||(ed={}));var uh;(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=dh.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})(uh||(uh={}));var dh;(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})(dh||(dh={}));var fr=class extends Ut{constructor(e,t,o){super(e,t,o);this.uuid=e;this.width=0;this.height=0;this.clipped=!0;this.background=new yo(e+"-background",sa.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&&(Le(e.path,["fill"])?this.fill.update(e.props):Le(e.path,["stroke"])?this.stroke.update(e.props):Le(e.path,["dropShadow"])?this.dropShadow.update(e.props):Le(e.path,["innerShadow"])?this.innerShadow.update(e.props):Le(e.path,["layerBlur"])?this.layerBlur.update(e.props):Le(e.path,["backgroundBlur"])?this.backgroundBlur.update(e.props):this.resetBBoxNeedsUpdate())}clone(e){let t=new fr(this.uuid,this.data,e);t.parent=void 0;for(let o of this.children)t.add(o.clone(e));return t}};var Zv=bi(ph(),1),ko=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 ko(this.uuid,this.data,e);return t.parent=void 0,t}};function Jv(n,r=1,e=1){if(r<=0||e<=0)return n;let o=(0,Zv.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 eS(o)}function eS(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 tS(n,r,e){switch(r.type){case"ellipse2d":return new Tn(n,r,e);case"rectangle2d":return new yo(n,r,e);case"text2d":return new An(n,r,e);case"vector2d":return new us(n,r,e);case"path2d":return new ko(n,r,e);case"frame2d":return new fr(n,r,e);case"group2d":default:return new ir(n,r,e)}}var fh=class{constructor(r,e,t){this.uuid=r;this.data=e;this.group=new ir(fh.GROUP_ID,{...Ns.defaultData},t),this.createChildrenObjects(e.objects,this.group,t)}createObject(r,e,t,o,i,a){let s=tS(r,e,a);s&&(o.add(s),o.children.splice(i,0,o.children.pop()),s.updateWorldMatrix(),t.length>0&&(s instanceof ir||s instanceof fr)&&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 Ut&&(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 Ut){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 Ut||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)=>Nl(t.sortKey,o.sortKey)),e.map(t=>t.entity)}},fi=fh;fi.GROUP_ID="scene2d";function hh({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 hD=bi(ph(),1);var lle={mm:{mm:1,cm:.1,in:1/25.4,pt:72/25.4,pc:6/25.4,px:-1},cm:{mm:10,cm:1,in:1/2.54,pt:72/2.54,pc:6/2.54,px:-1},in:{mm:25.4,cm:2.54,in:1,pt:72,pc:6,px:-1},pt:{mm:25.4/72,cm:2.54/72,in:1/72,pt:1,pc:6/72,px:-1},pc:{mm:25.4/6,cm:2.54/6,in:1/6,pt:72/6,pc:1,px:-1},px:{mm:1,px:1,cm:1,in:1,pt:1,pc:1}};import{BufferGeometry as mD,CanvasTexture as yD,Float32BufferAttribute as rS,HalfFloatType as gD,MathUtils as xD,Mesh as bD,OrthographicCamera as vD,ShaderMaterial as SD,Uniform as wD,WebGLRenderTarget as PD}from"three";var OD=`
|
|
2622
2622
|
varying vec2 vUv;
|
|
2623
2623
|
void main() {
|
|
2624
2624
|
vUv = uv;
|
|
2625
2625
|
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
|
|
2626
|
-
}`,
|
|
2626
|
+
}`,CD=`
|
|
2627
2627
|
uniform sampler2D tDiffuse;
|
|
2628
2628
|
varying vec2 vUv;
|
|
2629
2629
|
void main() {
|
|
2630
2630
|
vec4 texel = texture2D( tDiffuse, vUv );
|
|
2631
2631
|
gl_FragColor = texel;
|
|
2632
|
-
}`,aE=new eE(-1,1,1,-1,0,1),hh=class extends XD{constructor(){super(),this.setAttribute("position",new Kv([-1,3,0,-1,-1,0,3,-1,0],3)),this.setAttribute("uv",new Kv([0,2,0,0,2,0],2))}},sE=new hh,mh=class{constructor(r){this._mesh=new JD(sE,r)}dispose(){this._mesh.geometry.dispose()}render(r){r.render(this._mesh,aE)}get material(){return this._mesh.material}set material(r){this._mesh.material=r}},Qv=new tE({defines:{},uniforms:{tDiffuse:new rE(null)},vertexShader:nE,fragmentShader:iE}),lE=new mh(Qv),ph=null,fh=null,cE=()=>(ph===null&&(ph=document.createElement("canvas")),ph),uE=n=>(fh===null&&(fh=new yl(n)),fh),dE=Ne.identity(),ds=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 pi(ZD.generateUUID(),Uc.defaultData,{dpr:window.devicePixelRatio,shared:o.shared}),this.canvas=cE(),this.renderer=uE(this.canvas),this.promise=this.init(),this.renderTarget=new oE(1,1,{type:QD,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 KD(this.canvas)),this._canvasTexture}async init(){this.renderer instanceof yl&&(this.renderer.wasmURL=bb.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(),lE.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=dE,this.isScreenSpace&&(this.frameOverride.fill.color=Ie.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 fr)))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 fr&&r instanceof fr||n instanceof nr&&r instanceof nr)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&&fE({objectOverride:l,objectRoot:c,newParentWidth:e,newParentHeight:t,initialParentWidth:o,initialParentHeight:i})}}function pE(n){if(yh(n))return[n.width,n.height];if(n instanceof ko){let[r,e]=n.getHalfSize();return[r*2,e*2]}else if(n instanceof nr){let[r,e]=n.recursiveBBox.getHalfSize();return[r*2,e*2]}return[0,0]}function fE({objectOverride:n,objectRoot:r,newParentWidth:e,newParentHeight:t,initialParentWidth:o,initialParentHeight:i}){let[a,s]=pE(r),{width:l,height:c,position:u}=dh({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)hE({stateId:p,objectOverride:n,objectRoot:r,newParentWidth:e,newParentHeight:t,initialParentWidth:o,initialParentHeight:i});if(yh(n)||n instanceof nr)yh(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 ko){let p=r,d=a!==0?l/a:1,h=s!==0?c/s:1;n.path=$v(p.path,d,h),n.data={...n.data,path:n.path}}}function hE({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}=dh({constraints:r.data,newParentWidth:t,newParentHeight:o,initialParentWidth:i,initialParentHeight:a,objectInitialWidth:Io.isResizeable(l)?l.width:0,objectInitialHeight:Io.isResizeable(l)?l.height:0,objectInitialPosition:l.position});Object.assign(r.states[n],{position:p}),Io.isResizeable(s)&&Object.assign(r.states[n],{width:c,height:u})}}function yh(n){return n instanceof mo||n instanceof fr||n instanceof Cn||n instanceof Tn}var Cr=class extends pa(xE){constructor(e,t,o){super();this.data=t;this.bgColor=new Tt(1,1,1,1);this.fog=null;this.backupFog=new yE(16777215,.1,2e3);this.fogUseBGColor=!1;this.isActive=!1;this.aoColor=new mE;this.penumbraSizeArrayCache=null;this.super_Entity(e,t),this.personalCamera=new Fo(rn,{...kn.defaultData,...t.camera,name:"Personal Camera"}),this.personalCamera.objectHelper.visible=!1,this.add(this.personalCamera),this.activeCamera=this.personalCamera,this.ambientLight=new gE(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 pi((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 ds(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=jt(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 or&&t.recomputeBoolean()}),this.updateShadow(this.data.shadow)}forceMaterialsUpdate(){this.traverseEntity(e=>{if(e instanceof rr)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&&wv(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=jt(e.color,t),this.backupFog.near=e.near,this.backupFog.far=e.far}updateAo(e,t){e.aoColor!==void 0&&(this.aoColor=jt(e.aoColor,t))}updateByOp(e,t,o,i){let a=this.data.uiFrame;super.updateByOp(e,t,o,i);let s=t;Le(e.path,["fog"])?this.updateFog(s.fog,o.shared):Le(e.path,["ao"])?this.updateAo(s.ao,o.shared):Le(e.path,["ambient"])?this.updateAmbientLight(s.ambient,o.shared):Le(e.path,["shadow"])?this.updateShadow(s.shadow):e.type===0&&e.path.length===0&&(e.props.uiFrame!==void 0||a!==s.uiFrame)&&this.updateUIFrame(e.props.uiFrame,o)}updateUIFrame(e,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(jt(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 ls&&o.visible&&e<3&&(this.penumbraSizeArrayCache[e]=o.data.penumbraSize??.5,e+=1),o instanceof cs&&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;Re.is(a)&&(a.visible||s?.object.data.visible)&&((wn(a)||pl(a)&&this.scene.enableHelpers&&a.objectHelper.visible)&&(e.intersectObject(a,!1,t),bl(a,e,t,!0)),o(a))}};return o(this),t}updateEntity2DByOp(e,t,o,i){this.uiCanvas?.updateEntity2DByOp(e,t,o,i)}};import{PointLight as bE,Vector3 as ed,Box3 as vE,Box3Helper as Jv,Color as SE}from"three";var td=class extends is(bE,ss){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 ed(-i.far+this.position.x,-i.far+this.position.y,-i.far+this.position.z),s=new ed(i.far+this.position.x,i.far+this.position.y,i.far+this.position.z),l=new vE(a,s),c=new Jv(l,new SE(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 Jv){let t=this.shadow.camera,o=new ed(-t.far+this.position.x,-t.far+this.position.y,-t.far+this.position.z),i=new ed(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 rd=class extends lt{get forceComputeSize(){return!0}get shape(){return this.geometry.userData.shape}updateEntityBoxSize(r,e){let t=this.geometry.getAttribute("position");t!==void 0?Xs(t,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:t.count,r,e):super.updateEntityBoxSize(r,e)}};var ps=class extends lt{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=Oa;break;case"Ellipse":i=va;break;case"Polygon":i=du;break;case"Star":i=pu;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?Xs(o,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:o.count,e,t):super.updateEntityBoxSize(e,t)}};var od=class extends vn{constructor(e,t,o){super(e,t,o);this.data=t}};import{Group as wE,Matrix4 as PE,Skeleton as OE}from"three";var Ho=class extends Pr(wE,Or){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 Jr.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]=$r.apply(o.data[s],e[s]));return this.overrideData=a,i}else return{...bt.defaultData,...e,...Mr(bt.defaultData,Jr.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 Jr.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&&Jr.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(Re.is(s))e.scene.disposeAndUnregisterEntityRecursivelyIfNotReregistered(s),nd(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(Re.is(s)){let l=s.data;l.type==="Empty"&&l.animations&&s.traverseEntity(c=>{let u=c.dataPatched;if(c instanceof lt&&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 PE().fromArray(m)),f=new OE(d,h);c.bind(f,c.bindMatrix)}}else c.matrixAutoUpdate=!0})}}this.oldComponent=this.component}}};function nd(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)Re.is(e)&&nd(e)}}function eS(n,r,e,t){return n.component===r&&_d(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 Ho&&o.isInstanceRoot&&o.expandInstanceChildren(n);let c=0;for(let u of o.children)if(Re.is(u)){let p=[...r,...typeof u.identity=="string"?[u.identity]:u.identity],d=ta.resolve(e,p,1);if(d!=null&&!(d instanceof Qe)){if(!1)debugger;Object.setPrototypeOf(d,Qe.prototype),console.error("wrong prototype")}let h=null,f;if(!s){let m=t.children[c];if(h=Re.is(m)?m:null,h!==null){let y=eS(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=eS(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?$r.apply(u.data,d):u.data;Ir.is(m.type)&&(m={...m,type:"Empty"}),h=_r.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,tS(n,r,e,h,u,i,a+1,s,l)}if(!s){let u=c;for(;;){let p=t.children[c];if(Re.is(p))n.pendingDeletes.add(p);else break;c+=1}t.children.splice(u,c-u)}return!0}import{Bone as CE}from"three";var id=class extends Pr(CE,Or){constructor(r,e){super(),this.super_Entity(r,e),this.objectHelper.update(),this.matrixAutoUpdate=!0}updateState(r,e){this.updateState_Entity(r,e)}};var fi=class extends lt{constructor(e,t,o){super(e,t,o);this.onBeforeRender=e=>{this.uiCanvas.render(e)};this.uiCanvas=new ds(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=Bo(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):Le(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)}};import{Object3D as RE,Vector3 as Tr,InstancedMesh as VE,InstancedBufferAttribute as GE,PlaneGeometry as zE,Vector4 as vl,Quaternion as wS,TextureLoader as jE,Texture as PS,Euler as FE,MathUtils as Ph}from"three";import{GPUComputationRenderer as UE}from"three/examples/jsm/misc/GPUComputationRenderer.js";import{Vector3 as rS,FloatType as gh,DataTexture as xh,RGBAFormat as bh,Mesh as TE,Euler as gce,Matrix4 as xce}from"three";import{MeshSurfaceSampler as AE}from"three/examples/jsm/math/MeshSurfaceSampler.js";function oS(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 nS(n){let r=Math.ceil(Math.sqrt(n));return Math.max(r,1)}function iS(n,r){let e=new TE(n.geometry,n.material),t=[],o=[],i=new rS,a=new rS;e.geometry.index!==null&&(e.geometry=e.geometry.toNonIndexed());let s=new AE(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 xh(t,r,r,bh,gh);return o.needsUpdate=!0,o}function aS({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 xh(r,n,n,bh,gh);return e.needsUpdate=!0,e}function sS(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 xh(r,n,n,bh,gh);return e.needsUpdate=!0,e}var lS=`
|
|
2632
|
+
}`,TD=new vD(-1,1,1,-1,0,1),gh=class extends mD{constructor(){super(),this.setAttribute("position",new rS([-1,3,0,-1,-1,0,3,-1,0],3)),this.setAttribute("uv",new rS([0,2,0,0,2,0],2))}},AD=new gh,xh=class{constructor(r){this._mesh=new bD(AD,r)}dispose(){this._mesh.geometry.dispose()}render(r){r.render(this._mesh,TD)}get material(){return this._mesh.material}set material(r){this._mesh.material=r}},oS=new SD({defines:{},uniforms:{tDiffuse:new wD(null)},vertexShader:OD,fragmentShader:CD}),MD=new xh(oS),mh=null,yh=null,ID=()=>(mh===null&&(mh=document.createElement("canvas")),mh),ND=n=>(yh===null&&(yh=new yl(n)),yh),ED=Ne.identity(),ds=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 fi(xD.generateUUID(),Hc.defaultData,{dpr:window.devicePixelRatio,shared:o.shared}),this.canvas=ID(),this.renderer=ND(this.canvas),this.promise=this.init(),this.renderTarget=new PD(1,1,{type:gD,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 yD(this.canvas)),this._canvasTexture}async init(){this.renderer instanceof yl&&(this.renderer.wasmURL=Cb.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(),oS.uniforms.tDiffuse.value=this.canvasTexture,this.canvasTexture.needsUpdate=!0;let e=r.getRenderTarget();r.setRenderTarget(this.renderTarget),r.clear(),MD.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=ED,this.isScreenSpace&&(this.frameOverride.fill.color=Ie.from0to1([0,0,0,0])),this.frameOverride.data={...this.frameOverride.data,width:e,height:t},nS({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 fr)))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 nS({objectOverride:n,objectRoot:r,newParentWidth:e,newParentHeight:t,initialParentWidth:o,initialParentHeight:i}){if(n instanceof fr&&r instanceof fr||n instanceof ir&&r instanceof ir)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&&_D({objectOverride:l,objectRoot:c,newParentWidth:e,newParentHeight:t,initialParentWidth:o,initialParentHeight:i})}}function DD(n){if(bh(n))return[n.width,n.height];if(n instanceof ko){let[r,e]=n.getHalfSize();return[r*2,e*2]}else if(n instanceof ir){let[r,e]=n.recursiveBBox.getHalfSize();return[r*2,e*2]}return[0,0]}function _D({objectOverride:n,objectRoot:r,newParentWidth:e,newParentHeight:t,initialParentWidth:o,initialParentHeight:i}){let[a,s]=DD(r),{width:l,height:c,position:u}=hh({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)BD({stateId:p,objectOverride:n,objectRoot:r,newParentWidth:e,newParentHeight:t,initialParentWidth:o,initialParentHeight:i});if(bh(n)||n instanceof ir)bh(n)&&(n.width=l,n.height=c,n.data={...n.data,width:l,height:c}),nS({objectOverride:n,objectRoot:r,newParentWidth:l,newParentHeight:c,initialParentWidth:a,initialParentHeight:s});else if(n instanceof ko){let p=r,d=a!==0?l/a:1,h=s!==0?c/s:1;n.path=Jv(p.path,d,h),n.data={...n.data,path:n.path}}}function BD({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}=hh({constraints:r.data,newParentWidth:t,newParentHeight:o,initialParentWidth:i,initialParentHeight:a,objectInitialWidth:No.isResizeable(l)?l.width:0,objectInitialHeight:No.isResizeable(l)?l.height:0,objectInitialPosition:l.position});Object.assign(r.states[n],{position:p}),No.isResizeable(s)&&Object.assign(r.states[n],{width:c,height:u})}}function bh(n){return n instanceof yo||n instanceof fr||n instanceof Tn||n instanceof An}var Cr=class extends pa(GD){constructor(e,t,o){super();this.data=t;this.bgColor=new Tt(1,1,1,1);this.fog=null;this.backupFog=new RD(16777215,.1,2e3);this.fogUseBGColor=!1;this.isActive=!1;this.aoColor=new LD;this.penumbraSizeArrayCache=null;this.super_Entity(e,t),this.personalCamera=new Fo(on,{...Hn.defaultData,...t.camera,name:"Personal Camera"}),this.personalCamera.objectHelper.visible=!1,this.add(this.personalCamera),this.activeCamera=this.personalCamera,this.ambientLight=new VD(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 fi((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 ds(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=Ft(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 nr&&t.recomputeBoolean()}),this.updateShadow(this.data.shadow)}forceMaterialsUpdate(){this.traverseEntity(e=>{if(e instanceof or)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&&Mv(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=Ft(e.color,t),this.backupFog.near=e.near,this.backupFog.far=e.far}updateAo(e,t){e.aoColor!==void 0&&(this.aoColor=Ft(e.aoColor,t))}updateByOp(e,t,o,i){let a=this.data.uiFrame;super.updateByOp(e,t,o,i);let s=t;Le(e.path,["fog"])?this.updateFog(s.fog,o.shared):Le(e.path,["ao"])?this.updateAo(s.ao,o.shared):Le(e.path,["ambient"])?this.updateAmbientLight(s.ambient,o.shared):Le(e.path,["shadow"])?this.updateShadow(s.shadow):e.type===0&&e.path.length===0&&(e.props.uiFrame!==void 0||a!==s.uiFrame)&&this.updateUIFrame(e.props.uiFrame,o)}updateUIFrame(e,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(Ft(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 ls&&o.visible&&e<3&&(this.penumbraSizeArrayCache[e]=o.data.penumbraSize??.5,e+=1),o instanceof cs&&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;Re.is(a)&&(a.visible||s?.object.data.visible)&&((Pn(a)||pl(a)&&this.scene.enableHelpers&&a.objectHelper.visible)&&(e.intersectObject(a,!1,t),bl(a,e,t,!0)),o(a))}};return o(this),t}updateEntity2DByOp(e,t,o,i){this.uiCanvas?.updateEntity2DByOp(e,t,o,i)}};import{PointLight as zD,Vector3 as rd,Box3 as jD,Box3Helper as iS,Color as FD}from"three";var od=class extends is(zD,ss){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 rd(-i.far+this.position.x,-i.far+this.position.y,-i.far+this.position.z),s=new rd(i.far+this.position.x,i.far+this.position.y,i.far+this.position.z),l=new jD(a,s),c=new iS(l,new FD(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 iS){let t=this.shadow.camera,o=new rd(-t.far+this.position.x,-t.far+this.position.y,-t.far+this.position.z),i=new rd(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 nd=class extends lt{get forceComputeSize(){return!0}get shape(){return this.geometry.userData.shape}updateEntityBoxSize(r,e){let t=this.geometry.getAttribute("position");t!==void 0?Xs(t,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:t.count,r,e):super.updateEntityBoxSize(r,e)}};var ps=class extends lt{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=Oa;break;case"Ellipse":i=va;break;case"Polygon":i=fu;break;case"Star":i=hu;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?Xs(o,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:o.count,e,t):super.updateEntityBoxSize(e,t)}};var id=class extends Sn{constructor(e,t,o){super(e,t,o);this.data=t}};import{Group as UD,Matrix4 as kD,Skeleton as HD}from"three";var Ho=class extends Pr(UD,Or){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 eo.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]=Yr.apply(o.data[s],e[s]));return this.overrideData=a,i}else return{...bt.defaultData,...e,...Mr(bt.defaultData,eo.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 eo.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&&eo.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(Re.is(s))e.scene.disposeAndUnregisterEntityRecursivelyIfNotReregistered(s),ad(s),a+=1;else break;this.children.splice(0,a)}i=!0}if(o){let a={};sS(e,[this.uuid],t.overrides,this,o,o,0,i,a);for(let s of this.children)if(Re.is(s)){let l=s.data;l.type==="Empty"&&l.animations&&s.traverseEntity(c=>{let u=c.dataPatched;if(c instanceof lt&&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 kD().fromArray(m)),f=new HD(d,h);c.bind(f,c.bindMatrix)}}else c.matrixAutoUpdate=!0})}}this.oldComponent=this.component}}};function ad(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)Re.is(e)&&ad(e)}}function aS(n,r,e,t){return n.component===r&&Rd(n.identity,t)?n.overrideData===e?2:1:0}function sS(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 Ho&&o.isInstanceRoot&&o.expandInstanceChildren(n);let c=0;for(let u of o.children)if(Re.is(u)){let p=[...r,...typeof u.identity=="string"?[u.identity]:u.identity],d=ta.resolve(e,p,1);if(d!=null&&!(d instanceof Qe)){if(!1)debugger;Object.setPrototypeOf(d,Qe.prototype),console.error("wrong prototype")}let h=null,f;if(!s){let m=t.children[c];if(h=Re.is(m)?m:null,h!==null){let y=aS(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=aS(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?Yr.apply(u.data,d):u.data;Ir.is(m.type)&&(m={...m,type:"Empty"}),h=_r.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,sS(n,r,e,h,u,i,a+1,s,l)}if(!s){let u=c;for(;;){let p=t.children[c];if(Re.is(p))n.pendingDeletes.add(p);else break;c+=1}t.children.splice(u,c-u)}return!0}import{Bone as WD}from"three";var sd=class extends Pr(WD,Or){constructor(r,e){super(),this.super_Entity(r,e),this.objectHelper.update(),this.matrixAutoUpdate=!0}updateState(r,e){this.updateState_Entity(r,e)}};var hi=class extends lt{constructor(e,t,o){super(e,t,o);this.onBeforeRender=e=>{this.uiCanvas.render(e)};this.uiCanvas=new ds(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=Bo(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):Le(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)}};import{Object3D as r_,Vector3 as Tr,InstancedMesh as o_,InstancedBufferAttribute as n_,PlaneGeometry as i_,Vector4 as vl,Quaternion as MS,TextureLoader as a_,Texture as IS,Euler as s_,MathUtils as Th}from"three";import{GPUComputationRenderer as l_}from"three/examples/jsm/misc/GPUComputationRenderer.js";import{Vector3 as lS,FloatType as vh,DataTexture as Sh,RGBAFormat as wh,Mesh as qD,Euler as Zce,Matrix4 as Jce}from"three";import{MeshSurfaceSampler as $D}from"three/examples/jsm/math/MeshSurfaceSampler.js";function cS(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 uS(n){let r=Math.ceil(Math.sqrt(n));return Math.max(r,1)}function dS(n,r){let e=new qD(n.geometry,n.material),t=[],o=[],i=new lS,a=new lS;e.geometry.index!==null&&(e.geometry=e.geometry.toNonIndexed());let s=new $D(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 Ph(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 Sh(t,r,r,wh,vh);return o.needsUpdate=!0,o}function pS({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 Sh(r,n,n,wh,vh);return e.needsUpdate=!0,e}function fS(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 Sh(r,n,n,wh,vh);return e.needsUpdate=!0,e}var hS=`
|
|
2633
2633
|
// uniform sampler2D uCurrentPosition; // Pass in the variable from GPGPU
|
|
2634
2634
|
// uniform sampler2D uCurrentVelocity; // Pass in the variable from GPGPU
|
|
2635
2635
|
// uniform sampler2D uCurrentEmissionRate; // Pass in the variable from GPGPU
|
|
@@ -2698,7 +2698,7 @@ void main() {
|
|
|
2698
2698
|
gl_FragColor = mix(vec4(0.0), activeColor, isActive);
|
|
2699
2699
|
|
|
2700
2700
|
}
|
|
2701
|
-
`;var
|
|
2701
|
+
`;var mS=`
|
|
2702
2702
|
|
|
2703
2703
|
vec3 mod289(vec3 x) {
|
|
2704
2704
|
return x - floor(x * (1.0 / 289.0)) * 289.0;
|
|
@@ -2900,7 +2900,7 @@ vec3 fbm_vec3(vec3 p, float frequency, float offset)
|
|
|
2900
2900
|
);
|
|
2901
2901
|
}
|
|
2902
2902
|
|
|
2903
|
-
`;var
|
|
2903
|
+
`;var yS=`
|
|
2904
2904
|
#ifdef USE_COLLIDER
|
|
2905
2905
|
float restitution = max(uBounce * 2., .01); // Energy Loss
|
|
2906
2906
|
// SPHERE COLLIDER
|
|
@@ -2968,7 +2968,7 @@ vec3 fbm_vec3(vec3 p, float frequency, float offset)
|
|
|
2968
2968
|
#endif
|
|
2969
2969
|
#endif
|
|
2970
2970
|
// END COLLIDER
|
|
2971
|
-
`;var
|
|
2971
|
+
`;var gS=`
|
|
2972
2972
|
#ifdef USE_ATTRACTOR
|
|
2973
2973
|
|
|
2974
2974
|
#ifdef USE_SPHERE_COLLIDER
|
|
@@ -3042,7 +3042,7 @@ vec3 fbm_vec3(vec3 p, float frequency, float offset)
|
|
|
3042
3042
|
velocity *= uForceDamping;
|
|
3043
3043
|
#endif
|
|
3044
3044
|
#endif
|
|
3045
|
-
`;var
|
|
3045
|
+
`;var xS=`
|
|
3046
3046
|
#ifdef USE_VORTEX
|
|
3047
3047
|
// Box dimensions
|
|
3048
3048
|
vec3 boxHalfSize = uColliderSize / 2.0;
|
|
@@ -3081,7 +3081,7 @@ vec3 fbm_vec3(vec3 p, float frequency, float offset)
|
|
|
3081
3081
|
velocity += applyForce( originDirection * uSpeed * (1. - uForceDamping) , mass * .5);
|
|
3082
3082
|
}
|
|
3083
3083
|
#endif
|
|
3084
|
-
`;var
|
|
3084
|
+
`;var bS=`
|
|
3085
3085
|
// uniform sampler2D uCurrentPosition; // Pass in the variable from GPGPU
|
|
3086
3086
|
// uniform sampler2D uCurrentVelocity; // Pass in the variable from GPGPU
|
|
3087
3087
|
// uniform sampler2D uCurrentEmissionRate; // Pass in the variable from GPGPU
|
|
@@ -3107,7 +3107,7 @@ uniform float uForceDamping;
|
|
|
3107
3107
|
uniform float uForceIntensity;
|
|
3108
3108
|
|
|
3109
3109
|
|
|
3110
|
-
`+
|
|
3110
|
+
`+mS+`
|
|
3111
3111
|
float rand(vec2 co){
|
|
3112
3112
|
return fract(sin(dot(co, vec2(12.9898, 78.233))) * 43758.5453);
|
|
3113
3113
|
}
|
|
@@ -3183,11 +3183,11 @@ void main() {
|
|
|
3183
3183
|
#endif
|
|
3184
3184
|
|
|
3185
3185
|
// COLLIDER
|
|
3186
|
-
${
|
|
3186
|
+
${yS}
|
|
3187
3187
|
// ATTRACTION
|
|
3188
|
-
${
|
|
3188
|
+
${gS}
|
|
3189
3189
|
// VORTEX
|
|
3190
|
-
${
|
|
3190
|
+
${xS}
|
|
3191
3191
|
}
|
|
3192
3192
|
// End isActive
|
|
3193
3193
|
|
|
@@ -3205,7 +3205,7 @@ void main() {
|
|
|
3205
3205
|
|
|
3206
3206
|
gl_FragColor = vec4(velocity, collisionFlag);
|
|
3207
3207
|
}
|
|
3208
|
-
`;import{ShaderMaterial as
|
|
3208
|
+
`;import{ShaderMaterial as YD}from"three";var Oh=`
|
|
3209
3209
|
|
|
3210
3210
|
// Linear Fade In
|
|
3211
3211
|
float linearFadeIn(float t) {
|
|
@@ -3238,7 +3238,7 @@ void main() {
|
|
|
3238
3238
|
float constant(float t) {
|
|
3239
3239
|
return 1.0;
|
|
3240
3240
|
}
|
|
3241
|
-
`;var
|
|
3241
|
+
`;var vS=`
|
|
3242
3242
|
|
|
3243
3243
|
float rand(vec3 co){
|
|
3244
3244
|
return fract(sin(dot(co.xy ,vec2(12.9898,78.233))) * 43758.5453);
|
|
@@ -3253,7 +3253,7 @@ vec3 applyForce(vec3 force, float mass) {
|
|
|
3253
3253
|
|
|
3254
3254
|
return acceleration;
|
|
3255
3255
|
}
|
|
3256
|
-
`;var
|
|
3256
|
+
`;var SS=`
|
|
3257
3257
|
vec3 rgb2xyz (in vec3 rgb) {
|
|
3258
3258
|
float r = rgb.r;
|
|
3259
3259
|
float g = rgb.g;
|
|
@@ -3344,7 +3344,7 @@ vec3 lab2rgb (in vec3 lab) {
|
|
|
3344
3344
|
return(rgb);
|
|
3345
3345
|
}
|
|
3346
3346
|
|
|
3347
|
-
`;var
|
|
3347
|
+
`;var wS=`
|
|
3348
3348
|
uniform sampler2D uPosition;
|
|
3349
3349
|
uniform float uSize;
|
|
3350
3350
|
uniform float uSizeEnd;
|
|
@@ -3365,9 +3365,9 @@ vec3 lab2rgb (in vec3 lab) {
|
|
|
3365
3365
|
varying vec2 vUv;
|
|
3366
3366
|
varying vec2 vRef;
|
|
3367
3367
|
|
|
3368
|
-
${
|
|
3369
|
-
${
|
|
3370
|
-
`,
|
|
3368
|
+
${vS}
|
|
3369
|
+
${Oh}
|
|
3370
|
+
`,PS=({easeSize:n="linearFadeOut"})=>`
|
|
3371
3371
|
vUv = uv;
|
|
3372
3372
|
vRef = ref;
|
|
3373
3373
|
// Normalized LifeTime 1 to 0
|
|
@@ -3419,7 +3419,7 @@ vec3 lab2rgb (in vec3 lab) {
|
|
|
3419
3419
|
mvPosition = modelViewMatrix * instanceMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );
|
|
3420
3420
|
mvPosition.xy += rotatedPosition;
|
|
3421
3421
|
gl_Position = projectionMatrix * mvPosition;
|
|
3422
|
-
`,
|
|
3422
|
+
`,OS=`
|
|
3423
3423
|
uniform vec4 uColor; // start color
|
|
3424
3424
|
uniform vec4 uColor2; // end color
|
|
3425
3425
|
uniform sampler2D uTexture; // texture
|
|
@@ -3430,10 +3430,10 @@ vec3 lab2rgb (in vec3 lab) {
|
|
|
3430
3430
|
float random(vec2 co) {
|
|
3431
3431
|
return fract(sin(dot(co.xy, vec2(12.9898, 78.233))) * 43758.5453);
|
|
3432
3432
|
}
|
|
3433
|
-
`+
|
|
3434
|
-
${
|
|
3433
|
+
`+Oh+`
|
|
3434
|
+
${SS}
|
|
3435
3435
|
|
|
3436
|
-
`,
|
|
3436
|
+
`,CS=({easeOpacity:n="linearFadeOut"})=>`
|
|
3437
3437
|
// if Particle is dead, hide it
|
|
3438
3438
|
if (v_LifeLeft <= 0.005 ) {
|
|
3439
3439
|
discard;
|
|
@@ -3454,7 +3454,7 @@ vec3 lab2rgb (in vec3 lab) {
|
|
|
3454
3454
|
|
|
3455
3455
|
gl_FragColor = vec4(finalColor, finalAlpha);
|
|
3456
3456
|
|
|
3457
|
-
`;var
|
|
3457
|
+
`;var ld=class extends YD{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=[],qe.startContext(qe.globalContext),this.lightLayer=new Xt(0,"",{...xt.defaultData("light","phong"),visible:!1},new Ro,{},t.shared),qe.endContext(qe.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 Ba;return e.needsJitter=this.needsJitter,e.addFragmentParsCode(mb),e.buildShader("vertex",this.fragment),e.buildShader("fragment",this.fragment),e.addFragmentFinalCode(yb),this.isColoringRandom&&e.define("USE_RANDOM_COLORING"),this.useSizeEnd&&e.define("USE_SIZE_END"),e.addVertexParsCode(wS),e.addFragmentParsCode(OS),e.addVertexFinalCode(PS({easeSize:this.easeSize})),e.addFragmentFinalCode(CS({easeOpacity:this.easeOpacity})),this.vertexShader=e.getCode("vertex"),this.fragmentShader=e.getCode("fragment"),this.defines=e.defines,this.uniforms={...e.uniforms,...this.uniforms},this.extensions=e.extensions,this}get nodeMaterial(){return this}get fragment(){return this.lightLayer.node}getDefines(){return this.defines}nodeMaterialDispose(){this.layers.forEach(e=>e.dispose()),super.dispose()}};import{BoxGeometry as XD,ConeGeometry as KD,MeshBasicMaterial as QD,SphereGeometry as Ch,Vector3 as ZD}from"three";import{Mesh as JD}from"three";import{TorusGeometry as e_}from"three";import{PlaneGeometry as t_}from"three";var fs=class{constructor(r,e,t,o){this.type="SphereEmitterShape";this.targetMesh=void 0;this.size=r,this.type=t,this.textureSize=uS(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}=dS(e,r*r),i=Ph(t,r),a=Ph(o,r);return{dataTexture:i,positions:t,dataTextureNormals:a}}getMesh(r,e){let t=null;switch(r){case"SphereEmitterShape":{t=new Ch(e*.5,32,32);break}case"TorusEmitterShape":{t=new e_(e*.5,.3,15,40);break}case"ConeEmitterShape":{t=new KD(e,e,15);break}case"BoxEmitterShape":{t=new XD(e,e,e);break}case"PlaneEmitterShape":{t=new t_(e,e),t.rotateX(-Math.PI/2);break}case"MeshEmitterShape":{t=new Ch(e,32,32);break}default:{t=new Ch(e,32,32);break}}return new JD(t,new QD({color:16711680}))}applyToShader(r,e){this.size=new ZD().fromArray(e.size),r.uEmitterSize.value=this.size}dispose(){this.positionsTexture.dispose(),this.directionsTexture.dispose(),this.positionsAttribute=new Float32Array}};function Mn(n){let r={...n},e=Ki.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=`
|
|
3458
3458
|
// uniform sampler2D uCurrentPosition; // Pass in the variable from GPGPU
|
|
3459
3459
|
// uniform sampler2D uCurrentVelocity; // Pass in the variable from GPGPU
|
|
3460
3460
|
// uniform sampler2D uCurrentEmissionRate; // Pass in the variable from GPGPU
|
|
@@ -3501,8 +3501,8 @@ void main() {
|
|
|
3501
3501
|
|
|
3502
3502
|
|
|
3503
3503
|
}
|
|
3504
|
-
`;var Oh=10,sd=class extends RE{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 jE;this.currentWorldPosition=new Tr;this.systemQuaternion=new wS;this.worldGravity=new Tr(0,0,0);this.directionAxis=new Tr(0,0,0);this.colliderV3=new Tr(0,0,0);this.colliderQuaternion=new wS(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 ad(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 Tr(0,0,0)},uEmissionData:{value:new Tr(0,0,0)},uTexture:{value:this.defaultTexture},uWorldOffset:{value:new Tr(0,0,0)},uWorldQuaternion:{value:new vl(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 PS(i.img);a.needsUpdate=!0,e.uTexture.value=a;return}if(typeof o!="string"){let i=new Image;i.onload=()=>{let l=new PS(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=oS(t);!this.emitterShape?.positionsAttribute||e.geometry.setAttribute("ref",new GE(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(An({...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/Oh),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(An(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"]))/Oh),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={...An(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])*Ph.DEG2RAD,Number(e[1])*Ph.DEG2RAD,Number(e[2])*Ph.DEG2RAD],o=new FE(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 UE(this.emitterShape.textureSize,this.emitterShape.textureSize,this.renderer),i=this.updateSimulationDefinition(e),a=o.addVariable("uCurrentPosition",i+lS,this.emitterShape.positionsTexture),s=o.addVariable("uCurrentVelocity",i+fS,this.emitterShape.directionsTexture),l=o.addVariable("uCurrentEmissionRate",vS,sS(this.emitterShape.textureSize));o.setVariableDependencies(a,[a,s,l]),o.setVariableDependencies(s,[a,s,l]),o.setVariableDependencies(l,[a,s,l]);let c=aS({size:this.emitterShape.textureSize}),u={uOriginalPosition:{value:this.emitterShape.positionsTexture},uWorldOffset:{value:new Tr(0,0,0)},uWorldQuaternion:{value:new vl(0,0,0,1)},uTime:{value:0},uFPSRatio:{value:1},uMaxLifeTime:{value:e.life},uEmitterSize:{value:new Tr(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 vl(0,0,0,1)},uColliderPos:{value:new Tr(0,0,0)},uColliderSize:{value:new Tr(0,0,0)},uForceIntensity:{value:d?d.forceIntensity:0},uForceDamping:{value:d?d.forceDambing:0},uColliderQuaternion:{value:new vl(0,0,0,1)},uColliderQuaternionInvert:{value:new vl(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"]))/Oh}};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={...An(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}
|
|
3505
|
-
`);return t}createShape(e,t){this.emitterShape&&this.emitterShape.dispose();let o=new Tr(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 VE(new zE(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(An(this.system.data))}startEmitting(e){this.isEmitting=!0,this.hasBeenReset=!1,this.lastEmitTime=e}stopEmitting(){this.isEmitting=!1}};import{BufferGeometry as kE,Float32BufferAttribute as HE,MeshBasicMaterial as WE}from"three";var ld=class extends Ot{constructor(e,t,o){super(e,t);this.type="ParticleSystem";this.geometry=new kE;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,...An(t)},this.geometry.setAttribute("position",new HE([],3)),this.material=new WE({colorWrite:!1}),this.frustumCulled=!1}init(e){this.renderer=e,this.emitter=new sd(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),Le(e.path,["renderMaterial"])&&this.updateParticleState({renderMaterial:{...this.data.renderMaterial,...nt.drop(e,1).props}}),Le(e.path,["shape"])&&this.updateParticleState({shape:{...this.data.shape,...nt.drop(e,1).props}})}updateState(e,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 qE(){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 Ch=qE();function $E(n,r,e){Ch!==void 0&&(r?.geometry?.subdivisions??0)>Ch&&(console.log("reducing subdivisions",r.name,r.geometry.subdivisions),r.geometry.subdivisions=Ch);let t;return r.geometry.type==="TextGeometry"?new vn(n,r,e):r.geometry.type==="InputGeometry"?new od(n,r,e):(r.geometry.type==="SubdivGeometry"?t=new si(n,r,e):r.geometry.type==="PathGeometry"?t=new ps(n,r,e):r.geometry.type==="VectorGeometry"?t=new rd(n,r,e):r.geometry.type==="BooleanGeometry"?t=new or(n,r,e):r.geometry.type==="UIGeometry"?t=new fi(n,r,e):t=new lt(n,r,e),t)}function cd(n,r,e){return console.assert(r.type!==void 0),r.type==="Mesh"?$E(n,r,e):r.type==="Empty"?new Pn(n,r):r.type==="Particle"?new ld(n,r,e):r.type==="ParticleCollider"?new Wu(n,r,e):r.type==="Splat"?new Pn(n,r):r.type==="Bone"?new id(n,r):r.type==="Page"?new Cr(n,r,e):r.type==="PointLight"?new td(n,r,e):r.type==="SpotLight"?new cs(n,r,e):r.type==="DirectionalLight"?new ls(n,r,e):r.type==="Component"||r.type==="Instance"?new Ho(n,r,e):Ir.is(r.type)?new Fo(n,r):(console.error(r),new Pn(n,r))}_r.createEntity=cd;function YE(n,r,e){let t=cd(n.identity,r,e),o=n.children,i=n.attachedPaths,a=n.parent,s=n.component,l=n.instances,c=n.overrideData,u=n.uuid,p=n.stateSelection;n.dispose();for(let d of Object.keys(n))delete n[d];Object.setPrototypeOf(n,Object.getPrototypeOf(t));for(let d of Object.keys(t))n[d]=t[d];n.children=[...n.children,...o],n.attachedPaths=i,n.parent=a,n.component=s,n.instances=l,n.uuid=u,n.overrideData=c,n.updateState(n.data,e),p&&n.changeSelectedState(p,e),n.resetBBoxNeedsUpdate()}_r.changeEntityProptotype=YE;_r.Cloner=rs;function OS(n,r,e,t){n.updateByOp(r,e,t,!1)}import{Matrix4 as QE,Ray as ZE,Raycaster as JE}from"three";function CS(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,Ja(n),Za(n)),t.length===0&&o.length===0&&n.layers.set(0),n instanceof rr&&n.needsAO&&n.layers.enable(5),e}function TS(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 AS(n){let r=!1;return n.traverseEntity(e=>{if(e instanceof rr)if(Array.isArray(e.material))for(let t=0;t<e.material.length;t++)CS(e,e.material[t])&&(r=!0);else CS(e,e.material)&&(r=!0)}),r}function MS(n){let r=!1;return n.traverseEntity(e=>{if(e instanceof rr)if(Array.isArray(e.material))for(let t=0;t<e.material.length;t++)TS(e,e.material[t])&&(r=!0);else TS(e,e.material)&&(r=!0)}),r}var e_=new JE,t_=new QE,r_=new ZE;function bl(n,r,e,t=!1){let o=n.cloner;if(o)for(let i of o.children){let a=t_.copy(i.matrixWorld).invert(),s=r_.copy(r.ray).applyMatrix4(a),l=n.matrixWorld;s.applyMatrix4(l);let c=e_;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 ud=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 IS="AGFzbQEAAAAADwhkeWxpbmsuMAEEAAAAAAETA2AAAGAIf39/f39/f38AYAABfwISAQNlbnYGbWVtb3J5AgMAgIAEAwQDAAECBzkDEV9fd2FzbV9jYWxsX2N0b3JzAAALc29ydEluZGV4ZXMAARNlbXNjcmlwdGVuX3Rsc19pbml0AAIK3gMDAwABC9IDAwF/BnwBfgJAIAdFDQAgAysDUCEMIAMrAzAhDSADKwMQIQ5BACEDRP///////+9/IQtEAAAAAAAAEAAhCgNAIAIgA0ECdGoCfyAOIAEgA0EMbGoiCCoCALuiIA0gCCoCBLuioCAMIAgqAgi7oqBEAAAAAAAAsECiIgmZRAAAAAAAAOBBYwRAIAmqDAELQYCAgIB4CzYCACAJIAsgCSALYxshCyAJIAogCSAKZBshCiADQQFqIgMgB0cNAAsgB0UNACAGuCAKIAuhoyEJQQAhAwNAAn8gCSACIANBAnRqIgEoAgC3IAuhoiIKmUQAAAAAAADgQWMEQCAKqgwBC0GAgICAeAshCCABIAg2AgAgBCAIQQJ0aiIBIAEoAgBBAWo2AgAgA0EBaiIDIAdHDQALCyAGQQJPBEAgBCgCACEIQQEhAwNAIAQgA0ECdGoiASABKAIAIAhqIgg2AgAgA0EBaiIDIAZHDQALCyAHQQFrIgGtIQ8DQCAEIAIgD6dBAnQiA2ooAgBBAnRqIgcgBygCAEEBayIHNgIAIAUgASAHa0ECdGogACADaigCADYCACAPUCEDIA9CAX0hDyADRQ0ACyAGBEAgBEEAIAZBAnT8CwALCwQAQQAL";var yo=class{};Rn(yo,"DepthMapRange",1<<16),Rn(yo,"MemoryPageSize",65536),Rn(yo,"BytesPerFloat",4),Rn(yo,"BytesPerInt",4);function o_(n){let r,e,t,o,i,a,s,l,c,u,p,d,h,f,m,y;function g(I){let D=new Float64Array(u,a,16);for(let B=0;B<16;B++)D[B]=I[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(I,D,_){let B=new Float32Array(u,i,e*3);t=0;let V=new Uint32Array(u,o,e);for(let U=0;U<_.length-1;U++){let R=D[U],W=I[U].elements,j=R.filter(H=>H.enabled&&H.mode==="Include").map(H=>H.type==="Box"?T(H):E(H)),F=R.filter(H=>H.enabled&&H.mode==="Exclude").map(H=>H.type==="Box"?T(H):E(H));for(let H=_[U];H<_[U+1];H++){let q=h[H*3],re=h[H*3+1],ee=h[H*3+2];if((j.length===0||O(q,re,ee,j))&&(F.length===0||!O(q,re,ee,F))){let X=1/(W[3]*q+W[7]*re+W[11]*ee+W[15]);B[t*3]=(W[0]*q+W[4]*re+W[8]*ee+W[12])*X,B[t*3+1]=(W[1]*q+W[5]*re+W[9]*ee+W[13])*X,B[t*3+2]=(W[2]*q+W[6]*re+W[10]*ee+W[14])*X,V[t]=H,t++}}}}function P(I,D){let _=[],B=D.filter(R=>R.enabled&&R.mode==="Include").map(R=>R.type==="Box"?T(R):E(R)),V=D.filter(R=>R.enabled&&R.mode==="Exclude").map(R=>R.type==="Box"?T(R):E(R)),U=I.length;for(let R=0;R<U;R+=3){let W=I[R],j=I[R+1],F=I[R+2];(B.length===0||O(W,j,F,B))&&(V.length===0||!O(W,j,F,V))||_.push(R/3)}return _}function O(I,D,_,B,V){return B[V==="Intersect"?"every":"some"](U=>{let R=S(I,D,_,U.invRotationMatrix,U.cropCenter);return Array.isArray(U)?x(R.x,R.y,R.z,U):N(R.x,R.y,R.z,U)})}function S(I,D,_,B,V){let U=I-V[0],R=D-V[1],W=_-V[2],j=1/(B[3]*U+B[7]*R+B[11]*W+B[15]);return{x:(B[0]*U+B[4]*R+B[8]*W+B[12])*j+V[0],y:(B[1]*U+B[5]*R+B[9]*W+B[13])*j+V[1],z:(B[2]*U+B[6]*R+B[10]*W+B[14])*j+V[2]}}function T(I){let D=I.cropSize[0]/2,_=I.cropSize[1]/2,B=I.cropSize[2]/2,V=[I.cropCenter[0]-D,I.cropCenter[1]-_,I.cropCenter[2]-B,I.cropCenter[0]+D,I.cropCenter[1]+_,I.cropCenter[2]+B],U=A(I.cropRotation);return Object.assign(V,{invRotationMatrix:U,cropCenter:I.cropCenter})}function A(I){let D=[],_=I[0]*Math.PI/180,B=I[1]*Math.PI/180,V=I[2]*Math.PI/180,U=Math.cos(_),R=Math.sin(_),W=Math.cos(B),j=Math.sin(B),F=Math.cos(V),H=Math.sin(V),q=U*F,re=U*H,ee=R*F,X=R*H;return D[0]=W*F,D[1]=-W*H,D[2]=j,D[4]=re+ee*j,D[5]=q-X*j,D[6]=-R*W,D[8]=X-q*j,D[9]=ee+re*j,D[10]=U*W,D[12]=0,D[13]=0,D[14]=0,D[3]=0,D[7]=0,D[11]=0,D[15]=1,D}function x(I,D,_,B){return I>=B[0]&&I<=B[3]&&D>=B[1]&&D<=B[4]&&_>=B[2]&&_<=B[5]}function E(I){let D=2/I.cropSize[0],_=2/I.cropSize[1],B=2/I.cropSize[2],V=A(I.cropRotation);return{invRadiusX:D,invRadiusY:_,invRadiusZ:B,cropCenter:I.cropCenter,invRotationMatrix:V}}function N(I,D,_,B){let V=(I-B.cropCenter[0])*B.invRadiusX,U=(D-B.cropCenter[1])*B.invRadiusY,R=(_-B.cropCenter[2])*B.invRadiusZ;return V*V+U*U+R*R<=1}n.onmessage=I=>{if(I.data.getCroppedIndexes){let D=new Uint32Array(P(new Float32Array(I.data.positions),I.data.crops)).buffer;n.postMessage({outOfBoundsIndexes:D},[D])}else if(I.data.positions)p=I.data.positions,h=new Float32Array(p),m=I.data.meshMatrixWorlds,y=I.data.cropsArray,f=I.data.meshIndexIntervals,v(m,y,f),n.postMessage({sortSetupComplete:!0});else if(I.data.sort||I.data.newMatrixWorlds||I.data.newCropsArray)(I.data.newMatrixWorlds||I.data.newCropsArray)&&(y=I.data.newCropsArray||y,m=I.data.newMatrixWorlds||m,v(m,y,f)),g(I.data.sort.view,I.data.sort.cameraPosition);else if(I.data.init){d=I.data.init.Constants,e=I.data.init.splatCount;let D=d.BytesPerInt,_=d.BytesPerFloat*3,B=new Uint8Array(I.data.init.sorterWasmBytes),V=D+_,U=e*V,R=e*d.BytesPerInt*2+d.DepthMapRange*d.BytesPerInt*2,W=d.MemoryPageSize*32,j=U+R+W,F=Math.floor(j/d.MemoryPageSize)+1,H={module:{},env:{memory:new WebAssembly.Memory({initial:F*2,maximum:F*3,shared:!0})}};WebAssembly.compile(B).then(q=>WebAssembly.instantiate(q,H)).then(q=>{r=q,o=0,i=e*D,a=i+e*_,c=a+16*d.BytesPerFloat*2,s=c+e*d.BytesPerInt,l=s+d.DepthMapRange*d.BytesPerInt,u=H.env.memory.buffer,n.postMessage({sortSetupPhase1Complete:!0})})}}}function NS(n){let r=new Worker(URL.createObjectURL(new Blob(["(",o_.toString(),")(self)"],{type:"application/javascript"}))),e=atob(IS),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:yo.BytesPerFloat,BytesPerInt:yo.BytesPerInt,DepthMapRange:yo.DepthMapRange,MemoryPageSize:yo.MemoryPageSize}}}),r}import{Matrix4 as RS,Quaternion as VS,Vector2 as b_,Vector3 as hs}from"three";import{BufferAttribute as n_,BufferGeometry as i_,Color as a_,DataTexture as pd,DataUtils as s_,DoubleSide as l_,DynamicDrawUsage as c_,FloatType as ES,HalfFloatType as u_,InstancedBufferAttribute as d_,InstancedBufferGeometry as p_,Mesh as f_,NormalBlending as h_,RGBAFormat as m_,RGBAIntegerFormat as y_,RGFormat as _S,ShaderMaterial as g_,UnsignedIntType as x_,Vector2 as Mn}from"three";var dd=function(){let n=new Float32Array(1),r=new Int32Array(n.buffer);return function(e){return n[0]=e,r[0]}}(),DS=function(n,r,e,t){return n+(r<<8)+(e<<16)+(t<<24)};var fd=new Mn;function hd(n){let r=!1;return n.scene.objects.traverse((e,t)=>{if(t.visible===!1)return!0;t.type==="Splat"&&(r=!0)}),r}var In=class extends f_{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=In.buildGeomtery(t),c=In.buildMaterial(a);return new In(e,t,l,c,o,i,a,s)}static buildMaterial(e){let t=`
|
|
3504
|
+
`;var Ah=10,cd=class extends r_{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 a_;this.currentWorldPosition=new Tr;this.systemQuaternion=new MS;this.worldGravity=new Tr(0,0,0);this.directionAxis=new Tr(0,0,0);this.colliderV3=new Tr(0,0,0);this.colliderQuaternion=new MS(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 ld(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 Tr(0,0,0)},uEmissionData:{value:new Tr(0,0,0)},uTexture:{value:this.defaultTexture},uWorldOffset:{value:new Tr(0,0,0)},uWorldQuaternion:{value:new vl(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 IS(i.img);a.needsUpdate=!0,e.uTexture.value=a;return}if(typeof o!="string"){let i=new Image;i.onload=()=>{let l=new IS(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=cS(t);!this.emitterShape?.positionsAttribute||e.geometry.setAttribute("ref",new n_(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(Mn({...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/Ah),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(Mn(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"]))/Ah),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={...Mn(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])*Th.DEG2RAD,Number(e[1])*Th.DEG2RAD,Number(e[2])*Th.DEG2RAD],o=new s_(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 l_(this.emitterShape.textureSize,this.emitterShape.textureSize,this.renderer),i=this.updateSimulationDefinition(e),a=o.addVariable("uCurrentPosition",i+hS,this.emitterShape.positionsTexture),s=o.addVariable("uCurrentVelocity",i+bS,this.emitterShape.directionsTexture),l=o.addVariable("uCurrentEmissionRate",TS,fS(this.emitterShape.textureSize));o.setVariableDependencies(a,[a,s,l]),o.setVariableDependencies(s,[a,s,l]),o.setVariableDependencies(l,[a,s,l]);let c=pS({size:this.emitterShape.textureSize}),u={uOriginalPosition:{value:this.emitterShape.positionsTexture},uWorldOffset:{value:new Tr(0,0,0)},uWorldQuaternion:{value:new vl(0,0,0,1)},uTime:{value:0},uFPSRatio:{value:1},uMaxLifeTime:{value:e.life},uEmitterSize:{value:new Tr(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 vl(0,0,0,1)},uColliderPos:{value:new Tr(0,0,0)},uColliderSize:{value:new Tr(0,0,0)},uForceIntensity:{value:d?d.forceIntensity:0},uForceDamping:{value:d?d.forceDambing:0},uColliderQuaternion:{value:new vl(0,0,0,1)},uColliderQuaternionInvert:{value:new vl(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"]))/Ah}};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={...Mn(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}
|
|
3505
|
+
`);return t}createShape(e,t){this.emitterShape&&this.emitterShape.dispose();let o=new Tr(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 o_(new i_(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(Mn(this.system.data))}startEmitting(e){this.isEmitting=!0,this.hasBeenReset=!1,this.lastEmitTime=e}stopEmitting(){this.isEmitting=!1}};import{BufferGeometry as c_,Float32BufferAttribute as u_,MeshBasicMaterial as d_}from"three";var ud=class extends Ot{constructor(e,t,o){super(e,t);this.type="ParticleSystem";this.geometry=new c_;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,...Mn(t)},this.geometry.setAttribute("position",new u_([],3)),this.material=new d_({colorWrite:!1}),this.frustumCulled=!1}init(e){this.renderer=e,this.emitter=new cd(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),Le(e.path,["renderMaterial"])&&this.updateParticleState({renderMaterial:{...this.data.renderMaterial,...nt.drop(e,1).props}}),Le(e.path,["shape"])&&this.updateParticleState({shape:{...this.data.shape,...nt.drop(e,1).props}})}updateState(e,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 p_(){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 Mh=p_();function f_(n,r,e){Mh!==void 0&&(r?.geometry?.subdivisions??0)>Mh&&(console.log("reducing subdivisions",r.name,r.geometry.subdivisions),r.geometry.subdivisions=Mh);let t;return r.geometry.type==="TextGeometry"?new Sn(n,r,e):r.geometry.type==="InputGeometry"?new id(n,r,e):(r.geometry.type==="SubdivGeometry"?t=new li(n,r,e):r.geometry.type==="PathGeometry"?t=new ps(n,r,e):r.geometry.type==="VectorGeometry"?t=new nd(n,r,e):r.geometry.type==="BooleanGeometry"?t=new nr(n,r,e):r.geometry.type==="UIGeometry"?t=new hi(n,r,e):t=new lt(n,r,e),t)}function dd(n,r,e){return console.assert(r.type!==void 0),r.type==="Mesh"?f_(n,r,e):r.type==="Empty"?new On(n,r):r.type==="Particle"?new ud(n,r,e):r.type==="ParticleCollider"?new $u(n,r,e):r.type==="Splat"?new On(n,r):r.type==="Bone"?new sd(n,r):r.type==="Page"?new Cr(n,r,e):r.type==="PointLight"?new od(n,r,e):r.type==="SpotLight"?new cs(n,r,e):r.type==="DirectionalLight"?new ls(n,r,e):r.type==="Component"||r.type==="Instance"?new Ho(n,r,e):Ir.is(r.type)?new Fo(n,r):(console.error(r),new On(n,r))}_r.createEntity=dd;function h_(n,r,e){let t=dd(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()}_r.changeEntityProptotype=h_;_r.Cloner=rs;function NS(n,r,e,t){n.updateByOp(r,e,t,!1)}import{Matrix4 as g_,Ray as x_,Raycaster as b_}from"three";function ES(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,Ja(n),Za(n)),t.length===0&&o.length===0&&n.layers.set(0),n instanceof or&&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 or)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}function BS(n){let r=!1;return n.traverseEntity(e=>{if(e instanceof or)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 v_=new b_,S_=new g_,w_=new x_;function bl(n,r,e,t=!1){let o=n.cloner;if(o)for(let i of o.children){let a=S_.copy(i.matrixWorld).invert(),s=w_.copy(r.ray).applyMatrix4(a),l=n.matrixWorld;s.applyMatrix4(l);let c=v_;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 pd=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 LS="AGFzbQEAAAAADwhkeWxpbmsuMAEEAAAAAAETA2AAAGAIf39/f39/f38AYAABfwISAQNlbnYGbWVtb3J5AgMAgIAEAwQDAAECBzkDEV9fd2FzbV9jYWxsX2N0b3JzAAALc29ydEluZGV4ZXMAARNlbXNjcmlwdGVuX3Rsc19pbml0AAIK3gMDAwABC9IDAwF/BnwBfgJAIAdFDQAgAysDUCEMIAMrAzAhDSADKwMQIQ5BACEDRP///////+9/IQtEAAAAAAAAEAAhCgNAIAIgA0ECdGoCfyAOIAEgA0EMbGoiCCoCALuiIA0gCCoCBLuioCAMIAgqAgi7oqBEAAAAAAAAsECiIgmZRAAAAAAAAOBBYwRAIAmqDAELQYCAgIB4CzYCACAJIAsgCSALYxshCyAJIAogCSAKZBshCiADQQFqIgMgB0cNAAsgB0UNACAGuCAKIAuhoyEJQQAhAwNAAn8gCSACIANBAnRqIgEoAgC3IAuhoiIKmUQAAAAAAADgQWMEQCAKqgwBC0GAgICAeAshCCABIAg2AgAgBCAIQQJ0aiIBIAEoAgBBAWo2AgAgA0EBaiIDIAdHDQALCyAGQQJPBEAgBCgCACEIQQEhAwNAIAQgA0ECdGoiASABKAIAIAhqIgg2AgAgA0EBaiIDIAZHDQALCyAHQQFrIgGtIQ8DQCAEIAIgD6dBAnQiA2ooAgBBAnRqIgcgBygCAEEBayIHNgIAIAUgASAHa0ECdGogACADaigCADYCACAPUCEDIA9CAX0hDyADRQ0ACyAGBEAgBEEAIAZBAnT8CwALCwQAQQAL";var go=class{};Vn(go,"DepthMapRange",1<<16),Vn(go,"MemoryPageSize",65536),Vn(go,"BytesPerFloat",4),Vn(go,"BytesPerInt",4);function P_(n){let r,e,t,o,i,a,s,l,c,u,p,d,h,f,m,y;function g(I){let D=new Float64Array(u,a,16);for(let B=0;B<16;B++)D[B]=I[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(I,D,_){let B=new Float32Array(u,i,e*3);t=0;let V=new Uint32Array(u,o,e);for(let U=0;U<_.length-1;U++){let R=D[U],W=I[U].elements,j=R.filter(H=>H.enabled&&H.mode==="Include").map(H=>H.type==="Box"?C(H):E(H)),F=R.filter(H=>H.enabled&&H.mode==="Exclude").map(H=>H.type==="Box"?C(H):E(H));for(let H=_[U];H<_[U+1];H++){let q=h[H*3],re=h[H*3+1],ee=h[H*3+2];if((j.length===0||O(q,re,ee,j))&&(F.length===0||!O(q,re,ee,F))){let X=1/(W[3]*q+W[7]*re+W[11]*ee+W[15]);B[t*3]=(W[0]*q+W[4]*re+W[8]*ee+W[12])*X,B[t*3+1]=(W[1]*q+W[5]*re+W[9]*ee+W[13])*X,B[t*3+2]=(W[2]*q+W[6]*re+W[10]*ee+W[14])*X,V[t]=H,t++}}}}function P(I,D){let _=[],B=D.filter(R=>R.enabled&&R.mode==="Include").map(R=>R.type==="Box"?C(R):E(R)),V=D.filter(R=>R.enabled&&R.mode==="Exclude").map(R=>R.type==="Box"?C(R):E(R)),U=I.length;for(let R=0;R<U;R+=3){let W=I[R],j=I[R+1],F=I[R+2];(B.length===0||O(W,j,F,B))&&(V.length===0||!O(W,j,F,V))||_.push(R/3)}return _}function O(I,D,_,B,V){return B[V==="Intersect"?"every":"some"](U=>{let R=S(I,D,_,U.invRotationMatrix,U.cropCenter);return Array.isArray(U)?x(R.x,R.y,R.z,U):N(R.x,R.y,R.z,U)})}function S(I,D,_,B,V){let U=I-V[0],R=D-V[1],W=_-V[2],j=1/(B[3]*U+B[7]*R+B[11]*W+B[15]);return{x:(B[0]*U+B[4]*R+B[8]*W+B[12])*j+V[0],y:(B[1]*U+B[5]*R+B[9]*W+B[13])*j+V[1],z:(B[2]*U+B[6]*R+B[10]*W+B[14])*j+V[2]}}function C(I){let D=I.cropSize[0]/2,_=I.cropSize[1]/2,B=I.cropSize[2]/2,V=[I.cropCenter[0]-D,I.cropCenter[1]-_,I.cropCenter[2]-B,I.cropCenter[0]+D,I.cropCenter[1]+_,I.cropCenter[2]+B],U=A(I.cropRotation);return Object.assign(V,{invRotationMatrix:U,cropCenter:I.cropCenter})}function A(I){let D=[],_=I[0]*Math.PI/180,B=I[1]*Math.PI/180,V=I[2]*Math.PI/180,U=Math.cos(_),R=Math.sin(_),W=Math.cos(B),j=Math.sin(B),F=Math.cos(V),H=Math.sin(V),q=U*F,re=U*H,ee=R*F,X=R*H;return D[0]=W*F,D[1]=-W*H,D[2]=j,D[4]=re+ee*j,D[5]=q-X*j,D[6]=-R*W,D[8]=X-q*j,D[9]=ee+re*j,D[10]=U*W,D[12]=0,D[13]=0,D[14]=0,D[3]=0,D[7]=0,D[11]=0,D[15]=1,D}function x(I,D,_,B){return I>=B[0]&&I<=B[3]&&D>=B[1]&&D<=B[4]&&_>=B[2]&&_<=B[5]}function E(I){let D=2/I.cropSize[0],_=2/I.cropSize[1],B=2/I.cropSize[2],V=A(I.cropRotation);return{invRadiusX:D,invRadiusY:_,invRadiusZ:B,cropCenter:I.cropCenter,invRotationMatrix:V}}function N(I,D,_,B){let V=(I-B.cropCenter[0])*B.invRadiusX,U=(D-B.cropCenter[1])*B.invRadiusY,R=(_-B.cropCenter[2])*B.invRadiusZ;return V*V+U*U+R*R<=1}n.onmessage=I=>{if(I.data.getCroppedIndexes){let D=new Uint32Array(P(new Float32Array(I.data.positions),I.data.crops)).buffer;n.postMessage({outOfBoundsIndexes:D},[D])}else if(I.data.positions)p=I.data.positions,h=new Float32Array(p),m=I.data.meshMatrixWorlds,y=I.data.cropsArray,f=I.data.meshIndexIntervals,v(m,y,f),n.postMessage({sortSetupComplete:!0});else if(I.data.sort||I.data.newMatrixWorlds||I.data.newCropsArray)(I.data.newMatrixWorlds||I.data.newCropsArray)&&(y=I.data.newCropsArray||y,m=I.data.newMatrixWorlds||m,v(m,y,f)),g(I.data.sort.view,I.data.sort.cameraPosition);else if(I.data.init){d=I.data.init.Constants,e=I.data.init.splatCount;let D=d.BytesPerInt,_=d.BytesPerFloat*3,B=new Uint8Array(I.data.init.sorterWasmBytes),V=D+_,U=e*V,R=e*d.BytesPerInt*2+d.DepthMapRange*d.BytesPerInt*2,W=d.MemoryPageSize*32,j=U+R+W,F=Math.floor(j/d.MemoryPageSize)+1,H={module:{},env:{memory:new WebAssembly.Memory({initial:F*2,maximum:F*3,shared:!0})}};WebAssembly.compile(B).then(q=>WebAssembly.instantiate(q,H)).then(q=>{r=q,o=0,i=e*D,a=i+e*_,c=a+16*d.BytesPerFloat*2,s=c+e*d.BytesPerInt,l=s+d.DepthMapRange*d.BytesPerInt,u=H.env.memory.buffer,n.postMessage({sortSetupPhase1Complete:!0})})}}}function RS(n){let r=new Worker(URL.createObjectURL(new Blob(["(",P_.toString(),")(self)"],{type:"application/javascript"}))),e=atob(LS),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:go.BytesPerFloat,BytesPerInt:go.BytesPerInt,DepthMapRange:go.DepthMapRange,MemoryPageSize:go.MemoryPageSize}}}),r}import{Matrix4 as US,Quaternion as kS,Vector2 as z_,Vector3 as hs}from"three";import{BufferAttribute as O_,BufferGeometry as C_,Color as T_,DataTexture as hd,DataUtils as A_,DoubleSide as M_,DynamicDrawUsage as I_,FloatType as GS,HalfFloatType as N_,InstancedBufferAttribute as E_,InstancedBufferGeometry as D_,Mesh as __,NormalBlending as B_,RGBAFormat as L_,RGBAIntegerFormat as R_,RGFormat as zS,ShaderMaterial as V_,UnsignedIntType as G_,Vector2 as In}from"three";var fd=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 md=new In;function yd(n){let r=!1;return n.scene.objects.traverse((e,t)=>{if(t.visible===!1)return!0;t.type==="Splat"&&(r=!0)}),r}var Nn=class extends __{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=Nn.buildGeomtery(t),c=Nn.buildMaterial(a);return new Nn(e,t,l,c,o,i,a,s)}static buildMaterial(e){let t=`
|
|
3506
3506
|
precision highp float;
|
|
3507
3507
|
#include <common>
|
|
3508
3508
|
|
|
@@ -3656,4 +3656,4 @@ void main() {
|
|
|
3656
3656
|
A = exp(A) * vColor.a;
|
|
3657
3657
|
gl_FragColor = vec4(color.rgb, A);
|
|
3658
3658
|
gVelocity = vec4(0.0); // so it is ignored by TAA
|
|
3659
|
-
}`,i={covariancesTexture:{type:"t",value:null},centersColorsTexture:{type:"t",value:null},meshIndexIntervals:{value:e},meshMatrixWorldsTexture:{type:"t",value:null},focal:{type:"v2",value:new Mn},viewport:{type:"v2",value:new Mn},basisViewport:{type:"v2",value:new Mn},debugColor:{type:"v3",value:new a_},covariancesTextureSize:{type:"v2",value:new Mn(1024,1024)},centersColorsTextureSize:{type:"v2",value:new Mn(1024,1024)},orthoZoom:{type:"f",value:-1}};return new g_({uniforms:i,vertexShader:t,fragmentShader:o,transparent:!0,alphaTest:1,blending:h_,depthTest:!0,depthWrite:!1,side:l_})}static buildGeomtery(e){let t=new i_;t.setIndex([0,1,2,0,2,3]);let o=new Float32Array(4*3),i=new n_(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 p_().copy(t),s=new Uint32Array(e),l=new d_(s,1,!1);return l.setUsage(c_),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 Mn(4096,1024);for(;i.x*i.y*2<o*6;)i.y*=2;let a=new Mn(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]=s_.toHalfFloat(this.covariances[f]);s=new pd(l,i.x,i.y,_S,u_)}else l=new Float32Array(i.x*i.y*2),l.set(this.covariances),s=new pd(l,i.x,i.y,_S,ES);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]=DS(this.colors[m],this.colors[m+1],this.colors[m+2],this.colors[m+3]),c[g+1]=dd(this.centers[y]),c[g+2]=dd(this.centers[y+1]),c[g+3]=dd(this.centers[y+2])}let u=new pd(c,a.x,a.y,y_,x_);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 pd(d,p,1,m_,ES);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&&(fd.set(e.x*this.devicePixelRatio,e.y*this.devicePixelRatio),this.material.uniforms.viewport.value.copy(fd),this.material.uniforms.basisViewport.value.set(2/fd.x,2/fd.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 LS,Th=new Promise(n=>{LS=n}),BS=!1;var md;function Ah(){if(BS)return;if(md)return md;async function n(){let e=await import("./gaussian-splat-compression.js");LS(e),BS=!0}return md=n(),md}var GS;Th.then(n=>GS=n);var Sl=class{constructor(r={}){Rn(this,"updateView",function(){let r=new RS,e=[],t=new hs(0,0,-1),o=new hs(0,0,-1),i=new hs,a=new hs;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 RS().makePerspective(-1,1,-1,1,.1,1e3)}updateSplatMeshUniforms(r,e){let t=new b_;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 hs().fromArray(r.position)),r.orientation&&(r.orientation=new VS().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 GS.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 hs,o=new VS,i=!1,a=1,s,l){this.splatMesh=In.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=NS(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 T_=new O_;T_.wireframe=!0;var zS=new S_,yd=class extends v_{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 ud;this.invisibleObjects=new Pn("jflkdsafjasdifjaslk",{...Nc.defaultData,visible:!1,name:"buildin invisible"});this.needsRecomputeInstances=!1;this.init(e,t),this.matrixAutoUpdate=!1,this.errorPage=new Cr("fdasfa",{...Oo.defaultData,name:""},{shared:t,scene:this})}markGeometryCacheDirty(){this.geometryCacheChanged=!0}markNeedsUpdateRendererDirty(){this.needsTransmissionDirty=!0,this.needsNormalDirty=!0}needsTransmission(){return this.needsTransmissionDirty&&(this._needsTransmission=MS(this),this.needsTransmissionDirty=!1),this._needsTransmission}needsNormal(){return this.needsNormalDirty&&(this._needsNormal=AS(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 Cr&&(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)=>Nl(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===rn)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 Cr&&t.uiScene){let o=t.uiScene.find(e);if(o)return o}}findScene2DfromObject2D(e){for(let t of this.children)if(t instanceof Cr&&t.uiScene&&t.uiScene.find(e))return t.uiScene}find2DInUIObjects(e){let t;return this.traverseEntity(o=>{t===void 0&&o instanceof fi&&(t=o.uiCanvas.find(e))}),t}traverse2D(e){for(let t of this.children)t instanceof Cr&&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(),wn(i)&&dl(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),dl(o.parent)&&(o.parent.invalidateUpstreamBooleanData(),o.parent.invalidateDownstreamBooleanData().recomputeBoolean()),wn(o)&&(o.freeBooleanPointer(),i instanceof or&&i.invalidateDownstreamBooleanData().recomputeBoolean()),o instanceof ps&&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()),wn(o)&&(o.invalidateUpstreamBooleanData(),dl(o.parent)?o.parent.invalidateDownstreamBooleanData().recomputeBoolean():i instanceof or&&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 Cr&&(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{OS(a,t,o,{scene:this,shared:i}),a instanceof lt&&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 fi||l instanceof Cr)&&(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 Fo&&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){Re.is(e)&&(e.data.type==="Component"&&this.markNeedsRecomputeInstances(),e.traverseAncestors(t=>{Re.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=Ko(u.data,p=>{let d=p.events.data(l.id),h=u.goUp(s);if(h){let f=[...Il(h.identity),e].join("-"),m=this.entityIdentityToEntity[f];if(m){let y=m.uuid,g=Ze.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 Ho&&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=Ko(s.data,l=>{s.isInstanceRoot||(l.events.delete(i.id),a=!0)}).data}),a===!1)for(let s of Bc.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 Ho&&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),nd(a)}recomputeInstances(e,t){this.needsRecomputeInstances&&(this.needsRecomputeInstances=!1,this.traverseEntity(o=>{o instanceof Ho&&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)Re.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(Re.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(wn(s)||pl(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,o),bl(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;Re.is(a)&&(a.visible||s?.object.data.visible)&&((wn(a)||pl(a)&&this.enableHelpers&&a.objectHelper.visible)&&(e.intersectObject(a,!1,t),bl(a,e,t,!0)),o(a))}};return o(this),t}forEachEntity(e){for(let t of this.children)Re.is(t)&&e(t)}traverseConcreteEntity(e){for(let t of this.children)Re.is(t)&&t.isConcreteEntity&&t.traverseEntity(e)}traverseEntity(e){for(let t of this.children)Re.is(t)&&t.traverseEntity(e)}updateFont(e,t){this.traverseEntity(o=>{if(o instanceof lt&&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();dl(s)&&s.recomputeBoolean()})}})}traverseObject(e){for(let t of this.children)la.is(t)&&t.traverseObject(e)}traverseVisibleEntity(e){for(let t of this.children)Re.is(t)&&t.visible&&t.traverseVisibleEntity(e)}dispose(){this.clearScene()}createChildrenObjects(e,t,o){let i=0;for(let a of e)this.createObject(a.id,a.data,a.children,t,i,o),i+=1}registerObjectCreatedInLegacy(e){this.entityByUuid[e.uuid]=e}unregisterObject(e){delete this.entityByUuid[e.uuid];for(let t of e.children)this.unregisterObject(t)}createObject(e,t,o,i,a,s){let l={scene:this,shared:s},c=cd(e,t,l);return c&&(this.entityByUuid[e]=c,i.add(c),i.children.splice(a,0,i.children.pop()),o.length>0&&(c.isInstanceRoot?console.error("instance should not have children!"):this.createChildrenObjects(o,c,s)),c.updateState(t,l),c instanceof lt&&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 lt&&p.bones&&p.boneInverses){let d=p.bones.map(m=>this.find(m)),h=p.boneInverses.map(m=>new w_().fromArray(m)),f=new C_(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 P_;return o.setFromPoints(t),o.getCenter(zS),zS}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 Ot)if(Array.isArray(t.material))for(let o=0;o<t.material.length;o++)t.material[o]instanceof tr&&e(t.material[o]);else t.material instanceof tr&&e(t.material)})}updateViewPlaneSize(e,t,o=!1){this.traverseConcreteEntity(i=>{i instanceof Fo&&i.setViewplaneSize(e,t,o)})}initializeSplatViewer(){this.splatViewer=new Sl({scene:this}),this.reloadSplats()}reloadSplats(){this.splatViewer?.loadSplat()}};import{DRACOLoader as A_}from"three/examples/jsm/loaders/DRACOLoader.js";var Nn;function jS(){return Nn||(Nn=new A_,Nn.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),Nn.decoderPending}async function M_(n){if(Nn){let r={attributeIDs:Nn.defaultAttributeIDs,attributeTypes:Nn.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await Nn.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 FS(n,r){let[e,t]=zd(gc.deserialize(new Uint8Array(n)));return Vc(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 kS(n){for(let r of n){let e=await M_(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}}}import{Mesh as Epe}from"three";import{mergeBufferGeometries as Lpe}from"three/examples/jsm/utils/BufferGeometryUtils.js";function HS(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}import{Color as WS,ShaderLib as I_}from"three";function qS(n){let r=new Set;return n.traverse(e=>{if(e instanceof rr)if(ut(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(N_(e)){Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new WS,specularColor:new WS});let o=0;e.onBeforeCompile=(i,a)=>{t&&t(i,a),i.uniforms=Object.assign({},I_.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=xb(window.innerWidth,window.innerHeight),e.defines.IS_THREEJS_EXPORT=!0)}else o++,o<2&&(e.needsUpdate=!0)})}}else D_(e)||(e.onBeforeCompile=(o,i)=>{t&&t(o,i),e.transparent=!1})}),n}function N_(n){return n.getLayersOfType("transmission").length>0}function D_(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}import{mergeBufferGeometries as E_}from"three/examples/jsm/utils/BufferGeometryUtils.js";function XS(n){let r=[];return n.traverse(e=>{e instanceof rs&&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&&HS(l),l}).filter(s=>s!==void 0)];if(!e.parameters.hideBase&&t instanceof Ot&&a.unshift(t.geometry),a.length){let s=E_(a);t instanceof Ot&&(t.geometry=s)}e.removeFromParent(),t.setFromClonerState(null,{scene:n,shared:jb})}),n}function KS(n){return n.traverse(r=>{r.matrixAutoUpdate=!0}),n}function QS(n){Object.values(n.shared.materials).forEach(r=>{Mh(r)}),n.scene.objects.traverse((r,e)=>{"material"in e?Mh(e.material):"materials"in e&&e.materials.forEach(t=>{Mh(t)})})}function Mh(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 t1=xi(JS(),1);var e1="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",Ih=class extends B_{load(r,e,t,o=console.error){let i=new __(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),r.endsWith(".spline")?console.warn(e1+" The .spline files are only meant to be used by the Editor."):r.endsWith(".splinecode")||console.warn(e1),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 FS(r,QS),t=US(e);e.version&&(0,t1.default)(e.version,"1.9.29")>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(),Yb(e)&&q0(),iv(e)&&_b(),Uv(e)&&zv(),hd(e)&&Ah()].filter(Boolean)),t.length&&await kS(t);let o=!1,i=new ai(e.shared,{},o);Object.values(i.getMaterials()).forEach(l=>Object.assign(l,{isAsset:!0}));let a=new yd(e.scene,i);hd(e)&&a.initializeSplatViewer();let s=a.activeCamera;return s&&Object.assign(s,{makeDefault:!0}),a=XS(a),a=qS(a),a=$S(a),a=YS(a),a=KS(a),a}};export{Ih as default};
|
|
3659
|
+
}`,i={covariancesTexture:{type:"t",value:null},centersColorsTexture:{type:"t",value:null},meshIndexIntervals:{value:e},meshMatrixWorldsTexture:{type:"t",value:null},focal:{type:"v2",value:new In},viewport:{type:"v2",value:new In},basisViewport:{type:"v2",value:new In},debugColor:{type:"v3",value:new T_},covariancesTextureSize:{type:"v2",value:new In(1024,1024)},centersColorsTextureSize:{type:"v2",value:new In(1024,1024)},orthoZoom:{type:"f",value:-1}};return new V_({uniforms:i,vertexShader:t,fragmentShader:o,transparent:!0,alphaTest:1,blending:B_,depthTest:!0,depthWrite:!1,side:M_})}static buildGeomtery(e){let t=new C_;t.setIndex([0,1,2,0,2,3]);let o=new Float32Array(4*3),i=new O_(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 D_().copy(t),s=new Uint32Array(e),l=new E_(s,1,!1);return l.setUsage(I_),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 In(4096,1024);for(;i.x*i.y*2<o*6;)i.y*=2;let a=new In(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]=A_.toHalfFloat(this.covariances[f]);s=new hd(l,i.x,i.y,zS,N_)}else l=new Float32Array(i.x*i.y*2),l.set(this.covariances),s=new hd(l,i.x,i.y,zS,GS);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]=fd(this.centers[y]),c[g+2]=fd(this.centers[y+1]),c[g+3]=fd(this.centers[y+2])}let u=new hd(c,a.x,a.y,R_,G_);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 hd(d,p,1,L_,GS);h.needsUpdate=!0,this.material.uniforms.meshMatrixWorldsTexture.value=h,this.material.uniformsNeedUpdate=!0,this.splatDataTextures={covariances:{data:l,texture:s,size:i},centerColors:{data:c,texture:u,size:a},meshMatrixWorlds:{data:d,texture:h}}}updateIndexes(e){let t=this.geometry;t.attributes.splatIndex.set(e),t.attributes.splatIndex.needsUpdate=!0,t.instanceCount=e.length}updateUniforms(e,t,o,i){this.splatCount>0&&(md.set(e.x*this.devicePixelRatio,e.y*this.devicePixelRatio),this.material.uniforms.viewport.value.copy(md),this.material.uniforms.basisViewport.value.set(2/md.x,2/md.y),this.material.uniforms.focal.value.set(t,o),this.material.uniforms.orthoZoom.value=i,this.material.uniformsNeedUpdate=!0)}getSplatDataTextures(){return this.splatDataTextures}getSplatCount(){return this.splatCount}getCenters(){return this.centers}getColors(){return this.colors}getCovariances(){return this.covariances}dispose(){this.geometry.dispose(),this.material.dispose(),this.splatDataTextures&&(this.splatDataTextures.covariances.texture.dispose(),this.splatDataTextures.centerColors.texture.dispose(),this.splatDataTextures.meshMatrixWorlds.texture.dispose()),this.removeFromParent()}};var FS,Ih=new Promise(n=>{FS=n}),jS=!1;var gd;function Nh(){if(jS)return;if(gd)return gd;async function n(){let e=await import("./gaussian-splat-compression.js");FS(e),jS=!0}return gd=n(),gd}var HS;Ih.then(n=>HS=n);var Sl=class{constructor(r={}){Vn(this,"updateView",function(){let r=new US,e=[],t=new hs(0,0,-1),o=new hs(0,0,-1),i=new hs,a=new hs;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 US().makePerspective(-1,1,-1,1,.1,1e3)}updateSplatMeshUniforms(r,e){let t=new z_;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 hs().fromArray(r.position)),r.orientation&&(r.orientation=new kS().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 HS.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 hs,o=new kS,i=!1,a=1,s,l){this.splatMesh=Nn.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=RS(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 q_=new H_;q_.wireframe=!0;var WS=new F_,xd=class extends j_{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 pd;this.invisibleObjects=new On("jflkdsafjasdifjaslk",{...Dc.defaultData,visible:!1,name:"buildin invisible"});this.needsRecomputeInstances=!1;this.init(e,t),this.matrixAutoUpdate=!1,this.errorPage=new Cr("fdasfa",{...Co.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 Cr&&(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)=>Nl(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===on)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 Cr&&t.uiScene){let o=t.uiScene.find(e);if(o)return o}}findScene2DfromObject2D(e){for(let t of this.children)if(t instanceof Cr&&t.uiScene&&t.uiScene.find(e))return t.uiScene}find2DInUIObjects(e){let t;return this.traverseEntity(o=>{t===void 0&&o instanceof hi&&(t=o.uiCanvas.find(e))}),t}traverse2D(e){for(let t of this.children)t instanceof Cr&&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(),Pn(i)&&dl(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),dl(o.parent)&&(o.parent.invalidateUpstreamBooleanData(),o.parent.invalidateDownstreamBooleanData().recomputeBoolean()),Pn(o)&&(o.freeBooleanPointer(),i instanceof nr&&i.invalidateDownstreamBooleanData().recomputeBoolean()),o instanceof ps&&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()),Pn(o)&&(o.invalidateUpstreamBooleanData(),dl(o.parent)?o.parent.invalidateDownstreamBooleanData().recomputeBoolean():i instanceof nr&&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 Cr&&(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{NS(a,t,o,{scene:this,shared:i}),a instanceof lt&&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 hi||l instanceof Cr)&&(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 Fo&&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){Re.is(e)&&(e.data.type==="Component"&&this.markNeedsRecomputeInstances(),e.traverseAncestors(t=>{Re.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=Qo(u.data,p=>{let d=p.events.data(l.id),h=u.goUp(s);if(h){let f=[...Il(h.identity),e].join("-"),m=this.entityIdentityToEntity[f];if(m){let y=m.uuid,g=Ze.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 Ho&&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=Qo(s.data,l=>{s.isInstanceRoot||(l.events.delete(i.id),a=!0)}).data}),a===!1)for(let s of Rc.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 Ho&&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),ad(a)}recomputeInstances(e,t){this.needsRecomputeInstances&&(this.needsRecomputeInstances=!1,this.traverseEntity(o=>{o instanceof Ho&&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)Re.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(Re.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(Pn(s)||pl(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,o),bl(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;Re.is(a)&&(a.visible||s?.object.data.visible)&&((Pn(a)||pl(a)&&this.enableHelpers&&a.objectHelper.visible)&&(e.intersectObject(a,!1,t),bl(a,e,t,!0)),o(a))}};return o(this),t}forEachEntity(e){for(let t of this.children)Re.is(t)&&e(t)}traverseConcreteEntity(e){for(let t of this.children)Re.is(t)&&t.isConcreteEntity&&t.traverseEntity(e)}traverseEntity(e){for(let t of this.children)Re.is(t)&&t.traverseEntity(e)}updateFont(e,t){this.traverseEntity(o=>{if(o instanceof lt&&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();dl(s)&&s.recomputeBoolean()})}})}traverseObject(e){for(let t of this.children)la.is(t)&&t.traverseObject(e)}traverseVisibleEntity(e){for(let t of this.children)Re.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=dd(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 lt&&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 lt&&p.bones&&p.boneInverses){let d=p.bones.map(m=>this.find(m)),h=p.boneInverses.map(m=>new U_().fromArray(m)),f=new W_(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 k_;return o.setFromPoints(t),o.getCenter(WS),WS}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 Ot)if(Array.isArray(t.material))for(let o=0;o<t.material.length;o++)t.material[o]instanceof rr&&e(t.material[o]);else t.material instanceof rr&&e(t.material)})}updateViewPlaneSize(e,t,o=!1){this.traverseConcreteEntity(i=>{i instanceof Fo&&i.setViewplaneSize(e,t,o)})}initializeSplatViewer(){this.splatViewer=new Sl({scene:this}),this.reloadSplats()}reloadSplats(){this.splatViewer?.loadSplat()}};import{DRACOLoader as $_}from"three/examples/jsm/loaders/DRACOLoader.js";var En;function qS(){return En||(En=new $_,En.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),En.decoderPending}async function Y_(n){if(En){let r={attributeIDs:En.defaultAttributeIDs,attributeTypes:En.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await En.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 $S(n,r){let[e,t]=Ud(bc.deserialize(new Uint8Array(n)));return zc(e),r&&r(e),t.result().data}function YS(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 XS(n){for(let r of n){let e=await Y_(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}}}import{Mesh as ffe}from"three";import{mergeBufferGeometries as yfe}from"three/examples/jsm/utils/BufferGeometryUtils.js";function KS(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}import{Color as QS,ShaderLib as X_}from"three";function ZS(n){let r=new Set;return n.traverse(e=>{if(e instanceof or)if(dt(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(K_(e)){Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new QS,specularColor:new QS});let o=0;e.onBeforeCompile=(i,a)=>{t&&t(i,a),i.uniforms=Object.assign({},X_.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=Ob(window.innerWidth,window.innerHeight),e.defines.IS_THREEJS_EXPORT=!0)}else o++,o<2&&(e.needsUpdate=!0)})}}else Q_(e)||(e.onBeforeCompile=(o,i)=>{t&&t(o,i),e.transparent=!1})}),n}function K_(n){return n.getLayersOfType("transmission").length>0}function Q_(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 JS(n){return n.traverse(r=>{if(r.type==="Camera"){let e=r;e.type=e.cameraType}}),n}function e1(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}import{mergeBufferGeometries as Z_}from"three/examples/jsm/utils/BufferGeometryUtils.js";function t1(n){let r=[];return n.traverse(e=>{e instanceof rs&&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&&KS(l),l}).filter(s=>s!==void 0)];if(!e.parameters.hideBase&&t instanceof Ot&&a.unshift(t.geometry),a.length){let s=Z_(a);t instanceof Ot&&(t.geometry=s)}e.removeFromParent(),t.setFromClonerState(null,{scene:n,shared:qb})}),n}function r1(n){return n.traverse(r=>{r.matrixAutoUpdate=!0}),n}function o1(n){Object.values(n.shared.materials).forEach(r=>{Eh(r)}),n.scene.objects.traverse((r,e)=>{"material"in e?Eh(e.material):"materials"in e&&e.materials.forEach(t=>{Eh(t)})})}function Eh(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 s1=bi(i1(),1);var a1="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",Dh=class extends eB{load(r,e,t,o=console.error){let i=new J_(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),r.endsWith(".spline")?console.warn(a1+" The .spline files are only meant to be used by the Editor."):r.endsWith(".splinecode")||console.warn(a1),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 $S(r,o1),t=YS(e);e.version&&(0,s1.default)(e.version,"1.9.31")>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&&qS(),ev(e)&&Z0(),dv(e)&&zb(),Yv(e)&&Wv(),yd(e)&&Nh()].filter(Boolean)),t.length&&await XS(t);let o=!1,i=new si(e.shared,{},o);Object.values(i.getMaterials()).forEach(l=>Object.assign(l,{isAsset:!0}));let a=new xd(e.scene,i);yd(e)&&a.initializeSplatViewer();let s=a.activeCamera;return s&&Object.assign(s,{makeDefault:!0}),a=t1(a),a=ZS(a),a=JS(a),a=e1(a),a=r1(a),a}};export{Dh as default};
|